pax_global_header00006660000000000000000000000064117706716530014527gustar00rootroot0000000000000052 comment=b2f92c883f46d525898a9bf7d617aba5bb8b9b64 merkaartor-0.18.1/000077500000000000000000000000001177067165300137655ustar00rootroot00000000000000merkaartor-0.18.1/.gitignore000066400000000000000000000005071177067165300157570ustar00rootroot00000000000000# git-ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): *.[oa] *~ *.qm *.moc *.rc moc*.cpp qrc*.cpp ui*.h Makefile* Makefile*.* *.pro.user *.po *.orig *.rej merkaartor-0.18.1/.indent.pro000066400000000000000000000000111177067165300160360ustar00rootroot00000000000000-kr -nut merkaartor-0.18.1/3rdparty/000077500000000000000000000000001177067165300155355ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/000077500000000000000000000000001177067165300245125ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/INSTALL.TXT000066400000000000000000000223741177067165300262310ustar00rootroot00000000000000INSTALLATION INSTRUCTIONS These instructions refer to the package you are installing as some-package.tar.gz or some-package.zip. The .zip file is intended for use on Windows. The directory you choose for the installation will be referred to as your-install-dir. Note to Qt Visual Studio Integration users: In the instructions below, instead of building from command line with nmake, you can use the menu command 'Qt->Open Solution from .pro file' on the .pro files in the example and plugin directories, and then build from within Visual Studio. Unpacking and installation -------------------------- 1. Unpacking the archive (if you have not done so already). On Unix and Mac OS X (in a terminal window): cd your-install-dir gunzip some-package.tar.gz tar xvf some-package.tar This creates the subdirectory some-package containing the files. On Windows: Unpack the .zip archive by right-clicking it in explorer and choosing "Extract All...". If your version of Windows does not have zip support, you can use the infozip tools available from www.info-zip.org. If you are using the infozip tools (in a command prompt window): cd your-install-dir unzip some-package.zip 2. Configuring the package. The configure script is called "configure" on unix/mac and "configure.bat" on Windows. It should be run from a command line after cd'ing to the package directory. You can choose whether you want to use the component by including its source code directly into your project, or build the component as a dynamic shared library (DLL) that is loaded into the application at run-time. The latter may be preferable for technical or licensing (LGPL) reasons. If you want to build a DLL, run the configure script with the argument "-library". Also see the note about usage below. (Components that are Qt plugins, e.g. styles and image formats, are by default built as a plugin DLL.) The configure script will prompt you in some cases for further information. Answer these questions and carefully read the license text before accepting the license conditions. The package cannot be used if you do not accept the license conditions. 3. Building the component and examples (when required). If a DLL is to be built, or if you would like to build the examples, next give the commands qmake make [or nmake if your are using Microsoft Visual C++] The example program(s) can be found in the directory called "examples" or "example". Components that are Qt plugins, e.g. styles and image formats, are ready to be used as soon as they are built, so the rest of this installation instruction can be skipped. 4. Building the Qt Designer plugin (optional). Some of the widget components are provided with plugins for Qt Designer. To build and install the plugin, cd into the some-package/plugin directory and give the commands qmake make [or nmake if your are using Microsoft Visual C++] Restart Qt Designer to make it load the new widget plugin. Note: If you are using the built-in Qt Designer from the Qt Visual Studio Integration, you will need to manually copy the plugin DLL file, i.e. copy %QTDIR%\plugins\designer\some-component.dll to the Qt Visual Studio Integration plugin path, typically: C:\Program Files\Trolltech\Qt VS Integration\plugins Note: If you for some reason are using a Qt Designer that is built in debug mode, you will need to build the plugin in debug mode also. Edit the file plugin.pro in the plugin directory, changing 'release' to 'debug' in the CONFIG line, before running qmake. Solutions components are intended to be used directly from the package directory during development, so there is no 'make install' procedure. Using a component in your project --------------------------------- To use this component in your project, add the following line to the project's .pro file (or do the equivalent in your IDE): include(your-install-dir/some-package/src/some-package.pri) This adds the package's sources and headers to the SOURCES and HEADERS project variables respectively (or, if the component has been configured as a DLL, it adds that library to the LIBS variable), and updates INCLUDEPATH to contain the package's src directory. Additionally, the .pri file may include some dependencies needed by the package. To include a header file from the package in your sources, you can now simply use: #include or alternatively, in pre-Qt 4 style: #include Refer to the documentation to see the classes and headers this components provides. Install documentation (optional) -------------------------------- The HTML documentation for the package's classes is located in the your-install-dir/some-package/doc/html/index.html. You can open this file and read the documentation with any web browser. To install the documentation into Qt Assistant (for Qt version 4.4 and later): 1. In Assistant, open the Edit->Preferences dialog and choose the Documentation tab. Click the Add... button and select the file your-install-dir/some-package/doc/html/some-package.qch For Qt versions prior to 4.4, do instead the following: 1. The directory your-install-dir/some-package/doc/html contains a file called some-package.dcf. Execute the following commands in a shell, command prompt or terminal window: cd your-install-dir/some-package/doc/html/ assistant -addContentFile some-package.dcf The next time you start Qt Assistant, you can access the package's documentation. Removing the documentation from assistant ----------------------------------------- If you have installed the documentation into Qt Assistant, and want to uninstall it, do as follows, for Qt version 4.4 and later: 1. In Assistant, open the Edit->Preferences dialog and choose the Documentation tab. In the list of Registered Documentation, select the item com.nokia.qtsolutions.some-package_version, and click the Remove button. For Qt versions prior to 4.4, do instead the following: 1. The directory your-install-dir/some-package/doc/html contains a file called some-package.dcf. Execute the following commands in a shell, command prompt or terminal window: cd your-install-dir/some-package/doc/html/ assistant -removeContentFile some-package.dcf Using the component as a DLL ---------------------------- 1. Normal components The shared library (DLL) is built and placed in the some-package/lib directory. It is intended to be used directly from there during development. When appropriate, both debug and release versions are built, since the run-time linker will in some cases refuse to load a debug-built DLL into a release-built application or vice versa. The following steps are taken by default to help the dynamic linker to locate the DLL at run-time (during development): Unix: The some-package.pri file will add linker instructions to add the some-package/lib directory to the rpath of the executable. (When distributing, or if your system does not support rpath, you can copy the shared library to another place that is searched by the dynamic linker, e.g. the "lib" directory of your Qt installation.) Mac: The full path to the library is hardcoded into the library itself, from where it is copied into the executable at link time, and ready by the dynamic linker at run-time. (When distributing, you will want to edit these hardcoded paths in the same way as for the Qt DLLs. Refer to the document "Deploying an Application on Mac OS X" in the Qt Reference Documentation.) Windows: the .dll file(s) are copied into the "bin" directory of your Qt installation. The Qt installation will already have set up that directory to be searched by the dynamic linker. 2. Plugins For Qt Solutions plugins (e.g. image formats), both debug and release versions of the plugin are built by default when appropriate, since in some cases the release Qt library will not load a debug plugin, and vice versa. The plugins are automatically copied into the plugins directory of your Qt installation when built, so no further setup is required. Plugins may also be built statically, i.e. as a library that will be linked into your application executable, and so will not need to be redistributed as a separate plugin DLL to end users. Static building is required if Qt itself is built statically. To do it, just add "static" to the CONFIG variable in the plugin/plugin.pro file before building. Refer to the "Static Plugins" section in the chapter "How to Create Qt Plugins" for explanation of how to use a static plugin in your application. The source code of the example program(s) will also typically contain the relevant instructions as comments. Uninstalling ------------ The following command will remove any fils that have been automatically placed outside the package directory itself during installation and building make distclean [or nmake if your are using Microsoft Visual C++] If Qt Assistant documentation or Qt Designer plugins have been installed, they can be uninstalled manually, ref. above. Enjoy! :) - The Qt Solutions Team. merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/LGPL_EXCEPTION.txt000066400000000000000000000021661177067165300274340ustar00rootroot00000000000000Nokia Qt LGPL Exception version 1.1 As an additional permission to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that: (i) the header files of the Library have not been modified; and (ii) the incorporated material is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates; and (iii) you comply with the terms of Section 6 of the GNU Lesser General Public License version 2.1. Moreover, you may apply this exception to a modified version of the Library, provided that such modification does not involve copying material from the Library into the modified Library?s header files unless such material is limited to (i) numerical parameters; (ii) data structure layouts; (iii) accessors; and (iv) small macros, templates and inline functions of five lines or less in length. Furthermore, you are not required to apply this additional permission to a modified version of the Library. merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/LICENSE.GPL3000066400000000000000000001045131177067165300262270ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/LICENSE.LGPL000066400000000000000000000635041177067165300262640ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/README.TXT000066400000000000000000000002101177067165300260410ustar00rootroot00000000000000Single Application v2.6 The QtSingleApplication component provides support for applications that can be only started once per user. merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/buildlib/000077500000000000000000000000001177067165300263005ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/buildlib/buildlib.pro000066400000000000000000000007211177067165300306100ustar00rootroot00000000000000TEMPLATE=lib CONFIG += qt dll qtsingleapplication-buildlib mac:CONFIG += absolute_library_soname win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all include(../src/qtsingleapplication.pri) TARGET = $$QTSINGLEAPPLICATION_LIBNAME DESTDIR = $$QTSINGLEAPPLICATION_LIBDIR win32 { DLLDESTDIR = $$[QT_INSTALL_BINS] QMAKE_DISTCLEAN += $$[QT_INSTALL_BINS]\\$${QTSINGLEAPPLICATION_LIBNAME}.dll } target.path = $$DESTDIR INSTALLS += target merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/common.pri000066400000000000000000000005401177067165300265150ustar00rootroot00000000000000infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtsingleapplication-uselib TEMPLATE += fakelib QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-2.6) TEMPLATE -= fakelib QTSINGLEAPPLICATION_LIBDIR = $$PWD/lib unix:qtsingleapplication-uselib:!qtsingleapplication-buildlib:QMAKE_RPATHDIR += $$QTSINGLEAPPLICATION_LIBDIR merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/config.pri000066400000000000000000000000001177067165300264610ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/configure000066400000000000000000000063221177067165300264210ustar00rootroot00000000000000#!/bin/sh if [ "x$1" != "x" -a "x$1" != "x-library" ]; then echo "Usage: $0 [-library]" echo echo "-library: Build the component as a dynamic library (DLL). Default is to" echo " include the component source code directly in the application." echo " A DLL may be preferable for technical or licensing (LGPL) reasons." echo exit 0 fi # only ask to accept the license text once if [ ! -f .licenseAccepted ]; then # determine if opensource or commercial package if [ -f LICENSE.LGPL ]; then # opensource edition while true; do echo echo "You are licensed to use this software under the terms of" echo "the GNU General Public License (GPL) version 3, or" echo "the GNU Lesser General Public License (LGPL) version 2.1" echo "with certain additional extra rights as specified in the" echo "Nokia Qt LGPL Exception version 1.1." echo echo "Type 'G' to view the GNU General Public License (GPL) version 3." echo "Type 'L' to view the GNU Lesser General Public License (LGPL) version 2.1." echo "Type 'E' to view the Nokia Qt LGPL Exception version 1.1." echo "Type 'yes' to accept this license offer." echo "Type 'no' to decline this license offer." echo echo "Do you accept the terms of this license? " read answer echo if [ "x$answer" = "xno" ]; then echo "You are not licensed to use this software." echo exit 1 elif [ "x$answer" = "xyes" ]; then echo license accepted > .licenseAccepted break elif [ "x$answer" = "xe" -o "x$answer" = "xE" ]; then more LGPL_EXCEPTION.txt elif [ "x$answer" = "xl" -o "x$answer" = "xL" ]; then more LICENSE.LGPL elif [ "x$answer" = "xg" -o "x$answer" = "xG" ]; then more LICENSE.GPL3 fi done else while true; do echo echo "Please choose your region." echo echo "Type 1 for North or South America." echo "Type 2 for anywhere outside North and South America." echo echo "Select: " read region if [ "x$region" = "x1" ]; then licenseFile=LICENSE.US break; elif [ "x$region" = "x2" ]; then licenseFile=LICENSE.NO break; fi done while true; do echo echo "License Agreement" echo echo "Type '?' to view the Qt Solutions Commercial License." echo "Type 'yes' to accept this license offer." echo "Type 'no' to decline this license offer." echo echo "Do you accept the terms of this license? " read answer echo if [ "x$answer" = "xno" ]; then echo "You are not licensed to use this software." echo exit 1 elif [ "x$answer" = "xyes" ]; then echo license accepted > .licenseAccepted cp "$licenseFile" LICENSE rm LICENSE.US rm LICENSE.NO break elif [ "x$answer" = "x?" ]; then more "$licenseFile" fi done fi fi rm -f config.pri if [ "x$1" = "x-library" ]; then echo "Configuring to build this component as a dynamic library." echo "SOLUTIONS_LIBRARY = yes" > config.pri fi echo echo "This component is now configured." echo echo "To build the component library (if requested) and example(s)," echo "run qmake and your make command." echo echo "To remove or reconfigure, run make distclean." echo merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/000077500000000000000000000000001177067165300252575ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/000077500000000000000000000000001177067165300262235ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/classic.css000066400000000000000000000026501177067165300303610ustar00rootroot00000000000000h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; } a:link { color: #004faf; text-decoration: none } a:visited { color: #672967; text-decoration: none } a.obsolete { color: #661100; text-decoration: none } a.compat { color: #661100; text-decoration: none } a.obsolete:visited { color: #995500; text-decoration: none } a.compat:visited { color: #995500; text-decoration: none } td.postheader { font-family: sans-serif } tr.address { font-family: sans-serif } body { background: #ffffff; color: black } table tr.odd { background: #f0f0f0; color: black; } table tr.even { background: #e4e4e4; color: black; } table.annotated th { padding: 3px; text-align: left } table.annotated td { padding: 3px; } table tr pre { padding-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; border: none; background: none } tr.qt-style { background: #96E066; color: black } body pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black } table tr.qt-code pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black } span.preprocessor, span.preprocessor a { color: darkblue; } span.comment { color: darkred; font-style: italic } span.string,span.char { color: darkgreen; } .title { text-align: center } .subtitle { font-size: 0.8em } .small-subtitle { font-size: 0.65em } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/images/000077500000000000000000000000001177067165300274705ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/images/qt-logo.png000066400000000000000000000077531177067165300315740ustar00rootroot00000000000000PNG  IHDR9C:uIDATxb?bhJnJnJnJnJnJnԡ Є`r'Q( !!Nb_p??F&F312G.yG&ޏ?}eWSSgb( ~™t齸g0sVv`fcdY8E$xdUUex$xd9DDr=#gdd|Uףw9D- 2b8Ͽebddceᔐ╗SWScaB#cfd]-I\ _20110`xzw/).#'˯"ǯ*˫,+')@lY@}fۯͼ 2@d$1H')&#'ç,ϯ*˧,#/%́XgfdOX8Y9s2GC3g@ fFff.3O|v ,l%?fR_|bb`y엉3+ԇ,̌,4 "ͭ32>{E4އ ˯NԦ+Qefdϛ?6:&Ǜ?|"=\n$FFfF /0"`ddf cfbb`dx՛o yAP ,,eebWaá,QܬLL>5Lll10 m00wTVxOÚ bGB8GtUմXplII ׶R/@2 Y{ ]d9#ule+}N6XfJ"խJ13002³ @K"ŭzo?1000@{ lϿ`?ï2"ecgd H.fFfɆ}Ͽߌ"٭윌 y02000Ac<\po/."?;#ߛ!hgddd\<|\300<|?j"-U L9D8E i[ZP?z5fF6? o"b')~?3311g/ ֯cz߿>pvfL~g'""٭Qd'i `Ϳ'?HۅǞy?200 %)h1.7?."ͭ 32yVfFfGyO/:?LL [,?/?^}|:`luX-tN X"_CkǶ>w:7WlSofFcOv{OD7톚)*$@d"7$1CRgɉi[!.f&v_#ɧ{='JXXc`agպ]R\̅?ӧ_ᄏvѦ_2"g|fە(m )\!&&&F{ ba~>qci.O?l-"s܅Ǐ<Ϟn%hm)tN6P߿0H~̌,|ןhmF>1:19_/رcc7k䱞]ۯ咒SaB[?|}kf~?ɍkF/>9*qpQ( @##ïe1| QXn_ #ơp7B]X?F[a'K+ q/̌,,L L 7tDʡz /#300VnC")"/?110qp￿l_GVWNOU_UIPSCؐ?\e``=_R(2r-d?ÿ_?+78$$ +:xBVFn^?cbdd@yĂf```aba㔆L)J sI2Ҥ!#3 > ^y^~o (?+33d:.cfL(H*sJ`Mg222ڥž15,l l"< Single Application
  Home

Single Application

Description

The QtSingleApplication component provides support for applications that can be only started once per user.

For some applications it is useful or even critical that they are started only once by any user. Future attempts to start the application should activate any already running instance, and possibly perform requested actions, e.g. loading a file, in that instance.

The QtSingleApplication class provides an interface to detect a running instance, and to send command strings to that instance. For console (non-GUI) applications, the QtSingleCoreApplication variant is provided, which avoids dependency on QtGui.

Classes

Examples

Tested platforms

  • Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005
  • Qt 4.4, 4.5 / Linux / gcc
  • Qt 4.4, 4.5 / MacOS X 10.5 / gcc


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtlockedfile-members.html000066400000000000000000000440111177067165300332070ustar00rootroot00000000000000 List of All Members for QtLockedFile
  Home

List of All Members for QtLockedFile

This is the complete list of members for QtLockedFile, including inherited members.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtlockedfile.html000066400000000000000000000243041177067165300315620ustar00rootroot00000000000000 QtLockedFile Class Reference
  Home

QtLockedFile Class Reference

The QtLockedFile class extends QFile with advisory locking functions. More...

 #include <QtLockedFile>

Inherits QFile.

Public Types

  • enum LockMode { ReadLock, WriteLock, NoLock }

Public Functions

  • 24 public functions inherited from QFile
  • 33 public functions inherited from QIODevice
  • 29 public functions inherited from QObject

Additional Inherited Members

  • 1 property inherited from QObject
  • 1 public slot inherited from QObject
  • 4 signals inherited from QIODevice
  • 1 signal inherited from QObject
  • 1 public type inherited from QObject
  • 14 static public members inherited from QFile
  • 4 static public members inherited from QObject
  • 5 protected functions inherited from QIODevice
  • 7 protected functions inherited from QObject
  • 2 protected variables inherited from QObject

Detailed Description

The QtLockedFile class extends QFile with advisory locking functions.

A file may be locked in read or write mode. Multiple instances of QtLockedFile, created in multiple processes running on the same machine, may have a file locked in read mode. Exactly one instance may have it locked in write mode. A read and a write lock cannot exist simultaneously on the same file.

The file locks are advisory. This means that nothing prevents another process from manipulating a locked file using QFile or file system functions offered by the OS. Serialization is only guaranteed if all processes that access the file use QLockedFile. Also, while holding a lock on a file, a process must not open the same file again (through any API), or locks can be unexpectedly lost.

The lock provided by an instance of QtLockedFile is released whenever the program terminates. This is true even when the program crashes and no destructors are called.


Member Type Documentation

enum QtLockedFile::LockMode

This enum describes the available lock modes.

ConstantValueDescription
QtLockedFile::ReadLock1A read lock.
QtLockedFile::WriteLock2A write lock.
QtLockedFile::NoLock0Neither a read lock nor a write lock.


Member Function Documentation

QtLockedFile::QtLockedFile ()

Constructs an unlocked QtLockedFile object. This constructor behaves in the same way as QFile::QFile().

See also QFile::QFile().

QtLockedFile::QtLockedFile ( const QString & name )

Constructs an unlocked QtLockedFile object with file name. This constructor behaves in the same way as QFile::QFile(const QString&).

See also QFile::QFile().

QtLockedFile::~QtLockedFile ()

Destroys the QtLockedFile object. If any locks were held, they are released.

bool QtLockedFile::isLocked () const

Returns true if this object has a in read or write lock; otherwise returns false.

See also lockMode().

bool QtLockedFile::lock ( LockMode mode, bool block = true )

Obtains a lock of type mode. The file must be opened before it can be locked.

If block is true, this function will block until the lock is aquired. If block is false, this function returns false immediately if the lock cannot be aquired.

If this object already has a lock of type mode, this function returns true immediately. If this object has a lock of a different type than mode, the lock is first released and then a new lock is obtained.

This function returns true if, after it executes, the file is locked by this object, and false otherwise.

See also unlock(), isLocked(), and lockMode().

LockMode QtLockedFile::lockMode () const

Returns the type of lock currently held by this object, or QtLockedFile::NoLock.

See also isLocked().

bool QtLockedFile::open ( OpenMode mode )

Opens the file in OpenMode mode.

This is identical to QFile::open(), with the one exception that the Truncate mode flag is disallowed. Truncation would conflict with the advisory file locking, since the file would be modified before the write lock is obtained. If truncation is required, use resize(0) after obtaining the write lock.

Returns true if successful; otherwise false.

See also QFile::open() and QFile::resize().

bool QtLockedFile::unlock ()

Releases a lock.

If the object has no lock, this function returns immediately.

This function returns true if, after it executes, the file is not locked by this object, and false otherwise.

See also lock(), isLocked(), and lockMode().


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
qtsingleapplication-example-loader.html000066400000000000000000000174001177067165300360030ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html Loading Documents
  Home

Loading Documents

The application in this example loads or prints the documents passed as commandline parameters to further instances of this application.

 /****************************************************************************
 **
 ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
 ** This file is part of a Qt Solutions component.
 **
 ** Commercial Usage
 ** Licensees holding valid Qt Commercial licenses may use this file in
 ** accordance with the Qt Solutions Commercial License Agreement provided
 ** with the Software or, alternatively, in accordance with the terms
 ** contained in a written agreement between you and Nokia.
 **
 ** GNU Lesser General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU Lesser
 ** General Public License version 2.1 as published by the Free Software
 ** Foundation and appearing in the file LICENSE.LGPL included in the
 ** packaging of this file.  Please review the following information to
 ** ensure the GNU Lesser General Public License version 2.1 requirements
 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
 ** In addition, as a special exception, Nokia gives you certain
 ** additional rights. These rights are described in the Nokia Qt LGPL
 ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
 ** package.
 **
 ** GNU General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU
 ** General Public License version 3.0 as published by the Free Software
 ** Foundation and appearing in the file LICENSE.GPL included in the
 ** packaging of this file.  Please review the following information to
 ** ensure the GNU General Public License version 3.0 requirements will be
 ** met: http://www.gnu.org/copyleft/gpl.html.
 **
 ** Please note Third Party Software included with Qt Solutions may impose
 ** additional restrictions and it is the user's responsibility to ensure
 ** that they have met the licensing requirements of the GPL, LGPL, or Qt
 ** Solutions Commercial license and the relevant license of the Third
 ** Party Software they are using.
 **
 ** If you are unsure which license is appropriate for your use, please
 ** contact Nokia at qt-info@nokia.com.
 **
 ****************************************************************************/

 #include <qtsingleapplication.h>
 #include <QtCore/QFile>
 #include <QtGui/QMainWindow>
 #include <QtGui/QPrinter>
 #include <QtGui/QPainter>
 #include <QtGui/QTextEdit>
 #include <QtGui/QMdiArea>
 #include <QtCore/QTextStream>

 class MainWindow : public QMainWindow
 {
     Q_OBJECT
 public:
     MainWindow();

 public slots:
     void handleMessage(const QString& message);

 signals:
     void needToShow();

 private:
     QMdiArea *workspace;
 };

The user interface in this application is a QMainWindow subclass with a QMdiArea as the central widget. It implements a slot handleMessage() that will be connected to the messageReceived() signal of the QtSingleApplication class.

 MainWindow::MainWindow()
 {
     workspace = new QMdiArea(this);

     setCentralWidget(workspace);
 }

The MainWindow constructor creates a minimal user interface.

 void MainWindow::handleMessage(const QString& message)
 {
     enum Action {
         Nothing,
         Open,
         Print
     } action;

     action = Nothing;
     QString filename = message;
     if (message.toLower().startsWith("/print ")) {
         filename = filename.mid(7);
         action = Print;
     } else if (!message.isEmpty()) {
         action = Open;
     }
     if (action == Nothing) {
         emit needToShow();
         return;
     }

     QFile file(filename);
     QString contents;
     if (file.open(QIODevice::ReadOnly))
         contents = file.readAll();
     else
         contents = "[[Error: Could not load file " + filename + "]]";

     QTextEdit *view = new QTextEdit;
     view->setPlainText(contents);

     switch(action) {

The handleMessage() slot interprets the message passed in as a filename that can be prepended with /print to indicate that the file should just be printed rather than loaded.

     case Print:
         {
             QPrinter printer;
             view->print(&printer);
             delete view;
         }
         break;

     case Open:
         {
             workspace->addSubWindow(view);
             view->setWindowTitle(message);
             view->show();
             emit needToShow();
         }
         break;
     default:
         break;
     };
 }

Loading the file will also activate the window.

 #include "main.moc"

 int main(int argc, char **argv)
 {
     QtSingleApplication instance("File loader QtSingleApplication example", argc, argv);
     QString message;
     for (int a = 1; a < argc; ++a) {
         message += argv[a];
         if (a < argc-1)
             message += " ";
     }

     if (instance.sendMessage(message))
         return 0;

The main entry point function creates a QtSingleApplication object, and creates a message to send to a running instance of the application. If the message was sent successfully the process exits immediately.

     MainWindow mw;
     mw.handleMessage(message);
     mw.show();

     QObject::connect(&instance, SIGNAL(messageReceived(const QString&)),
                      &mw, SLOT(handleMessage(const QString&)));

     instance.setActivationWindow(&mw, false);
     QObject::connect(&mw, SIGNAL(needToShow()), &instance, SLOT(activateWindow()));

     return instance.exec();
 }

If the message could not be sent the application starts up. Note that false is passed to the call to setActivationWindow() to prevent automatic activation for every message received, e.g. when the application should just print a file. Instead, the message handling function determines whether activation is requested, and signals that by emitting the needToShow() signal. This is then simply connected directly to QtSingleApplication's activateWindow() slot.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
qtsingleapplication-example-trivial.html000066400000000000000000000131351177067165300362100ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html A Trivial Example
  Home

A Trivial Example

The application in this example has a log-view that displays messages sent by further instances of the same application.

The example demonstrates the use of the QtSingleApplication class to detect and communicate with a running instance of the application using the sendMessage() API. The messageReceived() signal is used to display received messages in a QTextEdit log.

 /****************************************************************************
 **
 ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
 ** This file is part of a Qt Solutions component.
 **
 ** Commercial Usage
 ** Licensees holding valid Qt Commercial licenses may use this file in
 ** accordance with the Qt Solutions Commercial License Agreement provided
 ** with the Software or, alternatively, in accordance with the terms
 ** contained in a written agreement between you and Nokia.
 **
 ** GNU Lesser General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU Lesser
 ** General Public License version 2.1 as published by the Free Software
 ** Foundation and appearing in the file LICENSE.LGPL included in the
 ** packaging of this file.  Please review the following information to
 ** ensure the GNU Lesser General Public License version 2.1 requirements
 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
 ** In addition, as a special exception, Nokia gives you certain
 ** additional rights. These rights are described in the Nokia Qt LGPL
 ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
 ** package.
 **
 ** GNU General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU
 ** General Public License version 3.0 as published by the Free Software
 ** Foundation and appearing in the file LICENSE.GPL included in the
 ** packaging of this file.  Please review the following information to
 ** ensure the GNU General Public License version 3.0 requirements will be
 ** met: http://www.gnu.org/copyleft/gpl.html.
 **
 ** Please note Third Party Software included with Qt Solutions may impose
 ** additional restrictions and it is the user's responsibility to ensure
 ** that they have met the licensing requirements of the GPL, LGPL, or Qt
 ** Solutions Commercial license and the relevant license of the Third
 ** Party Software they are using.
 **
 ** If you are unsure which license is appropriate for your use, please
 ** contact Nokia at qt-info@nokia.com.
 **
 ****************************************************************************/

 #include <qtsingleapplication.h>
 #include <QtGui/QTextEdit>

 class TextEdit : public QTextEdit
 {
     Q_OBJECT
 public:
     TextEdit(QWidget *parent = 0)
         : QTextEdit(parent)
     {}
 public slots:
     void append(const QString &str)
     {
         QTextEdit::append(str);
     }
 };

 #include "main.moc"

 int main(int argc, char **argv)
 {
     QtSingleApplication instance(argc, argv);

The example has only the main entry point function. A QtSingleApplication object is created immediately.

     if (instance.sendMessage("Wake up!"))
         return 0;

If another instance of this application is already running, sendMessage() will succeed, and this instance just exits immediately.

     TextEdit logview;
     logview.setReadOnly(true);
     logview.show();

Otherwise the instance continues as normal and creates the user interface.

     instance.setActivationWindow(&logview);

     QObject::connect(&instance, SIGNAL(messageReceived(const QString&)),
                      &logview, SLOT(append(const QString&)));

     return instance.exec();

The logview object is also set as the application's activation window. Every time a message is received, the window will be raised and activated automatically.

The messageReceived() signal is also connected to the QTextEdit's append() slot. Every message received from further instances of this application will be displayed in the log.

Finally the event loop is entered.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
qtsingleapplication-members.html000066400000000000000000000677431177067165300345550ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html List of All Members for QtSingleApplication
  Home

List of All Members for QtSingleApplication

This is the complete list of members for QtSingleApplication, including inherited members.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
qtsingleapplication-obsolete.html000066400000000000000000000035251177067165300347230ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html Obsolete Members for QtSingleApplication
  Home

Obsolete Members for QtSingleApplication

The following class members are obsolete. They are provided to keep old source code working. We strongly advise against using them in new code.

Public Functions

  • void initialize ( bool dummy = true )   (obsolete)

Member Function Documentation

void QtSingleApplication::initialize ( bool dummy = true )


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtsingleapplication.dcf000066400000000000000000000066701177067165300327640ustar00rootroot00000000000000
QtLockedFile LockMode QtLockedFile::WriteLock QtLockedFile::NoLock QtLockedFile::ReadLock isLocked lock lockMode open unlock
QtSingleApplication activateWindow activationWindow id isRunning messageReceived sendMessage setActivationWindow
QtSingleCoreApplication id isRunning messageReceived sendMessage
A non-GUI example
A Trivial Example
Loading Documents
Single Application
merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtsingleapplication.html000066400000000000000000000462541177067165300331760ustar00rootroot00000000000000 QtSingleApplication Class Reference
  Home

QtSingleApplication Class Reference

The QtSingleApplication class provides an API to detect and communicate with running instances of an application. More...

 #include <QtSingleApplication>

Inherits QApplication.

Public Functions

Public Slots

Signals

Additional Inherited Members


Detailed Description

The QtSingleApplication class provides an API to detect and communicate with running instances of an application.

This class allows you to create applications where only one instance should be running at a time. I.e., if the user tries to launch another instance, the already running instance will be activated instead. Another usecase is a client-server system, where the first started instance will assume the role of server, and the later instances will act as clients of that server.

By default, the full path of the executable file is used to determine whether two processes are instances of the same application. You can also provide an explicit identifier string that will be compared instead.

The application should create the QtSingleApplication object early in the startup phase, and call isRunning() or sendMessage() to find out if another instance of this application is already running. Startup parameters (e.g. the name of the file the user wanted this new instance to open) can be passed to the running instance in the sendMessage() function.

If isRunning() or sendMessage() returns false, it means that no other instance is running, and this instance has assumed the role as the running instance. The application should continue with the initialization of the application user interface before entering the event loop with exec(), as normal. The messageReceived() signal will be emitted when the application receives messages from another instance of the same application.

If isRunning() or sendMessage() returns true, another instance is already running, and the application should terminate or enter client mode.

If a message is received it might be helpful to the user to raise the application so that it becomes visible. To facilitate this, QtSingleApplication provides the setActivationWindow() function and the activateWindow() slot.

Here's an example that shows how to convert an existing application to use QtSingleApplication. It is very simple and does not make use of all QtSingleApplication's functionality (see the examples for that).

 // Original
 int main(int argc, char **argv)
 {
     QApplication app(argc, argv);

     MyMainWidget mmw;

     mmw.show();
     return app.exec();
 }

 // Single instance
 int main(int argc, char **argv)
 {
     QtSingleApplication app(argc, argv);

     if (app.isRunning())
         return 0;

     MyMainWidget mmw;

     app.setActivationWindow(&mmw);

     mmw.show();
     return app.exec();
 }

Once this QtSingleApplication instance is destroyed(for example, when the user quits), when the user next attempts to run the application this instance will not, of course, be encountered. The next instance to call isRunning() or sendMessage() will assume the role as the new running instance.

For console (non-GUI) applications, QtSingleCoreApplication may be used instead of this class, to avoid the dependency on the QtGui library.

See also QtSingleCoreApplication.


Member Function Documentation

QtSingleApplication::QtSingleApplication ( int & argc, char ** argv, bool GUIenabled = true )

Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). argc, argv, and GUIenabled are passed on to the QAppliation constructor.

If you are creating a console application (i.e. setting GUIenabled to false), you may consider using QtSingleCoreApplication instead.

QtSingleApplication::QtSingleApplication ( const QString & appId, int & argc, char ** argv )

Creates a QtSingleApplication object with the application identifier appId. argc and argv are passed on to the QAppliation constructor.

QtSingleApplication::QtSingleApplication ( int & argc, char ** argv, Type type )

Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). argc, argv, and type are passed on to the QAppliation constructor.

QtSingleApplication::QtSingleApplication ( Display * dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )

Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). dpy, visual, and cmap are passed on to the QApplication constructor.

QtSingleApplication::QtSingleApplication ( Display * dpy, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )

Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). dpy, argc, argv, visual, and cmap are passed on to the QApplication constructor.

QtSingleApplication::QtSingleApplication ( Display * dpy, const QString & appId, int argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )

Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be appId. dpy, argc, argv, visual, and cmap are passed on to the QApplication constructor.

void QtSingleApplication::activateWindow ()   [slot]

De-minimizes, raises, and activates this application's activation window. This function does nothing if no activation window has been set.

This is a convenience function to show the user that this application instance has been activated when he has tried to start another instance.

This function should typically be called in response to the messageReceived() signal. By default, that will happen automatically, if an activation window has been set.

See also setActivationWindow(), messageReceived(), and initialize().

QWidget * QtSingleApplication::activationWindow () const

Returns the applications activation window if one has been set by calling setActivationWindow(), otherwise returns 0.

See also setActivationWindow().

QString QtSingleApplication::id () const

Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application.

bool QtSingleApplication::isRunning ()

Returns true if another instance of this application is running; otherwise false.

This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session).

See also sendMessage().

void QtSingleApplication::messageReceived ( const QString & message )   [signal]

This signal is emitted when the current instance receives a message from another instance of this application.

See also sendMessage(), setActivationWindow(), and activateWindow().

bool QtSingleApplication::sendMessage ( const QString & message, int timeout = 5000 )   [slot]

Tries to send the text message to the currently running instance. The QtSingleApplication object in the running instance will emit the messageReceived() signal when it receives the message.

This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within timeout milliseconds, this function return false.

See also isRunning() and messageReceived().

void QtSingleApplication::setActivationWindow ( QWidget * aw, bool activateOnMessage = true )

Sets the activation window of this application to aw. The activation window is the widget that will be activated by activateWindow(). This is typically the application's main window.

If activateOnMessage is true (the default), the window will be activated automatically every time a message is received, just prior to the messageReceived() signal being emitted.

See also activationWindow(), activateWindow(), and messageReceived().


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtsingleapplication.index000066400000000000000000000406331177067165300333340ustar00rootroot00000000000000 merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtsingleapplication.qch000066400000000000000000001460001177067165300327730ustar00rootroot00000000000000SQLite format 3@ )3  ^Acom.nokia.qtsolutions.qtsingleapplication_2.6 )Yqtsingleapplication1solutionsqt D Qt Solutions: Single Application /.-, qb5H!EE tableNamespaceTableNamespaceTableCREATE TABLE NamespaceTable (Id INTEGER PRIMARY KEY,Name TEXT )n!]]%tableFilterAttributeTableFilterAttributeTableCREATE TABLE FilterAttributeTable (Id INTEGER PRIMARY KEY, Name TEXT )P!IItableFilterNameTableFilterNameTableCREATE TABLE FilterNameTable (Id INTEGER PRIMARY KEY, Name TEXT )H!99!tableFilterTableFilterTableCREATE TABLE FilterTable (NameId INTEGER, FilterAttributeId INTEGER ) ((c$8!55 tableIndexTableIndexTableCREATE TABLE IndexTable (Id INTEGER PRIMARY KEY, Name TEXT, Identifier TEXT, NamespaceId INTEGER, FileId INTEGER, Anchor TEXT )>!EEutableIndexItemTableIndexItemTable CREATE TABLE IndexItemTable (Id INTEGER, IndexId INTEGER )h!MM9tableIndexFilterTableIndexFilterTable CREATE TABLE IndexFilterTable (FilterAttributeId INTEGER, IndexId INTEGER )n!AA]tableContentsTableContentsTable CREATE TABLE ContentsTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Data BLOB )  W{tmf_XQJC<5.'  xqjc\UNG@92+$WVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(' & % $ # " !                F index.html\Qt Solutions: Single Application DocumentationPqtsingleapplication-example-trivial.html"A Trivial ExampleXqtsinglecoreapplication-example-console.html"A non-GUI exampleNqtsingleapplication-example-loader.html"Loading Documentsindex.html$Single Application  TTWV !YYQtableContentsFilterTableContentsFilterTable CREATE TABLE ContentsFilterTable (FilterAttributeId INTEGER, ContentsId INTEGER )| !aa9tableFileAttributeSetTableFileAttributeSetTableCREATE TABLE FileAttributeSetTable (Id INTEGER, FilterAttributeId INTEGER )D !AA tableFileDataTableFileDataTableCREATE TABLE FileDataTable (Id INTEGER PRIMARY KEY, Data BLOB )` !II1tableFileFilterTableFileFilterTableCREATE TABLE FileFilterTable (FilterAttributeId INTEGER, FileId INTEGER ) +' $ C{tmf_XQJC            OWLOA U9images/qt-logo.png qt-logo.png3 99classic.css classic.css=Qqtsinglecoreapplication-example-console.htmlA non-GUI examplex)Qqtsingleapplication-example-loader.htmlLoading Documents})qtsinglecoreapplication.htmlQtSingleCoreApplication Class Referencez-Qqtsingleapplication-example-trivial.htmlA Trivial Example?5Uindex.htmlSingle Application~mqtsingleapplication.htmlQtSingleApplication Class ReferenceaQ}qtlockedfile.htmlQtLockedFile Class Reference   }}pSp !AAatableFileNameTableFileNameTableCREATE TABLE FileNameTable (FolderId INTEGER, Name TEXT, FileId INTEGER, Title TEXT )`!99QtableFolderTableFolderTableCREATE TABLE FolderTable(Id INTEGER PRIMARY KEY, Name Text, NamespaceID INTEGER )*!AAUtableMetaDataTableMetaDataTableCREATE TABLE MetaDataTable(Name Text, Value BLOB )  qdoc A=YCreationDate2009-12-16T11:43:405qchVersion1.0,k@gD<(CtN_= ?Nb~[<L9L׃?Ș q.P}uЦ!/ ǏoԻ¯нA0qy-M 0k<@h^!P&#QF*dw*e0vԡX=. #Qx5Fé <#FlX[z;4f/Wu|cR8 U q/6`wbYdo}![ Ɂp-6#j|z Try&LWvx R&E3rl>heGP`,Ql-mu&hHhv˪HiP E` r0ER1? h@i՘1V*{)l%Q&@-5/qVcsSUYus:/`:R@6!pVUg[INdʈD@DAA"s%'"E ~By_덣׫@D*U p P[ QX()e:hKww42(hڕtVu9xhPH"*^A2LnтEkjBkk.Ĥ "P2E.'LRqƚS2PSḯݤĦc,i 6,L2z'_h)HTQa̭J-4Z0nMi9 S-(fBKmEG0Tr.diF] vWXin5޼Q ejX1O*͉a*<@WA%鑢:eڥ$f&GP9:@,P剶@.dT`W^ғ^Ȭ#Rmö\~l)sl?J.KRp)N UO/ṴځPlA-BZB*6 Ҩ)ȄM \1OWei:o roqi+'p =uuԽ}ߵA?;8<(/:4qE<uJ;\uALpQmT 7aq_$Dٽ3!,=n!am~i۔O2עg6o췬+$6^Ѳc??7TrNm~ڝsH7Hʲxh&>zBWALUOf7N)苮& ڜkPJ@Ul۳ܥ)G6[,Pݤnk9tȠTy 3,HeS*=s@^&ͫi4Ug~YgWE2ZkvĬʖS)ybIR@`А]m,P,SV[S$6XޮThIf15ѱy3KZ}wٍ8<>s5XTB2r V 1\c`;PP ;H޸nifh\[M\[pj֘f6WPZjJEkV&*fXπ XkӰIqE[ñ@X0}ovw-Al7VrǼZcUrkXWзу:ׇxmĒ,Ks rO =,fnse=6BC6Gerx(yi) 85K#6˩&uV^6T*sƹ?K4T5X@z+YOпgvolgMdZAs? aM5^'?/9ퟱQ_JSH,W5E·e(0/Lj;e>f;lXeu e˛{-73Go MSMSU,SCS.F,k 1; ̴6]evϽBpu(򷋴]Ÿ9ܘj|lmX∳ԏbxMSs>J (?ll7lVLm+{/֎$&Fu<d(@KqNPF]K- g!Ne~)68o`eXbQg3Gw ؅$'*W|uG5!haG q#M8ܔ50W0|!nPC]nau%l6wnʼv[| ly%]HE[c(rKf k֏ 9=W:%J"^ΊaIɅ2u_h6{Pc⾄5AJG-} @@,\(xZo8޿iѢtڦiswDYJJRqۿfH=-R?Dr'gƜrg)ͥ8FGdZp>_ޑ>o/ω7 O΃ P"_ w=Pp GCm=K)^|>'T`tzzy8uFi>!|3@gE#jPLhYZE7+1?* 2" Fn2^vү0gTk%Lp$pspvW*yiŲ3OEtʘY3vB{nT x3t M:@˲Nw]Ш>IAkE)/1237#f '<h93A,LΤ_'QzGRg9^ n>S]qvμBj3B0=J\η'D2 M7:pEg8IGVkզ# P7)#1k@,ʩ>K@Kpҋk"(#לǙZ gQh7$;JyLx\s6fI82wRm<4i;;;; YhH@^"%S2=mwHxx9mk&ɉw0KJًсw/gN/~ Y8zD~s~JddrvyF~z} ȅ<Г7{ăG[x0R8ԡ=T$[hO&777㛣W/^~6:(ш| MӈTCD%28HS2!5>6\G/LWe[rQG6gDŦ;Ei#Ab!0 BdQaJR3A~d*-43JEE!$^z% |ؘIh{dPX1s9V!q~+CF'ںJ&&[gt416vHy.X֒]j?/0Kޯaɀ)c򔘢YZ+ H2g9fdpG&tNvMtZ'( ?$o{+P"'Y}IUg܇놥!i:F4NQ]lJϦ W[EA \iRW>} +YWO:&[}\hVb&3ḕUP'o,Az9EV*;|N!H T$WW–!`0Z-yfpTB턍Z5}D}  ZJ@Z(Z%0+죳/k_^L l;WZar/g̋S d Q]mX@NN+BJ츇ZL@A@2,t0Jnl) ճIfB2dg 1=1e؇Q mBG Ɨ/wxp 71&:\! `3#3ApLظks/Y8>ükj\uIXuXåp[5jOΪ.J=] E6Sg6Q ++;z3a9$S]0`/Y }=Ѯ0a^']|ӾQڸ#y8q9 ?pn\1/0N6`v5.s3+ƿ{v#bQms8sy<m!=`ʼniW3NvQTK4p< O1؁es}q}HL2|I^?[^ 韵XZ%+`kT ; vG[K(:HFe9|E4(礘(""͆Cvg /\ *EaTS{*sav窰,U–_>y4Q>d{:Es [SM5 w9] aKiX [r8õq2iʜo [ cmf`+mټACH1X#᫝}qR6{ebPs2РHXL9mGE H-VY.KبFz.: E7gWocFD~kaȀ p 5SÇZ>o- ƅ(y Du<~=I[~)pW T h’L[MQzi==<|.H{ Ri#<(Ă9Lr 0I9sdJq_XڣG򲘫6hns ڒs9F-7DR&tJ<^KDpR\g$3?#4ض*NOS4@bՎBiaOvBXZf"s7jn7\zSȷGGĜqRRV FKk~5{΄٪A֛wTFF]ZpR!aV: }j41䰒FqxeHkXVذ!(Žg`zq3\c ͫN |A˜r"$RTy6~+UN3s⮒yv f7dQT$!_9ꍑK0逹qTܧ}p.\Ȓ My.q0>މ0 A;1zQ<{$ >L=^ݾ.nufg٥lMW'SMqP5{  ';ҾM.d\r)` _it"E)Fd.y&LޢZHtK};,:8Ρ)F+Q5GƮDGipN'>ӈf)e#kZZR%*|M X<-(|gu_Ib}Ξ ͻo*4q%;ᙲf?Mn”#׻~/5 :^OaOQ+'2+kص>Rͮ_>}GGa%M;;UJ%T="t5\uay=-@sEU~s@*rNhOEv@zJE ̫EiNA~VNXo;LY$6#§?;>V`qD5xOcղmݸ zGMBdiV#➊`[Ct9@K8gu%Ku]zImC %YTNi6ۄsX;ޣ.N}"#s6/Ϫ 7n'ܒ~t/o{hhxј$E ڇAY6XsIt'fSƈ,IMzݎE81~vSOj.qIOUTSy&V\4͋Ν8ën7N0Zh̄4f [+[A#xZmS8>Bg("qxoU3Օb+vdH2ݒ8&d${C&=S|ay,OGײacf.nuIM&.H ?/V"7F؄O$'m'& `Ul#"ף 58 l֟ F]xXms6_sԑH+/mc깎v&O$4AdM]מfl}.߯rHUD0bHU&I$~݋Q`ū˳]MҮջߞh$%ɫWo>gnME" %p44},TzǠEaNQl6x,Vz^!n^E`,H zh-- cj@Qdr-KP8R5 "b4@F賹/`xr! 0&c lj_Id8X(&F61XQ`؃ ćNp,GgX02*aj?13 1 ?BłM@edQO8> !Ϧgt4'T|,.g! )Ԍ{hM'DXc((6=Ss1 [ {[K!A`p2 3P` @sFiY Vg9==Tt9!8G[h2ി~EsuN B'z"R,";c'y-% ui@,ޗLst%r'@lKѭ4K"W,O>1>QU63&Kc]DVD'޴- [Z 3rhƋ+L~ϷM_ XlֳnX6/ӣvKc Y/Mc m@.Az1m=fu22V~N؃a9^"-@aq&/d֢}"rؠ(vWr{V6/%H+D1X)yOX :Ǭ0FH+&` l0`uTgBサӘ<3L(((ͬ9=%.E%pK(e AsۇWm1#1EͲ2.8&(녹HtJhXN@h@X (457?z"P0Xك->pWXo2M=uI⦓֔gk\DN?c)%Dq[Yrq,1(E?ZrD5K] ͟#ȿ2s`r4 w2%: 7!{'OQёT+S6fRx6;JXՄ8Ý]HW.6 ^M>"aAK'CM? Tm%5ðIp`w [$i QG`rZOw/ LrPɦ"|EHS]!*/:]igyAKL.ŊCƮ{VnW}9*#@PvKZΆFЬG4_~B w:)|1[y:ň!w7BQa+6dgV'awj]S쐋B6~ʖU uENd{C#IOX%-nT\mKv_V c=q'@z>@B~kn|XTV KÎ9mݿ84j`D^.1~./͛BGJD#p~{=CXNjr؄97Uj-tT[W*{v~-uu3\ʤm!#+DUDAea7t(P w&%TnǴn8zаd2JX1\[(RQWlb-ZOIoʙոm;[<+5۱E{ˬ u{c&T}2B(gk*-6=vR t/{E<`q5jrrYIĝC$gxUN7uc42IU|=9"ο_[]+&So& V" uZl]e[-=u-ذB2wYC3fC4-W{=!͙.mfU+^ wZ,e͔q e?O%{eU"XB+ɥ[1 q.I7.T ٛv]?4\B~-[S챋U'b;աŝ"LmmQ*-Tj#wZ.q/Ve.PP[\'"ė$rR̹/|sHbxiU%1/0DN%0.?l:>OSSwñh3k!`*-ɤ{~`m^*)Cwn@^8mZ۠D6?6lMibja:Iz)+uU]\5lӉ5gtܞݴ#?qafykWvu-K}~Ѻۭ )tڇ{woP6 llxY{s6ߟe\)H+e\I}Q;t:D4AdM.^{%o&/3H `"U"Q ~݋Qtoի˓_.=w?`EDѫWoߞ3nӋ00I\)rs(ZY"| hqLd!/L܂Bç7QE$Ȅ2Wx (tXi31=q^\ܚI$j1? #06&`ZdGX'n qXqo#"`ȭ4d_2fJ8GX!YV?Z&6%gr]'z³t" ft ^qgZAۀB.R{|[FS$qWB|fCqP: e,j/t#b t=2O}HN*,V%sT-F89r" 1aSr@-n~MvB{J&"!V5k<&pV" w- 4KC\b-!RZ5g®٨MlР;࿚ U9 j"&^W<ײT1ˊ(8o]҇d 0)B/DnHR?B0SXO6k`?D((rSaӔTa~y,qߺ`qY^F#923_F`4#ʹ |l~K . 3 ~1IJ`Ouqv-Jàڐ\mTyn{4`Q') f27ToY0z'3tM"B$Ap^%z-ϩ" ټ"S"MBW+A/J>H(54 \va2-5k90q . $k`=B9cFhA*50JATx8<]C"f30L : P )FQS_a %:3(Sbe(j&%.vArER)`98;7-,w"ɿ4Z+6oapkN%-蜬9b6AT,X ZvR`UӜSHmPKY>uTeV!|XNMf4Y4R˄ӹxKIJəYQtK:7Gp<]wl!i2mĄ]`Ro)7+#kY 6h_%.89WM9E j7 nrB,7 Q|f^-lj-?pi7k-ZUe(PJ_PF㫻qxy~sYkUe-؜Yu]!UX5+P\9 Xl2'H(Vu`M<}t`6!ǼitcXsHEVn'_ 8ؾ 21ʟb^qstsEޯfUT  ױbv͸V {>Eǿo&Wy2nZv [B? tϑll՗B6]:YzeTU7XכXnKV% 4p,A, m%d#:ZS}h1!`9uH[LK][TQrsٱrZN;V1ZGdX PĪF/%i+4㼺ZxQE0֔vM1!"L:PXOlv'96y–WJDnڷ~ԍHZ< w{i6*pM{,gE J~oɞ'zeׯV7?8\h"K{ܣ<M5m^p4X`>M'|W1775OTy ѳ6!=;/ˆÏ[^`P~ElBr-ۊ\̠S<Ǖv ߽ Gl^U QBn12UF>JI8J!$^$eH,-QC[0KW :xr6| 1 _v{p[J<6{jJÁ <2_dc69HQҥSS^٤@;pwq~uzj;$^02ہaOZ{+e5TiΧOamsYZ%kUW [<ߓtIrukK4ϕִ\qdoz4Rp(E6|j$~,M}Fkܼլ>%N}߳՗7}y q|8 gi|\w[)MGŃA,BB^#-8oCL$XRQg0?nCI?ߡ.dU3ؘO( R5W+ IKk{bɵeN&xX{s۸ߟb˛ҝDZ,KJ}봝 DBjP&~HQtIhX,0xJ ^xc|> ݟ~ ^zs}6&K7?_^AЍEћ% '3J&W8=^W01I\i P\1E?VU: Gc. ~H1Pf.<JE*bfРa%) `Fz:98Uab~]<mųJ[m8niat}i SׁP]n#N [lh;+b>t>c8+0i4K$۞X7 5Y,1{@ wvtL">LJh~֖HrpJ3)C]ɮ@*?H9 s'S_{ )oVǦLwU|[~U)o/oz`0d8Iy qAL&L1A( =2 K,Y@=6:hiymRhsdKJQǘ 1Sy2O$b11L_~,vn;jtqeo:n[ۀ') ͡YwU[7TWgR }|8Cm@6 E|ßQ iK89E~ё{7 75!u!(xNM=u;z aåܻBÆ3_H&*pu{Y/ S/ᄳ]<Vd~sOM 122"A0ę`,iô}3Jro9y|M"3S&(D2?3yܬ\4OzwKː0T7!L6W.]0a}F 84xO}qgжJ;6:""-?NzJnk^%u/w[3Y騂YALOM׈aHGQt2-^|^'XܸyPY Vtd' Ll퇩m726u0XșCgWqQ"1M; SfƑSw(OSNHa}y*lJ450)HA{Jt$&|;hH hniS:̓^vvU%jwC҇Xelv[OAg3 %JAdL(!#B$_P k!9iX'cVľmk}ϣj%;}(/18>y$/疬Zʉ7O_J|kQV/C^2iPZh\Ls7U|ung੎xr3Ht`\k@q ôuNwf*\J{j㚷0suH_`,oLhQ &;Y}}{ aqC*-59o5(LXm; r Dhz!#1AY"@;W]#u4NGeU`-;cK~@LOCN>H!8j쉔[Ys_@qvR13RࠩWUwE-)*23vȳuD=!RS9spL= 2hA%' XF[*?A_I8@18+3DVujaG9k!%C҄ U7T} >4tdPyaSYeك2/V&%l㗟[^.oQ@@t`V eZ {*fkv#Gс[?%~Y"oG92)[sxhKHlgp@c&'Xgǥl#i%GZZ4y^41 ˧wtfJjY=X82L;+On- j*bna{RGbqӣc]r*dK4_0 |]~sM/W,3ѳ!^{*7>}PДrH}"$CQ?ke"BtfrYSy ;9QA[ұ?X~iXŶiZRZ=-㼐ْ1+G Qt鮲Ǔ P[;Nc0DR&Q|÷{׵*8@;;s__ϩKvcB}8xgzyC,LtYm̡[mҚ%^j 5QTwqa X .R2(wtiT">9ycLPNXiUكqRMbɡOPL;TRD48c.GOafywU: BE33|76RNABA!Rlv.\iܐYAA~vnρ aZP @7K vq=lG33Y!\N8vq 6!6zF.FllE %jQ۰rM{i|`H&!pw OzpcH1<>Ⱦȡ}#ˇYK&'G4UhhXLnTX(g(7^[_ 4bdJ!>D >s@p:2L:P0kN~0;F B vvD$ڹd2ȐL6\*&Jot^L|,BEig"E\gտ{`q5~M4, /yçdâ?{o235MnbhDtjPSngN nʜb(#iсhQ~`ANX0kNԾM%TIyY NOI;}?=Ӱp#Zb,}w" h#/ĕXw3jmI5]]eicck!ݛ9^5kE( Rb[iR= UlockQtLockedFile::locklockU -e-isLockedQtLockedFile::isLockedisLockediiAQtLockedFile::WriteLockQtLockedFile::WriteLockLockMode-enum{eeAQtLockedFile::ReadLockQtLockedFile::ReadLockLockMode-enums]]AQtLockedFile::NoLockQtLockedFile::NoLockLockMode-enum{eeAQtLockedFile::LockModeQtLockedFile::LockModeLockMode-enum9==QtLockedFileQtLockedFileMQQLoading DocumentsLoading DocumentsMQQA non-GUI exampleA non-GUI exampleMQQA Trivial ExampleA Trivial Example vjK)vp5 5initializeQtSingleApplication::initializeinitialize?iidQtSingleApplication::ididM!MactivationWindowQtSingleApplication::activationWindowactivationWindowEEactivateWindowQtSingleApplication::activateWindowactivateWindowUYYQtSingleApplicationQtSingleApplication{AyQ~QtLockedFileQtLockedFile::~QtLockedFiledtor.QtLockedFileI %]%unlockQtLockedFile::unlockunlock= UopenQtLockedFile::openopenU -e-lockModeQtLockedFile::lockModelockMode %{2%I-ImessageReceivedQtSingleCoreApplication::messageReceivedmessageReceivedr11isRunningQtSingleCoreApplication::isRunningisRunningGyidQtSingleCoreApplication::idideiiQtSingleCoreApplicationQtSingleCoreApplication&Y-YsetActivationWindowQtSingleApplication::setActivationWindowsetActivationWindowv9 9sendMessageQtSingleApplication::sendMessagesendMessageIImessageReceivedQtSingleApplication::messageReceivedmessageReceivedj11isRunningQtSingleApplication::isRunningisRunning --QUUSingle ApplicationSingle Application~99sendMessageQtSingleCoreApplication::sendMessagesendMessage kn= kukhP%W8(USingle Application9sendMessage"ImessageReceived1isRunningid2iQtSingleCoreApplication*YsetActivationWindow9sendMessage"ImessageReceived1isRunning5initializeid$MactivationWindow EactivateWindow*YQtSingleApplicationA~QtLockedFile%unlock open -lockMode lock -isLocked 2iQtLockedFile::WriteLock0eQtLockedFile::ReadLock,]QtLockedFile::NoLock0eQtLockedFile::LockMode=QtLockedFile&QLoading Documents&QA non-GUI example&QA Trivial Example &0A(Uimages/qt-logo.png 9classic.css ]=qtsinglecoreapplication-example-console.htmlS)qtsingleapplication-example-loader.html<}qtsinglecoreapplication.htmlU-qtsingleapplication-example-trivial.html5index.html4mqtsingleapplication.html&Qqtlockedfile.html     Y !155indexNameIndexIndexTable0CREATE INDEX NameIndex ON IndexTable(Name)(!AAQindexFileNameIndexFileNameTable1CREATE INDEX FileNameIndex ON FileNameTable(Name)$!9AQindexFileIdIndexFileNameTable2CREATE INDEX FileIdIndex ON FileNameTable(FileId)merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html/qtsingleapplication.qhp000066400000000000000000000116571177067165300330210ustar00rootroot00000000000000 com.nokia.qtsolutions.qtsingleapplication_2.6 qdoc qt solutions qtsingleapplication qt solutions qtsingleapplication
qtlockedfile.html qtsingleapplication.html index.html qtsingleapplication-example-trivial.html qtsinglecoreapplication.html qtsingleapplication-example-loader.html qtsinglecoreapplication-example-console.html classic.css images/qt-logo.png qtsinglecoreapplication-example-console.html000066400000000000000000000130461177067165300370520ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html A non-GUI example
  Home

A non-GUI example

This example shows how to use the single-application functionality in a console application. It does not require the QtGui library at all.

The only differences from the GUI application usage demonstrated in the other examples are:

1) The .pro file should include qtsinglecoreapplication.pri instead of qtsingleapplication.pri

2) The class name is QtSingleCoreApplication instead of QtSingleApplication.

3) No calls are made regarding window activation, for obvious reasons.

console.pro:

 TEMPLATE   = app
 CONFIG    += console
 SOURCES   += main.cpp
 include(../../src/qtsinglecoreapplication.pri)
 QT -= gui

main.cpp:

 /****************************************************************************
 **
 ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
 ** This file is part of a Qt Solutions component.
 **
 ** Commercial Usage
 ** Licensees holding valid Qt Commercial licenses may use this file in
 ** accordance with the Qt Solutions Commercial License Agreement provided
 ** with the Software or, alternatively, in accordance with the terms
 ** contained in a written agreement between you and Nokia.
 **
 ** GNU Lesser General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU Lesser
 ** General Public License version 2.1 as published by the Free Software
 ** Foundation and appearing in the file LICENSE.LGPL included in the
 ** packaging of this file.  Please review the following information to
 ** ensure the GNU Lesser General Public License version 2.1 requirements
 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
 ** In addition, as a special exception, Nokia gives you certain
 ** additional rights. These rights are described in the Nokia Qt LGPL
 ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
 ** package.
 **
 ** GNU General Public License Usage
 ** Alternatively, this file may be used under the terms of the GNU
 ** General Public License version 3.0 as published by the Free Software
 ** Foundation and appearing in the file LICENSE.GPL included in the
 ** packaging of this file.  Please review the following information to
 ** ensure the GNU General Public License version 3.0 requirements will be
 ** met: http://www.gnu.org/copyleft/gpl.html.
 **
 ** Please note Third Party Software included with Qt Solutions may impose
 ** additional restrictions and it is the user's responsibility to ensure
 ** that they have met the licensing requirements of the GPL, LGPL, or Qt
 ** Solutions Commercial license and the relevant license of the Third
 ** Party Software they are using.
 **
 ** If you are unsure which license is appropriate for your use, please
 ** contact Nokia at qt-info@nokia.com.
 **
 ****************************************************************************/

 #include "qtsinglecoreapplication.h"
 #include <QtCore/QDebug>

 void report(const QString& msg)
 {
     qDebug("[%i] %s", (int)QCoreApplication::applicationPid(), qPrintable(msg));
 }

 class MainClass : public QObject
 {
     Q_OBJECT
 public:
     MainClass()
         : QObject()
         {}

 public slots:
     void handleMessage(const QString& message)
         {
             report( "Message received: \"" + message + "\"");
         }
 };

 int main(int argc, char **argv)
 {
     report("Starting up");

     QtSingleCoreApplication app(argc, argv);

     if (app.isRunning()) {
         QString msg(QString("Hi master, I am %1.").arg(QCoreApplication::applicationPid()));
         bool sentok = app.sendMessage(msg);
         QString rep("Another instance is running, so I will exit.");
         rep += sentok ? " Message sent ok." : " Message sending failed.";
         report(rep);
         return 0;
     } else {
         report("No other instance is running; so I will.");
         MainClass mainObj;
         QObject::connect(&app, SIGNAL(messageReceived(const QString&)),
                          &mainObj, SLOT(handleMessage(const QString&)));
         return app.exec();
     }
 }

 #include "main.moc"


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
qtsinglecoreapplication-members.html000066400000000000000000000345441177067165300354170ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html List of All Members for QtSingleCoreApplication
  Home

List of All Members for QtSingleCoreApplication

This is the complete list of members for QtSingleCoreApplication, including inherited members.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
qtsinglecoreapplication.html000066400000000000000000000217231177067165300337620ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/html QtSingleCoreApplication Class Reference
  Home

QtSingleCoreApplication Class Reference

A variant of the QtSingleApplication class for non-GUI applications. More...

 #include <QtSingleCoreApplication>

Inherits QCoreApplication.

Public Functions

Public Slots

  • bool sendMessage ( const QString & message, int timeout = 5000 )

Signals

Additional Inherited Members


Detailed Description

A variant of the QtSingleApplication class for non-GUI applications.

This class is a variant of QtSingleApplication suited for use in console (non-GUI) applications. It is an extension of QCoreApplication (instead of QApplication). It does not require the QtGui library.

The API and usage is identical to QtSingleApplication, except that functions relating to the "activation window" are not present, for obvious reasons. Please refer to the QtSingleApplication documentation for explanation of the usage.

A QtSingleCoreApplication instance can communicate to a QtSingleApplication instance if they share the same application id. Hence, this class can be used to create a light-weight command-line tool that sends commands to a GUI application.

See also QtSingleApplication.


Member Function Documentation

QtSingleCoreApplication::QtSingleCoreApplication ( int & argc, char ** argv )

Creates a QtSingleCoreApplication object. The application identifier will be QCoreApplication::applicationFilePath(). argc and argv are passed on to the QCoreAppliation constructor.

QtSingleCoreApplication::QtSingleCoreApplication ( const QString & appId, int & argc, char ** argv )

Creates a QtSingleCoreApplication object with the application identifier appId. argc and argv are passed on to the QCoreAppliation constructor.

QString QtSingleCoreApplication::id () const

Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application.

bool QtSingleCoreApplication::isRunning ()

Returns true if another instance of this application is running; otherwise false.

This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session).

See also sendMessage().

void QtSingleCoreApplication::messageReceived ( const QString & message )   [signal]

This signal is emitted when the current instance receives a message from another instance of this application.

See also sendMessage().

bool QtSingleCoreApplication::sendMessage ( const QString & message, int timeout = 5000 )   [slot]

Tries to send the text message to the currently running instance. The QtSingleCoreApplication object in the running instance will emit the messageReceived() signal when it receives the message.

This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within timeout milliseconds, this function return false.

See also isRunning() and messageReceived().


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/images/000077500000000000000000000000001177067165300265245ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/doc/images/qt-logo.png000066400000000000000000000077531177067165300306300ustar00rootroot00000000000000PNG  IHDR9C:uIDATxb?bhJnJnJnJnJnJnԡ Є`r'Q( !!Nb_p??F&F312G.yG&ޏ?}eWSSgb( ~™t齸g0sVv`fcdY8E$xdUUex$xd9DDr=#gdd|Uףw9D- 2b8Ͽebddceᔐ╗SWScaB#cfd]-I\ _20110`xzw/).#'˯"ǯ*˫,+')@lY@}fۯͼ 2@d$1H')&#'ç,ϯ*˧,#/%́XgfdOX8Y9s2GC3g@ fFff.3O|v ,l%?fR_|bb`y엉3+ԇ,̌,4 "ͭ32>{E4އ ˯NԦ+Qefdϛ?6:&Ǜ?|"=\n$FFfF /0"`ddf cfbb`dx՛o yAP ,,eebWaá,QܬLL>5Lll10 m00wTVxOÚ bGB8GtUմXplII ׶R/@2 Y{ ]d9#ule+}N6XfJ"խJ13002³ @K"ŭzo?1000@{ lϿ`?ï2"ecgd H.fFfɆ}Ͽߌ"٭윌 y02000Ac<\po/."?;#ߛ!hgddd\<|\300<|?j"-U L9D8E i[ZP?z5fF6? o"b')~?3311g/ ֯cz߿>pvfL~g'""٭Qd'i `Ϳ'?HۅǞy?200 %)h1.7?."ͭ 32yVfFfGyO/:?LL [,?/?^}|:`luX-tN X"_CkǶ>w:7WlSofFcOv{OD7톚)*$@d"7$1CRgɉi[!.f&v_#ɧ{='JXXc`agպ]R\̅?ӧ_ᄏvѦ_2"g|fە(m )\!&&&F{ ba~>qci.O?l-"s܅Ǐ<Ϟn%hm)tN6P߿0H~̌,|ןhmF>1:19_/رcc7k䱞]ۯ咒SaB[?|}kf~?ɍkF/>9*qpQ( @##ïe1| QXn_ #ơp7B]X?F[a'K+ q/̌,,L L 7tDʡz /#300VnC")"/?110qp￿l_GVWNOU_UIPSCؐ?\e``=_R(2r-d?ÿ_?+78$$ +:xBVFn^?cbdd@yĂf```aba㔆L)J sI2Ҥ!#3 > ^y^~o (?+33d:.cfL(H*sJ`Mg222ڥž15,l l"< void report(const QString& msg) { qDebug("[%i] %s", (int)QCoreApplication::applicationPid(), qPrintable(msg)); } class MainClass : public QObject { Q_OBJECT public: MainClass() : QObject() {} public slots: void handleMessage(const QString& message) { report( "Message received: \"" + message + "\""); } }; int main(int argc, char **argv) { report("Starting up"); QtSingleCoreApplication app(argc, argv); if (app.isRunning()) { QString msg(QString("Hi master, I am %1.").arg(QCoreApplication::applicationPid())); bool sentok = app.sendMessage(msg); QString rep("Another instance is running, so I will exit."); rep += sentok ? " Message sent ok." : " Message sending failed."; report(rep); return 0; } else { report("No other instance is running; so I will."); MainClass mainObj; QObject::connect(&app, SIGNAL(messageReceived(const QString&)), &mainObj, SLOT(handleMessage(const QString&))); return app.exec(); } } #include "main.moc" merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/examples.pro000066400000000000000000000001111177067165300306610ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS = trivial \ loader \ console merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/loader/000077500000000000000000000000001177067165300275765ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/loader/file1.qsl000066400000000000000000000000071177067165300313140ustar00rootroot00000000000000File 1 merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/loader/file2.qsl000066400000000000000000000000071177067165300313150ustar00rootroot00000000000000File 2 merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/loader/loader.pro000066400000000000000000000001211177067165300315600ustar00rootroot00000000000000TEMPLATE = app include(../../src/qtsingleapplication.pri) SOURCES += main.cpp merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/loader/loader.qdoc000066400000000000000000000075111177067165300317200ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ /*! \page qtsingleapplication-example-loader.html \title Loading Documents The application in this example loads or prints the documents passed as commandline parameters to further instances of this application. \quotefromfile loader/main.cpp \printuntil }; The user interface in this application is a QMainWindow subclass with a QMdiArea as the central widget. It implements a slot \c handleMessage() that will be connected to the messageReceived() signal of the QtSingleApplication class. \printuntil } The MainWindow constructor creates a minimal user interface. \printto case Print: The handleMessage() slot interprets the message passed in as a filename that can be prepended with \e /print to indicate that the file should just be printed rather than loaded. \printto #include Loading the file will also activate the window. \printto mw The \c main entry point function creates a QtSingleApplication object, and creates a message to send to a running instance of the application. If the message was sent successfully the process exits immediately. \printuntil } If the message could not be sent the application starts up. Note that \c false is passed to the call to setActivationWindow() to prevent automatic activation for every message received, e.g. when the application should just print a file. Instead, the message handling function determines whether activation is requested, and signals that by emitting the needToShow() signal. This is then simply connected directly to QtSingleApplication's activateWindow() slot. */ merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/loader/main.cpp000066400000000000000000000105341177067165300312310ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include #include #include #include #include #include #include #include class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); public slots: void handleMessage(const QString& message); signals: void needToShow(); private: QMdiArea *workspace; }; MainWindow::MainWindow() { workspace = new QMdiArea(this); setCentralWidget(workspace); } void MainWindow::handleMessage(const QString& message) { enum Action { Nothing, Open, Print } action; action = Nothing; QString filename = message; if (message.toLower().startsWith("/print ")) { filename = filename.mid(7); action = Print; } else if (!message.isEmpty()) { action = Open; } if (action == Nothing) { emit needToShow(); return; } QFile file(filename); QString contents; if (file.open(QIODevice::ReadOnly)) contents = file.readAll(); else contents = "[[Error: Could not load file " + filename + "]]"; QTextEdit *view = new QTextEdit; view->setPlainText(contents); switch(action) { case Print: { QPrinter printer; view->print(&printer); delete view; } break; case Open: { workspace->addSubWindow(view); view->setWindowTitle(message); view->show(); emit needToShow(); } break; default: break; }; } #include "main.moc" int main(int argc, char **argv) { QtSingleApplication instance("File loader QtSingleApplication example", argc, argv); QString message; for (int a = 1; a < argc; ++a) { message += argv[a]; if (a < argc-1) message += " "; } if (instance.sendMessage(message)) return 0; MainWindow mw; mw.handleMessage(message); mw.show(); QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), &mw, SLOT(handleMessage(const QString&))); instance.setActivationWindow(&mw, false); QObject::connect(&mw, SIGNAL(needToShow()), &instance, SLOT(activateWindow())); return instance.exec(); } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/trivial/000077500000000000000000000000001177067165300300025ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/trivial/main.cpp000066400000000000000000000056141177067165300314400ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include #include class TextEdit : public QTextEdit { Q_OBJECT public: TextEdit(QWidget *parent = 0) : QTextEdit(parent) {} public slots: void append(const QString &str) { QTextEdit::append(str); } }; #include "main.moc" int main(int argc, char **argv) { QtSingleApplication instance(argc, argv); if (instance.sendMessage("Wake up!")) return 0; TextEdit logview; logview.setReadOnly(true); logview.show(); instance.setActivationWindow(&logview); QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), &logview, SLOT(append(const QString&))); return instance.exec(); } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/trivial/trivial.pro000066400000000000000000000001211177067165300321700ustar00rootroot00000000000000TEMPLATE = app include(../../src/qtsingleapplication.pri) SOURCES += main.cpp merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/examples/trivial/trivial.qdoc000066400000000000000000000070451177067165300323320ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ /*! \page qtsingleapplication-example-trivial.html \title A Trivial Example The application in this example has a log-view that displays messages sent by further instances of the same application. The example demonstrates the use of the QtSingleApplication class to detect and communicate with a running instance of the application using the sendMessage() API. The messageReceived() signal is used to display received messages in a QTextEdit log. \quotefromfile trivial/main.cpp \printuntil instance The example has only the \c main entry point function. A QtSingleApplication object is created immediately. \printuntil return If another instance of this application is already running, sendMessage() will succeed, and this instance just exits immediately. \printuntil show() Otherwise the instance continues as normal and creates the user interface. \printuntil return instance.exec(); The \c logview object is also set as the application's activation window. Every time a message is received, the window will be raised and activated automatically. The messageReceived() signal is also connected to the QTextEdit's append() slot. Every message received from further instances of this application will be displayed in the log. Finally the event loop is entered. */ merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/qtsingleapplication.pro000066400000000000000000000001651177067165300313100ustar00rootroot00000000000000TEMPLATE=subdirs CONFIG += ordered include(common.pri) qtsingleapplication-uselib:SUBDIRS=buildlib SUBDIRS+=examples merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/000077500000000000000000000000001177067165300253015ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/QtLockedFile000066400000000000000000000000321177067165300275250ustar00rootroot00000000000000#include "qtlockedfile.h" merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/QtSingleApplication000066400000000000000000000000411177067165300311310ustar00rootroot00000000000000#include "qtsingleapplication.h" merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.cpp000066400000000000000000000152141177067165300303230ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qtlocalpeer.h" #include #include #if defined(Q_OS_WIN) #include #include typedef BOOL(WINAPI*PProcessIdToSessionId)(DWORD,DWORD*); static PProcessIdToSessionId pProcessIdToSessionId = 0; #endif #if defined(Q_OS_UNIX) #include #include #endif namespace QtLP_Private { #include "qtlockedfile.cpp" #if defined(Q_OS_WIN) #include "qtlockedfile_win.cpp" #else #include "qtlockedfile_unix.cpp" #endif } const char* QtLocalPeer::ack = "ack"; QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) : QObject(parent), id(appId) { QString prefix = id; if (id.isEmpty()) { id = QCoreApplication::applicationFilePath(); #if defined(Q_OS_WIN) id = id.toLower(); #endif prefix = id.section(QLatin1Char('/'), -1); } prefix.remove(QRegExp("[^a-zA-Z]")); prefix.truncate(6); QByteArray idc = id.toUtf8(); quint16 idNum = qChecksum(idc.constData(), idc.size()); socketName = QLatin1String("qtsingleapp-") + prefix + QLatin1Char('-') + QString::number(idNum, 16); #if defined(Q_OS_WIN) if (!pProcessIdToSessionId) { QLibrary lib("kernel32"); pProcessIdToSessionId = (PProcessIdToSessionId)lib.resolve("ProcessIdToSessionId"); } if (pProcessIdToSessionId) { DWORD sessionId = 0; pProcessIdToSessionId(GetCurrentProcessId(), &sessionId); socketName += QLatin1Char('-') + QString::number(sessionId, 16); } #else socketName += QLatin1Char('-') + QString::number(::getuid(), 16); #endif server = new QLocalServer(this); QString lockName = QDir(QDir::tempPath()).absolutePath() + QLatin1Char('/') + socketName + QLatin1String("-lockfile"); lockFile.setFileName(lockName); lockFile.open(QIODevice::ReadWrite); } bool QtLocalPeer::isClient() { if (lockFile.isLocked()) return false; if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false)) return true; bool res = server->listen(socketName); #if defined(Q_OS_UNIX) && (QT_VERSION >= QT_VERSION_CHECK(4,5,0)) // ### Workaround if (!res && server->serverError() == QAbstractSocket::AddressInUseError) { QFile::remove(QDir::cleanPath(QDir::tempPath())+QLatin1Char('/')+socketName); res = server->listen(socketName); } #endif if (!res) qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString())); QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection())); return false; } bool QtLocalPeer::sendMessage(const QString &message, int timeout) { if (!isClient()) return false; QLocalSocket socket; bool connOk = false; for(int i = 0; i < 2; i++) { // Try twice, in case the other instance is just starting up socket.connectToServer(socketName); connOk = socket.waitForConnected(timeout/2); if (connOk || i) break; int ms = 250; #if defined(Q_OS_WIN) Sleep(DWORD(ms)); #else struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 }; nanosleep(&ts, NULL); #endif } if (!connOk) return false; QByteArray uMsg(message.toUtf8()); QDataStream ds(&socket); ds.writeBytes(uMsg.constData(), uMsg.size()); bool res = socket.waitForBytesWritten(timeout); res &= socket.waitForReadyRead(timeout); // wait for ack res &= (socket.read(qstrlen(ack)) == ack); return res; } void QtLocalPeer::receiveConnection() { QLocalSocket* socket = server->nextPendingConnection(); if (!socket) return; while (socket->bytesAvailable() < (int)sizeof(quint32)) socket->waitForReadyRead(); QDataStream ds(socket); QByteArray uMsg; quint32 remaining; ds >> remaining; uMsg.resize(remaining); int got = 0; char* uMsgBuf = uMsg.data(); do { got = ds.readRawData(uMsgBuf, remaining); remaining -= got; uMsgBuf += got; } while (remaining && got >= 0 && socket->waitForReadyRead(2000)); if (got < 0) { qWarning() << "QtLocalPeer: Message reception failed" << socket->errorString(); delete socket; return; } QString message(QString::fromUtf8(uMsg)); socket->write(ack, qstrlen(ack)); socket->waitForBytesWritten(1000); delete socket; emit messageReceived(message); //### (might take a long time to return) } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtlocalpeer.h000066400000000000000000000055621177067165300277750ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include #include #include namespace QtLP_Private { #include "qtlockedfile.h" } class QtLocalPeer : public QObject { Q_OBJECT public: QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); bool isClient(); bool sendMessage(const QString &message, int timeout); QString applicationId() const { return id; } Q_SIGNALS: void messageReceived(const QString &message); protected Q_SLOTS: void receiveConnection(); protected: QString id; QString socketName; QLocalServer* server; QtLP_Private::QtLockedFile lockFile; private: static const char* ack; }; merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtlockedfile.cpp000066400000000000000000000143361177067165300304620ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qtlockedfile.h" /*! \class QtLockedFile \brief The QtLockedFile class extends QFile with advisory locking functions. A file may be locked in read or write mode. Multiple instances of \e QtLockedFile, created in multiple processes running on the same machine, may have a file locked in read mode. Exactly one instance may have it locked in write mode. A read and a write lock cannot exist simultaneously on the same file. The file locks are advisory. This means that nothing prevents another process from manipulating a locked file using QFile or file system functions offered by the OS. Serialization is only guaranteed if all processes that access the file use QLockedFile. Also, while holding a lock on a file, a process must not open the same file again (through any API), or locks can be unexpectedly lost. The lock provided by an instance of \e QtLockedFile is released whenever the program terminates. This is true even when the program crashes and no destructors are called. */ /*! \enum QtLockedFile::LockMode This enum describes the available lock modes. \value ReadLock A read lock. \value WriteLock A write lock. \value NoLock Neither a read lock nor a write lock. */ /*! Constructs an unlocked \e QtLockedFile object. This constructor behaves in the same way as \e QFile::QFile(). \sa QFile::QFile() */ QtLockedFile::QtLockedFile() : QFile() { #ifdef Q_OS_WIN wmutex = 0; rmutex = 0; #endif m_lock_mode = NoLock; } /*! Constructs an unlocked QtLockedFile object with file \a name. This constructor behaves in the same way as \e QFile::QFile(const QString&). \sa QFile::QFile() */ QtLockedFile::QtLockedFile(const QString &name) : QFile(name) { #ifdef Q_OS_WIN wmutex = 0; rmutex = 0; #endif m_lock_mode = NoLock; } /*! Opens the file in OpenMode \a mode. This is identical to QFile::open(), with the one exception that the Truncate mode flag is disallowed. Truncation would conflict with the advisory file locking, since the file would be modified before the write lock is obtained. If truncation is required, use resize(0) after obtaining the write lock. Returns true if successful; otherwise false. \sa QFile::open(), QFile::resize() */ bool QtLockedFile::open(OpenMode mode) { if (mode & QIODevice::Truncate) { qWarning("QtLockedFile::open(): Truncate mode not allowed."); return false; } return QFile::open(mode); } /*! Returns \e true if this object has a in read or write lock; otherwise returns \e false. \sa lockMode() */ bool QtLockedFile::isLocked() const { return m_lock_mode != NoLock; } /*! Returns the type of lock currently held by this object, or \e QtLockedFile::NoLock. \sa isLocked() */ QtLockedFile::LockMode QtLockedFile::lockMode() const { return m_lock_mode; } /*! \fn bool QtLockedFile::lock(LockMode mode, bool block = true) Obtains a lock of type \a mode. The file must be opened before it can be locked. If \a block is true, this function will block until the lock is aquired. If \a block is false, this function returns \e false immediately if the lock cannot be aquired. If this object already has a lock of type \a mode, this function returns \e true immediately. If this object has a lock of a different type than \a mode, the lock is first released and then a new lock is obtained. This function returns \e true if, after it executes, the file is locked by this object, and \e false otherwise. \sa unlock(), isLocked(), lockMode() */ /*! \fn bool QtLockedFile::unlock() Releases a lock. If the object has no lock, this function returns immediately. This function returns \e true if, after it executes, the file is not locked by this object, and \e false otherwise. \sa lock(), isLocked(), lockMode() */ /*! \fn QtLockedFile::~QtLockedFile() Destroys the \e QtLockedFile object. If any locks were held, they are released. */ merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtlockedfile.h000066400000000000000000000066661177067165300301360ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QTLOCKEDFILE_H #define QTLOCKEDFILE_H #include #ifdef Q_OS_WIN #include #endif #if defined(Q_WS_WIN) # if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT) # define QT_QTLOCKEDFILE_EXPORT # elif defined(QT_QTLOCKEDFILE_IMPORT) # if defined(QT_QTLOCKEDFILE_EXPORT) # undef QT_QTLOCKEDFILE_EXPORT # endif # define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport) # elif defined(QT_QTLOCKEDFILE_EXPORT) # undef QT_QTLOCKEDFILE_EXPORT # define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport) # endif #else # define QT_QTLOCKEDFILE_EXPORT #endif class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile { public: enum LockMode { NoLock = 0, ReadLock, WriteLock }; QtLockedFile(); QtLockedFile(const QString &name); ~QtLockedFile(); bool open(OpenMode mode); bool lock(LockMode mode, bool block = true); bool unlock(); bool isLocked() const; LockMode lockMode() const; private: #ifdef Q_OS_WIN Qt::HANDLE wmutex; Qt::HANDLE rmutex; QVector rmutexes; QString mutexname; Qt::HANDLE getMutexHandle(int idx, bool doCreate); bool waitMutex(Qt::HANDLE mutex, bool doBlock); #endif LockMode m_lock_mode; }; #endif merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtlockedfile_unix.cpp000066400000000000000000000072101177067165300315160ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include #include #include #include #include "qtlockedfile.h" bool QtLockedFile::lock(LockMode mode, bool block) { if (!isOpen()) { qWarning("QtLockedFile::lock(): file is not opened"); return false; } if (mode == NoLock) return unlock(); if (mode == m_lock_mode) return true; if (m_lock_mode != NoLock) unlock(); struct flock fl; fl.l_whence = SEEK_SET; fl.l_start = 0; fl.l_len = 0; fl.l_type = (mode == ReadLock) ? F_RDLCK : F_WRLCK; int cmd = block ? F_SETLKW : F_SETLK; int ret = fcntl(handle(), cmd, &fl); if (ret == -1) { if (errno != EINTR && errno != EAGAIN) qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); return false; } m_lock_mode = mode; return true; } bool QtLockedFile::unlock() { if (!isOpen()) { qWarning("QtLockedFile::unlock(): file is not opened"); return false; } if (!isLocked()) return true; struct flock fl; fl.l_whence = SEEK_SET; fl.l_start = 0; fl.l_len = 0; fl.l_type = F_UNLCK; int ret = fcntl(handle(), F_SETLKW, &fl); if (ret == -1) { qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); return false; } m_lock_mode = NoLock; return true; } QtLockedFile::~QtLockedFile() { if (isOpen()) unlock(); } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtlockedfile_win.cpp000066400000000000000000000151541177067165300313360ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qtlockedfile.h" #include #include #define MUTEX_PREFIX "QtLockedFile mutex " // Maximum number of concurrent read locks. Must not be greater than MAXIMUM_WAIT_OBJECTS #define MAX_READERS MAXIMUM_WAIT_OBJECTS Qt::HANDLE QtLockedFile::getMutexHandle(int idx, bool doCreate) { if (mutexname.isEmpty()) { QFileInfo fi(*this); mutexname = QString::fromLatin1(MUTEX_PREFIX) + fi.absoluteFilePath().toLower(); } QString mname(mutexname); if (idx >= 0) mname += QString::number(idx); Qt::HANDLE mutex; if (doCreate) { QT_WA( { mutex = CreateMutexW(NULL, FALSE, (TCHAR*)mname.utf16()); }, { mutex = CreateMutexA(NULL, FALSE, mname.toLocal8Bit().constData()); } ); if (!mutex) { qErrnoWarning("QtLockedFile::lock(): CreateMutex failed"); return 0; } } else { QT_WA( { mutex = OpenMutexW(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, (TCHAR*)mname.utf16()); }, { mutex = OpenMutexA(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, mname.toLocal8Bit().constData()); } ); if (!mutex) { if (GetLastError() != ERROR_FILE_NOT_FOUND) qErrnoWarning("QtLockedFile::lock(): OpenMutex failed"); return 0; } } return mutex; } bool QtLockedFile::waitMutex(Qt::HANDLE mutex, bool doBlock) { Q_ASSERT(mutex); DWORD res = WaitForSingleObject(mutex, doBlock ? INFINITE : 0); switch (res) { case WAIT_OBJECT_0: case WAIT_ABANDONED: return true; break; case WAIT_TIMEOUT: break; default: qErrnoWarning("QtLockedFile::lock(): WaitForSingleObject failed"); } return false; } bool QtLockedFile::lock(LockMode mode, bool block) { if (!isOpen()) { qWarning("QtLockedFile::lock(): file is not opened"); return false; } if (mode == NoLock) return unlock(); if (mode == m_lock_mode) return true; if (m_lock_mode != NoLock) unlock(); if (!wmutex && !(wmutex = getMutexHandle(-1, true))) return false; if (!waitMutex(wmutex, block)) return false; if (mode == ReadLock) { int idx = 0; for (; idx < MAX_READERS; idx++) { rmutex = getMutexHandle(idx, false); if (!rmutex || waitMutex(rmutex, false)) break; CloseHandle(rmutex); } bool ok = true; if (idx >= MAX_READERS) { qWarning("QtLockedFile::lock(): too many readers"); rmutex = 0; ok = false; } else if (!rmutex) { rmutex = getMutexHandle(idx, true); if (!rmutex || !waitMutex(rmutex, false)) ok = false; } if (!ok && rmutex) { CloseHandle(rmutex); rmutex = 0; } ReleaseMutex(wmutex); if (!ok) return false; } else { Q_ASSERT(rmutexes.isEmpty()); for (int i = 0; i < MAX_READERS; i++) { Qt::HANDLE mutex = getMutexHandle(i, false); if (mutex) rmutexes.append(mutex); } if (rmutexes.size()) { DWORD res = WaitForMultipleObjects(rmutexes.size(), rmutexes.constData(), TRUE, block ? INFINITE : 0); if (res != WAIT_OBJECT_0 && res != WAIT_ABANDONED) { if (res != WAIT_TIMEOUT) qErrnoWarning("QtLockedFile::lock(): WaitForMultipleObjects failed"); m_lock_mode = WriteLock; // trick unlock() to clean up - semiyucky unlock(); return false; } } } m_lock_mode = mode; return true; } bool QtLockedFile::unlock() { if (!isOpen()) { qWarning("QtLockedFile::unlock(): file is not opened"); return false; } if (!isLocked()) return true; if (m_lock_mode == ReadLock) { ReleaseMutex(rmutex); CloseHandle(rmutex); rmutex = 0; } else { foreach(Qt::HANDLE mutex, rmutexes) { ReleaseMutex(mutex); CloseHandle(mutex); } rmutexes.clear(); ReleaseMutex(wmutex); } m_lock_mode = QtLockedFile::NoLock; return true; } QtLockedFile::~QtLockedFile() { if (isOpen()) unlock(); if (wmutex) CloseHandle(wmutex); } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.cpp000066400000000000000000000267671177067165300321010ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qtsingleapplication.h" #include "qtlocalpeer.h" #include /*! \class QtSingleApplication qtsingleapplication.h \brief The QtSingleApplication class provides an API to detect and communicate with running instances of an application. This class allows you to create applications where only one instance should be running at a time. I.e., if the user tries to launch another instance, the already running instance will be activated instead. Another usecase is a client-server system, where the first started instance will assume the role of server, and the later instances will act as clients of that server. By default, the full path of the executable file is used to determine whether two processes are instances of the same application. You can also provide an explicit identifier string that will be compared instead. The application should create the QtSingleApplication object early in the startup phase, and call isRunning() or sendMessage() to find out if another instance of this application is already running. Startup parameters (e.g. the name of the file the user wanted this new instance to open) can be passed to the running instance in the sendMessage() function. If isRunning() or sendMessage() returns false, it means that no other instance is running, and this instance has assumed the role as the running instance. The application should continue with the initialization of the application user interface before entering the event loop with exec(), as normal. The messageReceived() signal will be emitted when the application receives messages from another instance of the same application. If isRunning() or sendMessage() returns true, another instance is already running, and the application should terminate or enter client mode. If a message is received it might be helpful to the user to raise the application so that it becomes visible. To facilitate this, QtSingleApplication provides the setActivationWindow() function and the activateWindow() slot. Here's an example that shows how to convert an existing application to use QtSingleApplication. It is very simple and does not make use of all QtSingleApplication's functionality (see the examples for that). \code // Original int main(int argc, char **argv) { QApplication app(argc, argv); MyMainWidget mmw; mmw.show(); return app.exec(); } // Single instance int main(int argc, char **argv) { QtSingleApplication app(argc, argv); if (app.isRunning()) return 0; MyMainWidget mmw; app.setActivationWindow(&mmw); mmw.show(); return app.exec(); } \endcode Once this QtSingleApplication instance is destroyed(for example, when the user quits), when the user next attempts to run the application this instance will not, of course, be encountered. The next instance to call isRunning() or sendMessage() will assume the role as the new running instance. For console (non-GUI) applications, QtSingleCoreApplication may be used instead of this class, to avoid the dependency on the QtGui library. \sa QtSingleCoreApplication */ void QtSingleApplication::sysInit(const QString &appId) { actWin = 0; peer = new QtLocalPeer(this, appId); connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); } /*! Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). \a argc, \a argv, and \a GUIenabled are passed on to the QAppliation constructor. If you are creating a console application (i.e. setting \a GUIenabled to false), you may consider using QtSingleCoreApplication instead. */ QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled) : QApplication(argc, argv, GUIenabled) { sysInit(); } /*! Creates a QtSingleApplication object with the application identifier \a appId. \a argc and \a argv are passed on to the QAppliation constructor. */ QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv) : QApplication(argc, argv) { sysInit(appId); } /*! Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). \a argc, \a argv, and \a type are passed on to the QAppliation constructor. */ QtSingleApplication::QtSingleApplication(int &argc, char **argv, Type type) : QApplication(argc, argv, type) { sysInit(); } #if defined(Q_WS_X11) /*! Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). \a dpy, \a visual, and \a cmap are passed on to the QApplication constructor. */ QtSingleApplication::QtSingleApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE cmap) : QApplication(dpy, visual, cmap) { sysInit(); } /*! Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). \a dpy, \a argc, \a argv, \a visual, and \a cmap are passed on to the QApplication constructor. */ QtSingleApplication::QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) : QApplication(dpy, argc, argv, visual, cmap) { sysInit(); } /*! Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be \a appId. \a dpy, \a argc, \a argv, \a visual, and \a cmap are passed on to the QApplication constructor. */ QtSingleApplication::QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) : QApplication(dpy, argc, argv, visual, cmap) { sysInit(appId); } #endif /*! Returns true if another instance of this application is running; otherwise false. This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session). \sa sendMessage() */ bool QtSingleApplication::isRunning() { return peer->isClient(); } /*! Tries to send the text \a message to the currently running instance. The QtSingleApplication object in the running instance will emit the messageReceived() signal when it receives the message. This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within \a timeout milliseconds, this function return false. \sa isRunning(), messageReceived() */ bool QtSingleApplication::sendMessage(const QString &message, int timeout) { return peer->sendMessage(message, timeout); } /*! Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application. */ QString QtSingleApplication::id() const { return peer->applicationId(); } /*! Sets the activation window of this application to \a aw. The activation window is the widget that will be activated by activateWindow(). This is typically the application's main window. If \a activateOnMessage is true (the default), the window will be activated automatically every time a message is received, just prior to the messageReceived() signal being emitted. \sa activateWindow(), messageReceived() */ void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage) { actWin = aw; if (activateOnMessage) connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); else disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); } /*! Returns the applications activation window if one has been set by calling setActivationWindow(), otherwise returns 0. \sa setActivationWindow() */ QWidget* QtSingleApplication::activationWindow() const { return actWin; } /*! De-minimizes, raises, and activates this application's activation window. This function does nothing if no activation window has been set. This is a convenience function to show the user that this application instance has been activated when he has tried to start another instance. This function should typically be called in response to the messageReceived() signal. By default, that will happen automatically, if an activation window has been set. \sa setActivationWindow(), messageReceived(), initialize() */ void QtSingleApplication::activateWindow() { if (actWin) { qDebug() << "QtSingleApplication::activateWindow"; actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized); actWin->raise(); actWin->activateWindow(); } } /*! \fn void QtSingleApplication::messageReceived(const QString& message) This signal is emitted when the current instance receives a \a message from another instance of this application. \sa sendMessage(), setActivationWindow(), activateWindow() */ /*! \fn void QtSingleApplication::initialize(bool dummy = true) \obsolete */ merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.h000066400000000000000000000077521177067165300315370ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include class QtLocalPeer; #if defined(Q_WS_WIN) # if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT) # define QT_QTSINGLEAPPLICATION_EXPORT # elif defined(QT_QTSINGLEAPPLICATION_IMPORT) # if defined(QT_QTSINGLEAPPLICATION_EXPORT) # undef QT_QTSINGLEAPPLICATION_EXPORT # endif # define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllimport) # elif defined(QT_QTSINGLEAPPLICATION_EXPORT) # undef QT_QTSINGLEAPPLICATION_EXPORT # define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllexport) # endif #else # define QT_QTSINGLEAPPLICATION_EXPORT #endif class QT_QTSINGLEAPPLICATION_EXPORT QtSingleApplication : public QApplication { Q_OBJECT public: QtSingleApplication(int &argc, char **argv, bool GUIenabled = true); QtSingleApplication(const QString &id, int &argc, char **argv); QtSingleApplication(int &argc, char **argv, Type type); #if defined(Q_WS_X11) QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0); QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); #endif bool isRunning(); QString id() const; void setActivationWindow(QWidget* aw, bool activateOnMessage = true); QWidget* activationWindow() const; // Obsolete: void initialize(bool dummy = true) { isRunning(); Q_UNUSED(dummy) } public Q_SLOTS: bool sendMessage(const QString &message, int timeout = 5000); void activateWindow(); Q_SIGNALS: void messageReceived(const QString &message); private: void sysInit(const QString &appId = QString()); QtLocalPeer *peer; QWidget *actWin; }; merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.pri000066400000000000000000000010301177067165300320610ustar00rootroot00000000000000include(../common.pri) INCLUDEPATH += $$PWD DEPENDPATH += $$PWD QT *= network qtsingleapplication-uselib:!qtsingleapplication-buildlib { LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME } else { SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h } win32 { contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT } merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.cpp000066400000000000000000000127511177067165300327360ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qtsinglecoreapplication.h" #include "qtlocalpeer.h" /*! \class QtSingleCoreApplication qtsinglecoreapplication.h \brief A variant of the QtSingleApplication class for non-GUI applications. This class is a variant of QtSingleApplication suited for use in console (non-GUI) applications. It is an extension of QCoreApplication (instead of QApplication). It does not require the QtGui library. The API and usage is identical to QtSingleApplication, except that functions relating to the "activation window" are not present, for obvious reasons. Please refer to the QtSingleApplication documentation for explanation of the usage. A QtSingleCoreApplication instance can communicate to a QtSingleApplication instance if they share the same application id. Hence, this class can be used to create a light-weight command-line tool that sends commands to a GUI application. \sa QtSingleApplication */ /*! Creates a QtSingleCoreApplication object. The application identifier will be QCoreApplication::applicationFilePath(). \a argc and \a argv are passed on to the QCoreAppliation constructor. */ QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv) : QCoreApplication(argc, argv) { peer = new QtLocalPeer(this); connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); } /*! Creates a QtSingleCoreApplication object with the application identifier \a appId. \a argc and \a argv are passed on to the QCoreAppliation constructor. */ QtSingleCoreApplication::QtSingleCoreApplication(const QString &appId, int &argc, char **argv) : QCoreApplication(argc, argv) { peer = new QtLocalPeer(this, appId); connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); } /*! Returns true if another instance of this application is running; otherwise false. This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session). \sa sendMessage() */ bool QtSingleCoreApplication::isRunning() { return peer->isClient(); } /*! Tries to send the text \a message to the currently running instance. The QtSingleCoreApplication object in the running instance will emit the messageReceived() signal when it receives the message. This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within \a timeout milliseconds, this function return false. \sa isRunning(), messageReceived() */ bool QtSingleCoreApplication::sendMessage(const QString &message, int timeout) { return peer->sendMessage(message, timeout); } /*! Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application. */ QString QtSingleCoreApplication::id() const { return peer->applicationId(); } /*! \fn void QtSingleCoreApplication::messageReceived(const QString& message) This signal is emitted when the current instance receives a \a message from another instance of this application. \sa sendMessage() */ merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.h000066400000000000000000000052571177067165300324060ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include class QtLocalPeer; class QtSingleCoreApplication : public QCoreApplication { Q_OBJECT public: QtSingleCoreApplication(int &argc, char **argv); QtSingleCoreApplication(const QString &id, int &argc, char **argv); bool isRunning(); QString id() const; public Q_SLOTS: bool sendMessage(const QString &message, int timeout = 5000); Q_SIGNALS: void messageReceived(const QString &message); private: QtLocalPeer* peer; }; merkaartor-0.18.1/3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsinglecoreapplication.pri000066400000000000000000000005041177067165300327370ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp QT *= network win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT=__declspec(dllexport) } merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/000077500000000000000000000000001177067165300236235ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/INSTALL.TXT000066400000000000000000000223741177067165300253420ustar00rootroot00000000000000INSTALLATION INSTRUCTIONS These instructions refer to the package you are installing as some-package.tar.gz or some-package.zip. The .zip file is intended for use on Windows. The directory you choose for the installation will be referred to as your-install-dir. Note to Qt Visual Studio Integration users: In the instructions below, instead of building from command line with nmake, you can use the menu command 'Qt->Open Solution from .pro file' on the .pro files in the example and plugin directories, and then build from within Visual Studio. Unpacking and installation -------------------------- 1. Unpacking the archive (if you have not done so already). On Unix and Mac OS X (in a terminal window): cd your-install-dir gunzip some-package.tar.gz tar xvf some-package.tar This creates the subdirectory some-package containing the files. On Windows: Unpack the .zip archive by right-clicking it in explorer and choosing "Extract All...". If your version of Windows does not have zip support, you can use the infozip tools available from www.info-zip.org. If you are using the infozip tools (in a command prompt window): cd your-install-dir unzip some-package.zip 2. Configuring the package. The configure script is called "configure" on unix/mac and "configure.bat" on Windows. It should be run from a command line after cd'ing to the package directory. You can choose whether you want to use the component by including its source code directly into your project, or build the component as a dynamic shared library (DLL) that is loaded into the application at run-time. The latter may be preferable for technical or licensing (LGPL) reasons. If you want to build a DLL, run the configure script with the argument "-library". Also see the note about usage below. (Components that are Qt plugins, e.g. styles and image formats, are by default built as a plugin DLL.) The configure script will prompt you in some cases for further information. Answer these questions and carefully read the license text before accepting the license conditions. The package cannot be used if you do not accept the license conditions. 3. Building the component and examples (when required). If a DLL is to be built, or if you would like to build the examples, next give the commands qmake make [or nmake if your are using Microsoft Visual C++] The example program(s) can be found in the directory called "examples" or "example". Components that are Qt plugins, e.g. styles and image formats, are ready to be used as soon as they are built, so the rest of this installation instruction can be skipped. 4. Building the Qt Designer plugin (optional). Some of the widget components are provided with plugins for Qt Designer. To build and install the plugin, cd into the some-package/plugin directory and give the commands qmake make [or nmake if your are using Microsoft Visual C++] Restart Qt Designer to make it load the new widget plugin. Note: If you are using the built-in Qt Designer from the Qt Visual Studio Integration, you will need to manually copy the plugin DLL file, i.e. copy %QTDIR%\plugins\designer\some-component.dll to the Qt Visual Studio Integration plugin path, typically: C:\Program Files\Trolltech\Qt VS Integration\plugins Note: If you for some reason are using a Qt Designer that is built in debug mode, you will need to build the plugin in debug mode also. Edit the file plugin.pro in the plugin directory, changing 'release' to 'debug' in the CONFIG line, before running qmake. Solutions components are intended to be used directly from the package directory during development, so there is no 'make install' procedure. Using a component in your project --------------------------------- To use this component in your project, add the following line to the project's .pro file (or do the equivalent in your IDE): include(your-install-dir/some-package/src/some-package.pri) This adds the package's sources and headers to the SOURCES and HEADERS project variables respectively (or, if the component has been configured as a DLL, it adds that library to the LIBS variable), and updates INCLUDEPATH to contain the package's src directory. Additionally, the .pri file may include some dependencies needed by the package. To include a header file from the package in your sources, you can now simply use: #include or alternatively, in pre-Qt 4 style: #include Refer to the documentation to see the classes and headers this components provides. Install documentation (optional) -------------------------------- The HTML documentation for the package's classes is located in the your-install-dir/some-package/doc/html/index.html. You can open this file and read the documentation with any web browser. To install the documentation into Qt Assistant (for Qt version 4.4 and later): 1. In Assistant, open the Edit->Preferences dialog and choose the Documentation tab. Click the Add... button and select the file your-install-dir/some-package/doc/html/some-package.qch For Qt versions prior to 4.4, do instead the following: 1. The directory your-install-dir/some-package/doc/html contains a file called some-package.dcf. Execute the following commands in a shell, command prompt or terminal window: cd your-install-dir/some-package/doc/html/ assistant -addContentFile some-package.dcf The next time you start Qt Assistant, you can access the package's documentation. Removing the documentation from assistant ----------------------------------------- If you have installed the documentation into Qt Assistant, and want to uninstall it, do as follows, for Qt version 4.4 and later: 1. In Assistant, open the Edit->Preferences dialog and choose the Documentation tab. In the list of Registered Documentation, select the item com.nokia.qtsolutions.some-package_version, and click the Remove button. For Qt versions prior to 4.4, do instead the following: 1. The directory your-install-dir/some-package/doc/html contains a file called some-package.dcf. Execute the following commands in a shell, command prompt or terminal window: cd your-install-dir/some-package/doc/html/ assistant -removeContentFile some-package.dcf Using the component as a DLL ---------------------------- 1. Normal components The shared library (DLL) is built and placed in the some-package/lib directory. It is intended to be used directly from there during development. When appropriate, both debug and release versions are built, since the run-time linker will in some cases refuse to load a debug-built DLL into a release-built application or vice versa. The following steps are taken by default to help the dynamic linker to locate the DLL at run-time (during development): Unix: The some-package.pri file will add linker instructions to add the some-package/lib directory to the rpath of the executable. (When distributing, or if your system does not support rpath, you can copy the shared library to another place that is searched by the dynamic linker, e.g. the "lib" directory of your Qt installation.) Mac: The full path to the library is hardcoded into the library itself, from where it is copied into the executable at link time, and ready by the dynamic linker at run-time. (When distributing, you will want to edit these hardcoded paths in the same way as for the Qt DLLs. Refer to the document "Deploying an Application on Mac OS X" in the Qt Reference Documentation.) Windows: the .dll file(s) are copied into the "bin" directory of your Qt installation. The Qt installation will already have set up that directory to be searched by the dynamic linker. 2. Plugins For Qt Solutions plugins (e.g. image formats), both debug and release versions of the plugin are built by default when appropriate, since in some cases the release Qt library will not load a debug plugin, and vice versa. The plugins are automatically copied into the plugins directory of your Qt installation when built, so no further setup is required. Plugins may also be built statically, i.e. as a library that will be linked into your application executable, and so will not need to be redistributed as a separate plugin DLL to end users. Static building is required if Qt itself is built statically. To do it, just add "static" to the CONFIG variable in the plugin/plugin.pro file before building. Refer to the "Static Plugins" section in the chapter "How to Create Qt Plugins" for explanation of how to use a static plugin in your application. The source code of the example program(s) will also typically contain the relevant instructions as comments. Uninstalling ------------ The following command will remove any fils that have been automatically placed outside the package directory itself during installation and building make distclean [or nmake if your are using Microsoft Visual C++] If Qt Assistant documentation or Qt Designer plugins have been installed, they can be uninstalled manually, ref. above. Enjoy! :) - The Qt Solutions Team. merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/LGPL_EXCEPTION.txt000066400000000000000000000021661177067165300265450ustar00rootroot00000000000000Nokia Qt LGPL Exception version 1.1 As an additional permission to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that: (i) the header files of the Library have not been modified; and (ii) the incorporated material is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates; and (iii) you comply with the terms of Section 6 of the GNU Lesser General Public License version 2.1. Moreover, you may apply this exception to a modified version of the Library, provided that such modification does not involve copying material from the Library into the modified Library?s header files unless such material is limited to (i) numerical parameters; (ii) data structure layouts; (iii) accessors; and (iv) small macros, templates and inline functions of five lines or less in length. Furthermore, you are not required to apply this additional permission to a modified version of the Library. merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.GPL3000066400000000000000000001045131177067165300253400ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/LICENSE.LGPL000066400000000000000000000635041177067165300253750ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/README.TXT000066400000000000000000000001461177067165300251620ustar00rootroot00000000000000Toolbar Dialog v2.2 The Toolbar Dialog component provides customizing functionality for toolbars. merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/buildlib/000077500000000000000000000000001177067165300254115ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/buildlib/buildlib.pro000066400000000000000000000006751177067165300277310ustar00rootroot00000000000000TEMPLATE=lib CONFIG += qt dll qttoolbardialog-buildlib mac:CONFIG += absolute_library_soname win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all include(../src/qttoolbardialog.pri) TARGET = $$QTTOOLBARDIALOG_LIBNAME DESTDIR = $$QTTOOLBARDIALOG_LIBDIR win32 { DLLDESTDIR = $$[QT_INSTALL_BINS] QMAKE_DISTCLEAN += $$[QT_INSTALL_BINS]\\$${QTTOOLBARDIALOG_LIBNAME}.dll } target.path = $$DESTDIR INSTALLS += target merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/common.pri000066400000000000000000000005041177067165300256260ustar00rootroot00000000000000infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qttoolbardialog-uselib TEMPLATE += fakelib QTTOOLBARDIALOG_LIBNAME = $$qtLibraryTarget(QtSolutions_ToolbarDialog-2.2) TEMPLATE -= fakelib QTTOOLBARDIALOG_LIBDIR = $$PWD/lib unix:qttoolbardialog-uselib:!qttoolbardialog-buildlib:QMAKE_RPATHDIR += $$QTTOOLBARDIALOG_LIBDIR merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/config.pri000066400000000000000000000000001177067165300255720ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/configure000077500000000000000000000063221177067165300255350ustar00rootroot00000000000000#!/bin/sh if [ "x$1" != "x" -a "x$1" != "x-library" ]; then echo "Usage: $0 [-library]" echo echo "-library: Build the component as a dynamic library (DLL). Default is to" echo " include the component source code directly in the application." echo " A DLL may be preferable for technical or licensing (LGPL) reasons." echo exit 0 fi # only ask to accept the license text once if [ ! -f .licenseAccepted ]; then # determine if opensource or commercial package if [ -f LICENSE.LGPL ]; then # opensource edition while true; do echo echo "You are licensed to use this software under the terms of" echo "the GNU General Public License (GPL) version 3, or" echo "the GNU Lesser General Public License (LGPL) version 2.1" echo "with certain additional extra rights as specified in the" echo "Nokia Qt LGPL Exception version 1.1." echo echo "Type 'G' to view the GNU General Public License (GPL) version 3." echo "Type 'L' to view the GNU Lesser General Public License (LGPL) version 2.1." echo "Type 'E' to view the Nokia Qt LGPL Exception version 1.1." echo "Type 'yes' to accept this license offer." echo "Type 'no' to decline this license offer." echo echo "Do you accept the terms of this license? " read answer echo if [ "x$answer" = "xno" ]; then echo "You are not licensed to use this software." echo exit 1 elif [ "x$answer" = "xyes" ]; then echo license accepted > .licenseAccepted break elif [ "x$answer" = "xe" -o "x$answer" = "xE" ]; then more LGPL_EXCEPTION.txt elif [ "x$answer" = "xl" -o "x$answer" = "xL" ]; then more LICENSE.LGPL elif [ "x$answer" = "xg" -o "x$answer" = "xG" ]; then more LICENSE.GPL3 fi done else while true; do echo echo "Please choose your region." echo echo "Type 1 for North or South America." echo "Type 2 for anywhere outside North and South America." echo echo "Select: " read region if [ "x$region" = "x1" ]; then licenseFile=LICENSE.US break; elif [ "x$region" = "x2" ]; then licenseFile=LICENSE.NO break; fi done while true; do echo echo "License Agreement" echo echo "Type '?' to view the Qt Solutions Commercial License." echo "Type 'yes' to accept this license offer." echo "Type 'no' to decline this license offer." echo echo "Do you accept the terms of this license? " read answer echo if [ "x$answer" = "xno" ]; then echo "You are not licensed to use this software." echo exit 1 elif [ "x$answer" = "xyes" ]; then echo license accepted > .licenseAccepted cp "$licenseFile" LICENSE rm LICENSE.US rm LICENSE.NO break elif [ "x$answer" = "x?" ]; then more "$licenseFile" fi done fi fi rm -f config.pri if [ "x$1" = "x-library" ]; then echo "Configuring to build this component as a dynamic library." echo "SOLUTIONS_LIBRARY = yes" > config.pri fi echo echo "This component is now configured." echo echo "To build the component library (if requested) and example(s)," echo "run qmake and your make command." echo echo "To remove or reconfigure, run make distclean." echo merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/000077500000000000000000000000001177067165300243705ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/000077500000000000000000000000001177067165300253345ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/classic.css000066400000000000000000000026501177067165300274720ustar00rootroot00000000000000h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; } a:link { color: #004faf; text-decoration: none } a:visited { color: #672967; text-decoration: none } a.obsolete { color: #661100; text-decoration: none } a.compat { color: #661100; text-decoration: none } a.obsolete:visited { color: #995500; text-decoration: none } a.compat:visited { color: #995500; text-decoration: none } td.postheader { font-family: sans-serif } tr.address { font-family: sans-serif } body { background: #ffffff; color: black } table tr.odd { background: #f0f0f0; color: black; } table tr.even { background: #e4e4e4; color: black; } table.annotated th { padding: 3px; text-align: left } table.annotated td { padding: 3px; } table tr pre { padding-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; border: none; background: none } tr.qt-style { background: #96E066; color: black } body pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black } table tr.qt-code pre { padding: 0.2em; border: #e7e7e7 1px solid; background: #f1f1f1; color: black } span.preprocessor, span.preprocessor a { color: darkblue; } span.comment { color: darkred; font-style: italic } span.string,span.char { color: darkgreen; } .title { text-align: center } .subtitle { font-size: 0.8em } .small-subtitle { font-size: 0.65em } merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/images/000077500000000000000000000000001177067165300266015ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/images/qt-logo.png000066400000000000000000000077531177067165300307050ustar00rootroot00000000000000PNG  IHDR9C:uIDATxb?bhJnJnJnJnJnJnԡ Є`r'Q( !!Nb_p??F&F312G.yG&ޏ?}eWSSgb( ~™t齸g0sVv`fcdY8E$xdUUex$xd9DDr=#gdd|Uףw9D- 2b8Ͽebddceᔐ╗SWScaB#cfd]-I\ _20110`xzw/).#'˯"ǯ*˫,+')@lY@}fۯͼ 2@d$1H')&#'ç,ϯ*˧,#/%́XgfdOX8Y9s2GC3g@ fFff.3O|v ,l%?fR_|bb`y엉3+ԇ,̌,4 "ͭ32>{E4އ ˯NԦ+Qefdϛ?6:&Ǜ?|"=\n$FFfF /0"`ddf cfbb`dx՛o yAP ,,eebWaá,QܬLL>5Lll10 m00wTVxOÚ bGB8GtUմXplII ׶R/@2 Y{ ]d9#ule+}N6XfJ"խJ13002³ @K"ŭzo?1000@{ lϿ`?ï2"ecgd H.fFfɆ}Ͽߌ"٭윌 y02000Ac<\po/."?;#ߛ!hgddd\<|\300<|?j"-U L9D8E i[ZP?z5fF6? o"b')~?3311g/ ֯cz߿>pvfL~g'""٭Qd'i `Ϳ'?HۅǞy?200 %)h1.7?."ͭ 32yVfFfGyO/:?LL [,?/?^}|:`luX-tN X"_CkǶ>w:7WlSofFcOv{OD7톚)*$@d"7$1CRgɉi[!.f&v_#ɧ{='JXXc`agպ]R\̅?ӧ_ᄏvѦ_2"g|fە(m )\!&&&F{ ba~>qci.O?l-"s܅Ǐ<Ϟn%hm)tN6P߿0H~̌,|ןhmF>1:19_/رcc7k䱞]ۯ咒SaB[?|}kf~?ɍkF/>9*qpQ( @##ïe1| QXn_ #ơp7B]X?F[a'K+ q/̌,,L L 7tDʡz /#300VnC")"/?110qp￿l_GVWNOU_UIPSCؐ?\e``=_R(2r-d?ÿ_?+78$$ +:xBVFn^?cbdd@yĂf```aba㔆L)J sI2Ҥ!#3 > ^y^~o (?+33d:.cfL(H*sJ`Mg222ڥž15,l l"<cn#?37ap?'7Ԧ??g|fnx֖z?K<{}w?g%u__ve1Ͽza׽!~Qy>}M߿o|-Iή'xSz/~? YgC[f# ;8/ؘƌ7MO6g~9-Ymlkros"E.y_p/v_얿ؽKb¥Ğ_yk2e;(^]5O׾%+|KW,دl%Uo* pt\C\8zqa{6lq uHYSDmLw qLVmMxMy|sԅ8ŕ8Ս8=q`#3SE,AMC,K~`'q.̮]ݻ{sBćB'=A\4Y4Y<YrC\z$hTQn|(|8Z2C\q,88j_=W=g4~X|XqDqqxRɤ† kr)!`1{׃s㖞߶7o?x֎_mݸQ^KG{mkI!`f0W2(KXXXX߶l}/֑6ַkZpX+[&^0 C6!t2]:0[],)n|tc{wak.QY7޷1`rrZmZO#kZ`HFs|uI5BڗlF>?4T]u3l-dG&Đ?>35OGC4[m}T:ZO0:j[)eeHH9_뚪\ ["#KbH"&'.d'RH KUUT[[X-jbWЄjQ^jf`{N CIXlCshNwʘŐj|̶TL鵵bHg֫PƤ .c~).lzRBZmkiPFz޶!Z+ NCUZ5-E&'kc5Pf֢5VSj6_GR ZE'kcպ90Cxϔ0fbQ]nV)Z`fcY{sk! 0 0 C0 C0 C0lrlTZ=~-IO01lOenlYV?W|5`8M !hj2g}zׇOIg y?'" H"[4!iV;;iKgG|GOlHqa%ȓ}ER$C`C#9x;V 爷z&&S^]]M0DZTs8Rs C0drKD|ZeSG ?5 sW,VdKuAAvڥCTRMm~HPOԤ!!c!_WAzA=xMdDR+qyȃ _YYYV=i(Hq ! C=!!!`5 uvvq!@jii3ֻ..1 `i(99anv/3`̝lq#8?0eG]tFC L/f79&佻SuQUUDHAjHB<0! !~-B}J(hy''Z_C4yq۫e~ΎCl|SN G2bƘ>!`B-X07fVp>UZͼ C0dH?@o}'<&n;C$<1Y `$%U~S۠7n;vɶOErkeZivu CҐ DY%8zG'@V;lsN "RCp@v40C(W,sO<742,*>aŖ !2APVs|QS1 5GFǨV3yW !鐆 `!`B!B!i `i LCYs  `8a@!2f!4Z4S4Kp0C}Q,Ҭ3!2S!!`!`CrTQC0 ` `%0A AK`!!YX?CCd~ iV` `Cj2 A41J! ! l!sc k A!`E AC0C0Aֆ!B YQnnn---8r / eeeUTT :t!3!.{\Ç^* `i`䗾>R@;p+&&Fse&Hh AqK {l\umcKkGTTV q60COC.O:/?}A>q~r!!`̔N]8+?qF>~vd C>,F(EZW!իV c3aH3"C4G"OLz|4j;1"`xuCGF<"$ǐZ=.G!}1?I˧!Iw {g3 ͖OC#GGG}C#1D_E CbȀ4tpdAA2 9ܸǏ#C00d4t}Tk(C004% t!BC t!4tE :?``2i\?L,T\Tׄ_ o-8Z^`_jjbA ]rƽ>̀o1@MC YEEEIji\Μ ``J0 Ç#Y ʚzgGt$Z7L6ZҺ4jh>\Z?_kF;HUÅ]"qSAcs^&0H I `Hm tUhgyK>굃 !n΢փU"@5t T_; R&41h6!.bU! Nd/G$olVŽ:j_qj{#Rse2N i-iNJsVDbZo C %Ӑ$eJGOOe3sFK<`XUw|徨(.MaVN!F/?!HPHl|Yxi`y.^NDr) Cr9EegTsihJE-!3c[7wogQA*xaGG*/ u C& CoEI͊Rر1Y~^\|~UCq!NmoDjL&Ӊ!Э4Ù4B04-~!IYkz'{Dܶ;OD9V_/*Ks:̩uv4Ģ^n=I3ֻn r&ű2I\RoXr"hdqSlm_`ډ187 A'%:Fr#"E{G. FbwJZHK"p0 QKb ǐ(9>"ԟa }j?Dr ,muHTwx8 ,[(i!22wZVE}1`?d~}m.uuuW^egLBݥ!ha(.6f۬+:vx: Ї~hsB^@,LSE$?ްiY g>N>G~:eĞ3w^31m Ykyq5Az穪!!v0D‹_w{ȝs0sۅvf{İb][qu0kT*š!-#A3}3gۋawų_~ǽr*B0Dy>p#~uO-lpw$ۗf؁qDwXd `BL!rSncwFv0OdsiLD'K_ fXq,N"+:Kab2BdMh`h0.8!Zڪ_كڴٙՕݝYHāL ܦ5$"c~N[YϿz^y!xd<{2taZٻ0p@,H J*AiH#HN#KC29çC|(7+y3̹S]Q_SYLP[y9*H10ǀ!4EOtholsIJļd_2Rq<\.ߟ LO0dx鎡 aЊ+0DylzC9]2; ֬YL .Cd*:tb{ >R Hp!2 v Ӄ|ǐN~a”4A(Cbf'IR  Ő[QC~bR!!` `!`ȜjA!ҽ< AֻTŪMbhOE{<~C0 / Q Hg!A;D;wx㣻;r3wDEѐ̊!uCm`H;Vmzۤ׸p }h[/me=e H CҐa(lN-!lѮQ/7o hC%1$GchٮalvsgO3 }lC-eLaoA0 C0w泽KV^k`2`DZ>0O g}%Y %w5+!`ư/|Z尞Ƒq++,Z$ȸeQ!aPf x}s_&CEsg}5kΜD `Bي*KP9i=Ǣ9!4 !!`Ȅ B%C!;[f0'i!KFs[0d4d'|d!N04 CҫF`i|0fZ׎ 鑆h0Z+@"!l0 bp4D5d=iHVd4 A6 !`B Igj 4{pB" D&IC}6qҋ={{H CHC`1WҮq3ysEYNH!i`(* ?J=:cw3 ,4n4?7@^q3fU~HM2]v"ɤi$%b)T;7c"HZ!;}cINCA}NjL?)G鰔{Zw; nlዤh A E;ǐPJR{~0Ztw\#>^1iL" DNCywpK'tt-a79AHCӐe{_D22R=poLrӮޚxJ/kC!`h! h^w ?!  heZ Cֈ!HCrsCJ0dd8v|m[ lǎCF80 Cq80 jĎC0!`W#v܆1D3nun`H롡Wb7ÎZCQ~FsF;n Є0CfƐa;eBҁ!ՋAm"`(2C,hcxh) QK(kͱ׹O ќ Lb4w0O4KCZBS P [3Ae__4$CYEo cȰd`2_0dء?1bA"wŐtVQk-|1`ȈLG"k*j,nHg̖ъ1^%!!C0 aǁ!`Ո!\qz0dۿd8v|JAfv{MC Q[a`!!!F```!!a`a`aaa6# ,-kAEzaIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/index.html000066400000000000000000000034471177067165300273410ustar00rootroot00000000000000 Toolbar Dialog
  Home

Toolbar Dialog

Description

The Toolbar Dialog component provides customizing functionality for toolbars.

Classes

Tested platforms

  • Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005
  • Qt 4.4, 4.5 / Linux / gcc
  • Qt 4.4, 4.5 / MacOS X 10.5 / gcc

Screenshots


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog-members.html000066400000000000000000001275331177067165300330540ustar00rootroot00000000000000 List of All Members for QtToolBarDialog
  Home

List of All Members for QtToolBarDialog

This is the complete list of members for QtToolBarDialog, including inherited members.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.dcf000066400000000000000000000033231177067165300312020ustar00rootroot00000000000000
QtToolBarDialog setToolBarManager
QtToolBarManager addAction addToolBar mainWindow removeAction removeToolBar restoreState saveState setMainWindow toolBars
Toolbar Dialog
merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.html000066400000000000000000000175211177067165300314170ustar00rootroot00000000000000 QtToolBarDialog Class Reference
  Home

QtToolBarDialog Class Reference

The QtToolBarDialog class provides a dialog for customizing toolbars. More...

 #include <QtToolBarDialog>

Inherits QDialog.

Public Functions

  • 5 public functions inherited from QDialog
  • 207 public functions inherited from QWidget
  • 12 public functions inherited from QPaintDevice
  • 29 public functions inherited from QObject

Additional Inherited Members

  • 2 properties inherited from QDialog
  • 57 properties inherited from QWidget
  • 1 property inherited from QObject
  • 5 public slots inherited from QDialog
  • 19 public slots inherited from QWidget
  • 1 public slot inherited from QObject
  • 3 signals inherited from QDialog
  • 1 signal inherited from QWidget
  • 1 signal inherited from QObject
  • 1 public type inherited from QObject
  • 4 static public members inherited from QWidget
  • 4 static public members inherited from QObject
  • 37 protected functions inherited from QWidget
  • 1 protected function inherited from QPaintDevice
  • 7 protected functions inherited from QObject
  • 1 protected slot inherited from QWidget
  • 1 protected type inherited from QPaintDevice
  • 2 protected variables inherited from QObject

Detailed Description

The QtToolBarDialog class provides a dialog for customizing toolbars.

QtToolBarDialog allows the user to customize the toolbars for a given main window.

The dialog lets the users add, rename and remove custom toolbars. Note that built-in toolbars are marked with a green color, and cannot be removed or renamed.

The users can also add and remove actions from the toolbars. An action can be added to many toolbars, but a toolbar can only contain one instance of each action. Actions that contains a widget are marked with a blue color in the list of actions, and can only be added to one single toolbar.

Finally, the users can add separators to the toolbars.

The original toolbars can be restored by clicking the Restore all button. All custom toolbars will then be removed, and all built-in toolbars will be restored to their original state.

The QtToolBarDialog class's functionality is controlled by an instance of the QtToolBarManager class, and the main window is specified using the QtToolBarManager::setMainWindow() function.

All you need to do to use QtToolBarDialog is to specify an QtToolBarManager instance and call the QDialog::exec() slot:

 QtToolBarManager *toolBarManager;

 void MyMainWindow::customize()
     {
         QtToolBarDialog dialog(this);
         dialog.setToolBarManager(toolBarManager);
         dialog.exec();
     }

See also QtToolBarManager.


Member Function Documentation

QtToolBarDialog::QtToolBarDialog ( QWidget * parent = 0, Qt::WFlags flags = 0 )

Creates a toolbar dialog with the given parent and the specifed window flags.

QtToolBarDialog::~QtToolBarDialog ()

Destroys the toolbar dialog.

void QtToolBarDialog::setToolBarManager ( QtToolBarManager * toolBarManager )

Connects the toolbar dialog to the given toolBarManager. Then, when exec() is called, the toolbar dialog will operate using the given toolBarManager.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.index000066400000000000000000000167261177067165300315700ustar00rootroot00000000000000 merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.qch000066400000000000000000001420001177067165300312150ustar00rootroot00000000000000SQLite format 3@ )1  V1com.nokia.qtsolutions.qttoolbardialog_2.2 1solutions!Iqttoolbardialogqt ;}Qt Solutions: Toolbar Dialog -, qb5H!EE tableNamespaceTableNamespaceTableCREATE TABLE NamespaceTable (Id INTEGER PRIMARY KEY,Name TEXT )n!]]%tableFilterAttributeTableFilterAttributeTableCREATE TABLE FilterAttributeTable (Id INTEGER PRIMARY KEY, Name TEXT )P!IItableFilterNameTableFilterNameTableCREATE TABLE FilterNameTable (Id INTEGER PRIMARY KEY, Name TEXT )H!99!tableFilterTableFilterTableCREATE TABLE FilterTable (NameId INTEGER, FilterAttributeId INTEGER ) ((c$8!55 tableIndexTableIndexTableCREATE TABLE IndexTable (Id INTEGER PRIMARY KEY, Name TEXT, Identifier TEXT, NamespaceId INTEGER, FileId INTEGER, Anchor TEXT )>!EEutableIndexItemTableIndexItemTable CREATE TABLE IndexItemTable (Id INTEGER, IndexId INTEGER )h!MM9tableIndexFilterTableIndexFilterTable CREATE TABLE IndexFilterTable (FilterAttributeId INTEGER, IndexId INTEGER )n!AA]tableContentsTableContentsTable CREATE TABLE ContentsTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Data BLOB )  -{tmf_XQJC<5.'  -,+*)(' & % $ # " !                GG6lindex.htmlTQt Solutions: Toolbar Dialog Documentationindex.htmlToolbar Dialog  TTWV !YYQtableContentsFilterTableContentsFilterTable CREATE TABLE ContentsFilterTable (FilterAttributeId INTEGER, ContentsId INTEGER )| !aa9tableFileAttributeSetTableFileAttributeSetTableCREATE TABLE FileAttributeSetTable (Id INTEGER, FilterAttributeId INTEGER )D !AA tableFileDataTableFileDataTableCREATE TABLE FileDataTable (Id INTEGER PRIMARY KEY, Data BLOB )` !II1tableFileFilterTableFileFilterTableCREATE TABLE FileFilterTable (FilterAttributeId INTEGER, FileId INTEGER ) +'$!        [wBAU9images/qt-logo.pngqt-logo.png399classic.cssclassic.cssn] qttoolbardialog.htmlQtToolBarDialog Class Referencera qttoolbarmanager.htmlQtToolBarManager Class ReferenceauYimages/qttoolbardialog.pngqttoolbardialog.png75Eindex.htmlToolbar Dialog   }}pSp !AAatableFileNameTableFileNameTableCREATE TABLE FileNameTable (FolderId INTEGER, Name TEXT, FileId INTEGER, Title TEXT )`!99QtableFolderTableFolderTableCREATE TABLE FolderTable(Id INTEGER PRIMARY KEY, Name Text, NamespaceID INTEGER )*!AAUtableMetaDataTableMetaDataTableCREATE TABLE MetaDataTable(Name Text, Value BLOB )  qdoc A=YCreationDate2009-12-16T11:45:365qchVersion1.0f>\ ?=umVMuz-tzzwEs,܇ja >#n3IjFMs:s}O-DL1䎽ەy Wuه$ v9rWH{;h's:1;KDv^q'cUgt:g)Egv {V*3zZ&GƲ7YH2|(Eh~%^vFD (Q)=5ZL鹲:ZnryIVŲ\/W}FBSெ?rѭYAzn[WV<%&"a u^*7)zUb}xO*v;q#I;B'|8NE`;JaQk{PsD4A*4Qu[aO/ys:mJ\N<? 6v|L,}fV57oZזg)Ϩ ''>{?nl+~4]WV{'đb|V{dAw0>ykA4E!p{jʶ*χZ< p{=5&@gUy|~3TbU'kuX9?N |ݽ #M3 vbScQz6ʝGrҴ6V?h |h#$)|Czfk,fXUQ\;e6경.k24ڰV6=}vgÞVy&6Lwh k"8;u5|8{U+jj@D#Ƃ'א߬~_,}Tp_`/-T/!iN|0]Mj.}L$bУljJ$,Qf3r0sAW *^| CģcXf"tIJ16.*_?1"B;T.rqV]Y(2ФFc^ *Qʙ,j33XBA@i w ۼW= N_j<.~4j<"6ɗCf/>p'7k\M`cԒ#>=Td,'>0^E8=|Y4y/ %(w(2R{=eZ3{Txt5g6 0#6"+ ; r9StNJ.ތ7JUL-~A/6 ޔf0_nJ,M{̏fY*۠a2鉕vr-@fp} 0ln.3,u<~p'`wȩ )lτ#dN)&(Q]T[jL(!b£GlH,416De4 lo(-I0:|`mл=.h( zD/ #X-UWax%.ɺO:B^K"A{w8 L)P<~wЉ1óocNB/}#gF O_ٹK AU}mp lYxx.*K+Ä;\2??Y4B}2Cӏ.ϏO.gK `LX𰴴>~igʈL1cu?\#efl:A)wR[S;x,8^|Bp5ʇfM{t@ B  K'^חw8u Jydz\J iGX@,!lll*{(R*0 2 +HeIjEPyMkr 2b"bǚP"AI;^bvYWXXOb}/}8냊p4Μ7֚q1䳂FGGɱ"##c$&9쵇>z6} 0mN|w76;$===P<++K//7 nii!''^}EZª!fE \8pȷqBD'Ì108Er`7[(CbDLKDz7J3n8Jsswssw< W51ߍ&fWn8Vz8z{kb!u_u\zeOo߾%&&21Hhb}>wu.vlFDWǾPkNHQrH;Y0*Dݷo`Zj *G/'vaSXRDU$7}quS Fx˟?_oNfQTDo(T_m I|i+^3;Tgn'DD.Т7}c;(-Q]3e.지m㰈sI+:^x,hX)[꾠JB"֎=?IA,}*pw/1k+Lj*d]4>JM :6IH)n+ sOUUR]^c %_V \w^azB=gjFS;&߾Yr l}/SO5aOCm窗r{2_ ބ,ă;)X>$c> O3c@N:Gt&9Fdq<X9'bW O>LYfMۙ~bWG#B,t0f\tHX&y@C| _+_b(Tcbڲ-.( tEޗ fadn}=ٿc1Lg-X퍍c_9g^ش\Ȼ/OؤM*1wJwƱ⌁wbyۄ~WWwEva0b> :/ [jVeV?'0qKLD<He-$\X vXff%L1a`o"/eԶtN(ѣ[[]%M;󱴤K4ul{k6/?)IHH4%%%CeZ&R,-tꬆϔAa+]f$Ivz[0֋-$)8_Bͤ:ɜkja д o>MjEfO]~6%gu0|&$M=3뤬q5в73}B{jdC[3c,[-_^SD30D/t;Ql-} I`;f̟@rN2u,dE]0c.{vQ=GsstzQq*&_\hL`nNM{Q|x[T-SlebcgFGIIPO5]}|ԗ+"iJS*o~`O1coGة̊Wm|OCޜwEhFS)Wnx"IFՏYƌA4]G' ʲ ^ň1-3*~^ٮYީ˶wLܢîdeEnzHG,i$ыz(UJ!'= 쳴*Ka~ Ϝr!֩GC19 `6lͫHȈc0$_Y`670uRZ~0?"eD Yٞ 7 #W+&LD#wIJ?']uֻr?yRuGuAЏvY?/]~U(AnߘܜO*#,ݼP^yyFHrL` RNy`:Ƞc;[m~ sɵkSYv*P.g[[D82R \(1ʀ8oyԜuXw[ۺĩS-0Kn(~tm\nד]kiTtIzqU]2%>%˯uÆuɞY_ܗYPIOjM>'U2,v+m08<<3B"-4AԋfϯGWK_zWt] W_G.5enA-٤iZݲO'ikks^O'ucz.)GJGN6>`զ;C`Vuj;ntpY'+8?LWDŽfTS?B J]:yjIwxҌ[њ'ksSuɻJ{S#qq3bL*:n|}4TeF3=,T1pc|ZZaElv'\亏^584h ="9ԿC h/SZ6;7@M?9Yb"bCthBZtl= !̛Ra皵Èv?| ;ǻ; bTsE()G4zB`,ab{gG/,X"2*wdd Ar}Þ1ȇOxjToT5.vJ!(+Q#.__!_cɔHl%!s;k2G0l{NCW>?sHWWWp|iYѩףn_mX5eǔ;q%'aiˋ^2|+9mcV*AqQ)ȨApKTSY|!<K'SNGr >`ҔՋ$iQZy3`JBiل4RӰXu VFg))ީ@`S,`AJE77c{u3>/饻JHb@6͏Fl IU5-ynCQ7ًo7pΦƦGGGOأWZiqv\+[VG !-aO222F` ٕi#n9k({qc! O<@܍A_QHk<7=|Ѹpd!z0!CB~@j+Q 1QwK&_"3$R<2jMZcujd|Cs%!4ѫ:x0|v&q(&T\z^Rukȥ$3[_M>""r=aT>9^\+eI< Bn[SQeol$0Yad8*ؖ2%1V~X6JmBN갷GjI0v>G[U; Ӯ}t}]'k߂No1OQ3h `r+Y#jʴYWG=6d΅v!naTtz^ Y/M?;Е!+c#@/Hl),Fg ,Ό 嘠g1>P~ZXߖɘ8GJ>Հ+B˙ IԢp3pzNÓ+ڭ8 \)GLIߤv#(G2vsl\Jdh+"2IĆe뺞 -~棊xq kkw]k t|$XR 7JVeR3y1úSMsu\7>--i$ ?~BlIl(us{&W i@I `ѽ##&zt<)<*Ϩ/Ƀg']#&en"o~ "2' MstNz5(D#ac0,*5IpkcrwLۥ0@|Y̝8S$>-ٳ'ѝlJ bEDn-`$d16#檚Tv7Kr΅}$d^LFc{ w`TM&fl̓ whzvsRǩt?]k< =kƆ##%PLcXƗIB{ѽCl+G RӊF?zspmP2nb=Kym64D>MǏIVrNln(oL(Eu7]Ό0ݙRO K}dS1_T%3^QԯȔ4}w}BD(o`n_()RS+<(WN7ȯ0i#07Ҋ6o/7@F-5m-mQd-pXOOONz0lZ-Vا^-R8d)jPh0ώ*6DZԁ=.nâߝkS\7P 3qKkBq!eJ +C&T ;Q:ᓃkfnT& hG,@2faÏ4%wRIeGmw1Ì'A2h!܆,.^' e+OS~w& /b n{l9E>j0KK(\',-]{?j5IB?"q7Wz 0gCѐDjA~uO,KP:CEES 0H ﻄVxHkTwf,DK}j }}{z'xuTmo6_qb&vn%454-Hc{~Gز-{y.)#BsK]D:}{=Cv42[pᯏg@"J](/iyw J)'@PEwpF>'5Qh6^t]+n눆?nitn3`K=X/yT+1jz٨:U|;@:x|Y|ht}|jq+f?zroym wK Mr'^5{|qtx}kYielΧ*~ArsԹ{hEM?CNF* msnϣ6fj6=/8#{U;J38EB<(p䒜݆%BӍhdT^Fi}>n`%H:wS:^ᔌj6ris@ QGwcĸNzz6ׁ,Gg^nALFvZL> d{Q`L #.RReDK{@v7\E=2څ 4uʮmڽ h`() DeL6l gĆR RL Az ΢!Gx;ģbR/Rl#m,U!š iN>@.`Z0.S1is 8H.:c ف'W nwݞ U K| g4LeW6v!KW{l7 _bX)dmеy#)ϦX/*?'"g8':vиhK;#&jե"z^{j~znr9^+lV9)5:MVK5DHaNq!.ayeu,R=4vP'AKlA7i{ZH({605+zE#pzc&"έwR5nHF tOgK@aAo4L?h)^Lv Ѧdaښsx970xAsf[圹8BGH2L:j)^+"0Xpv=D)5/R{i^L%j*Enǚ }Uޢn5mOW z'7Â.n&m l(8>=\ nL9jF;|ǺW/q!NIC'SMk^䐞bPu.=,3MRr.#SeLޖj.k'UaßQFe.47$ZsҔfۍ&zu*0 T ,:FDza2(/۵–L5w&أx 4ҼzC3ukfrw;CIlt'<!2 wծ3xJQm>pókoPKVG@$$ Iݴ/(v,G 쳋0簤J3)FQ/F@E&s&i%ob.xZ[s۸~_28۱H_:YĹS"! E0dE}o9$J43I!$ɧ$rP|4e&I~5;{L(l/ř(G6kNRYt`!A;| s crF"$ YbߺݿZ?9ΦNN'wތ,(LFr:h 1EQo"Q6Qw|MR$KPQJuq]mv,Bjcj1{:$Q&r;É2%|J ,-&,t0$Oo9j:e#S_27R >U ntNNgtGRN|/T1Q ewu}s H+OBH %裰>>7ϳ<69g7H,#~ĥ"UoD$ҷ0zdvoVQi%Xp.8i{ywy$-9DW6@6Jw9hܲ~A9$vOlo^W!`O %Q!Haw8.IG1y\7ۢ8΢E C.Z8 m;S &diݑ/Z!*4/O8)!ְUb':crY?q Ln Cgj`PBjF# - \.i@Y+zax ;Lm̬sfDGczy} ZZxuX$dVubQV7P;a$B70R5.`$ڲ%,HF%A#"z c!b^["f2b-M_(C4-"F'Qg x1Ц(z^!1rg8b8Nm6]4w# 8NԜfu=Sv[VNt଱|$."\kSQZJ'^7ʨ[S4c*"I5hsB>9MV2bƺc- 1äsA:Z^DCťeͪC``_v*jv\vk0rɩo̘>t xm-C9'?|z#>׽Zk#UndAj|k!/F*8tnhk^}̰[ێtb*NA[MUZQL)Uҥo~EFXw?o\wstL;5Vw Ů@~Z|nOo)[n44:}Ox\C [6լrHSP &3XU駖uAqֆ-X TO+7s/åW:6;[~%ظ/إCJ_ݹ_D*+wCZB*5l'v~ыfHZtէK5-ۿ\aɩ8wRՇ`)΀hGմ\&IM,⪬ bHxr0~ Hb\ù"4Z*3v2}."qlp3Efӿ={t^oK,4T\q,,q)KβF6gDB/ɠ+Cb!W`}`u@ dY$=x3nCI@jnQS)t! M>Z{+e5TiΧOamsYZ%kUW [<ߓtIrukK4ϕִ\qdoz4Rp(E6|j$~,M}Fkܼլ>%N}߳՗7}y q|8 gi|\w[)MGŃA,BB^#-8oCL$XRQg0?nCI?ߡ.dU3ؘO( R5W+ IKk{bɵ) `Fz:98Uab~]<mųJ[m8niat}i SׁP]n#N [lh;+b>t>c8+0i4K$۞X7 5Y,1{@ wvtL">LJh~֖HrpJ3)C]ɮ@*?H9 s'S_{ )oVǦLwU|[~U)o/oz`0d8Iy qAL&L1A( =2 K,Y@=6:hiymRhsdKJQǘ 1Sy2O$b11L_~,vn;jtqeo:n[ۀ') ͡YwU[7TWgR }|8Cm@6 E|ßQ iK89E~ё{7 75!u!(xNM=u;z aåܻBÆ3_H&*pu{Y/ S/ᄳ]<Vd~sOM 122"A0ę`,iô}3Jro9y|M"3S&(D2?3yܬ\4OzwKː0T7!L6W.]0a}F 84xO}qgжJ;6:""-?NzJnk^%u/w[3Y騂YALOM׈aHGQt2-^|^'XܸyPY Vtd' Ll퇩m726u0XșCgWqQ"1M; SfƑSw(OSNHa}y*lJ450)HA{Jt$&|;hH hniS:̓^vvU%jwC҇Xelv[OAg3 %JAdL(!#B$_P k!9iX'cVľmk}ϣj%;}(/18>y$/疬Zʉ7O_J|kQV/C^2iPZh\Ls7U|ung੎xr3Ht`\k@q ôuNwf*\J{j㚷0suH_`,oLhQ &;Y}}{ aqC*-59o5(LXm; r Dhz!#1AY"@;W]#u4NGeU`-;cK~@LOCN>H!8j쉔[Ys_@qvR13RࠩWUwE-)*23vȳuD=!RS9spL= 2hA%' XF[*?A_I8@18+3DVujaG9k!%C҄ U7T} >4tdPyaSYeك2/V&%l㗟[^.oQ@@t`V eZ {*fkv#Gс[?%~Y"oG92)[sxhKHlgp@c&'Xgǥl#i%GZZ4y^41 ˧wtfJjY=X82L;+On- j*bna{RGbqӣc]r*dK4_0 |]~sM/W,3ѳ!^{*7>}PДrH}"$CQ?ke"BtfrYSy ;9QA[ұ?X~iXŶiZRZ=-㼐ْ1+G Qt鮲Ǔ P[;Nc0DR&Q|÷{׵*8@;;s__ϩKvcB}8xgzyC,LtYm̡[mҚ%^j 5QTwqa X .R2(wtiT">9ycLPNXiUكqRMbɡOPL;TRD48c.GOafywU: BE33|76RNABA!Rlv.\iܐYAA~vnρ aZP @7K vq=lG33Y!\N8vq 6!6zF.FllE %jQ۰rM{i|`H&!pw OzpcH1<>Ⱦȡ}#ˇYK&'G4UhhXLnTX(g(7^[_ 4bdJ!>D >s@p:2L:P0kN~0;F B vvD$ڹd2ȐL6\*&Jot^L|,BEig"E\gտ{`q5~M4, /yçdâ?{o235MnbhDtjPSngN nʜb(#iсhQ~`ANX0kNԾM%TIyY NOI;}?=Ӱp#Zb,}w" h#/ĕXw3jmI5]]eicck!ݛ9^5kE( $Brv==removeActionQtToolBarManager::removeActionremoveActioni5}5mainWindowQtToolBarManager::mainWindowmainWindowi5}5addToolBarQtToolBarManager::addToolBaraddToolBarc1y1addActionQtToolBarManager::addActionaddActionIMMQtToolBarManagerQtToolBarManagerM]~QtToolBarDialogQtToolBarDialog::~QtToolBarDialogdtor.QtToolBarDialogQQsetToolBarManagerQtToolBarDialog::setToolBarManagersetToolBarManagerEIIQtToolBarDialogQtToolBarDialog  ')AEEToolbar DialogToolbar DialogQa~QtToolBarManagerQtToolBarManager::~QtToolBarManagerdtor.QtToolBarManager] -u-toolBarsQtToolBarManager::toolBarstoolBars| A AsetMainWindowQtToolBarManager::setMainWindowsetMainWindowc 1y1saveStateQtToolBarManager::saveStatesaveStatev ==restoreStateQtToolBarManager::restoreStaterestoreState| A AremoveToolBarQtToolBarManager::removeToolBarremoveToolBar 7l7U<#X EToolbar Dialog&Q~QtToolBarManager-toolBars AsetMainWindow 1saveState =restoreState AremoveToolBar =removeAction5mainWindow5addToolBar1addAction$MQtToolBarManager$M~QtToolBarDialog&QsetToolBarManager"IQtToolBarDialog  2 Mz(Uimages/qt-logo.png9classic.css,]qttoolbardialog.html.aqttoolbarmanager.html8uimages/qttoolbardialog.png5index.html   Y !155indexNameIndexIndexTable.CREATE INDEX NameIndex ON IndexTable(Name)(!AAQindexFileNameIndexFileNameTable/CREATE INDEX FileNameIndex ON FileNameTable(Name)$!9AQindexFileIdIndexFileNameTable0CREATE INDEX FileIdIndex ON FileNameTable(FileId)merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbardialog.qhp000066400000000000000000000056011177067165300312370ustar00rootroot00000000000000 com.nokia.qtsolutions.qttoolbardialog_2.2 qdoc qt qttoolbardialog solutions qt qttoolbardialog solutions
index.html images/qttoolbardialog.png qttoolbarmanager.html qttoolbardialog.html classic.css images/qt-logo.png images/qttoolbardialog.png merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager-members.html000066400000000000000000000207441177067165300332230ustar00rootroot00000000000000 List of All Members for QtToolBarManager
  Home

List of All Members for QtToolBarManager

This is the complete list of members for QtToolBarManager, including inherited members.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/html/qttoolbarmanager.html000066400000000000000000000272331177067165300315730ustar00rootroot00000000000000 QtToolBarManager Class Reference
  Home

QtToolBarManager Class Reference

The QtToolBarManager class provides toolbar management for main windows. More...

 #include <QtToolBarManager>

Inherits QObject.

Public Functions

  • 29 public functions inherited from QObject

Additional Inherited Members

  • 1 property inherited from QObject
  • 1 public slot inherited from QObject
  • 1 signal inherited from QObject
  • 1 public type inherited from QObject
  • 4 static public members inherited from QObject
  • 7 protected functions inherited from QObject
  • 2 protected variables inherited from QObject

Detailed Description

The QtToolBarManager class provides toolbar management for main windows.

The QtToolBarManager is typically used with a QtToolBarDialog which allows the user to customize the toolbars for a given main window. The QtToolBarDialog class's functionality is controlled by an instance of the QtToolBarManager class, and the main window is specified using the QtToolBarManager class's setMainWindow() function.

The currently specified main window can be retrieved using the mainWindow() function.

The toolbar manager holds lists of the given main window's actions and toolbars, and can add actions and toolbars to these lists using the addAction() and addToolBar() functions respectively. The actions can in addition be categorized acccording to the user's preferences. The toolbar manager can also remove custom actions and toolbars using the removeAction() and removeToolBar() functions.

Finally, the QtToolBarManager is able to save the customized state of its toolbars using the saveState() function as well as restore the toolbars' saved state using restoreState() function.

See also QtToolBarDialog.


Member Function Documentation

QtToolBarManager::QtToolBarManager ( QObject * parent = 0 )

Creates a toolbar manager with the given parent.

QtToolBarManager::~QtToolBarManager ()

Destroys the toolbar manager.

void QtToolBarManager::addAction ( QAction * action, const QString & category )

Adds the given action to the given category in the manager's list of actions. If the category doesn't exist it is created. Only non separator actions can be added. If the action is already added to the list, the function doesn't do anything.

See also removeAction().

void QtToolBarManager::addToolBar ( QToolBar * toolBar, const QString & category )

Adds the given toolBar to the manager's toolbar list.

All the toolBar's actions are automatically added to the given category in the manager's list of actions if they're not already there. The manager remembers which toolbar the actions belonged to, so, when the toolBar is removed, its actions will be removed as well.

Custom toolbars are created with the main window returned by the mainWindow() function, as its parent.

See also removeToolBar().

QMainWindow * QtToolBarManager::mainWindow () const

Returns the main window associated this toolbar manager.

See also setMainWindow().

void QtToolBarManager::removeAction ( QAction * action )

Removes the specified action from the manager's list of actions. The action is also removed from all the registered toolbars. If the specified action is the only action in its category, that category is removed as well.

See also addAction().

void QtToolBarManager::removeToolBar ( QToolBar * toolBar )

Removes the specified toolBar from the manager's list. All the actions that existed in the specified toolBar when it was added are removed as well.

See also addToolBar().

bool QtToolBarManager::restoreState ( const QByteArray & state, int version = 0 )

Restores the saved state of the toolbar manager's toolbars. The version number is compared with the version number of the stored state.

Returns true if the version numbers are matching and the toolbar manager's state is restored; otherwise the toolbar manager's state is left unchanged and the function returns false.

Note that the state of the toolbar manager's toolbars should be restored before restoring the state of the main window's toolbars and dockwidgets using the QMainWindow::restoreState() function. In that way the restoreState() function can create the custom toolbars before the QMainWindow::restoreState() function restores the custom toolbars' positions.

See also saveState().

QByteArray QtToolBarManager::saveState ( int version = 0 ) const

Saves the state of the toolbar manager's toolbars. The version number is stored as part of the data.

Identifies all the QToolBar and QAction objects by their object name property. Ensure that this property is unique for each QToolBar and QAction that you add using the QtToolBarManager.

Returns an identifier for the state which can be passed along with the version number to the restoreState() function to restore the saved state.

See also restoreState().

void QtToolBarManager::setMainWindow ( QMainWindow * mainWindow )

Sets the main window upon which the toolbar manager operates, to be the given mainWindow.

See also mainWindow().

QList<QToolBar *> QtToolBarManager::toolBars () const

Returns the manager's toolbar list.


Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
Qt Solutions
merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/images/000077500000000000000000000000001177067165300256355ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/images/qt-logo.png000066400000000000000000000077531177067165300277410ustar00rootroot00000000000000PNG  IHDR9C:uIDATxb?bhJnJnJnJnJnJnԡ Є`r'Q( !!Nb_p??F&F312G.yG&ޏ?}eWSSgb( ~™t齸g0sVv`fcdY8E$xdUUex$xd9DDr=#gdd|Uףw9D- 2b8Ͽebddceᔐ╗SWScaB#cfd]-I\ _20110`xzw/).#'˯"ǯ*˫,+')@lY@}fۯͼ 2@d$1H')&#'ç,ϯ*˧,#/%́XgfdOX8Y9s2GC3g@ fFff.3O|v ,l%?fR_|bb`y엉3+ԇ,̌,4 "ͭ32>{E4އ ˯NԦ+Qefdϛ?6:&Ǜ?|"=\n$FFfF /0"`ddf cfbb`dx՛o yAP ,,eebWaá,QܬLL>5Lll10 m00wTVxOÚ bGB8GtUմXplII ׶R/@2 Y{ ]d9#ule+}N6XfJ"խJ13002³ @K"ŭzo?1000@{ lϿ`?ï2"ecgd H.fFfɆ}Ͽߌ"٭윌 y02000Ac<\po/."?;#ߛ!hgddd\<|\300<|?j"-U L9D8E i[ZP?z5fF6? o"b')~?3311g/ ֯cz߿>pvfL~g'""٭Qd'i `Ϳ'?HۅǞy?200 %)h1.7?."ͭ 32yVfFfGyO/:?LL [,?/?^}|:`luX-tN X"_CkǶ>w:7WlSofFcOv{OD7톚)*$@d"7$1CRgɉi[!.f&v_#ɧ{='JXXc`agպ]R\̅?ӧ_ᄏvѦ_2"g|fە(m )\!&&&F{ ba~>qci.O?l-"s܅Ǐ<Ϟn%hm)tN6P߿0H~̌,|ןhmF>1:19_/رcc7k䱞]ۯ咒SaB[?|}kf~?ɍkF/>9*qpQ( @##ïe1| QXn_ #ơp7B]X?F[a'K+ q/̌,,L L 7tDʡz /#300VnC")"/?110qp￿l_GVWNOU_UIPSCؐ?\e``=_R(2r-d?ÿ_?+78$$ +:xBVFn^?cbdd@yĂf```aba㔆L)J sI2Ҥ!#3 > ^y^~o (?+33d:.cfL(H*sJ`Mg222ڥž15,l l"<cn#?37ap?'7Ԧ??g|fnx֖z?K<{}w?g%u__ve1Ͽza׽!~Qy>}M߿o|-Iή'xSz/~? YgC[f# ;8/ؘƌ7MO6g~9-Ymlkros"E.y_p/v_얿ؽKb¥Ğ_yk2e;(^]5O׾%+|KW,دl%Uo* pt\C\8zqa{6lq uHYSDmLw qLVmMxMy|sԅ8ŕ8Ս8=q`#3SE,AMC,K~`'q.̮]ݻ{sBćB'=A\4Y4Y<YrC\z$hTQn|(|8Z2C\q,88j_=W=g4~X|XqDqqxRɤ† kr)!`1{׃s㖞߶7o?x֎_mݸQ^KG{mkI!`f0W2(KXXXX߶l}/֑6ַkZpX+[&^0 C6!t2]:0[],)n|tc{wak.QY7޷1`rrZmZO#kZ`HFs|uI5BڗlF>?4T]u3l-dG&Đ?>35OGC4[m}T:ZO0:j[)eeHH9_뚪\ ["#KbH"&'.d'RH KUUT[[X-jbWЄjQ^jf`{N CIXlCshNwʘŐj|̶TL鵵bHg֫PƤ .c~).lzRBZmkiPFz޶!Z+ NCUZ5-E&'kc5Pf֢5VSj6_GR ZE'kcպ90Cxϔ0fbQ]nV)Z`fcY{sk! 0 0 C0 C0 C0lrlTZ=~-IO01lOenlYV?W|5`8M !hj2g}zׇOIg y?'" H"[4!iV;;iKgG|GOlHqa%ȓ}ER$C`C#9x;V 爷z&&S^]]M0DZTs8Rs C0drKD|ZeSG ?5 sW,VdKuAAvڥCTRMm~HPOԤ!!c!_WAzA=xMdDR+qyȃ _YYYV=i(Hq ! C=!!!`5 uvvq!@jii3ֻ..1 `i(99anv/3`̝lq#8?0eG]tFC L/f79&佻SuQUUDHAjHB<0! !~-B}J(hy''Z_C4yq۫e~ΎCl|SN G2bƘ>!`B-X07fVp>UZͼ C0dH?@o}'<&n;C$<1Y `$%U~S۠7n;vɶOErkeZivu CҐ DY%8zG'@V;lsN "RCp@v40C(W,sO<742,*>aŖ !2APVs|QS1 5GFǨV3yW !鐆 `!`B!B!i `i LCYs  `8a@!2f!4Z4S4Kp0C}Q,Ҭ3!2S!!`!`CrTQC0 ` `%0A AK`!!YX?CCd~ iV` `Cj2 A41J! ! l!sc k A!`E AC0C0Aֆ!B YQnnn---8r / eeeUTT :t!3!.{\Ç^* `i`䗾>R@;p+&&Fse&Hh AqK {l\umcKkGTTV q60COC.O:/?}A>q~r!!`̔N]8+?qF>~vd C>,F(EZW!իV c3aH3"C4G"OLz|4j;1"`xuCGF<"$ǐZ=.G!}1?I˧!Iw {g3 ͖OC#GGG}C#1D_E CbȀ4tpdAA2 9ܸǏ#C00d4t}Tk(C004% t!BC t!4tE :?``2i\?L,T\Tׄ_ o-8Z^`_jjbA ]rƽ>̀o1@MC YEEEIji\Μ ``J0 Ç#Y ʚzgGt$Z7L6ZҺ4jh>\Z?_kF;HUÅ]"qSAcs^&0H I `Hm tUhgyK>굃 !n΢փU"@5t T_; R&41h6!.bU! Nd/G$olVŽ:j_qj{#Rse2N i-iNJsVDbZo C %Ӑ$eJGOOe3sFK<`XUw|徨(.MaVN!F/?!HPHl|Yxi`y.^NDr) Cr9EegTsihJE-!3c[7wogQA*xaGG*/ u C& CoEI͊Rر1Y~^\|~UCq!NmoDjL&Ӊ!Э4Ù4B04-~!IYkz'{Dܶ;OD9V_/*Ks:̩uv4Ģ^n=I3ֻn r&ű2I\RoXr"hdqSlm_`ډ187 A'%:Fr#"E{G. FbwJZHK"p0 QKb ǐ(9>"ԟa }j?Dr ,muHTwx8 ,[(i!22wZVE}1`?d~}m.uuuW^egLBݥ!ha(.6f۬+:vx: Ї~hsB^@,LSE$?ްiY g>N>G~:eĞ3w^31m Ykyq5Az穪!!v0D‹_w{ȝs0sۅvf{İb][qu0kT*š!-#A3}3gۋawų_~ǽr*B0Dy>p#~uO-lpw$ۗf؁qDwXd `BL!rSncwFv0OdsiLD'K_ fXq,N"+:Kab2BdMh`h0.8!Zڪ_كڴٙՕݝYHāL ܦ5$"c~N[YϿz^y!xd<{2taZٻ0p@,H J*AiH#HN#KC29çC|(7+y3̹S]Q_SYLP[y9*H10ǀ!4EOtholsIJļd_2Rq<\.ߟ LO0dx鎡 aЊ+0DylzC9]2; ֬YL .Cd*:tb{ >R Hp!2 v Ӄ|ǐN~a”4A(Cbf'IR  Ő[QC~bR!!` `!`ȜjA!ҽ< AֻTŪMbhOE{<~C0 / Q Hg!A;D;wx㣻;r3wDEѐ̊!uCm`H;Vmzۤ׸p }h[/me=e H CҐa(lN-!lѮQ/7o hC%1$GchٮalvsgO3 }lC-eLaoA0 C0w泽KV^k`2`DZ>0O g}%Y %w5+!`ư/|Z尞Ƒq++,Z$ȸeQ!aPf x}s_&CEsg}5kΜD `Bي*KP9i=Ǣ9!4 !!`Ȅ B%C!;[f0'i!KFs[0d4d'|d!N04 CҫF`i|0fZ׎ 鑆h0Z+@"!l0 bp4D5d=iHVd4 A6 !`B Igj 4{pB" D&IC}6qҋ={{H CHC`1WҮq3ysEYNH!i`(* ?J=:cw3 ,4n4?7@^q3fU~HM2]v"ɤi$%b)T;7c"HZ!;}cINCA}NjL?)G鰔{Zw; nlዤh A E;ǐPJR{~0Ztw\#>^1iL" DNCywpK'tt-a79AHCӐe{_D22R=poLrӮޚxJ/kC!`h! h^w ?!  heZ Cֈ!HCrsCJ0dd8v|m[ lǎCF80 Cq80 jĎC0!`W#v܆1D3nun`H롡Wb7ÎZCQ~FsF;n Є0CfƐa;eBҁ!ՋAm"`(2C,hcxh) QK(kͱ׹O ќ Lb4w0O4KCZBS P [3Ae__4$CYEo cȰd`2_0dء?1bA"wŐtVQk-|1`ȈLG"k*j,nHg̖ъ1^%!!C0 aǁ!`Ո!\qz0dۿd8v|JAfv{MC Q[a`!!!F```!!a`a`aaa6# ,-kAEzaIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/doc/index.qdoc000066400000000000000000000010371177067165300263500ustar00rootroot00000000000000/*! \page index.html \title Toolbar Dialog \section1 Description The Toolbar Dialog component provides customizing functionality for toolbars. \section1 Classes \list \i QtToolBarManager \i QtToolBarDialog\endlist \section1 Tested platforms \list \i Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005 \i Qt 4.4, 4.5 / Linux / gcc \i Qt 4.4, 4.5 / MacOS X 10.5 / gcc \endlist \section1 Screenshots \img qttoolbardialog.png */merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/000077500000000000000000000000001177067165300254415ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/examples.pro000066400000000000000000000003701177067165300300010ustar00rootroot00000000000000###################################################################### # Automatically generated by qmake (2.00a) Wed Jun 15 15:53:34 2005 ###################################################################### TEMPLATE = subdirs SUBDIRS = simple merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/000077500000000000000000000000001177067165300267325ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/000077500000000000000000000000001177067165300301775ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/copy.png000066400000000000000000000024721177067165300316640ustar00rootroot00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXõ]L[ewoI q&NpхDP+.&J'Тl9@lC +(іJ{*<9o!,/zc@}}P2Ff dn:~E"+*0@mWڪ4|S5@f:eCբcw*wڻeyBgg'zzz8PIiniog%3 @(cmm | =@A677vVUG;%$3O$(+6Z0'<=MIɩJ=0|qɘPzHk朙WdSjF< fd(;dH=sӹ@ eU-:c}iv]=&rJ*pW=~g.@DqL+++X__'Yt POe24XdNi)9D@|[O~uqq,~Nm7d,m72%#'hf[O5xGJ.7RR:)"E\---n`җ `}iiC ͲТRNxT;5`Zy `0$g@SS[gJO"7@GGG#mmm|A'@ss3JGT?U???h4:ô]L0xGRv:bJJo>ޙ#gSuVnłHmm377WVFLAnC9VpIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/cut.png000066400000000000000000000024531177067165300315040ustar00rootroot00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXWkLW>#q2Te82f,[p0`.:N1[ X^f 1F-ܨji ܸ aٲ<}^J t (Dq+Fdf"LċGȡȎ;82a+A 0H.݀@2yMrhd^QGнM @t/2= ?H,1yK&B+6F\N 9c6 +A )*7G{̉@DT+, 6FHd*{.T74*TbR,XtzEUȠmts!sQ唃.ݯ˰>`y>^/'g`^3vshG .7wsaؽ^/fߩ6Bϥ-~mTk__sbrVNćԌ08@1~m%[ . $6{B o<ѽVw\Rz0L u5QdQD>v̴@O_~2 D"T*Jh K[9Sy,"džS)⠠ x`X@[^& -Sg L[{` b̄"P`ɹۧu.K)pjx)>+![cG&ؒrdo-- 8b\iF&2,3;3zb<{fO[5XCC=4442e<(6]*2x}.Zl1 %q/'_D Lh>u Ɩ1 f6m8h*>]XGZY Cɑ8 9!\ ϳ7ODIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/new.png000066400000000000000000000015241177067165300315000ustar00rootroot00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATX՗Na5{q\\0&bXX ѝRHECey{QJ!Iޜ3MN"SsՐn==d 12<S(CfIkR׾TUNK޷’=Oޣqnl4kZS YoK|mu5e<7ɺx&oFh?B~Ql% wIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/open.png000066400000000000000000000040311177067165300316440ustar00rootroot00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXíW[Pgb/nٛκ;{z:vTpuֶT mQB!@Hs$!grB GTx~0X}g/>ߗ]v uH W*e`[ '3">vH~Y2ϭB9DQ臆={XSR,::NI1>I,`]YSMM4 1y`Ż?ū)LOϮ׼tCO3@{=.4W S2^5C`\&K|H$8As''H׻ "U77N,V>V:q,k,'6?F}oY1~ Z{?0L(CF&e-,!4{Z;~m$~CF=5iu?PZlY]/sq 1% cbjC'ݼ-Ӱ;3&SXO!,CPF BBsZ*tȼE lϛ'Ào%Q(/bM$"R-BySt < ] /yƪԳs LŔbK˫#7G<<b~/=/-:C(QNܿ}3i 3Th58 X\3>GelAC'b ER$nPD΋J~ m['Ѡe")(Ȑx5 >c f]KcNzI1N[;|%jJ0("3 t.| J*qQF@7 jH7'@L{RE qAAͷ]lC(N#KQWHoXQG `4QɫgA@?noiқ*/ru)S)+vQŕky8n3cjs@"mDžPt +4X$ |J8aVU;:!z/]&o8=cn*F׃H:381 ^QO`+] 9g=JUmCeS@%`+njǩD9|6ZZ8/95j'zLIdnFڍv9,9=NrG ;Fc9=pOJnX,P(@!F.[! o<<5iEX?7Ǎ: !p5U!4[7*4nI:rsm$Jesp)>|c.2*\"]~M 6tvw䈶"I m2JxLKIõ.|me6Y\Q{ %&6ǝՂ^NEXx]\UPuTA/ rjQCO-H/5z-Wxܯ\u˯Ev2g`§ҩ;P 9 /"mak^2/f_=IENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/paste.png000066400000000000000000000033211177067165300320200ustar00rootroot00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<cIDATXíWOW. "RV+DZ}mڴiRM?<>}M|!E4V"bbbQ EPP:;3].q3{Μ}9#qbC{U6k4M{ xA@DFpslKs22я5~nHtLKprZ,p2TUñbYȖ|n{ hxl-0HA‶W b`DFl~`_R Hnw^B88Ck8p  >QnLo8FtfWbDhjj FSN5gua,<|` C!lΒ]SPFR222B+emqbI ci6lLCXQ1 u4ay-|(F|W2 EQI ޽[,D X/M-4BM'pq&2>xEX0pߏT#K(~'1KV$*<4'Rs$χ,nGCC#qֶ}.$@tRp!H Mx;Pq'aIF$ 5Џގ-[ ''h5߿vߋ/BȸnF%,N0fǛDk,bO"pk2֊*htkM6eOKK3$F-IV烐|;!8Ud1'(i.HME Dsoo Lx H[ @KKKłhܘF#YG_| #g-J:04B c3;țGiϴf.2M frr0vx׆I-k>CV>0 fHJܰ\vX,4QgEQ5͉ٹy鐂 эV(+BYGtL͟3%ZBo{n4 ^qXq.9R"B)" ($pA<4m ?W͡) O+1Ϣؐaz(dE[5M[xu LįFoB`#_z0$$7iJpwK\93?|nƎwa[QQ6:u0~;ʜhDƮرeAVD}OZݐ0bA Q .K)B !Pf iky77^-\pvv~d /b=Q#t:.ŕu/mRt0[Mǚta@h4NAZo@@N:aT3' zB4hv[ZZ$h (|LLLD"={p7ۏ)Cˋaا#%j3.K7hRk2hF1u]jkkΟ?414\Ak>yd ɑdpx?A.UtrIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/images/save.png000066400000000000000000000022431177067165300316440ustar00rootroot00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<5IDATX͏TE{n@FM4DHČL\.M\kXÎč΂htA\ =`PQ` ^` QVR{:ԩz~6>>]vN5ػ」;v<:̗7XSڠkg|p?0x.ory #ӟd}k@E@xp,#˲m00aP|#%"+Օs΃* ,I Iw:琷Ղv+m(r8 㯼IkFؽ{k놮ZVmQg5 ,# /#&|#!Я'aa%% 4M:ólc V_)Fara-р: TIO4/!g iXvj#wPE x:Tx3x$wh6h߱R^DM_ 8ňKvRPZ0}@Ű&WU.2p}Ʉ-Jsf+7QW?תd~')Ü wl 55Y1{X0+WVU!ѐS,-޸Wj'WڣU<_o|w__sl}5ځ?MKFIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/main.cpp000066400000000000000000000046431177067165300303710ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include #include "mainwindow.h" int main(int argc, char *argv[]) { Q_INIT_RESOURCE(simple); QApplication app(argc, argv); MainWindow mainWin; mainWin.show(); return app.exec(); } merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.cpp000066400000000000000000000362611177067165300316220ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include #include "mainwindow.h" #include "qttoolbardialog.h" MainWindow::MainWindow() { textEdit = new QTextEdit; setCentralWidget(textEdit); findWidget = new QLineEdit; findWidget->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); connect(findWidget, SIGNAL(returnPressed()), this, SLOT(find())); createActions(); createMenus(); createToolBars(); createStatusBar(); createToolBarManager(); readSettings(); connect(textEdit->document(), SIGNAL(contentsChanged()), this, SLOT(documentWasModified())); setCurrentFile(""); } void MainWindow::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettings(); event->accept(); } else { event->ignore(); } } void MainWindow::newFile() { if (maybeSave()) { textEdit->clear(); setCurrentFile(""); } } void MainWindow::open() { if (maybeSave()) { QString fileName = QFileDialog::getOpenFileName(this); if (!fileName.isEmpty()) loadFile(fileName); } } bool MainWindow::save() { if (curFile.isEmpty()) { return saveAs(); } else { return saveFile(curFile); } } bool MainWindow::saveAs() { QString fileName = QFileDialog::getSaveFileName(this); if (fileName.isEmpty()) return false; return saveFile(fileName); } void MainWindow::configureToolBars() { QtToolBarDialog dlg(this); dlg.setToolBarManager(toolBarManager); dlg.exec(); } void MainWindow::saveToolBars() { QString fileName = QFileDialog::getSaveFileName(this, tr("Save Toolbars' State"), QString(), "*.state"); if (fileName.isEmpty()) return; QFileInfo fi(fileName); if (fi.suffix() != QString("state")) fileName += QString(".state"); QFile file(fileName); if (file.open(QFile::WriteOnly)) { QByteArray array = toolBarManager->saveState(); file.write(array); file.close(); } } void MainWindow::restoreToolBars() { QString fileName = QFileDialog::getOpenFileName(this, tr("Restore Toolbars' State"), QString(), "*.state"); if (fileName.isEmpty()) return; QFile file(fileName); if (file.open(QFile::ReadOnly)) { QByteArray array = file.readAll(); file.close(); toolBarManager->restoreState(array); } } void MainWindow::about() { QMessageBox::about(this, tr("About Application"), tr("The Application example demonstrates how to " "write modern GUI applications using Qt, with a menu bar, " "toolbars, and a status bar.")); } void MainWindow::documentWasModified() { setWindowModified(textEdit->document()->isModified()); } void MainWindow::find() { QString text = findWidget->text(); if (!textEdit->find(text)) { statusBar()->showMessage(tr("Search hit bottom, continuing from top"), 2000); QTextCursor oldCursor = textEdit->textCursor(); int vpos = textEdit->verticalScrollBar()->value(); int hpos = textEdit->horizontalScrollBar()->value(); QTextCursor newCursor = oldCursor; newCursor.setPosition(0); textEdit->setTextCursor(newCursor); if (!textEdit->find(text)) { statusBar()->showMessage(tr("Pattern '%1' not found").arg(text), 2000); textEdit->setTextCursor(oldCursor); textEdit->verticalScrollBar()->setValue(vpos); textEdit->horizontalScrollBar()->setValue(hpos); } } } void MainWindow::createActions() { findAct = 0; newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); newAct->setObjectName(QString::fromUtf8("newAct")); newAct->setShortcut(tr("Ctrl+N")); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); openAct->setObjectName(QString::fromUtf8("openAct")); openAct->setShortcut(tr("Ctrl+O")); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(open())); saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); saveAct->setObjectName(QString::fromUtf8("saveAct")); saveAct->setShortcut(tr("Ctrl+S")); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); saveAsAct = new QAction(tr("Save &As..."), this); saveAsAct->setObjectName(QString::fromUtf8("saveAsAct")); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); exitAct = new QAction(tr("E&xit"), this); exitAct->setObjectName(QString::fromUtf8("exitAct")); exitAct->setShortcut(tr("Ctrl+Q")); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this); cutAct->setObjectName(QString::fromUtf8("cutAct")); cutAct->setShortcut(tr("Ctrl+X")); cutAct->setStatusTip(tr("Cut the current selection's contents to the " "clipboard")); connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut())); copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this); copyAct->setObjectName(QString::fromUtf8("copyAct")); copyAct->setShortcut(tr("Ctrl+C")); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy())); pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this); pasteAct->setObjectName(QString::fromUtf8("pasteAct")); pasteAct->setShortcut(tr("Ctrl+V")); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); connect(pasteAct, SIGNAL(triggered()), textEdit, SLOT(paste())); configureToolBarsAct = new QAction(tr("&Configure Toolbars..."), this); configureToolBarsAct->setObjectName(QString::fromUtf8("configureToolBarsAct")); configureToolBarsAct->setStatusTip(tr("Configure toolbars")); QObject::connect(configureToolBarsAct, SIGNAL(triggered()), this, SLOT(configureToolBars())); saveToolBarsAct = new QAction(tr("&Save Toolbars..."), this); saveToolBarsAct->setObjectName(QString::fromUtf8("saveToolBarsAct")); saveToolBarsAct->setStatusTip(tr("Save toolbars' state")); QObject::connect(saveToolBarsAct, SIGNAL(triggered()), this, SLOT(saveToolBars())); restoreToolBarsAct = new QAction(tr("&Restore Toolbars..."), this); restoreToolBarsAct->setObjectName(QString::fromUtf8("restoreToolBarsAct")); restoreToolBarsAct->setStatusTip(tr("Restore toolbars' state")); QObject::connect(restoreToolBarsAct, SIGNAL(triggered()), this, SLOT(restoreToolBars())); aboutAct = new QAction(tr("&About"), this); aboutAct->setObjectName(QString::fromUtf8("aboutAct")); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); aboutQtAct = new QAction(tr("About &Qt"), this); aboutQtAct->setObjectName(QString::fromUtf8("aboutQtAct")); aboutQtAct->setStatusTip(tr("Show the Qt library's About box")); connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); cutAct->setEnabled(false); copyAct->setEnabled(false); connect(textEdit, SIGNAL(copyAvailable(bool)), cutAct, SLOT(setEnabled(bool))); connect(textEdit, SIGNAL(copyAvailable(bool)), copyAct, SLOT(setEnabled(bool))); } void MainWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addSeparator(); fileMenu->addAction(exitAct); editMenu = menuBar()->addMenu(tr("&Edit")); editMenu->addAction(cutAct); editMenu->addAction(copyAct); editMenu->addAction(pasteAct); settingsMenu = menuBar()->addMenu(tr("&Settings")); settingsMenu->addAction(configureToolBarsAct); settingsMenu->addAction(saveToolBarsAct); settingsMenu->addAction(restoreToolBarsAct); menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); } void MainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); fileToolBar->setObjectName(QString::fromUtf8("fileToolBar")); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); fileToolBar->addAction(saveAct); editToolBar = addToolBar(tr("Edit")); editToolBar->setObjectName(QString::fromUtf8("editToolBar")); editToolBar->addAction(cutAct); editToolBar->addAction(copyAct); editToolBar->addAction(pasteAct); editToolBar->addSeparator(); findAct = editToolBar->addWidget(findWidget); findAct->setText(tr("Find")); findAct->setObjectName(QString::fromUtf8("findAct")); } void MainWindow::createStatusBar() { statusBar()->showMessage(tr("Ready")); } void MainWindow::createToolBarManager() { toolBarManager = new QtToolBarManager(this); toolBarManager->setMainWindow(this); QString fileStr = tr("File"); QString editStr = tr("Edit"); QString settingsStr = tr("Settings"); QString helpStr = tr("Help"); toolBarManager->addToolBar(fileToolBar, fileStr); toolBarManager->addToolBar(editToolBar, editStr); toolBarManager->addAction(saveAsAct, fileStr); toolBarManager->addAction(exitAct, fileStr); toolBarManager->addAction(configureToolBarsAct, settingsStr); toolBarManager->addAction(saveToolBarsAct, settingsStr); toolBarManager->addAction(restoreToolBarsAct, settingsStr); toolBarManager->addAction(aboutAct, helpStr); toolBarManager->addAction(aboutQtAct, helpStr); } void MainWindow::readSettings() { QSettings settings("Qt Software", "Application Example"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); QByteArray toolBarsState = settings.value("toolBarsState").toByteArray(); QByteArray docksState = settings.value("docksState").toByteArray(); resize(size); move(pos); toolBarManager->restoreState(toolBarsState); restoreState(docksState); } void MainWindow::writeSettings() { QSettings settings("Qt Software", "Application Example"); settings.setValue("pos", pos()); settings.setValue("size", size()); settings.setValue("toolBarsState", toolBarManager->saveState()); settings.setValue("docksState", saveState()); } bool MainWindow::maybeSave() { if (textEdit->document()->isModified()) { int ret = QMessageBox::warning(this, tr("Application"), tr("The document has been modified.\n" "Do you want to save your changes?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); if (ret == QMessageBox::Yes) return save(); else if (ret == QMessageBox::Cancel) return false; } return true; } void MainWindow::loadFile(const QString &fileName) { QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("Application"), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } QTextStream in(&file); QApplication::setOverrideCursor(Qt::WaitCursor); textEdit->setPlainText(in.readAll()); QApplication::restoreOverrideCursor(); setCurrentFile(fileName); statusBar()->showMessage(tr("File loaded"), 2000); } bool MainWindow::saveFile(const QString &fileName) { QFile file(fileName); if (!file.open(QFile::WriteOnly | QFile::Text)) { QMessageBox::warning(this, tr("Application"), tr("Cannot write file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return false; } QTextStream out(&file); QApplication::setOverrideCursor(Qt::WaitCursor); out << textEdit->toPlainText(); QApplication::restoreOverrideCursor(); setCurrentFile(fileName); statusBar()->showMessage(tr("File saved"), 2000); return true; } void MainWindow::setCurrentFile(const QString &fileName) { curFile = fileName; textEdit->document()->setModified(false); setWindowModified(false); QString shownName; if (curFile.isEmpty()) shownName = "untitled.txt"; else shownName = strippedName(curFile); setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(tr("Application"))); } QString MainWindow::strippedName(const QString &fullFileName) { return QFileInfo(fullFileName).fileName(); } merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/mainwindow.h000066400000000000000000000073311177067165300312630ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include class QAction; class QMenu; class QTextEdit; class QLineEdit; class QtToolBarManager; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); protected: void closeEvent(QCloseEvent *event); private slots: void newFile(); void open(); bool save(); bool saveAs(); void configureToolBars(); void saveToolBars(); void restoreToolBars(); void about(); void documentWasModified(); void find(); private: void createActions(); void createMenus(); void createToolBars(); void createStatusBar(); void createToolBarManager(); void readSettings(); void writeSettings(); bool maybeSave(); void loadFile(const QString &fileName); bool saveFile(const QString &fileName); void setCurrentFile(const QString &fileName); QString strippedName(const QString &fullFileName); QTextEdit *textEdit; QString curFile; QLineEdit *findWidget; QMenu *fileMenu; QMenu *editMenu; QMenu *settingsMenu; QMenu *helpMenu; QToolBar *fileToolBar; QToolBar *editToolBar; QAction *newAct; QAction *openAct; QAction *saveAct; QAction *saveAsAct; QAction *exitAct; QAction *cutAct; QAction *copyAct; QAction *pasteAct; QAction *findAct; QAction *configureToolBarsAct; QAction *saveToolBarsAct; QAction *restoreToolBarsAct; QAction *aboutAct; QAction *aboutQtAct; QtToolBarManager *toolBarManager; }; #endif merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.pro000066400000000000000000000003011177067165300307370ustar00rootroot00000000000000TEMPLATE = app DEPENDPATH += . INCLUDEPATH += . include(../../src/qttoolbardialog.pri) # Input SOURCES += main.cpp \ mainwindow.cpp HEADERS += mainwindow.h RESOURCES += simple.qrc merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/examples/simple/simple.qrc000066400000000000000000000004071177067165300307330ustar00rootroot00000000000000 images/copy.png images/cut.png images/new.png images/open.png images/paste.png images/save.png merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/qttoolbardialog.pro000066400000000000000000000001611177067165300275320ustar00rootroot00000000000000TEMPLATE=subdirs CONFIG += ordered include(common.pri) qttoolbardialog-uselib:SUBDIRS=buildlib SUBDIRS+=examples merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/000077500000000000000000000000001177067165300244125ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarDialog000066400000000000000000000000351177067165300273220ustar00rootroot00000000000000#include "qttoolbardialog.h" merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/QtToolBarManager000066400000000000000000000000351177067165300274750ustar00rootroot00000000000000#include "qttoolbardialog.h" merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/images/000077500000000000000000000000001177067165300256575ustar00rootroot00000000000000merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/images/back.png000066400000000000000000000012461177067165300272700ustar00rootroot00000000000000PNG  IHDRĴl;gAMAOX2tEXtSoftwareAdobe ImageReadyqe<8IDAT8ݔAHTQssLDpeJS`[7-+ZedLB$ѪUZ(qe]PaR86ޜ|^upӁ˻{w{=73v|vSnO׀6Қ;ޛ`$@ w zt#I}G3colGz;iO Ɛ4p 65׍ uPl+ x~N`{2UTer:~f%|a~aQP@2{ȩ]'l~ T*U1ȭ˱474x@gL ay)v@%ԩn, FH,ͧVSVYNDχ?85:PՊvx)Q*rlQWDsq68 p$v"7(UԫY(";Dԅ>wXʃZW˅媝gf; M˨9-[څOUR1`XqB[.8^!檀ˑҠj)>@X1?IUjđ`]IENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/images/down.png000066400000000000000000000011221177067165300273300ustar00rootroot00000000000000PNG  IHDRĴl;gAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDAT8O`[i;7̖hB8͋(HH nB#:cƏ9T@<)r/}jKg<}oYt&i)HF%(EF lxO-oxlP3zwQ4M=)칝^4xڽ!ǏC='/hwv9LKVQ=xGXr9:vQ*^vmTb/>ebսu־ϵ _`D*r`:x#P)v2Pqdd܉;#4Mlq3K9lil+RXxؤ*JS8%m1躏<=|ZQ7oJ #tV BIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/images/forward.png000066400000000000000000000012171177067165300300320ustar00rootroot00000000000000PNG  IHDRĴl;gAMAOX2tEXtSoftwareAdobe ImageReadyqe<!IDAT8Mka<ۋ(Ń7?'=AOoKV)mbPjP 1& K#Ҥm-yk2l67y13;pװ.wj]9pj_怊 ~^FDƕJ#0v~+Q3JY` ~" ƀbyERs.xLzF6P0Tj5!'o=nVŁcwbaQ8 p|x_9?fS:W4U}VΕ6OŔ(aժX"go1rul/Peb IENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/images/up.png000066400000000000000000000012641177067165300270140ustar00rootroot00000000000000PNG  IHDRĴl;gAMAOX2tEXtSoftwareAdobe ImageReadyqe<FIDAT8˵ԿOAYA 9-QƆ!D BJ!++mB ! Ƙ%THqp[yd̛7*;;a.7XDN/EDF@FUm"r9cx$"A~ig$]D|?< ρQf+` h[Y? ,QX"BU%Te]VZz (њ)灼b<㲪/'6+mY@6,bnuK/0eeWV+C} ܺ`WM,x4 cT*Jn;cWz~4|zwIENDB`merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp000066400000000000000000001712131177067165300303120ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qttoolbardialog.h" #include "ui_qttoolbardialog.h" #include #include #include #include #include #include #include class QtFullToolBarManagerPrivate { class QtFullToolBarManager *q_ptr; Q_DECLARE_PUBLIC(QtFullToolBarManager) public: QToolBar *toolBarWidgetAction(QAction *action) const; void removeWidgetActions(const QMap > &actions); enum { VersionMarker = 0xff, ToolBarMarker = 0xfe, CustomToolBarMarker = 0xfd, }; void saveState(QDataStream &stream) const; bool restoreState(QDataStream &stream) const; QToolBar *findDefaultToolBar(const QString &objectName) const; QAction *findAction(const QString &actionName) const; QToolBar *toolBarByName(const QString &toolBarName) const; QtFullToolBarManagerPrivate(); QMap > categoryToActions; QMap actionToCategory; QSet allActions; QMap widgetActions; QSet regularActions; QMap > actionToToolBars; QMap > toolBars; QMap > toolBarsWithSeparators; QMap > defaultToolBars; QList customToolBars; QMainWindow *theMainWindow; }; class QtFullToolBarManager : public QObject { Q_OBJECT public: QtFullToolBarManager(QObject *parent); ~QtFullToolBarManager(); void setMainWindow(QMainWindow *mainWindow); QMainWindow *mainWindow() const; void addCategory(const QString &category); bool hasCategory(const QString &category) const; QStringList categories() const; QList categoryActions(const QString &category) const; QString actionCategory(QAction *action) const; // only non-separator void addAction(QAction *action, const QString &category); void removeAction(QAction *action); QSet actions() const; bool isWidgetAction(QAction *action) const; /* Adds (registers) toolBar. Adds (registers) actions that already exists in toolBar. Remembers toolbar and its actions as a default. */ void addDefaultToolBar(QToolBar *toolBar, const QString &category); void removeDefaultToolBar(QToolBar *toolBar); // NULL on action list means separator. QMap > defaultToolBars() const; bool isDefaultToolBar(QToolBar *toolBar) const; QToolBar *createToolBar(const QString &toolBarName); void deleteToolBar(QToolBar *toolBar); // only those which were created, not added QList actions(QToolBar *toolBar) const; void setToolBars(const QMap > &actions); void setToolBar(QToolBar *toolBar, const QList &actions); QMap > toolBarsActions() const; QByteArray saveState(int version = 0) const; bool restoreState(const QByteArray &state, int version = 0); public slots: void resetToolBar(QToolBar *toolBar); void resetAllToolBars(); signals: void toolBarCreated(QToolBar *toolBar); void toolBarRemoved(QToolBar *toolBar); /* If QToolBarWidgetAction was in another tool bar and is inserted into this toolBar, toolBarChanged is first emited for other toolbar - without that action. (Another approach may be that user first must call setToolBar without that action for old tool bar) */ void toolBarChanged(QToolBar *toolBar, const QList &actions); private: QtFullToolBarManagerPrivate *d_ptr; Q_DECLARE_PRIVATE(QtFullToolBarManager) Q_DISABLE_COPY(QtFullToolBarManager) }; QtFullToolBarManagerPrivate::QtFullToolBarManagerPrivate() : theMainWindow(0) { } QToolBar *QtFullToolBarManagerPrivate::toolBarWidgetAction(QAction *action) const { if (widgetActions.contains(action)) return widgetActions.value(action); return 0; } void QtFullToolBarManagerPrivate::removeWidgetActions(const QMap > &actions) { QMap >::ConstIterator itToolBar = actions.constBegin(); while (itToolBar != actions.constEnd()) { QToolBar *toolBar = itToolBar.key(); QList newActions = toolBars.value(toolBar); QList newActionsWithSeparators = toolBarsWithSeparators.value(toolBar); QList removedActions; QList actionList = itToolBar.value(); QListIterator itAction(actionList); while (itAction.hasNext()) { QAction *action = itAction.next(); if (newActions.contains(action) && toolBarWidgetAction(action) == toolBar) { newActions.removeAll(action); newActionsWithSeparators.removeAll(action); removedActions.append(action); } } //emit q_ptr->toolBarChanged(toolBar, newActions); toolBars.insert(toolBar, newActions); toolBarsWithSeparators.insert(toolBar, newActionsWithSeparators); QListIterator itRemovedAction(removedActions); while (itRemovedAction.hasNext()) { QAction *oldAction = itRemovedAction.next(); widgetActions.insert(oldAction, 0); actionToToolBars[oldAction].removeAll(toolBar); } itToolBar++; } } void QtFullToolBarManagerPrivate::saveState(QDataStream &stream) const { stream << (uchar) ToolBarMarker; stream << defaultToolBars.size(); QMap >::ConstIterator itToolBar = defaultToolBars.constBegin(); while (itToolBar != defaultToolBars.constEnd()) { QToolBar *tb = itToolBar.key(); if (tb->objectName().isEmpty()) { qWarning("QtToolBarManager::saveState(): 'objectName' not set for QToolBar " "%p '%s', using 'windowTitle' instead", tb, tb->windowTitle().toLocal8Bit().constData()); stream << tb->windowTitle(); } else { stream << tb->objectName(); } stream << toolBars[tb].size(); QListIterator itAction(toolBars[tb]); while (itAction.hasNext()) { QAction *action = itAction.next(); if (action) { if (action->objectName().isEmpty()) { qWarning("QtToolBarManager::saveState(): 'objectName' not set for QAction " "%p '%s', using 'text' instead", action, action->text().toLocal8Bit().constData()); stream << action->text(); } else { stream << action->objectName(); } } else { stream << QString(); } } itToolBar++; } stream << (uchar) CustomToolBarMarker; stream << toolBars.size() - defaultToolBars.size(); itToolBar = toolBars.constBegin(); while (itToolBar != toolBars.constEnd()) { QToolBar *tb = itToolBar.key(); if (!defaultToolBars.contains(tb)) { stream << tb->objectName(); stream << tb->windowTitle(); stream << toolBars[tb].size(); QListIterator itAction(toolBars[tb]); while (itAction.hasNext()) { QAction *action = itAction.next(); if (action) { if (action->objectName().isEmpty()) { qWarning("QtToolBarManager::saveState(): 'objectName' not set for QAction " "%p '%s', using 'text' instead", action, action->text().toLocal8Bit().constData()); stream << action->text(); } else { stream << action->objectName(); } } else { stream << QString(); } } } itToolBar++; } } bool QtFullToolBarManagerPrivate::restoreState(QDataStream &stream) const { uchar tmarker; stream >> tmarker; if (tmarker != ToolBarMarker) return false; int toolBars; stream >> toolBars; for (int i = 0; i < toolBars; i++) { QString objectName; stream >> objectName; int actionCount; stream >> actionCount; QList actions; for (int j = 0; j < actionCount; j++) { QString actionName; stream >> actionName; if (actionName.isEmpty()) actions.append(0); else { QAction *action = findAction(actionName); if (action) actions.append(action); } } QToolBar *toolBar = findDefaultToolBar(objectName); if (toolBar) q_ptr->setToolBar(toolBar, actions); } uchar ctmarker; stream >> ctmarker; if (ctmarker != CustomToolBarMarker) return false; QList oldCustomToolBars = customToolBars; stream >> toolBars; for (int i = 0; i < toolBars; i++) { QString objectName; QString toolBarName; int actionCount; stream >> objectName; stream >> toolBarName; stream >> actionCount; QList actions; for (int j = 0; j < actionCount; j++) { QString actionName; stream >> actionName; if (actionName.isEmpty()) actions.append(0); else { QAction *action = findAction(actionName); if (action) actions.append(action); } } QToolBar *toolBar = toolBarByName(objectName); if (toolBar) { toolBar->setWindowTitle(toolBarName); oldCustomToolBars.removeAll(toolBar); } else toolBar = q_ptr->createToolBar(toolBarName); if (toolBar) { toolBar->setObjectName(objectName); q_ptr->setToolBar(toolBar, actions); } } QListIterator itToolBar(oldCustomToolBars); while (itToolBar.hasNext()) q_ptr->deleteToolBar(itToolBar.next()); return true; } QToolBar *QtFullToolBarManagerPrivate::findDefaultToolBar(const QString &objectName) const { QMap >::ConstIterator itToolBar = defaultToolBars.constBegin(); while (itToolBar != defaultToolBars.constEnd()) { QToolBar *tb = itToolBar.key(); if (tb->objectName() == objectName) return tb; itToolBar++; } qWarning("QtToolBarManager::restoreState(): cannot find a QToolBar named " "'%s', trying to match using 'windowTitle' instead.", objectName.toLocal8Bit().constData()); itToolBar = defaultToolBars.constBegin(); while (itToolBar != defaultToolBars.constEnd()) { QToolBar *tb = itToolBar.key(); if (tb->windowTitle() == objectName) return tb; itToolBar++; } qWarning("QtToolBarManager::restoreState(): cannot find a QToolBar with " "matching 'windowTitle' (looking for '%s').", objectName.toLocal8Bit().constData()); return 0; } QAction *QtFullToolBarManagerPrivate::findAction(const QString &actionName) const { QSetIterator itAction(allActions); while (itAction.hasNext()) { QAction *action = itAction.next(); if (action->objectName() == actionName) return action; } qWarning("QtToolBarManager::restoreState(): cannot find a QAction named " "'%s', trying to match using 'text' instead.", actionName.toLocal8Bit().constData()); itAction.toFront(); while (itAction.hasNext()) { QAction *action = itAction.next(); if (action->text() == actionName) return action; } qWarning("QtToolBarManager::restoreState(): cannot find a QAction with " "matching 'text' (looking for '%s').", actionName.toLocal8Bit().constData()); return 0; } QToolBar *QtFullToolBarManagerPrivate::toolBarByName(const QString &toolBarName) const { QMap >::ConstIterator itToolBar = toolBars.constBegin(); while (itToolBar != toolBars.constEnd()) { QToolBar *toolBar = itToolBar.key(); if (toolBar->objectName() == toolBarName) return toolBar; itToolBar++; } return 0; } ////////////////////////////// QtFullToolBarManager::QtFullToolBarManager(QObject *parent) : QObject(parent) { d_ptr = new QtFullToolBarManagerPrivate; d_ptr->q_ptr = this; } QtFullToolBarManager::~QtFullToolBarManager() { delete d_ptr; } void QtFullToolBarManager::setMainWindow(QMainWindow *mainWindow) { d_ptr->theMainWindow = mainWindow; } QMainWindow *QtFullToolBarManager::mainWindow() const { return d_ptr->theMainWindow; } void QtFullToolBarManager::addCategory(const QString &category) { d_ptr->categoryToActions[category] = QList(); } bool QtFullToolBarManager::hasCategory(const QString &category) const { return d_ptr->categoryToActions.contains(category); } QStringList QtFullToolBarManager::categories() const { return d_ptr->categoryToActions.keys(); } QList QtFullToolBarManager::categoryActions(const QString &category) const { QMap >::ConstIterator it = d_ptr->categoryToActions.find(category); if (it != d_ptr->categoryToActions.constEnd()) return it.value(); return QList(); } QString QtFullToolBarManager::actionCategory(QAction *action) const { QMap::ConstIterator it = d_ptr->actionToCategory.find(action); if (it != d_ptr->actionToCategory.constEnd()) return it.value(); return QString(); } void QtFullToolBarManager::addAction(QAction *action, const QString &category) { if (!action) return; // if (!d_ptr->categoryToActions.contains(category)) // return; if (action->isSeparator()) return; if (d_ptr->allActions.contains(action)) return; if (QLatin1String(action->metaObject()->className()) == QLatin1String("QToolBarWidgetAction")) d_ptr->widgetActions.insert(action, 0); else d_ptr->regularActions.insert(action); d_ptr->allActions.insert(action); d_ptr->categoryToActions[category].append(action); d_ptr->actionToCategory[action] = category; } void QtFullToolBarManager::removeAction(QAction *action) { if (!d_ptr->allActions.contains(action)) return; QList toolBars = d_ptr->actionToToolBars[action]; QListIterator itToolBar(toolBars); while (itToolBar.hasNext()) { QToolBar *toolBar = itToolBar.next(); d_ptr->toolBars[toolBar].removeAll(action); d_ptr->toolBarsWithSeparators[toolBar].removeAll(action); toolBar->removeAction(action); } QMap >::ConstIterator itDefault = d_ptr->defaultToolBars.constBegin(); while (itDefault != d_ptr->defaultToolBars.constEnd()) { if (itDefault.value().contains(action)) d_ptr->defaultToolBars[itDefault.key()].removeAll(action); itDefault++; } d_ptr->allActions.remove(action); d_ptr->widgetActions.remove(action); d_ptr->regularActions.remove(action); d_ptr->actionToToolBars.remove(action); QString category = d_ptr->actionToCategory.value(action); d_ptr->actionToCategory.remove(action); d_ptr->categoryToActions[category].removeAll(action); if (d_ptr->categoryToActions[category].isEmpty()) d_ptr->categoryToActions.remove(category); } QSet QtFullToolBarManager::actions() const { return d_ptr->allActions; } bool QtFullToolBarManager::isWidgetAction(QAction *action) const { if (d_ptr->widgetActions.contains(action)) return true; return false; } void QtFullToolBarManager::addDefaultToolBar(QToolBar *toolBar, const QString &category) { if (!toolBar) return; if (d_ptr->toolBars.contains(toolBar)) return; // if (!d_ptr->categoryToActions.contains(category)) // return; // could be also checked if toolBar belongs to mainwindow QList newActionsWithSeparators; QList newActions; QList actions = toolBar->actions(); QListIterator itAction(actions); while (itAction.hasNext()) { QAction *action = itAction.next(); addAction(action, category); if (d_ptr->widgetActions.contains(action)) d_ptr->widgetActions.insert(action, toolBar); newActionsWithSeparators.append(action); if (action->isSeparator()) action = 0; else d_ptr->actionToToolBars[action].append(toolBar); newActions.append(action); } d_ptr->defaultToolBars.insert(toolBar, newActions); //Below could be done by call setToolBar() if we want signal emission here. d_ptr->toolBars.insert(toolBar, newActions); d_ptr->toolBarsWithSeparators.insert(toolBar, newActionsWithSeparators); } void QtFullToolBarManager::removeDefaultToolBar(QToolBar *toolBar) { if (!d_ptr->defaultToolBars.contains(toolBar)) return; QList defaultActions = d_ptr->defaultToolBars[toolBar]; setToolBar(toolBar, QList()); QListIterator itAction(defaultActions); while (itAction.hasNext()) removeAction(itAction.next()); d_ptr->toolBars.remove(toolBar); d_ptr->toolBarsWithSeparators.remove(toolBar); d_ptr->defaultToolBars.remove(toolBar); itAction.toFront(); while (itAction.hasNext()) { QAction *action = itAction.next(); if (action) toolBar->insertAction(0, action); else toolBar->insertSeparator(0); } } QMap > QtFullToolBarManager::defaultToolBars() const { return d_ptr->defaultToolBars; } bool QtFullToolBarManager::isDefaultToolBar(QToolBar *toolBar) const { if (d_ptr->defaultToolBars.contains(toolBar)) return true; return false; } QToolBar *QtFullToolBarManager::createToolBar(const QString &toolBarName) { if (!mainWindow()) return 0; QToolBar *toolBar = new QToolBar(toolBarName, mainWindow()); int i = 1; QLatin1String prefix("_Custom_Toolbar_"); QString name = QString("%1%2").arg(prefix).arg(i); while (d_ptr->toolBarByName(name)) name = QString("%1%2").arg(prefix).arg(++i); toolBar->setObjectName(name); mainWindow()->addToolBar(toolBar); d_ptr->customToolBars.append(toolBar); d_ptr->toolBars.insert(toolBar, QList()); d_ptr->toolBarsWithSeparators.insert(toolBar, QList()); //emit toolBarCreated(toolBar); return toolBar; } void QtFullToolBarManager::deleteToolBar(QToolBar *toolBar) { if (!d_ptr->toolBars.contains(toolBar)) return; if (d_ptr->defaultToolBars.contains(toolBar)) return; setToolBar(toolBar, QList()); //emit toolBarRemoved(toolBar); d_ptr->customToolBars.removeAll(toolBar); d_ptr->toolBars.remove(toolBar); d_ptr->toolBarsWithSeparators.remove(toolBar); delete toolBar; } QList QtFullToolBarManager::actions(QToolBar *toolBar) const { if (d_ptr->toolBars.contains(toolBar)) return d_ptr->toolBars.value(toolBar); return QList(); } void QtFullToolBarManager::setToolBars(const QMap > &actions) { QMap >::ConstIterator it = actions.constBegin(); while (it != actions.constEnd()) { setToolBar(it.key(), it.value()); it++; } } void QtFullToolBarManager::setToolBar(QToolBar *toolBar, const QList &actions) { if (!toolBar) return; if (!d_ptr->toolBars.contains(toolBar)) return; if (actions == d_ptr->toolBars[toolBar]) return; QMap > toRemove; QList newActions; QListIterator itAction(actions); while (itAction.hasNext()) { QAction *action = itAction.next(); if (!action || (!newActions.contains(action) && d_ptr->allActions.contains(action))) newActions.append(action); QToolBar *oldToolBar = d_ptr->toolBarWidgetAction(action); if (oldToolBar && oldToolBar != toolBar) toRemove[oldToolBar].append(action); } d_ptr->removeWidgetActions(toRemove); //emit toolBarChanged(toolBar, newActions); QList oldActions = d_ptr->toolBarsWithSeparators.value(toolBar); QListIterator itOldAction(oldActions); while (itOldAction.hasNext()) { QAction *action = itOldAction.next(); /* When addDefaultToolBar() separator actions could be checked if they are inserted in other toolbars - if yes then create new one. */ if (d_ptr->toolBarWidgetAction(action) == toolBar) d_ptr->widgetActions.insert(action, 0); toolBar->removeAction(action); if (action->isSeparator()) delete action; else d_ptr->actionToToolBars[action].removeAll(toolBar); } QList newActionsWithSeparators; QListIterator itNewActions(newActions); while (itNewActions.hasNext()) { QAction *action = itNewActions.next(); QAction *newAction = 0; if (!action) newAction = toolBar->insertSeparator(0); if (d_ptr->allActions.contains(action)) { toolBar->insertAction(0, action); newAction = action; d_ptr->actionToToolBars[action].append(toolBar); } newActionsWithSeparators.append(newAction); } d_ptr->toolBars.insert(toolBar, newActions); d_ptr->toolBarsWithSeparators.insert(toolBar, newActionsWithSeparators); } QMap > QtFullToolBarManager::toolBarsActions() const { return d_ptr->toolBars; } void QtFullToolBarManager::resetToolBar(QToolBar *toolBar) { if (!isDefaultToolBar(toolBar)) return; setToolBar(toolBar, defaultToolBars().value(toolBar)); } void QtFullToolBarManager::resetAllToolBars() { setToolBars(defaultToolBars()); QList oldCustomToolBars = d_ptr->customToolBars; QListIterator itToolBar(oldCustomToolBars); while (itToolBar.hasNext()) { deleteToolBar(itToolBar.next()); } } QByteArray QtFullToolBarManager::saveState(int version) const { QByteArray data; QDataStream stream(&data, QIODevice::WriteOnly); stream << QtFullToolBarManagerPrivate::VersionMarker; stream << version; d_ptr->saveState(stream); return data; } bool QtFullToolBarManager::restoreState(const QByteArray &state, int version) { QByteArray sd = state; QDataStream stream(&sd, QIODevice::ReadOnly); int marker, v; stream >> marker; stream >> v; if (marker != QtFullToolBarManagerPrivate::VersionMarker || v != version) return false; return d_ptr->restoreState(stream); } class QtToolBarManagerPrivate { class QtToolBarManager *q_ptr; Q_DECLARE_PUBLIC(QtToolBarManager) public: QtFullToolBarManager *manager; }; ////////////////////////////////////// /*! \class QtToolBarManager \brief The QtToolBarManager class provides toolbar management for main windows. The QtToolBarManager is typically used with a QtToolBarDialog which allows the user to customize the toolbars for a given main window. The QtToolBarDialog class's functionality is controlled by an instance of the QtToolBarManager class, and the main window is specified using the QtToolBarManager class's setMainWindow() function. The currently specified main window can be retrieved using the mainWindow() function. The toolbar manager holds lists of the given main window's actions and toolbars, and can add actions and toolbars to these lists using the addAction() and addToolBar() functions respectively. The actions can in addition be categorized acccording to the user's preferences. The toolbar manager can also remove custom actions and toolbars using the removeAction() and removeToolBar() functions. Finally, the QtToolBarManager is able to save the customized state of its toolbars using the saveState() function as well as restore the toolbars' saved state using restoreState() function. \sa QtToolBarDialog */ /*! Creates a toolbar manager with the given \a parent. */ QtToolBarManager::QtToolBarManager(QObject *parent) : QObject(parent) { d_ptr = new QtToolBarManagerPrivate; d_ptr->q_ptr = this; d_ptr->manager = new QtFullToolBarManager(this); } /*! Destroys the toolbar manager. */ QtToolBarManager::~QtToolBarManager() { delete d_ptr; } /*! Sets the main window upon which the toolbar manager operates, to be the given \a mainWindow. */ void QtToolBarManager::setMainWindow(QMainWindow *mainWindow) { d_ptr->manager->setMainWindow(mainWindow); } /*! Returns the main window associated this toolbar manager. */ QMainWindow *QtToolBarManager::mainWindow() const { return d_ptr->manager->mainWindow(); } /*! Adds the given \a action to the given \a category in the manager's list of actions. If the \a category doesn't exist it is created. Only non separator actions can be added. If the action is already added to the list, the function doesn't do anything. \sa removeAction() */ void QtToolBarManager::addAction(QAction *action, const QString &category) { d_ptr->manager->addAction(action, category); } /*! Removes the specified \a action from the manager's list of actions. The action is also removed from all the registered toolbars. If the specified \a action is the only action in its category, that category is removed as well. \sa addAction() */ void QtToolBarManager::removeAction(QAction *action) { d_ptr->manager->removeAction(action); } /*! Adds the given \a toolBar to the manager's toolbar list. All the \a toolBar's actions are automatically added to the given \a category in the manager's list of actions if they're not already there. The manager remembers which toolbar the actions belonged to, so, when the \a toolBar is removed, its actions will be removed as well. Custom toolbars are created with the main window returned by the mainWindow() function, as its parent. \sa removeToolBar() */ void QtToolBarManager::addToolBar(QToolBar *toolBar, const QString &category) { d_ptr->manager->addDefaultToolBar(toolBar, category); } /*! Removes the specified \a toolBar from the manager's list. All the actions that existed in the specified \a toolBar when it was added are removed as well. \sa addToolBar() */ void QtToolBarManager::removeToolBar(QToolBar *toolBar) { d_ptr->manager->removeDefaultToolBar(toolBar); } /*! Returns the manager's toolbar list. */ QList QtToolBarManager::toolBars() const { return d_ptr->manager->toolBarsActions().keys(); } /* void QtToolBarManager::resetToolBar(QToolBar *toolBar) { d_ptr->manager->resetToolBar(toolBar); } void QtToolBarManager::resetAllToolBars() { d_ptr->manager->resetAllToolBars(); } */ /*! Saves the state of the toolbar manager's toolbars. The \a version number is stored as part of the data. Identifies all the QToolBar and QAction objects by their object name property. Ensure that this property is unique for each QToolBar and QAction that you add using the QtToolBarManager. Returns an identifier for the state which can be passed along with the version number to the restoreState() function to restore the saved state. \sa restoreState() */ QByteArray QtToolBarManager::saveState(int version) const { return d_ptr->manager->saveState(version); } /*! Restores the saved state of the toolbar manager's toolbars. The \a version number is compared with the version number of the stored \a state. Returns true if the version numbers are matching and the toolbar manager's state is restored; otherwise the toolbar manager's state is left unchanged and the function returns false. Note that the state of the toolbar manager's toolbars should be restored before restoring the state of the main window's toolbars and dockwidgets using the QMainWindow::restoreState() function. In that way the restoreState() function can create the custom toolbars before the QMainWindow::restoreState() function restores the custom toolbars' positions. \sa saveState() */ bool QtToolBarManager::restoreState(const QByteArray &state, int version) { return d_ptr->manager->restoreState(state, version); } ////////////////////// class ToolBarItem { public: ToolBarItem() : tb(0) {} ToolBarItem(QToolBar *toolBar) : tb(toolBar) {} ToolBarItem(QToolBar *toolBar, const QString &toolBarName) : tb(toolBar), tbName(toolBarName) {} ToolBarItem(const QString &toolBarName) : tb(0), tbName(toolBarName) {} QToolBar *toolBar() const { return tb; } void setToolBar(QToolBar *toolBar) { tb = toolBar; } QString toolBarName() const { return tbName; } void setToolBarName(const QString &toolBarName) { tbName = toolBarName; } private: QToolBar *tb; QString tbName; }; class QtToolBarDialogPrivate { QtToolBarDialog *q_ptr; Q_DECLARE_PUBLIC(QtToolBarDialog) public: QtToolBarDialogPrivate() : toolBarManager(0), currentAction(0), currentToolBar(0) { } ToolBarItem *createItem(QToolBar *toolBar); ToolBarItem *createItem(const QString &toolBarName); void deleteItem(ToolBarItem *item); void newClicked(); void removeClicked(); void defaultClicked(); void okClicked(); void applyClicked(); void cancelClicked(); void upClicked(); void downClicked(); void leftClicked(); void rightClicked(); void renameClicked(); void toolBarRenamed(QListWidgetItem *item); void currentActionChanged(QTreeWidgetItem *current); void currentToolBarChanged(QListWidgetItem *current); void currentToolBarActionChanged(QListWidgetItem *current); void removeToolBar(ToolBarItem *item); bool isDefaultToolBar(ToolBarItem *item) const; void setButtons(); void clearOld(); void fillNew(); QtFullToolBarManager *toolBarManager; QMap > currentState; QMap toolBarItems; QSet createdItems; QSet removedItems; QSet allToolBarItems; // static QTreeWidgetItem *currentAction; QMap actionToItem; QMap itemToAction; // dynamic ToolBarItem *currentToolBar; QMap toolBarToItem; QMap itemToToolBar; // dynamic QMap actionToCurrentItem; QMap currentItemToAction; QMap widgetActionToToolBar; QMap > toolBarToWidgetActions; QString separatorText; Ui::QtToolBarDialog ui; }; ToolBarItem *QtToolBarDialogPrivate::createItem(QToolBar *toolBar) { if (!toolBar) return 0; ToolBarItem *item = new ToolBarItem(toolBar, toolBar->windowTitle()); allToolBarItems.insert(item); return item; } ToolBarItem *QtToolBarDialogPrivate::createItem(const QString &toolBarName) { ToolBarItem *item = new ToolBarItem(toolBarName); allToolBarItems.insert(item); return item; } void QtToolBarDialogPrivate::deleteItem(ToolBarItem *item) { if (!allToolBarItems.contains(item)) return; allToolBarItems.remove(item); delete item; } void QtToolBarDialogPrivate::clearOld() { ui.actionTree->clear(); ui.toolBarList->clear(); ui.currentToolBarList->clear(); ui.removeButton->setEnabled(false); ui.newButton->setEnabled(false); ui.upButton->setEnabled(false); ui.downButton->setEnabled(false); ui.leftButton->setEnabled(false); ui.rightButton->setEnabled(false); actionToItem.clear(); itemToAction.clear(); toolBarToItem.clear(); itemToToolBar.clear(); actionToCurrentItem.clear(); currentItemToAction.clear(); widgetActionToToolBar.clear(); toolBarToWidgetActions.clear(); toolBarItems.clear(); currentState.clear(); createdItems.clear(); removedItems.clear(); QSetIterator itItem(allToolBarItems); while (itItem.hasNext()) delete itItem.next(); allToolBarItems.clear(); currentToolBar = 0; currentAction = 0; } void QtToolBarDialogPrivate::fillNew() { if (!toolBarManager) return; QTreeWidgetItem *item = new QTreeWidgetItem(ui.actionTree); item->setText(0, separatorText); ui.actionTree->setCurrentItem(item); currentAction = item; actionToItem.insert(0, item); itemToAction.insert(item, 0); QStringList categories = toolBarManager->categories(); QStringListIterator itCategory(categories); while (itCategory.hasNext()) { QString category = itCategory.next(); QTreeWidgetItem *categoryItem = new QTreeWidgetItem(ui.actionTree); categoryItem->setText(0, category); QList actions = toolBarManager->categoryActions(category); QListIterator itAction(actions); while (itAction.hasNext()) { QAction *action = itAction.next(); item = new QTreeWidgetItem(categoryItem); item->setText(0, action->text()); item->setIcon(0, action->icon()); item->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic); actionToItem.insert(action, item); itemToAction.insert(item, action); if (toolBarManager->isWidgetAction(action)) { item->setData(0, Qt::TextColorRole, QColor(Qt::blue)); widgetActionToToolBar.insert(action, 0); } item->setFlags(item->flags() | Qt::ItemIsDragEnabled); } ui.actionTree->setItemExpanded(categoryItem, true); } //ui.actionTree->sortItems(0, Qt::AscendingOrder); QMap > toolBars = toolBarManager->toolBarsActions(); QMap >::ConstIterator it = toolBars.constBegin(); while (it != toolBars.constEnd()) { QToolBar *toolBar = it.key(); ToolBarItem *tbItem = createItem(toolBar); toolBarItems.insert(toolBar, tbItem); QListWidgetItem *item = new QListWidgetItem(toolBar->windowTitle(), ui.toolBarList); toolBarToItem.insert(tbItem, item); itemToToolBar.insert(item, tbItem); QList actions = it.value(); QListIterator itAction(actions); while (itAction.hasNext()) { QAction *action = itAction.next(); if (toolBarManager->isWidgetAction(action)) { widgetActionToToolBar.insert(action, tbItem); toolBarToWidgetActions[tbItem].insert(action); } } currentState.insert(tbItem, actions); if (it == toolBars.constBegin()) ui.toolBarList->setCurrentItem(item); if (isDefaultToolBar(tbItem)) item->setData(Qt::TextColorRole, QColor(Qt::darkGreen)); else item->setFlags(item->flags() | Qt::ItemIsEditable); it++; } ui.toolBarList->sortItems(); setButtons(); } bool QtToolBarDialogPrivate::isDefaultToolBar(ToolBarItem *item) const { if (!item) return false; if (!item->toolBar()) return false; return toolBarManager->isDefaultToolBar(item->toolBar()); } void QtToolBarDialogPrivate::setButtons() { bool newEnabled = false; bool removeEnabled = false; bool renameEnabled = false; bool upEnabled = false; bool downEnabled = false; bool leftEnabled = false; bool rightEnabled = false; if (toolBarManager) { newEnabled = true; removeEnabled = !isDefaultToolBar(currentToolBar); renameEnabled = removeEnabled; QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem(); if (currentToolBarAction) { int row = ui.currentToolBarList->row(currentToolBarAction); upEnabled = row > 0; downEnabled = row < ui.currentToolBarList->count() - 1; leftEnabled = true; } if (currentAction && currentToolBar) rightEnabled = true; } ui.newButton->setEnabled(newEnabled); ui.removeButton->setEnabled(removeEnabled); ui.renameButton->setEnabled(renameEnabled); ui.upButton->setEnabled(upEnabled); ui.downButton->setEnabled(downEnabled); ui.leftButton->setEnabled(leftEnabled); ui.rightButton->setEnabled(rightEnabled); } void QtToolBarDialogPrivate::newClicked() { QString toolBarName = q_ptr->tr("Custom Toolbar"); // = QInputDialog::getString(); // produce unique name ToolBarItem *item = createItem(toolBarName); currentState.insert(item, QList()); createdItems.insert(item); QListWidgetItem *i = new QListWidgetItem(toolBarName, ui.toolBarList); i->setFlags(i->flags() | Qt::ItemIsEditable); ui.toolBarList->setCurrentItem(i); itemToToolBar.insert(i, item); toolBarToItem.insert(item, i); ui.toolBarList->sortItems(); ui.toolBarList->setCurrentItem(i); currentToolBarChanged(i); renameClicked(); } void QtToolBarDialogPrivate::removeToolBar(ToolBarItem *item) { if (!item) return; if (item->toolBar() && toolBarManager->isDefaultToolBar(item->toolBar())) return; if (!toolBarToItem.contains(item)) return; QListWidgetItem *i = toolBarToItem.value(item); bool wasCurrent = false; if (i == ui.toolBarList->currentItem()) wasCurrent = true; int row = ui.toolBarList->row(i); QMap >::ConstIterator itToolBar = toolBarToWidgetActions.find(item); if (itToolBar != toolBarToWidgetActions.constEnd()) { QSet actions = itToolBar.value(); QSetIterator itAction(actions); while (itAction.hasNext()) { QAction *action = itAction.next(); widgetActionToToolBar.insert(action, 0); } toolBarToWidgetActions.remove(item); } currentState.remove(item); createdItems.remove(item); toolBarToItem.remove(item); itemToToolBar.remove(i); delete i; if (item->toolBar()) removedItems.insert(item); else deleteItem(item); if (wasCurrent) { if (row == ui.toolBarList->count()) row--; if (row < 0) ; else ui.toolBarList->setCurrentRow(row); } setButtons(); } void QtToolBarDialogPrivate::removeClicked() { QListWidgetItem *i = ui.toolBarList->currentItem(); if (!i) return; ToolBarItem *item = itemToToolBar.value(i); removeToolBar(item); } void QtToolBarDialogPrivate::defaultClicked() { QMap > defaultToolBars = toolBarManager->defaultToolBars(); QMap >::ConstIterator itToolBar = defaultToolBars.constBegin(); while (itToolBar != defaultToolBars.constEnd()) { QToolBar *toolBar = itToolBar.key(); ToolBarItem *toolBarItem = toolBarItems.value(toolBar); if (toolBarToWidgetActions.contains(toolBarItem)) { QSetIterator itAction(toolBarToWidgetActions.value(toolBarItem)); while (itAction.hasNext()) widgetActionToToolBar.insert(itAction.next(), 0); toolBarToWidgetActions.remove(toolBarItem); } currentState.remove(toolBarItem); QListIterator itAction(itToolBar.value()); while (itAction.hasNext()) { QAction *action = itAction.next(); if (toolBarManager->isWidgetAction(action)) { ToolBarItem *otherToolBar = widgetActionToToolBar.value(action); if (otherToolBar) { toolBarToWidgetActions[otherToolBar].remove(action); currentState[otherToolBar].removeAll(action); } widgetActionToToolBar.insert(action, toolBarItem); toolBarToWidgetActions[toolBarItem].insert(action); } } currentState.insert(toolBarItem, itToolBar.value()); itToolBar++; } currentToolBarChanged(toolBarToItem.value(currentToolBar)); QList toolBars = currentState.keys(); QListIterator itTb(toolBars); while (itTb.hasNext()) removeToolBar(itTb.next()); } void QtToolBarDialogPrivate::okClicked() { applyClicked(); q_ptr->accept(); } void QtToolBarDialogPrivate::applyClicked() { QMap > toolBars = currentState; QMap >::ConstIterator itToolBar = toolBars.constBegin(); while (itToolBar != toolBars.constEnd()) { ToolBarItem *item = itToolBar.key(); QToolBar *toolBar = item->toolBar(); if (toolBar) { toolBarManager->setToolBar(toolBar, itToolBar.value()); toolBar->setWindowTitle(item->toolBarName()); } itToolBar++; } QSet toRemove = removedItems; QSetIterator itRemove(toRemove); while (itRemove.hasNext()) { ToolBarItem *item = itRemove.next(); QToolBar *toolBar = item->toolBar(); removedItems.remove(item); currentState.remove(item); deleteItem(item); if (toolBar) toolBarManager->deleteToolBar(toolBar); } QSet toCreate = createdItems; QSetIterator itCreate(toCreate); while (itCreate.hasNext()) { ToolBarItem *item = itCreate.next(); QString toolBarName = item->toolBarName(); createdItems.remove(item); QList actions = currentState.value(item); QToolBar *toolBar = toolBarManager->createToolBar(toolBarName); item->setToolBar(toolBar); toolBarManager->setToolBar(toolBar, actions); } } void QtToolBarDialogPrivate::upClicked() { QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem(); if (!currentToolBarAction) return; int row = ui.currentToolBarList->row(currentToolBarAction); if (row == 0) return; ui.currentToolBarList->takeItem(row); int newRow = row - 1; ui.currentToolBarList->insertItem(newRow, currentToolBarAction); QList actions = currentState.value(currentToolBar); QAction *action = actions.at(row); actions.removeAt(row); actions.insert(newRow, action); currentState.insert(currentToolBar, actions); ui.currentToolBarList->setCurrentItem(currentToolBarAction); setButtons(); } void QtToolBarDialogPrivate::downClicked() { QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem(); if (!currentToolBarAction) return; int row = ui.currentToolBarList->row(currentToolBarAction); if (row == ui.currentToolBarList->count() - 1) return; ui.currentToolBarList->takeItem(row); int newRow = row + 1; ui.currentToolBarList->insertItem(newRow, currentToolBarAction); QList actions = currentState.value(currentToolBar); QAction *action = actions.at(row); actions.removeAt(row); actions.insert(newRow, action); currentState.insert(currentToolBar, actions); ui.currentToolBarList->setCurrentItem(currentToolBarAction); setButtons(); } void QtToolBarDialogPrivate::leftClicked() { QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem(); if (!currentToolBarAction) return; int row = ui.currentToolBarList->row(currentToolBarAction); currentState[currentToolBar].removeAt(row); QAction *action = currentItemToAction.value(currentToolBarAction); if (widgetActionToToolBar.contains(action)) { ToolBarItem *item = widgetActionToToolBar.value(action); if (item == currentToolBar) { // have to be toolBarToWidgetActions[item].remove(action); if (toolBarToWidgetActions[item].empty()) toolBarToWidgetActions.remove(item); } widgetActionToToolBar.insert(action, 0); } if (action) actionToCurrentItem.remove(action); currentItemToAction.remove(currentToolBarAction); delete currentToolBarAction; if (row == ui.currentToolBarList->count()) row--; if (row >= 0) { QListWidgetItem *item = ui.currentToolBarList->item(row); ui.currentToolBarList->setCurrentItem(item); } setButtons(); } void QtToolBarDialogPrivate::rightClicked() { if (!currentAction) return; if (!currentToolBar) return; QListWidgetItem *currentToolBarAction = ui.currentToolBarList->currentItem(); QAction *action = itemToAction.value(currentAction); QListWidgetItem *item = 0; if (action) { if (currentState[currentToolBar].contains(action)) { item = actionToCurrentItem.value(action); if (item == currentToolBarAction) return; int row = ui.currentToolBarList->row(item); ui.currentToolBarList->takeItem(row); currentState[currentToolBar].removeAt(row); // only reorder here } else { item = new QListWidgetItem(action->text()); item->setIcon(action->icon()); item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic); currentItemToAction.insert(item, action); actionToCurrentItem.insert(action, item); if (widgetActionToToolBar.contains(action)) { item->setData(Qt::TextColorRole, QColor(Qt::blue)); ToolBarItem *toolBar = widgetActionToToolBar.value(action); if (toolBar) { currentState[toolBar].removeAll(action); toolBarToWidgetActions[toolBar].remove(action); if (toolBarToWidgetActions[toolBar].empty()) toolBarToWidgetActions.remove(toolBar); } widgetActionToToolBar.insert(action, currentToolBar); toolBarToWidgetActions[currentToolBar].insert(action); } } } else { item = new QListWidgetItem(separatorText); currentItemToAction.insert(item, 0); } int row = ui.currentToolBarList->count(); if (currentToolBarAction) { row = ui.currentToolBarList->row(currentToolBarAction) + 1; } ui.currentToolBarList->insertItem(row, item); currentState[currentToolBar].insert(row, action); ui.currentToolBarList->setCurrentItem(item); setButtons(); } void QtToolBarDialogPrivate::renameClicked() { if (!currentToolBar) return; QListWidgetItem *item = toolBarToItem.value(currentToolBar); ui.toolBarList->editItem(item); } void QtToolBarDialogPrivate::toolBarRenamed(QListWidgetItem *item) { if (!currentToolBar) return; ToolBarItem *tbItem = itemToToolBar.value(item); if (!tbItem) return; tbItem->setToolBarName(item->text()); //ui.toolBarList->sortItems(); } void QtToolBarDialogPrivate::currentActionChanged(QTreeWidgetItem *current) { if (itemToAction.contains(current)) currentAction = current; else currentAction = NULL; setButtons(); } void QtToolBarDialogPrivate::currentToolBarChanged(QListWidgetItem *current) { currentToolBar = itemToToolBar.value(current); ui.currentToolBarList->clear(); actionToCurrentItem.clear(); currentItemToAction.clear(); setButtons(); if (!currentToolBar) { return; } QList actions = currentState.value(currentToolBar); QListIterator itAction(actions); QListWidgetItem *first = 0; while (itAction.hasNext()) { QAction *action = itAction.next(); QString actionName = separatorText; if (action) actionName = action->text(); QListWidgetItem *item = new QListWidgetItem(actionName, ui.currentToolBarList); if (action) { item->setIcon(action->icon()); item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic); actionToCurrentItem.insert(action, item); if (widgetActionToToolBar.contains(action)) item->setData(Qt::TextColorRole, QColor(Qt::blue)); } currentItemToAction.insert(item, action); if (!first) first = item; } if (first) ui.currentToolBarList->setCurrentItem(first); } void QtToolBarDialogPrivate::currentToolBarActionChanged(QListWidgetItem *) { setButtons(); } void QtToolBarDialogPrivate::cancelClicked() { // just nothing q_ptr->reject(); } ////////////////////// /* class FeedbackItemDelegate : public QItemDelegate { Q_OBJECT public: FeedbackItemDelegate(QObject *parent = 0) : QItemDelegate(parent) { } virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex & index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; }; void FeedbackItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if () painter->save(); QRect r = option.rect; float yCentral = r.height() / 2.0; float margin = 2.0; float arrowWidth = 5.0; float width = 20; qDebug("rect: x %d, y %d, w %d, h %d", r.x(), r.y(), r.width(), r.height()); QLineF lineBase(0.0 + margin, r.y() + yCentral, width - margin, r.y() + yCentral); QLineF lineArrowLeft(width - margin - arrowWidth, r.y() + yCentral - arrowWidth, width - margin, r.y() + yCentral); QLineF lineArrowRight(width - margin - arrowWidth, r.y() + yCentral + arrowWidth, width - margin, r.y() + yCentral); painter->drawLine(lineBase); painter->drawLine(lineArrowLeft); painter->drawLine(lineArrowRight); painter->translate(QPoint(width, 0)); QItemDelegate::paint(painter, option, index); painter->restore(); } QSize FeedbackItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { //return QItemDelegate::sizeHint(option, index); QSize s = QItemDelegate::sizeHint(option, index); s.setWidth(s.width() - 20); return s; } class QtToolBarListWidget : public QListWidget { Q_OBJECT public: QtToolBarListWidget(QWidget *parent) : QListWidget(parent), actionDrag(false) {} protected: void startDrag(Qt::DropActions supportedActions); void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent *event); void dragLeaveEvent(QDragLeaveEvent *); void dropEvent(QDropEvent *event); void setDragAction(const QString *action) { actionName = action; } private: QPersistentModelIndex lastDropIndicator; QString actionName; bool actionDrag; }; void QtToolBarListWidget::startDrag(Qt::DropActions supportedActions) { QListWidgetItem *item = currentItem(); if (item) { actionName = QString(); emit aboutToDrag(item); if (!actionName.isEmpty()) { QDrag *drag = new QDrag(this); QMimeData *data = new QMimeData; data->setData("action", actionName.toLocal8Bit().constData()); drag->setMimeData(data); drag->start(supportedActions); } } } void QtToolBarListWidget::dragEnterEvent(QDragEnterEvent *event) { const QMimeData *mime = event->mimeData(); actionDrag = mime->hasFormat("action"); if (actionDrag) event->accept(); else event->ignore(); } void QtToolBarListWidget::dragMoveEvent(QDragMoveEvent *event) { event->ignore(); if (actionDrag) { QPoint p = event->pos(); QListWidgetItem *item = itemAt(p); Indicator indic = QtToolBarListWidget::None; if (item) { QRect rect = visualItemRect(item); if (p.y() - rect.top() < rect.height() / 2) indic = QtToolBarListWidget::Above; else indic = QtToolBarListWidget::Below; } setIndicator(item, indic); event->accept(); } } void QtToolBarListWidget::dragLeaveEvent(QDragLeaveEvent *) { if (actionDrag) { actionDrag = false; setIndicator(item, QtToolBarListWidget::None); } } void QtToolBarListWidget::dropEvent(QDropEvent *event) { if (actionDrag) { QListWidgetItem *item = indicatorItem(); Indicator indic = indicator(); QByteArray array = event->mimeData()->data("action"); QDataStream stream(&array, QIODevice::ReadOnly); QString action; stream >> action; emit actionDropped(action, item, ); actionDrag = false; setIndicator(item, QtToolBarListWidget::None); } } */ /*! \class QtToolBarDialog \brief The QtToolBarDialog class provides a dialog for customizing toolbars. QtToolBarDialog allows the user to customize the toolbars for a given main window. \image qttoolbardialog.png The dialog lets the users add, rename and remove custom toolbars. Note that built-in toolbars are marked with a green color, and cannot be removed or renamed. The users can also add and remove actions from the toolbars. An action can be added to many toolbars, but a toolbar can only contain one instance of each action. Actions that contains a widget are marked with a blue color in the list of actions, and can only be added to one single toolbar. Finally, the users can add separators to the toolbars. The original toolbars can be restored by clicking the \gui {Restore all} button. All custom toolbars will then be removed, and all built-in toolbars will be restored to their original state. The QtToolBarDialog class's functionality is controlled by an instance of the QtToolBarManager class, and the main window is specified using the QtToolBarManager::setMainWindow() function. All you need to do to use QtToolBarDialog is to specify an QtToolBarManager instance and call the QDialog::exec() slot: \code QtToolBarManager *toolBarManager; void MyMainWindow::customize() { QtToolBarDialog dialog(this); dialog.setToolBarManager(toolBarManager); dialog.exec(); } \endcode \sa QtToolBarManager */ /*! Creates a toolbar dialog with the given \a parent and the specifed window \a flags. */ QtToolBarDialog::QtToolBarDialog(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { d_ptr = new QtToolBarDialogPrivate; d_ptr->q_ptr = this; d_ptr->ui.setupUi(this); d_ptr->separatorText = tr("< S E P A R A T O R >"); d_ptr->ui.actionTree->setColumnCount(1); d_ptr->ui.actionTree->setRootIsDecorated(false); d_ptr->ui.actionTree->header()->hide(); /* ui.toolBarList->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed); */ // ui.actionList->setDragEnabled(true); // FeedbackItemDelegate *del = new FeedbackItemDelegate(this); // ui.currentToolBarList->setItemDelegate(del); // ui.currentToolBarList->setAcceptDrops(true); d_ptr->ui.upButton->setIcon(QIcon(":/qttoolbardialog/images/up.png")); d_ptr->ui.downButton->setIcon(QIcon(":/qttoolbardialog/images/down.png")); d_ptr->ui.leftButton->setIcon(QIcon(":/qttoolbardialog/images/back.png")); d_ptr->ui.rightButton->setIcon(QIcon(":/qttoolbardialog/images/forward.png")); d_ptr->ui.newButton->setIcon(QIcon(":/qttoolbardialog/images/plus.png")); d_ptr->ui.removeButton->setIcon(QIcon(":/qttoolbardialog/images/minus.png")); connect(d_ptr->ui.newButton, SIGNAL(clicked()), this, SLOT(newClicked())); connect(d_ptr->ui.removeButton, SIGNAL(clicked()), this, SLOT(removeClicked())); connect(d_ptr->ui.renameButton, SIGNAL(clicked()), this, SLOT(renameClicked())); connect(d_ptr->ui.defaultButton, SIGNAL(clicked()), this, SLOT(defaultClicked())); connect(d_ptr->ui.okButton, SIGNAL(clicked()), this, SLOT(okClicked())); connect(d_ptr->ui.applyButton, SIGNAL(clicked()), this, SLOT(applyClicked())); connect(d_ptr->ui.cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked())); connect(d_ptr->ui.upButton, SIGNAL(clicked()), this, SLOT(upClicked())); connect(d_ptr->ui.downButton, SIGNAL(clicked()), this, SLOT(downClicked())); connect(d_ptr->ui.leftButton, SIGNAL(clicked()), this, SLOT(leftClicked())); connect(d_ptr->ui.rightButton, SIGNAL(clicked()), this, SLOT(rightClicked())); connect(d_ptr->ui.actionTree, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(currentActionChanged(QTreeWidgetItem *))); connect(d_ptr->ui.toolBarList, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(currentToolBarChanged(QListWidgetItem *))); connect(d_ptr->ui.currentToolBarList, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(currentToolBarActionChanged(QListWidgetItem *))); connect(d_ptr->ui.actionTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(rightClicked())); connect(d_ptr->ui.currentToolBarList, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(leftClicked())); connect(d_ptr->ui.toolBarList, SIGNAL(itemChanged(QListWidgetItem *)), this, SLOT(toolBarRenamed(QListWidgetItem *))); } /*! Destroys the toolbar dialog. */ QtToolBarDialog::~QtToolBarDialog() { d_ptr->clearOld(); delete d_ptr; } /*! Connects the toolbar dialog to the given \a toolBarManager. Then, when exec() is called, the toolbar dialog will operate using the given \a toolBarManager. */ void QtToolBarDialog::setToolBarManager(QtToolBarManager *toolBarManager) { if (d_ptr->toolBarManager == toolBarManager->d_ptr->manager) return; if (isVisible()) d_ptr->clearOld(); d_ptr->toolBarManager = toolBarManager->d_ptr->manager; if (isVisible()) d_ptr->fillNew(); } /*! \reimp */ void QtToolBarDialog::showEvent(QShowEvent *event) { if (!event->spontaneous()) d_ptr->fillNew(); } /*! \reimp */ void QtToolBarDialog::hideEvent(QHideEvent *event) { if (!event->spontaneous()) d_ptr->clearOld(); } #include "moc_qttoolbardialog.cpp" #include "qttoolbardialog.moc" merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.h000066400000000000000000000117021177067165300277530ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of a Qt Solutions component. ** ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Solutions Commercial License Agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** Please note Third Party Software included with Qt Solutions may impose ** additional restrictions and it is the user's responsibility to ensure ** that they have met the licensing requirements of the GPL, LGPL, or Qt ** Solutions Commercial license and the relevant license of the Third ** Party Software they are using. ** ** If you are unsure which license is appropriate for your use, please ** contact Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QTTOOLBARDIALOG_H #define QTTOOLBARDIALOG_H #include #if defined(Q_WS_WIN) # if !defined(QT_QTTOOLBARDIALOG_EXPORT) && !defined(QT_QTTOOLBARDIALOG_IMPORT) # define QT_QTTOOLBARDIALOG_EXPORT # elif defined(QT_QTTOOLBARDIALOG_IMPORT) # if defined(QT_QTTOOLBARDIALOG_EXPORT) # undef QT_QTTOOLBARDIALOG_EXPORT # endif # define QT_QTTOOLBARDIALOG_EXPORT __declspec(dllimport) # elif defined(QT_QTTOOLBARDIALOG_EXPORT) # undef QT_QTTOOLBARDIALOG_EXPORT # define QT_QTTOOLBARDIALOG_EXPORT __declspec(dllexport) # endif #else # define QT_QTTOOLBARDIALOG_EXPORT #endif class QMainWindow; class QAction; class QToolBar; class QtToolBarManagerPrivate; class QT_QTTOOLBARDIALOG_EXPORT QtToolBarManager : public QObject { Q_OBJECT public: QtToolBarManager(QObject *parent = 0); ~QtToolBarManager(); void setMainWindow(QMainWindow *mainWindow); QMainWindow *mainWindow() const; void addAction(QAction *action, const QString &category); void removeAction(QAction *action); void addToolBar(QToolBar *toolBar, const QString &category); void removeToolBar(QToolBar *toolBar); QList toolBars() const; QByteArray saveState(int version = 0) const; bool restoreState(const QByteArray &state, int version = 0); private: friend class QtToolBarDialog; QtToolBarManagerPrivate *d_ptr; Q_DECLARE_PRIVATE(QtToolBarManager) Q_DISABLE_COPY(QtToolBarManager) }; class QtToolBarDialogPrivate; class QT_QTTOOLBARDIALOG_EXPORT QtToolBarDialog : public QDialog { Q_OBJECT public: QtToolBarDialog(QWidget *parent = 0, Qt::WFlags flags = 0); ~QtToolBarDialog(); void setToolBarManager(QtToolBarManager *toolBarManager); protected: void showEvent(QShowEvent *event); void hideEvent(QHideEvent *event); private: QtToolBarDialogPrivate *d_ptr; Q_DECLARE_PRIVATE(QtToolBarDialog) Q_DISABLE_COPY(QtToolBarDialog) Q_PRIVATE_SLOT(d_func(), void newClicked()) Q_PRIVATE_SLOT(d_func(), void removeClicked()) Q_PRIVATE_SLOT(d_func(), void defaultClicked()) Q_PRIVATE_SLOT(d_func(), void okClicked()) Q_PRIVATE_SLOT(d_func(), void applyClicked()) Q_PRIVATE_SLOT(d_func(), void cancelClicked()) Q_PRIVATE_SLOT(d_func(), void upClicked()) Q_PRIVATE_SLOT(d_func(), void downClicked()) Q_PRIVATE_SLOT(d_func(), void leftClicked()) Q_PRIVATE_SLOT(d_func(), void rightClicked()) Q_PRIVATE_SLOT(d_func(), void renameClicked()) Q_PRIVATE_SLOT(d_func(), void toolBarRenamed(QListWidgetItem *)) Q_PRIVATE_SLOT(d_func(), void currentActionChanged(QTreeWidgetItem *)) Q_PRIVATE_SLOT(d_func(), void currentToolBarChanged(QListWidgetItem *)) Q_PRIVATE_SLOT(d_func(), void currentToolBarActionChanged(QListWidgetItem *)) }; #endif merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.pri000066400000000000000000000010151177067165300303120ustar00rootroot00000000000000include(../common.pri) INCLUDEPATH += $$PWD DEPENDPATH += $$PWD qttoolbardialog-uselib:!qttoolbardialog-buildlib { LIBS += -L$$QTTOOLBARDIALOG_LIBDIR -l$$QTTOOLBARDIALOG_LIBNAME } else { SOURCES += $$PWD/qttoolbardialog.cpp HEADERS += $$PWD/qttoolbardialog.h FORMS += $$PWD/qttoolbardialog.ui RESOURCES += $$PWD/qttoolbardialog.qrc } win32 { contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTTOOLBARDIALOG_EXPORT else:qttoolbardialog-uselib:DEFINES += QT_QTTOOLBARDIALOG_IMPORT } merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.qrc000066400000000000000000000004661177067165300303160ustar00rootroot00000000000000 images/up.png images/down.png images/forward.png images/back.png images/plus.png images/minus.png merkaartor-0.18.1/3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui000066400000000000000000000140461177067165300301450ustar00rootroot00000000000000 QtToolBarDialog 0 0 487 464 Customize Toolbars 8 6 Actions 0 6 Toolbars New Remove Rename 0 6 Restore All Qt::Horizontal 61 31 OK Apply Cancel 0 6 1 0 0 0 Up 1 0 0 0 <- 1 0 0 0 -> 1 0 0 0 Down Qt::Vertical 29 16 Current Toolbar Actions newButton removeButton renameButton toolBarList upButton leftButton rightButton downButton currentToolBarList defaultButton okButton applyButton cancelButton merkaartor-0.18.1/AUTHORS000066400000000000000000000007401177067165300150360ustar00rootroot00000000000000Copyright 2006-2010 Bart Vanhauwaert, Chris Browet and others AUTHORS Bart Vanhauwaert bvh-osm@irule.be Chris "Koying" Browet Elrond elrond+openstreetmap.org@samba-tng.org Oliver Heesakkers Patric Cameron Geoff Richards Raphael Studer Matt Williams Daniel van Gerpen Colin Marquardt Andreas Laas Vincent Meurisse Dirk Stöcker Tomás Mika Yves "LonelyPixel" Goergen Toby Speight James Hogan Merkaartor uses icons from the Tango Desktop Project (http://tango-freedesktop.org/) merkaartor-0.18.1/CHANGELOG000066400000000000000000001566341177067165300152160ustar00rootroot00000000000000v0.18 * FIX : mutex deadlock (refs #3319) * FIX : Protect updatemeta (fixes #3317) * ADD : Allow to show/hide the toolbars labels (toolbar context menu) * ADD : "Select parent(s)" & "Download missing children" to the Feature menu (refs #3314) * FIX : force redrawing the osm map when zooming (fixes #3316) * FIX : Mutex-lock update of the painters (fixes #3315) * ADD : Preferences regarding rendering during edition + Wireframe view * CHG : Switch to wireframe while editing * FIX : Clipboard crash at launch * FIX : crash in merge nodes when merging last node (fixes #3309) * FIX : Crash when loading images * ADD : support for MapDust * CHG : Deprecate Yahoo background * FIX : Set Content-type to 'text/xml' for OSM uploads (fixes #3307) * FIX : Handle more multipolygon cases (closes #3295) * FIX : Problem parsing WMS layer value in editor (fixes #3301) * FIX : Stylizing "natural=coastline" in Mapnik* styles only (fixes #3283) * FIX : Improve rendering of multipolygon buildings * FIX : properly cascade to relation a way deletion (fixes #3300) * FIX : solve moving nested relations (fixes #3290) * FIX : set minimal size on "Key" column to avoid 0 width (fixes #3289) * FIX : url.port(80) returns P instead of port number (fixes #3296) * ADD : Added Denmark - Fugro Aerial Imagery to TmsServerList * ADD : Preference to disable Antialiasing + disable while panning (closes #3284) * FIX : "Fixed" Lat/Lon grid (fixes #3282) * FIX : Export 'speed' attribute in GPX (fixes #3280) * ADD : press 'c' in the geoimage dock to center the map on the image coordinates (closes #3271) * CHG : Replace all links in the Info dock by a single one pointing to the "browse" interface on OSM * ADD : Add support for "http://www.openstreetmap.org/browse/..." type of url in the download dialog * FIX : Shortcuts not restored if default exists (fixes #3277) * ADD : New "Wireframe" style * FIX : Handle negative id numbers in tag selector (fixes #3269) * FIX : Crash with tag selector without value (fixes #3276) * ADD : "Rebuild history" tool, for when history got corrupted * ADD : Scale tool: If one and only one node is selected besides ways, scale around this node rather than around the geometrical center * ADD : Rotate tool: If one and only one node is selected besides ways, rotate around this node rather than around the geometrical center * ADD : Implement Bing Road Detect api (closes #3252) * FIX : Crash when creating a tag template based upon an empty one (fixes #3250) * FIX : crash with --ignore-preferences * FIX : Unblock indexing after an aborted download, too (fixes #3248) * FIX : Harden Filter Editor (fixes #3247) * FIX : Do not simplify (i.e. remove) nodes outside the downloaded area (fixes #3246) * FIX : Issue when creating nodes when active layer is closed (fixes #3244) * ADD : Rebuild an uploadable history if it gets corrupted (refs #3233) * ADD : Allow full regexp in tag selector (enclosed with '/') (closes #3218) * FIX : Background cache size not limited (fixes #3227) * FIX : do not save local to registry in portable mode * FIX : do not create ~/.merkaartor in portable mode * FIX : Handle UTF8 in GDAL fields * CHG : When doing GDAL imports, always confirm input projection * ADD : Allow to use projection chooser in projection editor * ADD : Allow to enter WKT in projection chooser * ADD : Goto dialog: Allow to show/edit coordinates in projected units * FIX : Only check styles for POI nodes * FIX : Feature dock: Relations not shown in "All' tab * FIX : log2 not available on FreeBSD (fixes #3211) * FIX : Make sure new id's are unique (fixes #3223) * FIX : Background image refresh issue when going to tiled from direct (e.g. GeoTIFF) * DEL : Remove unmaintained own OSM Binary format * FIX : Import all GDAL layers * ADD : Import PBF v0.17 * FIX : Problem importing OSM comprising new features * ADD : Move "validation" style rules to a new "Validation.mas" style * ADD : Allow to align background image with +pan * CHG : Rename "Create rectangle" to "Create rectangular building" and automatically add "building=yes" * ADD : Remember "Create polygon" last number of sides * ADD : "Relation->Add to Multipolygon"; allows to create or add to a multipolygon relation (closes 2889) * ADD : Network timeout preference * CHG : Paste Tags : Allow any<->any pasting but only takes top level features into account (fixes #3174) * FIX : When loading history from MDC, do not import the command if the layer is not found + save layers dirty level in MDC (fixes #3176) * FIX : Locked zoom was bugged since passage to real pixel per Meter (fixes #3175) * FIX : Allow creating a way in non-separate move mode with a virtual node selected (fixes #3172) * FIX : Revert to custom icon for move interaction on MAC (fixes #3170) * FIX : GeoTIFF + GDAL backgrounds: Allow to specify an automatic "source" tag via the plugin menu * ADD : Bing Maps plugin * FIX : GDAL + GeoTIFF : if a ESRI World File (.tfw, *.wld) is present, override file geotransform * FIX : GDAL + GeoTIFF : if the projection cannot be determined, ask for it rather than fail * ADD : Printing: Add option to show/hide unstyled features * FIX : Cannot access TMS servers that Min-zoom equals Max-zoom (fixes #3157) * ADD : GDAL raster background plugin * FIX : WMS Editor - Handle Styles properly * ADD : Explicitely add GML to the list of supported format (via GDAL) * ADD : Bicycle style by Markus Straub * ADD : Styles : allow to texture areas with an icon * CHG : When opening/importing, always fallback to GDAL if available. Allows to open most GDAL supported geomtery files. * ADD : Vector map layers * ADD : Allow "[*] is xxx" (or "*=xxx") construct in tag selection. Means a feature match if any of its tags has xxx as a value (fixes #3146) * ADD : Do not allow to delete OSM nodes in non-downloaded areas (refs #3083) * ADD : Save the downloaded areas in the MDC. Expired after 12h. * ADD : Allow to specify the Nominatim url in preferences * ADD : French Cadastre plugin * FIX : Infloop on next/previous image when none visible (fixes #3135) * CHG : Do not wait for "CLOSE changeset" response * ADD : Provision for a license term url to be agreed for map backgrounds * ADD : Proper User-Agent for network requests * ADD : Auto-add "source" tag when drawing over a background map; define the value in the WMS and TMS editors * FIX : Filter out invalid value for first Tag list column width (fixes #3129) * FIX : Remove tags from autocomplete suggestions when cleared from features (fixes #3113) * ADD : Allow to start merkaartor with a document template specified in preferences * CHG : Layers & View settings are now saved in a $HOME/Startup.mdc document rather than thru QSettings * ADD : New CL options: "--ignore-preferences" && "--reset-preferences" * FIX : Re-enable PgUp/PgDown in Geoimage dock (dock must be focused) (fixes #3126); coincidentaly, PgUp/PgDown for zooming only works when the map view is focused. * FIX : If a document cannot be saved (e.g. is readonly), propose the "save as..." dialog (fixes #3125) * CHG : Split Rotation interaction between pure rotation and scale * ADD : When creating a way or area, press "P" to snap the current segment as a parallel of the closest existing segment with the same general direction * ADD : Extrude interaction for ways (JOSM style) * ADD : When creating a way or area, press "C" to close the current way * FIX : remove dependency on GDAL data files when importing OSGB36 shapefiles + correct projection (closes #3119) * ADD : New preference: "Allow node/way creation in select mode". When checked, allows double-click to create a node and double-click on a node to start a way in select mode. * ADD : When drawing ways, double-clicking finishes the current way (Potlach/JOSM style) * ADD : Way segments: Keeping ALT depressed allows to move way segment * ADD : In Road creation mode, double-click creates a new node * ADD : Hardcoded PgUp/PgDown for Zoom in/Zoom out (Potlach style) * ADD : Snap to angle functionality when creating way: keeping "o" pressed snap to 45° angles, "h" snap to 30° angles * ADD : Ability to enter and select multiple OSM servers in preferences (closes #3107) * ADD : "--importag-tags-as-is" command-line switch to prevent adding underscores to imported tags (closes #3102) * CHG : Use Nominatim (http://nominatim.openstreetmap.org/) for place name lookup due to gazetteer closure * ADD : Cut functionality * ADD : double-clicking a feature selects the feature and its children * CHG : style update * ADD : Style Editor: allow to filter the style list * FIX : Styles: draw icons for ways, too * FIX : allow to shrink properties dock * ADD : Support for XAPI * ADD : ":dirty" and ":uploaded" pseudo tags for finding/filtering * CHG : Remove builtin "Dirty" and "Uploaded" layers. Those are now managed at feature level. * ADD : Allow to rename a layer by double-clicking on its name * FIX : Initial viewport issue * ADD : View menu item allowing to highlight "dirty" features, i.e., features ready for upload * FIX : Do not export incomplete features * FIX : CSV import bugs * ADD : Display tags in info dock * FIX : Use "GPX track width" setting even when not in "Simple track appearance" (fixes #3095) * ADD : If a shapefile do not provide its projection, ask the user for it and do not crash (fixes #3087) * ADD : "Set view projection to layer's" action added to image layers; set the main projection to the one of the layer * ADD : "Close" action to Image layers * ADD : Allow plugins to save parameters in a .mdc document; allows, e.g.; to save the filename of a GeoTIFF * ADD : Add a "Properties" dialog to display various info about the current document * ADD : Save projection in .MDC files * CHG : Do not save the projection in preferences unless the projection is specified thru the menu * ADD : Re-introduce PROJ4 as a build-time optional dependency for projections. It is probably neede for exotic projections... * FIX : implement new Id's as global incremented 64-bits integer (fixes #3082) * FIX : lat/lon grid fixes for non-othogonal projections * FIX : for non-rthogonal projections, maximize the viewport in lat/lon * FIX : Handle empty style list in editor (fixes #3079) * FIX : Fix scale bar to take latitude into account. * ADD : Tool to align edges to regularly spaced angles (can orthogonalise buildings) * FIX : Do not tag-match relation's children unless the type is "multippolygon" (fixes #2916) * ADD : support for potlach-style TMS url (with "!") and "%x", "%y", "%z" in addition to "%1", "%2", "%3" * ADD : Join areas tool * FIX : problem with "Bottom-left standard" TMS * ADD : Printing * ADD : Hungarian translation by Peter Sulyok * CHG : Allow to pan with middle mouse button * ADD : Toolbar editor (create/modify tollbars) * FIX : OSX fix * FIX : Draw relations children dashed to avoid multiple parent drawing * FIX : Fix several issues with features dock. * FIX : Fix reappearance of deleted features. * FIX : Fix WayRemoveNodeCommand reversibility. * ADD : Allow to move complete relations * FIX : WMS'es in EPSG:4326 not showing * FIX : Don't overzoom on layer zoom (and don't allow if the bbox is null). fixes #3046 * ADD : Add a "portable" mode to merkaartor via command-line ("-p") or build setting ("PORTABLE=1") * ADD : Add a "Find" button to the Feature dock. Press "Reset" to revert to list current features. * CHG : Use TagSelector for "Edit-Find" * ADD : pseudo-tag key :id, :user, :version, :time to TagSelector * ADD : Added subdivide, area split, spread nodes, and terracing tools (by James Hogan) * ADD : Read-only filter system v0.16 * CHG : Split the view menu into a new "Show" menu * CHG : move Merkaartor's config from ~/.config/BartVanhauwaert to ~/.config/Merkaartor (or platform specific equivalent) * FIX : for consistency, when deleting the end-node of a polygon, don't break it (fixes #2983) * ADD : Ramer-Douglas-Peucker simplification of ways (in Roads menu) * CHG : Only allows one instance of Merkaartor (override with "-n") * ADD : support for JOSM remote protocol on port 8111 * FIX : reduce browserimagemanger timeout, improving Yahoo responsiveness * FIX : do not overwrite local lists with the ones from OSM user preferences * FIX : check menu status whene resetting properties dock (fixes #2930) * CHG : Don't autocomplete pure numeric values (fixes #2951) * ADD : support for "standard" (as in http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification) TMS servers * FIX : Make JOSM happy about our .osm export (fixes #2952) * ADD : Preliminary support for OpenStreetBugs (Refs #983) * ADD : POC of a Gosmore map adapter * FIX : Allow to "Force Upload" relations, too (fixes #2926) * FIX : Update Feature dock when document content changes (fixes #2923) * CHG : Change way the virtual nodes are handled * CHG : Allow tag pasting between different classes of features * CHG : Use a different spatial index provider * ADD : Allow to delete features from the context menu of the Features dock * ADD : Accept mlon/mlat URLs as emitted by mkgmap logging * ADD : Walking Papers backgound plugin + load WP scans as geotagged images * ADD : Import from OSC (osmChange format) * ADD : Feature-Force Delete action (deletes the feature without entry in the undo nor upload list) * CHG : Switch to transactional diff uploads to OSM to harden the process * ADD : Export to OSC (osmChange format) * ADD : CSV POI import * FIX : crash when closing layer with virtual nodes (fixes #2858) * ADD : OSGB36 to the default list of projections * CHG : Allow to add images to a GeoTIFF layer * ADD : Add SHP feature attributes as not uploadable OSM Feature tags * FIX : Allow to load OS VectorMap District shapefiles * ADD : Allow to save geotagged images * CHG : Enhanced support for geotagged images drag&drop * CHG : Geotag support enhancements * FIX : use gpsd api and implement gpsd-ng * FIX : Do not take closed layers into account when choosing photo layer (fixes #2823) * ADD : show geotagged photos on the map (disable via 'view-Show Photos on map') * FIX : crash when closing layers containing photos (fixes #2828) * CHG : Allow importing geotagged photos when no track layer is present (closes #2827) * ADD : Templates xsd (by Jonathan Bennett) (closes #2809; closes #2707) * ADD : allow to re-order relation members (closes #2759) * FIX : solves a problem when hovering large relations * ADD : add a projection editor * ADD : allow google maps links in goto and download dialogs * FIX : abort tile downloading when zooming * ADD : Allow to tile (and cache) arbitrary WMS'es (only EPSG:4326 and google projection supported) * CHG : rework "Zoom lock" and move it to the view menu * ADD : support for WMS-C servers (see http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers) (closes #2598) * FIX : problem when joining ways * CHG : hardcode "lat/long", i.e. EPSG:4326, projection * CHG : hardcode "google" projection. * CHG : adapt TMS code to allow for non-google projections * ADD : add the possibility to show a lat/lon grid * FIX : delete a way when its second to last node is deleted (fixes #2786) * FIX : make sure polygons are at least 1 pixel wide when drawing them at creation time * FIX : Do not count deleted parents when removing children nodes (fixes #2785) * FIX : Make sure not to write to the log after it has been closed (fixes #2783) * FIX : OSX Qt system translations location (by Aleksandar) * FIX : Update language of language combo after language change (by Alaeksandar) * FIX : Only allow virtual node updates after relations resolution (by Trav)(closes #2782) * ADD : Allow to zoom on the location of a GeoTIFF image * FIX : Do not updateindex() if the feature is deleted * FIX : roads not always refreshed when changing type or properties (fixes #2773) * FIX : Cannot cleanly copy tags from one relation to another (fixes #2746) * FIX : When merging contiguous nodes in the same way, check that we don't add the same node twice (fixes #2771) * ADD : Brazilian Portuguese translation (by Marcio Moraes) * FIX : OSX enhacements (by Aleksandar Topuzovic) (closes #2774) * FIX : When nodes are hidden,do not put them in the way of selecting roads * FIX : avoid multiple updateVirtuals() at download time by disabling it and doing them all when the download is done * FIX : speedup node moving by disabling virtual nodes and index updates during drag * FIX : crash when coming from "Separate move mode" and a feature is selected. * CHG : Move the "File-Render" menu to "File-Export-Raster/SVG" v0.15 * FIX : In about box, the changelog is now properly resized * ADD : support for OSM short link as input * ADD : Show distance measurement during area creation (closes #1640) * ADD : Add language to changeset created_by (closes #2369) * FIX : Add support for HTTP auth to TMS (by Trav) (closes #2473) * FIX : Crash in tag selection with invalid "not" expression (fixes #2722) * FIX : Joining 2 ways to create an area doesn't create a polygon if the 2 ways have opposite directions (fixes #2718) * FIX : Improve tag completion behaviour (by Trav) (closes #2716) * ADD : Add GlobeXplorer (DigitalGlobe) to default WMS list (by sim6) (closes #2714) * FIX : Handle case of selection being reset during tag editing (fixes #2646) * ADD : Make the point where nodes are not displayed configurable * FIX : Do not allow node interaction when they are not displayed (closes #2674) * FIX : 100% CPU usage and Crash on creating roundabout (fixes #2659) * FIX : No name in for gpx track layer in Layers menu after File -> Import. Patch by Trav (closes #2661) * CHG : Keep directional arrows blue for oneway roads in "Show directional arrows - Always" mode. * ADD : GeoTIFF background plugin (closes #1025) * ADD : Grabbing hand icon in signle mouse mode * FIX : Layers menu entry for background layer is wrong at startup. Patch by Trav (closes #2641) * ADD : When in "single mouse button" mode, allow to cancel most operation with a right-click * ADD : "Zoom lock" mode. Zoom steps are locked to TMS ones and projection is locked to Mercator * FIX : get sharper Yahoo images (closes #2623) * FIX : tag value "Fast food" should be "fast_food" (closes #2625) * ADD : Add a preference disallowing selection of relations when hidden * ADD : add japanese and ukrainian languages to Windows installer (fixes #2619) * ADD : Automatic SVN revision number in about dialog and elsewhere (closes #2208) * FIX : URL's in about dialog (fixes #2606) * FIX : Export trackpoints time when exporting GPX (fixes #2594) * ADD : Virtual nodes allow fast creation of intermediary nodes (closes #821) * ADD : Allow to move node in Node creation mode (closes #1910) * CHG : Only generate log files on request (--log) on release builds * FIX : speedup epsg:4326 projection * FIX : WMS projection related bugfixes * ADD : Re-added tiled Yahoo! imagery as a plugin * ADD : NearMap Austalian TMS to the default list * FIX : corrected issues in image downloading * FIX : Set "yes" as default to request for saving .mdc file after upload * FIX : crash with self-intersecting polygons (fixes #2317) * FIX : assert when drawing scale (fixes #2347) * FIX : Do not add the "oneway" tag on roundabouts (implied) * FIX : crashes on editing style None.mas by Stefan (Konink?) (fixes #2200) * FIX : Tiles network patch by Tom Verbeure (refs #2316) * FIX : Align nodes patch by Chris Baird (closes #2296) * ADD : Mac OS X icon (closes #2254) * FIX : Force custom Qt style if Qt runtime version < 4.5.1 (fixes #2204) * ADD : Allow all platforms to connect to a gpsd backend * FIX : Set gpsd output to NMEA; allow to save log * FIX : Do not draw background if saved pixmap is null as a copy of a null pixmap seems to crash on Mac (fixes #2262) * FIX : Fixes MacOSX plugin dir (fixes #2253) * FIX : Handle latlong projection in SHP files (fixes #2183) * FIX : remove s60 extensions (fixes #2185) * FIX : allow non-uploadable nodes to be uploaded when they are part of of a created road (fixes #2175) * FIX : fixes building Merkaartor 0.14 with the -Werror=format-security CFLAG, which is used by default in Mandriva * FIX : remove Yahoo when NOUSEWEBKIT is enabled v0.14 * FIX : Optimize painter/style update * FIX : XML encode the changeset comments (fixes #2115) * ADD : Ability to create house numbers "Karlsruhe" style * FIX : Avoid infinite loop with imbricated relations * CHG : Remove api 0.5 option * ADD : Alternative way of drawing tracks * FIX : Don't fail importing lower-cased filenames * ADD : Select a relation member by contextual menu * CHG : Do not select a relation member when doing a "Center..." * ADD : Clicking on a relation member highlights it * ADD : Add a Features dock displaying the features in the current viewport * ADD : Add a case-sensitiveness option to the search + search by ID (closes #1509) * CHG : Remove support for osmarender (fixes #1966) * ADD : Allow multi-selection of layers; allow to show/hide or readonly several layers at once (closes #1798) * ADD : Also export routes in GPX * ADD : Paste features as a whole (closes #1807) * ADD : Spatial indexing of features for faster display with large downloaded areas. * ADD : Built-in list of epsg projections (from proj4) * CHG : Replaced "Commit..." command by "Force Upload". Allows to force update of existing features or to upload imported features (such as SHP, KML, ...) * FIX : User preferences thru OSM preferences system works again * FIX : Support projections when importing SHP files * ADD : Drag & drop re-ordering of the layers * ADD : Support for multiple image layers (closes #1400) * CHG : Load Yahoo background as a whole rather than in pseudo-tile * FIX : Take layer tag into account for drawing priority (fixes #1792) * FIX : Relations were no more drawn according to style * ADD : Interactions help in the info dock * ADD : Generic polygons creation (closes #1808) * FIX : Never loose selection when ctrl- or shift-clicking (fixes #1793) * FIX : Allow move of multiple selected features * ADD : Rotate function * FIX : Give title to progress dialogs (fixes #1512) * ADD : WMS Editor: Display user-friendly layers/projection list based on capabilities * ADD : Display plain trackpoint description/comment in infodock if found (closes #1788) * FIX : First node of a new way not connected to existing way after upload (fixes #1774; fixes #1780) * CHG : Changed way to handle WMS. Should allow exotic projections and eliminate problems. * ADD : Create road junction function (closes #1661) * FIX : force the addition of children of imported features (might solve some "prerequisites" errors) * FIX : import & export JOSM compatible .osm (fixes #1163) * ADD : log file for debugging output * ADD : standard command-line arguments (-h, -v, ...) (fixes #1712) * FIX : Use application-wide proxy (fixes #1763) * ADD : Allow to specify a user/password for the proxy (untested by me) * FIX : Photo localization patch from Toby Speight. * FIX : Set version of newly uploaded objects at 1. * FIX : Graphical corruption on Intel chipsets when "Show downloaded areas" was enabled * FIX : API 0.6: Add features version number in MDC'es * FIX : API 0.6: Fix info dock links * FIX : Problem with "center" & "center & zoom" from the properties dock * FIX : API 0.6: Error when deleting a road with no nodes (fixes #1732) * FIX : Correctly handle plural forms in MapLayer information * FIX : API 0.6: Do not add "created_by" to changed features (fixes #1728) * FIX : API 0.6: Allow to define a comment on a changeset (fixes #1731) * FIX : API 0.6 fixes * FIX : Nodes fetched by relations are incomplete and not completed by "download more" (fixes #1715) * ADD : Initial support for Symbian S60v5 * ADD : Support for discardable dialogs/messageboxes (fixes #1487) * FIX : Do not automerge GPX nodes (fixes #1486) * FIX : Proper clipping via Boost's geometry template library * FIX : Do not use guarded pointers (too slow) (closes #1674) * FIX : Styles tag selection speed optimisation (by Trav) * FIX : OSM/GPX import optimisations (by Trav) * FIX : in Name property inspector causes AV (fixes #1672) * CHG : Move vector background from SHP to OSB * CHG : Preferences are uploaded to OSM in binary, base-64 encoded, 254 char slice. Allow to bypass the 255 char per preference limitation. * CHG : Preferences lists (Bookmarks, WMS servers, ...) are now distributed and saved as XML in ~/.merkaartor. Allow proper merging (fixes #1401) * ADD : Allow to choose which Qt style to use via a combobox * CHG : Implement the custom styles as plugins * FIX : English language warning * ADD : Switch to template-based projection handling; remove dependency on libproj * FIX : proper handling of the "Don't connect GPX nodes..." disabling. * FIX : Fit the style editor in 1024x600 resolution (fixes #1609) * FIX : Reflect in dirty dock the fact that multiple objects were changed together (fixes #1507) * ADD : Threaded browser-based background image grabbing. (fixes #1312) * FIX : Handle redirection for TMS/WMS servers (fixes #1639) * FIX : Clear "hover" state when mouse leave the map widget * FIX : WMS has now the proper projection * ADD : Projections are specified in a "Projections.xml" file * ADD : move WMS/TMS configuration out of the preferences dialog to their own tools menu items. * ADD : switch to plugin-based image backgrounds * ADD : prioritize tile loading starting from center (by Arvin Schnell) v0.13 * FIX : Workaround for a crash with templates on Qt 4.5 * FIX : Crash after TMS/WMS server renaming (fixes #1634) * FIX : Download opaqueness applied to relations (fixes #1637) * FIX : Do not zoom out after a viewport download in background projection (fixes #1638) * FIX : Remove layer from "downloaded areas" on close (fixes #1636) * FIX : Crash on layer close * FIX : Hardening upload process * FIX : Remove the deleted road from parent when joining * FIX : allow to split/join roads belonging to not-completely-downloaded relations * FIX : Avert crashes by using guarded pointers * FIX : In case of a failed "Download more", do not delete layer if it was a previously existing one. * FIX : GeoTagged images are drawn to the full size of GeoImageDock * FIX : Background images with a too long hash filename were not cached. * FIX : Tracklayers are (after asking the user) made writeable when opening geotagged images to it * ADD : Images can be dropped on TrackPoints to add the coordinates from the trackpoint to the image and then load it as geotagged image (see #1602) * FIX : trackpoints which are associated with an image are highlighted according to the Style's settings (but not by painting an reactangle in paintEvent manually) * FIX : Much better zoom (and image-moving) for ImageView in GeoImageDock * FIX : Long image filenames are cutted to fit the GeoImageDock (fixes #1452) * FIX : ImageView in GeoImageDock draws images using an antialiasing painter and images are not copied when displaying them which results in faster drawing. (fixes #1452) * FIX : If there is only one opened layer, GeoImage uses it automatically (without asking the user) (fixes #1450) * FIX : Loading images with non-ascii filenames is now supported by GeoImage (fixes #1359) * FIX : Handle Undoes while creating single/double roads (fixes #1621) * FIX : Re-apply custom shortcuts after retranslateUI (fixes #1620) * FIX : Insufficent precision for WMS bbox requests at high zoom (fixes #1618) * ADD : Allow to force the custom Qt style thru Config.pri * FIX : Do not remove incomplete downloaded relation; make them readonly and display them in red (temporary) * FIX : Painting slowdowns (+ memory consumption) when relations are involved (fixes #1528) * FIX : Split roads not added to Relation (fixes #1586) * FIX : Tweaked windows menu to be "standard" * ADD : Splash screen * ADD : Styles dock + list of styles in "Tools-Styles" for quick style switching. As a consequence, a directory must be defined in the preferences where all custom styles will be stored. * ADD : Add a button to the Slippy map allowing to go to the current viewport. * ADD : Outline coastlines * ADD : Include build of translations during make * ADD : Use a builtin shapefile of the world as a background * ADD : Support for ESRI shapefile import (and, potentially, every GDAL supported file formats) via the GDAL library * FIX : Bugs when loading MDC history (fixes #1546) * ADD : Readonly layers + Preferences to default track layers to readonly (fixes #1460) * FIX : Make upload dialog modal * ADD : Initial support for multiple projections via proj4. Enable in Config.pri with PROJ=1 * FIX : Crash during OSM import (fixes #1536) * ADD : Option (in Manager) to autoload/autoshow the World * FIX : Implement dynamic UI translation (fixes #1432) * ADD : Generalize the concept of download progress window * FIX : If one of the translation composant (Qt or Merkaartor) is missing, allow the other to be loaded. * FIX : Add missing tr() calls in render dialogs. * FIX : Messagebox-Cancel after deleting a line did not work (fixes #1392) * ADD : Native SVG renderer * ADD : Allow to break roads (and areas) with a single node (fixes #1505) * ADD : Relation member context menu for center and zoom on the properties dock * ADD : Allow to remove a member from a relation thru the properties dock. * FIX : switch to skulpture 2.2 custom style by default * FIX : Don't allow templates combo to grow depending on content (fixes #1482) * FIX : Allow disabling "Don't connect GPX nodes separated more than.." by setting it to 0. (fixes #1488) * FIX : getDefaultLanguage() returns an invalid value with 2-parts language definition (like en_GB) (by Lukasz Jernas) (closes #1417) * ADD : Single-node splitting of roads even with a connection to the extremity of another road (by Yves Goergen) (closes #1419) * FIX : Declutter - move translations to a separate directory. * ADD : Custom Qt style (skulpture by Christoph Feck) to bypass Qt expanding dock problem on linux. Enable via preferences-visual. (fixes #1482) * FIX : Allow port number in WMS/TMS server address (fixes #1479) * ADD : Save relative icon filenames in map styles if not builtin (closes #1463) * FIX : Don't loose selection(s) on "download more" (fixes #1470) * FIX : Make at least docks translated after a restart (refs #1432) * FIX : Do not re-sort features when zooming or when latitude changes. * FIX : Make "Resolve Relations" work as intended (fixes #1449) * FIX : Don't snap to the road being moved (by Yves Goergen) * ADD : Merge multiple nodes when dragging one node onto another (by Yves Goergen) * FIX : Don't jump around on Download More * FIX : Remember last selected preferences tab page (not stored over an application restart) (by Yves Goergen) * FIX : Look into application directory for translations by default (by Yves Goergen; fixes #1297) * FIX : Don't draw the node dot if there is an icon (by Yves Goergen) * FIX : Make sure areas are rendered before anything else. * FIX : Add NVIDIA_HACK in Config.pri to (hopefully) help with Nvidia slowdowns. * FIX : Cache preferences values for quicker access. * FIX : Crash wen reloading MDC when no layer specified in the command XML (fixes #1434) * ADD : "Offline" mode switch. * ADD : Add a "Separate Move Mode" preference to remove "Move" mode. Moving features will be done from the "Edit" mode if deactivated. * ADD : "Node" - "Detach" to remove a node from a road. Works the same way as "Split" * FIX : Make Osmarender work again * ADD : Area transparency * ADD : Allow on-the-fly language change * ADD : Remember tag view first column size * FIX : Allow up to 999Mb for background image cache * FIX : The API doesn't like some zoom levels return from the name finder service, so fall back to a default in that case. * ADD : Allow canvas background to be set from a style. Background color is still overridable in the global preferences. (closes #1333) * FIX : Change URL in about dialog to merkaartor.org. * FIX : Connection error reporting in name finder service. (sponsored by today's power outage;) * FIX : Ugly way to ensure ways with duplicate consecutive node will not be uploaded/exported/saved * ADD : Do not auto-complete "name" tag + make "created_by" read-only * FIX : Selecting elements with Find do not update the menus (closes #1375) * FIX : tag values inputed during session not added to auto-completion (refs #1373) * ADD : "View" - "Show directional Arrows" menu. "Never" obviously never shows the arrows, "Always" obviously always shows them, even for non-roads. "Oneway" is the equivalent of the existing and is the default. (closes #1316) * FIX : if a style was selected for a node but no icon was defined, nothing was drawn * ADD : Possibility to add/remove members from Relations (closes #1265) * ADD : Automatically save/restore bookmarks, TMS servers & WMS servers to OSM user preferences (closes #1362) * ADD : Add Name Finder service to "Go to" dialog. * FIX : If TRANSDIR_SYSTEM isn't set use QLibraryInfo::TranslationsPath. (closes #1358) * FIX : Plural/paucal forms in DownloadOSM.cpp (closes #1306) * FIX : World OSM manager now uses standard API rather than the not quite stable XAPI service * FIX : GPS dock coordinates display wrong (fixes #1303) * FIX : Background Image: show warning about Yahoo non-cacheable (closes #1310) * ADD : Single mouse button preference (closes #1314) * ADD : Tag Templates (closes #1031) * ADD : "Area" type to tag selector (matches closed roads); Use as "Type is Area". * ADD : context menu to the slippy map to reset viewport to default (as a side effect, disable right mouse click for zoomout) * ADD : "locked selection". Pressing "Tab" enters lock mode. In this mode, only the features around last click can be selected. Repeatedly press "Tab" to select them in cycle. * ADD : when hovering/focussing a feature, its parents appear in dotted lines * FIX : initial viewport is really the one from previous session * FIX : Verify selection is in layer before accessing (closes #1250) * FIX : After coming out of fullscreen, revert to previous state rather than showing all docks * FIX : do not unselect newly created features * FIX : make moving images to start of track work * ADD : GPX tracks are split if trkpts are more than a certain distance apart (configurable) * ADD : update info dock on hover * ADD : KML import * ADD : display layer name in node info * ADD : Shortcut editor * FIX : crash after undo roundabout (closes #1218) * ADD : enhanced Goto dialog * ADD : add "Area" label option to the style editor (handle road label as trackpoints, with anchor at the center of the bounding box) * ADD : add support for MTK-based GPSes * ADD : add "Halo" label option to the style editor * ADD : make focus and hover size configurable * FIX : Windows crash when resaving changed scene truncates save file (closes #1164) * ADD : Move to the next field on enter in properties dock tags - part 2 (by Travers Carter) (closes #1137) v0.12 * FIX : upload of nodes coming from tracks * FIX : full zoom drawing bug yahoo images don't scale (fixes #1173) * FIX : scroll redraw bug yahoo images don't redraw (fixes #1172) * FIX : scroll redraw bug streetnames left behind (fixes #1171) * FIX : limit max zoom to a scale of ~2m to avoid overflow * ADD : SlippyMap remembers last used view * FIX : remove support for internal webkit. As of now, Qt 4.4+ is required for Yahoo! imagery. * ADD : let the use choose between translating standard OSM tags * ADD : ability to set language explicitly * FIX : make "About" dialog more useful * FIX : show correct progress when downloading maps * FIX : make yahoo maps line up for large views (sync from r10585 by Petr Dlouhy) * FIX : GPX track timestamps are in UTC (see gpx 1.1 schema) * FIX : change serial port GPS readout from busy looping to signal wakeup * FIX : make the heading appear in the satellite tracker * ADD : nice satellite strength view widget * FIX : OSM export doesn't handle quotes well (Fixes #1139) * ADD : Allow osm API url in the "Use OSM link" text box * FIX : 'Download more' should work without prior 'Download from web' (Closes #1028) * FIX : Joining roads by moving a node from one road on top of another road gives incorrect node sequence (Fixes #1149) * ADD : preliminary gpsd supprt * FIX : Upload of a modified single GPX track node was not working anymore (fixes #1141) * ADD : Support for GeoTagged images. qmake GEOIMAGE=1 to activate. requires exiv2 (by Timo Schlüßler) * ADD : Move to the next field on enter in properties dock tags (by Travers Carter) (Refs #1137) * ADD : revised OSB format. Allows to use large map files directly from disk with low memory footprint. * FIX : Native render doesn't render anything at high lat/long values(by Travers Carter) (Closes #1135) * FIX : Expand tables in the properties dock to the available width by default (by Travers Carter) (Closes #1136) * FIX : make download dialog a less cluttered * FIX : update the "created_by" tag at each update, not only add. * ADD : Check if there are empty roads/relations during a download and propose to mark them for deletion * ADD : "visible" action in layers menu * FIX : properly detect if roads are breakable/joinable and update menus accordingly * FIX : Handle "NotYetDownloaded" for Relations * ADD : scalable POI icons in styles * ADD : +/- buttons on zooming slippy map so single button devices can use it too * FIX : only activate upload menu when there is something to upload * ADD : ability to use svg for node icons * ADD : tab filtering and color code to Layer dock * FIX : manage road conflicts from downloads * ADD : continue road if selected node belongs to only 1 road and is at one end * ADD : MRU for opened and imported files * ADD : menu option to show/hide a selectable relation bounding box * ADD : preference option for focus/hover/relations colors * ADD : Create one layer per track during GPX import * ADD : Info dock for layers * ADD : menu option to show/hide scale * ADD : "Duplicate", "Apply", "Up", "Down" functionality to the style editor * FIX : another try at solving the "long-ways-at-high-zoom-makes-Merkaartor-unusable" problem (closes #1110) * ADD : names rendering in styles * ADD : save last download layer to MDCs * ADD : switch to integer internal coordinates. Coordinates now vary from -INT_MAX to +INT_MAX rather than -M_PI / +M_PI * FIX : 412 when uploading joined/split roads * ADD : layer menu in menubar * ADD : display viewport coordinates in status bar * ADD : (almost) generalize progress dialogs * ADD : support (initial) of GPS devices / NMEA log replay * ADD : option to show/hide track segments * ADD : option to show/hide non-stylized trackpoints * ADD : option to show/hide street names on the map * ADD : Render to bitmap via native engine. * ADD : Render to SVG via Osmarender (requires libxml2/libxslt; inkscape required to generate bitmap). Closes #694 v0.11 * ADD : Export to KML * ADD : Export to GPX + proper waypoint saving in MDC documents * ADD : Shift-Right button to drag-zoom * FIX : Qt slows to a crawl when drawing lines offscreen to a large virtual canvas, clipping enabled or not (Qt bug?). Try to optimize roads/track segments drawing to cope with this. * FIX : Save also the redo history in a MDC document * FIX : Allow deletion of a node from a track without deleting the whole segment * FIX : Add a preference option to disable styling for Track layers + re-inject default waypoint painting from dantje * ADD : non-uplodable tags; tags with key beginnig and ending with an underscore ("_") won't be uploaded * ADD : ability to commit features from non-uplodable layers to the dirty layer, i.e. make them uploadable * FIX : bump MDC documents to version 1.1 due to bug-fixes in history saving; history from version 1.0 MDC won't be imported. * ADD : Basic support for waypoints/logpoints from gpx files * ADD : altitude and velocity to NMEA import * FIX : background image cache: delete older images from cache first * ADD : context menu functionality to the map * FIX : Show tracksegment even if it only intersects the viewport * ADD : Encode speed and slope in track segments * FIX : Handle relative paths when loading files * FIX : Clip track segments on viewport * ADD : Show length of selected way in info dock * ADD : Display distance in CreateSingleWay * FIX : "Dynamically" display all built-in styles in the preferences dialog rather than pre-defined ones * ADD : special value "_NULL_" to TagSelector; matches non-existent or empty tag * FIX : allow punctuation in tag selector * ADD : "not", "true", "false", "[Default]" keywords to the Tag Selector; "[Default]" specifies the style for features not having a specific (i.e. non-default) style selected. Together with "Type Is", allows for "bug-fixing" styles "a la Maplint" * ADD : Implementation of a binary OSM file format targeted to mobile devices (*.osb); so far, is ~3x smaller and loads ~5x faster; format subject to changes and documentation * FIX : pixmap from background images were not freed, leading to ever growing memory consumption * FIX : problem with map adapters having limited zoom range (e.g. Maplint 12-16) * ADD : Style tag selector by type (e.g "Type is TrackPoint") and presence of tags (e.g. "HasTags"). Allows: 1) To show a generic icon for POI; 2) To display an icon for "lost" points with no roads nor tags. * ADD : clipboard-copy-paste support (Tags only for now). Clipboard format is xml OSM. * ADD : "export selected to OSM" * ADD : Proxy support to SlippyMapWidget + change the kind of download only when interacting with the slippy map * ADD : when deleting roads, ask if nodes should be deleted also * ADD : "View downloaded area": "dot" the areas not downloaded from OSM during the current session * ADD : Save position of last edit session on exit * ADD : Split a road by selecting only the node * ADD : Arrow keys move the map (by Rainer Keller) * FIX : when cascade removing, not all children are deleted if they are present multiple times + avoid having twice the same node contiguous in the a road/relation * FIX : segfault with MDC containing history where a feature is created and deleted * ADD : "Dirty" layer where all modified features go * ADD : "Undo" dock with all undo actions * FIX : Start new road from selected node * FIX : German translation * ADD : Czech translation (Tom Mika) * FIX : History window now displays UTF8 * FIX : Bookmark created from "Download from web" immediately added to bookmarks menu (by rullzer) * FIX : Tags undo was pretty much broken * FIX : Update undo button state after upload * ADD : Make URL in about window selectable (by Max Vasilev) * FIX : Style definitions can now use *,? and [abc] * ADD : Open/Import multiple files * ADD : draw scale * FIX : upload order when merging nodes * FIX : warn when using wrong credentials * ADD : drag the map around with control key for poor Mac owners * FIX : We can now select the move tool everytime * FIX : Reverse on an area doesn't open it anymore * FIX : Select dialog : fix the size of elements * FIX : Roundabout creation. Add tag junction=roundabout * FIX : Autoselect source in download dialog * ADD : Align nodes function * ADD : living_street as a predefined highway tag * FIX : use CoordBox method to zoom a little instead of calling zoom * ADD : caching mechanism for painters * ADD : draw nodes of hovered/selected roads (by Vincent Meurisse) * FIX : make the shortcuts for creating a new road and way less interfering * ADD : support for OSM links in download dialog (Refs #812) (by Timo Schlüßler) * ADD : shortcuts for zoom-in(+) and zoom-out(-) (by Timo Schlüßler) * FIX : keyboard modifiers: ctrl-click toggle; shift-click add; ctrl-add-click prevents road selection; shift-drag selects features which intersects * ADD : Information dock * ADD : Dock menu / shortcuts * ADD : different colors for focus and hover * ADD : Merkaartor icon * FIX : unified version handling * ADD : OpenTopoMap WMS server to list of defaults; OpenAerialMap as TMS (existed as WMS already) * ADD : "Download more" command. Adds to last download layer * ADD : per-layer "zoom all" * ADD : delete layer command * ADD : french translation * ADD : Merkaartor document (*.mdc) * FIX : Apply button in Preferences now updates the main window immediately * FIX : if a feature contains a node more than once, if the node is deleted, only the first occurence is removed * ADD : merge nodes function * FIX : don't ignore "width" tags on export * ADD : translation capabilities * FIX : Misaligned background after view resize * FIX : clipping problem with selected features during resize * FIX : NMEA import timestamps * FIX : don't force to enter an u/p for download * FIX : right background column not drawn in large resolution v0.10 * ADD : warn for older versions of Qt * ADD : save mainwindow layout status (by Daniel van Gerpen) * ADD : improved tag selection mechanism * ADD : per-layer transparency * ADD : background color chooser * FIX : redraw view when joining roads * ADD : generalization of Tile servers (OSM is now part of that group) * ADD : shift-click also prevents roads from selected (previously only alt-click) * ADD : configurable projection type (allow custom zoom in "Merkaartor" projection, for background also) * ADD : configurable zoom factors * ADD : Background tiles caching * ADD : Initial track to road * ADD : Initial osmarender rendering * FIX : decrease memory usage when importing OSM * FIX : increase snap update speed * ADD : ability to load tracks from the command line (by Daniel van Gerpen) * ADD : Mapnik-lookalike style (by Colin Marquardt and Andreas Laas) * ADD : ability to set default style at startup * FIX : Remove compile warnings and c-style casts (by Daniel van Gerpen) * ADD : "created_by" to new features * ADD : navigation: view -> bookmark + add/remove * FIX : warn when OSM userid/password not set * ADD : Export viewport to OSM * FIX : crash when splitting roads (by Daniel van Gerpen) * FIX : various memory leaks and clean ups (by Daniel van Gerpen) * ADD : provide navigation for the slippy map with right and left mouse button (by Daniel van Gerpen) * FIX : zoom around cursor position * ADD : import NMEA logs (crude) (by Chris Browet) * FIX : proper handling of dirty documents (by Chris Browet) * ADD : search on name/tags (by Chris Browet) * FIX : don't crash while createing a roundabout (by Tommi Vainikiainen) * ADD : curved road support * FIX : enhance somewhat visibility of selected items (by Chris Browet) * ADD : export OSM files (by Chris Browet) * ADD : support for OSM backgrounds (by Chris Browet) * ADD : centralized preferences dialog (by Chris Browet) * ADD : support for WMS maps (by Chris Browet) * FIX : remove yahoo maps support (not "legal" way to access tiles) (by Chris Browet) * ADD : support for Yahoo maps backgrounds (by Chris Browet; QMapControl widget by Kai Winter) * ADD : tags autocompletion in related widgets * ADD : paint style editor v0.09 * ADD : support for Noni GPSPlot tracks * ADD : draw natural=wood areas (by Raphael Studer) * FIX : also draw trackpoints that have an icon * FIX : draw unconnected trackpoints * ADD : multiple remove * ADD : save last current directory * ADD : draw landuse=forest area (by Raphael Studer) * ADD : move trackpoints onto a road inserts the point in the road * ADD : draw a lot of more things in merkaartor (by Matt Williams) * ADD : draw hospital area and node * ADD : nice amenity selector for nodes * FIX : use the standard system for predefined tags for highway * ADD : nice landuse selector for roads (areas) * ADD : more amenities (by Matt Williams) * ADD : ability to easily draw an area * ADD : landuse selector for relations * ADD : upload relations to OSM * FIX : compile fixes for gcc 3.x (by Thomas Wood) v0.08 * FIX : work with 0.5 API * ADD : move can now work on a complete way * ADD : non-transparant proxy support * ADD : change cursor when in move mode * FIX : recognize 1 in oneway key * FIX : slightly change default way width * FIX : undo/redo handling for manipulating tags * ADD : ability to draw icons on specific trackpoints * ADD : draw parking symbol from mapnik * ADD : tertiary highway type * FIX : tweak color scheme * ADD : cache road bounding box * FIX : draw parking surface * FIX : tab order of various widgets * ADD : slippy map coordinates selector * FIX : reuse slippy map cache between different invocations * FIX : improve download handling * ADD : join/split/break road actions * ADD : caching algorithm for editstylepainters * FIX : improve rendering on higher zoomed-out levels * ADD : drag box to select a group of elements * ADD : selection box when multiple features are selected * FIX : zoom with wheelbox as in Google maps * FIX : remove irrelevant menu item * ADD : import relations * ADD : view relations in the propertiesdock * ADD : track back to which features a feature belongs * FIX : compile warnings (by Elrond) * ADD : rendering according to correct priority * ADD : create relationships * FIX : also render relations where tags are on the individual roads * FIX : clean up code and compile warnings (by Elrond) v0.07 18 aug 2007 * ADD : nice mappaint mechanism * FIX : downloading same area twice doesn't create upload conflicts anymore * FIX : keep tag content when editing them in the tag table * FIX : correctly keep track of the tag table size * FIX : remove 0.3 API support * ADD : gzipped downloading * ADD : nice painting for water * ADD : file->new menu option to start a new map * FIX : change current directory when opening a file * FIX : surpress drawing artefact when creating a new segment * FIX : avoid Qt to have to process download notifications recursively * ADD : scripts to create the windows installation package * ADD : create way from selected segments tool * FIX : don't systematically add width tags to segments * FIX : streamline changing the width of a segment * FIX : bring back drawing of traffic direction indicators * FIX : show more segments on greater zoom levels * FIX : make user interface work with Qt 4.2 again v0.06 5 dec 2006 * FIX : also recognize true/false for oneway tag * FIX : correctly update roads when downloading the same road twice * ADD : type combobox to set highway tag * FIX : no busy waiting for OSM download * ADD : progress dialog while downloading from OSM * FIX : refresh view immediatly after download * FIX : download segments outside original bounding box for roads * FIX : don't call QStatusbar methods from a paintEvent * FIX : speed up drawing of roads when zoomed out * ADD : undo/redo icons + actions added to toolbar * FIX : improve speed with a double buffer for static content * ADD : change tags on multiple elements at the same time * ADD : delete tag tool * ADD : download with 0.4 API * ADD : upload with 0.4 API * ADD : draw arrows on GPX tracks * ADD : optionally download trackpoints from OSM * ADD : ability to contact OSM at a different port * ADD : allow panning with right mouse button from all interactions * FIX : keep correct startpoint when changing view during segment drawing * ADD : debugging mode * FIX : create node bad url * ADD : double carriageway tool * FIX : upload segments before roads and nodes before segments * ADD : draw roundabout tool * ADD : easy single way creation * FIX : improve speed with large number of trackpoints v0.05 15 nov 2006 * ADD : connection roads by dragging end points * FIX : don't crash after undoing deletion and doing something else * ADD : go to selection interaction after upload/import/open/download * FIX : make the Cancel button work in the import OSM progress dialog * FIX : add a id hash map to speed up importing OSM file * ADD : bookmark system for downloading from OSM * FIX : don't jump when zooming after panning * FIX : use the same step to zoom in and out * FIX : calculate correct bounding box * FIX : always update tagview and fix memory leak * FIX : performace improvements * ADD : oneway markers * ADD : reverse way/road action * ADD : traffic direction combobox in road properties * ADD : load tags for nodes * ADD : rendering of parks pitches and water reservoirs * ADD : set view to coordinates dialog box * FIX : after downloading from web focus on downloaded area v0.04 29 oct 2006 * FIX : reset brush when drawing zoom window * FIX : include way id when sending updates to Openstreetmap * FIX : always prefer to select a road * ADD : delete nodes,segments,roads on server * ADD : ability to remove segments from roads, and influence order * ADD : user recognizable names in upload window * FIX : use a dotted line for gpx track segments * ADD : split roads by adding a node * ADD : zoom in/out with the scrollwheel * ADD : debian package v0.03 25 oct 2006 * FIX : compilation fixes for linux * ADD : pan view by dragging * ADD : create node * FIX : don't draw nodes when zoomed out * FIX : draw segments stronger when zoomed out * FIX : make roads easier to select, segments harder v0.02 24 oct 2006 * ADD : update/commit style merging and conflict resolution with openstreetmap * ADD : delete node/segment * FIX : move trackpoints accessible from editor toolbar * ADD : layers * ADD : support for OSM ways v0.01 20 oct 2006 * ADD : upload node/segments to OSM * ADD : download segment tags * ADD : edit node properties (long,lat) * ADD : edit segment properties (width,tags) v0.00 17 oct 2006 * ADD : download node/segments from OSM * ADD : display node/segments/tracks * ADD : add segments * ADD : move nodes merkaartor-0.18.1/CREDITS000066400000000000000000000005161177067165300150070ustar00rootroot00000000000000Merkaartor is re-using part of these great projects: Tango Desktop Project (http://tango.freedesktop.org/Tango_Desktop_Project) fir icons QMapControl by Kai Winter (http://medieninf.de/qmapcontrol/) for the original background map layers Qadastre by Pierre Ducroquet (http://gitorious.org/qadastre) for the frenc cadastre background merkaartor-0.18.1/HACKING000066400000000000000000000006321177067165300147550ustar00rootroot00000000000000This are some basic notes on hacking on merkaartor - fiddling with tagging templates see Templates to add/modify templates - adding a language edit Merkaartor.pro and add your language edit Preferences/PreferencesDialog function initLanguages lupdate -> linguist -> lrelease (see the Qt docs about these) If you want to change the default rendering of any of those items see the Styles/Classic.mas file. merkaartor-0.18.1/INSTALL000066400000000000000000000024121177067165300150150ustar00rootroot00000000000000Prerequisites: * Working C++ compiler * Qt 4.4.0 or later development environment On (K)ubuntu Edgy it is sufficient to install the qt4-dev package to satisfy these requirements. Instructions 1. Change directory to the one in which you unpacked Merkaartor For example $ cd /home/me/src/Merkaartor-0.xx 2. Run qmake $ qmake Note that you need the Qt4 version of qmake - running the Qt3 version will generate incorrect makefiles. If both are installed, take care to run the correct version. For example, on Fedora run $ qmake-qt4 and on (K)ubuntu run $ /usr/share/qt4/bin/qmake 2.1 Other qmake parameters for Merkaartor.pro PREFIX= - base prefix for installation (unix only) TRANSDIR_MERKAARTOR= - where will the Merkaartor translations be installed TRANSDIR_SYSTEM= - where your global Qt translation directory is NODEBUG=1 - release target NOUSEWEBKIT - disable use of WebKit (Yahoo adapter) see http://wiki.openstreetmap.org/wiki/Merkaartor/Compiling for the complete list 3. Run your build tool, make for posix like systems, nmake for Windows C++ Build system $ make or $ nmake 4. If you are lucky, you'll find an executable in the binaries subdirectory. Otherwise mail a complete error log to bvh-osm@irule.be Bart Vanhauwaert merkaartor-0.18.1/Icons/000077500000000000000000000000001177067165300150405ustar00rootroot00000000000000merkaartor-0.18.1/Icons/48x48/000077500000000000000000000000001177067165300156375ustar00rootroot00000000000000merkaartor-0.18.1/Icons/48x48/merkaartor.png000066400000000000000000000130471177067165300205210ustar00rootroot00000000000000PNG  IHDR00`nsRGB pHYs  tIME %>IDATX-xُdy-w[5NLϾ$EqHIa(JPLgC!8C  H[pL-KdHdDwp֞齫k-y~9G~n{- n?=eaZQWLkصReۭn$"gL%q'6L?_;Qif1Pg]d,$s37Uz~ nưLE#쳏>O`uu%;8p&5v0жdҧ[˺?kZC)P ۂcb/>d}tU;7/}t2v,a pxW$a[ &;Е9ta/<]hr"o &d ڈb20 T 08 9;}Εeƍw߿:V>r϶ccq/Db=(j~j9cri4:w7L8'xsWkw✋kZ{CHJa^g qvi%f&쿿}R?Uj :2;Ŀly8HL`4Zݒq@7HձN]>l {ȇ` \Gz8RJhE9p`ګ|+Wݞc #$)Cr`>|IFB:URl6~yo^[bba:x{^|,!1]3G Ì>v?{ۨq4'a[P>џܐ_)>nFr~qsEI\ZUi/;=0 ơy.?37-RtץHj{M+eB(U2UL岌gN2گ,^l툽ӄQz7ʼnSgu +)?.m<}sI<:&7fq;+ް#Puns_)evȹO4ͻXYƣAyv_}PfQ X0 @#"l!QJ 3쏴 @Ckj% .g N'b' 8c<ՍIsGyJ , (EDR AP*8CEC) ZilF>ZY1IIF[j3lsS0 dx%ڷwk%&ljo6MD (׶:?˝ !eavǏtwY^xSHp$EgV4L{q`-l/P1Q]NZ%RgG %槰xi!K9?!,]@T2LhB>8ֶa@/}~Qܜ=q~*!6#$ qM5`URC)';|-"İ\-Oև7(dD"B4(a c< EDC Jhhѷmm~zZ J4RC* };j.WdK䞼=H%M)40 $lpsV6C0!IƎ3h&[b ?k() |6qD}W-ZDiI)#Z:].yc a45!Mñ@Π4~9!t036z#|l }\]Fj刺DR`ձ95< zܰ aܔ"{NsqkZ~<|)V"xhw $ՎMlĜ2+b!(R@kLAuU.}\셣1-qKZkC3C/jIRRjF&:Y|GG (A 4p,_.+7i ?6{GrLP 7a#rJ6T34;ZJgPJdpkYe3 Mk /R0 1'p9 lookڗoE(,mR߸haD2ht7F 2h@ĉjQBj%Q4`&i$Zñ1`u݊榲3]Sc'V4ν6sQjO_xa>fڶѦ@ubB9vg%5 &N <5kwn_:])QB&*j61V+rt;"i ),CN>_nhllTrN}fu T {h{#Fkm}f:DޅBHa\ȱ|z\#(K\JE ` a #{h[e4L;W=:|uU7WO9.-CZA>t`^cl84u3Z%QP+"RRBفx8J0?I.P+iƁHCʌ'in8[Mz08wOfD8;;>cR&Z0Q%d#N0 yw7W AZv}!ژayIdE^v" #B7d+?Go4M YB ym`$b!a~H2LcJVjaea <| Yl@B!"q2$La{3uOmk{3g˷[g F()%,٬SȻy1䌫^o%2(eDʘ-o\l(n%88 c|skg7;4~q7/ibVLC߻,=u{9U Y_9ɧ'4DI)eYi084q3cŕHZru8(dw19Ɔ#؜q*G֞ou+ ˋK˭N?L+fX v`cL8J(]㽏Dj%l,cl>mg4vJHRQ@(3+5Ƀ PJ: RH+N+ ||yk^xxZKB W8k#a%P +̑Ci]J5pn}#M[!$\C }yrQ B>qJI0fH0f z{+?DwZRRg#ЍF+jlo[ ?lComA B a6 u*P` @-86w0w_8/!c7lZݺugɓNZ#ms*6rb8~mQRJg*Ii?ں~m-ؿO u?Hv:rzض}TptG /J`;aS) q'|>MԧYpQXunޏ7:nF^~ƻW׶&jF?ԓTJ;\{ᡓ[[_k%)+}5t2*@=qH)!jhh,ǟx՟;I(FR(4oafSRJ(H:\Vki$N6?&evjv_Y\ꌈ;R$PJ'/7Z4`["J B(eq +zA*zI-ۙb8IAae)Хջ1Rr {N?UloF]5Prɥ0nSf"vPX&*ETi( J֚BqБfG6tG B(3(%aZkD?~L>p;oHg{1InE v9bcKCX\hͭqcȺ @krXe sZdք2hi&~~? j*Aw `ܰ''0H G)!qRNI$RPsnnaea30nDRʸmg*zjTfh do4]dr}Q-TIENDB`merkaartor-0.18.1/Icons/AllIcons.qrc000066400000000000000000000546451177067165300172710ustar00rootroot00000000000000 actions/GPS.png actions/camera.png Merkaartor.xpm Frisius.xpm add.xpm empty.xpm eye.xpm move.xpm rotate.png small-remove.xpm remove.xpm toolselect.xpm zoomico.xpm reverse.xpm edit-undo.xpm edit-redo.xpm edit-copy.png edit-cut.png edit-paste.png emblem-readonly.png actions/align_nodes.png actions/axisalign.png actions/break_apart_roads.png actions/create_area.png actions/create_node.png actions/create_road.png actions/detach_node.png actions/download.png actions/download_more.png actions/edit_copy.png actions/edit_delete.png actions/edit_move.png actions/edit_rotate.png actions/edit_paste.png actions/edit_paste_tags.png actions/join_areas.png actions/join_roads.png actions/redo.png actions/reverse_road.png actions/save.png actions/select.png actions/split_area.png actions/split_road.png actions/spread_nodes.png actions/subdivide_road.png actions/terrace_building.png actions/undo.png actions/upload.png actions/document_import.png actions/document_new.png actions/document_open.png actions/find.png actions/goto.png actions/offline.png actions/preferences.png actions/zoom_fit_best.png actions/zoom_in.png actions/zoom_out.png actions/emblem-unreadable.png actions/emblem-important.png actions/software-update-available.png actions/list-add.png actions/list-remove.png geotagged.png Grab.png grabbing.png actions/edit-cut.png actions/transform-move.png actions/transform-rotate.png actions/transform-scale.png dialog-error.png dialog-warning.png Mapnik/airport.png Mapnik/arrow_back.png Mapnik/arrow.png Mapnik/beach.png Mapnik/bus_stop.png Mapnik/forest.png Mapnik/grave_yard.png Mapnik/hospital.png Mapnik/level_crossing2.png Mapnik/level_crossing.png Mapnik/london-tube-24.png Mapnik/mini_round.png Mapnik/nature_reserve2.png Mapnik/nature_reserve.png Mapnik/parking.png Mapnik/peak.png Mapnik/pint.png Mapnik/place_of_worship.png Mapnik/post_box.png Mapnik/post_office.png Mapnik/postoffice.png Mapnik/power_tower.png Mapnik/pub.png Mapnik/recycle.png Mapnik/recycling.png Mapnik/station.png Mapnik/station_small.png Mapnik/tower.png Places/place_hamlet.png Places/place_village.png Places/place_town.png Mapnik/bus_stop.p.12.png map-icons/square.small/accommodation.png map-icons/square.small/education.png map-icons/square.small/food.png map-icons/square.small/geocache.png map-icons/square.small/health.png map-icons/square.small/incomming.png map-icons/square.small/misc.png map-icons/square.small/money.png map-icons/square.small/nautical.png map-icons/square.small/people.png map-icons/square.small/places.png map-icons/square.small/public.png map-icons/square.small/recreation.png map-icons/square.small/religion.png map-icons/square.small/rendering.png map-icons/square.small/shopping.png map-icons/square.small/sightseeing.png map-icons/square.small/sports.png map-icons/square.small/transport.png map-icons/square.small/unknown.png map-icons/square.small/vehicle.png map-icons/square.small/waypoint.png map-icons/square.small/wlan.png map-icons/square.small/accommodation/camping.png map-icons/square.small/accommodation/chalet.png map-icons/square.small/accommodation/empty.png map-icons/square.small/accommodation/guest_house.png map-icons/square.small/accommodation/hostel.png map-icons/square.small/accommodation/hotel.png map-icons/square.small/accommodation/motel.png map-icons/square.small/accommodation/shelter-bw.png map-icons/square.small/accommodation/shelter.png map-icons/square.small/accommodation/youth-hostel.png map-icons/square.small/education/empty.png map-icons/square.small/education/university.png map-icons/square.small/food/bacon_and_eggs.png map-icons/square.small/food/bar.png map-icons/square.small/food/biergarten.png map-icons/square.small/food/cafe.png map-icons/square.small/food/empty.png map-icons/square.small/food/fastfood.png map-icons/square.small/food/icecream.png map-icons/square.small/food/pizzahut.png map-icons/square.small/food/pub.png map-icons/square.small/food/restaurant.png map-icons/square.small/food/snacks.png map-icons/square.small/geocache/empty.png map-icons/square.small/geocache/geocache_drivein.png map-icons/square.small/geocache/geocache_earth.png map-icons/square.small/geocache/geocache_event.png map-icons/square.small/geocache/geocache_found.png map-icons/square.small/geocache/geocache_math.png map-icons/square.small/geocache/geocache_multi.png map-icons/square.small/geocache/geocache_mystery.png map-icons/square.small/geocache/geocache_night.png map-icons/square.small/geocache/geocache_traditional.png map-icons/square.small/geocache/geocache_virtual.png map-icons/square.small/geocache/geocache_webcam.png map-icons/square.small/health/doctor.png map-icons/square.small/health/emergency.png map-icons/square.small/health/empty.png map-icons/square.small/health/hospital.png map-icons/square.small/health/pharmacy.png map-icons/square.small/health/veterinary.png map-icons/square.small/incomming/empty.png map-icons/square.small/misc/bunny.png map-icons/square.small/misc/butterfly.png map-icons/square.small/misc/construction.png map-icons/square.small/misc/danger.png map-icons/square.small/misc/deprecated.png map-icons/square.small/misc/door.png map-icons/square.small/misc/empty.png map-icons/square.small/misc/information.png map-icons/square.small/misc/landmark.png map-icons/square.small/misc/landmark/barn.png map-icons/square.small/misc/landmark/bunker.png map-icons/square.small/misc/landmark/chimney.png map-icons/square.small/misc/landmark/crane.png map-icons/square.small/misc/landmark/empty.png map-icons/square.small/misc/landmark/farm.png map-icons/square.small/misc/landmark/gasometer.png map-icons/square.small/misc/landmark/lighthouse.png map-icons/square.small/misc/landmark/mine.png map-icons/square.small/misc/landmark/mountain_pass.png map-icons/square.small/misc/landmark/peak.png map-icons/square.small/misc/landmark/peak_small.png map-icons/square.small/misc/landmark/pier.png map-icons/square.small/misc/landmark/plant.png map-icons/square.small/misc/landmark/power.png map-icons/square.small/misc/landmark/range.png map-icons/square.small/misc/landmark/reservoir_covered.png map-icons/square.small/misc/landmark/spring.png map-icons/square.small/misc/landmark/survey_point.png map-icons/square.small/misc/landmark/tower.png map-icons/square.small/misc/landmark/trees.png map-icons/square.small/misc/landmark/wastewater_plant.png map-icons/square.small/misc/landmark/water_tower.png map-icons/square.small/misc/landmark/windmill.png map-icons/square.small/misc/landmark/works.png map-icons/square.small/misc/lock_closed.png map-icons/square.small/misc/lock_open.png map-icons/square.small/misc/no_icon.png map-icons/square.small/misc/no_smoking.png map-icons/square.small/misc/proposed.png map-icons/square.small/misc/tap_drinking.png map-icons/square.small/money/atm.png map-icons/square.small/money/bank.png map-icons/square.small/money/empty.png map-icons/square.small/money/exchange.png map-icons/square.small/nautical/alpha_flag.png map-icons/square.small/nautical/aqueduct.png map-icons/square.small/nautical/empty.png map-icons/square.small/nautical/lock_gate.png map-icons/square.small/nautical/turning.png map-icons/square.small/nautical/weir.png map-icons/square.small/people/empty.png map-icons/square.small/people/friendsd.png map-icons/square.small/people/friends.png map-icons/square.small/people/home.png map-icons/square.small/people/work.png map-icons/square.small/places/empty.png map-icons/square.small/places/settlement.png map-icons/square.small/public/empty.png map-icons/square.small/recreation/bicycling.png map-icons/square.small/recreation/cinema.png map-icons/square.small/recreation/empty.png map-icons/square.small/recreation/music.png map-icons/square.small/recreation/nightclub.png map-icons/square.small/recreation/shelter.png map-icons/square.small/recreation/theme_park.png map-icons/square.small/recreation/zoo.png map-icons/square.small/recreation/theater.png map-icons/square.small/recreation/park.png map-icons/square.small/recreation/water_park.png map-icons/square.small/recreation/garden.png map-icons/square.small/recreation/picnic.png map-icons/square.small/recreation/playground.png map-icons/square.small/recreation/common.png map-icons/square.small/recreation/nature_reserve.png map-icons/square.small/religion/cemetery.png map-icons/square.small/religion/chapel.png map-icons/square.small/religion/church.png map-icons/square.small/religion/empty.png map-icons/square.small/shopping/diy_store.png map-icons/square.small/shopping/empty.png map-icons/square.small/shopping/kaufhof.png map-icons/square.small/shopping/kiosk.png map-icons/square.small/shopping/laundry.png map-icons/square.small/sightseeing/archaeological.png map-icons/square.small/sightseeing/battlefield.png map-icons/square.small/sightseeing/castle.png map-icons/square.small/sightseeing/empty.png map-icons/square.small/sightseeing/memorial.png map-icons/square.small/sightseeing/monument.png map-icons/square.small/sightseeing/museum.png map-icons/square.small/sightseeing/ruins.png map-icons/square.small/sightseeing/viewpoint.png map-icons/square.small/sports/basketball.png map-icons/square.small/sports/bicycle.png map-icons/square.small/sports/centre.png map-icons/square.small/sports/cycling.png map-icons/square.small/sports/dart.png map-icons/square.small/sports/empty.png map-icons/square.small/sports/football.png map-icons/square.small/sports/golf.png map-icons/square.small/sports/indoor_pool.png map-icons/square.small/sports/kiteflying.png map-icons/square.small/sports/mountain_bike.png map-icons/square.small/sports/pitch.png map-icons/square.small/sports/pool.png map-icons/square.small/sports/racquetball.png map-icons/square.small/sports/riding.png map-icons/square.small/sports/skiing.png map-icons/square.small/sports/soccer.png map-icons/square.small/sports/swimming.png map-icons/square.small/sports/tennis.png map-icons/square.small/transport/airport.png map-icons/square.small/transport/bridge.png map-icons/square.small/transport/bus.png map-icons/square.small/transport/car.png map-icons/square.small/transport/empty.png map-icons/square.small/transport/ferry.png map-icons/square.small/transport/handicapped.png map-icons/square.small/transport/harbour.png map-icons/square.small/transport/park_ride.png map-icons/square.small/transport/pedestrian.png map-icons/square.small/transport/railway.png map-icons/square.small/transport/rapid_train.png map-icons/square.small/transport/taxi.png map-icons/square.small/transport/ticket-machine.png map-icons/square.small/transport/tram.png map-icons/square.small/transport/turntable.png map-icons/square.small/transport/underground.png map-icons/square.small/vehicle/bicycle_rental.png map-icons/square.small/vehicle/car_rental.png map-icons/square.small/vehicle/car_sharing.png map-icons/square.small/vehicle/caution.png map-icons/square.small/vehicle/crossing.png map-icons/square.small/vehicle/crossing_small.png map-icons/square.small/vehicle/emergency_phone.png map-icons/square.small/vehicle/empty.png map-icons/square.small/vehicle/exit.png map-icons/square.small/vehicle/ford.png map-icons/square.small/vehicle/fuel_station.png map-icons/square.small/vehicle/motorbike.png map-icons/square.small/vehicle/parking.png map-icons/square.small/vehicle/repair_shop.png map-icons/square.small/vehicle/restrictions.png map-icons/square.small/vehicle/restrictions/bollard-bw.png map-icons/square.small/vehicle/restrictions/bollard.png map-icons/square.small/vehicle/restrictions/dead_end.png map-icons/square.small/vehicle/restrictions/incline.png map-icons/square.small/vehicle/restrictions/motorbike.png map-icons/square.small/vehicle/restrictions/parking.png map-icons/square.small/vehicle/restrictions/play_street.png map-icons/square.small/vehicle/restrictions/right_of_way.png map-icons/square.small/vehicle/restrictions/road_works.png map-icons/square.small/vehicle/restrictions/roundabout_left.png map-icons/square.small/vehicle/restrictions/roundabout_right.png map-icons/square.small/vehicle/restrictions/stop.png map-icons/square.small/vehicle/restrictions/traffic_jam.png map-icons/square.small/vehicle/restrictions/traffic-light.png map-icons/square.small/vehicle/services.png map-icons/square.small/vehicle/toll_station.png map-icons/square.small/vehicle/tunnel.png map-icons/square.small/vehicle/turning_circle.png map-icons/square.small/vehicle/viaduct.png map-icons/square.small/vehicle/zebra_crossing.png map-icons/square.small/waypoint/empty.png map-icons/square.small/waypoint/flag.png map-icons/square.small/waypoint/routepoint.png map-icons/square.small/waypoint/wpt1.png map-icons/square.small/waypoint/wpt2.png map-icons/square.small/waypoint/wpt3.png map-icons/square.small/waypoint/wpt4.png map-icons/square.small/waypoint/wpt5.png map-icons/square.small/waypoint/wpt6.png map-icons/square.small/waypoint/wpt7.png map-icons/square.small/waypoint/wpt8.png map-icons/square.small/waypoint/wpt9.png map-icons/square.small/wlan/closed.png map-icons/square.small/wlan/empty.png map-icons/square.small/wlan/open.png map-icons/square.small/wlan/pay.png map-icons/square.small/wlan/wep.png map-icons/square.small/shopping/confectioner.png map-icons/square.small/shopping/groceries/butcher.png map-icons/square.small/shopping/groceries/fruits.png map-icons/square.small/shopping/groceries/bakery.png map-icons/square.small/shopping/computers.png map-icons/square.small/shopping/supermarket.png map-icons/square.small/public/recycling/trash-bin.png map-icons/square.small/public/post_box.png map-icons/square.small/public/recycling.png map-icons/square.small/public/post_office.png map-icons/square.small/public/administration/court_of_law.png map-icons/square.small/public/administration/prison.png map-icons/square.small/public/firebrigade.png map-icons/square.small/public/telephone.png map-icons/square.small/public/toilets.png map-icons/square.small/public/recycling_small.png map-icons/square.small/public/arts_centre.png map-icons/square.small/public/police.png map-icons/classic.small/vehicle/restrictions/maxheight.png map-icons/classic.small/vehicle/restrictions/maxlength.png map-icons/classic.small/vehicle/restrictions/maxweight.png map-icons/classic.small/vehicle/restrictions/maxwidth.png Tiles/000.png Tiles/100.png Tiles/101.png Tiles/110.png Tiles/111.png Gps_Marker.svg Merkaartor_100x100.png Frisius_100x100.png Merkaartor_splash.png Frisius_splash.png merkaartor-0.18.1/Icons/Frisius.xpm000066400000000000000000000213321177067165300172130ustar00rootroot00000000000000/* XPM */ static char * Frisius_xpm[] = { "24 24 476 2", " c #897A6D", ". c #82766B", "+ c #766C61", "@ c #776C62", "# c #776B60", "$ c #756A60", "% c #766C60", "& c #71695D", "* c #7B7066", "= c #736A5F", "- c #6D635A", "; c #706459", "> c #6F6458", ", c #73695D", "' c #72685D", ") c #70665D", "! c #6E635A", "~ c #6D6359", "{ c #6E645A", "] c #6C6259", "^ c #6F655C", "/ c #71675E", "( c #746A61", "_ c #8A7E73", ": c #7E7366", "< c #786E62", "[ c #796D61", "} c #746A5E", "| c #71685C", "1 c #786D61", "2 c #6C6459", "3 c #615A52", "4 c #6F645B", "5 c #6C635A", "6 c #5A524C", "7 c #5A524B", "8 c #645A52", "9 c #625950", "0 c #6A6058", "a c #6C6257", "b c #6F655B", "c c #71665D", "d c #6C6158", "e c #70655D", "f c #84796E", "g c #776D62", "h c #7E7468", "i c #746A5F", "j c #807569", "k c #655D53", "l c #524D48", "m c #615C55", "n c #7D7369", "o c #87796F", "p c #9C8C7E", "q c #B7A594", "r c #B2A18E", "s c #B9A592", "t c #A29382", "u c #8C8073", "v c #8B7E72", "w c #776B62", "x c #72665D", "y c #7A6C62", "z c #786A61", "A c #7E7167", "B c #887D72", "C c #7D7266", "D c #7F7469", "E c #776C60", "F c #84796D", "G c #736960", "H c #746962", "I c #847A6E", "J c #82776B", "K c #8A7D71", "L c #B5A493", "M c #BEAB98", "N c #AF9F8D", "O c #A69686", "P c #A89787", "Q c #B7A493", "R c #BFAC9A", "S c #B5A394", "T c #9B8B7F", "U c #7B6E63", "V c #7D7267", "W c #7B6F66", "X c #7D7268", "Y c #84776D", "Z c #847B6F", "` c #7E7469", " . c #7A6F63", ".. c #786D62", "+. c #9E9081", "@. c #908477", "#. c #6B6259", "$. c #72695E", "%. c #8D8074", "&. c #9F9082", "*. c #AFA08F", "=. c #BAA797", "-. c #B9A696", ";. c #B8A795", ">. c #B3A292", ",. c #AC9A8C", "'. c #A49587", "). c #7E7166", "!. c #7C6F64", "~. c #7A6F65", "{. c #7F746A", "]. c #85756A", "^. c #8C8276", "/. c #72685C", "(. c #7B7064", "_. c #BFAC9B", ":. c #D1BDAA", "<. c #C1B09C", "[. c #B8A596", "}. c #AF9F91", "|. c #A99A8B", "1. c #A59689", "2. c #AC9C8B", "3. c #A79688", "4. c #A9988A", "5. c #AD9B8C", "6. c #AA9A8B", "7. c #85796C", "8. c #83756C", "9. c #7B6D62", "0. c #7D7166", "a. c #837368", "b. c #87786D", "c. c #87786E", "d. c #86766D", "e. c #8C8074", "f. c #756B60", "g. c #70675C", "h. c #6F665C", "i. c #665D53", "j. c #6A6158", "k. c #665D54", "l. c #635A53", "m. c #5C534F", "n. c #59514B", "o. c #7A6D63", "p. c #948679", "q. c #AD9D8C", "r. c #B4A291", "s. c #817468", "t. c #85796B", "u. c #7B6C61", "v. c #807167", "w. c #7C6D64", "x. c #7A6960", "y. c #82736A", "z. c #8A7D6F", "A. c #857A6E", "B. c #7C7265", "C. c #7F7569", "D. c #81766A", "E. c #7C7266", "F. c #4F4844", "G. c #514944", "H. c #534A45", "I. c #625951", "J. c #83776B", "K. c #BAA897", "L. c #BDA998", "M. c #C2B09D", "N. c #B7A593", "O. c #B8A694", "P. c #86796D", "Q. c #817469", "R. c #7C6D61", "S. c #7B6F64", "T. c #75695E", "U. c #71655B", "V. c #776C61", "W. c #776E64", "X. c #7A7166", "Y. c #8B7F75", "Z. c #7F7367", "`. c #887D70", " + c #83796C", ".+ c #4A4640", "++ c #4D4842", "@+ c #564F48", "#+ c #74695E", "$+ c #686056", "%+ c #938578", "&+ c #988A7B", "*+ c #97887A", "=+ c #B9A695", "-+ c #B3A192", ";+ c #85786C", ">+ c #86796E", ",+ c #8E8072", "'+ c #76695F", ")+ c #6B6158", "!+ c #74675E", "~+ c #7E7168", "{+ c #756B62", "]+ c #6E645C", "^+ c #7D7468", "/+ c #776F63", "(+ c #5B534C", "_+ c #786C63", ":+ c #7E7369", "<+ c #998C7D", "[+ c #988A7E", "}+ c #86796F", "|+ c #9F9183", "1+ c #928377", "2+ c #8D7F74", "3+ c #8F8175", "4+ c #83756A", "5+ c #796D63", "6+ c #786E64", "7+ c #71685E", "8+ c #776B61", "9+ c #71685F", "0+ c #7E746A", "a+ c #7D7365", "b+ c #82766A", "c+ c #746A60", "d+ c #6F655D", "e+ c #AC9C8C", "f+ c #CAB7A3", "g+ c #C6B4A1", "h+ c #B8A697", "i+ c #877B6E", "j+ c #B7A595", "k+ c #96857B", "l+ c #7A6C63", "m+ c #74695F", "n+ c #796C61", "o+ c #7C6F66", "p+ c #7F7268", "q+ c #756D63", "r+ c #72695F", "s+ c #776D63", "t+ c #776E61", "u+ c #7B7166", "v+ c #645B53", "w+ c #6B625A", "x+ c #665D55", "y+ c #82766C", "z+ c #B19F90", "A+ c #BCAA98", "B+ c #766C62", "C+ c #B3A190", "D+ c #887A6E", "E+ c #85786D", "F+ c #7B6E65", "G+ c #796B62", "H+ c #7E7066", "I+ c #8A7C71", "J+ c #726860", "K+ c #6C645A", "L+ c #71675F", "M+ c #716860", "N+ c #796F64", "O+ c #57524A", "P+ c #5F5751", "Q+ c #7F766C", "R+ c #83776D", "S+ c #B4A394", "T+ c #B2A191", "U+ c #B1A091", "V+ c #A29082", "W+ c #7E7267", "X+ c #7E7065", "Y+ c #7E7266", "Z+ c #807369", "`+ c #796C60", " @ c #87796E", ".@ c #8C7E72", "+@ c #786F67", "@@ c #7A7168", "#@ c #6E655C", "$@ c #6B6257", "%@ c #6B6359", "&@ c #625A52", "*@ c #4E4A43", "=@ c #5B534E", "-@ c #5F5750", ";@ c #625B54", ">@ c #776D64", ",@ c #9E8F82", "'@ c #938478", ")@ c #8C7E74", "!@ c #968579", "~@ c #938376", "{@ c #7E7368", "]@ c #8A7E71", "^@ c #7F7168", "/@ c #85766C", "(@ c #7D7066", "_@ c #83756B", ":@ c #6F665E", "<@ c #786E65", "[@ c #70685E", "}@ c #6D655C", "|@ c #665F54", "1@ c #635C55", "2@ c #58534A", "3@ c #544F49", "4@ c #625952", "5@ c #5C524E", "6@ c #635A54", "7@ c #73675F", "8@ c #908577", "9@ c #9A8B7D", "0@ c #938579", "a@ c #7A6F66", "b@ c #887B70", "c@ c #84766B", "d@ c #807368", "e@ c #83736A", "f@ c #98897E", "g@ c #796F67", "h@ c #766B62", "i@ c #70675D", "j@ c #675E56", "k@ c #665E54", "l@ c #5A544D", "m@ c #6B635A", "n@ c #625C53", "o@ c #605751", "p@ c #58514B", "q@ c #5D564E", "r@ c #98897B", "s@ c #C3B09D", "t@ c #8A7D70", "u@ c #524C48", "v@ c #8D7E73", "w@ c #84766A", "x@ c #837469", "y@ c #7D7065", "z@ c #88786E", "A@ c #7A7065", "B@ c #766D63", "C@ c #80766C", "D@ c #776D65", "E@ c #686258", "F@ c #59534B", "G@ c #5D564F", "H@ c #5A544E", "I@ c #807568", "J@ c #645C56", "K@ c #5D5650", "L@ c #5F564E", "M@ c #72675D", "N@ c #524C46", "O@ c #504943", "P@ c #59524B", "Q@ c #73695E", "R@ c #7C7269", "S@ c #5D554F", "T@ c #5E564F", "U@ c #958779", "V@ c #746A62", "W@ c #84776B", "X@ c #524C47", "Y@ c #534D47", "Z@ c #4F4A45", "`@ c #665D56", " # c #85776C", ".# c #7A6E64", "+# c #796E64", "@# c #786D64", "## c #766C63", "$# c #A6988A", "%# c #AB9D8F", "&# c #685E56", "*# c #6F675B", "=# c #635C54", "-# c #756961", ";# c #7D7569", "># c #645A51", ",# c #564F49", "'# c #504A46", ")# c #786F66", "!# c #665C55", "~# c #6E625B", "{# c #8B8075", "]# c #8C8076", "^# c #978C7F", "/# c #BFB0A0", "(# c #BAA99A", "_# c #988C7F", ":# c #9A8E80", "<# c #655D54", "[# c #8B8072", "}# c #7C7167", "|# c #756B61", "1# c #6C6258", "2# c #554F4A", "3# c #94877B", "4# c #746960", "5# c #73685E", "6# c #766960", "7# c #82756A", "8# c #81756B", "9# c #8B7F74", "0# c #B6A799", "a# c #B9AA9A", "b# c #A59889", "c# c #AFA093", "d# c #BEAD9D", "e# c #AFA090", "f# c #8B8073", "g# c #8F8274", "h# c #8D7F73", "i# c #998B7D", "j# c #867A6E", "k# c #615951", "l# c #97897D", "m# c #97887B", "n# c #766961", "o# c #82746A", "p# c #C3B3A2", "q# c #B9A998", "r# c #B8A898", "s# c #B9A999", "t# c #BDAD9C", "u# c #B0A090", "v# c #655C53", "w# c #7E736A", "x# c #786E63", "y# c #6D645A", "z# c #877C6F", "A# c #5C534B", "B# c #685F58", "C# c #897C72", "D# c #A39385", "E# c #B4A292", "F# c #B6A493", "G# c #7C6E65", "H# c #81726A", "I# c #B6A797", "J# c #BEAF9F", "K# c #A59688", "L# c #B6A695", "M# c #BAAA99", "N# c #AA9C8C", "O# c #A8998A", "P# c #84776C", "Q# c #867C71", "R# c #908377", "S# c #A49485", "T# c #BBA99A", "U# c #8A7C72", "V# c #A09082", "W# c #746861", "X# c #C6B6A7", "Y# c #B7A999", "Z# c #AD9F91", "`# c #8A7F74", " $ c #AC9D90", ".$ c #AB9C8D", "+$ c #AB9C8E", "@$ c #9B8D7F", "#$ c #58514A", "$$ c #96877C", "%$ c #696057", "&$ c #A59488", "*$ c #756A5F", "=$ c #5E554E", "-$ c #918579", ";$ c #B0A091", ">$ c #C9B6A6", ",$ c #A69789", "'$ c #6A6057", ")$ c #998A7D", " . + @ # $ % & * = - ; > , ' + ) ! ~ { ] ^ / ( ", "_ : < [ } | 1 2 3 4 5 6 7 8 9 0 a ^ b ) c - d e ", "f g h i h j k l m n o p q r s t u v w @ x y z A ", "B C D E F G H I J K L M N O P Q R S T U V W X Y ", "Z ` ...+.@.#.$.%.&.*.q =.-.;.>.,.'.).!.~.{.!.].", "^.X /.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.", "e.v j f.g.h.i.j.k.l.m.n.j.o.p.q.r.s.t.u.v.w.x.y.", "z.A.B.C.D.E.F.G.H.0 I.J.K.L.M.N.O.P.Q.R.S.T.U.V.", "W.X.Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+Q.'+)+!+~+", "{+^ ]+* ^+/+(+l._+:+<+[+}+|+. 1+2+3+4+5+6+7+8+# ", "9+G #.0+a+b+c+d+D...e+f+g+h+i+j+R k+l+..m+n+o+p+", "7+q+r+s+{.t+u+v+w+x+y+z+j+A+B+C+N.D+E+S.F+G+H+I+", "7+J+K+L+M+N+i O+P+v+Q+R+S+T+P+U+V+W+X+Y+Z+`+ @.@", "+@9+@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@_@", ":@<@[@}@|@v+1@2@3@4@5@6@7@8@9@0@a@b@J.c@d@o e@f@", "g@h@i@5 j@k@l@m@n@o@p@p@q@r@s@t@u@v@w@x@b+y@ @z@", "A@B@C@D@E@F@G@H@I@[@J@l@K@L@M@N@O@P@P.V V Q@o+n ", "<@R@W.h.S@n.q@T@q@U@V@m@d@W@$ X@Y@Z@`@ #s..#Z++#", "@###5 >@$#%#&#*#%@=#^ q@-#;#>#,#'#)#!#~#y@d@Q.(@", "a@{#]#^#/#(#_#:#<#b ( [#}#|#1#2#V.3#4#W 5#6#7#8#", "9#0#a#b#c#d#e#f#g#h#|#i#j#1 %+6 k###l#P.m#(@n#o#", "$#p#q#r#s#t#u#U@v#w#k x#y#z#b@A#B#}#C#D#E#F#G#H#", "I#J#K#L#M#N#t#O#b+P#Q#R#S#B+9@-@w u+S+T#-+U#V#W#", "X#Y#Z#`# $.$+$.$@$#$$$%$&$*$. =$%$-$;$>$,$'$5+)$"}; merkaartor-0.18.1/Icons/Frisius_100x100.png000066400000000000000000000525251177067165300201740ustar00rootroot00000000000000PNG  IHDRddsRGB pHYsttfxtIME+L|5=- ;7 RMϻ|s9gCZ̗qUݟΟ:;|1JI*b;B )e)+csB )e!"qᡪvZK)C}߯VTMqGXUU!{_|~8B9ϟ|~1_u;Ng?x4`bz|xBJw1Rqsq,m[XMQk+ɟ\! c;SZ%(dLrFsRsF !BJ9|! Z4 )2$"8BR !( 1J 1h۶뺔RA4ZRSUUlu:ݿղRg]fm[!xvMSSΪt]siFqZh yrJ9禮RZJoV+B k)BapY[gK)Ja䌲c]WZi8SdX6u><>QJS9eι" 9o}SՋJqcLBs99%dFB Lkɘ c8rra/Vc,g?<4}JeK0~r &ҬmsJq臜Kit׵ιR:G1碔T) u]c!)CB󂫶]A !RqbJ\PFv2 B0)4)PJH)s1n*q9'[ !1F)]{V1 u:_yvC)e??==id(1fJ36NtʥtOvw̹(cL#!S@ӶuPJ9gJT`!>{f?A(+9~*DRsƅwIF @*i`gWC$u0=¹L&D *MUi!%{sF@!8PRS@@L9!)9fB \J*gDt D$@ #!z?NB82Ɯs9F$|1U>s)8$%TZ?8B "%̈RNyJQ+i{8Oٲ뚪qBOլ6j||\lL` S\  OERҒ! f3tux ('S ! ΅8$, Ƙsʫ:w)KȹH8T!EiAĒc%m|usF(URI2V#F #0 (BR*?|w2&RB ] 6Mg6guB )2BQ(SJi(a1;qa!?΅l^Z?ଭ!T0ZSBBR.)9+nZVJIpF "@ )8 hʁڌplFə1\jι-]WB0v T1k81Fc,eδwm_fz\ow(RTFsFu.9TrbLB~5U\S? =B,ᘱmSJ.`L 4qPYsn21%c1ZLebJ0TJ$PJ;!S9)em;om[vBa)dpTbJ ,eSL[ϣ?]}Ljյ c0XQr}7`~JXwwL(kv up. )i[#tTRh#@0uu}ss8ΏPJJ?LZ|>u6xyc(8 nc97M=` (!Z;w߽y;*IRɐRW_ocQ[D29wZ+5oǏcJ)qSI(صW9߬R .t:[˹dlsof"r)2d.YJQ !)JidIJ%;w>KRƘ 8?}ÇZr" [/N!ŋObt%禮o& pΥ 4㊯j`,#nGk߼)Mupzs=Z't:~qZVBr&jm k0 Ӥz.gNX OtCU9挥7M98./,LE BH.;77>|(6xN1.FG_}Rϧiw>ZR4\ B1嬹^-~dLƒF;`}TͻzslyS.v紮t׵󮙂!PL9k)ۺBZ7t]x7~Y$8Qʕk,%?(%]pӾBf{S7n۶ūO޼{4 _3j-SߵmYluG)]8};k8ڔRkZ/nRh9,߾='rfˮcLٔxR ]֕jY*sNڌ8YKB )%M!Ɛ}nVq^ JG <|vi_p&;=<9L;g vJwSZ?y|u.af,拻߿w .Uy9+)l*%gIt9t^owv]|},n7U5}ݛo!R+ib&ljُ}’R7﷪몎!WWJauj=R)Ub!&[ˆRt)sakfJ6:wn߾ͺϪrV ~ NǂH3fRB0(mh@AK(1B )+~|@}w;=[WO?}5M]>Ñ9s?lwrӟro>TU׵QIYί6#mےцQ )@B(F)!1猥PJ^~?Yk}p> _-fz{kټŜi: yru]\*cd#)i6  6M; CӴ!Do]@5W|Mr}9x;yzMS=v߾RS Xj^]ۛ?vmS\0ȘdJ9%$c12( "1&R1mk ΂ \HB7/~էUKHdh. J>1-%s_JuIcT׶Z~Χ9z"?W?Qjo A)m۶mZvZ`\ t6mNއЏ]ZcʩPBc% e)Xr(9.h&lQJS8nPJ~ȫEh6Iq69gS XuiϣRJ)8o1)$j(%V&RRn6 }4Y=LpFk0(G (1rP!OObuQnr3giZR }yӴB!89a"s1xRB\'c)E]yZ1JKS7?o硧Z)![p2f`qmj%\٬JzH)ZR Ji1% !ʔ B %qژNQsj15-:] p,pƢf6kv|> Rp,s"CL~ c \ɧR2c8߿YδʌAzh)&,9)Dsc*R?seG)aQ6' *RK)JR`QJ)!!e-%"8O}BY~bJMU ²i$kma*T|!(۫ͪw{WuŁRR7u){Lp.g""J R||/?t1UMAD2c"x1c@u\(B:KH)Iα=a#cBkIJs.9M[zK2~(]u-gK9-ew: l59XBLv]׶y8?8l֭kիW>} l>s}?17zn*mK.1X[rQpȇaLRA2֍ntqffǏx=}/RrB1\TbPPgC@e }HgJ\}oYW)T캎Q>fL]xffD,jhe5?J%K)4H gBkc1MΧ"Re}sg@jDDY09yᄉΥu]CZP~J1 DB  (F5Zk/edDČdN,%+e4B`@p>ڼxBKX31JɇȤPZ!'U9eF12s~}}ݻ7nfJr21e*SW&ܤb0/SBdSK٬4}_61cB>=>fzܨa1{s XHUU򒲛uNI}*(% aZ7VpYR*R֔i!b5k )|6* JqS!"Bkb9ɻgkBK.9ggI*Rʔ dk})o޽UIy,Fl9@;Ok4)ɎBH>]U1fٛ\߾zH)"b)8Ny!J)|L1X9!\)^Z[ )eRjYKv{VR\4z%R\p& sIĐ@(!s)-`.Z4~gnMHNkD\]m蛷g<[)[}J VW@bH pdja Lrzss]וV)RƉQv81E%5{(x/~KIP֋SiJɄ`ϻY.h-`SJ)PBK>g+%)OJrl)Y q1GrB& ~."BB @(lc*rWu X((LN9焐ru)p8 ! (%%Gixs:b@RJҋ)H)iY9g,^Ό @1K7jɋ15Z"(RP*cLShι笐 \8!ykr>~;JVb2#*ZQ <9ZQcJ!zJ  cNnd#4N`y2cjtB,@&k8sZ.)c·4*(d Ƙi(ci2@ʹ`J!cA@ 2\ M93cM\ps(`)@f:dͻ;\_V9Z .κlXWZ)PRn'(SZWQJ]mֳ֓قC:d\㠔TJru8NcA )1JgeDmt:ow7(@(@fL X mkP$ƨV)!B0mDSW>֔BBAƨRYJk)0Ն>PJ9i|w3ntJ7/?ZWu@l54|кR@9?P12v.lbXiJ|qq&༩ !*c3q!EBRJ#fd-#h`91QZ8Bf眅`1%J"'QJ1&.݀bRO-B1amFۺn*%8ޘO.xSˢBǁ2K@Cߗb۪ ns)ct矏SSF"s jqy,g>P;YPK!ԺF,!&2lJ)R@NEL7woޏ_k%!C A~6뤤)?Ni1_xvKy_/W9QP OVks!Nb!JcJV4Ē_E)PrVZݗzc0Φ$%0术gsaB1Vr)PJ˫Ҋ@t TrR'{}&J@o_4咑2 4~|1CUW~u8Jj6L.^W!éw!%lOք2BQBUʙq&1rΝ #SBr8.L)eF;7 ĔB8#_zNλ cͻJ) %qa:un;䜖du~o޿ywY+᷿^O/7_?nGJ)$@(eǾϩ\b)9'!D۵4r91&81OÖ@)BPJi)]L9g0L9c2d'جBƱɅhB/J[Wlfͬ{|5WXqBĔsqO?yZḟbRr)%cB, yJ, 1^]_TY(M>/KJ9ܶ-C }O(%~&\յTJA)X\B Qr\̔1亮v/⌿|Y{~7|O*duMizq{KT+ IDATAlGXճg1++~{su'_zO߿9_.ӮhBrC^Wx>RJ9g ;Rj6~@.7Hs)y[9Fi]Ռ/ZlJ|: XDqup1˙3q>m[#?l_g/bdfϚo{KϾөL֜ƂK!n6Cg'BO^lVRnRnjq)1RrcA2 #Q^0FK!fƮ g]R Jؿۿf1ƭcզӔRjKA,BqF!e;kN QWT"17us];J2F(Yݛw>jv{Q DH1kԏim״so<ļZ,9oҦM \pƮ޽{{؟b4E^kǏvt}?RF8BpHm]䄹Y1Ę"{iTJP&1t|m,]Lt>w]AhÑcR)eD92拙PcgZIj9g%$XPF`ݬ6~)lRD+)J$s_=3*)%u6F~)*KbKBTB\UVJ_ۧ'kv_O'g |9g=rYFky]RKQIBY+m_|ѵaǔf6H9Z+o<FUכqF9 XڦZ d,RR1vuCz c]ׄSPJөwJJYJ&9r·ɥS S?m)1VJ׫ B*}*jۆ B45x:9geL BPJ9R; RL[01jdm`\q"s>N⣦9as_+q}E׸@3L(}wmw4uUΙ1:_%St:;|9mtS9sΥ/ @)䁔hcL%t6ZΧ3cl18cɱN\DRJLb03BH+rJSeZ r1{훧qnzYNyvF˻(W륔 .dDu)H{ydU)g!x>\.*cB 0Uc$RCoCLRȗ^ZW>VJZ^_ił/>cUBiQ*U5fȉ2bv9U Zk=b1Ir*zZ `SWB)8lv;SPgKSF҄.zbH9aɗ)w:bdrsb^&,ƴ%䄄hY+蜐Zp&QJI)d;h)rA$XR”f]aٰ_g>C̉ss9kIA-њQJ8\Jeg|zcLB6g}v<.XU]לsmΥg6MmJSʪʤ9B| 9gB(!s?R ^ϻ^t}x|?laRM=AK~^ !28`L|(yN㣩 _ .4+k]ʩ+HJq!c(%l>_us: Ĺv]#I!dO*JZ.%5"ƘcNVHF 0N|RRN{4Y~ lmV?ڨ[C)+-q]% rɵT@\Bpp!BI9M>DZƺ)g!ECQJ @r]aFB)n*P&;%Jk brGļ^-gk*~'Fw>5̻F&T1t1eJ1K6.Q ͚H]D H)o)=o޾uΦi\6r;'arsu]brΖ6JKm  S(%g?!H)Kε19)5u^Fd=w<(x~{{<KttQBx`,`/"BiJ)2ًh]Q0Qi(!@Am[Mvo0C0YR 4oRow[TFW&cREr1V&BJ)%WM4hE;BTm= =,VMU_P0vԕЇsL`AJYuI9,ZGk )ںz~6:c9gJHJ񒘡J!)>\g|f1Jʸ༮kDBF|pvdh<MU!|Q.r.iߟۺ].O֖XP Mݘ^Va:!D4)Z7u(BU]W@Lt:18ㅀH&ƹxdB"91b }?ocAch-"@2!sf\HJQk5_ ig-eĆ ΚZ0&RΧJ)rοW?W)%F)"iy?T0P"(><=>~t! RMߟ.n%cR'>Jh:v!8>:< VU5Y;c]ژt.c4Xk 9ot>p Qrp䘝 !%, 3JiJI)aG[(}S`G,? F(BLv&7t=)8>@ 1K!>)b7%# N٧\skm]qG,!_YmKt[ίR*c!@ 1u X R\oրシm3S~!9bL)s!BbH)sMt3JwmSWJpF۷>݇PҜO~UNKb*8!,#pJIٵs!D1NR*Ja|L!ƒc ?Fs^m6F.fVk}JL[5)NLX~1BL)Vu5N>)2hĘ}JĂ%|}@LJ_.>x<^]m?]os˧O?{sA nZn?r+u]}nBڬ8eS1RxZ9VmW;Onoǃ (rdwι ~J)6F%x>)!1cn*.p.,aR I cFI|A4x(c)M]M8S]WJTB w|GlPy|;|^+Mοp7P:QDDb 1|1Wu՘*Bcx1<笔|}}ÀH) +[vs]Su=7e7 M3#=  ̀aXN5Qjd7Xq+/?OQk7X0E'u/c1XpN) |:yLkF a,Vk @A0p u@QK0()!ʨsi%H*BEsV)i-U5ø?,ُ8eY+0zWu, јRAm4%Pj+8Zf>A<A1J"4I>=ƆaPJqΥFr 9NfS!D۵MDQ)ݕ;sF]YaH2FAƛVh0BfFwmIZ<>cyAl}>}EhQ?$k.edƨHGˊ{limֵ""8AZQlu[mSiJ0CbD|/Zb'[Gɡ"H ÈzQ׵R\4''mAEx;/ - qpG})pe8`0f2-MS׵߽N|BAZ'W^ȡ(jW; !~E Bb=(eAy\rE~,m֘<\-. sLX Hv=cLJt !uv +(ԣe7 |F$a\ĄBH)` ZiC75#!k;Q狓0 =;kݶj޾bN^-=GQ€bbtFGQ؋>}i$MX+ubW8Bx9kahںrBj4ڦ[c#9@4JM+NbPJ~`%9b., \Ju; `z!遲(!X%U'nOFQ|uzrT!b0eܖ߼|=~P_Oً4w:F "˕RV&ё㺪߾'(997m̲ @)( U6"!:~3|`( B!s(Ln0DaqVj0p@@YyeiuI4!ZB$:~aR4 IQA#Bն,e[)˳bTC`1C3FnoX=cB)J3qՇϟRe>*{(W! !~ F^TZHUMкq(s@JAsK> Qb-y۶Z^$ c2)RQ1ڗ ?#qr9c]uC!["1v"$Th v\8 ֺooo-:AIi1ƶ-Ol6n!Z R!8 %dWm[?Fq>.M(BO B14 Pk(#9 cT ^ aAveIm19B XѾ Bq?>Yz)5J ?nJ+)%`L06B eol^nݖ_j A$^4Uo_ϣ }@\4OEuC)euդi磾tAcnv:;ຶſR Z{RYCMa:v]x `>ʆ##u|OFI]ƁCz2-N<7WJB<tj1h@7AAn-A 1Fc)(K#dM[Ϟ^ig v-D*Pq63 8y6:׿ !3Z=:9X6])B9.R*͇~9F{h"1])mgZ<ҳlUJa r18[H.ᾧH+yy6_ XJ&.( R$OGZ,M cúl6GQ@vQ H)e:1@n:@'Qq0DI!%;A!%&">h:+כRpZwx[ńѬy9!0CIGg#g\kc-xLIxzu~ynKc2ҳy߶GәyK' Z.=J1=Is~sN"cko?mnȳ;Jh 0:L,a@}!N){㜃cҴjnJCJj1$_b"!2F[ .1I8ʒ8g/86TmNc۾U_]Piy(eǥgO>WMYC7V0 ޼yW#%jya}?(!Bɤ,KF(u7RUǟ8cGrj?XaTUe4S1Jhݭ*bTba{~(GSj_}++g GAhBAk-t.e>d/4Y$id66dDK=˟!~hy$?UR*}ZF,:%e9e`bS`< &I7Ns;(^naϣ1)eq'zlo >9sοt: W81 &<6ΚIDATJr&aCQJ!05x:.ƻn:[L0Xc9$Yk'$VMӶ<"Z#q'cm[u0( k8?y\n0&8B`ЧooVx 08)s߮Dl7Cw2M3BH6cm;uUUb148"B9v ւ#ѨkB."FD*u}0g1w(򺩞<o{H˻b9cꦢ*1=ջw~i]0$p]# CE֧"K|F}hQ:N~&i۞6%'Wz ˆEQ׵ -GzaLgCQN(rΝsmQYgC00|}Ywzq .MI~8=?KҸQQA01 !HӄR  XA{ `7. caQ{%,~ts#(0`Yk4M?t.G}Yow0(11O@=O'ϟz (-;)hJK VK%0BwK`/wgŋWﺮgϞ\Gr_~I1Եǘy>& ,IAlZDq?4G&EcW}˳xUa䟟.=>Rfˋy$nvRȲdq2Et|j%(eB$$ gq۶<9_MJZ!F $<.6cZEѓBwc|=tqZڶWu"y{.0!XFrO=k~fպW"dZVJn!uYmU/At]OO/.<v<).{?Ǘ&QAmL .8n.A&I6m_Fqg|X6BqQWٛr~\:8FOf3'G7WON0bSJ˓h6yr9([)|?PJe0im|~AjM0O/Ffk W\iO'šh>Ø1it߼|S7} ѣ猱u?T{8 6]iھ' /~I{"OB? BZk6Jg2˶ @ZٔS_:@_xz}|-0i8r[3tۇW߿OߖUe"hC?,NO 77B)APWۛ^]AW߾/R2 L~_)%0PlvI>j6NSsF(/>pƌG痁9V]#arS* 4q̦vw|<}*d !5!X{}{/}* fI߾ӟ]v.ycD zrB4 BkLD)hEy ¤t0GϞE}>8Z͏a6ۇ>z'4dViF9] D`Yy%2rttty!膾kb1!d6 %;)ToZNOjG"w I01K3h0: pPI1?KӲQ̏OqrCRpJ(h6/G P2gq7N_]$'.N,.Go^ Y?Kh<8 |0v4K0 mEi4MK)MҴnvkZONNBggyCW X%ѣy?]Yo4Fi:4:a$c! Grh[U]y8^̧Jla(dYMcsy $ "wK>?xzѴmv٬0V9gGI >Lf_}}{{ScMvZvSB"yw=C777y>Βlq;!"H⨬vNjշc 1h,c0Dkiچ1Qj"/O͏O X4"CTsyfF8>QTi2<@J |vZÇ.0U^"m-I?G/Ypw_^>,*zS6az9?\/|!@ٓq1ztyƹ8??Q'B!z"֯߾}vyy٭1m?B" @!=ZvG#X]5~wx2M5Tl E>JZ{p{Z Z*x<ʣ͛rG=LnR1F}7a>~xz4>}{>/F8lA 0t#!~]խV8WmM< 5uӞ!x[G9F(MҦi4 ,8ˇo(8~'i~_#m?h'fݯ7[5:Sl77}o+O&Yu=ʳ(2mim$O<{[c8ÛۥP/_R"Cah&EQ &[.z{XU߽wP~Zv\im(OUU>(1!i{o.N7fӷIfbZ8˪.c!R}GWWWEQh9-U>*RQ }\4bz]FQ$rz]Ӝ,`|y~W`_6HH霵VqOF B^w]uoYGY1B0BX뺞+6cɤӫ8NENǏ0 ұѺm<|ߧ(o{gAIlvtR:(0uy/?zyY5k;yi)$!DimRH|횶m>{1/MWo !;˪B4mZ_ONNf_Iqd\;/>X ߗ"BHx<~8͊񋗯OGyv~!!]yI ~xU+宬n2+͕laxu6ob̧ h6h(߼_ LPxz}z:Y $JWu'ݻwoob~s.M"c̸eiB1 }hW>*Gi%_0NBV]ZbZ?HeT}7p$a|6ݫweeFH+2j=n;.a CU͖0EI? "|lʝ2`!22?1ٔuYyVWUľ5m3I v:QJm%D~w}lqh wf_tn7{k~pf#(!՚sFlҷ] }ۼ|0 eYN&rUW ,=1?~|=%b3B}JB`dv8A|Ƥi[J0`:):.˪f6٬:O6d<0"gT*nnn4Y{*t%WU9Uk[.ߏljxg,ICv_6\A,KWaMӏ(5crsssuH 179D^;LVum'"?1ת]yHG1!Xqt۪Ƙ10czW )~?SiυW$@HP߿x1Ix-70MvLmY6F)b:$Q15}q|4SJj4-cWu}t4O>p)CǏ9ڶpqyޖ˭Z0'euU=}|ieyziPjAJ(>>:7].JAq5׈埄T?Ȳa_!&iSզ0ǣݻ<)Ƕ۲(t"zX.;.8J+?xrZo6ι}Y/7[ cYcnً:u"<@/mB"m[Zi}˻12yq$?]]ͷ/FY'~]dZ0>jVB nQ];IENDB`merkaartor-0.18.1/Icons/Frisius_16x16.ico000066400000000000000000000025761177067165300200370ustar00rootroot00000000000000h( =BFADJDKSGLQELRFMUHOUHPXKPXKQWLR[KSXMS[MT[MU]OV^NW_QW_PW`QW`QXbQY_RYaPZbSZbSZcU\bS\cU\dV\eT]eU^fU^hW_jV`hX`iW`jWajVakYbkYblYclZclZdn[dn[en\en\eo[ep\fo]fo\es\ft\gq]gs]hp^hp_hq]hr^hr_hr_hs^ht`ht]ir^ir_ir`ir^is`is`iv_js`js`jwakubkuakv_kwakwakxblxbmvamwbmwdmwbmxcmxbmybmzcnwcnxdnxcnybnzenycnzdnzcn{dn{cozfoyfozdo}cpzfpyepzeo~gpzdp|fp|ep~fq{gpgq|eq}fq~gq~fqgqgr|fr}gr}gr~hr~ir~fris}gs~hsisgsishtititjtjujuhukuiujulukvkvlvmvkvlvkwkwkwlwkxmwlxkxnyoynynznymznznznzpzo|p|o}q}p}r~q~utuvvwxwwvy|{}~}|ӞDzD屑^ ۻ|ėwSx ?dk[)-QB!It[T*#:Nz{XhK28 !Wu]m99" {<./7~VϐnCHiyY';ހ_>bB%J qˮɰ_LPaVroAݭ6+bZ }j4f:ʺMnpclivq`s\Uge=F3OcIR@G1$&05(,$1Emerkaartor-0.18.1/Icons/Frisius_48x48.ico000066400000000000000000000162761177067165300200530ustar00rootroot0000000000000000(0`ϕsmv_gqvtlv~nzPU[AEL{T[bVaipziucmw]grcoyMT]Yaks\eqw~dlw~_humw˝ʍmxcjus}\hqDJNRW_ZajS\e[fou`js\fr}hq|HNVU^g_js\gn}ˣƥǀ\dobkxT]hYcnnzcjvьvpyĈRZcHNXQYc|ht[enp{bkuXaklwEKSJPYW`iepz}yQYbOV_kuluqy`gs؇ǎ{lxJR\zp{dlwq~jvcmx_hsGMUT\elv^gqmx~T[fr{~s~OS^hq}ȥǙΘOWafq|[dlgox_hpycoycmykx~mxGOTJQYNW_S\dYajv|p|PV_fozs|ѢřʗÔer~JT\]cnQV^LU\eq{hq|gn{ZdnZeohtajtJSXX_hgp|nzisp{y—[epU[howtny÷ړȔq~W_kV_i|q{V^dT^ecpy_is[dmX`iZelp}vlwPXcGNWOV_\eo[blelyugsZbmQVds}jspyju~ʛep|p}jwv]gq^hqoyxq~]hs^is]juNWaHMUMU\RYcclxs~zz_it{z`itT\ehqnyhrsgpzyyp}u\fq`jswȎfq}dnyzp|MV_FKPLS[^grakt^hpq|zyjuiu\eqOVanvgphqpyiu`htjt~zsţŸ`ks{{RZaU]eQZc_is^gqdpywlymw`isXakT^hQZcIMSW^hS[eS[bblu_hso{xakuYbjU_iW_k`jxwirgqpzlxdmxclvgp{clxir}ir|mx~NU\p|jwMU]QZc[en_hr`isXaisS\dGNUdoz_irV_hS\fNX`IMSW]fcmx}kwQXbW`kTZd^grfq}fp~gq~juhr\ftoymvgozbku_hqajtT]fZcl^hqy\dnGNU]hqeqzWckJSYYbkX_h_hrXajPY_IPWYajmy`ltWajLU\FPWEJQPU^RY_^gopzs~IOXQXbZbndn}co}cnzkugq}lvcn{hrjufnybkumv~kt~bku[dm[dmenwhr}myp{^fqOV_IQXQ[b]fpOX]RZ`QY`OU\QX`T^eYahSZcisufr|`lwalxMV^BFLFLRAFKBFKQU[_emTZdZbmkuishths}lwithsbmwfrbmz`jtclvfoyiq{ir{_ir_isT\dNT^PU_MS[FLTMV]S\dPU^TZd@GLZem|wXahYbk^itr~ylxYblmxYdlADHFKREJOBEK@CGHMSS[dcnzsitfr`lyhr~mxlubkv`jvdn{gq{bkuckvnwclv`jtfpyXbiNU]MRYMRZEKSJRZV`fQW^INULU\}y_frSYaU^fnz]eq_julxYbjU\fXajBEKINVJNUQW^NU^OV_Xaln{p~anzbmydo{`jvbkxemzdozbkv^hrivbmwajtkt}gpzir}cmv_irZdkPY]JPVFKSKSZU^dMSYDJPivepyHOSRU]SYbMU[T\bNS\GOTLS\PX`PYbMT\CHMEKQFKSHNUFLSYbkr}o{ep|cmyhs~blw^hsfn{cmzcoykt~fq|hs}fpz]gqgpzfoygpyclubkuV`hWaiS\dFMUKRZU\cJPWcnzm{X_fJPVSZbOX^IOUHORFKPMS\PY`]fsuvHNU@FKDIPJQZeozuiudo{cmzakwfq~alwalvhr|_ivfp|hq|pyenwhq{[dnckv_hr[dm^gqWajQZcV]gU^fS[cPW^LUYOU]kvR[`LQXQX`NS\MS[KQYKPXINVPXaVakp~?EIAFL]fr|kwdo}epjvjvdq~alylwjvitlvq{lv^gq[en\fofpzbmwR[dWahV`hPZbMU]OV^U]eU]dFMQJRXNV]ELQLT[NT]V\eNS\LQZLR[KPZ[do[fp{yFKQ\dmr~wmxmx|mygq~jthsjss~~yjw]fobktbkuclu_hq_hq]foV`hR\cWafR[bXbjV^dDJNLTYIQWFMSPX^RYaRW`PT]LR[SYbPYaXandnxn|dozhto|lwcmxuhtdn{iugshrjukwgq}oxjtlvmwtz]go^hpenxenx[dndmu`ir_hqYdlU`hU`h_irX`hFLRGMSLRYHMTQZaOU^RW`JOXUZcZbkeq{tq{w~|oylwcozlxl{ft}iu~itfpfq}jvkwgqcly{xxkt~ajt]fo`irnxclt]fo[dmT_gS`hS]eR\dS\eJPWBGLJPULQYOU^RZcMSYNSZblt[cmvu{vvny}kudp{n{oznyfqdn{q{hr^humxpzmxjvmx^gqclv^gpZcl]fo]fnXak`is`gq`iq_hq^js[fpNU\CJNGOSJOWNV_W`hLR[air_fobjrw{iseq|xsgreo|jtgqalzu{lwbn|fpitn|nycom|\emajtgpzV_iYalXai^gp^gp\foWbj_jrdpzdpzV]fIOUHOULR[RZdWaiQW`u^fps~Y_hILSV\cr\gslws~dp~alxcn{blykv`lvdp~irlw~xn{^gqbkuenxclv`jt^ir_iqfoygp{dnxmyo|fr{gs|QYbW]fRZdW`hS\bairjs~jvX_j]gpo{Ɩzjsbmy`lwfp}kucl{`ju[fqbky\gtjrjtis~htwbks\fnbkt`ksdnwckvdmydoynymw^is^juboygr|WbjWbj[dnU]gMW`_irhp}tX`kmyxislvbmy]htdn{dn|akwYbngs^hvgqnxep~myajt_irbktajr^hpVaidozjv`mx`mwcoydmxcmx\epQWaPW`\dm]hr^gqQYbr}zmwt~žÊhshso{grfp|cnzeo|cmyirZcohszzku]go]goclv_irV_h\dnfoymyguesivcmw`kuhr}gpz[gpkvvivWbiǢȞğşÔmzpzpz^hu_jwcly^hrZdp^hramwgrcmyakwblyiugreox^gqdnxWajXajZcm`ishucpydoxgr|[dnXbkXcmblv[eohq~mxo{amvƟ‰zgr|alv~r}^iu^hsblvgq|`hs\eoZeqju_jwalz]gq`iv`jt]fpfnyX`jZdlYckfpzvlxlxdpyQ[aGNUMT]QXaZckcnyhr}|\dndlxfn{^gr[fr|eoyytalyrnydp}dnznwgq{^hr]grakuclufp|eq}gp~`hrbku_hrZdn\fplvep|_jv]iuht~it~SZ`@EHBHMBHMAHLZeoakwkx[blPY`S]eZdnemyPYcgr}_irZep~blwW`h]hsfp}akwiunzdo|`iv_ht_hr\eoZdnZdn_hsgq|`lyajxfpz^hrit~lyjwyfr}jvq}o{p~\hoAGKAHL?FJ@FKDJOJSZ_lvep{Q[bZem~^kvtǓsq}vgq~r~q~lxgr~fo}_htU_iYblX`mbkxfp}gp|jtftamwlys~mymxeq|fs}p~o|hu\en@FLDKQCIPDIPBHNEMT_itcnxNX`Vbk~àƚ–iuittjviucn~[es_jw[er^grYbn^gs`kv`lxdmyrp|hukvfr|dpzlxdpzepzdp{eq|ZbjDIOCHRBGOCGPCHQ@ENV_i^hrPZbPYbhsžęu]hsjwhtal|_jy]ivfr~fqYbn]gr[dr[dolv`jwu}smylwgr}it~it~coy^isXajNV]ELTIOXGLUHMVGMVGNWIPXPV_NT]IOYNU_gp{|ɣɟƘtS]gaoym{drgs`kygrju]ft[esaj{gpep|`k{r~wxr~jvjuakvakuZenYdlXbiT]fMW`R\eV_hT]eS\eS\dQX_PU^IMVFKSINUJOVLSZV_j[eqgr~vr~cn{q~hu]gvhrfqdo~ajyfo}Zctcm~fqep~httkwfr{lw`kuYenXcmepzmy~{vq~rkydny_htaiublxhrv{vugq~jtoz^jv[frbl{grfqak{nwiqjsq|jsdnz{kucnws}`jvVbl]jstا̚uo{r|nwhr~alyco{fsfqfrjvr|nwlukulu^guukugr{nxhtYen_jtr~ϋepy_ir]gqakvp{wxxzhtep~grcn{alxislwnyitkvbm~mx]iyo{lwbmw^iuhu~[fq`jugq|]isnz{[gpLT][enp{›ĥ̟Ękwdp}cmzbkv]gqclvdmxajvakvdnyfp~isdn}q}o{luWcn_lualw^hu^jv_ludpx`kuq{uxn|]hp`ktsŜ›şƘwsjvcmzgp}ir}fp{alw^it\fpclvnwakyblzxjufq{itgrju_jtlxqm{YckRY`Z`ieozm{qitep{`kunz~zcn}fr~eo|hrkuhqhq|mwitp{fo|itz\hrakweozfr|Wbkdozkwmyfr}[foGOVLRYRY^SZ`\empzxwp{uxǙ•|gp~ajwcmx^itajvdo}ak{ajzku`jycn{dlxs}eq|cnxcmxhs}eq{gr~iufr|gs}gs~coy_isRZbDINJPSMSWSY^PV_\eonyut}ywwgs^irWcl\gqdozalx\eqbjubku`it]fs_hten{[dqX`o`iuis~ir`jxwkw`ny_kveqzbny`lx`lv_kv]it]jsgt~er|^hrV_fMRVINSOX_`is_fpS[cMUZKQZCJQHOUNT^KS]QYbT]hZcmbkv^juYdm^gs^hq[fo^hr^gr]fq`it\eo_hsZcnS\e[dn^fp\coW`loxlxo{^jv[fs[gs[ep]htWboWakS]e\gq]jtS`iYhpWcl]fpeoy`it[dmYajJRZOT]HRZV`hbkwbly^iuVbmR\fYamYbmZdn_hs[dnVakU_iV^i[dn\eoXakV^iU^hXal_hr^fqW`jYboxvo~thucpycnyfq~hscmzep~jvdq{]hr_kueq{eq{amwdpz]gq\fp\epfo{Xal^jtWcmZdn\hr^jtbjw^is\hr^is[dnYblYbmZcmZalclvdnxT^hW`jZclakv\fp^hrcmxhp{kzeq~htdnxeny]gqclx[fsZep\gr_isakvYen^ir`jr`irdnx^iq\fmYbkZclValXdn\gqQ]g[gq\hr[gpZeo`jt\fq`kuZcn^grZcmV_i]gqWakZdn\enT]gS\f`is\eo[eo^gqclvajtmerkaartor-0.18.1/Icons/Frisius_large.xcf000066400000000000000000033030511177067165300203450ustar00rootroot00000000000000gimp xcf fileBB@gimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) jpeg-settings K Background     Vz   4eVƂ'X>Ψ/_6!7g4)Zi2lc Y$Uxjc*-Q]o5fb^ ( YA K  1% aq # ²  # 8 i\ ʸ 5 + \ 4 w . ' < R g] ||uttwx|{{{zss儈|}}wrdccee}u{vwv}~tt{{|}y|uyeccfh}u{zycx~|~~||}}w{|z|recckm}}x{{gy~{||{xuwwsrsgfccddmy~|wssww{z{wxwtuttx~|rosx{pphccdcxxww󀙊ʏ|tu}wwzwvxttistsxxh|tqy{ypgeeddhx|wwzțqwvvwztvkz|vtrfh`a`}uwjccdeoryyogfr}~xwwzwpqqswyxyvwusqxlrrgfdYXZXzn|kjlifdcciinjws{|{{}̂x}xuxw|vostwxwzttux~vtqc^[WX\pknjnlokcdcennkz||}w}}~~xxywnooyxrnotwve\YXXZ\clmkofccdjglp|{{||~|xx}ywvqnorxnpmr tyu`XYr^b{zxejdfddkevy{||{{tsrrzopnqnq}wvkcd~mrrqntwz|~{{|t|rrtpotqzuy}{yqrrqty~xz{}rssrrmotruwzyz|s{sqqtuuuzz~wqtsut{z{{|ttswyzw{{v}sxzzz~|wtywwr{oxx|z~xuyqopmnl~{ypplmmyxvkmll~}swvoormnzv}qkmljku~gstvuttvqup~vuyy}skklkkri^rtv{y||{w~v}zy}}pq}vkkjlkmpvoohtxsz{{xvuty|}~}}qnhnvrtz~jjlpn~o{{x}|{qrszutuv}}~}~vunggii~ojjkqrtqsqrvp~}}xywyomggtr}v|xurrxwvwr{onnqnpzzy}uyyvtwsxvuu~xzvyxyxzx|{vqtonnpqn{y}zy⏍yvefmu{~||u{}y{yx|ttqnnmpnm|}yy}ypxqe]^^fu{}}|~}|w{wzz|yxuxrnonnmnn||wxxsvtw}~spd`^_a^tq|~vsjjqr{tvvrsvv~xu~}{xwwuxxyervbgs~oyyqnoonrsvvrrtnomnxpp|wvusuwwnvvmkujtp|zttllrvuvlmolglsrqrsrqtrnrxpp}{xwuxxwusquuvnjkwzjxhjft|xwuqnvtvvrnm|}kopqrsosoy|t~{}wuy}{rrssvsxkj{vjttlx|{tnjknulmml}vvxm|ppyqyrppsrr{{y~yzysstx~~kkggu{yulljljnlmtnl||nlwqssqottxz}fxx~~wnltz{nqnnlljtllrrprsu}}~yv{uzhhrhxyw}}u|tkkv|}trq}~~wvtvvrgyyrirrzv~~||ku|um}}~~yvz}juusrqs{||~~o|{o~|u~~zvyzmxxzryrrvrsy{~vnoo}~~}{ynz^tkwknxxmwz}{ytmmuw|~vz{y}ywrt_advmlopk{|mzzxw||ytz{mtgv||}vwy{ywqvjq`a`lslmzilmvvo{o~uu}|z`muvu|yx}xxwxvrspov|{{{xxyvvnorysooukljhpy{tsvv|tyywtsrjsbb^y{zxsvvonuokzlplojvvzpsoox}}yts{kmhkerczzyvmlgmikplpp~{zutsopopt}}~vy{knnleodxyvvzxmf{qtspqquvtr}~ytqoopptm~x{|nnrmnjopo~dyzd~vrqqm|y{yttoqpoopjk|w{pnnmnnl{qqvomppqqsmqs{z}tvuruvngl~zqnpvpmssyz{~ppqqupqqrqj|yuvw}u}|kggji~sxonnonoxzzvvwqqptqqsmiwՅy|wyqkiikvr{r~pot~~}zvyuuyqvqmswwxzyyqijjttyvzyw~uzsxyzwxvuvvwv|wsomww{~ro|xu~|}~zuonojrry{u{~wrtsxzzyvvrsrw|ebgiwwqzqytpvx|}|}yzzwyyz~yy~y}~zzvynkohnp||ty~qrzxx}{z}yv}vry|~~qmnknoxntq~xyx|x|x||}}hxpt}}wsxyqpqrxpwpty}v}~ㆄyyz}wsrplhkkt~xvw~wr}p~qtopozxktx{rxsqkmkhghjpprrdbhywwsyv~zvsy}vtvtuvxmmolmmkkrjgjjrrk_a^_jxxvtxompzyxrt{w~rjmmjstpnlnnuj~d`^]^__m~}pxzoh~vzyxx~|xpkhsxtpmmnx~qb^^]^__hokvks|ul}{xz}vomlgdiqmqqpon}||}_a]\]\\igbhcbqwtsnyzxwwv|xmkmle_xss~z{{nab]\^_jmbhbbcfs{|y~xp{}zx{pwwvomb^hfqq}{zva^a^avzxm}icddknpklv{{}|ݞyvvuuvvmedpcfg|rqpwx}|yzqohhx|y}xvpqqlgZYY[[tuutvvoelff}~s}ryt{yztiippy|q}xrmqin[YY]_uuvtunejjh}|~uSisswqst}~~||~qqrxzxqvtmqqorh[YZZacxz{vvwzmumhwyylmWjz{spqqv}}z|mz||ytwukmmihh][YYZZcppgnmx|{wlhddhimxlmhihyugwxkjj}|{|m{vyystqhfinqff^ZZYgffefo}~mfgoiiks~hgiyyghg^hjin~~wwxoaskgoqof][[ZZ^gkfeefhrc~jijilwgg\lpjhfZ\VWVxtloc\\^^fiooe]\hklgeehpibddg~jllmjlkkhlaff\[YONPMpvdrbac`]\[\aafbmjqqrqfkgcfs~xqinhbhhsuklkokknpuvkheYTQMMQfad`dbfb[]\^ffcpqqrsulkkllffnkiacbclxmebdlo}ylZRNMMOQXbcbf^\\b`dgqqrtuupjffkrtkihdbcfvxvmafciyzyxyjpjVMNhRWpon[~b\^]]c^loqqrqquxt{yjstyssrxgffsx{ottcfdhehtnmwuvuy_WXwysevihhfjlyorutqpru{}xtsgwvyxsqfgjffjgqk{uwmrxox~~£ngiigjp|ysnpqyut|zuv|{xqfghffcdhghuvuknmnp~}hy—oigghjkkkppsn~z|~ufighho|zwnouxotvpiihlnon~rqulwzzwxogkmm|}n{rxurrokjn{nn}iqenwwrzkomytvssrmkwpzhfgddy}`rons~w~ffcddnnxwj^aastw|tjnwmfehceolst~|~d^``^_jsu`klnlkkmhkf~slkpptww}u~}~f_^__`jbXllnrqsyrpm~w|sltppwtt态efw|zxp|{i^^`_afniibnpiqrwqvzyvxmlkkpsuxuttuvxec\bwjts{dfnq^^_`feuiuuyprqpfhhmyzkklmuttustu{ijb\[]]rssv}b]]^_egkhzgehkdstsyxvttwunowkmcb[[hfqjpuu{lieemjhkhpyz{}bbebe}|xvvqpos~illigkfljiisttssmmimkihnonnhbgbbdebos}unwuspxo}߁liZZaitossqqu{ioojliincecbbdbbzo~~rnnsyzoyrbjd~YRRZioqrqsrqloiihjiidgcbbuoot{jklmhkzjlunofcXURSURiertkh`_bdldfg~ddihsnjsypnkjkjikk{oxwu{~~vYfjW[hscongddcacdffddgababmferrpkjigijjkwwybtjkw^\evowrp]hdqoiia`glklcdfc^bfeddeecgdafmeetqolkilkji{yzgfjjxx_[\gj[i[]Yhqmljfcljllied|r{szbccdffcgdnqjtropkilqo||u{gghkhmwu\[lg\egg_lzqpic_ackddctllncscfnfnhffihhxotvonrtwvzznnghilrsvzp\|\YYhnu|yokba_b`eddkxebszsecn||ghiheyxzwxx~}~|zziimoqs|}|Yyy||n}yuumeckqregez{eccakbbhhfhwsy{xy~~vthiqqrzy}}vnjyy{{qkq^ww]h]npnyx{ytslsjbblrsjhhtymtz~||trrsw{xwukli|uzllh]mng_ghpulttrrbxzkrkcnmvy}urrswyx~wunl{||}oozq_iihgfhqrrtterqewwytrksoqz{ttrrsszywptlooyanmmfmggjghuoqtyldeew}zz}moopp{wsrrvr~oepUi_l_all`wluyosvwqoujcckm}zzxroppu}|y{yqslpqot}qnijVUYka`bc^noanommrrvojpqcj]}l}~pop~xxxxqqskmorpnhl`gVVU`f``m\`akkeqetwkksrpVckl~{~wq{|}|ujxqooxtoonolhgfdjpnvyonllnllcehoieekvab`^foq|~|w{wihkl{rjoomjif_gWWSmoolhlledkeapbfbe`|{zukkofheeossojiq`b]_YfXoonxlcb]c_afbffzu{|spokjiefefj~|sstloq`ccaZdYmnllpnc\q~~ugjifggkljyhqrtuojgeeffjctunqrddhcd_eetYowwpZ}t~|lhggcw{z}ypnquojjegfeef`ayrmyqfdccddaq|xvvyggylecffggicgiuuposjlkhkxld]bwvtuxofdfkeciivwopqtyffggkfgghg`}qnkllsksra]]`_ti}zunedde~xxyznppll–mggfjggiuc_nuxxyznwyxrmoga__alhqhvwyytfeittz|vsplnkkoglgci}myvuuwymn~vpoog_``jjolpomskoinouw|~omnlkllmlyrmiecnmpvtsvxyheqmxktrstpkede`hhoqkqtmhiinpuw{znnll}higlr[X]_mnxxuvw{{goenjflnrsrsoppmoxvoptuzwuvonttnxzpropyln{dae^dfrzuxwwuvqinsfgpnnvsq{{psoxyuuztyxkskgnqqrv|r{hcdadevmvuy}cievsmonrnryy|zzn}rrsrw]leisrslgmsoz~}|~}gf}{{eemdkdisnrls|tu{{|zuoopsmigea\`_isljkrvmg{qf|tyudgcc|ml`hmtt}{||{xwqhnig`b`\\^ddff{x\X_usmsvtz{m|miolqnigmpjhjijs~}|vlnccebb`f^\^^ff`TWUV`}v~nnljnecf~rnmkfhspl|{{zth`cc`ijfcacci^rszYTSSUVVcsqy{fnupe^srqjnlklsy{vrnfa^injfccbclvttreWSSTUVV_eajbi~{rkbzzpuuwn{kpslecb]Z_gcggfecuupoopTVSSTT_^Z_[Zh~mzxjidtlztmtkjkirncacb[UniiruwnnbVWSSTU`cZ`ZZ[^jupqotmeprxxmktodjk{kecXT^\gfx~pnmiUSUSVjnmdta[\[cde`akpprriff_YYeY\]rzz{zyeddlmtuusropfd\\[lqpwvqpkklf`RMMNNw{deefaZ`Z\\ssuqgzy|}qfmiuuqopj]]ccdmrhuqjgjdgSNNMNPR|ueeffefbZ``^srtsiH]f|zxglfhisuttrrseefmolimleijhj`RNNUW{hkkgfhlakc^lnnaaL_m||ngeffglsspsbppmjnmbdea``TRONNWzabY`^ilkh`z]YY]^bmab]^]mx~i\lm``szrqrybyojmnilh`]`eh]]UNNONwXXW`{musb[\d^^`hr]\^nn\]]T^`_dvttzxzyllndTgb_fgf\SRRPOUX\WWZcWtsvw_^^avk\\Rae_][PRLMLnwuyyxjcfWOOPP[_fee[[TR_]^XWWZqrd]UXX[ss_a`a_a``^ayV\\QPOEDFCflZhZX[YURPOUUZVc_ghggjcX]XUXeqle]a\V\]gi_`_d``cfkyla^[NJFBBF\WZW\[^ZwRQPQ[ZZWfhhgknd]]^^XX`_\TVVW`vlbZXZbetu{|roaPGCCBDFNX[Zw]TPOOVRY[hhkmma\XX]ugh_\\XVW[klkbW[W]nonln_d]LCD]GMfedTvYQRPPWQdfhhimoelj\fgxnhhgl[ZZglochhWZX[X[hbajhjjnSKLknjv\m^]\[adpgiljhhiklnxymihwv\lknylgeZZ^XY]Zd^nhj`elclvvssve[^^Z_drpxkchhokd}nvo~ixkqqmuyeZZ[XXVVZYYhih^aabdsqs^od\YYZ]^^tyaggib{urrwwtuoqsjZ\ZZ_lkwwjabhlcy|yindZZX`cd`xpeght`gvvurppuxmmcY[]]kz||ynqarof{~zvm}sihicZ\cm__pxYcWaggckv{{~zxq[_]~~z}mhvsxz|uifgg\[sxgajXUWVVis~qz|rsqy}}xy|tRe`^fngooyoVVSVV}rbb|{{tv{otrw|~lj~}w]RSRRefhkcY\h_VUXVX~|zxc`fz{yht{{rrzs}{r|ovqWRSSPR\fhRZ\__]]_Y_Zpspqg__dd{zzuzsgjjptqszvss~xxiqqYRRSRR^WL__afdgngebpiog`hddzjgghssty|qXYkpnldpn\QQSRUZb]^Vbd\eglfjnuljma`__dghkhggiitu{xsrulYVPVk^hgoXZadQQSTZZk^jimdgfe[\\xvbnutn__`aihghgshivnt}x]]VOOQQfggjtrxpUQPQQU[]a^o}uu[X\_Xwi|tihnlkghkibcks^auWVOO\Ze^dihns_\YYa`_a^gnpnpUTTXUYytu~yrplkkjddcguur]``][t_Z`^]]ghgff``]``__dded\UZUTUWXUxeisz}|kcljgdlcqtvtuz`^wuMNU]hcgfddhn\bd`a``eZZXVTTUWUU}rgttzyww~gccgvmncuunhV_XsMEFFN]ceedfed^b^``b``[]XTUTTUUmgglrbdcc]`o_aixwwcd}ZWLHFFIF]Y~wxxdf][SSXZcZ\\rYX[[f`]fqifdccaddpvcylkiottlw{|MZ_JO[gW~wxwbaZWXXVYZ]]YYZTVUU`XXkkhcba_abbclwkmVh^_kyTS[lenhfR]Yec]]UT[_^_VVYVRV[ZZYZYXZXUYaXXljgdcadcb`qsnnx[Z^^lxmVQR]`R_PRN\ea`^ZW_]__[XVofohoVXXZX[Wce^lkhicadhfrrjo[[\_\amjSQa\RZ[[Uaned]WSUW^VWWVg``cWgYZcZc\[[]\\phmng}eiknlppbcb[[\]`fgkoeSqQOO]cipmc^UUSUSXVW]kYVgngYWbqq\]\Yqpyw~qnoouvqrpnn]]`bdgnqsrttpOmmqppbbpmhhaXV^deY[YnoYWWU_WV\\[\okpqyn}o|xrrjh\]deekjnqpwh`_mmppe_eRjjQ[Qbcamlomhg`g^VVafg^\\kpelvy{{yzwnrppogeefgkhqhf]^^pjn``\Qab[S[[distzv`hhffVln_f_Weewxzzzxjnttuqheefgiinhe^]ppqqccneS]]\[Z\eff~~thhYfeYkkmhf_wkghzyowuuvohheefeiien`d^abmVbabZa[[^[\ivcehzms`XYYkyxqnnqeggh}h|{qswtstskfeeqfapn_VbH]TaSV``Ukv`imcgjkec{i^WW_aqnnkigghmr{rotwwowlde^baaena_[]IIM]UTWXScdVbcaaffy||jc^deW^Qq`qqgfgz{}utmmuwlldd]_adc`Z`S[JJU[TUbQUV__YeYh|k__gfdJW_`roqnix~yyxqrsrk^lebalhbbab_\][Y`fdlocc``c``WY\c]YY_jUVTRZcdpvzsrlpl^\_`uov~re^cda`_\U]MMIbcc`\s``YX_YUdVZVYTzyp{s{wvwnk^^cZ\YYZc}uuggc__gVXSWP]Mccbul`WVQWSUZVZZynixxr~u~vvpecbv_^]YZYZ^ruvpgghaegWYZXQZNbc``dbWPerri[^]Z[[_`^m\sh{u}efhvb^[YYZZ^WhuibefZY^ZZV\]\iNckksdNqhryp`\[[Wksopsnxtuc`cgc^^Y[ZYYZTUmfameZZYZZYirvwlvjjm[[zmx`YWzZZ[[]W[]lk}~wrrbbez^`_\_l`XQVkjhild\Y]b\Za`tsvxvjkcdehmZZ[[_Z[[\[T~yod`]^`tg_gfUQQTSh]qnic[[\sllmuvnbdd``Ša[[Z^[[]iWSa{mppqqxbjxxmtlfac[USSU`\e\jkook]\ajjoqjvvgd`b__y|c[`tt[W]qaqnllopaavzyrjdcc[STT^^c`ddbi`f`efkmqsvvcab`_``vyby`mfa]YWaagnkjmpp\Yd_k^hfghd_YXYT\\ce_ehb_aaegkmpwxmbb``y|zr]]\afOLQSa{rapplnnrr[bWa]Y`bfgfgcddacljcdhjomklfejiclmrcecdz||nacpYVYRXZfmumpnnmnd[afY[dbbjgeoodgclsmiinvyyjnm_h_Yadefjpzftp]YYVXYwndnmpsV\Xhf`bbfbfmmpnnbqfsfgyfkP`Y]hh_Z`gdntzxrqxrq]{wZqoo\]dZbzX\faf`gphioopniccdga][YUPTR]h`\^ejtc\~{v{of\xpvhmizzy[^YYqa`S[_ggsqttoppolke\b][TVTPOOQVVYYnlSOWljcikioobpa]c`uvhd`]be^[][\fyzurqpj`bWWYVVT[ROQQYYuVJNMNXtky|r{bxb`^bYWZt~zhca_Y[fb^zv~tpoonh\TWWT]^ZWUWW]QfhnOJJMNN[kgumpzyzZbidYRkxhg_b`_^flyojfbZUR]b^ZWWVWakjigZMJJLMNNW]YaYay{~rof_Vqpfjjlbn^y~dg`YWVQNS[W[[ZYXllgffgJMKKLLWSXSR_xsasnl^]Xjboich_]^]ebWUWVOIb]]hlmdeeYMNKKLLX[SXRRSV`jeechaYdfomcaidW]^n~|z^YWLHRP[[mtzzwgee`MJMJLaec[kYSSRYZYTU_ddff}~qmmhdeuvjidcv}|xyxxodklfnoq~~lsv|{}~krqmllvuevccdhyn~{mz{ynkkmgfpp~~zjxvvx}~􀄇lppqqggdqfvccglmyppoyzlkggonqqj{of{wwvy}~}puppjkgddgfpfccihmomqoj~~t}|hgjlhz|zzohbxswu||{yz~}rl{{zyjjlfcchuogisqok~~|lhghko{wxpgfrzvuo~otunp|khwwhyxlwpqqbbjs{}wc{ijijmw|hgfg^fӚuiiefhmzzgibalklkkjjkfhhfgdchsrkfgbcmymz{cchijjnpgfgcbdc_pgwwmms_aalovmhhigfhfeggomnqtniedhww|pyzyc{ojkhffgfaurc`gzwwmlkbauvvdkfggiihjilfruugeolwxouyxgoojihggilfgztz]pxovpaakdefhbgghilfmuwxwbvlumu|}zwtxtupjjihgjjkehuysooypypwvxkdhhtyutpihiw{ggzyzw{{}~~wnwstnjjmiqqsppbhksop}qvzxcefzzexiijm|qqsffgb}yyvw~qavxytwy|rqswssuwtsopsx{wrvzyzyjm}vvtqrsfgz|xx~tuwwttyoopp{{wwxx}Byvuttr|~|~u~{~{{~xtv~vppnux}{zxz{{}~zuuxuwots}|~zzywyxtuvt||xxwyy}}~xvuu|zz~{z{|xzwtswwnmgjntvp~up~po{zu{~~zy|zyutusmknginuvv|{nuxylmrvpzvuspk|}y{y{y}lmknkjnnryw}}w~{rlpu{z}uquaabyzkxz{kng~q|onnojghyp}}|wxw||yzpqx|kgrvaak{xxyx{zsgjiifjtmsqtuw||}uxz}wyrq}xkf__b~wl~vqkuzxvupnpjjfeeiffvwnomlnwnu{|{}s}|w|{zppqlpjb_`fiegciisysy}zwotkrujkefeebanllklsmrwr~~x}|}yj}|b`b`ffgbbghhaun}yxokkoq|gefeebb``splmnolrmmww}|}{uyvsxzn_`bdlcbbckledlk|~}twwtffvtohffeba`b`mmlmlln|vw؂yrww{kiitomccjowfzz}ttvkgexiifcc`caewmmokhkmjhv|ileiiotcckg~sfqqwtbgjofehgg`cha``fonoollikhgjkhgeg~~lqumjdktsmidehihtfz~udniigielaab``fynynolkkhihghiggmrmqtt{xyvrqlkhfgqwhmbccpllgfc`flgd``coyuxpyuvkggfgeihjilmmsmzyuywmllhlt}n^_YYZZ_ia`cb`qtn`aa`hhpzxwyekkhddfgmjnvwmkrvswo|rmmlm~le^^]YY[ae``^_achggcyzylfazkkjfhlsnp~oo~lv`cpqkommlmmkhg_^^\aihfa``^bXY_ebhhfiszz^vuuqyifglokimfglux``pqjmpmmjykf^^akljhj`ab_dYXehgefhtoxmnit~wwtjvogffggxtvstxnonnlkmusqqa^^cldjehkadga}`cgeggb}uuviivxo{z{zwggffkwbctwxupnnrvussrrq_oonsibgi{~hl{hiiksrrlissp{z{{|pogfjgged_possov}ywyttss|lichzah{nn|{|vokrstssrwpn|z{|}notljillhqgqolnjuvyysstsmqljqsr|ifiltt}}|}vlswrwpmjoo|z||sovt|llfivhqpruw{{vts}rni{}uz{{foptv~tsxrrhkmjmolm{||}oljojuryyuxuxwx}qxtty}xvuyxy{goruqvtt~uv~zrsr}xijkkllp{zzx}kmljsult~xyxywvpo}|ttx{wwx{jz]\koqtpqttvznpwqkkllv{ywog`gihnutsv~{{yxwx|zyzwwy{i^viqzikjsz|y{nnkk{yta_iblijtj}yzwyw|}wvwwzy^vghlkhiklrq|rkklmwoyflje{ipqlrswyzyv}~tswwzy{igjdkhhiigyqonkjoxn~wtu~|ywsszvurtwwy~rdchlngihijfkkqui頑sxqh}zwuz}}qporprv{}wvxzzwhhehpggimjhgpptwyssn{{w}stqrqvpwnmyvhmsusu{gjlrqqyr||z{yzutr}zpfdzwxvurxxyyyrq|y~~{qsor}xzywwzyd`_jxygvsu}yy݇~qqy{x|}ttszxww}o~~}nd^cjq}uyy|uurv|puqoo~n{xww}|aaii~{z}rrqwttvs~qpsiioptuu|ywyjkb``br{}~~~wwwvrnoppx|mipimjsu|yswsbru}yzu}ztuwvvsqrvnsrvvomhmqolpryx~tzzuttussutuwom{wvsqronuqnmo}u}}mhhmp|xx{y~wvy{vuuyuyzuss{vvtqpputmuul~~~eddnm{{xy~wxw|vvtutuu~|mpss{|t|zzlphu{|m}x~wddeolt|~wr}uuvvwwv}xttutuxvtxxrtqqs{s||}sbelksnyvgf}|jvxhh}elqgwwvzzvyvtruvuttru{|uyrtrdcimnhy|zejittloj}qpuk|xxw}wzzx|{~~uswwyxuuy{rqkwr_`mkwxh|}awnifkjfedggffq|xxwvxxzzyy{~~~||xo}xxt_c^bnyjlfx}osjrgkcddgffx|x|xx{z|}{}z~~~}r}zvrhg`\]bhrhkomjx|ftmlhddkijk||{zy|~}z~}~|{yzxusw||ejebbcfhhnhhiuyltyvvnul~{uwxy|xz{ystu}tecfedceghhghmkiypky~{yy{yxy|utppnup|qpiigegihgghfe{z}~}|}|~~{zuv|plrln}pmjdgjghggfkyysy|vvnljkkn|zsututssoovww|{gcc^YZjj^]XWjvq{p{lwonnf[ab]ddgwtqq`v~x~ilnnppoonoovwx}`hgcbbkjZkzWWX\mbroavppoecac^]ffstrqm`yxnllopponnosutwv`eegg]]ZfZkWW[`amddcsopcb]^fdfuf^pc[~qmmkmnsnnostsoejee`a]ZZ\[e[WW]\acaec^ssjts`_bc_~pqpod^X~~unimkqonkknlc_luspnn``b\YY]jc\]zt{gec_rtrc__bfrmne]\hpl~yykevurbffabl][gh[mmbmeggXX_goqkWzo]s^^blr__^_U\wwӐl`_[\^bopz]_XWb^__^]]^Y[[ZZXX^hha\]XYambnozWW\]^^cf^^[Y[ZvUe]mlcbiUWWbek`\[][Z[YXZ[dbdfjd_[Z^kkqdmnmWoc^}uu__]]_^YlvzeYV\pmlbbaXWjlkZ_Z[[]][]]_[gkk]Zealldjmmz[c}~c^^_ac]_vwxmgoUfmdkfWWaZ[\^X\\[]`[bkmnmXlaibkrrolimghct__^_^abb\_wimfddofnflknaZ^^jokif]]_mp]]oowoluqqttulbkf}gub__b`ffgeeW[^hdfsxyglupnY[\pp[n__`crghi\\]XrtmmvllwufUjllgjknw|efgjgghkihdfjy{nqmhlpoppvy_csmmkghi\\oqxx|zyummwtistgqvjjggh|{lddgfgsyqmmnnspmkjjhqszxwwxxvrtjrotuvypollojgg|~qkefelms|uq{p{npqrrvsqklnkzz}zyxxwvkdhhtvtvrqmokkipgjjy{iukukjrrnnmoosst{vllp{||z||wvotvnxwtrulklkijgpqux}iglkdc]`djlxufzys{qhdsx}}}||stdcpojouurtsqlkmjiqtww{jiihcad]_dkllrqvbhksls``ei|}~||vdsnkjhe`pqsnomnkot~vawwcada`ddholrrjqnsse`cinmqwi|{~uttejWWXtopamnnxac^rhvox|edde`]^ofrrqkkinnl}mccxlo_y[sfxwkWWaqnmnmlooh^aa^bxutyzxzjcigjkmqqpqijloikecxpk_ZSSVrtk`wulgbl}pnllgce__a^^]a^^kkw{zdecbdmdvjpqpqfpninmlbcd`c^VSTZ]Y\X^^iyoipswpnfkbhl_c]]ZWu{{wbaababibglfqqjornqpsl^ppVTVTZZ[WW\]]Xkctypogbbfhs_]]YVgxuebbdebhbcllkqpnormgqligknaSTVX`WWX``[Zaarttkonl\]mkf_]]YWVXVwzbbacpjjtsstsqslfkko_]]hcaXX_wdl\pwuvpskmnb_\zo``]ZYYVYW[lbbceeaa]`b_]y|uttjuwp]`Y]]ciXX`v[rwtxiy]hgomZ_bg^]_]^VY^WVV\dceebb_a^]_`\\Y[qrrpafisxua^X_hha\XY\\~|jy]qvn\gbb`a\cWWXVV\obodebaa]^]]^\\crfcfhi~olmjfe_]YVXbxxum_e[\\iee``]Z_b]ZVVYeojmf{okk`]\[[Z_]``abchbos{mimk_^^]\WW[fqdVWSSTXc[Z]\[jleVWWV^^fonmnZ``]YY[\dae~mmba|gjgkcpf^^]]\Z\pb\VVSU[_ZZWVVWY^]]Yopoa\Wo``_[]aidgufetcykUXdf_b^^\]]\Y^\WVV[cb`[ZZW[PPU[X^^\_iopTkjkgo^[]ttbebac]^cknUTee__b^^]\XWma]WVVZffdceZ[\X\PP[^][\^jenbc_jsllh_kvyx~xf^]]^^nikgitlaa_\Y]iifgYVW]f_d_beZ]`ZtWY][]]Xskk_^kylamlmmyyum^^]]\amWXjlmiebabjhihhggXhhmc\`bu|x}^bq^__aihha_hhclkmnmorygf^]`]^[ZTedhhdjomkliihiiuufb]asZ`uvweerqrleahijihgkb`mlnnsdej}b``bb^f]fdbc_ijlliijiehfcjlkub_bwcjktsrslbimhmfa]cbmkmmogexljrbb\_l^gfhiknnkiisiebtvmrssw^fgjluujjnhh_ab^`c\]lmmp|{{}seb`e`khooknjlklqcljjnsnkkpprs_fikflkkukluphihsn^^\\`lkkinyzsacb`ikbjtnoulmkjbbppjjnpllmqapSSadfiegjjmp~cbib\\flhib]V]_^dkjilutqqvmlklpssvnnollnq_Txl]eo^`_ipsp{{|m^^\\kq~~kdVU_Xb_`j`sopxvwlmkqqttuukkllonTl\\a`]^_bhxwxg}}|nc\\n]}~|fco\b`[q_fgbhimvouvpnlrsstvhgllnmn^\`Y_]]^^\vyxpwhf|{{q_\Z^|~~}hzdty|zmjkyytyrolihhspkifikknsgYY]`c\^]_a^ccbhl{vrZ|}}~~ing^spvvmkpzssgfehfhkptrljmoo}l]]Z]e\\^da`^hgkn{wwzrx{wroiidqqzmvvyus|ijghgl}yemcbw|nl^cikhjpu^adjiip~x|xhrrpxqxuopwvkxjhsw~pe\Zo|m|nljgnnooupjispwrro|tsz{giehsvynwpomm{pzyoyz~~ZVU`{mo]kikspp|tiiy~nom||wttqr~|jjip{}znmmsettsd~~zZTY`gv{zzskpor{jkilq{|wxzz{tfkwgeet|dqnmmsrW}~}~~yyW__tvu~~{~qpsu{gffsnkkljtg{zxfi__efjkkromo~`aX~xy{zVVXhqstt||tx|}{|ktmmliefgfymurc_f_c`ikryoviyz~{miXhksopks~~{nhimlmkijleihkke{uc^cgezbfhontujwvo~ojijkiikjkmvxvv~uc`nxnmkijgelhdceslssc^^cfrnnqxw~|xmrkjotqkjjkkokop}yjhgntjxmlhhlkcklctztut[ZZdcqqnyzv~ymskllqkkjjktradhggfnphpqpcg`lqsctn|tmZZ[ebjrtmhskjtw~jjkkrmjjknljn|}lfhffgngpptyjY\cajdowm^\sr`ln^^s[bg]wmmlttxnnjokjhklkwwihfinohlhzjhZY_ce_osp[a_jjbe`sugfkarnnmrknnl}porr|kimmon}}sjiloff`mhUVcamn_rsWme_\a`\[Z]]\\grnnmllnnmmossutrrn}tcqlxmi~UYTXdo`b\nvytej`h]bYZZ]\\nrnrnnqopqoqtnrrusvrhsyp||~~tjfv^]VRSX^h^aec`un{r\kcb^ZZa_`aurrqoo}prqnrqssponpnkimx~|~svpp[`[XXY\^^d^^_kobjnlkckbutqklnoqvvsvmopoijk~r~h}u~[Y\[ZY[]^^]^]ca_ne`}~o{|xtqoo|xxnmoqkjffdkeq~fe__][]_^^]^\\qvo}}s|zvyutrsz~}pssqoklrfahacrec`Z^`]^^]b||o{iwy|nrlldb``btrxvvqikjkjiieelmmrq]YYTNO__RQLK^jeodo`lddc]RXXSZ[]xliffUjvtwnt_bddffeedeelmnusVv^]YXX`_O_nKKLPaVfcUkefey\ZXZTS\\ijhgcVwuvwondbbaeffeddeiljmlV[[]]SSPO\O`LKKOOTUaXXWhdewvYYTU\Z]l]UgZRtwwuvgccacdiddeijie[`[[VWSPPRQZPKKQPUWUYWRgh_jiWVYZUuvhihf[VMttvkd_cageca`dbXSbjieddVUXROOS_WQQnzho[YWSgjhZVVWY]i~ef]TS_gcuooa[kkhW[[UWbRP]^QccXc[]]NNT\de_KncQgRRVahVVUVMSnoodXWRSUZfgpSUNMWSTSSRQSMPOOMNS^^WRSNOVbWbcnKKPQRRX]UURQSRnwzM\TddZY`KMMW[aTPPQPNPNMNPYXZ[`ZUQPS``eYbcvaKcWRqjjSVTTUVUPcnptZQNThedZYWNM`a`OSOOPQQORQTP\``xySPZVaaY_cbnvxOWqrXTUUVXZUVmnpcv\}fL^e\c\MMWPQQSMPPOQRTPW`ccMaW^Waghda^cxt[\uXiUUVUXYXSVo`c[XX}e]f]dbdWPSS_d`]ZQQRadRQee~le`jffjjkbX`Zr[utjWVUYV[[\[[NRT\X[hmo^clfdOQRfePxbSRTWf[[\QQRNgibbktaamk\K_bb\t_adlr\\[^\\]^b_]X[_~oqdgc^bfefexklSWg`a_[[\PQdelmqookccnk_ijw\z}huvl_^\\]qpbXY[[hnfccddi}{}xtyud`_]^[efnlklnnlgkaieijlnuffa`c^\[psyf^Y\Zbbgqkgqfqdfgx|xffjygd__a^nnuqnmwlmllaY^]jkikifcfba_e[]^lnv|]jai_^ggccei}hpjyu`__dopupn|pqlkdikclluigjbb^a\dehkrp\[`_WVSVZ`bnwyk[ongof]XglqquqppuwxgiXXdc^cjigihgcaca_fhkjnv}{|z]\][VUYSUZabbxhfkW]`gahTUZ^pqrppvusvjYfa^^[YUefhdeccadirssiUi{|ksVVZWVZZ^fbhh_echhZTX]bbek]pvoxurhhfW\JKKLLieeVbcclttUWRe[tjdosZZ[VSTe\hhg`a^cc`rbXXm`dSmOg~~rYvji^KKWgddcbdc\srRVUUSVmijpqmo_Y^]aadhgg_ad^`YXme`SNGGJe}wuf]Rhg_ZVasfdcb\XZSTVSSVSS`anrqYZXWYcZmaggfg[fc^cbaWXXTWRJGHMQMPLOP[kb\exjmfd[aW]aSXSSONlrrnVUVWVX_Y_yc]gg_dgcfehaRddJHJHNNOKKNOOK_Wjoxxfe\WW[]gTSSROOML^olYVWXZW^YZccagfcdgb\fa^[_bVGHJLTKKLRSNMUWikjadcaRSb`[USSRONMNMnqVUVWXWXXYZfa`ihhihfh`Z__cSQQ\WUKKSkVaPgomngjaacWTQodVVSPPMPNRbVVWZYWXXVXYWSoqjiih^ikdQTMQQW]KKTkOhmkp`qS__dbOTW\SRUTTMPUNMMSWWYZWWXVUWWTQNOfggeUZ]gliURLS\\UQLMPQQvtx`pSgkbQ[VVUWRYNNOMMSfUbWZXXVWVUUTQQPWfZVZ\]xrsc`a^ZYTQNLNYnomeV[PQQ]ZZTTQNTYTQMMP[b_b[qfccYUURROSQTTUVV\Vcgoa]a_TSSRRNMS]h[MNHHMXONQPO_b[MNNMUU\dcbdOuXYYVPPRQWTYq``VUp[^[_WdZSSRQSgXSMMLHHIPSOONNOLLMLNPUTSOcedWQMfYYWRUW^XuZshYYgVl_ILXZSWSSQSSQTSMMKPXWTOONLPFGLROUUSV]deIa`a^fWQRjiVYrVTWQRV_aIHYYSTWSSROOcVTMMPZ[YWYNPPMQGFRUSRST_ZcXYU`jcc_T`knmrlZRQQRa]_[]h`VVUTRPS^][[OMMRZSYSWYORUOjMPTQSSNh__aTTapcXcbcbnniaRRQQPU`KL^`a^YVUW^]]\\[N]]\`WPUWipl~sUYfUUW]]WU^^ZbaccdfmZYRQTQQONHYX\\X^da_a]]\]]hiYVQUgNUi|kkZYhgga[V]]_^]]|aYVdbcdgXY^qVTTVVRZQZXVWS^^aa]]^]X\YV^`_hWTWlX^_hhbW]b\aZVQWWcaccd\Yl`^fVVPS`R[Z\]`ccb_]]f]XTgiafggkSwZ[^`jiu_^c\[SUVRUXOQaccfpxooqgYVTYT_\cc_b^``eXa]^bfa_^ccegSZ\]Y_^_i^`id\][gaQQPOOTb``_|bmngUWVT]_V^hbciab`_WWdd]^ac`_`dUdGGSVX[WY\]s}y`cqVU\UOOP[a]^VQIQSRX_^]`iheejba_`dhgjbab__adSGk^PWaPRP[cszzebnno`RQOO_esr_XJISLVST^Tgxycdljk`b`eehhii_^__baH_OOSRNPQTZkz~ijYppo`VOOPPrtrqZXcPVTOeSZ[V\]ajcijdb`fgghj\[__b`aQOSMROOPPNhkjbiZXonn}dRONRqssr\sn{zXhmtpna^_mmhmfc`]\\gd_]Z\_^afZMLQSUOPOQRPUU[^nukfMqrrsr{s]b[Rgdjuja_dngg[ZY\Z\_dhf`^`bbq`QQNQXNOPVSRP[Y]`tnkkngmplfszs}c]]Xeenuvajjmigp]^[\[`qmYaWVjpb_QV\^\^dhPTW]\\crlpxuwmw{~{wwy\ffdlelicdkj_|l^\gkrdYPNcpapb`^[baccitwd]\fckffd}vqihopx}s[]Y\gjmbkdcaaodnmcmnrrNJIToacQ_]_gddphwr\\ms|bcaqplhhefrp~y|^^]{udoqnbaagYhhgXrrnNHMT[jonng_ccfup^w^sz]`epqklnnoix|Z_k[YYhpXebaagfKqrqrrzmmKSShjisrroredgio[[}Zhwa^^`]h[onrulZ]SSYZ^__fcacrTULrlmuuonJJL\eghhpphlyprvop_iuaa``\YZZmaiftWSZSWT]_{{fmcj]ttmnrtoa]L\_gcd_t~grroc\]|va``^\]`X][__YpiWRW[YnVZ\c|bhi^ttkjcvrsc^]^_]]_^_ajvljjrjWUcka`^\]ZX_[XWYh`hhW}SRWZfbbelksrplaf_^che_^^__c_cdyqm^\\bi^}k`_\[[`^W__Win}}iji{OOXWeebmntjrmsag_``e__^^_hfuwUX\\[[bd\wcddWZS_efWh|cuqi}b|OOZV^fha\g_^hkr^^__fa^^_b`^bqqaZ\ZZ[b[ddhm]MPVU^XckaRQhgVbcRSgOV[Qkyaa`hhlbb^yyc_^\_`_kttk]\Z]bc\`Zn^\NMSWYScfd{PUT__VZTgi[[_Ufbbaf_bb`qdcffvp_]aacbqstuqh^]acZXRua\IJWUabSfgLbXSQVUQONQQPP[fbba``ybbaacggivhffbsxuvsqhWe`l`\rIMHLXcTVPbimgY]U]QVMNNRPPbfbfbbecdecehbffigjf\gmwdppvsrrh^ZjQyQJFGLR\RUYWUibmfQ_WVRNOUTTUiffeccqtdfebfeggdcbdb_]aslusrprgjddxOTOLLMPRRXUUW`dZagcbY_Vizhe_`bceujjgjvacdc]^_rfvsvrv\qir{OMPONMOQRRSTUZYUh^Yvwdz{ppmheccp|}klbace_^ZZX_Yerusuuryz{ZYSSQOQSRRSTUWTTiniwviqoknihfgtmruz}qqs|sdggec_`fZU\UWfst~~}|~{YWTNRTQSSTVVUZusqddp^km|{v}zto|zxzbf``XVTTWhu~w|}yfheaafityaaczmV[\\bdyzznolcdcbbedeis~~}eimljkeox~~~}qqihggirjdeaedccwvXWUY[]ggvgfpopndccd``fguuvuqnkjkddg~~{{zzggrqreufaaddlYY`YYV]nvtrrfdd_gihy~kohflifd~}}{xfbfprrsvgvma`dw[XTW\_nmeyy}leedcab`gj]X^`dhedefhehtx{|y|{xbddmqrrssviwwuavwZVXYkorce}~sgeeb^`f_^bccreaddbcdnvx|}{zjskjdrrvsvnnwmhnwwhXZtsy|es|}}mlgpe\_b`{x^zzbeliec`^rz{vtxvvxks{pssvuzyywywthVZgqsmjdsz{{jmgfdefbew^zyb{_fvhbedoxywvuxyyu|kgpuqsu|z{{yxyxttfZmytuklihghihgg}oyboqyreafnz{vyxtstt{{zx|vyv{|xyyuvqxyutpihhdjcg~}}uyoawssrziq{ss~uvt{v~~spxzz|zxx|zy~xxuuvomoji}x{ynxvnpuyvtvqwzwvzwx}ksyuw}{zz{||~~~wyp}do||xvvzzxuvvuutvwjzxlv|v}z}}{}}~~vxtt~y}jplz|ztwwxxwusppolljjyrwv|}~}}|~~}jxwswliilltvwwzustrpnocr|ryyw~}~~zy{}~~}}~~lnzygnmllhrsstzyrrcyz~zv||z}~~ry~{nqonqikxxyxyxumqqhjssrrv{tz}yy}}xw|z}~rxy|onkmhhprvrw|zsrnuvkkrrowz}y{vzw}}wxyyzspqsihhsvs|~vvssnozzs|uqlt~{qjjnnyr|zqpriihigehprwpwwuyrrz|ulukktpuy{u~siihiwsw_nfkhggur~y|zrql~}}xjrmgypkolox}qkoj|utwf`\\fgmltujgaj}|qkpw}~trpkjmjtnoifh~v}vjjoptmnd\\dfehl~rdziaabl|ototuw|uknmnysslgcex{rjjnponnf\\leege~kezjnbf|vvlpttrppijjiusqltdqx}jjpponi^]\]]coddb`sblghhcim{mmnrtt{xppkjjkurmmghy}ppop_]]aeysqgayyxvqlkfkm߀xwskljtkrqpkllkkhhrpponb\a]ewhusyxzz}tifm~xxlnlmhqt~oppkqlwwqpuvtn^c{spoonnjofmg__brwtru~{khcdfsp~fnbllfiwopquyunwt`]\llmolkputka^_bpkxz{qmiddsst|fhim`ffcftmwuopps|m``ZZ`jjy{xotjga`_ablhwyjdccdnof^bW^`_klovnkkt}ta_\\Zefevxyupgiiea__chhj{w~djgcdjopr|onzWXXVhkklyx|fq}o`\\]fkvvxxnpgb`dhdctn\lozxshddelno{twv[VWWaikjn|st]oxvxvvwurpnlb^_^_c^nZZstvxjdelmuxu^WVVWV^cijtk~splj{{wvvuxtha^^kon|wxnuv~\]ZVUVVXcfhjmtp_y~~z{xwwxyzigw_^abmru}~vurqybZWXUUV[[_hdt`k`z|{ywyzdhhmcw{t~uwh~xub`YXXUVUTWVZO_af\_]\~wyyzdlce]|}OKo]Z[WVXTTVRQYbbe^\\^]sxkxyokba`^][|wsvnql}bRUHMY[b]XUWWLKKMXb[TTZ[^rs{bde`a]`aaywwsm~SPPJMUW_Z[ZWWLJJMT`NXWY[[rww{giw|}egbfb``qnvstvtmaQPOPPMOX_\`ZULKMKKQVOJRZ[[zyyxypeerkvpfdjja`m_hqqttxddwUUOORMQ`]_Z^ZJLKMTJJNWXZrrw~|niffhoei{{ljil]]_amnpmzxobVOPOOSVPMWWYW^ZSLN[TNKQZ[VXqwtx{qpidtzkdgjpig^\\kwlkkbqrmJMKNKOKOQRYS^a[[RKJQ]OUTTRJVusvy~lhgmhdhpproo]v~zb_ad]]JIGNOKNPb_][X`XYYTSTXUUPTSOuwxyhhokkyzsrrsryZoQIHGGIHFMOJPZ`bXZZTSRTQSWV\QSPRzuqwjjmi{vssrrtƀhwVOIFEJFHKNMUZU\\PLOLMMRXT]WXJQUTOrqopo{mm~nkttytvsrrsrkw\YVQPKICEFLOKUVYYZYUY`PLLRXS^WXWTTPQqpghfggsmru{~srrslcsTURPPOGIEDJKPPUVV\]X[ePFRWWRRbgWYLPMQphjfhhakqottwmnutssrpwl`_HLOPPONEDIDMKWUS\\]\YnXNQOWGSQdZSVPNTugoff`lu|m~||vtussnjjJLQOPPOJHDGEIMRTUXRfU_UTQQKGPQNQNMMPSyvkpocb\\d|xxwupskrsj]TKPPOPPNGIFHFMRnY[WXYOTZPMMHLMMPMOSS~|nnibanpzpni`_ZOPQQPPLLJFHRIIY^_WTTSoTbYTTNMJJQMQQRTzlohn`t{}n]`O\WKLNQPRPIKEEOGHQMV_TTRpdjabONKJLLRQUTWuztppnu{S]`USOYHQOOQTRVOIJHGIHPTWTRRSSVcplUJJKQTVWW]uwt}}|`k[[XWXRQOQL]SZPMOGGIGQVUWUSUUZZon]ZUZRR]XW^a`}|vttsqyQ_bRSZXYXWYXQROPRKQQNNUGGIQVVSPS_haisulkooe]a[^b]{uoanfUOQPRQNWUYYVOORPPNPRVTPKRKTWOJOW`_Z`_pd_oofh_bf]abuup{ngf]TRNWPQNUXTYY_aPRPQNVVKJJPQMM[`a__Yhf_\_f]]\V\auuqq[W_WSSQRMOQRQXYZYPW\PQQRRSVVMIM[JQHMROZZQTS_]a__]_]\[TSX|gPPWUQUSQNQOQPRS[^cP]RPRRSTXYMKX`MGROQWOOQYV]ZY`_]][XV|ebbKRQWQVRQOQQPX\c`ehR^TRRSRUYXUX`Z[NMPQSQPRVVWWY[]]\[arvuUHQQZSUXOPNQPPTZ\gjjgYRRQRRSV`[^][[JJNNPQRSVUWWcgeaj`]_eqVk`]HHQQRYR\YQNPQPT[_mchihTjkSST`YW`dbNJIOOQSQSVXXdjknsnxyuwXVQRRHUQQYZUYSVMNOWY[^[[bchbKjfjSSTUXZab`VNKLLNRWSST]XZmpqsywzwwVVUOKIMRZR]XXSQPMQV\[[a\]Y`UWWXXUZVTYccV_TJTRPOSRV]Ze^nstsu{y}~VWVOPOTGZ]aXVYQPTRT[]\`\]Ze^b_fdeTPPYYbc_b_TSPRQY[jc^jysttuyz]ZVV\_joWWY||peOTVVZ\oopfhe_`_^^a`adnzzxy_cfdcc\elrwuug_]]^h`Z[W[ZYYlkPPNQSU]]j^]ghig__`\[bcpp~qojgcc[Y\wuurrpq]\]hhgh[k\WWZZaRQXQQRVdkitvkj`__Zbddt{z}wdg`_d_[Yrwutro`X\fhhiyl]lcWWZmTPNQUXdc\noqe__^^\ZcdVQWX]a^]^^_[\jortqtsp[YZcghhiil_mmkXpqSOQRdggZ\pssi__^^\[X[aXW[[j^[]][ZZcl}oxstsrcla`Zhhliledmc_fqqbQRlkqrZfpqqdc_i]UX\YspVrrZ^eb][XVhpqlukomlnnypaipfiilkqoonomjaOR^ihb_Yfnoo`d^]\]^[^oVrqZsX_o`[]\emomllnools{yc\fkgikrpqqonnj^Sfoij`{urub__^_a`_`tgpZgiqj^Z^dopknmjhkkrrozmquzlol|qrnnookljnoiidu__\b[^uttlpfYojkjr`gqhhqjkiomtt|rifnpprpnnroouxmmji~~ё~~je}efa_snroeomeglpmklflnkjnllqt~~`iokmsqpprtvyytknttzzgs[exxrsnmmpqnllkjjgjk]nl~~wbukrlrprqprrsuwuzstkltyhhup~xs`fbprqjmmoomlixeed`_]^xz{ohlkqsurrqwtvuvsryyzz}w`oumjmb__bbjmnqkijhebcVu|{hqhloirvqrronqsttus~q}utcevpo]dcbb^hiijp|oyfgVmrnzp{o{lm~porrthotvqegedg_aonoo~kcgg^`iihhlq|jprnmtpptl{}~ywkporthnoruedac^^fhmhmsp{ihdklaahhemv||wvw~opmnwzgjxuvuxkrrnnoopifgi_^^ilistulliideppvxjry~ujfbirxnse__deohrpgfh__^_][^fhnfmmkoyvwwvzyh{i|qs|kbjaaheyglnhqh^_^_nimvUd\a^]]kh{utorpyxwxwvhfbtutpzagd]{l~b_cablsqg`e`rkkm\VRR\]cbjkw{`x]W`srzwvvgafms{uli{ga`c`z{gcc]\^rkrk``efjddZRRZ\[^btxhZp_WWXbzywurejejkmslaedd{nhha\X\nwph``dffdd\RRb[[][ta[p`dX\v}yxrlmbfjjkhwgg``_xjhgbkZgosaaffe_USRSSYeZZXViXb]^^Y_cv||ywvrccdhjjkqoggb``ajhcc]_osffgUSSW[oig]Woonlgba\acxyywonibb`jvvwxzahgeabbaa^^~hffeXRWS[m^kionppvsk_\cuzwyxoocdbc^gjtvv~effagbmmgfkljd}TYqifeedd`e\c^VUYhmkhkur|wb^Z[]jguw]eYbc]`{mu}}uefgkuokdm}}jVSRbbcebafxljaXUUYganqqgd`[[jjlr]_`cW]]Y\jcmk~effirzw~cVVPPV``oqnej`^XVUXYb^mwo|~{ua[Z[[ef]TXLTVU`bdl}wdaajyswjWURRP[\[lnokf]``\XVUZ^^aqmwu[a_[[afgisfepMML^aaonzzq\fseVRRS\ajkmndf]XW[_[ZjdRcfpoj^[[\\degqknlPKLLW^a`drhiRe~{mknjkjkigedaXTVUVZUeQPjkx}lna[[cdw|lokSLKKLLSY_`iasheb`xytppkkinj]VUTUUbfer}mo|~elmtRSPKKMY\^_bjdSosropllmnp][mVTXYcikttlk}yyihpZQMOKKJJKLRSV^[iU_Tt}{{nppnlloX\\aWnqjv~u|km^}vpm[YPPOLMKJMLRGVY\PTRQyy󏐃{qjllmX`XYRtxvuuzrv~uGDhVTTONQLLNIJQZY\UQPRQimv^klb^VVUSRPqmjl{zdgbsZLNAGRT\WPNPPFEDGQZSLKPORgh{}|osutVYYTVRVWVoymmicuwtMJKKDGPQZTXTQQGEFGNZHQNOOhlmvwq]u_lqpvZ\W[XUVgclijljcvXKJJKKGISZX\UPGGJHGMQIEKOQPpopnne[[vgbvvke\Y`_VVcU^ggjjnYuYnONJJMIM\Y\X[XFIHIPEE HPQPhinwure_\\^e\v`xrqb`_bRRTWbdgcp{ofZOJKJJORKITUWT\XQIKWPIFKSTOPhnknr~hga[jqa[^wwxx`f^]TRR`mbaaXiieEHFIFJGKNPVQ[_ZZQGFNYKPONLDPmjmqzu~d_^d_[_wygfhffRktspYUZ]XXFEBIJGJK_\YXU]WXXSRQUQQPKOMJloop|}~|__fabpq|jiihihxnShNGEECDDBHJELV\`UWXYRRQSOQTSXLNJMqlhn|zxaa`ad_r}ymjiihiju_xqRLFDCGCDGJHQUOVWLIMKLLRWR[UTGLPOJihffrddudajjpk~mjiihamuUTRNMIGBDCIKGQPSSTTQU]NKKQWR\UUQPLMgf]^\]^jch{kqtyiihghbYhMPNLMLEGCBGHLLOPQVWSXaNEQVVQQ`eUUIMILf_`\^^WagewjjncdkjiiflbWVBGKMMLKCCGBIGSPLVUVUTjULONVGQPbWPSMKPxk]e\\Vbkrcurrljkiihid``DGMKLMLHGCFDGJNPNQL^NYRPOOJFOPKNKJJMPolafdYXRRZu}rnnmkfhahi`TMFKMLMMLEGEFDJMgSTPQSJPWNLLGJJMJLPOrrdd_XWdfwupvfe_WVTJKMMLMIIJHEEOFFSWXPMNNkQ_WRTMLHHNJNNOPtnce^cVjuyqsdVWGWQGIJMMNLGIBBMDELGOXNNl`g_`NMJHIIONRQSjojffdl|qJTWKMGTCMKKNQNSMGGFDGEKORNKLMOR`miTIIJOQSTTYwitnuktsrVaQSSRQRMNLNHYOWLJMEDGDLQPQPNOPWWml\YSXPPYTTZ][rpmkkj|hoHVYIJQORRQSSMNKLNGLMJJQDDELQQNKN\e^fprgeji`X[XZ]Ypuul}|fXe]KFHGIHEPNSSQLKNLLIKLPPJFOFPRMGKR\]W^]n`ZiiabZ]aX]]t~llmmgre^]TKIENGHEMPMSSTZ\KNLLIPPEDEFMOJJX\^]]WebZWZ`WWXWQW\ullihRNVMJJHHDFHIHOQSTLSXKLLMPPFCGWENEJPLXXMQMXWZXYWYWWVOOSq_HGMLHLJHEHFHGIKSW]LXMKMMLLMNSSGFU]JEPMOUKLJRNVSRYYWWVSQs]ZZCJJOHMIHFHHGOT[Y_cLYOMLLNLOSRPT\WXLKNOOMJJNNOORSWWVWWV[jnnM@JJSKMOFGEHGGKRSaddbTMMLLMO[WZYWYHGLKJLKKNMPO[_^ZbZXX^jPdXVA@JJRITPHEGHGLSWf\ccOefMLLMZTS[__LGFLLKLMJKOPP[acejfnokmQPKMMBNJJRRMQJNDEFNPRURT\]c]FeaeMLNNRU]^]SKHIHJMPLKLUPRdghjompnmPRQJFEGLSJVPPJHGDHMSRSXTVSZORRSSOTPNS^^_S\OHPNKJMKNTQ\UeiijkpnssQRRKLJNBSUYPNQHGKIKRTSXSVU`Y]Za_`MKJSS^_\_\QOMNLSTbZUaogiijnnTPMMRU`eMMOrrze[GKNNRSfgg^_]VWVUUXWX[eppopWZ]\Z[U^elpmm`XTT^VPQMQPON__HGFHIKSSaVV_`a_VUUVRQYZggzuhf`]ZZSQT{pmmkkijSS^]^QaRMMOOVIHOHHJKZa`kmbbVUUPQY[[jrpsm[^WV[WSPkopmmjhUOS\^^_obSbYMLO_JFDGKMZYRefh[UUTRPYZLFLNSWTSUTVSTafikglkhRPQZ]^^__bUccaMdeFCEFX\\PRgji_UUTTRQNPWMLPPQ_TPSRQPPZc~ueoklkiX`XWQ^^b_bZZcYT[edUDE_^egN\fggZYU^SJMQNgeLggOR[WRPNL^fgblaebaccmeX`f]__bafeece_ZUBFP\YTQM[eeUYSRQRSPRcKfeOhKScUPRQ[cdbaacdd`hpnXT]b]_ahfggdcba[ZQFW`Z[RokikWTTSTVUTTh|[zdM[]f^RNSYdeacb_]_`ffdoehlqbebrghccb\\[^^YYUrqtiTSTPWPSihh`dZMb^^eT[e\\g_`]dahiqszh|_\dffhebbfb_rei\\YYpprq^ZpWZTSgbfcYb`Y[`d`_`Z`c`_caaeirts|U_eaciffedggfhtjjc\^ffmnrsstYgNYll|ffb`addb``v_^^\^_Rb`strmWkagahfgfdggfgfkbd[]gl[\zgsbpkfTZVdfd^aacba_]lYYXTTRSmnqttc\ytbaehjggfgfdigjiidbllmmpiSaxg_\_USRVV^`aabdd_]^t\YVWKjxqp|u\ft]_d]fieggcaehheneqgfUWhbbsxQXWVVR\]]^dpuwxcmZ[Kbgbnepydna}{_vwq|tecggh]cijdZ\YX[STbaabaq_W[[RT]]\\`etvpwvs^dfbbiedei`nopwkstuj|_ecgh]cegiZYVWSSZ\`\`fcn]\X_`UU\\Yajppvkjk}rscdbcjmtY[tkhuihl_gfbdedf_[\^SS]`^ght|ti``]]XYddjltt]flrri^ZV]gutusjavgZSSYYe]hf][]TSSTRPT[]btZvaa_cmjkkjnm\o]oegp_V^UU\YvutwkZ_a\fs\QTSSb`bjJZRVRRS`]stpihcfdyx|mlklkj\[Whhrc{mT[WQrbsUTWUUageZSYUe_^`PJGGQRRSYY`amqUmRMVgfxnkjj[V[bgoi_]nZUTWTqs\XXRQSg^e_TTYY]WWMGGPRRUYjn^PfTMMX}}llkieZ^Z_`bg_yttUXXrd^]VQNQckd\TTXYYWWPGGHXRRQSQjWQeVYNQko}}lje_`W[``_\jZZTTSo`^\W`O\dgTTZYYXSIHGGN\PPNM_NXSSTNTXjnnkihdVWY]_``fcZtZVTTV`]XWRSdvvwgZZYYJHGLPe_]TNddcb\WVPVWyikkh`_\TWU_llmmwmU\[[VWWVVRSr\sZZYXMGKHPcSa_ddefzlh_SPVgjhki_`UXWWR\_jllksZ[[V\Wbb[Z_`^XqHMe]ZYYXXTYPWRHIM]b_]ajgqukTQKJLZVehNVKUUPTqckttvjZ[[`xjc_Xsaqq^JGFVVWYVUZl_]TIHHK[Vcffy||YTPJJZY[cMPQUJPPR`YcasZw[[_guokuuxrWJJDDJTTcebY]SPIHGJKVRbkcpqmhQJIIJUVWNFKGKNMYY[brmYWV`ngksv^KIFFDOPO`bc_YPSRNIHGKQQSd`j{gKQNIJOUVYdWVeGHHGWYZ[gfzttiS\wvhvusYIFFGPU__abWYPJILQLL]VDUXbu`[OKKJKRSUzc\acKGHHQY[Z\kacKZrtu|txms_^b__`][YWTKFGGHLFWCB[\in]_QKKRSgtodecOHGGHGOTYZc[ma^WUlktxxwphcc__^b]PHFFSXVdo^`nozU\]r{sjNOMHHGGJTWXZ\d_Ndhwxwwyywpdcda``abdQP`GFIJUZ]ef^\okyrtiZXeSMJLHGGIMNQYUdQ[Piwpywvyyumlbddb`acLQPUMad]hpqgn]^OxoicbTSMMLIJHHKIMAQSWLPNMllsuzuwxund_a``bLTLMIimkjhrrleh}qi?<^PNOKKNHIKFEMUTWPMLNM]atwu{vxwxsjR`aWSKJJHIFfb^`olWZVshPDF9AMOWSMJMMBA@BLTNGFKKN[\monsutqpbgjhKMNHKHKMNemca\VijtjECDD>AJKVOSPMMBAABITBKIKK\_`hu}ibpOhQ_e}ejNPLPNLN^[a]^`^WivwOCDDEABOVTXQLCBECBGKC>EKMLcbcxt``WMMNh[Ujj_YPNUVKNZMV]\^^cMiMdGFCCGCHWUWSWSADCDJ??BJKK[[auiheWRNNQYPiSkfeWVUZKKMPZZ[Xepe\RGCDCCILFCOPRPWTLDFRJC@EMOIKZa]adp[ZSN]dUNRkjklV]UULKKYeXVVM__\?A?C@CAEIJPLVZUUKCAHSEJIHF>J`]_bwlgqVRPWSOSjlu]]_]]KdllgNKPTOP?>>;BEAFQW[PRRSLKJMHJMMQFHDGc_\aosmkTTUYTfqna^__ablUngGD><<@=>ADCLPKQRGCFDEEKPLTNN@FJID^\Z[[eWWiYU__d`sb^^_`_XdlLJHED@?;==DFBLLNNPOKPWGDDJPKUNNJEF\[STRSS^W\sp`}fitn_^]\^WO^DFDBDC=@<;ACGHKLLQRNR[G>JOOJJY^MOBFBE\TVRTTNV[Yl_`cYZa`__^[aWML8=ADDC<<@NG>@CDEGE@D==>H@@HCKTIHGeZ`XXGFBABBHGKJM]b\\ZY_nssvu|yxgALNCC>K:DDFJGLGAB@@B@GKNIGFGHJYgcLAABHJLMMRj\g]g[essuukyhNYIKJJIIEEDFASIQFEH@@B@HMLMJHIJOPfeTRLQIIRMMSWUec\ZZnYpruso]gANPCCIGJIHKKEFDFHAGHFFL?@AHMMGEHU^W_ikcaeeZRUQSWRcggpq\komr[N[SE@BBCA=HFKKJDDGFFCFHLKFBJBKNGAEKVTOWVg[Vee\]SVZRVVgo\\WbXSRJCC>HBB@FIEKLMSVEHFGCKLLA@ABHJDDERVWTUP^]VSV[QQIPVfq\\YXFCLEABAB>@BCBIJMMELQFFGIKLC?DSAI@EJHQPGJIUSWTSQSQPOGFKdpQ>=CD?DAB?CACBCEMQWERGEGGHINNDBPXD?KHJNEFFOLSONTSPPNKHz{fQMM:ABF@DBB@CCBJNVSY]FSIGGHGJNNLPXSSGEIJKHFGKKMKMMPPNMSuw_ub^C9BBKDGI@B@CBBFMN[^_\NGGFGGHKVRUUSTCBGGEFFHHKIKJTWVSYPOOU^FXMK99CBCLDNKC@BCBFNR`W]]I_`HHIUPNW[[GBAGFFHFHKKTXZ\`]eebdFEADC:FCCKLHLEI?@AIKMPMNVW]W@_[_HHIJNPYYOFCDBEGKGHHNKL[]^`ecfdcEHHA=F@AFCCKJDCFIVSZC[CVbc`^llrpnnyzj]cdol_ztcdbaffbubjcWCBD>A>?ACH@GQCAGGF@DCCABBHMTUXcgllmn^aY[[Zkowzw\afiinv||nVAECA=>>ANPHKBAABE??A>CBAHGKOTTZtjV^\[[YX[LNhKKlpju\\acjkmfn||KCCHJ?>?>Q^]REBAEI@??EBEIEIILOKTXLDDPRUTVUIKLLIIDKS]\\[]f^_kmnamDBII?>>AM]_^XIQOJO>>DOOMQJIDKLMOIHIIHHZVJGFIFIDELNSZXQQKMLV\__f@@EHD>??KXOT^STOQSPHHINYUJKEIGJQLIMHPH?PFJIKFLIDEILKFIGMHKLLK]^\@AEFDE?AHPOFOTVUUWRFQSXZLNMMENMTYROSTHDJEDHMLLEDJLQHLJJOFFLLPPTaOGDALHPN@FOIEVVRNUVRRVQONNKM[_QUSRQCC?IIPNOGJGGJLLPONGFKKMPSXWNIUJKKGBMFGINMVUUOVVWSVVLUMS[Y[QQRMRONJEHEFLNPELMGMSSJKJFKLVWXXJQQRNJNOANLJKNLTNNPVWVVTORRSTd[UURQQLUNNMFHEFMULHXNPPIGFFJMRVVNGRRMJDILMIEMILMNVRONWNRQOX[[QPNQLNUONDBGKPEMKJRUPPWQIFLPOOJNHQRQNOMHELGFHGEGIMMNNKRGNOONVUZU[YOXMROJJCDDQKKFHLMMRUSKKRSaKOGGRRPQPKOTRLHEKFNILIMNNRLFOPOQNVVZ\\QIIRPPJBDCDLLBJTQNNPVTLMEEGQJSPNMRPKPHCCMMJOOTPJKMIKPWXXo]]\KJNPIKDBKLKEEBCWQNNQPWZhWVHEWGKLOSPTU`HXZONRMRRTcVSU`Mm_qts`]cMJ[^xsKuKJFYfKZWRUQR\aecYHFGkcMYQPdggcnnvushs}wbeOlvxMupmrtvVQTzTnrtwQPFPQSe{~{p~~}^}yީﴔݥ𤘗릧񕘬ޯѳ촲󴯬̱ױװ񱭰걵gk߳qnbbhյgbabbelbdabfdaidce󘚔VRROP^eqpqulZWZUUZXRRW`]_f`aa__^flnppmiolla`VUcbca`jVUruvrVVROOdeZ`_e[ZWOVVUYSQRZ[VV\[efa__`jkc`f``adg]gWTbcaa_UUWVll[UUOOTVZ]YY^RNJMHRSPQRSXUWU[]XZ`__^__cik\`da^]^glhhabcc^cdTXjq][VSSOVVY^WLIIGGHMOQRXXUYVVUUX_^^_^_^\__a^\_X^edabbcc[\UTZjXZWQX^XWSYZbVHGGFGGHROROTQS_`fYYUS\^__^^\]Z_^^__^Y^d]bb`b`[WY[[XY``XSRSMPNHFGFGGMNOOQRSTaaPQU]^T]\^^]^]`a_^X^]\`c[a^d]ee[]abRV`aaZSSRRHGHGFKNONXQSTTRS[SR[\[Y[^]U^Z^YZVVY^`YSXWUUV[[cYZMLMbdwoXSdlRPHGFGFMNZ[TUVS[XWS[]ZU[`aU^^a_b_[UWYYZ_WSTTYW`SNQclqyl~eb]SJKJMKRSTdhS_[X\X[\[[iZZc]VV_c^XXWZbVTSTTSTSS]QTWahcbppanZYcgWTXKTMTSRQQLSSYZ`]YVXVVXVTUTW[_`WWYVVTTSTRPRXNZZwdffggxcflY][TXONRRSWZZ_^VWZWRQHSWYXYYWVV`[WTSTTUSVSRNMTV[nerhRQWfoc`NVMYNOPNRRSV[X\WVYRRKJHJQ[NPXZV]fiPPRVTRSTSSTV^rtoeQQ`heNNcoK\PTQRRSQPVVU[a[JRRJHOQOIMRohxqUPPOSSTVS`aURbWgzmZVLMibLLOclp|RUUQRRPSPfhku~RR`NMLOTIN{uVPVTTPR]eobphfeWngYbRNLLVTT\^SbwvhPRPRRQQOU\hTy]NNMNLOJIIHLzimTNRVSLTUaUbm[Tecm][[WOMLW]]^ab^]myyzVPPRROOUOTTSfcN]TOIIMOKZ^baZS\WWKTa_fi[RSR^X^[j[SNONP^[\`es]\o[QTRTSSOOSOSTfNM[SURMQT_pfck[kdb__bFdWccSWTNYvXQOQ\Z[]_``afkcYXRTSQOONQS_gUOQONPQQeijsn[ulMK^LKONVVagbenqlvVUQPW^^[^`khghvhhTTPUOSjaUVTTiOSQsurq|vRV`YJc_]UZmZYXVVUUSPP[^^[\^ZTg[YgfWWRZUSNNRQUa^ZQLarb`qqrq_eaJUYVUUVSUWYWVWVVXMK]^^K]VNM^EUbWdfcNNPPIKK[Y[]nacb`_aqmSavIQaXVUVWYYPYX^PRUTRMLOOZZ\SU^`JMQP[_W`[RSRSPOIIJMZ\ppn\jrqi[`^]aVPUaUWS^[TWOZNeb[TRLKKNMMLMSUc\[DQRZWPRTFGHLQQPWUnbh]gki[]TRUVadc\]]Z`V\Uef[XXMRKOOYVPNriNJHNQJTRl^HHIPsgSrfahap\oeYS]W\]bc]\]`ml[\QQbRRLLNKPQQdaTJMOQRMSTTn]HJIMejZfep[^WXXcYXQ]XZ[Z\]]ll\a^UMYSSTMLR_XTQQUVUOOSQNKSUUehug^XHHPQir\a\ZbUXWSUZOTX[WX\``_e[ZUU^[YYSROPRRVRQQRWWiUUWT_VTUVOhKb`_otvt_pjiRXWQOZTWXSYdU_jXX`]``[_HRNOQQR\XhZVVUcWTSVjbceomm_dPZWryxXUTRYPQRQSV^ZVSV\R\S?DCEQOFRRQRR`nlj\X\Wdqojjk}syqdsln\ljN\ZfcdTSVS\Y^eVSXFQI889A>DDOQQng`\kXVYem[YZjacrdf_nnoa[MVgyqsrbPPYZZ[^_WVSJ>877876B96?MOMPNXYjniffllgUUl``fcceo\`VdWeMb_gmj~uutiWTZZ\^[YRSE=98775:486B?:[NNQRRQbfeW_endcdnnv^[XogppUptrvwxvUYUZ\kiTTF<99775577=99BA::=@MJQ;Q:NY[VUaafcaamm^QWYcaRohu{vvuWWUTYYViV^WR=;=687689>7?I98>?>9;;9;BD9798KXVK=:9>C:88>;>B?BBDGCLPE==IKOMOMCDEECB?ELTTSSZUW`bdVb?=CC9778:GWYXRCKIDI87>IIGKDB=CDFHBACCABSPDA@D@C??FGLSQKKFFORTU\;:@B=899DRINXMNIKMJBBCHSODD>C@BJEBGAIA9JADCE@GD?@DFEBCBGBEEFDTTS;;@@??9;BJI@INPOOQL@KMRTEHFG>GGNSLIMOC?E@?CHFG@>EEICFDDI@@EFIIMYIA?PPLIOPLLQKIHHEHUYLOMMK?>:DDKIJ@E@@EFEIIHA@EEFILQOHDODFFAFCDFGPKIHQHLKIRUULKHJFGOJH>:AEJ=DDCIMIHNIB?FJJIEIAJKJFIFA>E@>A@>@AEEFGDJ@GHIHPOTOSRHQFKICB;;@DEDIMJBCKLZFJBCKKIJHCGLID@>C>FAEBFFGKE?HIIKHPPRSSIAAKIHA9;;D:BKGCCBKONFHAACJBLHFEIGBH@<BCGKGJLV@OQGFJEJJL{[NLMWFbWfkjWTXDBRTlgBiB@=O[BPNGLGHSX][SCBCbZDPHGZ]]Ycdkki_zzzt}|~{thqlXYFajkvCidafhhIEIjH~chjmLJB|GHJ[psqftuut}||咄~sruvtQvzrny|{y{Ò~䐑䐒򜝜ӡ󝛜졞󠙖Ο򛙘瞔x||~򝘞띌}~򞚝򠤌{qq\^{󡦥qquebVV[ࠡ|sqrvt|u|[VUUVXwxrqqszaVXUUYXT]XWZ|yq}}|w~~}wmty}~yxyyxtlprssgjeddcgjiovu|z}cZ_^he^]^ZXX`_^`ypkkjjiiZnllnqvqwyyuttrskkljjempezz|a^]lm~__\ZXXZc^^w{hzihjijkorllnqrqqryyxw{trkkjgguvyyug\`z|_^\Y[deccdghsheefihjklkmlnloqqxyvrvpnkjkkfdfeduwxyk`h^kb]^\c_fc`deggigeeiegmpm}llnpqquvuqspkknlhcuvvtghmxi`acddbmjfnjgeeghkjy}nrknppqqrvoprnnjkkvrcdvvwzvoqh_ka~bddedmsfmnoffhijezvtxihnponppqqrpnrqijijjimwe|fpxww~~}vr`hfeqrtdiinuoonmfeeytqvs|eonnlpqqttsrrnkijjihf}svplmgqq~zvhhnnonkqontok~eeliqwlroopo|uuxtuuklmghhllw}yzukhtit|nrsgiqquosqnljjmtswoolpvuuxxuuwwsijiintlttvwxz~ooumyxu{w~s{vwyoqssrfrruwvsoq||vxswuuj}ysvuz}xx~nlnmq||p{zxrlpp}oososslsspxwuwont|}ss~vx}~zvntrwppzxxqk]^ojkjottwlnwyskmunutu~w{xuupoox{xqZ[bhjjrqgunmmww{wpsrsrmnvwt||xmsw{x{onfmy{vp\`hhjjkuspnsmrwxxyxvxuvuwssvtmuzys~txthnlq}}grsullcel[[Z`hallttkvuvtvzz}z}xowwspxwyukm|utshgmisrs{yxa_]g__jlmnljbtuvsvwz|zwwskpwvuu~~v|ujglpdcjffkhlvkpjbikwaa__d[__ikmojjg~wpuuxvnvxwv{psustuiiakhfjclhhijlvppY[[_r|vc_`h\edkqjttg|xvy~usmvudpu|w}uww}yhehiigplmhhklrtvY[\]chtqebb]hknool{{omn{jxovtnnpdceeutrgmjosqjlxkpgomnomojxva[[\^_lnpkmptburppt{zyokffdghjkejccdhhijothohhoptstv|bZ[\afowmpry}}vrqppmchmyhhiiffgf``diceccfpwjrlts~nggfgpqrttuy\`_dehiopt{yqrppmb\vpxqdh{hgad`bfflcddeelhhiknqnfggkjjtwurtsg\cdhjrupx{qoopqpmdfixq{w{fecbagd_dgejcfgghhknrdggiimijkjssttxrvhqehxoovpnoorrq_hwvxxq{xohea^egdcfebdcfgghgimyjijhmjiijjtzx~svxkpnxvoownnouurmsxyyrnnphef_aeeb`cacbcegg~kklkniinvqrr~ttnmonvvwnonnutrmjipylikglhiecfggdgd`ccfggihrromllmhiigbamuuspnnlmmw{squz{jjsnsmtnlmkggcdaccdhjhhilpnmmjghjimoitkcmrnnmms~wwomp{}nspynommokhggeeddccdwhhfioklnlibgjebddjhcnmmqlkoynppvukpuzirmnmijjheedjjhfcdspjimoopopphhlhgfefdcqonmllmkojkxomutuvzewimnnuujjklhdghhitoiqswrqqmuuqlkohggjiilpmllmliggiotmmvvmhhnlmmqo|rurlppizyqhsvrpqqrqpljhkkfiilqomkkdcekouvrndgejntipnxvut|yyq~zvwxsrspqqroqpjhhiijkmjilmhighddeimvvjgekthuzxxwqrp|}xtqqrsstquggkvkgnlklfhhfeddgedjrzwrsgqy}oyvwut~}vwtz|znqqrssrs{yiuinmkffkllefgfdeggedmoyojprqgki|v~z||yjhqrqtwssru}~mzkgmmkrssefgghfotpqslmsrpskihtspyxwpqqsz{w{suy{}yueot{lowwtgghqrryynkilljbdd[mnyy{wqurtwx|{y~|u|{t]fxt~{~hhghhimww||txplnonfe\ZRRXVY|xcpvwz~{}}vvdfop|w}uommrihhi{swsqnnprpsaZ[TSXVTVa[[\tc`x~u|}|}~w|i]`^mnzvsskkjxnozyppwuaSVPSURQUSY[i\`^~~mys{„ylf_mzzxsunokloop}|z|ynjx^[QRUWWQQVRS\caW\dVjry􈎔r\lcc{{vxxokjjmpxxjlmuRX[TUYTQTRQTT\YSTQVVgnlXnkunjhkkhmwwlvrruxvwvvJYVXYQRTUQQTTYURQQOT^cSTeYiclZb^dehmw{|}~xtwuuolppvtngMRZY^VZXX[QQTRQRQVPQRQRTRRQRX]te^`[b]cguqyxy~~zqrtunnmiedshknRSY]^VYY\a^QQRPQPOPPRTTUQQRRVQWYUYYWZg^pyzwy{uuvtvjiegmkijMVXZ^[ZY\b\ZSPRQQPPSSVURQQRUVUKLLNXYZZgrzxx}vrqthnzzffhojx\Y\]i\ZY\ZddcSUPPSVUURQQORRVSMMRUWYYZ_lxyxqzz}rmmrej|rrb^d\^]d\dd\[kOPOOPSVVTSPPYVVMMNWYXX[\\`leoTmqqmmokgg~ppxc[\epdfrsmTPOVVWXVXcQWWX\XMMUTXZXW]dcdRLQQmnmmoommkliopoqwr»wwy\|^e`^^j{i]`j`SSZYXW[[ciPLLPOlmmwxkonoxn붸~b`}odS\[[X\[Q\KMM^mmlmnmorsnonnrÿĺ||}|xcfd_ofaPNMMK^jllmmoprt}np}¾û~ypsorwvnONNLUhgflmnpouuptqoԻt~nq`pywhhfjnnpqvxwookkp»ú~{jpjonxt|z{ylrkm¿·Ǻ{}no»촳ÿ¿{}||}wúþſķͣùô²àŷéȳɹþmcjostxonoonjbeggfZ]XWW[`_elkrptZPUT][SSONNVTSVpzyyfaa``__Pdbbdglgmookjjigg_^_]]X`dZypprWTSbcsTTQPNNPYSSmyq]py^^`_`aehbbdghgghoonmqif_^^]ZZhj~nook\RVorTSROQZ[YY\^i]ZZ[_^`abacbdbeggnolhleb_^^YWYXWik|nxoaU^TaWRTRXU\YUYZ\\_]ZZ_Z]cfcsbbdfggklkghe_^^a_[Wijj|zi\^bum_VWYZZVa_Zb^\ZZ\]``osdhzadffgghleffbb^^ieVWjjkxplef^TaWytXZZbhZabc[[]^^Ztpljn_^dfedffgghfdge]^]^^\`jXpYellktsslhU]\[ghuujZ__cjdccba[ZZ?nuiglir[eddbfggjjihhc`^^]]^Yqvyikebc]ggtpl^^ccdb`dbagb`rt[Za_gmbheefeskknjkk`ac\]]bb}qroyupka^j_jrdhi]_feehgbedtsc`_`cjimeebfmkknnlkmnk__^\ejdoonunoqtufekdy~xonkqumrfmhjkbdf|gg[ghklliehrrlnjm|ll`upnqprtpo}tzdbdcgrrwfquvwttlske_ccpwddhdhhbiifymlkmveekrvwoonwwnovtytupldkhmffpwwxxu}kkd_STc_`_chimbdzsswlm|vjcejemopu|n}vxurnkkfeen{xxnkfQQX^`__gfZkdcchiixvyyowvuwmfimnmbcmnkrrwncimrnqed\coynjfRV^^``bigedgcfijiikjhjhkktwkhgllbjonjtujnj^ebgvss]vhikc}}c[]bQRPV^Xbbijalhhegkk|nksoxykcvklgdkjnj`byrkji^]c_iyzzwyhirp}}{{pZWU^VVabddb`Xgghdghjmjhwie^dljiirsipj_\afZY`\\a^buxlwaf`X`{{coYZWV\RVV`adf``]tjcffjshaikjiofhiguhivu^^V`^\`Yb^^_`blffOQQUh}~tm[WX^S[Zbhakj_~qmjlpgfbjjYcxjpkrijkqn]Z^__]fbc^^abhjlOQRSY_zkh\ZYU]`deecrsfedq`mdxigbbeXWYYiig\b_dig_bnaf]ecdece`nlWQQRTUbdeabgjZkeelssqha\\]\Z]^_aZ^WXXWY]]^`dj||zy^e^^efjijlrXPQRW\elbegnqrjgeec[aeq^^__\]]\VVZ^WYXX\fm_gbjj|td]]\]fghjjkoyRVUZ[^^dditonffdeecYTnhpgZ^q^]WZVX[\bWYYZ[b^^adgd\]]a``jmkhji]RYZ]`hkemovfddec\^apiqmq\[YXW]ZTY\[_X\]]^^adhZ]]__c_`a`iijjnhl^g[^nddkeddgfW^onppgqne^[WT[]YX[[WYY\]]^]_cp`_`^c`__``jpntilnafcmlddmddjg{cjpqqjddf^[\UW[[XUYWYWY[]]tzaabad__dlghhtjjdcedkklcddjigc``gpc`a]b^_[Y\]]Z]ZVYY\]]_^h{hecbbc^__]XWckkuifddbccmpu{igk{pp`aiejcjdbca]]YZWYYZ^`^^_bfdcc`]^`_ce_jaYchddccitmmecfy|qvusdjfode|ccea^]][[ZZYYZl^^[_eabdb_X]`[XZZ`^Ydccgbaeodffljvv`fkp_hcdc_``^[[Z``^\YZie`_bedeeff^^b^]\[]ZYgedcbbcae`aneckjklo|{Yyl_cddkk``ab^Z]^^_je{^fhmfddbjjfbaf^]]`__bfcbbcb_]]_ejcclkla\\babcgerhkhbff_pzogy]hkfddfgffba^aa\__bgecabaa[ZZ[aevklgtcX[X^ci^ednlkjroogtxpzlmnhggddfcff`^_`_aac`_bc^_]^ZZ[_cllt_[X_i^jomwnmghfursx|{{njteddedgdi]^^]ala]dbab\_^\\ZZ][[`hqmgh[fnqdmklujitslmjprp||yxbcddedeupn_l_dda\\abb[\]]Z\]]\Zceneafh}gZ^Zqluuvwytpr|row_[ddeheedgpxxtdpb]ccahii[\]]^\difghcchhfe]Z\jiev||onyz~mdedfllileflxqsol[ejqbemmj^]^]]^fghnnca_bb\UUNacxvooq}{neiegijmmkonhvrqjT]ovkuqvut^^]^bkkqqimfbdedWVOOFFMKNr~nvY}eijlpmooivl[]ffrmtkufbbh^^]^ntthkhfccfgfiSMOHGLKIKVPPQjZVnt~ippnsuuoqixwrvaTWUceplij``_rkvcdnneefmkWHMFGKGFKIMQ_RWTuucnhnvxxv{{pc]Vdpqoilcd`accۃwwxqpnqnc`n}USGGLNNFFKIJSZXNSZN_fmrxx{xgSdZZqqlnnmd`__acvlkzzxws`bckLQSMMQLFJIIKKTPLLJON\b_Mas_zkufb_ba^clm|yvv`hffwjzw{mkmllEROQQJJLMIIKLQMLJJGNTYKJYP^XydS[V[\_cknnoprxurkhkjijdd`eeljd]HLSSWOSQQRIILJJLKPIKJIJLJJKQUj]XZTZU[]jekijoppvwlfhijbb]YZi^adLLSWWPRRUZVIILKKMLNKMMLLJJKOKQSQSSPR^Udmmijlppryrtkkij^^Z]ca_`GPQSXTSSUZUSLINNMNQMQPJJKOQPGGJQQRS]hmjjinnwwlhgi]coo\\^e`nUQSVbTRRUS\\ORNMNNPSRNLJJLMQNHHIMOQQSSWbkjjdlmphcchZ`rhvhyvYW]UVU]U]]TTcMMNQTSQLKJKKSPPHHIPRRUVXaYbKbfgccea]]tffvnyZSU]h]^ijeQNNTTVTT\LQQUQHHONRTRPW\\ZIDHHbdcceeccab_efegmhnnoXrZ`\[ZcqaTXbYNNMSRRQUU\`HCDGGbccmnavedendؚrZXvsf]NUTTURVUITCEEUccbcdcehideddh󫬮Ҥqqrrn[a_Yha[IFEDCU`bbccdehjsvxdyfsȥsnvkmjjpogGFFDM^]\bccfejkfifxyeĦnwuuikYgqn^^[`ddfflmleda``f𥤢՜zur`g`dcmjuwqopmaf`aǥzoxzxrww{rbc쟞ϲoqoopjt鳭ߴ𵴲ⴠⱰ۴cY`eijnedeed`X[]^]QTONNMPSSY`_ffMGKJVSLLHFFONMOhrqq]XXWWVVGZXXZ]b]ceea``]^VUVTTOWZOu||vpffOKH[[kMMJHFFHQMMfqiThqUUVVX\_XXZ]^]]^eedcg_]VUUTQQ_awx|zeeaTJLgjMLJGIQSQQTV`TQQRVUWXYXZXZX[]]deb^b[YUUPNPONbbxsdoeXMWLYPKLJOMSQMPQSSVTQQVQSY]ZjXXZ\]]aba]_[VUUXVRNbbsv{qwaUV\leVNNOPPNXVRXUSQQSTWWfj[_qWZ\\]]^b[\]YYTUU`y\NObccpvgc]^ULXzMpkOPPQQX]RXXYRRTUUQkfcaeVTZ\[Z\\]]^\Z]\TUTUUSWaPgQ]eedkkic`NTRP\]jk`PTTY`YYXWRQQdk`^c`iQ[ZZX]]`q_^^ZWUUTTUP}izymz{o_b\XXQ\\ifaTTYXZWUZXW]YVhkQQXV^dW][[][iabd`aaVXZRTTYYsggdnt~xje`UR^S_gX]^RT[ZZ^]X\YjitYWVVZa`a[[X\cbadebacebUVUS[aZedcjbdershiYX^Wmrlcb_ejbg\c_`cXZ\r]]Q]_bda^[^uihbd`dtedVylygdgffhdtcswphmWVXW[ffkZeikkiicic\UYYgmZ[^\_`W^^[vpdcbcxn]]bimnddcllbcjshmhhd`X^\aZZdkklljztcc[UJKYUVU[``bWYpjjnvcetxvynbvZ\^Zcdeiqbsvqjl~heb__ZYYbpllvfc]HHNTVV^R_YXX``apnqqgonxlmcZ]bcbVXab_ffkbW]aebeYXPWcm{fa]IMUUWVYa_\Y\X\`baadbacazdcjm`\[_`V^cc^hi^b^RXV[jggQj\]_XrrYRTYHIGMUOYYaaX`__]_ccugdkgpqbYk``[W^]c_TVmf_^]RQWS]mnnkm\]ferrqqfPNKUMMXY[[YWL]^_\_`cec`pa\UZ`_]]fg\e^TPVZNMTPPURVil`kUZTMUpqXeOPMMRIMMVX[]XXQhaZ^^ckaYacb`e\]][i[]kjTSJVRPTMVRRSTV`[ZCEEJ]rtjdRMNUJRQY_XbaVrgcadh__ZbbQ[n`faf\]`feQOSTTQZVWRRUV\^`CEFGMToa_SQPLTX[\\Zii][XfUc[oa_ZZ]QPRQ`_]QXV[caV[cV[QYWXZXYTb`KEEFHIWZ[WY^aPb^]]biig^VRQRRQTUXYSWPPRTV[dttrr}SZRRZ[_^_agMDEFKQZcY\_fijc_]]\]ZQW[hRSTTRSTSNMRVPQPPS]cV`[ddtjZSSQSZ\^__`cnFKIOPST[\alhg__\]]ZPKe^f[OTfUTNRMPTTZPRQRRYUUVZ^a_SSTVV`b`]`^RFNOSU^c\ehn_]]ZRTWg`eafRRPONURLQURXPTUTUUZ^cQTSUUYTVWV^^_`c]bS]QTe\\c]\]]__^NVedgg[fc[UQNKSUQPSRPQQSTTUTVZh|VUUTYVUUVV`ecj_bdV\Yed[\e\\]cc_s[agg`XY[UQRLNQQNMPNOOPRTTkqWWXWZUUZa]^^j``ZY[[ccd\]\[ca`ZWW^gZWUQVSTRORRPSOMOOPPSTTVU_q_\YXXYTUUSNMYaak_\ZZXYYdgkqa_cqfgWX`\aW^XVXVRROMNOPPQUWUUVY][YYVSTVUY[U`WOY^ZZYXX_jcbZX\orglki\a]fXYpWWYVSRSQPPOPQdUUSV\XXZXUNSVQNPPVTOZYYX]WVZdY[\wa`llW]bgS\WXWTUUSPPOVWTSPP`]WVY\\[\\TTXTSRQSPO][ZYXXVZUVcZXa_`aerqQqdSWXX__UUVWSOQSSUb\sV^`d^\\]X`a]XW\TSSVUVY\YXXWTSTUZ_YYaaYSSYXVW[Yf\_\VZZ[[Sfqf^qV`c_\\]^\\XWTXXRVVX]\YWWVRRQRWZk`a]kYPSPVW]RYXb`_^fcc\jogrdef`_`]\\]Z]\WTUVUWXZVUXYUUTUQRRSVYbxbkVSPW`R_cakba[]Zighotssfbm^]]\]]\_[`SSTTSWbXSZYWXSUUTSRRUSRW^hd__S]efXb_`j_^ih`b^ehgttqp[\]]\]kfdUbU[ZXRRWXYRSTTRSUUTRZ[e\X]_t^PTQfakjkmniegqhfnWT\]]a]]\^gmmiXfWSXYW__^RSTTUUT[`]^_ZZ`_]\SRR_^Zkqrdcopsd{\][^ddad]^bmvfhc`PZ^fX[cc_UTUTUUV]^_eeZXVYYSLMMGWYnlweegrqd\`\^aaedbfd]jvfe^GQbi_hfjihTTUUVZbbhg`d]Y[\[OOGG@@FDGiuemuPs[aacgdfee\jxxv`NPXYfag_iYVV[TTUUejj_b_\YY]^]`KGHA@FDBDNIIJaQMejt^efeijjde]kkyeiSEJHVXd_\\TSTSTThwublZ[ed\\]dbPBF@@EA@DBGJXKNKklYc]dkmlljsy~|{nmcUOIWcda[^WXSTWXYxmmnhgegdZVetOLAAFGG@@ECDLSPHJQGV]dhmmllow}}vk[DUKKcdd^`__XSRRVXvlbappnmjWYZbGLMGGKG@DDCFFOIGFEHGTYVEXhTnt}}^hYTQTSOT^^umkiiT][[\xm`p}lqdbcbcBLJLKDDGGDCEGLHGEDAGLPCAPHSNmv~vXGNHMNQT^``acgmiga^a``ZV[[b`ZRDGNNQJMLKMDDGFFGFIDDBBDBBHK_QMOGNGMP]X^\]cddjla\^``YYXSOO^RUXFGNQRKKLOSPEEGFGHFGEFEDDBBFBHJGJGEFRIX`a\^`ddgnhkaba`aTTPRWUSTCKJLRMLMOSNLGEIHHGHIEJHBBACFHG>>AFFGGQ\a]]clmc_^`TZeeRQRYTbNILQ[MKLOMUUTJKHHIKJEDBBCDHE??@CEHFJJNW_^]Zabf_ZZ^QVwg\j\mkPPUMNNUOUUNNZGHGGHJLLIDCBBJGF??@GHHLNVPXDY^^ZZ\XTTjZZjyyuemRLNU_UV__ZJHGLLMMJKSDGGFKG??FEHJHFNSRPB>AAY[ZZ\\ZZXYU[ZY[a\pqyddzdOePVRQPX|dVIMVNDDIHHGLLTXA==A@YZZdWlZYYbX؉{eOMif[RDKJKLIMMBM=>>NZZYZ[Z\__ZZYY]󙚛͔cdefbPWVO_XSB@?>=NXYYZZ\]`ailmYnZg萏weaibda`fe_@@=FUTTYZ[^\ab[_v[mmZ“weljj`{bR]fcVVSX\\^^cb`ZZVUUZđ}nu~|jgW^X[ZdajmfcdbV\VVǐ{uoemotmeklpgWY~ut{}~dfdde_i|yx}|۠sy}wvztu|xvtrxx{ڣzz}x{w}{z}xZYpk~mxpwsooessgg^^]]lgfiwxt~zmlckeefb`^aiZjdttu}wxccy}}vjlgnon]]^_ovve``_xlssioumr{qgaabacde[[he\`Zimrpqccxvmznkheeik^^`_azngbgnnkfnxptpnkbaaceba]if^qr}ecc~vlnssreefif_^mnsqpnnhoonpw~v|pokdaadcbccsgg^yxqrtuygcconwlqnmhee`]jhkqopnmnpsoppu|}{tkfacaaekfa]^gkszyys^etacczxllkplhhfe]^]c^troonooqhnls}|}{}kfdcahmoggcihkm||zowv|qlnmj{|}}wiffdf\\]^gmqqpoonlilns{~}txqehqqwp`deejeeiwijhrnuwvvw{wqvsejbga\Z]gplqpookngenpy{~uw~qf}qlwjikeghefqkeckrqrvwwxzy{wrqtriigj^foojnonkjmnijpiyxvz}|~okllfiicfnedfkrrquvwwz~eoswrcqvnoYopwnvvdffirbepaifyqxrdvzxullhnmurhgkjjceflqqstwwuyllcfekggc[[ZZ\ply`cdboke\]_aaqwwsfrcreqjnokoojnrpepd\yyqrpstqsvlqhfifhc`^\Z[rsppqebeaof^gh`feswfhcqdaglnnlkhki]eocilzrotqq|t}giiheqb_^[^`mmssun`jd]a^bbicsbeuf__`amlkpkhxxji\YZfwyv|qqomjlqjjhgbaba_]pimjqqhkhdrsophigeribd_``hhirtv}\YZj|q|s}wpptjjfjjgdmklki_jsnnvjpk_rqqnopjkkffead_aaimstuuz{|Yxqqz}zvpo{jjhhjjfwonymzztuqnzslkloonnoku`f`afebcirotv|w}}{{tp~tjiihikixw|mjl}}vxy}}ilkkmnns{|b`ggiaihggvi}xrljqteeifjk{|zonffy|}||nkjiihjkmlmmuyvliabeghggqpvtsrklisnmqq{keehljgfin|~jnljiihjknvscbbdihfghzwyxqmnnminrrptheagfcy{kkg`yykiklgghgiilnnry}hhbcfggehfnqr|uyyzxzurrjhppqvgeecaaxtgkc`kpdfww}gghnm`raeblmhbhhfefgkkrxv{zyzztrsrpjpptuxygioccgddbcfflfcgdohba`]leqc|}ffkgvv}yzxssoimnnonqtjirnjhkgkddccefgfgjgieccfjkaam\\]|g{b]aiggfgffm|yyvyonirjlelopxhkfkoimokdcdegghoiecfmquneddfeg^bacggfolz|{rxvmkgigpykryklpnsnpudggjggn{idcdpmqpfcxbdhh^bbggfghihtzwkx}xwtmhffemhkyrpmlnnsnlkgglrtn{}igighlkjixdeiffchsoigflccfkox{uj{{vniffggiqr|mkspqoljghijrst{jmlji]emgefdeggiolvbficdeeghjnt~pllkihkjirtljjtmmpojhhiikggjhjjihfeeghhnnimefecbegleyljlfljkjgilnnlhjrouujmkiifgfjijhgkeefjfeehok{}lcceebagg~klghlikjlqqopxtnqvmjpnmjjnkinheeggifeefiqzwsecdbbaah~vv~kiefgfjgipyvmtoqrnmmjiifikggffgfe efiituolcebddazinx~mfackggioxrnpvoopknnjieegki`fltefn~eeiefefjmgpuuxyyp}tcdkikruslqqkumo|onnfmnikjfedegb`geohdesmgieefiijnnpuorszjlalijlohjhsvplmo}qpmdinicjnkjddegehfdepgrbjdfegoxjonnsmjvd|~{rhxnutiuvr~|lnnplcgnnoinldabbdzugqqpqdbeehrrxognnrspn`aixzywwvqf}}|xmnnljnrlcdcegpilncbbab`dogepqkjllviornqmloqrpqqhf}}|ywvmmqn|tvttkvwmmlhdffrpninmbbcbckyzrz{uzppomnkprrqqhqz{}yyvvqq{|uut~yumdotnopeflcbdc{yz{zyovkjnnmmoqrqkipzx{wtnmutpzs}uy~~wu~lrwrr~mnrtdgkjhsccyz{zyvxommprrminxzzwvlnrkld|u~wuux~rxuttupkzx{y{zz{zuummknn}spqttwtrrlkdkhzyzvuuvpmsttuutmxzutxy{{zz~yjkkmnsllrspossuslkjjdfixyyvs||yuujjsuuvv{xv}yxxz{}ivjjmnnopiknnpqxsomjjfddcdx{ouxplrtuu~}zzsxwwvzwx^XYXmklwpnoonijjnplnrmhfjeedkjq}tyglm{onlpqqv{y~q{}uwrpthfg\]ngmy|wlijjknnpsstmnwmeor|usjffmm}oknvrz|x~uqlknpwptvopfUUfxywzzlhtiimihottyuutv}z}|}}|pgf{owwnottvvrrnnpnvjlhjkkrqggpefpvmrsmjhhmfdrruu~u{yvyyu{|tkk}qlnlnnoojnmonkhkjhiholp{{|rwkhjthwrgfeywz~rwn}tvu{{omnlonjmnmoijihihhfqx~}qv~qhhtwu}ggynoyzpfdtnjy|qtuyxsimljlkeimmlgihihhw{}}~qwm~t|}unzgwywmqlrtumz|}trr||iikhgefflmifgffjqw~~}~~qwyttvv}}wtvwmhtrkkyv{lrujiefddejliifrshoz{~}~~xktlnqp||hhinqvnfpgfliihowxno~fefjddefeklfggikmiiu~}~~yromiheedfei~rsvtggflghilnfh{tddprxfigl{ojjvvojqqhhbccfguyrvvtnffefhhokqto~gv{|{ddekz{xpigkm|nhpkojjiotiicyggivwosuvofdgjgoioztv|nqjddeijzz{gowvmokoij~|pnizvrtwquuvkowmt|{ttrzqk{{jnummkkltii͂jmcqqym|prqssuttsj}kk{zwxoqsp}z~~onkjmm{hjijoujl{hgsyrrspttrstpolmwswurr{wx{{nnpvwhhiknpq~uk~xyusrprrquv{}mzzwqptywkonqtoqxnjkontmmd{}x{ooprwv|~{}vpuq{z{oqpnnzz|jyooqwxwwv|}~mmtimy|{ywyy~uvq{l~|}ukrmnokmr~ktw}}z}oiijm{xxuoëš~{|wytuolklkltuvwtu{ojiiniiknz|xypstȷſ}~~vrqlkssv}}vvr}kjnmnzzvv罺~~z{somlmnnu{rqppjimmk|}~xuPOf~atcnfmiee[ih}]]TTSSb]\_mnjtpcbYa[[\XVTW^Sa[yzyjllxsmnYYoss}yl`b]dedSSTUdll{[VVUnbii_ekchqg]WWXWYZ[QQ^ZRVR_~|tudhggYYnlcpda^[[_aTTVUWwzpd]X]dda\dnfjfdaXWWY[XWS^[Ugzvuuruhs[YYtwlbdiih[[\_\UTcdxigfdd^eedfmtlrfeaZWWZYXYYh]\Tynvutlehklp]YYedmbgdc^[[VS`]`gefdcdfieffkrsqja\WYWW[a\VST^bhomvvmgT\lZYYpnbbafb^^\[STSYTjheedeeg^dbisrsqsa\ZYW^ce]]Z``cdqqwwoemmrgccb`qrvssm_\\Z\SRST]cgffeedb_bdiqtvswujng[^ggmfW[]^b]]al`a_gekllkmmqwmglj[`X]XRPS]fbfeead][dfoqutvukmtg\sgbl``a]^_]^eb\\bgfhllmpoqmigki__]`T\ee`dda`cd_`f_oxz~nl}}psrtdabb^``[^c[\^bfggkllmpt[ejniZglefPefmdllZ\\_hX[fW_\ognhYkon|jba^bbkh`^a``Y\_bffhillknaaY]\b^^ZQRPQRfboVYZXea[RSUWWgmmi[gXgZf_bc`dd_dhg[dYQsnnfgfhifgkaf^]_]_ZWUSQQhigfg[X[We\T]^V\[im[]XfXU[abb`_]`]RYcW^anfeiffgfphr^__^\hYVURUWddijkdV`ZSWTXX_YiX[j[STSTT``_d_]ml_^RNO[lmkrggfgec`ag`a^^ZYYXWUf_cagg^a^Zhief^_][h^WYTUT\\ghjvur~RNO_qgrismffi``a\``^[caba`Waidel`faUhggdef`aa\\[WYTVUV]ahhjiopr}vOnggpsqlfer``^_``a]lfdnboojjgdpibabeeddeakV\VW\ZVW^hdhjply|szsrqjfuj`_`_`b`llpc_brrlnn|ss_baacddiqrXV]]_U^^my~}_tngb`gj]\_]abppndc[[mqrrda`__^`acbcckolb_WX[]^]^^hhxv}kjhgaa^hdcfgrb]\\^csuu_[[]cqr`db`__^`ad|wliZXYYZ`_^_aso{z~ongcddc_dhhfi`]Y^^Ynpv`_[Tmm`_abu]]^]__bddwhot^^YY]^_^`^gijsloonpkhh`^ffgl`]\\ZXWlh[_VT_cX[uwmms]]^dcVhW[Ycc^Y_^^_ddkonqpooihhge_ffjkpq_`fZYv[WWVW\\[bwxvu\Y]Ze^XWVSyc[hZrt^^_^dd_mnsooniid_bcdedgibajfa`a\aYXWWZ\]\]`]_[YY\`aWWcRRSr]qXTW_^]]_^^ezzroolodd^g`b[befp`c_bf_cdaXWXZ\]]^e_[Y\cgkd[ZZv\[]TXWX]^]^^fcxvvprqhnlc`]_]focjpcchdicekY\]]`]]dq_ZYZfcgf\YznXZ]]SWW]]\]__ipvmanrnmic^\\[c^cpigdcddidaa]]bhjdqs_]_]^ba`_nZ[_\\X]gc]][_VVZ`dmqj`xqqld_\\]]_hisbauiffeb`]^_`hijxq`cb`_S[c][\Z[\\^dv}`jUY[VWYZ]]`djtfbba_^a`_hibaaiccfe`^^__a]]`^``_^\[[\^^xcc^aXXVUZ]bZob`b\b`a`]_bcca_`hdkk`ca__\]\`_`^]a[[\`\[[^d`qqx`XWXXUV\\tab]^b_a`bggcelhcfkb`fdc``da_d^[[]]_\[[\_gqmhYWXVXVV^tllta_[\]\`]_fmjbidghdcc`__\_a]]\\]\[ [\__jkfcYXVXZYVp_dntc\WYa]]_elgcekdefadda_\\]a_V\bj[\dut[[_[\[\`d]gllvlopfshZZa_ahkuiubggakceqdbcdd^ceaca]\Z\^XV][e^Z[ic]_[[\__`eedfkeijpuu`bWb_`be^`^ilfbcerfeb\`fb\bfcb[[\^\^\Z[f]hX`Z\[]en`eedehjabal[{qrpg^ndkj_klhtrbddgb[_gghbge\YZY[q~k]ggfgZX[[^hhne]ceefdcWX_mwnnmllg\ssrncddb`dhc[\[^`iceg\ZZYZWZf][fga`bbl_ehdgbadefdd[Zpwqpnmlccgdrjljjavlmcdc_\__ljhbge[ZZaophpqvuk|}{pffeccadeedd[dnnsqnnllggqrvkkjtwwuo{md\hxynhij^]c[Z[Yqopqpoel}|va`dcbbcded^\cnloljdckjfpiskottumktcinjkxehji\^ca^jZZopqpol}}|}|necbbcfe`\akmmkkbdhabZrukuwxtmukkxxotjpjjijkfapnqoqppqpu}}|xkkcbbabcpfcdgghikhhbaZa^pouwvplvkklw}fchiijihckojimoqqppx}}|to`aa`abcg__efddghigba``Z\_noolisrokkvs^^]gjijkolkronnpqsy|}x_zl`_cdcudd]`bbdemhec``\ZZYZnq}yzuekmwyd_dfhjpxrqnpinmmlpmnTNONcabmeccdb]^^bc`cgc^\`[[Za`gsjzwo]bbpcb`ccimkqqrftqskmhfj^\]RSd]coqwlwa^^_bbeiijcdmc[ehurjxh`\\bcqd_bhclnkxpifbadfmfjlef\KK\nomoob^i^^b^]cjjokkjlspsrsstpb]\pdlkbcgghheebcecl`b^`aahg]]f[\flcghc`^^b[Zhhjktukqoloojqroeyaarvd`b_aabb^aacc`^a`^_^ebfqqrhmua^`j]mh\\[ovzmzvptgl}cpefevx{ppb`a_ba^abac^`_^_^^\gvntsglwvtg^^jmks]]owdeopf\Zjc^lnadeo{vmg]`_]_^Y]`a`]_^_^^mqssutgmctjrskdup]vmomcugbhij`noosecwyhqp^^_[ZXYYZ``^\\[`gmttstt{gmojjllws|uuxsmjlmc]jg^`^khl]yhy{i^]YZWWXY^`^__^\[hh^epqtsttzxnajbdgfrr^^_vdgld\f][a^\\bijderZYY]WWXYY_`\\^ac__ktsttz{phec_^[[Z\[_t~hilj]\\a\\_td~Z\phWWcevk\_]awpe``llfag~yzg_^YY\]kuohlljd\\[[]\c^ejetw[kopoWW]jkid^]`awypc^fbf``g{k`_Yp]^`lmeikle\Z]`\d^cnhltrdg]WW[\kjkZaii_x{{ebvf``uszv~ge`vvqlhjmgkklaemxbiqpiifouhw|yu^qtypqkk\`g__xzyaack``y`vcYhhocrfhgiikjji`s``polmddffru{ptsuaqw}zqq_\\__ap^``ael`c}r^]i~ouhiifjjhijfebclhljffr~}qmoqo`rq}{{_}bhi]]^_^aegh{~uj}at~nokihfhhgklqscookedg~yomqvx\`v_cfbekb^addwwjbbZoqy~vmpeedfhmlrtqruukdie~~zppvz|{tlaba``mmn_mabckljjx}koqzvxraah^borquuvxwvmkmmsoggcn_pnof^e_ab^`er`gkrrn}xpb^^`cvwuwvvpmlicvtvrpmorikfga_^_^_zvghijegmc^]]c^^adwuwpqmmeggywpprvuogcc^^eeho|nhhcnu_^bbcz~y}wvwxnvnij䱲ruyoqojlc`_^_``flbbaa]^]bb`rwtvvwwzuqkhGF]uXwkZe]d`\]Sa`uTTJJIHWRRUcd`jfYXOWQQRNLJNULYTosonbfdnjcdOOfjjtpcWYT[\[JJLL\dcsRLLJcW^^U[aY^g]SMMNMOPQGGTPILKVsrpjk[`{]]OOecZg[XURRVXKKMMNpqgZSNRYXVQZd\`\ZWNMMOQNMITRL^olkjikalzzyROOkncY[``_RRSVSLL[\p`^\ZZSZZY[bjbh\[WPMMPONNO]SRLndlkjc]addhTPOO\[dY^[ZURRMKWUX_\\[YZ[]Y[[ahig`WRMOMMQWRLIJVZ^gclkd^MTeSPPgeYYX]YUUSRJKKQKb_\\[Z[\Z[SYX_ihigiWRPOMTY[SSQXX[]hhmlf]efl_]\[YhimjjdVSSQSJIKKU[^^\[[ZVSWY_gjlimk`d]QT]]c\MQTV[VVZcZZX_^dffegdhnd^caRWOTOIGKT]Y^\[[ZWYQOY\egkjlkacj]Ri]XcVVWTVWVV[[VV[__bfgghgfhd`^a`VVTWKT\\X[[ZWVXZTU[TenpudbsswfihjZWXXUWWSVYRUXZ_aaefgfdgkR\`e_Q^c\\G]]e[ccQRQT]MQ[MUSe]d^PbedraXWTYXa^WVXWWOUY[^_bcffbfYYPTSYUUPHIGHI^ZfLOPM[VPHIKMN]dc`R^N]P\UYZWZZVZ^^QYNFhcc^`^bc__bY^USVSUQNLIHH_`^]^QNPL[QJSUMSQ`ucRTN]OLRWYYWVTVSFNYLRUc]\b_^_^h_iUVVUS_PMLIKN[[`ab[LWQIMJOOVP_OQaRJKJKLXWV[VTcbTSFBDO`bag]]^_\ZXY^WXUUPPOMK]VZX_^TXUQ_`\]UVTR_{UNPKLLTST^_alkhsFBCSe\h]gb\\`WXXSWWUQZXYXWMX`[\cW]XL_^^[\]WXXSSROQKNMNUY`_aaefgrjCc\\egea\[fWXUVWWXTd][eZggab^[g`YXY\\[[\XbMSNOSRNOV`\_agdoshohee^\h_WVWVWYWdchZVYijjceesjjVYXXZ[[`hiOMTUWMWWfqvuy|yTgc]WU\^SSVTXYghf\[RSeijii[XWVVUWXZYZZbfcZVOPSUVVWWbaqowu}|cb``YYV_ZY]\fYSSUZkmmWSSUZiiW[YWVVUWX[snc`QPPRXXYZlits}vgf_[]]\V[__\_WSPUTPehnXWSLedWVXXlSTTUTVVY[[n^fkVVPQUWXWZXacdlehggfhd``XV]]^bVTSSQOOe`TWOLW[ORlmddjTTUZZM_NRPZ[VQWWXY^^dhgjhghhb``]W]]`aghVW]QQxoTPPNOSSYnomlSOTQ\TNNLIoZS_QkmXXYX^^Ygglhhfaa]X[\[\[^_YW`\XVXTXQPPORSTSTWSUQOORWXNNYIIhTiOKOXXWXYXX_sskghdg]\W_XYRY\\gWYUY]VZ\XQPPRTTSU[UQORY^a[QPPlwSQTKOOQWXX`]zroohih`ed[XTVT]fY`gYZ^\a[]cRTUUVSTZgUPOP\Z^\ROpdNPTUKOOWWXYYchoeXejedaZUSSRZUYg`^[Z[[a[YYUUTX^`[giUSUSTXWVUdPQURROU_]WWVYNNSY]eiaWohhc[VSSTTV_`jZXl`]]\YWUTUV^_angVYXVUIQYSQRPQSSU[nvYdNQTNOQQUUW[ak]YYXVUXWV_aYXW`ZYY\\WSSTTVSSVTVVUTRQQRTTo[Z[VYPPNMQUYQfYWYSYWXWTVYZZYUV^Z``UXVTTSTTRSRVUVTSWQQRVRQQT[WhiqXOOPPMMSSk~XYTUYVXWY^^[\d`Z\aXUZXXTTYVTYTQQSSURQQRU]gd_QNONOMMUkcckXVRSTSWTV]eaZ`Z]^YXWTTQTVSSRRSRQ QRUUaa\YPPMPQPMgV[ekZSNyPXTTV\d_Z\aZ[[VYYUTQQRWTLRX`QRZkjQQUQRQRVYS]bblcff]j`PQXVX_bl`lY^^XbZ\h[ZZSXZVWURPOQSNLSQ[TPQ_YSUQQRUUV[Z[]a\_`flvmWYNYVWY\UWU`c]YZ\i^\YRV[VPW[WVPPQTRTRPQ\S^NVPRQS[dV[[Z[_`XYWbQshig_Ue[baVbc_kiY[[]YQT[[\V[ZQNONPgtaS]]\]PNQQT^^d[SZ[]^\ZMNUdofedcc^SjjieZ[[YW[_YQQSU^WY\QOONOLP\SQ\]WVXXbU[^Z]YX[]]\\SRhnihedcZZ^[iacaaXmcdZZYVQTT`^]W\ZPOOPOWef^fglkarsqf\\[YYW[]]\\S\ffjheecc^^himbbaknnlfrcZR]mnb]^^RRXPOQOgefgfe[bsrlWVZZYXXY[\]\VT[fdgca[Zba]g`jbfkkldbkY_d``mZ]__QTXVT`OPefgfebssrsrd[YY[]]XTYceebbY[_XYQilblnokdlbbyooej_e`__`a\WfdgegffgfkssrnaaYYXWYZh^[\__``c`__YXQXUgflnmgcmbbcnwt\Y^__`_^Ycf``deggfgnssrjeVWWXYZ_WW]^\[^_a_YXWWQSVeffc`jifbbvljUUT]`_`afcbheedfgiorsnUpbVVYZZl[[UWYZ\\d_\ZWWSQQPQehtpqlZbdnup[V[^_`hpihefy_ecddbfcdJDEDYWXc\Z[[ZUVVY[XZ^ZUSWRRQXW^jaqofRWWfYXVZ[[`eciij^kgibc^]aUSSHI[SYehnvdoYVVZ\``aZ[dZR\_liao`WQQWXhZVX`[dfbpha]YXz[]c]ac[]SAARefdffYUaUUYVU[aafbbacjgjijjlhZQQfYbbYY__``]]ZZ\[bWYUVXX_^TT]RS\cZ^_ZWUUYRQ__abklbhfcffbhjg^rUVUgl[VYVYYZZVYY[ZXUXWUVU\Y]hhi|}_dlXUWaUd_TSRfmvqdqmgk_cu[h^^jzmpeeZXYWZYVYY[VWVUVUUS^mekj|^cnmk^UUadbjTTfn[\fg]SQaZVdfZ]^|cplb^SXWUWVQUXYXTVUVUUdhjjlk^dZkaijb[{|lgTmdfdZl^Y_`bXeggl][km\ffTTVSRPQQRXXVSTSSRW^dkkjkkr^dfaaccnjsllojdacdZTa^VWVcaeUm\nq_UTPQOOPQVXVVSR_`U\ghkjkkqoeXaY[^]izziUUVm[^c[S]TSXUTSZabYZtuhQPQUOOPQQVXSSVX|[XXckjkkvxpqf_\ZVURRQSRVku__c`TSSXSTTWlYsQRf^OONY\lbSVTYph^YYdc]X^t|no^VUPPSTclf_cb`ZSSRRTTZV\^ZjnR`efeONNTab`[USXXori\W^Z]WW\pt`VVPgTUWde\`bb[SQSWSZUZd^bjiY\xwyUNNRa`aQXaaWqtt^Zn]WWkhplt][Vmmhd_ad^bbcW[cnY_gf^^[ek\lr{znjUgjnggaaSW_WWqrsYZZaWWnVltYP^^f[j]`^__b``ViWVedabYZ\[fjpfihjVfmspggVSSWWZiWYXX]bWXyzqgTS`vgn_`a]``^_`\[XYa]a^Z[gsrgcefdUhfvsqpVtsY`aVWWXWY\^_qsyyi_rWkufgb``]^^]abgiYdd_YX}]pnecvvwgvxylmRVkVZ]Y_d[WX[[nl^WVVNegnuuneh]\\^cbhjfhji_X]Yxqqnfejoqu~voi`VXXVWefgXeZ[[aa__lr`efoympjYY`TXehgkkmlkb_aavtvywgb]]XcUigg_W^XXWSUZgT\`ggevpiZUUVYlmkmljeaa]W|vxigigeffjbd_`ZTSTSTok\^^`]_fZUTTZUUWZmkmeebbY[\~kvkzdgjnmh`[ZTSZ[]cqc^^[g{nVUYYZptormkkmckb^^~eineigcd[WTTU[aYXWXXYTUUYYVhvlhjkmkpjf_]cejgk{ooq[[]]^ljja^]ZnrmmfifYY\uvljjlgukiigegg^]]\\[Z[Z]vccbjgkkjea__]]^jZZ]af~mZ[kfkifhooihihgge^]]\][[񜁝tccdbiupjfd``ab^^o]ZZ\ZZ]^nrgfglighjhhgcvn^]g][\_lsocedfcghda_`acd^a]`i_ZZ[j}}kdhhomihghhtjhhzuurpfc\b`edfqdcecfgfie`_`bbaa\\be[ZZf^m{uprgqqhrlnogghk~t~mxvwqibhdgjssefrcnigkjaakaea\]\]jeZ[Z_Zab{s}roiggmkhjhgklu||vrsggnlj}uullqpjgfeffkcc]]ZZ]vwuZZ]_us~onhjnniejhjjo|~{xpqkliilttvvovvjbdecgccffs]mx[_]orvwvnknkklmkbjuvw{}njqn~sswwxq`dmfdalpowqm~nopklrrxyry{wqponnrpolmkkvwsruspntwwtxvwxtannlhgrqfpdlmnoot{~uonnsyuppqmrlpzysytmllurwrpsvu}wsiywcceddlnooutonommno~sqnqqyxxv~pgsuqqptuivddggkiccjdmootusonnowrqppooj}hcqsx{yqrru{wrleddeccirqqpqosji||rprsosuosppqlikdbbdit|{{tq|~}nkgfdccdhppdiop{{``qzlnppo{rqorppbcbbuxmpmnmqrwr~{nrkefccbclndf^iz||qzqjppqnnmhyrtss~hlichmmt{}}utuqxveecdcdccgd_egznv}ishoimmjkkfxfmmllmmׄvlzsqtppmkbbccdccbccldccbbghieragmhidgghqnedmht`ghfkllnnqyswf}uutqmle^bbdb_cpz{khc`aafbbeesq_h`ghgm~ki__^g_pnmlsrfe|utsime_^^bc__cqz{mhiddhi_eefdaszhceju|z^^l~q`o~mplfkefusrkllgd__b__ellcjfjhhdegjabdaksaacchmvz{^]^l\j|bpplgffhptplkjmf_^|bfsjkuxqfjiiejhsit^w}cnkm_l^~~yoohggf|ppkkjpg^][gljjlijjiifcpplnomkxrxspyy~~poomngfinkkjjlqk\]koijjqjjiidfhhigpmmijkkww}~}|x}wosopplptinjkkmlw_cclijjmijjkhdghhchqspjivyywv|}~w~~pw}puppq|jkjkkqh[e^dijjmjjsjhkdbbcdkqnqkxlvjjnkmu}y}z}rqpqlp_bokokxqpbejijjkenevhhghgaecizqvnniiehp|w|sseslqmkZ_`izwvrpfjnlkkjja_gghghhgcggcbbqkeffhhieepq|yxyjtnjwumnaetsuuspihnmkkjiddbgghggacgaabhdqegffeeiulz~wfedkvjo_aadxtstwpsomnkkjkiklkbfihhgabaaedafszthfedeejvvkgonnpkrjiaoqqssomgikjkjkkmkfbaghhgfaapvhecgfebccdefg|vourknpvvwttmlprqpphkdkdfeijkkjijeehkkiheaacmnldgb_cdbbccbcegfju~uhlsvwrugzqpqqpkkmcnkggjkkjheghghgbknnrqnniffbdccbdbecdet{ogiuvwqqllnppqpd[dka_afikjjgkpffjmehhimqmlnnmgdeebbcd_bqquoounurrnplutmopotqg]\b^``giighlrrjoiijhfkmmlws^aecaabdb_begqollmmrlpnmnppojc``\fna[fjggliollkhflmjmmlmllgfebaa_`aaei__bfruxspmupqtdvppose``aeaagnfgheiiefnokfigmmllkllkiffeb`d_``_db`uuqs}v{x|ketytmq{ac[[kcghfgigdljgeedfeclmmfjjliffedcdbfcbernpmwxzzsjkn~ov|{{fYUYYdedjkngdbflkkmlbkllmjgffecd_`a`jvnny~zojvp}} pju_Xefgpslgmiffckdf^`fkmrjghccaba_aabvxnnmnkywjr}ntoow}xjtj[Wpomjmu|g|egdfaekklmrgffcbaab_akknnuunomyz}gnm~nongxmtrvrkvsm{{wzseqopqiilnjjuwwufhjcjggffkyrovpplfnsto{pznw{~yjitustti]ndbfnnmmijccjudfd`horwwhgeehsvopmnpzwpoxywyxafqwhijjhbbclmmlijikhgfggmdin_hgaettunnlnqroo|jxyxvrsmfdgwchmmlmnhmfefhidpjko_^camukwopoossoponyuu{xwpgffedfbcjmmlngeefcd_^`acvvsppoqsttool{v~nqpnigeffcegbbcmmlnmmfeedebefh^`euwwvrrqxxtl|}phnggfhcedbbdjmlmmnmjfeedcbcehwwuwwqpuswwx|e|{ynzfghgffacgdeginnomjffeeaccbwxw~~xwwxoljmuvzusjgkklu~mngiffmzmhhfomntomeeheefjfnww~yxxwpnejmvoxxxmpnhkdz}x}sutjqhhz{}wxknvvuxwpfflf{yx|zv}jhdcspriprxlnnhgb]`vpvwzyyzx{zztssz}tyzqxpfeegfj}{|}zuo|ghdfnmppoxvnrnb]tusvw{yy{z{y{{wlsxu|xyr{|xnlee~}}~noplihllogojpttnhigdtuuvwwxz{{sntsz{yrry{pqg{rt~rm~kqikm|mgijootrjgjmrvuw{uvww|{|{{zylmqtoqry{wuzlm~ptuuwlkn{ljostvyw{{xyyzy}y{z{zzrmmorx~wvvluxppuwzonktu|gglsqyppv|wyxv}~{{ty{z{zzrnqnqomzullnupo{uptnnmnx|~jktspzwwyzx{|}{~yzw|or|spllnnutuu~vqplmqoppqohrssmssu{yywxz}ysyxrs{qtoll~ttuzkpnrmnoqqnpnojgnkivx||x{xw|x~~xwskl|pl{oomlyzwylooswtqnnjhjjr|||ztw|y勄vkkhzno~u{mlpouunmmpnijw{rry{{t~zw{ljiqpyxwzop{|}zsolqouutmmnmloonqz|llwyy{wzzrxnqpu{|~wonuusnmnnwtnpiijkhvxiidgeecfytxnmjlu{~{xuqpvtwstnnouvrptrpvrvtlji{h{tfdy넃vjkp}}||vuY[`]aqeegQQSSTb``~WTSPdhcc\_w\OORklb``b]ka__][]]TSSRRQPQPSvlYYX`]aa`[WUUSST}`PPSW\tvuucPQa\a_\^ee_^_^]][TSSRSQQwjYYZX_kf`\ZVVWXTTe||SPPRPPSTvuuvdvvh]\]b_]^`^^]YldTS]SQRUbwieY[Z\Y]^ZWUVWYZTWSV_UPPQ`uwszsaZ^^ec_^]^^j`^^pkkhf\YRXV[Z\gZY[Y\]\_[VUVXXWWRRX[QPP\Tcqkfh]gg^hbde]]^atjtcwvnlmg_X^Z]`iiZ\gYd_]a`WWaW[WRSRS`[PQPUPWXzwqishe_]]ca^`^]abkrrwwlwuhi]]db`sk~jbbgf`]\[\\aYYSSPPSlmkPPSUkzzyitwxed^`dd_[`^``ertywqnfgab__bjjkkelk_XZ[Y]YY\\iScn}QUSehlmzzx{{uldaeaabcaX`klmyyqsd`gdtixillmlmgVZc\ZWbfemgctdefabhhnohoq{ymgfeddhffbcaalm~~ihkifdjmmimllnujWddb^]hg\fZbcdeej{{zv}}qtykedeeipkggdhbfp{oiojcbbkhmgfhku~zksmi_omYY[ZZbdeek}}jedeccdextxigdhx{gonnltf]ikggfeij_lZZ]]a_YY`Zceej{~kieddeemhggff`sv^Ygiznqyx}oggjq{mhb[ZZ[YY_hggfgeiy`_vrrhfhieikeiffb_aZXYZ_|jrqxqy{jfrtszda]\ZYYZ^ffZ_efqyyqVVgpbdffgeddqhfegeeXYXXWkncfcdcgh}zmgwutqdha[\YYXYbdZ\T_puvrrgpg`ffgcdb]ogihhs^ya_X]ccj}}zqsskjkgnl[[YZYZYY]ZU[]pzdls_i^e_cb_``Zznzwwyu\ccbbccz}mbwqjgkffcaXXYYZYYXYYbZYYXX]^_[hW]c^_Z\\eb~ssXXb\hT\^\abbddgo}im\skkgcb[TXXZXUYfpqa^YVWW\XX[[igU_W\][`r~}xr^]SSTS\Tfdcbiyyi[[sxwkji_d\UTTXYUUYgpqc^_ZZ^_U[[\ZWip^YZ_in~}m}wRRatfUe~tcfb\a[\lihabb]ZUUXUU[bbY`\`^^Z[]`WXZWaiWXYY]`im{rnRPR`P_qXfea]\\^fjfba`c\UTrX\i`akng\`__[`^i_jTmuyvsYd`}{}{waS`Rssotdde^\]\sffaa`f]TSQ]b``b_``__\Yffbddc`luv{ywflhenosseecd]\_daa``bgaRSae_``g``__Z\^^_]fcc_``_sjj}s~{qssrrqnsmeiefeafj_d`aacbmUYYb_``c_``a^Z]^^Y^gif`^knmjioptpirvtrrtemsfkffeffgs`a`aag^Q[TZ_``c``i`^aZXXYZagdwg`m`i^^a_ahqtsvvtosprhfef`eRVeaeangfX[`_``a[d[l^^]^]W[Y_upgkdc]]ZY\cpwttlqii[ib|ga_MQT_pymlhf\`dbaa``WU]]^]^^]Y]]YXXvga[[\]]ZYdfuutrono`jd`ljabTYjikkif_^dcaa`_ZZX]]^]]WY]WWX^Zg[\\Z[_japtm\[Zal_dRUTXnjijmvfiecdaa`a_abaX\_^^]WXWW[ZW\ioj^\ZZ[`xlla]edde`h^]Teggiiec]_a`a`aaca\XW]^^]\WWfl_[Y^]\XYYZZ[]]rlekhadflljiabfhgff^aZaZ\[_`aa`_`[[^`a_^[WWYcdbZ^XUY[YYZZYZ[]\`ktvk^bilmij\pgfggfaacYda]]`a``_^[]^]^]Xaddhgcc_]]Y[ZZYZY[Y[[jqe]_klnhgbadffgfZQZaWUW\_``]`e\\`b[^^_cgcbddc^[]]YYZUXggkeekdkhidfbkjcefejg]SRXTVV]^^]]agg`e__`^\accbmiVZ^[XYYZYUX[]ugebbcchcfdcdffe`YVVR\dWQ\_\\a^ebb`^\bc`ccbba^^[ZZWXXY\`UVX\hknifckghkZlffei[VVW[WW]c\\][^^Z\cda\_]ccbbaa`^\Z]WYXWZXVkkgiuslqnra[jzojcgqWYQQaY]^\]^\Ya`][[Z\\Ybcc\_`b`^^][]Y][Z\hdfcmnpzpi`adytelrqq\OKOOZ[ZYY`ac]ZX\baacbX`aaca^^][]VWWbmvddotzpe`w{lfssf`kUM[\]fib]cy`\\Ya[\TU[`cga^`[[YYWVWXYwlnddcdaom`hsdjeemsn`j`QMfydc`c|jr^r[^Z\W[aabf^^ZYWWXVXabdekkdecops]dctded]ncjglg`j}icuqqmpti\gefg_`bc`_jlmj\\^X^\\[\aohelffbx\dijuzeqwew~zotb}zukpto__jjijj_Td\Y\baa`]^WW^jY\ZV^ehmm^][[^ildebdfplvu{tdctlmlvnmU[fl]_``_vXXY`aa``]]\^\\[]]cZ_dU^]W[jjkbbacfxgwvvcbo|t]vx~lnmkghyc[\]mX\`a_``[`ZYZ]^Zf`aeUTYWckamaabbggqcdcbkgh~vts|wwpmme[ZZY[WX_``_a`ZYYZ[\YYZUTVWYlldbbdfggcc`sm}hqstraec~a~^\XZZWY[WWY``_a``YY[X[\^TV[kmmlbbjgqruz_o}zqrp{c~~x\c\[Z\WXXWWX]`_``a`]YYXY[^mmkmmafeiijrzzvuoYpolbrmv|xZ\][ZZUW[XXZ\``b`]YYWXYXmnmttnmmn_]\_ghtm~yjh_\__`iqa|c\]Z[Yaul^ZZa`agb`YY[YYZ_\dm~mwtoxnnm``X\_icktnnbed]_Xnpkpfzttih_f\\plqmk\`iihjjcYZZ``Zponr̂pls\\WVfdf]ginbdd]\VQTidijumllmmnmppoefgnphlldkcYY[Z^rpqspkep[[WYccfggfomdidVQhifijnllnmompph_flholldnnk`^YYrurrtdef`\]aabe]f`fkkd\^[Xhhijjknnoppeaggpokccjmq]_Ymsx}egshcs_f]`aqb^_`feki_\^aejhjnhijjoopoo_`dgbbcklheqj[^spbggh|v{wtka_cqb`ejkkomsmnjkkrrkjnkjlnoomd``bxchotgeqqf]ekaagikvcc`ikq]]bjfneehnijjhnrromlejjinohc_bavyypr_\[he[[^eb_umfbfbbcmqt``tihxdlhiikhklmqjlhhej`dlyyvxua^YZ]]dcdeqvnnfaa`aeceffe^ghhaffhkqiifgitmkgbgf`ndvvi_b^ZZmcddiqywnnZ_]babcffcfcd_[c_\hguknjgiffjgnpmltgfaZZkvwo_Zj]]ZZhriqfp}ong[]^gkhfccd_\^_foxqxkkjicfjhyynnzsudZZYjsqo]^neswstsqrqjoo[_^hiccec]^lvxstiaahkjcnk{vngjr[ZXb`iikv^zqaryjnklia^[a_ehhgccadcbdww愃ikq\\gjj|mtgoqjkckszvyyvabasejkmssrg_^fhhgcckibcxwuvvw[Z[[Zhj{z[ZYVXVUUXkqfyywla`]]ejmnv|}xxlieaaihjghccdjjgdwftdbvhd||ig][YmYmeYVlyywi]^ct~mwvvwxnmmgthOQVTXh[\^HHJJKYWWuNKJG[_ZZSVnSFFIbcYWWYTbXVVTRTTJIIHHGFGFJmcOOWTXXVRNLLJJKvtWGGJNSkmllZGHXSXVSU\\VUVUTTQJIIHIGGnaOOQOVb]WSQMMNOKK\ssJGGIGGJKmllm[mm_xTSTYVTUWUUTOubZJISIGHKYn`\OQQSOTUQNLMNPQKNJMVLGGHWlnjqjXQUU\ZVUTUUaWTTfaa^\ROHNLRQS^QPQPSTTWRMLMOONNIIORHGGSKZhb]_T^^U_Y[\TTUXkakZmldbc]UNTPSW`x`SU`P\VTXWNNXNRNIJIJWRGHGLGNOqnh`j_\VTTZXUWUTXYbiinnbmk^_SSZXWjbue[[_^XTTSSXPPJJGGJcdbGGJLbqqp`kno\[UW[[VRWUWW\ijomwgd\]WXUVYaaef_eeXORSPTPPSS`JZxxetHLJ\_cdqqorrlc[X\XXYZXOWacdooz}~giZV]Zk`o`gffg_MRZSQNY]\d^Zk[\]XY__ef_fhrpd^]\\[`^]Y[YYcduww{t_^`_\Z`ddcgffgmaN[[YUT_^S]QYZ[\\arrqmtthkpb\\`gb^^_[`Zuv\gqze^d_YXXb_da`bemurbjd`VfdPPRQQY[\\b}wtta\[\ZZ[]plpa^[`nvp]dy|{ccai[S`b^__bdVcQQTTXVPPWQZ\\arub}~`\[\\e`_^^]]WimTO\^}|ocfmmqd^`_bgqe^XRQQRPPV_^^]^\`pWVmii_]_`\ab]a^^YVXPNOPUq}_ffmfmo`^giioYWTSQPPQU]]QV\]hpphMM^gY[]]^\[\h_^]_]]OONNacX[XYX\]pmb`kihfY^WRSPPOPY[QSKVglmii^g^W]]^[[ZTf_a``jToWUNSYYXX_ppmfgg_^_[dbRQPQPQPPTQLRTgq[cjx|V`U\VZYVWWvQqeqnmojRYYXXYmpaWje^\_ZZXVOOPPQPPOPPYQPPOOTUVR_NTZUVQSS[XtjiONYS_KSTRWXXZY[dp^bRg__[XXQJOOQOLP]ghXUPMNNSOORR`^LVNSSRVhssnhTSJJKJSM][YY_mm]SQglk``]UYQLKKOPLLP^ghZUVQQUVLRRSQN`gUPQU`dvtsvctnJJXk_N\vkZ^YSXSSa_^XXSQLLOLLRYYPWSWUUQRTWNOQNX`NOPPTW_bqgutdIHJXHWiP]w]YTSSU\_\XXWZSLKiOS`WXbe^SWVVRWU`VaKdlpmjPZVrpsztwxqmXKXJkkfmw]\\VTTSj\\XXW]TKJHTYWWYVWWVVSP]]Y[[ZVbklvptvwnl]b^\egkk^]][\TSWz[XXWWY^XIJX\VWW^WWVVQSUUVT]ZZVWVUh_`trhspgiihekd]a]^]Y^cX[WXXZYdLPPYVWWZVWWXUQTUUPU^`]WUadc`_deje^hljhik]ej^c^^]^^_lWXWXX^UHRKQVWWZWW`WUXQOOPQX^[n^VcV_SSWUW^gjillkfjhj_^]^W\HM\X\Xe^]ORWVWWXR[RcUUTUTNRPVlg^aZYSSQPSZfnkkbh``R`Ys^XVCGKVgpdc_]SW[YXXWWNLTTUTUUTPTTPOOm^XRRSTTSQQP[\lljhfefWa[Wc`XYKOa`bb`]VU[ZXXWVQQOTTUTTNPTNNOUQ^RRSSQQRSRVaXgkdSRQXcVZHKJNea`adm]`\Z[XXWXVXYYOSVUUTNRQNS_faVSQRRSRRXoccXT\[[]W_UTJ\^^``\ZTVXWXXYZXTOOTUUTSNN]cVRPUTSPQQRRSUUic\b_X[]cdca`YY]_^]]UXQXQSRVWXXWXSSVWXVTQNNPZ[ZQUOMQRQQRRQRSUSWbkmbUY`deaaTg^]^^]XXZP[XTTWXYYXVRTTOWZZ_^[[VTTQSRRQRQSPRRah\TVbdf`_[Y[]]^]QHQXNLNSWYYVY_STSVYQUTUZ^ZY\\[USTTQQRQQRMO^^b\\b[c`a]^ZbaZ\]\a^TJIOKMNUXXVW[``W\UUWTQWYZZYZYebNQTRPPQRQMORTl^\YYZZ[`[_\Z[]]\WPMMIS[NHUYVV[W\YXWTRWYUYYZYVUTQQNOPPSWLMOS_be`]Zb^`cQc]]\`RMMNRNNU[VVWTWXSRZ[VQTRYXXYYXUUQPSNOONQPMbb^`ljcheiXRaqfaZ^hNPHHXPTUTTXVRZXUQPOPPMVXXYRWXZXVVUTTSQSOTRPS_[]Zdeg{qg`XX[pk\cihhSFBFFQRTRRQWWZQOLPVUUXWNXYY[YVVUTRSMNNXdm[[fk{qg\Wnrc]jj]WbLDRST]`ZTZouSPOLUOQJKRY[`YVXRROPNMNNPnce[[Z[Xfxz~dW_j[a\\djeWaWHD]p\ZWZr`gQeNQNPLQXYZZ_WUUQPNNOMOXY[\bb[\Zfg{jT[Zk[\[TeZwa_c_Xbt`Zlvvffacg\O[Y[]UWZ[YXcddaSTVOVTTSSXf_\c]]YoS[`alq\ho\nuqfkZuwvwplbw}ehcSR]^]`_WJ\SPT[ZYXUVOOVaPSRMU\_ddUTRRU`c[\Z[]gdmmrl[[kzcdcm~caKP[aSUWXVnPPQXYYXUUTVTTSTTZQV[LUTNRaabZYYZ]o^nn[ZgtzlUmorbcb`]^p[SRUeOTYYWXXSXRQRUVQ]WX\LKPNZbXdYZZ^j[\ZZd``umkjrmmebb[RRQSNOWYYWYXRQQSPQLKMNPcc]ZZ\^__[[XkeuahvkkiX[ZuXuTSPRQOQSNOOPYYXWYXXQQRORSUKMRbddc[[cb_jkmrWfuriigrZuuoSZSSRSOPONNPUXWXXYXUQQPOPRUddbddZ_]bbjrrnmgPhfcYidmxsoRSTRRLNSOPRTXXZXUQQNOPOdedkkeddeXUTX``levqa`VSVWX`hvxXsZSURRQXmdWRSQYXY_ZXQQSQQVS[dudnkfoeedYXPTWa[cleeY][TWPegbg\qkk`_V]TTgeidcUXaa`cb[QRRXXRgfeiwwy{xfcjTSON^[]U]`eY[[TSMHK`Y`alddedggf^^fh`dd\c[QQSRVigij{{gb[gRSOQZY]]^]fd[`[MH^^\_`eddeefeggaV^d`gcd\ffcWVQQj|liiz{|{kZ[\VQSVXX\T\W]ab[SURO]^^_``befgg\W_^ggc[ZbeiUVPejou\^jx{xw^YjT[SUVgYTVW\\b`VRTVZ_^`c^_aagfggfUVZ^YYZbd_\haSUjgY^^s}|lqli`VTXx|yhYW\`baedhbb_``ffb_ebaceffdZVVXoZ_fk_]hh]T[bXX^`b|wxkuuXWU]_xfSSY`]d[[^d^__]cffdbb[aa`ef_ZUXWmoogiVSR_\QRT[YVkcv{zwZU[VVWbfhuVVj_^nYa^^`]`aaf|{w_c^^\`VYboomnkXUPQSSZZ[[gwldd[UUTUZXYZZT]_^W\\]`g^^[\^ivca^X^\VdYll_UXTQQcYZZ_govvlddPTRWUVWZ[XZWYURYVS^]k`d`]_[[_\}cfcbj]\WPPalmeUP`SSQP^h_g\fuused]QSS[`\[XXWXVRUU]f|ohm``^Y[_]ooeedpijZPPN_igeSTdZimijighg`vueeQUT\]WW[YSUb|mnij^WV]`_Ycaqld\`gQPNWV_^^`kTogWho`dab_|||WTQWU[\]\WWZY[nnz`gSR]``rucj]efu``X_gnknonlYXWi[`aci{~ih\UT]]\WWb_XYonlmmnQQRP_`qpQPPMNLKKN`e[nnomcYXTS[`cdlrsoob_[WV_\_[\XXWY`a^Zy|n]jZYm_[rr_]SQOcOb[NLaonoonmbTU[kucmmnudcc]j^de_^^_\\]Zkowdgzog`aggi`f_^_^\ivvkrbjggibf_`_^^olqqiihhiifmg`hgz|kiurq|ljiistonlkkiionnooefeev|kgevtvmiiknnondccff|juyufamiopsonp~pqq}|iimxniilsvrqpplpkksw{iinj~onjiiqhrrvqvpkppvxzhejunpkllijorrqppvrxkkzjuvqmizqrrupqzsyyxkopn~~miilrrsrtvv|{qvnoihnrux}~~z}n~vx}jono|w{~{|{|zmwpnojjs~|||u}zqsu]z|f]ruzx~x}yvxvr]a\\]\^npl|rz~hhiucutt_a\\]^^dghpox~~rvqrtquuaa]c]ddimoulzxxwxxzdqryuvw~j|udfjklfgjlyxs{pqrpzuou|qxjcjfjfgj|yx{qq~qvywjjgfjffjirpmt}xvvf{fvkgfgj|gy~zyuuxxeŀhlfhjjgkiwtlihiktwi~gjjjmkgibnh]hqhihl{le|xhsjiijidcbb`^`uplklodehwdjhhjiihdbb`^fdnhsybvhhndjizljiegcbcbb`cemmnndcguuriislofdbcaabbfyeqst_cemmpsomjlffebbabbri}zhdijmprjorookvkfccbff_\d~nxjjikijjmodxkbkfgcddmYZeegdo}piijkmklkkjgf`gfcohgpmfqpkjjhljhhffgeelkoppnppuoljljjihhagf`ktqspprvsqjjihhihgka`acdnvoqqp||spnjmkoiihjiihfbacprliq|gqzpkjljojrsmiqn{qbb__anrsoqvupopvjousisposwzngf__bmhlkdxxo||}ytssxz|llfcpkhcivwenutyuxt|nnm_]cfgaa_qfeccqqpnrutvwtsr~n``oihaalyggecwrvwx~vwvuuy^]l|{yqnlgkweuwywyy|{}uwtuj||z{}~{ykkyxxyx}|}yr|}}|}mm}lwxyy}}||t~}}{}}ujrkxyz~w{|{zpv{u~mqrpqo{pt{{mqv~xysqnus}}}~zowlrqmkrrqzq|{xuzqylrtrssnvwno|zl~opvqtt}smggjllkkmmoopustsw}lfgmlkklloryqq{}xhfggfjoiiklmooqgr{|}|rrhqwxkgkkmqpooikpsr{~o~shzxpmhkkqnngijk~muods}}|}|xpjjkpnnrtsfoorkz~}{zvwijlktwpooshjv{{ts}svupjkknlxv{ws~zw{{y}zps|rqjkorzpsr~iyzzywnekvs{qohrqsxzzyyxzwxusolqqrsZ[UTTRQRP`dmY]pe]VW]]_V\UTTR_kw~yl|~axvhX`]]_X\UVUTTev~{xzu|ybyxugg__^^__\c]V]\otw|y{ra_kuhgrb`__ijed}ybaaxxxww__eddee[\[[lr`][lyjvlc__addez{{zdZYY\\r`vkozk\Wc_efiedftfgg}sr__vc|nzzd__bilhgffbfaaimq__d`|wted`__g^ghlgkfafflnp^[u`kcfabb_`eggflhnaap`jlgc_pgghkfgpioonaefcttc__bghihjklvqxyqvxzgwlude_^dgjnsspvvwwvs~ctl|ns`ede~rmqvtu{vq|qqocmf{vde``iw{yut|r{rrxks{uupgvzilSpr]Shzzkonst{twnsuolnliSVRRSRTdfbr{hxwxvps^^_kYkjjTWRRSTTZ]^fvxze}znwtshlghjgllWWSYSZZ_cdjbpvmnlmmoZggojmmuaskZ\`ab\]`bvuwnsmipfggfqkekrhnaY`\`\]`uuypxunmpggtflwpn``]\`\\`_~gdahqmkk\oZmb^\]`r]ovrtnlhhklZu^b\^``]a_l~}}h_\Z\^gj\tv]```ca]_Wc\Q[d[\[_n_Ytpl\h`__`_YWVVTQShc_]_bXY\kX`]^]`__^ZVVTQYWa[fltVk]\cY``pb`_\]WVWVUSVX``ar{YX\jjzh``ibe\ZWWVVUYlXdggRXZccfiec`b\\[VVf\sztqn\Y_`cfhaeieeala\YYVZZSPwzXrcm``_a_``ceZnaXa\]YZXbNNZZ\Ycrf__`babaa`\\U\\Xe]]ec[ftfa``__``^b`^^\\[Za`eecfeejec`b``_^^V\[U`ififfehlig``_^^_^]aVVXYdkeggfrrifd`cae__^`__^[WVXfhb_gr]gpfa`b`e`hic_gdqgWWTTWdhieglkfefl`eki_ifeimpd\[UUWc^baZnnezrr{ysojiinprwxzaa\Yf`^X_lm[dkjnhlhqddbTSX[w\VVTg[YXXggfdhjehlhggtvdVVe^]VVbn\[ZXmhlmnsghggfvnvSS`pnledta\_kYkmx}ojjonpfkjj_pomnpqom__lnn~~kipnpwnfppnps~~`ap`mno~kpooxwgqppnptps{e^d_noypshooxpo}|cingqr_ba``]r~~}x~yypzdgrnnrrw]beyv}|~||syz~}{kktrea^ebls}wyssu|urmswcsk_eb_^ddkoguwz|q|{olisne~m_ehdfesxxyasjkbbptovarccjdefpu~xxpg`ZZ]aa`bbcddgffkqy_YZa``abbdfgksddnpyi[YY`e_`abcddeZdlmorldd[elma]aadffdd\]adckooo_pe[mmec^abbgccZ\\]ml\d^Sctmmrroqqme``afcdfgfYa^^`cbZpjqquuqqpoll`abaitzzr{ia`^cWYgkkqdeqhkjfaadbzzihmgfpkrhllkmkqagqggabfhm}}|{bddq[lmmlj_W\jgpfe_hh}{fx~vkmmlljmkl}jiebhgfgQRLKLLJJKHY]fRUg\TMNTTVMSLKLLJWcovretyvXzom_OWTTVOSLMLL]nwtqsmtqYpol^^VVUUVVSZTMUTgmoytqsjXVbl_^iYWVV`a\[xy{wwxz}vupXXoonnVV\[[\\zPQQPchVSQcpamcZVVX[[\qqrouYONNQRhVlbfqbSNZV\]`\[]k]]rhgTUkYv|{rdqq[VVY`c__^]X]WW_beUUYWs{nxk\[WVV^U__d_c\W\\acdTRkWbZx]XYYVW\__^]\\`]bVWgWbc^ZVg^__b\\d^ccbV\][wwkkZVVY__`_abakflnelop^ncl[\VU[_afjjiejkkullju[kcsejW\[\ugbfmjjpkevvriig[e]rm[\WW`nomwtsjhpfpghobkrnnh_v{zvmq\`GdfQH\ooafelmsmofjlfcec\IMIGHGIY[Vgr_ppqohkUUVbPbaaKNIIGHIIORRZnqr]useokj_c^_a^ccNMHNHOPOUX\bYhndecddfQ^^fad~fmWjcORVWWSUWYnmoejd`g]^^]jd^cj_fXPVRWSUWlmphomedg^^k]epizyfWWSRVSSWVuv^[X_hdbbSfQf}YUSTWhTgmvxywikec__bcQmUYSUWWTXVdutu_VSQSU^aSk||nTWzWWZXTVNZSHR[RSRVeVOkgcT_WVVWVPNMMKHJ_ZVTVzYNPTbOWTUTWVVUQMMKHPNXR]ckLbTSZPVWgYWVSTNMNMLJMOWWXXirQPTbbr`WW`Y\SQNNMMLPcO[]^IPR[[^a]ZWYSSRMM]TiqjgdRQVX[]`X\`\\XcXSPPMRQJHmpNhXbXXWXWXWZ]ReXOXSTPRPZEFQPQOYg]WWVWWXZXYXXWTSNTTQ[TS[YQ\i]XXWVVWWUYWUUSSTSSYX[\[Y[[`\ZXYWWVUUNTTNYa]_[[]``^WWVUUVUUXOOPRR[b[\\[fi`][WZX\VVUWVVWVUQOQ]^WT\gQ^g]XWYW\W_`ZV^[h_QQMMO[^^Z[`b]\]cW\b`V`]\`dg\VTNMNOYSWUNee\qiirpjfa``egirsu[[UQ]URKRcdR[bae`d`i[[ZLKRUrVOOM^OMKL^^][_b^`c`__kl\NN^YWOO[dQPNLd_cdej`a`__nflKKXgfd]]mWQS_Mbdotfbccgfh_cabWgfdeghfdTSSaeeuuvdbhghne^zggegjuvUUeTdefuchhggoo_zhggegjgjqZRYQefpgjaggpgfut[`e]giUWWVUSfuvutpuppgq[_ieeihlSWZokrsvwvttjprvuscxajh\VTZWbirnpwjiwltmiejoZkgV\XUUZZae]kmprhtsfb`ke\vdV}\^Z[[hvwnoo}~~Wj``VVfohmXj[Z`Z[\fisnnv}~g]UMMQXWVWZZY^\\[_fwyzoTLMTTUVYY[ZZ[\ahXYdfo^NLMLLTWRSVYZZYZZNXbcehaZYNX`aUOUV[\[YZYQRUXWadcdTdYNaaXVQUVV\YYPQQRcbQZTIXjbcgfdeeaXTTV[XYZ\[NVTSUXXPf`gfjiefcc_`VUXX`irris`VUTYMP^cbg[Ze\_^[VZZ[Ysscbe]\fah_cdbdbgX]e[]UX]ahwwvuWZZgQccbaWNRa]f^[Ub_vwx\nskaccbbadbctb`^\^_bb|}x{|yxrclcbd~xpqsqaoot{nzwtdbdcllgvk~~}{|vtwz{|uwxgiekjsslv|zzwlmhhlmfhsw~~}vuz|{|zt{}jtlnrz||z{noomllhrx~~uppvuzxssuxv{}~sij~x~y|{xxwqoq}qt~~~{u~zs|ttzyzz|rsykxy|~y|{l~sttyvtrzzxu{uqlwvxwx|v~stsyum~|worqqursqwoy|wuxtqzrkl|po}ppmounqqppzxy|rtswvlogqqjgs}rnptoqirgmm{rvx|zlqmlkojvzxnnmuwnhfrxejik|~po~vmommuln~mtskmuoshrihddjg|}}iy~{yqlnr}uzxoxpxzyznvmee}mgg{idfdeklxy~|g~plmnpmygyopm|{}mbabdgl~kgfeegko|~{ywf{|qonnpfk|~mbacfmmgdgfefggs{r}yyuccgf}otrmk򊪘}v`liigefgffgs}~ry{{r{yznssnnml|wxwnkceeffrzjjzzrqq|zrssmll~kunvptvtqlkdigkbj{j}ywzy}{{susjlflnklhcnoZZnjnmr~|zvxnxy{yzyx}xzv^`tommklhqkum`ZYWjikd||cb{qr~z}~zxy~}yy|yylihhkjYkknvyrlnosurrmlqs}}stt}yxxyhihhghgknpkswsrvwrvqqrj{kppz{~vux|zyxxwxwsx{liihhgglopinquzkxjksrz}}~wxyxpoptuy|w{x{iihihghhmposovyy~}hxionlrqzuuwyyqqrtws~}ynoopqnqhmhiioitsstw|~w|}wjknor~yyjkmqqt|tqsonpstv}lhkzqpvuqstjoommn~r{~xyxysvimmnquupouoxnxuurrwr~~rrpml|jitrbwv|srjkllmmnpnnonruvsrrpur~lmmjlqiiedpdwwzwvmmnstmnnmnq|{wvrohlggknpvnjjknlgiruwxmlloikkefkmwxwuwhgmlhggmomjmknaciwxuvw}nlrkpjkkjjh~ryuq`^__kmmgg}zkkjgcceivvxu}}{nlndjzlmmopn{cT`eggmnuffe_kjlwxxy}}y|kz~xddcd}xvnnjknolVT^`ggjddhswzyy}~{y{hcci}ugy{liZYZxyjkev}ddmwz~~}yqddh{wzihggkmurqpvz}vuuvw|jjeeoz~yyuw~nsqklrozgzjgefghkkz~{wwss|qi~}|tkpmqrvheehgics}xxyusry{mpjumi~}y{wxzddfeebcbakl{yxyv{z}}}|khhd{y}~wyml|~~jgffxyyyz{zyz|pnfhihbfvmnkkdccdffeaembgy|{yszyxuyopnfimebaxrovpojnojddb``abbf}o|}upeiolab{|nszuzvtonpvqjfjd__`d``bz|zwyjdcmbb~tup{{{qouyslnhkc__`b`gkxv~ävkmecclbrlmtnncvqoxvqqqggmebbyw|vojhjqql]ա_`bywoxxshmdc~zې~}nhhjj~c|lnfnxxzqokc{{n}mhhiiospnnty}wexvw{wyvvskltkiimuqppuvwxz}~{v{xy}scdevjtireouuvpqqsvxyspxz~w{johcdggjgee֚xvvwqpvxy|xpxqjl{~}}j{nleacfnhnfefxyxtqppooyxyxyozuplj}xlow}wmmlifepolljuexyyxrsppopny|qjqhkqzztvvnnnlieeqeeddŕxqpoom}y~nopo\`khzrsomstuxvolkjjhjrldd􁆒utvpi{vnnsw_avda|z{osmoy~vvplmifhhnfedeuljwn{vsstdo{uqoop~vqqpnspkqmifedʍ||ijxxww}xttbbez}w}}{popt{tro~wrfg랑{pok{~p_c{osvt||{wzxpoqejfff~~wzqghlxvxxtxzuplhecfīy{nhghlnk|wwxtsvutprpgfdu}ywygguyrt|jnslggtvtvssrrswwxsx}ppggc{~}|~z{gttlssuuomslfgjtwxvvxqqssrryw|qegrk|ovqvvtwvspmmijhgsvqtoopwsnnrrpqpsosvnlwifw~}|svwttrlhmnjlszrqoonoqooqrrqoqrwo|rhdffvt~}{xx|ttspqqozrppnt~ukoprrqqtyqpvnjigg~{oyutssrmnnprrz|v|pps}olnrqqrqywztunhmh|qrlnplznhYbYXZ{tkdefdUbbgndnlj\Y[Zcb]l`tsrpwxypkikrmopzkmn]_[a`{ug}f^{yionnkbc__cd[]glssrw{ljntvppoi{{yqs`jbdxftum}yxnnmneddbcb]fmvurssngg{jinttwxlggimkqr}tj^_rkqkmwrunkjkuedeqzehyvssrrtmumcpv{hiipoppr~|iioa|vkl}muu~pvxw|m~v}po`uuvsrlghmvzz}jhfppnkqkgbnhji}hv~wmi~wu{vyuusyggliy`srxymeihhl~iigm~bi~mii{{w||vvlgenxxe__~~qed~sffdfldhhfgpwj~jy|{wqssu}~eggji_c[ee^[hr|v{hdgk{eg_h]{}absq|k|zzyhs|ikqn_ea`_c^k}wpmdeclnvd^\h|xlZ_^`wln~{ec|zztsvwv{xjacaajabtbihaclei^h_]ZZ`]qnns}}}^kvrqogcdgqisnl{dl~dnonpdvmc\[sd]]q`Z[Z[abimrq~}~y[zsuwgccdfbn\mceaqpr{cYXXZ]atb]\[[]aewqspw|}{nk[z||~}pry}hfddf[`zqsxzcYWY\cc^Z]\\]htqhx|}sookXX\[y|yq|fkic`y~~vslWb^__^[\]\\]irshnvwqqhqopcw|yjjddct_vrwrmondaY[[\\hp``xxzpphggrpviid__`q`jclgjljgbaZ_]aX`qw`zvsomposqqjli{z|^x|~`Z_a^`]XdePPdadchtrplndu}~vnoqopomx~toqy~xkSUgrba`^`\f`kdVPOM`_aZrrYXqght~}xpstpnoqxuuppsoo|~|s|r_]\\`a`Oaaelohcdeikhhzcbgiu~ssijjtz|~}{uqoonoo|xzn~z\]\\]\adfainihlmhl|}ggh`qaffpqtlkmrwu}rpoomnminvup~yv`]\\]bff_dgkvpu~}}uan`aihpsstmno}|yz}ofefjko{rm|pn|sp^^]\\]\]^cffheloous~^n_edbhgpkkmoo{z~酁}gghjniuwtocdeefdf\a]]d^jihilurtnssm`adehy{y{toox{z`acggjsxjhjeeilsb]`nfflkeii}`eeccdthqtnoow{vim`edehlzkffken~}czmyiifeejfzt|thhfcbr`_jhXmlurxvvii`beefyxfeedh|{{zxihddhfsbd~||c`bg__[ZfZmmp|noffgmmefecdgr|{{|}ylghdb[}a^^begld``adb\_hkmnxv~~ffi`bc\]acz{{yshhgfhZY{cc_^_^dec`cadWY_noklmsuuhfleibcbaa_t{zzywfnfcsROQRadd_^^zspyaa`]YYZ_llmksswui~}xycf[b}zzyoabbaoVHV\^^c||dxk\\[Ua`bmmnossvpweuvp[[Z[wtnzlccaacb`JHSV^^avZZ^izmonnsqp|~u_[Z[atx}|}w|l^psc`ONOnpab\ls|ZZclnrrqmvvhyy\\_sora`^^_bdmjhgmqswmlklm|ru``[[wenrqmmiktejicdjhq{_qa^]]^_bccqxt~qmmiivrvvwg_wxrtrrqqivbgejilwy~`]\]`^`Zjuyvyookihwoqv~cf`kc_trsrqwvxp|qmnp{x\\^\\]ZZYXb{cqomolquupsyssra^^Z~vqtrou}oyttmocbruu~by^]]^nnovnpqvxpopr}yfd\^_^W[z{|xlcdabv\ZZ[]]\UZbV[voqzpoziponkoefd\_cZXW|z|zzun}|ie|ylfeadfwa[[ZUUVZyzsersykzxf[_ebWWqrdipkpljedflha]aZTTUXUTV|nqvpmou`ZYcWXvtkkfqxqrvgflpjce_aYUTUXU[|_mks{Ùwwlyac[YYbWiccjddYlg|veomhwhg^^c\XX{smltrwle`^`ggbU}}xUVXoywnwvfooj_d[Zusrsrmwtsyyd^^``t[w~zsbd\d||}~~xzzyovoqhfbZssmmstt{zcs~zc^^__e~ifddjosyzy~yzzv{x~n[niimhtvkzllhabja__clgffklmxznywz{zz{{xqspmilrjw|x{nriYZ[l`j_h[e{kllfggilnozxwifnpxz}vprqqiu}~vn_c]YY]]`][[֐n{{llmgflnozrxnfng`b~vqtssssrw}|_ocaZVY\d^d\[\nonj|gffeeononoepkfb`sncfmsuxtkbba_\[febb`k[noonh}x{{iffezfdo}}rg`g|_bhpq{egg_xwvcca_[[g[[ZZnՌgwxfeecsotdefeRVa^qvcc_^ddfsljda``^`hbZZy}ljlzf_wqlddimUXlZXrp|wm`d^`itsrkjeab_\^^d\[Z\{vv}kx~|b`wvwldpkv}iij[e}qz}zwgb``bsskffcifahc_\[Zx؃rr_`wwnnmlzrnjjYY\px{piqsqpeejqkhetmi\^qfeazwzqxxtuxfUYqwwvxzchkjqqmpnfeh\`\]|}|v\vvzvxvsxxtlog]^bnwv}t{{xknmmjno~wkfc_[Y\z{||vv~wnx{}xxtpd^]^bdaq}mmjilwkjfif]\[{k{{zzvzqomox]]kxo}gjr{`dia]]iuwwyljliihhimmniotgf]]Yv}wuttp~q]jwjbhikkwecib\]_imxnllnggiihhonvwsg[]ib}tzexxlglljmlifcc_`^]ilgjeefmiddhhfgfiejludcm_\vxpwutzzyzyvilmjjhb^cd`biphgeedegeeghhgeghmevrh^Z\\~xnm~}w}tt{{yzxznnrjjifggeyzq{zhffdjtkaefhhggjogfld`_]]vw~~zw|zyzxvqeokjiihddghhpr|lrffisebdhgghgomp|jjd^c^}pef`bd`|w~wyzma\MVMLNoi{{b[\]ZKXX]e\dcbTPRQXXQ`Thgfdkmtme_]`f`~bcm_abQSOVVrl]s]Uqo_eddaZYUUXYOQ[`ggfksns`^c{hjtccb|]oomegT^tXZxo]klbtmynddcd\[ZZYXXQZajifggaZZn^^b{~hhkk_ZZsz~]`_efph~z_wwVWiaf_algtjc`_`k[Z[foY\mjggffgs`hyb|Y{ucinzrx]]dcddfrp]_weXsj_`qajiytelnmqctkqecTiijgf^suux~\\u`jmnnr^vv\[ddb_e`\Xdxt\^\s^kzswlb^wskjojmiigkuw[\[`u^snUuwshflmaY]\]as^^[atvpT{x_|{wtb^]oo}kppjj}a\Zdmm[TUsseZXurgZZWY`Y]]Z[cjxtw\}{xt`nuxwpokeggi|rtZ]\``UXQ[[TQ\gpsjo\XZ_yunXZQZNntoTTffq~a{{~punnm\hwr^`wfeU[XWUXS`qkdaXXW`a{iwVPNYmj^MQQTkbczroYWpnojhlnlrvnbXYXW_VWhV]\UW`Xu[OXrQPMMSQecctugqqqR`ywyyjgec\XY]h`jedqYb{sxYbcbdXjr`UNLeTNNbpRMNMNUV_bfesuqsmOtot~wgjj[XXY[XdSvdY[{xVedfvynUJIIKMRdTPNNQUYkegdlpqob_Ooqpsrdfmq][ZY\RWx}pg{vwgmxlUJIJMTVPMPOOPQQ\he\lpqgcc_LLONnqnvevp[`^YvWot|{s}}~ie^ITPPQPNPQPPQ]fg\cjkee\ecdWkquxum_^YY~ykVmiy{kess`a`WTLOOPP\dTTllndd\[[fdjvv^^Y{vVWWhT_Y`[^_s]ZVUNSQULTekTnjgcadcgeesxw_a^p~yprUosvVQWYVWSMYYDDXTWW\hgd`bXiqzrujbcecdcamzqxhdfxotnaIK`viYXXWXT]V`XJEDAUSUOffMLe[\hrsvqldghdbcfmz|yhhvddhedzrtsxktw{jXUTTWVDVVZac\WYY]_]\nXV\^irgg]^^ioprtqnhedcddrxnpeuxxr{xUVUTTUTWZ]W_d]]aa\`pq\[\TeV[[deh`_bfkjrwvywwedcdbdc_dmlguxupmzYVUUTTY\]UZ]aleisrqppjUbTV^\dgghaccqpmxyzyymqd\[[`aeqhcrgdskgUVUTUUTUUZ\\^ZbeeitsqrgqScTZYV]\d__acconrtyzzyur]]^`d_jljeZ[[\]Z]TYUVV\U`_^^aiegstraffaUVYZ]mpmohtcctlovyyzzyoUVX]\`hm`]`[Z\__biXTWe^]ba[^]s}ruurqV[[XXYh]ehbbckkoowywwj]aUZZ[^bpa\[aZdytrZocn~^^[YX^uXvlfnttri^]\YWgTS^\L`_ifluzyyjj]]VWZZ[~nm\ZZY\ypooyl][VXX[WeSUqosquzXTV[SSONZLaadsttzqbd[[abZZYXX\fspoopmz]Y[XUOpROOTXZaXTTUXVOR[_abljrr}[ZZ]RUVOPUVn|nnlfYZYW[MLlUTPOPOVZߊXUWUXKMRab_`agii}xw\Z`Y\TTRQgnnmljZbWUfEBDDSUUPOPmheoVUUTQMLMQ``b_ggktxi]rqklUWMTprmmlcVVWUVUbI;HMOOVrrXm`PPOIUTUaabcggjcykYiicMLMKLjgbm`XXVVXVS=;FHOORxjNNR]nuaccbbggecpriQLLSfjooqkqbTfhWTCABacSSN`hr~{NNW`bffbjj\mwxnNNQeadzUTTSTX[b^\Zadfk`__`bqg|hTTOOkYwcffbb^_hY_]WY_]gwnReUSRRTUXYXelgqxseaa]]kgk~}jk[Sklwfigfeze]jV[Y__bmnrqTRRQVTWP^hxlilbbc_]\kcejqWZT_WStiggfe|kjxwmeqgcdfypuslPPRRQPPONWttnUcbac`eiidgmyggfURRNrkfigdziqcvwnijcevvYXhukjsWnRRSddiut~acdjyldcdfzqmZXPRSRKOowozpltuyxuyzxzzbXZWXkwuQPOPSRQNRYJNibdnccn]dcb_cYZXPSWNLKqoqynnibqxqv^[rob\[WZ\mxWRQQONNMJNwlrtmzgxYfgm_nlsZOSYVKK}}ewvsgZ_fafb`[Z]c|z`YTYSMMNRNKJpbetxx{{x{|{yjdaciTNMWKLxyski``\gu}nghm]\chb[]WYSNMNSKPqTa`go{x{||Íkk`mUWOMMVKyt]XY_ZZO~b]sm\fc_n_`WW[VRSxwx{phcai{{y||{fk`YTRT[[VHqsqlKLNeoxuxmdmm]ffbX]UUmighhblw{{z{zhgmmXRRTTh{NmtwtymgWYQYrrsuttvnpqpemfh`^[ThibciiouxWgrnWRRSS}Yrxwutt|^[YY`eioxpotpplpnsdTfu^_b]ik`ouu``\UV^USSW~uw`\[\abcnupdoloqopqqymeyhxfc^bg_lqmobf]MNO`T^S\OYwwq{`ryy`a[\]_bdepnm_Zcdlnrvz}jxtfggf^krskcTXQMMQQTQOOֆcqqaxaxb]\bdephndZc[TVrzjehggy}hhgtlrqScWUNJMPXRXPOPycdd_vr\\[ededeZe_ZVTgbVZagu{wkm|ytvh_VVUSPOZYVVT_Odd^p~kqp_\\[o[Yerrf[T[qRU\ddrzzp[\\TmxljWWUSOO[OONŃduvv]mn[ZZXhciYZ[YFJUReztvkXYUSYZ[ha_XUTTRT\VNNmr~a_au}tup[UmgaXY^bIKaNKfe}~rlcUYTV_ihf__YUVSPRRWPONOokkr`lusqWUnlmb[gbkr^__PZrgqsp{m\wXUVWhh_ZZW\ZTZVROONt~l{wxggSvUmmddcbpid``MMPgor~e^ghgeYYZ^e^[Xg`\PPyx|}{fZZUtpnqgoonjko\KOhnnmoqxY^a_ffbd|bYXZOSOOpvww}rqkPjtjplomjookdg^TUYennukxrrnacc_ces~|j^YURNMOnwnwqxz{qkjurkcnqwspolh[UTUY[Xiu{yvcc`_bm}~{^]Y[YPOMroww_nmmimfcacltQQ`nes]ajrX[`YTTalooq~b|u`b__^^_cbbs\afYYPPLrzhpihghzvdreQ_l^W^^abmv\Z`YSTV`dpdbbd]]__^^dbjjfYNP\Ut{{}pgntYll`v\`a_bb^\ZYUUT_b]`[Z[c^ZZ^^\^[^`iXV`SPjksbsihgmwnmnmk^`b_^__\XTYXUX_e]]ZZ[\[[]^^][]^cZkg]SOQQrtka`qpipgfoomnlnbcg^^_]Z[[Ynoepn][[Z_jaW[\^^]]`d\[aZUTRRjqx{ippmk}pnmnljeYc__^^\XX[\\dfq`g[[^h[XZ^]]^]dber``YTYT}jlkhxoglhhjlgj|~z~~|~}sqtsmphhjjnxS|qrs}psiedfdfhff{~~uqo|xjlj|{{W~~sryedkkeefgijl|qrqslnijkvvuekX~}xteuqrqgehnmolztrsqqrllkpusnfT_T[~~qoonopqqsrmmnw~zvsspqxwytrqnnq{~]USQRS_~pooprqpttx׋~||yutqqvvpomlx{m~heVROQQXqpooinjqohnxzysxu}||{wus{pvspgRQQRQXpool|lminppqrqr|l~~yp|ooVOPPNqootst|oqopktrsvyowkhpplxlomnvtbRQSPNJRiqpoornrrtvypswrr𛈙k~ߏoiqpzb`]TTPVRkkjloopoksst~w|mmzzttY]WVW_]Yhlgxekqjabjuw{w|}trstojnpxsqNr`_``^Xaajkglfggkgfywyx{nkrrvsrrorr{t_NXL`bdbYajnmmlhlt|tsgjrnmupoos~ojkloNMUUWeb_eabekkjjmuzrmb``acnosyqmmtnorr|jijghڲlrvNTXUY]fddcfjfhgjwslda``exqu|ywo{miklrmX^ZZXaffghgndkhg}iba``cqrxtonnlffjjm{}oYW_T\bUdc^fgiqmhjjyzjaa`aae}soonjjigfhkyim[[]_TUc_da`rijloyysacaai~tnofzqeomzs\[[ZURbY[cb\`sllyxy|||qddbaeznq~}|hiuigv|YT]NY[[US[X[g_x~tuvwz|yx}reagrznmj{~uuna{z|[UUPQSZVWVa\fmwxwz}|x}{z}khhir~xttgeojsswnRSTRSR^]g`\bck섑yxww{{xxyyvlhhytkkopqsw~|hPRQSSVX__hg[~yxsw|yx}ywhhs{nnqsuvw|ym]LNPSQSV\gckuywvz|~|xxmljjihhābc{mnqrru}npPRVLLWSSXXWYwkwmn~}|llkjihhotaijkpruv}mUSOM\XTYaXlo_»emhl}}rgssrqlovhgikhz{]w`kdbfgsz~uucQROY^[Xd_hu{Ʋsrrhgtfgpopoz|vqoke``\bcijpy[XpZWQQXYZ\ex{{ʿxxleejefgmowx~thgfaa\fjl~[ZZXYVZZW^[bZ{|DZſrgdcdeigghfjuchggbdikhigXXWgWVc[[dbxx}˱ydcdfhffgefjymc`wsg~jchgeffoigVaaUXg[ij^fk~ʮeejkykj}yrxfiffej`Z\WVYgvuuf^}~|ɾtdee}uunp~gbee__^_]^Zky{zuqɿ~{nc_ku~fb`_^^deih}|zǴ{{y~}㫈wd\\arpuqrszdc``__bkrǰÿ|vv~v}}ha\a^xruusv~qn{ahb`__aab|Ūxwx}uvg_`ac]jst~}}~Xa_ebbǀǽ˒vvztzxrca`__b_br`^W^__i˿|{otryfzfsra^`bd`exyd`Wcʴshofeegfded`ceedeoizboñsimvggeadbfbfmdeedeik÷ðigjucb`g|ibeefpФʿymgvjt}bbgpihdbdebeehfvz͹~vrojunmjozslv}ddcdegthzzzȷwlksbhqr^zwnqye{{xgzzw|~|Ͷȸxluikpssrifga|uxjlstv~ȷtjqrfjfiahg~sxv~ָŽlvxzsddghgdpoo~ا˦|j{eddhadrrqonnlkpy{||ϥighgrp}nmmw||wz|{wNJgddgrtkjlly{~xϭeieqol~yilmxp~uefgfllqp~pvtu|dffjmplmx}|}w}~rsjfjxprzzӀ~tsrrijfflrtsywvsron{ehebhtwvw~omtzcb`__ivvwv~eloxzcaa``lftxvvzw~nmj|ka``{~xv{{|~usroa``eyovu{ttjoc}|e`__`flvwxvsfkj}z~١faaecd}uvxw{zsljhq{}{~hgedfekrsurwwrx~keedblrxqwwy}ɽĀr`ba^of_c__ac^`s||txqtt|pqrpowigjicf^^_`csnMpfhhtgkb^]^]^_]]{{znpqssypjfer{n`a`qv|pqQrsivip_^dc^^_`c}}x}z~qp~fhfibd_`alkk{yx[cQrrnk^oklka^`ddfczxqmthfhffhbbaekidu{~\LVLVrrgffhijjmkeev}l|vyt~xmjggdfnmojhgdd~gpusTMKIKLYrgffhijlkhlkm}wttpsy~lihgwhklgecbvvnqds^\NJHJJRgffcgckg`ezknlf}mi||spqoq~~nliqflwif]KIIJJRgffdvzff`bdcdedeo`rqvp}~f{zwrffNGIIHfgll{scecc^fdfi|kbrj_]fwfcoegefmyyk[JIKIGCLeffgigiikylmdxevidee{]pzxygbhh}~r[YVLLIOLhg_affgbjjizs~pinqpqqzeerr{}llmRVPOPYWUdh[m[ah`WYaijqjpmne{dezsygyr_[c~hznjhGjYXYYWQZ[egch[t]]`\\ozkmln`\cbfdcdbeebsottlf}WGQFZ\^\SZdihhg^ah}piy{{xxudWZb^^fbabfpoo_[[^azGGOOQ`\Y`[\_efe_bjnfaVUUVW__cia^]eabeel[[Z祆|civmGMROSW`^^`c`b`dl~h{`XUUYjaelkjblq`s[_`gxdPWSTR[_``bbah]d`_r~]VUUWccisgcaa[^_awwrtfQPXMU[O^^Yabdke^``opyv^UUYod~vcba__^[[]bp`dRTVWNO]Z_][lcacdwwonxusgUXUV]qrgaa[nhZgd||{}qjTRRNL\TV^]WYmcaymnnptrppeXXVVYnbe~rqpt]^ma^m{{swQKTFQSSNMURUbZsxlmxylmosomlqfYU\fndb_o|~xtlmfZyrrs}SMMIIKSNOPZV_g{zxyonloqpkqsoo}wqa^^_gr}nll`]gbkjoxw}fJKLJLJVT_YU\\d{{~onllppzmmnnlb^^nvyymddghikovtaHJJLLOPWW_`Sv{{|{{{|onhlqtonqnk^^hxtgfijlnouqgVDGILJLPS]Zal{|}}|}{{omlppsqllba``_^^v[\sfgiijmtwgiKMPEFPLLQOMOjw}~|~{{|`macrttqpaa``_^^eykYaachimnwyufOMIHVRMSXRbdUr|v~|Zc]aqrg]hhgeael^]_a^upqTnVc[Y]^kqwuml[KKISWUR]X_inyy|~hh]\i\]ededoxrulgea[VVRYZ_`fpQNgRPKKRSTU]mpor~ܫnmbZ\a\]^cdkmtyj^]\WWR\`btQQOQOSTQXU[Spor۰h\[Z[\`^]]^\`w{ykY^]]XZ^b^`\NN^OP\UU][nlpr~oZZ\_]]^\\`muxcYV~lh\s_Y]\YZZd^]LWWLP`UbcX^dqt~\\`}vboa`~rnutgvl\]ZZY_UPRMLQ_onn^Xtuqwl\\rjj|dftssut[VYYTTSTRTPaqsrmi}s{peZUa{j~~vvwxrZWTTSSYZ_]utrppntr}lZQQVge~jvvggiy}}nXWUTTV`fx~pkkslsq^TPUSmgjjgltgdqz~V\WTTVWo輲}mlmrki\STUXS_hhssstNVTZVVq˸zskzlpj{oxmgWUSSTWUWgx{VSLSTT]zzyqpeiho\un[hgURUW[V[vnxnYUMVqzuhvv`e^ZZ][YZZUZ\\[[f_w|ynW`}yh_cm__]WZW[W\c[\\[Z\_a}w㹴rv_^awwnxYXW\r`Y\\]\\fǭzuoc]ncmywYX]f`_ZY[[X\\^\lr}y廷wqigfbngfchqjcls[[Z[\^j^quxrqz|ka_iY`izlXsvneh||o\rro^qpm}yysutzýkraj`agkll_]^Xsz|loacijlvuuxt¿żqvj`giwx`x`\_W^]yuxinluvwt~⿵ĥtwblozrkzZZ]^]Zg{wyeetuuw~~ĺǙo`v~zs[ZZ^WZhhgeddbafwvoqrrʾǽý|~v{_]^]hfysy~dccmrrmprqmĶ}}]ZZ]hja`bboq{tyn}y[_[gebto_bcnf|}y~utky\\]\bbgftgl}zwxjukr}Ǿ¿Z\]`cfbcoszss~ymsthi{}`]`ngiqqv|}tjihiuzÿ`]bikjpmmvwihferxz¾\_\Y_kmmsx|uedkqwwu¾YWUV`lmmt䅄u]cfnwpvtĿZWWc\kolmpmtvfdasywzz{|v¾aWWVruomqqrtmligwyzzyz{WVVWV\oelkq}kkcg\xyysyq[VUUV\blnw|o|nl_dctotwtû¼Ľ\WW[YZskkmlqqxlfdbjrvvpyknq^][Z\[ahhjglliowd^^][eingmhhim¿fTVUSd[TYUVX[WYwirqimfignvbbcb`izz\[^]WZRRSTWgwwvwucDdZ\]i\`XTSUTVWUUuv{{}ppmur`abcdjax{}^ZYfobTVUfjuwpvtddHfg]k^eUUZYUUVVXYvy~sunnhmojoba}{q|Z\Z]VXSTU``putllOWIffb_yUfabaWTU[WZYtwxz{uupkhyxxwqa^fZXZYZZ\VVUZ`^YjprRCLBPff[ZZ^_aacbZZ[isyvpu]nikvqe|nytqh][YZWZbac^\[XXr\eihKDCABDRfZZ[^_`ca]a`a||roieeda`diqo\ZZk[__[YWVjjceXhURDB?AAL[ZZ[Y^Za]VZn`ba[qw^[nncbb`apqo}b`}{t\eZ`sks_\TBAABALZZYlp\\yUWXXZYYc~uuRtdcgydyq|rZpnsztksf[\FAA@AZZ[aabquiXZWXS[YZ]}r~~m_Ue]POWh{YWcY[YZammys`TABDBAH=EEGWTPXTWY__^sSV]aYTIHHIJTUX^WSSYRRUU^ONNMNyyۛvnU\v{rjaz>BHEINWVVUX\Y[Y]u_r[oSKHHM^W[buwz][R_cRgOQSZxz{}kXEMIJHRVWWYZZ`U]XXfxsrPIHHKXX^u}wfYTSSRNNRRTihcz}eqtyZFENCKQFUUQXY[c\VYYcdomRHHIHHIIMdYtt|ssiUTSRQQONQVcR{{~|{qyuv}XGIKMDESQVSRcZYZ\opccnkuj\ILIIQfgu~yw\UWOa[MZXppoxr~rwxnb\IGGDBRKLUTNObZYqebcfkigg[LLJINcWYzxysugfehQR`TRaooizz~{vhF@H@?CCEGONUVIinnrpr}cb]`gjfegcaSRR\myzwwuh\]_acdeqgc[L;=?C@CHJTPV`mnopnpzqqc``cdgeccXVUUSRRkyxyMNgZ^__cugi[]BDH;=HCCIGDE`kppnpsqqrR`RSfhiygfWVUUSRR[nwzx_|LTTV\_`ajmiZFDA@OJFMPJYZKgpjw{pqLTNSee[R^^\[VZaSQTUSkeeHbJVNMQQ_ekjbaRBCAKNNKUQW`dnmpr}{ZZN]RR[Z[Zen~hlb\ZUOIJFLMSTZdGD^IGCCJKLLUbddgrr`_ULPWRTUYZadkp|`QQPKKFPSVhGFGEHFKKHOLQKdbfw[MMPSWUUSWnszp{yaMQQKMRURTRDDUFGSLKRQ`_bdrcMMNPVTTUSSXcmpZPMud_QhSLQPMPPYSRBMNCGVKVWMSYcfvwsxSTTSTXtmZfWUuiflj\k`OQPPOUOEHCCHUdcbRNfgch~dTSSi``rZ\vvkhjkjOKOONNMNIJGXehg`x\niuq욐g]RLXr`ttuvvyxllgPNONNPQVTihg}gfeljsbQGHN\[t_kk\]u^unrr{ucPOONQV]ntgbbldkfTIFKJc\__\`i\Yens}MSONNOQPQfu譞}sdcdkc^PGHILJT]]h}gghuz~DNMTPQQj}ʥxnhbpcibodla[KIHGHKIK\lsvvtoLJCMNOWrxsmlff[a_hPicO][IFIKNJOjb{}}tlcOKCOhvmi\kkV\VNNPOMNNIMOONOYSk|tpmraLV}᤟pl\TXbUUTKNKOKPWNPOONOSU~|xpjsdjTSVmmdnMLKQvfTMOOPPZ{}}|{}}swutr~mslgbXSdYcpmLLR[TSNMOOLPPRP`~{{yfpkssuvvz|zhc[ZZWd]\Y_e^W`hPOONOPR^Rdituutledmntyvwq]SR]NU^pbNjjbY]qqdPffcRddaqmu{mgixgmsu|sw]dS}^UV]acbxSQSMhoqadUW^^`jiilhwtsxx}¨bh~~]T[^noVoTQTLTSojmwv^b`ijkhrvss̡sgjU`eqhapNOSTSP\qmoZ[ZZhiiskrry~ưcSizvtqhOOPTMP^^][ZYWVZkjceffy{ɪstkqTSTS^\oiosYXWbffadfeaҨwtrRNOS^`WVXXWWcdeohmbqlxⲱOTP\[WjeUXYc[pqmrih_mtѬOOQQVV\[i[`rqsnkl^i_fqNPPTXYUWbgmffqmtagh\^pqSSPTbY[cdchopgt|u^]\]in|ϬRRPPU[\[a^^hirssw]\ZZflrun򬫫NQNLQ\suv^^ektoiZY`ekkizLKIHHRru]^^fxwrhPX[cldvjhLJJUO\`^^b_ez}iZZVhnloopiTJJIdg`^cce|~ta`^\lnoommo񪬲ԫKIIJIObY^_bxyvup^_W\Qmnngmfxv񯳲PJHHIPU`akp|bxpbaTZYidikgwvwRKKPNQi_cwaaxcdx|wmb\ZYafjjcks^`c~TRQQSRX_``]`as\b{ykYTUTS]`d\d[[\`ﰩPOXIZ\^h][[WSPSY^]]WPWZWe^^ddcMMTWV\a``JZZYTUSgrtxuutTSPQJUYZcgbec[XSSTS^\RU\WW^Wac\VQPPSVXZ`_^e^[^`ixSSWOUQU_gbb]d^TTSSW\PUXYVVWW]VSQQMMVT]]o^h``pzWUOVTcSfaaik}giSTSTUcUWYWWX[\VSRPKOUT\`ufc斣YWU\OYdgfZ]hk|YhWSSU][ZXXVY\]\[\RQPW]_`cx^]]ONOxcY_`bt|jX}hVRPSTYWWV^]]\\]ShhV`bddya_]h]WacPY_^]jWeevRSPQVY\pm`a]]\h{j}bede|xizyo`_ehhmcMQUVUT_K{vZRQQPVfnYrcyڃgxrrlie_]dhmk]WTVV{k_QWVmbptevmfge`^^\a^]WXZVVUf}}mpu`hppljlolicacdd_^^_][[YVVY{mmjuóqpmnlkjjh\c^_dle`^_ZSaXVVZc}yz~ĺﰺo~mmlunn[YZ_`j^^YXW]VVnp~xy{żgrovwwqllkwnnZZ\_]]\[XZ]W]]VVZmafdgdhphopkkwjj\Z^_^]^\[`cdceV[Z`žryb`eidbege]^llkqf]kmeb^]^cmgooqlfoelbeeg]`e]fekllgjf`cmrk]`emsrlyƼ{wvnffed^`aa`]^curhadaeim|t{}tuyjntddffeb]adxgfbgeb`afjccpxsuphmllgeefc^\xgffbejb`eieccsyl]srjkdcded^^rXkfngfewoguu`_a_[hd^e_^`aljecddfeYYfslpeki|j^`^]\\^{bfchjd`]_ceaabedflcUpokmqc]\]\\TRgQR]rhdcbhdojgjnlkkmkmtvphf`cdnk^\\]\\YQPS^irrvcbggncqktrnnoorf``Y[iic\\[SRUTqrsovwuhk~~q}ypnkjn``_^^T]^\\]^\[SPT|}svfvmtt~ootqaa``^^QRU^\\^``fgrmm~qhywlntvՋ`q`d`_XQQRS\\^bbfjuvrqxs}rs{vh~txut`_[X`XQQSWR]]\djlv~ltwz}yq^fd^cqmh`^|gbVTWS\_\\_bno~x{{}p~tp`^]]`dwhqhc_WWT[\]morbpywq|~`]]`]]`_ahbhRVWWZ\[[a[_lsxkvan`]]\]\VXgbXQRRVVX\]\]Ycykki~}rlka`]]\[XUWZd`PPYXVZcZjljeljnok{wkf_]]\\ZTTUb_bc[\WZ\ff`npklmlk{qugiie]YUUTTV[Z_]a_]Y\gg`jllqmktmnns|su~lhhUWYUTTXY\[aa\^_a\fhmgmnoulmmsp|sljihiZ[WVTTUYbUba_^mddaegdmmkmipwoos}wz}bca`iYYXYdXdbX[[ibrecidgcclkmklqonptoҰ~hde[]dbhhkff^Xflnirovyz_wgknkk{w}qmml҈||~ygelmeightvurmfnpdd}|wa`]]cokk}w{n}qך{smuonrvwvwws|u|w^|trp]\\]no{|~krrq~wvnsrwwuvzuzvv|tvvrrp\a\\dvkfwxmhppwlrzycvuvstuztcu|v|swphhbb`]djivklylkkq~}~ykzqiuuy|v|uu}|tyvxwtyth`]b`swkjjglvxwdemkwiv}~rynq~drrtz{zuuxvgswvtsg]^]]tpjlkggwgin~pt{{wsz~pnnuvqhnis~|vussytyzvtwe\\`jkpoegiehgegih}b{|{qqtmov}s|nsutuur}||}w}y}svu`oglkjkjggjg^hiqimryx{x|sdduqpkkpo{wwu^rtqynvwuu{p{{wzq{ub}topc\lwvmdgdg^eem__rywy{|{{vppzmkmkmysjius|uv~~{wxqvyqxuu|yvvqzwxdighjklgkxx{}{xw|rqsn{wlutv}w~zzxxy~znhkkmq}|}{{}z{zv~qy|~wwzҰЮƮ{|y{zpokkw|~tȿɵΦ˦ikkuƠҾϵğ{ϼȮ˸¿ȼѿĽƽƾIKJJSSDUWW`USROJGJPUTTOIQTR`YY`_^HHNRPW]\]GUUTPOM_jiliiztuNNKLEQTU\_[^[SPJJKJUSKNVQQYR\^WPLJKNQRU\[Y`ZVY[box~NMMRKQMPX_ZZU\UKKJJOTHOPRPQRRXPNLLGHQNWWjYd[[iqwROJQO_N`ZYYabt^`JKJKLZLOPNOPRTTPMMKFJONVZnyx`^vx愑TSQXKU``_SU`bsP_NJJLTRROOMQUUTUULKKQVYY\qYYKJJs\QWXZksaOt_MIGJKPNNMVUUTTUM`aQZ[]]|j][ZeZS\]IPWVUaN\\mIJGHMPSecWXUUT_qasv[^]^szyj[lid\\beei^GIMMLVBqmQIGHGM\ywdPgZnwyxwwx`v~|skeda\b[Y`digXNKMMLqwxxbVHNLzz{{zw|xzwuufZvijZkb^\b\[ZX]YXOOQLLK]rrcfkW^|}}vhhedeheaZWZ[a[ZZ[XUTPMMLLMOqcct_juw~wjiffeddeaV\XW]ha\ZZUMYPMLLMPYuxusnnre{vffefepiiVTUYZeXYZTSQTNLMLLceus|lmso^ifmnojeefferjiUUWYVWUUSUUOTTMLMPvxwsuscZv_[^[`h`hiffereeWUXWWVWUUXZ[Y\MQPUr{zhr[Z^b\Z]_]UVffeezk`Wdf][VTUYc]d|desc^i^e[^^`UX]U^]dffad_Y[fjaUW[bgfbl}z~~qqh^_^^WXYYXUV[mj`Z]Y]bephsxxvn~r{{~}zxnosfip^^ZUY\p_]Y_]ZYZ_byxw|~槥vZ[gyzyrmojcgff`]]^^[VTp^]]Z]b[Y]az{{\Z[[zyyzmzsgXomdd][\]\VVjQc]f^]]og_{y{kjVUYXVc~_Y`ZY[Zfc_[]\\^]QQ]jcg\b_s}z}_TVUSSUu]a_df^[YZ\^YYZ]]_d[Mhgub{~wxaueYTSSRSMKbKLXmc^]\a\gb_cgeddfbelmgx𕂘y^\YYZb`TSSRPJJLYdmmp]\``f[iblkggiz|{}z[YYXRR__ZSSRSLLONlmmjp~pnacvviurhfcae~{{vXYXWWMUUSSTUSSLJN|wwnqa{ofll{wvyffj}}}j[[XYVWJJMUSSUWW]_jff{zwkcsqcfkvwk||~{yxZjZ]YXQKKLTSUYY]alnj|{{{kqluijqkwvtxx{~^pjnwkm[ZVR[RJKLOKTTS[acn~~zyvdloq~qymwvwu}hW][VZheaYZw`\OMPLTVSSVYefuorr~~{ugu{|tsjgYWVVW[oblb]YPOOMMRRSTdfiXgpu|zogszzq~}}utXVVXVVTWXZzb\bKOOQSRRXRVczin}}bvuy}rpv~|yzlZeXVVUTMO_ZQJKKNNPSTSTPZpbb`ts{h~zx{ccZYUUTTUTPLOR\XIIQOLPYO`b`\b`eeavz||zzyqwvnc^XUUTTQKKLYVZ[SSMPQ\[Vdgacdcaquvgvxz{}xttzvkuw^a`]VPLLKKMRQWTWVSOQ\\V`bbhcajcvddi{zy{yy{vntjktc__LNPLKKOPSRXWRSTVQ\^c]cdfkbccvifuwwyyy{tvoica`_`QRNMKKLPYLYXUUdZYV[]Zccac_fmeeismpvxxzrwZ[YW`QPPOP[O[YORR`Yi[Z_Z\XYbacabgedfj{exwxwwnoa]]SU[Y__b]]UO]ce`ifloyoTm]adaaqmsgxccbxwxx~rqspor_]de\`^_kmljd^eg[[tsnVURSYeaasxmqdsg|{{z{|plgngfjmnmnnjsmsnUwskvigRRSdeqrxtavhhgx{ztw{{xw{pogljnommrmqmmsyxkmmiigRXRRZ|mc]m}od_ffzz|ymyz}xwx`fytq\nmnllrk[lwslsjng_^XXWSZa`mcc|zocabgxt{{|~~Æquqtm^r}zsjbnnptntnltsjplnnkpj_VSXVimbab^cmom[\cavn_l~~}qrqembess}~xw]jjlsysrmmomu^ixnxlkj^STSSkf`cc_^^mm^_duvfkz~|yuonjfnqcaasr~|hjwj`falwtnmjkovjowpmkmZRRV`afe]^`[^^[[^]zsw}ssVoonddguacirzts|pxktfjzvmlmmhrqqlsosvikjVe]a``a^]`]S\]f^bgnvlnlofWWgcc^^cbnjjhRzxjkipdnnmmpfppkmcojVricdXQakjbZ^Y]SYYaSSfowklnonnicbm`^`^`lf]\hwwkslwx{ntwstpjldi{meliholijemjjY][\]^_[^llknpnkjoerdfanj_hgtiw~zy}{qsi||zytqrmmkkrlq{nb[^^`dppnpmnwmiqdloq|jjumm{nlmlw}|tcb^^jzorstrsvsrqw}gw|»½s}\^^hðſúlſ⸿칷彿羿¿½ҿƼ·򵹵ACBBLL<=><>=FnrmvwvvdcSNJLJbzwxRPYZZXV\RNQPOFGGEFIYXjnd]SKIOHA=C@C<<;=EoFwddecOIJGIXl|z¿~zsxoolnu{wrqqprpjmjiywvuÿ}omllswrqprqwp~}yxvuſĻzomqwtrpqppqtxxlo~y}yvvý۾|wxwvrqxtrwsutxww~zvwrrvxttyuvty~xxy~{|zwxuvvwsun}zuvv~ʂxwyyz}v}~wx~vuww~|zyzغzy}x|}~}xxuuzwywwz{zxww߻vwzy|rrwxww|{}}yrֺnsxwyz~{{xqqÿþІ||znloosqzyyx~|y{|rqľȷyzt|oppolyqpžĺorurtonpp|rp໶x{ou~}ll|yqsܣt~~~}xxz|wzzՓpww|||}z}{uuyzxt}rvwzp񣝤t}zyzyyzsuttwppottvwqu}uzzyywysvtwx~qljoostwxw}|¼||{xww|yyz~svv}oqlmpoowxzt|yyx|}~v|~~~{{uuswys¿~ywv|xu{wwqu{v{{{zþ¾~~yzyz{uvsskm󤠊mqrwvrosssr~»|mmitqp~n{vpqooQmmhow|~}}~v~xxstonot¶{hqo}yytsjlusm~}zyturnllq{½|yrzitu~kjsfjkkx{yyxusmljkisxrkmk{sxpiffihorwv|ttvsjjgfcl}w{wxlk{yotryyuvjfizwurqmttehhd^u`cutrykzsppouuvvxij|nv|wrlonw}`cbbcwihsknz{zzosot|nnknfelpuw{nlkle\`^^`at{}}rmtww}|ulpv~|nxundedjlemlrrxplpiidf^__rw||yxv~|rjjstsrytzjrnur|xncciwxwv~}xuxv}pjvjjprztr}yponoqluwwtthdehjetpu{vw}uxzzojjhiq~}{{uoomnooppqekvywy{txx}lniihququtoonq{tmogwvvu|wvwwtsomliiho{vpnoopt{{ztvyzsrp{yxuuzmrjipmlhihlpuzoo߂u~qrxxtusnrsr{xwvvyyqzjiihins||}oosonpmptuxxnkknnq}yyxv{mjjiihhq|~zy}z~{~~ppoppsrolpounnsffgij~z{{z~yjiih{~~zyz{}}uvyvpllnlqmjwrgcls}uiis}~}}zyyw{rlmsopkdbequ|rsknjmou~~}{zzyz{wonosxowrpqln|hi~ttoqk~~}}{pnouxwlrmjuyhkhvy|wpzzxvomhkr}|zzfqstpm}}~zzymooqwz}xkknntxx{u{lo}}z}xuy{xxutqmnnvss{wzn~y{z{{mnvxwxwxsrt{vwrllmowtuvtzv~snkmn|v{ypqqrvwqw~|}nnmvtoqoqy|rmlkjlww{|}rruv|~oqv}rttrnxorpkky{vx|ursroz{kt{ts}ppkppuyz|wvt~~~|{~~{m|ptt{u~~}}vwy}||}{{~zzz{vzr~~~~zy}~~}{{zx~~ytvrtwtwrv~}~}~}~tyvzyx~}zxwx|msgz~wuwrtv}t~~|{vvkl|wu}}upy{~}l|zf~~xtuttwoostyutu}}|ppumxsq{zegl{qso}}lkk_e~|vwtuvxttkvzx~}~~|}w}}hhqsy{ki}wqqopxxxmp}tm|xttv}||z|{xtsihnsurjjk}tnpoortpstlttussvwtwsz|{{ktrku~vhutliinmnonmkkurxlwvvuuxwsv}|kz{wtwwndeihmnjlkklkrsyrwxvvsrttz}|ndknonnjknkllx~}zvqzgdl`{vrssrstrs̉ionncdjkjknu}|xxkfgchhmo{vwrsllkmv{Ǒmjjhannkjlquz{tupljjbnisvyylkkokmy{ʭtrqnrxpjchaa^`gkgbabaaba]b_^ovvwwsrujhh}}uooqywma__esgaabgayyszt~wvxsvigg䰯}{rvorspj`_cfdbaadhj_bupvvwwxvoigf԰~}ozyqjf~shgfbahdbghkjuvvxvhff~slw|qjfgbbghefvt}mikiotuvvwxuhhi~pmi{olkgiegfieg`omjjkkttuvvzwuihi㬨o}pujkrnhpqjkrjjkkrpvvxyxtulkkզ~v|wxjjninq|orplljimklkjnpvuulkjjiߨ||ysughkjvrtz|sp{{~gfjkjjotuuvopqkfק|zwx}r~||{|cy~h~wuqkjkkrooleewvwvx}{spywpx{}}ocbdcheuvrlljh}onmoqfexwvwyxv|vmnhpx{{eeddatwxwyyutu||tuneewyx{zyztcfiwyz}}hjdcedvww{xtouo}~wgeਣyxiutqtociruqx{}|bbp{vvwpjpprvfi펒{zeovuzrssrrullnpy|{{wrhkkryxfߧiimmtvvoswqnqoiimnukvf|ytncghlv{yx|}{f롔yfntuqmlmmngihhktccbuffghcfoqwxx|zykyy{rmmklitmwwgjhklqd_\raadfhihovoxxux}yppnkjjnkjmoetjipbd_`bvaabiijmxhz|xzzxvvssuyqllkonofmoqqrv|nrnvghfvikfx}}utqssՇzslkjoirfltjkzzsdhnx{{ionywonx}}êxutsqqtm|xolmmfft}{tff^asz|{{y{{xwzxx~{}ssuqtx||}bxeehgbttvbfgvxxhuhs~̐xuvusp{x}|bb^hdcnvv}~rawzyxpkffdd~铐zwyutw}||bb]dthlnn}nuirwynniidd{ixxnyyz||Ņ}]fcrrnujkfrf]_hf`r|{spojkhcbbfqzvolf{zs{zywm\gz}vsrqzzgqp^]fY^^_{||nqoonkicb`a_}xuwufk|wue^`^mzvvsw{{wekc\YY\[bvhmlrjjli``]\Yaxxyxqujnuwqih\]wwunlbugellhi]Y\numkhgcjj[^^ZTkVYu{yxxyxzsihektvvnt\ojxyygccihtiil\^pclrmhbedmsVYXXYmvusx|tv{[[g^`purpoikiissbgchpbb_aZYafkmqdbab[SVUTVWjnont{vuxwwd`gqffopkke\`fqpblibWYX^`Ybahhnfbf__Z\TUUhmmnkjhxvvxyurrqm|rrbZZc֍hwshfzmhms^uhcj|grndZZ`mnmlpojtgjix}}um}`ZeZZabyyvnhfqmecbcev_kijgh^Z[^`[jfkm}uthk|outehkjt_ZZYbqqrwunnidccabbcavvtruusff[aknmotmvuglu{}v{skwlz{\_ZYZdyr{ytt{ieihbb`byzuzvmhbe]kllkwusokikkww~~~fex_^\YYZamzuuturrjdbbcqwshmonhinohhfrrnlliinw}^c[Zb^]YYZ^bzuyupvvzgmbbtgopeeklikjdhihwmkkiimm~clZZ[`ygopvr}z}~{{}||qbbe`bfbdfhlldaaddgplqllin^ZZeqsoorourmr{vp{mypccbcbedbbdchcch\[[]_`zplmnnrkZZosspopullrltpn~rggsmjcbcdbgc_lg]YaiswuveZZfqsrspoouyfjv|~zvv~vvgcdjffaZX[fkqe}d[^[^`issrqpooolf^]^bgtpuy~xvfmiffbdq^^sgu}vvuue_a\stssrsqw{_]_dhh}wchc`kn]a^wiulzwvwz}uttrt|ue_ijhf|ca]`uvgsqxoyn\sdfgdavzwzvrrstoon^^_^``fixoxk``cc~x}iw~uzhhkglyr{adsrrprymimokkifb\]]ebbkgky~yytcz|s{zikjjtrrqbclnmmlgfhmikb[[\^fddedkuxyyvvmthtas]`buvpsgkiyrscuu}gfhlm~~dkqnos]]\ec^`_aktxxyyxqzh`_]]_vvwxt|hgjy|sspquhhklr|vvyceitosx}xxzvacca^ixxyx{|ztbec]]lnhxz~|gxx|ro{psvkhihyy}|}dnnss|}|}roZcjdcuwvyxt|cc^bdgwxy{xtii{}sxpxt{mljttvurrtzttp|z{~}|q{{\laddxmxwwy}}z~hyyzz{ommrynzxrzlmosrrtrqspvuu{~~|{uuxxyvmmnj|~}xpg~z{ryyzmmpmmy|wposvttsqqpnww|q{yxz{{wxo}mhjfh~~ymikgivyzzrnmmlnl}wrfolponvtsqnmnvtxvrpyy~{_vdYlpkikfhjxxsiutuy|{oommk}njj]^wrmuj|wtsjdoqsxvrpv|^nkYpqttliijkmefijo{hfgqqywunllk|bbh_lxvhfpuvtoVX]mdtfcqqy|_^^RXpok{ljjlnjjav}lo|y|jonszqpmmklyxlqs[[vegmost{x\Zsnidecdll}l`cqg`o{miijl~|xt}opuyutolkkoqokhf\Zafhdw{u[[snfaccgittdzygh_hiil}}nfhezipptxkjvvn]ufd^trgqorweXed][[aabbca__ifl_jiijinmv|tdgquu{lkywus^klzwxugcff^VV[[aa_a__`_fgmekljjk}}xxhhfejtpponsptlkxyvswoq||zzuu^U\bcaa^_c_``mrsqnjfo]ZbWqlhiifeebbqpooqy~y|zx~}xxZybabWX^_^_bitwpplla\]Y__cdqlled\[[]pmoditx{}~x}zz}{{_]]\Ubb__`einsspjkfb`aXd_ilnn][[^[]npoorsgjs栝hffdjohc[_VVTU\a\WWXXZTYUUewj}jkligk_^]sqqkffiondVTTYh]WWX^Zpphowhrkjlhk`_]]䡢syqphmfjkg`VTX\ZWVVWWZ^`wUX}|idijkkmke`]]Ӡ|yrqufqpg`\ti^]\WV^ZX]vy\_^iijjmk`^^zttix|bmrg_\]WX\^Z[lira]_]chiijjkmk``aꐔttfzc_qdba]^[\\^Z\Uda^^__hhiijjnlk`_aywd~}tsfk_`gct]ee^`f^^__fdijlmljjcbbח|urkyqzmm`_c_cfqdfea`^]a_`_^bdjjca⛜ppnhkvu\]a_kghnphdoor\[__^dhjjkeggb\̙qnkm{yr{uxgrppopsVmr\slkf`^`ageec\\wtkkmrpgdmkdknqqcVUWW\Yklgaa_^tedceg]\㔊xllkknnlqjab\ckoouXXWUimmnkijrrjkd\\vtknmponniWZ]jllpq[]WVXXllmpnjekevswum]\銁|nm]kjficX]ehekmpoxUUcokklf`ffhlvwzv\_pnZdkkogg~gffeh_`acnp|qqlh_abhowxw}n\]]bbjkkdgkebeb]]\`ai`k\ppjeZ_`clqoossr\nZcjjfbabaabb\]\\_hYYXj^]^_`Z^fhnoorqoa|u~~noqgbb`a^iaml\`\_`gZVRhZZ]^`a`gmfnnlostuv{yt|nfec`__c``be\k`_gxX[UWZmZZbeq_qsoppvvkijggjtofuvaa_ccd\be{gghltveien``_obd^qvvwzysuhhefgg}oyyga`^d^h\bxk``qqj[_fossbhgrpggqux{svqjhgfeehb|plrcabb[\~z{ktrk]]UXkqttrttqpspp}wwmngghehk|ppqVlYZ]\Xy~kkmY]^m~}zy}}yyqq`m`kvẃkijjgdnlopVVR\YW}~dlwmtui|zYoqyx}~|{{rqid^^\]vrmjmiikoo{pVVQXi]bddsel`y}|iyx}}~nqfe`a\\tbwrlkdmmnpqpzqQZXvggcj`a]i]TV_]Wizt|}}rjgfbb_[ZZ^i~vmjeb]ppippolbQ\orkhgfpp^hgUT]PUUVrss}ehffeb`ZYWXVry|wrliji^bx{rmjZSUSbokkilqqm\bZSPPSRYm_dciaac`WWSSOWutvlkllgiaekxmg^^RRmmlicaXk][cc_`TPSelxdb_^ZaaRTTPJaLO}kpnmmlnh_^[`junmdjQf`nnu\YYX_^k``bSTgY{cid_Y\[diLOMNObwlkimuqjjoRR]TTfjhfe_`__hv{{whX\Y^fXXUXQOX]bdh[YXYRKNKJLL_zybedjwpkimllZV\f\\efca[RU\ew{{weWb_WMONTVPXX__e]Y]WWSUKK]azxcd``]mkkmnjhgfbrvwhhWOOPYu{{҂]li]\pc^ciTk_Yas]ie[RRWccbaed`i\_]mrqq~kcsUP[OOVXvxwnmlc][fcYWVXYjUa__\^VRSVWS`[`crji]_~vpcjiZ^``jUOOXeegkjbc^YXWVWWTjkifjji]\SXadbejckj\`ip~vqkph`nbprRTOOXnfpniip^Y^\WWTUkljmka]X\U`abalkid_^__kktssus[ZmyUSROOVaojjijgg_YVWWdjg_bed^_ee^^\ghca`]]bkt}vsrRWONVu|TROONSWojojeklo\bWWh[be[\ab_baZ^_^kb`_^^aar~zW`NNMOTn[ddjeqxo}yssqqsrrfWWV[VY]ZZ\]bbZXWZZ]{eafa`^c|}}RNNMNXdfbbfcifyathqkfqcoeWW[ZX[[Z]ZZ^RRSUV}nebbcbf|~^NNMNMNMbffebbci~abvhbjfdttg\]hc`Z[[Z^[Wb]SPV_iwzlj{jYNMMYdfeebbi{}vo\`lrttuokjrlk^[\b^]YRPR\bg[sttyXNRNQS[efddcbb|ctaz\TSTX]jfujtmrzuml^d`]]Z[hUUi]kztskjtiiXRTOffeedj~~qUSTZ^^vxwqwuuzzslY^YWadUWUm_kxvavnukjknvphffggegp~u}k[U_`]\qXVQTistxsjZfdmelcShZ[\zYVvtwj{yznknxwiddefbbaSTUTVV\_ndl`TTWWttrzko\irwhm^^a\bngpUXgffdfwmwwta]ab__][WRSS[XX`]`osmnhWmovwwufmsm~^``jyggfVW`baauuy`[Z\b]_WQQRT\ZZ[Z`jmmk`g[fQdMQRhhadZ`_ogzyhXjjq[Z\`atzxx|rrY_ecdhSSR[YTVUW`immlemZPOMMOhiijfn[Z`oryvhhgeej\\_`fyoiimuWY]idinsnnplWYYWT^mmopmgSUSMM]_Xil{ro[mnrwhepdhj_\]\zmzmqrpuqXbchhrstrshePY`ZYjlkmmx}tgnSSORUXiijoulh^_qsimemhoa`^ihjhfehnghdqoqssrfqqRbWZZmbmkkmq}t}olo[qjklnrrpdcchovcomfxo`bchgfgeegdjhiypsswrqjjmmnl}abc^xpqokbZyxplmelmoccfccpsnuyxyxedhjiiheedbkkpfpnlwvpplm|esub^_[]r}rl`\^Z]iklmdtdbcbdbtmg\yyc`deckihebabjiljgdnmspTkYN|bfa_`[^_kzkrtf\sihhlpvpedccauea`TTmhbk_rmhh^YcehmjedjvtqSb`Ofgjjb_^_^^`WX\]bo\[\fgnmjdbbasYY_Ubnl^\fxkkidLMSbYiZWdempRRGNfe`qb`_ad^^Sho^bpn|q_edipgfccabqpchjRRl\]dejjpnRPid^YYWX`_q_TVe\Weqb``_^_pnjgxryefknkjebaaghfb_]SQX]^\mqlQQhc[VXWWZ\ggVnm\]V_``^bqp`qz[]Zo_ffjwna`mleUl][Ukj^hgin[N[YSPPUUVVTQQ]Y`Vaa`dckw{pogY]|ygkkq~bapnlkUbcq}wnom^Z\\TKKPPUURTQQRRY[c\bcaarvnii[Z}[[`jffedif}jbaoomjnfh|~~strq{lkTJQVWVVRQUQRR`ghgea\eSMVJc^ZZ[YZZXXgfeegotorpotxwz{y}}tzzonOnuWVVJKPQQU\imggccWQRMRRUWd^_YYQQSfceZ_jnq}zvszz{up|usr{|sqqURRQIUTQQRW]ciif_`[WUTLWR\^aaRPPTQSdfeehj^aiuxswow|zx|vrzt}h{llg{uukkp}vuuv{|~p{khygc\abha`vxokkpprvvxuux~zqvuih]bbetooplwy{yxvvig\]]qzowxkelxxwx|}qouurkhi]]yzjrs|uqld{wz}wmpq|rusmnlžzz~n}~}{ulnlxxvz~zr~xwnopnprunwqžzvzwuvzz~~wyrprjkemwrvwy}|~spq~~{}}yyqmorrps{vz}~zy|qn{vy~~{xtyvismuqrrzrwxy}yzz|qu}x}|trz{~~~zwzuualqqsrr⋀prwsuz{tssxuwy|wzzyw~y~~}~z|{wwtwtqqv~}}uvttvsy{|}~whzz{xy}~{{~x|~ubpqorqv{~z{px~~r{z{yy~|u~}}~y{qpprwv}pyyupqoimktrtxmll~zzyyz{xuxv~tupp|z~rry{tntmhhnrkjqyoql~zxxqfvzmmu|upp{qz}rr}vvqmim}xxurkornrkkyzzwxuu{mlq|ppvy{xy{|rqqsppi{{|pzzuttskmjiipq}nix}|zurtuqyxym{uuzxx{||uvvmo{pxwyyojhjnhhjgghosxyvuurpox{{|{{~ru}motsyx~z~mhjjgghhggpy{vvurvz}p{~~|zmqnnjkjv}swhhgihggj~owvy|偈}rsoomiijhmjjigghgjzu~yxz}||؃~{mstojihhixqjjmgigihhggk}}w}|z{}~}y~|{tljzlmijghu{vu}mhmloighh_fggn~yx}iljwprpo{jjokwoxvuqt~vmkhkjknidbffggo~ztru}~~s{znwxtsptlstn{y}v{~rrszstmslgwtiecdurlgh}tmzlu~~~x{{zz{zupqxurnmoqunmnnpqzsohhlneggeabtwmghhkrmqlsx}~}~r{wy}njtxytzzuurvlqrllonnonqskkvmnkhg__w|wtjhljlmpss|}}|k}p|mourgfw~uzvyztvnllp}ootqqpnlljlgc^^nwhhkjhlpqrz{v||sqxdepnhqqsrr|vtutquu{ywnmlo|rroornllhlkngfq}~~qgiihjkll{vvwwy|ssdehgkqss낀xxmtvtuvvyto}|srttrnjnhoxqpop~ffknnlnkxwwv|yy{wlijoppqv~}usrppnktimoojmnssttomiipuppullklknnmciwvyllnsty|yviompbgiimjmmnnqutrrormlnoquuvyx~nnolornlklnnsxz{ygnllkkvkmspnnxvvsrppoowtqu{xqqoodqsllnllss킁x~hhfjkkuxtowvvuqqrrpqqppsywy{~s~}omllq|ًwphdifvwrvwwwrqrxrowtqqs{|zzmmloow~wkkcg|~xz|vrstxzzwwttsqv~{|v|plloyyzumpw~yyry}}|{wrr|~p{{ux{ktts}~~|ytx||vxu|}}|rqr~}}|}{zyxvo~zqt|}~yy|v}rrv쎏~}}w}ssonmmilt}||z}vruzv~xnrssrzxw}m~jy}myzzyussuvnrstyz|}x{uu|ilupowkky}{yyuzyrwzv|x~yxmutv}|{xsuynq{ssqrrwx}{{wz~~{qnw{vwv{uuttst~twwuvw||}{{|x~ҁsgnv~vuxu{usqqt|qqwwqrwvv~~|wx񇈄vztuutw}xt|tvvxx|vx{y|߇zxuuvtuv}vutxxwwuiruxztzxtuvr}yuz}wwx}upqmxszttČ{xvuzvxxz{ywjw{rlr{wsx{~rurvvwxw{|{|j{yyxv~~zwwڗ{~z{}΁~x{}wvvzz}xyq烂|{zx{|xy{}|ww}z~{|ttwurspxz{|x}~}xyv|{|wtuzrwu~okooy||~{xyv|}{{|p{xvyyutuvwoyy~~}{{ސwwx|||{}|w~ovvuut~~}}{~||}z|||~zxuuvxx}|||{||uvvy}zwuvvz}||}||{{|{vxqrxvzxvv{zzyz}}||z|st|{xwzqrxz~}ssv~{}~|}zxsml{}sruvxx~}}xrw{{~uikhnusrzyz~~~}ywxx{{jzw~kr|zz{{}{|}y~x~{kkmtt}{{z}zz}}y}jz|xiutrzruvhkrgkelpnlorjdpiw|zq{}[n^^Ynhxyxui^^czv|xyqn|hhijjopvvsuvwyrsgq_\o{ZVOTU[SRiuxylc^^bbuqow{|dwhgjhhkquvuuv~ne|xmkv]\PUUXywizctbbx{t}ss`gilprsrtvuuvvtlkst}~xllzw{]ZOPPt{}yz{xenbxxfgw_Y`gigp{sqttuvwyrslpqwzfdkkf^[\PPtnn_wvxvuwbcmwxf~bs_Wlhloutrrusvt{~uss|kbdepehf`a_nnvtvxdrqqprmzf|^`_jjlrqvluuvvetutrrx}}mjcceacehajdzokovumyjjnmqqilebd]^Xbjfijlpoq{vwfcdssorrnne`ceecfnimpxqyynnp|wwfdpkmqrqqnlgnl]hbheemu|ejuumnrmonqdhpkszvw}~{svsrigoorrqrqmk}olkYbeefvrysee~uehlhjopw{yfwffslhkxo~|pvmopoomsnqrrpqrmqptlmjojeejrupqzhiiilhmppy~}y|wtprk\uz{poppqnnqrooqrkqtxvwlZeedfek~oyvroyovxe}}h~vvwwrstivpoponnsqiqppr|txprhefeehl|wwktfonjxffd^bwoyyu]gehmdcbtoopmjlk~s~k~|k|fefrp~~uhh~pqkdjb]]_d]]dnfgc~tommg\locc~~~zmsk}}ffqg|puythhtmlmhgc^bqiigd^bgehabx|yoppmnkkqcbg~uyyrfflo~}rmoq|~riihiff^ppbkkffe]`tv``ghsd_nsrpkhjkgonocqkkpm{nqurwvvs~}wkm}~mcep{cjhitrtjfa_awd^^`]]^eizznolkkgfdwt~kyqqzxwv{swqqtilrzdgji|nsjptvvlztc_aa^^]eo{|qkkhkowwqdxqttws|rwovuueiff`a_jtvvtx|sim__^_^]]`{tevyllnquuwwu~zuv|uvuvvpjjgge__`^wvvrzzdaa`^^]`pjtuomprvpqtt{xz|}xywtpntdkkfb``^_muvvrwzgaad^`^_^^]]assmsqpprsruuvu||zywxxjvpnnhcbqdd`a^_xktokjrd_dce`^_^U\]]dtvsonturvuvvst{y~w^`^jcfddoaabffbmfnljfisuulca_aabe_ZX\\]]dsupihkwwturrxuvvxgonajrmhheicikeroslqthhtpijcib^nj_[YZkhb]^svjcpbkuvsrsry|wvwmpo}nnqokegnl~iecegkdccdffoie^^bd[]][WWjmc\^^ahcgbinssrrssrhqmnrc_immippkkglcghbbeddgiaalcda^]UUmrmj`^b`bcfiirsrsrsxoarfqcejh]\mstkplopjldbbfseejggfdbb`b]YTTdvxm^^a`^bfghpqlrqedjZ[fd^fgihhrljkjgkkqo}mdcberhhedgdbb^bad]\gsttg]__^`abbqllmllmeeZ[^]agiixunncjlijllvojesrhhijjhd`d^engfefyty\\addbdanmmlqmklgb_`dffl{szskihffdaj^cee`cchhijieec__^fjffkbbabaddcY_mlnwrurrbbdijouxryol_dcfW]^_b_cbccfjjghdgcbdefkkl~ontddebehuy|wxvdbabddinppxoyw]cbbaak`ubhedcmkkhgfeddeligkqnggeeZfiybbdbbihhwwnu^^\`aaktuwlhclkkjffgffiom}tuoqxysir}xsecbbgrxxŁmf^Z_\lwt{uykgkll{kffglgcliffhpuvur{{~{}pypccbeewmxtwmaaY\rzuwqlnqkghilmmkkhhgelsttqvyuq~{~}lrwfbbeouopzykdfl}~}}strmmgmpoonjeeurv~stxzxxrcquwqknqauvuzvjjs}uqomilooikń|ty{zvuskvwrssz}rwyzvvhhgtt}vuurrqpoonmkjsvvuvusibqlqbjyrst{xoor}lshighkv~}uvupprzxincdd|uvwa`^^Xbjsr~rpsx|ulhjoku{w}wx{psri^cdcck~}ukjn^nYnsx|aopooyliihtikw~|~zzvvtwwrwo^ccdxijmrnpojnedmX[ibdk^_krqonkzpoimolqmz||~vvrosz~~tih]edtfltslmicfj]dmdfdeeijpwxxqpkow|}||Āptuv}xnpttuqka^gk|vreqffleddecdxtqfigfhjppt}}|ysppq{{||}ylypvwwyoopbV]fvpsmedqrifjfcaaenbcfgbdjgit}|vtsq||{uklvwwvwwxsnsqqejrtddedflhdkcpgfngghlghlmz}|zqu|}ywwtsqvqvzzysigddeddflfedtzu{ogge\fjm|sunshz{}}|ywwvuvttnxyzzvigdeeblhdisu{yrlrgghmfbc`l}tgnghuxx|zwwswwxuxyy{|rjhedieggi{zz{{sjhgp\ime`fokglorvzzzwsvvrtwuvtxxyvspqaebeefgf{|{{|}{kwnmn]yommljwvpsrzrrwxvtxxuuzmmooinoffwp{}|~~ڈsnqno}rppwzlttvtvxxpnngjoolfeei~y{y~{}ulp{stlle}tzzuqppsqkjqxuigjo~ulghjnlkffloivmkppoghkhegy{}brqilmosstvkqs~gnlw|pqtsnmlghekjkfcooxt}hmezy~~|zwjip`\`_ojssx{q{~tkjvrlpmmizu{u}vpghekljklncqxv}nkil|{xx{kgghi`lluut{~||vlnqplkiirrs}}~qffgknklknojxqpa}utggopqovzzu}~~lpillkklt~}~}~uuxikollwrmv~|{yurigghkjqu}}{t{yvnlkkw~xv~wt{kkllphijjlp~|zzyqkhghqhnw~~w{vqkklk~x|}jjkkijeekjwzyyw|{vujhhq|~ljsighynmlkkjkefkjwihmeekm{y~uonmynlabbghprt~kmmx}olmklfa`~|jnmneehhkksryynntllgazfj|sxzzkppoi]_[}`futnofelkkxvz|oommlhfirnr}~}xZwvmyhxqizs{_}c|vutnrmkkpssllkmllklhlfmxmsqv[[\yg}}tuueppzpnnmlljrnuqjjllimnprv[itnuhYuppuggessmsscff]`g\aZbgecfhaZwg`nrqhqsRd~TTNb]nonlaVUU[qmrnohdy{{vr]]^__efmmjkmno|hj^hVTfqQMFKL{{QIH_looc\VUZZlhgn|rvzyrYk]]`^^ahllmuvd\{r{vodcmTSGLLNz{|yyqn_r[mZZqsk}w{{rhhT^`bgijikmllmmjbahiwsuoccrosTQFGGkyzsuqrsp^gZpq^_o}vuTMS_`^grjikklmnphhaeelvvq^]cb]URSGGkefVnnolkoZ[dop\utWgSLc`cflkiiljmkrukhhtyzr`Z\^h]`]WXVzffmklxmZihhgidq\vurRUSaa`cihmcllmm\jjiggmrrb`[\]Y[\_Xa[qfbelkd~o`aedhh`c[WYRRMVa]`acgfhrmn]Z[hhdfgbc\X[]]Z^e`dgohppeegsmm][gcdiihhec]daR^V_\\dksxxy[awjibbfbddf]z`gbjqmntvzurjluihb`ffiihihdbzseaaNV\\[[\lhnhZ[[sjZ\a]_centr^p]]jb_aoeusglceedjfiifhidgfjbc_d_\\[[Z_gideo]]v^`\adfouupumjfhaRkpqeegefhiffhbgimklaN\\[]Z`sbmwjveb{wmckmYtt`vkkllghi]kfeffgfih_igghqvjntdg\\Z\aqlj]fYab^lZYXRWlgppkS\Z]aXWVzieeffgb_b`rhsvt`sq_p\\hesstti[[qdf_Y^VQR~UYRRYbZ[Vzvvysiecc^SaeWWrrswrotah`rq\\g[rdimg[[haa\ZVRVexv{y__\YSW[Y\UVmpoudefcdaafWV\sjmtngvvyyu\\besrfbcdprg]]\]Y[RddW``\[[ZRUikTT[\iZVchgfa^``\dcdXf`aecxxyuqdgkhmlkhrtrl`brraWYdsoX_]_igi_tuYUSVk[UUWTTU\_ppdebb^\Ynjtaoggpmlkqhlffj^ahoZZ^]pbg_eikkaoxgXSUUTTUUTTU\fqqgcbb^bfnmgZngjjmitqtvglekkjY]ZYSUS^ikkimpg]aSTSTTUUTTXrk\mpdcfimmoomupllrjlz{{xjlke]]ZZYSRTRkllfnnXTTSTUTTUXhcllgehknijnmmrrqnoqslmukheciY^^ZUSSRSajlkgltn[TUXRTSUUTUYklekihhkknoposs~oonn_jecc\VUdWWTTRRl^hc_^gsWSXWZVSUUMTT\molgfmmkonppmnsqunVXV`Y[YYcUUYZUaYb`^Z]gii`WURUVVZVQPTTUT\lnha_boomnkklkpmnmo^gfYafb]\Z]V]_Xecgaeh\\]id]^W]WRdvaVRPQb_YUUjna[hYbmnkklkrvonodigufgvfc_YZb_r]YXZ\_YXX[d]YSSW[RSTRNOadZTUUX_Z_Yaekklml`ieek[Xaee`ee_`\autW\]XXZYXYY[^VVaYZXUSLLdidaWUYWY[]``jjklrhWj]i[]b_VUcii`e`de{`aZWX\h[Y_\\[ZWXVXTPKK[modUUXWUY]^_ghcii]]cPQ]ZV^^``ia__^\`afdsaZZX[h__[[]YWXXTYWZTS^jkk^TVVUWXYYhccdcde^^PQTUX^``pmcbX_a`abcvlfa\ih__a`a_YW[T[e^]\]pkpSSX[[Y[Xeddchdbc_WUU[\\cqkqi`^]]\[XaW[\\WZ[``aa]ZVUU\b]]bYYXYX[[ZPVdceniliiVVWWZ``dlojodaU[Y^OUWWYWZZ[\_cb``\_ZY[\^bbcufewwk[[\Y\_lps}nomXVWWZZ_fhhoepnTZZYdYmY`]\\fdea`^]\[\c`^b}he^^\\Q]`u}nVWWZXX`aaondlUUSXYYdmmod`\eedd_]^^]]`fdtklfgnpj`itovxuttsiZXWWX_iooxd]UQVTdolyslpc_cfesc^]^c^[c`]]_glmliqyquwuoxtowfoeXX\[mdokxncYYPTjqxxlmidgjb^_`cddba^_^\cjkkhzjmjduuqwquxobhm[XX[flfg~qpb\_etuuwwxwvsjvkicc^dffeda\\lhm~usghkmmudVzgkmhadhXlmlqxnbbjkvxwwxwtlhfc_bfee``bbz|{phmomirfyd|almhjjqsinpvrnn`__kkvwxuuvvrllkihgffefecb`iyzjihiif\Ub^cU`ohikqoffit~dk``__blvttutstrjljgffhom_bwvWWXvyymhhiTRQQMX`ihvtigjo~slc_bfbkuuwwsutsplqklogivtte\RWWy`tzzqof^]bQbNueinsXfgffp}caa_l`bmsrsvsvprmmjjhkkgtt|jcRVWXl^`bgecb]a\[bNQ_vWZaTUbiheea}qgg`efbgcoqppusrjjiecgnqrht{{\[QstuYYh^cheaa^Y\`SYcZ[Z[[`agnx~onhgaelqqppotwrdtgijqlbdhhie_UR[_qkh^f]]a[[Z[YZnjf\_]]^`gfk~zrrqoifefoppoqlr_mckkmccedWKRYidhd^[fg_\`[YWWZdWX]]X[`^_jsrtxwskihfspqppovi^_jkklkichgfZ^ftjvZ[[Z\b^ZaYuf\\d^]^b]^bborqyogjsspqttmkkliifkglosnni`]Z[[ZZ[a\[Zjupkqe]^]^]\Q[^aqhjch]topqqpsxmkkjkijicnootyy}pl_]Y[ZWa^Z_ikqohbh]]_c\WXU`ri\c\\illpuz{{nkkllhmmnknooqqf_]ZY_[]]_qppqqi`^^fP^bYTZc_\`cfjnnxxw{nlhklhjmkljnnokthefVZW[[\]\qrqqrsq`|xmcbcRmcxaas`^x}lkfhhphhmnljnnkk}pcced_de\\mfqsrtt}zzhcfbscv~qvfeempbjjljlnnfvdd^`eeb\[[_toqotqszyyxjaeogi``Yqhv~xoojgfeiga`gnk_]`eulb^_`dba\\be_lc`efzywsd\\_]Y[mypyurWhg_bcfjijlagit]dcntgikjdcb]^[a`a\Yeem|zzvuwviq\aYonssqo}l^^eVRVVfaiinqgqtkbanidgdeaqlsltmg^^[ab`abcWgmlvstuc`^awwqpummp`\\]]_Vbclmkruursmvdfhidcaaijkttvh\\]adaad^mgdVx~xv~wrki\\fghflqqlvtuudhaddbbckutvtvlkn_aeaaylfakrutxxp{xupokg^\\]^aahluusvwwulsrnfcbbnuuvnmumjqaae\]\[]`uuv|trpoof`]\]g]eouvxowuw{soxibbcbbxuvxwvnxrs``aa]^WX\[ij{{v}nomrqlj_]]gsuwxcbka`argdcbb`aZ[txv{}{|xva`m^]aWX]_livxy{s{kedcodbWXX\^f|jlvzywceewpuzfcdaa[VUsxr`ycbcXWZ[]]ecuumncdjbb]Wp\`zrjyxwyz{pw~ssbffe]RSPr~U[wzjjddXX^^impddccb^\]\_y{jfkuvupQonfqy`og_ogoSzr~~X|{skkjcg`^^egjaabab^b]c}pglinSSTq{[qqr~ijjZffpeccdca__^gdkfaabb`bcfh~nTblfm`Pmhhm|]\ZhvhahhX[[yzyywzyqutrqqr{sws|zyyzysoppnyuxy|zyuxumel}strwqjlonvr|ru{{pu}w|oqo̱msnr}~ltks~||sstsױx~~nntmymwjjtru{|vlrrthhrtusiipwmqusjhhtsunqhqtutnpnhhwtolplooqrzolpmhhnhxwqrkgglmnnjvmninrj|xonrr{noq~~u{yunornw}xfok{vztutnkjkfbi}ywlgftz|zllntnnljhf~wijxiheh}}y~nnnolb~tz~v}|x{qsjux|~irmjiffrqjsiw{mx}zpzrmnr|np{ynghinpkrxv||z{ztlmvojrsrfhmlxqqw~|zsqztolhljkvpkghllpvxwnoninjjtv{mkinnw|yvuxnijipjjpzpnnkkiqp|v}ryyuyxlkimmooq{npnpsoppzz}vtunjqt|ymsqvvtppuvuxpqy~zy|sslir}r}vuttq~~xuvu}~}kmoqzvvyz{||~}qoqyyrz{~{{uwsyppq}w~{z{umrnqzr{ptywvptmx~uvswwvolsxlrrqjvvrsno}nnuzrsppxwwpmmzorrsqv~yvxqnn{u}qqkx~}|tp}tl~um~}}zxss~r}kzx{z}||vy|}||x}{lmz{txv|{~}~||{vrn{{yyz{|~}}{ktonzyzxwz~}}|wrqs}~yyztw}}}wsqp{zutsx}}{xqqx}yvtuuy~~wqqсyl}popzwynnjipmpoo~{wttnogjionojlymmppslngba`aba`hggzwynkilrsppkbbccjb`eighwwzokkq||ydmbbaa_fjhhvwxxqnijnyoekdggf`ibkkifwyxyzqnyyzyzzrrulqy~zx|uy~zzzypoi|xwv~{v}zxnwry|yzwtz{w|ُwz}xykwz~|}yzz{||hillmnpv||ywjhkkmnntqypexiijmmnnortfe~~zvommnt|khh튌y~nmllmjmmgjjhhngkhrnmlmmnuyiehgfdmimynpnljmw{kyaZasijhmzh|]`cckgphjpqflrlqzced{{xx|zchbg~{yp{~sr^wf\fqnothhjhӦ}lywrqqr``f^l^j[\ihjopy{~triy^xdcceYYhjji\\b{uy~trh^bfe[YYjhjbd[crv}efpe_a_YYlmigb_brzu|]_`abjo_]a]YY_Y~n}jcdtr\rWXrp\q]y|r{__[kys{t^_Y^rzby{zzx[plt{{tw``dcl^_aryrtvsoninqxkg``ct_hnistysvWc^slhltsfgf`\\WT[oki]XWhmtnl^^`f``^[ZXpi[\j[YWYpplvqzy`r{``a_Uq|zgxmqjpokndg^hkor\d`^]ZZed]f]knalrpmdmfbcfpcepmwc[\\acw^yfljzroomnmgabje_fshg[\a`lxefjzromgdmhca]a^_jwe_\\`_ayekkwitr{bdb]b^_hj~n`_\aa{lwtnlhgka]^^d^^cncbb^^\cbyokpflkhlj]_]``ccdoac`beacbllorjgg`\cfmk`edihgcchhgibckpkjmyee]Zcowwcnzrihffcpojghgtmonp\]`bv|utk{|~hh|tkkqlmmnszn{utb`biiubt}zwklrrqnkr|ke}hci``o}}saniunljkzve]bq^az|jckadprpsi{zyfe`cvv\pn~gneeb~ffe^[uzb{g}{~r~[bba}Zeeab]^l^^]e{rja{b``goff_\\ri^yubbca|emhega]rp]kek`a[hnmlkc_lc[npex[mlligbcbmbmyxYpgeihurpolkkeilmllhmk[Zghbfdqxtusnkkmmlkfc\hhgfgi|snkonmml\e`\hfgfehqwws}~qnmmlmmlgdcdllfggbeqplnyommhecbqmiiccbw~x}hppqqrmnkiccgkhebddz|znwwuyhzzqooiccpxg{}]vwpccippfh|w~w^^_[[baccmpjfpcvzwd~]_W[Zbab^`hqypuq\\``cr[]VQQPQRR[Z[[ifhrr][Y[oac|v__ZQQSSZSRY\[[ffsjw_[[o`z|wkkhS\QQRRPX][[\efgha_YY^struh^TZSVVP[T]^\Zfhijla_kkuvngii`anrsf|^dkpmgkfjplsu{xxwihh_^Xlp}iggxvpjfqyoy|~{yypzhg]fb|ikyy}~yz{iihdl~khlyyفy~~{rp{iknjk~{y~|x_~yuilom{{z}{qrmrjllmuqxzn~yzvWYq\]_abgmmrji]zyY\\]`aafdkubX}yiZZ[_`aabeg}ssYX}tpoyvlhca``ahpa\\~ynrccbbdaexd]baa__bj[^vZfdcbddcdelo`]^^_^h{w|\`l`fedadmpcpuz[NTz{h`a_co\yzzr|zXTVU]~v\g^agg[xw`idf|sWYV~ryx{wsyqqsytW^V[{usxqgsuljXp`W`kiin]]_\ךqcqpihh|kZZ`YfXdSS_]`efzvpsvki_{qXq]]_RPP]_`^PPWo}lyoulhaW\`^TPP_^`XYOXf}lys|\\f]Y[WPPbc_]WSVfnh}qSUVWW_dURZUQPPVPsds`}vXXhg|R}gLMfdOeRmqgpVVQ`nh}os{yhSUNRfnUmontpkQebjynnxhkUUXW`RSUflfhjhbb^duel`\UTWhR[a]hhngjLYUja]aii[\ZURQPMIPd`^RML_ekycaTSU[UUSQPNe^QR_ONKMiidnipoVhqUUVUKhrq{]vwncf`ihdf]_W`bfhSYUUTQQ\ZT]UbdWckif]f_[\^g\^geoZRSTXYnVq^carkhhfgf`Z[b]W_|l``STZXdp]^}brkif`^fb]ZVZWXcp^XUUYYZwq]cdpcmlu[]\V[WWacxgYXU[[t~eplhebae[WW]WW\g\[[WXV][rhdi_eeaecVXVYY\\]}hZ\Y[^Z\[efhjb``XS[_fdY^]ba`\\aa_b[]didcfq^_TQ\hooZfria`__\ihc``_lehghSUWYnslkcrsua`tmccjdeefkqfslkYWY`akXktvw{qocdjjhfbisc\t_Y`UVesswy{~izYe`kebaasnkYQVePSour`ZbXZfhfi_ot|xmlYXRUk|wxlTwfe~s]bWyt{~XSus]][USkpvVoYotvtnqepLSSQpN\\XYTUbRRQWld\uuupSlSQQ]e]]VRRh^RkqzsgSSTQnw[d_\^WThdR^Vw{y]uStzRL[wtcdcbZVbYPaaViovQ}{{|}vttbcca]WXWaT^jioOf][^]gfueecbb[^aa``^Y^\QQ]^V[Ycjvthhxwiea`baa`__]WTR_^]\]_osfsxv{zeadca``^OXQS^\]\[^ejjtgqtifeaa``_[WVVbb]]X[vrxey|xvhdenc``\YVWgd`_YXWkvurmy{t`hiif`c_]XX]a^[XZZnqtoenolq`qr|ebb^XXfn^xvxv}qyxtw|~~|TnngYZX_ff\^pkrww~zzoyVVRZX[ZZcf`\fYknkXsuxxVWORQZXYUW^gofkfQPSTVf~SxUOIIHIJIIRQRR_\^hgROMOcUWrlWXSJIKKRJIPSRR\\i_lTOOcTormccaKUIIHOSRRS[\]]VSNNRhjgl`VKSKNNHQKTTSQ\^^_aVT__kmf`abYYfij\rTZafb]a[_e`hjonnbaaWVPcfs_]\mke`[fnxcnuqsqpphsa`U^Yqw^tsxzaoorvxvttspzzssaa_[asa]x{~ybonnvwwossurywjhq^acy_`rpwowsvqxmUtqlz^adbv~spvqprqy|xzijei`aabiemnbvtpqzmOQhSTVXY]bbg_^TzvvqpPSTTWXX\ZaujXN~ztpaRQRWWXX\^tijOOurjffuplc_ZXXWXX_^gVRRw|~yviegrutpoqopsurpswpn|uqqvrhgy~qfftonopopnpwvtttxmp~}yuttwnjg|{zyxthffsotsqsrvyytt}wurmhh}}z|xwwrmz{st{vgffggqywxtx}}~stligh|{{zvt|yvypsy~ogffwt{lv|twxvvx||{yy{ifsr~ei\fg{yyzxttuzvzoswvmffeiuefkxwwtuuzw{zxqjpyideihbijyzyz{yyv|uupsyijt}~}|vvruttw{yxzswlifhhdggz~|yz}{vuxuw~{x{{zruj`sy~{|v{lmjrhhm~{Ԕ|{z{uw§|zww}cb|}}ipsmrs|{}yyv}zxqvearjqpyxvoqpjqvsv}}tuyyqzyuxs}bb}quzx~nr|{wsvwu~|z{z{{{~yrwltuutwsr{}{yywwutyuvw~mltuwzzyxux~y|~qpqvpoprv~xx}yyȹ}sxwwqprt˜qr}xwwxyxyɝstprr蘣zyzxwvxlsrtsq픕Նyvvyq}|ssɪՄxvyyptuŦ셃Ǖtxr|{~Į|||Ü}yyxtuwyx||}~~zt~qst{||{~}z~v|~ͣ~vppwuzv{y|||tyy}ûxopjtu}ww{|}wtuy~}{{|zqirtvvv}tuwz}n|hiixxvttstvvspmmf}|}}jlwqztsttrljmgxxw~}|{ohotuttsshidec~xx~x荌|}nrmq}vtrwuuttrheecg{xyjksmstumprxwxttwxxpwejhx~}|}ljnpyyxzuqmpttvwvtofhjnwxxwwnxrvmo{z}qpnuoppsnttsuonfguxzxxvw|~xkkp}~dij|suo~uounttnonlgcpwyysqlkpphs{qq|ksommlkhv|spm|~}|{jsq{rzolmlmpmpmmllkn~}v~~}|{tsrpxqqhhioqmnmlls~|{tswzvxwonhg}oommlh뇆y|~~ztw}wttrtoprnoyxmmlj~~}zwwvuvvtuspq{mnk}|nwnmnw}}yw}~ʁvijkr}o~}}{{vxy|zyw|t|zp|tqpu{o}zuyytuu}|z|{||sqs~~{vwqmhwt}wvxyywury{}wvrp{sztghggrstpr~y}}x|{pprpop}yyyttehefegnrnyxwurr6unntpqxtr~yzutwlihgdgfnkrzqx{}{qsqnvsru~qxwtvekmhggfel}~vxwvšs~}ozv~qlo~|vtzqnnmjgfghrst~~|¨s|}zuvzw}|tqtvqngfglmspt|{||ê}|rowxvwsvruvvuynhnouzyzsxy{{ل}ntr}}xyxtqtvvw{oyx쉈sgkxxz{{Ĉnkvvwy}yuuqsvywwvwtovzwjjh}x|{{zy}~ty|}sjwuutvututwsuvwpopwxwkxtvy|{{zurtiq~muwxqusrowwsjttukiikrttmvn~vzswzy{yxurrrtvx}ttsvuuvukvttjljkllo|uruopssqpopq}u}y|rwwwvttmjqmlklkkq|vupuzus|vvrsyssr{w~v}yykpjgpqqmkpsmporzsfzy~uvx}~tqjhfhjqqnqsolorty|ۏrrms{~uzsxq}yyuhjnnqqrspi}|wuwlyoo~u~ykon|z~~kpnlqlqnumkqkpzlrlj}{}yop{y{ymtljnlvspomnmvikihjjt{||x~z}xzpwprktqmh{opokmpturvqxjom}|}tpsmkwi{{z{{|s~yy}}}~gfwzxutnnhsuljnpptuuvuvllsz{znoonkmnjlysyuwv}~~{xuuosttljllruvvokllqutwkmnmnnkjoqssq}~p~uvwyy{toxwm`]_ikjfegefik~hfizmvfdrkggx{}k~|h^\qyx{xtz|xyh^^jfeeffdg{mlj}jjncftxwsojiizylc_\rrwqonjuxxyzvzzw`^^zjfkjhih{mxoojjsvljgzwb\]\wsswwqsonnidqqijqxym_^^_ion~vnjnyvs|sth|}iw{xa^[]|{{wsrrqmjsovvlofiouf_^^nlrbmwrjlmllnrr{pooq`]hhs[_Q[[z|vqppoqokjklqvlpeimld^^]am\\a|~umllikkpmqpng`fn^Y\`^W^^zuvuppqroolvyzrxk|{k}gjp}_`ju|sswsrqkkgkjjmqonpima_]__Z^[\{qutrpqsqlknklsy|yw{xzwvolppogj`Viotqslqcdai^]c{ztrvvruxywq}ppkmuptolksYXvrsstvw|{`hjfjkvzrqs|ywzyzvoolr}li{tfttkv[Wh_gfoonwfiiajolnvuusszxy{wxu|zjjoogo|jfjspzhqx{XXsgkpovejutplopmutrpqppxuqytng{i{\dt~z}jjilihrvtrrpqnlvtunjklv~|zx{suwy]\ee|ksvwnommjl|uquvihivvtjdcey}~~vucf}vxsllqwmm|v~hlkvkedfh{Œ}ab~~vuwqlkklmzlm~{u~rghdef猗~}~xvjityxtuunmkjlt{`gufhfer~~~|rrsvvwy{{uumjjm~|dnnff}}|~sstu{{utljmm{twudg$g~zwrrsuu{{yyyvvhkcmkoxvyvyqxoorsnjjief{vu{vh}|wyzn~zxt|looq|oo}kenx{y|spsbdennvop|zzwrqssnqjoqoz{wxw|rfaahglhnozxyvqqtpimns{y闀p~|yyxx}i`a\ghpkknzrrmjkos|rpp历~~wz~|z{yy~zvvxx˂|qc[dgix~}{llrjknyyqtdy~yx}wyy{x}wyyoZ[[jyznljjkjjmmifcd\y~{oqzנyxxzxpvyx}po\^jxyygqjjhb`c^jjqpwznwy|{{z}oubZatv~~kljj^_[[ↄpkjjkrw|j{zyqrbuvhc}gswljinkljjki_[[Z^nsukt{|kz||}xabixy{cijkcfhnnokkmoogn[a_srlrsrzwno|}caego}␓~onpkgcfjjkmymmje\^_djlkkt|`pimefrqthh}|}|zdkeffjdjjlee\]jmmykkjkpvtpisv\]]gtu\`btjvlgv}xz}}{kekdjkdedb]Yfyyzyzjtqjuzjued^`gg~`j{~qhi||xz{rxwaieccba]uxy~xvqhqoftgcx}sxxttsqx|ua|}igqhypebcbcfcfccbbad}{{yztqytslyyzzxvttyusrrjihfngg^^_egcdcbbi}||}w}|wuw{{}uvtxwwrqv{}jimplnmed^]sxeeccb^v|vvyw~sy|oqttw}zvuwwpjmsmjjhjefhdeoynccb`v|~vwrrqnllyz}vz{wwxwwlklljkvifgqcdas~rdmdcdm||xusqrqnlxzstx{xxwxwwyxxwyuwu~xl_`ahsew{tv~srqqppkmorpomwwvry}|jxwr~~pgrkgfkyzvtmucuuvtywyrpkyoojkkwxsrpr~|{zx}qwqshgh{zvwxtu~mijda\kit{slknoomkioxvwps|v~}}zvvwlkgfphv||{vw}}ymg\]\\ghiehwuuyzzwtosxsnz{{ooeegdcdrmn~yx}nijZ\Z[Z\d~hexxuonmz~zz~zfdeehachdflhzwgsnojjla^]\Y]]dbviu{qhoyuqsqdfd`hxhgj}usfmlilZ`c]]\][bstlvxz{oo~lv{uvfupman}kread|tvuwqliofddb_]\]^zuy{||~}|zzwhijtt|{{~{|xr}dqpqpjlp~musqigjlgd]]^bciuw{{}~~vxyfjw|}yrqrr|}q{srhd|ymnlmilhkllkod^dekwz{{}}xxpopino|qqxyzwrtcjissnonjgjllmqyeonv}z}}~i]an}|npqqp{~~z|ydbllmosokkgilommlmjelpvzx|~m``^xsnxrqqorst|hnrsjamkkjlkjkjmiklmfefnn|z}}yman~|wjlorqqupkil}^fs{dkm|ngkwihemmiajjkb_`bijj{cldt~zlpimqpqonljkijlnzsjjilkkllbljjacabber{zkhkffiihhghwwgr{ksorhym{mnww{lkkdagcbabaafq~xlkfkyqkjztmmijo}}iihqmtmtqpbha^ghgdaficf~vxehzx~zrk\oo}}tkln{xsxtwkia_]_ahhegieb}~fijuor{wwjhcg~{qtkpioy||htwppl_aeehhghif_v~~tusnkmbpeewuj~tytuwoaedwxr{ruubugecgbgdkca~~}}zhbgqchb`sx~tyuuts|uqsoefzzxroqyvpdjb`dblifecdc}}vv{ym`a_^``krrntpx{|wxtuzsnpfmfxxhaifb\qeedacfjkhlgn`ectsztyukfjdam`rrprqritonu}vwrwvwyysst]\mpmihbc]gi``cdefikklklbbipqzzqeeacd`boiokml~vsv{{vuuwvtuupmijdgihh`^aahklleabbgkjnxwbcededa`egiigszwv~bwzzphikmmohclk`TPR]_^ZY[YZ~]uvts_r][_pbk\Zha]]nrtyats^TR~wc|tmkolhnplm\QQ^ZYYZZXZn{ua`^sq^^cW[imlie`__quyobZVRdchxtdba]illmnjnnkSQQm]Y^^[]\ouuvt`slcc__gy~jzza`]pmXSSieejicea`a\Wde]^elmaRQQR\wcb~ssrjb_bmkgqgh]rws^mrnWTRTonnjedccq_]fcjj`cZ]chZRQQb_eVsav}|kf^`a``bffoeccfUR^]iQUHQRooidbbca^]^_dj`dY]a`WQQPT`OOUpr{~zita``]__daedb\U[cTOQUTNUUniicbcebc_jmnfl_po_q[]cqRT^ipghlgff`_[_^^aecbd^bWURTTPSRSpdihfcdgfswutu`_vbs_`gnpvmvwlolnkkd`ddc[^TJ]cwhegsagXZV^TSYonhfkjkgjmntlevqdsd_a}}idic``gMLjfgghjlpqV]_[_`kohfiq~nmnnok|ccs`sfpz`]piZhi_jOK\S[Zccbk[\^V^c`ckkjiipnoqmmjpn~^^cc[cnvtuu^Z^ge~vox\fmouLLg[_dcjZ^hhc`cdakjgfgffgnnjfnittb[snutw]toQYh~|{rnyuq^^]`]]fsiheecdb^kijc_`amtrom|ogzhklttvtsQQYZ}}p`gjkbcaa^`pieyhi|[Z[iig^XWYossw}}}zuzxh{gxwwzW[}}uqjlg``ekaa}oipZ__j_XWZ\{xpy{}}뀊{xpqxVWss~~k|ike`__`an`as~}ngqexZ[WYY{}}瀋~~srpwopkj_^i|mlhiiba_^`ho|yT{YhuxY[ZX{{}}|}||exrxq~pnhhikjkmooiia^^arp|Y}ycbXZzooz|}||uz{sophhijoo|ih`^aa|p}hmjV[|}|}||[}r}tnmhhj|oommt}}v|oxnxyq{w|y|yj\`Xbadvnlvoyj}m}e~}tmxggjkwwc__[\trxlwjql]rqkmw}n~sb{{~romhyyrbggis{|~xq{ees`[doqorifiWYZcckc{ydpnn{zjfdggbgagi}{yxz~pseornnrh\VV]\a]c}ycnlmjddhf_eekro~xxyxrq`~trsppnnlsq^VWQ[]e__bwwnffa]^afnefggfzzzyyz{wrqqzknurp|wnnrp{mmlkllupfXPY[]lrrwos``f^^`kkwdhYvowxxuxxyrpqsmlvvq{llmnkqkllruucOPP_nn}~ssb`^]]\\^^[ZXYQpwsoadz}ky}uv~yylkkmkaimkprrcuudQS^lwn{ztxmZc\\WUYSsr\\[cbhkzbk{|~y|rslokknnpsrrsbiWOVi~ju{sszqp]]\\RUPPywb\\dip_ponxzy~}{z|zvuttsrr|{efVij\Wq[gk`^\`^]\\[SPPOS}_dg\emm|`uoqr{rv||wz{ziQSZttull~~~toW]^_WZ\a`a]]_`aZaQVUvvdd\declice~rs|uy}wwxzwTRVW`rrpr~rcbd_[WZ^^]_k__\YQTUYw[\\[\fn~xxUxxwzwbZ^VXdcg\\qtpqpnX_YZZ]X]]\]XYQR_bv^i\\[[bh~he{^hkuRR[giOQTf\i`[ip~lmzqqos~_Y_X^^XYWVQM[mmwvkjk[f}x{e_jo_kZYST[\qS]nsqe\\ootkmoflytkU^YWWVTQilnyyxyq}mkf]fd[h[WylpfllhhgeloiToq][e\mdYVWVWZWZWWVVUXqoyyxy|ttwovoon{henhgaummnnlkhhmigfsvf^]\Zb[[RRSY[WXWVV]qpxxztzwtlmgvu~|}xqpkjkpoqijhlkkfejoq^]ad`baYXRQgzlYYWWVRjvpx||stteehgr|y{gmpcehhkqnjikkd^aga^^\^YZ\XYcmbWWVTsuztts||{fslsqpx}jkffec``mnsqjnokklkk`_``^_j]Z[eWXU}grwfXaXWXapt{zt||vlyrsiw}}|isgefeb`lnghlollklkkmllkmikirl`STU\gYkyyqsuxkxdqfq{{rsgfeedd_acfecbkkjfmx{q{p^lkzfrrd[f_[Z_vm|{trttvjfod]fWyiijhmkmfd_mcc^__kjgfdfv{urpotnzlqekeg\[\onjklhhux}{you^Y[WTP_]hof__bcca^\bjiiegpjsrqqu{ynkjka_[ZcZjoonjlxssotorvj_XOPP[\\XYiuirgkqlljicglgbus~}nopdcXXZWVVdtbbpskqjora]]NPNONPxXyzpYswyV|kykicbanrn|{ntrn[YZZ\UU[VpX|`\ltjZfaa^^_URQPMQQXUh[gmtyauX_ir~}i}egey{tvY[YT\lrqq[Z^phrfY`_]_MTWQQPQPVgg_hjmqqsj_^prv`zjoijs|}~[kebTao^dWTWohiijd_]bZXXVSQPQRnhlnoottplljkj\\^hh{pooqoo|kfz~s|Wcacc]_ydrahge]Z^`[XQQRVW]hjoorstsohsjlsZ^{ktvp{qmsfeffp|zqdnfe[Xpmab`a]`\_``_cXRXY_jnnorrumledetz]bc~~p}yeelnxvwvokehV^]w|ggbcb^[^``ayemYcbirorrut_SWdurpz{bdeeddedpttvoqovXV``acgc__[]`caa`a^Y`djnlqutcVUTmutyxgblfeedccfghq^cgh^Ua__^`_^_^a]_`aZY[ccqosstpdVdt|~yxpl^`cfeehd_\_rvU]ipW_aqb[_l]\Yaa]U^^_VTVX_`aqYd[jvysoae^adcecb_]]xvvy\^`coi^_^a`_`aVa^^UXVXYYX\j{poy_\_YY]][[Z[kj\guo`ieh]odrbdllqa``YV^ZYYXWWX^iztz}|xmy``Y_lc_]le``\]wess__xgdjckgfyX^WT^^_[X\_Y\~tu~}rwjlzX[mruipld]Obuesskacerojnkna_XUSUW__[]_[Xs~y{quX[^ibfmiiwv\ZVZqnhw{jbf`fpss_kmgfbVX\\^_^^_\Umyzxqqfhe`^`UcYXigzr]vrhpklnfX\[noir|hklYl^[Y^Y]ZaYWoonrolwXS\cV[USfkqhmt{hihgslhjf\]qqoighp|mg[aYWZXb_\[YZXupnnggmk_RRQTS^effchelopkkhiuz~qjeg]d]oo_Xa]YTyh\\XY\`a^b]dV[Wfdjeif\Y[UTaSffdeeg]hcbjqjjgykjkppjjkTSdgea`ZZT_`XWZ\\]`aababXX^cekjpbXXTXYVXd_d`ba{ztkijoojillmlkklgdab[_``XVXX_abbZWW\_^^kjTVYXYZWU[]_`\j}~~owkjplialkjspqrrwukioX`eanptqop{Ž̽hge``jpqqvyvsYXXcX_ahppoşɶ½hgf``hnqqrr{xe^]dfX[Zhnkmlxevwhff`__dhpqrkeghesh_[]Z_Zamkncaennxttutnke\]]Z_oqh`ard|yzpeetr]dYUYVemfgf`bmnnsszmm_[ZZ\qrl_`paby|yyseijhfS\UWZUXda^abmnprssr~faahpiaZZgsno_mdcr||stgeelh_UVUWZ\aa`X`jnqprsskrcrc`^`ff|sui{om\ZZ]r~nxpf|~}}yhqhhfg`]UZZa`Zihogdphqjbb_ahp_[]_^d}~{}qerqr^Zdcgrtsnjjmp|tsj}kpjpf[VZxb`a``aahc^`]fbcaaWZZ[Z^^n{fdjqevrslffdplkkjjdn``ojijmopqsdy_]]aZh\XX^Z[\V^_`]TTWY[[`o_pddibvwutmsnqtkjjxozupotutrstllkif]WRYZSWUZ^]XVST[[UmkkecYkhtxsqqmnolrjjywonllwxuqsvqqskqgWVQQYQPTVSRXQMQVTWbnpggYV^ut{mrsovxsttuw}cdtwvvp|kYQPMOZMRVSRQPRSS[\hWgU^bgwwzvutu|xs~~|bs~v|sfo||{x}v\[RNMNNPVVSRRSWW^_c]\Whr~qtyyrrtzvwj|}~}||qmorvovpwtp_g{OQQPSTRRSQSOTWVYX\_gc~v{ypptsr}}wtvtousr{|hgNUSTSSVTRQRSYZcllcgtzz|~xyzpvtyy||~vnngoqmgsouxvwvbzhSf_gZPSSOWlflkf]wyywux}{wzywvyxy}poobacggހprwwsxz|mQRTOONejj[RTzxxy{x~yyomihgd`iuvom{TSUTTWbZ`SPQyyzz{~~yqhc`alfiv}qoluq~yQZ]NT[VSPMM~hi[s|rdfpxymungoVS`SRNNtj[[`ppavws}prqp~nzw}~rbbcXWPP\``[b}qiijemvsi`~pspjkkx|}|jVRTQz|{|r[`[[wxy~~skpj}w{uppqorn~ojswwmnpXUVOz{nsspv[[\axul~|nnuvvqknop~nyqano~XZSThjxs`clzrnnub[\`fgghnp}lzz}}koqchb_^jd~~dYSQgecqs|diihlhuu~}gt}omnnlkfiebc`e`abfj\VTRfo|adeepv{|jiilqqvlh~}nnlproqt}fkzhgklooamkgfTRdgxidelps{wmnx|r~|~wqjhqooqrcbkhhdgnijsr}ljf_Wnzwb`qmvwkjl~r|~~{syvtqppscbkhpfmjr\^~}jh^Wwtmpvqnorv}smjnrxt~{||xxrqqxmtosgjz[W[WW}mYVrqw{wmnrz}sv~~|x}yywvuqorvqr[WVWWlUporzyvsrzt{yu~|{xuusqvrswX\bW`}zV{rpwwzx}}y{~|wwvuvvptsfb`c~VVUgo~eeqqvyz~zyyvywvv|u{~ywvxwvvfcgj`j{VUU"Vmndq}}|{zyyzz}{|wu||xyywtziddi`g[[V^f|{yvy{y{wz{z~wvvzy}~sndnohtr_b^o}vzvvuyqvvyxxvz{uy~yx{udmwssoxx}rrqstxu{xzuu}||yxuvzq|z}suyyrqqwrry~wvux{|~w}yrqwsryzzrlqrwwruy}zv|xy}kl}|~{vvs~|tuzjkny{rqpryuu~rry|}{z\^|~qmrnjjnwuljv}|kno|wtv|`[|qwxmonmmlkjjx{zqkutvpqfnmz^bssx_[Xuttqonollkjjm}}zyvhgyꛪp_``rh_\~Nnttrrlmllmkltqwu}{jx_``_g]_Ztnnqllmnllorvw{ttgeag``|vog{Zwtmvrqmttrqkmmsq|wx~|xwtwailhdqzqururtusmpmllwyz|}gaagjjui||~}opoztuqloprput~ka`ajjhim}~vzz{wzplmopo~~jhohilonv{s|zt{{zyxsnnstzysriiqmhihpps|||{zqp~}|{wv{xjlrnnkqmohoivy{||{tr{|}}|}{|}{qutuqpnolpv~}tpyz|}}߄vrqmminniokljt]oou||}Àzsvpnjibjfvqnpt|{||}}りurnn⇅e]]di|vutst|}~}}}zrvxpjkhhpic]]usryqx~}}wxsyr{{ȧtX~zmmlltwypzx~noXzwvxmwt~~oyq~mxz}~~yps~yuzz~vx~~{|{{{yuzss}}wsus~|z~z{wbT~|{}zyzuvx}}x|rppnqsu|~~~Reb_Vba`hefghl~ldbhRY]Wefjdbbk\\ZVV`effgfloxnkRQQ[QVW_ccbs{w][[VV^dffggyrp\VU[]ORP^b_bakuZik][[VUUZ^efg`[]}^\k_VSTPUPXb`cYX\cclhgijs{b_YRSSPUef^VWhZxropg\\kjU[PLPM\b\]\WZbcchhiioy}aaUQPPRghaUVfWXorooi\`a_]JTLNQMP[XUXYbcfghiitwsvw}\XX^||wg^VPP]ideUcZYhrrij^\\c_WLMMORTYYXPXadfehiijduuh[iZWUW\]r{kkaredRPPShtdnf\rtsso^h__]^XUMQRRYYXXRa`h`]faib\[XX_gXTTVU\wxuwi]jijTPZY]hjid``cufrji`tbhbh^SNRpYXYXXYY`^XZX_]][[PSTSTRUUgu`]ek]njjc\\Zfbaa``ZdVVe`_aeghik\qWwTUYR`URRXTVWPXYZWNNQSSXhXj]]c[nolkbiydgwja``nwepkfeklkjklcdb`^VPLSTMQPUXWSPMOTTOgcd^]Realojgfbcebhw``omedbbmnlhkmiikbwh_PNIJTKJNQMMSLHLPNP[hkaaROWlkrubghdkmijjkmsYZwyjnmmh}rvcQIIFHTFLPNLLKLMMTTbPaNWZ_nn{pkjhiqlhtswtrXiwtmrj]esrrotmTSKGFFGJQQMLLMMPOPWX\VTP`fv{}sfinngginlm`vxrswvtssrgceilflfnkygV]rGIKJNOLLMLMGMPNQPUW_Zrqt|}skoneeiihsvzuzxwxvusmjlvjfljvxhqur__GPNOMLONJIJKQPZccZ^glrmpvrlnnejinnrxrxvzwvutldd]egd^j|eknzylmmZtcMaYaTIKKGOc]cb]Tjkljhlqoknnlknnosx{{feeXWY^]^vvfhnmintv}fJKLGGF\aaRIKsmkllmmoslwswox{xwoec_^]ZV`k}mec~zyxtMKNLKNYQWJGH}llnnorvsyv~vuvtx}}og^YVWc\_lsgeckguxzzyxqJRTFLRMJGDD~rzvvu^_QhrhZ\fnyyoczyvxyle^fMJWJIEExj_QQUx{yzwffWlmivsfhggtdqwxxnttyyx{xiYYZONGG{xQVUQWxy{v}sg__`[cli_Vtfif`aaxynss醅zaMJKI~}qttjzQUQQmmottiaf`smqkffgehdteu`imncdePLNHqtfx~kkhglQPPQWnk}~zbtrddkllgadeft{{enfUbct|"uPQKN`bpl\^d|wrkfelXPQV\]]^efwvwsbppssaegu|W\VSR^Xss\QLJ`xx~a^i~kvrZ__^b^w{kkts]j}secddba|[ut^ZVWUYTUVZ{`SNLL^gt]]^_hn~~~qr`__byywwgglb^tsddbfhegjr[`o\[_`ccUwc`]\ML[^p`]]cijv~qmcdnrhtrtmg`^geeghXW`]]X[b]^gft|{rb`\WPdupm][fdmnzvvaaxbtwhrttqivoljgffhXW_]dZ|a^fQRurr`^VPlkdflebcfjszic`d{hnjtxqrruwnnhggncjcg[^n{PLPLL{{scRPyy{fdkomcdhpsilttrosoomlkgehwl}ggz~zPLKLLxeNxyycce~vqolihqjqpktuurrnkkiglh{hkMQWLUzsuxrNxzsoecivvinmwrso|wxqusmnlkllfjj]YVZtLLK]fz{xxwu\^{{yyzcciuylmvttpoomomllskqtonlnmll\Y]`V`qKK"Lef{yyx||\zyy~y|c~pquvzqwzqpooppsrsnksrnowomjp_[Z_W^vRRLT^xyz~vxuzzyvrqy|oloqzoqmpq~ptmllpostidZde^iyhUXUg|{|}vxs|{|{knjulkoglloznnlpqkuyotonqy{zzl[dtlvx}~z~z|y~~{}hgcnnwshhgijnkxqnpkksrrvwwzwzwxwonjkzyogrp|tu|xshjovxuohggmhhotmlkoqrtmuyxwxvywvyyrnhgmi}w~}g|oppuvhbfhmmgkosplsnosabsvrwwuwvwwytpklis|qvklw}p`adoqhffhnkk|twhhovvyxzssrwxzvvwxzpUWy|~vqthxzvd~ie``dmkb`lsradfrmjlxyyxyx{vsYSqgmncfdccb``nqpgakjmgg]dc}zxzvwvpTYuiujoXT}Pjjihfefccb``cvssxupoyum_^nyw}vyxwyy|xgVWWi^WUuGcijhhcdccabjgmksxxr`zwxwsyytymzwVWWV^UXywRiccgccdebbehlmqx}yx~||rrwx}zjjx][X]WXsmg\pSljclhgdjjhgaccigrmn{}tsnn|}|}uzil~W_b^Zx{zgpgkhkhjkicfcbbmop|~sx|xx{sx{x]WW]``k]pv|vrxtsefepjkgbefhf|kj}~~{wsz}zaWVW``^_cystlppqmpfbcefev{tt|}~~|tuuwwvwu~`^e^_bedmrirpjqqponiddij}~~un{s~uutkee__gc^_^ffjr|urrqphftrqpll}xo|~ti^_fddagce^d_ujlq~~{wrrqjgqqrrqrw~~pyopmdgh{jgfd}ebfukyyxttkfooqrry~zv|uq{stifebc_|z{|dd_e``kWszfgkqqrtyysrvxyzwyyxusoglf}d`_X_[y}miu|wy}egjqqru|vusuw}{wvu|{kh}dd}{[SSZ^pvmmky{w|jjxrrsrrqryxvvuzy{xqpzglnf`a^^f_YSS{lksvt{~iogmsttrrz||uxvvtuxxuwwy}mniohqqylRqsyz{wtotcc|}}{||ywvwyxxwvzvjxmofpntde}Rutyo||tklmvcusy~~}zwoqyrvvwxmjxwtteogwy}|}vuvy{vwtbmutwoqrrmd|}zfwoylioo{{}}tlww|puuv|~puxvqpsoomitmeetno{wjgihz{t}rpx|tpvq~w~~~l[Ouwyvy|w|urooqnmniiknn}sjnfddgik|vu|rttuztL\XVNYXW`]^__aq|s`ZY^IQUN\]aXWW^TSRNNW]]^]aclzc`IHHSIMNVWWgojzTRRMMV\]]^^nuzgeRMMSUGIGUXUXW`iQvt_aTRRMLLQU\^^UOQs{zqTRaWNKMGLGOYVYPOSZZb^]^_hpxYVQIKJJGL]]TJK]Nlfcd[SRbaMSGDGCSYSTSOQZZ^_em|y{ytoz}zpXXLHGGI^_XJK[KLcfcc^RWXVUBKBEHCFROMPQZZ\]^__ikzgijpRMMSo|xmhZTMGGT_YZIXOM\ff]^SSRYVMBCCEIJPPHPY[]\^_^`Zji\Q`OLKLQRfn__Uf[YIGGJ\h~XcZPfhggcR]TTSSMJCGIHPPOKYX^WR\W_YRROOW_PLJKJRmnkm^R^]^JGPNR\^]YUTWiZf^]ThV[V[RHCGdPNPPQPXSLOKTRSQQIMMLKIKK]lVT[`Ra^^XQQOZVVT&NXJJYTSUXZ[\^PeKttlKLPHWJFFLGILGNOPNIIKLJJN_O`TTYQbc`_V]mX[k^VTTbkYd_ZY_`_]^_~ttwZZYUSJB@FGAFGLONKJHIMMI^[[VTJ[Z_c^[ZVWYV\kUTcaYXVVab`[^a\\^wYk]RB@==F@@DHFHKGCFKGKV_bXYJGP^^ehV[\X_a]^^_agMNkmt^ba`a[qxdviVC==;>J=FIIGGFGGFNOZKYGPSY``nc_^\]e`\hgkhfL]{kh`f^QYredc`xug`FF?=<=?DKKHFGGIKQRUPNIYYinpgZ]bb[[]b`aTjlfgkjhggf[WY[_W]W^\kt]IUi>ADDIIFFGGH@FJILJOQYTfehwpqg_cbYY]^^hkojolkljiga^`j]W][xxuim^gliWV?JIJFFHHDBCFJKU^^UYZafbdjf`bbZ_^cdgmgnkoljii`XXQXYUP[vmZ_dpocdcRj[FXPWJBDC@H^X^]XN^``^]`ec_bb``ddeinquvupZYYLKMPPhvxj[]bdv^dtuhjp[ACE??W\\MDEhb``aacgalhmenqomzvwudYWSRQNJR^woy`ZXvvupkjigCCFDDHTLREBBsaavbbcfjgnltmlmkowz{xvsrc[RMJKVOR`zg[ZW_[hssikkiid@HL?FLHDA??txuwf{{ozlnlVWI`uy{ywzsvf\NPZbmmtvbXosurujgiks_[U]GEREC??yvnwaWIINpsxynnkZZK`as]jh[]\[hWdjji_efjjomxaRSTIHAA{{p|~}yozJNNJPqqrlrg[SSTOWa^TKi[^[UUkaeedxxkvz|{ZFCEBxttrfiij`u{rINIIefguih]UZTgaf`\[\Z]YiYhT\``UVXwytz{|IFG@zfi[msaa^]cIIJOfbuvoWifsXX_`a\VZ[\ippWbZIVWfyznt{lIJCEVXfaQSYqmha\[bOIIMRRSUZ[kjvkgVdeihV[]jqLPJGFRLgy|z|}jTICAUmmsVS_s{xzajwwugPTTWSlo__hgQ^rhZYZZXWrPkiRNJKIMHIJNox{zUJFDCS\iRRSS]dzssrrffUTTWmmkk[[`VRhgZZX\^[]`hPUcQOSTWWIkzutzXVRRDCQTeURRX_^wkru{|yxeaXYyzstbf\hfha\UT][[]^MLURQMOVQR[ZhsxqogWVROHZjeaQPYWab{mtzsiiTTlVhk\fhhe^jdb`]\\^MLTQXOpURZEFivfzzgVTLHa_XZ`XTVX]fuy}}xl\VSWo\b^hleggjldd^]]dX_X\PRboD@D@@psvyphXJHmmpsvYV{]a|}t`VX[df]`hhfbfcdab`][^mbs\[nsnE@?@A@tvtl\HmmlxWVWzp|hyx{cb_\\d]db^ghifeb_`_]`^p]{xw`AELAJohxuyilgHkngcYV\ih\``idfscsnjjdywyhfaa_a`[__QMJNh@@?@R[ooklkiTVoonmmVW\hl_`hgrwgdcc`c``f^ehca`ba`a``QMQTJTf??@Y[pmmlomtUnmmrmqWqrdegjneknedccddfefbatyffbckca_dSOOSKRjFF@IRmnosihuzykmnmrxzujyfempcabeocgbfgxreha``dchh^XNWXR\l\IMI[ppomqfhzhqopo{_b^i__c[``vxdoddbfgajndhcbenonn`OWf_xxsikrrkoprikhsroq}s\\Xbbkg\\[^_c`mgefaahhjkknknklkca]^kjxusaYebqbcorvkgjst\^scjlic\\[a]]eicbadggibimlkzxxukhkhhkjd`ZZ_[mrlrqyvuu[p|cddij\V[\bb]`eiebhdehUVgjf}zyxkihihhkeb^^\emhky}u^`kqdTUXce\[[]c``wqil]\dsjjmlnz{ggfiikggiknbIKlmoqkfh\lniXq]YTTXa_VT`ggUXZfa_`mmm}|sujjiligNxuzKf[abWYXWWVUTTb{|fd[V`^`ZZNWVnlqslnkkgcILh]i^dMIwymI]^^s[YYZWWVTTWjggmiccmi`sqPP`jhngjjilm{zplZJJK]RKJixAV^^\\WWVWWUV^[a_glluerQlhhgcjieltzb}nkJKJJRJMmjuI\WXW[WWVXYVVY\`aelqtkjommccginwuzwo__mQOLQJMga[OctK_^W`\[W^^\[UWW][faboqi{xe`_nomnekp~yzt^`urKSVRNmooruyZd[_\_\^_]WZWVVacdpy{zrsrejnhhokr~zglolQKKQTT`PchmqkflvhgYZYd^_[VYZ\Zp_z^vqrrqmickmpjuvyzxxttUKJKTTRSWjt|gvh`ddeadZVWYZYjoiuipqrrneqeegihjg~rTRZRSVY}~~Xae]fd^eedcb]XX]^qtvvxtrrg_ldnx|gg]YYy{tSS[WRSRYw~~Z]foiffed\Zhfed``uuvvtwvpjamop}gt\QSZ{{XXU[WYRXSi\^u{~~|drrokffe^[eeffefkzvwvrrdlaapv`W[\p|_u[ZXqYVYi^uu{~mlvx|lhh_Ycceffmsntjpshcnd}vvg\YYVWSpnopXXSXSTSuvx^Ltg|wnYZ_eefhnnhgkmsylmikkkhgb[|`ZqXuTSLSOlozw_\iojmqYZs^eefjqvkjhklvpsrsmjihoo_{{\xqXXqoPHGNRbh}x`_^lokpy{]^wlffgffefmmxkkpwppwsvrsskedn[`ubZTURRZtsSNGGo|s{|u^]fjhor}ss\cs[aghhffnppjmkljlnn{tsxikkmqab]c\eexz~m{zu}^FefmnokhchVVspqquwpsronlnpno|~kjnj^ltacZdbhX~vY}ttnFhhmcpph_`ajWisxgwmrxtsqnfhqimmwmb_lkhhywYc[kmwqqwsrnjhimojkhVaiikceffaXqsp\nyf~pyd`eeppqqzyhw`kk}qydiihjprdiw}mkddgcca]ib\[kfwgsnb_`^ooirzfdlphdjervkrs~~s`vOEijmjlpylpifdcebab^^affukbg^[[Z]_`q|jivpfhvshuinwufAôǾͻʲ¯ͺ»Ưìμǹп˶ļͫ}bqe|mia\iϚvwywxsx]Vvqx{lba[`[ddab[[ehϗrlTluh\dsh]VPWPQOTVTsdourvy{ljjinu_ZZ[__c[[\c_oncXyoQRSSPee[Z[dbZQPPSPQOUQXi`]eglkpm^ehn\TYY[[_cc_Z[\[fheRVWclZaSXXRNOO^c[ZZc[PSPSTTPWWajgh^cdahW]\^R[[NU]Y^_YWZZcgZLLRVXXRZXXRSN\bb[ZZ[ePPTSTTQX^Za``]bS\UWX\dRXQXLQX[_\Z[ZWggbXOSTQXXWNWW\\TV`c`]ZZ_[VPSTUTY^__ch^\XTUZWWUY\UXZMOQTNRT_`hhdYbSMOSSXXY[]W\^XX^cdd]`cidiaUR[]e``ig]]USS_WTbdbQXVTT[RZRTQYeYZYLU__PTWXZbd]\_X_f^eeddellhhkUmf`adchefUYVZS^XWcbbOZeU]_Scbm`ihZ^P\[lbZXZaa_`jZdd_]bfllhmme`aggef^RT^ffXefbY\caURUb^\fhhZV`\jme\[\cb\b_`_lckk_]nmnmllnmpqhghgf]a]a_[_T\ZZe]ec[XRVWVW_tfUULOjhyfa^^jXYc_lldccedrnmormmlknooifd[W\]XUTV_V][TYf_]VWWsfriec_gmmemz\hh]VWcc\[degmmonsqrslmgjcZd\VXXbZakXRRUTY\YWXWXWhseiRkpypilxk^^ZRQTV[Zecdrcnjknx{kkqc`^[VYUU^fZnnXXSTRRUXYXXWXX_qjS`S{vtpVfk|]XRQQRPPUedcjkpbmiwidjfcae`PQVWYYgVYT\YTTWUX\ZXXbdjkm`ojfvvnfxbZUPQQSPVdd_hj^bageh`aafeaaNQTUVWai[TWYTT\]efg]X[d`cinkoflskfWT`ZQQPRUPPRS]d[X^^[[]`\YffageNMRUUVWWXUU]VXsf\YZabecediifabiZSfX\XQQPPRQOTY][[Z`Y\ZddcbNUURVUWRRYTTSWV][aqjceehg[\aec\XY_]XXTSVQORNX[[Z[ZZXRZXb\]eTVRSPSVUUSSQRRSSUTUW]iibdadf\WWORNOY_VWWXWSRPU[^[[ZZSYVWYY[[QWSTUUXUUVSSRSVWWbU`\`_aYULROMOOTVQWYYQPP\_ZYZZYUSXXTQOVSZZVSUWVUYRSRRTUUVVW\LSV^_[TLLPOUVVXXUUOPQXXWYXUXYSUTURQQU[SRVSVUUXWRSRRUUVTVVTQQRVTRNLLKNPPOXWTPQQSTSVUUTSURRXPQJKRVRRWVZUUQPVVRRUVTPTYTWTTPQPMLLKLQSRSVXWURQQWTOMXQTSRRQOLYRLJUSWWTXXWWSNPRQQRJXVTLIYRTVUQRNSLLILPPQPWUSOWQPPGGNVXTURSINLIJJTSRRTVWVQTVTPQNOKUWUJYTYTTPUTMOPLKJNSQQTVPOQYODCCMQ^^UTUHMJMJJTRRSTS[]XQQPTXLHL\XUQSWWYYQRTTLMLMPOTMSUURPOTMFDQQOLNQ^UUSNNKKJJRPQSTRTTRNPQWcdgL[X`[YT\ZQQSPIHJPLKOLVUQONRQMLIMNONQJ\UTPNKMHNMPQPPQMPPXPLSdff]Z[bQWPRWTONNMGJGKJLKKURPQPQSHGFOLMMJJSSOQQNJNONSQQPPSLOQQdee\Z[UXQWXXSPPQLKGKJKKOOURPPRGFGGLMMKINRXSRPWNMNSRQQMOPPNQNNKTV`[[YXVYVWWMQQRQPLGHKKJOPOPPSSHJGHLPWLLR]]ZUUWXOPQPNOPKNQNNOONJXYV[QSWXTQOMNNQQNLNOKOKKORSPRPKIHJHMNLMPZVV]UQSTUTULLONWMOPPQKTVWUQMYSWNMMKMOSRNNOKOOPQSSRMQWOQMMLMSSY[iWURWQVdQLVWMMOKHMIMPQRSTYQQS[MMNLJLQXNNOQPOQRRSSRg^WQMLKMOQ^lZZUQUXPPZXVNPJINLLQSQSSTTOQTSMMNKLNNOQOPPTS^S\d][OPKJKLTZcZYUQTUWiOLXSOGQQJQMMSQRSPTUVTYOONWNNONNOONPPQT]]bnbYWOJJMZ]YXVZRSXXMMLMNROPQUNRTRSVSTSWUVYTUQQVNNOPOOPRRQR^Ye\\OVQJMSTXTXRTSRXXMLLMMLULSLLQXTQUTTVUU[ZTTRSJVPMLNMOQQSRWZ\^_ZYNRLMOLKNQQSSPSRXSMMNQPNORPXTUZYWUUYTZYXXPHJLNMOSRQNPQK]\\TMMNKJKJPQPTTOSPOXPLMOMONKSPTTNWYXXVTUUY\[TTKNSPNQNPPLOUY[PYMMPRJJMOOPRQOLLQPPMKIJJKUTWZZYZZWURU\\TZNONQRQPPNNJLPPQJS[PMMNWPKLNPPSTKMMGNOMMLMJJOVWXWYZXXUQPPU[\ckdfhUSPMLPLMHJSJJLNLMMTQW[\^^WPPONINLMMLKKLORRWWYYXUQRONONR^iYXR]SQMIKMNRYVMLKHHKMMNO[\]^]\OOKMLKLWNNLJJQRJWZZWWTXSNPONNOIIPONLLKMNNQOKLK]QJGMLLJ[^\]OUPPLKLKVTNKLKLPJPOOUWNNSPLRQQOFQOPKJOMLJNMLWLLHJNGFGILPTQWULQOSPSONI]QNLKNNKKMOQQGRLOWPQSg^Q\I^QMCGLILPRPLNRTKIHIIHEPVZTSVVQPMKRPJIjPNKLNNLKKPQQPNITPUeXORSNSZZHPDELNMPYRPLLSINFFHEFHWZ[[ZWVLPQOOJJrQLMKMNPNPQOQMHLKSVk`SLPPQGGCFCCNM^UMOWVFFEGFUNTVW\UQQMMLNMJrOLPOOPPQLIPQQdYYSMMPR\^ABCCDHJMNTYZYPTLRRNRLMMTVWUPMMQMOOKKHWSPPOPPQHNUQTKLUQPSKORVTEDHJPQRWWORUXTTQRRSMLPQKSR^XKKPOMQPRSSOPOPOOPPHOILRJKPHPRIIJJOZMDHJPVH\^PTQTTRRPSPLLKJIIJLILPRROPSRNPONNOPPJPPVMGHPOROIMJJNVTJEFIEWSRPMPOKLRRSPSMLLOJIIMLKNKLQPLZLLNONNPPQPTOVSKLOIORHHOQHJUUJJEJHHSRLPWDEDKPRROKLLJIHIIKKNOMONNZPOLLMNMTX\]SMLLKPSPHFHGHHGJGKDHFIJRLPOPJEMNQNKLLIJJIJLIJLPSdRMLKHMUUYeOKNMMKUVXRGHJHQGIEKBKNOKLQKOQQLLHNLLKKLKNNJHJKNVWNLXKLHEDITTceYMLKMfUZZRIJKKFJEFGFHJMOSIYTIQQMHHNJLLHNILKHKIKRTOPKSQHJIJDGXe_ONLLRWcMNZZMDLGHOKFFDJHHFMHHQRNPSGNQKJNLNNHHGGOQSS\VMMGKIGJJVad^TTROOXXUNMEEDCCFHJIKTDLHUE``FGIJQXUJKMKUNNKIGJJSS\ThSEHJHHJKKVNZWRRNPQPeUJEFDCICHLHHLIDGIGTMRWKRXXMNKMDKKLJIJGJMM]pmQKJKKIHIJJNLRROOSQPRWPPMMKBPLJLHDDGGIJKFR\KNLLOCMJMOJMOJHH[fnnRLNNKMKJJIMMNOPRSQWSU[NPMGBCAKJQIJHGGFEPPEHMKRKFLKMJHLPRRZcejloް輩ᄑ՞zxyspx{zztvWg\pc_XS_uvw|wjkmklgkSL|kfn|qudzwWWPVR[[WYRR\^}uϋhbLtuaj^SZh^ULGMGGFyJLJj\flimprcab_elVPPQVV[RRS[Wge[QofJJKJG\\SRTZZRHGGJGHFKGOaYV]^dcheX^afUMOORRVZZVQSS_b_KOO\dTY~LRQJFFW]TSS\SGKGKKHOOYc`aY\][bQWUVLTTHMUPUWQOQQ\aTFFLOSTTRKSRRQJLGU]]TSST^HGKJKKHQWQZZV[MUPRSU^LRLRGKQTWTRSQP`a`[RHMNLSTSQGQQWWMOZ][WSSYTOGKKLKRWXV\`XWQNOTRRPSVORTGIKNHLNXY``]R[MGIMMSSTUXQWYRRY^__WZ]b^c[NITV_ZZa_UVMKLYRN\^[KRPNNVLSLMJR^SSRENXYKNQSU\]WWYRZ`W``__`febaeMf`Y[]]`^^MROSLWRP\[[IS^OVXL\[fYaaSWJUTd\VTU\ZZXY[dR\]XV\_deeaef_ZZ`a_]]_VIMV__Q^_[SU\YNKNZVU^_`SPYTbe^VWW][UZZYd\dcXVgeffeefehh``aa^UYUYWSVLTRR^V^\TPJNONOWk^NNEHb`p]ZWWbPQ[Xdc\[[]\jfefjeedbeff`_[SNTTOLKNWMUSKQ_VUNNj^j`][V^dd]dqT`_TMNZZSS[]^eefekiikdd^bZQ[TMOOYQXbOIJILKPSPNONOO_k]aJbgpg`cnvbUUQIHKMRQ\Z[iZfbceorbbhZWURMPLLU]QeeOOKKIILNPOONOOWjbKXLtnlhN]brTOIHHIGGL\[Z`bgYd`n`[a]ZX\WGHNNPP^MPKSPKKNLOSQOOZ\cdfYic_onf]oXQLGHHJGM[[V_aUYX^\_WXX]\XXEHKMMNX`RKNPKKST\]^TOR\Y]chei_fkc^NKWQHHGILGGIJTZRNUTQQSWSP]]X^\EDJMLMMPNNOLLTMOj]SPRYZ^\^^cc_ZZaRK\NROHHGGIHEJPSQRQQWPSQ[[ZYELMLKKONOJJQLKJNMTRYic]^^baTUZ^\TPQVSOOKJMHEIEOQQPQQPOIQOYST\LNLLIMOONLLJKJJLKLNTbb\]Z^`UPOGIEFPVMMNOMJHGLRUQQPIPMNPPRRKPLNNORONOLLJMNNOZMYUZYYQNCJGDFFJMHMPPHGGFSUPPLJOOKHFMLSTONOQQOSKLJJKLLMMNTCKOWXSLCCGFLLOLFGGOONPOLOOJLKLIHHLOTMMQNPPQPRRKKJJLLMKMMKIHINKIECCDCCBEGGFONKGHHJKJMLLKJLIIOGHABLQMMRQVQPMJQPJJIILMKGKPKNKKGHGDCCBCHJIJMONLIHHNKFDOHKJIIHFCPICAOMRRNTTSSOHKKIJIAOMKC@PIKNLHIEJCC@CGGHGNLJFNHGG>>EMOKLIJ@EC@AANMLMPQSRLOQOJJFFBLNLAPKPKKGLKDFGCBAEJHHKMGFHPF;::DHUULKL?DADAAMLLMOOWXTLLKNPC?CSOLHJNNPPHIKKCDCDGFKDJLLIGFKD=;HHFCEHULLJEEBBAALJLMOMOOMHJKR[\^CROWRPKSQHHJG@?AGCBFCMLHFEIHDC@DEFEHASLKGEBD?EDJKJJLHKLSKFN[]^]TQRYHNGINKFEED>A>BACBBLIGHGHJ?>=FCDDAAJJFHHEAEFEMKKJJKKNGILLK[\\SQRLOHNOOJGGHCB>BABBFFLIGGI>=>>CDDB@EIOJIGNEDEJKJKKHJKKILHGCLNWRRPOMPMNNDHHIHGC>?BBAFGFGGJJ?A>?CGNCCITTQLLNOFGKJHJJFILIIJIGCPQMRHJNOKHFDEEHHECEFBFBBFIJGIGB@?A?DECDGQMMTLHJKLKOGFIIQHJKKJKKCLMNLHDPJNEDDBDFJIEEFBFFGHJJIDHNFHDDCDJJPR`NLINHM\KGQQHHJFCGBGHIJJKPHHJRDDECACHOEEFHGFHIIJJI^UNHDCBDFHUcQQLHLOJJSRPIKEDIFFIKIJJKKFHKJDDEBCEEFHFGGKJUJS[TRFGBABCKQZQPLHKLN`IGRNJBLLDKFFKIJJGKLMKPFFENEEFEEFFEGGHKTTYeYPNFAADQTPOMQIJOOGGFGHMJKLPHKMJKMJKJNLMPKLHHMEEFGFFGIIHIUP\SSFMHADJKOKOIKJIOOGFFGGPGNGGKQLIMKKMLLRQKKIJAMGDCEDFHHJINQSUWQPEICDFCBEHHJJGJIOLFGGILKIJMKRMNQPNLLPKQPOOG?ACEDFJIHEGHCTTSSKDDEBBAGHGKKGJHFPIFFJHJIFMKNMGOPOONKLLPTRKLLCCEEKGEHEGGCFLQRHPDDHIBADFFHIIGEEKIIFGFDEEFONQRQPQQNMKLUUTLSHGEIJIHHEFBDHGIDLSHDDEOHBDEGGKLCGFBHIFGGHEEJPQRQRQPPONLKLPSU\f`aaMKGEDGDE@BLEEGHDDELIOSTUUNHIHGCIHFFEFFGJMLQQRRQNJLJIKKNZcTSLWLIFACEGKSOHGFDCEDEHGSSTUTSHHEHFFHPHHFEELMERTTQPNPMIKKMEDELIGDEDEEIHEFFYNEBGHFCSUSTGMIIJGFHGPNHFGFGKEKJJPQIJJINKHMMNNLBNKKEDHEEBGDEQFGDFKDCCEHJLIOMEKHNJOKKFWKHFFIIFFHJLMBNHKSKMOd[NZG[NI@AFCDHJHEGMOGEDFFEBKPRLKNNJIFGNNHHbJIEGIIGFFKLLIDPLQaULOOMRXWEK??FGEHRKIFHOEKCCEBCCPRSSRPOEJKLLIHiKFGEHIKIKLKLIDHGORg\PIMMPEE?B>>=GGEWOFHQRABCBDCOHMOPSNJIFFILLHiIFKJJKKLGEKMM`VUOKKMQ\^>>BEFLSSJOIOOKOHHMOPNHFEIFIKIIDQMKKJKKLCJQMPGHRMMPINPTSA?BDJKJOOHLORPPNOOPHGJJDKKWQDEJJINMPNNJKKJKDJEHNFFLDLOHGHINXJ?CCJOAVXINLOPOOLOLGGFCCBBCFCGKNOLMNMIKKIJJKKFLLRIBDKKNLFKHHLTQFBCC>PNLJGKJGIOOPLOHGGIDBCGEEHGINMJTHHIJIIKKNLOKQOGGKDKNEELPEGRSGG@FCCNMFKR@A?GMNOKGGECBCCEEHJILLTKJGHIJIQTXYOIGGHGKNKCBEDFEDGDHADADELFJJKE@HJMJGGCDDBDFBEJMO]MIHGEIQRVbKGIHHFPQSMBCFFMDFBH>GJKGGKFJLLGGCJHGFGGFHHDBDDHQRJHRGHEAAFQQ_bUHGGHaPUUMEFGGCGBCDCEFJKODTNDLMHCCIEGGHCHDGEBECEKMIJFMKEGFFADUb[KIGGMR^HIVVIAICELHCCAGDDBHCCLMIKNBILFEIGIIBBAAIJLLUOHIDGFDGGS^`ZOOMJJSSPJIAA@CEGFHP@HDQ@[[ABDELSPEFHFPIHEC@CBLLTM`MBEGEEGHHSKVSMMIKLK`PEACA?F@EIEDHE@BEBOHMRFMSSHIFH?FFGDCC@BEETgeKGGHFEFGGKIMMKJNLKMRLLIIH?MIGIE@@BBDEFAMWFIGGJ>HEHJEGICAAS^eeLHJKHJHGGFJJKMNLRNPWJLID?@>HGNEECBBA@KK@CHFMGAHFHEBEIKKQ[\aceݠ꯰lixj~wpteb{jzokjfssy|gJrZPbVSLGRo~}~~|ghjzoj]]_]^[`LEqww^Y`ncqshXl{hJICIEOOKMFFQR|ozg|zzw[V@fhT]QFMZQIC@FAA@oCEB]RY_\aceXVVSX`ICCDJJOGFFGOL[YOFcw|}Ywuur??@?;OOGFGNMF@?AC@B@D@HVOLRSXX\ZNSV\KBBEJNOJFGGTWUAEEQuXKNspAHF?;::JQGGPG?C@DDAGGQXUVOQRQXHMKKBJJ>BJDILFDEEFRRVJ<@AD>BDNNVVSIRC=?DCJJLOHMOHHOSSKNQWSXPFBLNUPQQ[XMNDBCOHERTQAHFDDLBJBCAHSIIHYWgTQNO[IJSO\[TSRTTb^]_b\\[Z\]]WURKFLLFCBDNCKJBHUMKDFFEaUaWSRMU[[ZT\iLXXMGGSRLJSTX]]_^c`ab[[UYQHULEFFPHOYF@AADCGJGFFVaTXAY]g_WZgo[NNJCBEGKJUTUbT_[[^gjZZ_QNLIGHDDLTH\\GFBBAAEFHFGFFNcZBPDled`FW[lMICBBCAAEVUU[]`S^YgYTXUQOSNBADEGGUDGBKHCCGEHJIGGSU\]_Qa\Xgf_WiSKFAABBDAGUUQZ[PRRXTWOOTO?BDDEOWIBFHCCLLUVWLHJURV]b^aX^e]YHDRLBBACFAACEOUNJQPMKMOKHTUOVT?>BDCCFEEFEDMFHdWMIJRTXVXX\\XST[LEXJNIBBACCAFKOMNNLLKPGKHSSQQ?EEDAAEDFABIDDHGNLSc\VXX[ZNNSYWOKLROJKFEIBAD@JNNMNMLKJIDIGPKKSEFDB@CEEDBDCCDGFGIO\\UWTXZOJJBD@BLRIIJJIEDBGMQNNMLLKDIEGHHJKCGDDEHEDFDEDCCDEGIIJTGSPTSTLH>EB@BBFICIKKCBBOQMMLKJFCHGDB@FDJJFDFGGFJDDCCFGGHHIN>EIQRMF>>?BBHHJGABCKKJLKHJJEEBEFKDDGDGFGFJIDEDDGGHFHHFCCDHFD@>>?>>=ACBAJIFBCCEFEIGHHFDFCCJBC<>=>CFDEHJJGDCCIFA?JCFEDDCA>KD>;KDFIGCD@E>>;>BBCBIGEAICBB99@HJFGDE;@>;<<;EEDDGJLJDGIFCCAA=GIG=<@ECCFHBACKA655?CPPGFG:?:>NJGCEIIKKCDFF>?>?BAF?EGGDBAF?86CCA>@CPGGE@@==<;EDEGIGIIGBEEKVWY>MJRMKFNLCCEB;:=A>HGCA@DC?>;?@A@C==GDBCBCE:98A>??<=9=<==AAGDBBD9899>??=;@DJEDBI@?@EFEFFCFGGDHDC>HIRMMKJHKHII?CCDCB>9:==BI>>DOOLGGIJABFECEEBEHEEFEC>KLHMCEIJFCA?@@CC@>@A=A==ADEBDB=;:<:?@>?BLHHOGCEFGFIBBDEMDFGGFGF?HHIGC?KEI@??=?AED@@A=AABCEED?CIAC??>?EEKM[IGDICHUFBLLDCFB?C>BCDEEFKCCEM??@><>CJ@@ACBACDDEEDYPIC?>=?ACP^LLGCGJEFOMLEFA@EBBEGDEEFFACFE??@=>@@ACABBFEPENVOMAB=<=>FLULKGCFGIYDCMJE>HH@GBBFDEEBFGHFKAA@I@@A@@AA@BBCFOOT`TKIA<@?ACCEDILNPQLK@D>?A>=@CCEEBEDJFACCDHGEFIFMHILKIGGKFLKJJB:<>@?AEDC@BC>OONNF??@===@@FB@C@BB>AGLMCK??BD=FNB??@JC=?@BBFG>A@B>?;=F>>@B??@FDINOPPIBCBB=CA@@ABEHFJJLKJFBCA@ACFS]NMFQFD@;=?BEMIAA@>@??GH@KMMJIFID?ABBCD>>?ECA??>@@DC?@@RG?NPNOBHCCDA@AAHFA?@@AF?DDIJ@??DA?CDEFD;GDD?>B@?=A??K@@=@D=<=?BDGDIH?EBHDHED?NDA??CC@@BCEE9E>@HABDZQEP?TGB9;?=?CEC@AGIA>=??>;DJMFFHIDC@AGGAAXCB>@CCA@@EEC@;EAFVJBEFDJQP>E89@A@BLEC@AH>D<<>;<=JMMLJI?DEFEBA^D@@>BCECDECE@:==8;77A@QIABKK;<<;=HDCGAEHMK:9<>DEEIJBFILJIGHHIBADD>FEQK??DDCGFIEGDEEDEDI;PRCHFHIHHEHEAA?==>@=AFHHEGDDCEDCDDEE?DDJ@9;CCEC>B@@DMJ?;<=8KHFDAEDABHHIEHAAC>=>A@@CACHGDIAACDCCEEGEICJG??BAKL@@:?==HG@EL9:9AFHHE@AA?>=>>@@CDDFFEICB@BBCCJMQRGBAA?DGE=;=<>>=@=A:>;>?F@DDE?:BDGD@AA=??=?A=@DGIRDA@@>CJKO[D@BB@IJLG<F=?;A8ADDAAE@DFFAA=CAA@@A@BBC?>=>?BKMDBG>@=::?JJX[NBA@BZINNF>?@@<@;<=<>@CEH>NH>FGB==C?AA=B>A@=@=?FGDE@A@=??:=N[UECAAGLWBCOPC:B<>EA<<:@>>@=@?=@@LWYTIIGDDMMJDC;::99<>@?AJ:B=J:UU;<>?FMJ?@B@JCB?=:=>@AALDOLGGCEFEZJ?;<:9?9>B>=B>:==:?@@DBGGDDHFEGLEEBBA8FB@B>9:<<>?@;GQ@CAAD8B?BD>@B=::LW^]B@CDACA@@?CCEGHFLHJQCEB=897A@G??=<<;:EE:=B@GA;B@B>;>ADDJSTZ\^©箦¬z|{xqknz~efa|o~xyu{wwdjhY`wzmicfwz}xymdc]]`dkhpkkonla``TT`\}~YXYS\Xfaanwflb`evx{}nrqqlln]orYne\^Z^\]\k^^Xad`WWjTSS[STUXxTWXUWTUVYSggdan``YVeffhbhgndWX[XYdUhZRUVX[\\[U[VS_[XVU\RY^\S^XaSWWZWVXYTXbfc_Z\`YT^biihhgh_]]f^X_RXWWYTYYZ[[UUOS\QVUWMJJU[RZW`YWXWYYUUbbakcX^Y`_V\hiihgc]_d]VZWQRVYYZXUUPSROQWQXZUQNMOIZVU`^^]]XUUWXa]_d]\Z\cYggiih`baTT[SSPQTZYUTROOPOOQUU\VMNNLM]aUaoe_ddeTeca^`c_cW^aX_iihibha[YaVUUTRSSVYSQOONY]V[XZYXRZUVXltsfqrf[kiof^klfbilh^hiihidZZUST[STTRXYZqTNRPQO]\TiYZ[XTYUVY[kmuwftllttojpnllgj_]`cihiiljed[TWVTT[[STaif_YYUUS\[TS[e^aYRUU\^_lroskmnuuwurdlc_c^Za`fjkbak__\UTWTT[VS_`bYk`YYUVTRRW_ZXUWUNWZeogotmvr||wusphml^ZZ\eodmph__\\^\U[VSST`]]`XVTQPPSTTRROQTVWY[ag^ormomsus`_eeb][YYZZ]_i_l\^\[\\[YXSRSSa^\^ZW]XWOSORRQPTTV`^^a`^^jfejjiffi^aa[Xm[\\Ssc\^\\Z[TUZOOSS\QUWWXWTYQPQSOQQRTTUUY[\\a\_ck][ea_echc_^x_XbZ[[g[]^]_\[XZVQPOORMOQPPSUONKKNRNRPRRTTUY\[^`d^cg][c_cdcfaW[WWYYZXW]]^_YWO\ZLONNOQPPMNNUJKMRSQSTUUTWd`ggb`m\ga]\b^_\`VUVTRXUYXXVVXV]STVVNOJLONOOPPRPOPPTQNMSRRSTUUefdcfieeg^gdbc^^]VUUXPPQRQUWWVVTPOVPNQDRPQTPPQQPUWOSRT]VUWVUj_`_`a^c][XZ\[]][XURNONOLMQUWUUSNJISRGGPPWUQPPSUXQVVOY[fiYUYZZYY`\^b[X]ZWVV[[\ZZUTNMNMKMNUVWTTPNXRHGPd[ZURPVUTPY[e^Zhi`^abZY`[ZYVVWXVWVXZZ[ZVXWUQPMLKLLMSLT[]]aL]]JIb`\\VRYUZU[[Z]fjcic[W`fh^TXTVTV[VUUVVZXVWUUWSNKLLKKLLOO^_bio]^Mofee]\]^Y\][WXWW_`^[aa`hbbSVSSUU[\VWVRQSQTTXPOMKLKKOKTZ^degd\gssmee^_^^`_[XXU\YZYYhgge`LSQRSUVWYUUOLRQPQMTOKKJSXXddhuj^^hrjjbe_^_^^b^WZ[ZXYY\a^^c`KKLTUUROPMQRUUTKJMMYZ[`np{xj^pki\cf]_`\b`_bc\[ZYZYY^_e_cJJPPUURTTMMIRMLHHLUTRMNMSTZ[duvsxvklfhf[h`]Z[[bbed]^YYZ[achidJJKSPMSQMNQINSIGJMWb^WW\]ZYovutssppfagjjh[ZY\bb_`af[\YYZ[\bfgadJJLMMNUSTSQPgi_^[ilb_gvuqvthcqjp]\jecd_`]aa]bZ\\g[YZ[cgcbJJNMMNQTTQbk{vggxqqblwwyxumjbsda_egfgb^``b`Z^Z]`ehvuoNLJNOQMMNPU]fhx}zvqurwwy~rlcodb_[\dbZ^`abacbbaeb_flvsgQTOMUOMMOQWefwyzytxuwuzfeac_[\\ZXZY`abdbafglimgq{rTSPMNZOMMOQQ]rtwz~~{vsr{t|sid`c][[\[]]Y_bdbcdellmopyqUTRQWUOMOMNQQptzuuvoss|ss|plf[_[[\Y][_a^baccbelmnns||WVVSVRONMNMN_suu{~utstsy~vtrlrsnca^\]\]d_^`abbc\nmmnnyUVTUSRPONNLPdn{uwwvtwxyzvyqssmkji`X]]`^^icc^e^XdamrvutwXVUUTOONNMTfusuu}}vv{xtvuuv}zkiab_[]]\^deeda^_Wfstssx|~}VTUUPONNMNOhjxok||~zvrstuztmgdb_^]^^dakljtstsstx|}~VVTSPOONLONVjwku~v{{}ytw|~~tzii^__^^`acb`dkbcqtvssvt}VQRTROMOPPRpum|pv~}x}{|zphw~}{``_^^_^]^^\\_\^hjluvswsvRTURRPNMOORnqk{st}}~~xxlqmpxwuna_^^_]__\[`^e^klkuxxw{QQUUNPRNPUQpmrdkxsz}{yu|\toqwwcb`^^]\\]a`a\^_eujwwx}HRPPQNNORUnoohddmsyz{~~caaluttkday^^]\]^\\]d_arrklnsrvyTMTMNNMOQ__kebcfkyxwx|~z{`lrsstdoma_^bU]]\\]aalttsxytvNQPXRNUVU[`hgrdkpr~tyx|wuuxeswzjlj`ma\Y[\P[[`alpjogqyMLKKRTVTWVlliuqgrryuvusyxstdtnhha^PZZ\VV[a_beghjm~KRSNRVTUYdl||pr}usv{|{tzstxsng{zgk\bV[^\\Q]cgbegionwxJIIJN[WYh|~na_\nux}||zvtvjiswzwvhZ_^X]bZdcac^^rrtxMKLIOU^\^aa_^\`]uv~}||}||{uwklwxz}{mh_cX]bZ\j[^bnrtsuJLLMJ]\]lacb]\^cr|}||{zeqxpyyz}rmd]Yeccefcje_qrrtMLLM\UW\i\[f]aa^}||mgenxytxbh]\Y[d^\cjbkjnqqtuӠHHKHIWmdj_a_d``asx}{trfhsxvuhrad^__\][eeflnqsvv{KOHR]^hZX[Z``nxzxiryvz|ocdcf\][\\]kjjrtt{{~{NOXO]eYi^b`jleejvyn{|}q`_dg]`[\\ahijjsnnOPNTU\^db^monnsws}|pda__]ed[def`djjlnt|NNPS[VSd^innkooquww|vr{|qpo^__\`gdeedhjjlmt{LVUnZWVRQjajknnqrqvrhrz~`bV]^_acecipljkqnyZoccXWWTRQQVknmll}ejhiv{~qcb^Y[baabfhtnruxx{cbbddVWRQQRZlmihhyzigfgvv~rlkc]]caa^`fftuut}s~}pcfd]XWVQRVckihhffegis}lnf]ac_`^ab^deormnppoglmf]YZXT]hgfihhm|pfeffq~{hhfja`^_^]a`hhppxspooqsg_[bWefhiihimz{}ronffmz|{seiic`^^]`_ciosoop~opruurnibgemljnlilu}pokmoz{tnklfj^]]^ejmotonqqtϝ}{vwyuuz{yx~zrrstuutmsnurnf`c{vnz{qt\[Vnbpqprqlmhmlwn]a`uuOWy~vnqd}z^Y\mx|yypqy|zx{lmb[ZTTSVZ_]c_`cbaX[[PPZVtpqONQOVR^ZZvgm_dYW\lnqrfjhgcefVgiRsud\UWSVTT`WVQXZWPP`POOWOPRVkKNONQOPQTNaa^[fYWRQ^__c]cbf^RRURS]O_SMPPQTTSOTPNVSRPOWNTYXPYVYINOTQQSSOS\a^ZUVYROX]ccZXXaYSYLRQPSORSTSSOOKNUMPORIGGQWOVUXRPRRTTPP\\f^SXTYZQVbccb^WY_XPTQKLPRRTROPKMMJLQKRTOMJJLFVRRXVYWWSPPRS\X[_YXTV\Tbacc[][NNTLLJLOTTPOLJIKJIINNVQIJKIIX\QYi`Z^^`O_^]Y\_Z]RY\RYccd\c[URZONNMKNNPTMKIIJHRVOTRUSSNUNPRenm`jk_UdciaYed`]ceaWccdbd]RSNKMTKLLRSShMGKJKIUTLbRTVSMPMOSUdfop`meemmidifdc`bWTW[cbccdb\[SLOOMLSSJLX`]VQRMMLTRLKT_XZPJLMTWXejhldegwmnomj\d\W[UQXW_ccYXbUURLLOKKSMJUVYPcWQQMKJINWROLMLFNP]f_glenissnmkh_ecUQQT\f[cf^UURRURMSMIJJWTTWNMKHHGJKJIIFHKLNPSY_UgjdgdkljWV\\YTRPPQSU`VcRTRQRRQONIIJJWTRUQNTNNFJFIIHGJKKMMWUUXWUUa]\aa`]]`UXXROcQSRJiYRTRRPQJKPEEIIRGLMNONKPHGHJFHGIKKLLORSSXSVZbTR\XV\Z_ZVUoVOXPQR]QSTSURQNPLGFEEHDEGGFJLFEBBEHDHGIIKKPSRUW[UZ^TRZVZ[Z]XNRMNPPOPPNMSSTUOMERPBEDDEHGGDEELABDIJHJKLLKN[W^^YWdS^XTSYUVSVMLMKHOKOONLLNLSIJLLDE@BEDEEFFHFFGGKHEDJIIKLL\][Z]`\\^U^[YZUTTLKKOGGHGKMMLLJFELFDG:HFGJGGHHFGLLNNFJIKTMLNMLaVWVWXUZTROQSSVVTRMKGFFCDGKMKKID@?IH==FFMKGFGILNHMMFPR]`PLPQQPPWSUYROTQNMMRSTUSUUQPGGECDEKLMKJJFDNH>=G[QQLHGLLKGPR\UQ_`VVXZQPWRQPMMNOMNMPRRSSPTRQMLGEDECDICKRSTXBST@?XVSRLIPLQLRRQT]`Z`ZQNX]_VKOKMKMRMMRPOQRQSOIDEECCDCFFUVY`fTTCf]\\SRSTPSTRNONNVWURXXW_ZZJMJJLLRSMNMJILJPPTLKHDEDDGCJQU[\][S^jjd\[\UVTUUWVROOLSPQPP_^^\XCJHIJLMNPMMHDJKJLIPLFEDDCKPO[[_laUU_iaaX\UUVUUYUNQRQOPPSXVU[WBBCKLLIJIJGMNQQPFDGGQRRWegroaUgb`SZ]TUWSYWVYZSRQPQPPVUW\VZAAGGLLIKKDEAIFFCBGQPNHHFLLRR[lmjombc]_]R_WTQRRYY\[TUPPQPQRX[`_ZAABJGDJHDEHAFLCBDHRZVPPTUQPfmlkjjgg]X^aa_RQPSYYVWX]RSPPQRSY\^WZAACDDELKLLJJ_`WVS`cYV^mlhmk_ZhagTSa\Z[WXTXXTYQSS^RPPQY\YXAAEDCCDHLLIYbpk^^nggYcnnpoldaYj[XV\^]^YUWXWXYYWWQTPSV[]jidECAEFGCCDEFLS\]nxvtvrplgkinnpu}icZf[YVRS[YRVWYYZX[WU\akhyw\HKFDKECCEHMZ[kmvwwvpninlmlq{|}][XZVRSSQOQQWXZ[ZY\]a_c\fqf{z~KJGDEPFDCCEGGSehjmqwwvrpliiyrkxs|ja[WYTRRSRUTPWY[Y[[abefntdrLKIHMKEDECDGGcgmhhr|wussjdhjisykktid^RVRRSQUSVYVZX[ZY\bbccipqtNMMIMHEEDDTfhhnpzzvrtiihjipunljeklfZWUSTTU\WVXYXYYRcbbccov||LMKLJIGFEECGYbphiiuttssjhklnpmqillfda`WOTTWVVa[[V]TNZWbflkjltt|OMLLKFFEEDJ[ighhquwvsqjjomjkmmnurcaYYVRTTU[]]\XUUM\gghhmqrrtMKLLGFEEDEF^_ld`pvuvvprnyjgjkmsm{e^\YVUTUUV\\YXab_hgiggimqrsMMKJGFFECFEM`makskuvwtuoopmjntwwlra`UVVUUXY[ZX\aWXfhjgghkiqwMHIKIFDFGGIfkdsfmtsvmxqoqxmf_ovuysWWVUUVUTUUTSXTU^`aijgjhjutvIKLIIGEDFFIegbqikttutmmt`ebfooxmfXVUUVUVVTSWV\Vaa`ik}lkntIHLLEGIEGLHfdxi[bokrtqnyiurQjfhooZYWUUTYWYTVW\j_kjktspCJGGHEEFILff_[[djprruus{xXWXclkkb\XpUUTVTTU\WYig_`bfehlNHMDEEDFHVV b\Z[^cpooprzuppVciijlw[geXVUZMUUTTUYYdjjigllgh}JLJOIELMLRW_^i[chjtlpo|wrmkln\jnpacaWdXTQSUITTYYcg`e\flwy~}IGFFIKMKNMbc`lh_ijpmmuuxykionij[ke__XUHRRUOOU[Y[]__`cs}}s~HMNHJMKLP[cssfiskimyqqptjpjjoid]qp^aSYMSVTUJW]`\]_afdllwxut}IFFEGRNP_stdVUQcjmtrsppolkma_impmlv^QWVPV[S^][\WVhghslw{|uIHGEINUSUXVUSQTQijrqppqpplmabmnpsqud_W[PU[TVdTW[ehjhjwwHHGHDUSTcXYXRQRWfzypuxqppo\gnfoopshd[TQ][\_`^d_XhhiuzHIGHUMOTaRQ\RUURtwuyyusqppd^\enojnuY_TSPS]WV]d\dceggikDDFCCOe[aWVUXTTUfjwuqvrrqpjh\^jnmk_hW[UUXXUVU`_`efhilkpIKDKVV`SQSQWUTTawjzuu{uvron_uhxolpreY[Y]UVUVVWedbbijjopsnLLTJV^RbW[X`cYX]hjwqrv}sydurywwssgWVZ^UZUVV\bbiddvLMKOOTW][Wegeefhj~zsisryuzxxf[XVWU]^U__a[^bbdioKKLOTPM]WbffdffhjslwlrymiwqrggeUVWUZa_``_abbcinzGROhSOOKKdZcdff~gfki]xyzhqtVYMTVX\^`_cidcbfdmtsSi[[POOMKKOcffdbr{}{}~|vtZ_]^lrzuhZYVQT[\\]abmgjmnvlswm[[\NOKKSefbaaoqww{v|x^\Y[lluicbZTTW\Z\Y[``mmljsfqsnh\^]VPOOKKO\cba`ayzzwwvZZYY\^hrde]TY[XYW[]Y__gicbddswzf_cd^UQRQMT`__a`aerxt}xbZYZZfsq__]aZXX[bagemgrtgffgi^VSYO\]aababeop|~rebaZXaoqqi\`a\YXWXZY^chkederrx|~ffikkhd_Y]\ccbedbckrt}ٖcb^_bopkdac^aXWWXXY_cefkdcfeh~{}xόy{|~uzyv}pnwvssktklhhmuxxwtkutuvtvvttu}xrtumlvus|tngghijjicgzehste_Xr|{~x{y}UXussrtwul|wv{ykcnogjuTRNcZfgfhfbc_dbkrbRUSihEMlpibeX{vuolSORblormldelolzjptsbdZSSMLLKOSVU[WX[ZYOSPFGGPMhdeEEHFLITPQj^aWZONRbdfg[_]\XZZM\^Jhj\UNPNPLLMYQPLQSOIHXHHNGGJPaBDEEHFFHKEYYWS\QNKJVWW\U\Y[TIIKIJTGXMIJLLNMMLJNKIONLIHPHMQOHOPQAEFKHGJJFJSYVRNPQKIPV]]\]QPPYPKSFLLKMJMMNMMJJGJOHKJKC@@JNFPOQIGIIKJGGSS]VLQMRRJP\]]\][VOQWPJOKDFKLLNMKKGIIFIMEMOHHDDE@NMMQNPNNJGGIJSPRWRQNPTM[Z]]\]]\SUTIHIPGGDHJNNKJHFEGEEDIIQLEEDSWLRbVQUUVGVUTQSWSULRUKQ]\]]U\UOLVJIIFIIKNIFEEFECMPJOMQOOJQIKM\dcWaaVL[ZaYQ]\XV[^YO\]]YOOIGHOGIHHNNOeICFEFEPOF\LOQOILIKOQZ]efVc[[dd`\`][[WZOKPT]\]]^`_ZXPHJJHHNNFHT]YRLMIHFOMFEOZSULFHIPRN[`^bZ\]nddfdaT[UOTMIQPY^_UT_SSPHHJGHOIFRSUM^SLLHFDDIRMKHIHAJLS]U]b[d`jjeda_V\ZMHHILWaW_b\SSPPRPHOJFFGSQPQPSJHFCBAEEFEEBDGIJKIOUL]`[][acaMMTTQLJHGHJOQ[RaPRPOPPOMKFFGGTQOQMKOJI@D@DEEFCCFGGIHNLLONLLXTSXWWUUYMPPKH]LNNFeWPRPPNOHINCCFGPEIJJIFKCBCEBCCEGGHKIJJOJMQYKISONTRXRONgOJTLMNZOQRQSPOLNJDDCCFABDCBFHA@==@D@DBEEFKJILNRLQUKIRMSTSVQFLIGKKLNLKQQRSMKCPN@CBBABDBB@@G<=?DECEEFHROUUPN[JUPLKRNPMQIGHGDJGKKJLJQGHJJBC>@CBCBCCDBABBFC@?ECDCDEESTRQTWSSULVSRSOOHGHJDDEDIKKJJHDCJDBE8FDEGCCDDCBBGGIIADCEMFEGFEXMOMNOLQKIGJKMPPOMIFCC?@EIKIIFB>=FE;;CDKHDCCFHJCHHAKMWYIEHIIOKLPIFKHEDDKLMNMOOKJCCA>@AHIJHGGDBJE<;DVNNHECHHFBKMWPKXYONPRIIOJHHEDEFDEDGKKLLJNLJGFB@>?>?E?FLMOS?OO>@@>=>>AANOS[_OO@`WVVPOMOJMOMIIHHPQMJPOOVQQCFBBDDIJDFDBBDCIINFEB>@>>@>DJNTUVUKVcb]UVVNNMPPMIIFMIJHHVUUSO=DBBEDFHDE@?>==DGGRRWdYLLWaXYYQTNNOMMRPILLJHHJOMLQN=<=DEEDEEBBAB?EFIIH==??HIIN\^ifYL^YWJRUKNOKQPNRSMLJIIHHGLLMSMQ;>:C>=;:?IHF??=CCIJRcdafdYZTVTIVOLIJJQPUSNNHHIHIINQVVQ<<=DB?DA>?B:?D;:<@IQMGGKLHG]dcbaa^^TOUXXVIHHKPQOOPTJKHHIJOSUOR;;<<@AC@AA@ACFLSUdnljlhfc^c_eegls`ZQ]RPMIJRPHMNNOOPPOOROLTYb_qnSCFB@GBAA@@ADGRS`bmmlfe`ecdchrrsTSOQMIJJHFHHMNOQPNRSXU[S]h]rrvFEC@AMBAABCCL[^`bgmmligca`ohanir`WRNQKIIJIKKGMOQOPQRXXY\]ejZh|GFECIGBAA@ADDZ\c]^grmkjja\`a`io``i]ZTIMIIJHLJMOLPNQPORXYZZ`fgi{yIHHEIDAA@AN\]]ceopkhjaa_a`fkca_Y_`[QOLJKJLSMMNOOPHZYY[Zfkwqp{GHFGFDBA@@?BQYe]^_jjia`bdffbf]`_ZXWVNFKKNMMXQQMSKEQNZ^cbabfepzJHGGFAA@@?DT^\]]ejlkhgaagd`bbifXVOPMIKKLRTSSOLLDS^__`__`bcceHFGGBA@@?@AVVbZUdjikkfhepb_`aag`nZTRPMLKLLMRRSROOXYV`_`^^_abccHHFEBAA@>A@GWdW`h`ijkikffgif`chkj`fVVLMMLLOQORXOP^`a_^^`_bqgHCDFDA?@BBD^bZhZ`hgjcnhfgof\TdjilgNNMLLMLKLLJJNKLUWYab]`_`hegDGFDCB@?@@C]_Xh__hghiccjkX]Y\ccl`[OMLLMLMMKJNLSLXYW`ctbacgwDCFF?AC@AFB_]p_QWc_ehfdo`lhF_[\cbcPPNLLKPNOJLMSaVabcjheuv?>=?@OOPZTPQSWddcehniffKW^^a`kQ\ZNMLQDLLJJKOOY`_^\ab]^qu{y|CECHB?EFEKPXVaRX]_kaeeqmhb__bP^ceVYWNZOJHJK?JJNNY]UZR[akmrqvtx{A?>>BCECFE[[Xd_T`_fbclknn`]bb]^O`ZTUNL?HIKEEKPNPRTTUXfprpeprrt~@EF@BEBCGS\kk^`lc`cshigk^d^^b]YRffSXJPDJMKK@LRUPRSUYW^`jjhfos{A=><>IEGVkl\MLH\bfmklhhfd`_`TS^beccmUHNLFLQITRPPLJ[Z[f^imngwtA?><@ELJLNNLJHLI`dljihhgfe_`TVadfjgl[VMRFLQJKYJLPY[][]iistyyv???LDFKWIHRIKKJknlopnlhfgVPOYbe`dlOVJJGJSMLRZQYWY[Z\]q}|;;>:9F\RXMMLMJKK]_nkhmjjhf\ZOR_dcbU_NQLLNNKLKUTTYZ[\_^c~AB;BMMWJHJHMKJKWk_ojkpllidaRi\nebfh\PQPTKLKKLMZXVV]^]ccf|aFELAMUIYNROUYNMQ\^ujeflpmdkWjgommij^NMQTLPKLKQWVVW]YYjr~EFCGGKNTRN[\[[\]txwwrqmjc[gfmkpoo\ROMMKSTKTUWPSVWWY^exwDDEHKGDTNY\\Z[[\]exywtwp\g]ela^mgi^]\LMMKPVTUVSUVVWXX_do~@JH`JFEBAZQXY[[ZXo|xxppqpXX`]Slop_gkMODKMNQSUSX^YWW[YcjhMaTTGEECAABFY[ZXUdllrjmmkffPUUbhpl^POLGJQQRUWa\_bclbhlcTTSEBAABIZ[WVVbdqigkfkhUSQSbbck_XXPKKMRPQNPUUbb_i]giey`TVTLFEDAAERXWVVlmskhhigxQQSU_hY[SKORNOMQRNST\_XY[[ilozz^X[[SJFGFBIVUUWVV[ejgnizv}YRQQRR]igUUSXPONNMMPPWV\[c]ijuvyvu}_]^^_SKHMEQRVWWVWYbcnpdz{\YXRPXfhf_RVWRONMMPOSX]`[[\hioswurs{y^^_aa]YTMQPXXZXWX^efozzZYWYZffa[WZTXNMMOTXZ[`[Y\]_uvvsoqlxuxxsruzwZs[utl][TTXX[Y[[Z^WKVNSONO]c`h^ZVVQV`mleXNVZPPSZutuspnhqiPVNTad[YNMMTWWXXV`NNO]_^^XSSTU_\`WLNOJNIIVlkofmdmbbOONNTVZRMMLTVXWSQUUYQVWQONNLUS][XYXQPSRITPLNJJKJJTno^^hbm`kigOPOMNQNOQLLORJKKLNNLZWWSONMMLOOVVQPHFJLKHJJIJIIOPXdSOZRPOSiZXPLNNMMNMMKMMORTWKNUJLMWORONNOVUVVWVTUNGQZNHMKKIJOPVXWONONYORQVOQNNOMLMMLMOPSROMJMMNNQQOVPUO\VUVWVVJFFKKPMIDHIHHOUWSOONRORUNQNNMLMS[SMJJMYNN[`[\U[[VXVVWVMIIHPIMDMLHHPOVWXPNRORRSONPMNMPMMNLOUTVVNJM_S[YY\\[XWWVTQVZKLRGIKJHJI^hYXXQNMPQTSSPQNRNNMMPNNW]VYTIONVWX\]]\\[XYXWUWZVWV^]WT[cgINwtZXPSWFPRQSPTNQOOMPNPQT[ZbVWWMQ[UW]]\[WXWY[[]^ifdljk|qvZVZUO^JRNTOTQUTRURPVOQNPQbbah`Vfmgcuk]]X^WdY\`qowyonrq~^X\VVQSWYSPUUVQPSNVhhlii`iqrqqew`]]^]_]bcj`_lssyrrY[\]Y\\ZY\TUUVV]YXRYfdillkwxnnrwzd]_jdhltvkcy}u|uqsZY\Y]]\]\]XWVV[__`aYmkkllmmn}yyoop{}inmkwz{x~{}x]]\]\]fXWVZ``adiqrnpmr{{xyozxy}xxY]]YZ^\]_hikfZZ\`aamdetvpsvs{xzxz}}]]\]]^_dglkkmk\[[brmhv|zt{|~~|~][[\^_^_kklkklhefrtte|]j_[ecbmllmirru|z}鹵W`bicgptrllmowuzyWkjjgkoonrm|~owx{{kjikhwillmsxx~r{}돔Ŀcfnmyws~rqttacjlvuwzzgikwlx}|z覥¾dgnjw𸺷`imw}cdk~ý𷸶divijxxϱýľ¼exm賷¾pp뺿¸ȏ󑔔󾻾ﹷ¹ǐ𸹹ɐȐþ–޳綼ķêް޼±¾ӾüŻſĿøǾǺþſź½¾¿ܺ®¿«ÿÿǮ¿ƮǸ¿ȧüƧȪ鴷ÿƮ紶^_h½蹻­𽼾ged^^d``]bkÿÿᄐhh_e][]]VWXZcZ|q񾼻tfa^]]^YWWVXYXY|ï𷸷{yrttpjab]]bZVYVXYXYY^¯¾éᄎc|~}zyyxoo_e_]WWXYXZ^\\bƥ|e|}|{||urqqgdg^YZ^ZX[abcY[W[qƇr{mx}~}||{srppfaa]^^a_^bdd\WXZ[_]hcƄw~wwxy}}|orrpnce`]j`_`dbcdd[\Z\][\\bꚒfiihdcgljNhQjjbSQKKNNQOQQTNBMFJFFTZW^VRMMLHLWdc[NELPHGJPuygegeb_[c]ELFLXZRPEEFKMNNMVEFEEFFEFFUVVUOKJKKVSWNCEFBFBAM~|y^^aY^W`UUDEEFMORJEEDMMNMIHLLOHMNIFFECMJUROPNHFIH@KGCEAACCMd{dVT[V`S^^\EGEEGJJIEEHGIABABDECQNNJFEDDCEFMMG?=@BB@BAABABHIV]OJRJIGI_POGDEHFIIGDGGIJLNBDL@CDNFIFFEFMLMMNMKLE=HQE@DBDACHHNVUJIJHQGLHNFJFHGHIIFEGIJKIFDACDEEHHFMGLFSMLMM@<BAAHNTPKJJIJGMPHJGHIJIIGILRJC@AADOEERWRSLRRMNMMNMC@??G@E>FFCBBJISUTKILIMMNIIJGJHKHIIFIMLMME@DVJRPPSSRONNMKHMPBCJ?BDECEEW`UTTMJGJKONNJKHLHHLJIKPOUNPK@FEMNOSTSSROPONLNQMNMUTNKS[_DHnjUTKNQAKMKNKNHKIIHKIKLNUSZMNNDHRKNSSRNONPRRTU_\[a]_qgkyTPTOIXDMHOIMKOMLNLIPIKIKKZZY`WMYaZXh`TTSTOTNZPSWgelnbafdrtz{WQTOOJLQSMIOONNOJJLIO``caaX[ceedYjVTTSVTYY_WVahwwyfkegt{zPSTTRUUTSVNOOVRPLQ^]acc_jkbbejmZTS^Z^`hj_Ylquxxhmgdfq~vQQSQUVVRQPOOTXXYYQeccddevnkkccbno^aa_jltmkrrpt||mnj~vTSTSTUVVWVW_RQOTYY\`ijfgdjrwwpoqkvppjkbljlojj~}ztPTSQRVVXabd`STUYYd\]kmhjlwjwtxoxyxy{mjkvkloqoTTSUVVX]_ddcfcUTT[ie`lsvrjpqyyot{y{|}omoxTRRTWWXdcddcd`^_kk]sv|vxqxzzp~螎TaVS\[Zeddeakjmrnv}}}qy桠NWY`Z_gkiddfompov}~}Ncaa_bfeeidstfmpq|qxzz~Ԣbbac`o_bbcimnthtxqszš[^fewxpnitgehhwuãYZabmlnu|vusvno}ܢ_abncoxupzwom욖\^fanzw{xss퐗򥧤X`eo}}ty}uZ[bz|}{s}|}Z_mzz{}||^_m|n~{y||[mb||}{补ɭdd}|}}﮵rw~|񥦧맫􅆍󪨫貳᪭謭ߨ嫭ꫵ쮱磩ߣٰ쭩汯ӫΫݭ뱳簲貳㮯汰공宯곶篱賵⯰ﷶ沰𵖖կ򲱰顤橣~UU]}릨䛙\[ZTUUZSSPT\쭬몭y\\T[SQSSJKLTLlb߭zhwZWTTUPLLJKLKLnثwrpfjjg`VZUTTYPLNKKLLMR񮯫򪥧yS|mttrqqghW]WTMLLMSQQVﮯ~kTm~vwuttnjee^[_VQQUQNQYYZOQMPc浳{|vnbl_msxtuttifdd]ZYUVWZWW[]\SMOPPTQ[V˴yy}vjqshilnxvvtuuttcffdbXZWUbXWY^[]]\QRPQRPPVqZ\\[XUZ^^D]I]^WIGBBFFHJKOI=G@D@?@KRPVOLHHIDIS\\VJAGKBBEKglZX[YVTOWR=E?FOPJF??@DEFGHHRA@@?@NOOJFFGHRNSJ?AB=@<GENLJJDCFD=>HXnXLKPNUJTWR>@=?@EEC??DBD=>>?@A?LIJEA??>ABIHIDD<:=?><>=<=<=C?EEB?BBEFGJ>@H<>?IBDBAA@AHGHIIHFHA:DL@<@>?<=CCIPODCCBJBGBI?D@DAEE@CEGFDA@>CA<9=<<;;C;@9AA=<PDLJJNNMJHHIGEBGK=>D:=?@>@?OVPPNHEBEGKJJFFCHDDGFGKIOGID:@?FGJNONNMIKJHFHJFGGOMGFLSW?Bzd_QOGIMALEGMMNMIJHJKKLMWTSXPRf\`~stlPKOJDR>HCKDHEJHGIGDKDFEFGSSPVNEQZTQcZMNNMOJNISILO]\ccUTYVef|tmnRMOJJEFKMGCIJIIDEGCIWWZXWOT\^]]RcPNMNMPNRSUONW^llmX\WZf~tmmLNOOLNONMOHHJJOLJFJVTXZZYWbcZZ]dgRNJTRVX]^VQafimmZ^YUWaosjLLNLOOKJIIJNRQRSK]ZZ[[\mfbc[[ZghTUWT__ha_gefdhol]_[qnf}OONOPOPYLKJNRSRSUYaa\][`hmngghbkfg]]V`]_b]]rplgtwrnvrKOOLLPOOQYZ[YLMOSSR]UVbc]_`l`ljogonlln_\]h^_bcbvzv{t|vywOONNOPUX\[[][NMMSa^Xchif_celnejonnuopa_ajwxOKKLOPOP[[\\[\XVWabbUginikdktssqnouvvsxpbs{pNYOLTSR\\[\[\Wbabhchnosndlttrqx~wwyyxs~ԓGPQXRW^b_\[\\ZZ\edbbioonqtyu~ttsxw{|y“GZYXWY]\[_[ii[bfencjllorupq~w}}spv}yzZZXYWgUXYZ_bcj]hkberlqrrnssr~|tu{~zy{|RU]\ooge`j^[]]jhqpvu{yr}tn}~uuv~{{y{PQXYdceltlkijcctnv|{~~rotrvy{UWYeZfpwlfpyld`u׊|rt|zRU\Xermrnyhrgr퀆򓕒NW\fttkorjrrtQRYpssrjsqqyssvʤQVdppqqtqqttv杞VWdsetqorq|uv蓐ꟙRdYrruq|u}򜞠Z[vsrrzܝimvtruu뗜yyxyߚzxzxw|ٚw|}y씕x{z윛㑒|˚ގٜ󜘔ՖӚٚ훞㜞ޚ𢡠럠ᙚ校𙛛ꡣ嚛顢͛~~~雜殮㝜串ך蜛롤曚珑mJJQoߛ͊wvNMOIJJOJJHMTꙚ}pviMMFMGEIICDFMFaXšl[hLIGHIIKFDDECDEDDcꗞ뒀lhfZ^^[SIMHIJOGEGDEEIoJrd~ujkhgff[[]LRNJEEJHHMucLdt}mmkjjc_ZZTRVOJJNIFIRPRGIFIvXoyu|ungZcVdinjji^[YYSQPOOPROOTUTKGJJHPKmm}wrlbi}wly`acenllijjiiX[[YWNPNNZOMQWTUUTLLKIIGFFKcW[Sa\aYWZU^ZTWTZUVSSzyfgPRRNQPMOQMRLLUҹz{wm]Z[YeVWVSRXZTVQQZZTUV_X\OONRRONNPQPLMQOVW^}ywmlf`]iVVOWUQQMTYUSVV_QOONNQPNNLOPPQt^~}|zt\^ecttVUSPNOOUQQMHPMTV[YRRNNOTQWSoTV~~pdlgkqt|VVOONPOPQLLSPQ`ih[sW]OOaacillo{tTTOVSNMPWUOyV}syZøbbhcmkpoyWk_Y]^ayɿ{ofijiln~`kmnhiÿ|schghgpqmlonuľȽ¾}^fcbtxyxqtuƽ¾}jccitxþžټmgdivw豩}oihcryv__r{pklwwÿcqrpp׽jvoxv½}}ezvv岭sjvvx|sst맲{~ohsoݽ{r}kpn뽲opwlmluomlnmĽvxjlkk¼첥sxugjiĽŹwrdgefjþĺed_ghhºgfhhig¿ý{kjiig{hiink¼llknnĿõylhnno¿ͽżunhmnoÿ񩪳Ĵ~lhknoɿ¼fnotɿſý}}zhms»اzxcamu¿Ӣ{lbY`hpƺ𽾽բumY\`\c콾Ľدºq`]X\\b淯ͽɶ¾{yWW]bfŸ̰»]\bcg볰Ŀccfl羱ƺ}dcdk幺Ļiddhiedde¿½deggbûǻnqginþĿpomms¾}tnppƼtutuuqtpٞrnorvtronŚldchcbhnnooksswspnnþ½Ľddc[_g]ZZcgdgkhtjlpsqnn¸ǿdca`__^Z^cechnhyyjjsson·jklcebaic`^ZZqeeggfyioromnʹķcjabbkbb`_a_abkkjofdijfvdce̷xccaabioajc_ijjrngjpefoʸƖmdb``ack~{qptjbƾįdbac``abcthgoĿŒccbackknqÿucddbac`cewqrqſáfebcchcbc|rþznvÿȴmydfd\fdcijokp~uµyxwOSMYVZSRSOVRKMKPKKn]IKLHHDGJEKEENprofVTSS[OOMNSTPQLLRRKLLUNRHHKIGHHIIHDEJGNNVvropff`XU_s}NNJKSSQNLINRLJLLUJHIHHKJHHFHIIHKiUuusutrmVV\[ig|NNMKKMQNLIEKHKLSRLLHHINLPMfLMvtv~vxi\a]`egoOOJKLNMNOIHNKLY``TiPVIIZvx|zZ[_aabnfMNKQOLLOTQKpPujox}S}{[ZaZb`ccjQbXTWX[qxȪ|zoe]]_^`boXceeab̭{qhX]\]]dcddfelˮ|yspnT\YYilonhklūwvrtn^YZ`imttةxtssqa][`jk|롘ttsmc^_Zim𳲳ܓyyxpjWWViowyytfbcnmﲴywyyuZgigf򫣞{yyzamfnl򴳵|zzsr[pll񶸶zzyyjakk񷸳ͷ}wwxmmrhii敠rtottf_idۮxnwisbfc𳯮뫢{zyfgnbca䮫~{ykeccb󱪨󘗊~zwlm`b`a米좖zxximk]`^峴{zmhZ][\_˲~|x[ZV]^^ķ{^\^^_]ধra`__]󵹵ԯr^__daйbbadd{ob^dde~zkd^cdewxxsb^adeyywvv\ddiðyywvrro^chĕ|yxvomYWbi檩zpaXOV^d𪫪ՏxjbOSVRX쪫؜~~tfVTNRRW検ᯬpnNNSW[󝎌ܰTRWX[렝򻹶XXZ`諞仳rYXX_禧쳮^YXX\|^YYXXYuXZ[[V𳬭z|ae[\a~sdcaag񥡟xohbdc񰮬װghguyihdgcٍ~ebbest{jgeba򰱯Ӊ]VV\VUx]aacc`hhjfcaaѮVVUOT[QNNW\Z]_]i`affdaa򬩪UUTNRYZY^b]nn``ffbaհ_\\TWUU\XUUONd[[u]\\n_deb`a׮X_WTR\UVVTTWUWWw`a`c\[_`\iVVXͨkZZWWTUTR[cU^XU_`aif}]`~cWYb`XWWV_stpfvwwfg]UXWWZWWSViuttu|[YbïVXXWWXXWZavvwtu|x^adfWYYWWZWY\mzzwxyrdee񡖔ZYVYY_ZZsjvzz{{|naiİbnZ][R[YY`agcgulzz{|}~lkkJLFRORLKMHOKEGEJFFGFggWYFIIFDD?@C=C==E|~똃ycfc[KIHGO|uvJJFKMHIEFKKEGGOIMECDGGFEEFEED?>C@EEMziebd[ZTMJTgqtIIDKJIFEBGKFDGGOECFDDGGFFCEFEDF`LkuhfhhgbKKQP^\pIIHEDDEHEEB?EBFGNMHHDDEJIMK_FGm}firjl^RWSUZ\dJJDDEFEFGBAEEFRZYPbKPEETlykpmPQUWWXc[HIEHEDCFKIEeJj`emrM~ypnPPWQWVXX^IUOIJKMbi|}˜xone\TUVUVXdOWWXRSux䘟vpg`PTTZXYXX]ǕqoljgMSRQbbca\]^ƜonkmgWRRYacgguzx闕pmlmj[UTYbanu~~񚝛둊zlmkg]WXTac~|wqppjdQQbf~{oprrn`\]ee琊qoqqrnTab__ח|rpqqrr[g_gd򠟡ߚrqqrqkkSicc񢤢}xsqqpbYccأ}pmnoddjaaށ|wfiekk^Wa\ۛ~zlbm_iY^\ݠrnnm\]dZZYߠ{pnl`\ZZ[Z蜝퇆{pliabWYXX̡~mjk]baTWU埠~mk`]PSQSW˞omlQPKSTTԣ򍄀~mwSRTTUSߖxxwfWVUUSࡥ璙}vufTUUZWwrXWXWZZљ{tndXTZZ[ٗsqn`ZTYZ[£rklkgXTWZ[ߡllkjjSZZ_~mlkjffdUY^~~؂}volljdbQOX_~~~ssmdXPHNVZ𙚚փ{wl`YGKMJO~}}rqj\NKGJJN攌|~}מzygeFFKNR}|▝|LJNOR됍}~}㪩~yOORW쓔~©~gPOPV䤥TPPOOS򪩧pTPPOP}wsjPPQRN󃚛أ{|lnWZRTY{vpfZYXX_wsskd^Y\\𙘛Y[Ztwhl_^\^[ざrtXUUXfgm_^][Zɞ}{}UNNSNLkPTTVVT[[a]\ZZzNNGMRIFFLPNPSQ\SUY_][ZvNNMLMFIMNMRUQabTT__[[םSwUUNONOTPNMFFZPOiQPPbSY]\[[񤥕~MSMNMVNPPNMPNONmUUTWPOSSPcQQUÝr]MMKKLNNMU[PWRNXYY|^ZrQvwTu^SU\wSLKKMOWiig^mnn^y|bVOKKJNKKMO_iijjlv|tUS[tLKLKKLLPXjjljjonWZ\~ޞ[MNMKKNLPRbnnmllni]]띚~QOKONVNQQh_jmnnot~eY_}~wuWbQTRIRONWX^[]jammnooq{{b``䖓llkhhjhnonjjt{zxtsolkgkdkmwwvokkomnu|xޕz}ihgswnjjij|}{}pptvimmqqvupmkkpy}}u{}}킅vrpnmku{||xutrxpnqopvulkmkpttuut}wwspoononzss{ruoprqppossyslmmpknsutwv{zzsqqonnmrssrvppqvwutxlsxwtxxxrpponnjkkjlopoorrsxx~|wyxy{vz~rqoomliitltqoqntsvyՀxzx~sqoonnkkiksrroonrr|{}{pqnpohhijpmoonooun}o}uzwjlrrlkilsoomoqmmr~~|tsty|v뎍yl|llkolrsslloloopmmlnr~~|{|vz|tutuzpktll~ypttpjnmonpmlmmy~||yzy|rustyzztlmlvlltkjitxsqmlqrv}{{|{xyttsywstrrtqzl~}rpkjjlwuvmlwrw{{yssryvrrsrtxtjilmmluqqzmjnq}~qlmrwvqqvqsswx~ihiio}s~zvttkhrpovwuvttz~}~~plmmpxyuxy~orruvvxt~~tt{y~z~olps~rrovv{z{~ttzyqz|}{v{w{mlhptovtuurqsomhovnzxzxuu|~{~p{mljlvpqqcknl`jkvkxohvtt|rmonlomtnooojfdjhjqebkjmeot~z~x}uvqmqtnljpisprotwwughbkf_hgeihfjccqpwyzy~}{{u~nokqusmxvruvuhaje``gppibgqdmmpw~}|{|{ywjkkpzxvvuwvdded^jhjlklzkmmnqp{{|}{|{yxu~nnwwvvuwca`cadjiussthjjnvz{z{}~|{vn~zpvvtuxv^haadffhqwwmkijn~||z{}~zvk{o|woqutuuwe`lffeeggqwslijc|~~zz}}~v}uhxtuvpqyvhhljggffhlpwpibbfj~~~}||}~~}|ighgz~tvssxtvlongghgghhplfbbcdj~~~||y~rjddft{u~uzswnophgiigmgrnhbbcbhu{y}|ۃyy~siuhfevgkw~}stksnpostisygksobbe}unmoml~xnkokhdehxwwkldiloquvxwplbabdkp{zonvmmqq||~~vxlofeejoxuuhgfgppsyzqebabjqtu{|kpnv{{~xlloklrsiddgost~wrpqjqprtq~~tutx{}~plo{krswxts_favswu{y{zorspotxsr{|{}woknlmurxtc__auuwyz|uutwxwusz~{{}~{lrvrsrpvwyxo__asut|vrrx~~y~~}|zturywyt__vhs{|{yttz~}z|{w{yo__ng|w{ywyu{xz~mu}|rv~~|zz||w|}}{ymlou|wzxvwrttvtsxfgfqgijjoqzzوz{zy|{x}rxuyqkk{hggdsigzjdfkrqwy||}}|}~~}{}qrppx{hkkgeefy~ifedhf{lggvxtrpy|}|{|}|}|{|lmoxfegfjepv{}teccffdgxu}||~~x}||lqxv~}ihjnhpw|v}deffkq}}~~||xrwvkpv}spjnnq}ylffnl}}}}~~|}yvot|inu|ywinmnq{}jnz|{{~}}vprdrp{qxmnoqt|{}{~}~}}nmklptqq~}ojvvp|~~}~~mmlkkqxv{vmo~}}~~}~}}rllprzʣ}{z~yyvltuu~~~}}|mmllpq|zn}vusrsx~~|}}zqllmmpqq~}}‚utstt||zwzvrqqmwnmnp{}~xtt{~xuzzsrmmonno}vmmvrtsposo}uzs{rnoqsstqqrmkdduujl~x|}rdmoprlrpqqpqjeeiuoknvwelnp_n~~wpporqqzzk~}unpponjf`xjom}}wwqqsqthuy~|tvooqp`gckmnq|~~}tqwplmkt|{w}wx}vurcbuqkqs{~}yu}qvxywvtw|wuwicws~}wx}u|zyysts~wxx~r}}Ղ~|rwv~ywwvz|wxx~||{|{z{wz{vx|~vmr{{rroz~|~^^[]\bce``_jpomjieba^aY`blkja[[^]npm\djugp{|pio[\Zhuld``_`qsqrhggwkl^`_ddkga\[[`hkpmkcillzyqtwrmheecakqrqrnlxwkijb`dabhe\[][_cmbcct{v}mf}}nieefepjiqhlfficaa`dcjc\]]`Y]acbeer|xl||jix|{{hggeedimefefhgdequuhsw\bzpfecgy{{rgu~|{~zxmhgfee`bbabeebbdablggmukf~h}|z|vfppzuijgy||j|{|}~psvuifdeba__iagcbc^caeplpp{ho~pst~hlzx{htp}}tgfddcc__\]fdeb`]bbqorqktt{{ypyyo|yujnpvv|~~qmzvefcdd\\]^c`cbb_b_e^wuuowvwxwtlozy^moemtwxwr}~pj[\ee__\^gbba`_aa]^a|mmkr}qsddeloqgqrq}}l[l[\[^a_dgg^_b^baa]]b}vmmklwf|mpffeqglz~~|`Zd[\\nldhhd\abc_b_]^^hxmovnkkyoilnoegefkrrvzz~sjid\\g^_h^\\ilhe_]bceqnnoljjkkijeenlgfdefrrsv{~~q`i\nonca^\\^^`lij`^gcg|txqojjokeedokffgeglvrsr|}~dYX[\\fbbn`]vceqqd_^cgotuzqohcclkkfggklusvrutvy{{~~YWXYY`odqm{xjgfe[Xooxy}}owebbllijihnrqssrtrru|~x`[]]bikgjkwxvrp|xtu^vwueehkkmthrqhhonrorrvv{{}~{q^\axrzeyx{vqsq|vzr|veebkkpnoqhhnnfopqotst{|{~zizm|vhyyt|qz{i\t[W_}hbiijjfefca]cjdnmomuv||{z}w|hgwpv|}ovkqo}tnwx^irxx\[Y[|qwukefeX_b`U_`kame_l|y{wggotrpvuwa\^vov][^\cu_vcxdd_[Y^]_fZXaad\fj|z}{ssm}t~owrqhptlde`\`oc][Y_Xb`bbhjmyl]]W`[U]\Z^^]b[[ihp{|{xyums~mlu}ronvpz|tjjdums|]^[`dcu_jifjlk]V`[UU\ee^X^i\eeho}{spxvv~xtmvqkjkvkhgY[Z{_tqljijimlZYZZT_]_a`bpadefig|suz}ppwllmoojkjiifp^]iutzjjilYWUXWZ`^jhiij_aaelux{{|u|z~vtjljkmolkf`qlyuzdiihiljT]WVZ\\^gmmca``e~z{{|}}~zommkknokh]nbszqwkcdihiik[Vb\\[[]]gmib`aZr|{{x|sz|{|zwoojknnphnhvs]nyzhiwicdng^^b`]]\\^bfmg`YZ^a}~{{xrooy}ypoonnoqpprp^]_^pxshieeiegbed]]^]]^^fb]YY[\az{}|prspqrvvtsqpqqoolrf_YY]jqhqgldhdef^]__]d]hd_YYZZ_l|}|yxyljroouuttwrmlqg^j]ZZk\bk~qroee[ddeehj_in]aidYYZ\slw{y~}uxsd`b`_{wwzvuvv{}qlb`c`\XXZkjkkwu\\TY\eejkmuxmufbYY\bgrpuz{ywwedk``eepxouqvvzrik`dYXX[akhrpqeXVVfeflsnvf[YXYahjlqtrzu}xv^dahnnrtuvvx}uzqpky^\\a\[pqbcYTTWefgq|~zjgfgbhgikhssvx|ffehnpqttvrupa^`m]{{acof|gspecRWQjfihsmlontfjjggkvt|idcmnmtt?mwg`[_]^og||atp~wwidURQRhhjut|lmu|{trllknn{~gyfckonnjjtlnk]chbba_efoutjiaRSRUfhfr~vqxz~{}rwmzy~ccshpprmnhmmlkjqnscdahofsorjtgSSi]fyx{uz~~|wqrup|zvzhddimrqqlmppoqoikjqvglplvcSSa\uwzzrmqomoiuskhinmu\dlkafm~mkiinkkgmnonla`chsuy~rmpmlmhiiquptsorfcbgVV`VXYY_`iiwijjqnkqtekux~ukogaap]\wqqoonVScXWqpjYTVZa`fhlkmrllmppnpdfcdks}xq^ba\ZZjnoorpXUUSXVqj[VWegca_ilmnkmnnrorpop``br}|vm\Z\[^Zbgkmoor~dTSRVVTWgdyrnnopjoonpsu_djhpyzuur^]^a\bhlfmoosySUVV[a|~xquooppqpnnjejj_cioqvv~zywwtge^aa`cmsqppzyxh\VVs^\nwqnnrotqrqqookhbgo]ahmu}~vuvslk]a`acltwxr}tqmZ^}}qimmrsppzicfvWfbmv~zyzzwvwwel``bcfxuzzwxmnpnrqrrsppa`__cgddpx}zxuxytqcx]hhqyt{{||x`x}~orrqrrsut``_^^dkirzzrw||uxxyxniqr}}]u^noqrrxtqrqqsze__celvΝ|}x|uqxnnwqtyuoihf]deerrtxrqqpxa`__cerz~pnwyz{tr^sslfecckrrttprqnxd__``cddy}wxx}}{~nllq{wztedcehppnkojfed`ia`adn{}xzzllnmnnr}szzjddgorlinn{gea`baabuy{|}}}umlonnwx{th`aiegedbhuduqhmfmdabdeywws{zx~~}~ttpwnwusveshddeea_ZZjk_as~jnotdV_bceywuswwx~yy|oowvwrxvqw`fedede`[[_ke`cki|X^acRqyxc}rqopy~}utrrqrxxvqkffehfhqpautlcxt}bbaa\YTk_can}qnruxt|qrvwwxlkggihkv_lyptsjk~yyabdcS[W`acen|onsvw||txqsvsqiglfbcbwjsrnsnmniheVVje`xegnxzrprxvwwxwwqpq}o|vkwthmop}nkhl}znujij\Wls}wwgxt|zvypovr{~w~xuvwwlm|}w{skurpopihhr{{|{kklsry~~guzzyzx|pptustvxwwtqpfli|ywtommjoxz{spkkq}zqrpvuuquuvtunqlnkooklp}ywtlchpo{zffdvytptxyyt~vwxyTSSQPRPTUWRR^edc_^ZWVRTMSU^^]VPPTSdfcRZ`l^gvvuutuxwrwtgx{_dQuQP\i_WRRfhfh\[\l_`RTSXX^[VRQPU^afcaY`bbpuwttuxo{hjlh~|`\YXUT_egfgb`ll_]^VTXUV\[RQSQUYcXYYXjrlptxuuwvv{b[z~xqqa]YYXYXe^]f]`ZZ]XUVVUYX_YRRSUOSWYX[Zhsn`wutvuww{pp_^lpzpo\[[XXW]]aYZZ]Zglk]imQXpf\[X\nqqh]hpruusu}|rpowq||mla\ZZXXTVVUVXXWWYWXc]]ck`\t^srprl\ffoj^_[kotstu}|~|o^pooppafih\ZXYVUSS]U\XWWSYW[gcffq^xxetzyxeiirs\ankusuu{~zn\sx~ebopf[ZXXWTTSQRZYYWUSWXhehgajjqxqofooxepni]cdiipssvxw|ru{tyb^~liYZWYXPQQRXUWVVTWU[TmklemlmnmjbdpynR`bWcgklkhruwptqrt~|a]PQYYSSQS\WWVVTTVVWSSXrwzwwxwccagrffWVWbef^ghgrottprx}~t^QbQQSVTY\\STWRWVWSSRSWsvulcca`ajYocf]]\g]bkoomk{yUPZQQctaX\\XPVVWTWTRSS^}vnceldaand\^||de\][\aghijjnm~{|yh__ZRRQ]ST\QPP[`\ZTRXYv[ygddeb`_``]^XXdb]\Z[]ggjkoo{y{z{wgU_QddcYVSPPQRT^]]US]X^tzjnge``eu~_XXgc\\][\bkggemqqtnrvtrn[NNQRRQ[WXbTPiVYdeXTSY^f|zjkpyge\WWcb\]]abjgjggfgjkkqvunowNMNONUdYebovk^[ZYOMfgppzsseylYVVdd`a^^dhghhffdcelptuuonWRTSX__\_^jjidcpljlTzm}mkyZZ\ccdk^ih_^ecebeegfkkqmn|pfVTXmgoZn}moibdfspkoi{rxjYYWcchffi_^dc[ccbecdklknz}n`~wobqj]lkfnfnn_Pj|yQMUst\V^abb^\^ZXSY^Xa`b_eflrljmqlq_}\lekprdj_ecphcjkQ]ellxRQOQrfluiwc]^]PVZWKUV_V`YT^{vplkml^]^d~igdjx{uhkSNPicjSQTRYkTkXutxk\\WSPVTV\PNWVXRY\pompohgbqshrdlge[dwti_VVRNRcYSQOUNXVXW]_al`TUNXRKSRPTTSWQP][bjuytnmkmiaf~ra`jrgcajdmqh[ZUe_gqSTPVZYkT_^[^`_TMWRLLR\\TNU^QYY[bmoyvpngdmjkrki_ib_[^g^[\OPPpUifa_^_]a`QPRQKUSUWVXfVXXZ\[zyxmsfgkpdek_^__bb[\]\][eSS^kios^^`PNLOMOUT`^_^_TUVY`}oseikkolgljsohf]^\__b_aZUft`njoX^^\]`^JTLLOPQPR\bbXVTUYpr||y|rikkppylnnrok`^^]]`b][QbVgnel_WY]\^^_QLWPPOOQQ[b^WTUMfqtt|uzuxlkkhlcjlkmki_`\]_``ZaZifP~bmn]]l^XYb\TTXUQQPPRVYb[TLLPToss{wnvokkh}c``jpk`__^^_``bbQOSRdlg]^ZZ_[]X[YQQRQQYUPLLMNTkrsstnqqkmmabdbcfklkj`_a`^_\cXQKKQ]es\f[aZ]ZZ\RQSSQWP[WQKKLLQ^mqmnmnunjhj^\dbbjkknb\\aXO[OLL^PU_rsegdZZQYZ[[^^S]`PTZXLKKLLOe^hkimmfifYTVSRokkomlnmnn`]SQUROKLO`__kjQRJOQ[[`a`thsh^fXTKKNUXb`fjjkijZY_TSZYfmfmgnncZ^RVLLPV_]gef[MLL\[[`gtwuu`fYMKJLT[]\beclgsp|kjRYT]eeilmnnpvqimed^nSRRVQQeeWYNIIL[[]eopwvuj[ZXYT[Z\^Yefhrsu~}lsZZX\eghllnjlgXRVaQqqWXe\q]heZXFLG`[_]hyzwt^]bbgX\^YY_ifovz}~|]WVceclldn^WQTRSeZrsWjfsll]YIFEG^]_jhztou]^hppig``^aaor{[mYV_xfeebbkcdbRX\XXWU[\eki^]UFFH\]\grugbksntqsjnapotys~~yWWh[gfide`ddcbahdiYZW^e\hdg^h[FG_S[nmouflvususojjlgspkwzo]XX`dhggccffege}_a}`gl]ad_iVFFVSklotwvrkejhefak{{|j`]`ddkPZbbW\duxca__daa]bcca_SSV^ijnsttxkfigef``azivlhkjfh[YY\JKJVKMNNSU__m_`__edba^dg\ajmrxt}ndh`YZiUTniiggfwwMJYMKed^NHJNWU[^bachbbdccadXZZahrtv{oiW[ZUSSbggjvfOLJHLIe^OJJZ]XWU_bbcabdbfceccdWWXgpsrsrws~rmdUSUSVS[`degghsYKIIHIHK\vZohdccede_dcbdgjW[a]ckprr~}xokkhWVVYU[`d^eggilJIIHINrTpsnfjddedcc_Z__VZ`cchhpyyrnmlkh^\VYY[ejghholk[NIHIHgQOclfccgdhefefde`^W\eUY_`gnnprsuujijgb`UYY[djlmipv}fb^LPp}qe_cbcgffgeeto_Z[lO^Y_gokjs|mnjj\aXXZ\^mjonuvrhopynxccdcfeffggeeWVUUZ`[\djmvvllhllhfZmU^`gnhooptuwmvhQrxynstdffeffgiixVWVUU]baflwvy|mejooiklmmb_feqowy{uu}wvvNfQavdefflhefeego\VV\]birzyyՏotplpielbaheglupx~y}zxuuga\\]R\]\ffhlfeetnWWVV\]glow}~~twvwtsdailssiipqp|ge{wsQeg`]\ZZ[`ffhhdeecmZVVWW[\\lnx{{z{wwtkuiiosmvjqqm`^``dnvilui\[[\\ddb_b^[ZZV`WW[\clwyv|{vywwqlurqjrwyui|^`aabbg|pufmn`v\\[\cf`]bbp\[WVXW[Zklxswwzyytpuppyvmmvop~e``bbknng[ST^[\[XV[hWhrute|]c]d[[\]^wwwtwxunmulgmlhnnlol}dedjbligjsYg\YYZ[USLL]]RTfq|`dej[TZ\\^}xvwtt}utnlifhhinipnnhjbclklgmkekSZYY_[SMMQ]WSV^yy_rTY[\JdlkYsvxt}zsgebcjnrwmtxfeffgfglmie_ZZY[Z\dcSf}f^VkgpXX[[VRK_UYWcquuvw{tebegjsyxenffkmlkk`_[[]\^iR_lbger\^qlnVvZ][KROVWY\covtxwyvcbfhi{zropimghkge][`ZVWUj^fd`fr``}}e`_]NM_[Wn[]dsnpyugefkiiwrxzkxumllgeeqcpi_jg[_acp`_\_rqem__aTNaisnn]nksplzndbiew}lql{tnkllm`awpqvkof_igdcc]\\hstut``ahh{{ptu^lqppnrdcggf}wfjm{mmjfe[`^pu~nkicaa`epssli``frywvphiglkkeighffb~wzhcdadd_`dqxnljaY]gfss``^x|xy|}}yzzyzpuuv{~wuuwuv~|}xx{~olzzuv{~~yxzyz}xuuxnnxxw~vus|yyxz~kjjipqhnowxyz{zz}uvwtmnwxx|tuttwx{yww{qjihffiiqsywx~|}|{yvv{qnvzyzr||zzwxwy|~~~xwyrogeefnyrs{~}xvzptxuz}}xwwvzwxxz{w{ywniheetu}~vw|}yxuvx}y|xwxywwyvjlee{y}}ސvuzuzu}st}{~}xwwyxww~xlkfeehkntw~|~{u{|xw{{hyvx}ywxswvxxrqgegemnq~{wyty~~ytssvvnhii~prrqjmswx{uw؄}~zz~qsrkrpwz~hgkehgjvii~|wokpqjknmkqr{u{ď{{~knquyxtzzvffxgqfdlui~~}unkokmtjl|{|{{~}srjqotxqrr~}zwvlzvkeg~t||wz{xyzjijrqy~qvuy}{{|lsrttsww…zqtjt|tr{dbcfgux}rvvypijulrttrxzyy||}iv~wwrtsqlnvrr|vvsdccbhdhxvkgqvvooqtpt|~~{~wx{wupp{{zm~vtbcbbahbzz{xuxx|qrroonpxv}~|qq|x}wxvookvr}cbccbjq}|{yyx}}~{oqrrwu~}~ihov}{mmjovwtstmkejbp|}uy|qppmop}mmlr~|mmkovwstjnoncbcuuvv}z~zsnnmm|mjii}rnpzsrtnnwnxuwwsrnnmkkn{mpjjzpqsuuvvxrvusvyx{sumlkhhyvwvjiinmx{ihmvt~zt{yrrqvsrx}xtuzsvtjhihwuuiipil~ylmpvyx||zyrrqrrssѐzsnonpsuuscgghehux|rvnx~yvuuttƉwxwrrqqrsrtjmlqnijvwsrchg}nnln}ylfufttuqstqrqqrxz}pkmlnpqytzeeflpmww󁀆uvdarvuttwt|stsqppqqvw|~|oniljrmw~{syfhm~nfaabrsvvruttnqrprrssx}ptnlnkmqisutpg``itvvwupsrour~xwrrjpkhoupn|s}~uhffe}zuvvwwux~~{qtt}xwtuihftsvynon|}~oxhgghfqvvwvuvvvusqqrx{yxrvhkyuvyq}wt}{|cdbhgluuwvvyyyrytqssrrxpzx|{ss{xtzx~~xuzhahdbfhhiim~zxvntrqrswxofrxyztto}yz{tz~wvquwjoki`aiekifhdeedyyqtumowxmrvvx|liifoygfslx}zutt{ylplmvrrqqmoolmjsknhifiddi|txktwoypxvllihgrefphmztvvvonpznhlpponoos{nojeheeddkyspkppommp{ziu|ecacfkxxwsvvuoymomqppoqolrjeeggfhddeovift}xpoxtyuzu}}wehttxwwur|{opypysqrpskjdhhggegfjopw~jv{~|uq|wz{qsuwnidgxtxxwztsmnopxuzys|zuhdffgkggiopsuurnipmnrmrxtqt`gfvxx{ppsu{ty}}~jddfdefggkmpzivvqoswimmnnmmqjlhbvwxx凑zzqxx}|pfeddghnwrprzvgsqmorntljlpllkcwwxwx{u~~}}qyyvnfeddggiiyvxpwveggihpmnkknllkdcs{yuluupo~|~xy|osrqponhdffgho{}wshtcecdgmopklsmplxqjj|m|lt}pr~x~}ywv}qptnrqtwxmqiigk{hnlecfgljlmksmmooppkinc}{sqqpsqomoomlnsttwsm|qghyzmjneecdeddfijmqsvommqxh~pq~znmnmmnllmrsqrzeezwwnykpkddccdiquqmq}h]`ypopt~~mmnmmlmtqvvkkejyyztrqkggcdfkploztyswr_a]]oqoz}tmnmmnmmllkmtqrrmeehsb~xxlmlkvdf}fjhkvostuwdyvv}vuy}ommnjnomllmtwtrnqqkfmxlnsqomvxxw~|onmozx}v}yxrsxyzvllkberrsrunzvvsopqliqtvumnmwwkw~pmmltutxp}{|u|}qmgfdjinrrsuturrrpes|monpnukjjkkqtnttux}}kmmomxycyrcchairtomnsrrsrrw~qrs~jhllkponqnmstssovquymmnjz{v|baa``\cax|zmlmjstwrqorupqnw{ejfjlkjk}qnnpmlqx}tsmmlhvvlxcbh``_^gzslnjljawrnhrrkjgffidfhjkpnrrqq{ommlojlmkvvlnؐe_``aqtbqkimlgrj{tkuvkedeegghghgp|wuu}{x~vsmllmjjilijjnzkhejihj|minghggfmsbahddeefkhff|uwv{{ztqlkljihikimzzhgfgfgkiknphghffeeb}{geidmhlomjk{u||{}uv}wwwuzklihiijihhgfiklnzyogffefc]fbzndghllnnhlv||xts}|{xnmhnjihjjeihikqyqtmxje__]]b|fspolpjgjqvmmt{{|xsz~~{}v|yilmlpoqtxhlkqigmino{kkj_w\]}e}{qoovrhnjrqlvwzvsruy}{mmqwlqqppqqpr}yspghkqnea\\[]b\bdrmpptxypmlklrtnqvppsuwrltloqqwppsoo|rttkikf\\[[_^rnqmpuznjimpwmkpomptz}lapplmoqqpprpwqqpuutpoktp]\[[]ivoqopxnklikijjkolnmnopqvpppomoixqvvryyttnsmmpoj][[^lww{xxrllihhiiq|nsty}|||zzpm|mqighlp|uswtqshgjkmmd[[cwm{zz{ijggikszwxzyyxtymionokhggjllppqzlpnhjnkjd]__]]twxx|{|{uthgghirwwv{z|||wx}gptnmnpjutru|urijllininhhwvo`ddekuxzmgdvv|ehyqttuffqrmkmmkfeilrza^llfglmnnihinhhylgddhn]]gfo{{gnzqttfed~qpknpmggfh}l\\[[cc[`ahiiЂiiholdffwuzd]^egfyz}{ldeddfg{koo|oungeejc\[[YY\\cejhhnlklkwwhefkzwa]eigiapkkhifgfikmnomlngehycaZXYY`kdetlnmwyhfxiszzs_cgdizllggfeifggj~ootqifjhf`\[XYYghosto{xfglpmtutshgdegkpsxhkgfghpffzo{yppthf]^YXYYnkvqxooށfekpqsfw~oidlbcljonmvxylgffhgffqv}|qnrtj_^ZYY[]a~ythjpmosmflukgfjjWheoonpr|yglhfgbfehh~~v}puodcZY[Y^_bpnjmgm{{prpjeccff]WXXnumros}_aa`Y\bfgkeg~{{ztumokkobfc\bai{nt}z{|spYX[UXVYeXXnmqqkf^Z_`YZ]\Z`akek|{{~utukjosqr\_bhxnnin||nryi{XXjXaUT[dXmmnlooqdn]Z^Z\cY[kvp|kq||{{ouljjndb[b`gkghgsrmjj{zz]m{g[UVmpczkksfijghiYXYa`hmocgfipy{{xuljjkopy]dceihmm%ymeg]hzofdlSQSUVdw~|~golaeeh_XYdn[xdfecjjovukjmjjkmp~y[irkkgjjg`biffqhheTRRQWSWr}}t~o~gennuZVaffttbbcfbfm{ookntlrrmpuzslmpnlccnnm`r}herQRQQPWQiijtogdgngqlabaprwbbackip~omzvutk`aomqlnlccbb^^hhcylRQRRQY`lkj}rqhhgpmmnjpuwbdefjhsrwovvullXW^hsqo~s``^bsgidcc]ZTYQ_klysr{dpilptssddbcdr|wxp[[Zao|}{xn__]bhicdY^^]RQRddeetrp|pminjxgbbcqp}\YWWnu}xxz|rc`akx{cbd]]f]gdffwsr~}{{~~prggccbepyvxo\_XXipzxwv~zx`aucdeegaedbehgq~j}nqq|xhkcbb__zmxvhgfXWX^]iuwz~y~zkZY]ge}mjckhbbebbnryrglgqveejcmjb`a`}zifeXW_X[tstpyqtzzvi\^agiikkiibbcbbvv}wib^__avcklj[^^`]`|fhwlaxxf_iprstjzvvgeedeezhhgbbcbdst~tpxY]\a^Z[lmji[`_t}__\_qnsqj\XfWeedeefbdebbafhtu}ky`\^\_`bxokp\\^d}{}a^hhrqvqfgVSdqhgeeifndedba`a`dfjlmuj_^Z\[c]ktpho]`{zz힍^p_}|wtXSSUdfiiehgxyxe`bcbaaenkr^b]\]]bZvzxz}}jjsfayss}YSRS\giijjihjrxwhcec`capkqvee_`Y`[Zaixyzwzteeshqrtzu{}sgu[YYXpmhjjhkryysqncnccktfdcdZZXgfgjwyucdud|pypr{zzaxvjz[ZZ[YdjjhjjzzjieaabfsmllhgdiY^mfgvxs|ngx{rwx}zsoifzzomnVWU[Z_hijiimwn}mgmhbccbbfrajjmm}rtcdlk{{hnntzvrku|rugmZT[WUY[[\]`t{|yspnlchcabcfqj_Ycklnij_mlm{oinrlkehr{hwz]b^\RT\Y^]Z[XYYtoogjjcdlm`bggjo^\[Ybl\[i\ipmihiomcd``iyzybb_abb__\fr_b\]Y^XX^rjnajmenenwh^^\eZ[gX]qmhjjsumdb|czj_Y\abaabfnttcc^Y\YYXX`ojgbgfeccevxvwon\hpZYWZ]]kkjgkkx|{j|c}zi^_]babbdb`f^ZZ\\Z]XYXZZem_\jsnfdmixwmjnipqkw[_|ggkjjigq{pcckwwajcbcbeww_^Z]\\Z][`efmt`mrtskfpkmnegiukc_[^ngkkmtjicbbivejico|oy|zzpj^Z[\\a\]]_efivkvwukgb]c_ae_elhdhV]]illko|uwwbcdfzqjdippy{|ys`ZZ\Z[\]]acfpwv_llfcgk]``ad^`^Yijkk{uqpglsknrqqropvow{vzxf\[ZZ]^udmhfhpl\hf`ad`e^\_b`_`__Ykkjkzqk{ruysnqqvvpqfoold\[ZZ]]__olnfmlZ\\Za^_]\`_``__ZYfolh`jwkee~}uolniplpcihgfed^Z\\]^ewqsmi^jXZXWY^`a[]d`c`le_`spap`jsfhtlr}x}niggmcbgbggjmncg__]aquxvuu^caZWYY^[]^[d_`aadd`_ursbWqpigge|~rudb`_`aa``cijjmicrg]^|}oob_c[YXYXWWXY[^adga_``em^vvseuxvexrxxrlbaa__`achighp|[[plmcn`e_XXWWZbuu~gd`dxswvr\QTndcdhrrs`aa`_`a``bjgllaw|a[_ooiff_\[[WW\b]akgkuglvvtfRTQQbdbnp|uzgaa`aa``abjghhcw[[^hWrlk`a`_jXZpW[Z\jcfgukmux~sWlhhqhgkvrq|qdaa`]cdaabjmjhdgga\bmabfeb`jtkk܅rowfcefpnslwxplkefitjl~trqvjbb_WXhhihkdplliefgb^ghjiaa`jjk__lvuhefemkjnvwcupmngmqvtrqfb\\Z`_dhhikjkhwhhf[iwpabacvah^^_Ճwhwylfmmkouvt^``b`jusumXngYY^W_xhjecdihhihhlyreexfwq]\`__ddeheeklmlhmhlp``a]qllgm~WVVRYWnr~pcbc`ijmhgehkyddaknX]Y^`_^^rgeehe|fjnukjc`_[tgg]iqstWV]VVUT]puibd`b`Wmhd^|hh^^[YY\VY\^_ytygehjjiipddb]^_\fg]_YTUVWgjXga_cb]h`qjakk^XWXXZZY[Zcnjiikpnntrlhabb`\\Z]ZZ[^lt_\Z^^]`rc_d]^]]\ciXWu[WWXXY][XXYohjjnqqu}xonhga]_\ZYZ][^ll[ZZ[\\`_bdvf^]^\\[[Xsq]yuX\W_[^a_\]mgnnoggoi|{jkjk]^ZY[[YZ[[\[[^abdzpoe]\\[\YS\XvyzobXZ[^^_`Z^gnnonjfeon|ojxzw_`Y`][Z\_^_ZZ^^_agogjcn`[UUSSXr\hec`d^Z\bg__fmmnookelvppnqy}qgqnk[^__ddfjn]bag_]c_deqaa`UmRSs[sqecbkf[^Zbc\gilifehluuwvuqn]]bh^eedfggfhsuuoif]^agd[WRRQSXRXZhaddhlmd_\[\bd]chcbehjuxvxzww~c]e]`eemffieerhjja_a\RRQQUThcfadinbyrZZ\`h][cb`cgmxxtsp_tTab_`bdeffhfmggfkkjfeajfSRQQS_legddmc`a]^[ZZ[_]`_`bcditwxy~ccs{cb`b]ngllhoojjdiccfe`SQQTbmmqmnf``]ZZ[[axmaefkpootommwc`}pady]\]aerkimjgi^]`accZQQYmcqppqu^_\[[Z[\ekikrlssrllkrglt`\cc^\[\_`affgpxbfd^`da`ZSUUSSjmnnrqrqkj\\[[diinmporrojukvsuq]fjedcg`lkjlxrli``bb_d_d^^onxgY\\]bmpre_\nn|r[^nfzii[\hhcacdb]\adjpWTbc^^cded_^_d^^ozxd^\\`x}~fUU__g~{qr]d|ofii\ZYtgfadfd^^]_tcRRQQZZSYZ`__x__^e||ye\]^olq}\UV^_^pzqsxqbzZ[ZY\]q`dfrdle^\\aYRQRQQUU[\a^^dbaban|n`]]c|qnYU]a`aYyyfaa^_\][^`cdeccf]\^nYWPOPPQXc\\kcddmo_\o}}`jqqkW[_\arzybb]]\[u^\]\_sfejg_\`^\VRQOPPQ_agjlxfrny\]cg{eklkj`_\]_chjunxx^a]\]^f\\oscwpnffj^\RSPOPPfcmipggxv][bhhk^wnvga\dZ[dafddlnozb]\\^]\\trd}krpfchj_TTPPRUYuqlac{{hegke^emc_^bbO`]ffegirxo]b^\]X\[ZZ~urslsejeYXPPRPUVYigdfafztthjhc^[[^^UOPPfmdifivvsUWWVNRX\]]WYruooppjjcd``dX\ZSYX`tyglvxsstliQQTMPOQ]PPfehhb\TPUVOPSRPVW]X]pptjij``dhfgSVYaqdd`gtugkrbuPQcPYMLS\PeefcffgZdSPTPRYOPambn]eqppdjb``cdZYQYW_d^_^kjfdcustVet_SLMdg[qcbj\_`]^_ONOWV]ceVZY\enppmkb``dfnSZY\``ddqf^`Wath^]dJHJLM[ousu^fbW[[^VNOYdQnvXYYX^^dkj`_c``acfsnQ^g`a^`~`]Y[b__jaa^KIIHNINittktft][ddkPLUZZhiVVWZVZapdd`djchhcfjoh`addb\\ggfYkva^jHHGGMH__`ke]Z]d]g`UVUdelVVUW`^esvecpljjaVvWdae`db[\ZZVVaaZpcHGHHGOVba`shg^^]fa``^bgkVXYZ_]hgzuldklkbbNMT]hevds}kXXVZl`a\ZZSPJOGUabywouvihqZc\_cgffYXXVXYfxvuvqmnfQQPWdzpqo~oeXVTZ`aYZPTTSHGHZZ[[jhfvrftb]`]jtu[VWVWWewyzywfrROMMcjqlmn~}riZWXbnrZXZTTS\S]Z\\mihtsvqqsscfvt|[[WWUXdvmwkneRUNN_eomkkus{~}pnVXkw|{ZZ[[]W[ZX[^]gtvv_trbeeotk\_WVUSSnamkv]]\NMNSR^jlosntuzqbPPT][tc`Za^WW[XXdhovh]a\ek[[_Yauv^USTSpy{n^[[NMUNQigiengjqqpl`STW]_^aa__XWWYXXllusm^WUVVWlY_`^NRRSPSz{tp[^laWnm\T^eghi_plmm]\\[[o]^\XWWYWZijtjfnQUTYUPQ`a]\NSRgxywz{x~rTTRTfcif_RN\M[[Z[\XY[WXWWX\_jksbpXTVTWXXlc_dOOQWwqwzxpsVS]]gflf]]MJZg_^[[_\cY[ZWWVWW[\accwkaWVRTS[V_hd\cPSwn}nnovwSeTrrmjOJJL[]``[^]oon[VXYXXY]ebjUYUTVUUZSkolnsqtp^^h~||u[VnhhvrPwJIJS^``aa`_ainn^Y[YW[Yhdin\\WXRXSRZalnoknhYXf\efioyzztjprh\~jRPPOgd_aa_bioojhdYf\\c|my_\[\RRP`^\`lniWXiXpemefpzuooVmk_owQQRP[aa_a`qqp``\[ZZ[_lffeaa\aRVe[\kmgqb[koswgkmruohd^[ooecdLNLRQV_`a``enetd^d`[]\[[_k[ccffujlYYb`oo]cbhnjf`ju}xqgj\bPJQNLQRRTTWkstqvjhec\a\Z[\_kydYS\cdfaaUcabod]bg`_Z]gvpuw^lnRVSRHJRPVTQSPQQPkgg^ba[]efX[`aejYWVS[dTS`R_eb]]caVYTU^nonXXWWTVWVTTR]jVZTUQUPPUjaeXad]g^fpb}YYVU]RS^NSgb\__hi`XVqXo`TNRWWVVW[dkl[[VQTQQPPWf`\W^]\ZZ^pspsjjVciSROQTRaa\__lpn^qWro_SUSWVWVXWV[}UQRTSRUPPQ[bTQ`id]\fbsrgeidjjdoSVs]]b`a_\foeWW`lmV_YWXWZkkyUUQTTSTRTRW[\biUbgjha\hcfg_acoc\VRUe]bbadjs_]WVWW^l[_^YeqcmpnofaUQSSXSTSV[\_k`klj`]XRZUW\V^d`\`MTT_bbaer|jkwkvWWY[og`Y_demopmiVQQSQRSTSTVY\ekjTaaZX]aRUVWVWW[UWUP_aabbq|idd[`h`chggdejclojnm[SRQQSTjYb\Z\d`P]ZTVYU\SRUXVVUPaabo~e_nfitnvticgfkkee[cdaYRRQQSSVUeabZa`NPPOWTVSSVUVVQP[eb_V`yk_YXsruvwkdbd^eadX]\\[ZZTQSST[kega]R^KNLLNTVWQTZVYVb[VWheWeV_hZ\gafqnurc_]\cXW\V\\^bcY\UUSWfjljiiRWUNLONSRSSQZUVXXZ[WVjghWMgf]\[YqtsgjZXVTUVVUUW^^_b^Yh\STpqddXTXOOMNNLLNOQTWY\XVV[cUkkjgZkmkZmgnnvhbYXXTTUUW]^\^erRRfabYcUZUNNMMLNPXlluw^[V[mhlkgQGJdZYY]hhuuiXXVTUVVW^[aaWmrXRVdd^\[UQQMOTYUYc_cl\aiih[HJGGXYWbdqukp^XYXXUVWVVW_]^^YmRRU^MhbbVWVU`NQhOSRTb[^_k`bhkpjMb_^f]\_jgfqf[XXWTY[WWada^Z]]WSXdWY][YW`kbb~k}hp_\^]ebf`jjgbb[\^g__qhgfj^XYVMO__`_bZgcc_\\^YU]_a_XXWaaWd|zona__]c_^bhiZlgcc]bdhhfeZXQQOWV[__`bab_n__]R`ngXYXZmX_UVV|paqrf^dd`cghfUWWXV_hefyz_Ka[MOUMVo_a\Z[`__`__cpi\\o]nhTSWW\]^a^_eedd_a\`cWWXTfaa\arpIHHJKFNNeiugZYZW`ad_^\_bp[[XbeOTPUWWUVj`^^a_t]`ci`_XWVRh]]T_ehwgJJSKKIKTgl`Y[WYWNd_[Us__UURPPSMPSUVpkqa^`dcc_fZYZWYTUVS]]TV}}wNGJKL]aO^XVZYT_Wh~aXbbUONOOQQPQQYd`_`cedejga]VWWRSQTRRSV~b}iURQUUTWiZV[TUTTSZ`ONlRNNOOPTROOPe^a`cgfjrnuec^]XTURQQRUSUcbQPPQQSWVY[m]UTUSSRROjhTp|zlOSNVRUXVSTc^ddce][d^qp`b`{aSUPPRRSSPQRQQPQTXY[vqgf\TSSRSPJSOmpqfYOQRUUVWQU^deed`\[ccqf`nq{mVwWQXURQSUUTPPUUX^f^aZeWRLLJJOiS_\ZW[UQSY^VV\ccdeda[ajeedhpuzg]gfcSVWW[[]`cRWV]UTZV[\hXXWLdIJjRjh\ZYb]RVRZZT^_b_\[_biikkhf|TTY`U\\^]hjje_]TUX^[RNIIHJOIOQ_X[[_cd[VTRTY[UZ_YY\_`jmkmqnovZT[TW]]e]]_Z[g]``aXXVXSIIHHLK_Z]X[`eXpjRRTX_USZXWZ^dookjhVkJXYVWZ\]^]_]c\\[`aa]\Xa]JIHHJVc\^[[dYVWSURRVUWVWYZ[`knopuZZisZZXwZUf_cb^dd__Z_YZ]\WJHHKYddgde]WWVTQQRRYoeX\]bgffkfcdnZWsjZ]qwUSUY\ha_b_\_TSWXZZQHHPcZhgghlUUSQQRRT\c`bicjjiccbi^bjVS]\\VTSTWYY\\]emW[ZUW[XWPJLLJJadeeihihaaSRR[``edgfiifzakbkhjfӡ~||wsopqpvnnpvqlhhgg~wzsrqqrnpnntshhg~z}x~yuqqpvppnmhh􌴴wuw}urrstzz~}{ztkllz{ttywsxst}s~zz{wwrr}}ttszxsz}|yz{yxwrosuzryvuw{xvv{|xyyxvpl}nvyyw{uuwwvwyzzy}~ouzytowtwzwvxvx{~yzy{~oozuvvuxvxz}~p~{{}yvu}zvrqyv{}p}|wwvvxwrowz{}{gww{|wu}y{hghs}~vvxyo~ghfujf}uxptziwsnmox퀁|z}jjnommn{{}kqpnmmo{xy{{xnmmu{{}{z޹oottvvyyz~roqvvqryz~}xlpspr}{|~~yЃ|{xy~njzrrzx{zqiio}wtt}wvmzikiiuvtgemsxzpmkkooutsggeekxxyvk{wuon~tddekjuslz{zopu|pqddfjiwerd___xoa[fskjqpedellju_mqp^^fu{ihhirxp\\____}o^^a}mmggfghrqnjfWW[[\dzm{fbsebhfmgghrnjZWYVZl~{kifchktohodYZY[lun{wioffkkxmeccfgi`~uky}lfikwzmcdffiipplkfejjomjccggilv}z}xffjkktxzvfcceiomrpqkjgiooijdhipotwwxuhlko{zgmj{{w`e}k{|kmy~qnx}qvxyzmuxrw~x|}u~npltonnoop|~~}rrqlnqpnqxohf~qn{z{mqqsqsosqqplgegbdsechjxjsvwvvqvqwlxebble[bfmw|zqq|xxvqtqpqtwbabbchddbw~qyzs{ystquupnqxmabccdjlglizzu|{~||uxpoplvuicmbcizjadhukmyy7z|zrjjihhvuyldccjqpmkxzw||{{rj\cu~~wh{yskzyz|}cbbyuwfvy~}ynlde|lrfivs~nsvrghjt}}r}mmrdhbn~sjdakwtv|}wv}y~xzz{at|x~trxxxd{td{trrvqsvuvkirrkgӅurvxurxkkwfxwss{||ppԀnnjecdedkbacifb^^]]ogqlwfddegbdbbahg^^]mxjnjoifddedkeedebe^^]]{gdgsmfddfipowtsqqkccdijccquiieifgqgwutopqmnjislycckixektptpnopnnmhfjkiaihdgmwighqnpmnnmnmlfbs]ehiiwltgfhhgjmnnmquus^diif`ivghkhghgjoqmnmnssu^^jgfs|isrvehgjmorr~w_mrjmomujhplxhqbbiglouu~~_tlluxkkiijhdr_fjloru|vkxrYukkornhgmpsuisvv|nkZYZsxg|onxgghqsvrrusz_wuvnYZXzxwwyudsrr}tu}tty[Xvrwtstmegoqqowu|s_rrqfl\jfbackttuoprpprpkils[]abaabbrrtw{qqprwjjl^dcaadrsty{jqgho}xxjjp}|kaaiqrm}kmkinpwxvwwuzycbhhjjpiijnsomw|}vutbbejj|sbcijnmt~}uug\vavgdsf{zynvklnqstusrtryvvw{|njttsttlrt}vurzwmijoa]ykqrsqprsactrmwy{jmkc\]]cpsiqeepmsjt}h_n]_]]irigYV]cokwnvz|sda__cchgeXXVV[kkmj^syoki{zcbsqfUUV\Zthha}|{opodwydipbcUUW[YlZgZV|VVnufXR\iuv_^daWUU\\Zyvl}V||dhgVV\kvo]ZYYZczogSSVV|VVtfVVXs~y`aYXXYcaea\NNQQS[qer^Yj~~~sXTYX_YXYidaPNPNQctxwrbwx[XUY]fre_fZPQPRbvlern_wxxbXX]^]k_[YY\]_Wwwvtuwlwaztmp_X[^jm_YZ\]__ffzzxxa`tZY]]b`]YY]]_blsps}{nzZZ]^^gkmi\YY[_echfgv_^[\bbs_`Z^_ffjmmnk\`^bnmr]c`qp΅~~lUYpu^no~acnwws}zuuvdaksgtkll|\zhkscuvkyvvqkprzuip^a]f`_^_^ycu}vpspnbca^_a`^`gub[Ypdb{oor\b_b_c^b__^YXYUWgZX{^`umwrYvrbeedd`d_f^jXUU`YNX\cmqtlaanffd`b_^_djVUUW^YYXmseklclhcd`fe^^bkaUVVW_`[_]oohnmomlgia_c_ji^XbWV]n_UW\iabkklmle^^]]^kkoaYWttW^ccb_klinmnnf^RY~{kttsl[lje`rlkmnqx}XXpkmtYgjorumcaYZz~{zq}bj]aokv`hmh^_altui|qu^{wwzeeUZS^zv{uvtz}f]UR[gungjopjjwrntt}wx|kwjik}Usrxgy}otv}wlqhejvhh}XoygWntstsuw~}|gffzhcdfef^\ff^Yyttuwhehtuhpriel^^jWxutj}xxiefprkmӇrfggwdda][\]\cYXZ`\XSSRRye]gczn]\\]`Z\YY_^SSRc{n`e`f`]\\]]d]\\]YvYSSRRq]Z]jd]\\]]_biiqljff`WWX_{`YYgk`a]b__j`pmleffbc^\fb{oXYYaapxy^dmjmhefgdcb[Y[\_zW_`Z]doyxb`aifhcddcdcbXUeS[^_`nclxw`^^\`ccbdggdTZ__^Wan_`b^^\_dfbcaafdeTT`^]jszaxjilZ^\_bdffepxrhUdh`dfcla_gco^gWW^\adiiqpwvUjbbk}pab`_`^ZhT[_`cfjzywtrl`mhNlbbehe_]cfhj^yhjtkqc`NMOjn_sefo]\]]gikgfjxhnTljkbMNLxx}rpplpjYihhsijrvuiilOLhdrsx{pjijaY]eggemjqhUffeX^K[VQOR]jjefiffhxfa_bdKMQSPOOPghjlotyggfhyym``bsNVSPOORghjnto^g\]esnn``fquqn\POOUcg^q`a`_dfmnlmmkpmvSOTUVVse_`adiecmrslkjXxOQWVVniY[`aydcjsskk\S|}~mvZjUQcQoqqgnbcdgijkigjhqnxnostzwuye`jijii`k~nvmljspdcdi[VpbyghiffghU[~lyifortbee]UTTZgi^gYZebgbl|tzw{zaXeTVTT_h^\MJQWbcofnrs}xui[XVVZZ^][LMJJINccebVvwjofb`rqZXjh[IIPMl`_XtrrefeZnoZ_fWXIIJNLdQ^QLsLMdk\NHR_llUTZUKIIPPMpmctMssrZ^]KKRbmwweSONMMNVlf^JILLsLMk\KKNjt~pWWNMLMMVU\XSDEHHJQg[hTO`ttujNIMLSMLM`[XGEGDGYjnmhXnvwoPNKNS[h\V]PFGFHXla[hcVnnyYNNTTbVRPPRSULlmmkyjmamXqkdhWORTbdVPQSSUU[\ppv{{mnXXjPPUUZXTPPTTVYahegvpspduoPQUVV_ceaSPPRV[Y][\kuwvwUTRTZZkwyy{VWQUV\[_bbturst`RVVZfejxy~TZWhgyzxwtrraKOgmVfgvx~yWYenmyyzwwhttpmmn\Yc~h\iacbbqQo\`gXjkuaqnnic}x~efoj_eRUQZUTT}q[mxt}~~idg{edVWURTVUTU^m[SQi~\Ys}xzcbcffPVSUSWTWTUTWRQQMO^QOrUWhajeLifUYYXXUZT\UaPMMXPFOSZ`dhaUUbYZXUVUST[`LLMMOUPQO`fYabXb^XYU[YSTXaWLMNNOVWSWUcc^ddedc]^VTYS_^TNXMNUeVMOTaVXaabcb[UUSRS`|`dWOMkkOV~[[XVbb`edd]UINr~qalkkcSec]WyicbefipuONNe~yyacwlxQ`cgi~z|{nez[XPQnqyr|{rxrw|xiuY^PTb^iwy}Wy}azyd_RRT_hhz]rhlU~s~|nnoXuszz[LPITzzrn|{t{nwllqsz{zys|}[RLIQ]kd_aghbbojfmkunp}|yo}~`vm__`sJjio_wquhmouoyydk_\}yx_kw^^sNep]Mekjmlnovvzu_][oxx]XY\Z\TR\\TPpmmnq{~a]ww]jk]fh^[aTT`Opnndwqs{e^^wxfhad{~|ywjssrttsemkrvwvvtuvhmpu}}yurpnfjlruvttut}~~|zπ~ghfnuursdlnotsvvuvvuiqmomlpptxvssnjnlvprpp돁lto}uurrjynckkdkpoosnrvuwwvnsrnmlplwmmojmmospprwvxjjknqh}fbsszlkkdomlgloortwwzvt{{ontrrqo}mmqkouoossvvub}|}}lmoklkopdpqq|sfissgckopsrtpuolxmollkqrpookkiqlonsrprya}ktnoopqmffpowxyyussqmnwqpopmmltkollkkākwkqrqnsooqpnnrv}}tw{kpplnmmlty{wzxyy{|cefmnzwvupkkjkjjkhjhjhilsorroouwxov~pkknmsrjlqxyx{uhjd`nqnuwqjkkilljjhxhid}s~pphoyrutorywpkljjmqrqqnkjxwy{plrptcjz{uuskklhfdgqrqkkesufacaemujprvppjqqrrqqpkpwxz}mmqzznap}{{hjiihihahbqrrunbe``ca`cqo~nvqwtrrqpqipxywzmmlhsp}}|njjiihghhadZ_vxreeab``aslmnpz|}trqrrqqpnipxwtxtrmmlsnmo||kjiijjhfhkjab`_o``__``c`bagftt|yzpnqqrronlglnootynnmnmnny|z{|jiiefhlgebadkg`__d_eslgihebrsx|moqsrsrqommioqotsnmmsnut|{zw}ljjiifinhiihaegh`__bhilfggepzsz~ussrromnmppotp|onmut~wxxkjjiiqihjhjihggf`__hk\filegtsr~w~}ssvqoonmmorsuy|{|~||}}wymmojimkighggftnhfphipfbfjbi[Sywuwvtuyyvppkonfacqur~|z||{zykiohmwjggfhnnpbrqhhjnb__SRwvwwvuythomioerbab||{zyz~jjgdhlhggjbooppt}urvwrcWSRw|wvwyxxtoojgp{reehvwu{}{tzideddbgkghkeeoppnysjeefjieXURquwxyxxwsniopn{p`gnyvvuz|yttyhddodbhhgjhruxtuuuhfedludaVsrwwyxxwtjyoppn__ony|quvvwtheijegihlgeghj|}}|eedgpr__~wwxwyjhxnoomtqfknmqutvwwvxzzjrrpbhhjheeinkvu||peddikVUyyvtwxuvln{pbghklxfntuuwv{{݊xntlqieht{trkffi{unkijioq{wwz{~qtlwth{wguvv{wwy~vvnrnkjfe`ejqttrlffivrorqlhhij~wwowvvvuhnbaafetv{wzwvw{nsnnjjeehifmsxssgfnvwqcffhhes{}xwwvwvwvgbbcaajjxvxtznuroljceggfpxtsqgmoodefkilrtyxzwwxuuvvuwuocaapoty}xxvwxxpjupifeljc`_tsqqmkkm\effjqquwyzxxuung`uuxuklocpuys}ulqvv|}rpuhlhhfag^nzrq}lcdg^cefiipxuswyystuuttre^isrurrh|yssnjrqwz||pkjlhjafgac`_|yjl[Ya^ffgfiqvgkymuututtwgmkrrqnrz{wzttpys}xxwqnmjcfhZabdbqZZXb`jfgqotnlswxvqtvvtuvrplqtrqtrye{|uzyvutqsqkh`\`a_pyxrXY`Zjigknpoosrwwvusvtvtpwzopnqnnryz|}xxwwtsstk]]a[ocdan^^ac`hmjjoorooxww{utsuqwzhfuqnusx|w~xwyxwwvsttrttfrsd^^]]_bidekknoon{wwuzrppmhgiWz{soptyy{tztmrutmtursqtue^^]^^bcddjooponwvutsokngfhi`jnlprtuuw{xuwsyt{{shiu^^]^^_dcedimoonoonnwvwtkiieqrgy~lzfqt{~vvqvunox|{vvuunhpqhrl^_^a`ccmnnomnqlyw|qmje`higg|~l`bw|vvnomw~wx]tqehkhi^``ddfmwrnpoogensxpwomb`chjfp~{_\n~kv}lopx{tmrssvk`a__deenwwoomghksjjriabcgghw_fe\wu~}vhhvosom~|mlmsspbgeefxnonpnmmhfhhr{iqqdcb`gmqY[\mup{hhj{qvdelfutnirpegfgvwqppqliiacsiikjqccihegb]hp{hfefbdwa_edhqrmlohehhghppqpmkjcdeiilswnndefbh_nmsyf}xwhfif}{dbeuomkkljitmlnjhghffkgpoourjrjlt}iwwyxz|ne_ifh`hhwy{h~uziwovfrnnlloqsttnxfeffhgjoomhijk{|{rszxt{{zkihnoegxxzzxworsgnww{xnmvnnmnotrntrhkffiijilokkijikjpjzz{yxo}|mjilsphgly{qrfqrwmx||wpqmtolknmrqfhhjfefifsgqquljjikkfx{||wqi~tplriofmgtdfrsqlfmz{|xtiaekllqujmlddhiffgiivqntlkjjomxy{||{ppv|rm`dhrspkddwhfgoo}vwttsdikllmmfjmfddhlmfrwyopcnmlifn~wntokjioonuqstzyxwpqppuuptfa^jloteedgdeddyz}wqo~c]ckicjl}vvmjgkrgrtqqyulsnsonmmqstklp]ixqeddgffeekvdd^_ef`dkzwnnos{ljjis}ihvswrq|qomlnnicrstsdzw|yhdfgfftwx}yd_]c^ibll}yliw~gljkkttvssqsm~mmnlkjfgpnqa~dyvoddelrtvv{}f]]^_ellkk}ymjihgffoplktzolpnjqonmw{oilgrrbbc|}xkjmstuu~zj^^adkklz{xyqjiggknlqtw{ollnljiihy}}|nvuuoksvwk^^]^_e\dmlw}vlmmipmljmoxm{{lmozwykkeghiomllv}zuojkr~libellcc\mm~srqghmllopfyyzk~yvvs~svl|uvhnvw|uvoorhttnfllkicdonuqyggkidmpoxyp|u|v~lywzngw{zlvfsponnmkgekhu~~lhcgfddcgnmpzqjlgf||xqt}z{klrnszfheflzy~fegpnnsmltonsndwbbecdeghgffietuxfiuekdg~|kkqtstutonbvxwofccbcdgi^ggfimqruj|iqffkjjhmlxoz}yzh~xymn|~pneepxlddccfdged^]doxwstuuwffhjeefifjssqjqkkue|{yrvky~nkaaetddeccdkurnf{gvvvurnwlffeffejkxfvsvlrrqz}p|ihijrvsv}hubbcdieefddjnzdz{uuvsqqdcfheefkgwhoyzzyrxwwyvhgghmvrkioqw`cn}jeonki^emeu~{qttspsxnnlhheelznoqvpuzxvswvwjhffhirsn}{uv{rryn}md|d|t}}v}zonptps}{ikeel{|}|tu{xwxxwxqhfhhjrnz~vvqvvuvutvrnk^hhfhgfYaagkmlljkl^cfkssvolifd]`bhkljjkj{svvrpvuuvt]u][aihffX`cdjillkllk_gcecbffjnljid`dblfhffvuwz{zvbjeskkhhu`nbW__X`ddidhlkmmldihdcbfbmxccf`cceiffhummv{||n``adg^s\Xiho`__Xdaa\beehjmmpljqwqedjhhgesccgaekeeiilllYytsuubceabaefZeggrg[_iih]Xaefihjfkebncebbaghfeeaa_gbedihfhpuW{xt~ajdeefgc\\femnookihgcdmgfefccbjaebbaawuamaghgdieegfddhmtsv{jmqaffbdccbjoqmpnooqr||zY[\cdpmlkfaa`a``a^`^`^_biehheekvmnewltfaadcih`bgnonqw}}k^`ZVdgdkmg`aa_bb``^n^_Zsitff^eohvkujehomfab``cghggda`nmoqv~{fbhfjY`pqkkiaab^\Z]ghgaa[ik\WYW[cukww`fhyylff`gghhggfafmnpvwsccgppdWfsqq^`__^_^W^XghhkdX\VVYWVYgetdlwg|myyjhhgfg_fnomvzpccb^ifvssqd``__]^^W[QVmnh\[WXVVWibcdgqst{jhghhggfd_fnmjnjhccbidcerura`^^__]\^b`WZWVfWWVVWYVXW]\jkyrpqfdgghhedb]bdeejoddcdcddorpqr_^^[\_c`^ZY\d^WVVZU[ib]__\[klprxcegihihgecc_egejidccidjirqpmra_^^\_e^`aaY^`aWVVUXX^_c]^^]hskpt{kiihhecdcffejfredckjvttl`^^f_`bacbaa_WVV^aR]ad]`mkktmtsiilgeedcceh{iko}xrqrtrrkmaad`_ccaabaaba`lf_]g^_f]Z]aZbTNomkmljkoolffaed\WYgkhtrprrtpnm_^d]cncabaababgeegXhg__ae[YYNMmlmmlkoj^ec_e[hXWXyrqppttnor__]Z_ebaad\hfgfjwslhmpl\RMMmrmlmonnjee`]fqh[[^vu{lmkqryttqio^ZZYZZ`eabe^^fggdoja\\]ab_RPNgkmnonnmid_efdqfV]dwollkpvzrniin\ZYZe\[abbealnpkkykl_][[dn^[Pihmmonnmj`oeffdUUedorgkllmvuuvwit\Z^`\`cbga_abbssr}x[[\[^hlYYtmmno`^ndeecjg\adcgkjlmmlvunvoou^ggfY`aca__bgcmkrr}{g\[[Z`eOOoomknnklbdqfX]^abn\djkkmlqqvu~mdjbgb]amskid]]`y{|qxkea_a`hjyxqnnmnpqt||gjbmj^qm]kllqmmotlvldhdaa\\X]bikkid]]`zlheigc^_`a|{unnenm}|mlkv^dXWW\[jlqmpmlmqdicdaa[\aa^djoik^]dxlmgY\\^_]kyrwtnnmn}lmvl]XXYWW``vuvvnlnjpdkifcaZ\__^gnjjh^devueZ[]b`chkxpnqnmnlkllkmvkeYWWfejosnnmnnf`lg`]\caZVVkiggcaacR[\\`ghlnoqooll{e^VkknkabeYfkoiskbgllrshgl_c__]X]UdphgsbYZ]TY[\__fnkimppjkllkki\U_ihkhh^rxwoiid`hgnpsrgb`c_aX]]XYWVr|o`bQOWT\\]\_gl]azpdllklkkn]dahhgdhpqmupjjfoisnnhedaZ]^PXYZX{}ygPPNXV`\]gejdbinomhkmmkllifbgjhgjho[yqrkwzpwolkjhjhb_WSWWVgouvynhNOVP`_]adfeeihnnmljmkmkgnqffdgddhozpwrvvxsnommkjjkbTTXRfZ[XdTTWZV^c``eeheeonnrlkjlhnq_]kgdkinrymtnvmonmmjkkikk]hjZTTUX_Z[aadeefeedrnmkqiggea`aNqriegkpozwqxxjpvjdilkdklijhkl[TTXYZZaeefednmlkjfce`_`aXaebgiklkmqnxxwxwk~zynjpkrrj_`lTTUZY[[`deefeefednmmkcbb^ij`pucp]hkrum{mhwlvkdfnsqmmlle_gh_icUUTWWZZdeefdegbpnrhdb^Zab``sucWYnsxx|zwllvdecntnozyTkh\_b^`TWWZZ\dniegefe]\djwnfmfe[Z^ac`hurVSdv}xxvztalsbefnrkzyxdijjmbWXUU[[\enmeffed^_ai``i`Z[]bbaoW]\Snl~zuysl^^leiecuzysvdcdjjgY^\\]nefegedd_]_^iq`hh^]]ZcgiPRSdl}}|gwq^^`qgzm[\c]lke`ig\^]^mnhgghc``XZi``baj]^cb^_ZT_g}rz|yy^\[\XZyzwnXV\[_hidcf_\__^_gghgdbaZ[[_``ckogg^]_Z_Vedi{o\snn^\_\sq[Y\kfdbbca`kdceb_^_]]b^gfflibiacjt`nnqqsug_Va^_W__npvuq^tkp_nel\ieeccfhjkkeo]]_^affd`bqsrhksqmtssda_ef\^ooppnmehi]dmmqoddmeedefkielj`b]]``a`cfbbabacbf`qqtqqhuufbacjg_^cpr{gh\ghmcnrrmfhdkfcbeeii_a`b]]`]j^ghldbbabb\orrsoibvvlhch`e\c^k[]higb\cpqrnj`X\bcchlcee]]``^]^``mhekedbbgenoqrsrhhlrhdVZ_ijfa[Zmu^\]eeslmjji[`bccded^ce_]^add]hnoegZffdb_gwtmu{{xejeba_eedkhijponmfgffkkfj\XUacfk]]_]_]]pqtnhfuuZUZdb]ceww~zslld`^ah]hjghgokbidiedccgijbcgT`oh]]_^_c{|}mvvZ[UW^_Z^epmvvddeipb``_is_^limhgrgecbdd_Yiikj[qnsp`]^_^^mop||~}to[VT\Vb\gf}xswob_mt]b`aajjliigictccdba`\^fehXu[pmf]]ekmoox}}rt]TTVW]ff}ysoc__^]\[efbajpebfd`gedcmqe`c]iiYYvZstoccflmnnmu|q`UVVY]fgfupqnof`^]\`dbfjmqebbdbv{va``_pttsz{~}goommhcjmmbVVTVW]U^hfunslbcc_fcc`cenyeqqbceq|vm{oaa\]_`fecc{|{ovwrmgccjub_Y\dd\\Vfgutjih\^cbbeg^uyppqbwtpllv}juimcytzm{n`xz{gopunoggi^iie]ccb]]ggwxkhq^\a`]cgfovvphyslsltcqorf_oztytcnw[ifeddc`_dalvwwd`\__]^]_edhrhcd_^ssogksqrbcjgk|s^`]^etrxu\[\eddidclgfj{g]o]]_\\]``__^a^kkxvwv~yzq_b}n]d]`x}~sa`fihikk|y{gfZoq~ph_\\]]\]`bV``_beiilzzxx~asyaj^_dccaefqwgqspp^rlmccrxyuhd]]iqd]\\`^`]]VU\gonjkkn]]_b]]^c_clljcjddn\wwupomfkaoxteaYY^m]\]\\]dnkg^t`mymmlienc]]^]bdq`olpfkkjsugwp^]^_hlilt]k[[]wb]^^\\cgr\ystwmmlmnjhh[Z]_]]^c`|{o`grssrjommnk\\]blha_egmX[gub^ffcaU\d\mvshkkjgjoeec__]]drfhinimsqnknll_][[^_hidsqkkrjipvx~e|scZs[sktsmtqfefjgjtr`b]]dsxtuulmspnonmnf][]]`hdpskkhmmlmkkmifcU__^`_^QXX^bccb`acTY\`hhwke`[ZYRVX^ac``a`}zz{}qi~jjiflkklmjTlTRY``^^OWZ[a`bbabcbU]Y[YX]\adb`_[V[Yb\_\]ml|zz{}moonlY`[jaa^^lWeZOWWOW[[`[^cbcdcZ_^ZYX\XdoZZ[WZZ[`\\]^ldwzzclp|~ppeVVWZ^TiRO`_fXWWP[YXTY\\^`cdfcagnh\[a__^\iZZ^X[b\\``bb|zzcOnihijXY[WXW[\Q\^^i_SV``TPX\\`_a]a\YeZ\YYX^_]\\XXV^Y\[`_]^fl|yMvqnitW`Z[[\]ZRS][deffb``^Z[d^\\]ZZYaW\YYXXnzlXdX^_^[`\\^]Z[^cjilq`bfW\\XZYYX`egdgeffhisswwqPRSZ[gdcb]XXWXWWXUWUWUVY`\__\\[aalcd[mbj\WWZY_^VY^efehntwtbUWQM[^[bd^WXXVYYWWUeUVQj`k]\U\e^lak`[^ec\WXVVY]^]]ZXWedfhmuwr]Y_]aPWghbb`XXYUSQT^_^XXR`bSNPNQZkammV\^oob\\V]]^^]W]degmnvjZZ^gg[N]jihUWVVUVUNUO^__b[OSMMPNMO][jZbm{]rcoo`^^\]V]efdmqfZZYV`^mjji[WWVVTUUNRHLde_RRNOMMLN_XYZ]gijq{{`^]^^]^]ZV]edaea_ZZY`[[]jmiXWVVUSUYWNQNM]NNMMPMONSR`aohfgu|\Z]]^^\[YTY[\\af[[Z[Z[\gihijVVRSVYVTQPRZTMMQLR`YSVUSPabfhnY[]_^_^][YZV\^\a`[ZZ`\bajihejYVVSV\UWWOUVWNMMLLOOUVYSTTS^iafjqa__^^[Z[Z]]\a]j\[[cbnlleddXVV]WVYWYXWWUMMUXISWZSVcaajcji__b][[Z\_r`bftojhjljjdfYY\WVZYWWXWVb]VT]UV]TPSXPXJDecacb`aeeb]]X\[SNP^bvv_kjgijlgfeWU\U[eYWWXWW]\\]O_^UVX\QONCCcbccbae`T\ZV\R_ONOypiihglleeiVWTQV[XWWZR^]^]anjc_dfaRGCCchcbcedd`[[VT]h_RRUl|lrvac`hjplkg`fUQQVZWW[TT]^^[faXSSXUGEC]acdeddc_ZU[][h]MT[mywdaa``fkqge``eTQQ\SQWXWZWadfabpbcVTRQ[dSQF_^cceddc`Wf\]][LL[[eh\_``akjkkm`kTQUWSVYW\WUWXYjjitoRRSRU^aNNjccdeWUe[\[Za^SX[Y\__`aa`kjcleekV_^]PVWYWUUX]Zdbiitr^SRRQW[EDvffcaddacX[h]OTUXYeS[``a`feekkjkud\aY^XSWcjb`ZTTWprshob\XVXW^`pxogddghksrs]aYdaUgdT_``eabdiakb[_\YXSSOTX`bb`ZTTVqc_\`^ZUVWXsr|lded\dct~rdcbmU[OMMQQ_`fbebacgZ_Z[XXRSWXU[`f`aUT[ocd^PSSUVSbphnjeeddcdtyxcdmcTOOPNMVVlkkdbd`gZa`]ZXQSUUT^eaa_U[\ml\QRTYWY_bo}gehedeby}bccbdmb\PMN[[_eidccdde\Wb^WTSZXQMMb`^^ZXXZIRSSW^^cef}hffbccr\UMbbebXY\P\ae_iaX]bbhi_]cVZVVTOTL\g_^jYPQTKPRSVV]eb`d}ggabccbb`SLV`_b__Uiome__ZV^]dgii]XWZVXOTTOPNMisfWYHFNKSSTSV^cTXqg[ccbcbbeT[X__^[_ggckf``\e_iedd^[[XQTUGOPQOrtwp^GGEOMWST^\a[Y`efd_bddbcc`]Y^a_^a_fRpghampfmfbba_a_YVNJNNM^flmpe_EFMGWVTX[]\\`_eedcadbdb^eh]][^[[_fypfmhllnieeddaa`bYKKOI]QRO[KKNQMUZWW\\_\\feeicbac_ehVTb^[b`ei||{pdjdldeeddcabb`bbT_aQKKLOVQRXX[\\]\\[iedbh`^^[WVWEhi`\^bgfzqngnn`fma[_ca[bc`a_bcRKKOPQQX\\]\[edcba]Z\VUWWOX\Y^`bbdhennmomauqpdagbiiaVWcKKLQPRRW[\\]\\]\[eddbYXXT`aVglZgT_bilcqc^ncmb[]eihddcc\V^_V`ZLLKNNQQ[\\][\^Ygei_[YTPWXVVjlZNPejoospnccm[\ZekefqpKb_SVYUWKNNQQS[e`\^\]\TS[ane]d][QPSWYV_liMJ[mtoompkYdjY\]eizbqpo[`aadYNOLLRRS\ed\]]\[UVX`WW_WPQSXWWfNTSJecuqlpjcUUc\`\Zlzqp|jm[Z[aa^PUSSTe\]\^\[[VTVU`hW__SSRPX]`GIJ[ctts^nhUUWh^|}vq{dRSZTcb\W`^SUTUde_^^_ZWWOQ`WWYX`SSYXTVQKV^tiqsppUSRSOQ|wvp|qneOMSRV_`[Z]VSVVUV^^_^[YXQRRVWWZaf]]TUQVM\[`rfSjeeUSVSjh|RPSb][YYZXWb[Z\XVUVTTYU^]]c`X`XZakWeehgik]UMWTVNVVeg}mlwhUkbgVe\cS`\\ZZ]_abb\fTTVUX]][VXhii^bigcjiiZWV\]SUffgged\_`T[ddhf[[d\\[\]b`\baWYTTWWXWZ]YYWXWYX]Uggjgg^lk\XWZa^VUZgir^_S^_dZeiid]_[b]ZY\[``UWWXTTWTaU^_bZXXYQdhhie_Xmmc^Z`W\SZUbRT_`^YSZghieaWOSYZZ_cY[[TTWWUTUWWd^[bZYXX]\cdfgih^^dja[MQV`a]XRQdlUST\\jcdaa`RWYZZ[[TY\USTW[[T_ef\]P\[ZWT]khbjqrp\b]YXV\\[b_`agfed]^]]bb]aSOLXZ]bTSSUSUSSghke_\llPJOYWRX[kksoi{de[XUX_T_a^_^fbY`[`\[ZZ^`aYZ^KWf_SSUTUZrstdllPQJMSTOSZebkk[[\ahYXXV`jVUc`d_^i^\ZY[[VP``baRhejgVSTUTTcfgssutkeQKJPKVP[[qlhmeYVelVZWXXaac``^`ZkZZ[YXWSU]\_OlRgd]SS[aceeottijSJJKLRZZqnhdYVVUUTT\^YXag\Y][W^\[Zdh\WZT``PPmQjkfYY\bcddclshWKKNRZ[[iefde]WVUUX\Y^adh\YY[YmwrxmXWWVgkkjqrus]edcc^YacdXKKJKLRJR\ZiciaYZ[W^[[X[]ep[hhYZ\hsmxdrfXXSTVW]\ZZqsqelmhc]YY`lYWORYYPQKZZih_^]TV[ZZ]^TmqggYnkgccmtal`dZpkqdreWoqr^fgkde]^`Vaa[SZYXWQR[[lm`^hUUYXT[_]fummg^p~jcjckyxZhyxgi]VfpjpkwvvwZemSa^][[ZYUSXU_kmmZVQUUSTSU\[_h_YZUTjjf^bjhiYZ`^bsjUWTU\jiyzxvolSST][[`[Ya[Z^quu]RfRRTRRSVVUXTbwc|omvnmzupqgVXteT[SWo~vtwyvkXX^a`acbsoxq[YQdgsf^URRSRRSVXMVVUX[``cqqoouXjpW`UVZYYX\]hnv^hkhhUkdf[[ipqwj\XSS_gZSSRRVTVTSMLR]febbcceTTVXTTUYUZcc`Za[[eSoonigf_cYgp~xiZVPPTcwSSTRRSZea]TjVdoddc`\eZTTSYYgVecf\`a`il^}phTTVV_c`~biTaQQRSnXTTUSSY]hSpijnddea__RQTVSSTYVqqdU\hiih`dccebRRSSYb^XV[]cOR]kXT]\YXLS[Sdli_bba^af\\ZVVSSTYg[\^b]aiec_babTRPPST^^Zihddi``gmot\skZQjRjbkjdkh]\^b^akiWXSSYglhii`agcbcaab[RPSRSU^Zgkdd~}}~~{{zxytunorrvut{~|}}~~zcV~~|{{zzĀutnmqqrqt}|}vp~}|]_N~~|x{zz{||ƞuunmrrqrttsrt\WQ~|~v|vzz{|umqsqru~xourqs~t~|}~_XTQ}|zwx{zz{{|}~wuuthlqrrqovtllxztuuy~|{|oo~ZTTQ~}{wwzx{||}ytosq\buussrtoqxstquvx{}oorprpzZRQPy|}||tyvx{y{jonnp|ykttstunzrqpow|{{yy|nlnqjsaTTSR{y}|u{z}|{}uussulgfgdelyowstt~Ȗypa|{uu{zkqps]SSRxxwqqokmyz~|sqrqoqlfddgniysqqs~cet|suwvz{ymwpZSRRsqr{mijwm}~monrrjjefddephkspqqre}ttyxzqoxkWRRzsotliijhvv{|{ommtwpojddenjlupqquxuuv{zxy~}~}MR~trkki}}|z}nlpoopokdeofjlnnlrsw|efbuutppv~|yaL}tvffiuwmyy}}vnrprmffaclipmrw}|}hkjfxz|}}h[G|sgyxhvyzn~ss}wgbaackohps}}{jtmtwxwy{}IHphusozssmvy~xseg`cdeennmv}}{}uwv||{|ajgXbmwmjpsiv||{cee~nz|}}~~3yyz|{|{{|ulkgTTcntzgvs|dt}~o|~szz|ywzy|z}tnqRQzf]aejfjyi~~~{y|xx}t{pzwwkrqSc~uyi]beiowƥ{yxxqpoomogllT}v|yjjgrmuz}~}{x}}yzwrmnmommpici|vw{tprmxx噷|||z}u{yyzmnkklmtkhgu|{}xxvot}pw{zzxzxwxwszplljlltpbzw}|zuspryxqq~zwywzxxvusswtvus{mklkkluusvxxwxtsrmstmp}qqzw}zwvuwyx{uvtvuupjkkjhruwwssqrsiupkjmmkjk~ttvvlurxzystt|vuusstynkiimwzwry{vqwtnvvoomjj}~zpqlluzavu{kxyssllhiwwzxs{yxx~su{mmjp}|zyvnpmoklmpff`_]byt|pdcuhnzzuynvnf]ac{{yyjllrmvyuqssqonpnjmonhbb]`iuvvz~uldc^lhzzwnr__]ea]ayxlw{}q{slinnr{numgbd``bpvuux{oifmjeszrrl_a^``osxqxqko|vv{yzpruu{z|nqoqi]laa{|vztu~|utnkmnpuxpoih^^cyxsrszs|~z{}yuuv~|{mhnr{|pr||~z}rtjmjmmtuonsjeeck|}lo}~~{~}yzv{lgfgik{e}womjmkptxninhhgfcdx||pt{}~}|wmozkfiggq}|vznmnpopovmhihigdem}~~|zmh{}i|xoqqzmsturruompkqifmn{vspvuinjntppsx|{|{tvsqklmt~z~fkxz~~~}umxw{qvmqvpv{t|wllpkungzr{}yz{}}}|~|{ypqppqwvvt|y{xlksjpelmlstqyt~~}||}}~tpurpu{uuvksdqxy{rwnmyvu~y{z~|stsq{vrozpdoxzyy|tztu{ywxw~xy{u|tvurpntcttj{|}|yxvxyzz|Æwtlionv}sj{||}}yz|xouyyr{qwzolknnh|izztpr~xyx{y~xtvxolomvz{q{wppkhhmvyqiv{vwxv{x{||yyt|uomlloyx|vlqlkmx{{uᎄvy~}xz}||tuuuzxmllorrv{rwvkkyy{x||yxz|{}}}ympmllkidigv|ӄ}znnt|}t|x}tstrrmmlkheerdmmommx|qrw~􃝫{ssygavzppollfgdeduukymlnqyljy~|xyss}gym}olljfzwnukonlllnvgeg}}ytsv}~fkmwlreximgllmxxy{ee{lkmoiegi|}zkqkyxwyqhf}einlmopmhiggpjj`egiklnijigiotuy}qpqxr~xxknih~ejkzqqgrnftwqltm{loommlihhju{{txnzzxqolnggh~khbilggiikjnnl_hihpoqordmmoihhlx{|~x{t}|Ānhgofoighiaaliggkwwo}mkw~~tqecnmnpt}ntqkfg|~u}peegmts|rzvqnrxt}vsmihgy|imyz~ttwoge~zqrvssuw}|{iheeggiss{lp~|}xytqjrmonu{ekwyqjx|{qopstwy{yshieegiww{yu}wtvtstu|vxwmjnxxlrrzrwvtuzet{eehqspnzygsmswvvurptmlrroon_dzwzs}ooryzr{ztlffgsff}v|ujskgenxwwxpyzoopsnkqwxx|too~{r||lokefflqq}|}s݊jjg{ofvxvhqnmlkirrnmy|~}~~wpooqxkjjrkimrok|ssusgiiduwzshfnonmireijnjvzr|~{~zqov~}wssfnotvy~k|~oefmlmijldcgeo}yss}~xwx{w~}wsv~~{zkinpmedvvhmjjcdfrosvwyx~~z~y|sys|x{xuuxxsyxiehiihmrqhvvlofdfrvuuvv{yvvuuotonkrlutgibdhhlkjyzzqut|rsswttwp\Q|vvy|}}ywuttrtpoonnmswhgaafggisrx}uslfts}~~wsTXJvvxx||uzwntslnnopoo|iha`ggiuvuv~jihj|}xTQKvyxysxuqsynphpsjnnopuvshyaehggjtnve}zkhgitjtyrst}WQLJ|yyswxwnquvnmklonnooqrkjjg\`fggfeljbbnpjkko~trqr}eesQLLJtyyssxqqnrrqokknloppqnidheQVijhhgiweg~nijgkvuylnqseehfgeoQIJJoryyxxnmsrnvtxzhmjlomo_dccdpoahihijdyzphgfemrqqoorudbdg`hXLLKqos{{unhnlonrw|oqiiggia][\Z[`odmgiiyu~~ofWrqzkkqpu|agehTLLonmhfc`aklpttupgeftecfa[ZZ\c^ngdeehw}w}tY[jrikmlpqocmyd~QLL|jhipb^^iawpqtxacbff__[[ZZ[e\_gddeeg|{[|sjjonpgeow|`OLLqjgkb_^_^jjooncaahkdc_ZZ[b_`idde||knkklqqpqut}tsHMuzljaa_stqxyqnrb`dd`ZZc[`accaeglq{|[\XkkjfflvuvvxywrqYGtmn^^_klammq{rk{cfdfb[[WXb_ebglsrs{z^a`\nxpxxwyysuuaUCul_qp_loobyzrsiiyql\WVVYad^egssvuq`jcjmnmovwxswvECiankfqihbjwmsm|iu[\VYZ[[dcbks|zsqsv~kzxmlssrtyy\cbR\fod`eh^jxzqqq{xY[t[tvvcprsstt{~}|ooprr"st}}nfeaOP]ekp[jhzxqzz|Zjstvert|iwuvvy{{pprxomqoytrzxvnilMMr\TWZ^Z^myzz_yuttvvx~uwq~|ornnskshrppemlM\vlp_RVZ^cl{vvxzqonnwxihgfehafgNunsqa`\gain||stsq~znssopm{ieedfeejc\bunorjegall}|srurqvslqoppdeccbddneaantstonkdiqy~}fwz{vmqqpqpooqo{mnmjp}~~gdcacddmj[rpusqkifgmvmv~gg~~y{||y|~xtpnpnqnnkjjnkmlj~sdbdbbcmnlppnojigciiwbfsggp}{|y||uwotqnnlnppqkmlnmly|fabba_imoxnjjiiggh_iea`cca`atx{{ywwjjlldljoqpkllsnkllklq}eb``dmpnxhoqmgnjckkdec``u{|swtpfgddel~qxZmnrdqqllzccb_`mmpniqonntyiykqucc`fxvsrvp{olefefcdgj__XXU[rltxx~fZYk^dppvkodld\SWYqzqoo`bbhvzclokgiigfeffbfiha[[UXalnmrvwlbZYTb^ppmdhUUS[WSWozxnbmq|s}gqib_ddhqvzz{goga[]XXYgmllo~re_\c`[iphhbUWTVVeingngaerlulqopfhkkqpwyztgkjjbUdWWpqmpkluskjdacdfknfe_^TTYoniy~hipirt|pqtokklur}}ytgbhkssghp{qzspvyshj`c`ccjkedi`[[VYar{xsbestutqttopl|y}syea``_arYptz~tzmec`cafjnd_d^^]\YZnrwvrfjw}|uvqtuusncf{re`b^^fspsjtuwodcceefelc^_^_]Z[c{~s{xwxvuuvtrc_rw`tpexuggyrnrs~tvyytuchikghkfcfag_\cdv}~y}q~vxwvwmigvkxum_eadvjffhmpoo}ux~zy{wqikihbbcjtpt\anpuy~vttwtuvwwkwz|cmkrglbfkfl~totjqmbcfake]phqsopqvussvttuzzyzz|~qpoffgl|llhnswnpmcbj`f\bcbijgojv|zttssttuyzz~yr{ifjw{gfinsy}}xjjlbi[gnoqhmdcolkyt|~vupqqvus{yxzyx|v{ikwwhgo~szyjhfpgZenpoorjpjkzyyqomnmuops|zutzxtzzyzy|kqikjz{}~xvhfekYjj`qzrsr{y{~onlooppsutwuttxzmyzjyxx{}|~}zyc`feltj`zqrru|sxs}oqrwsl|wutsuuvwwxvejnnhodi{{||y~{wnebbfed_r`ppifhsn}~oxy|nqpvtslhikwtyuustywdbdbkpocs{{z{xvyupmgfb_`dlog`lqkmnly||{qnqqnmhohwrvvdbbdnlpz{{t{xyxukchcbdnqqkylotsy~ntoqqhihy}insmbbeggxjneyywxwmlccqoqnrq|yzon}wtoqqrq{ptyxmbdbba_vY^\iq}|zyyxztqgflssjqm|{{xy~vwruxi}{xgiggbba^ZZfYbbd~}{z{|}vggpshhluvtwwyyuxpiizuvn\Vloeeb\YZYjkan|zzvz|z{~}fggiqc_n|yxutqwznwxoiis]nycseaabb`[pmdkaedbzzy{}{gghn]Z[q{|}wsrntjxyhlst\xacmbg|z[vn_c]bbcnnop[Zqz~fdfh_Z[]s|nqnagauwvz}|{onmog^\s[_dbceufc^_]]f``V[]_ddg`_][[afhlpgfgnhtnxy|~ynad_^t[`apgg]{hd\jmgbjcqbeveffcs\[Z\gttmninvdppwwuuyngebd]]^ta^X_b]]_~_za`ddbU^_^fegehZggf_\[^ilnrsrmqjsvrwwvd^]e\e_]^_WWb_]]ammfscamttjg[YdcdfjsugkiaYZorqurrj|}}xxwsf[[]cjizyyrhplgeh{ynj~slic_^]or_coptkkmd[Xqlegighjmwvsrqww_^[[]]_iix|xw{{yqbfzyytrsnojf`gbedkvwq[bmnf^konfeuehjmoqoivu^_[[]_mmqy|vyvpkslilihjkryxlnmvdadnm_|vuhhuphmljkp[jq[[^gifdwpow{|x]icimllkhficbhheecVZomog|yreehuophqpjb\\]i\\slrkwvzz`|ia][dnmmeno{eeficagmnnruvzjeetqhrwrbea[\\bggsrsiwxww݀u``]qe]lnl^gcbuuba_hhccortsttumfeegvwna``ha_cheariiuwkixw]__Zxkmph^\cedc_h[_`e`kohrtqutpgelvtsmxvii\ddjz|lotww{a{ryte[\cbc_`bZY^\ydsoiiuuvstutnlynxywqmxssxmiluttxzzppa_dfc[Zll^c``YZ\iehklnnttpsnqittzoirxvunqnkknnionu{|wx_y[^^_^chg^llbwe\Z\ijiijioznjjijcxhcb`hbyll^_YZ^]a`^wmnsneihpfggkhhl~cQGpjimqqrnljiifidccbbhlzv_\WW[\\]gflwqig`Zhgqrrskt~ug~IOAjjlmppjw}nlcih`bbcddƅyr^]UV\\[[]ijijrxv^]\^pqsuy~lJGBjnmmhmjgince]dh^bbcdikh]oVZ][[_hbjYqn_\[]h^hmfgh{r}wNIGCqmmhlmldgllca_`cbbccdef_^_^`\QT[[ZY`^VVbd^__crhfefqt]]hJGGDimmhhmhhdhgfc__b`cddec]Z]ZFK]^\\]kY[rb]^[_jim`beg]]`^_^fJCDDdgmmdcjidljmo\a^`cadUYXXYfdV]^\]^Xmsnd\[ZYafeeccfj\[]_X`QGFGFfdhpple_ecedhlpde]][[]VSQROPTeYb\^]mirr܀cZKfen__edivqZ_|]`zMGHHddb_][XYbcgjje[YZhYXZVQOOQWSd[YY\kqkqhMO^f]_a`dedYcoz]wLHIIr`__hZVWaYlfgimUWVZZTTPQOOPZQS[XYY[}posOzypg^^cbd\Zcmr{YKIIg`]bZWWVb`eedWUU\_XXTOOPWTU]XYYXYpp_xzzwb__`edcdgh~}tkkDIkpbaZZWklioofcfVTXXUOOWPTUWWUZ[`eotpOPL_u_uy^ZZ`ihhikjk{ieRBjceUUWcdZedgpg_|oWZYZVPOOKLWSYV[`gfgonzzRUTPsbldkkjkkef{hWK=kbVhgWdgg[ooghy]]me_PKJJNUXSY[ggjieTx^W^abacvxwiijehpxqh>=_Web^ha`Zbmchbqz]iOPJMMOOXWU_gongegjry_nlua`zuffdeiojoMXVHR]e[X]_Ubmoff{~eolMOgOhjjWcfgghhorqpsuccdfee"demm_WYVEESw\bgSb_pnfoo|pu{zyN^ghjYfhp]kij}jmoodvdvflc`dbjecjhg^[aBBiSKNQVRVdnoo|yzSmihxhjjlrzikezrw{pxwcfaae]dZcaaWa`CRlcgVIMQUZbo}|zjjlsznwwtecaajk[ZYYX[U[[DldjgXWS^X`epz{|t{{wwzpghgesrntwbggcdan\WXWYXX_XRYkeeia\_Ydcu|qwwxysv|}xss{ꃡ|vpffifdxvwjg_eccWXVVWXbZVVdkjkfeb[`howssqwZtuk}snsojuaeddbcdcouaba]dpqp[WWUWWXc_Pifljhb`]^dlclvryz[[rrmoppmprlhdbdbdbba_^^b_`_]twqeXWWXbdafggefa`_Z__mXZzyg[[duqopmptpikxbgdba_acce_a_a`_kquso[VWWVT^cdodaa``^__V`[VTWWUTUhutloomkk^^s``W_]bec^__ga_`__cnrqqZWVVUZdfen_fhd^eaYaaZZWTTiwvtopgkhdZ[WWX_qekMaafXee__rsrrmXXUcfe`hfeekp`ot`fjXWTZljwgfjdoc`XZXZWXZ]SSLLJNf`hkjtqrrqo[POaTZfgmbf[c[SJNPgofddTVV\jntW`c_[]][ZYZYVZ\\UONJLVabbfjjzsrqqaWPOJXTfgd[_LLJRNJNeuuolbVaepgq[e]VSXX\ejnno[c[UOQLLO]cabdptssrqfZURYVQ_g__YLNKMM[_c\|b[UYf`i`ecdZ\__edkmnh[_^_VJYMMghbf``h~sqg``ZWYZ\ae]\VUKKPed_ovws\]d]fhpdehc__`ifqqmh[W^aii]_h}shp|hdwimg]`VYVYY`a\[`WRRPXh{qmygVYvghihehhcd`p|mxqgmZVVXhQh|jz{nuqzhma[XVYW\`e[V[UUTSPQdhyljgZ^kqpijehiigbWyXwp~g[UWUU]kh}ja|ih}~icYY[\[cZUVUVTQRZyyqurgolvksljiijhfWRez~~kUif[mk[\oidiirgjlz{lhiY__a^^b]Z]X^VSZ[lzyrrmqerz|jlkka]Zj_kh`TYVXk^ZZ]aedcqilpllolg_a_^XYZakgkSXeglov}ttvrjhhkhjkk_jmowV_^e\aW[_[`|t~zhb~tj`hcXX\Xb\Tg_hjfggww~~yyjiggjhhjnnmmyznpdccZZ[`p__\bfjrzs}vbgdYX`W]SYZY`a^e`kwwp~nhhgghijmnnmmrxpojeusn^Z^jo[Y]afkovqn`abX_R^efhv_d[Zecaniprjidefkigonlmlivqmflqwywt\]kj\[cqfrvz{mna^\f]Q\egffiag`buonmmecabbicdgpohfrujoiekkpjjin^re\^]mmqtynuywqmk^\Z`PaaWhvqijiqtmo|rcb`ccddgitgvwthfddehihhjt`ll]lkwjmnmtswqqnmYU\\ckaWqhiilr~ywvglgqcddke\smheedffghfW]aa[cW\llmmqskrpkd[XW\\[WiWgga\^icqrdtlmpadcife_YY[gdjffeceigUTVU^bbWfnmllquvjkojeb\\YWW[cg_Wc{gabcamppo}dadd`_Y_YrgutcghgUTTUV``dmmfsuvvpnnmkaX]ZY[fiic}}{padhgmr~agaddcZ[Yuqkm\`e^TTWZZk]aXvuvtoomlbbYYhgifjj|tpqdcqkswgbddednb|yfl|k_TVTTSRjNRP[duwppoonoif]]bjkbje}wtqqlmrj{kfhk\o{n}kyZ\ZYTTUTTRONZNVVXprsqoopqj\\fk_`dnm||vilkkmlhkc\\mrijaOI_bWWTPNM^_Uaonniopoosq[\]`hZVfuqnwjhfknb{jkb\\wsfQamxVfXTTVTPdaX_UYXVtmnnoqoz[\]dTQRistvlihci^lmw{s[`g}shPlUV`VZpnOjbSWQVVWbacdOOenr[Y[]UQRTxjtdfcU[Uikjnqpoyvcbac[RPgOsS~XVWYs~iZWRSQQZTTJOQSzuYY\VUTRQX]^bf[Z[b\hblmptrmbUXSRhOvTUd[[Q{o\XP^a[V^WeVYjY[Z[XhSRPR]ijcc]bjXddkkiimb[YVXQQRthURLSVQQSqSnUTXXVIRSRZY[Y\NZZ[TROT_bdhhfae^gjfkkjXRQYPYSQRSKKVSQQUaaYgWVahi^[PMXWXZ^giZ_]VNOdgfjgg^pquqllkgZOOQW^]n}mmf\d`ZX[nmb_si`]ZTRQcfSWcdh__aXPMfaZ[]\]^akjgfekkSROOQQS]]lpylkoomseVYmlmighdeb^V^XYX_jkeOVabZR`ccZYiY\^acec]jiyRSOOQSaaemwpjxnkdahdabbaafml`bajXUXbbTpvki\\je]a`^_ePx^eOOR[]ZXkddkowpkQ^Y`dbcc`^`WV\\YYWKOdbd\qnfYY\idd]fd_VPQQ^QQPhag`ksxkntovUp]UQOXedd^fgqZYYZ]WU[bcchklo_ZZhe\gmgWYVPQPW\[hgh^kmllujUVSeYQbecU_\[mlVUS\\WWdhjijkkc[YZZ[lymcUU^WUX]ZVh^^_jna_nlvuSUUPn`df`US\\[YT\OSTYTdf_hjhkkfw]Zcljicom_^RYZ`qrcfknnqVqhoj[QSYXYUTVNMQOm\kf__lljlmkdvcpenpohcokjne`clkkwoppgfXV[\XRPaaTXTTMNP]^`ddfekkgkfiallqf`ioonfhfccfvwe`ffm}ywstopUpRUUVTYz][S`aVkYPNP]LNLMNMKHIMMLQRPPWRXLILIHJHCIJLFHGGFFJDFFEJPOJLHIGFJIKOWQclj[onLLMLNINPIGGOQTQP^]QSHFHGGDGKLLHKGGFEEBBDEKMHGMIEGIIMOimjc[\dkLLNIPNFFGGRLRWP\SRGGHJMLJNHGGHLBBDDFKHFEFEEPXXS^\mga_fnnMLKKHLNJLJJHJJNW\YQHGGFGHGGHIJLJLJOIVGMDIGFOKGEFEEGJU_Whg]d^fovMMLJJINGEHHOJIJPVTHHGGHGGMHIJKLLGLOPRLHGMKMGKFEEDENXWT_qug^``fvQOMHGLKKQGKWLINVQXMIHGGSNIOKKLMMGKSRRHMKM[PKKGEEKJW_WZh_`ktRRQKJFHFMMKOOIIRXOKEFHJSJRQNJNTMOSSNZSPOQ]_]VGEDDEFHTUNXv__tRRONHFMGFHMJJLTLNKKRJNSUTSUSNSSUUVOOU\RPM]SNOLEFFGNMSXXiiRRPNNIFFIMNJJNMOUOQVUSXSVUNSSUPMN]\SQR]WUPLFFGIPLWcROGKKIGFJMLJJLNONNORTRWWVXWWIPSSXQMJO^[RHORTV_NUILJJbv|LKGNHJHJIILKJJNONNSWYXWZWWNUOWV[\KLUKINPMXZ`_e]]UZbux~FQQOKJJIJJKLNNOPKRVWYZZSPPMPPQZ\a\WNOQRTYSbcab`ebaz{QP[GKJKHLJIJKKNOPUWTe[[`VTRPRTP]ZcbOPOPPRZcaijmi~{z{GFJRQHNHHIHJKKNOOUXY[Zsj`_XRNTOQSVOc`MMOSQPRfchfaKTTJKOKMPHHUPQPTXZZatda`XSNONNRN_`_TRKNPQU]i_pnxwe`VISKNIQNHIPNSQWTU^cd}}d`VNOOMR[\_akbTMQTTUW`mouw}qdXNIKMNOJHIQMNTUQZicdg|~s_ORON\]_\glekXVT^VYX~yzzqhjccUPQONLLNUNWYZZc_dw|pf]UQV]][fonoepUU[_XZryrttnqkac`YRLQMQRNVWYYZ]]muwqtmc[h]Z^foqmoqt]qoXh\uunqkfgcddbe[XMTQ]]VMWZYYV^kmkxzju`\[^dmpniiua_Zqytxru{{~wrldcblccbhk\eY`kgi[XUUQSgkv~ylbd[cb]_jjriuu^v}xhihspqyrfdaccbkddkvniixfTTURR[hkmwwvjgkmdhaeqzu~jwwu}vdfehhno}tqpstnvpidhiofpjqzgTPWSQSllnkpqkjkmmeeruy}wutxpc_dfhghlixikgtlwzzfdilmefm|zWXS\^kmoojjljjklmorpsw|ya`^bidfedbkvijtxzzuihithvp{ygVX^_gillkklkmoilmsln~vc``^bghdbba^wjzzxrlkmuszy{U^`fhhjmmkqiimijup|vnc\_cca_a]nwygzzkpuzwvwyflmffghkmpqsmkhqmiprvz{wf``a`ch^aafeoxxzzvjlrizwwsgqtonnbckkmoqullqoonoqwzzki\bbac``cm`gut{{yzzwmdffivxtnmjrhhm`kllmmstmknrrppwk\\fcc__pnrruwm}yytscaccnmtsnipghdggkdmlmoq}mpsspqzfmhcacqqsrsrqwuuv}lrxwwbbcmssuqmmnhhebbklmmr|}ovppČylljggbjlsrupsuvwqy}vomswnlskrtrrpmmjmhhccfkltsqoopwypj^jhifrssywsttuxyzwtmlorosuunppnommjieggklq~poopw`_cfhhnn~wstuvu{yrpklqrltrprppmijniikkjlqoonppa``^houuzxsrpvuxrwpllpkursoppkjmhivtmmuvvtonnrtw{ssbbdhtvxxtqvxzusxlnqsspspmlmjlmuurnmnrsz{rgikxuls}xx}tnuwrtmnlmkjrvrklpssy{s{hmlvzqttstvtvzzuorokligi{vknnptlwzwmpmqruvyptx}wxqpwjlcfbj{wqqnnmuv~uuqpqovxp}oowyzsyxnhbhhnu|}|rwkksv~y|txppoopnqqo~yu{wsyxxsvallnmzyvutmity{ztoonq~px{wqmhwyeqglkmlruzzyuvuvhpxzxxonoonknp|~rlwrrkgkeeglkmoolw{zyvovu]ctqquvsspnninlmmnixwuxuwqhieegbherppqzjolwwvii]\\ZZSfrsh]hhddhjfddccvwpqprvr~wqhfdccbenpmnmiijk{ozyqZ\XZZYSTcd]]g[Zeffbbcbptvyvwqwwqdcebbddhklm{hhk^``poZZYWZY[YYTSSX\ZZUX__cbbeaccluz|~rticcdkcdcdjejsrhho[d_ZZXWWZWZZYTSTSUYXXVVZ__ccbbfbfqsstw|teefqiddfeene^[`[ZXXYYWWY\SVTTVYXVVWY]^a_acfifkfjvwyyxufplliidfeimyuoqZY_XXWYYWeVXVTTWXWWVW[Y_`jfefjkkxtywyyxppmlglgffesb_ZY\\ZXVVWTWXXWXVZYV[hkgjjkkpstpyyxvppmlgfgiu\[[\[YXXVPQRSVcfkXWWZ_X[ikklkkjjptsttqqvvnppqii􇆍Ā}m\\_^jXXQQRSV^mmqk\\]]__eegkkqlmkotrsgivnkqikjjilkke}~w`\]`\uvuuTS`VUivrofmeZ^\cghmmjpqlkjrrqh{}}|j|hekkm{{|\]]awu`mpXW_eghhqgmnc_\jesmgojllknklf}khhigdeeoml{{~{~j]]a~`sjWWYbdegennohbkljifonollkiq}yn{kjglpop}zz]\zaxwwbX^`_cdcdka_bfnopjpqmllmklihoiud`y~t{lsv~`xxbkl^`__``fcggbbmoppovrotlkllmylwegrttcz}yr~zk]b]\^b]\\dgbbuhoozrqtntlkiimpxvngq{uztzx~~}wrpoqc_\\`^\\]aikpwsyzwstynkg`juqedfouz}vwwxwxywpojfc__\``\\cf_e{~yqwryp|z{vsj_phfrlemmplgkv~wm|zjppggd\^a_]cd\]_^^clp|{sqqrqr|ygcolxvvm|qllmvvtwxxnj`hgih||pee\]^X`]]Y_`^__aaz}xusporynwxnittyz|zpltvvwvwwxzmhkf`l~obh[^]^g[^]]^__a{{qrpqgg{okkexzz|{ysqsvvwvvwjmafdecnmkzuwqom^^gnpgYZ^__r{xz~wqp|pfvzrhhlHJHJKJHEFJJIMMKKRMSGDHEEGE@FGHBCBBAAE?AA@EKJEHEFCCFCEHOJYbaPedHHJIKFKMFCCKLOLKYXLNCBDDADHIHCGBBA@@==?@GHEEKGCCEEGH`d`XPPYaHHKFMKCCNGMRKWNMCCDEEGJHFICBBCG==?@AFDDEDDMTRLVSc\VR[ccHHGHEIKGIGGDFEIRWTLDCBBDEFGHFHEJDRBH?DBAJHECECCDGGOVO^]RXR[ckHHGFKDBDDKFEELQOCCBBCDIEEFGHHCGJKNGCBHFIDHEDCCKTQMVfj[RTSZjKIIEDIHHNDHSIEIQLSHDCBCCNJEJGGHIICFNMMCHFHVLHHEDDCCHGQWORuv\RS^hLMLGFCECJJGLKEEMSJF@ACENELLIEINIJMNIUNKJLXYXQDCCDFOPIPtyhSRhtLLKECJDCDIFFGOGIFFMDINPNNOMHMNPOPIJPWMKHXNJJHCCKJLOOu\\yLLKFCCFJJFFIHJPIKQOMRMOOHNMPKHIXWNLMXRPLHDCCFLHQZtxLKDHHFDCFIHFFHIJIIJMOLQQPQPPAILLRKGDJYVLCJMOQYJQEHFFZkpyvwHGCJEGEFFHGFFEHIIMQSRQRPOGMGPOUVEFPEDIJHRUZY^VVOT[jmrBMMKGFFEFEEFHHIJFMQRSTSKHHEGHISV[VRHJLLNRN[\Z[Y_[ZootMLWDGGHDIEEFGIINQN^UTXNLJHJLHUS]\HKIJJLS\[abd`tpo}pxx~uCBFMLDICCECDEEHIINQRTTkbXWPJELGIKNH]YFFIMJJK^\`^Z{uv{|}v||ssGOOEFJFGKBAANIIHLPSSZm]YXOJFFrEJFWXXNKEHJJMU`Wgdn||}|}y{}||i`[QDNEHBKHABIFKHNLLV[]uu]XNEFFEJSTVYcZMFJLKMNXdglm{{z}{{|xql`SHCFGHICABJFFKMHQa[\_tukWFIFESTVS]c\cONLTMONuwovtu}|{}xmnmcd]]NIJHGEEFLFOPQQZV\ntyg]SKHMUUR]ede\gLLRUNPwwhpw||{zegghleY\XQKDIFJIFMNPQQTTdmnijbXP^SPU[dgcegjTheO_Rxxkkwzwxy~}zbe^Zb[]]Z\SQFLIUUNDNQPPMVbdcnpw_jTQORYcec_^tkWUPgojnhkzqpsz{zxje_WV[e[[Y_aT\PWb^aROLLHK^bl}tn`WXOXVPS_`g^kj{yUlrn^__iegxyyxxlweYXY[[YbZZbld``o^LLJR_bbmlk^[_bX\TZeojs_lym}kslY\[^^dervwxzxgdcfmemf_Z^_e\fahr_LHNJIKbbd`ef`__abYYgimr~ljujneXTZ\^\^a^vw|l]^Zg_npp\[_bd[]ctrOPKTUaced``a^^``bcgehks}|tqnWVTX^Z[[YX`x|}yk]]hjppk_^_j_lgr{q_NPVW_`bbaa`bd^bbhacy|slYVVTX]^YWXWSu}|{zl]wwppnhbacyukiyrqsMVX^__abcbaag_^c_`kf}utqkcYRUYYWUWRdlx|{{l[yyppafkpxnnoq]de^^_`bbfgica^gc_fhlpwql\VVWVY]TWW\[dy}{lktzsppl`bh_pmmj^hlgffZ[bbcfglbbgeedegmq{|pa_RXXWYVVYcV]jioolvvppmcZ\\_lnkeebj``eXcdcddjkcadhhff{zymaRR\YYUVfdhhklb~rpsvvoojiYWYYddjje`h_`\__b[dcdfg}scfiifg}zyp\c^YWYggiihfkihjspv{ybhnmmXXYcijlhdef``]YYbcddistflffyoxbb`]]X`bihkfhhjjdkozyzlecimdbiaijiigdebe``ZZ]bcjigfeffmof`T`^_\hiiomhhijklwmjcbeheikkeggfgfeba]^^bchtffefz{wmVUY\^_ddeuslhhiihmqoifbbghbjhgighdabfaabbacg|{efdfu{e|{WVVT^elkpytlhfeiij|hnfbbfakijfhhbbe`amkdckll{jfddgilqiivXXZ^kmo~mvvifjllkjvobdgiijgkieddbdfxkjgcchipq{{}h]_ankuzvtw{bjsnnsjdknjlefdecbix~xykg`behhoqi}q_cblohjkv~jjmvvyjlqplgjgcda_ax}xqlacdceibmzzpvmdfdhikl~pf}knxz{ysmohhnbd[^Zby}yqumgfdcckltu}z|~lkhghflogsgv}fvyymvvopjpofaZ``fl}rsrgma`aiktorkoggffhfiiu~||fuzyokqmionnkmZddfe鐀vwpokjib^ioqz~tpkffhuy{zxgoyrngc^mo[i_ddedjl{|uppnjkkl^enpv{nnffdfhrwsjbnhiib]a[[\^dceggcn}xxqonldljRYjggkyyliigeebfeffa}z}x{pnknlmg^_[[]Y_[jihipz^wcazxumlk^^RROPI\hh^T__\]_b^^]]\\mojjgilitvmg^\ZYY\fhdecx]^^_odowogQRNPPOOIJYZSS]QQ]^^\[\[[\[hlnqmmhvmmgZY[YYZ[[`bcczo\]_STTffQPONPOQOOJIIJORPPLNVW[[\[[^Y\\dmrzrthjwu_YYZbZZ[a\aj{f]]dPYTQQONNPNPPJKPOOLMQVW\[[ZZ]Z^ij{~wxijmrj[[Z[h`[[]\\e|zuYQOTPOONPSJLJJLOOLLNPUUYWZ[]`]a]akymzy}oonk\ebc``[^\`dlhceONTOONPPN[MOMJJNONNMNRPVWa^]]aanjom{{}zoonefba^c^]]\wzfVTOORSQONMMKNONNLQPMR`b_aafhi{f{}uoonlefcc^^a|ziRRPOMGHIJMY\bONNQVOR`bbcaa`eihijz}gglkcff_`}|ssqbRRVUbPPHIIJMUdchbSSTTVW]\^bbhbc`digh]_yldag_``__baa[prurjURSWSmnmmKJWNL`mif]d\QUSZ__dd`ggaa`ggf^{qsysr`r{^[bac{ttnnqRSSWnmWdhOOW]_``h^dfZVSa\jd]f`baa`dab\|{xvyra^__^[[ebannqnq`SSWuWjbONQ[\^_^eff`Yaba_\fdebaa``_^g|}|so|dqaa]ceezrnnSSpXoopZOVXX]^\]cZWZ]dde`fgcbbcab_^ev~avkZVouxkxxrbwhtk}rWnoZeeWZXXZZ_]`a[[beefelhejbabbcocn]^i|kkYxyzyqsyyogsuw{zvtydW\WWX[XVV^aZZk_eeogfidkba`_cemke^irmrjvvxpnttywvswmuugedi[YVVZXVVW\bdhnhxxoolijypdb]V`jg\\^glr{skmmnmozxyomfe`]ZXYYVZZWWVV\`W^ruovflhogsqrmjaVf_^id]edgb\`ltmvvw~crp`wfe^^\UWZXV^^VWXVW[cgvrqhgghhs{vp^Zfdpnmdtib`blljmnnudy`V_]`^xsrf\\TVWQYVVQYYVWUXXpsokjeehofwmvoe`kkqrtxqgaillmlmmnpc^a\Vubuew{zY`TWVV_TVUVTUTUVuqrrghhgh^^rfbb\ppt{yrpighlmmlmm`cuW]Z\ZedbqlnhfdVV_eh_QQTUTTgqnpunhgsh^nqi__cACDCB>?CCBGGEELGMA>A?>@>9?@A;=<<;;?9;;:?FE?B>?<@HCQZYH]\AACD?DF?==EFIFESRFH=<==:=ABA=@<<;::779:AB?>D@<<>=?@Y\UOGHQXAAD@GD==HAGLEQHG<<=<==>>@CB?C=<<=A779:;A?==>=@?CLQNF>=<;<==>?@A?A?D>L<;EB>=><FMDSRILFPYbBBAAB@F>=?>FA??FKI==<<=C>?@AA=ADEGA==<<;BKHCLY]NFHHOaECE??DCBI>CNC@DKFMB>=<D@@BB=@HGG=B@BPFBB>==<;@=HNDGfhPGHT^GIICB>@>EEBFF?@GMD@:;=?H?FFC?CHCDGHCOHEDFRTRJ>=<<;EetjZGG^jIIHGA>E?>?C@@BIAC@@G>CHJHGIGBGHJIJCDJQGEBRHCDB<<;:A?BEDesuvPQnIIHGGA>>AEE@@CBDJCEKIGLGJIBHHJEBCRQHFGRKIEA=;:;B=EMeuttutxjIG?DCCA?>ACC@@BCDCCDGIFKKJKKJDSPF=DFHIQAH;=<;N]cjutsthi~DC>F@B@AA@CB@@CGKMLKLJIBHBKIOP?@J?>CDALMRQVNMFJP]`eptrqsv|=HHFBAA@@ACCE@GJLMMLFDDACCDMPUQLBDFFHLFTTSSQTQObcgrtv~tytHGS>BAB>C@?@@BCDHKHXOMQHFFDFHCPNWVBECDDFMUSZ[]Xlwdcqcjrptlpi=<@GF>C==?=?@@BCCHKLMNc[QPKFBHCEFIBVS@@CFDDEWUZWSrlm{oournhsopfh@GG>@D@AE<;;GCCBFJLMReURQKFBCBAEAPRQGE?BDDGPZQ`]drxzppunoloqpp`UQG=H?A?EFAKZSTWkmcOCEBANOPMV\U\HGDNGHGtlmflwxghtsppoplbdbY[UUFAB@?>=?F?HHJKSNSekp]UNGDHOOLU]\]U_EEJNGHmwm_fnxpsrtrpoo[]_]a[PSOIC=B>AB>FGHIHLL[de_a[RLXNKOT\_[]_zcL_]GVJmmbaknklnvsroX\URWQSSPRJH>DALLE=FHFGCLXZVcgnXbMMIKR[][WVlzcOMH^d_b\`ogfgopom`\WPOP[QROUXLRGNXUWIFCBB>AQU`skdXORIPOHKWX_VbaspMvbhcSS_]_nopnndo^RPOQQOXQPXc[VVWeSBB@HRUYcaaUSWYPTLQ\fbjVbpcsaibPRQTU\]inmpsp`]]_c[c]VPTV[S]W_gTB>D@?@UUXW\\UWWYYQP]`dhuubak_d\OKQSVUWZVnovdWWSaXdgffRQVXZQSZiugDE@IJTVXXVVWVVWXZZ^\^ajtxrjgeNMKOVQTSRQYquvrdVVadggbUTV`Uc]hqfTCEKLSTVVXWY[UYY_WZupzsxjbPLMKOTVQPPLovutreVqpgge_YXZplb_ogfhBKMSSUVWVVW]UTYTUa\slkhaZOILPQPNMPK]equtteTrqggX]bgndcdfSYZSSTTWV[[^YWS]YT[]bew}mgbRLMNMPUKOOTS]|qutfdmsjggfcWY_Ugdd`T^a\[[OPWWX[]aWX^ZZYZ\cfyqsfWUIOONPMMPZMTbb{whggdmmggcYQSSVcea[ZW_UUZMXYXYX^_WVY]^[Z[w~qpocXIISOOLL][__`cd[vkhkmlffa`PNPP[Za`[V]TUQTTWPXWXZ[pgWZ\]Y[spofRYUPNP^^``_^c`_bkhmqoY^eddOOPZ``b^ZZ[UURNNVWXX\fgX_YYwoenXXVTSOWY`_b]__bb\cgpnob\Z`d[Y`X_a__]ZZWZUUOORVW^st[ZXXYae\VJVUVR_``fd^__abcm|~caYX\_\`bb[]]Z\ZZWVQSRVW[ss~gYXYYn{qmcKKORTUZ[\kxhc^_``_dh~ye_]XX^_Ya_]_]]ZUWZUVWVTW[p{}nXYX[l{r]srMKKJT[aafnxi`^]\``ayp_c\XXY]Xb_`\]]WWYUVa_XW^_`n|x`YXX_ach``lMMOS`bdsckj_]acca`leY[^``]`]YYVWZyzzl_tsvvb]ZY[`aghqqus^RUVd`koujhkp~X`iddja[bd_`YZYXWV\l~{~rnnc_YZ^``fiausugTXXad\_vut_iqwy``cllpacggb\^[WXTRTl{rnfcY\\^bZdqqvekbX[X\]``qc[oxtv`dnpqpjvde^]dVXOQMUlrohld`_]]\cdkmrotqs``\[\Z`b[f[ivtwxqy[knoodmmfg`feZTMSSY_w|rvhjj`fZZackehxut_c[[ZZ\[]]ivutrop\kooebhd`fee`bMWWYXutlnhgddc[Wafgos}~hd_ZZ\itvmonl]dnhd^ZUdfR^TXWXW]_ntrkhhgcedeW]dflxottabZZ[XZ\ftutkh_Xc^__XSXRRSTXWXZZU`wtrnnhhgd^eeMQa^^`ml`]][YYWZYZZVqoqmoecadac]UVRRUPTR][[cnySkXVpvnldedYYMMLKKCS\^SJTURSUWTSSRQQbc^^\^a^jkd]URRQQPPRY[WXUlRSSTeZfng_KLIKJJKJJCDQQJJSHJSSTQQPQP\`cwesbc]kdc]QQSPPQPQTUVUndQRTIKL^^KKJIKJLKJDDHJGIFIMMQQRQQROPQXbfnxgi]_lkVQQRZQRPRUOT[ro[RRZGRMKKIILJKLKEEDFIIGJMNQQOSOS]boyskl^`bh`RSST`XQPQPOVtqokOIGMJHIIJLJJLNEHEEGIIGGHILLONORSVSXTXcncmmreedbT^[[XXQQORUtya_Z^HGNIIKKMLJWHJHEEIJIHGIJHMNWTSSWWXXebefooqneed]^[[W\VUUOjsup^NLHHKNLKJJGHHIFJJIIFJHEJUYUXXY^acqZoqjeedc]_\[WVWVowupaHHJLNLKKIABCEHTW[JIHHJNGJVYY[YZXZ_cbc^n{q\\bb\__`YWXspu~hhgYHHILML\JJABBDFO^]a\MMNOTSUXZ`[][_cbbQSvnaZW^WYYXZYXPqvdgjf_KHIMIdedfzDCPFEYfb`W]UJMKRUUZ[Y_`ZZba`Ro{vgipjjXksVSXUVmhicrceHHIMedN]~{`GGOUWWXaW]^SNLXSaZT^YZZY^[[PpptmkohXWWXWRRPXUTcbfcfvUIIMl~O|cZGFHQSUVU_^_WQYZXVS][^ZZYX[q{wrries\iZYUY[XYmrdbbIHfPg~g|ugQGMONSTST[QNRT\[\V\_[ZZYXWwZlsVlbQMflm`lmfUk[e^pg|~OefvR[[MONNOOVSWWRRZ\\]\b`]bZYYZZ\dWcRT_raaOmnonfgmmb[ght{osrnjpZKQLKMQLKKTWQQbV\\f^^a[bYYWW[Zb`YS^hbgakkmebggmkjfj_yumla_^aRMKJKNMKKLPXZ_d_oofgcaaog[YTMT_\QQS\agqh`aab`bnlmxa_xxu__XTRMNNJNOKLKKQUMSilfm^d_f^jhidaXMZSR]XRYY[VPS_hajjrW~xecSxul__UUSJLOMJRSKKNLLQY]mih`^^__jrmgUQZWca`Xf]VTU_`^abbiXmTIQPSQlff_SSIKLFNJJFMNKMLNNgjfba]\`f]ndmf\W_^degjrc[T\_`a`aabdWRUOIgUgWivooNUILKKTIKJKKMlii^__^_UUi]YYScbbfmkc`[Y[_`a``asTWiJPMNLWVTd]_Y[YKKT[]TFGKLKK^hegle_^j^Udh`VVZouvuurongdooimonmqpp}pnrnqyvsgge`ec]]djjimonnersrsspngoppwpphnqrrq~xvtpmuqffe`__a]\`^\cfdllomnpsghsqosvutxjpzxwskiiqmr|qurnvv{vrhjia[^[]]_\Z^_dh]konqyrbkfqteow{{py{xttkpr|v|qqsryoosspnjee``XabcY^]\ddbg]nrrmlhpmfdrv||zzt|tysz~zqwpcnYqipnjjih`_bdVT^[eec_]lonmlkulhcp}yxi|vz{~`dWd\`bipkehdc`c`Z]]edffgeea^ekqmjjrqcdp|y{xj{w\UY^__`aceiha`bbc\^`]dchgghbjjkfqqrntvq{~~{z~w\V^_^`_``ihhaccba]^`cchgghijijijcbdeokutyy|{yw|\_\^XX^``bcdfad]\c_`^bbggih`aa\_^_bdgot|{}||zz{xrZWX[[``bccdc``ie`^d_ggehce`a`^\\]ghgi|~||{|z|~sYWW]^`bgdbeegiklveekhhobg``_^_\bhhy||{ssԏ\VZZ^^`arfeajlxzrseh`\\]ghhsmo{||~~|~~vuiVWW[ciklvfgb]hhilxxx}{|~||s}q^`WWZkfiküº|fkkjqr}v|{w}tu|q^]ZYZ]`oe~”ĸwwxzx}|{zwqtpa]`[\djny}xot}}y~rvßtkbccihqsz~ٿrkwwo}ro_\cctwy{afjf{~rkf^adzy|{cejln{{jwqqegjuyzzɽcpklnsjwïiabfuuyzz쭪Ƽĺfqqxx{oqyzafcckvjz|zÿfhtw{|zzcddg_jvyz}jᅆutw{{|hfdbb`^pwy{z~v{{}liffdbbdnqrvogfbdf`oszÁ芉znhggefehÆ݁yrcgffefi|~|dglgeeffv󄊥ĉz||~mlkkfcf~ጊnz{wlgddfif󊧲Ì}mrwzukfjliinsňч}}vppxsojgkkmkoqٍ{{vminweccdkllmmoqՆ|{|~jmebcgljjkklmzէ~{~vecabikklijnzӦ|rxsrcfd^d^cc]erӜtxq|ton_b[^ccikr}痎rtrzpm^[[]qs{ƈ}psrrs~v}y}y^][Z[\`hq{t{wtmrsrwwzvwxyuq^\]Z\_drlzzzwplmrtxyvy{vli^\[[Zfgsx~zqummkjzwyia][\\Z\_dvvoÿhporkhzy{xh[[\Z[Z[^clrld{ygpmozyi_[[XZZbcckddcjr~zwy_[[]ZZagdccdek|}zyyvti[ZZ]``cddfkeἽx{zyyxtngc``aeghggn^ȅm}{{zzyxxmfd`gb``beigigqsÆdjmkio|~yyvxyxxvmf_ej`_ihhiinpt|}mtdikhghojwmmhrhvuvvkaceacbeahimywpmsscahhihg^fqlkllifphugmeaab_`bminpozſsscffcf]b`Y_cjjlkhhfoolmjcfccbebafoowy¿lf_cj^^Z^^XY`fjjmgfemhlgsnfccdeabfoqryy}żjff`][QSSXX[ljmneedshfuogcdebdebfnusyidc`gdbTTWX[ghddgii}fiffdcilpaxy||渺ki`eedUSSXWXXYabddhijgjnrrfefidegwx||}~bh\da_f^YWYWXXYY]ecb`himinrrikinejq|{ybbd^d_`d_\XXY[]^_chllorsqosri~ﳵa`]de_cYc`XZYY[]^`fmmvptrsvts}}``^fa`YYgZ[YYZ\]]_^_lz|}xqqsrzr~}d`_``pcgh]Z_Z]]\]]^jzy~qttqqoy|zzg^balwihmhmn\ga]][]\]dhx|z}roros}ymk^aqxiomnimhkl]^_^Y][_wp~z{zzronpyxuvfklkjhec]Zee_dffdhffsb_d_cnkj_`^Y^\WXXY_ccacedcwz|}{Zthihihted]dffmhg`fghh|wpjhec`kh__^ZYY[XX[YX]_\cbdccv{dg|\^hfeikjsim_epmmib``hdirgwkw~e`hipje`ba\UXUWX[VUYY^`UadcemeV`\fi[eyvvuktsooeoqmkjbgirmsggzihmcargfceb_^ZZQ[\\TYWW^]\Y^Tcffb`]ec\ZgvttjqpoptjqjnjquzyyqhnfZbNd]ccbbaYY]^QOXU^^][VTaccba_jb^Ye|psusmk\oxkot{uvv}{yruX[OYSVX_fc^a^]Z]YTUU^]^_`]]YU[aeb__ggYZf|xwol}nk^otzvtvwz|mTNQUVVWYZ]baZY[[\TWXT][`__Y``a``_\gghdgidwnqqsnunuwvvswymTNWWUWWXXbaaY[\[YUVX[[`__^``a_`_`YXZ[eahgwllvonljsvvxrTWUVRRVXXY[[^X[TT[WWVYZ^^`XYXSUUXZ]egvonpnnmmnvuvvxniSRRTTXXZ[Z[ZWX`\WV[W^^]`Z]XYXUSS]^]_}oponnmoqsvvujSQRRWWXY^[Y[[^_abl\\b__fY^YXXWUUSX^^ltwtoonnffwwszvvuVQUUXWXYh]\X`bmnhhxw]vv`XSRT]^^f`cvrnooqxqo}~{too{mlbQRSU[_`ak\tu^YT^^_`llumonoqoou}}}exz}{rgVYRRUb\_ar\aa`devrwvjonkqhrgrzwqgVVSSTWYd[ptz}llmnlwtwrpnojehwugZWYUV[`cloڰ|ylcivvrs{nsgk{ibZ\\`_fhmp}䯰f_kldrޱ}ifVT[[\knno|𮪬||UZ_[vwuquthb^UY]qqsq|}}VZ_ac|qq`|mhh]`bmpqqy߲~Vd`ac||i`mz`YZ^mmpqqZeenn|qdfmnX][[dnbqsqv󶸵Y\tv{z||tjkopnsu{oXZ[^Wboqqs¨x]wxyz{zjikoopx~^]ZXYWVgoopmqww{zzvtkooqa^]\ZXY]fhi{ֵvxwwxwz|{zktuyud^\XZ]Xgjqw{ӯrwxwwx{{~~uny}c]^^\^]ayxyywwxwwu~xxmgX^^]^ayy~vyww{yuprqY\b^^]^_myy첳x}ryyvwtxnpqtrcbaa^\_tvxyyϲ{z|yyzvttuxudpplb^\[_b_vvzzy~|yy|zvqvvw~z~dhmokb]bdabfjx}}~yy|xqwqzw}|xkffnjhb_ddfcfiw}~||yxtoold`dm]\\]deefegi}||{roprs`d[Z\`eccedeepz||twoptiZZ[cdeebcfqӘwrgvhegZ\^X]W]]W]j{ѐingpqpfceX[UX\]bcis狂~|jkixqqlcdXUUWijqu~|sugjiijmdkhnkWWVUVV[aiqkq̶tnkeijimmideghdeWVWUVZ^icqptypmhddikngdgid^`WVVUVU_`jnxspԵileecaxuuieh]XVUVVUWY]llmft`hgic`xihji\UUVX\did\pƮp`hef}|~xskn`XUURTUU[\\c\\Y_󮰭⳵iuu~~{z{xxnlnXUUVUUZ`\[YXY_㲱swx}}{yusq{nonljaUUTXZZ\\Y[_Y۪n{|xzzyuvsonnkd_\YYZ[[Z\]]\[_v𪱮{xcrux|vponnd^]Ya\ZY[]_\^\ccx{|{Zadb`ersnnknnld]X_cZZbaa_^cdfl{scyti[`b_^_falcb]g]kkllbX[]Y\\]Z`acnjbrxciiYX`_``_V]fb`ba^[e]k]c\XZYZWYZd_ceelpriZ]][]V[YRX[`ab`]][ddac`Z]ZZY]YX]eekwb^W\bXWSWWRRX]`ac][[c^b\ie\YY[\YX[effmlp~`^^YVUJMMQPPSb`bd[[Zh^]ke]Z[[Y[\W\chfkstu`\[X^\ZMNNPPS^_ZZ]__s\_\\ZY_bfVkloouwaaX]]OLMQPPWXZZ^_`^adhh\[\_Z[]kkoopqv멫Y_T\YW]WRPRPPT[ZYW__c`dhh_a_d[_fqnrsluvx}褣YY[U\WX\WTPPRTUVZ^bcbfiigeih_yt|tuquvw|WWT[\W[P[XPQPPRTUW]cclfjhilji|r|zprsuyw{zWWU]XWPP^QRPPQSTTVUVbprsnwggihogsrspvwz~z|~[WVWWgZ^_TQVQTTSTTU`qot{gjjgvgdmpmmyy{^UYXcn`_d_deS^XTTRTSTZ^nyrpwwzshehdgpluy{~}dbUXho`fde`d_bcTUVUPTRVmftpqv}{pphdbdmkijuw{]aba`]YXQOYZTXZZX\YXexvzv[Y]Y]db`TUTOTRMMNTXXVY[ZZnwpwrrqRti`__^kZXQYZZa\[TZZ[[Zntumhcb]\Yb^TTPNNQMMPNLRTQXXZZ[ms[^rTU_\\_a`j_bTZebb]WUT\X\dZi^qmr_[bbhb_VXWQKNKMNPKJMMRUJWZY\d\MWS^_R[pmmlakjeeZcfb_^VZ\e`eY[maad^]k_`]]YUTPPHQRRINLKSRQOTJY]]YWT]ZSQ^yymkk`ffddi_f^b]dhmlle\b_R]I^Y^]YYWOORTGEMJSSRPKIWZZXWVbZUP\wsgjkjcbSfn`dhpjkiqrnmfiNSHTNQTY_ZTWTSOROJKKSRSTURRNJQW\YVU^^PQ]swvonfctebTejokhjjmtuwpbJFIPRQSTUUYWPOQQRKMNJRQUTTOVVWVS^^_[^`[nehwhjejdjlkkgkmx~xwbKFPSQSRRQYWWORRQOKLNPQUTTUVVUVUVPOQR\X~_]mccmfecahlklkjl|{|gMQORMNRRQQRUORKKQMMLOOTTUMONILKLOQT\^meegffddekjkkm||we`MMPOQQRQQRQNNVSMLQLSTRUOQMNMKIJJTUTVxsfgffefdfgikkjw~~wyaMLMMQPQRURPRRUVXYbRRXTT[NSNMMKLJOUUckokffe]]nniqlkjwz~{tzvNKOOQPQQ^SSOWYddv|^{]mkRkkUMIIKTUU^XZnjefgfhnhgtuuqieeuqttdbYKKMOSVWXbSz{j}jTOKUUVWddmdgffigfltvwrsZnpsqh^NRKKNXSUWtvy~uhSXXW\]ojoobfebi`jwz|y{\hp{lg]ONKLLOQZRdhvnvtccdecolojgfgb]_vzz|myj^SOQNNRVYadvxtwwvrpc[`nnjjqfj_bz}p_YRTTWU\]bepz|Ş}yy^Wcc[vy{}xizxx}r_\MLRSSadbdot𡝠tqrMRVSll||k{gwxwji^YUMPUgfheo|vqrrORVXZpw|z{ffuUwqc^^TWYcfggmv{tsO\XXZy|q{q^xVas{soWPRVddfggR]]cdpvvzxfYZbcsNURR[eYghgjRTklonpph^`decgintcNQRUNYegghxˣqUmlmnont^]`dde|{kpSSQNPON]eddehllonnjh_dde}v}~{UTSSPNPT\^\jyɜmnllmlnpon_hjmj}ZTSOPTN^^cgkpilmllorib|moXSTUSUUXihhimmlmllirlka[NUUVXiin蟢mnllomidftwfMQWUUVbjiinmrgmmsjkhlbdeigXWWUSVhikjkjpopmmnjhhsili||zZdebWTSRVZViillkmpmmpnjejjkrx{|osY]ceaXTXZXX[_jllmtmmolekemuktpom`\\c`_XUZZ\Y\^ilr~ppllhccsxxttyaZUZbRQQSY[Z[Z\]oqppoeccez~iVZPOQV\ZZYZZcjwrrppgjcrfj^OOPY[[XY[cuwyًssjeYh]Z[ORSMTMRRLS_lu񟡟̤s\aYcff[XYMPKMRRXY`jw~vrqr\][ivffaXXLIKJKM_ahktu𣡠pgi[\[[\uxcZta^c`JJKLPW_hagw̢hb`Y[\[__y_Z[]^YYJIKIKPT`Zggkp}db\XX\^a~]Z]_ZSSKIIJUVaeojfޡ^`YYWUqskwjj_[^PKIHJIILNScc\k񚙝ףU][]WSkwv_^_^PHHIHIIKNRZ`ZRdxϣeT\Z[ou}|~~lqxwmh`aRJHHGIIJQRRXRRPVzŜ^iyiz{|~n}ymkmyplmb_bJHHJIIKPPVRQPPQV֠hj|uimlkihjeobdc`^UHHIIOPQQRRPQSWQٙep~~|}|lhjjillifedd_ZTRNPQRRQPSTUTSXn}ښp~}~~|{jWdhkomjiefddZ[TTPYSPOPSVTUT\]pߝrzppPxUXVTYfkihhgdfeddc[UPW[PPXVVU[\_erk[ni^QTVSRT\Wg^^WbVcdce[RTVRTRSOVWZfc\jo|}[baPNTTUUTLTc\\]]XT`VeX^VSSRSMNOZVZ]\fijw}򝤥bRTTQRLQOIOSZ\]\WWT^_\^[TWSSPSONS\\cdny|ɝ[UNSYOMIMMIIPW\\^XVT^X\Wb_VRRSRNOS[]^ddgsuz~YUTUPLKACDIHGK][^_UTScVVd_WSTTPQRNS[`^cjjktyzXSROUSQCDDGGHJXYSSUWWYWjVWUUROUX]Ncdffklz蘙YXOTTSECCGGHPQSSWXUX[_`VSSVQRScdgffghlyzPVKSPNTNIGIGGKSQPNVVZW[_^WXV[RV^hgjjdklort퐑PPRLSNOSNKGGIKLMQUYY\__][_^VplsmmilmnqwNNKRSMRGROGHGGIKLNTZZb]a^_b`_sitrijklpnwpznNNLTONGGUHIGGHJKKMLMYfhidm]]_^f^jklinnptynpqRNMNN^QUVKHMHKKJKKLWgfjq]`x`]m^[eheeqwwxylnvULPOZeWV[V[\JUOKKIKJKQUepifmmpi^[_[_helovunqqu}[YLO_fW][\W[VYZKLMLGKIMd]jfglsqff^[Z\eda`kloy}qvz||}zqnpoon`_c`aebaccX]YZZ[[\\^hdl~tt|rpr{{~|ssqqooec^ce^aa_bbc`XYYZ[[\]_djg|~vx|~rpvz|~x|vhojb^_``a__a`b`b[XYZZ\[\\abgicilp~x{}w~~~{xr|yz|xyccdg^`aca_a^]YZZ[^aedeg_XWsgt}~xz{}}yszmr{kc]dcc}l`jid_^[\[[\[[^_`d__]VRUoontmnzzvxxysnn`lcb`\]Wx{dliddaZZ[Y[Z^[]^^]^_\SRSSUjumllzcfnvttce_\_c^RSR[[}vplvgeg`^X\_`_d^b_VXSSRRSWYqlljfjbbeplsf_][[TQRRSSTkqfijhb_bjdcdccaaZUSRRSYVXvjhebhbbfned_^UYVMNPSSRSS_~pypofheedg^\XVRTSUWZfaihebehaaebfaUTSWNPLRSSRUZhkprtjfehjlc^^TSVTYcZ]ieepqeiqulXRVURMPORSRST]kijjic`]WXVXV][ggea`gcbdy||we[YWURPRQQTSUXf}tgjpjeea_\XYZZh``eeadlxug]YVWRSSQQS\Yf}{gppgoj_a`WX\YY`ueie\XZYWVRQSQ[b^}eigmjgda`^[ZWZdtd[\\_XU[[][b㳴ojgckonkiea^^[]]闍uwY]]YVV\\X]i˲keihnmihega[Z^abg}~yZ]_XWXU\[^~froplklfb\_^]]zquffsh^]X\djxoromura_Y]_`||{jq{|fd[_`ĺ~{qorrntpchdfga}jxxz{}siŬppwrqlinmffurpyvu}}žںssqrpooqefuuvuzxxľxnvqrpiifduyy}~xvw伻{xwtnlrije}z}}~tvu}|󌔨׽~xy|xxwoprkk|y~}rqzyy򆁊x{zz|ysrrpz~{syyw±w|z}|~|vsqppypuyy®}~~~|{monwy񅌓ɾxtyy}~~wgk¿Ž}~vyxz}}}yjeǗowv||}wkiĺrpryz}}lknorryzv~vrvooxrss~|xyvrrst{s}yywuupy{x{¾zyyxxy|~zxwwy|~}ſ{x{w{{}¾~v{{~}{{~||{¾𮨁}|}~{杖~|}{v歹}ww}~py»pvv~|ſsnnr||~~ĿĿpytz~~~Ŀ}vzw}ÿ彲|stv}|~|uru{|ÿĿrqrmpq}|¼½󧈃~uspwuyľ¾~{vqq{{||Ƚ~}vossry~xuqqtwx{𺻺Կ{wvvz}ļ~wqrmt¶˿żznllprýŽŷzulkllo¼¿|nkkjl꺵¸ĵ{vnkjjgŶƾ{znlkjkkĴƿ|{orppnhikg\򱭦oXcoqsdfk]a_vxxwxxzwxdinquuvtuqdadbbaTTZXY]\Z]]PSQPQPPRYV\ttsxiizrxedeoowuvvutghddbbXXRY\WZZW\\][PQRRQPPQRWZXwqsuukmrs|fcujnorwnypkss[b]UQRWXYXW[Z\ZZSPRRPQTSZ[TX[esnqsvmtt}yssomeolmpmn{zyqVVWv_VX[[ZXYVWSSRRPQRSWVVZQMN{i]jstnqursrnhmaen_WRz{yvWVVp{~dWba]WVTUTTUTQQSVQRPMILfedjcdpqlnnoiccU`XWTQSMulnW_a\\[XRTTSTTVQSSQSKIJKNatkcbbpY\dljjXZTRSXSIKIRQrkc`zwk][^YXRUWWU[TZUMOKKJJPRg{bb`\`XX[fbi\VRQPJHIIJJK_vse|[uu`a`ZY[b\[[ZXYQMLJJMSOQl`^[X^XX\d[ZVTKOMDEGKJJIJJUrdsmuw~{gf^`]]\[_UTPOJMMPQS^Y_^[X[^WW[X\WLKJNEHDIKJJILP\_df~vlb^]_`eYUVMKPNS\UVa[[Zef[^gkbOIMMJEGGIKIJLU}u{b``_YWUOQPROWU^_[WV]XXYnrqlZQPNLJHJHILKMO]zsj]_d_ZZWWVRSTT`XX[[VYam~j\SPMNIKKIIKSP\om}]de\d_XZYQRVSRRWj[^ZROPPNMJIKIRWTȣqouX^\b`^\ZYWTTPS[~iYQSRUOMQQRQWsa]ZW_ddba]ZWWUVVTh|wmQSSOLMQQMR^r]Y]]cc`_\`ZUTWYXzZpqwyynQTTNNLQORzq[gefbbc_ZUXWUUmdhYYsuh\SRNRwx{X|s_nehecljYWPUUnn\dnorYXPTUzĩqngehhekhZ_\]^Vo]kkmnpy}d\}Ŝ}stffmihc`ed[[heclihppvs{wijhigffh[\hhihnllx~}suww{mdmhig``[ZtillqrkixjttrqΨ{zzqomkebh`a\pmqqrrgjhnmtvsqq{ެvxtooronnfghaaplrqfemmqrr~rruwqzvywnqqsoihhifnvusogmmlqsrtvvy宯ls|qtsusligg򮭬}uwneimmsuuvvx|󦧠rvtxuurqzcedulnsutvvx|linosvuuyzm]`rvszwwuuvvx}୬lnnptzttzxyo`Z뱹y~vww}󪤢dlkuxssu~vm`_紷۫fegopwxvtzsaa騢cdggqqnu|tlhҵzkcddnikjk{wuwsp海iihjkrkwvww{xp񮭯sjiilfpsovtwto㯫jiijlyvpszyvvuzq򴳹jjnsxts}z{zxu󳷸ܳ{mmrnrrsxsq񵳵pkrrsvxts󹸶贳srrsvtr겱xrrtxv󫦪vssuuqxy}츷trsrku|yyz}궸snnssemuwyﰮwfmlksupvwvӳiddhrrttvwثfojqttuttįyslpm~sx믮యzrjjlsst~겳貯xvslhlqrvய䲴w~ihidghsrխzuljgnko~筬wxurmhhqqrr򧨩۰wxutmfiiho}ԥwxunlggjmnq𧨦㲳w{vptmllpsϳ{srulghcjױ|zxxocbbfhŪ}|xnibabbe檯~zwodaa`b骧䨮zxojda``]ysuondba`aammafdec^_a]R𱰤aKVcegY\aSWUkmllons}oo\aehkkljkfYVYWWVJJQNOUTSVVUIMJJGFGMJPiin_arj{p^\]ffmkllkj\]YYWWNNHOSMQPNUUVTJKKJIGGFFGMNMkwfijkbejk~|tx^[lacehmcnf`ihPWRJFHMNONMRQUQSMJJGIOQJMP\jehjnekktpkkgd\ebbfcdpongKKMmULNRRQPRNPKKJJHGHILLOFDDnգ`Tajkxehlijif_eY]eVOIppnlLKKeq{tYMXWTMMLLMIHHJIILHHFD@BZ\[aZ[ghceefaZZMXPNLHJDjuacLU|vWRROILLKLLNIKKJKHJCABBDVgbZYYgPS[caaPSMLKOK@B@HGh`XTx|pmaTRUQPJMOOMTKRMFHDCBCAGG[mYYWSWOOR]Y`SNKKJEBBABB@AATkhYy|qOjkVXXQPS[TTSSQRKEDCBCDJEE_WUROUOOS[RQNNEJH?@@BB@IfXgvxzbjjsuq^^VYUUTSXNMIHCEEGHISNVURORUNNROSPEEI@B=ABAA@AEPSXZyu~|tmcZVUVW^PNNEDHFJSKKURR\]RV^cZJEHHE?A?AB@ABJqhzu{trZXXWWPOMHIHJFMLSSRNMTOOPfihdSKJIGDCDB@CBCFSxozjaTV[VQQOPPJJKKVMLRRMPXdu}}bTMJGIDFEAABJHS~~dbsT[[S[VPRQIJMIGGLa|RUvyy~SLHJIHFEAB@IOL՗}|fdkMUSYWVTSRNKJFIPw|yu}~`QKKMGEIIKIOu◙{w|hURPMV[[YYVRNNKMLI}y`|sndHLKGDEJIEJW~gSOSSZ[XWTXQMJMOMpzxRhioqpfILLFEFCIGJqwgQ]]^ZZ[XQKNMKJxxc[_QQky{{m`TKJEJnosPswiVe\_][dbPMGKJJxeeT[fgjQPGLMrfd{^]_`]c_QURSTK{}fTccefhqu\St|rjzl^^ea_ZV[ZQQ_][da`hh}ynk|Ɨ|yqmzw{aa``^]]^QRz``a`fcdpvtklolwƖwyqc{|x]d__]WVRPk`ddhicao`kk|~g}fx͗yuxqrqifeb\Y^VWRheihij__^dckmgffpyʕ|ylokggjffd\\^WWhdii]\babghhqgghkeni󚖙{}onfihhjf_^^_\emljf^aa`fgdfgghtlt~ߔycjrhkjljb^\\]tkne[_aa_deeggint~~󕗑{xhmknllhgoY\[xj`afgegfgginub_efjmllknpbTWvehflggfeggin暘`dcgjpjiomneWS飢{kotpufhhmr⤟X``jnhiijskcWW梥|xorvᛕZX\cdllkiutohXY˘{uVX[[eebivvpjc`ݢk\VVXa]_^_oljliguzZZ[Z[]^f_jjllpng᤟|d[ZZ\_Ycfcujikujf񡠢ᤣz[ZZ[_kicfnmjjivph򢣡㚞[[\\`fkhgsqopnnkߡm__daefguw~mih򟡢蕓|b^ddeehjzmjj󥤢ӣyededdgjjh桠iddehlum𞟠heeggdlmvsxfdfe_ipmmwnsꢤyebaggZbjkmyx㤢hZa``ijekkxٟ\XX\hhjjijlu񤢞՛tYb_fjjkiiz|⛝ߟqliafbsin{꟡xuumf``aiijty흘uljga^aghlv}Śsls^]^Y\]ihݛtoja_]caet{󗙘lmjgc^^gghh󝢤ژ{lmjic[__esݜxtlmjdb]^`ceg𘙘ٙ}||{lpkfkcbbfiȚ||wtqihkc^_Zaǟz}rqooeZYY]^Ěwrqne`YXYY\曝uqog[XXWYꘓ䙞zqofb[XWWTwnimfe[YXWXXccX^\\ZUVXTI坍WBM[]`QSXJNLțdcde^]^aYahlinmlvbnuuxww~tdebbc^]^_ehbglrhp``mbtdfhxxzɼf^addZ`dd^Ydbapd_^^_^]_a{dyz{{y绺be`_ZZ]_ehfhoxd`b]^dbbhzzr^^]dY\\fjhilYrbn]]`ccdboltqu¼ɶdbacbZ^ackiaZ|Y^^_bccgihir|kjmofbdbaca\hujaXTS`|cY`we]dahhiij|kjinlcdcdd^^hq~i`WXTVxx|\t[s`^r]`jhhijiksz|rohgnp~׻lgfebddmg`}e[VWSPTwZTUXW`vxqojfgiiotlqphehhtxojrohgls]XYVTTNOPPQSTWY[a`efhiitvt}mghjjmt`ql]XYUUSQONPTUTUXZ_athiiotq}rkhijkliidr_^YXVUVROSPVSTUY_`ljnquwz|iififrghr촬zbVUUOQQUVTTYsyxhb[[iqghqdYWSMNRUTTUV|cZ[Z]oeim}]POPSRUTWYajZZ_]k`h|SPRRTUVU\vd\\_d^eeh{訧nRRSSQo~fag^fabfkTQSTWPSToijhkbcaevsqZ^W{xqjjkofbeepvv}jkklddei뺸kklnddk|¾rmorddhimrmnwehhs|xr~sjohltﭯřyxppidsýpjdguffgkt¹hfhdsɺƽĭphgoj{ɾþ˽hggkm{úgpqknq¸ƺÿllfh乱ñzqfhqs~w|owż~~zv{z{|ÿ潵}u|಺źƼ}{x|zï~}}mÿ¾~m~®蹻~{y{}z½{~¾{y򿾻þyrsyptpn򼺳¾}ppnwķ¾¿pzpnnŻýƿnnmy¶ɼ}}|~{qymj¬ɾz}ykkjr¶zzjomigû~y|sorjkjį¿|}zwzz}jinhnưº¼~uuuv{zohlm|߅xuvton}}|yzsvtqruulqr~zvxyywyp{ƽxssvhi]~zwxxz{zyyû־{vw}][kyn}~z{zz}÷Ʒſ}][dhm|w}{|{{xľûz~}~]a]emz~~|wxż~}İ\Y[^VUVYPW_cafebmYeziiz}kkٲoh[^ZY]XVVW]`Y^dj_fWWcXhZ[^ykknZTX]^TZ``XR\ZXzg[VUTUUTUZr]qrxool稧zwX]XXTTX[acabho|[WXTT[[asnnfyxTT[TXXbeddfRiYdTTV\\][h}u`heiɤxYXYZZUY]^ed[StxNTTX[\\a_]\d|up_^`bۢ{tZXZYX[ZTbnd[PLLXswtWNTm[V^Z^\\]}yuq^^]a`XYZ\\WXajvcXOPKNppsRuiPgTViWXb_\\]\]cl~ofc[[acsخ_\[ZY]\d`Yu\RLOLHLnQJJMMVkmgfb\\ae]bb[Y[[gkdu}^ge]]djySNOLKKGHHIHJKMNQWVzxw[[\\ehep`Z[]]`gVfvs_}}zSNOLLJJIHJNMKKNQUW}uh]\\aebnd_[\]^_\`Z|eyUSONLMOKIMJPKKPUVsu^\^behlo\\Y\Ye[]eoWLKLNILKOOLKKPpcii~}[UNN\d[]c[OOLHGMOMMNOr|VMNMPbZ]`{àsUIIKNMOMPRY~|]MMRP^W\mÚ~MJMMNOONUmWOORWQYX[m~ߢ|vfMMNMNLJftݬYTZQYUVY^u~yNKNNQJLL¬b\][^VWU[jxxjhSUQrpЫc]]^b[WZ[dsvyyzlkz{酑o]^^_ZZ[_vt~{z􅦥^^_aZZaqz}oe`beZZ^_c~e`aj[^^ir𙇈ᨦkepfaf^cjËmkyff_Zhx{|}íf`Z]k}}᧫[[]aiz]\]Yh~f]]e`pڵ]\\`cqt뮦ɵ|\eg`cfx{񰭮zaa[]twx{妞߬|yne[]fhww}|}qkpdkuvwyqqmjtuswsrnmoupwzsotiouvx{{魦ormkonxw즣ɟtrppqvsbyɤvsqrwxaqs禩~qtruyvvuqѷwnwlxwtt䯭~tutsw|}౰~wnwrntuzw| ޴xuqrtw| Ხxyxpsl{|񯮮Ųwwxvlefr}ӵvmdgcbp豰遑}{rccdaj串}|cncaa就w{xaa`k쯣msrt{}{pem`]еxps}|n__^es·pxpy}|{_ca]\rsϱq|uow}r}hdf_`^qr{αnomkwuvvx{pps_^b]arz{˵qih{klw{qpvey]abputwxkijgedvssropviliggv}Ǵiibghtpvlnnolofqxǯ|~~lggj^_Stpmnnpqpoo{}̬}~nzjkqSQaodstpqppst~ƥz{uq|SQZ^crmswqrqqn}˱|mtqqrSWR[cpttwvzzrlnඳ}wwurqʔ}}ysSOPTMLLOGOW[Y]\ZcQ[n]]mpzvy``Ȋ~{c^RTPOSNMMNUYQW\bW^POOZN\OPR}ywl``bƔQKOSTIQVWNHUROr^UOMLMJIJNcOacyvkbbaꊓroOSNNIINQWZXZ_f{rSPNIIONNSw{sgabZzqoKLKRIMNY\Z[[H_QYIIKOOPNYoy~hU\Y]pQOPQQJOST]ZPIjlBHHLNOOSUTT[|qieTSUW锑siQOQPORPKXdYQGCBOkmiJBG`PJPMTTUvurokgTSSWWOPQRRMNW`lYPGHCFggkIj^FZGH\JLUTTU\dtf]ZRQWZfxיVSQPORQZVPkUKFHD@DeJ@@CEH]`YZWSSTTY^U[ZSQSS_cWhrU\ZRRZapMHIFEE?@ABAABCDEJImklPQSTT^`]gXRSVVY_KYzwykiTturLHIFFDCAADGGBCCFHIvqi]TTY]Zf\WTUVVWUTN|xrZoNMIHFGHDBFDJDBCGGHywsgiVTWZ]_dfUTQUR]OPXz}hQGFFGBEDHIECCG{y}s}rpeZ`awsrTMEET]OPUv|zUJHE@?DHFFGGj|y}||tmxMDEEGZNPSmÒ~mNBABDDGEJMT|womwSDDIGULO`}Čv~~{DADCEGGFPbz||wtyNGGJNHLKN`p钆wtz~n]DDEB@\hz|||uusœsOKQHQIJLQhvuy|~}}qDBDEHAABss|ruoœXSTRUKKIP^~oow~z{a_JLHhf|uwvy~{qЛuZTTUYPLPPYvimwqpq{bbpqyvvx~|{eUUVPOPQU엇}ljuqq|}||~xvv{zyvUUVXPPXgpٙ|ysyew}}{zxvz{{xx}\WY\PPUVZt|}z}zz{{|u{z[XXaRUU`i|䈍y{zvyvx|}ᙘa\f\X]VZb{䇏u}xwv~v|~~bao^^WRao}{wnopx~~^WRUc{pp~}TTUYbry||VTURau{^VU\XhzætyVUUY[hkɦvrzU^^Y\^or󥦤鎓wpZZYTVknor喏ߐroe^TV^`nnsrshbg\clmnp}hhdbkljnxwiiedflgmqjgk`flmoqq팏fiecfeonv~kigghmjYnĞ|mjhinpXhit痛|rzhkimpnnjfsvѥ{}nencpnjjsw藍䠞|xuklkiulpqࡠ~slemhejkolp{ᡠ}mkzwvuhjjlps᠝vmnnzhldqrs񞝝Пxlm{|yqne^_irȡk|{zvwg]`\[dƝwzutk\\][a{Ѥxyut]g\ZZ[t}圝r|wwyotqZZY`ux~잒wbihkrytrg_fYVruvuўhvuvfi{vvtszgYXXZers£pyx~zfnfp}tsrX\YUSddquΡrqq`nkemsis|a]_WWUcdksu}^_^]jllnqffjXVZTVdklruס|~zra[\nbbmqgfl]oUYXdgfhp{||j^[][\[liihfgm_b^\\in|Ǡ}||{yz\\|Y^_kflbdeebd\elvpǛxwzrorq`\[^UVJjgcddfgfedopu~ܘutwqqbn^_eJHXe[ijfgffiirrёutrvnoiepJHPUZhcimghggcqy̝}tuvpahfefJNJRZgjjmlpqhbc࢟|srvkkifexyxt|~wzomktwyytwxt}xwrpmxxނy}}||rplljs{truw{y|x|zppmmyz{~}}~}}ǂ}|hfup{qji{sqsuv~{|uzv~vy{rtnlzyzy|{}}~|~~kr{{rklzroou~zypxvrymmls{{~{z~~}}|}wuuttyzx}m~{rzvpnorqwnmmpvzzxz{sr{z}|}~~{ystvutopntvqwpsv~vxpprsxyxsqqu|~}zyxuzyy|~{{~{yyzvvtorskpqqv}zxqyuutytyw|{|y}zxwx}{{~y~y{zy}|uzqknopust~}zdfrrttyr{tvwzz}xyz}xwx}~~}vw~yyzz{{yzxxmlrrtutv~zkbi\_fuqqyyvyzyzxxuxwwx}|w{}||x{xzvqrmlxxrrp|yuf]^\aiptt{}xuxzzwzxwwxww{zxzzrnkkjhuoprtuiief]uxurqstvyyxxzzwxwyww~vyvwqpkkgij]twmwzehkcr}zsuqyzxyzzxzwxwvv~sojjioqlmlyuskjituuywwx}|{z}v~zx}}~jjysn~zkvwuijiuststu~~{|}z{xqpkkjiiykuxvtvvsrrlqw|{簨yyzx~wtokjii}luvhuzsizy{恐v{xuxz{~xwwtqskiivkmsxvwxzzuwwxx{}pnmmv|ugepooyyz{sxx}|~w|~vwkbkwsgspwyrq|yy|~~{tmy|uhhi|qrszzr|y~~~}z}wl|z|xjhhtkqquyzz|}}€}}wnoglmxzzhhvbmvyyzx{~zx|u||˅~~oggu|z||xp|pjbbijkptxxy|~}xxss{ihgglmkonnwyibadgglppq}wzrwuts|owq~|wroligkmspsopskunjmolzsrsxuu|mpsmnnvtstu}zxxzllmunhnnoounkkos~풓{yvurmmspptrsrpz{uummlmlohknnppllnpvww|zxrrmmnmqquqnqmllmywuusqrqquggktvyqt}|vvmw{xsrrqnmmsrvopnvmrllxpu}{xurswrguwspo}ylkkwhzttrrqosuzwponooqywwvvzyxxywtzlvvwxvltxxxtrrqo|uyxooqxyzxvxzupxqxxztvz{}~wvzw{xxtrrlqqyxyuoopzzwxvwsotquzy|zxy}{~ssqpnqtxqooqtzxxwxwyxnpz||}~~}z{v}|tsqqouuqpooprxyzxwyyxsoonwtyy~roq}uxsrqxronooruxzzyxstppnxjlkomxxu|~owz}wzvupoopqrwzywuwsxnehdeffismrljvytpo}uz}~}{yttrqysxu{zuutxmchdffikjmv}oqlkkgii{{srs{}}~|zvvqtznovjsrrrsu|vtmmffgjnoqzopko{jj|yz{trromjgjvnx~~||zv~uzmmrjoowsulefpnfioowmlhfhai}||ts{oeeghiiktz||uvuytsopziegfim}pljyfif``ᒲ|yx~twifehiijntmyjzzyutuzmkgffeggmrimheiibcc|srumjfhhijiitӄ}vppjjffmjjiqnlgkkfzpqysrsxihhiiswss|~~Ҁ{|xtonoolefgih|tsstsvy|rliikiliijnsttu~}~ss|zz}vlonshkfgi||ttussvz}tkiimiipvuxwz}~~}~rq|zvuwn~tlik|nklkolk{tssrvzqvckimnjomy{v~~~yz{}{}{vimzjkn{ojmmnrvtsstyowxzvy~Šzlzi~rlpmlnnpttyuzyy~uzz{{zryw{ی}lspno~o~yzy||~ꏊtnkhook|qqmjjmmslz~zzx|}~x}~|uvrwwxz}zىqlddgpyvwx{zu}v{~}ypocfxr~{}yqovvzՎmjceqqywz||prxvuxvxusruuf{s}tysmnryԈvjgldem{|vtvsnvurx{~|lm{z}|ptfs}ywsxuyxxwtrwwyw{su{}|ywzjorq{vxyytsuwqryďxykixpopp|wvznjrryxruuru|}zvzwptxopmmoqzv~}}~|z|xwxusrtyxra}xzzxtwxrppoppopsuusyt}bg~ytqqsot{ihrsunlljinoopmmppqnqnst}{{}bcge{unmkp{~qt{qq}~nllkmtosuqslinnkkbegt|xopjowtxvsttzvnllkorttsuvusqqlmwqkghtlwttsszssnmllkmoqvuqpnpiwyjrkvttptu{zxxywmslkmmpwr}ooqqvq~dh{ysszywpowmwkkm}nowq~ooqv|~wxwwswzvnnownmhlsoknq{~st||vvxwklt~kkiqvuxvuusswximecajmnmfkskgvvsml{~tfeblltzlxsvvystuvvqvw~pf|ebbaiq~fdgjmmtuqmqu{oeebbmnntqzsyysstrvzqp\Zjepga_pebefionojokrtuknogicbnmll|y~}wnoszsstspqsuqss_gqpph`aovwd`_xfy~rnmckjzfnwcbbgmmw{xz|x|omlrryrrsqppq}urvkxkjjinnvjo_toyx|snenicacgeldbbdimrvz{zsptljloffpnrqsqqɉ{ssyxolgijhfab_dgcibfirjkccegmomhgehnpu{}uu~nllkimmpusnnq{uollmlnihfadd]cdeiqrsnkud}ojkjlgkiqnnxnknlkjlpoossl~zrrqlommroyngmc]`bchghrsqmXZggjjlenhjknnqjklojjlpqrrwovwzwyrhjpllmmnlkljj__ddghhjqm_V^RU\kggswmmkoomnlkhijjkoruntzw{opwphnpvoojmklgcd``lkffcuolhs[SSRW_fjgnqljnoololjjlstwmrpvvqvj{vrlld`\]]\iddfgix]]Y[Rknkhdfgjnnpoklkkiihpsxzrrpvvr|rhkuhiba]]Z^_RilckoZ]`Xwhsmfienomoppkmkkihhqtvronnvlx~r|~da]]ebcbn}kh`_^ixwhhljkmrrzpzmogolkvwsomjkluz}rqq]]_oi}}dtpakmj^_^jixxgfghsss}zzo{uu|풅zpmjkhjr}ia`sr]]^]o~~􉇄ajnkiklihh_dinssuox{z||顚|hughgmwz}h{wfa^^]^^~}~}sbkk^joxi\mlnv|}||vyfjfcgijmzhhgxfcf^^_}|}~}lacinzljkmmt~||{x}}effggjlpssusvedcdmzwrk][fx{dbllnw~~||xagglkomgln|w|jk|aYz`mi]wfcjled|~~}}||}}{ukghhkmmjev{vydprwj^^qxg|}vefmmev{~~~~|}v{{}{wkhmqmmjm{yj{vyydx}r|pqxm_]^j`gg}hlmmo{~xv{{}yxllonnmmuuktde^cdoqq}|z^^vkXclllmknqtwuxpns{tt|ufkktvmnwwxzte^^krqrrnfrf`XX__`fklklorxswuuty{jjeejstwrtwwts^^]abbeddln^XWZ\]bfggypzrzuujpzvejhgelaho|awxuoojeb`^]`bgeiefiakd`cdbpihizshihxr`cf`aahfeeufnxxlkkm``ic]cdeffjdaaeizztkighb``fdbbfddcublmhhaa`a`c]_ccffbbdflmmljicc``a`edic`d__`ljhhfefddi\]aikogjsrllcnr~{hcca``gf|jddbi`e`_kchpnkhegkg]jlifesvvuobaal]{zjddcbfjnmfedecfnlmiimlkklkhnallnzwwunlbgl{z|wzgwphddcpjooffefmnnlmmhckdllniloqzvstlknju{x{y{{ysvwrkhhedcc^eeooleffnnmljjfchejnuy}prpxxuxllpyyz{xyyvl}zonqqddccafioheeginmnmmllkbdowtrt~~{rszzrqpvy}uuklr{|fqmlqqfdcchkhfefgimnnmlkfcdcvxyum~|{~zshmlwx}o{c_a{mfjedckgzeefefhkmnnmlggddbm`aaecx~{kkhnwz|}pusq`ilsorirmiifeefggloljgkglcZ]Y[\\_izz~bf`r]hukwgbaohq~mxuoqonrliihgfmfjvfmkhhgvlbX]Z\\_a`clsxdga``[\\}qpmsnfereuvnppxyqomrjjehocdg[ecvccehpjhtbb\\]`degpude`do]]uljkmvgeeb`]Z]iakqqnomkqtim`bd[`t`hehs{xc\\fd\_{xeemcb\Z[T]mllmgsyfnbXXZ[\\^gr|{swnzoxsnfgejedxxbdvp`\]]_csyxfb`nZ]YSSrkjjpg}zj\YX[\\]ag`l]mmlhhvxwxxgfksut{|sba^\][]]chyy_c^Y\]UVVqpldcgvzx`]Y[[\]\\ghhgwtwwuxo~xkde``w\\c``_gdb]`aZ}ncdpiccektqx\[[\\ejvgfoxxusppormnjshye}ddb[\]_^q{|yrdcddchkne_\\^\_\\]`|yfggiwspopfgnlmm{q|l{yaedi^a\]_qqh{zyw~deccdgknvf^\\`\\b|rjikkmppofeomiij|bszhb^ard`caebay~~zzvjdccgkt{qciU]\``]b_{}mnirvpqtolnopnpnz{{vxxi^bo`bdrfabccf{zueccdeips`|x}}{zjkljzutlvv}q{{|{{z{nam^wtjchdcdce}utncchdiio~whwlnponhnmp{zz}|{{~|{yyz||t{zcif~cdrbqkzthihllnqustzxzfb`^debuqz|{|{{s{}|}z{|ihd``cbgansllihhlmnixm{olfwwts}jglmzowyz{{lnyyoj|}}idZZ]emjklo|ijfmgkomjqa`TWjdvtpwrryzyo{}}|smdaggvj{}}~dbZ[felknllabhhfigphgeehgXmf}ofpvysrxxyz|}~~~oha|awciv}}{}}mb_cZ[bopjh{gc`hgdkp{zoqzs~t{o}zzv{yyz~~xw~`asplknsz|{xpyyvgj\h~tqjiekgmmnmizgky|~~}~|xyuxz~}|vlmizlcfw|znppmknafhuxrrdmttshlmmjikmfgmt~~yyuov}wn`]wi__`usvokjneavss~reyemlhkkhlqro{~~j}yy|nv}vmegj`_]]_`kgv|rq|}qpnk|o~mllkjikpo||t~~|xzgU|yo~mqpngjjb__^afzsiig{wkftpvV[rmighjfk~}qz]\f}eg``a^[_``_]]__csbdbgh}znllqVW[Yplecafqugjqffqr}~qw``abiu`sbd`b[Z`a__~}}y{z~pwVY[hqnfg`yexxmjomjjin}sh|``aehjgddedbb^ulexvxs_[\ykcx}xmjjihnn|~}}weea``aa``cdfgutsedbcab]mn|wspt^f|amjjgikpz}wlijkkah`addgnit{uosabbdyk|{zcrX\~y~vpojjow|jkddkamaaduegnvhsvvqbaeyj|p|~rt||knmnimps{}siccdmdd_dkgcfiqsyrgf||ppjjlk`ht~xxaa_glkmjihffhiyzz`dZXW^abb[`hxvc]llhdcrxzw{m`_\``io}}bwoiklnghghhdhivyrxwe\r[XWXV^e}t\Z\addjlhdimth__\\abbhuwvzvfphmnggedhl~{uegRPa\g]VUwye[X[]`gfgagckmmehiac][aa``qvotuurlccgnggdeg~y|teiiU_hgg_WXelnZWVo]qvwife\ebs`hq\[[alqmpqnrdbafggmffgedce|}qihlbzocba`ddlafVlgqptlg^ec\Z[`_e]\[Y`bhkppoifia_acZ[dcfegee}ojjpofc__`_]XYV\^[aZ^aibd[\^_fhga_[_dfjprkksda``]aadigccet{qwlfccd`_]X[\TZ[[_hijecn]tgzcc`c^b`gccmuc`ca`^`eccggtuartvsohihcfddifqe^dZTWYZ_]^hjheNP^_baad]f^aaccf_`ad__`eegflvdkxzwkmkng\`gccddedbcaaVU[[]^^`hdULSGKRb\]lodeaddbb`_\^^__dgiciolpyuvbbjb\eglffadbc^Z[WWba\\Ykeb^iPGGFLT[`_fic`cdd`b`^^aghlbz{~xdbiicjuyaqlhcc[WTTS_ZZ\]xx^mRRMOG`b`][^_addcbcb_`^_^^]ehmo{||ytddbhhdqhv^ak^`ZYTURSUI_aW`{yycNQTLk]gf^a\dfbbcc_a^_]]fij~~|da``i_mwsh}zvtu\XTTS[ZVWVbxqx_\TSR]ylka`dbbhemxcmac\d__k~~vmha`^_`jovxu{tihiSTUd^qqrXhdU_a^RSR^]ll_^^`jxgg}pllalhho{pe_]^\^gzr{_WWjjTTSTSe{rr}|xU_b_]_`^\\W\`fjyyhugailmonpxvr^k\]\bmp|s_qm]XTTSSzrqrq{hV_`S^cm]Sdcelyzpvqmmnhwzn\`\Y]_`cp^^o]Z\TTrqqrqaUX]coaabddj}}|wqwuomnmkqus[\\]]`bfiikj~~k~ZYWXaoulg`RP[mqZYccen{~|wup}ommnjtyvtW]]baec]bdplq^_pTM|qWc_Unzzx]Zac\[r|xqqppoonnoqqoix|a^^acc`ZkpjtlwUc|ioaUVVip_tun\]dd\mq|rppqopqnpiootvz~sqma^cgccb_bom_nikkUkrgsgipeXUVbY__ux_bcceru~}xspqsukitonptz~|onbbeddbbiixs^fVVOTUcfft|trVVncP\dybbcadeh}~yxs}tjhkdbfoiirk\aajlcckklnxfVOO^fehif]i^WOOWXY^|bbabehmgzusjhhgmp``[[`ijmhikk}gfwQOOUXU[ZZdfVONQTUZ^^_ofohpui{h^curmk\`^][cX^fsYkljdc^ZVUQOSV][_[\`Xb\XZ\Zha_axwpxf[\\kfVY]WXW_]\\lv]dllaa`bUUV_XTYZ[[\b[WXYY\aqrkxwxyy~_\Z\VVXWX^[YY][\[jYcd_^WVUVVZTVYZ]\XXZ\bddy~{}wx_^\VVX\[aZY\XWWYcb``][\[[`SSW`ae]_ihbbYdgw}}~{so[WVWW_]r`\\ZbX^YXc]`hfc`]^b^Sac_[[illkeXWWaQqy~zypz]XXWXYY]`{ec[[\[]eccbbfccb`eXbbdvpmmkdbX\`nzpztrwmp]wukc[XXWXYg`ee\\]deedbbe`[c]cce`bfgz~plijb`b^hnnqoqvqoilmvvg^\[YXXWTZ[yzeeaZ\]eedbba^Z^\`ekosfhfnnmkm``dllpqnoolbtzpcaeeXXWYW\_~e]ZZ\_eccbbabaWYdljhjtutqhioptedciltkkachqrz\ga`eeZXYY^a][ZZ]ddccabb`\XYWknojctqptwph\`_jks}frYUWp`Z_ZYYa^pz}ZZY\_bcca\]YYWcUWVZXmstyyvp__\akqrtf{ljgV_bheh_ic__\ZZYYZaba_]`\aWOROQRRT^ooxrWZUeS]|~|lbm^YXf^hucnkegedic__]\ZaZ]hY`_]]\kaWNRORRTVUW`gmY[VUTQRRtyh}hdjd]\i[lleggoohediaa[^eXX[OXWiVXZ]e_^kXXRSSRSUYZ[diYZUYeTTldbcem^\\YWTQT`Wbhhvefdbhk`dUVXOThT\Z]iqvoZRR][RTolYYaWVRPRKTdcde^jp]eYOOQRSSU^isxrjnepenic[[Y^YYmnY\mgXRSRTWhmlZWUcPSPKJKxicaag^tqaSPORSSTX^WcTddc__lnmnn[Z_gjipyqiYZVSSPRQW\mmSWRORTLMNhgc[[^mqoWTPRRSTSS^__^mkmmikbsunua[\XXnSQWUUT[XVQUUPre[[wga[[\ajhoSRRSS\am^]fnokieddceac_zi_q\~{rXYYVOPQSSfxyqrpiy\[[\[^be\VSSUSVSSTWsp]^^_middZ[cabbpfvscroWYY]RUPQSfe^qqpmu\][[\^ael]TSSWSSYvsia`badfddcdZZcb^^_qXjp^YUVfXTVUYVzUnstppkb\[[^bjqgZ_LSSWWTYUqutdd`ilffid_bcdcecoqplnn_TWdTVXeYTX{XY]pok][[\`fwviW{rywvostuqpabc`pjiz`jjqfopqppqdWbTlth]V[XW{YX[rkje\\`\a`_dx{z}tuyymvz_macdcb\b`donorqpptrponnqpgomW^[rYYgWgdrl``_bbdfx|xkijup{xymo[VTRXYVheoqpqppiprrstoop]\YVVXW\Wbheea`_bbc^ncqdb[y{mlihr^[`anbjmoopacnne`rsst]YQPSZa__aeqwbb\c\adc`fVVIM_YkuyielggmnndoqpsogaYV\\k`qrsstzZXPQ[Za_bxccXY_]\^\e^\ZY]\MbZqdZeknhgmmnpqrrsqc\UqUlX`lsrrqsscXTYPRWbc]\pxv^ZV]]Y`fuoncfngrhodqookpmnmnnqqlkrUUhfaadjqsqohpqmx]^R]rsfdwwa_[`]bbcb_o\`mprrqr~pmmikmqppi`a^obY[msqfhhecfXw\\hkrffWcjjh^abc`_ac\]cirrssw~nnmmicjpkbTQk^UUVljngcc{f[WifereZl[tvutcc_a`_bggdprrs^~rnnpcxjqjaY\_UUSTUVb]l|sii~yppcdb^pcsytcbb`_`bgfppirrpln[I}rnfvrbddb\^_XUUVTX^qj``^{yni\XhdkKOgd`__]cw{rtqenQPZr\^WWVTQUUSU[iY\Y^^qt|wl^__eJKOMgb^[Z^w|hlt[_eZZfgrshnWWVUV]iVhXYVXQPWWUUsr|pmmkoakJMO]ge_`Yp^ondadb]^]brhxvuwy_tWWVX[^\YZ[YXXTjcx[~}lhieSOQvxwo~c[puoc`_^]\bbqrrurm\\XWWVXY[ihh[ZXYWWRcer}rifchRZwxq{{Zc__Z]_dtorttncaabaX_WVYXZb\hoidhWWYoarx~znmUfLPswns||{kfc^]ckpttubaZZbXcVVXiYZai[gkkfWW[vo`rw{y~gxqtfhtqq{|`zcaa]adgprtti`ZZ[cZYTX^ZVY\egmwfw][vvrruggbccbollkqgglnpglojhfjgdeej\[_[[lrvwswx|ttmgunlyuuxz}}|~}zxvmllmigjplpkghhjdhs`dcedja^[]lsjrssmuvtfgekfhsrqw}}~}{}utmmlrgpinjnujtitt|kdcdbbffgqsmnqqsrsqkllmmsoollfhqp}~{|igfti}lmmjkifiyksrij`kii__^bhhirtpqlkollkmmstjvphhtuu~}zkhffggipllmwmjkgm~uflkb^^]gfqttnlljlmllkpmswsxtlddfiqmqlmhfgfzq}momk{hswk`j``^^apowaknkkllkmpu|szrhacclkklnhv~lq|~okjllehk~xx~twyl``j_{qrwmkklkmllmoqqggc|ccklmlruet}}pkkomfeo{y}x~zttusuiyyyxtkkmllfispmy|wmlchlto~ffsf~okkffedknwywvvtksvoz{yssollghffqzy{{jeejpzzbfbbzopokfedblnvy{|~xvv}urnmc}y|{vmpmqlffhfyfojidbfltkkn|{y~qojed`bbccrd~r{vuhcgop~wxz{qpowumhhffrq|tocgabbivx{zy{qqklhd``ijuUWZppsuughgg}uqpwsthqlggrhnsrnebbdhjmrxbigddde^^TT[epu]jh~{nonnomruqgfhr~hdohkoo~r}{rux]TTZkbdcjfygh{twpnnrpjrgymonjoponjfstlokk|{kUTXjlfilhjgpyonnvqrjru^obcmnmonoopojpqtvwsuuh{{|di{jwusqknkn|atfhllnnouupbbik^[mooqruwt~v}|xs}}|qcduzyzztvmprgcddmmonpvvt|rrieeopoopkjttsuv{mrt{r{suntszyzzyxxv{vvtwnqquvuuxp__gpopeotqpsppmopoxy{|~}}~wus|oy|~|hfflssutosouprqupws^sqqopxxuuyqrijjoz}}}~ynjqvotcacisrxyyymlqletxwiopqquwzx~}sqvvׂ}}}qvtpkmscdaapvkginxtpnnpnn{{xtqqrwyx~~w|}ftrokkrjebaadmijvvwmr}p{yzqqrrvwxw}}x{~{}{eigeossjgigglmryyzcaf}{|tpvxwp}{w~}avz~rzkdcchkhggffpllmwyb`b`x|yjlvuxr||x~|{yzkwnpu_by~jxacdigkmjgffgzonnsy``a~~}zmm}vsst|v~z~}~mnjjki\_ww|h`^__dfggpohggmlqsrcw`^]nrnnos{yvwxoyxz~}ummkjn_\rwe`__ffkjconohggiglopnrac^munpprzxyuvnpouxutkkjjlgqjfeac__bbhkhwyusomiyonoq`d_st}pswututpqntu~zxvmmnjllhgtckrcgiqrzqwin{xou}jpca~~|nwzxuvutppts{up|wzooxsq^^ktr|}~zizpqups~sttxwxvvuusoty~zxuknlwxymkr}~yy|joisrqrr}rwvvwvuty}rojih|Ƃzkkp|wsvghij{nsyrfpvpvspv}hrjeccvywwkmnphttsvskcikwho|zgnmpotqpt{ykiibccdxynrmohc{tqrtumhegjlkligz}z{{fottvztt~vymiugbbcggxznnob`a_{pmrtrsqkglnlgifcfi|||yz~u{cbehobbdwwspnoped`svommrwxqvhfdcggr}y}~uvstvvk`ddcbbvoqsrrqqrsrvwx{zzbj{msswyu}vulqssx}j`_ebbfsp|}~stqmtwwxwwvurljzt~||~vxvwrtxtz}hgbghhcdebot|zrq{wxxvspqnz~nx|}|wwxwxytt|stsajlktxutostuzys~zvwxxplxuoivllikq{|~vvxwwxuwsstcozikwuttwqywy}ywwxxysxjmiklxwvvwątststxz|srwtrttyd~yz}|zvzxw~}}zmoolkkjtuuvvxoinmussz~|ifrtt$y||zywxy{z{z{{qqzzuqnklntwuvvuuyzmjlgw|ttspstuttzrwwtvwz}|q{z|~qtlkjkljqpuuvvyzikrlttv{vuonjznonotx{z}qs|}qpptrolkkikjjktu}q{{kgeizvt}vv{vnoprlnonkdabdmtt}tpqpoomlkhiijpprugisxsuvy{vwvpqpqrnmoqoicd_akkyu{ppopprmmlkijjkqwhh|strwtstpnrrsomppeddcp{}qoopsommlmkmoops|wrqrroporuutohfypqonnmllmkkl~}{ywsrsvuutqoztw~pnmmqlkklmmou}sstvwvuuyxsrnmopqmmnkkjpkjr{vyx{|~~zwvxzzyrmnpxyqnnlkkmnknhpuyz||ty~vwyywmjkzvvywyynrnhiqyysywljj|mnw|}~}vry{yymllg~xwwyvqv|zjmzontuuv{uzynkjjnlknwxx~xyzijl|wy~tmloknosooppkvnjjsxqozxvyz}{zifgezvolmoknqkppnqmjjkrzvr{zwz|~}yyhqqzpvp{spsoouilpojoyy{yoofirzzw}{z~|z{eqrsmmnqruzxzsuuypsegkooypsxvoeqwyzepmmnmor~vxtpnpkmdkffdzxyxogjsyyq~z~rnmnmnputxtn}mlkaefnptztyjnwf}mnuqz}~tmstunnmnmpu|ywqqo{rlhej|uutsp|~`xyx~rqmmqq|soonoqkfkjoihiikahgjjpyuuvpsurtcacjuvqmrrno|oonltmmjchiihhdbgfycyztuyzssiegiqqwtomrrqqvulvwxmllhhcfihhf``dffgvywssolmpptuxyvvsryvutda`^f\\`ce]be`^\w`]Z[[`RQUQQbhlmimnrjvxkc[ja_kihlmppsoq|qnkjbaab][_eafa]^^`Z^iVZY[Z`WTQSbi`hiiclmj\\Z_Z[hgfkppqqsouyrjibbag\e^c`dk`j_jjraZYZXX\\]gicdggihigbccddjeca`a\^feqrtop_\\i^sbb߅_a_\_ovaih_`Va__UUTX^^_hjfgbaebbcijh_ke]]ijirpo`^\[\\^ebbvmc`a]cyxtk\baXTTS]\gjjdbb`bcbbafcjminiaZZ\_fcfbb^]\[qfsbevcuyaq^ivx|yy}maV`VVTTWfemWadaabbacfkriph^WYYbaabd^ltcgrtuea`bb[^atnnvwwtzjmobVV`Uqghmcaabacbbcegg]]YrYYabcbhuk\ks}svvfaaec\[eqosvuntpjjkik_oowonjaacbb\_ifco}rmcbY^bjet\\i]t~eaa\\[Zadmxomlljailez|pqoiiebb]^\\gpoqq`[[`fppX]XXqdfea\[ZXbdloqrtnllskhdcYy{vsorqulcfcgb\\^\n\ez`_ZX\bjaadrrosge`[ZVXXYYhzZthqlk^Y]efyztmnpqgfemkc^^\\gfqjdY\WXX_lnqpopggab^ZVV_`kKMOffikk]^]]z~|{skgfmij^gb\\g^cigcZXXZ]_chnY`}^ZvxxwZZ[TTJJQ[fkS`^tuq}wdeddechkf]\]gsr^Yd]`ddtyyhsvqhjnRJJPaXZY`\o]^qjm}|fddhf_h]n{xbdd_dedc_yz\jutwj~beaarqaKJM`b\_b^`]fwoeddlgh_gjTeYZzccbdcdded_fhklmi~{kk^qqrZ_q`mkigadadrWj\^bbddekkfzxZX`bURbeddedfzgkmkulrrnuissgYZkpoppjlcfhvz]YZZccedfllkr~iia]]geeddee`_jjiklqch}kqirildjipopp|ownn|lqlljmdggkllngXX`gfh]gkgfieecefenpqrvustuumlireortr^\\byiikjeiekfhgkgojVkjifhpokjofh^^e~p~sttvtvuutod`glejYWY_ihnoxxooccgb\jnnaghihmnpntvsfehhvyxuttvwwsuufljfaciYZWWfla]_wdmjfddfddqqplhhinont}vsqqitxyuvxvwurus[jheaah`[XWWZc^`kklchzrfxrpqhgiilmnumrsprjrru{}xqxtpsuq[_]Zeii`]_]]bhmnmnTQvuzZxrrqifvlnmfrttsspkm}t~suWkothpaZYY]a^]]\\fbbclnzSQSQtlsrm^`{tkknhqqjpkjoivpamdfkUXyns_mWXZ_\ac`]\\]pdcchvlPQRuqswrna`br|{lihjqkpkll_daa`b^QUllq]USTUY[\]fe^]]cbfhgzTiQNM`usxw{uwfaacgpljkldnlmqmllecdca`dTQhlZUTT[[`_Xede^]]_]adecgzRSN^s|wuiaccfnjlijbcbhsniffaa``b\g_[ZVYTTXX]a^mokiec_nddefyzQTOxvvxvghpcfjhghfddaefnjhhcbcd_taa^]iY`gX\_fhpgmu_dqndsip\aSQovutruuspbuvsimjhhgfbaedkvg{xweploddnz{hyzgSTajhrstp_p|wucae`cwuvuvsuurvggvjijhhggeadphn~{{wnlj`dayy{|{zlnocahustouoq]c[cbbczvuuvxxqejiihhihgejm{xv{y|{wygd_^^r}}|x~paafv{vrulik[[l_c|vy{leWbgbgdafn~}vszz}{\f_ZXXYl|zommacdf^xujihki]U[\hZ`omX`^aafbaeqluulz_^s^XXYnn|~dhce^Yq}wjggjk_ZWY[]]y^ZYntqnolWafegkseeottila\i\WXY\\n}pddeXUWUpebfhghc\Y]_^xY[WUY\p}~typstmklqtoelvtVVX\cWWXZmmifdef[ZVikdaaejibhx|ZWVVZZisox~qpufheegtgr{yu{^SXXWXkdgxihhuueefehihkxroqskkT\objimnhqih^cdek{{p]SRXWW[hfrsvtjjgczufiijiige}~sb[Z~kr~tkuss{sikijdzfjgmwp[ZV[\\YY[Xejvusuqihpijjgc_`}]qlpamss}tjjkjkl{|rggofgfT]__gljidhjkwxy{qqjupkjja\g}ve_Yg_`]_gqstjjkjjk}rhjffgVbn]^ljiijmhyx{qoptokjjijobgxu\`]_anm}jjijjx~rgfgfglmoffkihijo[t}x{prztrplnkinlmi\vyp{z~ybd`__ijjkvb[za`hffvmro]Zgijjorrpxpoopqpqqpo{``ivvivqwidb_acjmjjhkm`]_Zjoggfxtstdhisijiogmnlnnvqsrxakxijwvm`dxx__^`a`ffjjiilm\^ze_rqfgxvujok|sha`^pddjnqnpsuu`blvyulp``da_^^a``aikqe}nn^ZX\mphfwuqk~uio}~h`bbvgacdd_WTVW_ruedmvvd`a``_^_``ffgj~}[\yxsft}lgitjlmijhccdeaacec\VWRT]]l{fnpot``_aad``_^``afk~\\{rosfhfj}qrheebaddecadedvXWWVucznrrma_``c``_`_cff~{}{}cgt{uowhdcddbccfhhgb[Y|uj_a_^^`__`b`bb}{{z|qqojhedeihiisgdbmytdgp`^^c_^^_bcdcf{{}zzhqsxeefjjimlfea`b}b}urqa^^`^^fba{yg~su~zm{zz{y}zjmkopoox{}njjkmnsyle`axp{`irjb__^_bdadz^ejlmonvfjww}y|qjkmlk}]Z[mjjmjullaeyxbZZbjjcjh_^^sbdu{riooppsgo|~z|tdmomm][\Vokkmidiom]`}ocah}ffglejja^^_cbacvijjrqtrij~~|l[\]~|}yyoismuqtg_^a]abgccd_sgtszwuta^^__imfbmihklpqlv}lZWXWrrxsx~l|yha^_a^be_ccbdvpywta__`golfmlhkmpn}kkYcclcieumudbeabh]`dc^bkklztuvlcdZ^gookomkovlk~kWbdeabcfginxzzikegpglbfXZ_cblcxr{citidYglnn~wqVqcaabbdgz}ryyhjfa`b]`W^ZZXmlyjrrkc[_imneqwjpcaababfjj|{rrzjte_n`__UxYYatbindj[_iYqcdjemopttc\bc~||fabbabbfjux{rnkiccbne_y[xyY^piih~daun~qS}klkp{a`\\a`lqtu}yfccbega[wy^\a\\_Uwzz[[^_dmiiysaegeeUSU]hi|pyr`\aa^_xrqqn~ycddcbi~`_\U[\\XV[Zp[~pohhxkleeYUWYaaoh{yc^s\aawaaghajkmbb]~{zrUX\\ZTT\^^_m~oyjfe`[\^]befmpheebawxiihh^[ZW^TSY[]SX[VTRlVSPQRRWIHKHHY^cd`dei`kmaYR`XVc`_cdggjfhvyrfc`^\[[USW]Z]XSUTVPT_LPORPVNKHJY`W^``Ybc`SSPVQR_^]bgghhjfkof_]\\[`T]W[X[aVaU``hXPOPNOSS^_YZ^]`^_]XYYZZ`[ZXWXSU]\hikfgURQ^Sf[[}XXVSVflX_^UVLWUUKKJNTTU^`\^XW[XXYZ_`_Vb\TT`a`igfWTRQRQSY[[n{eZWYTZp{xojaRXWOJJISR]a`ZXXVXYXXW]Y`c`e`XQQSV]Z]YYTRRQe[g[\nYloXhU`mospotdWLVLLJJM\[cMWZWWXYXXZ]bi`g_UNPPYXXY[UbjYz\gii[WVXXQUXkeemnmkp`deXLLVKg]^cYWWXWYXXZ[^^TTPiPPXYZY_lbRajrikk\WWZYRQ\hfjmlekg`a`a_aUeemed`WWYXXYRV`]ZftidZYPUYa\kSS`Tyit[WVRRQPX[dofdcbcc``W_b[prfge__[XXYSURS^gfhhWRRW]ggOSPPh|z[\[VRRPNY[cfhikdbcib^ZYOoqliehgkbY\Y]YSRRSUSeS\qWVQOSYawXX~[iifk]ZUQPLNNPP_xqQj_hbaTOS[\opjcdfg]\[cbYTTSS^]ha[PSNOOVdexhggh[[UWTPLLWXbCEG]]_baSTSSptrqia]\c_`T]YSS^UZ`^[RPPRVX\aePWuURmollkPPRLLBBIR]aIVTjkgusmZ[ZZ[Y^a]TSU^kjVR\VY]^^_mq}q|`jnw{yh`ceJBBGWOQOVReSTgv`csr\ZZ^\V_Terxp[]]X^_^]XpqTamlk^wsW[VWhfWCBEVXRUYTVS\wme[ZZ[b]^V^aK\PQq[[^]^^_^X^_bcd]vsp``SeggPVfWca`]WZWZhzM`RTXXZZ[aa\qzoPOWYLI[]^^_^`s`bdbkcigbsj^hgg]PP`edff`bY\^lpSOPPYY[Z\bbahvu``WSS]^^_YXaabcgY]utp}^e\d^aY_^eeffremddrwbgbb`cZ]^abbd^NNV^]^S]b`_a_^[\]\efgwi{yvihggijkca^gZehjhTRRXo__a`[_[a\^^a]eaLb`_]^ff|bae^_UTT\szyy{yxfuggjhkkjdYV]b[`OMOU_^denneeZY]YS`eeX^^_^ceecjkh[Z]]knzyxxniggjkkikk]b`\WY_OPMM\bWRUmZc`\Z[][[hhfc_^^`ddciskhff^ilzyyxxpiilikkhkiS`^[WW^VQNMMOXTVaabY^ph]nigg_^__cc{tbjaghef_fgitxuxxohljgikgSVUS[__VSUSSWX^ccdIGlkpPnhhg_]lbt|baZfhhe`evxlwlnPzchk_fYSQQUWTSSRR\WWbcoIGIGjbxy~igcTVpiu__b\ee_da`d^nhYd[^eNQsflYePQRWTXYVSRRSeYXX\kzaFGGjgh~m}gcWVWgpo`]\^e_e`bbT[XXWYVJOfekWPOOSUTS\[TSSXWZ\[oI^FDCUjhmlojm\WWX\da^_`Xb`bgcba[ZZX[LJagUPPOTTXWQ[Z[TSSUSVXYX[oGIDThypki_VXXZc_a]^WXV\id^[[WXVVYT^XTSPSOOPPUXUcea_[YUdYXYZmoFIEmxtjjlj\]eX[^][\[YYVZ[c`^]WWXZVlYYVUbSZaRVV^_f]ckUZfucXh]eQVIGdjzjhfiigdVijh^a^]]\[WVZY`k\nlkZfbf[[frsbqr^KLW`^hijfTequkiWW[VXlijijgiifj[[j_^^]]\\ZVZf^dsnojcb`W[YqqstsrdeeYW^kijejetfRWPYXWWXojjijllxfY^]^]]^]\Z_cqnlpnonkm]YUUVittnufWW]lzqlgja^_OPPaUXvqkm{~vrbZMW]W\YW\ctsliompoP[UQQRRdspfdcWYZ]Uo}k`^]`]RJPQ]OUxgeNUSWW\XW[gbkjj_mRRgUQQRRffstuZ_Z\UPhsm`\\__TOLNPSRowSOOcmifgbLW]\]bj[\eij]_UP_TQQRUUfsf[Z\OLNMf|[W[]\]YRNRTSnNPLKORftvuvkqijjdbbgkf\culjLJMP[RQQSeea\Z\\RPM`bYWWZ_^X]|ynrzOLKLPP`jenuigm]_[\^j^hrpkqUILLMRQQRRd]]n}__w^lkZZ[Z]^^`mugdfiaaIRfYbacte_j`_TZ[\bqrgTIHPOQQUa^iili__^Xqk\^^\[swtuiXQPtahytkbkiiqi`b`a[q]a^dmxgRRMTUTRSUR^blkgkd\\ev^^\XUVswxSfaeVdijirjaacabcrsi_^f]^]KUXX`dbb^abbmllndd]ha]^^VR]sl[UO]STQT[hijbabaabxvvti_a]]^NZfUWcbaabbc[lknbabea_^^_dX]n{wkQURTVcbrbaa`aaovvui^]^]^ceg^^b`_aaeOgpknbbkdca^b^]dbb_RlofqputoWtXUTTabbaabmYSqXW_]]mejgVQ]a``deecja``babacaqWW_ll`lgmu{~^YWTVYaebbab_cdWTVQaf^^]ojjkZ^^i_`_e\``]__gadcr{wnWan_amldW[nnvTTWXX_^bbaacdSUq\Vih]^nll`vfasj_YYUcXXWX\_bbeikkWXblokbfWW[XUTTXWYaci[seeUQOSdg^]mje`tj_dsu`XZZl[VWYWSLJKLUhk[Zcvlym[WXWWVUTWW]_asrRSoni\js|a[\h_bc_``[[\]YWXZYRLNHJSSbr\dgfkWWVXY[WWVUWXX^{btsRRptheivv\\[^rfg]\]ZY\]^ZWYZZkOMMLlYqdiidXVWW[WWVWVY\]tszzxvqsqtY\hn{~jdm`\\]][[Z\`_^YQOsylaWXVVWVVWXVWXuz||sqqprffdzwb`]]^baaj^[Ydoyxk\_gWVVZVUUWYYXZzo|prpp]fgt~{u|o^^bcbaaec]\XWYytYtlhhYVVWUUT\WVo{n\rgj|snbqpoposn^b`dewffosufbbcefjpc\WX|~ovgrXahbYVVUXZVXoRZ^`bdck[_mmrorf_`ba`sSPQfccbbfblccX\w}poYwQQYaaZa`VUUhWXipg^ddedg]ersprhZbdbbSQRM~gcce`[`fdTWtfYX_t^]^c]baXUUVXVUWj^__gfig^`ttraRSTuxswsop}gakfmil^VUXTXY^Z[[Vj^kkrnllXUUVU_b[Wb^]`aeufbkrx{bQOPNjininux{dtq_YUVXUY]V[[Y\mhvp~ovlXVUUW]da[ba]`bey}cr{vu``QZZd[_[k|xxwdl\Y\XY_UW[[UYaacqklmcZZQU]de`db`vvdlvvb`ur_NYZ]YYZ\]_dvoqqac\^h^cZ]ORVZYcZmh~pY_k`ZP]bcdzysmyxy{tseMh[YY[]pthpp`a]YWYTWNUQQOdb}nu}`iibZRU_cc[glwzs{}sr^e\YYZ\``sriiqak\VeWVULoPPXj{X^cY`QU`PgYZ`[cefjjYRXYrvpyws\YY\`lorieb`Z[Ye\VpSopPUg^^]q{wYVlduhJwsabafqWVRRWVafhivtq]ZZY[]WQmpUSXSSULnqqRRUUZb^^]lvfV[^\]LJLT^_rgxohVRWWTUmgffvpZZYX_tvWVSLRSSOMRPeQstdc[Z|l`a\]\QMOQXXf^roYTiRWWmWW]^X`adXXStqqiLOSSQKKQSSTbrb}sm`]\WTTVVZ\^dgu^[[XWmn`_^^nciiaedgswy}mmoon|ceddaacrhngkfmkjintngdxgcfgidfehcegiinttqnz~mddedgg{ljgfdcbhmjnklrrqonwoppfnmjiibfgpjkklqnnkrsfwppophkdrghfjmkllp||xzxiipkvkcchhkomot|yjh|ffqmoomnp}zunonninypoq|xz{uqqniijrmy~nu{rorrnwziikhnmn|sunvvuq{|wtonim~vsrjutpz|}ommighixx}|}ysy{svxxrmmhh{|xyyz|}{x|}xy{|x}ofyyz|zy||x{}xv~~juq|{{z||}~}x{}|}}|jj}}}||{{}䊆pk~|}~}}w~}zz{|vtphfvzmu{~{z{zw~{}zuww|iqmh|~uy~z}}qsuzztz|vgqfpz}}szurtrqnb}рxt|rrsrvnt||~msmpsoopzzr|~||~tslkktkoqywyz~xtzsuslubijpx{{z|{j|vvxwv}iruutmufjijumgihrlmuzn~~lnuuysmk`fxlgghnhm|vknfpkjzyuxrb_``egghgghlysedmdflxu|{o__`cggfghm|fabmfhyrpo__chhlgigo~eaabeghz{bcaaomlggfhiefdbbjiul|{qzwwlhoinutugjll}~z~{xx{xyzqlqzwtujtmm~}}~wwxx{xyummovwtrw}rv~}}~~{{xxyqoqpxzwrrz|~}}xx}w|topuuutsz{yyxw~ysvoyvuvusstxs{zz~}swstussmow}y}usstn}}ss􃁁{xwq~ssxˆtpmhotsuzow}rppztqކtsx󤎣ttpo|sooxs|qopoutsqooۑ~viijjɢnfhij쑒nmfflnmffmyȰifȯ}|~nolmmȀ}qoqpʣ~yxx|z}{~qssv񅄅qqonusz{}vuqklopkuyy|rpnqookuuxxsslnnkktbW]\SVUXdpqhjo``bbayqmzWYXWSRTcY_X]X`]]agw}`t[XlZUXXZUVVZUXY]]afgyrd`lp_XX[Zm][YXVVU[`]a^`eedb`iaxeecZywv^^[Y\UYZd^^`d`a]eeXiedbcr~}Y[Ue[\Z^a^_`c}onjmjru]]u`[h_VV\\_b_afsvwwnkuq][oZZd`aa__r`oqk|wvwq|}hy}cbra``Z_iq`_z~xdoivk~oicc`ZY[bqq^zrutlupr|{aioeade`gjYY[X_]_vvxlqr{tfhaihfbkm}{ge_^Z^vvpooshee]gdaikl_]]ZYYZuvvzhhmlmykekmfghhb]q]YYuptohiiklm}mjoohilmhl|aXuvuvijjmvulkoohloif|{qq\hdvwpqmmlpprppojnonoon|ww|\\yqsppsqpusrnnmmo{wx~b]~{qopyrqwplppllmnrrqgfaZXvyzhmahouspoqolrnplrfggmx\cwsa\qxtkv{ouswrstkumncehvmojqsm^g\enqrrssrqqtlckhegff{ydXrurwttpgemdeffk{z{zuydipwmorrv_d`bgdefpqiuzqty{nmoz|fe_^^iaehwpnv|lmrkrfkvvfge_gX_`goxqqsp`spiikjjp[duhgg_h\__`kc]_^hbcitnaquq_au|gglfbaV\unb]]^c]bpj^aYwwc^]xlkgkgXUVV[]]^]]atmfXW`WY_khypodUUVY]]\]bvoYTU`Y[levedUUY^^b]^\dyxqXTTUXZZmttstoXYWWecb]]\]^wuYYWUU][h^sstwppgpmmtb]d^cwjhivZ]^vzt_sqprnrommpmnofafmkhvh]gs__rpqqrkkmmpmnibacjkigjpwwbgqpprroolmmfdfdlnk|{qubbmwoqpqllmqkqhceii{zvvdgfmnrllkrmgjdnk~qydedffgkfonnr}z}r{qbfbghff`bkqmqt~~{~|}ebbfgbtws~||llvffvttn}}z}{zz|~|hg`mffkwxu|z}}|}zyyz{|c_]X^cfgm_|h{z|||}{{yyz{ymat__icy~az|{~||zxyzwwczz~||}xxwbwg{{}cc~_^}{||{|xwxvkb^^g{bv{w|{~z|{xxvtk`^_^dtcbxtv~nvv}rossta^^xvwzyxwyۀmeXXYYq}|ux]UWXYt쀁yuq]\UU[u~~xut]\|UU\{zhzwXUzqlkmn]^[\\~olppnnz`^`_{~~nnpmzpvo|~v~}|ihgkjsmuttunvwvvswkvo|}|ctecfrsttutvtvw{yu|yzwvdcdaafelpsstrswptuvu{xxmohgd^_ac{^grqststtvuwuuxx~llknebadbb^ttvxxwxvx~ihjkff_ab^^httuyxxy|}WLRRJNMP]jjbeiZZ\\[pgdqKMMLJJLZQWNUMZXWV[_mtXl{OL`OKOPRKMKOJNRVV[_^xpi[XcgWLMMObTPMMKKJRYWYVX][[ZXaYoYZYNnllSSPNNJLP[UVVXZXYV]^QbZYWYhsuqMPJULMKRVVWW\vhgcecjjRRkzywUPYNGGNPTYWY^jnoofduy|yz|gaMK_KLYVWWizWgjdvsynmnhvonWwimTTeTUWQVahWVqvp]gamcxwvwno_Z|WWUPQSYghUqimleniisx{slRY_VVXXT^`QPROVTUnnpejiyofWYT\\ZW`csq^\VURUnnihvzyhZYXPZYU^`aUSTRPPRmmnraaeddn`Z`bZ\]\]]XSgTQQPlglgaabdeqb`cd]^ab]b}sYQlmmlaabdkja`dc]ae^[zssihTa\mnghdcbeegeed`cdcddcsnotxTUzxohiffwheejhgccbbceeroovZyVw|pvfefntgeke`eeaacdiih_]YRPnn]bU\cigdcec`fcebi]__dlOWjfTOelg_jncihlik~}~{kbldbVY[iab_}dfaS[QZeijjxkihgjbX_[X[YYoxvtnYNjmjp|kke]ZaXXYZ_onooujnZ`hoxdehhlTYTV[XYZef]zwjohjpw{rdcepr[ZSSQ]UZ]leclusdeici\all[\ZT\LTU\dmgffhfVkg``caafQZk]\\T]QTUUaYSUT^XY`keXhlhVXlr\\a[WVKRjdXSSTYSYg`UXPnnZUToa`\`\MKKPSSTSSXjd]ONWNPVb_n|dcXJJLOSSRSXlfPKLWPRc\zjZYJJOTTXSTSZoohOKKLOQQdjjgidMNLM[YXSRRSTmlPPMLLTR_Uhhikff\ebcjWSYTXl^]^lQTUmqkVigfgcgdcbevccdZVZb`]l^S]j}VVigffgaababebc^WVW^`][`fnm|X^hgghddbaabaZXZX`b_puvqgkXXdnfhfgaaes_e\WY]]uuplZ^]cehbbaa_wfsa[^Xb_rvwwgoZ[Z]]^a\dbbgwuqnqfow{xwtgX\X^_]]VX`ebehrroryptywsZXX]Wilgy{syrpxtt~|utrbbl]]ljjcz~yqqnqonnpxvsq^]Vc]]bnnjqoqqnmmnopsYUSNTY\^dUr^ppquqpqoommnoncWiUU_YpztuWoqpsqqnlnomlYpptvuqqrlmmlXm]qqsYYtUT{xrqqpqllmlaXTT]qXlqumwrpsoqqnmljaVTUTZjYXnjltdllusheiijWTTnlvuumponmouuvc[NNOOgsrknvSKMNOjvwo~kgSRKKQk~ttv{nzkjzSRrKKRqp^w~pmuuNKvpgbacuduuSTQRRrvsebffdvdpw{VTVUqrtddfcpflxeq{vyytjqpow~wv_]]a_hcjiijdkmklixl`icort|qXiZY\ghiijkjkmqojpmmljYXXVV\Zaeihigileijkjpmmad]\YSTVWoR\gfhihiikikjjllmsaa`cZXVYWVRiihhiikllkls_^``\[TVVRR\iijmllmqqt~|{xw}m_^uw~}}oloqnor|slikxtoo{zx{}xwyxxwwgfgfhiqpu~|w~~jaa__i~}tnmmssvoipxu}s~hz{yvzzxxyssgrtnrt|e__bac~ut~zcdrw}vyqpkxvwywxxwyrsqopmrhfc_^ddcgyz~}|ibcsi}{hgmprtxzwwxx~tssyrsmmz{wyv_ccadcy}~}tbnabdvqkj}vvvrwzzxwyqgvtuunom{~twpqrxqpkkul}{~|}}}ccs{wyvshgvvwprwz|zz{rdegyutsmlnyyfnnmorbhjhiwywv}~}o|pfcozxxtvkiisslqoqxy|{{~umjrt{ufjhpu|{zfsnmmcdkbnn{r}|{wy|~}olfnuxzzllytzonrsls|{{okgi}~mhkkim`troonjcclwbwy{y|tqvqwytwvuxxryx{z{xwrlnnxy}qnpkhss|eimmgwlxqqphnfavnmntnqsuwwwwzxuwwtssxx{~{{zsnnmnz~wnikyh~wiom~lilylo}hf{~opp|slpwy{wwxlnyy}~{|{{yyznx~~vntls~woxfliipnzwt{qxxsyttmzwwxwxzn{ymwyzzrptw~vxunmqox~myyriikiijspnrrutxt|unnwwvwwzx}ytruoomrkkwyyj}{tz~xzxwikijkriqwhkhglw|vpxtux|z||{{rstrpoonjiijimy}}ip{{zwxxmwpkiikkwgrkedhy{{rqw|tywsp{{oinsooliijiiwywwhvsonynom[giijkwpokeefc}ztrrv}}~zpu{nnrqonooljiilwwtnkr^ta^imYY[qtmqnxxutqih{{|{qqwtyy}}|npgoonmjikikkh{db`c`a\j]\YYkopuxytwsmiisp|ttputswz~||zd~yoaagffnnooljjnukp{cb[[`w`lV]ijjpjplhgqqlkinnppuutrsvu}zpxfooa_ahkoomnnllvnhem[\cn~jYVjYtgjiiqjijqssvxpurryxps|nrm_giqem`ojjlmlmkoomol\\[hon\]YYpcqiesntrsirqwtrrwo|wxknghZ_ljehggrllmmnnmoole[eqpoo`Ychbbdeotv|~wqpqrurrwym~}ynj[[rqkahjhlkokmmlmmlfi\]nv`YYaeea`orr~z{|rvqqrroioz~|us|rzqa\`Zgetaqfgloinkkmmlmblnpsriblae``nnukpkmrmomuuomlvqy|rknhrpehg\^]qmveoiilojzvsvsokjmmn{prpnkolkbjotsqprmqkgoqyiinpywnjnqvhfdld\w|kijlilhofrlkndikletmujjsmlsxrqqliffmwrqzumsfdjfcf``bejimzvyl{lktotvhehnfhlnmwwz{}enkovrqinhdoy|qswwodcls`_`gadihww{|ukttzrggjnvovxdfcgnvyrsisdl{~wx{wuluvutgahghirxjvhtggi}~x^_hkcfkjrkrjrqzseofaltyimmiduv}{|wxywwvggfjihghjoqlddloqpx]^^quljxzzu_dssguqkqmsro`bxqv}{{xxwwvlgldjfqepiqzdd_fe_Z[fu[Xhforxd]Z_jprqmnnmhpt{}{xwvvtgjkddkecdgsfqqup_``fi]hf`Z[gijjkl_k]ijjirmnpnmqq~}~~}vwxzuxxcfbmgib`ab`brbzetct~vujkjljjhjtvro[jwmiomoipspoz|z~zzv}}zgllh]_YY`a\dedfpxwgikkomllxvrtgqppopoojmjqs~|{~zt|~|}u{tphffdmn`a\^^picewp|~tpmsolnovtthnpssztynmfcn||}|vtzwyeu}vt}ziwvsmszY_q]^b_gxxy{rotsnplu~ssywrnskehyytuzzsvyxiemur{on}goilmgkkit]^un^qx|}ynqpsopqutuqyvomovott|}umroylkffiw|}m{pmefflsglkb]tvdw~vyqnqnnpu}|yrrws~ywpoyx{{zocgm{u}qifwwzo}}rttfrysjhia_v~wow{zvwpp~{{prltm}n~{|eccdqxuzwrxzu~}lrwpqkfqx~lkkikc`uaf|qvu}xvgqrpszjlnfmd|{tyy}nx\_mfgqqrjx~kmtkcacuy}ruwz~vddnqvzjln{t}mnmz|ys||u{a\\__gopqqwrxpjnuooqxzq{yt|gixjmpxyyxs{tss{tse`\`bopqqljxkqjjw|xuz{{pawr|y‹nrrwwqmslrre__abbsqqrrslljllmm{mio{v{}`]]mtstq{vkkssrk\hcpgrstroillpllmlrt~ti^g]t|s|poolkidrsoec]bpikouu}kuqmnonomrrhg\vqnrot{}xcdelojqwxemottvvvslmnlp|zx||h^_uuv}zqmoowkwfgmontgf|yvxwr|usxnnlv|~xwyi{vrv]v}gsjimghjlzegflokggm|zvwss|xyn{{v|{vmmxwk]vsugfrkcaaikmzl~hwsuxyi|ywuxuuyqry~{~~~}goxnonixyjd}moiffcg_aafkigldhoiljhunpfyusxzux{zy~slhlmk|hx|w{npsqgfiaa_dahhqdjhyhmkzz{}vqstsx~zl|rmlrehfhjzorvz|vx}qttnfhgcecchpddyywnx|}{qyzz|{ittxpemkojehhdips}ww|y{tooup|`cpeedjywusxvrtu~{{{pjykuwjefjyeehhilidywixxwxytqqlclsidhj~sr}}xe|}}w}yymkrmloiddjdeehhixnsatsojohpr|}{}|rixppvdk}otv{p~fdgp{vuv{pmlklsmnkoiiehhios}tfnu|ssriyot}pghlomcttzqqrxx}q~~o{zfxzuzzzonqmzxmeqfeghhloqefdltk{rtrzt|zzihgfmknqrtrstxxzq~}~{tozpszyyyoqppzvqgquiironphlurm{|{|zz{dieenvuxqwsvx}zw}}{{to|{zyyppu{yrsnq|zonxupu|gzw~~|esjffkw}yowvuude~{{su{~wvmsllkjvozw~}wussww}|{eciifkjv|}vwud}|~~{gghlwxwx}ymlkiyjjkgkltx}uxwwx|{rcddhijxkx}|x~y}}||pdfjpxx|uppoiikeclowxtxoenxxwxuw}cddghhg~|}}zvdfqqxvtsppoqkwkkceeuvvurs{{sswr~lgdedgfhi~~v|{wxt||xzmmqqpqqnmxhsntvvt~{pr|{~trkvgoohehipmhj~}}|wvutvtvuqpqspuppogluttvtsvpr{s}}usurwnn}sv|cVUkmutuutfcfhefitkd`bolffrqpsupoqonnmm\[][^_hfksu}wruzzmwuu`WWUU_uuvutukdcdjkng`gp|{l}siu_rrqmppnni]ijdhj}~zzy~r\VUXWYvuvvulkur[]jyou}}|vmphgbonnpnnmwpijhfgchy{~}}wv_\ZUUZZY]pputuvvsaZ[kxz`{ws{{q^]dgikoqvnnujjqijdc{yy}wxpqmoylUYYWZYosvtvuvtlZfZZ\nxha`sulllimz{ppnmog^wmklmefdyvqtjmfghngfaakbsqtrutvtt[[\kksmpmi^]llmfinprppqh[[]pmljdcepuo\ddcehwX^`^_momlstvtfsg][f|}rnokla__iibgegnorvqqtkc`ikrm^b`hmtqp\idccYZaXddqhsrqnosttec]eknppywbbojpedhibirqquea^`uve`ccadWzzjheed`YYbmXmoqorjgxlhlmjmllnnhonuqypqnmhbddnosgefa^jkwt]aee_mbnggf^d\Wldcdjdgikmmxmlomjmmjihnn~psxuqqpiddcdptmd_bp`zzvoagetb_bobes^\qteffriaemyynokkmnbdon~sysprqqoopdnxttkdjcykwvzyogq^b__fdpmjqgnniojjco{kkmodtpncloppguejmtlnkecgfwpwveprjb__a__`ifdhhkjnjrkddmxxykjklloollurnjhkeeaf`__loo`srjwwqvvprppaa_`ah_gm_a^]bmrlfunz{yyhilqoqqhihfeedd^]]bosts`grropoepia__aam^ha\[^oqqhgmz||y{wqimkheqqd_cieeda]]mpnn_mkgfpegeR__`amgea\\Yspjhhlsstz}yoe}jqydcggedeeda]]amnkfciVkXUadPPShjdgeonljg`^qqrqggmjoo{syusyrde]eedca]]^^``_r\ZXZWXSaTSPPbfglopkmjc__jgrjjfkjimpvtruxrpZtoeWW]\\dd`]]^cjbhr[ZSSXnWcMT`abgbhd_^ihba`ddffkkjhilk|~uspfn\eeWUW^addccbaablle_]dSTZeuaPMaPm_baaib``ijjmofkhho||nfirdhcU]_g[cVd__`b`c`ffdfcTTS`fveSTPPh\ia^lgmkky`hhmjhhmzz~wermnad]^PUb`[]]\ga`bbddcffd]T\hgyxffWP\`[[]^hnozsvmhfghkhhmz|{o}c~tsod`QQigaX^`]`_d_ccd^aSTewvmWPPZ^_ZYhlkvqrshlgghhe_ept}rkirhpgXRVP]\jWh\\`d^c`bcdeddYdegvji`YeZ_YYggnchbdhdeckkecblgoshad_if[^]RTSgcm\e^^ac^pljmjfbaedergigebhdd[chmlihjdia]ego__efomd`egl_\ZcZRxxnra_`b^`]{e]idbe[`cd\kdlaaw|lgdlpjiic`\\cmhgpkcj]Za]Z]WWX\``cqwmpcqbajdimw}`\_e]`dednnqyrzt\fcfoji_e^ZeorugimneZZcjWVW^XZ`_nnyxr{rkakkwqwxzi^^aemfxxzmwnZ\Z^floji_iZbqvtmnqnkblmlk^X_^_`io`m_k{|^]`tuuoUV_b[]baibiai{hpi[e\Wbjo_cc_Zklsqrnnonmnnm^^]a`_^_afgc|[[cfhgoTUUhlcaoqqxl{V[ii]kgagciheVXnglsqqnnmnmmc^c[a]h\g`hq{yx[[V]\VQR]lRO_]fio[TQVzy`fhgcddc^fujuvuuqsqnnmmk^ab[[b\Z[^j]hhlgVWW]`T_]WQR^`aabcVbT_``_hcdfdcggtxxvxsttslmoqlooZ]Yd^`YWXYWYiYq\kZkumlabacaa_akmifR`mc_ece_fifepxxurqtpyq{zmttq^cc_TVPPWXS[\[]gon^`bbfdccomik_gffefee`c`gitrqvxwtpjsusvtvlrkg_]][deWXSUUg`Z^ohzsukgdjecefmllaffiipyjodc\Ydrrswrljpmouy\ltmktq`nmjdjqPVhWXZX`popriekjefcywmuljovwxmhdia[^oojkppilonuw_[dlirfet^f`cd^bb`kWXngWiostqehgjfghzyvmlkgzyolecelejjrskcheuobb\\_nstdrgd\]]cj^cb[Xmo_qvnqzzgdgeefmutqkkmiwtomfeonqqpeY]cqksgw_]nnqfttikk]ipja``[Zowqhnsqmngfuqqwilflgysdt~xqr[YYZgnkpmioqkutcinghb]houcbb`b\Zn\`~zsglks}ppckkfip`b|{zd\cZvsqjootdnSVd]^hhiaouv|zbelc\\^orthkmpwu{n^^iklp`bdqjzscdcpxroisrkrXSSVV^fghhnioxgaengikrt}gqouks`breh}fno~~vzyxoniqkiiqjj\WSWYfghhcaobhaaoz|vwnkqqi[qlu}}o{}}|wxdhhmmgcibih\VVXYYjhhiijccaccddt{wc`eqlqxvZWWgxi|}{}}ËijgrlabijjiaS_Zg^ijkie`ccgccddjly|tjvw|wbXbVyiz}{}}zsisgffcb`\ijf\ZSXf`bflltblhdefefvxx||~chvzlabWiytz}zzwieifkrvp[\]dfbhmo\dfkjmxlmjbddcgxxyx{|rwuonrs~cYYhhisyrifgiodoy^_fgfl^\vrpmnmiskjnddclsvzzwsu~{mlns^qmmoXitvblc`hbacd{r}]_^dga]^dspmnjjirnoeqquluxttoou|kbcym~|xpfXkij``lf][[bcetzfxa|ojlop`rpnkollwoghotqtuvsrq[dmcdd_o~x}{r{d^rcfa``^bY[[^dbaf^ahada`meg\okinpknvqpotuuvhb]ab`pu^|{o{vqtbdjia`e[[Y]Zaaj^caraecyqqslgijinxtpburhcbg[^]_`pehm|rup}qpflli`ec^^\\bi^\rrofp~{{rusqgoppzrq}_jjmf[bae_[^__[`gkvqq~~potnkklqjuY[iw^]\crolvzinlwuhjktqwqqxf`oakma[\ao\\^_^`b_\q|~~q^non{ttnkid[cka]`bvjis|z}s{vn[rssmsoocahccf`[Za[\\_^^_oekZmmidd^gkwxwxwjaoggm]cytfklqfv~vtu\Z]fqlklqfcbbjdecf``\__gjtl^fnslhi`sizmvi^_cedZjjphhmnsgtteqp\npkppzxpedhcqpd]i]\^__cfh]]\emdrhkismussb`^]cadghihhjnnpgtstqjepfipoozzoegfgqmi^|ima`i{feg_dokfrsrz{vtst\`\[\dlkmgmhkmspmssqqjerqpoy{{zpggflr~pikeisqfeomint_qnyywwv]ka\\]azltoemkjjkZ[utqqikqtzm{z{|lcibccbbcb}mgqoyvutoymkknnuvts]Z`_]a`lxxzsslmkZ{srttq]]^bmnmnysocbb`paab^bck{otynpnnotrjZ[[__`oapz{tzsn}tossrrfZ\`fnnyrkff`b\Zcfnvoxxko}f\eoonolntZ[[^_^_wy|{{zxy|trwssplZ\ggnzljjffegbnbbZ\\lmmvlijvrrjjnizuc^[\[^_abvw|{{zumrrmnjrr~nvpcc}ggfggdco_jekmmkyurgiysrvukibm^ff_\_aieacz~}utssmlkjlj{v|lkgfgjgkfgf^clkkmkjmgirjttljlineetkms[MLbdlkllk]Z]_\]`jaZVXe`[[fedfhdbebaaQPQQSU]\aknvnilqqdnllWNNLLVllmlkkb[Z[abe]V]eqo`qttg]iSeedaddbb]R]_\_btvuqqpu~iSMLONPmlmmllcalhRS`oejvsqqupjac[ZVcaadabaa`kc]^]\\Z_qrxutvtnmVSQLLQQPTgglkllmjXQRanpVvplgooeRQX[\^cdiaabh^_^e]_ZZrpqtnoghdfpcLPPNQPfjmkllmjbQ]PQ{Rdym]UUgi`s``\amuodcbac\Rkb_ab[\[pmhkad]^_e^]XXbYjhkilklkkRQRbaj|ceb]RQ``aZ]begeddf]OPRdba_ZZ[flfS[[Z\_nOUWUVdfdcjkmk]j^TQ]stheeaaUSS]]V\Z\cdgkffh`XV^`gbSWU]cihgS`[ZZPQXO[[h_jihefjkj\ZT\begfpwylWWe_g[Z^_X_hffj[WTVjkZUXXVZMqqa_\\[WPPYdOdfhfia^oyc_ceadcbee`ffwlgoghdc_YZZdej^[\WT_`liRVZZTdYe^^]U[SNc[Z[a[^`bddpdcfdadda``efvhkokhgg_ZZYZgkdZUXfUookdV\ZkYVYfY\jUSh~k\]]i`Y]dppegccdeY[ffukqlijhgffgZeokkc[`Yp`lkond\fSYVV][gdahv^ee`faaZgsz{ccbeddf\vxljg\eghg_m\adkdfc\Z^]mflk[fg_WVVXVVW`][__baeaib[[dopwqcbccgezlkgb`c\]Z^WVVdffWlibllglkfgeeWXVWX_V^dVXUTYdic]leqrwxqp``chghihhaab`]\\VUUYgklkW^hhgdeeZe^XVVXXdU_XSRUfhh_^dqsspsnhaec`]hi\W\a\\YUUeheeVea][f[][HUVVWXd^\XSSPjga__cjjkquqf\tbip\[_^\[\\YUUYeeb]Z`LbNLW[GGI_a[^\feca^WUhhih^^daffrjp{ljqi\]T\\[YUUVUWWUiSQNQNNIXKJGGY]^cegad`ZVVa^iaa]ba`dgmkimoigQkg\NNTSS[[XUUVZaY^iRPIINeNZDKWXX^Y^ZVU__YXW[[]]bba_`cbsul|jg]eS\\NLNUX[[ZZXYYcc\VT[IJQ\lXGDXGcUYXX_YWW`aade]b__fsvse]`i[_ZLTV^RZM[WWXYWZW]][]ZKKJW]m\JKGG^R_XTb]caboW__da__dqqun\ideX[TUGLYWRTT_XXYY[[]ZSJS_^po]]NGRWQQST^depjld_]^_b__dqsrftZukjf[WHH`^XNUWUXW[WZZ[UXJK\nmdNGGPTUPO^aawlhii_c^^__\V\gktib`i_g^OIMGTSaN_SSX[UZWYZ[[Z[PZ\^ma`WP[PTOO]]dY^YZ_Z\Zbb\ZYc^fj_X[V`]RUTIKJ^ZdR\VUX[Ugcada]YX[[\i^`^\Y^[ZQY^cb_^`Z_XT\^fVV\]fd[W\^cVSQZQIooeiXVWYVXUr\S`[Y\RWZZSb[cXX|mrb]Zbg`__ZVSSZd_^gbZaTQXTQTNNOSWWZhndgZhYXa[adntWSV\TWZ\[eehpiq{jS\Y]e`_V\UQ\fil^`de\QQZaNMNUOQWVeepoiribXbbnhnoq`UUX\d]ooqdneQSQU]cf``V`QYhmkdehebYcdcbUOVUVW`fWdVbrsUTWkllfLMVYQTYX`Y`X`r_g`R\SNYafVZZVQbcjhieefedeedUUTXWVUVX]^ZsvvRRZ]_^fKLL_cZXfhhocrMRx``Tb^X^Z`_\MOe^cjhheededdZUZRXT_S^W_hrvpoRRMTSMHITcIFVT]`fRKHMqpW]_^Z[[ZU]lalmllhjheeddbUXYRRYSQRUaT__c^MNNTWKVTNHIUWXXYZMYK}VWWV_Z[][Z^^koomojkkjcdfhcffQTP[UWPNOPNP`PhSbQbldcXYXZXXVXbd`]IWdZV\Z\V]`]\goolihkgphrqvdkkhUZZVKMGGNOJRSRT^fyeUWYY][ZZfd`bV^]]\]\\WZW^`kihmonkgajljmkmcib^VTTR[\NOJLL^WQTf^qjlb^[a\Z\]dccW]]``gpaf[ZSP[iijnicagdflpSckdbkhWeda[ahGM_MNQNVgfgi`\ba\]Zpnclbafmnod_[`XRUffabgg`cfelnVR[c`i]\kU]WZ[UYYWbMNd]M`fjkh\_^a]^_pomcbb^qpfc\Z\c\aaijbZ_\lfYYSSVejk[i^[STTZaUZYQMceTgmegpp^[^\\]cljgaad`nkfd]\fehhg\PTZhbj^nVTeeh]kk`bbT`gaXVWQOeng^ejhde^]lhhn_b\c\pj[kuyohiRPPQ^ebgd`fhblkZ`e^_YT_flZYYWYRPdQVt{yqj^cbjtgfXaa]`gWYsrw~q[SZQmjhaffk[eJM[TU__`XflmsqY[cYRQSeh~k_bdgnlrdTT_acgWY[hvaqjZ[Zgoif`jibiOJJMMU]^__e`fo^X\d^^`hjsvyz^hflbjVXgZ]tzz]efuu~mqpof~e`hb``haaSNJNP]^__ZXfY_XXfprl|vnebxhh_Qgbktvtfrttxsno[__dd^Z`Y`_SMMOPPa__``aZZXZZ[[jqvnZW\hcholPLM]o`strtt`a^hcXX``XJVQ^U`ab`\WZZ^ZZ[[`cp|~ska{mnrnXNXLq`qtrttvqi`j]\]YXWR``]SQJO]WY]cckYc_[\]\]monrs|zuyvZ_mupbWXLaplqtqqn_\`]bhlfQRSZ]X_dfSv[]badocdaY[[Z^oopnrxsinlfeijvtuYNO`abjph`[]^eYez{nTU\]\bUSmigded`jbae[[ZcjmqqnklvsedekUhdxvubeNakmXbYW]WWXZpgrSUTZ]XTU[jgdeaa`ief\hhlclokkgfmsbZZpdus}nf[Nb`bVUa[SPPWY[in[lUqe`cfgWigebfccnf^_fkhklmjjhS[dZ[[VvfuntqhqZTjZ]WVVTWNPPTYWUZRU]VYWVc[]Sfb`egbem|hgfkllm_YTXZXhlUsrfvrvlgjZ\a_WVZQPNROVV_RXUgV[Xogghjc^`a`eyvzyxvokgYli_ZY^RUTVWh\_drhkesgh^bb^VYXSSQQRV^RQggd[etqqiljh|^fggyqihwtVaae]RYX\WRUVVRW^alffttgfjd``af_kNQ^lRRQWgvdblp`ecnl_abkhnhhow]WfXbdXRSXgSSUVUWYVSgrttgUefeqiid`_ZQY`VRUWvk`_jsqtjvrmeRijjdjffZX_ZZ]WRQXRSSVUUVf\aPcc_Z[U^ammlmm`We]^dRYpk]beh^mumklSQT]hcbch]ZYYa[\Z]WWSVV]akbT\djb``Wi_pcl_UWZ^[Pcdia`agfj_kk\hgSegbggqog\[^Zhg[T_TSUVVZ]_TTS[cZi`a`ickiiYWVU\Z]bbcbbchhg_kjkha\g]`gffqqf\^]^hd`Us`dWW`r]\^VZda\ijipqljijSXTST^gdgafbfhkhejjhha\ihgfprrqg^^]ciug`vvb\`jh]\fd_dkVhepommlTbYUU[qhkh]fedccQRlkhh`bhkqdrqrscZ`YYZYYXtd^hepmlkfpcbbeeklkjTRXXTZZdqopklfedRrjikkhTTUYdedepjfZYYWgXXYUYZbrfkp~u}dfeefki`RRSWXZgZgqqlpkfwlfjjii]QSW]eepib]]WYSQZ]emfoobft]S\ffefcekRRSWXWWmnrqrpopskinjjgcQS^^eqcaa]]\^YeYYQSScddmc`a~wmiiaae`qlZUSSRVUWXlmrqqolcihdeaiiuemgZZt^^]^^[ZfVa\bddbplvi^`pjimlb`YdU]]VSVX_\WYpx|trlkjidcbacar|mxscb^]^a^b]^]UZcbbdbad^`iakkrqzzuu|zxjsus|oz~}su~zxx~~|}mmhijssjjuin|ilxyoztu|kysruyotknx~y|yzx~v}xxwwz{pnwipi~kkvn}zzxtronpooturqsxzyz|{{tt}~|~xrwzso|pkuzpxpz}vz{tnmpnsttrstrzz{{z{y}{ystqzy~zpzxytxrvqwvvxwspmklsrrssu~y{{z{zx|}|rr}ywtrxnnvyw|w{vqruy|yxromkkhsorxsv~}y{{|{}~}om}rruw}yv~xqqxyy{~mmikolxu{|}|{}zzvszxrrwvvux~rxwru}}rnmjjlnmxzz|zzkv|~~xqupqqt{{vv~mprtenhiigo{xxzzsy{uqkdev~|trpu~~tzuv}}z|{~}ilceoifgdgy{{yys}steedcs}~||rzyy{zz{vv{vv~rbjkcffcddfhplnsxvxccedeck~zqwrryyzy|vwzvxsmlpsghfddmphlofonouwde_bchiy~zjhgqnv~~uttutuv}l{qputplmpxvqylccejimfhabbidcdc{{xiios{{|}}rsuquk|u{zhuutloltu~}{tlhlqllhefvcdgfdd}wvqhnvy{zownry{ov}|`uyrmlqoy}t|utppuxpn}w|ssodioscnxxuqyyxl{lpjfpikvlwyog`\wmtrsuvvy{tuvxsvr~z{~}{ffumlsghrwxwuyqqrjilmzsfgmwx~z`\]enuun||pwtx|}zgmsndlntkwinqmjoeipfeabi|njmmhkkrtd\Z`nxvuzuvvxxpcc_siqtrtuxmssvnjnrolnlhdjijlhffbaihojjolo|stonYYhuuvwwvr}dgcicoqqr{zttsznru|lxutheloljleggwjjknxy|ooY_ovuwvwvxzcrrprqxst|~hxrqq{un|jhgcdcf`effgiokjjm{rooYZbtvwuutryvtrrqrrsqpwrchvyrlkkpbbfgdafghppjjlpo{soppoZ_^]tvvtwurjoidqrrsv}ro^Vgxpippbagfbcafhhvlpkjjmw|rprovsjbq`dmvw|{oj_bacjqrrsvrrhVWW`Xngdcdgccefioqokosttv{}rsj]ellv|ncbbcbikprrs}yxmYUUXXZjkfcggyhjhgmllwjlyswyqz|~z`oo[cek_lwgmhfdotvpusutv|vtoh_UY\jhkdfhhfqggjkeclswttpv~~rudlk^]pcefdgjheglnltswswwvs}ruttqVVTa^kyzlmbfsgfdncgif`zstr||}|wfdjoilimc`]jjslhhquvtvwzwwvwzuuxfqT\ZY{||wwtfrrfpb]]acfyomqrx}{ddjrdq\\rihl^hghqxxwoywxwyut{ojmceZb||onhyxxwfcba_alnkmsmwu}zieeqpbeasqf^__`vyxtspkmuuwvwskkjfeqexww|{{zmtcudomrrnto~z~vedgkoqikg`jj]`flyzqyztvxu{mdjltsude}y|}vrgksjotzq|~w}|ztokelnqsv|ccbdwuyyxu|}}utqodjlutupebv|zzxlorr|}x}wtqjkvutvjhhegpmyuvnrpopx{tmenuutsojfkxtwvrjws|{z{wxx{}|w{}gjkp_|jjhcgentqtrlkq~{nxouursnjeeabry|wvs{qjevaqvvw{~~{ummprqg]ihgfhhpxqopqpq}}|{zoplqppngfd`aet}wxwqt^]^_hhr{wxtspuqh]fgghluxt}yoj}{tuw]uspjgoqnbbaimw{{zxxv_]]`hgps{vxxt~~wtmcagghgh}uynsq|zwwqorrlgjlcon_\`bhqi|}{{yxxuv__`ii_uusxmmwtt{ggho}rsdkjwszx{p]l^doffbaabl}}rxxvdYZb`_`ee`cm^qmlsyyfihhoqq~gkjjtz~|wptq]]bgcbaaba]dcdlmgxrreZ]`acdege`cciqqsxyllhfgldihhvjijmt|utpg\gb_eba]aa_^acckthmrZXe`lt{fekbbqmp|}kcddkjgcdmwijj{p|nrue]k`]^``]X`qecb]]tac[g`ehbb{d^`baaborglmdbenohxmjnjjluph``b__djqpdb]^`dbd]]\]]jjklffcbdch^abbs|bddf]fddljjqpii__g__`wtshbb]`bdb]]\]\jgn]jeaab``^aaba_xbgsvmnndv{dpupiklophk__`_`wwsricbbd][\\]\kj^h`faccg[_cac\_bitjkxjwwmkvpvhsjmoobh__vlswuuoiibhid_]\ZZ\[gmolc|kbaiggeild\\bthyflwtkiw{q{xvglmqoop_slkyyxx~rhbbgnu^YYZ[np}|{kjmg[]gid\\doe}wwlnz|}}shjffgh`dclvvyxwrrjbhekccm[YYZZ`njrsiurjsmp]]bqg}ma_ptyzqdgffdb_``cflalyuxtnjfkfm`kj[YYsjjtvuronnm]]hy}v{fkitypy{feefa_]bggcxssqrnllbca`i[Z\kw{kfmukkmmcjun{qqoy{yffefb^]^ttruuttskmrrllmbc`bhY[`_|{_~~tkkmhjwwxtovmopxqxgdffhjceceinqvuvj|~mntoc[[^[]kv|}x[WZ|iaekbbskgh~}znmmllvzglkoouiennrsmskvsoyomlkbkvf`[_mm~}}lvtk}qojgbbhtr}{|}qryyn|{zqppu{{p}plwsrqpZj[]`d]la_]sln|{}~}k[kko`hptw}}vjqpopoy}vyyvquvxutojsm[\X^gV^aoksaa]dlhik|q}{\]Z[_baaf|}|qsqumimomqvwyw{w}tnnjni`f^Z[[\`kk_la`akmlhmnonofbb`_`vkv{pvzoomllkihuuzzolhiljihcYdc`]`\jcji`ihklehe^__^c_`b^eeppuyfdmpmmlmlighkyw~dihklmnhhZddf`\]`gkhjgicd`d\\^\]__`e~lppomlmgigfwutm`f`kmknj`ZVec^^]aeljknmed^Y\]\\^]_ecgh~zmokjitwmmlkreegvbhmqesklnjh_WVVdepamnnkkliXZe^]\]\]]adee|kwpgpinuwpllqmjlqegnrr\dkjrkinhhbchdcefkkllkkajic^`]_\`b_efft{}npottzvpqmkjlqi^jbrb]\`jij`hhkllfrtgjdctusjikYZijgbcac^a_a`ch}}|vtnopqmvnhtrrlp[nceh`afdk`__kdpssioj`vr}jitixlkfgbbcddc^^jj}}q{snporouiirnlhoXZd``haahikb__biolm]jy{}|}xqozmfecchllga\kj}}quolnqpejmlkfpsX]`e_``fcgdlf]Zlolcfnmhj|}xqrpl{hgcc_dgfdaW`c}}ztmqnmjckknw_~ho`d`fuedda_c_^dgbbclkzquwnppeooahivjlfjmd``ggopkkron`ikhrx{dpvtsij{tomy{ntutqwysbc^^_ii~``k_cry_bumoepjkranhhkodi`cnsorny|omuskrmnllopf{u{dl^f^wtaakcroo~njgyeceddijhfhnoorppijrtq~smgloiduqy{eakzzqgmforjopu{iccechjjhijhooppnuzrpnhifo}nsoeomwwojvohmglkjlk~ifcbcihhiiktoppnwvrrqggurnljhmcckolvqmqlgik|nqumlx{i|edbb_iehojmttnppry}qy~rsrdcsvggkmrolvusu}nghzvlmnxou|}uddabfdolsstsqsxppyz~uylipmhhuwllkuuwnthtlkv|wjlutjddbbacfeprrtrrxalrzvw~ttngkegfjqqlluutxyuuwehjm_f`aa_gsoprrkqs~lha[[l~~vvtrjhfkttjpklssprqytttqa{d]_ga__\_rssqqkujk\[[Yi}vsutrrhpoowqppqllqlylv|rfZcf]``_\\_ajfhmppqZ[Y[[Yau}utpgmhhoopw|ourlmplnyxygeeikbca]^gjafh_hhop\]VXY__ouwtp`^]gdltzuzutkjjkjklrxboeimkiehjrpksf\[^dcg_aXZY`ZYZYqv{qn__eiqqrusshikhkarkpn]mmleifnowwuoeaflffb^`nZ[]\ZZswwmlg^dloqpeumdhozqelsrVmqjfejirvnvonkkorjgvptiieZ_eiYdnnkgoobrbf`]yf`amcnpyue\VSoeljlmoosumpqqmojwssvsq\\kcbi]^hmonlohiia`ccqi]]dnoytxpuVSU\fmmftsth}nlnrsp]cidZbdkbn`eheaf]`g]\YZasfbdd^aahjZSQWfommrmmogZZVj`hkikkunciild`dhfcec`\babc`]]ZYa_gbbaeberijedPP_llmnnmit[^Z`Zfhhiqpjjizyqehmscoml`]dfdbc]__obbaabeooreePV|fmlnmnmoqyZiigihnijxrt^ni|ggrmftc`_[]\_Z^^_bhcbaabdqheePQYk|vmnllkipmkiihihhiugflwhZ_mpjfeej[[_a]Z_abjibbacgeqieffeQVUTkmmknliaf`[hiihilr{heUM^picjj[[a`\\Z`bbpfidbbdnshfheliaYhW[dmnsrfaVYXYahiihhilzzgg^LNNWOgya^]^a\\]__cjkiehlmlnrsh}iaT}\ccmvseZYYX_afiihirvombPLLOOQbd`]`btadbagfeqdfrkoqhqstpx~xWffRZ\bVcn^d^\Zejmfkikjlrxkje]TLPTb`d]`bb`ka`aade_\ekollfmutil\dbUTgZ\][^a_\^bdckimimnlirgjiifLLJXUdqrde[_m``]h\_b_Xskljtsttn^\bf`c`dZWTaajb^^gkmkmmpmnklpjjm[fJRQPsttook_jl_iZUUZ[]rgdiipwtr\\ai[hSSi`_cU^]_gnnmeowmnmokjpe`bX[PYtsge_poon^[ZYWYcfbdkdnmuxqa]]hgY\Xjh\UUVVmonjifacwkkmklha``\[h[onnsrzrqdlZl[fdiiekfurvn]\^bfh`b^WaaTW\copgopjuy{wkmjpcY_bjjk[[tpzsztvvmi^bjafkqhsvoutrlgc]cehjymsZZY[mkpoonkrsu|sjifeY_bjjkf\Ymsqvqocfiisx}z{upuwwolhabmlkma__[^gcokldhfefnuvpicZcjjhfa]bok|v|nmianjsrrsoppsutosu^abgVsaa_Z^\dvjgjhbagtvvqcndjjhhda\\XYip|zvsnmjrha\mXhnnosvvsm~fdgih^T`_^]__gngefggstrqpdfbgefd^\[WX]kwwunonhkUTUV__iso~yxpkjhlh_T]^^_clnkspe`sqjlymSkie`]egeYYX`ensrqoomVTTW_^gkswnppmvunkdZX^^_^_skpejgsqnnhfhib^`bYeeVSWY`iasurrpoolmVVWa`Wmnkzp~ggnkkr^^_etij[banjqnqfSubT[f\]YXXYduujoom[PQYWVW]]X[dUkgejopw]`__fhhuw^baakpurngkhSTY^ZYXXYXU\\\dd^oii\QTXXZ\]_\XZ[`kkjopcc_]^c[`__ma`adkrlkf^S^YV\YXTXXWVZ[[ck_diQO\Wcks^\cYYkghstbZ[[ba^Z[dn`aarhreil\TbWUVWWUPXh]\[UUTkXZR^W\_ZZs\UXYYjkx^cd[Y\ef_odaeaaclg`WWYVV[ahg[ZUUX\Z]UUTUTaabc]]ZY\Z_UXYYmsY[[]T][[caahg``VV^VVWnlj`ZZUXZ\[UUTTSa^eTa\XXYYXWUYYXpZ^jmdee[mr[glg`bcfg_bVVWVWnnkia[ZZ]URTTSSTSbaU_W]X[Z_SWZXZVY\`kaboann}dbmgm_jadffY_VVkcjnmlfaa[`a\WUTQQSR^dfcZtbZXa__]ad[WV\l_p]cnkb`nrhrom^cdhffgVjb`nnoonuj`[[Z^flVQPQRegts~rbae_SU_a\WW^f\tnnceqsttj_a\\]^U[YbkknnihbZ`\bZZdRPPQQW}yf~ajkamjbkfiXX\z{h^tdXVgkpqh[^]\ZWTUUY\aV`nkokfa]a\bWaaRQPk|yz}}bblnmjgffXapumr]b`kpgpr]\\[]WSRV\[XlhhghdcbbXYWW_RQTcoy{wxwrc]embcee]dmxyerhhfprp]]\XSRShhfijiih`chhbabXYVY^PSXWtyyz{sWvvlbcceexbconzokfmdfgoho^[]]_`YZXY^be{kk_qt|bbidXSRVSUcntyupSOQt`X]bYYmeabvtvqeddccmwq^cbfgk_Zcegicjalhdnec`aYal\XSWeevuudnkcuhfa^YYbnltqstwhippesvrqhgglrrgtgbojigfQ`RTW[UbXWUkdftsuzxvtbRbbfW_jnpttmawhgfgfptmppmhmnpwvvmkfbkeRSOU_NVYhckYYT\d`actitrTTQRVYXX`xutshjhld`dfdhmnpnsowvulffbfbW^VSTSSXddeXeYY[eed`eeff]YYWVWmdzmrgmqffdccalmqryxgeaaebaa\R^\XUYUb\dcYcbef_`]WWVZVWYU\\ihmp][dgddb_acqqyww|\b`deeg`aS^^`YUVY`dadac^_[^TUTVTUVVW\udggfdf`b`_pmleX^XdecgcYSP_]WWV[_fcehg``ZSVVUTVUV\Z^_uqdfba`knddfddj__`p|zZ`ei\kcdgb`YQPP__k[hhefcTV`WVTVUUX[]\scog]g`elnhdeifcej_ahzkkU[cbicbgaa\]b_^aafeffeed\\fc\WYVWUXYV\]]lrtegfkkqmgjfdcejcXcZkZUTWaabW`aceeanpcf_^oomdbfVWcda\\Y\VXVXWZ`ttsmkefgienfamkkeiUg[^aWX]\bWWVd]jnnekf[qmvcbncrfe`a[[\][[ZUUaatthrjegfigmabkge`hQS]XX`XX_`bYVXY]dkhiYfuvvqihsf^^[\`cc^XSbbtthlfcehg\bddc_ikPUY]VWW]Z^[c]UTgkh_bjicdvvrjjheua`[\X[^][XNWZttqkdhecaZbbceoWt_fV[W]l\[[XWZXY_c^^_hgtlpphjh^gh[abnac]ad[WWЇa_ghcciffXacajpr\gnmkacslhfr|wsflmljxz~ppkZ[UUV__sTU_TWfmSVi`g]gbcjYf``cg\bX[flhjgruhfnldkfgeehi_}|{ztnt[dU\UlhUU^Webbr|ab`q][^]]\bb`_afgghjiibckljwmg`fhb]nzjrsw\X`oodZ`Ybe]bbhs}b\[^\`bb`ab`hhigoszljhbb_huflh^hfole_jc[_Z_]]_]pu}wa}}^[YZa``aackghihiigooj~{||ylkaanlgebaf\\dgemhce`Z\^nadg_^u~qir|`s][YYUa]`fadkkfhhjwxqviq{~wll][lo``cejgdlkijraZ[lxrh__`jr`krswm[[XY\Zfcjjkjikzyzphgqq{zwkqc`he``lncdbajiikbh[wvf^]h|ni`ckk`[[XXZ\[gihkihv~woWdipm{znsikd^b[_^ahhbbiihlmtt~rtggviZ^`cU]VXXU]jfgihahjvua]WPPa}zstlliha^\`ji`faaggdfemhs{{tffqqbVqZRU^XUUSUhiihhal}`aQPOM_twslijihh\eddclfede``e`m`jo|strseXPY[RUVURSSUW`\^bffgvOONPOOMVwjrjie[a\\ddekpdig`ad`bmkssrkYZZ^aWXVSS\`W\^U^^efPRJLMSSdjwlidTRQ[X`inioih_^^_^_`flUrrxqaX^cb_[]`heai\RQTYX]UWMOMTOMNMfkoebSSY]eefigg\]_\_Uf_dsaPccb[_\ddmmkd[W\a\\XTUcNOPPNNgkka`[RX`cedYiaX\cneY`rgf{Jcha\[`^hldkedaaeh`]lfi]]YNSY^MXbb_[ccbVfVZTPmZTU`VbdmjZsPJJe\b`bceeikcefgbe`miikgePP_WW]RS]aba_c\]]UTVWe]QQXbcmimtdiJJKS]cddcddc]jj_tvecuucfgdQX^YOXY_VaTY\YV[QTZQPNNUg\XZZSVW^`OJHN]fddicddff^QQMaW_b`aajbW^^aYVZ^[WYVTQVUVWTQQNNVU]XXW[W[h_`[ZGGVccdeed`kRUQWQ]__`gf__^pngZ_biWca`TRY[XVXSUUdXXWWX[eeh[[ZGGMs]dcededfhpwQ``^`_eabnhjTd_r^^ib[hWUTPRRTPSTTUX^YXWWXZg^[[GHPbsmdeccb`gdb``_``al_]dn_QVdg`\[Z`QPUWTPUWX`_XXWY][g_[\\[HMLKbddbec`X]WR_``adktwz`]MEUg`Y``QRWVRSQWYYf\_ZXXZdh^\^[b_XP_NR[deji]XMPOPX_``adsraaWDFFOF_pWUSUWSSVZ`a_[^bbdhi^us{_XKtSZZdmj\QPPOVX]``akogf]HDDGGIY[WTWXkX[YY^]\g[\haeg^ghjfntmN]]IQSYMZeU[USQ\ad]cacbdjrfd_WODHMZW[SWYYWbXWYX[\VS[bebb\cjj^bQYYLK^QSTRUXVSUY[Zb`daeed`kbeddaEECQN[hi[\RWdWWT_SVYVOiac`jiidSQW]WZW[QNKXXaYUU^bdbcdgdecdidehWaCKIHjlkffcVacV`QLLQRTh]Z__eljgQQX`R_JJ`WVZLUTV^eed\fmdfdgddj`Z]RTIPkk^\VgffeURQQOPZ\Y[aZdbjmgVRR_^PSOya_SLLMMdfea`]XZmabcfegd\ZYUS_Rfeejiqih[cRcR][`_\a\jgkcRQSY]_WYUNXXKNSZfg^fgalpqmcgdj^U[[cbcRRkgqjqkmmd`UYaX]bh_ikdjiga\XQZ\_apdjQQPRdbgffebhjkricca_UY\ecc^SPdjh{~}mhfZ]``josqqjejllda]XYdcbdXVVRU^Zfbc[_]\]dmmic]U]eedb]XTYfbsmsed`XeajihideehjidhjUXY^MjXXVQUS[ma^a_YX^jlmh]g`fdbb\XSSOP`g~sqmjedai_XSdO^ccdhkkhbr\[^`_UKWVUTVV^e^\]^]^jihhg]`\a__]VTRNOTbymmkefe_bLKLMVV_hcsnmevba^c_VKTUUVZcebjg\Wjh`boeJdb_ZW^_^QQOUYc~ihhffdMKKNUT]_glcdduclleb[QOUUVUVjbg\a^igdd_\_`[VY\T_^NKNPT]ShjhhgffcdMMWVNbb_odsu]]ebbiUUV\k`aRYXdaheh]Jl[LT^VVQQPPXuvjk_ffdRGHPNMNRRMPZJa]\afgnTWVV]__lnUYXXbgkid]b`KLQVRQPPQPJOtvMNYYTf``SHKOOQQRTTMPRWaafgZZVTUZRWVVdXWX[bicb]UKUPNTQQKPPNLqwrKMMXbV[`HFSNYaiSRYPPQPaa\_jkYQRRYXUQR[eWXXi^i\`cSLYOLMNOLFM\PsMMHHIbOQIUNSVQOiQMOPP_aoUZ[RPS\]Vf[X\XXZc^VNNPMMRX]]QPJJLOLNHHIXXYZTTQPRQVLPQQPcjPRRTKTRRZXX_^WWMMUMMNda_UNNJLNOMHHIJXU\KXROOPPNNLPPNgQ~Uad[\\RdiR^c^WYZ]^VYMMNMNdc`^UNMMOHFHHIJKJYXLUNTOQQUFMQOQLORWbXYfXeet[Yd^dVaX[]\PVMMbY_caaZTTMSTOJHIFHIIU[]ZQiYQOWUSQVXQMLRcVgTZebYWei_ifdUZ[^]]MaYWeddci]SMMQY`KFFGI\^kjtvhYXZTFHSURLLT]SkeeZ\hjkkaVXSSTULQPYbbddc]]TMSOTNMXHFFGHNso\utW_`Wa^U_Y\MMRqr_Uk[OM^bgh_RUTSQNKLLPSXMWc_c_XTPSOUJUTGFFaroovrsWWaba^[YYMWgkdiTYWbg^giTSSRTNJIMSROc^^]\]VUSTKLJKSGFJYeoqmnlgXRYaXWYXXSSZcop\ix__]gigTTSOJIJ__]_`_^]TW[ZTSUKLJMRFHNLjnnpphMkkaWXWYYnXYfeqfb]d[]^f_fURTTVWPPOPTY\qa``SefnTT[WLFGKIKXcinjeHEGiVOSWPPb[VXlkmh\[[ZZdnhUZY]]bUPY[]_X_Va\WbXVSTLT`PLHKZZkjjYdaYk_]XUPPXdbkhjkn_`gg\jmih_^^bhh]j]Xd_^\[FUGIKNIV~~MKI`Y[ihjomlkYIYY]NV`dfkkdXn_^]^]gkdggd_ccellba[W`ZGHDJSBJN\W}_MMIPYUVXi^jiJKHIMPOOVokkj_a_c[W[][_degeievullja[[W[VLSKHIHINYXYLYNNOYZYUZ[]\]TPPNMNdZpdi^dh]][ZZXWcchiovvutn\ZVVYWVUPGSQNJNKWQXWNWVZ[TUSMMLQMNPLSR__cgTR[^[[Z[ZXVWZhgxxnmlrRWUYZZ\VVHSSUNJKNUYVYVWRSOSJKKLJLMMNSl[^^][Z\VYVVftwwcb[NSMYZY\XNHETRMMKPTZXY\[TTNGLLKJMKMSQUVxlh[]YXWbe[[\ZZaUUVfrwpQV[_SaYZ\XVNFEETT`Q]]YZ[XHKTMLJLKKLORSSjZe^U^W\ce_Z[_\Y[`UW^paaKRZX_ZX]WWRXUSVW[Z[[YZYQQZYRMOLNKNPMSTTbik\^]bbhd^`\ZY[`YNYQaQLJNXWXNVWY[[WceX[UTddcYX[JKXYWRRORMOMONQVkkjdb\]^`\e\Wcaa[`K]QTWNOTRYNNMZS`dcZ`[PfclYXcYh[[VWRQRSRRQLLXXkk_ia\^]`^dXXa][W_GISNOWOOVWYPMNOSY`]^N[jkllg`^iv\TTQRWZZUOJYYkk_c]Z\_^SX[ZZU_aFKOSMNNTQURZTLJ\`]TW_^XYllh``^[kWVRRNRUTROENQkkhb[_\ZXQYY\eMkU]MRNTcSRRONQNOUXSST]\jaef^_^T^^QWXdXZTX[RNNxyyyvvww}ike_cyimtsuvsrp[pmr\\YZZ_^qnwroovxyvmiqnfko~||zvtx|wxuwvhyat{{}uvrtsrcajoh_i``Zmqoqnnpq{vjikiimki}xvxy|x}~srnd``msurs|urtpc\_^okp_mtrosoqnqqzkhgaedbhyy|zxxz|_[Y_ssvnersqpWb[Xekpustwvpxwon}qojc_V^_\b{{zy{wx}v][]r}|qqbRRWYVW]os~}wuvsqnnhtr]\\[WZW{zzxytzy_Z^]de~n}qqnXPOQSVWWcv}}~vosqksfhzwdW\[XV{zz~~}wzo^h{d^QTRQTSXXcoo|upjlroinrnZW[VVzxxx{syg`ZSRPSSORW\nwwxz|ihopinoqg]VV[WV}}z|ywvuyxttreev{][RRSTPNMYgw|ppqwupponlidYWWXZv{~}xuutuuxge~p\YUSNSNPUPTbvooqwqppoib`VVWV|kkxuuttsw{xwmfbh~{l^ZVSUTMLOKRQNeonlqrqppoicf`YVWWwigjhi~wjqprsurx~sxo||be_[WVRUNJLNOQQMY[cIlmpooppopjk``[YYhzwwnuueuut~|r__cYURSSQOOSOWH[QMVGJdnoopojaia^YY`ja`hlphtxuuruvv}VcUZQVRSUSUSRQTLIOPNLFJWk_fenhbaaeYZ``f`heewuyvurfu}}xm^^RUOPTUQYT_OSIONLNLLNJX]`c^\gaZk\]Zgqihsirix_fj``}oupjzwTh\dSZX[QPPSZPPRRPPOILGINd\_`_\cklbl[]dvwdgcmiis_xbb_{ssWUYYXbSXXPOPSZTgVKKPJLII^_`c]ZXUaaZcZY\{{~ufwnltwuy~pnm]Zmi_\lRYSX[_miVNJIMMKLa_cc^^Z[ZYY[XXYo{ywxxuxz}~}{|}}r[\WYX_RQXYU]Y`u[WQJLLKMNdccg]]X[]Y]XXouq{zxxz~r}aTSTUOPQPOQSXY`{~sURUNJKKLO]geb_ZYXX^^XWuu}xowzgqy~~TSSRRNTTUQPTYX^fk]SVPMKHKLMNeebd^`[[]^]^\uv}z{yxwxywyhigrx~_TSRQQOLSQRQPQ[_gf]OMLNIJIKOY\ZZbb`]]^][\j}zzxxyyxxdy{rTTSRRQQSRQQPQWhpkKJLLJKNPOYVX]\`ki^]X\Y[kleelpoouwxvxungw}xw[WSUTMRQQSMPSQOP^]iHKOEILRPNKTXX]]cnjcWYXU^kedffqjpxuuyuwrzzkTVUTTPNRRQRJQROUgcKKCDCIGNTPOOVa\]ftoY[UWVYoeddfmlhtvt||zwzjoSRRQT\VTRNJKMKPPhc^DDCDDMLLOQVacah[^YX[YW^ggedgeggoz|tz||kwjVSQQWY\VJJKIKNYabfDCCGFPLLOS`biheY[ZcVWYrhmmnsqs|}||||VUQRQQXTRPJJLXWWXXFCJJLNNLSXchkdcgbbc\[]ggpptvzoz|zh]SRRSRRQPIPKIJKKS\ZRVMLLKMJLOPRT^_^`aa`a`_[Whmgmvwss}nVSRSSQRRLIQOJKJKJJLPWTMONMLJKLLO\\Vde^VZaW^aTYttuuvuruQSSQSRPPLIKKJKJIJLYTPPNONMKJKOOPU]^ebRTTUYT]Y|uvuuppbnqtkSSRQNQPPONMMKJGORVkNNLQWRSTX\[UVSWXXTUuurhZnotxRTRSNMPLROOPNKNHPOmXkVONNTUTTXXZYWXXWXX^uurpdeXYYstvUSTUUNRQQXYONNHOOPGWVSQRLNNOOXUUVUWWX\VXYXXYNMs^_]XWYYchuRSTUTTSQ]R\RRNJLKFGLQRRLUMNNOSWZVVWVW_WXYYXYXUZuyfZTWWaborstSTSTT^V\[^]VUXHNGEFFI\YVaOMNTVWWVVYZ[WYYZXY]XUWcs\[WVV]`aqrtrRSRUX_VY\]^[SSKGEEFFcXmUZUOOVVW^_\]]aXYX\__Ya_ba\TZVVXltvwqhaUVWRVVRPW^TTKEEFFGHPUOTPRRPVXYXZ\YY^d[^\PaZZdfb\V\`VeXh|wTbTSRRNQQRVPVXBBDFFGHONSLMMOPVVXWX]ZX]`_^`a]T][bbgY[jh[XYprq{}RVMNMQMOW]PPLAAFFEGHIIPLLMPSUVUSXWXS^aO[Z\SSYYcihxwmvs[^stpULIIJOPT^WQPEDBCFGGISiMMNLQNOUWW]_Xa^SSRWNXZZ`__dsi\cflu}[TSULKHOYPWQPKAABEGKgPWNNMMKNWWXZYee^SRTOQVZZ_drq]kmo{XWTRVSDOOYOOXAACHOHOUOMLNOHUWXYc]ZbXVTOWZZYZ`__^_t``fnyxvXWVXTPY_\OOTMCAACIOPPUSLLOLKNIOW_cc`XWWTZYZXYe__^_^`_^gjd[WXVTPTSSccZ[EDAABMGLQSSRPLKMJHIVW[bdZXRWXYZZXVWjig`_^cti^bggYUSRRNRW`cdYULDKCCNOOTXVQKMLIKOWf\_ae[VUXW[SRVSlnm^^_hiefZddrTTVVRTWS_`_`OLLEILONNOQaX_TOMKIPX\]aee]a[]XRKPVSlhah_^ffggz^rueSUSSXY[]_YVPOHLLGNOOWZXPNMNMOUe\ajbeaa`ZSSOQTnpnxjkggnuRPSUOS[dZa_[SQVSOKNMNNOVjTXTOPORW_igdc`^Wa_XPTRQQprt^`WWfxd^nURQNOOQQVUVNNPRXOMPNHLNNQPSVRNNTSSmprh^VZV_SR\YYSSy_^efhoOMRQRXPW^UQPVWRPMUMHGIQPRQRRSSOPQTRpfpcWZNT\TPUQSM\YXZ]WWPRRVmY\QOOURMMUIGHPQPPRRORQRS]hk^a`TMLPNQSRaiMjlvkUY\ZTRPQRRV]hS^^VNSIMKJLKPQQPQQSROORhht}lWROPNLMNTQQ[Fr}|xxWRROQRR]``_neVSGGLGGNMQQTSVSROOxvj~rTNNLKKOPSMKNdhspwptlUMOMOOSTbppoohRSLHIGINMMSTR^gUOTgx}~eMNQLLKKJKRNHF}ooz~xYNMMLKNRS]pma^ZZSNHHMQTgbyhTvxx}T[MLKKLKMKOWOGnnz}{NMLLSQRkl^_^]\SSMIJMQMSRTTmulzye{xukhgMLKKMTUSWOQginkrwuZYRLMKRS[TZc\]]\ZVGSNQRQSRSnieQgpfhg]TLKKLUSVT\PglqymwXKKMJTVfY]\\[PPNRSmnjrhJ_adbgaidPKPUUVUSU[ehgihszyvzNLJQHHOUX_^\ZXYNNMNMRROS}uvjTTLJdadclejPR\UPQMQO[ccglqz{xtWKKGGHGKbY]_^UXPLLMMQPKKUgOSTJPe]chjfugffYMNNPUVeneffq{wghydLNHGGTKbdUXJQWFFLMNTHONOto~OONNLKYYc^efQ\fPMLMOYRbbfflq{{w}jrgSNLKKJTa_\Z^UJDCDFMNTRSVR^nNIJIKIMNQZdlRKKSLV[[WY^gouhw|}jjYONLOLS_kka\WXLEECFQFOTTVZotthKKIIMNNQRMRRLLW\]\\[nooyypmmnmm1s}_a[VZp`dkjlmviigTgdiSSPQQTUgemhfgnpqneahe]bftrspmjormokml^pYkqrtlmi}jjiZW`f_V`VVPcgegffhitnbac``db`rvvunlnprnst}~ihe[WXdjylijslhjfYRUTeafVbjgeifhfii}rc`_X\[Y_unnqpl}vnqv~|zzvyrVRPWjkmd\{{|}vhihfLXQO[afkiimlfnngfuigbZVMUVSYoonnokl}{{vsmSRSjv~~srhgWHIMPLNTeiusmlmjhff_liTSSRNQNonnlmi{{{pVQUT\^td{z}ushgdOFFHIMM[lttmfjhbk]`qn[NSROMonnrxv{ttorfU`yyx|}{q[UIKHHKIOO[ggvslgacif`eieQNRMMwnttv~ynpypskxr`yzyx}}yXSJJGJKFINSenooqs`_ff`efh^TMMRNMtqqnpy{ponnpqllk^w^oxp|zwUSJJKLHEEP_oshhnlggfdc`[PNNOQjorzqpxnnor{}`^wyy}~}{ufTRMKGKFHLHLZngghnhgffgff`YWMMNMp|`z_onnmqtqpf^[`~~tqaUQNLMMFEGCKKG^ffdhiggff`Z]WPMNNk^\^\]rn`jjlmn~kqxlrhtr|wYZVRONKNHBFHJJKGRT[CcdffabWWRPP]wyolkydnn^noowxv|gTUUYPLJLLJJNIRCTKGOAD[dffaX`XUPPV_VV]ae\inlmknopyz}{rKYJPHMIJNLNNMLPGEJJIF@CNbV]\e_YXX\PQWVV\V][[ljnmnk^nusmbTTGKEGLNJSMZKODLIHHFFGDQUWZUS^XQbSTQ]gw_^i^h_oV^cYXtglygaqlI^RZIPOSHHKSLLNNMLLDFACH]TWXVSZbcYcRTZlm[]Zc__iUnY[[WWuq}~jh|LKNONYJOOHGHKSNcRHGLGIECXXY\TQPLXXQZQPSqqtl\mebjmkoy|utwwx{wedcSPd`WTeJRKPSWheSKGFJJGH[Y\\VVRRQPPROOPezuqxomnnknpsytsqr{sshRRMPPWKIRPMUPXpWTNGIIHII]\[_UTTORTPTOOekgwvyqpnnptyh|{usWKJKLFGHIIKKOPWuzoRORKGGHGHKW_]ZWRPOOUTOMkkxsnemvp]goytxtKJIJJFLMOKJNQPW`gZPSMJHEGGHI^^Z[UWRRTTSklspqonmnomn^_]gnt~zxVJJIGDMKLKJKSXbaZLKIKFGEFJSVSRYYWTTRS`sppnnZvotw{qiJJLJJIKNMKKJKPajfHGIIGJKJSOQUSWb`TTOSPRbc\\bfeekmnlnkc]mswnmQOJMLGJLLOIKNLJKXWcEHLCFIOLJFNPPUTZfaZMPNLUb][]\g`f{||nkkojlhqpbMOLMLKHLNMMFKLINa]HGBBGEKPLJKPYTU^kgPQLNLPg][[\cb^j{ljqqplpagMLMLOXQPNJGGIFJJb]XBBCKIHHKLOY[Y`RUPORPNU^_]\^[]]epq~ipqzqambPMMLMTSUXSGFGFFIT[\`BBEDNHHIKLXZ`_\ORQZMMPj`ddigirsqqw|wxtqqONLLMTQOLFFGQQSUDBHHJHNQ[_b[Z^YYZSQT_^ggklpepry{xxvwwo_TLLNMFMGEFFNUTMRKIJIJHIKKLNWWVXXWXWVRN_d^dmniisxy|xyzw{dNLKLLMMNIFNLGGEFFGJQOIMLKJHIIKVTO\]UMQXNUXKPjklklkh{}kt|}z}|}vILLJLLIFHGFGFEEGRNLLMLKIHIKKMUV]ZIKKLPKTPsllfXdgi{|~||bKLKLKJIMLMLKJIIFFBILPeLLJKMRMNMPTRMMJNOOKLllkkh^Pdej|nILKLHGJHOKLLKGICJIfQeSMLLMLQPOONMPPQQNOONOOUllhf[[NOOikumLJLMMHJKMUULJKDKJJKBOPMKOHMLNNTPPOPSMOPOOPED~jVVTNMOOY_kyIJKMLLMKXNXONKFGFBBGKLLGQKLLNQTVPPOPWNOPPOPOLQmp]QKNNXYehikJKJKLWMTUXXRQSDIBABBVSQ^MJLRTTSQPSSNPPQOPTOLNZkTRNLMSVWghjiIIMOXNQUWXVOOGBAA@@[RfPVRLMTTSRXXTUTYPPOSVVPXWYXSKQMMObklmh_XLMNIMNJIPWOPGA@A@@AINJPNOONTUUTUVRQU[RUSGXQQ[^YSMSWL\O`snw~vKYKIIEHHJNIOR>>@A@@AAHIOIJJMNTRTRRWSQUWVUWXTKTRYY^QRa_ROPhjhzsuIMDEDHDFOUIIJE>>AA@AABBIJJIJNQRSRMRQPKVYFRQSJJPPZ`_ondmjRUjlxx|ygLC??@FGKVPJJA@>?AABKbJJKINMLRSRWXQYUJJINEOQQXWWV[j`S[]dmuxRKJLCB?GQIPJHG=>==?@D_ISLLKKIKSSTS]]UJIKFHMQQWV[ihTcdg|sONKIMI;GGQGHR==>=AHAJQMKJLMFQSST\VSZOMKFNQQPQXVVWkYX^eqo~nONMOKFPVTGHNG?==>CGIINNIJMIIKFLSX[[\XONNLQQOP]VWVVYWV_b]RNOLKGLJK[\TU@@==GBEJLMNMIHJFEFRSU[]RPINOPRRONNba_WWV]pdV[``yPLIIDIPX]^TPG@F?>HIIMRPLFIHFFJS_UXZ]SNLPOSJJNLdgeVVWcc_`S]]}viJJLLIKPJXYXZJGG@DHIHIJJZQYOJHGEJSVWY]]TYSVQKDIOMe`Y`WX``absWyjl\ILJJOQSVXSQKJCHHCIIJIJPSQIHGHFHN^VZbY]ZZYSLLHKNfhfqefbbxfmIFILEJS\SZXUNLQNJFIIJJIQdMQNHJHKOXa_[[WVOZXRINLKKwhilWYPP`s^|VfLHHDFEHHNNOGHKMSJIKJCHJKMKMOKEGKIJegi_VMRMXNLWTSMNpxxYX``b}fFDHGHOFNVNKJQRMKHQICCEMLMMLKJJGGHKIh^gZORGNVOKPLNHxyTQPSUNNFHHLeQUKIJPMHHQDCDLMLLKFIHIJT_bUXWLFFJILNM\dHac|xncMRTQKHGHHMT_KXXPINDHGEHGLMMLJFFI__ktcOIGIGFGHOLLVA{~i||usooNIHFHHITXXg_QNBBFCCJMNLOMNJIFFonaviKFFEFFIKNHFH\_jgynwgxvldLEFEFGJKZhhbMMFCCBDJJIIOOMW_LFK^ptu\EFIEEFMIDBtwffqwuwyzpRFFEECEJKVhfZVSSMHBBCCHIIM`[r`LnoptKSEEFHGKSKCwdeqvsuzwsGFEEMJKddVWVUTLKFBDHMIONPOgoftr^rpmca_EEGPPOSJM^`ebhwnlu|SRKEGELMTMS[TUUTRM@KGKMMONPi~|{e`MahaaWNFEEGQOSQXL^chpdvunQEEFGENP^RUTTRHGHIGFLMOOiij~fndF[\_\b\d^JEKQQRQOPW\`^a`jqpmrHFDLCCJOSVVTROPEELMINypq}fPPIF_\_^haeJMXQLMJMLV[Z^dhssokxREEBBCBF\SVWUMOGCCEEJIEEP}{|cKPPFLaX_ceapbaaUJJILPQ\f]^^itoaa}r^FHBBOF]_OQCIO??DEFMBJIJo{kyKKJJGFTT_Z`aMWaLHHJSMZZ^^ejssqwclaNIGFFEO\ZXUYPD=<=?FGOLNQNZj}|JEEGEIJMV_gMGGNHPTTPSV_hn`qvvz|ddSJIGJGNZgf\WRSG>?>=?LAKPPTWinmaFFDEIIJJMNGMMFFPUVUU_`asjka]]_``a1gqSTNHLaRU][]^j]]\H^[`JJGHHKK^[e_]^eghd[X_\TY]fxsbca]\ad`b_a_RcK]ucdf]^[r^`^QPX]VLVMMGZ^]^\\__jdXXZWW[YWcfxff_]_ad`fgqr]\XNIKV\l][]g`_`]QKNM]X]MYa_\a]_\_`shYVVOSRPVf_^a`]mf^agnmllhlfIFCJ^^`VNooqok_`_]HRKITZ_caaed^ee]]k`^XQMDLMJP``_^`\]urvxuollhhaGFG]h}rqgg_^QCDHJGIN^amkdcdb`]]Wc`KJJIEHE`__]^YkxqwrlldeJEIHPQfVmlpig^^[IBACDHHUelld]a`YcUWheREJIFD__cvpqviqgmghcfZITmmjnoqrneSNCFDCFDJJUaaokd^X[a`X_a\HEIDDhi^efgqrqokbdmdg`mfTlmkhm|solNJDDBEFADIN`hiiklYX`aY_``UKDDIEDebc`bvwqkneddefab`RkPaipqanmjLJDCEFC@@KZinbcdhgaaba_\YSGEEFH\admdweleededgprTRkknmlf[KIFEAEACGCGTiabbdicbaa`aYPODDEDcoRmSsdeeddcfjgfZQLRnndbTKHEDFF@?A>FEAXba_ddcbaaYQUNGDEE^QORPPfucUaacdevtagmag[fdliNQKIFEDGB=@BDEEAMOW>_`baaXYNNIGGQkmb__mYddTee}mnkvqnw\LMMQJDCFFDCCGCL=OFBJ<>X`aa_XOWOLGGJSJJQUYQ^cbcadfgxnortoygESCIAFBDGFHHGEIA>DDCA:>K^QXW_WQPOSHHNJJPJROOa^badbTdjw{x{vidZNNAE?AFHCLGSCH=DCAB@@B>LPRUPMWPIZJKIR[kTRt]S\ScKTYNMi[`~m[UfbBWMUDKJNCABDLDDFGFED>A<=CWOQRPMSZZQ[JLOabORNWSS]IcNPPLMier~r^\qFEGJJTEJJBABDLGZKA@E@B>>RSTVOLJFQQIRIIKffh`PaXV^a_cmwwpihkklnkYXZLJ_\SP`DLDIMP_[KC@?BB@AUSVVQPLKJJILHHI[ojelcabb_bdgmthgefoggvt^MKHJKRFELIFMIOfOKG@AABABCWVVYONNILNINHH[a]kjmedbb|dhwm\pvoigzOFGHHABDDCDEHHOkoeJGKC?@AADQZWTQKJIIOPIHaa|mugbYajdst{vQ[cmhlitEEGCJJIFDHJHNW[OGLGC@?@ABCXXTVPRLMOPOPNab~geecbabcacRSQ\bhrnmNEEFFDAIGGFDDLOVTNCCBD@@?@DMPMMTTROPPONNuTgddbbccbbNjcikof_EEGEEGFGJIGFDDHW]X=DCBA@ABBEPOIWWPHLSIPSFK_``a_\oq_gmnknnohBGGFEFFEEC@DCCA@@AIEBCBDCCBAAEEHPPWUDFFGKFNKh``ZMXZ\lmqommYGGFECGFGGFFDEBA>CFFZBBCCBCCFLGHHKOMGHEIJJFz``]REYY\nqprurdDHFGCBEBHFGGFCE?DC[GZIDCCEDJIIHKLKIJJIJJPwa`][PPCDC[\gqrsbFEHIICFFHNPFEF@GEDD=GFCBE@DCFFMIIJIJJNHJKJJK@>q`JLIDCEELR]kw~}DEFHHGIFRHRIIFBCB<<<;:QI]JNKFGNNLROPOSKKJNQQKSLNLIAGCBEX_^_u}^VPEHIEIJDDJRKKC=<=;;::AGBJHJIHNNPLLPVMPNBSLLVTOHCJNBRFVhcjrtkDQDDABCDHDJN;;<<;::?BIEFEGINLMKLQMKPRQPRSOFOMPPVGIXVIFG]^^nhjBF>??B@AIODDEA::<;;:AEEFIKKLKGLKKEPTAMLNEEKKQWWfe[daIL_allpm^F=::=;AKCJDCB::99:9=WAOHHGGDELLMXWPEDFACHLLMLMR`_KXZ\{qhHGDCHE7AAKABM:99898:@9DLIGEHI@JLMMVQMTJHFAILLKLMMLMNbPOTZedsdHGFIFBKQNABIC;99:DIGXUOVMNWWXXjMoadUFGEEJLNPRMKFE?CB=CBBJMLDCACACHYPT]TWUTSNGGCEH[^\g\]XYvyn]dDADHAFNWMUROIFLIDACBCCBJ]GKHCDCFJR\ZVURQJURLDHFEEm^`cMPFFWjTqM]EDD?BBDDHHIAAEGMEDED=ACCFDGJE@BFDE`bdZQHMHRHFQNMGHgo}nONVVY}s{^@>EDELCJPHEDKLGEBKC==?FFGFFEEBCFDcYbUIMAHPIEJFHAoo~JGFIKuGIAEEFI`LPDCDJGBBJ><>FFEFFEADCDEOZ]PSRG@@DCFHGV^BXZuqmcXCGJIDCBDEEJPZFRRJCH>BA?AAFFGFFGDAADZZfo^IDACA@BBIFFP;qt_q{piguc{dGBEBDEFPSTS`XKH<<>CCBCHIGQYGAFYjopW@@C@@GC>@EFPb_SOMMHC==BCCBGFGZTkZFhjjoFM@@BAEME=mZZejgin{slh@??GEF^^PQPONGHB>?BGBIHIH_f^lkWmjg][Z@@BJKJMEGUVZW]kb_iyqwKKD?A?GGNHMTNOONMK=HBEGGHFH`sppYVBYbY[ZQHA@@BKJMLRETY^dYjibxJ??@B?HJWLONNMDEECBFFHG`_`rZcX;QTWUZU^YE@FKKMLJKQRVTUT^eda|}ziA?>E==CILPONLJKCCBBEFBFofgqZDD=;WTWWa[_EHRKGGDGGPQPSY]ggc_mt}wK??<<=<@VLPQOIJEBABBFD??HrqpX?DD:AXPW\^[k\\[ODDCFJKS[RTT]hdWXtjW@B<FL==ABCIF?OVQPPQdS``__V`RQOQQKIIGKLNNJMNNPZebdpdlklaVSSU]a`ddb`?<:;;PAIGPPQPOT\^_TUOVRQQIMHJIIKHLMLMNSe`ccq{tlkdWTTUbcdebb`CU?;;;K@PQOTbQPPOSIHIQOOMPNHJHHKKMMNTZ_`bsrrulkb[aT[cddcecc`]c_`UUBMVLPO_aTVPRQTNFISSOPMMGGIJKJKMMNPQ_adeqpplge[[debdda`Xaa_XRKPKSTUTTQLWPONRQTQSNMIGGHEGLMMLMMNY`bqporzgwd][[cdeebe_[]NZ[\ZZOLJMPRUURQPOPXVQQSUTMLJIDEIEEMMLOWa}~po_^[a``a[V\YYLMMVSZOGIHHQPXURPPR^]VQQNNLLMHFEEMKMLMMLNKNX_~z~\e_]VNLNXWTZZLMM`VIKPKKFQRQPOOP__ZZMKEHFFKEFGLMMNOORQploka]^aWMLSSTWVZ_MMXONRLGFHORPOQRQ_YOQLHHIEGNJSOMMPKKONKKPaZnkljjYNLMQUYVU\ZLMMOYOOLLFIIORWQPQQUYXQVSIDIMNNORLIFEMMKIIJIPgv}ikgaWORRLRWXWW^LNNU__SMLGHHGHQQORRVTW]ZRJIEJNOOQKIKCDIDHIHIMWt}{igYTRSRRVWUY]cIHV^V[`gZNGGNS]OPURWZZ[R[ZPGNONTLJNLDDHIQlzc\Z^TRRURSUY\aRRVQa[[_aSHGGSRNPRPVZW^_[\[TTMTRLNMMHEEFDEIJIKSYl`i__]SQSUVTY\^N`VPPZZfgclPSYNMOPPSX_X_^SQGFSRLNNJGEFEFEEHIKKV\Y]\^_^]RSSXY[WGWOORZTVTdWXVSSNNPSSWUO__RQPOLLNMLGGEEGHGHLKSXW[e\\]^[NORURXXZ`PMMOPPSSbYWXVSNONNKVURWUQPJJRIJFEEHLQLRSWZ]\\^`_TMYUXTZV_GMRQSPTSXVWWVUOMLKMHIGIPWNVQKKPUOIHEEKQRRUTS^_`__^WYYZSV`]HKMNRPTWXWWVSOHHIOJHPONOWHV[[ROEHEEMHHIKNMOUS[a`__cZOUVT`b`JOQTPVYRYW[WWKGIPOEEHNXVXMT[[\OEEFEEKMKLIIRIQQV\\aeWZ`Z\X]bdd;=DEOSTRLPV[XXWNHDFKFHJMVRKKWZ[[YHGEEGMORPNJROQUZUSV\[S]_YZcdee=B=LTXZSKSJYc_RQOMIEGGJJRUVWVU[[_QEEFJUTQXRNNOUYNSOOYSS[ZZ]ee_E@GNUXYWLJYee_c^KHQGGIKIPN`[\[[\ZbEHGRVTSWWKLSTYVVPSTTYYX\ZYfe_IRGOQQTOKPYQe_ZkIHHRHHJIMTV^[[VJHOI]STTWXUKJLUYYVWSUTTWVZXc[dfFTMFKFX[KXYXORh\PLKNMLKHIJMIN[WYPIFGVYTSSWKJJKKZZWTTVTPVWWQYa[NVDCCEHNQRUMGMVPNCKILHHJMLMKMS[TSNHUW\WQKKJJMYZZTNOWSTTW_YQOCDCGQV_STNJRXXORDMHHKMJLOKKPSQMNOOJSTJJMZYYJQOKOWTTPUVYQQCBEQbc`SKJLLUWPXVOUHKKRMLOPIOMOJNNMNNTUJJRLJPOLISMPRTSXXZFMLCQXibWRPNKMUO[WRS[VHTQQPQLKMIGJLMNNOQRJJPIGHONNMNMQWTWUYQSSTQ^ba[SSLLNLU^`W[]\NZOSQQLLGMJFJNNQLKJJKNLKGKNNMNMTWUUZJTVS\\_\_SQQRROMKWPUS]LSQQPKOIGKKQ\OMOZQQJJIKMLNKKHKNNMQSWZYZ쬨teeXXZptgsa__`¾vhdmdZ]yy~ddc`¾mjbmbZxegf`eedhlp|kfaئmeddgiz|qee贈㾡nddeclfy~miiȭdccgce~~{rh詝侽ifdcbce~y}}ws쫬þnkfbbam}}}yurfbcb^ckcw||yto𭬩֋gcfgaacbspzztsqٹ¼cdih`b_lfppohwtj㪩¾hc^c[aegfec^clhj簫¶񵻴d^[[_fccWOZ`^[Z^bcc_\MJOἸü`[[]ZbccRNLLߘ򾽿\[[\[a_VTKKMM򷶷[[Y]SKKLKKOO[[\^XPPJJKRTۛb^]\[[WYWKJPTTUeked`WWUPLRUU或ÿﻹycba`WWUZUV݈ve_bXXW]WV~nqa`__[YXXW[bcu{󵸹slkg``fXY[\ts|{wy{pokngi``_i[uuv}xxqx¿vroogcoZbzxuvwrrpyƾ}uqsuvvpxvwxxw{xtxry}ý{us}yywyy}|wtswwx·~zwyyzz||prwyw~ļ׆yyxx|~xpoovxyy|ļÇzux}~}rkihroryz|~|vu}uilsmqqrt}禵½㍜x~gjimpqpoĘ{~~uvrisqpss’p|y}}zmqnorsᑔ˞tppst}t~ztqss}̈wporrquttsrwҮwv{oprp{mnr|„zwqwyznsr|֔yswvz}ϕpvsxz}⑔ttllrs{{z~}tkvkllsz{z|թ~|~}jkiikz{{y|wx}ys~ruukiijiks|z{{|xu|srrtkkriik~ytuvw|{rrtzvkjkjytqnu~|||rrzukikgwwplloz}}}ytkllwvxllmlz}}o{tonoxq{{Ģ|tmhxozmv{ttluinrxw}rmpddqryhu}zzxt|rrqqnuzihpps~ttrol묱rrllkjghiffizt{n{ssojkjxifefbcncdffeiplmnonrjkvfyonfggmlgbeffefhjkmmososqhfvyuqvrpr~{xxzy}kfhfjbyxsfcjohdbfnffihklkqpsteq{flidqnowuzxxywxnghhea^]\TWXcbloldfmokgglijllmppnhooejfdhhzz~wwxwwxnhfdda[XUTWXbbccjmmomkoaiinjmoomllmxsjcbcisv}~wvxwwvvihfa[[\YWVTUjbdggjbfYecfhiljjlnpnmltdjlkmsy}~z~}|wwvxvrihh[[\XXWWQhdick`ZZfeaghihkjlmxmlpsodknlsxx||~ysvxxwtsnid[[\TUWVV۫fWWKKMdi\hWUUV횛֪i[W_WNQnnwtZZYV񠜜ӥ_\T_UNmu~{w[\\V̚XWW[_cw}w|zra[W򖔗驨_WWZ^vypusg[Z𙕘`VWWaZnt}zc^^xWW\WZt~~vxtrh]ب]ZXWWYZ|t{wpssni웜b_[WXWXYetvuttokhᰱ[XYWV[c\osvusoje坜Я~\Y\^YY\[kiqwpjigנZ[``YZWe^iig_mja䚛௱_ZW[TZ]_^]\W[c`a硜𥪥w[VUTX_[\\QKTҞxXWTSWZ\\YUIGJ{|XSSVSZ[\\LJHHڜxTSSTSZWONGGHHSSQPUKDDEFGIJ}RSSRTUQIHCCGKMYUUROPNDCHLLM^d]\YNNMHDKMM裡o[ZYXNNMQMMzw|{n\VZOONOTNM}wv~}}egYWVUQQOORYZ}xzmsz{}~{iec^VWW]OPRSjjt}~toqs|||tffcf^`WWV_Rkklu|~ppjp{ð{ixgffg]ZgQYqnkl|{pkkiq㭮ohfhkmmgomoomqnlwqjru屬zutumhhsppnpptvrvmlkpopwyȰ{yxxvzyxuupwnvmpprrqpryrugjprovxxwyw|vw{wopnpxstnfuegnpqquxxxxxwvvx|xypzwlostsha_^igjqstuyx{xxwxx{z{zrmksyk^ahdiilt~瘦|{|wx{xx}{z~}ntvuxZ]\dgigfru|zxx|{{z~muvrswjjf\ihgjk֪zxuw|{x~{_mjpuptwmadefijxszqtv|~~d__cdodqlqvsjgijsv{yxxw~~tf__ab`exyzjkihnxvqqy{zz~}~~}}ffj_`a`vjcdhryxyzrqqs{z{~}}~~}jg`giivdihryw~~qq{|}}օi}imlqtz~tqqryw{~}}`einqytz}qsrqqrywtvs}yzrsvcc[[ajrrpyyqqpp|yqqnp}uuq}c\e]\\jqrqsv{sopuzzrqqnzrrp\\[[]qrprw|wgrhz勊}nxoirsihg][[]jsvrryuv|z~}xnltsphihi^^d[\_uxokllwvt|򖗔qpt~}ysmupoiimph^_`_wokgekxsq}{~}xupphirmi_^`\nmfcbeowq~}||msqnjbbakmncbccor}~{|~|tsuumdokfefngpqwē}}y~~usrlr}kd_nfpdmr~~ww|ywvkkdl`eiootz~s}~vv|~|ܗidg[\hjq_lxހzpmmkgrrvoyÎiihhemraaihj}}syywggeb`{wvzwu|xތiicdcb_aa^_apkqcpwffc^_]~vyvum_]\]ZZf\\^^]agbcbtcbe^^jYunzz~~uu≒|z~dvc]]d_Y]^^]^^``bbcgcge[Yjmjflhfhtuwzzz{pnnonrsa\^\_Xnmhx\Yaf`[Y^f^^]`a`ddghXdoZa^Yfdemk{~{xponnonne^__[WUTRLOPZYcfc[^efb_^b^^a``cca[cbY^[Y^^]p{puzyvtnnoe_][[XSOLKOOYYZZbedfebgX]]b]`bb`__`kh_XWX_il}wvstzyvononn`]YSSPONLL`Y[^^aY]P\Z\]]_]]_aca`_gY^a`bio}|stputtsoonpnj`__SSTPPOOI_[`ZbWQQ]\Y\]]^]_`k`_cfcY`dbhnnyurrtpjoponlkga]TSSTLLOON툌ۛ\NNCCE]aS`NLLM튋՞_QNVNEHfemjQPPM搌ܡWTLVMEemsqlQTSN̊PPOSW[nrjqngYSP򆄇򚙙WPOOSWkmdj{f]SS㟅VOOPQXSehqrm{ZVW򍐎}󙛘mOQQUQUipqjkge^V|ؙvPRRQQSTqinjeffc`싌USRPPQQR\giiggda^oQNOOT\Tefiife`[ݍoRNRUQRUSa_flfa`^PQUWQSQ]U__]UcaWڋUQOSNTVWUUTNQYVW呌񓘒jRONNQXTTSICK厑lQPMMQTUTTQLB@CorpQMMQNSTTGDBBA}wx}lNMMNOOSQJIAABCyywxwz~MMLPHBBAEFx~xy~qKMMPQMFFAAIKtwuxyyx΀QNNONNLLKBAFJKL{zzxX`YXVKKJIEBHKKxsx{xtts홗thVVTTJKJJNKLoyjwrrprgVPTJJKQLLrkiuzrprpttw^`RPOOLLKKNUVqlm{bgnnpqt䟠xqa_[WOOTKKLN``gqsidegpp{utk^]\]VXOONWLa`akrsee_eor}~zp`p]^]^TQ\JPecaarpe``^fu}㜛xxe_\^acc]dbddcecbmf`gjuvwޡxokkld^^ieeceehjgjbbaeelmv堔wljijionmklgnelceeffefmfi]`egekyy{}siijiijlomsmnrmeecdlghbZiY]dffjll{~|{jsjiijkoyxsopfpladghg\USR`\_fhiirzy|zkjliikmvywqquqpha`gn_RU\Z^^_birxyy~퇖vurooijmjjipvzyqptsciljlPSRZ]_]\txxyxy|~yhiyonjjn~m||vyqptckkhhl__[R`^]``xxy{՛omjlpovsk}}~||uq~Uc`ejeimcVY[\__nyxxyxyiogjlqy}}vuttZUUYZeZfaekha]_`iwyxwx}|mspoonlsvzxwu{{uvtj\UUWXVZmnnw`a_^cnwuuz~lhhprqqsxsttsstvu\\`UVWVk`|{ZZ^inmovw~phhksqqtuvxssttswzx`|]V]^_~huZ`^homsstw~ghh~rwqzvssĀ{}}~|_pt{`cbgiwosu}~ighhijynmpwtsszu{yX\tw_dgojoytrvehghhiw{nmjkisophhk{v\\TTY`hhfoovyzz{cedes|q{~}vgfcfsk}jgt\V_WUU`ggilpy{z}ԉuecdjpogffcpzy{whkkVVUUWXgghhfglptyrjYe[p}{{qz{xcxme_gmabbXUUVUW`ikhhglisz}uhpot~y||z~rxmdbjje`aabYY_UX[jld`a`ligro|ecis{x~~ysyxwoibkfe`abgkcZ[\[kea\Y`ledqtpxtutysy|~{~}zz~}}vwnjfeabmge[Z[Wcb[WWYcjev|~}wussrrc{v~|~uhwf||gc^^\dccXWWcept}}}~}ztvprsqiijkc~s^ha\ZZc\ddjst~}}~}}vsrntsjigbg{ߏyqe[VcZdXafqsxwz}{{}uslkptnllt}~ee\bUZ^cchnuvuu~txyixzr|sskkpsvwqv|~~c_aSR]^eTamtutuwzqgdda^hw}wugkcnttvt}~}}edcb\cfUV^]`urripon^^[XVq{|vkjnkuiplx}}dd^][YVVSTVfagYfn]]\YUVTzstuknuujia}~{|}}z{v[YWXQQ]QQSSV]XYYkZY\UUaQlwdposrii}}wux{{pynr~[ujtXYYX]\VPRSTSSTVVXXZ^Z^\RQada]b^\\hikn~y|nnoeddebfgWSUSUPba]iXS\_WRPT\SSTVXV[[^_O[fQXUP][[c_o|y}xrunleeddc[TUURNNMLHJKSQ^_[RU\^YTTYUUWWZXRZYQWRPUUTeyxy||oudinmjjdde[VTRRPKJHGIJRQSRY\\^\Z^OUTYUWYYWVVWc`WPOOV_b{zzt}qkjghnmjfefdeeVTQKLLJIIGH[QTWVYQVIUQTUTWUTVXZXWV^QWYXZ_dw|w{yzqpghdiihifeffeaVVKMJJDXTZR[QJJVUQTUUVWbWVZ][QX\Y_dcv||xmiffhie`efeeca^WTMLLNGHJJI\]^]\n~||wvy{~}`^]^^`~stuss||ʯŹ|}}|_^]\^ny}}usussȮ|{]^\ekguwzwvsw{ͭ̽{~]dmmjoozyxwvr̾֫}jeljouxzyxvtuҫshogmxszxxuwvużÿrihroknsyklnwrtxü||xolfqjlowmluuxuu|}}Ξxvvlmmulmlknloilvxnʶxz|zpyxxqoirmlkifkcb`bipy½϶ssnqxyxrwqnjimfa`b`bmoprüҵvsrt~}zvsqqujqxemkkda``gbhgptrr͐~~|srtrqqOa_ea``_a`mgnu¾츤tprrx}}zxuvwttrrvKKYTT^`__agmmnqsdppqrrurqqsopuusrsKPXKQ\^^\j]adn]_bĻu|sprwrluqstpp}{}wyLSLMPLWYWLPV[P]\]bcvŵtrpumtqptquqqtyytsrSSRMWLAWISRNPPT[\chjýuvpmlmstxrrpqwskqPRQWTMEBFPKMSTPTV[`hiłĸwmnhkqstvrz{lkTSUTXVNCTTLMQTSOZY\ȼžzyrihijkmwsqpsr{tqigUUVWYYVOQULMOQQRXY¸|jpokkstzxtoqjs[[X_\\XVVULKQLTZɻžuynxusz|}}|rkX]^bb``XXZ[hVUnẀ˺žzzyvz}one\fhfcff^^oo}ZwŽþǽ}|yurskppigogkmſſ{{xqu{|s~rssomqst|{{szx}~ouvtst³zs{|~so|rr}{xzxz|~vqr|s|{t}~|~yy~ussvÿv}~|u{u}wwyx}}uo|ü}}{{|y||w}vrſç{z}{wz}zwrv|}~}{|}||rm{{xz|zz~wkx{xzżo}~zzƼ~zɸywywxxv{}ʄǿwrpsvxzvvnmjiipvw~~slilijuuyzz㏐vksoiprqxx~ytswkmonnqp}y{y|wsvvslnvoqmy||{xrwx{|{yqkiknnlu{|vtv}zlvlnot{zwwxnhhegjmmelmyyx{wmnly~q~yz{~tvqskmiediejklsylhr}umlnv}xvyqz}wmluvumdjqmghjjhlnhk~|}xpyv~xs{q~}xzwwejxsrkidklijjknighh~sxuwvwl~|}u{}}~nwxn_o`e`mlkirwoffhfo|qoqwyuuzrnt}wxjkih`c|uhdpglz|py}zmquallvphrixzv~~htqp溲x{ޅ~{wu|~wm~}vpppķ}}rrsr{yxwrkhisno㻵w}spqzyyogppjjs~otyqwv}uprxykhhiit{𻲫yqqrvl}y{{~}uttvhhkjinpt|xqruk|ˀwyyz{|ttyljjlmnx{|}pxwvvtw{y}~ysqkmnp{{_~~|vswwvvqruu||xssly|zXX[WYqewbs|{rstyz~vvuvsovvuvz~WVVWUZ_`goyxqwxhwvvwvvwvwxx}ssw|VWWVW_]]`klrqpyjbbguwwvvzzvv{zmmr~QVVUVX]_fjmqqigddag{Ol~z{||u~xjkjmovXSUQX^_afjllkkfddaab~{cOLQsƿ{}zjgfjjmxRSSRdsvxrrmlop}}~xtrqVTSSVushjjhhqq|yyvzwo|qqpUSSRScnrrjhjhhz|tppSSRZ`[ikolkhlptr~~}psRZbb_ddonmlkh񫭭חs|{uts`Za_djmonmkij񶱯؜oox}{{~|jy^d]bmgnlljlkjΩqtut}ts{~i`_he`chn`acmijnø{jj|k{xgb]g`aemcbkknllxáijkwhgiabckbcbadbe`cmogfhji`uhhidb^f|cbb`]b\[Y[ahqybazzs]ahhci{e}da`c]YY[Y[fhikӲeaabmliecbcf]{el]cba\YY`[aai౮caa`nm~pmmkccdcc~xtuKYX]ZXYXZYfagnᓍc_aagkkigdffedcdeh|ttGHSOOXX[`gghjk\su__``ac``cabffeeyvwGKRGLVXXVcXZ]fUWYtsdkb_af`ZdacebbpmvpiwlHMHIKGRTSIMQVMWTUYYjsrca^c[b`_dbhdcfslmigfMMLIQH>SFPNKMMOTSX]`wpcd^\[[cejeecdjxzh`eJKKPNIB@BMIJNOLNPRV^_x{f[\W[cefifzn}xzqbaLLMMQPI@PQJKMONLRQTvyihaXWX\]_jfeehhpjg_\MMNPRSPJLQJJLMMPRkY`_\\]fhpmid~}g_hSSPWTTWRQRRJIMJNR|pfl`khhorss~rhaOTUYYZSRTTaRQfO{ķouqkkmkoxvs}ed\S\]\Z^]VWhgt}Sm~tmwoszsyojiiaff_]f_bdvz|}}xxqqunvp{mgjqrithhiedijkr}|}q}vxprvooinosuvvutflmkjk|}նrrn}zvkrzzrueopuvvuwvifsijz~}୴~~}pkuswvpjqqs|qqrlnmnrwwuwwlhisjr~~zspqwynnjclwxyqotqlmvuuvwwukjjm{~ʫzuu{}onelpm{mekgprjjknsswwxvjdrvzpyz~rlqvozmkklkmninlhtwxzwxyxtvrvt{{xsjjww|{wnkgjnrlqmhlzylܮz|klvx|ljl}}~~wtqnm{mxxgbqækhilhuhqyynuqgp~~vtyv_mljjhix|uq{tzyz~|uuvwuqqybu¦lnji|wptxxwvww||wvrt~xmz|pnigsquwssz~{|s~{|u}vvmzmmmlpqvxħ}uttsrsyzwr}r|~}tvww{jgfimnqlly}xsrwyru}|}rrttxtcb__^flnutxwrrtvrrqu||}qsxxttwvga^a__llpwz𨦨uuniitu}}uwxxuvth`hd^ehhooxtxts}~yvhcbtr~wutz~uutsj_bdcdgftwprvjzyqlvjjp~{eyb{yxrzzwsxwuvwztqqackegcpsrwqn{bjjnnqphbacddahmmvecsv}oelrqi|~ywstrakadduj|wrqwvijjkle`a]_bdc[abjjhyz~}|vsjf]^\iwxpdsnoq{}{uuvwvwggihehbea]]a]aafk_\zcvme\\^t~wiojjngpwy~xtwwvna`hhc]cie``bb`bc\^rnxwumg`hfpkgofttoqxwnnZ`khhcb]deabccd_\\uuyrmchetrjjk`tstlrtuvvubllcUfY^Zfdcajne[[\[cwx{z|qla_v{ekmi}y{lqiekskl__cbZ\wsk^Yd\a{uuwywjuymax|zlv}ztqdglX`a``kg`àyg^mnvwvtuvqqvxzxu|yxwixrtz{yvu^jvhf{x|é~mzouwsuuvwyyzzwyomignpyxltwudvtmfwfgࠊztvvuvvwsz{~}zooeednznmlib_`jdeww{{Ϋ|jttuvww|{~{vwtpebclxtnnme^gg``itejldjtittx~ww{zuvuqhbdutumn{ub`_``wwipzledei`owlz{{vsntpsskjjl_^aa`deipykdeg^ouv{{{vvtjtnoppskkovcaabbclorrop~uucjuuv}|wullhmqptuojhbbcdooU{~|ppnu~wwrif{||}xllklkghlkr|sv~niialpmNNQMNdZjWgnnefgvzylluslkljlhemmk~~~}|yyjmqNMMKPUV\ckkejtl]k}{siiulkkllmont|gfjotNNMLNUSSV`agfdm_WV[uw{{tush|mllylppkkouzyn`aa`fqIMMLMNSV\_bees^\YXV[|xxvuuoFaszoprqjsut~l\^]`ciOKLHOUUX]abb`_\YXVVsx}{xvuroYEBGg|p|rszz}mz{{]ZY^^akJKKJZjlnhhcbdeԞyppvrtvxlhfeNLLNkj_``^^ggwtqnnkoykcoeedMLKKL\eii`_`^^vyuoqywxtsthddKMKSYVabecb_bf׋txxvyy{jhrrqtcgLS\[X]^gedba^}򚛜وttwjxzrrkjuwwueYU[Y^cfheca^_~񥟞֊edmsqrt{s{~}`lW]V\fagdc`b`_tѓtfjkjszjj|prw_UT^\X]ahYY[c^_cæpuaa}y|wrzv`pn]YR]W[]f[[badaak~u`abxx΃zzym^\^XXZaXYYX\Z\WZce[yʔ~v]_aww~y_Vk^^_YXT\qZYYWUZRQOQV]zfǞmZZqxx}piSW]]\X]p[rZWWZUPOQOQ[^^`|퓕\YYZx}ucb_[XXZSp[bSZYXSPOOVQVW^{~|ZXYXdcufccaYYWXXrmjjDPOTPOOQ\W^d}}wZVXX^ab_]Z[\YYXYZ]qjiAAKHHPOOPRW]]_acT}zgjVVWVVYWVVXWX[\[ZZnmnAFLBFOPPO[RSV]NPR~hgZaYVW[VPZVXZXXdclf`ndBJBDGCMNMDILPJQNNRQ`v}vggYWUYQXVUZW]YY\ibd`^^JJKJDMDLMGHJJHKJLkntxt^]WMMNQRT_[YY]\f`]VTLLMOOPLGHNHHIJIHJK}~Ù|~`wNUUQQRZ\ca]Yrq]V^PQMSRRSNMONHGIGHLƎqe[aU`]\ceggrg]UMQQTTVUNNOO\ON_HrԘ~ejfa`a_cljguquYYVOUUTUVUQQ__krKd̥{ticldgnhnsc~{y^{__Y\\VU[UYZkoppuvmmffjckdp{ta[x^ff^h]^^ZX]^_fpnqqe~|}vslnegkc~zvxc]bdgijjig[aa_^_ororզxffbsxxpl`gppvg|i}Zcd}ijjhii]Zg]]mpropߡqqpd`jholg`gghrx|yffg`babfjjhji_[]g^epq|uxqnheflped`Ybmnoz{echf`asjiijiig]]`npq|wɡmhiqvtfe[bfcqb[a\df^_`bgfjkjh]Vdhkrq}~ǡydlpt|vibglepcaab`bc^c`[hjkrtlihihswgjfjjqrwoj`_mmrqlca]`dgaga[`x}jiqr^"mps_`lwprb`bssttmjfdbpbmn\Vdq]Z[^ww\i\epp}ckg\ftuslintkttzTa|\Z[vwlpiepiqoptrjjkxtljffsnyzWi|^`\\nwlztxyxeitvmmumklmxqypkjghsmaopc`[Ygfkmihorxw{|pqisqvrjsvllaoauaa`dejwlzqiijhgioolgto~|zhrsvsikllp^[Z]`bd``mwq|yuumhgmnginnqntzhhjujmwixWVSSRZ`bhhlky{hgjlhgfimnpns{ug}ixnmiilk[URUSS__dknt}}vkkd__^hgnnpqzkm}mzmkki]T\XRY\[bckh{}m~jjstol^YXhgq}qpy|lkjptjkji_TVXWX[Zgkdejdqxngbk_x{_ftq[oXqongo{}|nlhmmkuvlmpiffUW_Y[Wdgfjebn}\eeghhe]XVXZYW^ccl[Yyiluy|cZagg^rswvwolhhgU_UXXi^ojedjiee\VVRTXYYQVWa`^noyvtswx{zkh_[RSP]vtl{meXgbceopnhiijccdc^aY[WSRWSWVV\aURyoXxxxzzxxkbYQPRhsxylx^d_^b[dklqjgjii`\[cdc[SY_[UVXWUWYRTgdx{|zmzlkb\T]Zy}ye_[dZhgsvbcjj``U[ebaZYSYZWXYYZTQQRty|z}kko{|{hcW\Y{ig__Tgfg^eggihg\ee]N^PTP[ZYW_d[QPQPXyy|nnqpxrgbTRiwo{z}tY_a^quln_c[W]edeXXZYORuvlg`SOYQW|smlmomakobUkpntsxajquvmgcWZ_KYYa]yVÒwn\Tacynomklmgglnpnjpwmmul]lfhnoslihQ^j[Ynmoramuclnjllmnooppln{db^]cenm`hkviXigaZkZZ~nsrϙvkmmlmmnjoqtsqzee[Z[Ycoba`s]VST_XYkktnnyΜrakklmmnrqturnnkf[XXbmhbbaYR[[UU^iZ_tu͜bZak_kkmsnn{rrlmlh^XYjiiabohVSTUUll`g䗏mxb[Z[`Velaprrnmjidhdgf_^^`TSVVUZ\`hސ|tvlx`Z\^Udjlrrцrnmmlbhccddf^^bjWVVXYZehedbdqrtt~kkZ`jjrsnlddc^aecghwcy_]WYZ\hhLmyptn}ccahqksymg`\norsqrpddcdc\\`_fpfyjsc__XeigFGJEDXO^M[aaZ[\koyqbbistzvkdccbc^Y`a_rsqqn{qbgjHFEEDILMQW_`Z_ibS`r~rk`_ityzdccdcdebgorsstsuy^^bhmIGEEGLIJMUV][XcVNMRikx{xsslmj_osw|eddncee__ciusnndVWW]iCFEFFEJLSTXYYhUSPPMRuu~|wuoonmmfBAFORFNEFHFIGJJDEKTPhehaQZSeeaX[NTZPofb^]^]ij]halk^\EFICBAEBEHMDFDNIM?AFGGFFOPV`SOQQWdd]_]TTEF^olTQR][][`akkgk`kQCCGCDCCDKHNMRTMKJEMIEFFIGLzdgOVV]^WW]XSMV\VSoSSO[[YVRaakhJif`BCBGDCDJJLPTORRUICGLFEFFGa_aTV[[ZWVT[QVVQSVeiSU^[\ZW\WXVDH_]ZFCDDCEDVVOTIQJOOJLFEFFIvepj\Z^[[hh\PSRQSS[`^X_[ZYXXWVUA`UEEHEDDHYXceQPKMJMKHHFFGPpihgffgeedSSXZa^^d[YXY_W\MBMHEFFEFFGZbab`eMLNJUNHEFFGIkcfeeffghimd_SZVUVZwk^gd_ZXVaa_EACEBBFFGFQZbb`bcQNUUOLEFHFFGQO_jlhhggiqngQiQPV`aXieehggYZalYIHBB$@FGHLVe``R`Y[PUTTFGEECFGHI\QTefd[fgqjwUmiS`hjakrzgmkhfb[GSOCBB@BCGHPQdIRQRPPNPKGIJFEFGDIPOJQU\\[fhxqjju[YVZilln~tqmlgUOLLFJDBC?AABMLOWWJK^NLPNKGGHHFFMHYJIJkig[]_dmqgeWYVWRXkl~exyig[NEEFFE@@B@?AJNSLWPQ]MKPJLFGDGINGQEMNDq^l[[klnmoaVWabb`nn{fmgbHJEEGFDA?@@AMMNVKKSGKMLIMRGVOIDMRTAACDfmpmdcammaU^jZbbd{~^JHFEEGGCA@CANNOXVKKJFMKHLJNMNd^KEGCCDfe\\bcablmn[wwcRunOKAJHHFHFGBMQNNLMRQOLNNJLKKLXYcN`JACDDEgmcVc^ekqmwwKSnm\FKJJHLFEUSQU^YQPQPMNOOKGNPNTTFQDDEDFhfa]Vcflns|x|VLLJPdAFKJIKNDGSNRVVUXQQUOSOTNVFZPDGHFCDFEFFHffaa`gjro|wRMLLIDIHKJIIKQMKVQ[FLJLQQYNNPPSKPYQSRBAFKDFFGFbbfbeiwwypVQMLKIKLIIKFGDGEKJLMNNVWNGHGMRXXPOKPZQObQRMGQILKEFHFi^beouvuuxyo^ZKKJLJIHEBCBBKKMRSSWiHKGHQPRWPJKJOYQYSMMLDEOQDFHM_ekrr_uuxn~SROQOMTZkg`_T^POJJEDFNORVWX^psoIHIKJMNNMLNb``\X_dfT]lwrqmjZPQRQQPXZ[ffaTTRPPJDHCFEQUSY\^gMNIIHHMNNMNJNY^ZZ`e`UT\XqwqkT[OOPRSXXY[[b^bPPNMIBCBBIQTXZ[]aQNIIJIMNNMMQTU^ab[a]UYU[[|TSRONSSYY][b_MLSOJBHBBJMYXY\^^[[OIJLMNOMMNWaffca\VUZZ[nlQPPLXZZYY]]bhXLKOJHDBHIJKMNZ]__ckIMKMKJPNMMLWfhb`\]ZVfdsYhdYORZZYZ[^]WLIIHFKKUYuhedUVMIPJKLMNNPQK[ji_f\[W`eoy|slHMRRVZZYWVSRJIHIIEJKJKKQVq{enfdZVOSOLPOPNPURMThfUdgdcoqr|z_NQQUXZZY\SSPKIHILINKKMNZhhff^UOPQHOMLQIOUUFUXVbhpqovrynUQQe\[lVTUSLJJGLLOPOKLLMMPUmecjaa^UVUMHKOMKKOOQMTVYmciqovwxWVSQQUjkvfd\QPJGLJNQOPJLLMMPXYqk^iZYXXHGHLLGEDGNNSUU`qiikquoZXRQRRkrfcVQROEPMOPQLIMMNWZdebba]ZX\ZRFEJIHDELLQQPR`hiicks{vdZWSRRUUYrkcRQRQQOKQQJKIQZ`V[^g^cx^_[[\]PDDEGECDMMNONociqgftvuqTPQVUk}{lRSRRQQKPGGQRY[XX[gdnoc]\`[\REDDGFDLLJMNNpghfuwrrLMRQb~~dSRQRROKGKFFQVY\[[\apv{e^_a^TEDEEFFGHLMNpggolsUTNPR^~hecTRRKOEEFFL_\]^\]\Ppyyc__KCJIFFGFEJMLkpjox\ZtfUTXVPSreeidVSRRQOKELKTU_a^]]WXPTXf`]SFADFFGJKKmou{wzym]UTQSTS[deddUSSQQMPIH_Tbg`__[\NQWdWTKIFFGFGHIJtyzzxx^[^TSTUcefgef\TSPQRFF\`cmmhfe]XNXYWJJIHFFGIJPw||{zl^g^\TQWanffggdVQQGENMZ\jlnnol^VVWYgMJJIIGGHGIJR|}{z|{pR_]dW[`ajngfg_KIEBDDPR[_noo`WWVvwUPMLJIIJIHFGKN||wz|lNM^\d``bdkweeIHHGFDJJSQclooniURST`_NMKLKJDIJJNYdOSSMMTTY[acmnmk`IHHGIILT^cgmnn`STSVVtQPMOPMDHJLMWONOOPSUOTQV^anidkPIIJGHIJN[_hiinbRTSTZwfXOPRKIJINNpVNNOOW[VWYWXilidf[IIHLJJRZ\`dijpbbYTRS[xz{w[RSOPMIMKNwpSNNPOOZ[UXY]jcifliJIJIIJMY`aacnop`YRRS\]fr^TSQPQLLKIaXRRMNMNUX[\YZ[[mddfZOMJJKNJ]``fdhoqbSSWZZfgcVONQQRKJKQVPQLJJ\b^a\Z`ddgdcLMUMLKQW\afjbnmaTSRS`aejVrOQQSSOPUTSINIINbdeg`cfi_]bRLKMLOX^aabaedqV[VRU[dd[RQQSUUWMOMIIO[hgilcfjiibPLMMUa[_baablla^_LVUakm|X`YUWWUUMINJJPJJVijjgdgimibPMQQVdccaaceKOUUZjllxpaSVXTOQIOPOMII[alhgkgnmh]UONQTaddcaacfdbOLKM\VdkkpVUZRPONOOMJIIJaglljmmnm]RQQNPW`cbcfaabXMOSLU__jttof]UOOMQMOJIM^`koohmmRQNQOQ]chmlYeUTNMROU\_`pyhOSPOMQQRYcmzpllmynQOHTUVNfh^mYWUNNORVa_oVQRKMNQQR]`[p|skopnThFJKKR]prvp^YXVSPOSTUajYQNNOPQQT\bnrtsxfsgnRQKJN]ctpooYRQQSTVV]aQSQOQPQQRR`Zfess{pia_ROMJLOnsqhnUSRQSTTVVWYbt|NPNOPPSXZYZ^eindcchcSLLMM[xyvsh_YRQPSUTTVVY___kxzPPRONPOXW[VV`ecffbbYXOKLLOPh}eZZUPRUTVWTXVY_XTUfx}PQQPPQRQWWX]dchgjdfaNMKKLPQs~||m[OVTRSOPUUVXXWw_QQNLOPXXcddokka_RKMKLO_q~~tomQQMTQQPRRUUVTWTSYφ_[RQTRMNQVWVbefukaeYSKKLNKippyarphTNNMNMOORUUSONONWa[SYTOOMMW`ak~|wlaZNPPNNdhewa\qdNOMMNNXTUVTUUVNNOOwPQR\TOUMMNRb}o~xkqqZQMMNNL^cacdYYQNNMUWVWUUTSPJKKLMNv~P_\NZ\OOTVS_ps~x}lYZNNU^gda`[WVNNMQSWXTTUJIIJNOzZOPMNZZVV`gpis~y[\ZXXWXSW^bja\X]WPPOPPQWXVTYeXJIIHHIN^w|x^QMMRXWVV^piijw__YXYXYWV_ac_c\TTRRQQOPWWQZ[fNJIIHHGGKPuz|x~OZ[LVWWVX_aggnwkcLYXXYZ\_``UUSRRPSRPPV]fddXIIHJNOWyxx|]T`XXU]UVVYbgg_`g[MQWXYY\a`_\USSRQPRPQPVfhfdJHIHHILNOoxx|WWRXWOOUUQacfggdaZ^KJJVWXZ]lz^aa`RPPJLRPRe`fhdLHIHGIIKOOPw|UWWROSORQcgfhhcg^YJSRSVh[`jnec`ZUWMKIHNU]ghh_MJFGHGGNNONW{WWVZQURNS[]dh`iiggUUJRPUkrclfb`ZYVGGFGOQYfdefgdIFFIKMNLMjW[XXWWPPOMNNS]__cgg^VONJJ_||~qknecU^XMEEJJW\addee]JFGILLMNNUWX[[XTULMNNM[X__``a`]]RNRmttushaZca^^TFOJ[_b`bbeebGGIKJLMMOOvQ\cTVRUONNPR]bcq``Y^UVfv~utmd]Z]W^_KMUU]Wb`abccWLJJKKLLMOOrzdf`UZVTTNNPOY[`cq]]fc]Y[pz}mebZYPPVWTLV[[^[`a``gQMJLLTNkx}ede\Q^TUUQOOP__pknbigbk`cqxtqfcVYOWMNY[b`[``ibSRMLLKLKKMLTQkT`]]eUVVUUSSQQRfhuomyoi`abbxuih[S^PONXX``a`a`V`fbQPMKKJKILKKMV}Wm`_UXVVUSNNQP_qvrootqk_abbam^^]^]ONXX`cac`aUUZihQQMMKKJGJHKKn}\^Z^VXVVUSNKLPOqqrt}yqqbpbak__h\SUUYU^`^_aa_[\_``WSNNLNNJFIJJKM{QZ_[X\WVUROKHMZ`lsyyxqwjmccmfjbUWUR^__a`a`_TUVXXkVNMNNJFIJJMVYZa[`]TSTSPQQ]oessqrmhhjfc^cc\S\^^__a`a^Y]UdhXSRRONOJGGJJKKLZa[\^aaTRSVN]j[fhppsruxjed`_]\[Z^^_`a__`X^cdcSSPOOHHFJJK`T^Zb[UTUPNQ]\iifkpss|qpf\][[WV\^]``_`SQ``^bcv^TTUNLGHHKKJJNW\blkXnor{hxNLJLIHNUgc\[OYKKDE>?AJKNSTUZjkgBDDFFIJJFGFFGFGZYXTRV\_LVfqlkgdTJLLKSUVcb^PPNLLF@C?AAORQVXZ`EHEEDDIIJHGFFGCGRVSRX]XNMTQkpkeMUIIJMMSTTVW_Z_LLJJE>?>?GPRVWWYJFDDFDIIFJMNVYZTYUMQMTTuMLLIHMMSTTYW_\KIOKG>D>>?KMVUVWXXSRKDFIIJJGFFGQZ`_\ZSOMRRSf~eJIJEPSSY_gVIHKFE@?FJJMWXX[cDJGIHFKHFFEQ_a\YTTQN^\j|{Q`]SHKQSSTV\\TIFFECJJKQUma_^RQJELFEEFFHJDVccY_TROW]fqtjdBFLLOQSSTSQOGFEEBIJJKNQhr^d^\UQKOIEHHIFIOKINbaOZ^[ZfhjvtrXGKLKNPRSSXQQMHFEFIFLJJKJJKS`_^^XRKKBHFEJCIPQBPSQY_ghgmjp{eNKKLLM^UShRQRPJGGDIILMLIJJKOe[[aZYYPQQGCEIFEEIJLHORTdZ`ifmnovPPMKLLQeexpa`YOMGDIGKNLMHJKJJLRRfbS`TRSRRCBCGGA@?BIINQQWh``cilxgSQNLMMfz~la^TOOLCMJLMNIGKJJKQSZYVVRSVTMAAEEC?AHGMMLMW_``Zbkrm]SPNMMQRU}mf_OONLHNNFHFMUZPTV[RWmSURSVWK@@ACA?AHHIJIfY`h^]km{liNKLRRfxvufOONONNHMDDMNTUSQQSS[YabVQRZVVMA@@CC@HHEHIIf]_]lnj{lGGML^y|xw_OONNLHDHCBMQSVTSSTWcinYRW[WOA@ABBCDCDGHIg]^eckONHKLZyd|`^QOONNHLBBCCHZWVVTTRFdl{q]ZZG@FECCBCBAFHGbfafnSQj^ONSQKNmaad_ROONNLIBHGPQZ\WUUMNFINaZXOC?ACCBCBCFGGcfkrmqpdTMMKNNV`a``ROPONJMFEZP]aYWXSSDFM|_SPHECBCCDCCEEFjovupqooTRVLNNO_abcabYQPNOODDX[^fgb_]UODMN~SFFECCDFGLnsswvqqcT^VTMKR]ibbcc`SONECKJUWcfhheULLMNbJGGFFDCDEDFGMswsrqrrgHWT\PV[]fjcbc[IGCACCNOUYhhWMLLklQLIIGFEGFECDHI|rrmpsbEDUT\[\^`gsaaGFFECHHQM^fhhgbJGHJx\ZKIHHGAFGGIyOZEJJDDKKRU\_ijig]GFFEGHJQZ^`fggXIJHKKt~znMLIKLJAEGIIwNFFEEGJLFLIPX\kd`gMGFGFFGHKWZbcbcgZIJIJPk~xaSKLNHFGGKJgNEEFENRMOQPQdge`aWGFFHHOVX[^cdi[ZPJHIPmntpVMNLLIFKGJngJFFEGFEQRMPQVd^dafbGFGGJV[\\]hhiWPHHIQRZ}kXONMLMIIHEXPJIEEDDLORSRRTTg^]`TJIFFGKGY[[a^bhjYIIJLOP[[~\PKJMMNGFGINHIDABAASYUXTSY]^a]\GHPHGGMSX\ad\gfYKIIUVY^vQjKMMOPLLKAFAAFXZ\^W[]aXV[KFFGHKTZ\]^\_^iMRLIKPYYysUNMMPRRQEGEBAAFQ^]_b[^a``ZIEFHO\VZ]]eZUVBMKW`aq|}~R\URQQLMFAGBBGBBL_``][^`d`YIFKKP_^_]\]^\]]AFKKLP^ab}x|~pk[NQPLHIBHHGEAAQWb^]b^ed_UMHHKN\``_]]^_][FCACSLY__e}}~|yPORJHIGGEBAAW]bcaddedTJJHJR[^]_a[][PDFIBLVV^ih~{fvaVLGHFIEGBADTVaef_ddeKJHKJKX^cihR_MKEDIFLSVWf~}~qcHKHHFIIHIIPYcrhccdqeJHCNOQIbczXhSOMEDFKMXV􏃀fOIKDFFIIHISWRgtjchhfM`ADEELXkmpjXRQNKJGLMNYaQIGFHIIHKSYdklkq_l_fLJEDHW^ozjhjRKKMOPOUVtv}IKIGIHIHIIVS^_lltib\XLIGDFIhm~lciNMLKNNOPPONWgwvpuGGHGJPQQRX_ch^]]b]MFFGGTqqomcXRLLMPOONOT}ST`lnrGHIGFHFONRNNY^]aa]\SSIEFFIJ`|v{^SSOLNQOPPMNKNSNJK\lqHHGHHIHNNPW^\cbe_a\HGEEFIJk}vuuzgSKRQMNJJNk}WHHECFGOOP]^_jgg\[NFGFGHXhvvlhgLMJQMMIIJNLLQ}{WSIHKIDEHMOM\`aqg]aUNFFGIEbhgpYjiaNIJIJIJIIJJIJJIGGHGO~YSJPKFFDDOZ[g{xsh]VJKKIHI\_\nYTi]HJIIJIJSMJLIILGGHny|HIISKFLDDFI[ykztgmlULHHGWZYZ[RQKHHJIIQSNOIIJIIEEFGlzrHVSEQSFFKMJXjmztzhTVIHIIOW_[YXSPOHHINNSTLIJKEDEDDEFGozvQFGDEQQMMW_jbnztVWTQQPRNQWZcYUQWQKKIKLMSTQMR[OEDDCDFUjokuUHDDIONMMVibbcrZZRQRRQXY[X[UNNMMKSISS]HEDDCBDHilnkrqFQRCMNNMOWY_``gqe\FRPQRTUWYYZOONMMKOMJIPU][[QDDCDEFGMkjkozTKWOOLTLMMPZ__WX`SEJPPRSTW[YXXOMMLNJKJO^_][EDDEFFbjknsNNIONFFLLHX[^__\YSVCBCBNPSUXguY^^\NLLEGMJK]X]_\GDDCDCDFFEinLNNIFJFIH[_^``[^VPCKJKObV\eia_\WRSIHDCHNU]`_WGECCBCFFDMnNNMQHLIEJST\`X`a^^LLBJGOf{n_hb^]VURCBABHJQ^]__`\D@ACDFFDEaMROONNGGFDEEKUWW[^_UMGEAAXxxzlgj`_QZTI@@DDPUZ^^__WE@ACFFGFLNORROKLCDEEDSOVVXXTJFJgppqod\U^]Z[PAIDTW[Y\\__]AACFDFFHl~HSZKMILFEEHIUZZiXWPUMN_qzqph`XVYS[\FHPNVN[YZ\\]QFDDEFGFJHip[]WLQMKKEEGFQRWZiUT^[URTkuxia^VTLLRSNGQTSVTYZYZaJGDFEFFGNHcor\[\SHUKLLHFFGVVhcfZ`_[d[^mspma^QTJRFHRTXXRWYYc\LKFFGOKbJWTT\LMMLLJJHHI^`ngeqhbZ\]]sqedWMXJIGPQWXVWWYXPZ`\JJGGFEHECDLpNdWVLOMMLJFFHGWinkghlieZ\]]\hYXWXWHGPPWYWYWWNOSaaKIGHGGFCECCcqSUQUMOMMLJFBCGFijjluqii\k]\fZZbVMNMQMUWUVWWUSTXYXPLIIGIIFBCCDoHQVROSNMLIFB?ESYelrqqipch^^hac\NPNKUUWVWWULMNPNaNHHIIFBCCDMPQXRWTKJKKHIJVh^llijfaazda]W\]TLTUTUUWVWTPTMZ_OKJKIIJFCCDQXRSUXXKIKMGWdU`biikjlpczz^^ZXVUTSUTTUUVVWUUVNTYXYKKLJIJDDBDCCWKUQYRLKLGFIVVcc`dikkrixwxh_UVTSMMSTSVVUVIHVVTVWjTLLNIICEDGEDCIMSYbbNefgq`oGFDFDBIO`[RQJRFFAB<;@ACBAAHQVVSQKFEIJK^uz]}BAC?LONNRQU\MBAEA?;9?BBDNONNQY:?=?==DCAA@?=HVWRPKKIFVSassJXVLAENONNORQMA@?@?=BBCBBHKdWUTGF?;C=>?AABC@B?DBBJVUTTNGBCD=CA@D=CHH:ILIRX_`^dags^IFEFFXQO]IHIHB@@=BBEFEABBCF\RQWOONGHH@=?CA??CBDAHKM]SY`^defnJJGFFI\\oeVUNEC?=C@DGEFABBDJI]XJVJII=>BA<;9:;B@FFEGRYYSZaigXNKHGGIILr`ZTEEFFGEAGG?A?EMRHLORJNdIMIJNOD::<=<:;CCBDEDaTY`XVacqgcIEEJI[lji[DEEGFFAF<;CC@CDD`XYWef`xzqbAAFETkokjSFGFGGFA?>@CDD`WX_]waxzvIHBEEPlXnUSHGGAE;:;;@QNMNMML@[crxiVRRA:A@=>=?=>=>>?BBC[]djhji\OHHEGGLUVUUJGIGGCF?>QGSWPOOKL>@GsWKH@>==>>?>>@AAcimmjjhhPNQGGTVWXVWOIHFGG=HIvK?>?>>?ABFellnnjj\PXPNGDIR^WWXXUJGG>>?@?ABHkoljjkk`CQOVIMQR[_XWXQA?=:<?CDuskkfik]@>ONTQQSU\hVW??><@AIES[]]^\XFCDExjPOAA@AA??@ADOQXX\RCDDEKct|xqiUIAEGBABBFDyx^HAABBJLGGHGGY\ZUWM?>>AAHNPRSXY_RRIDBDJef}~|rdaKFGEFC@EBDc^EAA@CCBLLDGHLZSZV\X?>A@AADNRSS^_PICCKLRwtzum]MGGFFCDBARKDE@A@AGJKLHIKK]SSVKBA?@AEAQRRWTX^`QDDFIIRRp}sxtooQIEDFFHB@BCICD?<==MRNPKJPTTWSS@BHCBAGKOTWZR]]REDCDMNQUirx{zpsqtqI_EFFHIFFGFF=A<HGRYZhqpmoprouyyuyKSNKKGHA=A==B<=@NHSXX\mmlmrwtzzunkIILDCCBB?=;;GPPWa`ppmluyy}p\hYPEAC@D?B<;?OPZ^^V[[\DCAEDFRW\`^JUFE@?DAFNPQ^opqnpyyxz~oeZCDAB@CCDJR\i^ZZ[h\BA=HIKCZ[qP^KHF@?@DHSQqorwwxxtqp\JCD>@ACCDNQK_kaZ^_]FY<>??FQdehaPJIHDCBFGHS[rsrzxzrrqoLCA@BCCENS^acagVcV]FD>>BPWgqb`cKDDGIJIOOtwegmwz}wuurqypCECACBCCDDQJVUbbk_YSQFCA>?Baeve\bGFEDGHHJJIGOZgga||zvpt~qjABABBEKKJJNUX^SRTYUF@@AANjjgh\RKEEGIHHIHGLtIIT^`d{wutw|}BBDB@BAJIMGGOURVVRSLLC@@CDY~upuYLMIEGJHJJGGEGJD@@O^crvsq{BCCBCCDCIIMSSXWZVXTBB@@DEewpontbNEKJFHDDFEEDED^ryx}RCC@>ABJJRSS_^^TRGABABCQappfbbFFCJGFDDFEEBECCFplyQNDCFD?@CGHGQTVf]TXNHBBCEA[``hSdd[HBCBCBCCDFFEEA@@A@G~oSMEKFAA??HOPZnkh^TNEFGEDDUXTfRMbXBCBBDBCLGFGDEDE@??A@dsjmwBDDNFAG??@CSl^mh]ccNFDCDDCQSQRSLLEBBDBBKLIIFFEC@@??akucut}BQN@LNAAFHEP_bmhm^LMDDEDEJQWTQPMKIBBGHLMFEFGB@@>?>?alp{hyLAB?@LLHHPV_XbnhMOMKKJKHKQRZQOKPLEECEEFLMJGLVJCA@@??>?K]b^grqyPC??DJIHHN_XYXgRRJKKJKJIOQSPTOIIGGFDDLLCMMXDCAA@??>>@]`a]bbALM>HIIHIPQUU]g\S>KHHIJMQQRIIHGGEHGDDJOXVVMAA?@@?@F_\]`jyOFRJJGOGHHJQTUUTLOWK=AHHJIILRQPQIHHGFEHDEDJXYXVAA@?X]]`e{IIDJIAAGGCPRTTPNHM;:;;FGHJM]lPVVUGFE?AGDEWRXYVCAA?@?>??<\atuGIIDAEADARTSUTPTLG;BABFXKR\`YWUPKMBA>??>><=WDMJJIIBBA?@?CKKPSTME>=99Omloc]aYXJTMC::>>JOSXXYYO>8:;>>=@>CEJMMJFG>?@?>IFKKLLMNKKB=B]eefd[TNWVTTJ;C>NQUSVVYYW99:><==>@@ycvqCNUFHDGA@??AAJNO\LNGLDEUfnfe^VPNRLTU@AJHPIUSSVVWJ<;;=?>DA`}hsuVXRGLHFF??B?FHLO]IJTRLHJ`jn^WUNMEFKLIAKNNQNRSRS[A=;>=??@HA\hhuWVWNCPFGGC??@LK\X[PWVRZPRahebXVKMDMBCMPVTNTSRR\TB@>=??@AABIEZCROOWGHHGGDDAABTUb\Zg^XOPRQhf[ZOHREDCLMUUTUTTSJSXSAB?@@AA@@CA=>DhI_RQGJHHGD??A@M^b_]]b_ZOQQRQ^PRQRQCCLLTWUWTUIJM[ZDA@AABA?A@>==\iNPLPHJHHGD?;<@>^__bjg__Q`RQ\QQ[PHIINIRTRTUUSONRRQIECCADEB>>=>gCLQMJNIHGD@;8=INZagff^eW\SS^W\TIJIGRSSRSUTUTRGGHIGYGBBDDB>>=====<>=?>=ETJHDYYSSVSNTLW]g_zkhRto]NNJLTZTOMOHHGDA?@MMDDVOXYYTVUSUV[\XYWY_qszMKW\\MPKJMKDB@@>ADLDLLVVXTUTUUWWXV\{ҶoTRV[[NRTOPLLAAC?FEDFFDLQWURUMRVWW\XXjfuԶz^[SaZPUUVTMQLDIHFGDEDDFDGUS__WYZXX[bs跻fs\RRUTVVRNQMLLKEDEEDFNQOQ^X^\\XXYXY[^z漻zyRSOTNTMLMM?GGEDEIKKMNOOSW]^\[Y\YX[\_yyiUdNIIKMLLCFGJDFILIOMOPLRU]^\^Y[X][]`wypz~wTONJKNMHBF?KKGMKOOMMOQWW^ZV[\Z\^_p~pqps[OOHCKHBCKOJQPLNMOORT]]UY[W\_qxpportuaUUQDCBCLISRMQRROOQPP[UTTSSRUS`bplppktPCCHQRRORQRQPRTUUYVRRTRV]OdopkjopqThTMQSQQMRQWQQSVRR_Hnjoroopvĺy`oSPRSQMQRRPPVSSTRRSRRTTGMhmjqpqs߸vYRVQPPQTRUVVTSURYTQQFMehppnpzbRRPQQVVTUUXYRSSOSQX`]]Z^XPRSRRMROSO\\RKRQNKMKOWPMQS[ZWRPJKJJMNLNONKNNSQSXWZVQDCMSRI\UXYRSOQOONRh[YZ`YXMGO]UOQPM\[[TWSJMKKOHOONONNOSSXZVWDBCBFTORZYSWTLNNO\g[Z_[]WZdXYV`TSVPPZSRJUGGLLPUOPPOOMNQQRSSM^MICBLOQUWQSLQOPFNYgg[cgehdgj[hgcZPQLMJSSJCSIHEFOSQQPNNPKJKNLGTQTKIENJKNEFTLDNDNLNe[QZZedXjm[``fe^PSMLNRLHVIJJMMEPRPPJFJDHHJLTQXZKTTNSTGIJCDEFBBIRNQZUZb^]Xl\]bh^X_LJJLJJHNOFHTJQQRQJMIEEDDJIONRZYSQOX_HDDBBOFBCJRTUTVVTc`]Y[Z\[[aWIKKJGGIKNKMMPRSMGNFJKDJIHISQYZTSQRUT]FBBDBBEKTUSNSMM]c^UZjd\fWLJJIGGIHIMMNQQERPRNNJHEHIIJNXONNRRXbRBBABBFJESTTLSVLPSZU]fgegdaGGKFHFHIKGLUCMQFPUQNCIIJIIJNPRSQ`WKBEBFCGGPU[PVQGOPZZWYUUeecWZMKJLJKKLLJKGQUOTTLIHJJIJNGIPQY[^HEJGBLILLMSNNLZOYRZVZYeed\TKLJMKKLKJKKNTTUTKKJJIKKEONPS`YY]RVQJQAPNHGKINOYSRXZXVWceWS]XWLKWOLMKKBJVVMQOKJKJKIKMLEENHOYgdppYYA?CHILDDHOOQZYYZXYOXWLFGRRX[SULLPLJFIGGOSQSQKMQOOMLNLCGLFO`ass[??ADDMBDKLOUXTYYZSQNXMKKFVSU]ZOLJFGEFFGNPLKSUWOOEGCEGH[ssre?D=?MHBIIKENNSUYYZPLUMLKTQVUSXOLIKFGGFGJMKOSTRPRRPP@GIGGHJ_hOOm_EGDCCIGHJMMOSSV\YUIJLKPUUTRRXWMDGGIJMSNOSTTROODEJLGGL]afPxkVK@@ACD@KKMNLFGZVURGILQPVVRWY_VNHGGIGHJIPRQSSRNPQOOFGGRV[iYc|qWA??>?EJMLDBEP[PHEFJKQROMLWXcXUGIIGGNILTSRSSQPPOOEHGGJQ[beiweAA>?@AFLAGDJOWPLFKJKQRVLMWWYXXWJIMKPNTKMQQSRRQNGHHGGHLT]`cieqC@B?AC@BCCDNPOSMJJOPRVIULXWWXYTORWLMHGKPPELKNPCGHHGGJL^_bfikhfKICC>DDACCMTNNSOLOQNMKHIPWVTRVNQSYVLEFGIMDCGRNECEHEEI[X\Zf||]hnTISD>@E@AABFLXSMIRRQLLGHUTRMRNMRPU[TKHHGBGBBDMB?C@EEFI\YZTVoz[YMcc?AABEQOHJLFLSPFHLKNPKHMNMGHONOJHHGDCCBGV??@?@DCDLPXRSQOVNIN^{YF@DA@ANJFGFPLEKPGGHRGKIILIHGJOMTUIJJHBFGDE?@@EBDDCKJPIILQNILnmmsEOOB@OIEDDGCHFFGGCFFJIIEFFOOQKJFMIKNLEAA@@FHDDBGHHIHJUNNfb||rZc_EEDECCEBBDFFGFHFKGKNMGONMHKLNMRMJJIIAA@CBBEHHX]\[lyuFE@BCBDECDCCDBC@@DDCMIFOZJHKMMPQQGKJB@AABEDGHHGOPVQXZOMH@=BCBFCBCDB>B??@BLKESGINILOYPRLFLKHBCBBECHHGHLHNMIlqxoC=ABDAADBCC=?==?=CA?B>>=A>BFKKQGFMEGLNNLIIHLLIDEHIIHHGKHJHHGFFLNSFESTwogKaDD?C==??=@>B?CFLQLHJMILKH]WNOLMOJIIGDGHGHGGHELMGFHGJKXPUTWVmWD>?EC?A@>FEC@CDKKIFFMOLL]`SRURJMIIHHEGFLFKQGKLKKHFLMPVWJKoCDABECCA@DCACFHGEILCnyVW^[TJJIFIFGIGGFCEDDGJJIIKIJJSTTmLGoEEDEBBCA?DEEHIJD>=|}b`_YPLNOEIJGFFGEDCBANFGGJJLJNSSYULiwvZWFRCCBBA@LIHII<;}gqpQQIDBNIKGFFDBBDIIBGJBJJMTRNOYvvhmYYRHBBACEEHMIA==i^FGBNNIGGFFEBBABBCGOMKJQMLKPQPPjjmlFXDCBAA?GHCCA??xvtbLJJRNGEDDAABJC@GBHQQSRMPUUOJNQNBJvS|IEC;;@@xyqHJORKKCAABHJJCANAPPQRQMTTUNONQIDCC~t_LoAmkRDYUjhhJJAACDEKC@CBIIJSNQUSUUOQQIDHMT_~Gqjms`mPJBAABLFFCBCDCEE>>NMVOLUOSOJNKHGYllunpMiwq}EEBBPEECBCC@?<>KKBBTLUVVPQQNPQVWRSQRWgi}soFCNTSSEHDCGF@?>>?@=DCBDDBINSPNQHMQRQVRRb^g{nTRKXQGMLMKFJGAGFDEBCBBCADQMZYRTTRRUZf}\hSJIMKMMIFJFHIJJICBCCBCIKIKYRXVVRRSRRTUum{rtooJKFKEKEEGH>EECBCFGGHGIIMQWXVUSUSPSSWmlqrr~~`LZE@ACEFIAEEHBDFIEJGIJEKNWXVWSUQUSTXlndnq~ᨥmJEEADGKFAE>HIDIGIIFFIJQPXTOSTRRTUgseddfsɥ~RGGHCAIG@AILGMLGHGIIHLMWVUTNOSNRUhnecbcef̨XMMJBBABIGONHLNNIIJIISMKKJJILIVWhacc]eyzvMABFOPNNJNMNKJKNNMPMHHIIJILRGXbc^\aac榤OcQKNOMMGMKPIIJLHHIU@b\aeaabgr\gNLOPMGLNKHIMJJHJIIKK>D\_\cbcfvڣzoUORMKKIMKLMLJILIPKHH=DZ[bb`cl{]NMOLKJMMLKLKOPIJJbd_gRaXdlfcdfljrpynplklpkatenu|~xzvwwvwtqkkme]]cbZW\ZZgbaS^_V\c^dfagfiptoo|pnpqqjtovjzq}uwwsqoqgmnoe\ex\e_]eiai^iiX^cea``bjz~qxnvz}usttsrqt}zywozfijqurihdhiiacc[eY__aeyytspssju}z{}ln^hb^^\[[\[__`g{ussxts~d_^\\cW]W_Z]]Zbp{|xxvsoitqyvrte^\]\^^\W_^V_bblz{yyzyutqmq~rqqs\\^Z][_X[cnnrpz|mjlywtsppwmprvz||{t\^]\^\^][^]^cbnpouqknulrrpmnlmlrrxv\Y]\_^]`Z][W\lnoqqpkhqlkoommle_nxx}Y[_``\b][WZWZZehqtllijhjlmmlmj__xxyxڼ[ZY]^\[c\XXYY]nnotvlihhionjnlmxyyxy{򩡡Ǽ\TTRSZZYY]XYY[[_pslhghjijnnonqxxyyxy{򹺹ZWRRUWUYYZY]^kqsgghmlgm\btxyy{ZWRRTRU[ZYY[Znz}porii[Z\[Zxxyyz𾽾ZRRSSTRRYXXZZ[_\zouotl\]XYW\xxzy[[UUTTXRZZXU[][ZmlqpnncbWf`nxyzﹶ\^YTTXRRZX[]]lglljmlkkm[dhhnxx]^^TTXZVXTZ[[]\ghggjmmkmmbngi`ju^\\XZZY[ZZY[[]adeallkjijh]g`ike~鵳]^[YYZ[ZYZYY[\\e`]cblla[i_]`^`jiku󵶴][[VZZYZ[\]^c^admc[[]k]^akgns|\h\[[ZZYWXY\]dd[^[cc`Z[_]ga`ljjqƷc[ZXXWWZZXZWZ][`gb[abadc[]^^cedamnnu}ʼSQPSWTVVUT\WT[efal]_[^_bba^`ahikiqquv}OQTNLQVSVU\UVUVULX_Za\^cdbcejhgfhjlqutOOIJNPOTXYVYUUXZVVY][__ecfgghjfejiinrINTMMNOOV\[VTUTTUVVW\YZ[bafggidgiijjxyzSKHKNVRRY\TVSTTUVVWX`YYbgffgfijijhivqxX]UITSRUUXYRMSTUUV\X[ZYefggighmjifin}S[USVSSNORTTONMRSUVfe_[Z`eegjijejjk|넀~UYVUTTPNPTTSRRGTSS\kjcbb`cfeglmegiijtt|}~uVTTWTUWTVPRSTSUTTV_`kkhYb``gge`fbhimms|ntuqWSTTXVSQOPTNSVTTWikgkb]fdbefagk^`dbZ_monvy﫱UVTVYVVXSQQV_`TTUigjjaa]afga\kc_`XWeblmlg}vurrPNUVVX\QXVXWXWTTWhfcfb\]]aYZV]Y\VUd]bjmkhisxxuz|}zIMY^ZUSRSUWW[XWTTY\_eb_ZZ``\UUVVUWUTaaZblkcjrryxuu~FIJ^`VRRVWWVVUZXUZZ`[XY\[[URTXWWVU[ZV[[ckjriwitfrt~}|yFFNVKPQRRW^WVYTWZT[X\YXXZWTNRXUWWVWTUSTUVVRTbghi\^az|{|rssz}HHFGJLTXSRUVZWUc[T][[]Yb\XTQTTRVVWWTRSSQPNNPXZ[\XZZfp|qliqoo~y|zJFIHJPVQRRVVWZZ]badZX^XXTOTPTWVVTVQSSRNNOOPRXZZ[XY^mgh]opq{j~}KMIHJSSVSSUVV[Y`^dffdZdZYQORNPVXWWOPOPONMNPSSTVVWV_]\\concbbGFHNIMOPPTRWXWYaaeegfed_cVOWVXVSTXOILOOPOONPPQPURRUUQZ\Zdfhc``IKGHKHINOUVPVY^_adffecdc]W\^VVWONPOPQQOOPQONOQQORVZZ]_`a^`__IKLIGMNNSOTUWVW]bffeffebdcb^]]^ZRQQOPQPPONONNQOVX\_``_^_`GGIMFNNJRSRTTVWXcb\edeec[aZVVWXXVQOOPOOPOOTNNONNMWWYZ]`\]]ZNIFFHITUTPPTQZY_cQVcdeaYcfaWVVWWVVUQONPPOTQQjbgSONMNV[^SW]^]]^^_GGELRTORPTW[YY]ZXSV[_YY]^__VVXSR[\UPTUglo~~TSNN]^__\[Z][X[ZICGGiUVQRUV[[Y[aXWZ[[OZ[gf_WVVUVSU\^ZVoop`zx~jNW^^\ibega[lh{shXc^^_Z\XZ\[\]R[aff\^d]VRUTW\er|}yvjvnk\]^^__`fjjheiXu__\]YYX[\]ZW\de\ca]WVWVVXY^~wp|vtkgca^^]_chbhcihYqe_\YYXXYXZZ[XYSW[[ZSRQWWZ`ux{vjjqd`[]]^]]^bcc^_kuwrrYYXZYYZ\SSRUZVUTURRTby{tpz}mkghejfdrpqpkaXWkrmy^YZ[YZZXUVRRUVRTUTTY}|{trzv}}||~|{rqqpgaYZdkply_ZZYYWQSYWZVVWUlitoslsuz{~qqmgbZYWdnjrxecZZYZYYTVSUZZXTUWXX|iskmlvsrpplk\]Z\nnjevxfdZ[Z[ZTVS_ZY`i_kw|nwz~inhfguyeppooc_]]mjnexvx[bd]ZUZ_bcjt{|~zghnkyyzanpolb\]\]igntsqxtvx~sjlhhm~}|jconor|hilo`_W]]^hgnqlzvusx}zwp}~~popp{ybligh`\\]]fmnrmlywvstz~t{~~nr~r`b[]^YYZ]\\Zlenlkmq}{uws}u}~{qpl[\\[ZZUVX\[V]h\dnspsttztw||~sja_\Z_SWVY[ZU]_\qilnolprrxtzzy~ucZZYZZSUVVhfldY[V^IXO[c]YY[a^eclac_^_d_Vj[ckr~utvuunplnnlhccd]VU[[ROTRR^YXJUVMSZU[]W\[^cgbbocacef_idl`puyv}}ugsknnigeg^def]U]woT]WT\`X`U``OUZ\WVVW^mqdkainqihhiggjsvv~xxzqpmen\^`hkhxyy`_[_``XZZR\OUUWZtwstvwvsmnhhfii`kw~}}}vsmnp|âceU_YUUSRRSRUUV\wwvtvw|yoighhiinjiwwq[VUSSZNTNVQTRPWcvwwrvuopkljhe^jgolijxy\USTSUUSNVUMTWW`mnwuvslmmigcgthghhjySSUQTRVNQWaaecmo`]_lkhhdflcfhlqssrkSUTSUSUTRUTUWWacbhd^ah_ffebcbcbhhomzz}|}RPTSVUTWQTRNS`bcddc^[d__cdbbZUdoovy{||tPQUWWSYTRNQNPPZ\dg__\][^`abbc`UUnooz񦧪RQPTUSRZSOORbbchi_\[[\cc_cacnooqRKJIIQQPPTOOQPSdg`\[[]\^bcdcfnnooq򦧦QNIILNLPPOPOSS_eg[[a`\bQWjnoopQNIIKILRQPPOPQQObnqsdcf^^QOQPOnnoopwQIIJKIIPOOPPRVPotejdi`RRNOLRnnpovzQQKKOIQQOLRSQQdcgfddeYYXL[Vdnop~念STPKKOIIQORTSc^ccadcbbdPY^^dnnzTUUKKOQMOKQRRTS]_^^addaddXd]_V`k}USSOQQPRQQPRRTX[\Xccba``_S]V_a[|s{TURPPQRQPQPPRSS\WTZYcbWQ_URVTV`_`jx󣤢TRRMQQPQRSTUZUX[dZQQSaSTWa]choz󥣡S_SRRQQPOOPST[[RURZZVQQUS]WVb`_ezĥ\TRPPONQQOQNQTRW^YRXYX[YQSTTZ[ZWcbbhnoʪMKJLOMNMLLSNLS\]WcTVRUVYYXTVW__a_eehhmnIKNIFJOKONUNONMLCOVQXSVZ[Y\\b`^]]`aeheyzIICFHIINRSOSOMMPRMMPTSVV][^`_`b\\`]]bdwyDHOHHIPUUPMMKMMLMSQQSZZ^a`a\^_^__jjkxOGCFIQMLLTVNOLMMLLMNOWQQZ``a_aa``]_hbjTYQEOOMPPSKEKKMLMSPRQQ``abcaada_\^bprsOWPNQONIJMOOIFEHJLL]\WRRY__adbb]``_``ppwrpRVRPOOKIKOONLK?KIJSba[YZZ]`_aff\]_^_ihupqrhySPPSPQROQKMMKMLKMVWbb`Q[ZZba_W^Y__cbhoahieyTPPSQOLIKOHLNKKN`b^cZV`^\__Y^bUW[YPUadbwwsxhjuzRROQUQQSNLKOXXKK`^abZZUZ`aZUcZWWON\Yaa[vqhhddqt~|LIPQQSUKSPRQQNKKN_]Z^ZUVWYTTPURTOMZSX_b`\]gllhlnqon}{{|DITXSNLKMNQPSPNKKPSV\ZWSSYYVOPQPOPMLXXPXa`X_fgmlhssjss{z|}~|{BDFXZOJKJOPONNLROLQQWSPQUTTPMOSQQONSRMRQY`_g_k^h[hjrrzosmywyz{BBIPFIJJPWOOQLNRKROSQPPSQOIMRPQQPQMMKKLMMIKX^^SUXoqpqghinpss}DDBCDFMQLKNOSQMZRKTRRUQYURNLNOMQQNJJHGEEGOQRSPQR\fqgb`geerlomGBEDEKPJKLPPSUYX[QPUPPQNJOKPRQQNPIJJIEEFFGIPQQSPQVd^_Uefgo_qqIIFDFNNPLMPPTRXU[]][R\SSKJMILRSRRIHGGFEDEGJKKNNOWVUU[fdZYYEDDJFJKLKOMQRQRYY\\^]\[V[PJRRTRNOSICDGFFEGGHHMKKNNKSUS\^_[YYHJEEGEEIKPQKQRWWY[]]\Z[\XRXZRQRJHHGGHHFEFGGHGHIKKHLOSSVYYZXYYFIJGDJJOLPPRQQUZ]]\]]\Y[\\ZYYZVNKKIGFHGFFGHGHHKIPRUXYYFHJDJJFNONPPQPR[YS\[\\[S[VRRSTTQLHFGFFGKGGHHQRSXZWXXUMHEDFFPQPKLOMURXZHMZ[\XQZ`\SRRSSQQPJGFFKHHaY_LHHGHPVYMRWYXXYXYFGGDINPJNKNPUPQUQOJMRVQQVWZZRRTNLTUMFJK\adtwtNLHIHXYYZXVUWVRUS|ICEEcQPKLONRRQRXONQRRHRTa`ZRRQRNNUWSMedeVnzmuubHPYYZXXb\^^ZTve_tj`Q[UUVOSOQSRSTISZ``VZ_XPLONPU]irupumk_ldbUXYYZ[acca]aQv{{lVVRSOPPORSTQNT]^U^[WQQPOQRW}vrqjcpjj`^[[YYXZ^b[a[a`P}~g[VRNOOPOQQSPRJPTTRKLJPPSYx}wvgjni__f\ZUXXYVVUZ[[UV`gmhgONOQPPQSJJIMSOLLJM[qxxmfblpxb`_`^c__igihcXON_danSOQRPQQOLMIJLMIKLLQu}wnmedlippqssq}iih^YPQ[_b`ynVQQPPMHJPNQMMNMd~}^hbf^egwl}~|ruihd^ZQPN[b^gnuZYQQPQPPJLILQQOKLNNOy{|q^g^`^h~}~|jiggcbTTQSbb_\km[}{[QRQRQJLJUQPV_Vamseoqu_c\[Zrrgyl~yZgffeZVUUTdab\mkn~RY[SQLPUYY`iouurxuqz^]c_xlyskwpWeffcYSTTUb`gkjhmijmxr|ug_a]]bqrqvq`Xcar~ttad}{uup^_bfXVMUU`hicqljhlrmvxjdttqrrxds{~|{aabwomXb`^^WSTTUU^efjedolkhhnowremvvrsrnr`dpeUWRTTOPRUSSTQd]fdbdhspikgnzxvfs{yqr~~uqncb_RRSRRLNOTRMU_S\ejgiinguhz~ummytqf^XVRRVLOMPRQMUUSh`cefbeffkfs~{pkgjjpxskYRRQRRLMM_]bZSTOWCQIT\VRRTXV\ZcXZVV]WNbRZagx|v|rihjiibd_bcdd^YYZTNNTSMJOMMVSQDOPFMSPVWQUSV[^YYfZX[^_Wb\cVej||wljppi[f_bb^][\TZ[\TNUleNUQOUYRYOZZIOUWQPPQVdh[bX`fjbabba_]`hxrrjjvvqkoildcbZbPSU]`^vlmm}~XWTYYZSUTMVIOOQTknjkmnnlfgba^`_V`skqpqvvqrnorgfs`acosᑐZ]MXSOPNMMNLOOPVnnmkmntqgb``_`c^]jksvvwwsqqtqtutudSNNLMTIOIQKNLJQZmnnimlfgcdb`\U`\d`]^kkwxrposuswvyxTNLMMOPNIQPFNOOWdenlmjcdedaa_Z]i][[\jpvrqqsqquzvzLLMNPLONQHJPXX\ZdfWTVdc``]^cY\]`deec\orprnmy{z{|LNMLPNPOMPOOPOXZZ^[UX_V^^[ZX]\b`llmlmsvomopzx}MJMNPOORLOLIMXYZ[[ZUR[VV[]Z[ZQKYbbhklmlexn|opuzxzKLPRRNTOMILIIJRS\^VVSTRUXY[Z[WKKbbl}~wv|xyp{zMLKOQNMUNJIIJLZYZ_`VSRRSZ[X[Y[ccbdx~z|~{zy򘗘OGGEELLKKOJJIL[^WSRRTSUY[\[]ccbd}}|}~}{z𕖕MJEEHIGKKJJILLW\^RRXT[JP`dccdrwz{|}MJEEGDGMLKKIJJKHYehj[Z]VVJHKIHddcdkswzxz}MEEFDKJIJJKOIfk\a[`XKKGHFJccedjmuu}|NMGGFJDLLJGLMJI[Z^][[\QQPFSM[cddqsuy~OPLFFJDDKLLILNMZUZZX[ZYY[IQTTZcdtmtvÕOPPFFJLHJFLMLLNLUVUUX[[Y[[P[TUMV_qsuuwPNNJLLKMLLJLLMPSSOZZYXWXVJTLUWPpgso}}ꑎOPMKKLMLKLKKLLSNKQPZZOIWMJMJLUTU^l}}~򔐑OMMHLLJKLLMMQLOR[QIIKXJJMVRX\cn}~NZNMMLLKIIJLMTSJLJQQNHIMKTLLXUTZnt}vz|~VOLJKJILLJLILNLPVPIOPOSRIKLLPQPMYXX^cduv|GEDGJGIHGGNIGMVUQ\LNJMMQPPLNOUUWU[[^^cdvyCEHC@DJFIHPIIHG@JOJOKMQSPRSYVUSTWX[^[nnCC=?CDCILMJMJHHKLHHJLKMNTRUVVXSRWTTY[mn>BIABBCDJPOKIIHGHHKIIJQPUWVXRUVV`abmv蓚IA=@CKGFFNPIJHHGHOIHQVVUWUWXVWTV_YatuuNSK?IIGJJLMGAGGHHMHJIHUVWWYVW[XVSUYgijuuHPJHKIHCDGIIDCAEFHHVUOJIOUUWZXXSWWVWWffmifv􊉎۔KOKJIIECEIIHGFBNRMHFEGHKKNKIGGKNPVSPMLQQOKKJEDOOGOYXOW]^cc_ih]fgomopqsonw<>@RTIDEEIKJIIGMJGLLQMKKNNKHJMLLHFLIDIIQWW^UbT^Q[]femdebljlmny<><=?AGKFEHJMKHUMFOMMPLTOLHFIJGKKGCCBA@>>AFHHIFGGQZd[WV^]]fbdcA@EJEEFJJMPTSVLJPKKHDIEJLKKLHKBCCB?>A@ABFHHIGGLXTVM]^_eVggBC@>@HHJFGJJNMRPVXXVLVMMECGDFLMLLCAA@?>?ADCDFGGFGOOMMT^\SQQ>D@DDEEIGKLKMTTWWYXWVQUJDJJLKHIMC<>ABBA@BABBFEEFFDLNKUWXSQQPPBC>?A??CEJKEKLQRTVXXWUVUOKOPIIKBABBCDBABBCBCCEDCEIMMPRQQOPP>BD@>DDIEKJLKLPTXXWXXWTVUSOOPMECCACDCBBCBECIKOQQPOPP@?AE>EE@HIHJJKKLVTNWVWWUMRKGGHIJJGCBBCBBCGCCBCCJJLMORMMNNKFB>>@AKKJDFIFOLSUCHUVWSKUWRHGGHHGGBAACCBFDDXRWGCDCCIMOFKNPMMOO@A>EIKDHDHJOJKPLJEHMQKKOPPGJDCJLECGGV[]ijiHGDDCNOONMKMLHKIsC=@@]LJEFHGKKLMTJILMMAKMXWPGGFGCDLMHF\\]PembiiZDHNNOMMWPSTPJo_Vl|bZLUNNOILJLNMNOCLRWWMOTMFACCEJS^fvkgkcaVaZYLLNNPUWWVSWH{oqq~eONKLIJKJMNOLHMUVLTQMGFEDDEGKp~lihaZg`_WTPONNMORVOVPVVHxuut^SNKHIJJKJLLMIJCGJJIB@@DDGMjypxml]cfaVV^QOJMMJKIOPPMNW`{xd_^HHILKKLNCDCDJECBC@@BOdjuxnd[ZdhpYWTTSWTS_]^]YOHGV]VxeKHLLKLLJFFABCD@BCBBFhzpyyldc[Ydbihhihgq__^_^UPJJPVZUmveQLLKKHACHFHEDDEECXpztpS]X\T[]vnduvtguj_^[WRJJHPZT\ah~N|SLLKLKKDFCDIIFBCEEFoozzpfR\SVT]wxvuvvr`_^_Z[LOKNZZUP]_{O}rpULLKDFDLIGNVMXdi\dfiTXQOOgh]odu|{oQ__^^TRPPZWYP_]`}suysys{~MSULKFIMPQW`fkkhokfnSQXTm`niawwnfN]_^\TNPOPWU[_]Z_[\^icnwztiuu^VVUTYhiglguwuUMWUfshiVZrpllgWX\_SQJPPQVU[]We_\[^c_gv{yzzm|{`Yjjgiin|ytYhpsqpWWledP\YWXSOOPT[[^XWb_][Z_byjugYbllhih{}`ssvvhVYeZLOJMNKLNPOOMZS\YVX\fc\]YartmkkZhoogh~~}srskgdXXVJJKKLLIKLPNIOVIR[_]^\\a[g[uvzwnqv~j~{{__mvjg}\UQOJLPGJJLNMHPPJ_WZ\]XZZ^Zft~stym^YW\\dmx}jwcRLKKLLGIJJXW[T\tpVqdhusmlfgiaabhyQOa`XQxa|}}~~ygfgfhjpxtkij}beabxy|hP`^YRTQQt}y~gfjjhhoqjbvyrp\SM[WVXXZ[XWďmplnffghgpv~tb^[TSVW\XVWVUU쿦rlkmigghggxོ}dea[XYS\UT\UU^~zmhhggsƧuufba_\XRQU[TUUV^½˸wwkggڻ|una\]WWPPMSSUU{żxujhûŻ~~{njYXSNLNMNNPQMT\gƽvhhĻywYUPNNJJMMJNLPJYWbͻɛwpĻYTNRNNKKNLJINNURTY̨¾QONOMNJHLJJMJPOOMVTĊͽιz¾q]TNOOMMHIMKLOHOIMNW{ɑy 󺲓|nXOMNMMKJIJMFHIOIQNTenåup¿þwgNNMLKIIJIGIPPQPSS\\dǒxþxUQPNLLKIIJIIHGJLLQRTTUUꀐʧþvQNNMMLJJIJLLSTTSUVV`ɽTMMLKIIJJIHJJLNSRSUUVVҾ¿hTMMKKLKIIJJKJIJIMOSSTUUVV^oaҾðsNMMKLJIJJKLQPNSRUVUV[\V^^ͽsVPOKJIHIIJJKLKRURMUTUVVWV[\ϻcZLMOIIJIJJKLMWYWUVUVVWVWWY[\gmȾؿZlMPPOIHIIJIJJKLLQSWXYWW]`WZWW[[\dohcMJLJLHHJIJJKIMRMYYXWZca[`VX[][^acnsnfb_LJJHMMIIJIJKJLTMXVXZ\\rj^`fZYY``aafkj]aRUJIKKJOLJKMMJLVXWXX]Zai]]bdXz[\\fehhibY_WJJIIKMKMHVMORKK_XZ`]Tb\Zi^{{zjk_hgfk`YXUTIIJKIKOOMLRQWU\`__TVVTXaczlxzx\lopuf\]WUOOKIINONLKJL\Z^_^USUUTjkz{|`nbutrtk|rjYPPOMKJJHKKOONLHJZ[\[Z[XSSTUZ~zx|o`bvrunwl\VMMLKLHIKONMHKJHY[RWSZSTTUVYdo|sklcznpzxhQOXMMLMJMJMNLIHHPXT\JCUSOTTSUb{ijllk}|z{]_UPIQLLKOMKLNKKLQRKFDKIJMEHSSks_mhku~}{{NcTJHHKLLMLOPKNQLLKLNNLGFEEJFGHLRSY_lmmsti{uq}jhKPOMJLLKLMTMSRNNLNNKJKGGEDEFEFEJOOgmlgek[jۯpoj~PKJIKJJKLLKNO]SONNMNOMHEFEDDEGILKGV[ijeQcaMIwnlgLJGJILIJHKLLMVPULJGKOHDFEDDCDEGHCEDFIKZQSMHH̡zqpf`TLOLIIJJKKMJ[RU^LJHHGFHDGDDCDCEEGECCFIFGFIIGGHz|jolwjmVWUSOONHJJDNKNbcXWQKJFEGEEDDCEFEEFEFGLIHGFGwytvhfgiia_VSWQQONIJJINMR__`TLLHJIGIFEECDFFEEDEEFFGGFGJIHFFvtmrtrigghc`^^UUQPLNNPJJOLMN]bcNQGKJIIHFEEDEGIGKKLFFebbgadecaeg^\[TTUSOMOKMRNIMQRP^bPMKKIHJGGHFEHJEEDDEFGFGHIJHIJGF^__`e_`aecbaX]WVTSRWWIIFJGNMMNFEPNJLLKIHJIGDISSHHEFEGGHJJGIHHF_]^fa``df^\ZXWWR]RRWHHGOCCMNIFGMLNMMLMJIOKLUVYSPPGHHGGHHJIF_]]_caa`e`Z[[WURUX[WMMOONNGONNFPOMMNMMNLNTTVV^cdc\KIHGHHIJH^X[dccbccd]YYURQRWQSTXURIPJNOOPQRQONN\NLVZW[^Y^fgpbIHJHHIJLKIMQJ[ZWa_cchdghbURRQQSbIUQQPNPPTTR[RNPQP\Z]emfkqplqojcPPSIMLORWWaWWXcicgghg_XWUQQRRORSYWRPMPOQRSUVRRVTVRO[W]euhvwusmrnhQ`WYUTT^]eWXY]hfgg\SWWRVTQLLOPcKOQPMIPQRM\`a^WWR^SRVSbrpsxjqqwkb]WVV^]gfZW][_jkkhSWRQVQTJJLROHIMMOMV\g]T^\ZZXR_nqknrkns{zuieUWWafggZY[Y^_fll__MLOHJIIJJKUHOJQSN^Z\]^`\YfdYVOXapRklqpzqpbX^WfggWYYZZ]smnfPVLHIIKIIJIJJWQPPURZ[\\^W_egXTOLMNN_jjp{|lf[\[fgfXWZ[\_y~}q\TNKIILIJLKKJKQPPVTST[[Z^ZWUZVSLLNNMLNWhou}|sf_\^dhWWY[\rs[LKJJLNKIJLKJOTTSPQVPRW`^ZXZXXRQLLKKJJOSMPsfeedgqmZZ[Zf|gGLKLLOLLKLKKOSVXUSPYZSbYXZXXVRSPKIJJLOONN^zgheeuppW[\XcppNKIJMOPMKLMNXMNRXXTQ]VYXYYWVSKJIIJMNLONep{whgfekoXVYZfqwn^IMINNKLRVMLJSSRRPPS[VXY\cWWVRKJJIKJLLMajZs}jhlnkuZ]Z`fqMMLMLOKJOORX[NLgORPSPRRTVZXWXWWLKJJKJIKNOPPZvqrtllrtu][ekNILMMLLJFPX\Z^LXdXOOPOPQVVUY[XWVPJIJJLJLOORTinsrssjrr]ab}|MMLLJGHHONN\WXadPPQPTRSVOS_[hjVIHIJJNLRST[YrpqppoYM]^zvMJJIIEBKIPYMIYfXZYVUXXRVWZ^^ag\SKJJKIINSVXYXdnhc_MM^zpJFDHHCCUIMJJP[[RVYVYURPTWX\ddj\NJHIIHIIHPTWY]^_WUPII`hXEFCCAPQMQMVXXSWYXP\\VcW]^lieYMIGHHGFHGPTVTVXPOKKHMHGD@ACFKKPORZa^VTTSWWV]\[aXWfeWKIHFGFFIOPPRJPNJIHsqOKHECADEEGIIQ^a[T[QZWRM]VUZ\`NTVGFIFFEFGKNNMHRNJIJTkufMg[^zkicb\\]VV\l{}xzuvHEWVLEkU}|owqqrmZYZZ\^du|nj`__pVYUVj{{|x}zor^GVTOGHEEfv||t{qmrsZY_^[\cf~z]Vrgvz~zynhfSJDPLKLLMONN}t_b^`rYZ\_^fly~}yzskYVSKJKLRLNLLc]]_^\^_^^nଫv}wzsy[\XSQRKRKKQLLU{nla^_^^_j学~wywvkl\YXVTQKKMRKLLNUsvwllb^__~xwwvvrleYTUPPKJIKLLKMMp|yymyla^˰yytuturdbQPLIGJIJJKKHLT^zy{{yl^]~~owwxynQNIHHEFJJGJHJEQPXzzy{yulcƲ|vvxywQLGKIHFHKIGEIINKMQzyyztsʮ||y{{xJHGHGHFEHGGIFKJHFNMzywmr˯~~|iVMGIIHIIDFIHHJBIBFGOpls 񬫪tfQHGGIGFFHIABCHAIGL\dygcxo_HHGGFGDABIIHKMTT\k뮯oNKJGGFEEFFECADFEIJMLMMtnJHHGGFGFCDLKMMVwMGGFGFDBCCDFKJKMM~|`NHGFFGGFFGFFDCBAEFKKLLMMUe|X꯰jIHHFGEEGFFGFFDHGEKILMMRSNTUiOJJFEEFGFFEILIDLKLMMOMQS 魮~{ZRGHJEEFGFFEFFNPNLMLMMONNOOPRS]c뭱wRbFJJDEEFGEFFJNOPNNTWNQONQRSZc䮱z^ZFDFEGDEEFFGDFJFPPONQZXRWNPRTRUWWbgͯbz[XVFDDCGHEEGFFGFGMGOMOPSSiaUW]QPPVVZ_ѱx_TXKNDDFEFEIGFGIIFGOQPOOTQX`STX[OqQQZ[󮭭^XQVPDDCFGFHDQIKNFFWPRWUKXRP_TrqqabT\[Z^ǯzWQQNMDDCEEDFIIGGNMSPUXWWKMMKNWYpboqoR`cdhY𨬡sSUPNKJFCDCCHIHFFEGWUXXWMJLLJJ_aprrWeXjhfg^˯of_QKJKHFEECEEHHGEBDUVWVTUPJJIIJOuqoseVXkfhak󮭧taTOIIGCEHGFAEDBTVMRMSJLIJKNZesiabYtnacnl_KIQIIJHDGCFGEBBKSOWE=MKGKIHJXq_`bbasqonoxTWNJEKJIIHGIGDDGEEFLMFA?EBBE<>HHaiTc^blxrurpm{{vGZNEDDJIJIIHJLDGJEEFHIGBA@??C=>>BHHOUcddjk`xqldnu_]FJJIKKIJJPHMKFGEGHFEGBB@@<><@EEF]^ddc^[cT`{ca^pHFEFIIJKKIKKXNIHFGHIGDAA@==?@@=>=?CDRKLFBBܐlvurcb[VMGJHGGHIJIKGVLNXEDBBC@BA@?@??@?==@CABADDBABymyvxo]a_i]_LNMLIJIFHHBKIJ\]QPIDD@@A@@>?@?@??@?ABGECAABuuilhj\Z[\\UTLJOKKJIGHHKJMYXYMEEBCCAC@@>?AA@??@ABBACGDCAAisgbggf^[[\WTSRLLJJHJJMHHLIJIW\]GI@DCBB@@A@@A@@?@AABECFGGABZXX]WYZXUY[SRQJKLKIHJGIOKFJLLKX[IFCCBAB@AA@@AD@@?@ABAABEFDEFCCUUVV[UWWZWVVNRNLJKKQPDECGDKJIKA?IFBDCCA@B@?=CJJCC@A@AABEFBEDECWTU\WVWZ\SQPOMMNIUKKPDDCL@@JKE@AFDFDDA@ECCLMPKHJABCAABBDFEECWUUW[WWX\VPRRNLJLPTPHJLLKKDKKJAIHEDEEDBEKKMMUZ\[TDCBAABCCDEEFDXRT][\[[\TQPLJIJOJLNSQNFLFJKKJKJJGFESDAKPNRUQU^_gZCBDAABCEEFJFUTQZX\\`\_`YLJIIKML^FQMLLJKKNNKSIFGHGSPS\c\aghdifa[IGJAEEGHMNVRQR\b\aa`WPOLIIJJIKMUSNLHKJKLLOOIINKMHFQNU]k_npmkdie_HVLNJIISRYQRRVa_`a`ULPOKNLJFGIJ`FILKIDJKKFTXXUNNIUJIMKZjgjpbhihmaWTKJJRP[ZRQUSXcddeaLPKJNJLDEDEDEGMJCDGFHFMS^TKUSQQPIWfhcfjceiqpj_ZIJJU[[RPRPVW_eeWWFFHADCDEEDEEFOCHDIKGUQSTUWSQ^\PMFOXhKcdihvofdVLQJZ[[NPPQQUjfg]INEACCFDDEDEEQIHILJQRSSUNV\^OKFCDFGFXbagr{qa[PPOZ[ZONQQSUnurhTMHDCCFDEGFFEIHMKJKRRQUQNLQMJCCEFEEGP`hlrrh\UQTY_NNPQRg{}~}jTFEDEGIFDEGFEIMLKGHMGINWUQOQOOIHCDDCCHOHKkwZ]]\^hcQQRP\q_@FEGGJGGFGFFILNPLJGPQJYPOQOOMIJGC@CCGJKJIIXq_`]]kggNQROXefHDCCGJJHFGHIRFFIOOKHTMPOPPNMJBBAABHJGKI^iswn`_]\bgNMPQ\emeVCHCIIGFGMQFFCJJIIGGJRMOPSZNNMIBABACDFGGZbTkta_dgcnQTPV[vgGGHJGEJJMSUHE_FIGJGIIKMQONONNCBABCBBEIJKIRnhilddjlmUQ[`tICGGHGHFAKSWUXFQ\OFFGFGHMMLPROOMHAABBFDFIJKL`fkikjkbjjTXYrrHGGCDDKHHVPPY\GGHGKIJMFJVS_bN@?BCCHFKKLRPihihhgPEUUpwlHFFEFBAGEKTGDR^PQPMLOOIMNRVVY_TJCACCBCGKNOPO[e_[WEEUpgFDBEEBAAQDHDEJTRIMPMPLIGLOPT\\bTFCACBBCCBILNPTUWOMIABX{_RCDBBA@?LKLHLGMPOJNPOGSTN\PUWdb]REBABCBABAHLMLMOIHDCAz~~{GFEB>?ACGGKJLTZWMKKJNNMTTS[RQ_^PDBBABABAACGHHJCIGDBAw}gfHGFDA?BBCDDJWYTKRHQNIDUNOTVZHNPBACBBAABAAEGHGALGCCDObk^F]RUoa`YXSSTMMRbuwstpsnn>MLHBC@@_~lzyvpphpeafhNMRRPPX[xroTMg[kuptqpga_KA;JGFGGHIGGxuuqhTWSUfMNNPOX^~z~snssoplbQMKCCFGMGHFEDEryUPRRQNOPOO`˝~~~uirkphoSTPKJLEMFFLEDDMyna_SOPOO[Ж~~oiljj_bUQQONKFEHNFEEDFMyetkl__TOOɜpjijjifb\RMOLLFGDGGEDEEevrooan_RP鞤}sjkegfgh\ZKLHEDGGDBDKT񫭦poqpo`QQ䗙{onahhjldKHEEBCGGCFBD>HGMpooqokbZҠwokggkmkKGCHFECEHEB@CBFCEHvvoopiiʜpkmkmnlECCDCECBECBC@EDA?FEo{ztonch렞vtopow_OGBDDFABDCCDDBFGMLRwa曜}{{wdGDCAABBABBA@?=@B@EFGFFGGjw|z{{cDBBAABABBA?@AAFFEFEEMj񜝚y{|}vGAABAABBA@?@?@@AEDEEqn雜{}}XGAA@ABBAABAB@??>BAEEFEEDKYoMꞛz{zzaBAA?A?@AABBAFD@ECEEDHIDJK򛘑{{yvu`GCC??@AABBAFIF@FEFEEDCDECIK윒zttqRJ@AC?@@AABBABBKMKGHFGEFDDEGJKU[{ylIX?BBC>??@A@AABBGKMIHHLODGEDIJKR[~ǚznUP><>=@>??AABAAC@BGCMMKJKSPIMDGILJNOPY^ǛvYoSPN><>?=@CCBCIINLRUTTHJJFHPQfXegeKX[[_Q񔗏{ugLNJHDC?<==BCBAACSQTUSIGIIEEYYfhhL[Oa`^_UꙚud[VKEDDB?>>=??BB@=@QRSRQQMGGEEFJlgeh[KMb^`YcshWLHCCB@A==?BBA=A@>PRINIOGIFFGIS\h]VWNleY[f莍q`UCBJCBCBBCA>A=AB@>>GOKSA9JHDHEDFQhTTWWVjigeg{mKOFC>DCCBCBB@CA>?B@@ABHIB=;B??B8;DDZ`JXSVbojljhcook@RF?=>CCBDE?BD@@ADEC>=<;BAGKXYY``Vohc[djVT?CCBDDCDDIBGFAB@CDBAC>><<==8:9<@@ARRYYSQYJWݍoZYVfA?>@CCBCDDBDDRGCCBCCEC@>==<=99<=>>:EJVVRBSQ?;~~_XWT?><@@DAC@DCBCJDH@?==<=<;:;<<9:9;>?JDE?;;сys^y}~kji[ZUPG@CA@@ABDBD@OFHR@?>=>>?<>==;=<<=;99=>><:<j_khkcUYVaYXHIHGCDC?AA;DBCVVKJD??<==<;<==;;=<=;;<;<>CA=;;={vgg\`[^TSSVVQPIEJEEDC@AADCGRRSH??>=>;>;;<;<>><;<=>>=?D??<=^g\W[][WSSUVSQOOHGDDACCGAAEBCBPVWAC:>><<:;;<<=<>==<<=>>B?CC=?RPPOUORSROSUONMFGHFCBDABHD?CEFDRVC?==<:<9<<;;=@=<<=>>?BBAAB@?MNNSNPPSQQJNJHFEEKJ>><@=DCBD;9C@<>>=::98=CC??<==?BB?B@A@NLMTPOPTVNLKJIIJDPEEJ=>:;@?@>>:=<=EEIECD=>>==>@BABB@NLLNSPPQVQKLLIGEGJNJBCEFDD=DD;CB??=:=CCFFMSTSN?>>==?@BB@OHKUTUTUUVMJKGEDEJDFHMKH@F?CDDEDA@?M=9CHGKMJNVW`T>=><<=>@AABDBKJGQPUUZVXYSGEDDFHGX@KGFFCEDHHENC@ABALILU\U[`a]a_ZTC@CAABAHNYOFONLLJCQ`c]`d\^bihaWRABBMSSJHKHNOW^^LM=>A?AA@AABJ>C?DEBPLNOPQNKYWKHAJScF\]ban~f^[ODJBRSRGHHJJNa__S?E><>>?A?@@AMEDDHELMNNPIQWYJFA>?ABAR[Z`jsi}XSHHSRRHHJKMOcif]JEB?>?B?ACBBAEDCHFEFMMLPLIGLHE>>AA@@BKYbfji_SLILQUHHJKL^noqo^KA@?@BEB@ACBAEHGFBCHBDIRPLJLJJDC>??>?CKCFdoQSSRT^ZKKLKTfrrwsU9A@BCFCCBCBBEHJKGEBKLETKJLJJHDEB?<>?CGHFEDQiUVSRb\\HLLIQ\y{|[@==>BFFDBCDENBAEKJFCOHKJKKIHE==<<>DGDHEXckndVUSRX\IHJLT\ybZMFFDDBBEMHJKNUIIHD=<><@BCCDDU\MckWUZ[WbLOJPTj~\?AABCFCBFFIOQC@ZADBEBDDEHLJIJII>=<>A?>CFGHEMf]^`YY`baQMUYi{BHORPSALWJAABABCHGGKMJIHB<<>?CBDGGZ_c_``bX``PSThtgAABBCC@AAGDDRLKTWBBCBFDEG@DQMY\H;;??AAFDGFGLIb]_]_]H>QRfl~aBAAC?>DAHPB?MYKLKHGJJCGHLPPSYND==@@BABEFHIJJR[VSO>>Qeyvuww]@@>AA?>>MAD@@EOMDHKHKGDAFIJOVV\NA??B@ABBEGIJMNPHFB;;Ros}utxyzrUK?A??=HGHDHBHJJEIKJBNOHVJOQ][WL@@?AB@@A@DGHGHHCC>>@DCGEGOTQHFFEIIHOONVMKYXJ?=?@A?@@??ADDE?DB?<;m|pvvwvt[Z@ACA??ovsrsqqsuuy}{|y||{~|{{ttuy{~p{y|yurrr}y}qqtx~vvzsx|{z}}{yxyqstuvyznmrnx|}~nqqrvuvyv{{~|svzs}tvywyzv}~|vstsro{w~uww͚kkm~z{~|urpouv~}u~nkhq{}}|vurruruyznorn~x|z|wrwnot|vwwzyqsrrykjn~}zywvuwxx~y~snppuiu{{}~{zz’{~|lmppnwt~|{{zz}ȼ~}kmnp|}z{{~}{{y{zz{~ݗwql{{|Ǒ~}||zz{~Әtx{}}|Ɠ}||{zz)||z~psqx~°}}{|w}w}z~sqqp}v|~£|{yvvwwvwwvq˫x}zxx}|xwwuuvvz{swy~vu}|xxpwwzxz}sqsxusutntuurxx~zx{{w~}ǜtrszxyyzy{rs{yxբ~rstwprpqzy|}||}{|xwwzʦtturx{yxxvjpqyxywstywmnt~}}{|~z}w~͡ttrtyywxqtrlr{qv}xvrozvw~~{x||w¹{tsvzxxzxywywzztvr}||~}Υ~zzx{||x|tswv|~~蒙}~|}~ˁu{|}qrtyz~~Ԉ||||~z}rv~ě~yzwx{{~rr|Ȣ{{yy{}||qxwyy{{~rǰ³}|syy~}}~~juwuuuu~f˽~|z~vwz~{}jk}~wwqqstmmʼ񁔚qwx{y烄zv|~topoorm|hhƃ|t{~tswwz}}|{tr|tzyzxwnnpprs~mùĄuvtzsxsqty{|}}nr|}ytywooqpsppt|yyzͻȫuttsr|s{{zyqouru|zvv~x}tqrr{t{yzvˠuvutrtt}|wtsoppmmqvvyyt}~xuyvptrqrrqzxxʳ}urrt{ppxuoninmmvpqoxuxv}vvx{ttokoqqrhyqowȴtt}zxq|rrfillmomovwuttxvvwxyvohkjkpqrHNN\ozm__kĭ|wsvyssn~{|}rsunilkqmnswwty~zzxx{|yxtkllmorGIKW\QSO^`gũ}ru{}||yyuvwqjirxxtxvtyzw}|zxwyywxgmlnqHHIKIORY^_k~Ŷ|{w{z{{vuvrsplyxx|pzy{|yxxyywijhgkhlGGHILUXUVbkuxv}ɫ|z|~{{wvqqsswy|wvsszw||yyqhhgkkijFFGHJSPPS_ckqtzƬ}~}wzuttuxyqyprs{}xwyyzz{khjzojFFGLQPRS]]Z\rȱɆ}~ttwxx~sws{{z~yzzy{pozopFFEEGGJOMUMNYUSY̺vz}x}{{wy|{yyz|onoFFGLMLMOVRQR\[ǫ}zz|}}}~~{{|u{~pnmnFEEFEJOLLOVNPQPPQS\\eͼĚyyz{~~|nuztolnnGFEDIchR\piQPPOOPQQWUU`˽ű~}xw}~{~yz{nnoqqrstvaTTiy{}}jwvaONOOPOPTUUšȟŻ~wwxy}~||zz}x|nnlppprroPfiq{|ygNNOQRSUSN[êyyxzz||qzy}pqnnmquttqotgfoo}}|kRNNONOONQNMMUķyxx}{zzuv|zy{yuqnxghfqvt|TQNNOPNOONMMNNPUĠxx|{|vvpvx||tzz{oghpvnvysaTOONOQOLNNONTr~~}||uuvr~hhn{{jqsuusVWW}sqrXVVO`QQMMNVNPRojtz}xwtoxz|jnsyzyxfkfkSQNMNQssw[vptVS`OVyccqm[hyįsrtqq{}|n{stnlkyrZPMLMLLRp~tuxxzwotz}uoomnrgi}wqqpmm~sojqurTLLPpy~{|zyuuqzzxonmjeggdrrsnmppoopjnsnvLLMLLMQr~}}{zyxuqt{rxyehmlgg~{usnrkmomjikjlml|MLLMY}}{{yuqspwzvtokhm^c`tqootmnmw|mlNMMLMLLM~{{zrrsrwqyspnlheb^q}¼ruvwxsx}yumNMMLMOSfu{~{{xtrtsoxookjnhcfgnn}{tw|vxspnnoaMMLMMNRSqz}~svpoihijnglƾt{uxr}~xxonooJLMMLNOOSWZs{|runnstlnnfkjfnmǹƿ{|~yzpnqrJLJLMNNOPSV\ilsnnmmimufijgfifjkiŜtppqooHIIJMNMMOPRRQbkqmrokjnojvsffhmpkkiƽĥuvpnnJIIJMLKNPTTORQcPUWLJl[Ykm`mtqyfhzkq{np~~rnnHMKLNMPTOONNMNMOKTWUTSTiZ\qst}}}}nnoIHHJMOLOONQONMMKHJQNPPTRVZYwz}|q}onjbsjvsuzz{uzz{yyhhfikw|xmpsqsuilljommupynohhiumorrxq^ioqmhezeyesyyuqmrffiunwunnqxf|hljinomlljhpxmwfhhistt|{}~wymop{a`ealpqywwst~|wufixwzddgffhfjzjmlbf}lyvhrijmk|t~vppwkr{rptxyuuw}}}suuzywieecc_khnomdffuu|sYY\uxpr}xrxtxtotÍu{}hvtdbafgnmotdu}|rl\YWhrt{y{rotthwzzgcceyuadhix||~t\]`\tns|~|mw~qtojej_`em|effimvvz`a``i`_c|rqqo|zxmy{y~nlkjqifhgg}tohmb\^^d^jo~|~zujlmz~~lkkll}|j~mkZ[^_]jhrzzy|w|vw|tollklkmv{mkY[\wscpp{x|ujkkqz{snmlljklkkuynss|~jd_oxk~yzkl~~qnmmjkjkn{o~xyvgkw}kmmkozrpmollkjjikpljmnnonzwrzq`fdsgyzsqmz{|qmryxrljkufnlfltoir~z|syvv}srb`a_kdjlwyqpqkjpheeffeffe`y|pwtx{xyyro{fkhijo~mqxzqrgffddeeijbuuftsmqllttpr}fw_eohkjloxedewiwqpdbdc]cdda~zxyvzllsporsqromb`ahfgjkklzefljiՐ{qmabcf_a_`i}xylnptrruturqnwxyvmbbcafkjijih^dd|jiz}{hfbchf\]cmllk{oqz|}rwu}pxwxu{prbba`bnijiidgf`encqhqxl~yqrgea^iefmmprzojhrnp{|}wpzuyus|tibadhfgjhjhkim}nhujd}xxrytupslkkoppnxnoty~vyxv|{|lhhflmlityouigkiopx~yrrwqotnpmnnpqq邈umspv{xvstvyxx|}sodtnklmwue|gilnrqqxrqurwurqknkkpqqomt}qznoqhkswuijsvn{{vrnokkosnuvvrq{t{qqrnponnpprsz{ywp~gghrxxwrs}|~nollorvvrtrq}qrmlpkqqpciijsqqnquxsrm{zvunmpeontglls||xsuxwpootnnmq}w]fiuyptnqpvrwxzrhhwhhpYvssqom||wsrkkmpnopwxtx^^ss}}|norvvwusriicddfga`ttqrtwfklnlszzvwnjypr|{}~ruwvussqgbcbbe`p[\ttmelnjhlkntqzxqpohfphnmltvw{zzrkiaaccegxzsatrefejdj{zifimoo}vqqafoqmhmtutrt{{trjabdcfceiroozpxqfededo{{whnnmdyycifipnjjrxqjqs~x{totgdeeqiqopylefeddffp|wtuorkhgbcc``dijvlmhprkilxzyzidgedeedqnyxxnmeddfnvzddlhca\a``jcebskiljpjjkn|vhgc^bdee`~owgfmrreffpnlesofeY\__`bacjkihhmvjjklmwjb[^^deeBGGUhpdVVblheikdfbpmmnpefg`\_^eabgkkimsnnkklnnkkh^`_x`cfACDPUJLIVX_qndgmnmnkkgijd^\fllhmkhxnokqpnljlljkZa_sbeBBCEDILRVW_}prmmjpmkmmhhjehd_vnmmq~fonopllkj\]\[_]aBBCDFNROPX_gjhomlyylommjieehhlnr|llhhokppllkcZ[Z``^_BBCENKKNVY_dflqnqoqpjojjoognegissospkjlklln^\_od`CCBBCGKKMNUURRevwtsour~ujjmnntvimiwupoxmpkllmwfdodeCBBCBFKHOHJRMIO~xxlqt|nsqqmotuutonkkly{pedueCCDHGIHIKOIJITQytpp}rsw}vruqqnmmngmzu|rfdcdCCBCCGKHHKOJJIJIQQXoopq|{ytuqtqrnq`grmxviebddDCBBF\aMUibMKIGGJGLHHRttrnnzvwwrroqmmtm``acsughijlWMNaoqsranmZLHGGFGGysnnorsyyqpnnpjn``_bbvfhheH[_horunx}`HGGFIHEPponppqqcttnlsvobc``dhiigejZZdduqqpw~cLHGGFDEEMuoonrpooghqmwz{{ksnry}mjgdnZ\Zej{x}iwoLKHHGIFGFEDEEFGMuwonorqphhiauyx|ziymqphooyyqe[\djcilvvgXMHHGGHFDEEFLe{}xtrrqphghbw{{zzxs]]fqpy]dfihfKLLphegQOOHXIHDEEMFIKc^gltxrrjie_in}}|t`fjpp}qn{[`\_IGDCCGg{iulSlfjNKXFNpZYecN\k{vbad`aoqqxxwfxsjjdbanhPFDCCBBHftixkmmomfjrxuledbdeZ\{okfaab`cuyyj}f`gkhJCCBBCBFfpwuroponkkhqqzoedb_XZZWpaaca_defgy|f`ejydmCDDCCDHhsuvqpnnmkhjripp[^b`Z[Zpkvfdafabdd_^`]aedsDDCDPx{ppnnkhjhnqxnkea]aRXTsowe{z{ddccja``jsqeeFEEDCDEwztuuonnhinhpkheb^ZWRdpxzzcghhzwtkfjrnmfFEEDGJ]kynqnnmjhjjyeoeea`e^WYZaa~olehl|vqhie`__`YDEEDEEFIJgq}ypqwtwiwlyxvvge^]]^aZ`xdlfhdnwtnoii__`BCDEEDFFGJNRkrs|zxgjcbdxhibddZ^]Za`rkkmqhzvvprj__`bBCBDEFFGJMTbdy}~~idcbc_bjZ^_[Z\Y^_]tqtzxsqc__`__AABEFEEGGJKK[did{~vhea_cc^jgZZ\`d^_u]xwwxe||{wy{e__BEDDFILLHKK]KORFDcRQacUagelZ[m]dosubdwuz{nsvx}}na__AEDEFFHMIIHIHIHIEMOMLJK^OQdfwugtqq{{z|~pp__`BAACFIFIIHJIHHGCEJHHKIKONjvymqozzxqqz{x}|veqdc^Xi_khjonoinoomm[[Y\^joj`cgefizyy_abb`edclg{ob`[[\g`bdgmfU`aea\ZnZnZhmmjeaeYZ]iajhr``dl[{yq^b`_decca_fm`jVZZ[eggonqsmnu^abnVUZV`dfmklhhxrurxxjhX[mkoYY\[[^\`oaccX]samiYcZ\_]nusdthabjv_eofdhlmjjylsrqgijnnk^Z[YXU`]decZ\\~ggrmpuut~~hOORfjbdtuqqlflhlichxjotsq\jhYWV[\dcwuejZ|xyf}tmuulr|gbROLYcfxnruvxmofdihzyxzt]koo\XY[nyzkWZ^_kxytml|qiRSVRibdoxv{}vrwqalwxuxtfid_Z^TUZb{zr[\\__yhinUWVV^UTXtuvvuvpv|gfferpocoqovscva`_f][^~~{{]]xs~}ovfb]aWRTTZS_fsrtxvtztxutwpk`bcpsta``aaytsqy`z~tra_PQTUSa_huzxz|oonqlqlmry{wjvdbaa`aa`uckqz{|aaOQRmiZggyz|xxqmrj_aafpqvuviccaa_aa``jocx~y|}{u|z~{iir{t`ZUuz~e{n`tnp`bvttgdbb_``dqxueuyztmnkyyx}}|||{}y\a~ywmts`c}caexphfcdbba_`_afa_cddedwpmhvo{z~~|syxz|zf{yU\[h]opvxxigcoqrgchuongb`ak\db\bje_htprinyzy|hhoy{gfWVWU{~aZ`blt}}nggvwga`f^[[\\[\\[Vorfkiwjnjkk|zfvtwvdq\a^__dvscfmogwh]\\ZZ[[_`Xkk\xjhae__ffb~x|vsvvgr[mT[e^`_admZYZl^l~}gfZXZYSYZZWtupnolpu``gdbee{rqcgsrwdaWUV^\]_``aoYZa_^zՆv{qgcWXY\UWUV_snoacdhffhfgdcaklmxkbWWYV\a_^_^]RXXq_^o{vutq^\XY^\RSYcbb`vpdenppejgpbslklipefWVVXd^_^_Y\ZTZcXf]fumbtngh][WT_[\ccfhpez`^gcdopqtjb}snimihqi]WVY]\\_]_^`^brc\i^Ysmvnhojkfibaaeffdnv{wddhtmrju|xmljqpq`]^\abb_indj]\_^cemsohhlgejdfcddfggw~k}cgdkoljghimllqqhcYjcaacljYq[]_cffnggjhmjhfadaafggebisgpdce[_gtkwyj~ikcppkgbc^^bfajjkhgqipffgceddfhopnlfyq[[emmlghq}wprcc__aeyijgihfs~}ffbaeafgdV^]_hffdeikffaoojjdce\bbg[__eyxookhknlxecdhbccfpiO[]imeidecjfjkznf]]m__fQjffrcb`pplih``adacdjkfwiOPfgsqqbcfiijige^^YZ[]^YWzggfcdfyk{\`ac`fmlkhi_\kcdpoqrehjysjiggf[XYY\XgSS~gfg^V]_v_]a`bhwcjibb`ZYc[a`s`hijonnf_^WWZZ\_prkXtfdVWV\V]on^[^acdpwhbdVXcea\`hihfizo{oif_WY[Z]Z\aiffqekcWUUWVcool]bcbaYmnwwY\Z]db^^gle_egsm}}pidi^[\\hahffpa}VWVUUXXcojijcf_]\WXZWWV[^_kaa\efa_bnoop{z^Z]\[\\[}hzeonnb]VUVXajnXX~_^YXTYXWaZ[Xi`^a_f`aabdrlvx]]YUY[\\Wuyyem\\bcbUXXcb`YxieZ\PSVWWYWY`a_]]bkaabd|n`XRUU[\\:@@L_fZLJT|]ZW\`Z[Vebcdf\]_XSVU[XY^aa_djeebbceecb^UWVnWY]:=>IMBEBIJPxfcZ]ddccaa^`a[TR\ab`ca^odebhgecaccabQXViY\<==?=BDHIJOlqdfvee_fbabb__`\^ZUmccucgt\edffccbcaaSTRRVSW>>?>==?EHGFJQY_^dzedppcecdb`[[^^begxrbb__fbggccZQRQVVUV>??>EFJMUZ\ahf{wigigad__`dvwd]e\]_jifigbacceURUeZV??=??@CCFDKMLK\|llkkglissj__bccjl_c_mkfendgbccdn\Ze[[@?=>??>CAFACLHEJzuyoouusafipciggcekkjfebbcoqf[Zk[?@@??B?BEIEFEPLnywxuusheerhimslhkhhgedde^dpkri\ZYZA@??BC??DFCFFEEFFLLV{vxtddefrqojkhkhiehW^idnl`[XZZA@?>AUYDK_ZHGEBABFDIHHQ~~xhhecbplmmhifhddkdWWX[ik]^_`bQHIZfgihYedRFA@@?AGHHvlfbbchinnggddfaeWWVYYl\^^[CTXaghkdnt}WA??@>CFGHEBI|ccbceggXjjecimfYZWW[__]Z_TT\\mhhgmuZB>??>??ADAA@AAFuhcbbhfed\]gcmvqrqbjeipsc`]YcTVT^cspt`pgC?==?A?@B@A@@AAGhribbcff]^Ukonpp`pbff^ddoofZTV\c[adwyopo`NB>>?DBA@@A@EZmo|khff]\]WmonnkgRRXdemswwzV]_`a_DFFyia^`ECD>NDDAA@H@BDYT\`uhlfg_^ZT^bqqpstfTX\bcpbbotSWRWA@==Bb{qajaHc^bIGSAHiSR\YEP_m|iWVZVVdfejtjhuttXke\^XVXf_G?==>==C^kam{`eegf_ckqnc\ZXYXOQnda\WVWWTUgjwuuvwl]oXT[yb_B<==>?B`gmithegffcd`jjsh[ZWTMOOLweuWWYUTXWWjmXSW\lyyXcvw<=>>@Cbhikffdefed`cjbihPSVUOPOev`k[YUYSTVUSRTSV|yZYi==>>?@ALnpffdedec`b`giqe`[WSVHOJjdkZnmmtXWVV\VV^heZY==>?@Amnhijeedd``abfaha^[XSPNH\g|mvmmvW[]]mki_[_fbaZ>=>>?@BEWbyldgedcb`bap]f\\WW[TNPQWW~r~baY^bokf^_ZVTTUO==>?@@BDF_hrmyfgkil_nbpomm]\VUVWZPXoV`Z]Xdkice_^TTV;<=>?>>BCDFIL`egowqom]_YZZo_`Y[[SWVRXW{d]`bd]mjjeh`UTVW<<;?@ABBCDFILXXlropqp_[[ZZUXaSVWSSUQVVTedgqtmkffYUU;=@A@BDDFECQY^Ymph^[WV[[Vb_RRSUY]WVlT|hhqijWmmnnkmm[UTT=<<>@@BEGGCDCTBGI=;ZIHXZMY_]eSUeV]gklXZ{hglm_ehkpqpcWTTEFEDBCVGI\^om_lgiwqnmyqoqccUTTV><=?BFBGEDFCBBDCA<>C@@CACGFamocgeppozawcmnkpoiYeXWRpponmmo~yxx}yw½rqq~ssrsu|ytutsonmmp~y~}|{~uwuw{olnpnoqxv|vzrr߈vvpnm}|}zyutrsuuv}ttqtrxupop|{|~xvqtx|v}wpovo}y|utywvouw{qyz}}~|{yttpzy|wvvummqpzzwvy‡~||~nlln}uo{n{pyʈz}||}{ullnuw{pmnnz{~||}|{oywv|~lxꕇ~{toniojm}|~~J{zw{z{~hfjw}|~|xtoopomn}y~{}zuyff}vywuoornpy}r|r~rgi~{tppqp~ttuykhz|s{j~ssokuvy~~{wwxur}|pdrppjuv~rry~~}pqosrqqx{utqpuswz{s{w{wrst}}z|pqmopssux{zuxxuqtq~z{vvtvtt|}{{ssy}{{polomnopxzuu}~~yxt}{vyxwz|t||}mnjnnoov{zt{u}}yuyww|x{~~}tlnxrptxy{v~z{|w{z~zwyroopxqrx}tt|w~ss}}tqqpswtu{{~|~}~~twnuvw}qnpv{{zyp~~r˨{{x{wwqp}yvsnnp~v{yqoonpx|~}rw}uruptpsrtqqmmvwox}tsywvv{{}|}|}y}z}kkoromqpnolpv|wxxtwt{}yyzvzuz|zz{}||}|vtloolmoqopnrxz|}wv|rz|z|~}vhwvtty{z|rprlkporrvvutz{z}~}}zzw{xukjvr{|xqqolplpoqrpw{|~yy}zmppkjmqqrtqqxrsrssq}}}~nlsp~}||}{{kiphhifmsrs~~y~msqtvsstznl~{||z{~plkkmonhglm~rryxvz~msvxtsttŎwutt{|{w{{xlmjiidgil|rsxvw}utmruttuu|v~owmltpqy~zxw{{||}wwnpiiggk}qqpquqqtuvstquqryyttvuyw}wgklop|vzvw|||}wnnjihhj~qppsqqwtvywy{zyuuvuzv{zxhggiklmvprsuuz{||zvvnooljijhmq}oppqpqqsullsrovxlytntv{{}|w{hihggkkji|{ruxuv{}zvvtpoopwqpprrqxllsm~wpkdjvuuyw|}{zfhghfhholymxwtsvvtuwuqoptuwwyyzqrto|vvrkljnzw~x{vythhgiikzkootoussx{xyruttpy}mqrsvvqqpjrwuuwyliivmslvjpwwzquutwmmuups{oopj~|{xvisklwpnpq{s}||xutu~}qjsusnoeexjjkvpumokn~|{|usuk}pzyzntrnnech{psjghhtfwy|{zzusxnzxnzznstsnonrngqtqphigfehsvn|nq|wwv|tmyrxynrs~ntormlkkqwurqheichhuxonnpvwvuvyxfzxpxsntpmvemgpokmdstsrrqiqihc|qqwurroqopqpvvw|pxyrrmhidfflcirgrsrrtnoupgefmqvqq|otonqwvvsy}ynsmwvtmlmmnihgc^wi|zrtrqhfhoomiysqqprpstouxtwyoyokruyrmnmmkqh}z}y}wsqofggrsntzxqurvqqppqstotxzxox~gfwlvwrppmlmkmlwtvuzxwogghnynqynoppqsqqrwtsx{zxww}}efh{svtvvrsopmllnmjs~~wppogljjopornopyrqqrqswxtu{|yy{ek}vtqroqqprrqnful~{{zwqmpciknonnmo}~ppjqqsrvvutry{zneijmrpqxx|lopoppqqr~ppoyiefiijpnqgnxpoqsjjrqxvvsosr|mdfijkpovsxyostsqppvtny}eyffniokponnoppu}zssrqtrmronv}ggkkupuyxzzrtsrnmqqsyz{|~vlieddojgnnqkwzz|}{sppqpposjwiss~xppsppmrxnyywt{||remdklmfonz~}~ysqqpjkov~xqqppsqnry|usyxwu|w{wkkivxwtuqqpmokln}y~y~qppttsv}}zvxv}}{uopdpmupt~|~sqqupospp}|~xxrqpuvwv|zwtt|yxqqpjjmpvv䆇~|~~zwvxr~vupy~}~qq|z|}}rwrx|dzy{xq{{ywuy|~~}ytt|u|~xwxronpxzuwwuuqsyxlkfy^_fynoysyy{zyr|{wwxrnpvrr~wwuusqqsuvzyutvbc_bavy}}sx||yxz|z}nrrtz{rwxuxyxqqr{vvyztec`z~||}vty~|yzvzqrstz|u~~|qrzzwvwvv|s`gb^qw|~{w||mo~򓖎zwzuxvvrrlrquut~|xvvwxuz|zijqw||t}}{zxuuccba``b{pxvlrhhx{|tlsuphfpz||wbnbbnddcegmojee}ygfba``cqlppnwz}jmdedfnrtj_\_a^`cjhmgkzbbyxij}ca`px|nuxszxly|}ihcb`adcdslwycdaxzwxyddkicbco}~rm|ms{zrryzmv|fd_bqv~zz~guj}yz}~|xxgtupkddjcpuv~||r{vsznzzgumwdbuv}wzrytuu{z{z|~iwwkkdjlwvndju}z|rillmmlujcdc`juprprptv{}}{z}}ixxpkkjbbdcmmhgjzzvtm|llowpwx^^`osopqpo~}}x||{}psy~jeobnscvxjzzwilnllmtn|f^^ahjmppqqp|~{~z||}zozgccbamnuu|wvumllmmruzbnktjnppqppr^j|{~~{zz||{oosnhdc_e`at}|{{|zuuspmmppq}~wpxololmqqrZY\i}|}~|}nn~ookhddfebc|}|zyymkpsu{wptzrowhlrrYpz}||}~iqsst}zjiiddhdfu|}}yzvqrluxytrtwfpfqrrdZ\rsz}|}}u{qrtqmgddf{es{g|xw||~}z|zsxxtxxhioztst^[ns}}|}}~~}{znqqtqtsvs{wet||uu}yyxxuuq^sgge^ijnt|t|}~}stothhnrsttieozqz|yrrqs|sx|qoy|bYfee^i~u|t~yykuqbbi{qpop|w|dfcffdeiqpxrrluqss{}w}ujjfeihxmo{qzgplpibcd~nnln{{~~deabdgegisllgjsyytvtvmjfigsoszsnjjiihhpqwwmmcciomm|zz|dc`b`bbciolgffqqsrv|mlio|v|sqqojkkjvnprxyydqnno~{|yz{ab^bbhmlfngpqrss}~ni|wturplkjnvlorssxutuppox|sg`bkecgukmoutjqrsu{mmnjlqusorlpk}ixxvssvvwxquwu}umfccdkdekqiitpkruvzo~ders|mon~~|ssyzxtshdedvthlijtwtmmro}lpnsnmntyvًuy||{tsrhkcijl~sgeglqxomlaopc˔kuo~j}phkwxzsvzzu~swkjedqnk~kffgtmrpdaa`bx}vjmorm}ycs~z}|vtt|xkqtk|ilgjfiwdgce__jumenvqgfjjihnmpnrxvuypn|}z{}|uvoumqnrwccghecfcaa^cjqwnoyw|mgjhoqllmimgkmxvtmmynutvxxwoopkiwcffccdeab`emoqtnnr{{}gopnprqi[jhex|shlnv}wwvwvsrxmqgficbfegfirigfmoorttuwyy}ozwvvmimjfx{^]isy|ensrtvwvw}{mkffdbgcfeggekuqrtsopsxxpo|{z{{uxwpwwm`cb^\`vdudegrtprt~{w}g|gniihhdorupossweckg{wuvtsrrqronu^\c[[\Y`fvefqpqkrnwuyv{w|cihjlhhsxurndcyxxtqrqpprb_^^`ba[Z^`qveeljhukovv|y|}cjlojhii|~smkkjqrqmqql_`]\\WZ\^oefkxiyi{y}ogwichljjijnohrdlcbjfh~otpnmqqrrjac\\ZZ^p}ddhcczfgifiglhiooihihkiov}}l]bcefrlplmrqxnprjaa`]\[[Z]qzeccgcci}tugikk}~prpnkiihmhmml]\\^abclfhjkkoopplggiaa_\\][_dpzccdecc脉eh__hgdlocojdikonpojn]]\a`_rrhjmjjoqlffebaabxujuxszeddffcj__hctmga[akjknkopnlt[\\][]^tdaocmlihiheegebaaefijllmxtfghdry{mm}iab`dplrmoilh[[]]\^^aovvadeichgfjlthiceexscltvrbfhhz}lmhgf`h|tkiikl_]]^jchb}k^ciihoojbefehwwvtuybckwkfiqeef~`spolj\f^_jcu~~}dzcdlcmllhpfefwrsvqusgy`zikide[[n{`zz^_jdiab^aqoy}|wkledfvss^tpenopdj~z{hdd[Y^qfi_[\\hZjl{to}|rspkjjfevuhrbnmdppdi}jidedhd]gjgf]][ZY[fuwvi~`m_blhjhnfzawognodh}iztdjehcbaahmkhg]Y]W[[hs}xn~`^^`hjihilju~Zpnfnidjf|blZc\fead[jjhg^f]\Vocud|kukhgab_caaiikov|{fnohhb}|^]YZ[bY`j^iijceldZXYvy_cxyyjffeoag_^dkjjhnsxo{|ydicmljbbc^\\WSm`sqijhh^[]dd`{\~{ylgeefaefbinimodwwpwvx|eahknhbcbb`e\qnrpwwvtnihf[]\gfaglipagbkefeef`hmpnentx]\}~vmbvllgedbaa`a_khkkywwvroof]]bladk_^_`_ageefkffkqponmst[\_rimxjlkkghddaassr_ba`ivvunhgf]b__bcce^_`pjeegkliipqoorw\btmjyghegfdffduzywwbZjavsrqnhdfX^_bb]_mn`a]eeffiihfoqodY]_bhfgnnsbefeededfqs|{ddywo`\\^]_dbe[_i`^af]]eekijfcgfqbY[^^`eekipoueijheedjhzrbmqZ}{wn\\a]b`dcbb`_`fplffedgf`gcbkq[\__idimlnohjihdaeeflnnortvj_}|{_[ZZb_]cce^iklnpnfccdccg]kr]|gg~}pkcciffcgmbmmkhoppwt|e[bZabb\dbnrtstpqlfddc]^bjqw|ukeeccifdgmqihnlkipk}rzwuolaa`lxzswvwrtkjghddc`b^^_qnj{qpkpeccghgiqvurznjljpoz}xnidfYfdlgiussqroqfddgcada`}nmoqqjjdcciijjqvznkggunzskjuefe``ehnll{{qorqqmjikdqfe`|ujspopdccbnmor}xrfkein|{rVllnlfqqpomor~qrqvlyggohoqushfs~~w{pxjd__amnk{mmuiicekuvwj^]XmRS\pegoimmsommseon}|}ggs{jd_aiitmmihfcbdfgvjjgfiVXUXVlpsrgmroplkm||{}~vluw~zmwp_chhprhlmkllkbbcolfgjlhuzZYV~|vtovqooigzz|ywj|{xxnpmqlmimdfhhp|sjrrobbjjfggogU\WSflqvrojoo_aqzzsy}utkikhkijffagh|jkjvsxrnhffgigmpn^_gu{yz{rrjoosgu}xpsruz||ttomsnlii{twYYXXWWYrhoxmcj``prtlcjlf_\fprruz{mXeXXdYZY\^bd`twZZro]\YXWWZhdhhfo|ruy~bd{[\[]dhvx}uj`TQUVSUXa^b]`}oXWWnm_atZXWgpzufmpkrpdqtuya_v[ZXYZYZh`zyy{mo{Yuwv|XUmmklxt|nYt~[awa[Z[huvketektriiqrdmuws]\VYhiurmo{yuwuu]xx~j^plmprpnn\ijda[[aZinnvtxtjtljreqq_vkbmZXjiqkohni{y}lkqy{~znoropy}tx^llbb[bdoof[c|yltrsi_bbca`k_YZYV_hfighgk|{lqxyyqqwoorr^mmebccbZZ\[ff``bpqqmjcraackdlmTTUVeifghgf~u~xrrmq{quoq~{einx}uwb\gZgm\nobqppm_bdaabhap]TTW]_cgghhgt~~uwru{zoqqro~~ep^ZZemllrrmlkca`aa`ehnYcai`dgghghjUassuuyyooq~qqwddgc]XXU[WYlzssqqrpkkifbadcdqrkemecfddhhiQPSasrstzqyrxytddyu{tdc`\XX[ZXZ{||yssrpoox|b^cgiokeinhfn_ciiPgqsrrtu{rttzzx\ehijso_^u]XX\Y[k|r|rsoqxzltfh_ilmhghl\f]hii[QShjpsrsrixsquwsosfhjgtb\XXZsnZfp]qonssu|~usqqnhmlhnm^_eqkjjUReitsqrruppwonbffjgiil{~gzol\lsrssl}z{kz|rwmmlmkkgUi^^[U`adjriprqsuofgch]]dhhii}~{xz]ZfqirtqjjgirhmqhdnrwwuXP][[\U`utviphqkl^jfXY`rfeddpjlvtVXV[[YZbihpjjckfhiqsmsvxxz|k__\[`^uvm`codl[b`c{|{_XYZudcacmqknnrWXUWY\\_akcc]`hnojnlmyy}x{vb_\^\gcgnfb^_\^\\de}llbbYY`dbbmjjlVVSWVXY[agc^]]fgghglwqz}vx}ba^coiofcec^`__kbdgmnn{[jccdpkmijjuTVRXYYZ`ed]e^ffghhrttyzw~~b]orjggvfda__ck`cghhollmeddkstmo||ye[UXc]Z`nbcekj_gghjpvtwaab^_dhfbfae`s^lmkhhllmnpfjlhssrqsng`ZXYZc\]dg__ie`hjlptwwcrYYefobdc}zt}sztzxrhhzykrqrlife\X[Zznm`b_`imjccherzÃu~v`cafbacui|nlzwxx||}xjn{nmqkedd[_X_`buj^[\afndcaVeeWwx˅`|hbr_rf^aln}p|x}}xvhjllgpdh]]XXecau`[Z\jbgdXVVNUWmyxpj_bdf}|vb|xso~tVhsyxlomgeemi]dhvvas^a[_[]kY[XZTT_kcZdlf\[_^^]ccfdhomk{zkub`stvlmooggag_cadu}|lXX\]YXZWUVSX_flcdomqb\_\dgbac_c]bdjhf__oekiikkha`abc^]}~lW[[XXYYUWUYbdfidchppr\decfgg_Q`^\o{xqe[_`m{smjkjkiffkad[Z^WWZY[[^g^\[bddgiiklnnrdovlkwkc`d`]oqUT^hmq\ejhjjkjipoc`Z[YW[XZY[[Y_jfgihdegmmnve}doonooillgnmnndWZYUUYn[k[\^ilhjkrqmvs[q\b]]\\Ydgjddgg|xkXV^[okijhgffgeel{USZSSTRY_l\]hhbxjenlpmqlqW^\^_\\hmjsgcxxXW{~mllheffdehZVUUWYXRRYZip\\ca_lbflmroqrW^`c^]]quvusgax_^^efeaeebVWTSSNSSYj|\]bo_o`qzosd[mx^W[`^^cd^yttfX`WV^Z[rchdbaeeffgaaXZSSQRRSXjw[[ZZ^ZZxozZ\]Z^[`[\cc^]^]`^dktqq`QVVYZytfad`affnefiaXXWSSRSSTVjs\ZZ]ZZ`rij[]_^qrdsddc_^^]c]czbaQQSUVXa\^__adeffb^^_XWWVSSTTY^jsZZ[ZZy~Y\SS[ZW_aWc_Y^aeege_cRRPQUVTTgg^ad``efb]^\XWWYol`kpks\Z[\\ZatxSS[Vg`ZTOUa``dafgdbjPQPRPRSi[XeYcc__``\\^\XWW[\_`abcml]]_Zgoy{n__p[UVUZfcjdf`b_RQRRPSSVelmW[[`Z_^]bbj__X[[mhYbikhY\^^oxyxyp_`[ZZUv^skb__bdVSS`X^zYtbU[aa_ffe`W[\[]lljijnYYa|k_Z]eZY[sWjhgdbT^UUaZlvvuu[qx[\d[dbb^e[[\mghkfig]oTn]_]XYPPcqWqqUVb\aXZUXhfpxy~tyzuobb[Y[khiSieYccdZ`vrnou\XXONSg^`WTT_Qacrkftzztjlha`a[Zlj^hVbaXddZ_⒑q}u^]XYX\YS^a^]UUSQPR]lnmaxvXeWZc^^]c[toVkc[bcZ^wsvv^nhX^Y\WVVW]ca`^UQUNSR_jtovydwYWWX]_^]^`_~isNdbZb_Zyv_ZqW`OWRZZVYQ`a``^U^USNf[l[sbylb_^Z[WZYX^^`dzjvon[ce]]XrpSTOPQWNU_S_`__aZ\b\QPPmpW[pqpa]]\fX^WVY``^]dindvoolZ^Xcb`XXYSSRNIbUif_a_^TRT[[YsTu{rpzd^\\]X\]Y`d_ceZmmekjloYV]ad^YYXXW]Sheiellkjd`^\RTS^_Y_c`gW]Xa\]\\]W_cfd\djoTSrrjbtWkab][[XWXWYXc`bbollkgdd\TTZdY[bVTUVUW^\\]b^]cgfeddjjRSUf^bk^`aa\^Z\XWkkXZYV_kkjc^]\TYWW[[Z\TUVfa\\^bc``ghffhowxRXia_m[\Y\\[]]\msrpoZRaXxkhhfd^Z]PVWYZYYSUddVXS\\]]``a_^fig[QUWY^\\bbgVYZZ[Z\[]ikt~s\\[o~mzeWSTVUW[Y\RU_VTW]ST\\b`a]Z_]jYPSUUWZ[`^cciY]^]\[[a_qiyZdhPs~qmeTTYUZX\ZXXVUV\fc]]\[^]W^ZYbhSSVV`Y^b`bc\^]\XX[[]cddxdhjmaVussrWSRRZWU[Z\T_abefe]ZZ[ZZ^TaiTr]^sreaXX]ZZW\bXcba^dee{mks\SZRYZYTZYcgjijfhc][[ZZTUYagmrkv_YYXX]ZX[bf^]ca`^e`~sivqnlgdYZYYWbmphmllhkba^_ZZVYUTUgd_qge`eYXX\\[^fkignc_a^e{erto~f`\^Q^\c]_jjigizfh][[^YXZVVrdcdff__YXX]^_^ejtywnb`[\jx{|cqkbam^^]XX]`fdcrrhgh{whhda_b[gw\[Vqj_hedeXXWcbdfwyzplfZ_Y_cwr|riMdcfd_iihgehjvjjhmdxp^^f_ehki^\httlupzem_YUTVac_yna`i]]XZ`wkkm`UTOeJKSh]_hbfekgeej\f|etsu~s]]hqy{`{YTW^]\\]ha`]][XWY[[k`a^]`MPLONdgkk_fjggdbd~ssrtzuzmclnuqw{dmfTX\\de\|`a^`a_WVWd`[\_c_lrRPMvtnlhnigg`_qqspmzassonegchcc`cY[\]duwof^gffdVV^^Z[\[\e^MSOK^bhnjgaffWY}hqqjp{~vulkc`c_b`aZZ[U\[o__^kglfb[YYZ\^\bfeUU^kqoqrjiagfk^lwtogjilqtsywllgekeca`~ot|||wu|}yꊓ|}臅~~Ȉ}~ɠۗ|燑}}|{ʌ}ĮȔ~¨{y}}stypsuuqs~wwttqt}}ntxxvtxrvrz~r~rkkljhipwuwssvsry|ttsksoiihkkpqwvuxxttss}tuokkniihoiwuutwzqwtxwxlonmjoihihomiov~wu~pkmkkmlklsphmzyov~tmojjijilmhrrqohp|pkrmnoloozoqhryijzmy|irooq}qp~xwrtzt}uwwrvuwwywzp{zywxwy|yotzxyz}~~}sjm||{yz|~lykjkysy{zwuwxmjljjlqpwswzvrmyyzjjlmtuu}uyrunyyvqkljuwvv{sy}yqvsjkkrrsvwu~t⏎uwvxvjjspxyywzt􀒀yytlunqwxxyutr}k}y~tt~zx{|yrnjji{~~|zz||}wrqr|lkjihw{{ϑz|xwunopge~}xlsmjixm{lsomypdrrnqyprkri}|zi~tmxtzssr|}{yyhg{~jjltty~vz|sommyzzgoqtsmpttyzxptlks{y}|pqx~|tsw}|upgfjytqsptsqtv{~{jmory|z{jiijiimilwqruut}rphkpsyvqjjiqvskvrvuvzrxqtxy{nkikiijruwrqrrvyyqttsuojji}qqsvutxzvxukrnjkjje||rqttu{yxyww}jjkkjmiecbbzyututw}yxvmkjjkhgeedbprnzz}yxrqkkjtfgdbfoelu|}y~tnklkjkklddegv|nsrux~shiljjkkj~|zz~nqbfn{wu}~ollp|{f}drm{}p}|xx{w{~}x}{mv~h{}w~~|vv{~|~sz|lnl~~~xv|tz}tnm~~}~~yxpu{yspprrzy|px|~xww}rsppuutssvvs~uwxruzntl|vmqrsrrxyup}}szp|t|otrr{uxx}vt{srrwqqrxx򇐀|t}}vrrl{xxx~wymmlk}~{~~|xtsl}{xuql}~}snrpqt|}~wvwo}~pj|{z}wvp~ysooh{zr}zpnnxkkn{yxvx~~}|yytqmow~~x~}}}wwxwnbcs}|pzz}xxwopoi`bddvyy{}y~aoc{z~wwohh}ddadllzxyz{~~`dhihejbgbjvwyxxn~zcod]]^]\^eigiddgecjtxy|zndde^e`\\`eihgjiffdenpwvyfea]^]a\\d^kvggfimcjgjirvi^a``]b\\^^eb^bgspvvjhsoa]`^^`a`ax}|if]atw|~ummbhqpf_b]^]`^bd_hhfe]d}uto{d^e}aadbeyezpef]fz~{uzm\]~otcv}|xmyzz}{{ow\tzxf{yw|ytcce{w{|q|w}edrs{us}zx{sml~guugrwmzxtix|rjmm{gwjikkmjmvf|{qpolmkloyuvuxne|jonooxxz{qrrmoozi`crqrrqnor~x|{|rvosboa`aninuqomjlxw|{{t{vnc`b``affmimvw{|usumie`oop``bcjkksvvhldg`oolgab`kllq}yvvvflokgli`aahhikmkyukizmlnl``hfmnompxkvvwwvtwookbkdgmmnnoozykkvhrw`qsx~ovuvkjtpmqro~~ix{d``_o{{uvurpprrsmhghxywwqba`__|mrr~prn{mkeef\[trnbic`_ncrvbiecofZhhdgofhah_trq_tjcwnjxoihhrsqoo^]ru|``bjjotwlpqheccopp]ee}~{jhv|bfjjopuxmejbahqoxsrdcslsuurjimtsrke\[`ojgicfecgjpsp_cehorpq`^^__c}_bmddggtrtfe]afiwnkf`__glhahdhghngmgjmnqc_^`__`gjlgcddhktmfhi{hic_^^_truuccehgflynjkiww_fb^__Yqq{dcfggnlklkkq^^_^a]XVUUnuzkhggjustplki`^^\ZXXWUdfbllwuyyvplked^^gYZWUYbX_ip~qmsttsqga^_^]^^_WWYZyioawggjlsstqf[\_]]^^]qvpmxx{msuvbdTXbnkjxuvwxdbbeqwwovYqWvsfamncoomosmsvsnzrvwpvaksvv_nnjpprllmtxtrwvhoqacauqpqpqpsnmtjp}vvuxicbsppoppmndks{|oxwheeggyvukqmndjtvvmmszgheszrcgghihdsilkfimdibpiacdecdjjfb|p{{ofmvfqiobgeddmgvnio|p~}|sjhpedcdk{gghjgghhxqww~rhrrieefe`tqtggrhmmy}ttkunaa``|llro}ttqmjjbwrkvm|lhbrtridighktq~stuvmmettzfa~|xsrvupsmlftpjff_zyzz}~{vwwqqyvhsqgeevyny{{uyy}y~v~bbe}rvqvomn{wttsr}ounjgcem{zvwvxovwxtssxsmmnmd{xVXis|{rveppsmwnmeed_SVXXmznowwqvsotVeXqxpsmld]]rWWTWaaonnpqtutVY^^|xwv^[_UZU^klnnmcspZf[STTV\_^`[[YWV]imnpobY[\U\WSSTXX\\`_^a`XXWWackin[[XTUTXSST\Wcm^^]`z_V[Y\[gk^SWVWTYTTWV{z^ZVZ_khlly\ZhcVSVTUWXWXott|b_VZmptvjccV[ff[VWSUTWVZ\Waa_^V]w}xvljgsXWZsWW[Y\q]rg}]_V_rxw|tlseVVxxwtevkZmsr}|neqrr{z{wtuhqWlxr{o{z\q|xy}|{|yyxsquxpkZZplz{}||{}tvjupvwy\Zhipjuis{}}|}~~soswlcbt]kj[glb{}{{}zsozl`pt~j`ccq[l^]`_a_bwxuvxnvx[tws|ihfcc`|z|ad{nkvvwykjmdZ|sagffnzzx||lwnpffceen]TXhhjjiffhsz{y|ylpuppfjehxVcUTVe_dlhfcvz^ayk|lxqoohpkxbWTWUUX]^d_cklwxy|zopigja^YUccdUVVYYabbhkuy~{||zykx]aY\Ucc`\WXVaddccgux|{pmjxjj[ad`[`^VWW__`cdboyzyxi_wwxw]n}ua`baVV_]efedgxxwvl_kkwykkjhyjcc_Xa[^eefotmv``j]gkUfhlrcihi`akgehifwt}~ztt^moXTTSdoohiit{iggiijc^|]_nommfVUTSSoaees~gidrca[\]TSkidV]WTStbWf~|y~mY`\Zf]R``\^e[]U\Shfe~UkaZnebphaa`higddSQeioTUWvw~aafkodhja]ZYdfdQYZqsp^_lrY}]aafglpf]bYW_fdmgfXXgzwbjl~lia`dlkjc^UTVe_\s]X[ZX\_fjgVZ\_fjhiXVVUYsTVaYY\\jik]\TX]`ngc_XXU\b^V]Y]\^ve^d^aefiZXWXWUU]aa]XYY]`j~|d]_`r_a\WWVVTUkhkkXXZ]\\coeab`nnW_ZWXWVRhhuxrYX[\\]]ecbcbbhUVVWWYUROONekra]\]]`ljkgcb`WVVWTSQQM\]Z}yccnlppmgcb\[UUV^RSPOSZPW`f~thejkkjh^XUVUUWPPQSp`gYo^_adjjkh]RSVTTUUVThlfdnmqxdsghhkkgjvx~~~swonrghvhlfhf}vy{{zyuutxtyzpzyyz{qqposllooppgghgkqqy~w}uqomuooieumlfhtwu{vuzxtuo{~s{{uz||}rrztvlmoprswkgnmksr{xyzsepsrggft{hnh{u|~|xuuxxrr|}zy||{|y}mmnpov{yytozzrsrrsxx|optziyssh}{}{{unqt~}yz|~|{utwrxqsstvrrusstyvy{svzz~~{|ywqut{w{|}zutnx|wsytxwpnoopoutuxuoz|~w~|uzyxr~zz~|yzn~msqvztmmnwqjo}uxlyw}pqtsuouwsz{|uw~zw{{|nlhiyx{yxkkorpp|lljyzxx|qz}wsywwmrrsz~||lk\lzvsnhnlt|znjlplx{|~u{{molls~|zz|qb\]iusdgnhnrzyzroqpk~~x}pvwoo_`^]oppluhltw{{rqxvxlmw}ty~~~}my}~{kg\\^]zztztys}r{qlh~ulyzty~~~|yyv}xurrq][\__orzsstx~~rp{xmnqvxqssw|}~~|{xzy}u|{v^d\\``{sllzuy{~|jkqtyyuqoo{outv|~y}~}{xz{{u}}s{|ptysig^]a`}o}yyfnluqy{xxvttnu|u||xxyywslpknoylkmmgmfcbaa{yusklgpyqox|vrurrtuu{zy{{zononn~sukjohhiqbbap}|~~rsmmljyunuxzuuxp{uz|y{qknr|o}jeiunlljfpmlddevrv}yhnmhstuutyvxysrrmqo|sqlloofwccfflkptxxpeo{wv}stx~ifejgswtz|v{xmxtuuxtolpdb^Zcffifmtuwspphvzy{ut}~nokhffkx䂈{z|}srrxxn}]Z\ggacmopvwx{oernlmnmsklujw~zxw}wsrr|{wv\]bgjh`koutuwz{pxomolmoomknqpk{ym}x|xsrrtsxzvvb^^cikikoluuvvflml~nnp{koqqgpy|x~{xzkwuwvvrxrsszbh^dkikklro~xolp{|}|xtns}shnffgghktxwwjupruv}vurssx}}bgg^jkkjkjfntnqll{}zmtoprvmntuiiwvxxukqttujvwwrtt}~~}bddikkjkkjmuknntzuuvvxopkrnoikhvxxwigtjiiuvntr}ffdbikknkkmlosstt~xrr|r}i|{wyxzy{khjcisosxpq~khkekbbcfeflkjjkknklvutmtzzgluwxyxphgdjakjwphlkjhjgaejjbijfsrchpjkknluutt|ymec|zt{x{vvuwjg]]bikh~dhjkjuhfdchhggfcjmmjoykkjjq|{x^beswx||{uxxphe]^]benogedhfhrefkeiiffhedcjmoojjmijiiosq{bstuwsruqsvvpriggcdVimfgdgfhogfgkkhhiefghmprokjikihe_qnuvuzxv|ntoorqpnmegc[Wgjnnegigfegindlffukpqtpqnhhjlheqrszvx|y}umllpnhmigf]Vmmopgpiusfddlcnkhefhimk|wusqqni{sgqstrs{|tmjizsmlmllmkjlnbmgnz{|{md\Z[[kg`eefmtqoyuuttk}zx]srsstyt}jijsnmmllkklkjmwuw|~_]Z]s`ddkhfhppzyttpuzrfjrsr{n|plhgtunppllklmnnx~mk`t[kh_lijppuy}{zvwzzqm]rtutyxhhefhrsplmllmr}{~{~~{l\bhrsshlo{|z{|yzznfvuuxvxfggehls{oomlo{~y}~~bttwzst~zw{{ouvvx~|zjjweegn|}|onn}}u~~|zux|~|{{vv{w|{{z{qfldcnk}|j}tw||~}wvzz{|{zzvuv|ywmrbbd|{psrx|rvyvzys|{{uu}|emmyzzey|ywqppsttvy̢qstvw}{gonlnrzupzwurppsvv6qpuyxuuvfalgnz{{yytqpr}zzqrpqv~}vwwvtefm^bllmmzmy|suyuqtywsrvz|vnoojpedoeolmmtx~|stuwtxyxpsz{vkmzjwihdffhlitvw{{u|Ò~yy{yrtl{juvhihijisuԃǸw{prvmpykinsjw~~񁇄ŷ|sp}o|ynrrgvz~wyv}|{}xthchtuu~zurrowxsxyzcqs}~oorq|psowfecv̬|nppqqrluwdzvƕٷmmnnppqjttuf{vþĺnmnmnpp}voovømmnpps~ouz댛mpmlmnonpnzy|ǨعnrprqoqqmnǮҽnottvvs}ùҾvswwvwt{þеqxwvvu~ȺǞvpwwz{Ѹɺ{xwxtzɪɼʯi]^]aa]`lmtt}}uvimddh]^ly]bZ\[rknqqpovkkjokpqhqqppqghgeibaeefgy]]aggotmt||mifekee_[jaaZ]hljplkpwnjkew|rtjvrqlpqqrhhoik`befhim`]dbauhhqvopqk\hki]\\jo\b\pjqsqmkknnhh{rvvsqpqqrvnuqaabeekqnoiepohihhkpopuhhl|p^nzwgg\qt{prqpkdgjxzt{xvvspqs{vqsuohhkfmxghhjkghhkkjkrortkoz{pzzttvnrsstqqomgkuuwxjvvwuqmqrruvzxmjhblol}hninmedffggmlnqngrwwvtvqsslusrkpxon|}whuutpptupmnbrcj~vgkojccdnhbguxnpcq|xxwzmruvegjijekmip~q|rkwumtpmx|z{poqcc_`~onqonaafhggtccapxxqnnrzhqtumivomvmchhiuwzwwmrpyqcbTbplid^dbjrpwe{acfcoryyvrvu|l}}{qu{qucebbitotnnpzh[TU_kiZ]d^dhpopuhehfbuxvvzyyp{tgx||wuylm|xye}x|{{treWXVUeffbk^bjmqqgf{nkmacmvtvyynrvw{vxu~}uzcuyozz|rt{{n_]TUWUppjpjoisuuf{~pda^sjbvxxrrnrvvwwvwroolsn{kzuh|s{{feSSUWXegphhjmts}}{edpmbeimowkm}mptuvvurqnpos|kzzyr}voxxjTYTTXXnh``ojnqzswq``finnjhffshx|nnpuvquutrnpqqjrxqhpqy}einh]\TUYXvzqc}}s}xxnn\b`jfmqq}qommfmtlssnnoomi`d`cdn~z||cbcc^c\ZZYYxwoy}wokiaa\dmtgf{~quolmjjllmqpoqqpeccs{k|{mbae__`hYYbporxxuiiccb`ojudk{q~rmnmphrkpr~oxqf`cgqcra]amedd`]edc[\\hdhu|ruxxo_ed^jjkkvwqnqpkiiehevrzzifa`cd\n[[^^dcgjoog]flihphjuvnvt`]\`^injqr~~nyqodnjkkn{icae[XUQ[^^a]djlnjgg^gullmijstdfb_]]bn~yrqs}~vxsihhmn{scqSQS^__Y[efgmnorf\~xxyhdcdedjbclanwuqon~smhhrqkkRSY^b`Xcflklnqrgoytwxvececdffdbehgxbx|rpdtnsnihhiinp|kkWTTZ`cacfcllmm]cdboutxvxddy}grbfhh^gpsouzroqbmlmmlhnhiipwyW]TZc`ccdcifuofcgooppwwmjditj_e]]^^_bknnalgilmtllhhiinsrW]]Saccbca]ekehccopmswcjefhldekl``mlnnoolbhkklallhijsttytrWZZ`ccbcbbaadlbedkmhhjtutlnefbhef`b_lnnonn`^ka``kkcigsvuvvxw[[\ZX_bccbebbdcfgfggrlvvhhgrhs`rrmooqoqb_aZ`idhmdfswyb`c[aXWXX\[\dcbabbebcmlhbhnn]t}avj}}|yxvvmnpog_^[`Wa_lvd]aa`a_X\``X_`]ki[`habbecllhhqnb[Xqoip}}zyynuqllma^TTY_`\sZ]`aal_]ZY__]^^_]][addafpbbaaviqqoSWZhkyw~}}|unrrknog_\TTXZbd\ZZ^]_i]]b\``]]_][Zbeffaad`a``hkis|Wghuhk{||ihkgillgh`^^Z[M^b[[Z]\_g_^_cb`_`\]_`egifba`b`_\Vjgm}tkiokj~v{wrdjeeiggdd\^ZQN\_ccZ]^_]]^af[d]]^bhhkghe__ac_\jjkqtuukk||rvoskcbbfd_c`^]TLccdd\d]kj^\\d[eb`\]_adctnmjhhe`rj^jlljhpqizzb__picbcbbcbabeYd^epoqp{zyd\TRSSc^W]\]elhfqllkkbtqoTkjklkniz}r`_`idccbbacmkmp{{zwqwvXVRUjW\[b`^`fgurqkkglqj]aikjrdqt{ea^]jkdffcbaccddny{~rvtrdbWkSa_Ub`agglptrqmnqqhdUjllkon}ux^^[\^hifccbdhsq{{qorrobSY_hwij`cfqrquyrspqre]llnkv}ux|m\]][^bivqeeccequwlqrrYjjm}pijt~xuyzz{qosrekmln|sq~n``m[[]drsrvedd{sohrrqojl~{{|vs}vsrqlmqmvrzppopg\bZYd`sr`s||~}{wgkporqkinnؙw~zzyywrsrqqwlklv|rzvnmcvhXXZvruqscfekoejmjnmgsty{|wrzrrxkksz{{r[uccopp[vv~oqn}}z~jdccfggim̕eghsjksws}~qy{u{|w]edbdhpkfv}wpm|~heccfjj6redimliiwukv}}{xu\Wb]dpzzqzyqox~yylgdceqynmwefddjrptsukm{lli[\cTXbbccpcyoqhsilhdgt|{|{rmjffyy|hlpk|acdt_f[Ze[ebccjntq{}{hgikgz|slmldfrmmht^al^k]\Z\\^a^jlmpp~|}}}zywwixp}tqmmolewgsyt_m]zhj[^^_`_ijy|vx~}~~zzxx{xvxvxjoceh}v{`r|}cm_^di`lsstv}z{|~yxxyzzwtpgcozs~|t`m|zmbfh\lptmo{~{~|xxwyzyzzxvz|}z}||hn~nnpmi]X]jj}}uxz{zn{~xyz|}grffcijglnoXfhzr~}~tw|x{zzǂvccfencfdk[ZXly|}~w{zzpcddee_izkYply{}~ww췆wyʻddccdde^hii[ply}}}uw}eddceddqjbcku{}}}򶲩wveddcddfrbioz~~zrrhecdccbcbnmpðwrwhkijicee`buxy|ð}{ȿîhimlmlkhqtvzĠŰoloonnjotxxzzzèjponvmjs|~oinnpq}|z|spnoj|}|l{긚¼_TUUWWTVcdlkttkm`d\[_TUcpTYRTRibfhhgfmbbafbgh^hggh^_^\`YY]\]^qTTUUX__gldksrc`][b\\VRaYXRT`dbgcbgneab\nsikamihcghhj__fabWZ\]_`eXU\ZYma`imfghaS_b`TTSagTZTgbhjiebbee__ri|{mmjhghhimelhYY]\ciggb]hhab``affk^^bsgVfro__Tikrhihgb[^aoqkrommjghkrnijmg``c^dq`aabd`a`caabhehjbeqrgrqklmvfjjkhhfd^bllnoammnlhdhiilnqpea`Zcgduagbfe^\]]^]cbdgd^hnnmkmikwjclkibgofeswtyn_llkggk{zzlgefZjZaun_cgb[Z[e_X]lndgZhsonnqdiwmm\^a`a\bd`guhsibnldkgdos|rrzgghZZVWvfehgeXY]_^^}kZZXgonooheeiq_hkld`mfdmydZ__`lnwrzooejhphZXJYgc`[U[Yaign\rXZ]Zfioppmim{{lrcttrhlrhlZ\YY`k}zzglffhr_QKLVb`QT[U[_gfglz_\_]Ylomlqppgzqz{k^nrsnlpcdsopw\ytoszssmj\NNLL\]]YbUYadhh_]secdXZdmkmpochlm{rmnkutlqZlpfqqx{{wsjkrss}fWTJKMKggagaf`jlm^sug\XUkbYmoohidhmmnmvniffcjerbql_syx{k|wss^]JJKNN\_g__adkj{wttr]\gdY\_dfnabsbfkkmmliheg{fjsbqqpxwiztvmgooaKPKJOOf_XXfbehqjnhWX^`eea_]\j^nrddfklhllkifghhaiog]ggpt\ae`USKLONnri[utzjtoofeTZXb^ehgtvgecd]ckcjjeeffd_UYTXYdvuqts[ZZUZSQQOOqogqyzytnfbaXYT\el^]qxtugkebd``bcchgfhhzfZWXXirzbtsdZX\VVW_PP[hgipyyozl``ZZYWgal[bvrgtv~iddg^icghtemfZTX\gXhWUYd\[[WT][ZRRSa\`mtjloofV\[Uaabbamnwwuheggb``\_\mhxoo^[UUXYQeSRVUU[Z^aff^T]eaah_almemkWTSXU`eahizwutexpiwg[fbccep]XUZQNLIRVVYU\bcea^^U`nedfabjk[]YVTTYeuv{{pvihjtunoka__efqwwgWfJHJUVWPR\]^defi]Sw{qpq|_[Z[\[aYZcXvez{||zynlhffukf`__igxyy``IJPVYWPZ]cbcehi^frm{ppn\Z\Z[]][Y\_^oYy{oszig[kfjfa`_aadfry``MJKQWZXZ^[ccddTZ[Yhnm{onp[[pt^iY]__U^gjflqifhYeceed`e_aafmmMSJQZWZZ[`]lf]Z^gghhonea[akaV\TTUUVYbeeXc^`cdled``aadi{fMSSJXZZYZXT\b\_ZZgheknZa\^_c[\bcWWdceeffcY_bbcXded_abijjn{tihMQQVZZYX[cY\[be`abllkce\^Y_\]WYVceefeeWUbXWWcdZa_jmlloylQQSQNVYZZY\YY[Z]__jdmm__i`jvwWiidffhfhYVXQW`\`e\^knoXVXRYOOSRSZZXXYY\YZdc`Z`ffTktYmbttswxpommdegf^VURXOXVdn\UXXVXUPTXXOWXTa`RV^XYY\Zcc``ifZRPhgahttqppelhccdXUKKPVWTkQUWXXcVSRQWXTVUUVSSQW[ZX]gYYXXm_iifJOQ_cpnuttsleiibef^VSKKOQZ[TRQUTVaTT[UYXUUWSQQX[\\XX[WXWW^a_isO_`l`crvvss`_b^`cc^_WUUQRDUYRSQTSV]UVW[[XWYTUUV[^`]YXWYWVSM`]cvtkb`fcbvnrni[a\\`^^[[SUQHESVZZQTVUTUVY_U]VUTTX]_b^_\VVXZVS`abhvkllbctsimfjbZYY][VZWUTKCZZ[[S\UbaTSS\S_[XTTVWZYidca__\WiaU`bba`hharrZVVg`ZYZYYZYXZ\P[U\gghgsrq[RKIJL\WPTST[b^\gcbbYkhfJbaabbe`qtiWVW`[ZZYYZYX[ecehsspjpnNLIM`PUTYVTV]]mhgbb^ch`SW`aai[hlyr\XUTab[]]zZZYZ[\\fqsv{~komk[YNaJZWOZWX]^cgkhhddfg^ZK`bbafezzu}moUURSU_a|~{^Z[ZZ[`ljsuz{jhkkgXKQWao`aVY\hjhmqiifgg[ScbcebmtloteSTTRUY`|}ni]^[Z]ilp~~yeikjjPabetg``lwqmrsrrfehh[bdcesyjiufWWdRRT[ij|in|]\\tkz{~iajjhf_av~|xwuutumiskiggcchdmiqggfg^SYQP[XjjWx|jttvvy|}}tq`dhgjha^bbvzoxssrohhgffmcbcms}iqmedZm_OOQmim{{zixxwwz{{|m\_^ch]_a^bvwwc^mmruuphptggmbbjqrryiRlZZfggRmmufifttwyryvv~c][\^__awvvu\^_lbclp~hrthprlrsnT\[Y[_gb]mtngdsv~tz}}`^[[\^__swhZ[`ed``q~jbmyttrolSNYT[gqqhqohfnvws||pqd_\[]gncbtiY[[ajinl~jbdrvccaRSZKOYYZZgZqfixvtsu^j`c_[_jqpq|lf`^[]qquaefctYZ[lV]RQ\S]YZ[aekirvuru~tp^^`a_pmf`a`Y]jee`mVYeVcUTQSSUYVacdiivrruzrts{xrpomm_lfrvpfd`acc\p_lrmWeUs`bSVUWWVabrunput}u}{t}rropnnmnpyigigj`f[]awouXkuu[dWV[`Wdlklour}vsosrsnnlmxkjhfwd][hslv~vmYfusdZ^_Tdhlegsvw{u~or~qlnmnnwjllijqtvsv{zz{vuv`gwffhd`UOUbcbzttiuw}mnx}vzttmktcrvqqsuz{zt`j^^[bb_defO^aqjxusuijv~刉~znjxyxrrszy~~zn[[^\g[^[cRQObosvsulurwxwuzmwn{{rh[[\]\]W`pbOfbnqstuljwx|y{xwim}[Z[[\]U`_`Rfaorruurh{{xvjp|[Z[Z[\\haZZajorstr婥viqiv[[Z[[\\^iZ_evossvtytlee]^[Y[[Z[Ydcfsxy~twvwuu|v~zjej{v^a_a_[]\XYkmmpw~vsvwru|~|vtv~qot{v^_ccdcc_ikmouu}ywws~uzuxt~}{ebefdeagknnottxsu~y{nn~`fedmdajstz{v~|s|}}~e_eeghtsvoqz~}x}}|~~ifefasuscp|}򦊊zyy{}t|}fdi]\YY[[ZZSSXY[Z[nvkfgVV]`[a^XW`XY]fed\^SSYV_Zb[q{}}`]_[\Y[YWXRRSSXY]dkmcpgVXXc``XYXaa`Y`\][QNZYLVLXa{zxl{|zmea__\[[VYWU\SfSST]ia`ogra[VT[YX`_dc`_XYXQYUTXSJJLPSTzlgiiqlrolke`__^]ZYV\[btYbiehcc`hb^Z_XYZY[bha`^a`TSSdQUTNJSVKSq{oieghiignmgfc_^__a_ZVYYgs\hX[X\[]Z\X\Y[\^aa``a`bxw]dXORQPKMNjjbfdfgfc_nnfggocc_^XXYcwp]cYZY\\[]Z\[\Y[\a`a``bc|~c\WVZUSMNUhaadcddcfbklljghwmljjbZYY[noqdbYY]c^^_`Y[Y__`_b`o|aUcWUTPNO_a``fefealmqqopxoelm]YZY[cmmkkjaWY_^]c^dbaXZ`^`bh`cdhTUSTPPOO__``ccbfnironrpp~xlolfcfZYclrpojgg_d\\aYed]^c``dcg|{klW``ZR[RR[``aademnoounnsp|~}plcbbcj]otplmj_]\[^\ba\\b_abdd}irrkknocm\]OR^\_`dgcvosomnspr~rojichjirtyulfe^_^^_^pe[_hbcckwybeioqoole`US^[[]bjnvoqsvxuwsmh~vklhjjnx{ummn^`^^e`ghbtabdce_\fmhoijfabVV\[[Yb|}vspqvvtwvpftukl^ionp{vunaa^a^`anddrubdd~iienpnkjkeb][_]Z^nmxpqu{{tlqrwztpuumytzzx|pc`^j`icdetfajmts{}uunfgmh^]a``afgnzym||syukxwvwumtmpow{}xtujjpoqqsssutnss~}wva`ndpd^^aa`pzon|}s{yrqqrrklk}opxxutkfjpqmmr턀usn~gcs{}e{saad`ni~zj{srvvrrz}ux~wvutpkfoomr~~|ddbzjnwusq~}|}twxrxy{|~{wyxmturknqmkno傕cnz||suvsvstsuwyy{|~}~~}prlnpnlm}npzsquqvrinuws~}}݁}tiuzsv{~lv~~ttnmknugutuv{}~}}}gmqnmnmjuvkwvvuu~}ӻ׷pxrnonj{vmmvw~|ĺȵؼrceecsqoojjiiswĸɽԳsqddoqvvtihghhސʶƵrlifrssrjhiihhɺĺkc[lrspjhhiq}ͿƵƿhgx`mrpohipqrnqʭc\Ynmolmwiimmno}˺ɱeVYZmlnnkrgmnpz³Ӏ;ίͻ]WTU[coomokijzÿϵٖ]TTUWhlorooyzöЗ¶ѴfWTWeglnrrp͡˺ԼΠӧ^^Vc^ehrqqѱµǑ߿ú̺\aWc^gnqrq~uIJճƹ݃۽̌ʵ^Z\d`lloo~űҲغ̒^]\Xbbdiln¸ʼŸܬȓ_ihbhcmlmzræ¾˷{~}֘ƹ~pgwkljmqwĵ~ĸůײkk~j}ּѧǶų֊~ɿ՘ɵſȸѓшд͏ʈѭȋӺ̾ӂͻѹՙԔНӶ}ƫٺ𹶎вюx}}ūʽ̽˽ڨx{yxjlĪʮɶż̿˱Ђ{}rpijgs}ťºɺØϋ̜~~vkrhjn ·ǼǼֿrtopjwŪλΣӷ|wtnoieiʪʸ̯ɀwo~epuyǾɱՄզəztvnquuϻѯlj~sqrxzЧӴ׳}wwv摓պ¨̻ʷгyxwvvϹе̱vrxعրҾòѹvtwzǞԾǺ㹧xutwuzžͳʿʾݦuvvusz~˵̼Ȱߚryym˵Ŵ̯߮§zlmè{|}˶whoqyxx}տíñsjru|wxn^\aUTRRSSRRKKJOPRPRemb]^MMTWRXUONWOPT]\[SUJJPMVQYRgqx}xnnx|XVXTTRSRPPKJJKJJOPT[bd[g^MOOZWWOPOXXWPWSTRHEQPCMCOXpz|ljalnnb[YXWUTTPQPNVK]KKS_XWg^jYRMKSQOWV[ZWVPQPIPLKOJAACGJK{zo`\^^daeeaa]XWWSRPURZkQZ`\_ZZW`ZVRWPQRQRY_XWUXWLKK\HLKEAJMBJgpd^Z\]^^]dc_^[XWWXZXRNPP_^jS_OSPSSURTPTQRSTXWWXWZpoT[OFIHGBDEx``X[Z\\[YUdc^_^_f[\XVOOP[ngTZQRPTTSURTSSQSRWWXZ[tv[SNMQLJDEL^XX[ZZX\X`ddb_`necbaYQPPRefh[ZQQVZVVWWPROUUWVYXhtwwYLZNLKGEFVXXWW\[\[Xcdhhfgof]cdTQQPRZddbbaYOQWVTZU\YYNQVTVX_X[wx\`LLJKGGFFWWXXZZX\e`iffigguocfc]Z]QPZcigfa^^W\SSXP\[STYWVZZwausedNWWQIRIITXX[\deffleejgsutgcZYYZaTfkgcdaUSSRSRYXSRWUWX[ZvbllfeffZdSTFIVTWX[^Zmfjfeejgjuifza`Z_a`ikplc][TUSSUTfYRT]XZZbos\`dhiffc\WLKVSSUY`emfhjmolnjd_umbc_aaeorlddeTVSSZU\\WviWX[Z\zYWagafaa]XYMMTSRPYstmjghnmknng^kmccU`ff{grmleWWSUSUUbXXwwgjX[[wbc`hgecab]YTSWTQUddvoghlrrlciiorlhlmeplrqosxgYVS_U]WYYiyuvv\Ybelktunmf^^d_UTXXY]^dppdsskpmcxppnomelehhor{{tokl``edffgthzuhwkkfkkvuom[Zf\h[UUYYXXWfpedstk}srjiijjdecxhi}|{oolka[_efddgtzzywlkfuvx`\jrxu]rjYYXZVe`tyqwwbtkjnnjjsxz{{npunmlkfa\eedfxwwz}zxvvw{xzyz{q[[Yp`dmkihvvwttulopjpqsyyvxuopoekkgbdhdbef{ywyxx拘x|~~Zeprrikliljkzzkmoqqwytuw{vvu}usegbceecdxxyxmefvypigkgmh_ek{|mjvyvuyz{{wz|}}zri_kojmpocmyttjjdcbdkw]kjjlrtvzu{uuwx|}~tz~~^vcgdccakkamklkkzy}wuuv{įȪgywvnhded`pkbcklyr}~|t¶ɭiZ\w[Yigee`a_^^iym~ĮŤigZZeglli`__^źƷxic_\hiihb_`a__Ŀ践wvbZRbhjgbaaivsw~uǼŷ_u]nVdiggaahijfivtȿðŸZSPedfcdnaaeeggvrvsȻãĵ\MPQdceecj_fghuoyvxĀ;ɽTNKLRZffegcacouxuĺº~ſɆTKKLN_cfigg~qy}n|xĻv~~]NKN\^ceiig~zĹĬ×|}UUMZU\_ihh~}Ŀϯ~TXMZU^ehiivnƢɾÿ˭|UQTZVccefu»ȫ|UTSMWWZ_bdʀ̟~V_]W]Xcbbpg}~ɻsvtǎùtxf[k`a_bflyxʲɴwwuöǢuxzx_ar^qʲŬv¨Ù¸t|ry||ɺތ¿~}~y}}݆űſ񯊅|{zxyyŢʽīv|zu~̺ɻ|ß©ʼnĈytu}ʱ¥wwtxxwrڗ˼ǪĿ}vwyvl}vqyq˾}î|runux|knmm^`˽Ũ»rjlnvvfe]^[hrŻúnnmsh^f\_b·Ůodhdd_l}懍ånifab^Z^zź¾ricrxZfko|ŕϰÿǹlhjcfkk{{}~žǸ{rgegmp{~}˻£ȤwpllkxwŪDZʱ̼xnnmll}ɶϾ̨̽xvlhn~ƨÿ©yllnq~ȶĮDzžҩ~omlomqǸļ̗}mmkqt±xļ΍wj}yqpdvv{tΠqcdpqrûz¹º̴n`ghwnmmq}swzDzxjahkrllbwvvUTXMLJJKJJBABAABJLNLN`i]XYHHORMSPJIRJKOXWVNPEEKHQLTM^hunslbckutpPNPKLJKJHHBAABILPV]_VbYHJJURRJKJSSRKRNOMC@LK>H>JShqura_WabrcYSRPPMMLIJGENATBBCNZRQaYdTMHFMKJRQVURQJKKCKGFJE<<>BEFsqfVSTTYW[\XXVQPQPPMLIMIQbGQXTWSTQZTQLRKKLKMTZSRPSRFEEWCGF@@oWWORPRRPM[[VXYY`VVQOGGQf^LRIKJNNMPMNMNKMMRRSUUoqUNHHKFE?@FUOORQPPOSOW\\ZYZh_]\[RIGGJ\^_SRJJKPTQQRKLJPORQSSborqSFUHFFA@@MONNRO[\a``h`W]^LHHGIQ[ZYZYQHJQPNTOVTSIKPNQSXSUqrUYFFDEAA@@NMNNQQOS\W`]^ba`nh]`]VRUIHPZ`^]YVVQULMQIVUMNROORRo|Ynm]]GPPKCKBCJNNOORS[\]]d\]b`lnn`[QQRXK]b^Z[YNLKJKKRQLKQNOQSS|mZdd]]^^S\LL?ALJMNRUQd]a]\]b_bma^sYXRVXW`bgb[TSLMKKML^PKMVPRRZfxiSV[_a^^ZTODCMIIKPW\d]_aefdea[VldYZVYY\fic[[]LNKKSMSSNlaOQSRTqOMW]X\XXTOPEDKIIGPjkda^_ddbed^TacZZLX]\r^idc\OOKNKLMYOOmm^bQRRmtXXV^^\YXXSPKINKHL[[mf^_ciibZ_`ehb^cc[gchhfjo^PMKWNUNPP_okmlSOWZa`ikcc\TTZVLKONNOTU[gg[jjagcYneecebZb[^^fiqqkfcdXX][]]^k^pl_maa[``kkdcPN\R^RLLOON]g\[jukasig__`YZYl]^rqpgfdcXSW]]YY]kppola`[jkmUQ_gnlSiaPPOOQM\WkxphmmXia`dd``hlnoobflfedc^YS\\[Y\ommpromkkl~onpoqriRRPgW[db`_lmnkkbef`fginnjlicgg\cc_Y[^YW[[qpluxmmln~mqtuwQ\gii`bc`cabvqqacfggmnhjkojkjrki]_YZ\[YYs~zxtklml}zf\]mpg`^b^d_V\crrd`vlnkjnoolouqrroh_Uad^a}dw}z}}gZdvpkkaa[ZY[bnTbabdijkpioiikmqrsxxi~nvs{utUmvwZ^[ZZXbcYdbcbbqorkiijot}u|^pvnme_[\[WhcZZbdpjsu{phv`QSnRP`^\\WWUUV`pduuv~s`^QQ\^ccaVTT{|{x~xxo`ZVS_``_WTUVTT}~wvʶunmYQIY_a]WUUV^jhlzrvjȵuVlTeM[`^]UV]^_Z]~jhzÞQJG\[]Z[dVVZZ[[v{jf}jzyh{SDGH[Z\\X_TZ[\hbmj{l~xnss+KEBCIQ]][]YVWsc~iljvxzopmqxsrKBBCEVZ]`]]tfv{}myqbyqv}zldluoxqpTEBESUZ\``]z}tuvnmmnoLLDQLSV`__{{uxvwtsorJOEQLU\_`_l}azz񬡕ǻmqrqLHJRNZZ]]kuxx~~{smooLKIFPPRVZ[uwyytxuutt{poqtLVUOVPZYZg_urrs|dge~zptupjo\TdXYWY]cotl{h}hfzywxknppWyYjVhuwy~hȲ|uwytjsiqxt|~~sw||zxyvtstputt}q}{y{wyrqpnooswv|xpsvykrpjyuynw}|{vup}niksz~tw}tullimml|fyuusΰoklnn`qjfmew~rtvxrmgifmp~q`baaRTutstfbdfxnjZYQRO[fu|ytvu~feexyg]RZQSW~vuuz}y|y~gtW\XXSaq{~~|xwa]YUVRNQnzx}zwe\VelN[_bpuy}q~v{z_\^WZ``poqrww{~{Ŵoe[Y[beorqu{~|xxyŸxjd``_mmtut|}{~~õzlbba``tvxvwz{{}}~~жx|lja]euwxxwy{z{~~Йv|}maaegvwwxxyz{}}~~}wursdaadbhvxxzxzz|}z|uorbb`hkzxx~zyzwyyu|yvvg{st~l_rogfZm}}{zzyzqhngtvqtr̍}~gwYZvz}ztrceeuxyqkrs~sxeU\]~wsrja`aetsyvrgil{priza`\ZQ_TYRROM]\\^_fqtqkixok[YU\T]WW^_^S\]_abcg}k_eMJKIJIJKKZ\ZZVWXRRMOYQg^eggtnuz}jg|``\POUUW]]\X]][cabhojinKKJIKJKL[U[Z[USSURNKMV\[hii_stvg~]`[[ZT[YZ\aX[a]bagojuKKJX[Z[VURTVTKNUUOi_^^bdbz{~__dX[POQZ[[\`Y`af]_np~nKKJKY[ZZWSV]QUKLLNKU\`_hgmg|aa^^VSWNPSN\^[\YmaafqnrNKKJYTXZYV]NLJJIOW^djktub^^]WUONUVNR^`Wednsi_ULKKJPOTVb`__\SOJKLMQPNmgluuj}{a`VVTNPNOUU`UbZf^fhd`YMKKJJIJOOUWj`f]TYQNLKRPZ[bhnmtdjum_\YOONORT[RhbcfbWoda`WNKKJOSae_a`ZZROKOPOV]gjgophbspokjRPNLNQRRe[dbka_Wcemhdbb`ZWJKJEGIKUSc}cce^XTURSMON_bc`jqrppodhdPOMNNQSQP\\eiWVVojfafe`b^aMGDDEJQg{k\_lMNNTOTUQPVS`\bhqrjc`ngZPQOMNQMRP^_bjm`wmkgd`bb`_ZLHEDDF]zzZ\mlkYUOVVUUWVWfZ]]iogibhbZRTNNMMOPTbukkf_e^e^`^`_ZVNGEDEFEl\[WmnonffRMPUVWWTZY[_gfa^Y]XRQPSKMMNNRxuupkds]ia]\\_]_ZWXMGGDJIt`]\mongceZPNPUVTSVY\ak_`b^WTSQJMNMKMOYquww\YXY]\ZWXY^b^WPEEJrta\eonligWNVTVSSUSVSbds`^XWTNMPPOFIIO\uyyzxlU]\\YWUW]]a^`^HEFHKqrsqfemlU[XMRVQRSRRUYehnovcWSSRPPIFLJQTw{||w`][ZXWUUVVWYbPNJIGJx{yvponc`[OOQURSRTS[_ktvv`TUSRQRNOKPXbvzy|redYZXUUTV]`_NNFLHxsr{pnomjhPPQRRQUWddsuwqtXWRSQQPPQKisxz{|qlfcZZSTVTY[Zdd\WMJJ|z}xtpnnmjeLQRPRRS_^fjmrqg`TVQRQRP\\kx{{}paa`_RWTYZYY`b`THPQ|{{tnmotkh[[UQV[baanzwRTUSIQMS[\_f{}zzchYWUYWYZddc^PPN~ywyroojkkqjjgRVX_ccacdorSVOOIIHPW^_ox~~}]Z[VZ_defgmc`Mzxryqkmgfoil[gXX\aabbktmTQPLJIIPUffrsseugvuflrfQ|yztsilkmhhqfa[ZYYbabbdlqcSQMLJHQXcdii}twraohghiokehaaYYX]imlnecSQMKKSPQdughpxsp}pnrstjhb\VXXY`npl[O]OMVOSV^dpii~yosg󎊌}mqsh^^WWXlilkgQNONOOSW^adef}xg}yookwlee\\[XXUYccj_OONNPPOWZfpml|~{{xz{fc_eykifaa][[XWV]^icQQPTPSTXY`jj}|xx{|z~{xX]\]Ws{flf^`^ȏga][[ZXSVY\^bcS^OQPVQXY]dlo}||x{x|sp\WWVUQRQ_h^^eb\ZZUUWXX]Z][\]SUTTS\fl}{zz{yws^YWVUVTTRQ\^a`a~_]VVUW]YTY[fbVR\TYTZexyypfUVVUW\XX\^]^bqkjyhTSYc\OZ`]^^bVTYY\u}jdUTUWVQWX\^`^_likmaUVYYWX\]\abb[UU[Z]^vhTTUQQRW_a_b^_þmnjiidQY\V[_`_ba`baXUZVY~uQQMNNPX\`aa__mjkkjvhh\_U_^YY`bb][ZU^rxWVNOOPYYZ`_fbàliirsSTTYZ[YYW_QVV[Tc`VRQQTYZZ[a`^¹ӱ~jhm|yqnT]aZZYXYRPRRWY[zŲzdSV[TTYRU]^^ʵ͛wjvhgaZ\ZXYVTRRVXVTǽVVWZSYRR\]^]°֯zp{fgad`VXXRTPWPPQWXZZXW[YRUY\]]վ̐yxggi]U\SUUSTUTQTT^qmcVWYWXX[\Zװ{thwd\USRTZTXTSS\øĬ{{|]^_]TVXV[VXY׸ØihXU\USW[YRPWZ]]_IJyxy~kYY^WVQPVXVVZc\XSa]ZWTRRZ[[yyxgXWWVTXTRV\[ҿȫÔodU]VZTTRRUXǺyv`XWWXWWXXWXVTV[ʺnjqmcVVSRQRTVpƢjwxc`WXWXXWUVY[VW\įɩɥmcVVUUVTWZđ{fbbXWWXXTUX[WVWʴ˰xlWVWUUTUTR`cɵdUNWWXUSTZ[Y[\wxmdXVUUVUU[wǖoTOSVXWXXSX[Z^X^ǝue[VVWWVSSRUYz΍XPNOSXX\Y[[^`_ʿ~\[W]VVUTRVXZwjQOSXXWYY]_]\_``ſ_dekZYWTXXYZyOOVVWXX`a]__\`ǸǨiu\ZYVVYXYz˝~OPWX_hb``_``_`Ưɵxfj^VYXYY[|ij[XWmlzyea`bh`\[мɮƓottsc\XYY¸zraqa__[ȵȦưÎwvuttqlX\dwɼz~~jp\X]`ؽɷʭȮƝ{wuttse_b[Yaʀˣyx`^[^]]Ƿǣ{vuxtqd`b`^Ƶw_\[\Y\ʶɯɻzuutigfcVeaѻb`c[_VZɪȬuxufeWV^im}̡u_f]XZҺʺ}{vwlfcxu{{ҀunnkbZƯɲ~mndtjkb|ϳ~vjvƺɺέqp^[`_{ιxx|ȩüз{v[kp´}}ïûѻzv^bo}XWSQHVKPIJGFWWXZ`iljbzvx`ofcTPKSKSMMTUTIRSUWWUw[qcW]IHHFFEFFQSQQMNOIIFISMbY_a`lelora^rWWSFEKKMSSRNSSPXWW\||fbagHHGFGFFGRLRQRLJJLIGFHRXYcaaUjijsz^tuTVQQPJQPQSXNQVSVTYgbnHHGHFFORQRMLIKMLFIRRKd[TTXWUop}}tVUZNRFEGQRSTXOVV[PR`hugHHGHHPRQQNJMTHMFHHKISTXU]\aZwqvWWUTLIMDFKFTWRSOaUUYhfjJHHGPKOQPMTFGFGGNSU\``hi|uyYTTSMKEEMNFJWXN\XcgtxaXPHGHHGGFKMYWVVSJJFHIJNNIc]ajiasqWWLLJDFEFMNNXJXNZRY~^[WRHGGFLNaW]TKPJJIHNLTUY_cbiZaldUSOEEFEFFJMTKaYY\VKvtcZXWPJGHGGFJX\VXWQQIHFJKJPV_b^fg_XjggbaHFEBEIJJ_T\ZcVRKVYa|]ZYYWSQGGBDFGLJZtZZ\UOKNJLGIHXZZXahjhgg\_[FFCEEILKJUV]aKJJc^[X\\XZXZIDAABFH^rbSVcDEELHMLJIMLYTY`hja[We^QGGEEFIFKKXY\beTla`\YWZZXYUHDAABUqqQSdcbPMFNMMLMMN^SUVag_aZ_YQHJEEFHKN\mdc[SZSZTXVWYUQKCAABCBdSRNdefe]^JEGLMMLSQTX_]YVPUPIIHJCEFHIMpmmhcYgR^XSTSXVZURTJDDAFFlWUTdfe_Z\RGFGKLKINRUYdXXZUOLLKCGHFDGHSjmoomQONOSSRPQRY]ZSMBBGikXS]fed`^OFMJMJJLJNKZ\kXVPPMGFKK@CCHWmqqpoaKRRSPOOQWX\Z]ZDBCEHhijh^\ecMSPEIMHIJIJMQ]`fgn[OLMNKKC@EDKNorr{mURRQOONOQQSV^LKGFDGnyqomff[XSFFHKIIKJSWcmooXOOMMNILGIR[nqpsg[ZOQPNOPPOQX\[KKCIFih{gpfefeb`GHHIHLN[\lnojmRQNNLLKEakpqrsfa[YQQLOQOTVT^^XTJHGmjrrmjgffec^CHIGIHJWV^bfjj`ZOQMMLMLUUborrs~eWWVKPPTTSSY\ZPENOqnmppjfefld`RRLHMQYYXYfroLNOMFLIOUVX^wrtqpZaRQPSQST^^]XNNKookingffacbhba_IMNVZZY[\gkLPIKEFELSXYhoututVTUPTX]__d\ZJqsmkfngbe^]g`dR_NNSXXYYcleMJJGFFEMQ_`jl{zxhyw]l`ll^ci^Mnklgg`cbe__i]XQPOOYXYZ\dj\MKGHFENU\^cavry}~|jnvwi[}st|d_^_`fc\`XWOONT`edf]\MKHFFOMN]n``g}yưwojh}}|pedikib_YRMNOPXehdTHWJGPJNQY]iaass}}vpgj_~z}uregh_UUNNd`dc`JGGHIINQWZ]^^qnuuzv]tpgfb~{}yla\\SSRNNLOZ[aWHHGHIIPR^hba~~qrqqnuqq{z\ZX[pca]~|}}xXXTRRONNMUUa[IIMILMPQW__zrpnnqr|ptpmQVVQjq^d^VXV|]XTRSQOJMPSUZZKUGIHNJPQTZadrqqnqnrjgUPPOOKLKX`VV’|~\YSQQLLNOOTQTRTTKMLLKS\arupyppqoniXSPPOPNNLJTVYY~}tVUNMLNTPKPR]YMJSLPLQ[z|ooi`PPOPQWRRTVVZ{}e_]p`KJPZSFQWTUUYMKPPSk~pw|c_QOPPQMQQTVXVW~`]_eXLMPPNOSTSXYYRLLRQTU{naQOQMMQWYVZUWs`a^]][HPSMRVWVYXWYXOLQMPs|nMNKKJKRVWXYWVt`^_^^m`_SVLWVRQWYYTRQLUiu|qQQJJKKRQQWW^Yxyy`]]ujjJKLRSSRROVKNNRM[wZQMMJLRRQRXWU p]\aqwqhfKTYSSRQQKJKKOQTqq]MOTKKQJLTVUdzƼymam`_ZSUSQRPNLLPQOLzQOPSKQIIRSUUş{ofr^_Y]YOQQMNJPIJKPPxTTQQSQILOSTTĮƼ||von]^`UNULNONOPNLONNYyzxkf\PQQOORSQơ}~~pj_n\UNLLNUOSPNOOXWvssxxtXYYWMPOMRMOPſƿƩya_QNUNLRVUMKSVYXZ{qoqvdTTXPPIGMOMMQ~}|[TPL\XUSOMNVWV{qpp`RQQPKOKIMSR°¼g]NXQUOONNQSpoZRQQOMKMRúig^QQNMMNOQicop]YQQMPRMNT󻙗}g^QQPPQOSVzr_[\QQMPRNNyqfRQRPQPQPN\_}]OHPQQMKLRSQSTýzprg_SQQRPQPWpfMHLOPPQQPPJPSRXPVĿ{o`VQRRONNQTqPIHILQQVRTUXZXĽvWVRXRQQONQSTnbKIMQQPRRXZWVYZZŽٷZ]`fUURPRRSTouHHOOQQ[\XZYYVZa}oWUURQSRSquHHPQYb\[[ZZ[q`cYQRRTrSPQeess`\[]c[WVwhkkj\VRRSS|ฺ|vsyym\m]ZZU滷~kklkkhdPU[lϻ|swwflXTX[ǫ~oklkk^XYTQYss[ZVYXXƻoklokh]XYXU|}|r[XWWSWqllka__ZNZVy~][^WZQS·zzlom^]PNS^ap}mZ_VQRªzz}tsmod\Xlhmm}nffbYRɶywvwdcYh]]Tmt{j`kɶyzvfeQNSRnwlkoָzzzqkO_cqppɳu{¾­njTXcywqvSRNLCQFKDDA?NMKLNT^a_XoulmVf_\MJGOGQKKRSRGOPRROmShYOSB@@>>LNLLHIJDC?AJCWMSUUaZafhXUkQQNBAHHKQQPLPPNVSRUqr[XW^@??>@=>?MGMLMGEEGD@>?HNMWVVK__`ivpUmnORMMLGNMNPUKNPPQORu{\Xc??@>=JMLMHGDFHF>AGGAYOIIMNKeerslOOTIMAADNOPPTLPPTGKW~]h\??>??KMLLIEHOCG>??A>HIMJSRVPlflPPNNFDH@BFBPSNOHZNNOw\Z^A??>?>KKFJLKHO@?==BHJQUV^^qjnQMNMGF@@IIBERTJUOZ_kjXOH@??>A@FHTRQQNEB=>?@CC>YRW_^UgfPPGGE@BAAIIJJTAMDPGNsrVTRKA??>@GH\RXOFKDA@?EBJJOTYX^NU`ZNLJAABEHODVONPJBtjtiZTRQJB?@??>?DSVQSRLLDB>BCBGMTXT[\RL]\\YXDCA?@DEEWKRPXJGAMPYqTTSSQMK?@?<=>>DCSnUUWPJFHEF@B@NPQNW\][[\RVRBB@BBDGECMMSW~AAZVTRWUSUSTB=<;;>AWk\NQ^?@@GBGHECJEPKOU\]WPM[UKCCBABDAGDPPSXZJwdYXWSSUUTTQB?<<;=MjjLN_^]KHAJJHIKJJWLLMV[SWPVQKDFAACFGTdYXQKUOUQSRSUQLD?<<=>=[LLH_`a`XXE@CIJJHLIKNTRNLGLGDBBF>@ACCFgde^WO_KWTPRPUSVQMOE@@>C`cQMWa`^[YJAJGJGGIGHEQRaNKFGE@?CCD8<?@D_bccWW_^HMK?EJEFGFEGITV\\cQGDEECC<7>@HQcfeit\QPGJKJKKJHKOUUFF?DAbbtai`__^[YACEEFFEGHSRabc^aIIEGEDCBB;V`effgt[VQPJJEHKHLMLSSONEBBeckkgd`__^\W?DFCFEFPNSVY_^VPGJEEDEBIJWdgghquvZNNMNCIJLKIINRQI@GIjgfiic_]_e\YMLGDIMRONNZgcEGHF>DAEJJLSkgwu~swifePWJJIIHIJSRROGGDhhcbg__Y[[`[[YDIJPRQNPQZ^FICC>>=CILM\cs}|uvuiijiNLLGJLRSSYQPCilfd_g_Z]VU_Y]MXJJMPPOOW_ZGDD@?>=CGTT_`nvulj\z{|yljQ_U_^RW]SE~fcd`_WZY]WWaXSNMKKPOPOPY]SGDAA?=DJQRWUjezukxozzÌom]aii]Rztkls\VUWX^\VYTSKKJMVYXZTTFEB??GDERbTTZowyjf||̋~zjc^\ztvvtsg\[`ba[YTMGIJIP[]XLBPDAJCFIOR^UUfzeonhvwwcZ^T}vvuqsvli]_aYMNHHIIZVZYWDBBCGIOPQRRxrpb^ggkhwxy|PebZYVuvvwurvuspcZTTKJJIJEIRRXPCBBCBILT]VUpoacba_gbcmkOMKOt}bUUPzvvywwuvsttnOOKIJJIIGFMNXSDDGCFGJJQSSmb`^^bcnbgb_EJJF]cRUPIKHqwwuwywx}TNKJJIICGILNRREPBDCHCJKNQUWbab^pb^d][KEEDDABALRHHIxxsw{y|y}tROJHIDEHIINLOMOOEGFFEMSVf{ue`i``a`__NIEEDFDEBAGHKKp|zs{z{yjLKEEGNKFKMXTHENFJFLUoukuts_``v}_UFEDEHNIIHIMmoq{{z[USfWCCITMALROPPTHFKKJMbr~{uutsvhntYTFEFEGCIIKJJrysVRU[ODFIJHIMONSTTMGGLKMOywt{pweWGEFBDDHOQKNKKrthzwVWSSRAILGLPRQTSRTSJGLHJi}rqynu{eCD@?@BIMOPOKLujxVSTTcVVLOEQPLKRTTOMKGO`knrthGG?@@BIJKOOTPm}mmURSSi`aCDELLMLLJQEIHMFTlqqvt~OFBBACJKKMQPOtdRQUfke^]DNSMMLKKFDEEIJMft~wv{ufRBDKCCIBFNN{{uokbVbVVSLNMKLKHGGJKHFm{ECEICIBANONNjqaXeSTQUQHJKKGIEKCDBHIwslHHFEJIBFKNNζqkkga`QSVMFLDGIHJKIDGEDLvu|kk`\QEGJIJKNNKtolnoa_TcSMFDDHOIMHFFEKJp}ufcejifLNNMDFJHNHJK{vlWSHEMFDMPOFCIJLKM|wkaachWIIMGHBBHJHHLpmunoSLHDWSPMHCCJKIlvaaTHHEJFDHNMˡx^VFSLPJIEDCEFrua`OHHIHHIIJHFHMs__VLLIEDEFE]U_`QOJJIJJGHKNHINذzsyr^WKKLKKIFHKmxeROPKJJKJGHKNIHI{zzmh^LKLJKIIEDORo~wQE@KKJJKKHFGNOMNO~֯}nfh_WNLJJKIHFJc~x[EAEILLKKFLOMSKP}peXOLLMLKDDCEFcuGBABFKKLQNPQTUR{vkPNMPKJHDCDFGbXEBGKLLKMLRUSQUVU|쫦r|SRW\MLIDFFvdiABJJKLLRVSUUQUzzzUpdNLLHGGFGdt̫iBBJLOYTSSUUVVTUozsueWXNGGHf~JHKYYefVTSX]VQPyzztj\]]\QMFGGpzokgemlbSeUTTO򪧏vwr\\]][WGJRc{ϧuqnnkekkZbLMRUyqa]^]]RNRLIS|uqnonneeONKRRsyu`\]a][RORQPry{spoommdNLKNKQtqvu|zc^]]USSFSPpwpussnOMPKRIKyksksty^a_SQHGMWZgtswutouq^LRMIKyytklutqhf_cYTRc`ecr~zuuq^XYVOJ|{}tsstj}juhiYZQ_UVLcxuuqel]U`ytijoqpxk]\IGKJcªxuti_^bpsjjqupgbGVYxxrdccezy{xxkpwteaLPYzkiciMdww{xvvßxwV_ZZ]^]]\_aa[]eJMPSX|ts̋Ŀ~b_[]Z]\]^^``fmMPMTYyysʻu`_]\\]a]_]^moOMPQxqzv||wŨ̽ĥa{\Z\]_^]]bffMMPKp}uuvw|wy{z¾x`^__^_adefLLKLP{~uvvẃs[_\uXXp[ZjgUUpl}x^_`_efggKLKMMVuuw{^n}~{p`}oZ]\WVWWVVTOORU_Rw|}{|khcfhifhKKLKMVuwwv[^^e`aameW\WW\WVWVVMPPOQPRRrPNu}}ilniKKMqxr][\[[\\][\\[WWVSMOROPOQPQNMGGasazɔKKNSR}fbc^_[[\\[\]][[ZWVVWUPQRRORQSPIGGNU`ay|ɻFJNMQY|fdc``[\\]\]][XWWVV[iURQNQPPQRMHHKK`qrIJKLPOsdhddc`^[\\]\\]Z[XWW^YaclgdRPPRSTOHHMIJKKJNqǷIIJIOPRV`dehdbdee\\`\\]a^^\\YX`akkgg_]RUPQTUPIMLJJIKKJKMNNwHHIMNPTShcdaeffg]\a^\]aa_]\[]^^jgkkhge^c\ZRRUVVQOHIIKKLYMMTvIHHKKPXU_]bbgbchifa\\abac[_]]aefekjggdjbf]SYWRVXQRNNYXTOMMVHJNIRRZ][VSVaehiegbaffdc]]fabhljjhhef]iggfdaa^daQOWX[UPMMNNPNJKKQUWVXUUW\ahhkfbbccgfgfeehcighha^\cch^diggfccac]]\]PNNMNPJJLMNSV]UW[bamodbccbffgdbfjjg``\_b_bfkk\deffc`^\_]PMMNNMHLKMLMKQSTXVXXlqjbbibbfeffhidfgpmed`gg^dcdafddfcdbcac`ZQPMOLMLLMMLNXTSVYXcjlkcdccbb`effeggihffsojc_hhdgikc_fadcnc``a_ce`VZMMLMMKTNTSSX`monjihcibfae[\deefkfgs|hiiltkwuutsfdkqmm\`_aagd^a\PNLLMMONUXZVbhoogkkunnbbZZYYgeefferhffqsfowvstuigergfn^d`Za^]ccZUPNNOTSY_donosnqkkdZZ[Y[ffdc`aehffi{rv{tqqomc[__^_]\[YQQOPOQRW]f`hipqkr|xhi`[]_aegi`\cedgftt|}}vsqmoa_ZXXZZ^_^Z[PQRPPRS_^cgilqvwzsvxikegjvhic^]^bdrrjf~ktsrghccYYXY^\[]ZQQUQW\c`ffjrurzrrqmljgcfkeda]\a``_lqhmwstshhef]YY^]][]_QTSS[]dffgjmssrqqoptgmgaceb^^`^ifmphvtjihgfb^^[a\\[[^Z[_USUUY]lfipsppqqrqrtrnmcoce_bbfcbezisirmqggef`ecac_^f`^_ZUUTTNNdefoqrsqqrssvvstqloqnbbdhhcohvimniikhgfefecddc__bga_]VbaSQN_Yftszpqqrrsqnutwprvuopnmgghqbdqidjiihmaa`hfgbdedcdbg_mxuq]ZWRP_fct|{srsrsrqmmroqtqmnsojpqloqkjiihgegflbbdegerxf_umzwa]ZWTZgkum|uutsrspokkhijiopnmmkkpprtrmiihhihhgebefdbhfh|}gozz{_a`WWZbi]vuurrqiikikkinmmpstpsxmihhgjlfgimspdqaozy{xa_WVYW_nxp||sqourqmkollirillms{ztv~~ihhgfgjojpturrvxmcwzvuiWVWWXafrjv|upxxsqqnlkmmlmmils~uhhijhifhijlqutwvt^`wywui]VWXWWa]ek{{zpytusrpkjhmlikwqnuwiihkkjghihip^^wwxukXWXXVX`hq{{vuurmojjklnlkmlvzlhjlhiikrt^iwwx{{ueUVV`X~zw}}xwvtupookmppqzlhnujhlhieiijiiz^_jv{{xxjUVV[an~~wxvttlnklvuysttz}xhhkefhiij\_fq}x{}rlWVWZZkjnoxzvvvlipy|{rrqool{tligeddhhikiku\_`gyx}{vSSTWRUhmmno~{olklpoyqpnmpmpmnnjeejqosqn\]^dlvtp`eSVRSS^him{|~~|qnlnqqwfnljmmnmmomiijkkprqv{[]baeikyrqaVSW]]aajozzupoohlqnnkronnprptmmnjnoqsuu]__aloosspoWW^]]^`thzuwvrqojcloqmkmpopuuqwqrrooptuu땗[`eehmpsttp[Z[^^_aerrz}xyvrqqpkmrmmpnoopt{|tpusoopprtu[^^hkprttzX\\^]_`ahlw{|wvsffqikkikopruz{zpqqtrpputyy֗[Y^idnqrrz{pg[\^^_hafgptvxywvwsojooiimpquzwwxvvqtstuqw_hggknpuy{~~|lab`deg_lrt{}uwssrqjiihjmsxst}ux|q~sz~}_aljjmlvx}~a^_c`ddiltzvtuniijsqtx|}}vw~}w|{`ceiltwxx{||d[ccf`_cbhrtxzkiijntut~yopusvxox{~adcdvvxxs{acdef[a[beqwz~vmkliilrnx~}~~pywlkjy|^bbmuxvvuuzgfcbf[`Y\]nptyww}{ijiijiijov~wq{}}numhilv}}`a_gdxxpwvvwzztne_Y\_[[llyyw{}v}vqkjjkikxvv||{omlhkou]a`\euuwytxqurkbZ[\[cbnoqmmvyv{}}vjkljw}~}~|~snpnmi{z|]\a^\quwuwwu|sm}~q[YWY]^dnnowm|||v{vupkllqi}|}{[Z]^^onhkkv{{sne|ZVXY[_anno||y~vwustsqrt~nuyz{\\]Z][jcacchjrs~sdXZZ[WYikmnoz{vy||suuqvz{\\][aabdegsegkXX]ZV\aknk|tuttvtrsrrv指ʼn[Y]YZ`aabefttl\ZZWValmuutnrqrqZ`_`]bbaajjekofa^UU^[jjsquuvvuqsqrtxzlejchbbnpns~bZWW[`]\otwstvttorwrύl~nbV]]ZZblutuuvtspqoyуƃ|eXU_`akqsqsshuusstuyzňÛwP]jcakkbrhoilpsqrvwsx{H]mmpmklճqpRYTSVWVTTVXXRT\FHLOSqj~hv[XSVSTTUTTWW]eJNJPVtwoitu{mYWUUTTWTVTUefLJMOs~jokqqmv|µYpURSTVUTTX]^JKNHkvylkjkllqmyz|u{{~mzmlᴮxlVTVUTVX[^_JIHILvx{kllmxwywxuttuuy|hQURiONeRR^[LKcs`r~lTVVU\]aaGIGIIQ}jkklqvwUestqfWseQTSNMMNLEFILTJjo|rptqa_Z]_a`aGGHGIP{jlmluRUV]WXXd[OSNNSNMMNNDHHGIIJJtfHFukrrt}`bhcGGHjniTSTRSTTRSSNMNNJEGJIHJKJKGFAAYkYpuuGGJMMnZWZUVSSTTSRTTUSRQNNMNNIILMILLOJB@@HNYYnryCFJHLSn\[ZWXTTUSNNTbOLKILKKLLGBBFEEXij~FFGHKJkY_[ZZXVTTUSTQNNWQ[]e`^MJKMOPJBBGDEEHiFFEJJLOVY[`ZY[]^UUZUTUZWXUUVRRZZedbaYWMQLLPQJCGFEECEFFEFIJJnvDEEHIJMK]W[X]^_aWUZWTU[[YWVUWXXcacca^X]VTMMQQPKIBCDFEFGSIIOmFEEGFKRNXVWY_ZZaca[UTU[\[\UYWW[^^dcaa\d\aVNSQLQRMMHIHSROKIIPEGLFNNTVSNJMY^ac^a[Z__``^]WV`Z[`daba`]^Xb`aa^\[Y_\KIQSUOKIHIIKLHHNQSQQMMNSYaad_\Z[\``_^_^a\`^``_`XWU\\bX_bab`]]\]WWKIJIIKGGJKOQVMNRYYeg\YZ[ZZ``a`_\[^a`^WWUX\Y\`eeW__a`]YXWZXLIIHEIHJIJGLKLPNPOdhaYY`YYZ`^``a``a[]^fc[[X``W^^_[_^^`]_\][^ZULKIIGIIHJJIKSNKNQPZbdbZ[Z[YZY^`_^_`a_]]if`ZW_a]adc\X^[]]g\ZZI\Z^`\QUHJIHIJHPJLKKPWdfea`_Z`Y^Z_UV\]]^b\]is^__clcmlljj\[diffXZZ\]b_Y\WKKIHIIKJPRRNZ_ff^bbleeZZSTRS`]]^]\i_\\gi^fnljjl^\[h__gW^[W]ZY_^VPLKIJJKPOSX\fefjehbvvc\STURU__^\ZWW\^\\_vvpglp~ttjhjhf]W[\Z[XWWULKJIJLMRW^Y_`ghbisox``YTWXZ^`bXRZ[[]\jjx|pqr}~{ligeg\ZVTTVVY[YVTJJLJJMNZW[^`chlnpjmo`b]_cnab[UTUY[hia\s|azkih`a]\UUTVZWWXUJJNLQV]X]]ahliphhgdcb_\^c][XTRXVVUbf^c{zxliji`a^aXUTUYWXWWJMMTV\]^^acijhhgefk_e_Y[\YUTVT_[ce\wtyyuljbab``\WXUYWWVRSWNMNMQTc^_giffghhghkidcZeZ\VXX\YX[o]gvv_ieh__^_Z^ZZ\XW\XVWRMNMLFF[]]fghigghhiillijgbegdXYXZ^^Ye^k_bc__b_`_^^Z[[YVWX]YWUOZXKHEVP]kipgghigekkmfhmkefdc]]^gXZg_Z`__dZYYa__Z[\ZYZX]WeomhUQNIGV\Zjsvqihihihgcchegjgcdie`fgbega`__^_dZY[[]Zhn\WleroXTQNKQ^alcrkkjihifeaa^_`_efdccaaffhjhc__^[^^[Y_\^rsu_gqrsVXWNNQY_Tvwwxlkkhhg__a_aa_dccfijfinuc__^__`cd``aejfZgzYgrqsoXVNMONVenfyrrigekhgcaebb_h_bbciqpjltt__`cfcgklhhlne[oqnl`NMNNOX\h`lrkfnniggdbaccbcb_bitkw__`a_bbcdhmlnmxxjVXopol`TMNONNWT[aqqpfojkihfa`^cb_amgdkm__ba`abbhxzzyUUnoolbONNOMOW^gqvqlkkhce``aacb`cblvwpc^`b_aadik|yU`noprrl\LMMWOtpmyvssnmljkfeeacffgob]d~yxk`^b^`[aapwxUVbmrrooaLMMRWvdwuw}ttmnljjbd`alkohijpswn^_a[]_`aaba}ySV]htorticNMNQQa`deuxxunpllyla^foqpggebqjb_][ZZ^_`babl}wSVW^potrmJJNIL^ccde~~}xwt{qeaabeeogedcfcfcdd`[[ageigdywSTU[cmkgW\JLIJJT^_cqrtt}rgcadggfl\db`ccdccec__`aafhglvpRTYX\`bpihXMJNSSWW`epp}~ukfee^afcddaheddfhfjccd`degjjkTVVXcffjjgfNNTSSTVj^pwkmlhfd`YaegcacfefkkgmghheefjjkRW\\_dgjkkgRPRTTUW[hhps}nolhggf`bhccfdeefjqrjfkieeffhjjzSUV_bgikkqOSSTSUVW_bmqrm|yulh\[g_`a_aefhkpqpfggjhffkjonoRQU`\ehiiqrg]RRTTU`X\^gjlnoxmlmie_ee__cfgkpmmnllgjijkgmx{~W`^_beglpruuszcWXVZ]^Vdijqskmhhf`__^`cinijsknrgtyiqutx}XYdaadcmotuvzzvWTVZW\\acjplj|zykd__`igjnrsslmwvtnswurY\^adknoorsyzzsZRZZ^WWZY_hjyyzynp`__`djkjtowefkz{jmofoqtZ]\]mmoojvzzrX[[]^SXSZ\hmuwptxlcab__bhdntusttfp{ncbaorwX[[emommllyqv^][Y^SWQSTdfjommsq{v_`__`__`eltmgqss|eld_`clrvq{ZZX_\oognmmnqqvle\WQTWRSccoomqslslga``a_anlulxrrsqfdc_bfkuysrXZYV]llnoploimjcYQSTRZYdegccloulqssl`ab`mstst{rtjeged_q{umnXU[VThlnlnnmsjetviSPNPTU[ddemcrurrlqlkfabbuwvv~}vxh_q~uppmTTUWWfe_bbmssjwf]tQNOPRVXdderroutlmkhjighjtwv~z{{djullmTTURTRaZWZ[_bjjvk\ORRNP`acdepqlorrhkkglywwvwzummUUTUTQVVX[]_k]_cOPVRMTXadarjkjjkjhihhly}{{؃~|xTQUPQUVWWVYZZ]^kwkcTRRNMXbckkjdhggz{RWUVSWWVW__\bywguv{^ZWLLWSa`igkkghghjnwzy{{üna[`Y\WWceejs\SNNRYTRejmijkijehmhv}yxy}vubqryҳvuf[MVVQPXbkjkjkjifgeo{u|{yϻv{xvxxxtq]QMWVWagigii^kjhhikoupx|w¼{{|w{lGS`YWaaXh^e_afhfglminwqzx@?R``b`__z{jiLTKKMNMLKNOOIKS=@CFJd]r[stx梥mSPLNKLKLLNT\BEAGKika[efkwzdQOMLKKOKMKL\]CADEhq]a\bb^fmq񛝠|}條{QgLIKLMLKKOTUABD>`jl_\\]b^klngmmvuerfeymdNLMMLMORUUA?>>Ajkun\]]^iijikgffihmo^KOM`JI_MLXUGF]lx}WhucLMNMSUWW>?>??Fr[\\]bhiLZffd\Qh]KONIHIIHIIHF@ADFODbevpx{hgjgXVQTVXVW>>=?Fp\]^]iKMMTQRS[TINJINIHIIHH?BCBCCDDCi[@>iauxhiktWZ^X=>>__ZMLMKNOOMOONNIIHE@BECCDD?>9:QbQfkk~=>>@ECdTPSOPNNOONOONMLIIHIHCDFGCFDHB;99AFPPego}s=?BBDJfVUSQQNOOPOONJIIN\IFEBEDDC>:;>>=N_`rAABCCbQXTTSQPOOPOMNLIIQLUW_[XGDDFGHB;:?<<=<<;=]vwAACDGNQSYTSTVWOOTPPQSQQOOPLLTT_^\[RQGJDEHIB;?><<;<<Bdm@@ABBCEDTOSQUVWXPOTQOQTURQPOQRR][]]ZWQVOMFFIJHCA;;<=KABBGeAA@BADJFPMOQVRRXYWSNOOTUTVNSQQUXXW]]ZZU\TYOGKIDGHDC??KGCBBI@CGBHGHMNKEBEPUXZUWSRWWZYWWPQZSTY][\YZUVNZXYYXUQPNTQ@>HKMHDBABBDFCCHKLJIDDEJPXXZURQRTYYZZYW[TXWYXXPOLSSYOUYWWVSSQTOODBBEBBEINDFIPP\^SPQRQQYZZ[YXUTVXXVOOLOSPRV[\LTUVURPONQQEBB?CBDDEBECDGEGG[_XPPWPPSZXZ[Z[ZYYTUV^ZRSOWWNTSUPUSTVRTRTRUSNFEADACCBCDCELGBFHGRY[YQRQRQSRXZYYZXUT`]WQNVWSWYZRNTPSS]ROQRTRVXUKOBDCBCCBJDDBBGN[]\XWVQWRWSXNOVWW[TUajUVVZbZdccaaSRZ`\\MPPSTYXRVPEEBBCCEDIJJEQW]]UYYc\\SRMMLMZWWUT`VTS^`T]ecaacVTR_UU]MTQLSQPWWMIEECCDJHKOS]]a\_YmmZTMMOLOYYXURNOTUSSVmng^cgvlla_`^\SMPRQRONLKDEDBCEGKOVPVX^_Y`jfoWWQMQRTXZ\QJQSRTSaaothiiuwsca^[]ROLJJLLPROLLBCECDFGSORVW[_cegadfXYUV]g[[TMLMQR_`XSktX}r|{z~b`_VWSSKJJKPMMOLCCHEINUPTTUX_c`g__^[[ZWUX[VTPKJONMLY]UZsxs|zpd`a`WWUVNKJKOMNLNOCGFFLNSUUXZ`a__^]]bX\XRSUQLLNLVSZ\Tolqq{z{mcaXWXWVRNNLPMMLHILOGFFDHKZUV^`]]^__^_b`\[R]SSMPPSPORfU_nnzzV`\_VVUUPTRQRNNUPIMIFGEC==STT]^_`^^__``cdab_Z\_[PPOQUUP\UbVYZVVYVVUURSQMNQULJLHROB?MSQajmh`_`_`__ZZ_\^a^Z[`\W]^Y\^XWVVTVU[PPRSTR_eTJaZfdOKHEBHUXcZibba`_`]\XXUVWV\][ZZXX]]_a_ZVVUTQSTROVTThikS[ffgLONEEHPVKmnnocbb__^VVXVXXV[ZZ]`a]`elZVVUVVYZUUV[_\P]vpO[fehdOMEDFEM\e]pii`^\b_^ZX\YYV_VYYZ`hgackk~VVUVVX\X]aa]]bcYQcgcbWEDEEFOS_Wcib]ee_]][YXZZYZZVY`kbynVUVWVXUWXXY^baccll`NPefebWKDEENKRXgg]faa`^]WWUZZVYd^\cdVVUYYXVWXWW]mnt}xnmNOdeefcYFEEFDFNU]hmgcaa_Y[WWXY[YX[ZcmngYUWYUWWX]`rw{omNXdefiicSCDDMFkgcoliidcb`a\[\XZ]]^gZU\upobVUYUVQWWdjkutNOYdiiffXCDDHMmZnkmsjjcca``Y[XYdbg`aa{~gineUUWQSUVWWpkvuMNU`kfik`ZECDGGWVZ[kvonkdebaobYV]gii__^\\YhaYVTRQPTUVXWW`piLPPWgfkidAAE?BTYYZ[stsnvlhpg\YYZ]]g_]\Z]Z\ZZ[WQQW][_]YmjMNNT[db^NSAC?@@JTUYghii{xrg][Y\^^eT\YWZZ[ZZ[YUUVWW\]]`jcMNQQUWYg`_OD@EIIMMV[ffrsj`]\]]VZ_[\[X_\[[]_]aYYZVZ[\__wz}NOOQZ]]aa^]DEJIJIJL`Tfxly`bb`^\XQZ]^ZXZ]\]bb]d]^^[[\__`z{MPTTW[^abb^HGIKJJKMQ^^ehrdeb`_^^XZ`ZZ][\\ahia\a_[[\\]__mv{MNNVZ^`bbhEJIIJIKLMTWbfgbqvnlcaTT_VWXVW\]_bfgf\]]`^\\a_cc{MKMWS\_``hi^TIIJJKTMRS[_`cdmbcd`]W\\VUUZ\]afccdbb]__a]alnp|QYWWZ\^cgimmjrZNNLPRSKW]_eg`d__^WVVUUVY_d`aibdh]in^fjiskoyRS]YY\ZdfkmnrrnNJLOMPPTW_ea_rqoc[UUV_]`diihbctkjibgkherz|TVVX[ceffijqrrkRHPORLLNMT]`oppodgWUUV[`aajem[[`np\`cXbdeqrz|TVUVddffamrrjNQQRRHMHNQ\cknfkocZWXUUVX_Zdjkiij[dpaTTcdhoossRTT]dfddccdqimVUQNRILFIIZ[`eccigqlUVUUVUUV[bic\ghhoU^UOQU^cgbjoTSQWTff^eddehhlb\SMGILHIWYeecgibib]WVVWUWcbjanghhdWSSOTW\ficbwRTROVdcceegbe^b`XOHIIHOOZ[]YYbekbgiibVWXVcijiiohjvt[UVTTOcle]^nSOTOL_cecedci`Zjk^IFEGJLQZZ[cYhkhhbgba\WXXjmljrpv}~{evygWOboe``]NNQP]\VYYdih_lZQiHFFGIMOZZ[hhekjbca_`_]^`jmkrnp|z~iSZsrf\\]NMNKLHWPLPQTU^_j_OGJJFHVWZZ[fgbehh_abba]bollkkn~~|e]]NNMNLGKLLNQQS^QRVGHNJFLPWZWhabaaca_`_^cnsoppwqqw|lhMINGHKLLNPQ_k^YLKJKFEOYYaabbaZ_^^]vv{npwwxyJNMMJLLTSPUkiYhipURODDOJWW_^bbcc^`^_`dlonpptu|r{}dXRWPQLLXY{W_iTKEEJPKI\ad`acbb\_e_krnmmqrvtyrjjYeekuvӞ{kj]SENNHGOYbabbcb`^_]fpjppmxzvvintlhiuwmmjfTIDNMNX^`^`aVdbaabbejelpkyxvv}ntnilvxza?JWPNXXO_U]WZ^a_`bc^bkenlzufgierdpqryxzlm\[YWXSUS\bjkmeo]\[fmjpwxz~}miYYXYXSSikznn^ip]itv||x~wji[YYXYWQUus|mffpcujmwwmq{{vqhg^YWWYPOVPyeoklpbmstulj}xwuvsmaYYSTWMMw}ilnmmnhjrnlljpzuvuulZZUYSNNMLijiiookilefhl{s{|}~~uvuup^UYVUXQPlrkiiqpljmkehq{}m{ywuvuxuutSURUUfijrsqssosncpqtk|ywvuttvvuvuts\UVQVWWlnpwsospbbnrwyon|yywuxuzzvvsrtmUUVVQdzzrqjjlnnpuqz}|}xrwwuwuywnWeTW[SXZrutilblnpprooss|~ruut}]UTVTSSZuzhoomppomiylq|~{npUUWSUڠmnhkoomoj}ll|ڐ|y{yxmm]VUTYtZ~llхtkpgjmeXnpow~|okbckZk|]XQs[llojkktgnl[m{ywvklks~nkkl^][MXOllnzgjjknllY\_tvjlmmvyoba_\]]LMPh\P^^QjjlmgjXawlkkouib``_\\]MMQMMLMPQjjkmkbl`bnhjlwiec`__^_\OQRMLLMOR[lmkkgmhxxkllmwida]\^__^^_cQRMLLMLOQ_lmnmnfg|}~{jkknw}a`]\\]^]]_c\POMLLMMLMR]kmmnnor}}z}|zppjlnrl^WY[\\][^a`bSMMNLMMQNPM[hengqqzuppocgnopY]\\[\ZXZ`bdcYOMMNMMNNPMMSZfoqos|tqfdfdhc}[TVZ\YVXW]cc[XPSLNNJOLLW\lnooqzxhdhkdccbZ[Zfik^]X`YUak[^_UMNOLMMOPOVmqprq{xwvvvux~}sYa\[[_nmhaj[fdkSh]a_\WMPOPPNPL\]Mmoos|wpmmp}h^uzfZ[[Xijjkkamhbkdh`b]^XOPMSNNLLJKZmk|}uuvnkZ_WZ[[\\lnnlknkddehgddaQPNMOMLIHFTTd|}vtwtmo}n~{vZrzc`\\[^\\hcoomoo[rqspecchfecaXPUOMIFHHGC^{|~wxonomsyvu{oyxiyb]\]__\[bchpopnhpqpecgbgjgeddXWPPOHGFEJHb\qvvmposklulnlpn^dwa^a]a_d^ihikjopkea]ccuvutseedb\WRPMOIFHKHNMcmooroommqxhllj_pm]\\__`chhjjknie`^^bccuutuegd\\bZPPNHFEHILRdlmmpypnsrnfkllkmqv\^`^^_bghklqggd`_bccuumeedbYOLNHHJPRRWkmmpzpzyxkmlkkllkt|f^]^^_eggjielgf__\_ad{ttslgeedd^ZLIIKNQR]U[moozgdjlkllkkprka^_gcghh[_`ooa[[\bfutrqgeeddbZPSILUQVdUUuvw}etllkw~rfbhhjahiac_^p^`\gf~oobslleddbZSVZSZ\dd[b_yuarllnmp~rfeehnlkhdeb_|nelhnllpmgeccbc][bbaURQdU^Y_V|wekkmskzrpf_``eilhdcs{|pnnpllopcbcbb_abbcbVTXadNd^x}guuqnpi||zryfcgjoihgfaitvx|smrttrllohcebbcd_fYVW^VPWXSV}z|y~s|suxnsjkkhhgkkvxtrrvyssqpjiibabb_eaYWWXWPOWXTX{}|{npovuojikiiwzqqpldyzrrprnngaa`a`\b\]WXZXRPPUzy|utuuvkqqiixr_okjieyyvrsqnh__``]]^][]YkqcZt}wutuyvuruqsuuwlhmdkihjebssrrlb`_a_]X\]YZY]nkxuu|wuwtqqwwolofeddae{sprmkd_Y\XXZ[Zgftzzwwr|uutwurpkxxwopnjkbadbwunofea\ZYWWY[i}{us{wlgpstmokfkxuvsnpspieaabıxsooie`]\WXX`]deu~uu|xuvpomlpqohkigkvwnvsnhjda`aşvvujje]gi[\]bcedruussxtvtouvpttljjrkprfyttclekdhb}zrgbaogd]bfegfmszz|u~wrwysstvvwwpmkgmjljzmpktg__dib㹱bepoojkkrvmw}wzv{{wzssvsswvghghfcy{oikbma__gƿjsrnuu{sr{{|y{vssvwwuoigigfehrikbnmk__`_]xu|u|{yyz}}ustsswvqigmkffkhhkbota`__c_¦~zzss|~sswuy~|ldcdilflkhdsjmiiccjdî~uuy}txsu}~xhgch}rnmhlmhjbpidh`b~}̮pwusttv}jjxggc{tnyizssikqi]fgzz{ý­usvvthfiuwwc{yysgw|klvpts_zz{Ķwvyshghuwxzkkroknz|}ݹ~pqyfkedqyz{{sst֖ŵ|qqsq]\gy~z{|tƶuz|yppxtde[d||x÷~tvwpv_thhefet}űkc~wuqkz_arstag}cckhiuy}~titnqӿcdcihqyy|rthytst]^`\hZeefljl~ml{pxrabUSRPPMNLTY`act\fTSR]c`fjjlppwvsssoz|}|vrub^RRQRQMLaaptffV`gT_jlpuoqprtutvrv}yxzmsm_^SRRPRPLNjjqs}f^^gZk`cmm{bv|dvussrrqniv}yuypylg_]URPPQJIOKmttv}^gcdhYchjj`_qtuu}v}sqrut{t|zu|wvllikhbXPQLMPGGkqtuxcefee^`hc`a_tcluxxy|ru{{vzvxwwuijiibPPLQLHHGF_tvvdaagfb_b[]^`ofmnvwus{|ut|wozqrnq{~rijiieSKPMLPKIbguu~daahgb`ca[^fopanwvw{zx}~qxrsrkijvx|zwjiliihIKHLM\rwvcbiihiieidYffi_nlxxw}|}psihhsx{zjihjiihRKLHLMLxdghnififXXdhlmbbvt|z}mkkVimjw{wmmjigfiaKJLLGXzpphg``bddfjhoqppkest|{|}vixtkikiouytjbLYIMPHNOfrkj_bXbdffheehgoqexu{xyvuwjiixqPIIKIHIPixp^eecffed_obfpvrpzz|yxvottwtsbdJJIMIK~cd^aeecf`raaqxvz}pmtwpmlaaQJJINjPveed|kaf]`d[Mcfdlxyz~|rqc_VW`ObzrŽtSOKkTdeehhabbj]dcQcqnz~kj`aaiu{{^\[\RRQHQIddfr^aabdcbOQUiwk_aabln|}}_RROQRRGHKaUIWVJaac]aNXmva``dkw{vs\SQRRQQRHHLGGFFIJaabcaXbWXt~yc^_bm|y|^YXRRQRSURJMMGFFEFHJSacbab]b^m|nabbcn|_XVSTSRRU[MMHFFEHIUaddcd\]psnrwqaabdmvtXWSTTRTRQW[TLKHGFGGEFHSaddxegxxyqnnlprpffabdh{cVQQSTTSYWZOHIIGGHFIEGCQ_\d]ffy}|qmh|ffZ]efygPTTSTRRSYZ\[UJIHHGFGFGCCIQ\dfehpx}|xvgsg\[\[_ZyxtSKNSUSQRQV\[\VSKMEHGGBFCCMRbdedgwxz|~~}{lkv|u|}v^Z_c}[ZZYRSR`acXWTZSPXcVWVNFGHEDDFGFLcfehgoxyzrz}~}ylkj||xllowvlQYSRRWee`[bW`_eMaWXVTPFIGGEGCRSDcedipktv}zebbezr_Uxl~yr_RSSP`abbcZeb\ex\_XYUUQGHDJEDBBCQc`pqisyxyzxkwyky}yebPzzYPRSSaeecddhey[Z[_^[[YHGEDFDCA@>KLZqrjimjdfvtwcs{qyzmQjt^[VUTVTS^ZeffdefVkikhZYY_]\ZYOGKFDA?A@?;Vpqsmnfdedjnlkqxeon`r]XWXYXUSYY]ecdd^dyih\Z\X]a^\[[ONGHG@A>=C@XSglmmcdgeiabkbdbfdV\q\Y[XZX]V`^]]^cd`[XTZZklkkj\\[YSMIHEGA@ADAFEYcefhefcchn]bbaWifXWWZZXY\_]^]_b^[VUUYZZvkk\^[SSYQHHGA@?BBEJ[cddfpfdihud\abbejpXY[XXW[]^``e\\ZWUYZZkkd\\[YQGFHCCEKMLQbddgqgponacbaabbluaXX\]]^]Y`\[VVSVX[xqkjjc^\\[[WRGDDGILLVOTdgffp]Z`aabbhxld[XX`\^]]NSScc|WRRSY]vwvlkjh^\\[\\TJNDHPLP^OOmmnt}v[jaabbovk_\aacZ]^UWSReyUWS^]uffZjcd\[[\_\UPSWOUV^^U[Yqm||Wgabbddgwl_^^`gcb]YZWSx~yre[c^|fddhe_\[[^WU__^QML^PXSYQrzkZ``bjbwrih_WWY\`b^YXuzyirrfeehddgi\[[ZY\_^`_PNSZ]H\Vmz}q[jjfcf`ssrip^[^`e_^]\W^xjlnrjcilmkedhb]_[ZZ\^XbRPPYPKPQLOry|||uxtorpujsjkndh`aa^^]``lnjhhwlqkljidcb\[[ZX^YROOPJIPPMQ|{|~~w{qsrwxqdfeljd`_a__mxpggfbZqrlkjkhg`ZZYZXTZRSONOQLJINw|z{yonrxwkjyjkklkagg__nuhUea`_[qrplljgaXXYXTRTSQSNbgZPhxzuxxwrmkjknlkgkgikkmb^cZa_^`[XlmkkdZXXZVSMRRNONRc`li{y~{|wwykvrmkliggmmebwe\[ZZW[slijdb[WOTNNOQP]\ionk{z{|yxxwvmhrkjjlkhfannmefd`aXWZXnlef]\XTPNMMPR_rpxis}}zi~qwvzmb]fijcea\anklidfif_[WWXojfe_\WSSMNNXU\\lssjz~}tkuw}{soklfdbbffe^a_]almdlid``ZWVW붓llk`a\T_`RUVZ[]\huttjih}znjljeklfiib``hafh\okjYc\bZ`Yݷsph^YXf^\V[^]_^cionpjsukhvvmoiijlleca]c`b`pcfaj^VVW\`[㩣Y\gffcddjodotlmknnkvwpiiliil]^]^\Yoqe_aXdXVV_`jjxg}nmrihnnolnw{liilje_]_]\[^h`aYddbVVWWTqmsykonmmrs{wkijiimlg_]ca\\a^^bYfjXWUVZW|zrnmggpswzyiimkotrbZXZ_b\ba^Ziad__ZYa[wxtrshimwx}sjniwwkstn]]Y]shdc^bc_aYf_Z^VXppu̡utt~dwy{}mkijjlsv__m\\Yqzkdo_pii_`g_S\]mlmv}}}wkillj][^klmYqunog\muraalfjhUllmivvwloi]\]jmmuumw``uugeado~{tno婡{u|ytfgyo[aZYfummnffh߭~}y}}rggigRR]nsmunnft{ݳ}|uhstzzwoqoffnjYZQYttooiñ|{|}wryurvjlmflUj]][[ZhynDz]}Wzywu}slkgaoUWgiiV\ynò}WW_\]imqtsj_wtidg|vvӮWXW]]fmmvqhj^oiijv}TUWS_QZYZ`]`zqv~wyy{[Zncme}u|zYZNNLKJGIGOTZ[\kS]KKITZW]^^`ccuyxlkggvwyz}b]kppjgwylZWLLHZ[hkw]]MW^JVacfkbedfhxyjhjfjwvqyywx}zzvmlobidWVLLKLKLJFIbbhjst]UU^RbWZdcpXk|qYkjhhffc^kwqyly|}}{thmdnb^VUNKJJKEDIFdijlsuT^Z\_QZ_a`VUfjjrkrhfgjipiqojpujia`_`_YPHKGGJCBBcgjjmtxY[\\UW_ZWWUiXbjmmnrgjppkojlkz~vxv{z|ji]__XHHEJFCCBBXikkYWW]\XUYQSTVd[bckljhpqjhqkenefaclrryoe\^__[JCHFEIEDZ^kjrYVV]]XWYWRT\deUclkmpupnssglfgf^[[ghlwyrkj^]a__^@B@CETilvjXX^_]_`[`ZO\[_Tc`nmlsrvrx}~cg[[ZZdhokql^^\_^^ICC?CECn{y|Z\]c^[_\NNZY]bbWVkizqoxxwq|`]][_[hpliaa^^\[^XCBCC?O{uvoff^]VVXZZ[`\dgee`Zhipoppj\kg][][`gsnhu_XDPAEHAEG\h{a`UXNXZ[[]ZY\[dfZmjolmsriqgi\[[svvmf~{IBACAAH_~|z|nfT[[Y[[ZYTdVZekgdnnpvrlqsjhafftvwmkjZ\BBEACt{z{~~vvZZTW\ZY[VgUVfm}korutvttub_fttvmfdcYYJCCBG`uwy~Hvn~]^]sd[]UWZREY[Yaznnoxsuyruu{rorwu}ig[WNPXGYmgww{}fKGEdN]^^aa\\aU\ZIYfcu{pw}t~z}ubbXYX_innrvxvzyzTRRJKIBKD]]`kW\\[\[[GIL^{|}||nbVXYYbpdnuvvosowUJJIGIJJBBEZOCQOD[[\VYDMbwz|vuuzvzmXWW[_hppsuvxmigRJIIJBBFAA@C[ZQZLMj}|snYTVWaljppqytnSONJJIJJMIDFGA@@?@BEN]\ZZSYScr|tvv~tcUWWXamvqwwsSNLIJJLQFGA@@?BDP[\\ZRSfj{||}vuc{fxkxeTUUXcixx{~zqeMLJIIKJIMQKDCAA@AA?@CMZ\\[o[]oop}w~fccaez}z}ecZYTVX\ykXLHHIIKJKONQF@AB@AA@D@B?LXS\T^\pyz|}txqfb]{{yxoYZYMPXYl]ILJJIHJOQRRKBAABA@AAB??DKU^_\_goz|s|wtqmk[gxyxsYONONRyRmkhMDFJKJHIGLRRLJDF?B@A=A>>HL\^]\^noqs{tvsrpa`kpjqrjQMRUpvSRRQLLXY[PNJQJEOZLOOG@?B??ABAG]`^`_fopqiqrsrn`__pvql__blkbIPKKLP]\XRZMVU[CWNPOLI?BABB@B>MN?\]]ahcllr|oxYWWZogRHm_qlhTJKKIXYZZ[Q\YR[nSWPQMMJ@B?E@?>>=>K\Zjjahmllml_km`nroZWDmoOGJKKLZ]]Z[[^[oRSSWVSSQBA@?A?>=<:FFUllb^`]VWifkXhqgnobE^gROLKKMKKWS]^^[]]La`b^RQRWUTSQIBFA?=;=;<8Qklm`aWWV]{caagn[edUfQLKLNNLKPQU][[\U\o__SQTPTXVTTIBCB<<::?=UM]__UVXX]WXaXZX\ZKQePMPLPNSMWUUV[\WROKQQabaaUTTRMIEDAC=;=@>BAOVWXZWXVW\cSXXWL^ZLKLNOMORVUVUVZVRMLLPQQkaabbUWUNMTMDDB<;:=>@EQUVVXbXW]\j[RWXXZ_dLMOMMNQTUWX]SSQNLPQQ|bb\UUVVTMCAC>>@EFEIUVVXbYcdbVYXWWXXaj|UMLMMNSTTUUQXSRMMJMORmga`a[WVVRNA??BCFENHLWXXrdROWWX]maYPMNVRTTFKK[[tNIIJPTjllbb`WVVNEH?CJFJVHG``agoujQ_WWXdk~aUQWWXPUUMNKI\qvLNJUTi]]Pb\]VVXUOJMPHNOUVNRQdasosqM[VWWYZ\l~~aUTTV]ZYTPQNJpvpi\RZUp\[Z[_]WVTTSWOLXYWJFEVHPLQJfnus`NTUTWW_Wl~h`_UNNOSWYUQOlqp`ii]\\]ZZ]`TTSSRRPRXWXXIGLRTCSOcntspeO^]ZX[Uiih`gTRUW\VUTSNUpaceiaZ`aa_[Z]XTURRTUMZGEFQJEJJFIgoqspohkgdfej_iabf\`XYXUUTWWcea__nce``^^ZYXRPRQRNTMFCCEFDDJJGJrpqssrpqkpehflni\]]cb\WVXVVdog^^]YQef`_^`]\UPPOPMGMFFCBEIFDCGmrptsrrsnlcbfnnabqccdcX^^VVel_L\XWVReec`a_\VNNONIHHFDHC[^RI_opkstruulkjfa{aabfdc_c^`bbdYUZQXVUWROaa`_XPNNQLICFFBDCH[Xe`rospttokkmv|bmiecda__dd\Yn\SRQQNRg`\]YXRNFJCCFTahgdrqquwtvolklkitc_icbbdc_]Xeed\][WXONQO`]Y[TSOJFDCCBGIWmiqblvtuuqtm[qdjjpcXS]`b[\YSXebc`[]`]VSNNO`][\WRNIICCOMTTdllbsusi_ijpnhdab\[ZZ^^]UXUSXcc[c`[WWQNMNã``aWXSLUWHKLQSTTbommlj__]\pmtc_b`[ac^aaYWW_X]^SfaaP[TZRWQhe^VQP\TRMPUUVUZagg`ij`\iiac^]`ccdd]ZXSZVXVfY]XaUMNNSXRxRT]\[WWX`dZfjddbeeakme^]`]]^dcTUTURPeg\VXO[OMMNMV{X`_jYoaaqea`eefcempxa^]]cddb]VSVSRQT^VXO[[YMMONK||sqtb_qfsmbfeccdhhql`]^]]^dd^VTZXRRWTTXO\`ONLMQNxlxvwunhdd]]gimpn]]a_ejiYRPRVzXRXWTP_WZUUPOWQfg}{ztjhj__dmmrh_c]ll`hjweVTQUj_ZYTXYUWO\UOTLO__dΜ~lkku[mopsb_]^^`imXYfUUQhqaZeUf^^UV]TIRS\\eȝ~xtvssvutl_]``_VSWceeQhmde]RbjhVVa[`]K\\x}`wvzzukjk`d}`WVWbeemmeoVVkk]ZVXcrohu]_qkxzrvnh[\ofTZSR_meeff]]^vsrrxx}tsoxrrg\]\`_KJUfkemff]jowyvxxݞsrk]hiooldfd[\gbQSIRllgg`yx埤rqrsmhnjgj^ab\cMcVVTT`q{eSrLonkjrg`_\VgMO`aaOVocŝrKLTQR]afhg^Snla\_snl{堟sKLKQQZbaujf]^TfaalqtXWLHHFEDDEFHW[]WY^ZRS]NnQUTVTIGIHHFEDEEFFKJJFMMJKKJZQIHEFEDDEEFEJPQ`Q]_\XTqfdX`KGDFFHHFFEEFGHIIJMMJKJWMHHFEEFEJPW`T_]\\_dndVIHGEEKJFFEEDFFHILKGHMMLKIJzJIGFFEEFGLSVQ[`[QQaVTUFFGIFEHHGGFEEDIIKJKLHKHNMIL^KGHFGFEFGGHJSUV]RRPUMMIFIGHGHHKJHEEIFFGJJLINMNQKK񤕥VHGGFFGIKKSTSRRMOGGFFHFHGJJFFGEFIJJIJKJKJJOOMKJKykIGGFEEFGGHGHJMMZRRPHDGFEFFGFGGHEFEFHIKJJIJIGLMMKKInUUMOHJIGHHGHHIJNRQMGIEEFFGFGHFFGFJKKJJLKKMMLMKKsp`]XPPMJHHIHJIKKHXPIEGEDEFFGIHFFMOOLMLKINNMLLKS`Y]WRVNIHJJQIGIAADHFDDEEFEEFFGFJKIJRROONNRWMMNNMLLKzZ~q[[ZU[[\Z]HKIIHHIKFJCAABLDDEDFFGGJHFLKLLSX]][RQePMMNMMLL_ZkcVST[XU]Z`]]_KHEMIINKKIHAAIMKEEGIJNHFNXmde[^k[eZUSNMMLXWZdWUNSPYZY[d`]_PGGHJJILLHMICAHJNONPKKSSZVhwrT[VTQQOMMLKZ^_[\TVSZXZX^]^_WFHJILRPJMOPFJRSRQRVSMLUa]]~kpgUNTQNOOMMLKLPQVY[`WSZYZXY\[^ZNMIKLQIOQPKVSRXVTSQTTVVa^cfkkTbQMNONNMLLTOU__^`_`YWXYWWXVOLIOMMNVXYZTVTSddfi_cacbgiRLOOHMMNMNQONNMLLZQS`_`bh`d_X^XWYYUIJJMLINTQSW^^bTafefeihZKV_{NPJKLKMMPNOONNLMY[X]__hhi[_YX]XZVKGJDKLIKLYS^Z[cb^gff_UMIHHFEGHJHFJKKLMLMMOOMORN\[Z`_a``XhVV\[TVVPGFEEGHHKNQRe_k{idbaORNHGGCGKJFKJHLJLLMMNORSUeZ\__^^bWPTWVTX[HMLFKCHJLK]q~iisif_KRJJGGFFJGFKKILLNMRSUU\\]\]]\_cUZPWXV\[KDSIEADSRJhy}{rkjpOKJKIGEEBEFHIJKKLKLKMMRUU_i__^\_]``Z_YXP\OQOLKFOJNXTd~{yyrRTNKJJHFECFJJKIKKJKMPSUScmjac]^a``^^_WU]XQNLMQMPVWSV||}qXUNMIIJIJIGEEFIIHJKKJHGIGKLLOOdnjb]]`a_OLRQOKPSQOMQXZf~Y_QQNNKIJJIEFHGGHHEGIGIKGHILJPgiX\]`a``^\UPVQQOTTUSNRLLU\e_RPVQNKLJJKIIHGHGJJGGHGFGFGIKKH]d`X[[`_``^W^Y`TQQPNLOTOLOLQTPSc^RPOMMLKJJKIIHGLIGHFFGGFKMYca\[\Z^_`_XYYOS]OMJLPPKMPOPLR[]^PPNMMLLJKJJIIHFFEFQEFGGHJGFEOKPYc^^_ZeiZOQOUPUTNMPKKJMJMNSSnlb_WPOMLLKKJJIHFFmnLGGMQKLFKPOOPb__^Z^W`i^OVOPPSMTMLKGJGMMO\ijohfVNMNLKJKKJNLFGRQRQSSOPOQQPbb__Z[_e_QTTOVSSNKKJHIGMS_hmm|yTOLOKKLKLPQNhV[TSQOQRRQbcab_\]^_`nVSOVfZVLLIJIKGLY_himlgnSTNMKJLLXSu^\WNPPRQ`cc_b^Z\^sa^g`[[TPLKJKKPR]hijj}piPNMKPQWU^txp`PQRQQ`cc]`YW\]YYaiaaZQYNKJIHJHPT]Yhl{vnc_[d`dlaty~OOPPda^^XX[X[[W`\W[ZZTRIIHGGHMWb`Vmqo}mWOSmUpr}r}}[^ghaYYZ[`_[ZZ`YbTUQQIGGNR^cdqqtqTQURUXhz~xþg[[YZa\^X]lx``hYUUSOKHJNJNPNNcsqrtRPTZ_ihsu}wżþ[[YZYZ`YYnehihnfWROPJJKLNOKNSUhql~llUln`ZusĿc[YY^Z^YZ_fosu~[TROMLIJJOOPLRW]hmnpmsmyy\zzºër[bYZZYY]ett~}dbNMMLIIJIMRXWWnlqwnsu|vmvy{·t_[[YY[k^cfi_QLMKKJIIOTQ[fpk{{np|q|wjpz{c]k_]^^X`awskfRRPLQRQOOSUVtojqp~uwqsmlU|aW[_`]]`abeysiVRQONQQRSOWZ_hhjst}{^qbQOub|baYX^[``ecytsfjQQNSPLRRVVU_fjjiilpPONONO]SUXZ]ZvgaY][]`_nrrreWPTRQISOVRV[Xfiik~gSNMNNKNxxSPPQWTQX`\a^Y\b]f{xqshJPRMLMMHVUVVW]ihhinuTQNNMMNKQz~vQONORSTPQS`Y]n}e]kufisfaSRNSSQTTVVWVVW_h_moytmQOMMKMJvwsOONMLLUPURRua_fmbwlnnlaoofXVTGSRSSMVWYWWZ\a_wztcOOMMIMJRSQOQOMKJKLNMLNWV^cbgxmipjocamsWPIIMLLMIKXXVXW]a`btql[RMMKKIHIIjTNLMNLLKKLMQNSfig`YuhhehgqfZUWUNKFKMIJK^eWY^cbfgpkTUOLMIGHLPiQOOLMKLJKKLLMQOOfgigeeffedfhVVUSSJIJMLPYZ]\\petr`ZVTSNHM]]S_\OKLMLKILKLLMNNMdfehfighZegkiZZVTKJIJIKLXW`]dhlspbi\ZUSOXfkrlQOMJKJIILKMMNMcebbl^X_\Zdmmkj[hULKHKKIMSX_hblle_]b[ZVTQZhuusNNKKLIKHHLJLLMPg[`bioXZbZbjmfjiuOOLLJJNQMY_debb_``^[[Zaq~\XNLLKJFHHLLMLKLLMRdZXloojbbcdgjayotaMMJKLMRY]bb`_^c`\][[\[dpYYMMLKKILMIMMKJR\]cklkh`cddkmxzfVOLILKLQTWicbb_bc`_\][[\ab{ZNMLKKIMMNKMJKJJLqnsmlledecdejjriVSNLKMLMNNU`d]_bb^`\`][\\r^OMMLJDKNKMJHKIMNwkiiedcdgfgnosxRSPKIKOPNOTbf__^^]^dd]^i_nxONMMKLONNKHGHLO|zheddeptmaRWQNKLMNNRS[cb]\]]a`bh_wzt~bOX\L^NJILHGFJcV|jhdgfddlvca]YXOLNMMNSYbb``\cdbfhrmvnuqo[VNLGHJUXe}wmikfghhdhcc_UZPLMMNMN_ab^aacc_mvv{q|lXmYIQRTXdxnmpjijehZhhXZXSOQMMNMMNWOV^YTZ`cd_beqior~qnTSRQ\XixnnopnmjhfggZZX[RTOLLKNLNNQMWWPNTNZ[aR\]fio•{rqkaSWY^dyomooqifddf\]YZWUSQLLKKPPRXUQNQNNL\YNLTYYfrčywusbUUT`ftooplgcbge\YXYUUTTMLNOSQPQUTNPPNMJLLKLMOTcoĨvtmWjcmchONHFFEDBBCPTVOQVRJJTEfKONPODBDDCBA@AABAAEDD@GGEFFDQJGFDECCBBCAEJJYIUVSOKh^]RYEC@BACCBA@AABCDDGHDEFEyPHFFEDDBBEIPYLWTSUV\f]ODCB@@DEABAA@ABBDEFFABGGFEFpGEDDCBCFMPITXRKJYOMOAABDA@BCBBCBB@ADEFEEFBFCIHEHWGDECDCCBDMOPVLKJNFGCACBDCCBDDCBABEBBCEEHEIHILGGODCCDCBBDFFMNLKKGIBAACACCEDBACABEFFEFGEFFEJJIFFGnbDCCBCBCEHGULLKJC?AABDCCABABDEHGFFECHIIGGEwcMMGICEDBBCDEIMKHBD@@BBABBDCCDBACBFGGHGGIIHIGGhfXUQIIGECBCDCDCGFCSKD@B@@ABBCDBHKJHHGEJJIHHGxJXQWPLPHCCDDELDBD<<<=G??@?BCDDGFEIHIHOTXYVLM_JHIIJIIHHTP_ZLJLSPMTSYWWYFB?HDDIFFDC<?KNPJKPLDEP@aGKJLKA>@@?@A@@DDCA>DDABB@}|~~ztGACCAB@A?@?@>@DETCPQNKFcYXMTA><>>@@?>??ABDCCDDEABBwz{y{kIBCCB@@?@DKSGRONPQWaXK?>><<=CC?@??@AACCED?@DEDCBCx~|y{gCBA@?@?@??@BIJDOSMFETJHJ<;=?=<>=>?BAA??C@ABDDFCHFGJDDwJ?>>??@??@??AAHIHFFBE=<<;<;==AA>?A?@BCDCCDDCHHFDCDz{eZ>>?>?@??@CPGGE>;=;;<;=<>>@>?>?ABEDCCAEFFDDBkZFFAC>@@??@@A@??DHGC>@<;;=<>@>??CDCEFFDFDD^]PMICCA??A@A@AA>NG@<>;;<=@@>>CDEDCDD@GFFEDlANIMIEIC?@CC@H?=?88;?=;;<>=AC@@GFDEDEFMFFEDr_GgZIHGCJKMMO@CBBAAB<@:889C;;:<<==@>=BABBHLNOLEGXFEFFEKHVPDBAHFBJIONNQC@=EAAFB@?=88@DB<;<;=BN_WXLN[KTKJIFFEGEIQFC:@=FGFHTQNPE@@B?AA>B?:8?ADECE??EFJGZnpqud`EKHIFFGFFEDHKMJJBD@GEGELLNPJDGEEKQPSISWUVUWVLAGLi=B=CD>??LFQKLTSPWUVPHC@??=<<>=<>@BBCEFGHIFFIEJKKQPPNNEUCCIHBEFD@??>@==ACDVPYkYTRQDFC@?>?;>@?<@@>BCFFGGHJJTJLNNLLKOD=ADCAGM=DE?C<==>>O`mYXaWUN@FAA??>A><@BAEFFGHGJLJJKKLKLLJLPBG=DECMM@;KB>:?@@A@ABDFFGHLJJNXONLJLKMMGLFE=MBEFEE@GBDLGUmkhhaBFA??@A@A??=?ABAABBDEEFDEFHJIJFR[YORKKNMMKKLEDNIDEDGIFHMKFHll_FE?A??@AA@??>?AA@BEECBDBFCEDCS\WPKKMNL<@A??@@A;?DBDEBBEBDVXGJKMNMMKIB>GEEKLJDG@@GLVOA?FBA@BA@BAA?A>CA<<@??BA@BCB@NSNFIIMLMMKDKFMBDEFEEGJFCC@EFBDSNA@@BDDA@ABA@@?>D@<>;>??A?ABJQOJIIGKMMLEFFBCCOZ\_XWKGBGEDCA@B@AC@;;CzmCCEIHHDCBDDBPPMMHILRL>AAAGQY^^khFDDGDFDGBCFFBWvIOIHDBDDCPQOPMJKKLM[C@=DUJIBCBCAC?BLRZ[^\X_HLGFDDGDDLHawQPL@BBDCNQQPLPKGIK`NKTNKLGCDCBCCFPZZ[[k`[GGFEIIMJR`_m_QCDDCCNQQJMGDIJFFNVNNIAKECBBAB@FIPLZ\mif_VTRZUZt^T\`xyiAABBROLLFEHEHHDMHEIHHGFBB@??@DLVRH\_\k\LFIaHbcj\dhc{vqwnKLTUOFGGHMKHGFMGQEHEGB@??EHSTT^_`_IGJHHKZikh]n|vUIHFGNIKEJYeMMVHHFCABEBFGCASa^`bHFJMRZZ]^e]qrvpHHFGFGNFF[RUVV[UIGDEBBCEF@BIIX_Yk[[J[_RLb\ho~utnqrQHFFKGKFGLS\`bkMGFDDEAA@FFE?FJOXZ[_\aZiiMbampwwx`HOFGGFFIRa`mjiSSDDEA@@BFKJK^[`eZacke[_ab݆aLHHFFHWJORkmmoYQHDEEA?DIFPZb[kiZ\j_kdX\ecPJXLJJDLMc_qnXUIKHDJJFEGJJgb\c`mbyye_a[[Ed~x~NDHKLIILMNQeto`XLJIHGJIJHEKNS[[\dckzjN`P@>]~VrmujU~NEEJGLLQOe`o_SXEHFLIFJKKJJTY\\ZZ]p{`A?>?=>~SKMQNQLcmTMEJGILKZ^^nl^RLDIJIAKHLHKPLY\ZZ\l{zVD>>?@:<`iJJKMHGJOINKEINIRgd]k_lU>@9?cffJIGJKKIFEEjMFJ[jQIWaRU_nSODGBJJILMNMMKJKSZQ]_gb[BA>>?;;9ardbHIIHFFLIIFD_lNMTZPcXZZXM[[SIHG:IIJMFMLMKKJLNRPghbSAA>>:8<9ADFGIIHHGFFGFCEFDJQQWeZxU\V[OMY`F@;>DDEFABNLIKJPSQSca[JA>><<:88XEBCGGHFEBDVWVNFaTTQTS^RHEGFCC?CEABCSYJKPUSWW_YCD@=>:78;>VFFECGFGFHHGEDEDBBVVYTQQRRQRUFFEFBABDCGNNQNOObVdaOIEDD>9HTY]X@@=?@?CCEGGEDDBCBQSPOYJDKHFPZYXXJYGCBACCADHMSZT^\UNMPJKFC@JWa`_=<>>@ADEBFDFEEDCBEUHNOV[DFNFNVYSYXfEECCBBEGDMRWWRSNOOMJKKIQ_ijHD==>>@@BAEEDCCHRHEX[[VNNOPSWOi`fTCDEBCCDHNPTTRNMSNKKJKLLT_ozED<<=>?@CEBEFEEDDIHJPWYWULOPPWZfjYJEDBCCDGIM]UTSPRSOMJLKKMRSgmmF;==>>?ADEEBEDEDDC\Z^XYXQPQOPQWXaYHFEDCECEEDJTVNPRRMOKNLKLLM`j{qJ==>?>AFBCB@DDybVUTQPOPSRS[]agEHGCBCFGEEITXPONMMSLNYN\erj=<==A?ADDB@?BCCvecSPPQ\a\QFLGECDEEHOUTOMMPQXMef`imM=FMBPC@@B@?@BSIwneTRPRQPPXcPONMMECEEDHMTTRRLSSQUXb]cZao~ula]LICA??BJKTve_WTWRSTTPUPOOFMGCEEDSPRRSSROO\cdg]vu~k]K^L@HGHKSn`VVYUUVQTFTUEGFFDGDDEEDCCDKCIPKFLQSTNOS^V[]om`^KIHFOKW_WWXUSRSSFGFJDHECDDFCDDFBJKCAFALOSENMRVYg}ha`\TIJLPR`WUWWYTRPPRHJGGFGECDDGFFGLIEBDAAPLCBFJJR\vfdc_UKLJNRp[WWXUQONSQIFEHFHHDCFGJGFGJHADEAA@BBCFPXpvtrc_\M\T]OJHHIPLMONNMLHJKMNNRSRTWWz{}x|xxz~~y}}||mJIHHNPPNNHMKMMLHGKJMLMPQRRW[}xxyzxwx}w{x}zvo|mnLNLIJOOKLOJMLLMIGJKMROQMRRSa}xxywxwwȍyvx~xz}u}||woOLJHIJFMHJMMLLKJIIOKWPPQSY]rquxxwxwvwwzvv~yzz{zvqKLNIHGJHIJMMLMNLOY\ZVRTllqstxxwwuktp{|vvxuwxyyxwKJJHJIIJLMMNQTUYWX[\^\blv{zz{vwodknolz{uvy{{~zKKIHKJJKIHMSTUVUYY[itupurrbgjfb]Zn{{x{{v~KKJJIHINUTUVUZ\QjlnyYQXONWWYZY~~uu{}wKJJIJKKJILKRSVVUVU^u^xyyxvYOPJIJKPUQWxyvHJJKJIJQUVV[ulxnm|voPMNKIIKKSM~q}yw}}|zKJJKJKQVUVVZ{{t|ytwwPNKIJJNLLRUqo}|x~|~KJKJIJKLMLKMMQVVhy{{uszoiVKJIOMNOOLVuxw|}{xLJIHHKLLKKLMPPVVWYz{||ovtynOLMLQQOSxuoq{||LIIFHKLMLLMLLMRSUVuqnss{{onikphLMMNQRPdvvstqs|JFFGHJKMLMMPMNklzhv}}jgfggSROMUTT`qtppx퀂IHHEJOONNLMMLMNd`q|oikejdoRQQRUVkwzysy~~LLOISPPOQONMMLLYz}}jddcdWRRQRTmwx}vx{|}}USR`S]OQUSMNLLMOly}}wrgdlebSSbst|}}|VXX``bZWQUSQLLMiemt}upjmmlYYWTbxuru}}|WXabki}ye~ZZML]ikkln{}rmcdWXWX~攎}}xyWW^fkkmm}ref^fWcXabhqq~sS\fwsonnooxshee^\cUfSmgdd}monntmÝpposouz|podd`ZnWQPQTt[}ghf}r|xootij{_ƞqpooq|trm^^heSPUVTUUWUVYgbsfcca}yyjihgnzoypooqz}[n`^^STeSS[TTUUTUSP_b``ae`twxttjhessozxsokVmXXUSQQUXRRS]TTUUTNNaQ__eekvu~zwzojsszV{g~jQQRQRMONRSRQSTUUTTUUTONNQ\Rbaclssuxu|lgssQZhycXTPONNOPPNLPPMQQVRTTSONNORdhmtstxjkhV_abqŶXSONNMLQPONNKNdXZXSSUTTNSMNN`dnyv}wojlS``a`kúbXPONNMONNQMKMdgksYRPSTUUXXONSMMOYdptvwutU`aab¾YUPNNONLPPOPPU\t\UTRRSWc_j^QQWNPOPb[uszwWaa`aid]NOONNOOPPV\^\SUORZ[[\mj`ZRNTRMPPgt~^aakcdŸ_OONNOOPQRXX[\]XORY\\lZ_^XQSTPPQS]mnlmmwSPOOPWba`]^_^iZfiW\TQQRUUSU\^Q^Vo|»¼Ĺtp^QOOPx|d``_wyhi__WVRTXXV`^XYik{n~Ľrq_SPOOPQq}facv}w}`tee\V[\\[ZTX`_PUZVU`p`PQNNMOPPQRpyknz{{|rpih][\]\[YU]^QWUVVU_}¿woQMMNNO_vnl{ozyqnpjd_\[c[ZZVXXUYVUU|vvxRPMNNOWq{yzvukkj`_[h]Z\UV[WWZVVTYYxw}sOLMMNOP}zssulnmb_[daZYWZZWWbT\UWnovwz~NOOQSn~}{{dn^fZYXZ[\c]bbc^]\linPWVNQ]klvqvs^[W[aaeeb\Wa]ZkλuaZm~jtkgYYVimnqqonsgVX^_feebajii~YWWVXkfefghgfjkgh{zp|}mlopk]XihkfefcYaTYjĽ\ZZUUTW_edefkgfgdl}{{z}wz~rllmm||npnotyhlji]Ujg`ැXUSTST\a[`nlfljkfnxy}~~yjyv}llo}omq`^_mfWTSSTSRZT\_rkmzwfdxizrxlls~kkonga]ĽVQRQQSPPSTSav~xci}wnnrllmllvl~b\jNy´XROONOOQVSR`p~xsupopmlny{{l_Y^kNN]YSQONOOPVVSpwuvqqrwr{`jXqzOOZZ\SMLNNQP[}wtvrrv~bhcbbx|zNNS[bWQQLMOPPXlxvxvxee``^]]lwwNNSTTw_PRhzSLLRLONUZwx|bd^\]]n}QRWSOOPNNRWn_]RPQRRXcyvjg]Z\]]b}SOSOONONSOQTmfWXVNUcuwpqld^]^]]`_]]kQRXPMNNO`Slcc[^VX`ettormcaea]^`_]^aQXTNNONQSijde\^W^`ۣuuvquggnhc^b_`]]k[_aWONNQapnpcbecY[ûmrstgdb^_`^]\hhmTqsnwfldibc^q krrsswjcabc\_Xhhtll|ogwferefjha^[]\hhr~xg~w}ſhuurrsg\_[]j~}{~Œkpttqxxd^^~yxz|Ōhhnhqf½~`^^j~yw~{mx{zpcgab{™j^]EBBCJFFIIHIHHGDEEGGIJLL}noqlpllnrojqyxuyqpp`EDCBIJKIICIGHHGDCEEGFGGHHIMQqlkmnlkkqszxgkiyolvplhcp`aGJGDEKKGGKGIIHFCFEGLHIEHIIVzqkklklkklyvvjghmhild}nmon{iaKHEDDFBIDFIJIIGFEFKERIIJOSeeilkklkknuvuuggnhiijtutkhbGHJDDCFDEFIIJHKTWUOJK``efgkkli`idovuungfgdfghhq~vpigGFFDFEEFHJJMPQUSTWWXVZbkomnyokkcX_cc`twutjnkdehjjqpnjGGEDGFFGEDJPPQRQUTVcmnfkgwfW\_[WROboouwronohjje||}nmqGGFFEDEJQQRQUWMdefqtzrsMGMDCLLOONryxpm{eekm|}u|upgqGFFEFGGFEHGNOQQPYnXpqqmuiLDE??@AGJHMkxxyxtwqx{hoe|DFFGFEFMQQVndpecrtktcEBDA?@BBIDr{ybuymjugoon{xixGFFGFGMQQRUs{sjrnyhkkEDA?@AFDCIK{}wb`mrljsyqnqv~y~GFGFEFGHIHGIIMQQRbqzvqpjhnd]KA@@HEFGGCMehogntuwspyumti~HFEDDGHHGGHILLQQRTqsswqdjhsndFCECJJGLlv{e_bnwttunntxHDDBDFHIHHIHHINNPRmifkhppdb^_e^CDDEJKH[h~tfddbevtvsnutvFBBCCFFIHIIHLHIccq_ksr_\[\\JJGDNMMYy~vsad`aiwvtssusuvEDDAEJJHIIHGGI]Yhsuvc^`Z_YdJIKKNOc~~i{ljcttssj{llGGJDMKKJLKIGGSqtxur_YYNJKKMua}}jj{qovvussvgjkklPMMYNWJKPOHHGGIeqtwrlh]Ya[WJLKZi|~~}{z{zgw{wxsstwkkOQQZZ[TQLPNJGGHG`^flx~skf_ccbOOMKXm}||}zheh|wtsvvkkjOPZ\casq^vUzSGGU`ccgtqwsgbYZMNMNs~~~}zxtsrvv}okkfhOOWu]ccdsg[[S\LYNVTZccprrxcqomstLS\khcbdccx{oi^[[TQzYK\Hvu`YVVor]_^^crqpc~ddcgciyqrfeZZUPcLFFGKiR{rZZYodnqi``dYZroiVedccepyz~jicSS]ZHEKMKKMLLP^XsgYVVSzouwkjjYXVU]ieldccd{{puQeUSSGIZIHQJKKIGUWSRTXSfuujjddYVTbbey筬lkgcbtOeNOJHEEIMHHSLKKEWHRQXX^jiqmjl^YabiNw󪭲n[s`JJIHCCBFHFFHJLKKJFEDEHRIUTV`ggilgn[VbbGNZkXNJGGFGGFFEADDBFFLIKKJIEEFIX]ahhlYYWLSTTczNJGEFFEHHEDB@AYOQPJJKKEJDEEVYcnkrk]X[JTTSS]WNGFEFFHFEHC@BY\aiPIHJKKLONEEIDDFOYeiuuegdcrLSSTT~򰭩OLGEFGGDIHGGCJRkSMLIIJNZUaUGHNDGEFXQjho{pfuLSTSTZUSEEFFHIHHICJSTSKMGJPQQScaWQHEJHCFF\jswxprQST\TUTEEFGHHIHMNQSTPGIOSScQVUOHIJFFGHScdx}ty^_^ltJGGINXXWUUWV`Q]`NSKHHIKKIJRTGTKc{ntjfTHGGHImrZWWVop``VVNMIJNMNLLVTMN^`m_n쪥hgUIGFGHHIIfxs^XZnuntWk[\SMQSRQPIMVTEJPLKUz|fVFGFEDFIIJetpceqswsshe^\SQRSRQNKSTFMKKLKTo񱯮nzyvdHDCEEFUjc|}dsfxqpfce^XTQQYPOPLNNKNLKKrmlxnHFCDDEFFLx}{~{irppkj_^^TSQ]RORKLQMMOLLKPPlv𯮮znsvivEBCCDEG}z{rnggi`a`TSOYWOONQPMMZKTNQde򙜨zvmnquuDEEGIcxvvzrtq~xnmWbR[POOPRSZTZZ[WWVdwxv`wwydFMLDFSaxuv||`ifkhTQNRXX\\ZTOZWTclXRduakxa]OOL_cdyu|y||edcc}h]MNUV^]]\Z[YcaatQOOMPb\[\]^]]`a^^}qoyu{}}|cop``ce}aSN`_b^]^\SZOScTRRMMOU[Z[\a]][brpqtnq}hzl|pe__``pqcfdfkp`dbaWOdaZܫPMMLLMSWQVdb]b`b]dnnrsqku\kho__`c|t|}gejZXYf_}OMLLKQJRUgbdqn^[o|[kcj__`gs~{vzcdhg_YT}NKKJJLGGIJHWlt~zo[Zng_ae__`__jy{{}|}dvZT`In}PKIIHGHHMIHVftusidgcbd`_b~||wpqrvdWPUaIIT}QMJIHGGMIfuxhfhddeykfzqvXaOgpJJSQSMGFGGIGQqvwtifhedjvz~{ztuX_ZZorpIHLQWzPKKFGHIHOa~x{ꖈjgjhjzzz[[VVUUdmnIILJJkTFI]pMFGKEHGLQxwv~|rijny{vuXZTRUUVesLKNIEEFDDHNdWVLHIJKNX~|~~u|x{vnl`]SPSUUVZsNIIEEDEDJEHKe^NOMGLVgyuy|ykegbZTSTUUXUbLLOFDDEWJcZ[SUMPSWs߉ztyyhhegbYW\YUVXXUWXLQLDDEDHJaa\\STNQR{ۑgtsijek]\d^[VZXYUUcSVXMEDDHYiegZY[YNNrê_drerrtuxxi_\[WXYWVT]^aJjlen^c[_XXP`]ddeeiuytb[Z[[TWO^^wlccqe\l{yXWdXYxa`ZWSUQ]^fwtn^stmoYffqdcyyh^TWQQawtvrqstz}]aefbvzvllYRR{{ywtpooq~}YZ`YcXxrTQQ_z}zyupntp]yfi|kcUYTVl]PP@=>@GCCFEEDCBCDCB>??@@?BBABDDsbdfafbbdh|`[dlkthmeedUAA@?GHIFG@EBCCDB>=?>A??@AADHze``bdbb`fh{lhqY][lfcyyje`]XdUVDGDBCHHDEHCDDA=A?AGBB>AALpf``aabaabulihh\Z[b]_c\w}rcbecp^VHECBBD@FBCEEDCBABGANCCBDGK[[^a``abbaaekighZZb]__a{~jj`]WDEGBBADBCDEEGEHRSRJDDVV[\]u``ab`Y_\fkji`ZZ\Z\]__z}gtlf^]DCCBCBBDEFEFJMNRPQTSTRS[ceccpd`b\RY[[Yjmjh_d`Y[_aa{vgfd`DDBCADDCDBBEMNOPNRQS^gg_c^o]OUWTQMI[ffkmyfede^ab\vrrsdcgDDCCBCABGNNOOSI_``jmqjkF|AG>=GGIIhxzrpofcq\\bwcrrkrkf]fDCCBCDDCBEDKLNNONMUiSjkjeymaE>@:9;<:;==>D?kspWlna_j\ddcp|m_muDCCDCDJNNQnslckfq`cd?><;<DEstnXUbg`^hn{ecejsnt~z{DCDCBCDEFEDFFJNN^jsniha`f\WE<;;CAACC>GuZ]c\bhjtkhemibi^sECBAADEFDDEFIINNOjkkoi\c`kg^B?A?FFECHd}koYSVbkstuhhiccimEAA?ADFGFFEFKKMMfa]b`hh][WY`Y?@@BFGDU_utiZXXVYvstjhjhcjtjlC?>@ADDHFFHJIG\\iVbkjXVUWWFFD@KJJUsxulhUXTU]wykjhhjhkl}wAA>BHHIHFGGHIGWR_imm\WYTYS_FFHHKL^xwu{^p`^Wxuthh_tqbbyxCDHAIHIHHIGHHINhjvowljYRQSTJEHHIJoZut_`pedujjhj\^`aabKIJSIQHILKGHHIIHII^gjouvjd_UQZSRCFFUcvvrqopo\kollhhk`aaILMSSTMLIKKIYX_b~nuic]XZZYFFDDQgvxsqr}o]Z]qlhhkkaa`IJST[YhfUjPpSJIRYZZ]vvujgnj^ZPQEEDEk{t~ssusomihgkkzseaa\^IIQj|yyzWZZ[Z[i}uuyy^QQIREOEMwyuIOXXeggmxYgecijFLTb_[Z[[Znpcy]UQQIIrOCSAm|lu}UOKKdgRTTSYhgf[t[[Z^Z_mef[ZPPNH\E@??DaKs~ixvPQNdYcf_UUZNPhe_N\\[[]goor`^XKMMVSC?CFDFGHGGJVQj]OLLJpdkma``ONLKS_]yb[[Z\qqehL[NMMCEUCCJCDGGEFDANNIIJOJ]klb`[[OLJXX[o♟ca^[YkFZJJGDBBFICBCMGHGGE??O@HHPOVcbiebcTOWX_GozcRjXBBDCD?@?CDCACEGHHGFA??AJAKKNX``bd_fQLXXAHScNEB??@@B@=AA>BAGCGHGGE@??>BPUYcabevvOOMFMNN]xlEAA>??CB@>?=@VKLJEFHH@??@D><>:=GR]bnnw[]ZYhGNONNuԞFC@>@CB?BBAAB@FLfMGFEEFJVQ\OBAH<><=OHbbhzzqe\kwGOONNTPI>?@AADDCBB@ELNLDGAELMMN^\RKA??ADDCCBGHJLMIADKNN]LQOG@BB>=>@JY[nrtyiwoxXYyz{W}dulEEDDCBAFQPPMNPOXLVYGKEAABDDBCJL>MDZqdvixw~vb^RFEDDBeiSPPOOefWWMMOGEBDHHIEEOMFHVXcVe`_QFEDDBB\ojUPRckdjNbRSKEKONLKBGON?EKGGOpzs}{^PEEBA>?BABB\jfZ\ggkgh][TSKJKONLIEMNAIGGNgzeqpm]B?=>>=>>L`XrsZh\mfd[YZUQMLLULJKHIJGHHFGG}{vۜ}vidcofBA=>>=>>Cmqspspu^ecd`_UUMKYMKNHHMIIHEIIak񚙙|qejm`m=<<==ׂ|qnpfc]]^WYXMMIUSKKJLLIITFMFHYZΈwpmdehll;<><>@YmuvjjohifupffO[LWLLKLNOTOTTONM[}komWnnp[=DC;=IXnwi{lvsvtUa^eaOMJNSSVVTNHRNKZĔbOJ[lXboXTFFCVYZnipm{wsyt[ZXXuaWGJPQXWVVTSRZXXjIGGEIYTSSTUSSVWTRqecmjoy{vvsYfgVUX\uYLJZY\XVWTKREJZLJJDFFGMRQRSXSSTPWgeehbeq^pcth\VVgXw^]_ciZ]ZZNF[XRzHFFEEFKOHMZXSXVXQXbbfge`jR`_hVVUVYxrwxltu_]aQOO]VxsHGFEFECHAIL^XZfbQOcpQ`X`WVVUV\j|xxvrwn~rZZ_^WQJsGEEDDE>>@A?NbjsodNPb\UY[VVWUU_nquwwsx|tssZnQKXBcsIECCB?B?D@?L\tijtg^Y\ZYZWVXwsxrsmgwhi{mZMFMYBBLzsJFECB??>DD@\}jm][]ZZ[o`\ozxxxhyxvlNXE^gCCLJLGA@A@?@>Hhtklu}g][\[Z_jwoy~ur{qklPWRReigBBEJPqKFE@AAB?FYt{loy^\^\^yxo|ppRRMMLLMM[deBCECCbL>AUhH@@D>@?CHokjome]^bzzynqmkOQKILMMN]jGEGB>>=AF\QOFABDDFPu|sptpoohnk|ojdbWTJGJLMMNRjHDB>>==PB]STLNFHLPk|~ystkekm\\[^YPNSPMNPPNOOEJE=<<>=@CZ[UULMGIJq~~wZfg]^ZbTS[URNROPMMYLOQE><<@Sd_aTRTRGFi{~{}~zRXfYgfjkno`VSRNPPONMUVY{Cdf^gW[TXPQIW|yz}}QXXYY^im}zjYRQSSLOGVVuwle\\h]Tdx|tmzz•mMLXLMmyXWQNKMJUV]~mjeWijdg{v}x|O[[eXXmn_UKOJJYzzljjhhikpyz|pRWZ[XlnlctcRKKqynljieefswz}|qsOOVOYOn~hNJJUvmomliedhfxyRz}|kX[xo`XLOJMb{}{UJIstursrx}~vvwvxwxy{wr^n}tv~|yv}ysyvwwntuuy{wu~uuvx|{{zyk`x|}zz{}~ysnsy}wynuuw}|~|vttvz~||x|x~z{t|uttqwnmk`kxttpv|s~|yuttuwxw||yz{|{kljrn|ypuojlkkwntvxv~x~utty}vwyyzq{ywwkjkpklr~stx{xmf^klsvvqvw||zwuw}~yyprilfvtlxxjlmlz}{y{}|ca`^vwuwvq{|{~wzyy{|nihcfsxyuhhnno}~|~`ipqtvxzwuywxxvtusrrs{zv}mpnq}~|{otvqppqq|~zuuz~||~}sn{}~nr{~|zyxnnmpvppq~|yss~zx{{|zyuv}rl}po}}ڂ{wxxrsnmpqpty}|yyqots~x{{xxqwko~|~lqk}}zzy}~ttqnqxw~{{troposz{~yt}~lm}|wzvtvoow~|}}svlrpvy{yu}~q~{zutro{}rvzyw|~xtupv~q~{wuvuso}zzvuuwwyx|~uuspxpq~r~uutoqzuvuxuuwwvtuwtuxry~uppqvtzz|muxuuyzvvw|w||ztspsuur~{uttppCqt}{unz{s{~}swzwytptsuus|wpss~tvz}y}xzprtssz}|}r{~{|vwwzporruvzz~xxqqy}{~nsv|yhgqz~{zxuvwty}xops}}xzknl||x{y}qmgppzvz{tvuqyytlft{{rryzzuzv}||{sqmmgqvzwzuzmttqvqux|hccnnsyz}whl}{}{{xlqlfmlkqkyux|zuwtfw|z|ung~z~zrxplhfejhnjmppsuw{|||isru||vzuvs{z|mryxigfhjnn^lryzslmm}~|}wt|xuuz{zt}yy|v{mw|zsrm|styedceg{wyrwwuuzv~{uyr}|}uddccdgywzzssuyvvvsuu܍uuyxkt||l}wddccdgv}sttrstssrz{utxu|zznm~jwccgz|wssqsyurqpnnwttuxσ}|x|}zkgccd}wvvwtxwtoompyvxtz{}~|{|瞎q~|{ikdssvtss݇wompz{~|zxx~pp|{|~|{ztssyvrpt{yy|~~wwmmnz||}{~w{tvsstpp{~xxmmw{{~zsnsvyx}{{vtsst~uptuv}z{xuvs{yyuqnnuwytxz|zywuust}|~wxprs}{|}xyzqwzsttqwnurs|wzyywusttvwvpp~{|rxyyxxwuusustqmccfpt}|}zzwwttv{zwz}urrppuuyjlyywuvxzrtt}ykccx|}yyttuuy{olpvxuqspsz}wssvtty}qxvvthbdvtzwwvy{z|n{|{|z~~}tqqrnppsofmxxzsdgf~xw}v|vzz}xufknjq|{}}orrnmnnfflfz}wyikxh~}zvv}{ztojhhjmprr{}}~zyvooklnnbdeejxytkffk~ztowmommsxvz{{|}}~zxzjroonlfadr|~~ffg|x~y{owwxy|}{~pxkqqnprnmaccgemlxvumhv|x{wzyyxxnltkmom`adcdchjuvwt{zzwz|nm|svwzzxzzmyxmmuq`bbekdfjgsw|s|xxzz{suvqr~yvuvyzwzyvo{{omve_bdeea_`\~zzyvyutx}t{uyzzyzuqrtt}yzjnZcbeW__`\d}f}}or~~{w{unk|yvxzyysroux`]]dbcUT__UYU_gjhxz~nnootztyr|xxyttnw_oomeiVW`[_UTc`ahvvqoqoouwuuyvx{yy{~{zysrnnXXW]`TV\a`atriitqqtquoo~}uusjjo{{zxrrqkacbVSY\_^^ajsz~g{wttsrzuuއhkmkyx|qcdaYYX[\^^[UTKV[lttqttuu~w{yzvvlholwq{tnhe]Z_^W]]YUTPPTUVcttu†}v{qklwwxvwnxz}ywsn`S_\]\Y_ZWSQSTUT`qttuuwmnsvvywuwsnn]a`a]WU\TSTSUTTUdsttrxvnuux{~{x}edelh]\YUUTSTTVSY]`{~xywtwvzv~m~{nmpoe]^^UUTRPUSNT]|{wxw{uuy{}\]tv{{g\\VUXTSOQPVXXOZ[v|yɴ{|v||~\]ewu}}|x|VVZYc[TNTX]OPPVWdt}zz~~}{]]cvw~y~z~uu\Yoh]`ZQQMRQZXX[nyyz~z{y~~~^_a|{zzkzlqpj`c]\RX\[\ZU^vvwwy}|pl~~~^]h}wn~|kz{pfabbYXZ[\ZZYSSzxo~}gddet}}||}}~\eo}omkqyyefdbdY[[\ZZYRQvhoopsggdde}y{{}~~fggf{gghnxyqrvyhggfhghjojtgScvrzzr|xtfiqoliplrsuuqstwfkij{|lw`ggmnmkvx|qqffgimoonm_Ukqrmmvzsrrwznppsrqltftw{ybgmvsmp`gghpnuyrxnhffglqppkqlsrmnstu}sh{zysohhuxdjb``Vamjfbgngp~uqtkgffhjippnmtunpn~~vr_`^fxz~rubxyvpmcic_aan_ejliussmqgffekohikllmeolkjpsvs__d`afs~~ruughlolc\Tbbpeiwujfklqp|mjgiuqpqllwcf]`Zigqr`mm_abbwtunqonoqqYWVSgjh|kkfpxqoqjmlkkurm||nza]\XZfjrtwynk^^dce}|pzyrqptr~yV_sefikm|rmjhljtyyu}|{kjhiifefgyy|qplsbfdftszqtrsptm}xudjheddffq{|~qmuhimvrvoo}trqsgbnx||{suvtuzdhnwurtqolkjxddcfkeeftwrpmhgrvxmknnlmjjrgaz|||tyv{ferootsqmijjegdcefeivnqpmmfdihrtknnklmgumadsrz|txcgbrwoqqrslkjophhgdf|ymkuruoohgdedhq}}nsumjq~s}~~cds~vwu{szmissmjhieekspqqvgjagemqspusv}z|i~sth|q|ssoltsslihgexw|pxqyvgkpposunvsw|}y|y~ihdjtugt|zyomtsqjijijetstqovvy~uqnlmnnonprtuz~thhgdkde{odouqiieh}ssmjjmkkunnmlmnllnhnrswwidccekivzrllnv`ikik~~ssmklrmrrqkkhjlkhrss~ngfhddcdcdhwt{|us{uomhrbopjjnsvyz|rxhmupnokgkjlliqw|zqjxceephjmv{uuq|plojngiljjnzyrgqtwqrmmpggiikl~|utmmqkkcckowsvtvuusstzwnrbjnkrksw]\gqtq{polmmko}t|z{p~zkbbeooj|lwvzyz}x{|_bbqrnpyjqfb\ffp~mpqkllhppv{gvs|ys{~sz_Yfmmddkllvhy||y{|plsrqrle{fbb\hlpnplpdwkk}ekehkswyyso{ruu[VVwt``ekmoj[_yyz{y}rprklhafa[cbahaok~owxrpjvvjhrtrssvwZx|inmnh`Zwyxq{nvs~oaha`][[a_e`cffv~{hjkw}x~lrroow|p}}\|fehoohmhifnz||vnpzu|[bji]\\^`edUbhoqgaavp{xz~somxpjh~u|okwhhmmlyfo}~}mmpskj\hnrnhx}zhcrijpwsYXWY[nj}vpzlfxjjhhimmh|s|~xqothhaqrsow~rrjYXWWX\nuhllffhljvjjvghhhhxwzw~klZcpron|}~anpjXYWWX\{{~hofggdf|ihhwgnohhlhplww||uvka\qrvw~wzzvpnqn~]iXXW\oq|jefdfl|zjggedckihihk{swwtyoutokymzxzsnppjnnx^[XXYsxmllvjgkjgv}}xeecenkmhnnuwwopmmoptblpkspqlmnnk\_Xhsimjiih{j~ywecvxenoszyqwvxr}qnkjhm``kjlroqrmlnsqloxswqpjiihmyzv}{|lhfjqnn~wpsstvzwphg}s]]^jklqmjlfmnqppqxxpjkhhixsvxx|{}uffuosxuxwwzyvqgh]]gjjnid_dfmhnpgmuwxpokiihhyxzt|kfjklv~r~yxvw~wpjjgzgfdkijgc__ghiehjktqwpmliihgpyyvwxqslnfhizwq{sjklgvkkbgjggcjbfcckgsrnmmiihggitvtuv}mlffvtsope~ghhgg|sqigighgjeaVVXadpnmpnliigghonluotskhhffkjwm]_}gheefg{vjyt|zhjjsl_WVVjtmrrokkgfhgloebelnjghfioqtt{w|ugcefeglodrstmkulkv{s\VWhqqfqliihkmtnqcprxuzwpposrrpvuyyxyysddeedeehb[a}ynmo}ivwXZXqjjoqiohllpki[`c_gxyvwpo~sspptrxxwsxuehfdbdd\[[b\owsm{m^`k\qqrmiiomlfb]\]_bfggvuosppqwltvkujde`bddZZ[[anp}vui`\\`qq|wkogblbdabhljnooptsppqpqljl\feddedd\Y[~~xivsuutt\\umhtrorrmxpckklm~{sptypusrnpbk\cdbegdcY[YYZ^\dcolwwvvkc^htokoptsrwyl~utmjmllkka_h`bcbYY[Y[Z_almnxywjqokfiottuswn|aapwuvgijmmkmm_ljaagdXYY[a[]a^jmrivvrnnosijstyxfgwief{ϑwrmjhjlmjmlibnmbai\UYZ\[XUVRt}xvwwyop}vvكjhjgg{{lqhohlmmlmhdefgmhk`eQZY[MVVRZrvVs~v|tv}}opk]`mllhlhtzay{`xqlikmlle`fgmpVTS[YYKJVUKNIPWZXj{|}nz|om\\]bs~yjf||k{f}|quklkkmgg_hopqpUeeb\_MMUQTJHSQRYhhz~syxr_]a]]cfweffjhjsxwpvtmllojvropohhddNNMTUHINSQRfcsYZxocaaeaf^]]mmpggf{}w]]co{vrrqpnhghaWYXKHNPPRT]emoXkhfeedapxzjfggz}~y|x[^`^lrt||tpnry|ufYZWPOOMOSPRRMLDMQ_gfaeegfpwn|xrgwmklizxi_[b_jvwwx}gq{{id^[TQVUMTTPMLHHLMLVfeefgw{}lh}nc]_jikijakywvwpr{nlhcVJVTVSQXSOKIKLLJTcffggh{gx|yq_afhhljrzyzzwxlulicdTYXZVPOULKKLZffgkutzqq}}f`vhhknq{v}~|vqzmur]\]d`VVSNLLKLLKKLLNLRUXpr{~y{~hykigjimsjr{}xxyxdsqywedff`WWXLLKLKKJKGNKGLUqoxtz{~rqhjitmhhlort}{zyvvRRzwyikpobSTRLLNLLGHHNPOFRPhmq}}rjɥnojpovyy~~ztuQQY{zmkqqruompLLONXQMFKOTFGGKLXuw~qvqqfpmmtrruyz{{sqQQVy{yklrmrnwqhhQOb\SUQIIDIHPNNPbkrkkolm~luursvv{{ttRUnpoovuvwwr\~m_dc^VYSRIOQPQPKTihiikpun~a]~}wqssrvzvsswQPYqjw|_nl\mncZWXYONPPQPPOIImj{bsqtsormWUUVgtxpopmoovt|NW`ow|}`^\cllZ\[Y[OPPQPPOIIl\bbcssuqcWWUUV~pyvkmlnqzrv[\p[\\blmffjm[XYYZZ\_c`j^JZkgopgr|ol^`hfc`gcijllhkl}wo^cabrsdnU[\\buca_jlpedXXY\accbaUL`fgbbkpxvvwjiinqeggjiidl^mosrZ_enkehU\\^ecimflb[XXY^dd`eahgbcghir}wj^rvqxpjxg``nq]bZYXOZfc[W\c[ervtieh_ZXXWZ^]ddbcijcdcssj{}ziVVT\oqwvjmZqsoid[a[WYZZgUZ_`^iggayyeZYYXW]a\^_bbZdb`_ehk|jVUV[VW]iuuxkmm_`cgd\UMZ[eZ^li^Z_~`edxpa]Z\gdcdaamY[SUO^\ffy{~|VcdVWXXnwyklfhgegiiQPOL]_]~p__Zdlecze^a_]]hebsseqWSRMP[_fixyvmnc`TTZZ[vtshqpjigwljvzqOXhYZ]t_avyypfa^\_]gmmktsrba__\[\]oorffaiX[Z\{|vkjqgjijhldupm\b]ZYYZZeop{reah\\`iekeeyysjihj^YcnrsqijkjjoZ^|dlkhjhfba`oZZ]v_YYZhkf|zyd`[Zeilcbee!cda`i]Yqrsvsjokyo[zZwgdcdihgc^__Z[ZY\vZY]jbedwaaYW\[efbeebbc^mdX[jiqsjnzzV[Vfkdefgia`_dd]\\Z]yqma_ificc\ZWXW\cssxrsei}kdahuvjyttuxUVfrjkiognb]fga^]][[}}w_gdeej[^TZX_csqecjil}}spr_w{uu{egZpdpggc`hggfa]]\Ztlkpclemj[_cbrafgblinrsorot}u^]X^{sfhYhpnmcahge]]^Zzzhhiebjilrhda`aacbfijlyyptj|]]ZX_WX~vwuocXcie]]Z\shhb]^]`^^jbba_`a``b]dhimvw}lv~]XWWYX]\utkungaackT]_]^qtqhha^_ufaghf`_\_a`]hiitvwztcvw\[\XXWXWX[jjppkiokdb]hVcdtt]`dhjmmoetk\ajfcd`\__`a^gzvvytzlsqof_lWZZe\^bkpkjjgrf`e`d[]{_^^_cbnmeZdgjegbbf\\^^`awzxtqjibbe``XX`dlikjlkkiijpndhX^sbtuag`fjPOZtdhfpfdacc`etv|z{jrypqdssn`VWZdd_qbllpn|qtorsUXWffbdo_vdXUOYXcq`df`bb^felr^mi~{{qunthpswhoSN[bbYY`bal^||pssprsd`gfehaZnYUTOZ_dbeaeYmaas\b\_b~zilonhdpfiiOKKliUUZ`be_RVppqrosgeutgaa^SYSNUTS[Ud`semnhf`lma^zxzthighhuujk{Nzm{q^dbd^WQnpohrdlgssdW^VTOMMSQWSW[\kvtq^`bmtyy{nsaggcclperrQq[[^dd^c^`]eqsrldeojqQW_^PONPSXXGW]dfx^WXXmgrpqtiecme_]s{sjqdal^^cxccq]fzttscbeh``R]bgb[lpmZXf^_dtliPONPRebtvlfpb|[vmw``^^c_wtj{xstnfdj^^Wfghdlrrtgyyg`OONNOSevl^bb\\^auvz`k_`k]^^u__pnqmttyabPYfgdcqqrUde`OONNOSrsv^f\]][\sz_^^m]de^^c_fdnnrqjkbXRggklslvookfcgdwsT_OONSfhsxy`[\Z\brpyy`]][ZZa_^__brjnnkpdkjfavyw{nyconoidff`cc|mUROOPjodbbm`]aa^mwssn[[Y[dac^de{knnzuefbcezzuejWbfaifgacc`SUO^i`c``__qauxvwxom[YlynZdehnmhnmmgqgc_`{{^cVV``ahdggbadhdabmimgf``_^dpqmtvqsb^\`fywccskeghijv}oke[[siSRS_aafb_a[cbdccdnnmf`a^^_ovjmoonsqsk\\kywzwegvwkhll~mlicY]SR\``c_YTY[b]`cZ`jmnfea__^_xyxpoq}jsua\``bwwk{rfqlkjkqyib\\Yp\\Y`__\XTT\\]W[\]hgmecb``^^gppmnngibc\^^oxywwlfrsvv|rne]]^Zj_`W\_[[X_VXVU][ggcc`^`kmklmsba\\kjiywceY}yx{qYZZpge]\][\[]YUJJLTXeccfcc``^^`fecleji`]]\\a`ulaQS{vp~qZZXY[Zoj_mgpuwwm\^^gaTJJ]jchhebb^]__cf[X[bc_]^\^cehhnkzspvtthZVYYZ\`cYfwgg`^h`^jphPIK^gg[gb``_bekegYghnjoledcgffdiimnmlmlgWZ[[\]\]XSWqm``ap\julLNLg__eg^e_cbgb`RWYU\lnjkdcsggddhflmlgli\`]\Z\\SSYRcke`ro}{eTXdRgghc^^edc]XTRSUV[\\jticsxgddel`hk`ita\\VZ\\QRRSXu`bpu}mkaXTTX}}ffqmae]XaVXVW\`^bccdhgddfefb_aQ]\\]\\SPSsurk[ig}lkkjTTm|~~b^jhehfaldW__`arogdhnciggdfXaQXZZ\^\ZQSQQTSXW`_lzmllc[V^id`deiggkwutl`rixvicaccaWT^WYZXRQTQRRTU^^at{|nombivfwa[^djhigkbptsUUdkjk^``ccbccTbaXX^ZPQQSYRSUR]af^{mmieffizw^_||hiymlY\k]XYoυkgb`_`ccacc`YddYX^TMQRTSOJKHhqnmnnpgftlk~yyzzx_\_[[oowaf^e_cc_Z[]^e`bX\IRPRCLLHOhmOjtmrjlssf~faRVbawwy`\`~\hnUmoUmfc`bcddc\[X^_ehNLKRPPCBLLBEAIPSQaqrsdqrfcRRWhsn_Zqq`pZqwvqglbcbbd^^W_ghigM\]YSWDEMILB@LJJQ__ptipojVSWSSRY[lZ[[_]_g|xt|nmelkdccdgcwmjhge_^\\FFDKM@BGLJJ][jQQnfZXW[W\SScbf\\Zp|}|vtmTTZfrn~kjhgd`_`YOPPC@FIIHJLU]dgNc_\[[YWxfno`\\n|~ssoroRUWUcjmttmiehosm_QROGGFEHJIJJFE=GKW]\W[[]\eldqmg]lb`a~|}_po_VRYVaoppqt]gqr`\VRKHMLEKKHFEABFGFO\\[[\\mprby]rbYSUa`b`aXbxqomnfhqyec_[LAMIKJHMJHEDEFFEMZ\\]]p]n|qo}{|gVW]__caiqpqrnoak{x}c`Z[ILMNKGFKFFGFS\\ajioggss]Wl__behrmttrmfn}dheONPVTKLIFGHGHGFGFFHFLMOegpsnqtv_oa`^a`ejairsnopnZhz~dkiWWYYRLMMFHGHHGFFEAHEAEMfdmioqtuih_`_txle_`cgilsrrollKJvzy{kik]_dcTKLMIIHIIHHABBIJH@JF]bgtthayxfgaggnqqttpjkJJQ{~ll`^eefjdcfIILLSLI@FJOAACEOkmuglhh\xxheeljjmqqrqigJJNksltj^`fafakf_bML\WNNKCC?DCKGGZwbibbfdduxdnmjknnsrjjKMbsttdbcjikllhTufY]\WOSNMDJMMLKEM`^_`bime~uYUvupilkjnqmjjmJIQtuvxrf^|}kqWedTfg\SPQSIJLLMKKJCBeas\milkgieOMMN_mphhfggljrGNWstuytcjqqxXVU\eeRTSRTKLLMKKICCdU\\mlnk[OOMMNuhqnceegipimqrux}ghjjkkyhy}ywuvw{}sshjjk||sswxry}usdgenjlot}y~~slnqpxrlfdfmmn~t|~~}hkknoprllkenpv~~tj}~~~glpkkjojyozyz܀ul~~momhieggnyzx}~~~trsmehfguu~|~{sswgeccdg|~|yyqypkdacgw~xss{|rzsnd~trsqomnwtsstmrtv~~r}sstrwvz|uu{|srsoossqlqsutsxtut{{souoqporuvw}u{sttsrrmpnlstu}x~}ttusnnpkjpqklklwvuqqxvuuvsrmkklnnmgp{xtwsrkkjilu|rrvvuqvww|yrnooylmsus}v|}vx}ww}s~o}~z}|z{|wxv||vuly}~~xz}|{~xwwx~wwtwx~ztrwv{vuyww}|z|rnn{~{vtux}~xommntzz|}zzxxv}onmmy|vyxxw~ommntv~{wvxzppsnrvvy{u}~~yowxvkrwxww|zykxwxwlputuuvzqptqqxxyxvtuszszwv|wxmvxw~rtxywqjjoz}usytkiij{댍vynkiijn}{t|ļu}kkmljz|u{ģrrqrjy~~vvxwxqposqqsxx}wvxx|xwwt}ppihoqsqstxx|}x{{|~xxpskjqxkz~rpvyx}xvwz}}}{iphksuum|ouvv{wzxz|uumrx|q{~uvyyxwssuutpz}s~zvxuxwrrupuwxu{yvvtwwyxwtts~zzy{zwvvutuut~x}yy~qrx{{xyvxy}prp{|{y~qrr薕~~vr閐otsvt痘|tostxx떘ywtt畖pro僂xovv{rprrntzzllojro{z|okkllrq{~yuuokllny{~~xyxu~llkrsz{~~vt||tkrlymtzy{vumkksyz{pytlkktzxqovmnlkmrpxpp~~}{|}r}okrqoontfgjmsttpZ[]]^^l[lqwwz{{nljklptpff[]]^povvwwtwjilmhnqifXZXb]_bfupmzzttujbehfmg`YWY``aboqftotzzwutts^aaeefg``_Yaciqopf^xptzttut]bfaa_d_mbmmsqqrf_wttuvttcfc^_Z\\cmmlqrqrqw~~uttwvihicZ\[\ijrwprstwwy}mttuyyiil\ZXX[psyyruutwzmvkttskgnfaYVX\lrx{twtuxzxvrssjcemohpidwYsxzytuuxuufcdb`^dmxvytv{z{zsstuvu~uddce]hjlwyytrruv~doccdamlpr~yukkpq}gff``ccb\gjjin|ijipqh~aeaa_^ikllrkqiijtffud^`^[jjrlrsijjf``c]]bd\][\mkkfelgjjkef`\\^a`_~Xeuxn|~iwqijed\\[\_jtji{jihypafhvoflmc_``i]`ijiuqrqiszophpqmfflyydvsbyuwtrotyxuujjpkegekkyttgf`oyvwwln}n|ttllpoggfgntthhgkozzwuiehhpuvptskttedjhhnvvooy|{wxe``nvr~toutrmfdgiowwvvxvpg__`fmssloqmumjjgpqqzvwxyyga__m{yvpuutfkkjiwpwb__`glsyxusutuorqjhjl|{r{zccfahkloxpktrx{zvrzzqouys~|lcklj`gmnnmqvy|{zxvypkiprZtwkjlkaejjlkkoy||{x}``b_`x}hlljikiqioz||~|fgnkkakmlu}~~|~|zu~a{cxghke^^cps~pvpnodbhd^]]^ovrtrtyeg`_]]^_c~pngotsx~fp__aa^||~~}~tnphndegf_n{swwskkmkk}{eddgffhnm|smlnnmqmkkgrvcd]]zdehfhivnnrsnqq}slxleh_^fmaptgfloosynlmpssusxxq^d]`hkkcrdkl|lzqmwvupny}pvrkjbglvpfxq~||tzkloonmiikkhemsyqyh~z~tplnknmhhkdijkyhvuuqollkmmiljjggh|wyt|qpoqqmllkojoklrzhh|xowqropmyootvwtvxf~ihrtrp||{zpq}xxuziix}qppxyljz鎇{|xxschyimj{玏s}}ngcgin|nv{z鐏ysxtkrkhi}yxzzwttspcebzyxxwxxw~uussrjbjjutxnecwxezduttssvbglx{uwxsm_^^aba]dtssrqbznlnxww|c^^dcmststtst|kggstb^^_kmsstuurjkjgpr~^^]dellssxvwwrvhfnnf^d^k`fmtxvuu|kmh|g_^^elmwodss}~~kztg_^^gmykdbg`b_^afcukcdpqpopqgyuqc_feccal^_aejkkgQRTTUUbPaellpqpfcbcdgkg]]RTTUedkklklhlbbdf`fh`]OQOXTVY\jeboohhb[^a^e^WPNPVWWXfg\jdhoolihhgWZZ]]^`WVUOXY_gfg\RmdhohhghhV[^ZYX\WbXcbcihh[Tliihijhh\^[VWPSSYbcbfgfhgmtsjiika`a[RTQS`_gkdfhiklmrbiimaadTQPNOPehmnfiihkobk`ihh`tu^f]YQMPQ`fkohkhilolkghh_YZbd_g_[mOhmnmuuhiilxyii[XYWVSZcnlnikvonongghijiryzxiZYY[S]_alwns{umuhffijryy|YdYYWaaegus{xmui__deqYX~YUUYYWQ[^_^]cpuuxzw]^]dd[|~~rU[UVUS]_``f_tw{e]]^hY~XuiXRUSP]^^f`fvu}|g]^^ZSSWPPtUWPQOQa__ZZ`x\^^_ZYSPPOQTTSqLWsyimcqs^lf^^ZXPPOR\f[Zow^^]meW\]kd\aaVSTT^QS[][gbfsf^goee]ffb\[\bzoopYmgVlghffduinnjj``fa[\[aapkj]\Uclhhacrdriiwaaee\\]ekk^^]`cnmif^[^^fjlfii`jj[Z_]]dlmedoqokj[WWckgtjejjgb\Z\_ennmllnkd[VUVW]bhhadfbjb``]eggqlmnoox[XVUVVcpnlejji\a``_m}fumw|YVUW^binnkijijehg_]_brqzhqpZY]X_cbgpgbjhnpokgopgekoitrbYbbX_effehloqqpnkofa_ghPjm``cbY]bbdcceoqqmrVVXUVns\ccba`baiafuvptrqsur\~~ZdabXbednvxtuuqsqojsWqYn~Z[a\UUZhkxxwwtxxfkedeZX|{ZYUTTVgyxxlgjhio[y}ZUVTUUVZvvxvxugd]ejixnty[eVVXXVstvvtwujdf^dxZ[^]Ufrknoowjaacaaszr|[[Z]]_eetkcbddcgcaa]zhmZ[TS}p[\_]``meehidggsjbnc[^VU\dXgl^]dffjodbcfiikinngT[TV^aaZi[betdp}||gcmlkfdosflhaaY^cmf\o||zzgtrrjpabeedc__aa^\cipgo^tpvtjfbdadc^^aZ__ap^l|kkgebb`cb_a``]]rmojrffegfcbba``e`eaahp]^rwuunemggddbmrcdhmmjkwmyy\s}{u^]fhgest|zoorqggs~x|nn|jpv^^l{}oxjffgoou}~b~_n}|zqstooiZ_|}o_~b`yp|{}yqkutew^Z]_drdlpwp~ppjokbia^_}t{onpp|~hkkjhZ\Ypuonnmmk~vqkkjiiaY`a{vkjme\Z}lk[o[lkkmY^coqwlnnicUUXT[jjkjiiXpdbevovnmrYTTU[Zdijjkksa]^iy|jXTTVbdiiklmi`a`]fhttsvTT[bciiolmmhl^]dd}}ww}\TZTaU\cjnmllrzwaxc^|q]TSS[acnfZjit|uuapj\TSS[cob[Y_v|xv}x{|uUVTSUZWjbZZghwgegh]yxvuunjeXSZYWWVғxy׿ȻɝͦȒ}z|x}ϡϼ}}w|kuzx~ԻǪ÷}xnz~zХŭu~o}x~~ɵˬ{vn{snowwuhuksywpx׸ɸxkkv{ֺɷwxzky{ҷҮȪzyy|x٦̵|xyrx}ɦ֍«{|xzy¬ݓȺrzvw|Ġſ³rrwzuȣīwsyuxv~{~جƽsrrzuvѨŶҾqt{{uѮƺqru{|~ҫǾy|{||}ڦº|}}ѯ}~}}ӡĽ}~~}}ً́}~ּآյ׿ĨŻ{ΩꫨǾ考ۀ6Ҩо}}ƿϡ}~˺¿ۺܲijŷ}ɿԵοЗțճŏ׸ٰ~ִүüƬ÷dzǢŬѿƜx~ƺ͝Źűw}}͹пġœ}ȿҹ}}ȹôԡ¿׌~ɻĴȯֱÿ׎ڛɲ٭ړʰїƽğڑɴϼӟí̾ժԏѳոɱ¥׮ƳývȮ˧¶Ƚ™w|y쫨ۀ±v׳ײɲȻz}zxtǾɱvu}Уvmuؼտơ~v~xϣuqۺx}ȢuwڜФzܱÒţŸۮŸź¼ŬżӻƟ³ޱ«||{ˀƿ{{~wy~~z{{z{}ԷϦư|æЧ{xzzvzگϧβҢ}{y{޽¸ʱw߸ӵ攑w׽߀־ زƥȖ²½x¹ƯþĿuvЛƛůywuyʱҋovov}{~ǯ¾uqrnpvr||¾ȸϒuvptbkolq{|}īؾuxpfpssmy|~nvxftmsqqyz»tofsjeellutvv񤣬Ȥnambjomemuu~Ǩ||qcclptužƪ}z|pqrcpq|}|Ÿ~{~~xzùsrrsn|y||ȗ}}~}~x|ǽvqqkovv}up̹{{~~{ƾuvqrq||}򆏖Ȳv~~݈˷ksoprwu|u{ǸĻkkprvltvvʸwؖpkqmolsprǜ~kkrvkmz®jlsrmwjkmqrt›Ųprqrss~ɼ˕|ɲ~rss}ʹyxͽ}stsswÐyosttssɱ{on~οwsuv{tz|ƬȒuwvpȽƥwtvw}wuuzȯxŻwuutz}{{ƹſqttv}}ʿ狜Źtsttvx˧˜tqrtxyڣsrstt˫̢tvtmq|sĦuwϳoƣŵuƧɟrzmpƤŸ~ʱ͵wwv˽zǵͼzywyznxr~˼w|}|õmqq}vx{¼}̲ysqszǸqqtvwܶÐȁst~z|ΒʳŠȃ}ɋɝˈ􌠼ηɯˆÏƽŚw}tŅ|Ũǹ²tpp||~}ǟvf|z}˹̹humiy윘}||ˀ˳wiqrpȥɤ˹kwomkg~{uǺѴǻdzgf~oi`gtyɮʲ}mgoisid}|}Я}{iqnۇw{giϐ~mqrХϡµ|Ըs~¬sͣnop}qsxԉηooslnop|ʰϴloqpoprŨtqÙnmookn̟}}xŗptptnpttwϭɴlvwxŮywv|uw}ĩlv}wĩЀ̵yȦz{}ɾθ}ɹt~}kz˶ɽ͸~yy¸tyrhiđɽ{z̺~kihylĿʁfmfmtzqtz~|xyѲ~k{hiehmirr|~{llfjYbfdhqst{}{}}lnf}\gjjdpsuwzx~豈|{~x~dmn\kdjhhppx}~|wx~jd\i`[\cckjllz񙗡{yy{ywz}}t}cVcX`fc\ckktvwxxxqz}~zsnyfYYXcbgkk~~uusorxuwvttr}srkmeegYfgsxssxtsspsrsjkgfgfhdsprs}qqsqrukmjff_dlmtlgtܻppsrrvo{ijegfsstsz𺻻jsrr{|wy_hcehmkslpѻsstt~|`_ehlbilmwکly|e`fbdbifgx͸|{r|z`__gk`bnwxy}齼|~}򕢰_aggblvvz|ʼ{vw}^_bghiwvwx{{}ݳzwfhgghhqxw{μr|zrpsyriihhiiqxx|ιonxwqprrzijhiilxxyv|ncyusvvijjiiwxzyѷpcbr~zstrmjjlpjnoyv񼶜ŷkihy{awzmiklqkiim~{sjpy|njjhoonn}{{z{zufhhiooy{{ꋇvutthhj{vy{zttrheegjl~Ǹ~q~||z{sx}}wxxhefgfķvv||}wwyxhigwĸZaid{yz{~ijuu~s\ky{towi~yy~~|̺ubh]`|rzwppsy{{}viihq|qwqtkwz{x~~lkhlm¼~{yqts|ajbnoozhnoo}¿~}{ruv`aanegj}sp~|p{}|}~kcabopiuuxv֭{|}}{aadegq跶uswy{զ{v|{|}tbdnjlus{z|{x{{|vv}n{y}uustzwwy|zyxy~wz~zzypuxyy~z}gzphxyzyl}|{{gce|}zyzllnm|xx~x|i[{{}}yljm~zx~x~{Zia^{}}omll~xo|mi[~deds||}}|op~~v_vjb_]Yst|qny}}|}krrq}xwv[Zruc\QYgtk{~v÷vqc\c^h[Uqorwqyz|ļrp]fbzjnwzXZ|vxw¹ľyq]wxff¼|z}~{rwwĿ~~nxtqÅļĨd}q~|{}}gt_bcwou~e|gl{ûsbbf^`vwv{zccqƼ¿^adcbbeuhs~}yxw{h`^bb]_p{{y|s~|ywto|afcgacddg~}|~ytdnop}}¿꜆ljimegm|y|y~dnso~黸~iz|~~}{~~opus{liztta~ot|}}{|mihºhoh^_~}}wvzsji½ºvra_]naǽwhdlý|xzxĻȡôwvghwxxp{˃ۑɖvumstox{wuʦƢɈsvsuzХł|{ɍ{󚭜||}ʫɿŸ˵̧˽ӷ;՗ˬʼοբɾΜήܩ׺̿דպʪԣǬԽƦάѶ·ۗάȯȱˢոͮνӰȶȿٶʖԱ˺˙ȻѾһײŽ𗨫Φϥϯͽƛ~Ϊ˺˯Ξùʯ̳ʾ˭ƺɼӭ¼ЬƻŮֲάҰȥƻӶȚԺ̾۶ɿʾ⽐֜ѹɲ˰ʨ϶×ԩдʭƟϻҰžŶ̀$þǾȴʿƾ͠ ɯϳά˾ίĩñƭǯĹļʿЯw|Ĭ¯ͮŻſɻ~}z«ԮʰԢżǼƻȏ||z{Ś؛ȱĻǽ~z~ˬȲ٠̱ƽŸ{z~ϱԟ̷ٟίȻº|y{|ЀϲΪ»ϰ©z{ˠо·ɽʲ̵зٷȹóȵԾԤȮϫдӻУŷмķĵϺͭƿĶŹϺƹд̸ջй˾ѵû͹мӑ̯Ϻ{~ҾֿҤҐǸǶ{{рҿ®լƹ¡{zzѼθԪȲȾ{zzծՑƹzz綠˹ɺűʒʼƀ˟Ε׹ƽպˮ׺ңՄvrqutΟɹɗůwvmjjȜٳítnhhe~еnhhefgώlgheedimѷýꦧkjihecmqֻܺjjide|½֮nkjjmmihvƽǻnmmnnmhƻ;Ƹįkklmnmoq}ϵɮƼžşo`\dpmnmtwuztŷ̽po`almmep}{u}y{yurrzόnmdjjcmo{k~}j}x}trrjmiko~~{tmmr|wp⬥|~}}xnn¼}v~zzx¾~~xw}}}ƩzyzÈ|z{ýy{{}Ó~zx{ƾxzÛyxxǪýzvx}Æ}xx}Ū𹻘ֱx|z˶ē¿𸛕}­|y̞¿ÿy~~ˈýxyyũĿŸy{~zɦ~»y«ǣǽ¿ľq¿Ρ¾ıqn꽬ľzz{ź}ûpÜ|yƲz|³ ~}æĪżۦyƺĘ}zƌú}z{ÙĽ¦ÿ #ȴDZ¿£joǽpqnuĞÌppmuoȋƿûrnqttuyȸِ¿nsqumqďَþóomnqn|ގɲķ~~lmDz½խ¾ȷȿø|ŲîĔƟ~ķɲ«¿×ʿĻÿǴ~̒·ô򡎎x}āĿŽɿ˹ww||}u½ūtt||Ǽxyýusstý˳}}w˿ȼusosîǰÕﳵoouðŲěootuüíÙzzź|xoou먪ŰşÀ{wúzpoovĶv}ꬿɺӷüvwxxzzƿ|wx}Ź»ù{wwxyyz~xy}ƪévxyy|y}~ƪ~yyxyy}hccgg{uz𮙒zxxih_]]~wyzy𮣙yyx䄓fa[[ZWor}}}yyxxzza[[WXYv~wxx{~r_\[WWVZ]xv~|b`^\WT_cƪx۪z}``_\VWm}web``ba\Zh~xzcca[yv~yz|xaabbcbcfqƿ}bUPYuc`bahktuusjnfz|sr~baTT{_`aXdpsp|vkqmon}|fdd~lɼ}a`X^^Vacn`rur_zrymq}fdd~q^a^_c~sqqvsru}z{usn}e__dn󲰫vrqkd{✖yzzvtowtqrq~||i``troqkq}{~|v~x|mnl{|{|󬘐rpqmlq䰬vw}~wyvstzxvs{}||rpvno}yuvq~zuutrq~r{~|{||xnpprĵpywy{tpnq~~{}}uzwnpĵzu~zuwonnvxwrnnrֵuvxwrvnnsuvx𧩋xzx굡xznqp~pt~~sxಝzro~spov豰}}~޴osrqwvpuǯzv}lxmmvy®yxyvtu}|tmnqkznvөy~}ws{~ultt硠zywdutt|ʭ{u~xrsd`v|}諜|rtst~zrllz|{}||x|m۶|rczzvli}{~sr}}{嵰vuy|jl|{sy}{~onzyprxq{ۖlrrpmjvq{o|plzwkq|y~}{xxxxy{x#vu~z|vuurpqxz}||ttsqsu|\autsrrwbc`hu~subb`ga~}z}v{x|d`cffglt|{y||Àaedh_c}uy||~a_`dan|}v}{鹢||{~Ϣqqp_`}||w||~}~³u~vx||~ímxzzǏoyxxzw􄅉𶳳p|wwʄnyywẁ~~}hlxwyxu}}hgllx|rhtueeplkzr}|ywlm~qedderpxy}±trw~qkxsedbdyy|xtx~bbgy}bbghܯooojbbh뛜}﮵uplֲmdccjx{gwowzȦrijllmnsnijprvt}ojjllmnvtuqjkoz{{xyvtv}}wjllmpmqtmwwwr|{yut|qwty}}}ysmllrkjnzy[XX`aw~tlglrٞ}}nllkjjitzz}\[VWW|{pnikkv|ן}{|mmlljjit{pZq[UUQgy}~dnuozzy|qmmwkjlk{|w[UUQSUo}}ngihmzy~|r~{yds{yYUURRQVVhgu~|֓z|rnyzo~{XXWSQ]`kwz}up{ykzuq[[XRUd~̟p{s}wo{ixZY[[__YVaspqqpz|ipa_`^^\Vnkpvujkmo^^__^]]\fxwptyԳ˫ʿpwitjˀ׹˩Ȭ{xqqsioúУʢý|yrhoala˔ɍdzxwwkpf_^cĻҡơǷ͢Νwvt][]^_eƾɢIJ–ϡuu~yxvg]Z]`_´ʰϸīøեv~|wu[]^^ro̢ǀƾϳ½Ϡ~~tb\edkwgľy²̟ż£~z|bffmg[qvokmfgirnvxe`^`z̼ȸsthjnl[`bopoomggbddqmmdWUbblxŽɺȻ{{sonlgf\Z`rrlihged`lkiUUW\bdccǯ˿ɼ{|}vsolgb`Vfdklhkfc^__b^\VW\\bdgʚ~~̖zrr|rpmkXXiWtjiigf`^]_^WUX\\ddiӭƟ}}úpsuum\YXVWXlsfce`a`]\_X`\WddhkӼāĸýzzXZVUUh^|``ab\YZ[[_]hhzӸѥ||ۣħ{||xdVWUWxe``aacb]\][\aiszʲ̵{xzíuv|wmUTX^bYZ`bbca^\\^]_``ϱxŴwvŒWXVXYXYYZb\]a_Z`_]^][b}Ѿӯċxvx]WYXYYXYd_``a_^]^[hǡޤΤ}z~dYXZYYX`b_b`__]]_\azΤˆ들z~f]ZYYZ[]`dc``_]_\\vϢΩkh[ZYY[^^_b`__]]\`̖ͯέʳʩgi^ZYY^>_[[``__Z\[\fΟDz_b_aY]]b^^_aahb]b\[\^l͡Ȱis`bb`mqn__\c[^\]_iɰǺ~ba`fofaba\[Z[]__fƥĶʺ}|cjgfgf^b]cZ[[\\`nžѥĵȜ}|kjffeR^^ZZ[\\^e̿ҽȷǪȢȱ~tlgf_ZRSSWZ[[]abͿʺŴ𧈮yqu^VSRSST[[]efbлȻŪ|{zjfSWTRRSVWYbeddعųť¾¾|{ytqkUTRQNRSSVgebշɻ­Ÿ~{vw}SRNMQORWVcdԶð}{^MPPQOViddΖЙĸssv{ZNPMKKNajgԩĻupp}ozNOPLKLLfad¤~|{yphQLLKKLMXgѕúw}~w]LLKLLMKMOݦÖy|ˋ~mf]MMLKNLPXݠŸxx{sXQSRPPSNNڨ¯xnwrmXRSRTTSSRϡyxrtoUTTNPSȬ˘ŅYTTSTQQʾə󕉌ZTTSPRRDZݙÜƽYTTSRQR̯”~tUSTNMNеߧy\ZPLMMҹ׳{_\\MKMMȝĨzyxyp[SKKLӴ¼±|Ǐ~~i_[OPM­ȠĽ}~ɯdcb[OQ­ƿ򚆖ȩvdcc``WïȖ}}߾hdcaa_Լφ~|xj}d`_Ƚɽ}ùY\Tɼ~|ĸǥĦ{Y[UҴ˭ĮƺĻ´~hZUʱȷŷţpWW¸dzâſŦ\^ͶɴκƬ쒑ȇŢĢo^տΰ˳̦©ͩijĹcԾͫz}űěҷ̫wx}zz°о˳ìϜӻ¶˸zxu콳ϺţĢ|ž|fl_i_{uvuȩ{|qwnffh^dwv}Ôxµwsoh^eWaVxxrĽ}onnaf[TTXu~őzſ~~nlukSQRTTZᯫ²||}iktoom]RPRUU¼µ¿ƘujrttrnulQSSTgdŮ|{{}vutssuuyyjXR[Zawvl[z{mxz{~vwtstuxzprX\\c]Pg{me^aZ\^hfln\VTvWn|{|zuvyyuuxvij^`dbQVXegfda\\X[Yhee[NLZZal¿xxuzzy{wxqpifeb]\ROVjh`^]\\[Xdc`LKNSY[[vvwy}}xyypqrlieb]XVK]Zb`]`]ZWWVZUSLMSSY[^qnnttyu}xyoggqhfcaNMM_Lk``^]WVTVUNLOSS[\_qplm{³out}eikjbQNMLMNck^[\YYXTSWOWSO[\_bqqpqqtqtv{{wvtmnMPKKJ^SswXXSPQRSVT__pq~rkllqpprpvlvonuulYKLJLmu]YXXYWSSTRSX_ip¾}~zjhjytrpqntdflzx{vvylaJIMSWOPWXXYWTRRTTUXYw|xxhrzyrporgfpy||{|{|rKLJMNNOOPXRRVUPWUTUUTZs¿ßw{ttshfhq||}RLNMNNONNZUVUVVXWVUWT`þ딶sszmi}||݁rXONPNNONNUWUWVUVUUWW[pvt{}j||sqs[SONNPQSUZYVVUWWmžus`]PPONNQSTUWVWWUVWWYżľz\^TONNTSTTPPVWWVTVV_üUXTVORRWSTTVV]XUZUTVWaý^hUWWVcgdTUTZTVTUW_sspoWVU^f^WXWTSQSUVV]tqmlqwXb^^_^VYTZRRSVd~vtnlt|uab^^]KUVSRRTY}wxnpzztid_^XSKLMOQQRRSUVŻ}{xyxxxxnhlWPMKLLMLQQRY[Vʿ÷|}wqpoc_MQNLKJMNOWYXWȩ÷{}||xvppokidOMKKIJKJL[XWŧɲ~z}}}wqrpumotMLHHJIJNMXXĽå}y~䄮rorzwvrWGJJHN_YYǿ}zgfrkwyxwrSHJGEEW`\™iddpdxywxqHJIFEE[WZ̆qousxonyg`JFFEDEEN]İ~~ıjvsprwmvUGEDEDECEGĿ̖lpswvvtc]UEEDDFDHN̐~vvllvuvphOHJJGGJEEȘ}䶲tlckfvcOIJJKKJKIȾ|tmlgi{eLKKEFJľĺ~zxwPKKJKHH׻~zz}QKKJGIIˊÌr|{}PKKJIHIͱѕ{ssqp~jLJKDDE§̗}poy|yqTRHBDDªĤkqo~|~|XTUDBCDDZþ¶wiih{wqiTKBBǷxovlnpyusbXTFGCźאrmnpz~~z{wt]\[SFHḽrvzvwwvn\\XWO³pqnnmpl⽯z|z}`\\XXUŲ؞molsnbs\WU¾·tsn}wuQTMƴŰvuoqnpqQSM¤uqrstrʵr_RM°ûxsstugOP~~xtvx{urTVÿõ끀}vzwuseWŰ~{wy}yvt\Įlnvx}¨vvkkollz|{zë|unmht|}yxwxlxuq]cW`Uoizxrhg}~}ypkl~|gme^]_UZk|xhnr~vphvylhd`U\NWLmsywibtzmpsuuzddY]RKJOjzuovjuu}宂qrcbkaJHIJKP}ě}vnvllumt^_ieecVIGILKv srvsk_giihembHJJK]XyuHq|{lkkmstlkihhjjnpaPIRQV}suih`}Okl^pox~hvjktqlmjhjjlmffOSSZzRF[nbYRUNQR\{\acPJGhLv_vtpqlkmkuskknnjjli^_TV[YHLM[][YUQQMPN][[QCAPPQU^rpqipjguvponqkjed^[ZXSRHEL_\SSRQQPNZYWBADJPSRRghiksouomnnxcdfa^[YTOMBSQXUSVSPMNLPLJBDJJPSUڬvcaafgvrjgouvlmc[\e][YXFFVDbVVTNnKLLFBEJJSSW~dc_`mscwjizuypY^``YIFFDFG[cVQSOPOKKNGOJFSSWZdbcddjgik|}nliihacFHDCCWMknNOONNPKHIJJNLWWgdod^^_vfeegewh_jbbiiaQDEDFfmSONONOQOKKLIJOW`gook][]jzggefdgWX^mknjjmcYDCGMPGGNOOPOLKKMLMNOmr~|ij[cjvriebdeWXcloononqiEFDGHGHGGPIJNMIONLMMIPgq~||wgskqspffeYWZcqoortKFHGGHHFGQLMMNOPONLNIU~ꄦccjupz}oq]Znvnoou|xgOHFHGGHFFMOMPONOMMNLOefdkmuuspZrsooshehQKHGGHIKNSROONLNLKKa~ewx}}vxxhVSIHGGHILLNPOOMLKKNvs{ynRTLHGGLMJJOPONJKJKS~~wwuryzwy}xLNKNGKLRMMNPPVPMQLJKMW~rz|sxww|wzxUz`ORRQ]`\NNKQKMKLMT}u~r}}~~{~cc`_tRQPZ`WPQNKJHJKMMRw~}}}|xtuda]\ag~R^ZY[ZORKQIJJMY~}~qwnp{{fc]\clhZ^ZZYCLMIIJLQ~vvmqpwugh^`jjg^_[YQKBC@EIIJIKNO|{umkvsyhihhtpijb]aQGDA@@BIIKRSOouul~~{symhdccYUDHC@?ADEGNSQQokmloz}vlhgcc`^ZBA?@>ABADTRT}pnjmz|mp{mgbccgyacgCA?>A?AEETU}|z|mionrrtcadxrvlihdL>@@A>EWVVxy}|psm}sskWWc\ikjieI?@><==S[Wx}ptpwy|}YVUaVjkjjd@@=<=>IXu᜴tynosouĠ\hdach_gpJ>=<==><>@ypoqvxy_beihgoeUQJ>>==?=AI}~yv}rnpthi__hfufaZE@BB@@C>?ߵuy|moy~ࡏvg_U^YsqgVFABBDDCDD崫yq{vvl}f``Y[l~YCCDD@AD䱧xumutt{zv}z{vumllrGCDCDBCCzrqmst||x||zvttnyoryIDDCBDDzsrrz}|yttxfpoqtGDDCDurqrrq{t|xmtgugebsaDCE@@Atrrsrruu|pccsxnpnztfJJB?@@wrusyrqzsw`dbusuvns{pMKL?>?@~qyv}l^^]v~yqnyyje_KD>>|jbxkaceryu|rt|lhfXNLBC?|eaa||erosrqmmjhSRQLACzfj{pmpjjiaSRRQQH䮬wvvwuudeedceb|mnloUSRRPu~w{vdebixrbWgTQPvuuuvsffbv|pkiIMFxvy~sisxgbdacgILFvvsir~vu{cdefegVJFxwynyqqtrreefghy\HHonruzxonifhknheLMpru~xvv~}qpomgogihfZNov񠯐~}squ¡ogintkvhgRwx}}w|ackvhnq~}usz赶xii__daaÐjpmn}ox}woha`\i잓q|}o{̮̃xma^`kabaghgfououtrvvsvy{ܷ͊ſm`aafgnoftvvwvvsxxz}~Ƀ̢lvc_kjafflgruupwxvvxyzz}юʷ}tjejcdillfuvvwxvuux{|zz䄀ȮǗȾnmjedcmfnuwxwts|sy{{}{|z{}}¢qpidgdgjpryy|{~|{z|z|x{xόörjibbfjfjw{xsw}~|{|z~uttµmmjaqgkol|z}sxttw|}|{~tkhgidff||sts{txtxusst_seedczed_ltsstww}||}whlheecbdd[^afrrss}||kxu{uwskƟmhdd\a[[Z[orsstin~|qxizs~iefddZTU`[ZZ\rrss|ynn}|oqmqi}oilnllfa``bgYWZ^ZZcfrsst{vvyr~okknk}pxjhikei_`bbhie\TZZaclot|{uvvwv}jnkr}}znmijkijj[_ahhfh\d\\]ai|ux{{z|{nxkku~}}niklljd^fgfhhf\_\]_`dv|yz|yzppktu~}|edmoqoiebghhghi\_`dau{x||}m{{vv|moqqlof^mggffh`chd_\b`nqz{|x}}vvͩwqpkgkjjaY_YW_fqgid_c]qsw{{~}~uwysvvsofgjfcXYY[WW\ogZ^^\_hprr||}|uwuquruvvꡝ}ssqkff`\ZYY[Wf[\X[[]\_ozuuzw||ztsustopoutu~h|n_b_Z\\YYZZ[bYXXZ\_cnnsutuww|{ttptsqrnnoqpfdb]Z]\`]][\^cXXY_chonttuz{vsstsstnnospgdc_ZZ^]]\cZXXZ^`ooqrsnstutssttssqnoppqgccb]ZZ^^]]\\[\ZXXYXYY\`nnoplnsvwotuttsrrppqppkfbccb_^\^^\]_]\eccXXY[\]clkmpknmqwtxutussrrpqqflsgb``b_]_^^]]^c[^cZYYXY[]\^dfniihdqosu}xsstrsrrunie}ln`ab\_[X^^Z]]^efc_``[[Y[\\]]`^gbebpqq|~}wzxuytyyipwlb]]X[XW\[[]^deb`^^_^Z\]\\]^]ccqedeu~~~~zw~{tvvglf^_[YSUYZ\Z[[\deef^a]]\]_\\]a\Y]jhzg~~ztr{{pntujja^ZWVVX[ZZ[[`heed_ba]][`_Z\jzz~}r|upnudhÿÿuegYWVXUWUYZ[[bdeefh`d]]be^_X_[jjy|}zixrhnvdcf`Z]VXTTZ[\ba^deeh`_^ffe_Y[[^||z}|}w|sepalme`\SSYYW[[ZYbedbe_Zefgb[Z\iwv||z|}~}}|xem`aêsVSTWZ[[\][Y]\Y]]gdggfhgbchhqimp{|{~~}\a_iƢS^Y[]^blY_Z`XX^aacgh[ffgifhlppvz||}a`_\\i}b|yv``aYYZachcaceiehhgkqpv{{^^[\\{òwtk\Z\ZY]`a^`aa^_accigjvp{{ʴS[[\]\lij~qiZ\XZ]_``[`aa`[^bfaovyyxy}~~T[[Z[Z^vfZWXX\_`]`baa]Z_b^\onsloz{~~UZYZZ\kpv[TTSS]`]]a`_`[mpjfvjufqx|~}UXYZ`ilmpzZTTVWhdeabgbbcvyvpxihko{ĸSUXV^dilmźzjSTT^_gjpe}}wfgieopttQU\_^`jjioìYTTUhmpqhfeigkqrstzMUS[]\bjllùvUTTUUW|{rjeefhoqqprss~MQQS_]^emjƮzUUZTWacq~{ugmigjopprsszMKPUZ]bcjm˴yZX\XWunҲvsiidflopqrrssLMPOW\^fflÜbq\drtw{zsgiikmlpqssor|RPTOQV^emnqÔ}swu{~}uwhejmfopqrqpqtuwTSPTRVhgmknjrĨr{}Žó~wskllkjmqonrpsuzUTTSTTZhmiiqp¼||swĿrhgkkljnpwyvtms[XVTTVdhihggqh½v~||vxÿ̴|lkkhj^fpgxvmwwUTRTUUTR`hggfgnĿmlid_^fc{urztSRSSUROU`eff¥ǬǢsl]]a]cgxzv{uvSRSSQPOWZdedefڝǿd]]bggvurzzwuRSSRSQPOPXbdda]~\dfghhjgwy|xWSSQPPQW[_\]]pomߌ½ldfhfiibh{yzTTSUQOOPPQWZZ]]\\`fle`]x{}iemeedgpwzXWUXWTQPQPQQYZ\]\\]\][a][]Z]bbvtjbcbddhtw}yaXZ_ZQRQQPQWYY\\Y[[Z[]`n|}bjaa__afjuvw}u_]`SSQQPQQONM[\]Y[]][[Z[]]bo{tkai^^]^mtxy}s`c_YQQPLKLLKZ^[]^]\\[ZZX\]]bwſi__^]]^itvvune_^^TRRQPLLKJJV`\^][[ZYY[][^|gd_^]]_ivvuwuvw~yzmdWTWaWXW]^]\djejjhllilowq{vv|zcVWW\]cd\jllhnmoprxst|濽wbkYUa_W\\b\hkjfmnllmnoomprt~qvwxpi^Z_YY_bb\kklmnlkknopnmmvssx}tba_ZYXb\cklmmiiqinpprnomnorox|~rv}}}ed]Y[Y\_fguvooqqsvwsptomomntuuz|vvsikiu}}y}f^\WW[`\azznqnjmqrpoprmqqtu}~wwvfxee}}}~yvaa^Wf\`fetqtjnjjlpqornpwwxw}wxxvuue{}}xx_]\`Y_`tulkjqjmiswssksr|w}{wzu~fddeUtfYY\[\q_^Yemjjiijlluqoot{y|{{vzvtrkuu_a]YYZY]^VY\^iiqvpp`mtvuy|xvztjpjlgb~z~b^ZYSXTUUfiivxt^csuvyyvwvy{xuqgm_o{{w{zg}r_[\ZZRNOZUUWiipwvmccsuuvyvvregdf`{~{|zyywyd]`baa\XXYZ`TQUXUU[_ihhipjjxnhtuuvvebbebu~{~}zywiyr^\]_[^WXZZ`b^VOUUTZ\ceipojkkmluyvv|wvwvtaebjwz{~zzwxtgf]__^__TWZb`_bV]WVUUVZ`vpimppw~yxvw|ssfobblt}{~~wwgf^_``_[W_a`bb`VXUVXY\kpwnpryuz}{{w~}qqggbkl||zzxwu\[cdffa^\abbabcUXY\Ylrunrrys{{|~~drrlm~xwsdeffcg_Weaba`b[^b_YW[Yeiqqrnxzvv{{}ut|wllʊwumgfd`dcd\U[US[blbc^X\Uhimqqtvsvz{zt~}kmoill}z~uie_`c_^TUUWSSXkbUWWTW_giirvyrsy{zyrlnlgkhkll񌁌rihgb``ZWUUWSbWWTUUTVfplkpmrryupkjljjefekjk覡~vs^rcTYWRVWUUVV^TTUWZeeikjkmmrqkkgjjgiddegfv[YWRORTYWWXZ_TTW[_edjjkpqljjdeif}x]ZYUPPUVVWWXWW^UTTWfeghidijkkjjfdeffg~u^YXWRPOUUVWVWWUWUTTWdeffbdilmeklkjiggfefeec\YYXUTRUUVWZWV_^]TTUTUZcacfadcgmkolkkhhggfeffZ{di]YVWXUTUUTUWWY[UX]UTTUTU[\d__^Zgejltnhhjghgfkc]XrceXXYSURMUTQTTUWX]^[XXYUUTUUVUUWU]X[Xfggruvvtmpmjoioo\bzmcYTSOQOMSQQRTU\\YXVVXVSWWUTUVTYYg[Z[lttvuuomuwrjmmZd^UUQPIKPPRQQRT\\]VYVWVVXUUYRPT`^p]tuvvphfrrgelgabXTQMLLORQQW_\\[WZZWWVTXVQS`ppvxwvvushtlfelY\l]_OMLNKMKPQQY[\\^`Y]WW\^WWPVQ`aorsvzwvvnaoi_emYX\WPSLNKJJQQRYXU[\\aYXX_`^WQQUrrpswwvpqmoi]gV`a~\VSJJPPMQQRY\\Z]XS^`aZRQR`mlrrq{wpprpoom\cTVwhMJJMQQRTTRUTRUW_^`a`a`[[__g`dhrstrrqqqqroQVS\uJTPQTTXcRWSYSSWZZ\`bU`__`^aeihqutsrtqxvVUSQQ]ﵶsYrplYXZTTUZ\b\[\_a]_aadjiqttxwRPQQqnyumkcXVWUUXZZXZ[[XYY\]cbdqjttx~uxIPPQRR`鷳ythbUWTVYYZZVZZUX[a\jqttrsttyszJPPQVxum_VTTSWZZYZ\[ZWUY\YXkjphkqqtutLPPQQTdhtmTOPOOX[XX[ZUhjfbreq`kostsvLORRYbeehxpTONNQQa^^[\a]]^z|~osqksbbdgqt~yJLONW^cef}oaNOONXX`bh~a|yuup``b^hhlkxzHLTXWYcc^cwRONNO`evziia_^b`dijjkymsCLISVSYaazlONNOOQyxtsjb^^_ahhighjhpDHHJVVRYa]޵oNOSOQY[gxusl`eb_cgghhmxCBGLPPVV^_zmSQUQQkdx~unjaa\^efghhtgBDGGORRXX^߯{wYgU[hgjrwsppj_abdedghhegptJHLFINQW__`{qhmwkkmssxrkm_]be_gghhfefijlLKHLJNYY_Z^[b~tzhnmoxprvlibddcbdgfdffhjoNMMKMMRY_ZZbc|zqqij|ppq}v{h_^ccdaegmnkichSPOMMOYZYZZd]lsrqjk}qupcaa`bU]g]nlcllNLKLMMLITZZ[\cد}z}rbb_ZUT]YpujhojKKMJGLTYZ[[\ږgbSSWSY\npkqkkKKIHGNQZ[ZZϣ~ZTSW\\ljgopmkKKJHIOXZYVSҰty~|RY[\\]_\mnqmPKKHIOSVSSedb~}~||怘aY[][^^X]rnoLLNIFGHIINRRSSV[]yXURoqsa}|{|[b[[Z\fnuoQQNPOKHIIQRSSQPNTPOPPSZZm}|~ri_XYXZZ^lnsmZQRWQIJIINPPSSNOPQUWdrs}X`XXVVX]ammnsmXUWKJIHIIHIGGFSTTONRRONOOPRUVXeriaW_UUVdlops}jWZVPIIHIGDDEESVRRQOPOOPOTUVYm_UVUUVaknnjve\VUUKIIHDCDNXRROPOPSUSTp^ZUUWbmmklghhotjkҨxaZNKNXNONTUUT\c]bb_aa^ackeusmgglrtuunYMNNST[]Tbddcbaa]bbdggmtꑟdelrsttèlXaPLXWNTSYT`cc^eeba`bcdecfhj{nbfhhswꪧztd_XSWQRVYYTcddeb`_befdcddlixvcshrrp{mgx\[YSRR[T\cefe`_g^defhdfcdfhfnxyzrtsttcftlo~ml{_^WSVSVY^`mnfghfilmjfkededeklkprllh^`^fntuqzmzilzv`YXQQUYUYqxqdgc_chigegidhhklstmml[mZZnvtm}mni|wn\[YP`VY][jgj_d__bfgfiehnnonsmmnltjj[vzx{kmmrm|pYWVXSUVjjaa_g`c_injjbiiusnsqmpks[YYZIgx|r{y\RRUTTiUTMYa__`bblgffjrpsrrkokif_{jjVt}yxxwWSRRSRSTJMOS^__hlggVckmlornlph^d^`{[Yu~suul}pxVSPPLQMLJKII[^__lnkTYiklookljnplie[aWgppimlqqtz\mcSPQOPQJFGOJIIK^^_fnldYYikkokkjjfY[XZXv{}~ptmomlkikYTVXVVQNNPP[JHJMIIPT^^_faane^jkkjkjYUUXVl{x}~trusmlj]meUSTWRUMNPRZ\XOFKIHOQY[_ff`aacbknllvplkkjhUXU]np~mtppuwjjg[[TVWVWWMNR\[Y[OVLKKPVmg`dggfmsnmklqtggYcUU`jzvprpttvjj\[WWXXWTPYZZ\\[XLNKLNNRbgndfhokoponlurqde[[U_`||oqouvvmkjiSR]^`a[XUZ[\\Z[YKNNRObhkehhnioostssWggbbzw|wslmj[]ab_bZPa[\ZZ\RUYTOLQO\`hgienpkkonnqsshhqlbb{ww}wyomfba_\`__VMSMJSXbXYTNRK_`dggjkhknngrp`bd_bby|~ytqzywnd_[\_[XLMLNJJO`WJMMKMV^``iloghnonle]a`\a^abbꃀ}}xxkcca][[UQNMMNJXLMIKKM]gcbfcggmic\\^\][\[a`a~|wtmkWj^OUSMQQNMNNTJIIJKNQ[\`babccge\\Y\\[\ZZ[]\}~~~vmTRQMKNOTQQRRPQPUIIMQV\[`aaef_\\]^ZZ[_\q}oURRNKLLPPRPUKJIIJMN]\^__Z_``][\\]\Z[\\]q}}{lUQQMKKPPQPQQMOKJIIKN[\]]YZ^aaZ\]]\[\[[tvzy|ZSRRQQPOMPPQTROYUTIIKJLQZXZ]WZY\a_a^]_^^]\R䐑{pZxaWRPPQPOQPPOPQQSUMPUKIIKLKLRS[VUTP\Z]^fa^^`^^]]aZTP}h[]RSSNOMJPPLOOPRRXXUQQLJKKLKKNLTOQN[\\eghigbfc`f_fgU[~od[SOOKMKIOMMNPWWTRPOQOKMMLJKLKPP]QPQ`gfihhecloibeeTu[WPQMLFHLLNMMNOVWWXPSNOMMOKKLPIGKWTfSighiie_]jj_^eawZ[SPMJIHJMMNMSZWWVQTRNNLJNMHJWggjkihiihg_ld_^dVYeVXLJHJHJGMMNNMTVWWXZRUNNRTMNFMHWWfhjllihiihcYgbX^fUU|UPLOHJFFNMNMNTSPVWWZQPOUVTMGHHLhiigijiihhefefaV`S\]xtUROEEKLIMNMMLLMTWVTWPKUVWQIHIWcciigoi}ubcevfefeU^QRznaHDEHMMNMNNOMPOMPQYVXXWXVQQVV^V[^ghgdeddztgghfLRQXy|jCLJKNNR[LQNTNMMQSSTXXLVVWUX[_^ehgfz{uegetnlRQPMLVᢣzgRiecSSUOONNOSVYSRTUXTWWZ`^ehgjjq~zONLLgbnkdb\SQRPPRTRPQQOPPSTYXZf_ggjohkyDKKLLJWàunj_ZPROQSSRRMQRQPKORWR_fhhffggkfmFKKJIILs͟tlkcWPNONRTSQQSRQMKPSNN__c\^eeghgt|HKIIKY]rshcNIJIIRTQOORQQPPK]`[WgZeV_cfgfjHJJIOWYZ[tldMHHIKKYVVSSWRRSprteigaiXWX\ehsnwFHIENTWZZpsdWHIHHQQXZ`tsVuvrollgVVXT\]``moDHOPMOXXU[}򣤡jKHHX\|u~mq``XVUXVX]__`oaf}@IFMNLPWXXnaHHIJxpolkbZUUW\^^]^^\cq@DDEONKQXVxdGHLHJRS_oljeW]YVY\]]^]\aj@>CGKJOPWX{xpcLJMJJc\𙗈otmfcYYSVZ\]]\hh\u?@A@HKKQQWpmQ_MT_^ahۖ|njiibWYXY[Y]^\]Z\cguDCE@BEJQWWYxzqh`dnbadiipjcfWTXZU\]^\[Z[^_`FEBFBERRWTWRYtjpy_fcenfjlcbYZZXWZ][Y\[]_cGGFDEEHQWSQQXXxrpgg``rffۃrlr_UTXXYV[]bc`_Z_MJHFFEFQRSPPXRbihh_`}rf{xkfWVVUWKS^TddZdcGEDEFEDALPPW֢ytpzyrg{WVTOKJTPhmb`gaEDDFB?ELOPPw֤w{{u~{~\VIIMJQVgidiccDDCAA@FHNOOP颡ywswvy履{PJINUVedaiiedDDCABGMONLIvҤ{imtr}qIQUUVXYWfgkgHDDABACCHJLIHHZZX|xyrwquwxqpptxYPTVTWXQWjhhEEDFB?ABCCHJIHHIILRUpPLIcdgTprqpoptwvvPZSSTV^dnhIHFIIFCCJIIHIIJIHFLHGHHINMM_pnqrsvtvxh`VOQPSTWadjgQIJPKDDCCIJIIJKFFGGHKLXdepuy{}utNVMNLMPUWccdkcOMPEECCDCCBIJKGFIIHGGHJMLNYdss|stw|]VMUJKKL[aefjraPSPJCCB@@AA@LNJJIGHGHHGKMLOaqttvwt{wSKKJJKKWaccal]UPPFDDC@?FOJJGHGIKNJMdtutu{x~ROKJJMVccab¼~}~|cdkikzt|}utoou¾lzmmsnjomjit}~|q~lλ{xu~tkvxlssljmrutzzyvpllmýw{{wrllktvhjmlsuvuvvy{̭űʱý½~qujszqq{khkgnkl{xksywwvw~ĸ{{sqeqoc_cedoxshfhkmmktkyluxwwvw}չsuuhjged`^^_ee`clifgikmikshipuwvvwwոzwisje`_``_`_ea]^`gfghzxhlkhuwwvvww츷zufcbcii_`d^`_]]\^[bdfijagjinqhwwxwxxythsifbfiih_ad`\[[\\^gdcjdfchnhlnxwxuihjkknm{{~y|rxnghjjic^]\[ZZ\]^k_[`^^eoqurpptkgkihhihg}}mttjstzmjqddfgZZY]\ga^]b^eq{yom{pxhkkihhgfgypfb_^_^[ZZ\Z^jkjoxoinw}spzxlkkhkihh~xyrig]bb`^\c]Y\Z]X\[kk}opsruxhhnsmq~slgf\\^\[`cg^^h^bdhn|strsvnhiihkl{ryvqqg\\]`b`cfggahb]qorttwyuutlhm|~{y}}~ysspae]\\`^bddefddf^lvtsqrpq}z}{u}~|z|{zvrpf\\^bbcbdfggzpg_ackkiqqyzzw{|z{y{|xutpll]]^ccaddgeoji^^l`_jesyy{zzwxy|zvyyxtruujji]ccfjkucbb^^cesxw}yz|{xx|{ztuvyysuuhcfcbcdisustja^^]]`mtxwsq~|{ysy|zxvustwvwwuvvzhgkmonw|tujaa^^]^myytxrv}wt~uzyuwzrpnmrsrtxwsurqzmu}vtukji^`\_lyltzy|wzvvrtutturmkktssxsrvxufuuvtqj_^^_kllm|vwq{rpssmjrszijrrvvutqa]`_llnmo}oqqvjrssrlhhorrssrtrqs}hhrhnbcxtutsZ\\ckkllmlykpjhjcppsplihhrqssmturuv|vyoct{xxttc^\egfmrlrqt}jddjospohhvrtomlluvrporbnc^`nhek[V]igfvvmwwzplrqn~zsygghyyqnmmlsutoonkkbcf``gjmfdiwflpwse|niit𳴶gghqwwjrolpuprriijghaa`ixzovm[cpwsrbiihnzwvpinpvllxqppmdgda_awzywuu~]W~s{ej``izzpyz|yqprqgijnt{{|~t][cuq{c|briepxsvzyyt~hgppqlccbr}{{zv{usprrewehyueitzzswyzz{hggaplmrsxo{wsggcb]cfibjogpz|zoqjxtclv}wuvhfgdY^tfuyphnuyx~Ì~kuzrjl{uvtttqep^^w~lowmiͭst||pn|oz~qza^c_q~jvscdfxĹ|xupqoz|ontow^\wjjwoodk{xqzz~pponnpwjaa]]^||eyvyzyyxz¿|vqqppupp|fijcatzcdkxyyxx}rqqpyosttsuzryywxxs||~Ŀvrqqpu|{lpwttisuwxwwvvenonuqyvqqyx~~}}|{ttvslxxywwonhjmxxyy{泟swzz~}muvnnstuvxzwwrmijktxwxovz||Ⱦxoov{rrsuzv}vttjkfiuvutggtxw{{|Ǽpxrxst~ornrmkmghllvmjppsyz||{ȿ}~|sevlomklummjhhlghmsxx{zz Śjp|paaoomlknlmpqjpejemxxwxzzw̤livmpgllpxnmsmlr|sr{mfgnxxwyyrx㽡}ynmoypmqyyxnmvx||stusxxvproqr³{rppxtox}|p~~{zqtwyuflqq}Ġvstzz}uywxootrllkoom¢yy{vvwwiqtqqpwlrtnlyyķ†|y{skqqnxdkrqmvvrkv{|lo{|yrkojpootukpv|~|x{∉msopkhnohktsxuq}ywxyz}ij~tjinplngnfghmtuāy~xy}}~mgkh}y{rilffggfkfyzy{{x}}xrjeeyqyhhmffhhffowzwzӎxwxk{tsljghnhggwoÃzqy{|v}w{rmhkinfghihu}|~s¿{|{|~ttz~jihhjiggfkmiv|}ttqqpqÿ񷫧{}}|~|qhhjmjjkprwztqþ~}hkhheikmkkmprv⪨sqsrWX`^_oiqsrkjedwvjڱ^lscdkex_eca`jstrgutbwvxyϩmkhskamodjjcadiljpqojwdabbĦ}kpqmjccbkm^bdcjkkjiiknvŞ}zzqdh^hofgsc_b^eccqobhokjjijqå|~lkxhf[ecYUXYYeok_]_cdecjcpbkljjijo윚{dfi]`]ZYUUV[[WYca^_`bcacj^_ejkjjio|s{luuxwk]hb[UTUUVWV[WUVX_^__qo_{ca^klljjiir{zhvluwuvi[XXY``TV[UWVTUTVT[\^abW^`^cg]lljkje~}yqYwuwug^\X^``_VXZWTRSTTW_\[b[\X]c]abmllj`^`_^a_kkrqvmxxuriof__aa`ZUTTRRSUVWcWSWTTZeejfddhb_b`^^]\Yoqpqbj}jakmsfci\[^_RRU_ZVUYT[fomcaoem_bb_^]ZYZru禨p{wyi^ZWUWUTRRUSXcdcgof_dlrgdntmbb_b_^]\suvnovvia^RYYXUTZTRVSVRVUdevh|xfiwxutsfim__^ejaguvuy~kyw}c^]RRTRRVZ^WWaX\]agvy}~jjxuxuffjd_`_^bcuwwvwwppipmgg^RRSVYWZ]_a`Zb\Wjzy|xfijjlywmhijb_ds|zzx~wtqnrklrupiifW\SRRVUY[\^_]]_Yfomlijggsprvsphps|{{~||xyzwnmokqsrplhf\RRSWXXYX[^`_tjaZ\^eebhhoppmpqy||opvxyzrprrnkjfbaSSRSXXY\]gbbXYf[Zd_jporqpmnv~uzzmoowloonjhkj``_RXXZ[`vzcn]]YX\^kyontppt{}~uutolltumlpjklooikk^Y\YWXY^ikjmc[YYXYxekonjhutruvvlglpswmkjkijmlmmkllp{]\`bdcmztmnd\\YYXWeqqkoi}zmwwrjhr{jnmujkmfdcahihjnmikhgpvybktnlnddcY[VYdqdkqxpsknstkkgiwjiigb``jiinihlnj\~yxnnomjdYXXcdsxklgxqhfhhc_`hhihihho^`u}hinoonmj[WZXccedds}fgglahha__dghhjgegtr]^g^eXZpmnmlTVV\bbccdcoavg`_aZffhfc^__hgihhbjjfjktqknzeYkropmm\WV^__dicihjzzq`[[`figf__mhidbbaajkfedgWcYUVe`]cSPUa__nmdnnpfauge}dspio]]^_pphccbbhkidda`XY\VXX_ae^[`vo]bfni[qb^]hz}򧨦]^_hnn`ieafjehh_^_]^YXX`oqfldvuQYfmiiWw^]]wtdpnng_dflaamhfgcZ]ZWVXnqnmkkvtSLtiqZ^TT]v|ppgpqvwyroh|ghf[]^chqqpqqtjSQYkgqXqWg]Xbkqcsmppkxyt_^ggaVWUgqqppokqkifhh[lZ\mhX\fkkdpoqqq_^]Ub_aefz{{ndoli]]XWRWY\U\`X`popqrqtt{cc^jfxxU^vrjzrm|kly^\]ZOShYhlbY^eigpmy~zs{}_gldwx\^lgyjik}}jg[fSRkr}^`g^Zuwuuzwx|xeemmqccqzfpxtgpVSXTer\geUUXhpu˸qxtwlifrddeqrfe|vvjemSQkv]]iaaU\libov|t{pkkpeefeeg|m}`WWSRSpzpXkillkjikvڵomiedeffmgg}|r\_`YVjxoWX^kkljiijwp󸵲rdde}Ղ}|{|oehjjikogmnljkjiifnnrӱfddefekzrqbfmjj_iklnllkhXacbienfeefonttssrqjjlhbnnollkca\]ammmqu桍el}ptpuscklddijklnp~ullgb^]_imlmchlnouvƳ}}yneelqxhhikupl|svlii`a[^jkji\[gkknoosճ|zgvnxhnij{t~ehdhdad]^bbkc_edhmmoo޴y}tuuriu\lbecbcldda__b^]bhnnoɲ|agrgXXxxxeecbbfdehh`f[a[bnnmnook̰b`mcg^xybbfnedjddjrjiqd]^cnnmongujq㪔tpedfqyzyfcgopoedmpvvrsijkhnolffacdpwwuq|}h}ffnjenssyuuvfttpogkmok\`ccmyxz}~lijppyuvvsvlomndejhbc_aa_qv|||ooqllmuvvm_gjgfgfmvchjc_jjto}|}x~roqiaggdnZahgbl~kf^jmlqbew~zqrohae`feejkafkqroklqvv}zc||}iefa^de^ajinjfòqnklmloqt}si`^dxw}{{fbd]d\]^cjkumrllnn~٭}b]`^spq~|}h_b\\]]\a\nvnmonloot|lg_[[og~o^^c\\^^\\eu~lnknss~s}mlnawxxvpjia`]^d^]]lezxnrrxy{goq}rulsmq|hc^a_d\]^_^jtuptnwpeupqqrut}jjpt__^^`_]]\ac_wloogfcdcd|prsrt}r}yg^^`c``_delmw~sgdxyxw{t|~s^a^^[_aca`adfjgfgfKLTRTc]ehf__YZonb{uSbyhXX_YkTXVTT^ghf[kjZonpo~⠖xc`]h`VacW^]VTW]_]dec^mZYZZyloըwwuvaeeb^WWV^`RUWV\]]\[[^bmˌliieZw]S]d[[gXTWRXVWdaTZa\[[\eޓxrkma`l^]Q[YOKNNZd`TRTXYXV]UcU\]\[[\aylؘY[x|{xxwxs]RVTQPLKKLQPLNYVTTUXXUV]QRW\[[`xmcl헙ajjm|ttl`Q\WQLJLLNLQLKKNUSTUgeUmVTQZ[\[[cqytmmYg𘖛ajljjs^PMMVJMRKNLJJILIQRUXYMTVRUYP\\[[XpokdNs욗ttljkj\SPMRUVVMOQNJIIJJLURQYRRNRXPSU^[\[RQSRSUS__efkbmmjg^dZTUWWRLKJIHIJKLYNINKJPZY]YWWZTQUSQQPNceefW_r_V`bh\W^SRUXKJIIHHKJVOLLPJP[daVTbX`RUUQQNOghdpvmp}{xu_UQNMONMJJIJKINZZ^f]TZ`f[Wah`UUQUQQPfgi~~cdkk_XUwKQQOMLTMKNKMIML[[n_so\^llihgZ]aQQW\VYghgkws`olsZUTJJLKKPTXPPXOSTX^lptvu__mimiZZ_WQRRQTTghihhie{uttb]eb]^^UJJKOQPSVXZXRYTNaqpso\^_`anvlb]]UQVeulkkiohgfce^^tdje__^OSKJJONQTUVWUTVP]fdb``]]hdgjhd]ehrqppomiktki{`_b]figfb_^TJJKPPQTWXWk`XPRT[[X]]cddaeenxxqrsdejijldxeghdba^YYKJJKPPQTU_YYOP]RQZU_dceed`bjxxukpocddsvkޝzbeed`_bbWWVJPOQPSSWnqYeTTPOST`mbbgcdgoysukkjgcbjk񛟗_^f`acff`bbUPSPOPQU`bacZRPPOOmY_ba]\igfywkmmc`efimu`x_^a_`cbdcbccgsTSWZ[[dqkcdZRRPOOMYee_c\pl_kvywokdbiq`du|~ai^_bZYXW__`dd_b_^g{{xnqwYbkecd[ZYPRLNXeW^dkdzzfvz|zefjjaa]_j_]^^\WVV`__`d`_cex{ywaSu|poddecaZPONMWWfwwzl{}vtbb]me\[\]]XU^__f{wxVWmt__deedc`QMOMWWVYWvXfps}[^\aV]]^]]WUUZ^_^__^a^\^kvjTU_U[OPfcdcbJLLRVVWcTqi\UTVP\\]\YUUV^]__Zaa]abkzhcfr\OahefccRLLTTSW]W\[^mndt덄wyVQQW\_^]UVVd_`[ZYYab^\\_O[PKL[URXIEJVSTbaXaadZThZXmuZif`fVUUVUii`[ZYY_ba\[\YXPPSLMMUVYROUjdQVZa]rOeUPOZhkt𖗗xUUW`ffXa^Z]a]``XWWTUONMUceZ`XjiFMZa]\KkQPOypgyk[iff_X]^dYYe`__\RUROLMbeba__jhG@h]veORHGPnfokii`iinnqjhat``^TVVY_eedeeh^GEM_[eLfLYPLT[bVdv蚛fiihcpy{qlXW``ZOOM^geddc_e_]Z\\O`OQb]LNZ]^Wcvhjjivx|}}xiXWWO\YY^^opqbXd`tvt]QQMLGMOSJRVNVecdvjkjwwu{xjkqZZVb_rqNVlh_ofap_`mRPQNCH^O_bYPV\^\damuvvupjwqsV_d^pqUVc]n^\]pqq^^[OZHGyahuUX_WRkmjjn|unxqvr^]ddgVUemXdlh[dKIMJ\iyT_]MNQ_fj}񩪣hqmpd_\hVVcdXWojj_ZcIGbnUUaZZNVeaZfkztksgb`eVVWYpapULLHHJhrhPdbeecbbcmzxzgb]VVW^XYpogQTUNLaogPQWddebabbkby|fWVVnsoonure[_aa`bg_fgdccbaa]aacxߤZWVVWV\utrungfX]daaWabdfddbaPXX]X`x}ZVWW`_tgghggac_Yeffddc[YRTV``a`o_bf~X]naeay|gfW`aZZ`aabegtkcdc^YTTU^``aW[_`ayiitpsojaYY`fn_^_bjfbrilb``VWQT^_^]QPZ]_ddegǡznvvrlZiam^d_aqj{vtY]Y^YWYSTWW_WUZY^ccefeԞmvvoghhg^jRz|`VYXVXaYZYWTTWRRZ_eefggĞ|xutoU[g\NNt|mmlYYWVW[YZ]]V\QWQZffefgfcz{v؞xxVTaX\SmumVVZbYY_YY_h`_hZTU[ffg_iz`gt㗄|uhdZY[fnunmZW[cdcZYbellhi`ab`fgd^\XZ[fkljepr\qZZb_Zchhokkl\kkgf^begdTWZZc}ozlnqrvxtvts`^^eeokllilbecd[\a`YZWXXVimrrsttspxuuscdf`abkllcU]`]]bkY_aZWbbkgr{wtsrsqrulssursgce^W]]ZdPW^]Xard_WdedjwxyystsrssUYskturnefd]V[V\[[`aW\a}klmhdehkj{ttprrmVsttuppq^Y[WTZ[TW`_c`\âlheggfhjj|uvrpe[SQWwlkvqppZWZSZRSTY`as~ogmgfhhet}vxqmUPSQgce~rqr]TWQQSSRWRck|ggiighhmzql]YRNMc\~yzsdSTYQRTTRSR[jregehmllvj~tm^]`Skmlxkf`_XWSTZTSSa[oqgllrq|tlZcfrfjahbgr]YUXWZSTTUU`wlnimgph\v|xfefegjir_`fiXUVVXVTTSXZUkrbfg_^ZZY[qtcghgivrgso^WVVUUWZWUTWXbdnuj]ZmnsjiniquthTYWVVURVXZXVUXY\tqolgjjl_][YVUUPMMOQQTUSPOOMMKKLObfl}sbdfcznovpljlfl[[aYWVTTMPTPQQURPOPPONMJKKPYeh`ϸsxp}dqqjmlldaZcm]\WVUVUTUURUWWPOPOMMKKPY\]eaxZ]ksvnu{xwy{pdeenlhhbc^VVUUVVWZUZXRQNLLKKLMSSVd]\ZTUQTeq|[}~|~ihh\ihfd\\Y[[UVWZ^ZXWTQMLJKKLKKNOPPSSTRSQg}pmcgii_fhocb\aWVRVXaZVUUOKJLJKKMLMOPPQSRTVPnzz}yoh`vebohqkdb`VUTV\\_WVUUOKOJIKLMMOPRSRQSP^m|{q|uadk`bnn{naROPMTV]fcdUYUZKOJIIJJNOPPRSRSRPPTdm~tqmgbalvutn^W[[SLKLK_fscXXYWVQPMMLONOOPPQSRRSSPQPRZd~zoohfag~tobd[ZYVMLLO`scrpZZV\UX]TPPRSQRSSRQRPZh}ùzrojfdelrd^VVUPNRddm`\ZUV_gw]W[^_\XRRTUSSRUYejsrqqifkks_b^]WVUUSMPdrddrc__]_]iujfa`a^]^TXTTRTURSROP\TපsrqpiihfdbZZWURPRPUocdd_``__toklr`aa]\np[WWRWSSRORQRVSõsolihixxd\]WVURROPPUbc^gc`_^]ghfdiZa_aw\a_kTTSRRPQLPôtnogbhixtubWVWVPOO][ac_bge_^`h]][[Y`_[LRSPPLOTcpsn`_`sjxcqkV`WTOPOOScdgef^c_^^\_YYZ񚧷WQRPROOTSWcrmshkypctfh`_QOO[adgh_b^hhba_YYZiyQRNNMOTTSVVvqtcsdceij`[POOV]a`h_bbhhf_ZYYZp{h[RPOMQSSRSkhhmwtsttspijgZUOOPOUT[_]]^gbgghh_ZX\Z}VQQPPQRSSQqkmjhkptt}ikh[]`TNRVVWZ[]`ggffh_YVv|~}mWPPOPRSRQijlmjjquhghqveobXSVWWXZUg_Zffah]UYy|y{|fPNRRQPRspokklhhdpchhgiccVWXWTPSaZ_hgc`hh{vh^PNPOORkllhkgh`ccecdoegddbUUWWVUUSTSXUU\XV_myx|hSNNOQRiihhfcbbcofochcdeWUVWWUTUTSSTUWTUV^XY\rxy~wTVVReihiggfecbfdgnote`chUVVWWUTROTTSRQRSVSTYVQUhVQssrrhghii_ccfghbdb__XVUVVWVVTXSTTNJRQQMRRUQSRRVXXRSUkpsuhijjgdhccbelid_TTSSVWUVXXPOONIHIQQNKPPOSUSXXVWUfjplkgbdbccbebnsheYQNTSRV\ZV]OQJHGGIQJLKMKPPVTXXRMq~krvtnkcdcdecddewnji[UPSRTUWfd]OJJGGIKKMLLRUYZWYOOMRlvtouunnfeicefpxmk`bSSPQRUY^dh\OdHGGLLKLMLLOWXYYONSVys|zsjhmdde_]co_YURSNO[[]_gfjafGFIPMMKLLOWZZSPRSWtºohhddccfkks]SRRU\ghehvmqONaOPJKKOMWX\^[ZXZTXw¾tddeikcc`hRXNRUVZ\\gjjppuwxjzZQnPZ~ohba]TjŀxkjfmdekTRRLNYV[_ahkloywn~sspszžnogmdffoRSLPTZ^_ehhljjnut}본~yy¿tnlffqhTQRSQ\_`beijhnkwxvvu{{x¿ƾqlhYUVTQX\\_acfgnjk|ruvuzv¿|op_XXRQWX\_^_cdjk{tqhurt|~ǻmhe[[SOLVTV]\[[ccxhhcrkvTdxodþkkc[[HGGLMMQ\\]brqrnilpyru{zTSTSSZ[b]fedbNFQJJKJLUYbX{}~jjiksocd_trqbUSSWVWWÿĶse^_UIQJIJLRQPTOWitbbhcmWlSUNUZZpoRPYXPSUSQSTVU[øĵqc_aZMLJILJPQMNORSQTTVLOOMNNMLQPMJNMRSVSQRQQTVWVoodccUUOULJMQPSLMNQQNOPKLLKMJIIMLSVVQQRTTV|y{m|tujidda`UUQPPLNPKLLNQPKKMLLGFJKJLMMRVRRQPQRSTUztw{ymomfjiithrp]\]YWWXXVLKLLNLNKMQLMLJJKKLIFJKJKKONNORRQQSTSYwrsiqmifgfiknnurceXXVVTTXXULJMLNMONNKJNNLHJHILOIMRMPONRSOQTVVxupiqjfegehhlqosdmcWWTPSU`ddNNQOLLOPLPNKMQOVJJQKLLOQOOMR[PW[XegiqkmgeefgdsqgWgWUPSUTheeaJKOMLLMOKNKPNU]\^dPLLMMNMNUYonejk[lrppmhjdcegfd^XofggeXTPQdccfVWTLKMOORMQNQRka~zeLMMUNNjmppne]\aqfsff`jfcb`cVZU^dgeZYURQS`a\[VVRXNRRQPQRSS}NNYbfkppquq`[ZororermmZ[ZdVS]dOZQTTQRQZ[YWVVSXYSSQQYSb\~qqvuqe^^lttkz~~n[Z[YSR[RROOPVSSUU^WVXXR^`[^SX|܄zqqvtppb_wytzz~_`[oV`SWQQOOTVT[e[WXSRTT_`mmpwstrsy{¨qptsv{cwgmpTW]\QTTYVXTbVgQRT]\hfeno~gcvppZkkx|{v{aXSUVWURX]ZX^XXeddggklwf}b^ijZicgbǏvwbYXWXWXXY^aYYX[ffhihqzr^_^]UUWW]fjğrohYYVUX[]Z_^YYagmsqr_]Z[WTTUYX`fȦ~trjcZXXVUTTY\`eY[Z\pyvxvZZU[TTUUZ`~tfaXWXXVTXVTTUaaegZ`bjoqquYZYQURTTXYn^[WWXUUXUTT[]dhhimqrmp\PVQPSTTQT¾}xc\WXVRWXTUUTU[`^e]hmqpqnt{szYsmXUSPQTTUTVreda\[XRWVUTTUUZ`[_^emqrplpsiYXXUo[ZVQTTUVUUsシl`_ZZXYTTVZ^\[lnnoqeVTUVVTks\ZYWZVWVxufcb_[_``bUSQQPPOLHHJLLPOKKJIHGGHW[`ԯ~~sttkY[\Ykabidb`b\cQQXRRPPOHKNJLLPMLKKJIHFFGGFGGIQZ\U~|gogt[dd_cbbZWPZeVVQQOPOOPMQSSLKKJIHFFGGFGFJPSSZWjxOR`gkcj{rnzmukspfZ[[dc_`Z\WQPPOPPRVQUTMLIGGFGKKLZSSRLMHM[equwPsqqt_^^S`_^\UVSUUOPQTYUSSOLHGEFGGHFFIHIIKLKMMJKLuK]vz~r~ecY]__W^`g][VZPPLPR[UQPPJGEFFHGGHHIIKMLLKKLMOJfpqurmxvd^Vl[Xf`hc[YYNNLPUVYRQPPJFJEEFGHGGHHIIKMLKLJWerqepjWZaVXddqfXIGHDKOV^\^PSOSFJEDEEHILMLJJL]evgeb\XWblkjdUNRRJCBBAW^j[RRSQOKKHGFHHILKJKS]vkcb^\W]tjeYZRQPMCBCFWj[jhSSOUOPVMHHIIKLKKLMLKJKIS`vkeb_\Z[bhu[TMMLGEI[[eXTSNNW`oUPQSTQOJKMNKLLKJMQ]bŝeedd_\aaiUYUSNMLLJCF[j[[i[WWUWU`ma]WUWSSTKOLLKLMJKJGITLy棢fedc_^^\zv[YQPMLIGHGKf[[VWXVVkebagVWWSRdgSOOKNKKJGKJJOMeb`^^_nn{ZSTNMLIIFGGLY[V^ZWVUT^_\Z^NVSVk}TXV`KKIJIIJFJwfab\X^_njkXNMNMGFFTRXZVY^\VUV_RRPPNSS}ytwtQCJJIIFGJU}cebVUVi`nZgaNWNJFGFFJYZ^[]UYUUQTNMMNNxNIJIJHHJIKUsfbi^aofYk]_WVGFFRXZ]^UYU_^YVTMNMMN[xmIJGHFGJJHJJsjgjXi|ZZ[``XRFFMTXW^VYY__]TOMMNcto_RJHFFHJHGH_\\aljijjig_`]QLEFGFLKRVTTU^Y^_^_^UPMQN{{ustrNJIGHIHHGe_`^\_ejjs_b_RTWLEIMMNQRTV^^]]^^_UOLsj{|qtsdNGGFGIHHG\^``^`gk^]_gl\eYOJMNNOQL^VQ^^X`SLPstz}prprq[GDHIGFGgcc__`[[ZfY^^_`Z[[MMNONKGJXQW__ZX__wy{{yrmvv^TEDFEEHbb]`\]VYY[YZf\^[[YLLMMNMLLJKJOLLTPNWeyvz|z{zposv^IDDEGI`_^]][YXXYe\fY_Z[]NLMMNMMNNLKLKJJKMOMNOWSUWykzxoo{tmJLLH\`__\[\[WX\Y]dfk\X[`LNNMNLKJHKMLKJLNQNOTQLObPLkkx{~ig^^__TYXX\]^xY^[XXQNMNMNNMLOJKKGEKKGKMOLNMKPRRMNOcegz|{k__``]Y^XXY^eb^XMMLLMONMOPIGGDCDKKHFKJIMNMRRQROuzz}v]`fa`]WYXXYY\Zgla^RKGMMLOTRMUHJDCCDKDFEHDJINLQRRMHhr|agjhc`XYYZ[Y\\]phdbUOJMLMMQ]]UJECCEDEFEEKMQRPRIIHLckgcurihcc[Z_Y]^hqfeZ]ONKLLORW^aTK_DCCGGEFGEEHNPQQRIHIMPmeyxotmg_^c\]^XV]k[UQNOIKVVWY`^c[aDCDKHGGDEEGMQRRMLJLMPevd^_\]\\_ffoYNNQPW`a^`ngkKJ[JKDDHEMNRSRQQRNRg{j\\]ab[\[dNTJNQRUWW`cbggmoobqRJdIQr{cy\WXTNazumba^c\_dPNOHJTRWZ\`bcfqofvwthhxzx{fiiyude^b\^^jNOHLPUZZ^``daaelwwhrpy||vmhiwhcb]^^ldPNNOMXZ[]^`a_dbmmiign{vz}njgzytiecUQSPNSXWZ\]`_d`artehhgl{}}~wf~|qfj[TTOLRSWYXX[\`aqthd[gdfzzmn֮~}gc_WXPKHQOQVUUTZZ{zl[[Vf^h—~KYujaW}bd]WWDCCGHGJVTUYiuffa]`dmei{upnJJIJPQUQv^]^^JBMDDEDFNSZPrtt^^]_hdYYUjyhgXKIIMNMϰuuj]YZRELDCDFKJKNHN`kWV\XbMaJLFMxQQfeIGPPHIKIIKMMRfs]Z\VIGDCFDJJGHHIJHKJLEHHFGFFJHEBGEIKNJIJIIMNONxufe\]]PQJOECFJJLEFEHIFGIEEFEGDBBFDKNNJJIKMMNonovv~xv}atqkkba\\[\QQKJJEGJDEDCCFHHFFEEFGFFGCADFDEGFKNKKJIJKMMOoiknmaba[_^^l_kiVUXTRQRRPEDEDFDFBDHEFGFFGEBEFCEDIHHIMNLLNOMSlgh_fa^[\[^bfemk\^SSRQNNRRMECEDEDFEEFIGGFJIHCDCDGJCHMGKIINOKMOQQmjf_f_[[\[^_ejhk^f]SRNJKNX\\GFFHFCBGIGLJGJMKQEFMFIILMKKHMUMSVS^`_gac][[Z]^_\kj`Q_RPHLNM_]]YBBEDCCHGJGLKQXWX]LIIJKQSff^ccQbhffc^_[ZZ_^\WQg__``^RLHI\[Z]MOKCADGGJHLJMOd[tpvu^IJIQKKcehhf\RQVe\h]\V_]ZXW[NSMV]_]RRMJIJWXTRMMINDJJIILNOOx{vvrJJT\_dhhmiUPOefdf\gbbQR[OKU\FRILMIIHQRPNMMIOPKKJJRO\|wwvwvxxWuwiihmmi[SRbghh^nrscQPQQKJSIIFFHMJJLLTNMOOIUXSVLPt~{vvwvypihnkggWTjlgnmsUVQhOYLOIIFFKMJR\RNOJIKKVWddg|~wv{vxznkkjipp~dcghlqZo_fiMOTTHKKOLNJYL]HIKTS_]\ef}xxwyzt]ZmhfgPaa°mrs||znsZPJLMNKIOSPOUNO\[[^^bbmt}yyx[sXUabR`Y]W񯶄}yywooYQOONONPUWOPOR]]_`_fogzyxzTUTSMMONT[`x~~}jg`PPMLLKNQTQVUPPX^chffTRPQMKKNPPU[t|ljb[ROOLKJJPRW\PRQSenkliPPLQLLMMQV򰲵t}k^XOOMJNMJJKXX\^QWY_ceehOPOHLJLLNO鱰w|seURNNOLKKNKJJQT[__^_bfgbdRGMIHKMLLIK쯱}qnZSNOMINNJKKJKRWU\T^bfefcingznNe|bOLKHIMLMLMwwg\[XSROINMKJJKLKQWRVU[cfgeaeg]NMMJbzRPMHLLMNMNiשׂxwuwubWVQQOOKKLMQUSRbdcdfZLJKKJahRQPNQNNol[XWUQUVVXKIGFFGHFDFEGGFIIGEDDBBCBCOQVvrrhgjbOQRO`VW_ZXVXRYGGNIHHIIDGLHGGJFEDDEDCDACCBDJRSL͓sporqZtd^jPxyYYTYXXPMFP[MMGIJLKLMMGJLLEDFEDDCDCCBEJKKRO^lHKTZp]U]oqgdobh_he\PQQZYUVRTQLLMNNOJNLGHEDDCBCEEQLNMGGAFOWbgsrrqkFguffiUTTIVUUTNOMQQMNNOROLLHGDCACDDECBDCCEFHKJIFFEg?Ogujrprf}s[XOSUULTW^UTPTLMIMNTOIHIDBABBCCDCBCCGJGB>Xa^ctdbmkYTLbQN\W_ZSRSIKILPQSJJIIDADAABDDCBCCGJIGGDD?JV`_zZe_MPWLNZZg]PDCD@HLPWUVIMHLAD@@ABCCIJFDCDPVfs[ZWRNMXba`ZLFKLF??>PWbSJKKJHEDBBACBBCCDJJHJIDECCHPf}^WWSQMSj`[PQKKJG@??AQbRa`LLKKHMIJOFBBCCFIGHJJHFEDBHTf^YWURPQX^kRKGGC@DTSS]PLKFFOXgNHILLJHDEIKHIIGFEDFHRVYYXXTRWW_LOLLHGFGF@BTaSSaRNNLOLXeXTOMOKKLEJGIGIIEECACKFjYYXXUTTRplQPIJGGECECG^RSSMNOMMb\XW^NOOKJ\`PLLGKFECAFDEHItYVUTTUddqQKKGFFEEBCCGQRMUQNMLKUVSPUENKNcuQTRZFEDEDDAFoYVVRNTVd`aOFEFGCBBNKOQNPVSMMVJIGGEKKuqlqnL?EEDEBGLVv[YWLKL`VdO]XFNGEBCBBEQRUSUMQMMIKDDEꂍl}KFFDIEFGLJMUvh]X_TXe[N`RUONCBBKORUVMQMXXQNKDEDDERm|zcFHEEDGLLKLJvja^aO`rOOQVWOKBBGLPOVORRXXULFDDEY~|{ie[OJHGCILJIKuWTTZc``^[UWTGEBBCBFEKOLLNXRXYXXWMGDGEoojhkiLHIHIJIKIG\WXWTX]``hSVSGJMD=CGGFFGJLNPXXWWXXNFDg_nsnfjj_NGHGHJIHGTVXXVX^aSRS[`OZOHCGGILGXQLXXSZKEIfhmsoeiegkZFDJJGFG[Z[WWXTTQ\NRRSMOOEHGGHGIIFBESLRZYTQVVjlqllfbooZSGDGEDFXZYTWSTMOOPNNYOQOPNFEGGHGGFFEFEKHHOLJP[kimlkllcdiyoZHCDEFEVVUUTRONNOZQZNSNORFFGHGFGFEFGIKIJKPLNPluvr^kjbcpwyzkeIIEUVVSRONROQYZ_OMPWFGFGGFECGIHHFHJKHJLJEHWHD^_yvxnuqs`]UUVWVLPOOQRSlOQPNNIGEFFEIDFFCAHHDHHIFHHDIKKFFHX[^orq}{yaUVWXUQUPOONONOQZXSMEEDDFFIBABB@?@HGDAGDDFFKJLFjoprtkTX]XXTOPOPPORP\bWTIC?ECCFKJGNBD?>>@G@B@C?CCEDJKKFGA\fprX_a_[WQRPRSPRSTf]ZXKEACBDDHUTND@>>?AA@@A??DFJJIKBA@CX`r~s\Zljaa\\SRWPUV_g\[PRDCABBEINTXLEX??CB@BB@??BFHJJKB@ACFbwz|\{pphmfaXW\UVVOMS`PJFCD?@LLNPWV[TZ??GCCB??@EJKKEEBDDFy\n]VXUUTUV\\dNDCC"FELWXUXe`cFFUFG@@?A?EFJLKKJKEHwz}u\scUUVYXRTRYCI?CFGKMMWYY^^dfg[hKD\CJiqZnSNPMDWxzrmmeZYVZRVYECC=?JGLPRWYZ]hf]mnk^_nozmnZ]z]lk[]TXRTT_CD=AEKPPUWV[XX[bnm]ffvlonsx{i`\]n^XWSTTaYECDDCNQRTTWXU[Xcb__]cpzj}}loszța^[mlh]ZXJGHFDIONQSTWU[WXgj[]]\at|noo~xkZpmdY`PJJECJKNQPPRSVXgj^ZQ]Z[o{mzzvrab}on\XTMMEB@IGHNLLKQPqocRRL]T]uv~rpouDQh^VL~|pWYRMM;:;?A@CNLKO_l]]XUW[eZ_n}ic`BCDCCKJJH}ziTSTTA9E>=>>@GKRHiklVVUV`\PPK_~p_]NBBDCCGHHGgh^SPQH>F?=>@EDCFAHYcPNUQZEYAC=BmHH_^DAKJBCFCDDEHHMtZeSQSNBA>=@>DDAACDBFDF?A@?==<@?=@?DFIECEDDHHIIswkh[ZRTTIKDJ@>@DDF?@@BCABD??>=<<=<<>EIIEDDFHHIdeflkrmkqXigc`YXSRRSJKFDE@BD>??ACDA@?>>?=<=98;>=>??FIEFDCEFIHJfacedXYYSVVUcUb`LLOLKLMLJ@>??A@A=@DAAB??>>==;8<==>>ABBCGIGGJKIOd_`W]YVTTSVZ^\ebTUKLJJHHLMH@>A@A?B@AAB@A?AA>9:9;?A>ACADB@BDAG;>?ADBBAGNGNQOXYW_Y[UTSSUWWUcbYKXKIBFHH[XWU=>A@>>BAC@DCHMLMRC>>?@??@GK]]X\\HZ`]^[VWSRRWWTPK`XYYWLFCCWVUXHIF>=?AACBDBDFYQhejkS>?@G@@X[^^]SIHL\T`UTNWURPOTGLGPVXVLKFDCFSTOLGGCH?CCBBDEEFlokklkh?@?JPTY^^_daLFF[][\T^YYIKTGEOU?LBEFCCMKIGHDIIDDCCKEQpllklmmomM|ik__cdaRIIY^]]SchhZIHIIDCLBB??BHDDHHOIHIIDNPKNEHjrokllnm|me__dc_^MJ_a\cchLMI^GQDHBA??FHGNXNIJDDFENP[[^rxrsllqmprdccb`ggsXW\\afPeU[_EGLLADDJHLHVI[CDFMMWUT\]s}npoqrlUSe`^_HXWsbfirrodhPGBEGIGFMQNKRIIUSTVVZZej}otuqqpTkPNZ[KYPTNvtrrnnmeeQGHHIIKMSULLKLVUWXW_g]lou~orwLMMLFFHHLRW񡣥kwsrsr`]VIIHIJJLOPMRPIIPV\`^^z~u~LKHJGDEHIIMRxyhpa`YQIGHIIJJIMOSWJKJL^fcd{~`HIEKHHIIGIMyhqaRMFFGIIJJLKIISWXJQRX\^]{y_GIIBGEGHHGxjpgZKHEEJFJJKIIHHNPVZYXY[`_Z]|tuw}L@FCBFHGHBE|pdcNIEFGCIKIIHMRPVOY\^]^[`e]pdF\rtzZHFFBDHHIFEvll[OPMJJHDJJHHIHMRMQPV\^^]Y\^UFEEBYp{KJGBGGIJIHa읛mliljXLNIJILGHGGHLPNM\^]]`RECCBX`|KJJILJKJgdy{|x{|w|xtdgen^Z|p{z~wfabbpqpb^p{ızq{zbcjenr}}npyy]_³dh|xufkgddptvY^PPTWX}|¶gdeskmypkdggh[WQOOTRTsqcefghfggmjxwffd]XONQOPPVevˏmke^eigdalkyvdnRORRQRS\mpfjif__eghdgjnkPPQRSQ\Y_abfdc^beeciahiuhiijQPTQ_ZXW\nfbccNaididaiihhjihiiµbdeckbhchhbb`f`cjmd_gig_afrihfùzjvigmoxuhfhfbhu{oYXggaaStpijjstrqmn{|hfdeout}_db_SShbmlkoļnornnrsqqfccupcdnZ\|doŴnvrusru{b^`gitzyrqrr}`|mvtno`b]\^ad{|rt}Zxd{ztoub\]]\`g}¿VXebykntx`]\]^]_pUYW]jiknq[[]]__jhv}SWXW_gl~u_[[__``av~~}}SXZX\ix`__`fou~}}RZY[gc}}ca_`dcho|zx}|~S^][_vs~«j~`abbccmtr||~µaa[^gqzy¿tbdbfdv{oy|}|~legkoschieiepup{{|~rqppwcnefggqzŻļ||ȴrtrrstdnnfolhnnt}{rr{vhjovlkegf¦|pttxzzoh^aku}|gdƹrqstx{l^a^uyh|h±}zsttu`ad`aqxwlw}jjllzŀssttx|lah[er}{|igxļºxy_ZaZ^oǽǵ{macYV_aѼv{\XZTXpٴþĿļávvxVTXWW^ڷǿ¿ļǼķw{߯y`STTRX]ƿydYY^TSSYa¼ƾff}ZRSTSSYƽjkdfZUVWRX[pǿ\]}|`^\VYY]mosuȾƹøȶȵWZxg\\^]bmlntƵêV`yg`a^fikmrtDzɹȿVUjfedfefmryɳžíȢ§ŸZdffgjfggwÊ^ejmillklgxǮüĪ\iuvkjjiporɸ¾¥|txzlogp|ɿɦƮȧ|uirqzɷȸô]zy홂}vyrɯÿȞdžſb}ty˙ɚ``wutþŽгǝ̄]b^´Ųŵƶ_ǸĚ˸Ä¡¿±ɹ|řѭhºħx|ʬ˄ůa¿áƺğ^ȼÛȲʹǵÞvʽdzĪþŽąĻĴȺþąȺþ񄅨û˻x{vowqnopy~f{s|xjukfX[XbtyQLq|uxxdpo}r}{yrjZVWWdesaTSgxt|x}ns~}ldnnXX^Zaet}msefooSUtww[\vupki[`\YYcgt}lNTFFJMNrp|~]Z\haand_YZ[^{zPLFDEJHJhf{|~}VXX^^]^]cv^mkYZXwQMDCFEFFLZj}}Ѐya_YRZ`]ZWa`n{kvXbwGDFFHIQbd~|{Z_^YSS\]_[^axzxya^wEEFGIGQNS|~sVW[YXRW[]Z`Y`awk\]\]FEHGUPMLPbZWXXVa[a\Yaa`{]]\\?]tWY[Y`V]W~]]XWV[VZbe\W_a_xVVYf\[Yun`n_]bdlyuk]]^\Y_kqgQP__YYIyhd\]\wvjjigacpr^][\ezmksW[ZWJJ]V`_^a}|~eficcefu{hh]Z[xlgZ\dQRqXb}u||elhkjhhq~[XY`alvpohggfrzv|Spndlkef{Y[VVZ]uqoghnvuNjZqpjfk~[VVZ`qpnqwKL[YpbdkmYVUVVWXgyqp{wvxJOMT`^_afUTUVXXa`yhnutyxHNOOV\`phtXTTXXYphnnllnxzIOQOR]krrYXX\cusfnlls|IQPR\XpsnpuzuZXXWYX]cusljglkmszJUTRVjfolz||`rWXWXX`tdakkmsu~XXSU]f~tihwxshXZX\Yim`hklkmrryzb\]adgtuX[q|}wx}_[_Zevh`kjkmqrp}}||geffls}WcZZ|{x~]]foolkn{|~~fhfgh{hXccZ{y}db^dcth{mw~offogzv^`diu|~~was`Z]\}r~аobffikm}f_TWaiz~u~mktts]Z~tx~įdbdeixscVWTi{~~xtvu{~l]qy]tnlzdeeffX[^XYixjthzwt_jq__aatutledefhspdZbV`kuymu~utky^]my{tuuyqjripXT[UXhvzttwy||swxuko|eZ]SQXZy{~||fl~VSTOSi{~|efumPORRY~~gk~lXNOONSXjWxQSXONNT\YZosPJNNTwv^_Wsw|[PLOQNQUg~wuQQpnztUVTQSSWdfjk|puux⸣NOluz|_UTVW[dcekqptuuyNXms_WXV^`bdhkuttuz{NOb_[\^]^dhmzxpuuz{S\w~]]_a^^_lõyzuzW[_y{cadcbb^l紛赳V_hi|wcba`fef趵ѱrthkqdf^entöprjv`hemryQnmΎwsjkfs|V{sxwsilsvUTyljguv׽QVRvS{xrúp~¼]w}knV~xxS{{z{izzzyz~{zz{vzz{Լzzy{侺~-np}|yhcjdaefnt\ogoyj~\}i_[OQNXjswynJEf|ngkkYccr|whqoslf^QNOOZZftwwxXMH[m|yxfolqcwhsp{aXbbPPVRW[ftuvywqchZ[deNOxiklwz{{PQjie`]RXTRQY\guvu|{srp`DJ>@DGIhfqywrrSPQ]VVcZWRRV|{{wwnnvFB==?@DCMKN~uoqvfKMQNNGMQSPUPWXobTTSTwn?=BBPKGGKvz{v}}uTMLNMMKWQWROWWrTTSSTjOSTSYPVPwz}QRNLLQLQX[RMUWUoMNQ]TRQjrfXdXV[]ezq}xylaRTUQPVag]HGUUPO@p`[STTk|{oqqmab_`Z\iyziVTRS[vocbhNQPNAAUNXVVXt{m{mppmt\]`[[^^ls__TQQma\PRZHIhPwYskpzsspm\a^aa`aivUQSVWaxjdd]\[[iqxlunSjf[a`\]rSUPONQT}ieb[\a|lk~MdSdc`\atzUPPNOQVwpdbacw~myyJLSPcWZacxSPOPOPR^jccunmlmHIFLVSSV{w`OOQRRZYwjp[`tkjnmFHGFMQUe]}|mRPPRRSRRx{b[a`bbdnoDIJGIR`ggyzTRRQTZx{{vfeYaabbhpEJHKRMeicfkpnUSRRQU[vge__\bachnFMKIL_[xuebqsrWiRRPPQWfVTaachjr͡{PPILSZtwi_^mnuui^PRPTQ^bsR^aacggmn~uyZSTWY\izvk}NQgrrnn|rSPUR\l^xR^`abggeqqvqnn][\\bgxtMZPPrqmytyrQQ[etv}saacxoqrvutq\^\]]qw_NZZPwqoyrXVRYYi^m_jtvusptd\\e\pmTVZ_jqsskxuxvUiTORQodq~qqttxНdY\\_`cs]VKNW^oyusirczcvjjiROrdip{stz[Z[[^|zniZMNK_qtsmikk{zsudRgoSxxd^[kw\\[\\yzPRUOP^ttm_i^pn{lUahUTVV}{tcdc\\\_izf\RZMVajnzwbjsxkkb|yoTRcnpytcddhfah_fzuPLRLO^knxxujjmnqpqzafg}cx~bfrz|{\RTKHPQnpyztrpwҞk~~Zcy{vtMJKGJ_wxzqٛrqynY\kcGGJIIPv~̛uss^`ubPFGGFKO||Χ`MmHKPGFFKSsؚNOf{vwhGBFFKluxw~kTTMjmruQGCGIFIM\tx}ztq{kiHHfepxjLMLJLLNZ[_`yrqqoeijmЪHFckp}rWLLNPRYX[`wxseeiinyIRdhz{WNOOVWYY]`~~iinp磈IJZWSUVVZ]bmleiinoNVnrUUYZVVa禥mnintآRSUnpZZ]\[ZWb礍ty礥QW]_rl\[ZY^^\梧ꢅij]ah\]VZbh򤥣gh`~lX^Zafm{Hebтlg^_Zfu{zwmßLphmlg]`fh|v~¦KJ~m`^[hi}vzxv׮GLHhwIq{~~uznfz{ԫervz񪩩­Tlp}acuuv{Mrjs~}~zvxvwiz|Josru|~xsrp{v{~yz~_ny{rqqw~zyz{zqovrrqqr|~{~{jxyrqqrѨvxyxuqqpoqݧytyz|an{}vswedb_\[[ZZNMWMkmmnjnfdd|}|{|{z{{~œm}heed]a\[[PWURRU`ezieedeh|~|}||ç~lhdd`][\ZORVUW\`bz|tgfeerjzx~nkjca`\\`V[SWWU\]hsyz{}ttlfes{{}֏ikkigeaia^aVXSY_\Z]gvv}v~²}k_cckyhd^_Z[Y\_]W]dqiv|¾|fbxnjlic^bb_]^YXX\\h^b~ŭi^iqorkmmcb^^]^[X]X\`[vtqu|}ðlxp{r}a^^ZWSYUtssqsr{||ƳijmiiekXWXNPJqqoqrsxzwwz˗klmjjdXZKJLONTqzxo|~~x|uvutzš o}^fni^ZXJJKMMNTzvuyz}vŻulZTOLKKLNNSxyy|z{wwvr\ZW_PJNOMLMdSzp|w~~||rʱpda[UVWKLLPS\m}|q吚ʰgfj\[WQLLMQTTn||{uwȼxwnxj][YRLNMSSPN[\zz{|yz}ʧǑjswdjedeZNSSRPOQVVx||zzy}þjfvjgsgeb\PQQTUUxz||zz}ƿŽơmputlkc^OQNNTUUxĿɶʺrurzzc\OPTUURtzw˝֘~v}}xhhOOXUUSSTagx|Ŀɚrqjlx[UUOQUTSSTUeg~ù̴Ωquli][Z\YWWTTSQQUUi½ɭrpǺxmeggaaSXVSSRSRfx̿ƺyȺqtzzmliWUTRSTXRSRUVɱ·ɪǵ|}y{koY]SSVTRURSSYȯưŰ}rvrllhfacQUSPQUUYtͽƿƻyvqt}njtfbQROSTOcqͼüzu~z|yUTRTTOPMnΤȾá~}|taVSQSQRjlβϻίvluVVUSSRS\Ů˲ΆʵvqUQVVTVſʺɸ~h[RSSWOOɿƐͷnk_WVVSЭuɳkgWWVVUU˦rrvy̐kj[WWUZ̽rrv̅rjle\bcR^ͺtqrrzzȨpookice\̿ǺʼrtrsrʗopmddRɧͽ~rrv~ʽnpkcbR}uus~ˤvkkmX[ʽнvuw}ÚtqqnvVϼ÷ϰ~}Džy|t{s`ƴʬͻ}stƎ~xx~xsr’yssɰzyuuz}rrĿ[Zxtxy{Njzw|}uuxuĴWUXZtxx}~ɲwvv{|uuxyUVSSTU`^sv}uyuuv³USSUST[]c|v}~uu{ũSSRTVSY_r}Ŀ~}yuzzȽXQSSWPPQ\|}ƮpYQQWRPOPQO`y|ȴhOPPQRPQPPWYZfhȤiQPQQRRPPUXYaa_ʷiOQQKY[OPPa_WRZsޏǛcRIIKYUOW]_RSZbjî̾NNLJIRPUNVWWRTZWZkĨƳ{dNKILLUXTNVVZWVW[kiŀǮso\RMQQUPVP\WRQVSXZjetvz|qbYNNMMUQUUVRUQSSTPZie{yyξpfaNNPNNRT]]SPOOSWXYY_wupa}o[NPNNR[[\[TOQWTXXY`{|~xyvuxomysmjiϭǚcTVUYPV^][[SNRRTXXUarssvv|q|n{wk_flS_j}wspjhm\[YUQPPEDOG_``bwwusr[_WUUVmsonlmqqmjjmq`vr`\\[QWQPPGOMKKNV[susksrpYUVUVZpmqnpqqxlmlkkoqztc_[[URPPOFIONOSVXssuskldXWUUb\jw{}qqoogsnnrebaXWVPPTMPKOOMRS_immndd\WVcjkjjssqlpoorq}\^a`^\V^USYNPKQWSQT\iijog||{omq{|ysqx{~xó|p_QXWao]ZRVQSQTWTOTZe^jnpzzztqw{{~ĴoYVmc`a^XUYYVTVQPOSR]SW}yz|nswxumwvw}쭎|||\Q]fdf`bcZYVUUSPUORUQwzec`dkyuvm||_k|z}|~dohrXUUVRROOJPLy{|cbb`bappksmwvl}}[s\`{uvu_`_\bOOGIEf}zxw`^`abhjtkj}xrjsz\^xxuudaa`[ORDEHKJKe|qig^kmnimhji}~z{pei櫏cyqT\d`UQODEHJJM~iedhimqj|{xypp{zxw|jbPKHGHHJLojxtnhkiiggqj|{yqwwp~yz|{gQPMWHEJJHEH[Ilvazpjfqnnoyrh{vuqxvy𰱰zzydYVQNOOEDEDGIP^ktqrrnti~ztxx㲰||xyzzZZ^RQOKEEDKMMaskjj}gl|zyxyzͯ|hy{wial]SSQKFEEJLHERRiijihhl||zự~~|yv[fjX^ZZ[QGILKHFIMMgiihlqo|}{xz{[Wyh][f\[WSHIHHKLLghjjhhktuw}|^~w{bhg``XTFGFFKLLgvszvmvvxx{|{xchfooZSGGKLLFchfvxnw|xyyn~shrrn_^FGOLLHHFQWfjq}}vscbw|s_anRLKFILJHHFGUWno~}xxvrcfs`^SQQSPNNIIHBBEEX{zwwca|kaY\\WWINKGFECDEVh~~xj}dfnnaa^NLKIHHKDECFH{|zymnmn`eOSJIMGDFDEEDK}~uz{zvnejfaa]\WYCGFCEGGLfsɻxxttkyiehqd`j[VDFCGGCUc̼|||mjtpqoIHFHHDEB_ŶrtsrjWKGEHGF\]عr~wul`jJJIHHIO宩rpq깸|tuukeJFKKJKn}}~~ssu\OHIHLFFw}z|za^SLLJͻevo|{|~{{q^ZMMLLK϶vddgj}{z|}s]\PMMLPtscddgu˸{z|}ud]_YQVXITgddk돵||z~}bb_]XZS~wegefd𶆇}xzw~qcebYYJ߶{reekt趩xwwx}bd_XWJstqskjguzyxwwz{j__aPRnu諨wlkmruu뮋w}xxifeckOϪtswznmwwwxzxul|qiohXz{|}umbcu~wwzwvsrplksrlhgzy|sjbbוּwwyvr|lkhhnqgg|x}LKurichhk|wxxslyhmnhgmjJIHLd}tihhmnq}ighlmggjmJJHHIHQRqcfpr|~ogkgghtIHHIJHIMQW{⎑lpfs|}npggm񩱹}xHHKGMScs~~nqs|{çonjgkql{{QIJIJNFHDEOq}lrps|pnsu~ygSIHOJHDDECSjp}stvv}~~}rnx`IIKGEDEKLLXYs~vuvz{|vaJIIKIDDIMLTTSt{{v{|zxswzv`HJIJBQSEDETTMIOf~}~~y}xtts~t[LBAACPMGNRSIIPV^|||~~y}{~ytsv}GHFCBJJNGNOMIKOMQa{zz{||sttruq\HDCFEORMHNOPMKMQb`~{{z{{y|yrrzjfTKGJJOJPJUPIGMKPQ`\~|yzyydej|yzsrrqhZQHHGHOKOPPKNIJJKGQ`[~}ujiixq~ìrrwtg^ZGHIHHLOWVLGGFKOPQQV}}yfd`u|~yS휙~rsfTGIHHLTUUMFIOKPPQWyjkmghedg_]ic}||`][{x~|[MNMQJPWVTUKFJJLPOMVzdeeeepkal^u~xwoj]QX^KV`stytr|{mjha^cRRQPNLLKK?>HCXZZ[rpnlkSWOMMNejhfdeiie__bex~|VkgTRRQMRMLKBIGEFHOUmnlcljhQMNMNQhwdhfgiipdebaade}~oxhVSQQNMLLJ@DIHIKOPlmnlcd\ONMMYSaunwrthigg_gcbg~vYVUONNKKPIKGKKIKLYbddbe[ZSONZ`aawzjjhcggshfyr¡pOQUTRPPVONTKLGMRKJMT]^^c\os{qqedgqr|ojhorwu~ltx}~¡xocRELNWeUSMQNPNORMJOQYR]czxwfpvzupqkhnrsvw|vqtvszԢbLJbXVWWQQVVRPQLJJKGQHLsxyrnpreimnlcnntv{ssyz{}sopoNER[Z]Y[_WSPPOPMIOIGJGjw}xvp\ZW[aolmdv{suxvwu~t|oouQ]omqpsZf`jQOPQLKHJEGCmsrrZYYWYXgfbkdnwju`vq{}wwzrpMeORyt|spjjlWYXV[IHI?@>\qponWUWXY_akbaske^go|wwrOPi{zsx}txkij]YYUJJ=>ADGE_tia_Vbdf`d_a`splmdY^}y|sr{sTuoeJR\WOKF>@DFFHwwb]]aaeiawxvnnklddz|xstwvnonmr`YIHDBCDDFFjcqnhadccaaiannldjjdyqnpsq]HHGQCAFFC?CUCfq\tje`jggdneZmhgcjiku易{sppqp[QPLIJJ@>?>ACKYzgojjkdgXpmgjjt}|uproppqRSYMLJE??>FHI\ngffeu^^wsomljklszrw\orn`YeVNLJD@>>CHC@NOeeffbce{sonnlxyvtuspxmR^bQWRRJ@AHGC@DIIcffddcfgesyqnwsrpqrRNq`US\SRNKBDDHIIceecejikpts{~s}x~UumrZ^]WWPL@AAHIIcpmtphkjllw}r~~~zrsqnY^\efQKABHIIA^caqrhlqmqqpruyvu~wmmn}euth^hheWVAAIIHCDALRadhrr}{~qrpqsuy|shgYYmqiVXeJEEAEGFCCABPQeftrm}zz|~trsrswkjfY]}iWULJJMJIHDDC==@@Rvqwrwqw~}srsuwxjkZX|rbXQUVQQDHFCAA>?BRayv{{~}v{ppkv`|r[]ehZ[XHGFFDDGABADFs||x~qoodfghZ^ILEFICADBCCLvwoʥkl~plg_d`[[XVSU@FEBCHILamʧy~k~lwikdpd_bj^[dWRCDDGHCT_򧦧t~ڨ~up|wqrfbkiigFFDFFDDA\Ģv~rx|x{p|jvjjibSHEDFDEYZ}e}wo}srpojjcXaGHFEEDELzecdqoppnlzhija\ECFFGy}bŦooyykkm{pgfiRICDCGAAnrpvyzy~jpookkpzlyVULFFDЊvtzp{zywXjrannklmnrln|eUQFFʨ|zz}|}lWWY\nllknxqrqogQPHFFM|zy|~|{ihVWWYfzkloostsiYQTOIMPCNxZWVV\\~vwqnnq~rWXYVUORM|tmX[XYWxyyupknlswfY\YQQRGԤw{}pfXX]ewrsmll񅇅tY[VPOGড়x}|xeg]]ZfynmmklopaWVYNNagk^]_dfe~}lrmmvua^\[cL}geujukpt^]gllmomjcsjagaSzmno{~tnev]TVeɡslloljhhfbbjjfaa{~mmww~}md\TT❦lkmjgqb`^^fjaasvplztIH}fc[U\]`pkllhan]bc^]dbvu{w|yHGFH]{|}qne[\\fgkqux][\aa\\`ezGHFFGFNPs|~hW_iluuzc[sx_\\]iGFFGFGKOTtzel^ovuv{bc~\\cm}qFFEFIDKQ^mtugmowxqbb^\ahckk}NGIFHLBF@BMyjs{ckjo{sxxd{cwikpiwx`PEGMHG@AB?Pejvkmrrst{~qpid|vuuhy}YEFEGHDBAAHIIUVkysyxzsssihxlvusrlmokYEEFFHFAAFIIQQNjpq~~{vwrsi~opwzwvnkhjlkXCEFF>NOAAQOGBG]~~ttpxvuvt|ssm{xrtmhigqujUG<<=>KHBIOPBBHOVxvroopyt~smyrpsnigiutAB?>=FCHAHIGBCIGM\~poonxz{trrthiihixgVA>=@@JKF@GGIEFHLz][{yspponnlostxzyunggnv`^OGCDEJDIBMG?@EFKM[Wzu|qnonl[\`wqnq~uxhhffe_RLCDBBJEGHG@D?DDGBN[Ww|trkay``vmhuvv~ĝ~||sgfki\USDDEBBFGNMAA@BFKMNNR~z~ssuoyu^ZWlwrttwnJzĎytrgtg]NDEDCBFLLKJCACKGLLMRvo}abc_`\[^VU`ZsrquVTuQp}lrtqTIHHJDINMJICADDGLLIOpYZZx]]gbXbVltmme`TIOUrtnok~w~mltv{tzq}mnqlpps}ttmm{jjm~ou~rqqr}mowyxopuupptwrouqxov{pkrnppqrqststwsnyrurkzpptsurrqnxop{supuurrvuty{y|stuutppzy{zzxx{v{xtvwy|vzx|zy~tutpwinqil{~zwmqqhxuwuuzslifrjouvzmklozxpz{𞜮mloowxt|vkklputy|{}~lopquummr{uutxwmmpoxtxzmmqtxvtrqrsmmfkjtzysqpu~mjiqv}pjjiy{zx~||zor~}~{~zrrsun~}xttstsvnysrswuosu~}lxsuuoy}ztvpstzyz}{surtqvprvyyx|w}||zqql}pvwmnpmxyyqqws~szpS]htpptoprvvopo{{R[gqqpooyxplRQWSpinoouy{tR[SX_knnot{{y|WSX__Z]lrswVQ]_YZbcqtz}U_]VQXbjtsu|~XTWQTRR[t~SOTQPQUSh~{}~TQSPPQS_g{~}~_POPPS^fh}}~`iYOPRQ[Sfrnl^RPUQPPVqxnm[RQSPPRYw|}trooaRQRQPRSYu{vvrq{qu]USRQTQQUR|uszv~zylVSSPQTQQeen~}{w|pjYVTRQQWUX_bׯrqYnSUQQWWV\|uvwrnZUXXYd}w}vuiywxrpiXXWXWj|puv{s{mnheWWSQRRVhsrkss{fnmqgheRRW^sklrpuxnrjhhdYSRRS\kqlloz|vjligUTRRX]njqlrotsvkhfeRRTXimitq}̹ɉwwmiihVRRSSTTshdftǑmnmkihRRSTUPixmy|č}qjiigTTYUXOTvy|y~謑wnoikjWTXXZVUikyy|ɑxwnuf^VYZZ\gv{ɔz{w^TXXZYie|dgab^r~kqbai~|kpj{ove|~o_^dxtsta~vgfjtj~|~{d^^n^^bqdvwxkshhit~~p^`ilmdekkyefjyniely~bibioe_gceffghggjjik|heamfjg`pefihjgghdnzxabsnsz}yhifiigghglyggxlnvmphiihedevmlnlmllnxjolvhvikylnhlkorvuummrhihdvui]`b[]mpnzxzj~xacc[ifh{ghzmfb^Zd\`fgk|yxa^_aki`kl񍞉`_aa`hhwemly^^_bgdjr}~~mq{qq_bbfڌ|ut^_wc~l~{{s}rwhfehhzuty^^_baixzfikoz^^_|cgkz~{gfdbbdop^^X]]qgutsyumtkecaem||}^|\\suzzy}xwwybf~mrooq~c]]\lw{v~tnjstirmpllorkzzbytuwx~{xwpxyxrpoxz{xuwcytnomnkrnzylcddf_~}qtxx{|nmrowjvddecf_t~}}vurpj䗔dcdfe`cfqp{z{yvs`mdfee`h|tpnryxvjkaddhhittqnijhvjgm~acfhhgmhoppnihctgnnf{|}y_a^ghhcchisjpxvzwh}|yIQ[dcfgdeil~iw{hhgrrHOYbeezulkvhdzyHGLIe_deejysylmyltHQINU`cdeiprulknn}NINUUQSbggkyLHTVPQXXfhlwp~}KVSLHOW_hginoqrrrPKNILJJRhwvvnvsoKGLJIIMK_ry|{klnnMJKIIJKV^vqkvmmnVIIKU\_xwmtmnW`QIIJJSK\g}{n|dcVKILIHHMf~}}~mecRIIJHHIPvlqqvyxfzzgeeXJIIHIJOjokk{|rted~ogjTMKIHKHHJHoji|wxzynivuqnnaMKKHHJGGZZdyx}~ttzqnkxrxpe`OLJIHGLJLTWy~yף|u~gfMcIKGGLLKQqyzwvjklgdOKMMNXqnsjivu[wvnmmgf^MMLMML_qcjjrtrx~xpipbc][LLHFGGJ^}gf_gfmYy|rwxdbf\][GGFFKSg__ebgjz{rtdg_]]ZNGFFEEGQ_e__abl~xpwk`a^]IHFFEFMQc_e_eafeyv}uk`][[FFIL^b^he}row|lkc^^]JFFHHJIg]Z\s~~f{bcc`_]EFFHJLG^la}ln{鲀rg_^^\KHPLOFKjlolpu|؝lcd_a_MLOOQML]`mlo}vllck\TMPQQR\jn|}{nomvuTKOOQO^Zo[^XYUiubhYX_twsae^pcjYprfVV[okjkWu|{mv[\^h_rprwo{\UUeUUYi[mnodvj^]]^thrrvxxgUW`cd[\bbq]^aqf^Z`myxxuYaYaf\V_Z]^^_^]\__]_}xxyxx~t`]Xd]b_W|h]^`_`]\\Xbmx{{xyoYZkekqup}`a^``]\]\s_{|{{yp^^ocemdzh``__`^YXY|xz{wmdcecdbbdo`ebl^k^_~x{{oce_caehlkkcch^]\X~||jk`QUXORbewt}do}mn}_smVXXN_Z\pw\~~\oaZVQLXNSZ[_p}nmurTsPQT_]T_`~~rQQUTTU\\l}~\zet]jPPQV\Z_w~vhyvtuueubkdeRVWW[[qjjxx}VVo[udvnklfqgl_[[_^~okkyoUUVZYav~szor^`bfq~VVtZ`cznwvs`^\ZZ[ef~vw{VUOUUj`jihpmemc][X]drry}tVtUUlonwppuqopqZ^tc{hef|hv\VVUftlqmvxlfallaiucfbbfibss[sxjjnou|}tpnyfnnhfeoqxtpwknZ~zwy}njcdcdbierrcZ[[]Wvyugjmmqqcbhfnbo\\[\Y\VzjwtrtrlkhgbÐ_^]^\WY^vhfpopnliVb``_]W_tkgdhnnl_`z}]`__`ljhe``^l_\bt]_`__^d_egfe``Yj\ccZqqrn[]X__[_`iy`enlpm]rqxnuDLV^]__]]`xcyxwu`mwq\][ggvvwCKT]_^]]^yzyplbam]Xoo{DBGD_X]]^b|pjpbdp|aj{{DNDINX\\]_fwgvkbaddvyx{{uJDHNNJLY\]anyxxt|y{{GBNOJKPQ[^bmexx~}yvuxyyFPMHFIPV^\^ddfghwwvxyyhKGJFHFDL^mmk||}cmjeJEIHFEGEWip}{{{wrq`bcddJIIEFFGOWmz}|}{f`kccRHHFFOUX|vuwlkbhbcSYNHFEDLEU_tvvwx{uuqrwswnco^\RIFFDBCBG^wvxyqqssowxxttpze]\LDDECBBCJvmbddhjiuxxYvkka]]REDDBDDIbgaaoqruwvdfWWpe_bNGFDCFCCFCg`]zrlkk`\ggfde\HFFBCFCBTUXqmsthhslc`\igmg][JHFECCIHIQTrsnזzojrt`_I^DGCCJJINk|znnlk_bda^JHKKJKUkzcia^kjP{lkcdfa`ZKKIJLJ\xhZ``gigmsle`h[\WVIIFEFFK[w|]\U]\bNmpflo\[^VWVEFEGGHLRz{^UV[X\_nofh~\_XWWTKGGIRxW]VVUWXaqldmeYZWVIHHGHGHLR[V\U[W\ZmjqkbXVUUGGHGHMWZV`\shemqbbZWYXKHGGHfVQSkvu\pzZ[[ZXHHGGFE?Vf[wfgvq櫬wj_ZZYXFHJEI>Dfhifilr欒zd\]Z[[FDHHJFEY[ifizytned\cWMEIJJKWfkt{usfgemlMCGHHJIYUjļЦvuxͶƜ߀ּʹxsxҨúſyzҔƷ尡DZضɺʼؾ؉ª̾֒ܕƚԴǭ͹𗖸Τ䇈ǵҳ٬ѩе~}ȿɷ°Ƶг̕~̽˲ͬԛн̿˻ܵʹøݺɻ ՝ܹɓ퓘ܞʶǬހֹ¼ɾ±ƭά؛üʾʵزїԮüʿѷ}ŵۧھџ}}|ݷúݱϦ||ٻɮƿѰԐ{}||}֜ĭҾ޴q}~~֪øq|֬ttqĨ߼ҹѐքĞstyɠyү~ԻԜżӰ~ٷ󏚨Ч}~s|hxhjȯźjxzfjěеѻþzklŅɷ堓͏qɨɯ{ƄȄĴut{~äƽ흄|uvvrrxyƷ{pprtryǹǮrrq{zɹʽҔĊywuwꙛ̥z||ͩ||{{ċͪ{{탇̼̎{{~΀lƩƹö~NjȢÈzyzwüßy~ó˳ĩyvwtvŶ͙ƸǿʮēwxwwttsϪХěuvvssxwˮ}ĤȆrsstxȐ®¾ҧfy}~yttuzȞ|w~{¿ô|fvrx{~wvyxɟxusx|ȷihfuuvyv}yzͬëĄ|zwy~z~ŵghoxwxĿ{{||zyʸòmzyá}}~~r}yƺϷĭƏá|}|{|{rɪ|򂍚ſüymsm¾tgp^m]`ƾ||y`ln\`ÿ}z{zznaawžڿx{zvf麹vtŽpy~zyws~kxw|ywz|vsz}x||gelrt{um~zz|{}ynfggddkru{~ώyz{mbadedqkz{䎑zddcdmmy~zxlljk|~࡬xxwxoٿpp纽~zsÿppzľ{voopox|zߨtopuzrz}~zyutvvrywux}ywwv|zjijxgxlqxzu|ifwxgdgstyvvuggfgdd#q}{ztwuv~uehfcdjhvotrwvµzvzbddcgksssrrsvxy[snqsmgiijoniprmvrt~w{oYjflp{rlinmjgejrmqrssĿw[[YiijmzukrropvnlikplpqqsssZ[blkl{pss|xxnmrnoullqquxoy`tmwhrvztpp|ppdoksxv{qnpnnom{d}s~zxxyw|kڿqjjkllmnppz̾ɿȼĠjigailjlmi}Ƴξke_fa`bkbfot~ȼ̥oojd_`ede_``dgʤ׵ifbc^d^_]\]_nͷҪzz}ˑjbcgcc`^[ZZ[ɳֳz{zzʗbeagbb\[ZZ]̰ȃz{zz}Νnce_ba`ZYZYwʞƷȥz{z{zxmafd[ZZ[ſƸ}wy{xvoll\a\ZZ[¨լļúxwxw}pljb[_[ZZY\©Ժwxsvwx~}xoikhbchZZYW\ĩv}zrjkk\hhcc[XWYk¾¯|{dmiijkhibbYZY^xϯÿoiggkjchdc^ZYXegȓù»nhffcjjggaZ_ZYY^mβ¼ifccfjfeZZ\^]V]aδν;kcfccfikh_`__Y]]`˳í§jcfgiihlc_^\`a]bj˸ɲİbideeoopd^Z\Ydadrǧżmybbdptooj^]\YZaf`pŠŶlnda`glmtnv^]\[[a]]^j_Ǡ҉Ķfd`h`luqwxkfi^Z\Z]]UaȻʻ¾b]_isr{|z{yxihd^^Y]TUXaȾyzÿ¿`bhkls{yz{r_eYZZVTTVZdɸx¾pdfioow|}{wmji_[TVUU[hӪwwvʼdksrjrs{~z{yxwjga^TUUVUXӸss턕ĺqhnhttrrwxyvunccWSWVUWX̷tvpp{ù𳪞zibaabbcdenЯ~vba_Z`babb]rÿyzd^Y_ZYZbY]disŸܻyyhhc^YZ^]]XWW[]ùƤvstvb`\]Y]XYUSTVdżnnqc\]`]]YWTQQPRĽţnonnt\^ZaZ\SRQQS˸vnnqg[^XZYXQPQPlvnnonz{~oeZ^\RQQ|巩rqilmilecbSXSQQPR|}ѳkijjw|tzfbaYRVRQPPOR»|}ʿĪhkdmnpusne_b_YZ_QPOMR|{}{m~spi`baR__ZZQNMN`w}w}srZc`_`b_`YYPPOSkvw{e`]]a`Z_[ZUPPMXZ}wd^]\Ya`^^XQUPNNRautu`\YY]a]\QQSSRKRVqvy}`Y\YY]`b_VVORRU{|~wz}|Ý`wZ]]_`_cZVUSWVRV_øuX_Z[\fgh[URSP[W[gľcnWXXZfkgfbUTSQQX]Wgx~|~ſbdZVV]cdkenVTSSRXTTUaU~{ô\ZV^Vakhnoc^aURSQTSLXvy~~|uzľXSU_ihqsqsqpa_[UUPTKKOT}~ii~x򍤥{VX]`airowrriV]QRQMKKMOVf~vxrxfZ\_ddlsytroebbVSLMLLP]Úerqfe[bhg`ggpuqrqpoc_YVLMLLMLOèraarvi_d_ihggl|xvqqnmh[[OKPMKMNbe^^jڢka\]^_]]^[\d֟vtqtuwwzygZZYT\_[[Ugwyrlmuu|wut~u[VRXTST]QSZ^g浫vrlltv|xr|v^_ZVQRWWONQTuЕ{uhegjvttYWTVQWPQMKLMZwt``c~vw}ZTVYVURNLJJHI{``__f}}v|~}ySWSYSUMKJJK᭔g``_cxtz}_TWRTSQKJJc{g_``jjxmvg^TXVMKKJ񢳲vsݧdb[^_[srtv{we_]]NSMKKJJL{sztѣ~\[\\wglyer`][TMQMKKJJMrtyZ]W{]__w}glg`Z\YTUZLKKHMrq{wzzqoyx^xmljc[\\MZZUULIHJYlszuitmvuw|dctsT]ZY[]Z[TTKKJNcvk{yinyvovvu\YWW\[TZVUPLKIQUs{{{~jz~}z~\XWVR[[XYSLQLJJNZ}||ihttzi~zZVRRV[XWKLNONGNQ}}}|zsejmq~͞zYRVRRVZ[YQQPQKNNPqq}twwskosq{}XnSVVYZY\TOPNQROQYuyxz|xz⍝~{{lPXSTS^^TOKOLUST_ryxu}ĮZfOPPS_b^^WNMMKMSXQ\kxqot|沯xX[QNNU\\b]bLLKSQQOXMxuxxqow}~ԳwSQNVNZc`ceXTVNJNMQQIQkpsqq}sko~{|}OJLWa`jjghfeWXTPQNQHHJPxyp}~u^_sl{~~}{qNOUYZbifmgi`NVKNNJGGILR{v}^unnhlywx|uy{]RSV]]e|jpkgf][\QOIJHIILV]ji^yy\x{z{}{|}|QZ_^W^_hxlgghff]ZUSIIHIGJyjZZjzzyzz|k_V[V`__^crnkggedbXXLHLHFHH{Z]VVa|̶ٚњþĭδ½ǹ͵ţ̮̳˸ļxҼ¿½׹̢ȹĽóղŝ׸ҮȸβԺy׏ƭՀxxzǩԠwuxďͶtwǬ욒tt~ȧٖ|wrkku~ĎبöđxqnngvǮВŖxicdbfmȴǶ¾ɫsjbcbdcmxǰƺqhecddcidzıïvtsmcbdaa򉨮҇»ǽsuccb`cű¼Ɨtpjfdcfuȉõnlhddc׉ǾѲꍁrljhgcfpړƿҴwfjgeij~ǸԳvnijk{釂~ŶϮthkk㛩~~zʷ΀Ūhf}koľ~~~uqɣŸvĉ~|~zt}{̷Ϳ¾yw|ÿǬ{zps{|~ٍ~yuxtʸ}{u~|~}lzzî¯{|{Ȫ¾~}|¾¢yz«¼y}zxÿ¿o{xyxz‡nnow{xx}pqww}|plkm{{zyxpqpxxpq~{zxv|t·ykm{}|{vrqspty{xyxs~wḶxjksz}ss|oxwwnvohaajr~otwvw{ؙüxpged]j|󺶷uvu{{׫wĻxp`ZZY\b}~uvvz}{jaXYY[Zbl|{|uu}ڃĶ~h_[[\Z`xx}xuuzz{Ƶmkie[Z[YYswwxxwuuwz±~jm[[ZX[uwwx{{yź¶~lhc_]]^iwwxww~}~{vfe`\]]sxxwwx~}x}~x|¢xjdba_\_g~{wwyyxxvttäo_c_^aaw|yzx~wuwut}tuuţnebbcruvv{yx~||wsrsu}xl`ccdw|{yzp}}{{||}|rrtxvnt}_^vcgzz|zz|z}vy{{{{rrus|ie»|x|yyz|n|{|{}|ws|}{yx}zwrpsphqou}|{y|zzo||lpu|~yz{zwuqoegpqsv{{pslhlhʩmst|x~oz{}|~vttivonsl~q|xy|z|uvumwy^nnwzzz}wxuvx􍎗î|yznpo{~vwxooz~sréypzxvkwr|{xwnם~jxwpmpq⩘yl|wvvcz|wnllkq~l{w}}|svbbcjvxplko`ahhnplvubvss`_bppuunll`aaih`aonkjhf}snfwv{{us|{srl_aprpzvogcbdaditkhihcoh|uxx|ᨦ{}}zsk^_gorttwccl^qqohgo}}xh_|}ysx}~shb\UU^gxt{n}~o^dgfgk{~Ɋ~ww~qrvw}vkc\YXQ_pyvwsdfekkrhwrryzldTNOMPWrzvtneffknkr~{r`VMMNONWaqpukfeenntu{z{~r^TPOOPNUmmsuxviffkk߂~caaZONPMMhmm󋒖t{hffhqk~|yruacPPNLPjmmqŖvsy||~k{zxy{zzutqsuc_XTRQS^mmɀtvqrst}yzuuytsu{xyqm]\VRRQhmmntrqlq~zpjm~xuxurtttwwoa\YWUQT[spmmpymll|tigg~}v|rtxrquwwteVYUSUUmropnx{rkikihpsghh}trxtsrruve]XXYgjkkpon{sqpqpk|ffh||o|xsrvncVYYkqpnof~zzrrpoqpqpeegkziae|sqpurUTjY\nnqoorwptrkmnpooeehgo\Xu~rqwpmqnmnpbqpqqrqlgpqomlqmjgdgd[ecjrtxxvpompnmnbqqt`dipqmno|nkifdX\fghjpvm__^TSRQQNLLKHJIJ]_``[_ZYY[Z\mwla_^^fpporswnd_^\\XRRQMLIIJYdbb`^\ZZYZZ[nyU]c^bdlvxonrrvncb^\\QQJHHIINbdd``^\XYYXXkysTXb^ddkl_moeeq{nfnj]]RQPJIHIIfcca`^^X[ZXXylSVW_^[ekkldgijxrqoif`TWPOIIJIJJOZbb]_][^WYXY]|wfUU[\d^_tldcejrrqod`WRTONKILLKQWY^_`__^Z[WYd[dWTVUWX]dehmffcjyysrpolYTSTQNLKPPOUX[\]^^]XityUSWSXSUW\\igcfjifyvst^\WWVUULLONNRPQ\^Z_[\^[\\`][SRQQORSU]\[]]`jkdnkww}qfXWWVTSQONNMOIRS\[X^]^^Z]dQOPPQT[\Y`gdnmqo|xww{fYXXWWUPPLLNLJJKZ[[\b_Z]ipYRPQPOPQQ\]]\_hcfholkxxi_YXXWWUUQONOMMNMQSY`aa`\[\|͕vXRROOPQVd\^^_`jhkni|xxsYXXWURSQNMMQPPQZU^_\[]\_ü\SQOOPPgmea^^]clklp{xx{bYXXWYUTRQNPMMKMLMPUVW]\[]\\`ĹSOORq}qe^^\``cfle{{z~[WYXWWTUQNOOJJLNNROV^\\[]\iRQPUVWk{za]\cb^edb}t]XXWUTPPKNLJJNOU^]`[[\bcʎqqmz~\\^_cceg||{kjWXTRPPMJKJJPOOPUX]Yb\]]XYa[[]`bbdg{{ig[XSPOJJLPORSTTPVU\dZZY_Ïc[\[[ba_dhxeb[]TQQKKJMPQRROMMQW^YY_pǩ|_Z[[^_adegsi_\SRPPLMKLMPPTQNMMPSYY_[lbΫ}a\]]^__deh~{U\[RWRRNKLPTPRNOOPTUWX\\Xxȶygda__]^bbde}YcU]VSWRLLMTTZTUWPOORTWXXWX[Dzzsl\\Z]``^cfycdV[RTSSMOLV[\[XQOORWXXZ^vʽvhcX]\]\]cd罼_ecb]RSRQTPT\]Z[XVQOORWVX\eʾȱza_[\`\__cuebb`VRRSYVXZ[TRZSRQQRORWXY`̀ɼmg_XZWWV\c{~hs`ca`URRQaZYcXZYYTQROONOVXX]^_RQSSRRZZr~ighhaa_VTUTSi_^X[YTSOONMNOPSX[^^ccwkRRPQTXY~bb`_^_\[USR]]^cZXWWTRPTOPONOR]_aZ[\\jròoWRPVUY\eca`_^^]YTTUXW]^YXXV\SRSQPPLLN\ZZ[]\\]]˸rRQTU[[neVVUKJIHIGEDDCDCCUVVUUOTQPQRQSckbWVVW_gfeghoe\VUSSOIIEDCCBQ[YXVTSQQRcoMU\W\^epqedgfxmeZYUSSHHCBEY[[XWVTPPQQP_lgLP[W]^eeXef[Zfvre]dbTTIICB]ZYXXWWPRQQPk~aLOPXWT_ddeZ]__wvoihf`]WKOJIDBCBBFQZZVXVTWPQPQSok\MMNTU]WXmeZY[_wviihf[WOJNJHFBEECHOQWXYXXWSSOPX}}xRZOLNNOPV]^ae\[Y_ppiiffcQLMOKJHEKLHLOTUWXXWWVPQ]h{tnMKNJQLMOTTa`[]`_\|qomjkVTOPPQQHHMKKLKJUYUXUVWTUTWxywzQPIHIHFJLMUSSTUWbb[eaujjksh^PPQOMLJIJCLNVURXWWQTyvqqWFDFHHGLLSSTQW^[edhfnkjkq^RPPQSSNNJJHDDEVWUU[WRT`~}aoMGEFEFGGHGSSTV_Z]_fcbkk_WQPPQOMLLJJIIGJNSZZYXTRSrshMFGDDFGGM[SUUWa_be`nkkjQPPQPLJJIKIJJSNVWTRTSU}PGFDDFGG]d\WUUTZcbcgmkkspZQQPRPQOPKMJJFHEGINOPVSRTSSVHDDIhth\UUSWWZ]c[mlmstuTPRRQRQROKMLFDDFGHLHPVTSSRSR^FFEJLNbrvqYTSZZU\\Y{zwyrlWRRPNGKIDDHGHINVUWRRXWfgdquTSUW[[]^xvvrrqccQSPNONNJEFDDJIHJORVRYRSSLMYSSUY[[\_|pxutqbbVSONMFGFDDFJILLNNJOLSZNNSұ[STSS[ZX^assxm\ZVWPNNHGGDDFJKLLIGGIMUMNScݸzsWSSUXY[_`az|i`XWONNHFHJJOKHGGIKPNMSO_UysYUVVWYZ^`browMUTLRNMMIFGJOJLIIHILMNMPPLkn^[YXYWY]]_`qQ[NWPMRMGGHOOUOPQIHHJLMMKLOԲ{ohcUUTW[\[^amw{[\OUKONNHJGQVWVSKHHGJJMMKNRh|zk_ZQWWYXZ^_wV][[VLMMLOKOWXUUSQKHGGJMKMPXs}zpYXTW[X[Z^xm][[YPMMNTQSUVNMTMKJIJGIMMNT|c^XTUSSQW^vlq^jX\ZYPLML\UT]SUSSMJKGGFGMNNRQSyNMNONNUVcuos]\`_YZWONPONcYYRUTNMIGFFGJMPSRXVmaNNMMQUV~pxVWVVWUTNMMVWW\TQPPNKHLGIGFFIRTUOOPQ]ddRNMSQVWZXVWVVRNMNQPVWSQROULKKIHGDCERNNORQQRRyiNLPQWWd]QQPPFEDCDBA@@>?>=LMMGLJIJLKMY`uwwuuy}XLKKLLU\\[]^e^UQONNJDDA@>>=JSQPNLLJJKLKL[svzzuseDLTNSU[df[Z^]ld]TSPNNCC>=>>=?PSSPNOMLKLMMXcv{v[CHSOUU[\NZ[QP]kxg^W^\OODD?>==>==VRPPKLMMbw{zys~}UCGHPPLUZZPSUUkke`a`ZXQFJED?=>=>=AJRROQPNRKMLMMg{zx|y}}^PEEGLOWPQbZPOQUkj``_TQIEIECA=@??CHJORRSRPPLMTt{xtv|vkHNFCGHKLQWW[SROUtee``^][IFHIFDB@FFDFHLMORRSRNMXbzxxwqvibCAEBHDHIOOZWRSVVRocda_aMLGHJKKCBHFFGFDMQMRORSQRQSpxpmpGF@A@@?BDHOOPQXYQ\Xg[[\h]TGHHJKKIHFEDE>EGONLSSTOP}љomhhN>=?@@ABEENNOMQVS\[_]_\[\dTHGGHIJMMHHEEGC??MOOPVTNQ[uusXfD?>?>@ABBNOOPWSTV]ZY\\SLGGHIHGFHGFFEBEHMTSVUPNNiyh]C??>?AABBHUNNONOXVY\W_\\]GGHGIHFGGFGFFMISSOMONOrH??>?ABBW^UQONNKQZYZ^^\\d`NGGFHFIFHFGFGDEEDEJKLROMONNM@>?@EEal{`UONKNNQTZR^]^ddfJFGGHJFEGHDDEDCFCKRPNNLLKT@A@FHJZim||hPKJQQLSSPpkjgjc^LGHGFGFFDFFDDBDIRPRLLJONݩw`b]htk{{}}JJLNSRSTVphffbbaUXGIGEFFECEDDGDCEILQLTLKKFG񫬫vtwv~{zPJJMQSTTWmbheebWWLJFFEBCBCDFHDHIIDJDKPHGGLzyu{{xwQKLKKSRPWYveekaRPLOGFGCCDCDEHIIGDBBDLGGLY۪zt~}nhMKKLPQSXYZmsr_XQOFGGDEDDFHHJFBBCDHHGLIWNގ~~}lgPLOOPQSXY[ytgfmGNNGMIIFCCHKFGCCBBDFFHJJFbxdTRPQRORWWXY{hJTGQKHNICCDKLQKKMCBBDDGGFHpe_ZMMLQVVUXZcmqUVHOFKJJDFCMRSRNFBBACCGGFGKa~qobVRIPQTSTWX杜mvOWUUQFHIHKGKSTQQOLEBAACGDGIRjxroygQQNQUSUTWؗunfWUVSLHIIJPMOQRJHPHEDCC@AFFGMwq|\VQNPNNKPWi`gVcQVTSKHIHXQPYNQOOHEE@@?@EEFIJKzpyHHIJIIOPVvrichSRXXSTRJJKJJ_TUNRPIHDA@@A@BDHJJONw{|f[HIGHKOPurtsemMMLNNPOOIIRSXPLKLIFBFABA?@AJKLFGHHTZ}_MHGNKPPPNMNNOLIILKRSNLMJOGEEBB@=<>IFFGJHHII}scHFJJPPsvvx~||}zgchhfebchjgjknoryswusss||ÿynhilhhed]biead`illpqswrqpuroiilhghhje`l{dcdciioxqirroonoq|lkdaeaghijgfbc``_cemkuuqronqon}t}pos{ojchfh^kklklb`_a_agkklxuxcqrqqnoonqs}tqqmhlgghjjf_fmddcf_lbflpqmokqoonpnoo{imjiwiijpuvlddcjehaa`bcjkpsiljmiinqoo{wtterzjpsvutddhdijlrpkqmtskkhhjnqnqq}⻼|rqsmkp{xcmfecchbcidnnqq~ntjimmpqqwuzתrypnrrs{{zfe_ccddjecqutwzktjmmnowzsrqrworppot}ezbccdo{]amovpdjilinoowyxuv{qppqpoq~uyqbo}zxnltvpseafabmmoor{wu~qqppqmvtrvk`elwuvvddswbcbbabnmnnrwx~ssqvzt|nkjrnckk_qxvvq_bswwyx`eabbcfllfpzzrx|qqrqrturvzonrjfjivyvvzpmhzxwxxpehabd\fhemstzuuzzsttwvsuyzyliejiidvmzyyomkvqsxdedfdabceemqpvvxxvtwtwupsx{qsrkirvzyvm{uqyeffeccb`behnqtuvvͺ}xwtuussnonsrnoqkiwrw}outhigxb]`cajwpkstvvy}~uuso|jnstssv|{uyxxstsueywxr\\_fegjouuvvwwxttouttsuz~|yzutsruzrtfiirk]`c`fcghdswsx{}yttqttuttv{~xwsqmpsztrdgijkogcabhgvnmsvuzz{uutrv{yyxoqrpprdfjkjiicdfgehowuvz}zz~yuvwsqrz|yxtrqmfeebojjlgfdhihijkps{}zvvxqwzzxwxmmhee_gkqlehghbkhhimmyy||z|{}yxwlptifee]cppuc_^``khkmqyy{wpenx~lrtxxkdde\`wn_eddhlqkwyy|unkeelw~xvsrywqpmceehqjdkhggiovswxznolhjejsrsspnqrtqptolnfgmkqhjitlrppoyuupxx]X]^^]\[XY^`]_`cdfnx{gjiggshppov{d^_b^^][ZSX_[WZW_baewxzfgkfeejgdxӬ^{_a^]^^]_[VbqZYZZa_enwwxe^ffddy}tfzrb`ZW[W]^_`]\XYVWV[\dckkeffggddgddrizҪpcchqe`Y^\^TaababXVUXVY_bcdoknYeffdeddgir{éqgdca^b]]^`_\U\cZZY\UbY]cggez||c`feedfdee~ws櫟{sm]`^^m__`fklbZZY`[^WWYZabgj_c_c__dgeev~}쩤njhhZdov`filkjZZ^Z_`ahfagek{jba^^`dgdggr|~~⩪oddg`^dqvvnYc\[YY^XY_Zddggs{dk`_ccdffmko}~יvdlbaffhpqp\[UYYZZ`[Ygjil{z|obk`ccdempihggmxԦsbgdcdisz[pXYYZeqSWcek{z||g[a`b_deemonklq}ufgfhfegzztkogXespndbjjdg~}\X]XXcceehqzvm|~}{yyjrghggclzyjhlaV[bymkllYYgxkz~YZYYWYdcddhmxnt|}|~hhjgglqjrda`hdYaaUgnllfUWgkkmn}W\XXY]bb]fppvinr}{gghjlhlpfdxh`\`_lollpfc]olkmn~}h\^XY[S]_[cikpkkpvngjjmmiloppb{_[`__Zlcpoodbakfho}[\[][XZZ\\dggllm~mkjmjmlfinqgiga_hlpo~lbqukgn|^_]\ZZYXY[_egjkllt{rmmilkiieedhhcdga_y~uwmhmsdkju{bc^oYTW[Yangbjkllnur{zskkjer_dhhilvrpknnijil{~`pnnhTTW^]_bflkll爛kjkje}|hhkptrnokjihkphj`b`ibUX[X^[_`[jmimppu﫬oxwkkxvfhhilxqtnmigcfipjh_`a`bg_[YZ`_nfejkjmmn񬭦xxwxxw{iihgkxuqooneghvffh^`ab``a[\^_]`goklnpmmwxxvzlijkgfgowzronjhgc\[[^[g`ad_^\`a`abchiowpwwxxvnjjlflppnmncc^[[Z`chc\`_`Zc``adelmloswwxvxx|~nppxysonmbfj_\[[X\gfl[WVXXc_bdgmmnyjdZdwvovx}|ttb}ginna[ZZ[[X[oeV\\[`cialmmwib`Z[blumkyuxthhomhfcZ[[^g`_ub_^^_afmillmbousc`]_Z_ihhg}yucbggigfkebd\\cag^a`jbheen}}thieznnSPVVUSSOPUWSSTVWY`jm^a`]]i]ef{}wy}vwckpZUUZVVUSQJOVRNPMSVUXjkm]^b]\[_\ZmzuuវwyRpVXUUVVUWSMYhQPPVTYbjjk\T]]ZZYZYYlp|zvfYngYWRNROTUUWTSOPNMMQQXX__\]ZY[YYg^n曞|yybWW]f[VOUSVKXXWXOMLOMOUXXYc_bO\]\\ZZ\^gnzԙzyc[XWVUXTTUWWSKRYPPOSLZPTZ]]ZoppZW\[[Y[ZZrkhs~mfaSUSSbVUV]bcXPPNVQTNNPQXY]_wVYVYVVZ\ZZksqt}ra^\\PXdlW]`dbaOONSOUWY`^X^[bpaXXUUVY\Z\\gprqtԘtcYY[UT[flldPZQPMMSMNVQ\[_^^hp[bWUZYZ\\cacqrw}kZ`WV\\^fgguSRLNNONTPN^bacpopdyYbWZZ[cf_^[\amxsx혈hX^[Y[`ipwReMNNZgINZ]cpoqpz^QWVXUZ[[cec``fxxust{k^_^`^]^ppjae\MZheeZYa`[\sqtvRNSNNYY[[^gpkbvrwtss|qooai^`__[cpvo`]bWKOWobbQ]mbnrx{PPOMOZYZZ^cncipvtrrsy{ww``a_]_chaiZWV^ZNVVJ]dbb]LO]bacdp~NSOOPSXXS\efk]bftrv|}qv_^^_ac_bf[Zm^UQUTaebcf]ZSdcbcdrp{`STNOQHSTQY_`e`_ekte^aadc`befeXqTPUTTNaYffe\YXa]_eq|{RSRSQNOPQQY\\`a``btȏxcaac_ca[^df\^\VT]axfftcYhkb]ewwrVVTSPONMNQUZ\_``iqgcb_aa__ZZY^]YZ]VUoulmd_djZa`kqwZ[UeNJLPNVc\W^_a``clhonha`_ZgxTY]]^bligbeed`a_bqtYfdd^IILSRTW[``acc}ut__``[wqo]]^]afjiefa`_^af^`YZV_XJMPMSPSTP_b^cgglbkk``mjZ\]]^bngjdc_^Y\_f`^WXWUW\TPNOUSbZY_b`eefllkmmlow^]^^]ankgeed[]^l\\^WWUVPQSTQU\dabeheetkllmjo{a^_`\[]emphed`^]YRQQUS]UVXTSQUVUVWX]_fnhxxkkllmmkuvc_`a\bffdcdYYTQQRWZ^XQUTUOXUUVYZcddfwy}tfkjlkmmqrceemzoiedcX\`URQQS][ausPLKMMYUXZ]ddewvn`ZRZjjdkmr|pijWs^`ddWQQSeywvsZLRRPVY^Wcddclvy_YVQRXbjc`vnimj^^ec_]ZQRRQT^VWx||~{iXTTUW\c_ccdYdkhx{ZWUURU^^]snjYX]^`_^b\Y[SSZX_󴫆}k^W[ZWWTSQPUZXVW`^TSSTQVeY]\]mmyv[]XTSWVSUTTSRSONPUUQUUVTSSQMPwphifhxz|yqmk]XRSQRSTSPRPNPOPSRRSRVTSSRNMMKJnuijje{omnr\SPNPRQNPNPNOPQRRQRSSVUSSNOONKLR}lhpqz}z}}rvqowbROQQROPQRTROQRRQSSTUVSSQOPONMJYY}vouxy|~{~u~tponoox~fWMOQONOSTRTMQRSRRSTUTSSQPOPOOQRt]q}~x~}}nz~~lrkiocd|lSTQQTQTVSSRSSRTTSTRTOOPZY\^vxyx{~~s||{{tabocjwzRTPSRRVVUVTUSUSQTTUTPOOPPNSRXYwxtuxy~wqⰕ}|fdce^`dw_STRPQXXWVUWWSTRRSVURPNOSSUXnyvquzyqũldcc\fmmgPQNMOQZYWVXTUOQSS\wfVWVTTQQRSSTUY]mn{zrſujddc_`ewsaWMOOMVWSVXTTOOZ_~}cVVSSOQSSTSUXakno}yv|zؼgdeccddfe^RMPMMNPc]YXXTOcyhqqYVUTTSTUY[mmnptwwu{kddefodQMNMNMNQZZa^Ugwuy|cb\XWUUTUW[mnnq|yoyþggdeddffmRPMNMMOZ_cacswyz}`WX[YWjrtmupxyjdfccfugmQMM[Z_hijwwz|}}[~~tyww~xlmsjh[aWf^PMMgegpwuvy{||zy}m~xsf^\Z^ebRNOVf^ffghpootvzy}zzz{v~wbjb\[Z\e_OXU]bhfiogroqwvgzzxxvl|}yojg``dl\ZXX_aggekkjfmbWbhVsx~uxrokmrrytn~z}zrmjZ\XYYZ`cdfeebcUSTUV^_fxmvqmonpvvwuwppdlleZXYVY[c\^[WWZVTTUV]b¾yh_`gnyuwsyqrpv~sxstqzbZXY\YZYYl\WVVUWX^j_Z_dZ[axskoqqpwt}y|{~d_UVWc\YY_VUVWWVVcb^Y^YV\dgzurejrqoz|q|wv}^WVUX[Y[YeWVVWWVWUZYdöVY[UWVYqae~onpei~ny{~hwvc]]ZWVX]^Za_VVWVVTS\_ƸuVWSUWYmcwfldiqiehpi~i]]bZ^XVX^^a^ZXTVVTV]aXPSVSSW`o{ekkfk~edd`\\^]Xb`]TTXTTVUVSWUTTUV{QPPRSRT_degbaquyhedbZXP^Z_h`WSQSTSTTSUUSTUSTT½YORQRSSjiic`cxwwrbUNRQNNKJHGLQOMNWTKHIIJGM\OTSSddwwvumlRTOKJNMJLKKJIJFEGLLHLLMLIKJIIHDGmg``\]npry{vwvvmgecTOIJHIJJIGIGEGFGJIIJJMMKKJIFEDCB|fl``[pzzrvvuqqsgffjSJGEFHHEGEGDFGHIJHIJJNMLKKGHGGCELtc^ego~~pmrvroohmifoYIFHHIFFHIKIFHIJJHKKMMNMLJIIHGCTTslfjmnrtuz~voriqhdeeffou]NDFHFEEJKIKDHIJJIJMMLJIJKIJLMoWxgssmssusdnrq`hbaf[[sbJKHHKGKMJJKJMMLMMLMJJKLKLTRUWzkmnnptti{ppnnhXYfZbvnqIKGIIMLMKLJLKILMMNMKJJKKJMLQRnnjknnutlgۢtpo]ZZ\UX[nVJKIGGOONMLNOKKJJIJKLLNNMKJKMMNQeomhkxpogxb[ZZS^dd^GHEDFHQPNMOKLFHJJSm]OOMLKMMLMNQUeeqxwxphja[[ZVW]ojXNDFFDMNJMOKKGFRVr{sZONNMJLMMLMLNQYcffytqmspح^\\[[\\^\UIDGDDEGZTPOOKFZn}z_ghQONMMLMMRTeehlnolqb\\]^f\HDEDEDEHQQXUL^oloqw{|yuZYTPOMMLMOSeffitqfo_`\]\\]]dIGDEDDFQVZX[koorwxy{XOPSROcjmemipqurd\^[[^m^dHDDRQV_`anooqrSztumrqovpz}yq|tteejcaTZO^UGDD^\^gommoopp~sypzsq|z]twvqtpj^VTRV\YIEFM]U]]^_ggfjimmou3o|yq{xx}novshuxqto\c[TSRT\VFOLTY_]`f_ifgji\mmn|yxpww}}kx^onttuupyhb`YW\dSQOOVX^^\bba]dYNX^Oknv|y|vvuxjmgd]`ffmkeyvsvrieaQSOPPQWZ[]\\Y[MKMMOWXs\mb~zywzjgcecejkkingwh]~}cc\QOPMPRZSURNNQMLMNOVZl^TU\dzmzhmiofgektinklis~~|YQOPSPQPPcSNMMNMMNPQV_TOTZOOTlfaeffekirorxs{v\VLMNZSPPVMLMNNO[~WSOSOKO{|VYmhe[`hfdoqgrxonvUNMLORPRP\NMMNNMSQ[KNQKMKMeTXqtbac[_tcnpxs||apo[UUQNMOTUQYVMMNMMLSViLMJKMOaUjZ_W\c_[^f{xuxv|{bwaUUZQUOMOUUXUQOLNNMMNMLLMTWNGIMJJMSbxoX^^\`t{{zwz~]\\WSSUTOYWTLLPKLNLMKNMMLMNqHGGHJHITWYZUTbknyw{y{yx|}~`]\ZQOHUQV`WOKJKLKLLNLMJKJ{OFHGHHI^u\\VSWmllfWLGJJIJJGGFECBGLJGHQNEBBCB@FsRHMML\\~|xxvlljcbJKHDDIIFHGFFEEA@BGGBFFGFCDCBBA=@ezrZSSQRdfhlzpkmlkc]\ZLGCDCDEFECEB@AABEDCDDGGEEDCB?>><;qY_SRSPesmplgkjkggi^]]bLDA@ADDACAB@AACDCCDHGEED@@<>EwvgVQY[bq{}q~rccgkgee_ea_gRCACCDBBDDFD@BCCBDEFGHFECABAA?@CA@AEFDF>BCCBBCFFECBBCBCEEe~uMlYff`edfdX}cggW^[Y_UUm]EECCDCFCFGDCCEFDFBBCCDDELILNn^_``bee\oeedd_RS`U[qhlCFCEDEHHGHFFDECECAEEFGGFCCDCEDGIcc]^``fe_[|uifeVUTWQSWiQEFDBCIJIHFGHBCABABDDEHHGGFDBCFFEEFG[ca[^qicb\mYUTUVNY__YBC@?ACKJHFGCD>?ABBJaTHHGFFEFFEFHMYYdkjsie\`YUTTQSXjeSI?AA?HIDFGCB>>HKdnshSHHGFBDGFFEFHOWZYlhd`gdWUUTTVVYWPD?B??@BUNIGGB>QboqlvV^_JIHGGFJKZZ\`bb_teYUUWYaVC?@?@?@CLLRNDUebbdilmjjRQMKIHGFFHKYZ[]hdYb{u}~WXVWUWXX^DB?@??ALPSQSaecbdijjmQJKNLHZ`bY`\cd}|zigZVWTUWgY_C??>>?MLPYZZeebcddNsmnbgecjc}}nqv{nepii[[aZYKRHYPB>?>>XXWVW_ecc#bcczw|vgmudsohepnQiljfif`UNKIOUSD@@GXOWWXY`_^a_aacfy}gvuoldosmmrcdif[jmfidRZRLJJMUO@JFNTZWZ`Xc_^`^Saa`}x~vvpkjbwslmrr`lQcahgihdm]XVOPT[MJIIPSXXV]\[W^RFNSD]rxzbiuolnh}}kjm`b\YQSZZa^Xnkhkh_[XJLIJKLRUVWWVTUFCDDELMhPbVpllj~n~`]YZXZ__]aZj\P{srZZTJHJHKMUNPMIILGDCDEKOp~aRJKQWmanv^c_e[\Z^h\b^_]fssqQJIJNJKK^NIHHEDEFKSJGJODEJw`[W[\\Z_]fcekfnkRNEFGTMJKQHGHIIHHGFQpvOJGKEBEpqLOc][QV^[YdeZvfukcbjMGEEHLJMKWIHHIIHFKHOwEGIDFCC[IMfiXXYQUkXcemgpwovTdcPJLJGFHOPLTQHHIHHFIKΧ`EGDEGHXJ^NVOSZUQT\pmiljposUjUJJOINHFHPPSPLJGIIHHIGGEILIDDHFFGIWlcOTURWkqqoknrttsQPPMILMMHSROGGKFGIGHGIIHFDGgEDDEFDFNLMOKJYceonqopmkpvspqTQPOHG@NJQ[RIEDEGFGGIGFFCBBsLDEDDEERhQQLIMſ̵˰ȷÿúİιȽwwĬ̗ƨƷwmqɻʯóqpooĖ̶rpttzêļpptuɑѰpvtzĕrsv}Ⱦrq~vwyö˥y{zȦǢ~ué­矴vvü~̲|{̀ƿſ̨}n}Ƶ˻rus¿¹Ѐ¾z}´ѭҿvruåɼıϲtsvޯɱ»ӹssuйʬǢ|{}Խɾsstzŷyxws|Ͼ˾sst̶͞xtt{ϯrsst~}Dz͞uttyʫrst|~Ǥ΀uwvʻty{̧ȗ{ȷͶɢyuyĩ÷ɴʡ˒jwǩŴyyz躹~޶z{yy𷸶ټll{{yz|蹷lbf첳~z|鶵󺳤feedqശ|ݻhfhhmw}򚒪Ṻffiir|̆{|fkiny||߶~yվhijpty{hgpsttzlmnzwxxu¿opov{y{wuÿ¾tkyztw~spuý¾鎢llzz|w{ppÓ¾rp}|ppq¾rcquⲰywrz|ſӽfjgv}qroqvwxyjfiгü||~hfjş{q¿|~|ffgh辽jnikfggns¼ggeajfggጛfdbj󸝙eggqeddjzegfoqv·İufhgyfukluvwl}yzkfjyrtvvzxtx]hpx{pp|||z}|~tw}~~ootttu{}opnnts𦧥ztt󨦧u^^u蝠ppnnuy{npvv^UXvyok{xmpuYXWWh٦y|wmrryy줥[X]]bmåymsryz{{ZY]]hrvvlmyy{|{~tZ_]borr{駥z{{x{qsmԪ\]_ekoqxz~xذ\\gjjkoyz||}ѳ`bdqmmnk}{ä}cfekpopjhЯ|h`opjmzpfei䟓{{~aaooqmp~ee񑟞㲱{{geruqeef|}{gXgj|pngqrı||~\`[k~sfgx|zefksulsvlm_\]uupor][^|sxy~|mfoqp[[]y`d_a~[[\bgx岫]\[W`[[\}{u\YX_ΪZ[[\dc[YY_≀l~[[\bdzvywj֟i[^\tkq]laa{vvxys{xvgijatokjb^bpznn}{vxhhkjgtx}hS`iqullznw{mmknmsoswwȳZVYY[]]^ZY_dTVTSSW[`rqxx~kkljblm͵|}a\VU\\]^^ckim[YSXXYmjr}ps}|kkaikz{ˣzz{}gUQQX\^|i\ll|jWYY[ghutwy}bb`jlvuί}zz}mVTWR[]ilvuaYWYaadkuo{x}tt_siyvm~|{z{}}\lVVTWep{kwigaeY[Zdbtqkyutt`sjap|{zz}]PPQY[qrtmkkkZZXac_asgq||yffyzytgbb`^ʮ|{yzZXVY_^ort|txs_`\Z[bhghhfebrgkfcuxwytgf`^n|ѕ}|zZ\SX\mpr}~iegbccgejehda_]`ilxwlmennsѪ|sp|XXWINX}~qhgglexxgdZ][]Z^_jx`gnorZKHHN|~qmkimklmtsYVXUWR]`aajeapooɖ~}sz}hXHONLTtrqmlnnhpyNRUUSS\_``a}{~ow~ɧqr}~iRQKQKILsmghh}TVPRWW\\_^fmg|}qxs{Ǫysol~zZUUYN\s~mlgQPR[X[Z``ciii^oopvy}zspxm[__bqs~zhnVLW]^\``aԍZedupopswyơcWW^_Yc{{mpQQXR`_][^XYULVcp}t{wʛ^WWUc|ognm}QQRQ[_]]WYNMKKS{x}̻΀n^\VVQp|phnrWUQYZYeY]VTTSLKo}~ɬȅ^]WUUV`ůuponszWYgZWb^U[TTLLKuɣ~a\VUVTWͨ~w{snYhi]^kSTTMMUpg|ȩ^VVUVT{̙x{~q|Yhkl__^NVT\]s~Ͳ^VUUTR{Ϟ{z}ǣZYXjkk{umd_W[[bd^STSPlǚ}}Äcul|{vutgY^XZZ\cǧUPNMKν~ǹd~~}|wvt\\ZXZZk橨[KMLNQXoеݙ˿w~wqc^Z\\W[Wš{OOPKQRZdyʚǼxjhe_^\YQQXYʣ~oKHGHGHT_ȪűlifZWRR]}sbJIGHGGHbǸʾeVWRQQRY~{XTMJGHHQϸ¿~nSSXRPZ¤}{txxwyRNQQTUVWSRX[LNLKKPPTfdg~qzxzkqt}^^_]T_at{twqrxyXSNLTUUVV[b`dSRLROPb^fq~|ehsp^^S\^npvxppqr}^LHIOTWr`SccraPRSQ\]ih}}~lnsUUS]`kkttqqpp0r|{cMLNISU_vblktZRPQXX[_iawqnsjiRh`{nldurrpprrSaLMKN[fpam`^Y[QRQXXhc]ttz{{nkkjYjaZg~xrqqppwrRFGHPQfhjdbbw`QQOUYSSfXbkliwx\\ppok_Z[YWxrqpqzPMLPUTehiqimhUURQQV[ZZYXVRbY]z]Zlnnok^^YWer‡spvpu}PRJNRcegypqp]Y[WWXZW\VZUTRPS[_tynmac\ddh蛜zyoidqONN@FOsvzqqd[Z[ZZ`XmmYVNQOQPRWaunW^ddgty{yyz}wPB@??Frxvxq|uc_][_]_`hgOJLJLJUYYXa|\Yecdx~~wsriopw]N?GEDLw}wxecb_^`a\dwoBGLKJJTWXWYsqrcjquywsxfgrtp|^IHCICBEusrd_[\\sKLHIOOTTWV^~b^qqckexkvuojdbqnrwQMLPFSittyq__ZHHITOSQXX[v_^^Tbbhvi}}vrwpifuvsxldRVVYgiyol[cNDMTWTWXYXWWOZYgba`cgiuut{twwYOPUVQZxwwnnaeHGGNIXWURTNNJ?KXbndlgpx{{srrssWPPZvpnc[cbsGGHGRVTSMNB@??EsrtkhotzuurrdVUPPLh|wvnc\beLIGNPM[PTLIHH@?bvoro~rurrvWVQOOPZ|ugdcbgmLM[NLXTJPHH@@?fqwyssttrssoYUPPORypilevaM[\RTaHHAHaYnqwsxvuvrtVPPOrztiloqvdoK\`aTTSAJGOOfq~xvx~WPPOLrĹ}lknottMLK^`_qjbXSJMNTV}ywUMOMKdnrmuVg_sqqkki[LQLNOPU|~{tNKJHG{oWrupsrrlkiPPNMNM`|qutRDHIJLRdutsitleWROPQMRNwwsuqmHHIFLMR[mwssvl_^ZTRRPIIPQwzqupncCB@BBMXtva^[ONIJIITvwspgWDB@B@BC[yrvZLNIIHJQyw{qoNKFCABBJrr~vcJJOJDN땉qoillktupMIJJLLNHGNREGFFEJGJ[Z{^thnln_fjsUUVTKWXkohkeflmuuRMHELKKLLQXWZJLFKHHWT[fu~|rptsY]ihVUKUVfh}tjlddfqt{wVE@AFJMhVJYYiZJLLHRS_^xzusqqsr`djLMKUXcdlttgddcddfpoYDDFAJKWmZcckSLJKPORV^VlstrtebjbcJaZuhe^}}x{geecdff|IXDDCFU]gXdXVSUKLKOO]XRijoposwxtbudceTd[Ubuz}qjeddzlgH>>?HK`bd[ZYoZKKIOPKI[OXab`lyl|tOOgifeXUUSRvw{vrjedcdozFCCHNN`bch_daOPLKKOSRPPNMJYPTum~OL`ddeaVVSQ]kxwvrpfbickwsFJBHK]`akfgeWTUQRRSPSLPLJIGJRVimdcXYS\]]a苌tlkb[WguHFF:@Ifilff\UUVPbaOMEHFIHJLT~yjcMTZZ_jornlkmuusulI<::Aejikfml[XWTWVUV]]EBDCEBKMNMT{}nQN[XZmtyspigh`fyyfmVH:A@?Giojkr]\[VVWXPZjb<@DDCCKMMNf}zyvcgX_gk|~skifm]^hkfrVDC>D>=?xjwyjj]WPPgEDBCGFKKLKQqxWQccV`Xm_wsijd`[YgcgmJFFJ@Nak}wxkqiVUNrBBDKHJHNNPjUURITTU\k]|nniglg`]klhnc\LPPR_a~||qgbOTpqH?JOOKONOQOQvHON[UUW[]tiuukjqjmmuRIJOPLSoz}mmbbSVpoDBBJDNQNMNHID;CMUcYa[d~~kxqrjihiixPJKKLTww~lgcVMTSzjCBCDCMQPNHJ>=;;Ajik`]b|{~jpkkhh\PNJKGasmlcWNSW}GECILIXMOGEED<;[zwncfc~sxikihhlPOKJJKTrk]VUTX^vGIVJHTQGMEE<<;w`ionggyyz{jjhiifRNKKM~woe^aYm[HUWLQ[EE=D\Rfhxkg~nmllikPKKk~pi^adek]hEVXXQQO=ECJK`iwxwrol{ntPKKJHjésa`cdhiFEDWXVg`ZPLFHIOQsyvt{omvOHKIF^wxcfbjM^Wjgf``_SHKGGIJPxvpt|yrlHFFEDreNikfigga`_JJIGIIYru~~gkjwK>DEFIM[ykkj_ita[PLHKLGJFvuu}mm}ijfdBBDCHJLTc~vnjjl`WVSNMLI@?DEgpz|u|gkfcZ=>=?@AIS}klsuYWTIG@A@@Heftx}yie]N>?>?>@AU{piuvkSEF@@BEhugt|{qfdHDA@>?AH闡iirj[BBGA?H͵yuaVWY[W\l˦s\[\]Z_Ry̤—ula_[TWVĻzwmc[a\[^iuz{rtqgdb`dbgiuu~{tnqhdbbdghir~{|¼vmmpebffqkqms~nssufhgrns}lxihhknꇌĸ}w{ofhhigkpt½||kgfcahjjm¿þ|shh`dggoq¿©}wizgi^i«|zwhtcbpȼċ}{{qwoirſĿ|qor|nƷqcrrpmn~¿Ʈȶtprpplm~Ŵɾ{zysonmҰɦzqqnlm¨uxnṣʀ´rƯտɾŲɝ~ϦѵȴҼī˺}ywnlXMMOQMQ`츖{{iSPRSPTGm鷸kaWTPJMLiȭlcYQVQQR\hzjjeif\ZXVYVZ\ggtljsxgbg]YVVXZZ[dsvtrmjkibafZWZYd]d_dtrpopn~arffj[][e`~eupsppsuoak]]\^az|~wtpqqw|rojmbY\[][^dhyuqqvzsnm^[YUU\^^atrqwnd\[SW][dgwvymoh\o\_T_wwomjh\iYXhvqyu{pmlnemeamrqomddisvhqpsrdWfiigispgdghhfhypx{mnnhhghx{¡ɷxoggechxjneujyx}|vhxt{z}vux|ů}vuxxö{}}xnž~}}xoqw}ƹ혔twqnfcPEFHJGL\Щrq`JILLJNBf|xaXPNJDHGxw[zaYQKPLLNWa}vwk\\{|Y_\TSQPTRUV``ye^\fj~\W]UTQQTTU]jfeb^\^~^uWW]TQUT^W\X\~dba`a`rUg[^cTUU`Zu]kz{bd`adxrujeYdWWVX[qsuyifbbhlrtsedae[TVVTW\_kgbcfkxurygffXUTROUVVYz~fcbhttyyf_VVORUT[^zyithwrhjcWgUXMVsi}{uxxqjhecWbSR]jelfukhgg`f`Zcfdxwjh`_dlqddf~ߥm_Sddfcegcszfaeebdlckoillheddlouy{rlgfdadxymxz~hkdohzvnyzrwvpc{{zx{kfttruoulnryzzttr|llooxuqtrsvwoe{xqrs}z{ofgzwxtlzsvuu|yCC!!merkaartor-0.18.1/Icons/Frisius_splash.png000066400000000000000000005517341177067165300205630ustar00rootroot00000000000000PNG  IHDR,u]{sRGBbKGD pHYsttfxtIME% k IDATxdI%Ifo9"r @M4@1@^Ps5W\q"fwWUg>Af HIDEF{z{_ɕeɷ-8V4U8N`a-gsh94MKŤisqqQ^LHVUiZ~qnD)򫯉ga&P4sXkQGֻ˅KUq\p1MZ9$aG. Պ$IX 臑i@)E\m9Kq$#4Mכo| QՊ03N#1zjbG b,}דF1_}iO=뚮9hci0A1NC߱l!nLHSZ+nnoam}@iJ =Ԇi;0DksJֆZa""iZ}~GZ6 bJq{{O4G("YMӴ10#}3 Ac!Y|8gIi臁qΒ&)8Xk9V+~;֚IӔ/o8;4 :,cZDYjU{ߧ((˒Zc]4uYW$a8/3&( {uu4M<>>be#c6 ~-]+[~,+_?S^z__ж-8bqq}sC`/Z8|/NA6 (F]E1Yf)4c0#ο1J)RYuQk{F;1phi#  ]ugR 0`k^^k-}KbsA4M4mC8777gqXhiqTeu Ȳj)eY?0N#8:(hnaF`z hFa 4٬Dqd'ڮ:ֆyL`& D9jEUWqL` 8a d:1qB۴((` NX)P*`' yo|>QUУfkAMGkM۶A|̇yGe1Q0Y Zf7CFrH1 @16O.P`V bEYVo{s7GVhIcO\.g 5918nXk)˒頻mqQU;k40{`}o9RXk?5M3 R44c;a92nooկ~,DmqiJ, fG?$I|>3MYBEvW/ 8v-8$)ZaXkvMWZLV+5yyn9quWWWt]baZtl.s3֚ժ`F^^ u]q>q-tq)z JEh?eN6SYa!N͆=S5LE<>>r8er((&I$fj Ӊahږ0 -؉ZT|Nm $ EcfP-=mQ^=FY$Y Ze'8(2_G_|=]}!h 4MMa(2Mcq "a@y& v-A`J0(`Z^$8qabّfiPMv &0*4 PaHDQW_}\O>c˥\H1`9Y aws_0mG*49hc vAvQ0fi )kێ( `%Mb֫,x^x0jfDQ(?)imېR `eNaPn099Q1v%snw2eYFE1?izMgdYFUU˨^4>sәH$I).4-{OTϾZu(Aۢaw}Mqq,˸\.EAv/Y/Sh%, <| 0d1TuC:<)kemKf$qCfJiڦ%Mbqa8OȔCh4uUs9ʺg?w778;Qյ/lR2:eEΪ(ӄEӶ N'Dj0 XL֒tncP~frģȁOsU‘#Bv-?ÀNt]Gx|W$Ivʧi8 (w.W麎DQ4M1.@g cglzᨃ wI$N2#E^v'֏eyk[ڮ#Sw;> uUg)www\]s۱^x( 4IY8n<[ޤ݂sxO޼~BhZ^GP#NzῬTUf.<==Qo{2DqDAx±o3njZ,cY˳јi }M|_$e>2x)_.{-qiT]'.IHA?7W;Pp:dEQQDYU_<2Bͼ8yΫo=zN!60N2Nz>o}]mяƄ8 =s38u0Z)Qqu}WdyGE$IJıZk"#I$?ٙ ÐnG]^T}È@놪.鑮~[x 42n'a2orQj}?.r0rs}GHh',ep>G!Ypw'(p|.l6 5eY>|.nhInh]s<pOXf<<<`4N躖S)n,v!s燁$MT}Ӣf!be#a$OgkZoE (sӢyECy)j4M 0M2VNVLIKWDv;&?Zϲ, .$I6-?#Fu`j'BOv+QSz yf 񚮥k;4%"oWpy?? qz1!Nߣx<$( $t:sNNF (ɠ" ^{(b{)&`Bto[aAk\NY'̗~iN.}ϗ @qz;z[U]d^?✌YFJL@&~_ 2n 4IbLt^.EB9ݎrYFvO& 8 ÞͿ$I|u=<{nooQZc,Q$0h0MM~'geYb߼{zSJCHċEqX VnK+Xqw{'X1MN4ME|wAiC\]ml CxX zeYQ͢Ett<04ҵuUF I,|ya,(ezK!(r xb]ddiJ&]Cߑe(&ɺiÐҫSGG@gɥl6w3.uEylZkΗ3,Ky||k^~}=r^Mx0 2$ dŕ/(5\ªpK7b;kɲ+a:Z^\dfk&t]fY(xxcGvpAěO>r)6Ji_4= _0A@׷QDO;3o8ϴmOUŪ(觑s]Ҵ-E $BpVƞ y]ۿ+(z(_iѡxMV;6$_O~Q ]x 8p:iۆfC` jCARhۆ/8ցKY'կۖn2Z|[}Oz秗ktkhۚ??w p$KXq:u2%2oG:0ِ9_( {nȫLyQãǁ홼n Á8'&S1"V5C#J)޿/(8nz%(|b&//CU?n:7 妦:4- h4N84IZiSUh(YղsIf&Ёk1Zz;DKr`+Mo޼YYpx,K9Kq552YŚN`W'g Rx 8e?{312FxxIP5Q+) x֊% #‹Mz"cAn.J yegBͼq0oq IDAT<3 DTK7<=wPJLڈP)EZӵ&n~uifVP#z? U%\r>]ġEuCehdY|s4mvGMV4aݒⵚq!DWEN{Zl#=4m.BGpmڡ$t@=J(/___ԭV圃*[x-4Mɲ8,}߱ެJJqj M,_?bp"*0I^ol6mVgy=Dg9UY{Xծ9EVT~9JC(I}WF+;o:E^0 o߽odϳ$*,,_wv4^ ++Z<]J )kК °cPqm:cL+aἴ$)0 -Z8G\()bY,3v0x9OTM8:ő&bݘĉsssk}Z\ ?_IY늺Oaq}OF(iٯsV$f)rADk|4OE1#:' #~o9E@i~1:H؄a(.N(#<۬r=q"EMdq7?<<`& "x ~J;}իqѯ & CRMh}yxm[.RX>V(e 4բÀҊ,w}hJ[ _>'%ZD$iAsQn/pX̶V8lv22I4M^t˨:'o}#a K2"[:XG^-t&07ifK/eSrA`4Z+[((ϥam wwD\]]?.hDkF禖 G8adKE1֎8븽f(ى鈵,MYV~VZ,wQǦ4M4My__|̌񂛠8 )vw%;.rx4˥x<<>A8Q5-)RB|G+Nk_8~Y׷s.+)'#R- mbyB޳#HYW\<9_.LH]W<>mY eJjYv7hWY^p<%4ohEƑ0KH-_ZoǷ8+iMII9h@3r0< %ny@ 䩌%fÑo7Ŷ0315FN}:ϜoW9YKKQQ3:yA :!(z9-bش ˟ ?p!hnd fRV9/{"'+rׇZ Y08 ,EvF|6A*ۚ"Y&pT)H(dUY4)&Jđӄ (˒$N'ۍ'S)Fk񞩾 ?ә[VHVUq9/|0-1N.Ϲ10RM8ۦO,EAkt,w3c<,`VZ#Y%CK )izUtƑjtr)kYn_7ϟ@JkavA+>&v GEs}v>Ydܵ wFk4Y̑!N}(Z+(BkKҵ7q,&M45ʇ=*4]ߋǝept4Y_;֏#?R tgP( pDLHTeE*7& s \l mr{{+Ie) 8/*'yU ,vż,ց p NrGQB8QNHj0ާg@`fٲ <+a(c֡? [B fE$IdY07BJغX A+^EdiꋌВ]5M0N~%xٶiZ4@ǮV,M80 DVh$]bR_fTύ=%3v@XY]J#< A!Z8@UQp8߫v͛Oxݒax<*;9}÷wA u]O8N ,>Er&eQ`i(za.9BH:yoIB6eK$N?\ W;']T5_}R^LY5,lCV(x4BID?Zk8 H(,_4b|§Up ږU#^m[/ 0//ϢbF1+8尧k BHeO#i*#:JN"SoZ~jZ`" F֗Y͜{|C?ͱ5szhz&CA4 `)Xy/ǥEq}^L~7vz꺑^e6Zr3':O>GknnnX!]ہ,4Ke < 3GQti#Zv憪yz~^sFzj@HL@E]{Zf0X~v:Q%Y=Á,ˉO?8&"_V1?,kDź ()mסAJiІa*\J^ ]pVYΛ;00dIĹgNc VQ]JKt0$'IҔq|i-d1mQMBv$i| ;xs0$Jbi|)}8Mhy~zZ޽}+fgD+7I rŻinSe.e|:}'CpXUU-Y3?Ub֎$NXV<<45UUW_Qn0M3@YyZ/).qaL69 |>\iVԛ'iigwҰ現٬ĉ(_^>.1eY.+IE8KVTdiJ^z|L1<`!xa(Q>DҊ|fNzJHdokpN(X+#A ͖̯$IJ$i"{Un]2β4^?|=FFmFAD ff>jIt>N8μ{~&uU ~ ͚*'[zM)wjuùu-I Bn7(SB ;!E$m VsfsZ-k3dY|=A18<)J>2+II!-Yv&VQW+Q~_-ۼ2& |8яfL\G%陭;=6ISUYdKv}АA h~5P@EMMdUW>WOڶV.OI٢,5h*In WEj)iQ(lHYv" `J6Hĝh,ݎjvUT. Q MG!v/W$|]' #Eܕc; R2i/<7p]iϠr *ޛF*z~Wc*(K0.®=ciyB׾_>c{Ͳs4IO"[/Y#B%aֶ5`͟K? nxGU8[7p)˒Ҕip\Ewʲ |BI0Ϲ V%=-s6Lja΀`4CiHFCOWUE\\\X,x [u\Lv DQ4?P%y;Ng~VY@ENDӶ}-{L m3ajF]Ճjx.Nt뮙D\feK'EG,֍F# 2N8;9udfR>Wg:RVZ_st]!^&~`R_5 ZҨ" +ATe[ !KZ;5շXhUrv/xM] ۦ>+iQ]3,[X8T;ԗ/t qK<\굪ʊ!.P`]bA(-uUOYN$Pf ~GH (MkH HE2MSz t$ gφCNW|:eY3_|ݬ1L9u no 42eFuC,89>BW#}9>>&c^|@}'M?͛7쒝0󜪩Ɋ;vkNOOvx7U|p< 0dBExy CdY>$.$0 ɋ3zoNYrH3V>)ٰ4] 1\ 4} :w/nAtqQ75ʲ2l0 MӉL'q=O l'pϞ>"rƣtzŲL48?)ɘ|'G >})qq?Ӏqvzďaw-v?|08Y̸]mu^&]R)[2-NY9ZΝ-1nH/T eIz7tAmdL0ٌ8G#EM"T5 2\.UMg j\uJ@hȦ!5\x<{eKv߲5UdY˷hZ^ xjMõ-,K mآuumdY p R~T%7-q2';H\?۲e ̛MO>(z˲k6\^^7>Y p$gr)0TBJRgϞki:uS3bj#WpӒaQ TaM!Y- P$ &slOEmE=$;Mxc^ F7޽cٿ ޾ywȾozj؄kıh=LTG}}xzO?ok. {Mp[~*6}fj:$ bXVU%ս㉳,V9,۶ .8>C* 0dwH5Ca+IgYc+Z"HZy--[*”aZ6]`&b0-m)#E,/.o^nk9/nw4l>VܦѺ(f-[*ͺN|}2cֻs44tGr۲0AZ,! GWK0,J, LP,<#mS¹? 7 Oi!vc[&ݞiێi3&d&WKȜ%eVHYQb[`+z^\VhF1OQI y +feIOb[躎 ]7 Nެ進 MEC $i޽m~KDĤ[eU⸮,[vEAV;?WnS`*&49\hn y3NGZ029ʂCY@4 []祖jcթ ^d߫t_6TezVĶ\T5pW^t+R亥i{P֪ sw(O=H6va!uB#U ]?}+ʲdYh2j& w%lwIn//D])D(J1TǾjk޴>kj+֛E[z]V怋j_UԥI1$^ʂ" /UhҶm䘶mٮEA&EJOmzTtw0֠_9ʵoe+9lJ]۲FLE(cBxID#cnhAԦǓ䟔;;Ms?.IԖhZ1P)BP(ic;bk)(ة\\)I,! =&1'/,~ P 0[*`2+S绌#\g0?M$#F!Ճ$%B}6uÚkZF"j#1%xB6C^BMQ5%!9:Ar4Tn;IUalv.>d+=kkʊQ8??9Azs}MfuzJ^QHÇX$ݐ&k]=[0hRAutUQ9)>I4I~P]KSSWlkU{LWޓeĖ0) o>˦)ױ1 1i$XAOA_^l6T;Ju=j:i&Iӯ$Ilj*[Elچo޾l Y;W>+:7{(iR0HE";EY4iف0 xrpf5eQ+^J| nZaQgR+Tm lRjCFSi.KRy ѲS׹.InR3؄O<> 8uJ2=V7Mny$ML1Lw׼~o{zaضizyM"' CnhIA'bh0]U+,F7M4kFASн-l'~cz8/jX5U%k)Xh0 I]MGGy>g r>u8==?z&Mۀg;LXmKUģxԃ}kFJ]lj*$P0dYӖ4+xdr9X<~*,k\2ţHZ^fMx2U3I-H4E+Ӓq<Lb<͛9ջp5]A۲I3.{=~t?#=$L'RhIzhF~z8H,R%\c\YicbN{MV%^|5aGh4`\ʆ(8-۝x>,Tk \~ >KO'(dc&-}KFxD s9ڦn*lዢsTpKfJTe( i/^Q 6mװNvX+Oej'} i?/_z5xqz pQti(0Շw]Q6%`^ýtAY-֔8?jgј F|HUUk%ږ.a܈fIW0( Ucr tQYo,Wua-lwk,( N'8eEu]|5SeO%r:9;C5~Uy–n?lqS:LNќ$H&!$ pu}R Aihjo&M1e[bZ~b+j+!P4xDJWvVk C1Ճ ]S">8?$J7}3ZTsP#Ɂv^"r ^Ѷ%q(G!(`,a0$IcU{Er SP5aڮiɲ=MU3%dfn6*( Wu-DiTHC='O 4A0Lۦ(J<'C RIDʮQw-d,14`X+k94ĚceFavziY*%дԠ:NjV4vO4LOiiR=?:""~noԛ7LKUTt-$˲Ka3o j\E2k:|ƀH) I{KONg8sQxB]W,Go|t5ˤs( m]hNMTVߋ zĶ0U@^. Uڽnj(Du:6Gq( K' a4Md=f7KŞj::MiՃ"<ϥPE:MsLĶDDZmFt2-yN?nnrzt[WXJ2? (kMjٶ`KlAvہՔCyjg\__ɖױˊJeKJVv4 ytYƌBI6%;1q]o{-[VB;eYEEUȵ*'Cٖi'wS7 +~Ƣ9xA(]z\\!" "W;-jh*u8a I~Tphl:*l/˲,RT]gّ]~%" <դZ@UW$iZi6}/23 b8yxW^[Qʇ0K3&1m'm&ﯮYv b }ӷHxW8+"^SMo:ZA1s;pz|L׵QʲtLm7>O-__\-5I0-pӘ8²H%psQrr4!F,`O7񛯿7۶MeYѷ!/kUqkkي1hږ|L,HzMb:5 Ct]g0c߯},T"'uNNl,p\_\vIa N2h~PWҮdO>2=X}%՚,|w9x!5馉\\\0MIvx%I4ttUum[UhlF] mcZup6[YN8>>´LɎ^̦RZ8͆nx%F2mjY(jel;.?\StRF, z:kZJZUƪa!_X] RFzG|oUw+a<1 dAx)Ĉx[ϱG7Χ#f,18dEBBqX'OHjE$|__C,l4LN3\p]O\i:,8::͓'O1EY`ΐȲ?鿥ZFq(҇i%?2Ō'NNOx2㘪l'cv!|^Ƚ =( jEgQ%c3 C)ȬkfsMuzQw&{g|)aX)KR9T, 4i^o6iJku]/!޾VbIz>fJTՒwn8)4khkS$  ]l_`y*KjE maȈP̼yNQ$Ywސmi7,񄮩E@, 204&&rYVߛc:.t6 I"$<u8?^~~Ъ\Y׶<zw//B'Z!]'xzA8FfynP5q<Ѷ[ ﺎC׈U_ht8{wrS uh<OתX-t$!e9E^u2ԶXu-f+7ijTWi x^d4 (qi~\r8m-(\%\TUeYf3~ӟ\鷑 y{Vegh\.ocU㫍a㘺lDz]S9aa(Nƒ~buCQ H\o-FMR/^Z-ek7Ӄ|b =H>I7t(舢QVMRaIr-~h[B=ouP8N9:9j899V_EzF٩?~GVK: oݿrZSl旿UUXo6ꡐQ׶hTóSڶf߱KvC~+vϿ{){qfkA Zl6 %ŪN$x IDATeݛvhd1_("cI<3ů~jE4lw;0d>>Ʉx{y-,qb;:90 +۽;0M,gxrqq8?=/}B3'9ٔ{gbP[[xyA6XuݒM+[B>MJC Mc4M%2CģMיC9Z̄WU(TM#hqSߡZi2sI[8M6N:MESj QY|ϋ7VTKvdYey[^p |]CoJtx(r:o/wurLuU7)VQ ˊ!Bԝ[5ENQw=te)4I)ڰL :űjuOVyu0\(Zq۱=rŽ*\ON, [IHifl[UEQԸ#W]^$"%]{Km9C5 ,VUe7YF^?5|9fںG?$Ma6qusCUVe6I}81-DS޽}ˣǏ%}y9ռQfMNW]l[ȧjEaC~lthdiF]L&c&1˥T?fCY&F8G!.쐡nj6t<c0`> .{<^t%{u\]JvLCq8B,ay!$wxsyūW}J//3_̥Rv)_fdXNzheYb쒄.s9Π4MCK7^v׫5_U] k۵r0| C# <Քwt]GUt۽kd/EƕCAV8JmMy=Þ5˦sܡQ\SQt$yL%xz5 Kc/=bZ*nJ&Ϟ=cZ })HI5X 5@G~ L5e)_'_Efa?)BDooL&c==O;|UHz~v|>۷|ߒvfɃ|0xza\B>m\./v[JQ4:_^ZUrȤ'o8:;ôLa(IKO*h/~/lw;>~xE oN[*UG5*iG,\O?`Q28j%7ӯN*:&}ȿ_(2ˆO0۱7eYKhAUj&i^JYg] m۲Z^o*53 K-o-[,$Z,p]?P5Mc^ww(׿uH* 6Zf)TKݶcRfjűLE*O$F8?=o0=ggQjJںPXyrX|Yz䘮2OW_ !0 /kOl]0[999Q 5fjǏ3,[XUm˃d]7ODDȞ+ޗ]xݻw,K֛ g|xd,`ِe)Yb2VgY=ܮV1r&)7Dшn??p{sl[~{ w}S e$CUPiI.{Ύ1MQlS7Xʝ\2/ky5k Tm{pu0G&n?ն5nIpt:a2ym estt٩\7j]iCZU(V`]. *+n ںӤ"jOdт/<.bĴdȋf uөrRvϋWpzwiZt#]]xXTTvwW5%v/@M~/8YOLĎ8YЧH,EyYr~~>7a:1L`+ ò0,&мOm+ I݁{h4*JvNQW*vTt~hwX\t,HPNeQ|b1, ("3{Ǔ($8[0X؞KU۴e? m3ǘÁ3^z|>C34c6?U43j/G00 GܒyiXD<~x-dKU7XMX!M?˲8^,Ff|~h.eM#>ϥPv׶=1];'S#]\<Ķ-f1YI%/J0²m_]SV j6Ȅw'6j%m[X6e{#\e:`YWD(VuW)h_Y.<+I2xl@TVJ4 '^B4uEB$dʺklBm%ap}}A۴9 #+^DJӌlN۴,W+0$RF\KT#L4 qxXor~1 XSTz~Q" ꚓ6ꦱ&v# uϥF;#h^iWU˿yoG s*'RfZq}}Ʉ z4Zgxśd35u%!ЙLBvG^Vߪj4y-qsP>kYH}vlk~7)G~вVmW齒ud hWk2|NNNQ$c/>RFfEӵl[qo62UUl`qtDH{]5j$U(UHӲ _p M^^x~]Ϋi;,˖͎HLy^ 5X&M+T_7ytMZOt,&SI۶ҦdL\<Ӿ`{=ϟY%v-uͳObjE!yɣž =/n}/ٯ%o*tN-!4ЋߩVտ ;i4tǰ\i`ELCsmmt4k[0h6{4-vKfz}j%},ʉM GaIK> bmve۸@1hJ=\{fd4|]r`K)$2q>Iy<#::|'Cba☶iA׉˲gdY*Fb^u0"ߣV!ACyQ58zmj)6 0U] 4TƶLlۖ+. <ϣVM\9Ň8EK%>Oh:777O)8߿0|CVހS۶X,js}}=dz +]*WUcp{'{6-0$ 4M(r$ |nnoh~Wyn[S4Mc>9*,O="CԭL=kZL2WaHn* #\{%D,KLxv{*tyS˳>ū2iCG\U+Ж99=#=7gcL[*ɋR.PEz(*0@=ĆNgqjjySWTMrVȑf/+6i. uWވ/* G1*5Qhp{{:xtJȶr`YI 2ht`Btfu]X~u@1{:KwlQv uCۋU }:CƚK#V`r dYtbR'oNj Y7]"AK0u4$2b6͎,k''ؖt&RH" cCY kШ:p` WkX'ZtN*/`N]{>j._F!Q7:hӔ08R ; W:?XOiR-DZ?iFE> Q J-|&hԯm۱^owP̪àkJ7tC:ˁ,OKKGfGi0EKL'cd{_BWhBYem:o ðTP0LP۶L"oc5:\µ-*kp2H60 Ɣef"M$i\?q]=+A$yY455H,~P]vhA$GY}Fbhd:w(gϙxryC׵|Ol}hPD%lYY)DTӊDYP{:6;lưU.լG%hj䡽urV.M^ڃCIfŁkhJ",*CUkL p`6'P1$ϧBCp.XeYѵP kSi_O?G4]g^BmMy,bMay+lVǏ,?}7I~̧?OE8 CQ%75((rf1e&1ZW+a]bߑr H߷hq8AuwEvDM=ˇ'j$ߎӇR{bh !g]8`P=q?G⽮{|дnʥj IDAT bp[tzU_"I',s)۲뺬V M~m$DOJi坴,D*Z^Z͒~Kjr(koʲ˶"!|biUk乒>isrz:ou>h2mҧk1-HHdx4&"yF'_Tl=_{՟E1p} -hhHMSS޼~| KS޼yl:Qxh/3ڦKyVuCힳsxb% O[Ḑbƣ?Q5\AZ;+8p eӧO Pj{us}~*FQ0MC\:mG20L( ~rѳ|MF*9MqLSiVf$/?؊*yJ UjeLS(bi͟L&tmfUfǘgɉBv].sa۶Un:P^, [^7? tB냞KttC-f (0طP{E/m.q\ cu_MmzKJ|޹ Dz.eKx J;/zD_RUrpu/^N:-3=y3yꕒ4Xy!\!+DL@ *5MᑤuÈa4 U;gSUy.Cv M'/ tRi0FPϢEYV\^^p~zJ"Qb"[M zdX0xz 0M4Kh}W9y.k46E!m]srz)e%V;NG7T J\vGԢQH4QQ\ڶ%cv'_)ɘٔFe\K] ~˫7oJ1eId=}Ymm׵&ЩM,zEUIIҵ8Jpd߳Zcj^SW57wwۈx,zËo_P'R' 9AlPwwwl2Mxc~OU[lSP_K=EQt86cAwOyůMuM̥<0JF4>C 91$i-[^\D\]_C K#(b< r4U ^[65z r:״ 0gˁ'= @߾=_*R7H4MJ?Tj)f_@p[zź$,a;]_rr:DM#uͩġ5t1~{1EZ* C5yyff2ڋHU)ZۉWY:c 4c,vy%pw0%;*u=\"DwmsoRVE|."mje^ij8qufg?rEU5EALVD2HS:mIKkmZ/+&M\0 |/tnysTiT|Vh2Ŷ, nn1|}JqVvŲ,% ^\\;UZoC 3"jZפi"-u![N\%rp8?yZŵlM,b\C)}=S_ ۱9쥽iVϋj0[Dׯ-{YmXݭ5 uʚhEjjnl)Gf[)B" ZIcPNy2 8˩Z!pb6a;f@Yo&o6h[o6ENeR9fYb:I6$OU%28f E%~(,}?r6 mMsq:U6*%Vkhv{qe<} 4* $9@17u]24mB~ߓf)4ElhXҧnjNsˢ)KTkE8/Ĩ 2˾ZYФyiH0*BA;>e^A(J4],xB5ި@U&rhBQҰU]>ܶ,KE ="?ukTO?& fb&V*l-khz|6FTUt:4 tԍnƀ~FX {'QąWXu=l/)rI|?yw5a*/2+wf2B%6&i ḼXZd<힮$iEGc&qlI2y{uC^eX1c|%J'DǕXU p)1a &F8We)c~P;aOYUXSTqj6L*"F4E1$IYWhBJ/n[Pc H|`gY͒;-yU EQ+(HBQ5[l6S L XiF(ȰjXoA+m @qaQkiӴjRE8DaeY#]7!YuLMSlũpId a4;Ԁ(L^f9'&]XǶ:;?C7- ]$1[Uw,KW(yG1m` ,s䆖cxв;Bd'0ׄAD'M<#/JTKIj{d›7oDŽAfqUf<Ȋ\ uC< &ƴLlu}4LV iQ '׀8fЉ^\t ̈́i햦(ӶBw}L{u8㸔ufſQ%-AUiJunonk8CYҒ=Hv˲$K8ñ4DSW5K\|-$mNtm=Ňq̒[Q8Yq}|'Q8в`<&Q9Q(a2Mn/s6}%W~1\7%\bsV2K$ꬖ i(,Lt XjifcAao]1 y/kLӢ, 3kzv`^svv*s`ڶXn.i˲$M%[!=z=VkɉcJʲ $Ey#EjWA `۲8c:!a;$tZmTMahe9x\˥ R7K&)e) k;dؘڮC4&%Ptj3~<ƂdֶZaYl;a"yAUVE+x7%iA L9M̾'/Զ8l[0.Mݨ fBgKΡz!GW(k$~(s^ړǁ2-ŪʇkUbwh20 1U}w\×eSy^lɳzt2L.uUU2<../IA0]r\I)lxCnt^M׹~zbY3Nsƣzihz۶MUݔ \Y5e0FIS$oeQZ-1MLuQ]veowwAd]_~l7U=l~v! tlIMec׻c>_袂il7J%+븽7o dJĬ3`0LL&CdԄa0gu]X,b>Ỷ]MYLd/W i*3%t1sfcضTk0Ed2f:H|<`)eV$=N3Qb?u yA Kܱ>NO_\:lUqٱ,HFH9u_|Ev&ɔjb>DzMl$K$KT֟n>lc֛ 77VKui?@, &S9a Ϸ,j,ۖtE7t{8Q’<qnl<n+"(~ eywG4xn^B  !UA {Mi/Z,˘Ng<8dNDC{]io!׎!a,ТdihhjHf%mbP=[Ri5tCCx$suB?R+7%: 4 N1If\ݰ\=w}ܮB~)acY.ێnE5$KS|ϕU)|4%b q){eق;Q@6ΎiAJvqW{e)-}?'I=UDe]+}4Y7 ]a@5L]ͤ*iu?ɳn0=4I'@WUxrz(E{V=Ǖ_UYrYB*9Q bD=$M_US3-S7irGF<}g5iaOFb8L',e29јfwo8|G3da|=\,EQ~:`^JhqqbNQ2^,YY9[-eV,NU-G2'q]KOhFwjլBlT=)o`ӺvS K@q1 !(:r'Mcpϫ' Ƕ;@<4ea<Z^Z\&]`Պ*2MMXiRvU.L*s L6䶭0t/˦Uei4- I:jt*KQN;5,)>w)=pO0 me׶,7DmCjenwvf{'l{,"+J\cٰ?XޡB0 xLVdd*@vE){^45VҤt]5xooi!Ñ04CEW4,HleZ0xi0 G\^\2D}(ʂ̡99=u\ڦlqT+m([?Y.Wخ3$#mZR!)OFJ2RJ taH>;.qc[l;?ryy.Q$&CVw/XbHڶ7L&˥lCJ Ldht|-|!O1Y&^9˶@*قf4a]Hm:3bZϋϵ$Ewo>j uol ĩ:BHK;)9@qӺԴފChi RV:_Z Q[jfe3 IQQ?,ˇA ճKEl֫?tMe BNE''͐סEipe|]1=e^L(I yxlTAPK[E,[lT9x˪N (W-旿o_#rV=t,Cb!KEMP MS3G%=÷ZMU-cb:Ioy4Ki:M0rn",c:5?H]%sʺ2Mi4N]`K,Ma'?on8}4V$qe%kښfh<⇟CySVw"v=q)ʂi)M׉xXV(bߣݿ<%Ŝcͷ/8r8/P1V[fHU W $W! AB. YCP0E@Ec3ytyI|[-TReZ Ct:KOGϟ?S 2p8~^VUU 8'3NEu<)ÐJlQ>]gɖDb4t^K<^r>q(θ6T,w',g 3[]Pcx\Ily0EEQEQeY1vTxKQW4fhD^bۡ:-"g=DR(gϩR<|MCp<0M`Bm嵷l.s!*+8Y }onhc+>Q2䮄e{9P_۶y,/h,sӠk)WvC'ߪTʙ0W "_ܲ%{uˊ~[(0֞r{D_,o9$ gggGc^VB%sBuq< zoPt?dyvh d=BjMɪjvZæQ(qZZm }2ψ|G?{m>W7ئBfg1}&1l;D o4Z*۴Y۶-BwNC QeضEgx1I0MiFN.ǑDj-{U6s2 ,O4r%X0 ʊ8D\'PZPԨ 1mrusd<" }FaDզI3pl*1LwbPďtU(}>4i:4jYb?9$1 (*,MvCĩLwNb/ʒbN弽elw;D>O=nʒ@E3 QWd|Y\>z|#Gq&J-o&tBUAuYQe"i2Uxa;UqXjWe~sam 4M4Y{7{=Ph8Unl'9x0~mI+buYϕ5F34oa^vnTM Ն4d?_N1PzHmK InDy6muC*Bߧ:y ~4W{tv̧"3qB6t4ungn9H~6zwz r֛ mS3y)bUE .-kl%];4]㋯R݋iNh ꒪6˚!Vcz/ئ4~LF!e%IŸ|2i(daZa iyYs~rBd34C4tJxq*xX ,,_}}0vb)\K]KzT5o t <&*Ym5M[n{$jM4$b0UEwK,ˠ$j]lx@Vmۖ Q5n6[:Rޕjڶ#Q>ʪidf).㑛f`YڡHa{"O-ejjT4A(K'8h.Um,X?c:]߽2/S75:\ R]y* 4}Ce9PeUbب8KXf8mPXBf (#-PM?0t& _ VwKի,+~c$NDTlunHlXҺ ޽}zU $ 3wZ44c4qaulX9EW5^MsA_dǖ:χ3Munn*8Yp~nW+N'iNӴwLx9g紝zeDab\|GIʷ^= ]Ӡ&=W׷TMKxw8?Sq!6mKeE>o߱*~;puur}_R%Qȷr{{NjWoDd*i `Uole㘷׷MRW5N]mԵH9:E|yu XN#n|CZpIi*ҵ?HKtAQ7Dk,4!]'o i=Vmt$)fXEbk KkiQm[2 7A4ǒvd}azG \qx<☦t,uzjx\o1MĶb$ir²m4*+nmBa/Ic8F5 ]+-a5X( W$2-Ѣ M&,k,tjMCTuɔ'Oy`:ggg wޱZ.Fv85LAj,E͵ Cu-Fi+YUA@Jk'$i:8a6>|$4 *2͓)M6%zNOO)˂8> 1oo%1M8]R4/^GQAE* b>e٧:6׷KQa)_yl*]x4p8j NTJ(ٵ5I^2BlˡUڬ"ϔΤi;Dl}ZJEuX&%/J\W8ߦaQYOmiٴ:x4VFh@4ltM#^L!%[zzZdYaCe4&I^8?=a:x.ɔvd1HӔ$IU,tʼvp^sܰZoM ]gg.bK0yhA&-*AGEͷm7l;A35Lش]|ms<k]nG躩kqqRT2Rl>y)RISl6+|?ڬ1N[Mb7A$& #en)דTd,}OI3djY|ItS!f3RȚ%Ks2e۶}6"l˲ ӲDD<{9g9Y%m[+HwǶL~yOi~.mJG>;9[泩OCw<~t9z`xz7 ]{lץi30 KpDx- ˖2\x''soUfV^,/EUԸ#X)LJi8K}hIfCpd" ƴ,h;T4djXzk$M'&Q`qvl:&!Qq6Ke8LݽK^572uS{j,T1(T/v/pl8h3uS qlꦤi*F0 0tv1eEa٦BjjFq8=9] O'b̢(1tCŔYCEfYH.Eg(JLۦjyLUUYpww7`{N1 b4$͋ CTk[T4"˪B>nonEϙGLFc޼ya .b<}AO&B|-[.5T5T6rvm3xzZf~(Tp{{>XƓ`n<'J㶃Pu4 PȲ(I(S9y&J=w؄꺎ii& Ufl6[&`Aԡ.Lb5 ,!B,[.ϗ*l:uqؘeL]VaY/2l% nbש$Cn0Eh;]# DL(2k1 LE 솊o# D')QL'cD|hA&>=ױY'̧2RW/.JiQ ɘhF7A.'\/%5Li *ؿVKJ,J6=]ۑb8ΫN)M](*4ô$w- 8:łx޼|3E]>?5d.gri1p I<{OSB.գeI]36-mӨx1I *99;#cڦ|,arXR>|O>9=$$r&E =۠:/>kʪd:*T|6Nrv~~DZMnoohZĞ=gqvzS,cM-I2+k?{/ӳa@0w-RXpXo_rmE!)`3ܾOYY@`Ӹ}owyCiМ2RW4E4x ~@uI7# <11gwwȲ}kNOvufnKa9K]$Ur 56M8& ض-ʂ֮l@80DY&bl/Y%!UlR!f `XO'KW$YAnLG҇8EvPGhꆷ>?t~ )n6-ڶ``]U.cS;~[ QH EV$&(aT٣єr4AQ00 cˎap8 az`m5J)1h gn7/";ؾ-Ǒ vlx4K!2ne"M)`831\>oWtAӖY!ڦnG]M'xv|JnXСglI3/ $qbN&li{ԍP;CV7\7҇9&umzYgXm:둥T;p;,P9LGd1OH,AA>Lg0`% p4IYnz@Q{;<$f.KRl7[ 8( c]جF}Kd>DgI!ab0H$18aPBBx,FhJJ zӡ-f3M'PDDCp>}#jSn,BZ w&VCM<е-o,=TMÀEDv&Nw4}JfX% gg4+є}8]W_}4ɠwL@4Olblh4B^\b`6 # P%NOZ<8)~;6WR J*rttd@j=mh$iPJ˗p8 0L ,ڻѐR6.K!}ݶHCL&SbO0pvzEjWw vGFaHO^fGy(rLY67<m<{GG3ULG-UO'S5})Q;P }CuU÷lF(EQ)al:n5v;BeYquaz3Z-Y!yu1ϱ\,@MuP5^@/ &pR5J{wB"R&16h:DLFC8 +"Tu4I0MQg IDATl2F6 t>&V@גP= д`f3f3$qnhpprttfCZ^YKI4 wM='0 k*8&}GRx4uMH#}TuXM[K۪QQp:PHf@`zD'W;:ْdTA($B&/07d'YbF5yN>E5mڐ=Jމ]j!#Zi@pBHL4; | G#cHQ&>BdUAl@xW ^0^VAq_J> xw8XZlj?nwl@&&mmangHlOxE KXMLJd P_+vE}YYD*y}kk򗿄R ''Ĭ;(ߧTg{8i1hPQW#)W5"ocÁG)MH'Z5MRͯY@)\<9LW =΅*\f=sR $G?&eQxw={oߡi4ွI7R}aO?bMWD=˕J7JRHRi DsI$I궛Q#B?lh5˥3yg3($VxU njBjx]GmqvvNC8;JZ:eY m#5>inCEX}0%ka.6a^ȄKCM2I⵹th81lQѠy£C$Ҙa c>CTCG@31x4gaG((_22kFthqV{&k<=>zd[:B_%!|/YI]ɛ,IiFjH A"/JXiKyS3vٌ҆~O@Nk|s\d0*Rݡ*+T%MS#c:߮"iiI2(}XI!/hX5ʪ$JiUc%^3 51F 0 z%otŻMb6кka)sjiUU?Lh[&s͏e~G5sDzʝ1]Hv=iB'SYRT5m5.x~@odg!YV1=ZNtz!{۶E@ʲx<4"ks:l`lkuڦAi6(q06qsH)o!8to[ ycd!*Á]HA}s;`THx@}pXls)]3ic0 Z0}Œכ R˪te]:-YjJlB_=ƾZϱxX#(:[/\>An)aǪ 8xw$l0T5/.P.xwж+JNu( _1X,7ŵZqrrj{tV R.etjM+ZQ<:m[jn(rai.(diU<Zk #u]Vn\.eBVkV#P:&.vu[;RubQirEDrBlYAF޽J5S*t`?c㶟MװoNZӺqho 8BGKH.0 DPAzIǺϑpʝeZFd`I G90 ٮmh ȟyE 'gGϞhh[=#谈5JH ٌr;F䴚m[u!kvG7Ȓ"ݍaYD):Q%nr)Z0d$1..b4$w7i! iU5E}!= *P0]Lv1k5:̑, ya}} d4{{}YՐPQip-/%!65ܨѺ9TwmR,Vyٜn#0d1 `,xa~4'z+s%[;|( )|zwG j+B_tP=•:X薨$GkO>9J^"+0 dO]5fQu[H A_~n 8;;啳IHOm*(@60 PV5AϞa89v-nnn(,g5k5|0N)@PY:M123*(ɦc$I$ ?'dPcwzj...\.5=k:Ck{Cwa͆`EE$};p0@]7Ds} QŒYJIʦ䀑V,k]*Ui!j9gBj=vx:G+Yx-Mw4)Qijx$ j,N!B]7RlAIk΃r!%Oㅑ`OnlC^@0NOzFYR G=K$Hi!PtwٳgxkB,O`Xaf<| 8FH* )l\\\ T(DRb|uswr] 34^MA¸wWՙyA[L%%ˆq3NǗ- =ʗ$ENY# # "4MnmA,U&02$ienmQ%6-/Ppia-Pp2 ң$)L&cWV'eJ`V[]هɶgavvXseBt`o0Tf=ha4 I7ó׉hnlfԏ$ ;,[mC0" 1)€\bu9㕕 xOVkݠq*k#jq<ճSu%` պq[AVo[ ei(@8 %e$BpP/ʪ6==ڔ窃sEYDDps@][$ }{KnE( E wwow<薙V)(ݎĶ^ﯮ =RDh[UMly-U(MP{(b8%:obrD8=;%v,yOWdHIk\B۶w5Z|/~K<} Î}C`cXjfjqvzB\}l7[$q8NPU%ڦ!OAEQ`2I]G2AʽrD6<߇ODpZkE,!y 鎣0ӶnVynߴh84<T/*d:z'EZq¶%@1{Nw+ or%\5sУ۷oQW5g?s8q|^M duqb~|nɚnI9./5e@[d)8*r@UP?~G1)N(#,g_H@ڢ'j\2S* aMCMz,س3Z = (dYj\5Px$&KtS|۴-aZɓCGXQAH !1tC!dEMo*$ kҞ0s"'$n mqHZ!Po;ifWpM-$F 2,,^,!d*B ~G;NR:j4#6tId lSG6qc27l#B#ZUl\_%!HP ϋ!Tu(3Cj@ =fqPhE iQ K0ao:{,Э'P8!Qv}o]=|:#/lem[,W+w?Vc<8J;Hi0YxN4)8€ 1){= H*6kUic\]tclmq4?tOob2b6%PQHyp P8>>!KdT8!oc<b>?"+<7E ͰZPk$&x  A뚕k`1V%ٙ9bm;]ef:1 2Af6|3MOva8Tu%q=^Bvʗ S%1|!xNy6WGEw+U[4∩czw Whny~v ikUUsU(H޻}GZ') QWX,7d3d)iv-"+lwfCi,NK޽u(еr}£gM/Q-ꦆTY6T縻E1H3g/fpIb<8GzT ـƚc̋.1cZ;Xn+ PqXB$l6ICoP%,EUE&0Ajmz./#IR-ϵX/m՟Zc%cfuM0|\Dӻ8NP=J{񲳩!O_vlvHkl]!")q>=,4mY'Iރ HjR "仂}G)R BH"/%ugOtęfMTopYڬf~{4xzxHFeܡx'@UWVl4pG y Y덇( 9阮k={R5Rx{r ֛8ɱ =;9BӔ2('Cw=ftwd$ ^/8'HӹhWm+tvCcOiHIlfف c3>=nX< cܧu]S`7{_ <T?МJw5Hj0b=Nj>h"Wj)!d~Bl& (\wWT4OR`r_ۦLn gJ!YL 0_~ Ƀq+u$,3eVLJ<Х?7/{0;v{{wv;w=GΏ11 0 QW-8q<P3(M@a&S Bz&n J4#(pI~Wٰa[C7-3tG.`n;- |;?R1B*u0:C e_`g:rI;gjNa6! N* /wGP*ϞRW 3OQm8=Y0/K@"rP!冀I~v><ϱX,tx^HS{{SJ) auں,B"8سW j)fAY+@JSUx) vuY &PDEŨYvrrS?/^`8h޺X,1 IDAT =d ܰ"{E^5-}VZkI$Mqss 896caaq>cqwOCMbcZDa(!_GYT(-;̣()8`P6㐇|BhXд-|6 \6vͻKl[{B78?9AGxﮮ!"m>h쐿=-15A$VF#Cj( ! >LDΰ:hF@Gh!͵ _]Ud,ݦ`\ th1B -lB yU^,J͎P$=8?j, ի+GM5+(00 ("E|Ul#j3>ϵ}vgʂn>n>Y`\JJW}O9Vk+UܖvA q:Vno/6iO{7P zӹ^Aڔ+OO8?&B',8 JIĝs _GYh90n/}b6=gp{{*]3b0h[MBRYLE;I]Ӣ3bz UUTH1ik)a'ĸd{቞dmG|'Vk<<<;Rb>yB RJ(I2B*<Fq v޽EY._~=L&S}u]{\FC!ItZˏ!=8TO&2=F5}CwJv\j3񺾃'Hlxu-<kѤ/kGNŞC\Aݔ4K*,nTG)E]DA@vPp8Ys0>ӛ =NڌE&\%x=oi4hBJD!(`"2KaVa87(D*!,`X"cywϏ0NZѱ @ڵ]jitHJI\Z{Q"/rح Q-3۬L;_D 6kUcx0vqBh5\YD`?z,|^aRQwAUdyIR!~{ {ѣ&K)1Q%LQ#۲ov ϲA$MmMT8 ޽DYX6ϑep8 G?!XX4װydOYA /K#C\_L y -Zl!fCA) BcNQotQyzғECȼ( in7T񽱛)%? CL?(] CnGFHUU2 GyC=e6[ 7mk}GvG 7׷ 37o(>lq@aňcYnjdiFkVUl"Hѻ,b,+ -w߸ʼn A< @ ]6Y`ݹC_77hyܶmv -p-7p8nnTe{e<'jeQ:Ov*=[КqecUW8?n9ы|1m;/&ߴ-ڦÆ>>>FG8??yX7 ww3AIQU5{^ vՕG&\۞L&h _H-ƣ!= 0%J_( > 8=9 Ef>\xlmjxNam4{졨8.CL%8Bo; BA[:?][TM5|)Q79w(6<0&U@tE>G PRC?Eh* m*i>amAkE/|''6]_*L34MfAW3N__]A(i0.B"NM ,JS:Ir!p|z'(e:dod9+MSC}\P ʲI|A 8::Bg:l[Fcl6k4-)Vg'~_iݖ4 liqU~ȧ Lija٠nF"OQ+9Z"ۢjjUE>2OVV/1rF sv#5sAUY"M36krRB-up@*%t<g~TeVqBm'!T0J0@QKJm5c K Yt`QvQx C4Wjٱn`韆=VNamE}@VTM \4W~W7w嶏$+ D51v=CDO$!%noF7d i|X 9|wjz&[BEU`>c4!E8d+s!hͯm-a;c0 }V5%~/E֫:* "=}Mnprrdt$#m&U ()apz| `8J)kc\B狢@':VGG3$I PկF] υp6H3\\\`YFsw{?#ag/[ ȔR(9=;a4EshhWWW:* ?+4uauDEM{X1Xm)R$^B`PmUm?IaCc>p^bx F c]4$'e):cgUJb2:Qn dV54Ch i47&1P=G]UnDUsn[QDmM:?gvqf#亮?oޠ:^z  PV|1O(v0"n<31qu}cmn[OaXB Oϡ|8 !UsbKi8Yo(Jc} );f ysw$vKJJ|KDUJ(R>arEBPpSՌ!b #gstI4̟ .勏uUb0 uӢn4AԲ,,!VcGZ@9Em}GSp5QTx(={@Jʀ @DGm[<[j .@+ڪ*Aݐ?͎A4N AFx6/T!sB y ߾beMW߼1&#=T=iM/1ۙ0CB`}ʤ/h" {=4ٺ'9\k b#J^:?O?+tBB2O&dAki{Y3В!a"cjX]b5/#bHnLi8"!gooE9_*$ao 1#d:߅bE(&,vEC`V EDVwȲnXWb7ܦinᤔ(a>9 gEIz"-# UQ |6dIo߼Cs'4ch5+nam{u)mY,k9DTI@ ɘB<2H6 1Pǁ*vjL yQRR%8#/ y8Ui7wD(?$n652@ثkLc}O2ptz>-v-9x{ujpBf}F>] "t(vxT=J {͙=%dF=$Dƣ+L}4MEK8$;JA HAc3GQTXw_߽A/ h4w{$aW0(B! W7wGB^i^ ֺ)јy/;9 ;f o.c $qlb 9ԢJBEnf >:Sgi#N>UOT |'mrϣͱ1{Lƴ W vWK0==}[H#"NG xY2#@&UGGGh;J4,ex2 nA]ִHqIx1.wzl)jV>tat뷭^ꠥP*blxtJ999E'9o48`G#$aD<s}`u͆Rr|<cZŋXVl6NAo`Q:==1/ۮ\qs{]^~cбz[=h]o+(蠲Ojs>2wU99A+ͰXK(&v˩BUvn@T4M`z`X%:~޽rCuhtGB`Au7eFYGK_cه .o0 6i:-[H?[>oU*KVkM_/~Wwx}uÁ8aICLghC4mj=|Sh*F89{':SfF4M\oP65궡Í_RnS{u$ɐnn {xp@nb8r"OTֳni\a%imDQ^ˆGpmPW5=Vz`ޢct2gϱ)^oT`^! ~s|EuAAVun)De)ݴ16,b<W7l| }\i1qQ~NjIa6Lˤ'SY%Cb$Ipy_|9ѕnEYVT#7Z!kUUL-ݮmcFfZ~Ay8?=E+=ڦAZn8v5E 0SP(1̓ԮSxLLc?, ě"/*Gt0`"'mYC%slœ=m~mɓs m!r遮ǡ#}*@]xw}} C) A `z,+?ůR(i,XKc9H3^_򡶬s}#/JAn0 q\-11_jBUdWeuh} * H 4Hpƺ_yڴ lU::Z{?0 )sܷX[ a3\\^bd{dYcP8_+rsv3t]K񶥬NiUtߙ!L#r0+Ȳ E~CQԨa믿8vӓc?o쀾eĮ* MuUZ}جn%|ʞ"釥g~U? ǴpLC"}:4{)af<؎KJqէimFs,)rm}`a-m>n}GY qo6Mj/Y5 n ˄g[HPW QDuKzpBeqenIJe ˡ{rD? hT6hE4ult]O_-T5M֫QHψeL`&?+;?ݝ> i)@ 9:HU@o899Bo6*c邹KkGtCv} | GGk\] \^bw8O^Q Y_M8vӈ`}I)F AY(m[ؖ8 qs}SlFLJ IDATӴh8eFC3)(|7w|)j{4m 6Yv`xݾ'tʻ4 :>|%dw[۶M~mA7ܞpub/ I,ScMKڹ* ÀX&1]ǡ$<#Ĭ8X=ݴ-W|O%(UQMUEj-ڮC帾-Ҵ9P'qB5n뺦<$Hnh{(xj0dՃb4 6'&^TҔ얅m6-}G 4˭d ǡ}n0dO&خ%@۵@9C^ Ǒ H5C6e]# l6,s@,KuPW5(@U74R24x;6aBv^']˰(JўXCͽ jckkW+I NO#$$%n0Fݭjٌ#>QQL. dgM]Dv  CPCUN;Rh>;HO@u A:JJծxrjźahT(5((KVK-QZ$/96tFĝiB|=Ͽc}61Lp]0`j@zeI-M}")mۦfě6a3۶R 6]רek1:]vdY>@JCQ`8*mY4lC!Л>׶U>0,ؠ|MRe9mik|+bn>61Ah.u\ZvRjoa4^6* *j Entoopr,wyQiij|Q?/H2˛ C#0XP% qQd%>:BS78+s!P7-:g{3|l6- A[}a,8C]}Gaa`} @K%0 XWz>uP%;Y(B\I5$*|8J\N C$i(a&ҕiP0ؘ/7'߼U_Jn!%v_.9eYp8P ;ҩtXүuWjV0Rҵ8%ʼDݴYǤ ɗZ@pn$i0\j( DQġq5=wa{\\b/aˍ5C>Yd9]{? B|'gŠudieYH/?<=k8>o/?L۲ )D:pm,^^bZ"2Mbmy&=AD1sX爣uURgv\rqQ7 TJoV%KMb`l"%ߢ,sض a%FQf)†흖" Qb\(1IOЏ.Ƀc~K0ݻI<E# i zZ|u|O^ DqL mײ;ՇQڶX:mHFX4r[3Tc_U 5Vu(ޕ4W4TbŽXVhxG^yOZbX^XEA)3ϰ\?>f E˴NON_U%S}Rޢbt>ht")Ym1neSW^a;\#5,CuHdlY<A'?ŅVu CkO /5\}tMQ5 ۤ ϣꓩ,''x ap`q$C$X;Q!V\ϝ6XJDFղl6aw8pð y_JQ9qDY\iDZ^!"Yz*4MAvm4ad8^YU, ]GX TmAu]jkE^rA64tU8 QقA5YDQJ 4LeUٳ3JYҺB^4 xϱF!exDj (,s#]( $&f ۶YkJte9M/, JX:I-t>0?dcJ,y^͛_( $],4eŤGI~ȃXɓ3q[À# "MUQ0RZe cvY℠0k̗K>A **|qS!%8Z3Ѿa MS l0 uu, $ $!/f8$  ɓ'_Q[4M^U*="@uQ]v(wIҷ@fߏڞ8(KTף\D#y=$^:Ӡ'n[4MnQɝVzbiÇLY%e[pl!nr ֋9:FP CwG?rJQoMSJ6o&@ S T8l4R"SIveAaԾa0ta C<#,e2Lc4Iu8 p-J&/>EQmQ[*k2M% Bb|r>cm؄ep"WɟhQi:L2m5x,nno47+Mg?hQkuX)L_|61tu]iD>Nt8ڎ}^<Т a:LqQ([MSJÈ xy OHb+vIZA@B9[|&+_RJl;̓]KZCT65iL^ρճwھїb1CӶxz>4 iۤ3 UQeuh?yM K=YzR̫7U&duY$IP7 ږr:-{D GkO#)e4RB- ..QL#$$8Ͼ n*U"yfq498~QBY7SJɲEQM)R"h~j $ Cϗ9ޕbz7[){fB#Ү!"ؖEY]c\ mVj Rt2'1;/V٪|c n,h8/Ohc)'0BEdwڶmX K<ρ}r\m! gs#fFdHCWq`넗,p^h6,Cq{{8d9}( aW)Z`+zZQNzmz4py'{F(J"rzKf]nw~@g yCdAaYNoeU(+:cJx)IѬN1]URLQۦMUӒ,N"Y[UV׏{x 'PGeOF0M<#R]̒..!8ˆm]pw:,RsVPy#/2S tEMUQqoal&ݎb6)NInq`&a͇oQ|q˗/0^|gϞao6\q" Cd m o~MSsFGGG bibݢ, utClm;Je0&$jerB:DdHMnݎG*b[%A]~n$%0$:oa`;lЁn1#'P1XatTi8iL{U擧gDo&Mv1æiiP|6vs198 z!FٖYJ[ǐ:\<BQ%l!KTvRDNgTױ0rK/!m2Z->crlC6w`j8ђ"/+4Vi!@\R|r6#ٍ"U]jzб(,t-]<aoHXq!+0Ӑd}|68Hxц21uBƘ$]f, \ǣ΅}(fr$l6(w:g%ڶC<,W>(!4qCv8@d!B[p=-'[ᲩuVal [ y9)89||$V3 qՕNP >@H5R8p|E{j-m( rQ'c`54qm͛7xqĉMpȐ9,|c;8M%3f0qE3(ci4H҄E"1㚆#9.݆a8pأ[$kZ&fI ϣpfDa:dG5 'OQC`U9Y'`|^k9EV% :j~RG6.uq}=X=XQ?ȞSi;^?:g1|`q#EﳂLBh?|y)8"MSI[QxKE! tBuںP? 1Iڐc-rh, 1 r*' a@^(a`PtON2Lj4?,h7u ?Q@umԦ 󑷕B>@N |..(qPW LΉT8q5-"YQdံmq{{ ߣI۴A'/޶]5;6ggOvG-[*b&`ߣ( MTiFmF*d $іgS// 4E$<"ك`x<ǠcU^y̲9t'4i1zl֫\ ŋ88wO)ˇq,M0˦ou 5+0`Z<[,iZ()cW-97ӄHi*:*,/p=UPCap87hb4DQ M=.//A 0z` IDATD&)mSZ?CYÐDau-9y%?|X+[$|>fA4tI?EHEQq\?Wo^ mf_=ml6Cx.G؉l=VIZ{vy;!>GI)qzzBO^Yz~O Z4 (Kضy:#}cX~CGYTZO:*s( 1h2MՑaѴ>lNnc썭͡єC}8uML¥ߗ0IX,r8ᨰ0QhꈯÐ,טH6-KZҼxIBbZkۻ{ #}[>֋9Чx!G!=w 鹮 CHҘiw-wH]UC 7Y#2n)p# CM }e$i0`}4qr T+瓳3L 4;WI Ucr!p2C#:n} Ahbڮ"KIܶ6y4M4D`EWku!PxQpPU 0Mw =pqyka;2м6Nʵd7 aC et])/4a?hTTk~tt{T:|0`zf&Y 6ճ1G ա.mN]8uCU 1H(-wߓaUlw8=},EYh YNF>!Ti0K hSm E|m Meֵ\BH!#A@=)W?r@Hg3|]H gs^ƁCm# |K:9FgIߗ\ss/>b@PYO$Dծ(BHc*At{t-IXnn`-Zi.}/]fy Ƕ!T40xF:JzGiR? ju]#`Mӡo[QLF78d i@4b&HIix%.-7(T{iF;qy&A˴p81̮o)+4f[fsOTCt(STJe4$q}}q!L sȱeI4 C cy$!XQ4%͛OȚ˟$a> #ӈlFQUE[%|rha80CEA$o> C {(q31WRÄ́Q}2MaL.//:ȳ q][~ e$Ap% )3~ ={11D/T_| ^ yud•RuXN1쪚Tq)^|jE%ZI`|l,EfkL,n3Gޚ 8]&_L@ BU]t@IБRlӦMY~c(PcWCyVmMi )i_ MΉ0 0 #҈ig̲-m.d$L hPun4iJq\h"$%;*8q\t=ǿ/ XR" C\3a^GZz\YQiҨ$A\ @QnK"`RylI& \-l rYCnm]C8">}Ӣhm ;RZj2nb͙I"|~x8qk{)J9P%~@~Cߡ( <}acPWm mۡӞ>(xLXCʲ`G$F=&UP4 V j|)i8^!!%e' 0b$X.ZWs'EaQ$AԜ Hˀ!ŷ1%#I=> Ӡu8.6->>,M532d&AhN۶MfXrG*c G9g[JS70,I {yH*T? l[~Q7N}„FaEg[4[Z\SR8R0iU2+*5eET4?d 4h ?0,c; Өaa2;;8x=C4J̩$5Pr;jvxLg!MpBAir1="8zph<mM$iF*ek`4|ik.s]~lFSlc &1cS]״-Qv5B t%$ӦgT%ˮAͭ2-D)2?O=K4껮v81cȟةǑ*Dm$GyGq@Z+ ɑ w8 h$a j<~#cuϋty-\E\ +uiϟcMO 2ZIR7~;M <ڦѤ̆Yi[ dwp 5pQX''n WrEFP(R4DVQVئi"c]z6uhxȢU[β7 COLl72gd\e.M@NGo<և ]?&)P 3 *&ЃM #G}KI[uQWȢݏ Q@Gjoa# =8nx TZZǭ 0h~eBGh Uk']aM ijIJۡ>E0LhPzN <QS!zpՍ@2mv'R:iΩZHf3>(Hk&rr›O;AQʛ??Gf=1Am4m::T枪"b`m1YF`OnMba3Iq@96i=*D ]avD~8p͏^M&N#8¶l]2[*KmQKq00[%䨃n}#CN&D T^6Mx$I/!*^rZa! rIIyE_QK)Џ#Ib3Y\qЀFA695z,52{j rC â Y?z4AEn`{Cl0`BTݖV>M^<4D`ټSOwjVtp|z~)U e ڏ O*q|Fߓv=^hLp\~m;zVq;#[Yuk%+"yQkޒ\[Ȑhd fWt:5*XWvEyyc>, NNJIIӳ'/_,GthmG6C icF4MQޠLQHgC3ʪ IPC24vDЩ0LݠH@lMH 6Pb,L7(C6i[xG 6B=)MZ:M+ !$BU50MZI)yO/Z%A4MԖeiU'k [X``UaXI&uaPL)A \yVٱ92R؂iH(k%tx!pL25̎,!|eY,JAs Ir,7W_ cbONN4-BEu&w6T?}WWW:qD !J[gg8=:o>y4M|0yQ>,NMȮF!  CРe>\ (M;`@cB!&1h'QDi9. L;ݡJ`"{md Ckض=,ʵrP?Hܞy G L UY|@u`JF$U^LJ4j@g]P#H3i"Z !pwzh#Jn}$x{64 56<eC"@~~(prz۲xc4='HIC 0ҬasDQN89=Ɵ'kr`k40F8\rHX$Ȳ eI 8K\?e,$M!G u]0Ɩ1'?IRLw{򌣛$ayn`sT9&JRmtH ՇH߼yl.ƫW4w#$^A@>(՚ =8XH,it\qwCôoab?ԆR0 4ITJt\Nu,`f7]7聾jS'93(ufim7u$`rW4\ŝ&ئXIy|r"DZAZ`L۶>j) ZcJGRχ>rwB# ;hE80=V+ggLc\Y =W.u;AvG~0M?`H3JIa,mm%<߃mۄźJ@[eAS>TaA9k8?0?a>p\ҘUHu],JIT%B $qSLU@H-q]ɶrtƉF+I1__S|0 _*~뷎2я}PAeetZ&dnȲ1OԜ,k:vX`XbF4m%$48:9ia)?z\.XUC4-Kl[~ MIJjtMMEkDqL'HҘqCviZHg 0Dx@Re]|S$8dY ԳBe/H}lGK +0 ?q{sz'q +`T'ؓ90~,(88;;Ǐ9\EQ:88C%?y䍹]ORo<]¬IEkd4C][H!!FEG$Igha}#(-^U%/xZD :8>>1(YC8xVU%cZ*F!ںfSh뻓Iʋ  G56?ru )y@CdWp$Mxr:^-ypL/yyO$Ir@I?Rz *l1tд`IA/!O M&J;%ģi8`6i:t$CzU^J#st}ɦ#ׁדF>g)'ﱀL _4 Ba@<\_Bxmaܮc2j:tmπ<>C^Ki̫ zrG^Ps#|#%|ų/ !gE3Jt}OM8%/e]*K=yrLdh<{vJhN겪i`p4M1I!s50ڎpKl,P Ͽ;l[tm/8pSwaѶ ;/?M۶8}zfc^!"BHDIl+Gv}(ub}]WX7WvnjdC?;Byp;fɧ6Z=HHC̨qyy||iQ믿FY=2W0¨F]|8kwxa;)?aD;|U׶0aԬTFG;_]ϵ|"Co5S+}IƘ, l}\*[-}aa"+sDaߴ`Jjh뼗Ri5t>=u}g_h1F<*@cXs}aaTȋ]ffq\̳>F)$pjNV}{>{.QD'p/#jR/\,)Vx%\)nx26v0jŞFib^,( (O S?Q%t 4+Ei%˒1B$Ev֏E$> K!s;qjŀ1V mmHڡULgSXJM]k)ȭ`([BDq=J eV 3r>;XǐG* Hv^C~< ѴEQ˗0Mg8/c| ;WC;Cg߇8F H4ǐъߋY+O`: s2<:%{p0CXA#7TYUbjqttdg=1m> ؚuɏ`)w95/+ BR=BMׂ&4`"~DZ>;g Y 'S3?:& i4KZ-4- 7޽{GumMӠ, QL ς@zs8@v,Æ|k,F(otMJk15#ŲO_LK]_C= _}}l806G"H^(~@n:5uN(Dے{yakXġ]ӌ+xS#%)?-#k8<$o:I!M "۶gl&$Y+S Se/(qszF̴=ڦ8F51d85l9dB֏/c-@#kUbG,BJIH^|J$qL-(Ua2Ils,=>}?0f34 K>8 J*noD chrj<}t>hZ$1HH7GDq cz* up}}(Ѷ=t chIO;DmCG'kcĮʊpFimZ &5Y<חJ}aF83t},Pq~>\$ dÕG( bZ#m0hBS%8*6d:CQnw~py}clnJIE? BF憍m/^įgX-Wx JK #V* @ҁة5PT%N.u]ze#6 M7_|Tt\-eu j>nmp jU7g<8jԶ`5|N ,жrIUڼ@.E5%jR ?=#*iN>S<`Z+ CAs}DQU;,U/^ IfzYȲx>ʪd| {j`#Uy>A݀mRT50aI&~y7_#ML=!y.t]i ۶|:eixB*6"0٦>= ;JÑTΛL"DŨ*`O |QHU[B@r9kKu[gnQ#$ptGDC(r!}=F5Z}T;#&Mڪt%%,ӺE '^"T; >|mpuuɶ2)x|@×.h\WWDmKS:\8} %BQz>,Cp]Ia>#_yn',YDj .xS:|` L8N! ȠWlhY%^um- 6kk{"hhhX< ݢm[haq g_*0pZ[NTϟ?GYiܿ\PWEQ6r}pqpx)8V##DYҮaNAgE;n_u_iSi5 4coa6Im-l>/WLu0д^-߰9iEaP7>e'fQtD9Ւ[Ŀ-o!h&i jqjfI3бyǟ~b[}n"_&W)m״(i޽?.^L\UݢiZ8ۀQW]ռ@{0-7OU\ ݀ji:lb6MIod/J( ʒ(OqbB4ibsFK컶è4{},q;6,<vmϑ90D[7Fo.>hiء:AI R8k7-&q /?{c0flfjҜ?qnǼzG om9i@# @:}(~4j xQgTIݢ(re΋lO Br C~Z0u*{4IG?FLeGQ<Ϩ0'>b}@ veT~#Mp.J}H{ MGmc] U٠QH!)d8hZ8]M" z|Tо' r\ rp&]3W4U L\@ qȍ#r3tDxrrLwŰ.ʪgOYi[\\\fչ>~5 YNtۢU3NH sqyЬ5^zaj53e99'i',sL&<;{nb$PDƞ>{#tt=w8<<0 @UUxzz3&5+)8VRÀjrٔsV%՜g1+Sp}d!*a܊4-QUt9ڶ-|/t]L&)7g0qUS1#bmOvGPdד x۶vȘa SYbV,7;y@]Wb|Q880ĘMSA$0ϐRGǑp*l6Gj(NyD(fއac)ېׄfq,3Xt-4O'[DQQ4QMr@ӶmÏ^>V'܄#~0 ܢ"/nn6'-f[3Y+>>y0MQ5^qgg( _`1j0 Hk-Kzl:nnn!z0H&^MΓ$&h@VPɇҘg+.l m( \\^#N&\M{y>c+t} Q G`iJf!޽8h2;7hv:1&Rtc!$B?v@BSrRm+׾2UDЛ+1N1M:K0CqHӐC5J>-\,hOu=|ʢ58df%ψQq_E#r0.r) oA8WNwc{B :Nji|^#SN( ϟ%UH#9no!m!˪ny!QV"Hմ9jCBxBH4!͊~krRaGJp~j0p,#]FQVeq'eLlGxLJQqC#6٨FSjiT-6˂=wZ.Q75`?[ԓ.+,@ uUabFP- Xk&7D7t =f(ɗcZ#LLl;QH:6u ho A7(1 .Ԃg }בߋQB.nno8#q||,>% ?`Ŗktm"/mpwK% `H}Ҕ>d,e-l%r!iFڇ3 )Ķkw=5R ` ~ '=#SzF|Ehߓo-)sTu-eIlUV%O0]! 7BtܾCa$-{\_g:[gFQl{.] ~B .?b^UAɇM`:rǵ'p4jzF.:2gPq5[!a}S,Q75~D&[^cTwH&Ah]aP#4\rkvQhpkKe=]H%|pNfᮣ={q@}!E>88PΕ g? .YVֳv-h EN R ׿x8c+:0Yt||6t"BF| b_!v*TjNf}s+n!`G< F\l>OҚo  5GL9vUݠ* aZw5&qƒm_IfPS׀1M{h?Z'E ;c+eEvyo2wwX.%ƖIڌ=σ5 wOzB>Ђ\. ,4]oGMuY 5g5Njk̒rC IDAT8}Uq]_R; 5!1dLʑDdDb1×?Ş#.FK"*z=9>ׯp#;qbaRR#tE%R,D>3W-@$`b j$7~_QV%80*jI5:PNQ>Qu6-˗/y$Ǐx9k@kL-|48! SBE~o̱(J*`X,(llMQ&a\Й$ v=GQϞ=fC+1s<ܽÕUUu=oZ9*$)MV|Ih\y><2,YOӰ$1M\U># z I0 yzxoM$mZXc2dpzi?S!U:n6[LӔC!5HBK@ ;xdž bT&78tc{k!⣅ZQÈox@;wˁb!B Gck.vsЊe ,䅽:vJ4Ewhm ˄K3 NEa+YJr\s%ycY}Z"K_5VI#}H2{Optr NP 0S\" |w5˜q#Ab~"c@ъIC/G8pˆb,=?F7=mwww?Mo!xrLs1aX,37L8::+c6:rx30B]ZWV m Ot]Oa[Fkkt6fG͢jHil&o>sKNϭԤ'QcT`s&p\Z+[w4vX< SI~D4Lq4v!XNganmo=Y"DP•VyV-3 ۔keFU,..\҆`vbn3>Gc_}CP\ODz|@H:xx=+|Dc( "]W"r}A}Eeb>uU! B ]Yvv$3n$G^Ɓ 0 , -]Ɓ>ftm3sU, ]A=%t l7=>{nN&O)8Bx)u'*jm: TU/_.*_i]a " =I/P%חCUt~)E& پY+Ugo%d:<^]>{w4FYJi-sdYfIfT{SJ2IjQȮad&i~!.|h 晴'Oœ~UUXc& (#DEX./zݍ-0$dO&lJ1>ϑT5Mʪ%,sT)bSt%O幏jltW(Ll+R a%\!i6j[f"[~ -/qt|zSo1Hm M}zF`a8v '&~<.DC=4!窪ֆMN۶HSIS"z6F^/5#mN/f50iMirl7;9ٔelOy#$SN:I+rGQ]bH ~o߾I%7EȖ]NE%d1[vW *M•>s4I .ҵVrIu&|pԓֈ^/M~I{O[yJZbe1G+MͬxZg08;dnŌ qif2FhG1xb !(p!]b,|/A\AFP#G.CU4h?jlϟBz.v-\)~zD$}np _0]2a@ ̧)f)W[lϵc0̬WΕ?""TU s\mBsOKI?o$!q$xA!(kt) ;~AnJAF7vXbOS8vriq8zzgj/ CGrirKpIly6v<49:0N;eKo)}cX"(4 (GSxGlȨ8*@Dtwנ$ᢎ=eqkcBd~H)6L# !81Ja-xOp,{(IkNp|+)\v?^lƨUO̳pq}OhVpF8>Z$fku{.8b6)3ʱA)k1-Z)x?q:sg3>ZKPB۷8=>/͖hMÖ/<Զy~%=eBڦ qBڎ+Y_|zCsDw2YhrB.e1E*`ehq8b׶mEwpDQTV?M |-Lj|6y*1U]38<UU-š](SukX=Pj0l,c}0Zs[eN+)ClX9}X|'6]CPCʢY$IInkcK<1ӑ `W5L]lmM"> 1Tav*:ꊮfYm֎]1%D֘ 4Mۄ8/6 p؟h,F\%W8Q3u<$ qStj}Xfnڌ<) 0 \.N \-IZIEߏ?P|5nj\ܡm:\_ߡmMy=yB+2 ;hJn #!H'|=;{bhk .($\U}M)fV7tTQ*]Li =UXV+nuʭL fC$Ex%{$wlw[ 1Ֆ9;["kxО䫺W[)m:!.W(PVvW%04i.vC v#kyQB>6fWQy(#-xD( "}9ۮ? ` q2V OuJ))Gp2xvm'G08ZQd]̏\_!#O`:lHyMW'TzKkUKspDK\_bhlk\S:ƨdBw4 3+JIc٠#0'h T?P] uqqqc\]]i-H.|/Ș]]E֔e9=(րi8OOOѵ=ꪁ.T;9+|QȎ ;cN|a"IƘt\n*[j{!\[I<6j8,b?dJo p~'@ʐG[NV]^cL1?9u.'fIi0U ) 5 zD ݾA@ɓ'x=Y"lv(x26_, +0( fcu1SzhjyYZ4M qWzH x"Lb{w8NFxA@+FV4-l !ȃ !d `Sȳ ;|OlXg[ܺ(ե:$ \χ\8GYwјNxGSHW`7˿q#N")q#cӓ'89y'Oc%}"V+v;Q3O%Mo:b/8Tµ :[2j|jYt-, \p`t3o=,+8%8E/'D@JzW) *E}G7 xtjM26}ʻ}Fc m7r1Nx% y6!MI5djw(戇EۿB? O M"ұQ옯5va)|n&e?KAh}h%Jaݡm+퍍+,ϐ!($l3g]ϣ!!=5j.iP{jmbPzDQh$Ъp}w_\σ{ OSF;8<\XT0$  O>E7o'ooqA6ʣr1e@Rlih\.;F>۷o1͸&B:b4MH?/LahdDYN2NXsP wwwt{XX.YLߤAHKw|UwwzF/Ʀ@熱( Ȃs&NSTUESH)d{SM[rBYQb REW"/Bs]KnȲAN3D(cȝhпdfVOrKoUW膎eTpX|6#A?P>!µq}}˂?e5X,Ðx2!Ξ?|18XZ맟Cߡ{$IluIi*)=6錇 erw`g?wtzX߱>Z.ӧ.PhQQaso7<ϱleЦDRYt3"4ӠFL^8v;%:`"ˠ\0#H)C~!G:( E~дT!=dO * MSb]c+2 .//[}͔c)0b$P@IZ*+I+0 XW89~|rE.ߺ ( _l6Çkf'9Q(2чՊ9Ɓ<4D~2*"~Vue(c2I޾2 c K8X.#1p^Q '-? M4r̝DqlMB(:Mµm9RME+* mFT5b TSi\뻮l%㫶sIG5Mz&GAz+wo?|q9|>kmqݡ( \]][3peV=:>$`2I9QRy*Gؚg:<9}woaemE?=={Z; IDATXv6Nl6!uUr^p>3=><Cm5޿ ᱽ'Iח=gg#\.i:ARS"/jtl7wc帾f;4/>GYL֘te|{4M G5 9xW0(*:}+ZB˜GЌz]ߣw{dٞ[״-+}vvF5a0ʈI`X C/\^x-&ߨIn萦S3ENƳSm6p{G`_bZcA[bdzlW8XK$q ?y$,KԱZȿQ2D:q !"͕m:bߔH63 v4/sKw)tNOO ϿSk0m8Z3u|].WHh8hYLŠ$^җ2\fbUUSqUJLsyzfxoyB4w1)u%q$ ,2a9y8mwp+gpQ^!=r $ Zݷ-%/tp|tne9C4Â}j6anlp xA}{) bdwp3|[|dquslȑOrE(kQGd ^~?W軞"ACuӠ+;8.7ov[ q0; m%]7Y.NSlTͫFqLxiGmj+w{< yA9>:f9g{Ph_<*01a}8> ]V(0J u[cP#m8<|X̑g)G Hc=C4K]A>" K<|HkעQ>=sR:,Ķ3{̦SBp !Zv ~+@\Ba= 8”֛-u?>=E߷Nj0#.ʲ1:5*atAY^pMv012nMJhƉ,{tܴۦE6d=Q욉+x ):NA<4kIc1b&( b@{KT(0ͩo{Tu~B+}gD>?? uYC7m6SBAO&l-X;WH;rw !h`@5Tr)oE'f%4ӴQiz{)TƮGOܬs<mעj|՗'?n7YFzB *fM%$3dۡڮ0P7cv%U d}!07oPT5޿OJl{H% oxg?{50EA0BHneg!:$>|,[ E Z17} ?Esۑ}'1$qW /ŻEӴ`Sl{a$IKS!Vъ1]!~=li'; &(pbQ(#4udܕ 3P%,$i#ڎl1꺢0/9:4OAdllf^]~~ LƦ{J!M&% qѮONiExG]g 8 L#|oK C!F9Ke$wapuuB?][aDEf./q-Tv NΑ9N д -">IqZ*1hiȁgͦd<ĸʲ }/Hߣ~Ǜo^Ųo~s4&luYb6Hp;=9Evw-*~4%fq{P4m걨7AG\-nav[^€\‹xB p,#ңڦs ^6XA-hז |&ojI9L5͊j19i8 M`p+ 竾C>p3e1|GDz? #gm)ay㑆"ZE]@dduׯN8;Nb ό#0D[5"/vXߘϋ_Q0ݮNOiY`2F>)$A$ج7Pjt|0ws0OHTe+a 0s jۻ6[Y&p"/QAYg.˗LRE|\k. G1_aiB꺎jVb : #뢔>x98"47T6`H`6bߣmZRhsP`1!#8 k:Y.\8jt]Eu6zִ-$ˆm(~80s , (& Qp@v}>~_|%Am ˇ7l&YI@Z)9m!:1njaj6VbfbU"M*+'qkF4MihM[,) d~qqDiI >jwPV{X "]l6d4Q޼NM -O;0$|}$QGtQxnoo!4-λec6v~hQ66e1V ~ -'!lĚymcj)v-Vq0Ͷ۷h(7vM0لJk M9_|pwX6-7Tu|F{tjn7I>a#ul4P3/xʎ^+,KL&Ul;j U*]nļ)qD6X-n><}o޾?CA9Wy4AQv$MBȧT?;9܏|0`>p8cY\LдyNy ur]vZ/=$Tz07͜}[.r8 ~t! UanOg3JȧSl6p}C.xxC߹vp]FP;IP|e%u;*E}~j$cYU;D!4af${8)~&?C~@۵YNSEqt ]tdc:m4%vt.V/bc 5turvpZ}4 7lJuSzx9ΌF>8 1QHuc[kD3'ɐ|9t@u<G#G#Vu] 4AEa^T@kprr©rbvgG>t4w>6V $Ck2EY8}iZA=:jyٻLfUxxqJ'>?_78;%W=N3݌MkZ~|ۿBJ`Q U1IR <tu |:Ҳo6w}0w=1yQX.O0Ͱl4p窬еϑ)&Ʉ Ib7ϰnQ5xF)?07o0=) ^q8pss|:1 Mb HGJ (5Zjvic>vt͟Z)vZHԹѭ tZUU<uËv8h!gl۾CŐ y3-w 5'K]ۯKA㓏?F۴KtA/1)Ukl>AWjuA|hA3nA~IJ"/\۶$l[Dsdؓ%}wʩj ='i@npyN`<]v1 C*ä#Mnyu~0 EQ"B 5"Uű&uz &Y|Fd(NCY4MPG/pU1ia Ji|ɧn7(Kn7H☌?,:Hg_>UB AYV,btI|2H=&^ dUUn*^| F/a oX!_Z$#.H҄ 5w E`6ptk{%8l 1IS[(EJ_R 9'y,qF_n?}4! 1}6Wh]b:B u( _uhjkRţXcmǽtjPCn"tw |B@;d CڹIkFG|C>WmHz8I M8BXgOX@ȒɄH If{')Eόi#d>DZ \.ISݡb$!kP+#G:QVQ_c6a_HeU M&,?qrOP͝ali5wo>S=}5=zIFWxdè{'oږ.X, ġ&8rFfݢGiw5f=2H D-VO$(зV+sE\]AUlsH0BR?G3?󪮑eQ!#a 4 !ʢ) f9% ı8|뎵S " VMHWSC~0,džD Hص}|_}A '''" 7|JSLݻ?mmPVmvފ-5Ma ʢyHmKL%uȚ!)kY%2NEwц-[eO$0ʁ^;A `&׵4UbW0Q,(Qi: @ =DX-lbO!O#`[ޙ_=rmqڡPMKQQk ūgS=e OzNpD)@Yb"im.6u<`4usL)7V{hȘ!|Gx D?[-H'lno9T&!&iBoIn@$S)=WV7 >  |@ӐCBbP޼b91cw:9!_G$t,1n7CȀlab\K%uluأap}vjeqD] M]w#-r1D * %0[%&I\/aR@t(!>ZBFN!{ţGp}O!&b_1? qAh_}GSO>!fjTG>*vӤc>](cx [ADY{?:([l5ZunӒv_nzkCnw6  t2A$! ccеտgmg{~#Rl{dWQՖpXq;ÀMgxz qԩt:e3-REp8nжdl" q;6]3U}u[:<#*1Qc>cZl;77nzѳDv0eE$"iQs2o߽#:IF\ѤFДԺe_BGRHa63Ffm3Y!~Vflh*F":$y^f]R]+j1jvy|;#UFC"#~ìPN׶$zp8S6K#I(u;v vBI8*e]3#˃,A$sGG1aOH$A-9 GR\N'SBlbш$ŃsH)PV 'μz$91(/^oXs6eް~~bjZo,yX1^cY_M#|PNOH'epg?̧3$ ߢ0teȈi x1= 8,>fCUbuGϞb)mE.I>w<7e5!61N|?p%5nhFvz dLpPMˮVK W~Œ^|e&yk 647\'exZGWNTU% C@(Glnָrțɏ?0R\74Hƀa3Q*֌tEk=ۤV<d4ϐ&ٹrCtaE17;bae`7F*DFnQ̣]GAXiaqrrB{u8vBuz{rѳPmIR<r=3DUOQ e|y^Z)=L /_^a6^Aiz[HNj`RM&Է6]X7_K>_sQHAY8d!ݑ~!C j9?;+g^)ȶ}q*HObuzI6A]UHO52sTR˗/q٢Uv0X<>q %#fSĂ)ÎN|jp@v8;98~ UI7(p/|Jalӓݕz %2$f-O mqED749I"quq\`'cPҾQtWx!9!@KAv zci3v=AK7;hP%Kz ?PA|:92>X0<^v5Ɠ'O*A$IdzsC((C(`X[JKnk>A= 2ш0 BKxgJLj45/д >3L<űÇ8Aq ~J)ϭ _XCeYH*NqkbDOm 5D^~ʲ,q~qb5 M{ż㛛 t_i̦9e9;5Q('%OS:xłaAzt!XTh}HI{(4 Y.8?;%m~tuwYz1I@ cIٔEhln銩ɤ9*E7p!/ O4M\miۆ- mP4Ap\Ciݢ g4}|tI .%4S8ӫf?ϐ/.-Jifllc;֐F` \p(ao~CJ:DJsRÇѶyCx!0 Sʺnƨ*aMYBiO KPNiBRTb#5(UU|vGö8~GQ8=3#9 I_՟?cA|&qw+k[8}'t lM2r3 Q!Tִ=a %Ȥ"4mm:{׏Y*Fyp<~o)CREmX;o{8Ms[USC+񧗯Ipg2%r-N%2$HAW,^oȲSt|cQɧwX! tCZc\`:bM5c[MIp?giM޽~ݩpzw5ڦs8xFQL9q+qdi+ݵ1ZkCWQϓr3>AʲPqJ)0Qa}sWo$?zty:HtFUjp!QݝzYs㨔˰ È( X AP_aϮ7Y]^'+qP5x;+lw{lG.hjOl|1M!;a \]E'a:ŗ?/_& oJk IڌF *Vw!Cqtmii>Gx6[x#\۶"j%b;:-ir5ƁuUYa,))00#". Nl fv $ڮoI dYw$9?y!R!tt,PJ9o;;͐eV责dX?m`\gOs?bi6QmDLtJaI6q,񶵻] AtlӏXQ+׷N #2c^iEz^XVhdII;U|軁uFx3lC;VIDHFiloI?lja.\#a*7EU!IbHu@дrRJDqDDI߃Q0c-Dx/Vhn ]8ROˆDvsm1R-ڮ|vK~ UTf< 7\h7{?zh7;H7HиL t%?G|駌駟-v۶q\80XQ7kԌ oe`?b"y^W"5+Y֮M2<)#&A`pqI s` #PJkJ!w X:bhk֡X}GOFQs\(h7BQ)|_Zfsc{~%aY"jC|t4_GoRLEAg`ͦ(tFơPng1Kc&HadlD0I7t8e]!,ٖË+ 0Hm8z#BĹijIΑf),EYVȳ Ҕy!p, sb@fѵ}vv-$ikP75)IC# |EIfi Pw0mc\aXa[8+ 8FRK$~8\R~Q65ڦFZ?aT'lvBG$w#(IaiBsJhO7u'B`^3*$p dR8??CNghK ;a !ͱݔ*) Cd3u0,K$ܸl<%3G5+(|=cM5}q/vDa*hdΖ ( AbOO&')Zl,F/#¥ԈA]&b㠐(xpv?azFh+,H  ZznK~@Nض/a76| aF4c|P% GlecԚ!O^vjulo U~ҾBlm#W.Πqa2;B/awx5V+mCt(uU@k8 ./.?H|>&٢mxJ>qVQX,XҤesII4Y[f~=z'dFS\ @Q,` y[DQqs}Op,!0]W J#JSDa#sSJy_sK%;Yh~8.u9âGEŖhڮ$6h;KU;|. =?FXVLGbZkLӻlUU~F߷z 0`͡Y IDATpvz/8׶"KIN!a"d([_oh!cc $X@!trD8=Y }A&P %ZX`Gö.>=娊v'V>Z0'iC,a׳2mɺӨ)eOGltժIz$ kM0媪7{\C5k ~T" #'ߏJaOPCZH|~q( L $^+〢(~XVXI޵&EQ9_>8R^সi ue+jž`6>UgxHRA>, ( %B""l˟ ȚTy7RNPU%(r OJdq ~nI;<ׯԞ42yO$o~`8\./e 0b|DId"c NNNCi꾀g d ﱜo#Bݖ=bJ;MmGeKXl8oxRܲd)&Yl.E'J3UCJqS\Q tgR*kMGEm EC i@{t~x7{o¡Q-;*{O|'߃-֓JiI|&t4zVͩ“=Bhq}}r0w#z42BJu(C]ṶАiжd֚N'%~ӟ9+ұ(zXrE7.۹ٳ6&$$f3CĤu:)'Ka$'1o$ /~skvSN\E, NW+ ֕ebcQz$3:>|&WSl猠iscpssQp6bQBeGMӐm&)y|I y5i|wÑ|pgvGo+<v NNr.' IC'7f%^+&q$~(Pw=0o'1_>Ĩmvo2P隦g]yr/LzH3 À $L@vu!/ë+u)LymWd$HM;=w"01+H> O.Cc(y>9=rl i"R75^XtbO4MqpO ce8;;z~ѵw7;t~1JtQQyvLŏ&5xT xDQ1mw$pÛo&&In.I)ӁFUZڇ_iˇ&tmk2{==ʢ@>nϓ~!flp|v13ų4BbF6 RǢ`A4n .ƹRJӳ3l6wxssChql>RRPvڞ|eq!&HR}aW`,i5ZMSQO"@QR+},?EU7#z>|ݟ7?C}75Sij6 g,sHȄ4}R#d@bQfu ./?/?tЊz q'*m4=֑ҖӹxT4@ݍp5}4N\+R9Ϡ6t(jˊ R0v 7۶EQV\Сfjf}۴EBnISf ?*'KI=ʺXRo?n}ׯp,KC^ qZ`T#tR(>{|f3~V\%T6d | q80hFc6bCtȲ J>MwPT`@0lx[(M2A8%b6 4~Z?Bx>f)^|Q  o؇C]rT$vJ'GvgzO2t[,O0(8FX-rQ!}pD)p_i7{lFIby^gE `{Cݴw> ~8Gwm\稫Mt* 3^qohwŰh.M=4}Qi~^cQb/wu rRR1=oY\i%yw|@`MhLVS2P9v"HE)黆ˋ -aEmwH $#̀ݲH[r[.(~ҔB5t(]o>C]Ng@ڤT6}8$܁e {AӺAX1rG.fS߽|MCk)yѲ7QNjХ)e>\uEc"#x.)=,eA :VG[XY}dQK,4nbInRĢu(Q7i^R^pHa+Eь!m*3(HAq]FnH9K@ \>G^`!I ̦ qKuK#MARs& M#{yL@߀qfE1xZlrlggpK@w]yAEEX,dFcżXAN'Tl8tGjpLn֐m6}na?piq0{X-iƷ_N@]VGu8~*r:yA&!#8&c(oF!?URšChCUӦ ȥMb<.9(YV@Zʨ-0yʶqCM@ w{W4/ e -s>l7o-~iI-+J)VvW, E?z-D$om|fmBM"nUYr%DA"9~h9Zx >|vK_x>\ |Dާ,-\ȲuEqKwgg9p0e7CvxFXUf8AlIL&11K(e!R 'S!PT(RRy^\\#T7<0a 3̦SsרFrwذXs%W [J ?mF1W6 F,,CQZ`/ʱVrV#%o! ȸG1,4usOBChHr8z?PBN)Fu .7oX߮iC7k](KArŰux=CK=Tʖ14=s̆fH/! UFѳ08eUfm+6ڱ8P9(HçSlv;50NȲ l('pyj8:6i ё-$$^|YVa1a3qGYn<yQԨk&=45öqI),7_,+\__/rafmiն !ʿb:_޽aGibh1Ç8;?xDGhukFMC^ev!,͆ &<>|`y˒FOeml0_HKf ]98:+HQ]DžR ya< sc֢?QV>#\}kS:mWWmZ]L>q~c˂fԊCgET*+,, @c" 2<"렭hG0K@ tLݠ4G}R* E3 3O8S -0 .+[Bݶ%+ꇁySW j8 e}7HV|(ЅEy$ACdE-Im GqH R./f6fkն-%ܒfPDš)}}O>%*Cu>8Sj>D\[a:w](iNQ7 ֛~}/d)ozx8Ȍзc{a,Q%rF[a^ߒwxYfIвwm:?* H.#% 0L%}Iµ.VX-X-gplwk^Z6:V.JhfiȞ ÇAyQV<x=_CwZwXg٠͋BS԰( RR$tA ؋ QˋSL118~2Q-=DO&"ޚ!@Y7BKue&sJDq}Z((KvGďj*z>8 ъ4Ѳ` EG<fS:N_Zk,QǔTV%ۈ,H,( :`00O%ZSA bhtʇ=0͙, QخH[f (ƕKQG>֛ v=(@rpvzƁtyfv4I  )|W;arV;+劲t6,}ar)ZH#:qLt1IP>QrdF岕IbZ2e`#<ऍz!؊|GETiP| ]ѳv6ssO7x5 yo~u 9ʀ̄%0 #[?&!#3jt(2?ߵ {jAq]9eQƍfm=,GӴOëmڲ,a2? SUaO( {T[ \1JuXowFFJZ^.w)4}dd nHE1B߇lyQ%<\A[x>yIn3Fvw6c4!M$I,!C{ISpɃɔ I=(!R"s]89Y1*{vK8ҰxW4E;u#v;c?soU|m Kh=Y! Z[XEb=@4NqF kkiMu>:AVhʂ)CBiI7Əشv(LF1v#Fs]euLn_]fH>?@ف@ E48>~/i\7 m@)K81p~z1mb,!0ENNxbs vzg^^emGTWo j K )..~K&yr@g tףJtܓ% ''8=;MCdy,Ix8bO?OsscIJ<=<5('uStBhACо{Ӯ NONtӠHBV>c4ucD'u"/Z叱iK8TCjX7WWWH%yt8[L&SU򝌏#%( @ݹ1(l6% IDATʱQ9 yVLL,1X,p}{d*ݡ,+hyR) `4Y:R6(ڡZS6 "X>{#z$TrRn4XH(gIk6xN[2y! c%BUe~W=i\aTՕA$޶, k| e='7(WWφnȧ+x|s}su>vCQpS[wՈd75psalP"<2' kt_= -$-<(Gh(8d"KXX-Xfڗ5{JQl:JĄğʋo^tɗуSL1/a&C=ENOO&<[6Nuv5feQM]ʂx-og$<|T SIdF!-rM?⇌bN'8lw``=PW~7h*)K\&cq5m}CeD(CbzlE QSEog~au,MDRJ̗Kc;WRRpMj~QbP\ȯ~鳦1(x@X\ 8BS`,1NພIY$,ċg;4G 5;MO?/_DX.+TTxKJeΞ#(G$'K[* ]U}ή ρ-m]ʱAn5: P- )9>= ?9x>mmFl>5'#$pe 1U F9\,gD=6dq@hba AFaBɿYu8練@9y`GA1To2~oRUiL[ngMp:3OVctlVsNlkly[x*$AŐ*5&j^>tt N}ܮa%Y?沯iҀõaUbƟFzP,ˠ[~0}TU;LtQjdLU"#=8P)qHRYa3m:6Y epmQ#<\-/??/_GFe/9ֻnݑ (Ҧ9'r*ͧl[!MPUSztb5b1u,3*a;e{=D=ht@_/pq".n$>h67쉵__p RK>_m[NidY[!Gmv{"ٝT8 !z(Ac(r?Os4%YC u[cqVn[envC~|[(rj{ n4ڻW"+v{&\#5t@*s|Zَy^s|* ͼKEA0}}`=4qCP[qgk8.EcJc=k[]Z R Mۘ)4ESheTVEme3T.Rl*L{רp!tB]H 5E!,?!1 5cd w\Zāմ51qOnMe۶جx$eu~[>Y^4vKSQ"2OT5QSiJEYےd%>h4}DPR\m=!IJn[ 6BO۶Q ~o3qM_4z!4A# Gchc;6"zY|eLuv ,ږ(Kw*޽{cCw$CՐп KBr5fh<| H2yk[f]Qr,rrTGKK+Um6>C/_`[mYRp8ÿ#HeVzq;~Hݞe9nnQ 0o=ۿ9-RW@Y |dx;et4Hĕp}oh0PWOON%Zr|Gi%9 Ty*i^Uƺzt9|m[)%ض e+x{u,&-.9tO6-#yM"<{\iFl43]ףgNޥRSo-8b6zF-,R{4mn 1bfDqh$t%Ё5?D~i5޼yi+BD@|6rP^Qs[Uo*0Ʋ,57%6-@(  \l,=V,SFj, ,EQ(= |LA8.YǺbCh?gmKù,xA_Çq{s!e*Kͱכ/qLSǴB&+XBؕdI 7&|pwpc.*ϭh k HtfeD,,uC*I˒d :t&oеHA9n%ެa;YR`6VJA6ku׷Uww/ޡm5y4-. |Gc|e4->\ov qcOM[mpP n[|-t__cBHi,JggH/~oސm:6GB 2:zD6q,P%Wcwy֛ Dh5\ʪ"p3y{`<} ߵ'G\& iVռ+z.(fsINRģUUz' QBJa>H~ÖﶲH`l S: mPk|A_@6%i>g۸a`B&hgMU-|F-8!QW$,TQ%'uwsуH26I^@Y(KJ:✟!11,m3!;}mI4I4˱;n.k|8] 3s2w$)!x*ROÝ0ƞu| 巿f3>8i.G !YZ׿^~ˋ3h5_Q+e!뺆U., 7#8BP]n}*k0_8[qUL[L᭟,[dYb($hDbkt]$/.0Z.MlNv;$IfMxha},KC -24 %w9V%޾},x,i*r yLnx}{n+b|)gyAO|6ҲL:&(b<s%c\(3i0y4\H 1LQt=nnoXCTN1a _ VDftɊDu]Ӎi ڐ¢ ˂B(.\:mY1׬§A//}ldlyN= ?ÇDa [n@A(&$eIc$lJwۉpjJxu7"6em4LԲ:Fm?̦Sc]- (Ys6'(9-խF簕cZ8diMX$1BL'c(kN1$`Kg%lM;\ACab$Os!^wR4HXj._LTcEx֛ 6ϑ& #C So8Tp]㒞,Ce]–v_(3;> MNCn;ZHJKV Gϋމ{]ǁ@oWWx ԕFdvR'Q3\Fgs \#>#& dYm<q=dyF^6)pLͽAQ@bGbunbIv`qlL'9v-޾~oQdAD >@|y IDAT> y`Ur까q GŁ` glEHaj$p!$?y>`46dPi6#uA3l{ Hˤh n:$wۻx2)]L>_]W\+Klf_< _ U01@DŽi[W4ٵ%8R|VFI U (In`p]AwUf0x PUX{ 9&b&Sa:\b@E8=;&yu\@X(Y+|{4'Zwp<z7+`hZe#֐mYrC߅k;<C%/Q.n)#tsw mvaY4l5f$!''Owl>FQ7o_ch/~hv5ڦn5,vE[кK}QA4=M]AXwϟSY,Y^ n;/ #YIy9%I?#3)ʊڷnw K|v [5 xJ*xLw-ڶAQR L; ٶ#2|7"ih?qfA9{RQw[B xl o9)+TYΟ3eT(.hղ6|ӓ(([pnG9o %%!$ W4RW )s)U|?8O? ijd)lS X{:$M1LP(w8?;aGTv n='h?9\m$1keJcQ+#DDSה߾q!FSUͦ(͎ZV: q̠{ñOAHq̋D;8o9b |ȘV NVX7xxy865& $:F{P&QQ 7K1MC310\s }$~6S4Si9IJ)ČZhi0LQ,Jc,8Ds\AV0({Αk s"qmnzhNMb!3"l6mCwQ tFiI !ik%VE17.r~`PQ࡮j|'G䓳,mhtgW-(+iQ ăNWl߂GJJ +u K8?d28<8=?Co~c syϒ*s;q8jjm޾z4YKXl6#!ci(  /~,"Bc:3AQS%r-6ւ# %Em6;MtqS,ݶXVPu7zOUEI[x~9"ɗ_b9a5a>`=8Gx!>8d <$ !9ʚBzC^ϱD|Cҁq簾eV'+yeY!(:EH*`5W',%kx0@4, p{펺}eYyuupuueڶEQкÇУt4FXg8Y\,pZmk2Q.^CYq!8xONVh[ Y3J%|u;$Uy d+pE?ߣP˲`Yn'$ŕ;bα^Gh,IO>v2--]` ɖ2p=0%TCK{a4#>ΰmhe\_ȉsOTMиV &D2H:54BpI]=yOo󜗯_?f97+4KbDCSuU]q绶yEiBmK[l˔aJc*2LE0v[J[۶ŵ$;#>?Iڦe' Cz%p0 n?Oy; }?曯P`H4L4]wĵ}c?캎|nZ4eDZ`MV~e)-9\,?MeT&˶|?qwR6Y&Wxs>x7/]%3...<jO@=`OmyP%Xo4zm;} 0LyU=޶U_xeoTUl6p-ia:񈺪{hZeʕm;a$<}$(ˊp]}- C'IFYj624x?<}S+e;e vPDL'C/Auܬv=[n֬7ԋ!0tҤWx<` }i,dʪziY7nՃXuy+%; {յc0qE),n}Zstx(,b?YWI ?P\aQKTߓqĞy&= xOu0ts<)w f/L/~|¯)gǜ_^c:A膡&qBL,ˤk;<ū ;َ6Q[K\˪^UBCiX Aprtnh_}r]=KSl&c^<{ch!b5vHrI9/ 4H kj*gړ;5 bQTIWet0|rAUk[_/e1u-PiMZq׶зqh Ti yiz~XߋOd>Zkv;f1_,ӓCP(Kph\'oAtۼ!'xl6;3N^ :ٲm8%c\V΀IZ{&Y_e1 z P/YB{zBzPm4)QS,N|tt$-ʊ,ImӒg)eUbۢReEɰ?INNNO|_ˋ]ױ)wwMGQhd+2FeD{o,fSn{p0}:N]Tu.՘=usOH2ʲd8 }iIQ(9fݣmڧ۶Ura`2xC$pVWłhGsw}C[egsZmӶis\>( ha$Ih4"so8<<؎7~ógtftRW!_˒?@Jt:p0kVյsu\HE{*Ϳæɵ6/>ᨫ`=7J0:6yyj*$ ϟ†:fHQ.-MwEQpqy=Պ`y/rV`6S9hP9i),F J6 A`&ߗÀ͆i8=9e0pu}Z}| G̦l4$m( iqQ=i0M#opf`彣S1 󸻹 L2X.l67m[ blD(>ŵOgY֛wPk0qlT#:2{"bd-bIwJ^S%aGrN]7Q,Os%"Vل4LƬV+)z²4h82>8ww|W8յ`GcE^b;hmzjө^vJ!ۢHUE44(ulO D cEM4PE,KI4tp 郵r"k9oP˥ld$IBf ܾh<8XOHs[EE&x߿t[fSmD (0D?Im )$?-F; +=4͘}u3nPqQ C\öv齮ae0 8m,Ke>65˹h3$KmXn ߳,]#V:vQ·?$nooJJk:˃9yY2UآSijQiRV5eY%aml|2>p$x<'MbUt|;g2X6p$ mPOcOmј$hJ95O3I;\ Ifa9Dqy l8f_g?{j"IS:h|_P@AXْtĻy6~ZoU0-ʲGӶ2}soӡQX o{eYX"Bt=W!\ !b~^Q_O;I9瑥a('^rQ^|6f6C\^34mظBI~@uE*~AojۖнL`qfg)6^*f zKJ+٬=ϲ T4\hLS0T/ay(js.}LYϘaqq} w?>W^ĀkVS/~E3'WlM:*5EXZ4Um7knM8=tZ:YJDR=Qx eܱy]3>I$tN^h%~_d^w|dUbUW(DQ_%EeI6XVRd:,CmJ`:a[Ϟ=|(Kyp8k[y>1u]3 p=Yi:eS1OHX aʃUۢ IDATCS\>┦m񼐓)Q鋧uUZYt ǖ:Ty!]CR+ôTǭC,T숓(X.Ҕ$Ͱ:M\$HшnsRUV*U0p{sK0(O?o,뉫>ih:c<x6?zeQQA^5 ~MbQ$u]Ѡ?kFW,K 2qu}fndYza0rOX ׯmk"C"HͶlVww,ᆣ%sxi.XEcG~nXT`-a0*4@1<ף(+V-Pܟ_8DZmаm?W,K|% t䁞ɘbFte(LMK SqE3tm%hj+opsR (B ۺEP[rm3p?iV+ڦSz)KUUj WaCMuzD^jM4hH^tUA[OYXK^Lj\^mb~@rmS_B۲D\8Apss#۲T5D0$VsL& eN]y ?|zzzJU\ܰ^l7FmۨhﻸCnE]{8 b\ٶ~fߣ,Kn1MK@NbS t|Nx8-Cy[ +$4ɏxp>0P+܆_kw|$W7P(cg,KʢPB}%ZXaā㷿h~iL&lQ]CEEQ"4"nhH;^{.$I`C; ]_Օ\YW#I5X6itɣm F'|l[b 0łf1&f˓~,kL"M2< |F`6/)Jr{a9,ٽF\Ɵԧ $ Cno1L3k߶TS. ?kۖx~],ϱK~wy;i-nHūJȇTW3쎜fJRW0D**_FS*!9EYz۲D$e])A^Ts:e2P!(sw; €GOgױSe8R:"/xTÚ7eFF?|4My`Z&wDQ*\J%Jݰ{bx"<xHœrI;B1}u~.U@e#GS}%k?2+ AT5UU*3nEbְ,nJ,P֔縮CQ @m8^|!\)m#V)Sߢqzzd2?LQ, -Qps{˥ ݻkƓ1EQ)mDŔ?:gJ+"r{b<[u-DZɳ0 yQnd@ DLl'<|L6sʰb;Y|X.,gdbnB2riP"UC*(-ѫU.,a祊 =t]c4&bs"NVVUEQ,?G&}:_|n|ppԕ*R:XZ݉ŸU$C6OraHqhۊ4 .ϙϦPNuu,S$󃅜 M[aIO?n'Ȣ蚆(Ir4zi(i$e݊mlOSp{.' ɋ\qBx<cj[ẞ:MhتiŜ0)/0x0EUUr\8.^]Pl6M7a|1#MSv  `k+n=YF<{5k]x8)**|uL{p5a]CTE;dTkme0Zdi&^R}Ofþ8;um&!3M&2(˂$IY,z^J2uC0wr"_|2L4Ƕl,W ü(5J1 Pem[2,ʲ\W~y~0PŦ?Y B>2un6ɐvGoPj_ih; 2݊4v1Ecr:e4:.Aˁ0$b:~z چ˒8hێ+Q+ X~S"zȲ SF4p`e4RՄK./.wvaA؇vGdb+ɇ>9tư!"tPFMūK Vk/i_ٗ"8zfY_*u]{g8?ZFVBbRDfO]- Hq{}p4TPD2MIL]9^m)P׭rU T^س4uwx<\^z_,rPUļ꺮BӟSUuXiG <9LUlYG5{~)Ifʦ[)QP{g9'z#{gTd)ԯm4IG$ kx ȊY7,# MӲ\89ZrW|{Na$Y X,ödar52E ʺm:$V ן|)ȓ ZкnꙦz(}bR- BGy!pl|cݡ+3hmIu~.X*O^YU1Dn*S*Lem&(@bv{vqƷQN׿eIthʚ{}4$޴20W/$uMfF tvO4 .f˻g@ nk5+-!OcN1mhow;<<Y`TeI,x5{:-/__% Y.bpeeN혎'k#6yWLFRLY,f,s.;`t0 T_4zc>z"BG]tuS,L´e$tsw#\X"Ld:>2/r Px4sf2ppPbՔ)X7<B<4fӉld:{qD| 'O%gXWsF͆Iptrb+noR;gDQL=9\y՟=.,+z(NO̕-#JgެHUh4(xiLMSʪd0`Wߐd7I^J+2kss}h8TVb9H ń![F}M-[Nş)$a (R Su%P C^0i=k6`&ˣC$x|ٵխU$۶lXE-OGSA{(ev*=4u\V)@z|!zxJW]'úTZ5 C$a1_` ݎ+37u-K0uïLJ1_f<#6Г'Oz|>g"9)?/^ow M'z[E4LɖPZe%u۲0L4N(˂wq=7T|"4,&^ѪkYo$͈(yoeSIIҾ(K2YAZok,.Y^6-uSkҳǶѺm?xNJ ~' #Un{VahH%,e3[7{l柜zT()NUw;.y5ggU^- |#7+GyO&f9mSU] UY2NYOb'߰"1X]TšpHSl6kҜ @e0W4AmVWoh͜؊ݯNc[e]%3ꆛ;ieYPq ~3=8wElIӄ%Yop=G=L^7xKF5\qg/g N%\P T8ޒ"ɕ`W)! !9PHQP߆BzdiYFc۠JeU-wjbS6m[yK* r7r M2E^S6Op]oy|?i=dpxއamEz-($4! ޮϛ밆rBMCVk7se_ }lt>xo^%/K٠acJVQ65)S__~{k.cK(/Td)a$EnY%E^ &/%tCL'aŻwTub#Gt:.y+rԞ5|b.7WkŪOX%f0zQeIBkr(Te(1t/'j*ezVr- 4'xzCz.a&R5i"#odh4 0}ssfQ&kfGHOmC7zcjӳ'~wq6e ?1mhy^$ |Dd؆cEm&藿q3PO>;ʧrs{ۋGQV6hrEԶV /|_95Upu}.Ɋ$+e=.xs9=9f8跄 M֊ VIAV{\rśBfyD$ijdLV؆!\LuɟH±l&_zn>Ӄ|#|i1LHn/kev:arws:Ni6j,Cy :A{mXŊ8/ %8b C2pm8NH2yzHHqJ{a0 Q!MbߓWSSg(Eo󸹾ɧұӢAd[!۪yzv.=>w;DI.2͐ x8w]y'1ȲxX89:l Y /zf.M-%z+A W0pssL'[>x]Cq]7&Mbn#(oX8m>+K+xCno lUYPշp@Nv6-zƟ?|Z75- GCC7SzRiq{{CQVunuކ,߾ft8<< CSP&uyI[tSYYl6"$Beqyh\^^_?M'Dkno999Vs }WKmlo,C^_2\1=:f8jwDZ3 :Ee8vH9"m$z!4|ݮ xr ʲgUS^R EP55^~g5MZ6lyY0YW l; ?uӐغ\UmU!x|u%32Bi[.,ekTtUWo߱V4 U4:ݩ Q][Ua&?$ ~팆M3xxX/^ٗMv>g|%eS7:dy.Nȋo\W톜̗KL]6O|TUp0d>_2w9>HMץ,+ȩmضi.C"UyAJ|cbvk.iX"~0_,6u{!t/(kN&TLlO>ESV(eQiX1O~eZ3(]#Ryct{=hCEdTԼ s6 E!ӑc3EDY%o޾e0n+Vevr!7[~Gߓp&i%Q˲Gt{]Fv}lgO[MgOX6:7c慘=,6""l[XI8q̛ׯ%3**$lC^o$XZ tu<2c2p2`'$MEYה|v bZhE7z)U04Bȉeo٫ %F]<ў߰(6 kfLӌvSg]!/rt6#fiϟ<ͦ bhҪv{s%'Qp\r%}6[1][:ai{O/n7 ; ?mrwwv:TuEˡ uNz-U]vka/hW4|z߳UJQQBau vl((ʂq\a~W)SI©nlTbȋeʐԨaH(e3N$M1-Qi =)*p=WDB:~s8@ cs ʪRi{Q>bj0MK4[vׁ*Wdy{tXS+4eRtlkC=*q&AfaZU6]Yovtɰbaِ%)'׿&#YSSW=M3ʪ04:ɸmr2ԉPNU]3X,iՊaeR\p`%3W]7˒񠇭޺!ѺyX $WfZ׸-m َW?ɧEU+I٪ nS=7J4MMzx,5ИNDT4MÂ8^e<Ե[]I|prri<<<˶kŋNsvv8c_u%vTb2]Τ1M29)sK&K`v/$MмQ08ڵ['M0uCI"t+/߱ʲ䄣#AAaZ'IAGGdiJt|]btM˫koxx\8{Q0_Ut$lz9_y^h-6i-^JCQUx(St!*—tV u?LkɄ}9uS>G)_VrU%'S4MDZEp}}m|V[^'LSMC,|NEҶ9)Ks4 -`Zi/f\ aa:b[3ґF4M YVEA ו,M\h4@gg*C ;RQ"t=n7P'UU7«o_8[9={~/_RKYoT/Nc3 io޼QJīx4Bf3Vɟn'AN;Fg_Ip=y좄=^_2/nv\^um@!v՝{ NML'ҹ=⑃ 3a>^(EF5ܑ5m<=;h-- y!q:ϛ7ؖNV+],0JL²L)~kwwe 9®HXMS>o߿g0'%χ/_uY&Iyv (OLLmvGyh8TS۶ |A\eev|vh4u~ i+>|\nEQ>QJe U1=nZ&iVIt:b4_s]G5uɔv+$0 s)EY|7zIy4}_rF'qā1THIYN%Ŋ8>>&K:c:UYŒ;esrrw6 ͦM~/ ŋ`.n /0 ׶$9^5X|!Œ\Yj52WE\v E}MPsRIF[BLdF^8-V0u8a0EgIb;:努vF^ۈv`lU}h R1\ |ij ARt(|~*E1 2OS44x/oM(Tfa>GCf6bqGr?GDZY. Grr|(R{Jh2t%t8>:d!'S\p2BUEDl놳CƣLJ.K޽{O^AWRM9Eqrqx8& gij9q>t~ msĺn89?Wm x T%6 1BhT*3T\o?#ISL{}e!If+(4T>Z1Ͱm۶)2 ePhWfJr ZVՆI=rn/wݓg9咕t.;˗I0y(4M&2qb!T $M(K8|gڰl(*Y/(ʢhC仫;w߭3ET۸6khڵT4R 75\U-\7v0#vQLE̗rmK2o7pz B]^TݰK,  iVp]/c6ar?{iHL0L#-eNEQ(n>/+4 &NǦ'Fiy`z.E~哏_J VkI @Ut~ǷoE;|ðLe^S'/ضf3IPOy{q.In$xF-Oe RsrtD' 885rꝟX,pikad2Fk//=do|AYTUMh^O$Qi.Jx\H"/e4eaS ] :%eI]/6WTYtMQ$l)PV)&TTƣ!)z|rd<9s ޠa:y^) Tٮ ;EJQV5$1M-2 4vKlbB74.ݠ:#SetE=:}N8?=$=^>&95r-z4+GӠA_id]E1vx.\2 lT-Q ӥn dRL r%"t:ю{)M=Ӄt > GeL'ce !xcB,Y.C:9]Ð򜢪uB IUqw7#M3ԍ@͎(Y$Iv?G?Q{,^K&lwÞ繈ǵD&NSQ;%y|EsXlex>?Oi*$,KNONpm בpms1ASM,+4a019QU5YRa*P>'96dv-~bc,Ⱥ'hHQע*qL[(j0/`r~v'|i=ٌϟ3 T@端fp|t:y!''m G#\!2Anγ,N\$/!\eYPN_-6d|vrN@XvQ[0FQ8JU-2-k}a4_|GdiBt;4˲h#vr=98M<7uE okZY$N~Mc A$2PsNOdKBsCYΓ^_\JՇ.V QD]}e8Ꚏ/2dBt|h\lG H"!vqq]o_ɩi}OΔ֤2_(AAt>7⸜ 6 LCc2air4 /q0d82tlSc2y=Gnnξݢk7wt:]65nqx< 2KY1.%qeub@S8)jǑ%z5IB8a0 m5o7%}ӓcN:j%"5049'iJ&<q=W ӔnUUiv4K) _5M1AС3KSײWϟ 1֕l[ځl0QIe/Mn7$Icx\A$x?>iK1S ј*Һ6Jn ׷Tj-9*Jbr};~?P{'1U]aZ*X*eઑ*4QN^W؎CK5, kؖ/srtȳ''<==`8O8gt_E*^C$ݚFo~Mo?Q) )lhcNGA:m"P\phT\#<|ql`BYU8+h޲֓8iLKnǦ 6a:i\= ei/_jA!6Y.^1katѰ W}y-evU BdLa6uX e+iqu{Me!WK2pus )jCB0$.E(Ak\WI^^u=LbeY{>ۿԲL:ACt`[Vؿ F5>3Aqzz*`YO>gpuu%ZH̲AǵmK( *t=.sz>{L˖&~]a 5mzMǤi@a;G拹L&"/RzaPF ZMTjU]1V8 n&I{ (M%u6 pl"LvIKu] B#N'<,Txz~Ƴg*}]5 VH*j`gsoAɦl?0w;+JAӅ {|w30`\ RU1 $IYVrj?Du ʺn gMNtTs[yjOSal˖)v7H 4 ͛K.o٬좘v<<sU(mi|C8Po90y/g<P퟽&eY1l$_ͭ7lE4ql.qF¿Dj,%)2>zyd,,Cݰ\oHB- Dn|]WwQjcVJ.GzCىN` 0$? plidYAdyRx,˱mp Iazk:^oV7u6nn<9Ls®tgtz`JG1!sƣŒ]X(J֛M]}}BlfXqME-RmF-RQ4%u]Nض%sD hKA9 Uya4đ\#Ŋ(NHpR:?'s~vO_QWNwgMot;8/A;I$*Up3{VuױLiik88p|xn6eHձ,<%3 TY*t[hZKTc8]?7Mbn44e澦ܪ߼"3B:AEUb$"cKf1L$ރ_.<|񂺮9=T`Y&|zs tɯ奰՞j-vq͌jwv|ȫ[W.FSF5?PiF6g2bIzaZLC m#E@O>1Md40JU0y-WH^aȰ%)GmԲ,vQʪ0,~ٿ%eUs A9~Tn[AAC{|7{>X *\y{u#JyKIJL՚9q{s`kݠM?{ND: ͹^]OQEUS7G,Wkʲ&vǘEە"4dSu|S^~ 8j- t:%2QD۱Z\SV5IoJȦOz7oޱl(˚<+hO7U&~c\G**T5Y9]$;K/cGd좸&W4(]ln^^S7DK6!Kr0dTgu-DL&c@=e> bYc.a M]E ]bÂ.VgòHT6Yrr)KʢD n`Ǫ'jb,0SB D %Y4}AТ5峔ah|298>K3A4d[WYpm7l;YVUf?TnyΟ'2ʒ(Dg(Ҍ"~GU(\Ln Pw,`2fZQuunwm pqzr˗ys?{&JNߣ3_. j8+S[0TUEoϛ ...@Aeb/:޴oy|x:+0MTM-"ʃ& %|fCۓ-KQXldX<;JWLL Lш=תl:dLEhhR_},:QBE`e&!n#YD@~7T́B,6M8*kMgtC'ئ%iДJ dEi,W[aidEkַ/u*AGW7z+Ci1,sQjخz҃4ľRUx~®04e2r]3 0_*t4+˒)(]l)ܽdOTeOu:Apm#,Cg0ܱ9IRt,Vk iWjmW]=XF $0 9ިӡ5/?gL$IF^~ЙSU5qR~?Irų܀^+/ d^4NL4YoLCE?ipSaݐ$ 瓥 @qW*)jXxE? b="YןJE㣗L'"UnmUKNxsq!@zV\W,C Iw1߾y%Uk}~sp8 2/}B~_5:D3<_( lw[V5eb ip41v5f),׿8Y D ƣ1/^7ג h'G3FՖ~t4P@h÷o/HҌӎCv-Y^1,ˊ8Np]˫+l z XVhhrfR$N eӳaH^jaꆇ91x||T>9ƻwl6va1R7rm^pw/%Ҭ 2o;y!JMȫ[ڏ~a4.Un BFUd<->u9zqLGdiF$TUà? |>zS"oj)]y*7܄B~t΅H0 (j{n*2E|>Ƕ,4?Snq,NFH]VRGķϢh4 G8;> wj  񽀵R p4x>^z<<<0.ϲ,*Er899{T}áMpf9nf msXqӪ 9WwyaɟcnyLgvq$<~K:ሪѶ!Ӛwl"Aݰ\"NOS]3,K zG)riꚇޝB/f%MSw:*W, NͭS*/499{pFӥ>mñm"Jµ\0 <ߡR7dc2 oւmwxy`MQʄ\kI<ߧ\y\0[:zih]UO>ma1MSilV;%)0FϞ=KXo6J4k&A'|6"hjpHUf$I|||Stl5As{Te4vюm,ʦe%#3u^<}&*t3FIeې,+0M&Im[7E:ѨP77a(xCJy;:Hؼz㣩z7:R6N7 QI roёN|i=GfRgeśK! Az/~EQn@ߣ*+$ul%! c1dy&FÙXQf& hZrqm62%= Vu, R w4 ׳);ba09::B,/Xx4&r<9OAxdIfb+>%}$WF=ZW]q0t_4${E\nY-<45 Fk?d4bRkȋLK-Y1Rib*V -RC284Ԍ aDa6!L -8oݠތ|s{w(ǪZY ooGQ*ywq=sP}?#+rYD;© dIBG5s꛷Tu ,44lWAylc=%\.X&&= l`:9+-IRY:ИJ^bdMՠiMʩ`@\yil[̉tZy.jHӄ*WllTB(\5YӛeUٴ4 )Kz;,pviv;(+s ht:RvNNqRyʊr)p͠z*a:A؎Bj,+^|JFt=描r\"^0rf7PGU] !(ꎇ rzS,Xm19,(Xo7U-%|]v}a[uޡ< z!=ݴ̉<(F%)ttcx+tD~Ot{]R+t2e” My Pho%)Q%rbM⁳g"q?ۿi)x.9xYS9X-`rq.͆(i .IqHM>w$q-a1;:yr$@z6[hF G#,T9l[t]d$jpq\_jm j` m:2Q N'`|'-0q,x=ӰÈ+_Kmy9i$B-#Z鸊e :Mn. G[L0(eW+fMALt$IE:` aАsu{wJuu"0D ]ۍ0 $&8)Ȕ]豝UEQ w[./ƯPt`lÐBe/ji{UUb&c 5Et6 F5h_ NǗIE Yq}h7eݎg'Ǹjm3K{JB,AlHӌ*1L~+B\EM,B&XPdC.Jȕ?+mTYвm,gv0ƶLijI*,5fCۣQM(ˊ/䰡rFHMLCu<&Czѧ '|~x2JWeAg BVxHFyF%i*A'JʺRvǶ zLCgz(Z]װM[OA4 E `LeǢCSj a/^<AH.E)e{rQlc]´ K,UP[oi eSyNHK<}hZ5G/4ٸ4!2)&VG~HMa|c<]с8NԵb߿1m>Kg2KSܡ8M ]"Ca"IPëP_NIXlw˲Viä aws #2 IDATF44iEQe"} &IsV5|ӱlנUضjN1L(1;8o`%|}۴u ;FTՊiD d _*3˲l<#KŒ OOO˧?t;t.e=0(:b\Lg<܍eZtrӴ Y5ҌK53MAh(KU>5uM{,o#6{͛zUbjC/l!u-.Qq1]E!}) -GW|(ϗ\^^2ufLzBڢwn Ͳtmӄa( lE }LC'܅n>)5^NðgYIcJ[<0O$aް\XiE:a5o%FMtX1_IxnɈ(),$6-0D`8`P ǖ㢤%X6 :<Jy.S MˤA7dXlx Syg>88jr0pvRCl7{5͖~O iLQ^GxDXH sܳ5h--gMK]-tFRi3>idia7/PW[UWv%v:TӶR]?i}dXdf-.n7K ]'K 'GWO.K |m3aNrt=8RW4~Chۨ,A ÒitDQ纬WKt]',Kne8K?n*,XamYdI8BJ( OE!o޾4Ea% O$\]]R7 q2R$ C~謖kǟ햼(/w{>K>yI% 0qsf\я~{̗*il6RkZLSk!(a٭Ibi=r\/ktÙ ]^3i:֪ 60WVW77 !?xl(kQJPWV a9XÝB<' #唘-B4Moo_*U%U ˲kZWY* &S㠛P@m BkIӃ?CkK0bnyo$k&SzafP:o+ɪ.exLY*WVb7zklC0 ѠȦ|fO盆eZQc 9=>q]<Ǧf [r#rǭd61_B\G", MZ&`-H4|ñΎkM%/]0n6JV\>~@{tj|gEV7LuEh8/>WqLI[ |Og'_\PV5e35^ǣ:=,qLS׺I*zCA G`JTT2c5IH1 :]LoiNePf4o~9#Q.x.VeMágϞvNhh8>>v,tڕtԗAYYB$$Òf .m#AX˱tFw~hI۷,k\k4F uյJj.͆zvhzWUmIY5ISQXewk6ۭQШabt;N/l ^wޱ\.Y,-D`6L</ꦤj4a~ tlOM]}۔7T5Ӄ/^Q55ks}ynj+C~US\ǔ7"Z$d}\&c ]V/좘A_ 3*:+fCDmZk\O ~n'Sװ= 8:I8HGM$:ZLuw}5$ 8aB  XiR +4% jpL~Of?40=8wZVim,P$Y]fhsGk"ٰ-o] #vaD4MvkN ]ò ,w;J1qxd4˛[Qip80vLٳ3:Iן۲T V?>=:%(ٌO~1Ay.2,Kd@!pH>M#F;@dUr}wt&(OIDދ;_>;#p]$% Lb^˲26pW5R;IN ZY1)7B=ufuYs0(bRۦ)oX0pm'8K&òv0puYtT*7_exiV&}M#uK}q1xvzk۪_ .4R0Zs=VƢ,i 0y(+6a2^ٔpjR Ek:am;ؖkebhT>2 xwqvuӒsfz'!c%v)9'Ofk,+\ &ĴLY]_LJIfMkHg4Ta]-2{ki+эɋ48;;:lJ┪HsqE?'Yr:ՊNС?1MT,˪Po+Bʆh/_bomMS \ XuN }BNZ_}L_1My' wjI`ʰٲo{>rz|m$q[0d(]މPQa?l0v4pn˳gH☃ AnMKm-a/u:]%f 2a(K 1(kL((47j9EIQ|RrE6-g|KNjUcR4M"DJ{^{Qd,+xQίoIBe{09 cZwkAF[.0 lcKEׄ RNB>4 HҔnG/ȘM-г39:.寅c4-/,z6~k17B~4d5 vCp^Y-S{R&!,E| Kjٶ1hH]٬)$MhzZ˚J0 W4 ,p:ZR&Fӈ *JK]_^o]S 4Ғ$5MsqZ>ѨG  \\ki,%0"0!L4-Ξ|z.wr mf<Nt{}sl% wA+kf)Dat6U yKF1{yUVؖszq*/Zuyx3%,W+nFBj&vsj3q,]ia }#/d3MW_Sd9u R mDg{wn:A+4Rf3CUuZ ϟu4eQ61-ӵ1?{.7+b;,ug}l,$v|-Qy+xx\W/Z||n9 )<),+K\+B ?KeQ0 LCp:e<0 ZI4|J y(azr( 9iVly|xd'Ԁe,I8$ 3Lp]5WuրI[re8O'#O[&'Gxwx-I >xinC?mz]A4McXbV nOe4RbÚIK5S84 %zN$B.nK<zJ/gNm7eՐge25֏~,*xtx:&:0ywy[IqenS50͛\+KJe[-vKQVIc~nWLĆaJqO~ G?f6G,-QkF WB}hU,9MԺۣK]c^X;V86P6  U-r|nKrX՚#tiU|&Sjd[WCLdZ^q}9I.0- Sٴ YYR]>ui"S,c )M7h-L•e65tm|WmևAS@<4R :%]z!h lSR{JM:O#wcU_͓$Uđ`mǦ(TUrE)8Ե .JUEcc[nw%*V\`y8@LоQZNM'yƛ߶W^=pBm;l7<0}^ǴHۖȲd8v|tMp춻qI:zxAn\( Y^bIvLNf|Dt.Ķ,F1 9 m>_8l6+A]8atIGd+{1y{LۦPY3?O8yr"4Jˢ ݻTW u zKY }1bi%[zGG_\ j%) Ӵ1 NWaAg?9Q,=<4 3MYTe{h34 FHӘAx2c5Am=:h^Vl899I]?;SUh QQPT͖,˩nϳ/p4M)KaTuQW%.rn#J۲XIak(hMb4`F<9zBi^ÜB uP'Muz]Ƕl7 $xf[ͧFZU>:q wj^uq(a@ڄI+z{].nITfaEoBHRnӌ8{Dq2MTv\LXi,eYbh'OxD!])Wt^N]OI]ؖ apyyWq}GD'U&GL'\rd+~ `445E^LWu)sJaI+!ZeьgOw;bJ:QZg)Ogxb000m pl<+}+&<*YeiNY֬f1| a؎t:fX&1?OE?dpǯ`4zJ6")G}TmO*I_\\o1-=Vrmۼ~v'1ץ`QV„4& $w]&!fE10sJzs{CQTp٫$/ 1VQ博yaW]C>cE%"%]UՐ$)p033v+wy`4qxx!.//t x8P_.B6-P̸ɔA~h+)E$0nNj %e^6[BP#e)B"j_p{m+ڸ*EYYnywu<۟bC,>D)Q,tS DZy%ݎ4]Nڿ=fY~Q@ym|WRt տö-TbnIhw3vM[uin7%3\A_k$q`4+_~=y$,l٬6P"`o[%qlȲNp~}f"Z}GN%)_9Tӳ'iFC|i YV|7פqm",F+R~QE .9=a?O5MgZ0_t?W8ӾBLOf kţ6~Pf4T7c.2HpzrizR#X.W$lFSAfh`E@{TIDATt_5y؅!DU<LFnP-r4899o2}DQr@t%Jՙ/Wmk<`&Z#8I(ʂ,c †$MS)&s]qyuCl7^ amJ@f<SݺR=H45aZ 5r83I'e|PW(M=]4d8'ϥhr3 yxOƭc?|qJ,ɉV'/K/6(Ӄyq}{Cf<<<ʗBla`\ZFJp Ŋ_ū_PC7 <uxzz*r!M C&?<< ;.Շfr_Hr(gL\8`4uV5W?YodJ[%[jQۺi'ilØDžػ-8I&繬k==xl6! VDs,O>DK`>3Nyr4KMUaP~YF/ڎM^ C8&|a vMc*CI!u@ǘ.dTqd̗k)GnrQꪤs~q|>kW2L,łz h# {pˉ$ShFCh`0PILUx 'iQP~GeUc; l ^4" Y 0/8udyTegO9;9uXp0Ï>]kt-GLN~_6_kテ8q*EQD"ED%%:X$DͳgQcI&AH"EA݅]\Ev~fa/ggsϞ{DD"b`1ED""b`ED""E:ѱz孭cU+6`eia ""2کm_աb`-gHՖcz5$Uj [K"6pqvW\/OG=:07323!p1.Zkgھ:@ ,z<Ѷv LM`cmMѻgg~]赶NHJ\UzRRRD5W8뵾Fڪ6<`ءo=5GX -=/ ֬ Q>=txQu8" )mnM^~\ţ3G{UIm>-^HaQՉځEU+>Q˽Rm&&wK{拹_ G{z;Q2'Ξ !.f6#}5Ddevu ]::LcSCNS;xl @=\? Á_ڪJG ,\6ڵZbÑ_4 Թ?jl׽;ڬ8FؕXVܽvW \ݼ 'Ξ\{i鸗sC~&Rێ53ذm+=Dm`] )s*^ձ0t?b`:OLk\Z5-au)<_"} f_ovOE[[ծaWhdeb!1lmq?!_}IvK#mN ebvS;M4zހ8\;}:[VѼ)IV,[f2e"S0dLAn4pӘ2gi-=7Ot N p9 t6jH$ز&'oSm1qXn}TW(]^5drݼ3ĻmpN,_8CtںLk5/ ZT8{s@qq1JJJ C*H/,/Oо3!82/x=?o\ӿ5'a!Ht'U_K}ٳ'ŜY\X"C=6\~֪Ǚ8|gEV]wҝT/w#uhY/# T&ޭ߸ urt;ܨ!BO###r( ~>69`'1~ԯW"ca^ԭcS O핿l0uEr,5-] | ssD^EM"h]Cq}}d<vt:_[Q#^`Lkۦտ*d˝8L7KME055A6~8{#j4!Yx2W0CQre BO%^II N*}ʧ}}82(7TL/=}ccʼnUI^\ Lss|ݻ.n!OGrmʗ-=5_i!a;| F =:þ^]mkJ's^-T!Pܡ>Ga]k_FFFQ$ %0339jׂvR[8gbiëEeKKW[v~c1xLl}@A&#pT&v~DMS`2Yق`iiQ‹\nRxwnTPWE 8f0hdOķ;D!~hi.jHL¢"kڵL1>ttuX%2J|9\Q*wPiW[pZa]6V8c=^(?=輆HxH*ŚM;ҳ/ˠ Ϸ.9V @T׫-dW+g!AڴGV;Wpfuk_] HDVUeX#q`y{^=:kQ5-T̀8g#(bE~ekP>Rpxܚ5`dr/rwt'mhu|aa聂nGER),+~.faal~5jԀgs;d-NWg܊>5U1 J\Bhɺv-86ܓC(hUID#G@~s,z+>_RlH2I5IR^^TmkPԎԴ4s1:mIc .!RpnavNYHZdD񄱱D6o ablg8~sC1rw^:z=Zc2mN0\g5^IgIs`3_/~`⳼ N}<ݰ!hֲ˰9j(艳y4.жQa‚`ffZ15c?[x=a ̞:O4Q:et_-xƓ2ʅp\ aN::#1Cag9?ݻn}s TTmmBm nMrZ:oJa0?5>2qfCOLAlCR]P6`3жV=d "2D%bPO=(u7 c"Dn M!l !+2! "P(="Y#R"8"4 "nH# U>  a< ;85ӈR!   DLLQQal 5۪^ al_F@@hI I'vv kh M.PN)K3')dN)K!bU) u) RO)S'Sm fr fgHJ-~#-+!!/GYhYgֿ Cxғ}T 3T=G2P$C$ )y):  : R"7 o_@@G"2o_@ W k;cQSF*< OOP2iٟ8 2':\   5۪^ **I'vv*ih M*-3')* 0'98r6~#32h4C83/C+ +S@G"2+%cQS,F*<12iٟ8J %, Background      , 999,~>osF%"Saջ16gL]J{-qQ"(9%919=9I9U9a9m9y99zvv{{wty|{ucbcy~~zmlikspcpx|~xpu{d|}|}}xyyebgyvv}~oolfcmo`cgkrn~zsuw{wwry~}ouypcc`yuw{y}vp{zijbcfrepl|h{vvyΛuvvn}tricp{xffluxlmcmp|ofhlljmfjfeoogahp{gfkgmrf~zu~vunzwxtswrlaWWvllgo`ckmr||yvkh^uujgghhjoqdjuut{pvqgf}{wtomqosw^U`^peecfgv{{~zwvjgckgkgh~mnyxxyv~zrwhigstonnuuinurr}z~{|r~xfovjksmreb~zz{zdyy{wsqsrmsvxyzsprtx}{ywx{utq{}z~{{}qxy~{t|uwvwywyzut|~zy{wvs}} olmjgny|yyzmysytw|zzysklj~}uusppmkljpv}z{}}pryz{}q_buyp{}tx~ljkkqarvy||lrux|}w{wqwh\cvq~rvwsllrt|}}nk{rxqjjlmt{~}{qqklko}t~x|}yyk``fbehcnwmkp}{|y{nfmww~qquvusnoolmllqw~xuzginddzqw|ytje}yzyuoyy~|w{zxxuonmomlokjgkgr{~r{idrkelpym|bj|xv~r|[]gy|wqvzuznqtpswnpnhfhghsktxzoljfrnc]_kdzvv†||ewgyrvnnmqupsolssxwjjcflltmprpqlmloj^]Y\e`~zww{wstjrsvjqyvpvusllproo{rz^uqsenglgsieommklk_]dkha~~z~xxrswn~fs|wihjln~lsprqpuir~rw{|fefkljytmotsqpemp`hwv|}wvtow~|}wthpyqrrppvz{trxhjihloosywssotjk|e}~~vz}xowlqy{yzzzmqkls||}z|lkkjtrsv|vs|rtz{sk}~|sqwrtvty{|mptkjkryywrmkuy|zywru{tzvzibh|zywr_bqmo{nzw|{uxt{mi}yceehtxwxy}uwxtvgxyv|wvsply|xvvro~rrzmdunix}ryzttwqvw{cfxu~x~ztwkhdmzutjmhnoo{~sky{}}rqpuwoph|tpoo|}}rwmmjmxy{j~qso}rx|v~vvo`{vptz{ztpqpixpmok~ovhopnrvx}sz|vv}|xmalztv~iggv}omnx{zuv~pqpspssv}|oiptyw{j`e`v}~{xyniswvyxu{wwstvwovvsppswnfnopsxuqttix~rsww{|wtq{xz~|{v~}z|r}efn~sprosj|elwwyuvxttutzqztzx|}}~ywu}qwx|joypn~~mlltyswztswwputxyxzxzpngivuv{|||rchnn{hnomyqrpwxvx|zz|twx|uywusxlmmkqgir`_avwm{]^kpizplnjdfdzxxz{|}z}|z}uyv}yknuomm|}}a^]^jnpwghachhmkvovqjwsywx~vzss}zysjkaurpyzz`]\^icbd|tsjhdggp{|z{wzuq~sxrbee{ug_dys|dchmnz}yjenghgifw~ttn{t~yypglwv{zumhles}~}rurkdeefv}pzyssvwxqrv||qxywwtoo~~|tmqoemn}rqpqlk{w|rxxvlutx~pnnpqqsrptvpmy†syxvzonsvmqzxooqspgvqrzpsojogo|nt|jkduxpoorvrvprqm{uhzm{{pnxlsujweqeeh|emnnmrv|{{tsvlnmgmp{q`bg~geek}c|ggqx{jruqor|{O}ysmkzijhfeffruzrvngxsleegmvllmqziihmzUU~rkj~w|zvlceglxwxwwzoa__cq~ounfk\_Zuy^glhilbXikxypoyzywx{i``d{miofiz||Z[Sv{vxhhjjdmoxnnwqjo~||suyzvdafo~~tnhx~PUYZSxwxs~|hhGfioiq~|mons}~wxw}xy}hgk}teoqsUSRS]aoqvz~yprnllgmnrszw~mlo}ywvx|ughgwlpts}pNORS\duinq~pnpkxtqvnml{ovquwr~yjihhgockqsjPOTU[cXz~vmljxnnp{tqkomo|}hjigigmjzerqqquzsacebgtwm[QW[]iwuyuklijei~vvqepjfhpjlmapvtdhehougga]j{XXZYW\_|~uw}ple{zlnnxTdggbrqf_jrbdgeffyems{dhefj[bTgfagxxy}xbbpxpteVomgw`cbcdyvk~|be_^]Zkzrrz}zysyyuludeilwwur{xg~a^y~ta_^`ivȀ~}uru}cdfed}y~wvw}zqjjoi]`osur[a`ae˃|~zfz}|fdwzw}xymeicmyrg`^ba~_W_oɉoqlncdb_`al~o|yendcefdacdehuoɥzvy|yu{zlhb^[iov{lbhaaf}deeKlƾ{ae|y{vulma~{~kglbktdbabmo}{˶mi}}~|qf~ztkigu~ojpyqwyλppu||y}wvagiihlfbcv}̽Țwqtwprh~~{xlbcnmdechbrpmlny{֚wvqom~p}kyipyy{|mmgdpefedftlpkwy~עvutvkgejypv~zylin{yypojYXY||prrqontw{pcb_`hdWdlspsnguutuektyTnvrx~}|~ruyqsooZY]owlkoonnsttdeb\YbdTW[_fcspnnvydfjvmhqqwmh{|owysrfjofZZVokmnkmfcupn_`XY[fZ}td`sr_kedg|rihi_ohf]Yfrp^`clnbcYcere\__`]`Y\YZee]W]dos[Z_[bh^liclzggaosjljlm}g`VMLlbb^eX\ceiqqrtnl`^Ujj^[[7]dg}Z`jiip{djye^^kieo|gcavuedk{mTJUSf\^\^`lqpqtolk`]Ya]`[^sbdonmmktofxj|u]^^wzvssxfgxvtcdeklwv|]bz}miihrptqqwiun\el`ajdh[XsnvoqqYmlumyig|wv{{~ehfcgjvlmn~sifijnrromnq{zljgpwwxsoqtuzmlnx|seku{m|w~~qniql}nlmuomopxxlkyyzwqsnwvsjkhfugqqs}ecc`]do{rnmsmal{~|vgmikpsnmjqi{^`_stlljgfdab`fkrnnppdflnovrfUXkneoq{xjovu~{_^__i[lnqyqqvbhknpqjmidvj\PW}kfuhmumjbayxhkswttwsc_os~dle^^`dmuwrpfe`badriqjqnplm_TTZWZ]Zcwnebgppwusvo}obZakkw|sedhik|fbddabbfkqrrqkin[]bXYofmtroma\}x}ruopxtlwicmmsqvjnkjjf`bacbbea`]`[fmspgso]Xf_YadzypdtZb|ozyuxmk|~}oeoPQ\mxzqldejejadhehmdfc]\]\^gahy~lnb_[Ucue\WXe]umiijyryr{xYk[nf~lec`cfcfa`hhnlu^_X[cc|jcefde]\[^`VVRV_Zrnkkjo~zkhizx[bcg]eokelkjc{{zacfccphoTjgiZtdw_b^i^Zd_^]ZZaWU^ec[srsorv{mmfhksu_oXfqzm_]`deubvig{zghfk_hrejnzr]\]ab_mga_gigf^gjZav~zxlkpw|qz{xmlwjenurtmk_foghheycglmjhn^`_]addgljhhfmceu^xmx~~srry~ukoxrndkbfn{qopwppcg_`dmmopurbaa jhijojhqilrskcqs~sqrywyqjufkfijizoq{rcf~z{i_[[cjhmuhcakorpmkehpjoko`X^pou~zurpozoiVWe`bnbolrqknjyu|{m]ZmkX[[^jnmxwlnrtujlmil[q~}zmnmsnmidamoxjjlhethhpcZkw{_Zg~}v~us{whowxpjislejlpX[wmjsnsyvpjn`\Yaoj{j`c^dee|zzl|utiaoqsyshgfjumd|f^}|qjfeessshmcb_bmoq`tzvgies|ux~hnxrltl|lxeVqlfi~wnqpjfgf_unwfbdatzyxel^xefdhkm|ust|sipzrllsruncWbx||oj}lt_]]l}seccnwyqpkltfgfifkjlsr{ue_fjomq`V||{[Vlst|xuwq}xnod_imlotnkqx|mmij}lmemllkhgikcz\defi{nu|zukgjjnutvyhgmmqrmjgqnptqpltr~unrvgs[\d{ukhjfj`}qv[bmmx}~}milnjjkjpuwwfoipnrvzvx|srsoljqtzhmnyrafogewtxtcbbyjohtvku|piimmcihymon}v{{zpnpfc[]kijvpptvyrrhY^edr_decoghfmnllpnnp{vkmnphmkihv~|vnbdb`e\]fUUXv{lmcqSTaf_pyfcd`Z\ZpnnpopqnqrpszsiliqvoadkebbqrqVRTUacf|zm]^WY^^calelg_mi}pln|sr}koiiswpml|i`aWkhfnvmmUSSU`[Z\turih_^Z]^]\]fpz~}{xspuzplokgusgkhX[[psi[SXmir\Z`bdorn`[e^_^_]{n|u}xijdvoiqm{of]bukizsonic_dZgrsqgjid]]m}qqtyzepokjjkrwlefkqvrfkkuzqjkgcvcysrrqkgki^cewzotefegbas|kpyzwfnnlb{gfuv|yjttxtsgeehkjk|~uutt}xffjkgcoyfmukioxyeejmdg}sky}xneffjmi_jdemetrzuxw{xfrc^c[c{wqdkr`az{Yi{h~teffgjn~ficdd_v{plarez~wptt~odbm`ij`nwu[~gZ[^muZbefdijq}nlpllkyww|tmbdb\vadqxfWX]t][[awrs|x|Xr]\guln[becbelptl}Hyzqpjc`}{p_`^][\\htkxphkcx\mh`ZZ[]f\\`dk[ZZeq}vMOvhb|]qtlsplbY[]bnmunmmp{tcUUTWbqpcgbZ_z~TXS|lmRx{[_[^bXN_anofewwopomnn]TTXn{`]dZ_qssQTMrw}mrlzk\\^_Zcfnedmgv`etrriknsnjXUZcs{rshd`oz~uHLQRLu~xonnitqz\[\[_f_gtr}}cedistmnlqkrn}q^]atsl^gikv}MKJKTZz}egmpuoegc``[bdhhpzntcbexxsuomkynqj]^]l}ehkkvjFHKMS[y{k`egufefwx`m|iej~dcbqelhjlhrm__^^]ex[cijvvcKJNNSZOptxmyfdczpedf|{yndc^ccfrs^`_]_]c_n[gffvgkpiWY\Y]kndTJQUW`kkou~oeg`b\_zzrggbWfa^_f`bcWfmiY_\_djv^]WS`qOORRQVXpqklsukxc\s}zoab`lH[^^N|hg\U`hXZ^\]\my[dhpZ]XZ_QXK`_[`rmmnsoZZgzyvngl\Ked^mVYXwZ[nk{a}spuVYTSRPbrkjnqnmjqyqldm]\`dnwnkhqn]xsWTntw||x~hVTSU_ksrqwwljkrx[[^\Ztptmlmsp{g``e^QTdhiuhxPVTUYuupztywp\pt}~s]\lomsno|xc[_Ycng[SSWVt|ULTc{}zvv}ezgcdwZ[ZTTU`{~teroy{[dZXZ[YV[[^|{i`}plorpkrqc^XSP~]ckyqvbX^WW[s[\\[b~sW[ur~prmlccXuqntwa]byZbj[YXYdftr|yc_sx{xztush]qlpsyjua_]ktfagphnow{x»uffkr|vwz{~xmknywlkW]__^b[XYw|zlsvxm{gjmwvfh^ttqrrww|laWYdcZ[Y^XhfcbdwoqĐmltygectfysao`gpklmvba]Zf[\[Z\jbfamout|Œfeef^[Z`{yxzldkutpoa]apqrjjdPLLpvvsehhgedjm~qfYXUT\XKX`gdhd^wefegZaj{nIa}skgntsrteinijfggRNQduvmbaeeddjjZ[XROXYHKOSZVheup``gi~zY[_kb]f|ela^wqrdkmii]af]NNKvveacdac\WjedTVNOQ[OqhsXThhV\VVYxuqg]]u^Ud][SO\w{{hfRRWbdXYOZ]j[RTTRTMQNPZ[SMRYcgONSOW_U^ZU^m[[Ucg^`_acr]VLCAbXZV^OOXY^hhgmfdXTK`_ROO*PRY\sPV_^^doX^m[UU][WbqYVUkjZZ`twpbI@JI\TSORSbhghlgdcVSOVRTOQgWYdccbaie\l^qjSTUhkixhhlZ[ljhWXX_`jjpQVotd^]^ihkhhm_kdR[awTU^X[PNhckeggNcbjcn`\mxlkqqrY[XUY[i_abssi\X[]yyehfecdgp{xvn_]Zcklnhghikpcab{uqnwrgW\dz{l`ok~rssgbZf]p__`jdcef~ltl_^msm}nlghclkh`b][uf|w{tqr{~}~{{ZcectvmUUADKQmowxt_U[]k\Z\mmWcr_Z]vururZXWfY`[^_YfcUTRRQ[ylNV]^jjWBBEGJQEdhxwman[YXoeYYZvpomaWWRTTXehRTSQSOUQbP][[k\af^KMPLP_bZKBIMOXa|_circY[RUORtmmeXXUJWROP[UVWKY_[LUSVZamQQKGSeDDIJHMOde_agi|_skUNeplcUU_;LOOr\\PIT[KNUSTScqRZ_eMQMPTGNBVTPUcvabbgb}wu|KKYlmjd]`O>XVOauJMLxnRRebqWsjgkJONMIFXg^z\beca^emtf_sV`QRVZbjsa_]fzvbQl~iNKcvuimrrns]NNMOUagfekk`^ahykORSRPh}cga`agdo[TTYTFJZ]^j\l{GNNPSwjjenhxnmfwRfjrshRQbdxv`fvbcplWOSMWc[OHGKJh|wpKCM\prnjjur[p]YZmPPOMNKSntrhYfcmoOXNLNOMJNNORvoo\Vxpeaewhfbii[VRLKsRX_mz{|{xejVLRKKPgOOPOV{}y~uqពrgMRkhufhdc[\S}jfcu{{hkUQVmMV^PMLMXYwvwheoyzzot~rXTinuqnqjlj_Vfaehny^iUSQ_hZVt\e\acksolvuv|vi[\ahr}kloqtmw|c`cnl`_KQSSRVQMOmrpagjluscqrzv]`cmmZ\Rwhhe|}ggllq`UKMXWNOOTN^\YWXkceybbhwp][Yi[ngUcS[c~{aabxjVUQNZOPONR`X\VacihpyhjkpvgcikkbxlU[`otongcbbet}imjdm}}tm]]_c`cfdb]krotspggi}yifttujfhrsndbab[WVkrredd^fgx}sleic|zb_abgejglv^krpanpfipntglzsfcmqrtjwbyVWkra|gdc`a_aanadbix|{sq`hjrllkhl_d_a^anhdhcvdajnmlwrtvwuunVgsmkzvmgccg_yr_rabuxvxyxiidlljhlw^][\Zapjdcbic}eqyvw{xxtkus|vgegj~okulhwt|twy~{utkkwwZ\\`bz{xb`llknqkrxzyy{zu{og|vuryuywuyr{{spzxmurjqqlbrtrwxro}qwx|}{}~~xs|xntztwxuzqnlk{zpqqhou}~pnvrww|~x|~}|l}wemlmssz|qc~wyw{xon~plhsxzyz~symlhhssz|pmtjro|}ihkpqrowknlheqts|~qquuvplhijpvzutyyqomv{txwfcuvorkqgifietznneij|tuylmptseffgisssx{ntonhijkvkgg{ytjfmhisi{lgeeoroeowuiopl[\Zfekdubb}oqtvtummhrrvti}{rjhnpfnoedb`jslis}ipom^\\hcbqggi|~mmstuxkijjkp~||wuwqyrzvyz}hec_aqmlkgwyspno`_`ttuz{ofxmlis~xmxottzsvwxz{tggi`c_hwmzw\nmnj|rc]jnwkcmt{imeknw}t}w{}twxxwtu{tccob`ahod^[dr{njd__joy~jccgnohX[dkt}t|ypkqywxwxlr~iTg_^[^bgeid_gsvuobaeenftpdciputVWWgiut`j}}gc[cbZovi`eU_^[TRaaWegemj{xuutb]^_oy}|st\ZUVVcgks]bvvv[ZiXde`USSQSSNQ{evgi{{wyfgcv|tp|n^WUUWOab_]cxxa{h[aTSTSQPQQKN~sp}}orystne`avxpfH[[ZVVNM\`V[]`nxswvaWSRRPNNxswzxtqqyjfb_`xtuuLOMNXZ[SKJROTZ[_fUifd~}_WVRTNqpptvyx|tbcru{rej_fhprmtoTNOQR\Y]JLTIMX[]YV][`l{a~Ykhkr{qtyymfzdv~jja[mlkjqHKKLOSSa[NJ]STNVNNSYZVa}q~z~mggmmquxfnhyrrv|\vNJGGLKT`Y[WSSU/RQNOT[ZZX[hvtz~|rmuehqttovyuknrrrqrpjTLEGJKTYZRYLMX]XRSPMNX[ZX_RVdea^hpswxynngfdovt{rppeJPOKFFKRTZ\ZVMVL\[RNRRVYYWUVRVWh[TYcpkvyx~~ghalvutssk]LOPLFFHPVUc\TPHPMMLNSSTXZZTTV`SLNSXWhtjluw}nj`n{pj_UPQPKKERG\\SSW]SMJPOQSZTX[\TTVVU\WUVYYbdX\jltrnnVbTVJNQQHGIMTSRRanPIJQUU[`a^_c[`Uig`[YW^UwkUjtrr}{~yuy{nc]YXXTPNNRMNFOVVP[^pjce]Z`^ddad\[YXc^[Z[br[qqtvy}z|a`OQQPTYVUPOQVLOQPJ[`_g`he_b[b^`c][_UfhfksvxwnrdVURQMQPY[QXQQRVMLOJOOWRY]^\][SYbpmbQScqvw}u|mcLQQROQPXbb_]RQRVWXZSNQQVY]][[be|ZfRJPXZSNPS]hibfTRXY_bKKNPQTVdjpqstputqpmOSMLTUVSPMW[^]_V]_UTZbZUKOPRV]\rrxy~upnkphjn|RSSPQ_YZQRW]]Y\a_eXNX_`[VRR]w{vsqzrqZ_etgnjinjq}lSPJW\gd]TSS]RYV[_\RORW^_c\buz^`\\_cdcxmzmtplZVVOSXe`i{hQSUWXVW[WRMPT\~c{xsc`b_\^_]kwq{{q}bRPT][Mi_^c}[sTRTWT]][SfTaa|suif^^aemitgwyyo\OQN`becQWXbciNPTlxZ^o~{otkkgapb_eszty{|]QOLcd\bh[UVR~lUeygxpkfed`ddsjgw~w}ng\V_\jc^_Z[UVUln}vĩnmkki^]c_cddksj}xzwObcYhmlh^YVZVVTox~ŽeovskkoaZ_`fgl`lqvy~V_cchgi\]Z`a_XXļ_eddg^lk{i`hbiquZfafohgd[dnkɫngfcb_^aupcagnrz^_`jjr{sskmdfd_kbbebaksÂYagtb`z~qv\qjccd]dfhdxm_db_][qacj`]d`bdfXoll􎵹p`ho\\[\RR^rt_fmnrmnoņu_^Vc][\[TNsxr|jw|tk~Ƌs^`[QQ]]`frqqtp|wƪíwxsuf_ZWQVV\ckrvŀr^\]bmnbWWS[[mri{pʷgd\]]WabRRUZ\[alj~ȼwzym`\\[US`aVWYdfnjlm¿ɞyytgcYTSSUZ]a]\ddionnnt{ƚ|psogh^YVTW_Ya^fbefmlowo|wĽskmfge\bhjfWjkrvgrkkiwsmjx¶lrqqsmrtvstxhwn[\`znqovlfpuf~uivtuzi~{ytlb_amnrrmvqx~ioxw}qtzzyvqyzwj\^wjjhrtfqyo|}trx}tqp|{u|ut}}jzz}ji{xtry|xvj]_jofhfdge~}c{qq|nzywzuqqstx~}wwowpxz{֭rpqwt{yxv{bvp^nveecem]v~y|{rtkmkvhu|zqliakuwsu|m||̷~{|{ywypgjltzy{yvzw{{zyzrgc`lu{~~_`afxrj\X_aaXn}cNTXejfgb_^^ao|xcfc\bttjdUUX^Z^aa^Xgnkolg\[]roa\kiij^\^hidZXXZSPRagvk_^_Yacswld^`X|vtq\WZ\a_cagoYgmk[fgZ]dbi^cxpi\Xcghj`mYsOPdgYrq_^\Y\XZYf[]Z^uosskkXacldedaeY^Y[WYf\X\Xk\X`dbblhjlmllgO^hb^ojd^[\`WqjXkZZjnlnno{a`\edeeb`eoWVTURXf_YXXa[vp[folmvqnnjclhqk^\_b~ufcle_mipjlps~sxrlkdcnwznRUTXYnplXVcbaae`}xhnqonpyzpjxxpxf^rzmkiploljmfo~|{yzrifzqndli`ffaXghfklgetglnqrprtuxtlvgwszndjpjmokpfc_^||zyyxxu}}qwpyeff^dgnqedmhjjtprmrtsuz~scsm[cbciipreVqvsyzxvmomxpne|drfb^ov}gmny}zmntioucb^^iipsfcj`heu}v}uopzyx_^afghem|bca^[hii|}oq}rtfgkklfb^_`el~pkjouu|~vp}gdcjphmm\Yklehag]_\^[jpdd\`aozyrgilvacfjj[\\]_izviinxwqdjwxfd^^_ala]]|qoj`\c^_i_qub^]]eszzec[elj_egbQRP\[axZkXXxsegjlk~kdb^hglj_u|syqh`^de\dw|g\]YV_wvhb_is`ffdURR^YXg]]_r|xucciilo~b_``aftrzv{rmkmgngnjopt^\YUWfcba]moifeeVUVjjkp|qf\vyzodb_iuv}ncn|eu}{uujjpilmmu|opiv`^_VYU^wmcpumRdcd`rhZTadnybZdkq`c\admsjsmz}qsj{mnnmjk}{qiY]]fXVW^e}wuZTQZhqd`[UV`eo~uaZ[^ef^MQZajsjruz~{oeagomnmnbhuyaL]YXSUX][^wyZU\hkkeXX\\d\j}g[[agljKKL]_khU`{sr\XPYXPel_V\NWWTLK[YO[][c`x}plkijVTUVfoss~jk}RPJKKY]`iQVmukjjPO^MY[VKJKJMLJKuz[l]_u{opmm[[|Yls}xjftfWOKKJMGYWTRWuxmllUo\PVIIJIJJLFJwjgsseho|wegbYUUwm}nf_ATTN4GFUXMPQSepllxyrhULHIJJIJJnjmqnkgfu|}nz^ZWUVmjjk}FJHHSUUNFFMIMOOT]Pc^[vyrrsUONMNIfefjlooriXYgkqhZ`U\^fhbjfMJJLNXW[FHPDGQQVTPWTXbu~r|xq|YrsS`]_hqikppd\q[mv`_WQcbabiCFFHLQQ^ZLFYONHPIIOTVPYtpcusov~rssa\]dedhlo{|]e_pihhkqUnKGCCGFP]VYURRPRPLLIJPVVTQS^utlkqursrsgbj\_ikkgmpladiyihihfscPIDEGGOSTNVJLW[TOOKIJSVURXJMZ\YV`hiy{smop}ygvd]\Zflz{j{rife[DLLIDDHNNTVVTLULZYOKNMQTURNOJMN_RLQ[h`lwwoot{{tt]^WblvwkjhiaTHKLIEEFLPN[VPNGOJJIKPOPRUUMMNWJCEJQP_kbemu}{kwqd`Vdyqf`VPKMMHIDOEVULNT[RLHMLNOVPTVWNMNLLSOMNPQY[RUa}w}v_ihde|MYNOFJNNFEGHOMLN^kOHINRSX\\ZZ_UXLa^WSPOUMk|bO`hgfposolpqeYSQRROMJJNIKDJQQKW[mh_`XV\Y__[^VUSOZVRQRYhRyeehimr{rwsXWEHHGMSRPLJLQFKMNGW]]e\c`Y]V]YZ]XUYN_`^biu|}kkcwyj[MKJGDHGPUMTLLPFFJGMMUNRWWVWVOS[ie{[JK\jnwv~~kqjse[CJHIFHGOZ\ZXMKLPQTWPLOMINNRWWVV\_t{|twxwT^KCIQRJEGKUac]aNKQTZ_HHKKJMO[bghjjy|ejidfbyJNHFMMNJGDNRUVYQXZONT]WQIKKNTThinosied`d__brLOOKLWQQHINTTQW\Z`SIR[\XQOLVnqkhfoyhhSV[xh[d`_d`gwsdNKESV_]ULJJTKSPVZWMJMQZZ_W]l{nUXUTSVXWWk`otcjf{bROQJNS_Xar_HJLNONPTPMHKNVwz]vnniZXYVUVVT^jcmq~xqhrZJIMXWIdWW[tRjKIKNKUUTL^OZZwpjnbaWVY\dak\jklqryfTHIG]_b^JNPYY`EGKbmQVftptz{~wbf_bc^[h[Y]iohxwmnn}zVIHE^aY^dTLLHtvcLZ~|||oaoha\[[Y[\kc_msukr~zf`UOXWf`Z[TSLLbdrkuzhedecXV]XZZ[ck`snpkI\]SbhgbYTQRLLJdtlrz\fmldfek\UYZ]]bVagmotPY]^aabUVTXXVNNyY^[\_VfdvcZa[^gvwvlT_\aj`^[SZca}uwh__]ZWVYni\Z_fjryXZ\dagxvxv|{u}{vmnfh]^\WcYY][Zcj{~||ޯS[aylz~}uYXtxkpWld\\U\]_[oeY]|{}WVSRj\_f[Y]XZ\z^Pgc|c||{|{{|eY]cSRSRKLYmnY^efjffyw{}|lXWNZTRSRMHmsmxucoszlbs}z|}lYXSKJTTW]jj|xzklhrl}wuklik`ZTQKNNSZbx{zjmyxsshWUVYgi\POLRRdi_r{gw{y||z_\UVUNY[KKMQSRXcautloouwdYTTRMKXYNNY\eaccvzz}{}mnokv_ZQKJJLQTWSQYZ_fddxdjyx{yxmxz~xqfie^_UPMKNVPXU\W[\cbemermwwzzxzhad^`]TY_a]Nabilx[haa_mic`xxw~nvr~sbijzjkeikmjlo_nvePRVpxdge{xxzwyj`]ho_woanlmr`urpkcYUWdei|hcmxz{~tudwtzz{u|ukypx`fppvimrrqluhoqnaRTmab_ij\goe}pogelqxszkihrstnivt~pwjissv`qwqubatplj}nrnm_SU`e^_[[ZZtyqWnddpbntullolhhiimrpkkckcmprƽÝ|wyjhhnlpnlhoVkdScjZZYYaQkslonef^`^i[hpnufa^V_hkgi|o{`ywpxr¿Ļ{yu}wrn{ronljlveZ]_gnlnlsimjnomlmf\VU_hoxrsxvsrVW\mg_SOUWWNdoYFKO\b^_YUUXfso[\ZT[~mmc]LLOUPTWVSL[b_db^TSTifWSa``aURT^_ZPNMOJFIW^mbUUOXZjlc[UWOvoljQNPSXVXW\dM[a_P\^RU\Z`VZohaSOZ]^`VcNgBDX\OigUTROQMOO\PRPUmekkb_OWXbZZYVZMSMOLO\TPTOcSPX{x\YYb^`bca_YCPYUSe`YSPQTLe_K`OOacaccpVVQZYZXWUZdLKIJHO\VPOOXSmxvgS^fbclgcbZU\Yc}w`RQTVriZW`YTa]e_adhrhlfa`XWdlocGJJOPghdPMYXXZTs|n^dfdbdjk`YijysdjYQfn`_]d`c`^a[ctrtqomnf^[nfcZb{`X_`ZP_\[`b\Yix\bcggdgffid]ix[hemaX^d^ab_dZWTSprssnnmllirrfnhq^__V\\btfYZb\t^_geg`ghhjr{eUe`wOWVW]]dtyfYKfihyunnljactalge]t]k_ZTciuq[ablzovmabh^eiYVSS]\cfZW^T\Yitq|zjqidevomlSRUZ\\YaqWZYTQ_aaopc|udrsoehZ[a`b[WSTT[`ryd_^ciipridp[XW_d]aaPM_`Y\U[RTQUQ_fYZxPTUxcqpgZ\`jTWZ_^QQRU^ok^^b|lkeX_kjuYXRRSU`UQQpec^TPXRT]TeiWSRSSZjqqZXPZ_^SXZUFGERRXnPaNLvkgZ[_a^q_WVR\[`^Si~pgme\URXYPXjp[RROMUnl^WT^gSYYWIGFTON]SRSTgnjgVX^``cqVSTTUZifnjoga_a[b[b_cdiURPLM]XWVRbc]ZYXKIK``eqfZPhik_VWS^kkrcWcoYjroji__d]abbjqxde^kUTVMPLUmaVdiaFXWXTf\LGTYcnztSITZbQUOVYch_gbxwnyrtfi_occa`rrg_OQQ\OMNU[skviNHEN\eWSMGHSYcqgQIILUWPGJRYa|jahlptre]X^ddeX^lqXCSMMIKOUQUwlvlMIP\__XJINNVN\nXKIOUy^aGHHXYdbNWskjVQJQOJ]cWOUHPOLDCPNFRSRXUloxwpc`_^]IEFGXaddoZ[wqNMGFGTWZcLQemddJIVGSTPFFEHEFDio|RaSUj~xwxlcd`aOPpM_eoj[Wqg\QLHHIASRPNSnpefeOgUJODDEECGHGAEl^[hh[\cpzz|xvjZ[WMILlaq`YxU9NOPKKDBPSHKMP\e_bno~w}iaOHFGIHFFEb]adc_[[gnmoxanSOLKMd_^_rr>CBBNPQJAAGCGKKOSCUPNk~|nhggQLJIIDXWW]|_abd[JL[_e\OVLTV[\W^]EBCFITRWACJ>AKLNICJFKWl}shpldyyqRijMRNQZwqc[]bcWOdNaiVVOJ[XVW_=?@AFKLYUGASIHBIABDIJHRkh[lgchpx~hihSOOUWV[_amoOXTdr^__dhLdB?<=@BJXQSOKLJLJFFBBGNMMIOXlla_ehfhhZV]NR\^_Zac_UY]mz]^__]jYFA<>ABKNPHPCEPTNHIEBBLNOMSFIUTPKU\^nvqhabdqmYiYSRPZ`oq_pg^[ZQ;BC@==CJJOQPMENDSQHDGHLNPNJKFIIWIBGP]Vc}nlcbhpphiSTNXbtjma`^_VJ>BDB=@AHMJVPJG?GCCBDIJKOQPJJKSE==AEEWa[_f|ivro_leYULZn|gx\VLEBDDBB>J?RQHHMTKDAFEGJPJORSJJLIGLFCDFGPTMO[qkqkTs\ZXYnstzuDPCFBAJOFMFFHKCCFBHHMHOSSPQOFKT`]rSBCS_d{mjrr2_e^zfXN;B@B@CBJUVTRGFGKMPSKFJHFKLMPPMMTVjqvwupr{jkwuulk~}JSA>FGIEB?IMPPSKRTJJOYRLDEDFGML^_dei{u`[[W\RSWuv{gEFGCEQLMDDIOOLQWTYLBMVVSKHFMae_][ep]^KOTn`R[WUZT\kvtfXFC=LPYYPGEEOGMJPSNCBEITRVNS_~~m|y|cNQMMOQOPaWcgW_[pWHFKCHMYS]mZCEGIIHILFB>BFMmoTi{zvxddx]QOQOMOO(WbZdhrke\gPB@ERQB^QQUoMeFCEHEMLKBRDPPv~xyxwnzg^bWVMNPT\XdUbccfg}m[K@A@VX[WDIJTT\@AEZcGLZebfmoxroytkW]VYZUQ_QNS^c[mmddevptoOBB?XZRX^OHGCnp\FSsrswvm}wncVc\WSSRPTScYT_fh^eqwov||[UOISR`ZSUPNHGF\]ldlut~n\ZZ[YNNTPSTT[bUd`a^}~?RVL\aa[SOMNFGE]mwcho{PZa`Z\[aSLQRVV[NVZ^`eFPUUZZ[NONSSQIGpw{ttMRPQTK\[lYOXQX`nml]tKVSXbXVTLU][vlvuzh[STQOLKNc^RNT[_gxysmtux{NQRZX_qnpntv|kfnkg^a[]RSQLXMMQPNX_oquslkxzJQWlbrzztsgOMgj\bLaYQQJQwQSPdZzpNSnnv{}zt|NLJI_PS[QNRNPQnRDZVotsvrXnomrqprsWLOWIIJIBBNbcNS\\`ZYYlvwy{rwzr{~lntwnn_LLEQKIJIC>chanjXfjo^Temvpnwoyn_OLIBAKKNUbbsoo_a]ic}t|uxm~igx_`]^VQJGBFEJQYosqvabnnirtxy~u}s򤞕ye\KKN]`SFECII[`Xis{\kpjmsu{tq{vtpSQJJEPRA@DHJINYXlzvvh{|z~z{tv~}cfgmp[NIJHCAOOEFHRS[WYYzknnqvpx{|}quttdehcpUQGBAACHKOKJRRU[YXmX^mmon{|ui^tuxvkny~qkg]a]UVLGDBEMGOLUPSSYWZaYfakknxnyzr|xjz|zm\VZTWTKPVXTEXY`dpU`WWVva]WTllkrbieoqz~seW_`pbb\`bdabfVem\IJMwdxlY[Yolln~kt}}|wxy~|{|yk~w\RR^dUneXebdhWligbZOLNZ\_r]W`lnosyjk\m}|vglsppjo|g]jzqvyaj~U[gfm`chhgcm`gheXJLdXXU``Q]e[trfh`]chxrkoy_\[tgiic]igvqcl^^hhiSfmgkXWifb`ugjfeXKMY]TVSQVSlqiOg]]gZfnodce`\]__bge_`sXsw`Ybdesln_\\cahgeahQe]M\cSRQRZKdlehg^_WYWcSaifm]XVNV]_[]qerWpnfmfxokgolkfr}jgffddm^SVX`gegfjaebffee{g_UPMV]clfyzjomigztzplmgffgihhlikhcw|~}mklngimrsyvttu{}{nzzwqq}msy{xwtoroidhgtxnhkieehihjljjegjplf^_feglklqmuttu|vwvqw~|xywnsnloqpxxyrjkjfkvkohglidgihhklkmloimv^[\\hghfu|ohsuttrqrtsrtxvummolkoqpuurmkkjmdvcmgkiidknokllktpfdc]\\cbiijimqotlqrokqpijipulbamooppmijiwjdadeopyosrokpyx|zg]__gvnrpmqqsrtpswmkmpggfgngqonnxttjkhjn`oaollvtvquxuqwwljifdhiotmmliilprklliggfgblqlzyvt{lvyosv^bnllmppqtplnqpezxfkldehhjmnnfa]ckertbghhiijqpwwzox}rv}e_xnlmxvtrol~m`~dc}okggixdubbejwgifp|}zolwy~prrlyqsplkzxvrpg`iossvggdfkssod^a_vxhoiiu}nhuusw||~qxstvsjqstkkzt{zkdajmqxrpjhhdefwdiddfzsftiimxqturtxxtztou|wkuwkhqxjglf}gbfqou{hgfeqmlked~{pnsqhwwzqseqvuqsxf{eehfefzjvkhjhh^qrir_paszfda]jm}susp^ulknmieedfhdecahimzzqggffddjjimtqhaa`dlq[gpfl\`dhrvqvpimztspleufa`ejbdehhlprv|sphe^S\ijilhqgaabbdnx_cgeo[]{s}voyokosrrtzrf`ecedcfggjztnsaWQRRdfpmflkicjidejtginkreoyv~knjmnlup{ohifafcd`bcfgliipdZ]RRPPbcgoodbaccdeevqpkrwt~{{mrqsihluilqqmhfdbcbclhgkO[VTNMPPOJVd^QUCDPS\cc}uzkp}p{wud|yhqptlhpllijecjhdpmloSSOLLMKMMOLU]\RFECEBDPJMj\aawzsy|zpmllqhkloytlppnqkupqNRMJKIZQPNQUU]\GEDCGESFLLJJILY_ltvzmefyhos|vowzwpp|svqqNLKJMJSOPQYY\aWINACUZKEICCFKJOWZdY^cb^T`Q_hbeppx{lwz{|wywmqsLNLLKRRQS^WUINIBDW``STUEQYUNPVSRTM^SRRNQV[UTW^jnhemrz|yuqv{uLKSJT]VTTWUWWJLMKITLW[ZVU[ZUTTZ^Y\MPOWTMRTSSRUY\mdYPVVvusw||oO\RW^ZOWW\TW[RQJLNS[ZT\Y[STaaWYZWOOVNSOZRTTY`aTRTQUWd\b~ww}ni]d\YWWV_PXYSTLQQPQT[WXUX_bWVT\XKPXQQXUZPQUVUWUVSSQT]SSWnivaXd^d[WWVRVQJNQRTUVOWW\^eWSXTKKSRJSWVS[VLKRXYWVPSSQTQWQXdlY``[USVU^NSTRUmVSVagvdfR\dTUNQM^WUYckVJSZ[Y\_QPPNPTTPplv|WZcwo~{tk}\^S[\cZ[ccTOORUSPmȼýzZeemrQOVWV`zº±ǹ­Žɵ߷Ƽô¸¾ļ¸ĺvxyyx}ssǽtvzuzvvym{~Ŀ«ȿǀÿrswtwupr|vjkýŵǿu~zmqokkj½öɏɥ|mnjŸəsppsqr¾ǝ¾ľqpsqt{oؿŽȭĿҵxvwn|pk¿¿ȼywytujikx¿}zqjiknhju}—{kjjkknx|}xv{ÿļŹ¹wy|}{nvsqpxx|Ÿ絨}zxrnmz{}~}qǾû|nmnr~~ws{ļtnp{¾ȳ|ʰ¿ٽñ¾¼©¿ż¾Žžټƿŀ¦¾¹Ţû{z~}}{|p~vyq¯jogcd^]]_`__b_a^Ymrtscabd]_chioljjkqvwsvxoaoolfg|scioqnmjdfb\W[\jnd_b_\]_`_`b``[]`fb\TU\[]babgckjjkrlmlhnurnpmdhwdbegfnnof]^]Y]jae]]a^Z]__abacbe_clTQRR^]^\kre^ikjjhgikjhlomkccebaegfkkgb]^]`XjYb]_^\Y_bdabbajf\ZYSRRYX__`_cgejbghfahgacbgmcYWceeffea]^\j]WWZZbcvkbeddafon}rp]SUU]ldhfcggihjfincbdg__^d]geddnjj_`\`udVdUb]]gegteknzkvgmwmba`\Z^_ejccb__bfibbc`_^^\]XbgcwpomjrbkogonSWda`_bbcfc`cfevuy[pn]ac[\__^`cdd\WSYa\hjuY^_^__Q`gf}lm{pfntmqv[UmdablqpgdgcarcVt[Ys~fb^]_nuZkXX[`m]_\fxrspebhkvytwfknaogie`aojgr~xuufe^V_eiil]]^Z\aiieZTWUln^e__ksd^kheimmprvflhgjh`gilaaoremuvzm_{ZV`cgnhf`^^Z[\mZ_YY\oxiy]j__cngjjeejiflfeipls`knzwc^gn^Z_Zrpyv[X[gek|qtu^]\[gcaa[Z|tqfcig^}lkldhZdkjfgm[zywr]\][YZn_j_[^\]Sfg^gTeViup\ZWR`csikhuewSkbadc_[\Z\]YYXV]]bp~ypx|f^][[XW__^bie[TTUTX`eO[d[`wOTY\fjfuke^bojifb[k\WVZ`VY[^]bfekrge]YSIQ^^`b]f[TTUV[dlSX[ZcyOQmfpuhcmc`dhghxjph\V[XZZY\]]`qgb~whVMHII[^hd\b`[Wa`\\_j\]a_fzxXak}hq^b^ac`kfqe^_\W\YZVXY\]b]]g}[QSHHGG[\_ff\YXZ[[\]nhhagkhtupylm`feg]]ak_bggc^\ZXYXYb^]aHSPMGFHGIFCO]XKN>?JLU\[[uosafrdol{tvziZpm]ggjb^fbb_`[Y`^ZfbadPOLHHFEIHIEOVUKA@>@=?JDGeVZYmnhwor{ody|babgx^abeojbffdyg`jddJOLHHFVMLIKNNUUA?@?B@NBGFFDCEPVajlpcZ[mx]dhpykelomffruzxikddJJIIKIOLKLQQSYOBG=>PVF@C>>@ECGNQZOTWVTIVFV_Y\eclns`joqvrmuom`cdHJHJHMNMLKKVNMAFC=?QZ[NOP@KRNGHMJIJBTHGGDHMRLHJQ^a[Wbg|pr}oidhllHFMDNVPLLOMNNBDEDCMFQVUQPVTNMLSVPSDFEMKDJMLJGIMO_UNDKJwllhknnseIUKOVQHONOSKNSJICFHLVUOVTVLMZZPQRNFGFNFMHSJJHOWXIHHFKLZSXuljwxrsoc`U[TQOONMVGQRLMEKKIIMUPRNQX[ONKSOBGOLKSOUIHOONPMNKIHJTKKOb\ituu˅wZP[U[RNPPLOLEGIJLMOHPOTV\NJPKBCKJDLQOMTPFFLQQOOHKKTNKNINx{x[cQWWRNMPOVHKLJMcNKNY_m[\HSZKLFIFWOMQ\bOELTTRUWIKLLMNLIuxd~ajpPSZkdqys{qiv}av}rRvVMST\RT[[QMMOSMIc{nR]^diONTUSZwlw{~дysq{¯pptxwjlmkjnde笯himu{tinkzgm_nqfhlkwu|ljcfoj^_{k{|s}}wnadc_^]wo`a_}òhedgdf氲ێ|ddgdhupc벮흒kkmcodcomnilbacnrpgbadf`aho}󬫨¬xpd`bbabjozrl|igmͲlmpqn`gfdcjjnu篰wqmkgbammqqf୫~zpbbftqqjfot󭧧hbcrq}zouyutu㭲~~}zqwrwzwtz}{꯮䲡xʮשּׂ󴵸۪˵󶸴𫭬䦧ϩﮰr}ztqtrsur~prftlmxy|v|z~g|z~p}|af^YZSQQRQRVSVRMchjhXUUXQSW\]c`^^_ejkgijaScb_Z[riY_egdc`Z]YSNRQae[UXUPPQRQTVTUPRV\XQIIQOQVUV[W_^^_f`a`\cifbcaY]mZX[]\dde]TUTPUbX\UTXTNQQUVUWVZUYbIGFFRQRP_fYR]_^^\[]_^[ab``XY[XW[]\aa^XTUTWOcPZUWUTNSUVUVVU_[RPOHGGFMLSSTSW[Y^V[\ZV]\VXW\bYOMY[[\\[XTUSaUONQRZ[naVYWXUZcbshxfSHIIQ`X[ZW[[]\^Z]bWWX\SSTSSZS[[ZZda``UWSWl{|\N\NZUU\ZZhY_bo_ul]blbWSSOMRSZ^WWVSSVZ]VWWTSSQRNW]Ymgec`jYce^ebLP\ZXYXWXZWTWZYkjmPecPUUMNRQRTWXXPKGMUP]_iMRSSTTU\[tcdrh^ekbekSMfZXZchf]X[WUgyWKiOLgqYUQQSbi{N`LMOUaQSPZlfgeYW`cnqzlvm[`cUf^_\WXfa^izuokj\[SLU[_^`xxPPQNPU]]ZOHMJabRYSS_gXR_^]`efijn\b\Z^]U]^`XWfh]enoreUrzQNWZ^d\zZUSRNOPaOTPPSgm^mQ^SSWb[^_\]bb^e][]d_gV_bnjVS\dWTYSk|jqnTQT^\aqfjkSRQO[WWXRQuleZW][Ryrbcd]_S\a`Z\dPnmkvfQQTSSgXcXUUCK]^U]K[L^jdPNLIX[kac_kYjG_VUXWSQQPSVRRPNSSYjvmdlq[RRSSRRXXWZa]SKKMLOW\FQYOTlGLQT^b]j`YRVc^]ZVP`SNMSXPQRUU[a[_fv^[TPKAJWWXZT]RKKLMPZcJMQNWmvEId]hl^XbWTX\[\l^e]RMSQRQPSTTWi]Xtn^NE@AASWa\TYVSMVUQQU`RSWTZooOV`us^fSVRUWT_ZeYRURMQOPMNPSTYwTU^tSIJA@??VUX__TONOPPQRc^]W]`\hkdmaaT{ZY[QQU_SV[[XSQPNNOPYUTX?KHG@?B@B@?JWREG67?AJPPjcgX\hZb_ngin\LdwwtaPZZ^VRZVWTUPNVTQ\ZX\JHFBB@?DCDAIQPE977545A:>[MQPce]kbenaWmqUstwxUUZlRTVYc^VZ[Yp^Yb]\DIFBCAPHGDFJIPP:87677F8>>=<;?INW_`cWPQdmwvyuRX\en_Y`caZZgkrpad]\EDDFCIFFLKNTJ=A68JO>7<779=<@FIRFLQOLBN@NVQSYZachU`dfkgbkfeX\]CC@BBGHGFEEPIHE=G@KPOKJPNHGEMQJN?AAHE>DFFDACGIWNF>DDocc^bedhZ?LBGMIAHHNEHMDD=?AFPOHPNQGGTUKLLIBBI@ECLCDBIPPCBB@DFSKOla`lkgfcYUMSLIFHHGQ@KKFF>DDBCFOJLHKRUKHFMIMDBGUZIAGNOKOPEFGFFDAlls[sYafGJQaZgnixof\jpViocFp{kuPHJNUKNTTKGGHKDA\pwrtv}{ywxcKUV[]HGLMIQnbjwsrxpxv{s瞜ؕuvlxgdkq韙zghjpm_`b`^_UUw™~~`aekqj^daoYaQbeopt{]^a_lxskr`^WXd^SSlsrq~|`ntmwu{{|hwrqkbUWWSSy~~}}~|vy|{yrldUWVzpz~~}{}|v|~w^ZXYVY}~}oVUXV[fcTڝ|}͑}w~_`aW_TSpdcb\]SRS_zϚfdZSRUXRU]cuxo癘~sjbVRUUW^cngbp[Z`ytabffdV^ZYX^_ahs{֔znhdb]XVbceedYqsύxsmeYXY]kgg^Zbg{oop^ZZihrncglhhjwnpnxpstu}}ttlckgknl~~{x|}urtrinrp~Ꞝ顐|~w|yvunМtv򝟞垘uꘝ󞣤ѣ󢦦飡񞟙إ㘖ᣡԘ~}}}~~}frxxpjzxx|uy~wxzysvehggskh{~{vuv~y|tp{qu{~|vvwz}stxxv}udfZh`cnozuwutxu~~rjyv{zl~~xv}q}j|qysw[pmqdtry{{yzw{l}~$w|{|_^fc]YW`\xjjikenpwsrigrj^^kkotzncece_ac^js{upbbehtmc\xvd_\[[ecbhgbggkjwpskfdj^_brfhnfvroj``ccb_he~vdbccjoea`vfmdadakhiefiozrrtmmhde]jkonmpooy|rfb`bef]cmzzel`cbcdffe_`vw}xnfiq~nhlpomeen}rsz|zsfd_\_nponnjmv}ugjqnbehiyloqvtummngfdhwkomxrenornry}fjrx|usmfeacnmollhnty~wxpkfhcodhrqvwwuvjbgavx~mlt}{zzwmpmstuyfnoljahtwfdlbgbirqqsxijmqjml_nqqsutu}{spjwwstm|wq]fijssqmfec^[_rokcbeeceswej`hmlik]kgupspprsqrbeivs|~mwxsjoxp^hjlsmjnigaa]pmokjesphewic_chruYfux|pr}lgdbco~upgiq{|_\__jmmihhidouovsntimonn|jf`dajptw~{zpu~usvgccbjefghptnb^ua_[aljpfhgl{uio|{tsniklktfcgfgmmrnnwvsok`bcmklmjlsrW\avzkgemon~rkcflmgi{hjkgghjxwdbcheftxpoioqs~roj_\bljjpsupY]ftnu}uqon`llfe`{heclexvfflbiiljgiefjtwyytqqjourmjm_pbffjitwrtachpqy~oopifxknlhgeccffihccjbiZbgf^hfgezxvpjojlpljjq^eliikiiky|stnwprmot~kyymuiornifgfkocfnqavcg_cffjq~uywujfekjjkicaimklihier{rmlow{qrxomlnxlxookfhsrhjheihcffwyohcfiok~qkgihpywpfljllehgknekmllwrpoykqrmhrpmlhhiefjhigdfefivthdeaftigkkhmtstknljpomjhffbpnkmmhumqu}~qurrlolimiidfhddehmxobaacztndjffnoqrmmhiqqnikfhnnkkfceovrzcevornpmkgek`inghgeejgsywy{hfir~{loumtppkmiirssefgshmkfhecfdpzsfwnijihlgdgddigdeehtnnppmw{uimsmr~kmtmotg]_rqztthjkpcffdqpnqqddiinaabqikofghnommqpnb}|xunqytoxroo`bdzx}|kpyr{yfghgsuyoilpqfjxomgeaf|w{zoomkpqony|wrsw{vw|pvjZ__}urdlwy{kqhhurnpqtuwr|ntfkkiqzywomlnsloywqojc~x}~r{}rsYl_uysnkmm~z{lxwtmsttnzsx{y|iklmplsnstkjdfyxs|toimwtnoymijmvopzstqvkst}ytwwz|_Zojoomhjpnpgidgj||rmsynYe|n\`bnux}ustmjgtkfitknq{|~px}tpul[]ry}puiinrsvrsu{|lomsrxqrQUSQSVaeywy~susodjhhovsnqsolorigipito}mwijhocq{{{wzvxxptsuu}NRTLMUXYawwvzmllg|x~xlknimnihhgqz{t~xgzvjsyowgnk{stnswy~WWZKUXXZdaLOolomkioow~w}gkgeelifegr~~}}wtuzztwgsjmvnofnoxm`qs\[YW[UKLflmlroomsq}ddceejghsit~~xnkkfeptififi~mehmopvwijpnKKLgimostq}q}qxfcgyxigjlpikmgpdpwrvjdeknslilkjmq~{ggmnyyqiisnoks|zlwpotmkx{jn|yrsttouuxzrolkmtoprwormlwiiqjtg~qqtqtqlwwrmmw|nxqǷyo}msqojmtle}ysnpwz|~~pqmoppogm¿Ŀ~ssm{tomon}qz~jijo{xpummojmɺ¸{wpkp{xuyhln|xuutsmnrot¾ǸĿ}{qmloxpookhjq~{uuvomvu{Ŀ۽~okqzqpqp~xuutu|Ĵǿzyvpwrotxvx||zwsvrp}tu}~wxx{~û||{y}wuxxy||xxuv{}t°{{||wz~{{qqwoè¿z~lmpx|{~y{ppq}wĸostmn~pporzrſx~}}{z~rpts{uvzz{xwtt}ry{yttsxz}z¾yxy~ytzvkrrntx|}}~}|ɷ~xy}w{|~~tz{ŝ¾}yzvslx|õ€|tlrunyrqwmzt½ky~zz{|n~}usmmx~{zo{|zȸ»wtk{kmhe~vwxrkgiositkr{ʷ}x{wm}w}pzulg~uprkibsdeglrtx³iqkzyppxmkgirwnkh\]`qkknt}}Ħ|yzzli}zyqvwoznyqbitwkkmms||ɡżz~w|{lnhl{qtmnny}{|njkwv|qlm}ޱ{~vwmhiuroomxpotrz}ns}y¶}xuxjjiollqynnvs{qxtpqq|~}|{xvjihj}z|}poornptmnegip|}{´zhh_v}}xz|nloldfssoxq{yuols|}||plr~pmnshxttv~~~{ux}{hg{}mst}pzsxul{yuywsmmvswzzz}wvwkuqquq~}qnpsqp~nkiu{{vqy~~urvyjzp~woho~{|mrqrUT\XSNMUQn{_`_a[dfmih_]gt`TTaaejpdY[Y[UWXV`xjqkfXX[^jcYR|nmYU|QQ[YW^]W]]a`mfia\Z`TUXyh\^d\lhe`VVYYXU][ztqkwZXYY`e[WVj~}w[b{ZWZU`\]Z[^ephhjcc^Z[S``edcfeeorh\XVX[\SZdovnZcXYXYZ\\[UVjkrod[_gtd^aebaZZbshiprpi\ZVRUdfedd`clusuk]`gdY]``ncehkjkbcd]\Z^ywymadcnh[cceaelq[_hnrkic\[WYdcdbb^djxzoxtmnea^_[c\_fglljk`X]Wnotcbyujsqmkj`csbhiko[efbaX^jm\ZbX]X_hgehn__bgacaUeffhjijspif`nvuwmjjcrwzjdS[__ggfb]\ZURUhfaYX[[Y[ilZ_T\a_^_R_\ieheeghghX[_mkqtcmni`eykfT^`cgc`d`^YXUecfa`[if^[m^XTV[ghvuN[jnrfgsvb]ZXYdtkf]_vzvgrzsXSVVacc_^^`[ejdlhdj_ceddr`\VZU_ehkvtrpfltkil]YYW`[\]^fjdXTylYWRWcaf]^^cnj^dqqiid_abaj{\Y][]dw}ychccnljeaVXYdabc`bihMRWmpb^]bedujb[]bsc[^p^`a]]^`n~mZYY_^_lvunfe_eghtheaURXyb``fikfOS\icjqieecYde]\Wo\YW`Zxnl\\bX__c`^`^^clooniff_ejhc`cUfX\\`_jmhjWY]ffmtdce`^pcfc`\ZWX\\_^YY`X_PX]\U_\_]rwnle_d`bfb``gT[b__a__aorijdlfgcditaqqemaghc^\]\aeY\dgWlY\TX]]`gtkomk`\[a``a_YW_cab_^_[hqhcbdlpggnedceoanee`\^ihw^`^[_^Y\[klc[UZ_datga]_^fomf\b`cb[^]ad[acbbmhfeowaggb_gfcb^^_[\`^_]Z\[[_kh\WXT[jz_]aa^cjijadb`eeb`^\]Xfdacc^kcgkqrveifgaeb_b__Z\^ZZ[^cneVUWYpjdZ`\\deghcc^_defd`a\^ddaa]Y[elgoWXjdgcfcb]\aV_d]u^][[`]jpkpq^\_htqbekcjffac__dff\]]j^ca\^\Y\[fphZltc_aa`c_[^ZZ_]Z[[^jddfgbmxoj_cichtacjcej]SUdcmvji_`afY\\]Zffdggyx\\bcgYYZg`ae\]^decbedbWrpmkdgojenheeV.XZkiq{rbgphqo\]\]hjne_bfh]cqif_]Y\rmqp{}eebacdbalpmhimqlmurufl`PUUoh~i[bmpq`g]]ssifcfgjknjugj]ca`gpom}|xebabg_blkge`YtnwstxhqshiOvycVlpic`bawrnpanmj{ychihcohnqox}|r_a`bd_fcgha`Z\onirje_cmjcbod``clwsbdmvwwijgl|u^ehrqm~jmmprUPe`ecb\^cbe]_Z]`rzrgcinvxbQ\reVXZdhiorvhiha^\ja\_i`bbmopemrjfkbQShosfj^]bhilhikqru`aahfkeeJNMMNOX[mikoutijgdY`^^dkfbdeb`dh_]_f_jescl_`^dYgpwqqmpkkpjaffhioJMOGIOPRYiihmdbb\rnt||~vm_^a^ab_^^]gpqjtn]pl`ioem]d_nce^dhkyvqQPSGORRS\WDFdbeca_eemtmr\_ZXY`^[\\httssxmjkpvuwpjm\i^_h_`X`csnbXgjVTRQVMBD]bcbheecigszXWWVXY^\]h_jttuocaa\[yfj_[^[\qaX\cffmumcfigCCD]_behjwgsgzqflYWYjj^\yt`bf`bc]f[fmhl`Z[`bg`^``ch}vtr^]cdong_^hueb]elj^ibekdboq`fsohijjeljmogd`adj|wuyccgtwvtiyyr`d_^l_`h`j]~thgjgjgbkkfablrdmf毰ttouv`o^eec_cxja[pz~nidfmprssdeadefd[b}ode`mfb_baqens}s^^_ewvvpldicbbd^b{xnrrha]bmujgkr\acrzvtmjiggbcfdgtnrka_^ah``]\_g}}uvwnhhjdckio~vnuta^ck``aa{rzvvtgfghiouvs햅}tvh~if`gb{djvvwhehmrrutv}t~jpkgcfdbphjstuwwhhilvqttvxlmlvkpjjlklqvvnjjhjnpvugzsrl{x{vzppnjlrsooeedkzbxx|}uvxynus{}abdkunlvompdedesqyj籨z~xyycgx{yjbcwwxopweedh|wqh}~isvqqqsos{zrkn{hejirzkl}~rktrmolkhhqelmjeeqyx{inpwtp~{zywmjlpsmhni^de`fiopyu~stwyxsryvtqrsklnglypwqqgulo~}|u{vt²{yxtqrqwulkfvzf_k{zy{wyz~{xwxqn|utpyiafgwy{axyngf|uxyl`miyrxz|y`lokklnaqw}skibbntpodopp}vjt{wg^zuszsm^`\Xtlmnha]^eh_iahpx}vyqknuh]nwtjocmh_Zrzkfha_XiZ[]bhjwn{vr}xw[e]sqojhxddla_[]hmda^STVgaadjssu|nktuxtmlzzr\YnnmejjcocyogY`jmaacchqr}lpivz|ll\]Y\xwvnfhbabkqmod_allrgbcsvyz{xynpjv|~j}r^X\uytwigbab_xtskddjhpsdiso{~~okil}z[Z[{`]^d}yqwtlaahemdkiggrts}rw|sxmkiZZ]roqrwyquxcbbdadgbcZ]_frsq~yrlYYXissoo~kt}sysdcfbZ\igzclepoj~~_\eqrr_\bo|zfcdh_wtqjffirq{wzstpvvscglm]\yprxwaefnahcjftqwapou{imje]\ebgswuv~~ojir|xlff^yzhvggkdpo`]_b``pxyxyb^\vvsfj{zzyjfck}nwrkhy}|~llrz}rYi_vwyujb[crx~wkyr||}obgegKITQLGENKzxfsVWVXR[|]d`_VU_lWIJVW[`fZOQOQKMONXrmbib[NNQUaYPItzdcQLtJIISPOUTNTTXWd]`XSQWKMOp^RSXQb^[VLLOONKTRojhcpyQNOPW\RNMbutoT\rQNPMWTTQRU\g__aZZUQRKWX\[Y[YZeh^RNLNQRIQ[fleR[QPOPPSTSLMcdje\RU\jZSW[YWQQYi_`gig`SQMIL\][ZYTXbkikaSV]ZOUYYe\]aedd\\TSQUom|ncVYXc]QXX[W[bgRV_eib`ZSRNQ[Z[XXSY_nqenjcd\WTWSYUX_bffdeXPTNbcsshVVmi^gfcbaVYiX^`bfS\\YWOVbdROXMSNV^^]^dUVX]XZWJ]]_bccdkh`]Wbtjika]^Wfknw~b[IRUU__]ZSRQLHL_]XNMPQPR`cQVKSXWUUFUP^\a]]_a`_ORVa_ehWab]TYmc]KUVZ_ZX[WUOOK]Z]WWR`]URdUOKOR^`lyjBO_df\^hlWTQOPXh_ZQSjnj[fouiOJMMXZZVVUWR]a\c`[aVZ\[[iWSNQMW\_clifd\`h_]bTPPKTOPQRZ_XLInwcOMINZX]TUUZfbU\ih``[VXYXarSPUSV^pu|ywpZ^YYb`^YWLOPXVVWTV]\AFKbfYUTZ]\laYQTYk[SUgUWXTTUWeudRPQXWXfo{mf^^W\^^h^ZVLIOrXTT[^`[CGQ`Zbib]\[OZ[TSNhUQOWQoecSSXOVVZXVYXX]ehggb^_W\`]YWZL]OSSVU`b]_LNS\^fl]]VTgZ\ZVTRPPSSVTOOWOVGNTSLXWYWkpfd^X\WY\YWW^KRYUTWUUVdg_`Zc]_[]blYgg\cW]`[WSURW[OQ[]MxbOTLQWWZalcfdcWSRXWWXVPNVZWXUTUQ^g^YX[dh_`d\[Z\fYe\\XTT__mTVTQUTORRcf^TMRW\Xk^XTVU]fd]SYWYXQTSWZQWYXWb^[[uelY^^ZU^[YXSSTQRVTUSPRQQUc`TOPLRaqVTXXUZa`aX[YW\[YVTRSN\ZWXXT`X\`hin]a^]WYWSXTUPRTPPQTYe\MMNPga[QWSS[\^_ZZUV\\ZVXRVZ[WWSQRZa]eOPb[^Y[XVRQWLUZSkTSQQVS`fbfhUSV_khY\bZa]]XZVV\^]QSS_TYWSTSQTR\g`RcjZVWUUXSPTPPUSPQQT`ZZ]]YcpfaVZ`Z_kXZaZ\aTJL\[dk``UVW\QSSTTR]][^^poRRVW[NNO]VW[RSTZ[YY\\YNhhdb[^fa\e_\\MOQc`fpfU[d]fdSTUT_ae\VY]^TXf][TQORhcgfqs[[YW[\ZYdhd_`dhcdlil]cWGLLd[rw\NUaceTZSUji`]Y]^aad`j\_SXWU]fecsrn[YXY^WZdb^\WPkenjko_hj_`Fjw}vkUH_c[WSUVxmhefXedarpY^_^Zf_dgensrhUWWY\W^Z^`XWQSfe`ia\VZda[WsbWRRT^sifVYckmsm`a]crlU]^jhdtacdfhKF[V[[YTV[Z\TVQTWiqi^ZafmoZHRgZJKKV[\bgk^__XTQ_VQS_VXZefh]eia]bYHI_ej]bUUZ_`c_`bhimXYY_]c]]AEEDEDMOa\^cjj``^ZOTRRZa]Y\]ZX[_VTV]Va\jZcVWU[P^gnhhdgccibY^^`agADF>@EFJO^\^c[YYShbhppskcWVYVXZVUUT^ghakeTgcW`f\dT[Vf\]W]bcqniGEI>FHHJSM>?[Y\ZXV[YahagRVRPQXVSS_kkjjodabgmlngadS`UWaWYPX[keY|M[^KJIHMF<=UYZY_[ZX]\gpOONPQWST`Wbkkwke[XXSRp]aVRURTiXPTY\^dg`Y]`^<=>TWY]_`l\g[pg[bQNPaaUTqmYZ^WYxYT]R^d_aVQRWY]USVWWZ_rkuvhgVUZ\fb\TS^kYy{YT[c`Ua[^c[Ydg|W\jg_`aa[a`cd\YUttW[`~p{tkjnXY\ilki^oohW[WVeXW_V{z`Tvl__]`]X``ZUVaeZc\gjewkxlUdU\_\WZo^VOgoufa[\cfghgXYUXZZXRXy}pxub[[Vf_[XWVfYchulVUU[mlleaX]WWVZTXq{yqyvwmmdjjbYSWbj_^ckSXZholib]]\\VW\Z]w{~vuthcjdYTSV^VWVTTV]qqjkmc]]^YWa`eysx~rlelkVSW`VVWYrhunjji_\\]^flmjswqkl^t_\U]XpX^ijkl`]_ciilkmsjt`ea]Y\YWd\^ghikl_``cmhkkmvutnbbk`e_]`_`ejkeaa_`egml^xznhw}faplojndec_aghee\\[aqtyYzijn}qjkmnbifoqTUX`kcalecf[\[Zhem_}pkpw|tmnnmW[kmm]UVmmnefuwm[\[\qkb[pmt|rs^hlfyeefbfpt{ohaerx|^\`^fn^`vqnnt{{||f`igbca_\\e[adb]]hooq_dfmierprp~m{y~~}nmb_afib^c_U[^Y^agfoluijlnlhg|myihefthy``c]bpfnvhvi`nehvxsrkqlyyi{zzomtjgeff|lia`\{mq]Vcrtrtprrwyrmnnecvxrstpt}iidmu]UZ\ym}przYoz}||rg_^tmopdXb^}s~srqqylglnpmTad`abeYhntw}wjc`ZZflhg\ghd|tqz{}wz{pjajypl\SnjhpidUWSOzkcde_XTU[_WaY_f}xh{rzjlgadk^Scmh_eYd_VQiqb]_XUN_PQTY_apb~{ukolirnkR[Rhge_^m{wYYbWURT_d[XUKJL\UV[`jkk|}{pmudaijmibaqphQOc{{cc[``YfYpf^QW_bUVZYaih}}zmzbf^jwnrba{RSNRkljc[]VVW^gbe[VXbbh[WZimp}}zlmkoce^kxqs_usiSNQjnil][WVWSjih`[[_^fiZ_jf~~~yntrsse`]`q{nONNqVSRXrofmiaWWV]Zc[a`^]]hjjtin{}{xtofsmb`^vvNNLQebefltofknWWV[X[\YYQSU\hyjhuw{ttl{xgu`NML\feac|tajusimi[[^ZRS_]pXc[geavwswy|ssztROXcedeyUQXersuvwo]Z[_Umjg_\\_hx{zxut{zf}yunkxmefdjzljY]bb}QPlttbdnjX[\dV_Y`\i|~ytutu~flUdcixvo]`^ZSR[X\hxkiiqrpbqsw__hrnb]]Svuttvz~m~yo]k[[_}xx|sYedVSUXVVemmllRNLhhe{Y`qppo`]W`vv|y|r~~{xdkg_\mqqs`agptshO_Vkkn{h[QKTcisk`ohrrs{zd\]cur\Ziho~_Xqjhjkhfg\\[[Zvjb^_[buyryhdfga^jXZZ[q}qtgkfihgkwbd[]gqkc`^]zwpihhaa[_aYZdeypgqnlmgiwwxwlcdjqrrjyhib[YisXZ\r~pikldhju~|rmkgrqmquajhhvqcinjrpsfdqvytnlonhltuppy{sopnkzukluiiotdcjnozqmmvxqmyxywqhssqootwf~q~nipabjjontpnnotoonrsbp|~{rqrqurwzxqozmhobdnhkq}]vkppnsqopgbaunnmqyqv}~{~zomcch`d~q|romkiemlloo}|}zzbbpmd_bdfar`bghyuea\elkmzkt`g_axv~~vort^fonhegcbddqcftylcwasjefec\^_di|{y~|nqtrjwiihjpqg~glgk~{mnfdy{{ghkei}|v|pqjjnihiehgpmii}z}||qqplto}wiehfion|vgnijikiqgebcmmrtpkpoz{|pplc~jdkglsjjtmijkbighgfdanihhdesyxooum`g~isije`c]ujhyjjfgchggac``cnmfeedil{heojdcbioeglhgcbb_dnoijjkdbhgb``bvebeabceituomvwugcuknlebaabjitfgkkjggdnrnkeedccezimvqlfimrmplufcdcazs`gignomihgmllsjbbac`bislmnroohiijjmif`fgdmdzcggfhjnghmlkliec__c_nqzvuxjojkjjihggfdoqopsffefhfbeilkjkhfedbcbmmlsxmsokkghgcaaqmpthhrk|oigd]flnfb`a_`~womnjpvkkonqjosa^aqnrys|zvukooinivvfjgfekssoofrvs|zsszjdphfzwvcvhiffamlkhiheefndfdtrpmtuur|l^lcaxfb{zujqdcikllfdfefg]aeqvxwxyzwhr{zyrjqr{umdfbfacmlnleeddbdghww{y|z~|}jpdwn}ggeegffjmmgeedadrx~ywyy|uwopu~lkvywvmnj{woquxqehj{wu}{pu{nm[tswyzzy{wqvzxywkb~|oozywxqsr{nfhtuxuw{{vnurqyykysytlkrqomrsusw{yx{zwzzmkr~qqpvy|sfiljknnqwyxyx{zxwqwoknutyqpz|shxmikqnnjjx}}xw|~~wlu}lqmp~ynywtd|{|qimmrtjuuztz{~mhnywv||yqkounogt{}vsvlil|yuniwxqmukt~}mnt}}umtr{xzyomurivrrxxk{uc~lk|~yyvoqp|zka\^jkolouwrxx|ttry}vtb\vuydg{·swpwvozrojv}w{}nlnu~{{qlmtuv|}xt{~~{wpomoru}|jpvyqywwy~u~~|s{~~{uirswtysofg{yv{~~x|zzyz}{}z~xltng|szmlghxpjtlrxk~zxzwxv~zpg}qyrkvuqirtnpll}yywrykykp{oy}rvkwv|xiixhoolmuxtsru|ztqlojp|vix~oqts|yiiehfggfz}uvzv{rupnfrmnnppmhhiifggfgfkv~x{|~zwpqzssmfcpmkztzlxlif}wwhlkgffggfpy|~{zzmslwrflzqqrpnz{zssrlmngcpmf~uxp~~yookisnhmxtquoommntlpmff_wsginoq{}}{wxlgmltvnmoozwutuqkstppnkjjbe}zfjhmrxvzpsqiwrztpswwszzmustwnzrtsnmjvpo|ofknmpwwy|ko|zx|~sopdhlmmouqommouvuznomwtyn}z{x{hijxvnvvspqoqp}||uunwo}zidq~vxzruxtsquzottl|xxyqys|{yt|sjvpuz}tp}}|}x~ty{~tp}}qyn~wsxyoswzw}|gxz|xz||x{{qxx߉~}nsx~zswlzxy}}|nq{ymnw||ttpt{yt|||sp}ttsxwx}{wrz~{qqs~|yvvsxxkqoprxu|rrvw{xtyiiook|z}xuzyqixntk`ah_hgRSYkhRP_^etUNg`^`a^\]RRQQPl`XTSQWknho^Z\]WT`zNPPQguswgj]a\_^]amXZQS]gaYVTSp}xuwmvf_^^WWQUWOPZ[of]gdbc]_mmxnmbYZ`ghh~y`ovw^_XQO_iNPRuyhtf_abZ^`kutrhca]hgcg}kW`^^lwgY_d`hfxi\Zglouzjdcee^bj}kffoqiefdapkab}wk__ejZY`de|}pgcdlngdoznomg^ihhgeejm\tgtd_fWX``edjyfddejeehiXfrtyqgfggkhlpngdpc^eXZd^agysSlaffdigee\XWkddcg}ofkssuv|u~qtpecYY^VZtgruhec`^zwwu[cbbe}ez|~v|xsurrpp}{XXfcZUXZ\WhVX\\lxhYUP[bacuqakV]UWnltuxskevhjT\ed^[]YXZZgY[gxl`WlVwi`[\ZYRTUZ_pqxosqdgih`m__^`fg]tu]a~{\_sqzbd\Zq|rr]^a[_rwqkqff``d_^_[^]fc_]qm}|tsqqrggeajetn_[^\_dbpk]b_`_a_g][XYcchid_cbmsutqqfeaWtv`Za]b~f]]fa_`aX_]^]\ZWxd^^]YYgwtoneejaS\}sx_i_`ZTWPh][l``\]Y^]]WYVVYdb\ZZ_bq^[e_YVU]c[^b^]XVURWabu_``aZX^]XVVXl[X\WYY[_jkecllj[XjyaebZWVUV]\hY]a_`^]]Zdhc`\\[ZYY[p_clhb[_chdfbk\YXWUznhV]^\cdc_^]cbbi`[ZXYWX_ibcdhee^__``c_\U[\YbZoY]\\]`c]^cbaa_]\YWXZUdgplkn`eaa_`_^]][Ydfdei\\Z[^\X[_ba_a_]^\[ZZdcbizvncieaa]^]YVVgcfj^^har~f_]ZS[bd^ZXWVWtmecd`flaaedg`eiVSWgdhmiqplkbee`c^kl\^[[aiiee\hlizrypiipv{_[f^\xnlkXk]_]]Wa`_\\][[\dZ\ZjhfcigifsbTbXVmZXn{s}|ok^fYY^_`_^ZXZZ\]SW[glmvkikkl]gnmmf^dutrenhbXZVZVX`_a_XYXXZ]^mm qjnsnrpot^dXkbp}t\[YY[YX]``ZXYXWZhntomouvkpuvwhis`_cmb_jljtjab_lmachjdY\^pmzkw|uy~{~om`eiydcOhfjlmnmpidinklj]Wrtqueew{o{mkldgeme[\hhkijoopkaiebjig\tlewyox}wqh_^gfcafeghlmkjslkgkok`^uosamb`bbhtmp}eX]a`acdfjtkijhkqifeahysr]X]dcnri`aknze[mc_bfcb\]glkgejnlrfZcwlZ_[^qqm~ng\gecSrlroqf_cbff]xtddjckxjm\V^iirtgwkkh_Z_f_^Vdkmhhkc_cymkwt|f_Yiyka_g\fpyyq``dls~ne]edmkmk`^ig`mzwde~kj\mfUqyxt_^zvwymvzqwmllktulehdwt~qp_wTOQ]^vvc_astgjsgwrllm}skjhulq}}ulwhUOt|zyjhho~X\oimgk|s|jcoeb]{jsvymumoqy``bwy~isoupd`w`ghrkqusminppmkbdadgjqxo\bikcnllnritqzyryqhpqrqnsxkagilszt|fkd`WXpnkpry|tqlq{opooqopvntwocib[ns~dk^]XYmxe_ivx_emctnoolly{~lsmbqvWnai{rc\mlg_grf`ccbt}oomhoa|xu~um{t\bl_jyzymiumausifmjw~``o^eebckvnjhh{io|lfc]a[bngZmrghjhmuvs{o_`\^\]]\orvjkowsjntdgb`Xex_t``thge^_uvuuv``]^]]\]\aktmptqtqmjddmgfaZWc`_mhmcoc`]xrll{_cb^\\]]\fvoqsvvssnmmagbksgZ`nerfgfepqpihuhbcew]Yfc\tknfvrrwylrcc_^g~a\`mtjf~keeccjbfc\\Umi]_degqrrwmjk]\``gjb_abtmjkjkgaijefda``X[sp\`^chnlnbfcZiqdlgcfiieljrckhjymdpgiidc`lfere\adcfmmo\`tvm||lwjpmm{ridfY^acbdjgdcceklkpdeclywei^x}tmltlhr^_`mtjbkkhffeffs~uwrqjywd^f_wtxm~p_Zfz|sjmofikhgfjto{v|~^rwcc[khfwrogu{wrmhonlgszwoybZne_djutjfrzvrroojpyvtglmnqc`u|ll`h]ns|mhmwz}wt~j`chkzjnlVnehokfjllhkqhmnm||~vuov}wm^}ciqpmbhZgffwwqmmll_bypnz|{{rvvxvnoq\]qtfkleeadhgbxzqlrlleb|s{{|ytwwvwvnqos|wccghlifaj{{zrpunkccg|rpny|}wwvuttvy}nfecggpq~}\tdccflipvzwttutxxwtqabefjngcyiY{Zbb_o}usutvvxxqqimmgdihs`Xg^~cZPQXQ[ZIJPb_IGVU\kLE^WUWXUSSHHGGFc|WOKLIOcg`{fUQSTNKWqEGGH^ljn^aTXSVUTWcNPGIT^XPMKKhvqmodm]VUUNNHLNFGQRf]T^[YZTVddndcXOPWv^__yww{upWfvmnUVOHFV`EGIlp_k]VXYQUWbkjh^YWT_^Z^ws`LUTTcn^PV[W_]o`SQ^cflqaZZ\\VZatyza\\eh`]]\Wf_WXutnbVV\aQPW[\ys{tg^[[df_[g{pe{db]T``^[[_bRk^k[V]NOWW\[apv{][\\b]]\^`N\~ginf_^_^b]adb^\vgZU\OQ[UX^pjJcX]][a^]]TNMaYYX\pc_bjiijrkuhk|g\ZPPUMQk^izl_\ZWUqon}kQYWX[pYnpskplhljkhgt~rOO]ZQLOQSN_MOSRbo_OLGQYWYhdV^LSJLdaknqlc\m_aKS\[URTPOQQ^PR^vnwcXOdOo`XRSQPHHJOTihpfjh[^`_WdVVUW]^TklTWsutxqSWkhs[[SQhtjjSTVRVjohbh]]WW[VUVRUT]ZVSecrqjihhj__]Yc^m{fWQUSVw[YgbTYVWVXV^TROPZZ__ZTYXcikkhi^]XMlnWQXTYuy]TT]XVWXOVTUTSQNo[UTSPP]njfe\\aXJRujoV`VWQKNG_TRcWWSTOUTTOPMMPZYSQRQUYhUR\WOMKTZRUYUTOMLINXYlVXXQPUTOMMOcROSPQQSWab\ZccaSPbqY\YQNMLMTS^PTXYYXUTTQZ_[XSSRQQPRgVZd`[SV[`[]YbSPPNMpd]MUXV]\ZUURYYZ`YRQPQOOV`YZ[`^\VVWWXZVSNSTPXPdQWVUWVZRSXXYYWTSPNOQM[^gcbeX[XXVWVUTTSR\]Z[^SSTTVRMOSWWYWUTRQPQ[ZY`qmeZ`\XXTUQPP]Y[^UU_XhtZRQNIRZ\VQNNMMkd\Z[x|W]cXX\[^W\aPLO]Z\e`hwe`^VY[W[WdcSVSSRX``\\S_c`qipg``gpvYS]ROoecuw_M`SVTTOYXWTTURRS[QSQa_]Za_a^iZL\ROcOKfrjtwwqd`U]QPVWXWVRPRRSTJNR^cdmcbcddU^ede]RY{lli\e_YPRNQNPYWYWPQQPOQTUddhwcgjfigfkvRXObYgtkSRQQRPQUXXRPQPNQ_ekfdflmdhlno__iVUYaYWacakaXZVedY[`c\QTVgdqvyxbn}wtmpvsvecUZ_n[ZF^\`ddeegb\aecdbUOjkh{{l[[mqfscc{[v]Zc\QR]^a^aggbX`\Zba^Skd]m~odmsnh^SQ_][X[[]^bb__fbb^bfbVTlejXdXWYY^{yhafsYKPUUXYZZ_j`__]_f~_\\W^ojhTOSZZd{h_UUado[NaWRW\XXQT]aa]Z_ycbh\PYmbPUQTggcutd]R][YIhagdeYSXWZ\RyniYY_Yan`cRMT_^gi]maa^}zUPU]STL[bc]\^XXYqfdnks\VO`oaXU\R[dnogWVZbiwud[S[ZcbcbXT^^UfrzxnZz\tb`Sc\KfnnjWVxqmnoclpgylbbklc^^`nkthgWmKFHSTml\VYjlyxw\^fYmhcbdsiabb{{lbfrslco`LFkwtrqc_`htLObzu`c[wx|dshpv`\g]YTrbjlndldfhyoUTUwwvppw`hdjd[YoW__i}bgkic`eggdbXYWX]^iqfxyW\cf[xca`chy_khrupiogagiihejnaV]^bg{vqjr_d^ZNOdb_dhwpujgbfqeeffhfgleildX_XNb{itwZaXUOPalXS^mnTZaW~yidffabmuups`sicvVfk|LbU^ogZRa`[R[}h[UXWUhrdec_dUqmsjsxjcnwhRV`S^lnna^j`Uig^\b_lsTTdT[[YZ`lc`_]qv_fpay[XSTPWc[Obh\[]\bjkhpbSTRUSTTSfhlbbgnjafjZ\WUN[nUiVTi[ZYRSilkijSTRTTYdkeiljmjfb\\d^[XQNYWWc_bVbVSQlf``oSWWSSTTS_ogjlopmlgffZ_Zdl`RYf]zj[[ZYded]]i\VXZnTP]ZSkcf]okkprfl\]XV`xZUZxfm^Zru`ZZXWX^V[YSRLd`TV[\^ijkqfcdWUYY`c[XZ[mfc`^`{y]W_`Z[YVVORjgSWUZ_ecf[_\Qbj]e_\_ab^eckX`_`pd[f^aaYZVc]\i\SX[Z]dd fSWlldstdpaheerj^[^QWXZZ]c_\ZZ\bcbxg[\Zcp}n|\`Tntyjecjb^iUWXflb[eca]]\]]juln}hhapxvsrjWP}Y}zVmkmaq|gVQ_rysibgg^`b_^]akgojwrurusqOc~jZYSb\[hdvg`mswvwnic^edb^{}|tgnksb}jSKe\UZ^g~lb]iuwttpmihfefaf}mihZ]_acVRipccW^Q_dq~sd`dmuwtsoqkj}st]TW\`ytk]b`Ld[]zseb]_``Y\}h_ddcqpsrjhcjqk|aRsqX`fbaY^P]\\jj{u{hbb`_RS{xogcnpporfijljbceQReh_ab[ZWZ_\Ymqnwvibf__YVqushpsppxmgkjjkjcgegqmYZY\]^b`\V_sorqihma_XX[qgebnpqxkjkjijlnuxsd[[X]]fgxwytxu{ySk[YWZ_^djnx{{lijjkjnnmifVW[\`d]Yn]uzQsQZYVdsqu~ujikjllnngg`bd]Z_^iUL[Rt[SHIPHRQVwkztol_ewons|{tljfkfddgjjust~yuՆ~n}q{rnf}r~porqppgegjpozzqןsk}`vnuz||voeffieqvzvrnzӓĥ~y}lgkkwttsppfca_etv~tlxyҟy{|yfmrtmrfiw|vmsqrry|gmj``_|vzyqpԃ|~~qvtspilgunnprpprq}jhd_^dqxwns~~מx~~xvssoox}upp{jpqpvttkigbebv{sz}ieq}wwѲv}|gdsqoos}yn}pyjjk`iopqvpfYbcopnȹ{xwheyptqqzustwpghf``doqrye\fX[nlrwy}ztzvswzffo}p|}xvw|y|ktibii\][epan|}zeqb`VWmfcdnrrvxxyut~xuvknrfxvsuvyxpqfeefhcZYYoi]dk|teeiWUXXa]bmqsrul~}z~r{zuho|ksjpmZ]]vth}|twki_Sd^`^gkagj`]a{||r{zzakowymrotvrngmlkjfggijoppy\_gW\YX^_U~{{z{~o{uvq|ywuswqmnm~jxnkwursnx|cVPTQURR~poo{xvrxzts{t|}j}yn}|{ZRKOQUQupp|~wvwǿxypvr|}wtrr~qujWPSQ{{~uwtqzw|{xstx}tkcmekxs~antx{xz|ulgcgtkÛxxr{{{haofvuxovy~|txd_Znifwnlooj~~}|d}lsuwzs{{rwsr|_[`xxzlxwnopzzwwholkrtrtrmeqrz`|ystjbfgr~zx~poy_a_^vvznsztsrgcco_ej}yjlptj}mlqoyfsglo}hwusspwwswxvgiw^nu|jnt~~s|upps`jniuwwrrq|uzropputogmzvslp|s{|zvtn}~~nawkhn}b{ptpnnmkdnwzyusv{jxhX}xq}}~zstutiinmlkk~{uywxxwuzxwzvxch_U{~suvwnj{mlmg}v||xz{zuy~wgpl}ywtvtpulkuvmtqowqqtt~xt}{xt~|zuy{y~nto{{oqwrv{vx{j~xuwxxyxtr~z}vo{upilvlu{uzzrsffkw{}xxpoluwqmmjjiqysrzgrw^i{xtqigfirrx|qpwnqsoll pu|}_avxomjferz||vvrvqqsomrxv~v|~akxwtsuttfmy|uwz{|qtyqnwslope^y{vqtw|ryijx}zzy}}lyyzypmo~~ju{rzssvpvnnt~~vztzz|tpm{z|{vs~|x{xnmlmwy}uvuwotmkkjkqrprrorwqz||~rpjw~sw{|yoljqmoos}{i„vzs{{}|uznttr}vkjnqqp}ywpxt}qy~}~xvtx|ymxtknrqkjmiq|}}xwvx|pwytjosk~pnmouujmzoqjnvzzt~~}|{|ssuyz~}vrstpiluvusjluwknlkmqrx}~z}ytxypopr}zmxfurimosvuvimmnqxsoloop}}{zysmqqr|}p~skpipiuikilhoqvxuz{mssnooktnrtc~}|wxy{{qqs}~zqvvmnmpgkpvrsogsqqmlolkjzrlqnppqv{w~}tz{|yps`rrqvm|vsxwzmmlmqwsxx|zciqvtkkjiigkfsurmszymyz{y|svwikiyktsvwku~yynljpqpjwx~~mrhqzskjjegrmiqcaast~q|vonjy~ovoofcjjspqi{qvy{rrqpopy|lmgp}njigha[mvda``_smo{|qtiimv|pluojccmmpqnuurqqrnklprtmms{{ihidfld`ge^caofifs{vfhwrzuuqpfgalppz{jjtwx|zrrqplkpqslms}}vsihjjiifgb]^beijevulutuq}dabfjs}t}uzztswqolnunz|{}xsljnigffhojkleh`\Q^lqp{spwz}zvwwvwnnigha{{xrhcjgghcoo|wqufSQYe`feyv{rwyxtkonrcuyuu|ysncedgghsxszpedtbR~|lgpu~z}yyvxwpnlpsglotuvy}wrplhieemwz|cch^Ywzxvo}{}zz|zzwxyuwxwjhspsvvxx~ypmialurgfvuphiwxyuqqztnywwxxsuuyvwuv~f``ex{zuwqpkfgfowrey{jeify}yttqotkjihwqmqxszrtrxwwouvyk`qr{uvxrqlekd^uppij^firvyswv~t{qjv~zxvmmklmc]]x|xtutm_strnysjqw|rijhfaaij]^`ffolpn_\c]}oxynjn{okb``stxxstutumprruh{t{xuqqh`^]ssWZifnopqnh]_wspu{zytv{}joyps{wwswmrnqwy{xwusrkcq`_[`cjjoononkhfcl~m~||z|tgfd{xuxnlefsqouw~y|uvquunv]]^bdfonononihgfx~{rqmqqwz{vwjheqh~xiw}ry|lu|uwhpgo^^`bonoololo{~jy~||}tzxuopz~pocaig~ceqzkpy|}rrp_^ddtsoomgjnlkttu}||o}~p{v~mapjebV[mt_^cnoha`\a\Z[]``kijt|zok~|~vtdzsgpwhd]sycsreeggf][]`gfqyv{zpgxÒiaxzvxsuUlwu~cjoqrle\\]_\hmqmugeq{z|t{n{~xrb]aavxmjjifg\ZXU\jltjcnp{ſsssoy\uchj{ch\^l{qlcighhous]c`VWVsmpojgwzyxyttztgljif_b]kddfhffhgs`^ZUUZgn}vogkusv’}rwwzyxnliieent|kffq`fgfljja_]X[Xlphyp}vb_iskugouwwvru^]igeevx{isodsuexn}`^`U_eeglg_SZZecaromuwywy`]pgkhf|pkivilze\\ZVVZefgp\T]OQbafilysqyjqulimr^^fufs~smlmr{orbiu_W]]RSQ[eWdrsp\hZWMNb\Y\cghkyuoopkjunkwlbei]mwzxkhllonfg[\[[]WPOOe_SZarj\\`OLOPYTYcfiil|cxtsqt~~}vuh|~tooi_e~rvbj`gePSSl|j^srjnb`WK\VXV_e[`cZWYwqrxxvrvzzctpnoW`emqdkhmnje]cba`\]]_aghhqTW_PVSSXYOtqqotwrttz~`lzyjkgxurpokngbdct`ndamljjfos\NINKPMMvrdd|}}|_{wplvjxhnpigoirs`vsoeswsrRKDGKPLidd|~ol~rutkjkt|vrtummejhrwyuutmjhiu{yhkaPKOJnn}sst~|rik~pgdljpnmhims{vzwjaYc\~an}i{x[he{rty}zkolnpw{vykb]Y^wka~zxiic{zk|y}{{u|no}}zvv^W{e\lyk|ywpvwzh`hkz{sprimy|xYUPzwxd_\mdbee`tty{uwwn^fht|mpir|qh{oykjsUPUnnpbnmdefppmm^c}}zxxuzx{}]]xuhkikhc\hjs\t|qjj_X\]htypntfeoSUSRhhmus}~~ tae|qkii]Z[g[]cu~xo`b|yfj`scbgen[h[`csqy{~_mykiifmnjmon]_umZdl{{radwjttirkffhV^b|]ijkwjjhslw{pheefkke]cov{jyg~bfriuqrpljdrttc{Vxrk~xqvv]ZetY}wqhwjfddcaZvxxvavwx|myvpvolilyr`o^Mvorlh~{{vsttqijkj__dcbaas{z{mhwluwmnnlq|omplnY]UuKz{zwv{yuxwqtiklmd`qcbc]|{y~tuslrrnpqpkotm]fa{w|}~xsqmly~vzwwjljufkbavklcj~}}fcmuggjjtnjsqvxwwniz}|}~rpojoqoxwvu}{tuxejew}z|qqwefmglqlnq`uuwuuwt}xkhkmynonjiwup~|ruketyvuzvvskf_blakqjpphuzwyx|~wgZ[`zlqxusn~xskdd`jwlgudcaa_g|}oihr^g{yz{{mU`|upmif^\\`iizwo{rdcicfheccbfku{vs|xryvrxVWxuwlmdc_\[yy|~|ywhp{{rqpllhlggiechnl|tzl}|uzqsWaznmjikjj\coyz}{vr~km|pqq{utfkwogdmibefu}~{vy}[Tvoqlgjmwrhoyy~x_`nsppow~srtcwoopofcet{|~{qr}{s}{v`kqhpiilgledjt|tl|pjpqrki|cr|prqljsqmwo~j`bbcmosklkmfjdbaa`agzhghhjgvg{ungoqrs||x{tstfd`mtyimqtpfdagdee|~xis~s_x{ymqiqprqvut}}yu|kpxdyvjjv|humbaehggf~tpmfojwrsv{hnsrs{vvuw}~~vynljn}xrocvvuwojbdhgau}x}v`d_grtw~t}}trzmmkm~}yqvu~vwrfmw}xoj`veg`sfcbejkk`cqwyfg`dmppjtw{uuutxytputppgzqrw}|gj}zop|tuvvrkgghc^aklki`bknxbecacghnz{uwuyzrnqmhksxkdcfhsuyzupvuucm[if\adilkl_ccdgmjdbeefsxzuy|vttsonmsf`fggsz}sft}~wiaf_f_j]_]`]eglnkpqciideeajdhjZvvuxyxsxnirlmooz}teghst~pgllzucdcf]afkhid\iggcbeba`uphbgdffglr~}nwyrtspsohsnopnehTegflcrlinympccbcgminnr~pY_gljaa`__]a\ikhcipocopq{ykqns}gjk^`^nahhl~{maktoodb`fgf`mnttch^gpia``[]hc_gYWWijtgrwlfb^jrsrcjcd[Y__gde||u_qgloqvhhgfeforwbc]fvrd`^^WRdl[WVVUicersik_^bjod`ic_YZaadda|kkhgghdabfhjcciqq^]^Z\b]W_\UYWe\`^lro^^lfnzjjee[\Waeeoq|``jmnrphhgfbafgibcisskh]]_`ab_aZTTY[`b^omemkjfxrwYVW\_gwwsjskppjimgebdkdp{zrqrlg``daa`abfaab\^YULXwcedzpuifvvmupsyplmmlmdd_]^Wypqtmf]Ycaab]ferngn_NLT\V[YmlxzzvqhmonjaedhYkokkrynhcY[\`aclpjpg\[m\Lvsc\eiytp{soolnmfdbfi]bejklosvlfec`b__fnpyrZZ_WTproldq~q{~zvsppsqpmn}olnnmx`^ifillnntunfc`Yeli_]ylkf^`oxppkgfoidwz{z~wpnnooilmp{mnlv~lt\VV[nqpkmgfb\_^fmj\oq`[_^ptpkjgdia`_^w{~}mxgeivqkrimk~nnm~ekloaVghqklnhhc\b[Tlff_`T\_hmoimltj|qg`lwtpnlddcef\VVqtx}oklkdUijhdxoi`gnsh`a_]XW_z`STV\\ebfdURYSsxen{}od`dqy|he[XWjkoojklkkcfhhk^qjwqnkhh_WUTjy{iMP_\defgd^SUmi}~fkqyppjlq|vdiqghpmnnjjndhdgm}oqunmljibZhVVQVY``eeda^\Yb{vtc|xtssprk{za_[ruwy{oloed^^jgflmutyorlmhllemSSXZ]edeed_^]\nuwvusihzciyglnnsmmba^iaun`nu{iorckrln_g^fUTWYfeecebeqt`otyrvtwsx{jnokdf|mtff\\b`uZ\zwxygpafpsztiigVT[[kiffd^`dbajjkvsswzz~u{ersfnw|lxuscWf_ZWIOa~yiUTYcc]UTPUPNNQUUa^_ipnc_rqsj|w{hYpi]fm^YQjwx{oYhgYY[[YYQOQTYYdlinnd[mحwy]U|nqmoilLcnluY`dfgt`XOOQOZ^b^gtv\Yenm|vwvqh|odqsojYTXXnync``w~\YYOLJHNw[]fut]XcdowreufgtcmQjX]arZ_SUcshbY_]^^difPVSIJIe^b`xy^\lonkmutg}hnh\a^^[UVTaZYYZZ\^\[^\hUSOIHN[ap~ic\ajhjxod{ii|znmlb`]]YYbhq`[[gV\]\b_`VTRMQOah\mcp~jXV`h_hZw~a{~hkkjfiRO][YYwjwlo^idZik[nvdtWUWMW\\^a}}\VJRQ]WV|xcvb`ikmkmSPcZ^[Zsupsd`^j~v~^bp[RSQMMR\]^seRLUFHXW[^yayrlfbk]di`]aeQQZhZg~rga`afocgW_kUMTTIJHR\KYfgdR_ROEDYSQSZ]^atmhbab_]hb_k`VX\Qakol`\``cb[\QQRTNGFF\UGNUf^QSXEBFFPLQZ]_^apXlhheirtr~ji\p{|~rhcc]RYrft}kX_V\YGIJ`q_Rgf^bVULARMPNVZPUYPMRlgh}vmmkfvjnn{WidccKTYaeY`\ab^ZRXWVSPQQSUZ[[e{wKMUDJFINOIjfgeklgihvntrtT`~{nxm^_\lhecc]b[VXWhTbXUa`]^YwegN@:>EJFx\WW{}}~|xnpcasrfih_^_hqxhfgviaaY^^glniiha^[Zekl^bXHFIE}ab|{|s~ohii{rpf]_r}eYXa^dba\^chpkol_UMUNnyVdr_pnR^{|{yzZyoiin|qnx~x{u}`c`aelqmp{vv`VQMPir^Vrkhuu^_Yqvwp`qm{qo{~ojzreg}su{r{plmVOv{wupYP`mv^prjhz{}fvmnp^U]`snofcg_dpr|oRMIsmlXSPbYWZZTggedw{xyvk}r|p{mlktcSZ]hspad\dne]~~{pdna`iMINgvcdVbbY[[ee``QWwvtp|tqvwoklgmkrnpSRmvti[][\ZXQ^`hQirg``VNQS]hmdbi[[dzHIGFtZY_fvg||{tpmqqrthVZ{tpuzrc\[[SOP\PRXjsslcUWpmZ^TgYX][dP\OTWqdbkuupxr|wzqO^tmv~~v_]]Z``\_a`SVjaOW`nxneTXk^hh^fa\\^JSVpQ}Y[\~sz{l}xz[ZYe`kwtod\YZZ^\XRXdjn]kY|~~pUYf]ieea_ZhjiWoKrhc\olfkkSOYgLpje\rxwskws_ZXXWUNjmljUhjjn{vvakhcsic`^`nfUcRAyy~}xjdga\ronjghhsdu]^_^SSXWVUUgonoa[j_hktvabba`dpbad`bMRIj?xyxvjkv{{nkjomilkeh|]_`aXTetWVWQqonqzhigr`ezfdftfd_ciaQYUmkws||mnpxlgeb`mrjnkk^`^iZ_VUjv_`W^|rqq{ZXai[[__je`hgjlkka\kxtvsxmlnu{rfdc^cedlkjixqohtilY^Yks|q}npeekY[b]agbdfTiizyjhghew{xnh[[_aumacb]\igdrtpsxtgh_Ygvmijnj{if_ZSV`V_f_ed]i|{tnijj{tooriZNOTn_buuprjigbrx}l{h`WWS[k`[iWXUTS[prb^\dPZlj{mo~oaITnhc_^YRPPT\[lwrg_q{owfx{YX]sqVZ]YWVVZ_inidnhbigyhlJKlij_`XWSPOmlosqkjj[dooxf~{ucb__\`[[]YW\b`pik^omfky~ehxKUnba^\_^^PWbmnrpjfr_a~}pzdeep~uihZ^kc[Xa]VYZixwqrnhjpytyqOHjce`[^akf\bnnsnTVuubgdcclshhWkuccdcZWYhppzqobcmleooxjT_e\d]]`[`YZ`irlbr{xte_ddf^[urVeodfe`^geayvtvjapq]Ty}WVWbdi_b_bZ^XWXXVW_oz\Z[\]Zi\ot~ibZcefgqqlogdvgYXTruajo_ucgjf\ZW^[[ruzxul]fppeRvlnmad]edfekvjirpwskho_~dlXmlxaams`kcXX\_]]\zzrfb`Yb]iqdfjov[sbgfgokjknryprjmb`^bq|oifZmmnxfaX[^]Wk~nioiQWRZfhskrsgrphfnaa_awrtwsohml|skkfutZakqofaWl\_Wj]ZY\aaVWchiXYSXbdd^ilpisiihlmhdjhdd[ohinus^`rn{c{dp}kllib__`[UXaba_VW__lTYWXX]_eooijimynfbea]akoc\Z\]ugvimnsiglkmZdR`^TX[`bacUYY[]c`[Y\\jvyz}lnimq}kiihcbahw}\V[\[gnqgZhqrk`W\U\VaUWUXU\]bebfhZ``[\\Xa[_`}wPkjimmlimc^g`accoyriZ[\ghrd[``niYZY\SX\c_`\T`^^ZY[YXWlg_Y^[]]citsclmgiifid\gbcdb[]IY[[`Wf`]bmadYYXY]baeeiuwgPV^caXXWVVTXS`b^[_feYeffonahdiq~[^_TUScV]\`roaU_hccZXV\]\WdekvkZ_U^g`XWWRT_ZV^PNN_`j]hlb]ZVbhigW^WXQNST[XYsppiSe[`cgl^^][]fimYZU^lj[WUUNI[cQNMMK_Y[hi_bWWZ`eYT]WTNOVVXYU|psz__y^]][XY]_aZZaiiUUVQSXSOURLPN\RVSbheUVd_eo^^YYPPKVYYcepvTT^abhf^^]\YX]^`Y[akkd`UUWXX4UWPKKPRVXTec[dbb^nglttvMJKPS[kkg~^g_wff`_c][Y[b[grqjhjd_XW\WVVWX]WXYSUOKBNmZ]\oexiz]Yjj`idgtymyvdbccbcZ[VTUN{~phhlc]UPYWVXS]\ie^dUCBJSMRQct{`lnnvjsuzwe^ced`W[[_Payda_hoe_ZPRSUWXbf`g^SQcQBmjZS\`||t|{xmhdsosgcebdc\[Y\`TYZ^_`dhlc]]ZVXUU\egpiQQVMIfifc[hxsvetornjgddgdtdabsfbdedoVU`]``cije]ZVO[d`UTocb]UWeoggb^]e_vuXknonrkvcb`bb]``crccbm~tckSLLQcffac]\YSUU\d`SfhWRVTgkfba_[_VTSRkuorqal[W\jc^e]`^oweedtv\bcfXL\]gacd^^ZSYRKc]]VWKSV_df`dckaqf\T`khdb`WWXZPJJehjrtfbcb[L`a_[oe_V]di_VXVTONVqWJKMSS\Y][LIPJhumYboqcXTXemp\YOLL``dsfabcbbZ]__bUg`mgeb__VNLKapr`DGVS[\]^[UJLc_rsZ_emdd^`epjX_g]_xgwbeeaae[_[^d~sfgkddba`YQ_MMHMPWW\\[XUSPXqkhWplhggdf]pnWURimnxoofcf\ZTTa^]cdljoeicc_cc\dJJOQT\[\\[VUTSdztiktvjig][vmX_n[addrgddXWT`WleWekq_fiZbiceV^U]LKNP]\\Z\Y\hkWfkvwwmfjikgkn]`b`Y[pvtak]]RQXVlQSqnoo^gX]gjqk``^MKRRb`]][UW[YXa`awwyjgghknlmwofunZegYajʾƭŴ|ci]\ȺּĴƱÿƽȾ׼ɹԀĻŸͿ¶¨Àоʸg{vpdz{xc]\]^bxiah{qsosokpu]_q|p{pz||kr|ZZ]b\Z]cwfXWajYf_PRL[MWPVWUWTe`_^Sageg`Y^[QWaZ^guukh`cgj]c[TYZa\Z[f_QUrWuVYPN^\X`OQTQX_ZYXVVbe\[_Wfihge_]UXQUZZnlag`_`WTWbVVKW\Y[^fbOSSXWUZYYc]Z_XRUX__p`g^gc_b_`ZgiihbaX\USNUXnh^Xi]VR\UdSWSYZSTaZL]UUXb^^Yeeddlgkiabdmwnktoolih]bhiijdUVS[QTW_c[]fe^R`becXcUT`aiX^ehZ\b`^dci[mmkmoiffonns~vtjm\Z[lgma\[\UVRQSW\ge\^[VYXZYdYUWUli_Vjnbnb`\g^djmopnmkh]^_ffhnfdd_XeZ[l[\[ZUW^QPSih[_UY]lVQSTZWVVobVvsdvn[QRSZcnkhmtjf_\[_^fZd_cf[mW\Z`Z]^YVTgRUWYVOOUXbVTYSV[[Xafmchsqi^TPQQWbd``ef^dcbag`fg^a^]UUQUWWVUUTTNqhV^RMMRUTVWU\TpZZacdifa`ZWXPOQOY[[YY`[`cc__`_\X[\\WRNNKQWUPHSGmSRSRPTUSPRRTV^jdcd\ZRO\VVWRPZ[ZYZSVYZ\ZXVWVWZ[VWQMKLNMX[U]IUSSWSVUWRQRTVV^SZ_VKMMOVWWQOYXYWYUVRPUVST[UUTSUWPKKU`cfde|ZRTQVVTSWRQTUSURSQNKLKMPPXRQTQTSRSPTNIORTUWTNQOOQKJNYcit^liujhSTVSWVRPPQNUKVSUQMMLIPPVRROMDRVUSLIJIINTQRLOMFLTPNTZevurkfdjhZSRSW[PPXHRWQVXURTLLOSSUPQKDQLN]UNLJJILMM'TSRSi^ch_vqudppUVb_OPQOSNRegY\RQVQNMIJJKUPORHFLMITOPJNMKLPLMMOXcy~zrswxmdcYYzeQQNPOPNX`ZYWVXQPQLGJKOPQNHGNNLZWRUQQSLTMLNPfqzxt~t}faVfvOMNNPOPIXWOXUNLNQLOLLOSQNKKLLNWVXQTUTQUMNMStxy~rstqsn]fg]NXLLIHPQSWPYLMIPONNPORSRgXMJMSkYVRWVURONLavuyyuxyxsqihr{cLTIRJMRQQTVXNQMNNPY^mYPIJ[YVUTWTUOMMNdsl}}~tstu{fbvu}IKMRNLPTSSUTZURQUMMPQQW\_YRLNLQRQRXQSOMOOjnyw}yzpu}_^cTLNOMSUOYWUUV[UTHLOOQOMS\TOLOILORPMPRTOOPOnyiz{z}zrryp`]qgjNOLJIMUYY7WQV[Z`XSQNNJLOJVMOSQTRQNLHONNMRjmbeqy{~gcssli^b`MMKJKORWXVPONN`TPSNIMRVKLHMMV\][OLKLPUOVVafkmtsxztxpxigkcRNKKMPOWMMRLQQJQPINJNLMIKFGKRSSQRRNHRNTTZl}ozs{~urxosrhbfihaNKNKKQNJSVVTQUWNEMNVOLLKFEGYZYUNOMJJHR\`e^]gv|{|{tjty{}fnghlKMNOQPJNTYXKPX?CBHLXURMMJIMUWONMNKHLLXXi]]_j||nitv|e^pl~OOPMKRMMPPKOUCISQXRVTQQNNKNWKMOQPJJTib^a_ny|touvsodnjilgSMOMOOPVIKNOKKJVJEDUPMMIQRRLMIIKMKPLOPb^^bmfn~|k^q\d|uVOKMOX]MKKPPFGHGGDFIQPPFMPKLLIJIKIMRNRXY_nkorzvq}wp^gWLFFTcWLJ^ZQHKHDGHLPKSONGMKLKJJIITOKleVURShmk|kj{pbLGIGMdXQPVRRJEDJHGIIQWLJLTJMPMIFLSWcacYVPTjifbelqwl^uOHIHIPTRNQQVIGFHKGGEGOLTQRNLHLKIHMgmjodY[`ghgmkheo~jgkPMKLIJLOQRVUNNEBJPIGFFMGJLJJKHLRZfioptsmbflmkm{nmvwkkrXKLMMJOGMSO^QIGGDKLIFFEBCGLGIEHMij]^lsr|ngpvpiqrxtmtee[RLKHMKIGJSZQHFGFHIJKKRMGDMFEDFO]e^_jw~{|xxrkrvs~w{pvrle`|lSQOLGLJFTHQTIGFLJLJLHMPHIRKJEDIR[`z_bx~wpv}zh[YdohhbqpfrSRRPIHGKLIOQIJJOSPMPSRVUP\WHDEHSOli}}pV\__`eg_xnTQRNNGFMJILNMTPVUSSRTNO\QWUPFGMOktxzw݇^[W\``bezw}KKGHHIIKILNMSXWYUUXUMKMMY`e]Wix}|{{|WW\_dce}oSPZJKIIKLNTSZ]TQPOZdOOPQ]bheun||z|ycWZejo||w\FOMLLGHPOPXZqa]QPNO\\OOPXflzwtzy{}|~h\XZijyz}{rkjVMLLKHMQUXcquaMNT]^k]RVU`sw|u~}xoh_^dn{y{soumqokeSPNLSSY[^t~l\T[[knf^Z^`s}pqitzi]bryw~lmmoffdb_SS]WRYX^mr~j`Zanmig[strzshbek|{|qdjxy|lilqi`ahdmjitYTQZjvxhjdbgwzs}|gehn|ooqtznxtdcvwzmkjouvyhfldk_TXankljjmlrw}rd`dfenilsgszxfccawxrjhmxzzuipqquT_gjkkmkmmyc^bfa`fru|rfdbhrcpi{zz{iq{wtlnffjnrlinms{{k^ac_bduvrffegxilevzzodfwtmogkkltlnroypZfc]orrw|~|eidevqjjmumxu`frtlmggcjlm~nqpz{slfalrrsuq{o{medhvmnnsvlqnsspomkhehlxnnzbcgjnzrtvxЉqrvjijkuuttqvokqnqppikimiono|~n_bsvvpu{}pmdchklm{omsoqrssmljsunmrz}glu~~ucahigkwvmsv~ywyookglvmmrl|roqtsuod_^cjx¹½{nW]~z}~v~QPuruú¼ĵ´轸ſ㦽¾󺼹Ѱ¿ż{ý]sznkvfZt~unnkXrSSWW[vnbX^puiifjgbyfjTVhrgqfprrcgrPOTZSQUZm]xPOW`Q\WGHCQCMGNQPQO_[YWO\aabZTXVKQZSU`ppdaY[_cW\TLPQXTQS_ZJNkQlORHFXURYFHKHQWSSQ\aWVXR`ccb`YXOQKOSSgfZaYYPR\PQFPTQSW`[HMNSQOUSR]WSXQKLQXWk[`Ya^Z]Y[Tabbc\[QUNLJOQhbWQaUNJWO^LQMTSLMZSEVPOS\WXT^`__faeb[[^fqgdmihda`TYbccb[NOLSLNOY]TV^]WJX[^\Q\NMXZaRW]aUW[XY]\aTeega_`ffgkunlbeSQSc^cWRQSMNMIKOS^\TVSNPORR\QLNLcaWNaeZfZXT^U[aefhfdb`TVV]]_e][[VO[PQbQRQPKMWIHK`_RVLPTcMIJKPNMMgZNmj[ldRHIJQZec_dka]VSRVU]Q[VZ]RdNRPVPSTOLJ`KLNPMFFMOYMKPJMRROY_f\ali`TKGHHNY[WW[]U[ZYX^W]^UXUSKLGKNMLKKJJD~h_MUIDDJLLONLSKgQRY\]c_YXQMOGFHEPQQPWRWZZVVWVSORTUQKFFCGMKF>I=}dJIKLIMNLIJIKMUc^\_URJFSMMHGQQPQPIMPQSQOMNMORSQRMGDDEDPQLS?MKLQNPOPKJJKMMVKTXNBEDFLNNHFPOONOLMIGLMJKRLLKQSLDDBLWZ][\tqRKOLQQPNRKIKLJLJJHEBCBDGGOIHKHKJJGKE@FIKLNKFJJKNFDGQZ`kUc`i_^LNQNTRNKIIELBMIMHDDC@GGMIIFD;IMLJC@A@@EKHIDFFAGPKGMQ\mlib]Y^v^SLLNSVKKP?INHMOLIKCCFJJLGHB;HCETLECAA@CDDK$M`VZ_Vmhl[ggJKWyXIJLJOIM\^PSIHMHED@AABLGFI?=CD@KFGAEDBCFBCDEOYotrphjnoyd[ZOOr}|v]JKHKJKHPWQPNMOHGHC>ABFGHE?>EECQNILHHJCJCBDFZenvwsnjukxu]XL]ozwzIFIHKIJBONFOLECEHCFCCFJHEBBCCENMOHKLKHKDDCIgkl{tqfhjvilfT\^}|uUIRGGCBHIINGPCD@GFEEGFIJI^ODADJbPMINMLIFECVkgktsmilopkjb_hq{uv[GODMDFJIHKMOEHDEEGPUdPG@ARPMLKNKLFDDEZgaquvqrhjlnt]YkkrCEFMIGJLKJLKQLIHLDDGHHNSWPICECHIHIOHJFDFF`eomsntnwfmuwVU\LFIJHMOHPNLLMRLK@CGFHFDJSKFCFACFIHFIIKFFGFep`qsprohhiqhWTh`cyHHFEDHORPPNKPTSZRKIFEBDHENDGKHKIIFFCIEEDIbdY\hqsty\Zjjd`UZXw~FFEEFJLQROJJK\OJLFAEKOFHCDGNSTRHFEHKMFMMX]belkoypjngo`^bY{zLHFFHKJQIIMHMNGNKCFCFEGEHCCGKKMJEMHLKQctfpiypskioeii^Y\_^wZIFIFFLJEORSQNTSI?FFOHHCBBRQQNHKJHGDLSWZSR[jqopol`joqs]d]^cEHIJKKFJPVTINXCMJQLQPNNIHDGPDHJNNFELaZTVSaktwrpjellie[d`^a`MHKIJJLRDGJLIIHTFB>OJGHENONGHBCDGGMJLK[WWZdYaqys|yttwxsbUgRZpvmQJGIKTYIFGKKADEDDABDKJKAILGGuCDBECKNKNQSXfdehvolyhsmfUy`RHBCQ_SGEYULDGEADEILFNJIBHFGFEDDCMIFf]NNKM`fbv~}~yo`_qwfY{GDFDJaTLKQMNFB@GEDEELRGEGOEHKGC?DLP\Z\RNJMbb_wvv}WXafncUmIEFEFMPMJLLQEDBEHDC@BJGOLMIGCGEB@E_eae\QSW_``et}][Xcs`^bJIHIFGJKLMQPJJB?GMDBAAHBEGGFFCEKQ^`efkicY]bdcdp|a_jmbbxgSGHJJGLCINJYLDCDAHHEAA@=>BGEGBEF`aRSbihpc]flgaghxuje`k^^SKGGEJHFCFNULDBCCEGFFNHB@IDDCFJT[TS_lstoplnmibimitloaiec_ZrbuJJIHDIGCPELODBBGFHFHDHKCDMGHDCFMSWnSUl~rtkcvltru}yq`ROYdaa[ygf\gLKLLFEDGIEJLDEEJMJHKMLQPKWREBBENIv`]{wxpvpeswtwtNTUVX]`Xnd{~LLJKDCJFEGIHOJPOMMLOIJWLRPLDCIJa~gtkrmiuu{}VTQTXXZ]qptvGGCEEFFGFFIHMRQQMMNROGEHHSZ^VQampommorvt{QRVW[Z[vwwuhNLVFHFDEDFHMMTVLIHGS^HIJKV[`\yjyx}sbtonmxo}|rq}p]RT\`e}}stx}qVBJGGFBBIHIQSjYUIHEGTVHIIP^cp{}}w}{igoulnpp|ts_VRU__z|oqus|leeQHFFEAEHLO[imZDEKUUcUJMLXkm}|{xpitsqmdw`YW[cmoqjgnglke_KIGEJKPRUlvbRKSSbd]TQTVir|ycd]iuvp`UZiotmuddeh_a]ZVLKUOIPOVcis_TOUdb^]Qijhuot{yf[UZ`rq~rh\bop{{scacjcXY_Zd``kQLIQakm\^XU\lohsur\[^duwzobbejvpdlj\[nnq~ccafnno^\bZbzWLPXdab^_b`gk}wrgYVZ[Zczu]_fZwzz|hnly\YZYomia_dnppk_fggwmLW^aa`abacb}oYTX\VV\{{tdwuvxzvjp}g]ZYaivwYf_qppq_gqnkdg^^adhb_dciqqaTWYUX[izzjwrvwwz~ug\]]`yxo_b[lppeZ\mkeg_cckbdheo{yfP\YTehhlzotuyvzrtqZ_]]myx}xg``ckcnkV\hkce__Zacduegfpqib\Wbhhgidmyyzyzuusvdpc][awyxkccdilbgdijgffc`\_c|nedpXY]`dwoghhjwxzss}~ghlbbcl{ujiigleagchghacad`f|uedurtdUXimukdhz|yppfc\\adeeuvpediveghjkedbk~jcbhpy~s]bkvux|trshYZbcac{}lkcjmuonoggc_dvlbcfczshehjxjykvpc\XX]bnypdQUzrvpqqkuzKK}szkhky{语謧헚έ먩씎Ǯs}y}wz}}{}wnЫ~v|{Rusruyu{hn{t~uqt{w`^gYNevpxh``_Q|fIJMMQjcYNTfi]^Z^\Xn]_JK\sdZcYbefWZeCBHNGEIO`QyjvzDCJSEOJ?BADAHOJJGHSXPOQKZ]\\XQQILEIKJ^]QWPONGEIRFG>BCBEELDaKJSVW\XSRLIIAACAKMNKKPJNRRMMNMJGJNOLFBC>EKIC>@@JLHO=rwFCDHDGEHDBDFHHPENRH=@@BHIICAMKLJJEFBAEFBCICDDJLF>?>=FPSVTVhw{zgJBECGGFEIDCFGEGDEC@=>=?CBJDCFCGFDEBF@;@BDDFD=BBCF>=@HPXcL[V]xt}USCEHFJIECBC@G=HDHC??>;BBHDDA?6DHGE>;<:<@EBC=@=9?GB>DISdc`YTMRtzjTJEDGLPCDK:DICHJGDF>>AEEGBC=6C>@OG@><:;;?>@?DDCDWMQVMd_cR^^>?K~vmQCDGDIDGWYKNDCHC@?;<<=GBAD:8>?;FAB<@?=>A?@@BHQejhf_aefo[RQCDgrpjUEFCFEGDKRLKIHJCBC>9<=ABC@:9@@>LIDGCCE?G@@ABR\clmiebkbnkTO@QdoiroDBDEGEF=JIAJG@>@C>A>>AEC@==>>@IHJCFGFCGA@@E\`bqih^`al^`\KPRqnqduODMBC?>CDDIBK>?;BA@@BADEDYJ?Na\aiic`dee_]VUZdocqohTCJ?I@BEDCFHJ@C?@@BKP_KB;@>CDCDJCEB?AAX[d`gdkeo\bijML|QytxFADFDIKDKHGGHMFF:>BACA?ENFA>A<>ADB@DDF@A@@]gUefehf^]]e\NK\TW|nAA?DIKKHCINNTLFCA@I?AFCFDDA@=B??>B[]PR\egimRN^^YVLNMjqw@@??AEFJKHA@@CUIDFA;?EI@B>C?CE?GD=A=@?A=B<=AFEFEGFD>E@DAH\l]i`shj_]bY^^VPPSRhyQA?C@@EA;BJMRJISejgge^S^ehjTYQR~Z?ACDED=@FKK@FP586GFWJJUplohfXS^biRLZVjdyBEDDEEA=D??CDAFL8=GDKFJIGGCB>BJ?BDGG=BC@A@M?;8JDAB?GHG@B=>@BAGDEBRNNQZNUekfoifimniYL\FNbzh_FBABEMRB@@DE;<>==:<>EDE;CF@AA=?=@>EHDGHJO\ZZ\hytt_]l]ie]Ln~y|SG@::=>BF@HDC=?>FLA?AI?BEA=9>FJUSSHD@CWWUjsgglOPX]cYL{va?=?>?FIGCFFK>=<>A<=:=DAIFGCA=@><:?X]Z\QFGLUVUZfos~USP[iVTwwVABAB?@BDFGKJDC;8@F><;;BDJUY]^a_XMQWYWYcnz~XYacXY{l[JAACC@E=CHDSF><=:AA>;;:78@;=>YVIKY__gXQZ`[UZ[jkc]YaSTvyJEAA?DB@=@HOF>;<<>??@HB<:C==<>AKPKGTcjjefbb]V\_[gdf]a_[TPgZxkDDCC?DB=K?FI><;A@A?A=BE=>GAA=<>DJK`GJcuikaZlaifhpmeVLJU^WWQm__T`FGHHB@?BC?EF>??DGDBEGFKJEQL?;;D>fpRRrnngmgZilhjuxiELRRSUVNcZqvHIIFG?>E@?ACBIDJIGGFICDQFLIE=:??Stsup^jbidakkjo{rPNLPQPQTdcf~umCC>@@A@B?ACBGLKKGHILIA?BALRVMGU`prqwxgfeefhkiy~yqKMPPSQRijjf]FGRAB@?@?ACGGNOFEEBNXBCDEOTYUp^mjuspgYkffdngtrggsugTKNTW\sqfeinaM;>BEISaeRAAFOO\ODFFQbdurrqoole`lkhe\}zlXQPRYbvvbd\Y_X``\WCA?=DDIKMcmYMGMMZ\VMIMNv`itrtpnY\U`k{}l|fVMR`chxahVWX\TVSPMCCLFBGFLZ]jXMIN\ZVyUI`_\jfhpn]TNRWgyzft}{h^SYefonfVUV_XNOUP[WVbGB?GTbbTVPNSdf^ikhSPT\lmrh\[]_kvzeXa^TSedgvupXWV[cdeTSXQXoLAELVVXUVZW^atmh^PMQTS[rnWX_Rlnnp\cbtlxRPQQecqr^WUYdggcU]^]mbALRUVVWYXYYx~seOKOTNNUttl^okkmnj^eq{[SPOX^erqjO\UgfghV^hdaY[SSVY]XTZX^fzgVKNPLPRbrscpillknri|v[STUWhgqsrcUXQcggZQSdaZ\TXXW_VY^Zdqo\GSOJ\_`drhllnknfhwfOVTUbihvok]VVYaZebMS_aYZTTOUWXhWZYcg_XRNY__a\fonomniigjZeXSRYjkjy}q`XYZ_bX^[``][ZXUQSWozaWWtxgNOTV[mf]__azyklnggqtrw\^bYWYXajy{qi`__^b\W^[^]]VXUYSYo{iXZlikZIN_bju_\_qxpmddw~y\YQQWZZgykg[Y_l[^_``YYV_|ryttbZZ`gotiRW`k{il~tpffi]NOXYWXmvrqbbY`ckfdf\[WRW{lc[[`Zqvh]Z\_k^qttl]i~fXQNMRXez¼ú»ĸ¿Ŀžȷҿ¾ɶųÿýº¹ɽğȵ¿mz}t|[[`gbeo`lfqomft~pgmjolsln`k_YTSu~rqwqqw]Xq^TSWZZY[KMNM]`]VUQajWQSMYVS]^VS[TUUQfl_bdo|x{dqulfdcVNMTYNLTXSSVQWONOT[XSQPTLKJITVQRVQMWSV_ONOO`\]\j__dYkTWRVZZWSSj[LNMMLMRULNKWRMMPTUVTIRMKKINUVNNOPKOReWUQM|VVZ[VWQZVUMUX\WNNPNRPNNLLMLLSRKJOLWYUXUUVOFIKFJGHOaVXWoUXXTOQOSXUMMOYWYMPRRNNOMNMNVURJWZY\\YWWVSXQSNTDfmiorRUXPOO[YXYTXVZQVJQSSPOOMOOQ\bXRXW_\]\VVZ\ehmkvywT[h]YUXXSe`TT\^[VQWSTUUTVOO]hi`nqnw]]cafyssyÿR\\__VRPSUSPTWY[[\\]UUZ^`biklk~xmp{hjuu|~zPVZXWXUQQPQSTUZ]Y]\ciZY`_dmqr|zv~xxOOLPOQMLMOPRTU][]^ckjm^_sf}y~}񣭳KNOPQOPSNRRTUT\abcokksu|NTSOSXSRYf[WZXWjglnrytw}{[]YRTTZ[fcdXbddlv|s{ptĿff]^\^XVZ\Ybfbdipx}}gb^^a[ZYXX^^`bmvȀ]dZZbc_]YXZ^egci·ÿZgc^]a`Z[gYZebit}¾_\e[`aba``cpx|m»ſ][Z\[abcgklvy¾\\Z^`abajlmzĿX]_`c^`[drut}¼پ^]]ddagjttrv|ÿŽ»^^]^\\djuqs{}þƿ^\]_a`bow}½Ľ^[][\_nqntrĸƼ[ZV[_ikktúળY\W^gdgnwȿĪcY__Z`osw¿¿Xb_eeq|¾¿a][[gjotx¿e`[^fiippۼ¾ȹÚ_]fediiluad]b_]k½¼½ɹY_`chnrzy`]\^WVVZZ̷``_`doqqǁyvvri\^ZVVYXVÿb^^`ipsnz|{{rqebZ^Z`dXQxi]\\elqnpv}ux}|vqofab_`bc_[[`ef_`\_\ehmlsds}zz~ou{}rpof_d^aab\YYZ[]eg¿icbXa_][cadosjkkeqz{{~zv|{zdc\c_b_`[YZZ^dfa_žha^Zb[Zbffd]hpkpjdprrxxwqjhc[sbha`YZ[\[^^_WRRb`_]b`^^bggfjjkdmqrkr_kqp`\[YRT]uuvcd]aac`^VRQTXbcb`bc\b_affh_`]]cgieeafc_WWLOSRRbmrgeef]YRSW\`lfdggfjpckgfd`__hedqdqnSVQPQRSdhjib]WWX\gkq{e\hhc`fyhZVQRPXZ}jlm^`VZ[_f«yqt[[\SWYgskfnjd^\Z_h~c]WVYX޳qhnigcZ^`e|kk~c[[{rnotg]^`aeɶnxz}m{prnjkfbd»|uuxýsqmiddf»ſt|}uvxxtnmhel~|}qzzŹyyz{rqppg{twzz޾~|lmjeĀŽ~ÿtx}~vefd|̤ÿpyxjgiqǵlptsxljoýwurvt|ujuݯxwz~w~Ŀxz{{}y~~鲰ற䲠a~{o~yzy}vozt|{ixpPQQUV\W[eWc]geb]jte\`_dahbcXbVOJJiqud~}vzttwzbhbcjROhTKJMPPRBEEDTWUMKHXaNGJEONMVXQNSKKI\bVr~YYbqqnlmtv]i|h_YWVJEEMRFDMNIJMHNFEFKROJGFKCBABMNKNRNIQJKUHHIIXTUS_WVZRaPSNSWUPKJ`RDEFIGEGILBDBNIEDGJLMK@IDCCAGMOJLMNGJM\QNKHsQPSSPPLSPPIQUXTJIJGLHGHHIIFGLIAAFCNPLOLLME<@B?DABIYQSSiwORSNJLJLQOIJKUSUIJMMIHIIHIIMIANQPSSPNNMJOHKFN?_dafjMOSJIITRRSORPTLPELNMJIIHJJKVZOIOLTSSMQS[^b_l{~zomKS_TRLQOL_ZKLTWSOJQMNNMOIIU`aY_eajSTTYX\nwfemzIRSVVMIGJKJGKNPRSVUVOONSWXZaccbpjabm\^ishoptxksvFLPONNMHHGGIKLQSQUU\bTRYW\eihrvuptvlgpjj|EECFEHDCDEGIKKTRVV\cceWXj^swns|vz~nyADEFHEGJEIIKLKSXY[gcclmp{|zöDJIFINJIP]RNQONa_cdipjnrqy|IJQSOHKKQR]Z[NZ[\dntjqehu~^\STSUOMQSPY]Z\`go|p~qs^YUUXRQPOOUUXZem{w{T[QQYZVTPPQU]]Z`||u{Q^ZVTXWQR^PPZX^ir~y|VS\SWXYYWUYelpav||SRQSQYZZ\`almv|SSRVXYYW`aapwOTVX[VWQYfkjs|ͮUTU\\Y]`hifkqxUUTUSUZ_iegoqUTTWXWYdksqwűTSUSTWffbgd{磌SROTYaa`iy}QTPX`\_elwuy񮬯[QXYSYfiluO[X__^ggq䯰XVUUacgjm㯰ׯ\YUX`aaff쨤VW``_aabizWZTXRP\QX\^bgjomvtUSSTMKJMMXYY[_hhfetwplmj`UVPKJKKs[XWX[cfht~^m~uttshe\ZRVQY\OHlt`WW_dhcejyyx|pvglwuutlecZWZWY[]WQQPOYլy\YZWZX^`bbvgvYhtrnotzchpuvufcbYSZWZ[\VQRPOQWX~s_\YQ[YXV]Y[dg^`a[fpqqt~vnjonowvWVO[WZYXURQPRVWRT~]YWT]US[^_\U^d`e`Zfhhwnomf^]WPzyfU{`YXRSTTQRSPMIJzXWXY[XVUZ__]``ZcghahUagfVQOOIKTih~kZ\WZXZWUMJIMQt~VYYZTZVX]^_WWSTY]_[[W\YVMNCFJIIXazxi_]\^TQJMQUY}a[\__]`fZb^]\WWUU^^[[YfZgdJMIGHIJ[u{_`_XUPQQV_`xd|p\S^^ZU[n]PMHJHOQo{_abWYPUTV[znfxyhQQRKNO\ݤe^Zc`\WUSV\osxZSMMOMd]c`^\TWWYw~{nz^^sWQQmvgdek_UVUUYakmpr_ypfieab[WZw}nghlxr|{t}jhd`ZZ\sgprhip|wxzunnked^[btoqemmqxqtx|xppqrhhff]p~xhknnuuw}ᥠyuxusvbc_[tsuvuuvintuwxlZ\Yqzzxeowvz}n`\^gzzaekkxytma_dxɳgihmlxv|oh_iw{보٫shjxqxwuqqjurеkqrqvqolqv{~|ruw|~棢󟝜͜B|Wq{ymxbolmn|suz}{|xvwkfqm|{yp{x~~znr\jcFHILOTNRYMXT]\[Ubk_VZY]Z`[\PZNHEEbjn\rqknhgkvujV[VV]HG\JBBEGIJM=??>KPNHHDTZJCE@JIFOPJGLEFFEV\ShsQQZggdbdiiR[qo\SOMLA<>?DB@BEH>@>ID@?BFIHG=E??>;BHJCEEF@CGVMJGDiKKMMJKHMKICIKPODCDAGBBDEEBCGD=IKGJGGHA9<=:?<?ABEEFOLMOT[[]PPbVgjcfpjnqqv`kv?BCCDABE@DCDEDLQQS^\Z[Ycadlpmmtss|wxy󖓗AHFBFJEDKWKFIIGYWZ[_f_dfckmso~{vq~yLOLEFFLMXTTGQTS[ekag[]hpr|}t{nxu}zxWWNNLOJGJLHQTQSW^fsftff~~|p~{VPNMNQLLIGGLLNP[drnwnuy؄KSIIPSOLHHLSTQWrrlpwsHUQMLONIIUHGQOVaitoqvMJSINNOONNP\dgWnrqyKIHJHNPPSWXccmswuvԞJJIMNOONVXXfmyx|wࠛFKMOQMNHQ^b`cox~㙚𚜠LKLRSOTW``]`biLLKLJKQWa[^db}LKKNONP[bkfk{|LJLIKM[\W][nz}䞝IIEJNVV^lpst|HKFMUQTX^jhkuQHNNINY\_grxz|FRNUTR[Zc}OLKKVWZ]`ts˛ROKMUUV[[sMMUUSUVW`ozIOIMIHTGNQSW\_ebk{qfGFHJDCCFEOOPS]]\\jy}l}|fbb^TILGEDDBhQNMNPX[_jtws|}Vdtkjji]ZSRKOIRSGBbgw}WMMLTY]Y[avtmmlxqgnxx_cmkjiaZXPMRNQTUPKIGEM|mQNPLOLSUXYm^lQ^ihdglr[`gklk[XWOIQMPSUPKJGFFMMr~fVROHQNMJRNQZ^UXXR]fhikumfaecexllLKDQMQPPNJIGHKMGJ󗘗vTOMIRKIPSTQJT[V\WQ]__nefd]VTOGpn[J{pVPNIKLLHJIGEAAwrONNOQNLKPTTSVVWQZ^_X_LX^]NKHGAAJ^]s}`zPSORPROMFCBDFfuMPPOQQKPLNSSTLMJJPTVRRNSPNGI>?B@?LUnwk{x`WUTVMJCEHJNnWQQTVTW]PXSRQLMKLUURRQ]Q^\EHCA@@APhvwrWWOMHIHLSTwmY|tfvRJUUQLRez|UKGCD@FH}eqVXYOQHKIKNxzpe]opvz`JJKEFGTyYSQZXUOKJKOazuxkzyoQLEEGEv}ZS[XVTKMLLi҅v{pzdpUVw}kOHIvel^[]cVKLJILwvwvu{XcehjVuph^a\WXQLOlse``cpwjspwj|ub^[VPOSix¤`gi`_fsmmxxplffb[ZTRYkǤgi\abgjdflongghi^]\^Uh堟to^`a_efgoߕ~olnlilXZWSl򟢡{fhffgv^cjklmbSTRi~ƢujkkYclkordXUW_pkTY__lnjdZW]oysXZ[_`ljqf`Xanq¢dY\jdlkithhbkiwߟu]ceevkhgchmqҴvz||z}~~|~Ŀ}x|}|zw{tswvy}}|{zwxÿuu|tabhe}|upn|||ru|{syh}ttsppvu|~}|~{}|Ǻi|ocej~d``ccۀ{~frzk~ypnxpur|zstsv~}{{~vuzxrb[U`ck{~sa]\\n{}srf~xgvlkmookxuuXtvr{yvpw~soVOJI[in\]el{qclmjlknzxww|xp{rwrt~qwwmgYPWRJJiěyh][yukigjjq}wpfeknxtoli~{zzQMPMObKzo\Zmhmgkokhvytpnidlwskjnxu}~NNPNr~}zd`etvpmn{|x||rppovkmn{st|yxu`jlzyzqommtsuopus~zptt|{~yvý¶sghjm{qomkippoosz|z}|pqdeqyypnljhpqnns~y¾fctxtkqkisnolopj|s}v}kfrywtzkmjvtplmnmlr{}z{{yhvxtsrsn}wnkhkvtkq{wsqsszx}wutvuqrw~gjjwyuwog}qonot|¿hvuuxxz|~}~mkzy|~ƭqrpqs{wyruxx{rwt|{yvjewyomlly}{zpupkklhromvsvm~lopurxrkhͿpnmhdiafhfgdpw|~yt}ljr}ouuwoghfŹuojfeagljokmp}~{|vqj}uuv{uafƥhcfaabegrtninzy||srmuuv|vfhhfhfeffupgb|z}w}j|zsqunwz~ļrhnkofggndbd~~~|ncfx}zvty~ïqinnorgthqabay~ppr}ongdgvxkflwxs}xtűshmoryzwd`gqy}io{}wfjnx|refl~su}oslnqt~uukqqztx{wjrwr{r^`twtswv^ltt|vtx{sy~z~ovsov|xn_bww{snzd\\f{|sz||{x|_kvxzzs|ɶhWap{ywts~wtngqkttzyzx{v~wxnxoý^eox~mkkdq~~gieyyeoqrz||~}|vugzprû}ccko|fgir{}raeedu|}z{x|um{p~gcdis~vlnn|keppz{~~}}zo|dccqxƿĀǾoidpulot{{}~}lkn{usxqoquxst}~}}olknpoɮãm{tqoyzvnru~}|mkllp{p~ƊYdWbklmqrmnp{}~xst}uwupsmkkriÿõyba^[`dlgzhsnny~tkqrmsnttskigjkxcƻcbahb``oijgfgtccnnkpqqgeukqyjniijƭj``ao|opikkcyr|~vpq|lt}kvmpnqpǏ`a``d~jss`mip{|wntvtmmqrotɩdccbkspvwnz}w}xvt~wqgoxt\b`ciomuxwwy|}~}xvxxwr}pnmlfflmo^]begro_edd☭xxw~~xllqvz|{vpll_hjlmg_feo_a]abvzyy|||~{}hy{lqqlzzrx~{nllvkgrvcia}l\_bdozinpy|y{x{|}~}wswxuxy|vywmputolwlitybUP|^aj`fhhzhjsx}zxu{z~}yyz|wspmpu|ytxttljif|xx[VQURTXusoeihpmpehszxtwyxxzw}uyyzxwnqrtvzeb^rqlhecl~w]YTRNPTTX^ygit{mhjlq|vxzywwv{|x|wmkgqpxge`xrpgcbbjtVTSPTTSiyud\ixstyxxtwvuojgmlmuij~bbX_OORSU^Z[suw|}}}{~|{riwqwonmwyn|\TRSU\e^agv}vzwzlghpxpoy~xo|pqQSUXiity{uwy}qh}jiwpzxuxhkrtvtxx|~{}t|wgo{}|~lnsyy}}}~qkvznvmn~}´qwvx{~ztyjeqqrsn`dgnqx{}u{nrssyyvkjnnpoqrklnxvvkjjd~o{wrllmqpp{tmlljkoqlqwxkljbli_srolspnurksxzurtkvpz}kkjmmlhpdtqqpsqnovyvxtxwyrx~{vvxmk쏈{|rpo~zspovxwwxmv}~}{}ogdu¿zy|spr{mnowzxxuopzytvgzabl~ſz}~vzzsmopptywuumfdejxo{r`ekbapsž|tzx}z}vsrrjrurxumeegnp~nk{icaabant{{uz{vtzlprspsuyz~|vrtovqsz~qzw|pomsrst}vnwzv|~zw||nrtrpmvwwxsvpmwhgkwjmuyxxmlkjigikjns{wfST[Ypp}hdarrusfjpvoufk[qviijfglxhntvmlkmkopvsnbrfZ]atx}VRTWXXuypsYvfns{\ojdbl{cheoohiil{tqrwsljjkoiim|lg[TOX[ap{qfTRRdqvqedYpjptWf]]abd_lihhilvxcrxjhqhdjv}tsqgdOHDBS_u~bRU[bxvpl}zqoaT`a^a_cnlklrnfqhmddpnory|pmdiivb[NHOKDC`yp`USnz|yf^^[^^esqlf\\adnh_[Zolmp~sqqkkJHHDHZDxqhVSb}~|Z`Z_ca^lojfd`YakfZZ]pfdtplploqqzHGIGgusur^X]gtpmecdqqnsribcag[]^jabtwpkogfvdx}Y`amkًyj|xgeecjileegcmsjn_nbcwyjjmnlgdqĪ|i_]_ak}|{}wuhdca_febabhipo{trzjuzyukkasdY[fkv}{tmeca][bda^crsns}xq~qthw}trsvrq[[iluur~xfZd^\gaa_a`\noktpcnfozzunso`^iliepl}~Z\Zvihe^b__]buoojpmlwk|{{rj8xxm_mnheerry}b^mh_][_kh]bvrojfecedkpvjkyxymlkliefksrxz{oVYZhlrij`Xlz~udaabgn}rq~zzv_kkjllnprqqu}t[[kkunsqvxzdecefm}vvwlohjmlnfliposy{lqygxwpzY}Tyllcabbnpqpfje__`]geclz~wfirr}w\mr[^_ffymha_vs{í~zfdc^Y^W[]]_\h|yyktn|oquyhcmw[Zal`hjkmg^`^}yke`[[W\a_ebfh{t{ptmpmjkgbYlutiikqlY^~t^Y\WVW[]hjd`euyw{tkjmldeuvahijspum}vy]^^\^\[\\kf_Y|zxyxzzqmknipu`vqnfdfvxwbnnri^dae\]]d[Y\u~}orqutrpqopbX]nolgextnu}|~g_ddg]j^fXYYotz~wvcbevyuuzpcb[XZjmw\V\gk{hqmg{zi^deflomZW^goty}{r]bnpsvxyvjwX[ajlbTV\qgiqdgxvvbcgfqxijchiptyeinssh\ch|bjtscQPgjhh|}kzvkTagguos|ulkn}kdjrmirn`hb^ektiaSVjjnjaoZSR[rx{~}wqqzyrciqqkpol|ojvintS^ikmqiot^NVcu{qomjhtvmgc^V`Zccihviiqmirjjbne}TYbkxscaaYdnnVYUihU_`ajlkmpopjsi[ofg{ƨqWW_br~zp[[]ckmnoaQVUTezrqnoplnlpwjbqdsw\XX]fpw~zxvj`a`mro{n[U``iplqtrqplboWVVdlwzqc\Wcp}yyvxi_bfuyy~xunnqrrp__anhftjxqsecdhtq{uuxkpyccvqrsqqwb_^acbtt}amwufdbk{}|uny}}zwpe^bgruqqx`^__bkan{zpMXKrX_`bfe`ad}~z|{ikmyshchqikicf`^\\bYiTVSPUYa\o^faal|~z{|ommnvxg_edahdz~fge^[X\\jVXXQZVTVVd^`]]fVUaawswyyzwpvrwt_edd][k`f~|k\`[Z^^VVUUcpdqez\^]Vlemsou}yqvwsjfhrcux|izo[g_cdff~UWWXtuux]ffTb^em}ptuy{usom|evkn~j{s_``ehejWYYajzzyscikbw}{oxyqruwy{vupl|vtnlhr|xjd\emjSZVXagdlyx}kjjuoququtzolkmlyvmhr}dcb`[[`beXUZ]_jeV\YZZuklkvwuvysusvl|bbcu~chltqpwkeaa\_ac][a_gVWSZ[msnmlryourrsprxs\opbfxc]kz{nekrpcabla\hl^e[ubSW[]emy]adkvy{snkoloqqr}qxkhkjgikmilj`djiebm{b_j|r[MHrRU`Z^[\sxn[^fjovvzlkinnstp{mlnoiea`dirplhnijb`_\rnvoRMIMIINkigZ\[a^bX[fmkhkmjjljorszyvwtgqllji`cegimYXThgb^[YbtmSNLIHJMJOT}m[\el`[]_dpjnonjjilsoovrjwni_][fdkw[YUnhf]YXX`iLKLKNLJ`|iey|WO\kghnnukjhgssntpsy`][abck^_vt{XXNyVHIMLOuQMNfhjxqzpovqkimlulc]m}||fmddcmvodrRNMMNUyXQTZio~u{{|ehfnvsrl_[]e|~nfeyot~nerfhKMOP\\gln{{zefhlrtg_xs`_lfpolvzx{m{\^egig~}||}|yqggkmjoxkrl]du|vqsstu_afll|}x{~zllnlr~srgbmq{clcctwwsdijkntvsq|peiruqw`\ghhcVY]dhz}v|mqwy{oj~oaeejztwki^^cceeghabdnllaa`Ysdkgc__dcbbabmga`__`dgbgmnaa`Wb^T{ccb_gyebhe^fkmhfiakfpvsaa_bcba^eZ{}zzoddcdhvhedkmlmgkkmhm|tpkiz{rmb`yz~vv|vxskmcbbspifejmmkkajqt}xsw{opx|sd[Yk}|k|irmdbfqdeglmmkhceoo|~~hixr[nWXaszloohsqllgceefinjhjb[Y[`v~ncndSX_WWfixnsgnjtpvtmqjgge[cfdkitb[[]dftc`o\VTVWVcjҒw~urxpo|wxkpqkio`dffdghmosrkhieykfgn|qcrljofecihijw|u{sqnzskenrntuqnqpcgigdajklluhkecm^\`|zj^ahkkmbba`_]_uwtb_adpm_NPVShhu_ZWhhkygZ^dkbit[_Qgl_^^|XY_l]cjlcbac`eejgcVd]USYhlrPMNQQmqgjPl\djpRe`XV`oW\Zed_`^_mfwghmib`a`c][]up~_ZPKGRTVdog]MJJIZfmh][PgahkM[SRUVWQ_^_`_bkv{kX{hxn}`^g]V\gnjig\WF?=AQRUSMQ\ZZ^\YVVU[Y[[U[Xg]bZ[_uejjgfeXFFIXRcZTTX^a\]\X`bX\VRHLLYIFFLNSPJcX]dnbpahkiZb[\eYjZ[_U]i`f[neVGGWVZTccbfb^\Vd\dVRZNQKb^aPHL\U[OKecZhljpkotjdVbWVU\Xkqj][Y\Y[bXQOGYMh`Z[]^`SZPNDHZLKGEPNd]_YXdgMPdc[\]hloorf]eaXVU_Z[_ghYZah`\^XUV^Z^U[[^\^SNZPTMLPLIJMSMHUbZXYUXacb]hrojniZ\^\WTV[e\`lfWX^hY[`ccaXhb_[[_YUX\ZWZVVXTFGGDOINd\YYTWfifsrmjhntep[UTTUlo{rng[\c[\j^ba]dpaV[]XUUZZY_j]]YJDBONWR^VZTWRoqq|~xwncgn}rojt~{vpooppsusq}yz]ZZ_owsjqxroxtojmu|yvtixxnnonlpwvlqqtwvm\[[en~}ynpqqggddhon|yynm[ikzsnlkjiif|zssodxx_[[Z]psowu|xldcbcnlohhsm~mYWYYXQa[cYdcabbksiox`ZXYbbeblmy|rqbecchfwim]]ZWYWYTSSXWV^abafdqxyt_YZ`bdcfemnzxlnmheep}kgZWXXWbWTUWVWY_gdikqvwq}{zxxld`a_chhpgmmgc~wzyrnifdfZ[ZWWQSU^^VV\Wjijjms}yrghjptoswvpaeaffivptkounptopmmjw{a\\gfaRS_qna[]dfkqmksqtcdfe[kjlgkrkdbbafjnywllomrj}wzkgj}Z]z`V^ffmmd]gphjkklkeba[\W]hkgdigsecdahqxvmpl|s~nkgnn}w`a_^^cbi_dnmpmkkjhd_e\SWWYhcdhiqefdfncyuspntpozxfoh{u|~v_]]_\eaqkrqsqjilhc_aWXWX[ebfkjrhggi{~qnmksmmsdowzwx}sulh^]^\[]dg{~wuq}um^``a`aWXXZ\^fkprrtxdnkiegnnkqmminzz}tqnsec\]\`]^^h}yqpt|sd`c^_f[[Y\\^\u|}qtxr}{kjtmkciuy|vmuwvxtjgrpnf\]h_\^^c{|pqpftie_`vglm_f\[[apzvpn|gsnh~xy}uwwҤif_tnsuxr\m_ZY^quoqxvhpgnb]osorli_\X\gryunnqq}y}vw{zth_sqytsa`mmapnonojhddgc`inolliicZYVpw~zvmmqxw|v{xyz}XZtnRXZaszvwrpkn\ZYZ`iqvlilgk__^Ziuzwqpowwzzx|}q_ajo`QPTVhx}oofwdYXU^iqpqjdjki^_\`suxspzv{wf}YQPRPZtvxmlmno^UYV^lhiijb^\Warqyzxv~|ttugz^VPRPP[tnqropoi`UVV\iihimmne_`[UY[^{{wwegw|qqsq}rrf[VSLLNPT`Npook^YXihjkjhld[[^[VY[hxeom}zsuts\WXTSSQQJKOPEhfik`dY_gmjiomgbcbgd^YYT{xmcpfmtskgoskaVSSQVONOLLKT]a[ee`[unqqopn`ojkhbXWOg|ikgjliwfihqygfm}wTXZUYPQZgNLJI\_aYU_^W[`ggfmnhgkkfed]UUTl|jikx|norwxuz|}}|YWXTUW\`_SJLKLdd\]ZZ[XWheg\mh{vljdc`ZTXbpoiilmtontzqwtPRQSTOVXicTOJKL[dc_Z]]Z[[_dd_quxkf_cd\SUcfmploq|p~q|ywwrpx~[SRQNRQO[nUKLIKNXY^f^[[^fcedlfhhgcec^Ybdfsstvxyzf`hms|uulx}rVTQPQOPPT]LJEKRLU[]qaWV\X[ec`deecffkf`][cdgkpqs{|keldekjs}xwkQPWVRIKLTcGCCNKMRbcZY[W]\`fbadedficll_[X]bdgzlonuodqmmqv||}vUQPPWRJJXWYBJJNKUejcbc[\Umekffddgcnex]W]`\a^kvr{}zoggtut~VRSQPJNKJJMWNNLJLN\[bWa[\XRbmpedjojjkmd`Z\V\[[^~{w}yywvuqsrPSQPPNLKKHNSPNMKNQR[^TTWVUZ[[aqjdpp\mfbTVVY[[\hbqx~{vtj\h{PSNPOQNLNMTfaONNUTTUXWXWVVRNVYk_emrrhl]a]WXZZ[\\chs}w]ZVZftySTURZ[RJKELSMQMPVV]XXYVXOKXUY``bnngfaaXUUVUVXXa_ee`gf\WU^crcRU^W\]SLEEJXXWNVV_\]XW^\bcTKWa`paba[Y_]^TTUUWV_ctejabd\YW_mwYSSOQSRXBEEFORMNPVW[X]__^W^onf^]aee_h``c`ZURPSVUdcdf_aachnpc^s^JJNR[PFAEFGMOMNPUT\X]PTRWY_efZVY`fbanfa_ZXOORVWf_``\aa_^\iiakSSPESSPG@ABG\UMLLVWZb]SOVZZ[YiX^WZaakl`VURSTUVVi{bjefi`^^]k`mr{UVSW_OTC@@FOPSKMKHUac]WUYXX[Zd^YTV^eachdeTUXYZRN}{risomig__q]g{RRQ\dWLJAONTVLLIOd]cYUVVSSUlhsgUT`habijcgUZ]VYQ}immlmkb_bef\vnRSRW[]VNJHNNYSMMNa]gd`[QOUl_hnwy`b]_cmkh^T`YYTStX~djdxoc_clVOPQZYSPXMNJMSTTMRTmj\Z`TWUS\]ccngh`]]\dfc`^WZVSRt{unkh`~XakmMRR]RPVNUHHQQRPVjg]SQTQYLX_afihgbZWXT[_c\b_URStst]Z_amf_TPQQWg[\NHJJMQPQRNUj}^OOKMRSGZ_dgilggVW\RXfbbhcRSRf]^c__eds}utXNMOTnomPLHGMLSQeQVxTOKKJOKENWgi]\re^ZSTVaddhlYRTZ\\cdunx~}SLKRQn^]ZRHJORSck|fxofJJKQRTP[[bd\isjlT^UVW\eigYZgd]\\achepn~zbKKOW_\\ZRQNRSbtymMfca_LMTUUVaQRa_eYf_SWWVXZYad[Vfhbb``^gcfjxtVJKGMV_[WMLMQM{hQJecjiX`OMPZZPThm_YbcaZUV[Z[\^Z]Xgcbkg[jedewdfLGINdWKRELRJNoqaMMHV]gOaLNTRYSdud_Y_aeag]^^YZUX[[dnifma`_oiz~~jPLMUkbXSDEDJQTZsnIHMNOORLU\[Zb`jkj^`_Zfel]_]]TXd[]ef_XZ`f_g^sqo_PQOX]eWTOJGEJUX_[KHHMNLLML]Y_U\b]beb_^`amekbTg^]]ic\[^Z\cbTW\wVOPUX\`XNMDB@KXY]ZRHJNMMLU`d]UO[_e`b_Zh{psrshni_ZYjq_ZZ][W]hcYPTZY[_^JLHDJJKXfb^OJIMM@NJcea[\[VUWYT]ndjul{ntl`XZhd[Z[\_]XeuwGQSYYXURIHIIJKJPhokcVRLOONSMgUa^lVQQVR^ecempflhm\WW]UVX[Zcbpns~hQQOc]VTNJGLOLLMPibg`UUILLKNNUY\_oZQQPYZe\f]dduuteUS[WW[\bZdhjozgWPPueYQIONQJLKU`e`[WZIGIDJOQRW_jgSUZZ\b\X_efgrstiXZXYZ[`fhienykUQSelSQQLJNQX[[fek\^\HCGCLKMNUYis{jVQYVSZ^dfe_lZ^bZUVSYclngowNPY~bQQPKHDUZ\\Xvmf_MDFFLNQXXuqLLTUSV]bfg_cZYbWRTT[nmkkyX^SVOmcdSQPJKS\`]WPUaWCDFFJ)SWVau]xSPQRUY\]jdVY_caRTTWqruzxn[TS]effUQRD\amfcXVuKJHFEFIPRTUenj\KKPYUN^`TUY`sdUWVXwz|{|cacX_legPHBFS_oolVTvMKIHHFHOSUU^luzMMLMMP\]\W\`cZWZYblaVMV]ajqbGGFIS`locTTuz`NMLEJMNSR\hj^XIOMOVa^Z_[]RWZaj^LNQVUU`ldRHIHN[eij_TRlwVQMIKMIIOPfe_ee{JHMOVcVW^U`a\^qQMONZUXdefgIIN`aip]RRZq[QPNKHIIMMVa_\dZrxWQOYRPZO[}uehhxzrtnnf\_f}sge_jtqxmgffhgj}}uljhl~ikWUUZhmx{}~yiahzohenkgbel|rojj^nwneffdh}wnmdhhbeebUUV_fsr{vvnefgh]]Z[_hfr}~woncbP_aoiecbb^ttpjjf\|wghVUUXgjfvywxmkrobZYXZfce\\gbtcONONNGWQYO\\[Z[ck|bgx{~rmYTRT[[]Y`bm}z{zrhugX[ZY_]m{^bRSQNONPJJONMUZZY]\h{ww}ysumnjYUTZ[\X[Ycdy{|~xpnccd_\\gp_[NNONYNJLNMNPV_\`aglmgv{rnnc]Y[X[]]b]cc]Xtm{pogc`^\wZPQQNMHJKUUMLSNba``chroyg^_agidhllgX^[_^`kbjaekdwfjeecb_muunWRS_^YJKVgeXRT\]bhbahfiY\]^Sa`a\`gaZZYY]`dlmbcechv`svmpa^`wp{sPSqW}wMV^^de[T^g^`a`ba][[TUQU^a][_\i[Y[X]eklcebrui}vtda]dc|rk|WX|yVVW^[bW\dbfcaa`^\X]TNPPQ_YZ^_g[\Z\dXlkifdjfeqo]vf^yzrwkq~v}woYWWYV_Ygagfhh`_b_[XYPQOOQ[Y]aah^]]^pqgcvcaibbi\gowomnswhka_WWXWVW^`rtlkgtldTWWXXYOPOQSU\bgihjnxzsZda_[]eddhed^cpqs}jwgd}i\ZUVUYWVV_sogfkswj[WZUV]RRPSSUTlrsgjngpna`jcaY`lpt}mbkmlnj`]hgd|^UV`WTTSXqsghg]k`\VWm^cdV]SRRXfupw{lfcox]icy^snozslmmҚ_\VkejlniUdVQPTglfipnag^eYTfjfic`VSOT^iwwzokabvggrnytlmqqvj_VjwhpjiXVcdWfdefg|b`[[^ZW`efcdab[SQPfntzokbahnlqiolnn~{xtOPx~vjdHNPXiqlmihbeSQPQW`hmc`dadXZXSalqztkeefkkunnlq{siVXbwy}vfWGGKL`otff]n[POLU`hgha\dffY[VZkmzlhewzwns{~wnrow_v{RIGJGQknodccefULPMUc_``aade^ZWQ[ii}{yopxljrpxmmo|`sx}|uVNIJHHSlfhiff`WLMMS``_`degaZ\VQQRTqqkkZ[ksjll}jwkjvs[RNLFEIINXGffefebUPO`_aba`c]UUZURPQ^unyZdbrnimm|z{QMOKKLLGII?^]`bW[PV^da`fd^Z[[`^XPPL}rvncYg[ciic_g|i`WLJKJOKJLIFDNTXR\\WRlehhfgeWgbda[QPH]rab]`vb_m\_^go_^dsnuJNPMPHIScKHGEVXYPLVUNRW^^]de_^cb]\\VNNLcra`bordehuwmnkpwxrssrPMPMNNTX[PGIHG]\TTQQRON_\^Sd_rmca\ZYSLQYeeaaccjedjpgu}mjzwHIIKNIOPc`QLGGU]ZVQSSQRRV[[Vhlob^V[]ULMZ\cfehisfutgromlhfmwtQJIIGLKIShRHIFGIRRU]TRRU]Z\[c]__^[^\WQYZ]iyllnoupq]W^cirkkamthOLJILKK#NWHGCHNGNSUiYMLSNR\ZW[\\Z]]c^YUSYZ^bwiikrtc]d[[a`zjrmmcKLSQNFHFN]EABLGJLZ[QPRNTRW]YX[\[]`ZccVQNTY[^qcgemxf\idcglrq{wrkNKLLTOFFEQQUAHGJGO]aZYZQSLd\b]][[^Ze\oTMTWRXVbmisurg_^^kkjx|xwsNKLMLGKGEEHQJLJHHJTSZNXRSOIYdg\[afaabd[WQRLSRSVuxsouqpnllgih{}|vHKJJLKIGFDHMMLKIKLLSUKKNMLQRRXha[ggSd]YKLMOQSS_Yipxvsmj`R^u~pHKHILMKHIGN_[LLMRONNOOKNMMIEMPbV\dii_cTXSNORRSTSZ_kuoxxURLP\jpJLMKUWNFF@GMHNKOTQPOUOOPMOFBOLPWWYee^]XXOMMOORQOXU]]X^]TNLTYhZHMWOUWOHA@DRSTKTTQXTTPNUSYZKBNXWgXYXRPVTUMMOQRSVZk]bXY\SPMVen}{PJJFHKKR>@?@HMJKNRRUQUVVUNUfe]UTX\\V_WWZWRNLMPSR[[\^VYXZ_egZUkwyUA@EITIA>@@AELJKNROVPTGKINPV\]QMPW]YXe]XWRRLLOSS]VXWTXXWVT``YcyJJGDKEIjm]IIDQZbK]HINMTN`q`ZSWY\X^TUUPQLORR^g`]dXWWhatwxdKGHPg]SN=>=EMPWmgDCIIKKMFNUTT\[fgfYZXR]\cTVTTKO[RT__XPQW]V`WmkiYKKJSXbTPKFBAFRU[SFDDIIFEGEVRXOV]Y_`\XVVXd\bYK^UTT`]VSUQSZZLOVxoOIKOTW]UKJ@>PSSKFPNGJOVUT[\VUYYTTUPHGFZi}WVXehZZ^jkab_dklfggsgKHKGIGLOSH?AAWNKJLHFWTUJ[VidZXSRRMFJP]\zWWYY`[Z`vsd[iq~a^nkxBEFIHCIHZUJF?@AOWUPKOOLLMRRM_cfYUNTVPFGRTZ][^_h\kjy\fcaa\ZbkiKEEFDHFCK[F?B@BCLLQXPNNLLMTQSRZTVVURVUQKRSVapbbdekfgRLRW]f__Vah]FFDEHFFEGL==9@GAINPdTIHMIKSPNRSSQTTYUROMSSVZm_`ahiXRXPOUTot^gbbYCCLMJ@AAFR;78DADFUUMKMJOMOTPORSRTWQZZPLJNTSVhZ][bm\Q]YX[`fflkhaFDDNJBA@JHJ6@ACAIW\UTUMME[SYTTRRUQ\SgMJORLPNYd`hjg\STS__^lmiieGEEAFC@AAH?CA@BCONUISMNIBQ[^SRX]XXY[SPLOHNMLOlnhdjffc``[^[lnmiCGEDFEECB?BCCBBCFFNPFFIHGJIIO_XR^^J[UPCFIKMMNVP^emkhva_TGQgosdCGCDFIFDEBGTQCCEKHHIJIJIHGA;DGYOT[``VZLPMJJMMJPU_icllIGBFO\veEGHGOQIBB:@C?GCFLJJIOJJKHJ?:GDHPOQ\\UUQQIHHJILLFOMRRMTQIDBJO[|RCIRKNRKE<;=ILLENNKROOKIPNTTD:GQOaOPOIHPNOHHIKMMPaRXOQRGGDL[bppICEBBEFN;<:9?GFFILKOKPQQPIPa`XOORVTNVNOSQMHGFIMLRRQTNPPQX\^QL`kmM;;@DNC=:;:9=GFEIKIPJOBFDIKQWXKHJQUQO\UQQLLEEIMMSNONIOOMLJWWOXntCDB8DFC?9889LLGFEKLNUOEAHLLMK[JPILQOOY[QHGDHJMMLWhQWRSUMLLYOY_iEFEIQBI;88;?AIDGB?JTVOIGKKJMLVPKFHOTOQWTVGHMNPHDjh_W_[YUULOdLWjDCCNXMC@9A@EJBC?DWPVLGIHFGH]XcWGFPXPRY[TXGORJNDnjVYZXXWPLSVWKe]EEDJNPKDA>BAALHBBUQZVSOECI^PW^fgORMPS]\ZPGSMMGEn`FkRVRf]SPTtu[HACDLLFEMCD?BGGHAEG_\NMSGLIHPNRR]UVPNONUWVRPILIEDaic\YVNlHQ[z\?EFEOFEKCJ=>FFUCDBH]YOFEIFO@LOPTWVVRLIJFMQUNTQGDEa`bKHMO[qlSLDBDDKYNPC=@?CFEFE@G\oPAB?AGH>FE`POLG=?DHHV]nXjaY=@@GHJFOMRRKYc[^GPGIINW[YKLYSLKJOQWS]ZieS??DJQNNLGFBFGUei^>XVUTABJLLKUCDPNVIXQEJJHJLKSVMHXWQPNNLUQRVd_vxI=@CWK?GAbcQ>>9JR[FWABGFMFUgUPKQTWTYPPKLGJMMT]WT[ONM]Wjln[EABJ_TKH:<;?FHNc]99?ACDHAGMLLTR\]]QQPKVU\OPOOFJVMOUUNGHNTMWNcb`REEDMQXLJGB>MIPFMUQUXRPNNP]V\TFYPPO[RLJLHJQQDEMogGBEILPTLEE;97CMNNI@9?ABAAEV^XQGE?BBF?WGSO]GCBGBMTRT\_W\Z_OKIMEFIKKSR_]alYFEDVQIHD@=BEBBACYPTNGH=@@?BAIMNQ_JBAAIITLVMVUfeeWGFLIJMMSKUXZ^iZKEEfpUKD?EDG@B@HOPKHHL>>?:@CFGIPZUCEIJLTOJRWYYcedZJLJMNNRXZYV\g^JEHVl[EFFB?BEJLLRPVION=:=:BACCIJXaiXGBLIFMQWXWQ]LPTLIJFLU]^X`e|pCDLllRFFEA>8HKLMHa|YWQC;>=>=CDDIGct_>>GHEIQUYYQSKJTJDFGM^]Z\iJqQGJC]TTGGFA@FNQMG@DSK;;>=>ABFHGPcMfFACFILPP\VHKQUQCGFE_`dmjh_NGGNVWWIFG;NS\URHFc@>=>=>AFGGFT]YvL>>CLIBPREGKRbTFGEFdiljkTSUJP]VXE?:>FO]]ZGEdA@>>@>@EHGGN]cf?A@BBCNONINRSJFHGOkqs\RH>GMR[bT>?>@HQZ]RDEc|eOABC=BDDHENZ\sklNK>D@AHSPLQLMAFIOWwN?AEHEEO^UE=??DOUWYODCZu~ubGECACC??CEXWPoQQh?<@AGVKJPIPPILosn^C@ABLDGSUVV>@ADRSY_MCBJ[~vhKFEDB@??BBKVQMSH_gHC@LFENDNDzzz}|~}¾||zĶ¿{zy}ùºxtu~z꾺ĀĿyx~~zyþtu~qpx»žrpswnlþüÿxqv{mny{ſſ|prr|wkkĸ|񾼽~uv}y~okhŬyǼúmmrwz}~jttjkmo||v{vq{ıŶ|qjihcrvzz€~õŽtlongh[[dsx}{{Ľl|jcXlkm^`\]a|uwĿmtflX|uf_^\b{{ssux{kcel}lc`ijqywrrt|¿iceeohhiszyvryxu}|}󫧮輺ecad~z{solvinrt̀vssuzw|ab^ks~}xolkmnlx̅zwvygxvtú_i`_gqowkjkd`_js{ģy{zz|ogrwuøi][fdb^^`dfa_cij}{{mhowwl[[bcdXJMJSV_^ghkd{{wgcqx|kZZ[^VOKMRLNUVMXRZal{jddqsxj[Z\YPILTQTQCFKPRT[fygejrbc_WUMRTTUYSQLNQRShhq胋Ʒo`ZWVV[U\^_]WWTWV͌hfjms}nc_]ZW\idjggam}|~ifeipxz{wxqkha^dxv|{stnsv}xicekmll}}yqr򾼺wquvvxwx~~os|qwmcjljllmstvv򻸰~~yy{~|rtm|osidjllnmnwxŷ{}w~yliuxpz|{maglnprqppw}w|fpp^rs}nccpssmpm뗁z}~vitw_mowncststqnq|os|z{|xWcqtkstt:ntsstvpn}VXdvoccgiklpx|Y[^e}wo[begnsw||su}YWXXuxec]fikr{~}ymjktxzsjiljzsRTWVbmocechoz{y~ttnhiktvqjicfjmye{SSVYcloocddkm|{uz~y{qs{pijgupgliikhgiSU[Ybhmlpbfgijzrlv}xkhpymf[|xodfRTW]^agpoqgjequmpr}r~tuXZYXW]hkrgljpttgqtwa_cZ\f^]_cihorrpbqvu}ztȱbceW[fecbdegosrnlkhghyxuslj~d][XWfgec]ab`mfeiecfejknqrjl}tzyzsvq{aYWXX[b`\\a``cdilbjgfikkorkpjckszwxwkge]YQTVSZa_ztt^ZWXX\UX\Z[abdcbflmjbhlmnlkvhchv}wwvgf[[XUTVVY\`jqtfax`ZXW[[YV\\[bihh\[eehijmnnrdnqv{|}swwsmdZ\SVVSRZ_fkkica_bbXX][\\_djgfbZY]_edgppylonttsx{vsommXtg`Wyldvd^bS_UUb^]][^`_agcfh_^]_bzz{vsrm}vuY^VXZ\_ZTRU[cii^a][\[]curout{ĻTWZ[^_WZYTYWbkc[\^Z^Vafxxywsoxprs뼾£TVW[Q_YaZXXY\]]\\^]aooqmoronlotw繻ŻXYXYXY_b_XYXXY^`^\WW[grkiijmlj\yyúcaY\XTX`_]Y[ZY[UVZ\[XZcqoghinpnyywybh[VTTW\Yb^]\YRSTZXXY[nwkjlbZgyxy`dbRUUVYa]ba][ZRSSXYY\^}sqe]XZxy[`idUWT[\bb`\[\ZSVQZZY\lljljjdgtĿX^fdfa]b]W_Y[\]\XYXYZZ[bejkjj_bjsWZa][^aiZWVTOX][XZYZY[[a]bjZ_f]fhuSX[Y^[S_[WVPRS_]ZXZXW[^d\bb^\\cdkrżQZSTWST[bWWRTRQPTTUSWVd^][]b``gjkqu}𻽽wYݷzrr߄qroqrzrtr|zsrymqqqnsv~upvuԴpkjuqvywntw񰳶ڱ|oottvol{쬨tǰzkktv}ecjwׯ{{igjuxjb`q֯xohmq}{}zaakn}۳xsghh{r}l__wor񫩪wwrllso{td`]r|lty©|wsbchmzpsu_huxtv~}xh`acerslplgow~w~wpf`_^Yhlpp~q{~}e^cb]^QQZinwsqp`pu螗Ϝ]UK``bTVRSWtxrkmahuz|{ӛ~X^Lq{k[USRWpphhujmp{{]VXa{sbXV^_fnlggjrwxy}[VZYv}}e]]_homkgomkrquxs➡YWVYtxpqieak^cij~khhkomur{WXVckutnebacdcow{pmko]nvli{V`YW`jfmaab[YXcltoppqrf]ikix˧`VT^\[WWY\^ZX\bc}ttqqc^dlktzcTTY\]RGHFNQXX`be\uz{qqm]Yflpu~aRRWNJGHLHIPRKSNSXaq`ZYfgmzz{`SRTRHBGMJNLABILMNR\s~zo]Z`gvzx|\[WNLEKMLNRMLJKMML~{^^g{zgWQNMNRLSVVXQQPSN}^\acix}~}u~||e[VSQOS`[_^^Yetsu_\\`hpwq}sop|ugc_XV[nlrqijejl}tyn_Z\decctt|qjk­ifkmmnomnuvutfjs|h}nc[beccddjlonx֪}yytpqtpqpqxtuuvsjlzdreja]ddcedfopy~ywxvv||xqtntob_kuwzmx}gqrzrfZ_degiighotzywwy~}~|nqvZde{ytVhi{|se\\ijjdhdpyx~|luqrj\iygWdf{zunh[kljjgehqvqv~t^cnkmuxkhsttu~T]gwy{lcllijdjij}}qzy~~~~{de`^l}yqwRS\wynh[Z]^abfwxqp|||~yh}tokTUV\}xsngSXZ\cims~}qprs{|{xkbutp}vdlSPQPkvq\YT\^`irt{|pppmyi^\[fktpjaab_lscrJLNNYveg[\Z_eqqps|opz~sjsh`ZZ]ghfba\^aakYlKJNPZbffgZ[[acsqlpvqsnohhmc^_]if`eabb^[]JLRQX^dcgY^^`bqhbkt~|}{ql{rb^dma_UrpeY[IKNTTX]gfh]a]hldfhs}{~vrnrfq~whjOQPNNT^ai^cagkk_hkn|~u~yx~XVZQS]UTVZ`_fiigZinl~~pmgxutYZ\NQ]\ZZ[\]ejiedca_`pnshf`]v}}t[TRON\^\ZTXYVd][`]\^]a`bee]`qiootv~}wtuwohjf~sqmxzXPNOORYWSSXWVY[`cYb_^]``cf^d_Xaix{ypnnb^[TPILLJOWUlggr|UQNOOSLOSQQYY[ZY^ddaZ\``a_^j]X^lxsuwonn^]SROMKMLPRV`fh[Tk}WQONRRPMSSRY`__SR\[]]`aaeYdfluqrsjonke]STKONKIQU]a`]XVTwYYOOTRSSV[a^]YQPTV\Z\ccl_bciji}yz|nqmjfddQj_XOvzyobZiXSs}zYJVLLYUTTRUWVX^Z]_VUSUWsmmsokggcvyy|syjiuz{{}PUMOQSVQKILRZ``UXTRSRRXxvuwsigdkjr~ȩwvKNQRUVNQPKPNYbZRSUQUMVZkuskmkhenfijzꨪyvuKMNRHVPXQOOPSTTSSUTVbbd`bfdcbejnz|ϦwwOPOPOPVYVOPOOPPTWUSNNQ[e^\\_aa`Rppz񁉖|zZXPSOKOWUTPQPPRLLQSRNPWec[[\beconnoY_RMKKNSPYUTRPIJKQONOQbk^^`WO]onoW[YILLMPXTYXTRPIIJJOOSRqigZRNPnoxRW`[LMKRSYYWSRSPJMHQQPRccaca`Y]juzOU][]WTYTNVPRSTSOPOPQQRY\aba`UX`ivzNQXTRUW_QNMKFOTROQPQPRRXTYaPU\S\^j˯KPRPVSKWSNNGIKWTQPQONRU[SYZTRRYZ`fyvKSMMPLMT[POJMIKJLMLLOO[UTRUYWV^``egljQ䘚Ğlddfw{hifhio͠|deeppjjpefzddbgjrtxlhlksa__kgjwpmejlu矝nbdjjk|gdqmwm``jl{zxt^\`noo^\_k~x}pc[Z{j{md^bgsqytrZZ`w}er|~›umh]__qhwvteXViufis{񜚛ؗ||llibbieqkx]XTdludjpwrnjZZ^cpfikW]gikms}tp`WXZ\hhbgb]dsnt|kpng^WVUP_bfferuiqrqv~\U[ZTUHHQ`dmihe}XekzwSLCYWZKMJKOknhabY^ilnm|xxƋsOUCjq`SMLJPgg^^j`bemmou|~~zUOPYphqYQOWX_db^^`fkkloru{||ROSSjqo[VXYbgda\fdagejmfrqxxwOQQSikee`[ZdW[^_tb__cgciemx{uMOO\bggd[XX[[ZekqgfehUfka_oz|MVQQW`\cXWYSONXahfiijj^T_ban{VNNWTSNNPSUPNSXY~tkjhiZV\dclxowZMNSTTK@A@GJOPWY\UkopghdUQ`ehls|~w~|YLLNQJEACICEKMGMKMQXw~}tfVQSabfpooxwWMLPNF@BKHMH>@GIIKSgomcUSYalonpzzVWTKHBHKKMOIHHIHFxqnlUVWabryutmvrr~{`RMJIJOKPQSSMMNOGxuroUUZ^dps}srhsroowx^TOMLJNZUWVUR\jhtkvz}tXUVZbjnhrftddp{ɕl^\WPMScaff^_Y^apskofWTV^`_]ljrf_`w՛y`\acbcdccijhgZ^fqnatx|f\S\`^^\abddlwrxnmnjghjeelhiihe]_mt]kx]cZV^__^][\eemqpkhhikssogichcVS_hjk`hn{bjk}rj^RY_`aa`]]eivw~{vlkihls~|ssrbfkOXYrlifQaattk\SSadcaaZ^Zxx{zfwmk{x|xurbjgg_R]lYrR]`srme]Tcddc_[^gywyxkgly}wtjTYdaajl^ZgjjxrMUaoqxo`Zcecc\`_`suy}rhqpts}uttrvZ[VTb|zrnfl}LKTo}na[TTWWYY\mmtyggs{vwrr{t}o]|wsie`MNNSumga\LQTU[`chtszpggjxiqrqvmbYji}~{gslZbLHIIb~jdTRMUWX_hjpyznde~xuebouaXVUbemg_WVXUbiYhDFHHQ}kZ\RTRV\ggfhpy~xbcp~{q{hx`ma[TUWcc_XWQTVVaOvaEDHJU[]^^RSSXZhfbdiryudt}}u{|ide_ah^Z[Xc_WZWXXSPSuEGLLUY^\_PTUWWf^W_gt~tsrsp||~fbrk][^fZVKw|ge[NPxDFIOPTX`^aTXTabYZ\es~|}|spskhdvj]gq~l]^JLKJIQY\bX\Y`deV\_bovw~~|z{|sjsnn||yrSQVMOYPNPSYY`dcaP]bastuxgd^n|ujitu}~|uTUWJMXVTTUVX`ed`\ZUTUfcj_\VT|ukqqh~{|~{~uxVOMIJXYVTOTUS_YWYTPSRWVY\\TWh_echj~rqlijkd^_[nsd}d`knvSKIJJMTQNNSSRVV[[PXUSTVVZ]U[VOX_k|}womfccdXTRMJEHEBFLK_[]gpPLIJJNGJNLLTUUSRU[\YQTWVXVUbUPUb|y|lgikfedeTTKKIHGGDHHMU[]SL`r}wRLJIMMKHNNLRXYXYWMKUSUUWXX\Q\]by|xiefh`eeb\TLMFJIFBILSXWTOMKmtuTTJJOMNNORYVURKJNQVST[ZcV[\ba_r{lmobda_\YZZKaXQJvjnneXQ_OIisqTEQGGTPOOLMNMOVSWZPPMOQjddjhda_Zkmmuromel^\ujouoqsKPHJLNQLFCEJQWWNQNMNMLRomlnja_[`^epvvprruxxș}~xjjFILMPQILKDIGQYRKLOLPFORbljbdb`\d[\\kspqryw㗙jiiFHIMCQKSLIIHIJLMNNPNNYZ[WY^][Z[^allpsmpx蕗shhJKJKJKQTQJIIJKORPNIIJS\USSVYZWHcclxxwvoykkUSKNJFJRQOKMLLNHHLNMIJP\ZRRSZ\[dbab}|}ytTZMIFFEHNLUQPOLEFFLJIIJZbUUXPITdccsyz~zRVUDGGHJROSSPNMEEJIILKh`^SKGHcdlu{z{MR\WGIFLMSRQONOMEHCKLJMYZXZXXQS_jmvzJPXWXSORMGOJMNONJKJKLKLQSXYXXLNV]jn~ǙyyIMSPNPSYIGGFAJOMJLKLJKKOKPXHMSIRS]s}vFKMLQNFPMGGBDFQOLKLJHLNSJPQLJJNPV[nuzwkFMGHKGINTIIDGDEDGGFJITOLJLQONTVV[]cxw_Jƿ{zstefjk{|xtwqpjggoqjrh``fisrmryyt}jehijkkvu{~~{lejfhkxihgpiswqtsvmtrv}qhijhhkrv}x~y~}nofgnhrsu{}trv|}jghih|vwy}}q{u|plg{jmj{vym¾trrt~wwyyos~ln{kptyu{vrp~y{}znio{vpjprwprp€{wx~||riy}q{}hcrwy{wppttuzu|~xkxqpgqv{wwtõvwywr}xuzyr|wzm|uw}oq{ü|wxtrw|zpvplox~zofiǀ<¹¶uu}ruwrso~vlsopmllommno~sp{{nprmpvs`fzlivytvqklklqxyurlorwwtlmnvythztsswspllkmqwrolxxsnnps}lyr~{qqokktp|{xnxonkƸ~z{|tvspqusmor|rtk}{sqz|vvpmnakcyĸ|Úxzxutwrsspmnonlsk}{oqqtrqwutqlgnliιù~qhxtq|~yxwvxqxvtononyqvtwstz~otuvoknvim¹}mqntxx{t|}usnspnzryzq{ultqujyyxx||jhce_hg|y{louz{ppoqrzbhtsjuo~nurssut}yulk__`ixzzwumrq~psozvx`dccx~r~ppuopz|rjjc_^fyһru~ursnozt~uy{xzvnnsjorih`jri»pq|yxsrp{vystw}}{wsmnt}|x|tprqrrovvxzwny~~||{~tuwz|yİuporpqq~ypno}{wxvurvxony}mźzmhqtq~likzr{zxs{tzuysuwsqrqxs{ŀ}±wfljsxtwiq{r~{zuvtrnrz{qwpzz~~nmnlpoxqpsm}|ŸĿxxuphzxsuigkourmlr|}}vtm|lqrrxvxuswmmljggiqorgv|nt|x||Ȭzr|onpsmmkmkdeow|a[Zvn||}Ǿ}wxrqnq{{wtwqpokon|Z\`wox¿z}zx}woou|{}xutfdĀ{zx|xzpnwr|vtutv{}“}zzmddovsxzy{vu~ñ~ieeҀzpyjmzyvtżww}eel}{jkmkk|{xv}~wsmiow}zrr{zmkro{wtqytvu|r~upinu{~wsq}omllor{nsnp{tpsmnoy}zvnsxqp~|uolpuqr{yyv~z}onqy{pqt~xwv~uqyxyty|vz}{~vku{vq~}}|xsrrs|vro|{wy{||zut~u{ul{z{~~w~y}{u|xvu}|sns|uxzlt{~|}~}{rilroj~{|wvoyvz|}}z~jxtjfmcb|b}qqxvsikn}~utv||ueu{}ynjq~y}p{wnggt{|~wsqqtzw|odjptz~|ywnvzpo}~yzyp{ijlw{zzqj{t{zu{uwhdgow{|||lx{yuutvynl{z|{{wywtsvuwwaf|}}}|{ox¶uvurw}~{~z}~yxytux~~{wvpoywxxzu|~jlp}xoomr{~xz|x{|{zxwpov}YLsîztfjms}sxzpqovx~|}~xszzy|n{qnr|oT]QRo}~pgigvzt~|znzyux~w{||z|st~vmmE{u_TUVYWRpƮmilfgj|xo|{zossx|uv}}x~nvygb[WXVVTaĘylffv|}{xptzvni}tnr~|p]ZTOPSTYǿiyv}syo}v}oqxzymnuzUNMJMLMKW̻wix~|yz|kpmlnrMNMILIKPOSѼʚ{wz||{zy|}snnjrTMMIJJNMoȲtt{~{|{zyzznm|vdMMLJHIIGNPRTU̗~|}w{xx}{~y|WMMKIJJHIKSSUSwώ|wwxyvsuw{z{zu{}|nmVLJKIIJJIJLQSUV[̮xqzxxy}ryvyswqoz}{}|w{{{zxmYOJHIIJKPRQSVVWU]Аrsszwusj|y{upyt}x}v}~wjVNMHIIKLUWWUZUWX[atyy{yrw|~}~{ydKJJIIJOPXX`c`YZ]`hȀ~~t{}|}p}}wQKJJLMJUVYZd[a\j\fg}ʽzwx~{|ywy~}~y}~ıwkktfgXY]^nxupsjegbwcwa]^ezgag\STY]ggbgoxifp|]X[\]^^iinvwwop~}pa[a\^an_^[c\fjdihld~tdciod[\][[]sfivsokpktq|sde\]d~{{rs\ghkqwvldcfmn]Z[\[m{jjmppoenhndza\q_cazxzzvojl_wvbccemiz}zjktsluu{{dgytceraewhmimidbŶusmhkm}vvylb_eqv{|{u}{}{ng`ffkcsssdcԮryighommcZurxsn|{xpblmy}}_Yfkmo|ibs`efgrmioquktv~xy|~}x`ytiy|y|hg]fujokkdyqijmmhqlz~~xuw}wjljbytokmvdvohkp_avmnkzt}ljhnq{~}uxy|peh_\^iy|v{pkaW[rs{iiofikgjf~tk`zebdba]`^]^_qfetll_adaejxsgxTZpc_mzoklgtwts`_`bgjida]`fkxthf`adl|yzmh\pjihlw~tec``adhvgda`mxiufbafgzytqs`ywois|lefcabkhrpxkal}rcc`wt}~vrns{nojmjfe{hgbeitllcuq~fbsmoijfcbVaYtmy|}pstjunlljmgfeccefefldtq}adp`dccjjigb]|ea^sy|sg_lgcmqmnmlmdjhhdffmhkikffln_eiie`dn]`lv}xdhdikknfqrkjchbalfmpgoh^hydg]x}ijjkqr`^Y\V\[vj{~mqbekopccbegqX^if\g`yoag{eefenjga`WWVW\fhirggaf~gsghcpmoVZYXjozcpb~qagaaloxh``ZVU]mac}mdcdadnhyszmpr{m}qwwy~rk}gt_``e`dzui_^Wai]_`jphhdccttvo|mpjln~ssw|tqzzysnlvujgbci}qrns}zpc_a_abahijwznkwezvyvuqxiroomswtnoszijloq|vzx{qytd^]a`cdcpndccxr{wzlq{szyy}jjihreilcblpwx{zy|ci[Wcfer|yb_a{}nfnut|ujhqfoivyumshkegkededkfovyyfV\[fmilv^gq{yepljfrogecaeoqgmenmpto_^`^cbkdbd_qoqjljtv|f^zy~||ywujpjdf\\afkieciporngf_n^dedhehirttuz}{uiwxy{xug]^]\\]gejx]vjou~aelimxnqyvrn}hpddfw{wb\\^]XYentUNMku`lkloq~nuvrlq|xqkmfgdfy~smlxufcfub`a^ddsqMOS}jaswx}gwtqilnrjjqj{ddk{srljs~lizihyXWvvwuwrqhrxjuwtkhmilbamhrj|ss}trfhhtiwt}qr}ywzu{ykvqjy~xtr}{ykaYZeiueiv~}yzmutlng|uyfnrzz|tz{x}ux~vp{v_[Z[t{su|||wlcl]`~zvmljtve}zsxzt{}y}tzlmqz{z[Zavvv{z|om]^`^^mp~nkipw||mfbs{}svxxb_emsxpfe{~vn{l_^dami{gdlgigo}}x}vaumtz~}}|~tuhe^clrx|tlgfr{ra_^^ad}n`facnhvyyvxvp_uquuzvrfbdeptpwmcjoferu||yvnfa^bxrgtdfx~liyw~she}ninl~{yrdbfo{rvvhhjvwzmllwrgckvklfw}sloinrpw~wumkmvf[eqmjgu|uwvsxuwyoymvutedeepieb|oxojnjkkjdd{vmepni`rqrvumuqs|uousiv|qlkzz0yylz{lkc^fux{rlf}|kv}qckruz~yxpqsz|}zrpyxz{zwh`ds}yra_\~uturvzwsr|qpy|snlfoz}xno|vpqqs~~}|p~yyvw{|sbnxycYV^UVqVsuvvy}{odctmkj`bduv|s|qihkrrx}}k|w[kuqqyxqssh^Z{dqlt~uwuqbntl{d_^xippq}k~hegkqns}xeZ`fiskqq{nokhf^hvmcbps}vvtrnppgr`aakotpltogawsltplpjl^Z]cknnqpvpplnqqlbuv|kmy~wnjijmu|odaomptuvtkkswxmuvrplkkjlluX\pww}tqmmomkokra~jujkkhns~~qmqtwxttjmokwwzpqllutl|yqxrxrvtpnrorlhgccxzytul~mnnpjpyr]_eswzyqypzokefek~svulnmszkwulmkjyx|ihcbirxuqPBg|ywuzm{hY^agpwszfxkkffmv~}jnmnoyxkgmlkmu\vrmdbdx|qeKSEFb~zurrcZ\[kngyzqyxqodnowmoqgjknlkroughrwz|s~i``nylWKK~MLIf_[_[_arnydoovwv{voxbddhokee{qvmklraio]YSQOMMKXulc]^ms{~|vtp~nyjadsien\WnyhcfvqrfURNJJKKQxuy`om{y~spfl`ntely]_gqunnbbhxqNHGFJHHFPyyxl]l~~{mk{~jku}kY^\cbez|FGGEHFGKHKwnskxyyjlu~slljklvzov}spgcd_jMGGIEGFDHFFefgmnyk|plkjjit{znxzr}p~lbbrk{\HFFE@HIJMNsnpz|xmwklfjgngr}tusnhlqtOGFFGFBBCKKMJmþ}wjgi~jr~hebdfjwivonlssonzzcaPGEGFEFFCBDIKLMRvxf_hfjjnekgthbf`^px|lqquuqqxnml|zymaRIEDFFEGIHJMLOMS~``ajigf^ojlpzqd_hclr|got|}oxxrtoq{k`NIHEFEFEFLNNLQMOORWbgjkkrxfknyystqmlmpomtx{}zw{wq{}ulZEDEFEFFEHIOOWZWPQTV\oontqwiopsqwuqpokppn|wuesxu{xyqkJEEGHIFNOOQ[QWS`R[Zp}mjkqvsp~qlkrjhjpmnq}zsloyz|txrncck]^OPTUevol|fi_Y[VmZnYSSZn[U\RKKQV__\`fw|o`]gsTORSTUU``elmmccsseXSWPSVbSRQZT^b\``dXuk\[_f[RSTRRTj]amhc_d`hgtwhXYPQYsqrikS]^`e|lld\[^deTQRSRdqaacedcZc]cYpXSeSWTmmpplev`~cXll[[Z\dx_{yvqtpacjh`iioppqZ\nhVYfV[m\a^c_\Zjke_acs}ll~vznaVSYdkpqpkrqrob[V[[_Ygyhi\[Ԛgqb]^dcbXPj|xttglgcpoleWacossVO[`adq|a[ĝwujW[\\gb]cfh_ikslmpqplTnh_orpr^]S[i]c``v[pqwwuh^_bb^ganrrzxumijpk^a`XplgcflYhrd]`fUWme}u^]liuqc`_dfprqivmmxpdY]UST`osmvund^WORiirz||u[\c[^b__^wsh_To\Y[WWSUSSTVg^\iwt\_UX\Y[`oz{svg[lHNf\Xeqf_`[ilxkjWWVV[__YWSV]`tie]^XY[brs~lna\P{{g`^\`krtj\ZWWVW[jx]ZWUc}j\l]YX\^q}vtmhegTwnv|lb\gpsud[\ZVV_[edm_WxbzxwusjZYVmkpurwjfbhpy|dd_a]ZYp^^Y[_i`_Wher[Wivcfab]YZKWOjcvwnuxqqdff_jb`_^a[[ZY[\[Y^WgepVXeTYYbaa]XSqZVStvyvintofYQ`\Xbfaba`aY`^_[\\[c\_]_ZZ`vbT\`a\W[bvQU{bksnu|{Z[W^``b[df_]W\XWb]ef^f^S\nX\Ros_aabijWUPQJQOlar|tvbgY[_bcXXWY[eLR][R^Yqyx|fV\oZ\]^\eb^vxWWKKJKQ|]_wz_h]\W\s^g[\XcabJNMLu`eqZueWuthZ_YYcfn]VUNJIQazY[scZXYWZc_ogm`ce{oarfmmpuwg`s^kXYY^WZoi^USKT\R}tVW`f^]YWXhjlfuq`c]`arghxnrjfppoiyedmmb`Z[_|qgfcgqtn|eZVVUWW]__npec{kXniljhzgm_gddubhljefip``bdfrlnnpfm|hZUSVVXYYfe\[\ntfokun{aeqioonr{__^]g[_cZYcgmzoqpoqX’xss^QMX[ZhqoYVYpzqbZbihqi^]g[d^jnjbh]a[\a\[\[b]elnow[KRPZa]akU\fo~xymYeb`[gc[YWW\ef[`ZbbcgdTTVUZYb[XXTfevf_`^hjqZRnmrpyxpwnlk`e\WZQQV[`]XV\bcea[ZUcU[\[]Y\w\}{gihjnqoir]kl}|{unqmj]RRPPQR]Z^kPi]bh}ruW[`]_kafwnlhbwr\dXXZm}uurmXRRPQPMNZdjsIDA^hxv}z|uV`__beqbjnibfr{lf_aZ[X[ntidbnk\Y\kVSVSXXfeBCHr`Y}ilmvs]jizvh_bdg`_e_pXX`~qiicv{`it|b_o|]\uoMLstijktxkmhgfxfmxyv`kmj`^c^aXVb^h`sjwisjg[\\g]kzk{p{egyqolpkqtm_mwf`ptnihrpn`VOP[`k[_w~wltsoobihac_s}~{skyn[dhppphoqmsjmskepzvkTPPQjvphvjrurqlbYbSWt}mjcd`kmtxwZrzpin~{ojqsorjos`aewnqnPPWjyujkpouqdbSSUTTbes|wdb`gmru|}rc\Xhmp|siukmmVSYafld[ZvnsiutcpaTSZWc^p\Zc]`_fsusmrvkWkchlovrsrtjj\YRW^flzsph`[Zfu}pgVTSSVYrcV]XZe_loolnlfUxkfwkkpylh[VXYchdkaW_cZxZgi{tqqnkc\VSW{mg]k[\ouc_omtvix^[uzc^dasxqngXVZcneij[\^jkoba`kg]X`zk``[l}wtribf`difm~tmkb`cxzkZOYtyfb^[johjifrkhkxlenbkhiZZ[[e^ZWpw}dneadz}y`aa_YZ|rl}xcYd{c^Tecehg`tiev}yhqibhh^jpe`_uunn0mtm`tp~~qaaWQY~}|lnqiaYqvq`jypcV^dgvmql|pibcdmspqngdvnlnonk\TWhxrohWTQ|q~lklilplthgqedmpga`YbmqkabnuqteacceprqpdrwmmjknpgUbkoYOLTJKeIyjlmmnsqueYXia_^TWXijrvgpdpzWVZackpuvq_ptkO_iefmlsfih^TP|puZhbksmvolhXci`oXSSm`ggygr^nXTW\cagqvwzlvYNU[^hafgpdea^\T]l{z|bZYeit}nmlgcdcZfTVXdhl~f`h}ubWRjf_gd_e_bRNQYaddgelffbdgfbW}klqbbmqmeba^aitpdZXhfilkljaagjj^ghec_^__abkKQgnnukiecebaeahWuuaiu~bbc^bgsrstjgjlopjj`bc_ihjqcd_`hhbsxrjpjqkplgeheha^]YYnqqllbp{eede^dumhSU[lprognfnb^XYV\pfiiy`ccksdynmcdcboor|y^^YY`ipniF8]qmkjnbo\MSW]gmhp[m_`YY_irppy_ddfpm_Zb``diSvkgc[X\osi]BK@A[wxrniffWNQO^c[mofmldbWbbj`bxfy]`adcbhcgZZejnqit_WWepdNCEFHGB\}RPSMORd`mXdcjkkpyxjcluWZY]ea[\u~mcgquxbbyzbiYawcVQLKJHFCOyh_TNN^emuqpjhdy}rxbm_VZiy_[vuxqqvcRMcn_Z]oif]NMJGFEDHnjnQc_svuuposuwhe[`Uc|j[bvkyuSU\fjefZZajfHDDCGDB?GnonbScstvywtqcaqt_`jus}y_OTRZZ^loBCCBEBAEACtmdibnzyzno_bktuiba``alp{~|{elshd[WYVys`GBCEBBA>AA>^]]d~{wdovarfba`__jppdnpgqz~{~z~etaVVf_oSAABAA@?@EEB`qm`^^s_gsy^[XZ\`m_lcb_eztuvhebnjtUU}I@@BA@BA??ACEDEIik[T^\__cY`\zj^X\VTfnraeehgcdlxcbamji^TuIB>?AABADFCDDCDCKrUUW_^\[Rd`awfpgZU^Ybhrv]dhpqaullgiceslx{^WFAA?@@AABIKIFICDFJPW]_``gm[_cnoiigcbcfe}xx|bhlnqnkplftmqog`Q=<>@@A@AEFMKQRMHILNTdecifl\cdgflkgedaffcrmhYflyjp~ujib]B==??ACDBKLMNVINKXJRRe~qa]^dujhfzre`ah]]_ecbxdqohbdnxlmejc쀃xxwxxrnnooip{}vwv{wrssutyxzutw{vww}szkovtvv~ssrrssrl{}yvw{{xzmkntutvqnk~tsrw~pulnmpvuzq~soqlkhjis|ziixzv}zy{s~qnnpfcajuoopllijjvwss|uxqopsseyonnllGkwpouuutzqnwrlnjmiv{skzwuy~so|vysljjoznxy{}x{dgwvyrvvlmuuwy|ljjlkpvw~xpfz{mmkpmotjinyszy{}ʲ{lkmuzwrfmqn}tomxј~~nsjcfmvsfmrs}|xuvtllqzu}dvtl`vmnn~kouq|ӂobhhf_bcy}zrrfiq}w}myptvxzppmrmghh`jeqtrt{oprvyu|wxtzpllsdbgjtmosxrrvsrin|vx~}w}qyz}ylhqu|qjglsrru{z~zz|xyz|qlwy{yghmpwyywuyu}vvrlkxyuihkotuwszx{xzttvvpoy|u~uxmeksutskqpwsz|xz}nkkjt~rgkmrpthll9{v{}{jkjovykjpqp{mlonzyy{|z~mrjs~jsjhhnkjzopqpyv|z}ryk~ifpmtn|zupu{oly|~kfgiq{w}xnnvxto~ihfrtyqv{|nx{vxtq|uihhjirzwoio|uq|qlihrrx|fzŇ~x|rlmpn|}~zǏ~ʯ}|wwyjjr|~z~}~{}~v{~}yxy}ss6y~~|}}{w}xuwoqviy|z{~tz|Ɛu|}~xzxvoxrs|~}}n~|qyvmz{z}xey}~xwx{~}yplw|njwv~}ywyzv}wxw~xpf{~v{}rswwvv}xy{xwv~wxw~wwxw|{{űstwyyoptzzywvxz{xyztvxuwx}yu{yumyrvxf}xxts|uy{tuuyvpvrupjzuxyvqruvyxvpklkw|}o|xzy{~xpu~upljz}z}qrzx~aoitvuus}|{usxs}nfd{xjnuv{~tsqcghp|oony{t҄|yz{xtkixt~xyyw}||}#|zy|~tzx~}tw}x{{mwxspvovy}zhu|ympstu~popjrsv|}~tuþsjoouytq{|{tq}vy|t~~vv{}kky|}||}oww}t{|{yz{evwtvixurrpls~tyƧqp}ztqvuwvrqznno}wt}}vt}vxzy~kvo~w|}yyywy~oo{vs}}xq}{tvzznu{xuqw{ysxmr~s}yyrrqtqoo}nzzsutx{~~xryqpqigjqwtzwzpvnijjd^^`b]frriji~njeffhgmlvo|dc|{oyrkjhlbz|ks_dliiqfyfeeffe`u{||~jlonnqqxwrhpnpqna`djjiida^qgfejwq|}yy{~o`d`dcflhms`n{ob_b^^]`_ip|n\\kliojiy}|{yyzkrbmdabdYVT\wgot_`b_`^``kkhg}o~}||xxdg{cbdffXvzj_^_^_aam{zty~{}{xwp_^dhihndajv{rc]a]b`l~{yswwu|zjb[ikilqrfbmfkd^^_epdllpixy{xyjSVtjjmeih_t`ifhil_]^aadhiqui}~|x_tUln__^dabfpyyp_^cnfljmnnjn[Z\y}pgljeYadao}eqdcmus~|mo{tx~tso_e^WZ`|ztgeZcggo~tnpzv|midppttruu|rhf__emhpXjhw]qwRtiq~\]^pqutp_bgbnrsrtuuyyaT[\ZSV[znqlddVX`lxfl\h`eijlbc`ettuxxwv|aZ[\\T`]ikiitma^`cfuodks}jlhmc``httxzwwyWUZ^ieejngghfuaZ[icemolyqjtvrzgotpv|y{sn_[dhpf`]bigfdimrnip|xyuvspproou|{opf^j|rlnm]\bdhw{xvznty{ly~nmkplsyxkkg^]jtkg\[^bgghdlyj|rjvimhillhfp{oz~vhqqf~h^Y]dffe^dcheklgiltwwdabakrs}z{|}}|tcUZ]bcg[_``oirrkk{rq`aafy}xuj||}~phYX^bboa`ccmlsrhjolvptdhbius|vn~[dXWV_]_oedfdmzrgkjssviz|}pm^p[Y`]b^pntieip`^lnqx|_X\^dnripzi~`_ijuygzbx{q~t^^]ghqkcfjzzncmpju~{xtu}xhdaxrk``ahzxzzxjgq^Y`v}xlda{qea_`hgjlx{~}pVhpx|~}zvnmhltf``fdpoorxxqoziqstkuppomhgj^^ewoprsnimlmk{~{swtutrlmdhqpnnrujxikz{rlpdfe}yqtvts~qpqplmpolmmkhyurywsnusogde_ci[k|pywxx{jloekqmr|{ognopiruqnige`jcdmqzpynsmp^qol}clg^vvq~tjlkojXkmongffjxozvpq~zuopja\io`]ih|qqplpjhktmqyfmggfm}{mtu`Wnrjsusmlobdijjk{unhhpuqlmirrjkirllmjommbdiklceh~iix|rvnmlnpolmnhjmikkqokpfmlibog}tq~ln\uuypllhgohk~j{{qfddjjugx~}fa~fc{`pykslljehmxsugdjjihccdputxy^u}misvr{v~{mopichogfcbswqrwwbvvduqpuWdyw~{\ggj{~zusvttxpnjffmjud[Zpnywz|pqp^bijs|z{vxy{yujmpqiihX\]erzx{|y{uffcmpwg}|yvvsrolhjllh_^|xrt~}pju~ornv{yvv^mg}}|sstpqttzzppnulkklrwvz{|z||{~xytxzrvxuhgkmndigw~|s|xt~wo~srx~|ztlttdfu~x}rv~oknnxu^fgb_eoqt~ubhjwrlukYfsuy|kh\_bdfocac]pc~}rdgnrs~op}}n}cdpubZ``gje}almr}wzlzszyxyrypzozsvxa_jyzyve~xp}qyu|{~}vw{xvruhwmcmyvrs~w|z}znw~~zr|igwztolmry[^kppo|}|}vvs}osrurouzxullmoxbkkoporf|~}yz}w{ptssrr|~zwkns{pznmnrXh{{}jrtwoy{xt}tqu{|}y{}vvuuvhkvr\lw|y~zqs{~~{yps}gx|w~}~xy{yege`gvz|~{}qeiwxr}ylutedntpkqs|x{ifj{{kwwlkcai~~{{u~snabbmieqprz|ji|{qpiktntxjol_jbpjpsprxkkqvolhkvsrtv}~w}|wwmcc|okhtqosiqpp~w`l}{qt|zrkvhjoqdlqlhbiksxqicgnxu~u_cpvwdtqppihgfdbaternfifknpswqjckv{rabc\[_fhflkmci_]^^XTyTUVQ[hh`a`vuea\]\_]ba}sjcvuwqZYon`kc^]]bXprxahTYba``h]p]\\]]\Ujospypys`bb^_bbiji^fdfg{cVV[bbaa[XUh^]\amf{ypqmmoseVZWXVY]]ciVdqeYVYUTSXW`hreSSbb_f`_nyqpommoagXc\YWYOMJRn]fkVWZVWUWWcby^]ret{rqqlmmZ]q\ZZ^]NmqaVVUVWWcz{~qpxxjotprpnlfUTZ`a`e[XamsiZUXTXUsauyzrwpo~{immkrp`XQ_}~caeii]Yx|vc^b[UUZeX`aae^noqno`ILjbce\`_VkW`^_acVTUWUX]^fj^sutv{rnUjKvxdeWVU\XZ^hpphVTZc[a_b}cvt}d`dxQPRpuh^ca\QX[Xer[hZYbkvitxzp}ceqjntuy}kjfV\TNQWqoiw^[QY]]etjdeywmip~b^[efijgkjrg_]VV[d`hO`]jrRhnIj_gtRSTefiidSV\XchhijmnXKRSQJLQynbb|a[[NPWco\bR^V[_`aXXTYihijllkpWQRSSKWR^`]|^idXVY[^leZaisab^bXUU\hhlnllmttMKPU`[\|_cYY6ZkXRTa\]debph`lnjzuo[chdjpmougbTQZ`i^WSW]ZXyx[adhd_fropmnlhghccipovceZS`tkegeRQVW[in~omvpdjouqbqwgece`gnmxw_^[SSbmd_RQSWZZ[Ycxpasi`ly_c]^wcc][epdots~k]ffy\tu`UNRY[^ZV\Z`^cd]_b{illZVVU^ghro|~qqtxtskZJPSXY_RYYZickiaaqg}xfVVUZmrlj_rrttf^MMSYZfZZ]\felj_`eb~jdhvX\T]jgqvkbsuvvwSZMKKUSUe\\[fsh]aaiv{uvzgj\xnvs{wwsed{UgROVQWTecic[_e}|XVcegl|~syzzx{vTOPRYbviberbuYX`blow[toVsmpuz~{zzdwt|tgRQP[\f`X\aqnveXbf_jsxpmijsmZVRvje\RQRSS[nmppn`^eTPV|golvuvw^VRusmbXSQQ[[_bnqswseK\glmnpspq}oz|h`^Y\ngYSTXUcddhnogep]vqrsqe}gg^uicbs_ZU\_RRYkceghd_cbb`pxswruvmgmjkitye^_VZc`][`k_xzm_`pqhbzeZZYqmzwfwimjitdcdb__b`^^i[Vuokgntlhdkie]Z[UX]O`pxqrcomowmto^^bY]c^dotkqe\cdf^hjhd_\[U_YZcem`oh`hdgUfdaqYb\Rjid|oj`bad`Naceyc\[\aoeqka`ohfagbYTahXS__qffwxwrgbf`^bjdhp[a[]\dwtxuqbffvwYQfh`ikic|beYZ``aar{jc]^fywjfbc\}hh^`ai``a_dbbX\_bcY[_u~w^_nqgkdcbdfwd^_^Y]a]__fdwtaf[dc_Xd^s|}vhf}tbdRkjymd^^YXbx]`t`pof[ZYa`l\nusyvr]Xs\Xun}Vgo_g``\X]c{mhj[[^`^\XXchglnVmuc^iwicolurvbfzwzet]W[b\ZXVfjdfllZn~lZiqdajP]zsyjqoPZ]]\_opkggjijogd`\Y_[f\USix{fzrqrscddRV^`hpm|zmiloqok`cee[\ZRUV]iomstz}lnh\]YcfkZqsrsnlliheb^`ba^XWvwrwx{|ynegqwsphakutu|ehdlqollc]ssriuxzz~vrxilgfihllsvggdl~zw|ybaabhmlpupspsvurqtyssnql{jlgmpzuyy{k^]aceZ_]myy{xuvriqn{w~lupfypwiiovw{spwjbjiZ\xkyuxpwtuhk}xurz|a~beeolUw\]XU[egjwulY_amhy|zu~d{t}xlbQ]kl|xora^RUXZ\eYYZTfXtvwxqgV[aghvghytu|ftZ[ft{kXPUU^`[qV`cgwrjnz`kfmpnrkqhrgrjloYVannwwpykx{Yqksfusxzfnjpnqpsloxsqlil_mbYblkhizumz|pnq|u~xyocksppmesb`mqje`benQUafgf{tqrqqu}yklvhpsbfghcflqnkb`abkYaafggj]styqnvpw}p|jofjffcdr{stpmw`agoenee}iO_rqt~swz]gjmenjhtyw~irfdhorrortzumjiik^aniScn|qmqqunfhi|wxttqnfhr^osnvtrsnmpp\^[W^lopqrnpfZ_lnhsoclkZYflhbfirnwxyq^[app^ki^_|uYW`~uuqqktjeWXZe`\ffgpq}v_^oncd]_ibim{`ywzyyvfcTbYiafifgmut__dica]`jhgkmv{vn{{srwmmc|WYtha^igejuvt\ddesuwvv}ylSasy{qvgjqph`l\_fhZaf`]W^w}z`xxuhnguz}y\V[cnjtkUYfylmZjevef^][[XWVjZhc[]\`dgkic[V^kngWYZSSX]_]cs}y|yrvu|z~gffbdwtujxyqzqmj{ee`jkffdgjf}ntlhYdfdqtzmjfYg{zzy~z~sjeceedwxupqwwrpv~aijlfcdodjseheZb]eqkjvmge[k{||tvzvpokiip}w}ulzvwckkyuzhlthcpcbd]mnssqbbdd^Z]zwz~mwutuomkijlxxvprnuvdgpl{wlksx]aad\kfqrm\bjqkmyu{ozwxsywv{onq{xopd|ghhppolz}wsv||fcddoggeehYcbskor|nzqwuv~oz|rsw}vujiplpz~kjkuutwyimdsclsle]Z]hozuZozuwvv{rmosyrjhpyyz}xwxwwynlsvyapccZ]hcrfi[f}|vy|~xvuyystp}rjolw{||qxwswmhblyvw]_bccwpniV`[wyysuutxzwuvz~rqry}x{yi~{{okide}{x|_lbe`^qnZWUQty|z|~ukuzrvwywjyxzvloj|o}ylywxjhlkt{zqtkqxpjvzxPTWVV}rpyxwtjswk{usuqy~{zvmmooymtytxtjjwsxwr|mmgfWMRU`YprwutskgopjbgcdgXz~{ozwkk}|wrccrtpdWfcdnot}|tuTSOOTUX^vvtumvvrhhlqc]a}}xiuor|rbjlieddeeyeklioqXwdPRPP][VYvtwlrz|pxkkxrqyvyrunnryz|orsv`bcfmjojjmkg[VTRQcil[Zw|s||mgqootzpn}}txksj_gyvvxy~nieiownivrRTQUT\jjm^a~slmsyzmotirnmjokfywwjixz~~{vhdTRPRUY\[[}|xmomlr}ozutsxkkllivoxnrymkjy{fSSONUZ]XgWX~yz}ksnml~nq}sppn~vnnlorvxzzsoqxiUQSPNOWY`SUXUWnny}pnopxyim|ypou|vz}vootyyxwkvxlXTVTQW]aZ\ZZOYZpmkpw}~{pnor}xiwtuqnmjxuqvvxyxwrw]\V\SXXYQ^]c_]\a]]\Volrj~{~stnokjghny}sxtrvtvoronrqrwuv|f^[Y[YVUUXYZ`aTU^f]Yh[mhkfsz~umpghfkw{{zturuzqxyspoknous~f^ZY[YSSRXZYrhcU__[XX\vgkhvw{}tlqhevkkuzwu{q|||w|{x~olntwb_\ZVWWYQUdchnWU\^\_`X{wpxqrrx{q{|xv{{xov~}x{yrwzifkjnia^]\WYg_mh``]ZXYZc`^awxpnpntwo}~~v|u~wx|z}ynqxfadfdanfhlc^XXjlbYZ[]\\Y]__axylmqoni|xxq}x{w~nqz|~k[``eeblqoujl]YYglkbW_]^b[\^bamqfioz|mpr~~~~{tc^\``chnpmrw}mcbebslk^\]`]__bcvuysw~qtiyt}u|~}}r{n[]^[^fqoqttsoykijxula^]^^ikibfqstv~{p{moxu}s}{~{wxw`^^[Ztzpswrrosoip|zzc]bcjfy`e{xfjryzvsnzyyxyxlkm}tkklea``elyq|wm{uvlmox|uokoq}~{tqt|xrmivxxxtupwzrlvpjgqkiplccaa_jlvsur|{ywuqhoop}xwu}zffhut}z{vuswmmebaegnttnen{svstxuw~{|}{plokusllip|{~sqvvY_hajruztov{tolqsww|}}~{ymvolnlvypvvrsszi]fjjmrsmljypmlxmtxy|حz|wpuqngfjuvkqsvvsrudeikjjfsoloa|asoiggźxuwnknihwxxwfqhunr~ofcikk+jlvpipsohieɺqt{|t{vyrggcjjoliageheremjjmrq~uiqlipq̺w}r^ry~{zwtg[_gteghndfhegdelmljihUanlnnmj{ǹoss{spqqtpgf^hheghegjhgehoqlhif^UTaoommðqsyxywklmkhbZorpqpbiihdgmtvsrkydVXfmrxͦrstsjiplkkjqu|{][gckfnyyspyid_cepqrtwheoynllm||}x`dupgmz{zzra[YcglǑuuwhefk}pj|x~|o||twcgjpuѿw–uy}zonan}xuw{zt}|yx|˺ǡѧvixnzgyzppsuqzt}صƚyoegzz{qpzqps}ȉɔ|ppnhhekku}rvx~yp||zֹ̿˩yt|rffin}Ț~ysv~~qƬάք}ykop{xskgs˷δЊuzzqast~rojz˷ūĿ̡|oqqpqdvͰzojvǫnnpqowgu־|ou}Ϥmmotvsý׫wv~ؿnmnonr|Ǫͯs̼ouvvz¸ͳtuuǤ̵ƾsvtű|sŶĹ̅vw~Ϊ̬·i{½Ñx{}zÓͱpbxrǾ|xk{zؿ˻˰tpvܶ~Σ{ov}ـЫȈotswt˶͸ˮ̕vuxը̤ͯϗzxy߶ʮبݓտywzòƭʡѣ|ktqtpillsqux^]\Y[m{{jvzvlaoqhqhect^]Waa\\[^a]tekc_P[][hkqd`\O^{qqryzvpuqtja\Z\\[mnyjffz}mnnkiouY`ab]Z[f[aj\_\QYT\hbamd^\Rawyqrr~ykmqmgfb``gsw|mskbp~{~unn\ddqmq_c}x}k_ZgZY[TdejjhYY[\VRSzpmpvtydwnlklfdb`adnnlfhdkyw}wm[`jftyncbjoTXX[Sb]hidSZaibdpkqepunojypnmrfvehxqodfZr^__uy~vxh~jicqsmjmsys]Z[\f^_\\_P[Yjcgyhrdxphnlmufqwx}shjmszmlb`gbufp|{wcabkljmpx`d[kZckd^VTV`grmSipw|kmlm}vq}iceh}wpjb_hppov~sv{wzvnmnnpevcjnqXxi\\TWb\k^bTasrulortnl|vkooijfs|jbfdorrvvurgu{{|~vnmjnd_YcpmovTX[]]^skhbOYT|muoovikkjnpmkko~zvljjqss|wnqx||n_tqqfa`[\trotWdZ^ZYkgSPNKjorprtkakphvlmom`nmomehatfs|{uobvw|omunb_cbwkrqilcjqkeqvtHMQPQshfonmj`imaqxjijfnsqqmzedffuocwiojnjaa|njpojthzgcbSGKOZTfhmkjia]ef`W\XY]Nosqxgqnbbyrp}mgZZhjg]Q_z\]egkutnoPOLKNOSX{lljkcllh^_bfWQUr~yttm_ks{~cfqzhX`b`]\\^_q]bb`ehPp]LNKMZVQSljmubhprfwum__lh}}zfwnklficbfm~prfhkmY[\`gcfa`cb^SONMM`eiUS{mrvirwrc]gvdeio}~fcrrxilchaU]ommopvwfb^b~fof_ljKLJNOWggiYYtvzuw|ibcioypuyyxcdyk`hddadb\pooxzb`pqwwtob]LJHJOUYXWVUssrwn|cecbitzg{upkji{{zqcbcc`nzfqfjwypdbaxsu`LLKGHFPUYTcRQtopzyur`{hcddwgi{ysiffdvy{pggegknqssrxzifgoxbNKLHEFPRZNPQNOdd|owrtdbdenvvqbftofek}vqtxoihmqqppdnpz|bvQMOMHNTYRTSSQfcaflssqddcgspan~ujkgexferojoooqpnhnw}USMSJPP HTRZWTTYTUSMebh`tqtgjcdaa^`dosinkjnmnhjgeihinkls_VSRSQNLKOPPVXKLU]TP_Rc^a\iouzsjcf]u^Z`lqqpjkhlqipoigeadekisys~^VRRSQKJIOQPi_ZLVVROOSl\a^kmrtlci^[k__iolkqgrxrrnqqnsd`djy|qiysYXUSPOQQIKZZ_fNLSUSVWPplfmgijptjsrtwlkupqnelwxtvsnqvttmfjou][`_d`YVVUPP_Wd_WXURPQQZWUWvlnedgflphuvutr{kqktm|ynurps~umbgn\XY[ZWc_`c\VNNacYQRSUTSRSVVYxnobcgfe`txxnnhtnqmztdguvmpsbSXW[[YchflacTQP^cbZOWTUYQSTXXcg\_eprcfjxvxuuu|uxq|{jwz~u[VTXXZ_egeintdZY\YjcbTSRWTUUXY|lkoimse|h_njwunt{vu|shuzwq{}{bSVVSV]hfhkkjfpb`aolcWTRSS]`^Y]zfhikt~xpepcfonwlusuqm|myuzksUTVVRQkqgjniigkf`hspqYSVW^ZynV]xxo~ywm\^gnsolfrponon``br~zkaab\YXX\bphtnfsnndehp|sleadfqspxkigox~ohc_konq~lmhmp|xgakda_hd_ec[ZYXUazwwdokmjwzvqnlh^eedxw|xujijsqw^]_kjtr}qmkimbb[YX]_ekkf\eqilikypmovuuytzqeaebv}xyrtkjcc`gwzsruuiglwjOV`Ybilqkglxqjecginmtuvyvy|}xps~wncmfcecm~v~pgmmhiipx^S]bbdijdca|}ofcbmbimn{}töɟnovlfkhe^]akmbhjmkihkx~Y[`cbb]jfbfXrWie_]\võkhttmdbe`_mmon]h_kcguuvd[Y_bcabbacmg_fie^a\Žehoqjp|zvulpi^]Y_t_dc`X^[^\j]eaadihtk`hdahi|yŽmrhSgny|{tqqmj^RV\iZ]_e[]_\^[\ddca`_LXecffebo{Ļhl}gpf}~yfggjf^]U]][\_]_a`^\`ghc_`]ULKXffefvvû{~jk{to~ynomabcb_YQefdegZa``[^elmiibp[MO]dho}ɾjkkhz`_fbabbagkp{xrqVS^[b^epqjgpa\VZ\ghy®jkm~v^[eodbbdrz}pqmW[kf_dqrvqqiXRNX]bkkuwyl^[\a{sg`r}|krqetz{|y{vtsjmW\`ej}~nlowwsoedWdsn|~zhknnhqpyzypwoxvwtpʽŵ™luz_ndp]xxn|{mccfi}enhqy|}y|ŶĦ·n}xe[]pzvvp}yndcsn}edgqss|u}˽úqcec^^[baks{}wfjkqmdonlxvvĩjgnf[\_cstx}yxxvztrlgizqqse˸{sm|m_eftq~~vwwxvukxwf_[h¿zgymnfVhi{~{}rwydc_pnceddeYl{|x{zlcy_l±Ȳecdecl\k|~xǯpdjs}ddcchjg}|}wqȝvmktοȯɻhfecafq}vzȾsiuȸƻhmmknu~}lmm~Ķlnvixwzsj{zÿ}mnz}pyarymoyijy}tpywþɷi[mgx~suȺtqbpm|~ȯļlglܦqtu{ysflqsyȀĿ}s}~}hkjmiu~ǻ|¾}{w}}omox}ÿę~|x¿yzÕxsppvxwΧz}yʻxɇw~ûůspqz{ʱ~|ñĹyrakgjg`ccjhloUTSPRdrrzamqlcWeg^g_\YjTTNXXSSQUXTk\bZVGRTR_bi^ZVIVrhghpyqmglhkaXSQSSRzdepa]]pt|deda_elPWXYTQR]RXaSVSHPKS_YXd\WVJZnphiiupwbdhd^]YWW^jnsdjbYgurulccRZZhdhVZtotbVQ^QPRK[\aa_PPRRLFJqgdgmkp[necbc][YWX[eec]_[bvpntndRV`\kpeZYyvafKOORJYT_`[JPX]VZebh\gkdfapgfdi]m[^ohe[]QiVVlotmo^t__YhjdadjpjTQRR]UUSSVGRO`X\m^i[nf^ecck\hmosi_`cjqdcYX_Yl\fqqxmZXYbcadvgoW[RaQY`ZTLJMV^gaI^elqx`bbcwtskhs_Y[]rmgbZW_ghdk}tjmsnrnedeeg\mZadhNn^RRJMXRaUWLYgfi`cfic`qwl`de_`[hrvaZ^\eihkjjg\msttumedae[VPZfcdlJMQRSSh`^XGQMpaitcc-j]_wa`dfcaadsvqmbaagiipkcfottfVkhh]XWRSkheiLYOTPNy|a^KIGE^cfdfh_U_d]lbcebVcadd\`Yk]iqoidXnpzufdleYVZYnbhg^aX_f`Zfki?DHIJtg\Zcba^T]bVfm`_`[chggdr\[]]|zwjeZ}|oafafaXXseaed_i\o]XWI=AGRM~Z\a_^]UQZ[UMROPSDdhhn^ieYYqwwvuhhve_QQ_b_THVqST\\_jicdEFCBFGLRo``^_Xbb]SUX]NHLhtxoxkleVbzjruu[^iq`PYZWTSSUVhSZZV[]EdSBEBDROJMt`^aiW^fg\nldWVd_t}ytwq]oebd^`ZZ]evgj^`bePQRV^Z^YWYWSIEEDDX^bOMoafj^gmhXT^m\]`gt~uv]Zijo`dZ_WLTfceffkm\XTWs^e]Vb^BCAFGP``bRThjniz{wmr_XZ`fpg|lppoZ\obW_\[X[YSfddmpVUeflzkidWSDB@CHOSRQPOggfkwxdrY[YX_kq^rzzlgba`rqpgZYZZWep]f[^jmdXVUkeyhUEE7@A?JQTN\KKgcdnmihVq_Yz[Zm]`qpj`]][moquf]]\]adghgejm]Y[bl~zXFDGC?@JNWIJKIJYXpckgi[Z[[elmgX\k}{f]\bslfjme_^cggffXacmpxWlzIEHHDJQTMPOMMKK[WW[bhhg[Z[^jfXet~lab^\o\Zhe`eezghgd^ajp{}LKFKDIIKDQOVROPTOONHZX^Wifi_aZ\XXUV[|z}fj`ebadce^`]\`_`dbbgwwVMKIKIFDFKLMRTFGPXOKZMYUWS_flqjbZ]TlURWchhgab_ch_ff`^\X\\c`infxqUNJJIAA@JMLeZUGQQMJJNcTYVdfikbZ`URbWWagdbh^ixoiiehhej[X\apre^lhQPMKHGIG@EVTZ`IGNPNQRJie^f``fj`iilodblhhe\cnokmjehmlle^bflSRUU[WSPPOIGVN\WQRPLKKLURPSnef^[^\bf^kmlkjrbibkdswpeligjvyleZ^eSOPQQO[WZ]VOFFX[QJLMPNNKNQQTpegY[^]}\Wknoee~_kehdqk[^luwnehjYJNNQRP[a_e[]LHGUYZRHQNOTLMNSSZ^SV\giyZ]aololz{llslohsranqvnz~RLKNNQV\^\agn]QQTPaZYMKKPMNNQRscbf`dj]t`Ufanldjrmksj_lqnyhvrvusZILLILT_]_bba]hYWXfcZOLJKKSWWQUq^_`bkuoh\gZ]gembkjlhdswdplq~xcjMKMMIHbh^ae``]a]W_jhhPJONUQoeNSmqgv{pneTV_fiwec]igfefeUTWhurcYXYSONNSYg_je[hcdY[]frjd]Y[]higna^_gpyvf_ZVcfeguvcd^egrm\UaYWW_[V]ZQQOOLXqnmZdac`knigfd`U\[ZnnqmjbaajhnUTVbakvitiecae|VVQPPUW\bb]S\h`c`bvpfdelijmiph]X[Xi{wrkrkmbaZZW^nq{|wjimma^cmxx_GMWQY`chb^coha\Z^`ddjjkmknqrnewlwoeZd]Z\Zdumug^de``aflTITYY\`a[ZXstf]ZYeZ`eeqrhu{fgnd]c_\UTXbdY_aeda`bnxrPQWZYYTa]Y]OiN`\VSTwlwxwcalkd\Y\WVddfeT_Vc[_kklxZQPVYZXYYXZd^V]`\SVQ~~~]`ghbhsqymlcg`UUQVlW[ZWPVSVS`T[YX[`_kbW_YV]]pwmej_K^fpsrkhhdaUIMS`RTV]RUXTVQSZZpXWVCO\Z\[ZVucoux}v^bt_g^tup]^^a]UTLTTRTVTWZXWTV]_ZVWTLCBO]][Z}sjk~wjl`brkfvqefdXYZYVPH\]\]^QXYXSU[bc``YgRDFT[`ex}q~aab_{qWV]YXYYX_chsqkiLKVTXT[gga^gWRMQS^_ov`aduxymUR\gz\ZZ[krvzijdOSc]UZhingg^NIGQUZxyuubblnpdURSXr|k_Xkuvcjh[jqturslih`dPTW\aryo_xbfnnjf\[N[ke|txw||sacgd\d~hrsreldnloxlhu||vclqxVe[gToofsxsvf[\^^tvs\f`jorsprz|eyto\RTgqmlfvs{pf\[hcpY[^jmhrju{qu|i[\ZUUSXYbjrurm]`b~daYffezmkjsc_g^SSV[kmpstvxtnnko}fda^atfegXpsmfudW\^miww{rsxlmk~|ihhcqp{ZSP\xywys_ref]Maa}|qryo}yrngwpryzVWSd}|f[\\[]Pbr~slrvwxmn}x_VmT_uut|[[]ZbS`q|tlx}ytcX_hqt{}v껹ZZ[[_b^rqry|idja_iuuz{~|^\\[Y\fqzxuus}im{~h_lwxxz{R^cdcflrtyxttwq{r`bbuwxyxybdm`ovzz~~|}loi`q}yyqmqssdeptf}~ux{oVfwsk`ct|ukqj~skgqnv~y[O`[krzihykgYgerux~~|_[`cgispz{w}}oj\chjo|~v~rpg{vptqt|{]b`d_ktuxq||qyoolxzzyswxp||~dbeosxtsqsj{|nos|xun{y~~geemomnrsmzotv}vvmtugdfprwѺqps|{vyobgp\QPLII^^\]dfcKPKR\edo^SR`erPRQOKHRMKRR\^zlOQNONPmpyzzXWMMIHHQghegfaLLXZaagh^LTfr\ZUWTKIKLPQQRahmcRHNOPhtobVWTOMMLKdighl^NPZdb`deKNX`j||OYXOPKMQQRUUZbo]ON|]QUTVRNOMHK`limmbQOP`di`ZLSR^fxVTTONQPPRTWV[WlpxWPstTVVTRNOQQRYjukoiNNTRhd_VNNT[V^WTRROOMOQQST]TT\ggx|sUSUXSPNOQPUbqspqnQISeqpTPQSU[q^_TOONJQQPVTYXXUW_k^WRY\NONNPOTYZcnfdbMLPyvxbUPSTUVfhu{xs]UXOPOONNLWRTVY`hYQPRURQRNQOPUXZcefdPKKNv|}aQSSQUTVVW~vVMVQOOPLLNMRVV\V_PPOMRVU^QRLNXVdlhaRKLUtym[OQPPSUUSQ^RMSSNONLKLKRUYXX\ROMTLJe]RUOLM`i~raNOMUfsYgLLMNVUTTNNLvTrQPRUPLLKNQRWYSPQQUQTaQ\WSPU_rzwXNNMXga[VMMRXSTJHHIMzbU]QNMKKUJNSWYWSVRSTW\LLVV_jkn]XXWYb_]TQPNVSYcIIGFLw{~ƪ}etSLJJKNUKOTS[TTRSSTW_VZUV`fgfhLWXY\^YRRQRPQfeOHHMPxxǻKJKMPNNONJZWTTWURUMTRcff`ZIKU\_wa`RNJN]cgKGGHLOdĹqNRZTQROKH`VTSTTaWWZROSZfdhcTOQwqkc[YFELUedhMEJMLe~˽cV`T[XUJMTWSTR[[X[TOMM[]_`_]NbtthZb^QOXa`beKHJLMK͵tX]][VUVUSUZ\YWb`YTPNNZ`j^bWi}kaYPXQUZ\``fMJKLLRf{ɸ[ZRTUJYcbUXOPb`UWURPUhpjkd`nthTTPU^`_aZdSMKKLSļVUQT_iYVPRR[]VVURLOhsqvoc`d]^ZPW``a\XfVNLLGHJR|}zmvKcSTQSSUQ^XZUQKK_nxvujekhXVW_^``_TWW^MNJHJKKp|u{kf^VWYSU[[]bRSNi`kprxwwc_\Z^^__XcdRQOHFJJKTwy{f`\RX[^a\SXVQM\^arq~wwiYZWW^_W\abjo^KJIIJKMbxzvVYRUJMWYZ[TTQLR]ihrv|y]\VUX\X^^a}xnHKJJORju]aWQLRLYYVSVSMRZ]^co[bWOSW\Zbae{xIKJKIKLLywyywĿsvZXVOPWXXZZMIJLWgktv][TMUN\VbnbTKJIIJKKesuv|~y~zUT\]VdtueUTONNUgcXXNJPZcnsfs]YNNR[dbe^g`UKKIJJKKOuuq^e`i^[WWVUVMnpjli[OSafc\SQMMbckpopdaNMORS\e|Rmkdba`HDDJKLNlb]Z[[\ZYVUUV_hkkhbT[}YkYPSUSTc^jkdkZSMMO]lg{gf__^WGDDEJLNfc_Z[\[\\]YWW_nnrilb\nYknhdMRVTX[g`]YRMMLMTwthgc\Z[^YOFFIHHONWdcdf[`\_^\[\\clgz}oahj`scbnicMTSSRSci^VNOOFIZyzvU\YUX\]^EFJHJNV_`dbhe\]bb\]`egig~y{voi_OPSRS[hunSSQOMQbyydYXTUT]`MGHJJSVWUZeiebbffdegfghhzypnlaOPQT^kpn]UQQS[wyj_^TUZYbXINKLLMTXYdnahaeegefod~yzrmmoeXU_bangTPKMZ`{|tUVV`dhZLLHKRSSZllfabbc`efgkvfxrqkhkk`W[aangPLIL\fnzrvotTLMNQY[jpjlud[Y[eebjel~hhpfd]X\mnaSLKRXthtjQPPS_`hpn|i^_eg`_dhsIJmsa[VXik^MNNU_dfzpxnfQPRXbfensyrmjegea[`_lŮ~a\[WV\f[OSQV[kyy}y}k]\xwm_^X]SUZkgqpqppsojmc`afcԹc\ZUVX]\\RTS^h~zzweVUTQS^__^S]PP\quoqqtuosoiggmǷ˶n\T[VY^_SVV`zsZUVXW]]`qxfZS]du}rrspknmpmpjpѿϺhl[WWY]^b\TZ[[SOQ]``nzlaVYgstqrikkjklmtȼ¢Šjkrg[U^Xab]ZXvbROPY]acczvaVWWcowuvuqmkmlkm~Ͱghue[ZYXRRVY|[VTYS^]]wwoUXV\i|zttslijlklvҩôΣuqfcXXVSURSxRWXRW\]cu{xcUUXus{vuqllsxnʽŧԏrf^YRUSSUqi`UXXYY_jy}rUVVkmx~xmkvyq˘ϧoUWU[RU\[éxxoW\VPVVZ\bpraTRSahy|plopsm˕ҵȨȕuYZYTQSsycVWVXWVT[__nproV]\^tusvqleomڎỵ̈gTTSUɯrfZVWXXTZVX^fmrtxY\]_alzzvkjikɄȤxdVTUTXȭTSWWXVUZZ]bfkqw|tj_`caqv{usqjkhתǙ`VXUSS[ѓXNVXWW[[__ajmrx}]aabgsushhi™ƨrigYTXY̸NUW[a^_]`ccwwv}`cf`]hw{{ojhΪɲɨe^XXdzdUm{e_f][aeptwvy}qcY^Ylyyw|xtkǯϽŢˋuutlXhƸkeZ_\^ivvwzmkYX]gntx}y{u˺˾ĵ˟uvr^`fлbZ\\[[_idjpvtiXZYimszzstýù}ufaXdөi_ZZh[\``acikkXZY`mztstpqƴԴé|yhqvyѶ{qi]aa``cvt{~j^S]hrtuuqqԫɩ˯™sd\bƫwn~dY[[ltturqٷϿӷjfɿ˲}TgblpmiqqĞ̷{qsv˷q]d`efmkv~ٲ̬¨{ujb^Žβ|scjdjivqͤ˵ϖՀ*y|kZ]^źmdbhqxw˾ҷҵë|~x}Y^o˥Ƴϸoiahe¿ß}|`ee~ukgry~gzx·kfef|sČɬukma\jpjgdelYT`chidcja^jͭͼvyql_Wenhg`]`ZV[cgvfd^W\YhYZ^hSIHDA@UUTV]`\GKFNX`^hVIHUYxyjLNNKECKGGMMLUUo`IKHIHJdhrsrONEEA@@H]^]_^ZEFRU\]aaTBJ\f{zUVQQNEEHIMMLX_bYKCIJK`kgZMNLGFEDCZ_^_cVGJT`^\]]ADOT_p|~sJQQHKIJMMLMMPWgVIItTHMKMIHGE@BVbaddZJIJ[_e[RCIIU\~{upOMNPLKLLMOMPMaenwOH|llKNNKJGHIHIP`mbf`GHOMc^ZNEELRyNVQPNONMIKLKLKUKKUx_`oulOLMPJHFHIHLYjjfJCM`ljMKKNNQzx{hWYOMMLGLLKQMRQQNQYcVzSOTVFGGHGKPR]h_^\GFIror]NKMOON[\jolhXQTKMKKJIGQMOQS[bSMMOQLJKFHGHLOS\`a^KEEGmuuZLONLKIKLNrkOHRNLKLHHJHMQPVQYMMKHMPMVHICEOM^ge\NFGNkqfUKNKHIIKJUJFOPKLKHGHFMPTSRVNMJPGE^UILFCD[e{n]JJHO]jQ`GHIJPKHIGFFmyMkLLORMGHGILMRTMKMNPJNYISNJGLXlvtSIHHR^YSOGGIMTJJEDCDEo}|[QYNKIHFQFIORSQNPKLMOSCCMMWcdiWQQSYXUNLLJRLRZDCCBDjmq}왔r`mOHGGHKQEHMLUNLKKLNVMQLMX^_^aEPQSWWULMLOJK]\ICCDEGik}xIGGJLIHIG@ROKJKKNLILDKI[^^XRACNW[r^]NJEIUZ^ECCDFXkKPXQLKGB?XMKJKKXNNQIFJR^[`ZKGJrmg_XUB@FN^_aH@CFD\t_R\NTPLADMOJKIRRORKFDDSTWXWTF[ppdU^ZLIQYY\_EBEFFDu{|kQUUSOLLMJLQSPNYWPKGEFQWbUYPcxg^ULTKPSTYY`GDEFFL^rxRQILLAQ[YLOFGYWLNLIGL`ibd^\ipcNNIMVWVYT^LGFFGEJ||sx{MLHJV`PMGIIRTMMLIDF`linh^[_XXTIOWVWSQ^OGGCBBJssopncjAZJKHJJLHUOQLHBCXgqond`faQNOUTVVLOMUGIFBBCBepjow_]UMNPJLRRTYIKGcZdijppo]XUSTTUUNYYJKIDBCCMlnpu]WSIORUXSJOMIFWY\jjuwonaPPNMTUMRWT^fVGGEEFH[nnkNPILADNPQRKKHGNZb`ij~rpTRLKORNTSUpofEHGFFLNe{kyUYNHCICPPMJMKHOVVTWcvuRXNDINUQXUXrpFHGHGHJJrlnnmwknQOMFGNOOQPEEGJR^`ivlSQJDMGUMWcy[OFGFFGHHaiklxqwsnsoKJSSMYlm]LKFEEL^ZOOJGLTZch\jSODEEJT^XZRvv\WNGGJjkhU]W`URNNLNNDhjdc`RFJX]ZSKIGHZZbhfh\XECFLMV]qFa`ZZYYEAAFGII`YTRSSRSRPMNMMYbcb_YKStPbPHLMKK\Vac\bQHDFEJWe]n\[VWXRC@AAEGIt\ZVSSUQNOOYghiacYSePbe`\EILKPT`XTQIFFEHOnl_\XSRUYULCCFEDIHMYY[_TZTXXUTVV]faruf[`aWjZZeaZEKJJK[aVOGJK@CUqpmKRPNRWYZBCGEFIPXU[Yb`UU\\VVZ^`b`uyywoqmebWFGIHJS`nfNMLJJ[ppxZOPNPOX\JDFHGPRPMQ^b^Z[``^_`^^_`v{jsmgfdZFGHKVcigWPMLNTnpw_UUMQTS\TGLHIILOQ\eX_X^^`a_\]eZ|okohddf\OKUYYf`NKGIUYr}rlOPPY]`UIIHHNLKRcc]XYZ]Y]^^am\wkegc_cbXMRXXf_JFFIW`gyzpilfkOIIJMSSagacl\TRU]]Ya[b~up__g][SNSdfYMGFNSm`wv~kcJIKNXY_hesv`VY]`YVZ^i{~tehXRNN`cWFHHOX]^vpuvfof^JILR\]\ejohdb]^]XRWUb~~|sXSRNMT]SHLJNS`wxnosorbVUnneWVPVLNRb]gfghfje`cZVW\YŪIJZSQLMOTSTJLKU^{vsppn^PONKLVXWVKUHGThkfggjkeje`]]cķ|}dTKRMPUVJNNV~o|lVOPSQUVXhp^QJTZlshhifadcfcf`f}w\bRNNPTUYSKQRxVOLLVWXWfqcXMP]ivvjgh_aa`abcjy~^^h_RLVPXYTQOm[NJKQTYZ[qmXMNNZemklkgcacb`ctzyZ\tm]RSRPKKNQztUOKQKUTTonfLNMS_rpjjib_aablęjh^\QQPMNLLoLPPINSTZmroZLLOkiuyqlkgcaincôÁzuh]VRKOONNOk|xxcYOPOPPVaptiLMMacn{wtnwbalnfȿžfNPOVMQXVpphRVPGMMQSYgiXKIJW^orzfaefhcû~¦mRUTOMOlp]PQQOMKRVVegifMSRTjkzilfa[ec}vxÿ~bOONQj^SPQPQLQMOU]dikoPSSUWbpp|~la__aŵsnvzÿ}q_QPQPTxMLPPVNMRSUZ^bhnskaUV[Xhlqkhg_a^ĘxzĽy[QSQNOUQHOQPPUUYXYadiotzySXYZ^ik|{i^^_ï½kcbUPRS|GNQT\YYWZ\\nnmtyvW[^WV_muqqe`^¿|_YQRQ}[Oet`ZaXVZ^gknmptiZQVQcoomrnja¾jlkdQ_~ywgaUZUVammnqevcPPT^djnsoqk̺sjmiWX\x^VVWSSW`ZahmlaPQP_cipphj̺z}sl^ZOYy™bZURSSRUVWZbbcPRPVcpjjifgä{ytq^ehksi`UXWUUYkkrtaWJU_hjjkggÙ͹w|ĴhXOU|jqvcq|u]QTPbjjhgɧ~Īt^[~sv{}wrJ^Xbfc_ff|ʴÿzpfhk~zuz}gSZV[\bakosˤ}órkaWTuur}qhX_Z`^lgyr̿}ƲypqbPSSux{aYW]gmmŨ¥prtnsOSdx}xc\V^\|zw{{vrtyrV[Zsl^Zfps]nmu|{_[[_tl»}vxyuukbcWR`f_\[\dPKW[_w]XZb\Xc~ɽrtz|wkngbUL[e^^XUWQLRZ^|k\YUQVT`QORzv[NCC?<FU_onoov{mNNKKI@@BDHHGGQWY}RE=BBCVaZuQGIGCA@>>SYVVZM@DNYVRTU=@KOWelmtv~wfDKKDFDEHHGFFHOxy~_NAAhsK?FEFCBB@;=Q[X[[RBBETW[QJ>DDPUwol{wy~hdIIJKGFIHHIHIFJF[^fkD>pa`BGFECABCCDJYdY]X@BIG[UQG@@FMqrwxqkJQMLIJIIFFGFFEOFEOoQRbkaFFIKDB@BCBFS`a`a]D=GYdcFDDHHKzkhx}ustl`QSJHH!DGGFKHMKKHIMVJpMINQABAABAFJJS^TUTA@CkglVGDGHHGRQ\`ut|zzb^SKNGHFFDC@KGIKKSYKFFIKFEE@CABGJJSUVUD@?Bg{ooTFHHFFDBBCe~{{w~cIBNHFFEBBDBGKJQKTGGEBGIGQCD>@IHS\\TGABHdwk`PDGDCEDEBBKuzC@JKDEDB@A@GJONMRHGDIA?XNDGA>?PXmdTDFDIUbJZ@ACCIFDD@>>ctjyEbFDHKFA@@CFHORGEGHJDHSCNIEBGPajhKDDLVQMJABBGMEFB?@>=ann~xuSIRGDBAAJ?CKPSKHJEFGIN>>HHOYZ_OKJJKQPOIFFCKFLUB@?>>^`bmfWcIB@@ADK@CJJOGGEFEFIQHLGHPTTXMJFFIGDG?FCRSRMI9>LsbCHPIEEB?Agc^WPN;:@HWY[C9;>AHIEFDMMJMFA?>IJKLMK=Ree[NVTFCKSSVY=9==>?FWiskry}IHADF@KVTGJABTRGIGC@DU^WZSP^eZIHEISTSSNUB>?@@B@Csqfl|pEDCHQ[KHBDDMOHHGC=?V`_d]SPTOROEKTTUPLXI@AB@?=Ckicc`|Zb@UEFCEEGCPJLGC;;M\fdcXU\ZKILSRTTSFIFMADA><=:Yb\ahYXPHIKEGMMOTCE@YOX]_eeTQOLRRSSQISRCDC?==;=>@Paa_zHKDG??>=CEZo]jtOSIC>E>KKHEHE@ELJINYklKRI@EKQNQMOec=??>?A@xe]__^x{iwfiLJGAAIJJLL?<=?GSV^kbMKE?IBPIOZovSG?>>=>>UyZ\]icjebgdFFMNISffVFE@??GYUJJA>BJPY^P_LJ@@AEOSMNIjkUQH??=>>=@[\^MTQXOMIIHH?`b\\YK>CQXUNED@@PQX[Z\RPA@BFFMSf=XXTSTS=;;>=?@XQNMNNONKHHGHOXZZVPCLmK]KCGHGHTLVWQXKE@AAEOZSeVURSTM?;<=@BAlUSPNNOLIJJS]^_WYPJ]J]`ZV@EJHIKUMJHC?A@BHfcTUQOORUPH?>A@@B@EQSTWNTORRONPPW_[gk\OVXNaST`[U@HGGFEQWKF@BC8?CAACHPMSQYVNOUUOQTWY\Zjopngjg_[QBDGFFKVc[EEDCAAQeflPGJJKHOVE@ACBJKHDHUXTQSYZYYZVWWXjzsclg`_]SBCEGNW]\MIEDCIcekuULMEJKIQLAFBCDCDFHS\OVOXXZ[XUU]Qrshcha]]^VJGPPNZUGD?AJMfx|uqgaHGGNQULBCBBHDCIZZTOQSVSWWVXdSnd^_ZW[\RILONZUD@>@LT[llc{|qz]^Z_HCBDGJJY^XZcTMLOWVQXRYumhVW_WVOJLYZQFA?FIaTjwg{q_WDBDGQPV_\jmWORWZRMRU`uzvvrtk]aQKHIVYOABBHOQRsgaghxzXaYRCBFJTT\af_[ZUXVPIOLYyuwutsiOJJIFLULBFDHLTjh^_dadTJIa`VKHGNEEIYT^]^_]`]X[RNOSPwux~xPJHEGINMODFENSlgc``_SEDDACHJJEM?>K_b]^^_ac]a\WTTZnouvvZKDLHKPQEHHQu{quocsbKDEJIHHK]eTHAKQcj__`^X[Z]Z]W]olQXIGHINPTNFKLvzv|oLDACMMLZfXODGT`mma^_VXXWXYZaqonrST^UKEPJSTOKJcvrRC@BIMQQfbODEEQ\dbca\ZXZYXZktkolOQibULMLJFEHJns~hJDCIDNNe]CEDJUifa``XVWYXZcr]]TUJKJHIFDc@EGBINNRcifQCCFb_koga`]YYaf[oig[RNJDIIHFE\xljjXNEJKLJNZgk`CDCWYdrmidmYYdg^yzq~ZEHIPFGKIt`b[GKHBHHLMR^`OB?@MTegyzo\Y\]a[vozcJQOIDD_saRGHHIHHFMOP\^`]DIIJ`ao^b^YS]ZolntrZJKJFFx]RLIIJJGMGJNT\`bfGIIKMWeeqrcYXVXfensphWLIJGHktDFJKKIHMNOTVY_ekbXLLPM\aea__WXTnrmSKMJCCGzIAIKKQPURSY\`fkrqJMNNQ^`rq`TTU{}bXXLDFE|oAIKNVTUSUUedkqnNQRLJSclhh\VTxtoVNFGEqäQHYfVR[SPSV_bedgk_QGKGXeechd`Wt[]]WFU񤡗rmhk[VOTOOXddgZlXFFKTZ`diegayd\_\MQU}ynniQJNQMMNWPX\b`VHHGVZ_ff_atlpze^SOHRpsspTMMKKHKKMOUVWHJINYfaa]^n}tlwmgdV]`a{vtc[TMONKKN^^sdgXOBMU^abc^^~rgol~x^PHLxwm]djZeo{wjUIKGYaab__qzyunxjVRpeinoiuvgBTOY][W^_mq~|ppzpg^_`{plgkqvp\JQMRSZYcvaesmvgbXNJjtecmq{f^PWRWVd_jdvmtlegXGII{rehqxxzq[RQV_fextyggiejFJZkّwwnuwqhz]XPWUsqgkvolgimgMRtPf`RNZsdhP__ezxlks}{YUTUjavlo|shtnnjh_XYMGVZSQORZFANRTlyTQSYQLWnqegkrql~^c\YMDQ[TTNLMICIRUzzq{pt{^QOMIKHUORRSVUYTZTWY[TOILOTYXTVYV\]acggfhnZWONKIIKVSRXV`[UQILTQYUTSUVW[\ffihvumUPKKFGOUVXVORXVTWSRPRVMPTU`[\eghhjhk}佻vTSLLMJIGGLQXROSXUUTSPRSSNS]je_aeiffirwuRUILK^MJIEJJHNYRUSTVSWTQPOWSTVjj_ebede`_\ntsp|fMMJKzGJNJGJHNPOTPSUZQVWWSSWfe_]aYZZUd`lijxu{~|pkLGIKIfNOIIGGRPRDFJaSQUVVZ`YZ\VSWVU\V]gljlnu~rvlWTONHJ|}x^HHGHMPMGGHJOUSVXX[Y^VOUTVVRSROR_aYbwulrx|uurff'_ZUPMMISWtnseZILNLJIJIHSRRUY[ae\[ZTQPUVUPQNMOQXYW\b[nqgs^_cacc^[SSRNIOV[SY~vbOLOIGGJLOTUW\aefeaUWYTUMLOONPPSQTQ[af`__]b``e[YVU\RMHNYY^a[aWodTJIILGMNOTVYbfeebb^\\QQOPOPPONNMPV[__^`X`bbc^YSQWRVTI[Z``]aWYqs~MFGMSPSVZaVdc\eVUWVSNONQR^TNMU\U^\^^W^efgbWSPRQWTOOZRc_^[YjwdlAA[PPUZY]TZUZc_TUU^Qchy|rRU^^\`_`ZW[eiiSVSRJKQJQPQSXb^_^`b^^ka_^YW\\V^f^bXTTZv|xtl]^^`ghgWYY\kl[LJIIUOMPNX^^X_]_^_sg]XXY[WQZYRRWctzonb\]__da^VZ]~cPJIIKKJKVQNNOXUddb^``gkkeXZZXUQURTS^{sz{||{pql_ZZ]PKLOLKJOPPOSVTSYda_^cfckuxYXYVTUZSUSnqkuwpme[[VXhoOKNNJORKMOSWSSTV[da_adnlox~X^UT_^nu~xuikn||apo_\\[ceJLLJNW\KLUZTXUVW_[ZZ[ehlqvqt{|lumzm}jjd[]]uJKJDGQOYgYXWWVZVW\YZZ\fmnoxrw}{~qxg^[YX\[ZwxFEFBRKJP\\UUY\]Z[`Yhaqpszyl_[_VW[U_GE?CJNO[ĝoXY]]\`^]dggmqqw~o[XXTXcizv[IGDDEM\¾t]\\_^]lj_gaqz||tdXYYT_qVIGEDDLVvb[^]`eiginpvlyuk_WVNQp}GFFDFFLTT\}z__efimmkjlkxrzutnYVRMMydFFEFFGGJPPQUn{}fhkhqjleo}pwytwuvRRWXOLJGHGGIOQPQRJETa{ʶintpnclpwnxwuxyutvYURh^[SSHIIOcVOQRKIIQWУiemqrtvxzsURVS_nceXVZ]\IFIJJ^XTQULKIIJOHClgmonkzn|~umTUWX_WKRZZa]LHILKdedVXWVRNYTMMLwvikil^op}mbmlvXOX]WZYXZ\NIKMO^`e^igdbb]]NMNMNmlwjjld\tzilvzu`]]R[_c``[WYUIKJO_g_cbdeca``RMMLPOMOTjlghdhmib_^][[]_aZZYXVOFDHHijqqlbjm\_`f]YPOKKMPalljgjkt`^[^]_^Z\]\cUSV[IPGAPnxswpqmlc^_]aYPMLMMUjkmp{}wpilp\Y\[\abj`^^_[]T\QLJNR~xrl_YWY^]YMMPLVjqrxsbdzf}mT\ZWYadlc\]`_`XMQLRPMi}stge]X\][[_ONKMOQppqzuvt|s_[Zama`eghaY\_`WZ\PPLRMNvpqofe`ba]dfa\RORNMLRnyxuxi\`YZZmmknc_]\fYQTQTLKKLM`lgfhgfbgfcdaaddfdYNOJGGy}unnu~{|wo{[\][agommspha^\YgPSPQPKIHIpoihghgfdcbflykklddZQOIEKVassmnlpkklaj]]_`iind\bcbb^]]qVXbULIJIpv{ghggkhmsgtueb]]PKEHL[mmyosxfkllx[_]`gkofa_bcb^\W\Vf_XXJIHH|hihfiltuztsidd\IINQXboomeklkm{i^fehZ`mqZ\fh[XZ`[Y]`UQGG{hkhhjs}qgqjddbUTS[d]fugkklvndglicayrcgZYY^XghhbRPIKMthffiiklpcca_`b^Q\[bylpnptreciigau{pp][[Z[mx}]OLKIKlkukgdfknkssmjdabac_U[OXQ{yvoomhhjxuqso`^Z]^idQLMLKkmmnijlqv{tqqmb_`]\WYYPazxzvutvmpi{cmidX\^]aezfQPOQSloqtwqpnpurrqb^_Z\YXhoww{utpwwo~hdceb[[_nqlTTQOQRkorzyprpptzsne]YWW[v~uv|}jqtphputnqg`bZdr]vi~fPORQSUhltuzvs|ryIJnrj`dXZ`bx}s|yupsnsimjrutihba`qtjkcjgPGNOKYijstzxszw{zÎddmeejjsy{z}uzvrtvvjfijzllb^bdhcbfefiZVPGKJNijoy~}u~tit~sztuxt{{zrsrtwshieeokll^_\efgeYfk[YTJIIMiipwv}|vlhn{ĥyszrsww~icezgjdkjfdd\`lVb`lgkOLJKPkj~g~}~~~rtrvzzmfbouxqim]f[glgbdhpwXLJKQtqxwyů~{vhhwq|j~viqpwkicdejnnRKJNMr̠˷m}h`q{|{uodeccok\XMLMNs}dzzsrre`~}z~pjfgbe`UOLLMMvƯw~ukpcscx}onolhf^YYTLKMNuu|}Ľhagr{smxqvnofafZXTSMLPPtvsyy¿vrillnx~rzx|mpkkhZ[UTMPOQxuvzy{~ѽºx{otoriosyuzpqqhadh]YVTUTsw{{|z{}lukvrjjkzjxwvyzhibgd\\WUZzty}{~|{rsihd_^dafhgjjngpvuwxl`hjkibWTX\rvvxttxhbhh^b`^\\cfmelniwwxzrogaqsjZYMLRgrrv}{xyy~nigjf_]Z[\i]`bmooumhhe~ۍohbqy`VWRMWhrss}kym{z~z}nl`dYY^gdfdwtqtmjigeyqpggpa[VTOTrJLMNQPSOTOSSVOICGHNSRMNQMSTX[`_^]\bt~RPKKHFFGRPNTQ[WQLDGOKTOMMKLNST_`_`_]hfuaNJFGGDELRSUSLOUSPRNNKMQFHKKWRT_aa``]_pv|kMMHFIGFDDINUOLPURRQOOKMMLFIUa\W[`c^\^gskiJODHHXHDEBFGEKVORPQSORPLKIOJKLaaW_\^\\WVRchuueuzbo[GJIKrBDIEDIFKMMQLNPTKPQOJJN]\WVYTSRNZVa^^lhmpp{zc^FBFIH]GHDDEOMP@BF[LJNONNMQWQRUQNQPNTMS]a`abjrztuxzqytdh^MLIIFHssnUBDDEIMJDCDEHNLOQOPRRQVQJPOPPJJIFIVWPYljbglor{ihfZZSOMJIJGLPjvej]TEFKHFFHEDNKLPRSX\TRSNLLQQOHHEDFIOQOTZTdg\hTUYWXWSQIKLIELPTINt~k}[IGKFECGIKOOQUY\]\XPRUOPFDFFEGGKJMKTZ]YYTYVW\POLLTKHDKTQUXPUKb\ODGFJDJJLOQRZ]\\Y\ZXXLJGGFFGJPTXYYRY[Z[UPKIOKQPFSRXWRUJMcfxuLEEIOKNQSXM[ZT_RQSQNEEHIUMGGOWPXWYXQW^``ZOJHJKRPKFQHYTSON]kr[fB@WKKMQQTKQMR]ZPQQNWHY^nrjLOYYXZYXSQS^bcLNLKDELDLGHINXTUTVYVV`yx~zYVUONSSMW_Y]RNNSmsoljbWYX[aa_PPTceSECCDDOECEDNUUOVWXWWfy}]TNOOPROISQKKP\vfmcc[VXXW\XUMPSst[ICCDFFEELGDDFPO\^\WXX[__ZOQQOLHLIKKV}mdlnoqr}hidWQQStIEGJGFEIFFKNNMS^[YX\]Z^kmuPOPLJMQJLJzcd^g}~ngd\RRLO]fHEIIEJLECFKPLLNOU^[YZ\caen}tOULJUTdjtol``bonzVfeVTTQXw]EGGFIRWECMSMRPPQYTQQS]afhlfin}p`irsyal~v_uq``\RUU lzEFFBCLIR^RPQPQTPQUQRQS^efgmgk||omwqu~cj[TROOTRQmnCBD@OFDJVVPPSUVRRWP_Yhghnsz{j{t_WQVNNQMUCC=AFIJUiSRVVSWUT[^^ceeissptdSQPMPZ_ojQFECBABGUlUUSVTTdbV^Xgnomyzuq}zwxiZQQRNWhsOFECAAFOlYRUTV\b_adfka~sxvprmv{ytnkaVPOHJetvrCCBFNKQoyunVU\aceeb`a`leuw|s{vvu~oihdNNKGGlu[BBCBBEHHIItLcqr}\bd`h`b[dqdww~x~qrrinxxhkijHINrwPIFEBBDHJKLMC>MZpzafjgdYbfkavzijimylihkNKH\VULMCCDK\PILNECDDKP—wv_[cghijkqxxzvtnhzuIGKITbXZPNRWVD@EEXSOLQFEDCEID@dx]cedbpcuuz~~purhaIJMOVNCJRR[WFBDFF\_^QRQQMHSOIHHonbya_bTdexqaVbcwfOGOWPRQPSUIEGHIWY^Xba^\\WWIIHedoaacZQio^`lo}}eQPQRKUY\YYTPSPEGDJW`X^\^_][ZZMIHGKIFHMab]^Zxt]cy~z]TQQSQTXZZRRQQNJBACA`bihcZceXY[aYTLJEEHWcb`]su`bjWTTRQUVTVWU[MKNUDLCDMWijcdceaacZdXXY_]]bZSYZYZVUUiNPZMFEFEflq^^_^acaei]yjl\YTTHE@BESdcqein\abdqWZWY]`c[WVYZYUTOTN^VPPDDCD}r__`_bdlmquxkj`[[TEDIKQZgfc[abbdubX_]]MSafQS]_SPRXSPUXMJBCDq^b``acjyth_hb[[]QPOU^W_m||\`bcoh]`d_XVn}hY]RQPWP^_`ZLJDFH~vj^\]`a`xcdh[[ZY\^ZKWU[nyaecflxi]Z__]VwkrggSRSQRdotVIGFCEbaka]Z\bdbykled^[ZZ\ZNVIPJv{~|ztqpvldeb^^`nkgheVUQTT_vu]NGIFEaccd_`bglpwnkjf[XYURONRJX{yonpljjkcf_qYc_ZNRTSW[yq^MMLLbegjmgfdfjhwljZWWPRNM]dky{zwmqkifmmet^ZY[XQQUdgxbPONKLLaehpofhffjoje\TOMMRksi~~lqvs`gjf^fkjdg]VXPZhSl_t]IINMOO^bjkplirhp|{eh`W[ORXZnsvqir}okfhdh_c`hkk_^XXWhk_aY`_JBJKFQ_`ijpni}qnrq[[d^^cbimnorlolhjlk`\_`pbbYUZ]_[X\[[_RPKCEDH_`eotsktk`jt}irmn|ninnmyyhihjlh^_[[eaccUWS^]][O\bSRODDCH__fmlsrlc_eqwu|vmgnuzgimmt_X[p]`Zba]Z[SXbLXVb^dJGEFJa`vu|u^yropvqqfx|jhlppb[Xwekng^cS\Q]b]XZ^gpSGEFKjgwvwkjkp~qly]]lfup_rl_gwfla_YZ[`gfMFEHHh~|yucs]UfoomhvdZZYYfdUSHGGIisxz|r{rxvoihgZUrpmqc_\]X\XOJGGHHlw|z°ykxvskbfYiXknbaba]\UQSOGFGIkkrsz\U\gouicmgwhabZW\QPONHGKKjlinov{ki_aaenshonum`c`a_PSPOHKJLnklnnqxkqekfi`fioindzyxeg^W[`WSPOPOimppnmnpxzv~`h`kibabbpanjil|o^^Y^\VUQOTpknqororv~vwlcd^^YTUZX]`_aaf]ejiiouvbV^abaYOLRVilktrkq~wzy|eejvvy]X__SYWUTU[^e\bc^ljjkudd\Wgi`QPDBI_ihkqolww{uunnwrxsd`^a]VUQTUaUVWcdcic_^[Wo}b]XgoWNNIDN_iixq`tvxvwxocpqtrvgdX\QQRW`\]Zlheica`\Ylxdc\]fXQMKFJiCFFGKJMIMHKMPIC=ACIMLHIKHKLPRVUUSSYjyҚqKIBB@??@KIGMKUPKF>AIENJIGGHGKKUUWVT_^u{hWHD=>@<=EKLNLEHNLJLHHEGKBDGGPJKUWWVWTVgmq后y`FGB=A?>==BGNHEINKKJIHEGGBFPYUNQUYTSV^ia`uz}ztCG>BBM@=>;@A@FPHKJJLHKJFEDKFGI[ZOUSTSSMLHZ_ll\lpw{ZdRACBCf>ADC@DAEGFJFHJNFJKJFFJWUQPQNKLEQMXUUc_cfdonZV??BHFJKJKMMLPKDKIKKCBA?BLMFN`^W^adgn]\ZRSUPLHDBC@FLcn^cWOB@D@=?A?>HFFJLNSWNMMHFFKLIAB?>@AFHFKQL]^T_MMQPRQOMEFFC?ENRBHjsbusU?=B?>=ACDIIKPTWXWSIJLHJ@>BB@ABEDEDMSVQPOLQOPVKJHHOEA>DSNRTJPEZPD:@>D>DDEJKMTXWWTTONNCCACBBCBDINQPOPHQTTUNJFDJEKJ@ROTUNQDH[~[mkE>?DIDHKMSHVUNVGFHGE@BACDNHCBHNJPLONGOVXXTGECDFLJDDOFWPNJIVcuiQx^;;QEDGKLPFLGKUPEFFDMBSWef`GGNNMPNNIGKV[\CFEE?AG@GEEGKUPQOQTPPYoqutqTONIINNGOWORHBCHbsifc_XLNMPUVUGHHL[^I==>?@@JCADBKPQJQQRQQ_rs}ULHJJKMGBIH@ADPwul\eZ[OKMLKQNMGJMghPC>??BBAAJEBBCJIWXVQRQTVTRIKLLKE@C@BAKzwqcZdgghgq^^ZNJKKMhruAABFCBAEDDHIHFLXUSRTTOU_amKJKFDDIACAo{sXYT\y}utd^[UMLHJU|[@?EFAFH@BDHLGFGINWSPQRZXW`qtlJOFDLL[ajfaUTWcd}{qM_^QOPMRkT>ABCFNR@AKOHNJIJQKHHISVY\_XZ`rzp{veX`iinyvVaskUjzhZYVMOPQcn?AC??HENZOLMLKNGIKGHHJT[YZ`Z]nocbmg{hstZ_QLKJLONMcyt}~c??@=KB@ERRKILLHINGVO^][aesy}~xntp{\oj{VPIPIKNHPuvr|tq?@;>CEEP|cNJMLKNLKRUUZZY\wr}xacdguz\MKJHKUYf{s}v]HAB@?>>COcNMKMKK[YMUO^cbam}njezvyxxnunln`RKLLHQ`kuz{~FBB??AJbQJLKMSYWX[]aWshmkegbkom~uhb`XNJICE]jlu{wi@@??BIFLh|okeMMSWY[[YWXVaZjlrhpkjistwpb_^ZFFEBCcjxT=>??>??@BBCCiDYguitTXYU]WXRZfXlmtnsgff[_hwsj\`_`?@GitkHBA@??@>BEEG<7FQgpW[_]ZOX[aVkxpxwy\\]pj_]]_FB?S~xLKFF>BBAFWJBEF=<BBAQLHEI>=;;A=9[nTX[YWdXjiossqpbgtsh`YACFyuFME8?GGQNA@AB@UWWJJGGC>KGBAAgf[q[WYKZZxmtszu}wvyhYNZYkwvzZG?GMEHFEILDADCDOPUOYWTRSOOBBC^]h\[[SI^|fUXbervooZIHIJBKPPNMHEJIAD@DNWOSQSURQQSFBBAECAAF[[VUO|zmjTXioowmSLIIJHJNPOGGFFED?>?=WX`_ZPZ\MPSYRNED??CR[[VRj}|kzwtTV`svyqLJIJILMJKLJPB@CL>H@9C\e`c\][[RORPTKD@@A@?EYYZ[qrz}hbe}x`ZRVt[KHIIKOQXOLKLHJAMDDFHljlwd_ZPKIKPNKAA@AB>GY^_lzvuqk`wv[LNdTh[DLKHIPSZQJKMLMD=EFJGBUiv|p`aVUNJMMLLOB@>?AC_^_mqkrrb]sp_^xjbNJKR\RQUWWOGJLMDGIDFDIDBb\p}_^UUPQQMSUPLDAD??>D]gdkon_kcpUFsOIJJ[\]Y[^QMKISF>A>C@CCMYTTUUPVUQROORSUTI@A=<;;il^WV_hfhc[gzJKLKPU\[Zc_VOLJFT=@=?C@A??]\VVUSQPSYeXX[STKCB=:@JO\\UVW[WWYOXLLMOWUUZQJPQPPLKJ^CFRHCBB@]chUUWYVZ_Stn`bUTNPD?;=@KUUbW]dRWXYeKNLOTW[RNMPQPLJDICSLGJCA@@tiUVWUXYabfimaaYUVVP??CDJPXXsXQVXXYjWMUSTEKY]HJTUIGGMHEJOHF@>?}hUYVVWW_u~lh_Ua[VVKJHNUOVapqRVVYd]SVZVOMfu_PTHFFLETUVQGEABDzulaUSSVVju|YZ_TSRPSXTDOMRdtmUZX[an`SQVVTMobi^^JHHGHZdiNDCD@BYXbXTPRXZWl``[ZTQQPBLDJDkpqomifdld\\ZUUWeb^_\MKGJJUlkUIDGCAXZZUVX\`cjb^_[QNNHECCKCPqsrrlcbyfdcbcZ]VhPZVQDIJIMQogVIHHIHY\^ad]\Z\_^zk`^PMNFFBBT\bopsmktdhca^dd\kUQPRNGGKZ]nXJIIGIHW\_fe\^\\_cr\ZSKEBBIelbutsr^diiV^b]V]ba[^TMOGQ_IbUjSBCIILLTY`afb_g]eom|Y^XNQDHPRhlng]epea\_\`VZW^baWVPON_aUWOVUA;FHCNTV_agd_rebfct|vSSZSRZY`ee^g`c`\`ccWSUWfYYPLQTVRNRQQUHGD@CBFUV\ejhah^R^emqz_e^andaeedno]]\`d`UVQQ[XYZLNJUTSQERXIHFBBADUU[cahh_ROVbgexlvvkc]ekp[]abjVPSfSVPXWSPQINYBNLXTZECBCFWVkkqr{ordNkb__e}hh]nq_\`eh\SPn[ad\UYIRHSXTNPT]hLDBCG`]mkk|{nz[ZZgvxse`oUWd^mhThbT[lZbVUOPQV]^FCCED_urqsuzso~ujXhVN_gge_tzxxkYOPOO[YMLDDE_imoszw}ѭrhpgmkd^_`SNjhe|zfYURSNRMEFDDCclpnzuǢn`lkg_V^QaQccXVXWSRJFIHCCDDa`fgnuћPIP[ci^Xe_m]VWPMRGFFGDDGFaa^bckxn|`\SUUXbg\efmy茍bUZVWUFIFHCHFGea`ddh{m`fZ_Z\SZ\b\c[ohlY]TMQVNLLKNI_bffecdfnvplrV]U`]WVUVcS`[Z^sqqdTTOTTOQNMOf`eheifimtlmaXYs{wwsSUPKKPMRUTWVYPW[[`fskWLTVYXRJIMQ^b`jibhtnporZZ_kkmRMUUIPNKIJQU[RWUQ\Z[\sgWsYRM]_VIJ@?EX_^ahfcnnrkjbatlgmhYTSWTMKHIJWKMMWWVZURQPLcwpWSN]eNHHE?IW^^_nhVjlnklmcWefigk]YOSJIHHMVRTP`\X\VTRPM`ukXWRS]NJGFCF`THIJKOKQV]_UVTazuz_ou`˶|~v{{yn|vpqr~{|MIHJONHS[[STbz|dirnmp|ª}zrv{~|s{|~{snoq{yKLJJNLHIXXHTSTWvmlp{vqwtsr}yvzywswyt}{{qq|LKNKMKKOMCIIFJUijjyw~|yϪxssyx}slmlpswyyuqoqq{wwKLPSMLNIHFCEEFNMemgeV_}lƈus{t|qgklmqvtv{vwxqhjnqposq~uKKSQKGNEECDBDGBDHUQKHGIZPO_Ƭxv}|yuvjpxuuyz{wyyxhnpoppqskDJY^TJFFDCCBDEDDEFJGFGGITV]txz|zvpstyysw|xyytfgiiqq{MLXbNHJHGDDEDDEFGGHJEEFGQPZ_fɹ}~zs|}xtz~}zxyy{k{ml|JOLXNKIHGGEMEDEGFHIIGEEGMQKWQã{|{|}~zyx}{mpvzBNFJLMLKLLUZTMHFGGJIIEDDOLRRPOPVT̻{y~~~|ryqlonJNOQPNZKXW^\flGJGIKIQ^Qp{}tjMOPOTg³ƥµ~vx}}z{xnn~}romnvoPPRURTTOZ`tstpqc\VST[ckv|zwNNOPNKMðxzzxvy|zvowrs{mpngILOO_]ZZUSjmtksxgYVagfir~`PNMOLMNNŜz{{uv|{pqxsutnljkOQR]\^]d\RRc\mq}gZYggnnbOq|wdUfUOM]Ulj~uoxw|uu}ssqpn~PTSUZ^WWULMLK[jvc]eowSLLKbyx{uwxnmme{ppk|wspnppq~VUPZTYYXTRKIKOMNtyfgpsGLLKMx}{yvq{vljkgxsojojjhqrmqryQSPR[XZ[VQIHJLLc^|fkjm]LLH}zzqrvyqmgaktts|zqnxswvxfPPOQUXXULIJJLOQqqrotmPLLMPr{}y}}skjggqwrytkmuu}{v]URTTVT\iUIIKQTVjokRHLLMNOUavpllpmljigfȡy~toqtw}sZTWWRTW`gZJHHSX\ZRIHHKMMPQUjg~rjkluldkplpummotroxut^TSWW\`UgTIFFEIOQKMIGGLLMSNMMKVTRiZru}znnqs|}z~W]TVPQUXHJGEDEEJJGMJJGKLONNMLLILMRQWtz||z~~{znsrtu|R^\`lXJDEJEEDFHJHMJIJKIPKLKLLGJNNQXxwwwz}{yynrtvYYNYODFGFHGEEDHJKJJOIMKHHKIMLJJMVRQ`po}wxrt}uyxy{spxtTRRLFEGGHEEGJIJJIOLJKIIHIIKMRUXY_`m{}smgmtxwz{w}pxNQHGEFFEFGFFHKILJMMLKKJJIHQTVYSloc}WNWYf}u~vpvFDCGCEEDEFIHNOMMULMLLHJIJKJIRVUWnrp}\LJIKP]x{no}~IADLCCEHJEPYYa[WSMMLLKJIJKKPVV`z{yq\JIKMMlw|}{z{}JHELOQLPZ]|iWSONLMKLIGILKKMQV_vzzswtRMOQRvo~x|}QUSWSSVW`giVYKNMNMLLJEGJMLMLLetm}iegSNUSytq~~~yQU^\bediRW{OJKMMLNOMLLNLOOMLLT|}dc_QQPsuz~zy|}|~yvvxOP_pebSPGFBJGJHJKMMNRUV__SQOKKeqtildWSsp}|}|{vyItymlTLIFDEHIIKLKKMRUWZyuxklk|iaVVrw}~tfxxTz{rOMIIHFCHIIKJIJNRZy|onnxodai[^ibeg}qmj}wpjntuV`eWQNIJIHEGFHGFFJGIIZŔonyq_\fQVTQUPaufbf|xshdwtofdgklQP]YOMLJJHIHJGGFGGFMjĽzsjokXSPVQSUTUTNLV_ekt|xmsxqysyrRfcZOMLKIIHGClEFOJFPOOhžiWUMNPNNPUSSTRNMPXgrr~iio{PfmwPKKJKKNWUSPPQR``ŶqQNMNNMJbdYPTTSMRLO_u~~rw}VgjjmRLJMP_cQPQTa`fƻYONNMPPOVjSQT\_dTPQPUrz}z~TYh}vbZbslupXP]eojĽfPNONOOQY[]QW]g\WRRQThvjo{~yRblrlQRUox¼ƱtaOOyPhs_`sne_WRVXU`XbqossyvoKQbo{geddtľöaPNMPO`gv~|og\[\ZU^UUTd~tytsMTUlomr{lzžñwyyNMNNRzyskg]cYZVVXTWrxytTbnp{ytwlmy|RMMP{v}rd]cXXZX_^Yklf|y{}V]hls~dWR\w{myy}[WO`twkY[ae`Y_hccsu[cihmmNMMNSOURXeVUkefgfkep}kn~[ijeeYThaccekvUVfdowTMLMMqpSMLRRQxhTTa^nfhfvxzzoywkknzm]`f`bifiuyUV]_woRMKHJ\NLNKJLKNOigQQSRU\sswyrmklizmgdj^cZ_dybY^flfUOKHQcPLLKKMNKhQNNPUV{uoro~eVp_ebU^ZTV^gnjhZSRisTMJIHKKLMNUryPKNPVsusyhc`xy{ro[X_SYcc``^Z[[sXLKIHKLKLMNQRtNwMMLMU|xb_\]]{y|caXXWcb_c^\Z^f_LKJILLJIRQOMLNSkUURjtpc\\P_]k{zrbY\Te^_]a]b^yzILKFNMIHJOUMNNUae`Z^wsoghd^_\e~zkagSa_\_adexw~igeNJFG`_cohndriabWoug``]YjyqqM^^_bc]qwr}]cLRWgyzk}i½gjqm`[\\xz}QURPO[S\gqŕsmZW^d~{Ńpt{xd]^jyPTNOLNKMQes`gkix|x¼zcbmßf]_z|RPONLJJ,L^hķ|jbt{tbbt¿\tVTPMLKJKLWY[bTjzxuitŴvxegjt}}ZVRLJKLJNORQSSQ|\~{YKTRx¼ckkvlfeWUQLIKLLOPPQSRQSZwhROOPaicegak{vgbWXRMKMNOPORQSPOYs^PRP\~afbaegcpxjji`ZU_lUWXSQSRRQRXiW\e`{jbb`hgbhy`nhmdc_^_ric`\\TTSRQORysujnjfevwh`bVzmiuvMCDDFIFMRUWLMKWplqUchSrozwrjnnpxmas}}mrvurhbderuvxpooHDCDHGBMVVUJIHWqsZ_fa`cotnl|gko~wrpgop}pzymeabdnttwv{kIIDDGEBDSSBLJIMlcbeniftl}qedcqnjnlkfknhpum}yumddoq|sv}IGIDFEEIH>CA=@J_a`plszsowhcekzlqf_`_cfukllitzsdbddnjh{z|IILMEEHDDA@@<=DD[d^\PWyvtcxfenhneZ^_aejhkojklwd[^beccfcyphJINLDAH@A?@>>@<=BMKEBABSIIWxihnnkgi^dlijxnnokllk[adbdbce]BHTWMC@@?@?>??>>?AEB@BABDMPTgjx{lwmmidhiowohlpklkfYZ^^feqKIS\GACA@@?@@?>@ACDF@BBCLKSVZwunqypiqsniprqmjkln`pcarGJHQFCB@@?@F@?@A@CEECCBBCILHOHuzrvsqrrtqmkjozocflpv?KADDBDLQLGB@AADDEBBKHNMIHHLHqotzwrrndlxfbedFJJIFQ@MNUS^cAD@BEEJTKgqrkbIFGFGYsmnryrnoj``qrhecdleKJLOILKFPXikmhgZRKHIPW`jpnnHFGGFDCEynoomimzwxomyjelhiqbed\DGHHWTQQLJbdlbim]MIV[Z]fq|vWIGEFDDFGvpqpginzzpegmv{ijica_^HIJTSUT\SII[Teis\ML[[bbWDepk\N]MGDUMa\qe_jz|~nslxksiifdbrvIKJLQUNNLCDDScwlYR[elICBAXomokmwodc`Xsj`a_s~~njfdfederNLGQKPPOKICBEJIIkp^_gj>CCBDnuqnnlgrnb_^[judb`d__\ghceemvHJGIROQRMHA@DFG\Ws]cbeVDDCC@ystnngimpid\V^z|~egtsgnofdmgljl^GGFHLOOMDABCGJJihjgmeHDDGh|nqnr{sja_[Ye~hdwpje[^hhr|ojULIKKMKT`M@BBEJLMbgcJ@CDEFFLYm~}fabebb_\[Yh~wxvnd_`ejrxtgQKNNILOX`RCBABBKOSRJAACEEGJOd_vh``h`X_d`e}qxzx|d^^_iifnjgWKJNMTZO`MBAA@CGIDFB@@DEFLHHENLI^Odxhq}}xm__egstnrPTLMGJORCEBA@A@DDAGEEDAEEIHHGHGDFGIHLinponrvnwwonagewhkypJUSWeQD?@DA@@ABDEBGEEFDKGHGHGCDHGEHNljkk}thjmjjjxadfgutwSQHRI?ABACBAC@DEEJEIGCDGEIHGFJQLHUcbqjlghpurfighxkdbjh{xzNLKFA@BBCC@ACFEFEDJHFGEEDEEHJNQTUZZcptqia[ahvvngfi|okiptemvIKCB@BAACCBBDGFHFIIHGGFFEDLPRTOegtsWqLCKOZxlseww{pojek~A?>B?@ABCDFEJKHIPHIHHDFEFGFEOQPSgjfrtPB@?BFS|rsphusuocdqrD?BEGDLUU]URKHIHHGFEFGGLQQZyqpnfQ@@CEDbsgloytnxrv{ooqsuED@GJKGKRV|ubPJGIHIGHDCEHGGIMQZnqohkiIDHJJwtg`q}trrtlpqKOMQMMPOW\cOQCEFGHGHFABFIHIHHG]kds^Z\KFNLp~tdbxurssuqqntJOVU[][]KOrJDEEFEGIIGGIGJJKGGOs|~rYYUIKJhh{lturljkksplkkznGHWh]YKHBB?ECEBDEFGJMOOYXNMHFGE^j|j^bZNJh{~ycpsujkjlsxkun@kpecKECAACEFEEFGFHNOOSo{kocc~q^VLLtdisu}qkonxj[n{oLqriGFCCDCBEGFFGFFGJLRnpccbvoeZV^QT^zUXYob^Zsmnie_djkMW[NGECDDCECECDDGEGEQcbmzzhTQ[FLKGKFXjYUXnwjcWRfca[Z^bbIGRMEEDEDFDCCEEFDI`lg`fbOHDKGHMJKKECMRX^hok\ag`jqh|nhK\XOEFDDCB=eABLHDJFF[]MLFGFECCEKJJHEDFN\ffrXX^qn{}J[`kFEFEEHOxQOJIJITRqfHEEGFC?V[PHJJjCICFTjsmafy}ypz|mN\^^cLGFGIWx]IIJKSSXOFEGEHGDKaKHJRV[KGGFKgyxiwmhmqNP]qm[V]mdgygOGPW`[[FEGHIIHORTIMT^SNHHGI^l|{Z_jniMXahdPPQhuijWFFHII_iVWkf\VNILMKVMWe_edihaEIYeqa_^]fx~WFEDIHVu_mvse\RQRPKTKKJXoemghFLMchejsaknonECDEGt{{qph`[RYNPLLNJNg{rj}{uokM[fhrqkmbaz~psvHCCE|{ojpeVQXNNQOWWSb`[qopsNVaeju\MHVnrepptzQMDVtx}yglaORX\XQYaZZjl}T\a`eeGFFDNLPKQ\NMbZ\]]a[wzw{}cp_btQ`a]]SOaYXZ\bl}NO_\foNGEFDg~hOKIMMJn_MLMWTd]^]kmolakj^^bt{y}rfWZ`XY_]`lpMOUVogKFEAATGHJIHIIJI_]KJLJKRjwjmjc`^_\o}xf`[`UZQUZnYPU^c_NHD@J[KGJHJIIJHGx^JHFGLL|ylfbeb}|u]MfU[YKTOHNU^ea_TLJ`jLDDCEIJJIIOgnJEGHL|uzfgfy|{~o^ZYooqhdQNUGRZZWWUSSTjuMCDCEHJJIIjKHhElGGEFLw{mjuXUSUTVqozrYWONQZYWYVTRU\yTCDCDIHJIHMIECBDIcLLJ]{w|ifZRTTWUbpogXPTM]UVUXVZUmm@CCAIHFFHJNCCDLX\XQQhqwgd]^[VXT\tpaY_LZXTWY\]mkp^_\HECEXVYd]b]iaXXJagruv_YYVQ`yoghHWWYZ[XflfsU[GMQ]nqbr^wY\dcXSQPq|nopLPNKJVLT[eieUPW[ttqttafnm}YQQ]nsuLOIJHJGGJZ|iY`c^zwosq|fkUU_YPQknMLKIGFGFGU\qxaXuwwhotwzgVVh}NdnxRPKIGFGFFNOQtWJ_nmvj_k|z}~~hl[\^gvllURMGEFHEHHJJLKJpT}yspNAJHlYa`k`Y[|x{RPLGDFGFHIIJMKKLTmz[GDEFV|~{^WZ]W`qk\ZQRLIFFGIIHKLLKIRkQEGFQr~~V[WU\^[gn^]aXSNWcONOKKMKLJJPbLRZUn_WWUa_Z`pUa[_vr{[ZWVWj`XVRSLLKJJHJphm`c{w_][ln_X[Npa\g{wxgF<=>@CBHMRTIJFPfbgM[_Kxerbsnlh_badkq^Sgqrafiif]X[\ijikb`bB==>BB=IRRQGFDQgiPU^YX[ef_]n\`cqhcaYbcqdrnmaZWY[ekjjho`AB>>A@>@OO=IGEHcWW[f`]ldsdVTUexc_b`|_Z^a\ehbqmyjb[[fitiltCAC?A@@ED:?>:=EVVUfdkqjemxXUV^m`{d\UWVZ[j`ab_jpwhZY[[e`_qppCCEGA@D@@=<=8:??PYTRFNpmjYhVWb\weZQUVW[`]aeabcoZRUY\ZY\Znd\DBGE?;9<=;<<:<<:;;==DGGX_lqdncc`Z^_e~me_cgbcb^PQTU]\fu~DBLVB;=<;;<=<;=>?@A<>?>>CEHMRqllfhme^ghd`fhhdacceVfYXh@CAK@=<:9:;A<;<==AA@?>>ABAIDjqvtgkhghijhdbafpeY\bdj8D;=>>;=EJFB><<=@AB@?>E?GEFDDHHywfdipmhiie[cn]X[Zy?CCEC@K9EGMLV]<>;=@ADOF_ghcYC?@@GWfabhnhedaWWhb^[YvXaYEDEICFEAJQcdfa`SKC@BKQYcge|e>?>>CA?Arkbdeb^dpnnfdp`[a]_gX[YR>ACCQOKLGD\^f[ceUEANSSV_iztpN>==B@?AAizddf\^cnneZ[bkvo^`_ZWVWCDEONPOWNDDVN^bzkTFERSZZP?_jdPCSHD?NFWRqyeZT_nopae_j_h]^[[YjnDFEGLPIIG=@??N]}ocPJR\d@<=>=?fifded`jgXTTP_vjYVRVSSR}[\W[\clDEBDMJLMHC<;ACDVPkTYVZK<>>0=ngidd_aei_ZQLUooqY\gg[ccZXb\a`aYBBACGJJG>?@C`uqefejrj`XWSP\rq\Yke`ZPT]]fpuc^PGDFFGENZG;?@CFGGY]ZB:@BDEFYTh]VWX`XQX]W\ooc}illoZSSU^\Zb]\QFEIHOUJZG=??@>ADE@A<;;@ABGBAA@>FDAVG\p`gtt~rpuk`TUZ\fwgcfKOFIBFKN?A??@?CC?DAA?=BBFECBCB>??B@D`ceechg`jjccV[Zl]`meDPOR`M@;>@ABD@DBBCAHDECC<>B@>@Ea_aaqpeZ]baw_`lVY[]i|hkMLCMD:<==@@?@?CDDCHBFDABDBEDCCFMFBLYXf`b^_ghdY]]^z~naYW_\oxlnIHFA<;;<>@>?ACCBHECDBBCEEKNQRUU\fih^ZVZ_lkd\\`zrea^ehYwajDG?>:;;:<>>?ACDDCEFDDCBAINORK`amkPiF=GISyrobj\wmlqfd^Y_ryv<;:>:;::;=@?CDDKEEACBCDCBLNNOad_jlJ<;:=BNsige]j|ijtcWXef?7;C::;>?A?[i\`cnhbmhkpccegi@?@DHEFFHHWcZkWTWGCKIjwiXVlwighhkxwefagzEIPNTUUWFGi@;?BCDHHFCCGCHHGHGIKisujRRPEHGaw]pa{hjga^aahe`^^mbBCP_VRGD?>:?BEFGGIIKRRIHHGX`xsbWYREDbxqsnXegjy`a`agl^h|c=>@@>BEFFGKJIMeoyfiZZYtuthULDCk~Y^hjrgaedl\N`nbGika@A>@@?=?AABEECEGGKdf[ZYkcZPLWHLVwqzKLNdWSOicc]XRV^`HQTG?@@OA@>@>@?>ADABAJy[Zdon^LKUADDCFAPbOKOcn`YMH\YVMLPTVEBMH?BD@A@@?A>=>?@A?BWc^X]XJDAGBCHGGF?=EHPVagbRW]V_f[oa]FWTK@DBAA@?=6]::EB?B@@TwSDD?@B@??AFFGFD?>?GTa`jNNTgcppDW^fDBDDCBDInv{JHCCDCOMiZA??A@>D==MblcW\ornepqcIY\Z^IEDFFQ}lUCBCEOMRF??B@BA@F\ECFNQUD??BTbqwwvqPT`c^HTZ_[GHH`j]xbTDCDBBWaOOa\SMGBFHDOFP\WZY_]V@FS\hWVVU]lzz~rnwwQEB>BANkWcjhZRJJNKENFGFR{}~c[a[[BGH[^Z_jXax}eff?<==?wipped]USLTJLGHHFH^pe^pmhc^IV`aifbeZZtgjlA<<=u{ppe_f]OJUJJMJQOJXVSfbbfyJQ[^bmTF@~Qgj]}egkqHD;Lju{otp^eZKNSVRJPXRQa^qPVZY^{\?>?<}JILGJTFEYSSTSWPknkoyvYgTXlJZ[VVKEXQPQSV^rJKYU_eD?=>;\t`LIFJIDaVFEEOKZSTR`acaWabUTXjrruj]NPWPQWSS_dHIOPf]B><99KAEGHGFEEASUEDEABI`l_a^YXUVRevzuxwo\WSXMQGKOcVKPX\TD@<8?PFBGFGGDDA@jVDB>>CCqn~a[Y[YxwsrwlyRC^MSPCKG@LQZ^YVICAW^B=??CFFDCBBH^fD?@?DrjmZ\[lp}rufURQefg^]IEL?MVSQOMJKKajD<=@BDEDBCBDA_=dB@>>C~k|la^zyz{lOLJMLNhfqjQOFEMVSORLKJOWnK;=>ADCEDDGC><:=B\FECUvytql{tip^]QILLOMYftf^NHIIWNOLPLRMfc8<<=DCAABDG<;=DQUQJJ_~~ucj[ZTURNOMSiydVLSHSQMOPSTecfUWUC@>AQORZTYWcZQQC{~|}~U[fkulVPQNIW}ykaZ[CPPRM^d^}lOUCGJUe{h[hVwvr}lNQYZOKJIgym`bdFHFBBOFMSZ}a^OJPS{jihkvhW[ddrRJJTttagiFIBC@DBBDQwuq_SZ[TtmjdgufnXz`LJV}RIIatxvbFEDCCBCBBMSsscmXMjtij\dvyikm[NM^ox}GZclKHFDDBHJiOCS``rj`T_vrurnsws{qw]`STT\tutkbauOKGCACDBCBDGJHEcFoiqfeD:DDc{wy{yOVV`XQSxnvmotJIFB@BDBCCFJHFDG\gP>=?BQprnRKOSMVhcUzyzstszRJJEBABBCCBIHJCBG\I=@BNkuupqLPLKRSR_eUTwsxw{vXQKFO\GGHEEIHHEDGUEMTOgy|RKMKWUPVgMXRVifpzSRNMNaVPNJLHIHEBCDc`cY\tnUTQbdUNQDgXS]{nlik[trokoontz}uq|{}owtw{rtwonlogelitpmpmoqw~}{}xsinv{nrmiignptnntrtsqy~j~{{|szjngiw|ixuv{qvstvtyx{zuokihdgxurtuwwttvfkmxyv{|vmkhghzp}soxsqt{|xthgjjpyuuy|utonx|uyrxvwvskirvwwhgghr~lmptt{wrtz{xuyxx~ysqls{worllz}nv}zsxxrkzz|y}rmhjthoslqzvqx{qxzpjhntu|slrnmpktpheeuwtl{v{qyuxwoksvu~y~lpkftrrild{{rooppvuw{vtjpyx}wd^hyqqihpvjvpqqpsowvr~y|rzx{{}qlv{z|vofkttpoorppqtrwys{rgu|}}{sopuklhril|upkhkoqm}snpquvt{vuhxttvppxoqvtpjpkdilngvmskrvupr{dgjovwxihu}x{qky{n{xidkhnqty|ypoppoj|p~qoux~xs|relty{vjki~utpnmm|z|opss}ohpwkihpsnzsognvt}ttrsw{|{prru}susoiigy{qyrt|jztv{{|u{wpqur~vwznjkgsqru}wuea^|~s~|x}}wuxxskjkfddknzrzvvwse]t}~w|vuwuvx{qjkjjidgxsvvwwxwtfs|{}|uvxouejjkqz{ttux}{vv|zyzw}|wokwtuwyylilkm}xssuxwzz~z{hgxwtpjiqjoulfgmts~}}wv}{qiiuyimv{|{~i`cnihis{{~}w}wx|zvtrrywmn~}|qtrkheu{{r~x~}xyp~p|}|wwqlpvhacyysroqzvx|rqwzson{zt~srnsvx}}{~~|usru~z~nqsq~vtvx{~rqslsxussrssvqs|tpo|zsqusytoppr~vyzqt|~sunohqkkuwqprxzypy~{m{vrjjik~p~wrvzk{tz}}wx|uxwyy~{|pyzvozsvt~d~uz{f|zyvvzzrx}rqw{~{ts{yur{{ru|tvy|{rybcgvvtvy~olnzz{xu~zvhcbcvssqrsvztxz|nlnvzuwtcauy|qusznmsusy{xqtnvzx{xtq{ttrv}|m}{xwxuqstzv~{utro{}vzutw8owty~zwur~~{vr{}xphiwxodgs~|ywttzy|sqottqzwvvujj{vȮubo~~wuw}xu~|{x}~rrqrpqy{{xyuyvhijwx{yyzsdkl}~|plmlvpswzzw{|}nls}kd~|uxprtu|{~}}~zyjoonlwwx{~z|twdv~ywyxtmknqs}swvxrquwyvym|tuzxwqyluxvszzxutt́}vxs{wzyurs}{r}w_dsnnr|x}{yyvru\_n|gsqrso}trhsnq[^[TN]tqtt~yxvgltZ_WQST`ttَ{qlvxywrqx}\VUTSS`bf~sv}}w{{zjilps^\UUTSPRRUp~t{uz~vxhlkn{z_X`ZOVSPVatz~~|vzkknxoqhc\T[[Urvw~|l}unjkjxlmzbcbY[YYMqrqydcdy{}~~o}~lqmnrxdc^[YSSVe||hdcz}~znp|xw|}ȱtib]\VQVY`|{udcvwxkymwwsqpzjhfh__XX^Yhs|tozlnsoprrqvubpkf^b]ZW\h^m}qpuqpƲopq`]ZYWYxvsrywzyyz|se}liiWNMWqttzysy~otn~}|ʵjqaVIJMLvxz|khv{}iifbda`hotmw|fporbjesknegiva`_b[[b^eqfbgcefkpqqovxv~z{zxvpuykf\aivoard_\]\efjdb~z}ihihdlsvsa}wtqpqfm]aZ[jwto\xmjxyknzugmihx~kwkonqpib^\[W[k|siytrfjlmmhghs|w\bcnolpsoi`^[ZZmzw|dqxyshdojgiookg]\``fpjjloeea`jrusz|qxyjogljkij{a_hkljj[\\]hracdgglgcdknkvsykonnw|{rpqojhbhokce_`spqagnmkditwtnhaoornr|{xwhc^`ju\cg`drx}~yjfcwhnfnpf`^cjkvtof_hdcfajf\YYhxj}e]kimqeoknmeaikktxylpbfa]kih^`Xnuywqha_bbihjv}rlj`emnsnvwv~YS_phh_]eh]zidefbdbmkgtxx}osipmqqtvgakooxvslf\`fga_^eehdkpjqi]vk|rtsqxifeksab^e]bwsmga^_bd]mdbedijhqlkw_oj{j}lffnefljf`{dua[]ab[g\d^eiicfpY\_dknn{_^yksnpfaoqdntlr|_Z_]cegknlcbcc]rpdpdchls|nitrgZbjoos}{k`a`usvuqhgca`_nl}rncceepsd]fvla^^ficmsqgd]emiypvrghddhtlnmbddgrhjhd]^_]npdkz~dfo^pkmproohnrxgq}ybcgerijtnb^_[gv}ccfmihYWSrsgqokp|yttvrpjgktrkf^^_ZWW_blbjfghgZRirrjohgxuwpihilostrd]^]]\WZkfvhfggjji[v{ssfonposwtzgiymvdjstrX]]^wdmwy{meefiqojjpmt{|mvwvmkqpkb`mkklnm_\`]_|qyutjeefjimmrmnzu\[mw{vvkge`_hafj`YZ`grfryussxjhspnve]]hrwn^blsoppr_VYd_]^fnoppnistvvpjkoyu|mhiefv{pmbdyszsrqoxfiha\[itosvwvttxnftrkqolnex|}uvfvnosoiifbfk^VXnxttwxrqkdrgdfxvm{kmtqxigytwwiqmgedqpi}y~rtu{~cb^zhmywos|qtsppuoqroihhkx|{sos{`ac`tnlmnor}{eef`yetkihihjilfhr}{e`]rqkhkis|{kgcckfu|t{oilohiqrhj`bZ}d\[lmghin|ullbkututqrwnb{}|tynjd[[Z^uftmimyry}v|{m]mflpv|{vqlorzgyhh|hhxolndptmfpugjhtws{urWpglmYtywvqousvzhodeivkdowvh~fk|{vqnru}nggnkhev}uotocguqtnrdgjxoyzuhpuVW[irx{igjks}}qsa^`msmotjfqtuxxqjs\XVWt}hffdghkngkntxvma^`lyuttopgixomfXVkorchfwodchjhluv{qnkdhclpnt|ywulsh}qlnedojjhjp}~rcsotvsvzsjikjfijn|}|{e|mimposxwjigztvxz|eqqzvvwqflhil{~|zuou|`heinqplhgqyvsplhvuyjlga\]krrvgcWYcommigfnmquigej|gdheefh^_s}}sniziUaqppigiqmjtqpmqru}{{vdedfeenxqqnnili]u]]jkmlklfY`brwr}uosswssfbcbkeinppmqzqrc`isaZtpylgmefiiporpplk\ddblmyynwqs~prjvvm[hpmqrw}m{rjlkg``begtqhumlnhgkvmnt~epulra~phimkjdk`gkif}{~ponkkjjtvuw|zkwhwkz~gojmlhdejqrsuzqjtnywPUdyyzo\\nwdvnlromlhb}qtsq~}lzNP`lXtbabd]lrfe~~w[gwtv{vb}{xgOPRLFSgaefqnyitj|{iZ_xww{trrh{yyxQXOIKKTeffkb`hklvxvutsriewtsd|lpUPLKKVX\ryyz|s~fiqp{zusrrinm|{vn][^beXUKKIJJLfru}zpemhmu|{usstsvhjq[]]`ltoUMTPGMJGKUxtrpfrmsrxztruuwxhlz^^ajwrycd\YRLPPKfhiqn^~xqrvvrwis}qa]^]ky|]_mXZYNPOOEeedrsiTTUrxklpsrboqtwu`d`aem[ZTPOKLNZotrmXUTjrmnqnl`ctplv~mrxqk`YRPLINPVqrleUTegyxnnh\lakmuiuhgm]^]]SXPPUQ]gnwor|rxebn`chefghgmhVe`[UYTSOR]S{zouwnv{_sq|~ffiff}btxzdgWTRQOPmyebahprusjlmlunspgWnuc`_NGHQdsccjiglrcf`pwqxowrx_gXMDGIG|egimx^[flwp]}][WYUU\dibmq[eegX`\ve^`WY[kVVYSS~[V]iYW[XYZ_effdknktnonlkgkpb]SZ_leTgYUSTT]_c][{upr^\]\YahkgxTpwkheef^dTXRVbplgUncaopzbfrxtj[a]]mur_k^ytcbed_YUSRORfzulcypkgy}{zZ^_aa]\]ipkPUWvcc`eje`WTRRTfspuyz[gmni}}|}[Wa^\^ef`\RPTT[ea`cd\\WVaikkssipq`e[`^_^wuw\nTT^bcaaRQPR]iWY[^^b^XZacakin`|ffem}|sqpffgc]\V|`gb[]UViwgiY_ec`Y_ilib\Uffiexgxsppklu\WSU`mT[_W[iotvr`\Xl^bZbdZUTZaakyy|shd[T\XWZW`]TPP_oau]Ub]bfZc_baZW_cbjxztlwlaeVZVSa_`UXOelpmh_ZXYX^]_jpe`_V\fdixvbkxkjrOITe^^UT\aU{qxa[\]Y[Yca]}jllqcf_gehgt}uik[V`gfnkib\SW_^XUT[\\_[ce`g_Tj`ofg|xjgo_\\bjUVR]UXlhb]XVWZ[Sd[Y\[`a`hcbnUd_o^q}c]]e]_b`[Ts\l|wXSUXYR]R[T\``Z]iPTVY`bbnSS|xpbjfh_XdeWcjchrvWRWU[\]aecZYZZTigZteYX\{bjse`lj`SX_cditwrcXXWjhljh_^YWXVdasgcWXZZfj[T]meYWT[_Xc~vkh`\U]e`pglvi^^[~Y]iacbWYY\vi_a`\VVUSdeX`pt[]gWhceijgf_eivn\fxtrzoWX\[h`akeZWXS_mtXXZc__PNKjl_igcgspwkkznuhf_^bkib]UUWRPQWZaV^Z[]^RJ`ijaf`_}olw{woh`_`b|fjki[TUUTTPSb^j[XYZ_``Rkphyk]fegfjnl{r_apen\ajkiOTTUnZbloqaWWX\dc_`ebhq|scmnmecjic[YeccdfdVSVUVrfnih^XWW\]bbgbco}}lSRcnrnyoc_]XX`Z_bWPQW]h[fnjggl][fcclZSR]fy~mdUXbwjggjWOR\XVV\deggc^hhjjd^^bmlsd__[\lqebXZozjqiifp^a`YTQ_ichjlliilztaYgfbhfcd[ortkk|\jvcdhe^^ZX]cVMMblhhjmgg`ZgZWZi|ldqaekhxwn[Zmhll]ea\Z[gg^smrfhiowrXXTn[_kjbiwurg~j{{fcdicegb]]\`mqyyogcgosTWYVzga``behtvq|ZXZSswmYh_]\]\^]atxzZ\ep~oZUSgf_]`^irv}pv`[WWYjpjoe]actu[]eftt\^SVMqWPPab]]^cx~qi}aaW`iikjghmdWunqpint{c]YOONQgWic_coinuvrkqoaRb[aelsrmgacfo\n]]r]^mdadWbfb\fk^a^~jlhpifL|e\acPkpnlfvdjhkp^eZ[`maYcjg]tv\bswrkfbgjrc\]cb^\mskdidZ]jgidhZ\`neooh]djMNRavhn|p}w_]_bwjtsfiXUWbhbdi`\fjknnf_hSNMNku^\\Z]]ad]bd~knkcXTWbnkiief\_uwnecx]OMbfivY^]nueZY^`^ckm{qgda[^[dhejqnllbj^sfbcZYea`_ag}suhYuhehjjlnh]^b`^aberrqp[rcx^cbbgnl`_]qkmnqr[gwygtmjk|jcXb_`dtwuqpjekrU\W[ageb`]hpmifa^kywjruuxl]^YWSTcyxxghl]WKLVdcb`^^edgl^\[`q[Xvs{[XZY^UVjuuxid_o^IVhff`^ahc`ifeaefiqvoniYZ[\\fphhdd_bxx`Sk}RS_acabb\OVWgkfricgglgh^Y[Zb\`dgfcgpghvYW_wiYRl}eob]aY[]]dcfddeb`R[\\Ycdqp}wdmgitfh`lldS^ebffkqaogaca]UWZ[^jg^{}vkcbd^]a{mdfjtZ{eui`fTrue^_cba[bW]`_\spztffda`__kmmrzxo`lzy\k_nur]dabc^Z]bhghjpg}u_hdlxrkIM\ooqfRRQclXkc`}vhedc`Zuiligz||sryantHIWdPjYWXYSbh[Ys{umR^onnsmYsqn]wy|sHIJE?L]W[\fdn_i_~rq_RVopprkii^q|oo~~pHMHCEEM\\[va}uv|YV_bcmonljji`[nuji[pafJGFFGFENQSgnnprit]`hgrxqkjji_ddrqldSRTY\LKHGGFCDDE\gjspf\xe`elrskiikkm^`x}|gQSTVcidPJQKAHEACLnjig\jekjpqjhllmn_bwoTSV`lhp\]USMGMKE]^`jeVvqjjnmin`jtvg{|VRSR`nqUXfPRRKLJI?]_^llbLLMjpcehiiYfwhkmxyjyUYTU{[bQQPLJEEIThmkePMLbieeifcWZkgcmxubglze}{}_SOLLGDIJOjjd\ML\^puoff`ScXcdmal]\u{wx_PRQVNSLLNJT[bjyuehrwiovx]YeWZ`]^]][avyx[JZVTQVPNIJQHvppfkmdnr{Wkitu^^`\[p{{y|vTglo[`POMJJGbzp\YX_fjljaccldie[~z{{sI`yywsi\XYH@@K\j[Za`]chX\UexlgmclxpwdnU^PG?DEB{u]abep~vRN[`wlww{drx~}ܽŬȯ¨rstӾλնȷُpvzۡݺȦҬ̠{||ůͶΥʼ}}|}}Ψ˼ՀУĢθ͖ԱɥƹӁʡÌֹв~~ֺӸҤӟùʴ~}ȟʸȭǽɻȀóxʰƻҸv¶Ǐ{ü˦žƾ|{|ČӼعǠϱ·ʸxϴ¾ʱЩv~~ͷĨ̹Ժɻˊ᪪ŻȮį̣̭ƒùțܭͻ̻ƹΝڀ̭ӯǸ˹̾ͨϷ˳|ζ׹иʹsȦۈݺ|̛ısӇnӭܶõſzݧx֤ɢ̼{ÕŚǨԤ䶓׸ʚڵӞʶyȥji“è˭vzz槮ӞŪngd~Ǝ߭|y|߿ǬƱkheetϞ¼z۱iibɨǿyǭlmmnȹ¿ǵҜuv¿rklmpzʾƼɮ޾̾sƝe`gijzŸ֨߿Ɗڞmh_dd^_gҥجµʾ׫agc^ZY[˳¹حĮԷȮgda`YYtѿڳȩƟ{~~ҿŭsg`\YZY޸ķz}jf^]YXȾ͖Ҽyzoj^ibYW`ހᴟȾhfkceaYXdȒķݘÿȏќ}ebieY\\[γͲˡ{jbehj`^]\kڶïôɖ~|kfino_ZXcjʝ̵эͫx}~of`imof]Z`\dnɗϪ֬Ϻsyp]ms|zygb^\SYɥ~Ňлybko{qh^UU^Ƿx~Φν|jqpszxobWUU˽tnkpurs˭¹{̆klvkˀɰîĥx~inq̩ÿýĽqrrs{ºεy˺}ľrssrsʽmϿŀuu{xʾ˱wǽġĹvtz{ɻij|~ƩxstsuƪĨ”Ïrrsȸøt{hwŶĬi~ʱѶzkƳ¿pnq{Ǻêwwuȩ¼rqrunsv{Ⱦ|IJĿ{hrrzͨ˼ļȽé}Йɷʀı̷˝ȾǶ˼Ÿrpĸź˻zz|ξxtl¿ƨxrκ~fswpԺýwdxz`z~Ğ˥oҜ~s~jȷvúrӵzx}ƶÓvр3שũwȥŽ͹um~t\\r}wyҼjponďtaZVo~}zТvqntpЯù^[WVe¿|o|͸ʥ}_]TsʥyȳμϾ̺{l|vbba`|ʾzďvgiyĵzjabbdnýа̼zfɹ}x]Y^`_oŘЀ㰤{ˏfaY]\VV]ǜxȜ{[`]WRPRƝ|tswĨ`]YXPPi­ɢķnqq°ɱi_WSPP®zʱΨ{~˵qs`]UTON{μíwzppfaT`YOMUs~~̀Ҥ̹~{^\aZ\XOMW͈ǸÍ|s[X`\PSQPvpy|ξv|r_Y[_aWUTQ_|ͩѽtsvxa\_fgVROZaÁm|}ztte\V_df^TRWS[d}ɟtu~gou{}zfScisrq_YUSJNnv}üz~{zθ~mzyvX`dxriaULLRfs}m||~}wοtafeg}wrphZOMLKb\Ư_fjgj|}|p{uv_`k`tw}|w{sylquo]cfuvzz~}~wdu{ѳhghoxzopqqr~y®~setihhixwtass}{y{|vsxkjpls~}iurxzt}{ptlionxzzxulnrkghgguz}rswfee|{xwzhmVzh~x[wq}x~mh\pb`crlzx{ihi~wt}||eddg`cejwo{v}y|{~qm[}cbjssw{{ؔ~}tqmvԷsvyy}𬎁ryw}{~|{prxyo}Y{ee}y}k}jlw}zjha}}}lwqcqyqXezxvy{{l~{bvé}tmXl~mRmq~}a}rhxq|r[s{~je¥}}}|tuljpL}jyǙv~|~k|u~xuxtv}~yüf`xst|ru~|t~hRVjsoik{~Ľ¬\caay}zg[TQh{nqq}yuqz~ſgead`|y~}XURR]~ngr~þ}|~{}yvqZYQiΑnzz{r}øzqbq{l^_\Zpüyoij]^nkc^^][d~n[wonVSZZWdüzxpq{]XQVVMMThw~}~wswpSYUOKIIxzvmfeio}{x}YVSRJI`̚_ccws~xovbYRMJJ鮲rvyos|ſa}|tl[XPOJIqz»lpyani`[P[TJHPi~rqnqpzvzVV\TWSKIRy~z|zyzslxrlUQZXJNMLl|~ydmzoxužpelbsXRTYZQPNNYw||~rwtu­tfbhroYUX]]OKKUX~|}rsqqvwapqnhit\SNW\^SLKRPSZxwp~w|fgpqswZbioupp{\J[ajgfVSQQGJt|clp~}mpmqmqn_m{humPX]yoh`ZPIHIN^kud~wnnqois~y{iX]\_tmhf`WLJGF[Uxԯ~|qwnXVVkjc`_\X]^em}}ljji`_hXZYc׬ѷГ|yų|}gVT{e_aa\[^m{|mijid_hf`a\\κ wǼuWVYXZ^_]_]]^}vdnofbghhff^ĮμӷzdWYYW^`a_]^\|spjgk^^ieaŽҭ̍q^YYZ^b`_]][w{qfg^YZVca\ԪōйDzƭ¥qdYY^]]\`_ZZr𴝜ux^_Z[YZ`WWʹϿӡĺ`bgp^\\]mwc_Y\\]][]WXXȸ{bfgbabZ[]rfcb]\]]\bbWXYǹɮʿǝ|pfdYWWZ[]bxc`_Z^\]]b``\ZZǹ˻ʭzrVSRRX]fbk^ZWW[Z[aeb^^Z]ƺǴ˪zzpVQMRSedi^XVWYZ\geda_\]ľܼûŸ|~YPPQhdcm[ZWTYZ[b^dde^fٮ֟¿ǔn|~LPJJgeaêcRWZZ[Z\[]feeժݟĹx||}SKKLLY`]zǿzl`qj_[XYafcй˛Ʋz}xiNNMNU\[kɽwh[Z\`\aճܶżwsqRRTRRZYYkƲ|aVV^^``åת»YSSPQXYel|WTUad`gͰ€ŷSSQRT]_kiĀVTSUhzɱݺ^TLMRT]akűqTTZf|տ~}¿dSJLKR[bh¿ä\\rzҷ˹y~Ʈ~k^ONPPSbnlɑ{z|ʜ¯¬ʜfc`VTSS_lio}v2Žѭ~{ʼwsa^TSTScgeeýϯµ}VSQRSPR^ecŹƹŵĻĜbUSRRPOU``eɽàȸĪs\TUPOPQY[\Z^b}[rxwʡоȮĽ`X^TQQPUX\\Z[[Y[^wĹʰű}{˸³pbZPPQMKK\Z]\[ZX\`ƛԹȼ~¿ēm^_RQQLKII^^ [YY[aΕǴμũoa][PQKHIHSca^ZXYd̟~óοĽqle\QKHIHdb`]\ZXUڭzzy̷֤˿qqj^ROLIKQX^_^ZW]zzԶ֬ʮ~vt^VUUKNNPZ[^\[[rֻvwʸyx~~wvrZWWVRNLMKVZ]^[|{Ƞy|xxaXWVSPMLMNQZ`^[f͒Ȯxnk|̞~xoWXXTQNMJKNTW[\[z͚§̜{ecfȹÍjWWTPKKJINNV][[^¹webcf»z|hZSOJIJOPSTV[^X{ƮĿµwlb`j^TPLKKOROLNWY\qĹοxldcuzY\TSOKPSROOTWZXĴxjgcnx{c[RRNM[[UONPTW[sƻ֮ki{|qb`SQTVYVURQRPWYƨrmh~xxggaYSSg^YWROMNRY]Ż̳¾|ǯ~{rzi`^^[STX`XWXQPPLQ[žmkzwrflcNLLbb[XVSOTV]d~zwwa^_^WXaRUT[ß}kizorntou\KIp]XXVSRUbqz}zzwf]_^ZWb^Z[UUwgstoqds|{ztKJNNPTTSVSUWwzy~|woZce^\abb`_Wçyjr|z{YMONMTUVVUVVrifc`dYYd`[q}zveSNNOSXVVUWVmpg_`YUVR_\UĚ}fYNNSSRQWVTUiǥzjnSWSVUV\RSSÑsUW]fSTT>UclYUOSVWXVXSTTokvW]_ZXYQRShu]YXSSUWV\\STT|ulxf^\QOPQRRVwtnZWUOTSTW[YYVTTƸ~{uojPMKKORZVu{bUPMNQPRX[YVVTW÷ùzzutopiPJHJIYXyaUNLNPQR^\[YYVVôʪ{nwuRJJ]YXcRPMJOQQYU[[^W_ɟďbotwxFIEC\[U{YIMPPQSTSV^^_śŻ̐~kspqsLEDDPURlocWgaWUSTZ`]̻~npv~m_FFEFKQP^xmaVUWZVZť˦khzfIJKIIPPc|rZSRYYZZz¿ŚwPJJGHOQ^eruQNP[]ZatΆq|~JJHIKVXd_ PNMO`nû˩sw}}UKBCIKVV`gNNS^px½Ʊ®nly\KACBIPU[yTUUgoȴĿj}nzudWFDHGKT_[rpokrwyĺſyzzvv^\WNMKLT^Z`|rkqoqyy,z²mkmjYTLLMKVZZ[xywxwwqn~|NKJJKHIT[Y}~{|rsZMJJIGHLVV[{|~~tythTLNGGIIQRSQTTmPion~{|ü{w|}uZQVKIIMOSSMOQUmvǺxpmsyyzgYQHHIEDEUQROOTWuĩxst |dUVIHHEDCCVTSOPPRXužx{|}fXTRGHCBBAKZWTQPPZ~ǻrrƲ|{hb]SJDBBA[YWWUQPNvɝnnm¼ÕxvhhaUJJFBDHPWXWSOR˱unnŨœzxqmkVNOPFKKSVWVTSgƬhinmxxnurzyojjiSPPRPLIHEQUVWRqwl~pr}ro{xqkkXPOOPNKIIHKTYVR\pdapnuwjrfPQQOKJEEGMPSSRoüs\Y\x~ux{~{wucQRPNHHDCGHOURQSòn[Z[^xwt{ovraUOMFEDIJLNORSLlmdZWqvuuz{aXPMIFEILIFGNNPcſod]]iwwx|nQUNNJFJMMHHLMNLµűpb`\e}v{wxzslq[TLMIHVVPHGHKKOeǟvcaruyw||yps}zi[YMLOQTQOLJJGMNje`z{y}{|xyvrul{rk]^ZRNNaYSRLGEFIMQ}z|tt|yr{zxwspfou]VUVTMNRYQPQIHGDHPƀra_l|kgxwu[aZFDE[ZROMKGKMT[xzzwqmjiVTUTMP[IJHPun^\ndgu`gciTDCiSNNONKILZhpvsp~niZTVVSN\YSRJK|hZctfbeVfonmkEDHGGLLKNLMLkynntojcR\_XUZ\\YUM}~}wwqtyj[cmmnrzPGGFKMONMMKzw~v{jba^[`RRQZUQamstv{j}qxj[KGGHLQOOLLJa{}wyyja[\SMMIUQKm{[PGGLKLKPNJJ]ypcfNSNPMNSHH٪ruwxv}hxORX_MKKLX}cQNKNORROOII<}y|{u{_[fQY[UQPIJJ]yylTQQNNOQQVSHIIxtqmvzov|d\h\ZWJFFIIKOljeTQOLPNOQVRRLJJwypnkptfb^HD?@FJSOlpZPLIJMLMSVTOOKN|~jjyueebd^C?=AARUqZQKIILMNYWVSPMLu{{koqttaxuigH@A@WUU[MLIFLMMTPVVOU{vqqv~vT`fjj>@;:XVRxrTCHLMMNONPXVV~ynu|]dabeB<<==IQNddYP^ZRPMNSWTtwzqnw`bho^S>?>?FLKWtmdZQPRRNQwwvzuqs^ZjrZABDBDKIHWohSMLSQQjpqutuzyslGCCBCJHTYd|iJHJSURWeqw{vqr{~~ttepqBCCDGNNYVwIHGHWawqqz~yfttkprLE?@FFNNW~]GHMVcks{u~|c`zurtmSD=?>CJNToMMN_cs]rcozx}whYNB@CACMWTxiggbhkls}~moxp}iiURQGGDDKVQVrhbgefmkl{kxv}ucaa^ROEECNPOOtnunzkkih|xwy~{ycarqGDCCD@BJONu}zw{}qrul}~wspqrrdfwQFCCBAAELKP|~zwnp{~w|xnou~tnfkg\LEF@ACCIHHGJLwdG]baqop~yyso}wpglpgPIOFCCHIHJKEGGHK_hu{tt{xldbgijrn^RKBBC@@MIIGGLMhsvy{xu|rkfhvyq\PQDCC@@>=MKKGHILPhu~yqkuyyxwolqpu_RNMBC?==DROMJKKSr}qcf|zzvv}pow`\WNE@==CIQQRPLO}f`_u~wuzymksz|caaMFIJAFFKNQRQParZ[u~bblvlw^fczvji}a[Z^IGHLJFDC@IMQSOji_twu{pcfrwwrc`qtkhoxb\\MFGGFGFDFNTRNUr}}u{xcYUeu~z]egp~r[cXFFGHGFFCDCILONMdz}wt{gPNPm{{}nehkokgfWFGFFDEDDBBJPLJJ|{xcPNORm}vhelsaebVKFEBBDGEHIJJKEdweYNKfmkzv{tg}tz~zmpWOGFDDKGIDABEGIZ|uq}f[RQ^mmnywpt{upweKOJJFCHIHBADGHFwr}ovwgYVQZrlruklmf~bhUNHIEDRRKBABEFG^~xrrtlZWgjnm{qpm~ce|opcUSIIKMPMKGDC@FGwyx~qt_ZVnpnsqqlnjei_z{nx{f`SWTMJI]UPMGA?@AEI}uqnphgqnfonljgeZdis|SLMNNHIMULKLCBA=@Gorwtrvjmz~yc`a^_]\][bprp}tmhhrr~okgt`[VROOV_yxx{{tjlrvpm[\\a`fgadcqstutio|zm^`jjpVWOOcl}x{}tzuzzwpc[]aabeesccljpzzxz{trpodi`QNNOalw{~x{uuvzurpd]bbeh}n_e]d|w|yzwlhjqtrk_]NRTU[`rs~||suqruxtwwuvpbdguvpa^]\tvuxxxy}zrhlilggpebTVWWZamrsvzwssqonqrrvutqwvukg_]tly{zwttrssljkhifbfcjfdVVWY^oqsrtsstsnoprqss̋eruvtn]^lkmykqjrsrkhhgfdbdkqccWUWW[_mmknuttrqqpqrsott}tdwxvc[einptdhqpghhiegccbejcVSTV\\`iejpy~ywsuwxrmkqtnmf`_bgaavmovulrbglrkabdccuhYQRU[^]amdt~~u}wsswlpnprmig`^vwu`lxqydyunfdelh]TQOX]]_z{B~wqoyzu}oxreiu{{|t]osgbmhzsidcdjrTQSVeZ[b|z~|xyewyjgfkrrzjeacifksŀlfjfTRLX[g`frozy~||{muhzwvwph[zwpmĿqjdgjQRT_dghgqt{ɶv~qs~qwt\mqtqaquþĿm[WPY]^^cfnszǏzyoono}qb]dfvzxx|ľƾid\LLP]\b_nmt{~Ļpqwttruyvwusz}ĿecQMIJatuvwgl|Ûqpx}}{stssxvwnhqxy|¸{_[KIKrfggqrórr|ps|u~tkgmvugxz{zrhd_TPN{sifkporvĞ{}zormnmkhihmtx{zrqpidgnn`XVUWwnfhnprxvŭiuhq|mpklnrpjhwwytskkeffhnpdXSQV}wflgoqpqt|x¢|nuxmywny}vttwnngdde_^dheUOcµjhkjoxumlpǭtty}uwrpplqqilmZaS_ORTQRkd]c}ryrkxƧz{mstdrm}tu|_X^YVPNQT\ə^\covzuywy|wspjnjurlܬ~|~zqZVUVTZǵ{dggeuz~yx{ŀĺqhrjggflvǞ|sYXVWWzlddesxyy}¼ujgsshghgeo¡pfYWVUT^`_`gvw~~~y~zwmjlehhÀhx\WXTVTëb`]\duvw}tsnþ|{}phghgijmtzd_ZRWTTd^]\hrstzy{vehhfcihloyx]ZXVSSrVaclrmmrvqwx¿gihhe_oa`jnu^WRTSSYU^[hmchqppnolzxga_hjg`_^dkut|no]POQNbTUW]dkeccrqnnqzrqhigjfdgcdldnn}|~pnnyfNPNO|aWQQS\[^egmijkkpnڬyrexppvscgeioimwy{v`kmuWQRR~`OOQT[[ddlmpkilppvxtooyzufccfcnq}fc`dpSPNUOQNONZc^^djmmjllovtqxnpnmkcoteq}ſdc`fnWNNMȗNORhr^[`bjcd`lnnxtuppnxrhdxuvaozéeddgdNMMNЅqw\]abe`aaclfx~s~oqruusvofhxuxmwwmebhgULMǑ[[_`dfdd`ddptuvzutsvrznqhsztvxr|ub[\cNOc̑ͩxZ[^aegeg_ahpptu{{to{jprm|uwttz}x{vi`\hXW_̰h_]]adestZ`egmuuxxtsttsx|xtqqyqqnorrxxzk\XWwc\\bchjlbbfqovzwsutrzyxpvlpstqwsurfWZYgXXV]emijehhilt~~vxqxxlfeehqrzt}WUYYm¶yTQQX]mo`^`iksxqs}tuxefeddekvw_`]UZ^ZZk—lOUZ`ifehpuxrjhdtuvpupoieknrpdaYZ[dՃfglhvhuuwvvladptp[vVXUVTVVU[jk|fyvqgc_^ihvta_]jvWRMIFFMYnlmpu{wwskacimfdQRRXW]aZ^]z|hij{whj`fzx{rqi{`UV`afNNFF[dtmqs{{}kqkqpmfYQRWXX^]m]^fcgppmn|}puy~ryhhfe[`XGEEFZcmqutxzx~nqkkmpkhfZRWWY]tfY`X^snsowzvnlya\^fjhbUTEIKLTXijtrvxsjkghknjmmklfXY\kmi[YXVlmlop|~ujlqumf\`\b]]f\YKMMNTXdhilpmjigfdghhlkjgt~mnmdaZWldpr{nsliighhga_a^^[X\Ya][MLMMSVfgihjjdefhghh恂[whmomgWWcbdo~agahh`__][ZXYahZ[NNMMTWcdadkkgfeeghheiiryivZnpo\U]aehk|}w[^gg^_^_Z]XXY]c]OLLNUTW_[`fpuomhjmoibaficc[WUZ_YXmeemwjafY^bf`VXZZ[obSJLMTVSWcZkuujtnjjnbfcehc^]XVmmkvVbngnXzzsmhc[Z]ebXQMJRVUTVpqwvvKtnhfopluyseohY\iqpqjSei\Wa[mcw_\\]enOMOQ^RPYrpuwuvpnm]oqya]Y_ev{hn`[VW\X\bouc^``POHSW_X]hepqqonnz~u}z`gyZkrkmzmf^Pnia^ttvf`\_fMNPZ^__ajot{}wxtgodithzmiQadgcRcfxueWSMTWXW\ahnswvklddffsgXSYxZhmjimc^XHHKWV\\jimqt~ocdm{~jijhknkkfelq]]MICD\o}nqradq~ddnssqijiinkka\emmnvpZWGCE}xj_``ijxrz|zhhrfirkztia\bkiZjmnzvx~|wpi`\[PJGskb_dgghj~qspf|~hcdcb_`_bimoohee^Y\eegYSQOQyne^aegglj`k`hrcfbdfhfa^mmoiia`Z[]afi]SMKNqm]c_fgefiojt讕sem~nconepvvsljjndd][Y]WW\a^NG[}{a_cafnjc`b{|{~jjovvslmggfcfe_abPXLWFJMHIxaZTZsgnh_is}~pqcijZhbrhhoUNVRNHEIKSURXekoknklm{~m~zif`d`khbrrvriRMKLKPoY\\Zjormlmpꨢf]hv{z`]]\bl鲵|zukQOMMNnaZZjtmmow}j_]ii^]^][exyh^QNMKJTWVW^mnxqqxzro}tpmyc`b[^^}#zmSNOKLJXWTT\lnmofea|qq}s{f^]^]_`ag{n[VQINJJ[TUT`hhimtlttqlZ^]\Y_^`dmvwmTQOMJKgOZ]ekcbfjell]_^][UeWW`cxv{vsjVNIKJJQNWTafY^edecdbrnun]WU^`]VUU[ckjznvqqfgTGEHE}xXLNOV]d[YYffdcgp觬ec^_]`\Z]YZb[ee{|qpqddep]EGEExnVMHHLTSV]^c_`aafd}}lfZlefliY][^e_dmmnjXbelNHII}mTDEGGKRS[[cdfa_bfel{jfccnqk\YY\Ydgrwzv\YW\gJGELDFCFEPZUT[addacbeljfnycedwcaYej[gqyt[ZW^eNEEDCDI_~iURWYaZ[Vbddnxu}|xikgge|nh^ZnklWcny]\\_\EDDEwgnxTTYZ]WXWZb]ntit}efhlkjle\^nknclkl~uf]Z`^LCDF~RSWX^][[XZ[fjklojjimhpdf^ixpjlnh}}ypuuqm[STZEFZoSUX[``\^VY^ggkkpuqjfq_ehcurkmjjpqjmvunbXS`ONVx_WWX\^_jjRX]_dkjm|oki{tgghnrnjggoggfccfipqqbSONzlZUXX]^``dZZ^igkmkxxwgihfpuonflbfiiflimj|]NQP^TSQX^e`b]``adiw}vxxu~jlfnnb\[[^ggo~lvNLPPa|oOMMUXde~XVX`bhl~{eivuxtizjn\\[ZZ[ayuvzooWXTLQUNOO^cKQW\~a]\`hjlew_]Zijsuifkfe`Zbdgyzzxh\XPRR\ƃ[]b_l^kklkk`TWeieRmOPMOMNMLR`bs[mje\VQQZZhf{UTS`lNIEDBBHNecdgkplltg_SV]b][IJJPPVZRVSqs^^_pl]]RXukilfd\mTKLVV\FGBBQZjdgioosq_faffc]QIJPPQVUdTT\Y\ddbcrureiipdp__][PVOCAABPZdhkimnkrcfaabfa_]QJNPRUl]PWOTgbfckwpleaovXTV^`]VLJ>DEFJN`ajgkle\_]^ad_ddbc]OQSbd`RPNL`a`ccqtmcegkaZr|TXUYRQZOOEGGJOZ_`be`[[Z]_^bba^x|luded[WQL`Wcf}o}~hjb__\]]\VUYUURNQNTPPFFGIL]^_^`[\\]Z[\^__xyRo_cec]MLWVXvbqX\V]]VUVTSQNOV\MPHFGFINZ[WZ`_]^]]\[\^_\``ipanPdfeRKRTYZ_oo{lQU]^TVUWRTONNRXRFDEELJNVQU[bgcc^`dh`YX]aZ[SMKOTNLaYY`k]TXnyxQUZ]XOORPRdXJBBEJMJNYP_gihakfbbf[_\]`\WTNKaa_jKVb[bKijtkeb\TRV[XNEB@HLKKMhhkhiigf`_hiempk_g`RT`dde^GY]PLTN]VqoWUTU[cEBDFTHGPigihgheedVhjpy}xZWSX^lq\ctuTOKMSNRXcrm[VWWEC=ILVNT^\fedbvdeqzztltpW`rSbg^_naZRExdaYWjij\VRU[BCFQTVWW`cgtntqnrn^fW[f[nb^GX\_[K\]nshYLICKNONSW^cfihsw}b_UUWXg\MHPpRafbber}rXSN>@DMMSQ_]aegrcUV^ptnt``a_cgcb^]_bqSSDA==QdsdghVYest}UV_xfgg`a``fccYRY``t_uhcQOA=?rwnaVWV]^nfmn|k[\h\_gapj`WSX_^O\bcmkmrpskf^VRRIDCzjcYVZ]\\^yspdge[qws]XZYWUUSY_def`]\VRT]\^PKJJK|pg]VW[]\`_r{xT`U]fWZWY[^\WUeegaaYXRSUY^aVLGEIifUYU\\Z[^d`iugZbrsbWcbZellicabf\[\USQVPQVZWHAVrrWUXV\c_ZWYtqooryut^^dllibc^^Z\\WXYHQDP?CEBDlUOIQj_f_Vaju~wrrurtseeX_`P^Xg]]eLFNJG@>CFO~~KHP^ehcheeoz}sqt`tsrn^[VZVa^X{fflh_IEEHHNyeQUVTcimgfgh|rypYP\ixpoURSRXa|otokaHHILvcYRRT`meghhp~m[RO^{v_TRTSR[mzm^UHGIJJvzKLLOUceqkkrrdcrieboYWYRTUq{mbIEIHJHrMLJKRbccg^\Xqvgfrhq]UUTVWVZobOKICJGHuPJJIU^^_djbitvgf}xbSVUTPVUTW_yklbKIIGFv\FRT[`XY]a[aaww~|tuyTVVUSL\NMUWkj}pli`MGCGFF{~}GFPMW[OT\[[YYWfuxaiydTNMUVTMMLQW_^vkdjgh^^MA@DAxt{kMCGKQWZROO]\YY\etqZWTUTWSPSOQZR\Zppfef[]^jV>B@A|ocLE?@ENNQUTZVVWW[Yrqۚz_ZPa\]d`OQQV]VZdzcd`R\^fHCDDsdK=>@AFNOTSZ[]XVX\[bor_[WYdgaSNMPN[^hlokVTSWbEB@Fz<>?A@KTNMRX[[WYX[b`[bxu{oZ\[mYVNZ`Q^gns~jUTRY`I@@?|=@EYuaOJNPXPQLXZZdmjrsqn`b__\yre]TOdabNZemwUUrZV@??@pbem|}JKQRTNONPXScj]hr~y]]_ca_a[QSdbdZabbr{|i\VTYYG>=Axu}ysJJOQWTRQMPP\_``dx`a^b]eY[S^ogace^xsrmdjifcRJMT@@T|xcKMPUYXSTLNT\[__euif_[fU[]Ykibd``fvtf]`jicXOLXHHPmUNOQVXY``GMRTX`_drxb__oh\]]dhd`]]e]][XWZ\deugYLHIocRNSSVVWUYOOR]\beclmlt\^]\fked\bX\_^[_\`^vqUHLJwVNNLQU[UVRUUVY`ntjllk|r_a\ddXRQQT\\bvqs`jGDIJXs~gIHHOQZ[qMKMVX^cup~[^jjmwi_padRSQPPQWnijnbcLMMEKPFFU^EKPTr}uVSRV]ac\lxVTQ_`ij_\b^\WQX[^ppolts\PNHJKWbea_^gb^_dgiXQRPJzonqodozij\¢cff_^^XYcQPPNTW^orob[_u|q]`bahg`YXXcRNNSRUbnkt^[]]}¿\\dffg`Uo}~TOORRW\hwsZ]_`|~~ǥWXZZbda[|{wZNQORY[im__bmy||WUTSWSWYrxyuSNPT^[wqgabcp|{~¾WUSSOTRQTRYQbQtrmeluknggo{}UXOPIJQLQOTVXUV~rrqejkjv{ŦWaRGFHJJLNUYXQNn}qw}vao|}a]gY^EIKMKLWYXOPRqrsj``~}ru}zeeqpScRMKUZ`[XWuuie\uh}ajmypt{wz{b]YeŴŭbhhlwwvyu}\WVg÷ƲȿЀ ҝ_cim~qusz~VVR]ƾлX[_s{idpxy\kniejvRTR^ĽʹLVWyzhinbZg^RSRVUYq`\X\nqǿǷʲPMNRQTMONNMPNKMSSQPTWUog`bimt¸Żǣ˾NLKLNPJKKFJJMRRQPRTWxeheiÿɽļɛPJLMNLMJKLHGJKLMOPQQSYkijkkȩūeYKPKNKNLRWRKLNN^Zab|xyjr~ȯůbXVLMONOOpuINPgopd[Zzzx˲ɝŹƱ[WVTXSPTxa~spvo^_uuŬʬƨ[WRS_kjrssx`Ÿȳ˰βVW[aghqfihkg}ˀiήș_YZafiv~]\UTWckƶǨζS\dZZouYUVTTY[ ĺ¼TYahhmrj\UOSTQoà½~TY]_gqpnr^Vn]VQSURŨ¹TTRZY_e[RSTYwXZ]i¼ʳøRQNQSTUSSRQLW|jhmĄ̀|}NNOQQRRURQONKfnnunȪƽʶ~yzzTTORQSTSSPOOP]]s~y}}qruȀȹȾ̯|zxUVUTSRSSTTONPOSYytx~wot~Ǻѐ{|XUVRQQSbUUSORSSXotyqwʹȽ̽}[VVPXo]]SQSSTYjm}vwwɺų̧~pY`Xqv{oZUTU^mo{x~~ɸрǿÛ{rZfhww|{q|yvx|þ~~ĿШˡ~ffmotz|trϻʘgfjlnbok~yu«ʾնţ]`a^]RSZrqmzsrЀżվȶXhWVUVUW¶_YbWvrszƷ̼wrͿYYUWVVTXsPZWVgn~nqrwʿus̩_XUVVUTUaǰSTSVhtkq|ɳΘμʸUSSTTUSTXbOQR`ze_nyƾ̿ĶՀZ\XVU^XRTY}^^OGIIDuqfcdruf[fp`aSx}wy{ztxoY]\VTUSMMV}IIHGIKQpfjf[UXm}pfurzuxxTWXX_^UMLLuZJFFIGJWebkWUUVvnvy{xSS[]]^VKc{qsLFGHHGMS\ihSVWXnnrnxNOQQZ[WRp||rnvQDGEHPQ]qxdWWYbrikkpNLJJNJOQjp{vpkIDFKURkpx{f]WXX`kjmsNKLJHMKKOMTL\Klz{ic\bhu^|wc]\t_jlqt}zLOGHDEKFKIMQQPQrygff~}Y_wa`jovtQZLBBDDEGMQQKIey~pdiplWdwwzqopWyr~V`SZBDFGDEMQPHJLbcdbXV|qp{ogjpm_^ijN]LFDLPTQQff xa^Wnxrsr]r|sx\adqgwip}smikZWS^{{]__bmkhvhdnUQQa}|Y\`crdgezrk}qQQNXQTVip\XdjymR_b[X]|iINMXsFPPpp\]cXP~~^UHIHLMOdrVTRUehvtsJGGIHJEHGFFIFCEKJIHMOMe_WZ`dkrtyGFDCFGEDFEFAEDFKKJIKLPny[_]arr|}}HBDDEDHFFGCBEEGFILLMNS`{zaabb򵘠v]QCFBEFJINRMGIKJJWU[ZrlpafqYOMBDGHKLhvvlFJM`gh[PNnpjsRNMJOKIOqzwvvy\ukhmfSTwjhvxRNIJVbatzvjkimT{MMRX^_h{xu\``a]q~|vxUPQX]`kr{~RRLLNX`|}vrIR[QQdj|OLMLLPQz{tr|JOX_^bg^RLGLKIczyuqrKPTV]feceSK`TMIKMKszzw}uKJIQPV[QHIJOznOQT`xz}{x~IHEHJKLJKIGCNtb_b|vv|uqrEEFHIIJMKJHGC`ecj}d{}~»uppKBFIIJMMLIJIKXWitnssggi{}rqnKMLKJJKLMMJIKJLRpjmtmeiq|}wÿ‚pryOLMJIHJZMNMJLLMPfkv}ogkru¿~vq}RMMGOf|UUMLMLLRbdsnxmmyxÿwtfPWOhmpzuueRMLMVegsousxxyowqhQ]_oopgzsrnprw}opvs]]dgjmn{{|if|rwu^]bceXcb}{z}qnj¤z~rTWXUUKKSiebqzffzO_NMMPxTOXKrjefmf`PPLNNLQiEPMK[aqadgjxecyVOMMLMLLWJJLZh^cntuu~}z}MLKLLNLLOzXFHGTnXRaj|ny{}{ƀfQSOMLUNILQuYYICDD@og][]j|m]R\eVWJotmn}{lmgjcQTTNLMKCDNwuFCFFKMQi\_]~UOObpcZi~imgjj{LOQQXWMDCC}jVJFELIJRZXa}}QONPkpasvklmjvLLUVWXOBYwmgjKGHIHFFKQ^waOQRR}{`ahdmxHJKLTVPKdomgcoOEHEDIIRgn_RRQY}pd\aae~ypGFEEJGKL_drlieweGDEGLI_xf{oq]WPP灇wSa`chs{qpqFFECIHGJHLERD_y|pq`ZSW]zkyTrn|WSTjQ`agiqqls~~srtEIAC@AHBFDFJKIJhou]\\swtPVwmUT`ehhvstHRF==@@?@AEIJDAZlqeZ_e{cMZlukxohdeLmcpuwMWLS>@AB??EJIABB{ZZ2y}YOMrzffysf]`xy_\tUU`bIWHB?FHMKJHz{t]]\nXVNcmzgxih}Shqbg|RX[h^n_ftrfa]}bu}{RNJUpzow{~TVVYca^ltupy\XdLIHXqq{QSVZhZ]ZzltfatgIIFO~IKM_fSN[_}j`JVXPNSzr_AFEOtwg@HHhhTT[OGsyuVLACBFGG[hxMLKM[]rihh8zDA@CBD?@>=?FEDCHIH]tyWNSWY`~fimv|B@>?AC?>><<8<=>FEDCFGLfnSYUWyffp}ppB=@?A@B?>?98<>?@BGHHJOVpoZZ[[~~jXL>B=?ABAEHB>>A@APOVRiaygYZev|TJH=?ABCC]jka;@BU]^RGEctc^fyt™MIGEHDBFdnlkloRi`^c^IJmz^\i}|yíhNJDENYXtiomac`dJp|w͑xtsIHLPVW_ywqpymTYYZTfr}~zunjkSLLQUXcfr}uKKEEGPWozzurkgqHOVJJ]brGEIHHlw}vxl{|uihpHLSYX[_WtuLEAGGBZu}qpw{ujfeHLOPX^][]KDW}MGDGIEgx~qqnzy~{qjFFDLKPTJABBGqdHLNYwvyzoos}zpmrEC@CEEFDDB@=GgTRXqpkkpxiefA@@CBCCGEC@@FYowNNFDFFEIWXgakacomt}ٯrii]KQG_bckfj[LHGFNY[fb}jimnldu{{}jf^LWYedcb_slgbdglrdex}{iviWW]_aabvssnp^[q~wgy{{{mkYW\]]OXUvoolozgc_nq|yhORSPOBBH\ZWdmv{[Z|}vwypJZIHGHDEjJGMAg^Z[a[V~KKGIHHEH\?HFAPVfXYZ_i}[XyoQJHHGGELEDEFPv]TZdhx}{yghsojyyusGFFGGIGEHoTCDDKaMHWbtj{s|klozrjtw~aƻy[[OOMJXzu~|~|kusxʮdeZQKLRW{zwkkstŤnvdbbMRQNUt|yyruplovŸǙmxqicSPOT^stzhfmw˴uw|dMVUQnv}og{ĎmhtUTRSRRb}~|~}xˬy~ǹxegaRVRRQi~}}ķyyoeYQSTRR`srsp}ĦǢ{prjm]POTdttǘ|~xƬz|dSSOUoszy|pmwq͑¯ͯƟyuVTSQdlxwoqxr̷ƪaQSPP_qpnz~oŰhUURWXknp|uosГ{j^]SZS_Ydr}rr}֞pogfU\RUbx}ξquǏmkaRPPStz{~ȹtw~˛pqv[NPP[d}ζv̮~||slfOTQQcĦotu˶yvvtn\PPRy}zOVqvzwuv}u^RPRQ\suRRTSZd||t{}oXTQST]RSRROQ}|vr]VXWYx|uobPQPPYg{«x{neUSRVrlspbPQSSR^[`¹kmg_RRQTplnv}PHJVOZRW\pibRRQUdjmuxuPILVSVXUUc͒ujiVQRRmfnYMLSUVTRSQiw͖uiiTXWNx||w[NMNZ\TOVXY|~xyrqyeɍzqq\XZYizvUYW]ZYUSTUjn~}rmblͺlVWXbcSY\jdmdTXios~fbmxϿ|b^ZUrUU[hotqZY`hp~ufmukwo]`\fbOS^rni|XXc^os|fvyna`{nkbbgh{eVZmq}eeaegec_`nwmekow‡{qngrx`NGXwjhkns[YY]]po}wihku~{nNNJkzulleJRSY^_~ozie`hmmzYXQunfOZZ\`zfcnux~uxhdYY]c{nQPS`\^YNZrtw¡~{qpnw[VT|glRPX^YUSNS}~ǹĥoqrndXUTʵyvh``^UTKcksvoldUUWғ~zzk_jkhWV[oŽqmqjROnͼgsztl[XYbȝ…xcKLQoƘɿwr_Z[[Ǿ~QHHK_ϼ»ïfaVQQ}ʚwQIGGβ·~`TUP³ػoՙx|mQRGJGDOkgmknouv{}^fdi}{y|XYPKDCLOxiizl^^ed}s}x_jXXFJJFLdihhvywzrderyra]ag{~^tjd^WJGGKSoqouv}seekxYX`j{fkqZEMLE\ery~rtwtoao~yvtZnt^}{]iLJJIHDRm}wwvqmurpnmr~kxjnkY\WHKFCCY{{stnmmovkmd[PGFEDDRxccax}~urmqndf`cQCCGWfdd|ouzqmֱmurYGGDI`dhh{ogcmh}麮yniJHHGV]ggbexnxyizyr|tvUGHFFRceezmp~gyx|y{|yz[KLLHMN`dfy~mgu}xady|m\SRIPJVPYgpxtedn{ybc[[MSIMXlp{|wvdj}vva_VJHIIKj}|jkmkmt}wfekRHIIS[wsm|fptzuwqophb^IKIIY_rddswqpkjkieSHHYI{ntyypulCHb~giotisfhqjUJGIGQh~utxhtFGIHMWulv~nfmoxdNJHIIRv}LJIIFEnpqnuvqkgRLMLNlqib[HIHDELYl~zw{mpc[JHGJf`fcZIJKIFQPUxyzuxbb\UFEEH~d_aisJABNGPIMQ~|vrze^WFFEJY_`gjkICEPLOOKL{Z|zzu{i`^JEGGb[u}seQGGMOPMIJH`y}rg}u~׈k^]KNNElooymTHGHSUMFMPQzkmghbai|XvmggROQP^mmMQQVSRLKLN^axynrovf`U_}vvcNMOW{YJQTa[d\MP^ct}}hsXU`mrWTPKzhLKS^ejhRQW]cyttkZekbfeTURY~~wWEKThe`pPOXQaclsz\lofYYxqjuaaWVZZmZLPcfqpZYUXYVTQR`ymb\aeqngznec\ewjWE>Oxvui\Z^agPMMPVz|Uedzwppoj\\^hrmbDFBbvkf^_Y>JKPVVuutcm{{ptyp\WT\bcoyQOIk~x`YGSRSXp\yWafhnfm^ZzwPQUZunbvHFJXTTNBPddgts|nlefhqrlTOO}tn[`GFNRPKGBGuppߎbejiqr[ROOkhu[TTJH?U]rvurekhgus[OPQpkk^Q^`]KJMb}~fdi|`MJfqZetpj`NLNT~y}nsYEILdvtkfSOPRx|xŹ|tnHACEXr[VMIHy~ný}{ukIBAApUKLF|yoƀnrcHLBFB?Hfa~gegdihnpPZX]|rqprPTKE>=GKsfdr^r|PPZZ{~w~vtktnwVbQPO?DE@H`fccks}ihngY\hnivXTY_~ruUkb[UOCBBIPjkjjqxk]]bn~QOWcy|xyr\ahR?IHAW`lnsfiolgXfto~mlSh}rgUspTaDDEEC?Mdsl|lmyiemifdcixdk`dbQVQCFA??Tyzsrj~~}w{jccdfzlbg^UIDBCBBRzqZZYXo}sskhexÂ}uhg_`Z^MBDHUa_\[tejofc{s|}sfkiTEECG]__r{f^Zc]r}}xvsole`GEECRX__Z\ozcno^onfrusk{hiMBCAAN]^\zpcgs[osuwzmpkmjlqlmSEFFCIHX\]otd^kuzxy~|~nTW|tiorraPJICKDOJR\fmy}wzy{iXV_wmm{{XZSSHMFGQafovxtmjW\rqkjXVOIFGEEasy~zr^`cx\_ezrl{^\cOGEFMTsukgb~mrWaiojlgfha\XGECCRzxssqvwsu{XcVXugkff``cb]MCCBCregxkwkbgfBE[vyoZaizg]h[]fbPEBDCK]skgj[eDEFFKTmgrvaw[cem\IFCEGPo~rzIIGECCyfkzxeckkfbaMIKJKfxh^WUEGEAAIUfy~yqxmylpbh\VHFFKz\V\XRDGHFCNLMnyxvstnnimZZVPFGGJv\VW^jE;>HBLBFKuvuxnvwjfo^WRGGJUVV]`bC=?KEGGDGsUxqomh{pxaXYKGFE^Snui\LCAHGGCAEC[q~shy^qlu3~bYYFJH=hihobNDBBKKCAILMr|bd_^XY`rwOluf_`KHJIYjzueHJIMHHFEHITWnodgdk\WLVtmmZEFHRyowSCHJWRZTGITXjtqq\kPMXfhOMJE{n^DCJV]b`LKNTXnsy~hjeS_e\zXtZMOMTtt|lM=BNb\WiJIPHWYbiozOcg`TSpb\g~VXRQTTewODI]`gfUSPRQLKHIWvxmcYS[^tb_Ync[\T`naO>8IjihaVTVW\FEFGJm{pK[[piba{osdbVVXaiucZ@@>Wjuc_VUNs9CDHLLhggWbp}mad|rniWSNTYZdoJICc{{tpWMAKIJNeSmLS[\yqtyziaeWRpmvJKOSxykbUfzDAEOMNI=FWY[hgmig`a_ghcMJJtjcNRCBIOMFD>B{mdcd]cfehhTLJJvxa\g~VOOQGE;PVijievciecljTJKMye``VKWWEI\xwqsyyfcerYHF`{eyP]je_WIFHOvxszrwhiRAEI[lk`t\MHKJmrn}~tqjcA>@CR|iuTOF@?m|ue{pqkaB?>@g}tNCD?uqovo   Kd%2,Selection Mask :7,:W;;;,:::::;;; ;;;;;;#;';+;/;3;7;;;?;G;O;W;_;g;k;o;s;w;{;;;;        p Kd%2merkaartor-0.18.1/Icons/Gps_Marker.svg000066400000000000000000000064471177067165300176260ustar00rootroot00000000000000 image/svg+xml merkaartor-0.18.1/Icons/Grab.png000066400000000000000000000065321177067165300164270ustar00rootroot00000000000000PNG  IHDRw=gAMA|Q cHRMR@}y<s== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz pHYs  ~tEXtSoftwarePaint.NET v3.07́pgIDATHKUGAUdBnh~->X20I$z6yZ# dVfc vjQ^JBbQ~2'-xy.4s4l6Tը\.SPl6+9{KtT*%=xǀ]&o8P3Kyd2L&)owGxːa]3`dD43NS"h4JPhwLpqUZ/ɆN~w5,DLx"A|z?WVuud"6<@|Sy3L:u8Dd)hf  K, 4\ ag DѡN׌ ήְ..wx=>3~uieomIENDB`merkaartor-0.18.1/Icons/Mapnik/000077500000000000000000000000001177067165300162575ustar00rootroot00000000000000merkaartor-0.18.1/Icons/Mapnik/aerodrome.p.16.png000066400000000000000000000005711177067165300214300ustar00rootroot00000000000000PNG  IHDRasBIT|d0IDAT8;HAYDX N.VI# >H#$Bʣ bNK"8M* AaIȷn[0?gΝ9X},&(F'E| L4Eh`9^OlgXl6Poa@JX# ?Y bKTQ RxoTE_0!,-ƿl<æs F [0cGl:qm!E9|={ ,!Vq_2 ZJjѳIENDB`merkaartor-0.18.1/Icons/Mapnik/aerodrome.png000066400000000000000000000015701177067165300207450ustar00rootroot00000000000000PNG  IHDR &c-VzɋC)-v EɱؽTB{)=tkDDRjEmBu$f ژwKN331y͛7Wx/y BwLA,83q޲{- &ΞX%0 !^_{?~GyyyDƳm=z4:666EWaQRRlA39s=#ycOVUW9ۇ` _@ P-/ȡd{{@8wR % '9eQPȖN D"GiG}vE/DrХh, t:9 !D<4o*peeEh~^$b䵾*w᜜;v O|>z{{a63ڋ*pڵkxB!"ÑVV!!Ab4E?/6ՔGee%޽{'(fIT-pE|EPٳg%zׯ mll^/ք@࿣磤D177'(H}X[[',HD2 (*P$TH@P"EB  (*P$TH@P"E"|`}}=90&[>HY^Y݅EB$)P׫(vh2m1͡vRj $nI4i^I <~xL[ҥKߓ7^PubbdR|ld||A kwyB ~mkkQq0bKG1>T@ P 󷶶l: [@c?s?q<'tbd XJrU Ȥ!?fPEE1 h#A7~44,< TF{&4 ~~'{Y d QĐY s5`%4WF A*Ij];t]@vPy`[8|ID#/͠ q  qMa)AV*();? K}d6IENDB`merkaartor-0.18.1/Icons/Mapnik/airport.png000066400000000000000000000016071177067165300204510ustar00rootroot00000000000000PNG  IHDR x[LPPLTE9s? pHYs  ~-IDATxc` !q<0 <01d1n/U_C_tIENDB`merkaartor-0.18.1/Icons/Mapnik/arrow.png000066400000000000000000000005001177067165300201120ustar00rootroot00000000000000PNG  IHDRJ^@isBIT|d pHYs,K,K=tEXtSoftwarewww.inkscape.org<IDATHc?( iX^54s El\r1220Rdk<(y`5 Z(r ,(fb` K_A!_k+3v|4^ `@R"'s44w0 43[IENDB`merkaartor-0.18.1/Icons/Mapnik/arrow_back.png000066400000000000000000000005411177067165300210770ustar00rootroot00000000000000PNG  IHDRJ^@isBIT|d pHYs,K,K=tEXtSoftwarewww.inkscape.org<IDATH픱A ̬ 2[>`ee#>#xX5灝̎ŪpձA $⽧3v;t^bLH+ue 3f[s[Xѐ,g&4F47 ʃ4P7W'w/&F%  @NS]2mԍW[?F~W]5M7/<4(?.G\YY<:IENDB`merkaartor-0.18.1/Icons/Mapnik/atm.png000066400000000000000000000003361177067165300175500ustar00rootroot00000000000000PNG  IHDR & pHYsodIDATx Ez㥈J,1Ft>N=s6J)&,5Cе-୥ Îe!h<WE7+?1F@HIXgHjI͓MR#R[xMO-nIENDB`merkaartor-0.18.1/Icons/Mapnik/atm2.p.16.png000066400000000000000000000006651177067165300203220ustar00rootroot00000000000000PNG  IHDRasBIT|dlIDAT8ӱKaw5CZtQu']Mhhipqqr\Ŀ^E%!6| y99y3M׳ P {xWt ~AR$( x?ɩ#<> con߃_k ML6iA.1* a -Hg1HSG^կF9c45kaոT "Vp3Q9>Ij :ʾKoh3عGЏÄc9rqwq[-LN#-VT1Y[s%(>w ?_VJgIENDB`merkaartor-0.18.1/Icons/Mapnik/bank2.p.16.png000066400000000000000000000006321177067165300204460ustar00rootroot00000000000000PNG  IHDRasBIT|dQIDAT8KTQwf"6- Jj3MVj1mբvpQPBtPhXR}r0pJ:(gԡycy֐.Nr,?E#븆%|NYa V1+x W(. GM6*y$)^ e `gOp6;`8IMX4hϸV6DōE<ĥo^؇} ua^ cEn_Bx'+x G*͠s23ǃ*3 S?oFWtRf4C&xfIENDB`merkaartor-0.18.1/Icons/Mapnik/bar.p.20.png000066400000000000000000000007131177067165300202100ustar00rootroot00000000000000PNG  IHDR bKGDtIME \mIDAT8M+Da猎cΜg|dcgB Z'L  (3g #s ;ŵ{뽯y!ŰӌWzQ=s8^E!h/@)\~Xm1mUH J >*%Ne_>p]Wuȝn/48F=Jэl\)+ R<SUN2_ 'pupzcQM#H& ?4^ڡVwk|DXOdLHq BBa'Lmbz[/[C\ًC;;;y󀟾IIENDB`merkaartor-0.18.1/Icons/Mapnik/beach.png000066400000000000000000000002421177067165300200250ustar00rootroot00000000000000PNG  IHDR PXsRGBbKGD pHYs  ~tIME +`;"IDATcqnĀ@g, 2R4E.IENDB`merkaartor-0.18.1/Icons/Mapnik/bus_stop.p.12.png000066400000000000000000000005411177067165300213020ustar00rootroot00000000000000PNG  IHDR Vu\bKGDtIME ٴMIDAT(uн.DA{(:%+!:N[p$(5>B; "HtbXcif k~H;gT->SH-0Gڲ8~ Yam)]R\"Ήu7Pű?8U\vZ*z;hR6\4dxu0Ӑa0'YnZ6%^{(~)y"{d?+h^03_{ )kjWNy,gVDiWvv'{JD IENDB`merkaartor-0.18.1/Icons/Mapnik/bus_stop.png000066400000000000000000000016101177067165300206210ustar00rootroot00000000000000PNG  IHDR u. 2gAMA|Q cHRMz%u0`:o_FbKGDԂ pHYsEE&L vpAg IDAT8˽oE??o^$E:E X IATNhp:$I בDV, i("CSN`{3Co'b>ofޛF$#O5M-Y_˟}Y,)I T1e\35:cwcە_67) 3 vǹ{R[v<ӧOg|ym+MOf2}1_,-q\|HEM0QiJX4LnQ ml4{x;q`G, 0h!&֖@~&zLSV $oZk~'OmxI h'% o'ssB<4>Z).zN|Xl$||5v{H o`GCyrO7_BiRzI°BeYTӔm !+ l[{{DGDZ6:J}uVy8;˓۷LW^^SO==~y#++\@Zir*fayfffXsŀ8QE J%* 2ѫ]RJ[ù` ضMPEY:uGB7&!y@jZ.p||\ONNj"v\.b^cwwb։ IENDB`merkaartor-0.18.1/Icons/Mapnik/cable_car.png000066400000000000000000000003451177067165300206620ustar00rootroot00000000000000PNG  IHDRrrtIME 5F pHYs B4gAMA a0PLTEO&ItRNS#]IDATxcS  @Pee=͉IENDB`merkaartor-0.18.1/Icons/Mapnik/cafe.p.16.png000066400000000000000000000005511177067165300203470ustar00rootroot00000000000000PNG  IHDRabKGDtIME \ IDAT8ϱJPmTܜ} '7 HݺDA.o n.]D2R Kۤ5ǥҦh2\~\tXzƌF P/R`ƧKZ>n%mol^):eRqΰ+ZC &.G<[Td6G~Tp}0Nj!Lѣ6_ &O`ou3'3r}1f9OlΌaà %-*p7\) Q=cƣiB?VַX>``Uh,T8;VamCƈ@uc2d>.TunHgi,.t:ƥ<O7Zɣg-F`3̝%ZrwZnM>i/KS_BC _j3FG"as,:IB`Y И2q"4IENDB`merkaartor-0.18.1/Icons/Mapnik/chair_lift.png000066400000000000000000000003461177067165300210740ustar00rootroot00000000000000PNG  IHDRAtIME BA:$ pHYs B4gAMA a0PLTEO&ItRNS#]IDATxcPJ1F@}/IENDB`merkaartor-0.18.1/Icons/Mapnik/christian3.p.14.png000066400000000000000000000003741177067165300215210ustar00rootroot00000000000000PNG  IHDRH-sBIT|dIDAT(1jQokeRo +!Br["FTJ `}ºS0z 摞Zqݺ; !Fw#>q7,"ߊnMJwl0-R,cVx KdUG؅T;a[uxx_1bPh}j!8IENDB`merkaartor-0.18.1/Icons/Mapnik/cinema.p.24.png000066400000000000000000000014271177067165300207070ustar00rootroot00000000000000PNG  IHDRw=bKGDtIME 9a@SIDATH͕MhU羙fHVJRt!HZ(%!EEqQĥƅ`0ԅ jEZL^'f xs== vQ:{}1ݩAi-bj/7].*π)ȧe(бAjqߎ{zo񈋂(2@M$FK ϝXB*ҝ5(Vr"`C&Xe|$#m7dpƌMvա;1Xussp C,_m\QU<} ~r}EIaIKqc6#K>uyې]B(OC\BV3?_J{3&vJD曐>N^/ob`rFxT!LU6vm'OŖUB&ޑs ުq% K~mHR(9_cՁv5^JɄ6y8.&!:;_lw4zUZLmFiK+5N 'cs;>\CrYy_+|qvyaP͑+s-9BK(ެYw ;n+$:[f\_4;KcnL9iPazQŋV1dTGN:bju kX HESC[ķ_ȎT9E+Jsl|H r .q$EE9ݴt89!e!JfJӏ1tM3i>dAb,֪b{X r|IXN0\#r`r^Syb}&Pae4X 1 _ҎRhQfI@َ Tb2tyIBߔO٘R;-v=+c}RX~H)cXj׿YiIoSH3ɯ6K*OZuig@f 8ld㤝sTjM9MY)e0-QޏpEQNY&uiʎp1cQjTNL#c|(eL-LUO$9Gǫ5S[7Sfzʛi,jI;hL#>إ 9+粟G5T7PZ=OH%(,,X3XU,kZ%,Wx(xft3Ua é鲯K/ZvSVXHѣ68) 13(E-?ZR^v&l{f~ϊ걜ˍ{"^e%rh[0f!LԺuj[F(`Sm=dUP@+eAKXIP/W|Z8X2/i r3^6ŨpV;,:Vnzm3VΥZ#龾J!" +ZP tZvT:@]vɬ=m ۲9<*&Y)WSUۚmZDsfV4UUOu*9Iۍ %oiRMF轮b+E PD@fd֮|"l2+Ig!i_AE_"04iS QmkgUu =S^d`”Ճ'I}bff3I ayRA@hDRR >% amQRha [[2EIDd,--7تU1]>7dG0:St}:Myy}qlݫEok${H3# n+(9y}Z;uI1l깼Tbcu _/hdߨ3zbxz\_>As~$wxLw8*Vʕ.2#)Ү\nR:lUv.||!9>Z=^.%-rief/43w"`LKL\Ww].L&l1܃{yoT^O3z6FJ fXϰXp% ق&`.Pd =gGTqkr/V\VjPن>~$81fuzJ=-SB^Q]pta|<_}ButmUxa"@:ҧ둡8?a-tFHñ5݈p.Qt v^;;<})k Z3f[b$CV)5Gk9Zs-qq8BC9YfgΚo9P2 Z3fhз?pv{H|ZBlKslٚ5g߲WR rfhК5Ck.) Wiv|OsjagN3fhК+Cw5Gk}9ZYfzfhК5CW+4gk֜9lN3fhКW=8 y3򻉌?.v\28cfu  ׾>w#U=7Z9<Խ:p7'i#+euÖzM]k&bp.kWmϸE} coul?_P/^OTD| `h0~:Zp 3ӐOY.G?͵\?bԼy+eu_¼\-۬fIfodkfo%b3ۥvyXJy]74aêm+Xo y߾z;LܙoC˞i_nC?mЂT=9@M}٧ATV;кtObwܻ}ad$ίz7+f-q{udۈhӛhgP6}"E疵< >YeZn[fn?ok>2]n\@9y8{cǯ9V1~J'lFuYIO##QoˌI^U\'eIUz/>Cϙ^wi{²'>OEH>G3#21؟NcXui{FӞbI1$gqO`.1?09ЪK1.?Sϥ㟪dwׁ}'dVfjc9bwwh40Lۉpw9$sr;;j5lܽUҕ2QChO3\DtYN6iM^є&c t?|PքywUiͰ'Y~X M8wC̘S߽vptx3?GmhBg{> -c7zU1 cd's0|3>n;m/"\Sy/R&Y)^ޚ>+Nܩ佸GW}EP4.\w~hEf5⸤rOG&,hܻD:*:*wxLh${ < w1 Vѣ;Oak9QvnAaүUIS2*W4^ uWk'% sJ 0_o|![Θ}KB)WT[eѶ1igi^tCf|K^GV:CαԼVgi\?Z~h?p&lVҚVҪCISXj=MXR%C=OiM+ِ2_,Z%r).7yOF0Fr{)y?[m>)\+խpRf\5qs\uM7C6.t1O`2mF_mftnԤMb^cdDk ϗ.G̹]wA9TE [Q8iAiϤMNd}Z.4I0]-[;At@^|{iHm+?; C8'gMeQh1}}[| w8YԂ6|QA7_Aw*8<6ݥMw@/iuoݧ3]q;=egc \C;>Ϥ!ep }V>>ۂUae FoW 0Xe|Ѯ|;r`g?AϦ6jMl^-#ր;@su(!PkI:DΟ`&c9M0\ 1܌M0UM,L"7051ɜIb51ɜI&kb9 uF>  6߂}9L8>e5q 7gh-HڛmK<=߹Z9"./"kیQ6 IT{T=U㍡i3V_3b򇬁o假>=,LAӻZATvƅ\ ۷lVNΝ=l]xN>%}nR?KrB_ mkBSx]N0 pjت MjlmA^fgfg3 fУFN7h>Uia}A۔A|pR/dgo`Oez6ؐH]RNHA*7؞.9nGjFWL&}4xN8F Nb\, *mkBTx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw&mkBTxԱ A;#S!QS+nʣ]ν@;ӏ68qQ mkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$j4 mkBTPx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 fmkBTxڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳmb-B#MPc؄N`;6.dvׄ, q((@=3*vc\nV\1Loz}h6wx3ogb=Vcq e 4if խzdtm \P0|p' #Pzܘrxpxv9JOo R -*"pl. |mƼqEۺ J5}r릪 aR {UE9,.&{ugB',V#"mfRRqvEQh"83K5ɣ~R/!j/3 9DYG?3%Eza4kvyסQcPC`<zbYi$;OkƀhO Z*Dq.1dzb &9Q]5&4O`-owC(55x1w(KT N+檀ٹYY[QDį/Sem)ͯX<_/Ikݰ4, ORcrКc9X'4H|_ ޴+ךon^n /\|55@W 2PA0\a/;bg+u84"E[gPR}2.BI%Kq#4^ρ4-cȨ@?,t( *ְ <*姆 os++6t--y:#ܙJKPG)CiƇ%c6æð!"M `< ѱ#4nʡHv \MeN!)殥k W%BLGD)r-dӧ/G'3U=8/We`3^1q/q.<&~ &%DKupV+:(@ ;M[9nh~+zu "=W129وgPHI^#*QѿLaxhN 3E\&t]/>_Kʖ.&#KMfBP+p&n{ 0]2e i6mF ʜtp8nSK\g_#/yׂ;IΠ8rGyC[)G7aXwc}VG0 ,9\%i]tI/kls]7ͻiCqrBB4c踛g1}ăXU Q7ؓٱ b3a-G$}=刽.'M+.xxtwlhF8"P81A2/dN/}8G]`UY ʁRƇ9Sq )OTE$'*jLCCSsQp1p16CGd\fa3ܼ;ԝ?GV[yQVVΒ@L()EP 'R*zYKgb\!(e|E8HZ'sy)0  c]qA2ȅ~vcr 5Qu3,%oؠ5̒ Hv㝲iy|Ks^(b.8Kqj9B[hyAܣuG)ٰU ǧn*[E \V-WC!SG\ly\Tf641DcĐVoVţ7> M슝WbzYA22 2҈1#Aq J GF2"v[LpDgj*ti:$ӂ[׏L=UA:xOeb-8q3UԠrtF>1 QڼJK4 R;ul#Y1l@2LE04, -(fQ"c/R5ִ2ELsZt@ƃ?C︪cDL#%¸ 8֯(6 ;-*9@Adgcϲ#?F\;C2zW~tO+)?,d}9L6)])hcV}.ђ̒juYP|d2΅)hA15>@G/w^[{3W쥰"S7ư-ծ-DӒ>_0g_m0ThI+`x9q{ٞI;9՚rLS˾aZt/ ኲjMf&+dӋb0՚J3 ɝFPQ?8^Z4SI_(Z=GmpLSbfP(Z~ZLc9;. EjJ}3Ђӷ4a&Cuj+Z/P<٧TqzȪ~V˂5g?8^Q̅*qdB/_ifzmQvXjuƭxK'MfޥKMFj}}_BEWbi즩tY{ڈeisjyf3UϟMdS 5۴ fihQVUrsi,%7=۷J{Ӛj {]U):W(l"f3 v]S,DdNW*xaB=8hpjE`hj'>"׸ϪyF21[SWj9 U .}JqR{p)Of<0.juW|KÂۢ[9~eы2y搗P׺jq-4#S7:Y&6U}VXZ_[nU%Yb}n"ڻ]-J`ڣu8+tc2W6zI%@fFWP<4rșv&b؊sy\V6#_ȾQc)vgM+5IuÏ)}rHRpU,+]zeFR]6*>)u٪]C2s¯}őz]jKZtҊLx!^hgDd]&|M\ǙڷM2cfkc'rCJv-g5m,6 RͰa=<6X J :M(\{~Z Hx?:_ Ԫ\ w}O}I:qb2{/[֧t݅ }yH7j *YuEtO#Cq{!\->rZ茐46ܯ}#}h=&sG~Cd+6%znWrx<{untOFLWꞘL}u]Zא孯X۞qm+7 |QSh]il_T}*> :GOʒ>)^} 3,+,eO|D=|:fLGdb?^;ǰ4=KbcHψ|]8'>b~;`sbuc=/%[Ub ]K9?U_S #N3[̘r#h`rH{$wtwSk&{T{V+(e'2#&ib(ځ%g, Bm3J)M(~(j8?H D۫\+aO@ޱ@qN'ۙ1{ Нjf-1`GqGp|Zcanb.O`3i >Yf}&ݺw^D_ngM޳ȕS콼5}WйS{q=IJZi\l%2LLjqIkyLX22Ѹw4yuTBG%tTBG%>* I>6xu cb~G5&v֦7rܠ9b3˥_M|e Ui6F>7"s75j NK|+a &C1#䗄R5ɷ ʢmc];P4Ӽ膬5]+,>Z-9uc9 /ĵ٩y':SJ1~|KO~fMj5iUYWk:n%zX*^]KFWȡb+[6<5͸k&oml]bweh9\YIy[<'żȈW>8p75'e˭ҐW~w%8AlpOΛ4<"bT6pxtm:SKv_f`OygD'lv{ԥ#v6{"="w}IC'^=,Y}|9f)vqt`:)4˫] vv7T׃\۟MgmԎћ )~3ZGXw8\?P=,LAӻZATvƅ\ ۷lVNΝ=l]xN>%}nR?pTK?lmkBSx]N 0jիM_>*d7Q Ž2-f0PB# Wh CZǺ5 ]Jp-e>:ي؋كY@\H>)J/,J[٧]:חs*2L7Nta2 $;NVl[1*mkBTx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw&mkBT`xӡ 1$Q$F7ݝG+ z7pn~6` W8BkmkBTPx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$j? mkBTx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 /5 fmkBTxڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳI ˜ W7{GZ8ML5ffpTSzQ#l |g^DoBQZ .!a$&>% nF}|x%yI H,>b6_6n7N}75j9Þ3 IENDB`merkaartor-0.18.1/Icons/Mapnik/danger.png000066400000000000000000000002221177067165300202210ustar00rootroot00000000000000PNG  IHDRR9 pHYs  ~DIDATxcs6èѣF=j?<"\\J] 7xsIě;U6CF=j0Xq|IENDB`merkaartor-0.18.1/Icons/Mapnik/food_bar.p.16.png000066400000000000000000000005701177067165300212250ustar00rootroot00000000000000PNG  IHDRabKGDtIME \IDAT8͑?/Ca. fII%_@$6X])H4m7V`Vi"Dr]z1>9v_46F9"bޫ>=/0D eĸd.y/1ni-fL*\u -w,Xiƫ7|pCrp# GU:\K @n{~ (, E*­YD)W,IENDB`merkaartor-0.18.1/Icons/Mapnik/glacier.png000066400000000000000000000001721177067165300203730ustar00rootroot00000000000000PNG  IHDR( ϭW pHYs  ~,IDATx1 @M7ӞX,bX,ωE>IENDB`merkaartor-0.18.1/Icons/Mapnik/glacier2.png000066400000000000000000000003071177067165300204550ustar00rootroot00000000000000PNG  IHDRF8db pHYs  ~yIDATxӱ @Ao",B##t n8~ُc7@B#BH !B*TR!BHZj/{/W_*TR!BH !B*TR!BNx_h xشIENDB`merkaartor-0.18.1/Icons/Mapnik/grave_yard.png000066400000000000000000000004431177067165300211110ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYsEJMtEXtSoftwarewww.inkscape.org<IDAT8Ւ P?=YBfz =CLC -1ϴV\Tn?l;>?$řSPy:Uȵqv0#6u7*\-E)k=  #hl5/>K"z+ ހ'i+IENDB`merkaartor-0.18.1/Icons/Mapnik/halt.png000066400000000000000000000001361177067165300177150ustar00rootroot00000000000000PNG  IHDR& ) pHYs  ~IDATxclG q"i@IENDB`merkaartor-0.18.1/Icons/Mapnik/hospital.p.16.png000066400000000000000000000010551177067165300212740ustar00rootroot00000000000000PNG  IHDRabKGDtIME %vɵ1IDAT8?hAn$x@Ec+bB-BJ;-b#JؘB ]AD,l킽=2өw,6Ø(y 3MF*@N*"s`aӀJPX0 2 ǴcBEXG1ށ{!|O5ʇB) ,fWG.{|$Ҁ OS_SVTjG[Ib|Jg4,!= "1m <#IENDB`merkaartor-0.18.1/Icons/Mapnik/hospital.png000066400000000000000000000007531177067165300206150ustar00rootroot00000000000000PNG  IHDR sBIT|d pHYsaa?itEXtSoftwarewww.inkscape.org<hIDAT8jA]=Ru6 Vv GԾALiB0J4"m bÁcg9'9m4E0FHtu`aE1 CE$X ]ءj9kTX>)= |n#1ֽj;Xq7]̻' fV/ 6@-^?&mq.5H˫a{Ҁg-K۹c7M+Aj1̝ץ>4m*Xeam5{ZۉJWqmysAzsum L<0"<]A301-Դ=%!v ˆ l]FQIENDB`merkaartor-0.18.1/Icons/Mapnik/hotel2.p.20.png000066400000000000000000000005601177067165300206410ustar00rootroot00000000000000PNG  IHDR sBIT|d'IDAT8пJ\Q\o4鬂![ZZ$bڀۅbiC %p!i.U4{&b?03;aTիw@[c]m`AǪz3 `g ZW0+g>ަ’~WV7.4IJCDsGm`77j,rMIFlD;-MT4k(r,& ~?YUw5*8!~{0fʺ2BIڻIENDB`merkaartor-0.18.1/Icons/Mapnik/islamic3.p.16.png000066400000000000000000000006031177067165300211530ustar00rootroot00000000000000PNG  IHDRasBIT|d:IDAT81KA_"(",NR9l< kDPC,DDAԳO&l̃ew7oN zfaHi7}4tSƘVw!!?`EIENDB`merkaartor-0.18.1/Icons/Mapnik/library.p.20.png000066400000000000000000000013131177067165300211050ustar00rootroot00000000000000PNG  IHDR bKGDtIME ' mIDAT8KHQόcczbAQd0=AW֮"%)jhP(*hQʰzP=h-'BJѱ?-#mF]x6{=sLh,DqBKNf5!"җ7cfI}3>0(SߑEN[CzE+{JnMlp>LYh[;Oac:~ԙ-(y!hiռGos# "DhTLη6cE) =%1q曁J)&-.oˤG1LA$y?7nyP]+pχh0m- hL%L1p5>IENDB`merkaartor-0.18.1/Icons/Mapnik/london-tube-24.png000066400000000000000000000011551177067165300214400ustar00rootroot00000000000000PNG  IHDRw=sBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<IDATHՔkaW 7(T .vЊkVTĹP(R[.\JtbmNj=iKz\>.w{;#ԑCm`jfK1 RzIzS4NފO; ` 0>yicCܔ]A*b{,7U*Ҵ"n#fRtvE?RNu3x%NL| oij*<3$\8LJP-wv>Z@р-~6P-dW'Qd?S'e]v9dA-* rn.AroiQ8?5=*Hka(J1xg#ɘ@ 8=ݣT,/:ʏR7HbD𺏝|+J6h~p(x(898N3 q x ϑ^u-io/3e*IENDB`merkaartor-0.18.1/Icons/Mapnik/marsh.png000066400000000000000000000011551177067165300201010ustar00rootroot00000000000000PNG  IHDR;0 pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?@baL @ aba/Tx p1bc-ŤQ)1ja@1!/B/@q/U@! ŵ$RRR<RW| q@<A @Am eZAi(D 䠾@ˁ[jbD.>EP#c9Xēx#Atf,UBv0@ Z,$zW1K@1T%@VrЀY @f1@AW ;TMd=-T:@(N pG z jbYH_։K)  F:Mr3@bt!@@,4 D" A u?2 @x$@>40zjQ tuP3Y4`"@ X%`nw5#IENDB`merkaartor-0.18.1/Icons/Mapnik/mini_round.png000066400000000000000000000643441177067165300211430ustar00rootroot00000000000000PNG  IHDR sBIT|d pHYs  ~ tEXtSoftwareMacromedia Fireworks MX*$tEXtCreation Time10/19/07 {goprVWxY 0ߡc2Kԍ`F yc5cJmjZzM&M_0+>x/>L :4HmkBF)3,mkTSx][sƒ$%d+a_TO(bJbJ ײd%^v nUJ 1޴nfws:ә>2&CgԘw7:?am֜qny]p mާ^{3kFj(CeWzD9r6߃Uh9M Z_pm ˍ}yÛΌ3owq=l`$CmmZ]:zC}V>}:ӢO6כΚg}{c7cr^HпU֔ 8z 3+h?$-! BC\% όm ܺ6ܓ܃jrܚ\n:;a@ko{]m!# X )]+L㐂i4* a z<0i <42p+ ƣMzjwL9g_)u*A H=)VTDW A_8. |kƼsz F jYYR/!VJԮ(Aes7@K\\,aq1imK:f1h"8uT 9ge<,ΐ1qi$1f@8#*;QILj!^,J=tB\<Ɗ"%~ x-!_Y^VciiZ@pkҟR7m©J8y`q5}$_ƨM>cpoNq^\|@4h! ,!'pX(l桂`xADR`3AX vv= ߺݒ$67 %,Xaz.O& bI*@^fa΀`dXxt_Z$JqJ~L)8,Z-eyw\ ; 9Jatw|̙: &ÆR6m16 `= ыht )Ёp5R>qBS,][yƫa3qfoEt>cc&"{|o\2i֤ȜX':lFd#C)O)_J DdBj.4XUt7f TF &#_u[!+hq= JI t$n+K!jG$YE~ y4)g9fPЋ '!ė>m!h,7XA'!H-T@.0=24A9Qì2D00tH2qQ,>AqÝ C . p-ʹc1,!b'Ėڈ*M ?y(!w?GI8$!Ṋte9lQ)hHxA\w'R(P衃aMLBɅ2"Z} `g'9 vC(zu+cy`#-([Woo5(8VȓIƤ0qJF,n Stǯ.*>@i*8S`|J >Ri:*/eUymQ]\XxHΙ)H?%-E8{H6ͬH^6H,Fwoq&D{查QE%,ȘSz_5$vZO;.ZQPӐTc}DWH݁3["T 4H!KǢ3 gOY8#Vs8,nf։ _"%%D>O|"S[8&Y9g "m:uYMV/i|_K0Xm;k(|d :UH#H>7Y绰7:0cMZölSoߏV u%}aJ%/$0hU F*j"@Ôj*\M[Deh+FvaՔجXFO[*|* /C?VSШVP=zgZI$¢qTSָVV2M"Wt0x55Mj5UaGaʾ|Ìj*#zD*m)= "W۶'3Ow1ߦRdmvY b}\ZpzB&C:u+0K \n,_ Ǡ A bAcMLF˂%[5-A2ŸpA#jZQ.md\#U Y3^1Ef`Fl&8:p쌬d#}RA&x8/r9CXv٢IllӊF*Gu%7rmlh4#&oZ)Fn&#UK3Ŏ5qD|QYFʍ" Жc miH:|!i,"64$ٍS2Wm,]d~A(j, W hBӅ%u[M&xX7B H`Sǟ4ZCcxm/RC HA@pFG=e >% łcѢ.2ne ы3yꔗP,=ֱ/jq-VTV3-JS[,ZXKk[L_GU,`.[l{X9!vi)cZ:-x5 '(w3kon7o<i|y-McgGkA [z^ WUEjW=Q+*IczJ~Wc?'xA_AsӃ{xF=q?vpG/I ٕ moEE^VxX8řh=9i]yb:2^/43/wE]^uVNSoepfk2R&~}Ȯ2Sj+51}ٿP֠?"{ؙ"[N9ƊP,-){glL9/wYuWF GW;Dߎ$6D7<#HwB{\a_r 4tAH^±5~g1]q.Qt v^dzPkf蚡WZKqYst5G]s=qtPp酆rUs5;\=8\YR횡kf蚡 A!i r\kή9욳9qv)f蚡kfr -az]5;?Rvjv9b۰sf蚡k2t蚣k9rtf皝kv1sf蚡k2t욳kή9z]5C ]3r g!ox Dx8Kdl.`cߧ Ꚋ ?cϹZMț~5~.(*BLU _=dx i-a+em/x"½f/um)mk7lm/1} korQM:}|!h(=kvn&*f#>-څ;LkggZZf*L~9[Pݧ;~ByoŵLljU\3k%;*͋oٶ5򷋚k^*;yX|è2<,^xX,*k$۷qV^M|F&rsqLɐ3u p-z?jx Ae+xPY6vS'z'?[}adp~u먟le֒01_Hzsں^Il.O9}i^ͅ[emy\m\A;e9aj>GU(ecwz;]VqؿVPIj/Kҧ)M컈OR3R?u! ^)K yw|%Eݞ%X8g#2T؟N1a:^HȾK)wZM !#,y.Ep֍ @LKp0y1WRwȾC,V7+-1Fw7i60Lpw9$9\zG+=sE/ jYVbԊl4sXEgT3Uhn2@SCUhMA,Zr:_#ȳ7dwG2yN ۅ2%߽o^fv?G}6nY(Q~qN{]VvH<_J>wcGgEOZ)}~œu"WD9\qFBKډ,1jyNHUFƊ-̋>WʞLaezt uUJU*U;&!5*k1;`k9qvA'/G+$9_Ȟ*W4]%}VٍJr\@>\o |!3|b̼S^I Wpy񭂲hm'efvSz.nrq5ōG|cw񳃨}Iy!{$Z'MDOKZGxRL-aфZ&jZuy?Oz xݡIUƂ+1+9c-kj̗?#?yߓVbBhitEmq\b;a$573e_\|Ua_a\1B[\= ;41n5X742(73n~v(KriӱS}l:yE5@F <ӀlBWPudRN2*Jl`5iO6eEϢ*67fw:y'ܺ1]f/pt{3M]軿ۆOMmasG=ͷ{7^:S]7.|@ώ[? ᔍ^mMotvq `>߽~t{ԝO]7mzmhR~* ʟrC9ޣݽ!7 735sl*l`; ʜ6`*.C~F='`|`s'obAMgj"歽=TUk-oNH-o6-J6}vZېAi[mvɊ4_aL_x0aCAw:|av\벶2GF-Gg?}<˙5Np =gurt9o۵ml>A{; Kݣ)$Z59L,lkHS:n%깞mR5ݚ#S7զfX}N ˰uZoQ+Iv,:F4;h横t?vHv}Wn'NB4㝄8I*A^KLZ7Uea;uKN‘3pVFYXNlG [Dvf:em6ma'ISuSf,A"BK93K%4V7SY+j0rFrVPS,r/T%8z:֋dxބUC ϮCCc0E#сGum?)4=+mkBSx]N0JU BV `o6IfL8VjĈZP9uo8ԢXI*tc1Z b8$)¦s <=ٍٜEdTC* IU!PaNeWS~>sjtą],X!.cw^U[jqN]*mkBTҨx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw#lmkBT@x 0 @N2mQRH(%ƭ"1{z[57sk ߛ7u3JmkBT x흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$j- mkBTbpx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 6fmkBT-xڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳn|>1Ƙ?DQqPJ!" yEQt.6@eLӎ<v;6a)MS1^R uu\U՗wdZ,k$!IENDB`merkaartor-0.18.1/Icons/Mapnik/mosque.png000066400000000000000000000017771177067165300203120ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME e*tEXtCommentCreated with GIMPWZIDAT8MKLekfAa|D%TST0M=oSML=LxCIIRQ+Z +ϖRʲ0'*!e%r)n.R$FxXq Ii'A`U}2f\!̓:*RCډ*|x̮B77nGţVL$P>Z$TΖ]ˉ-LK çή#=;z,Y,jU#Qde> 1("ML` }6L**`*S+)VXtțYtdgH^ J&Մ5Xag+'1:'D~!=:󵾟Ze^wi'H$Rg,q1} P(X r$fCIyIENDB`merkaartor-0.18.1/Icons/Mapnik/motorway_shield3.png000066400000000000000000000003731177067165300222640ustar00rootroot00000000000000PNG  IHDR%wIsBIT|d pHYsiZBtEXtSoftwarewww.inkscape.org<xIDATHcl}j6Oǯ? %, ,beyßD/ QG-|QiXҹGzY?^= %?~[=\#IENDB`merkaartor-0.18.1/Icons/Mapnik/motorway_shield4.png000066400000000000000000000003571177067165300222670ustar00rootroot00000000000000PNG  IHDR&B޻bKGD pHYsiZBIDATH Q 6 4"P(, h_h;^TSPf֤/j"x2Ht>#-RlZZaP=۽09asX!i?Yi lv R|E b|E, IENDB`merkaartor-0.18.1/Icons/Mapnik/motorway_shield5.png000066400000000000000000000003151177067165300222620ustar00rootroot00000000000000PNG  IHDR-I%LIDATHcl}`%CXXY> p?h?|_ C@;X>00 Cu4FM/0hz!h'>1p@;xѫ~gv`G#fSIENDB`merkaartor-0.18.1/Icons/Mapnik/motorway_shield6.png000066400000000000000000000003171177067165300222650ustar00rootroot00000000000000PNG  IHDR4nIDATHcl}`%CXXY> p?hP^*Ͽ01>8/}v%`Ѷ?46``CzhQ v0<']hP^*Ъ={Y`D #f㓗}IENDB`merkaartor-0.18.1/Icons/Mapnik/mud.png000066400000000000000000000001501177067165300175460ustar00rootroot00000000000000PNG  IHDR PX pHYs  ~IDATxcxv"@7u$K|LaIENDB`merkaartor-0.18.1/Icons/Mapnik/museum.p.16.png000066400000000000000000000004671177067165300207720ustar00rootroot00000000000000PNG  IHDRasBIT|dIDAT8O+QI»gcCo(ƎOP>/`aaiad1ʆRcsGodR=SDa2Ű]Mc@<2rǙ'/C X˜=N3}ߧRE x<BIENDB`merkaartor-0.18.1/Icons/Mapnik/parking.p.16.png000066400000000000000000000004701177067165300211040ustar00rootroot00000000000000PNG  IHDRasBIT|dIDAT8;JQ@1QM L ݃&&\@o FD0_`Tz{tsߊW#=rO+:l1T `-b;F0)*ʭ~]ݝh+-lW $+\Qn0(gU_i nk0(w*~D C|$]eSKΈSyvX6ҝ|~ޣAwgb지 ߴHo<2G}[IENDB`merkaartor-0.18.1/Icons/Mapnik/parking.png000066400000000000000000000006311177067165300204200ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs N Nw#tEXtSoftwarewww.inkscape.org<IDAT8KBQϞ`b"494CC⠛МH" oz%|Ĕpq\9w\FՀ Q?+ ׈5`Fޭ@*u(oBDždtad{u :A*+ &T4M3rW.N"pvw`*nFK 1_BOEL; h0vuR ɔ~a[YԫL%:yHBIENDB`merkaartor-0.18.1/Icons/Mapnik/peak.png000066400000000000000000000001671177067165300177110ustar00rootroot00000000000000PNG  IHDR pHYsod)IDATxcs>¹SDWDtIdEaΨ-IENDB`merkaartor-0.18.1/Icons/Mapnik/pint.png000066400000000000000000000007461177067165300177460ustar00rootroot00000000000000PNG  IHDR o? sBIT|d pHYs@tEXtSoftwarewww.inkscape.org<cIDAT(ѱNAv$(Xkoiao/`b+PKX>QP#[noYn-@ИC&d3/3*zT,9JRkRcR٨ggL !^CnI< D1i%f]VɆU2_UUv֖>h;+"˲6NrAb.@מ L;<_ M%xzr.pҡlBhֳ:J'@ ƅQ49::@l sOA:~fs.RHG N[eRیύ$s/ WFIENDB`merkaartor-0.18.1/Icons/Mapnik/place_of_worship.png000066400000000000000000000003211177067165300223040ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs N Nw#tEXtSoftwarewww.inkscape.org<NIDAT8A @ 3|oGE/1!t$Qfjoj8`YZ3܀xAz$*6/>h~IENDB`merkaartor-0.18.1/Icons/Mapnik/place_of_worship3.p.16.png000066400000000000000000000002761177067165300230630ustar00rootroot00000000000000PNG  IHDRasBIT|duIDAT8ұ O,N44T.*,B&Ԅƚ)[ ׽˟{?Q#裀- b'A@dm$&sUYq_<И/zYIENDB`merkaartor-0.18.1/Icons/Mapnik/place_of_worship3.png000066400000000000000000000001471177067165300223750ustar00rootroot00000000000000PNG  IHDR PX pHYs  ~IDATxc` .(,DCCEL,2">IENDB`merkaartor-0.18.1/Icons/Mapnik/post_box.p.16.png000066400000000000000000000005571177067165300213140ustar00rootroot00000000000000PNG  IHDRabKGDtIME ' IDAT8푽J`/%ip;qp:)-:88]W`'vpt8٘Ib(t89 ha/U7&w;OFD'#uFA 4v0."X㳇2$Í>PwżUh"971cu#A Z_]!òbjdpH]S,y!pf/+QS1IENDB`merkaartor-0.18.1/Icons/Mapnik/post_office.p.16.png000066400000000000000000000007561177067165300217600ustar00rootroot00000000000000PNG  IHDRasBIT|dIDAT8uAq}88i"Y(9HS.ۖh{Vj9!(=M=ldۺhxaSQR+vaxxRW{L&oF SJ>8dAkpo4;A+E6=`'8VO.@#K،aÑq_1SX*X-sq|-_ b i\հNx,>`}$/r. aC&U\Ȫxa'p:B.00߆pOeōhŵa`YxY I [R1YGќY[DQ?&i6RZqm˪S4&4[,o#IENDB`merkaartor-0.18.1/Icons/Mapnik/post_office.png000066400000000000000000000006351177067165300212710ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs N Nw#tEXtSoftwarewww.inkscape.org<IDAT8nAE$+֡1aXA!pG @#(RDmY ubvR6d{Lf}3{Fg0tHogzI`$/{Ƞ*IENDB`merkaartor-0.18.1/Icons/Mapnik/power_line.png000066400000000000000000000002031177067165300211230ustar00rootroot00000000000000PNG  IHDRQe pHYs  ~5IDATxc?:^vd~c}l05Nc85\K#XmC1IENDB`merkaartor-0.18.1/Icons/Mapnik/power_tower.png000066400000000000000000000001631177067165300213410ustar00rootroot00000000000000PNG  IHDRK0 pHYs  ~%IDATxchokD pIBdnD5btIENDB`merkaartor-0.18.1/Icons/Mapnik/power_wind.png000066400000000000000000000011761177067165300211470ustar00rootroot00000000000000PNG  IHDRh pHYs  ~5tEXtCommentCreated with The GIMP License: PublicDomain VIDATxc`?ϟ N:E߿3<455=J1]2dqssw_M&911q:;;ﰰ01/ W F~~>0VVֿPvuu qCCÓNNN]թ~b(//i?~r6DtNNo"ˀ % 2e¬޺uttt,ܣwFQQ6֮9J<:y&Impt< b\u$2r2<<<_@ h2vik߂񝝝v=WVzww 7dD(N6:w 06l켠sߣG3@W.l0Q{?bayf t|PPR1.-nѣc Z](3IENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield1.png000066400000000000000000000002571177067165300220650ustar00rootroot00000000000000PNG  IHDR;mGvIDAT8c|[!|!73RuSa, B Z"P LjF 5dkj~̐U{Y"!wΨIENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield2.png000066400000000000000000000002651177067165300220650ustar00rootroot00000000000000PNG  IHDRxl0|IDAT8c|[!6` C'3!ng4ןRca`````hhբB DMCQ F-`" û?jQw_J,X~P(X/!w]IENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield3.png000066400000000000000000000002651177067165300220660ustar00rootroot00000000000000PNG  IHDR%wI|IDATHͱ @DJFp‚V)h & hG˫޷\~Hz{:0LEg9ymI-kψ/4 S}}NjTW!wYIENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield4.png000066400000000000000000000003051177067165300220620ustar00rootroot00000000000000PNG  IHDR&B޻IDATH!@@_Hd%G@{ "j8 { N@҄lM5Ĩ'8n@`^EͲh}zjk߮Q&eڐLLLla z|t0btN[!w$NIENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield5.png000066400000000000000000000003051177067165300220630ustar00rootroot00000000000000PNG  IHDR-I%LIDATHα 0@2#04 bBiH" Q)xOw1n,]7)8NA;bKSB;򏜖RrZJNKi)LC;oqruO!w@ IENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield6.png000066400000000000000000000003071177067165300220660ustar00rootroot00000000000000PNG  IHDR4nIDATHϱ 0 XDr[PE1BIE~ 8EctM e'ga $VtvyH<].i!=~}IǤPqruP!w+(QIENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield7.png000066400000000000000000000003071177067165300220670ustar00rootroot00000000000000PNG  IHDR;cIDATHϱ 0 X2#0 i "'E f0_MpW΋k ܔr/!wFb0IENDB`merkaartor-0.18.1/Icons/Mapnik/primary_shield8.png000066400000000000000000000003171177067165300220710ustar00rootroot00000000000000PNG  IHDRBiNzIDATXб 0D X2#0 i "'E n&xzton󲮱hnG( tmXY =_u4L󼄶M!wpKIENDB`merkaartor-0.18.1/Icons/Mapnik/pub.p.16.png000066400000000000000000000006611177067165300202410ustar00rootroot00000000000000PNG  IHDRabKGDtIME !qq(SIDAT8nSA3^;r줁bGi#‹K& HJT}k BBvomv|{vY* d|]w sɆ|lOόoo?tvieЏAPX%Xm\zNי"]C'T;mL txn7g n'2A.6AF 9/,mDTgq^AV{03;m\e"GtxYO%0UJEPԁ-P)*8@brE \6P/ a" l3pRmΊHrط Z}7"IENDB`merkaartor-0.18.1/Icons/Mapnik/quarry.png000066400000000000000000000002031177067165300203030ustar00rootroot00000000000000PNG  IHDRR9 pHYs  ~5IDATxc8?èѣF] գF=j4FES4jChgfmm*AIENDB`merkaartor-0.18.1/Icons/Mapnik/quarry2.png000066400000000000000000000002131177067165300203660ustar00rootroot00000000000000PNG  IHDRR9 pHYs  ~=IDATxc8z0èѣF=j4ݾqQhQid$9H:]=jt0@IENDB`merkaartor-0.18.1/Icons/Mapnik/recycle.png000066400000000000000000000021361177067165300204150ustar00rootroot00000000000000PNG  IHDRw=sBIT|d pHYs pOtEXtSoftwarewww.inkscape.org<IDATH_LU?-nӖ!$sd‚h¦A jb,9lqldflfA2VH RKx$'=9sϹWTx"" qa>oY.8""xDBDEerIf6Yd 䳕N'u$YnV.3@!88("ɫv@1M<EUKU#M&XbG 4l6aͰBOK=8BpsAU ۪2|"fJQOZ]Z.C> X*(u9@4` }.ZkеCj=eq *IKɫ=ŔӬᖪ,rY̛g4\ee貎W1*X(zw|w+[+r4U%v-WkJ+ʣLcg,8}hC YYb? 0$ |O2 6rt]U,FPzS (1j:Z@;+_t琕7[qUm&:^c|731Y9C1t1o--9)a]6qQRt:GGC0!1a6&B"J]kMA0?_o;5__eIENDB`merkaartor-0.18.1/Icons/Mapnik/recycling.p.16.png000066400000000000000000000010621177067165300214260ustar00rootroot00000000000000PNG  IHDRabKGDtIME 'IDAT8ő1kSQI N(P+Bqz".N"JD,4dQPZ,AĂX.M{|i.iN9rl5$j} @En6=ut<},Ȟ뉟9X͛wĸ-VLLuTd >$M9!0%0iHvg L-ݵڴNi&\w@D\V!I+fٙwW㏫uss Hw' l-`h/ >; t _,_FȨiy rLkj?-7{)YUˏb%xu`YePJ@1o Cܨ5~; (r5ß|m#iԢR-U3Gz1YdMB5QBMz]oǞmE,[KIENDB`merkaartor-0.18.1/Icons/Mapnik/recycling.png000066400000000000000000000012051177067165300207420ustar00rootroot00000000000000PNG  IHDR sBIT|dtEXtSoftwarewww.inkscape.org<IDAT8Kh]U߾ :&҂ ⤣!tl!:.I1 >@k>p jq=B&" B(BԉZQ6Avɹ\ۯ"B3R{Hb;Jqy&0Ur "ͺfc5/zGp:Ui4Ui'[&ه-$~wNC[+oƱȱ ?`"?/ȱXRbo'FR>ǬJOz.q;r$]#XDmW"Ֆ=J}-+I- z{x!r y<]L6`g5<7;xȩx4\Kio89"w74V>—09hsVb XũkK[rd\Sb#O!U(>g)rC}ڎDO6cJ1Oyz徽5_J9lK\B?ZBK"^UvcY͗.|mX7" RLc#IENDB`merkaartor-0.18.1/Icons/Mapnik/restaurant.p.16.png000066400000000000000000000007661177067165300216510ustar00rootroot00000000000000PNG  IHDRabKGDtIME !qq(IDAT8oAٵTԔ:H@H4N":$R!!?BQF#R聊 ľGᳱe-73NVt o?fv7^Sݷ-dyg??l0gλ/7s3=[!u:ӍI/Nyܛ9sM֪ h[xhfD ^P#8wqn@53yAVf=I <@V`|,ydRM:⊤fv7F] Ҡ0W3]9~4eGg bm ;$S;,)f¢IߡfU%xqr#MEd\"d$Li*?2lIENDB`merkaartor-0.18.1/Icons/Mapnik/scrub.png000066400000000000000000000002461177067165300201050ustar00rootroot00000000000000PNG  IHDRR9 pHYs  ~XIDATxcx+ètiH 1ȈBsэFs2 t=jH2|FSo4€!XȐc4`M|FRIENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield1.png000066400000000000000000000002501177067165300223620ustar00rootroot00000000000000PNG  IHDR;mGoIDAT8c?%C` C+g$kSa,  Z$^w&5b2 d?~V\#YR0CV?2 uSjIENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield2.png000066400000000000000000000002561177067165300223710ustar00rootroot00000000000000PNG  IHDRxl0uIDAT8c?%Cm*0&V "ϨjR~ca``````Phע|g`XZ0jR=UM~S f1j4f뛟R0W?Yb:IENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield4.png000066400000000000000000000002771177067165300223760ustar00rootroot00000000000000PNG  IHDR&B޻IDATH!@@F 6l]-j!`0B[m/;W\~G[@%rkW+Re;ɵ[LLLnai BTPA%tR&[IENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield5.png000066400000000000000000000003021177067165300223640ustar00rootroot00000000000000PNG  IHDR-I%LIDATHֱ P@ `iA5luf/6jCA'?`O( ɻ&cs~CQmM60 .U/t~ڎ-Z*CKeh -%zwTkC O'eM;ۏIENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield6.png000066400000000000000000000003041177067165300223670ustar00rootroot00000000000000PNG  IHDR4nIDATHֽ@E!&mj6a&jB@; ?%,3 n2'8.=%'&Jy\\'w|zR{ ,H; ΂  lA~('ϩIENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield7.png000066400000000000000000000003031177067165300223670ustar00rootroot00000000000000PNG  IHDR;cIDATHױ@E $mj6a&`B@&; 5O/[p e6q5Ɍ NtC.,V+bX,Vݏ@?C<3X“R_Av'IENDB`merkaartor-0.18.1/Icons/Mapnik/secondary_shield8.png000066400000000000000000000003121177067165300223700ustar00rootroot00000000000000PNG  IHDRBiNzIDATXױ ` kװ Ep kB n{&ex.m^iSn !xRG!!!!!!!!!!!zvП[b4}KzĻOTfgIENDB`merkaartor-0.18.1/Icons/Mapnik/sikh.png000066400000000000000000000024211177067165300177220ustar00rootroot00000000000000PNG  IHDRB}sRGBbKGD pHYs  tIME 3 5tEXtCommentCreated with GIMPWlIDATHǽQHY;%: 3&e1P:mT!b/m`mT(  YӃ1P9S4u1M>ͿkZp=~s9*5XdI7o~UY*ĚaggoGuvv@=RݫRɉt:%ikX*##5;;aPUU%SSSoRQQ!>}t0{i^x^jjj*ؿD"ehh(uH(b˃rag8٣;F{{J éAΜ9#NŋinnV%eժUTWW شi׮][YA"-[{l66 yJzr0 rnܸA<_ 栯idffH$H^b1$+WǏDQzzz@|dggnd֭RRR"`6M|>ߢ5JD"x%ٹs'x<b]$x/_NggvMj(oߢݻիURHcc8Zѱk$u^YYf .PQQu|(X,<{uʕ?=_K.A(vž}Zvͮ]x\lL?D1/YI?ы}| ~ГEK7caOx 3vou7\c!|dҁ7!tC\ b7W$뢑z<܎6֣ahz?[cIENDB`merkaartor-0.18.1/Icons/Mapnik/station.png000066400000000000000000000001371177067165300204470ustar00rootroot00000000000000PNG  IHDR oG pHYs  ~IDATxcl܀ 1 s9J߆IENDB`merkaartor-0.18.1/Icons/Mapnik/station_small.png000066400000000000000000000001371177067165300216370ustar00rootroot00000000000000PNG  IHDRox pHYs  ~IDATxcl܀h+P!;;LIENDB`merkaartor-0.18.1/Icons/Mapnik/synagogue.png000066400000000000000000000005701177067165300207700ustar00rootroot00000000000000PNG  IHDRR;^jsBIT|d pHYsy(qtEXtSoftwarewww.inkscape.org<IDAT81JCAha `/d -]d Bl D,pBJN(A ||{ysg{S%UFR$C&^Uqc$2.'_ * 5;8'>vu.p;<!.G85'KrEEZӂ wI+pR9y! wtɢ_΂t4 m"1i֍ԾeZ??o>AM_IENDB`merkaartor-0.18.1/Icons/Mapnik/telephone.p.16.png000066400000000000000000000006741177067165300214420ustar00rootroot00000000000000PNG  IHDRabKGDtIME ^IDAT8=,CQyWB0c5 MJbb1Z4)V Y@XH}D$1I`U^1xMHpss_XPx30)v)7bCaVS 4{րAn3  ^ xŴ=N͈/R|&e980\ g(d3 Hd3l#Ǽӂ9a$*VG0W,OИ=Ix6߭8onYr;u`V*E%rƬ_ &X v]5]W@+:V\jqza|+F9 g֨TV!G(RK%A7js Z3v'IENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield1.png000066400000000000000000000002601177067165300222370ustar00rootroot00000000000000PNG  IHDR;mGwIDAT8c9sJ0*06H_0000(q3Djj-?|T!@CXcݒkj~̐U {Ym#-IENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield2.png000066400000000000000000000002661177067165300222460ustar00rootroot00000000000000PNG  IHDRxl0}IDAT8c9sJ0ڀU, al,L$8Q~H/AQ'Rܲgi(60jZ@`a```+ÏuKQ~H,XϿo P(X2#iJwIENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield3.png000066400000000000000000000002701177067165300222420ustar00rootroot00000000000000PNG  IHDR%wIIDATHc9sJ0U, al,L$8~H/AQ'R^ܲge!60j壖Z>j9M W_~[r^>C f_=|M^C*dA#Z UIENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield4.png000066400000000000000000000003141177067165300222420ustar00rootroot00000000000000PNG  IHDR&B޻IDATH1 @@oXDI%Kx x Jl"QB"Tb ^'!?uY*YxfvwŜvFOt^dڐLLLhaVi6ۮ'W6##uIENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield5.png000066400000000000000000000003141177067165300222430ustar00rootroot00000000000000PNG  IHDR-I%LIDATH1 0Dp$KxG.ĥqJ) G}'Fι=`o;6EZz҄X]o b6e,S).\'tEӹh:M\6x؞3)M|Ӿz{{Kӯ#\IENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield6.png000066400000000000000000000003161177067165300222460ustar00rootroot00000000000000PNG  IHDR4nIDATH1 0@g "t%se N^KN҂8D SཉsXNM嬖IфX]o j1gݭR\·p!CC!vyH< !WM|MC?#FaIENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield7.png000066400000000000000000000003161177067165300222470ustar00rootroot00000000000000PNG  IHDR;cIDATH1 0@g "t%se N^KN҂8%Ro;5EX:wM*MU?s6:wT*!7E_YtV*JgYjܟ-I >^])5)#'rIENDB`merkaartor-0.18.1/Icons/Mapnik/tertiary_shield8.png000066400000000000000000000003261177067165300222510ustar00rootroot00000000000000PNG  IHDRBiNzIDATX1 @D1,"ؤLg%G^^BbAs_p<$pߢ৮HrV[XhRaV96:|H:Whiiiiiiiiii9?[jcI#b?J&K[b#p,KIENDB`merkaartor-0.18.1/Icons/Mapnik/toilets.p.20.png000066400000000000000000000011121177067165300211210ustar00rootroot00000000000000PNG  IHDR bKGDtIME YɶIDAT8ݐ?hSakl^up:t\ԡbOSZQPmAUj@CG]T$ЊSgQtI /M;%ᥩH@A=|{zYO%<4}6ch*>uĉxO}/rEF]wQ`Hp'µS[5L<; ̝48RToZ-61f|ob8Yx4$-a,-zˣ^zhsOil;,Rpb(CpX]6t{=Cv^'Zf# `P SHsft_Dt. QF"ې3;Eaϫp`ܸ\ #U#2;3j8KI[7#4Z1r+J_`-23-2e\4 W{bÇ,1cc``WBoۉޙ ձkIzW-0ԅaQU`4Mn6j5c iq+{m6cIENDB`merkaartor-0.18.1/Icons/Mapnik/tower.png000066400000000000000000000005071177067165300201270ustar00rootroot00000000000000PNG  IHDR szzbKGD pHYs  tIME,"tEXtCommentCreated with The GIMPd%nIDATx] =Agw^Bhѵ@,)G|@hZKH"@x-hъ ēgO`i+0eu{K䞎#Z!ZރD9qm8y'j壖0000ϳ,havZ(sq7 mȿ &` &` &m0z~8 M] )>~l-|"iIENDB`merkaartor-0.18.1/Icons/Mapnik/trunk_shield5.png000066400000000000000000000003121177067165300215410ustar00rootroot00000000000000PNG  IHDR-I%LIDATH!0oK3 \ӄ&\ RS34 gI ^1]48&֛%ݪJb~],#Tr:N%STfV]31i¤}§_C"iy<IENDB`merkaartor-0.18.1/Icons/Mapnik/trunk_shield6.png000066400000000000000000000003151177067165300215450ustar00rootroot00000000000000PNG  IHDR4nIDATH!0@7% j.jwi pHz.T ~'x,Q.blʦoCt~:*ƹ:Uꐹ!tyH<$]nqC p[C&I[7N"iTYIENDB`merkaartor-0.18.1/Icons/Mapnik/trunk_shield7.png000066400000000000000000000003141177067165300215450ustar00rootroot00000000000000PNG  IHDR;cIDATH!0@7% @;zpބ A@jjf&Cp'?N^5`u5mkr !v)Msv#˱ُ듙t/YʬVeV2Uf w\B|g]Jn}"i=IENDB`merkaartor-0.18.1/Icons/Mapnik/trunk_shield8.png000066400000000000000000000003241177067165300215470ustar00rootroot00000000000000PNG  IHDRBiNzIDATXС @WrM`]M6a$ș35%''&Uy8ou]mD )宔;Xۍuco'f!B#H#H#H#H#H#H#H#H#H#H#!.1RJ|qQ"isQIENDB`merkaartor-0.18.1/Icons/Mapnik/turning_circle.13.png000066400000000000000000000004301177067165300222130ustar00rootroot00000000000000PNG  IHDR r|sRGBbKGD pHYs  tIME ltEXtCommentCreated with GIMPWsIDAT(ϝA @ 7|Is2n0x\w'iw[x0=Uv͕4RKhqC EJ:X3=d IZ4퍂KDN~+3w9KIENDB`merkaartor-0.18.1/Icons/Mapnik/turning_circle.15.png000066400000000000000000000005141177067165300222200ustar00rootroot00000000000000PNG  IHDR;֕JsRGBbKGD pHYs  tIME 2޽OtEXtCommentCreated with GIMPWIDAT(ϝ@ U r| .(K @FF#ir:`zJ:k, 77@W؃`2w Klj23r"t[К#Bc~zj0\'I f}&i?I"7 x:evY2mpIENDB`merkaartor-0.18.1/Icons/Mapnik/turning_circle.17.png000066400000000000000000000005731177067165300222270ustar00rootroot00000000000000PNG  IHDR;mGsRGBbKGD pHYs  tIME ,"-&tEXtCommentCreated with GIMPWIDAT8˥= @ND'oZ&9Gx,RLd 5yofZ`l / 4@m|/Ds` \)T)TOs1)f6D}IENDB`merkaartor-0.18.1/Icons/Mapnik/vineyard.png000066400000000000000000000002251177067165300206050ustar00rootroot00000000000000PNG  IHDRX pHYs  ~GIDATxch-ès;ՌKs!&"T0hh~Z80ވAc.$4j0`mLᚈ IENDB`merkaartor-0.18.1/Icons/Mapnik/windmill.png000066400000000000000000000002721177067165300206050ustar00rootroot00000000000000PNG  IHDR !< PLTEfffltRNS0J pHYs  ~FIDATxU[@ Y,]u|MQ,YxQyؔnBICRbHl j }/β9}&@O{IENDB`merkaartor-0.18.1/Icons/Mapnik/zoo.png000066400000000000000000000002011177067165300175650ustar00rootroot00000000000000PNG  IHDR! pHYs  ~3IDATxcXy!%aT~֊ȷ"x4֏_3QG~1X#SIENDB`merkaartor-0.18.1/Icons/Merkaartor.xpm000066400000000000000000000214751177067165300177060ustar00rootroot00000000000000/* XPM */ static char * Merkaartor_xpm[] = { "24 24 482 2", " c #AC9744", ". c #877119", "+ c #756110", "@ c #735F11", "# c #64530F", "$ c #8B751F", "% c #5F4F0E", "& c #332A09", "* c #141002", "= c #151100", "- c #342A02", "; c #70622A", "> c #74662F", ", c #574C20", "' c #524513", ") c #524616", "! c #54491E", "~ c #685A1F", "{ c #7E6A1E", "] c #695918", "^ c #756420", "/ c #796515", "( c #7B6616", "_ c #A59556", ": c #7E6E2F", "< c #705C0B", "[ c #7C660D", "} c #665309", "| c #594703", "1 c #241D00", "2 c #171200", "3 c #181300", "4 c #2F2707", "5 c #4B3E0C", "6 c #92813D", "7 c #C3B26B", "8 c #A89856", "9 c #968649", "0 c #7F7037", "a c #382D00", "b c #120F00", "c c #0D0A00", "d c #261E00", "e c #3D3100", "f c #473902", "g c #7D670D", "h c #715C06", "i c #776C3F", "j c #7C6D30", "k c #705D10", "l c #6C590F", "m c #453701", "n c #0E0B00", "o c #251E01", "p c #705F1F", "q c #C1AE67", "r c #BBA85B", "s c #AC9641", "t c #BEAB61", "u c #C6B571", "v c #483B08", "w c #BBA85D", "x c #7F6F32", "y c #433600", "z c #2D2400", "A c #0F0C00", "B c #1D1800", "C c #493C08", "D c #423501", "E c #6B5603", "F c #8C7B36", "G c #7E6D2A", "H c #4D3E02", "I c #473903", "J c #231C00", "K c #110D00", "L c #4D3F05", "M c #9A8531", "N c #C1AF66", "O c #BDAB61", "P c #A69240", "Q c #9C8B49", "R c #A39354", "S c #897B42", "T c #94833E", "U c #93823D", "V c #8B7D45", "W c #514412", "X c #786725", "Y c #5B4D16", "Z c #100C00", "` c #110E00", " . c #4E3F05", ".. c #5B4902", "+. c #7F6F2E", "@. c #847332", "#. c #3A2F01", "$. c #221B00", "%. c #120E00", "&. c #1C1600", "*. c #2F2600", "=. c #2E2500", "-. c #2E2501", ";. c #2C2300", ">. c #352B00", ",. c #1F1800", "'. c #211A00", "). c #292100", "!. c #1E1800", "~. c #211B04", "{. c #181301", "]. c #1E1803", "^. c #141000", "/. c #322A0A", "(. c #604F09", "_. c #927E30", ":. c #978335", "<. c #554504", "[. c #0C0900", "}. c #171300", "|. c #392E02", "1. c #312701", "2. c #1A1501", "3. c #61531B", "4. c #AD9A51", "5. c #AF9A49", "6. c #816B13", "7. c #5B4900", "8. c #413400", "9. c #282000", "0. c #735F0E", "a. c #3D3105", "b. c #2A2100", "c. c #978330", "d. c #9B8634", "e. c #2F2601", "f. c #0A0800", "g. c #191400", "h. c #161200", "i. c #4F4108", "j. c #9F8933", "k. c #BFAD63", "l. c #BBA960", "m. c #AB9748", "n. c #5E4E0B", "o. c #1D1700", "p. c #100D00", "q. c #56460A", "r. c #7C660C", "s. c #504104", "t. c #110D01", "u. c #98853C", "v. c #201900", "w. c #312802", "x. c #403407", "y. c #B4A04F", "z. c #C3B169", "A. c #C5B46E", "B. c #C9B977", "C. c #7D6918", "D. c #292000", "E. c #493C09", "F. c #312700", "G. c #130F00", "H. c #54460C", "I. c #765F08", "J. c #6B5602", "K. c #140F00", "L. c #5C522A", "M. c #91803C", "N. c #302602", "O. c #887113", "P. c #403509", "Q. c #3D3102", "R. c #807238", "S. c #B2A260", "T. c #908042", "U. c #594E27", "V. c #604F08", "W. c #473900", "X. c #1A1400", "Y. c #423503", "Z. c #735E09", "`. c #745F08", " + c #4E3E01", ".+ c #1A1500", "++ c #49411F", "@+ c #86783F", "#+ c #2E2400", "$+ c #635109", "%+ c #8C761C", "&+ c #937D27", "*+ c #5F4F10", "=+ c #302703", "-+ c #857844", ";+ c #52471A", ">+ c #2C2509", ",+ c #3C3000", "'+ c #382C00", ")+ c #2A2101", "!+ c #241C00", "~+ c #211A01", "{+ c #4B3C01", "]+ c #7E670B", "^+ c #745E06", "/+ c #584702", "(+ c #514823", "_+ c #7A6B32", ":+ c #322800", "<+ c #6A5608", "[+ c #988125", "}+ c #947C1C", "|+ c #A18A2F", "1+ c #AD994B", "2+ c #B19F59", "3+ c #7E6A1B", "4+ c #B9A657", "5+ c #AB9950", "6+ c #7C6A23", "7+ c #4B3C00", "8+ c #796823", "9+ c #403404", "0+ c #887424", "a+ c #8B730F", "b+ c #886F0F", "c+ c #7A6308", "d+ c #735D05", "e+ c #423500", "f+ c #463C12", "g+ c #917E32", "h+ c #483A01", "i+ c #877012", "j+ c #8B7419", "k+ c #9E862A", "l+ c #A48D32", "m+ c #BEAC61", "n+ c #AF9B4E", "o+ c #C7B673", "p+ c #BBAA65", "q+ c #6C5A13", "r+ c #614E02", "s+ c #7B6C30", "t+ c #8F7A23", "u+ c #927917", "v+ c #876E0B", "w+ c #856D10", "x+ c #745E05", "y+ c #3F350C", "z+ c #887735", "A+ c #251E00", "B+ c #594805", "C+ c #8F7717", "D+ c #9E8629", "E+ c #A18A2E", "F+ c #9C852C", "G+ c #8D7B34", "H+ c #504416", "I+ c #766628", "J+ c #AC9A51", "K+ c #5A4A0A", "L+ c #624F04", "M+ c #584703", "N+ c #5D4C08", "O+ c #957E22", "P+ c #8D7411", "Q+ c #846B0A", "R+ c #7D6609", "S+ c #574603", "T+ c #4F4316", "U+ c #766831", "V+ c #584805", "W+ c #897113", "X+ c #927A1B", "Y+ c #977F1F", "Z+ c #675613", "`+ c #4A3C05", " @ c #4F4210", ".@ c #534719", "+@ c #544407", "@@ c #5C4A04", "#@ c #483A00", "$@ c #40350B", "%@ c #968026", "&@ c #887010", "*@ c #9A8223", "=@ c #947C1A", "-@ c #886F0C", ";@ c #856D0C", ">@ c #5D4B03", ",@ c #594C1C", "'@ c #8C7E46", ")@ c #1B1600", "!@ c #5C4B0A", "~@ c #967E1E", "{@ c #322907", "]@ c #665924", "^@ c #695B22", "/@ c #372E0B", "(@ c #403300", "_@ c #231D04", ":@ c #AB9952", "<@ c #9B852D", "[@ c #866E12", "}@ c #998020", "|@ c #8C7411", "1@ c #8C7310", "2@ c #80690D", "3@ c #41360C", "4@ c #80733E", "5@ c #342A00", "6@ c #7F6912", "7@ c #9B8326", "8@ c #998124", "9@ c #8F7718", "0@ c #5D4B05", "a@ c #A6944C", "b@ c #6E6026", "c@ c #302600", "d@ c #5C5021", "e@ c #9D893B", "f@ c #6D590D", "g@ c #282104", "h@ c #796410", "i@ c #937A1A", "j@ c #7D6504", "k@ c #5A4903", "l@ c #53481A", "m@ c #867942", "n@ c #2D2608", "o@ c #816C16", "p@ c #9E8628", "q@ c #91791A", "r@ c #A18B36", "s@ c #776006", "t@ c #90791E", "u@ c #443702", "v@ c #7E6B20", "w@ c #A29150", "x@ c #BAA75B", "y@ c #A48F3D", "z@ c #362B00", "A@ c #0C0A00", "B@ c #483A02", "C@ c #927A1A", "D@ c #564503", "E@ c #524615", "F@ c #887D50", "G@ c #473E1A", "H@ c #B19E55", "I@ c #B7A354", "J@ c #806F28", "K@ c #382E03", "L@ c #7F6E2E", "M@ c #836C0F", "N@ c #806A10", "O@ c #75600D", "P@ c #937D26", "Q@ c #6D5807", "R@ c #1C1703", "S@ c #C3B26C", "T@ c #B8A558", "U@ c #A38D37", "V@ c #2C2403", "W@ c #4C3E02", "X@ c #66571B", "Y@ c #A9995A", "Z@ c #BBA85E", "`@ c #BAA658", " # c #BEAB60", ".# c #635315", "+# c #695818", "@# c #715D0F", "## c #8A7212", "$# c #715D0C", "%# c #6B580D", "&# c #7C660E", "*# c #41391A", "=# c #C3B16B", "-# c #856F19", ";# c #0B0900", "># c #0F0B00", ",# c #453B15", "'# c #BFAD65", ")# c #BBA85A", "!# c #BDAA5D", "~# c #B5A153", "{# c #5F5117", "]# c #B9A556", "^# c #806C1B", "/# c #8B782D", "(# c #87721E", "_# c #4D3E05", ":# c #221D0B", "<# c #6C5F29", "[# c #B9A75E", "}# c #604F0D", "|# c #433707", "1# c #272002", "2# c #292102", "3# c #54491D", "4# c #261F06", "5# c #3D3411", "6# c #BFAC64", "7# c #B9A555", "8# c #BDAA5E", "9# c #917F35", "0# c #76682C", "a# c #BFAC61", "b# c #857226", "c# c #846D15", "d# c #433705", "e# c #705B06", "f# c #4D4213", "g# c #7F7034", "h# c #685818", "i# c #A59141", "j# c #B8A559", "k# c #635418", "l# c #94864C", "m# c #C6B570", "n# c #AA9645", "o# c #453B16", "p# c #B0A061", "q# c #B6A250", "r# c #766729", "s# c #1D1703", "t# c #BFAD64", "u# c #BFAD62", "v# c #C0AD63", "w# c #7E6B1D", "x# c #7B650E", "y# c #6D5F28", "z# c #8C7B39", "A# c #C1B06C", "B# c #C8B774", "C# c #CABA79", "D# c #AF9B4D", "E# c #C0AE68", "F# c #CAB978", "G# c #C0AE67", "H# c #5B4C0F", "I# c #4B4220", "J# c #A19257", "K# c #AB9641", "L# c #38300D", "M# c #221C04", "N# c #BFAD66", "O# c #C2AF66", "P# c #C3B168", "Q# c #A7954E", "R# c #908040", "S# c #C7B571", "T# c #CEBE80", "U# c #CDBD7F", "V# c #CEBF82", "W# c #CBBC7C", "X# c #C7B672", "Y# c #C9B877", "Z# c #B19D4D", "`# c #6D5A0D", " $ c #403819", ".$ c #9E8E50", "+$ c #8E7A2E", "@$ c #AD9844", "#$ c #302702", "$$ c #3A310D", "%$ c #C3B16A", "&$ c #C4B26B", "*$ c #C5B36D", "=$ c #BBA75B", "-$ c #3A2F02", ";$ c #6F612A", ">$ c #CEBF81", ",$ c #CDBD7E", "'$ c #C9B978", ")$ c #695C2B", "!$ c #816F29", "~$ c #CAB977", "{$ c #C6B572", "]$ c #937F2F", "^$ c #5C4B06", "/$ c #6F6230", " . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ ", ": < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i ", "j k l m 3 n o p q r s t u v w x y z A B C D E F ", "G H I J K L M N O P Q R S T U V W X Y Z ` ...+.", "@.#.$.%.2 &.*.=.-.=.;.z >.,.'.).!.~.{.].^./.(._.", ":.<.[.}.,.|.1.2.3.4.5.6.7.8.9.3 ` c #.0.a.A b.c.", "d.e.f.c 3 g.h.i.j.k.l.m.n.).o.2 p.%.q.r.s.'.t.+.", "u.v.n A w.x.K - y.z.A.B.C.=.D.E.F.G.H.I.J.=.K.L.", "M.1 ^.=.N.O.P.Q.R.S.T.U.V.W.x.b.X.n Y.Z.`. +.+++", "@+1 K #+$+%+&+*+=+-+;+>+,+'+)+!+~+K {+]+^+/+J (+", "_+:+&.*.<+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+", "g+y o.h+i+j+k+l+m+n+k.o+p+q+r+s+W.t+u+v+w+x+7+y+", "z+A+2 B+C+D+E+F+G+H+I+J+K+L+M+&.N+O+u+P+Q+R+S+T+", "U+2 '.V+W+X+Y+Z+`+ @.@+@@@#@;.$@%@&@*@=@-@;@>@,@", "'@A+)@!@~@k+Y+w.{@]@^@/@b.(@_@:@<@[@}@|@1@2@S+3@", "4@1 5@6@7@8@9@r+0@a@b@c@5@g.d@w e@f@g@h@i@j@k@l@", "m@g.n@o@p@q@r@s@t@{+u@v@3 K w@x@y@z@A@p.B@C@D@E@", "F@G@H@I@J@K@L@M@N@O@P@Q@!.R@S@T@U@^.c [.A@V@W@X@", "Y@Z@`@ #.#[ +#@###$#%#&#).*#=#p+-#%.%.K ;#>#g.,#", "'#)#!#~#{#]#^#B@/#(#_#B@!.:#<#[#}#|#1#2#3#4#d 5#", "6#7#8#9#0#N a#b#c#0+d#e#9.f#g#h#i#j#k#l#m#n#1.o#", "p#q#8#r#s#t#u#v#w#x#9.e.y#z#A#B#C#D#E#F#G#=#H#I#", "J#K#N L#M#N#O#P#Q#e.2#R#S#T#U#V#W#U+X#C#Y#Z#`# $", ".$+$@$#$$$%$&$*$=$-$;$u X#>$,$'$)$!$~$U#{$]$^$/$"}; merkaartor-0.18.1/Icons/Merkaartor_100x100.png000066400000000000000000000510761177067165300206570ustar00rootroot00000000000000PNG  IHDRddsRGB pHYs  tIME  g] IDATxTYeiz%ag>yyȌȱ2kHgUQn]]=P $@'BB2݅®*gVf9E|9a{gGe>սZ!`PfEg/-//-ɤ(RϫcT"}V3F[+D) y,ڎW6.t/S0zbw,/v?`F͎:+\ |׮\E)/Hu%KBh4iwEBeVlcMl' 1Ɠh R"6Fi* B`51q4P^qI!!4KpΕqt?Q/.u{ ēPe.[}(R" '?,"y=EOX aqh hJ@ %-9 6zi%NĻOK!X0ҽ[[8^_B)n,5?X$z,Q$->7tsW\+HReX]b.Dk4v[_KY%ˢȒp`4ƓBӣ|eIA7?!](Mo>}tI`1 0 `qX|e%rݻziisy+R0n F&=B^ Ͱ8E)_}0KCWłRaFJF;}caa,|ڜ(mB=9VR+diU'qY$0LcCkǓ)n]Ouc81bD{g/Ywt"L@(6% c߅1i^uo6(vA͟{oɿ}c50}R'Kx6814%He%iRb0@C3` +qߺN(=8m Gj45+,+tϥ˺M/;Gr8P Rx8(4A c0>P m @ luRAk_mC(!O@^@i(ms0AQ oW߼_X\nm,\jBx…FAc4'Gl `ĉGei6[͠DH8.Ӏ∳j Ơ @i86'Cr;Nʺo|&.q? PߣƘ4 _x-ߺj O?=%xK>βdeyUH,U^9dc<ړqΓQP dž :skuYƲ1Fýs=?9n9ra4!qϫgwEkݞ$;UɷPuP @"J0B"Lssj^|ҍNO8CQJnMcjCG(?0z[Y0;?=RiɁ>#+PPUsJЪeTrZK)? Nب;+!ΒKsv J`0BNzmmJyu +'` R?ָup!Z5i$a;lovr,e̶`4aeԄ.x60yɢDChUB(%qi_fڍ7elVR(!QBy:ef;5sYZYreJLlw_sזyr֒ʘx~?4P읠uMM)`@ Bx\If޾-^n&=4[Y#R9Sh*-o}S>s{':7޶m}aQ ۂx\{ejLEպZR1HtxZWo.2nBfMkeپ-JYT2ϳ_}[n]pin~! qvtn,Pk_{W]/ ?|NF'uGzTteÍkfB B?~! UȌAYbbi J!sF Lh:"kKt_?gHO ɌͱFO"]uGA)Ja,ÄÅ.8=v靫pRV#\q;Α,Vl"9=FB Na <YToO^jMB}wYCiF G l0mA*pR(l <޸vݓ}\y.oܭN)J 8v>(EVg n߃u3BqnG=}n` ѪayJ!L @58(̷uwaAi4G9\;>}O1hH2d ;gcEPve NП$0LDd/];M1BQHRh70 IA)4j8TI;y3nFv )!%֐Z2(@HXB=J86;8 JЬJ Ja4Chi$f0?j3ϸ KsxoZٖJ(sd,wnvWerK!)sA7meE$YBAxu~Hy %l y; T$ ǃj8\±\S=2 @^`UY!h1 aLA!pz40l"xm qBs|$snwnD{G<-3fQn}ZE'<:-ם&# >GTCp%6(K%h],|6 +\bR$L)QX(xF׆ NQ %|YΪz$!?, ANC卍IX죓v6bV \%~~7ru%\PE65Zŭ5k  @Kē( VqLUK(yQ &] ͍EJ҅Z}Oo,JC(R!/n@J PM@:YB+p,\q-{zik9ty gȊ*iu_n*d:עe6pnyۮ Fi0";F@iԛ fܶc%>F#(5ܼ[?L:8AB=5,\X|i](ՋY5˜K+> Jtkש菑hg#HspVI!VO XG8#T4^g/(%ĆxF`{$/a1wyh%EDH 83;GHs 'pn:92Iq(g:ejhp` EfW_:_f !r|?hJ9w,~i)5z,yF 2eƒּu6/9%UAX'WbiiǬgqqX <N&5H祙DǦak>VqF9"5 OvG/ܯ/&ql͈Cji^Օ֠&ni,Wxqe+8VhcIJ,w&["7F$ >WڍV1?>R)5\?+xrQ) m3*|TM{n=8<=8)81F*LcS,J4p ?Dq2bHRњ4O1±+1y6;cX2 c3M!;vGz a8jԽ/`nr2A/o@+;2TMw]i9Ay67"fO&{m ]fs>ryYY8(k.!J%+og$h5xY0OyXKڰ8,-c(u]JJ= H υT ɞ"Nͽ>{H#s2 E&,K[x;|NG9ƋW}9è>Ez]˒P*vfMCpsgɥ9D=5 ,=cW_ (Q`/! m)]r"D٨{jDG )\Zj>={6|yƲU(.MC@_EYNdd(H2X&_oyy:￳wp63JkB IDATCLc2٘y2u3#uZXT&'1cjq^%wDp,LPy)!Բ6P5x6PUnYR2wx\7duzvágR\h=߿MieN٣]93N*5̵A 'h!$J2z4kdKzU3As+0CeTt SiQe!9q? :=FVT2KAck%80<%@c(98GB%=ƅ5B}Aիt2-rW.sKcux*$f,(Mqu}+O7G;Jj.*4Cl^=0~v[Z};obZ.oFb5VIZ"ǔCk^|vqZEQ~~+ܯ/LG= 01 !qzv}!K$+h畒֢Vh=[t|Gp:.XQw_\- 70, =7St=QJ7MneD`0[YTil>U~+3Ga!P0l?x׳tLh)㽅_Z<ؠb@4,sO>;dko>xxx QFk8r,c'e2n۟LR9!ױ&;1u۩E'Q ss('^9߮\Jm4ZeE64d:e[du1Hsfkk -86D뒗ELrJ)1#j33 8-knM(.mYH6::;) iPj%<7:אZF87۫ܶV(Be?:_tkF6kTE-[t,u;F%E{n5KRES„((c[Z<\\:`wğы_/0nyw·}f|b*\E)ίZioSow6cC)L".w`,[d0ܲJ)(Vq$s::͒$-!妙l'<9Ќ_^&:+߫\en-$cZRHaRRh%Rq׫ٶ[EBc;ʭ͵fv<ȿNnsZks,Gq8<853?ϋWE7Nғ3<抽z;9&0Baq\`/jN{0hg2bcmƘ{(юM֗Q&l֠rsH8_پrqx68B#]']^Z8E2f"QJEj͏Ύ)c0[Zks|o:}w˸~]YYuk?y+_J6†sX]V}B)l,8IOŌ cka}78UJ)-ɱ[c,[keYy;ߟFs-J KMUڒ .Dɓ}Ǯ ŒN hw+ Z^2-mSm4e," Nw)#尿l/ԗyu%Edhhn.]+(2Oջ]=eyd6)^qaHM *]M)9I<,Y!B2RRJZlxn+ )qltplcwU%ODQ<ʹbvQ.UCC*#HD)%(21ZqVZ %iM& Vta*(Rfgo4EgO+l,}RUZw")ڰ8N*/MRZ\_ ՞#*%ceEFq]1V`$F[ضFp,gx=IR7^i?si`vq :XC9-{G˦Gn;`x~(vw1RBRQJҍ8Ia[llB~Gjae)`/]H paQnQ\X%ppY)Dʳ8c \qZDq,YP vh8cVJf."HU]& Y|3Fx3acveSgANRiQHԲsW,RBl˖R6scY:M#F^2RQ34Reܱ 4(ͤgCF tvEWiL}PJFBբ SJY PE^s4[=Jq\ϵB%,NFS{Pp3wխ{z6rf8mR/ $~q8@Y^yHyH '˛eI&EQ$g3LKU^u׳ T/<L;]TJXG0!v!o<v;g4J) 0vUVB<շ7 |'k'V BHܾ:8V`H G`!F:BP1gqx $V2OZs7MFQ?Aȣ5im`cW߽ʍ5PcLv4^Da֠x` KW0??'@}r/tTx|h, \:ӳK퓃JzњBifeLTqg 28aN/y7d@R8vޔt:)p_ozf>KAD|br>ʜ8Q\52#v9g}[?b%OnoJ(J_|t{k 0#'N>{}Kp#I !Z Y^:3hgƤq3 7|r5 C`VᙕJJ'f\8x(uZZ5,W'gkHZz%yʘ#{unw,/D5/W\F+msv! U*O8^,;ݱR1BPs}gTk86[ {y9=;0%xUeBxA ɋŠ)A.'p8pcpјQR 󹻛2hm OZRJJ)eBLSX9>Jk~ jQb|{Q"v̓xx  /~ mm+R-;J)h˒u+6f #TCRg}H{`q{l{p&/FVѨ8Ro+'wSub@ @1?q>SBOZ\wFqx(D Z]}xL(;8Ya%F~׿Vh<9!VTr;?ݰW/KƝ\ׂ qHR ^92jC<ڹgQ{:!W Fs)yBT"h&s/i4bg5hm)>Z.<*xݭ2/tY:Cdc Xyi^`3Ր^\% Niܧywg'*Պ˲D9c|a0{7$3Yn.MzWG*,K8|`u!C)sGnoWK;i<{2F&X۟X~N;NThp-lNsȵʅ>ęKk^5hcֹRl7i2$eZDp:G3 xd0L(2W<!JIřE)zCz'+mBO_D)B9oƝ%1aUXztpJcŗ@]EIDATE;Y}~;Ri~Z0l)_Eg,/a,8p=. J nQ2B"<!ƨEYdE Iaqq e?Ү9?=a4lz=Kvۚ]~E\#ae/BQ/&fV͙JfAT*aWBsɥugl" K<G,Eu*8ÇbM4LxAXO~i7#[%^pC`aT8lL~y&={gʬW?1{cn O],ToxɆcOKom[8O^0qa`($Jq= -t{MY[R8AcjP݉z{e%wuY< %81}\>4!r)_/Ͻaeniw2f(~IOOO|~,+(~ϹeL=Kٳ{V7 AiGao%Vy6Z i2FBʕw^L{8fq3!+aeB}<::ce6U.$줇rj]a(Ag4/,F9'3D߻>1M/ G1h^yv'Z)W&nmG~׮Ư%~~}\&2&έUΥ!F1|_f*Ѡ'i7ũKSʸltq%Y[v=>!ҵ嵧%t#{RTKa}u0dLթ#(e?JfIQcfkե+sKW‚T;'2^G'fXh4jZ+]xp4Bsx2 ،؀Pj Q2;~_<|ûz)y>q76SUHZ))s#TJF&Ғ2^^6N)_t=+3J ݣ8:yz1.%rWnSۂvjlTC\=wDL*!م(viddfSEkT2>Y:A8= -xx5c4`V:ay"Kgn ,s$7r}p' ։aAfΝqBd}/vvBGdlsQ#zNڵךpްadV2&kQFO/A8ùKc1ݔ \+RA9hpHgWy:R25Z¬6BI٧+*sZ1JE%g^s,,#t432O8k^iGf8W| B~Si`l˓Vޘ2|=#RJ-3EkI{JrFS=37 E0ԕ导\hM(eq2Ֆ%UP,G!!޿pyAQl/h0&<&p706UbNd'M"bVaq:^>~`Gf ٩V°buZ.2IiڷwjԺp/=g`]rUL@7^YϽn}6l@DTtc x 0ZlGvRc Jf2K?eF<Hkdd:vqjU %8&U׫PxRdzGHBڳ /?,i ~'k,B%{I'  g4+J_}k =6 a8NFqG1F J1>& Z~w>MՙT[/^!RpGvB-c"i2 rjɎ:;iL1Z+.Yi]ł s"#)rǫ˕I4;03󨆨=ŧQĸclg/&bJjҮdB) >o%SJ圻\x92J)g:@e0f:[OQd. e;A/OAP3 !hlii-_xg cʨ)"6&ƣI67m\ Ljs<:\kiWAEV(&qw48VZ]p3OޝbZ+8VVZK[<%4A|'VJ̱khM9ϳPϯ&I:t<ǙR9T)]8Ѯ/cn~i,cL4;&"h{Ѹe/;,>JA)MB22n$ԞĪ ,A0=5ujav D +˜K(%1BA+qJg|7WJ˜~^S9H"gwmugDf0Zq7F9nIxQ~wqRvK4I1=2:3?4B5B5@5A9B:I:Hstt.t1t#uw7w5wDw:x?xDxyy4yHyz4{B{'}6}E}~5"!1<'<14D4B#.A><RCP@L[SEZIIaWVXW[][aYe`gbdheehfilptuv}},*aߎyȄ}JwLO?r.pqv$C -AāZsl j\PH/2ܡ&S X3]K>(ƣN [ǽQ_eM"4fmz@)<;7+ DV6It{0:E91 cTnF% '!o^=8B#͵kdGu~Ri`5bҌ|gYWUhxmerkaartor-0.18.1/Icons/Merkaartor_48x48.ico000066400000000000000000000162761177067165300205360ustar00rootroot0000000000000000(0`hz N`IV{.9'_mconmpnjJQe'/`uvsyʁ΂΀΀͋gJX *1pKx|}̀΁vMJ\s (?Mv‚P_\nSb< 5@ ("5>hlgijimMI[%/?injr~̓~xxwkLX(2=n|~̀QZui/:CZk"}Ued5? *2flihhilH*5  ( ;GPkqs̀΀|̂΂zw@I/hvoz|i‚Yuuw HX)Uact?Pej"]lYndeihgcu=L$- ,7Cnrzˇр̀̓~́S)etc{͂΁̀*w2> ;p}v0jxENbcC*4aibacgNK^YnTh"#+6 =`jl{~wzr%^wsNwwR($ 0_kW[SQc^9F ")`gcbe_ Tfv%dy"*)3-8$-3?BQHYCrudtw~wRzuwav}ho ("NRUUW`ZBQ*5Ngedf]Yjbud|(Xg ZmZnI["+$-IZCaXic?Pa;Ekek` g~,8JU{O[\a_`=1=@fdIkM`/; RcV/ avAQJ\0<'0 KZ_Pl$-:Hdw6B,7*3N[ZKW $!IU?]SW]bN'rGFeyDT+6?O O`G;HY7DmN` ) *R]3qadbv 6A&&# !)  ,7)ZgFbaRcdb?KUiywBS6BCRYn e|~ FX L])"Xm4@ E{u_vqqO`       0hvJWUbUWbY>5B`wFX JYN0[q mvr $P[~[/|5q       &%$Zh+43;M_`aVX(29G%. =JRrzHZ lz@Pm k]tJ]%. ,4vof]Sr   4@0<7E?5A!(8z]_8,gz ~uRf4A$-#Xf{.8!*@Qx'"!e}vL f} [p&n7E'1!)!) FU+w  #NXpnPM>\r L]]ss"Uh;J*40pu'%.%%L!|\s&. JZ m~$u m^u\r1=%=zJY'*5,7w&3?6 4A!)#]mJ@DB '/#5C-8JW_% *4 ho!xw|$as1=@OO\Yh9m)odw3> GVD#u,k{Yo8F]r-8CT2?$J[r+n}yzr nn`w pQd/;"5|XTd3@ ";Iczbz|3)#>5(S:wE#4|hXcv (Th^uThSg Zn7txwxki iawf~I[Oa&!VdNXj?O$3?Qe_vm${z/>.Knl+cjsqp8BQ\r[rDUE,3(3Nb,uxwue~_vz gaxGX5C'1>I` TgFX9G#"+@Pq$jn&8./^mu*Yhnxww?N Znx?B|"|gy CR'1:Dv6CIU!_n$& (%.+6*4$,1<'1 8@qK 6DMa:H'1)3%%. ! K]_uawe|axGX=L>tpN] (&" :Gg}sk"Nb=I6>9n{nR1=RfPd5B2=dx%#+  Qdbx e{moM`,7# 8n{nM_#,  $FW 5Avt?N [pZdmlY]UE!{>M4A*5!!)%'1'0 d{ hGYL_Sg=MCS Dg Ug&0   &/WhVj ThIeo^fouupCS(2N4@"+/;  .9L^g}au,7  ' g}TXPb g~.: )3HZ+5% 1<'nO1T*ZpWlSfr Vi)3 $;JXn^\ g~idg=L-8"*#,  &(2AQ3?1=.96C)3&/&0'&'/; (%"+#'>M%,7%,6 -6    )iy_rCS^tDB>L;J)30;:G  Xl awmF^ddD1B7u'_m2q>t;DFS:|H/hvdu ?K@KRa6D#nlRCS  %h~7ENaXmJT ;G=LUi5BFV4@"+ 2>lTkmpmMA\jrmsmQ&bqAerǀ4q2?M_9G BR5BFVYo6CfV'0EVqOb/;=M%/ AQkZlqhB/`WeusCP*51qu*`n'@QGY'1 % HX5B$-`vJ]EUcZ >K:I)o!xDU7D!* % N^Mpbc@3Quuh#+ [nen(j{.9  '+65B;I(2uf~ l^u/;Q>KM`j`wZoQc Tf@P=L%.$-" & (1=Bjuv+ixPr4w#;J #(3CS"*#,^sbw_v\rIZ(2}T w lXlQdSgOa9H/:5BWir=L#    )46D'hy\m>M#O[%.*5#, 8EL^BSBR3@7E>MCTTjNa?ONb^@2 rbu~#s"yp+&zi{>MQ^ & #+&.FQ?K9D"9D&]j%j{3o~&n2rE:>7:*t7zC<(z-1$,merkaartor-0.18.1/Icons/Merkaartor_large.xcf000066400000000000000000025442701177067165300210410ustar00rootroot00000000000000gimp xcf fileBBHjpeg-settings Pgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 32.000000) (yspacing 32.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)  Z Background     b * 6 B N/mUx4= 3oEkBL?6b uI&^+LXp(iS,.DhB>l I~=Ns+@Aha[cfIgkؐ'  7T U | 7 Z # 46 F7 Vs e[ v  RἺ竁JGG{뻹᭩4JG1ﮦJ4JG3Qأ쯮y656G0Gnվ{G6W1Mp奭^O<6GIU 䝡yjywWRW10.00Mu}㠝wTTRMF.10GJ{آyATY~ywy厗{qznK?0,9:Duryy 䅉}anUv|a_FBF'&%&&>rr^det}㈅|qw}_CCB>8%'&9;jcfnw؊arjjs4C04.'$Vr~smpt૞}nzc}yzaaCsGa208/30%%&7UY|xCVjq׫~x~caaH9H290093''%8O{~rG>wzǩ|fz|wwc9939,/4=8-&',H_sCBeqs૧zytrkr|wyjef40,,++=9/&%',HwsB@CVjU}VyywwnswwfHNa337K=?-))8q~oVXRVYYswwuqqvy{|{qwadaak=744/U)+9JQYvog\V_[UU⡠pursqqfjchmyys^wCD__2074++,)45HKRUNNQGUUQѡ|FK}~rnjnkjmlmlynnmcVdjj\XjmK9822;HKKNOORQURURVUj^Qqvrljjgm{m{l}URUV_r[V|m@9FfGJKOUSKKLOQRRSUzyKKO^gfgghhfdUgm^UUYSVVXQz9>CFYROJJKKJKQURRQ9QOQCBfggcgfa^^[VVUVj^VUczzjf{}RQVhNKKJQNRSQSSU,>4HRqskf_dfV\RQUVKUap[[\~yzy~VCjjKHJGHKUURURvs''=fmnfgcc\^LLQK^KUVVX[fjsyserm=4KB@;FKKQUUR֠N+(=aeomlf_^VUK@QcURF;V[a^kgyyfUQ\HG@@BGDUURϡnH%4aamjlmekmQ@>lQV789;Jrqs{|eUU^H^[K@8@OQUUƣe1"1KJYU>Yje^@;Q>787797JY\y|}m~hDGehFK@7J[VKQORUƞx?4(1SXYYVcagCBB;97;887;KR\y~mm{lY[Jg|fV@H3=[VV@HRQã51&"!S^VVYeH@997:;8L879=hryn~|{UKlsfhLS4.^Yj948FHdK.DFB;C:757KNjL?@=Kys[mKJVmXtYldhcsRJ/4QHx("!+@BCDDC@?K>Rm@@RRYpeo[QOFmlcjjdjacrRHaUKQ{(%&?CCDDC=KjR@BBSD@njw~swcFO|lUjcfjha^jj|q}}_!/3:>=DCF_@@oDDvsjg~srraL_{clmlcdrsj^wyqs{Ț=002BCCDDHa@jQRnRpqzj|rlqpjnqmjectlynrhrjrդR%"/=;CDDFJUcjjmnr~exgejjndc~wymk^aXj 244CDDFFKsh{secchcyorla_o㧦⦟#4B55BDCDCDDmۖ^xec[U[mpjssmkcޱY828:B9DBLsoqjJl}kjUYujYamd|zwncVʺ4#"'//995;az|L8;j|}Yp^^S}rqaOev\nqlmyܩ0"0%"#)9=K:7FDhek^XLSsUj}jfj^YX~{wvkju_Ȥx%B(+(!1">927:HS}?ffd[j|}}}ors^Jh\srw^x|rLJħV>&!!%.#%>frh|j^^aX~me|w\}qt}yGC@ǩR9%"&"%"esojw^m^Y[jw}rjpyvyurr\rr{x8Xq!%!9O!!"@Bfh^rsHVeVes|}{HJcxxH9;Bধ1".!"!.&"#B?;Y9OjmYFaJR}jjuw}ywLOcjhBCB&"/B;4L;;5VhNYCGw|;Lq~zydjwawnmL9ϐD:. &.489=3R7NVKLCV\pK=:@_wwgas}ssCKB,.$()/-9=5;5>BKJN[jma^HV=Qdnu}~tˬo+9%!099:?0C4dKhY}xmkfHdhw^jRryqC80999.KSJ>2?\GKKQdjof;XUmxfgjjjz~}jC>58C;B5>33/FF\CVkV|n^vdw^^j_Kc||z|XU5$)?D#",4=98DKVXj}qqVV[KRaf~Q(%B1/1BH5,34=7(@[ckjswXRhQCcr}ys~y8),499#4%"$"'(RVu{rryfVKCK\ys|U~9 BCSwmm{_JCDRgrxxS95"73'&'4HSkm_KCKKd\a{yyYqL554!('0yjrp}O^QjU^ajjf@ƭa@""":9-.^}rorjXcKVY_crsf=9ίlC$(0&0F=,05Un}rVYs^VjVLYV^[zl{_>U53ϷšV-57"!8>-gqmsamqmkhrrcOXKGNFj^^jjcO?5"4ǤơB(H(),C080BQ;lmmnnmnrlmmnntcXJJC[[gQKVXV"%=BBDF)78?;?mjmojmmlmnnrwjKQUh[^QG;DKF(YFOK@>;4;@-osrq^jjlmmjmwywolooj^QKB@BG92,5ŧڡ0.,FB8@9H=B0y~s_aRjmmfcmsqmmhL@B3B)0240 ˣݏ# @KKFGHGQGc|Yjonmj=fYmmlY!$1((XU"n!!7Q7/H;VHYaoyqmj;e@Ohmmlm#$5#1[WV[TTYTTRYTRRJEJGC9;47JPNGJEACCA<2PRRTW_TAAT_%YW_]]YV[YT]][RJGE@C>CT Y_aa_]]YWYTYaYJGG@99C@E@ACCA47>7&,+,+,,/466]_a[[]_]a[]_YaVJGC996;CA<9EE>;@@AACAC<16.& +,,. __]__a_[aa_NC766<@>AC<24./ ,,% ][aa_aaR7674.,.,,2@> +14;9,+<1.+ +,,&[]]a aRJ14#%),,&,. .%   &,,+_[]aa]T11)& &),,+&+. %&# %+&,,+% _]]aa_<) % ,,+.,.(+#,,%++,,++&% _a]aa_J  %&)%+%.,& %++,,) aa__a_aa_YR+%,#%%++ ,,.,/,,+&_a]_aa[]WC,(#%.) ),.,+( ,,.,+& WY_]aa_Ya[a[VE& #,%+ +,,)T[RT[_][[RaaP;,(  ,,&  ),++ TRPTTWTPN[[aW>9,,,( %&   PNRTRRTNLLNTLC+  %  WRRPTRNNLPRC4    WTTRRPJJLPNC9) + TWTTRRPJJPJ> TWWTRRJG7 TRWTRTPRRJLLC.  %  WTWRRPRTTPLNC  %+ WTRTTRN6. ,"WTWTTPJC % )+WTTRJ7 )+ YTRRTTJ   WTNTVTTRTTRG9   RNPJTTPRRI.+.WNCETRPPRWN(  %( TWPJRRTRJ6+  )WWPPVWTTRE7  4WWTTWTE( #2,4   WWTE ( "..,4<4 vWWT7 792. 6((##%&%); . , YWYYWLEC%%9 #  >,1, .)   %ia_Y[_]WRP4%) ,, ,P612 xa]Y][[YTP)&+2%<   &[YY][WW[WTC22. 2& (eYY[T< 4  2CeYYWYWWYV_1&,6 (4Ea# A_YYWY[R  7 )>p]E ]YYWWTWTY[T+ , .,+aa[.)_[[YWWTTWY[9#&(C9[)1e[]]T[WWTWYWJ IRLV>W.  x_]]WW[T6 &J]PE9A.  }__[VTWTV[TW%,)EC,&9.aL <#24a_]WWVTVW[R+ >12+@E[;4;.9%#}a_]VVTVR. &9< ;IC PJ1Cta[Y[[YVVYTT) C ,+<#]n74,_TY[YW]VTT.(.CW. #2 % % a_A+._NT[[]YYWTRRJ#96,/WC>144 Jn>.]YYWTY[VVTTVCCA..RW,+.C7 ,>7.a]]TTVYWaTVVY@AC9WaRP.4C+72.1a_[[Y[]]VTJ;]CJ[]W[[7.C72CC> e__]W]][YVRRJaaeR[_a >; 7GR&# c[WW[WVTRTC >aecc<< )(>#J <eWTTRTTPA J)RJe+J,,t]WRTRRP7 +_ TTRRP7   PRRP   eTTRR     YTTRRP@  RRPNRR4.&   eTPRRNL>  "  皬𯰯ss^yyબ󙡕{{cy磌ݪ󜛕jj蒛󜙊목癜鸞Šcpu_y_jalәyl^_^}^}unݙwe^_}ZspeԙlheO=C8CFZnl^aUlGU}}GRY_gwyutvsaJBQ@aYG:%&'+'()('))+/++))-4JYL24,55D9BYfoB2KUUV[mhhyaaB@@JHYgeYR44+(+(()++,/+)/4CsYNY50775;BHr>5OQSVVSFFK=J>85+")1C8/))+(''())(,,>/+370++/35;\^qRQRUUKC@>=;;4,)(H=3232(''&'),+((82945920/.14BkxuwQQUVUUQK;;:;=7(+3,.@?aH443)&(()-,++44LC;8=49/849Yo{yNQQUUVQFK7/&,3:/((,9aX01(-'$+('())+4112/1.145589QUQCCKFKRQNRUVVUKBB+')07(2@@rjHB1%%%'&%%.0103125255=KFCCBFKQQHKQQD@@0'(%(J;4CChurLLHH& &$"$"04:74/7977557:8533=CCFQKKHBCC;9#!"%(=>(CCfuOfDC'%# "1453+)57255755;=@@BB@@RQK;C@G@=?!O(&>9dC)fstgzzO4'&%%$'+#/#)+$"+252.(32:?9;@@QKB29C9CH?am>09>?@!#frrfvzvj8+&'%!&,(-,00+"+479-.@B"9;59@@CB,#75539;[L&("@@0$4L\nu9GrN7'&&# #"$)1%+)"3472 (8$2;8?@@OG>/9522;VCj17Q0223;0^jjN2-a+''&"&12"",(N>;8:429Kfgq~VDoBFLOayQO.HL9)''$2H:1KNC0BDBK,"#"$ "%0@B==@::BK/qCqpnKHQFKjnQ44LF-./1X&52S97 9X@XL29#&" HH9=aR93.@B/N4mmNd4JJg9&.&?L;GCH&17910"@(9UQ8cn="g^^~sF@='0Bm44Rsq[jeD20&(89-CYVVXgasYLmaKU[jUrq?9"!LxwaHdm0@vCNNqq|vB/BS)>?/?XajdjjnqqmKefV^Y[7)Y Vjhoajdka89_tfN@)44'10KjjlmmdH98^@%,&!qYj^htyaYKK5(0%,1Uddjjlmnnjf[[@^9C"(B#"U711":HjhjjeQGawogL .jdjjmomY_UU/.35@(^"0UQS1R;rtrVQKHw}r\hnU"0jjfmjjQCJ+.D(CCK.(H>NDzwt^LU^{^[f^cV .jjejjmeJ_ak^_eV@@Br{wUVacn58;RoK7.QcffjSfdgdhjqfSVDjCK.QHGRGsSh^nv@9Qjkc0&1faQQa:9UYNReB7(( G=UawoVYfy|qC r\ (!,.YYQSjUQ:;C;Vk8S^KU% ! G@>j|zrpjhCHya=%B^e1;@1afkjcgjh,k:gjjdF^C)(   LS@chzfcrVOa[.$B@^5(,B@^N9YCrrlkj{}jY534K@,   YXzdjSeskxjc^31' BeN/+GCO?KORm~vw~y8(KG@0"  HQz{_pU[rmaf:43H j_jLNKHS^LfajrwU;%>GB$1  KB?SYqpUpjfCB93/ #jgh?@K.13C9afmqafsrK08"4! ;B9Hlkcaj\//-,'%"  KcY%'&QQJYLNLgy"$" RVf^sR_jC=0,.((#2(;Ya&(^K_O&95B;mw"-  trjwjG:0+.++07491HnfN(,GUVL0%(&')     җnqqa70(.;:D2^@?H?gcK('+%:;;." #   ljaGC(""%"SSX@CooK%%##!,/C(D7@.    j~YYOK5'%"#%)LKCyqlH&$;(+&%HF=11,    {RY}VKLU9)-)+/(),VkK$$"%""1>0)$      B848429F>5(-K-X%%-s}n[%%B."""      >8>3538KkK5HGH9('(9^oK'F"   9@>:@Xk\X~gL[\././#"B"  98@;7C>uV}&gfS420!0   99B25":K%#3=2332C5    ?KLKG4FF!7(/28'&s%   FHH@50'U((2&00F; "  2CG^(+7Q0YNJlauXKg%!       =9=(K>NXDYNjqtn}v+     "'"099HBB%N%ajqq9       4C0:@'9_qX       "%$,.@F,%CKURL%        %(!1@9CQQUQK=    "> 661JTE61A.47 /6T>>CNRRCECCJC&%..;>NRGLI7PTTCLPACRY +1&,,++ ,>@T<;J[RPCC2 %&+47<.,62  9@@;<<>L%&&))% (/. ;>ARCC;%%(+&%&%169+.221,&.24@262++&&%#,.)AJCCA;;#"(###,1421211%+,42>,.%&"%%"&&%  +1AA;9 #%%1 %%/2,11%&,, %  ## %%&&%%  .;A@A;;9/,,1+,  +.+,"1/21,,+)& # % .2@991&  ..,,)+)%  #  46>61++#,,)+%  %&&% 91 .4 # 1, /,,)#%&&%%   %%++,,& %&&#  ) ,,&%%&& 1/76144<4"  % >;9(JNG% & <.NC;<  ;.JJNLLPJ5, >9ACC499@C.293 & ,/.A97W;;7.8 .06 % 07;  17 7   )" 4     6LL, %,,+N797   ,,+1697  .(#,,4 ,,4,,1+J9,./2,21   ,7,% ,+1( ).  % # (       #" %      & 4  '@.. )JN.  )C9   (% < / /:w8  : < 滺{FRڸy$:yQ55Rɰ'I jlp%5}yp!{{^_h}3&}}}w\,<֫{p^^gI'8{y?hjT$ ˒ssTQUUcaM)'='c3  ֒}p^\^Ze^1RTTQTQZ?G% =LQ35)%.    ߔYRR=l^L=:JOOQQ\^Q=   _RQj6L^JIQMQOQTLG.     Ɣ{yyeG! 1sr{Ok(  ~~{~~yqmmfdYKJKHfQK'BCC@C@H29 1=@(+!%  ~~|~~{nmohhGBB1VK=1/;??@@JK@1       ~~|{~wqmmeLB@U,=K;:@>@?@C=9%      ~{~|yujcunmlaaQ90;"("%(;@=>=3'      ~{wvtvsrsmmdaK?3,"#0DFC5='      ~~|yyvUkmejjlY[B00."!HDD4>#      zwfrO@:5H[ea[jY?100""("     ~}jmm74QhacgQhUCH1YK>1        wydVC=9[effjQ:@4HH,+        }yO;"D)!2KVa=?7YD!%        fv}a)@) Bl}nQ45##"       vzz9J) Bkl~mB!"          esmy|dR0"@?>=j      KYruRFBB9""    KDpwN  2   B@BHaF^  0      @?9G?NQD  9;+ #$    @?;VR17>C 0;4!+#    @:,9?"%B7 !+&!"       )("#!"30( +, %+'     ,(."1+(&%"     $&'#    #"$    "%""(&"    !!1095$(   %1-8O8F"     974,0,%"      /0",   ,"%"0,,!.     &;#-4("   %9;@9+02  ,3245=&       $'%4-377#"      "#  :78@8V9(       "2   +?C992(/%     (#   BCC'."((/   /3/- $"&,,XUN2%930O-@K"K@     2,+7    ,,KK^SV-?'D7YaKcjro     ,,))'+#  J.LKNXd:>>Osvqwwys ..31+"'"  ""1RGGQjjlxmouwwz  '.0/0%#"   4'CDYjmroppuxz~  +'   "/0%HHd[wrvwx  &"   ,%,QYfmwxz     (.K^cfjms      "/(a_dd{{r      !  CL\rYfj|y     ! 4KKQao        (!)3=KKOKNXж      (-=99=@KKNQQjw   "@3@H@DGKQKKNVmj   )1! ;CLQQY^o_U[QUVns   )2>8DHHKKOJKUn^Umk   (>7KQQHJHKKrm\ho   #%2FHQQKKQKJ[Uesw~鲳&$ &4CJKKOQKKOagjoy%"   ')9?KKQUVYqr|  &'/9:BCLKKOUV^^jsű  %'99@=@HKQQNQNR_ju  %2QjmmgcKQX\U[UVswYVJ<@>>@46;,2# TTWWYWRRYYWWT>(,#2,(//TTWWTWTTNTC#+7)%,,4792%&69. TTWVWWRRWRR< 41 (/NTTWWTTLE6"  #%/%% %12C++9PNRJAC< /LTTRTCTLJ("##%%#;"%9#AJLJ/>4(,TRRT#)#"   %%PPCC#   (# #6  &  , , /..#" -1,.G;%/GC:C/% .;< - /(9(9 9A) 7 3 3 3 6G+%[1 9>>%[p0&.IA@JCarr0+4>ICCNYgpn,# 49JLNTetpn/ C9Ieepnnrrpnn/6GEPtptpprknkn.@[ptpptpnnknn-#9npknrrknkinkp%  2[eipnnrnikkin& 2&/4[einpnniiknkk& 79JEaeeieiiknknki$ +@W]aeeieiiknkk$ %+@__eeieekikni$ (#+aeeieceepnkikk$%11>ceeieecaenprpnnkkpk!%# &Veeikieennpttpinn++<>Veiikinkkngiinpnnrnnt(3  $WZZRQ<ZݴgR!  8QRZR9 $^\ylg0hhJ "=6   ILL9 TLrM@=yrT^,G!!wa     (5 GLC+**\M.!&=T    /&&  "G$!"*9$(g+8        3!8pG     !".4       4=  *   $%!='  (%QTIM\a$&*  $003(.1AZ_llnlg@!    !$%0(991A513Z^lrYun{^%   "36! 5<=AA?AITYGMZQcnssrO<%   (0:?9==)5@C31a[CK$9_N     + r9=5#""J>%1|pCw       %  9". R#-f         (-Y9        %)                )1        "      1     @C:>JN"    &&( %'4HLVVXVR3   & ..'4+'(HKV[G^XcK  (,+014424:CG9>H@OX\\h[?0   &/2.11!+35058:5;9=;;KCQQVQ>094   # ' #0221598559318==HQQFHG9@B^   )(%"+2115.55;5534427=VLBC?H54?  $+4@45513843,85530+..1%244;>Syql )%098BC55255.#41542+-(250130p^}       %?$"%B=C988554/'1552022$&795qV   !((90-99)(;57554559/9228$.:QĿ    $%C4,-39;8;74272>9;99"!Bt "# "%$,'-3-)"0B589422CG@@9"2_7 %&( 3.)%-,(114@790;299>;;w_ +7 %%&0  &! %.3>;@G8,)-31k 0'9%%(%%""$''!'.0=07B@+.Ya%+/.! '(/(.(.++$%% "!)+),/4;Bd%$ ''))/,0.J#%$"! '++.033񭱲   &"?C00) #%%  $$'004374    $$810..+$"& "$ &0+34G|  ".+.(%%"&.5+'(""&(94B  ++/.('##2@'',+L-(8,/9Vy   $+,//.% 2F42FGRjRRU20@x  .+//'"7fKRQ[Yljhmhry  %+/..(" 79KKQQcjqrn񱲱 './00+.(29H=KUXXhkqrq󱭬   +01.554727BC_QUYY[jqyij   1)%9757@@>:8>NC?^Y[[jovΏ0 "B:h:d%@=7:7@@99BYQhjjzw˯/ox}j(CcKKG@C;CcsyzyGetwysXKUffQcqysw{aDBU^Hhyy坩w𫪙q^^Yp{̘ܳ}aq{~궳汫ѱƲuxy񶷱ᱫymֵskyywnmmwߤ{wcrjm|vsnwۯ{vjdjz~s߭wrkmjkm~yzrmjjvrЫ}wrtyznm~ussy󚜚㩅yww{簬sw}vy﫬yszz|𩣟xwysw ~wmqrposlqz뭞sfjrpv螙yrgjy{$CL( I7,#E, )7Racee$ GW[ace$GWT[c$ V<EyA: a7 _2765 n]zpN6e5G[Ernee4[][nxgg46[r}xxxe16xxvvzc0@NTr}vptta06T]knvxptkgne,)]__anrtppnniece,]cPaieeciknniicaa+7ekiikeccecac*enkkgikieecaceeccaa)(]nkkikeeieecaacaa_g([ikkieecca_e )ikkieca_aeREiiknkkica[]]__c  ,P[eikkikiecca]7JWT]a  Eaeiinkknkkica][aW[R[ap .7aikiiknkkiiaTCART6TTcp /[_aiikieiikniie]CC4,>A<[_e  &,9%%,.t}itrttrkec__YY[aa]][caaieacinrniegnkieR+#JI.9#>;@(#+%2[vi}nrrttrtieeacaeacc__aaeicceinnki_4 > A14#.P@ %.49ctzz}ppnprttrneeceeacaenpniee]4#%ILR96 ,4ERW_}nnpprrttrtneeaccaaceinnT[9 >R4+ %<)," ()414NJ[aa_a_]_RTJCJACC>Cnnrppnrrniigiie_]< &,,4GR]aaervcTTLCCnrprrni ieP,#  &,,..CP[aaeipxx][PPJCCnpprttrrnkiieT<,1  "(,,.,J[aacenvzv__aREIrttrpkiiecJY4/  )+1./1_accenxvaee[NJttrprrnniieaJC,),,).44V_ccacacceitnacca]Rʾy9.6!!6g}w+Ge\ca3CL*hyjWRZ}^hR{ƾ1.30+))1FQ\$,G$\Z&&$%((/*.4?R?*J4.**!'*%RJ!!$!%! +BJV⺷Q1- 8CKe𷶶lB0;.@FK}vf-(/3BHVuzxy۳o@7%0DHlmjmm зK;%#$0BLXhfl۩pQ9 4>D4>dL^_ն|^9)0 $;;:@LVct m9#1  %'1;?@NQsն^3, 3??BDKrrva뻺{Q8 ??KU[rwwz׺B? 3@CD@JNdsrgr𷬞?3  #3;@@KsOjmN_ں[!  /3;?>BCcwacms ڸf? !%.;7:9,B;CFK\w ѺV:" 201@90+';8=B_ݭseS'!022?;/'%(;9G񶵵ݺk3'#'(33/7:;7+9QܶK.+('& -4'42# "+5K~⯔U90+),$&'#(OS_jиYY0+$""#$2:;^캻|Y90" !$.)3}yrww𵲡|9.! "(Y?Hw߸q" "&-::a{qec_RaNN66CWYWWYea_WL[   )+PWTTWYYWWa_R)C))#NRNNWWaW@V;)%,CA/JTGTTE/,-7"CCJJL9CE(;:G7>6 Taa%4#[[aa[3aa[I(.ccaca]__977C%#)A;>%/2Veeca_CNIJ7CCNN>7Caca> .negng]4 >rgceieecaNTJJCIRPRRATcaee[[N[grpprptnkekkncca_[[LCCJN[TT[acececa(+@ ]nprrtrxtxvxxvnneecaaYJRJCJR[RRT[aceneeca_c_V; anrrttrrtvzzxzxxteca[RCGARTRTN[_ackieenkeecP( nprrtrtvz zxtciRCICCLRLTYTciniieeiipnnancY1nrtvzz}zz}zzpRG>CC;P;JR[_engeentrv}v rprtxvxxzz}zx>9<> (>RTainkeegkprttv}nitgpvzvvxzz}z}zxc9LPC]kkeiennpnrvz}N< (cennxzvvtxzz}} zi9>Rciinpnx}}xnGP eatvzzvtvxzz}}zz}zz[ >ceiininpnnpvzx}z}vtvnncatvzztvrxzz}z}zzxTccnntvvttrvxxnn cixzzvzxrn@_aannknppttrrttrttxpxx/ ntzz}xxvxxzzxxzzxzvn 9V[ainnprtrrtrrtvrr_C)"npvxxvttvttxzxxztaN>innp rpre_Cc_evxvvtpprtvxxzvnn)Wnn rprpnaackvxvvttpprttvvtr nkprrpnppnaanrxxttpprttvxvvnne% 7annprrnknaanrtvttp ptptvvpiiC @aeniinr rpneptt ptpke eeipr rtrprpptvtrp ptvxtrkgnee]) 2einrrtrxzvvttpprprpptvvtnee, )enr rtrvzzxtrpprpprrprrxxvneieea< ]krrtxzzxttpprtvnggeca >prrtzxttrpprtvxvvniiea&  Rgrrtz}zzxvttrpprtvxxtzvpkkaC er rt}zxvttrtxvxrnrea[ Jer rtz}}zxttvttvxrkntrkii Jerpprptt}}zxvxvvtvxtprtnc[[ Jnrpprprtr}zxvvtvtrrnga[npkaprrpprttr}zxvtvtpnea>4pprttr}z}zzxtvtvtvxvttnik[>/ 9Tekntrtt}zxzzx txtrtnkie]R ;4JecPTLnpvvttrttvtxvv zvp, &2%%4NTWTTRW[kpprrpptvxvvxxttvppnnY@>+  #ú÷ƬUcý$RD{Fj?D:jAJAh:sƀ $h:/@eyMMh@eyIZRUYe:L8?@<6nGŲZ )09^\Wl^yZ^M,??/^FFZ?TRMRJJG>S3Qqya:HBDGQ/=-230,X9}H !&.KJFVKaHKp>$22%K88H2CB>B;;9090/%%';;cLarvvkgF8ef   !";(+0;;4"$37;>S@9DKCH9701994&%%'//02Xgmm?!'4   $' 70;=99KXL95402;K&$%&/99?@JYcV>93 0.  & 455H79^QQ9729;=-%%''0951.>(3:%#(%.    /5.48CV_UKB23F21&0''&.0(    ,8;44HH_UdUC3809.10'#.#     4>?23;;^cJB9)%H0,?+1     '11CCBKLY9 2@ .     );1>..J&   #"(98K#'3KN    !#%  J (0.=1@SH@FS\YX     = 9BDKYJD@SVag9       "%CCFYcKJDKSY[9%&"        !";@HUUOJKKORQF.+%"#!       @BKQRUV\K@KDOV51,%7KH!8;/%#      HJKDRQOK('G-@KKB8_gK>JKK@,$"0     -440KQH%"+4@>"FJhJ_GJUBB13'93)      (BB=C.$ %.%%@DKLUVYGV9/)0!49=        UB?@;9%$$'@8@NHfaH9GF9( ,&/   V@@8:;" 38;.HK[GC:%," "!%&0""UB88'//!109NL\_X?""   "=(/  ["" "55\YYge:@ !.,%)"  ɵ%##3LQ^Ha>;0% '" "(-0& B$9KK?H3,# " 00./ ᳸B0(./3>./.!! #  ' ŷsY &'.'0(').+'"!"$     ˷0:$#%"#)$()"! !$9   ԶJ3%,'&''$ "+93.'"%$ "  دjFd2 ".03+(%%'(0:# ""!!   嶵rOJK 0993,',-4==5'## ""  ڳr1,9@::)43,39.?4%$%"$%" طLHG:0?0231,$3L7>'$,(-$"    ԷwK8CCB=23,4LC10%2&%',H400   ݱtB;CBB@"((1,00+3.';7009@C00!    ֵt@7BB/22:&.,,')+'(>00YgCFN-&   [>9RKBL9.93%%''+)1Ujl^cdK9%%"   ͶmH^NC@B)8.(''()2200Vmj_LLV\>/', կ}YVU98$%)//%&'(2(+(1Baaf[VHO?2,!1$3, εmjY%$.?994'+2/.)'++=c\Q[UQ8(,70;#;9='" вxj:99"04/)'2774;3(5;NLa_HVK(?,;:>;=4ԟ^;49?(')'&'.>;=;9@CBYYcHKK.''14C>7. wC7U@.%%)3BLK88;@DK4FKUFQ99.2,L=3/'$""" a^H40" (&,9DJDBBCC;;9DLQK-8B=HUL-)( %$"+ B5##&$(.8>9JGHJDQDSaFX9%@?C_\?1>4&"%%1% ssl1&'0193CGDHGCQ\ccYY^49GRUSKNHK4'0,20++2o\'-2:=5@?G;9@D[^^fX_UQKRVUKKQ>-0(+02/22ӷsn99=;B@@88289O_dfc^X[L?O^YCV4;2'(//55ǸnYBB?@@?7522!.3_%ONVYUCLHfLKNK_//,2559˷a@@B=C@;=;#R29BVefjXSfjf^8@O77;S@CH@;;! 90CKCeRhdVcK^?^QD;;үcQC;>8'$'2HF?>9^;LR>RUKKC9񷺷K021,'4F8;0HHBB@RUVK>C˶xU/!%!%,/.2254=VUXYHDHֺ%"&,.0;27QUUQVY\Nu9! +7F;>;OVQ^XjUQjR% %3BFB;FOQKKY_RcnﶷV;(%#230B3@GFJVOOW_Y[WTPJA4TT77aeeiikciieinpeceepptnkpntrrttptnnteiW[aTTRNEIP@]eiieaaeieVRRYea[E4RRnWkgrrtrttrpnptrnieaPRR[I6LNL 4 R]eiie[[Jppnrttrrpttnti][ 1(J[[e_,,;.,+E>@J >Apeennrpne>T))1)TR. 6, >](ccTITnknnIe> .VR12U=N&p<<r_;nvp;trre9txvn_78trnYL.6trpe5trpntteL4tprptvvn.12tpntvvtvxnP 2tptrpnxtxxnL1trprptti_e0pnpnpnztnpnrtntnnTntrppnkrvk)rnprrttpnnttevtpnienzvR,*vrvttnkgepke4*vttpttkeeinneL1+xrnpptnkinnkeea9*xppngptnkkiknknnie[C*vrnnptpnnknkee;4@Tktvtvvxzzxvvtvttvt 77JN_pttvtxzzxvvxxvttrtptxzǶڿƾȿĿǼȼüƼžŽ񯷿_ŀýŷTGgŸṊ̀sſlsTRGAw{yD@GG@TZ{y}}_l{JIC==?CJJFDGIJsr{l{yhyup{pj^_YAF?==?=ACCFAFGF@ROQQeyu}s}{}up}^pQJGA=?CDA?JJIIGG0.=DWTT^eyuy{{}{swa_caJRUe_e^egYRIIOG==D??=LIFIG'@(*FKXgeajgd^df^jmwysvvwysmfQ9eB=>FgdSRKc@@99?21983378;@>;""/;DCOL_gR^nyahjousvswwy|sYVOcaHGKrnv}d_\f>KVCFHF95>@GBF= %07BDLY\ghnymlgjXRsvswzwua3?8F>15/4377D>@;G:@BR?:;89@9@C=  !#=KKY^j}uguCxwwyyxkf\GKG;;9477899@BB@CRDDC@;?;?;CJD( "BFB:K5\{|XUmYajwvwsjFHQRGHG99L5C;;@C@@g\LCC?@=FQYH  ,>F.+,fx UOvURULCQ_;;LKGRC227>5?9>@??KmDFB@?;99;D'3 4'(H CL_jXUcajQ@>NGfD@=CK@B@@?@9KnKBBCB9?;;'&!  '!"-, "?L,vjV_@@;jO;=BDB?@CB:3K\rNBF>@8@2#$%   "' % "   550KjK@884825218:=:@:823FKB82,0.+$"$   ## (0R(5@KGB9721147;BG424?K99.))')'"$!    %  5- "$3:X@;74113122./+)+700++%%#""     ) !! 33=453112//))+02242'%&%"!$     /%%,3@4=722149B22502::==4%'&','%"    ,  "-# .%&/287214B=2294224B240%&)''"" (''     ,0" " !-2:712.797/08344@4/0+''.+%$#  +20 022.'#"-%$':0+.1388==KLHRF401.0/'%%  #  ;521'2%( !"+"%('8009BVXX3.Y>$($$%!  ("% &'()/'$49890==XaOYJQ^B# %%+%  00 +")+'92-4BF=0@@LkdhhjaG0.$$#'+  $$4#"%))/#"&0++29NjkhhF4/.0%  "3"0& " (+%%,4SmmkkdC014"#  ' $)&!BYjmmcHHK4,""!  ;lk^^BC32%  :UV\mjB02B"(!  ! ('11UjjhBB0"!".%$  !"  "(YB0(+!!( /%   #!"#!"$ $3fdlHjrV(51$$ ."!("!$'$"$" (+30KKgdH_5=(FC/B     3+'")'$$#"!"((+89?@_,-."#B@@    '&+-#%#$$%##" ("/()L9?@^jeHB^BeB     %/+"'2$$#$#"##""!"'89%4_mfOB@@V   % &"##%""##$ "  !%,;>;.N,,!      %,' "#$#$$.&$ " ())(29@(4  #!#$"$'+'%$ (!!%"((       """"+'%"%"(      ++1+'2/"J       )11(,+3)[          +%,+ %         .':      .%)$        ).%!1##        !'?&'" 5./(&     =;%  97880,    %' ;;9    =:@C=:'     %+:5;97973'      '+'010+;:79733:''#      )1.2200D;Q>G;9@0.,&#"      )(31/1(+JKJYG;98B''./.'%      2/1/'1.+RU[LKRXQR0+,0()(#     ..'.020QOHFQOO[RB0.(0%')!"    &/%.+&,JKJKKOORUGF@CC1&""      .&0npprttertxpttvtvvrrPinnknptrrpiea]]kc__acekvxttrpptrtrntrtrtvttvtrcJLnnpnnknnknnprrka]Y[Yca]a__cettxvt}trp_ptaekakr[npttvt[<6_arnnikknknnrrpgea_[TTai[][[aaLxvprixtp[nn_L[ieneLanttV&4Janne[[eknirppn][WRRCRa][V_NLpnrrnnT}i]LTeaLCekrttrnR2&J_eeVC[R7/WARcnke[PLNJ,<>/9T+7RnnTanrTa}@WJA>@/17aPgnaC2)%+[4<&/. 6>Ja]eNJJ6>2,+,;6;e[R_;V) %,,(.>44  "#%72CI>C4,@<9 ,  J>   %&          ( #    .&+ .,% $ ' (9:<;?;{:8_ 轷𺼼ČjZheeulle}^Taae\^JJODUTgusnwy쇅{GJRrrZZYe_UTQQ^RZ^^e^^\^WYWju{yy{}JJ_{wu\ZMeeanTTRYl^\Uehjjheg^Z^^ZZpu}ҌuGIUsjuupuujJMWUOTRQUU6T3QQNXCCBGVKJDQSUUSQRKHKKHHY^hjlmffdjruus^gfjmhff9:Do\U^j^Y^^U;>FD?CB@DD,C(0GUVURQURK44:KVcjnnjffjnqussjj\gjmdjm:9@UQU[^SXQSKJ7L_cR>LKQB;;4QVUVVUURKKH;cacjnnljkjksrpjhhmdjmnn=H\UUaRVQRQKJ[fdc\@HKL?49BQQUVVUUQNOQQUVX\cmjljffcjmjjggdghdolf@;CKOKNOQONCKHQU^SQJB@F710=FLKUUOOFKUQKFSULXaCQa[\cfj_agj^_^dc[@CDKKNQQCDKQaYf\KHKKCHHUVVSSUUKOOUVVXVVN^^cf_a_ajj[d_[[H:;@HKKF99,'%DRHNQQ@JGCD9LVVUUK;4>KLQVUVVRHLH\_\UUKLBUUXV:''(@J88//8+%%97?>&0?2.940SVUQ?00.54GKRVVUVUUQ;(1>9BK?43&HHKR0# ";8-..%,&'&9G2/?99;0=4BLRVV9GQUVORVVUVUV9@R=>O@')KSKL2! %''.%%$%%)388((%/9+592+4UVVSK9SUKORUVVUVQSK?;$-:,%G0?0""!!"%&''$$'0%992"!%'.40$99KK94'9@B9UVVUNSJB"'!0$"!#$&+%%&)1UFU@932#%0BB;3B9)DQ=H9QRUVVU[R>>15,9%"$###$%$%&89FY;5((0!):: .,+00HRQVVRLRQQNL:KB;1"#"$$%%0B?4B)'+.90+3)+ "%,).4KV VRLBLRQQKK9"##"#$&.00C?^=;/N3=HBB;24""@9).3NRV VORQQSR@H5( ""%'/C9aer^YGNp_9B;4B'"7@JL40BKYYQUVVUKQRRKQKK%#"#"$'BDe^vX|qjQzycrGX>B5@gm_}y|r|llVUVV[YVUUQUUQH4"#'GQf|wnhsjmcd}gSYSKjqs}w_oqjXVVY^m_UUR;:QRHO   $.:z|usrjymGXdfVQXQp{~~knmpjhV[NjjxjXVUURUUYS=Xjh^l  "9;CGvyrrmKKGVcrtlXSsnucwqkcKKc\dVqcX^[UQRUcfryprq  )25D=Q~m^aU4Doxjf{{usqgqtUXDXdQQgms^^UUYnnwmnn  (&@ozuwVDGDGsuoorfqs~hyUVDG\KUcrqpom\YVVUVjwtsfm  "17&hjvwX_9Yceutduyvh9R~r~NrcQYVVUcsydmntfg^[S^jqffM (.11';;qr_crjVjvsndy{QfLOroKdsOLmszdRryssrqwqYlUks[[e  $%)+$::HNHlojRmquyxzuRLjY\j_KVhyrQwyxwusmqsX[jj\dd=9337/99B=:CYj;Y_nyvwwVKLfjyrmcqywqyywzvsywqhdkjsw %0@9-( '5350/;74@287^xd|vtuRJUlfwaqqwycpwywmlywqwUVjyw"(4:9,0#1(),-24V\vtw||XCQfhvzswypwcwzxwmcwyU\[jow%=BXRH%B"'3+"#$,0=^hpwy}uLQLfdywyywyyzznqUQjjgjoqoC%C__VH&B3)%%"!-"apozydt\aUjryyzyyzzwdodn^rj^ssc.%"CX^8@2+ 'qwvЍ{vac\aKrd{qy{zyyxzkdqo[d\[hU^BC9F^\O;:87"%"" !d{xhkejcmUjUzzyvy~lqmUQOLUhRNBVUYsULXD.( &%"  ,w|azvjofjjd^c9[azyzowwq~wjUQOQQ^jX(=YhmOQOB,')&(,    kFsgggcgjjLYSg8NBymmcvqswfX^S^Xqj9KmogUGGC@99;:;9"/ +:c|jyqjgfjhjjlgjC_RRBd@aQmYUaUOX[U_hjJXrrsgQBB;@@B=0' 3Kafh_cXXVjgkmmlj\mec8OVwjcO_YKRLacaqKs|rK?;?;?@:9'   9Nc^\^gccjjllmjkgjNcVr^kwjL_l^KKVcr~|ndN@@;@@;:/-)  HCcY[^gqqjjkmjgUjB9FVQ^[QH^ohVSnnz~znYL=?;@@?FC[5)L 4BVYQOcqjjmlmjljjD_;=LVKO\j\ssjUUjCc?[@&>9;9@BBCUca'('(  9QHcXqqnrm^jkkXjHY=:XQKcswj}vzVdCNC;;4K9@BBFCc{y>5(4 .LKJQhjsrpnhQdRkFCDK=HB^jamqXYmfO# ""@?@B5;@CeU{hcSh>( ,B0GGJl\mjnLVUd[FCCBGFQXvjjQhKC ,B9477:_t}g|z>8  !+Y_edQ>aFHBVFDYQfreqjkJOjcJ  %3;8;:58^}z." (KVKfHFQF9DYLC@Nrepma^nLQR\ +%1833artь.$'7BHQLQUHJC3BQJ@@s_BG^pK^_YC%'&/9[p." ' $;@XQUXBCNKLON?fjmYVjKKUQQ+0Qa3# '%% .GKQKfH@;VQRQYarUkGOHHJUR  9Bύs $"'% ;@XQ_f[F@KVRjaoYcUQHCVVYJ  yjywsr'$ "  (>@Kc^_UO@^cjgkmKwXNSKffK  "B|go}}j3'"!""#  $9;5X\\OgYYoussujdlXXQqhK   ^BnY5K1%".% (;GC[U[j^\glwwrpjVUQONgq    "%saadL59>0%&%#(  17)@BQValnrwyvlYQQNFOa%%    %^aYQ;;B?42$")% &%'(QQcs|y{{rjmVVQRKQQ,+,  !GsexdUK@?XV^HGUK"@KUcyygcVYUKLKK2+   FFtm^H@;U_KHU@:(+4VUlyocj_g_QUNQQOntrrpnieccaYWYWTJJGECGGJPP[[Y[aa_[PC469prrieea]cca]R_aaTNRLA;4++9EGECCEGECCACCW[[NNLNAA>.26nknnaT[[][aa[RNRR][@L1./(99C;ACAECCA@A<9AA@JTT4%&,&%% Te]c[TLRJ[VEN_aa]R7RRTR9,%> +A04%"! 0ljS; ;;a@B>;%%00.%Yj>(%09@%-"XmnDC^9+7KKL;"(0:0mmjC1"918"-, :;gjonf"+3pBjmrY+32jyhf@(,"ysjssD0%"(5vhsh3D," ),401.,(0vusDN4'4/+0D9110"5Bej;!!,.'30,&"%4>al;((++,,04.)((>;JySU@(%832+/0.0)C4>Kpy^YhlmK91/(,.%30)0.F@^nmkm98/((&"'('%B{BjjummHC9-),&((.0tsuvsj^rY?/((3$%0$&1lrsvr_[jYf,--)('&(&(FussrqcHsj>C9',+(/.(.mjrdH^HLd-2+.'5,(=(u^^_VHKJ4+j099@24%(2mK^__1jmqqndhYtsY(}νYQK_Xmjoqrffoq;YQ@XLa^UhmoqqlyUUQ:B0Y_^clnrrwyrjnoCXX@jnqqprssoCQz@.H9C45ForqsuwjeYSyBϻ5,3'%^Yrwwxwy{}sqK4""0G4jzz~j@aϱ&'#""!4j|}wBGcJ'""#14XjNJ{J&!"3K49XwH>25⤧4L&".O,0@c}Y.+)@ҲQG+@\ClKasws)(&LHSY[aQVCc~~aN%%BK@XaN2100/oq?-%"#$;LKVVG;30&;Cq8($"%%.l9o.,!91#:%0+8'$,a^QDFOHB-&$9oK%0)3Gޕz#,$(-9/.1.)UjL=SU84%(OoUK;U2#K7H(9%28(2SO9dknK=BCC=&" ^uwLjaN).ܑk)(41418=KhjC?+00%".OuVyCjK7ߒ3$""3B224HSRkf;=1) .@txfnnpQ^VQߏ94."'"()9QHOGBUVjw>/,%".9vvoqxwc(𔒔q5?C?1,("((79DQO@C49DQ92/'(JNtooqq@ ؔ,@?.0-.(-"(79FSS=;=9755-$%(:B,cqq(t(0".@>>3H0H0JHDJJ=>H4.)("!..((KNxp{[@yq4-,XcjjcHX+@#;KB377(&%%# "-;7@3N׽_H9#%(Hacjc^UjV4/$@D8=8 !%%.,++)(%/@?5(ʠm,H+%!X^ahccfU^,('9>-,,$%$#",25)QQC,+NJ%'L@("ƳxqYH=V5CFcjjcdd"3$1, !"%%'2)(?X;C)Fj@%(9 "/%ϳ|jeSR4:GYY_aaU$!@@-# $#1"#(@N:,8(C#$wO?94JO^\a^a:,GYQH+$%  (03U(%?[UUNYjwf+Ͻ[X^CYCjdjfaQdd[YC>(,$ " !,?;#""!C5 CYr+ dznJ9C4C2d_V?>a8",% "#15-#%!#")" " ײ{G04-10BUR?KO.4&%%,!%#""$9.3O;((%#"    ۸{Y34'110.UBUH,03,,$#" "$&$,%)   ۷{@'%%,0;(--(( #" !!  ܣKC'%#%#%%(9/=@a.!/& "#   %(  ޷oJ&%%$%$'+.==BRUQH1 " %" #   ij"%%$&)%H91(-,2 %&   ƤD"%%&(+79;>??>((2"!& 1,0   ַ4/0;O84(BHC3((. +" 02?; ʷ0%$,.%&%((8%'% ,2;;20 ⩦%(.(%543(5."!! ,#2 "2:;=00  ҭa%= %;;@="!! ?3$%%9?9>01  ˣ_)"%?:.%  9:;+B.0!/+)9  ˽y5&>"0CV?#(JVV^_%"!    4@@K.@3$,/  ˩㗒x&((:((Hj01DaQX@&87kS;-"   #9(:;;/ !0.   Ϋїh?9:;(4R;B)@@:S@.0'9KVX("! &!"-C';?;2B!!    ˡєsYCYYHUD@YnsrqrvoamjhhjV/$:"$$.=K95870/-.%%  ۷рmersjjpYqrsussusrqjjrJ0&$ !!0#@@:92%0%%'%  q>CBQGOfjujussqsfhLS&"$0$%.@830&"!    ĬƖyK@;?QeQ^o~wqtqnppvwrrhc^4'0$$%CCK3)'  Ҥ^DB@KeyyytpmjrrjrY9['%!"%(.G&1(  轡ژ_C::Bfjxzrrpmqsrr[jCJk@(""'1"9@' 䬣ؒcV;757?@@Q~vsnstuvodejvj(K4B,09@+ 㬣[B9799BVj~rrvsfjQLG_j:20!4230"!۳c875758:Cs{jea1?1,(.?;"%!!"9(2"!¬X95755;K{}nld8KC-"59" % !'%+0% ֺ:977@Y~~sfYY>=,'%!  !""%$"  IJ:98589;BGLjrnwa_SX_=>, "   "%"  ƠzV87899BCJCKjsuvaaghccU="'   %# Ĝp>9;9CCJCHOoqd__eccaS>(" #%""#&  ⳣhR99:=BDDKKc^_ccVO>,&  "#"" ƬV:;@?CKKNQcaffcVR=''5   ɩcQ@@CKQOOKQffadaf>''!"  K>@@BKKVQK\ffdf^_=(&""  ͫa3@HjcjfQ[qqffafV8# $ "!   rTRRNC9J[46   [TRRPNC2NI   vTRRPJ<69>#YTRRPN<1 A TRRPJ#%6  TRRPLE%9   _YRRPJJ   rYRRPLJJ6"2&   }RRPPRPPLJ;)%%  eTTRRPRPLJ1( "  rT]RPPNLJCC7vp[JTTJGLGIC9JAJJCAELJ6 [JJA@<;>CAGC ' EI@;99<;9< @9792 #%,C;9974,(,_9979.  ;947@4" <99;9;6@9 ' C;799;97;@962(" +<99;7997) aC<;<;99;9;9 (TCJ@<<.,&%ƬN]WA;/&&ƶne;,9  ήn7A46.1ζxT><4,"%ƠgTJCL,& nge[NNJGG, 2ˮkI[YLIL9.2ѾvJCCAA.2ƶt@<;;<<2ƹRA;9;9>3ƻtTAA;994 2ƊnnTRA;99+2ÖTPP<<973þtLC@@;9"2ƶtR@@>943[WNCA<   ΤTJCC%+, PECCAC(,&  aRJCC9&   aRJCCI<1+441nWIEEGCC<2,+2%"a[RJLGCC@, 1+ "x[NPJCGEE&.411"΢kTLLJLLE  #ƏNLGPNGLNA ƊGEECECGJG>   nRJECEGEEGI1aRJELPCGJNL9 ![RRLNNJPPGRN cRRPPR,  _TRRN %*!'1FY_ejge^J/         &99=<_IATAZhjjgLJIGG%    3}CZI6Teejgje^LGG'<        8RJ@D=*3FR=<_eYZeYG!       \^OA<$!*$"6aQjgu{wws!,I:Gu{u{{}{ M^j{u󯼸$6GOAheyĿ.CZhpy)1*?+Fe{w)%$9^ZYhyw{33@cggwu{ +34?Rgjjl郆GC@FJesu{RDFG^gwTFGLgUZG^hp^{yw rw Ő Øÿ u咗sU\hu^Ze ۼeLJ%M9eyc\UROTuſTRG+%61}uZ{rYOTQTZg}R+**F3,IFUIDFFGITT_w{uhnuu󿾽W\WO+9@@DDGCDDG^ly{{uslpg^炁^ALQR'=KUhqovswwuojc^wyy󙩤յ   ,9?4SQjajsszwyysjwvǵ% 5HSYanqrvrs}vw!'"2#8Qc_hjmmqxyx~!.KHGSa_cflmqns((3ORR_^jcfflnss #()2BRUUVjffjmosy9538;Q\^cqmfgjlqy~B789KR_efmsjjlrvC89=RjmqsylmotDH9KSjmsw}{ymqYKca_uyywz{{y{򵳲 񵳳[jsqqxy~~}{{뵳_qyvqty~~|z wy{z~{ {~~􀁀~{zy~𭬭 ղy}~~wy~~}z{y~ssw}{yz~~ysqw񲳯^hr}zzy~}wuphq\vձDhJnSoqvtvpql^KHQv ۩Q=;>.QajOmljJDB?C^horrsCB9#,'d^Hc[G?C@CHRdfgjgljj󫬭B#""8($:8D:7889:CCL_c^SX^^f󬫪FJF?#.337795779KVacc^\VYReKhg~K4=@B10B;757557@V^aa_caaVNKHKLJCCFSrKrnwjY_ppCp08@w/a{0%%KB(K;73+559KU^_^^\^V3+,9329;:4-:?@@CFCB=1+%".-3@BKU5KK9/.155=J\\^\YV^YRR8+(897.9"4279=?@CC@1)%%+"!&:?C"'KH>#.;K^Y^\QGDXB9''%2!--37@BCB;9%' !";:;%"%94"+4FKQ\U9FQ>C;(&#$'""9U850,@@DC@8'03"'&'2;&&;>'(7;:2=4=91;470''&'0"#9agO"'.7DC?@',9'%0% 05%("%9;;0>G=2@D902'&'%3/KH^K'./?CC2'!%%420 82>;4@BO100+2').974"9'%#/%9?@2&&;02 /, ;8;@;;?JD99+/,2-?;'(#0 '.)2(/.0'!9947 "8,24@@0CD:;0.-9'+/%&%))7,+%3==!&%("%)9;9  "#%2=99B;:+''&+&/&."4"3"%+28('%'%/&)99=CD "4/0:94&&%$&+,.'" &)+""5,'9>BG9  25""%%'!$$&%(''$!&(-++/0'%';;2   "! !$"%%+'+''%%( ($#(%" %&9% "! "'$##%'"!%%% "$"#%! "! (                                &      !       /% #     >k5& "$     - /!,('-$ %%     ;3 &:(,/,CL9Q((%$    "0NKHB(+"DH>[443JKf;;&%""    "GVUHJ0,,0%%&>C8CC>59LRDX2$%$"     ((B$03;RQ^GBF9B9JH>',553948CQUSY^8"$"  -:CBD@KNVX^8@^%2BQXCB558475GeR^YO(  #4;FDDOQX^d(4^#)9QDD57;KB@BDYHgcR9+%'GFFHKUU^d8&p@NCQH8Q\YVLDBDXfa?@   !24&GHFKKRmp  9C_eiinnknikinkninprtv  9CTenknnrtppnpnnininnrprt  C[T]knknrprpttnppknprprrt TCkaekknrpnnrttrrppnprprrtt #%LTTciknprnknprrnrprttrrprnrrt  %.,PNLenkinrpprrnnprprprrprtt  2%9G[[_kennknpnpnnknkknnppnpprtr +LRI<.EA<$>- ' +煮ÿ鼴쩧⛘睊񱳮ſ󳮦 ľ񣨬   伸󷮢ǿں¬ܿaye{yYpnUyc{ĿO3+((9&"/ &4{ffjgcfmwwY^sKC2Ra-,hlG7V& $" !-,-"//&" 4sV\YUQULemwwnrmNJD=%%$"%""!""' /'%% '$.7.##$ "!"vXQQRNKOFCLQ94LL@a@9'&%$ #"%%4",/+"# /)-!$"(""oOKKJK@BB@;92-,+:;532(% $"""!',0&!!,8-!## UJCFDC8>;=@9;8,(+/',.2. " !',-0"#  +$HH@=@@05@892+"")+)+,%%  "  ,/(# %!!' $(CC:9B;B2& %&/25$#!'++$-)  $.,,) "(,'%##8:9F92897&0,,()#$0(&+'&""$" %).0.0$'&!&(&$.3%#9CC&04/'+1)#%$#$90%'++%%$"#%%-//0100,+/'.(#".!'"8850%%'('+'#" +40""'(++' "%%!"%',/.12.01%!# 552.%&%'+'(#$ +24 &%'/2&"$$!! !$%/..0143.%7).&&'"(,+%%'+ '.('!+/-0"'!%##+.'$SSCU4 (&!&&.'')(&%""'#'"+./;H0,25'" !"+)SH3, '/+2.!%%++%"0#$%% !,,7>@CNC988'"$"!0(C1)"#.0+("#%%+%&&!" ""$##++)$0>>DF2?9192" %$&'"'"/0%"#!""%"&+('-(+440 "!  " %!" !%#!# '+('')++,+" "!'# %+" %$""++''$))+#(&  #""'"" ! "")%)#"!%)11#$ '%' %&5'-!!%% "38@G())%'(&#08??9/    ) '!%!"78B4//('(+85=B@@9  1 ""3992/2')(!+7;@@CB;$ ()9@;0+'" ""!%(!1452+)++% #+#,7B=@;9   +8>=>?2+0=+)(!=CC8,'4((089()/1:;@@9:  .29?@@2 &''(9B%((_GdX@.?:-XCCJL9;9HB>C;;  ")"."+;7?@B@$ )0FN9KK%"/!"',-mfwzfNzztxp?aROBBG@ !,5..78,9?;3"04wOdOVgsF02lqswyxz{{qo^XGOJ !$";.02;;@9;5)?LOyz}|zzۉ}jRKaH  $05@2!;@CCJ}qݚ~yyYj[Y #,$!$9csfXwywy{Щrmw#! ##.+&3BVxjmzy{ノvq +) .##8@?=Rr~u岭{rum %0.. %%0@BLms{}wn.99'%0XQU򣡞寬{j>@@;;KKccdѰqdK?CDY歯涯jdVRKKuܬzca^^w뭯䶵gccjlnlc_qةjVaﯧrkatvrrprpniiecTT]RA7/%, &,,%229[acceecaccacineac]aaYtvttvrpnkiieeWLJCC;%%1%,),)+(%,@[aaecacaaeekiaa]ttvrpnniee[LLGCCA92.&.,//))&,%R_aaceccacnpkekic]ttvttrpnnkeeceec_[PGGC;991,1)+,11Taececcaacaaccecennttrtxnttrkneeca_YG@CC;91 +11,219W]ceeceekieinnttvxzznttrpeecaa_aaJC74CC,2"%)//46149W[eeieeienntvzzvpttvvttrieecaa[]aRG@CCGJAC;249.7JCYaeeienninnrttvvz}vxvttvtrnaa]__]YTRC9ACCJA4@;64IPPJCGJGC@AJW]e einpnppnrrprxttxiee[]_][aaY,,@;ENJPNPTRTLGRaaeceeippnpnnrnprrpvttxtvvpek_[[YWaaY %#@>;L@JTTWYeeceeinppninrrnnpnpprpr}tvxtrie[[W_]WT/7>ELRTTWTW]]ie enrpnnpninnpptvtnvzxtea]TT]aTT;,; LGCJRWWTW]_cge eknnrppnprntvpxkpnpea_TT[WTT>7@,@RRJJTWWY]ae eieknrrprnprnrpnnekinpiicaa[TWRA4 /G, JPLNLRTWYWYeackgeeiekpprpprpnekinic][a][[RA./CPA4ARJPRRWYY[aninkieeceenpgkgppnnkkneenra]YY[YR[TC//1RTC1GJJRRWYY[[cprpnnieieacce]YYJW[gg>_aIN>Y_aacca_[YYRRIJJ,;,AIC2GPRPRW[][aetrppnnee_RR T[aac__]YWWC[[RJ,I@E74CGJPJTWR[[cennrrtnkaLE#6P&__]T;C9AP1REL6+,97PR>RR>JE[NNJapnpeT@C][T%   &,49C;>;7A62@@_a/7>]VC %%&1#72VLC  *JC; &Lc__]]__]][YYR& ;aaeiiekcYTRLPLA. # "#%,;Pa_ea__]][YR  @PAceeieiekigTYTRPJLC<2) ).>cniccaa]_]__]]T, A@%@RRaeegiieekeTTRPJJEL<144,@Jccaeaeaacc]][G."TRRTaeeiieega[YRRNNRL<2;;ERJ[caennpnpnnec_V. ,6J W[[WP_eeiececca][YRR?09,! "\ggmzpOLGC;k+#'  ,KLKLD#!!553?ltq^%9K@C974-,=FH." "09cs}yurlj_a"9C@0?%''//.HB( %18-k@fmooysSjjcae^,(%0C=0,+(.F=.%'+7;2BcmmjcR^aaX%22(99.)!$"&)- '&,=4Gcljm_g^0BheU=02%%+0(  ""'2%!0)80D(!->"4%,+)2739VcjG-->,23140.#%+$!"")(7;C>!+D.2(C7;/%0; ";;""$.).BHYB-GG:-!4 "2)%/$%##"%!!;(=JD225989D43,);&;7,#%'/2BJ@@\\H3%!!04.#%%#"" ! 08KKGDJ'2-+@H5442"2=;4; %% &'4BFJK@U0!%B.#$&'%! !=9;+)4>>"%494&&'&%+&+5CO9.)"&  /;99 !"$'54,.9%%% " ",%#" 44,59)("&"0%3(('$   %!447:4"   % " '034:; (  '  00    %" 024?@;9832$#"   &11%    ,11+:;;799.'!  2%.   $.1499;9:475/.#""!% !4   $22:593;;985('%#$$!  '   1959779;:9220)'"#'%"   +#"!49::+;;9:31+)''( %$   "&$!!,7099;:8.++''%#     "#%%014.(:9:;;9::/+,++%#!&   #0,..1+.99;;9;3.+(++''""(%$!""#  7% (++012.,0.(+399;;9./,++'!%&&##"   2&'+//71150/1.+-:7;;=;/70++))'%.&%""    ;(04221>>;379KB:=;B?99-+(('#'))%#"$%    9@/029224BJBJJOQOK;DD@9+&)%%+&(%%'&%%#"   CC;09F75KSQQKUURUURQLC@95.'%.+/+(-+)&$,&#+"! DGKJ;799DQQRQUURKKJ930.)0'+&'+2'((0..%$%'KVVQ^K@FQQRUUQRQJH?33199')+,+0/3.0+%%!!)%)+"c^cc\^UVU UROK@?/89:91/,2.2+./,&%%!"%.++.&& mqmjlh^_^VUUVURQQOJ:38;9;71042310.,-%%&).0/++-0/'fhdhjhd^_VUUVVXVUUQRQK78;?;;38743:32..++../00/.00.+% $fddcdccUVV^\VVUQK?9:9@9@4=:C;:534110.0..%%)" %,-sfddc^YVc\_^^YVUURQLJNB:;;@5::9:5KB:542110/+)+.-+##%$(fdcddcVc_cXYVYUULQKF;;>C@?:@;UUFKNOK;33510++../++)%""d_cc_YVUV[^ffa\jh^VUUORJLC@@BB?;KKHKKNQROC;5211/(..+-% !"c_cca__^[VY^VffklkjcXVUUQKKC@@BC@:CKHHNKKQC;:11/.+"!!cacc\a_^^a^mmkjdfaUUF@B@@BCC@DCCHJKGFHKN592104/0.+!!" cca_c_a^^aclmmkkjc\XVUK@?B@@?@CCB>BCHKFHGDCK;:11.1('""cc_c^aY[[cklmkjff_[YOUQBD@@>?B@@CFDCDKB75513221.+/"cc_V^VVUVXfkkhf_^\VQKUKC@@B?B@@?@@BCCFFCCGCJC54712252291."dcc_\YUXVXVY^ljgjda[VUUKDJCC@?8@:?@@BCBCCDCJ;4385425577532&+NTTRTRLR[pptpptvvxtpttrpnniTRN)YRTTLR[apnprttvtrpnnic]WWI)WTGW[ackttrprpnkie[TW9 ]WWYWWTWY[aentvttppnkiaWWC; _[YYW_[WWYacepttvrrpnppnkiea]YWT9]a[[a_ceacivzxvttpnnpnkkie_][eeNc]]_]acaaceekxvrvpnrpnnknkknkeccixtJeaecipxtrrppknknnkiettxktn]nikniieceekttprtrppkknkeekvvzxec]TR nppnnikeentgppnttpttrrknnknknneckntzzxkccR, Rtxttpnknnvzzvrtpttrttrnnknnkcctvzzxxneeccaa7 %%4 .99.W_zxzzpzzz}trtrvxxvvtnkkntnknvzxxtneeceec_e[eggnnc[]ag_envtzt}zvvxtvtvzttkiknpntnnrxzztkeecceenpinnrnecktivz}xzz}zxvvtxtxnnknntvxxzxtnkeeceeiennprpeec_nrzz}ttztrxzzpnppntxxzzxvnkeeinrpnnpprkeeinxx}xxxvttzkNernneetxxzrneeinpinpprppkceivxr}xrnnvre__ C7#%JCanntxpeeiceeinpnnprppneeivr}}zz}pknWN7Reeknpnnrpngekkzavxz_]CT+.7Raeeceeinptpnaacpg_TapzC/(J_aaceegknkknnptrnpkVNC>  Ppn#9Yaicceiknknpptrpg]<. En4RRY[L[T]ic[]]9.# -4+ 9 910 395M 88=<J897879,苘rF610$!!!$%(*1/?.$""&%ȸkk-,)BGUr^>C[719%((97)/wuqnqaa[F31("..-,Cf|Yk}gmaG0KH@D>0HBCH:y^gcfldeca^C>1+)"%$%,0393&%BVt^NrslGQKSj'FQFHQQHH=nrUprfrjQVXX_KV_QDL;("! ,30' ".134@K^L@BLV^>VRDHLHKSB/Y&/(Qghja[UUB?KF,J[H(',&%"((""4B-@:CV@@BG>;DDV[\NV^YUKUQ>1@%)1.,+ % /8,:;?9800=90;;9>X:>FKUG4B;;!" +9%?;9>74//+(()1779@4HJ4KRB$ &$+4@9779751.'.! !"%/"DB00B%"U;%S9$  $"8@B8:9:4-+0+ $BB.'!":9"9""#$"D=35291./+%%%KH++ B2(Y=;9cN>,0&%"$!#%9G@$".0.(1.% !"B&(#%@;[[Vdjj_j@%!9"%$"348,+/..'&.%# 3" ' !#%"U;XUUclghjjQ1,$99(%(:C'/+.'(., !.34('."'0UdNLdjejjha4#"3,,##(0(#"%9G=83+11&(  )$$(,"Q8U5^_QdjllmeJ@!3)%%02,9LHB#0=;'")1$& #"",.C4cmmjj>+&.-/ !-%#4CRRK,,BB1$  "%"%($7DkjcjS#!$(%#$-.0QQFB9=H330&+ $NUffdG#$# "%(3KKC4%?;#  ( 54>""9HK,&+," '7  %+! $!%3&""? '   !%        $"'.   !0+0" "#      %+-.>2 $,      &"".%)%!% #        30(( "5B/      !.8:2 )        '02=5             +/98 !      "'&  '(""           ,'  !                                                                    %     '"$    "# !"  ! !     $$&"" "#        $+$"$"""#"          ))%# !""         %''%! ! #""      #')#$  &%#""    #"&""!!%!   '%'"$ //""'-    .A7WTY]gprptxzxxvtvxvttrtrtv9T>PVYTTPannxxtvtvttrttvzv[>LTWWT[[earzxttvtt}crJ>JNWW][]epnxknprrt tvt@CT[[]_a__aeiaenerttx}r C[]]__aankrknrttvxvrn29[]__aaepnprnpttvz}vp_T& >Y_aaennrppkrttxzxne>,gia acintprnnttvxzxzxeA [nnriaacaaciptrtpprttvtz}zzre gtxneaaeeaacaeecenpprrkrttvvtz}zznnvvtcceeicaaceienkpnrrprttvxvz}zzvNxvvrpeececaeeiennpnknttx}zzr%J) xvnpkiieneeininnrnpttrzx}zzxvJ+ zvvtkkininnpnrrngrrceLet}}}zzxtn9  vzvxvtkkeanneinenrrgceeTe7nir}zzxrv9<42( xvriiaaiana_ccaN/G,,Gpc[zvrxzRnR274. ztxvxvtrneaT_JN WrtnR)J.71 Va@nxti_; 1)&  G7:88::;;^je^^spjcZ^_cR1*%$$   .^^ee^}ujeeccnlJ195*(*%)$!$!!!     !!^^ej{yyregjjnl^^g99/*19:$$"$!     juynpjy}{eYWFD.<<5*&%$$!"    D^ee{rn{wWny^JJZOMCC:59$$!   53@5M_jelYZjUesa\L^WIJIG@:+$$"!    13@RYDLlYCUT_GlsZLWUTRLA=9&$$"!  35?CC?@55/+.    +(3+>LUQVGHUDQ\NJ=KF:;:93/#     '(3BG7=VG5DCL9V\H=FDCB=41.     (+2552302.80YKVV=KG@;5112.        "%153/5.++009B^^aXOJD;5113      #".1../-+,/03>FQ^cdaKJ;3154'      !"%++-+,-,.454;;_jjcC\>7591-   !!#'(,+.+.77>=Vgcjqaa^H=@;COH#" !        "&()+/0,.2;=HnssuroahFGDDVYH2-$"     !"! '(+//0,0:2:_vmmtw^nweHK\fQY@?5(%    "#&%'(+J20034Cs|umwncUB@,/#"    1&&/00//9>vyy񀉁yK@;9"    1.;fK~lN59:Ⳳ~kKB;;8     9Qnm緺mQB?G94     Bes߳q}^LR;?+'    Hhv기sqfYJH/.   rstwrjYcNB099%   Xoặ~{qdV^^J;%%" >Klj亻rq^YYV3!4  /GV~rݺS@jV\=(K'.+0" -CUgj渳F@4g98&((/0"!  3CCX亶hth@:"$! ",0ddqV.c5{jY' %C~cl}VwkzRQ:[=++"F4  %0QGX910&(#"-2B&,!    0>92/)+"'(#)      )2%0.+"%    !)+""!'!   %%#&"   8'$&!""      C@B;@     C?;2          242+?          ,                                                     )&       "q::        1zOBx)! %G|%    ((L059"0($%',0q    /)"-,-"F%XV~:arp"!+%B>>   J9LLKVQ3fQ\dewtt@++/>RdB    3Xa^QYc^dgk\fww~jfuvfaa:KKN   ($B[>JKddYgagwmorsvqmrL@v}y:^(Ccn       \^U@m?l[UYYUYXjmqjurjjcstrx}nB9O8F   &:Vk\^YQ[eY::HUY3.mrrv_xvfrsx}}yyjK(%-^DGo    2;SLVXQF9=8'29F4-0QVqrVfp}qwazuj%KJ%-@\9j   %%(9GJH@;;,%,9.390@OfrhUstw|r}|KVqURpB%.      "$'@7%5;35:992@B^Vmnnsv{zssKN(oraFU+     %',78;@;;3@>,@J^hh[_F;jsuQXKqo@"    0058?=:5@24CCQ\RU(2qUtfF"    .,3942"+3CCHCH+(%@_wv}w~ja$     )2..,1.@B@=0(%$2CKY|z@        !;@=8-!'14522Cr|x|}s{"      15(720B.3>2299hnx}tsjY9    54322.H0;224Kpvnro         1N0'GXX022F^aXXf 3; :  7 /A [>>J&..  ,avnnpniiW[LA,, @xttprttnkeI@ ,2." >JETT>Wnzzxvvtxvvrne[.9;,1.9L[[_]YatzzxzvxxttxxnceTA>9(4 @L]aanxzvzxztxtvxxvgeJA<@@#  >W]PaackxzzxzxtxxvxzxrieJAA@<, ,.>NCaacxzzxtxzvxzzpccLAA@;  ,,W[[ctzzxvxzxpicaC@;12 (R[R][nzzxtxxvzztnekcG@<< JPRP[eenzzxvnkii[G<>9+6I9@LCac_vzzxreckiaT 4%!+292#LR>Arztxzti2C>JT " )6Va,h -42 +NJ;AV> )P[1G_Y ,",+E2L .(%,%eYSHG=941Rgjfj__j^_UQQ  BjvarjqgkKGGD998%"&H[ccjej^^VQQ!  'KQpjjwV@F:F;;=4.)\cjm^hdUVQQO   ,&"p|_DGF:KBB>U.$":jmmj^XQQOO%  Q[fHHQDKKUQU\VR9..9hlmmfQSOO  C@C@BKFRQKKLK9930HQllmmjllfSQQ   49;B@;YXUQLVQ;:5/"^jlmmfjYQUS    (?@B3Sa_UQRRB@B2/'"%#/jmmjVV[^  %),2Jl^XQRJ:C;20"hhmmhlaUj   %:Gf\YYgG=H049hjmlmjlch[  !0eDU_dYB>>L)+ %4$%HjllgljYY[  "(/FJ==OoSKC1(!3CUJ0H(1#%QcghfcjV[e   "!,HG8trqQC'%(%G^^UJO98Q?>Veaejhcuo   $4h{zzO>OUQYgdejXUVS_>@QUNajXXcj  %&99UwYV^YY^cQdfejjVFcjB0@V9BK9;rj    %(4c^HScdKRfjjhCjcU50@>0;FGor   !()KhKjhjdjlgmmljfRKO@2:>>?HLg  .^jemjghjjlmjhU-U89.-1/;5:@N   .mfmjhfjfmj_hV.BFD8'2B8@;^C    )nuu}mjjfjf^ka4BdXQLK9,;42/9   efwq@?dLX0#&%!!""!!%'.20:   %%5rQD"+74"%'  ! !!%)223;    %9nreC34%'!  "'/229a    %82t}orm$J"  #(2D\j   !"-2Rwklrq^V%#  "!"-@@gcs  !"/LFj@"!! !!"2CKLCD    %&'9LX4z9r?! "!! 3##.;DL@F  $,7aLhmƎK.%"--8(+OKOOcC      ,#/yqƷ\K%',..'24CDCL@;     ,&Ļf;4&''0.,-4F^^D=   #Kķs[[RcYY;@KasGC       +wXe_YjgY;?KH32     lnkJUpQQUcHGDCG;3      "Lc2j{sxs[JDDC4     !"#@Sox}xrrwlXLGJK:     "")!ssogswrmwr^m_aV>  (     ! !$%"7/YV[jjnrvqpwwsj_        !%""4}yVxC%SK^meeowwmf     " 2#%31Je9jwsvwwrjj)      !+097pswxywsvrw)($     0#")(9Qopqswssvs.@      %&%&$%&3Kpswyw~C85       4%%$%&=nqlws+ #L55!"      ' %%&&(Qojanr(J##0 "      " #%%'9YV4Fmn((J(8(      "!" "$%%('9YJ;_Ks(KgB4K1%      $%$&++V\\Y[K=qjpC$;9   '! ! !""%$%%+99;VHUhkg;H3       +&! "" !%$%'&499VGmgca9"     %#" !! ""#)0;;Vlmk>".)         "#  ""'+2;;:zh[+4@%  %   &$ " "! +0252ur3&   (   .%   %'-4L|}l>#)    Q"BKqt: @      ? 7Fsr5@Y     9Se/G/   %     >=CG @ ##". "     'H2LD9# "      (($F>C &   #)XqyB=" +#     -0Uyr59       KOr" $@% ""       ajxyy}^=9(5+".OVF-G           967 $    )+ !* # #"/1@ . CC7. 7>>E 8ICA>9 E<@<7747 % %/ VVI  - 4Ltv} ;9>9+>7 8+ 6e^_e@?<%+DYG9*.*..:ea_aYA3$%'&=*$&%%*=_cc^WR9%$.3I&)%'$..^wca^Upc/&"eQ'')$**.=^^aO^O,,$(6*&&(*).*4cGl_GG,1I=3<0.*3QTT1^^ZRglryGG81.,,16GQg^GMRWZ9Q@1.**,,19G^^QGRZWU^?<59<11jr}euhp}_aF<01.1189_jeeZ_wZYcC50A,,.15QTupn_c9GCc006656Rw6FFeG8FG5A1R^톃eyA@AADFaFF5311Tup^cy{CjFG33<됌Q^eQTyjGAc3.JوQQ,&'9IacAA=hI9lrC:^lnaj.^y^\p}9&\99yy}W}sj<9\^y^y·uQ<=e=9@WY{À?BFH.@3'%""$$'.9KfK@9BHFDK20+.0''Uq[dQ^SYedLN80&'%''-.LUQQHL_HGO5+&4$$%'+@C^YXLmjjO.95O&&,,+,Bkf_hryvr,88Q9-89+4'BKmĸmjQjta434478N88+(''C^YKokOac5Ujju89((k0fws@KQ@CamU9rys4O(%;ro@@$.:NOfuyyj441S:.V[e5/Kjwwy{{yzVXjNUumqf%jKjwy{zyzpaffv~KJYd.J..syzfsanoxraĻdFd\U0.JKsuttaKfaxtnrwr^r@01fsrQ1.3FrGcfwtwmm20;%$h4&(0.)0\y{wzo_sdjrnsf91CB0@B~}xywtwruvuj$?_/8,3JV4RJcpssrwoUS,(9# LQ|ķ@4>[BKqrlrwwe0l99>@S¿@98@BYmqsgjnR[m_%%"Jr@940@VYrh^YX^Ns>>%!Qd~80114B^qn_hRKGmB"'uy80203CYafellU[fV#w|32/232_QBVujfrqX0Bx..0/4JH\sftmg?0-=x0022F93;yxvznfdVjn43/.0212>Vymme^2/mz@:F848fN4X{ovjaL1jhGC798Kn85czne[yz;N92;BQ;QfsjhOjeQGjrVYojXqvw^U=9[VRyxl^jfzr|wjk@@qws9=fjS@V~¸vo=?mB9@qvacwmB7@r|QpcrmmV;^Ffrw^qD8B9@gxjKg\=G91KOoUQcycptmCa9BqLmj[Q^gn^d=LR;97q;mmkQQjXH\YK^a89HrkfjlUOeY_>Qhao?cV^dhcf_VK@=9LnY^=pαCRVUQc^J[H>9KmaaRyRRU^QLRUgQVLcdmhjRaRUUXU\fVop_^cdsKQCSRKKjUejlXVVSBv歯C@CJDDfcm^feKCBDQ䭯C@JJBacjhcdSGGF=@^B@@CKKJUh^BSjcaV>a>@F@CKUVKUaUoqdLQ5@@DKYKRU^loccf?@@CUf_jU~gt{孯!?BBOYtcRQUqom4>OQqcRSdg{sm_v 7BQrmY\RUjm~soY7rnLx Vvi#]Jrɾ1< &Pg C[e>[r CRn ]evn  Iannz 2Geez);JVeine >cVetgki,CNnvkkc  &JeVtntzGY__tz  pt 7@k  I]canCnext YYv}z}r /Wgz),v}}xz,  9nzpn +9Raprpre ,_itxvtnn 4 "Jitxttpvk ]xvzxtxvk .# vrvxvvrp,,& CVitxxtvvt2,,;9(.+/WV}xxxvt ",/ CC  Vvttvxttpp ##49>@4@ npt}pttnp%#%+9@9;#)]vtzprnnr&# 9;;%%# .v}nkkeen 7+&C94pneieek )  pnngppnk  rknnppnneenzpzv >reegnnver  itceneei ekccececeieecc .[caccecc[_eecee([npkeeceLprngceccNgpticc /Rcpnikicce   ]cceece2 Lacceecee )  2aeecee %6Wececeec /_cceԼ ruZ{jaG6,**,*!&%    Ϳ޸FFa_(A@A6%01.0   ۿgRꋊ}=<:CG??9150  ȿ_Z'*9:F=C@?35!   žh{3!1:9/ ')!"#       ֶzLHCCFB@@;38+0/"+        \HCCFB@@0''!!%.!'!     ӸYHFCC@=@;.&  "     ฯRHHCCB@;' +     ƯcQKCCB;7 1#      ܻ^OKKDCCBB;25'(#       ƻĤRNQNKFB@@'+)%#%         ƻaKKNB?%$&%'&      ҳ\NONKK@9+''%$"(     㷫򧣙mQQKJFF@'%''#  $&    ϭQOOHG;3''$  ( [R R   aRRT   aPRRPRRTRTTP; taR[[WTTY_a] !}nn_]TWTWT_e_$e]T[RRPT]]NL#[WLLPRT[[RTL"zrTPRPNPRPRRC7 "nWRRPNNR"t[[LRPPNRNRR@"]TTLJNRTRT#Y[TNPPRJRR__%cLNLNJTRTL@ &eTNRJJLNLLRR) &n[TNJJLNRN)vcPJJN6/ncJJGLA20rnPJJGJJ0cTLJJGPC0aLNJJLLJJCN<@/PLJLJJPJJ>/nPNLJJLJPPJL/RNJJLJJLNPR9(/zVPJJPRN>/nLLJJNJNNLLPJC/LJJPLLPLNJLA/[PLLJJNJLNE+7#.eTPJJPNLRJ, #,aNPPJNRVRW+1&)(,ƌeTPRNRVT[[P(@_.,taTPRRYTJ7]J +rgTWWR][YY[N,x[T[aa_caaC0ke]_aaeac_c]4/pcaee_#0}aaeeceea0a[ceccecee 0aWcaacecce1/[_aaeaacee>.]eaacaaeV/gx_aa_aae_90raa_a_ccacc70aa_[][[]aeeT0a_[Y[]__aca0na[[]__aaI1g][[a_a_aaT1xa]aa;0p_]_aa]0nYV]aa_[90Ɲ_V[Ya]__Y[1e_YVV]V(2ѧve_V[Y[_Y)2άea]YY]_[>1άr_Y]YY]TC1ƩeY]]VR,1Χvr__][Y]YRT1ve[__YVa;1ea_[YVVTTC2zzka]YVVR>2Əz][VVTC2ζzcVVT92Ƥn]VVY%2t__[VVYRC1ccaYY[]]P<+1   :cc=W^Je00R    ,*(*/QZc%    ::c=.  ;;0J;(05;D     "$"!@%7   ((@ D     1($ !      0 #%        "''"       ""              "0   /  $ .   ")'/     %-),3"     1,3%$2       .1, '    5   e55($      5(   )JQ1#'    "5#   ((#  . !     &0(%+         ""( "     !       !   ,         1     ! #          ;,     (2S4)(      ++/$   ?UL0      >+B-(!,"! 24H1      -9!K=  )30     ) '9         "-()"%         &3&)/"          "2+)0 "         )QO20/'^B%&     " &/jrrms;JVY9@1       325nrUsreXV;;D4>,         302Xm3smmsl^FKO==9      " 120-VXsmmvulJK4BK'          .+-UjjsUtwuFF9,KK          ;pUmsXYvwrHD2,7:     %.  (a3j5svss9(; .;K      ,  a9kUmnwp_sl  ,8(S      dkmuusvv. %! Q->9       Ffjjuwwn/ 8yws^R[^u    R'9:" + KnJsuY.&{tDvmj    @ %+gY,.&%zy_wg  2  ==  (}eqw  1  S~v  ,  #?VXky~    "9    &){ff|z~  9     $D"8&".{y|zp          K&%8F+)y9ol       = K/KJXF0)U1Bvdrwos  "  ;p9{KyrkYjyll[Xy|mrjmj ;,,+   XXnpfs|z}znlq{^r{ggr}_yCc\aj/ r cyxss|}wwuvlgsjx{ !(9Vjjlmj0   7QVtssKKL/cQx|w_mjol{.(VgjjljfC  2H"~m&Fp&/KQxzw~tws9@/9\fjjmjjeG$%  'B[Kjy~ytyxu%  YBJH\jkmjjlmQ1& }ajmkrvlj  1=9V1.acjjljjmj- ((?:+0jy|wjy  "#8\Y1@fYjhfjljjK(9.aD'5 $".ly~c|ou  UfKU@^UUcajNFf 0Uk^3?@Uy}sk|s{vn %'BaD0?S^RKaQQ&1 )aLn@ %%@%#"vKXyymjw~w  %"cCH%V.?-(+  -(?;;>F%""%"joefqzr~g  !"aG'71+.H  $[9QX?%?%"";_jdxj{yrmooch;9 8965 76  6)# %  4&+' @CC264AA@E;; 47CCEC"; 57EG&&43@G;&2CA&7;#  2 &.(A%& %5 ) ' & %#    . 47<(# 179C %26L(AC(4AN4&  %27L4"&J,C<7.. %J%J791  ++;  ><+)"/  +;  + 0 7 GD*@ROQQl^e^WZpllAO+  !!!$$)&/16RFYn^r$U1DChWlle_WQQuw=6@!!$$**u}jsD    %&(#%'24 Kn@nGvB   !&'08(#8C嬧{aj{KkG    $1-/1)0:0q㬪2O%KHxV   %%.;;-B94>K;FFr "SmB     $+;DHD@LQURRU穪)7    9=FQRQRVQVUY   9FHOURRVUXejs   +KKQOUU__^cyy   %52;KQUUV_cjya    $:=KUUmccwQ\K    "#%.45;KU_YYcdfcvYOK  $"4..;JQ^ry~rrsugjVHON  ':95'BDR^jy~szzdc^hyljcQJ[ ".8KKQKL@OY[U5Kfjg9D\[Ym^^cafhkffVQ  '2HN\fhRVLOD921UU^KVV[\c^^chlacgc 9@J^fjmjUU_= 9[VYY^[[^^cdcqqnt.DdeNVeFJ4'  NV[[\[dgpss%CjcJ    Qa\[[^aq~   1:   BY_[[^ar     $V^\^[[^wz       ?V^cc\[[\jyz        @R^^c\[[\[^\ak|        9H_a^\\[[^[jy      BYcafc^\_[jm       Y[__jcca^j    +V_accluz~      %Ua^^_cghmv       5^_c^_dlswyz{      .dnjdjnplwwy{~      &=jflsmljkvvy}     9cnlsvnqmnuww    )5Uhlqqvwwssuv}   USckmlmqsrwtvwwB9#    "FXgjgkmnsqwswwVF/    ,@dfcfcfmqswyw~:9)   0Rc^^fjmsjzVU3     (O^^cfjsswy~=>f,$     5R_^amjjquw^H@C2)       FQ^^jjklqvyaCBB@0       :\egjmmr~JCDC@0    2jkfjmmnr{mKLCC=F     9jmmkmnwrRQOB@C=4)    /[lmmnqz~YUNFJJFDB      \lmmqw~^QKOJGLC@   ^_dkmuqsx^XY\QKH@H7    +_akqrxtyY\\d\HGFK%""!!    ++Vrrxxz~ccXc_FS.'$"!!    5Ujsvzzxwm\aRd_B-)""    .Y_jts}~~鄃djc\\Y0 ""##"    5HLalqy{~谯wejj^eR2."##""    =.Hjjou{~눉oqmfdVKB?&&%#"!       HKQ^dgjqz㯌jVu{}yqYJ^;2.'"     "KK_ccfm~鱯y^VQoyuyyvrgX99'    /1BCKafgjqwa[Ycdnsoj\H0#       59;Q_cchkv|~_\hfYw~mVOB0"   8=@^aadjks{jof_uy^GG%   3/  ;7HacffqvjaUqsGB' 29" 1  )Yaccfomw|cRqpB8+  (,  ;  Q[cdfgfgs} - 4749A&54%A& 2*.7++ATNCP%" CTRWPPCRT[]c +%%"PTTa[][WY[]Y]a .+%("GWW_]]aYY[]][a+$ RT[c]]a]Y]_]ac)%PW[a]][[a][[ace&.TW]][]__aaee.;RWW]][]aac-[TY[[]]aceeJ,%4T[[Y[]]a]aec7+9@W[]a[_[Y[c_[ 9*7LT[[]]_c[a]][-4IJW_Y[a[e[]WR(6JCWRJR]J;4J)# /6&(%%-  . & "#%9#%.#9%1>8GJ84P_6 ,"Gce/%+.9aee0%,.>Wee3+,2>aee2 ,+Ncee3%6[ee.  ;aee-%1ee.    );aee, "%,Yee, "47Jac+   +1CNJ]+  12NWaT."#)1>Raac."1C>RYaa+  %4JTY[]aa- #1CTY[]_ae+%>NW]]_aa )  ,J[__aaca)  +.Tacaa+  %#N[_eccaa+  2CT[ecaa-  ,2>T]aaccaa, %1eeigee4#  ,[aeeie+, %  #NJeeie/ $ %>9_eeieeie   ,Tceei   !%Lcee# +# Ccee  ## ,"  Caee  &+ NN " ][ee # 7LJN "N[ceece鯱ŸƿĿ}wŸ}ÿĿ üÿ wꁆyļԾuyuuj񾼫RJlj}{}龻YGC@na{}{wyżUUeZFG^{ujj{wſȲeshwup^lu}nʼȢrFeIr{ej}rpjhy{hjjp}{}wcynww^gwpy{reu}yÆŃ nj œ  ȱ            Ŀȿ Ư Ō ɬ Ǽ  ƿ 쾽¿罿巤rG^:\rh\徼^) 񼳦^*陜~󯲭Წmd_ٲjjd̯wyywwjj ѯnjsrljfm{fpsjh ﯧqmgf_fjjffgmrwakԫ^xnjarj^^Ufeefjhvuuf񫩕tB;VUmmjmrhhndfgfcjwdj髧rpG953XwNjjfrmcdc_apvnjwopDDqmQH89Kulrssfjc^UUc_yvuyseszympmlQpw\uSrssjm_^YKVl^vysgdrmXp|zq[xf8lQyq:[cQUd[YUSmgagecSUjmxm}jqsjUYndffcdl_OjpׯaXf_h_eKRm_篬Yacojfe[jyyQ^yffdrsmy笯awoqfnqswݳmuwvwvv𳲱jwzyy 㳶sv|{| 򵷸z򲳵 󳵷񲱱 󵳲         ﲳ    򶵳쯱ﯭ񶵳𳱭굷沱}rs 𬭬mps 뭯sqs 󬯳 ꬭ  쭯 ﳵﰯ쫪򭯭񱳵㭬窬壍[9K/J[kSJ嫩ᬙK !񩞏K"  CG2 PPnT[[a_aiknknnikiiecaaceeaaekcea[_ppaanttkaaV;A21/#9C_[ae]_eikkpnnkniiecaaeceaakiegeWa][;AapnTC]] &4@/4A@La]caaciknnkiikkiaacaaecca[aT44, >TJTAT[Ta[P@2. 9 ee[]T[EECai[]cvrnrtptnntvia aeYN[TJA( _accTRRC<," ca_[[LJCGECJL_nepvvxnnktxteec_aa_[<9 ace]]>L>;RP   acYLJ, AETL[J_pvttntkrrn[ARPNT <6< ;([a7&+NTL[_naxttetI[L<9  ,/.7 ACR9J@ RWeex[eaat., L#I .#9P ;/27J#TT_[TJ,  J4RCNTTcR;9LJ@R.L7TC,/C[c_TWacaeece>[6TR,   %><<@TeTTckeTRAN_aaTJTCTpittkeacceiieca][[L,##;9Nkpprtrprrtrnnkppttrknnpnnkikiknnpninkikei +C[eRYarnrrttrrtptrrttrttrnpnnkknprrnknkinn @C[annirnprrtrt tpnkknrpnknrtnnr1Eaeeinnpinrnrnnprrprt tpnkprrpprpnnptvtpn% %#;aeeknpnnprptrnnrttrt trnnknptprrtrrppntt46JJRaeeikiinnpptrnpttrt trnrnnrttrtrtrnptt4NTaaeeieiigninrttppttnpnknrtrrtrttpptvtG]eciieeiikinkinttrttpnnpttrttvvYaeiikiikiirnt tvtrnkknnp tvaeeieiieiiknrt tvtpknknkknrttve ikpnpvvtvtpnrvrpnkkpttveiei ikinpvvt vpnnttnrttveikrvvttvtvxvpnttptrttveikrvvttvvtvxtprrntrttveiktvtrttvvtxvttrtrppttveiknttvtptpvxpt tpnrrttrtvveeinppvttptvttrttrtpttptprtvveikpkptptnnpnrt trttipxvvxeeiegiiknnintppkknknnttrpiptvxvxeeiki iknnknnprpknnknnpt tvttrtvxzveeikiniiknpninnrnkkikknttpt tvttvxxveeiniknpkiknpnkiikntrrt trttvaceeinrppnkkinpiiknknkkiinprttvtvveaceeinpttrppkiinkiiknnikikiikinnprtt vcaeeiktrrtrpnniinkeienkiieieekkprttprrtvveaecceeptxvttrncekiegeiieieegeeiieprttrtprtvvececceekpvxxvttrpprnkknckeepniieiekeea_eitrttveceeikvxxvtrtpnppnkeieeiknneieeaenttvceecceektxvvtrpnnkaeeccekkiieeceececnnttvaceaaepvvxvttprpieceacaacekeeceeicaeknttvacenttvttrtnncaac_aacceepeeiknprttvtaaceaaeikptvttrpnecaa][T]caceeikeieiinnpttvaeaccaekkpttpnicaa__@.W]_ececceieinrtvaceaeccaaenpttneea_a[[&1P]cececceeiegkknpprttaccecaackinnkneeaa__<;acceceeaeeiknprt tcaeecaccaaegieeacaepC Rcceeceeikiikkppt teacaacegenrcacacirn Wece eikkiikkprttrpreeaceeccnccaenpvv>T_acce eikrtrrpttrpneeieeaceieaanpnnppxr[_ecc eikprrnrrttp eceineentzxxpa]cceikiknnkprttprnke einpezceaecceaeikiknnknkintnnrnkkeeigenkzxgeececeJ;]eeiknnkninnknnkkneece_]zpkneeccaR2CJaeeinnikiinnkikkeaceacecaa_azxkieecececaR;72N_ceeinpneieiikiikieecaacaW]vzrtnneecaT71,,1]aaiigncLLAN[eegaVaReea]a__ccaaC,}zrzzpkeecR1,.))1aaeaa(+ee_[[]aaeaaWA+n}}ttkerkieeaC41))&4T]_V4 ea[[Y]aa[T#Nzvvregnkee[J4,,%%,7GEs{uupnjjlljjr{{{llURQJJOOLJJQQRQRTTY\QDCCGD@CC9=<51swulljljjs}{}{nell\QLJIIOMJGOTTRTTQTRRQRJCACCFCC6=9=6+{{uuljjw}{}rrjjeWQLIIAOG=;9?CCBCC@CBB@B;5455855,1.1,#hcc^^VUU_dcd[[UUQF@=::4?910;;@CCB@?B;9@@;35731/(.''$l^fd[VUUVYcc\[[VH@@G@;889;911;@@;??:@55??@=>8/355.7++(# ke^U^QQLBRUQLJKGQR[[KB;BJH>937;;29=997:94502119793/+1554$(#$$jm^V^[7;C47:@:9BLFLCGB9GHQH22975.2973135580/00255-),)12#+""cVafc\Q8332=1?48FB9>2>>FQ(//+&++&'(.154534/.00/0-2322% acj\ffGX3352:44;%%8C20;.0(''%+'(++1335310++.','-9:;58'qhccjjVY7VV83795(=:2820%&#+.,1+:99858'$+#&(+75@@?+&" mVjmllnLY_sq?9"5+7KKe5B54,"',.3;;::99,%!!%.,;:;:9 " \wsjjwmlsmdveB5_oVKH9:8,+.238;;91)'!"" .7:;;9;%"'U[ulojrrswsjrX8OpuuYC=K-!%94.$%&%+,'"'#&,4;;9:2%1.1Hmhjqvwuvsmnd9ppon;HK!"'0"&)''$)3+57.7;:1Qz{fsrzwvwurvh@uomY?KfC""+,+575(51'##z}wwuyzseG__mej[""""&)++49?5 ."&$#%xw|{xsjccQKU$("%%"(+.7788#"$.''y|~{{{sso^DQ@% %.#%'+ #%7;;5'& &+)&y~~}~zyzoe_l\CL95" '.%  '&599149:92-".~~ywvqlljf^RQ;9,'')"   ,:;55:;3+)&"$z{z{qmmjqYV\;?.0'(#   ",250#%.+'..'ٯ~{yqqmmcmna^\VNK>20$ !&+"$""$'-'߯yyryqouj_\VUK@?B8(  #%"!%+"ᬳ{yjlvmjUVYVONBD?+"   !!"ᵳ~wyrlcYa[\^XQC3)% ~z{vwsjdjf_Y^^QC42% ܷuqlljafhVUQ70&&" ݬ~qomjljuUK;2&&""+(캻nmswwvB4&;@42? "漩ysoomyq^B&""B^93++,%󼽷ywnssY;&"" 3KLFB0.5  ܺyuruufH4' ! -HLKX8Y2#4$7~womqjUV9"0"%7/9KLHgY$#$%$'!zwzwmlg\KN"" %+9(+KOg9gYXXVG9L3{y{{qsmcYU4!!"%&+./++NJKUghhUfRQC$"ywwxwynf^U8, !$%%,.''-#&44\g\YSUnC%!绠{ywrwwy~syc^B;%""%%'&''+ /;,Ydjc\VL;%,ƼumuurwzoqsdKB:& #!" %#"#%=C$SaVX2&"˼~}sswwyvmpdggO253!""!03$0'""!&"ﺼzyyvuvwncQeXVV'"!!  (%!! % ɼyzyzywvvlnQ^caVK;,8"  " ʺ{yzyywuql^Y\cVLC@89;#   罼~{yxwyrlhc[VQK=::92 庻zy{ywwmjfaQU\R;;:73 ܷymswuqofhUNVUX:9;::98: %ҷrkqoomhe[UONUC;8@BD@F;" (ӷzymamjnVVYVQRS;88DJDKFC.   ۺzyqcjm_XhYQUQB8778DJKJB9    Һysoa^V^HLQDF:@C78@@JJKHB2'&+ 亷{scfHQXKK=9799:29DDFKJB?B'!74ҳwsqeCBF^92.2;95319@;@;BCFCBDB8@+# ꬩ~surYB;9F0-.,,++.58::@BB:GCHFHHC=&ᵪ}u4:KVG71.00+.+.7?C@D@;;?HHGD2n\cHVVF-10)++.7JHB@BCHHFC4糵wpc[VaVV82.++.+FF;=9GFGHKJF;(ffaa^dD.4++)94;G-,98=@3;@?򳲳qjgffafdD4,+''+-+-790/,++/1"!rkjffggfdD4)(()"""),.)+.>=0?$"sjjgV4/+('"! %'+-)49KK7+0)%$qjjghVD+.('# &++227:9KHD:9,,#+ "ꠄUr{a(?rmmjjgYK//)&$',+2;9NVKQQC4..$0'"# "+,^}ummjjgjh_\7&%'(++)0=XYQK==;4131, $"!  !'$wllhdggjhjjc;%&').+2KYS^\G=7571(53+  "-JRhhXXdc[_dfqoj(%%)40;aafe_Y@9754(%' 39(:>XVVYNVRlmejBC)#%)479KffaUQG:773%" l=;<?<8 8  * .  -  , (4.(, (N96&7+&#%.-cN>997,&% +e[TA>;<&" (tng[eJC)% %  %vx}trncV6+%(%"  $vteA;% %)&  $vteW;/.+%   $vtvttanRC7+& " $vtvttpne]6.%"#%vtvtvttvztznI% "vtvvz}z}tN%#"   vx}xa2.   vxvvxzz}}vWC/44 vzvxzxz}}}[C>224  vz}xz}}tCC441. !vxz}zx}x}}}}R<42..&vx}}zz}}}}zrL,,.%   vz}zzv}}zz}}z}}tc.&## xv}z}}xz}}z}}}eC%##  xz}}z}}}e4.#  }}z}}zN; x}}}x}}}_E2  vxz}xzz}}x}n/, vx}zz}zz}}xrnT% vxvx}zz}xvtxp_P  !vx}}xzvvra&  "vx}}xznt[% "vxz}z}xvncI#vx}ztkL $vxvz}}tcC& %vxvvxz}t_" 'vxvv}xva# %vzvvxvvxr]+  +vxtnptreT&,*vttrppnprpi[>, *trnpknna[+trknknnprrp]_A6+nikknnre[TJ76 *nkiinppnpprnpcRPL *kiknprrnpnnpa_aT;,(iknrrnknniac_[[ #iknppnkkianei[#kiikcneaeigikpen]; #ei_R>9NI7R[aknn9 "N%e74@>Ycen#A,2]c..R%A(%0"/  ) .30%!',3GZ<**:J8! $(% !!  *),%!!$.GQ^<KB@>?KBG"$    !#- ;>QKK>GHH3$!!%   ""/KH=GGKK+$$"      +/LJDHGK@)%"     .GHO@=;2   #8582+(%    $-+.2+/%   +!#%/(  "                    %!           &%"         ''      )'"         '"            #" !         ""!           '"  ""           "   '""      $   %$"'""       %!!'       !%%'         "!      "   "    %"        !          ,                                  "          &                !  "       "&& !#"      -%@L;V!09=)%#&.''05&.$# (-9/ !@\gsrV>^>FHV ('&   4&-2;273@@K7?, (2C &GSdjnmjpjcrml ',!  4%9"299G\YYQD^@-C @((@H9S^chfgfwrsvn%;.00"  "1+7=;O@FQYVU^QaHB?:.!!'"38?Ca\f^fggfm/114   ,)RY;;UhKRXgUQRXeC0;Y (%,+4B\^agghhdjq44 !! .-8UYUc\q=CXVgRLd@?2;$ &%(:4K^fgfhgffl|^f12;$ ! .94YUaYccfCBQed7a40(J(Q4BOfggjf^^_jn~hecj{55# %581(VRBfGaKHHcas_1K,43  @VQHKQggf__cz~yyk5":9",;9$/0-R[OYaacQU)-32  :QXUKHDcgf^^_cUwp}K[>4,3D5;0142UOaod^HL(21 %(JCJKG@Gc^f^^QSuwkhNU.&%530.>0/0),BUrm\N% .?3D0B;Ca^_QQ^L@BDQXyvqz}RO,1/((&34B?B@/,0COVU\B '%$-KHL@QB=C??JKQSerjoyw4/K?R.&+(%>R@,,)0)BN=X90  ##,@@DH>9@@;JJKK??^mnYjsjC>DFR-),,HK1('')0&;3'   '"(>((D94;8=CJB,/59QcV@GF;94C012/FF84%'(#+%()( "&$&;!'2.+%9B9120, 8788:3%23@,1"(),+  ! "  ' $'  8\43'+1:%'2('%2+%       3N);;:9""$?23-       3$7%;99" 8BL2#      (;:@=%/',,(C9         8B985)+!298       !0?)   9&92"+4,     .aD-+@KH%%%    $!427%3/.    (UoaRH^c@%)VX,   ',$)%(0      (DlnXUcVf^UdY"     +!//     ;  37. 1><>C<7",CPI  );7<??C_\r}qt}zz_Yozzy% " &$;??Cfx}Qor}yfKUm|xyy~   1;@?LrVH}w~lmhGYejty~~~    1;@CFYrU}hyXl^Gmhrs|z}~      3>>CFB\mrmom^Vk^ptvx|~       92C=?HYq}ysor_smkfryz~yw   9::=C~rgyqDVjHGoasqzvs_      29:C^toxkh|H8\_Varsys{kmrm       '\VgysjX4.XB_ersjymyuwwssw   BVVv}sfH31(Ghmlsnfjwr|tvw  3KKawsvguK>92/)jjUYjUajuvw      %(1K_V\u|fckyJLX1.7..Nhgfgcd^^ww{zu    %79KcJK[rl{horRUNB4[@Ygg\jjfmerz}|j  (FGFFJ^jt}vjofHaoY?NY_ujjnrYsx^>(&)'"! =CDFFKQQyqyvsajqwrSOUYfnlQGrrts0"#""%&"   3@9DGGFHFHU|ryegwxnmmXjsrVVHqrqV"$"!!     03@DFFHJoqwcvmz_Rgnl}rQQKUqq(!         0>DDFFHKhqokcu|cnwnjtaHjjpsVNs9   9;CFHFFRN\n|f^Yhv^snjhdfwwv3roJQ      %%GHKKQKKHKzjg_[[kkVm_F@^Y^S[>C9?"       %FJJKK^\wg^[[X[VQO;GJ@^^K;;9OC1#       'KKVOKKVUS_gY\\[UVUOKK=LL[^;889@ +     JV_^QHQKKQVU[a[VUUS:?;;OKD49FH=       BYQXYU[QSQ[nkr\^KK=@?=:K^437=F=      9^_Oa_UUaY[^tcvjQVR;KKDKYD99:=C       4CHcd[dUUj[a~qxmaLK=GHDgRCH?CC     >fYcnjl[V~rq{jKcKGHKJJYDCC@     ![KN_ffsvwplfcYhRKKD\O@CCD     2@rKO^ry~ssryl_jVCCKCDFC    7YXLOyoovwjf{rwug\JCCF     #?l^uyyjhjXvqrq^^xjVCCD    CjpwwpnXVXcrtmmYmuKCCD    1onjwpmm\VYVvwqrpms[C C       a[jndhj\YU[^jqsqoosQDCCD       (Y_kphldhUU^lvyvjvxjjKCCK   7Y_jmhjdfVa^psw|vqscXUCCDCCK_\        KSaccdmjkaclqwwyquwKKFCCDFOdj     ,^\lcchkaffUy}wvwomoKDQKCCHQUUs5,.C>%),A(',) &  ;)%  $  %  &  $  5   %  %  $    + !   ! +,4@  ,(+        ! 2 ! 24 %4J  ! 2.&C,@.! I,4C9 >C C PA%>( %;+,249+,,1L >C#%<% 4  4C4LJAA.2 A>9CA %(  4CN@JNL2 .I #+C %# JGLERPL,& "" 9 +2JLPLRRCGRLNLE9@, .   /JJPRJ>CEC9(4  ,LLPPCC9C;7,.   .ELWWTP>%9, 4JLRRGR>2  9TEECA1&   .>.1  ,;!( ,#%    &    &#%    % 4   %#    & 1%  )(3>~ <6,% %  @7K"+175H;-4"       msrqk|so}h;zK%K.+9GHF5"    Lzrz|tyyzrm)!)H;>"5NF"         fVw{}$SR:,9G9KF    % pm~~}ydd\+Y0?@F99$       &!j~}qxsj_c'pD,?K"!!    0zss~u8qq}qCN)(.7>5KH-,(      . v|wYYKK3^kR %:5,4%@"     V_SH+K{RSR (B>.#"F#1     ! ++C5"-gNOU!9K%(&)@10CC=K\ "   83Q?)&jR#%&"0% "J=.41VD 0"    UBB.!)/VL"("dV5.:X:S/    La9.-+;:-&(1 1@,CgO     ^h}Qj:mKLyfqK0'7%"-RB"     '  ^noaaqnkyNKF>25;..   %(   " m^QtUplncKch5G$$  &C) !% sscKl[{{Hfjc1H5$ )  $!(jv_}|nhypc>D./%% >( %  j^sYyvk|xBO0(!+,.;U     (   ^gm_r{jrs2.% /?-22./G-   2   fccjsm[sufV:7#)04>@";90         fe__gLYsQ#-%(5%1>,"3!)G9K@H H0/&      dekgcaSeQ5-("C>(,K@%.21%d\>@(    _^jcYVRoj+f_83?((4("0-2"(3OV@K%      mgXYC@=RO^e\7ae'1"/"0>7;YO-)     qYef\FCF9L^fzkos[>J,-.%)UaSU@K     oRY\9DBVBtxrcLHO(CHGUY/ (    ! stcG,19RGH{{~xnJVQl_"?@"X=?-  " '    {sr\N,KRONhopefoQ@YKCjJ-1-@N8( #"     ŀsgaYQKGVNFgrry~Yc[:fUBKC(=U8$)B%1"(-+    |ssKDXDQGQcjh^|j^hO9KjXec:9g94XU$%B32+   5 sK^LGGJ@VacnlK^jQ^_9?gcflf!7U_cR47!B%.   mF^SDGG;K\cjjcLgh^_Ha^lljQ9$1+_G""$    ( nQYY:j^dH_jacYehjj^h^hlmQUf5/D@7         meXBBXSmj^^addljamchUKYljQY9(:     {mDeHljlg^adjmmjlmNNFdkjLU9     |oj_\kjjlljccmmljj44V;[aYU8   vjsaenlljje_jemljf^^0;G9KG4     m9cmQjhjdje\fjgjl^fa+S77;CB&#&.         QNfjX?jgghh\KcYjf^f,,89,,;F(+)" %        KKj9N@9\\DCB\flj@;:/97),449N9(80%     " (%cYGVhf.4HCYKQOVcj[HHV--()%H8;GK89>5%      (5 ^\zjaH288;CDKYYVcj\YjK,1019,;?8;QC(2   5  ^hk_[HH73\9Y\Vjmknnpl0--00B+/+=9GYK?$!'",""$(%" cGae_cg79=42megjppjB',F43?,2:NV[5O.%5" )"$"" K0LyCBCCD;;L^k_mlgn\Y..D>03H2G28090" &""%1)"  @c>CYBFKG;c_KjdlaQRU74.30@B22,)7;4.%(: ( "(".19%"  9F::m=DFKS\mHdj\KV\QG373KCBB/+99?,954."#%" $(2)( >Q988LFKUV^^K_o[Oj>=VJ;K88C/(297Kc,8:@$4 (. '4$-. OCG8;;QLQUUQh[jcsfCVCKQK+43)&2',,98)79!(+++.2!"',  @?@FFJKJKOQUU^ewtrrgUC7FH+2,&0''&(7'$7&.=@%"%,) % (C@@FJKQQKKH9KYmwrvxfm0(@B99)1%%'&.5$'&09050"G"CDCJJKHOJCC8N[Yryrvq9+,(HH7@+%+0++(U."3J?GRN+ !(8DDFFHHC@KKOG9xaRL83;+8@BH0''+)=a5YBYLHKD:@ (+(%DFFHHF@BFKJQ;;K?/?;=;385@4'04)4jXUOVVc_YC5".'CFFHGHFKDFFJQU8C^X4G9>;43523;@1S..Kh[jfadjY7+DFHHFFHFHLCDFD^;Bj[UF=9828737B84CK>KBRnvmhf2  DFFHKHDKVCxkQX[KHC799?53:4>;4KHCmvrf/      7FFHKHKHJKhsldQX;9K;9D:?@4;8BD:8KK?cvr92  5FFHJJQNRQKO^esq^OY@RaDF@::?@@F;R?9CHepU89 -KFFHKVUVVQ_k[fmc\^XKUQJL9FB?CFG;X3KwveYa;"   sYHF\XXQYV^VKfoXcydwpKKSNCH@;;CJNLBmUOje_^r;  )jsoJQmgVYUVVRammqsv^YaOKOCCBG@=YjwKrJ@hS+wk^SwYUXYYRYmjvhsqy~nyYXFFG@;>HGLNe;HaNS-(1+ 5  3+&1 +.&%4#%1 ( &6(3#+  ), ,  1 1.7%:&<#=" 3 5  23 & 4.594478 3.  .   (- 7 ' 4  &)" $% #%%% + ,-/0/ *  ,  , 82= 9988 :P>$ !!#  #          9ITnuTF_uuyru5As^np{l{  Tpul^eer $Cwp_eJWW3ųluWYW{ (,ųulje^g{ &(卑lnp_y} &!hޅuy៹Rhދ羿^%̧uuuy yy{yh_ԙyy ^ſy$$R4Unl :Gypjgp%cw__^w$!l@jjLl ?I^OL@L0{QRUFl $!3M3 !MM@Mpϟ "<<"_e "9)(Gj !&1GA!58^$"* !!$$ƿ $ !$$"(ѿ!!$$!63Ŀ $$!!%03T $$!$&!'6AJ$$!!$$!!?(jg>>3>Y 00LQ.! 9U '94 +-Ky"ſŽ x ¬,(²&(C ,4;209R &!:j  %,$$(d !'$$%+ .+%#"(+(.,+"" +.'!{ mH  H   j  Y ( +&   B        B   _    D  F  C   5  O"   -U%"  JRr汯25   H (    v =    .   Q    xReecce  6ecc"NRacc[ .]ccnJJ 9[aaccececnJ  7aceece4_eececee  )Vca_[aa]#L@( 4[aa_a +W}64>]aa_9;eec)+(>Cecc %%6eeccaa%aeacecca􌁌kea_a__1pa]__]ILa]]__]nkaa]zekineacc)Caiineie]knpnnpknnknnknpn;9"-#4(99   32%įL=89 %"!   "1L%+ ˳㠅a;:'%.!!$")$ &"+ ĿΠq@;9'%!,-  !"  ط᭟Y=94'%""     yO4% +!0     ͻj9$$)%    ϳũ}B2 .(.    ׻/ !'#&    İf" %0%""""   ۷[!&0((&""1-#     ѣ% (1,%%,.(%%'     㼪=  ")(0$(.((   Ŭڣm &")0""0@"   0 ;.J((-129D+    4 $4&HH&$:2#F9  ֯Пq  %3C5($!+FC80   ޵U   '-1 4=%&9@99"   ߬3   "0-/0%(013! '  ةϣ}= 1,#(023.(% )     Ưw5984."    !r9 # -   # ŵf-$     (  鿽8"$  !  ;"ڼK4)    J+į.+  $    ), ͷV"     Ŀ: %"$    ;  Ƶj"!",'&(2     ɵg." "-4="       ǵh" !!(4CC7&&     t !""DB:28'$      ໬ ! "'%!$'7997%30      Ƭr'+'!"7,!    "!2B:&"%!%)4"  5   (&&2BB'"(!%0%"0'&9%   ?%2;/""!-"4>B)!"(%("=  g$ ! '42/%..$(7%(,-=:3"9%-&%#,"!YC  Ϭ! :4BB=5:773""7;9%899'"%%7-KV(#  ΰy  +(;JHNBFB49'("):99@(288%(#$ "-  şk!#! #)1@FKCC0@-0C3'D>FF99(.+&" 4 ( "ǟ;  !!))254;89$%$$/-$192K;+(,(9!&%?𦧦> !03722/$""(+"#'9;FGF984, "()-J$ '3577/8H2>,(0+" =;=>):D;-(.  ?&%%+CBx!#,.327HGLR@9==.'%HF;((&4C>..  5%@Y''8/Ƭ٤sC//.0/.008BCBXB5=&$/=J4;GF,G?.HS, -ƶ>34331.1/58?;VKR>).4;KKJKKJJ@HKG9    ᥩ?998783@29579NKKD8.;DKJ?GKKNHK04   Ŷm;;9;R;99D9;;72GSVC9@JBH@/JKJNJKH8!  0$Ͽx^;L[[KHYBH@@G;>N@G>J@??H0HKKF2/  'K^ͧԡXO^^[KHV^@D4JYBGK?C;@=9$0JGJKJG;27 )N㽡סXYR[QQ;QYRF29QF@B@=;;=5" 2KC84+-;: F0㽬衠g^JHY=LLQQV99GQQ@==;;74"-2KG8J8@93  -(㻩ꜙkVRBB==NSSH==HLL@?;;9=#C?;;>GD0"#   /5!˩ġ[U4B925>S9L?B^[QF?=?;:;;>C;:;1KC#  55K"ۼ̠k;734>HLRBV;B^^QQ@D>;;:,,795.!@97  !"kY[YY[[]aTT1nzaYY[]_e[J1_]][Y[_]aR4/n_aa_]aa[A0˖naaccaaP(0Ƥeececea0xtkeceeV 0nieceea;/tieeT9/eeLJ0ngeeN&0pieeN) /tnieecL<0λteeaL9/öza]acaYTRR.ñnTTWTT[/ήze]WWTTYaT//g][[WWTYV]ea/te]TTWTTVcJ0k_TTRTRTYRA//}]YTTRRTJ 0ΘaWTTRPI0΢nWRTTRRPI1Πa][YTRRPC%0άe]Y[WTRRL /λpnaWYTVRPRN70a_TVVTPRTTJE0[Y][[RTR_[J0ea][][TTYT0paa]__T[[Y]E0pc[a[_V[_R_R0ea_aa__aTNJA0}ecaa_RRE1ecca_[[RR71tgecc]T[TY2󶑊_WY]RRJ2ΔpnnVYRTN2єppn]WTRT92ܑpp]TRR2΃eRTTRJ2za[TRRT"3a[[WVTWW3kYWW,3r[VVW,3nYWW,3zx[YWWL2a[WWNJ2gYWWNL1k[YYWWL1te]YYWWL2ra_YYWYWWL.2pa[YWWYWWR<2c[YWYWWYYTI1a[WYWYY[T1r]WVYWYWWC2][[TTV[TC(1Όr_cRTRTVRE1Π]RRPRJ1YRRPRRN71PRRPN.1a[RRPN>,0z[RRGC"0[TRRPC;1}]TTRRN60 !+l9,9^/  ^?+ ?yU/&//wTyp   '?*Z^3^"   +Q1u{/ U{Uu   ,&FD!3=C+C*  .Jp^^G*'_J@p   G9IF*:*0!     !*MhO8ec_p  CIG3..39   &*=8FThpuL  03=3.69  &"1CI_C\LLl  9%!.3   !/44=_3jyTZ^Zy  L6!9= !1*4TM=AS?j{-QOfLYe|wyom5:9(%%(.    "1-v{8CS}Y^=mos~~jg&(1(%,.     '5:Lr5Je==jy}usV .%(   %))1L(otU~aCHKHqahjmjj =,.1  '")C>140Gu?B2BB|wpc[^fjr    +    75(':0^vc31927r_[a^cfms  !$B3J# ((3K4[{340/2RS[\[fnecw   "#U[nf=(":D@agC/702FSQ[^^krqy{  ,%%#;X^hy~p7$XjdB4,,/+4D_dgafkkmsz    1""%-?aUf{y{;7|RB@B+22.2BVcmsghvjtn    330$5Vae{cctc $KxjjXY/00/,>YYdrmoqlw  K50# 8F?|wccq;;> %#"B"#sjrV/10++@t~qszqmvyr   ("",-:Jwtvrrv;e@B$##B"{vrwhB@C,.+2mmfnjww|}    "" 3.ewwry{|{[nH$!0nvrnjXra>4>dcwcc\wz   "! $"(95ss{|}wjtw{Fnws~sussejG^YJ^Qj_^\XYcj  % ! "" 0)0%Juv|}wrr~y{~|wyprhk\Kmqjcl^c^^\\ "%"(%%""&&)'3,[;ue||shfoqwn}t^ymlogm\_Y\[g_a )")+$""!&(4J(5a:jjfFOs{sr_y|^qBNyufcg^njVXcVes  %0;)""# $!':52!:j?%(D+FJr[[oX^\\cFaC@SJHKSlxjaLYd !;33+)$""!"15-523&N9;910N8+\yf8B?9:>jaKnBKKm|qmjjN\ !7$0==4))%%(.(?"5#Q2XfU9?_83dV,9;;=B9KjLNBKX~kdsYVq $$' $($ !(30F9QKL^UO"fxU29,?9C@a^{cff\skswL^ (9%!!""'""!)(#QOOXY^;YLjF04=9YYwfo}}s_   0(0%&&+#'"71/((@/Y75V3,HDD'@BFHS_oyywyz  '00-'1%9_,KO0GKGSaUR9^U=>F@aKjmpcsy~{ !@?@7=K:jVU0&"QHJ@JpmKCK:B;GLpYyzgzy|r| 2RCYHQH=jhV7"9B)Kqj\B989;?eheyfzqyyww  .-(" %0@O\==8GNfm#99)hv^YYD9@Fwacxxesws{|n%HC_1&4;"4N@@N,_aSfg41#8".!9eme\Y^G@@Ktrfy}rvvojw)CRK'--:+$15FF+0DdU4S1"J"@QVUqoXFFDJ}w}zrs>J?5-%/.=G2H23#=((140+K^^\ao^CHDV|~yw~}>.&1&(,,3229%.#).04(!(RR^vccRKDCQjYqwuw|z0&!+;20.3,094U)!7%%aUjwjRR[\gayg"%/B1010S0%%5%%NcHKLVVY^m^zޘw}!',=B31.%-(-!4 "8[Vc=@LK^\jh\gv1("22-)!-#-(12B1%"@&0nm_HHjgnsnjkwz|zy##$(7;+"'.0((-&(%%(JLO_gdDD^hlsmoqhyvs{~$'!&%%(4(+2&&J9%=)(".0eRGnYnc^jnmmpjw,4-4%9& &$#2=0129(>C4;N^VYVmmphmy~d 221=&0%"+';# (,.79:""'379OBHDcUggpphggtrrvo|w%"(% $'>B>9"3!!$%.25SOHcfXgqkfcghrvxhj^yrq{w%'$'!$%'/!J/"!"/%00;KHfodfY^po_jmlvmhlohV\tx|-/)!-0$#%,".7/2H?cVmmqwmqjcaaU^carc[s\^gh".'+""0".!%()+>8+=OHghmsljj_aVcjc[Yjjw[L%),'! !7"$09;)'/0HLdnlhmj^j^_^^aqYw~zyRB'%, "+)  0!'&;9:')+@OLRjja\[[s^dmq_cyy{XU[G((-#0124" ((.Q4&"-@;,+'4BBLR^gh^[^fs~uq\[j[\jl|tmFG9,,.,/22 !$04Q?"+(,1hC4,,04JX[cusjjf^ulldlf\heoY.01/&0+.&" %%/7">K;-,9OK440:49VV\afgs_~yjhlo^p}x5,2&.+".&"3,&"(?C;99=9U49K>;9C[n^fsjgqz||hxx__m./),1%9)(.9?8;8BX:9=LNQ9BBCrgqwyae{|wdukm 1" #.%#".@;&(KC05KL^GNefRQ98G^qp\l~nmlj{{# .$ (%CC1457X9@JKU^sdteK^KCa|yj^flxszggsypnX '+.2.') #(=>C429@^aCORQSas{zxO~yqamQOQar|rquy&$',2+;&%BG33:@KjNVYVYczm[oJKFL^^vtqmm{"#"+&.( 401.01;3GGVR^j\LcozmNKHCCDK[}uf{"/%7'#+.$(),9804SVYjnhKgosyz{}qrdKKCCKHgqfyy"#. )'#"C5QcVUjnwxqryrtmzpjSHCCHKQqr"$"##>(aRVffHJJtvrmj^qjUVUOKFKJOhr-?(co[aaff9JwnrlyQQcqhRUr\\Y^ry}^4%">V>FakmdKsls_orrw~wyj^tv\^usww(%+ & #/,  '  ",+)& 1 # (9&2 &) 7%&&%%1, ;2, .  ..            .4      ;   2. #%)7 %  /  ,7A%% )#  7A9  C  7%  ;1(,%9"]< ;I#<&  ))+a;( Ja+/.#& ,V+;_<_++  <442JCeeT   6,41 RT[P ,>W .;>IJ (C>Ae91%97  6>E>9 9@+#" +6<>TR,2+..+ %)# .#19 <, <7>cT;9A@>"%+47, ,_' C[CCA@<9)1J<,, L%+P91>C>6,1>&9C 4+C"J   +I&1,A;1%(;;J;IJ .(,.9%4N&9+9[[Y   7+ +2 ,4/ #/IC][# /.1& + ##+.IJn$  %% ++ %,CIge# ,1 .4,JN!     2,#   /&+%$1/,.%'  ,++'    1&) ,,  ,/%9 )  # %%C(&  +/%7&%  J%&J,(.%++ )  + C7+@/,%7%%     /.%4,+ C4@ .,)4224,711/1 ,%   1.(944292,. ,   ,+#.274+.  4   +,1,,+,A1  >" 9 AC@NC<@%91C)  ,2+  &(CRA>42.244  #,  4C><6A21&  ##&,ܕ{jGGL:'!!G<9$  CGy}}{}ujlJF*)$GL3  !&u{{yY6Rw}naW<$6J* 3Dpy{{upM163Q w{^s!%<   *_lwy{s\')rg!$&!!  !AjjwpL<  wcT6 $$!!$ &FhluR?(<: lh{! !!$!  "Ten^GA6?A!Æysp3!1!( !!"! !'Rjw{{s^UOQFA$䓃ll:T//&$!!!!1Fjl{p^UGGQG@5n}r\@(**!!%$!*,Up{{}yweWTTQJ:.( pn?@=31$6eljrne\WQTTQQIG:)&!slsl^CQA8!*Y^nsecej^TRRLJC94.!eswl­\TJAF%.+*Iuussjgcg^UTRJFC?..uulnyũpLlZ**!01=3Tejjelege\QRQTICC:YWRpǭj^6*8:< *9:334Tjjgge\UOTLG:9^Za^ppReI_lhFOj$)9&:=6TFT_^^WOJD.,ulp}lTeup{upA1!911,&8F%ZG?GYUW^Q60 ly{l^G_^uyywrR'":9063$AR:AUGGCF<5 aLlsu}wygeg$1&:==6(41<$&%W6($!*! w}}wspus_^D==6=?<9  ڋsw{{eJCC=?:6$!  ׵yujrwFCCDCC6%$$1'*  ٶwuagGDDGDC9!33$!(*  ĸwWFDIIFn@53$%"!  ĵyQTwYJnD9%!Y\(*&*<  ŦygwWMMsJRQO8^*_^T:95  ¸uap^eJFnpjlg:/   gspe315 {w敐hyr3 ·렆',(@~yw_crhjgK\0  "LVf_akc\J! [vyrxRtjfk  4UUjfjj_Y=0  _jso}mxuOC, 8SegjfjV^B2 0/ mrrm{}wVStcq CQfjkffXK94,24  mwav}{|\Ysj}x('  BU_cfjc\KD?@84  zjVfukVejsy/C%%'8UVcffYKD99@93+  uXdhrnj~y[J3 "" "$DYccda_QFCC@;/%  qhYXsswmw|p231(',QVU[XQJF@CC@@:9/!r\V\VswyvK5@4-"GKX\QOQUKCBB=;5.)%Q\f_oVwpJC;48%#":^^\\URORKDCB;852%%^^VXpamY=VH""&'1(CQUUQVQRQJ@B@C:55/fGFBjYhnmmqyUK,"-/0"./(()CUURRQJD?C=9/.jKHNKrnYvglyYBQ:LVS8?U!./1,C8CLKKF?;7%$ ^VfmrYjnmfznpdVCQ^Yjch^Y4'.''$-8H929GDFK@,& }wmVajcVfyoqK9LK^axya_[B/.&,(4B/4D99580+  {vsgtswrsN=V\^kmd_aRQR'/11, )'0F, "  rs|tp_mfdmld_\Y^\LK711,120. rzmjjxmnmej\_lccQ;5512/,  נtzmhrjyoma^U{[_|855755,' " ١yszq_^y}oNR977975.((  "  Ĥxjemjq_gF87::8X3+( Ġ|wy|mhjmffajh@C_G;X7.GJ ""0 ŏzymlwjja~R_F>>\;B@?-K"LKC/.+¤yzrfmsn|}^zNvYKQ;8XYhUVjR/% vtngomp~~Rtr\xpYqrrnsnpQ('+ urvgqfc_w|xwvtww|wwsSa[(uyym{oysvmjwwwx|~}xwwppr02,q}ztL}yy~py{wqcs~{~y~~w|ytnDcpqydmoxqyvwyzy|~n{{zs~yz{nedwzmkmrz~gs~tt{yyzzpryxyympryq{org~{yy}yw{sjfjokndyzywy|}YKvzzysy~wysqjjqqlsys{~yw~wYhyymuyus|yqqM{zrpXljjz~}nsqvwqjry~r}r^s^Kr^^js}w|mwjfkjwcvjrwz}m|f_Srumpdw}{lr^lyqmuqssvjymjlsovorsrovjl_jyruwcoqjlqqmzcaoew|qsrn\Vhdcafsh\mp|}dmsjr|nymYYVctsr\_Yjnpjڪavr{~oqrmcj^UdyyVVfjhoy~zjeysshcYj^ddY_jhVUYjff|}yyJRKjjrjuydmyysu^[\l~hmYVswmf}ss򣪬KDUKoo^^cdayyr_n_uum^lwudytww}wdzOcd}soU[c_^yuzedw~oslcvp~wsww{ȷaxr{p_Ycd^y||r}}~|}usswyynywyzrosdzY}^wzcsquvw|mywysr{v~wywmdsdztjmqrusmmcqs~vvwy~yzyrsnfetڳj_nuny}{yz~yy{sjff^^ư^ooq|syu|zyxy}wurjmdR̈cc}{vsw|ysw~mwa lJrrqwsuz|kqwjyxjho^|vwzvy ysdLKYQhm|}y~~| kjKCKDKKvy|~~UQDDQKKUor}zyvt~{msKK^^U[^umyxڗxwhqy|UKOKmVmcdڒlƱKw^QQ_^gRlryy~ݭ^rr^^OKQvUjqzw댜sȭ^vyr^\X[U^njqx ">>N67 ,Vca]aac_7ALL&1 +%#, ").WC+ +;[A...74,. [WRTC>1g@J% / +<1NR4[Pn99&#* J>]_r@>A( ( C+Ra>1>N)(1. 27TI9<   9 <@1JN6 !/6J9RR9>>C/&"IC;N4()>++9C9+4CG "9RV7;7C.>;(>< &;., N[T][PLJJNR;>;,/1   ,%19V9T_cTGJPPEL7 7+ % 9R4<94>TR.C +",>gReTR_C&,LL(+ % )2GTR;CC]aTC,@+,(   2epnrnT14( #  %% >#7VJL9P_a__TN1%%) PINC<4/1;<<99  %#)[>a>94%99;A,   +; C ARR_CaaR74 %%+ %,11JanTATJ>41944C9.4 %,#  M ,9;49 4CAPP ;97J  (%.<41,cnaiT>,CL94744,J4  )& .26>C(CC2P9.,%646.4,cn[YJ79>C9<4,& %;J%2,4 4 A>4I;%>922n[4n+ +C<1;nccJ;9Y92    C4C>L1A[a[a_RRPJC;7TNEJ9 JJ,,  %& 4C&449,CCJLJJPJJI]eccTYWRR;97n6JIJJ/%. % ,CA.+.4. %ICA9CPNN]TYinkaca_TCC;.E >,.,++< ,.4 AC1LPPVTccinnppnppneTRa 96.,#&%%<<;LLR]acienrnpnnieet   9%&%% ,<9LCCLTaeenpnpiinv #%  %&  99A4#9CCRTaknkiitv  + > .C #4  #CPN]cnniint}, ,++&/LG4,.,+ #CLRikeieein7 ")+%.# % 14J 9RAEAA>4#%%6CJeiieegiikP  ,% I, .4,%.4L9PJCTTC9>CACYeieeieei+  (.G 6% 9.&,(.4476@>IL>G7  #(A@@Je e; .I%# .<2.%%+1A;66@AC9A<9%12"% @A>;@eeiee4 #61@@97;%)+1<994;@AJce e.24A@<2<@@9@@661 1@C4&%,,.4&11% %2;7@ACTacee ,,4+ ##277<9C]ee#ACECEECC9@>/1441&##%) %496A4. %122).9_cceceei+9;C>9ACC@4@724/.& #4;6CA.## %%..2,;@_ceec 1CECCE@A;97A774.4&+%%/GVRV>2>9 #/41+;J[ceec  2@CECECCA@4.C72112 )(,aacee򿻬w3RGw򾵜{$9LA<(nJ<50!y G9\r?4 U{l?91ee c*'  뿼9  =  $G&ã" =nǿ95%$!Cú/     !Ŀ/(!    ĨU/).(      6¸<)/(.&       }ȾĵL$$.       .þɿƿèa3*,$     Z̿L=5++%      3ȳ´hR3451$,(   !c_AD5051*!"!   ( фT?<53041()!! <  (0!'L<ïc=9554,,00( )%!OunM  =(Q*63$3pǶaD64163.+&/&!s    9WG(98.%*TA5113+*$'(%!?ryǼgR  <5+4\/8þ\MA<411/,*+(!%&AOU;}R!  :)j+GOuJ 1 @",((YĿpN7,)',(%#% }~~\ .F9 .-%"ĿrC4+''(#" 2[aRB 0+#)J%-J>40)''%$"# 4?Dw|dB   /!U#9?^; 0R9$'0+'%%&"$'&>Fg|dv2Krq,U^7.0~#.'2-)+),0&."'"&ao;2\arvwc9@ 1Ϸijz=$!9?8:20,/049yqjrn8atwvs_LG3>NĿ궰hC(C;59??9=@@2,FKܻsojfsuvwjaCB(!0rƲyOG@@;7=BC=9499CKlqlrquo^mhC(%"nǣpQHF=J@FDC@59=;:Qrphjp_ccYUN)#"+j;aHKC;BHFFC99C>Xzvkd^^Q_^YQ?.'! _DCHKCD@JJ9@FUVv~ffUHSYCD00(#"[BDKFJJFJKONQdИy~nhXXKOJD@..0XKCBJGJJBJKKQKc|鯭rplhU\UJ@=:'Nd篱h@?JKDCCJKKLOh񩞘yoVahQUFB@@S9?FCCJHKKOKKOgs{yq_VOKD>B^R~25=@BBFJKKUeozyjYYOQGO 򲱳oD429=@BCKKQU\gmv}yywnwnvm '2;=C;FGJKKNVcfm{ ﳲU4,4=9F?JKKQN^^_mqrw󱭤h3.;=?JCKKOYU^dccmwﭫ鲱f9@?B@DQNKKLUU^^lccgzᳫj\UOUUVYVQLQUU^Vcjfnqr޵d\^YV^\UcdOQU^c^^_ovr򻸳鷶nd^Y[^^Y^[j^Q^hjjur񲱯q^KSRRYY^^_jpllmqsy츺ﳵY;=UHU[U__qmsoqszyܳN;;=;KU\^ahjw~yгx7=BQQLK\^^qq񰱱ẸmB=CDQLN^^ns毱⯩^9@>=OQQw븷zOO>LGGQjsۺnfdaH^\_uDZwdYlmlmrq淸~c_VVlms|׻OKHYUeu볯LJCJOcj𳯱볱dOD^__y浳jhVUU\uֳ}sqcOq{c][YYWY[[_]T[.nrzxvrnppniieecaY>,#,+ RLGPTEJ+ +n}trriceiniiecc_N% ), ),(}}vzxpikneikiieea<,&%!}}xvv}tpvnie e]C"n}tzvttvzxkieiieeJ$v}ztvtvvniigeecR $zvttrnkiieca$erttrkiikiigeieiieccE$nprrpnknkieiiea[%2rrprnpnrkkiikkinicL $1]nrrpprrpnkknkknke[%VYnrrnknknkknri/&ipprrnpnnknra#%)gpprrpnknnG&EgnrrprpnkniW&_enprtrrprnrrkaA&c_npnrrnrprrpk7(7ginnrrkprrpgT)WRat_ea[prrnkN)i_vapa[Vnprrprrprni7*]p}a[Vkprtpic+ntJLnrngL,ng}neR-)V֮zzcT>7/7ƻniC,"vnrrP1 ,,2<}zzrpepe[&zr[[>@#G}}xnti_)Yzn_CCgvxxzvneG2Yazn}cPA ,@nt}zzx}re[ _]t]a_T44,(27atvvxvn6  Izpzrre]464742  ttrg/Cppz[];241,22 Wvrxtrrk_Ngttni;4411/22    ggprrR Gapzzvvr>772422  R_inrrp_exvrt_V922422 7_einrrprtrrn< NectxecaW24244 T79Wegnprrpg9[_ackeeccA41.C  /1Vaennpnikpnrppn]_Raaccec]14CR# aeiinpkniknnppk" IT[aa[JARG ]eeinkpk[/TVa[T_WT__NWN aeeieiiknkknkk_V %2TV9R[]ga_RJ 9aeei inkina 9CR[kncaaYJ   [ee ikinknk>% ,ARiiecaaWR9,C_AJa_T[ei inknppec [aaeeca[TcaxnnrniriiniiknnicT7>Reec_YV}z}}rinkiinkiikknttpe][JTee_[}}}}tkniiknnpnninppttn_RJ :8%(/9Xa_a^^YFQ9874%% #%!"%+9;CDCOaVK99@:L"'44H^__[CKD=9950# '. !#')$(.;@CCFQUVQRB@?99,CR[X__^YKK:88) (#! %+2+349CCJQXVaVLKB;LVVY__ca^\^^KK;7/!" !##!$0330;@FKUUVV[^VdaC2QVaY^__a^^\^U=+"" "$! $'.0;7BFQVV[cadc^OGC^^[__^__^S!!!"+/8=DJSUVV[^aaQVYV^UU\a_^_a_^9" "%""%&1:CJUVVX[[a_aVV^[Xcc^[[_^^' !!$(%%",3;FFVVUVV[\^aa\\^Y\c\VVY[_^L !  "#%+"%,9@CVV[\^^_a[\^^SYVVUQ^a\1$!""" ""%%+%37@CUVV[^aca^\^YXYQQUVQ)%!"$""  ## "&+)/179FKQYV[[V[^acc^HQYSQQSOC!! "" " " #"   !.545>GDSSV[[c^[[^ca^a^VKD>QQON3)#$#$ ""  &   ')8;@BFONU^ddcf^c^cc^\V9;4KcROOQQOK%$$!"$##!" "  ');@G@JV^c^\d_\__^YF0.4'+;_OROQLK@(%%$"$%$#""!    '04@BO[df[[V\c^^,0. $$"",0FDKDJ;;'%%$%%$%""""    CCKO\UU[\RchcB!#""#'24@2;-&%%$% %     7KKNNUQ\^\X_VN#""(++:4''%%$%%$   =KKJQVKQ[KVB4,!''((0+&% %&%  9@GB8FHCFH9"!$%'+)('+&%%&%%  42127CDB43&'$'%('((++&%%&%&%   %'+//0/20+&"#"%%)')'%%&%&&%% /00.(.+.( $$%%''/,&&%%&%$     &+//+(.#.$# $'+'+(+&&%%&&%&&'%%    '$+$&)"!"#%+,-(0''&&%%&'&'&%     $## $"%'.00,./4(%"&&%&&'&'&    " "''+1.002-&((&'')'&''Vo    ( (%%#/0)"')'())'('&{3 $"( :0%  01)+1+(($0+.(10+,.++(+t=&4>?9 "H>4!'#/9:../)-3281.420/00..㐑BB)(;9Xwd^^D#2fJ:$ "02>@@;7321;;933521100/.0rddc(SUrqs\lssYB+4! )1C44CB:35:@;?783110/00j|mmrx~yyve).4%,%&&99:4FDCB?7=@?=?4113􏔙}r|~y~~@\99eC''/;;9FGDCC;??B;;911254mdYjg[+!" (.'498CCJDGCFCBCC@?8321155۬unpnahUD0%((!>@@985?KFKFKKCG::82448553נyqqlm^j_H2)..LU^_;97DKKJKHCCFJ9?94235339ҜwqmsqkrkXND|x|zp}VSKUaNGFCGCC878522598GzvwwxmxgcYVQDCC795751543BKΟ|~cdXYDCB@99:7443K{cf\QH@=99;5411002䵳wj_^UQ:8@99141/01دuca^[V>;;C8474.21ȳcfd^RJ@97C;94//5豭mc^^QH=578;30--2󡣣 㵳wYVVK490/8950+45޵yjjUC8324383154: ypj\L;92).82409G򫬭߬wvsdQ?;810+-39K^ 峬ywufc\B:955..,LUj 䵳yyu[[c\K=?8.;92Vdj 㷵zywqnVQCH8878780QUf ܳ{coROH4=9748%%@Qgyy|nj[K:883+%"B^^zyyxjY@;8.8/7+2GUO~yysdC=42/5:,78CX[ⷵvwuR/./((.5357VJjnⷳof1/(''//+355:zvn򸷸ᵳ}~f%%,./.+-.(H^rqn㸺dO'("',.+,)>RcmmغmB897/-20+9B>Vemnm}sY-39/703,;H^Gcljjm丳tO;..,&832:N^_afjjll+-;yC <79;671:679 *4<;  *4;>&"%%)4;CTL%%9%%# #;Ta;_]IG%&,,&&#%# ,+ #aYWLRIJ4A4,;2,&/41,;2% "]NCGJCPT/A446>>/,/2, !TJGJ[[J7>CJC/,1)&   RIJJGGJNYL>GEENPE9912,, >4>J]]R]a](AGJJGJJIILNLJNRPLLG>47" pttvvzxzz}vpvxvvtvxxzzxrkea_TG@9+,  rttvvxzz}zxxvxttvzzxvpicTC99 ttvvzxz}}}zzvttvzzvnieA<972 !*4*JnԄl3*) "4!!./3%3G9!    $.!*w_u}ޅu96$$$145*$)*&FGfqmj9!"  '+'700'""   Bqzqqrqt|mg"  ()49?92   5$(JVrsqqsz|}C   '+0@CC7/  !"$+a_3NUYvrncn~~C&$"  -.2BCDH4%  ,(,91CzsqFSqqmshs~Kgf?    389BCHK@2'  (8FJdB4ySqqlqmrs|VK%   977CFKOQG/#LLRfa|osqkmj^ho[k(  9@:FKJQQK2!!!%CORazojjkjhU{򅍊|}f  @LJHLNRRK@#&"%##!Bmgjt|mjj^dgŁyB HL@GJLQRQFD3',+%#!%9k~}mkjjhdffo}{zlV,  LJ@HLQOKNH74K@,&'+#-0/twjjfgcc^etHUcca!# (LJDOLOKK=@3=0:'&++'(,5rwjgfgchcY[^[HV^#% "! #&+NRQNRQLKJ99'',,)+/()-2Ksd^dhg\KK9V1.V.Y1%($"%)%0Sd@KRUQRRQ44,''8('/(,'-1hhmwjgKYdafVF?70.0F131% &/2Rt;JKUU:.())((+-2/47DhQyvVcdLFVV^VC151["( "(%0;8gKYKU[\D0+)((/)(%-(($"qr^QNBVUKBVH9,=18%%##,37r@YcUUVK9+)+)(()(.'""jnrSKKRBQKaLD1+%%F(%( 1rw;LVVUURH..+,+((+((+""(9nCCf^YUH998;XdmKk-KB,%+!%%O8\VVUUOOH)),))((05(""CCraQBF:520;GjjraH^5&' !%%+01m@\^\YUQ>=,(,,))((.97$1_:@;.211)@VLV9HH9'"" %'1rR\[VVRKK33+))(-899HrR>3 +.,DOS"1Up)" '&cc^VQ@=>2)++.+8:9;HKB "8" !.-("  %Vc^^VUQJH:4.+'1059:@=HX.  $"" !#  /nc\\VURQKHQ5.+,./.3;@=Fg)   -"'"&& !"##%%2^\\VUUQRQL=11+1,+':??@C   !!++""'+03=UVVUQGQ../../0/1?;;By_Q    &+''"210549YVVUURK:,)01422.,.@?Kc~7   ,# )$%'%%,:32344d[UURQ:2/)+1442.//?VlxjX7  "%%'32'3+,/>75425_cVUUQ2,+)).1241..;YDGRvH|@%   !"%!'/037929DBD:33jnYUQQRB++.+)0/12./'5fz9tr7[ + "!))$+,@F;K;;==BmmlQKBC(''..)+..11.(:9J""{tY. )"+')+48HBBLQUQQ:jKmmlfRC;2'')..1(+@q9.dtVK   '$,0B@DGQUUYX^cYmoj^K==:2)').1.1-)+9Qq򳺸%|94d"%)+7DFKKUU\^Yca_jqr^RQC@931).5541(;@{m7:fqH%$'0.HKQUQ^^Y[[cClkqhXUU?>74957=40&4K½\[:uo+ !! &4./9=FSULVVYCLmmoejV^QN@9?:7?K1$2rᱰVvgh@%%'(+/;@=9KXURVVUXS>j74 5@@ 5JLIJ% 3)JRPJP%3@TTRPCC 2NTRRP>I 5"NPNEE,7,RRCE))6),J&&"8 )"9 : 4   4  5 " /  #6 *12   )6A2(,'N2]J  &//)(&&, $,61VJ; 2+  &1., @R@@C ,  . ,#%[cCAA69   # RV[gekC>9.%""%)AN]_zrc>7 % '>6.Rntxk4,%, (Rzx>& VVzt;EPV((zv7@PzYgtxxg C9ztv_vxti/Crtv}}}ze& NNazzzzk7G2CageeVTG3/Van_J %@]n_W,CV_VeeVT%, @W_eencaz%   CYaeenxvz_G %]eentvz_  Ce]egiekpxv.   TenkkigpviE    "Guuy}{{jl\TWUTT^^    Ccp{nnu}WTZTWWpyw{  CLZwsanTTU{{!    8aKRRUUVY^\cNQJ[jlm[ldy_g  $?HJKUUV^[_fjxsONQY\\Vqjqmf  (@JJQQUUXVV_djnwj^yrseg^y^mm\q '+DFFJQUUVVa_mdocwwyutwjwq  $&5CDFFDKUUVVXlcjjqjt{w  "!25@:;@DDFFDF^VV^caf^Yncm|~g{Vq|j  @;2@:??CDCCHKVfjjggkf_yz~|s|~neYUQK      2@;?B:?DCCDOajjlchfavwwmqsqnjjaUKQ  %3;@?BC=CDDJQcV_cjjkxqysmsjjkg[KCK    -%2;;?CCDCFJQUcf^_jm~s{symjmjjXHJ@   5,)3@C@DCJFJLOUc_daakvyrwv}~qmjmmfgcVKKL   "HG1B.LFCJDOKUUS[\c^gjv~r{wzmssjjf^O[HKQ  #C4$:RXHX^h^OVefg\Vcjfmmvz~y|~z~njqqc_YQOU[ .K\SXV_\\hjlj_fjjacjfjgdjrwz|s{yqdmhejY^^\mm 3;;OVYcffjmkqlamlgffghcflolwsqrl|zoy[cmK_hj_yQ  #J?JRRcchjjmonmmjljmljfddjjlfjqwnvzwjr~Vn^cg~w^ 1#."U::#"q\a^Ncchjmmnmljffdcgfkjfmjq~u_vYYHJrm\Q(?/@(4V;;"Yc@wnqrjdcdfqmronmmorommjmfcgeglgfdlsyswjajq_FjjQNV5@KHB>_=c9ccroqqhgjjfflorqmmnnsrnnmmlecfjmkctw{raaggjXw~nUQQ&DBDS?..9^pcorwwqsjfrjmkmmnnoorssrmmqmmgecfjmolkwssQQucjy||wYK,BCB?( #"00Kryywqwjmjgkqmossrsswrrmlhgfdmjnnwy~rvqRcajz{w|g_ttq4D$40#0Kuzzwxrrjjmossrtssuyyvrnmmlldcdggov|yyjmoyzyUxymC;aB0Kjy{{z{{wmqrrvvuuvusuvtwvommljfccdmyvqwy~z{mLwKxhcNavvwx~{}vsqqsusuusrsqnnmojecffjmuy~~||zvrw~wvv|Lj\fzzxyy{yypsnwrsuusrsqnoomlfggmusw{z~}~zyvyww~{~ltKUryz}}mrnrrwruusqssrsomjmhmnjsqy{{~؁r~~p~uypKhryu}ywwsrwvussrsussrnmonmljsmnzy||zyyw\r~goomq~zysuvvussrsrmpoponrqmosz{z|~~yymjj^j~qtnwy~wyuuwursrusrqnpqooqqrrwv~{~z{yoXOc^r{鵖}w{yy~yyvussqmpomoqpnrq~ycRGHQccqVὼ|}oy{wuqqrtussqoonnmqqjqvyzyjqjQXqrv~|wv}w{qssusqonmnnmqck[aqnvywy{vz|jmwyzzssrmlfflmommjlV[Yenyuu{{yvv糟}jwquzyuussqcgafklgmmfY__jwwyz~y~y󻼼ujwqsz~ywuutussrjjaacdjjmnllkmmyywy{yzy~cjrstzy~{vwvuussqjj_a_f_jglmpmqpnsywrzyzwy|w_xja~uywwvsscdflfc^ffgjqqrsvurqvuzzyy9vU^Na|z~wwvuujcjhaj^ccdagjjqsuuosprvy{yvdy^Qjr{ywvuuwsqjfaffdccgjjmquwmmruuwqqVY^UY^銉{zzwxyywyhfmaaccdlljjqwyqqswyvvwyg򯭖sVROK^}{zyzyykfma^[^jkmkjjqwwqrrvvrywyqrmSKLLg~yyzzyyprraa^ajjkmssqsuyvQrQRV\Yhq{yzzyzzyvlmkf^jkgjjmoqqsuwwmKwXJHQXQ_kn釅yzzywyywqwl\cgfjjkomoqrssusosRCCFS^Var{zyyzz{zvyrdecfjjmjlrorrsscxU98C=KYVYr~~~~yzzy}z{{zumjjddjjmnqrmrssq!   "   !  # #   %  )%$  +)$  ..% , %%7  +% %% ' "#% ,8  '  ' +  -)-.  .,6+,7%  +   + A+++6( * ;A14+@24"* .C@ &C@% *,   - & * #.% ,%    %1  )             %                        %J    . +(%#N  ""+  %Y<     #(+2V[79   %#<7EWC &       %  ">aknVT  %%#     JIVzrpTJ  +#%      nep}}tpC@   )&#% #  "}}p>& +)%% % &     ,# #}}}}zJ  )%)) )&%&       #n}}znJ #&&))&&+,       nzL+)&&)%)),,&   n}zznL %%## #,,4.,, xzz}}vN %#+2.4,,& z}}}}a4#)#+..//2,&   z}xxtxgaL% % + )/24/,,)  Etrtniee]L%+ %,12..&   Aeceec49++,.,,.)    ,a_cceeaC6+4,,.,&  &Taccec>C;2,,    ,RJJV[RC/4@2,,+#   CCIA@RCC #/&)),,% %%   >JC9J@;, %%)&&+"     ..CJGCC@7# &)#&#  4CGGC>E   %  Ρurujjypnj\j^ZuQ\e^^e43j?!!C=?''uj^syu_ysn{jWZ_RF<65?$$4"'=/MZ@H30  vRLBdrjXXrQyzqs^wej[cRQhKDB93++2.$.3BjfUG1!  ~yVRsc[Ojavv}~zrpws^QYXRQOYKV>;@90',)(.9QRX39"  Vvylj_l[suz{{wqxsnalVK>^jn=54:1/-1$$3"=F[%" ~~qsmd\zwvn{yr|vgmoYQV;;r^;254102(#).,2)%%!!"% yjvnuyxrwvadSjqc^^VXVUV;::411203(("(!%+""4 ~{syyqqVyyswUK\XglcRUQ_HJOK>74211/0-&%("  pnyqYscwycshUHNK^cU^_Vg[KGFY@9511//+%%$" yyyhjgwwmjVHKHKU[jf_^jrcYOKUJ93122.!. ", w~|wnvrwjmc_LVllvyjry|^GGJ@B:712//3 %1"3 sy~~nmwo^m^YUOOqjswnw}szQ;;48@KGL351%%($%!. nmmk~dVUgmrSjcdc[Kd[Ycfg[l_gG=325DYgKL:49$8>"  qyqmcfVc\grhglc^lnQQKShRK_B9449R9QYV@H94;-yylf[[__Yom_U\ccYQ\O_UHKRQ@32994CKqoKDF(0&" ,znennc^laYloj^jfdl_jdK[KKLOC@93299FK_aBKBB,-+"""!"1uqfmf[_qcwsolljmlcl\YQDQRQ@CB:25YO^KL@B?8%+%~rwafcU\UlokcmgmsqsQ_VQHLCF;@@8;=JLQm^ljm41"_VQ[U[^RKUejjKlyqrm^daJ9DFBB;987;KXXkjkq^OacQQU\dchKfmksywrn^[KG:9BCB@834:Rmucnrr\J%nqUOKKgVcwjH~wvmkLKFFCD;?787?;\~snngwgdU##""_mcKLKONQU|VJ{lkmjGK?H@KHOD?K?Ky|rsumeS4'% %!'"nc\OKKNSQ^wKN~qkYFJJCYKO=@@[YsrfgdG=3'%'( !0&.,c_O^K@QSVjsodywmSRKKNLFFY^gz~hQHD>%''! ((;DJ%hYH99GFHVrwjmdwaOVCBQ\\?\\ggdUwgOKL9 %, %'099!QUV4FD=LrwqoyrgcKBHVK\jjdcgd_DR=DOG5." '$/-(9%)3%HVHK@BBKfwmrqwy~gXYQJHQJ_djaXc^^FHLR9D,(!"%%'=+:BH.?&%%CVB@@>QR^acvsmmjcKRHFD@FLkjlgNYRBYJHDX1""'& $5:5?4G;%RYBKOCOjQJR[qfD^YdQHDFC@F@JVhRXKK9HKFQDV\,!"$#&$JK8K=%&UgKKOhONgVLOLR@SK^KHCCD@@CNYV^e;9LY\QYwve,("!))/HNYN>(NVdKdgcCDQQKQNCFKYKCCD@@CGe[Yj^7KNLdR_wywYeD)B!! 11@SUC-\_QL^gQCJHJFUFJDQKCC\K@DQKGVchc^_QQ[XUy~vr=()9""')0U@)NC9qgJCQdCNFJHFSQG^KJB[^CORRUfc_ecSLHHcV^sfwdH:("%%0;(9.1BBUB@@CKL@FDKcXO^hK^\h\\QQXcmUUOfYRGajwhXwXSQ7(+!"$%0;9)5>. K@BB@@CDCLYc_acmaq^^sk^QQ\_hLKKU^OU^VYchRhY:/;;!,(';9>=9H,KBKCUK@@QaaLKpma^\Vgv\j^jcqgJ\\YQQLBYaK\pcp@982"(+4&K19;9F9@CG[jJKJccQLmstnX\[hsuvqoo^UGdjUQQRKdjrrdG09+$,-)B1+4,F,(U[KLcjRL^cg_svap^UfosvwwXjg^c^J_URQOr^neX;SSF:=92L89?5CL5VHLKJgoQKac_[YV[Vauosvwwqusjc^OYQY\QY^pRdcjO4VC-,;HO9;;3KF?1QQ;@GYoeUX^_^VVRcswsqwwuquusj9>K\RV[\_cRNjlrYH32O@OFOQ;BXSjaY^3YRah^UVXX^VUUlahwvsvvuusvmGOfR^\\hRQQVSsYJ3@;9CK99QHCKRa^\>BKYKOX^QUUVVUUOD^VovnuvvwssjgLYcjalkjKa^e_[HNC?3GB92'@BY_^\^YHXOJFLHVRUU^NORCQXoohqqsm_fgjGd^ac^^Ya^^daXYOC4424),8BQg^hyFSKKQDJ[UUQ^\UOj_kjhjoYXjsrwjhjUXX[YUca^fe^UGC1%%2434HRYch9oeDLH^DCCYcUYgrssrosyvlmjVajywn\Y[VQVV__ffYUUB-''(&1BVRUUQ%rgwcH\j_CVoVYjszysovuymjfjfn}|rda_NOHGQchrqcFQK;9,9>>:a;UameHhHHyQYYohvyzzysywusqryj~~kj_^^CJFUgddrYYHQFLC99U:9:cU:.,vcHHe_c__wzzyz{{wyywwrcw~lcdVRYFFKK?=_HFVGHBOULS9(Se?:?sccHHc|vwmk{z{{z{{zyroY|y~}kdcfYgSFR>>55NHGB@VNNaa;KVe)0@,/sfKJdca|rsw{{wfjvrvccVdX^eUN@JHHGB;4?FCQVcY@>(,B0B9s~UKdKdYsynmu{{y{zm[myqoYUUHOQ@UUFKH_FF9092392GYQVN&Q8>;7v~lcVK^\{^g^ws{{zz{yywyyBYwra_VUKKUHLOXYQaHdFFn7>2>BFUcffgf_HK#v~vqVR9S9DFXry{{~z{yvvsuyXmVd_a_KHKKVJQOVe_aUQYKaF;=FVUffgfaXN"zyycV2@49Kj_jyyz|~{{vjtuymVjYarfUKKNUHKOc_loc^LX;90@QU_ffggf^^X!ywsmK944U_jnsu~|zvjkvmH_ojcuydUSjNKKUfUcmoXLCHF5;Vccff^Y.UywyjF:330@Vrrty~{wwom\jjholqrqa\fX^HCBJGQX^\GX?;42VX^_fgfg^XFqsqdjKK2DVHd_myyrhLjtylgcrnQQVUUFK>H?CQ^_Y@K9,$,VUNYcggf^S@zsjeYK>?XVV\^nryywBKOwryzjstclj^Q[VJDC@?;KVcB@832-%0=Yccffdawsj_fjH9XYYmgnzhgvtyyqjcjdaQQKV^OCJHB;CJC@4.9;B/"ccVcfYHyjccYfH@@8Q^}jyy|wvvs__hdKKQOS[KKNUFCCB99899/C_dhgd_0k_ccXYcXC9KYyusqurvqr_XdKQYLVQGJK^KKCC?;>,KQFfjkOY@0hc_jegcfV^cYwqqjmkfqm^YJO\[SJFKQQKK@:H>c=^hhmjJ>- ljjdd_cY[^[j~~lhjfjj[UK[JJORKKGQ\KKDJ@SVKNKKBY\fL>.4''lrjmffYY\f\w}Չqkmckjm^KQQJJOFONUU\KQVK@OLa@fQH>SORYL@%,   +21 %  44#)") 42/" % 6, '"(  ,2  /+ %   +1" #%  ).%% ( #.%  # %%", +)) #%     "    &     *    *       &,  +&%  ++,+/  ! ./..+ //1., ! +/1/.% %&(+%&  " $$  !                  &  (       .    ++   ,+/1. 22#+#            "        "   #  +%&+% %++,%,) #&+%#,,  %) + ,1%   &&..11.(+211,     A! Y/       6  R   s  r         *     +      *    )    " g,    "ž!  0ž   I  F*)&, 8_**IQ'OM*,!)9%%GZ3*M3''!'*n*'9p$9}'ij!!+%$R!&*!!'g G!!(s!$Mu%_h˿!3C&"g! /l$* /*!! *.j34*! !M633CGA! *y(/39JggJG! (9?!:9696^jLR' !!pwy%',Zhj^gpZ^  !6L,/sjjpLhZ*! ?{)!'{ppYhA*!  <1$@WjjgYY(( r)'6R'8Fw994,:<(!!/G%!*4&36=606(/*/6(.<*&)($$ !!%*!&$&!!&!w(&*l)'! Q(!!!T_$j!$0h!1G$$Q..^3*3l!%<9406j('Q=!!&gr46   4     G%   h      , B     \  [      "   #  "  !    Rt$ r  &  :     8 "!$  -Lj"":@  ?>" $!. 9H("  >( p  "Xƻ"   .Yĸ  .dĿĸ  ϸ# B" R˺ 9 \ƶ>^kLS(5eRz %V "w %l" "%U~()"  >,((594 "a %(.;RR;9 .2y/.,.,KU=B Y_a$HSUKRYHK ,=$%\UUY=SH" 2csu!cYYGS4" 0t'3FUURGG  [!,B-8_..)$/0 %9")(,1,&, %"%, %0"!  gw" _ " Vf! @~  CL Uo&Spt'9gn{ @gnw%% Kt{|("  (V0.)&   ,U @1  R[),   _aaWaacaac]aac@_aacc[aac,JPacc .R_ce,Jaee%[eeIeeV[aeeGVWWie>Yeei /n_ikJkn_xpz7Ypnrxnp,gxv}tvvrttvpvpPznnknkk6VvnnknnJrztppnEanni [}n/Tezrvrvvc@kJv (+v Jv}x#/rxxegepgn,_ppzaVT]a[A]][J]]LV[]6_ae[aa.N[_@VVcTVe7T]#,,[[.[a,9L]_,IJ[]a[_aaR]aaJ]aa2]_aaRaa_acaa [aacGR_c VNRc VLn &&Va 17[aPan9@C]G(TW 1T][/PRTTθײJDAIJQeRRZGgu}{e^QJJID@:<<906*&<8$"  .!ۻ뫨^?DDCUgZ_WwpuujuLMJJGA?.<*!D(J! (!'!!ȸRD9GJQ^eTn{{wwjURJIJJGA?5(/8*D:$?!  <,!!  شJ;;942%0"7 ;  ȤB7.9;@KQCXcc__UDB;:;;942+ %-"7/2  0$ ؟;047HBC@OQccdc^Q@?99;@3"&//0&  3% ىL;.4:LL@DSXccURDC=92F@9" '  %+"(ˣᡟK:8>@QOFD@XVXCG@@88HQS2#  LBFB@:^FOKNVG>@D@9HB;,%     ¡HJHC?9:JKRGS=9D?N[GK@@  rJH@99:9=;GK4;:J\10@.   (᠟KKJDG;9B;@:92389Y4HS  &" 眚mgGHDS@@C78752,1=Q7,.  (%y\OCJK;B85755%+552&'-   !ܗ|mjKVJ>K99575//5++0%%#  #ߙjhHQGDC;:58545541()%  ߞsVHFCB:C:45752783+,0   &ܞfJFC@=:9794.2:24?;;'     &ܠdRCD?;?B87831:=9D:"!    "#ᤩ|UJ;?CCB@959/BBC9""     '~vFD:8;@29=;CCD-"     RLBB55298@JKQQ8+'!    #"ݥjD=:351'?7:KFJQH75,     2$%f@;0$2+25::HCGCLKB(     %%! .+"09+'C)9FC?HGG2    . ('!"8!9&(208C9-,   Ĭ %##&&) '""+)%!     ί01& ""),%  "$      ߚB &&).$    5!('"%,"%    p/#"%%' "%   ( !$ 0' ""  $K%"$$) 7%@%.!#%  ɩc4 ##%""%1 (%$)+    jG%%$!"!"'%&%  Y5%%&%!)'"!&%'+''   ,2:0%%&#&.(#%$,'..1#  !-ܤQ.%&%'&'1.+%#++0.-%  ƭ &&002,)"-"..12# Ҫz%"&/9/31/%#..12+  "ا_39.35+1"%+.   ׫q($..0,+%&   ˿$'''$  %"0% "%'',,߯(!&%+&! 5@%  -("˦%%& "3 -+0"% 4?ūY&():29?51+49Ϭ_!')"/0;R99@1(+%:Ӟ" ,)+(1 ("94,4&,)!Cˣ& )/#,  ""#&"9Ο霚 $'!#      %ޣ왗>!#%     !Ʃq     "׳2    ַ~H7       HF        ɸssrr       Ƶssrj      īussrqe     "֬򥠐stsj3   Ƴ\LC      ijg!    (Ʒo ""    uB"   ƸH7    ʸl;0   ʿ9!" ƁTTRIG0YRRTRR<70[WRRTRRTP;0eTR RL0kR R,0RRPRRPL0_aPRPRPPRRPPR40JPIPLPPRPN;0JCEJJLRNPPJ(/GCCJJNLLPLJG90LEEJGJJGE/NJGIGGJJG(0LRGGJIGG@/[LIGGC/TIGGJ>+0LIJGGJIJLPC0JIJJNLPPWTT1RNRTRRT[[].0RTRTYVYWY]aVC/NTTVYY[a_aaW0RTVY[]a_aaV/_a]aa_aaV/ga a//p_a aJ/a_a a)/e[_aa1vp_Y]aaE0]t[Y]aa 0cYY]][aa 0t][Y[Y[]_aa_[ 0aYVY]Y[_a[C1kYVV[_[]aa[2_TTV[]__a@1[TVT;2ecTT[R<2veaVVTTYT2cYYVY]["1reYYVYY]_[1rcYVVY[]_[2_[VRPTRT[a[ 1PPLLJRV[[61eTRNRRPRRTJ"1W[RTTPRPJC41_PYRPPLLJJE2aPLPPNLJNJC2JLLJJG>1ƘRRJJG11ƶLJJGE(1öRJJC@2ƾ[RPNJLIC 2nTRRJLE)3ƹtWRPPC4þn]P;C5Ʊvp]L62ƹpa_71򾛊_VT7 1aaVN62nn_VGA5nna_R772t]]T/ 2ξtae__[2veaa_]2vecaa_[1Ƙaca__61!!$*W?1/1! Q/Iauaesup$G\^GJA!!/)5Q}Znwuuypg!!"66\^GD."'"&GlTa_eew}nnghZ^p_l!&!6GJ\U6GD'$)RTT6CQarnu}LWpUWunT_^_n 66JZ^:@5&.6G3'Al{jwes_suuuyeeWL^p^%!'6MZR<9)!,03C1GjLr{^suellI^}%($&5("6AHB0.!$&(5'9U=f[mnmcfjmqK\m{^QVVmjeqw:Kdhmnww + ,4084%43B?VUHHOmmqmjk_j\UV^lmQYLSo[Rjaq|KKnha~m!.+2""9,=KC$(CCUac^ODjms\mo\Xg[HVOjmLYjjc\j^pqyws44+0,$';-0;^F5:C_jddjeaaqn|c[YcVcYVOQjDevlhnj\~ecy~#(24/25'$%00YU'GQ8GelkjjvqsoOKK_dXfhcvuvoqlcKsmasq',.2(/=(+;"'F4;=H2FHjmmjrwffso_KJJH_qoy~uzssmfdjfg}rt)-,32@9CBO1,541\U^FKajjmwzyQQdpf\KKJQqcr|yywljglue}tޅ%(8/..-1BQQ99Vdj^_^V^\jszycR^\SuOO_gc~ujhyry$.2,-.#CQU9GR^jlq_[VgnykURNO^HK\[^Qm{y~s|#'.,','44OVUaUejnom_\a[~yVSSOONDHOR_Vy~~w|| $''.%.aFdeafjqjl_chlywdjjf^OKHHKL^^vw~wyyy"#5?CfsjjfqrjRV[jymUdajVUKHQQcay}vvrq(Ucnjwqrqj11QXysnYKQOOQVfQU^jz~zwy|{ %;__eywwrh^3VprU[NKSO_fajam^wqĀd'%;krr~uwwvaafemhNN__dffjhcjlj~ywyreYj,(ruw{yoyXYeOSQVOcfgfgjjgjsrwmyyzyrvaY#"/' r{w~yyh@BLRR^jcafjfggjglppsr~wz~|GRY""'# %h{~~rjlRB_OKjrgsujggjgjjmmrys}|y! !"CvpsYNG=?SS^h~uujjmunqЉ}}}u #&&dahhl90HRYY^smjjmkowyjyt~w|ws}|">8YS89884jjgo~sjklkkjlqozy~v~|ww~~m|jh%1 ?;S>9RjjLh~smqlkjkmmnwwzsyvwuwvy}y_wy~!)8LQX^X9jjSX~~yyvnmmjlkkqwvwzwyuyru{yws(9gNDXUXjQNjtz~skjlnsvyqymqrwxwr|low[dYC@VaYGerm~yw}yvygprussrw}ruw$&LeLOJa>Flrsr~tu~~~jgnunwjjrgz#"HcVQUXHYmuuuuewzumny}yry&Q^CKQ?FXjlqjqgjyysywyzqs~y}s~9Y99QDH^KJVm~{mywyysy{~~m~qwv{{113KDCSKFUVYsyw~svwyllo|}~~y%0B>0\CCOVUomsywvsuwygmnmwwy~׀{ !")8%1C0(07DLKjh[u|qywvsyfqfmww{my"-,0'>)%%((@/@?;FH;R^^m}yqrskmtvwsjl}s| /;;K@:K&'$-DN;L@=:;;COOjyfyqrUqmnsl~ylqq}urs~yww!-;/JKKJ>9"&%&9@?JB@;;@COacsusyUafmrohw|doryrssslvocfmvslsGNOLKKF(($(07=;9BB@;@@;;@YOlwssXaafkwysw~oaaqrrwurqvryoffqy;KKJGH@44/.:7B89KK_@@;:CNdvrssg_jhvz{uwwjqcqqmurrsuuqffrjsoKHHK4+2&0;2HH́=CKnwwXB=;;CKOYNhqcjpvv~wqwgU^fsmrqqtzrs|~grqrsGKK>'%%0;CBllrHc[ywnK@;:HL[cOUxj^mklmdfl\UY\ww~rryyo}orysKJJG;0!#+CLkraQ^wq_aK==LKOKKjksl_UUdaQQUU[gwvqx{ǎ~KJJ:98" 8jrsy|aoqyynnL;BQLNSUgww{^OUaUQQOKXyn;D::, )+Djn{{dryaLKCJVOLO\surys^VcXQNNOkwywyvu|{~%,:!7(@^\qSqYBBaD\XKFFUrdwwyw|yf^a_mmsyq{~!((5ccpsjy^cUccQKVKKdzwy~~zy}quqlk~~-Jcsrj}ytzcjKHKUQkqz~~zsslv~y".f(ouqyrz}~wsjKU\[joyypy~{y|rxayyls|_vmjsjO^mc|wwyuzwyy~zy?cQ|{lccdYU[sYNSor}yr|~umalmllcyz(3Svm_d^^VUhq^N\awzy||ynh^Rwlj}ercwo""2;9pnVY^YcYY_\gnm~}uma\gjjq^c}hpmcc!#B/Rrfc\h\c\OYjjhqu~uvXUl^jsm^hkqq^Y_a"".L:js_dqsjjc\^aloh|z~q}^Q[cfhoVVjaj_\X^[ "(%$(.4j:5>GfyktySch_charujhrfznmwwm^jvj|pV^[c[c\cqV  !#(+84Hf:=F9Vyyzz_mhnsnhjafhfgqzymq|yojqn{mc_eV^j_qdV&"%//;9N7F9Brwwzzympnrwsnf\cjhsnsrnw^srmmcjqYY_^^s^V+'"!"+987>99CVfnvy{mvklwwvslfcswzwjhhwjwy~xmlcj[hjf^g_",""&'#".>53;99XUYvozywxswwvqkcrrsw|fhfhcyoyjqsmj_jcmj^szf%0/&(,+.713@33VDYnfzyywvsrsccjq~wkpxncYlxvy~dkvrsft{mwq!1 ! +)2337812Q9GQj{~~ywwlse^gfjuljpwmsjcasymlmuytmj  +C@<.7CC+CC.,. 4 4<+492.1@.4JJL9%/#C,&+  " 6JPNL>,.72/9, +RNC% 244/4(+ NL@/ >4+2   4 CNC .,&   .C,  .,)  ,,E% J94.,)   ,CCNC,J;+%%   ()<.<2<,,)   &9.4.+,+&    J99;,,& &%%#2 "NL9>2,,+,,   %  %)% #% &1.<9I47.4.1  % %"%") +9,,%(.74C+24%   )+,%4249#,4.+    # & RCCRJ419.&+,+   % " %  %RP;YNLJ4, +% && 9TEC9NR+9C9<7  %"4#cc;JL9+ >"#  /)& ]e_NN7.% 9  )+1 1,/pL,VJ  #  (> %+%%, #E.74 4+(& 22A2 %)&%1, 7 (+,1 .2A@ +,)>R99..,@EA.  CC%%,94A@7  %99,.I.&.& 4%94#&#   ;4&[I,1 % 74+ 44/%/ "+ C74J%I; + 27@41C24#    .;,A%94# # 99CE;CC<<    "(J<46.%+&2C7  +%A@CCA@" %C;C69%<4/ .C;&1A9  /4+71%,%4 C# +%#+,# J4%%   9C# # %(, % 1   &     #       #,  +  ,964   + /  %.;;2//+  +%,.%,  &44@<,/,  .#,6+9@@1>9 ,+%&  %,1>) 7AAC<.<2 ,,    9@AA69 CA@@2,4, .&& #%%%,A@A;/1%19@@#+44   #% "## 4)7>@@>4,,./. .% # " 4%9;@,19 ,;1,+ ##1A@@, "74"%,1%/   %%44+42%4 "##   %%#%&###%2../, ,  %&%%&#&%%/@ +   #& % %,4 ,./  &.+ +      &. %     % "+  .   & ,%%(   " +,     #  . % <@KKNNKNQQUQK%|yq^}~yzŒ{~0%%#"$ 2@KNKKNKQOOQQK0mmoj{{~yqwws@"%9CHKFH>KOQC@KJ!lmcfnuoy{yyljjw{|9(9;CJF@B:KC@>9(%[^VYscn~|}ywoljjkqz$+;:?B?@0=>87/9/"X\Urhwv}yw~|mqmjjn}~y  1FC;@9=,%,>/0%"^a[grlwywwv{{zqkjjmysw~K"%9?@;;"1%9%%cm_ajjmrmvpsu|wqnljq~}#' 4/+! %'18;! no^lojvjlmkmuuqjmqw~{(&'%19!) "$# ordomcjmjljjojjrlmk|sJ'.''%!$0"' ucq}jh{~qnmlmffkqnwr{%&&+'.&%  qjaysny{ssmrfjrtuxwފza0"!/''+#+    . %7CEE@CEA;(2&;249C ,&#+9RRJNN>& 1GYacee,,+#1 &+9ACAE1797C(1,<@RG+ 4%4%>;VLCCJ>. 4T[ekeceeg./%,#% 7ACC@CA.24>LR497227JRPA<>LC>>+ 2CRaeieeg ,  +,92@AAE@91++44RCACC429GJEGJ@GC>A   1;T_aieei% %/ &&#&.CE@92,,+744A9929>NJE;EGG<49 %GN__ekieii % %%  /AC4;& %%,4GJ<,47>CGNC1EEG<;<<#  >C9#  &49LRLaeenik  /%.#% %&44>1##6>;L4.1NCG9IJ<@479CEA9%G.#.@9C1+J>4/7CLLNCP]an#  % 1,%.(AAEPCP4;GETc4464,, +4/66.%9C9JC44&6<94+C11,+)242%)7ARTJJ__"46646#&  4 2>6@>A+/9;A9,.%#%, ,9NA2TTa[Je#.21644.%) ##%+;CCECE# %9946G %99.2.,%/+%4JJPTT[eegi..44644.+),)" .CCEGGEE4 +, >C976.#+..%%,,.//%+CNPT__eeii114144,)+(# #.CGEEGE46;L2C./2&,%4+/+.7,)%2/%  ,6TYaeceeii#+/+%,,))%).)CEG@CCEA@RJI4..2)(/.%,/.,&,4+ % &%>]eaaceei+ )%,%/%%&)( @GJENPE>@>9>J.,>@94@@<2/1..,,)+%#)#.7eiecce)&%#,,# %% 2ECJLRPJJCECCL77<>@@>CA7/.11.,,) ( +Jai__]cce %)%,, #%% #+CCRPJLGGEAECC;7AA@@9241.,,&"+Reec__cee .,),&% " @GCJNPPJG@CJJAACAACA4/.4,,)"2Y[ieca__cee.+,+,% 4EGJJNPNG6NNC@>AA@;4/.,,..),,)%+;R]ceecec<97>/,1#6CIPPLLEEJJGCLCC@/1,,.,./,,(,+(.,[V]eeceea2>@442,/,,) CT__aaee[<./..,,%# "+79@RNRGPLPG>C@A@CC@11.,,+))&WC__>1,+#;A9;.JNPNL@@>CA7<94.,,% )TLJ(  +%   9% /.PPNIA@EA@;4.,,%%EJ;2<1%#.4%C9LGNPEELEA;@A9/2..,  C> 6.  "+%,96>,>RICJACCAA2.,,# <>,C2 .#11,94CLCEJCC@;@<1,,&%.  ,9    %%) 1,L.7LJ99497,.)%    %#.%61+%174A@>1747/%%   %.19@<;6+.+14191..&   # &A7+.14/ ,447/22%%      .194+244;9972%%   "  % ,29,,/12/2),442,%    +%#%;<..744+,2,,&%,  %%    &,%&;;419774),11+.%#  %<9<<  #+&441477,#+,//1.. # %% +6@@;< %   &1..21741/,,./1/1++ " %% 21@><>#    #)+#%% /1.11./.& %% +19>6A+  ,)&((,%%"%1+./,,..+   ,7<>@    %)%,(,,)%%,.11).,+  ,64  %),,)+%&)&" #,/6.,.#  %4,,,   %+,,%%+,%#%),./66.%#"+  ##%%,,%#%%,)&##1.464,,2+#%"% %%"%,+& %,,)+..244.%%,/6%9#"%&%&#%%"  ,% %#%,,.244, 9, %%&%#%"  & #)%#%+,,%,44/ ,9   &%#  &&#&,++)++44    % % &),),+,),1661     ,#,./11/+,1    #,..11).&    %+%,+,1   (&& %%%1/    ) ,.#%,(   % )1/.%,#&/   /(,+221#,/    +%2122.%dz{Ŵſ񴌐ŸśÙü ę@lŷ 񼊋Rp,! r߿ij/   IJy   cs  10RZ5  nlp5:}G   (n"('@@ŵI   *a}g&*OlL   $ſI$R^h$  )jhT\I   )+sǼ<A   "**}ľA &!!^045rs{龳!%**,$6:AD1%('1^rrenrr{ŷT*!&("(11 *GAW^Ts{r}J6^cp_^n0 Ƈ/{M?) $"$1!)13(FRe\W6/!l eC^^1)J' +*)(34$+59RTj_l!//yyujhlhlyQ3!+01=%12!'!'( 8BQJrwr{F,%VQ5KlsrK'!;#"! ()#+.BCULV}sy%%aa^USVpSoVsa@(#&'1'05BFUsc91O-2x"JNlkw|lcH"'%''2+7CKXHΫ^^V^d,&)S~|zjYF9.++%'&+199dtxCwr_=&1&//mooymY?H-'.''%)298Qat^C%3!%mKKc~sYK49-+('"2>Qlr­xQ%0 NKKLr{\VF;@$.%&829Dwgkyì[K#UOKLNwggXQLH%"+CB7@;chKfpt~y|r%. UUQKOVvw_jQYF>'",B3=@=QK?caovC=X[m|{xU?+!UVSOKKYhpjKa>RGH.,))"0840G4,- B%3$#%_|zezwKR-0, ""OUVKOJK^VVDF;YKGB=-(!((%,!'' !9Utxwryye\Y8C(%+ $$#KNKKGKH8D"! 5;%=80$#"))!".&9B9CDGO[jCF,(("%$UKKJFC2%,"!0"))! 4>1;4G-01C;& %%:jXKFF=""%.   2=2=,&=" "  "&%.ecS=C'"!   %:=?09/'!$  ))4+5H|gB4"  "B;,(0:V5\@.0()"   ,;FBDrH5"!9"0"  ^+7pQ_v~y~k@,%   "%HHDQU(0-#"'+=X& ^VeRtevp2   %;QKQKD3;" &CLda[Q+3qjryt^2  %9;KQ"(,-Rrdn%&/Bt}H8   499; B:n(0%"({nD  0,5BB ,nsOq?+!   '2:F  juzz&Y    =QL "nLL?%/  :RV  (z(ypnw>CcB}>    ,HS  #9xpja"$('rqx0}y}s!    9;H  $$ !8Osuzjk  &09      !"' $0"  (.                                                                    eikntnn}vxvxrrttvttrJ&  9]]eeknkeeceknpgekknrnrpknnegnnprt}vvnpnrrtvvrte RAC[acekpiikiiekkI.Cnnkikiie  JTRW]ceeiica@ +innkikiie_#JNTY]]eiV/innekiie2RYYaeekeiie[@_eekiikkieC[YY[[ceeceiieGVaneknkinN7WY[[egcaaeikee1WWee;7]67R]][[cee]eegnaaE/>TWTW]c__einkkcE-6%GCLT]eegikkr[C,/"4>/Ygknkikk_E,12"W_kpnkk_J#,_nnknR [67  )]ggpnp C4_R[[eeWR,++,47[Iepp%) &>NLaceeaaTG744;, @Wn %,,).//%"J][]ceeaaGTIG<9<972+i+/.2.. ++2;CNY[aee_GGTIE>9C<)C7++442. " &) CCJY[aeec_TGTTI@CCA6)77 ,42. ,.% 677CJTaeea__TGRPRCC<996%+1.22, ,1 ;>>]Veec__TaTRJCE@92;9 )../44& />4CTTeeaccaRJC<94./% ,.114,  .(4Teea[C;97   .,  aceecaccG<224, [_cc9(%))0,6[,<L==< "7<"$JVT97LT[[aa]T4 !;[[ (,N][[__aac__).[caL "4,+9[]]__aa]T<7 7[ac[@,CA6[_[]__a[R;  "[ac_N>&#% .CETLLW__a[ 1[_aaJC 4GJLLTW[__aa[A 1C[a[PA@61A/.0448=Um~{ywrrlcU޸wsYQQLB99KB75;=CGc0QcKamnyylhmfc_gcURKK94@B23092+-Y>ch^emmsvsfdfccڷlzwXBXYROOK@4485340/)3B\^Vjalmlqhhffca\c[G;883QX@FK@994.=00($.Bjjegjnmmcffdcca觪jYU?975/,'9;;8@/++/94$+BKjjfjljlecddcٲcXVH9%++ !7:8420//')7@G[kjlmcgddc\YȦleh^X;& %+)"++/''+0('-9FH\kmjkmhfdfdcc_HHomRQUO' +&'+/''0;-FNQ\dkmjmnmhfdcca\QHkdUKJ+%"%/++;HURUYdflfjkpomffdc\[[G곬~_VDB;(BB/DQVV\\clnjjqqsmlfcaYQJK~yRC0"'.VcU^XacjdjadjowuysnY_^^VG[swO3)/=KYhgjjlmh^facjwuv_XSS\caaY~y~rX;3($,HQYKgnllnsmceedjssj94&.=QRY@jgK4/#"'CQVRqhsvrywm\YOjjquh9 !"#(-)/{l[F/ #%?Vjcg}wwr~mj_^fjqn^%"#$"$.&%yzt|m^/17?V|zzy}|mlyt^^jjaX4""#"",$yqy|j9 !!-DQjxy~zq~}{mkj\KceK/($"#"##"C,¶{wtwmr;',)%!RLY|~vvu~nrr[QV\VD>0 ","#""-K3²~rvpUJ;0.,$ $(;Shs~wrprqjjglYYcc:92!"(%#""$%4ǯ~}wtp98''"+&$%'=>apgsljojmjcKYFKU'&%""%$((,!KY˶w|vn^., %%+'+3LSallgjeqlhc_Q4419"+&'"''-%%KHzywwsK:&3 !',24K_acmqwhmlcc_740',%(&$%'$%+(%0;zyxwns-"&%"+'?K[Yhlopyqj_^YK40+&"$'%%#%')$"82Bd׳{yyuqmf3.,'(%4@a^[ykoq^h\LK3&&#!!$"&2"$8351;%jyyzwvlnec((%%08Kgskhur^[XG@%$&&! ! #(%",+420753O|s{yyqomj^',%%'>Q^lmfamgVYD0#%%"" !"+&)2+2-2B5.CayysvqljV3""(@^c__gaOKV@C/&%#!"-4,:./,/B@0+%ey{~yyvzwnYC=__c_O@=:;85(%"""'9949;'@2#+(Vp~|yzyywyjC&Cac^@997984.( !#+)2=>=0+'!(nsy~y~zzyupY HKULJ?877824. %1@BB/++(,!"'"Vrr~xy~{{~vun) +@=?:B954141/'""+=CB;0-+ 9 "#($/a~}}}ywy{z~~ywnj:! "$2@;;751101301>GG;FGC38K(9&,,";\qyyz~omqQ4"#!.3734511023+" -UKQQFBQFKSUKK((0>;l_yywuw{a\X98-%"!+2=0:1211../+HXYQLFKQ0BGQOL1245:@FuwwvqeVRQ[HH22.%!-29>CQQ:110++3+! JYQKSLHCaHCVKL'%44C3Cvwwvr^VKKSVL4.)++'3:BUUG41332 .%!" "X[YXQ98FQCBNQLK44,'?a}wwsuvqgXUKXSKD3'('$)9;RL81210/.+"!8O\SUG-42UK9XRQHK?,(H|ywwhsrsv\nws[UKUVG8B)'&%$(-4KB00190)./2=NSNV=21,5K.QQVL^\VLwywo^YFKQQjljrUK[QQG'%'%#%'.QK00..9210/))279?NYXF5;18,2JROU^cVYmyumQ;KLL^YrlXCLRU9L/"&&$%&2G0/+,3D0?F;0-035;;KLOC290('(HQVV\cgmmonh@9BXOQjojYHKUYRO,+,+%'))/0((.1FRBXF0/397;/8@202/.'('HYVV^KefmhjQVBBYRXjphQKL^U\VS4;D20-,2;?01J^VSNXF;C.3+9.32)+.+%%'Y^cV^QVg_CQX;;>Q^UcoVUQRUL[HUQOK;;9:@BYCRf\UfO_NKKC@//./',)'%'Xce^cO;cnQB5;::;QVVUU^RUU^\\^UQH@B9CHKUfQFQKQyqGCK@752578+&'$%$X\gfQV[rrJ@7554>@KKQ[UUYLYY^cOD;;>fjwlXQKKfsqDCD@/4749"!"#"VVhjVYnqKK44204;=COQQURUVVUXUH;NKCVlYYLONKQSSC.KN8:;=+ Nrmn\VsmKU4.35:CKLRRLQQVYQRR8FJLQ9G82Q00CFC8QBV@((HrfmXxzpJ037:@CLKRHHQORQKBQ=@9HH@C3Y'5FN@DGH>^LOKN'%/:u|o4.;::?;BOJ=KQF@Q@0"9%2,,J[C)2UVX9^YVQGQNL>"%(j/4;3;:97;49BK3@BB0"".+1La_H2h^XKVd^h?BVR.!5F8.4524552389/970"  ')2apyaagchccYfRLKHU""8jkuBB.221455'.99( "  $$9;Ydcdadcfcc^Q^_c+""%BsjK9..CBC''!#  "'0CYcQccacacc^f_Y-)(B\^;/:@G8'$ ! &0@KKCU\cac_cca_a,-!)}Y5;9D2' % %'(/79@KUYac^cc\c^Ua-"rzxvxzz}}}zx zxneT@<7( tz}}}zxzzxzviWN@2,  x}}zxvxr]G><9+ zz}}}}z zvxxzxV92<9,  xzz}}}z}zzxzxvvxxvt_R.,,(  x}}}}z}zz}zxvvrpgR  }z}z}zz}zxra.)  }tv}tz}}}zz}z}}zxr1)trpiepx}}zzxz}zxxz}}zzxzzpna.tne[enpprxtvtv}}xtvzzvzxvteV rpea[__aeekprrttvxztxvzrpRC pke]][[]Y_ikenrprvvtie kea[[YY_caaenenrrnn[ ia]YYWY][[Re[nknn7ike][YYWWTW[WLJJEC71ia]YYWTTNNTA/",ie_YYWTRRLG@4  ikiiecYYWWTPRJ9C<, ikkna[[YWTTICC@2;  iniiecaaTTPRJEA74  nkceieaRGEGEA2#+#neikiec_JJLC,/  knieieeaNG@,4&#%&  rkknrrk_TJ64+,% + npnpprpk][@;2,  % nptpnn[TN7,&%     trkknieaTJ1)    tkeiccaWR;&#    rttnieg]T6#%    trknikkeC#)%#   kttpnkkekneT%+&# #  Jntprniikke_J4%##     Ratrkkn[[I;     /_renini_PT  >ciinkccLA Caneae[I,%  CLa]WRG+ , A76IAC+ )/,>><  ,, ;<, -  . &  .2 23 1 1 0/  / 0      66( 662<J, 6,9,.R_P(+2TRRJ >cNN]CNWV[N.N.!Gaa[JNPR759AGCGRJI,0wpT^\GIQJeZJuaLQ"15@?,,",,9B9:G9NK &9K^kc^_SLrfO@?>UCaafa>/9$..SG;>29RL  %0.CcclfemQRdXRB5@BQQ\^;C94?,QHaSK?Hq    ".;;DOfmhYofVXUQH@7BKJO^@892/-'KfcD9CHr   CGJJN^gfjX^VfUU^HYYKFQK9823('BXeK:>;Q    ".BCCQ^U^LaKL[gRNHrr\UVOHC7/3(BF_fQG>;Kp   00@8FK\^H>B,:B_c\FXnY\[RLK37)&FKQQ\KC@^mlqwL  ""89:KS%#;;^jclddSa^YVVKC))(HDQQ\XQHYdj\hYgjha'    % 3;BK!"0DH^VY\\S[[__KHDL7KQVROV[VCKJVKLJKK2.   '% !'K"%%C9GKclY[m_Y\_KVRadxy[V^RUQSKSB=9;:)   " "  ./BKQKK;K^V^SQK^cVoysmUKKOK2()BFB4 ,"9KQRKK:LLQNOQKRcmsmg[FFG9D+(B=91   2GQ^lcKLeJHNLKJOnsmh\2D@9,".%)     +3KcmqgSLfF[\^RQVUYma^K/@7(# Jqvwwyy@jJNYQUQ^[_m^cK;;7 U^uyz{|wqyHU\VX\jjoosXR@40/"# (4FHwy{{ywy{\[[mddmuuyX4($)""! .7KXuyyvvyvwDYYUsdfdmswqp'&# !!!SRDgqwwvwwFqfsywwosnncK(" %!%  % 0lRVYywwywu@Qjjc^9+%  !'('"%$&%&C)ajlYltvwyy~zy,[accK;'+!  ""&(''"'(."70(=ollwqyuyyy3K|ysmwdKL4(+'   %+,.00+:9%9GYUVzvqsrovoy{yy-Vfqrljscd\KK9"  1011223;:99NvLSusonmnrmyyw~Va^knqlaa^JH;2.(1445595=3>cU{jcoqmnonqry~y^X^^fomccKK;40( '124557;;?=Kaj~uqnmonoqwwrcaKVj^^eK9?8.-#/04557==CXQ_}gjmnnoszy}sqFYUffhl\H0/2/%!2355Fftjrjrjfjqeqrwzy~z4^adYKlUC%%#! ,457558Rr{w~jrsjmlqmrs{wvz2Fa[RY^JB"%,1775VjHpvrtmwws|yuvw~.9Q:HNB78&"+.5515:aUXesBghvw~wsy~v.0BG,(Q834$ 232/552CdjrY;KLVn~}y~w0/-CL,992/ -%2"121/a@}QUB[KLUy~yw{/8:3&044#. 18)+5'0yFj[GKKSjwx~l8+09@7++/ %.3 &+rrDd^y^LUKQoywwu&00&=4&%$,1 GrDGRlw|^YQyy||zrywv!%:,,C/((. J|z|JFOjxzyyvruu@"-1B@#@4"J||z{|JUj}yywvvuvvLV#"-F4!"5KJKSJN||J}^~oqwwuuwwuVYc@ "-&&%C0YgYJJ{||wpzjduvuwwuwHC[L%%"#!  +,3KSVrzzHrsr_msrwywvwywV:374.-"! """VOO^rvvlOBmzwsmrvwqqvwwKY4+30+)$"af\sqqxORY^ssvuoqruvVB+&'+(,) 8efm~sqysqFYywoqusv(4+&&(.' 9Shmsu~soYk|~wossnk)&-&&'.,  %c[sV_y~uuhl&&'&''& %Kzmrr񄍊yrlm&&'+'+/&& %)j}zo~shj%%&'+'1&''% Rgyd_$#%/')+#"'' SyY["%%+'.'"&$   NwmtNH '&+.#%'    VVHF"#  |jDH  H|CF   [~z,4    yzzo}tQ1(  H^x|yz0&%4@ ndy}~G3%%34"F_|mV+00(  pz|m[[J/4BrspaaR^?G .ciikknnkntnneaY  6VnvtnnpnniC>@ 7]rznnrntncPCC 1gzxxttntnknY6,& ,xx}}xxrtnnrnga[  #zzxzxtvrtntre>% ppnzttvrtngN( RptxxttzneRxprnnttng]  2;aa[[n[[  7<.,C_; 9+- , , ,  +* (     &+4%249+';42/14 '   ,2(    '   )   (#  (   $+  % , .# - # #-##%, .+/) , .+);),/<%( C>;)(CC $; < 46$J9@C7L#6#64JJR@,,   .CCRC.../.(   .6CJA. &%2.+#  ,&&44A>4 %%&4&&  +,44>6944>%&.1.+#%,274496,9.A%1. 4;7A& .%14,4. 4<> A211G>AJ>;%,.1;%.,.62,aeL>+(2 (/7ARPa]C94#+49 ,12,72/+>_aJ>NC<>9+@974622,C/,L% +26TW[aN99;>1.%1A+ 4/,6RR6R]a_> A>CCTPNEJ@#%)1<.CC>196;4@J_RG;/CICTJJEJC%,)&@EC9C9"7,19;CA>;;4CL7. Wci[][YPJ4<94,%+9+;94>JACJE@nrrtka_]P1@/,1%/%+&(+4),4NC>PPT6 Eantrrnic_TN1/,,22(,(2747C47;9J;A_npxvpgT4., %122%%,+,2CNJ;;L> WI5DLOjj񙘔풬^T=:TeT{򘙒}ZcT\Tyg_j؅ZGY{WUcRj환݇yw}rsTJcn^n♘၂{supsYZZZaT{쉔ߒs{n^^j^e􊏐Ȁ{{p}^؃{\𐎐֏yuu¿p{ܖyy迳aZ󓒊І{ururr^uGU씉{uu{wwg\jr}yru{wswwcyurrwss{»{򏐒wrrpu{yu{yꎏ퍆{urrsw{罯lluư{usyuu{slՒy{}}sr{}{ruyuYaӒeDw͇nW8懌쒕eGG6U痓䈎DGF\ŔCFZדR{U__ɐpg^wŔp{ㅋlu{򓗔⊅{򒗗舉nژup󖙙󙘗ᎊ{{̖}}{{uy{{}}󒗥{{w{{}㐌}}{y{{}򒙜ۓ{}{{y{{}󊏋{{uyy斕⎒u{{yruss{{򗠛銂}{usrsyuw}䙐y}urrs{ryʕsruuys{y𔗒𜚛rruyyڢ셆wyysϏu򙖛茎񧥤Ւ {}圈y{}}݀_up}}쀃W_Ye{}ݗYWCG{璗Y^ZG⎒8WYGZuٗ611<֐3:<=W}ɗ8924C_]9  #    ,C_<)     4.  %    (JNJ   %     6N&    &RA 6N&  %    CCc6RRLJ#"   ;WeaVa_R.(  #%""    9JegaaWaa/%     %%#%  7[_ieeaJ     % % %  %%WieeaeVNJ "%#  &9niee]aaN  #ckiieW6     %;nceigY_R.    %+G]iecaW   %  &;&Gee]C # #"%6>N[NEJJ # )GNaaP.+ .+%     A_ieeaR%# %     "  .@cceeN+          %CeecYE%       #  /R[ecVIC%       /PeecaTC( #   &2aecVT9         >TCa_T    "    49C>ETC")  ,2991+        49.%%  "#    %9<1 %,  #"%%    %4;%,6,# %&   2I>,+# %&   "TJ;.#,++,) %%. " 7,2"#)./.%, ),+,% & % +.2/%%+,%  ,)++% %   "% %A442/.,./,% +#&)&#  %&    @114//1/,. % %%  &,(   &/221211/%%#% %%##)#" %% /122441+   #%  % ##%"##  ..12244211.++  %  #  "#+&""  9% ..2241221. )#%# #+#%)+"#  66%,./424221/.,)+% #% ++ #%%  &%  .1.4421.,++&&." %%  ##&+#+,244621.,++%  ##% &)%"&  %4421,+&&%   +%%.%% 244/242.&%( ++%  %.224./11.,& %,%#  %,122.,,1.)( #% ),/241,,&+,% %#  +.22.,,+))&%#  %% "+./,,)+)&#% &  %,,++)&%"%   "&++))&# #%     #+((&))(&&%%  ,%%   %%)+)&&%,%# #&+))&%&%%    # "#&)%&%&%%"     "##%&%##     # & " #    ӂujrww{}uupjnJ^n^^ugjg^eeu^T_nTe}JeaD1,&%ygslryp}u{wZ}e^{r^^\pe^e^puL^_RZcchYh968{{wpjnrl^L{^lj^\^ajpgr}w^^OeTIYjU^<6C9r}ee^e}{l{lcjc_^eejjc_uIJMYjnuTZTWGUX^CHCF0\YamsdjjXdKUymlmYrwV{hehQBUYYRKVU\wyulROJHQXYYaG>DV=4B\V^mql^^UKVVlqrY|SyRB{hfgj^@KKYKJ\nyojO?9HV^U>K1:?05GDXVdnf[UQKJDDKmzrohV@@|Kj{llXKGDHJKKYnvuvJK=9?K9KCY30@CHH4hdyyuOKKJHJCKK}ysgm@;BXjjuyjKKBCCJOtdovwum^C@H@D;BHL"KJGB4sezyyaKK~v}{|ysjjBanBhV^^LYKFJ\aomdmuum;F=>;@3,,9=81?(jcjejUJKJHJSfanwnyyrqGwlrNVNQKCQB^ffdforrmu\@G=;:C?9-(183"(^_^cjmfQKVQcjcnkqjgwwzysuwymredsj^VK\qqfqwsm\m@B:CF4-20449BL"[addnf[YVV^fmlqchjjw|y{yywlsjwx|lrgUUQqsnosus\mL9BLF7-00-.0C$ca^koa\Y[Yjqjlm_qjlsrnyzzwussjy{rj[cnuvwyvmryaBLKK;>3(+),'% %dhahqscScfhvvj_mlvmsyzsywjssmvwwmj_aNqrlqszjaujR;4;9;++,3. "flgnrclchfcrqgvgjmvy|~~myljmm^lvocU\OoavuyysshQ:4Q@492,-2B90 fqudmglfdhfqqpqslmnwyu|snlYYmjUylmURLVrywyzzwrgQ=0H==429008=7 jslmjfck\ec\fowqqnspynsz^j^SVYRa_GRQOUVqzyzyyjX^3;F=C@.998- mlcmsfYOOcOelovssyryyqmwe[[V[\cgYKasjUYfvyzyn^N^XQKQQC=B3CFDR0 9mgfjdj\YUQY\mnqwqnqwswqvqrfK[VmherzyXKR_sxyymCS\USYLVKH:=@F=RO0/qmmjkhhfd_cjljsupjqwmjfvg\^^KXwjyyxz\\jYyzyumLFNKNVaOJB@:9^r^SQrjnnmkhgcfjqmmqssdms\fhUUqca^\Rmtw{y{ytomzmqtFDNUK\[YKJC?9=_\huQlmqpojcafojnqnmnfmcUVXKQKKOKc\^mzyyumVYaj[UO\^ca^NQCC98Rkhhzmmnonfd[cqjqqsqndJKQKKHFFKKU[hzjyscaYYcVV\_omaULSCC?9;QXmtrnnmmqnfklosrqvjjqQKJHOQKKHFFOQQjnjoYmfaYVc[\[grRUHQGCC=5?Qpjnmpknmmpkkomvmlmmcm[VVUKJFFDHQU^ncfacwk[\jc\[_qraeKC;@:;1:;Fgkrsqtkmajjgjljw|ssqsyyjYUQHFFDNY[ava\hm|f\dfc^jdwujcCR;@9339;@?4[ytmkjjkgklk}~wsv{{vsVKhKFFOL[CR^^lywwsljVfjnvv^OJK@CK74@=;;3(yurmmhjknklpywyxc~nwYFhKKHKJKQUe}z~smxj[UjncqQS^[OK@;9;B=?%$trkknmmstqru~~}sqy~oojCnUU^KK?@JQQ_yy}qqmkc^f[dmhcmd^?;3>@:1%qmjgpqrutsuw~zz~qrsrqaKrdm_RQKB@XmhrmlflmcsgfpVfjU^QQ5:99B:-'sqjjmurtqrvvy}zzysoacK_ODUd^Q[Ujowdmqnognfm^[NQN;9122F@2.nqcqnyqqrstvwy~y|ywwaclUKCX^[U_ns~s~ujmrsstqprl^^BD52309D@;08ffdqtwqllhrssy~~zzycodQO\S^Vcmvzvuhddwffvtsquuwo_rHC;5/4;D@=7:dfeqpojffcjjfqxy~s}sffqSQgY^wXs{wy^dwahyvusqssqcd>C97409@C0B;dckrlmjfhcggjqv{~ys^dhgRQd^hogyyuxyjhwfcuyyujuh[cFC@=?C=DD7/.lhqljmjhjfgderyz{scc_maVU_dovVynwvxwlhjjmwsxwrhumcKC9>@DDCF@CFFyrvqkkjjghjjutyc\cdac^R_afljqyswyyxkyqqknqtrjNa;HRDDFKRQ~ywpjjhgjlpwwysmshhkVc[VV^k^hsmumyy~hjmcmjmmKH^KUKCDCDDKKOQvskjjghjhnxyqmjfch^^c[V_UUla\mjmjhm}|yyjmcaoOQFHQF@GCCFDFOHQ@~slmjgjglkmumcd__cd^^_^s^Vfclqyqq~z~yyjcfV[[KFVKFGCDFFKRLmmljjmnjcfga_a_a__c_j[^[\cU_zl|kl{ysrljsVHQFKQHOHKKFFHKKynnjjmjmzvcaccncaa^N_kjc\Y^_yqcmqmzqjuKNKFFGOOHKJFF=KHywvjjgjjlmrmyvgjdgacaafYjnjlffldctdmcvygcqVYKHHGHHKJKKGJCNBvqljgjjlky~wyvodaa_cjarslljfflnshknz|m{rfYJKKFJHKKCHL=9Hyljjggjnz~~{{ykfdccnjjrrnmmjsvmqmnny~}~{yvlKUUHHKFFN98929rmjjfgjjqr~~|{{zyqmfk_j^kjlrkjswsmmu~~wwys[VQKQC7@@949,smjgfhjfmum|{{zycl_Skd^mkmrsnnu~~ss|ywjfKK;8/9F4&(yrjcjjgmrq{{~{{yxyqcmaqecgdjlqqom{{wsszzsrkUB4270@=''qffjjhggjqfy{|~~{{yvl[ccmrdjkjqmlqomqyr~uwsqvsrllOK8.H+//$$~zysvmpljjkczso{{wy_[prqmkjklmqlqsnpywyyzykyvmn^edK94),('&z~ysrpjjhhjjplsy{{~{yyhfrrqmnurjjncjylmyyzxzy|ggnjh^KK.'++'z~~fj^_gjnldcvquy{zyzqhwtnqmj_aKYjqvkryquqswyywvussX^K9)'2++2~z~yocVVfsdupwmspusyswunjwqms[\jVK^jqukqstwwpsuqzjkww^^K+('00)){{~~wf[cacjjwmqomtnmywqxljmomaQBGGO_hqsmctrytqs~vnUfvljQ30((0.1.~{yzqll\cvwwyslfejwjcrjjvjcgKDJCFyyjchvrpzm|[cNm^QcB9:0/5/2~~yvrpeowvqyykjjgjfckohswamVDJJCYqyyswywywaygRmj^lV9:099)/~~{{ysrjqysxyqjmhfgffjnn}sjyRUKKfhUuy~~|yqymKcr^mVCF9:@1C~~yvvsnllcqfdmffjffj^wr\{fXVVF^UKjsmrmnemmkwvKL2.;0.~~~uvuppjj\^ffjgfjffjfXpY_fQYK\[KQemm{hqnmrssqm@740/.wrpwqwlfaf^fdhffjgfkkjaaYXFNGQVlQQkyqwwstosqsY9H42,,Bssvqqr^f\aaecgfjhhlmgwteaKCQ}dUYHYjzyywvsnooK7;4(0')wyrqwywsmnoqgfjkjjggjl}}^DrKKHHJ^U~{wssrsjcY;5?+%')1~wkwrpznynslnssgmljjwhw^KKFDKV^vzywqsrrgaL1(+%%/)+v{~qmqnqyyvjjrsrwvrqjmjov}d^KUHJKUOwzywvyysmgcR2-0%%$$" %%/.,1//)%,//,//.&    &+/1121,.    /.211.   + (+//21.1 +%./12,1/    ,//,2   1.+  %%      (                 %)  .                                     &     ",              %                               2      2;<.     #.%     &      % #     ,    ,   %     #  #)  %  / %   %+& (.     &,  &1.    & +))     + %    &) )#  % &#% #,     # &%      ,                     +                    . %       .+"   %    (%)/%", "  &),/+.%      1/,.,%  % "# 21%#%. %#   .,.+ %% #    (621 . #,      192,% +/*'!(&AT450!.$3'&*G!$Q3MD,%)Le83=?QOYZGR,IC/" 0:R9RJWW=eJ/A"*(!3}:??GOMT&9G?9/,''(6JeTTRZT1!OYW$<5$3603AWZ^TG/TMZ\''%!/')3uO?M9&OG98Z=%*97$ !=Q-(12@?GH9B$:5% &/B.B;FF1Q;%4"  (d/229?>C.92.%$ ,;jQCCBHC'?GF0+(,&(~4FHKC9%C>HJ%!(^gw{?2>.?9.-H1".0@;|1N!,("!0,Y4 ,/(9ro4+K1) ()&! ! (,+97x(;@48.!('!!$&0.  99%9$"=4+!90.7((!  ., 43((%-,;7/(" ,(%!(0+&.$(!  (,%%%   "!.+./'&1&%   $"!.0ON!',34%$% 2"Kjn^Y'+22"& @BDVSUsoB'"%22) NXssXB!%:"  !Nnstso. #$2JY{a""''Jv蠣!'&$' u砣t~f!"#2% D砣""r:"+7&+% v%. 2,!" =u(%  $0&$'%""K$ "202%%'%&!++&%%&&Y0#" $ "5f($ 4QU'( (+X/)BDw{2F99"(%l{8599,% ! &.0'|%9:>2H!.'!(0DB>@KD-BC""$%:LH@BOKQNK KL59KOKKH'  9lJC9;HOB.;)eH@C0HL2.-  KCD;27)$1- ~@@B-!"% F=7@$$", hݧ4#%/-"% p$" ! 3r(  ,[\$''"'(0 ,[t%%' %",  t"(2'('- [+)9389)."ntӭ))-UJS'+"-~,+@@Kc=" (0򱯯0.SjYaU("Vg9Kjcflm$Kjjejj7  Vj_ssjhjU3   FFossljcU)kaDFcqoqnQY2 "[=U9BesrsYQ-"ajm?9FemmqQh2($. %'+/vD3;9BUhjdX7(("$""S709>=L[R;!!.&$" &V02277Hj?&%%-.  Vj6NW[%CR[2CJ_LRaACWe>1EGeWe]"ei e_NNie/e@Ra7Raa GR[_ /LY[% 6RV"% 67PR&,% ACCNR&%#CCNR#ACNRTACCNRRGNJRR/NRR>PRRLPRR#LLRRANRRT ANRVTV_4T[]__a7L]aa_a@]]aa_a6NT]VWaNPRTRY[4CL[TWWIYYW] J[[>CE[TYWNRRWYW[J[Y[YT6JR[[Y @ALW[[_/@A][]c7J][]ca27VW[[_a22NRV_aae2NR]eeca 1Yeece7Veineiea2@eeiee[eea @RV_[eea @=@;,3˵?=,5:GG325'8'$'9BF@9HB$:=κäk)+/4JD;2258(% %B8@0441K;'޳ŞC)+--G@7;7+3&"30! ,Q>#"!ج00++.;>B:/+0$"&3/9+KKB43"ܼJ0()(594,,++"(-(0 "%'CJ8?9/@ܳn?'..97.2('"( ('/=9559:=%$˧u((+5;875& 1 ""+/!= &59;4'109ƳV4++'9512&%90;'((29B9ԺY-.)&''+$ ,((;033H=@ҿ^@0/%+''" ''2;94RBֳf@2410.+'!$$#!"%L@;X-,ͱ7442..)! %4'4$$"@?9==.˭^K4425,,+#"/ !!!!;(3=$. .3'HЯaN3421.+'-&""!'/=40%54;4,(%ƔcaU"%//.)+'   %$3"-/&"(9B,;9.20>D'Ь@#% (''+!!%+"%099;;7;9 4( "9B72@//CDG:$ԭF "'"","#;;:;;:;'-(""0G2C@9GFGHCBۦ9  .(:;;4-",2@1B0FKGHNH׬c(  79;=;;7;1#1="9$%;;>>;Q32О1( &87;;9,$" $4'+.3B9GJ:9ַkD"5.59:;;:+&"","&%&4+437KQKɳy@%.7::9;::.$324-'+,>CORԿp( 49795 7'!;"2+%027C@Uĸa5.,3#1& (+29;=>@˿;55 "$!1/'! "&2489;3įd;85" ..$$  %#',59;9ƿg8^/   +/9..  !"+',98@ƷaK   #"%)'    "%"2.9ĵt0,  ",%   !"&'2ؿy;- " 5!,1'   !)'&t1&"   3)58:;27% ,"!ӷy'%! (,,.5:,-   (׽}Y/% ("25  ͵J. #!'4  \9 '!"#0   %#!# #+)&"1   " %ͳv%'+,&"%0   $͸yFO.('%+"'   $үoO:..'& !"     ׳wU0+'"% !    ĩU/%%"!#  Ư^.%#""!"   &By0%  #  Rڭ[-" %  +jޯ\/ #%  9cƬ𠙄"#'$    )Kֿn).+&.&! 0''jw-'%+)"$#    49Kd|9")/. #""   $'0Ŭn\!%$ !#"  &=VƘtpiia__[1΃tta_a__[1Ӷƃkaa_>1ƹnaa]Y0α}aaT0Ƙnnaaea_]0nneaa_G0Ζkeaaeg0ξecae_aei70p_[]T[TRW70þe]YTRWTRJ0[[WTTR>&0ùnn[WWTTPE /򾶮rn_TWTTRN1öp[YWTWWTL1x[RRTWWT0nTPRRTWWJ1aTWTTW61}WRTTCE1nJPLNNCA 0YIEERNEJJ0ÏnREAGG>1éxRJCGEGE>1ƶTJGGE91niTJGGC0ùieJGGAG@&0cCECGE"1ƶeC<@C@2ƻ;<. 3ôa44& 3cJ6444WA6414aC95J<5tJC4nE44TRA( 3vWN>,%3tiL<,)3erJJA4nJJLJ2tJJC 0󱝏pIEAIJA0vnLCCG1򶮮[NJLE>1򮴶tRNGC,1󻾹kINGA2pcLC@;72_LGE<12N@<4;1&1󱤛nR77<67)0򶴤vR;497.1񻹶eJ<7;;9. 0nRA<99470[YLIE<9@A0eTRLPLIC<40𾶹VRRPPRPGC4.,ôcYTRRPRRNN>.TûeaTRPPNJNJ.N]Əa[TRPPNC%,N]]ìaVRRPLC7 *7aa]äTRRP>>(7W__a]þWRRN1' ,+C[aa]]þaJN& (RCTE_a][_]!+$!(.5?A?==DATwssu}$%!)JC==?Iluyyu{.!)GC==FGlp㒈{ya}s$CAJa=?GIa^}{yyw{u!&c_IFGJUaw{sAgJMZJJsw{_GuTuu+TYZ}uà&&,+3Wu}Ÿ{}'&!*.$Ruơ'&!*%"^^ajr󟡟ש%'!+))**,gTarɯ!$!!)8)?H;;\jw|~~w||~ffj_kywrjwcL9j^Cru{~yx{lmj^jwy~^jq#qCGHd^ss{y݈xoqlljnjy$#(soF^lnxw{dy|cj}du"%efBnjjsnu~^wƉ~~yrms"KKNnUsojm[󇉇ג#!!""$RCNqj[ujə!-!204CFjnQjjc~}& $323=;Q}Xaj\~vš"(2')035=5@{jncy~~zʘ').5304.439;\h|mvvs~~~~{{ڡ)(5;520./:3BYV[|qljq~z~~{z{01::9..B@?SRe|jhsQz~s{~{z~𞠠H(33:23..DCqso~rjnw[lyv~z~{~s~rjw}HD139033.30kaqyllwjlyz~yzyy|~zv}[(5/3B22392@__mhqswy{~~{~{c~wmmV(9(1f92URXqKmsvslwyw~~~}Lwq~0"J0leXYJNQnV|sywlnq~yyFGdz|~wu??%,%KBUfKRj_lmywks}yvy~Js{uYtz~D-!3(5.=XcB^rVdfjyyss|Ń~Yjc[s3"..3K"qoKclderjq|uqyyā|^cfa4B5HK_qqGnjalono{yq{wƁ~V^cm4 9R=NLomOgmfjnqzzysjzځkvvrjV[u-28"@Ucqqlfenjjmwzswynnr[zzy~l_Yk"!7="ahgpolnjfrqrv~zvvmqvuxtsy}xh:CLOehaanaqrorys}z~Sollsfxu䍊HBNa\aYYcJJuwvwywƈUQle^qjuK)CS^VYRC10ryyz|~֏kQ^aVmjoQ7F^Ha\C00&nyyց{qfU^_UjmmVGKRUGY &)2j~}yjj\\f^Vdcm~s~[KLYBC. ((ohqVUVf^fjm~vB+4R@V>)0@k~q|aVdf_mmuw|^=+LYYcYB=_:~zz~womgdkjmssmvh;7G\VgnJUL:luyyjjmjh~wjsxnhY^?5CKXYsjV;Jrwy{ymjsgYwwsw~wnwkYVV@?9F>XugOV>ajVqvz~wxls~hrk^fjw{js~~vwjYVV@88GF4aBHG;Gjhlv||wqurrwfjvvy~~dmsjvjoj[VV900C')5=9CBFQYm~yw~hryyusrqy~y~{~wjywyyr^^$%%&&/0=LUJKK_~~yyotvvm~|}owfgf%%&%%&'/^aUUYJLljww{yy{{~}ojfVd^%%&'+GhOUKGL^^kwu{y~~~sx_ccd%%&%&&'FV==H@K_cdqss{އyyvjYY\c#%$%%'BGC?;CKVaclqymojjc^UYY$$#"%%'&F;;=JVaffj~{Ӎowamj_[_$!%&/(-3B;B=;JVXcdfpw~򇈄񁈇_wu\dn$'))5^HH\?V^accjjvn~~hkfd$$''))HaQajKc_aaddjns댍v鍎~jaa#"!08041Uf^jjf_affm|{쎌r~툁yjmc%&/9?4Rtehjjhc_acjlyy~犄v|tonn(=.0,Jgghjjfddjlnn~yqsuqmmpulffjfcfmkmnmsĎssvaumszwnljmkksjkqqw~w~ryyqmmqqwsmqwqfwjnyusywooqywwsxsszox~szvz~êwqssywsqslvq|sxqywy|z|swvsqrywyuxl~owojw|qs|~}Ġw|oovwvz~zvsooww~~xjv|yʫzwqoqsqvyxwwpm~[q~~{yjklpa^ ߧ~woqqsszwwoqrsm\j\sqqn\LBJN(%    >R%CA      TY>4+1 %    PG++4/%%%%   % %JRC,.) ), )   TLI<,64 9 )%+, ))%+% 99 GRL>+6;@,#  %%+),+&+%  ,C 1(T;CJCJ9;JA9< # &1 ,,+,& &  219 <,>1@GCLCCLJC>   GJ9;%,,+)), <.C>;12+9%.CANCAN,)9   ,NNLC%,,),)+, CCJPJJA@>>  1 GCCA+,+,,+),+,CGGCEC9@C1+.CG9/JPJ4AJLC  ,6ACJ.2 ,,.))(++CGGCE7>@A96A9CNLJLCAJCPL 29CC+  &%"%" /1EGGE9>9@CALNNPLL>&2 (# ;9@4CC4+4;, 4)ANNJNN;2&       % #469>+&61;;2%97&+&,6   #)%,& #%% ",@CJ<>><CC46. +CC46.4    &+,,## %% &.A<>J;6>C2& %%<>A9>4   )+.,+)%% %#%1<.I99J< (4,A7><<7   (,,1/11&&)%  %.L,C"+42;79.4;   %(%,/22/2,/,, ##;.%+4#..,+ 14,4 %,%11,122,+4 PECC%,.A42/ 11,/%  +)&22.442421+) 1 +G;;A644/12. 12,,  .+,,.&2/122/4/#+.9.CC>C4112/22,) ,,2 12#11.21#+% /. N+#@9A;.121++22, ,.,./2441.&, 2.%.%+4, L4.67,&//&//+22+& %.//12//4/.1% 1&242+ /.4.)), &&21  , ,2,//,2/%%)%%/,2421.& ,9"&   " % ,62,/%,"%%,.%2.,,4     %#)%,&,%%&%,%",%+ (   #,+,##&+&) #%(  + " ++& ))++,  %   % % # &&)&)+&++  . + ) )%.1# .%   #& #%+,.++&.. +& .,,&#&//)./   #& ))+,++% .1,,1#&%##,1)//+1/%A) ##%  &%,,),/1.,&)%%),#/,,11,/%( )## #&%#,//.,,/1..#,),&,+.),12+221 % # "%..//,/..)&%(,.,/1&,/221%   #% +,.,./,,)+%.,,//,) .+221 +)  % ..,/../,,)%,1+1)%+.,,%.22122.1,    .11/11.,,.&,)&%%&&,+,+2212/.,  %%/12112/1,/)+ )&%%,%,/122.+ + ,.121/22/1// +,/)++%,2+22.%% E(, ,+.112 % ,,/,.12//21221,4   <><97Y[TY /+.11244211%%#&//11.22/+.+.4&%YTVYWWYYWWA  ++122422,+ ,,+11/14/14,+%)++ YWWYWT7     &,,/4421 6+/<4+4177..4,, ))%[YYR    %,441)9#&9.9A44<@>A+1+.,#&&#][[][Y[[WRR,.   , +446. ; 747@>9>1>A &4&)#%% [[]__[a_]VC,+ ++ 47, 9 749AA>@@;<%+1][]]aa_aa_EE  ..,7&&  6;9AA@A@@A@A@.% _a aYR6   #   647A>AA@A<@@& % 甊y}ꢞ{?9F=:??54'!"蘆w}}졢A96@I??D6  􏎉Q?98:CGGF&<  Q99::CDID?  饣h<66=9JD65  !?55F965"    𤢣RT:15(!"   젣wnaL1    ܡ}OULD   ܤcZ=LC  ڛJ"!    Ĝ*&!/!  &!$!!%県T3$$a4(,$$%,58c_4H09:(".)/& &.''sq~󁄉{wvlyz~{{yyzypsqg__LC>?>XS(KgfcRYja>C82);?0420'%('wpzy|yy~zyywzyywsqqccKK@@(YVfNjlmhjg^SO9;BCCB990!!$'wwuw}~wyyzymwqr_cXG\@?@\j\ClmrpjcV9HFFCCBD;2'!#$syyyy~yyzvyvqwj^e_9;0B@@Y^^VrsuncRXXRGHDFDH?:1$"wx~yyusuuxmws^dF9'(YYVa\mkmuuqmfYVXQKKC?@920yy󄐐~yvxvxvwywja[&'==Ycgjmkmqqvslkfd[VRKKC@=@B4(yjfz~~v~~y~ywwvuy~^KH9';;OfdnmmfcrssqqgkcYYUB3;9:;44ypn}}wwywz}yyvwt~mXQB9::KVlmm_XXcnjmjrkj^^V;32)(=@;|o}}yg{yuz{rvsmz}~yuuyvfRKD5&9KKGUS^[Q^_dfafhldcYHC88"$4@Osownvynwwmwqmqsuzsyvros_LKD989K99;@F5SXX_fa^_ljccJFKH$$&OOvmomnnmlommnmuwvvupj^VQJ>7/9+149'8KUO[\V[[\gVURLJKL0;4H9|oqomnnmnrwyujdUQUQF?2+3;=0+9NUXO[[V[V\^^VOQDRQB@QKG||yryqjnmyylmrqv~t|jQLLQQK?.,.74)74UV[YVUU[^cYYUQKKF;NKLv~qvrnymmnqqV\UKKOLF>85,.0.30KYKQQUUYV^VUVVK4H89GOO~wylnojkomswn[\UKQQK;B3722++)7QQFDUURVSUUVQ/N,79QK}yywqvklorznhcRRHLG;=@?583+(/2?GBKXYYUYRUK[R.!=>@BNNzyyyqllkmvsjgaUKLLCB=:504..@F?2KVlXVUOQUVVH99@=0F@LSwjmj~wwmkknvxh^cgOOLC@;42212.,OGH[fa^OmJQUVY>@9@CN2BLYfouw~qnluun^pUKCF9892321.23F9XggjKQcOOQQR>=%1VH4Upt^jqv~nwnsu}^x^\KB@;734211.(4aN^fmeNQQUQKOKQ=4:HFLstv\cnqy|~vsy|o{smQQFH553521/+(?rr\xQRDURJHHKU:aHDKtwr^fjYmzmyzww}g^DBB723551++(2}vRKLDVQJHCDCDKC;BOqyyX^^UVyc^owyssrpv_YKH994738(+([t\KKQcLHHCCDDJQ__[UVVXVaVVfdz~ssrsqpvdx8.U=D7822&Bsf\O^dFCCLl}UUV\[^Ya[[zvvrrpnfdFVS@740++4KvmegGKFCCāUVVUa^VV[Yasqsvqnqqwp_r=GKC05awqcYFCFCCDcVfcV[XUV[^lrnqoqssyyw>UjV^rfywy{|qnoeKDJFCCK~XdpameUV_^lmmonns}zvCqo{|sqkj~yurmmjladKRG_V\ccYpY[[_cmmnmq|ywmqomzfjrs}wjljgjGGHX~ccq[n_a\^cqmmnnq|zyyxwrzrU@NojcjgglYjjy\c}_\^cmmnnr}syqhvrvrK57FXdLa?gq|y~~Yao~aadlmqyysrrfgawwzH530(7':;jly~~y~^Xp|y~\efhmqrʭecwt^^_nof^VB4."$0;Ksv~|z|_Vocqslfmyry롣wroXY[^__\X;(%%!)Yww{wyz[fo\\wrryy򯭭jmYU\^__^\XX4,(%.wvy|ox|~UjxyqnvtyܱejU^\[_^^__^^Y,BCfmrrjrwyzfuuwUO\[Y\\__^__^Y^Ddn\gV^hwyuznsjh[V[[Y[Y^__[^S[^X[[Xacm|~vwyusw~rc[[Y[\YUUYaa^\\cc[[V[^^v|~uzujy~y}{嬫jf^^[\\Y[^V^[f_[[^gn[[\mw||yymu{|ysqc\[[VY^[[Y\f^[aaqq\\[^^mw~}ywwyy|sc[_X[[V[[\fja\fmohaa[^_ejw~yywwyqch\^\VV[YVV[[fqmhhmqhha\^accmfvzuwsq@;Xav~f^c^[[YVVY[_jhrqfkmnjh\^lfjfuwuvzmOO;507\lrV\c^^XVV\_mhrrlmojrnpc^^jjou|^j\\.+5()5vjadd\[UUVVU\_msqnjmlhrme\^aagvz~yhN>+(",2uᯪrhgqa\^SOV^[jhojljegdcoomddfm{y~~|yJVB# 1:smqf\^hjUOqV\oj_jjccahfakfkllsyw{zyz|  1%/122.(   /2122,.% %   %&,.22,  %%#& ,/.122. 4%4,%/21.,12212/+. 974%+# # %2++.2121,1%,, <+4942%. %2,)1221.//., C477+/&&%%1",1./22+/22/% G7422, %,#,(/,/11.1/& E44144%%,(%+++1"%1%<442/#1.%/,#) &( #C244/22%1%#/,  >/4422%+)%, 412/22#2  ,21221 +!%&122 %   &/22 %,    2.//+)  %# )1/1/ .% )  %%,2421,.+ +&   #+)6442.&))%"%"   %6642%%#%)+    %/.1/ #&     % %, 2   #   , ,   . (.&%      24%),#%      14+ +1%%    $14#,,+   $,44+4.%%.%   &6..4.%)2%#,   &4, +.,/%.,   & ,@,/9&26." @A,9+6@ %   E>762@C % ,,   CC94@E@9/  9   2 <9/;9>; 1  24,99.%% J<; &2  .9  %&LL> <44,%,. +PNPR> 744 +964,  RLVRA, ">2  R&2.,+ +  244JRPE) _  &>%  C((<.+ +;CVRWJC2(  9  ,,  2RTe[RJJE%  %_  % 2   6PW]]_]VWC&+  +9. %++2 %   .6R_Wa][a_VT##  +44%,46. #   .%.2 > 4C>LT]__a__WTA "%;JC@A4  ,<2GLTYaaca_[6  %/CJAAN 9IIPRYaaceeccea9  46NJJRR %7NJRR[accecciee2 %4LPJRR CCPRT_]a_ceeicc[  (4CLRR 22&7LJJGLRRYY[_caaeencc.  %+CRPRRP/<>A 4NJLC;JLRPY_[_ceeina. +4LRRJCI+#47A1142PRY__YaaccR #2LPRR %4%4 JRTYYa_WYI6   %,GRR& %+6%%#9RRaTWaTY_J   .NRR "(, ,1 ,4JPRPIJJRWTI   )&9A/%%#4  4269LNRGN[WVTJJ    %+,.4%%% CRRTVNRc]E;   &%%#24(%%,4P]]_[e[[9A     # %,9+ )C_]__NR7    .  >L[aae][N+      /AR_aacca[VC    !   &$.%%%(%(165481 *=59A06363+*&$!,*+OepC^<"**6+8@FGRelC968@))(%$".041=\j,/0*6:<9JGrGR.)1*/'!(*14R8=u%FTw\QGWRy^T36<6/)%,1OHfm| ~cVK4';4@BO^fmvywmVKF@=%H@KUV^_dufonm\RK@;:KLRVV_croda@U[XH;;2LRLQUU^Uj짟so^[G;HQ=81+KGQUUXLS_r˦t~\YYD;2C92/+ F9QKH?@;=HvحUjRLHJ;3890.+ HD:H9:@:4FGwyrU4;:2991441.'!O:>;C853:>BHmqjB398/522/,/%RJ9CC=359B@;HqjdH& )30/2..+%KJHCC343B044Khua4" (2!,2.+)KLQK7--../CB[m~U 3+%UJKQF3"# "2')-[ &%"Qn#aF(%"!"!!\d0""poopmD4!! (0lntB"vsyysC!''"  #L0=@f vzwzx9,(('  -0;)ra}~wyO#,, !  ,/''YoJ) ~mp" ,$$"! "'/%%GDC_w1. y%% ,%%""#",&"=;9KYCmUKBLxV:, &zyQ(""%&(%"%717212@K@;;:9H=''|yrr5"&%&%%+'0,2//3/12=B91/22?)7srB/+',,+%$%38@300145%'""(.''-Ja99,+789+.,+=@=@2.,/22,)()) 9BRNNRF\\:;820+?7.."./.4/+(  '%DNXR[\^SNCQ94+:40.'&/)'+)$$9V\nc^Qcc^RYD59:('0+.!%.)+% " '%"" ! 029YVnlqjcYVUSQK9=B;'#")%).,+,&)7;2%""''%!$%$&',99gynxqokVVURKRFG@2%%%(.%'".&83@@97212182/05+% ''+2Hz{~mVVhcVORKOH;51"%-.,.'"29@;C@=@?981599&'++F|~~jqcaYUVQNQD9501+../'""!:=@B@@BB;959981+22@y}gdfc^VVRRUOJ9740../("''"8@BB@9989953:jsrca_c^VUU\VK;=21.1.+#-'5BBCBB?99:9:997998Dssdcaa\VVUV^[QNO311,% #"#'4CCBC@;99::98Xt~hca^^\[\^c\cUH@32112)(/2CCBCBB@@?:;;:@;=Kkjf\^^acfUfY@7344829:4++,0;?BCCBCCBB;@GJJ@GUcnzfc[\[\[^fc[\YV>85998JGO;10035;;C CGCOQQJKUfhlqykca[[a_^f^cac@233==:;5412259?BCCHR_UUQF[jjmqo|~ywjkfg[^^[ckhljd\434KJK7822458:;CCFNnSVUU^ooh|~ysqnmjdh\[[ljojkfUdKKHVRL?;77589BBDCDCCnwmX\[cmm~~{~~ssvwmnfc\a^kswvwofg_daRKQDB;5575?KLOKDDCQFCO~smcdmmuwz~{~}yyvnflvkyssjafddf^LKK;:@55K^cUKVHHU}zsswn|{}zysfXff\^[VUC;K;?F>KhjfYUV[dqrrvszm[Yf[[VYVVXB=:=8=QdegjmVwyvq   9;.>79& %  ""&<;>>A<9>A+"# ;2..21& 2;;4C<9% "%% 4+  ,2. <;>@@4296.+ & 629AC<4&%%6/,9641# (.<>9.4<;@CCA@99741 41@42 ,9,.4P]aRR92,,266>>@4A@.9677><7;<7;>CA@JR@AC>LLJRTR 4>>[_kki]YC29969;;@CEG>>9A><77479>CEJRTLTRRP@CJTTJ 429cppnng99799>CNLRRG<9<;9647;>LTWWP[TWTG<>@CTRI >@gnknnkneA99;EW]YRaJ><99<<76CRRTTYTTJC>EGAR( 9Taenkki];9;99;9;A]ea[a_TT><@JPWTVW[WTTGC<>CL% ,RakeiikeC;<<;>;@A@ace[]aecWCARPLRTTWRWWJTTPGA>@GL .cenkeei[JGA@CICC@Rceeceea]R[[VWWTYWYRLLEAA94I, %CaaicecJ>CJJCECR[_aeea][WVWYTCJCPCA9@I&  6eecaJCAR]PPTa__e ecW[_]WTWTTL>A;JC9>1>Jec]]_TTR[aa_eegieecaaNC@+,6T]aY_YTT[aYWaaeieiieWTP  ,RRW][TTWTkY_c_cekieieeieieeaGIC CPPRTTVY_[]Y_eenkiieegeieeYL% ,NPVTVYape]]apnkpnkeieeieW91.CRTYWTpeYa]aenkneiieceJ%(2CPPWneaacppkeikiiec[ ACELPaneenrnpncinkiieeieecc+  +;ELngnnrpnkaikpiieeaeeT"+@Rcnpttrnieegkieiic_R[]W$;CNWkrtpneacieec[V_NGCJ&(>CP[rneaeacaeeWTRJRW( /4P_aa_]_caaee_TCPC   .Naa__[_[acecee4AJ +L[ea[]a]aceea2, JWW]a[acaaeea[, 9NRRT[[ceea]]%  7>@19EV7<&1.% +&8%#7 # 8+/. :2.,%:,#,+:,11; 8 @<@; 3 >4># 3% RC(#10.<#R9>;+ 1,62IP4421>7CRP6,4>e[RPNP 3[eWTCP<62>cPP[RJGE & 4_[JC9LP<' 29<>,#@+$  ##"  # .R      ,1,+%   ,," %& %,2#<<, % %4,;+ & 24>+.%4&.644" ;C762 NR%+ &)+,% ;9ECA4RTP9;>>67"  ;RCJTP6;C6441+%&42 %3elDRWA.0(%&%$$!!$),04:DIJJ^sulwuys\cwlj\8.)!'IAI8CT9493%&$$"!!$$3*5:@GCJeunluyeQ_eecR@&*%3CT3.,FG^3%)($$!$399:<?9 ;Y\edyywYVYF2!('(,11:;??>:&  9@CJQh~YSJ7!!+'//8;>?>??>>;; "2(HSY?@+%'+./;;>??>>;5  (    %+,,/9=>>?>8/%       ++9;>>??>>7/,        %).758>?BDB1(%        #%&'+.9;??@CHC%          & %,')+29;=;H@@94%!       $ &"'%/../44:D@@420        #"%%.,..-,.++9857(05         '#&(..('&+54544(,     0)%(&.+,+(("%);2595)&     +.$'+())('$"%(,4.3+%"    ,-,&'((%$%$#%(.122!$"!     /++(.,)+$%##'(%()      ,.+'+(')%#"%'%   %,,.+(''% 0%(+(!#'+.0,,)" 99G48(YV;075 22>-%&4&,,++ @KF@%Va>>O=9= %QSLR@BGB($! 'KKRgaa\\[\RUKKQUUBG%,'"  /'JKKahljgccURKVUUVUUD04(  %/2GKO\^ffac^\UVVUVQR;80 '+0KKcd\\^V_QQVUVDH80  /4QQfcc^[USNJ9VUURVRRF'   ! KQUQ^^S[C>04OUUVUSSUQF;   %9QOUccddK?',CJQSVUQUUQH>)    $9;?Ra_dc83FFJKQUQRUOLJ2    ",2:@KQGccX+ /=HD=RLNQF8@     "';?;@RN;HG;, /'"'%'B8,,     $0;?BBVVD9;'',      "@C=@BYQQ;)      ";CBCBFKK+"     .#,HCCHHK5(     9:;9VYXQUF9%     45=BC\jmsYVY     7=BCDRrouwc&     >@CQRrny2      VKnfᖔ|5       Yfy}5      qty"          nV"#"      zg        B   &.S"      7K1)      9H룤sS@3         ;^pyj^G0       KYruc\QB       +Na}}qocYNC   "%7s|xqagUQ8     'Jszda[LJ8    'mr~[[U@B'     &rrszscL932"      Bjsy{yojkU490&    gswy~}nC1.0/&     _wwyrsmuyyn=,+(.,      Dpyqqsysa$$%'%        s||~quwwywy_D(%"           K~C>NRTR9%5<< 5%9 &% 7% 9<>;z; 9 &+5   >;,4 #>PCCA3 %%@CPPC>J[[aRT1 NNGJRT]a_R0CVNIT[]aW4 1_TY[]T]R4 04J>PTaN;7 /12+@WC>C 246,PPJ>1(199;PC2)1@942.  04% # 3& 3 1  2/ 3 1e!I͕ûrsGOa*rſrWZ_!%+?eŴy^Ga} !!"%cƿQGp!$$"!"!(Tsll!$%%(&&'IŰ{e!!$$&.&FZyìݪ"!$(5Mg{Ŵݮ!$($&9esƶ򮯯}%(*Fgnȵ$**y{󮬙l!'DFch}Tu*C^j}aQ*lĩYRjeG gĿyTsjJ ĿTY!!$^ĺ^ŷ&&$,{!)!3Ŀ,   걷  y "9}ſø{!Gn}{!3ZʻDF&9uŽD9=C**huſFQ3)Tap{}ʾGURJ,,DQ/DlwƼȼuwL0+*))Q\&Zp{侸puOQ6334OU5ppu{阛JlOG1013Qy⸦ /Yups{ec_^F001Z齢3Z{}ľ١rr_GG^G00LwʿRlMeaZF_^DTwIJee^RZ_eh^ο^ge_^aae3ǹʦ¾OaZZaeRc黺ݘzzz   .Q\򘙙oxsd    "8RXyssrw}  ""gac~󘖁jmnjVj  78O|ټ~{jSjdC^~   "5yyqKUdN@s "V}yGBqUQ9m R~y~{naC\U;jv hɸzCGmn K糵Kv}$c!(k   $q嵲岱   qꜣ   a൳   .dw᷸cy 9Xd~󲳳򵭕jcm (Hr|7h8k.^fyv7u.ph15} ""S^ev~uyyv~8s@(lek !CNYcdjsŻvwvyttyt9DB;$$7@o %7V_ffgyywuyywy}^_=&#"!!@J HYcfgn䫤~vyuyY^?@,(()?D +YY^cfs逃}z|;V?9'&'(@a⤏z %G^Y\fcs믩|yQOLK8&&'H骊v (Hcdfejkى{[[L99K9&&= _fefgjm̷BV>QNH8LK7C{ _gfgjmv켻:;QQKBHLQSz KgghjqȻKRQLKNNQ (Xhjy󼽺?NHHNQj 0SYf½cCR^V|uq @^hIJJSmkgt 7@k}cXsry rϵcsa "c򲳲ճkyhQ LkҷxvdU %Եkf__^U ^ѵoca_^^x󳘖d^^@ɵsf_^_^^9ݲrsf_^^~߫~{\9hc^^}aB8VYf_^^딞ݵdC9+,c_^^뇣ܳuoaFQ99Vjaa_^^㫧ujdL@/0H[r__aa^z䫧tsS/40cqnmcaa^\񪥣a9Ccyuljl__aȶyV\}smdfachjإ~gjm|}wtmhfhd љvs[dsqqgdH9橫ers^g~yysjj^^L{^_[\ﯞ|qqnhhfcL 䯭}[X\^wvnmafjj^⯬uLKKc\쳯yqolljhj_޲j[GBKkqojj_afj^ᱳ^LDKK~wmmlfjjf7NnxxzpiY>22&+//12),,+%CTIRYA9Gnt}vvzxzna>4,%,+.14+2,>GLJPR_; R}zxvttrxxrnL4,4..22%+"6C9GLJNR" ;vzzxttrpaJ112/+2.&&;9A). AvzzvxzvzxvtnE911242/4,;;ACAACC1+9  "Nzzxvvxzxvxxi>442241/17.4CC; 4%%+ &&7arzzxzxxzxznL722411/46;,AAAAC;,..,> ;Naxz}zzxzxvz}zxvc@/%  (%7   CC 44Cexx}zz}xx}zxvkcA1 ,;>CLJCEE>12.e 7<R[__JPC CIN 7AGPtrtrrxz}}z}vvttnk92# #.9CNP]_aRJE1 ITa &1@JPrrvtptvxvvttrprkaI;%.>RCCPLNLR .[TT >ECGRaprpnprrttvpprkaA, %9)4PCJJ7RR)%)T CIIn 6CGGJRennknppnprtkekkW)99 +,94.246621RR64>nR 6GJJL[cnkiinpnnpkncTT61/,96.<2NR6VRRaR;N7caaAn ;GJNT_knniknppnprpnpnee]RC44%%.&,CTRaVVTVV;Re]cekaa ;LNainnkiikkpnnpkkneca]R6449<&C9G[eTTaT72aakiieea >PiinikkiinppnineaaGRCCE;E;4N]]eTT77T[aieea IWkriikkikknrrpnniegca[PGJLPA]a9a]tea17J[[Ve_eec Cannkniikiprrtvpnae[TTRTYcpnnpvppnnknnrptxxecE192 21CC46exYW#E6[inknneaaCpkknptnnpniknntrnn]]C1&# @C42Na]W annea e}rtntxpnkkiknnx}na[Y%9<>LNY#;_ceeca }t}xtnnknppz}x_YL;6;9N Taacca_a_v}zvxpnppkitz}t[TC7+))VG_a]JJR >}z}xzvz}z}tnnxx_T> 1+);_aa]J&N}}}xz}tkxxteA+%%# /%7T_aaT4nzvvz}}zxtxxe[<"#%+%%+//. ,[aa].Cxz}}}rxzk_7))#++,+,& &TL[__[[,Y}}ztxxa;)&+,++,&), +,JIL[T[_>C}}z}vkn}veN%)++,,)),, "IJW[]aWV> c}zvrnrx}a<,/+.,.++.RVR J;C[a]a_TVCY}}}}xvpvx41.9,,./.;Wg_@(  Neiikppkkpz}}ttxpnnxnC/2499ER[ntk4NcaekkerW>;NeeiiknniinvxvtxttvtzT>92449NNet}}zrgE CTacknneaaT .TeeiiknkinnttprppnJT;4>14;JT_r_gnWV%7RJRaa]eeni[TN(Eeeiiknknpnkinptrprrna[<249>CCGNc]__p_[/WW[ieennea_[J"eeikntpnpvtnpprtrac7449@C_c]ai]pki6@<>__nnpttnaC;4WeeiinrpprnptptrrpgC7224@encenkr[VA7VCJN_grvrrc2(GeiinpttnnrttrpneG4427 nniikknvtprrttrnA>4CC>]egnnpp_V1W[e_irttpc],%ApnnkiiknnpnprpttrprrRGCA;;EW_icipnn"TN][aeattrrnpR/[nxxtknnxvtnrrtrrkaPPECJPRTii_ne/ %>[[cirtrptgTN[ixzptvpvzxvtnttr_WRLJL]Y[a_cc C_acnnptetgT)JTczxzxzxvzz}xnttrne[]TT_[acaa6aeennattc4;J[k}vvz}}vzz}}zvtrtrrpn[]a]Y]_aeL(&.6JennpnnkCA%)R[tzvprnxzt}}}zvrtrrnV_caaY]_ecJ 2eektrtncR+&Aetzzpnnpxz}}zpnnrprrkcTaa_Y_]]YEckzvrcAN Lxvvnvttnnvvzxvxpnna_P_aa_Y[]aT.Aakrvtn> CPRPY[ceTaene cTrrne nixvrnniieaaTJRRaVRccT[acn_RPTktrrne ixvvtrkkiikie]LPT]aY_]]_ccvpn [Wnprrprr] tzvvtknini__GJ9APYR[TT_pzgAJcenrrecjujha^QhuːrheeeZWcuulhhw{g\ceuwpll{{jwjjlj{uslrwrljrusuyrlryy{{}s}uurrsyuuw{yw{wrussrsӋ{{usuuy}}{y{rysu{{yuurysyy̠{uuy{uwu}{s{񣥤ֈ}ussy}{{rs{{݈{wsuu}uu{Ȥ{{}y}yɣ^p}䤣昗suyu󇆅鐒{u{rhyџȵ}uu}}j̡ylsy}y񏜣u{sur_s}ۂJ/j×uuwrprs{W  ?:F14Iꌒwyuspu߀Z cww蓕rlpp}+  (3^Jne}{c*   Oayp{}{OC"  ,Iy}weR9  'I}y{{yr{spgJ4  $s}}yyuuyuw{{{uYg^H         C5         D8       J3        K     '   \U     XK           ##&&      ""% +   % +  %     % % %#      % %" #  "    ( /+%  %"%)"   #"+/,% # &))&)% %    ",,//.+,%,.,,%     A;,122//,,/,,+   NI+,  ",221.1/1/,,+)#    PE&C9   %/22/21/,,)),)# #IJL;4,/221.,++   +PV>>4    1221/,,+,,#  .RT4C9.  /22/,,),+)%)%      [4;72) 221/,,+),,))%%   a&& &221/.,,&+,,)(%   #aP.&% &22/.,,%)&,++)%  ptN1+ %/22,/)), ##%% )++    ,aL(+ +,,)2, +,,# &&%   %/[   " )%   1a   +4aW   ,2aC  .%,2]R  /./.a& &&+,]   ##.+P #  "%>&  ,> %   "     "   ,"    #  +% & & , ( ) )%  +)+ &%) +  %   -/  2;>> < :={}ju^ZnwjjG5@=,,*1}ueZZlg^nZA4.+.,0hueT__^{}jey10++.,.Ĕrl^W^eew{u_\_561*1,.˓secZ\e\^^u{\eZTF@6501..֐yuu^^Z\s^lZ^\UQOJA??13􊇊Ґuwejple^w}njaa^^\URJ??14򋒐㊌rrpss{{r{{ge^^\UJw{pknjjgjquvydswyywxrudljr_V^VX\\^^[f_elmmaNKKJH@B@3ywopmjjfjjqqfljyywojm_[jYVV[^dc^cYl_[lONKKNGDDGG.zqsrpqjkhdjh^jdsywywwvwyvvsjoca^YYX[VV[[\d^dj__aHKLNNKKNKKJFJF2y}rrpmjjgajq~~wywuwrwwruYVQ^Y_}^V^[Y[[^\c[cQ@@CKONNOKHNK0rqmwwjjgkcaqvywvwwuvswyywwH^_^r[XaVV[V[[\^[[dSBC@GUQNONQNKKByprmkjjfd_wqssmwywysuyy|Vcsj^t^\[VVXV[[VXcc==79VKNOQLLNK>9m~snkjmfjnqokzx~yy~catd\l^VYVV[Y[[\^L::92:;JQQNQOO@7snmyuyowpluoqsyslrll_YcVVY[[Y[c__KF:2:B=DOOND2)zsq{vwn{|jswqvssypswq^ljYdVV[V\fen^KH;7CBKRJLOF50(uwmvsrumssuwvwywsspjyjY^UUVjlqjcKXH@VQKRKGK>9+'yqyssqjlyqvqrrmmonqsqqyc^VUUVUksonlcXXcj[KQHH923+'s~wwjuumsqmmkhmjoyps\VVUUV\^dzs^uquwuKQH2'22.(wzjfcgurnmjjmjlqkrvaVaUUV[c^mvyw~{wznJKG2(+,9,t}ywachlqqmqjjghjkjm~_ajYUU\ccvmy~zu{fL?;88+070s~w~wsV^jcsmnqkjgfjj_chVVX\jc\\cms~{yyqCHH9.2772|mst_yzmnnqqjgjhgjggqlffa_VVcmck\\clyzogwjGHH=;99=5ys~szq~jmnnjlhggjggjcc\^c^cXVsjrwsBgODKFGQ;;=4vcjwffjjookhggmfccacc^^l^^syuyg:C@@B;BF9@0-swof|zcfksqjhjgghddjaca[cjjswrywusQ:=@B@9@9.40,}mgzmyΌ~ygsjk~sjlghjdff^YX^_fjnumzhdK@@BB@>@CD34H0yhfgnyksnkmnjkqjjfcfcVXX[_ddqysvncR>?@9@B=?CC^^Nwjhoq򍎐ojwrjjkljoeah^XV[_^cswsqcF@@C@@B@@CVrqjlmhnhymyoj~qahhjnmolfgf[[\V\_^myrpDBB@CDCC>?F\rraaksfmqjzyrfc~rcjcjmjljdkf^\cV^[\djVRCB@CDC@@C@@DBJcHhymr|dlffy yyqsseaohcc^ddcjjlfldfjfhcY_[X^NCDKCB:DD?C9:JV9ymosclpjsqmjncfnh^cc^facf^qrddfeja[[\[[^KXXQV?SN3@73KL(nlfmwsjomz~s~jjffhdaca^c[^c\^^\omacmm[_V_\_fg_lfXc23;0O;3sR)nswvuny~kano^fc^da^a^\[[\_[[^[mmjdn\jY^cdcjgguryw/0,/DDR|y+y|t}yywva\j^fcd__^a_^^[_^\^cYjncjjY_YU_YVjgjzy|rH@-(aHfry8yyy~xkwa[^[^c^__^^a\^f\jffhss}v^l\UY^_dggsyyjK?(%USBwhGsurljywjca[[^ca[^^a^_a^^ha\|quss~aVhjnjajosjjVJ,"SYJx_KysyyDVolffdac\lf[^^c|njjujsjajccncfmcdY@Q4"jcLjjB_uyUjKDNXfsjmp^fq_\a[VUUmd[my|Ysj_}hdwjfm^Y_4>F(UVLmO9@ddryRKCFjjkvjcjSUmc\[VUQQhn[yr߈fjsslzmkmjKL=KJ)B@9je4 "FuRCCHV_^fc\aUVtaacUUQQqnz~Ҏg~svulkla?9C:)8>;jG9 ?^0:@CDj^aa^\m^QqccQUQOdqrs~~qwnmmec2922.)30X3; 2CCH^_^^[^fU\^cdXNQQO[wzz쉍upqjYK,20.;++.01  CHFQRf\^ajUdn^_VNSYV^yqxy{{sRfL0.0'0./9)0  #_elv^ac\[VS[VN__^jqsxyw~y{R[>20(+7389+/  +.jmj^\aS[YOUUNVVU_wUgOYyyYmKJF9+0@9=;/2  -K_XY[OKVaV[UO^^Us~Jyjeyj{焉~~|y^nDn>FC,5G99;72   'DVDDKNK\c^\fOanfmfjeefwf_愃{~~|ro^8\n9928993;29   &DJKKUa\mrUhnmuzyeywwmw烁z|{~rrh^8DB89:;;8??;H  &KOHcljjrYlsfwz~^~~ystgDK9;858;;JH89    ,7Q^Uamq~yބ~wj{{~sspGHjCB77:=OS?9X   !%0;Ykgy|wyy߄sqq~z{XQKG\_^H52?2;J2C    71=[a|yywew~qryz~yjg@dfao9/;;/034F    "+|}jjuo}yvwqwyqjn^ffrpK735,2.,_    f|hlnjqwrvnpqsswjkGBB5183,2>2?    9fj}jjqfwajmhffmq|cm\;=/189.2;,B       9z{|jqmfm^VfUccdw}^Y_Y431./350,9      a}߇uqclf\\lVY[[rhjK;;3118.23CJ     5fz|~ukYYffVVkvwhf:;311/5;;UY      g}moyckqVV^jusaF@8:315;4BN     4.22   /#      +,11. % %    )>%,.47 #     , / +   2#)& +(    () + #   " %    )         1     .              )%  +%2#   7+(.#/+      +1/,1/+ &  %&.   212.22/+1#   1/ 2/121"       /../1,22+,#   +  " # (%22%,       &+++&,2%)"   & ,+.+,)    &,, ,+ "&) "    /,%2/ ," ,,+  97,6%" &%1,.+   .@;2@4 %%,1,//,4%   ;;9;,.411/&//   99 .%24144.12.      ,7%, #//12671442/    ++ #/,/2274/22+     + &/+11224%., 114,  %   ((%1//(      &&,# % # #&  %     )" % %)  .),   %)  +11%, +#  ++.22,/  %"122+/%%&  &.2212&%&&   %# 12.22&%.+   )+22.22/21,,//,1%   %.1.22,.2./1,11/   &1121.1221./,, &%,1.121/.+&/ $.//%,     ,,%#      ,,#  )+, )  ,,!   ,% +&)& %  +,,%) # ++%"#&+,,% +, ## %+,,%     #" %,))%   "#),+))&%  #)+),++  & +)++)  %) &,,  %,.++#"   49@A@ZlhGC,53(  !R!a99=ACJZG^R610!   MQR6:@Bw,/0=53CC9K4'  N}/./=23VB:@"  "gj+../,'U/-=" CQx+./,%9%.(! BH)&(%(..! #k'# '!.301  F'"! !1%$#  22"!!%# " !"9!!#(#%!%%  ." ""%%#!(%&#  (j'%"#"$$#"!$-%  J1'$%$%"" %%!%" ,1X-(%%" ""&%%&$#C{;&%%#"%%%&%%./V+'&&%%#%%&',1C'&&% #$%%(1w'&&%$)"%%+(_&%&&%% " ,KH&&%$%$!!,K&%"  ,K+&&'&.\^+)'+& "!-(^0)&('""-Y04)-&" U95/1)&".9+Q)'"w=9=j391 霩?QQ^lKG"OjSBRaC4$!  VjSHVL?5"!!#claR[@.4!" !aF>H4',""  =UC:H,((8{088?,(($ (N+('8)''&$"&Cp++,++%$" 40)+.),(" ! J2.01+0," !##/Y=278134" !#%$ ,y913945/'"! #!"=j;82435503%$7+$' 0jq;77/554/$%;-/20k;88>33710"&.9-0""Ks97492589(//0/27.%%'Y;54315930/%2))58''$+rr3125399,/$ +%&.,4'%Lkv51003:3#-''0.+8..%Xl71//)8-!('(+)09/+$'2//,(,%#"! %"%0(,('d9')&$$"""$"+,),(9?.%)$#$ ! %&%0227,D,&$##" "!&'1,(+UH$%""   +./')pV',"" " !"&-0. ,tz@+. "" "!$.,/+% GV{4//(  !"%2/2/%%OQ9,0'%!%'2.+1.%(VKH+"" ##&).11% ,5dKC/# $&+&+./1.5wwCHY'"'%'%(,.(VV\H[D+# !'+) 5Lw4CB+%"$!"%% ,GeJ7779>>76CRJJV(]W_er"Wn2Wet#ann7[e_ei;gceec>[ceaa1;LaaN]]aac)R]_aaER]acaccGaaccR]acc)N[aac.]]aacNRaacN[aaceG[a]_aeeJ[Wa]ee,N]a]ce2aacce6[ikik[nekp_nktGaan Gaen%L]aa@RR_a7Yaa,76aa247[a %Cgc@__enRcggnJV]]_n>NaRWkJNnenn7JV_eiv6<]_acnv[]etrtv(TvtvvxVettvx.J_cT_6[c]eEWe(N]eԳjM('&.)**&!%OݿL400(&&(($ !*{㿶U05.+&&$&$\(.ܺT345*+(&&!&!Ѹ1.@95,',GLjڻ𲫫DC/C<5,Z+D=4<3*U帼rC54C491!ݼۺ3.*1)(.!^絵aQ*(%(&%!!6ָ۵9*(&%""!Lu\+'""!!{Ż}@**!$!!_Ҽ1!%$"!!Ҽ^.!!&"!!!Aϸ"!! phμG"!!!׼}!!!Ա<!! := !!"p𿾸Ҩh! '󿸷l(}wr%࿻źwp4Lž}n1Cg⾼8,&s<R:Fǿ﹡*"""M ᄐRRyGRw 꿸ſĿ 𾽼ľøļ ſĿǾÿ ȼ ÿ ʾ󿾽ɿ 󿾿 ƽ ɽο ż ļ¾½ľž۹龽𻸷پ񷫫򽺷޽л󼸸ľڿɽ򽻼ž󶳴콾ɻ˾ʾȼŸ ۸濻󽺻θƞfU> %!""    ?x{Ҭe=)&&  "   c}ڬzD&+%#  J %ЦC()+"#  r¤}'%3.+$ $9=UΧ򝕕75%50+$  Ht­#71)0("D天࿯[5+)5).'ݩϦnm(%"'! %KߠN@"  ,ҤϠpm." =^J#cy׳d3""Lĩk'󬭬ĩK%4󯬬}YS󯭬ϵ9nƶrʩdwƜl0/שּׂпe1Y𬫤đS|󬤣ƯV ᭬лd_[ᬧijof_Y)=⯬ҳmdX'5R⫩ʷj-$w뭯Ƴ\0B/8y׶雷~"> 﫩Ư~BBa9B_ ˻ꬤ 𫪩ʳ񱤣 ųꬭ׺ƭ󶫤 ۵ Ϸ ɺ󬫪Ͻ 󬫬 Ƶ Ͽ~~ʸĿ ij~y IJy{}}حİyy|ªŲyzؿۥĭ髪𧤣ͫ񣕕򪦣ު󩤤īά۸򪧩˳󡞟쪫ڿŻʺͷ󭬭Ƴ Ϥެ󪦧˿J17,&CNT__]Yaaa@;7L4%>APRaa_[[_aWTRRJ +//TTPR;YTa]][aaƹTPRNC< [NV[PRLRRYacaƾYRRI<<4JYa]aaTTNPYRPPY[acÈcVTTI< #W]aa_[R[PPRRT[aceTTLNaa_aa[_TPRRPTR]_aƠWR a_aaTRRT__aɾNN"_aa_TVTRRaa_aaɠNV Naaccaa[T_YTRT_aacNC. ]aaccaa_TV]TYTaacƶnYC27ER_aacaaY[YRTaacö[PC67%P[aacaccacaa[YRRYRRaccƹ[CRJ/7[ccaaceaaTPTTRRTaaccTTJR/N]aecaaceca_RNR[YTaaccþp[T9 R]Gae_aeeccaacecaaR]T]a_ccrcR>6ceeacacaccacca][cYaceccû[Iceeacecaacc[keacaacaþGReeaeccacacaR[Ta_eaa]aaccþe6ecaccacca_TJNReca[__acc7J6 _eecaccaTREJEC_A[LLaae<76, .eecacceca[NLJ>1(49NEN[_özne<96 aeecacceccaYTT;C%%%6CANaƾnW<>  N[eeceecaccaceecceaaPGA+% ;CGT_ƾn_NG% ]eecececaacecc_[]R2 &(6>IV[aötnc_[G,/aeececcaacecaca_TN[4&6CCJNTa]neca[GE_@aeecacaa_PR[R[NGGRV_ccƾraaV, >C_aaeececc a]_[]ARa_PJLR[aaceeaaJN;A_Wcaaeecc a_TRA@Ra_R_aaczc__aTJ+ VI7]_anaeka_]ceecc a_][R[>CCaWaaeaacceƻnk_]]aaiTR_@_nnrkek[ac ca[TA6GPGGeikecc춌nic]aeecRca_R_]gppieY_a[ccacaa]a_TY_L4>AARaeiieccxc]YWWa[][a__aa_]]niknaaVYacca_Y]aT<<9;eiieeccƹƏcTRTTVWN_acRVVR_Ya__ka[aaccaTN>.29CYaeeccr_TTRRPAP<>GCCNaWRViiaaeacceccaacaaWRP41/ARac cƻpt[[TRLP>4CVTLiaaeceeca_a[>2>JRcac c绾x_TTJ>494247>AGJeaaececca_]_TGC@GRWcaac黢va_WRC944,499AC@R[aa ca_a[TLLGIPT_aacþea][R29,..29GRRTT[_aa caca_Y[GRRT]aacp]Y[R<21# &99GN_caa ca_TRRT]aac廴v]YVTJR<%4G+;Raacacaccaccacaa]_[R]RRT_aac빱vreYYVJN< ""TTR9_aaecaacaacaaTVTRRT[aca_][RRA, +4TCR]aac a]YTVRRTRY]aacùn[Y[[TPJ,,/4CTaT]]a a_[TT[RNRRTRTYaacƾk[Y[V[;J> 4W]]W[aa]YaaRVaWRRTRTTVaacƹg_Y[YTJ;,&>AIT[T_]aWV]_aa]_][TTPELRRTRRT]_aaþk_[Y[TTN42C;1,,<;1,6@4APWTaW[_aa_]T[TTPRLCCEGLaa_YYW[WTTYTRTWa_ö_TTPR<Laa_aaYRT;9PRRTYaa]W]Ycca[]aac a_aaceɻTPLLNPRNPRRCRRPRRWa_W[]]_aa]aeaccaccaacaa]LJYceƻaYPPJJNLPRRPRRPRRTW]WY[_aa]_RYeccacacaa_a>NTce˘TPJJIJRRTPW]]YT_Paaccaa_]a__];;[ca߽snluﭨup(:84' ̾{__\{{uC6Ӿlleg?6%޾l(!ٵl^y߳h\w@6&$⸷{\: srrDC*$$!}pR"9GG*&&$$! !뾿+$ '.<.$$%$$e $,!$%&$$%&ӷG&(%!$%($%(%)$!!$ۿ_$(&!*(+((0*)(( %)伻T(,$//)**,+(**!,齷g3!+*,)(**)(+)(($ $*뻼lW1)!(11314893,*)/33,*& 㸷n6/*$$'455:@C@@5..)<8**% 边\53++,3345=5GIGURgp1?3**( Z55%,11553@JlGU31/41޸.11%&,14559ggnA15938,+)(,,0499FRR?@1 ۾G1'*0(('1105:?OQLZR ҷR&()0$514199IGQ{eL^Z ϸ1&%59:?C:9@LQGQ^^R^Qܻ(&!3=CDDA=GRRJ^rnywOYG^Ұc"$3?ACDDAIJROTgewhWulpά5/!?ADG?IQOTQJTUp^_pQ_L $*69IDGRRQRWQcl{{rReg ֦'"!!$L?8Q_TZTUgp^Jnj^cOص:%!G$I^^Qn_luuuWGgY_WT)$*75^\dgmmllnmomszz{q~|e 謙}ws..:[ffgjfjmmu~~syzl孙yUB "Ufjjlkfjjqn}y{r q& Sdgjgjjnjjfq~wsyo կ}cgL  GCjjgjsojjhl{|qq~y wf\" Sflnjns|smm~~x ws\V  Ddjqmnqvzzy~ycs[D  Faryyz~y~󯭔Y0K(   .Vhwv}򄇏jX1( Ka|㯭^K, "Gx~񇑖꭯z^JB$ +Br|mgS7'"""%._| vg@,'$#%%8;ryc@5(""$':@psmV.&'$#''+&3SwrB>'%"!&'%2%0Vjt櫙jH;7#!" %((2%Sfa  㬭q943.&'"0%"%@Ut 媥sK9085# ""0"&Dk 褚sXB=7'#" %%+./1  誒N>90+$"0,/2K 飏jC922('!"!!"#04B誆^V82/&&  $(4U 㧦ffc10%%2B( +# !(H{sfrmdm(@GK9/,$&Ba 陞suup_re5BB=2')& '઩|vuwwsosc^792''G_caa]YA%  "  42.@@AA@7>@  a_7   & >9@A@><941 a_a_[7>  %   9976@@>9<6, a]_aaccacaa_TPNG4664+.  A7>>99 acaYPPNLPNPC;4 +49A;L&  >19>,&  accececca]RPPRJIG>CAY_YRLJ;+.4cecceecaTRPTRRYYRTWa__]_[N )ceecceeccaTRRVTT]W[__]J%caceccaVRRTRRT[][[_a]VW<%ceccac]TRRPTRT[][[ac]P>/caeecca[TRRPRTT[]][a]Y[]WPC>"ecceccaaca]YTRRPPRT[[aVWYYWTT6 ca_[WYRRPPR[Y[[_][_[aa[N.caccaYRPTWW[Y[[]]_]R7cacaccaccaa]YRPRWWY[[]YTaca[YLcacc a_TRTWYWWY_[VY[]eaY[Acacc a_VTTY][WYW[aa_]aa_Cc a]V[WWYY[[aca> cacaaTRJRPTY]_]__acea;  caca_TC@;LYWTY[[acaR<    c a_L@7@@NPR[W__ce[C   acc aR6@7AJPLNY[TT[a; aa[_aacaa>EJTRTTGLYWTT[a[ceec]]_aacaaca[[RT[VTVTPRNRRT[  ec_ca__a a]aTT_WWRPPN49  eaaccaa_ecaa_aa][]VRPPNC>   ecaca]_aacaTRPNPNNI  eaceeceaaceeceeceTPRPLN><"  ceceikeeaaceaV[TNL,6   ceceeiecaaceecee[_]RRJA   cceiieaceccecee_W[TRC/   cceigeeiecaeeaWTJ9  ccecieeieiiec[TI9  %&cc eicaTC6    )% ccecee iaC4  %%()%ccececceeiiecCA   %#&+%c ceiigaRJ#+    %"%%) c ceiie[[,  & %#&&"  c ceiic_4&    %%&  )&;cec ci]#   %# % ) "99/cceccacceiie]9 +#  4.#)"#1);9;/cceiiec; &  %)4.&<><>cceieeiig   #  ).244+%22CC@ccacecegii>   %  )7>.4&.4;A/caccacaca] % "  #6CGT]aGY[ACC1.accacaaca %+ #&#,6CTcceec]YCAGE2accaacaca  %%#&<WYaeeigee[aYJ&,)'(%".3;ʪhFC0aUSDCajhegfdh[OQmssrqqswJUJKX+$"!"%(01^^mQDC^^UKVejddeddjjc\cqjrqsuwDKD;>+('"#%//8c㥩4-DCYKK\JV^ccamgjdcklgmrrttJJCG;.)&$%022KUBFQCJLHGJKOjljjlljfmqmmryrsQXLQeV>8,)00347Y2QVKKHLOO^ljlkmhmmrnrusur\\LgsYR@/>=;BYugnvXKYXKHJFHHRKVcjjlmmnssquuyqsVdRssjYJ4DGVVdrz2^[jy}ta^UKHKQCHKNVadjjmnwtvurswyqSc^ssqmf@;VY^h^f("05flKzxkyzxtzrp[XOFHCDHKO[aadrswwsty~yVuqusmjmdeYX^^hU,%%-,:mvx&^kCK}N/BdcQKKJHKU[a_jjqtutuu~yrwwsjjl[KKUcK9J% ,%1tn$ 9B@r^}sk!%GXUNOQQKLRfflfkqqvwuwyywzmuwslqaKKUQX8( "!$.1'1OBU(402QUUSOQUS^Xssmovvstysvvrrywwyrn[@LFHYV-"'" "!"##"")2O.K%)1)"Q;CQUNOVU\ouswssRYtmmrus_kaGKG@Q82)"#""! ""#"%$%"%B447;KQKKQUY[qqwwusuamCBejlwjYVRHC@=341+#%""%#"#"#""%/3%&CKKLKQOfrrnwwjVeYF44chfj^VUG@;:;41.%""%$#&##%!""#((3BJOKKNKK[\cjmskqK[Kd24:Cemjj\UH@;7855,+%"$''#)'##$""#$5->KJKNNOckoqqajQjV^RG4?CakjyVYQ>:92210,'2)+'')'$$#""# 02KDKQQOVmnopu_YJBS@BRYBBjm蚒aajY>773210314,+)('##" !+09:KKOOQYvrsnseV>:O;:KOHQwqndQ?75522459/,+(%%#""%#%487BKNUY[mpqwvwc99H9:@KUszٙyzy^G7755323932+0,%'%#""#&"%'(''2DUU^mmswqm:9759>QKwyy|}rF875579@98/29,/9''!$% " %+,..27CVR\mqsooR:979>BQVlz{qgG9877;=8;5;B99D9K'""!! %'.11.BXQglojmj;98738GOVhxvo\:;7;9@==KK\>FDB='%!#!"&2).2+20084NLSNX494398LQNmy~vh\@C:HORHQYLKHXV7%%!$"''88;8&+"'+'274+391314@@NUmzwrcK^jYUXUR_KdVC20)+)#)%1992"%&'++02;2318QRc~~yjfchhad^ccdca7@2@+)'+9.;7%#$" #(+,2B/1+22>2;G{{~~zk^hjhff_OKaQB@C;;+&.43:'"/"!")/.00/..,4>54r}~yjcjhjcffOKQOFGCC;B('58+?::0&%2&../'//+))/Q9HpfljfjVaOHHKHKJCD@;'.9@8@@49,$$0"'&'%.+..2/4;Vmmufnc\HHFHKKC8=.89B973,84)/:,&""+$,+0,42UGoŪoyqfVHFKHHOGKF=800J1..71/4@;"'/%!!#,%()/33DHHȫscSLRQKUKFHH0903998852;G@;")$$%(%38.027;GQʤqjdfcd\UHHL79400BC8834C;' ""##%,3732558DFK_ynllj^f^Vm_U499:CB@>3>'" !""$)3824455FFKƯ{uoqmjcnqqcolg0CB;K@?G(#" &&5952455DGo̕sw}onmssqsrryj^VOK>2(-!#"#(#)845-2=7ryƯ|x~yvqssursrrvnkcUN9"#(.::,& 9++&/9NYVw򬩧~wrsuuvusslfdR..2D=_R:-((0=/+'0BX_afq )J]_aaec]R>   .( CT_aae]C2   +,9 W_aa]J4+%  1 /Raa[aa_%7/,,#   Vaca][]R9,%+,#    + Waa]V@2++    W[]aa][TR1 )+&   ER[[WTRT6+  L_[TTRR<  L[_VTRR9    RPRNRTR%&% "JPPRWW2+% %%99JR_][7+&+   ( ,6J@JRTaT><;Y"&.%%" ,9;LLYancc][T[>  )%,),%&& )NLLJN_nenn,cc_c+ %..,,%%% &.>>LJNepngtr22rgYN ..,&)  )  %JA>Cnvecrn2nnic%%#% " )& ;>IPVagakxzpp[nntp  %%)&)&   7NNT]YW]actknRnptp/+) )% 6RTT[RYpnrrRRn<  7LNTJRTanpnnTcgneRL 4% P4+;GJaknnieeiiTJN(  >1>aC, %,Nekngia[TC1; <>6aeT AakaaC9Taa]Y]TR 1N@eecWA]aa[W__],   +%%V[eVeJLR_YLR[TRT<  , 24RcecTN<>YTETTW[@R  +&(Cea,,%EGPT>TTRC9,  #  EPa< 46CLC9.# &     +)&,2@&,#,%,    ,,,   (&%    %    %   ( +4#%( 1+..) <.,.* C<;,' CC,%  CCE9,<# CCEGAE; $ EEGGCE# EGGEGE"   GEEGEGG1   #EECECC24+ /CC@CEC@4)9G.GJC9AA@9CEA@,)6NPG@CCAGCE>'JPTGCCEJJAJ2C$>LNYEGJJNJN;% # +>JWeRNJPJPPG4&& '%1YNica[TTRIA; %+  ' CJ[kkcaa][2+2+%  '&[]ieeca_J<9%#"& (&WWeecaT6) %) %ENeeca>1#%%  ;Taeececca>>)&    ;eaeceececaa>><%   >aaecceccegcecc_RN<9   2_[ecceca[YNLJ   RY{}wwugplupGDLGWpwuulypnRFGGWu{{u{}{ZFG5Jl{peAMIlj{u{u{ggZA:Jr{swsgeT@eOQwꕆjuunFGGJWg{lwl}u{rRG9CFGY{{{pJJC<:GGJF񶷸툇}rwwyy{}{ypLJA==?GGAR}uu{wwy}{Q@A==?@R:VUqzywnmqwno}~qkjgfc^c^cRRH4/;[mwsmjmmmrry~vwyukfjfcf\_\RQC3Q?@k~_ff|mjkjqrjhwz{uvuvnshgffU^^X899;FRc{}}vsVf_Vrjjlnlmlkl|wuu{vwmljggd^c[B9.589Goqvwsr|zvohfrchfccffhfjh~ywwyummfY;;50/99;8k񡣤xswmmonjrjd[__aacgdcyvvrnqjafY=;4112994Byqqrvnmrjjlmkd^^c__adn|vyywqnsjjc@341123B0Uyykswvvqmjjljcfj^_ddccadcjpyldysysj^932200)+/"}npssvppocfVV_QVc^Sacacfhfjy{rfwxy{|w_Q@820)22%'%soorwrohlVgQVVQ^U[\\[cjeffq}~yzyzzwURKB@,,"\fxmnnomonmaV_SVVX\efcfjdosv~~yywvojOKK.07,2ajac^jlmmnsq[VV[SVSSVUR_c_a_kqsv~zykjjdc^Q8747 3?L_wy}nudd[\\YmmrlaVSQQU^[swpcsqrrswyyqsnfjf^^FDB@220;?Ljmxlaj_c\[V^jlnqqncjaQOVU^^z~ssvurny~{{yvnsffjj^OOBB2.) %95KVcj^^f^VY[Xa^\jlno^c\SQUU\^y{zy~zywwy|yzywswnjnslaOOKH##2KGUYVVY[[VRV^[aV^mo_^cQQ\^c~yyzywqwwyywxwwssnnssjR\OH&" ",14UVYVVXVUU[QUKVFj_jmVjO[\[_yyxwwvwwywyyssnsrmpUU@0 ! " '47RRV^VVUUVV^UYYLoxrpxYgjjzyywvywxywywwsjsvrjfUB=. "#49RYVVXVUV^[Q=JCm{vrjjzyvrxwwvwssrmr\B>(" (42CYVVUVVUYJ=KK{mljkzyxvvwywwuwwuwvsvqrfa?;8" "$$(9R\XVVUSXRKJUG}mmlyzyvvwyywvtuwuussrvvrqj^Q=>+! "  !HKV\[VV^^N_VKSLBlrkjmmjzyywwvwwqrrqvorursqYUJN4'  .GUUQU_^^NjjeRUQssjlmmjyyvsusvvuspnohnrwwsm\UULK4"'@QUUS_XV[GLjaXjkrslrjjyyxwustsqrqqmhnwswsk_VQLLC"  'BQCU^YVVYQL^c^sssvulhfuyywwuuvqnqrqqnowssma^VQRL4% %&9GQ9>K[X[LOUajlusukhsosuqruwqsnsonssmjc\UURC&" /+4?YG=K^cYKU_hjl~zjrrsrsvwvsmtwsuqyyvsja_XUURD"!%0103LKKQ\Y\^facffpoqrruvwwspuqwruuyyqnX_VUUR40$",5OHBLRRYcdcddfgonsqnnsqrwwrvrwsywxvyywrmjeVVUUSL=B'"49KV^[Xccafcddfqw~wmorlvstvwwywxywwrog\UUSOK:/ %2:@Scaefjfkffhfljrjmmnkwtswwyyxwywy~yyrqmVUUG;C0..2$'.4DKSwsxqfgfhjsjslmurlwyy{yywy~ywwyyzwqaXUUQCL8>0'%,-))4;H\wwjmmjjuuwsnl~~yymwyy|yywwqfYUUQFCGDC924879=jwym||ouvq|c|zqyy~~yy~{yszfcUQOB3>>BHB4"459jyt|ayr~~~{wo^LH94;73FLF9"!(mwwhzyzdJJ9/817>/0%#3;(rw~swyw|zV^HG5531.%"^aw}qoswytmwLQ>9552/)("jqw~zwluy{wscRU?75742101(%3Xawyrssyyoj~scYR9552011)+OXsoqqt~nulmjۉyvmX@97554110179fjmmnorxsqjmcffg_a85544211/1+>Sjmmnqoqqyrm_Y^cc~mV@88574.0''"9LCjlmmnmosqnrxdcYY^^ymh@;=;731(5K;Jdlmjmlmjmmnnq}fRY@CRQvnnR@9=;++ 83cjjljjmljmnmn|lYkCJ%9RQywVB875549OjllmkjmmsjYQNC)%%;V~zs\gD@+$8QYllmljgjlojcGYVa"%%9SݔywusjcC>.%0?VXmmljgjjkcLjfnm)'"%9R~~wzvvunVKG=.%)2;NKjd^RQcjf_ognq^H"$$'(ywyyvwsuvus^^B>0%$&G=@LK\adqmVcaYG, !%+}wwvyyuqyquso^X=4" ;?=QS^honLjcgD !,3wvvuwu~qurqqnl@" +DHDKcjvrBVdf.$ '4wuuvuv{xuqqmmY,''2.H9Vje7Vj^C''90.}{vuxvxzysrnnkcQB" %'0,,949KmVsoC=0880yy{yvulnmjcJ3%"%'+%,,%Q@Gm\^H?C7::zvu{w{{mjrkfXK9;" +).0,3_UHX[RDBCJG;vyـ{vmrnjccH:;$ ).4959QYr\UKJHHC@y{{vqqrkffVHFC "%$48,oonsyhVOKKJFCv~ysrqsffQL2  $$'VUX[~ysq[S\QKK䠟yz}uwuukffaQS72(%$$1QUUswrtqjVVKH.7;GC><71 %#;CLG[TR[[RCJ>>1&,,% 46<2AIJ[e_9>>;7 %%4A[[TTNa[_RCRJ;>>2#%.41.>G@LN9+4<94  %;ACC7+99     19;9%  <;+9A," 417 "     ,  "    .%  4%&A      ;%CA& >; ,A%     2++    >  %C4   #EJ  " .1 CJJG2& %  49  +%% #CCJG2%&)+6 "6;494<,>I9G,&/CJJGJ.,2,64+ +#%   19#;92@E@JJEE;>;JJPC#(1,,% +,#+, ). &C@,;9C>GGJGJC91CGG@% ,+()%#,%+/11/, ,/4AC@GCGAEJPJGCECCGGC %+ )+7&(,144979/&  #%2C<>47ELLJJGGC,#%#4/R_A@_>N>;7/ 9C4.4AGGJJGGA;   + ,24Jneca]L@42++  %, %%CGLJG9< % %%,4AnecpaN<4;941   %4CGLE<# ,%,.GJn_enTPP,>9>1,#  9JC@%),,)4RJ[JaeALJ>JC@9.   CLP,#+1,))C;79N<,,/,4;<;; #   YNa__[[}}xnaL;<% [W_][PaanpnN<@>    []TNYTT_WaLT<99,  [a_R_RR]cJ9194.4 ]acea]]_aJ;7429  aeaca_aYP;99,/  a_acca__[J;9<;4 !aRWa_a_acA@<<4>   PW[TaacaYJA< " %!"&(      csvxcc^Y\^VR>D9&' ''    ;v[_[[^\VSF2@8!+'. ' #      d^YX^YYB7@229@223.1'+0)'"     ;z[a\fcYQOK4;CC9511).0&!"+    "qVVjecf\X@=FGB9121.-%!.++     VQVcefha\BFBHB=45131%"($,.      vz^UVcfgeUHCJFDB;0553.+"$%     (|VV[fajhK2CGDC;',322&%"    'X^^age^C;8FDC?#'%,..-      2_^f_gV^;7B@DF:$# '$&%$        4ܼ_gfdgda5)FCD@(-" "%       zgfdK..9B?2)(#%"        hggccd3/. %  % "     rggjjdVQD,"".223(,    0jjfSLO57-#%,990.&    4ajjfaKRF:91'&'((;>4/''"     !9kffU_QKK94//+1CY@0%+%'   %UkgaadXNKF9/289X=9;7(,  !     _fa\\a^[VV@D9H^9?99:%    /ydc^^a\VYVVFDVU>;?>.'     Rfj[\\[[VVXXUQULQUKF0.!     0YfdV^[VVY[VXUVVUXUN;:-     ndj\[\[[_VVURLKF.   -kdd^[V[[Y\X[\Y[K982#   Lfmh_\[[V[[U[^^[V8432)   1{flja[[V[[a^qa_8,41)%       :hldc[[V[\amfegN'%$#$$       @kccf\[[hkjccK2# $%#     "Dkfhfa^^a[[\Q_^hd^H($$!%%$     Fܼccdaa[_ca^[O^S[OLB'%##"!!       ,mcacc_^a\^F[JOQNKJ4%%"%    1UljjcRLLFJCHNKKB;.%"    jsmjjg[QQNL;=DKCC;"   Bmnjjaf_QJD;7?JJHF8B)    BDjkjjgfaVBF937&2CFJ89,  %=t׼hhjhg^KBC>72."/+C>4/'    "VnԼjgec__>99?4.# %   'OoccVVQ>"'0/    fnٻY\VVX"%/     .5S>8?    +Q;9     %H?-(       kU@('    59yo#R=.,     9%(L=,+       79"     2'#"%      0&+-' )"   $(#"    -,;//()'   5&8 &&1     80?..00"  8D9$'1     80.-0->8   F9Q7$4#     7.+/'/QV @RN%%   ;8,',2GB+00CH59       =H9229B;@00+, )-$% $0495    BHG>22B@9=8;227FG%;=%)$173    FJJ\@9CHJOD:3;@;;:;@+"#%94(      2 %)e  0 #&,a  1 )Rt 1(aiv /,Trt 2,ett 3T[pt4,[ir7##1gnr7 "+evp6 &Aett2 #%+cztt1 &;xxvv0+ptvv0@ttvvx1czvvxv2n}vvxx2,i}xx}1Navxx3(R_txxzx2&Tapvvxx29Eckttvz3aet}vvx36]p}}vzx3C]p}xxz3,Paapv3R_aeikx4Ceeinkp2ciknkntz2 agnpnrpr1%akppikkprt2Atnknkikkpp/Pnxnninknp #9nkpztnnknnt !v}v}}vzpttp#r}x #Cc}}z}z2e}4e}}-z}}}},6}}} +]+c}}+ &Cv}- >epz/ j5rJx~vommqv{{{wd84^vCs~oonmlmmnrz~yf992 ~wymmqmllogwvVU9  渳vfodmoqklhlgOh22øwyyuvwnlqqjffgU"! Ǽyywsrwjj_hnjgX% wwyvsoqkd__smff ľywwvrdaa^^cmnr/Q~C9븼ywwvraa^^gmy~~ww ϼyzwrlld^^gu~o_ |zymll^afmnl\ π{ywlrlreclh~zug tywvlqreaacFBysr Ϟyuqwrldfdcoz@ ſϩl{qqswvsqc}Kd4 ~weţqjqhsqjafsw~˻yqǖu^qrjz^ 9tu~yĽzmjfujh  HmqsswyurmYcdfvy_@  5plvzrհcVdch}R   @[afj}yV^Xcq   +JcmraVU\[kR    3:,0Nطc\[^amyu   ?Uncc_j_ov|}rF    4GJ»zz^jang_|  &+o¯ī|xyysjfmjn&  ''%BGSżywyuyymsrrwKK  &" ).8=9YUywx»}wysewnqwsmehfrKH? ,5-0479KCSVloyĸwywsjsuvuolrmakG>=.%"(,'292@;KKcnxywsqjjmowsrO\D,%-4 %+-22.4CJJcĿywuoghjsoB'%aa$+"&N%1%+98;/:9DFHHQgĪsnl\lga;,9/%J14gS#+)-:9CQ@B'@@=;@;dnkc~vK@8(21->eXlStvvxvtppknkprpnkiiecPCNCJPR_T_[x}_W6gprrtrprrpa_vvtrnkprptviiecTPCCYTRP[iv}eG((Jaacknnprrk;zxvvtvnrpnknnie]R;>CC9ENPRTTnngLa "CE+.Yaaceeknprrpavvtprpknii]RL>>CIW[RaRR7N%;>CI[_aaceknrpkLttvvtpptnkiik[RJC9CJJGR_[VLR6>,[Raacce tprvvttnknnRJNCG@JWTT]V]CWaeaccaW pntpttxttnkiiknea[PR@>JGTRcrki[V6>A  +xz}}zkcaRTPeppxtpxn}znnEprppkiigeeca> }xzz}}}eeR42Ett}xnp]}}vn22nrprniigeecT9 x}}z}}}n[J7J@Ttktrrzxx}zzTTWJtxzpkieeaA  z}z}i_JR9>Raeggn}zzxxrn_n}xxvi_ceaT.z}}}}xa_NRCPRNeegzz}x}}peeW   z}}z}}x_LRWJLC>exz}}}󆃁xvxvgA% v}}zz}]_TRRNLG>I}t}}فzxtpe@   }}x}zz}iPLCNNJI2 Nepx}xtvtcR)z}ztPNLJGL6. NrxvtnIJ( }zT9PNNRG62/v}}xztraN# inR)4CCNRPJ6/Y솁}zvnc  톈nA4@@1CLNTLL r솃z}zxpnN<  舊rA><@C+><<9JARn}tzrrvntvC. }zzv_RNC@>@ATxzzpkpk/ }zriRCA@ACCezxzvzz}tpee. }zxreTIACEekttzv}}zvvnna+.Ji}crp}vtvvz}tpkikR @C< /zxnR7C;9CTr䤝nznptvvxtzxvkeinkT.CC<77 }zxn]C@A>J>@JTxJ1iknttprnkkikkc7)  @AJJ>>%xvaC14A;>APx[W@nnpxttppikkgnieE+  ,4A97>xeN2(%A>ANaY[VEennpzrpikkieiiR,   + +9G&k[. &.CJP_epziV Eanpnpvnngee>RI +4+#7.CY9 .Ra]e[nzL6,][]ieknneecga., ,2+1_N( ;>TenvzxpvpcV.6A[]ecnkrrniekkec2214) ,E[avxzvvzpkW>L[]ceeknngnie_V#24424;aknnpenpn]NaakiienknnrnrnT_  +441 6VinvtvrtrneTenkiknpeingknnvpe> 12/Cnntv}xvvxvtpnkkrrknia[iJ__>.+/1@cngn}vx}vpptzzLJ1 ,[(  19nnrgnn[zznpz}g   R %2 &)  47@IV_JCe_zvxrxz_&&N 2&%"1" T1zz2P[}}zv}z< I &" J%Tpz}vz % 6Ntxzv  LNn}I  %";AntC ((+ "It]C#  ++ ezR]_( %#+% p=       la         {6           !1 @!                           9         &             I      ' (         "!          '  %         3          =          4$                   (                                                                          $                      %         3!           $         3%         !)          )).         %  !&6)'      ) $!!*0*       " +  &        '='        5HH0"          ""DCU57L.+;5"    0      K#    / @"2;C(0;+   "    ('   %'     %  # % '+sS   $     "#( !q~4 +     (  #$'"$q}g(  .   C"0  "kHq   "1      ,##HC %./:8GJ["      8=UO/,&B   %DY[OS /$  !   >1.^^"   " D&O "   #N& 3"8^+  uB0&J !  ?..(QeD$)2+" R BC+5"/  2 +>=.'?FSf5  "YdF/S    #(;; 3%     0+.5'2&Uo"   ^xfjpC ( 0KL(7=\ /  h([FB-V;9F  0qrpmqK85=%-7=,0Q3&% &+!?wxrfUk0  );?;rpo(KK92qRd25F30D99!L  .$-oonwK  ."=SUy)U)L$vrK9B@9?^"'G:'  =2(81! aYK.nJ)   84""[o:9^V)V~UB?o[ %(%)   75$QVR../    +)$()k.4(VVteJHB%,)9>8J&"    1QBBJ(  3.(+((&720L[%(9%GmSB   (7.UJ+8%  )0/35V((quk8$&CUV7  #N:;5  04/33-,0qv7/"9^V0,  "15. mdQUe:13+.+),v~ytq5?2+ 4 ((($(   Yt < ; : ?=  !   '   ) <)"  (@% .1.R9;RL,// TVE97 5;_%6 ;16% ))&1tnr ";%) Ruulrluu⋃uJGO@DQT{A   ,*LMsulrrsuuUTWDI<\_O !     (gr{lsll쐜nu1FFDD.0G     !Gw}{u{suuwegh:?Gu.300     Oyywy}}{{}rpY9GhwYO*        3usru{{ernr<9^hyuYO       J{rj^ee\\lO./@awupT       D0TarZlj}yels<<=jj}TZl          (OTlspuueyjjjZG66        6J_nsl?=ZQA800           (W_pga??3=lzmjh\^V[[\^^jmnkrDCF7:0JL?       R[yuscV\VVwmpmX^'8877%&9        9_wwdc^cf\^^_sQRS/29n^%(&&     ?aamj_admdccdh[srYG.9Smn_G?"   (^\ll[^cqcQ[fX[0.KSaoj^G?       ;jgc[UKQQjJJ}V?%%3N_mo^YC       7&CN[HVUdjaQV\001wUUfdCHV       ?CV\Y^v^rQaoUUnUH9,,        ,;LX\wVtorvo21Hn@4-&&          FLsYRNrj22(104,'&&      %GQrg+,%/'%&''       lf:9>0+''&'&&      ${:80/0..,&&''&           :7%0C2@8,&&')'          2=.0G>+.'&''             UBB0S23)'+''       9B>K4/@))''+      3=42340.+''        8.J3)7.(.      ;C2:2..9         4::FC99       )@DKCHK         1GCCK      ;FBK"        2                                                                                                                             #&     "&')'(     %&)3#0.(        &&+9?BH?         '+(KHH#      4NUY       %4KX!     %[Y     >V       ' $0        $ $ .   $.   !1F:1        BQLVCB8)%     '$  Op~raaQO(3       !($   Bw}som^(   !#(%%' qqq_V!    "! %)+    1xfX"!"1,.+ 7%0;B% 7"8>H' ~򬫪L44(";@Q9! $ !"(|J7""'%-,9!.%-%%D\쯱J7&#%!##)(U^LUNB11f)((@((")#$#%'%!amXjacgpduD@?)"/0#%"%'.// ) #)  *%,%%  , %  )# + , ) 13 4   2.9,% 7.&(; & 8%2+9. 3 1424%4>; 3;1>41CVJC611;][LJGaa][WTTC@.VYeiegee_][YWNA-WVciikeea_]YW6,P__ekkiica]]L6+67_aiikiieiieena[E*/T_iieiknnceV" >IL_ikkiiegeeiieN=TML( !*+*0.5/66/ Gy= "#"&%+%,,%9qa0U)(;$'+.1'11."qc5HS>R++/011' "fw8H! +%+./5521.$! ay+"2/.%1455.""'R:!"! '..+.2>>32+""9ju,"'/+ $#+>CC'>9;Bj,;"/'% ""2FBB4;HLd+/"0,$# "&;CHK=H[m.)%)$$!% %%/@LG^O{&''"   %';KBCSy&'4'"  %9K>RSj'&')/,$!  %,FDKV{'&')4;,%!!  48;OK\'(BRN?U.! "" /5;9@N+0CCQ?==,%"!"%09;@^CQQCQLHBH44.%#+0;8S[4HQ4QLCaa@40)9;?>CQ'34C4X^^_HRK82@>B>=s0+9DHY\hk^\GFF@:F>;C2449^^QXgVQJD;H;C>-'3;0;JU_Y^OHSQ9BH3+',,+B:@KKHKKGB7>=&"":%C9D@==9;4!-2/9  (2jC2.02'2%&," (j !#! q{     -ad     SY\    x     KV   %    q   z      JV    ,    ;a    1>~ -.Bf   9=F   :   9!  x1(    U(,QF"(   "g=8c94K1   .yBR_S^cYK  _r$3Q^caaK   X,%Vcca\   "LQ;J@   '893-%    Lu %& 0'  0#!) %9d'&/#%ar 3C &5u 3n /\,{  x  0 j\ ,T_e 4[acLace+[cen/NTcaekN[_a[aa"RY[]](RVW[][_NTTY[YY[TTWYYTYYWWYYWWYYLWYY9WWYJTWY[YY]LTT[[](R__a]a4Vakkaak #Ykakakk @W[[aak+C[W[[t,9e[[naYa+A@ae CCAn@erCpr@@eeg9RTV[g/T_a&+,T_a GGV_a 6N_kC[Yi,JWenn7Wenn9@_enCGkeeJNenkn,eggnnp_knNgnnp%Neinn@L[nrp&&nn;YaiR[]e+[]_ceN[[cei]eeC[]ee[_ei[gei&7eek%ee#,]kAGai @AAe"9_e1@ac&[ce>&Ya_4Veθ𶷴 Ͽ촳^Ǽ罺Ӻ񼾽󼸹帶콾績򽾿Ǻο𶵴 ŸŸ񵶸 ϾξǾĿļɼ 羸Ż 渺ü 񸽺ӿ 񺽾ǽ ż ξ 򬧦ſ𷰤򷸵轾Ŀ𸺻򶴦ϿԿ󷱯羻̿콸ƿ쾻Կʿ긽軿»ﶷ㾿м˾Ip긺ʾwGC:w纷̿ͽ  r­l {򛯼Ũ)*  6Ũ6  軶ſ!  O!  3 O   y<4  ^ļ3R8${ Ľl*D ȿlr\ Ƚglly˹:_^n 鸷_eu} 꼷^FGep 㷷rg6RCUWD6Zn ̸aURQGAj}β_TRQCAZuٿ}QQG9@Gl Ÿ^Z?<=9JQl пݼ@A<=9ALe ۿ𡣟 쟞恵ƶ窦Ŧ񩫪į󩤥ܤ쪫ޭ礫߲򪫬˸Ͽ𡠟˭ 믭˽񠡤 ƿϿж׳ʸ 竤س 椦ұ 񤪦Ŭ 񦪫Ҷ ϳ ܿ 򖐏Ƴ𣚍ƻ򣤠߻誫ʲ𤦧򡟏Ƭ󣜙竧쪤Ƶ쫧Ƭκꤪ觬Ҽ˰㫬˻y:nYꤦꬭۺr_95/_禣̬ν| [ŰV c򃙩ϸk!"  ,ڳ,   觡ͳ   ʯ?  ( ԰u?  q ʭa0)   K~n(B- c ſgV"7jr ۷ޭhV[Jr{ ˷}qRVVa{߻s/LKXrz ⤣nLQ^d 㩣K89QY ڣw{[R,B5uwǭszDF7,HXtx ۼNDB@94Udqz~ѱͿfLCB@54H^qsyyѯͬd@@9.39Vls~ 㳤KH201.;@Vqz Ьҩq3401.4=Qhqw ƶTRPJLLJGJJRNRRPRLNRRPR[T]Y]aWa a_a__a_]LCaaƶaRPLLJNJJLLJPPRRPLJJLPRW]PL]__aa[a_Yaa][_[]_[LNJ[[Ər[PJJGEPPRLRRPLJJPLGVaa]W]]aa_[]]_Y]_[JJRTWƌWRJJGJNNPPRPLJJNLPN__aa]V]a]_]][_]_]TNTT]aƊeJJP9CCNRRPLJJLPW_aa][[]_[aa][TV]aceɹTPPJJGC;74GRRPNPJJLJNaacaa[]_]_a]VTWTV_ciieƻcTPJJE9+/CPRRPLLJJT_acaa[]a][_]_[]]YY[YY[eiieɾkeTTLJJG@9,/>PRRPRRPPLJJRTacaa[]aa]_a_[Y]TT[TceiieØvrWJJC21,LNPRRPRPLJJRY[_]_Y]a_aa_][[W]aeiieƠaRLNJJC>424;CJRRTRRNPTRTVWV[aa__]a aceiieeTTYRRPIJRRTRNLRRVTTY[a__]aacaeie_VYY[YVTTGJRRTTRVWYVTTY]][Y_aaca__caeiie_YYVTTLCRTTRT]YYVTTWYVV[aa[TG]Yeieer_YYWTRCINRTT[YYVVTVVTTV[Yaaca]W]acceec趠kaVWWVWTTRRLPRRTRRTRTTWYYVTTVTTV[aaea[_aeaacnk[YYVYYTTPJJRRTY_YTTVYaa]W__Vace_aa]aƶv[WYY[YVPJJPRRT]]Y_YT TY]aa_TRCRRT_aTW_a__ñnYVYVYYTRLJPRRV[[WWT TV_aJRNTRRTWYTTWa[_ɤi[YYVY[YTTLPR RT[[YTVTRTTVTNLJGGRT]WW_a_Ɍa[YY]TRPR R[a][[WT TIG>AC@RRW]_]]_[ξr]YY][_TR RTaaTTRTTLGC;7E64<1,CRTV[W]aacƹna][]]aVRRTRRTaa_[YTRTTRTTRE1A+/.;YV[[Yaeccήzea]_]__[RRTRWYaa]_]YYTTRTNI;C;,);Rc]aaceecξzve]]_]TPRRTRTT_aa_]__aaTRTRRNG>46>),9YceaccecΘka_]]__]TJJRTTRTWY[_a_a[]Y__WTRRPL44N>>4Vaeiicceceƻaa[]]RJ>YYWTRTY]_aa_a]]aaYWTRRJCGC6LNRWaiiecceceƹa]]RGC_]YY]TTY_aa_Y_a_Ya]aYRRPLN>CIJRLRTaiieacceceƹ}a]][JNaaYYaWT]aa[T]a_]aa]TRLRJCCJRGTPTeiieeccecΏpa_]]VJaaYWaa]YY[_aa_YRNPLGRRINICN][ceeccecƶa_[[]Raa_aTVTaaYTPLLPRRJLVPa[[aceccÝxa[[Y[]][Raa_aaRT]_YYRGNNPPRRPP[][YYaccaccace]_][]]VPJRaa_aa_TRYaTRRIGNPPNRRP[Raa[Vaacaac}e]][[][RGRJRaa_][[YTRRN[WRRPNRPRRT]ac]]aaccaaƻgYY][][]VTGCJR][[YWTTPPRPRPRPNNRRPPRacacaa_a_aa[YY[TTW,[ >RCVWW[WWLCCRcaRGTRYVT[a]a_TCAN_]YJ_eeiɶpk[]T9, ITa_TCATTcYR_aa].<[Y__[Jaee iɹk]_[TR] &CRRJJ,Caa[CN[]aTRN9%##.,"CCNNaaCR.CTG aee iƘt][[Ya, <%.) # ..;P>]aT.GC1aeegiizVYTa[C/+;%)1# .,94Y_LaaJJTecee iTRR[aGV% @12@,/.1 (29P[T_CJTYae ei[RLT]WRN(@A>2,, ,><,P[VRLCTR_ae eiƴRRNN;@%1<, ,2CG9JJ@JA<9CJeeinΑcaNRJ#% ,,.44;;>>A<@;;54HX:K\V9>%(  ⭬\0:;"74%?GLQ\f;% 䭯J$%3GKmnrp%  ⪬-!1>9on^XD  䯭V)(1$$-8CgNj91& ڭK- -78aqdQF"! Bީqo( "$Q49XjdXG Gج=4%,R37GYmjmG" 㧤[,-/09:=Q_jecB  #ުVG4435:54BKfec#  .ީwH43;.37;;@^Y@  (塪|j/+%%!52BDRH-'   ۣme;,! 32239@4"  r椣x_\@"15;233>>   =LnNQQ5598891/  BF558257988:;'' z𭬩U0204(55879780  $ad𭬫\75240055977;7   |C:550)033277;:  OЯa;47452$%/1.21("  ޭaG:4053."$./0)   #语yje5/42%'")'   ~魬XDB?00+%+(+,    㲿ůQNBS,$/+$%   D寭ūKUV043'$%#    DﯿDD?427('%% 0詣ĿR91-42( &(%%  Bݫ=B"-00((+))% #uo')-$$,,H=+%%    {ۤc|4""1GQG&    D}౯qOBC7'',7:3      DyۭB%)(';=       r߬ūD:")! 8;&      jۯk;:$)'44     %㫦S;)283"""RH"      t ڰXg?;9,-%%&9     (/񳱱jN98494''%     Rj{XC8252#22     8K媙SCB2.2 %     "[浶957.+.      "Dఱyg44+'%   4   :쯣{FdH' ,   "G߭xR@K   [ȳwG(   {sﯷ=, |{ȱQ% $#sȱt_?  $#{践xr?   (?󼸸wVQ/   'f豺o? /0    $糁,0  !,üV^   ) K[U  % &caa__]]Y_YTWW[_aTaN  L)Lee[a_[Y][[_YWT[a [ee_]aW[[]WWTRTG eeccee]aa[W][][[WT[]WYR@4  Teecceca__a[_VTWTTYV[R [acceieec__]_]VTYTTW[YN _aacceceea]__]YTY]TV_6  ]acceceeccaa_a__YTaT[W> Vaac egieeceecceca_a__ae]_[7 aceiecea_a_aaG@aac eiececaa_a>@]aacc eiecacacW6 J[aacceieiigeeccaceeg,   J_aaceieigeececcaa]aeceeC #_aaceieiigeecaa]cece  ]aaceieiiececaa_YT[eeigJ Taacegieeiiecaa_[PPaeaR  W_acceieiieaccaa_]VWTWceT966aaceigiie_aa]YTR[[caa<+ Lacceieiiee]_a][[TTWaYWa]T#  [acceeieiee[]_a_]YTWTTWa];,EVaceeiieeieY_aa]WRRP]YT.,.T_ieeiieeieie[a]aa_TTRNTN>761T_ciieieeigeeacaaTTRTRTC.7RgiieieiieeiecaW[VTYTTL>/ (JRaeeieigieece_YWTRc[TG9C;Lceeieiececa[[_]]_;#7eeieieiiecceca__eeV2NeiikiikieccecaYei aeeiieeiikiecceieea]e_, Veeniieinkikececeecaa()![eeiieeinnkikeceecec"_eiieekeceegca!"[_ekeceeinkiiceeceekegI!Jaeeceeikkikcceccecea_I7 /eeieikcceae2+ rnieeiiniiece](@Yeegiikiikpieec*]cigkknnkkinriiee]C*NaeeinppnnpriigeeYCA)NacennrnrigieT<(WaceknnrrpprriieR )aenprprprriic]))Lceninpprniien[R&&/eiennpietTC9$AJaeiknnpiktvniaN6#>RTVaenknnpninvnrnnL"NTR[]_eeinntpn}vxt9"VY[[]aceinnv}vvxR#G[[]enknnix}}}[<9 " T[[]acknnkkinievpT %C[[]akeiie}n &7P[]__aiikeeiiee}}C(#W]aaciineeiieet;9(ARcaeiiekiienkiݐne6/GnggeYQH5./14HRYsm 窞xrwqk^RC./++5;FVaݯuuwoomN;4+10/))Ha ޯwwvyqhK92.+(1-'@LⱯzvg^?.,.,%+-%Kc uvmkj^Y320'$ )+2d| ۭ~mmhdL;0(!" "Bg߭rpljQ9.&!!4=Xlf 򭩥rmjfYO23 .0Qa\䭯ldfU@8) 'RaqYd 㱲jUK?)(""#&%K[[u}|k^ 챯hHB,+%"%%(>Rqryl 河_@5("1%%-'FU^su KK0.4'(('J?Xmms xV30,.','-C_ngo~  kU,=&/$)9Racfw} 볰ea;'.),;KY^jw yma(Q;7BKCKgly 򶵷YD>@>@@BLfy貱KNC@==@@BchLLJ@@Cc_QLDC@BDDK񪧩sNFCCBF@C:򪦤OQDCCB@8@񧦧_QFGCCB: 򰯳rB@;=83񱲵K@;@;4򲳶QG>>?4^K>=;;U@;74 c@;9RCF p^G YUXX ^U nU쯰or             eccekgecca[__V,%# 9Peeccenkeeccaa]L11 .##  ,2%    eccecceca_G24.)/ ceececcaR949 >6+ %  cceeca@@ECC;74.%)  eeceiee[GJE@@9;7&/   eec eieW[TCC;><2  G eec eieREC@9..  +JNCRG> eec e i]JA//  )LTTP>## eececeeieiie_aI%  +9PTTW#>,Jeecc eieiega/  19PRRWTAY  ec c eceieiiknpptnI, # c c eceeiieinrtn. c ceiecinpttV  c cegie eceeikptrtt, c ceieeceeikikppttng2 ieec ceceekikinrtte7iee cegnrptrk[4+iiecceiekikienpcca].iiececeececaaeieeieieeieceecV iececa]_aa_]aacieceeieececeea&ieca]Y[__a][]_aecceececec[ieeiieeca]WTYY[[a]Y[aeccecececIieeiiecca_YWY[[]]_]__ceeccecceceaEiecca_]]__[_a]]acac ceceegene]>ieccacaa_]__]__aa_aaceikppnea>iecaa][__aa_aaceknrrpeJigeeccaa_]a_aaceceekrrpeiececaa_aaceceenprr;ieca a_aaceinprrgRiecaceinpprpprrpkJiec acenpprpnnrrnR kiiec aceienppnnrpriJkiikiieeccacacceknnppnnpnpnntnInnieecca cececeeknrnkknRprrnkecca ceceegkeeknknnkinikpJ rrpkeccaceceeceeiegiiknkigknkgkkiinniieI rrpkeccacceceeigikknnkkiieeikiiWrrpneccacceieekkigiinnikieeieCrrpnnkec ceieikiniiknkikgeeiarrnkec ceigiigiknkkikiigeegiirpnnkkiec ceigiikikiigee ipnkkiee ceieiik ieieiinkiikiiec ceiegiikiigeegiieeieeinkieececceieieeikie ec e iegeeikie ec ei eieeiieiegeeiieiieieiegeiigi ieieeiegieiigiieiengegeeieieienpeieeiieieikieniinpnkieiieiieinii{eea?51*)/45?5jjsl^\񖈊uc^L,+'$!(135ACAnn}r^aylj^?&!!!$!)945CACQysjjpceMF'*.015:69GQ^rljj{UL3*.(!$+1.004DRT{rhecppZMID!(.15544Ms{u{{uujg{u^LG!) +4556Agw}su}yΩnTG5/!  1<::45Tl}}}WYL6//  &56ZD?6^}}{wy{_MFG61)  00JQGRj{l{{^LD?0+,(  .:@OQJr{upwyZ@30.)! 9?FTYclrpyrjc8"%&'+/,.9@Kqrrjwqjj[VUUqhcpD=("% #'%&&)7BCmojhrmjc[SQO~ywlYYH>:7 %'++))>\cnvk^ccj^^UR}||ppyyyyoc^K=9!  #)++,4R_mnjgd\^ejdfafqhljl|ΒsmeXC9+%  '0//)+CVqnljmndjjmljwlhlddovrlfFG=,%%  +,H72,Kdssnnuwqr{qksukdc_acqynjL>89,'!  &&;@9BUy|~uq|~yyzlvw{hcVcchs~xK=72&#$   %/3?@;[~}{~{y~y~|slu}mc^Y_allw|tqH3(&%!   .28CGOmy{zz~{{~|n}kV[Ya[UlwwO0%$ 1155;CVclmvwyz{z|~~vy}[SYRY_Vqfs9)#"&.358J^aukosy~~~zny[^QVYUpqnm1!! )7:Vqqty{{y~|qocm^QQ_qf^jwpD" 2:Vqru{{y|~yqYckQKQQNU\aacyH/+'+)mqrsy{~{~~y|~qcX\QKNQNQVcjky3% (%,nrry{~~փwjsfcYRcOONKLQQXjjyzx"'Hc{z{{~yqaNS^YXUURU\LQQUXjw}y\9 "%8Kcyy{{z|xn3=BDUU_^lst_mX\cy~zz( ",;CK_vzyvrypp"/@RUUwqsujjc^^j~~,#1==BFLwmHfnYG8(,(QUqrhl_a\jv~xz~X%%  8;2;40BdH@C95,4=R~jejdv~{zz||}s+%!%% #(..++%,:-/>=2+7@GӃusrx~~srus{s}~s0$#! %&$ %,,+(,//.+,(010Dyr{trov||a($ "! % "',,)+,../4411/'~z{{rqqv{{S/'&"#!%"!"#+.0,,+.//.10+&'{~yu}zyzz|㌄w3/99&1-" 2+0%!!./..++1792+(.-(uzwvr{獆mm9?VXC4% &'..,..+.794%)%%.$uusw{~zy~\^^YX@ #%+.+,,.,57?9&&'&%%duy{}{~ff_^Y\C&&#!%%'%+)+)+..4779%&&%%\qzyzy}}։qkcX^\Q5+$$# &'(0'+2245:;0)%%+Vjnsuyyzyromf\^[H;4&% $ "&%)..4398-+'+$%'+Vfhhwyw{||w{nmsremfdcYQ4,$" !! )'..48(2&%"&%'/.9_erwswvwwswwzzessmmlnkdXYD@/$ '/3/%%#&)(VB.,8_ejgsqurqo{}y|}{mjefnqolmmj^^R;!"%'00=3(02+-9V1+0(KQc^ff^of~jfecnfejjcjnpmnlc__\N3')?9BB,%.'V3).,4GLL[[VhVlmkahfj_ffjh_cgpe^__\8J'$2>N40'&),42=/'(;K>RSRUVfmcef[j_cf^YK^^caYUJN" #$-'9>Rc;L.94:UB.BCCBLKURUUK^pqjccdj>XhdRU45" "+/3K^^/);.'FFKRKLFRKLQVVUHmglggfcjjYKVKH4, &.1;RV\42..+GLURHLNUUKVVUKUajjfjjH>G2,  ()/'72'7)!#$QRUQUNNUUVURVHRRljjlhfgjU;%" "'++0)):,$ "QORKKQUUVUUSHQ7N_NdmVYU_af=(  $%$%.'./K5UKJK@RQURUUSQ@925@K__ll^jeXf""  +/./2215,'+RKQQJRRUURUQLD>115=RN_jjcafBB% '+02234.02 YQQRURURJK200KaNRRmmo_UX; .)/2121042( [UOKQQCQUONHD,+0HGKRRusrqhUO7 )+)-.112230  VRRQQKK>KRL;00//4>RVssrY@9" '+)).//0257 jUUQQK@3CBK=9//01=QsrssojeN- (&+,/+/552%(dUQROK88@:F@C.0.5VqropdCQ   %++(00.%%9))rUUQOHC59@?@B0.00;\dcKS+/+    #%'(',+0(43%jUQ@B8954+.3.20048KL9!-&    %&& "$%$ 0,&VR899344.'.33/018J=0;@   "'&%!)(%1G[:32550//,.1/057C=:%)   '$%""(/H:4773/1.,..;BCDB7     &$$%"%"G@37750.-.5;=JKKCB#       &(("3=3194040119;KKC%     !$"/:sl:8021013583CHK9     '."99:/rwB9.377:89::;?9,    '.00'"@GCcux7/899:99::9 ) ' +00"%@KU^hrK9;9::99:998   %+-%! /0110/8DHN\C:;;:99:93  !!%& '-11@C9:;:99592' %/00+,.0131247x<7CRRECPaRWT[ ;%% 741GGEECJTaccJT4+#&     .719;C7J_aecWT796.+%%#" .,/1,779eeceaaT%C1C,#&% #    #,,).+_e[_Taa]>A22+))%#   1 )#%%;LRIRCW[[>JC9)&(   ;GJI.CCV@E[C;9/%%  , /RR,.(CCP9C>7&&    9+.9JE<9974/   1%; +CE.N@99474<4,1%>    %%441,264E>LL9  "  %1.1,)47LRRT44 #   /4.449CPRRJR.   ),49E<>9PJC #% 4/92@;C;9.   %   &449>C97" %  %%79@GN66#% %# .26@GE# %%#&1.424# ).+%  %&,1121,#$  % & %%,11,/$.+44%#"%.11/%$ ++4.((+11%/1//1(#.&&%/11.)(1/1,/% $ ,,.#+,11// +,,/,.# ,4%,&.11,/1,, (,% # %+ ++,1,11/,"&++ !%"/,1// ,,)"%,.//+%" "  ++ &    * .7 1778779 : 8% $(  'T<eC;kW;kiT:ikik.9ipng9kikpnR7kinpp5#ikprrW4#>Wiknrrp2";[[iirr1/GRP_cikpttr/6 J[aaR_anprrttN-7[[]_eT_a\^\lsce\n^Y@JQOGGLL?C?011:A*   gU^nr^Ugc^^LQQGC<4??9/41)    ep_ruurTaje^@QQIJAI11551"  !jrculuwZ^^TJQQLDF595515@5  jes{wshYWYQTMI99<:4355      !$lpuy{s{y\WTTWRG=:..0/)(++   VgY^ac\hcaJFCCFB9105/.''   "ccn\ffdcfccKFCDH@0/352'$       kysccfccmc[QF;;H8./4+     !jyys^ccdhdc\XKCB920.0+&       Y}yyqaffk^c^[VHL84()11/     Bց~sqymkcc^f[RUK(%..%"    zsfqdacc^YUOL;20'.'%$    huON၀ywmqjf_cX^KHDHH00%&%$%    yvrmncQUSUD998G8,+-+      ~qyo_kV^YUU\OG+>C92.+/     kofYV^VUVUKQUD@?/./..&'       &ij_YVYUVUVVQ\KHKG9.&.,.  !(?>9:'K %(B"9nƭUVVYVNRRU^\VDGD.+1'.21 0F^^[LQSja'NDyl~UVUUOKKQOUQQ870)(1.+.'& $8KccXaahlmjmjj{zUURROKKJ2D9@9'#(')(%FV_f[ffmqw~RRQKKJ59;2/)(''# OUfYYdffmlwճRQLHKDGJJ@:9..)%%"" !"2BecdYUddmjOOLCCBGDF@2.,++'" "$(+KV_ULYa^jmladcdmNNFD@8DCB.+/+)'# ".9CDLKHFG_^_jaLKYUdKjjkyxhD89B1=@@D++('"!9:BCCK>=K^V_1YQUUBY9K^1Q(&&)[\m+23&&2399((++' 998:@@=,2F@=%CH 24?QSS09" (59@QDC+..''/@9'(+(')+'  )9829?0+.:;2(%/2H7KLH""U.%4,7=BR(()+'?(/)''%'&# +8291,'$.%(00QCC$(5C.09,LYQn%$%)&%'+'&''%% #$21.);!"& 0%@'%9./%"/GNejw'%%'.(&'('&%    1 ;42%%! %,$,F0#5SvJah)(+'&''&(&%($  +#,?K(9"3)9',?HlmF^{),(2$%''$'+" +$4-(;F=;B.!0U!=_K@C89HprmVq/.%'"# ( ((,01/%5HHQRDS\V=?B@f@=RmlnRKFH^sww-%""   !-14HG=95Y&=s_Y^_y}rkXUjjkm|~jenefv|0>"  )=BV_\yhmjmzy}}~d[mnaf~qz}:N( # "!.>jm}wv|sz|HL),(%%Da썉NK %(C93Ucy𜫳4%  &(:! .08jkﵷ  (-4f   (-9av  @m@l򩧬   +    _𭳵  Ss (m  GY鸺#?볷-"Fr,1@'}¿[^Bjz㵳OYaY OJc UYs gr¿ 񭯯½󶷶D|=6]4Jn 3[n1Vnn2inn 17@nn  -+;ninn  -VJieii  *,@_[_cceeie % *@CTc_aeei  +&ACeecceenneg .,ICWaeenkge0 ,[cceeceknn'"7]eeceknn%>Laeeceknp! >]eececeipn ,>a_eecnpnn+4I]ceececeknnp'.2+)IR[Raeeiknn(>C]ng_e:NJ7 ;:98  C- 9<!#  .Rp CC% 4&  )"/epx & 911<[CJTR,<>@@;&&>29Jitt,+ ++1,>CC>ICJJ[YT]L7I;@CC;2)AJTTaxx46244/44A>;;CACRaeecaekgpinnppn][[RT]rpttppnnxx,C.CACCTRR[W_cieecepnrnpkrrttngnnpttnnpnv}..CCEGJPRkea_]_geegenrnrnppttrpttv}z/JT_YPNTnntgcneeieknkknpnrrtvrv}z}xz /Raee[Yaerzxtnknkknntrrtvttx}}}} ;CTaaiieg_cepxzztgvtprrnkpntrttrnrttvtvx /[aanniieknzztvzvttrprrtrrttvtvv} acnpnikiknv}}v}}ttvttrtv aacepnnikkntxzzvtvtxpvvtrtpttvx} [aacinpnknntz}xttprrvtxttrprttvx ,accepnnknnkptzzvxnnvnntrvrnnrrtvtvv.Taccgnpnnkkntx}zxxptnnknrtnknrtvvz4NYecceeknnkpvzxxvrpprnpprnxtvvxz4C[aceeceknppnnptvzxtvrrtrppnvpvxzvz}C>_aaceccinnpnpprtvtrpptrrnrpvx}v}}}6e__aacceieieknpprrtpprpv}}} ,ceccekniennprrpnrnnpnrrt}zz}zx 1_cceinnprrpnpnnprprrv}  RWeccecceiknnpprpnprpnprrptx}N,J_cececceinnppnpnrrprrnpprrppt}}}}[][aceecenpnpprtrrprpnpnvz}xz}}a_acceeceiknrrprrttrrprrprv}zxz}}}}z}aaecgpkknprrt rtxx}}xz}}}z}ceceeiprrknprrtrttrtrtv}}cecceiknrrprtrtrtz}ceiknnprrprttrtrtrrtvtptx1.RG_^aYJG(F+6ZQ84aŭy{\DeUW?!$%3Lanw$;:\^wynypnnjsy;  ""(90.:9D\^_zyrwpnqnq~"   DQ0..KUD[XBddjnpprvwxJ .+;4NS=Ya^K^qnqwyyn~󭯲}CB "!!"$1/99Y[aKjKjryzwtyФm\(('''("$ #-01s9@@U(=wyyx~qȞe.% "022(9() !""..(0..24,.K9Ds~zεjO1%,;447"@KDK)0#"3.(200=+'0;Qdyұmfdw9Bg\^BKURRO?;G-712348==00?BV~~}qtyx~yyjVVURJBBKH9>87F:CFSJCCmfwtvwm[YVLCCLC9:hcesyfY_jy{︻|y|DDGQOO;BDeg|~mtjmwﺻvVQXYQOKQdy}{ЙsyrQuwpק񵷸漽󲵸󼽭𺲲󸺻黷󻼽񼺷𺸷 񼵳         񺻼 󻸸󼽽ﺻ &@" ##,   z    WC   aL_ ]&   (.nn]CT g}   ,CJ4nn_R2,]vc& .6R_>nnc2([zre#  9>C]Tnvttpnne  %#+# ++.CTTeknxttvvnn%   %C+%Nettrvtvxtzenni;#  ,47<,,[pzzxvrpttveennVT  %29CPckntvvxtrxzvieekkn1 % PWeinktvtxvxzzeceka IeektnntvttvzzieeTC T[nnknnprpxxzzkeeJ2 ,%9ainkpnpnkptpvzzpegea<9&&()%>RntnnpnkkpttvzznieN9.&E]vnnpnrttxvzxnnecW9  . %@ivzxnnknnppnptptxxvzpec]N.#//.,&+ >Jtx}tnkinnpttrpttvzziaa[>> +./2,,%" 6Gcpzxpkknnrttxz[aaR@9@>TRA44.22;44%>#% NJTttpvtnnprrttvzCR74NV[A_]]N44776ACA<<4 RC24C+%%>TVeinnvrpprtvxz} <>[aa_aaYTN>CAEEL]acn_TT;A)(T]N_aRC2R[eknnrpnprprrptvxvvtvz}7T_aacacitae_}}}zna[caaTkvtpnptrprrprrprvvtvxzx._]aacpin}v}}}vkiccaccaccexxvttvvtrprrprttrtvxz}VTaaccekkpv}}zpeccenxxttrvxvtrrtvttx}}Vaaeknpn}tncctxxtvvxvrrtvtvz}}[aaeknpnx}xneccentvxxvtrprrtvz}[_aeeinnt}z}xpiecckpvrxzxvttrtrrtv}}cnkentxvxz}xkkececceikptzzvvxtrprrvz}pvnttxx}}z}rnkeieetvtxxvxzztrrprrv}rzzvxxzztinknkceggptxzz}zzxrrx}zxz}z}xnniieentx}}z}}xtrtvv}zx}}}z}vgeeceettz}}xzxz}}zxzxxv}}}xtkecekinpx}}}}z}}z}}zzxxt}}vpkiinkiitx}z}}zzzxx}}xvtkeenkin}}}z}zxvz}} xninknn}}xz}}}}pnnpttrzz}xrzx}}}vvttxxzxz}}}zvxxz} }zxzxxzz}}z}z z }zz}}}z} }z}}zz}  }zz}}zzz}} zz}}}zz}} }zz}zz}zz}zz}z}}zz}}}}}}zz}}}zz}}}}z}zz}z}z}}}z} }}}}z}}z}}}}}}zz}}}z}z}zz}x}}x}}z}}z}zz}zzxz}zxz}z}}z}} zxzvvxxvzxz}z}}}}}zxzxxzxxvx}v}}nv}}}}z}}}}zxzvxxzvvtrp}tn}z}}z}zzxvxvvtt}zv_{QFC**Ml'c̼RU$\LA !!!93%/3:@l^?/*}QRG̴?*%*<($!"!63&M14grllζQ(=C /&<*%'l}yRFAG"(+*' hſɾϱs\TUl : "6'/*) ! ^ļя^^L==!'0/&,'  TYżٹlppJ/!&ÝrGL04! sиM1.1  UĿÞ\/'+:JL< LIJUJ=!"G= Ըl"="? ůIlY3!!!!žT{=?/))8%!'!U¼{ec??"=rjl49)*&żh99=euyly?cř^D!eγ}ܰsǤ\$ IʽuűƸW(!&{u۵8*<$!LuuTŸźr^Z*5Dŵ{uu=<<ſ_e^aŸ}wR4'żlpw{wwsOy¸yľyrjln{ſ}}jjusyͳƿyppjjna}ҫɿ{{lpjegee<Ρʼ{llj^^ηɿ{lnplgeyŵ̿p{npu}wsƷjw{}\{􇒇ȷ{{}rƥ}}{s ά Ŀĺ븽ú̽Ļųr幯?QůĿ^{RrǷĬZQƸQGLZõ?3C?Z U9*+lź콼Ü^Y,*!% ľe*/ w žT* .񻾿 ȼ1  /jl Ž!  /lƾ    þ)  򼺺ÿ )3! M!\˼a!Rúìwȥc5*M¿̸ec@85"">VeOz|tBDJ=s4 .(%(/  3VseK2%"d@B9wzz}{2""0 ,(>')  Rhs[VVm~sz|{~yp@ 15%0"  Vy~wdaowB849  #" Sz~e\JCDV /,%"! KyvmKK=11&%$ CGzͥtVYY;%  ~⻱}u~~t[9=&) \Фvt}v>'%' Dò~zJ%#/;=0 =ķyD;j191   ~ԤVkonk12 {}zq:VmkG( ޻{}|v}lCtlkc12%!!- DzyrcpqQO221[UV).!"  ͽsnokqpqS..1hQ^taVa2  OwojnoohKutpnq7 Q󽻳wordܚ\g{J:htpjj^}F ˼ltcjnn^pywj-"0=̽e^jm^rC|k[KH"+7񻵳jcj^^j100e}LQKN佼od_fmkB)rr콷VhYἻx_c__mhl\?a~snaߵffja[UVXlcmfywoejddUU^\aomlarrYYUUXNdfĕw罼~sccVYUQRQQ0¿llgcVVUKKlo¿ijָmjcjVXYVRQanĿűμhjYcXY^d_\ĻŶfUg_fcdz~컽ŸwmfJcffnyn콿º쿽sjjccdjq[ļ꿵tthjddc\ļĽ ໼{wohhgfŽᯐ~|sjho½ ߲yz{|ysu𲦒~zy뤪𺱦|yyzļ~zyyƿJ~yyw~缺vy弯}~wzz峞t[jyw奙~~2@pjy䳙r|KcB[x{~鸰lH@lpẳs@9=H{Ŀѷxk2(52H ½mD."#V쪩ﱄKG$"g򶻺Ŀ żkQ"% _ ŽjC" %񧫬 f'%UV u %V 㿽Ľv  ~ 缸!  򩦦 黽}!  籸( | >JᲯNB໷m_պxO+">񻽸.>))R}[A/)>.7#<7.Y}LR]k>  6RJ<#WYPR,  @c_Y[T+RTPP9,; % 2TCJC@)&. ,R]aekntnaIvv_[T<,;  EC@77G+,+/pniknknpzttzk[C;61C7;N; <1%,nrntpnkktznppzxn[JC4eaCJ96VV6Ycnnpkkntvvnzzzi&TRaTE ][a"]ekttnknnptzxzeT[aaA2<ie ;aettvnnkntrtka[c>AC>9V%/.i("_antzpkkniikt}tkIC4976;G#"%%"_in}tpnpknknt}Tc_J7J,CR/,.%  (_ittnpnppvvzꆃnnCL6/,@  ciknnknntrtt}z}zn_IC6_eiikprvvz}}톃g[JT;,) 1 ]iikntxvvz}}xtn[IY;,, <  gkniiknrttz}}pncCRn   NY; A/% prrniknnrzz}}znJA>% aaECrr1CC7, JNnrrpikkikinnz}}߆tx]>#  ]JEL1nG7@pTC>C&/Ynprrpnkkiinz}}re]_; YnEGgNVVIJ7#RnrpnppnngiknpzzzneaL,7 , RJcinnTnW<Prptnknnpkiiknzzx}zpnN4, 1anirvxtnae)gnvttkekninnkiiknnzzx}}}zxvpnT2+& Npntn[  Tnttniekknnkpz}zz}}tvpe4,(Vz}gT Tvtzrpkeiinknninnp}}xx}}}ttk_RTte6 %GTxzvtvpegnknpnntrpp}}xnaT2 7tpzJ4)vvvrkennprpttr}z}paaA"kttz4, 6JNR[aYaivtz}}}z}}te6.% 7CJRYTT__knvv}}}z}} kaT,4LCNNRTVW_cknnrppzn}}kW9/. 1LRPRRT]_eipinnkiixzz}}}txiWC2,& GLPRRTY_ckpvxnkienx}}nxc[WC4,%.LPRRT[_nkknneci}}}t}]YW@/,%)LGRRTV][cceekecekn}}}}_}xkYTT>&,+ 91JPRTT]aeccepeccenr}}}e}}z}c]_];77,4GRYYaaceiekv}nJ}}pca[7/&&2/CT[_aacerzx}VC}}neeN> ,)1>R[]aacecenpnC}nka_.><9G[]]aackn}rRvgk>& .9C6CL[]]_ccecexnn}vvpTE%A>29AT__]aieekieentvxttiN&2NTCPR[_]aaeieiinpkv z}ztxeJinnW[[][]]acknnkntrx}xtti%ica__][[Y[akpprzxz }xpnk_P]][]_WYYWaainpvnz}z}}} }xtn_+_]T__WWY_aerzxzx}}xzz} zt[Y[[_[[W[Yacapczzxzxxzxzz} xn]][][]]RTWkkp_itvvxv} znnee>T[]][[Tarpgrnttvvxvvx} }vvni_)>@T__[WWTRepria_ttv vtz} zzneeTCT__[RPYWepptnvvtvvt}}ivxxztkecL1[a__W[Y]innptvzv vrtv}zz}}veneiirnke] 7]aa__[]aeinntvvxvvxvvtz}}keYTATRz[[e N[e_]__]]_eiepvzxvxxvxztxptvzz}}x}tiW11C@i>" @aa__aeecknx}}xxvx}}}xxr}zv}}z}}t2//CW %agaeenintv}xzxvv}}}zvz}}}T42ACT򜐏ly1&0 ,'+,.~~᯳}rrljjdoc_c;G?B09+.'~嵶surrqssvnjj[HC?LK>%䵿vsvssvvonfmKUV[^RC޵vsswvqqjf^f\^\\VK3񷻱රyvuwusjjac^\_^\XXKĻ۳squqc_ccecaa_YN>! ︺½ĽزvrqqaccfjY_ca^C, ƽ歁svvqmcjym^^\[YD0 ""# ĶмuvrvvmmwnchV\D2.+'"" ¼漸wuwuqnqllmfYN34'%"$ 긽ԺywwuswnayfhjB9''&%" ۻĽywussrsolz_fa[3'&%# ﺷwussurjf^^r\9'&'%$ vvssjmf^KD9'('%%  ٸ~uusussyqjcUR)''(&''" ywuussusrjB474(''./'%!ż{uuvvsvmsV73QC9'99/%#"̿vuvv{yuyfHHDKKV@H@2"˺vwvyzwwj\H@022F3('" 𷺻ӽvy{ywsrcH:72873++%!"ļv{ywsswnYBG;990-,"һ~z{ww~yrYUK4,) +% )ݷw{ynz~vyp_^N4(',ﵶwtyywov^[=/'!'޽yy~yytmo_G90)+ нzy~wzwmkgFB7//"0, ޼ywvjdDU@=)0%ܼ~yzhXQ@'#Ӽy{y~gV9",շyym7'%ϼywde2/ vmuv̻ywgK98" }Yc^\cu˸scK94 cc^_qU鿼ۈ_KKF7cmmqasΦwOKOH hoaorru񻼼֑~~ch\B sccqs~}wwyaK@ fcca|ٺwzw_KH% mcc~޺|ygfL7  mQ}s󼿻ᒐyseVGjĿ ʺzcK4.𺸺㤞dK=:9"ƺjwGDO:4Ŀ׻mr\KCJD@B~~yrs^LKHHKK-씗zn[d^KHRQBC߆rjU[dh\QVK?/Ŀ~~~}wydjjcSNRK@@1~~{y~~~yn\OK@>C:3Ľ|~yy~~r^NN@B1.~{y~z~yqyyh[YNLK@9.򽼻¿Ŀ|y~~큅~s~fa^[YVQQ3%罼Ŀyy~zuukk^^cX\FC3Ľ~wwyy{ohfwj\RUC&򺻼ysvwwyzjodccVQH̺vrsvvusuyz|yrcsjaKD#滸uqquqrwz{zz~~srjfjQɱvuvmrntvswwv{wwy~nrw4.ݽyusuurrowswrvwrjqw{yyo~sm,yvuvruruvssrwunwyyq~ymeV𷶵´wspsolvsvrrssrvyynfkw~ywej%  JNagiiegegkie7 @A , %IPeci iknk<6R;+,@9Ja[ekk ineV>) GC;+)]TLRTiikiikencT  xTC; ptpkgecg}txztnv}}zv}zvv}VL, prpkiecexxtvrnppvzv}}zzxvtacJ prnkgcctvtxtnnrvvtxz}}ttzxz4C  rpiieeirvtxpnrvxtt}vpzz}gz]%" rpiepinnrnpnnpxzz}}}}tz}zvvzGT#  trpkkpkpnantnnttv}zztvv}vz}}k[;  tprrnngeknknnpvxzxxvx}x[,#  trippnkknrrtxvv}}}xx}}rn% trtxpnkkntxvxz}}}z}}}tIvttrtrpnzxkkikkpptpxvx}}z}t]%% vttrrnkptrnkkrztvzz}vzz}rT;,) %)&xvtpk].Tngknkiiktv}z}}}x}}xt}piE,,)++ xtrpTJC1Tezknnkentvzz}}zx}ten4,,+&%% zpgN@/ %apktpnenrtv}r}x}}}ttk;,,)+))& vg%Ttvpttpntpx}}}zv}zx}znncL2,,()&&#pTvrvtknptrnz}v}zxtvxpkRc_C9/,.++,)"zT  Lnvpvpkprnktz}}}tt}vtnkc_TPCC441.,,+&z7 ;txttvpnnin}xxz}}}}tprniiWPWRN7764.#,+%;# Jzpvvnnekenvtvzxvxxz}}vxxpaT][RRJAA7662#", e% ]nv}}vkpntrnpvxvvz}ptnnTRNPRRLA<977+ #P @[ex}}vztzzvntvxvvxz}ni]NRJRTRN<<96;;C1% #R)Cet}}z}xtptvvx}zna_TG@WWPR@C<66>E>#%%NJ7}}xzxvtvv}zttNRWLETRRC967CCA&,%J@@([_xv vx}tnJNRRTTWTRTP97;@G@.%..>77C[}}vvxvxxz}}tC6APTRWYYTJ@9C;J9421 Jnzaxvvxzx}}}n4CRTRPPWYGGJCATRC,,%n}}xvvxzx}}N2P9GPA>T;&񈃆}xzz}xxznJ4794744;@><#+1 xvzzxtR4&244(.,#/ #􆌊}}vx冁x1+&#,+4%%"z}xv}䃊}pA&,#%,,#4, 폊}zx烁t<2#%#,, 2%/}}zv݃a74,&,)%& }zvzzzttz񊁁zznC41,,# &++}xtxv}ttpntr}vt>/,% %#%2}}zzxz}vtptxzz}}xvr; &%)/.%%,1 }xz}vpntntp}zz}zvttrR  # %7&  }zzxvtnpipkervvtvxxzvttr&%)74+}zvvpkieecaavttzzxzvttre    )2#,}zxpke_V]TRxxvtvztti ,") }}xzvtn[eTP@T[nzttvg   ֈ}x}xtrk_cTJP,6cnzzzvtN  zzxtrpR[C4.%)7kxztzzre   !$!$%$!" 4j!$$!($$($ WU$!!!(%((!!  0!!+.**  r!$!!$$,*/0& gn!$! !%+((! L $$%$$*/&) w$$%,.*/*&300(1.((3)$$'.59!' &()5*=$$=G!,<$!!+}$ $3p!&$_dz $$!!5 z    y      (2"     L/$%   .-,'  +^..+()  +a',+%%  d",'&   ,L(!   4   ^   U > "  5)"    K""  "a&    .GWa2r)Yp&YY)Y4c"/2ct9crt2VrttTntparttRVc6Pz}Jv@rJvRprvzzxE_c_tvx@znn_nn<v g ctz} a;z1np)iRcrx)nprr,p(k}arrccr2Ya[gk,ILcik"Pgiz2aev+1rnt})Pk} vVpzzR_gpxxR}xr znptGekkrJegnp9VnitNekin,eiiaeii+NekiipN_iikNReiipRekkn]nrnttVrrttpzztVtv}tv}W_czz7ennppzGrrzp}Ixz%ggCʼR:?.12219fs|| 򭬫ɺ­㤕f4242258=dsy~ ĵ癉K:??939:94vtz| ʳ⭩^H@?@:>78%Bryy~} ʯ⫬g^\?>9:;;."@jy|zz¯⩖^C?;:@;5+"+jwy|}ʽ婬R@@;951,++!/hjw֪үF271..++)%!&Oa|z󫯩˻B2../,+(+($+BUu 餉sжe/.++.+('-BQv~򫡄tnн⫣H//,++,-,)(&'h}߬jlҳw2/.,+,++&"%=ͫnslʳ8..,,1.('0..%3v橪gųJ..2-+()''2(s쬪omǷ򩧩v4..,./.)++5 ܭģv4.202)++)'4| ̫v;12/4+'&&%&(=K ͪϩ^Q59412%&"!''ft z~xuwƩ㫬\QKCB9;03;" [f:ͫo~{ƺNJF,;9:50(&OJ,zЬ~synzЭzrKH4B?C9-)4+xRy˟yqlmuҿsHHJBB0>9:4BOyK{毭ymqjjqġߣyQL9BK=209;GCOL|Vz|ͫyyzjjvzͭsKL:/KK=.)?@LRKU[erϩnnymmhry˫zQN:/KKC;./4)0qVajq|櫦vkqsmhwyĿ|ROOHKKJJ@;51$@YOeeqq誜nnqjmwyy룞cXVOKCJKJ@BB2"9K_Bqqsvymycuyyx[Y__aaY&+1677 %&449L[_aaccecai[]][a[  ,%,.CRaaceca]Taie[[__eaN   &+#1Eaacececcaccaa_e[TzaW[[cR # ))&1CVac caT,,%reWTRTRa]J #)%&,14Caaccacacaa_P%% _WRR_R&  ,,)&,27Naaccacaccaca_][VAA%nYRPPR_eT %&,,/9;P_accacca_]][T@. ûn_VPRTan[L ),,/244>Laaccacaa[][[T1(,+n}vR[[]_a_ %.4/2447CNaccaca][]]VV. (&tz[TT[Y[R +262.1+.GJ]a ac_TW[[TR/11.JR[NPRWT[e  ,)6.ARa a_[PJTRRC;>,NöTcPJTa[[W 24. ,;AENa a]R;AJ@CT2,4[VTW_acgJ 174244CEYa a_J;@,1þ[YY_aee 21..741G]aacac_JC/%9 ,þxTTW]WVWRL 4../6@ þg]][RJ +@@CLR[TaaE7;9NJn ^    !$$!%$$$*̿y8( !! !! !!&ƶ8,   &! ! &ǿu^"  !$"!!! cۦl^=  !+,!$'$   %gȯJC!! *+.,'&!"%%$ g{Ȧwj=!!!**!(()**$!,)&&*%'!  .:ȥeD.%!&*+*.+!'*)%!$!%!!$!! +5Ǽy=1!%*+*,+),+.!!$!$ 6yŞY)&!,*)++**!!""$!!"Şr!%**+*))%!!($!!!""Ju!6(*=((9'  mzmyv  %'=;?9;5;4H1,   z𡣤yy|9 '99@:B-0;,   ?yyn=  $)2:3.,F4.1,   #yn;    '$/+)&,("7(  Byj   ' '%"&%&1  ~t_RW@' Nceiiknna]R]@(L]_eiiknppP[LJI)'N]_eiiprra>6(L]_akiikrr4>)N__kkiknrtC )_ikkikptt4% *Rikkiinprt2   ( aeknkiiktr[(J_epniiknpn(41%7[ceeniieiikn(92$ TTceiniik #$/;Niinkkiikii(&>7$ )>TgppneiikiiC@>C7$4TeppkiikiiI+CJJ,$/[cppnnikkii_CC;J($&CPWgrrppnkieeii[AR7%,LRWapprpnkiegii9R$1JNV_aippniieii%%",GJWYTTiiei%#6JPVRRT[eieiikii%/JNPTPRRTcegiiknn #APRRTceiikikknpnn%LRPRRVciiknprpp$PRRPRTckiikknnrrpp$;NRRP[ikeeikknrrp $;NPRTPPRRYiieeieknprr $)RPRTPPRTciieiieknprr%TTRPRaekeeinprr            򱳲  򲵶  󲱲  ﵶ 󲳳   񵲳볲  knkntpprnniiegiikiikinknpprtrrprkiiegiikikiikiikiknpttpprttrkiigeeieiikiknnknpvxtrttrniikiigeeieiinkknnprvz}ttpnkiieieiknnpnnrppttvxttrttniikiikii eiknrtvx}ttnkiiei ikikieieiknpnrvx}rrttpniieiieeiknkiiegeeiknkknnrtz}rprtrniieiknnkkiiegeeieiigiikprx}nnpnnkiieiknnkkiieieieeieeinntv}iinikii eikikiikiieigeenrzzii egiikikkiinnkkiieeiegeeceentzzxiikiiegeiiknkkinnkieeikkigieeinpntiikii egiikniknpnkkiknnkiineieenni iei iknkinnpnninrrnnkikkinnkeeieiiknkiikiknnprrpniknrrpnnkiknnieeikiikiiknkiiknprrpnknrrpnnpnkppkieegiiknnki inpkknniigiinprpnrrprpknninkikppnpniiggiknnprprpnkknkiinkiniiknnprnigeeiknnpnprrprpnknniinkiinkkiiknknnpprpkgiginknnrrpnnprrpnprnkknkiikiinkinprrpkiinpnnpprprppknnpnnpprpnki inpniinprrpikknpnnpprpnprnkki inpprpnkknrpnkiinnpnpnnrrpnprrppkki iptnpnnrpnnkikknppnprrpnnkrpnpnnkiirprrtpnnrpknkiknnrrpprprrnknnpnnknniirtpnkprrnkkikknpprrttrrprpkinnkikk irtvzvpp rnknprttrrpnnkiiknkiiɠ_LIJIGGF3   /A64!09?==<=?=Cgʶ_LMLIIG1  $6+.!*49:==<==@GuͪeTTOJT<3    G?(!$!('5:<<=Aʨne^TZ^Y94  3?=::9' ,#%")./1101139^jQCC?;C0(   92  +/0014f鲱XQKCHKG.)    (2094&$.00115민a^VUUKK0)  "=299:0%#)/0015=𿽕c^^__[9-   0994/,&.0/.0011>_ڶddccdaa7    .92832/,00//1123>uhgff_F  "%282).)/0/.12B84Knkmjffa_UG$ $%'+.&"(//.0BFCUrۼnljjfaa^RL>-   %#%%"#$,-22BHNdy纻qoljjaa\VJC9+    !$%.137BKYeuyvqmc^^YK9;0    "$++24BSHRf㳷{yzyymc\a[:4%    !#%@GK|h}~{{zyfgfgcV(   $k񲱲{{zzwkggca"   찳|{{zywmkggfcD   m󱳵|{{zrnjhggfccU     ^𱷳~ynljjggca     ,_ѯyywmkjhffdc\    +-ywwrjhhfdYC  -ﯳ{yysnjghhdYY      F韖~ywwscfeaaBBG"    a{wwqUa^XX9@H%   4mϸywqljOXV;DB%  &qףxjjh\HD  0jﭠv^dd_>  $% %7үlY%"  $'& DwݸfB   /2    @Vk~nrrtxv+-T[]]aeetvxvxP->[]]aeeinezv}};*)T]]_aiiki}x}x7+C]__acgkke}}},+L]_]]_cikeic<+_]]_aeecr*T][]]_accececz;" CW]_aaiggee>"9Taaeigkne}}}# ">[_aaccenknnxzzx}n% !(R_]]aeecegnnrprxz}zt[1 !L[__a_ieccntprtvzzvr, CY__aeieeceenttne+).CWa__cekekeegrrkikea6, .2RT_aaekieegnrpkiie[,,<@J[_aacnkeeinppiigcN  ,7CT]aaitnekenprkieeP2   4;RT_aacetrrnnpttiieeP1,++ %.T[T]aacervtrtvvtieeY944 .P[aacenrttvttvviieea4(( %]aaceknrtvttvieL>(( Paacegprttvie]J7   aaceprttvttviieeaP4,   LaacenrttxviieR91%.)C]aacaacceeprttvxiicN<;17 ,2]aa_aceirttvxiie[J@@>729_aaccekprttvzziieaGAA@<+,4aaceegnprrt}z                    򱲳򱲲󺸺Ŀ 󱲲 ︷ 𷶳      ¿ cekpprnprrpnrttrttvz}ceknnprrprrnprrttrttxvt}ecennprrpnnr tzceenpr rnrtrttvz}ecekpr rnkknkknnrrtvxrx} ekr rpnkknprrttvxx}񁃁einrrprnknprrtvx}einnprrpnprrpnkkikknprrtvvxz}kiknpprnppnkiknrtvx}}nkprppnnikiknprrttxvxz}}znkgnnpnnkiikikknrppvvxx}}xvzzpnikinpnnkeikikknprnn}zxzz}xvxz}tpkgknnknieiikikknknxvvx}xvv}nnkinknnkneikikikkprt}}xzxvzz}nknknninnieeiikkikiikknnt}zxz}z}} nkikkeiikikiiknnpntv}}}pnikikkikiiknnpnnxv}}}rpnikknkknnkkiikknpnptpx}}rtrttrpnnknnknnrptptv}} }}tvtzxptrprptrrpprppnrttvtxz}} }tvv}z}xvtrttvrrtrnrtvvxxzz}} }x}z}xvttvttvtpnrxttxvzzz}zzzxxvttvttvxrtvzvvxzz} zz}xtvttvtvz}xxz}xzz}}zxvttvtrtvvzxxzz} zxzzvt tvzxxzzxzz} z}}}xxvttrntvtrtxzz}zz} }}xttvvtrttpnvtnptz}}z}zz}  ȨʶT 4 ŋO ŻF6 W?) ŶG!ųg_ƿž—e!Թl$̽.$ȿ}@&ȷŷA9 ݻ}:(̸пȩR%!Đ}u*ǫβȳa)׼ħRκ5pص)gyyG&9,wwמ^y 003wy ܿC\*ww ҿɲu$5ļ ϯnl3M UR_Q}򼽻 񼽽C Ŀz) 𺼺rh? 潼8,嶵F2! Ḽij9Ϻɵ}RLӸ~~QܻƥqVݺ¼»j%򻺺ijd3໺k4. ݧd/   ԳsrB ڻwd^"  ݺϵN! мʩ~fB ׽ۿ}|sx+   Yӽˠqvxt   !Ra׶}z}~a9   .$__ʆ||xtwKa    &&(_a λЬwwyrrw5   J"__ Ĭʸ|uoojx^    + khXfmV(    > ίleDllBL   @dyz}}z}zzxvxzzxxz}}tez}zz}z}}zzzzxvx}z}z}ne z}z}}z}zxxvvx}}z}zxt7}z}zz}}z}zzxx}xzzxz}zxP}z z}}zxxvvz}xzxxzV z}}zxvvx}xzxxrzzn}}z z}z}}xtrrtvtxvxvrnknY}z}tprpttncee[[e}z}z z}z}v}rxrvvtnP[ELVI}zxvxxzxzzxz}zz}}}}vtntvpienJE<zxvvxzxvx}}zzxz}}tkpp}pzvpaen_g}xxvvxzzxvttvv}zxxzxz}nkikx}pe[TcnV }}zvvxzxxtxvvttxtxxvz}]eaeezpe[4Re/xvvxzxxnnttrvprnxvvtaaTJacpncA7CE }xvvxzxxzxrknntrnrntvvttR[aeNTTexrnRR; }zvvxzxtrnknprtrrn}}YLCTJeWtzeCprc9/ xvxvvxvxz}}xpnpprrvnt}T+.>,TWnpaet9 }xxzxxzxv}}zvvptrnnpxttcRP+ ]cnvpnnk}zvz}}}zz}xtpvpnnvprr<2 IJJnptJz}}}z}}zptvptn[k622;R61>T.4}zzrƴNN1@+  폤rcJN%,抏(9ꃆzaA7A 茏ôavI,  ,k[nvz ꊠC;, zxx} ƴeeT) Wex}*$!%AþȄ.$uů1"!c !až ˿_r"ɳ!()(,c!39M_!,Igl+Mlrryp ^uwwuw Quyyw !5J^wwyyʿ AG^jywwy :pywy3urlpcypuluWuurls *4}snju1/y}su΀}̈́타͂ƿ򿝜ǟg"4ܼk% ^㿽' O ܼNl L[k漽hq g! $O𼽽(.>LjּŽ$:RVhkĻ #>V[[aYo𵽼 󼺼K^e__^_m シ@rj^aa_m ޻+;Kqo__aaeq򲳲 ᵸ49KUeaj__af 缺/Yjsjfaj_ae񳷳㼺(twqmj^[VYp滸 OwspojaY^V^Fssmmg^^[V\r 縷Ŀ"){wnjdf\XU^n'%avqnphhd\^j޸Ŀffspmmkffdp껽¿kgwrjmmjfwۼ¿hyvnmmlmqyĿ~wtnmmy귶uqtmnnmo󼻻¿򬅄zsttsseu轼ywmuunu{񸺻 R_gngeeiknknz}z}vvx}}z}i_JL99t 9Wxieeiinktz}zxzvxzz}}}vnC<;;?GVflhsrsqrmprolsnom 뼷rg_B?>;;?Qcaqqvusklqrkqsrrs.ҲjnK@>=>>?=@UYXgquuwuqrqwrqrrj  뼲ƱOJ@>?@@DCUVKJqtruusvwwuwfǻf@@>?@@DKHCLQ^jrqtwussuww2ʼVQB@?CKKRH;LLNnrmuwwsuuwwv ͼǿYQ?;@CKUHB@HK[hqrvwssutuuws9 ĿͿQ@?@@UKK@FFV\houwwyuusvws ĿོũƼ_QB@GO@J@DDGX_mqcwwuwyvj ӽĬм^:9;>B9DQGG^^mwamwswwswvvjY/}zxvvtrrkG2&#%%Rprvxzz7       郁txvtrrgC61+/7Can}  ㊃xxrtne[644.16Acn}[  txrpcJ41.(,)Cn}xR   }zvxtreJ61+, C)   )xzzvttx[G,., t  #%}zzvzvvkW.&W2   냁zvve94 ).[4  وxznk[IA)[}}/  z}vrxp]W>;._]zz][( xpzza[IEC )[Txetrcpt[J  }}vttrT_/  +TRRiegepra  }}}zz}tznn_[.GRR[[rRTR/ ؊ztzx}vveaJ     zk]aa.JNJ/4[["      }t[[__aL,.JIA&    kVRaen[nTLR4      }kVTaeiiNa+( 상xn[J]kzicL+(  탁tka[x}iTCA&  }tcta_]eg_)  ꃊ}x}te[nnte  }[}}zz  }a}zxI :  *!:ˌ0?!  '*85^Rw ,*!*hyŌZ8  *!!*rMh *!$! 0w_G$ *!1  :g w'g 5  ) )&&9(   .68(M^  '^QRTZTe  ^^T=JQJZ  3geQQRp  ^ee^IGR   pr_lAS  "&_L9 "' /R_R  +  ! !.  %,- >Ku  K@BCHCQ KKC1;@;Hs  (RQ@@BY KQQK:9Bp½  Y[LV409D| /aDBDF/>KQ K"@>KF99UD7991:79CV >jYY.KjHB;s );YjjKUOkX>BjJDQLz /BCJ^O~wƼ 19QCDͼ%22LLܼ'127NN߽3357NN㼫[ze7n7in,WekkVWkk/eeikkReeikk/RW[[kkRVW[[kNRY[[eeiVceiekkCceikkn[innp}ienzvv (];xJ#)r4k %A ]}_v a}x  %} (%%<} 1#+ 1}_CC!!Selection Mask   Ȉ Ȕ Ƞ Ȭ D H L P T X \ ` d h l p t x | ǀ DŽ Lj nj ǐ ǔ ǘ ǜ Ǡ Ǥ Ǩ Ǭ ǰ Ǵ Ǹ Ǽ       $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x | Ȁ ȄCC!!merkaartor-0.18.1/Icons/Merkaartor_splash.png000066400000000000000000004662101177067165300212400ustar00rootroot00000000000000PNG  IHDR,u]{sRGBbKGD pHYs  tIME $',S IDATxڌׯdYקUjgz)P9b@8 h "ƐΈMi?岲2+?{a'nVoVfqmַ(bXcPJalM1P9u]yaZSW˘ O>~.o x^@!e=0&zd4u]QW2\*3C(AA|LF=bN=02`M JQW9qgDUC)EUeJZ cd,0f9?ᘪOi727owƍ{]Teg?1 𡮡C5P`ݸ[+( & JÇ~._~kLQ HQ9EFzͿɔ$S_Z)t=烿>~c+ohw5NӏgX[kDGWx!+pfK~ox:ybThZK]TeFYH#¨GQ۬fSaL( ;x^A{ڍq/ɒA#NȒKykjbMޫܶ3g(asgZ>JUebL}F{>a4{ƭkuZ56Le͗u]bg63GkOY{s}t=,+Q:#͡57od !u]XY@x~@uPJ]uUnwp bLMsppDԦ&Me=D)E dR"Odb|4`OO_\<>6qJSlư')ֻǍk F1ўsUpv|tοweR)磵jq;$XSD=z PRK|1%Zx֐K=Uي{L.=X[ *u]PWasrVڗ0ҚfZl㮧d7b!](5u]\Ek0uE1Z 7_Th,܀݀+]Stn(}¨jqNuUf+VQ(- j<' EJLcb|S:OO>X- l`^eZ<| T2 |YӚ(=Ly"^?1$}ny┳˜<]ÜB I K8rKu rJA@^~a%E[owdYt K5^a1;Έu "YMʔ*c93\)o~|>g0 c*Kd*eʄ~@0BUVfRawh(E#'a/[v+tYΎ5eyZ%#s$pGˋ ^OS?x K~pyUUrr SMv!Wodf%iVQW#{b>;bp]<%֬S|ˌ Ȣ.|VۖH@ِ$K( ֙j]ag8aQsvYqvRţZ"ޕs۴_hּZڅF$ B!JBytE%Wnk8k, \v^ c}w"~k:h" 9ڵ|13]kww>ϟ=޽Lv<;vηp|5ZKi:sǏ1QE)`yϋZ9ڣ"yߤ?DU=4|2%{&a1ytcgqw@Fdْϙ^ǢH%%zr1% t{C|?Ęd0Մ1UUYc"e1(2 G{DQLܢbLx hesx_y ܦp (R֫*Y' .R>,#ej _{;7{MXtz0߹v3 k|e}ϻKU't;82S%: }nOW@+"{}e%eYPU%>H2ـ Y8&p>L6@xՍqkIRrN$@P_6hm92|RrO . g‡%e r @GaW(_h8 YU/y Ȟj#^y/`X˸hr^_z#b< y"Os:5CbI^X:OQTz M-kfeYB]$iIUj*)v:d"I2>~XQΰuWWј5Ne.f+Ne"m']$<; 8̹}7|Ms~EP9iyBWUr]LS.@i8ڕ p6 b).]pM]_fy@իBCC[6n]75`2x嵓L>oZW5S _ sKW;平L6D0P\6e>tx9 II^ϫ1"[rn8^J LSXRk</6 z,g܅%'Ls@׹Jǖ&([څEMTU A T O_7ΛA`\mSJ12=`CXkքa5xl3ٜE%)ƭ*8Yeu]ٔdp9˨BkŠ c$ SeY5-dӲ|% Ës8ܹN ^L^b}^\r5:!Zg"۸+UUS/NהeMXzM6R92!Or/0wJ7jfԛ x?v h6!xRޯl(^T^-hV,浾/{:(=,0YȂVW\?|rfT|,>tNY8=OYk]rAVZ_ ,ZPk .vל`ԓ5щ s۬y+Jɲzu-\܆wX6 '  c! ,emEYPm<,=:劓0i'+4֖j@q]\J[2 I&eޛouЅgE㌯j Aƽ(BV5ԔEIQdy:;UUPC+Պ(4 #°d]hqr*{0. T[,Yf8iBYuh32]*֩%5(EYWQzdZ1Y拒ź\߇b(5c"<=XX%8 X`k-V:N nip12°;*N$yx~xeyJ$|YHqe ˂B@Tp6FQɟVӄ{ {5 msY B`o6uv(smwPo8QɌ @jўOv_C°xxS>?'R?]P5Y{n&V6c'Zx'`CDJ`xjj+<7[a}K\kϦ2x.r8첤, 'TU)-x̖Ϋk"Ҽ|Zn(vBµ3~Z(ʼn)ݎVuš_q>P]+w,)*q N,!ZH"-`a4•m]U"K3OIӂ7 yReYs Ϗ {(85z{K&Ҽ"ɪM*.Ts Xj7v npl)ֹY^ @{!EyڈS=v{gTB.T,d sY/]O9~N8{~es}^>߻`g7h%,Э2x]вԆK6@M֌kõAN0Πq N؎<^ǭÀNwL\uR\Qe7̿x( *s֤k Y"u- UVm{{)|B8ϵIVdEC܍dV< `m32E??5X(,lJ'V{y?_0ki._6UU+4\%2e7᳧e mus9/HOóS"wF2xy)yJvDn]/}ʬyL^W2`e}KHokqk<"޸%BKE\fDP;63oEr ߓ7η?Qk%`1ho XmQv@2*3l&7ݍxAh?\ ㊢"7MFVw/j\d>1 tUՆ6 a|m}54cL+\y֫D8*xTj؇lJy7~ RO%Z%7`oځC|ΦosҎ8/}6R$_m(C_nGDxؕJa_#EX3[^*VΉjAnDZJRwskЉ%YՆR,V4W{rs"4 ZhtdYقX+F3 xWb17XD41RspzL7 \r>k5Dl~ eHw8x5}C^r.8L9Ħ.}pZmS~Qeܵ2[OK2/X;EbF Cyn$6R6V x,ވUwtz;Kjj^Wxc8g|4YKNno;R\ >^NJ~2)B),esSy)\߃CSOnN6a7r\֠֎+ۮ4.CٍL뫡|--҅cgHCZ5!6|Fc(=-z[m$9^Xm ƃ/V3i.4 85&岾9:2͟ )8Ɩөق4ݑ&僢*LU 㡦!ƹV5 |@E'tzm߀Og xýG{}.xΊVmFo"[!V0uagȢ1F齱d0_ h #3Mق}ɣm^.~mM5qnKE.v6I/2nu gSюlJUVȁx]2tȵҼͺ SIl`]RH f5s@&PuI h#rۉFq>Rܺ1jw*׍ 5r^0k7vz!`YS1$i PL ʭ%8oNd}g8W\>q\sᰤTqp}x"K2 "Y|pv>~$.snʄk*U']1G;@k?r;{֚Gl*`l$hSoyDrv>{\cH.fZ|{bIjY 떬.k񞞜\ 6DH\#A^4ޭ-ZM*}<B5R&Z0}qvZo, i% sUv]+ (FQ^@UQobl,-y$n@U?}aioUV'xo19ѳ+VWIi{1ܙ4ޅI͠d܂Ѹ5'K W6˰%nb֣-phKҠpU#Δ{ {cS~n2 X8ohP˺hþrnĊ7?'XڰN o$k}A̝!agxq؜RǬS;IV飂g'8z]' Ր:/؜-a kxA_C;cщdlO.Zplɫ9_^dzJ}ĦC26 OwKm<腥u*\mڅXYw@i%cF%QuɳT򔦪-g5T2}Qdg!I }~@eo,OOEׄM}lXq7ўO^]Rx~I'cH+~zo:vC"6Y$d?ьݱ]:Avx,*% JQwtcMU ayqVSՆy yLym Kv58]ՠnN( 7[J;l{`ͦ}uOӮ!V_Ô@vsNe_7Yɢ7n(wt=YIt2YA?t{]8s_k:_aѤIRSˏ?Y&m!ZP97b`!/6 }lzBU՛5H]w0a0\ B?ߑX颵&KWdwk8;_8w~g8d& +0UFdEkŔ/yrQ# j ٨.Whx$IߩЫMַiX7}(;˨UO ]7AOO<Z@lrZCvU."!d(킚ij>j4^WvEP:HTYҙ5 =@#YG,eY*adӂGmFCN9~G w$WUv% ^)n&/.dpÍÈwb,*ͳ#D0;;|~y0"bkEX+.//=9f0ْޯy~*#8,y n1Ʋ3;U]щ;x?XTk) 8E!ִW4Ϫ[ M;eҖXEzxmL$M=싐noA 'ƷRh;,R'^:jތٙL;= >AA{f q.rg_SWE^MaaQjKހV"tzxK?7S4Kcg{|WhΦӠ$QBo/wI?O6LBEJOZ# <1 "y9ëT{f??b5FFRS:uw"joJ󹝸زv&Y7onH&k='_miFÌlo@MQՖ#*R-hWrpW\͵t*R<,g4,/\}^ڰ3Ҕ%[ ^Gm%Ț_%'ܸV MX,h}r]ae4,3e)a{a{fb8 AOamsltpm;{0M;ߵp JQ9,Cfx2EsPAVH'f'?d:Zy\gՒpct’DQtm$+|vz-vwޚ3 ki-xQkBUQS|N 0f]/VMw/^~@]圜pqy! *5Bڎ~E UHf&1gjᩚd5Hzֆ8dy*)kO.'i}z|SZ76R#L0]H+EρtFd3ѓcS0 J3Jf UZsm s,lZ\DNCrHtjhoV YYɟ<6 mOtRljH/pV~{t!ט.嵽mэƁ 3w=͠L'3F\{gˣhFyno5SuexTe&i Ȉ6*Y޿GkduU\1AS+F]*#)7GŤt*l#CpZȃ9w7?9-%a xSIlmd&O<67EDZV-ʀ881i#͋`Sl7gh T4~%4D#a_Q;#Y[&D=Р+<#/3NNShkTƲ~b@}7(e"8PQ0[$)Q(1~0]שUe.ҼbwdQc4<{2uvos9n^)Vez-D]Įt"2{ܸ~Ύ,^oR zsK9+spnDhw,#I+Oѣ8זMܺ-EYr).reۋ!-bÛIk4=M3}M팓o647][E3A)(~3\?&aekI8qv'ScãծBHrX逺%/~D &EFwɲ)Y5Lv.YZ+ķi*EڗSPNwY;Y!޹#oz͋g 9~oI[I)`||pMfpіFյa\M׎6{!t4~H.^|r]sP Mmq؛JeiBg^>ǘC YYCԢ   /xw$$hʮ##|lצ3yX{}zfr윳ZNR#IBdyZiH)0LX^B^h>pqP+~> 0<;#ZK^*tbt8{3? k 2vvobztc[D̗4CKAf7^CaBdyْL zAwpuaG?Eh:(ȼLr7r|)qjEef煓>xݓ}"d] *ֳ=bmFX8CM p{GZQ0h|Ԥ {Ad;)8✯l#!-#ƴ$666݃Q5\> ) |i?P3*kE-š,EQ"[NQ ǚ0:!{n Ƚrg.<$ |n((q reFuC2dD-XqQnrn+ʑT9fP3?5agLc4 H|p%Ԓȟ֛5:1鈅0(+EQ'jf 'thpA 1xlg88GlKǸċ%N/*68ؖattdbf%>~@ ,K2'`\Ink>3wW7;R x#%pxױsVC;d"9Bla[݄l69Q5O> !*˗(QK(U IIOLQW|?F>by$Z>D }37fl\pvIx= {0Z)>9v(˚N:T{rǗxHgO F/.R͘XM#GnwQ.NNN׆.PZo'-`gnÀF]Wv7%4n7{ݻNsҘ"e`h)IxL"Si[I66\_KJ"! B%tD7yE,4c%i6Cz/1={Ǹ&o`cGLcPێ$R7H>ɒD !޽~Gyhaْ#NkG(tɱhWbs`0O d[#YVw]Bl5)rޠ6W:p_3E`ns,ɳK|$ NC}Ei)9!}EB@|^G+d99 IcA)đQR3<SC./g e? ~Qxy:ӧO{I* AUTDCi_}<%m=K!r>_{|LںZEjqqhĪXVjMx[K%'.[%loX,+lۻ(I0޾ LhkuULO4Z[ Mv7Yv_~)7Nz#NBK|(a43,z-[]A -CnA!+#de6ci֎PIR ggwUU(}No{;iR)a][]l?2_]@3Pl<ʐќ^\ 㙜}C?iVӺ]ۖCka%[o\X2F{sHAQ89O%thٳe!pؕ=KyW*Ig4k,= d,K^D=x"]]3 H&5ukxUPj- }-ЅVXh5)v> F&an`Ɓo&P6v*.ek0;qyrkFK Ͼfo`)V ĈR(j ^$3Wٌ1z1XYу=Q[~X%a.P"QWyYV_hL3w^G۟~L53Iςw@+E8[YG6kGB8,-[gKkFͽFj'F3 Wq54q1BFdVc Y/Zbjd;(&a_ GI,9F^0ڐe< kll hL%x\nn>  ǝ 5f2lV'hcQ@oX{(h|HE18?Yk1v4v+5fVJb3.[Ek=Ҵ.\Rie|X{m:GeZ{<CɴNcXVϜ gtNT!n$y"Mѓ cK>}=XyS?$4o6}?Z[HC abk7؁!dMu?d@pg uaš yЭ)[a9@Qt("b 7熕u5ء6 m c-xҦI:a,;Ӡz?WsnQ@]W^OP!%:IAرu'/> .Jkp82M+ ',. ~m#"g6Gߛ{_??pu$x˳XZ+n WakOJl lQD:CAJ4XtbEknj6ֵI>h\m^Z=vv *#{.`f[a x>ܻ`Ga I bıh # 7t6.Z'P7%moc-JȖ)l,ra$!DKOz.6n" ;Mdž͢)5(PpgK^% @*B{>*ǸvԕtcŲ@*ܺEoZ߱VN:ئ":xt%$F%skE69>@n Ϗlek'HW`h$Rbi?h]5JU 1k+ݑpQs#dCkYPR(g HZW9?0+Ÿa(΁eFN7Z4cDQŲ@/FdduBVzG_6v׿sO?bI/]ޟ6ΒcFC\w/q` E ::!۷G`N ~YU{_8\!Wʕ?)ZD5,^,RTt5 B3l7fil%?AL㢔NJ,B 'i)A PUU^$]!\f^8=@cBk]B@X*G~t:CyLL^OHY̖IQnTB{Q`}֥ig7oMzV-쌫M+&5 Ԛn#q5^d/q#wN T $_F~,+X?_-ܳߣԐ:`֍]tz;RxjU: @9^6fxvvF.g{$q5 @+mY{λe@h(]aƇ >&]8'nK`.h<qn$9yh2هCQaZޫEha:܁Z5HYR#RT4}uLtbkpXkǰl 3](41C'6pkԁ4~R<=SXUU EE_𰋦07 ʤ9NΗ@ (8()3wAGDzV:(i,(+{(vQ-b^.[Bot[*#PcZ]w"`cZZI˸Mlo :P7 9k n) kjVihZPFPXRe{^?07CwJ'\:KhKGC~]d9 mƒ<ܻ{oy Evɒh{F0)[=x=ŽLu%qqT> =4GmV6,ZUB:~a7vYQ:3w?qo+ЄeHޣ`U(-m!:ܑ ,6i2ۓ B:|{DU:X~]ཷx 6 L6k] QvD_4Bkؕ nMf)\G|@OR,kW䧓%nnb+gm<>ŴBЇzrbK,@ ='_|Haǚq*LP%D!TIۻ}9MGEll"qJχ 7J7rVB& Kj:z/N¨~!ZU~~R+0+N_)HCSzfg/J͈(,7J?6?s|ka>c0Nh(>Iz<mJ]gT,.Thm2k-ex C;΍ mfl_6G=(T.\"U7?i:,ޯE=FjuDžI)*hFi ) qH$ƝC`c@JUeP!F= /M0VrQYR ~؇Ob{uM@VO/gU#Bg1x.q19sZLM~SX6DtԵ|Y'OOh=Q䒴PӅS7nfx+> F8[mUmIxx(4dRz>–Miw?D V8G-c1=/a*׭ASuʭx:NSɆ%"Džt_+2+DcZˆ}CJT+i!@+Mn'B6͈ z\Xoī~4\'C2EL=T0wC䢆1)I6!)hy8Љ{{A7y`c9xppH%utPe#FU`f8J Nag)nH87WDCJS-o6s5٤DUѶDkBKEȜJZkxhM$\0,r OEK;ƐR nhArdIڊi`,f FhS#VNLI-4z 1&{7Hlذpv6j9$PqP:o\I‡>4~bl]1#5O񒂁{lƱPPGUU /1طL)Z;:V5RİrDf/.=8pHQ3UgB)^xqq~Eҗ)m>ےGjl *\,#-pz{^@^ x=r@ đ@8"5  .[w| ڜTMFrEr ]S~T!{L$t |ơnb =[9= }|ۭ}X`9"Ib KȤmV -wPkl5ybWOaIAN.AF{ .Ɩ+4t/J 3(g/lM}:3]sL'Ǹx^ݻNw6҇6rxIȞ+T1Hd*!E>G0:g#߽660T]BH<"ϦHvp;լ1W'N&vC`4*3=5dAy}G&n xcуeEX ۇR?( ,+L>C7U;xvZ!byJ36(_ep>psC%>)|ƛ`AmQ!Tj~X5T] ;(% Khh쵢:i2ϯkʎvZ+ek9P8w= 6ZchkN¸OI Yve2Rw}vJfm?_gxv.n}7L._XwNpyKM pz{ %3Y *TTi! bd0,k3֧7U@z,]87>*$qx ]H9|DJiZW_&k4.j_,ƭ;>>RhnaH{7'nn {to ~U/f=?s>'i+i.]-rEk"ana>}8w7Iڗmbr5F~$j#Y uV9nFv%|X[9(Fе]+ exh0<V gJkRnlG]U)LFs0nFkTun%2E|d4~Y2QH!aL*0OˇO{JiZzQߠ׋]T )|lG Q?bg?{CkOt1%0^ρNC|1?j0@ GDTAOQ9.rE Lc׍轴hPjXSrֆD*}A;:F߼-߽p|8y8|g]w F)=>-`2-5jQ,]bB$q( W r WٿȒHsveҗ1Loz~JZ4waA } _BܓSl}dEܼ6\A7fm͡MG;7ЪFYE@ 0w}^*ǧ~IL!Ю5R+|fР1ilm\Oů(Xά },g-mU!c~u3D753<|Opd))Brr<{X,J:X??į>?s<}P1P-洢no^'@5+|ُ$Gw.,F6 - 3\>~A4K TYIi3k[dORJȎitwl3S#nڰSŘM)7F6 CF.F6qкVK- =2t'VAW9^,1gK_U}?_o;Cu_<9G i~(-xawj'>yXN#!C<(wwQ eҜ6(JG st"煍ZωT^:r:7П>d)3]^B.+}@h#2Q p'ѺYU,+q93xqVaЍo+h̠( +,?GEk/ڛF3hfm6oƾw~XxH7AU8y9^<{hiA!ID } ϓXOOJ O Iz-k Opr^5Z/!_8JjNtUOщ!Ӣ.[ΧnڞqDiVpI'sqlzw|< X=|撅_\в \4* B'vs {: R# }u3@]KxuAk`R&&Qe5z# .gj2.\ SNxyjaUm65>Rܻ;G.V2 [1u]Sy'yAnUӹEp;J8F?Lj;8{&P&xdEj`?/SK\HZS7;g +ӏ 0z𛰪v7Ujvc[ bJU`gFQNΧxBY2/}hH Өջ>6kde.rpeA`Cܺ"xĔd,%SAlqUW9^8ӼRİWsEOg SA($>*`@2,Jbw0AғرT +bO3&֎ a˚^mTӆ:/?(q5+3D+T>1m1\Ya ܷˣwW]c^{AN`d^Yqd386| ?TeDV:̪LqqAhP j5 دMUAJ+L }w=CfvVh<~zvv(S QF(&  Y̗%ယ/T8xW E"1 F]B?뷗xU ,7U SR]ࣇrF7.;. 'WU-;=z@5jUp]uUg1t~N$Ho&KijS +4>oQVHFqzx?zP|:Ҭ°GEoH' SE1@UpppA %Qck_OڞG2_^>1By9u!M8h,RCtc-ƤG]ܕLfݟM nuN}< 0x!3n?Ia~6?!2E,@)hCvq$MXfoޢ>@۪3ܢ]诎F[d]tDk{ڲ^Q9zێ&6t7kw%m I R{QHٕ *L膾|Ald,M)0O3 ko:/M\tUya':{m(?z,3rVcJ1~/eLc{_qֈ~V:&)H{6d1s.Õ&\Jz'9|[!g}ٙ( muYgM܃Ť\R2'CqTq-3T5u?i ۘ+tzIj{D쌺&3*Uc5.g1$]N*%=lkM?c] 2 &)LlifRhI_qu528;۰xqe{Ra.PK~m>='x{Ӆ@TC-Œ4~ZU N*[DEt9<4cEE7<1ߣVm"Uno2NizP+助gG.#Mb}$Mre@!kDMlptw8ʍ+{eG7qe}EDd㼜nʬ l˫5=\8VE(0Rӯ\=9O/G)^DYfmx9)ga\xy+rOnb{okl pxBaO24{I7j;itɌq,BgS%v7u;0ėOjDIa1Ü0]cr?b֘r⊒xE1uZA{…8r?\y߶K梘v˝e+/ΎQZa 4}=Y 16ǻb,KQVԏ[,guUn73P,NdvgǛЎ~+׳גCl'Z.Pk@^崭_U^S^oĸu4ėO>ENF'%#N^qK]be(eA̕.WBº>;d8nW83J < $Z $/>{Io g&B7؅szJ)b4PM)@Z'뤤C%E/*;'่CBK),N2Q8wRR{x(Oq<;ffbcS]ihANoUU=̀0BaHq.h2-.,6n088I"2/ρ &Uב-Z',GMxCkʹp1-JPq%^%uUkzmX? TƑ惧l9s*Z|v6h|<"!Q&6߄V)Mop[|incI(7%>{\DPtEo&~9_v/S1J³'&xgs:>NcX +=Lfdޛ%`H[)`4| TamI̛PE1-fQXc\'@"5x`SY>FZc OYmWID7èO<=ۄS6Dķ" IDATiU >,cBȅ۴ aCEũqaw%Pۜ9{g6{v;3q7`N'Ǹr2C]טMcD{ otFrrpQdcR@h̀?:qڞm[ˀyhhȇJÔk?8vђtoa!w `{kx nze_~|O0{cl7Q|vTX=u __rv :0YHaN( X`,QW U,3(265Yd[[?@UMdb1G+ #~/p8BJՍwZbMыs b~%!N5u弴Ю DtRp[ww&))m7oZ@جj-:oҚw!ǀ{-Wjmfp,"^6l4}[;wMN]?G. )% T]?mJw3,xc|G4)+kZ!rF%䩤 8"w,[:|QZFq6:1H5_w`jB\@.791pqr>υPJ#B>0:cqaYZ76p>y ܿb8C+848п5Qdzdvj+G#^n;z*VA)Of2-{I"%~ۨ>0]8~vC,?]6߰Uģ,sl7ܾ}6WՐC/  iknmonD/`o9b_V̄ڈ0xnA;t;>?O1%ƭ=:UU<*bWk 2Gzk`um-=6i-Q$==xwy{wumhNDO#SA0JL8lB"N.-\m0(K2"l6-& .p?2\qoL'-`{jquUqkSjO{CmJ̗tȫq|ў0P%7.[JQl)m'LE t/h(E0,t;h:>MQblMp&SQ2;fRѢE@ $FW&=K!J^ JdU ~/VMNSmEzcAKIce_IhnV@U}۔~}ik{_`ލ>Ї8>$I-|7#=mƍ\hxяud,i.^zMgvK ~x4.1?cocY}vf>ƘQUYYd&-H4ւh\tgYbVUfFd>oiq̮{Y$"#<=5;;05vdK.Q9j!Ba58Epτ^HI ax;WXh4ɾNͦaɶjkb(fKw kzomVvS![6kWU> /nGu_w&M\* -YBUhYEUS,h;!jC\]C]\`]9vFE /߬1z _a0ȳ,a݆ך6 kG3?|fVbn!ĤLN u,y91_,q|&0eH~ $2-xaa3,bմl򎗢l7li[ ^Щ;jP%XFdwgcj$a(b:2Kcn%T Uo(`[o9t{@Gwx>'97m$^ks*"N2R;OE=3c&1%ggmm]v^hQ@m#ֳGiٶ< 28ll,m"tnj^xM"mqZwe ;@3XdN@>_)0&KhEP*+} U- ilEF>-%įBmۭ{ ln\sR㾫CpiZ\j\͉#L>2AjvD>1a/@1gx0 Jkdё$? ua?2ZXNmkW M|Yŗ^/78\`Z;t듺 PSE+#܊MmNrvd e sC )iGj#JhٸQhc /y?l\`&k&ȶB8FQUPE)#2 Q@L0,sٵUU<dNf%Ty]/\O]?`~/2yfG-n*ݣuewN;P-ֆ;R@dt !UxsRz&G\{a:my-!=3!#$IDAFMֵ}jж{6֣l7&Iάiq8j9V!EU\ R؝ùX$y@$Z ʁuZ#oƬ|y̝XYYHHYJ=s&b!]m(uDnZ_EWJoz5&ΰs>:4hJnS::"H-}`i|rH:TŃVH!(<v)=&Q xHm[8S(YA L8'yGD/Ѷ8cK9q- zRei6F{$[ס?pA:c+5+,kNbu{6&74IA)r5 >(L'CV6k\Q qƛ+M ~픸Cj7IΝ+&7ؘR{g1ҳMb#o'"- J!.弭r% ts4MIEū3ǿ\tJRtsSmc67^=^+%c}wJZ z!-C7B/\P<DtO˟vXZGT]o?[RdZX|R Ai4zvM,XITG_oZd--S]@@XbE1mhgBEшRPIM8>)q弃Y(a)Z@j:- VS4iCʴ-U Zmn5e:gWose(>[F_ ]р:KC:wH8ZO"za:SqUC`ưoFҶ&_V ky7Bg_.hOEKhڥl mE9ӢI^Rhw)m8Xn4ѝ +F47tLbx=;`$ H`o$h:xHCj!V&tGB5xi8pΡsI#黱3kTB~3׶MU_ f^?Z4&`֮lBکzEbnUmS_Ң>Z"8|IԸP-^W韘V ҮJ[ wǘ!Ƙ?Q uB֟ҙ@rf.5#6/0wظhחp}urUZ)$im[#;irkZG {X2#RgcɶJi[G uU Zs1,}jݺD)=U-Y>~f_ns݀fKh lvǺƏv8!CZ1J^.s!j]&B \`<ÇCd$N]^}nd-"mTn\噗wARcTL/ ۺ :{UkM  DӔ?MɶujhD,qڶ<804p]RU4_zԇhjd7iH}z=Tx BO*Ͽ,Q6Q?Lk!+=y;#_?}oTEnk ."m|}MHH$cCvT&69f4)zRWWx;H"ώպ$4|E:($60e*͖oQK^T>\kPkKut_VC1u7XVNW|g}%0 MQ^[WX+",-#np4xDzs} lsyD^jK`&Amp7onpt@;p׋SUX; :L^g$٤sMMg-a)Zyӳs O8}Kvyd " 4ya55y>\`Re!02p=o1҇jZZ߿Kݸ0*,uq4xS[]֎tnjbPMqb7=x=e!RF2Ɓ+md~D@P;gsCOАm"iJs.DbxW3|}UW(ՠ L^W_]N'=T%J3) eE$U`]Z3 2`wLVLZ4u**tp¸*)TQ[nvZK5L.V%I^ FޔTn% ̺ɳ-ll֦YߘϖY |1pl6M $4k(X5zV K|ƺ~X\\5N.$cES,gtݏ/MSaط[en\&33_|A= ŇG1%M$ r}MxRfM涭puyb?!&cKՕv|<[^;=aeў}Ŷ vSڵY uʴ h3x{Hx},qq#3l_ō-nᬆ9&.>>8 8j e{Gk 31!Pxp2<|1(Ύ_|M^0.x5a_XG{ #+7 ڸqǑ3 OmCʚ6ȋv7a0dkBeR^bv&f׺@lp-']&uTo&:m[-?(ʴP7ie|Z8X o_zd qzE9@/o#G9!r AwMDa/vW_gAT/GI6hP4Ma7HHOphSIp(P5}efmgmsE?ڞMc" g"fpkk߾o,[lDc݆M9 U;6+;Zؽĵ@I`gBiC6S/N_?CUrѶ`a#Un~d[Cmv3sN1Ew#"A?@  QGpDݣ5Bquu jE,30F.T)MK;&?Zm*fIE6lVMyk-]{ Eiv*NS@2N nշl"p zyRA@J`:; !KHb{9.gDtV{@9bܧVb^7TW%qt8c'(P 0mqD8n̔enHm=ړqoLe۝ޒ 1-Hٯ,ޱ.]\nB+mV LFx3.c \_A%x@JJ⮪EDA[H{d)`x:NM0Zh£Dh3Lv{R}S(ՠr\c^ h<:k0ꓚV=/g.Kq wMbmԴp8X:#ش+6N: d>ܠ7bQm'6n@3cK+NoiI~>Mt[Սq(+Ϯy4xp8-V ~ɰ R{8VX^s6$&v]-`6-ۖ3')[7HW\5Q?=s8\!ѹU.PC?U!Ch](+Zw sWX +&7vh"6q634`9Ai|CA%ua~{6)۠j' \%"2jI{qh48J*I`F 0odd{ IDATE&!N(m[!bd]Q0xbkj dfȠB }rfQ;1DIÏmSmUc?.ΈzmsU=My@<)HT $ y߲tm{0ݸl zKWw Q |H"nMCnT(ѮAF3u`*#~&P7'% ϛQr5Vc< v^\@u .nEͩƻ5؟1d+qq]m> {6,K jTUPh-py#1_D~$WW!^nɫm:ۺی;b("`J^*8ڣ)u}MOo}Ko3/{3SI6 (FU_' dzZ!^};}i@ w\D{L@{LL@G갲 vYOƪj."(jI$"|VX/;>Yo#( s{;eyX˵+nھHP5Ilf~y[|K |iIG<dۇX:vupj~@r` HcEnqf c }{LcpuSߋ!@2.{am=bЄ W}kb%=Zn\(ޝR03|MyMaUżklbQl0Ĩ{0tI$k%Q x5ȓjӑrKo6Xo7` Ia CX VYRǏ[/xGQpy"A"Hb69́fvq/@1~ ${2uA{\ޙ&Z(+M|S8󢼴k7&#-iv1C/2Wx+U+<9 f%kHVQ4RȲDa8""!ɆO͈oJK}sJ cV̜Ё'?UjA܃Q܃8((3BP&i$Hk^/d'/#dFFX~pɆᦗc t7qE{oMQy e{^Pt7TFd`}p )%∰( X6B< 2 ;;S_ʪɗe>Goo֦ZibG%9MŎR+jfur yݯe7.\}sH%r-.3E>#|Zu>8OUY:bq?k|KQ[aߏ[hdakh@=9[{Ro0z'a<&H1':P*8M P ek36h+dLQJmV-9ks+ rTS$rϜ0چ%[oK[Hï5q:8Z!m 8 }>zB>q|WªiJivlb=noO ;y]Wmؗ3>E֛b9{Z=K/ l zy( oOi=ҳ1˟Gm.\OmBM@+dŵնvV9_$1Vj.d-.orNSdՠ0?D I:ތ1gηy+3؆:9hEtaMj“nwXDm*(%$ (\;չMn?>>yd6ƶPG=V mW=6;mu`IIimUEw;[/Fƴ>=)} &Y˯QKW |8]!MD߉]D-gpbЏ0NQWP(d)1lq9p{0y\しC@~uw?JDDaO{8| Pioa]G֛.{אQ1[8U:]8QU[n~g7F{B2_iC] kgO'QN'?WFkpGX~gIoK0$Eh$!Nlb5%l :c?X>Xv6Ru{r hqG]tdCH)FI6 ZM#7{*tdd70jRdKy>` lUkY],!ڵZU` a맃14QmS"IFcA=} bH)^8  ( %ȎyqD7h[iP%|LhmN.P!g~;CW\8HǴ:ģ'O@?dՆ@@kq_46`Kht jiʰn&ן@DS ףlp<="KzNYt+H{׆UTۘ\AջSz < 9^ !Rͺ~0])z{_]B[ r S7DRh[ٹkƞ.Ad2%agH0tSg۶PVBS`Ȓ6$l`᧿Sr):_`SDKs G!mx(izsp4b9{ Vvl<| (*\ $4Q㾻O b[;5cM=?mA OȈ;t|§O~40#+/SAݷzv߳y@%/$s-6VL=-6[І"5!i3Pŝud-kl6[h Mi*UѽvdhBH3J: wJ_tDؑzXDl0LK4Bk6TŒݶ\Dc, YMfWgX ?q|I0uvZ@H/,G hcSo ānD8`W3|ϯ-8 b]+s,+SW|;1>j:w{q4Xr9JDNfwҔgKćl{ftq0*Ye @K2D \ήոf3oo߱l;s{2}4M*| rl mJC]CQ2j~ kȘh ɂuMGzpd[a@S(GH꺄R eE7:܀~: f#/RE/h] 7o2*fZID_]їZ9v0s.:my27׆}jkkW^K ;%KB|8k00 U-< ̓C_Ƿ+\o%o[l 'GJNsa$򎦰tR#K>k;i_S g`m!ԇs/0Znbִ j-Z}_gKXx3na y2MSՇZ):-&ɅFHNiU:+輤jjlf\^-6'fݲ}$kUQ8~3QM}g/zC̮^A[4X ) LXQMIܞ@`o y]H^%xV#y##$e`~FC?B$PJbݩ  \^]f^c2lGG 7 Myن-sV44 =Lrn=!`&HquUs4dK)+ȶW^F 4% mtջ-@Qh["N_c=3)\7Tڥ4ja:5c`'@ihUnQ2OK鐎M/y@'&=cCKRSF%K T[seڦFC,qqY@ a(ǘLvp3[{\^ 7^aD؛qBu=I#>cVnvej>Tk 4EG %jɼ;e[û6sl@';@=L,wVFu,<ѺԎYB/hڴSxrZ㟾ɣBw?R'4JzLr F\;OH~z v T> 8Cdiz)ra6yso<sU2@K\ v[2+d.;=FX̯9Q4rfIՌ6)%\kh_yApym}H;Rw&!G"Waۓ5uhL!/RcV3^H\hQ#p~g( PAn vq#'nLdbsa;\Ix@l.8]lȲOßy<= 8ʻqp"j paZXaM"*cCU=0X}tPvwLekO 7i9^T9~Ye) lUMYxlppnSNۢRp.0B0" - \oLlM jG1tTRR6ugӱu2>V~z|ߖh+ïPWbU#/+Z6Ֆ"cۥjM^v󃏁guCfxnULU! I "PxdG)v-f˦3:mPR֨ϰ.+7E4> IDATmm[ԓhCeX4lж*\5fKV#ή$Udb €K{~CH]iLi:vJѨ[B 34uz} %%vHֺ)}nOHbEl[O}_C 67+^[IGYyIÔa?4 ʚT@aeMQ _)nZ *EqHSWvo,rnX5m@(2{`ud럠tFOdsȶ6to^˷f\ S['c&N :9SH$2#o$;~v9t=5rc2 prQ(_}%&&~iLcWfCØDn=_Sj*ִ߀_kY" cN@t1ē8]wLFUR-4MbmSW?#=7B3I p'np2%HV%)Z;DSۂַ>?kWoLrQDwqI1Ѻaܠ(z[A4ah/Qm'Ak%П8pnjK rOY\V xolb[Ydm+'b ;CU爢3[53TLk!ߤa ztƀO9^+qq(VTS =9NQkے "MX^?Ҟ.`&m=UA(tV{?z܎6D8e)]\5Ҟ3c Ry_zQ,r3^d,.s|GcE!<mSzV+Jp8eY`xt@+k@;]- PAgJ"p-`av Ӗ7g+He62~$Dd2dAä3s·ȱo){J,mAkn!b} 7 :HN.V&. PTsC^ߎڦXlUCy9Qo?![Rz0o7s9Ž;@aRzkpfqG aȱ)1_fcoGy*VUտX)H]aw"5~Q%>GyFFe|uXmKX۪0csW؟z9=F Ъ`mSsRd`Q٢"lLvVI4v0Aڶ$`osgG Z|vs m|0)z1>ZW<`w4nZ Cmp`8>@6K_FU)z뵭nm˓Bm!Q58EzDIƲ:8<` $`AG07"lk4LMV 7J3^=McQrN5JBn5g׺,|أ K*5~CS/sЮ3yڷ˹kUMk"FafKZ{LjӳMljo% n.۫A,K1P A07X,K y>!.'}Phjs 2cC;zh ~Jw֓F۴vC3k7_}>>DBpJmS@,Fr( aNcmhhNlǍ߳og>tra , ˴){;IezƀO{"ΖxNAPb4' GiJ01qzN$k~Jܰ0?goi!R]Z%u_wA'rch;Eɰkbe2S@st71uk&M(5U9R*L&Sqa_MKi%aؓR+ubq822bWI[{2?JVR9:np%I;;oطwe`*4 GQ_UUZ,-fHbXK<s<eίNu`w# *Q2/^(Hֹ9wXxɘGoҚJӡ#= +>@>GY̍WmRMyu&{TZ"ًHW[.ԼtO̜-h[m6"-Tw.78~/ 'N}4\(J0IW2 VT%Jݽ0ڋViR* .Pׅ7S&UItlPW+G $dSPUe6 %q†{T)aSQKC1n4޼_9zĻ 3̮^oGSuUIVe'kÆK}rby q?[at;VvGX6țXs5~M شeEF#Mn=Pʲ0|6iDǎ($ s4b7%?@ź&BGQk-E<< rY&$;@^_iΘPaP5n3gZU4tq2^6"E(hQb;dRPp/ 78kLY-@o^@K s~4(ewҒNϛM] 9QU DaEY( =Q Jz{uIma,{z[cĘ!=M]x/VzSsW3] tS;n;&*բhJ6]GM/~6F`g!޼ׯUX%??9ΐcZ!/Z!3y {Ӊ_aoi82`d?+ϲ ;Vjq8%嚪wg.Dן8vX#sN;!(oiHUM#ۓ`rgug]}:$dh&Z3M#-/ʠ 8c!&x]O_q<-Mak隤1L!#r0 coG{ZJ5R9xjpmĖ,w [1LXz/_~5բϟ,}S|Nc;W5N.`:"Q*N,Qa4hkw^Gάj`<0:0\:/<14|a02_+v5}}:9-Ղ.uSX;|1n .v`xQSσ65~TRitB㸁xȰ0gEu 98Q#,CMָ\FwQ̗EIWQ8o -m2 sKitζ~:pXuS.07OŽGfT5믞" $އ?k[γS P   ɦX-)5gwX'rnrwou^Nf xuao hڇpBٶCh7M t9hIPnb\E91U+kJjvȾ M̪i-R;,ϻtng3U!4в E1Ħ2`*`Pۜ7bMc'HJJHY#bd1p@(5 mv`r'C`! DuΖYݐT%6y&k}>LJFZA٥:C=lfpH  ۼdXG}i4Z.ea t(k| ā}Ď8ܸuq*+YLFY)<~o/>bE o|E <Cj jC*sb$aO=]aߋ=ɦ65(fQ[<`ЏO W-y;.5CW^3ѧ]o]J6ԽE#=g$CY-smAUڃQR []:)-xϿp6kۍT( mnp:.[MzQ9{`B>+D^Hn c|Da`^58"NSE!dSi4^̱\nj]QP檥МbE:e5n:w!аf(+`:q(De`\@\_~N<-wﴂ$t:FFv~FҞ6܆p[Ї@麶Zv&]ߴ1BF<-xFEٝ9 s;Gk|͆6 A6 ,}ߦd`2 Fs\wK8FuLxwmd]}) % 69nGMqh,ntrv TC>yؿ#a|ۤ1pr1H 0&E13ԍFQ]_]%K G{-f+2`ʁo ƀkI9e׈8(趨ZM~7})sfqD+BhѨ m{arTy)E"kτ%&}ü]VY"gkIƪ|O|gHl 2Kc*`UM2!ϟX[!|0@(v`|4c218m pa%}3,d`Ce9Ic"6]7?Ͽa32Jَ[I1[R>@@~vϹf"z[*xYt%m7; }f3(^P >FZ]|AGp#kz[Lw|0X<߰8l{ncF8! #H.e{@18,'nݺ&BtDȲMSkd"z 2 k8]<ީlsup|M$hl}Ax:7C#$vZ8;x%k"H~\QZM>8e1_Jj%iEYo`nO Cm,8!u"a_#eQ|( ^n<`gcmX[H7g4l QtЃlCɀw_<~t=SkXUC`6RMa7y`)|kl IDAT\^N/fcG1b*Jg4 ܛ㜳1lP(u3Js?0B߹h{n u/~s1e-+5#?c\fؑ! w'B>[ډdu$۟= ʺ1AX'QfC{~ኣN]"g~4vwۭy^k8޺i)ZݮPysk EED LQ46Izvetdp>#k(&Qsy8lYi!~# ϱ\͍ D\[ x^sEAw8$2)~ӽcpAib5EUȭR%'9Jp>P;=lQЭ8_oJXq^ϻY61#}:'dBpđh(hxpȤ4lCpѴ2.N7FG{+FQThB ـXb\]D-g{3QF=kuTfi ۖqg `9~? mW].sQ&kcj7PWyOb^ܝ&ձrw 3=z]xVM'L~Ө@Z^Ww[Arv>~&+b]3)\Q B^m6`&ߢ&c=Z0z\@ e1ؖu]63 /t:e`a@)w:f]+TlA= u(%2bz]s1M P#lUگLhDmuˁOSZrӍ8;3x1]QBtc뮤Kn/s1Fv<`21;BجgК:GQ<;!rKcI:R^U )_z&uӳXvOnK z}* tGd}(Y"N1݁ UXTOշEn4p$pV8IMvсЛ:g<٩=.yi;K9,{ƲEB\]b4f@ZFY!D.0€$:/6)$ZI)pZ5k. ,MP9"k{u[Dϳb"nQ]iw]l 9s j;dK&oD'F^n;v6]q͗5(aa7Swx[aY;AJ 96xgWaq|yc[+|7a$pæPX5޾b0H^_ޝ)#Nc‚@iȵsu% CfϬ2` ʲ$ ' _IEYlmk-]D/ƶڎ`@[G&]6c.̪oGqggpPG0"l ."uu;?twJdS=>J}Uӵmmxq@jC.FO ToGJHE7a}$oVxH \\p1dS,71ZKpf=CF)&{wT Q"Mc(ED|sPZbNح{@.NuMױN.7f]́?8;D]9dSbx_jܖK0r!<8)n0s/z[V/ڃڏw/k=LfU{|Sz=Ѱ_DKbtj -AmxtL[mP^e0o`w!rtz)k\?C6B+v'0H<\Ս>$FUn qF&9_xPJ i3]v-n,= VоN:-1jw0ٿ ?H D9GS'U6n hXqӖq!ۢKzy:ķxݼ=bm,ʓ :·|q RM &~"N83;!QTиOZZyZ!3xz@f#0%`oAQT(*a+jf5gWVucn RNe׸}d JW+qE_F%p{C/p{(g!7yyZԮno?lXGt<^'￶ow=NUז=ɍ'[s~rw;,h'`RHV$QA(-8xճkC㛲0g| uj㸸!/MەpB~ib:J:18"[o>etQ2DRs,g%EIy`f ߁E՝θnF;d`EUgNӾTt:mAntFj6XBP&Z'rG;1i\.°(E#zyܠi*a9t$r4d_,gh3p@)lG6B#p>yȆخyJJ Mm'a O [lC{#6zx08ܿ)+E[Ya4CkYa{<я>ƒ/4I$xL߾(H\[{rUn w#Ł1:Hzni݈pu׻Cp0cx/`RUcCasN9|71]X)5T|`8AUtZ#?JW meš_嘎CT6+.dK AB RE;ڜ[{3m_w{5wu]DA4 <;:i5 +0Znfl[fcۂn(FnB] a7 ΍4ޓ!J0K:/hO(<:;5V(-021 \]V P 'Yϟ&eE1\a:݇/Z \hQ2B (FX]_@kElߺ'4k5Ƿ' Z|G2HշۖĔjGjSt{`ج8?:׌T->/!ME]mP>|8xmML Ot؜^Y;d}3:JTd _ЦԮ%1[ĊFG?[>T\`v},w(gx ԳTuk Se {I1 (tWk z_K2Tv9CՐ"eܐ^F÷Nx!0 /$V[CgOQ%0_SAsiwպ/n{R j(ESW确 "cF9ק`!J&+ 7%NSWheA(1hzBmr&H-| .|HXGUQ.ۧ\+ŴVlZ&\)=kQw e/ }(UCk R Z2NR +1ý{RO/) @inJ2L/{r:IC++ֺ ݞ ;-ֺr[Aj*7?K` 4Ml08<O>8GYڠoeG}OuWTSs;JKgM̉i R6*#10cyyWQH"<ٍh.]X&J˿b؟چcRv?i{=Uit i 5Rvktf1}x?. Qp# a/u_Y_,mpu&TCRC7I:|> bv5(EnS^=>C b H#]Ak얕 h "jy0/  xC  FctR[ha9';\ZBov`y^ړNԐ:8l^D{A~![f` Ypk<; jzuѣ X?$m@_ap,SYXc>!=K}in>|pp9Vs JQEI:3ܻ=l6~ySt1a)Ә6t?z"Axl 0NV1myfG1uU+k-Z8P8ߐ~-.fb=X"592n{Xj0x8#Mq4R5enX۲-^\ȹĺDndzo_x r>l7/prQzv-G:K:mN eeY3)ΔmOu\2)t-BGvmHff& m!VF e:u0XhA@qgC`\ "Ua"j ƅuj]kQr߬T[$)BR)qtto>Fm_MSczC?A9v?a;8n vA~K}!pNg9RwnLiru:v=1$q25F# 3ŚޫĂ0l=, 4-Xi`: 8yB . }r/agiZxpޱi;wb0Cs, !)9oɕbOJ_y;K;iD\8ڣíHlL=z툅%~`R aH,P%@Q8ī56I(sjoŨu 8C<llA^ZWda]=uY ldhsC_s| >kTΡj5ON^ ytJֲaL- ; khgFnB_n,]In}|uMN7ud“!}ߣt=?Uȶ !I3CkJRq2l0@M<)\X.N1|[" pBƀgP9B\Ȓ}._ fu/(+c8g26*\JJTe5mEB?t6dHj0BUJ?whRYO4r&͆(%x$RTj`AM%CR`Lq4ml<?Cr xya NPy=m0l: TtŧC'AY,Qkh41ABa>;G ` gy|!n ܿe.Ao18_Т:x18g<) D!*̐$ }C <h1_a l%CmȅssD~H:`]*z!8H+P{Nn{IF7AfQzr v$rDw÷[zyoD⑍)]Aq }މM݀9v{dBx@G@xH"X`Yt7QX]C)kQ8ƧI6E|;G]*66N톄yQ"M"(Uc# #U`sSho0[ G\h xÇmUW[˪( $cI?x{w양eA#Uٛ X6ϟ?\%Y}hzSؘ16q[1M$%FvDp1QvI6"qͰQ zZRg][Vi\v^#;ˏldgýȆH='#kfV_]c4~YF2ppzE_=3(J 7F+س>g+ҺJ%IFKDGZ" Ch%1 /s'Vw\]רC" `o.Ε6Mh-p`P(Jb9xqZE.÷=:WfJhe}eMc8U.`!D@]ly~k [K*tH|mIotOAm}sa@`E k(;{ '( ㌶جjmXœI6~A) kZaYJ>uLacgٔm !ejBgUMxUU,+DQp0L uC65Z_GCۍxz>mZsod +\.Lk`ry'_ n~!*o1["EH1<~ Tnf<@C IDAT@LE|(@ GT_c78E;Ihtql}."n,YOS >!BCDQ R#K8 kg:b({ t?z×hc!}0ƨ;b 5cvdgDP xʐu 05ȊGcHٴi4ȣ%- nPTbtG>Y5 ?ާ>/o^ih -A˯3ͥƲV^]Zy>v kv;w'Vq9VQ,ge MFAGsD?H)*/܆F q~q2@QlY/!iڢ ̯pt0u$A*C?W-҄ h܋Y!@8:@6#W?caڊ 46 ?I:hr 䐲AppaX!*>jH')yCT(-ο?q*5;Tg]&!B1>}8n9hJ^[w?@q457;И%1eYC:6Zw;Y>{ނ$<4/kY7:wW%,V lpq|]W@i7;ؔKEeWsŐMCaR6ؖ*nOma i ҄rTF6h/Kl Jiv)ٔ}p}G@q1bۺi(ZgKƅ%mnTtxC_mwm%IZ knª&0]ԗRTȉr`grA .|(׿9.v(>jT~$tVe Hs( ŽU`ڞr0#hkfj6Z(EYtqh&l3-јCgJI!KP<[5ܳ9~=kQ[$I@E9|(p0xFY ԍDxY{iCiA(u7b0"+8;jch=H(Z;_- Z7;& p:n\k502L)0cb0y@r^ L?—O6;a`ۼRl yܿu:yIG[_Fիd9B_wlL͂t4bkJEˀesBE1xC%G]W0F_0HcýxvDpo! q(5l &JI1)?#jt ?hjK*ֻ9<qV1kW42t\A`4>pr \T m0<@JzA;JP&߾<[nv]$V>q(!mMn[ n'bv' :-gR)[!N>ݷ~"_ l KA<,pX`:X,ڕ59W/Nk_.d xG^|D·Cco$Rާm4oϣM# M5 34R Q(ɜ Hc"(OYg 5HS$B]dM AT8b-to"gsY8#^lX5'^i@hoΡuO80z\փ'>6scӡI]6=lyibЂ=bKq4Jw+luӭN8a+Z@^j7[x00 7Zm;ye>04"!pqU\\Ac48iMlZIWI!ח(5&{0ށR5/k]rrY;u qV}kg[ m CS1F)Aq<πq iC(@U8jghv7.20GVZY }dI'knOxO 1ǫ :M"5O.vi/jN03h(%QB{0&[i82mтvw5zV ac0' 4bS3lq F. ,M,9u)x>ےҸ py !Nrm/Ba4.Xmu :ߚyى2`k1Mѳ 49 X;wkJyΨ2Y|"߭]FMa;B )V({{/#J!EA(JlNO bzpFKd)@Yn^hK. 30##Z7;~QQ`@8H]hkW_jA"wh9`l0El,[! sc.Qjl%ο-0H;cf`$Hn d$00~=|m0_u Ե{历1 v88~&e0-(,mJ^(mF{-dw\!Ksa%;maȴ$(usCUnl^Xoɥ -oX7 W%-0NrBQ@ϮXVUGgpuDz [ cz~x"Zcf1AJbj_^׌2n]Z>G{.?6tַRt;Qd=%yr< Fi{Fl0$h BzpxIj 5&Ca'|1!V Ab#b~$l0`|2_!>RJAn_֫9/^ @|,M};6mc>ŇsgFKh >aC>F1 xR18!<0kow8񞥌òs&BM5_=z5fc(8-f!b`q-tI=Z[7 Ȧ@f5Ir;{e:NSa/΍i?1֓a Al'ml]6Ꚗ=`Vp:22`Vi-p8ƫA)+Ȧ$֡ӒV5yAt.khv!9^^Gw޽Gs'Kzf]MqVԎR...Ǽ|3bc0ϫ:_w)rsYrF'!ǯ|Ԯ#zl_6%\q1xE0-_dG7BhT 1H%I_}A)ˍi8mM`q+sGk !.|?(^ 9#(]7&nb@ \VoO[u>=(%ˆLu׍.5%)]ė!| |r-:sMnp>?`l Ѩ@ϳf (@yYCpUm,BQb`,Eݬ0,,4ʺ0ec+s89/pq!"(`:Ec (؋@"[#;ކ%ʒά- M-ƶd y )}tF.S˦Ob0wcH@p`<`H`%Ij ec46[}_j4͠dta" 08.<FMB,M Da%%dmp Mu`a''Hَ@nv& ݶtTahp|| o=1lN5;c1/!gG!߼@䴙24j1N1_ 'q]tQ_5AÈ4ɀ _SPA oɆ,duFӁ຺ d^HX aMi& N^X4YZ9uMeDǨ^q8x䌡Z^"2 SYhŇ6Fdn+W89qr! }'x{lta CA a{u'$<0mxg}Sd$1ײ6Վ;[e|i+91g6'cMkc{8>>/#Wx)G!@QfѠ,}{"Id{a^߁J[<spIs6>xׇ5WH)do^A뽸X$Izك\n4. qIsZxpJ]ρC64nR|܍0ݣ/ZI:tov(m[}Ƅa !QV~hs5dp U8=q&wB]W@yQa[@idk+ UCc4o)~ >̯dinel<1[}\t^eY\.[Ś)yGTpjDfϾx?zo}& q$!Rz/Kyˋ g3o,`E8Z[Ԍ4uo8z[@و7utSCJyA}p|=6)]s,q3\An0A|\qR̀d4vbY2p\HzbSb1M Q](w>@#<,amXd#mgj+ExXL 4F8:كu]azH2ܬ ϣ*zWOoxR Y4H1(!l43M4 `F|<!dB F-nE?|"`@89 }O\Z_[bOb aQ쿶k۠oPW[uo?'_5hhc #/DF^rRn(O'Sgx `Uﴨp0!MuVwᅢ%~\V#\Ru di*<}z0&#(aRceq)qg{6GkB*hzh<,rEdpNia&óQoZfⴘ$0}ңZ2I#6 (y/Uճ@=sP;TJyW9C$)Sہ7+BN'MlqmAmzgQ5Vk -t`>I"FhQc Ob49 $>Sqvj!@HSim$FE?9E%C[(!2VQJklRS*A]B-#nOCX2תu 4z/CCThtF> #(@urIlrю>lo?\E1;\h◟n%L튅@zL l6;aPlqpYw10q"< H`Y==e ?e4Z[7ͨc=6G~sv60tE@Z4a`z>$4]8R  izͼ|"0NBA.,^iAsIP8I r(=|tDbgZտ]"38qx\w,IkۋX X\MjUR9كēŔħB7͐C IDATEPu>ٷƈ^D$~8 6}b0[EkfEppHaM]b\R>/e IT69T:9k]u *GT^]G/4 r'u# ˾U _P 3 ?B获^sjIx]vMI9@Z\+Tū+슚,\@]Ao1m}Lw -T逻B ~Bc擗xy5d8ѿK,ZL"NVHm\4Z^dR{HxaEv0_09c31_Z8/1ƠnB$y dF=2H,k|wՒMhu4L)&,Ђ?Y4SfhKKuʜӋD\xgMc p)}eICuCK,qz&h{DrO;[3` :N?j(EM0XC,W[b9O(` M aHzaȫ\a \_>0Eוh[Y KjYc{[#ftlP16;Tש \. Ǹ| ^BamFg,(mgÃaR+ZԍEC:m[u?___f4Δ,Wi*UKԶgZ`BjL-D[SѤ h͓!um0' .;ƕ$S:+Mg,Bb>.=4h|| ӕ( Y3kY>lF)ۭb^kMSDY( UۃUcQU-ƣiJjM:FY)h4ݓfs( io8`n)c[³IOjSmKDq;ȲfAYV0x_kL!$\n`N0Hֺ#v[f0Fc<9D]5A%~Sgw·z #{,TKQu?6nb%les.(?GPK|)?{nP` d/ F:+m&} ҄@zp:KYd@Z\]o_xw1?#nQ5w2QJو @I,qpp㳷sQL;G!ڶC&[kVw?uܑC4׀4)Aa wd q5ҌOKXmZ\VPvdydtב-'Fj5VsZ`Zү;Wثrveg-@::bھMbwM#]aQ8M3m[~έPLY+MPyW[8H8N\\c2 ˭& fD 5ƐT FOxҌ %^O%V &mS7zsaRFt، *7$d+k*tMߤQkcT%g?w1&Bm ˈ%?8n+7T~1t,?l/}o%v4΃;n;C #:e е*c{V[Tg[|BooG?G~(?.6Q@Ѯ$JZjGoSkaӠ*7HSO 4y Mkۦ˝Lu,̓T(TGdpȚ/HeaT-(eESqM.6Y6&9i)ee ְܽMK~=;U)i<k|lƔ"c { \d㈢+w8~k{ƅ-* m8tG |(BL'#H)QkAմ0Ci2k+[0C<I:ጽc"gBiqr4aBЮFoZt]8N !e!F=,V2x/Cbm[AC%YMA):6o<(i+nV zq,??AHIZwȷ<8 SʩtbhO<<XEKC>S5?~“W%6Y˜߬ F] Yx80uӶvZq Ǯ B飻>fMˉO~_TAuPjՅn=Rm!%u KN'm&'ӑza;aF u~M(8 f8nGVU]r(Î2RB!-GdW]A2IMB&81GKdiwtظ\59 +=L[ 5?̗W#>xO2! 59Blu3%[ZKkhG O߀*i;Ο3l,_?Y!uDRMv.7$0Jm0|qZ aa:' R-P2pܖ$F9$IֻD0LT]Gv,d#,NnzZ@Vhǚ > 4[xYowE-/?7[Bٯ_?ptpЅD %6CQgZ5{#@,v U ڦry)5 d\ZI J# {#4vTg|F z 93IQm2=DM(Ym;7Ѷ5aB7]Si)A@1U]34uo;o,~O/E]ng9~b,s{Ή=lyxT&е5obx~,awcB; q)8<.,שi[)0Ƚ ]^ְ/V{A.{SOS8kyN"bnί !azA@j\]j#x l~m #aܝ9ҘԂ;!d2 mˇH@)RXm){ Dmr" X5nֈa)Ԇ$eуA0ȡ,\QQ-bЃk{zAƴbUn-9#ʜ$fs?(xFߕÿS{uE^jT5`s_x0GD Es&|?m U]'d5 -S,/;99p+phz hD;(.Yv9|_i4lᖷeON^]ܓ x\)5€ D1IV7ۯH4tz/iV =mޙl?mkYJD! Z@. dK8<]8yY"wOqOh;5DYx(%R90(ZfAWXB % :KuӔX@ m!`{&#+bO99 ?d2F:a>ZVP`J-{۶ᑎHyEc) 8&Y4B$E͌cF3ң5dam*qAE~Se$!^dl yjg-VŸ۸sEHagWv c7xpS1Ix 0 {LFԁ;^w(j+qj-k6CaH #(4 M!|H)rcF`U>"aNUzGݗ&{>ue8ѐ})^İ0"Me@q2C7 Y]Cꂖ#^ (I3TGY(qm MID a8ҭFuDd_l8Iǔ~t5d5ԸYw=un,:YWk1֣3mȱb;gpg4 xmCxVVW%P6պgoa$g]v~Y5+s(;K+J]fn.pH#`:pv\\XoD!I}t:,,c-S9I2ŮYItB?ğb2]8 1z[wL9 rc!͞ң*|W^LN N3kܬv/j\.cGd Ƌ_$:8'N&I#O\nəam+& vr3׸uSioLq:a&,=#s}0x˱VEc`^w+ZHt- $ù)ˣ/t F+x)fi6=1֥b6q4u)4dq1ÊW@D hO,~;€7?Mg^:w`\ DH"*b጖D @ݣ c ?eJ6oXjO_) ZQ<8ѝ%&JPUY Il}9zwؗQn7` 7(aHw,R922䅆Ҵ|+4TΑ$#|xkkE:o`2)7- j~\\.JSQRbhӺѹ~>jM {cyhhdv P5[GֽQ{'a I'N^].&gU(I$|5jd QskX&k[(Em|!zo:Zhg߶?g]K.}i:яU.@XX<Ǣ޷8Dt?sriiJ)jMȲ p`ͼ0aaҶl:\yqqFi2?C^xJE&İk[ q|!k5?GXB:pZ1;$YxHӤǚ<ȺJ(6JmoW̧3}Z1H]2PC)oZy}EzJg'꺎]GqL,DZ;'!5.oZcl.,yt#bQqr9,W|I/4jFQ/|Dac\pp6 A$۽7l蕯.b57.y߱:^@J T$,,v]I)+4 [cE)sInt[YҌtƒ7U̍X NŊms| ch!N\l5yhEan#_Xֈ)l>->k#m^&|=o,ChA# e$42LJoz ,qf!Z\~?D"Jɂ FNKSHsMHKiwlEY)>p^SwZE]bj\%R(7 7 e5C˝1 +2f0s.Ȗ"i.C$R~oqzXV-6Ə7 ZFwlw8:}(.+bSsV1/I~Ɯ0 oQ hibEXn:$汰j`c4Z(Aݴa(+X uBq75$cG:.kHXazc4w]c[R:AcZvL =rŭ:wۏ%.8u46FES4%&C%*ϼ6-2hLL< AU&|?@0 94ZQB~뜺^^V&>t(69>W+vc | X$zF4;Gl,g8:}$azȲOtH#|?ǣ'xHG}W%uwyhnT.5*~ d@ݮPxvIo:r͋A*0[l,.nh3L!]GpU8i$$ImzKs&Y{ J5H{eC]߱q)ಡi|6p<qpGb+#NmiuT5C'eep6&!8nDɈaJ{ge-t:]<ێkbLjFk6W-NdKaǟ` U5tXWqMUl IDATn8\˵pb^p|C EF(-%(!:GY{>KZF>F hU U]&qz4bu>0FSWF#fɧ0Ơmk5꺀$} ]C<=3 ?gC|̗s)cP;c%>?(b7({Bcν!X5uκQ}9B4'xb >xٝ[ y q݈h?ĭiNB̙sЍ%Ppq"iZx8 11̑$chPL2EQ,Dci 3sQ0m|-i=zЦ%ڮm!'K$BސǥAq="V ,/J$i/eVs %VO`EUnΠr4M S>bJzGM ߅Z@xG!Ҟ:m5 {e}Bg@r*392,nϟ">2c"hqFڴ /.oHk F. ghO5v|" s=L lmlmW&|B84V086|ȗ( tGN[ es~H "F@J20fc_a>MLDzOH5D$T Xc,h\ <_}Gw%R#6 ø7Vnta |lL_n)h&DLa48Q;O/uQ \MXx0ĸEb,jr$PBi6A_jWXlRt*x!iB C;BpC5&vj%.B<~,ҸţZaX+$8L bq Py5& d9Өg5cҮKL0Rt$Z kQPFa$/)e|ZkYv/>r%`w.. [ :!%NOz8D{>~-) vG88nb"fi&ƓVЪE>fiK7ׯbK{W/9x-}+aCio0,+כGk' Lu[ءj_5惰\[⠍zo|Rc6u.Y5x}XóK*}߾Mۢ%nqu}m?:9jX'4g;<{ŇG Gs-n.vs%Zry4x~^b[XzMo5-P 'XۡR)pm`9nՖNmP2 QC-Η^I 'v->BYJAQ0*4-x1nF=铠>"q !t$eujo_ d T84O AxBZeM)iWx躆!|3Xk46׫7;]CⴽC<䭺%IN o^}Ϭ9xD>9 ] mdb萺LE[/'疁sl1fo]hO":O9զ0GYq# _!#xr]Az ‰AYnc<Auhۦwxܬ0MP]nnÎ>i|}5|x8A Di5^\xqI`e\R B>׿.xdmz^ud$v(k 6O^`) נrE~L<=yAjE-%zFS_8Z1.œ8s:}vxM$;ƒ7.ʡ)6wh;^,LǰVCu-cbխDhZ2 W~l b4U(wn@,֛󱘍k}(E К4劓]vYۑVxW 8oee |F8nk T`TZfGC,阊B-(EbB~qy]c1񰘅iq6h;d4Ax|4$YO-֤wb216eOl["y #X&mʜc2z-`̀1O(2@ڶ0X f,!sǓ`C]r;PG} ` 6/ )9P |P88_]k%~IǠ>\<,Xn,<놊$6}Ξ;uRNϟxir&0SyYC8Iq}G r]WjD\팝i(. BYU͑l>%];P5dpkjHQA4MI)"Xf]TO[ЪY""+:#oY),!V 6-m(>,"_9w S;{(Ƿsc-XYn/PEwdҿ2&l'sL5\w 7=[w'1ϸt0Jة̪k9MGpWh VxzH1U,v;єҋ qcKa` V M2Gxtëۜ5jppnžOq8Zpiޟ?f8na= \=b<`2Np,qO L E8 r1;18c>XU]$BF8>Q4[qj €~(CY A`Le^C Ls#*B07ZlBtaJ)"<0Sv7rTeo^1NN$!w{aH.Fi@xuMR}r/w#d}S{ ;CL23L X]]}Ar]7..dNo C~^{IDnnf]*`c|:_=-ipnarLÏHqȄ\Er{!A<_s.=|V #X[ #0DgC6vPxnX" 8'ٷN^[kEW*<aY65ږr4I $ xoddY4/ɶۂL0KIPwgiJiXZ+2a~6^~Qm:0yXc'_:Ϯ{'fTACJ!K*L&!( /H|8bG%|t-@ 5|_ 4rxxшCQ"`2 ۭ{^RF"h$T}?(GQ<# CxNn֧i z{9w,ß?]4,c*~qb:;ɝ71/@LJ_/.׿.%S|Ȋ:-!9ѯ-fmܬ*r-fcq$GdW-joL0iG9,q:q-aٌcͻ.u?`!nu5:~W##Hpc4@QLT.`AU}@B!lBsUΥ O7Z}as{Ne%x[ zM-g7w7<m#A<ߡOm; .tu/(qt! |EQ$ɬcRΏR꬜ (EȄfrC$ Y㠱Ǐ")uK1kLyT ձcz-;4/bGẃ9qHJVƮ*nT ?݀7da6`[%(S$3ϼ"璪2d2{Ήbo}rv:Xn\ctz,@(mo QqDo< 'ke ;T, 0BLڶzu 8,χ* I%)B@fz 955Q &do>#9Ϯ 0ϱZRwܪ?R~#2\h$x Q2dvڙy0#2wS<k>O 6ROFTD818[TcRuBKom=R\A}ZϞ?X,.`ED䌣mʡAuC fa%_ J!X7]D6vɌ[)rK\oj ,k(׺{1jpTNݕg}N)ڎ}rnu#3 9"@Ul#o7XkY3Fs̩1}*GݘW󜭺6?5R;?=vw 2ש'vfx-;0cA0qL-K)Gw0F)D '#,._a^E+Ƣa [ 9#i)}tC,@6ЪuvdhX9FAa]-DŎyO#NmF)F^4Hbbx*}L1Xz/Nj\~Eߘx0D>Mga.Z 쐤sM O>J{PZ'r.p^nӶ_xa?Vn5~ !jVYT5p8QQ1 oS<ج.qvnXgDA. lNx֍ʁ0`! JCgzX+E]/V)b'^-dj,W(+4M~gW-[#'#=:+яx{UwYUӧ 1CZv\nP@8r&^Kba>c3wWg%8WџP)z߫(#׿NB1˧8OSHl,Ga)F a1HxNYtX0Vۀtfgl`mZB} wQ4rp]uuGͱ /5mkJH{ 58gh[2ʬƐu6e,e Ǒum?nL60FA-QĘO[,^*וީf(1!ϼ&XBἅntv[cq@:/v0(%( F!I"0"]AJikܹsyA2DP<ډz na$u$L=4ͳk|@DgńaG>& l_5X4/?OP , <o̔u<NFY'R,j=۝:jZCmv`݅g0Kk~{A!I~t.|~޹ubH(+4 !nK[DqF)c6 ( CPw,QFAtWn=:{P1t4 9QBwU]{EU.s$֫úEgrYR#KIu`B4gt<~rW`1 J~.+hMydq2zvG D܌⶗}Qlg焬2`~T-/ԕRNhQ um0N('ͷ~uKv?BbY)%)雦6o!ϟC+ɘBX$"ŵҨUR ш{˸+ ^퐗+̡:Snb4mH=ݸqx`0xC_|۞MLF`0H1Oq˥=F0@ ܹ{MŇ'vouO!>bRS\e_цfb }f` &8>9&Y^BȰP Vȷ2B]nw#-9A)h^<1*/z:暽5ؼ%2%/Iyx_+@dNX .h IDAT0ڠ, $)A]Qj,v qdtN\-5M(.BJ8QҴ4i=8F N^4`Au sia#Spgx}ۤ 6]J(kIAR5s/v2CwB|Yr`$xm9'Ъ|*0Kuق / BɑJY4-DFS{ɉV߽cϠBmȐ;( ens9Jyod|nPxrCB?ٶ T ӗaqvQt>s4$>eY(5pFGR 5m>CI,ҺZ]HtLcmA) (\\pNeq;]E uM]a+"Z9na0O m[L ~^ NF2T.aAo8r!PyvNIsFp= F~!G6[,=Hws37Be-~z6ki6÷~W%: :%F(dsc>)֔lu'zc ޸pKm̎P;4aϼ,7=D!$b7f4% Ee!DV,F?{ ʸ!h?|V9?U"r?d`on6NaEbU_uVdu,p0c l ?HI&'Qk}p,uR.bA kKZOz/?~û?g}2ua URnxЧ^<(5_`m#Wb( ;2Y"fαG[=$y%?tv>ini|f^Zu LL("Sx ܡ,v0x>`1yAq'OЪA]HRLfeBDQO(JŤcXok|<ЬQ) -%8(~/z^`>q11)]iXu5VYpWg`zQ*0 %q\..heȉ}:t鄁.k}9^ڰ@`/Z~Gw8~C BXu;ت ,XV!QBa7eAJ_U(*Zgvy6` pӐ#qEӟgYBDTauJ.1R"lK!C򿪪RFNV{Hg; |Y3ZݍjyŪ ܉}"D/{߁wߑe)cdumu><{-B!ytxX`f(^fso7SC)a=v0=6 9IFgjepƱۮ2KJVSW] dB0PְRH8=&vI%خC L\nnÿ9n:?!ݟg% UѓO;r[G_! G'ټY9sR@Xa>?û BhCSfTΊddX/[IڥW%b Ly#^1NQ7~k-xD/jb2=qU aAu] `Q'JBF:sa[r„5nC Iնq0 AQw9: Sڶ3;8Z.}.]a%_.qz$[˅*%%Vk?^|[HG3b&.Vvs~ , bO=/R=$誏R0+K͐l;1Qȑ%n1X+1Ɖ@c(tE1Q l!c!IG0Zavp㈓1;?!bo+!)F"ΩO6K0895 G/K/Cg0u5t~?>/1J-xt(X !wv( ˦Ww [W<ӨjŽkgsqQbbg{ w۱JґhoQA8GR:U,mQ  wNIvzUwAEH*BB;k QLܼ#L& nZSp ̶EYSfwbpzdS!RqzJnjҷelGrJ<}D}B2 CkX0T' 8jH2]QiZ4(% ];lYDR 4E\x yg|1ݣd(z0K޶3ܵWD 7Yk8'$P&DjL'!.Mkܺ#qALkRD.0Rl+X8Ank"K0%[4n24x{!_AAo%Ra@hA !&@ӣAF0ϐfS԰DO4c Dxjo~Ck 0%HTV!zW['%oWGٛ|4cpU͠S_ȁ;''w!eu$UeNJ&M d>D͈B 8 h48:Q5c N#`ŦUkrkO_WFPM-ZS߭UmyϢ޾nhXxL+0=Q5}Źeuj=}A@ĽaA)Fc^FMSB꺠Mrqc5D*T0F*G`KMM)ˢpK$/?} rp(U~ % 8.FSmSo:!lY v~g^+;(q\`lՖaG'.ߗ_bZCu$q,˓6=FkC+ Y>]їd/6<#> 5qd؀" H{l7K4M]^Af͎1g(Q/[ aH>(UrG[@SCR];E klA7MSO/_RhU `( *Vmcд{8bwsA|ӓ}w^=/Y3Set)S 3̹$$p0Xn XK#i)"KOpZvtzig}}/L2ٸwY,E&8>8-(-΅ J)c'f`"9G]xT!#De0JPEPBV4HTeǩQA^Z,[tcՠpqBpS#r${0bkd# AU@u7@ N&Y쮻JbweV5'5D/%.7j\._|+ďkΎ8M~۩ݓϷ m+|vlZ2sh4CLaH^,JJ5P?.QQ2jk(U(6\h+e0E Bd%f9jL[8jn eWi-!t@Ȳ[t :aQDc45"8vk;p`iTteue{ 2X=cO?{m~Wm3t]g# {ֺq/<]b57}gͫikz(v@"3{N NP+4sva].'x >0((X^U[u7|*x@HQR ^!wסf1,Zx!ع  4=uWP7ΩQ [bhSCFY?BF@/:7!N__ B0j+4u(%X$vbcQ~mWΐov D% *p3'Gi4r'OyE@vlr\\kL3bc&GW/1P R&6'*_ٰJlSGƬ\h `-1cEzyJ8[tXS*TY՘S験?o/*DŏM')nOMdnq{<rZwD[7%[ ?GG91l_`z):w%}WYhg-IT;r<ߓW} BligXV.{nK]^"{ 0MSQ<%\C!IǮG%VUtzy @ ().P[!$NmjmDwR-F 8܊1d1G ,Yˤ -_/ֲym hͱ\.w7\S@/uEH-Ip|S3=8=HDŲkETuΝxLptW5F)hրG4hr XJAݕ1]\ "k򼆊\"LчGXc IX:=+X0ch0E"tj g0fA^*Ez)%fe.p0EHƽ O9jL:3gzt5Z8:;sgS3ƃOUC͢׼py`íT覢"l䢨>Ipr-8=mS;CRqc޷`AY6"B?ZC GhF+4u|GshQuM DZe;=ARƝ8bw9w8 i6uHځ.:!3MX>Y c-$(J^x΀4 0$\srPó+6tXwܿqxFҜޢh+oPY1 p'x ^Qq{xݔ'ьLп%= G)T[ $J:3-\Do'#dc)0a^nᑛUjEBݡ ZڮWn>d\r \?8$"!cч8jDYK 95fCeӦ`Ơڷ1anD"cH>^˅-TM}ӶFQқw+>Her]u 8ke#I爓iͶoU`4Y[蠋.#B(i'ä;_8i?q^U-Ż'0V$g!w; IDAT)f2H<MhY] %FDksP^tg w@C ݦ'^kR,a;'fpU0Nc{j {xd! Bs| rV&Pj`|>PRQJ] ٵKv͝c ;`6֐"itrn'v)bT!cEFYx}tحp~~[q'sv/㴄uU@kuXޟk5EEk_ќ! , D@ nvJ4#-%\ArJ/\թB]m/p~eEi)M˝a͢5_V0QG-}qH zJ͎u[!xsՁ Z'fC;~Ca4<93q$hMᙁatt)~gGw^c2=]0Q @>B/X4CVTTl= $>wy~+Hj4F]]?):g"_m+01L=`ۢi* 1:61Ϻ P0u`).lzrgbm4pƂf;%_Yj@cdcaȗ8{l^-vOY;chO#ZBj<}ů>{OG_$UЦMw#o,^[:um][Xqpnr:(;~Y K'n;L45 Gᜓdj@ :w8#bsAv1bt: c` .ԉ{H2sk>qAx 1;e~c s%&}>ʏ?m<9CJ$o( }쒓i[vp%C/8CӒݏơ8hQ+b[ \Pc<~1c: B[ ǐ2q>On(%.~g_bUc[Ё+?qޏh։gtxxCiQۘZxˠ]IkgKh/88;g-2"}=T $r򜞁2rϾ/?~@*m*\^o~Bk:uZ  <\U87 *k3MBJ"HE20\*"[dϱH2Tn hb<=BM`Ɲ԰q\h/mKFe^kTU19sX뤫Q${&wIN"^GqF+Gh5%\!;|0N[Wy͜(K*-~3/-.mA=As*1, rqDíXWEJAPg2Rh``?@,MOU4~Z+XX9az*BFB]_)슖,4 ~矒ޫ<)޴U gt6|34h48};DTH v%֫0DiZvo:G@{#`i\P7t3M&2h_nA) & m83-2J1 ?}.OwEֱ1g/XnL+cr 8uTeϕav=A1[E^X5;PJ|knݚfЖ.8YGQlq,%Yfq7T|$P2 Bh4T[`, A9ڶA( 6i:8-hL1G;ņ0?m6;)}Z]z} v8-XƠUcՖ*O]mKl+, Gd^ٙi괂AqJgS<.nY 3Y/[?'-v.NQ6ut^./ܮh>QqtڶtR,~ ln|XFnCKp6N-U+h?1ϑF@s;t:_)鴚"NXmQ5hBp\-Jđ#M8/ۏV3~5nYD,qJ1N߸'늪vln$xM3ei1]EᜓWH@|(ڐ՘H!^ܴ ۂi)n}Gԍ'COHlL|U@H<=gzW=_/tH)uEuM`z1~U@nl0z QuY4W,O;5FHӑ;LW0$ MSZݖd9PжDeYh[ӤhU@.te0!sҼ.8 gۇ89JpqqXu):p$: ]Bԋ]8z42# D_|}:qM۷@Gkce?_D@kud>?rь8GjGNTQ#0!th38wpx|)%rj˅qo4M9Ɂh3gs2O;O%#dKC4@90D23T%shca%=71X q4-yx0DU[|r)!!mj@X(xMb>%Sf7s_;{KV߀jY5{@$9jk'=$Um=7KŰVa]lZP8c@%h% EY v@S)+}٬QTKw5&Ye 8sܻ{,a](,qF)F)ZUt)FQ=/&gkH>uL 5΀w~L^ӥeWc0C]Wœuo}:͜Ex$m^zڠ u\)#aǷq -0815Z7ON\z:Ҵ舘u]z-ZeG=Fah݃Av !/-71nQcy8M%ET[xs4Ɗ1EƐyYQHҴjz_48\ Ki?G.8Sf#Z_?{Al ᫺a0@:fL" wE 'Qr4s"(c<hݢ {50œrWmg|[vZE[ak0N ݡH"]{hqw&7GJmkvO?i1/qt0b- Joq0 JA3dr0?p3''R#EE$E,7TR]5=]F$d6M'9FUW88ӳK*n)*(KEbBiƿy \-}߳<ֻya*zϸEYX҄>(bNSD9Q?k$I,% w%*@(-ֻ@sJLwp/w-JHs;fdיطxǜXYDQInQ!4 7n  d -4dMYUӝsMRHT{΍Z8\DVCi5Vc>!/M J 0XDYrZ[7nbPXryɰ)9-q8ަFQB`8gloFU{(j!$x./6Tz#lŠ|J́Gboi ]vŊs͉r~ b!CИ8RuՈb4pQ4 L+hՠ(*(M]O<DL1#&hA3\! Ei;:Ka6v⟼}M^;%$鈜) s'm 0s"h<{8?}ZG? [)OJ/eUvQbPi(Ң.{y nēk:'t@ }8&_ d5s;"F[) 8H2$/RuOѐ;7hrm$qr)P!qvB IDAT$!%N-;:2kBd]LczwC.Ϡ( 1Ti 7w(]ZZdQa! ҄E#sdiS!lc2m\"R'Opv W""99GȬs$\K dq= R#bÓ>9QXh,%]G) Lg ZrpNv%@ h@| 9S2{]zt:^޼l@ܩ&A{&d _'8?}rH~kthzyۂ7AiuNvA07,,sNwMT/%ZMY}(!|:'Y(:0f20y@b}l0vM Z`5X,čd SKҡE-sRRL!Nd-JѪs݊4Fxq琶vV_m/f_4>$y,뻱;@01GBFjP]:i*h #h0!EDM`W( L&`L2 p7Z 1Ǐ۬Q݇t=,&$](ΐ$WhiԺ3IuצMx.62E!Lȼ TS#C4M˳hߗDz<ȹt؍H-9 lJ?h?Ք\(/E܁x'/>_ n 1 .Ϟ`ܱ.ân;ux!^+a`+Jxh۾N |ĿsAdKAjuF mmc<_N): Z#c"$n| Ɛ)\ W_c>?w &TԹT gngBGoG.}}|1O`ASmF0!Ho߼lYGo!W/ Ch`b_X~qxS߽c7J?cWm)znΰ}O޾OVa tDZcG 8k삚Hǭr'-iP|\V#,80Jf݁gOfwGoA az2!tfh NQ7ֵv3j;Vߏn0;AeY )X!5j5o8@YTU4surIwyYX*م ز F|a~QCJrp7KRX-(-_Z+eP'/>r9cwKHdzC@e:燲X"ߤȆNzT#3GaІ]iL߯- oܼy]X=H'v|ãwT"_ͥ ̱ų^6 c_ Z^G'VKt#y2p8dz) Ɖ[cwi'!q6IkU!&x`|# EQ1%6 @*ԍA2Ŧ uО~&z%Yw׻vZx+|:nO8gD{{M5yL')l#Jƅ\bY8:!jO@Ma>xyn;jNES5N_>Fq$ea'!TS!N2Ht' dƶZH@+REy$8)0o@Yxːi:$Ej0A:PgƕN^ #HPSjWy [ ֫eN7 3 !H5k iTU )N\t[Eī1_,ZOU9,ޖW_k8Ks(&Qb:Gϡ abSx88~=Vc0>pqXbnX\΁_~n;=޵bȎXuπC0c{l\,4>x[; 2Զ aR:U3bJ0a2IF[8ŚAIRԸ7if Qu+gP+]qa k"JC5 "*1ܑIFvu/_zĿ$ܾY:t3(U;TclX+0i0n-ȲZ":;Y-kUp*4&_ x o<8 / rvz۞<#C))8x]dܢ* Al0c ejyUA(k1G^rNypfof;aW3| rAdY@},秨\H$DQ+\]6%sx-,G=YC׳黏.QB?ҴuYc iOc4|MܾM0m#h\E[[y }&DC\TnS 3`.- ϻ|.K`qh3* O./5XIj>1_u kE+/3]nՐ3~ 8曧 |%#جN6b~6f݆iSvEٴpF[@G!nf[oU3B#/9E;MEG@h%=VsAZs+C\E㘒˲$'ֹ:=gqb~MQx>궗a#,PM Hnj)a9`dBBb`u睯Tg3RU֞ đģbC 4lW e5Y+?۔",Qܓ%\9[bӿLO-qօE:tpnnԻpXhQ2jDk5fK\ p7Ԝ8l\ Hb7m뼮~?Gi'] c7/7pi}ꍿZәo;beQ.s,4CSŜjl9=L8!DHn .|}J\}㯟Rw\iß3pY}!HI+ /N?z$䭱VȠ^%9QQΎTSJ|Myډ6 g].^/w=׍n#Ae_I5LoUv~֗sqΑ>B( Yf1FxvZBw{c RlIH 8dN)J qQZ5qJF7(9bϿlQ}@pbyo^ 6(C&s/5Y;wƈnyAMSjpԥoVRk"(]i~ vdzgB?Ϸj6<.;E'}TA2BVt/1duWm9VK& 9w5`$n,l^/Zk ޳#6O^/0E؛ڴ) fM"}y# ~縘֧ ض胇BaQx.E!'x( mWu)F6 x8,78*!$ֱm0_DzuI"ހۈDUWߜ3:uF`59 rFp03pѠ*  P4NDmElҾjy2|0ХA i]`8ؔh1t]=Tj+/$hzlEYM]s)_ xzo Ԁ!0i5ʸ@ F1IjmX FSd=4Ma8ZK`h1ma^mcdR~gH=΢#6z{r_+軭:n\w+~j? ~cd U% Ff M1`Zg[/_]mb0H# a}.wng$qᕞ.{}7 w޻o#ɦpC,yuvjMpA[o"L%8ESXNsOUX,.B -֛qR"sPUl^qzzf f{lVn>?|(Jpt|xqR (-lȋbCtO.x+lV$> {{5d2DYn QHG-%p0?8j:CB0ak .Ϟ )WX ԍFhZu\:H{.{b|ͭLjYQbv !ÏK$8m-2Wm]6 \W Y6p|89RbϟD!q$ipvZ;4=w9DSzyݢhsf^vpeLыy-+h]c) eڀ3E\6b/C?W N.,ם ]y+kʹ~rxa4p"La u,C;<َi OAw?{*_]mZՔ*+X"ۖ [5c &!9aLtO)Tlpc<u}4o oޜ !rC]kn DUn\{Նp_W{a@B"88g ThxV( {/\`fpzqN'13LMcw Z7\9}ISXOڞ*7\kA()-.oʻ(;Up v p7 @Cn6-EhMwFE"]d8ajCյV pvlKbkC-0-%l;ˮE ]ne_ʣW%}!c?Y~(\XU9GQwwiT'O(@.45NFw0Д:,br6N?9g_McMOuNчN1&c4U<տJUxkldK滲?~Shs|JcvKC{`؟-hL]fBU,Z\K˰ޔ-ua\cWdt71A[t" F릁i %0pKW9$5Vdw&H;-,F*Ƿc>;C%B EkŲIKҨe[?4JƶA䭼K1[au_cm%Αof5xp1[+ye¦b=b\nVT֝uZ7Y]M|Nuw,Cɐb<`}bS`o9z4,ChCadZdD>>c\ .OP5a=fme5]OA |}o3۶/ĵꄙt{# l\d_d:1`|U|Zœ0By]&ZjE]'_*ןp% ӊ,WxqZ:@a@o'RryBXLJ̖ YL|ʖ`wH{xZush:osq5uK̯NY/X4MҮ-C)\Y=1I.f]aiT]zn vmOzB$Im_x'npf`5C/1Jtcr5B6ɧB;h%U'3Fcֆ2ܽ!eA_8Z13d+fӸɽu _Rz^̀˅##4"պɒWوC'Lg'ַf.Aq*5&1qŲb80 A^4`a-p5s`ol0ZN( 8GXt:&b=4 B$I %QhAHg8Nj?@TUC6ٮwe(~D0ԝ6pō/alJ"!:0ʌ O(QA*7x D {k$4E1of]<0/wήV0t۳q<¡Y3Ʃyv߿vzӭ?`שXzLw1BFS(bK )u+k"C-
B&ٗ$5E`0 /f0+锦(X \WH¯q^IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/power/hydro.png000066400000000000000000000010421177067165300270450ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME0*&5b4tEXtCommentCreated with The GIMP License: PublicDomain 6bIDAT8˥;k`/IѩT8t= CB@q/8tvdXkeAsKc y "R>r=n\, k`)ւmzv 4R^J ;E`vܲbVi|YӴKuH~2M\ 'NGqjdYvu]B} 'F" =;VcD@XfLM,$jf1-ٌ$)PUuc`D|F ưZ}& &H7' D,`/dWP+eIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/power/nuclear.png000066400000000000000000000013371177067165300273600ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME3p4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥=hSq>BiRJKP0` I 7PvCKqN.]RAt" hF6i^{y4Jwp$_`*yyʶL0;;{ ~-..9C7@jiihhazc||rDZ(R Ժa zJ,Jaxu+WI$Eֳ۞;0::IL&V7,~m߂H `sH&s*VaxtB9Y(-ukbbH I0d$h^Sccc􏙙bqY'7EH D><6@eK]]gOwf/AVq<㸗zk4o5l###֟Њ EEpopr-A;Qn"@$4XMn]j<.w=!w@B( Df Yx<( pc^v;(\ߏ+)9VuRv-ˢB4ƘF!p8E,~ѨuAV MӄaFmݾ?B. ǡ<ExwF`0"m:Zh6ZEnryϲ"@r;Q˲z0 {3{a*?0!Lu}eY2N?i&tϗ0 |>y< blvd.Am۔i@ `0xtl#bqs`2ܖJ- =rGx|{( !ҵb1<.:OqgIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/power/wind.png000066400000000000000000000012471177067165300266700ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME!vxNo4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥QƿuuF ,a벊,$$&? BB)UeIlPFX'f{ ˲XRe1`0n4ﱡrɺ\5 0rܓChDGmE"hb8DQ`&i45ZKM)`^N0m@*x!Ri/6|4MnZvtp8 ?%I,Iҗj1M$H(D"7n׹=]RXUէ|u8AXm'NufE@4aD"M];L&s(W<͜vBڼ^)!ɚG^hnt:}(pV \_7)>~IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/range.png000066400000000000000000000012461177067165300256660ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME :+44tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥APl6^Z *6n/ g1xA$īǒwB{[EPHZW!)IzF =l;.a~3f|> BmLjnGw:a3aw'V(xܑeyqax<~>1`6l^ZZ΋.™i_ywi(g2i'˲"qAQ1M(v@p8l6kOBH,R!t]O*!rJ;p8L-0D.:l̎ BH<8ϱ@p(q:RO.IDejņ锛L&ši M^jf,zw]xf98s$Ixl_Ɉx_.d2I.r-˺! u)A øFcG0Bm|YRmXiGIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/reservoir_covered.png000066400000000000000000000011131177067165300303120ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME+4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭SMKQ=O@2H! b~A+\9Op%7¬PUԲ DTfPb:NSZeF]\޻}R("@=OP(lB _L !D`H M6aXeY83\VGn~FHdI$=EdRT"8z@uFUU> c CIZvFGJŦ:cڿnr'`SN pVrIBx6C,0 ,)RiQn6쵌xtBpڵbҒ7u-[~˩#{[ p1vܩS4"k5"W׹ƨb&,k{IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/survey_point.png000066400000000000000000000010211177067165300273270ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME,'4tEXtCommentCreated with The GIMP License: PublicDomain 6QIDAT8cr<}$e'+~|+orPR <##cf}xsY{RG?l@^;}^Az Wqi޽{eޒSťO+kl֭[LLL}֭[${͛Bzzzd3X >|BǏPRRz㛙ڽ{ڵK̙3D>CCO0>?~0D&0 [fb4;G&1IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/tower.png000066400000000000000000000011651177067165300257320ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME6DD[D4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥OkAƟ쿸+RlhiaHB"$wҋB^ڵ%M- qd]tvy{Z(&$}`.1 ""08d4}kno]gҔ&10u!0$S$S}_BzQTldgQe..>:?S0mf!%@D\VhoMzpr"bؒ{4%L`mT*v||fmIVۍx^/ċˆȨ %/j&odgg;ж,K@=ZdRzyPikLSӲ,.=Yn0 ٬^=Y0 ^{u/nݿ8u[ny\FAPVZ]n0ƚmg0t:j}ϙ|7@sKIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/trees.png000066400000000000000000000015111177067165300257070ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥]HSa9p5M酂BAAMtQM /BVf('iI~έ1|¶RzyqRӁ| r}kEllU  JITEf^q',P ) شhTx+Ö;B 01dDaw.߶a2}gZS78}[MUl ~{Z1Q%/b [Irzhzǻ=v[Z-lj]% 92+z`,X#Z_#6=[YT \{ikl9[xJ*v fM3)HX6iTuIzcybʋ_E>21PʮE偆'u:]"9, e,*%Mch柵UM0aIQeWsO.we, -IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/wastewater_plant.png000066400000000000000000000013061177067165300301530ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME)-#Q4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥kAǿ]6Iii 5QkKK`r(SA=T$ Z"tkKI&IlndHb@/ 0{` `rc LeYDQdhR*HTG!1掞KR*I󅅣g''ѝ}\?Ix[<&4)JIRyiiv\ۻMiP,VWB=lժ;p8`.Ca T* ]?^YV1s:smEhZvkf? @= 1MSH&JUUU_z}Im('s;BHT$j7AaVPXwД9om|>gAᙴHGӻxv: ^YYY?l|Q__ZccDx`(r:-pF=9<(mųg) 7k]X(B|w/L}IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/water_tower.png000066400000000000000000000006761177067165300271420ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME!:h[4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8cr<}##c#Ԥ2##c @vv˗y !.EZ[N}k֝;劸P],2W~ˠ `c~|g7ob(aix׊# c]G?chTЈs"CkL b,cpfgF LLȈ3;S.p}zIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/windmill.png000066400000000000000000000011711177067165300264060ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME$Η4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝MkA3n꺱fsIHSA{0 W襹)1 ![KnC YM0y@D ID @PQw|>.lKk"zXGĪ5h4\n @OtK$.R\.w(J^L&+y1(g~`/ vZ>HgGk ϟVFleUv 7irQchUU}xm4Lsz? pJۚ'c^lR(cL3g8ct$],kOTĞq=t낦i_1?HV}jڴs nkLt 5pP,fO]^fbD0.~ s-tog_YV&IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/works.png000066400000000000000000000010771177067165300257410ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME&'D34tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥SKKa=~wٴ%IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/lock_closed.png000066400000000000000000000011061177067165300252550ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME8+KP4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥MKA3;뮮҆HI+]#:}Q< :vֈ #0 wuueffic)e H)SLNPEy'e0AB2Kt~_Zk<17jY;e*q4n޵AXpg٭ҫ3-lx;m{k,f$x Nvη󏏜g/8h4j &@r|kwƹEo9|l6kQ|#L&Dl6{N[0\yZc 6< F<@l}uA `&L)ot *|)H뿚]?-a6 " ŜO7P̶1sVLB- U `&6 LSB%m UVL0-6_cLh{}-'c uh@!RJsT] k?HPzIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/no_icon.png000066400000000000000000000006621177067165300244260ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/ 3T4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥1@Ib)ke-nAb-6BmL/@"֣D)-~DYI݁}_yH˖400<[k71vsFzi:N_N]87I4fE-(l8^?V]w8VM\I}ZD$XY/IE'WYДv/Ivx\ 9UM-6Cp.Ur; E&;wN~UnIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/no_smoking.png000066400000000000000000000016041177067165300251420ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME1B6a4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥S]HSa~qgSV33&Yl]EQZhe7E]AAFE]RUW *"9ZMj[g"]#{yߗDd@j}/-̃Eǁ5j4!&[ۦJh =1IO @o3RV0dֶS/ P""/y_EwoWU!YIS\n|uGD^$76|#0A30<< ł{`غ'Nn;AHdN7ؾ"URԳ>]GQԉ%C)ޜ&zEk6!Yl*acf>i(+$ʓ]$TN$ 4@g%Fh(^];Zyo Ld0Y0Kz/+OgjٶpugLVfBaRU`ĥU? 7?V{IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/proposed.png000066400000000000000000000010501177067165300246250ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME !qB-4tEXtCommentCreated with The GIMP License: PublicDomain 6hIDAT8˥KBa/Ԩ7)2xK-8:[Rc 5\HLe(d.߽9߽u\Rdk۽fYVuKREBA`>>f*61C3]]Ã/;ͻ|a͑oIIJ},)LH7 .?!,]IZpJ1PKܴ_M,:8m:ٜ{ν;CC5xKJ8rJ >XHH>\\|3 }#-`5N/; =CB4+SSߎ,ȟҟyW83~{uIsJ..ʓ ca&J<޾:>N'EӬWL) ]o0pR,!/`rR~֨Ch.7L("v]kA,l^s$Ţ1;^\3 a  ͽ4=}ax>uaѵTOK ./s! t5M\s ;dY@QoQ r|Vj`l28X?FU!B _ص[\DWWC-9?c{;goR>Q:;~6v=HmIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/money/000077500000000000000000000000001177067165300224645ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/money/atm.png000066400000000000000000000011301177067165300237460ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIMEiptEXtCommentLicense: PublicDomain zIDAT8˝OSQ?ھmuɷ!@$˛]Q'[CātWBJ`0FZQ RQVsr H3x (bF1bllTVN ` jHd2!v7x4m&'":A@j/z` ^xK~t]OGX>ED'y YAb.iWZ_z2OH=RA (ݾ!<\<! fwH8hQתU3h:"~v4PT&&L"7 u]Dc=qҽNk’#gIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/money/bank.png000066400000000000000000000012311177067165300241020ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME" <_tEXtCommentLicense: PublicDomain zIDAT8˥1kZak 8, SC[$892 E0u)I)$?nEDH!Pz^Lk#41t*b;||s09¿Eq?խvhţ- *_x&2c=-e,拵Z,u985ٽT}I`})yŚalnnb{{OwmI"T>lop8,R% |l꟦8R=>mbm,Kt]EAtk<]#H\l6+ /Cu lh4H&qB`k3)tpxxH'ϓJ}S?amZꪣ[s~u3"`&Je!{ I$B!BNCTBUUFу-'P|77yt==2o<^<zLIu B !wIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/money/empty.png000066400000000000000000000003711177067165300243310ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-7H"WtEXtCommentLicense: PublicDomain zOIDAT8cd FF3<'Qg$D4nLh$E`s$cf3,31R=W8&uIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/money/exchange.png000066400000000000000000000013311177067165300247520ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME1%tEXtCommentLicense: PublicDomain z/IDAT8˥SkQnpMAٴ%IKRPOk)]C/`{ -KxQ{jS% /bc1yH6ICUojfԒ_S_fJ@PYƋhw ,~l]@[YlƯ0nm!*IӂVG( ,0>cD][~79i2. TAN6Z(ޮ\4/P9C<˝JkUC״X] hU~gV+EsjhՙB=z Ng4rMIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/nautical.png000066400000000000000000000022161177067165300236440ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME:_ IDAT8 fffDDD fffuuu@eee`jjj@'<<< !N$$$`*X4 ;;;! 0"""-TTT777SM ttt  ...,,,+++---`` fffDDD ٫i2?IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/nautical/000077500000000000000000000000001177067165300231355ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/nautical/alpha_flag.png000066400000000000000000000006621177067165300257250ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME$(Q;tEXtCommentLicense: PublicDomain zIDAT8˥NA1%gEu>/bMaC؎:+LE.@N-0P۰I6Ϸ$33b3%yF4Mϝsp1~呂|FX,$^` I'9W =˞&0Ƕ}j(˛ճZ-mp?U%xX4f3V>Amcv @J7I$IOmY (>7.\]Y) ۘDofHfv8nAhҐ2IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/nautical/aqueduct.png000066400000000000000000000006471177067165300254650ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME;,?4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8œ1N@E m,nE:N@r+pDQQ4]Xfm]lDP~?#ffqDD$Hb3NRq21A I*,Kk{Misx??f6m^y{7ԋ/U.H{`GlhbT,[1`=<ÈY0u@Qr8hvoއhLJR&IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/nautical/empty.png000066400000000000000000000003611177067165300250010ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME.$ԛtEXtCommentLicense: PublicDomain zGIDAT8!@ Ē{y: &*;1 I-FNRxJ8GF\w. I |0IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/nautical/lock_gate.png000066400000000000000000000010741177067165300255750ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 1ti4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥JQsg2cd CՄHȪঋ(PZ2[w.ą G.J(m37dJi\.| */IEpbU=0iq  <(R׌1l*r9t:{v{m?K\(ˍmﻣѨaya8 `pTJTZ :_} " cLz>_3}0$IޛavwVM%IEc g"~`FR*Ire@ځ-8g;SQA3Ju Xh7VoFOXFPruGQl[: wt wy}qkRd#noI_t:z*O!n{xL湱RA@qZsc;Z0ީ]IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/nautical/weir.png000066400000000000000000000006551177067165300246170ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME/[4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ݓ1JAM [M#x xT!A[,lek%خA}YV԰j烙7 $IA,)vq(+@:7mGޑtᓤP>mwk0)}@}/GazUp}ڮk%Ri8<`2~ۋF_܀aPU+X,/!Ci:l\*^A7jMbִg7΂wϗMIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people.png000066400000000000000000000007701177067165300233330ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME !L=)IDAT8˥SMKQ=oIg$?" 0q!A7m?~D2 w"۶)hf)WR;ct#z3-h>2 oss}`|- Dn`yUe^(MPȤ^$3I)Hm6痗W#T*4;{}nH $)gd*n+NJw|U(N0 [8=]M86F D" !K7o AjAi&Wn# ].AԉX?>nkېCko-$tJ)zaW)>؆2J,uy,Nj-qgzZ8: B Cx=B)dE _o&Gx IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/000077500000000000000000000000001177067165300226215ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/people/developer/000077500000000000000000000000001177067165300246065ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/people/developer/gpsdrive.png000066400000000000000000000012641177067165300271420ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  TIDAT8˥KSqss;6f4Lp"/ A鍮.n¢^CfSg mnt^] <˅V  eqea8+X AUg89*˼>SV32_5h}xa J$?nn~ ĐOM޷tV+ (G4wꤚzXݵHgl/v&&?Lky3}Y ma!Э1bƶC1h1X 5҅lc r(yEi0&9w#),lqSea탹 J3׮$輩Rڲ˥ӹ0  I[D NM!C5HHM`Ѡ{p #X( H%3"o \O`h+v;Ha{ 8XXJO7VAQ*0ؗS Z-V4$d6CTQRﹷ1!,FU_Q1,D BB"%{=MPhlfZ1ƭ,CdR)D!B(жDmKh~[~dse2Di 2MRPmK0f3|oUUD%(Pi4%%B)#xONmKk|]Sxܟe]U=`(cJMkdLp xJ 0UE:&I65r.#-i;y<шd4"*<'2LhR yVp]:tJ75x żl0 s2(eR"OOc$@\wu,- 9mQ`eY%y)pXzz|%(X @214%i4ILꪢ 氼6ҹ!J: _LbL0J} S=z}E}o|v/{bvvpIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/friendsd/000077500000000000000000000000001177067165300244175ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/people/friendsd/airplane.png000066400000000000000000000002531177067165300267200ustar00rootroot00000000000000PNG  IHDR bKGDH pHYs B(xtIME ƞ8IDAT8cd@cYF*71000001P8jਁ@TW+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/friendsd/bike.png000066400000000000000000000023201177067165300260340ustar00rootroot00000000000000PNG  IHDR bKGD pHYs B(xtIME (5I]IDAT8MK%EȈE^N>.^zco ʅ# frRpJM/R\ ,ĕRtZjN:Ef,J'}C8}/Iy2d!y6 nlK[Uت•%'B .a(P *%%%btJ1՚#8Q GY6SdB0FZ!RزĬV0}<~W]G5G*b`oh2!* ,#}N& M!}q]74`Uǃ`2!%stW{b|p~h[0Z1K18$Ȣ@)ш4џ 6>ײ7sXcmk\ׁ2dQEAш4M)Y(Vΰ,B^J54ز/F#T9hD|!5њΧ;~9:%,U0IFGIy?*k3W}Mi5 &h˒fdFk:OkiJDŽQD~[Nq.{<ZiM5a.8|D1:I&՚du>:~:?;kOgi5m]ckWR)<ڍ{l_+ ߹c|Z(+BH),Ht(H{=s۟twwvbnV*CĨZ5~9[Q_?}ѫg_J|o-m5 } K?#LlsbY_0@Ǵ-M]lg36G3jЭViDQDr0kr>\,a)5Z,ie]W3Wf^,<^,hK1RilUa:PR"nxmbK|N;c!-979* T HG>B\` _r9H].D8Gc/`-Z\ BYb~n6oKEFgIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/friendsd/boat.png000066400000000000000000000002531177067165300260520ustar00rootroot00000000000000PNG  IHDR bKGDH pHYs B(xtIME 5﯎8IDAT8cd@cYF*71000001P8jਁ@TW+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/friendsd/car.png000066400000000000000000000021221177067165300256670ustar00rootroot00000000000000PNG  IHDR bKGD pHYs B(xtIME #IDAT8uMkUWu>ﹷ1!,FU_Q1,D BB"%{=MPhlfZ1ƭ,CdR)D!B(жDmKh~[~dse2Di 2MRPmK0f3|oUUD%(Pi4%%B)#xONmKk|]Sxܟe]U=`(cJMkdLp xJ 0UE:&I65r.#-i;y<шd4"*<'2LhR yVp]:tJ75x żl0 s2(eR"OOc$@\wu,- 9mQ`eY%y)pXzz|%(X @214%i4ILꪢ 氼6ҹ!J: _LbL0J} S=z}E}o|v/{bvvpIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/friendsd/walk.png000066400000000000000000000002531177067165300260630ustar00rootroot00000000000000PNG  IHDR bKGDH pHYs B(xtIME &k8IDAT8cd@cYF*71000001P8jਁ@TW+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/home.png000066400000000000000000000003751177067165300242640ustar00rootroot00000000000000PNG  IHDRabKGDH pHYs  tIME xIDAT8˥S;  >/c cѡg@  ́"`d.f5Y]Nx]4"3CSBnI~v(cQrwRtCu!eB)cc,]#·:agQG.xIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/people/work.png000066400000000000000000000004121177067165300243060ustar00rootroot00000000000000PNG  IHDRabKGDdddO pHYs  tIME IDAT8ݓ 0 ORRgQ&pxx,qLjX-Oox#Sc 9gEj[NG#Ko$jnj @Y;R}LWxmүރg$h0Ѻp-Yn%<5 H(0 c&x|3M > jMpNBhК*۠^_Z/` jDr"/5J^,N$IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/places/settlement/city.png000066400000000000000000000006271177067165300264530ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME $q2$IDAT8͓A+DaeDԄ-BS64Yl,g1e-fRRLٍDC\]3m[tzN냞Ӿs 4 2hvgņ +AE 2|^n *h]R%aL81h:Yh;;5k1rmI_0Kσ_BZMѪssY9 ['Mo}/Gz_IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/places/settlement/hamlet.png000066400000000000000000000003321177067165300267460ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME "ӶCgIDAT8c`qIlg```pӧϒdrJJʫWԱf? 0㒸x_~y9r˗/'Fc|?m&PIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/places/settlement/town.png000066400000000000000000000005711177067165300264700ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME #)a|OIDAT8RJA\`%EYJ oHG;ί ;PHcmVpr{vIrV|0ͼ!V(Ƙe0,RM} uzB9:&1ןZl̳kEa0~8 Itkh;c09R$!U5un"3=$"; y_ֶVx2 fraҺ 92 .ʲ1t?jfIQIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/places/settlement/village.png000066400000000000000000000004171177067165300271230ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME #@ȻIDAT8풱 @ Em1n3DY(o,T=)+ ~D",%{qw{7IfDR.5&1BR}kg 3[MӤm۴,Q3AD} ITR^I銈!d3+u]79u6 IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public.png000066400000000000000000000022161177067165300233220ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIMEDzIDAT80COa 40н   A@ . <8H?m ! 3!%7pR/'' 1// Umߒn C4040C0COał?VIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/000077500000000000000000000000001177067165300226135ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/public/administration/000077500000000000000000000000001177067165300256405ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/public/administration/court_of_law.png000066400000000000000000000017261177067165300310370ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  vIDATHŕAH#g4Jѥ&h% kQ$=lѺֲ lB+&V(X"brC1&fhT4Kęf]'wy|} ;+N=]d~\XVB!Gz} tzEX^VziUI$IREqn[QRԀdl6(,˲or`g'CyI^@iMI4A(JG!L%SIOS"+mF[MGMGMGP[[ `0V-Š"@0 u0}PUXUXUP+|||DQE مf]Yp:K_0͍F!:N݆~%%%@ z^+uuu,5K mmmBz(=8]ذaF,^|Ю+1p8r8r8uݺnv]ox6z6z6z@ ufL3oAag+BLe2S%n["x<`4Fhhhp8a1[́vR;Gwv@7f~@q8P =fΣhhh:. ^Wi߮B=> >o{V㽚8Y,`L$t~~-$Ng{ƛ7ʀf `O]oW{~$,*r;~PXXCh*2lǼ B4xIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/administration/prison.png000066400000000000000000000014401177067165300276570ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕOhAk` " UZ?l{."(i^r^mO/= zcC!IIKlJt\,0lz.߼o7߼yOZx^xS[V[T\QJ'IV_6MTX8_b[eY͆|ZVXk5B sAd2L&ST*C5TC 1۹4P, E{{{{2)fl6\g͸Hq8.3Мo7a}}z:nyyA4eI╇UUUU-EZ֮s?8$d2rZNl+J0{ekpCpxC #8 '$ppp2^{y!{(8JLJr\.>Oc10FHLu:siu]uXZ@,&o Q) ^FVVVd9Y 5M4MJRTB HYmEq37`=Υ6MǦ Ӏk!2(!<3كp*2o$!T'%NOt dYBH'?:g ¹,2H IyFi1UU{g7ZU5ʻ /xWBh$p{V@c`Au uEE{Rze Ao}ColI9YY㌘sONRaw94u#_?bF~`08X7Z !%_-@KE Y.m4MS*ÆPi\*7'%OA`v\q `:-yO'3[Ա@!y]19QR pcR* {(?R UO~8<}Ru>z}GQk'QRq z=6Ъ)" ВL!\piYkOAzD>y)G8tU^Tտ3ԁr8BX  R$TGZ` usθ@L0\+3gGu6AMr$&̓*I{Krm(Kt*)1EZ~yw,g=Uz-=1s\$/k@M||(UaY]{sқCb9UlY޾3IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/empty.png000066400000000000000000000022161177067165300244600ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIMEDzIDAT80COa 40н   A@ . <8H?m ! 3!%7pR/'' 1// Umߒn C4040C0COał?VIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/firebrigade.png000066400000000000000000000021131177067165300255610ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕ}LUe?{.^.\ JCErx).$Yы@jT%")[ɬYm9"QA]T`ƋrE{ }l` htMg=z"%я$_J0njWu䁻16@K7<;wݫB^je `g (X.Y~o;L2HSg!s2]f̡!=5'*AvrS#^o؍/9)~+zd_K-z_Z;lLZg2JJ,9pD' {e&/XCPlm`;tc~UmKNc?8tx. k~<~ݱ <(%ْ98m=PFs8ٕSuqPKŴUuҴ^@ISev0wZ@;h21S;Ooo(-=Y:ũew’n(=9z RΔfπh6};RT&EGG>s$dP48 <婌ɅM6ߚjAKw8>P(GfPV.ȓs"PڪX)pux'G~_ Zwy-"Aз[@@!˅;P;u@Yw@x @3sqM%Na(_6?o=axRQ?`p_Y4j*9n ӄ4l͡`CTwS~x Q{'bgL[Dۑڬjak}Ozr/#btsߖ IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/police.png000066400000000000000000000021361177067165300245760ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕ}Lu_q0; 8 %〔$:t:fZch.46&ImDi:& |HQ@ߡpk~>߾_@@Y$rD*4:::V+^}T^*W؅ $H(ΜYWF Hh]'q }"Kg[Snw;*1S3qd$&~w,|\[& [}[#~LUqW}a_K١m ۓTS!W(-n@L9eKMp|pbpTj]xx32vL6.l.W3nZ k^-8usÒu. 8nnN|W2#:^Oo*n(<7u[p{gNQ =Mj^(=5td3cW?n" 8|悁Uíٳ{0і` |w]U0ޟ>XbM?yfOckrNk6)Jj{]Y )Lڭ_]qgc^XSxW+qww:"ѧ|!/[C@r߆~ʋ(7†XV2G4XalꅲzW<F\d- @v%Ir8cꮕ(6aϷښ Ptf33  H !a`P0Ov/foB*ϊVaچl1pڌ\kջ5 cEi>`4Jwiֽ2llGFs[f5&"O~{:wŶBkM*Sɮ+e_5К[đ#<_|=IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/post_box.png000066400000000000000000000015251177067165300251610ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕ]HaƟlCڍi˙E,*  B!MHh^DzNeAbS!pktZ#P<7?ˁ9iv>$R)* n=ٜlfYYX@*[nf!"cb"XqkuO 3橂F0P%};F1~P(Ā.33f<55&zc@x!`/zLl<#/%%iy!n!ǰVi4?ݾ^.KŨ;kx =&0Z-8.?i6iVySJ{6 ѹ##yDQ&8TE"Pڢ(vDl>SrE9Ql"紎KZM BрF r٩p*zeٲ j_5b@_ r\ N)WGQft@Njj qNO`s\U)6K==7 Ltt١PN&7 itΓ0 Pc/x̀ Z!e y[M otU J5#?; #. D Tk*sr9]0=|C8"|: ?{:*0nn2Z2qZc2eIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/post_office.png000066400000000000000000000016461177067165300256300ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  FIDATHŕ}LU?Cd$ $+m?,kc![nl,^30Wl^Lf͵Ḛ[!ɍx^^r9?EqcGgs}wΎ( ?[@DB{/Gv;; 4'6"qHLMޭ]S+˧S8ywM^J.$d[++U?J^Hkzsb.(|_ʗJo]}i<{IU'~SfǪܣal]U5G>`V*C^Wk@k}ios(eZh}&Ͳޙ^zK~[nh-Huj p늘ֱu癀,sVrg!S]zX~iүb?g;3g]-VxOޭݞ{!ZU-]= ^8G\U?SCXTR{DZ^a7XۖEʟZ(; (9뾵LXSV%0TͰSG!tn̕*ΛwQf>v;d̸^JzZu:'U gE^Cd*d;kΛ1G ,[fo{B'8^ | vEpgexQȮ֭~vvn.WLø[~ zj92L,Rp|H= / 5ܨ+ @wb5pxp`=5N0 {z.mRv>ۀ|>fIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/recycling.png000066400000000000000000000023421177067165300253010ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHUkLW~+ȥ"* sM.ELjpȌ]%nŠlJts0`&vZ+rQeRӎ~9yJ̰n!pxOi%Z? {2HP(<% xυM&J0 af%=_(Qs d{.o\ZzK ^2k_L/kcwd-e Bf#qȲYW| L?@- G97x&.fwRC/$ؾB _"?3ʾ|tAY7-07 /BJc5SuevPVpcRϋ+f%,e.ϒq0R: LlrAqE8Н#;Sڤ{9}vZL'o5z3BTuj8 [tJ n&ămBX~m?uj2ܢM)~cA@;S2ߧ )zF;]SU-1}j_ RU`~`P1NcIX=jV0.(N(RƴۻUD-Rs=EQ((Ӂy%18ޏCkP1[: >^p'~ w$DX?h^ۿDj쀗EM5%QBs)pGg^$l&!G"Vy[+4l !w|'R5)?NX_O$~,)NBQ矁F\AG?{._<{U5̹O ERZnf!]g*tfzvfng%Ftr%#Ψ1ߑ#L\w\hՌl&cki짂+.{X9_.nã̽ 1Qavl/Bel>, $8 kzIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/recycling/000077500000000000000000000000001177067165300245725ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/public/recycling/trash-bin.png000066400000000000000000000021701177067165300271670ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕ]LWRi_ -BŌ- P4EM6L\d #̋-q7n LƍqYpA`,E@JgkTt[fG]?9y~sΓgq.@980v/sH^wӐzW- IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/recycling_small.png000066400000000000000000000024101177067165300264650ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕkPU @\uV@DTfPJ2TCRBkarbD5h70CIP㖘/!(b\]˿Zr:_9y<{s+0V.[* @ @e=k_DAAZa5wz̛0xٖ8zv&:=s KQfcIκނ7Gs!?(38T6U\(5O3Fz:LԚVז/.4DFܪH~hN %/ϴߞUF,lһ-]7oѧv$4 FU=o2 YХϲT@LI9m 3L}ޮH8q~ 6f$1l ^oۏX[p{V+oNP<0ѤmG,f]%Bpֱ|vךyaM[T&.]f F-RCUwӇ/ 3ͣ^BI(.>7:[֫p4HҬ̩BI2t$7%)q$A2^tI+yQ*YdG'ūiKe: 1PWScDz5Y3%xB-׌%=hyIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/telephone.png000066400000000000000000000017141177067165300253070ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  lIDATHŕ_HW_4I]m2h"v,-nL:k7z l,p &й6wlv VڊKfk-ZiX34!Ө!g狃izQ{xy<|&<X<'NmrU Kַo?.WxjJ=qa惒;wJI*ʣdu 94a{dW3S 'dCIU̜P3M8ol4j+-1Ą̦ $o=g_ό2~֕DZcۙx6ӝAU(JfD(zr(I}%,moklԯ3(|0sv,jN&c^*,?s8W ɺup4ҭ-r-\\<{8U@j0ݴó϶nar`9}GhdWNi:k.d_8,@Dv]c>>!D4#e5e5B/*%zVmbU{TT%%L8$D̿X0Q0A5 6C\z~xm{郖-0>>77s_)cfF#=[~ 8`T2d# $| >?vEn4h/U]U]3(m2UA콍b -xȑISڔ21' >'߾$.\1fd2 pQVj5>=V{Iǘ_W}j{Q(S,u ߍ9I.-INNBY')|olP1zYIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/public/toilets.png000066400000000000000000000023071177067165300250060ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  gIDATHŕmLWiBP[E^]'K#(\t/u l00[&Fq#P!$ *H67*0efs9J&Ye 01j͖*pЂN7^@=4p{|xaڥvo|U{s^>e|,Zh<哥8kH$gX#%z9\&D-9*,r[h^|X)ޒ-6^4QEf%@Xݟ3DEk5]"MJͮ\I Χ@3R~uAYu .HV=XA6@*%RF\ծ,^NO񢾅;b'fC8Ut@gkrVbPqOXi7\#onk? 00 i閲 θT%7Cb_8l:||8*s'{8) !aRP ۶z qA8H3h{*Z!mt-hȒq׵NL,Y?%kL٤[2fFƒi2j&8$uzv8zDs W<_v_/K9Ul0Zp "Rf|@x)w]GO`Y6`ͺ$GȚ{nwMAqCqŏg8 ]vgSq|1Ƒ =WyAGOY`R 3Ȕ7\&0 &itg5qs"emB jxF,Yvv w\ MJ؈%>@$TQ cM ߑ'ԍQm*a< ] ~`q_Zq5y6& u>E; /=Xsi)QU+\MisTٛА?AW5Ƥ+.=]>S߸*)v59?7*EPvWc{TYqħu?r L I=uIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation.png000066400000000000000000000013721177067165300242010ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME @tEXtCommentLicense: PublicDomain zPIDAT8˥KQmnߘ3^вjFADRPDDV!njѢ]+]v@,E2tFgi8]zÁy> ?_G(I*H-˗$eK{z5)fOע$n8H l*r^>Z{xKhivaq7ckOeg--ݍ.GbPhӕK:GCczA@*ut@Q1IהȊBēL6yez8OQ3"5H(xc/5b KV. B`(+Ds XN$MmlFk^~|,/,tacuh6o͌w9D |$ՐBa+Y7OXQ1x%]ei[5kzOĿ.Z̈́I:c/>\t&YkJ B% ڙ""D+5c\$K,z =2V*:h1 g1Q>M,f'xF#4sUm"E q%j}C6NT\$ k-o2cD34hS \fhIqӈodsuQ!(E7 2!A^BEĴPTh9~h /{Nwnνf(`2!bZ@?PD7p0ܰX۷#`% 55X%*~1j(O+<;j5'.Ħ6Cvq8[Q*c|$ǙsпjEߤz(I옲g߯n}gФA}"-}ӱᇳhP4gÏt-EC##'Pg/mSj4ZP݂?tCJ/ۼzG!o>n#mTS5S4u+ӐGs/uO0T$ 0Juh2gAmޮ|ٷi~N@=ܼ,ynʓEhKIL.5 #juթ,:F^?Z0@ww]ꛁ[R/]'&3qrkL,~M[W" &Z5i˸`Q2XsNx+@@MАB>A_zf˝bIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/cinema.png000066400000000000000000000016471177067165300254420ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  GIDATHŕgLSa{ CwJ6- jT" Q 3j@&&'qa4"ÈQVTE VFB}<9C$3@g2t: &@(='OBaOuuFnq~ʕ[&{Yӝ#Pi;32yոSZ&&厎n6ݺktc]D'S@,sP4b,}MQİrϔ3'>t9opI X7~ˉV]3y" c o)ҼYUPCK,ز(?@zV.4AZ}w׬o57yww˭UY!h}cbLˈv\1ëIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/common.png000066400000000000000000000012101177067165300254600ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  (IDATHKHQAPs {HqEP" *"Zm*6Ah"2M-" צaFuZh2 ݽs. XTfD"&-'9P;'isC 2p/_)AUfq;?~BG1*hLb5 ge"BYGZz$7Y򙒟|{@u:vRxRq]>MW-;=(u_:Tgn$"XFBCW'J>*.`!ﺙ4]z` /ƣ(sFa1 nۏRC PE" H,&V(eNo2@9];^`ek fy9_ӡGm+o;ؚ ~׀ g8E)JgʦFe>Kt:I/YF9B _5.màXƱz>HC7IT*ɗ~Jf}v, :V'QIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/empty.png000066400000000000000000000003621177067165300253350ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME.(m|atEXtCommentLicense: PublicDomain zHIDAT8ӱ 0y*D.(4;!J6[RCZ nB7L o&Y% ٜ (;YkIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/garden.png000066400000000000000000000012741177067165300254420ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  \IDATHՕ[Has5n0SAiEEWBF&I J"@$ ,0PQDg}"2Wu1CQQV=#i\@j5>zy+th@11^â?[A _BD..S|tiH[#ab,(h|0%*i*ZNsz{/Pw-+ 8w1 sԷ@ CC&1}Ε0xk4wBk;6۷6:n})t/~=Fp?tmuBny& 4 D[{'d?P4$\H [; 9.Wi-@sE!!te3ˍkEVo:bpU[i ƴߏu[alhe\҉L䲝OA=/xF!rDR @`ME&5;s|yyIbfϾuUJTΐ(EZ S?wH~z@=_jSTtPQMIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/music.png000066400000000000000000000013641177067165300253220ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHcd`p```Pa}  4>|``hdd`HPdd`y``LbᐟCز"0{ 22C0|c\HH=.f]F*,TX$&E0\ǥ R7,bNa6Ox3YMNM%ߚ?~ c+T/t}Cކ5 '+axϻKx_ _$}XWد%+M^Z``| &.9KpGۊmXҫ'l5h0|ߜsR'a"| }fG E_1wJ+a5~`}O3I|X˙ /.+7׮4/r-zoZ|_Yi#_\pd6q+tStbk+= d,$_Cc3-_d*=ӬLŷu/|[0#~?02#Rt.b:Gk% L'>+Dv^a!a)tDZ&D$h `@e*!d{IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/nature_reserve.png000066400000000000000000000014021177067165300272240ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHՕkHa\_EFe)8a$K.(v$?eC,bfEEwI])W$tmY*BXvy@ ̳>j5X_]Ew{ QhaI:v7.+۵ZOw2R- jN,vg\%X8oES@uc#}#`{Z[ +$` a *8n f㆔́)}Ng^ ,u]~@c=C3Z auOAK;wDl`Wyt8+@j^f/^]^||$9(Nz47e:Q;s3 x\@sB.zcGjCn@Y4%ϏNF\z`(ud@>G1r|p({5j# #+Ư!'xTT(K󃐒 ܜ\=< $(e:lKb8\EA_.Ҡ粪{`8 r4uT"2>QG~[{_m'hϸm$tFqCg8wTk"ŷ(B z_/, <IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/nightclub.png000066400000000000000000000012651177067165300261610ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIMEH|BIDATxڥSKTq=P:cr8R=\9\Fw& bdnu@@:ZOBHRiA78{p)Նf7ty-L;pk#|؆ {=\YjbcVB E(jX)GMn=-o& o mD" W>)~07+P %PkDh{jwe{q/:!b?!b;&<jx~w:u:3rvQ[aIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/picnic.png000066400000000000000000000021211177067165300254370ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕ}Lu?+8x;';HrXΤ%4dҁEMZDf6DKNhNbǠL:\(l"p>=yϳy1@0ءylmaX*tvhm9P*gt <(x&%Tx/Cʜľm^|7<2؈|*d\3ңx5O^?A 쫪I֮!+nFCuِk @[-pAq_Wr\Dpϖ:%lkYVe  7xq0c|__Z[ w?_\4CAZМs`WRpq~< ?LJ~S "27&|S`[6SwC?VEM-GY,Q6bf2(O* B^jORTz2߸I)ۣ'􀄆͍o_6 +=p!B؅p^r^rn9*:ͨƢId@-RA+Ҋί%9y0\;NVy:#GV/99ytWd=BNL\{oEfY6Y bbcbcbA/?SQB.zhu$'%G*`oL]i{~G@wj9Sф uRŦe! xNsʗrU?K@}^ ز8I hM8ffR|vvjSTPM4'e>P-XFdҷlp5+ykt V ;ǝnN02U8س/p17=|SWءXWB+X|j]"@41?4MW)M Z0 +Tl^b NH&@W.E ~Yr߰kةibT.;u˨.^|bgiY>!AcDBl[s}$qRIFW+%R݁q%th_\ Q7Gi!9&Xy%YiHwyA!{l%r-6-}kY{LN b"ݑۑn>; p^>(Cp$zFB' 4oY }G"Cam}=|g2F>ǿfVIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/shelter.png000066400000000000000000000014171177067165300256470ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME !Vlj4tEXtCommentCreated with The GIMP License: PublicDomain 6aIDAT8͓MH;n"sFPhDaEt.CEIAAd*3Cce%iFSQnts[ho3A^<?eEDVO$6W]fTNkI-xg{xeZ_}.keZʆ'2J c7;}dG*iyZ3&(8*5ˆn@ŽyRk/z!TDRc}%-JP~=d}gB"*Hp3vAl,3s ER  G+rM}EW($TIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/theater.png000066400000000000000000000015201177067165300256300ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕ]HSaǟ3>\9>5'$  .ԂbwF Q႙,#2Prbn/rnSw67G$ FjH9>@ }_c@ LO?Hw?>Z@oxisl6S1 _3fysTJyO)֬SWNab=_n bfV^R2oTt+:2>!ԥbjӚZT@3W71e/b{+Cż" WKHaD|"۬EdC:nrWumYW$ՇZǞOKiźc]Tbt :-u};c*6ᷛZH? 3UaD^;%xV[)[IM7v7ѿ;$vHSVc2+9F~ OXStաtBHa^\s}s}R55/Yq>_3a5Sd\ KOIZJhgH@UMg e(Z8WfFk(h7e;]_տW]W7җ B\N'+0 fP, _? P9f>;; gaEbZ?EγE( ܁Yo(|0'nODDN]и^x1,.rw\۟Nܐ8nq9\ߚvP,JIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/theme_park.png000066400000000000000000000017241177067165300263210ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  tIDATHŕmlU}ڮn5Y ȶ 9ӄL&t&F̢F3SI2' /$[#I͕!n-G^t}{<~(rs=#AP z[  F IҠ?qػz JJ|(@lia ˩]? \ O` rC  wA[qǶ P27GiB (a eP@=U`BM|ps-*6A@P&5j)A+{kK*AL$[fK <0m0+yAh7H-|~49T I8v~yå0{ٹRIfXޗF#C=bIIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/water_park.png000066400000000000000000000012351177067165300263360ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  =IDATHŕQHQ  ^p03""Ska9Zo01tA8@D}}0bXmv_s$s:<4 :;i0)MZrZ~ ! V϶rG?wۚUiZ ʀ2tB2L:P}o5 }}*Ӱil6Kƥ1huA<vb;%_58,}ay77|` ?> 寎H㜺9#gjVQEQ]u]Yv!JR0Dn!,KbToRY_Wz_g˳قxcޘ7D"HV(h&p9],: ߢ׮p1Ɗk $άu\yBW=6le,'A6[0--6PLϘTUӏ:XN!Q1j]yh¼w ==IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/recreation/zoo.png000066400000000000000000000010161177067165300250030ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME"Or 4tEXtCommentCreated with The GIMP License: PublicDomain 6`IDAT8˭AKQߝ0LhA  e;D 6J$$DHXQ:6x[2-:p9^sQĮN4){iDPLSJML[c[<0! #wPmȺ 8!qޮ}*m 9v-flA46Q?(nh3U;!{NiV}SʋWfp;cm~!kYNzO"0iC]{zau7]VP[+9m䨚~=V.QTGA *%q[L?:yIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion.png000066400000000000000000000013641177067165300236570ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME "\tEXtCommentLicense: PublicDomain z\IDAT8˥AKbQsLm - 5MfUAVj߸U?hDDEX93t(fiivz,J39{EAֿ%*+H~s}C"0Gޔ!9pVP>H묟שwHy +|v 7i  ne Hm=wihCNۅebcTþĈƈn1%z3 @EK&Y,8[Ļ,U*n'Ζ){dYXWO9dszɂ i2[# HvUV$I)3^%LT/ %!YϽn7k]0ҍ =W(059 "$ FG=X]fNN}ۗ@kP#>#AUc.~Jr`&.3Ϧ'ZR[P(gg²d2]J|cc4hdzAK NXYn=&{&':pIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church.png000066400000000000000000000007511177067165300251320ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME854tEXtCommentCreated with The GIMP License: PublicDomain 6;IDAT8˥jA{WxrZPIea'|Ne#r:!rx'G03!$l/6ǀĢP6 Krl#FY"B&LS#Gg!"i*T:t^OA hVi׵\AP( 7n=Ebi8׈+Vw}T6"jk"RzY*zcZ֚lKjA):yӭK,,`w|G)8xe%`æ[,$ uIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/000077500000000000000000000000001177067165300244215ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/bahai.png000066400000000000000000000012511177067165300261720ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME Ua4tEXtCommentLicense: PublicDomain zIDAT8˥KkQFv;fQqlmi @&E@&,B6 Bi+Q:ɈM{½8M`/+N|L94fSqhʼnp!22gIt-eo%UZ0_c? vR WϋW1ZJ h۴mݿBlT*TUVcƦG'jl̷hh"EGX&d;$kgǯ*( PnK #M4kܻ1kb@Q3>6iZIzɧu֫~Pag_Bk: $ɨ;<#'L ~\Fj/TNf)Q+ #D~ 6CZnZӃGVUרo}20't>aLL{+ڰhAs@*eDC݋g&wTzIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/buddhism.png000066400000000000000000000012021177067165300267210ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  !tEXtCommentLicense: PublicDomain zIDAT8˥j"QTtq8i$a>.EKSu<#F,Nq  "Q,.߽ss%Jvҩ"D~p0DN{%J_w^۴E $92Fl>x1ڥ{4 BtJ3mԩ:b~Х{tRu˲}Uu]i58ئ= BRnt]g?0xI)Ų,T*|>lBT:m00>{æiiarr9^/aiitkޤx[ھ&mǽ^)%LZbqضd!2ݙgЪU%P,1 q(sW 1bu]e6!|G|>u]ԩ:&AkjRC_d2 @"_;OZYyO &>Lbʏ2IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/catholic.png000066400000000000000000000007321177067165300267170ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME >!D4tEXtCommentCreated with The GIMP License: PublicDomain 6,IDAT8͓1KQsUBB  ZGCS˷ .7 FiR 8`~| w:y,o,y#!ud rUŖ @y"ѧ3N͙B֔^Ib]#FiE7(@FӦk:V5A6?Xጏo|  آm2Dfp^opiP? qVI&e"/*WiUE >"*e `um/$>c6pt랿2v0IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/hinduism.png000066400000000000000000000013171177067165300267510ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME "P tEXtCommentLicense: PublicDomain z%IDAT8˥MOQ3cH.d$.4&] +7.ܹoO,Q %1UG!HevSؘ4ݝ +VDoc/XXd1s< + JuEK ȣK 8tRF@tÍ֤9?00[БWY8,S1ϼ}ι/*o}1PO 84NQ`Kt`UEmoQ+8D@N}8Eoc-.RnyPYhV@h%J"HH!I2N8(飌{ȓr܍[ ׼x^ddQ>|-ZWdN.-Jb_v>4T>F,"8h*M*TFt%v̳(Av JFm8N|DiBA&%'I  #g88s5#)LX`{Dx0 3O5ii,XkX*qv͂,$f ve !d[xZIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/jainism.png000066400000000000000000000010231177067165300265550ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME %"@BtEXtCommentLicense: PublicDomain ziIDAT8˥N@ZZ$D4\OJv>Ck­.?_K7ࢢ%zY!$_NHSܤyBJmKeʃ"8] 4@Y}iIݦ]|)7pHK[cUm:t|~7%k':GsY w^f-,@&e*T#FE@5h<4d&@uzK򑨎vعpY)?ܯiK^{?/LB!54C{yeY䰥/Z7Xe?`>=wzQO5hk_<<`F ln0jDj5ӿ= 74yR6+L7Ο㛢mIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/mormon.png000066400000000000000000000013141177067165300264350ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME /(tEXtCommentLicense: PublicDomain z4IDAT8˥=H[azћhVHj:H3 B֮%vsqpuQ\@ JAńZ$&4F{hP*큳>$_>I2ĉy%IY={칟ʔm묿wSNۏ8rV ~/HpLqX_&^fKߗ|Uh«zf?_̖T*E&Au àX,DHH7"7;xC$F,DDѨx^\.'iRJRJZBoCVX6 d{^(dmmMNNN$ >H:>ΚeY2<<,6M*,//?,K\@tV[kK&!ahiiZV'rdssStZSBpqccCDDv0" @PiavP(l`^gyP M&Jscs+q:(LjkhtuOAG#%1s0G^IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/mosque.png000066400000000000000000000010331177067165300264350ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME7-@ltEXtCommentLicense: PublicDomain zqIDAT8˥NP-TQ!QIpA8>prq88QJ(QH!=~rPQK@ \a턓[( 0p5WzvP 9/Gߚ4\/)zgѾ/hh!p}Jumq5j=z3&'&I2e6$X%qedmGML{ H\||aK|>ObkQQ'~o 1GQ\q,R_pY'O$h ]K1)R/ U1W"vD~w?An;IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/protestant.png000066400000000000000000000007421177067165300273350ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME !4tEXtCommentCreated with The GIMP License: PublicDomain 64IDAT8˥JQEϼ$ (lL!HZ A2 ,)g;Slm 6-B6Ⱥ\x9ܙ jh{):tҵd5m; [)-Z08PyR}SAfLi'L]y6BZ)"bbp5,P2D$It;oq嬈b ":q ǓAWZ~]?@DS=Kar>Sš:"* *bAJ$ȺHL7\ (X?ȒaZܾIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/shinto.png000066400000000000000000000006271177067165300264400ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  9tEXtCommentLicense: PublicDomain zIDAT8ӱj@ %:upp颐%#ۭY7&:Ft8qAl,n~(TY UQ¾MQw ufriGMO5 `c]\ë_ ˤCS׷t -6l$@C \f.;aU~e&ϤʂEO@"$@"=xCn hG?w\=e:ckIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/sikhism.png000066400000000000000000000012271177067165300266000ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME  dtEXtCommentLicense: PublicDomain zIDAT8˥OOQԀ" &G$M~uטO;Ƥa6VP* 8EKCpVIsr=+/X'B>Y`cKiґ- r'&8(qY0g`| mڞ% 7M &N8 QWQ>|Vwȇ.)fb@G/ L :9„*㫬~ceZcxP+M:j`b%$GBr,,{oda p$$2'+)RgFH,\n҃v5Hթ 1bO\GdZ#O^i%I\ 6ب .fJK, MC^u5gݜZ2~Ͻ׽v+ME<7w0ˆ^ә^2,ߣDnup7 ۴){=z5Al^y2<_18ҙctcZne >kIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/synagogue.png000066400000000000000000000012131177067165300271250ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME+}retEXtCommentLicense: PublicDomain zIDAT8˥SNQӥni*T4UFM$ /}|}_B@;mPoZ6hk+wPt|3ts@F\Bg0=0"'UYK x88@sK/s)e"&%΅-DX@t3\E} _Ubs}="IO7._\Sz>nixwlZ&-OVEf!}P+yX7NBוC |*\yyB~ #rm2(NhKb6/Jn#emZ=q < GcRENj_crc^ ˙Lp 0RM%Tem¥S6f Wh51:n̫1׶?߄t,p㇝%ߗY {οWAߨIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/church/taoism.png000066400000000000000000000012431177067165300264230ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME *FUVUtEXtCommentLicense: PublicDomain z IDAT8˥K[Q?#DHHMp Hj} CBThKH:?dKp(-8:H[Zhu0!dyBD^=мp|=4Y@ʽu9m Mc pʝz N?VJ&I@H/T|o|>u^Sv&AaFO!~]?eVwG@nWmfxNi|'hZ"Hn.,a"?8DdjjHX\.DXXX> 2 -b4M;hss;`3JTefmx˄= T YXbą˴+88zU:,IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/religion/empty.png000066400000000000000000000003671177067165300250170ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME..TtEXtCommentLicense: PublicDomain zMIDAT810Eq  4>IC?smȨ#"oIrXv}~3[~|ad6+ʩvIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/rendering.png000066400000000000000000000004001177067165300240120ustar00rootroot00000000000000PNG  IHDRxl0sBIT|d pHYsiZBtEXtSoftwarewww.inkscape.org<}IDAT8cl}`C8mJpVOi_ #?K_,vgi(60jZ@`a```x RJ,XϿgo> P(X r$fCIyIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping.png000066400000000000000000000022161177067165300236730ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME0IDAT80OOCC彽ᱱaOO3}} 44R0CC4444CC78EEL@;@6BOOft FH+0fq0-0 ?H0 DD0HK@B24 +0*$ Γ   " #0/" # "  %'$/  #  .2D3θ"cc &: #lo }_`^ &!+'OO3}} 44R0̓0OOCC彽ᱱa~ޣ|IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/000077500000000000000000000000001177067165300231645ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/shopping/beverages.png000066400000000000000000000013141177067165300256340ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 1>{tEXtCommentLicense: PublicDomain z"IDAT8˥KTQ?7r#ƁQ"̂0mrᮍ 6!&(Fȝ[v% Q +aYq{FPW\|?{!=QUYlB5 " 33b'EdfrWޢ x(9-FNf&1j lP[pAWq[lMy/~=yhxq (:Nfon]ELG{bqVi^^æ:C}\ry:WE!Bq-a/$ }IE:چ/(r dA0`0<`F<|/ԓRKo[Wc% Iju#l%Īőݢ%v0xI8-9dN 96=v@RfZꇣWƮ7ܥp'k`=}Q`3KX^ XZ HVو]0HfRm]4.Zܶ–-fRivPjNLt/_ڲIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/computers.png000066400000000000000000000020401177067165300257070ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕkLeo۷rلXT.(1v6&M0bda&8$]:gklMnT - Pz뇭~p!e$'O=眜C< aS -<ǵb<ŠpŠהAF09A 46 @y8ء@`-8QL z0k֩ĺ wȁ笷Kc}OG@D!nȏ8MOdٙ\MzGg/_ 0fum-"dg}&x,Ⱥ;$ >h{Ē;Nm:Ty~۪%O ¨:STu qnL;AJsD!簵_~ܑV]nh}e'fZi@Y@?T'Ʃq_RL)9Ƥòv2QZԖyAx ;*$٭Q)36@Z{ z }Z6dDMGf-Ӂ7Z^=dʼ`#,\|{B!2Vڨ o [v;2%jL,}&kr/s|KGKK $ m!LpDL P#^,3>g37Oښ#h^[Oڄ+(s_'>,(-$?B;& t@X4*ތhޫ]6s@=͔F|[M&R @`;x<< 5]}.?R:r?N$Hq$vWA&G@as~i.졵(l’0ݛ27>|CjXV|T6t 2cG{mV]!bz{ v9eZIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/confectioner.png000066400000000000000000000021551177067165300263530ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs   IDATHŕkL[sNo+-)T.+e! 1=Y2N 52?c-,fbld`Dέ&@ u:.kݬ2nr })9_g@fH$ ]i M0AYVuU*;-D>1UU@xtTw% Zcj i\4 L3%% A@"@dvetYOq5> :@= $|8\VzfZl=)&R{nηG3%agb _FrO\K %WW|fs e{Wa`Mc-@0HNb?~OP10~V86u~<ӽ"gVI{ܧ˾RDFj>$s=xx\#34ctkfe7Tkпe~TF"J8 ײBjOuh4Psw[b Au,)Db`IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/diy_store.png000066400000000000000000000012751177067165300257000ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME&84tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥OAǿ3J+-b=f[37 kd?ܜ}?1Ʈ$җZ}G0xafq$l.l)9_)3@ma!*^./؁d2V{kI^mcxzY4R)y2[[.MOV#SDq-\3S0'P 议j\.[şR<>qhmXW`9=4-eZm((ᶅO4cT%-ގ*M -n#^U67yk( L::ϴ1i$f[#£9]wBt88.Nq iypq-_IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/diy_store/000077500000000000000000000000001177067165300251655ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/shopping/diy_store/hagebau.png000066400000000000000000000015221177067165300272670ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥OLu`(i;YlM1[:g Iw2CB1`4pЍyMonc#2& -Jxy`%1{Hxww#a^d|-釮GG[.d7b~IdHgˏK%gftudUx"Nod-ǎ7 9 rpdE.p=S |9$ |<LMiR.a]O=זg?rjnxJ&JDœLn^L&3.о5ݷʧӜ'gRmnHV}.D ;oJ^}DjujBvasdq.@]sx#-,!u$EAxXPQu6\A:Kuv"7E[G4!:lbV(ol/l:#6oy56S:Ͽp{kC((,>~}c]w-Pzo 8j*6Jᓣlhash^+3Qb, "K71!u@x X*Ԙ44hߙs-ˤ 2!51j~cZZT#q0Dʛ_r2Kأ!Z)!U!n}l%"n爛LvZLBc1Dna4\yrg.%r(5$Rlw&lž{ջR"C2}!ůzgD.#w?~'(Ww7e1 &kơO2ľ=`rZ0P0SQD}<چ^ {GIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/diy_store/obi.png000066400000000000000000000007301177067165300264440ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  xIDAT8œJaFBs E6A G H .kiW3Z%JΔ)9_7mJТww9'i\pE9fb򢘹.[4.a0rZ\-;/<$8BODZP$Hfk2ꡌs@aS!)ye_ؒ˻1-g?-G򺑉6qA{V>Ը|J]F01FM 3'M7I_èzr{}mt#gv?ljP%74}-ޠ䴂] 䟾zng7SH.P$iŌ[0/E5ʧ_z=IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/diy_store/praktiker.png000066400000000000000000000006671177067165300277000ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  WIDAT8ݓ=/CauJrj*T| 6MZt1H`6?hbH m"aA"r(Gu$u wGarPd #A-^_B+GwZA4GF", [,2Pa{3{tvƧ4kmAzs>֟q} '.n".- N_AחrK  ^l[ߍ0E0OhqY{0^n?cqW   (\w:S K ܜ5/@-.f6,X2lݲl;YIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/empty.png000066400000000000000000000003541177067165300250320ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME.4l .tEXtCommentLicense: PublicDomain zBIDAT8퓡 R&ba2 =;, Pġ$ ]j%"N d#2;/ŴWUIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/florist.png000066400000000000000000000011761177067165300253610ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME /$ \tEXtCommentLicense: PublicDomain zIDAT8˥OqƟQFD4!t08'Wf#8!qV7QS!m\^{DB=|``"c/whybF<++8H?ߜ; "R>Ss;MOJ=[h;6$$ &ͦD&-jצ3/kU8B 2zHnv=6xd7xϺrk %jN*U"K T*%#hsnoP?;4^NudD !d+f0H57лYlᇻ]v5O9V|IMU„/'hGч-IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/groceries/000077500000000000000000000000001177067165300251465ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/shopping/groceries/bakery.png000066400000000000000000000020661177067165300271350ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕLe_Aqt xLAI"jB#lb[mQ˅4ҚU~~0ܘ\ 4hvWP:@o8G2X>{# =d)J5E $i8ۈɗuFd::]ZS,QvZHADE!+駱Q"A"$ 8عtJ^"n_\B8!A?:yeE=l֓ӹ0tln 0!;.섎 08[[`>~za/><m.I5 P5\j~ãs?"/Y09l(< YSy5f)x``bff|cZ55f:}>mz7j^I#m?hTDM>lعJ02 67EB,UVLECd䶊k~fsS3LGO挌ߧ8FjC7m>_hYE AoOG1C"K$MjzTח*@P3qӗ'\ACUpOvOQ}oO:\}U{4]GA7g{ X7z34=-tlֆҋ|D$lf{JXs<#ln d?LD^Ҿ.} Q&A\ ȓ=UsVluw= e.. sWwD_VZR=+ 2##7׹mOO/_4GI&G2XQWj]՝ŹL-:9N^%)IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/groceries/butcher.png000066400000000000000000000007221177067165300273110ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  rIDATH?@`3]K TVF +)Kb* A@ˤXm!0͸8Y8r6MgF<]MWU씝s;X)5 3XE Kv.rJ)p]uTUUUP ¶-l  8< D0Y\3L```}~pNItO6\,5K̀8.o%\_gwIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/groceries/fruits.png000066400000000000000000000024231177067165300271710ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHŕkLWƟ/V @[Ţ V@DAցFPD'[SeS&Mec:M0E Q P.-w\AdΗ<}s &5RH - (% (6K$bghh][ Bܹ ,4:qq@饹*;>dsيr+b>;7̗Dm9%˧w?S<ծ'Cq@4!squp74%]]zٓCrJ+tl' fM{nM +<¼B6V,_#lQGOחnl8;RrϘHc~˹\!w;ߧg$@fZr9BtM:Z+"ypO-yا"9+A J˩< w$:W̔#_;&ڐ+8gjj^WЎyul`7a)DJj*Ec뢇??Akn_%Hv} ОF}ЏgdW<*v+VEĦy=[;}[~6J.ncH`xsQ\u^ --&algJ+)S^k/jLIvyD@r…a?{h4 E%;87XO!jƉ9zzyeo~KYkEWr~:?ph#a>fv, w }QW`TnjFCmg3ֻfj@5\C 6^wJ}cm2n [cgA5jqTj} ,5#K۞sڎD_ 3+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/kaufhof.png000066400000000000000000000012161177067165300253150ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  .IDAT8˥KTQKy~T2YPHHD༁J!Mv[EwڻjӢQB<[X8h8fF6-rG:H8(D0LJy8' E"3ch4t]`, 躦 7ll' p ̱_+obPG~ G*-s*Ƣ,?`{AY s@ L,F%2qr>D@<v`w#7y^L&f6MuZj5Xqδt5mf׾sG(|Zss)GS t4xuCp,Vp.V௮ω wF'YZE{y1HB~̧n1L`\tYBQFM&y`1P|ElD /1\(;v;ʽA+eRү NPIFz0뮴v0NFZw̧IIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/kiosk.png000066400000000000000000000011201177067165300250040ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME!1;RF4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥MKQ{gJ̠2ڤRA7AQҢ7?.h;E}LcRmnL|{{ +c!E36^}o+p?GoG6 ZV#Tr_=NxXp}9oB !qKK ]r `[4PJ!'2mLT8i_&ĵz IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/laundry.png000066400000000000000000000007671177067165300253620ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME$SntEXtCommentLicense: PublicDomain z_IDAT8˥OKA̬JJ*KҽAޓ/EVCuXt22K݆=iA]*ur#rDDOzBDx [/\ |O..gWWG"d2Z8Cۥzy9۟}Ð k-T c Zk&x( c J)=}& y* tz#^}NrC4hbZ0Z3рxv3^TWGn+jOt eƥ.~p+37:#^0}bh|xZz+a :O+g"Gxdmº QT&g7zYo-(hkSHA'^DJL}*ms1s"T6!`ut\NH1bE)ֶգmmԫOMgDjPr 9ULȦm(c޺1>&,Pn@K2ղˊ܆̚@*,2w2Qi{r7xW9%? [? Enj) 4dZVp@e S3qw &1:J'IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket.png000066400000000000000000000011761177067165300262410ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥MOqƟ.n-ښA)Kŗ݆+_WM/L4xirDI6k-l@zPJH4yy& =QU%h#~--(H,&GvӋr*Өv`>MTP' ɴ^U勪ue5]PH$ {جh{ $_S"飤kp&'ȡـO`qᡯBi$9xj"uh|ܡSϒ` ,8ޅjÅ3:( `:־P^Bwwp<QԲ`i ڪaZxdQXnw-$< Z2\g ۋvv3Mn-L雛eY, ߨVk?a T*PDj0-@oxFjl۳G!x8EQAB rgeP.HiV20&vw>~IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/000077500000000000000000000000001177067165300255265ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/aldi.png000066400000000000000000000005671177067165300271550ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME mIDAT8cd```?i#}no8B~8lH+` j7QonYpIrH00Vg`pfP} ? -?!^|5X a`0Vp^|dz/C[AGqj FP< %`8?*B] g>]{ CZ:؊Z2 _1~oj? LS=m#)NTIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/aldi_nord.png000066400000000000000000000011441177067165300301670ustar00rootroot00000000000000PNG  IHDRabKGD;D pHYs  tIME 5P9IDAT8˝Kq?{nś,s`~+h]ZD.@AaIAl~Ԗmͽs{EIC|9<<7Яr6no\I,GhzVZ&C" hH$tD-s#?R#xpeXzB^Xn@ޏ"wpT Q6FwB̤QGt>cEe)%5A07EkvpA(6/dUC}.]OAilGM(㼠%o`^Z4It当qC(ʕJbLOێ}re2# ͭ7&o7tjkm|vr|u~: _,ޚI5-q0rI-(DG_?Al=CIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/lidl.png000066400000000000000000000016561177067165300271700ustar00rootroot00000000000000PNG  IHDRabKGD;D pHYs  tIME  $;IDAT8Ile~LvFhlK! =# h<פ1ڃG4&HK# )@ll n5R.3toy>jy  Q*7ݠNX*0sRDXDW^)`#N>q[$S.{H?ݬǷs|EIiƏPc*_*Zxwiߩg~śNq#rQkW8ciB#X(ӊ4@~ ryydI mm o={'7: 4l-q%$^@"!,#Q=Ӭ;^pś8(4yOX\D #q'ޢn3=ض,N 4ڻAfws_o_٣kC|Z޳T,, 鶐steN;D7e)?c 9#8T@eC.q"˄JZ.cu셥:Ncte穛[iu2۷߻MղeϋR%\%^ThB V= sDyWZW9K̦#6Jï'ƥZQ F!C1>D&B lP|1ɀ;@Į `b (C_wnBg ZIN}(XR%*v@"Q̗M~f:C5Ӣ-?4wp }֮>/(dR˨Ǥdj JDDS&@]J0VǍdPUiڷ?~?$.IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/norma.png000066400000000000000000000006561177067165300273570ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  NIDAT8œ=HB/@x!(%Kh-hڔhthjj%pjj+(H)D K<\0WՂ_XP0L"d.,WVrUѯin0@)k[ v2f@kn5Tea G<G:򰟖~Prs'k#C}1 >iD [dFaX 8Џ2?64C_(SA|<]ĩm> y=ߝ,QR)DE`s gm *OտYffBףVGka }OIfK/IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/real.png000066400000000000000000000010031177067165300271510ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8œKTaWM3 5$D0w@V "m ڴS9(b8u Fluiow9 \|J M BʎS{#te%rLAƶE*ɸiQa\:=7MCFf L]ypyy  `izP ey4k4>:W&![H Wb;|[Bѕ*^~B}sgy6NGa ?y+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/shopping/supermarket/tengelmann.png000066400000000000000000000014621177067165300303670ustar00rootroot00000000000000PNG  IHDRh6 pHYs  tIME%b9IDAT(oTUstv Ąt/pʪ0&A*.Dj)8I7wp>x$ d, ܎ɢEbd 0yVYe08rt$.? 3CoM%[U~T?~Z]nFr/hl?v>c1Cfq{%9 #FD(#%$hjak x|M*IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing.png000066400000000000000000000006401177067165300243540ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME ӟh /IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing/000077500000000000000000000000001177067165300236465ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing/archaeological.png000066400000000000000000000012041177067165300273060ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME !btEXtCommentLicense: PublicDomain zIDAT8˥?hSQ//$U$X1`hV0Pv.RI栈SK(NRpRE0bXRB).jg47!0Tr8wwPl.TЯWz0$jAqFPNkVR<=(U?pswUn4_ N#b滈@4&"wd|vVd'#B8QY/ 0G[]! q/JKЇGwc5$/rIo؂ϫdd3oٹ ~su%șUa5G)w 5H!x2 Q&W5pE0*; >+2y >C$Sy!Ne1@Y:~+x[Jn:gyá^Β}9Uڐa5hyf![5}{ο{~OIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing/battlefield.png000066400000000000000000000013611177067165300266340ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 'c~tEXtCommentLicense: PublicDomain zYIDAT8˥?Hqǿ?k w"4C̔ B[, CAZK5c6 b^ld1L"A?k%ט?:hҴѥ.}x_Q]ޢnU\EB,` \2?=;;D"1,9 K}+++1EQ##)sJ)NNNhVUnhʲ|Ͳ,c6L&xՃKF FE2 6:>>NxT8ѶP~TQBD"w~hJWUF,p ͢[NŒd2`> tARuq[wkHUUSU] `0X,>(7EGVHfQ54Ī*zrd;4 _Aih(?P;ɝcәvɲ[EdP@/Cqͻʳ74xپ^4'n)a"_,8MZ//OOOH?~o+ _MaIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing/castle.png000066400000000000000000000007661177067165300256400ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME %CpIDAT8˥Kq?IzDH"AHB n9w bSKRmnZ6WF|}}wg2NHU9PS͋"b'p8K }b66&gˇk(<`r1n<(鎁@`=^'8;2̥ޠfcԈrRTӉo`3gY 1SKUD!紝s Ipm;8 _TVE#.ϖ`Rt p)EnTmT_.(D"UX=RjF[|CujOzYfrLԢIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing/ruins.png000066400000000000000000000007601177067165300255170ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 5>tEXtCommentLicense: PublicDomain zFIDAT8˥/CaƟ_hKҊD$ZH 6t&_ " FF76"$C [sFz;y!k;D}#TZjpgvÖm5} [yGhU\R.ƺ7r1lQuzG͜^qHj1K 0EGᛌ`_"0U;J}0%mQǴ|FxeCu a -T  pLvq3NY^{ޥmڻ-߿(#3li,40ղwSwJPo/IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sightseeing/viewpoint.png000066400000000000000000000032311177067165300263770ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  9IDATHŕ[TS9$ h)!@R+(4U`#Pm"b8TZbMee(h#v$:bk\$F"q`THpNr桋>k^#j.&bRmB&D ifrQ%!ZRKjɚ$d0 ILTy Οt@`Q T$&t2C`UkW4֕y_E;̶=7]8 {>>e*PډToF k?b/d8xiiZU4(l^ AI+˸rc&JƳȍN=%b;MBпzx&:t?"QNRE*LQ&3|>D&nOZ4`GVWdg\(+9`l+bb)O' @āz*/reuW;-]q|W6bq6oP] a"_ Qx6gCݕr{fÁ6ك.}(&ĢNO꟨+9ٱC.nԣi&5./Ci%[  @Fے3ۚ g^?Jxx#3,΍u -U-":w/95RN HY$,#HxuUD<m +sIo:NWv ҧEcnD珎{cg--c&v%P,vSnY/Ó{<$_Ϊ߯+Xo̊({{2k kih,%si~%TK];=yo2Cozz/qe_L\4rR6;!@PӪֵ34QgpCCw/(ЊK0Yϸju)1nͰ(lONIR( G>]%9뷹#ܞ|*潘,2w?I=9l{$11LǧRisn;I宙o{܋8eAjb:MIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports.png000066400000000000000000000011531177067165300233750ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME K4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥kq?@=(H< &XRS!kK[?pA$&rPpBõbK45M):$ա#B?b:i!%͍sJ8xP8c/zWt{X}l2և{õZG&}gW'Rk -fFudY%7vwmsvrtD"y,¶m1B@fKz3 TI~Z"@UU|ߧRI&X+]}v=k$f<UzA(!QtGVF[$c^]B:.hu9<{gFqF.:R*p\a COBQ[6eT|Ф1̃*P/#&"5lBUXڴӥ6$ѲU2tE'Pd82@Àǜ[4[m>X.״(8F X\1KN"/9B?؀mLDfn$/7=z)w7^Q}'W1a.XgBM1k?%HIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/bicycle.png000066400000000000000000000010311177067165300250020ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME!l4tEXtCommentCreated with The GIMP License: PublicDomain 6kIDAT8˥MOagB@l#5FRI`!3ԥ]0х .ĄPP|Ԏ&-FS8ɻ9C SqnA}n,v ΀jDElXu?; f}5|WEG;! 5 eΟ ,&],1f-<3a_*vJ-S3hQK m@{~iSShIN*PHm+*;/]Q ;ٳ"+ňĎļBބ} UY%'u C2nʮmPڵ൧ Qr$rAgZ<1%HݵmjzϋS'“8M5ο!fIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/centre.png000066400000000000000000000011641177067165300246570ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME+2?4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥KA?bi[v(ux<AҭŋzC^ڂ@KIz3}Ѷ[ ||gA^\h(eA5(Qf)<}xOxpŞ 1(_cv:H4!w ^4-)10QVI]S1{HِN/Sa`|V1[.v5.œ>-#GF^sV٩A6"k#dmEjH3tc}"F ;uP +=ņ% g U`{,#%`l({LMCNF W``nV1<pRC ^y͂ :'ar݂ Pf&aHyn3/l IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/cycling.png000066400000000000000000000012331177067165300250240ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME2)"4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥]kP'9M&k,n:678VA/&Ưvw(*o!4J-M&͋A|ܜ >)cE-``c"hw﯑yBdSVlvXX"{6(542a.q+H?ʙFFdORqi]]˝X%hц햪 ~c#%ڶ!Bb}QkЫ*l?Wߘq rU{]09BGwwV}ݧXhBB#%3qS0p?6lR\[K1 A(FRb Gg9Yb͜L,cc%X~%0qYZ*U6]fmz!,zaiTJRdn--MX7Ҹ[ ƤhR%uwfbB?/pIO%qx>:Mw&'`YvKztjUE{}d&Z*m(>b1Zu.Na`y{$3"[ѝۘO묪V)9k]ge[I8=8\D#Fr9\C8+"ӑ8Y`nSd'f^`wxn{⋓} .3JԋOhi0ds*{h5 362B0Lʏ˵LäҹS+TpvR|38Heaa-"Rxgk4-b> Im{{ur'<^z~r "R*`'hp d2ෑ ʹpf'nm6ˡO{* uc8 GN|rXRr9sY>x?O. ]88+ihh%t.C٨ؾI N[II٠${ be)/3'2](_[Mp'@k_.Oy.\gfn6U,VUl!g%aQIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/empty.png000066400000000000000000000003661177067165300245400ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/MUtEXtCommentLicense: PublicDomain zLIDAT8c`h`0```On`0`d`` !)d 0j`21L fgIT&|;IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/football.png000066400000000000000000000011421177067165300251750ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME ;XڈtEXtCommentLicense: PublicDomain zIDAT8˥KkaofҤ%5HEWU\We!d  nE/TЪ3%sEl8"SL)@:8L,(Robڤ} A6VߚTu4$ bv!{[p=Ƶq:-lEd^NľQ!ii,i~-> AӶ%W rZfr?\؊?XЗndDt:^O$8t jSyYÏ|v~ fpWggA8AQwՁ챏Oadr{x]J6ڵIF`eEM[mZ y8y82!7j-`Bt4vdvxtt{em2Zl,q7B{"(ZOǗW fAU2rUZn LLHXဤ*PujjQ+'`DMPи-I$Iڔڔ4@ Wԝ@kK*G6$w5$.W.<;L3fm{iZGD7*Kt]l\R܎ho|S}b%~]3R(W[im) g-Y m N1{X ιST%b?~;/AĽ'Q 2U:#,yF`ܮ p|^/oH{!`<~x=ޅA2`$b3ajuRZ x O e ''D1@l$I^{k2!"CE J/>xQ1:1؞Ï~ʅ5!o!$l&;x< B^xucGY%X3>VM();auPX_T0fG\F^?_jIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/indoor_pool.png000066400000000000000000000013021177067165300257140ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  U_4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥Nqkg*3 B@%qw-\>ݨ ]S4T t3.&7{/,?&lqd@^tK9lLaIj^@ E/<Y>axYa4iL 8p PGY*CFrd/5z䎲{1Wl^i 9sһ?7[tZ;5SƯf@SS+Cd^xR EଁOȱ+ 35 BcoF\&FG7AG99@ jXuԯ9eZxI#8A9W&眼H)[P 'O^l<#p"[%'L[jtr"J_0S`˵Y9iY&@vDԯW} `uLOk a ,~{7P񌾜ăbiFrMbޙ7س&t8T@ڼ&!}yWVy{!E4zAPmXjn#y z"[u[ܚ߫0uK/E=oVHj+QxCøLJQ0Mw]h_St„on:z1IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/pitch.png000066400000000000000000000014051177067165300245040ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 4tEXtCommentCreated with The GIMP License: PublicDomain 6WIDAT8˝K?_os%#Kr6a ʊVŽ((oJ2!E 4܊n~u}><< xÏœ/c>`=`h &gS-y RqS,LƓP6g ![g;ҴLLVWk]5ƨLwۀl!S:}h2ebbLߕ7ZV'jslDDZMoo/#c-Y Ϋ>v ͆ TUUdBRa0p;q Z7F5TJ0ͱRDhdÿC\(4 Q& ĥln;a333399 s 4V.e HvI 1TVTP~EEQ>D?A|:ӗ@jp*(*#8BůaԸ_یCso':}NKb\/fIDqwA` us򘏨bxq{%ɿ)tp`V"[n(xҚO*؎RTP`=^}?*0`/IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/pool.png000066400000000000000000000012441177067165300243470ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME L4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥ja83 !m&(Q^W""+܉^W"UIkb3I&d2i=p6p=/PE@zBcg"Q]u @,bJo6(+س 1OkW{QvT$Ձf4~& !IARߴUƝ#w%Go߼nw7g "&MlH jm}1z=+ s?d(BF__ܺf$L;//s~Fܧ7\O$F2:c:aFr%lEHcs]꣝$cӅI^%mJڇޞYTq~o<> Xj&\DO<6ȳ%&IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/racquetball.png000066400000000000000000000013551177067165300257000ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME&4tEXtCommentCreated with The GIMP License: PublicDomain 6?IDAT8˥OQ{N;NtZjK#[T.q nLYҸӵ ac01 ᣥ-3͸mDO򒗛~7 ?,F F &|*NS7@3sob͸w ~cC{^${kKmζM'/'e}98 pI (v ht)1͎ʁrf!kbx{`e*M&$ :ʇ1n,| A5^`h7dLlg7BI/&h5zba\Цܵb@*J1\9߶?}!4ӃoL-.lb㌣v24ꊺ*ʱ8%9&yp0q;?[u杵HKxdᩀ-Z}snu]XyIn+6"#,SXJ:u-rΌ+u aV)z!g94% SfH\wk]? cnIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/riding.png000066400000000000000000000010501177067165300246450ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME+"la-4tEXtCommentCreated with The GIMP License: PublicDomain 6zIDAT8˥jQO6biZ*xё8pځG}_@BQPit6ؤ8h.pًً:tr:jXj[|P59K_Wr'&<~ (6,--%dA*驫dMj[s^(h~umLz%Ђ%Sfxk0.t\=c?c Dx#cQU)[ Mq -+F֮C> TԴa\䊺}16u0c [= 22IiYYe ]$pҾ8`x"%et_Mimwƺw܋G֤S=jL(MIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/skiing.png000066400000000000000000000014361177067165300246650ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME57.#4tEXtCommentCreated with The GIMP License: PublicDomain 6pIDAT8}SKoQ=wCBkcZGL5MtccpR5хј&mFST@ t^ E $w}snC;C`DsX>pU?dd=σ0-YM+T.R+)pG7B8;ʕ$zqa@ _<0MM J#NsEeCSsS~ O>\O15"R! |鲻oklm4ryJb@ c؎&\ZpE}ÙRZʬF4Ûur텬PV)^{?!@a a׈fgv-8+B%YH3nxvJBn dSe^ۼ`}A'ܭ?^YRKZU Q@vO 9,TjȒB63NCZ551SBtxu*Lyb0 =$H!Ղi{|1|o|".cvE2jҧF4ͮέan_}d^IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/sports/soccer.png000066400000000000000000000011531177067165300246530ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME K4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥kq?@=(H< &XRS!kK[?pA$&rPpBõbK45M):$ա#B?b:i!%͍sJ8xP8c/zWt{X}l2և{õZG&}gW'Rk -fFudY%7vwmsvrtD"y,¶m1B@fKz3 TI~Z"@UU|ߧRI&X+hD4ױVk\4J7ϳ䵡Y(t=e:j݄b.7~ 3_ P[)&6&o>9Ģ 5:qJ39 Y ǃφ+ly' ^~:\@Fj#n'^A=0WD4pαeo4hn"+>"ޒxQ񧠣j#[GukoX}"@*mAٮvALrmFfH) :A?`/2RTQqoJcRCEA;RK&؊Xi&y@Srov}%3OCxw{jm`[W"/TGWQ襁tR'D6gsMQi7ZqbSf wˈ{" \{o*yg*-mw+geǧNHc?Q'glI5 }=ch`xgW}}59"]XƎw+\k@ͼbjFVunt%׹r(}oea|k8&9yE H:IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport.png000066400000000000000000000012151177067165300240760ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME'tEXtCommentLicense: PublicDomain zIDAT8˥1hSak 1M1.*ĥ4 `!PJ1 4CK@K PThi(A$ BB{Xw}WB.2EDWj!&CTQ]3"C]e̓>|WjѪSpVV=GZベFGK\$8_xq{)λU(׶WV"6:` F`}`001KBP(`m,{ʩTʀjU~x֞V;[ss;34{kV^wwNc 2Tl'Hd&?#2R*<Î'x|:AXL$IKA.[Bl6hMi!CA a7a\p GՔ=xw:˹s*!-2.HZ"FMȦZ _Ѵf,E"&c[ >3ͺaPf` ZޱíK)#1h4Ӵ xvA ۛ2ƾ2ԅ8«\6$`41Z)My J%T~V.=OOWE$ȇj s=̵3l Ãp04 4gOBJ%}[TW*.-|p_́wP15pb` &~ZIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/airport/000077500000000000000000000000001177067165300250515ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/transport/airport/airfield.png000066400000000000000000000007731177067165300273450ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME FD9tEXtCommentLicense: PublicDomain zQIDAT8˥=KBQ{S4,,,* jiB~A3"mIAsAET"x!OI5|< r6YTB0tv$.~pl%Q;fJYF /Z'Z]gb`дAGIw#=4An$} zOGRC vtaG>W4 LK:zi ۑҔgDbo\Od2yE%+p8-|( 3w0C*qY@-^ҁ'+?ku  }NT{sQ5IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/airport/helipad.png000066400000000000000000000010231177067165300271610ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME]tEXtCommentLicense: PublicDomain ziIDAT8͓=Ha5TEkP ђCn- 59HSBSDAHP NRPKKK eTb/OۛZч-w'XhDJH&B0Z o wO&R̎ .EGU@{wUd}-B`ff+ SB")hQ>xr'/oRvJ1Yt$azY^^yw ё JСرjiZa)x`v>|^f S8m'SȾ]'| ,*yZ=A:BIPOZ(+~&6Qj[1_u#)IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/airport/terminal.png000066400000000000000000000012231177067165300273700ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME.L3tEXtCommentLicense: PublicDomain zIDAT8˥_HSQ?Z0sPKWcP!$-s "_")dQ"S/zOS =a { !s?J٥m {|;6B8T"q"mg-!ogiaQʀ;7!h-)hY@$ޯ8)H`^6H10ymUe-F0<^<x< }p ܯiymfA`|#A}3 o`j78r{-?}}O%Ks&iG=>_oO`$VhT7ОWY-::-69x./離VfQAmwkU!Aj6xX<ઘDZF^߱ ?`<WuiU%ԾoJUuW=P\MݓBS30<- oO20 EħH9m&D]׀Nq^/4~ ;0_ZZ6k\1 =GPjkCpP7bpwH\` ,;fyD?Av5eO3o0Q xtJv\ .Lš$ ~n<h0zDvJً!zg]8 ` ۾ V/?sk[imu(聚GcF#ڶ/xvK##>YmZI@Tp2$Ci)]MQ )J-B| ռsIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/bridge/drawbridge.png000066400000000000000000000010731177067165300274460ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME "8tEXtCommentLicense: PublicDomain zIDAT8˥M(a?XiӦ$6楍aGrః.+WaIāHܖeNQm,l]Oy~Oϋ RRJkHo\^7qȋ&kap˫lWվ8(8*R R'0I̠8HD hN<+PtNB UkaeiS]ʁdg5 ,:Z @yd>k dzeʀӇɒ.ah8{fnRzj^5 [7;$nO)T qT FhzxxÒ#` JOYnwn05`| "込 ?S בuiF ΁ K;1G1"IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/bus.png000066400000000000000000000010761177067165300246740ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME$/[tEXtCommentLicense: PublicDomain zIDAT8˥KaƟEz tk'hrrAۄ! !AH"A|.Ǒw>~Kߊay:8WN|ܗ\S3<)hO\1 ɡ^\V ̖>pM&SOQ4^yW.gێIJLf鱹\Z •dێc8B啉iDRgzz }#e- [[YJJt (m`!z R ]N ]8W 10Ŗ $Ia`7BPe%wכ<`۞xݴ8kB1pC8ozzǸ蝇u+vhIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/car.png000066400000000000000000000007661177067165300246550ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME3|tEXtCommentLicense: PublicDomain z^IDAT8S1Ha}W^AXt!a*a -FCs[B[A46  ΝyRn֤!yC?xE3HaLQA APRFTfK V0aWؑ? bՂ$I "Ҵ ]?p ܎Ǘf<8sTjlFC{`dtLX;k3d)p@jF"a=@~FC/ۜ2Yy7*+.' rurSoM,]`:Z+n'0 &D*49㵼KIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/empty.png000066400000000000000000000003641177067165300252400ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME ätEXtCommentLicense: PublicDomain zJIDAT81 |Mvo#E٤mLNR/afj|wj\=%)ƙS]IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/ferry.png000066400000000000000000000007121177067165300252260ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME6:g=tEXtCommentLicense: PublicDomain z2IDAT8˥JQ];4 y+a عiҥUKVګ؄,(Hl$ 10ܙCtlǘ$ߘ6Ri>@\ʟIR2hf7[*t:VOz952C9qâyB!\N֠²,j[W&+7QmdkA@RJp"8+^0# $4C8oKcD&-x >5EQ.=s!xJQ^kpw< wf?{i\1IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/ferry/000077500000000000000000000000001177067165300245205ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/transport/ferry/ferry-car.png000066400000000000000000000011201177067165300271120ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME; sMtEXtCommentLicense: PublicDomain zIDAT8˥K[Q?ߓ4i#Z`."Y898P IRZ:8FEj:ԤVJ*R 8p8{Bp=S*(O5D\& 7XA"IଭTmG{sNg#q4Y2+xrL[ae9NH|z=`ۏEjJV'=< w!:JPXޱABffmlf\.Wtq` tnldjiJ'a" {[+6y ':FH8B<o}.+` |~1!XR[c"P M j ~.P8VLўBMH^\Ԍ@`{hxzhFr dDIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/ferry/ferry-pedestrian.png000066400000000000000000000011411177067165300305060ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME L]tEXtCommentLicense: PublicDomain zIDAT8˥?LSQ&K?IePJj'F KʆѩĤ(C F8׾ZFOrr9=wBoTJ&-G7X݄nm:S`+77iik")`J > [ͼ3Ø1ܼw u( da谓IFbh}D b;dyO7[[._w>  7aJ<FO1ۻzGGKyxn+૭zLP(zsN|u~.0\q/M=có70QE$h+OӋFTs`v6ԁmౝ&2.j4@D{M[uq'V  z=ܳp^ :B;b(Ak{ˤw1;VIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/handicapped.png000066400000000000000000000010331177067165300263340ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME3tEXtCommentLicense: PublicDomain zIDAT8˥+q?1?<2Mfe! $CY1\IR66"!I)%Ϩ\d$lX)_\ Ęa&|s;7REġ""`sXpx7BM@lS$ ?hڍcl\f <vc}_ALρ`#tBh:Dk*qfs@,4Π p gh끸_\on'0/r9#Opb==]脭T&_xl.*BQfft=[4Z!e7 f`8W zdҮxprGX)9y9jD!-;iW߮y0+ί&i6 IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/harbour.png000066400000000000000000000010721177067165300255410ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME .`F61tEXtCommentLicense: PublicDomain zIDAT8˥NA\HDH)RX@6@IA;p(HP&TH e&rIQ2Ϳڝf-J.HK*Pk絖N" ~]Z]m6她مwyट b\noﵵd{{-(e6*P*ш描l2( J% W"ԋ)~as\`mO_Ww76끾I4zzI0xU(8r[isA>Q"tDA-uvc@<]*Pjy^Dd e =PbmXG""A30כR`cLŰRw3ٙ7Lt!/aqaIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/park_ride.png000066400000000000000000000011171177067165300260370ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME*,ttEXtCommentLicense: PublicDomain zIDAT8˥OHa?l2H+ssn!Ĕ8&t1K7/&!A C ]6.pIL@PhZ|_ޗ|+0B\a&K)5!ta R`Ekb^j -fރ!.F ք@A0x]{n8y,\߂OFZ6 -T턻0``@ǤL.A5iEG4zr@U`ZTɠ+ ];й x1-fd)~m `K*)!)=9{o~zWNgdJ:}-DGn Э}&'#=Y38^蹑lj`mj^0~ؕқa?dIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/pedestrian.png000066400000000000000000000011311177067165300262310ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME12'IntEXtCommentLicense: PublicDomain zIDAT8˥OHq?WMeI(hbaia";QH;tœ.K`z-KjlB1\=޽$|/ÇãJ8Y)eR&"(5l^Y^~&rFS s^\{fEx%|߬-.y;E066=,J&7Gh8M:54ZpAe Y<>{ tLG|^:@ .L|MdͭTZh `C݂Ww7Έ m@5pS2*?5>~+EEȺ ~(b~W]h8}ت$/{01WNҞR0ػ;n1h2؂yKe::;TR IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/railway.png000066400000000000000000000012051177067165300255450ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/%w[tEXtCommentLicense: PublicDomain zIDAT8˥1lRQ`yL'$ub5:j͆ b;&MtS:5tPH4N4-I ^ gss[OR慨 e{oaJwu@a6N??T*E<ZR.%D`mrx.ӤL`}ikSS>-ѴiUxڗX\13̟֣bI:T|9SA.B[])B#|C`YM=nPXZj=@ \zC88B!2Iyad2\.,`p̃ ~b1 *aF1̓a/~@ pZ-4M}=:ZMw{t|n}\Ç˰fKۆ5TzNDpcهgg w_چIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/rapid_train.png000066400000000000000000000015461177067165300264010ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME-3ZIDATxڥSKOSa~P**ZFT jb FVĝ/P!!7TEES0$E$kĭ ?vlҕMMM=7E~Gi*3IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/taxi.png000066400000000000000000000012501177067165300250420ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME!2l1tEXtCommentLicense: PublicDomain zIDAT8˥?HQ?ӡJ$pѿx8K :Nu)B` ѡPKH.45j:gbd<}pTXDRJyRJŊXӇϕJβ*uR9 8XK5Ekht"q+\ez% ~SSiDggg;x/:h%k#zt&'w e~~ݏ+-n|sp, VAk@::L5 =pIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/ticket-machine.png000066400000000000000000000012041177067165300267610ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME>tEXtCommentLicense: PublicDomain zIDAT8˥kSa'77?#K6 .*"128Uۡ&nfMRL~Z[75MuHMҴ,/8hEn&;1l~?gjTo,=}q\`9ͅgVy7gv>XeQ񍡷=tP. zN.{1~:zRL _њQ.a[oٕ:9}^* њ-ߑ@BݼΞ8Kͯ{[2L3Wgќ9.ŭCR5rka\1Ӥ1oe¦z5M&KfDfԱY ƶ\>kzm)#=^团GHAMwX]>{D[dUlRgnqIJyJВԛN9&TOճG2W_IaIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/tram.png000066400000000000000000000010041177067165300250350ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME8tEXtCommentLicense: PublicDomain zlIDAT8͓O(a?YVf9P$-dsvF)5I9p֚\A+Rg+E#i.E1:0z~yZJ !|(~+ ǧyB8Jҿ'D5:} g +jÇmjlohk `0-.WS pŦ{{ &CP@5u!a]`EsU/07ZZy!8{&[[vZaX eP{ߗN>R@3,ɩ?zWD 2vG![("TjV\.Œf=**se:R~E)|RIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/turntable.png000066400000000000000000000012431177067165300260770ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME tEXtCommentLicense: PublicDomain zIDAT8˥AHa~,XbIB!Y`A]S'ax awVhf0G9: eFnssM_/̒[ QR#e% 'W䄴`(pM/\U<)|5[]>"[$uv,@͎Ok@CAq @宮gaѕ[؉Չq\dZ{un. 45447ZBTuJ,6=,{VQ^WJk?ċf/\NH藬]ЃںH3עїzEm!C=R$bB!YD }05gor47}kW`}U\iZjNPuoGp"YQUUl{338QJbyT0W!)ڭ{(IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/transport/underground.png000066400000000000000000000010011177067165300264230ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME](IDATxڥ=H[Q%'HTjZ$[,قCt-ۛ]t(8[qRPuHԧiߋ_s΁+Z8RDz|>p`tzn%H&Y<fg`T}mr+)^}+^hJUJ"7{UHgܫPҤOiDH}C8|`~ef>t$N\$^A04eY`8h~ڢ6͵wt jkFk ˲m{8s1St]4j=\6uI;y&`IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/unknown.png000066400000000000000000000011451177067165300235430ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIMEzg 4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥kP5p!ҟ.8 RP.B`L} A0CDthS h,)Ԥ] *mp1 }1v  ]xƶmiPt:m~BIް(?EٛN?\- dY[(n7}o&zV;z^iqWD"F6=8ꯕL&s+S2VUZ^ woI$I:lkۑN݇Ǖrx9JէnFdYRi/e Dl}Y T*~\.y|R[yggH10V|J+27 }]f>7DQe Y^E>IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle.png000066400000000000000000000011351177067165300234620ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME$UtEXtCommentLicense: PublicDomain zIDAT8˥SKQٵ ` ED:v vʳ;x:%$NAXE?Zjoڔ(4oy3 GO#:r!b>9? "Rxzթ013MP=}޹>ds^pVl6.gR$`Ԩ|dD rKLLBӣ#NJB殻oHdgǴ> RW˲PVah6H*@pxXbB  !i8xHd&:~UU)ɐvwpoONŅ̌wl},nR,.jyXIc\Z4]m)_^Z-괾 )zm[8znK-\q L4:>:U;IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/000077500000000000000000000000001177067165300227545ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/bicycle_rental.png000066400000000000000000000014331177067165300264420ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIMEs"tEXtCommentLicense: PublicDomain zIDAT8˥MHAd7՘1⡇zV=,((R/zX#ƯzP`BhuSŘYa3=hBlfxcjU@-%^ UHk"f/}jeYىG1&$[a+ dee`[nө[sbL!bLƄ'/tJ)eE1* ]),/̜))$QHӺ ;;u:M&@OP L626=txxZ9M(tu~om+-Go_~"]R͖[W'IXlj<;{S W*;; !>%.z*7Iioc6z<YpJvWXxzʿ9 ,B]]B00 9Ql|l>eB@e ",P~\!^4} F+ pUTWhffw7D0ܔbɤL2rSg"^3cJp:W2X©V[Y!gM|OC2VnIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/car_rental.png000066400000000000000000000012351177067165300255750ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME//1 tEXtCommentLicense: PublicDomain zIDAT8˥?Hqǿ'MLKL[XB Gf98D\tpqtrC8t8뤠Crס1m>H ? H 1Ԕښ۷7ss"H"Fα''  &=V*F}|\#VqyUUz{-bW*FV3 el6kV@:ەR_嫫lZ5M!uirt󻻙R0櫩'ehKKZub0hU*}WV(|LN]m ;アX =1Y13>o`xe)p876|R A$T zEy i $T"xc$I(]I`LJ6+;Pf0?r:z\.GX||M[xJOGx5g< ruG5=rubmiB[\T|\L172MnJ Ҡ5UdDEU^doTTp樖kE?՘z'ˍ+:?;WU6R,/fkicH*_0} UbY6kJCJ!(k\n7QE[AF7/M&vDI@( .p}1|;,Q1rd-"r짹ͨėM0 &Zv|]K,qoT~H~l2ZCcaq=%INh)PE3{"qHZC$6ƒ[<#ZCOM6i:;WBxj?hkkl6l I47dj5)cU^o[ZJOMAȉ &f ժ#ۓ?ST|%B!!@MV a͏DxPZTrUG_!7ο8`p%[IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/car_rental/europcar.png000066400000000000000000000012141177067165300274120ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  ,IDAT8˥KK[a$jLlblDJkH%P@I~ )q{!BDƍHV]I(II<|]D:ޙgfF@oo0n&r:hVVr7"މDp8`y4IPh BN ?xl3 |37Vj=$oزQS*@܏qY;a@VB ΍ 2?yxrŝEJF-AHg!]]eQE[a/MN+$ Z̒B$sEctI( x *ƒWOݞRPR*Fc(u 횖52SU ׺ `6 Lϓp65JzP֖Z}n&&|ΔL/jUL76>rY*kkϧ4*>CKfpNӶD[4^*ժ RE:]&tpl*d\fRmݖɞH"%Uv(IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/car_rental/hertz.png000066400000000000000000000012761177067165300267360ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  ^IDAT8˥1LS)-PH:"J:6qWIAtե nJH ф BPP DKTGP0x?ݗrhmvbj*LO?o>| ťRmWpDRo]:&Kxu30lNLC]Kn6 @ȄN`-t+[n.Rb1n|Dޖ YV<_1j^ZzHp߽vB?y_psi?L;#s LL144 \t"Fn~dYTU%`0$ P bM}P(Dii)sssvit(lAF*›|H$ Eſtww#nT*iB!ioo'3==}LBOVLeZZHQq\`6q\aEA4>@oo,ڮ(jV x3@O-̶d2ILM}Ke?ԆT XmI0 ķOYV ]]Ϊr,b,&FFNd>Λ7 N]٬G'fGGMWVW_~OLDfKYI;'-\LW˒l&UdcyJM οm9UIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/car_sharing.png000066400000000000000000000013571177067165300257500ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME32tEXtCommentLicense: PublicDomain zEIDAT8˥S=OA}{q0 EihHTHH Ѹ WT@A 8%D$.0͇/pq;N $.pfgvwެޛ`DQ$'&>r0>8i;{lmٳۛN$`{*,*l;''q;Z j{zb\< úTp?)١лLdsu}7EDԺB[Y1%1Y.MIbL"MSkKصD"#"=Gᰬ 6UEŲ EQhnn! J\^xi <#4)\__KѭqD $ƈȣPScyu6kyo歭7?~}ȅΎghTr߶@"΅hd͍yD"U3sɲaIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/caution.png000066400000000000000000000011621177067165300251240ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME.+vG4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥Kq?\r94G80\$]8h9 . Dn䒡;(7,JAt`ѩ`kpꥃA4{ pX3ŭn1gG|‹pxțߎH?b@D9(!f#}7̓i\]M̽1zC(J ;Q}$`r~db;UJ%t]G4RZvnr~QFSu]0Í0P.6ϵ/c9IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/crossing.png000066400000000000000000000010061177067165300253060ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 9Xv-4tEXtCommentCreated with The GIMP License: PublicDomain 6XIDAT8˭O(q?dz\5%W\vEUj@IY5.l%&iLbɲQakm}}/v )ISF 1+iras ,YgY1T6k̶9hʑ !a$ۦu COwGlvOsZ3 ;*MϙqX'7G=z^7+SE~F( G1/i͔+K~e-i/PMBR7GSf"Gr0V[E*(˪i1o+Qn\r.Q F%a893}IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/crossing_small.png000066400000000000000000000006711177067165300265050ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 9B̢P4tEXtCommentCreated with The GIMP License: PublicDomain 6 IDAT8͓1KBQs@""7[\«Mbw?a~ZkPgIwL75HЈQWXNqR89\S }D}(`V(E%v@.F y&˥}ʮg\RAĸul\IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/emergency_phone.png000066400000000000000000000010471177067165300266330ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME /< tEXtCommentLicense: PublicDomain zIDAT8˥KaǿwuzəbяHlPpm7 Zh!$!Ȋ6pFagz<|yɐg^s(*{4a9<//u$$+ m,1s6+I0?m_ǣ#qfc=`@lz&O0j8&3BךVz bb, %P՗g޶;n ;Lߺ\]ӕqX@z4-ˋs03cb4ͷ: ^.jUTʻrrR*bKɤGu+e 츢n|JqE})??F"7Fn8( ="IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/empty.png000066400000000000000000000003541177067165300246220ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/ztEXtCommentLicense: PublicDomain zBIDAT8c``cLǀ```d{901PF 5`d&J3JɃXF<+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/exit.png000066400000000000000000000010131177067165300244260ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 3[tEXtCommentLicense: PublicDomain zsIDAT8˥ӻjA+$Vc@ФP @ERXY>B@"E U d]יIx D:0aIg$lBG q] Łh"UMe9JAFlbb~2TB!08O$<ѨrQO'PJH7y- 3]RBXDz~zBy~YطF#,9*5s+g%d|]jPt\@*?X>FH.apil *[rY4Y4vph:窺A*Q 'P*I߀|HY(-7R!YUv0 ؈>j)IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/ford.png000066400000000000000000000011401177067165300244100ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME+MtEXtCommentLicense: PublicDomain zIDAT8˥K/rB.HURJqq 8d$T/H." E0].&]4`;4{=,c*K¯}3<:`Bчނm(ik;; /ޞOf4bih͗\.&s-޽/ XT.T*4mkyYUU\ cƐ*DZtue*uxp|:=u]IR͍|vښ4\p67S$VVԹE޳"" B88of#!'y}yi[Sb㹙 E"\.bc0,ժݑ$MSN_׍&A*,˳twwר`0`'N c01i(@0@"IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station.png000066400000000000000000000007341177067165300261620ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME /i1tEXtCommentLicense: PublicDomain zDIDAT8c``cLǀ```d{c"&j>###_?3ZZSk\z!22..%%ŰsN&dX ccqÕ+Wo߾P˄̀3ܹVqqnwll,4DDD.,iJJJ - /$$H<=ɄnЦMo2000l@fغu0220011wwaK_`bbd$ O?,Р'ŀW~0AUAXޓ׿~FMV| Y@iv+gV-IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/000077500000000000000000000000001177067165300254505ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/agip.png000066400000000000000000000012111177067165300270710ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  )IDAT8˥=La3Jv0xG$FLĠ m` ALLBW5Ƙ]A]P`JH TEC({{޼yhn=  ә˗`p|"mPX|'tR p,I7晴gG]̓g}/p,۫ڥDWߗ3p&-#(68_\yP`!yGBaYt JS3eZ 7`]THGdpSŠ$_GuutH$mYX1L~P)a?IdŬVY5?d޾e:Պwqκ@nढ़צ\{2!gZqcʊF]&aT2sIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/aral.png000066400000000000000000000012651177067165300271010ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  UIDAT8˥_HSqǿέt2mHVL "  Z=U>$!ЋkBXAHLP0r!f[}s>/55( Eϝ%A^xԐz(n73ljɘꝢz/zGFEdv&T*еۖJacԪ:ٳ=% q[֊2h~7#a.$a|QK>tBc#|V!,(]2b 1l;9V7Pg)Es f-8y.?޾&e2`s/-0@UE.4X{~={E Yw> Ս+6VքCQ D²@NgJ9ȢT ,Нol_JPrSbÉu@~o6b{(DoIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/elf.png000066400000000000000000000007271177067165300267320ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 糗dIDAT8.cajY$ P!TL4 wR@Rki]BE4̪ab6҅i y d}{5khDeP P(Z~E~BKK~\.K*d2Ixx_6vŘiZ\,NC"Ϝ5' ;Fg 6++ar<#%~?^K' T2kuٜ XJ)ݍS, fLMNq~a3 51CO1W0ӈWDpcܥmo^l;xIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/esso.png000066400000000000000000000012101177067165300271210ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  (IDAT8˥MHq?MI);() Ksbc " J]1(`PKыB/FJQ 'd2uF56MW:w2/+j%F[ mVgkxbo9rdh16e!%PU 00oCDّżX-&xNܭ(koy?q22v,,1t87H SqK81և)6VY&+xܗ+Mq׷`hA{jP꠾] @ۥ$PTb f-+4eRV&ɧ#>B*A^xCJq1<ͭ G6;f0ǀ4=a#LL4JW壪j$IpQŇϳsb .Gy5nn`lWG⢲OO_XMd'=q3*eLXW%`3MNj5޾LN_KKU':i-nZStIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/jet.png000066400000000000000000000012571177067165300267450ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  OIDAT8˥KTa;sgtM͜&ʹH/H,}.)iQk-AD_fFR]Df*B jVQL3sm#yPVV]}9Y::f:;/#޾+Gǔp8_2@$*M)u&6~R 6)Dl4M+%-Rɸ٦X\Tթ/Ї95 C!R =RF>ğ3B\=HU[^=E}7 } MJC*(ɥ\DL]y; = y؟EyͺEr!X,{MEp)2?IPdKSzZIHq8tLSrxa*6p*x \;s-4EeU ֹ!'mA濍nN2Ҙ:Grd {w&́iJy{w(]IӢH1L/q[W: ɕϢ(&]#Bx`.!ӏ733RbܶWDXMDٜmd`qBJ$-XoBnVIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/omv.png000066400000000000000000000011411177067165300267540ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥]HSᤚk8L$YAD(-n{˺~+u(*$ZI1ums$/mm>CIrTS+陙W/ND?-G`j]&IrT G6 @0X/mJgvrXt4 Э-t5=D:c:26 .p fU=͵AW2ϣNM˩g| ph{̎p:>2L_)WUKɘ7օn{6Y$lw~IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/texaco.png000066400000000000000000000011131177067165300274350ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥kq?w5^j\4`i5CR]BJEpR`&qH8ڢ!-5CV!9K!MI%J}}?<+ V8kR8_3X\/EYx܇l"~4@ƾVX­ȍY %CZPnp\LBfIbwIj (C%ܘU MF{7gF['`aIPaX_dmɀ\J<}s~hH>^ yJ8oU߹M6xLDq*󔾗8K@m{7GϘ*|zUTrwD.xpӥ :ͫJ\zN=&I]`YIPg#ŝo4qnYVk@]mۡS^WN{>9?v>:83I}翣[zIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/fuel_station/total.png000066400000000000000000000015061177067165300273030ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME ,;IDAT8mKhTwc$13 F0. u".t]Z EQ|X-E1c j)E%hbbtB#bY|@Ui@*s-D|EK%r!:Һ8]2ãW:({d#91zt8ok0s@LDG΢. (*Q%o\.VE@PU /ۈ86 &(T;c <4BI9pkk:9׎7PQe*?7ww/:r&qZ Z6`fg7?tSLbo?<|pڑh Ӻ kF)%rŀ2y܉'iI L17 L$V`oiڊ8^Ez\* ͈=y,0 z?S Jh-trPÊ 7到"mHc-r&-"48=́?]琸2^0"߿D6ש-3}#ߴ$XW6QK۫fXk)"8!^<[ 0x3,"vlrsy4h1´G !.gBPU0e 8߯LX b? ]_{߽Զe͒ljm9PAP=gT,c鄇eT""L:祕IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/motorbike.png000066400000000000000000000011531177067165300254550ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 8/= tEXtCommentLicense: PublicDomain zIDAT8˥OKbazGs5k1dA .3G nq)Q Q$Q([Xf1ty8npFurOOgӒ/S@0@n`1^AIby\}A(D|~Bq+x"K|]YaadaLR۫7J˃<%|h!ݩ I⸑cIUMюDxV3:~xG ˬVInwf&ikko"..^\+%!Am۶(KKk߇SBP$pBA2 B//6F9Rt(liܬLOR87Zuec_ww@[po0 o-;PJLtIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking.png000066400000000000000000000006571177067165300251250ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME *&tEXtCommentLicense: PublicDomain zIDAT8c``cLǀ```d{#kI??|[Wףf=}n 6?}ʕXYttygPb`֬gb5o_\uuy8O41)-W@7^߾(*rre773<a$ EEX٦Ly]-X߿pݻ߾=x׿~?yWljݟ=ML01P3SVxl UIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/000077500000000000000000000000001177067165300244075ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/bike.png000066400000000000000000000013221177067165300260250ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 4-~tEXtCommentLicense: PublicDomain z:IDAT8˥MHAdlc@N^ ޼h. Eyr ^L/Z( LZIHjc7?m$Ld]wgjri7/ABj[PZ۵Ja (@& eS)H(E{# 5Nf>q̼:``0I&syaFF@ɱp[U XTA9;|uo/e x%@i;;bJc܊D>|2!@]?wݙ;?g=at:=/,<0i rHot7Y&D(:nQ ReL&4Ҿ1umevd[eC)=^ 54mgW֖Tݭחgg?0bQQ~Ezttz3LV sдl~2vssǥ !,Kz뵺nl|0IMR+Ո7öeBT0\4qA0qMߌοx!" IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/car.png000066400000000000000000000012411177067165300256600ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME I@6tEXtCommentLicense: PublicDomain z IDAT8˥OKQϼ8Ӓت44XɦJn+Z$[W# ]@*+RbQƘ&_"M={ GKA^)b,iNN~<.'U+5,24LzHfwdFhZ(ݾӰjnY%{;eӼ 4kRY&s[}}?W-;0A)r^,h"q|߿++l$1昙yC$.J"1^0R6z|,.mUϞ1Xc&&{ ; .E&¥HhwJxr.ňβsnYcRX&S-g8\ލ J״U]ϟ9Dl51N2vt6MUQx'^ ȈIl0)4 8ٓ E-,<("/ڑ{j0IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/garage.png000066400000000000000000000010271177067165300263430ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIMEtEXtCommentLicense: PublicDomain zIDAT8c``cLǀ```d{.<\{j?nc-#Ȉ*ÄQFm2m] |!&굄IK̍݅գP\,'qႹ?޽?ѬY==*(.s_,gwOeggb`cy/X8 v䧯 [kz{ݦOazl۾UV޹UWŁ7 P߿߿ŋ_affdTW02299 }ׯ}}&NxPdb0a@ 831POG+u;IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/handicapped.png000066400000000000000000000012201177067165300273500ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME/tEXtCommentLicense: PublicDomain zIDAT8˥=H[QH/H&v)*EJK:9 nn"fqr\u撊4D4$' 7/&4I?9(G$FG4 lV]]o+ j\yFݞJD l3de~> TXɀhD2jNp_gGd X[ 4-INU]ij^Y~hbmWW,kz2);;;?,$U!鴢lm qxtq IU49Y`rF{MO{|Dx$zdb7lָ3bQS~[XvYMSU =13ln濟T/)]DŽe)J#KeLp8?wv\ 1E1Isrie?3`g!:Ӹq8q's Yf  OMOL|Jͭizc,}xK<ffBo\O[۲tQ jJoSX8>n_U*W.8훵Ma>MclefB~attaBHeSe~~4n& À,PUt@eAUU`=ovSJQ(P,h4Q*q\`! H@Ep8z>XR4M$ID"H&|F ضf EQ( rbAr⧏KKprlNa@$_)MYϺIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/motorbike.png000066400000000000000000000012161177067165300271100ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME.ytEXtCommentLicense: PublicDomain zIDAT8˥SMKQcSV "҅UpaVKݸqP.\DT;i*%dIL4/N'/ Hb[sp^=O1:@X2Y*%u=ںT!5YY~^DD%X`ҒzOwJZbA2'(:8( n40MLɄPZAC;V$YpNzrmg)lmz{j%HYW;P0e00Xӌr:=2~WӁ@Xvr^]|TRQ)uvίwyw7{57"o;"p|{M8=-by v=SFJM̷ `lJ>_63 PP*c,;s۵׭ɽ4PIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/park_ride.png000066400000000000000000000011321177067165300270520ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME)͒ytEXtCommentLicense: PublicDomain zIDAT8˥S=HBQ=iP~@)@Ħ !ifihluhmũY2ySP/*].p{p8Jm8eo1I!p'ư9y}_vw+7ldꢮNNj5UɸX8;Dj|{`hje]#]P(w żLJ`nOĺhj5<ci7qJUVVŭbibTUffN=~q,R`mPR.zqQ(( Q6+ rrJa`L$,H<~_\N<=ss_+%{ nI@umySz\SH$Q;Q6}.F;e \D2 ~!IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/parking/restarea-toilets.png000066400000000000000000000012601177067165300304030ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME02ctEXtCommentLicense: PublicDomain zIDAT8˥MKQ;3:Ɣ`&buʍk.\u (bH%C1$4tH $sgINa-I Ys._}Oկ_j%8.้ 1(HЏ󝝈Y-8=gfφN!0 X0+ ڱ>cAً))@KCh++O?;VCO!@ZkϋG4zRDU\i]C>~eY(;P湌&^0IbJ1' ;V11fSu[ý@|h(%ەI)hUv4:Z--:pzׁSeBuIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/restrictions.png000066400000000000000000000013021177067165300262060ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME/%x[4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥?hSQ}}yɣ jT *qqUACLvf\TTE84bP1!%җ&TDL~|duXXQ2n|j D;^~^,qY$.<pt@(!8:FJFnbJ_Et&&r뒍MOSYo2YI'hn:̍y^n1< ^39j|>SJJ6T,M#I E9pI6ADZ禵ͿӞ`Z Jڭ-2u ^lWLW͓n#۟f_CIz*,e3${/>4M*"_c}WEj& [}hw2Ԃ/ 9\7s [.<_nVߪ$|MAFG!* &mD|Up߱p[p.- ?I8Q{-= tKa}qj ?OOi~:( 3ߛ%kBıy(0*zDމO)g^2^`?Lf/HE@9;+9h֔q8Y=[XEVϑ+ ǩ)ㄋj:8ca,=62Ko/Ffٞ"X2 R17MIr$KOđM$ X=g8na1׸|sYUc= 8q QKU: EO0BCl32o&7Bc LyLtf vXZㄨYLt2+{^偏AIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/restrictions/play_street.png000066400000000000000000000012031177067165300305410ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME0,<4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥Kq?m/˵f3kQSAhB*.XQA] .Q,qRKˬ^6t:ͽݚ/[(5: [n=_ RdK J l479áP7bfԂtUt) APIrE`oÛ&A/{] 0<0QTpء}!>eVx9D4Ykk s\+}d|%: D#/EbW8:C$d]dxd;F׋3]gWVIF]ܽqG )Frx7t5e\Y^M{|m̤m8y4jq:& (olpPJVNVnIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/restrictions/right_of_way.png000066400000000000000000000011551177067165300306750ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME0$2%e4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥SK/a=a#J=iBbA%XHJXJj՝`3$j-5&blZBv5ϵ@SS%/7{rsnž_g _;HӛC W5!z o;{MssXL =>DDΖȡ{،ONx U06)MIRuْm{`_l;ϟ\ub3u:sH _R3sq;Q~ 177MgCIm6ڿx+0RH&q#ڿxf1̺it4Q|(vфu@UcM=BЂAh[[x pxS~rCYhH=d:G 1猬vf_}ٙ?ԟ!fbV' wIDAT8˥]HSqƟ wh݉Xi9bqB!6@l&Ћ>QUⅡVZFk1hDekQ)cdDy<]T2Ws<}!"MFF>v}} *, .9NOFW.23>JL39CʫKKoR_BR#8_9a='f-Mrd8w$|N` -x֎+% p _ ]r!2+a}[`Un70  77〯Wc ˛Su;p#ދPVZ\%cP*3UOՍh@v_=Q46D845A*-wh4b1q<K)NzHQ=6_GK)G"55{PyȹUFcwsN@èaZ1==g~EQg{MUlG*@QK I@:u'#'?pqnE2w#zkG3)2sG4:@IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/restrictions/roundabout_left.png000066400000000000000000000014141177067165300314060ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME04tEXtCommentCreated with The GIMP License: PublicDomain 6^IDAT8˥_HQo͹6k[5v564 A($܈HB I".^I]L2$v`pXԹN !p89y@G' I~KGg[V z_+h uBbS24+P̳ˊڞ tG''ŲjQ8ߪ%M8wS+bRn<7>z)TFvsnw0F}hrۇ05* / |>EEB]Ec(<%_zϫ']k=fvЫ>cUOd(\nuc۝)3]Ra^Y ̛<ȋ/39/l3ORM^8j fq;es<~57?6YIx7þo=i3$ ;!)l1ƘE0iP)F._$yʟBw8zQ.>rƺ|%KYBZ"W+<|F=0$iPNl1عiX t$VxA哳9Ȏ\"}ywFb{RLZ-܄xtYP#t]LNOxf!,p^]MR1~]]!ѽ؀W]`eo SrZcrr:99K~Ķx΀8Ə=B`&@m^*`tP}l+O+W xʵ`gͶB,OoU=חVym:u!l'yʵ0A6cK71F%RNIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/restrictions/traffic-light.png000066400000000000000000000006401177067165300307350ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME16؇%4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥-HCaչ" NVh,6n4U &b\l"Ȣ`Y,daZErNx9rH)hE;P[ǽY+GgL>:X`&iO]B'p% œxO"^TVPHh4Fݦ۝$8һf8L+G [ȥA ',}]|u&.0uLoص0%IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/restrictions/traffic_jam.png000066400000000000000000000012421177067165300304560ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME2<4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥SKqݗDI䂁D,h$]\)[ B$YT Wc)hИ!WKġH[ RsW >4`;Duvvfw5/زMێa~"O~kfAѩ4_X BtZS3Q()wk Й1O۽ Æ$DIk>۰ #Fnbb./ kHbahi ׅɰ0Հ^䋣v67::N'`660OR0X5D|/fjPVAQ>*Nff e g۰& ^vrRT* O$2"zȌ5&H{Dz`hpm Z t?/5浴b]&ŭoD7 >&<$%$dIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/services.png000066400000000000000000000010341177067165300253030ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 66DǝIDAT8˥AKQv߆5CZ &`ţeɥ!P~A1<ě(h+HRFA ,.e9ͼ?oGuGu  ^ZjGWWC%ZMfCZqؾ>ԔB0߿d@h0)NHlI9umm+!LO;to{Fxt:/%R \ffUd~cgBAj.Js+RDsppX8*bi4haf:C[ 2Qʤ^/3ZUll|V{ʇ|?T ض`<֙RJ=ch9>QdU<E4 ⌂~?bo?SRVy|iΚ<ׇz_swP7nV[8 ]jT5 9RK1DΝ-@DG/[jkCf&r׼I)!HMV {`TWAq8QA;UVF=dx8`T+_>ǭj,/` N$;-ƳW˓E|VpշvBthZR>(aU1M}@$=nWel܀Qt]fNLIVJInAȹPz#d> em'\.rW4$BJH,,(t$B LX}t#}H&g8u:C;vdKZuQFn?g3ܻ78o6LҦI4IL兕ar")uLFz"WV~c=RJIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/tunnel.png000066400000000000000000000007241177067165300247720ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME&tEXtCommentLicense: PublicDomain z*IDAT8˥1kp@ $ 8( uWJurqqRZ#!k $zڤ&XqwL:3]R"/.KL; x<Eee11M5Aɨ&26 ZkNbx "ʥzML_.yIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/turning_circle.png000066400000000000000000000005741177067165300264770ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME ; %7tEXtCommentLicense: PublicDomain zIDAT8c``cLǀ```d{901P(6EĽ>(qrevbgb{)lyx|Tdbb`d```&Y7Q  zFut200ܤn,]*r >la^````r5eׯLqb;$$XjĄ1L fgg#2IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/viaduct.png000066400000000000000000000005121177067165300251170ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME2޿4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8c``cLǀ```d{901P(6L4&Mhbf`xɅH*. b`({?b`X}! Bb 2002@pC> "_!cz, (L fg>ã(9IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/vehicle/zebra_crossing.png000066400000000000000000000004311177067165300264720ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME ptEXtCommentLicense: PublicDomain zoIDAT8c``cLǀ```d{901P(63s]b4+j2HKKCϚ5 @#ONJ%gDX '31PIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint.png000066400000000000000000000005371177067165300237220ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME  %IDAT8 aKb4RW\bVYBC(I_A1[vN@!C}CԥqHE7B'hJ&P#f:?3m;<k4#ε,pA%Ϳ`g^5+'zO㦩a̒n+nw|ŁGZjy\CSN{K?L@¤P37IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/000077500000000000000000000000001177067165300232075ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/empty.png000066400000000000000000000003411177067165300250510ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/YMtEXtCommentLicense: PublicDomain z7IDAT8퓡0 ֏T$V0 x4}/h#ACG8 VIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag.png000066400000000000000000000004571177067165300246340ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME &1yIDAT8O p,VN  '/+p 8a􋍹:̬\|{/Fɀ]# Oϱ Afѝ+,)Eܐ)܄Hfcm|?d |7Wk4KsF 1>Nfox+\pej3w*1Zl<"Y:~!OJjIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag/000077500000000000000000000000001177067165300241205ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag/blue.png000066400000000000000000000004571177067165300255630ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME &1yIDAT8O p,VN  '/+p 8a􋍹:̬\|{/Fɀ]# Oϱ Afѝ+,)Eܐ)܄Hfcm|?d |7Wk4KsF 1>Nfox+\pej3w*1Zl<"Y:~!OJjIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag/green.png000066400000000000000000000004541177067165300257310ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME ;Kd`IDAT8푿pF!iM"1<'0vb0IBBD#/UjX:zs{ QR0.B&oˡwL]cӲM{qx"Ih0jIN =OpR\U& v\OXӸHܬꐍ __e_AUIB|IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag/orange.png000066400000000000000000000004701177067165300261020ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME G_UIDAT8 qfܓ6C(ʆKdDnkVf4&7Ę[u/0HݯQ?btNa/8^LK’/~e<J2Kit 26#XPJղ΄]wzbE;'kJa݃\ҷ ~>2RIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag/red.png000066400000000000000000000004401177067165300253760ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 6CIDAT8ѱjϤ" troЩ/ CбCAwQ0BPB$];$1w\~sqɼKEph١="Z2bMM·OLK?ɋ++ _Ѩ7;3X'䕀n~bRާ[ZQWY_'1&8@?4IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/flag/temp.png000066400000000000000000000011111177067165300255650ustar00rootroot00000000000000PNG  IHDRabKGD pHYs B(xtIME 9٭IDAT8˝1hawIJzilRhqR"P &Jb;X*JꬓTQ((qp`!C-(Q!5\ EҨO{{~{ /8܎}d|,?ojZck2IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint.png000066400000000000000000000007341177067165300261310ustar00rootroot00000000000000PNG  IHDRabKGDGۏ pHYs  tIME  /7;jDtEXtCommentCreated with The GIMPd%n@IDAT8˥NPDto$҅(I7ހW`ұHRlbbM5P 9Xr[kH9sŘ2!<5OT>qtVLs:6|#WtQWlʉ]"|=S: $ N DyxDD&;g-0ls"ޟ&XpI8:P`ꨃyLF:v1 ňE@@EPs~FuQ7H]"$ iǿݿIY!ː DVhIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/000077500000000000000000000000001177067165300254175ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/destination.png000066400000000000000000000016131177067165300304470ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME ; ک IDATHǽ[HQǿ-+YjK׍T""nR],z(\b!z(,IMmIbE`D {ЇМ9SzˆI9߅;s~!q@pFI%r軶wh4U)W$q/g_nb1u1)aw 2i\|Of./uvt ijL7!@VVʓltXGUP ϱX0Ō} H(s7Eö!!_%'#Bl:\_Ե@%.^jٜnUUK/>^,!a Z-7—^Q^QKȒn׀Rʉ `lev.9s*o0$mtB2 9d1"3i;nJJJku)rywP`=}+UƯ TׄwnL&&22KP(! ekꈁc7X$A$_?233c$'IH)A`Ipe exzjҟ$uΓ|@hD\IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left.png000066400000000000000000000005761177067165300270670ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 13JIDATHcLFF4*b````A6&H)`ddLcddL,&juup fSpt0P{0cפhb㵀3000`dR ;gI] /#~xX9{K9 JX`Ln~xX zFͼDWn%,]݂Qc-q#dJ-h԰`QA%DvWn4 "$Sb@AY ;jW<`j*yFZ7[U~;Z[0IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left/000077500000000000000000000000001177067165300263515ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left/exit.png000066400000000000000000000012771177067165300300370ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 20Tn?IDATHՖKZaǿX94a^@&B/ACAmAm\jkct,yvey=c`Ep«X1!(@r˓ػ lzum͹˧e&$6כ2څXaJН̎nՌ5S̨-_ G ul7fLovl ұ}٨3-(Kԋ7 E6R*r~&(5⯢V^#8׃!P^(q0|\ioJ@D1O'ÞV@)(h )(ȶ[]GaIoЩ,tBQh\|u]n!xv6Jr!0 D%Fx㙽.l(8]Өu8MBaoMS)y8v{,;xmH3}WǗZN }?CRpi)B$lDDM\_(Z{I+HRiKDe}IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left/fork.png000066400000000000000000000010601177067165300300150ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 3uIDATHcLFF4*b````A6&H)`ddLcddL,&b OX`L[n]b6nõ'i\{}MJKTռ[H >0&=Iۇb"p &b '&R 'dΒKLMJ>g```Xxa!F7?>F?ވƗk13f T |*Пw]NYp1؂d3|{#` Y0'pι:̌~5-wK٩]['6=U=orTjRRyxDa߽}BEsY6H$>."pB("Fh $lt? =Rfi"qx0 rp؜ [d69i+Jy@$1ݍ VWt DSjJLXp=>e5:+*9l2d_-2Ed;. mq#D@س Rٙ⍝/;GD|3ݲCnG-JMܻU^,7Y %U,wWg]_uM9jy?=KFf~YR 7T"*TUi Gݣ?]&3$@0θhBgGl Ht3Nu$&ѹ~AА!tU_d\qR;p| y<竢y~ ߻IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left/merge.png000066400000000000000000000012341177067165300301560ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 2yIDATHcLFF4*b````A6&H)`ddLcddL,FȆ3"|b"e̳3 g/8K۶mb````a L&d駧%ijפ'i4Ͽ?!KXXI1< ?XX$M0f```3 _\TZ]lq-ǁk ^o&R&#t##d lm@?\Ů -d1v#=#}G_Z'~c79íc x!{KӓOOX#˂!ۖeG6H F?~3sp_y"T+5_EE\ddd~5k0,(.MJJ~/,gPRL0J՗Wl03Y? 7gyuQbo\T\$4W~132דыUŌnTIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left/soft.png000066400000000000000000000010771177067165300300370ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 2 eiIDATH=KAg.QH$J A-b#i,Q(6DCL`upXJ*%I/YINrc#!EOη}aY$DL"Cռ1I":dvp jxg^ oPyf! td\]+۟ۿt.H;2> FwůMG5-fčwČogaadqf݁]a(]J Cċ^-F7Yߏ7&R4?oܼ[][>  k'ke ij>u!-I w=,}beWf )X tܚZcz5򆔕ʕs rrκ-;Rp Mc@ͱ{5G1khߖw%E|33IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/left/uturn.png000066400000000000000000000006341177067165300302370ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 0,rYtIDATHcLFF4*b````A6&H)`ddLcddL,&juup fSpt01h߬{㏏\d+o{wԓ_űãu5[űZ0lerDY@M0p .^p%C?Y$㋴/И3e,BH1jpZ CoяyFQ಄qF2%7'C ܂ƚ V: ]e"L0٪@ilX~%IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right.png000066400000000000000000000006101177067165300272370ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 5,.J1IDATHŖ1Pdb&1%F#aǰ},FL21iG0lgBw_z_.=b `!8:qhDC% Oѝ-DܙwJ4czNټak֪$ʶ &u[m|^Rq%Bd`sܤn%.EQpk ^CG B[TU^WB(GPWIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right/000077500000000000000000000000001177067165300265345ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right/exit.png000066400000000000000000000012601177067165300302120ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 600E0IDATHcLFF4*b````A6&H)`ddLcddL,FȆ3"|b"e̳3 g/8K۶mb````7Lm:Ca,X '⋋Of!kZya#Y~ٟLLpKȍޓO1׎;4j:u˅ E|.c]wvprȂ7yzF #֛[\N<>?Fljll4 ƒ!p%?`ŧ6D')3,X}e>6q&Fg=:&sM Y>w ?!DI`(iHUkvn>`%gCuB_q𜙉2 /c ]ӭ󜲐wvd[8d}L>#$>.fbOg 51  ]#YȕtA^_zv5\>a"'`3000\{}MJ{.L,apB0Qp|cKLMJ>g```Xxa!F7?>F?Y3So4T7SHBƒ x /}0dE O6J>CrM993#jÍ΍7I >}lޮMǂ;^:69)^7m76Lv$|pPϜw+#Tct1KYҎY>PV{Gj$> 9Od  g]/30000&-*}yn5oR IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right/hard.png000066400000000000000000000012331177067165300301570ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 3:XIDATHǵVKSQ|&:^2;Y[J/ }[=^1IY5y3" @." Q 6LD"x.Gsu+_zeE8n|w'VG9u?pof6O %GY%D&qfόaVFfm+~NՑoJ2mM[[c15KKrqec.KU_=te(š7 n5975/-Y4?2VojgebX`鷇? [!?/?oRޓG[6>Roq"ŴEovJF C|!/es2A(RNCqpT !"I!(BC <5jPŠ P $$5 p#s(iIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right/merge.png000066400000000000000000000012111177067165300303340ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 7epd IDATHcLFF4*b````A6&H)`ddLcddL,FX𱉔33000ğ {DMÀL 4#Ԃ%Ĥ%HŮ!˂?0j3򟚆cXn8X8 ZYܔA11]{} =B2g```$1~n'i21}Hr$277at,.-#<*ᇇXObi lg΅ WPsPKTY9Ͽ?(os CJqFF,N7]dϿ?eldw6[;==Wੋ+$=<2gIVfT).?XQq:w0 )^w(X? VI:=kԗHˀx0Gm17 .*.ϑnA\ IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right/soft.png000066400000000000000000000011101177067165300302060ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 5 A6IDATHV=KA}'Ĉ-(mD;A%6JJmD$ ;Al  vډZ!HA0XbPr z!xvNvx73̛@Dq̜$/ "Qor0 cK?Nd%dEkUok{$ XQwcwn~hH%̜''ooBr:;nnt *qlҋi#y,'.*gKm A+EU 9SF+rm(xMh.)=2`wi%kk@Dۙ~7|%r59;8l y% [YN^@!?455\# O_9pC}cj#S9C Yp5z?8\̥3>YZq" 瞧|$;m،IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/right/uturn.png000066400000000000000000000006551177067165300304250ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 3$We-IDATHcLFF4*b````A6&H)`ddLcddL,&juup fSpt01`l߬{㏏\b+o{wԓ_0|pQ}upa-0,}f29Aqae,6HFg/8kC?FH$@,{(HgDS% 9őDWneֳyWP,f8El .ñFsXİZ6=D<jW<`j*yFZ7[δD IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/routepoint/straight.png000066400000000000000000000005131177067165300277510ustar00rootroot00000000000000PNG  IHDRw=sRGBbKGDC pHYs  tIME 6IDATH1 @E :}^.V)V [TBDrI K89N !X"R@" )7ڶ}En{@zLIloCӘdx޵^iL2NZ +%9^ Jx \#Qi~ͣQGn/;e]u5el\`!2*>/ݟtߑ<`W<sEIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt1.png000066400000000000000000000005561177067165300246160ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 49V5IDAT8c`"d` D&FdDo2X@֭%_߼߿XXq,;i.~~ _0>z􈡌^/0{\Q]4Oo1>xPd5l6m>ы :1YXz3OO30X```xG^*Ye``8 .A^``!Ҁ0S XX%DiG6 $Ðlޏ9 IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt2.png000066400000000000000000000006241177067165300246130ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 4,u!IDAT8͓1KPPjҡqܺusvoqr/p uCB8AJZLREʣ$F`jqyz􈡌^/0{\Q]4Oo1>xPd5l6m>ы :1YXz3OO30X```xN@M6g17Ʒ&*.r pa#'gI1 F$p%yg, :{ `IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt5.png000066400000000000000000000006321177067165300246150ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 20EI'IDAT8͓=Kph/(6 RP wp*yBPCfjEDAb1MW8A<8Sr#0vH,T9m{vuEWa ΄$Ty?i'+\_ L|N/' -ːLzT*Ċ#^o tlnM% ~G$` -qM`IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt6.png000066400000000000000000000006171177067165300246210ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 2tIDAT8͑1KPj(jAAQpv98tpSAYlh3ROdДD8hvE nMbKO |1MRIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt7.png000066400000000000000000000005661177067165300246250ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 2GIDAT8c`"d` D&FdDo2X@֭%_߼߿XXq,;i.~~ _0>z􈡌^/0{\Q]4Oo1>xPd5l6m>ы :1YXz3OO30X```xE?L HJs300,e``XA `?9300|a``.Al za 8@ sget#tNIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt8.png000066400000000000000000000006131177067165300246170ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 1*y IDAT8͓?K`ڗXVNԥ":Tp(hvqOM[RK8)8xppw-`.nSjPPGUcUt=/2\1"3M=ez"S]jN_B0XV|2bz/لX[p`N׉FpB,) h'^"gM'@c!}ˆcIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpt9.png000066400000000000000000000006151177067165300246220ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 1lΓIDAT8JQu 3j p=OP0 W"fѬt-b4ǑIDnLfQZtl.߽Xa(}!µ XHެT^l$&z(nYDž+$A4oO$-vqZ[z5]XvOBx^T: 1~6`:p_9g yU 20U1@xW.~i<~'n/uk<7n̼Z`.X8ž ~/S=A8 Xb, (G̒9E:G1rlĖN%~K" شf3$LTwRE#Zi-dg2xo'rUEj?l{wӡ Sׁn:U: wBCiڇd|K='(@XʲX[h4?֨IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpttemp/wpttemp-red.png000066400000000000000000000010501177067165300276610ustar00rootroot00000000000000PNG  IHDRabKGD pHYs B(xtIME ++uGIDAT8˝OH߷M퓑,-:xɹϐ5CW=/ v ȈܥzdDa𡟗i `'q]o$69>.3qQӦr.W>}rD=[6ð2z[ۃrC+PG fV#m>~O3 ZjfbKK獍7WEwN&>;oNIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/waypoint/wpttemp/wpttemp-yellow.png000066400000000000000000000011241177067165300304240ustar00rootroot00000000000000PNG  IHDRabKGD pHYs B(xtIME ;4IDAT8˝]hRqs<9[ZWK(E4A1vQ,*Vф (1l(*)9,FIw~y?$~&m,˾G3J}ʟkwmwԘD ٔwS t.޹uIJ|{VU"sMK9$]6ۣ%w FI D)8B>*|]ˆR,f쀏_@U@%8%aC!D13xv!DH"'Blh9.ՀL4X~Ꮞj,oue `&|{Wn/ rKVkscF+&?mWU^@:$ ]8>\(H\w86+g<^e-cW@ ߣ(>=o#u{]Hdhl..?i79I2:IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/wlan.png000066400000000000000000000002611177067165300230030ustar00rootroot00000000000000PNG  IHDRaxIDATxՐ 0  a0ό΢>Bi1>ɸǷHT)e%t-zqhf}dY( ܣ$Iy-ʲi&9"B`8pReن}>d2GX,v 56A LBXEfI4t:3@\.0lik 8z_7FI4jRt/nm~0[0= iAH$l,_+ (W |5M8n6PE뵾KZA0O w <y2, jzI۽t:yV/ At].ףmp+^GJһdE"D"q1yk6P(rh;q?y^At:tt:GB I?E#zbYlٌqvw8V닭&!>S8JoZ8sIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/wlan/pay.png000066400000000000000000000007431177067165300236010ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME2:pIDAT8˥S1k`& -Z($-dpturqop NY!|)EKK8)BKץ"_hZo:=qcJA)~"=4AQXJfy,r]\.tND8LyfOb] F4M;l|tݻT*eaöj*a/B:0eYz~c:Ɉ@jG A*bp!ύFㄅYEUU~!"v "B֓\.EQ<$):y4MuT*ytK髮ip ~ u]函/IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/wlan/pay/000077500000000000000000000000001177067165300230675ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/wlan/pay/fon.png000066400000000000000000000016461177067165300243660ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME- %3IDAT8}k\U;L&Ӽ$Ӕ$ڄH^4RE.WUD"X7vQ((.*.jBj $$4I23iv U/yvKbb F9prǛ.֗Og ZqB.x\]nS}N*<)yGJpJm}]˯W|rOM̓VI*.B` $$Y$RY]oTⱺc8L-xQt؂~ũ!EnS4 &o\7 w қŢĿ hfmW ),UH iNYD09,]͂ΈNRk]moLLjeP;lmWGBl y\dCH7Yo%ɰzftDҀBps0fdƣXc="Dj'b<~kp KW:%R=I铰h~YH) eÕEtN^fafZr.{MQxi$Z=_ݒ ~ >! J(r!W68K yJA{r v@sbAP<5LVo>V8Bn.I0F'7%)Kz2vМp9i2pyl߼nvPpu#Hټ[/o/=?*- JnzYGcnIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/wlan/wep.png000066400000000000000000000013561177067165300236040ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME"01{IDATxڥKa@T6"%W 9Q#K x='*~DG,5(lV"F7vm ۓ^l0<s!0q\$]/--}0 #8<BJ?wvvjkkF뎎H$fQ"yE8>SU5O.V/,,\ܯ UBZ$L&o>X-κ:I4#^Bxri>O]\\dEyEeZZZAQEdCfy׻^`0 >M@AgI}߾cIENDB`merkaartor-0.18.1/Icons/merkaartor-win32.rc000066400000000000000000000001071177067165300204730ustar00rootroot00000000000000IDI_ICON1 ICON DISCARDABLE "Merkaartor_48x48.ico" merkaartor-0.18.1/Icons/merkaartor.icns000066400000000000000000017640451177067165300201060ustar00rootroot00000000000000icns%is32kUm_mq@JU/^\SO ADZ\GB]9G@DK?:)$;#Y< 3u*$ &6!Gǫ-:$1~P V5pk)C,vi+!ljWT}|5.0lOUE :f3LW>,RBCwl.!cEtodByS~lSp@Bx %Xb>r.5X θWѠ|D9rD,l,૟V~vw\H^QyX\2 @xvI #LGDA 5sN; 7I+:79?20!2G0(a!h,<"0)f@Ev*b_5#`U!XZHGhke($&t|XBGgq6/qV(@F0%pwpB54g^%vQm|6cnx\T6dBn[Dt[n3;gƬvGwP2a%-M£Kg8-d7r%\#Н­FT*#$.$#9JKD@(P 5f=S SaMe2W t  cDW kgyK !/0m %.M7Z N!?EF\  u$  !#,+A> "!# ]20o !x'UV.=* B"PKu@+AdK]|B< hm ^{dM_s8mkil32 O/[pZ*CµoeeT9fe!  *sx**$(KX>HYf[]Jot\b((4Y~92 /D3nnCLld;-G̗'?B% "OG_voFoSE-@Ǯ`ޥ@p 8J)'Y'ID5wupR %b6vEŪO:.DA+ kkbb?X 0GjC./P$kE@7 Yzs7C@kK;Ri;011M6 9vhpR"!E.(-iqʹEY3uhHoJ#!N֬ƾsOj1cQq# 2u_װSit\%F~uU'S#r~Z9~ISM&wyR+66odN3rM)OD9 j~X3I|#693:L1Z Kw`&Y!(9P<ν0/#m{wQ"7 )R}crS,#U#;Ψ a|]1LYjt/8L {ԧM ,N'FĪD@vp3Ǯ$ bW8PͱeAErQb~J    +;ڲůȦKqI]~N{KNڷ~ܱːMƧc7hZKW@H3C !DY 0׮p~ҹnoY2T0s3s߼Q7ïce1_ 2nřɸC'ь9˶ϗl`^ʹǾ˽\}Ό #V ylťmhi0Ɋ lҾ|6ˬ` u||nD'LbK 7zZQQD-US el!  tktŖb=v^%wtimpOA_ )^lSsĝET]M 7uymfj^EG^zzylJ/ku{9D>av~uobjB#+ +ZpzuS>)cCo?6. Yf||thsG)=f|y}y./+0?&IAa~ntmiNJ .th@/'& Yf{|q_A,"A~vygP\E%E1s O~jeK'@ KswT_#,z@m> "i?; }y86^m}[v(  OF-DW28r]vAOe;  #/ϝ<]=Lf>g}<EƦh  ћ@O*XH=F 49)79L(̙]oZ\J(vC )e)ss|u_էC/QU'N&[}4 {/VNRǷLj|H ia¶X W}Y(v]p*{M*\K0'.0 66*& '>HK[\YSO]D?>BZ# ,^@; b  Kl3Vg m HeT;ExT^Re 0b}n>[ttv7]e CSO/:25-?2* L   )DE(j  3OeJ#  oYplpF) =xfq]  <E`gOK&" t!   #B# S(  ~ ""8PZG aN^)$.  x7)X>cow00.X -55G\";vR  )  k $:&# !4, "  %$+ "   Q. .:+;fGZT5$# H  tC7   s- C*'9tJEjm7Wpyuzi98CKkraYbc]q񺺼MD0skeheX2248U?N_puF, 23Vk TelsL  !OfA:.DmcQ]VZPOR^hVhZJgb[ksz~zt{gt}{yoS^`g`iZ@8(P=16FF?tQC`(   .@=CDFZlǯ`"$CUE !  ;@.^s]RIMeQD6<=4MAKgTdngXCHM5ok-Iwe`q`UihZK7;9M!+72@AJIsP)" !6;@@C4JϴاiLdTR>G.   8GBC?A8*"()@F691RqLmn<#%0A=%-=,,),  &'%"! .%#EAl̀ah͹Z8SvD&!   #.)=>CQ?1()owb\qqjmSJ;.Iq@DSbjxzu]k^1_tqc`*!  2./<")"-G r˧0]/$$  #(&)27j{4+Tijtk|Z57$ʽ"CRyqwy%TjFJ2   $7+  &6&Hbm¿~uΧ<./8*$    ;uA"#%$6Qjn}yu+'Ƕg 30z{_g0UFygq_-5@# '=EDNw˿Ź˧2 6μTA;@/4  +*)"GhFCYB! +}|zO6@=辴{,5cpsUq]c@gL2  5 )WNioàoG"V˳[D72Vp9 #-,0$=KGX:'0~unfu_--ɶ'3NNnyR.Ic8Q<3 ,(\Ǿ|@nʢ=4?Ba_8H$  -&"WTOL2rx[pzxgY6Ö#D0Eb_ZHN#13)%4fk/&'BC6*$3Z9J/   2XCYQ;wL@켫L%@F#(&#   "6MJ:3"* CU!%$M:*"82  '©nM;S]潦+%6F5%#*B  #-<-/-,0&4B+1*+2B8%/ # #EK?) ! #     !$CiN{[~rڬ@%0?7:'$<@5 +_ $!$$#"$)*"1+"(<$'0vxδX;=  3. &+! 1v|G #?wf^ir]OEGLIL@<1(&K\9!  N{Zdr|o3[*  %+flŴ;5=  " @H -?@ʹżƿ{own~kO@@M5/>F71F2$3I# sq^fUqaow4;$2 $ N~î_bD=" &6 Ohy­u«zfo<#/..2E3 K}TRzj5>G07R   9{į][A/1 {   3 "7dj}ĬI+%4=+/*   xunSfZ(  H`ȾhT25$  8   !RoQ)OrqzoK/210*   S ,X|wyr1.4?!a¯ktB'   +$0-& 8~k~Āŀvʷ|m2%%$(!"  &.Edl]mX*HV   [ȺسK8 #  +#   G~uĀ|ϴ] "5L!" !# ,arb[\OM1   !1׹åjM9 !  ^nQ'   .ÀȀ}νt(#1Igg:   &e{qehyt{q?? -&̾ĩQB=  5xV*    fȀeΫ<$ -) PRwzzmZc~Q5HD ͸ǓOU=    Z"  xа}iLV3$3jT24cnt_3  (Xduumg_iOkZBGQ1&. ޸|OTP*) &   !PQdRxúűwS>>USN5LeseJ@=Nm  ZokXVRIRbo[J7:6.)(Y|KYH(+  W[P~sd(. mƱÿoS0CCU<#2@:/!  _|[\U\VUrSD>@_i'(w߼{QK#( Y~9*'o]&  A|ʽжП9#-;P4&$ %G19  mvxRRQVZgoTGLKzf# Ẽ}Q4%!!  NQH9<@p{!sƷ:OP auig&OyQ9&!PZG'8%    |{pN\yomthR[oM~ۼ‘N9/(48,- $2/ )hLz;,gGLSdc3^)8`kACrtV-$ s4-/.  My^}zv{iW:5Q- `śA)#!A4 ((!"/ 8womi # "wt?'< ,8[hsjqyp/ #$Y00&/6  grrew~{nfF4)-#"" !ٿơ9'# !$gM *[5_yY$kfWK( ½, J.>ems~lo]$'&%{!"22&""  [xOSXit]PK+$"$ ¼4#*   &(%nU,zvBjJP#&:_[9  У %NoyuOFdL*.%4D 4: 3  7nqcaax~qdIMlF"& Lٵ/*$)  (/+E~~wwp}h=9)$ lټd  #XeS25-0-/(>' 9 !Til{op}iRG_O#*k"36;5 @ 7+./NR`OfqlM=$(   dU'(>/ ":.",50./+$q7' $  -HSezwVjy]e|r:"4-!nӵÐ !5-  ":HX;oUUb*Q#OΘ-5&9̃8 &#%16232069\0 %DXWlr\_o|}aV|`bD#,P?кx"*D1JOZ0jmeûl_ ʐ>R9שWfwd= 1LDG?98d~u~nv|ſ^;IqhA67sQAC.%(֫\|owf]UUfQ7)4(4ǵa,EOAL2KmkV~~lt]caQXwH#*ʱ=\u]G:!0$J1&brnÿˮʀǰa/CygIKκҘDjqVgzMsshbrj`]34E5H_cUO "(?85Vs~q|nt˭~ſo;.`vC?Qџ! Sxb[~~bntwzUqU[QOKE6.UM?L/ )@9J]hv}}¿¿ġxNFB\~sRFjfHNMsƈ||ep}l]C%BHnr|MG>%!zij],:+6 '3NYt)'@",VF2%A'1nvxxuy|wZ]Z]UG 7Ԭ]50> TS2{xMk|m0Yu[! BOM& KQ9nI)NH4SdWe0(Wt|oZTI/+[嵹J-+&'qd}2&hS'98|Nbng}lU,>?L9JR:54(!Kn@1&*%#8y|"1Rbf2rJAyt^Jqhp\RcmaA4*,3.Uq|{ms:4`8 㼛6#"$#>iuz|wv}y#=ͳx{stw{{`YC&+)?M.8IA"%3IxA?-7-5(+AǺ *37L;ʶj|wmqv[\cN,*+'w3F$0"2J)!;?JkUogNL00¸¾[   56.7-.ŽyKnl}WSc;0*'&`µ12.2@H;UqLXnJCW}·l+'*$,34& @żŤDzyx$ $Cojm}B9.$'vѷ{71 -6D17vtKBXnwsMP`VxLE'9qzdeb3 %zÙxNůZ o||yvbL>?'$}݌*()'AI+/EQC_w|]M5MklaH[T8?Ŀu05=z_Wrg* X˷G3Q Y~uv^IWil4%J%FF$&3JZe:sUC;bre]Ft:$=˛ Cd9&:4  ]˺Qwb4  Iz|xrfUOaC,$ϫN "/%:IecspaG5yYOzN#,B# ,`[ ɳürd0  !]wvus{yrZ[e03$иt 9$#68Sisyo~hlZ<;=2+ :l$L&¥ȹʺgjz4  ?f|zxnRT`B;6%.жX.$ -(DTrs§YA{lR36.*:03+1x(  tïʲqwg     PsinI8=A8;/i˭/&(VsvBũkroR~olH5'"PWOHED6% :IƔq~h"f    Kl{uILI1'*.Y齵((  rntvqtryQB<>SPPY[5y~Ö}m  (au`AM0$1-ʼ+)-s©eZylo~}tfOG`R?&"  kƛS      e~~M9R<$<۷[#' AŻ{yF=0'ųxx}|~wcK}2##  Žƣoːe   Owmc;SD!4$ ,%'rW"ʯh~t~jN}* %## IĹĭ~C      btXlL-2F2\b)#мU0( %$[ţaSkz{~{k?F}vj6(++  hĸǴÜ9     ,da[B+%9Rx! ɶÃ*.' &+,romz[Yx{n:6sjusUK7-   cú˰ľŚ)    jT+.>2#CA&sþw0BlT*1-*­zPkzH1xkvni~kO9)% c     F@/TgG=5[4-6]tP//&ÿyi{U~<1epcn]*-1# Ŵͽy!     HMRj[9LҹW6¼"CMVusiM,3{Ro}p3'"OqiqynLRG# #ɩcč      1n |øx @r~`g>HD5&-@eOJg>1&tah0   ؿԣs*$ ,c(& %     Fo@ ۺk#%@psqQ0B0*>9U["ST7F"!  ^Z>˟nS 29 0(E )>)2  7*յyu+*,xúuYR=E@427Q34Yzh/;, .#  ̿uAee4/A>% (gO VR(0 # ~δ^0.ʻzysXLA%+=G»A7ehN>A(!H% ,Zӟ>#4M;:>'&._*832龰o/=}¼wDOBHj|D#AdZZRH@6, GS<@ЈI#Tf23b("+ hj¿ȗG/!!.-!`ݱa$\˻ÿy`Ywv};/Almz_O?2 Mqk}zOo&* ĩŕtL@!)T羳—poKʻhv9Ak2.Y~{Q<) J2}k[Ծi$oۼͰ[,#ֶÿ»eSkǾ}E6}tSJ}pQ6!  `ƾ48MϷ~7&ϖR'ϸc$jfdʹc÷[#EdlPR~pigJ9 @F9^ǻŶ<"0.(:Gbɤl ҬY-( 6ʷ2TJ Ǿÿ6$mzqe $c\QjYQ5)9~ƨxYCRdxοyx˹QԿœjH@"C* ۺu:I3 Xu/TE$#12:>EE:*JMOL]^Q|ͩyiջֿϷ[+*Jx6 Ҽ¿®H7?0+<ÿdGsmH-8>?,-33%"*,.04\þ̙tgπ̟u:#.'j2*ͼŪWNvyB ')>17;'$XQgrn|ΙuΫ͵W *žT76Ǿ½А;B_q{yt70QE3 #Y½ιyȀ1ùhϬFX4; #"q\_het~k*2I3 hʀˁ9ɶ¿жƴeL y>'+ ¿$̙[kdDcV!;<F̀P̢yͿƯ\. ٨TCn%! Zѿ€€ üpPM9lt'694Bς̀EOMϧgI 4Ȼnʗ <"ȮH<8O. .ỳ#κʀ,˦iB(HIz!" ͽ€ľk7JK  %*7yẦ̀1Ӎ)˞B G8\˴!"WǾ€{žυǿÀ#ԖU3 150E.ɺ΁;C-ϻĞӄ}#% nĜH2O;$(&# ,€:ԡ{O7::;nA`̀5şԙ=VĿ-5AC .+#˿ŀˡ{2 1mķE+pĽ͠ŧ~||90tȼ>8,#72$!/j€fɷ̽L ~xϫ|mH=Sٶe>;W+O4#[ŀ~"  #¿̀㷢7  >u΀/¶CV|^NۻhLGg[8G=eóĀƀÀh07̀Ȁ:⸖`k~QZjufa;wa}Yz; 408mp>f] B8R.)?9yԩj'g~tx}xr~{~}ms\Q2Cd'  !QsS$*]sy~falve~ޫ}mU8+olo}}Q@oYiVGo{~sg72:.    PM  *5!,==3$2W\,FZ`khrvl]cgT,+4~{LZ^8$   '(EVHW]zdz@  @R4.% 7WnqwvO@KDIA@AJSERH4( + !F?UZX|}9EH7,'EZ.   $#'1<9hG. 'sqe^YlhQ^qL%"k)>>XtdzxyxA%:O-@/) #!Hzh3W/*24NL-:  ; $ GyD?='[kqaIZbhaRI(7&7LgrMH9/W*&  ? "Gszqy *Wo{(;CMWEJ)) ~ )(8Wc'%O]ME_gQ[qpWN6tY[r;:FE/"  4HWa|-=4[Ž89(5KYN;;. 9 KNTJNaRO&`}f% ,;>hgnlWM8)76GR    t$LQZ{pB&B"8GXDC1   5" Mr3%7VosVR3Q~@L 1>NxXoD"5QB  z  C^OZxk/iP):MRTP>%  "][N6 `jTNO/B{ᷛj04=pxag+D`%:N3  7Zv  ,OgĔ<#":YUX?1$   YHI46q[QB&&s⼞o9,D}^]b7Gpg#$U"  /Vkt:,QUò3&75CV?) JY?^qUKI.$pװU4#;e>*;5N1F,  #>Psq&̿}#.mlOG'  %YL5O7EbbgK9jϕ<+BU5'z`0  I]h~ǯrjpmCeM445ije-   .meteC5THI}Org0?7C@&Ef ]{wrYsjjL5C7VlpV&)!+jp7P^B/#+>@?@[ĸwQ%   *v=0*'HgFdMڧBIoA+!#8@+  ;KYkM*7A7^^qvLVYT6'0+)#"0)/aYJ- 9(*7#7.#)q{U)$   J_/Yaka*LݭNER5%2-4  &7DXJ("28<&8A6-#&%/!&$&!=+4+"-%2?()!)QoV%45+")J.=&    'H5GA/`i=3䪓>48      +=;/15/7!3/'&('/)"(,11)!  6E>.!-(      tlY=/B}Htު$+7*!5  $0$&$#&)5"'"#(5,&7<2!          7Z>i{dIhf[Ζ3'2+/03+ #L   "(" 0'093*" )!      "   4kzpiU֝kMchi\ /7) ?%   "  0*! +A942A+.9;A6'&$     :vJ!(iAA   "!#>`hxaNΖQHum`30( 0G=$ !'5Hmhu}UTMPWTP80++%"$   J  ':QYnxk,nk (D`SJpϝB1y}N7&'!  %^ig`<  . "9kfgXYUTJ<:>7/0(!  R8=8:ThraRT9 5N]\X͘_5M_a6#!" C%dS.#,6J4 'CU:[aXjdRE@AHM;-,!$!   "*.D.f~'@" g CR_gyH_`j44AT $ ;AAJU.Qkz\`XefSA>ABEA45*" #$  %,98zQyK)&  1_atnsF/1)$" '`d8 4tzs_QKT[J?79=:<30((  (ʦU>-    LY@   %kk~x] ';SR.     Pe[lyqQS`]c[22   %?40  *aqE!  Rsq|rwf/0B&    =vj4Xfmp\lhhEK  ?8*    Lo 0QX+ XkyywhP> %Ga`<"1@F2#! AAa|hgcqcXHOeA*:5~>D0  zoH  aoleS=E) (Uim|C)*OX]L) FQn]_XSLT?VgH49A'% Ӥg>D?!!     BAkkPB  au`C22DB?* =Q\Qyz;31?W   HXUnFDA:BOYkI;,.+$!  Nڧh;G9 "  EJ Ag^~mynP!% Y{WC'66D0(02.9914/% LmzdIIDIED]C613LU  fԩf@<   Fey-![|itJ  3dulf-$/@* 9'.  Xn_qaABAEHRYB8=;bR  u֧h@) ?@9 -03Z|yoct\i$|0DD R`TfS?aA-@G9  . hcc~[>IbYW]okTAIY>   oϩz=.%!), #$ (%  S>cylr/#Rk:AGVU*~ųL -MV45[]E$_~m*$&%    >hpubKe~c_q{cTF.+@$  Tٯ3"4*  % ,b[YsgtjU _]2  0 $-IS\TZ`Y&H''&+  Ss\[QaoufcXR8*!# ̬,  S>!H+LhmbH VQF< $  %1QW\eVYJhn((   (Hzc>BFn~nlT]qK@<" 㱩)!   YyE#d`5krwSlq;A .LI-   >Ya]@8P="$*5*/  )    +XZgPMNqh`ifZP;=V8 @͡%"!   &"7gg~ha_YorepT1.! aȪT GQC(*#&#& 2  .  DSVkodqlYZfuTB9Mv@!]বp(,/* <-"%%>AN?S\zkmtW=0  YණE 4& .%#*&$%"q,   $:CQbg~q`EUubJQd\.)$`Ţ| +$ .9F/YDDx~ttyjpP"AD#,,l/ '+(',.J& 6EFWk{xl[ILYegNEcMN7#@2§g  "6';?H&UWRr~qs|~oXsNxĸ}/C,yǖFSbQ1'>683.0? !L`s\# -Raegelvxk^^OHIMKK\Nee'=+  ,ܫ=( (/#&-XXgpyuesmW*I?N@lU(4?AFA54q>PVcp|erkt|lMkq4LG[[B64IP7/'SfbM?-jeD|vmsldx|q]N\TUlwbU^`N:?T!3m.-3"++,("% $Acjjgqnovncm`ul:PKZrG:,DW)'))UEN>#&w{wurrnmqxksNN`jnh{lP_\56U "U8H:9+1= '+#%2-Pggei_jiv|t~~}{hW^dpK/:[S4,+aC56$Șuts\rloodnzYju~{r}_QKDDQA,!) +Q"8?0;>:$''49DHCrwyz|x|{r4UxpS0@]W@-/_5 $'%ɟl|~sobgiqz|\BnzvecVM[X;Uk?ѠmFEBF=@M%"*+4MZxyQZznRavWi2)KfK)0'nnE%,C?a\~}wmaepsqx]?hlqo_KFN0Qd,$Νr@LFG53=#( &T^pnUS~xXXwyOx}@*?fqS623k<(2=& !3-;JfokS_xgjyeeqyzwa=84Inte\A8TR:>>\grmyru|vvslddiQZozrifWmpK5/5-)('uA;1/ %:ZdasRJi~wv ?^"(3-+]jc^TUgQ>2;W\aytuz~yurkZ`ibnnzrjn[wqE50%(*098E:  kuW\Yanv{y|  'wl+C[bqhYPVl? \zomqyvqy{|sthlk\hqnbYkbuVQDJSf%% +*47   "a]Nxnio{yS?^* cr(?uweg/+Tv=$GpzwP]ytlrzxtoklhrdQJOsnZ`];K~Z,T& 92fN"/#+)>Frn}wum|r^!.^YR+9h42~xm"+fQ3&1.%:*$4\Owsy_gy{zy~vnneltbYl}rpt`>BB=*JQ(B;(@ABsjo}qvxopksqq}1gbHM@:%&!fo^?$Hy~j<14#E8(4'Zmxq{r}n__{|ru}9tgng_]adws_HJIKD9 .ŗN + &2CB(eh`=UkeWlv|z~p}_n&H`I6C<$ "jk[Ottezsu(TwuD,~,h ?NXqSeVD#23=.;A.**   o2Ypwzwywyzzlokdl`LlihA5tPL澭@ "+;Iywnctn|jhjhnol{5'$    -B4+"8abf=  ~G,Yq^wxvyowyshhgooZPuf5*PY!@泵j( /7kqllriczonq75    k\3& ,AYSE vʷIdo^Lkzy{{yvwnnuqqvs~kEl~wY%%5B&8趲%%$ :Isjsouu|/* ahV0%,:4(:axy|j42$+$* "3  "(,<. tyUjgjt}olkr}zsgfuvwe_V[^HIP>#"" w㪫f(9&(; /2;plx|}{wqUDYqR>=&&nL  *+$,$%iagq{wqosxxytsu|tgXVeFBO/&" P籟q%)$(3:#0D\wuu{|{vy*>VVM;HB-0|c '*0bMF[S!   Fw}n8)vgyA  Gtye}nmmi]^uK9ETV)>s78(;HQ-p\k{suxmC6/O[QJ7^l.06P-.*  Hy?ayMx* ;qyjsmfbfc`[RD?O5# > &/:ROmui}~yz\YirM9)bG?e?#5lvn#LI   rg]Q|& Mzxp_^^[cua[yIIR')âa - *,CTt}v}u\bXilghs|SYH0/1'!.Vk  sRTb)  3lRdcaXttrhADM4/+$ğI$ % 7D[|m\rjohvG3lcWA),&!.&)"'b    dYagR @h\TXrp:,14-/%W⼔j$ E\]l}gszT[YAftoYW9*?F?976*    .k9|ZeS    jen!  :ft6      Pf]iFW=$(8'LO!XF&LlMBUmgblcebvtoV37roe_U* ""  Ufs-   #PnOI4#.@dq "$##`ZW}qbIG_bwY.*lp\U^\D<,$  Sk~!    }  WD"$1(4}ܴ6 ef'4WC"'%!a|@Wunma:'cjT_kXTeV?.  VĶlxj       83&CR9/|۝) N*$,K|^@%&mdTikcEn|vxtsf0'PZOYgkK!$'  yľan~l   m  :=BTI-?ƢF*6=E_]T=$(g@YidxywvtptY)?[S[{oaX=B8 øsOumxm   &n yî{kf3[ffiMR10r]JPchiqttotlY:8PZgua[ZVH  Iœ9øtue         㹢+Aqlqrcq_ZF>h^|ZLIasz{uwxyqWI*"Ingi|b[Yf7 sï}ioB $,      v   ̧R,ifsz}RD$!4-IQhsXgy_;:-r`bRU5 jθ˽oelR 2    -ħ. pw~b90-&$+EYtW<[W5-(pum_845 ϫubtc  .,  +9 Cç_Z 0}R297*$3Pi?;uR1']pflLS&  Ǫƍswa"#Q       8Y3 ЧX3}zY\ZA&5&!1.DtICigmC,7  RO1gVF(. & 7 1 !'  ,! Ǡa!"#eu^GA163)(-@rwl))GcS%0# %  q]6 RR)%42  S? HC (  & l翟K&%{Soa]G<3!17{si4,PS?14 9 "IoĈmsj2 *>.v,1%L!.  )(⫛pZ&2xww`7?4:T}xc63qqPIHB93+# 8B10oj:BP'(qQ!WxT~8%%$QӛusNOzn`MG_]ne/&4hmWWbL?2( = a̴Vfcn?u[!|n]<3 E߫ZY<}_.3gpokzV( %Hujooeb@0   v>&ivVJ}ƬU`ȫpgfI# ɡUCVi9*uf\C;e{}|hZA+Q+,;m|o|f+q²liB   TURWevG7OVrB B~zgYTR;. 39.M/&$"09OvslX¼ĖmsG$  ,躢i'C; v*XscZuU PnJAUGA* .dntwraF3@Pa{bd@{{zV:35!Цa-;)J`%Cyzzw7'(/277.";>@=JKCj`SnȩŭuyI"";`,Ĩ8,3&#Q8\zX:#-22##)( !#%&*F]Qz_/$ }ݯV("wE>_}~|ra4!2',/GASn^Xpe\~ĻE #ڴF++ M|-5LZflba],&@7(H}{_x1T  :J)0  ]ILSQ]eU" (;) V|oQ @ f2" *GVO7PrD 00 : b>uI% ͓G6Z M"Z?>-X^ +-*6E?@¼ŽükR: +ⷥX 3z91-?%  %cÿÿ~|rS4  <寁:jg |Z+<<  !*g1|"oz~s4  =֮+JJs-?%'.@Ĕ ,Ǽmuru~\lͱ=4f4"łB) '*&8#|Yÿ8 #žmdywrvx  ^̱7)?o0 !# Ōa@ ,.[5P<ľŃh{jhk1 I⴫#+3m6%" ~(jc( (Xl7 #Yzjfuedc. %cḨ0-#v +( &wjU f= g_|gWilgr;1Ao̢R2.m~F"?)Lxkd ٣-1u\z=h5EdtrqL=ШT<9SkyJ-81WQuS& ,צzM[eżj@HTtyaQ.ZYVTC?JFCD5'HH-!80*BNG?77EC86*>U[A$ ^WFw*fgS"[Z`XCLllkiidsruqruxsvzdmstvcaemsrhcbc^UJHEDS_^B6Egcd\_^^?28-66,$'E!'.++!)3*_6-*1\;D;#RjtWZS7Mc9H=>_G=( G^mZ^\SO.3?E?CF/+18Zj_`dW")#5 "' ))@ +  PWY\U"( ! E<$#gj\80): cSOQ2   #, lzwvokSPaodP  {VSU,  Wlhuw~{O 9gh|:\XN[, Ulpzvyw{oonpoP   )LTF   0oeb_hvoprwj&nnvluO.   :~YF!.7 "4mkfa_stnoqro&rmtqyN. #  =rT]  '"  PrelU6T~yspssvDBoun{U.)0 0]S^*8B */Q\6]mlhdW9UzyuutvZ>ftqlzU)  HuS[5&)&;zvk]O\nip^9>1&luysstpe6kuugs3%MWV_1"K! /;+Kbpmrjdhb]ia=2Vnxtutus|8 Kukrkf))$ HhuTV5T,-GvlkmrihebgB GIDEQrrtuyxe 8coqut}A 12 MVpOL !TidkknqkhhjN /QdgaFFdtsuzv|a &4YyuyqK  EalMV% 3%]milopttnid\7!6c`dlYPTmsttssb $Ljxwvpy6sJX%  6 .QjpqsnossridR<%'4_ccdmlYV\rtpqlh>Q\jptutR-|PW* 9 Ifttllkloqqtla]CA14Whcilvzihgnojifgs> .`_]jns~a fDH;:b_nniimnnorw]_13PO]ebiqqopyt}z|ty}qi^Z\\~kfovxr,;76 I Ujhmg`]fjmhcf_F6IWdmhh`ieipd=,+2Yoeryynmq[L=.(G[Q#!'JqlG& {D4? ( HJojggkpmbcT955CJMdO (%Q# $NRXJ  BmxnE+ ,q]% !1<@ADAOT    J^weM%*" dg5Hn ^d4 Z7*}a3   U{A> <axKG  /  xlAA  (*:?Y1  '4 kgJ@ LshY=:e`i+ #   `dDM 2E\cec^Y>Lfio- ahrGX* *^`eghc`^\eipy  +   QfN^6  "8@LI\kqoofjdO%.  $RglMX3 8gYj[;RpqcI>@    G @ghHX(Q`cF(VYH84GDZdH;      >+-elFP-HI8 -WqrvuxukktpiC$    3h`FO2'Qpprppqpokqolrwf1    BdiDS11djfhmuutusmouuvuvwU ($($ a`IR>YfdjihmttvrspqsuvvzK@Q" igXg?  "]fgihiiqts qtx}z^ FM+   Bu^`m: Wfejlikmkjrusttuy|z? '   bwvZg@  =_bhtrnjgjgektsvutv}o    O{~Wj+):  &\cafusqhe deostuxvJ  G)  LVa -_ababnjY4adehksttskrA .   %tZ]  & 5iefecekpLddgghoqpmuug( & #k_X $8 Phacbbpv`fP[sjooYEJm%   ,jZX ,@khhd]Ovled*?=   4i^d   # F(!!1pmdfC % #ggj0  4gukfj[EF  $"  Sbm8 7/)Ozmmka   Qj\F  =N FsqnzO  dRY8  6(07 3dsj     'y\X)" 4S]PF7# /{Z  ./ -R]0+*->8YH5)'.5|}8Ia  @]c%4A' (#QP) %LfW"  ;u1-H03  !    WdS /?=4'?Z7?. %4C1,, SkzG0vW8OD3/, #E'    1YF2 &!-^L8 ? 53PT4 #dmgq,=aYKLLMI@1CZZ=%e_ " #rXO2 & +4Sbsi[dclkhks!c`RLS^]iovxpr$%5d-g!   +vUY % #/K\hetkmsqh Elfc^glqrqpooe#gtVF'%"    [qU[2%&$($8N.RgddltrzryA/[\hcdlotvuttvqwK )ui GQ "3   GPX(0$  1=:42!&((@^gdkrtyvs"6rjlgehrrt6usvpnG #\hQ#/,  " %JW\ -C><-5H^ullhk^1mpnisorjbotl<  0;  Yj #   PDM7 --5"$3*/*B+5*#+JZdmoarAD5SknmfXVS?  7k/  OSc73  1R,.-*!-L;4,+-+9`n-3ln_ '``fk_R>  .  <]!    (k]gM1   &$>%"$'KGC<0!*% )OjV="PY   8%     YL^  "3,1. + &"  $1%% "   OEP'  +. %/0.,"#= .31&#'    XTK2 " :'?27*#"2?9%G_^$-;#. ",5.#% &^d "0(! %")*6 B76Wc_& .,4A0T/#//)    1j`& &,  #4$E6*;2O3 -&"    U˅[    )'  QI56iI.$1?; (%   & Cse)   (1 '3* 5 *0{O'.,R%    4wd7%# =>/)!14%& (gxwM.-9@$%"  {Z89/+&:+%@GA9#!&)*\P1:/34@N??(,|wM#/EAB 3-.$    lW(!6!-IBCHJ:-1 &q_9?bYDKWOM2%_wuyR2O>V(74., 1eT&+ !<7%HI 2 cTQ^bfg_[M8Adkmn^3/DQJXS $!' !/ aoE%!"&J8&!+!   M_YcefciM!Uqhqo\JKf4IpL-$0   dƑC %'"#68 :3$ %V_hmgiQ  jvjri!JGkD$-!*hß#( &01& 4'&/.++ "fkcac~{xyS$7c ) 07% ^$(./.+! :8')=8  5hdm4!}z{Z$:+K]-! B8&,* (( &,:& (!+" jnvsvM0bjAoS    2K(&#"4[2 +)"&]mmosh1OrTNxY+,E .5 $2.. & +7W\ %J0?K? SpjjkfQ]^>]j('2ƀR0(#a_e?)'<<2$ ;`C% %& [qfifSUeTJxo+ ()  ŨF (?d]]`\  9E9 ;lL !9JB0$RCA2 qtko_HPm;Zpw  '˪V(-QQUacc_GC3:1+ 4jK)  )-!LYY7>CzspmV?UXF^`jB,  V~LlbVXcbdWPW]dZ _5  *R]8 JxrnkUCqP,h]g'$ /bp;i\_R[cbb^UNYV`)RL. !#$1?* kyuwkX_xL&h`k&K-\Ǽg 0Vcada^dcbbacWW[f)]neH$( "  #}x}eKs~lbwdD7)hķJmgacbVFM`bb_bCA]T "DWj_$2{x|oK:a_ : SʖCPh_cad]1Q"{i  5&ʍ_7)Wdbd_aVMabebc`afZV OKJK  )qmI4Q2`wJ 5J0  );PL8#HX'M}4csdU-(AƢYK5G]^XJF^XWT^baad] /Od[E>?:#WÞIQ+@SDZgehgcAmglohabccdfgnhu1<homzssqqt~~|{|zz}x6!Le_h}~ctvu~sCMJ>MϝCIJP[LL]fgija omrribcbdfhjjkefk[Khjqxqpsv'zzzgTVbkz~~|}~7'' _oJ%0"MLRhcgifp,FlnoiecbcdgiihfefepNX Zfgoqpps|}}~|W@`Ypyxy~}zz{5%ki*'2@Abedegrx4gfngcddefehhgiffgjetWfakpqqpr}~~}~{1z}z~:O[]psvtv~|j{}{okxyy+  |կa=3Ghcqllnhijlr|}w}~wuxyuwvrkoMh`fqv{~|yyz4[p6dyWH#0Nd__W4=2?pihiihhikiinpnplnfhd' (_bimomliOjmz}{}vvwzqlvTP|Q *|psqvx|~x|{{F'KA%ǚRW3Md`cE"OWhilliioqijpqopniijc.Gdbstwwqrqosw~~~u|T/9 !vsyy{zx~}v~%ehMF\N FZbZ7  VSilqppmrrllpqnmnihhg<Uddst{}utuxyy~_K+5qpxx}|{{}fv@t8mk@ic08 jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 l+I*;6=waA.- ~>jN+v8 0'=ΛD>c;~ڀm(`ϗX=i?pfZ|}FYLI& dl@AWdvj-;׽iR9t v@M31oRu:A"pʯ# <v:| \?@9V)%öW*%фe@:xU)$upwC "ќ(/zHIX @WlIsI9F2)tͶv]NaE A3׏a9FovQ]X%OFUO'?=^d"=n_N]gQdEdT*llFzwsLrQ}E'OÆW)B;{|2EG6%(H<$k)ш3 oߐzeS:X#C9Cq/YIkó"+Ս`>ԗ"C&>%ٙҘtBkG\~zTӟ$1YmA \>:si?/Vwb\|2G6%(H*Ebtk'afiEq:8dE]{o(i.އsM}A1<ںF>- ׮b'N%Wc8bJTTrRY}x,uA] F7^CB!2d$9OYIy1j/S.th".l m :̙J5  (\8]sZ_3?èK^'X \2vdbd=G,x:"0!4U_t(@|`uPlW0 1A}V%# @gNEСPe\N‹{xdB߿)᧙]F0IL8b|Sjl$8h:7ef3,@I:8 eq :s 5xm='g}RphۙwFU09*beܛڟOW-0F1`ybJeP>vڶ=et 3]}`E V3%BQ0iThOZ FD@=Z%HڳmI|DU>~B;=%WMYnLvDy:mkBf!e:j0l;- PEpwSĿWYL!QZξuo6iWVY%sN%̼֦<ׯ ap/ZT>]6IC[t˨c?ˌҲ[ 67ۻ#[$2I=0%|2L!<W,)RpSլ1 5JdQ(c0pcdʾѓF_cik+t( >͐ߗؾu)Ou$EjA_?ӭ+[W [xM^)B.J_ɮzB*)5Ui"ijip1"Dy5#Bdnw ,IIcA$.U(}ܫ8k7^ >.q)5;'[OLKMȻ~Vo~wA(F0*B^Ѩ%+SJߦӪg2.4]fL`:P:gDשR>>KL :ڷ)ctT~C|ǽ.1-{7tHȘ׼:#D<>Ɲjm]M8[]EKx` d9RS(7F"?\5,IQR/h&4EN/j5^*By G KȚ{?Տ2g" VBz_nuߔ=M@WcIۯ( PKO3Z_J d[퍒3M3-cR=-aCP)![b=|M\{䯑 :j[y[͉KFmڨjKSӪBF[Q*-l q96i7/eOf7yJY;h'dUٻe"dU1uNV^L;TVBg=ZVS+81ʆF,g/`ܒO1~zLUjSuB4]D*q@ۡC8yr˘ 0nT'RwZ}\n@uTH|G'߮ni2I$$g]Kt05%>v~>>XI>5)5i5_ 4<~,8SDjpu&^щ3"AW8p^v^*}PAub|jIi,0fdk*X^NVpMɄ_G0 ]d:=b83'.YGc"h9W !9r-w7ˋ &)G9:zJV#Sw:eoThl=;:D1HVun@B&;2tȊ;|duU#J_-GpV+HT’>ie^&]~KO&VR)(Xn:-S$U52)";H-l_ wxwhh2MWa”rG zWDG,4Oec I TajƇUE'S4~aJān¸S;f[MLQfD@H|#*۩d݆>=魳p*p 3F]Sl=#@awſw'ej:IA_!v r!tg2o ӆѼua !vՋU<<6Z-O 1/il;e4I7vX2}XXDh?drA}X^d#845byZQ{JfLr6֗X#&Q󍳖r T buIzB9>ݞǐЃn]L}x "0b(c:x0izA&vpDߖ`8)eg@(N,ftLYKM U"%pnKٖ(4Y4qT>˘iЅ%L[2Rb?mlI H[h +ÇZX2(mQ.83d([ל7 \ϖ)^(bxh/=Wyq[:JcRy̸6ꮿ4=9 *Xezc,_/1>˼YQ(0'ڗVC}M׶ e 9gM2/6FIc=zFTZ2=zgl8JXq1/O-ހn_}ktFF9!XT܊2<0``{[$͓CļR` sK_ omr_<@ ,Ϳ<(‘WXI iԤ`3Y Gd%;,P׼?Besx nH)3hGt>VJnC'U_(&lUnMVrqܿjl1]$d qrƳ h>H}i(մIdž( ,GF} &I4혜ul|kT/m%[&v|>K.lwmoJ90O0|j|x*ijSbi(20T`[qC)G=3`vyļ;lR%h>,u^_j索ilRBOnP2qP s'>;w?͕cj2Iɦ$7ю[n oaU0+Q9ZF"lU:uȢeks#p.r4K"GV|Lo7nȁ|`@5]Lr*'#Ρ&pTz&W@ʸ#{0Y]ty8 .zJx\Wz"OʣY$幍o'XQlPE)|Z/2F0 oy$}1=`"ɯzQ5Hs/2TS%A?@}^2<-nޣTue|:Jׄ1̈́$$ F>!GHcd)MkWK}X1~"y>Tkf52?& ZeJ!1Ǖ%Ŧ,c'#9갯M} _}!K ݍ7m ޲d@{ 89H|/zB2u`ʔ9@*Z_cbod}wann-vz: dZt;<Ē)i,?jv"!Fr)-s.ͅpy`EK8f(_4}#+Y0r%)x/VD&Z?hC79bH2>ȓP2!GXǚrˣDkͻ^Pq ,&Nu(p+>fdHg"XsTi>厫 f@O-Oς& ٩kXii!&4QP%C>2l#zJ㟗 ʞVD<ȽY2#ol$ɘ^ *\K|==Ȼ_UMK䦕9v=?ґ ;垟MNh]O !O-֒IkWub|rvwH%rWRdx8.̖P⊓F4,9BK ԳZO+ 1E\ɔ5t &龕V~| yîw'k O&!}\wæH^fxB)gR]l2^NUCsRmϹBiyX&=98<.k+u21 B KBkTF3k$k\x m(,W wQ#*i?$ZrLL%*3,7پ)Wl脳Gֲ{siUÙX&}Ȕ :|%MV*Jnܯi4_(霭p :) Ӡ"7\$-w;1F͈mnh"0⚐le//`!,l)ojs,9)ZjvͶaCuS”v! F `]p~@ 1YUԣyǔ`=v QK5gB07my2E4EXUɼS[ӁJ޴3}Ys"h㢩' |!AîE=:wAV+xÁ/ĄgR@( ,M9d*ڨcʭzhN6]7 DRcK#B] œZp t J%r3#C^z.35QT 1U6Ks荮bLKyr $`3 {aDp~=mϊ~.#@G C̈Vvfnߚq,>QJ u1I&?/eSL%#dv`{[y:yDn8,,ᗜ7]{͒A"')ѲoG UžO lvv,LA`&*"%Ji8Nθ2a"bMvJ(tdȭpRxӛ#/P=~wZEs5M y߂S٧&iZ&?Z|c!1/5=3ԃ7:,p)ji|o4,jxR2CkV90DK [@+)5\'8JųiA~k–mN,Nu69~0g7M]}ن fƴ£iߏ"q>2[ećr4!8#U\_'zJ`|I()4nB82Q,_ˣVΔzWZ7Z1^# z999u!:1w+( jɰfE]O7 ܑZ6'b=`z{Sޝ-A7܀|ZѽRj\vXk= zWĴH^H(SV`FϾTn1$bjm=/L^G3g?Ow=`9O^ZCjs~VuĘN~W}A?y *OyX&HZݬRw49"Wy>hȶ ꠚGwEz^\<רZƍaff=cKN eBRO@|@ҋ0L ,rZP´شo~-AJYV X ZeAcI]Ekh't_g(Ig0?Yh Up)hYiV=DWejpm{s۔.ӴiՈc9vBegoTL݁jH\&:z?o緾+0++3 ѥ@rwݡ5ЌNI:Z[|_԰6tΣI^@HARq;ktZ$n*ZWUWiVNRFflǂ̻gVG{T$2uo6YR>U6xYr()}^䟶-шZmm 2 0(N/$r$cS@ q^ 楑u4WnۜI%1[u~7f}-p0 fQY@ǝ٢A ׮[je t(Wl,{~KDv1}]0*A>ΑXmJ8S G* XKII h" $!b&_+( *DDDԢ.ElV㈟yxl=2 g=Nw uvyԅZ+Cr~Ko "sI/\%MbRVKRcx,¸S!Va laR ߡpw22,:AAJY[m8A^GgмUu&TNJ1;ϩF? t:DYXO _ 1(݄֦P@hRݟVdt4qB.1:^'18߆BIxu@)Ȱ4!Z:cSQϫftiY\<݂|wU*sjRO Q(dN]7= A8nGD.,H_>Ʃbo' LaBb@gN}#z5con7ծhW{*d lW23{yDk>>*tɌSQ@Z6)=BBqv @WeM\ᖺ'fIJA|uц ę0 v)@>}gt-Nry3: )pX\zqo=]`Nc&*6gIdKq;䓷. ]({cV"bŮ/~KIxۻ6][*FU|`F\01tF\f-wf=!W:vByUO#&'t&Anr?JK8$LY(=g Icc։^@}1Af?SsH.4 A~Ac0e%?CL:҇lvU)`DaY\q]mWZJꬾ[> *JӴUE$յAWo_=cܶ XkcN%C&k#j%vb X}J|\=q (O4zkr|Q09b CEGm{ hWrLmZP(MY *W<"J}D at;>\gً]y !DaR]hD XL(=G4 >zJO,2cY3'aK@M*W5+3f7qd$(z}J&Uv bU,RRr)mbBhk)D|; "v*]"j!HA2QBU@h KF9O蝇7VjQ443,̧FR?Xc`o^q_qY1d *(b3L'(6vwt dV%/WLXGE pGP\7aKBD#,(;.L6E a1wI_ DVO _1O6LA`{48PˀaIMW^sAK#>7e}H`nk䍱rfƯHt:JT`y孹z;DU>Uͬ@B( wY O-d } S5-속;vgc9cyT })K_}W/Wڍdug ;'+_2Y0|UW礹v5Kҭ3subW en#T Uד:K$ Z%d t C\v&ka5}g{,~x$.9uЌl8JttaY⯄I /ɔRPee5S^ѷ{eox̢A(9{֐n(,'DuͨȈeydEP&=wMӬ8&qx`zF+K<- ^G:Wi;>z|Crf2j <? 6@Cƴ:(I↗yA~再dٷ@DiFF?/zdKfzFxS)['O{TUFt;#k/_eG{_($DNlꈳa 96Zh7FvCJklƷݤm4Gdy]pSCh)FitX7m2'x uܼ Wi杗繿n='G0pMsAfi74>q#g.#T(۞+B_ƦvUW4$־yD=1kx8=i^D<@ZA\ A[ђaeS_p*!|V@uXՋ:AXMD ґ>$<z~o`CP*8$N/mdeg$SH:yE9Nz4ݐ@]R逅j@c+Q_خUyzװMe ͓=; v"\[gL0-?KHMG wD#5 ZP8PnNᮀRd̑re}f1JmH2 zΦ@qk>t7})AWׄ5.ZuYWսrJjQѮx׃i\uH`uUOKS,|{I(^FQ /D ދX;qs9K F,zAM6M=M?] ^%=PB>Q c̢3in났AτӆWw;srJ̈gA+uXK:]ELg9؉i2ak1Lyj-6ϋ}vp=moºZ\֕L,k]p|REN[K:˖iT'=x=qѨ3 <}=T>HL^F)L0Z &bFp;ˆXvJ?jWaJ\R HPJ78IZDN5az"ba[5 I3p(w S6 XbMа@_|PUaO:qXjh[5)Yޑ F:2i_'F֯B?j;;3a?H M'_$rLKITm-xfGY;a2 ٍ\^ހ1aTTuՎ/"k7Ȧ{@!$& G5l9-UǞbzmMVKϢHa. \˸e(s' +tI:Y ]x&]drL#J~dQKgۼϣK)]x6!^=]{EhgD5zp~(/$TܯA%) (*}xg7~%T !ebwH_Trw3}{ǔ(wՀcfb~1#!SUI@p@}s[B+A 1t;A hsȳ}kݜyb]4|)1c:-W8 R,a.̐@:t|,ML4k"2z,mrdaE8# XfhE>r,,%Y"oyKXհ@Z:PpMxP=zM,G),H\-j}g*Ypbr2ih0rj'fLO&+pѰ=ґOXCV<}nrBsŧ Nç %=fjWρ>"Kصy+t`ZͿ#1tUυq394r} }I,yܿ+Mr-s+_ rM&;h` u!z7\} 2gsۤ@l#]=nUBUQI87 ys#oxcJ'>U`U;d$B,J㝝<`}ÙZY.r6^T&‰AR5KctZ#AYt;ޞq{ˬu5>Ub!^dZc#Cۆg?m{+0h JΖA^UrT"ny"<8&bGDY Sz[>e AAh3Ǣ\@H:}`. FNj^Koq&oQȨJTb%XniL Zȥ0>^pJwjrp~ EJkH*?Vz6K&_!;0_p0!upp4 \}Ȥ{ [95}E "Y&qZz W/C&KL}MdE6jc!H* uMIc|2wg4 w鋡u鷸~ml;guRK0[N{:(W\Zŵͺ]7T^WlI3 ' 3Ua'A +0Y{6N&Y_pfPIe_ǯP!wg`Ah]+u|o]BIx`вdb3@vW5@%RJ2 \OGz^!G2CFG#Oﺼ6`$)uRWsH=d7&B[ʉ>g,"~ډ6*7aEVVU`ύ-NauSI)uDݫ:<o֟%)5-;mLP.Kޤ;Z8ʗd,I/u#xZ!k7|W_}o腅 Nrj mc9?5s/}6%+[7m/rWy8T%Q65!x/©97<( $P:3qın0UB0TpĠE .h<?1)҇la^P S# *ɏI4 F0=:s ~Z\}q)zyݍYzgj[S5W̪^ħl%}/c,DyLiK+#|b9u#PCt,<`?Z|¸.m ' 9fbMf⃪0~y e jb ;+4b6fe2aMi;# <Ѫ.Nۑ$]!J{dqA^<=Zc xBY<eJI½8 E;vMh|Ih&i(=6CXJo[p4\wkwJ-zI9г{ˋG*Du"~ k9J#!VUuYbc}z?v<*yç-\6LJ%,?04mių h?4=<+WsR-y[ y Dg@}TUQ_ڶrJr^D/\N}] _qdrD an,5`OQ:X7Ħ7hwiխG gruSNOEXo=c@:#%셯#`j6`&:tFv0OGZtظB\A.HD@G[3D.D/xbQH)I c(t0-CnMD¢IE0_Ȕ3<5ø=iz*A=ٌ3~=;"?-{?UHU(uQ ij?p\iʂ1wfm̋wDnGK̊:@Oyo'e9#L.}=/䝚³m WkVbYΏxw OE<ݑrxLf}xp \(g牾=i^nMXkQ5 -b8u? `N/LD9Xx㭒F(8Wɸ^v s/Xޙ"j U҈rf RF~Ր/mM{ʖ?Y|#!ht)fʹZϸʒϼ7?(f6#j]'7 )Y2?$%_[| (ad`Гfq/#FbG %׃mX2g5~л%xckl'H)GUdڍ L:4h.e[rd.+UG4c=KJhz=Kos4-Y=IΑ9os /e+Ί[^֍;|@{O%$ip;sqQX/;eN"Ҟj$e'޹] //Yc m;bH@|A K9(sKdKT{l~XCK3wy}")/VGC@ !e'EERըN5YIpK%uNH+}'ݳƲt>maM<(Zs4 ;}:㙫Y& u":oyaw!+p@lҬ(oOI~T" P#|}4յ QFxBm04XyhgdNm]]Z̭vtZhC7BuS b #$q٦RaL,gg3/COBDxLm-]FLqZP +;0럝Lh,WȠM~KV* *Ɗi@N'+Ò,O{՝c \VYuYH!MN7Ǟ"qH Ґ|`\3 w9w@)7L( /B`~Ϣ+C\;LDKvJ?DܛZoY5y(+疗ln2Z}rgAY6^u_Q %^l8$ΰDp|JD&)+0\4AqQ)FAΡ"5z҅Sr>~\B79$K1R Ir|ALmƿkd#"؆ e_2!?sA~p1Drmጦ0ᯐ?tȭ`֍חo@y {XEqb>c ORP1jy^xlZaA=S.xB Fئ~;:C9p!]X"n _d1.5μdWL퇝6~]&m|@ͣЂ,VHLLͦ0&IC h;g6d|)55= 'tLs.78eW;$fȸkUjvo K,j[MVA^ (4Džg#w|9XaCʫv! 2{iRkѼ5EJ4& z`B뾄Z'C vC[v^4a8ɯulMI!z|N< AR//b{KX4Erg*—nbAb߄{=0 <26w8h۬zd3! ={vjY]=}qu$^޷z]( b!kc66Gv_D%Ž&-zML2(`}ᨅ uuy.RAK3(VayeN ̘ D*0[ BL3_\_f.!strTD_ō0N~͹'rHҥãWߠj<߷b oF{.آğ޼` l*<$#HcAyWpJ챦kn0F=in S]X;7GRm<ʖ$揅KEC3-m*(OQTƨs۪ 6y pUޡd~p"RI[M?2>A"}&ǰ:4]:PրjM)$_yj[X>EH 7zҸ:}iR'@$OKZ).]υR ]*!J}7Kkh 2JtK$y ӌ>"<~i>. 6 Rg׆?ƘtQcYM5@bN껧Z j쪍}痖1t'1lqV 6bRAa l~zwiA4a9hܵH6|FWɻ6hڅ{=%r Օ]/&#c׻xfDW"|ofLT\m?$v|_R1P*bٿoNZ'ϕvy(fR+(V E R"Δ~/(r[6Q>A(Nw6f-Zϯ@u~}ji`_mNА|o(.\s[n`MҹZ73yl eyëdU.v, gNWhCd&oۂ}`7uOhY >f[K:CTSz\ +|/}_0J +S7͙T䳘q|K̟<,9X&>zn3)e\gՇ#Ќ g'V00kC?idfecu1=52oc{6(CC6WjYlurm䋉g>*OKޤۙ 0'kԒѰFGXab4s~u Q']Dwb%J>εI`.܋˜H5F_3yR"BW8C "7sH"-Ă%9mZ6`Z oی*7) -du#a{whF|} Y*rFBq­>8,5ueYC7ǫqN~;1 |˩n Ĝr !1*@0SwA<\q=]"3QI VKc >Ihdjt{O=5D| J^-|RC]Ic!"OBR$o92:2J{%@8ʏWEc).05kVǸh4J|'zu%84󺃆jtv.`BTfDOn6OQ=mSG`۵<]m>)As}V7W%VA qU_XVxq^sKPइk )&6:؆OO硞 C qpK@|ۣ14ZO|nh9P%Qc"3u<3կ ֯r_"X´* (iD.G׹Sb[auT`qaڜ//n:[z&up[ }DѥGwD[>uVMI}Gz"c2#рg$Ic \4Zhv):"Yh@ 7M >U,lm," _pw2*ɒZP :;l="+k- %ޓ(Cl"..UjyyJ?=Lù5%5-aioS6%L-dss%P xh^k)6mihd^p{{Udޚnvc8=%(l.θ 6(zו'" `dI!Z2ɞ:L\$T|+8KQh~Nҹpw} @dN!0_6&b2 =: >dAZz68<wCYqn?--mqT!{ G,~[&Z G[tKa~%2A"Yya`:~NJmaǝ,B6D) /J+>rAF nkJ ԰wY\ێlQp->8zd ٜ9d-kmoBaglϤ혎 gZse"ڤ׵|>}sĖ j/zsPq<)Lz"KI]0.r< =bCǤ"eKUOgsH{_ZO93 -Ɗ X?igd "F^y:3*͟_!zg[~ 7]Mz;iΌӕWybPP4:oQx4uъKO9t ^hؓvor^{SZAS) nJy7Ao2"iC$"guտP j[g5{t=rtH&Ew:O7 uOZ{(\ -{/ȊIzv ngoI)RS6(;O 7I{G`Ip`;X~g3mH ,\PLnƻkd~&w}GkGJ .ҌA-ԒfT$12ri=6*%jAݮ.zK)7no m' ,w@`'Difw@[;gvʼ ׇU n7X'/FvQktE肃Њʤa3:LpXJ=I4:V.Ū*V\ 0bi -uk%N z?%9A6![1@BF7"2! T/,-'jh'@ӬvsNgT  _j7<@qr7,YKDBz5hSHCe=6Ss$|-H6WUB1i]A R'-1Ϋ.yHyci-F-dKɔ3-c0`_4 ;]oVkHI?C'+eq9[I|!= GΧOSN`G̓2K٩%(&6bD+n_rI/I'2ty yg^;dKH"@ 6,y5X*Q]Ӥ]7 fP>^%q7O$glan zf{(n)^V5N06nZf~T#z;\>Eq%+N]|@>5H'\ &󬒳O-FR͸H[jFם̈́)鉿=E[2>*_Vc%;ͩĚ뷄uW+"o>4du *`ԍogwFgǛ 䫋$MRDQ߀'bj"_#pf3 jѫ(\t ᚰfA`nپ3W?5{m(>Xׄ,b^g6ђ#rG̲ͲË~]u/C(.#FҺSٍ~&t0@<hUC[# f΅8b4S) O+Mϊ"sor̼MJ /9W߿ٔBsx=Vd#+w`NQɵ*pzM$nW+u ӹF6 *>DFPC񔩮A}y)1)f48MV0l'O{d9޵#W 8ѻ R WG?L1 R9IV"i-j1҃S׈fjcܚu^wldQՖܿlWxJņ2oVљ"f' /ZN#q8IA9Gx4rc#4m s*`Z-RH YAr̬hoZ|{ _ȳ N\2͸݄kJzG' N!8Aah}*;Ƞ003'~ boSoScӹ[_cV29荼gFJ@8fd4#Pzj3_"DgxЦx-G?4:QhQSJ0=<+6x\xsP \qc;Tnyzy_&C?c/Ώϯ|ښ@.'^ Ǎp3FKH83#O72) QR"`+_RR00Yg.ˀ⻢ dL/ACDB3qŽ |r%(o#_U2FMGH)qO5]pfߦTqMOy{ Lo1|ʠ:1Q~'E-*Y|_gx|!^}i _$#Q#`hI#7vHUN1KfH 1^_B b* mV;ſMz>wBtfvZXڍR w[l(ᛢ^Y<ǂ׭k +]?~Uhi$L@Fj8{S5z={7|glK( aZaWѵjŘh-KzYś:im||ADtjPE$͡ '],6e*C4%Q}Nr9Y応 d20 '7c*v!1a&Nn.¯{֏;ysoqgÀ pc*+U0˱_1뗪 ҈_'D<(.582%‘ճYק7SkU@5&ɇw u[DKPùIAH~(c"L vi9EZm?fxR GC >RgʓWvT)'( lIJFIg<a@dd 4`nܫbHI ͭ(|,q lcfs| gmO)PZ,ș'Da^#CPDu箤ú$@8dt/bYC N>K 8Yj'!Ҕ ĩW0qcpH3~EWI3>kE/5t\$Ari"/HltNݒH-tC|^eH Sۑ}ܡ?+߬y {^4q-{ '8U؞ClˆړB5taQ? V/ۢS.SpoZO $OU h1J"WH@HZ֚͝+w;lbb:JYS#PON5[JU%mE\ y( n$P7{"iA] Nb@igL4*A#jA;ric]ݷ)eǩSg^ ,\1.)(.6} n]N4Vڼk߳w{6&L|zbTpjģ o]`Do%I]pTwe_Y%Wj3^'~q?Jӳ sXˀ 7G2y'뒥jc! ŞRODa\$˜vCKx4wzs~ Pmj 5yl/:Q:ъ:ᔭk9%Z+Biv\:].:r( dM}°N{aY|y¤ey;SHIPu6RM8Qx2+5[ VBal\.ve?镱t1Ei1U_Ck6 8ÖH-4AkO*4̀sߧz[3pq`X ݺxs3SR*;W_f>;V1D͎ 4Ϧḧ́-) &2`$w $nf;;RX-@_L$Ʈ* Qui"'1(vEGU8>,p1fú$Fcp,=#h,ƏzUr.m69 Jw WmrރuvծC 8Е1v570]&y0 i4Vo) GQRcթpFAh|G}!M 2M%=61qkkZuT726kU-+<swY+RwҴԴ!ϭ=A*xHZ* CxRraPQ r)L Z6J)[MO{g?ƋlAP٣AxP-dV5TAҎ\\¨tcﵛ њ A^Z2s6E/*sZ * IE)\y`5_lCÖYӣLbM!u2y+gjK!!&tr^ׯ\3)C 7;F' 3@?F[rˑ9DPVrylJEM;S :΍5Y9nѥJQ V~7"dj0WdwD>7Y>I 2рP7颩pn W 2+ ? Ф~%AZZjd,nsUVtth= QY28 t%n2p<J2%vXj~&m,ܾ/eK٩߫n|rw%U;fE}F  6*4zoY*$,9^:tPB`.a(Wo=XD 5i4r_ W߂1k f`U4 UmN5/X́H:6SGDA]uTBر< {zr*B/ir\7˭ r"6/<s*̙%9E|x?bwq]1?! GNw%Xq@<=" y'y+J>Qɨ[OEۊOځ2ȔYgMi Zv/UyLʡU6*6өh|N|^MW~?\:M?,Mt&_g  ^u褑^!*p7%lqXW0|>z_X԰f֪K}g:uSFjԐ?QxH+J~cUHm'ڰ\I׬g wKł7D5d۴}:'Jq#ٵ~jLCS4k߅"r>0D~[鑧~u엽DcI& c|d9Z[>(4bziJ{6G]F+}aom!*334O/d+N;H3㞙@f\Kg7atԓ6if-#yHR}h$E.%BvL-x,A.y1wl\>A|y(<+nXފf5-VtJLS|r{l H6E4޸$ꎳ^=h~MO^%vL gt&X!w3 c6ˮغ-;gh5ozֳљ☰~a#270ߞ׶kHrUx& 'I2%q?D&+u`{ڋV; MA9&z.: }Th\.!N!g#kf֙qj.bg4]p9Gm">|:rgȷHa8 ӳ霤wO|;nYn*jbp[J.qeQb\x/-kX1Rb ajJr5دb0,d(iy(VmvVjlm\зr 42g"ycE-u\/cP\cӡ[bF%*]l9qS +0ndH7P,9Šޠٍ@]Uu-5I;}ӷeeSJT1h[1~n}%gxJtAB40m:AxB|CL>ކ1u8=d/+w%Ypn@QbEB9kO3TD"B}1g P˄G"#uM /sg>TǕ0dϋ e:/\a`"D+sx/J+ \3dS>R]`h1!ʈ`7,r]fPY%3̺U8i&< rP0``@&l?|G;UQ /}9%5~]TD8;dB Bx}߈U!O4 }O{8?m⳹,jx0{a2ΰa5tg;53L3>xzw,el;B!?)k4ONrRbFݬT㉗*8+B[ʄAb`i4<( !OCͻFa\=9P2}7UJQd\AQ9sYN5~ywsGpI3x dbNI;Fʗkxv߸2LRf88k Uju=JRKim,N7sL8+JG iKZaU,Bj\iQ/Uw2DլK8KPi6#6m=y@[L]|.Tɗ߁e&SQ! 7)%V.  2]U00ly<,Uyej}=3.,I ̠bRːYƘNl檴? Ƕp3mgmaJ"Rl}|"n-l=!kij3:qvif~7rd35,K&]ߠ!Dn6:Fz$#]Fos!X3l9WVd(dޛmҠ:X?TV2G'iTߋ[$Wf3ѐaǼw+)Dͥ|狥|k#L|HE`*-±v4Ȁ8F0:Ztlتs[AE<'rZ١G>a4-nW$jiU`&.wWy/.~ ;5ݝ0!={n9r_z!nGri6{;q~hYxN!0-O[| iy~Ž26s+M  )(osz6Adw!f? }lA,"`+^whCLy<ݛK}ل])%&f@Zr!mUzgU,`FWt}yNįa(¸iuby >~ee$9n'bm[#)ݦ\[vq##IR>m5M S75 P]`$C-4f˶ W2@>ORZ1|(xҠOXv ͕eswWR[C#QRD1e<~Ֆ RRr]a%2VgeqSZgUhzkb}>{ZizX $I 'ZK2p8:4rKmD#yݯ3ۺh!{FxHxေ?B{Ŧ7ݎPwa(?^OlRꥱ8 ΃)ŠܤGټ$[mU=,ddoSގeTgZ.&(܊@5!EyY&J^ٚa,5F ,+;7x'lKLyޛ5ٱbBM~u7M-Jɜw&~MSxiSkXX"ܑ{[/LQcGhRJaj*e'{L^:(0:@RKr y{]Z-&5[z 6p)8ѓņ~aDb0ӗ0\tzp9cj)Ìn|Db~A)&-hn`K-u]ul/mvq *|Jߝ[0\ 5etDMCf5xxͧ]k ؉L`N/2@lxS@'?6J&|vo!k  Lof7FfُBK[:2ǬEDv7=:X\w Eu')JN>ܦ(%aFR'OXt_VGTqE_IHX[7l4?81!l'kRQW~32uo-vE/ ' s`[9?+RBye* 8f \íPrxw%R{;8 28\U׃} KԴA"H4XRbd&z4Uo:)WCҢR].F ;WFdF؊=YT_%ǎ| Tj1ggܤ/2_j#2]+MˠjltW!5brP s0g@vQ;g^QMC"+ϻjʳ楾_X3L 6 xQMLrw a:^׿n?Q -X΃ : !:1->=֍/dO;/OS/s:Szט=3I)DكZV~87Ͼni_i,UjzXgx".Tα|Bbe7K-H8fml,ƥ+` @!>i}F ]%NXe'}9fj?N,jM?9=xކ=qIxy˰_`pjvˢe+tVLR%߀?`Ncg\ݭX¬IPْ;Ҡ,r;rozy_Z@@(JczsD2O~"VlaFR ylǨ.KFPT?$Fi'Dgk=V%w[$)h(PKݏp/X~Apc Qe9 Q+a0i׭.y͕H9>;F4ݛb-‚[P$84.Y`rט?o $تxfujf{||0LJuvnV+SLOK)E(@+=BM$w U0t[n|ƫi8s)00\ т[8$6hV`t[2/*&`~ ZtANݣGpe'('n~5ۇ+Et!m fj \#qXi^uҳOi{=vl켎)}lcѥnNօ혏i{`?HuiKR9)xEe`ߖx,^aNpD`/Wvz!_H݃bī~4{uv8E-"A 8N#SEPO@jA[jx\i?rV6B]פ|DEzF*eDjszoQ8 ú28|kG/]Z5VqI+Q)ڈ.嚯7mV 17yKP ,X \hH5QlB @bC<K@2P07\`4h87+7bʍBV}#w+G9u )䓇{i-UYհGAWQReZ2RQr?6L\~POUwi(RP!; >xgrhgk<޸ nk8fdL%bw=N=[$ 8B2^X)eE c*?Yi~&\FIl<6{p)r)#P /x%gC[hu&=տ0 l Rb- !$9U5EY2!)(4-y iDw]rmԡXly8ȴ  Ԫ#Ժ!uϜ[ݾ#W6eG2?E\x']Ux=W/"`a*+?]洵a'}'u;=SݵiPr`ڮaZ`}ܿpɛWؠ n y.]i8&IB\H.҂A ="^~PgE6?9݊ A?,G)؜QL}==tM6Xξeظ }9[]LoPQZ./<ʾ_RЄXr;T3Z KoU_ƓeM\6Z3h٦)>3RiH 7 / >6A>mP ~HeLg{av%SAbsEHwndP'@"y#rg#5H䀼V/lO.Tu@Ȏ.XT1<&A*8ӏ]8֗q2$%*և!q6SKc"{mBoFF TXtwu<}wm=asO슬/SV{wd++S\uSz A8nq/r15{P%bO"EqA^wO! $G&$A4@Y0;ZMu WG05ArWW!܆T'z7#<7` ʱw ̙$\1E)|929SS %1>PyRg3u3Sâgt rJ?seGtRL;#!;+7/y# '1GF|}鬲гK~O).ZZvRɅDUǙxiX:UІ;7{"5j/EYׁo٢ߌsˏ=6J;$Wʾ9QbmmM:xc}ri`D=DbuUl kYq?;|9q!nC/IXsްL?o_ϥt7Loo4َw!9wyD /ciiůZڑUvn/LElbG#mcS!ͣ<$>b<g kX{UdO셦dɸ5:&}''nO۪lSUIDr1_ڋ };OE[a TsRڜq:uJl*>~3鯯8(x-J~v2;P! ډ_&`;2 H9O # %P[k?5)o&B2u!Sk:Or%uu&SJl#tѫsPvߎji'솟,`a=)I6DЕlnƈᦄu~`2=u`UQdؗVʵn*`N{>d7WצF]gZI4<ŃtGZGԳ9NLmQC]VՃK(XxEw(+znO$|T9mO OVFo)Ъ))y$;gjW4Ɣ5Hi;\=~";ª5|W/KU!ڦ7~# ]Ǖ"Jtn͏DǬ4w)sC6Aur|R1 ,TX~a;,KTTd,X*c%_]jQ:+İ%5JBx^%M90]"(-{+6+-VQO(:%z3=yX.DI70kN`XKRD>}HL "RT"0mu8AHXPj!E 90N kHd@`Ye5ߑkuf$0:EwSŽz6Aȿ˿]SӟSX&u^@>4qdד OhM,SvչV1nϸD 6S]9U>u &/|<4!ʶ~vK/'PJB7rzfb`!,ִ)>#=:KhmX٨._r;]/(KMtBh˱mY6''ʆ @eOn  qQ5MrzI:!<\>߬=F"F*zǺaUjڒqgŊaVJ;;x:8Ǿ9#(Iɬ8.ܵH4496EϏ;ry:2N@'5$笭qiހQX۬r`3T$U9ΜpT;c(t{SYADȝ`w/ރj^߼Go$(DjBwQXat<͋ #B[$p)ZE̺\I`#0O03R d/Itvv)ּ@/ Ah;7vp?~QwmȾ D1mWfkc#F&h=pR9iV߻/ k8wP⌰ h(?ed+چ^*U2pF]%?M @uE]3@aM, xo~",; 8[H ޓVb@`mm8mgG5u>h\ɿ0]afϣuU_\d&[8XJ׋m=@qyWyFJPn{7OŋD }O6ST$ױkՊ̝,bfDiI]9xInŋf93 XV ^#쥀 HS sܦ"0m8ýZ]u\D!arC%8u<ȩCv[g;#q,ń.Oq THn|^IO 8/&|״GtxpEF 09(.V̡cYX77مhò( MdvM[K7pCiָBqQNV,C< G{W`4L8@V a{A܀p최YamJn,aѺ.u(9/{T]^۞uORR!!YBO?%Hk.t֩ZYT Ƽbs'nk2(\1BњSF˗l:ỬXY@W">F);hj")!qMe@^o'y:;gPz^Ia9V#D?Z{|/Ot@x/TƿެS/Ub{(: F#4a&>?`EKoj{8RKX<ה,bQ ȟt礎`m @/Oc$|UNFH-dKPZƬ@ԛ9Bt~ZcBD.0=X;c;uMEQ wf~Q%me0"wd^HVN 9\5U(>օ5N.*VOՐfps%gH$(^N0RWmAW''S*hHn2j%zSC@R[O6Q~VF"0|m ,;u}>i所M%8S=xze9F G'M+ޤ2v RŐ>N2TiI&>Z6ؠ[|b@:GUtAL@ dsJ.A٤1A@v1A~lh!*jp6 N2m+ CCAlE=`1 ]*uyBv6#4VC% pbB\e:Crj{Eg!b7rxE 0*5Z[zJ%;֏~P`A3 t"m U6]` ei(tՂQψ86gõۮϼFE`yht!t68kħhpl w2*}V:]`PbpMXj4mJuI#-F+ E93B:|ۑQ[/p}ϘnLӛ_˘[!fhǟ;Zb^5v9o"߃(e|K 4s;_Poq oU*ޙ^u=5B1spLFOw0h:t]媘MH*X7e`& XcC)__!oz( [AKgσ/"HE̬׬/Eh% LaZ&r 026pBekoZMbљ? q+8*?hmKPipEGb7{+Dn.Ba {<4p8eDmduPc90! ҥ̕=#$7ĆQS׎pu$ O$Or/ْ^& u V( 01nR{< M 1Ÿ"cRR[qBTTӱ(l S;,5VTdyv˚5)9i8Fg`XN tI2W! ʷ,+ k2(G\!xVNhmRb' ;-3W .T`=Bs hr4 S(VUGK(9<*Yu<jGYFF^8//TGtyTh`LhέDf3-<,2bi6#AأРym@is:ML 2yu̯À&],2R1+DRnFkm(~H Fkt܄|K$f/4Wmk#\:`2Akc1V_7;Qq[x>KR|'$⽪ۈʫSGSs3V>]R!7ZGxjS}PY8 -Uh]4 D]S>8T9t t -̸"pP,r dF"K!b[ً[KxCkHF*GQT%bO sE up?F-ägs[VUnAKt i&H=3e~_WQV *0/ILē:a ]kK9^5(C.y$Ei{4&+dݗH5c_3I|A=Ln_Ʋ[U8QK]a'ֲR6iFYW %񳡄w`qVrSXVia=S`N>AR=A3 _<)7ͽZdu%IJEsd4;Uw4!Usp$j?̼``[q1`-sTF wzrFuV{]/PnzWZ`f*ķ"S|I(tf5'a A ի$^e^@m(p#ߏoG /;4t)LV??)t&;^{x,E1k.g\$ChXLWZ40'^"$ v_w?|4? _3ɛ~fԗAT<#+bֈ'hcԈ=*5ZoQ},IX~N[?ji׈jCi)/`Jkܯj澟&#I:CZ〪a=tmSNPiy[l_-d`fPG)~[;u2ĢY{~j;?爚9meOc;(& ׸vrU)I#^CGl}0nt!@4BW=wT4kP@4reMCh-ɞ9KO蟅߉xvsk8ir2{F^i`o䇣5.mzVCWtSJ TwoN4~aѸII&u]]_#Ӳ៞Z Oz41I=r\SUTR" ^Տ3)ŊiI7)\lza4T8 pŜA(ی.<$j* TtpNswTϳ3$p9_l}Q=iXk'rs:vD@i" ?Klg-4D9|A4M\-J;r;6{NQnߜN[k"xhQHKFc:f䓌PKڟX̗ϡϬLYUCamPSMM%Bja2_!_7R4b-kQc%"컲wY`'cNwَz`0z],9ݿNݿp _M7pBX ߤv'm0)k+^( 0Rm  _dȂ>S6m7@d(D¸Bh'@oʀ&tG+_Œ/4n~9FLno ?QIX0y޼0 g(Ҽf 6!ł1I'+Og8WyS}r4Mc`^IIUdO|h $n#Ikp50 $e懱qXqte/H]=ӆ݅V"c_\_b2&H<& rVlY϶ ~f~oef?\Di%U >UX: />?BZt 9@7$u&C:`n18 SRih%ȉ)"82A`AYy OoUT ' 17(ap/6B f.#^%O6z=HؾnbiU8MݮmePB Q=U>r6Ј=aB_կDGxM|Wut,}U 3PTǹր/|@(qvFߧdA \P 'lcva`NEO%b{ȮOh (WAAXW=WdÊb-.]VpnYUm+5BRߝXO Wa~*U?U{nϸ>|kg=%;1m9a `*Y,#XRz_Gp,SN$̓PwLz#hi΁J:"85}X>!|P7ʵਁLtYՎg&~=%Tjz[wy5^k"Hwv_؇qv}0sk0B{ysBU`O*`~6hm+e)=i> IIX<Yh*{Cz0ik0.tע-P(gԁD(]ns‡vm KU2)vx1qw*5#ѺG ^f.\ iE;~>)8у$2 VsTᒇ<m,tf0yyTyke2#lg,tV2l2 5e<. dFzmV%-arVoDs~h."WZ'o[ruZg EÑRu5>ˁs;a0Xڶܯ=qS!PqPv-[:1+u,A!L2*mB%Xk+ߩޟ?oGɱv&̷a)3fb`iޱO&`eԬ:N*=F _*\+1._/YE}yp"xZnZ(0n'ܕT9.P n;VOW5n_îY~}Ah;kؕOaf1i3(}1 ;RgۧsalWF+emQP4%/Qx,-@GjW";.軳`匽‡!v+NJx`ȩa.Pq=KfCID^:Z(@􈖫V Gc0<.?y;6 qwF<'Hc4&$,l_xeM-HF7vPA"Ynr\v٘ȗX o1\""<(R1-Ĝ#}f)g+! :&=vj-z2%%J SH֚\H6"P|Byp8 VYخd&7}i͇b kluszi÷nDV1['4H{KُϘѶqҟv v2€| H[_Pu!Ҙ.+(gA=lv⎴2+'Yo06+׼Q[NۢS PXĘO闧1L.\{s ³*mwg}uɯoR^|@4hv.hIxgrXXtKdRֈZهb\x{hu1BDٹ5?>)fb֫ nvƥ3:M% )Ҟͭ av/N4P~$N¡K=[NP-H1_ky}j!\N}5QYyقp8LbQD<.iZt($ ivDpV0@4ټ-Z|Zf?g6=O>DWEq #;Y,+r:RK ܵ]3GS]i#=*%lJ[I~odUF+<Łs8i]]`Páe,/*2mrZXo똰nw[sݐ(|&UFg|Ҏb9dqX]ol==$G@&my-E?t`@iыX"G#䙺 %'RcmڑvՎ=!`B͵^o/1{-\ M!37: nw*TU(}C꺘ٛ2E\+%_ld6hV- 3`</n'wlw4ħLo + IkX F@A]Q5Ko5DG/y7>dIܷ^+EoGڈ ӿo9eI6E7 dG} f;"Qrsɰ~**)3{%\QcR.zYob,hPBcUüDZ8x|n%6HWkeЎEIXL@xDh3r߂VL.ٹ"!:cV @trRIOg>"P$Ԋ_wciTPe,iY;b|~7&DHsJgAR6_M%cJ#uY JGéUu~[=];YTd4 HGVE؂_ tk柢qNJÚH&ͱBem-Gc2;ҽ E,mW]uVܯTG]nd*h-ZbğLv4o‘!?t:ym.ves?_{O.c j^?'SW詘';**;W WglNV5K:喒AFg d Ùh̕ϏSYy`Rgt"VTpW4S83/G{#B$:)ogjO\6ĴQO:_+GlnF#:-?O3@5m7 Fi`⻡wY]q-'(yyIr&u.z\Z`'M2UմD B gs(Yi{~V:% Vq0ţ.h'#x6Zrn,j͈~]%vɦ*zn[ǰKo]'t*kGz[g)?#Hh'VD%HVփX?fcTHcG9 LO;SO&W93e.Ox#xjn0$sK<Q5;Gxp`-$:`Q40bDg ~l<daT?lQE%U8* vcS[dpE>od#U4b%)0eC>k T%CQ[5)X2ӄVxu4pRB&ijTr÷T\Dw95nDuڇb =gPzR{gBq׃Q2+`C@g#Lu(j툔Zk'M)_T pTTizP9!,叱h;CI Ǖ- 6/ŝk!SiH-Laf:]ɒdzX#Zʷ)& Un@|O+[%?|S- (R&00ueQ`q*$`eSvN[Ewx-4vj,'F=ydރv嫣z$S:xkl -YZy+'D%usE<3Qɨ rv1`FȎbqҧ mW.yȈfBx2 5V@)ƇH(x@9ӃEB?@St)E v6KEg‹?{2odjl0EZs״U;lϊ<۰̔Ԓ`ŗA+i;ErԭnT_*^2U2@"r=T,F^AQƭn+ߙV!A!shl >sh#d-JЭ7 ea1:C64:!S$''H(^KEV4 ḱDxpM+~쒚㴢zKk7b?崢rMBw ,,s?ojg[qX zbsiY H+xk$`OY$eOS398M)]-8XiL)pG5\z"<;v #w'i!E6*q4^Ir"#( + h a_ Zƀ)-э\)͆'CSyAmAبh̪-*pM:N~S {6έ)sqiTS^Jv H(]_ī^mrke^F~EAOԂKܽ:F!̭6yAWgɲN>kLI@uozSl5 -gaO9BЎDob3WTH|=$<#QB|+ Aܛ5($O b(%gb >DRX,S4-H^;&Fc\IYl+}p癛>U4Dž3T؀%쬪%m,CEߘ[$(rq+ږOh;O5|Q `*&B(¯Cv!\[ e9`xj3'3xD>JI3\_橤HF7!$@OBׅJڏdT{ؖ(ht?6> i]8 =?䍨1i؆ʐXfR^s[5)CW2˰.Q]픵a3doǶh2 zW=ꯌvw#G/mmf7Cl=m)f!0m*La[|NÈ32Aje!kY/5My ԁZb՜ӟ4L4 4^.=x9Yźh u("JЦ֗}ҾzL3'NL/[bQqMҋ63Y~?,y흓wiN{=PG1/xlH;|# U3"5<>8+t`=|7JcI%; pbQ(Fʞ"(H 3ql%bU;fI=CKFd}w$Kⷮ۸ 0̛d6Y94k>b[lhHicW|_fn*'Н?neηI0|vS, @+= l G|4 =QPj p|%'xU6^0>&L.ixx[_e$ROdXޅX޷;Xx zM YmxO,e?nǦ?W9|sh̬֕CC KRp|7uCmݒ=FM>$!|EfW=y/nbsHpmAYtIUZ!.lŇgkZ;HKC7(˓ _%I_eW»芨| :xwo]䨢'GŅJx RC.q}mF2;լlUq̘j_%K8Q8' sc4BT ?/RU|O5fIAŒsƥ]dyN3BǺKaasl L-"vIlxl0$ a8>jନ:%JG$W3oRf<|m^'#I@aTP`]n \xRS };FdC9S3D#TLH!.g+[57'w{+>zig vFɕG r#9`^>no?p߬ 1C=%N}9!Xё]6 {D~;` Q8ǼmPq}Mvy0c3\BI㑾gikrsԮ: 񟱡aZJZ:[BPxi3BaW(Ah9JhT2t 8q1i%2]Y 9OZk!tDODnPP*X~+)h=M\K:20*@; |SrlƟ꾺eLYSCC=Vs.}gs䎸1fԠY d=}eey&ϖ` P0YjG02I6{0s vh'$|vO+Vs.uYSKs:f&ݫDp#QimQC:[H(ض<)8b[ r,aTȈ9Ok*b8)JYg@Z`xY;֍uPU4vk <.j94C 9a 1^K4;wjH#*dn]yMT|Ol O*`w#>o0Dyu''ԇs7OSh TΠ9/Q.)[d($Sn0x$qFr<z0PE&I\t _XBp"#w۠AZJctKpWx:,@})y ! F_X2Q1?]Ǭ Ϟ v|qbZFcf{60$vr*-<+duv\bV2xŠӿ׏9Rx Hj3BHߪ1NqC&- M.k'ҴgꞚ1Ӂ $oċ=ŰW-!y5k.[HtM*4ƈ[&Q/-KN4HҺ:|o e ( 1f-6^`U)ns"q[ ʪbn<6W\(2~.ZѸ01Φ?`Sxﶷ0ՎvˆĺVz2l<&RlT|j7)ѯ/_&ݤ; ֤HTbZ.SCa\?X!dڊ2ss~R". XŦ 3ė&~)藙%Ha뗯uh,ŷ &q+0H㝹W1y uJ oƠ`@tMEDor"~4 k\j%k .Xum?TQZ.zad[okWk{Heō2` ES.ɈlGa2!(:b= }O O*QU3(Ss=NBO>ft\`{Ewk78G8^7,Qð^@`(E'1*sηWg ^/H/ .`Wr3_d)ł9.oO }Dr_`!t}[Im-^E;!ؒw#⠃7$ݒ-zҟq];#΂(O#>3bm"ې%q,klE3s-^gU &qt ~AJڐ3k d,֙/.r9iNq^^ͳCcmT Uw3wF34\>޹/)|CR}?[*#?no !Jp|'TG ֿ~g+f)lHZjWkAO3v]W} PxTaEQHt7uk#6b_1-Az'8۴ {FN >φf31&ury_!FwI\Xx?뛀678R #oEiBŋBA96\۽{K?p$&Ӯ *UUzptmBr#Ie\h@[}.(뢥7Cv&݅QzEHtQrdg9MmU؉YՊmJ]3=LGu8^JkT@j׬BJ}h-1Zs3<@;=6rB}L.JsșlZؽ1`>)!6}d>aAU^ zZDgٴE 9+Ӂ0Dxzg}CM}2QBCzDq1}Tp o'f?p c/feHn*5;0 #[@5K IDp @ [-ʂpҝ*WS Qj`2S'Nҙ/i\Hiı?`?1I`bT՞I nAfqkV,){^9K^ePԁ=rA:C -t* AԅVԍc#ʚwm AdnT:d1_i>hr+}^ xEP6r5'.e[~t3WG{X"џV40%YbbϜ"eu*CxR nҘ_?<3Eay0]ႶH@?xMք uC;FH GMD@5S83 ;" 0X) ld!KƐFw$CM bF%}YZw{ mX׵(YPBe<;,"x~u;qN*n8o`Mp}iޮ5Қꇬqck p&"*Ȃ1[_EZ.d[1] p(ѭN󥎋H22(gñxG~<'ސhC47gU,)M@pOR>0PHwP')7YH. tTssS䎒!w5fvANQtr8K;u 5`/Rdr-bCD"q?]oi7GdvZ87Mym#j-Mq6hYL'B(ǎGd}gw}C%U0 ϝe3Ve@SYYr&`i] m<}i$=Ϸ~L](9ZWDZn|*WzP& =Ud%_}~}8__BW=}_F%X%7<na=bK=׻%>_7/`%cv= o7fչOVtC6=f}zI`(ٛpF$kL 2WMu#gXSH`+(+\s? 'TtqTv/*d_ϬB/,}D bp8~`m#j0Ƈ ?Džk10uPrɱYw*ϚSS~VV%t7f!& _o9jmRCxdw5HER~_vUF9Thȵc HӛW(H-R|I1}jGr\YEG=T> !LGe"mƃ `u7(u (ʭ3>d-غPrH#3%"_CtjQ/N[>h5fHV5ZYXXe]h0QM5 [k/\>j UQ{~9C^J?]0nB?*X&q^8!I i jt zu) 7$6`O~1Ad~5Yab";#+jVirխ2mnvie c#U6t#EKDϏILe{nu.)W<Z&Z(ou'+m)Sy^[ϝgGc(RnŮ^pI)} K3gœo͗# 7HW"[3 3Y^weؕh3zb;xǎ~ P!)=tJk SHuIhVOua[UßG 4J8;$}]]=CǗ۞໪cC;!YGUK Eֆ= n2( W+ Cẍ`Hq4xJdw9 AuXku*1@\m07^XȀ+IPEpԋ7aUwN!H(n? F|ٌ-p6ɏu*܈\ՓWWhxՃ|;B<#h%%G.LfZaM 2|ZJrcXaِ,7OQs 316FGpge5^9rWQҤs7XԧF&w'3 EEOe-`(D "Z^=:XǾWۤ2KJ6?8H7:\ ĞNC!uM?C&K`*j.k6q*j2֨hz8QMAY6ډΈkJc@=R֚f)v9wNߊNUE%hb4<la4\qcAJ^ eT+2gVop/X#i 8Oa 0WiM-"t:6R=VaəʩMK2 >!+$B0*Mw pJ(<6{X¦Oq(WS8Ɩujpշ]xy,` ʩ/Ƙ]ؑ1+^r-r: 6ΟQ呪0z: 9W#L͗?9PLբRׯA巓R@7تzl'@MXO,7 XJi-rH?| n"nNm 5*$.mZϟvB@@;ĠF ɉ*2{z➱FLu{uդjt͔N"p& ttd._OcdHJvP2⭍괩n#KTb%A*BV#zͪۑjԾa;)/CeuM?!zGrU6M,xU3KWt]~ޘ>AӬ6F"O+\sדL*$jm^HztXIƧ?@dsrC$MWhSr XoI-Qku' Qۼ'FEDFHߠ$RL5vLS$>W\y/ mX%];5aFo N:W0'i7%)bP^Ӥu*.ߎ|#dqKe[<>Snd_C 2Sp-tݩؓɶ1} y ȉzB]/iZ3bO=TUQW1t|V$ͯPJ/A HgNyAQB'Lעܵ (7{$Y"~l)WD]c({жm%b7Tr"a1ӫcbT{ δhCu5`;0=*+sǍͱҳd ߀N3|1XPP1Ew *1"`_4UQ}h#/DBot'b"xWUg7}KȜҐ@2jx*[jVm-ZKjۂ gSҺ %wDhѻpbUwkH{POMC~ʝ1u =ϫ[1ms. -bHXu!5ee'TQ#NJ$ِ +œ2Yd:=IYv4%vp;E!l-焙(:$O-n F\UN@ hZ@v(pq$olc#TYy7D)`dk\=SV dZȻWD1& 记4ls@B:''˕?(׫P=.CKTn9",ƨi#M-X,[W4}-Bi Pԅ}vkЮT5imo+p,W*ýyT%CTG?d#]wς.wPx{Ȃpf-! U_ 5 z_*~fXB.mGF?.x?${÷_e _'CY$e~ҜWhN{0[sΔdͤ~Ȝ%koӺd[ﵐoqZ'jbjpNٴ7XJ2Ep#hs9^K;g+>cQ[@xg ֚\g5Azx&#J7(UB%"@%[۴&(_;-(ˡÜZ=6l o<'*_o ts7 w 8wL>/;y& \k46*qE7e/9o m|!nSncǿ= _2^xCm{DSmsZ,z a*im]9Aқǵi1l WsUlLrԏqYT Z#_fa}_SLoNSK ~uʟR ܐP3b\ؼLgL6Kr" 0>!;tH!C8pqy g yF^%w]v@T9ů 槴m̐?WОSCxe P$`HѲ{n;@!"eJ[\gu=o+8 Yd C;.$47ѯ[FX0ݓP4W %eSUI@`a`LT~8Li QnLԋ5}!"x,o (7)KwЭ0 )KYF4(}*@fG\H8+D[4އU -c%V|D&ԛ_9~ éU<)F~Q (TK ,KhU0Zeclr+'_R\xёgnL=ϡ~cX"r7WHKĭyn4Юt~ٲP-[F%q+@l]~SR:D}hRy+hΰ9cn>;c쐟!ά w11fPF萗R*fVWZ9i/qV~(!WB!nsمtQ 42[K.oPX3?cM8SokE0xf@I׷[*db=B/s C?ޅ9ۚaܿ" 3"[!!"9B>C ˥ǘ'%})>3i,ICeEXqcOKlUC ~V:c} ?X"FT)f5e4~Dز?Q䑱0 'cWvNW͆7a~d&O{P{4Կ$BT,nҲ(fv5;M?&IoeUcǯȲꡀ!9i]~ hO54+6px`І/ #N'B !B&v!8DKf;C"7wkS +tb;mC*oa)TrӬ!<0^溜%~?&j.;_\[[^;[ M\~MiJd)>jY.0כ{kH0sO'eJԝ̶ N̺X3ixIX"_]9ZdOj;P dȠ2"}Ҙ07\6X+b N$׏nqb{| D%TI$gvٝݮs*+j'R+xfO,秞]?[EfY>_L+q1;XVVfn%M١q$y6^>$R0 W 7bJF Jjgj1J'nb{o. Y$_)sv "ٛ@O#Sap9T LǯoT~ iҜHΉ򶳱Z,.Xa";^SE|Qɠ M 籧Jӡʾ_k4?vdCwFb=WZM>8j6gYqMn'Jv RQ&yeyxp;Gv2o v=#h{ 9[P݅>cxF+#'EGz-3lTg|*A"դ>'[V'rt&RyX3VI՞4Wm Jvߧ-`34BRpF{B18"M_GIDQ梤Ր>8rG\DoD ^ߣ$2K0R̯E 㜝tq`x_¤ Y4[efVs$ : c1zr; jAtiSHY5PKY:&DKw(3 A  d|ˠlWs)t5釃-jth[Dxڏ'$IW3K`P<UU9)zKk5o/")hYz#'n,O5Ay0b+ >fz4jNf(0^hSk/ʽ>M7H8X9Q(PLV1^hP-s\ݓAmy$#stl`FyhF7CzkI'B7Gxex-i˿V38$Z:Ζ*u4ntV:SƩ00G1wܻm%}sk}Mz ҕ&W Tl3 -ғuNH6Yй,MlbCQ w<z 󒉁A3D޿8m[Ah,)D߸U':@dتI~̦2\\ :$i?x3#SFPxtx#(e3xPgrYaBEOm'Tk!-0M+`u-Ӝ+U<%?@?LԬq@tM=ve"`AV gلƤ?\&`XZ';Mb!2qK4r*Nc9 Z촖lٿ`Pku?&RdxRtO0n~*uʤض.0|p,7XOȠ `*x}eU%㡸_tz*|/b Ky>enRH߯QMJitpaH%KͥAzsgeSHo`5zQW,(",u^jp $IbX{' p^t1-؄'21nOz'}pbV'JJ~=hb~h!+;:Bdi.I M+Փ)Y٦ ~`Xq"eEOA鿖7m "Ulf*WzwSVC5r!{JyTph N[~i2pVm餤1R+I/ԫz+IYޔa-[wh-X^_vT)KuIT|}{&' fh$vJ&^z\cXPR$Q x1='wBStLY ǼzjBF9Pu8R5e ߍJjuT"[έ0Y0%5x ԂfX.gWb-UXm:z$.G_iƱZwBŝ@ ) RF3ۨ;d@.M/dz.mhŦE -+A;L)X*[ݐ872Z3W^JЩ䆎0rmʱDbGivڮq -lBR"BPQ.G/3(nlyTiUtHzٱ n" lnh+*#9\R+k7'gí-BppO1yanm^ V`!W i4[fF]v\(ٕzXJՃ0 OBK֦w>o0q= zyDwQnNtHE Ղ&ja_ M Rctߦg:@8[0yq15@yq_Q,^`*&UA<:pSh}rgSyl .ꥰSTmS7D@,)ȷ[wad}SǯW3 -IgZ4 EX}K"RbI{-DDKjcI?qu>q/Z茂d_ /% vqEeWkZ 6&%wӉGC'3 %ͤo`~,`#R(>zVC0j}`h)(-nAWFܠ.囑凨g_T# Z$Êy;733.Jv5_SԨFE(>ϲ2'Ov&A}?ZXx"ASM!0d ̲NfYIFN5awqEsș/jh]`!'#r$ܷB~(A盰jF52%QEAK)6TE emzx.QW;Q T% pϜ4{:EZoZ'x/8!̌ǹJw1#6WG)BT`ŐB݌nSbaYxk.[/FCQZ<3ݮ7*A  ~m<&@V·J" *4eX"2OH}rㅩoI_硩Ģ1m?Lix&@ )YR5\\x: F^Gv ?/@O@i5G*|f_Sf3Z0WH l ,溝Cڪ#NX)ſy;v/r(Tⶹg!/w xR+%N#bÑLVua:r{80JNv@BOZ fu*#_\O%{! |Tt8SSpy.3fԾd'ړy(t(}ܤrW+a kP͘Q:wCY)Me16押O}Mm+D5?A;ŻƸJUOb'͡ u ,QqH& 2R'ȯp %~_NYК QyUFz5gQ#OnYLծC]JQaUɼFa*?Mϟ[lrD FQևKa׊,k=WQ1Ўk6 $ ŽU|q|Nu}^/&O3r{8c4RB0V' Il'|#ׄYg6@ +ȫV=\ַlBSl br]778/r0!M$iQRPc(u13ϱ(553B!pΒM#. d\*+ 0p79["،H)l_Xv{ V3*yam.(/S{Q`+p3$@QiG o+A͚1T6AT*9wp<2BIŰcJ>V,>;p5m ī- TU4lx7vjcj*h%^2]㬾fk;Hgdd~{OKU{-Wqa`K+GX Eip 1Ie3qa 2 a}Ҕ9ŧUo9%wRquJTd[X5w KB bw y *Į)PLmmz*7J2MtѬ,.;za$^b$mKrXc?zyGkƬ!vª*W#*?FyX7NVcsJ;W+/UKmhw-]dEjL ^B]ϕziUѐUSr #ic'ӥ؀GbQ hCbE(ׯw_ۅEO>؏4k#/ɦ FkˣC*U7׷5(q0$G:'&"/ܔˁ~t8} DyVIm wHDP5!1q`\#̱jWqFZ{<F#)qv0f-͒T+p[f잔KaKɛkm)8A >l荥rpA8 8WgIn1Q LN?#ak1@&YI -NEp`k$W"s7Q(S?~.Z wB׈![}=+-?+ E kNf1+ ei6{iK)P\9]xuۦ4B^. "v Z 1DsO5Wk?N+T6Τh2c?OL #^iPn#`PpT>(m0fL#rfwi0K/1,Nbgg8F /JۮòTxJֻI͆6[h¥ѯ/ \ռ)h?$ұT."=.U;%&k7$S^D4Zg-jU$ґ(l >rӾGB5)&qMe87j]wę.x32@;6N~ hР0}^{'?L0XC ;  xf_;Y`7x+T8Y:)kO?4gb+`]Ľh1OI9lM,-Qmfd|UK|T˲<DPnUK x\H% v}Mo{ܢ_\=/pY|1ud8+ŝy?;֧0F@euW1`!a2r ·g-g/%9Fvg*+huU2l[kYYU/Pӫ#Bm GK7! %_kpkU-)wRibGב{RƚX90XiKW?cEܭ6g51^H^Lvzɖ?2zo (uKFeO%%[ZZ,NL%neqeA0 -a+ԜАa6#tF0еS\b@jJbQXdՁ}9.nVS Y]~d#ͭ91_K`r&尋(r  ׫T(r_`1k F)~Ь4͞.Mr55H4o"˫%< oY``^N87$]di5hH}M1"q63gv@ }`yYOU+ZXeryd)5hnnו| M"usQ|T7>fNlר:)h]*w$+G$#$q# 9iXi}ۂHp.yN.75u5>:OD"ee!t[vE4ehtxn|<9Ntah^l&)Be)γ{b|k&y_]^SM6PvT"Q#t: bV^f)ޫ b-LnFʯmS 0M.cThxK 0D+J17Y]"mpay*{sM}ڃ\mnŢ5#Jb>= $,{F^]=JIl҆uJ?a_ .I9,d59ydxh#*ItVHk\;.( (9|80WVkL>iK|s9 #t(:b֪ $£ @tE6[Ӏi\YDQ"s Fhytk 4Gouh@0w#R)4/oOOʲfsU :n 5(zvbzɝf3o*(88CTz߉Î9- 6?\3XA Ndϵ6s v2#'z RS\ #}[PJMoOS,GpF ]cC1ռ[rEKɠkAnU(+2_ `1S'勹96|'']hhreTV"OR:#,dƔ16 :arrc|N|1N&0+s_Һ? :rC9'-n#DH Q"ui}VŻa(7-NC&) 9;d ܟ>aZɡSq cAH}}꜈"W Z:g(Y‡00ެv uHv%Qu21qT ].v- /QUw[x)HmAs3YQ_9IzO)K-5HaA_\t\Eֱ{!9eI/ae TU^OZVn'^&A1pL7h[cPrsGtTK퀘R*[^ˆ8 `G{vE+ hY Zt}c!งpTuH%OΆ-$0ri͝j 5-a^?GoDoJ x8`a13Yz_<7'X T h&0*BT]ʄg%`"3F9} bqΈY4}r.m=lHѵo$ګ}MCw2y`N,@wv)9-C#GȣWnĆu7$㦸P˙SՂpa1b-Aie[W:dW|5\F0Q4؊+d~*zBӑge>Kr!.>jĥWjI!3%pt dssaeyta<:.,'Y@# fآ7xûLeR2'؇97hSj7`seޢ҈A酽ư6p۬Hk곱m#Y3x@Jz9#UK? X>ǦOҭ|J6b.`!iũ ` }ҹ %"|HKl6 y7WT!S&3P?0N)㵖$Ӈt|/ ߨ-zyg=Q TrLNFeN` c'$i8AW+3@G!&_$%z{=?r[:ˁ)TWF7clCO+i VHFw7/%x_}J/,$!)s/s͢RCG}M.P*|J`bӨyW^?! 6b]BL})=[$L@xWZ':4ʋB f4uiEH 33=Hx%\wxUnm":=o>*f paa)j֖̎0d-tN.r-YIXrqh'tp$D{ͿA1`m>rJNM{'%0qjpY%HgkPsC.+61ӟ>N3ѯgW>x9MG TnzrSW%|j {yhAJd+g1:~ZcI.5@!]J߲uՎW9-O(ܷ^DidBF(_o91xejx^)cp,K=K_7LȱD;ss]$䡟׷@dg^j-=g}HhVy%(4*S..QwaLbF+9YR\ۖc uiaGJ&bX[B)a2 7A+ D'1EP ߅/Y\u&SvG !Di@c&U19,/ 2רC I {@P0SbN[쭟 >T/wkժpF8҉ j6vۃHb|Y/9iS1!&-nީF:49*tmׯEu *, u.n1885_)%M1?oל%/:j9 ,Gŏ}}lf1M4w%3>HN91(ltw^M{Ru\ kS6rI2HG$*8A 綡8 g<:KO-(!9/zaB[w`X"2ݼ#TUO0 MZm^]Xhʥ% 6J3_xVr*&|U' '?|Ciy.]ʑu0svkʐwK {l{T4"`G eZ.A=ri `Ǖ{7H бȘv׸0\(I0$yz@=IJt}N9 N4^7D[Cì `ptNkv6ۡB P; )&tbdN\AxYz0geb#!ռ0䝗=X[K,ƷMHa`5)dbUy'[]o0&?7Ûar=.^rWm WUl ŰK/J8&*[> DŽeͿdr"q`yQ &Tg?; D*c@*^=i)"j<ٙu_XYFTv2)(_ZIOBʺ.gp˟GgeUް9α. nrz߁U҉`rMZ, ]#&D]O$Sf"|BiInaHhzӅfLRp6_vLu;!\*v[N8kNe|/ȶCcXe׋#_ۍmՂ-Yr{q1PP' u}nLu@Տj w\Kz> Sh.nT);DyѰg& BdS^AH"Q+"o ùu'[Vۜ[})f}`N=x| t!,f&B}J֩0KvLpԊwa^z-硛׿^\֫Ȗjw<tMrvCwy'{$f*&tPrK{?&^;I#x$d HPjv.]3]؛l-a#OYxq0'p!NfcF˗@\{ Tng4F) [Cآ-8j ^ѭwd]h0_hJ=1r L30[~^GLHD~/6#O(i%bos^8Aa~)*옂tx!*3 lmEB; -tɴi'aIPeC<Ĉ=ḢYA`I`Nn^@lc ^@_Fv5G>g^17g=O&5ʐ:"%MPiTk=LlkZ- &_ 1VM0q~Krd nBdO{ Z;wZ~{%{ iaTh,=̨$O<]L/4ap"ChNa62&Yk~HrbB~7OHd7Ƌ9SWs|8Vl02wcKo60ùWq9#- @M\ ]$W#)J(S'{rIt<8A!LM@Hq\ m#ǣ]SFN f>V{{'꛷V=(8j n^ҧ47]K31.qv,n&I= E*!GStw9\ u Ӗ8 w( ęy]jv|)1WX/g->:偓 `2ydn> O/E>\h ᘂ.kdQ[=I?t!9!=o9A5ÏgBI6k(F>]0jdbN?h!swhc@{#X@u^$rzb2iE#ٖ tdy*KD b/6nOZfz{`viC o@=M#bz}]F}VľRSY_^??# B2OD:q_UӔ! yj;TИLn}dF8ȲMKdvv,'v?jt\EϺz&2ԐɅߔo/UJ@Y44.,Lyĩxي#x?0=J fSHeA}ŝYS5ݩc>H>x^9|Th ]8fv6n,<7\_VMկO<8†ØϓsaК/o >b/ݓ].G;cWҲx3ZjwQx+Hs(YȬ7΅ UH}~AzBs6}iu_ /ul"s=ոH;Z>뽯#]z>Lpsv,jMN~t\zw,_2G^:Aw"h.O9ztP&ڗ@w[k')/@ p 0LLoS l%b|N0cF}_ +NK?i2(yU󜲻NZe_ A5I#4Ulk`<9W'Ԥhskfxf/E m ju<(Tt>S E|4Q>+4_BUNƦrl/CFQx_dp&LfᣔE[77ׂ_[sVu) YUvd4{J^엾.rk` $.&_1J})c+ #b|5fK`g\sl(@d}!h,5DZ2M 4p/A݃ ұ /jF1~ s9UteE:M'G18j-Dc7|Z?U;O_)$KJͭT OnD?$J:ߐY^ Gvqf 'SB^8XÎ yS;{ 0"ব!u26 .c󞙡2V@TV,l<y_si `A/ Ԕ1H#q~kn}~ow*\ÐZ>)Lg2K}fRiZ$%o!cq {o鸞 /TyC\wFcu,} K|p̃HDt lA;@ֱG`hpJ zCbt`WqjZqS UOԕRjw2~"(͐X8p^KX_MVAb"> JywwzF)Дb;޺H.mB/T.{=oǧM@І(F+%5O~"i m ja|fN \leykh={QW7[D?aj΂w#V/ _1!kwaB|'ڛE`f9O7 =ty!N-5y~+^f2 =->h22 Ϥfeh:Pu7&:j:T;{&:5X$FKf#{=J9 Ɂ #Jp.2 r6,݂~yjh JjOf,b=4W`q6 w ¶;H$h@&k嶝=&kV _EvA]Uƽ-Y N4D/^d fc$]i:P^㗓^x #bJi 1,PiQ-y^m#p[O JI&T`T8~hV mq.b ףXU{rja+ EC?yl+ؼy{a 8sӑ_vpkj#~Q`yY40;NYztvx;MfmP/:s/w6\͞мUؒrWgm ?zazV+AzqSb!Ƥֆ:1za[!/TV!y)2vtd 0/=:[{0^%% ~n>/BȦ}"{#(TpEgu#d;n)ouJ⃬l.n#ڌLn>PBYMIj+"Yd, Pl HIG10Js?|9͜@dC1_mr^! I -;3۷O®^mo9^aw1{9\4EUI X&"~l=cdCk@t&z{D5`2%CW@(|1#gS0&0`=/K;} t"~UDP>=]m0FlXA Wlp{Hٷ1TJ*٤Zrd;NNgVΧӫz0;hFrP:;<'i"ȈHpR,yF5}{\(H}nFuSa\w^=}A$ đ2+;џ#ԓlYGȕ~>[Mg˲q;u<#֠4*6K N#oC>xI DU#kwUmˎ=^F[+/w~p}ȹ'Vu+;uIݐKç@!РiDۏ2>OmFwR [.16|Pk/IK~OL McA7BtTn! \`,Z(f /n,YHw{]߭CІO^l+;"^ Fe A`\ .z$ɔnJ#)/B!iv0t0D%\%sQ^hyS99Oȃې(&zYelӟ{Bx6#G|LJϟL^mXclfY}KL[ ܨu OX7Q|ĥ[Q $WAgm]Xqp]a'e 6lL2 #Z>IHyJee)n8!B}=-ۄ5ϹA!kv[#?KQRX(~5oSN OHMD -fCz U%)ju0tTMb8"VzL_R˺lNG? cH]m3=r+G=zm$~s@{:ZJ-gADG#vxcHDK@}պJf]13tKu]0k/xQ~xBNcaoF q J>5zMxǻ8HCƒo^D-*!rd `|pK 6ݑr)戗ՠ:(Kҏ &P yؾiN-X>ZO_QT!<*U6u|w|g*r'^?!~/+X34z08%M,JO8,UoVuA2]Mqt(īnC5q/HȨm.kNWf,AD5?dPsX*?ao`M6*~6Mӆrܘr{fܟr2O~WSN&vFo;s胺&b ѶAb,$ BeSgz(E{T8b26( 0J_aB3jv3Yh.T؊QV7cd?ҽT¶ǟUJss?5|Ph-݀>*FytUq5pEVڟqyl<tIVU[q遃AH!uj,rQH3u0;W֭2S{Yv*E/OBzRJ2"Q?/3N ':|fQPD٬ ~(n\xuG{e1P6bh1p.p7"qF3ћ(' E|9َWYt9SYXZQf>j?H\L/?T `iN"@UtzT: I"Bm1ET* uwѤYc Y[mZ(ɉz.,Et }]ɖ9Z{/f²?Çi袳˟uGIѮA(qv_ `(R: hP5ؓ "gsp]tfHRoXdqȡX ϢCse,16U_㛀&euLri* h̜|f=xGv[Cc)' 5T}~."Jr$Q`'Kx~ 0fzw@WP2'͔ˎ#papB%_56 ɹQpۮȾkضUg ;o/jIRwBzyr#Q^cAF6]Br0J"-s~YU@VHDJONWh@aYU)ftt R73Wa% G@}qgD#d dGY'u_ӚtYt/g^[lX~p͈0&Ct{er1BMl#q&.Pàp2-F?OtpbyPxΛSq oS$LBwǬ= vdp{ZӁG A{Z~oP; :n]fwP}O2ސc+I,Tp5M lmn%*1!C }<0.3l֪/BoѴ%Mnl%J/dM\6IA*$P h pL'˿P OѪwC;rt2X.գg_TxbL[]~V!b-W67f}]q>.0"p FX{aڵYMu0_!=ΰ >a%HD[ٺaNn7]c362`/^-8~#5lM~R7-~j]SIuyR<)>ܔ_?i}p 'gF+q/ i'kRC&g.I 责Y. 2s[\6#p U6ih5Κʩר"[mNɰalm`ʻDzōa_guے[*  (, Z:p5Wi=+YUmđO{RZ!_{Mz7 (.?wKq(d 5cԵq1!x*dhOĬ`SaAlӵ"=[M0@V8k|S}(Tz[@A -2ׯaIJsO^,=nm}>%2993ƥi8M1{۾O}e?YݖG һXqסl[I؆'ьu=0l,M~;1} ;NX'FdAM_9 C*?tzT:Qr"SⲅUzRr03J,em%`{\@C2VU&LڿC۳Yx^vW^6% 4g\"OmtzG(:! !GX;v[`͑!ޠF{hC[h plp@_ت'KW?6Wz%vbo4!Ye>F׿Һ&9S1M"N y޶'hc-p55q&}^,7F(ܙӔF䱖G1pmtpyޗNtoSNS:H 1.1--u鰳w{*|}t`Lh?ڲ ޘfwYeSW_KxTL]XT@9pNH5qtpɛ8X˯ݗέ&rڀf#=556"(GF|".J{o+VO茒)Nr{Es&}]m# c]O3.(L |av4*;cs=:'"S `9>T`1qzhؒ K;;,юkx;@>s4Qq a cK$"9] s{L =<&>90-~3HH>y":@uF< BxK\}@)-5Y<͡\mwV݈Q+[ qXx,`f$Ft2'sC/ h]]~ш)M5}Q86i^[8  W݈ۡWˋ;BGTTv\5YZȰ{mM>wd}f _)o ( =Ʒ&/Yzg& h}6_< [KA #7])_Wq)rbR0c7*5# Ο*I`悌C<6%3)X(DWt@s}XZq\ ``,!D4Ie{ok]Rt3BtZ= Π_Us  '4,r'U6Ѷ)p ].`;/FW2;CՆ|9=as/ڥqe5Ӧyt_6A,&k-S_KNLؐ#xĄD ?*`C˅ Aʏ!ԚK&M%YM=1%_{=rFD7sCi㦴pu` jΧeoY8 (s!3MA꽫sIAQPQJsJoq^XoDM ,aAF=LL0;-(ugnW9\-ˢ  p (J݊/Y$qpkccM]@PYUz`kQ8NHXड?qKA*\wL CXqd0X]U +U~TLN^əJ>ӂa6[ŢRl?V_ӓ+$V5^e Ĉ'ҩH<k#εɉ!aI4.Qs1uR@kS:Ikَê77W1z\xsݫ|0c%+cCKr-`;"rt& UGWliER`b_d0sKw;3T׵Q/zܺ[j|q\7CSHV\.:. CGÁ5?N=Ch!l,SzPE 2}+4ΈfrVr"7þ&& 4m%:XlB._tq[x88ʤKh8-{Qa` !]& 8J+/w~V? -Qd8է#[VdssXře(R4ijPhcUʶo&RU`e oc;Р$d!9u@/V>%w!n-!Rm0QF$/N<@D'nM4m53yy Dh7WNfQfՕL1M2Hh.h%S ;1'\6sd́N|@Pc*sװ?z9A B;pliL B"8)q˺[ WL뽁00hxC+1(=3]gxUg#pL(^p6 &Q,i3g 92mbu =a;zN(4;Y },>*h*}H:/Qa6hTŞ83lb_ɒ8huVh͘Ѣ!9覗_47Iǰ*Nys?\.=P34>C$Mn6OȦ 99O?亟N 8hb$/7.6#v!§Ҵ()T,0k#5Y/ ^z 2aY{c"2!~d^ّ>/!VIzzBFcrɧL<\lmTB>O[r{9et|u xTUP[Hs6knWKa={1[e8Zkޣ1/1h Kl;Y;r\C#ήNLj#sHmEBVKé]{;çBP`徊(b rg=}{ճKR)qBثv=,erH,eFct:Ԉ@]^ CKcT.Ip)ol(ZaABG$QuLQ/Mf]QɇY1py Augs!hh׬5~/4B鰣j Ae}C53x p)AI]GNI @3Y1)rZR^$4U>vwI}+-iEw}R#":g]rr&E)+R fy`諗dAU̱ؼk*gf=d!`¥0x%X7M.+ɘ4PTfR{eI~ Q pWb>W9T޶YFXVqvpư^Ȫ%?P?l\'e]X_|4S3ܮ.вzѶ ̊TGcʝ˶FVm rT(g믳2XIN'ݹBFLu , |o4ƿ}Id!k8Vq`Y Rpia FA5Z7]nԷX /tW"bZj~8/P h}WDh[SGO`Bj~8-a+s3F8ve`.o1MkaiЯQ$nuT1Y xJ|Z#5&̱&۞!Gq`vfJ"Dѯ'ν%LI|NFc_B¬n!Ux W YeKy1XJvl=OxY.=eLJ aLfg>qNzעt!zq^%{A8+I|EV Gnۼ9uAE~+"\֬E>=Z~ƅi574)H IHXncj}1.*1. Ό75%.x]cd:yFmE{@䓟7@f=8obI.6l*Rx@kWn5{v|/=5TH[)>wٴ˔w#e3|UX$XaȂ٠sŚAtKlUdκf'rsD7kۡ"G9 y#3 z\.`:dqah]d 8HF8A(B)AR]L'a7g@0hFZAר}sR%O"5yK>pS^DRjh8|v7PvFl*)b#89َ3N;#QR\OVXr~jׂr[6EU1*+߇TQ%)=e)"^rcN6>j 8.>p:^M*h .ίY)`NΆѧ(Fȍ +ki#}RZc}4}Zhw/r;wK U DZ2]og!AfbGRc؅\NFkkoFyH4dKmo)9!cRn4Bj#fYbqG!\bm1ڑtSgcP8IVz+mކe`\@N]>iJ`a` $Eޜ'''-3n+;G%sLN5u=|X ̯nOw7p>gv[1﭅.OлlR5@ZZ0'y%~VVY#()֣q>O13AZdDϵ[,b%A*g!+/'ZyH=Sya<^˰0u#ꦼ/m9w1PAæW֋#}%:JMHsVu+xS,k^w=s@sI ^a/7l^K?CC/-\U '`A 6(Cg;UNT*H_O}zM&?/ ,1 Bd{¶5Ǣ}BIy\Oz#E8Y$q0ӈ@aov;sӢ= %hV+-濂XqM#Tr=ouQj/_@^ yZL*0IPŌ"{F^Mgd-^ycOL]̅$΄쒖aC?J蟻`vֳc7tf;c@qɥՅcDW oOQғ:%cB'ĝ*ط)j4M mNi HDwJh׮~Yo u\5yW1EyQ)$f/_S( L wg]~F+<(%!"|H̹˒u|`kDm\`4N_vށ;_fd0,j7 z,Ы:-fq~5H *<`#-ոa PZ>5 ִ0*R\D(HzXNZ+`taF>.I?pCTXa\G_,OG!pęǹGYW:MPn C]`]J{Ä(df'odv+e83F(~+h%t!;[crsF)=/rcG2Y&0;قΰq'o,A_mC"!KoLJ3Fk(,bZDx5=ǟrH'7Y荍oeawU6pGǗ+X|ǥ k>,= OKזyl(;vCNo[Á,Q|}Ce8.h" y0+xa"2Э/h]n}hTs!#C0]z]!iBYmT_S$m/k3\Wm/ݘD (mco y: r5n{_"wnKdɌI~1/3"=8*ImlH!&0M x$ `rRB"䛻rݕ!G[%Bt͜R0lf1Pmj:qϾ*n]k>1?U賹xs}MvgmLE%OuWѤK6r0Ѵr Rl2.% 5v;uLj㪙Z~]3 ajmZ'*_rl`6,JLQ@q(O?ㅦyc Ӿ:. jշ[CO#o;%coáG߭(ɇghKa5=/g]#W"w,IGIJQv#雪Xh+A?u  ˣ:7{vAt`$9_b0q_Wv$%łH7\ 稪Ԡ'|^uP4T\zApH)$XF$P/!q&dp@aRz L-G(bٵJ;)tp꾺1"~T\|G/mTZLR  2:H 'eP& 6=N.Ҡ>2PukȄ6(:W4X<+S^ O> F7o pxW {<7p${󐟇RyH;BGˆS&!ȟJں)ZGt\!ߢ2H 3nxF Dp =MjP7_-QZ[٤OЇrVX8|Uf c_ ;LQp?'3ut!\hQZs Ȼރ(̈́*O Z*1$fy')>  ok]MO/\ԣ!*F\gDȷuyvڐÁyV ָ`X|Ӌc. W}S;Kb[|S vNB~=!n>TFqfQ&sj`lDxm-|rDፌp| eLԟ:$p#He (f];%Ih~7+&|8MBlJ]]qKcsCI:7ڧ=jrڏ7f6]i)xh@{іh.RJCc)C}Z`#F}C3{?0xDaIۂPr[/nFhk;!=]Ww7go5MK2-tQp%Sog$%XC+sqIQ \hDirqQ;hhm 쀉 ;-dTX1Jd[]c .!ڢH!J9~+X= O[>;98񄌀0Fגu|]X>c+%xC4C\/i 93EK%9eq6`*fa?^xREfڠYD+<$|~oy sPLisb4eW!GCkH4~WѫfWvFMU/GDC%[ގ6xsQOzdw4ްĪxT@9ɲ(pvXY2hn}J<4ZVXɞh]~̚ghp^]Tݙ3U+GWNq=ڷxlf;3B>!mTW|$ Xpr[4t'V@hP6{ľ M.5@,<{Ѫ|0}i+tspq~MW*(#) YiArp`2$RIK櫁=!C[- …oO%jm yd&1 ҬFל˹[37\@Nq3i]|wW)k"rQ^jK͌(!@'^Mfp&#jĖ\oKNy(bd vﲟZ2ъ^x}֫ݳp6ͽƊTHdVx](p,a>@3lmJr;ΪvO|s,IGM+!ZZ.uҶK0YyTgZׇ4wSU}F0 C&;!P#vJ| %TI {E2vW9N`טRB x9xV A˚ Z \Eu0Y;#$88wk-E#vDV)(.u<0F|m N;aR]F x, :kQIF{gì-U9etyf]6IM(Nw[kx[tOm?*t&[B{O]R7OS6|4 !.u;AxIꀞoh0<'\. dF}@G/*O-ƄG`t%>FVZ4*6ot84_lu^KzTH7kqo=8'lvĤ壈*CC[*ٴ{ ߨha+3M>TI)V$8.ڭzTͮNыTVT~ Ӊ h[2c^0BCoJWaq#b >)yY~?IݣP* $ԁe%.7"ɖbic(|BG!z8;Ԕe;+x4 +6n]oh:Ke@{5qj͖-Hη!:&X]愪~Kam<賬J(<}qQ7iZqS{SdcQ!%W"`<ԕd{lYe+@Sv29q T.CRpLMAPȞf9O1JE׾ Hc/PB^^ƞ9.[^Wpf$H6u w߰/)3ʃFy2XBE*V۽zK w$#C4-uRb:WǨ X|%ю~Cpl@Jk܏JSʉ߶ 1Yd9(P|vg \~DvbȼF@IOϘ=$~FKGV.z>h>=`x@<;`ŷE >  5t+ oދ=;}4"GgOpk'FsX]c(ۨD ~跣$mn>$hRWbacl{}$,SKaW=_˭Q^? ~f:AEzr D:0aHjMʇέ0JS(n9#z8^BwQ5XQ"*´w *,~MӼ٥҃Y35MҴk^;0(yca4diM5᲍ ɱʕmW7,h9q"z3GAB&,wêT3,(8 $ӋKLمs&Amb]R׶&U, Хfi8VQA$r6RiwhQ.#CyMY]CXx-[KDVyv^RZj;gT`*u+w|u/I"

::type range_type; static inline void apply(P& polygon, T const& point, int ring_index, int multi_index) { boost::ignore_unused_variable_warning(multi_index); if (ring_index == -1) { append_point::apply(exterior_ring(polygon), point, -1, -1); } else if (ring_index < boost::size(interior_rings(polygon))) { append_point::apply(interior_rings(polygon)[ring_index], point, -1, -1); } } }; template struct range_to_poly { typedef typename ring_type

::type ring_type; static inline void apply(P& polygon, R const& range, int ring_index, int multi_index) { if (ring_index == -1) { append_range::apply(exterior_ring(polygon), range, -1, -1); } else if (ring_index < boost::size(interior_rings(polygon))) { append_range::apply(interior_rings(polygon)[ring_index], range, -1, -1); } } }; }} // namespace detail::append #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { // (RoP = range or point, Std = use std library) // Default case (where RoP will be range/array/etc) template struct append : detail::append::append_range {}; // Append a point to any geometry template struct append : detail::append::append_point {}; // Never possible to append anything to a point/box/n-sphere template struct append {}; template struct append {}; template struct append {}; template struct append : detail::append::range_to_poly {}; template struct append : detail::append::point_to_poly {}; // Multi-linestring and multi-polygon might either implement traits or use standard... } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Appends one or more points to a linestring, linear-ring, polygon, multi \ingroup access \param geometry a geometry \param range_or_point the point or range to add \param ring_index the index of the ring in case of a polygon: exterior ring (-1, the default) or interior ring index \param multi_index reserved for multi polygons */ template inline void append(G& geometry, const RoP& range_or_point, int ring_index = -1, int multi_index = 0) { typedef typename boost::remove_const::type ncg_type; dispatch::append < typename tag::type, typename tag::type, ncg_type, RoP, traits::use_std::value >::apply(geometry, range_or_point, ring_index, multi_index); } } // namespace ggl #endif // GGL_ALGORITHMS_APPEND_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/area.hpp000066400000000000000000000161711177067165300241760ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_AREA_HPP #define GGL_ALGORITHMS_AREA_HPP #include #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup area area calculation \par Performance 2776 * 1000 area calculations are done in 0.11 seconds (other libraries: 0.125 seconds, 0.125 seconds, 0.5 seconds) \par Coordinate systems and strategies Area calculation can be done in Cartesian and in spherical/geographic coordinate systems. \par Geometries The area algorithm calculates the surface area of all geometries having a surface: box, circle, polygon, multi_polygon. The units are the square of the units used for the points defining the surface. If the polygon is defined in meters, the area is in square meters. \par Example: Example showing area calculation of polygons built of xy-points and of latlong-points \dontinclude doxygen_examples.cpp \skip example_area_polygon() \line { \until } */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace area { template struct box_area { typedef typename coordinate_type::type return_type; static inline return_type apply(B const& b, S const&) { // Currently only works for Cartesian boxes // Todo: use strategy // Todo: use concept assert_dimension(); return_type const dx = get(b) - get(b); return_type const dy = get(b) - get(b); return dx * dy; } }; template struct circle_area { typedef typename coordinate_type::type coordinate_type; // Returning the coordinate precision, but if integer, returning a double typedef typename boost::mpl::if_c < boost::is_integral::type::value, double, coordinate_type >::type return_type; static inline return_type apply(C const& c, S const&) { // Currently only works for Cartesian circles // Todo: use strategy // Todo: use concept assert_dimension(); return_type r = get_radius<0>(c); r *= r * ggl::math::pi; return r; } }; // Area of a linear linear_ring, assuming a closed linear_ring template struct ring_area { typedef typename S::return_type type; static inline type apply(R const& ring, S const& strategy) { assert_dimension(); // A closed linear_ring has at least four points, if not there is no area if (boost::size(ring) >= 4) { typename S::state_type state_type; if (loop(ring, strategy, state_type)) { return state_type.area(); } } return type(); } }; // Area of a polygon, either clockwise or anticlockwise template class polygon_area { typedef typename Strategy::return_type type; static inline type call_abs(type const& v) { #if defined(NUMERIC_ADAPTOR_INCLUDED) return boost::abs(v); #else return std::abs(v); #endif } public: static inline type apply(Polygon const& poly, Strategy const& strategy) { assert_dimension(); typedef typename ring_type::type ring_type; typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator_type; type a = call_abs( ring_area::apply(exterior_ring(poly), strategy)); for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { a -= call_abs(ring_area::apply(*it, strategy)); } return a; } }; }} // namespace detail::area #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct area : detail::calculate_null {}; template struct area : detail::area::box_area {}; template struct area : detail::area::circle_area {}; // Area of ring currently returns area of closed rings but it might be argued // that it is 0.0, because a ring is just a line. template struct area : detail::area::ring_area {}; template struct area : detail::area::polygon_area {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH template struct area_result { typedef typename point_type::type point_type; typedef typename strategy_area < typename cs_tag::type, point_type >::type strategy_type; typedef typename strategy_type::return_type return_type; }; /*! \brief Calculate area of a geometry \ingroup area \details The function area returns the area of a polygon, ring, box or circle, using the default area-calculation strategy. Strategies are provided for cartesian ans spherical points The geometries should correct, polygons should be closed and orientated clockwise, holes, if any, must be orientated counter clockwise \param geometry a geometry \return the area */ template inline typename area_result::return_type area(Geometry const& geometry) { typedef typename area_result::strategy_type strategy_type; return dispatch::area < typename tag::type, Geometry, strategy_type >::apply(geometry, strategy_type()); } /*! \brief Calculate area of a geometry using a strategy \ingroup area \details This version of area calculation takes a strategy \param geometry a geometry \param strategy the strategy to calculate area. Especially for spherical areas there are some approaches. \return the area */ template inline typename Strategy::return_type area( Geometry const& geometry, Strategy const& strategy) { return dispatch::area < typename tag::type, Geometry, Strategy >::apply(geometry, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_AREA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/assign.hpp000066400000000000000000000265061177067165300245550ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_ASSIGN_HPP #define GGL_ALGORITHMS_ASSIGN_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup access access: get/set coordinate values, make objects, clear geometries, append point(s) \details There are many ways to edit geometries. It is possible to: - use the geometries themselves, so access point.x(). This is not done inside the library because it is agnostic to geometry type. However, library users can use this as it is intuitive. - use the standard library, so use .push_back(point) or use inserters. This is also avoided inside the library. However, library users can use it if they are used to the standard library - use the functionality provided in this geometry library. These are the functions in this module. The library provides the following functions to edit geometries: - set to set one coordinate value - assign to set two or more coordinate values - make to construct and return geometries with specified coordinates. - append to append one or more points to a geometry - clear to remove all points from a geometry For getting coordinates it is similar: - get to get a coordinate value - or use the standard library - or use the geometries themselves */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace assign { template struct assign_operation { inline assign_operation(C const& value) : m_value(value) {} template inline void apply(P& point) const { set(point, m_value); } private: C m_value; }; /*! \brief Assigns all coordinates of a specific point to a value \ingroup access \details \param p Point \param value Value which is assigned to all coordinates of point p */ template inline void assign_value(P& p, typename coordinate_type

::type const& value) { for_each_coordinate(p, assign_operation::type>(value)); } template struct initialize { typedef typename coordinate_type::type coordinate_type; static inline void apply(B& box, const coordinate_type& value) { set(box, value); initialize::apply(box, value); } }; template struct initialize { typedef typename coordinate_type::type coordinate_type; static inline void apply(B& box, const coordinate_type& value) { boost::ignore_unused_variable_warning(box); boost::ignore_unused_variable_warning(value); } }; template struct assign_zero_point { static inline void apply(Point& point) { typedef typename coordinate_type::type coordinate_type; assign_value(point, 0); } }; template struct assign_inverse_box { typedef typename point_type::type point_type; static inline void apply(Box& box) { typedef typename coordinate_type::type coordinate_type; initialize < Box, min_corner, 0, dimension::type::value >::apply( box, boost::numeric::bounds::highest()); initialize < Box, max_corner, 0, dimension::type::value >::apply( box, boost::numeric::bounds::lowest()); } }; template struct assign_zero_box { static inline void apply(Box& box) { typedef typename coordinate_type::type coordinate_type; initialize < Box, min_corner, 0, dimension::type::value >::apply(box, coordinate_type()); initialize < Box, max_corner, 0, dimension::type::value >::apply(box, coordinate_type()); } }; }} // namespace detail::assign #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct assign {}; template struct assign { typedef typename coordinate_type

::type coordinate_type; template static inline void apply(P& point, T const& c1, T const& c2) { set<0>(point, boost::numeric_cast(c1)); set<1>(point, boost::numeric_cast(c2)); } }; template struct assign { typedef typename coordinate_type

::type coordinate_type; template static inline void apply(P& point, T const& c1, T const& c2, T const& c3) { set<0>(point, boost::numeric_cast(c1)); set<1>(point, boost::numeric_cast(c2)); set<2>(point, boost::numeric_cast(c3)); } }; template struct assign { typedef typename coordinate_type::type coordinate_type; // Here we assign 4 coordinates to a box. // -> Most logical is: x1,y1,x2,y2 // In case the user reverses x1/x2 or y1/y2, we could reverse them (THAT IS NOT IMPLEMENTED) // Note also comment in util/assign_box_corner -> // ("Most logical is LOWER, UPPER and sub-order LEFT, RIGHT") // (That is assigning 4 points from a box. So lower-left, lower-right, upper-left, upper-right) template static inline void apply(B& box, T const& x1, T const& y1, T const& x2, T const& y2) { set(box, boost::numeric_cast(x1)); set(box, boost::numeric_cast(y1)); set(box, boost::numeric_cast(x2)); set(box, boost::numeric_cast(y2)); } }; template struct assign { typedef typename coordinate_type::type coordinate_type; typedef typename radius_type::type radius_type; /// 2-value version for an n-sphere is valid for circle and sets the center template static inline void apply(S& sphercle, T const& c1, T const& c2) { set<0>(sphercle, boost::numeric_cast(c1)); set<1>(sphercle, boost::numeric_cast(c2)); } template static inline void apply(S& sphercle, T const& c1, T const& c2, R const& radius) { set<0>(sphercle, boost::numeric_cast(c1)); set<1>(sphercle, boost::numeric_cast(c2)); set_radius<0>(sphercle, boost::numeric_cast(radius)); } }; template struct assign { typedef typename coordinate_type::type coordinate_type; typedef typename radius_type::type radius_type; /// 4-value version for an n-sphere is valid for a sphere and sets the center and the radius template static inline void apply(S& sphercle, T const& c1, T const& c2, T const& c3) { set<0>(sphercle, boost::numeric_cast(c1)); set<1>(sphercle, boost::numeric_cast(c2)); set<2>(sphercle, boost::numeric_cast(c3)); } /// 4-value version for an n-sphere is valid for a sphere and sets the center and the radius template static inline void apply(S& sphercle, T const& c1, T const& c2, T const& c3, R const& radius) { set<0>(sphercle, boost::numeric_cast(c1)); set<1>(sphercle, boost::numeric_cast(c2)); set<2>(sphercle, boost::numeric_cast(c3)); set_radius<0>(sphercle, boost::numeric_cast(radius)); } }; template struct assign_zero {}; template struct assign_zero : detail::assign::assign_zero_point {}; template struct assign_zero : detail::assign::assign_zero_box {}; template struct assign_inverse {}; template struct assign_inverse : detail::assign::assign_inverse_box {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief assign two values to a 2D point \ingroup access */ template inline void assign(G& geometry, T const& c1, T const& c2) { dispatch::assign < typename tag::type, G, ggl::dimension::type::value >::apply(geometry, c1, c2); } /*! \brief assign three values to a 3D point or the center + radius to a circle \ingroup access */ template inline void assign(G& geometry, T const& c1, T const& c2, T const& c3) { dispatch::assign < typename tag::type, G, ggl::dimension::type::value >::apply(geometry, c1, c2, c3); } /*! \brief assign center + radius to a sphere \ingroup access */ template inline void assign(G& geometry, T const& c1, T const& c2, T const& c3, T const& c4) { dispatch::assign < typename tag::type, G, ggl::dimension::type::value >::apply(geometry, c1, c2, c3, c4); } /*! \brief assign a range of points to a linestring, ring or polygon \note The point-type of the range might be different from the point-type of the geometry \ingroup access */ template inline void assign(G& geometry, R const& range) { clear(geometry); ggl::append(geometry, range, -1, 0); } /*! \brief assign to a box inverse infinite \details The assign_inverse function initialize a 2D or 3D box with large coordinates, the min corner is very large, the max corner is very small. This is a convenient starting point to collect the minimum bounding box of a geometry. \ingroup access */ template inline void assign_inverse(G& geometry) { dispatch::assign_inverse < typename tag::type, G >::apply(geometry); } /*! \brief assign zero values to a box, point \ingroup access \details The assign_zero function initializes a 2D or 3D point or box with coordinates of zero \tparam G the geometry type */ template inline void assign_zero(G& geometry) { dispatch::assign_zero < typename tag::type, G >::apply(geometry); } } // namespace ggl #endif // GGL_ALGORITHMS_ASSIGN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/buffer.hpp000066400000000000000000000121141177067165300245300ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_BUFFER_HPP #define GGL_ALGORITHMS_BUFFER_HPP #include #include #include #include #include #include // Buffer functions // Was before: "grow" but then only for box // Now "buffer", but still only implemented for a box... /*! \defgroup buffer buffer calculation \par Source description: - OGC: Returns a geometric object that represents all Points whose distance from this geometric object is less than or equal to distance. Calculations are in the spatial reference system of this geometric object. Because of the limitations of linear interpolation, there will often be some relatively small error in this distance, but it should be near the resolution of the coordinates used \see http://en.wikipedia.org/wiki/Buffer_(GIS) */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace buffer { template struct box_loop { typedef typename coordinate_type::type coordinate_type; static inline void apply(BoxIn const& box_in, T const& distance, BoxOut& box_out) { set(box_out, boost::numeric_cast(get(box_in) + distance)); box_loop::apply(box_in, distance, box_out); } }; template struct box_loop { static inline void apply(BoxIn const&, T const&, BoxOut&) {} }; // Extends a box with the same amount in all directions template inline void buffer_box(BoxIn const& box_in, T const& distance, BoxOut& box_out) { assert_dimension_equal(); static const std::size_t N = dimension::value; box_loop::apply(box_in, -distance, box_out); box_loop::apply(box_in, +distance, box_out); } }} // namespace detail::buffer #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct buffer {}; template struct buffer { static inline void apply(BoxIn const& box_in, T const& distance, T const& chord_length, BoxIn& box_out) { detail::buffer::buffer_box(box_in, distance, box_out); } }; // Many things to do. Point is easy, other geometries require self intersections // For point, note that it should output as a polygon (like the rest). Buffers // of a set of geometries are often lateron combined using a "dissolve" operation. // Two points close to each other get a combined kidney shaped buffer then. } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate buffer (= new geometry) around specified distance of geometry \ingroup buffer \param geometry_in input geometry \param distance the distance used in buffer \param chord_length length of the chord's in the generated arcs around points or bends \param geometry_out buffered geometry \note Currently only implemented for box, the trivial case, but still useful \par Use case: BOX + distance -> BOX: it is allowed that "geometry_out" the same object as "geometry_in" */ template inline void buffer(const Input& geometry_in, Output& geometry_out, T const& distance, T const& chord_length = -1) { dispatch::buffer < typename tag::type, typename tag::type, Input, T, Output >::apply(geometry_in, distance, chord_length, geometry_out); } /*! \brief Calculate and return buffer (= new geometry) around specified distance of geometry \ingroup buffer \param geometry input geometry \param distance the distance used in buffer \param chord_length length of the chord's in the generated arcs around points or bends \return the buffered geometry \note See also: buffer */ template Output make_buffer(const Input& geometry, T const& distance, T const& chord_length = -1) { Output geometry_out; dispatch::buffer < typename tag::type, typename tag::type, Input, T, Output >::apply(geometry, distance, chord_length, geometry_out); return geometry_out; } } // namespace ggl #endif // GGL_ALGORITHMS_BUFFER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/centroid.hpp000066400000000000000000000173561177067165300251030ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_CENTROID_HPP #define GGL_ALGORITHMS_CENTROID_HPP #include #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup centroid centroid calculation \par Source descriptions: - OGC description: The mathematical centroid for this Surface as a Point. The result is not guaranteed to be on this Surface. - From Wikipedia: Informally, it is the "average" of all points \see http://en.wikipedia.org/wiki/Centroid \note The "centroid" functions are taking a non const reference to the centroid. The "make_centroid" functions return the centroid, the type has to be specified. \note There are versions where the centroid calculation strategy can be specified \par Geometries: - RING: \image html centroid_ring.png - BOX: the centroid of a 2D or 3D box is the center of the box - CIRCLE: the centroid of a circle or a sphere is its center - POLYGON \image html centroid_polygon.png - POINT, LINESTRING, SEGMENT: trying to calculate the centroid will result in a compilation error */ namespace ggl { class centroid_exception : public ggl::exception { public: centroid_exception() {} virtual char const* what() const throw() { return "centroid calculation exception"; } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace centroid { /*! \brief Generic function which checks if enough points are present */ template inline bool ring_ok(R const& ring, P& c) { std::size_t const n = boost::size(ring); if (n > 1) { return true; } else if (n <= 0) { throw centroid_exception(); } else { // n == 1: Take over the first point in a "coordinate neutral way" copy_coordinates(ring.front(), c); return false; } return true; } /*! \brief Calculate the centroid of a ring. */ template struct centroid_ring { static inline void apply(Ring const& ring, Point& c, Strategy const& strategy) { if (ring_ok(ring, c)) { typename Strategy::state_type state; loop(ring, strategy, state); state.centroid(c); } } }; /*! \brief Centroid of a polygon. \note Because outer ring is clockwise, inners are counter clockwise, triangle approach is OK and works for polygons with rings. */ template struct centroid_polygon { static inline void apply(Polygon const& poly, Point& c, Strategy const& strategy) { if (ring_ok(exterior_ring(poly), c)) { typename Strategy::state_type state; loop(exterior_ring(poly), strategy, state); typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator_type; for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { loop(*it, strategy, state); } state.centroid(c); } } }; /*! \brief Calculate centroid (==center) of a box \todo Implement strategy */ template struct centroid_box { static inline void apply(Box const& box, Point& c, Strategy const&) { // TODO: adapt using strategies assert_dimension(); set<0>(c, (get(box) + get(box)) / 2); set<1>(c, (get(box) + get(box)) / 2); } }; }} // namespace detail::centroid #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct centroid {}; template struct centroid : detail::centroid::centroid_box {}; template struct centroid : detail::centroid::centroid_ring {}; template struct centroid : detail::centroid::centroid_polygon {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate centroid \ingroup centroid \details The function centroid calculates the centroid of a geometry using the default strategy. A polygon should be closed and orientated clockwise, holes, if any, must be orientated counter clockwise \param geometry a geometry (e.g. closed ring or polygon) \param c reference to point which will contain the centroid \exception centroid_exception if calculation is not successful, e.g. because polygon didn't contain points \par Example: Example showing centroid calculation \dontinclude doxygen_examples.cpp \skip example_centroid_polygon \line { \until } */ template inline void centroid(const G& geometry, P& c) { typedef typename point_type::type point_type; typedef typename strategy_centroid < typename cs_tag::type, P, point_type >::type strategy_type; dispatch::centroid < typename tag::type, G, P, strategy_type >::apply(geometry, c, strategy_type()); } /*! \brief Calculate centroid using a specified strategy \ingroup centroid \param geometry the geometry to calculate centroid from \param c reference to point which will contain the centroid \param strategy Calculation strategy for centroid \exception centroid_exception if calculation is not successful, e.g. because polygon didn't contain points */ template inline void centroid(const G& geometry, P& c, S const& strategy) { dispatch::centroid < typename tag::type, G, P, S >::apply(geometry, c, strategy); } // Versions returning a centroid /*! \brief Calculate and return centroid \ingroup centroid \param geometry the geometry to calculate centroid from \return the centroid \exception centroid_exception if calculation is not successful, e.g. because polygon didn't contain points */ template inline P make_centroid(const G& geometry) { P c; centroid(geometry, c); return c; } /*! \brief Calculate and return centroid \ingroup centroid \param geometry the geometry to calculate centroid from \param strategy Calculation strategy for centroid \return the centroid \exception centroid_exception if calculation is not successful, e.g. because polygon didn't contain points */ template inline P make_centroid(const G& geometry, S const& strategy) { P c; centroid(geometry, c, strategy); return c; } } // namespace ggl #endif // GGL_ALGORITHMS_CENTROID_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/clear.hpp000066400000000000000000000067721177067165300243620ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_CLEAR_HPP #define GGL_ALGORITHMS_CLEAR_HPP #include #include #include namespace ggl { // This traits is currently NOT defined in ../core/ but here, just because it default // does not have to be implemented namespace traits { /*! \brief Traits class, optional, might be implemented to clear a geometry \details If a geometry type should not use the std ".clear()" then it can specialize the "use_std" traits class to false, it should then implement (a.o.) clear \ingroup traits \par Geometries: - linestring - linear_ring \par Specializations should provide: - apply */ template struct clear { }; } // namespace traits #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace clear { template struct use_std_clear { static inline void apply(G& geometry) { geometry.clear(); } }; template struct use_traits_clear { static inline void apply(G& geometry) { traits::clear::apply(geometry); } }; template struct polygon_clear { static inline void apply(P& polygon) { interior_rings(polygon).clear(); exterior_ring(polygon).clear(); } }; template struct no_action { static inline void apply(G& geometry) { } }; }} // namespace detail::clear #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct clear {}; // True (default for all geometry types, unless otherwise implemented in traits) // uses std::clear template struct clear : detail::clear::use_std_clear {}; // If any geometry specializes use_std to false, specialize to use the traits clear. template struct clear : detail::clear::use_traits_clear {}; // Point/box/nsphere/segment do not have clear. So specialize to do nothing. template struct clear : detail::clear::no_action {}; template struct clear : detail::clear::no_action {}; template struct clear : detail::clear::no_action {}; template struct clear : detail::clear::no_action {}; // Polygon can (indirectly) use std for clear template struct clear : detail::clear::polygon_clear

{}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Clears a linestring, linear ring or polygon (exterior+interiors) or multi* \details Generic function to clear a geometry \ingroup access \note points and boxes cannot be cleared, instead they can be set to zero by "assign_zero" */ template inline void clear(G& geometry) { typedef typename boost::remove_const::type ncg_type; dispatch::clear < typename tag::type, traits::use_std::value, ncg_type >::apply(geometry); } } // namespace ggl #endif // GGL_ALGORITHMS_CLEAR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/combine.hpp000066400000000000000000000114611177067165300246770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_COMBINE_HPP #define GGL_ALGORITHMS_COMBINE_HPP #include #include #include #include #include #include #include #include /*! \defgroup combine combine: add a geometry to a bounding box \par Geometries: - BOX + BOX -> BOX: the box will be combined with the other box \image html combine_box_box.png - BOX + POINT -> BOX: the box will combined with the point \image html combine_box_point.png \note Previously called "grow" */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace combine { template < typename Box, typename Point, std::size_t Dimension, std::size_t DimensionCount > struct point_loop { typedef typename coordinate_type::type coordinate_type; static inline void apply(Box& box, Point const& source) { coordinate_type const coord = get(source); if (coord < get(box)) { set(box, coord ); } if (coord > get(box)) { set(box, coord); } point_loop::apply(box, source); } }; template < typename Box, typename Point, std::size_t DimensionCount > struct point_loop { static inline void apply(Box&, Point const&) {} }; template < typename BoxIn, typename BoxOut, std::size_t Corner, std::size_t Dimension, std::size_t DimensionCount > struct box_loop { typedef typename select_coordinate_type::type coordinate_type; static inline void apply(BoxIn& box, BoxOut const& source) { coordinate_type const coord = get(source); if (coord < get(box)) { set(box, coord); } if (coord > get(box)) { set(box, coord); } box_loop < BoxIn, BoxOut, Corner, Dimension + 1, DimensionCount >::apply(box, source); } }; template < typename BoxIn, typename BoxOut, std::size_t Corner, std::size_t DimensionCount > struct box_loop { static inline void apply(BoxIn&, BoxOut const&) {} }; // Changes a box b such that it also contains point p template struct combine_box_with_point : point_loop::type::value> {}; // Changes a box such that the other box is also contained by the box template struct combine_box_with_box { static inline void apply(BoxOut& b, BoxIn const& other) { box_loop::type::value>::apply(b, other); box_loop::type::value>::apply(b, other); } }; }} // namespace detail::combine #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct combine {}; // Box + point -> new box containing also point template struct combine : detail::combine::combine_box_with_point {}; // Box + box -> new box containing two input boxes template struct combine : detail::combine::combine_box_with_box {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Combines a box with another geometry (box, point) \ingroup combine \tparam Box type of the box \tparam Geometry of second geometry, to be combined with the box \param box box to combine another geometry with, might be changed \param geometry other geometry */ template inline void combine(Box& box, Geometry const& geometry) { assert_dimension_equal(); dispatch::combine < typename tag::type, Box, Geometry >::apply(box, geometry); } } // namespace ggl #endif // GGL_COMBINE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/convert.hpp000066400000000000000000000104511177067165300247410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_CONVERT_HPP #define GGL_ALGORITHMS_CONVERT_HPP #include #include #include #include #include #include #include #include #include /*! \defgroup convert convert geometries from one type to another \details Convert from one geometry type to another type, for example from BOX to POLYGON */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace convert { template struct point_to_box { static inline void apply(P const& point, B& box) { typedef typename coordinate_type::type coordinate_type; set(box, boost::numeric_cast(get(point))); point_to_box::apply(point, box); } }; template struct point_to_box { static inline void apply(P const& point, B& box) {} }; }} // namespace detail::convert #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct convert { }; template struct convert { // Same geometry type -> copy coordinates from G1 to G2 }; template struct convert { // Same geometry -> can be copied }; // Partial specializations template struct convert { static inline void apply(B const& box, R& ring) { // go from box to ring -> add coordinates in correct order // only valid for 2D assert_dimension(); ring.clear(); typename point_type::type point; ggl::assign(point, get(box), get(box)); ggl::append(ring, point); ggl::assign(point, get(box), get(box)); ggl::append(ring, point); ggl::assign(point, get(box), get(box)); ggl::append(ring, point); ggl::assign(point, get(box), get(box)); ggl::append(ring, point); ggl::assign(point, get(box), get(box)); ggl::append(ring, point); } }; template struct convert { static inline void apply(B const& box, P& polygon) { typedef typename ring_type

::type ring_type; convert::apply(box, exterior_ring(polygon)); } }; template struct convert { static inline void apply(P const& point, B& box) { // go from point to box -> box with volume of zero, 2D or 3D static const std::size_t N = dimension

::value; detail::convert::point_to_box::apply(point, box); detail::convert::point_to_box::apply(point, box); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Converts one geometry to another geometry \details The convert algorithm converts one geometry, e.g. a BOX, to another geometry, e.g. a RING. This only if it is possible and applicable. \ingroup convert \tparam G1 first geometry type \tparam G2 second geometry type \param geometry1 first geometry \param geometry2 second geometry */ template inline void convert(G1 const& geometry1, G2& geometry2) { dispatch::convert < typename tag::type, typename tag::type, G1, G2 >::apply(geometry1, geometry2); } } // namespace ggl #endif // GGL_ALGORITHMS_CONVERT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/convex_hull.hpp000066400000000000000000000073261177067165300256160ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_CONVEX_HULL_HPP #define GGL_ALGORITHMS_CONVEX_HULL_HPP #include #include #include #include #include #include #include /*! \defgroup convex_hull convex hull calculation \par Source descriptions: - OGC description: Returns a geometric object that represents the convex hull of this geometric object. Convex hulls, being dependent on straight lines, can be accurately represented in linear interpolations for any geometry restricted to linear interpolations. \see http://en.wikipedia.org/wiki/Convex_hull \par Performance 2776 counties of US are "hulled" in 0.52 seconds (other libraries: 2.8 seconds, 2.4 seconds, 3.4 seconds, 1.1 seconds) \note The convex hull is always a ring, holes are not possible. Therefore it is modelled as an output iterator. This gives the most flexibility, the user can decide what to do with it. \par Geometries: In the images below the convex hull is painted in red. - POINT: will not compile - POLYGON: will deliver a polygon without holes \image html convexhull_polygon_polygon.png */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace convex_hull { template struct hull { static inline OutputIterator apply(Geometry const& geometry, OutputIterator out) { typedef typename point_type::type point_type; typedef typename strategy_convex_hull < typename cs_tag::type, point_type >::type strategy_type; strategy_type s(as_range::type>(geometry)); s.get(out); return out; } }; }} // namespace detail::convex_hull #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename GeometryTag, bool IsMulti, typename Geometry, typename OutputIterator > struct convex_hull {}; template struct convex_hull : detail::convex_hull::hull {}; template struct convex_hull : detail::convex_hull::hull {}; template struct convex_hull : detail::convex_hull::hull {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate the convex hull of a geometry \ingroup convex_hull \param geometry the geometry to calculate convex hull from \param out an output iterator outputing points of the convex hull \return the output iterator */ template inline OutputIterator convex_hull(Geometry const& geometry, OutputIterator out) { typedef typename boost::remove_const::type ncg_type; return dispatch::convex_hull < typename tag::type, is_multi::type::value, Geometry, OutputIterator >::apply(geometry, out); } } // namespace ggl #endif // GGL_ALGORITHMS_CONVEX_HULL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/correct.hpp000066400000000000000000000076671177067165300247410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_CORRECT_HPP #define GGL_ALGORITHMS_CORRECT_HPP #include #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace correct { // correct an box: make min/max are correct template inline void correct_box(B& b) { // Currently only for Cartesian coordinates // TODO: adapt using strategies // TODO: adapt using traits typedef typename coordinate_type::type coordinate_type; if (get(b) > get(b)) { coordinate_type max_value = get(b); coordinate_type min_value = get(b); set(b, min_value); set(b, max_value); } if (get(b) > get(b)) { coordinate_type max_value = get(b); coordinate_type min_value = get(b); set(b, min_value); set(b, max_value); } } // close a linear_ring, if not closed template inline void ensure_closed_ring(R& r) { if (boost::size(r) > 2) { // check if closed, if not, close it if (ggl::disjoint(r.front(), r.back())) { r.push_back(r.front()); } } } // correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all // inner rings counter clockwise template inline void correct_polygon(Y& poly) { typename ring_type::type& outer = exterior_ring(poly); ensure_closed_ring(outer); typedef typename point_type::type point_type; typedef typename ring_type::type ring_type; typedef typename strategy_area < typename cs_tag::type, point_type >::type strategy_type; strategy_type strategy; if (detail::area::ring_area::apply(outer, strategy) < 0) { std::reverse(boost::begin(outer), boost::end(outer)); } typedef typename boost::range_iterator < typename interior_type::type >::type iterator_type; for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { ensure_closed_ring(*it); if (detail::area::ring_area::apply(*it, strategy) > 0) { std::reverse(boost::begin(*it), boost::end(*it)); } } } }} // namespace detail::correct #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct correct {}; template struct correct { static inline void apply(B& box) { detail::correct::correct_box(box); } }; template struct correct { static inline void apply(R& ring) { detail::correct::ensure_closed_ring(ring); } }; template struct correct { static inline void apply(P& poly) { detail::correct::correct_polygon(poly); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH template inline void correct(G& geometry) { dispatch::correct::type, G>::apply(geometry); } } // namespace ggl #endif // GGL_ALGORITHMS_CORRECT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/detail/000077500000000000000000000000001177067165300240115ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/detail/calculate_null.hpp000066400000000000000000000015061177067165300275130ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_DETAIL_CALCULATE_NULL_HPP #define GGL_ALGORITHMS_DETAIL_CALCULATE_NULL_HPP namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct calculate_null { static inline ReturnValue apply(Geometry const& , Strategy const&) { return ReturnValue(); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL } // namespace ggl #endif // GGL_ALGORITHMS_DETAIL_CALCULATE_NULL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/detail/not.hpp000066400000000000000000000021511177067165300253210ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_DETAIL_NOT_HPP #define GGL_ALGORITHMS_DETAIL_NOT_HPP namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { /*! \brief Structure negating the result of specified policy \tparam Geometry1 first geometry type \tparam Geometry2 second geometry type \tparam Policy \param geometry1 first geometry \param geometry2 second geometry \return Negation of the result of the policy */ template struct not_ { static inline bool apply(Geometry1 const &geometry1, Geometry2 const& geometry2) { return ! Policy::apply(geometry1, geometry2); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL } // namespace ggl #endif // GGL_ALGORITHMS_DETAIL_NOT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/disjoint.hpp000066400000000000000000000127161177067165300251120ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_DISJOINT_HPP #define GGL_ALGORITHMS_DISJOINT_HPP #include #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace disjoint { template struct point_point { typedef typename select_coordinate_type::type coordinate_type; static inline bool apply(P1 const& p1, P2 const& p2) { if (! math::equals(get(p1), get(p2))) { return true; } return point_point::apply(p1, p2); } }; template struct point_point { static inline bool apply(P1 const& , P2 const& ) { return false; } }; template struct point_box { static inline bool apply(P const& point, B const& box) { if (get(point) < get(box) || get(point) > get(box)) { return true; } return point_box::apply(point, box); } }; template struct point_box { static inline bool apply(P const& , B const& ) { return false; } }; template struct box_box { static inline bool apply(B1 const& box1, B2 const& box2) { if (get(box1) < get(box2)) { return true; } if (get(box1) > get(box2)) { return true; } return box_box::apply(box1, box2); } }; template struct box_box { static inline bool apply(B1 const& , B2 const& ) { return false; } }; }} // namespace detail::disjoint #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename GeometryTag1, typename GeometryTag2, typename G1, typename G2, bool IsMulti1, bool IsMulti2, std::size_t DimensionCount > struct disjoint { }; template struct disjoint : detail::disjoint::point_point { }; template struct disjoint : detail::disjoint::box_box { }; template struct disjoint : detail::disjoint::point_box { }; template < typename GeometryTag1, typename GeometryTag2, typename G1, typename G2, bool IsMulti1, bool IsMulti2, std::size_t DimensionCount > struct disjoint_reversed { static inline bool apply(G1 const& g1, G2 const& g2) { return disjoint < GeometryTag2, GeometryTag1, G2, G1, IsMulti2, IsMulti1, DimensionCount >::apply(g2, g1); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate if two geometries are disjoint \ingroup boolean_relations \tparam Geometry1 first geometry type \tparam Geometry2 second geometry type \param geometry1 first geometry \param geometry2 second geometry \return true if disjoint, else false */ template inline bool disjoint(const Geometry1& geometry1, const Geometry2& geometry2) { assert_dimension_equal(); typedef typename boost::remove_const::type ncg1_type; typedef typename boost::remove_const::type ncg2_type; return boost::mpl::if_c < reverse_dispatch::type::value, dispatch::disjoint_reversed < typename tag::type, typename tag::type, ncg1_type, ncg2_type, is_multi::type::value, is_multi::type::value, dimension::type::value >, dispatch::disjoint < typename tag::type, typename tag::type, ncg1_type, ncg2_type, is_multi::type::value, is_multi::type::value, dimension::type::value > >::type::apply(geometry1, geometry2); } } // namespace ggl #endif // GGL_ALGORITHMS_DISJOINT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/distance.hpp000066400000000000000000000263561177067165300250660ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_DISTANCE_HPP #define GGL_ALGORITHMS_DISTANCE_HPP #include #include #include #include #include #include #include #include #include #include /*! \defgroup distance distance calculation The distance algorithm returns the distance between two geometries. \par Coordinate systems and strategies: With help of strategies the distance function returns the appropriate distance. If the input is in cartesian coordinates, the Euclidian distance (Pythagoras) is calculated. If the input is in spherical coordinates (either degree or radian), the distance over the sphere is returned. If the input is in geographic coordinates, distance is calculated over the globe and returned in meters. \par Distance result: Depending on calculation type the distance result is either a structure, convertable to a double, or a double value. In case of Pythagoras it makes sense to not draw the square root in the strategy itself. Taking a square root is relative expensive and is not necessary when comparing distances. \par Geometries: Currently implemented, for both cartesian and spherical/geographic: - POINT - POINT - POINT - SEGMENT and v.v. - POINT - LINESTRING and v.v. Not yet implemented: - POINT - RING etc, note that it will return a zero if the point is anywhere within the ring \par Example: Example showing distance calculation of two points, in xy and in latlong coordinates \dontinclude doxygen_examples.cpp \skip example_distance_point_point \line { \until } */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace distance { template struct point_to_point { static inline typename Strategy::return_type apply(P1 const& p1, P2 const& p2, Strategy const& strategy) { return strategy(p1, p2); } }; template struct point_to_segment { static inline typename Strategy::return_type apply(Point const& point, Segment const& segment, Strategy const& strategy) { typename strategy_distance_segment < typename cs_tag::type, typename cs_tag::type, Point, Segment >::type segment_strategy; return segment_strategy(point, segment); } }; template struct point_to_linestring { typedef typename PPStrategy::return_type return_type; static inline return_type apply(P const& point, L const& linestring, PPStrategy const& pp_strategy, PSStrategy const& ps_strategy) { typedef segment::type> segment_type; if (boost::begin(linestring) == boost::end(linestring)) { return return_type(0); } // line of one point: return point square_distance typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(linestring); iterator_type prev = it++; if (it == boost::end(linestring)) { return pp_strategy(point, *boost::begin(linestring)); } // start with first segment distance return_type d = ps_strategy(point, segment_type(*prev, *it)); // check if other segments are closer prev = it++; while(it != boost::end(linestring)) { return_type ds = ps_strategy(point, segment_type(*prev, *it)); if (ggl::close_to_zero(ds)) { return return_type(0); } else if (ds < d) { d = ds; } prev = it++; } return d; } }; }} // namespace detail::distance #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename GeometryTag1, typename GeometryTag2, typename G1, typename G2, typename StrategyTag, typename Strategy, bool IsMulti1, bool IsMulti2 > struct distance {}; template struct distance < point_tag, point_tag, P1, P2, strategy_tag_distance_point_point, Strategy, false, false > : detail::distance::point_to_point {}; /// Point-line version 1, where point-point strategy is specified template struct distance < point_tag, linestring_tag, Point, Linestring, strategy_tag_distance_point_point, Strategy, false, false > { static inline typename Strategy::return_type apply(Point const& point, Linestring const& linestring, Strategy const& strategy) { typedef segment::type> segment_type; typedef typename ggl::strategy_distance_segment < typename cs_tag::type, typename cs_tag::type, Point, segment_type >::type ps_strategy_type; return detail::distance::point_to_linestring < Point, Linestring, Strategy, ps_strategy_type >::apply(point, linestring, strategy, ps_strategy_type()); } }; /// Point-line version 2, where point-segment strategy is specified template struct distance < point_tag, linestring_tag, Point, Linestring, strategy_tag_distance_point_segment, Strategy, false, false > { static inline typename Strategy::return_type apply(Point const& point, Linestring const& linestring, Strategy const& strategy) { typedef typename Strategy::point_strategy_type pp_strategy_type; return detail::distance::point_to_linestring < Point, Linestring, pp_strategy_type, Strategy >::apply(point, linestring, pp_strategy_type(), strategy); } }; template struct distance < point_tag, segment_tag, Point, Segment, strategy_tag_distance_point_point, Strategy, false, false > : detail::distance::point_to_segment {}; // Strictly spoken this might be in namespace again template < typename GeometryTag1, typename GeometryTag2, typename G1, typename G2, typename StrategyTag, typename Strategy, bool IsMulti1, bool IsMulti2 > struct distance_reversed { static inline typename Strategy::return_type apply(G1 const& g1, G2 const& g2, Strategy const& strategy) { return distance < GeometryTag2, GeometryTag1, G2, G1, StrategyTag, Strategy, IsMulti2, IsMulti1 >::apply(g2, g1, strategy); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate distance between two geometries with a specified strategy \ingroup distance \tparam Geometry1 first geometry type \tparam Geometry2 second geometry type \tparam S point-point-distance strategy type \param geometry1 first geometry \param geometry2 second geometry \param strategy strategy to calculate distance between two points \return the distance (either a double or a distance_result, (convertable to double)) \note The strategy can be a point-point strategy. In case of distance point-line/point-polygon it may also be a point-segment strategy. \par Example: Example showing distance calculation of two lat long points, using the accurate Vincenty approximation \dontinclude doxygen_examples.cpp \skip example_distance_point_point_strategy \line { \until } */ template inline typename Strategy::return_type distance(Geometry1 const& geometry1, Geometry2 const& geometry2, Strategy const& strategy) { typedef typename boost::remove_const::type ncg1_type; typedef typename boost::remove_const::type ncg2_type; return boost::mpl::if_c < ggl::reverse_dispatch::type::value, dispatch::distance_reversed < typename tag::type, typename tag::type, ncg1_type, ncg2_type, typename strategy_tag::type, Strategy, is_multi::value, is_multi::value >, dispatch::distance < typename tag::type, typename tag::type, ncg1_type, ncg2_type, typename strategy_tag::type, Strategy, is_multi::value, is_multi::value > >::type::apply(geometry1, geometry2, strategy); } /*! \brief Calculate distance between two geometries \ingroup distance \details The default strategy is used, belonging to the corresponding coordinate system of the geometries \tparam G1 first geometry type \tparam G2 second geometry type \param geometry1 first geometry \param geometry2 second geometry \return the distance (either a double or a distance result, convertable to double) */ template inline typename distance_result::type distance( Geometry1 const& geometry1, Geometry2 const& geometry2) { typedef typename point_type::type point1_type; typedef typename point_type::type point2_type; // Define a point-point-distance-strategy // for either the normal case, either the reversed case typedef typename boost::mpl::if_c < ggl::reverse_dispatch::type::value, typename strategy_distance < typename cs_tag::type, typename cs_tag::type, point2_type, point1_type >::type, typename strategy_distance < typename cs_tag::type, typename cs_tag::type, point1_type, point2_type >::type >::type strategy; return distance(geometry1, geometry2, strategy()); } } // namespace ggl #endif // GGL_ALGORITHMS_DISTANCE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/envelope.hpp000066400000000000000000000220441177067165300250770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_ENVELOPE_HPP #define GGL_ALGORITHMS_ENVELOPE_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup envelope envelope calculation \par Source descriptions: - OGC: Envelope (): Geometry - The minimum bounding rectangle (MBR) for this Geometry, returned as a Geometry. The polygon is defined by the corner points of the bounding box [(MINX, MINY), (MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)]. \note Implemented in the Generic Geometry Library: The minimum bounding box, always as a box, having min <= max The envelope algorithm calculates the bounding box, or envelope, of a geometry. There are two versions: - envelope, taking a reference to a box as second parameter - make_envelope, returning a newly constructed box (type as a template parameter in the function call) - either of them has an optional strategy \par Geometries: - POINT: a box with zero area, the maximum and the minimum point of the box are set to the point itself. - LINESTRING, RING or RANGE is the smallest box that contains all points of the specified point sequence. If the linestring is empty, the envelope is the inverse infinite box, that is, the minimum point is very large (max infinite) and the maximum point is very small (min infinite). - POLYGON, the envelope of the outer ring \image html envelope_polygon.png \par Example: Example showing envelope calculation \dontinclude doxygen_examples.cpp \skip example_envelope_linestring \line { \until } */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace envelope { /// Calculate envelope of an n-sphere, circle or sphere (currently only for Cartesian 2D points) template struct envelope_nsphere { static inline void apply(S const& s, B& mbr, Strategy const&) { assert_dimension(); assert_dimension(); typename radius_type::type r = get_radius<0>(s); set(mbr, get<0>(s) - r); set(mbr, get<1>(s) - r); set(mbr, get<0>(s) + r); set(mbr, get<1>(s) + r); } }; /// Calculate envelope of an 2D or 3D point template struct envelope_point { static inline void apply(P const& p, B& mbr, Strategy const&) { // Envelope of a point is an empty box, a box with zero volume, located at the point. // We just use the convert algorithm here ggl::convert(p, mbr); } }; /// Calculate envelope of an 2D or 3D segment template struct envelope_segment { static inline void apply(S const& s, B& mbr, Strategy const&) { ggl::assign_inverse(mbr); ggl::combine(mbr, s.first); ggl::combine(mbr, s.second); } }; /// Version with state iterating through range (also used in multi*) template inline void envelope_range_state(R const& range, Strategy const& strategy, typename Strategy::state_type& state) { typedef typename boost::range_const_iterator::type iterator_type; for (iterator_type it = boost::begin(range); it != boost::end(range); it++) { strategy(*it, state); } } /// Generic range dispatching struct template struct envelope_range { /// Calculate envelope of range using a strategy static inline void apply(R const& range, B& mbr, Strategy const& strategy) { typename Strategy::state_type state(mbr); envelope_range_state(range, strategy, state); } }; }} // namespace detail::envelope #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename Tag1, typename Tag2, typename Geometry, typename Box, typename Strategy > struct envelope {}; template struct envelope : detail::envelope::envelope_point { private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint

) ); BOOST_CONCEPT_ASSERT( (concept::Box) ); }; template struct envelope { /*! \brief Calculate envelope of a box \details The envelope of a box is itself, provided for consistency for consistency, on itself it is not useful. */ static inline void apply(B const& b, B& mbr, Strategy const&) { mbr = b; } private: BOOST_CONCEPT_ASSERT( (concept::Box) ); }; template struct envelope : detail::envelope::envelope_segment {}; template struct envelope : detail::envelope::envelope_nsphere { private: BOOST_CONCEPT_ASSERT( (concept::ConstNsphere) ); BOOST_CONCEPT_ASSERT( (concept::Box) ); }; template struct envelope : detail::envelope::envelope_range { private: BOOST_CONCEPT_ASSERT( (concept::ConstLinestring) ); BOOST_CONCEPT_ASSERT( (concept::Box) ); }; template struct envelope : detail::envelope::envelope_range { private: BOOST_CONCEPT_ASSERT( (concept::ConstRing) ); BOOST_CONCEPT_ASSERT( (concept::Box) ); }; template struct envelope { static inline void apply(P const& poly, B& mbr, Strategy const& strategy) { // For polygon inspecting outer linear_ring is sufficient detail::envelope::envelope_range < typename ring_type

::type, B, Strategy >::apply(exterior_ring(poly), mbr, strategy); } private: BOOST_CONCEPT_ASSERT( (concept::ConstPolygon

) ); BOOST_CONCEPT_ASSERT( (concept::Box) ); }; } // namespace dispatch #endif /*! \brief Calculate envelope of a geometry, using a specified strategy \ingroup envelope \param geometry the geometry \param mbr the box receiving the envelope \param strategy strategy to be used */ template inline void envelope(G const& geometry, B& mbr, S const& strategy) { dispatch::envelope < typename tag::type, typename tag::type, G, B, S >::apply(geometry, mbr, strategy); } /*! \brief Calculate envelope of a geometry \ingroup envelope \param geometry the geometry \param mbr the box receiving the envelope \par Example: Example showing envelope calculation, using point_ll latlong points \dontinclude doxygen_examples.cpp \skip example_envelope_polygon \line { \until } */ template inline void envelope(G const& geometry, B& mbr) { typename strategy_envelope < typename cs_tag::type>::type, typename cs_tag::type>::type, typename point_type::type, B >::type strategy; envelope(geometry, mbr, strategy); } /*! \brief Calculate and return envelope of a geometry \ingroup envelope \param geometry the geometry \param strategy the strategy to be used */ template inline B make_envelope(G const& geometry, S const& strategy) { B box; dispatch::envelope < typename tag::type, typename tag::type, G, B, S >::apply(geometry, box, strategy); return box; } /*! \brief Calculate and return envelope of a geometry \ingroup envelope \param geometry the geometry */ template inline B make_envelope(G const& geometry) { typename strategy_envelope < typename cs_tag::type>::type, typename cs_tag::type>::type, typename point_type::type, B >::type strategy; return make_envelope(geometry, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_ENVELOPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/equals.hpp000066400000000000000000000065361177067165300245640ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_EQUALS_HPP #define GGL_ALGORITHMS_EQUALS_HPP #include #include #include #include #include #include #include #include #include #include /*! \defgroup boolean_relations boolean relationships (equals, disjoint, overlaps, etc) */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace equals { template struct box_box { static inline bool apply(B1 const& box1, B2 const& box2) { if (!math::equals(get(box1), get(box2)) || !math::equals(get(box1), get(box2))) { return false; } return box_box::apply(box1, box2); } }; template struct box_box { static inline bool apply(B1 const& , B2 const& ) { return true; } }; }} // namespace detail::equals #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename GeometryTag, bool IsMulti, typename G1, typename G2, std::size_t DimensionCount > struct equals { }; template struct equals : ggl::detail::not_ < P1, P2, detail::disjoint::point_point > { }; template struct equals : detail::equals::box_box { }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate if two geometries are equals \ingroup boolean_relations \tparam Geometry1 first geometry type \tparam Geometry2 second geometry type \param geometry1 first geometry \param geometry2 second geometry \return true if equals, else false */ template inline bool equals(Geometry1 const& geometry1, Geometry2 const& geometry2) { assert_dimension_equal(); // TODO: assert types equal: // typename tag::type, typename tag::type, // (LATER): NO! a linestring can be spatially equal to a multi_linestring typedef typename boost::remove_const::type ncg1_type; typedef typename boost::remove_const::type ncg2_type; return dispatch::equals < typename tag::type, is_multi::type::value, ncg1_type, ncg2_type, dimension::type::value >::apply(geometry1, geometry2); } } // namespace ggl #endif // GGL_ALGORITHMS_EQUALS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/for_each.hpp000066400000000000000000000165161177067165300250370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_FOR_EACH_HPP #define GGL_ALGORITHMS_FOR_EACH_HPP /*! \defgroup loop loops and for-each functionality There are several algorithms provided which walk through the points or segments of linestrings and polygons. They are called for_each_point, for_each_segment, after the standard library, and \b loop which is more adapted and of which the functor could break out if necessary. Of the for_each algorithms there is a \b const and a non-const version provided. */ #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace for_each { template struct fe_point { static inline F for_each_const_point(P const& p, F f) { f(p); return (f); } static inline F for_each_point(P& p, F f) { f(p); return (f); } }; template struct fe_range { static inline F for_each_const_point(R const& range, F f) { return (std::for_each(boost::begin(range), boost::end(range), f)); } static inline F for_each_point(R& range, F f) { return (std::for_each(boost::begin(range), boost::end(range), f)); } static inline F for_each_const_segment(R const& range, F f) { typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); iterator_type previous = it++; while(it != boost::end(range)) { segment::type> s(*previous, *it); f(s); previous = it++; } return (f); } static inline F for_each_segment(R& range, F f) { typedef typename boost::range_iterator::type iterator_type; iterator_type it = boost::begin(range); iterator_type previous = it++; while(it != boost::end(range)) { segment::type> s(*previous, *it); f(s); previous = it++; } return (f); } }; template struct fe_polygon { static inline F for_each_const_point(P const& poly, F f) { typedef typename ring_type

::type ring_type; typedef typename boost::range_const_iterator < typename interior_type

::type >::type iterator_type; f = fe_range::for_each_const_point(exterior_ring(poly), f); for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); it++) { f = fe_range::for_each_const_point(*it, f); } return (f); } static inline F for_each_point(P& poly, F f) { typedef typename ring_type

::type ring_type; typedef typename boost::range_iterator < typename interior_type

::type >::type iterator_type; f = fe_range::for_each_point(exterior_ring(poly), f); for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); it++) { f = fe_range::for_each_point(*it, f); } return (f); } static inline F for_each_const_segment(P const& poly, F f) { typedef typename ring_type

::type ring_type; typedef typename boost::range_const_iterator < typename interior_type

::type >::type iterator_type; f = fe_range::for_each_const_segment(exterior_ring(poly), f); for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); it++) { f = fe_range::for_each_const_segment(*it, f); } return (f); } static inline F for_each_segment(P& poly, F f) { typedef typename ring_type

::type ring_type; typedef typename boost::range_iterator < typename interior_type

::type >::type iterator_type; f = fe_range::for_each_segment(exterior_ring(poly), f); for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); it++) { f = fe_range::for_each_segment(*it, f); } return (f); } }; }} // namespace detail::for_each #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct for_each {}; template struct for_each : detail::for_each::fe_point {}; template struct for_each : detail::for_each::fe_range {}; template struct for_each : detail::for_each::fe_range {}; template struct for_each : detail::for_each::fe_polygon {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calls functor for geometry \ingroup loop \param geometry geometry to loop through \param f functor to use \details Calls the functor the specified \b const geometry */ template inline F for_each_point(G const& geometry, F f) { typedef typename dispatch::for_each < typename tag::type, G, F >::for_each_const_point for_each_type; return for_each_type(geometry, f); } /*! \brief Calls functor for geometry \ingroup loop \param geometry geometry to loop through \param f functor to use \details Calls the functor for the specified geometry */ template inline F for_each_point(G& geometry, F f) { return (dispatch::for_each::type, G, F>::for_each_point(geometry, f)); } /*! \brief Calls functor for segments on linestrings, rings, polygons, ... \ingroup loop \param geometry geometry to loop through \param f functor to use \details Calls the functor all \b const segments of the specified \b const geometry */ template inline F for_each_segment(const G& geometry, F f) { return (dispatch::for_each::type, G, F>::for_each_const_segment(geometry, f)); } /*! \brief Calls functor for segments on linestrings, rings, polygons, ... \ingroup loop \param geometry geometry to loop through \param f functor to use \details Calls the functor all segments of the specified geometry */ template inline F for_each_segment(G& geometry, F f) { return (dispatch::for_each::type, G, F>::for_each_segment(geometry, f)); } } // namespace ggl #endif // GGL_ALGORITHMS_FOR_EACH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/get_section.hpp000066400000000000000000000055441177067165300255730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_GET_SECTION_HPP #define GGL_ALGORITHMS_GET_SECTION_HPP #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct get_section { typedef typename ggl::point_const_iterator::type iterator_type; static inline void apply(Geometry const& geometry, Section const& section, iterator_type& begin, iterator_type& end) { begin = boost::begin(geometry) + section.begin_index; end = boost::begin(geometry) + section.end_index + 1; } }; template struct get_section { typedef typename ggl::point_const_iterator::type iterator_type; static inline void apply(Polygon const& polygon, Section const& section, iterator_type& begin, iterator_type& end) { typedef typename ggl::ring_type::type ring_type; ring_type const& ring = section.ring_index < 0 ? ggl::exterior_ring(polygon) : ggl::interior_rings(polygon)[section.ring_index]; begin = boost::begin(ring) + section.begin_index; end = boost::begin(ring) + section.end_index + 1; } }; } // namespace dispatch #endif /*! \brief Get iterators for a specified section \ingroup sectionalize \tparam Geometry type \tparam Section type of section to get from \param geometry geometry which might be located in the neighborhood \param section structure with section \param begin begin-iterator (const iterator over points of section) \param end end-iterator (const iterator over points of section) \todo Create non-const version as well */ template inline void get_section(Geometry const& geometry, Section const& section, typename point_const_iterator::type& begin, typename point_const_iterator::type& end) { dispatch::get_section < typename tag::type, Geometry, Section >::apply(geometry, section, begin, end); } } // namespace ggl #endif // GGL_ALGORITHMS_GET_SECTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/intermediate.hpp000066400000000000000000000066131177067165300257400ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_INTERMEDIATE_HPP #define GGL_ALGORITHMS_INTERMEDIATE_HPP #include #include #include #include #include #include #include /*! \defgroup intermediate intermediate calculation The intermediate algorithm calculate points IN BETWEEN of other points \par Purpose: - Remove corners in rectangular lines / polygons. Calling them several times will result in smooth lines - Creating 3D models */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intermediate { template struct calculate_coordinate { static inline void apply(Src const& p1, Src const& p2, Dst& p) { ggl::set(p, (ggl::get(p1) + ggl::get(p2)) / 2.0); calculate_coordinate::apply(p1, p2, p); } }; template struct calculate_coordinate { static inline void apply(Src const&, Src const&, Dst&) { } }; template struct range_intermediate { static inline void apply(R const& range, bool start_and_end, Iterator out) { typedef typename point_type::type point_type; typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); if (start_and_end) { (*out++) = *it; } iterator_type prev = it++; for (; it != boost::end(range); prev = it++) { point_type p; calculate_coordinate < point_type, point_type, 0, dimension::type::value >::apply(*prev, *it, p); *(out++) = p; } if (start_and_end) { (*out++) = *prev; } } }; }} // namespace detail::intermediate #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct intermediate {}; template struct intermediate : detail::intermediate::range_intermediate {}; template struct intermediate : detail::intermediate::range_intermediate {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate intermediate of a geometry \ingroup intermediate */ template inline void intermediate(const G& geometry, bool start_and_end, Iterator out) { dispatch::intermediate::type, G, Iterator>::apply(geometry, start_and_end, out); } } // namespace ggl #endif // GGL_ALGORITHMS_INTERMEDIATE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/intersection.hpp000066400000000000000000000326111177067165300257710ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_INTERSECTION_HPP #define GGL_ALGORITHMS_INTERSECTION_HPP #include #include #include #include #include #include #include #include #include #include /*! \defgroup overlay overlay operations (intersection, union, clipping) \details The intersection of two geometries A and B is the geometry containing all points of A also belonging to B, but no other elements. The so-called clip is an intersection of a geometry with a box. \par Source description: - OGC: Returns a geometric object that represents the Point set intersection of this geometric object with another Geometry. \see http://en.wikipedia.org/wiki/Intersection_(set_theory) \note Any intersection can result in no geometry at all \note Used strategies still have to be modelled. Working only for cartesian \par Geometries: The intersection result is painted with a red outline. - clip: POLYGON + BOX -> output iterator of polygons \image html clip_polygon.png - clip: LINESTRING + BOX -> output iterator of linestrings \image html clip_linestring.png \note There are some difficulties to model an intersection in the template world. The intersection of two segments can result into nothing, into a point, into another segment. At compiletime the result type is not known. An output iterator iterating points is appropriate here. \image html clip_segment_segment.png An intersection of two linestrings can result into nothing, one or more points, one or more segments or one or more linestrings. So an output iterator will NOT do here. So the output might be changed into a unified algorithm where the output is a multi-geometry. For the current clip-only operations the output iterator will do. \par Example: Example showing clipping of linestring with box \dontinclude doxygen_examples.cpp \skip example_intersection_linestring1 \line { \until } \par Example: Example showing clipping of vector, outputting vectors, with box \dontinclude doxygen_examples.cpp \skip example_intersection_linestring2 \line { \until } \par Example: Example showing clipping of polygon with box \dontinclude doxygen_examples.cpp \skip example_intersection_polygon1 \line { \until } */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { template < typename Polygon1, typename Polygon2, typename OutputIterator, typename GeometryOut > struct intersection_polygon_polygon { static inline OutputIterator apply(Polygon1 const& polygon1, Polygon2 const& polygon2, OutputIterator out) { typedef detail::intersection::intersection_point < typename ggl::point_type::type > ip_type; typedef std::deque ips_container; typedef typename ggl::ring_type::type ring_type; ips_container ips; bool trivial = ggl::get_intersection_points(polygon1, polygon2, ips); if (ips.size() <= 0) { // If there are no IP-s, check if one point is in other polygon // assume both polygons having points if (ggl::within(ggl::exterior_ring(polygon1).front(), polygon2)) { // Assume same type (output = input) // TODO: solve this (we go to specialize again...) *out = polygon1; out++; } else if (ggl::within(ggl::exterior_ring(polygon2).front(), polygon1)) { *out = polygon2; out++; } } else { if (! trivial) { ggl::merge_intersection_points(ips); ggl::adapt_turns(ips); } ggl::enrich_intersection_points(ips, trivial); std::vector v; ggl::traverse ( polygon1, polygon2, -1, ips, trivial, std::back_inserter(v) ); // TODO: // assemble rings / inner rings / to polygons for (typename std::vector::const_iterator it = v.begin(); it != v.end(); ++it) { // How can we avoid the double copy here! It is really bad! // We have to create a polygon, then copy it to the output iterator. // Having an output-vector would have been better: append it to the vector! // So output iterators are not that good. GeometryOut poly; poly.outer() = *it; *out = poly; out++; } } return out; } }; template < typename Polygon, typename Box, typename OutputIterator, typename GeometryOut > struct intersection_polygon_box { static inline OutputIterator apply(Polygon const& polygon, Box const& box, OutputIterator out) { typedef typename ggl::point_type::type point_type; typedef detail::intersection::intersection_point ip_type; typedef std::deque ips_container; typedef typename ggl::ring_type::type ring_type; ips_container ips; bool trivial = ggl::get_intersection_points(polygon, box, ips); // TODO: share this all with polygon_polygon using an "assemble" function! // It is only different in the 'within' calls, can be sorted out with specialization if (ips.size() <= 0) { // If there are no IP-s, check if one point is in other polygon // assume both polygons having points if (ggl::within(ggl::exterior_ring(polygon).front(), box)) { // Assume same type (output = input) // TODO: solve this (we go to specialize again...) *out = polygon; out++; } else { typename ggl::point_type::type p; ggl::set<0>(p, ggl::get(box)); ggl::set<1>(p, ggl::get(box)); if (ggl::within(p, polygon)) { GeometryOut boxpoly; ggl::convert(box, boxpoly); *out = boxpoly; out++; } } } else { if (trivial) { ggl::merge_intersection_points(ips); } ggl::enrich_intersection_points(ips, trivial); std::vector v; ggl::traverse ( polygon, box, -1, ips, trivial, std::back_inserter(v) ); // TODO: // assemble rings / inner rings / to polygons for (typename std::vector::const_iterator it = v.begin(); it != v.end(); ++it) { // How can we avoid the double copy here! It is really bad! // We have to create a polygon, then copy it to the output iterator. // Having an output-vector would have been better: append it to the vector! // So output iterators are not that good. GeometryOut poly; poly.outer() = *it; *out = poly; out++; } } return out; } }; }} // namespace detail::intersection #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename Tag1, typename Tag2, typename Tag3, typename G1, typename G2, typename OutputIterator, typename GeometryOut > struct intersection {}; template < typename Segment1, typename Segment2, typename OutputIterator, typename GeometryOut > struct intersection < segment_tag, segment_tag, point_tag, Segment1, Segment2, OutputIterator, GeometryOut > { static inline OutputIterator apply(Segment1 const& segment1, Segment2 const& segment2, OutputIterator out) { typedef typename point_type::type point_type; // Get the intersection point (or two points) segment_intersection_points is = strategy::intersection::relate_cartesian_segments < policies::relate::segments_intersection_points < Segment1, Segment2, segment_intersection_points > >::relate(segment1, segment2); for (int i = 0; i < is.count; i++) { GeometryOut p; ggl::copy_coordinates(is.intersections[i], p); *out = p; out++; } return out; } }; template < typename Linestring, typename Box, typename OutputIterator, typename GeometryOut > struct intersection < linestring_tag, box_tag, linestring_tag, Linestring, Box, OutputIterator, GeometryOut > { static inline OutputIterator apply(Linestring const& linestring, Box const& box, OutputIterator out) { typedef typename point_type::type point_type; strategy::intersection::liang_barsky strategy; return detail::intersection::clip_linestring_with_box(box, linestring, out, strategy); } }; template < typename Polygon1, typename Polygon2, typename OutputIterator, typename GeometryOut > struct intersection < polygon_tag, polygon_tag, polygon_tag, Polygon1, Polygon2, OutputIterator, GeometryOut > : detail::intersection::intersection_polygon_polygon {}; template < typename Polygon, typename Box, typename OutputIterator, typename GeometryOut > struct intersection < polygon_tag, box_tag, polygon_tag, Polygon, Box, OutputIterator, GeometryOut > : detail::intersection::intersection_polygon_box {}; template < typename GeometryTag1, typename GeometryTag2, typename GeometryTag3, typename G1, typename G2, typename OutputIterator, typename GeometryOut > struct intersection_reversed { static inline OutputIterator apply(G1 const& g1, G2 const& g2, OutputIterator out) { return intersection < GeometryTag2, GeometryTag1, GeometryTag3, G2, G1, OutputIterator, GeometryOut >::apply(g2, g1, out); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Intersects two geometries which each other \ingroup overlay \details A sequence of points is intersected (clipped) by the specified box and the resulting linestring, or pieces of linestrings, are sent to the specified output operator. \tparam GeometryOut output geometry type, must be specified \tparam Geometry1 first geometry type \tparam Geometry2 second geometry type \tparam OutputIterator output iterator \param geometry1 first geometry (currently only a BOX) \param geometry2 second geometry (range, linestring, polygon) \param out the output iterator, outputting linestrings or polygons \return the output iterator \note For linestrings: the default clipping strategy, Liang-Barsky, is used. The algorithm is currently only implemented for 2D xy points. It could be generic for most ll cases, but not across the 180 meridian so that issue is still on the todo-list. */ template < typename GeometryOut, typename Geometry1, typename Geometry2, typename OutputIterator > inline OutputIterator intersection(Geometry1 const& geometry1, Geometry2 const& geometry2, OutputIterator out) { return boost::mpl::if_c < reverse_dispatch::type::value, dispatch::intersection_reversed < typename tag::type, typename tag::type, typename tag::type, Geometry1, Geometry2, OutputIterator, GeometryOut >, dispatch::intersection < typename tag::type, typename tag::type, typename tag::type, Geometry1, Geometry2, OutputIterator, GeometryOut > >::type::apply(geometry1, geometry2, out); } } // ggl #endif //GGL_ALGORITHMS_INTERSECTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/intersection_linestring.hpp000066400000000000000000000164601177067165300302330ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_INTERSECTION_LINESTRING_HPP #define GGL_ALGORITHMS_INTERSECTION_LINESTRING_HPP #include #include #include #include #include #include #include namespace ggl { namespace strategy { namespace intersection { /*! \brief Strategy: line clipping algorithm after Liang Barsky \ingroup overlay \details The Liang-Barsky line clipping algorithm clips a line with a clipping box. It is slightly adapted in the sense that it returns which points are clipped \tparam B input box type of clipping box \tparam P input/output point-type of segments to be clipped \note The algorithm is currently only implemented for 2D Cartesian points \author Barend Gehrels, and the following recourses - A tutorial: http://www.skytopia.com/project/articles/compsci/clipping.html - a German applet (link broken): http://ls7-www.cs.uni-dortmund.de/students/projectgroups/acit/lineclip.shtml */ template class liang_barsky { private: typedef ggl::segment

segment_type; inline bool check_edge(double const& p, double const& q, double& t1, double& t2) const { bool visible = true; if(p < 0) { // TODO: Move r definition one scope level up to reuse --mloskot double const r = q / p; if (r > t2) visible = false; else if (r > t1) t1 = r; } else if(p > 0) { double const r = q / p; if (r < t1) visible = false; else if (r < t2) t2 = r; } else { if (q < 0) visible = false; } return visible; } public: bool clip_segment(B const& b, segment_type& s, bool& sp1_clipped, bool& sp2_clipped) const { typedef typename select_coordinate_type::type coordinate_type; double t1 = 0; double t2 = 1; coordinate_type const dx = get<1, 0>(s) - get<0, 0>(s); coordinate_type const dy = get<1, 1>(s) - get<0, 1>(s); coordinate_type const p1 = -dx; coordinate_type const p2 = dx; coordinate_type const p3 = -dy; coordinate_type const p4 = dy; coordinate_type const q1 = get<0, 0>(s) - get(b); coordinate_type const q2 = get(b) - get<0, 0>(s); coordinate_type const q3 = get<0, 1>(s) - get(b); coordinate_type const q4 = get(b) - get<0, 1>(s); if (check_edge(p1, q1, t1, t2) // left && check_edge(p2, q2, t1, t2) // right && check_edge(p3, q3, t1, t2) // bottom && check_edge(p4, q4, t1, t2)) // top { sp1_clipped = t1 > 0; sp2_clipped = t2 < 1; // TODO: maybe round coordinates in case of integer? define some round_traits<> or so? // Take boost-round of Fernando if (sp2_clipped) { set<1, 0>(s, get<0, 0>(s) + t2 * dx); set<1, 1>(s, get<0, 1>(s) + t2 * dy); } if(sp1_clipped) { set<0, 0>(s, get<0, 0>(s) + t1 * dx); set<0, 1>(s, get<0, 1>(s) + t1 * dy); } return true; } return false; } template inline void add(L& line_out, OutputIterator out) const { if (!boost::empty(line_out)) { *out = line_out; ++out; ggl::clear(line_out); } } }; }} // namespace strategy::intersection #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { /*! \brief Clips a linestring with a box \details A linestring is intersected (clipped) by the specified box and the resulting linestring, or pieces of linestrings, are sent to the specified output operator. \tparam OutputLinestring type of the output linestrings \tparam OutputIterator an output iterator which outputs linestrings \tparam Linestring linestring-type, for example a vector of points, matching the output-iterator type, the points should also match the input-iterator type \tparam Box box type \tparam Strategy strategy, a clipping strategy which should implement the methods "clip_segment" and "add" */ template < typename OutputLinestring, typename OutputIterator, typename Linestring, typename Box, typename Strategy > OutputIterator clip_linestring_with_box(Box const& b, Linestring const& linestring, OutputIterator out, Strategy const& strategy) { if (boost::begin(linestring) == boost::end(linestring)) { return out; } typedef typename point_type::type point_type; OutputLinestring line_out; typedef typename boost::range_const_iterator::type iterator_type; iterator_type vertex = boost::begin(linestring); for(iterator_type previous = vertex++; vertex != boost::end(linestring); previous = vertex++) { point_type p1, p2; copy_coordinates(*previous, p1); copy_coordinates(*vertex, p2); // Clip the segment. Five situations: // 1. Segment is invisible, finish line if any (shouldn't occur) // 2. Segment is completely visible. Add (p1)-p2 to line // 3. Point 1 is invisible (clipped), point 2 is visible. Start new line from p1-p2... // 4. Point 1 is visible, point 2 is invisible (clipped). End the line with ...p2 // 5. Point 1 and point 2 are both invisible (clipped). Start/finish an independant line p1-p2 // // This results in: // a. if p1 is clipped, start new line // b. if segment is partly or completely visible, add the segment // c. if p2 is clipped, end the line bool c1 = false; bool c2 = false; segment s(p1, p2); if (!strategy.clip_segment(b, s, c1, c2)) { strategy.add(line_out, out); } else { // a. If necessary, finish the line and add a start a new one if (c1) { strategy.add(line_out, out); } // b. Add p1 only if it is the first point, then add p2 if (boost::empty(line_out)) { ggl::append(line_out, p1); } ggl::append(line_out, p2); // c. If c2 is clipped, finish the line if (c2) { strategy.add(line_out, out); } } } // Add last part strategy.add(line_out, out); return out; } }} // namespace detail::intersection #endif // DOXYGEN_NO_DETAIL } // namespace ggl #endif // GGL_ALGORITHMS_INTERSECTION_LINESTRING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/intersects.hpp000066400000000000000000000035431177067165300254500ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_INTERSECTS_HPP #define GGL_ALGORITHMS_INTERSECTS_HPP #include #include #include #include #include #include #include #include #include namespace ggl { /*! \brief Determine if there is at least one intersection (crossing or self-tangency) \note This function can be called for one geometry (self-intersection) and also for two geometries (intersection) \ingroup overlay \tparam Geometry geometry type \param geometry geometry \return TRUE if there are intersections, else FALSE */ template inline bool intersects(Geometry const& geometry) { typedef typename boost::remove_const::type ncg_type; typedef std::vector::type> > ip_vector; ip_vector ips; dispatch::self_intersection_points < typename tag::type, is_multi::type::value, ncg_type, ip_vector >::apply(geometry, true, ips); return ips.size() > 0; } } // ggl #endif //GGL_ALGORITHMS_INTERSECTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/labelinfo.hpp000066400000000000000000000056361177067165300252250ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_LABELINFO_HPP #define GGL_ALGORITHMS_LABELINFO_HPP // Algorithms to generate appropriate labelpoint(s) for all geometries #include #include #include namespace ggl { // For a polygon the broadest line is probably the best, so two points (left/right) // For a line either the centerpoint, of the longest line, or the most horizontal line, // or more than two points to smooth the text around some points. So one/two or more points. // For a point just return the point. // The algorithms output to an output iterator // They have a label_option to influence behaviour. Not yet implemented. // Is there a better approach? Class? enum label_option { label_default, // line label_longest, label_horizontal, // polygon label_centroid, label_broadest }; template inline BOOST_CONCEPT_REQUIRES(((Point

)) (void)) label_info_point(const P& point, label_option option, M& mp) { mp.resize(1); get<0>(mp.front()) = get<0>(point); get<1>(mp.front()) = get<1>(point); } template inline void label_info_polygon(const Y& poly, label_option option, M& mp) { mp.resize(0); mp.push_back(centroid_polygon::type>(poly)); } template inline void label_info_box(const B& box, label_option option, M& mp) { mp.resize(0); mp.push_back(centroid_box(box)); } //------------------------------------------------------------------------------------------------------- // General "label_info" versions //------------------------------------------------------------------------------------------------------- template inline BOOST_CONCEPT_REQUIRES(((ConstPoint

)) (void)) label_info(const P& p, label_option option, M& mp) { label_info_point(p, option, mp); } template inline BOOST_CONCEPT_REQUIRES(((ConstPoint

)) (void)) label_info(const box

& b, label_option option, M& mp) { label_info_box(b, option, mp); } template < typename P, template class PointList, template class RingList, template class PointAlloc, template class RingAlloc, typename M > inline BOOST_CONCEPT_REQUIRES(((ConstPoint

)) (void)) label_info(const polygon& poly, label_option option, M& mp) { label_info_polygon(poly, option, mp); } } // namespace ggl #endif // GGL_ALGORITHMS_LABELINFO_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/length.hpp000066400000000000000000000123531177067165300245450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_LENGTH_HPP #define GGL_ALGORITHMS_LENGTH_HPP #include #include #include #include #include #include #include #include #include /*! \defgroup length length calculation The length algorithm is implemented for the linestring and the multi_linestring geometry and results in the length of the linestring. If the points of a linestring have coordinates expressed in kilometers, the length of the line is expressed in kilometers as well. \par Example: Example showing length calculation \dontinclude doxygen_examples.cpp \skip example_length_linestring_iterators1 \line { \until } */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace length { template struct segment_length { static inline double apply(Segment const& segment, Strategy const& strategy) { // BSG 10 APR 2009 // TODO: the segment concept has to be such that it is easy to return a point from it. // Now it only accesses per coordinate return strategy(segment.first, segment.second); } }; /*! \brief Internal, calculates length of a linestring using iterator pairs and specified strategy \note for_each could be used here, now that point_type is changed by boost range iterator */ template struct range_length { static inline double apply(Range const& range, Strategy const& strategy) { typedef typename ggl::coordinate_type::type coordinate_type; // Because result is square-rooted, for integer, the cast should // go to double and NOT to T typedef typename boost::mpl::if_c < boost::is_integral::type::value, double, coordinate_type >::type calculation_type; calculation_type sum = 0.0; typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); if (it != boost::end(range)) { iterator_type previous = it++; while(it != boost::end(range)) { // Add point-point distance using the return type belonging to strategy sum += strategy(*previous, *it); previous = it++; } } return sum; } }; }} // namespace detail::length #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct length : detail::calculate_null {}; template struct length : detail::length::range_length {}; // RING: length is currently 0.0 but it might be argued that it is the "perimeter" template struct length : detail::length::segment_length {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate length of a geometry \ingroup length \details The function length returns the length of a geometry, using the default distance-calculation-strategy \param geometry the geometry, being a ggl::linestring, vector, iterator pair, or any other boost compatible range \return the length Example showing length calculation on a vector \dontinclude doxygen_examples.cpp \skip example_length_linestring_iterators2 \line { \until } */ template inline double length(const G& geometry) { typedef typename point_type::type point_type; typedef typename cs_tag::type cs_tag; typedef typename strategy_distance < cs_tag, cs_tag, point_type, point_type >::type strategy_type; return dispatch::length < typename tag::type, G, strategy_type >::apply(geometry, strategy_type()); } /*! \brief Calculate length of a geometry \ingroup length \details The function length returns the length of a geometry, using specified strategy \param geometry the geometry, being a ggl::linestring, vector, iterator pair, or any other boost compatible range \param strategy strategy to be used for distance calculations. \return the length \par Example: Example showing length calculation using iterators and the Vincenty strategy \dontinclude doxygen_examples.cpp \skip example_length_linestring_iterators3 \line { \until } */ template inline double length(G const& geometry, S const& strategy) { return dispatch::length::type, G, S>::apply(geometry, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_LENGTH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/make.hpp000066400000000000000000000057001177067165300241770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_MAKE_HPP #define GGL_ALGORITHMS_MAKE_HPP #include namespace ggl { /*! \brief Make a geometry \ingroup access \details the Generic Geometry Library uses concepts for all its geometries. Therefore it does not rely on constructors. The "make" functions are object generators creating geometries. There are overloads with two, three, four or six values, which are implemented depending on the geometry specified. \tparam G the geometry type \tparam T the coordinate type \return the geometry */ template inline G make(T const& c1, T const& c2) { G geometry; dispatch::assign < typename tag::type, G, ggl::dimension::type::value >::apply(geometry, c1, c2); return geometry; } /*! \brief Make a geometry \ingroup access \return a 3D point, a circle */ template inline G make(T const& c1, T const& c2, T const& c3) { G geometry; dispatch::assign < typename tag::type, G, ggl::dimension::type::value >::apply(geometry, c1, c2, c3); return geometry; } template inline G make(T const& c1, T const& c2, T const& c3, T const& c4) { G geometry; dispatch::assign < typename tag::type, G, ggl::dimension::type::value >::apply(geometry, c1, c2, c3, c4); return geometry; } template inline G make(R const& range) { G geometry; append(geometry, range); return geometry; } /*! \brief Create a box with inverse infinite coordinates \ingroup access \details The make_inverse function initialize a 2D or 3D box with large coordinates, the min corner is very large, the max corner is very small \tparam G the geometry type \return the box */ template inline G make_inverse() { G geometry; dispatch::assign_inverse < typename tag::type, G >::apply(geometry); return geometry; } /*! \brief Create a geometry with "zero" coordinates \ingroup access \details The make_zero function initializes a 2D or 3D point or box with coordinates of zero \tparam G the geometry type \return the geometry */ template inline G make_zero() { G geometry; dispatch::assign_zero < typename tag::type, G >::apply(geometry); return geometry; } } // namespace ggl #endif // GGL_ALGORITHMS_MAKE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/num_points.hpp000066400000000000000000000064671177067165300254700ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_NUM_POINTS_HPP #define GGL_ALGORITHMS_NUM_POINTS_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace num_points { template struct range_count { static inline std::size_t apply(Range const& range) { return boost::size(range); } }; template struct other_count { static inline std::size_t apply(Geometry const& geometry) { return D; } }; template struct polygon_count { static inline std::size_t apply(Polygon const& poly) { std::size_t n = boost::size(exterior_ring(poly)); typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator; for (iterator it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { n += boost::size(*it); } return n; } }; }} // namespace detail::num_points #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct num_points { }; template struct num_points : detail::num_points::range_count { }; template struct num_points : detail::num_points::other_count { }; template struct num_points : detail::num_points::other_count { }; template struct num_points : detail::num_points::other_count { }; template struct num_points : detail::num_points::other_count { }; template struct num_points : detail::num_points::polygon_count { }; } // namespace dispatch #endif /*! \brief get number of points \ingroup access \tparam Geometry geometry type \param geometry the geometry to get number of points from \return number of points \note For linestrings/rings also boost::size or .size() could be used, however, for polygons this is less obvious. So this function is provided. Besides that it is described by OGC (numPoints) */ template inline std::size_t num_points(Geometry const& geometry) { typedef typename boost::remove_const::type ncg_type; return dispatch::num_points < typename tag::type, is_linear::value, ncg_type >::apply(geometry); } } #endif // GGL_ALGORITHMS_NUM_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlaps.hpp000066400000000000000000000031751177067165300251210ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_OVERLAPS_HPP #define GGL_ALGORITHMS_OVERLAPS_HPP #include namespace ggl { /*! \brief Determines overlap between two geometries \details parameters are now boxes but in the future will be geometries \ingroup boolean_relations \return true if there is overlap \par Source descriptions: - Egenhofer: Two objects overlap if they have common interior faces and the bounding faces have common parts with the opposite interior faces. \note Implemented in scratch the Generic Geometry library. Will be reworked internally to support more geometries but function call will stay as it is now. \see http://docs.codehaus.org/display/GEOTDOC/02+Geometry+Relationships#02GeometryRelationships-Overlaps where is stated that "inside" is not an "overlap", this is probably true and should then be implemented as such. */ template inline bool overlaps(const B& b1, const B& b2) { return !( get(b1) <= get(b2) || get(b1) >= get(b2) || get(b1) <= get(b2) || get(b1) >= get(b2) ); } } // namespace ggl #endif // GGL_ALGORITHMS_OVERLAPS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/000077500000000000000000000000001177067165300242305ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/adapt_turns.hpp000066400000000000000000000411051177067165300272660ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPT_TURNS_HPP #define GGL_ADAPT_TURNS_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { // TEMP: another COPY of side // TODO: solve this inside SIDE!!! template inline int the_side(P1 const& p1, P2 const& p2, P const& p) { typedef typename select_coordinate_type::type T; T dx = get<0>(p2) - get<0>(p1); T dy = get<1>(p2) - get<1>(p1); T dpx = get<0>(p) - get<0>(p1); T dpy = get<1>(p) - get<1>(p1); T product = dx * dpy - dy * dpx; return product > 0 ? 1 : product < 0 ? -1 : 0; } template inline void join_adapt(T& info, int direction) { info.first->direction = direction; info.second->direction = direction; } template inline void both_same(T const& pi, T & pk, T const& qu, T& qw, int dir_p, int dir_q, int direction) { // Comments are for "both Left" if (dir_q == direction) // If (Qw left-of Qu) { if (dir_p == -direction) // if (Pk right-of Pi) { // make Pk Right, Qw Left join_adapt(pk, -direction); join_adapt(qw, direction); } else if (pk.first->direction == -direction) // else if (Pk right-of Qu) { // make both Right join_adapt(pk, -direction); join_adapt(qw, -direction); } } else { if (dir_p == -direction // if (Pk right-of Pi || pk.first->direction == direction) // || Pk left-of Qu) { // make both Left join_adapt(pk, direction); join_adapt(qw, direction); } } } template inline void crossing(T const& pi, T & pk, T const& qu, T& qw, int dir_p, int dir_q, int direction) { if (dir_p == direction) // If (Pk left-of Pi) { if (pk.first->direction == -direction) // if (Pk right-of Qu) { // make both Right join_adapt(pk, -direction); join_adapt(qw, -direction); } else { // make Pk Left, Qw Right join_adapt(pk, direction); join_adapt(qw, -direction); } } } template inline void collinear(T const& pi, T & pk, T const& qu, T& qw, int dir_p, int dir_q, int direction) { if (dir_p == direction // If (Pk left-of Pi && dir_q == direction // && Qw left-of Qu && pk.first->direction == -direction) // && Pk right-of Qu { // make both Right join_adapt(pk, -direction); join_adapt(qw, -direction); } else if (dir_p == -direction // If (Pk right-of Pi && dir_q == -direction) // && Qw right-of Qu { // make both Left join_adapt(pk, direction); join_adapt(qw, direction); } } template inline void assign_pq(T const& info, P& p, P& q) { if (info.seg_id.source_index == 0) { if (info.arrival == 1) { p.first = info.other_point; } else if (info.arrival == -1) { p.second = info.other_point; } } else { if (info.arrival == 1) { q.first = info.other_point; } else if (info.arrival == -1) { q.second = info.other_point; } } } template inline void touch_in_the_middle(Info& info, Point const& point) { typedef typename boost::range_iterator::type iterator; // Determine which is Q, and assign points iterator qu, qw, p; int count = 0; // Find out which one is arriving/departing from the middle for (iterator it = boost::begin(info); it != boost::end(info); ++it) { // One arrives AND departs in the middle of the other. if(it->how == 'm' && it->arrival == 1) { qu = it; count |= 1; } else if(it->how == 's' && it->arrival == -1) { qw = it; count |= 2; } else if (it->how == 's') // or m, does not really matter { p = it; count |= 4; } } // Adapt it if (count == 7 && qu->direction == qw->direction && qu->seg_id.source_index == qw->seg_id.source_index) { int dir_q = the_side(qu->other_point, point, qw->other_point); #ifdef GGL_DEBUG_INTERSECTION std::cout << "Both " << (qu->direction == 1 ? "Left" : "Right") << ", Turn " << (dir_q == 1 ? "Left" : dir_q == -1 ? "Right" : "?") << std::endl; #endif // Let P also be starting p->arrival = -1; // This is also symmetric. See slides: // Qu left-of P && Qw left-of P if (qu->direction == 1 && dir_q == -1) { // make both Left p->direction = 1; qw->direction = 1; } // else, symmetric version else if (qu->direction == -1 && dir_q == 1) { p->direction = -1; qw->direction = -1; } } } template inline void arrive_in_the_middle(Info& info) { typedef typename boost::range_iterator::type iterator; // Find out which one is NOT arriving in the middle, // and the direction of the one arriving in the middle int departing = -1; int direction = 0; for (iterator it = boost::begin(info); it != boost::end(info); ++it) { if(it->how == 'm') { switch(it->arrival) { case 1 : direction = it->direction; break; default : departing = it->seg_id.source_index; } } } // Make this the departing one, following collinear in opposite segment, // same direction as established above for (iterator it = boost::begin(info); it != boost::end(info); ++it) { if (it->how == 'c' && it->seg_id.source_index == departing) { it->arrival = -1; it->direction = direction; } } } template inline void start_in_the_middle(Info& info, bool opposite) { typedef typename boost::range_iterator::type iterator; for (iterator it = boost::begin(info); it != boost::end(info); ++it) { if(it->how == 's') { if (! opposite) { // Not opposite, all "start" traversals can also be made "departing" it->arrival = -1; } else if (opposite && it->arrival == 0) { // Prevent the collinear the "start" from "departing", // if it is in opposite direction it->arrival = 1; it->direction = 0; it->flagged = true; // might be deleted } } } } template inline void adapt_turns(V& intersection_points) { typedef typename boost::range_iterator::type iterator_type; typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_type info_type; typedef typename boost::range_value::type::traversal_vector vector_type; typedef typename boost::range_iterator::type tvit_type; for (iterator_type it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it) { if (! it->trivial) { if (boost::size(it->info) == 4) { /* can be ARRIVE/START from the middle (#11) src 0 seg 1 (// 1.0) how m[A R] p // qu src 0 seg 1 (// 1.1) how s[D L] p // qw src 1 seg 0 (// 0.1) how m[A R] qu / p src 1 seg 1 (// 0.1) how s[D R] qw / p or can be ARRIVE at COLLINEARITY (#8, #13) src 0 seg 1 (// 1.1) how m[A L] p // qu src 0 seg 1 (// 1.2) how c[- -] p // qw src 1 seg 1 (// 0.1) how m[A L] qu // p src 1 seg 2 (// 0.1) how c[- -] qw // p or can be START from COLLINEARITY (#8, #13) src 0 seg 1 (// 1.2) how c[- -] p // qu src 0 seg 1 (// 1.0) how s[D R] p // qw src 1 seg 2 (// 0.1) how c[- -] qu // p src 1 seg 0 (// 0.1) how s[D L] qw // p */ // First detect the case and if it is opposite int count_m = 0, count_s = 0, count_c = 0; bool opposite = false; for (tvit_type tvit = boost::begin(it->info); tvit != boost::end(it->info); ++tvit) { switch(tvit->how) { case 'm' : count_m++; break; case 's' : count_s++; break; case 'c' : count_c++; break; } if (tvit->opposite) { opposite = true; } } if (count_m == 2 && count_s == 2) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "Touching the middle " << std::endl; #endif touch_in_the_middle(it->info, it->point); } else if (count_m == 2 && count_c == 2 && opposite) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "Arriving the middle/collinearity, opposite" << std::endl; #endif arrive_in_the_middle(it->info); } else if (count_s == 2 && count_c == 2) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "Starting from middle/collinearity" << (opposite ? " , opposite" : "") << std::endl; #endif start_in_the_middle(it->info, opposite); } } if (boost::size(it->info) == 8) { /* src 0 seg 1 (// 1.0) how t[A R] pi // qu pi.first src 0 seg 1 (// 1.1) how a[A R] pi // qw pi.second src 0 seg 2 (// 1.0) how a[D R] pk // qu pk.first src 0 seg 2 (// 1.1) how f[D L] pk // qw pk.second src 1 seg 0 (// 0.1) how t[A L] qu // pi src 1 seg 0 (// 0.2) how a[A R] qu // pk src 1 seg 1 (// 0.1) how a[D R] qw // pi src 1 seg 1 (// 0.2) how f[D R] qw // pk */ std::pair pi, pk, qu, qw; std::pair p, q; // Find out which is which for (tvit_type tvit = boost::begin(it->info); tvit != boost::end(it->info); ++tvit) { assign_pq(*tvit, p, q); if (tvit->seg_id.source_index == 0) { if (tvit->arrival == 1) { if(tvit->how != 'a') { pi.first = tvit; } else { pi.second = tvit; } } else if (tvit->arrival == -1) { if (tvit->how == 'a') { pk.first = tvit; } else { pk.second = tvit; } } } else { if (tvit->arrival == 1) { if(tvit->how != 'a') { qu.first = tvit; } else { qu.second = tvit; } } else if (tvit->arrival == -1) { if (tvit->how == 'a') { qw.first = tvit; } else { qw.second = tvit; } } } } int dir_p = the_side(p.first, it->point, p.second); int dir_q = the_side(q.first, it->point, q.second); #ifdef GGL_DEBUG_INTERSECTION std::cout << "Pi//Qu : " << *pi.first << std::endl; std::cout << "Pi//Qw : " << *pi.second << std::endl; std::cout << "Pk//Qu : " << *pk.first << std::endl; std::cout << "Pk//Qw : " << *pk.second << std::endl; std::cout << "Qu//Pi : " << *qu.first << std::endl; std::cout << "Qu//Pk : " << *qu.second << std::endl; std::cout << "Qw//Pi : " << *qw.first << std::endl; std::cout << "Qw//Pk : " << *qw.second << std::endl; if (dir_p == 1) std::cout << "P turns left" << std::endl; if (dir_p == -1) std::cout << "P turns right" << std::endl; if (dir_q == 1) std::cout << "Q turns left" << std::endl; if (dir_q == -1) std::cout << "Q turns right" << std::endl; #endif if (qu.first->direction == qw.first->direction) { // Both Right or Both Left #ifdef GGL_DEBUG_INTERSECTION std::cout << "Both " << (qu.first->direction == 1 ? "Left" : "Right") << std::endl; #endif both_same(pi, pk, qu, qw, dir_p, dir_q, qu.first->direction); } else if (qu.first->direction == -qw.first->direction) { // From Left to Right, or from Right to Left #ifdef GGL_DEBUG_INTERSECTION std::cout << "Left to/from Right" << std::endl; #endif crossing(pi, pk, qu, qw, dir_p, dir_q, qu.first->direction); } else if (qw.first->direction == 1 || qu.first->direction == 1) { // Collinear left #ifdef GGL_DEBUG_INTERSECTION std::cout << "Collinear left" << std::endl; #endif collinear(pi, pk, qu, qw, dir_p, dir_q, 1); } else if (qw.first->direction == -1 || qu.first->direction == -1) { // Collinear right #ifdef GGL_DEBUG_INTERSECTION std::cout << "Collinear right" << std::endl; #endif collinear(pi, pk, qu, qw, dir_p, dir_q, -1); } for (tvit_type tvit = boost::begin(it->info); tvit != boost::end(it->info); ++tvit) { if (tvit->how == 'a') { tvit->direction = 0; } } } } } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Adapted turns: " << std::endl; report_ip(intersection_points); #endif } }} // namespace detail::intersection #endif //DOXYGEN_NO_DETAIL template inline void adapt_turns(V& intersection_points) { // If there are merges, there might be merged IP's which have right turns detail::intersection::adapt_turns(intersection_points); #ifdef GGL_DEBUG_INTERSECTION std::cout << "Merged (2): " << std::endl; report_ip(intersection_points); #endif } } // namespace ggl #endif // GGL_ADAPT_TURNS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/copy_segments.hpp000066400000000000000000000131021177067165300276150ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_OVERLAY_COPY_SEGMENTS_HPP #define GGL_ALGORITHMS_OVERLAY_COPY_SEGMENTS_HPP #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace copy_segments { template struct copy_segments_ring { static inline void apply(Ring const& ring, SegmentIdentifier const& seg_id, int to_index, RangeOut& current_output) { typedef typename ggl::point_const_iterator::type iterator; typedef ggl::ever_circling_iterator ec_iterator; // The problem: sometimes we want to from "3" to "2" -> end = "3" -> end == begin // This is not convenient with iterators. // So we use the ever-circling iterator and determine when to step out int from_index = seg_id.segment_index + 1; // Sanity check BOOST_ASSERT(from_index < boost::size(ring)); ec_iterator it(boost::begin(ring), boost::end(ring), boost::begin(ring) + from_index); // [2..4] -> 4 - 2 + 1 = 3 -> {2,3,4} -> OK // [4..2],size=6 -> 6 - 4 + 2 + 1 = 5 -> {4,5,0,1,2} -> OK // [1..1], travel the whole ring round int count = from_index <= to_index ? to_index - from_index + 1 : boost::size(ring) - from_index + to_index + 1; for (int i = 0; i < count; ++i, ++it) { // TODO: use 'copy coordinates' to handle different point types #ifdef GGL_DEBUG_INTERSECTION std::cout << " add: (" << ggl::get<0>(*it) << ", " << ggl::get<1>(*it) << ")" << std::endl; #endif current_output.push_back(*it); } } }; template struct copy_segments_polygon { static inline void apply(Polygon const& polygon, SegmentIdentifier const& seg_id, int to_index, RangeOut& current_output) { // Call ring-version with the right ring copy_segments_ring < typename ggl::ring_type::type, SegmentIdentifier, RangeOut >::apply ( seg_id.ring_index < 0 ? ggl::exterior_ring(polygon) : ggl::interior_rings(polygon)[seg_id.ring_index], seg_id, to_index, current_output ); } }; template struct copy_segments_box { static inline void apply(Box const& box, SegmentIdentifier const& seg_id, int to_index, RangeOut& current_output) { // Convert again... // TODO: avoid that... typedef typename point_type::type point_type; point_type ll, lr, ul, ur; assign_box_corners(box, ll, lr, ul, ur); std::vector points; points.push_back(ll); points.push_back(ul); points.push_back(ur); points.push_back(lr); points.push_back(ll); copy_segments_ring < std::vector, SegmentIdentifier, RangeOut > ::apply(points, seg_id, to_index, current_output); } }; }} // namespace detail::copy_segments #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename Tag, typename GeometryIn, typename SegmentIdentifier, typename RangeOut > struct copy_segments { }; template struct copy_segments : detail::copy_segments::copy_segments_ring < Ring, SegmentIdentifier, RangeOut > {}; template struct copy_segments : detail::copy_segments::copy_segments_polygon < Polygon, SegmentIdentifier, RangeOut > {}; template struct copy_segments : detail::copy_segments::copy_segments_box < Box, SegmentIdentifier, RangeOut > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Traverses through intersection points / geometries \ingroup overlay */ template inline void copy_segments(Geometry const& geometry, SegmentIdentifier const& seg_id, int to_index, RangeOut& range_out) { dispatch::copy_segments < typename tag::type, Geometry, SegmentIdentifier, RangeOut >::apply(geometry, seg_id, to_index, range_out); } } // namespace ggl #endif // GGL_ALGORITHMS_OVERLAY_COPY_SEGMENTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/enrich_intersection_points.hpp000066400000000000000000000356711177067165300324070ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_ENRICH_INTERSECTION_POINTS_HPP #define GGL_ALGORITHMS_ENRICH_INTERSECTION_POINTS_HPP #include #include #include #include #ifdef GGL_DEBUG_INTERSECTION #include #endif #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { #ifdef GGL_DEBUG_INTERSECTION template inline void report_map(M const& map) { std::cout << "Map [source,segment(,ring,multi)] -> [count]:" << std::endl; for (typename M::const_iterator it = map.begin(); it != map.end(); it++) { std::cout << "(" << it->first << ")" << " -> " << "(" << it->second << ")" << std::endl; } } template inline void report_indexed(V const& index) { typedef typename boost::range_const_iterator::type iterator_type; for (iterator_type it = boost::begin(index); it != boost::end(index); ++it) { std::cout << it->index << ": " << it->subject; } } #endif // GGL_DEBUG_INTERSECTION template struct indexed_source_segment { std::size_t index; T subject; inline indexed_source_segment() {} inline indexed_source_segment(std::size_t i, T const& s, segment_identifier const& seg_id) : index(i) { s.clone_except_info(subject); typedef typename T::traversal_vector vector_type; for (typename boost::range_const_iterator::type it = s.info.begin(); it != s.info.end(); ++it) { // Copy info-record if belonging to source and to segment if (it->seg_id == seg_id) { subject.info.push_back(*it); } } } }; template struct indexed_source { T subject; std::size_t index; inline indexed_source() {} inline indexed_source(std::size_t i, T const& s, int source_index, int multi_index, int ring_index) : index(i) { s.clone_except_info(subject); typedef typename T::traversal_vector vector_type; for (typename boost::range_const_iterator::type it = s.info.begin(); it != s.info.end(); ++it) { // Copy info-record if belonging to source if (it->seg_id.source_index == source_index && it->seg_id.multi_index == multi_index && it->seg_id.ring_index == ring_index) { subject.info.push_back(*it); } } } }; template struct sort_on_distance { inline bool operator()(Indexed const& left, Indexed const& right) const { // Sanity check, there should be info-records because only those are copied BOOST_ASSERT (left.subject.info.size() > 0 && right.subject.info.size() > 0); return left.subject.info.front().distance < right.subject.info.front().distance; } }; // Sorts on segment + ring_index + multi_index template struct sort_on_segment_identifier { inline bool operator()(Indexed const& left, Indexed const& right) const { // Sanity check BOOST_ASSERT (left.subject.info.size() > 0 && right.subject.info.size() > 0); segment_identifier const& sl = left.subject.info.front().seg_id; segment_identifier const& sr = right.subject.info.front().seg_id; return sl == sr ? left.subject.info.front().distance < right.subject.info.front().distance : sl < sr; } }; template struct on_source_segment_dir { inline bool operator()(Info const& left, Info const& right) const { int ldir = left.direction; int rdir = right.direction; if (ldir == -1) ldir = 2; if (rdir == -1) rdir = 2; return left.seg_id.source_index == right.seg_id.source_index ? (left.seg_id.segment_index == right.seg_id.segment_index ? ldir < rdir : left.seg_id.segment_index < right.seg_id.segment_index ) : left.seg_id.source_index < right.seg_id.source_index; } }; // Assigns IP[index] . info[source/multi/ring/segment] . next_ip_index template static inline void assign_next_ip_index(V& intersection_points, int index, segment_identifier const& seg_id, int next_ip_index) { typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_vector vector_type; typedef typename boost::range_iterator::type iterator_type; ip_type& ip = intersection_points[index]; for (iterator_type it = boost::begin(ip.info); it != boost::end(ip.info); ++it) { if (it->seg_id == seg_id) { it->next_ip_index = next_ip_index; // Note: there can be MORE than one here. So do NOT return } } } // Assigns IP[index] . info[source_index] . travels_to_[vertex,ip]_index template static inline void assign_last_vertex(V& intersection_points, int index, int source_index, int travels_to_vertex_index, int travels_to_ip_index) { typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_vector vector_type; typedef typename boost::range_iterator::type iterator_type; ip_type& ip = intersection_points[index]; for (iterator_type it = boost::begin(ip.info); it != boost::end(ip.info); ++it) { if (it->seg_id.source_index == source_index) { it->travels_to_vertex_index = travels_to_vertex_index; it->travels_to_ip_index = travels_to_ip_index; // do not return here, there can be more than one } } } // Creates selection of IP-s of only this unique source/segment, // then sorts on distance, // then assigns for each IP which is the next IP on this segment. // This is only applicable (but essential) for segments having // more than one IP on it. It is not the usual situation, so not // computational intensive. template static inline bool assign_next_points(V& intersection_points, segment_identifier const& seg_id) { typedef typename boost::range_value::type ip_type; typedef typename boost::range_const_iterator::type iterator_type; typedef indexed_source_segment indexed_type; typedef typename ip_type::traversal_vector vector_type; typedef typename boost::range_const_iterator::type tvit_type; // Create a copy of all IP's on this segment from this source std::vector copy; copy.reserve(intersection_points.size()); std::size_t index = 0; for (iterator_type it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it, ++index) { bool to_be_copied = false; for (tvit_type tvit = boost::begin(it->info); !to_be_copied && tvit != boost::end(it->info); ++tvit) { if (tvit->seg_id == seg_id) { to_be_copied = true; } } if (to_be_copied) { // Copy this row, plus ONLY the related information copy.push_back(indexed_type(index, *it, seg_id)); } } // Normally there are more elements in "copy". // But in case of merges there could be only one. if (boost::size(copy) <= 1) { return false; } std::sort(copy.begin(), copy.end(), sort_on_distance()); // Now that it is sorted, do the main purpose: assign the next points typedef typename boost::range_iterator < std::vector >::type indexed_iterator_type; indexed_iterator_type it = boost::begin(copy); for (indexed_iterator_type prev = it++; it != boost::end(copy); prev = it++) { for ( #ifdef GGL_DEBUG_INTERSECTION typename boost::range_iterator::type #else tvit_type #endif tvit = boost::begin(it->subject.info); tvit != boost::end(it->subject.info); ++tvit) { if (tvit->seg_id == seg_id) { assign_next_ip_index(intersection_points, prev->index, seg_id, it->index); #ifdef GGL_DEBUG_INTERSECTION tvit->next_ip_index = it->index; #endif } } } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Enrichment - sorted (on distance, " << seg_id << "): " << std::endl; report_indexed(copy); #endif return true; } // If a segment has more than one IP, we determine what is the next IP // on that segment template static inline bool assign_next_points(M& map, V& intersection_points) { bool assigned = false; for (typename M::iterator mit = map.begin(); mit != map.end(); ++mit) { // IF there are more IP's on this segment if (mit->second > 1) { if (assign_next_points(intersection_points, mit->first)) { assigned = true; } } } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Enrichment - assigned next points on same segment: " << std::endl; report_ip(intersection_points); #endif return assigned; } template static inline bool assign_order(V& intersection_points, int source_index, int multi_index, int ring_index) { typedef typename boost::range_value::type ip_type; typedef typename boost::range_const_iterator::type iterator_type; typedef indexed_source indexed_type; typedef typename ip_type::traversal_vector vector_type; typedef typename boost::range_const_iterator::type tvit_type; // Create a copy of all IP's from this source std::vector copy; copy.reserve(intersection_points.size()); std::size_t index = 0; for (iterator_type it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it, ++index) { bool to_be_copied = false; for (tvit_type tvit = boost::begin(it->info); !to_be_copied && tvit != boost::end(it->info); ++tvit) { if (tvit->seg_id.source_index == source_index && tvit->seg_id.multi_index == multi_index && tvit->seg_id.ring_index == ring_index) { to_be_copied = true; } } if (to_be_copied) { // Copy this row, plus ONLY the related information copy.push_back(indexed_type(index, *it, source_index, multi_index, ring_index)); } } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Enrichment - ordered/copy (on segment " << " src: " << source_index << "): " << std::endl; report_indexed(copy); #endif std::sort(copy.begin(), copy.end(), sort_on_segment_identifier()); typedef typename boost::range_const_iterator >::type iit_type; // Now that it is sorted, do the main purpose: // assign travel-to-vertex/ip index for each IP // Because IP's are circular, PREV starts at the very last one, // being assigned from the first one. iit_type it = boost::begin(copy); for (iit_type prev = it + (boost::size(copy) - 1); it != boost::end(copy); prev = it++) { for (tvit_type tvit = boost::begin(it->subject.info); tvit != boost::end(it->subject.info); ++tvit) { if (tvit->seg_id.source_index == source_index && tvit->seg_id.multi_index == multi_index && tvit->seg_id.ring_index == ring_index) { assign_last_vertex(intersection_points, prev->index, source_index, tvit->seg_id.segment_index, it->index); } } } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Enrichment - ordered on segment (src: " << source_index << "): " << std::endl; report_ip(intersection_points); #endif return true; } template static inline void assign_order(M const& map, V& intersection_points) { typename M::const_iterator prev; bool first = true; for (typename M::const_iterator mit = map.begin(); mit != map.end(); ++mit) { if (first || prev->first.source_index != mit->first.source_index || prev->first.ring_index != mit->first.ring_index || prev->first.multi_index != mit->first.multi_index) { assign_order(intersection_points, mit->first.source_index, mit->first.multi_index, mit->first.ring_index); first = false; } prev = mit; } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Enrichment - assigned order: " << std::endl; report_ip(intersection_points); #endif } }} // namespace detail::intersection #endif //DOXYGEN_NO_DETAIL /*! \brief All intersection points are enriched with successor information \ingroup overlay \tparam IntersectionPoints type of intersection container (e.g. vector of "intersection_point"'s) \param intersection_points container containing intersectionpoints \param trivial Boolean flag to indicate that it is trivial, only intersections, no touch, collinearities, etc. */ template inline void enrich_intersection_points(IntersectionPoints& intersection_points, bool /* trivial */) { // Create a map of segment // to // Purpose: count IP's per source/segment, sort them lateron std::map map; typedef typename boost::range_const_iterator::type iterator_type; for (iterator_type it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it) { typedef typename boost::range_value < IntersectionPoints >::type::traversal_vector vector_type; typedef typename boost::range_const_iterator::type tvit_type; for (tvit_type tvit = boost::begin(it->info); tvit != boost::end(it->info); ++tvit) { map[tvit->seg_id]++; } } #ifdef GGL_DEBUG_INTERSECTION detail::intersection::report_map(map); #endif detail::intersection::assign_next_points(map, intersection_points); detail::intersection::assign_order(map, intersection_points); } } // namespace ggl #endif // GGL_ALGORITHMS_ENRICH_INTERSECTION_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/get_intersection_points.hpp000066400000000000000000000557421177067165300317170ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_GET_INTERSECTION_POINTS_HPP #define GGL_ALGORITHMS_GET_INTERSECTION_POINTS_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace get_intersection_points { template struct relate { static inline bool apply(Segment1 const& s1, Segment2 const& s2, segment_identifier const& seg_id1, segment_identifier const& seg_id2, IntersectionPoints& out, bool& trivial) { typedef typename boost::range_value < IntersectionPoints >::type intersection_point; typedef segment_intersection_points ip_type; typedef boost::tuple < ip_type, policies::relate::direction_type > result_type; result_type result = strategy::intersection::relate_cartesian_segments < policies::relate::segments_tupled < policies::relate::segments_intersection_points < Segment1, Segment2, ip_type > , policies::relate::segments_direction < Segment1, Segment2 > > >::relate(s1, s2); ip_type& is = result.get<0>(); policies::relate::direction_type & dir = result.get<1>(); for (int i = 0; i < is.count; i++) { typedef typename point_type::type point1_type; typedef typename cs_tag::type tag; typename intersection_point::traversal_type info; info.how = dir.how; info.opposite = dir.opposite; // First info-record, containing info about segment 1 info.seg_id = seg_id1; info.other_id = seg_id2; info.other_point = dir.how_a == 1 ? s1.first : s1.second; info.distance = ggl::distance(is.intersections[i], s1.first); //info.distance = dir.ra; // NOTE: not possible for collinear intersections! info.arrival = dir.how_a; info.direction = dir.dir_a; is.intersections[i].info.push_back(info); // Second info-record, containing info about segment 2 info.seg_id = seg_id2; info.other_id = seg_id1; info.other_point = dir.how_b == 1 ? s2.first : s2.second; info.distance = ggl::distance(is.intersections[i], s2.first); //info.distance = dir.rb; info.arrival = dir.how_b; info.direction = dir.dir_b; is.intersections[i].info.push_back(info); if (dir.how != 'i') { trivial = false; is.intersections[i].trivial = false; } // Robustness: due to IEEE floating point errors, also in double, it might be // that the IP is at the same location as s1.first/s1.second, and still // being classified as an 'i' (normal intersection). Then handle it as non-trivial, // such that the IP's will be merged lateron. double eps = 1.0e-10; if (dir.how == 'i' && (dir.ra < eps || dir.rb < eps || 1.0 - dir.ra < eps || 1.0 - dir.rb < eps ) ) { // Handle them as non-trivial. This will case a "merge" lateron, // which could be done anyway (because of other intersections) // So it is never harmful to do this with a larger epsilon. // However, it has to be handled (more) carefully lateron, in // 'merge' or 'adapt_turns' trivial = false; is.intersections[i].trivial = false; #ifdef GGL_DEBUG_INTERSECTION std::cout << "INTERSECTION suspicious: " << std::setprecision(20) << " ra: " << dir.ra << " rb: " << dir.rb << std::endl << " dist1: " << ggl::distance(is.intersections[i], s1.first) << " dist2: " << ggl::distance(is.intersections[i], s1.second) << std::endl; #endif } out.push_back(is.intersections[i]); } return is.count > 0; } }; template < typename Geometry1, typename Geometry2, typename Section1, typename Section2, typename IntersectionPoints > class get_ips_in_sections { public : static inline void apply( std::size_t source_id1, Geometry1 const& geometry1, Section1 const& sec1, std::size_t source_id2, Geometry2 const& geometry2, Section2 const& sec2, bool return_if_found, IntersectionPoints& intersection_points, bool& trivial) { typedef typename ggl::point_const_iterator < Geometry1 >::type range1_iterator; typedef typename ggl::point_const_iterator < Geometry2 >::type range2_iterator; int const dir1 = sec1.directions[0]; int const dir2 = sec2.directions[0]; int index1 = sec1.begin_index; int ndi1 = sec1.non_duplicate_index; bool const same_source = source_id1 == source_id2 && sec1.multi_index == sec2.multi_index && sec1.ring_index == sec2.ring_index; // Note that it is NOT possible to have section-iterators here // because of the logistics of "index" (the section-iterator automatically // skips to the begin-point, we loose the index or have to recalculate it) // So we mimic it here range1_iterator it1, end1; get_section(geometry1, sec1, it1, end1); // Mimic 1: Skip to point such that section interects other box range1_iterator prev1 = it1++; for(; it1 != end1 && preceding<0>(dir1, *it1, sec2.bounding_box); prev1 = it1++, index1++, ndi1++) { } // Go back one step because we want to start completely preceding it1 = prev1; // Walk through section and stop if we exceed the other box for (prev1 = it1++; it1 != end1 && ! exceeding<0>(dir1, *prev1, sec2.bounding_box); prev1 = it1++, index1++, ndi1++) { segment1_type s1(*prev1, *it1); int index2 = sec2.begin_index; int ndi2 = sec2.non_duplicate_index; range2_iterator it2, end2; get_section(geometry2, sec2, it2, end2); range2_iterator prev2 = it2++; // Mimic 2: for(; it2 != end2 && preceding<0>(dir2, *it2, sec1.bounding_box); prev2 = it2++, index2++, ndi2++) { } it2 = prev2; for (prev2 = it2++; it2 != end2 && ! exceeding<0>(dir2, *prev2, sec1.bounding_box); prev2 = it2++, index2++, ndi2++) { bool skip = same_source; if (skip) { // If sources are the same (possibly self-intersecting): // check if it is a neighbouring sement. // (including first-last segment // and two segments with one or more degenerate/duplicate // (zero-length) segments in between) // Also skip if index1 < index2 to avoid getting all // intersections twice (only do this on same source!) // About n-2: // (square: range_count=5, indices 0,1,2,3 // -> 0-3 are adjacent) skip = index2 >= index1 || ndi1 == ndi2 + 1 || (index2 == 0 && index1 >= int(sec1.range_count) - 2) ; } if (! skip) { if (relate ::apply(s1, segment2_type(*prev2, *it2), segment_identifier(source_id1, sec1.multi_index, sec1.ring_index, index1), segment_identifier(source_id2, sec2.multi_index, sec2.ring_index, index2), intersection_points, trivial) && return_if_found) { return; } } } } } private : typedef typename ggl::point_type::type point1_type; typedef typename ggl::point_type::type point2_type; typedef typename ggl::segment segment1_type; typedef typename ggl::segment segment2_type; template static inline bool preceding(int dir, Point const& point, Box const& box) { return (dir == 1 && get(point) < get(box)) || (dir == -1 && get(point) > get(box)); } template static inline bool exceeding(int dir, Point const& point, Box const& box) { return (dir == 1 && get(point) > get(box)) || (dir == -1 && get(point) < get(box)); } }; template < typename Ring, typename Box, typename Section1, typename Section2, typename IntersectionPoints > class get_ips_range_box { public : static inline void apply( std::size_t source_id1, Ring const& ring, std::size_t source_id2, Box const& box, Section1 const& sec1, Section2 const& sec2, IntersectionPoints& intersection_points, bool& trivial) { get_ips_in_sections ::apply( source_id1, ring, sec1, source_id2, box, sec2, false, intersection_points, trivial); } }; template struct get_ips_generic { static inline bool apply( std::size_t source_id1, Geometry1 const& geometry1, std::size_t source_id2, Geometry2 const& geometry2, IntersectionPoints& intersection_points) { // Create monotonic sections in ONE direction // - in most cases ONE direction is faster (e.g. ~1% faster for the NLP4 testset) // - the sections now have a limit (default 10) so will not be too large typedef typename ggl::sections < ggl::box < typename ggl::point_type::type >, 1 > sections1_type; typedef typename ggl::sections < ggl::box < typename ggl::point_type::type >, 1 > sections2_type; sections1_type sec1; sections2_type sec2; ggl::sectionalize(geometry1, sec1); ggl::sectionalize(geometry2, sec2); bool trivial = true; for (typename boost::range_const_iterator::type it1 = sec1.begin(); it1 != sec1.end(); ++it1) { for (typename boost::range_const_iterator::type it2 = sec2.begin(); it2 != sec2.end(); ++it2) { if (! ggl::disjoint(it1->bounding_box, it2->bounding_box)) { get_ips_in_sections < Geometry1, Geometry2, typename boost::range_value::type, typename boost::range_value::type, IntersectionPoints >::apply( source_id1, geometry1, *it1, source_id2, geometry2, *it2, false, intersection_points, trivial); } } } return trivial; } }; template struct get_ips_cs { static inline void apply(std::size_t source_id1, Range const& range, int multi_index, int ring_index, std::size_t source_id2, Box const& box, IntersectionPoints& intersection_points, bool& trivial) { if (boost::size(range) <= 1) { return; } typedef typename ggl::point_type::type box_point_type; typedef typename ggl::point_type::type point_type; typedef segment box_segment_type; typedef segment segment_type; point_type lower_left, upper_left, lower_right, upper_right; assign_box_corners(box, lower_left, lower_right, upper_left, upper_right); box_segment_type left(lower_left, upper_left); box_segment_type top(upper_left, upper_right); box_segment_type right(upper_right, lower_right); box_segment_type bottom(lower_right, lower_left); typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); bool first = true; char previous_side[2] = {0, 0}; int index = 0; for (iterator_type prev = it++; it != boost::end(range); prev = it++, index++) { segment_type segment(*prev, *it); if (first) { previous_side[0] = get_side<0>(box, *prev); previous_side[1] = get_side<1>(box, *prev); } char current_side[2]; current_side[0] = get_side<0>(box, *it); current_side[1] = get_side<1>(box, *it); // There can NOT be intersections if // 1) EITHER the two points are lying on one side of the box (! 0 && the same) // 2) OR same in Y-direction // 3) OR all points are inside the box (0) if (! ( (current_side[0] != 0 && current_side[0] == previous_side[0]) || (current_side[1] != 0 && current_side[1] == previous_side[1]) || (current_side[0] == 0 && current_side[1] == 0 && previous_side[0] == 0 && previous_side[1] == 0) ) ) { segment_identifier seg_id(source_id1, multi_index, ring_index, index); typedef relate < segment_type, box_segment_type, IntersectionPoints > relater; // Todo: depending on code some relations can be left out relater::apply(segment, left, seg_id, segment_identifier(source_id2, -1, -1, 0), intersection_points, trivial); relater::apply(segment, top, seg_id, segment_identifier(source_id2, -1, -1, 1), intersection_points, trivial); relater::apply(segment, right, seg_id, segment_identifier(source_id2, -1, -1, 2), intersection_points, trivial); relater::apply(segment, bottom, seg_id, segment_identifier(source_id2, -1, -1, 3), intersection_points, trivial); } } } template static inline int get_side(Box const& box, Point const& point) { // Note: border has to be included because of boundary cases if (get(point) <= get(box)) return -1; else if (get(point) >= get(box)) return 1; else return 0; } }; }} // namespace detail::get_intersection_points #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename GeometryTag1, typename GeometryTag2, bool IsMulti1, bool IsMulti2, typename Geometry1, typename Geometry2, typename IntersectionPoints > struct get_intersection_points { }; template struct get_intersection_points < polygon_tag, box_tag, false, false, Polygon, Box, IntersectionPoints > { static inline bool apply( std::size_t source_id1, Polygon const& polygon, std::size_t source_id2, Box const& box, IntersectionPoints& intersection_points) { typedef typename ggl::ring_type::type ring_type; typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator_type; typedef detail::get_intersection_points::get_ips_cs intersector_type; bool trivial = true; intersector_type::apply( source_id1, ggl::exterior_ring(polygon), -1, -1, source_id2, box, intersection_points, trivial); int i = 0; for (iterator_type it = boost::begin(interior_rings(polygon)); it != boost::end(interior_rings(polygon)); ++it, ++i) { intersector_type::apply( source_id1, *it, -1, i, source_id2, box, intersection_points, trivial); } return trivial; } }; template struct get_intersection_points < ring_tag, ring_tag, false, false, Ring1, Ring2, IntersectionPoints > : detail::get_intersection_points::get_ips_generic < Ring1, Ring2, IntersectionPoints > {}; template struct get_intersection_points < polygon_tag, polygon_tag, false, false, Polygon1, Polygon2, IntersectionPoints > : detail::get_intersection_points::get_ips_generic < Polygon1, Polygon2, IntersectionPoints > {}; template < typename LineString1, typename LineString2, typename IntersectionPoints > struct get_intersection_points < linestring_tag, linestring_tag, false, false, LineString1, LineString2, IntersectionPoints > : detail::get_intersection_points::get_ips_generic < LineString1, LineString2, IntersectionPoints > {}; template < typename GeometryTag1, typename GeometryTag2, bool IsMulti1, bool IsMulti2, typename Geometry1, typename Geometry2, typename IntersectionPoints > struct get_intersection_points_reversed { static inline bool apply( std::size_t source_id1, Geometry1 const& g1, std::size_t source_id2, Geometry2 const& g2, IntersectionPoints& intersection_points) { return get_intersection_points < GeometryTag2, GeometryTag1, IsMulti2, IsMulti1, Geometry2, Geometry1, IntersectionPoints >::apply(source_id2, g2, source_id1, g1, intersection_points); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate intersection points of two geometries \ingroup overlay \tparam Geometry1 first geometry type \tparam Geometry2 second geometry type \tparam IntersectionPoints type of intersection container (e.g. vector of "intersection_point"'s) \param geometry1 first geometry \param geometry2 second geometry \param intersection_points container which will contain intersection points \return TRUE if it is trivial, else FALSE */ template inline bool get_intersection_points(Geometry1 const& geometry1, Geometry2 const& geometry2, IntersectionPoints& intersection_points) { assert_dimension_equal(); typedef typename boost::remove_const::type ncg1_type; typedef typename boost::remove_const::type ncg2_type; return boost::mpl::if_c < reverse_dispatch::type::value, dispatch::get_intersection_points_reversed < typename tag::type, typename tag::type, is_multi::type::value, is_multi::type::value, ncg1_type, ncg2_type, IntersectionPoints >, dispatch::get_intersection_points < typename tag::type, typename tag::type, is_multi::type::value, is_multi::type::value, ncg1_type, ncg2_type, IntersectionPoints > >::type::apply( 0, geometry1, 1, geometry2, intersection_points); } } // namespace ggl #endif // GGL_ALGORITHMS_GET_INTERSECTION_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/intersection_point.hpp000066400000000000000000000156501177067165300306670ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_INTERSECTION_POINT_HPP #define GGL_ALGORITHMS_INTERSECTION_POINT_HPP #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { template struct intersection_info { typedef P point_type; typedef typename distance_result::type distance_type; inline intersection_info() : travels_to_vertex_index(-1) , travels_to_ip_index(-1) , next_ip_index(-1) , distance(ggl::make_distance_result(0)) , direction(0) , how('?') , arrival(0) , opposite(false) , visit_code(0) , flagged(false) {} // Point to which the segment from IP is directing (TO-point) // If they intersect on their "arrival" points, it is the FROM-point. P other_point; // Identifier of this segment (source,segment,ring,multi) segment_identifier seg_id; // Identify the segment where it was intersected with to form this IP segment_identifier other_id; // vertex to which is free travel after this IP, // so from "segment_index+1" to "travels_to_vertex_index", without IP-s, // can be -1 int travels_to_vertex_index; // same but now IP index, so "next IP index" but not on THIS segment int travels_to_ip_index; // index of next IP on this segment, -1 if there is no one int next_ip_index; distance_type distance; // distance-measurement from segment.first to IP // 1: left, -1: right, 0: collinear int direction; // Information about how intersection is done char how; // 1: arrived at IP, -1: departs from IP, 0: crosses IP int arrival; bool opposite; int visit_code; bool flagged; // flagged for deletion #ifdef GGL_DEBUG_INTERSECTION static inline std::string dir(int d) { return d == 0 ? "-" : (d == 1 ? "L" : d == -1 ? "R" : "#"); } static inline std::string how_str(int h) { return h == 0 ? "-" : (h == 1 ? "A" : "D"); } friend std::ostream& operator<<(std::ostream &os, intersection_info

const& info) { os << "\t" << " src " << info.seg_id.source_index << " seg " << info.seg_id.segment_index << " (// " << info.other_id.source_index << "." << info.other_id.segment_index << ")" << " how " << info.how << "[" << how_str(info.arrival) << " " << dir(info.direction) << (info.opposite ? " o" : "") << "]" << " nxt seg " << info.travels_to_vertex_index << " , ip " << info.travels_to_ip_index << " , or " << info.next_ip_index << " dst " << std::setprecision(12) << double(info.distance); if (info.visit_code != 0) { os << " VIS: " << int(info.visit_code); } return os; } #endif }; template struct intersection_point { public : inline intersection_point() : visit_code(0) // VISIT_NONE , trivial(true) , shared(false) , flagged(false) { } #ifdef GGL_DEBUG_INTERSECTION friend std::ostream& operator<<(std::ostream &os, intersection_point

const& p) { os << "IP (" << ggl::get<0>(p.point) << "," << ggl::get<1>(p.point) << ")" << " visited: " << int(p.visit_code) << (p.shared ? " SHARED" : "") << (p.flagged ? " FLAGGED" : "") << std::endl; for (unsigned int i = 0; i < p.info.size(); i++) { os << p.info[i] << std::endl; } return os; } #endif typedef intersection_info

traversal_type; typedef std::vector traversal_vector; P point; int visit_code; bool trivial; // FALSE if there is an collinearity, touch or so. bool shared; // shared with more IP's bool flagged; // flagged for deletion afterwards // info about the two intersecting segments // usually two, but often more if IP's are merged traversal_vector info; inline void clone_except_info(intersection_point& other) const { other.point = point; other.visit_code = visit_code; other.trivial = trivial; other.shared = shared; other.flagged = flagged; } }; }} // namespace detail::intersection #endif //DOXYGEN_NO_DETAIL // Register the intersection point as being a point fulfilling the ggl Point Concept namespace traits { template struct coordinate_type > { typedef typename ggl::coordinate_type

::type type; }; template struct coordinate_system > { typedef typename ggl::coordinate_system

::type type; }; template struct dimension > : ggl::dimension

{}; template struct tag > { typedef point_tag type; }; template struct access > { template static inline typename coordinate_type

::type get( ggl::detail::intersection::intersection_point

const& p) { return ggl::get(p.point); } template static inline void set(ggl::detail::intersection::intersection_point

& p, typename coordinate_type

::type const& value) { ggl::set(p.point, value); } }; } #ifdef GGL_DEBUG_INTERSECTION template inline void report_ip(V const& intersection_points) { typedef typename V::const_iterator iterator_type; for (iterator_type it = intersection_points.begin(); it != intersection_points.end(); ++it) { if (! it->flagged) { std::cout << *it; } } } #endif // GGL_DEBUG_INTERSECTION } // namespace ggl #endif // GGL_ALGORITHMS_INTERSECTION_POINT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/merge_intersection_points.hpp000066400000000000000000000170321177067165300322250ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_MERGE_INTERSECTION_POINTS_HPP #define GGL_ALGORITHMS_MERGE_INTERSECTION_POINTS_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { template struct on_increasing_dimension { typedef typename ggl::coordinate_type::type coordinate_type; inline bool operator()(PointType const& lhs, PointType const& rhs) const { coordinate_type const& left0 = ggl::get<0>(lhs); coordinate_type const& right0 = ggl::get<0>(rhs); return math::equals(left0, right0) ? ggl::get<1>(lhs) < ggl::get<1>(rhs) : left0 < right0; } }; // T can be an intersection_point or intersection_info record template struct is_flagged { inline bool operator()(T const& object) const { return object.flagged; } }; template inline void remove_collinearities(V& intersection_points) { typedef typename boost::range_iterator::type iterator_type; typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_type info_type; for (iterator_type it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it) { if (! it->trivial && ! it->flagged) { // Remove anything having to do with collinearity typedef typename boost::range_value::type::traversal_vector vector_type; typedef typename boost::range_iterator::type tvit_type; bool has_flag = false; // Note, this is done n*m, in case of collinearity, but it is only done if not trivial // or if there bool middle = false; for (tvit_type tvit = boost::begin(it->info); ! middle && tvit != boost::end(it->info); ++tvit) { if (tvit->how == 'e' || tvit->how == 'c') { tvit->flagged = true; has_flag = true; for (tvit_type tvit2 = boost::begin(it->info); tvit2 != boost::end(it->info); ++tvit2) { // Do NOT remove anything starting from collinear, or ending on, in the middle. if (tvit2->how != 'm' && tvit2->how != 's') { if (tvit->seg_id == tvit2->seg_id || tvit->seg_id == tvit2->other_id || tvit->other_id == tvit2->seg_id || tvit->other_id == tvit2->other_id ) { tvit2->flagged = true; } } else { tvit->flagged = false; has_flag = false; middle = true; } } } } if (has_flag) { it->info.erase( std::remove_if( boost::begin(it->info), boost::end(it->info), is_flagged()), boost::end(it->info)); // Mark for deletion afterwards if there are no info-records left if (boost::size(it->info) == 0) { it->flagged = true; } // Cases, previously forming an 'angle' (test #19) // will be normal (neutral) case now, // so to continue traversal: if (it->info.size() == 2 && it->info.front().how == 'a' && it->info.back().how == 'a') { it->info.front().direction = 1; it->info.back().direction = 1; } } } } #ifdef GGL_DEBUG_INTERSECTION std::cout << "Removed collinearities: " << std::endl; report_ip(intersection_points); #endif } }} // namespace detail::intersection #endif //DOXYGEN_NO_DETAIL /*! \brief Merges intersection points such that points at the same location will be merged, having one point and their info-records appended \ingroup overlay \tparam IntersectionPoints type of intersection container (e.g. vector of "intersection_point"'s) \param intersection_points container containing intersectionpoints */ template inline void merge_intersection_points(IntersectionPoints& intersection_points) { typedef typename boost::range_value::type trav_type; if (boost::size(intersection_points) <= 1) { return; } // Sort all IP's from left->right, ymin->ymax such that // all same IP's are consecutive // (and we need this order lateron again) // This order is NOT changed here and should not be after // (otherwise indexes are wrong) std::sort(boost::begin(intersection_points), boost::end(intersection_points), detail::intersection::on_increasing_dimension()); typedef typename boost::range_iterator::type iterator; #ifdef GGL_DEBUG_INTERSECTION std::cout << "Sorted (x then y): " << std::endl; for (iterator it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it) { std::cout << *it; } #endif bool has_merge = false; // Merge all same IP's, combining there IP/segment-info entries iterator it = boost::begin(intersection_points); for (iterator prev = it++; it != boost::end(intersection_points); ++it) { // IP can be merged if the point is equal if (ggl::equals(prev->point, it->point)) { has_merge = true; prev->shared = true; prev->trivial = false; it->flagged = true; std::copy(it->info.begin(), it->info.end(), std::back_inserter(prev->info)); } else { prev = it; } } if (has_merge) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "Merged (1): " << std::endl; report_ip(intersection_points); #endif // If there merges, there might be collinearities detail::intersection::remove_collinearities(intersection_points); // Remove all IP's which are flagged for deletion intersection_points.erase( std::remove_if( boost::begin(intersection_points), boost::end(intersection_points), detail::intersection::is_flagged()), boost::end(intersection_points)); #ifdef GGL_DEBUG_INTERSECTION std::cout << "Merged (2): " << std::endl; report_ip(intersection_points); #endif } } } // namespace ggl #endif // GGL_ALGORITHMS_MERGE_INTERSECTION_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/segment_identifier.hpp000066400000000000000000000046271177067165300306160ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_OVERLAY_SEGMENT_IDENTIFIER_HPP #define GGL_ALGORITHMS_OVERLAY_SEGMENT_IDENTIFIER_HPP #include #include #include #include #include namespace ggl { // Internal struct to uniquely identify a segment // on a linestring,ring // or polygon (needs ring_index) // or multi-geometry (needs multi_index) struct segment_identifier { inline segment_identifier() : source_index(-1) , multi_index(-1) , ring_index(-1) , segment_index(-1) {} inline segment_identifier(int src, int mul, int rin, int seg) : source_index(src) , multi_index(mul) , ring_index(rin) , segment_index(seg) {} inline bool operator<(segment_identifier const& other) const { return source_index != other.source_index ? source_index < other.source_index : multi_index !=other.multi_index ? multi_index < other.multi_index : ring_index != other.ring_index ? ring_index < other.ring_index : segment_index < other.segment_index ; } inline bool operator==(segment_identifier const& other) const { return source_index == other.source_index && segment_index == other.segment_index && ring_index == other.ring_index && multi_index == other.multi_index ; } #ifdef GGL_DEBUG_INTERSECTION friend std::ostream& operator<<(std::ostream &os, segment_identifier const& seg_id) { std::cout << "s:" << seg_id.source_index << ", v:" << seg_id.segment_index // vertex ; if (seg_id.ring_index >= 0) std::cout << ", r:" << seg_id.ring_index; if (seg_id.multi_index >= 0) std::cout << ", m:" << seg_id.multi_index; return os; } #endif int source_index; int multi_index; int ring_index; int segment_index; }; } // namespace ggl #endif // GGL_ALGORITHMS_OVERLAY_SEGMENT_IDENTIFIER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/self_intersection_points.hpp000066400000000000000000000105341177067165300320570ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_SELF_INTERSECTION_POINTS_HPP #define GGL_ALGORITHMS_SELF_INTERSECTION_POINTS_HPP #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace self_intersection_points { template < typename Geometry, typename IntersectionPoints > struct check_ips { static inline bool apply( Geometry const& geometry, bool return_if_found, IntersectionPoints& intersection_points) { typedef typename ggl::sections < ggl::box < typename ggl::point_type::type >, 1 > sections_type; sections_type sec; ggl::sectionalize(geometry, sec); bool trivial = true; for (typename boost::range_const_iterator::type it1 = sec.begin(); it1 != sec.end(); ++it1) { for (typename boost::range_const_iterator::type it2 = sec.begin(); it2 != sec.end(); ++it2) { if (! ggl::disjoint(it1->bounding_box, it2->bounding_box) && ! it1->duplicate && ! it2->duplicate ) { ggl::detail::get_intersection_points::get_ips_in_sections < Geometry, Geometry, typename boost::range_value::type, typename boost::range_value::type, IntersectionPoints >::apply( 0, geometry, *it1, 0, geometry, *it2, return_if_found, intersection_points, trivial); } } } return trivial; } }; }} // namespace detail::self_intersection_points #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename GeometryTag, bool IsMulti, typename Geometry, typename IntersectionPoints > struct self_intersection_points { }; template struct self_intersection_points < ring_tag, false, Ring, IntersectionPoints > : detail::self_intersection_points::check_ips < Ring, IntersectionPoints > {}; template struct self_intersection_points < polygon_tag, false, Polygon, IntersectionPoints > : detail::self_intersection_points::check_ips < Polygon, IntersectionPoints > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate self intersections of a geometry \ingroup overlay \tparam Geometry geometry type \tparam IntersectionPoints type of intersection container (e.g. vector of "intersection_point"'s) \param geometry geometry \param intersection_points container which will contain intersection points \return TRUE if it is trivial, else FALSE */ template inline bool get_intersection_points(Geometry const& geometry, IntersectionPoints& intersection_points) { typedef typename boost::remove_const::type ncg_type; return dispatch::self_intersection_points < typename tag::type, is_multi::type::value, ncg_type, IntersectionPoints >::apply(geometry, false, intersection_points); } } // namespace ggl #endif // GGL_ALGORITHMS_SELF_INTERSECTION_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/overlay/traverse.hpp000066400000000000000000000322651177067165300266040ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_OVERLAY_TRAVERSE_HPP #define GGL_ALGORITHMS_OVERLAY_TRAVERSE_HPP #include #include #include #include #include #ifdef GGL_DEBUG_INTERSECTION #include #endif namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace intersection { const int VISIT_NONE = 0; const int VISIT_START = 1; const int VISIT_VISITED = 2; const int VISIT_FINISH = 3; const int VISIT_WITHIN = 4; template < typename IntersectionPoint, typename IntersectionInfo > struct on_direction { on_direction(IntersectionPoint const& ip, int direction) : m_ip(ip) , m_direction(direction) {} // TEMP: convenient COPY of side template static inline int side(P1 const& p1, P2 const& p2, P const& p) { typedef typename select_coordinate_type::type T; T dx = get<0>(p2) - get<0>(p1); T dy = get<1>(p2) - get<1>(p1); T dpx = get<0>(p) - get<0>(p1); T dpy = get<1>(p) - get<1>(p1); T product = dx * dpy - dy * dpx; return product > 0 ? 1 : product < 0 ? -1 : 0; } inline bool operator()(IntersectionInfo const& first, IntersectionInfo const& second) const { int dir = side(m_ip, first->other_point, second->other_point); return m_direction == dir; } private : IntersectionPoint const& m_ip; int m_direction; }; template < typename GeometryOut, typename G1, typename G2, typename IntersectionPoints, typename IntersectionInfo > inline bool assign_next_ip(G1 const& g1, G2 const& g2, int direction, IntersectionPoints& intersection_points, typename boost::range_iterator::type & ip, GeometryOut& current_output, IntersectionInfo & info) { info.visit_code = VISIT_VISITED; #ifdef GGL_DEBUG_INTERSECTION std::cout << " take: " << info << std::endl; #endif // If there is no next IP on this segment if (info.next_ip_index < 0) { if (info.seg_id.source_index == 0) { ggl::copy_segments(g1, info.seg_id, info.travels_to_vertex_index, current_output); } else { ggl::copy_segments(g2, info.seg_id, info.travels_to_vertex_index, current_output); } ip = boost::begin(intersection_points) + info.travels_to_ip_index; } else { ip = boost::begin(intersection_points) + info.next_ip_index; } current_output.push_back(ip->point); return true; } template inline bool turning(Info const& info, int direction) { // If it is turning in specified direction (RIGHT for intersection, // LEFT for union, and NOT arriving at that point return info.direction == direction && info.arrival != 1 //&& (! (info.how == 'a' && info.direction != 0)) ; } template < typename GeometryOut, typename G1, typename G2, typename IntersectionPoints > inline bool select_next_ip_trivial(G1 const& g1, G2 const& g2, int direction, IntersectionPoints& intersection_points, typename boost::range_iterator::type & ip, GeometryOut& current_output) { // Check all intersecting segments on this IP: typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_vector tv; typedef typename boost::range_iterator::type tit_type; for (tit_type it = boost::begin(ip->info); it != boost::end(ip->info); ++it) { if (turning(*it, direction)) { return assign_next_ip(g1, g2, direction, intersection_points, ip, current_output, *it); } } return false; } template < typename GeometryOut, typename G1, typename G2, typename IntersectionPoints > inline bool select_next_ip_with_sorting(G1 const& g1, G2 const& g2, int direction, IntersectionPoints& intersection_points, typename boost::range_iterator::type & ip, GeometryOut& current_output) { typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_vector tv; typedef typename boost::range_iterator::type tit_type; typedef typename ip_type::traversal_type info_type; std::vector info; for (tit_type it = boost::begin(ip->info); it != boost::end(ip->info); ++it) { if (turning(*it, direction)) { info.push_back(&(*it)); } } // If there are no intersection points, fall-back to collinear cases or // if already in that case, return false. if (boost::size(info) == 0) { return direction == 0 ? false : select_next_ip_with_sorting(g1, g2, 0, intersection_points, ip, current_output); } // For one IP, it is easy: take that one. if (boost::size(info) == 1) { return assign_next_ip(g1, g2, direction, intersection_points, ip, current_output, *info.front()); } // In case of direction 0, also take first one // TODO: sort this vector somehow, there are more rows, it is too // arbitrary to take first one (though working well) if (direction == 0) { return assign_next_ip(g1, g2, direction, intersection_points, ip, current_output, *info.front()); } // For more, sort the information on direction, take the most left / right one //std::cout << " " << boost::size(info); std::sort(info.begin(), info.end(), on_direction(*ip, direction)); return assign_next_ip(g1, g2, direction, intersection_points, ip, current_output, *info.back()); } template < typename GeometryOut, typename G1, typename G2, typename IntersectionPoints > inline bool select_next_ip(G1 const& g1, G2 const& g2, int direction, IntersectionPoints& intersection_points, typename boost::range_iterator::type & ip, GeometryOut& current_output) { if (ip->trivial) { return select_next_ip_trivial(g1, g2, direction, intersection_points, ip, current_output); } else { return select_next_ip_with_sorting(g1, g2, direction, intersection_points, ip, current_output); } } template inline bool is_starting_point(IntersectionPoint const& ip, int direction) { for (typename IntersectionPoint::traversal_vector::const_iterator it = boost::begin(ip.info); it != boost::end(ip.info); ++it) { if (it->direction == direction && it->arrival != 1) { return true; } } return false; } template inline void stop_gracefully(Container& container, bool& stop, std::string const& reason) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "STOPPING: " << reason << std::endl; #endif stop = true; if (container.size() > 0) { container.push_back(container.front()); } } }} // namespace detail::intersection #endif // DOXYGEN_NO_DETAIL /*! \brief Traverses through intersection points / geometries \ingroup overlay */ template < typename GeometryOut, typename Geometry1, typename Geometry2, typename IntersectionPoints, typename OutputIterator > inline void traverse(Geometry1 const& geometry1, Geometry2 const& geometry2, int direction, IntersectionPoints& intersection_points, bool /* trivial */, OutputIterator out) { typedef typename boost::range_iterator ::type ip_iterator; typedef typename boost::range_value::type ip_type; typedef typename ip_type::traversal_vector tv; typedef typename boost::range_iterator::type tit_type; typedef typename ip_type::traversal_type info_type; GeometryOut current_output; // Iterate through all unvisited points for (ip_iterator it = boost::begin(intersection_points); it != boost::end(intersection_points); ++it) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "TRY traversal: " << *it; #endif if (it->visit_code == detail::intersection::VISIT_NONE // UNION may operate on non-starting points, but INTERSECTION may not. // TODO: re-evaluate that && (direction == 1 || detail::intersection::is_starting_point(*it, direction) ) ) { for (tit_type iit = boost::begin(it->info); iit != boost::end(it->info); ++iit) { if (iit->arrival == -1 && iit->visit_code == detail::intersection::VISIT_NONE && iit->direction == direction) { it->visit_code = detail::intersection::VISIT_START; iit->visit_code = detail::intersection::VISIT_START; current_output.push_back(it->point); ip_iterator current = it; #ifdef GGL_DEBUG_INTERSECTION std::cout << "START traversal: " << *current; #endif detail::intersection::assign_next_ip(geometry1, geometry2, direction, intersection_points, current, current_output, *iit); std::vector segments; segments.push_back(iit->seg_id); unsigned int i = 0; bool stop = false; while (current != it && ! stop) { #ifdef GGL_DEBUG_INTERSECTION std::cout << "traverse: " << *current; #endif // We assume clockwise polygons only, non self-intersecting, closed. // However, the input might be different, and checking validity // is up to the library user. // Therefore we make here some sanity checks. If the input // violates the assumptions, the output polygon will not be correct // but the routine will stop and output the current polygon, and // will continue with the next one. // Below three reasons to stop. if (! detail::intersection::select_next_ip(geometry1, geometry2, direction, intersection_points, current, current_output)) { // Should not occur in valid (non-self-intersecting) polygons // Should not occur in self-intersecting polygons without spikes // Might occur in polygons with spikes detail::intersection::stop_gracefully( current_output, stop, "Dead end"); } if (current->visit_code == detail::intersection::VISIT_VISITED) { // It visits a visited node again, without passing the start node. // This makes it suspicious for endless loops // Check if it is really same node detail::intersection::stop_gracefully( current_output, stop, "Visit again"); } if (i++ > intersection_points.size()) { // Sanity check: there may be never more loops // than intersection points. detail::intersection::stop_gracefully( current_output, stop, "Endless loop"); } current->visit_code = detail::intersection::VISIT_VISITED; } iit->visit_code = detail::intersection::VISIT_FINISH; #ifdef GGL_DEBUG_INTERSECTION std::cout << "finish: " << *current; std::cout << ggl::wkt(current_output) << std::endl; #endif *out = current_output; ++out; current_output.clear(); } } it->visit_code = detail::intersection::VISIT_FINISH; } } } } // namespace ggl #endif // GGL_ALGORITHMS_OVERLAY_TRAVERSE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/parse.hpp000066400000000000000000000056271177067165300244040ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_PARSE_HPP #define GGL_ALGORITHMS_PARSE_HPP #include #include #include #include #include // TODO: remove used EXTENSION here (result should be part of parsing strategy) #include /*! \defgroup parse parse and assign string values */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { } // namespace detail #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct parsing { }; template struct parsing { template static inline void parse(P& point, std::string const& c1, std::string const& c2, S const& strategy) { assert_dimension(); dms_result r1 = strategy(c1.c_str()); dms_result r2 = strategy(c2.c_str()); if (0 == r1.axis()) set<0>(point, r1); else set<1>(point, r1); if (0 == r2.axis()) set<0>(point, r2); else set<1>(point, r2); } static inline void parse(P& point, std::string const& c1, std::string const& c2) { // strategy-parser corresponding to degree/radian typename strategy_parse < typename cs_tag

::type, typename coordinate_system

::type >::type strategy; parse(point, c1, c2, strategy); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief parse two strings to a spherical/geographic point, using W/E/N/S \ingroup parse */ template inline void parse(G& geometry, const std::string& c1, const std::string& c2) { dispatch::parsing::type, G>::parse(geometry, c1, c2); } /*! \brief parse two strings to a spherical/geographic point, using a specified strategy \details user can use N/E/S/O or N/O/Z/W or other formats \ingroup parse */ template inline void parse(G& geometry, const std::string& c1, const std::string& c2, S const& strategy) { dispatch::parsing::type, G>::parse(geometry, c1, c2, strategy); } // There will be a parsing function with three arguments (ANGLE,ANGLE,RADIUS) template inline G parse(const std::string& c1, const std::string& c2) { G geometry; dispatch::parsing::type, G>::parse(geometry, c1, c2); return geometry; } } // namespace ggl #endif // GGL_ALGORITHMS_PARSE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/perimeter.hpp000066400000000000000000000100671177067165300252600ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_PERIMETER_HPP #define GGL_ALGORITHMS_PERIMETER_HPP #include #include #include #include #include #include #include #include /*! \defgroup perimeter perimeter calculation The perimeter algorithm is implemented for polygon,box,linear_ring,multi_polygon */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace perimeter { template struct range_perimeter : detail::length::range_length { }; // might be merged with "range_area" with policy to sum/subtract interior rings template struct polygon_perimeter { static inline double apply(Polygon const& poly, S const& strategy) { typedef typename ring_type::type ring_type; typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator_type; double sum = std::abs(range_perimeter::apply(exterior_ring(poly), strategy)); for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); it++) { sum += std::abs(range_perimeter::apply(*it, strategy)); } return sum; } }; }} // namespace detail:;perimeter #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { // Default perimeter is 0.0, specializations implement calculated values template struct perimeter : detail::calculate_null {}; template struct perimeter : detail::perimeter::range_perimeter {}; template struct perimeter : detail::perimeter::polygon_perimeter {}; // box,n-sphere: to be implemented } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Calculate perimeter of a geometry \ingroup perimeter \details The function perimeter returns the perimeter of a geometry, using the default distance-calculation-strategy \param geometry the geometry, be it a ggl::ring, vector, iterator pair, or any other boost compatible range \return the perimeter */ template inline double perimeter(Geometry const& geometry) { typedef typename point_type::type point_type; typedef typename cs_tag::type cs_tag; typedef typename strategy_distance < cs_tag, cs_tag, point_type, point_type >::type strategy_type; return dispatch::perimeter < typename tag::type, Geometry, strategy_type >::apply(geometry, strategy_type()); } /*! \brief Calculate perimeter of a geometry \ingroup perimeter \details The function perimeter returns the perimeter of a geometry, using specified strategy \param geometry the geometry, be it a ggl::ring, vector, iterator pair, or any other boost compatible range \param strategy strategy to be used for distance calculations. \return the perimeter */ template inline double perimeter(Geometry const& geometry, Strategy const& strategy) { return dispatch::perimeter < typename tag::type, Geometry, Strategy >::apply(geometry, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_PERIMETER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/point_on_line.hpp000066400000000000000000000050001177067165300261070ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_POINT_ON_LINE_HPP #define GGL_ALGORITHMS_POINT_ON_LINE_HPP #include #include #include namespace ggl { //---------------------------------------------------------------------- // Function : point_on_linestring -> rename to alongLine NO, different //---------------------------------------------------------------------- // Purpose : Calculates coordinates of a point along a given line // on a specified distance // Parameters : const L& : line, // float position: position to calculate point // P& point: point to calculate // Return : true if point lies on line //---------------------------------------------------------------------- // Author : Barend, Geodan BV Amsterdam // Date : spring 1996 //---------------------------------------------------------------------- template bool point_on_linestring(const L& line, const double& position, P& point) { double current_distance = 0.0; if (line.size() < 2) { return false; } typename L::const_iterator vertex = line.begin(); typename L::const_iterator previous = vertex++; while (vertex != line.end()) { double const dist = distance(*previous, *vertex); current_distance += dist; if (current_distance > position) { // It is not possible that dist == 0 here because otherwise // the current_distance > position would not become true (current_distance is increased by dist) double const fraction = 1.0 - ((current_distance - position) / dist); // point i is too far, point i-1 to near, add fraction of // distance in each direction point.x ( previous->x() + (vertex->x() - previous->x()) * fraction); point.y ( previous->y() + (vertex->y() - previous->y()) * fraction); return true; } previous = vertex++; } // point at specified position does not lie on line return false; } } // namespace ggl #endif // GGL_ALGORITHMS_POINT_ON_LINE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/remove_holes_if.hpp000066400000000000000000000055321177067165300264320ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHM_REMOVE_HOLES_IF_HPP #define GGL_ALGORITHM_REMOVE_HOLES_IF_HPP #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace remove_holes_if { template struct polygon_remove_holes_if { static inline void apply(Polygon& poly, Predicate const& predicate) { typename interior_type::type& rings = interior_rings(poly); // Remove rings using erase-remove-idiom // http://en.wikipedia.org/wiki/Erase-remove_idiom rings.erase( std::remove_if(boost::begin(rings), boost::end(rings), predicate), boost::end(rings)); } }; }} // namespace detail::remove_holes_if #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { // Default implementation does nothing template struct remove_holes_if { static inline void apply(Geometry&, Predicate const& ) {} }; template struct remove_holes_if : detail::remove_holes_if::polygon_remove_holes_if { }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Remove holes from a geometry (polygon, multi-polygon) using a specified condition */ template inline void remove_holes_if(Geometry& geometry, Predicate const& predicate) { dispatch::remove_holes_if < typename tag::type, Geometry, Predicate >::apply(geometry, predicate); } // CONVENIENT PREDICATES might be moved elsewhere template struct elongated_hole { inline elongated_hole(double ratio) : m_ratio(ratio) {} inline bool operator()(Ring const& ring) const { if (ring.size() >= 4) { double a = area(ring); double p = perimeter(ring); return std::abs(a/p) < m_ratio; } // Rings with less then 4 points (including closing) // are also considered as small and thus removed return true; } private : double m_ratio; }; template struct invalid_hole { inline bool operator()(Ring const& ring) const { return ring.size() < 4; } }; } // namespace ggl #endif // GGL_ALGORITHM_REMOVE_HOLES_IF_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/sectionalize.hpp000066400000000000000000000356151177067165300257630ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_SECTIONALIZE_HPP #define GGL_ALGORITHMS_SECTIONALIZE_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup sectionalize sectionalize: split a geometry (polygon, linestring, etc) into monotonic sections \par Geometries: - LINESTRING: - RING: - POLYGON: - BOX */ namespace ggl { /*! \brief Structure containing section information \details Section information consists of a bounding box, direction information (if it is increasing or decreasing, per dimension), index information (begin-end, ring, multi) and the number of segments in this section \tparam Box box-type \tparam DimensionCount number of dimensions for this section \ingroup sectionalize */ template struct section { typedef Box box_type; int directions[DimensionCount]; int ring_index; int multi_index; Box bounding_box; int begin_index; int end_index; std::size_t count; std::size_t range_count; bool duplicate; int non_duplicate_index; inline section() : ring_index(-99) , multi_index(-99) , begin_index(-1) , end_index(-1) , count(0) , range_count(0) , duplicate(false) , non_duplicate_index(-1) { assign_inverse(bounding_box); for (register std::size_t i = 0; i < DimensionCount; i++) { directions[i] = 0; } } }; /*! \brief Structure containing a collection of sections \note Derived from a vector, proves to be faster than of deque \note vector might be templated in the future \ingroup sectionalize */ template struct sections : std::vector > { typedef Box box_type; static const std::size_t value = DimensionCount; }; #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace sectionalize { template struct get_direction_loop { typedef typename coordinate_type::type coordinate_type; static inline void apply(Segment const& seg, int directions[DimensionCount]) { coordinate_type const diff = ggl::get<1, Dimension>(seg) - ggl::get<0, Dimension>(seg); directions[Dimension] = diff > 0 ? 1 : (diff < 0 ? -1 : 0); get_direction_loop < Segment, Dimension + 1, DimensionCount >::apply(seg, directions); } }; template struct get_direction_loop { static inline void apply(Segment const& seg, int directions[DimensionCount]) { boost::ignore_unused_variable_warning(seg); boost::ignore_unused_variable_warning(directions); } }; template struct copy_loop { static inline void apply(const T source[DimensionCount], T target[DimensionCount]) { target[Dimension] = source[Dimension]; copy_loop::apply(source, target); } }; template struct copy_loop { static inline void apply(const T source[DimensionCount], T target[DimensionCount]) { boost::ignore_unused_variable_warning(source); boost::ignore_unused_variable_warning(target); } }; template struct compare_loop { static inline bool apply(const T source[DimensionCount], const T target[DimensionCount]) { bool const not_equal = target[Dimension] != source[Dimension]; return not_equal ? false : compare_loop < T, Dimension + 1, DimensionCount >::apply(source, target); } }; template struct compare_loop { static inline bool apply(const T source[DimensionCount], const T target[DimensionCount]) { boost::ignore_unused_variable_warning(source); boost::ignore_unused_variable_warning(target); return true; } }; template struct check_duplicate_loop { typedef typename coordinate_type::type coordinate_type; static inline bool apply(Segment const& seg) { coordinate_type const diff = ggl::get<1, Dimension>(seg) - ggl::get<0, Dimension>(seg); if (! ggl::math::equals(diff, 0)) { return false; } return check_duplicate_loop < Segment, Dimension + 1, DimensionCount >::apply(seg); } }; template struct check_duplicate_loop { static inline bool apply(Segment const&) { return true; } }; template struct assign_loop { static inline void apply(T dims[DimensionCount], int const value) { dims[Dimension] = value; assign_loop::apply(dims, value); } }; template struct assign_loop { static inline void apply(T dims[DimensionCount], int const) { boost::ignore_unused_variable_warning(dims); } }; template < typename Range, typename Point, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize_range { static inline void apply(Range const& range, Sections& sections, int ring_index = -1, int multi_index = -1) { typedef segment segment_type; std::size_t const n = boost::size(range); if (n == 0) { // Zero points, no section return; } if (n == 1) { // Line with one point ==> no sections return; } int i = 0; int ndi = 0; // non duplicate index typedef typename boost::range_value::type sections_range_type; sections_range_type section; typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); for(iterator_type previous = it++; it != boost::end(range); previous = it++, i++) { segment_type s(*previous, *it); int direction_classes[DimensionCount] = {0}; get_direction_loop < segment_type, 0, DimensionCount >::apply(s, direction_classes); // if "dir" == 0 for all point-dimensions, it is duplicate. // Those sections might be omitted, if wished, lateron bool check_duplicate = true; //? bool duplicate = false; if (check_duplicate && direction_classes[0] == 0) { // Recheck because all dimensions should be checked, // not only first one, // Note that DimensionCount might be < dimension

::value if (check_duplicate_loop < segment_type, 0, ggl::dimension::type::value >::apply(s) ) { duplicate = true; // Change direction-info to force new section // Note that wo consecutive duplicate segments will generate // only one duplicate-section. // Actual value is not important as long as it is not -1,0,1 assign_loop < int, 0, DimensionCount >::apply(direction_classes, -99); } } if (section.count > 0 && (!compare_loop < int, 0, DimensionCount >::apply(direction_classes, section.directions) || section.count > MaxCount ) ) { sections.push_back(section); section = sections_range_type(); } if (section.count == 0) { section.begin_index = i; section.ring_index = ring_index; section.multi_index = multi_index; section.duplicate = duplicate; section.non_duplicate_index = ndi; section.range_count = boost::size(range); copy_loop < int, 0, DimensionCount >::apply(direction_classes, section.directions); ggl::combine(section.bounding_box, *previous); } ggl::combine(section.bounding_box, *it); section.end_index = i + 1; section.count++; if (! duplicate) { ndi++; } } if (section.count > 0) { sections.push_back(section); } } }; template < typename Polygon, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize_polygon { static inline void apply(Polygon const& poly, Sections& sections, int multi_index = -1) { typedef typename point_type::type point_type; typedef typename ring_type::type ring_type; typedef sectionalize_range < ring_type, point_type, Sections, DimensionCount, MaxCount > sectionalizer_type; typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator_type; sectionalizer_type::apply(exterior_ring(poly), sections, -1, multi_index); int i = 0; for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it, ++i) { sectionalizer_type::apply(*it, sections, i, multi_index); } } }; template < typename Box, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize_box { static inline void apply(Box const& box, Sections& sections) { typedef typename point_type::type point_type; assert_dimension(); // Add all four sides of the 2D-box as separate section. // Easiest is to convert it to a polygon. // However, we don't have the polygon type // (or polygon would be a helper-type). // Therefore we mimic a linestring/std::vector of 5 points point_type ll, lr, ul, ur; assign_box_corners(box, ll, lr, ul, ur); std::vector points; points.push_back(ll); points.push_back(ul); points.push_back(ur); points.push_back(lr); points.push_back(ll); sectionalize_range < std::vector, point_type, Sections, DimensionCount, MaxCount >::apply(points, sections); } }; }} // namespace detail::sectionalize #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename Tag, typename Geometry, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize {}; template < typename Box, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize : detail::sectionalize::sectionalize_box < Box, Sections, DimensionCount, MaxCount > {}; template < typename LineString, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize < linestring_tag, LineString, Sections, DimensionCount, MaxCount > : detail::sectionalize::sectionalize_range < LineString, typename point_type::type, Sections, DimensionCount, MaxCount > {}; template < typename Range, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize : detail::sectionalize::sectionalize_range < Range, typename point_type::type, Sections, DimensionCount, MaxCount > {}; template < typename Polygon, typename Sections, std::size_t DimensionCount, std::size_t MaxCount > struct sectionalize : detail::sectionalize::sectionalize_polygon < Polygon, Sections, DimensionCount, MaxCount > {}; } // namespace dispatch #endif /*! \brief Split a geometry into monotonic sections \ingroup sectionalize \tparam Geometry type of geometry to check \tparam Sections type of sections to create \param geometry geometry to create sections from \param sections structure with sections */ template inline void sectionalize(Geometry const& geometry, Sections& sections) { // A maximum of 10 segments per section seems to give the fastest results static const std::size_t max_segments_per_section = 10; typedef dispatch::sectionalize < typename tag::type, Geometry, Sections, Sections::value, max_segments_per_section > sectionalizer_type; sections.clear(); sectionalizer_type::apply(geometry, sections); } } // namespace ggl #endif // GGL_ALGORITHMS_SECTIONALIZE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/selected.hpp000066400000000000000000000204731177067165300250560ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_SELECTED_HPP #define GGL_ALGORITHMS_SELECTED_HPP #include #include #include #include #include #include #include #include #include #include /*! \defgroup selected selection: check if a geometry is "selected" by a point Checks if one geometry is selected by a point lying within or in the neighborhood of that geometry \par Geometries: - POINT: checks if points are CLOSE TO each other (< search_radius) - LINESTRING: checks if selection point is CLOSE TO linestring (< search_radius) - RING: checks if selection point is INSIDE the ring, search radius is ignored - POLYGON: checks if selection point is INSIDE the polygon, but not inside any of its holes */ namespace ggl { /*! \ingroup impl */ #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace selected { /*! \details Checks, per dimension, if d[I] not larger than search distance. If true for all dimensions then returns true. If larger stops immediately and returns false. Calculate during this process the sum, which is only valid if returning true */ template struct differences_loop { static inline bool apply(P1 const& p1, P2 const& p2, T const& distance, T& sum) { typedef typename select_coordinate_type::type coordinate_type; coordinate_type const c1 = boost::numeric_cast(get(p1)); coordinate_type const c2 = boost::numeric_cast(get(p2)); T const d = std::abs(c1 - c2); if (d > distance) { return false; } sum += d * d; return differences_loop::apply(p1, p2, distance, sum); } }; template struct differences_loop { static inline bool apply(P1 const&, P2 const&, T const&, T&) { return true; } }; template struct outside_loop { static inline bool apply(S const& seg, P const& point, T const& distance) { typedef typename select_coordinate_type::type coordinate_type; coordinate_type const v = boost::numeric_cast(get(point)); coordinate_type const s1 = get<0, D>(seg); coordinate_type const s2 = get<1, D>(seg); // Out of reach if left/bottom or right/top of both points making up the segment // I know and currently accept that these comparisons/calculations are done twice per point if ((v < s1 - distance && v < s2 - distance) || (v > s1 + distance && v > s2 + distance)) { return true; } return outside_loop::apply(seg, point, distance); } }; template struct outside_loop { static inline bool apply(S const&, P const&, T const&) { return false; } }; template struct close_to_point { static inline bool apply(P1 const& point, P1 const& selection_point, T const& search_radius) { assert_dimension_equal(); T sum = 0; if (differences_loop < P1, P2, T, 0, dimension::type::value >::apply(point, selection_point, search_radius, sum)) { return sum <= search_radius * search_radius; } return false; } }; template struct close_to_segment { static inline bool apply(S const& seg, P const& selection_point, T const& search_radius) { assert_dimension_equal(); if (! outside_loop < S, P, T, 0, dimension

::type::value >::apply(seg, selection_point, search_radius)) { // Not outside, calculate dot product/square distance to segment. // Call corresponding strategy typedef typename strategy_distance_segment < typename cs_tag

::type, typename cs_tag::type, P, S >::type strategy_type; typedef typename strategy_type::return_type return_type; strategy_type strategy; return_type result = strategy(selection_point, seg); return result < search_radius; } return false; } }; template struct close_to_range { static inline bool apply(R const& range, P const& selection_point, T const& search_radius) { assert_dimension_equal(); std::size_t const n = boost::size(range); if (n == 0) { // Line with zero points, never close return false; } typedef typename point_type::type point_type; typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); if (n == 1) { // Line with one point ==> close to point return close_to_point::apply(*it, selection_point, search_radius); } iterator_type previous = it++; while(it != boost::end(range)) { typedef segment segment_type; segment_type s(*previous, *it); if (close_to_segment::apply(s, selection_point, search_radius)) { return true; } previous = it++; } return false; } }; template struct use_within { static inline bool apply(G const& geometry, P const& selection_point, T const& search_radius) { // Note the reversion, point-in-poly -> first point, then poly // Selected-at-point -> first geometry, then point return dispatch::within::apply(selection_point, geometry); } }; }} // namespace detail::selected #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { /*! \tparam TD topological dimension */ template struct selected { }; template struct selected : detail::selected::close_to_point { }; // SEGMENT, TODO HERE (close_to_segment) template struct selected : detail::selected::close_to_range { }; template struct selected : detail::selected::use_within { }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Checks if one geometry is selected by a point lying within or in the neighborhood of that geometry \ingroup selected \tparam G type of geometry to check \tparam P type of point to check \tparam T type of search radius \param geometry geometry which might be located in the neighborhood \param selection_point point to select the geometry \param search_radius for points/linestrings: defines radius of "neighborhood" to find things in \return true if point is within or close to the other geometry */ template inline bool selected(G const& geometry, P const& selection_point, T const& search_radius) { typedef dispatch::selected < typename tag::type, G, topological_dimension::value, P, T > selector_type; return selector_type::apply(geometry, selection_point, search_radius); } } // namespace ggl #endif // GGL_ALGORITHMS_SELECTED_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/simplify.hpp000066400000000000000000000277451177067165300251330ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_SIMPLIFY_HPP #define GGL_ALGORITHMS_SIMPLIFY_HPP #include #include #include #include #include #include #include #include /*! \defgroup simplify simplification (generalization) \par Source description: - Wikipedia: given a 'curve' composed of line segments to find a curve not too dissimilar but that has fewer points \see http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm \par Performance Performance is measured on simplification of a collection of rings, such that 10% of the points is kept. - 2776 counties of US are simplified in 0.8 seconds (2.5 seconds or 11.5 seconds in 2 other libraries) - 3918 zipcode areas of the Netherlands are simplified in 0.03 seconds (0.1 seconds or 0.45 seconds in 2 other libraries) \par Geometries - LINESTRING: \image html simplify_linestring.png - POLYGON: simplifying a valid simple polygon (which never intersects itself) might result in an invalid polygon, where the simplified rings intersect themselves or one of the other outer or inner rings. Efficient simplification of a ring/polygon is still an "Open Problem" (http://maven.smith.edu/~orourke/TOPP/P24.html#Problem.24) */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace simplify { template inline void simplify_range_strategy(R const& range, OutputIterator out, double max_distance, S const& strategy) { if (boost::begin(range) == boost::end(range) || max_distance < 0) { std::copy(boost::begin(range), boost::end(range), out); } else { typename boost::range_const_iterator::type it = boost::begin(range) + 1; if (it == boost::end(range) || it + 1 == boost::end(range)) { std::copy(boost::begin(range), boost::end(range), out); } else { strategy.simplify(range, out, max_distance); } } } template inline void simplify_range(R const& range, OutputIterator out, double max_distance) { // Define default strategy typedef typename point_type::type point_type; typedef typename cs_tag::type cs_tag; typedef typename strategy_distance_segment < cs_tag, cs_tag, point_type, segment >::type strategy_type; strategy::simplify::douglas_peucker douglas; simplify_range_strategy(range, out, max_distance, douglas); } template inline void simplify_ring(R const& r_in, OutputIterator out, double max_distance, S const& strategy) { // Call do_container for a ring // The first/last point (the closing point of the ring) should maybe be excluded because it // lies on a line with second/one but last. Here it is never excluded. // Note also that, especially if max_distance is too large, the output ring might be self intersecting // while the input ring is not, although chances are low in normal polygons // Finally the inputring might have 4 points (=correct), the output < 4(=wrong) if (boost::size(r_in) <= 4 || max_distance < 0) { std::copy(boost::begin(r_in), boost::end(r_in), out); } else { simplify_range_strategy(r_in, out, max_distance, strategy); } } template inline void simplify_polygon(Y const& poly_in, Y& poly_out, double max_distance, S const& strategy) { typedef typename boost::range_iterator ::type>::type iterator_type; typedef typename boost::range_const_iterator ::type>::type const_iterator_type; poly_out.clear(); // Note that if there are inner rings, and distance is too large, they might intersect with the // outer ring in the output, while it didn't in the input. simplify_ring(exterior_ring(poly_in), std::back_inserter(exterior_ring(poly_out)), max_distance, strategy); interior_rings(poly_out).resize(boost::size(interior_rings(poly_in))); const_iterator_type it_in = boost::begin(interior_rings(poly_in)); iterator_type it_out = boost::begin(interior_rings(poly_out)); for (; it_in != boost::end(interior_rings(poly_in)); it_in++, it_out++) { simplify_ring(*it_in, std::back_inserter(*it_out), max_distance, strategy); } } template inline void simplify_polygon(Y const& poly_in, Y& poly_out, double max_distance) { // Define default strategy typedef typename ring_type::type ring_type; typedef std::back_insert_iterator iterator_type; typedef typename point_type::type point_type; typedef typename cs_tag::type cs_tag; typedef typename strategy_distance_segment < cs_tag, cs_tag, point_type, segment >::type strategy_type; strategy::simplify::douglas_peucker douglas; simplify_polygon(poly_in, poly_out, max_distance, douglas); } }} // namespace detail::simplify #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct simplify { }; // Partial specializations template struct simplify { template static inline void apply(R const& range, OutputIterator out, double max_distance, S const& strategy) { strategy.simplify(range, out, max_distance); } template static inline void apply(R const& range, OutputIterator out, double max_distance) { // Define default strategy typedef typename point_type::type point_type; typedef typename cs_tag::type cs_tag; typedef typename strategy_distance_segment < cs_tag, cs_tag, point_type, segment >::type strategy_type; strategy::simplify::douglas_peucker douglas; detail::simplify::simplify_range_strategy(range, out, max_distance, douglas); } }; template struct simplify { /// Simplify a ring, using a strategy template static inline void apply(R const& ring_in, R& ring_out, double max_distance, S const& strategy) { using detail::simplify::simplify_ring; simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, strategy); } /// Simplify a ring static inline void apply(R const& ring_in, R& ring_out, double max_distance) { // Define default strategy typedef typename point_type::type point_type; typedef typename cs_tag::type cs_tag; typedef typename strategy_distance_segment < cs_tag, cs_tag, point_type, segment >::type strategy_type; typedef std::back_insert_iterator iterator_type; strategy::simplify::douglas_peucker douglas; detail::simplify::simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, douglas); } }; template struct simplify { /// Simplify a polygon, using a strategy template static inline void apply(P const& poly_in, P& poly_out, double max_distance, S const& strategy) { detail::simplify::simplify_polygon(poly_in, poly_out, max_distance, strategy); } /// Simplify a polygon static inline void apply(P const& poly_in, P& poly_out, double max_distance) { detail::simplify::simplify_polygon(poly_in, poly_out, max_distance); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH // Model 1, using output iterator /*! \brief Simplify a geometry \ingroup simplify \details The simplify algorithm removes points, keeping the shape as much as possible. This version of simplify uses an output iterator \param geometry the geometry to be simplified, being a ggl::linestring, vector, iterator pair, or any other boost compatible range \param out output iterator, outputs all simplified points \param max_distance distance (in units of input coordinates) of a vertex to other segments to be removed \par Example: The simplify algorithm can be used as following: \dontinclude doxygen_examples.cpp \skip example_simplify_linestring1 \line { \until } */ template inline void simplify(const G& geometry, O out, double max_distance) { typedef dispatch::simplify::type, G> simplify_type; simplify_type::apply(geometry, out, max_distance); } /*! \brief Simplify a geometry \ingroup simplify \details The simplify algorithm removes points, keeping the shape as much as possible. This version of simplify uses an output iterator and a simplify strategy \param geometry the geometry to be simplified, being a ggl::linestring, vector, iterator pair, or any other boost compatible range \param out output iterator, outputs all simplified points \param max_distance distance (in units of input coordinates) of a vertex to other segments to be removed \param strategy simplify strategy to be used for simplification, might include point-distance strategy \par Example: The simplify algorithm with strategy can be used as following: \dontinclude doxygen_examples.cpp \skip example_simplify_linestring2 \line { \until } */ template inline void simplify(const G& geometry, O out, double max_distance, S const& strategy) { typedef dispatch::simplify::type, G> simplify_type; simplify_type::apply(geometry, out, max_distance, strategy); } // Model 2, where output is same type as input /*! \brief Simplify a geometry \ingroup simplify \details This version of simplify simplifies a geometry using the default strategy (Douglas Peucker), where the output is of the same geometry type as the input. \param geometry input geometry, to be simplified \param out output geometry, simplified version of the input geometry \param max_distance distance (in units of input coordinates) of a vertex to other segments to be removed */ template inline void simplify(const G& geometry, G& out, double max_distance) { typedef dispatch::simplify::type, G> simplify_type; simplify_type::apply(geometry, out, max_distance); } /*! \brief Simplify a geometry \ingroup simplify \details This version of simplify simplifies a geometry using a specified strategy where the output is of the same geometry type as the input. \param geometry input geometry, to be simplified \param out output geometry, simplified version of the input geometry \param max_distance distance (in units of input coordinates) of a vertex to other segments to be removed \param strategy simplify strategy to be used for simplification, might include point-distance strategy */ template inline void simplify(const G& geometry, G& out, double max_distance, S const& strategy) { typedef dispatch::simplify::type, G> simplify_type; simplify_type::apply(geometry, out, max_distance, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_SIMPLIFY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/transform.hpp000066400000000000000000000210131177067165300252700ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_TRANSFORM_HPP #define GGL_ALGORITHMS_TRANSFORM_HPP #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup transform transformations \brief Transforms from one geometry to another geometry, optionally using a strategy \details The transform algorithm automatically transforms from one coordinate system to another coordinate system. If the coordinate system of both geometries are the same, the geometry is copied. All point(s of the geometry) are transformed. There is a version without a strategy, transforming automatically, and there is a version with a strategy. This function has a lot of appliances, for example - transform from spherical coordinates to cartesian coordinates, and back - transform from geographic coordinates to cartesian coordinates (projections) and back - transform from degree to radian, and back - transform from and to cartesian coordinates (mapping, translations, etc) The automatic transformations look to the coordinate system family, and dimensions, of the point type and by this apply the strategy (internally bounded by traits classes). \par Examples: The example below shows automatic transformations to go from one coordinate system to another one: \dontinclude doxygen_2.cpp \skip example_for_transform() \skipline XYZ \until endl; The next example takes another approach and transforms from Cartesian to Cartesian: \skipline XY \until endl; \note Not every possibility is yet worked out, e.g. polar coordinate system is ignored until now \note This "transform" is broader then geodetic datum transformations, those are currently not worked out */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace transform { template struct transform_point { template static inline bool apply(P1 const& p1, P2& p2, S const& strategy) { return strategy(p1, p2); } }; template struct transform_box { template static inline bool apply(B1 const& b1, B2& b2, S const& strategy) { typedef typename point_type::type point_type1; typedef typename point_type::type point_type2; point_type1 lower_left, upper_right; assign_box_corner(b1, lower_left); assign_box_corner(b1, upper_right); point_type2 p1, p2; if (strategy(lower_left, p1) && strategy(upper_right, p2)) { // Create a valid box and therefore swap if necessary typedef typename coordinate_type::type coordinate_type; coordinate_type x1 = ggl::get<0>(p1) , y1 = ggl::get<1>(p1) , x2 = ggl::get<0>(p2) , y2 = ggl::get<1>(p2); if (x1 > x2) { std::swap(x1, x2); } if (y1 > y2) { std::swap(y1, y2); } set(b2, x1); set(b2, y1); set(b2, x2); set(b2, y2); return true; } return false; } }; template inline bool transform_range_out(R const& range, OutputIterator out, S const& strategy) { P point_out; for(typename boost::range_const_iterator::type it = boost::begin(range); it != boost::end(range); ++it) { if (! transform_point::type, P>::apply(*it, point_out, strategy)) { return false; } *out = point_out; ++out; } return true; } template struct transform_polygon { template static inline bool apply(const P1& poly1, P2& poly2, S const& strategy) { typedef typename interior_type::type interior1_type; typedef typename interior_type::type interior2_type; typedef typename ring_type::type ring1_type; typedef typename ring_type::type ring2_type; typedef typename point_type::type point2_type; ggl::clear(poly2); if (!transform_range_out(exterior_ring(poly1), std::back_inserter(exterior_ring(poly2)), strategy)) { return false; } interior_rings(poly2).resize(boost::size(interior_rings(poly1))); typedef typename boost::range_const_iterator::type iterator1_type; typedef typename boost::range_iterator::type iterator2_type; iterator1_type it1 = boost::begin(interior_rings(poly1)); iterator2_type it2 = boost::begin(interior_rings(poly2)); for ( ; it1 != boost::end(interior_rings(poly1)); ++it1, ++it2) { if (!transform_range_out(*it1, std::back_inserter(*it2), strategy)) { return false; } } return true; } }; template struct select_strategy { typedef typename strategy_transform < typename cs_tag::type, typename cs_tag::type, typename coordinate_system::type, typename coordinate_system::type, dimension::type::value, dimension::type::value, typename point_type::type, typename point_type::type >::type type; }; template struct transform_range { template static inline bool apply(R1 const& range1, R2& range2, S const& strategy) { typedef typename point_type::type point_type; ggl::clear(range2); return transform_range_out(range1, std::back_inserter(range2), strategy); } }; }} // namespace detail::transform #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct transform {}; template struct transform : detail::transform::transform_point { }; template struct transform : detail::transform::transform_range { }; template struct transform : detail::transform::transform_range { }; template struct transform : detail::transform::transform_polygon { }; template struct transform : detail::transform::transform_box { }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Transforms from one geometry to another geometry using a strategy \ingroup transform \tparam G1 first geometry type \tparam G2 second geometry type \tparam S strategy \param geometry1 first geometry \param geometry2 second geometry \param strategy the strategy to be used for transformation */ template inline bool transform(G1 const& geometry1, G2& geometry2, S const& strategy) { typedef dispatch::transform < typename tag::type, typename tag::type, G1, G2 > transform_type; return transform_type::apply(geometry1, geometry2, strategy); } /*! \brief Transforms from one geometry to another geometry using a strategy \ingroup transform \tparam G1 first geometry type \tparam G2 second geometry type \param geometry1 first geometry \param geometry2 second geometry \return true if the transformation could be done */ template inline bool transform(G1 const& geometry1, G2& geometry2) { typename detail::transform::select_strategy::type strategy; return transform(geometry1, geometry2, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_TRANSFORM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/within.hpp000066400000000000000000000266701177067165300245750ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_WITHIN_HPP #define GGL_ALGORITHMS_WITHIN_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace within { //------------------------------------------------------------------------------------------------------- // Implementation for boxes. Supports boxes in 2 or 3 dimensions, in Euclidian system // Todo: implement as strategy //------------------------------------------------------------------------------------------------------- template struct point_in_box { static bool inside(P const& p, B const& b) { if (get(p) <= get(b) || get(p) >= get(b)) { return false; } return point_in_box::inside(p, b); } }; template struct point_in_box { static bool inside(P const& p, B const& b) { return true; } }; //------------------------------------------------------------------------------------------------------- // Box-in-box, for 2/3 dimensions //------------------------------------------------------------------------------------------------------- template struct box_in_box { static inline bool inside(B1 const& b1, B2 const& b2) { if (get(b1) <= get(b2) || get(b1) >= get(b2)) { return false; } return box_in_box::inside(b1, b2); } }; template struct box_in_box { static inline bool inside(B1 const&, B2 const& b2) { return true; } }; //------------------------------------------------------------------------------------------------------- // Implementation for n-spheres. Supports circles or spheres, in 2 or 3 dimensions, in Euclidian system // Circle center might be of other point-type as geometry // Todo: implement as strategy //------------------------------------------------------------------------------------------------------- template inline bool point_in_circle(P const& p, C const& c) { assert_dimension(); typedef typename point_type::type point_type; typedef typename strategy_distance < typename cs_tag

::type, typename cs_tag::type, P, point_type >::type strategy_type; typedef typename strategy_type::return_type return_type; P const center = ggl::make

(get<0>(c), get<1>(c)); strategy_type distance; return_type const r = distance(p, center); return_type const rad = make_distance_result(get_radius<0>(c)); return r < rad; } /// 2D version template inline bool point_in_circle(const T& c1, const T& c2, C const& c) { typedef typename point_type::type point_type; point_type p = ggl::make(c1, c2); return point_in_circle(p, c); } template inline bool box_in_circle(B const& b, C const& c) { typedef typename point_type::type point_type; // Currently only implemented for 2d geometries assert_dimension(); assert_dimension(); // Box: all four points must lie within circle // Check points lower-left and upper-right, then lower-right and upper-left return point_in_circle(get(b), get(b), c) && point_in_circle(get(b), get(b), c) && point_in_circle(get(b), get(b), c) && point_in_circle(get(b), get(b), c); } // Generic "range-in-circle", true if all points within circle template inline bool range_in_circle(R const& range, C const& c) { assert_dimension(); assert_dimension(); for (typename boost::range_const_iterator::type it = boost::begin(range); it != boost::end(range); ++it) { if (! point_in_circle(*it, c)) { return false; } } return true; } template inline bool polygon_in_circle(Y const& poly, C const& c) { return range_in_circle(exterior_ring(poly), c); } template inline bool point_in_ring(P const& p, R const& r, S const& strategy) { if (boost::size(r) < 4) { return false; } typename S::state_type state(p); if (loop(r, strategy, state)) { return state.within(); } return false; } // Polygon: in exterior ring, and if so, not within interior ring(s) template inline bool point_in_polygon(P const& p, Y const& poly, S const& strategy) { if (point_in_ring(p, exterior_ring(poly), strategy)) { typedef typename boost::range_const_iterator ::type>::type iterator_type; for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { if (point_in_ring(p, *it, strategy)) { return false; } } return true; } return false; } }} // namespace detail::within #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct within {}; template struct within { static inline bool apply(P const& p, B const& b) { assert_dimension_equal(); return detail::within::point_in_box < P, B, 0, dimension

::type::value >::inside(p, b); } }; template struct within { static inline bool apply(B1 const& b1, B2 const& b2) { assert_dimension_equal(); return detail::within::box_in_box < B1, B2, 0, dimension::type::value >::inside(b1, b2); } }; template struct within { static inline bool apply(P const& p, C const& c) { return detail::within::point_in_circle(p, c); } }; template struct within { static inline bool apply(B const& b, C const& c) { return detail::within::box_in_circle(b, c); } }; template struct within { static inline bool apply(R const& ln, C const& c) { return detail::within::range_in_circle(ln, c); } }; template struct within { static inline bool apply(R const& r, C const& c) { return detail::within::range_in_circle(r, c); } }; template struct within { static inline bool apply(Y const& poly, C const& c) { return detail::within::polygon_in_circle(poly, c); } }; template struct within { static inline bool apply(P const& p, R const& r) { typedef typename boost::range_value::type point_type; typedef typename strategy_within < typename cs_tag

::type, typename cs_tag::type, P, point_type >::type strategy_type; return detail::within::point_in_ring(p, r, strategy_type()); } }; template struct within { static inline bool apply(P const& point, Y const& poly) { typedef typename point_type::type point_type; typedef typename strategy_within < typename cs_tag

::type, typename cs_tag::type, P, point_type >::type strategy_type; return detail::within::point_in_polygon(point, poly, strategy_type()); } template static inline bool apply(P const& point, Y const& poly, S const& strategy) { return detail::within::point_in_polygon(point, poly, strategy); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Within check \details Examine if one geometry is within another geometry (a.o. point in polygon) \ingroup boolean_relations \param geometry1 geometry which might be within the second geometry \param geometry2 geometry which might contain the first geometry \return true if geometry1 is completely contained within geometry2, else false \note The default strategy is used for within detection \par Source descriptions: - OGC: Returns 1 (TRUE) if this geometric object is "spatially within" another Geometry. \par Performance 2776 within determinations using bounding box and polygon are done in 0.09 seconds (other libraries: 0.14 seconds, 3.0 seconds, 3.8) \par Example: The within algorithm is used as following: \dontinclude doxygen_examples.cpp \skip example_within \line { \until } \par Geometries: - POINT + POLYGON: The well-known point-in-polygon, returning true if a point falls within a polygon (and not within one of its holes) \image html within_polygon.png - POINT + RING: returns true if point is completely within a ring \image html within_ring.png */ template inline bool within(G1 const& geometry1, G2 const& geometry2) { typedef dispatch::within < typename tag::type, typename tag::type, G1, G2 > within_type; return within_type::apply(geometry1, geometry2); } /*! \brief Within check using a strategy \ingroup boolean_relations \param geometry1 geometry which might be within the second geometry \param geometry2 geometry which might contain the first geometry \param strategy strategy to be used \return true if geometry1 is completely contained within geometry2, else false */ template inline bool within(G1 const& geometry1, G2 const& geometry2, S const& strategy) { typedef dispatch::within < typename tag::type, typename tag::type, G1, G2 > within_type; return within_type::apply(geometry1, geometry2, strategy); } } // namespace ggl #endif // GGL_ALGORITHMS_WITHIN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/arithmetic/000077500000000000000000000000001177067165300225275ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/arithmetic/arithmetic.hpp000066400000000000000000000135221177067165300253740ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ARITHMETIC_ARITHMETIC_HPP #define GGL_ARITHMETIC_ARITHMETIC_HPP #include #include #include #include #include #include /*! \defgroup arithmetic arithmetic: arithmetic operations on points */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct param { typedef typename boost::call_traits < typename coordinate_type

::type >::param_type type; }; template class Function> struct value_operation { C m_value; inline value_operation(const C& value) : m_value(value) {} template inline void apply(P& point) const { set(point, Function()(get(point), m_value)); } }; template class Function> struct point_operation { typedef typename coordinate_type::type coordinate_type; PointSrc const& m_source_point; inline point_operation(const PointSrc& point) : m_source_point(point) {} template inline void apply(PointDst& dest_point) const { set(dest_point, Function()(get(dest_point), get(m_source_point))); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief Adds a value to each coordinate of a point \ingroup arithmetic \details \param p point \param value value to add */ template inline void add_value(Point& p, typename detail::param::type value) { BOOST_CONCEPT_ASSERT( (concept::Point) ); for_each_coordinate(p, detail::value_operation::type, std::plus>(value)); } /*! \brief Adds a point to another \ingroup arithmetic \details The coordinates of the second point will be added to those of the first point. The second point is not modified. \param p1 first point \param p2 second point */ template inline void add_point(Point1& p1, Point2 const& p2) { BOOST_CONCEPT_ASSERT( (concept::Point) ); BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); for_each_coordinate(p1, detail::point_operation(p2)); } /*! \brief Subtracts a value to each coordinate of a point \ingroup arithmetic \details \param p point \param value value to subtract */ template inline void subtract_value(Point& p, typename detail::param::type value) { BOOST_CONCEPT_ASSERT( (concept::Point) ); for_each_coordinate(p, detail::value_operation::type, std::minus>(value)); } /*! \brief Subtracts a point to another \ingroup arithmetic \details The coordinates of the second point will be subtracted to those of the first point. The second point is not modified. \param p1 first point \param p2 second point */ template inline void subtract_point(Point1& p1, Point2 const& p2) { BOOST_CONCEPT_ASSERT( (concept::Point) ); BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); for_each_coordinate(p1, detail::point_operation(p2)); } /*! \brief Multiplies each coordinate of a point by a value \ingroup arithmetic \details \param p point \param value value to multiply by */ template inline void multiply_value(Point& p, typename detail::param::type value) { BOOST_CONCEPT_ASSERT( (concept::Point) ); for_each_coordinate(p, detail::value_operation::type, std::multiplies>(value)); } /*! \brief Multiplies a point by another \ingroup arithmetic \details The coordinates of the second point will be multiplied by those of the first point. The second point is not modified. \param p1 first point \param p2 second point \note This is *not* a dot, cross or wedge product. It is a mere field-by-field multiplication. */ template inline void multiply_point(Point1& p1, Point2 const& p2) { BOOST_CONCEPT_ASSERT( (concept::Point) ); BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); for_each_coordinate(p1, detail::point_operation(p2)); } /*! \brief Divides each coordinate of a point by a value \ingroup arithmetic \details \param p point \param value value to divide by */ template inline void divide_value(Point& p, typename detail::param::type value) { BOOST_CONCEPT_ASSERT( (concept::Point) ); for_each_coordinate(p, detail::value_operation::type, std::divides>(value)); } /*! \brief Divides a point by another \ingroup arithmetic \details The coordinates of the second point will be divided by those of the first point. The second point is not modified. \param p1 first point \param p2 second point */ template inline void divide_point(Point1& p1, Point2 const& p2) { BOOST_CONCEPT_ASSERT( (concept::Point) ); BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); for_each_coordinate(p1, detail::point_operation(p2)); } } // namespace ggl #endif // GGL_ARITHMETIC_ARITHMETIC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/arithmetic/dot_product.hpp000066400000000000000000000035451177067165300255750ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ARITHMETIC_DOT_PRODUCT_HPP #define GGL_ARITHMETIC_DOT_PRODUCT_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct dot_product_maker { static inline typename coordinate_type::type apply(P1 const& p1, P2 const& p2) { return get(p1) * get(p2) + dot_product_maker::apply(p1, p2); } }; template struct dot_product_maker { static inline typename coordinate_type::type apply(P1 const& p1, P2 const& p2) { return get(p1) * get(p2); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief Computes the dot product of 2 points \ingroup arithmetic \param p1 first point \param p2 second point \return the dot product */ template inline typename coordinate_type::type dot_product(P1 const& p1, P2 const& p2) { BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); return detail::dot_product_maker < P1, P2, 0, dimension::type::value - 1 >::apply(p1, p2); } } // namespace ggl #endif // GGL_ARITHMETIC_DOT_PRODUCT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/000077500000000000000000000000001177067165300213265ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/core/access.hpp000066400000000000000000000172631177067165300233110ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_ACCESS_HPP #define GGL_CORE_ACCESS_HPP #include #include #include #include #include #include namespace ggl { const int min_corner = 0; const int max_corner = 1; namespace traits { /*! \brief Traits class which gives access (get,set) to points \ingroup traits \par Geometries: - point - n-sphere (circle,sphere) for their center \par Specializations should provide: - static inline T get(const G&) - static inline void set(G&, const T&) \tparam G geometry */ template struct access {}; /*! \brief Traits class defining "get" and "set" to get and set point coordinate values \tparam G geometry (box, segment) \tparam I index (min_corner/max_corner for box, 0/1 for segment) \tparam D dimension \par Geometries: - box - segment \par Specializations should provide: - static inline T get(const G&) - static inline void set(G&, const T&) \ingroup traits */ template struct indexed_access {}; /*! \brief Traits class, optional, indicating that the std-library should be used \details The default geometry (linestring, ring, multi*) follow std:: for its modifying operations (push_back, clear, size, resize, reserve, etc) If they NOT follow the std:: library they should specialize this traits class \ingroup traits \par Geometries: - linestring - linear_ring \par Specializations should provide: - value (defaults to true) */ template struct use_std { static const bool value = true; }; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct access { //static inline T get(const G& ) {} //static inline void set(G& g, const T& value) {} }; template struct indexed_access { //static inline T get(const G& ) {} //static inline void set(G& g, const T& value) {} }; template struct access { static inline T get(const P& p) { return traits::access

::template get(p); } static inline void set(P& p, const T& value) { traits::access

::template set(p, value); } }; template struct access { static inline T get(const S& s) { return traits::access::template get(s); } static inline void set(S& s, const T& value) { traits::access::template set(s, value); } }; template struct indexed_access { static inline T get(const B& b) { return traits::indexed_access::get(b); } static inline void set(B& b, const T& value) { traits::indexed_access::set(b, value); } }; template struct indexed_access { static inline T get(const S& segment) { return traits::indexed_access::get(segment); } static inline void set(S& segment, const T& value) { traits::indexed_access::set(segment, value); } }; } // namespace core_dispatch #endif // DOXYGEN_NO_DISPATCH #ifndef DOXYGEN_NO_DETAIL namespace detail { // Two dummy tags to distinguish get/set variants below. // They don't have to be specified by the user. The functions are distinguished // by template signature also, but for e.g. GCC this is not enough. So give them // a different signature. struct signature_getset_dimension {}; struct signature_getset_index_dimension {}; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief get a coordinate value of a point / nsphere \return coordinate value \ingroup access \tparam D dimension \tparam G geometry \param geometry geometry to get coordinate value from \param dummy does not have to be specified */ template inline typename coordinate_type::type get(const G& geometry, detail::signature_getset_dimension* dummy = 0) { boost::ignore_unused_variable_warning(dummy); typedef typename boost::remove_const::type ncg_type; typedef core_dispatch::access < typename tag::type, ncg_type, typename coordinate_type::type, D > coord_access_type; return coord_access_type::get(geometry); } /*! \brief assign coordinate value to a point / sphere \ingroup access \tparam D dimension \tparam G geometry \param geometry geometry to assign coordinate to \param value coordinate value to assign \param dummy does not have to be specified */ template inline void set(G& geometry, const typename coordinate_type::type& value, detail::signature_getset_dimension* dummy = 0) { boost::ignore_unused_variable_warning(dummy); typedef typename boost::remove_const::type ncg_type; typedef core_dispatch::access < typename tag::type, ncg_type, typename coordinate_type::type, D > coord_access_type; coord_access_type::set(geometry, value); } // Note: doxygen needs a construct to distinguish get/set (like the gcc compiler) /*! \brief get a coordinate value of a box / segment \return coordinate value \ingroup access \tparam I index, for boxes: min_corner or max_corner. For segment: 0 / 1 \tparam D dimension \tparam G geometry \param geometry geometry to get coordinate value from \param dummy does not have to be specified */ template inline typename coordinate_type::type get(const G& geometry, detail::signature_getset_index_dimension* dummy = 0) { boost::ignore_unused_variable_warning(dummy); typedef typename boost::remove_const::type ncg_type; typedef core_dispatch::indexed_access < typename tag::type, ncg_type, typename coordinate_type::type, I, D > coord_access_type; return coord_access_type::get(geometry); } /*! \brief assign a coordinate value of a box / segment \ingroup access \tparam I index, for boxes: min_corner or max_corner. For segment: 0 / 1 \tparam D dimension \tparam G geometry \param geometry geometry to assign coordinate to \param value coordinate value to assign \param dummy does not have to be specified */ template inline void set(G& geometry, const typename coordinate_type::type& value, detail::signature_getset_index_dimension* dummy = 0) { boost::ignore_unused_variable_warning(dummy); typedef typename boost::remove_const::type ncg_type; typedef core_dispatch::indexed_access < typename tag::type, ncg_type, typename coordinate_type::type, I, D > coord_access_type; coord_access_type::set(geometry, value); } } // namespace ggl #endif // GGL_CORE_ACCESS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/000077500000000000000000000000001177067165300231445ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/box_concept.hpp000066400000000000000000000054671177067165300261740ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_BOX_CONCEPT_HPP #define GGL_CORE_CONCEPTS_BOX_CONCEPT_HPP #include #include #include namespace ggl { namespace concept { /*! \brief Checks box concept, using Boost Concept Check Library and metafunctions \ingroup concepts */ template struct Box { private : typedef typename point_type::type P; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { B* b; ggl::set(*b, ggl::get(*b)); dimension_checker::check(); } }; template struct dimension_checker { static void check() {} }; public : /// BCCL macro to check the Box concept BOOST_CONCEPT_USAGE(Box) { static const size_t N = dimension::value; dimension_checker::check(); dimension_checker::check(); } }; /*! \brief Checks Box concept (const version) \ingroup concepts \details The ConstBox concept check the same as the Box concept, but does not check write access. */ template struct ConstBox { private : typedef typename point_type::type P; typedef typename coordinate_type::type T; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { const B* b = 0; T coord(ggl::get(*b)); boost::ignore_unused_variable_warning(coord); dimension_checker::check(); } }; template struct dimension_checker { static void check() {} }; public : /// BCCL macro to check the ConstBox concept BOOST_CONCEPT_USAGE(ConstBox) { static const size_t N = dimension::value; dimension_checker::check(); dimension_checker::check(); } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_BOX_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/linestring_concept.hpp000066400000000000000000000037341177067165300275550ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_LINESTRING_CONCEPT_HPP #define GGL_CORE_CONCEPTS_LINESTRING_CONCEPT_HPP #include #include #include #include #include #include #include namespace ggl { namespace concept { /*! \brief Checks linestring concept, using Boost Concept Check Library and metafunctions \ingroup concepts */ template struct Linestring { private : typedef typename point_type::type P; BOOST_CONCEPT_ASSERT( (concept::Point

) ); BOOST_CONCEPT_ASSERT( (boost::RandomAccessRangeConcept) ); public : /// BCCL macro to check the Linestring concept BOOST_CONCEPT_USAGE(Linestring) { // Check if it can be modified L* ls; clear(*ls); append(*ls, P()); } }; /*! \brief Checks Linestring concept (const version) \ingroup concepts \details The ConstLinestring concept check the same as the Linestring concept, but does not check write access. */ template struct ConstLinestring { private : typedef typename point_type::type P; BOOST_CONCEPT_ASSERT( (concept::ConstPoint

) ); BOOST_CONCEPT_ASSERT( (boost::RandomAccessRangeConcept) ); public : /// BCCL macro to check the ConstLinestring concept BOOST_CONCEPT_USAGE(ConstLinestring) { } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_LINESTRING_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/nsphere_concept.hpp000066400000000000000000000063711177067165300270430ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_NSPHERE_CONCEPT_HPP #define GGL_CORE_CONCEPTS_NSPHERE_CONCEPT_HPP #include #include #include #include namespace ggl { namespace concept { /*! \brief Checks Nsphere concept (const version) \ingroup concepts \details The ConstNsphere concept check the same as the Nsphere concept, but does not check write access. */ template struct ConstNsphere { private : typedef typename point_type::type P; typedef typename radius_type::type R; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { typedef typename coordinate_type::type T; const S* s = 0; T coord(ggl::get(*s)); (void)sizeof(coord); // To avoid "unused variable" warnings dimension_checker::check(); } }; template struct dimension_checker { static void check() {} }; public : /// BCCL macro to check the ConstNsphere concept BOOST_CONCEPT_USAGE(ConstNsphere) { static const size_t N = dimension::value; dimension_checker<0, N>::check(); dimension_checker<0, N>::check(); // Check radius access const S* s = 0; R coord(ggl::get_radius<0>(*s)); (void)sizeof(coord); // To avoid "unused variable" warnings } }; /*! \brief Checks nsphere concept, using Boost Concept Check Library and metafunctions \ingroup concepts */ template struct Nsphere { private : BOOST_CONCEPT_ASSERT( (concept::ConstNsphere) ); typedef typename point_type::type P; typedef typename radius_type::type R; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { S* s; ggl::set(*s, ggl::get(*s)); dimension_checker::check(); } }; template struct dimension_checker { static void check() {} }; public : /// BCCL macro to check the Nsphere concept BOOST_CONCEPT_USAGE(Nsphere) { static const size_t N = dimension::value; dimension_checker<0, N>::check(); dimension_checker<0, N>::check(); // Check radius access S* s = 0; set_radius<0>(*s, get_radius<0>(*s)); } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_NSPHERE_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/point_concept.hpp000066400000000000000000000106231177067165300265230ustar00rootroot00000000000000// Generic Geometry Library Point concept // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_POINT_CONCEPT_HPP #define GGL_CORE_CONCEPTS_POINT_CONCEPT_HPP #include #include #include #include #include /*! \defgroup concepts concept checking Concepts are used to check if pointtypes provide required implementation. Concept checking is done using BCCL (Boost Concept Check Library) and MPL (Meta Programming Library) */ namespace ggl { namespace concept { /*! \brief Checks point concept, using Boost Concept Check Library and metafunctions \ingroup concepts \details The concept is separated into 4 metafunctions: - \ref ggl::traits::coordinate_type "coordinate_type": provides the type of the coordinates of a point - \ref ggl::traits::coordinate_system "coordinate system": provides the coordinate system in which the point is placed - \ref ggl::traits::dimension "dimension": provides the number of coordinates of a point - \ref ggl::traits::access "access": provides access to the coordinates of a point In MPL, a metafunction that provides a type must expose is as "type" and a metafunction that provides a value must expose it as "value", so here the same convention are used: coordinate_type

::type and dimension

::value provide the type and number of coordinates. This makes them compatible with any MPL and Fusion algorithm and metafunction. \par Example: First example, using an own pointtype, for example a legacy point, defining the necessary properties outside the pointtype in a traits class \dontinclude doxygen_examples.cpp \skip example_point_1 \until //:\\ \par Example: Second example, deriving a pointtype from boost::tuple. It defines the necessary properties itself, so a separate traits class is not necessary. \dontinclude doxygen_examples.cpp \skip example_own_point2 \line { \until //:\\ */ template struct Point { private: typedef typename coordinate_type::type ctype; typedef typename coordinate_system::type csystem; enum { ccount = dimension::value }; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { P* p; ggl::set(*p, ggl::get(*p)); dimension_checker::check(); } }; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() {} }; public: /// BCCL macro to check the Point concept BOOST_CONCEPT_USAGE(Point) { dimension_checker::check(); } }; /*! \brief Checks point concept (const version) \ingroup concepts \details The ConstPoint concept check the same as the Point concept, but does not check write access. */ template struct ConstPoint { private: typedef typename coordinate_type::type ctype; typedef typename coordinate_system::type csystem; enum { ccount = dimension::value }; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { const P* p = 0; ctype coord(ggl::get(*p)); boost::ignore_unused_variable_warning(coord); dimension_checker::check(); } }; /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() {} }; public: /// BCCL macro to check the ConstPoint concept BOOST_CONCEPT_USAGE(ConstPoint) { dimension_checker::check(); } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_POINT_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/polygon_concept.hpp000066400000000000000000000060121177067165300270560ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_POLYGON_CONCEPT_HPP #define GGL_CORE_CONCEPTS_POLYGON_CONCEPT_HPP #include #include #include #include #include #include #include #include #include #include #include namespace ggl { namespace concept { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct PolygonChecker { typedef typename point_type

::type PNT; typedef typename ring_type

::type R; typedef typename interior_type

::type I; BOOST_CONCEPT_ASSERT( (boost::RandomAccessRangeConcept) ); void constraints() { P* poly; R& e = exterior_ring(*poly); const R& ce = exterior_ring(*poly); I& i = interior_rings(*poly); const I& ci = interior_rings(*poly); boost::ignore_unused_variable_warning(e); boost::ignore_unused_variable_warning(ce); boost::ignore_unused_variable_warning(i); boost::ignore_unused_variable_warning(ci); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief Checks polygon concept, using Boost Concept Check Library and metafunctions \ingroup concepts */ template struct Polygon : detail::PolygonChecker

{ private: typedef typename point_type

::type PNT; typedef typename ring_type

::type R; typedef typename interior_type

::type I; BOOST_CONCEPT_ASSERT( (concept::Point) ); BOOST_CONCEPT_ASSERT( (concept::Ring) ); public: /// BCCL macro to check the Polygon concept BOOST_CONCEPT_USAGE(Polygon) { // Check if it can be modified P* poly; clear(*poly); append(*poly, PNT()); this->constraints(); } }; /*! \brief Checks Polygon concept (const version) \ingroup concepts \details The ConstPolygon concept check the same as the Polygon concept, but does not check write access. */ template struct ConstPolygon : detail::PolygonChecker

{ private: typedef typename point_type

::type PNT; typedef typename ring_type

::type R; typedef typename interior_type

::type I; BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); BOOST_CONCEPT_ASSERT( (concept::ConstRing) ); public: /// BCCL macro to check the ConstPolygon concept BOOST_CONCEPT_USAGE(ConstPolygon) { this->constraints(); } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_POLYGON_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/ring_concept.hpp000066400000000000000000000036531177067165300263360ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_RING_CONCEPT_HPP #define GGL_CORE_CONCEPTS_RING_CONCEPT_HPP #include #include #include #include #include #include #include namespace ggl { namespace concept { /*! \brief Checks (linear) Ring concept, using Boost Concept Check Library and metafunctions \ingroup concepts */ template struct Ring { private : typedef typename point_type::type P; BOOST_CONCEPT_ASSERT( (concept::Point

) ); BOOST_CONCEPT_ASSERT( (boost::RandomAccessRangeConcept) ); public : /// BCCL macro to check the Ring concept BOOST_CONCEPT_USAGE(Ring) { // Check if it can be modified R* ls; clear(*ls); append(*ls, P()); } }; /*! \brief Checks (linear) ring concept (const version) \ingroup concepts \details The ConstLinearRing concept check the same as the Ring concept, but does not check write access. */ template struct ConstRing { private : typedef typename point_type::type P; BOOST_CONCEPT_ASSERT( (concept::ConstPoint

) ); BOOST_CONCEPT_ASSERT( (boost::RandomAccessRangeConcept) ); public : /// BCCL macro to check the ConstLinearRing concept BOOST_CONCEPT_USAGE(ConstRing) { } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_RING_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/concepts/segment_concept.hpp000066400000000000000000000057541177067165300270450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CONCEPTS_SEGMENT_CONCEPT_HPP #define GGL_CORE_CONCEPTS_SEGMENT_CONCEPT_HPP #include #include #include #include namespace ggl { namespace concept { /*! \brief Checks segment concept, using Boost Concept Check Library and metafunctions \ingroup concepts */ template struct Segment { private : typedef typename point_type::type P; BOOST_CONCEPT_ASSERT( (concept::Point

) ); /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { S* s; ggl::set(*s, ggl::get(*s)); dimension_checker::check(); } }; template struct dimension_checker { static void check() {} }; public : /// BCCL macro to check the Segment concept BOOST_CONCEPT_USAGE(Segment) { static const size_t N = dimension

::value; dimension_checker<0, 0, N>::check(); dimension_checker<1, 0, N>::check(); } }; /*! \brief Checks Segment concept (const version) \ingroup concepts \details The ConstSegment concept check the same as the Segment concept, but does not check write access. */ template struct ConstSegment { private : typedef typename point_type::type P; typedef typename coordinate_type::type T; BOOST_CONCEPT_ASSERT( (concept::ConstPoint

) ); /// Internal structure to check if access is OK for all dimensions template struct dimension_checker { static void check() { const S* s = 0; T coord(ggl::get(*s)); boost::ignore_unused_variable_warning(coord); dimension_checker::check(); } }; template struct dimension_checker { static void check() {} }; public : /// BCCL macro to check the ConstSegment concept BOOST_CONCEPT_USAGE(ConstSegment) { static const size_t N = dimension

::value; dimension_checker<0, 0, N>::check(); dimension_checker<1, 0, N>::check(); } }; }} // namespace ggl::concept #endif // GGL_CORE_CONCEPTS_SEGMENT_CONCEPT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/coordinate_dimension.hpp000066400000000000000000000053101177067165300262320ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_COORDINATE_DIMENSION_HPP #define GGL_CORE_COORDINATE_DIMENSION_HPP #include #include #include #include #include #include namespace ggl { namespace traits { /*! \brief Traits class indicating the number of dimensions of a point \par Geometries: - point \par Specializations should provide: - value (should be derived from boost::mpl::int_ \ingroup traits */ template struct dimension {}; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { // Base class derive from its own specialization of point-tag template struct dimension : dimension::type> {}; template struct dimension : traits::dimension

{}; } // namespace core_dispatch #endif /*! \brief Meta-function which defines coordinate dimensions, i.e. the number of axes of any geometry \ingroup core */ template struct dimension : core_dispatch::dimension < typename tag::type, typename boost::remove_const::type > {}; /*! \brief assert_dimension, enables compile-time checking if coordinate dimensions are as expected \ingroup utility */ template inline void assert_dimension() { BOOST_STATIC_ASSERT(( boost::mpl::equal_to < ggl::dimension, boost::mpl::int_ >::type::value )); } /*! \brief assert_dimension, enables compile-time checking if coordinate dimensions are as expected \ingroup utility */ template inline void assert_dimension_less_equal() { BOOST_STATIC_ASSERT(( dimension::type::value <= D )); } template inline void assert_dimension_greater_equal() { BOOST_STATIC_ASSERT(( dimension::type::value >= D )); } /*! \brief assert_dimension_equal, enables compile-time checking if coordinate dimensions of two geometries are equal \ingroup utility */ template inline void assert_dimension_equal() { BOOST_STATIC_ASSERT(( dimension::type::value == dimension::type::value )); } } // namespace ggl #endif // GGL_CORE_COORDINATE_DIMENSION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/coordinate_system.hpp000066400000000000000000000034131177067165300255730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_COORDINATE_SYSTEM_HPP #define GGL_CORE_COORDINATE_SYSTEM_HPP #include #include namespace ggl { namespace traits { /*! \brief Traits class defining the coordinate system of a point, important for strategy selection \ingroup traits \par Geometries: - point \par Specializations should provide: - typedef CS type; (cs::cartesian, cs::spherical, etc) */ template struct coordinate_system {}; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct coordinate_system { typedef typename point_type::type P; // Call its own specialization on point-tag typedef typename coordinate_system::type type; }; template struct coordinate_system { typedef typename traits::coordinate_system

::type type; }; } // namespace core_dispatch #endif /*! \brief Meta-function which defines coordinate system for any geometry \ingroup core */ template struct coordinate_system { typedef typename boost::remove_const::type ncg; typedef typename core_dispatch::coordinate_system< typename tag::type, ncg>::type type; }; } #endif // GGL_CORE_COORDINATE_SYSTEM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/coordinate_type.hpp000066400000000000000000000033611177067165300252320ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_COORDINATE_TYPE_HPP #define GGL_CORE_COORDINATE_TYPE_HPP #include #include namespace ggl { namespace traits { /*! \brief Traits class which indicate the coordinate type (double,float,...) of a point \ingroup traits \par Geometries: - point \par Specializations should provide: - typedef T type; (double,float,int,etc) */ template struct coordinate_type {}; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct coordinate_type { typedef typename point_type::type point_type; // Call its own specialization on point-tag typedef typename coordinate_type::type type; }; template struct coordinate_type { typedef typename traits::coordinate_type

::type type; }; } // namespace core_dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Meta-function which defines coordinate type (int, float, double, etc) of any geometry \ingroup core */ template struct coordinate_type { typedef typename boost::remove_const::type ncg; typedef typename core_dispatch::coordinate_type < typename tag::type, ncg >::type type; }; } // namespace ggl #endif // GGL_CORE_COORDINATE_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/cs.hpp000066400000000000000000000103111177067165300224400ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_CS_HPP #define GGL_CORE_CS_HPP #include #include #include #include /*! \defgroup cs coordinate systems \brief Defines coordinate systems \details Coordinate systems are essential for any point in the Generic Geometry Library. Many algorithms such as distance or transform use coordinate systems to select the strategy to use. */ namespace ggl { /*! \brief Unit of plan angles: degrees \ingroup cs */ class degree {}; /*! \brief Unit of plan angles: radians \ingroup cs */ class radian {}; namespace cs { /*! \brief Cartesian coordinate system \details Defines the Cartesian or rectangular coordinate system where points are defined in 2 or 3 (or more) dimensions and usually (but not always) known as x,y,z \see http://en.wikipedia.org/wiki/Cartesian_coordinate_system \ingroup cs */ struct cartesian {}; /*! \brief Geographic coordinate system, in degree or in radian \details Defines the geographic coordinate system where points are defined in two angles and usually known as lat,long or lo,la or phi,lambda \see http://en.wikipedia.org/wiki/Geographic_coordinate_system \ingroup cs \note might be moved to extensions/gis/geographic */ template struct geographic { typedef DegreeOrRadian units; }; /*! \brief Spherical coordinate system, in degree or in radian \details Defines the spherical coordinate system where points are defined in two angles and an optional radius usually known as r, theta, phi \par Coordinates: - coordinate 0: 0 <= phi < 2pi is the angle between the positive x-axis and the line from the origin to the P projected onto the xy-plane. - coordinate 1: 0 <= theta <= pi is the angle between the positive z-axis and the line formed between the origin and P. - coordinate 2 (if specified): r >= 0 is the distance from the origin to a given point P. \see http://en.wikipedia.org/wiki/Spherical_coordinates \ingroup cs */ template struct spherical { typedef DegreeOrRadian units; }; /*! \brief Polar coordinate system \details Defines the polar coordinate system "in which each point on a plane is determined by an angle and a distance" \see http://en.wikipedia.org/wiki/Polar_coordinates \ingroup cs */ template struct polar { typedef DegreeOrRadian units; }; } // namespace cs namespace traits { /*! \brief Traits class defining coordinate system tag, bound to coordinate system \ingroup traits \tparam CoordinateSystem coordinate system */ template struct cs_tag { }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS template struct cs_tag > { typedef geographic_tag type; }; template struct cs_tag > { typedef spherical_tag type; }; template<> struct cs_tag { typedef cartesian_tag type; }; #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace traits /*! \brief Meta-function returning coordinate system tag (cs family) of any geometry \ingroup core */ template struct cs_tag { typedef typename traits::cs_tag < typename ggl::coordinate_system::type >::type type; }; /*! \brief Meta-function to verify if a coordinate system is radian \ingroup core */ template struct is_radian : boost::true_type {}; #ifndef DOXYGEN_NO_SPECIALIZATIONS // Specialization for any degree coordinate systems template class CoordinateSystem> struct is_radian< CoordinateSystem > : boost::false_type { }; #endif // DOXYGEN_NO_SPECIALIZATIONS } // namespace ggl #endif // GGL_CORE_CS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/exception.hpp000066400000000000000000000011331177067165300240330ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_EXCEPTION_HPP #define GGL_CORE_EXCEPTION_HPP #include namespace ggl { /*! \brief Base exception class for GGL \ingroup core */ struct exception : public std::exception { }; } // namespace ggl #endif // GGL_CORE_EXCEPTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/exterior_ring.hpp000066400000000000000000000047431177067165300247270ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_EXTERIOR_RING_HPP #define GGL_CORE_EXTERIOR_RING_HPP #include #include #include #include namespace ggl { namespace traits { /*! \brief Traits class defining access to exterior_ring of a polygon \details Should define const and non const access \ingroup traits \tparam G geometry \par Geometries: - polygon \par Specializations should provide: - static inline RING& get(POLY& ) - static inline const RING& get(const POLY& ) */ template struct exterior_ring {}; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct exterior_ring {}; template struct exterior_ring { static inline typename ring_type::type& get(P& polygon) { return traits::exterior_ring

::get(polygon); } static inline const typename ring_type::type& get(const P& polygon) { return traits::exterior_ring

::get(polygon); } }; } // namespace core_dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Function to get the exterior_ring ring of a polygon \ingroup access \note OGC compliance: instead of ExteriorRing \tparam P polygon type \param polygon the polygon to get the exterior ring from \return a reference to the exterior ring */ template inline typename ring_type

::type& exterior_ring(P& polygon) { return core_dispatch::exterior_ring::type, P>::get(polygon); } /*! \brief Function to get the exterior ring of a polygon (const version) \ingroup access \note OGC compliance: instead of ExteriorRing \tparam P polygon type \param polygon the polygon to get the exterior ring from \return a const reference to the exterior ring */ template inline const typename ring_type

::type& exterior_ring(const P& polygon) { return core_dispatch::exterior_ring::type, P>::get(polygon); } } // namespace ggl #endif // GGL_CORE_EXTERIOR_RING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/geometry_id.hpp000066400000000000000000000027671177067165300243620ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_GEOMETRY_ID_HPP #define GGL_CORE_GEOMETRY_ID_HPP #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct geometry_id {}; template <> struct geometry_id : boost::mpl::int_<1> {}; template <> struct geometry_id : boost::mpl::int_<2> {}; template <> struct geometry_id : boost::mpl::int_<3> {}; template <> struct geometry_id : boost::mpl::int_<91> {}; template <> struct geometry_id : boost::mpl::int_<92> {}; template <> struct geometry_id : boost::mpl::int_<93> {}; template <> struct geometry_id : boost::mpl::int_<94> {}; } // namespace core_dispatch #endif /*! \brief Meta-function the id for a geometry type \note Used for e.g. reverse meta-function \ingroup core */ template struct geometry_id : core_dispatch::geometry_id::type> {}; } // namespace ggl #endif // GGL_CORE_GEOMETRY_ID_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/interior_rings.hpp000066400000000000000000000103621177067165300250760ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_INTERIOR_RINGS_HPP #define GGL_CORE_INTERIOR_RINGS_HPP #include #include #include #include namespace ggl { namespace traits { /*! \brief Traits class indicating interior container type of a polygon \details defines inner container type, so the container containing the interior rings \ingroup traits \par Geometries: - polygon \par Specializations should provide: - typedef CONTAINER > type (e.g. std::vector >) \tparam G geometry */ template struct interior_type { }; /*! \brief Traits class defining access to interior_rings of a polygon \details defines access (const and non const) to interior ring \ingroup traits \par Geometries: - polygon \par Specializations should provide: - static inline INTERIOR& get(POLY&) - static inline const INTERIOR& get(const POLY&) \tparam G geometry */ template struct interior_rings { }; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct interior_type {}; template struct interior_type { typedef typename traits::interior_type

::type type; }; template struct interior_rings {}; template struct interior_rings { static inline typename interior_type::type& get(P& polygon) { return traits::interior_rings

::get(polygon); } static inline const typename interior_type::type& get(const P& polygon) { return traits::interior_rings

::get(polygon); } }; } // namespace core_dispatch #endif /*! \brief Meta-function defining container type of inner rings of (multi)polygon geometriy \details the interior rings should be organized as a container (std::vector, std::deque, boost::array) with boost range support. This meta function defines the type of that container. \ingroup core */ template struct interior_type { typedef typename boost::remove_const::type ncg; typedef typename core_dispatch::interior_type< typename tag::type, ncg>::type type; }; /*! \brief Function to get the interior rings of a polygon (non const version) \ingroup access \note OGC compliance: instead of InteriorRingN \tparam P polygon type \param polygon the polygon to get the interior rings from \return a reference to the interior rings */ template inline typename interior_type

::type& interior_rings(P& polygon) { return core_dispatch::interior_rings::type, P>::get(polygon); } /*! \brief Function to get the interior rings of a polygon (const version) \ingroup access \note OGC compliance: instead of InteriorRingN \tparam P polygon type \param polygon the polygon to get the interior rings from \return a const reference to the interior rings */ template inline const typename interior_type

::type& interior_rings(const P& polygon) { return core_dispatch::interior_rings::type, P>::get(polygon); } /*! \brief Function to get the number of interior rings of a polygon \ingroup access \note Defined by OGC as "numInteriorRing". To be consistent with "numPoints" letter "s" is appended \tparam P polygon type \param polygon the polygon \return the nubmer of interior rings */ template inline size_t num_interior_rings(const P& polygon) { return boost::size(interior_rings(polygon)); } } #endif // GGL_CORE_INTERIOR_RINGS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/is_linear.hpp000066400000000000000000000022541177067165300240070ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_IS_LINEAR_HPP #define GGL_CORE_IS_LINEAR_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct is_linear : boost::false_type {}; template <> struct is_linear : boost::true_type {}; template <> struct is_linear : boost::true_type {}; } // namespace core_dispatch #endif /*! \brief Meta-function defining "true" for linear types (linestring,ring), "false" for non-linear typse \note Used for tag dispatching and meta-function finetuning \ingroup core */ template struct is_linear : core_dispatch::is_linear::type> {}; } // namespace ggl #endif // GGL_CORE_IS_LINEAR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/is_multi.hpp000066400000000000000000000016711177067165300236710ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_IS_MULTI_HPP #define GGL_CORE_IS_MULTI_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct is_multi : boost::false_type {}; } // namespace core_dispatch #endif /*! \brief Meta-function defining "true" for multi geometries (multi_point, etc) \ingroup core */ template struct is_multi : core_dispatch::is_multi::type> {}; } // namespace ggl #endif // GGL_CORE_IS_MULTI_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/point_type.hpp000066400000000000000000000047141177067165300242370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_POINT_TYPE_HPP #define GGL_CORE_POINT_TYPE_HPP #include #include #include #include #include #include namespace ggl { namespace traits { /*! \brief Traits class indicating the type of contained points \ingroup traits \par Geometries: - all geometries except point \par Specializations should provide: - typedef P type (where P should fulfil the Point concept) \tparam G geometry */ template struct point_type {}; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct point_type { // Default: call traits to get point type typedef typename boost::remove_const < typename traits::point_type::type >::type type; }; // Specialization for point: the point itself template struct point_type { typedef Point type; }; // Specializations for linestring/linear ring, via boost::range template struct point_type { typedef typename boost::range_value::type type; }; template struct point_type { typedef typename boost::range_value::type type; }; // Specialization for polygon: the point-type is the point-type of its rinsg template struct point_type { typedef typename point_type < ring_tag, typename ring_type::type >::type type; }; } // namespace core_dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Meta-function which defines point type of any geometry \ingroup core */ template struct point_type { typedef typename boost::remove_const::type ncg; typedef typename core_dispatch::point_type< typename tag::type, ncg>::type type; }; } // namespace ggl #endif // GGL_CORE_POINT_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/radian_access.hpp000066400000000000000000000055671177067165300246330ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_RADIAN_ACCESS_HPP #define GGL_CORE_RADIAN_ACCESS_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct radian_access { }; template class CS> struct radian_access > { typedef typename coordinate_type::type coordinate_type; static inline coordinate_type get(G const& geometry) { return ggl::get(geometry); } static inline void set(G& geometry, coordinate_type const& radians) { ggl::set(geometry, radians); } }; template class CS> struct radian_access > { typedef typename coordinate_type::type coordinate_type; static inline coordinate_type get(G const& geometry) { return boost::numeric_cast < coordinate_type >(ggl::get(geometry) * math::d2r); } static inline void set(G& geometry, coordinate_type const& radians) { ggl::set(geometry, boost::numeric_cast < coordinate_type >(radians * math::r2d)); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief get a coordinate value of a point, result is in RADIAN \details also if coordinate system was in degree, result is in radian \return coordinate value \ingroup access \tparam D dimension \tparam G geometry \param geometry geometry to get coordinate value from */ template inline typename coordinate_type::type get_as_radian(const G& geometry) { return detail::radian_access::type>::get(geometry); } /*! \brief assign coordinate value (which is in radian) to a point \details if coordinate system of point is in degree, will be converted to degree \ingroup access \tparam D dimension \tparam G geometry \param geometry geometry to assign coordinate to \param radians coordinate value to assign */ template inline void set_from_radian(G& geometry, const typename coordinate_type::type& radians) { detail::radian_access::type>::set(geometry, radians); } } // namespace ggl #endif // GGL_CORE_RADIAN_ACCESS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/radius.hpp000066400000000000000000000102221177067165300233230ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_RADIUS_HPP #define GGL_CORE_RADIUS_HPP #include #include #include namespace ggl { namespace traits { /*! \brief Traits class to get/set radius of a circle/sphere/(ellipse) \details the radius access meta-functions give read/write access to the radius of a circle or a sphere, or to the major/minor axis or an ellipse, or to one of the 3 equatorial radii of an ellipsoid. It should be specialized per geometry, in namespace core_dispatch. Those specializations should forward the call via traits to the geometry class, which could be specified by the user. There is a corresponding generic radius_get and radius_set function \par Geometries: - n-sphere (circle,sphere) - upcoming ellipse \par Specializations should provide: - inline static T get(const G& geometry) - inline static void set(G& geometry, const T& radius) \ingroup traits */ template struct radius_access {}; /*! \brief Traits class indicating the type (double,float,...) of the radius of a circle or a sphere \par Geometries: - n-sphere (circle,sphere) - upcoming ellipse \par Specializations should provide: - typedef T type (double,float,int,etc) \ingroup traits */ template struct radius_type {}; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct radius_type { //typedef core_dispatch_specialization_required type; }; /*! \brief radius access meta-functions, used by concept n-sphere and upcoming ellipse. */ template struct radius_access { //static inline T get(const G& ) {} //static inline void set(G& g, const T& value) {} }; template struct radius_type { typedef typename traits::radius_type::type type; }; template struct radius_access { BOOST_STATIC_ASSERT((D == 0)); static inline T get(const S& s) { return traits::radius_access::get(s); } static inline void set(S& s, const T& radius) { traits::radius_access::set(s, radius); } }; } // namespace core_dispatch #endif // DOXYGEN_NO_DISPATCH template struct radius_type { typedef typename boost::remove_const::type rconst; typedef typename core_dispatch::radius_type::type, rconst>::type type; }; /*! \brief Function to get radius \return radius of a circle / sphere / ellipse \ingroup access \param geometry the geometry to get the radius from \tparam I index, for circle/sphere always zero, for ellipse major/minor axis, for ellipsoid one of the 3 equatorial radii */ template inline typename radius_type::type get_radius(const G& geometry) { typedef typename boost::remove_const::type rconst; return core_dispatch::radius_access::type, rconst, typename radius_type::type, I>::get(geometry); } /*! \brief Function to set the radius of a circle / sphere / (ellipse) \ingroup access \tparam I index, for circle/sphere always zero, for ellipse major/minor axis, for ellipsoid one of the 3 equatorial radii \param geometry the geometry to change \param radius the radius to set */ template inline void set_radius(G& geometry, const typename radius_type::type& radius) { typedef typename boost::remove_const::type rconst; core_dispatch::radius_access::type, G, typename radius_type::type, I>::set(geometry, radius); } } // namespace ggl #endif // GGL_RADIUS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/replace_point_type.hpp000066400000000000000000000052431177067165300257300ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_REPLACE_POINT_TYPE_HPP #define GGL_CORE_REPLACE_POINT_TYPE_HPP #include #include #include #include // For now: use ggl-provided geometries // TODO: figure out how to get the class and replace the type // TODO: take "const" into account #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct replace_point_type {}; template struct replace_point_type { typedef NewPointType type; }; template struct replace_point_type { typedef linestring type; }; template struct replace_point_type { typedef segment type; }; template struct replace_point_type { typedef linear_ring type; }; template struct replace_point_type { typedef box type; }; template struct replace_point_type { typedef polygon type; }; template struct replace_point_type { typedef typename ggl::coordinate_type::type coortype; typedef nsphere type; }; } // namespace core_dispatch #endif // DOXYGEN_NO_DISPATCH template struct replace_point_type : core_dispatch::replace_point_type < typename tag::type, typename boost::remove_const::type, NewPointType > {}; } // namespace ggl #endif // GGL_CORE_REPLACE_POINT_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/reverse_dispatch.hpp000066400000000000000000000026711177067165300253770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_REVERSE_DISPATCH_HPP #define GGL_CORE_REVERSE_DISPATCH_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { // Different geometries: reverse_dispatch if second ID < first ID // Note: if "boost::mpl::greater is used, with geometry_id instead of geometry_id::type::value, // it is not working correctly!!!! TODO: find out why not. template struct reverse_dispatch : boost::mpl::if_c < (GeometryId1 > GeometryId2), boost::true_type, boost::false_type > {}; // Same geometry: never reverse_dispatch template struct reverse_dispatch : boost::false_type {}; } // namespace detail #endif // DOXYGEN_NO_DETAIL template struct reverse_dispatch : detail::reverse_dispatch < geometry_id::type::value, geometry_id::type::value > {}; } // namespace ggl #endif // GGL_CORE_REVERSE_DISPATCH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/ring_type.hpp000066400000000000000000000034301177067165300240370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_RING_TYPE_HPP #define GGL_CORE_RING_TYPE_HPP #include #include #include namespace ggl { namespace traits { /*! \brief Traits class to indicate ring-type of a polygon's exterior ring/interior rings \ingroup traits \par Geometries: - polygon \par Specializations should provide: - typedef XXX type (e.g. linear_ring

) \tparam G geometry */ template struct ring_type { // should define type }; } // namespace traits #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct ring_type {}; template struct ring_type { typedef typename traits::ring_type::type type; }; } // namespace core_dispatch #endif /*! \brief Meta-function which defines ring type of (multi)polygon geometry \details a polygon contains one exterior ring and zero or more interior rings (holes). The type of those rings is assumed to be equal. This meta function retrieves the type of such rings. \ingroup core */ template struct ring_type { typedef typename boost::remove_const::type ncg; typedef typename core_dispatch::ring_type < typename tag::type, ncg >::type type; }; } #endif // GGL_CORE_RING_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/tag.hpp000066400000000000000000000032271177067165300226160ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_TAG_HPP #define GGL_CORE_TAG_HPP #include #include /*! \defgroup core core: meta-functions for geometry types */ namespace ggl { namespace traits { /*! \brief Traits class to attach a tag to a geometry \details All geometries should implement a traits::tag::type metafunction to indicate their own geometry type. \ingroup traits \par Geometries: - all geometries \par Specializations should provide: - typedef XXX_tag type; (point_tag, box_tag, ...) \tparam Geometry geometry */ template struct tag { typedef geometry_not_recognized_tag type; }; } // namespace traits /*! \brief Meta-function to get the tag of any geometry type \details All geometries tell their geometry type (point, linestring, polygon, etc) by implementing a tag traits class. This meta-function uses that traits class to retrieve the tag. If the input type is not a geometry at all, a geometry_not_recognized_tag will be returned. \tparam Geometry geometry \ingroup core */ template struct tag { typedef typename traits::tag < typename boost::remove_const::type >::type type; }; } // namespace ggl #endif // GGL_CORE_TAG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/tags.hpp000066400000000000000000000030431177067165300227750ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_TAGS_HPP #define GGL_CORE_TAGS_HPP /*! \defgroup traits traits: adapt geometries \brief Traits classes are small classes or structs to adapt geometries such that they are recognized by the Generic Geometry Library */ namespace ggl { // Tags defining strategies linked to coordinate systems /// Tag indicating Cartesian coordinate system family (cartesian,epsg) struct cartesian_tag {}; /// Tag indicating Geographic coordinate system family (geographic) struct geographic_tag {}; /// Tag indicating Spherical coordinate system family (spherical,celestial,...) struct spherical_tag {}; // Tags defining geometry types /// "default" tag struct geometry_not_recognized_tag {}; /// OGC Point identifying tag struct point_tag {}; /// OGC Linestring identifying tag struct linestring_tag {}; /// OGC Polygon identifying tag struct polygon_tag {}; /// Convenience (linear) ring identifying tag struct ring_tag {}; /// Convenience 2D or 3D box (mbr) identifying tag struct box_tag {}; /// Convenience 2D (circle) or 3D (sphere) n-sphere identifying tag struct nsphere_tag {}; /// Convenience segment (2-points) identifying tag struct segment_tag {}; } // namespace ggl #endif // GGL_CORE_TAGS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/core/topological_dimension.hpp000066400000000000000000000036121177067165300264220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CORE_TOPOLOGICAL_DIMENSION_HPP #define GGL_CORE_TOPOLOGICAL_DIMENSION_HPP #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct top_dim {}; template <> struct top_dim : boost::mpl::int_<0> {}; template <> struct top_dim : boost::mpl::int_<1> {}; template <> struct top_dim : boost::mpl::int_<1> {}; // ring: topological dimension of two, but some people say: 1 !! template <> struct top_dim : boost::mpl::int_<2> {}; template <> struct top_dim : boost::mpl::int_<2> {}; template <> struct top_dim : boost::mpl::int_<2> {}; // nsphere: 2, but there is discussion. Is it CLOSED? Then 2, but // then it should be called "disk"... template <> struct top_dim : boost::mpl::int_<2> {}; } // namespace core_dispatch #endif /*! \brief Meta-function returning the topological dimension of a geometry \details The topological dimension defines a point as 0-dimensional, a linestring as 1-dimensional, and a ring or polygon as 2-dimensional. \see http://www.math.okstate.edu/mathdept/dynamics/lecnotes/node36.html \ingroup core */ template struct topological_dimension : core_dispatch::top_dim::type> {}; } // namespace ggl #endif // GGL_CORE_TOPOLOGICAL_DIMENSION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/000077500000000000000000000000001177067165300225755ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/astronomy/000077500000000000000000000000001177067165300246305ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/astronomy/core/000077500000000000000000000000001177067165300255605ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/astronomy/core/cs.hpp000066400000000000000000000020701177067165300266750ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSION_ASTRONOMY_CORE_CS_HPP #define GGL_EXTENSION_ASTRONOMY_CORE_CS_HPP #include #include namespace ggl { namespace cs { namespace celestial { /*! \brief Ecliptic (celestial) coordinate system \details Defines the astronomical ecliptic coordinate system "that uses the ecliptic for its fundamental plane" It uses Beta and Lambda as its latitude and longitude. \see http://en.wikipedia.org/wiki/Ecliptic_coordinate_system \ingroup cs */ template struct ecliptic { typedef DegreeOrRadian units; }; } // namespace celestial } // namespace cs } // namespace ggl #endif // GGL_EXTENSION_ASTRONOMY_CORE_CS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/000077500000000000000000000000001177067165300233575ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/000077500000000000000000000000001177067165300254675ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/core/000077500000000000000000000000001177067165300264175ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/core/cs.hpp000066400000000000000000000035601177067165300275410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_GEOGRAPHIC_CORE_CS_HPP #define GGL_EXTENSIONS_GIS_GEOGRAPHIC_CORE_CS_HPP /*! \defgroup cs coordinate systems \brief Defines coordinate systems \details Coordinate systems are essential for any point in the Generic Geometry Library. Many algorithms such as distance or transform use coordinate systems to select the strategy to use. */ namespace ggl { namespace cs { /*! \brief EPSG Cartesian coordinate system \details EPSG (European Petrol Survey Group) has a standard list of projections, each having a code \see \ingroup cs \tparam Code the EPSG code \todo Maybe derive from boost::mpl::int_ */ template struct epsg { static const std::size_t epsg_code = Code; }; /*! \brief Earth Centered, Earth Fixed \details Defines a Cartesian coordinate system x,y,z with the center of the earth as its origin, going through the Greenwich \see http://en.wikipedia.org/wiki/ECEF \see http://en.wikipedia.org/wiki/Geodetic_system \note Also known as "Geocentric", but geocentric is also an astronomic coordinate system \ingroup cs */ struct ecef { }; } // namespace cs namespace traits { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS template<> struct cs_tag { typedef cartesian_tag type; }; template struct cs_tag > { typedef cartesian_tag type; }; #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace traits } // namespace ggl #endif // GGL_EXTENSIONS_GIS_GEOGRAPHIC_CORE_CS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/detail/000077500000000000000000000000001177067165300267315ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/detail/ellipsoid.hpp000066400000000000000000000031211177067165300314230ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_GEOGRAPHIC_DETAIL_ELLIPSOID_HPP #define GGL_EXTENSIONS_GIS_GEOGRAPHIC_DETAIL_ELLIPSOID_HPP namespace ggl { namespace detail { /*! \brief Defines ellipsoid values for use in distance calculations \details They have a constructor with the earth radius \note Will be moved / merged with projections \todo Optionally specify earth model, defaulting to WGS84 - See http://en.wikipedia.org/wiki/Figure_of_the_Earth - and http://en.wikipedia.org/wiki/World_Geodetic_System#A_new_World_Geodetic_System:_WGS84 \note */ class ellipsoid { public : ellipsoid(double a, double b) : m_a(a) , m_b(b) , m_f((a - b) / a) {} ellipsoid() : m_a(6378137.0) , m_b(6356752.314245) , m_f((m_a - m_b) / m_a) {} // Unit sphere ellipsoid(double f) : m_a(1.0) , m_f(f) {} double a() const { return m_a; } double b() const { return m_b; } double f() const { return m_f; } private : double m_a, m_b, m_f; // equatorial radius, polar radius, flattening }; }} // namespace ggl::detail #endif // GGL_EXTENSIONS_GIS_GEOGRAPHIC_DETAIL_ELLIPSOID_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/strategies/000077500000000000000000000000001177067165300276415ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/strategies/andoyer.hpp000066400000000000000000000115501177067165300320150ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_ANDOYER_HPP #define GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_ANDOYER_HPP #include #include #include #include namespace ggl { namespace strategy { namespace distance { /*! \brief Point-point distance approximation taking flattening into account \ingroup distance \tparam P1 first point type \tparam P2 optional second point type \author After Andoyer, 19xx, republished 1950, republished by Meeus, 1999 \note Although not so well-known, the approximation is very good: in all cases the results are about the same as Vincenty. In my (Barend's) testcases the results didn't differ more than 6 m \see http://nacc.upc.es/tierra/node16.html \see http://sci.tech-archive.net/Archive/sci.geo.satellite-nav/2004-12/2724.html \see http://home.att.net/~srschmitt/great_circle_route.html (implementation) \see http://www.codeguru.com/Cpp/Cpp/algorithms/article.php/c5115 (implementation) \see http://futureboy.homeip.net/frinksamp/navigation.frink (implementation) \see http://www.voidware.com/earthdist.htm (implementation) */ template class andoyer { public : //typedef spherical_distance return_type; typedef double return_type; andoyer() : m_ellipsoid() {} andoyer(double f) : m_ellipsoid(f) {} inline return_type operator()(const P1& p1, const P2& p2) const { return calc(get_as_radian<0>(p1), get_as_radian<1>(p1), get_as_radian<0>(p2), get_as_radian<1>(p2)); } private : typedef typename coordinate_type::type T1; typedef typename coordinate_type::type T2; ggl::detail::ellipsoid m_ellipsoid; inline return_type calc(const T1& lon1, const T1& lat1, const T2& lon2, const T2& lat2) const { typedef double calculation_type; calculation_type G = (lat1 - lat2) / 2.0; calculation_type lambda = (lon1 - lon2) / 2.0; if (ggl::math::equals(lambda, 0.0) && ggl::math::equals(G, 0.0)) { return 0.0; } calculation_type F = (lat1 + lat2) / 2.0; calculation_type sinG2 = math::sqr(sin(G)); calculation_type cosG2 = math::sqr(cos(G)); calculation_type sinF2 = math::sqr(sin(F)); calculation_type cosF2 = math::sqr(cos(F)); calculation_type sinL2 = math::sqr(sin(lambda)); calculation_type cosL2 = math::sqr(cos(lambda)); calculation_type S = sinG2 * cosL2 + cosF2 * sinL2; calculation_type C = cosG2 * cosL2 + sinF2 * sinL2; if (ggl::math::equals(S, 0.0) || ggl::math::equals(C, 0.0)) { return 0.0; } calculation_type omega = atan(sqrt(S / C)); calculation_type r = sqrt(S * C) / omega; // not sure if this is r or greek nu calculation_type D = 2.0 * omega * m_ellipsoid.a(); calculation_type H1 = (3 * r - 1.0) / (2.0 * C); calculation_type H2 = (3 * r + 1.0) / (2.0 * S); return return_type(D * (1.0 + m_ellipsoid.f() * H1 * sinF2 * cosG2 - m_ellipsoid.f() * H2 * cosF2 * sinG2)); } }; } // namespace distance } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_distance { typedef strategy::distance::andoyer type; }; template struct strategy_tag > { typedef strategy_tag_distance_point_point type; }; #endif } // namespace ggl #endif // GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_ANDOYER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/strategies/dms_parser.hpp000066400000000000000000000213641177067165300325170ustar00rootroot00000000000000// Generic Geometry Library // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_DMS_PARSER_HPP #define GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_DMS_PARSER_HPP // This file is totally revised from PROJ4 dmstor.c // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { struct dms_result { enum axis_selector {axis_lat = 1, axis_lon = 0}; private : typedef double T; T m_angle; axis_selector m_axis; public : explicit dms_result(const T& v, axis_selector ax) : m_angle(v) , m_axis(ax) {} inline axis_selector axis() const { return m_axis; } inline operator double() const { return m_angle; } template inline friend std::basic_ostream& operator<<(std::basic_ostream& os, const dms_result& d) { os << d.m_angle; return os; } }; namespace strategy { template struct dms_parser { // Question from Barend: can we compile-time select that it is case-sensitive/case-insensitive? // We have to change the switch then -> specializations // For now: make it (compile-time) case sensitive static const int diff = 'a' - 'A'; #ifndef __GNUC__ BOOST_STATIC_ASSERT((diff > 0)); // make sure we've the right assumption. GCC does not accept this here. #endif static const char n_alter = N <= 'Z' ? N + diff : N - diff; static const char e_alter = E <= 'Z' ? E + diff : E - diff; static const char s_alter = S <= 'Z' ? S + diff : S - diff; static const char w_alter = W <= 'Z' ? W + diff : W - diff; static const char r_alter = R <= 'Z' ? R + diff : R - diff; // degree is normally D (proj4) but might be superscript o // Note d_alter is not correct then, so map it to NULL now, guarded by the while static const char d_alter = ((D >= 'A' && D <= 'Z') || (D >= 'a' && D <= 'z')) ? (D <= 'Z' ? D + diff : D - diff) : '\0'; struct dms_value { double dms[3]; bool has_dms[3]; dms_value() { memset(this, 0, sizeof(dms_value)); } }; template static inline void assign_dms(dms_value& dms, std::string& value, bool& has_value) { dms.dms[I] = boost::lexical_cast(value.c_str()); dms.has_dms[I] = true; has_value = false; value.clear(); } static inline void process(dms_value& dms, std::string& value, bool& has_value) { if (has_value) { // Assign last one, sequentially if (! dms.has_dms[0]) assign_dms<0>(dms, value, has_value); else if (! dms.has_dms[1]) assign_dms<1>(dms, value, has_value); else if (! dms.has_dms[2]) assign_dms<2>(dms, value, has_value); } } dms_result operator()(const char* is) const { dms_value dms; bool has_value = false; std::string value; double factor = 1.0; // + denotes N/E values, -1 denotes S/W values dms_result::axis_selector axis = dms_result::axis_lon; // true denotes N/S values bool in_radian = false; // true denotes values as "0.1R" while(*is) { switch(*is) { case '-' : if (! has_value && ! dms.has_dms[0]) { factor = -factor; } break; case N : case n_alter : axis = dms_result::axis_lat; break; case S : case s_alter : axis = dms_result::axis_lat; factor = -factor; break; case E : case e_alter : axis = dms_result::axis_lon; break; case W : case w_alter : axis = dms_result::axis_lon; factor = -factor; break; case D : case d_alter : if (! dms.has_dms[0] && has_value) { assign_dms<0>(dms, value, has_value); } break; case R : case r_alter : if (! dms.has_dms[0] && has_value) { // specified value is in radian! in_radian = true; assign_dms<0>(dms, value, has_value); } break; case MIN: if (! dms.has_dms[1] && has_value) { assign_dms<1>(dms, value, has_value); } break; case SEC : if (! dms.has_dms[2] && has_value) { assign_dms<2>(dms, value, has_value); } break; case ' ' : case '\t' : case '\n' : process(dms, value, has_value); break; default : value += *is; has_value = true; break; } is++; } // Assign last one, if any process(dms, value, has_value); return dms_result(factor * (in_radian && as_radian ? dms.dms[0] : in_radian && ! as_radian ? dms.dms[0] * math::r2d : ! in_radian && as_radian ? dms.dms[0] * math::d2r + dms.dms[1] * math::d2r / 60.0 + dms.dms[2] * math::d2r / 3600.0 : dms.dms[0] + dms.dms[1] / 60.0 + dms.dms[2] / 3600.0) , axis); } }; } #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template class CS> struct strategy_parse > { typedef strategy::dms_parser type; }; template class CS> struct strategy_parse > { typedef strategy::dms_parser type; }; #endif } // namespace ggl #endif // GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_DMS_PARSER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/geographic/strategies/vincenty.hpp000066400000000000000000000137711177067165300322220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_VINCENTY_HPP #define GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_VINCENTY_HPP #include #include #include #include namespace ggl { namespace strategy { namespace distance { /*! \brief Distance calculation formulae on latlong coordinates, after Vincenty, 1975 \ingroup distance \tparam P1 first point type \tparam P2 optional second point type \author See http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf \author Adapted from various implementations to get it close to the original document - http://www.movable-type.co.uk/scripts/LatLongVincenty.html - http://exogen.case.edu/projects/geopy/source/geopy.distance.html - http://futureboy.homeip.net/fsp/colorize.fsp?fileName=navigation.frink */ template class vincenty { public : //typedef spherical_distance return_type; typedef double return_type; inline return_type operator()(const P1& p1, const P2& p2) const { return calc(get_as_radian<0>(p1), get_as_radian<1>(p1), get_as_radian<0>(p2), get_as_radian<1>(p2)); } private : typedef typename coordinate_type::type T1; typedef typename coordinate_type::type T2; ggl::detail::ellipsoid m_ellipsoid; inline return_type calc(const T1& lon1, const T1& lat1, const T2& lon2, const T2& lat2) const { // lambda: difference in longitude on an auxiliary sphere double L = lon2 - lon1; double lambda = L; if (L < -math::pi) L += math::two_pi; if (L > math::pi) L -= math::two_pi; if (lat1 == lat2 && lon1 == lon2) { return return_type(0); } // U: reduced latitude, defined by tan U = (1-f) tan phi double U1 = atan((1-m_ellipsoid.f()) * tan(lat1)); // above (1) double U2 = atan((1-m_ellipsoid.f()) * tan(lat2)); // above (1) double cos_U1 = cos(U1); double cos_U2 = cos(U2); double sin_U1 = sin(U1); double sin_U2 = sin(U2); // alpha: azimuth of the geodesic at the equator double cos2_alpha; double sin_alpha; // sigma: angular distance p1,p2 on the sphere // sigma1: angular distance on the sphere from the equator to p1 // sigma_m: angular distance on the sphere from the equator to the midpoint of the line double sigma; double sin_sigma; double cos2_sigma_m; double previous_lambda; do { previous_lambda = lambda; // (13) double sin_lambda = sin(lambda); double cos_lambda = cos(lambda); sin_sigma = sqrt(math::sqr(cos_U2 * sin_lambda) + math::sqr(cos_U1 * sin_U2 - sin_U1 * cos_U2 * cos_lambda)); // (14) double cos_sigma = sin_U1 * sin_U2 + cos_U1 * cos_U2 * cos_lambda; // (15) sin_alpha = cos_U1 * cos_U2 * sin_lambda / sin_sigma; // (17) cos2_alpha = 1.0 - math::sqr(sin_alpha); cos2_sigma_m = cos2_alpha == 0 ? 0 : cos_sigma - 2.0 * sin_U1 * sin_U2 / cos2_alpha; // (18) double C = m_ellipsoid.f()/16.0 * cos2_alpha * (4.0 + m_ellipsoid.f() * (4.0 - 3.0 * cos2_alpha)); // (10) sigma = atan2(sin_sigma, cos_sigma); // (16) lambda = L + (1.0 - C) * m_ellipsoid.f() * sin_alpha * (sigma + C * sin_sigma * ( cos2_sigma_m + C * cos_sigma * (-1.0 + 2.0 * math::sqr(cos2_sigma_m)))); // (11) } while (fabs(previous_lambda - lambda) > 1e-12 && fabs(lambda) < math::pi); double sqr_u = cos2_alpha * (math::sqr(m_ellipsoid.a()) - math::sqr(m_ellipsoid.b())) / math::sqr(m_ellipsoid.b()); // above (1) double A = 1.0 + sqr_u/16384.0 * (4096 + sqr_u * (-768.0 + sqr_u * (320.0 - 175.0 * sqr_u))); // (3) double B = sqr_u/1024.0 * (256.0 + sqr_u * ( -128.0 + sqr_u * (74.0 - 47.0 * sqr_u))); // (4) double delta_sigma = B * sin_sigma * ( cos2_sigma_m + (B/4.0) * (cos(sigma)* (-1.0 + 2.0 * cos2_sigma_m) - (B/6.0) * cos2_sigma_m * (-3.0 + 4.0 * math::sqr(sin_sigma)) * (-3.0 + 4.0 * cos2_sigma_m))); // (6) double dist = m_ellipsoid.b() * A * (sigma - delta_sigma); // (19) return return_type(dist); } }; // We might add a vincenty-like strategy also for point-segment distance, but to calculate the projected point is not trivial } // namespace distance } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_tag > { typedef strategy_tag_distance_point_point type; }; #endif } // namespace ggl #endif // GGL_EXTENSIONS_GIS_GEOGRAPHIC_STRATEGIES_VINCENTY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/000077500000000000000000000000001177067165300237665ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/veshape/000077500000000000000000000000001177067165300254215ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/veshape/write_veshape.hpp000066400000000000000000000155561177067165300310130ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_VESHAPE_WRITE_VESHAPE_HPP #define GGL_IO_VESHAPE_WRITE_VESHAPE_HPP #include #include #include #include #include #include #include #include #include #include /*! \defgroup veshape veshape: stream VEShape (Virtual Earth shapes for in VE Ajax Control) \note VE assumes points in LatLong, Lat first */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace veshape { // Define the coordinate streamer, specialized for either 2 or 3 dimensions. // Any other number of dimensions make no sense for VE, and we have to take care about // the order lat,long (--> y,x) template struct stream_coordinate {}; template struct stream_coordinate { template static inline void stream(std::basic_ostream& os, P const& p) { os << ggl::get<1>(p) << "," << ggl::get<0>(p); } }; template struct stream_coordinate { template static inline void stream(std::basic_ostream& os, P const& p) { stream_coordinate::stream(os, p); os << "," << ggl::get<2>(p); } }; template struct stream_point { template static inline void stream(std::basic_ostream& os, P const& p) { os << "new VELatLong("; stream_coordinate::value>::stream(os, p); os << ")"; } }; struct prefix_point { static inline const char* prefix() { return "new VEShape(VEShapeType.Pushpin, "; } static inline const char* postfix() { return ")"; } }; struct prefix_linestring { static inline const char* prefix() { return "new VEShape(VEShapeType.Polyline, "; } static inline const char* postfix() { return ")"; } }; struct prefix_polygon { static inline const char* prefix() { return "new VEShape(VEShapeType.Polygon, "; } static inline const char* postfix() { return ")"; } }; /*! \brief Stream points as \ref VEShape */ template struct veshape_point { template static inline void stream(std::basic_ostream& os, P const& p) { os << Policy::prefix(); stream_point

::stream(os, p); os << Policy::postfix(); } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint

) ); }; /*! \brief Stream ranges as VEShape \note policy is used to stream prefix/postfix, enabling derived classes to override this */ template struct veshape_range { template static inline void stream(std::basic_ostream& os, R const& range) { typedef typename boost::range_const_iterator::type iterator; bool first = true; os << Policy::prefix() << "new Array("; for (iterator it = boost::begin(range); it != boost::end(range); ++it) { os << (first ? "" : ", "); stream_point::stream(os, *it); first = false; } os << ")" << Policy::postfix(); } private: typedef typename boost::range_value::type point; BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; template struct veshape_poly { template static inline void stream(std::basic_ostream& os, P const& poly) { typedef typename ring_type

::type ring; typedef typename boost::range_const_iterator< typename interior_type

::type>::type iterator; veshape_range::stream(os, exterior_ring(poly)); // For VE shapes: inner rings are not supported or undocumented /*** for (iterator it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); it++) { os << ","; veshape_range::stream(os, *it); } os << ")"; ***/ } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint::type>) ); }; }} // namespace detail::veshape #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { /*! \brief Dispatching base struct for VEShape streaming, specialized below per geometry type \details Specializations should implement a static method "stream" to stream a geometry The static method should have the signature: template static inline void stream(std::basic_ostream& os, G const& geometry) */ template struct veshape {}; template struct veshape : detail::veshape::veshape_point {}; template struct veshape : detail::veshape::veshape_range {}; template struct veshape : detail::veshape::veshape_range {}; template struct veshape : detail::veshape::veshape_poly {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Generic geometry template manipulator class, takes corresponding output class from traits class \ingroup veshape \details Stream manipulator, streams geometry classes as Virtual Earth shape */ template class veshape_manip { public: inline veshape_manip(G const& g) : m_geometry(g) {} template inline friend std::basic_ostream& operator<<( std::basic_ostream& os, veshape_manip const& m) { dispatch::veshape::type, G>::stream(os, m.m_geometry); os.flush(); return os; } private: G const& m_geometry; }; /*! \brief Object generator to conveniently stream objects without including streamveshape \ingroup veshape \par Example: Small example showing how to use the make_veshape helper function \dontinclude doxygen_examples.cpp \skip example_as_veshape_vector \line { \until } */ template inline veshape_manip veshape(T const& t) { return veshape_manip(t); } } // namespace ggl #endif // GGL_IO_VESHAPE_WRITE_VESHAPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/000077500000000000000000000000001177067165300245515ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/detail/000077500000000000000000000000001177067165300260135ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/detail/endian.hpp000066400000000000000000000152611177067165300277670ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Mateusz Loskot 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // Load/Store values from/to stream of bytes across different endianness. // // Original design of unrolled_byte_loops templates based on // endian utility library from Boost C++ Libraries, // source: boost/spirit/home/support/detail/integer/endian.hpp // Copyright Darin Adler 2000 // Copyright Beman Dawes 2006, 2009 // Distributed under the Boost Software License, Version 1.0. #ifndef GGL_DETAIL_ENDIAN_HPP #define GGL_DETAIL_ENDIAN_HPP #include #include #include #include #include #include #include #include #include #if CHAR_BIT != 8 #error Platforms with CHAR_BIT != 8 are not supported #endif // TODO: mloskot - add static asserts to validate compile-time pre-conditions namespace ggl { namespace detail { namespace endian { // Endianness tag used to indicate load/store directoin struct big_endian_tag {}; struct little_endian_tag {}; #ifdef BOOST_BIG_ENDIAN typedef big_endian_tag native_endian_tag; #else typedef little_endian_tag native_endian_tag; #endif // Unrolled loops for loading and storing streams of bytes. template ::value> struct unrolled_byte_loops { typedef unrolled_byte_loops next; template static T load_forward(Iterator& bytes) { T const value = *bytes; ++bytes; return value | (next::load_forward(bytes) << 8); } template static T load_backward(Iterator& bytes) { T const value = *(bytes - 1); --bytes; return value | (next::load_backward(bytes) << 8); } template static void store_forward(Iterator& bytes, T value) { *bytes = static_cast(value); next::store_forward(++bytes, value >> 8); } template static void store_backward(Iterator& bytes, T value) { *(bytes - 1) = static_cast(value); next::store_backward(--bytes, value >> 8); } }; template struct unrolled_byte_loops { template static T load_forward(Iterator& bytes) { return *bytes; } template static T load_backward(Iterator& bytes) { return *(bytes - 1); } template static void store_forward(Iterator& bytes, T value) { // typename Iterator::value_type *bytes = static_cast(value); } template static void store_backward(Iterator& bytes, T value) { *(bytes - 1) = static_cast(value); } }; template struct unrolled_byte_loops { template static T load_forward(Iterator& bytes) { return *reinterpret_cast(&*bytes); } template static T load_backward(Iterator& bytes) { return *reinterpret_cast(&*(bytes - 1)); } template static void store_forward(Iterator& bytes, T value) { BOOST_STATIC_ASSERT((boost::is_signed::value)); *bytes = static_cast(value); } template static void store_backward(Iterator& bytes, T value) { BOOST_STATIC_ASSERT((boost::is_signed::value)); *(bytes - 1) = static_cast(value); } }; // load/store operation dispatch // E, E - source and target endianness is the same // E1, E2 - source and target endianness is different (big-endian <-> little-endian) template T load_dispatch(Iterator& bytes, E, E) { return unrolled_byte_loops::load_forward(bytes); } template T load_dispatch(Iterator& bytes, E1, E2) { std::advance(bytes, N); return unrolled_byte_loops::load_backward(bytes); } template void store_dispatch(Iterator& bytes, T value, E, E) { return unrolled_byte_loops::store_forward(bytes, value); } template void store_dispatch(Iterator& bytes, T value, E1, E2) { std::advance(bytes, N); return unrolled_byte_loops::store_backward(bytes, value); } // numeric value holder for load/store operation template struct endian_value_base { typedef T value_type; typedef native_endian_tag endian_type; endian_value_base() : value(T()) {} explicit endian_value_base(T value) : value(value) {} operator T() const { return value; } protected: T value; }; template struct endian_value : public endian_value_base { typedef endian_value_base base; endian_value() {} explicit endian_value(T value) : base(value) {} template void load(Iterator bytes) { base::value = load_dispatch(bytes, typename base::endian_type(), E()); } template void store(Iterator bytes) { store_dispatch(bytes, base::value, typename base::endian_type(), E()); } }; template <> struct endian_value : public endian_value_base { typedef endian_value_base base; endian_value() {} explicit endian_value(double value) : base(value) {} template void load(Iterator bytes) { endian_value raw; raw.load(bytes); double& target_value = base::value; std::memcpy(&target_value, &raw, sizeof(double)); } template void store(Iterator bytes) { boost::uint64_t raw; double const& source_value = base::value; std::memcpy(&raw, &source_value, sizeof(boost::uint64_t)); store_dispatch < boost::uint64_t, sizeof(boost::uint64_t) >(bytes, raw, typename base::endian_type(), E()); } }; }}} // namespace ggl::detail::endian #endif // GGL_DETAIL_ENDIAN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/detail/ogc.hpp000066400000000000000000000036771177067165300273110ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Mateusz Loskot 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_WKB_DETAIL_OGC_HPP #define GGL_IO_WKB_DETAIL_OGC_HPP #include namespace ggl { // The well-known binary representation for OGC geometry (WKBGeometry), // provides a portable representation of a geometry value as a contiguous // stream of bytes. It permits geometry values to be exchanged between // a client application and an SQL database in binary form. // // Basic Type definitions // byte : 1 byte // uint32 : 32 bit unsigned integer (4 bytes) // double : double precision number (8 bytes) // // enum wkbByteOrder // { // wkbXDR = 0, // Big Endian // wkbNDR = 1 // Little Endian // }; // // enum wkbGeometryType // { // wkbPoint = 1, // wkbLineString = 2, // wkbPolygon = 3, // wkbMultiPoint = 4, // wkbMultiLineString = 5, // wkbMultiPolygon = 6, // wkbGeometryCollection = 7 // }; #ifndef DOXYGEN_NO_IMPL namespace detail { namespace wkb { // TODO: Replace 'struct' with scoped enum from // For older Boost, copy // // to // // and use it. struct byte_order_type { enum enum_t { xdr = 0, // wkbXDR, bit-endian ndr = 1, // wkbNDR, little-endian unknown = 2 // not defined by OGC }; }; struct geometry_type { enum enum_t { point = 1, linestring = 2, polygon = 3 // TODO: Not implemented //multipoint = 4, //multilinestring = 5, //multipolygon = 6, //collection = 7 }; }; }}} // namespace ggl::detail::wkb #endif // DOXYGEN_NO_IMPL #endif // GGL_IO_WKB_DETAIL_OGC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/detail/parser.hpp000066400000000000000000000217161177067165300300270ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Mateusz Loskot 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_WKB_DETAIL_PARSER_HPP #define GGL_IO_WKB_DETAIL_PARSER_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_IMPL namespace detail { namespace wkb { template struct value_parser { typedef T value_type; template static bool parse(Iterator& it, Iterator end, T& value, byte_order_type::enum_t order) { // Very basic pre-conditions check on stream of bytes passed in BOOST_STATIC_ASSERT(( boost::is_integral::value_type>::value )); BOOST_STATIC_ASSERT((sizeof(boost::uint8_t) == sizeof(typename std::iterator_traits::value_type) )); typedef typename std::iterator_traits::difference_type diff_type; diff_type const required_size = sizeof(T); if (it != end && std::distance(it, end) >= required_size) { typedef endian::endian_value parsed_value_type; parsed_value_type parsed_value; // Decide on direcion of endianness translation, detault to native if (byte_order_type::xdr == order) { parsed_value.template load(it); } else if (byte_order_type::ndr == order) { parsed_value.template load(it); } else { parsed_value.template load(it); } value = parsed_value; std::advance(it, required_size); return true; } return false; } }; struct byte_order_parser { template static bool parse(Iterator& it, Iterator end, byte_order_type::enum_t& order) { boost::uint8_t value; if (value_parser::parse(it, end, value, byte_order_type::unknown)) { if (byte_order_type::unknown > value) { order = byte_order_type::enum_t(value); } return true; } return false; } }; struct geometry_type_parser { template static bool parse(Iterator& it, Iterator end, geometry_type::enum_t& type, byte_order_type::enum_t order) { boost::uint32_t value; if (value_parser::parse(it, end, value, order)) { // TODO: Refine the test when multi* geometries are supported boost::uint32_t id = value & 0xff; if (geometry_type::polygon >= id) { type = geometry_type::enum_t(id); return true; } } return false; } }; template struct parsing_assigner { template static void run(Iterator& it, Iterator end, P& point, byte_order_type::enum_t order) { typedef typename coordinate_type

::type coordinate_type; // coordinate type in WKB is always double double value(0); if (value_parser::parse(it, end, value, order)) { // actual coordinate type of point may be different set(point, static_cast(value)); } else { // TODO: mloskot - Report premature termination at coordinate level //throw failed to read coordinate value // default initialized value as fallback set(point, coordinate_type()); } parsing_assigner::run(it, end, point, order); } }; template struct parsing_assigner { template static void run(Iterator& it, Iterator end, P& point, byte_order_type::enum_t order) { // terminate } }; template struct point_parser { template static bool parse(Iterator& it, Iterator end, P& point, byte_order_type::enum_t order) { // TODO: mloskot - Add assert on point dimension, 2d only geometry_type::enum_t type; if (geometry_type_parser::parse(it, end, type, order)) { if (geometry_type::point == type && it != end) { parsing_assigner::value>::run(it, end, point, order); } return true; } return false; } private: BOOST_CONCEPT_ASSERT((concept::Point

)); }; template struct point_container_parser { template static bool parse(Iterator& it, Iterator end, C& container, byte_order_type::enum_t order) { typedef typename point_type::type point_type; boost::uint32_t num_points(0); if (!value_parser::parse(it, end, num_points, order)) { return false; } typedef typename std::iterator_traits::difference_type size_type; assert(num_points <= boost::uint32_t( (std::numeric_limits::max)() ) ); size_type const container_size = static_cast(num_points); size_type const point_size = dimension::value * sizeof(double); if (std::distance(it, end) >= (container_size * point_size)) { point_type point_buffer; std::back_insert_iterator output(std::back_inserter(container)); // Read coordinates into point and append point to line (ring) size_type points_parsed = 0; while (points_parsed < container_size && it != end) { parsing_assigner::value>::run(it, end, point_buffer, order); output = point_buffer; ++output; ++points_parsed; } if (container_size != points_parsed) { return false; } } return true; } }; template struct linestring_parser { template static bool parse(Iterator& it, Iterator end, L& linestring, byte_order_type::enum_t order) { typedef typename point_type::type point_type; geometry_type::enum_t type; if (!geometry_type_parser::parse(it, end, type, order)) { return false; } if (geometry_type::linestring != type) { return false; } assert(it != end); return point_container_parser::parse(it, end, linestring, order); } }; template struct polygon_parser { template static bool parse(Iterator& it, Iterator end, Polygon& polygon, byte_order_type::enum_t order) { geometry_type::enum_t type; if (!geometry_type_parser::parse(it, end, type, order)) { return false; } boost::uint32_t num_rings(0); if (geometry_type::polygon != type || !value_parser::parse(it, end, num_rings, order)) { return false; } typedef typename ring_type::type ring_type; std::size_t rings_parsed = 0; while (rings_parsed < num_rings && it != end) //while (rings_parsed < num_rings && it != end) { if (0 == rings_parsed) { ring_type& ring0 = exterior_ring(polygon); if (!point_container_parser::parse(it, end, ring0, order)) { return false; } } else { interior_rings(polygon).resize(rings_parsed); ring_type& ringN = interior_rings(polygon).back(); if (!point_container_parser::parse(it, end, ringN, order)) { return false; } } ++rings_parsed; } if (num_rings != rings_parsed) { return false; } return true; } }; }}} // namespace ggl::detail::wkb #endif // DOXYGEN_NO_IMPL #endif // GGL_IO_WKB_DETAIL_PARSER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/read_wkb.hpp000066400000000000000000000054201177067165300270410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Mateusz Loskot 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_WKB_READ_WKB_HPP #define GGL_IO_WKB_READ_WKB_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct read_wkb {}; template struct read_wkb { template static inline bool parse(Iterator& it, Iterator end, G& geometry, detail::wkb::byte_order_type::enum_t order) { return detail::wkb::point_parser::parse(it, end, geometry, order); } }; template struct read_wkb { template static inline bool parse(Iterator& it, Iterator end, G& geometry, detail::wkb::byte_order_type::enum_t order) { ggl::clear(geometry); return detail::wkb::linestring_parser::parse(it, end, geometry, order); } }; template struct read_wkb { template static inline bool parse(Iterator& it, Iterator end, G& geometry, detail::wkb::byte_order_type::enum_t order) { ggl::clear(geometry); return detail::wkb::polygon_parser::parse(it, end, geometry, order); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH template inline bool read_wkb(Iterator begin, Iterator end, G& geometry) { // Stream of bytes can only be parsed using random access iterator. BOOST_STATIC_ASSERT(( boost::is_convertible < typename std::iterator_traits::iterator_category, const std::random_access_iterator_tag& >::value)); detail::wkb::byte_order_type::enum_t byte_order; if (detail::wkb::byte_order_parser::parse(begin, end, byte_order)) { return dispatch::read_wkb < typename tag::type, G >::parse(begin, end, geometry, byte_order); } return false; } template inline bool read_wkb(ByteType const* bytes, std::size_t length, G& geometry) { BOOST_STATIC_ASSERT((boost::is_integral::value)); BOOST_STATIC_ASSERT((sizeof(boost::uint8_t) == sizeof(ByteType))); ByteType const* begin = bytes; ByteType const* const end = bytes + length; return read_wkb(begin, end, geometry); } } // namespace ggl #endif // GGL_IO_WKB_READ_WKB_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkb/utility.hpp000066400000000000000000000052061177067165300267700ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Mateusz Loskot 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_WKB_UTILITY_HPP #define GGL_IO_WKB_UTILITY_HPP #include #include #include #include #include namespace ggl { // TODO: Waiting for errors handling design, eventually return bool // may be replaced to throw exception. template bool hex2wkb(std::string const& hex, OutputIterator bytes) { // Bytes can be only written to output iterator. BOOST_STATIC_ASSERT((boost::is_convertible< typename std::iterator_traits::iterator_category, const std::output_iterator_tag&>::value)); std::string::size_type const byte_size = 2; if (0 != hex.size() % byte_size) { return false; } std::string::size_type const size = hex.size() / byte_size; for (std::string::size_type i = 0; i < size; ++i) { // TODO: This is confirmed performance killer - to be replaced with static char-to-byte map --mloskot std::istringstream iss(hex.substr(i * byte_size, byte_size)); unsigned int byte(0); if (!(iss >> std::hex >> byte)) { return false; } *bytes = static_cast(byte); ++bytes; } return true; } template bool wkb2hex(Iterator begin, Iterator end, std::string& hex) { // Stream of bytes can only be passed using random access iterator. BOOST_STATIC_ASSERT((boost::is_convertible< typename std::iterator_traits::iterator_category, const std::random_access_iterator_tag&>::value)); const char hexalpha[] = "0123456789ABCDEF"; char hexbyte[3] = { 0 }; std::ostringstream oss; Iterator it = begin; while (it != end) { boost::uint8_t byte = static_cast(*it); hexbyte[0] = hexalpha[(byte >> 4) & 0xf]; hexbyte[1] = hexalpha[byte & 0xf]; hexbyte[2] = '\0'; oss << std::setw(2) << hexbyte; ++it; } // TODO: Binary streams can be big. // Does it make sense to request stream buffer of proper (large) size or // use incremental appends within while-loop? hex = oss.str(); // Poor-man validation, no performance penalty expected // because begin/end always are random access iterators. return hex.size() == (2 * std::distance(begin, end)); } } // namespace ggl #endif // GGL_IO_WKB_UTILITY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/000077500000000000000000000000001177067165300245735ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/detail/000077500000000000000000000000001177067165300260355ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/detail/wkt.hpp000066400000000000000000000014461177067165300273600ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_WKT_DETAIL_WKT_HPP #define GGL_IO_WKT_DETAIL_WKT_HPP namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wkt { struct prefix_point { static inline const char* apply() { return "POINT"; } }; struct prefix_polygon { static inline const char* apply() { return "POLYGON"; } }; struct prefix_linestring { static inline const char* apply() { return "LINESTRING"; } }; }} // namespace wkt::impl #endif } // namescpae ggl #endif // GGL_IO_WKT_DETAIL_WKT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/detail/wkt_multi.hpp000066400000000000000000000017711177067165300305730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_IO_WKT_DETAIL_WKT_HPP #define GGL_MULTI_IO_WKT_DETAIL_WKT_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wkt { struct prefix_null { static inline const char* apply() { return ""; } }; struct prefix_multipoint { static inline const char* apply() { return "MULTIPOINT"; } }; struct prefix_multilinestring { static inline const char* apply() { return "MULTILINESTRING"; } }; struct prefix_multipolygon { static inline const char* apply() { return "MULTIPOLYGON"; } }; }} // namespace wkt::impl #endif } // namescpae ggl #endif // GGL_MULTI_IO_WKT_DETAIL_WKT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/read_wkt.hpp000066400000000000000000000412251177067165300271100ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_IO_WKT_READ_WKT_HPP #define GGL_EXTENSIONS_GIS_IO_WKT_READ_WKT_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { /*! \brief Exception showing things wrong with WKT parsing \ingroup wkt */ struct read_wkt_exception : public ggl::exception { template read_wkt_exception(std::string const& msg, Iterator const& it, Iterator const& end, std::string const& wkt) : message(msg) , wkt(wkt) { if (it != end) { source = " at '"; source += it->c_str(); source += "'"; } complete = message + source + " in '" + wkt.substr(0, 100) + "'"; } read_wkt_exception(std::string const& msg, std::string const& wkt) : message(msg) , wkt(wkt) { complete = message + "' in (" + wkt.substr(0, 100) + ")"; } virtual ~read_wkt_exception() throw() {} virtual const char* what() const throw() { return complete.c_str(); } private : std::string source; std::string message; std::string wkt; std::string complete; }; #ifndef DOXYGEN_NO_DETAIL // (wkt: Well Known Text, defined by OGC for all geometries and implemented by e.g. databases (MySQL, PostGIS)) namespace detail { namespace wkt { typedef boost::tokenizer > tokenizer; template struct parsing_assigner { static inline void apply(tokenizer::iterator& it, tokenizer::iterator end, Point& point, std::string const& wkt) { typedef typename coordinate_type::type coordinate_type; typedef typename boost::mpl::if_c < boost::is_fundamental::type::value, coordinate_type, double >::type type; // Stop at end of tokens, or at "," ot ")" bool finished = (it == end || *it == "," || *it == ")"); try { // Initialize missing coordinates to default constructor (zero) // OR // Use lexical_cast for conversion to double/int // Note that it is much slower than atof. However, it is more standard // and in parsing the change in performance falls probably away against // the tokenizing set(point, (finished ? type() : boost::lexical_cast(it->c_str()))); } catch(boost::bad_lexical_cast const& blc) { throw read_wkt_exception(blc.what(), it, end, wkt); } catch(std::exception const& e) { throw read_wkt_exception(e.what(), it, end, wkt); } catch(...) { throw read_wkt_exception("", it, end, wkt); } parsing_assigner::apply( (finished ? it : ++it), end, point, wkt); } }; template struct parsing_assigner { static inline void apply(tokenizer::iterator&, tokenizer::iterator, Point&, std::string const&) { } }; template inline void handle_open_parenthesis(Iterator& it, Iterator const& end, std::string const& wkt) { if (it == end || *it != "(") { throw read_wkt_exception("Expected '('", it, end, wkt); } ++it; } template inline void handle_close_parenthesis(Iterator& it, Iterator const& end, std::string const& wkt) { if (it != end && *it == ")") { ++it; } else { throw read_wkt_exception("Expected ')'", it, end, wkt); } } template inline void check_end(Iterator& it, Iterator const& end, std::string const& wkt) { if (it != end) { throw read_wkt_exception("Too much tokens", it, end, wkt); } } /*! \brief Internal, parses coordinate sequences, strings are formated like "(1 2,3 4,...)" \param it token-iterator, should be pre-positioned at "(", is post-positions after last ")" \param end end-token-iterator \param out Output itererator receiving coordinates */ template struct container_inserter { // Version with output iterator template static inline void apply(tokenizer::iterator& it, tokenizer::iterator end, std::string const& wkt, OutputIterator out) { handle_open_parenthesis(it, end, wkt); Point point; // Parse points until closing parenthesis while (it != end && *it != ")") { parsing_assigner < Point, 0, dimension::value >::apply(it, end, point, wkt); out = point; ++out; if (it != end && *it == ",") { ++it; } } handle_close_parenthesis(it, end, wkt); } }; /*! \brief Internal, parses a point from a string like this "(x y)" \note used for parsing points and multi-points */ template struct point_parser { static inline void apply(tokenizer::iterator& it, tokenizer::iterator end, std::string const& wkt, P& point) { handle_open_parenthesis(it, end, wkt); parsing_assigner::value>::apply(it, end, point, wkt); handle_close_parenthesis(it, end, wkt); } }; template struct linestring_parser { static inline void apply(tokenizer::iterator& it, tokenizer::iterator end, std::string const& wkt, Geometry& geometry) { container_inserter < typename point_type::type >::apply(it, end, wkt, std::back_inserter(geometry)); } }; template struct ring_parser { static inline void apply(tokenizer::iterator& it, tokenizer::iterator end, std::string const& wkt, Ring& ring) { // A ring should look like polygon((x y,x y,x y...)) // So handle the extra opening/closing parentheses // and in between parse using the container-inserter handle_open_parenthesis(it, end, wkt); container_inserter < typename point_type::type >::apply(it, end, wkt, std::back_inserter(ring)); handle_close_parenthesis(it, end, wkt); } }; /*! \brief Internal, parses a polygon from a string like this "((x y,x y),(x y,x y))" \note used for parsing polygons and multi-polygons */ template struct polygon_parser { static inline void apply(tokenizer::iterator& it, tokenizer::iterator end, std::string const& wkt, Polygon& poly) { typedef container_inserter < typename point_type::type > container_inserter; handle_open_parenthesis(it, end, wkt); int n = -1; // Stop at ")" while (it != end && *it != ")") { // Parse ring if (++n == 0) { container_inserter::apply(it, end, wkt, std::back_inserter(exterior_ring(poly))); } else { interior_rings(poly).resize(n); container_inserter::apply(it, end, wkt, std::back_inserter(interior_rings(poly).back())); } if (it != end && *it == ",") { // Skip "," after ring is parsed ++it; } } handle_close_parenthesis(it, end, wkt); } }; inline bool one_of(tokenizer::iterator const& it, std::string const& value, bool& is_present) { if (boost::iequals(*it, value)) { is_present = true; return true; } return false; } inline bool one_of(tokenizer::iterator const& it, std::string const& value, bool& present1, bool& present2) { if (boost::iequals(*it, value)) { present1 = true; present2 = true; return true; } return false; } inline void handle_empty_z_m(tokenizer::iterator& it, tokenizer::iterator end, bool& has_empty, bool& has_z, bool& has_m) { has_empty = false; has_z = false; has_m = false; // WKT can optionally have Z and M (measured) values as in // POINT ZM (1 1 5 60), POINT M (1 1 80), POINT Z (1 1 5) // GGL supports any of them as coordinate values, but is not aware // of any Measured value. while (it != end && (one_of(it, "M", has_m) || one_of(it, "Z", has_z) || one_of(it, "EMPTY", has_empty) || one_of(it, "MZ", has_m, has_z) || one_of(it, "ZM", has_z, has_m) ) ) { ++it; } } /*! \brief Internal, starts parsing \param tokens boost tokens, parsed with separator " " and keeping separator "()" \param geometry string to compare with first token */ template inline bool initialize(tokenizer const& tokens, std::string const& geometry_name, std::string const& wkt, tokenizer::iterator& it) { it = tokens.begin(); if (it != tokens.end() && boost::iequals(*it++, geometry_name)) { bool has_empty, has_z, has_m; handle_empty_z_m(it, tokens.end(), has_empty, has_z, has_m); if (has_z && dimension::type::value < 3) { throw read_wkt_exception("Z only allowed for 3 or more dimensions", wkt); } if (has_empty) { check_end(it, tokens.end(), wkt); return false; } // M is ignored at all. return true; } throw read_wkt_exception(std::string("Should start with '") + geometry_name + "'", wkt); } template class Parser, typename PrefixPolicy> struct geometry_parser { static inline void apply(std::string const& wkt, Geometry& geometry) { ggl::clear(geometry); tokenizer tokens(wkt, boost::char_separator(" ", ",()")); tokenizer::iterator it; if (initialize(tokens, PrefixPolicy::apply(), wkt, it)) { Parser::apply(it, tokens.end(), wkt, geometry); check_end(it, tokens.end(), wkt); } } }; /*! \brief Supports box parsing \note OGC does not define the box geometry, and WKT does not support boxes. However, to be generic GGL supports reading and writing from and to boxes. Boxes are outputted as a standard POLYGON. GGL can read boxes from a standard POLYGON, from a POLYGON with 2 points of from a BOX \tparam Box the box */ template struct box_parser { static inline void apply(std::string const& wkt, Box& box) { bool should_close = false; tokenizer tokens(wkt, boost::char_separator(" ", ",()")); tokenizer::iterator it = tokens.begin(); tokenizer::iterator end = tokens.end(); if (it != end && boost::iequals(*it, "POLYGON")) { ++it; bool has_empty, has_z, has_m; handle_empty_z_m(it, end, has_empty, has_z, has_m); if (has_empty) { assign_zero(box); return; } handle_open_parenthesis(it, end, wkt); should_close = true; } else if (it != end && boost::iequals(*it, "BOX")) { ++it; } else { throw read_wkt_exception("Should start with 'POLYGON' or 'BOX'", wkt); } typedef typename point_type::type point_type; std::vector points; container_inserter::apply(it, end, wkt, std::back_inserter(points)); if (should_close) { handle_close_parenthesis(it, end, wkt); } check_end(it, end, wkt); int index = 0; int n = boost::size(points); if (n == 2) { index = 1; } else if (n == 4 || n == 5) { // In case of 4 or 5 points, we do not check the other ones, just // take the opposite corner which is always 2 index = 2; } else { throw read_wkt_exception("Box should have 2,4 or 5 points", wkt); } set(box, get<0>(points[0])); set(box, get<1>(points[0])); set(box, get<0>(points[index])); set(box, get<1>(points[index])); } }; }} // namespace detail::wkt #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct read_wkt {}; template struct read_wkt : detail::wkt::geometry_parser < Point, detail::wkt::point_parser, detail::wkt::prefix_point > { private : BOOST_CONCEPT_ASSERT( (concept::Point) ); }; template struct read_wkt : detail::wkt::geometry_parser < L, detail::wkt::linestring_parser, detail::wkt::prefix_linestring > {}; template struct read_wkt : detail::wkt::geometry_parser < Ring, detail::wkt::ring_parser, detail::wkt::prefix_polygon > {}; template struct read_wkt : detail::wkt::geometry_parser < Geometry, detail::wkt::polygon_parser, detail::wkt::prefix_polygon > {}; // Box (Non-OGC) template struct read_wkt : detail::wkt::box_parser {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Parses OGC Well-Known Text (\ref WKT) into a geometry (any geometry) \ingroup wkt \param wkt string containing \ref WKT \param geometry output geometry \par Example: \note It is case insensitive and can have the WKT forms "point", "point m", "point z", "point zm", "point mz" \note Empty sequences can have forms as "LINESTRING ()" or "POLYGON(())" Small example showing how to use read_wkt to build a point \dontinclude doxygen_examples.cpp \skip example_from_wkt_point \line { \until } \par Example: Small example showing how to use read_wkt to build a linestring \dontinclude doxygen_examples.cpp \skip example_from_wkt_linestring \line { \until } \par Example: Small example showing how to use read_wkt to build a polygon \dontinclude doxygen_examples.cpp \skip example_from_wkt_polygon \line { \until } */ template inline void read_wkt(std::string const& wkt, Geometry& geometry) { dispatch::read_wkt::type, Geometry>::apply(wkt, geometry); } /*! \brief Parses OGC Well-Known Text (\ref WKT) and outputs using an output iterator \ingroup wkt \param wkt string containing \ref WKT \param out output iterator \note Because the output iterator doesn't always have the type value_type, it should be specified in the function call. \par Example: Small example showing how to use read_wkt with an output iterator \dontinclude doxygen_examples.cpp \skip example_from_wkt_output_iterator \line { \until } */ template inline void read_wkt(std::string const& wkt, Out out) { // Todo: maybe take this from the string, or do not call initialize, such that // any coordinate string is parsed and outputted std::string const& tag = "linestring"; detail::wkt::tokenizer tokens(wkt, boost::char_separator(" ", ",()")); detail::wkt::tokenizer::iterator it; if (detail::wkt::initialize

(tokens, tag, wkt, it)) { detail::wkt::container_inserter

::apply(it, tokens.end(), wkt, out); } } } // namespace ggl #endif // GGL_EXTENSIONS_GIS_IO_WKT_READ_WKT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/read_wkt_multi.hpp000066400000000000000000000053531177067165300303240ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_IO_WKT_READ_WKT_MULTI_HPP #define GGL_EXTENSIONS_GIS_IO_WKT_READ_WKT_MULTI_HPP #include #include #include #include #include namespace ggl { namespace detail { namespace wkt { template class Parser, typename PrefixPolicy> struct multi_parser { static inline void apply(std::string const& wkt, MultiGeometry& geometry) { geometry.clear(); tokenizer tokens(wkt, boost::char_separator(" ", ",()")); tokenizer::iterator it; if (initialize(tokens, PrefixPolicy::apply(), wkt, it)) { handle_open_parenthesis(it, tokens.end(), wkt); // Parse sub-geometries while(it != tokens.end() && *it != ")") { geometry.resize(geometry.size() + 1); Parser < typename boost::range_value::type >::apply(it, tokens.end(), wkt, geometry.back()); if (it != tokens.end() && *it == ",") { // Skip "," after multi-element is parsed ++it; } } handle_close_parenthesis(it, tokens.end(), wkt); } } }; }} // namespace detail::wkt #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct read_wkt : detail::wkt::multi_parser < MultiGeometry, detail::wkt::point_parser, detail::wkt::prefix_multipoint > {}; template struct read_wkt : detail::wkt::multi_parser < MultiGeometry, detail::wkt::linestring_parser, detail::wkt::prefix_multilinestring > {}; template struct read_wkt : detail::wkt::multi_parser < MultiGeometry, detail::wkt::polygon_parser, detail::wkt::prefix_multipolygon > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_EXTENSIONS_GIS_IO_WKT_READ_WKT_MULTI_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/stream_wkt.hpp000066400000000000000000000020601177067165300274620ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_IO_WKT_STREAM_WKT_HPP #define GGL_EXTENSIONS_GIS_IO_WKT_STREAM_WKT_HPP #include // This short file contains only one manipulator, streaming as WKT // Don't move contents to as_wkt, developers must be able to choose how to stream // Don't use namespace ggl, to enable the library to stream custom geometries which // are living outside the namespace ggl //namespace ggl //{ /*! \brief Streams a geometry as Well-Known Text \ingroup wkt */ template inline std::basic_ostream& operator<<(std::basic_ostream &os, const G& geometry) { os << ggl::wkt(geometry); return os; } //} // namespace ggl #endif // GGL_EXTENSIONS_GIS_IO_WKT_STREAM_WKT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/wkt.hpp000066400000000000000000000012011177067165300261030ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_IO_WKT_WKT_HPP #define GGL_EXTENSIONS_GIS_IO_WKT_WKT_HPP #include #include #include #include #endif // GGL_EXTENSIONS_GIS_IO_WKT_WKT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/write_wkt.hpp000066400000000000000000000212441177067165300273260ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_IO_WKT_WRITE_WKT_HPP #define GGL_EXTENSIONS_GIS_IO_WKT_WRITE_WKT_HPP #include #include #include #include #include #include #include #include #include #include #include #include /*! \defgroup wkt wkt: parse and stream WKT (Well-Known Text) The wkt classes stream the specified geometry as \ref OGC Well Known Text (\ref WKT). It is defined for OGC geometries. It is therefore not defined for all geometries (e.g. not for circle) \note The implementation is independant from point type, point_xy and point_ll are supported, as well as points with more than two coordinates. */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wkt { template struct stream_coordinate { template static inline void apply(std::basic_ostream& os, P const& p) { os << (I > 0 ? " " : "") << get(p); stream_coordinate::apply(os, p); } }; template struct stream_coordinate { template static inline void apply(std::basic_ostream&, P const&) {} }; struct prefix_linestring_par { static inline const char* apply() { return "LINESTRING("; } }; struct prefix_ring_par_par { // Note, double parentheses are intentional, indicating WKT ring begin/end static inline const char* apply() { return "POLYGON(("; } }; struct opening_parenthesis { static inline const char* apply() { return "("; } }; struct closing_parenthesis { static inline const char* apply() { return ")"; } }; struct double_closing_parenthesis { static inline const char* apply() { return "))"; } }; /*! \brief Stream points as \ref WKT */ template struct wkt_point { template static inline void apply(std::basic_ostream& os, Point const& p) { os << Policy::apply() << "("; stream_coordinate::type::value>::apply(os, p); os << ")"; } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; /*! \brief Stream ranges as WKT \note policy is used to stream prefix/postfix, enabling derived classes to override this */ template struct wkt_range { template static inline void apply(std::basic_ostream& os, Range const& range) { typedef typename boost::range_const_iterator::type iterator_type; bool first = true; os << PrefixPolicy::apply(); // TODO: check EMPTY here for (iterator_type it = boost::begin(range); it != boost::end(range); ++it) { os << (first ? "" : ","); stream_coordinate::type::value>::apply(os, *it); first = false; } os << SuffixPolicy::apply(); } private: typedef typename boost::range_value::type point; BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; /*! \brief Stream sequence of points as WKT-part, e.g. (1 2),(3 4) \note Used in polygon, all multi-geometries */ template struct wkt_sequence : wkt_range < Range, opening_parenthesis, closing_parenthesis > {}; template struct wkt_poly { template static inline void apply(std::basic_ostream& os, Polygon const& poly) { typedef typename ring_type::type ring; typedef typename boost::range_const_iterator< typename interior_type::type>::type iterator; os << PrefixPolicy::apply(); // TODO: check EMPTY here os << "("; wkt_sequence::apply(os, exterior_ring(poly)); for (iterator it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { os << ","; wkt_sequence::apply(os, *it); } os << ")"; } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint::type>) ); }; template struct wkt_box { typedef typename point_type::type point_type; template static inline void apply(std::basic_ostream& os, Box const& box) { // Convert to linear ring, then stream typedef linear_ring ring_type; ring_type ring; ggl::convert(box, ring); os << "POLYGON("; wkt_sequence::apply(os, ring); os << ")"; } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); inline wkt_box() { // Only streaming of boxes with two dimensions is support, otherwise it is a polyhedron! //assert_dimension(); } }; }} // namespace detail::wkt #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct wkt {}; template struct wkt : detail::wkt::wkt_point < Point, detail::wkt::prefix_point > {}; template struct wkt : detail::wkt::wkt_range < Linestring, detail::wkt::prefix_linestring_par, detail::wkt::closing_parenthesis > {}; /*! \brief Specialization to stream a box as WKT \details A "box" does not exist in WKT. It is therefore streamed as a polygon */ template struct wkt : detail::wkt::wkt_box {}; /*! \brief Specialization to stream a ring as WKT \details A "linear_ring" does not exist in WKT. A linear ring is equivalent to a polygon without inner rings It is therefore streamed as a polygon */ template struct wkt : detail::wkt::wkt_range < Ring, detail::wkt::prefix_ring_par_par, detail::wkt::double_closing_parenthesis > {}; /*! \brief Specialization to stream polygon as WKT */ template struct wkt : detail::wkt::wkt_poly < Polygon, detail::wkt::prefix_polygon > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Generic geometry template manipulator class, takes corresponding output class from traits class \ingroup wkt \details Stream manipulator, streams geometry classes as \ref WKT streams \par Example: Small example showing how to use the wkt class \dontinclude doxygen_examples.cpp \skip example_as_wkt_point \line { \until } */ template class wkt_manipulator { public: inline wkt_manipulator(Geometry const& g) : m_geometry(g) {} template inline friend std::basic_ostream& operator<<( std::basic_ostream& os, wkt_manipulator const& m) { dispatch::wkt < typename tag::type, Geometry >::apply(os, m.m_geometry); os.flush(); return os; } private: Geometry const& m_geometry; }; /*! \brief Main WKT-streaming function \ingroup wkt \par Example: Small example showing how to use the wkt helper function \dontinclude doxygen_examples.cpp \skip example_as_wkt_vector \line { \until } */ template inline wkt_manipulator wkt(Geometry const& geometry) { return wkt_manipulator(geometry); } // Backward compatibility template inline wkt_manipulator make_wkt(Geometry const& geometry) { return wkt_manipulator(geometry); } } // namespace ggl #endif // GGL_EXTENSIONS_GIS_IO_WKT_WRITE_WKT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/io/wkt/write_wkt_multi.hpp000066400000000000000000000047701177067165300305450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 2008-2009, Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_IO_WKT_WRITE_WKT_MULTI_HPP #define GGL_EXTENSIONS_GIS_IO_WKT_WRITE_WKT_MULTI_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wkt { template struct wkt_multi { template static inline void apply(std::basic_ostream& os, Multi const& geometry) { os << PrefixPolicy::apply(); // TODO: check EMPTY here os << "("; for (typename boost::range_const_iterator::type it = boost::begin(geometry); it != boost::end(geometry); ++it) { if (it != boost::begin(geometry)) { os << ","; } StreamPolicy::apply(os, *it); } os << ")"; } }; }} // namespace wkt::impl #endif #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct wkt : detail::wkt::wkt_multi < Multi, detail::wkt::wkt_point < typename boost::range_value::type, detail::wkt::prefix_null >, detail::wkt::prefix_multipoint > {}; template struct wkt : detail::wkt::wkt_multi < Multi, detail::wkt::wkt_sequence < typename boost::range_value::type >, detail::wkt::prefix_multilinestring > {}; template struct wkt : detail::wkt::wkt_multi < Multi, detail::wkt::wkt_poly < typename boost::range_value::type, detail::wkt::prefix_null >, detail::wkt::prefix_multipolygon > {}; } // namespace dispatch #endif } #endif // GGL_EXTENSIONS_GIS_IO_WKT_WRITE_WKT_MULTI_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/latlong/000077500000000000000000000000001177067165300250175ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/latlong/detail/000077500000000000000000000000001177067165300262615ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/latlong/detail/graticule.hpp000066400000000000000000000142251177067165300307550ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_GIS_LATLONG_DETAIL_GRATICULE_HPP #define GGL_EXTENSIONS_GIS_LATLONG_DETAIL_GRATICULE_HPP #include #include #include #include namespace ggl { /*! \brief Cardinal directions. \ingroup cs \details They are used in the dms-class. When specified by the library user, north/east/south/west is, in general, enough. When parsed or received by an algorithm, the user knows it it is lat/long but not more */ enum cd_selector { /*cd_none, */ north, east, south, west, cd_lat, cd_lon }; /*! \brief Utility class to assign poinst with degree,minute,second \ingroup cs \note Normally combined with latitude and longitude classes \tparam CardinalDir selects if it is north/south/west/east \tparam coordinate value, double/float \par Example: Example showing how to use the dms class \dontinclude doxygen_examples.cpp \skip example_dms \line { \until } */ template class dms { public: /// Constructs with a value inline explicit dms(T v) : m_value(v) {} /// Constructs with a degree, minute, optional second inline explicit dms(int d, int m, T s = 0.0) { double v = ((CardinalDir == west || CardinalDir == south) ? -1.0 : 1.0) * (double(d) + (m / 60.0) + (s / 3600.0)); m_value = boost::numeric_cast(v); } // Prohibit automatic conversion to T // because this would enable lon(dms) // inline operator T() const { return m_value; } /// Explicit conversion to T (double/float) inline const T& as_value() const { return m_value; } /// Get degrees as integer, minutes as integer, seconds as double. inline void get_dms(int& d, int& m, double& s, bool& positive, char& cardinal) const { double value = m_value; // Set to normal earth latlong coordinates while (value < -180) { value += 360; } while (value > 180) { value -= 360; } // Make positive and indicate this positive = value > 0; // Todo: we might implement template/specializations here // Todo: if it is "west" and "positive", make east? or keep minus sign then? cardinal = ((CardinalDir == cd_lat && positive) ? 'N' : (CardinalDir == cd_lat && !positive) ? 'S' : (CardinalDir == cd_lon && positive) ? 'E' : (CardinalDir == cd_lon && !positive) ? 'W' : (CardinalDir == east) ? 'E' : (CardinalDir == west) ? 'W' : (CardinalDir == north) ? 'N' : (CardinalDir == south) ? 'S' : ' '); value = std::fabs(value); // Calculate the values double fraction = 0; double integer = 0; fraction = std::modf(value, &integer); d = int(integer); s = 60.0 * std::modf(fraction * 60.0, &integer); m = int(integer); } /// Get degrees, minutes, seconds as a string, separators can be specified optionally inline std::string get_dms(const std::string& ds = " ", const std::string& ms = "'", const std::string& ss = "\"") const { double s = 0; int d = 0; int m = 0; bool positive = false; char cardinal = 0; get_dms(d, m, s, positive, cardinal); std::ostringstream out; out << d << ds << m << ms << s << ss << " " << cardinal; return out.str(); } private: T m_value; }; #ifndef DOXYGEN_NO_DETAIL namespace detail { /*! \brief internal base class for latitude and longitude classes \details The latitude longitude classes define different types for lat and lon. This is convenient to construct latlong class without ambiguity. \note It is called graticule, after "This latitude/longitude "webbing" is known as the common graticule" (http://en.wikipedia.org/wiki/Geographic_coordinate_system) \tparam S latitude/longitude \tparam T coordinate type, double float or int */ template class graticule { public: // TODO: Pass 'v' by const-ref inline explicit graticule(T v) : m_v(v) {} inline operator T() const { return m_v; } private: T m_v; }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief Utility class to assign points with latitude value (north/south) \ingroup cs \tparam T coordinate type, double / float \note Often combined with dms class */ template class latitude : public detail::graticule { public: /// Can be constructed with a value inline explicit latitude(T v) : detail::graticule(v) {} /// Can be constructed with a NORTH dms-class inline explicit latitude(const dms& v) : detail::graticule(v.as_value()) {} /// Can be constructed with a SOUTH dms-class inline explicit latitude(const dms& v) : detail::graticule(v.as_value()) {} }; /*! \brief Utility class to assign points with longitude value (west/east) \ingroup cs \tparam T coordinate type, double / float \note Often combined with dms class */ template class longitude : public detail::graticule { public: /// Can be constructed with a value inline explicit longitude(T v) : detail::graticule(v) {} /// Can be constructed with a WEST dms-class inline explicit longitude(const dms& v) : detail::graticule(v.as_value()) {} /// Can be constructed with an EAST dms-class inline explicit longitude(const dms& v) : detail::graticule(v.as_value()) {} }; } // namespace ggl #endif // GGL_EXTENSIONS_GIS_LATLONG_DETAIL_GRATICULE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/latlong/latlong.hpp000066400000000000000000000025021177067165300271670ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_LATLONG_HPP #define GGL_LATLONG_HPP // Predeclare common Cartesian 3D points for convenience #include #include #include #include namespace ggl { typedef point_ll > point_ll_deg; typedef linestring linestring_ll_deg; typedef linear_ring ring_ll_deg; typedef polygon polygon_ll_deg; typedef box box_ll_deg; typedef segment segment_ll_deg; typedef point_ll > point_ll_rad; typedef linestring linestring_ll_rad; typedef linear_ring ring_ll_rad; typedef polygon polygon_ll_rad; typedef box box_ll_rad; typedef segment segment_ll_rad; } #endif // GGL_LATLONG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/latlong/point_ll.hpp000066400000000000000000000102111177067165300273430ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_POINT_LL_HPP #define GGL_GEOMETRIES_POINT_LL_HPP #include #include #include #include #include #include #include #include #include namespace ggl { /*! \brief Point using spherical coordinates \a lat and \a lon, on Earth \ingroup Geometry \details The point_ll class implements a point with lat and lon functions. It can be constructed using latitude and longitude classes. The latlong class can be defined in degrees or in radians. There is a conversion method from degree to radian, and from radian to degree. \tparam T coordinate type, double (the default) or float (it might be int as well) \tparam C coordinate system, optional, should includes degree/radian indication, defaults to geographic \tparam D dimensions, optional, defaults to 2 \note There is NO constructor with two values to avoid exchanging lat and long \note Construction with latitude and longitude can be done in both orders, so lat/long and long/lat \par Example: Example showing how the point_ll class can be constructed. Note that it can also be constructed using decimal degrees (43.123). \dontinclude doxygen_examples.cpp \skip example_point_ll_construct \line { \until } */ template < typename T = double, typename C = cs::geographic, std::size_t D = 2 > class point_ll : public point { public: /// Default constructor, does not initialize anything inline point_ll() : point() {} /// Constructor with longitude/latitude inline point_ll(longitude const& lo, latitude const& la) : point(lo, la) {} /// Constructor with latitude/longitude inline point_ll(latitude const& la, longitude const& lo) : point(lo, la) {} /// Get longitude inline T const& lon() const { return this->template get<0>(); } /// Get latitude inline T const& lat() const { return this->template get<1>(); } /// Set longitude inline void lon(T const& v) { this->template set<0>(v); } /// Set latitude inline void lat(T const& v) { this->template set<1>(v); } /// Set longitude using dms class inline void lon(dms const& v) { this->template set<0>(v.as_value()); } inline void lon(dms const& v) { this->template set<0>(v.as_value()); } inline void lat(dms const& v) { this->template set<1>(v.as_value()); } inline void lat(dms const& v) { this->template set<1>(v.as_value()); } }; // Adapt the point_ll to the concept #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag > { typedef point_tag type; }; template struct coordinate_type > { typedef T type; }; template struct coordinate_system > { typedef C type; }; template struct dimension > : boost::mpl::int_ {}; template struct access > { template static inline T get(point_ll const& p) { return p.template get(); } template static inline void set(point_ll& p, T const& value) { p.template set(value); } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_POINT_LL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/000077500000000000000000000000001177067165300257165ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/epsg.hpp000066400000000000000000015677011177067165300274060ustar00rootroot00000000000000#ifndef _PROJECTIONS_EPGS_HPP #define _PROJECTIONS_EPGS_HPP // Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include // This file is OPTIONAL // Only to be included if EPSG codes are necessary. // It is not included automatically namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { inline std::string code_to_string(int code) { switch(code) { case 2000 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"; case 2001 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"; case 2002 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m"; case 2003 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m"; case 2004 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m"; case 2005 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"; case 2006 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m"; case 2007 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m"; case 2008 : return "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2009 : return "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2010 : return "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2011 : return "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2012 : return "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2013 : return "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2014 : return "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2015 : return "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2016 : return "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2017 : return "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2018 : return "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2019 : return "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2020 : return "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2021 : return "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2022 : return "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2023 : return "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2024 : return "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2025 : return "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2026 : return "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m"; case 2027 : return "+proj=utm +zone=15 +ellps=clrk66 +units=m"; case 2028 : return "+proj=utm +zone=16 +ellps=clrk66 +units=m"; case 2029 : return "+proj=utm +zone=17 +ellps=clrk66 +units=m"; case 2030 : return "+proj=utm +zone=18 +ellps=clrk66 +units=m"; case 2031 : return "+proj=utm +zone=17 +ellps=clrk66 +units=m"; case 2032 : return "+proj=utm +zone=18 +ellps=clrk66 +units=m"; case 2033 : return "+proj=utm +zone=19 +ellps=clrk66 +units=m"; case 2034 : return "+proj=utm +zone=20 +ellps=clrk66 +units=m"; case 2035 : return "+proj=utm +zone=21 +ellps=clrk66 +units=m"; case 2036 : return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2037 : return "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2038 : return "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2039 : return "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m"; case 2040 : return "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m"; case 2041 : return "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m"; case 2042 : return "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m"; case 2043 : return "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m"; case 2044 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m"; case 2045 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m"; case 2056 : return "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m"; case 2057 : return "+proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m"; case 2058 : return "+proj=utm +zone=38 +ellps=intl +units=m"; case 2059 : return "+proj=utm +zone=39 +ellps=intl +units=m"; case 2060 : return "+proj=utm +zone=40 +ellps=intl +units=m"; case 2061 : return "+proj=utm +zone=41 +ellps=intl +units=m"; case 2062 : return "+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m"; case 2063 : return "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"; case 2064 : return "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"; case 2065 : return "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 2066 : return "+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164"; case 2067 : return "+proj=utm +zone=20 +ellps=intl +units=m"; case 2068 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2069 : return "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2070 : return "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2071 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2072 : return "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2073 : return "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2074 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2075 : return "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2076 : return "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m"; case 2077 : return "+proj=utm +zone=32 +ellps=intl +units=m"; case 2078 : return "+proj=utm +zone=33 +ellps=intl +units=m"; case 2079 : return "+proj=utm +zone=34 +ellps=intl +units=m"; case 2080 : return "+proj=utm +zone=35 +ellps=intl +units=m"; case 2081 : return "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m"; case 2082 : return "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m"; case 2083 : return "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m"; case 2084 : return "+proj=utm +zone=19 +south +ellps=intl +units=m"; case 2085 : return "+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m"; case 2086 : return "+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m"; case 2087 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2088 : return "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m"; case 2089 : return "+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2090 : return "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2091 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m"; case 2092 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m"; case 2093 : return "+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m"; case 2094 : return "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 2095 : return "+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m"; case 2096 : return "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m"; case 2097 : return "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m"; case 2098 : return "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m"; case 2099 : return "+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m"; case 2100 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m"; case 2101 : return "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m"; case 2102 : return "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m"; case 2103 : return "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m"; case 2104 : return "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m"; case 2105 : return "+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2106 : return "+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2107 : return "+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2108 : return "+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2109 : return "+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2110 : return "+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2111 : return "+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2112 : return "+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2113 : return "+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2114 : return "+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2115 : return "+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2116 : return "+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2117 : return "+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2118 : return "+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2119 : return "+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2120 : return "+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2121 : return "+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2122 : return "+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2123 : return "+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2124 : return "+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2125 : return "+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2126 : return "+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2127 : return "+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2128 : return "+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2129 : return "+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2130 : return "+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2131 : return "+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2132 : return "+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2133 : return "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2134 : return "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2135 : return "+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2136 : return "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088"; case 2137 : return "+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m"; case 2138 : return "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m"; case 2139 : return "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2140 : return "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2141 : return "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2142 : return "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2143 : return "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2144 : return "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2145 : return "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2146 : return "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2147 : return "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2148 : return "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2149 : return "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2150 : return "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2151 : return "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2152 : return "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2153 : return "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2154 : return "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2155 : return "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192"; case 2156 : return "+proj=utm +zone=59 +south +ellps=GRS80 +units=m"; case 2157 : return "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2158 : return "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2159 : return "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088"; case 2160 : return "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088"; case 2161 : return "+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m"; case 2162 : return "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m"; case 2163 : return "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m"; case 2164 : return "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m"; case 2165 : return "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m"; case 2166 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"; case 2167 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"; case 2168 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"; case 2169 : return "+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m"; case 2170 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 2171 : return "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 2172 : return "+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 2173 : return "+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 2174 : return "+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 2175 : return "+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 2176 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m"; case 2177 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m"; case 2178 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m"; case 2179 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m"; case 2180 : return "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m"; case 2188 : return "+proj=utm +zone=25 +ellps=intl +units=m"; case 2189 : return "+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m"; case 2190 : return "+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m"; case 2191 : return "+proj=utm +zone=28 +ellps=intl +units=m"; case 2192 : return "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m"; case 2193 : return "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2194 : return "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192"; case 2195 : return "+proj=utm +zone=2 +south +ellps=GRS80 +units=m"; case 2196 : return "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2197 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2198 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m"; case 2199 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"; case 2200 : return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"; case 2201 : return "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2202 : return "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2203 : return "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2204 : return "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 2205 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 2206 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m"; case 2207 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m"; case 2208 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m"; case 2209 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m"; case 2210 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m"; case 2211 : return "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m"; case 2212 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m"; case 2213 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2214 : return "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m"; case 2215 : return "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m"; case 2216 : return "+proj=utm +zone=22 +ellps=intl +units=m"; case 2217 : return "+proj=utm +zone=23 +ellps=intl +units=m"; case 2219 : return "+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m"; case 2220 : return "+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m"; case 2222 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2223 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2224 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2225 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2226 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2227 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2228 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2229 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2230 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2231 : return "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2232 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2233 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2234 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2235 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2236 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2237 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2238 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2239 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2240 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2241 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2242 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2243 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2244 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2245 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2246 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2247 : return "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2248 : return "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2249 : return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2250 : return "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2251 : return "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2252 : return "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2253 : return "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2254 : return "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2255 : return "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2256 : return "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2257 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2258 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2259 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2260 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2261 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2262 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2263 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2264 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2265 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2266 : return "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2267 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2268 : return "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2269 : return "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2270 : return "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2271 : return "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2272 : return "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2273 : return "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2274 : return "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2275 : return "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2276 : return "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2277 : return "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2278 : return "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2279 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2280 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2281 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2282 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2283 : return "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2284 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2285 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2286 : return "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2287 : return "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2288 : return "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2289 : return "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2290 : return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m"; case 2291 : return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"; case 2292 : return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2294 : return "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m"; case 2295 : return "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m"; case 2308 : return "+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m"; case 2309 : return "+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m"; case 2310 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m"; case 2311 : return "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 2312 : return "+proj=utm +zone=33 +ellps=clrk80 +units=m"; case 2313 : return "+proj=utm +zone=33 +ellps=clrk80 +units=m"; case 2314 : return "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654"; case 2315 : return "+proj=utm +zone=19 +south +ellps=intl +units=m"; case 2316 : return "+proj=utm +zone=20 +south +ellps=intl +units=m"; case 2317 : return "+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m"; case 2318 : return "+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m"; case 2319 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2320 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2321 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2322 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2323 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2324 : return "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2325 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 2326 : return "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m"; case 2327 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2328 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2329 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2330 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2331 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2332 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2333 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2334 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2335 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2336 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2337 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2338 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2339 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2340 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2341 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2342 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2343 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2344 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2345 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2346 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2347 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2348 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2349 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2350 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2351 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2352 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2353 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2354 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2355 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2356 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2357 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2358 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2359 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2360 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2361 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2362 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2363 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2364 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2365 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2366 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2367 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2368 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2369 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2370 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2371 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2372 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2373 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2374 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2375 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2376 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2377 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2378 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2379 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2380 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2381 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2382 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2383 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2384 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2385 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2386 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2387 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2388 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2389 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2390 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m"; case 2391 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"; case 2392 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"; case 2393 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"; case 2394 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"; case 2395 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m"; case 2396 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m"; case 2397 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"; case 2398 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"; case 2399 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m"; case 2400 : return "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 2401 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"; case 2402 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"; case 2403 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"; case 2404 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"; case 2405 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"; case 2406 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"; case 2407 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"; case 2408 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"; case 2409 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m"; case 2410 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m"; case 2411 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m"; case 2412 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m"; case 2413 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m"; case 2414 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m"; case 2415 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m"; case 2416 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m"; case 2417 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m"; case 2418 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m"; case 2419 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m"; case 2420 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m"; case 2421 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m"; case 2422 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2423 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2424 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2425 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2426 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2427 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2428 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2429 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2430 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2431 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2432 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2433 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2434 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2435 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2436 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2437 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2438 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2439 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2440 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2441 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2442 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2443 : return "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2444 : return "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2445 : return "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2446 : return "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2447 : return "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2448 : return "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2449 : return "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2450 : return "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2451 : return "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2452 : return "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2453 : return "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2454 : return "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2455 : return "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2456 : return "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2457 : return "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2458 : return "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2459 : return "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2460 : return "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2461 : return "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2462 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"; case 2463 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2464 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2465 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2466 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2467 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2468 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2469 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2470 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2471 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2472 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2473 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2474 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2475 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2476 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2477 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2478 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2479 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2480 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2481 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2482 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2483 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2484 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2485 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2486 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2487 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2488 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2489 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2490 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2491 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2492 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2493 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2494 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2495 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2496 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2497 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2498 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2499 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2500 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2501 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2502 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2503 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2504 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2505 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2506 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2507 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2508 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2509 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2510 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2511 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2512 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2513 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2514 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2515 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2516 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2517 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2518 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2519 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2520 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2521 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2522 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2523 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"; case 2524 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"; case 2525 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"; case 2526 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"; case 2527 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"; case 2528 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"; case 2529 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"; case 2530 : return "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"; case 2531 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"; case 2532 : return "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"; case 2533 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"; case 2534 : return "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"; case 2535 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"; case 2536 : return "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"; case 2537 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"; case 2538 : return "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"; case 2539 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"; case 2540 : return "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"; case 2541 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"; case 2542 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"; case 2543 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"; case 2544 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"; case 2545 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"; case 2546 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"; case 2547 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"; case 2548 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"; case 2549 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m"; case 2550 : return "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m"; case 2551 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m"; case 2552 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m"; case 2553 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m"; case 2554 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m"; case 2555 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m"; case 2556 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m"; case 2557 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m"; case 2558 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m"; case 2559 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m"; case 2560 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m"; case 2561 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m"; case 2562 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m"; case 2563 : return "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m"; case 2564 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m"; case 2565 : return "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m"; case 2566 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m"; case 2567 : return "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m"; case 2568 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m"; case 2569 : return "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m"; case 2570 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m"; case 2571 : return "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m"; case 2572 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m"; case 2573 : return "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m"; case 2574 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m"; case 2575 : return "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m"; case 2576 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m"; case 2577 : return "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m"; case 2578 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m"; case 2579 : return "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m"; case 2580 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m"; case 2581 : return "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m"; case 2582 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2583 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2584 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2585 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2586 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2587 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2588 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2589 : return "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2590 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2591 : return "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2592 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2593 : return "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2594 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2595 : return "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2596 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2597 : return "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2598 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2599 : return "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2600 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2601 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2602 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2603 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2604 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2605 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2606 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2607 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2608 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2609 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2610 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2611 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2612 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2613 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2614 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2615 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2616 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2617 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2618 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2619 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2620 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2621 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2622 : return "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2623 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2624 : return "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2625 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2626 : return "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2627 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2628 : return "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2629 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2630 : return "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2631 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2632 : return "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2633 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2634 : return "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2635 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2636 : return "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2637 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2638 : return "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2639 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2640 : return "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2641 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"; case 2642 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"; case 2643 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"; case 2644 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"; case 2645 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"; case 2646 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"; case 2647 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"; case 2648 : return "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"; case 2649 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"; case 2650 : return "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"; case 2651 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"; case 2652 : return "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"; case 2653 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"; case 2654 : return "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"; case 2655 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"; case 2656 : return "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"; case 2657 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"; case 2658 : return "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"; case 2659 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"; case 2660 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"; case 2661 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"; case 2662 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"; case 2663 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"; case 2664 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"; case 2665 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"; case 2666 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"; case 2667 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m"; case 2668 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m"; case 2669 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m"; case 2670 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m"; case 2671 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m"; case 2672 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m"; case 2673 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m"; case 2674 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m"; case 2675 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m"; case 2676 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m"; case 2677 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m"; case 2678 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m"; case 2679 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m"; case 2680 : return "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m"; case 2681 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m"; case 2682 : return "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m"; case 2683 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m"; case 2684 : return "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m"; case 2685 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m"; case 2686 : return "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m"; case 2687 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m"; case 2688 : return "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m"; case 2689 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m"; case 2690 : return "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m"; case 2691 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m"; case 2692 : return "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m"; case 2693 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m"; case 2694 : return "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m"; case 2695 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m"; case 2696 : return "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m"; case 2697 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m"; case 2698 : return "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m"; case 2699 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2700 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2701 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2702 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2703 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2704 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2705 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2706 : return "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2707 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2708 : return "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2709 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2710 : return "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2711 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2712 : return "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2713 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2714 : return "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2715 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2716 : return "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2717 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2718 : return "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2719 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2720 : return "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2721 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2722 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2723 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2724 : return "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2725 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2726 : return "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2727 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2728 : return "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2729 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2730 : return "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2731 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2732 : return "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2733 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2734 : return "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2735 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2736 : return "+proj=utm +zone=36 +south +ellps=clrk66 +units=m"; case 2737 : return "+proj=utm +zone=37 +south +ellps=clrk66 +units=m"; case 2738 : return "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2739 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2740 : return "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2741 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2742 : return "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2743 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2744 : return "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2745 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2746 : return "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2747 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2748 : return "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2749 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2750 : return "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2751 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2752 : return "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2753 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2754 : return "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2755 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2756 : return "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2757 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2758 : return "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 2759 : return "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2760 : return "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2761 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m"; case 2762 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m"; case 2763 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m"; case 2764 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m"; case 2765 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m"; case 2766 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m"; case 2767 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m"; case 2768 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m"; case 2769 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m"; case 2770 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m"; case 2771 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m"; case 2772 : return "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m"; case 2773 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m"; case 2774 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m"; case 2775 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m"; case 2776 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2777 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2778 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2779 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2780 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2781 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"; case 2782 : return "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2783 : return "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2784 : return "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2785 : return "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2786 : return "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2787 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2788 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2789 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m"; case 2790 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"; case 2791 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"; case 2792 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m"; case 2793 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m"; case 2794 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m"; case 2795 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2796 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m"; case 2797 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m"; case 2798 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2799 : return "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m"; case 2800 : return "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m"; case 2801 : return "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m"; case 2802 : return "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"; case 2803 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m"; case 2804 : return "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m"; case 2805 : return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m"; case 2806 : return "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2807 : return "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m"; case 2808 : return "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m"; case 2809 : return "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m"; case 2810 : return "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m"; case 2811 : return "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m"; case 2812 : return "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m"; case 2813 : return "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"; case 2814 : return "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"; case 2815 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m"; case 2816 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2817 : return "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m"; case 2818 : return "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2819 : return "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2820 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m"; case 2821 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m"; case 2822 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m"; case 2823 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"; case 2824 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m"; case 2825 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m"; case 2826 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2827 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m"; case 2828 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m"; case 2829 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m"; case 2830 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m"; case 2831 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"; case 2832 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2833 : return "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2834 : return "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2835 : return "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2836 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2837 : return "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2838 : return "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m"; case 2839 : return "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m"; case 2840 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m"; case 2841 : return "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2842 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2843 : return "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2844 : return "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m"; case 2845 : return "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m"; case 2846 : return "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m"; case 2847 : return "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m"; case 2848 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m"; case 2849 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m"; case 2850 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m"; case 2851 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m"; case 2852 : return "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2853 : return "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m"; case 2854 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m"; case 2855 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2856 : return "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 2857 : return "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2858 : return "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2859 : return "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2860 : return "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2861 : return "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2862 : return "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m"; case 2863 : return "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m"; case 2864 : return "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 2865 : return "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m"; case 2866 : return "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m"; case 2867 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2868 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2869 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2870 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2871 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2872 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2873 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2874 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2875 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2876 : return "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2877 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2878 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2879 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2880 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2881 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2882 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2883 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2884 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2885 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2886 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2887 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2888 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2889 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2890 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2891 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2892 : return "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2893 : return "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2894 : return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2895 : return "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2896 : return "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2897 : return "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2898 : return "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2899 : return "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2900 : return "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2901 : return "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2902 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2903 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2904 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2905 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2906 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2907 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2908 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2909 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2910 : return "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2911 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2912 : return "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2913 : return "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2914 : return "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2915 : return "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2916 : return "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2917 : return "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2918 : return "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2919 : return "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2920 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2921 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +to_meter=0.3048"; case 2922 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +to_meter=0.3048"; case 2923 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +to_meter=0.3048"; case 2924 : return "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2925 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2926 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2927 : return "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2928 : return "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2929 : return "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2930 : return "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2931 : return "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m"; case 2932 : return "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m"; case 2933 : return "+proj=utm +zone=50 +south +ellps=bessel +units=m"; case 2934 : return "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m"; case 2935 : return "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +units=m"; case 2936 : return "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m"; case 2937 : return "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m"; case 2938 : return "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m"; case 2939 : return "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m"; case 2940 : return "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m"; case 2941 : return "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m"; case 2942 : return "+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m"; case 2943 : return "+proj=utm +zone=28 +ellps=intl +units=m"; case 2944 : return "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2945 : return "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2946 : return "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2947 : return "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2948 : return "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2949 : return "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2950 : return "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2951 : return "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2952 : return "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m"; case 2953 : return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m"; case 2954 : return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m"; case 2955 : return "+proj=utm +zone=11 +ellps=GRS80 +units=m"; case 2956 : return "+proj=utm +zone=12 +ellps=GRS80 +units=m"; case 2957 : return "+proj=utm +zone=13 +ellps=GRS80 +units=m"; case 2958 : return "+proj=utm +zone=17 +ellps=GRS80 +units=m"; case 2959 : return "+proj=utm +zone=18 +ellps=GRS80 +units=m"; case 2960 : return "+proj=utm +zone=19 +ellps=GRS80 +units=m"; case 2961 : return "+proj=utm +zone=20 +ellps=GRS80 +units=m"; case 2962 : return "+proj=utm +zone=21 +ellps=GRS80 +units=m"; case 2964 : return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 2965 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2966 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 2967 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2968 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"; case 2969 : return "+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m"; case 2970 : return "+proj=utm +zone=20 +ellps=intl +units=m"; case 2971 : return "+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m"; case 2972 : return "+proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m"; case 2973 : return "+proj=utm +zone=20 +ellps=intl +units=m"; case 2975 : return "+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2976 : return "+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m"; case 2977 : return "+proj=utm +zone=5 +south +ellps=intl +units=m"; case 2978 : return "+proj=utm +zone=7 +south +ellps=intl +units=m"; case 2979 : return "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m"; case 2980 : return "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m"; case 2981 : return "+proj=utm +zone=58 +south +ellps=intl +units=m"; case 2982 : return "+proj=utm +zone=58 +south +ellps=intl +units=m"; case 2983 : return "+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m"; case 2984 : return "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m"; case 2987 : return "+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m"; case 2988 : return "+proj=utm +zone=1 +south +ellps=intl +units=m"; case 2989 : return "+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 2990 : return "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +units=m"; case 2991 : return "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 2992 : return "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048"; case 2993 : return "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m"; case 2994 : return "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 2995 : return "+proj=utm +zone=58 +south +ellps=intl +units=m"; case 2996 : return "+proj=utm +zone=58 +south +ellps=intl +units=m"; case 2997 : return "+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m"; case 2998 : return "+proj=utm +zone=58 +south +ellps=intl +units=m"; case 2999 : return "+proj=utm +zone=38 +south +ellps=intl +units=m"; case 3000 : return "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m"; case 3001 : return "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m"; case 3002 : return "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m"; case 3003 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m"; case 3004 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m"; case 3005 : return "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3006 : return "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3007 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3008 : return "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3009 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3010 : return "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3011 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3012 : return "+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3013 : return "+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3014 : return "+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3015 : return "+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3016 : return "+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3017 : return "+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3018 : return "+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3019 : return "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3020 : return "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3021 : return "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3022 : return "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3023 : return "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3024 : return "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3025 : return "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3026 : return "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3027 : return "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3028 : return "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3029 : return "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3030 : return "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 3031 : return "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3032 : return "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m"; case 3033 : return "+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m"; case 3034 : return "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m"; case 3035 : return "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m"; case 3036 : return "+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m"; case 3037 : return "+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m"; case 3038 : return "+proj=utm +zone=26 +ellps=GRS80 +units=m"; case 3039 : return "+proj=utm +zone=27 +ellps=GRS80 +units=m"; case 3040 : return "+proj=utm +zone=28 +ellps=GRS80 +units=m"; case 3041 : return "+proj=utm +zone=29 +ellps=GRS80 +units=m"; case 3042 : return "+proj=utm +zone=30 +ellps=GRS80 +units=m"; case 3043 : return "+proj=utm +zone=31 +ellps=GRS80 +units=m"; case 3044 : return "+proj=utm +zone=32 +ellps=GRS80 +units=m"; case 3045 : return "+proj=utm +zone=33 +ellps=GRS80 +units=m"; case 3046 : return "+proj=utm +zone=34 +ellps=GRS80 +units=m"; case 3047 : return "+proj=utm +zone=35 +ellps=GRS80 +units=m"; case 3048 : return "+proj=utm +zone=36 +ellps=GRS80 +units=m"; case 3049 : return "+proj=utm +zone=37 +ellps=GRS80 +units=m"; case 3050 : return "+proj=utm +zone=38 +ellps=GRS80 +units=m"; case 3051 : return "+proj=utm +zone=39 +ellps=GRS80 +units=m"; case 3054 : return "+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m"; case 3055 : return "+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m"; case 3056 : return "+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m"; case 3057 : return "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3058 : return "+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +units=m"; case 3059 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3060 : return "+proj=utm +zone=58 +south +ellps=intl +units=m"; case 3061 : return "+proj=utm +zone=28 +ellps=intl +units=m"; case 3062 : return "+proj=utm +zone=26 +ellps=intl +units=m"; case 3063 : return "+proj=utm +zone=26 +ellps=intl +units=m"; case 3064 : return "+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3065 : return "+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3066 : return "+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +units=m"; case 3067 : return "+proj=utm +zone=35 +ellps=GRS80 +units=m"; case 3068 : return "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m"; case 3069 : return "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +ellps=clrk66 +datum=NAD27 +units=m"; case 3070 : return "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3071 : return "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m"; case 3072 : return "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3073 : return "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3074 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3075 : return "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m"; case 3076 : return "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3077 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m"; case 3078 : return "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m"; case 3079 : return "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +units=m"; case 3080 : return "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048"; case 3081 : return "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3082 : return "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3083 : return "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3084 : return "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m"; case 3085 : return "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m"; case 3086 : return "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3087 : return "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m"; case 3088 : return "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3089 : return "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3090 : return "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m"; case 3091 : return "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3092 : return "+proj=utm +zone=51 +ellps=bessel +units=m"; case 3093 : return "+proj=utm +zone=52 +ellps=bessel +units=m"; case 3094 : return "+proj=utm +zone=53 +ellps=bessel +units=m"; case 3095 : return "+proj=utm +zone=54 +ellps=bessel +units=m"; case 3096 : return "+proj=utm +zone=55 +ellps=bessel +units=m"; case 3097 : return "+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3098 : return "+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3099 : return "+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3100 : return "+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3101 : return "+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3102 : return "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192"; case 3103 : return "+proj=utm +zone=28 +ellps=clrk80 +units=m"; case 3104 : return "+proj=utm +zone=29 +ellps=clrk80 +units=m"; case 3105 : return "+proj=utm +zone=30 +ellps=clrk80 +units=m"; case 3106 : return "+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m"; case 3107 : return "+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3108 : return "+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +units=m"; case 3109 : return "+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m"; case 3110 : return "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +units=m"; case 3111 : return "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3112 : return "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3113 : return "+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3114 : return "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3115 : return "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3116 : return "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3117 : return "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3118 : return "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3119 : return "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m"; case 3120 : return "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3121 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"; case 3122 : return "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"; case 3123 : return "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"; case 3124 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"; case 3125 : return "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m"; case 3126 : return "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3127 : return "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3128 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3129 : return "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3130 : return "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3131 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3132 : return "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3133 : return "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3134 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3135 : return "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3136 : return "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3137 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3138 : return "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3140 : return "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168"; case 3141 : return "+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m"; case 3142 : return "+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m"; case 3143 : return "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m"; case 3146 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"; case 3147 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 3148 : return "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m"; case 3149 : return "+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +units=m"; case 3150 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"; case 3151 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 3152 : return "+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3153 : return "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m"; case 3154 : return "+proj=utm +zone=7 +ellps=GRS80 +units=m"; case 3155 : return "+proj=utm +zone=8 +ellps=GRS80 +units=m"; case 3156 : return "+proj=utm +zone=9 +ellps=GRS80 +units=m"; case 3157 : return "+proj=utm +zone=10 +ellps=GRS80 +units=m"; case 3158 : return "+proj=utm +zone=14 +ellps=GRS80 +units=m"; case 3159 : return "+proj=utm +zone=15 +ellps=GRS80 +units=m"; case 3160 : return "+proj=utm +zone=16 +ellps=GRS80 +units=m"; case 3161 : return "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3162 : return "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +units=m"; case 3163 : return "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3164 : return "+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m"; case 3165 : return "+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +units=m"; case 3166 : return "+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +units=m"; case 3167 : return "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756"; case 3168 : return "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +a=6377295.664 +b=6356094.667915204 +units=m"; case 3169 : return "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3170 : return "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3171 : return "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3172 : return "+proj=utm +zone=59 +south +ellps=intl +units=m"; case 3174 : return "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3175 : return "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3176 : return "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m"; case 3177 : return "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3178 : return "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3179 : return "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3180 : return "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3181 : return "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3182 : return "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3183 : return "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3184 : return "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3185 : return "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3186 : return "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3187 : return "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3188 : return "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3189 : return "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3190 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3191 : return "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3192 : return "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3193 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3194 : return "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3195 : return "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3196 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3197 : return "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3198 : return "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3199 : return "+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3200 : return "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m"; case 3201 : return "+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3202 : return "+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3203 : return "+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m"; case 3204 : return "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3205 : return "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3206 : return "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3207 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3208 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3209 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3210 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3211 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3212 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3213 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3214 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3215 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3216 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3217 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3218 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3219 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3220 : return "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3221 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3222 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3223 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3224 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3225 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3226 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3227 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3228 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3229 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3230 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3231 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3232 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3233 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3234 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3235 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3236 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3237 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3238 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3239 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3240 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3241 : return "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3242 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3243 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3244 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3245 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3246 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3247 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3248 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3249 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3250 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3251 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3252 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3253 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3254 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3255 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3256 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3257 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3258 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3259 : return "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3260 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3261 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3262 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3263 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3264 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3265 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3266 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3267 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3268 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3269 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3270 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3271 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3272 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3273 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3274 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3275 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3276 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3277 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3278 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3279 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3280 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3281 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3282 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3283 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3284 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3285 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3286 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3287 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3288 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3289 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3290 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3291 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3292 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3293 : return "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3294 : return "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3296 : return "+proj=utm +zone=5 +south +ellps=GRS80 +units=m"; case 3297 : return "+proj=utm +zone=6 +south +ellps=GRS80 +units=m"; case 3298 : return "+proj=utm +zone=7 +south +ellps=GRS80 +units=m"; case 3299 : return "+proj=utm +zone=8 +south +ellps=GRS80 +units=m"; case 3300 : return "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m"; case 3301 : return "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3302 : return "+proj=utm +zone=7 +south +ellps=intl +units=m"; case 3303 : return "+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m"; case 3304 : return "+proj=utm +zone=6 +south +ellps=intl +units=m"; case 3305 : return "+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m"; case 3306 : return "+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m"; case 3307 : return "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m"; case 3308 : return "+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3309 : return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m"; case 3310 : return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3311 : return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m"; case 3312 : return "+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m"; case 3313 : return "+proj=utm +zone=21 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m"; case 3314 : return "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +units=m"; case 3315 : return "+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +units=m"; case 3316 : return "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3317 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3318 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3319 : return "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3320 : return "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3321 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3322 : return "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3323 : return "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3324 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3325 : return "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3326 : return "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3327 : return "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 3328 : return "+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3329 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3330 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3331 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3332 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3333 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3334 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3335 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; case 3336 : return "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m"; case 3337 : return "+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m"; case 3338 : return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3339 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"; case 3340 : return "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"; case 3341 : return "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"; case 3342 : return "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m"; case 3343 : return "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3344 : return "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3345 : return "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3346 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3347 : return "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3348 : return "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +units=m"; case 3349 : return "+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3350 : return "+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +units=m"; case 3351 : return "+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +units=m"; case 3352 : return "+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +units=m"; case 3353 : return "+proj=utm +zone=32 +south +ellps=intl +units=m"; case 3354 : return "+proj=utm +zone=32 +south +ellps=intl +units=m"; case 3355 : return "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m"; case 3356 : return "+proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m"; case 3357 : return "+proj=utm +zone=17 +ellps=clrk66 +units=m"; case 3358 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m"; case 3359 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 3360 : return "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=m"; case 3361 : return "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +to_meter=0.3048"; case 3362 : return "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 3363 : return "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3364 : return "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m"; case 3365 : return "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3366 : return "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m"; case 3367 : return "+proj=utm +zone=28 +ellps=clrk80 +units=m"; case 3368 : return "+proj=utm +zone=29 +ellps=clrk80 +units=m"; case 3369 : return "+proj=utm +zone=30 +ellps=clrk80 +units=m"; case 3370 : return "+proj=utm +zone=59 +ellps=clrk66 +datum=NAD27 +units=m"; case 3371 : return "+proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m"; case 3372 : return "+proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m"; case 3373 : return "+proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m"; case 3374 : return "+proj=utm +zone=29 +ellps=intl +units=m"; case 3375 : return "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +ellps=GRS80 +units=m"; case 3376 : return "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"; case 3377 : return "+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m"; case 3378 : return "+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m"; case 3379 : return "+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m"; case 3380 : return "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m"; case 3381 : return "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m"; case 3382 : return "+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m"; case 3383 : return "+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"; case 3384 : return "+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m"; case 3385 : return "+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m"; case 3386 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"; case 3387 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m"; case 3388 : return "+proj=merc +lon_0=51 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m"; case 3389 : return "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m"; case 3390 : return "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m"; case 3391 : return "+proj=utm +zone=37 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m"; case 3392 : return "+proj=utm +zone=38 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m"; case 3393 : return "+proj=utm +zone=39 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m"; case 3394 : return "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m"; case 3395 : return "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3396 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m"; case 3397 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m"; case 3398 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m"; case 3399 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m"; case 3400 : return "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3401 : return "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3402 : return "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3403 : return "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"; case 3404 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3405 : return "+proj=utm +zone=48 +ellps=WGS84 +units=m"; case 3406 : return "+proj=utm +zone=49 +ellps=WGS84 +units=m"; case 3407 : return "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654"; case 3408 : return "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m"; case 3409 : return "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m"; case 3411 : return "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m"; case 3412 : return "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m"; case 3413 : return "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3414 : return "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m"; case 3415 : return "+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 3416 : return "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m"; case 3417 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3418 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3419 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3420 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3421 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3422 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3423 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3424 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3425 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3426 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3427 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3428 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3429 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3430 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3431 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3432 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3433 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3434 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3435 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3436 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3437 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3438 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3439 : return "+proj=utm +zone=39 +ellps=clrk80 +units=m"; case 3440 : return "+proj=utm +zone=40 +ellps=clrk80 +units=m"; case 3441 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3442 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3443 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3444 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3445 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3446 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3447 : return "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +units=m"; case 3448 : return "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3449 : return "+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3450 : return "+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3451 : return "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3452 : return "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3453 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3454 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3455 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3456 : return "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3457 : return "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3458 : return "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3459 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3460 : return "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m"; case 3461 : return "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m"; case 3462 : return "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m"; case 3463 : return "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3464 : return "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 3465 : return "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3466 : return "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3467 : return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3468 : return "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3469 : return "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3470 : return "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3471 : return "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3472 : return "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3473 : return "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3474 : return "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3475 : return "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3476 : return "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3477 : return "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3478 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3479 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3480 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3481 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3482 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3483 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3484 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3485 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3486 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3487 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3488 : return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3489 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3490 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3491 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3492 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3493 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3494 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3495 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3496 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3497 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3498 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3499 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3500 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3501 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3502 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3503 : return "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3504 : return "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3505 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3506 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3507 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3508 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3509 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3510 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3511 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3512 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3513 : return "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3514 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3515 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3516 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3517 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3518 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3519 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3520 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3521 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3522 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3523 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3524 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3525 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3526 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3527 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3528 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3529 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3530 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3531 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3532 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3533 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3534 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3535 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3536 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3537 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3538 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3539 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3540 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3541 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3542 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3543 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3544 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3545 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3546 : return "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3547 : return "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3548 : return "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3549 : return "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3550 : return "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3551 : return "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3552 : return "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3553 : return "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3554 : return "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3555 : return "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3556 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3557 : return "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3558 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3559 : return "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3560 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3561 : return "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"; case 3562 : return "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"; case 3563 : return "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"; case 3564 : return "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"; case 3565 : return "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192"; case 3566 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3567 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3568 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3569 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3570 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3571 : return "+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3572 : return "+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3573 : return "+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3574 : return "+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3575 : return "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3576 : return "+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3577 : return "+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3578 : return "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 3579 : return "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m"; case 3580 : return "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 3581 : return "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"; case 3582 : return "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3583 : return "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3584 : return "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3585 : return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3586 : return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3587 : return "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3588 : return "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3589 : return "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3590 : return "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3591 : return "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3592 : return "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3593 : return "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3594 : return "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3595 : return "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3596 : return "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3597 : return "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3598 : return "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3599 : return "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3600 : return "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3601 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3602 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3603 : return "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3604 : return "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3605 : return "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3606 : return "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3607 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3608 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3609 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3610 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3611 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3612 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3613 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3614 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3615 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3616 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3617 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3618 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3619 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3620 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3621 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3622 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3623 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3624 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3625 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3626 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3627 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3628 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3629 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3630 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3631 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3632 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3633 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3634 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3635 : return "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3636 : return "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3637 : return "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3638 : return "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3639 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3640 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3641 : return "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3642 : return "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3643 : return "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3644 : return "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3645 : return "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3646 : return "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3647 : return "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3648 : return "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3649 : return "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3650 : return "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3651 : return "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3652 : return "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3653 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3654 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3655 : return "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3656 : return "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3657 : return "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3658 : return "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3659 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3660 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3661 : return "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3662 : return "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3663 : return "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3664 : return "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3665 : return "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3666 : return "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3667 : return "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3668 : return "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3669 : return "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3670 : return "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3671 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3672 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3673 : return "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3674 : return "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3675 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3676 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3677 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3678 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3679 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3680 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3681 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3682 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048"; case 3683 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3684 : return "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3685 : return "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3686 : return "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3687 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3688 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3689 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3690 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3691 : return "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3692 : return "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3693 : return "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3694 : return "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3695 : return "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3696 : return "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3697 : return "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3698 : return "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3699 : return "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3700 : return "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3701 : return "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3702 : return "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3703 : return "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3704 : return "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3705 : return "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3706 : return "+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3707 : return "+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3708 : return "+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3709 : return "+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3710 : return "+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3711 : return "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3712 : return "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3713 : return "+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3714 : return "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3715 : return "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3716 : return "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3717 : return "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3718 : return "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3719 : return "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3720 : return "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3721 : return "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3722 : return "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3723 : return "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3724 : return "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3725 : return "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3726 : return "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 3727 : return "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +units=m"; case 3728 : return "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3729 : return "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3730 : return "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3731 : return "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3732 : return "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3733 : return "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192"; case 3734 : return "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3735 : return "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3736 : return "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3737 : return "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3738 : return "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3739 : return "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3740 : return "+proj=utm +zone=10 +ellps=GRS80 +units=m"; case 3741 : return "+proj=utm +zone=11 +ellps=GRS80 +units=m"; case 3742 : return "+proj=utm +zone=12 +ellps=GRS80 +units=m"; case 3743 : return "+proj=utm +zone=13 +ellps=GRS80 +units=m"; case 3744 : return "+proj=utm +zone=14 +ellps=GRS80 +units=m"; case 3745 : return "+proj=utm +zone=15 +ellps=GRS80 +units=m"; case 3746 : return "+proj=utm +zone=16 +ellps=GRS80 +units=m"; case 3747 : return "+proj=utm +zone=17 +ellps=GRS80 +units=m"; case 3748 : return "+proj=utm +zone=18 +ellps=GRS80 +units=m"; case 3749 : return "+proj=utm +zone=19 +ellps=GRS80 +units=m"; case 3750 : return "+proj=utm +zone=4 +ellps=GRS80 +units=m"; case 3751 : return "+proj=utm +zone=5 +ellps=GRS80 +units=m"; case 3752 : return "+proj=merc +lon_0=100 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3753 : return "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3754 : return "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3755 : return "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3756 : return "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3757 : return "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3758 : return "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3759 : return "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 3760 : return "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192"; case 3761 : return "+proj=utm +zone=22 +ellps=GRS80 +units=m"; case 3762 : return "+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 3920 : return "+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m"; case 3991 : return "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192"; case 3992 : return "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192"; case 4001 : return "+proj=longlat +ellps=airy"; case 4002 : return "+proj=longlat +a=6377340.189 +b=6356034.447938534"; case 4003 : return "+proj=longlat +ellps=aust_SA"; case 4004 : return "+proj=longlat +ellps=bessel"; case 4005 : return "+proj=longlat +a=6377492.018 +b=6356173.508712696"; case 4006 : return "+proj=longlat +ellps=bess_nam"; case 4007 : return "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"; case 4008 : return "+proj=longlat +ellps=clrk66"; case 4009 : return "+proj=longlat +a=6378450.047548896 +b=6356826.621488444"; case 4010 : return "+proj=longlat +a=6378300.789 +b=6356566.435"; case 4011 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4012 : return "+proj=longlat +ellps=clrk80"; case 4013 : return "+proj=longlat +a=6378249.145 +b=6356514.966398753"; case 4014 : return "+proj=longlat +a=6378249.2 +b=6356514.996941779"; case 4015 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024"; case 4016 : return "+proj=longlat +ellps=evrstSS"; case 4018 : return "+proj=longlat +a=6377304.063 +b=6356103.038993155"; case 4019 : return "+proj=longlat +ellps=GRS80"; case 4020 : return "+proj=longlat +ellps=helmert"; case 4021 : return "+proj=longlat +a=6378160 +b=6356774.50408554"; case 4022 : return "+proj=longlat +ellps=intl"; case 4024 : return "+proj=longlat +ellps=krass"; case 4025 : return "+proj=longlat +ellps=WGS66"; case 4027 : return "+proj=longlat +a=6376523 +b=6355862.933255573"; case 4028 : return "+proj=longlat +a=6378298.3 +b=6356657.142669561"; case 4029 : return "+proj=longlat +a=6378300 +b=6356751.689189189"; case 4030 : return "+proj=longlat +ellps=WGS84"; case 4031 : return "+proj=longlat +ellps=WGS84"; case 4032 : return "+proj=longlat +a=6378136.2 +b=6356751.516927429"; case 4033 : return "+proj=longlat +a=6378136.3 +b=6356751.616592146"; case 4034 : return "+proj=longlat +ellps=clrk80"; case 4035 : return "+proj=longlat +a=6371000 +b=6371000"; case 4036 : return "+proj=longlat +ellps=GRS67"; case 4041 : return "+proj=longlat +a=6378135 +b=6356750.304921594"; case 4042 : return "+proj=longlat +a=6377299.36559538 +b=6356098.357204818"; case 4043 : return "+proj=longlat +ellps=WGS72"; case 4044 : return "+proj=longlat +a=6377301.243 +b=6356100.230165384"; case 4045 : return "+proj=longlat +a=6377299.151 +b=6356098.145120132"; case 4047 : return "+proj=longlat +a=6371007 +b=6371007"; case 4052 : return "+proj=longlat +a=6370997 +b=6370997"; case 4053 : return "+proj=longlat +a=6371228 +b=6371228"; case 4054 : return "+proj=longlat +a=6378273 +b=6356889.449"; case 4120 : return "+proj=longlat +ellps=bessel"; case 4121 : return "+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0"; case 4122 : return "+proj=longlat +a=6378135 +b=6356750.304921594"; case 4123 : return "+proj=longlat +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964"; case 4124 : return "+proj=longlat +ellps=bessel"; case 4125 : return "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0"; case 4126 : return "+proj=longlat +ellps=GRS80"; case 4127 : return "+proj=longlat +ellps=clrk66"; case 4128 : return "+proj=longlat +ellps=clrk66"; case 4129 : return "+proj=longlat +ellps=clrk66"; case 4130 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0"; case 4131 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024"; case 4132 : return "+proj=longlat +ellps=clrk80"; case 4133 : return "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014"; case 4134 : return "+proj=longlat +ellps=clrk80"; case 4135 : return "+proj=longlat +ellps=clrk66"; case 4136 : return "+proj=longlat +ellps=clrk66"; case 4137 : return "+proj=longlat +ellps=clrk66"; case 4138 : return "+proj=longlat +ellps=clrk66"; case 4139 : return "+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0"; case 4140 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4141 : return "+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0"; case 4142 : return "+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0"; case 4143 : return "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0"; case 4144 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024"; case 4145 : return "+proj=longlat +a=6377301.243 +b=6356100.230165384"; case 4146 : return "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0"; case 4147 : return "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0"; case 4148 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4149 : return "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0"; case 4150 : return "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0"; case 4151 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4152 : return "+proj=longlat +ellps=GRS80"; case 4153 : return "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0"; case 4154 : return "+proj=longlat +ellps=intl"; case 4155 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0"; case 4156 : return "+proj=longlat +ellps=bessel"; case 4157 : return "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"; case 4158 : return "+proj=longlat +ellps=intl"; case 4159 : return "+proj=longlat +ellps=intl"; case 4160 : return "+proj=longlat +ellps=intl"; case 4161 : return "+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0"; case 4162 : return "+proj=longlat +ellps=bessel"; case 4163 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4164 : return "+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0"; case 4165 : return "+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0"; case 4166 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4167 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4168 : return "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0"; case 4169 : return "+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0"; case 4170 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4171 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4172 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4173 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4174 : return "+proj=longlat +a=6378300 +b=6356751.689189189"; case 4175 : return "+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0"; case 4176 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4178 : return "+proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1"; case 4179 : return "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"; case 4180 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4181 : return "+proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43"; case 4182 : return "+proj=longlat +ellps=intl"; case 4183 : return "+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0"; case 4184 : return "+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0"; case 4185 : return "+proj=longlat +ellps=intl"; case 4188 : return "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"; case 4189 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4190 : return "+proj=longlat +ellps=GRS80"; case 4191 : return "+proj=longlat +ellps=krass"; case 4192 : return "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0"; case 4193 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0"; case 4194 : return "+proj=longlat +ellps=intl"; case 4195 : return "+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6"; case 4196 : return "+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6"; case 4197 : return "+proj=longlat +ellps=clrk80"; case 4198 : return "+proj=longlat +ellps=clrk80"; case 4199 : return "+proj=longlat +ellps=intl"; case 4200 : return "+proj=longlat +ellps=krass"; case 4201 : return "+proj=longlat +ellps=clrk80"; case 4202 : return "+proj=longlat +ellps=aust_SA"; case 4203 : return "+proj=longlat +ellps=aust_SA"; case 4204 : return "+proj=longlat +ellps=intl"; case 4205 : return "+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0"; case 4206 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4207 : return "+proj=longlat +ellps=intl"; case 4208 : return "+proj=longlat +ellps=intl"; case 4209 : return "+proj=longlat +a=6378249.145 +b=6356514.966398753"; case 4210 : return "+proj=longlat +ellps=clrk80"; case 4211 : return "+proj=longlat +ellps=bessel"; case 4212 : return "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0"; case 4213 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0"; case 4214 : return "+proj=longlat +ellps=krass"; case 4215 : return "+proj=longlat +ellps=intl"; case 4216 : return "+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0"; case 4218 : return "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0"; case 4219 : return "+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0"; case 4220 : return "+proj=longlat +ellps=clrk80"; case 4221 : return "+proj=longlat +ellps=intl"; case 4222 : return "+proj=longlat +a=6378249.145 +b=6356514.966398753"; case 4223 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4224 : return "+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0"; case 4225 : return "+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0"; case 4226 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4227 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4228 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4229 : return "+proj=longlat +ellps=helmert"; case 4230 : return "+proj=longlat +ellps=intl"; case 4231 : return "+proj=longlat +ellps=intl"; case 4232 : return "+proj=longlat +ellps=clrk80"; case 4233 : return "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0"; case 4234 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4235 : return "+proj=longlat +ellps=intl"; case 4236 : return "+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0"; case 4237 : return "+proj=longlat +ellps=GRS67"; case 4238 : return "+proj=longlat +a=6378160 +b=6356774.50408554"; case 4239 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0"; case 4240 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024"; case 4241 : return "+proj=longlat +ellps=clrk80"; case 4242 : return "+proj=longlat +ellps=clrk66"; case 4243 : return "+proj=longlat +a=6377299.36559538 +b=6356098.357204818"; case 4244 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0"; case 4245 : return "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0"; case 4246 : return "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0"; case 4247 : return "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0"; case 4248 : return "+proj=longlat +ellps=intl"; case 4249 : return "+proj=longlat +ellps=intl"; case 4250 : return "+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0"; case 4251 : return "+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0"; case 4252 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4253 : return "+proj=longlat +ellps=clrk66"; case 4254 : return "+proj=longlat +ellps=intl"; case 4255 : return "+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0"; case 4256 : return "+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0"; case 4257 : return "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0"; case 4258 : return "+proj=longlat +ellps=GRS80"; case 4259 : return "+proj=longlat +ellps=intl"; case 4260 : return "+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0"; case 4261 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0"; case 4262 : return "+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0"; case 4263 : return "+proj=longlat +ellps=clrk80"; case 4264 : return "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0"; case 4265 : return "+proj=longlat +ellps=intl"; case 4266 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4267 : return "+proj=longlat +ellps=clrk66 +datum=NAD27"; case 4268 : return "+proj=longlat +a=6378450.047548896 +b=6356826.621488444"; case 4269 : return "+proj=longlat +ellps=GRS80 +datum=NAD83"; case 4270 : return "+proj=longlat +ellps=clrk80"; case 4271 : return "+proj=longlat +ellps=intl"; case 4272 : return "+proj=longlat +ellps=intl +datum=nzgd49"; case 4273 : return "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21"; case 4274 : return "+proj=longlat +ellps=intl"; case 4275 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0"; case 4276 : return "+proj=longlat +ellps=WGS66"; case 4277 : return "+proj=longlat +ellps=airy +datum=OSGB36"; case 4278 : return "+proj=longlat +ellps=airy"; case 4279 : return "+proj=longlat +ellps=airy"; case 4280 : return "+proj=longlat +ellps=bessel"; case 4281 : return "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1"; case 4282 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4283 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4284 : return "+proj=longlat +ellps=krass"; case 4285 : return "+proj=longlat +ellps=intl"; case 4286 : return "+proj=longlat +ellps=helmert"; case 4287 : return "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0"; case 4288 : return "+proj=longlat +ellps=intl"; case 4289 : return "+proj=longlat +ellps=bessel"; case 4291 : return "+proj=longlat +ellps=GRS67"; case 4292 : return "+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0"; case 4293 : return "+proj=longlat +ellps=bess_nam"; case 4294 : return "+proj=longlat +ellps=bessel"; case 4295 : return "+proj=longlat +ellps=bessel"; case 4296 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4297 : return "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0"; case 4298 : return "+proj=longlat +ellps=evrstSS"; case 4299 : return "+proj=longlat +a=6377340.189 +b=6356034.447938534"; case 4300 : return "+proj=longlat +a=6377340.189 +b=6356034.447938534"; case 4301 : return "+proj=longlat +ellps=bessel"; case 4302 : return "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"; case 4303 : return "+proj=longlat +ellps=helmert"; case 4304 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0"; case 4306 : return "+proj=longlat +ellps=bessel"; case 4307 : return "+proj=longlat +ellps=clrk80"; case 4308 : return "+proj=longlat +ellps=bessel"; case 4309 : return "+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0"; case 4310 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4311 : return "+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0"; case 4312 : return "+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232"; case 4313 : return "+proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1"; case 4314 : return "+proj=longlat +ellps=bessel +datum=potsdam"; case 4315 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0"; case 4316 : return "+proj=longlat +ellps=intl"; case 4317 : return "+proj=longlat +ellps=krass"; case 4318 : return "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0"; case 4319 : return "+proj=longlat +ellps=GRS80"; case 4322 : return "+proj=longlat +ellps=WGS72"; case 4324 : return "+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38"; case 4326 : return "+proj=longlat +ellps=WGS84 +datum=WGS84"; case 4600 : return "+proj=longlat +ellps=clrk80"; case 4601 : return "+proj=longlat +ellps=clrk80"; case 4602 : return "+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0"; case 4603 : return "+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0"; case 4604 : return "+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0"; case 4605 : return "+proj=longlat +ellps=clrk80"; case 4606 : return "+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0"; case 4607 : return "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0"; case 4608 : return "+proj=longlat +ellps=clrk66"; case 4609 : return "+proj=longlat +ellps=clrk66"; case 4610 : return "+proj=longlat +a=6378140 +b=6356755.288157528"; case 4611 : return "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425"; case 4612 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4613 : return "+proj=longlat +ellps=bessel"; case 4614 : return "+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706"; case 4615 : return "+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0"; case 4616 : return "+proj=longlat +ellps=intl"; case 4617 : return "+proj=longlat +ellps=GRS80"; case 4618 : return "+proj=longlat +ellps=aust_SA"; case 4619 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4620 : return "+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0"; case 4621 : return "+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0"; case 4622 : return "+proj=longlat +ellps=intl"; case 4623 : return "+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0"; case 4624 : return "+proj=longlat +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0"; case 4625 : return "+proj=longlat +ellps=intl"; case 4626 : return "+proj=longlat +ellps=intl"; case 4627 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4628 : return "+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0"; case 4629 : return "+proj=longlat +ellps=intl"; case 4630 : return "+proj=longlat +ellps=intl"; case 4631 : return "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0"; case 4632 : return "+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0"; case 4633 : return "+proj=longlat +ellps=intl"; case 4634 : return "+proj=longlat +ellps=intl"; case 4635 : return "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798"; case 4636 : return "+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0"; case 4637 : return "+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0"; case 4638 : return "+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0"; case 4639 : return "+proj=longlat +ellps=intl"; case 4640 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4641 : return "+proj=longlat +ellps=intl"; case 4642 : return "+proj=longlat +ellps=intl"; case 4643 : return "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7"; case 4644 : return "+proj=longlat +ellps=intl"; case 4645 : return "+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0"; case 4646 : return "+proj=longlat +ellps=intl"; case 4657 : return "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0"; case 4658 : return "+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0"; case 4659 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4660 : return "+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805"; case 4661 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4662 : return "+proj=longlat +ellps=intl"; case 4663 : return "+proj=longlat +ellps=intl"; case 4664 : return "+proj=longlat +ellps=intl"; case 4665 : return "+proj=longlat +ellps=intl"; case 4666 : return "+proj=longlat +ellps=bessel"; case 4667 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4668 : return "+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0"; case 4669 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4670 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4671 : return "+proj=longlat +a=6378249.2 +b=6356515"; case 4672 : return "+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0"; case 4673 : return "+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263"; case 4674 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4675 : return "+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0"; case 4676 : return "+proj=longlat +ellps=krass"; case 4677 : return "+proj=longlat +ellps=krass"; case 4678 : return "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0"; case 4679 : return "+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0"; case 4680 : return "+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0"; case 4681 : return "+proj=longlat +ellps=clrk80"; case 4682 : return "+proj=longlat +a=6377276.345 +b=6356075.41314024"; case 4683 : return "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"; case 4684 : return "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0"; case 4685 : return "+proj=longlat +ellps=intl"; case 4686 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4687 : return "+proj=longlat +ellps=GRS80"; case 4688 : return "+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074"; case 4689 : return "+proj=longlat +ellps=intl"; case 4690 : return "+proj=longlat +ellps=intl"; case 4691 : return "+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773"; case 4692 : return "+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0"; case 4693 : return "+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0"; case 4694 : return "+proj=longlat +ellps=GRS80"; case 4695 : return "+proj=longlat +ellps=clrk66"; case 4696 : return "+proj=longlat +ellps=clrk80"; case 4697 : return "+proj=longlat +ellps=clrk80"; case 4698 : return "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0"; case 4699 : return "+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0"; case 4700 : return "+proj=longlat +ellps=clrk80"; case 4701 : return "+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0"; case 4702 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4703 : return "+proj=longlat +ellps=clrk80"; case 4704 : return "+proj=longlat +ellps=intl"; case 4705 : return "+proj=longlat +ellps=intl"; case 4706 : return "+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0"; case 4707 : return "+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0"; case 4708 : return "+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0"; case 4709 : return "+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0"; case 4710 : return "+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0"; case 4711 : return "+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0"; case 4712 : return "+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0"; case 4713 : return "+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0"; case 4714 : return "+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0"; case 4715 : return "+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0"; case 4716 : return "+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0"; case 4717 : return "+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0"; case 4718 : return "+proj=longlat +ellps=intl"; case 4719 : return "+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0"; case 4720 : return "+proj=longlat +ellps=WGS72"; case 4721 : return "+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0"; case 4722 : return "+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0"; case 4723 : return "+proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0"; case 4724 : return "+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0"; case 4725 : return "+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0"; case 4726 : return "+proj=longlat +ellps=clrk66"; case 4727 : return "+proj=longlat +ellps=intl"; case 4728 : return "+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0"; case 4729 : return "+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0"; case 4730 : return "+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0"; case 4731 : return "+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0"; case 4732 : return "+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0"; case 4733 : return "+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0"; case 4734 : return "+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0"; case 4735 : return "+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0"; case 4736 : return "+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0"; case 4737 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4738 : return "+proj=longlat +a=6378293.645208759 +b=6356617.987679838"; case 4739 : return "+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0"; case 4740 : return "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0"; case 4741 : return "+proj=longlat +ellps=intl"; case 4742 : return "+proj=longlat +ellps=GRS80"; case 4743 : return "+proj=longlat +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0"; case 4744 : return "+proj=longlat +ellps=clrk80"; case 4745 : return "+proj=longlat +ellps=bessel"; case 4746 : return "+proj=longlat +ellps=bessel"; case 4747 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4748 : return "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0"; case 4749 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4750 : return "+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0"; case 4751 : return "+proj=longlat +a=6377295.664 +b=6356094.667915204"; case 4752 : return "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0"; case 4753 : return "+proj=longlat +ellps=intl"; case 4754 : return "+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0"; case 4755 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4756 : return "+proj=longlat +ellps=WGS84"; case 4757 : return "+proj=longlat +ellps=WGS84"; case 4758 : return "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0"; case 4759 : return "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"; case 4760 : return "+proj=longlat +ellps=WGS66"; case 4801 : return "+proj=longlat +ellps=bessel +pm=bern"; case 4802 : return "+proj=longlat +ellps=intl +pm=bogota"; case 4803 : return "+proj=longlat +ellps=intl +pm=lisbon"; case 4804 : return "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta"; case 4805 : return "+proj=longlat +ellps=bessel +pm=ferro"; case 4806 : return "+proj=longlat +ellps=intl +pm=rome"; case 4807 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris"; case 4808 : return "+proj=longlat +ellps=bessel +pm=jakarta"; case 4809 : return "+proj=longlat +ellps=intl +pm=brussels"; case 4810 : return "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris"; case 4811 : return "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris"; case 4813 : return "+proj=longlat +ellps=bessel +pm=jakarta"; case 4814 : return "+proj=longlat +ellps=bessel +pm=stockholm"; case 4815 : return "+proj=longlat +ellps=bessel +pm=athens"; case 4816 : return "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris"; case 4817 : return "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo"; case 4818 : return "+proj=longlat +ellps=bessel +pm=ferro"; case 4819 : return "+proj=longlat +ellps=clrk80 +pm=paris"; case 4820 : return "+proj=longlat +ellps=bessel +pm=jakarta"; case 4821 : return "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris"; case 4901 : return "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris"; case 4902 : return "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris"; case 4903 : return "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid"; case 4904 : return "+proj=longlat +ellps=bessel +pm=lisbon"; case 20004 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"; case 20005 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m"; case 20006 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"; case 20007 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"; case 20008 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"; case 20009 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"; case 20010 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"; case 20011 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"; case 20012 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"; case 20013 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"; case 20014 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"; case 20015 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"; case 20016 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"; case 20017 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"; case 20018 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"; case 20019 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"; case 20020 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"; case 20021 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"; case 20022 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"; case 20023 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"; case 20024 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"; case 20025 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"; case 20026 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"; case 20027 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"; case 20028 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"; case 20029 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"; case 20030 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"; case 20031 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"; case 20032 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"; case 20064 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20065 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20066 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20067 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20068 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20069 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20070 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20071 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20072 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20073 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20074 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20075 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20076 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20077 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20078 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20079 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20080 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20081 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20082 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20083 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20084 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20085 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20086 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20087 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20088 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20089 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20090 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20091 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20092 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 20135 : return "+proj=utm +zone=35 +ellps=clrk80 +units=m"; case 20136 : return "+proj=utm +zone=36 +ellps=clrk80 +units=m"; case 20137 : return "+proj=utm +zone=37 +ellps=clrk80 +units=m"; case 20138 : return "+proj=utm +zone=38 +ellps=clrk80 +units=m"; case 20248 : return "+proj=utm +zone=48 +south +ellps=aust_SA +units=m"; case 20249 : return "+proj=utm +zone=49 +south +ellps=aust_SA +units=m"; case 20250 : return "+proj=utm +zone=50 +south +ellps=aust_SA +units=m"; case 20251 : return "+proj=utm +zone=51 +south +ellps=aust_SA +units=m"; case 20252 : return "+proj=utm +zone=52 +south +ellps=aust_SA +units=m"; case 20253 : return "+proj=utm +zone=53 +south +ellps=aust_SA +units=m"; case 20254 : return "+proj=utm +zone=54 +south +ellps=aust_SA +units=m"; case 20255 : return "+proj=utm +zone=55 +south +ellps=aust_SA +units=m"; case 20256 : return "+proj=utm +zone=56 +south +ellps=aust_SA +units=m"; case 20257 : return "+proj=utm +zone=57 +south +ellps=aust_SA +units=m"; case 20258 : return "+proj=utm +zone=58 +south +ellps=aust_SA +units=m"; case 20348 : return "+proj=utm +zone=48 +south +ellps=aust_SA +units=m"; case 20349 : return "+proj=utm +zone=49 +south +ellps=aust_SA +units=m"; case 20350 : return "+proj=utm +zone=50 +south +ellps=aust_SA +units=m"; case 20351 : return "+proj=utm +zone=51 +south +ellps=aust_SA +units=m"; case 20352 : return "+proj=utm +zone=52 +south +ellps=aust_SA +units=m"; case 20353 : return "+proj=utm +zone=53 +south +ellps=aust_SA +units=m"; case 20354 : return "+proj=utm +zone=54 +south +ellps=aust_SA +units=m"; case 20355 : return "+proj=utm +zone=55 +south +ellps=aust_SA +units=m"; case 20356 : return "+proj=utm +zone=56 +south +ellps=aust_SA +units=m"; case 20357 : return "+proj=utm +zone=57 +south +ellps=aust_SA +units=m"; case 20358 : return "+proj=utm +zone=58 +south +ellps=aust_SA +units=m"; case 20436 : return "+proj=utm +zone=36 +ellps=intl +units=m"; case 20437 : return "+proj=utm +zone=37 +ellps=intl +units=m"; case 20438 : return "+proj=utm +zone=38 +ellps=intl +units=m"; case 20439 : return "+proj=utm +zone=39 +ellps=intl +units=m"; case 20440 : return "+proj=utm +zone=40 +ellps=intl +units=m"; case 20499 : return "+proj=utm +zone=39 +ellps=intl +units=m"; case 20538 : return "+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m"; case 20539 : return "+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m"; case 20790 : return "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m"; case 20791 : return "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m"; case 20822 : return "+proj=utm +zone=22 +south +ellps=intl +units=m"; case 20823 : return "+proj=utm +zone=23 +south +ellps=intl +units=m"; case 20824 : return "+proj=utm +zone=24 +south +ellps=intl +units=m"; case 20934 : return "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m"; case 20935 : return "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m"; case 20936 : return "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m"; case 21035 : return "+proj=utm +zone=35 +south +ellps=clrk80 +units=m"; case 21036 : return "+proj=utm +zone=36 +south +ellps=clrk80 +units=m"; case 21037 : return "+proj=utm +zone=37 +south +ellps=clrk80 +units=m"; case 21095 : return "+proj=utm +zone=35 +ellps=clrk80 +units=m"; case 21096 : return "+proj=utm +zone=36 +ellps=clrk80 +units=m"; case 21097 : return "+proj=utm +zone=37 +ellps=clrk80 +units=m"; case 21100 : return "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m"; case 21148 : return "+proj=utm +zone=48 +south +ellps=bessel +units=m"; case 21149 : return "+proj=utm +zone=49 +south +ellps=bessel +units=m"; case 21150 : return "+proj=utm +zone=50 +south +ellps=bessel +units=m"; case 21291 : return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m"; case 21292 : return "+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m"; case 21413 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"; case 21414 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"; case 21415 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"; case 21416 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"; case 21417 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"; case 21418 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"; case 21419 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"; case 21420 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"; case 21421 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"; case 21422 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"; case 21423 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"; case 21453 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21454 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21455 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21456 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21457 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21458 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21459 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21460 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21461 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21462 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21463 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21473 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21474 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21475 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21476 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21477 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21478 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21479 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21480 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21481 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21482 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21483 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 21500 : return "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m"; case 21780 : return "+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m"; case 21781 : return "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m"; case 21817 : return "+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21818 : return "+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21891 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21892 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21893 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21894 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21896 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21897 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21898 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 21899 : return "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m"; case 22032 : return "+proj=utm +zone=32 +south +ellps=clrk80 +units=m"; case 22033 : return "+proj=utm +zone=33 +south +ellps=clrk80 +units=m"; case 22091 : return "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 22092 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m"; case 22171 : return "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m"; case 22172 : return "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m"; case 22173 : return "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m"; case 22174 : return "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m"; case 22175 : return "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m"; case 22176 : return "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m"; case 22177 : return "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m"; case 22181 : return "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m"; case 22182 : return "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m"; case 22183 : return "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m"; case 22184 : return "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m"; case 22185 : return "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m"; case 22186 : return "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m"; case 22187 : return "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m"; case 22191 : return "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m"; case 22192 : return "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m"; case 22193 : return "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m"; case 22194 : return "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m"; case 22195 : return "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m"; case 22196 : return "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +units=m"; case 22197 : return "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +units=m"; case 22234 : return "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m"; case 22235 : return "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m"; case 22236 : return "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m"; case 22332 : return "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m"; case 22391 : return "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"; case 22392 : return "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"; case 22521 : return "+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"; case 22522 : return "+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"; case 22523 : return "+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"; case 22524 : return "+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"; case 22525 : return "+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m"; case 22700 : return "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"; case 22770 : return "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"; case 22780 : return "+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m"; case 22832 : return "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m"; case 22991 : return "+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m"; case 22992 : return "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +units=m"; case 22993 : return "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +units=m"; case 22994 : return "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m"; case 23028 : return "+proj=utm +zone=28 +ellps=intl +units=m"; case 23029 : return "+proj=utm +zone=29 +ellps=intl +units=m"; case 23030 : return "+proj=utm +zone=30 +ellps=intl +units=m"; case 23031 : return "+proj=utm +zone=31 +ellps=intl +units=m"; case 23032 : return "+proj=utm +zone=32 +ellps=intl +units=m"; case 23033 : return "+proj=utm +zone=33 +ellps=intl +units=m"; case 23034 : return "+proj=utm +zone=34 +ellps=intl +units=m"; case 23035 : return "+proj=utm +zone=35 +ellps=intl +units=m"; case 23036 : return "+proj=utm +zone=36 +ellps=intl +units=m"; case 23037 : return "+proj=utm +zone=37 +ellps=intl +units=m"; case 23038 : return "+proj=utm +zone=38 +ellps=intl +units=m"; case 23090 : return "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 23095 : return "+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m"; case 23239 : return "+proj=utm +zone=39 +ellps=clrk80 +units=m"; case 23240 : return "+proj=utm +zone=40 +ellps=clrk80 +units=m"; case 23433 : return "+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m"; case 23700 : return "+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m"; case 23830 : return "+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23831 : return "+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23832 : return "+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23833 : return "+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23834 : return "+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23835 : return "+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23836 : return "+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23837 : return "+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23838 : return "+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23839 : return "+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23840 : return "+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23841 : return "+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23842 : return "+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23843 : return "+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23844 : return "+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23845 : return "+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23846 : return "+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m"; case 23847 : return "+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m"; case 23848 : return "+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m"; case 23849 : return "+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m"; case 23850 : return "+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m"; case 23851 : return "+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m"; case 23852 : return "+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m"; case 23853 : return "+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m"; case 23866 : return "+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23867 : return "+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23868 : return "+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23869 : return "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23870 : return "+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23871 : return "+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23872 : return "+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23877 : return "+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23878 : return "+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23879 : return "+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23880 : return "+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23881 : return "+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23882 : return "+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23883 : return "+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23884 : return "+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"; case 23886 : return "+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23887 : return "+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23888 : return "+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23889 : return "+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23890 : return "+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23891 : return "+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23892 : return "+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23893 : return "+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23894 : return "+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m"; case 23946 : return "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m"; case 23947 : return "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m"; case 23948 : return "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m"; case 24047 : return "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m"; case 24048 : return "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m"; case 24100 : return "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +ellps=clrk80 +to_meter=0.3047972654"; case 24200 : return "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m"; case 24305 : return "+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +units=m"; case 24306 : return "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m"; case 24311 : return "+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m"; case 24312 : return "+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +units=m"; case 24313 : return "+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +units=m"; case 24342 : return "+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24343 : return "+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24344 : return "+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24345 : return "+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24346 : return "+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24347 : return "+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24370 : return "+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"; case 24371 : return "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"; case 24372 : return "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"; case 24373 : return "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"; case 24374 : return "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"; case 24375 : return "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +units=m"; case 24376 : return "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m"; case 24377 : return "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m"; case 24378 : return "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24379 : return "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24380 : return "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24381 : return "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24382 : return "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408"; case 24383 : return "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m"; case 24500 : return "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"; case 24547 : return "+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"; case 24548 : return "+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"; case 24571 : return "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587"; case 24600 : return "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m"; case 24718 : return "+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m"; case 24719 : return "+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m"; case 24720 : return "+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m"; case 24817 : return "+proj=utm +zone=17 +ellps=intl +units=m"; case 24818 : return "+proj=utm +zone=18 +ellps=intl +units=m"; case 24819 : return "+proj=utm +zone=19 +ellps=intl +units=m"; case 24820 : return "+proj=utm +zone=20 +ellps=intl +units=m"; case 24821 : return "+proj=utm +zone=21 +ellps=intl +units=m"; case 24877 : return "+proj=utm +zone=17 +south +ellps=intl +units=m"; case 24878 : return "+proj=utm +zone=18 +south +ellps=intl +units=m"; case 24879 : return "+proj=utm +zone=19 +south +ellps=intl +units=m"; case 24880 : return "+proj=utm +zone=20 +south +ellps=intl +units=m"; case 24881 : return "+proj=utm +zone=21 +south +ellps=intl +units=m"; case 24882 : return "+proj=utm +zone=22 +south +ellps=intl +units=m"; case 24891 : return "+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m"; case 24892 : return "+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m"; case 24893 : return "+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m"; case 25000 : return "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m"; case 25231 : return "+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m"; case 25391 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"; case 25392 : return "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"; case 25393 : return "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"; case 25394 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"; case 25395 : return "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m"; case 25700 : return "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m"; case 25828 : return "+proj=utm +zone=28 +ellps=GRS80 +units=m"; case 25829 : return "+proj=utm +zone=29 +ellps=GRS80 +units=m"; case 25830 : return "+proj=utm +zone=30 +ellps=GRS80 +units=m"; case 25831 : return "+proj=utm +zone=31 +ellps=GRS80 +units=m"; case 25832 : return "+proj=utm +zone=32 +ellps=GRS80 +units=m"; case 25833 : return "+proj=utm +zone=33 +ellps=GRS80 +units=m"; case 25834 : return "+proj=utm +zone=34 +ellps=GRS80 +units=m"; case 25835 : return "+proj=utm +zone=35 +ellps=GRS80 +units=m"; case 25836 : return "+proj=utm +zone=36 +ellps=GRS80 +units=m"; case 25837 : return "+proj=utm +zone=37 +ellps=GRS80 +units=m"; case 25838 : return "+proj=utm +zone=38 +ellps=GRS80 +units=m"; case 25884 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 25932 : return "+proj=utm +zone=32 +south +ellps=intl +units=m"; case 26191 : return "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"; case 26192 : return "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"; case 26193 : return "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"; case 26194 : return "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"; case 26195 : return "+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m"; case 26237 : return "+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m"; case 26331 : return "+proj=utm +zone=31 +ellps=clrk80 +units=m"; case 26332 : return "+proj=utm +zone=32 +ellps=clrk80 +units=m"; case 26391 : return "+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m"; case 26392 : return "+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m"; case 26393 : return "+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m"; case 26432 : return "+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m"; case 26591 : return "+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m"; case 26592 : return "+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m"; case 26632 : return "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m"; case 26692 : return "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m"; case 26701 : return "+proj=utm +zone=1 +ellps=clrk66 +datum=NAD27 +units=m"; case 26702 : return "+proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m"; case 26703 : return "+proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m"; case 26704 : return "+proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m"; case 26705 : return "+proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m"; case 26706 : return "+proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m"; case 26707 : return "+proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m"; case 26708 : return "+proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m"; case 26709 : return "+proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m"; case 26710 : return "+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m"; case 26711 : return "+proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m"; case 26712 : return "+proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m"; case 26713 : return "+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m"; case 26714 : return "+proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m"; case 26715 : return "+proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m"; case 26716 : return "+proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m"; case 26717 : return "+proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m"; case 26718 : return "+proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m"; case 26719 : return "+proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m"; case 26720 : return "+proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m"; case 26721 : return "+proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m"; case 26722 : return "+proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m"; case 26729 : return "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26730 : return "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26731 : return "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26732 : return "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26733 : return "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26734 : return "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26735 : return "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26736 : return "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26737 : return "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26738 : return "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26739 : return "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26740 : return "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26741 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26742 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26743 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26744 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26745 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26746 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26747 : return "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26748 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26749 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26750 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26751 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26752 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26753 : return "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26754 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26755 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26756 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26757 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26758 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26759 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26760 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26766 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26767 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26768 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26769 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26770 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26771 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26772 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26773 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26774 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26775 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26776 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26777 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26778 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26779 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26780 : return "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26781 : return "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26782 : return "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26783 : return "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26784 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26785 : return "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26786 : return "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26787 : return "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26791 : return "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26792 : return "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26793 : return "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26794 : return "+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26795 : return "+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26796 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26797 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26798 : return "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26799 : return "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 26801 : return "+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"; case 26802 : return "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"; case 26803 : return "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"; case 26811 : return "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"; case 26812 : return "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"; case 26813 : return "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192"; case 26901 : return "+proj=utm +zone=1 +ellps=GRS80 +datum=NAD83 +units=m"; case 26902 : return "+proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m"; case 26903 : return "+proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m"; case 26904 : return "+proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m"; case 26905 : return "+proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m"; case 26906 : return "+proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m"; case 26907 : return "+proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m"; case 26908 : return "+proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m"; case 26909 : return "+proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m"; case 26910 : return "+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m"; case 26911 : return "+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m"; case 26912 : return "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m"; case 26913 : return "+proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m"; case 26914 : return "+proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m"; case 26915 : return "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m"; case 26916 : return "+proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m"; case 26917 : return "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m"; case 26918 : return "+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m"; case 26919 : return "+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m"; case 26920 : return "+proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m"; case 26921 : return "+proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m"; case 26922 : return "+proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m"; case 26923 : return "+proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m"; case 26929 : return "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26930 : return "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26931 : return "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26932 : return "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26933 : return "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26934 : return "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26935 : return "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26936 : return "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26937 : return "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26938 : return "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26939 : return "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26940 : return "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26941 : return "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26942 : return "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26943 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26944 : return "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26945 : return "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26946 : return "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26948 : return "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26949 : return "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26950 : return "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26951 : return "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26952 : return "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26953 : return "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m"; case 26954 : return "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m"; case 26955 : return "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m"; case 26956 : return "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m"; case 26957 : return "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26958 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26959 : return "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26960 : return "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26961 : return "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26962 : return "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26963 : return "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26964 : return "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26965 : return "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26966 : return "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26967 : return "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26968 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26969 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26970 : return "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26971 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26972 : return "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26973 : return "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26974 : return "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26975 : return "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26976 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26977 : return "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26978 : return "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26979 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26980 : return "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26981 : return "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26982 : return "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26983 : return "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26984 : return "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26985 : return "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26986 : return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26987 : return "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26988 : return "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26989 : return "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26990 : return "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26991 : return "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26992 : return "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26993 : return "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m"; case 26994 : return "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26995 : return "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26996 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26997 : return "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 26998 : return "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 27037 : return "+proj=utm +zone=37 +ellps=clrk80 +units=m"; case 27038 : return "+proj=utm +zone=38 +ellps=clrk80 +units=m"; case 27039 : return "+proj=utm +zone=39 +ellps=clrk80 +units=m"; case 27040 : return "+proj=utm +zone=40 +ellps=clrk80 +units=m"; case 27120 : return "+proj=utm +zone=20 +ellps=intl +units=m"; case 27200 : return "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +datum=nzgd49 +units=m"; case 27205 : return "+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27206 : return "+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27207 : return "+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27208 : return "+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27209 : return "+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27210 : return "+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27211 : return "+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27212 : return "+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27213 : return "+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27214 : return "+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27215 : return "+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27216 : return "+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27217 : return "+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27218 : return "+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27219 : return "+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27220 : return "+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27221 : return "+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27222 : return "+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27223 : return "+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27224 : return "+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27225 : return "+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27226 : return "+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27227 : return "+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27228 : return "+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27229 : return "+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27230 : return "+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27231 : return "+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m"; case 27232 : return "+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +datum=nzgd49 +units=m"; case 27258 : return "+proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m"; case 27259 : return "+proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m"; case 27260 : return "+proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m"; case 27291 : return "+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287"; case 27292 : return "+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287"; case 27391 : return "+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27392 : return "+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27393 : return "+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27394 : return "+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27395 : return "+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27396 : return "+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27397 : return "+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27398 : return "+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m"; case 27429 : return "+proj=utm +zone=29 +ellps=intl +units=m"; case 27492 : return "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m"; case 27500 : return "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=paris +units=m"; case 27561 : return "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27562 : return "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27563 : return "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27564 : return "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27571 : return "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27572 : return "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27573 : return "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27574 : return "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27581 : return "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27582 : return "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27583 : return "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27584 : return "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27591 : return "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27592 : return "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27593 : return "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27594 : return "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m"; case 27700 : return "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m"; case 28191 : return "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m"; case 28192 : return "+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m"; case 28193 : return "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m"; case 28232 : return "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m"; case 28348 : return "+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28349 : return "+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28350 : return "+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28351 : return "+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28352 : return "+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28353 : return "+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28354 : return "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28355 : return "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28356 : return "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28357 : return "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28358 : return "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 28402 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +units=m"; case 28403 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +units=m"; case 28404 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m"; case 28405 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m"; case 28406 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m"; case 28407 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m"; case 28408 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m"; case 28409 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m"; case 28410 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m"; case 28411 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m"; case 28412 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m"; case 28413 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m"; case 28414 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m"; case 28415 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m"; case 28416 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m"; case 28417 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m"; case 28418 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m"; case 28419 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m"; case 28420 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m"; case 28421 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m"; case 28422 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m"; case 28423 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m"; case 28424 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m"; case 28425 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m"; case 28426 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m"; case 28427 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m"; case 28428 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m"; case 28429 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m"; case 28430 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m"; case 28431 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m"; case 28432 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m"; case 28462 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28463 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28464 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28465 : return "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28466 : return "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28467 : return "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28468 : return "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28469 : return "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28470 : return "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28471 : return "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28472 : return "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28473 : return "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28474 : return "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28475 : return "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28476 : return "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28477 : return "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28478 : return "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28479 : return "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28480 : return "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28481 : return "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28482 : return "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28483 : return "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28484 : return "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28485 : return "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28486 : return "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28487 : return "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28488 : return "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28489 : return "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28490 : return "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28491 : return "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28492 : return "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m"; case 28600 : return "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +units=m"; case 28991 : return "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 28992 : return "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m"; case 29100 : return "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m"; case 29101 : return "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m"; case 29118 : return "+proj=utm +zone=18 +ellps=GRS67 +units=m"; case 29119 : return "+proj=utm +zone=19 +ellps=GRS67 +units=m"; case 29120 : return "+proj=utm +zone=20 +ellps=GRS67 +units=m"; case 29121 : return "+proj=utm +zone=21 +ellps=GRS67 +units=m"; case 29122 : return "+proj=utm +zone=22 +ellps=GRS67 +units=m"; case 29168 : return "+proj=utm +zone=18 +ellps=aust_SA +units=m"; case 29169 : return "+proj=utm +zone=19 +ellps=aust_SA +units=m"; case 29170 : return "+proj=utm +zone=20 +ellps=aust_SA +units=m"; case 29171 : return "+proj=utm +zone=21 +ellps=aust_SA +units=m"; case 29172 : return "+proj=utm +zone=22 +ellps=aust_SA +units=m"; case 29177 : return "+proj=utm +zone=17 +south +ellps=GRS67 +units=m"; case 29178 : return "+proj=utm +zone=18 +south +ellps=GRS67 +units=m"; case 29179 : return "+proj=utm +zone=19 +south +ellps=GRS67 +units=m"; case 29180 : return "+proj=utm +zone=20 +south +ellps=GRS67 +units=m"; case 29181 : return "+proj=utm +zone=21 +south +ellps=GRS67 +units=m"; case 29182 : return "+proj=utm +zone=22 +south +ellps=GRS67 +units=m"; case 29183 : return "+proj=utm +zone=23 +south +ellps=GRS67 +units=m"; case 29184 : return "+proj=utm +zone=24 +south +ellps=GRS67 +units=m"; case 29185 : return "+proj=utm +zone=25 +south +ellps=GRS67 +units=m"; case 29187 : return "+proj=utm +zone=17 +south +ellps=aust_SA +units=m"; case 29188 : return "+proj=utm +zone=18 +south +ellps=aust_SA +units=m"; case 29189 : return "+proj=utm +zone=19 +south +ellps=aust_SA +units=m"; case 29190 : return "+proj=utm +zone=20 +south +ellps=aust_SA +units=m"; case 29191 : return "+proj=utm +zone=21 +south +ellps=aust_SA +units=m"; case 29192 : return "+proj=utm +zone=22 +south +ellps=aust_SA +units=m"; case 29193 : return "+proj=utm +zone=23 +south +ellps=aust_SA +units=m"; case 29194 : return "+proj=utm +zone=24 +south +ellps=aust_SA +units=m"; case 29195 : return "+proj=utm +zone=25 +south +ellps=aust_SA +units=m"; case 29220 : return "+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m"; case 29221 : return "+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m"; case 29333 : return "+proj=utm +zone=33 +south +ellps=bess_nam +units=m"; case 29635 : return "+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m"; case 29636 : return "+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m"; case 29700 : return "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m"; case 29702 : return "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m"; case 29738 : return "+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m"; case 29739 : return "+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m"; case 29849 : return "+proj=utm +zone=49 +ellps=evrstSS +units=m"; case 29850 : return "+proj=utm +zone=50 +ellps=evrstSS +units=m"; case 29871 : return "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263"; case 29872 : return "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762"; case 29873 : return "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m"; case 29900 : return "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m"; case 29901 : return "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m"; case 29902 : return "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m"; case 29903 : return "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m"; case 30161 : return "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30162 : return "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30163 : return "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30164 : return "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30165 : return "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30166 : return "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30167 : return "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30168 : return "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30169 : return "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30170 : return "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30171 : return "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30172 : return "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30173 : return "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30174 : return "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30175 : return "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30176 : return "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30177 : return "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30178 : return "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30179 : return "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m"; case 30200 : return "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164"; case 30339 : return "+proj=utm +zone=39 +ellps=helmert +units=m"; case 30340 : return "+proj=utm +zone=40 +ellps=helmert +units=m"; case 30491 : return "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m"; case 30492 : return "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m"; case 30493 : return "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"; case 30494 : return "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m"; case 30729 : return "+proj=utm +zone=29 +ellps=clrk80 +units=m"; case 30730 : return "+proj=utm +zone=30 +ellps=clrk80 +units=m"; case 30731 : return "+proj=utm +zone=31 +ellps=clrk80 +units=m"; case 30732 : return "+proj=utm +zone=32 +ellps=clrk80 +units=m"; case 30791 : return "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m"; case 30792 : return "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m"; case 30800 : return "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m"; case 31028 : return "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m"; case 31121 : return "+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"; case 31154 : return "+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"; case 31170 : return "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"; case 31171 : return "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"; case 31251 : return "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m"; case 31252 : return "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m"; case 31253 : return "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m"; case 31254 : return "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31255 : return "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31256 : return "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31257 : return "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31258 : return "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31259 : return "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31265 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31266 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31267 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31268 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31275 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31276 : return "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31277 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31278 : return "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31279 : return "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31281 : return "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31282 : return "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31283 : return "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31284 : return "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31285 : return "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31286 : return "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31287 : return "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31288 : return "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31289 : return "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31290 : return "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31291 : return "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31292 : return "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31293 : return "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m"; case 31294 : return "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31295 : return "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31296 : return "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31297 : return "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m"; case 31300 : return "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m"; case 31370 : return "+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m"; case 31461 : return "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31462 : return "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31463 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31464 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31465 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31466 : return "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31467 : return "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31468 : return "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31469 : return "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m"; case 31528 : return "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"; case 31529 : return "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m"; case 31600 : return "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m"; case 31700 : return "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m"; case 31838 : return "+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m"; case 31839 : return "+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m"; case 31900 : return "+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 31901 : return "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m"; case 31965 : return "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31966 : return "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31967 : return "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31968 : return "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31969 : return "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31970 : return "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31971 : return "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31972 : return "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31973 : return "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31974 : return "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31975 : return "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31976 : return "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31977 : return "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31978 : return "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31979 : return "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31980 : return "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31981 : return "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31982 : return "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31983 : return "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31984 : return "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31985 : return "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31986 : return "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31987 : return "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31988 : return "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31989 : return "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31990 : return "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31991 : return "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31992 : return "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31993 : return "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31994 : return "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31995 : return "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31996 : return "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31997 : return "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31998 : return "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 31999 : return "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 32000 : return "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; case 32001 : return "+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32002 : return "+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32003 : return "+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32005 : return "+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32006 : return "+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32007 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32008 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32009 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32010 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32011 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32012 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32013 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32014 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32015 : return "+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32016 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32017 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32018 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32019 : return "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32020 : return "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32021 : return "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32022 : return "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32023 : return "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32024 : return "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32025 : return "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32026 : return "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32027 : return "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32028 : return "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32029 : return "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32030 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32031 : return "+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32033 : return "+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32034 : return "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32035 : return "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32036 : return "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32037 : return "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32038 : return "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32039 : return "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32040 : return "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32041 : return "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32042 : return "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32043 : return "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32044 : return "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32045 : return "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32046 : return "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32047 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32048 : return "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32049 : return "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32050 : return "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32051 : return "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32052 : return "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32053 : return "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32054 : return "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32055 : return "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32056 : return "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32057 : return "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32058 : return "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32061 : return "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m"; case 32062 : return "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m"; case 32064 : return "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32065 : return "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32066 : return "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32067 : return "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32074 : return "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32075 : return "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32076 : return "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32077 : return "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32081 : return "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32082 : return "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32083 : return "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32084 : return "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32085 : return "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32086 : return "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32098 : return "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m"; case 32099 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; case 32100 : return "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32104 : return "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32107 : return "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32108 : return "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32109 : return "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32110 : return "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32111 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32112 : return "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32113 : return "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32114 : return "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32115 : return "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32116 : return "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32117 : return "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32118 : return "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32119 : return "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32120 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32121 : return "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32122 : return "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32123 : return "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32124 : return "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32125 : return "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32126 : return "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32127 : return "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32128 : return "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32129 : return "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32130 : return "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32133 : return "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32134 : return "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32135 : return "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32136 : return "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32137 : return "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32138 : return "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32139 : return "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32140 : return "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32141 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32142 : return "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32143 : return "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32144 : return "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32145 : return "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32146 : return "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32147 : return "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32148 : return "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32149 : return "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32150 : return "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32151 : return "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32152 : return "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32153 : return "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32154 : return "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32155 : return "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32156 : return "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32157 : return "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32158 : return "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32161 : return "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m"; case 32164 : return "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 32165 : return "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 32166 : return "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 32167 : return "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192"; case 32180 : return "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32181 : return "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32182 : return "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32183 : return "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32184 : return "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32185 : return "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32186 : return "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32187 : return "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32188 : return "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32189 : return "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32190 : return "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32191 : return "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32192 : return "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32193 : return "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32194 : return "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32195 : return "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32196 : return "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32197 : return "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32198 : return "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32199 : return "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; case 32201 : return "+proj=utm +zone=1 +ellps=WGS72 +units=m"; case 32202 : return "+proj=utm +zone=2 +ellps=WGS72 +units=m"; case 32203 : return "+proj=utm +zone=3 +ellps=WGS72 +units=m"; case 32204 : return "+proj=utm +zone=4 +ellps=WGS72 +units=m"; case 32205 : return "+proj=utm +zone=5 +ellps=WGS72 +units=m"; case 32206 : return "+proj=utm +zone=6 +ellps=WGS72 +units=m"; case 32207 : return "+proj=utm +zone=7 +ellps=WGS72 +units=m"; case 32208 : return "+proj=utm +zone=8 +ellps=WGS72 +units=m"; case 32209 : return "+proj=utm +zone=9 +ellps=WGS72 +units=m"; case 32210 : return "+proj=utm +zone=10 +ellps=WGS72 +units=m"; case 32211 : return "+proj=utm +zone=11 +ellps=WGS72 +units=m"; case 32212 : return "+proj=utm +zone=12 +ellps=WGS72 +units=m"; case 32213 : return "+proj=utm +zone=13 +ellps=WGS72 +units=m"; case 32214 : return "+proj=utm +zone=14 +ellps=WGS72 +units=m"; case 32215 : return "+proj=utm +zone=15 +ellps=WGS72 +units=m"; case 32216 : return "+proj=utm +zone=16 +ellps=WGS72 +units=m"; case 32217 : return "+proj=utm +zone=17 +ellps=WGS72 +units=m"; case 32218 : return "+proj=utm +zone=18 +ellps=WGS72 +units=m"; case 32219 : return "+proj=utm +zone=19 +ellps=WGS72 +units=m"; case 32220 : return "+proj=utm +zone=20 +ellps=WGS72 +units=m"; case 32221 : return "+proj=utm +zone=21 +ellps=WGS72 +units=m"; case 32222 : return "+proj=utm +zone=22 +ellps=WGS72 +units=m"; case 32223 : return "+proj=utm +zone=23 +ellps=WGS72 +units=m"; case 32224 : return "+proj=utm +zone=24 +ellps=WGS72 +units=m"; case 32225 : return "+proj=utm +zone=25 +ellps=WGS72 +units=m"; case 32226 : return "+proj=utm +zone=26 +ellps=WGS72 +units=m"; case 32227 : return "+proj=utm +zone=27 +ellps=WGS72 +units=m"; case 32228 : return "+proj=utm +zone=28 +ellps=WGS72 +units=m"; case 32229 : return "+proj=utm +zone=29 +ellps=WGS72 +units=m"; case 32230 : return "+proj=utm +zone=30 +ellps=WGS72 +units=m"; case 32231 : return "+proj=utm +zone=31 +ellps=WGS72 +units=m"; case 32232 : return "+proj=utm +zone=32 +ellps=WGS72 +units=m"; case 32233 : return "+proj=utm +zone=33 +ellps=WGS72 +units=m"; case 32234 : return "+proj=utm +zone=34 +ellps=WGS72 +units=m"; case 32235 : return "+proj=utm +zone=35 +ellps=WGS72 +units=m"; case 32236 : return "+proj=utm +zone=36 +ellps=WGS72 +units=m"; case 32237 : return "+proj=utm +zone=37 +ellps=WGS72 +units=m"; case 32238 : return "+proj=utm +zone=38 +ellps=WGS72 +units=m"; case 32239 : return "+proj=utm +zone=39 +ellps=WGS72 +units=m"; case 32240 : return "+proj=utm +zone=40 +ellps=WGS72 +units=m"; case 32241 : return "+proj=utm +zone=41 +ellps=WGS72 +units=m"; case 32242 : return "+proj=utm +zone=42 +ellps=WGS72 +units=m"; case 32243 : return "+proj=utm +zone=43 +ellps=WGS72 +units=m"; case 32244 : return "+proj=utm +zone=44 +ellps=WGS72 +units=m"; case 32245 : return "+proj=utm +zone=45 +ellps=WGS72 +units=m"; case 32246 : return "+proj=utm +zone=46 +ellps=WGS72 +units=m"; case 32247 : return "+proj=utm +zone=47 +ellps=WGS72 +units=m"; case 32248 : return "+proj=utm +zone=48 +ellps=WGS72 +units=m"; case 32249 : return "+proj=utm +zone=49 +ellps=WGS72 +units=m"; case 32250 : return "+proj=utm +zone=50 +ellps=WGS72 +units=m"; case 32251 : return "+proj=utm +zone=51 +ellps=WGS72 +units=m"; case 32252 : return "+proj=utm +zone=52 +ellps=WGS72 +units=m"; case 32253 : return "+proj=utm +zone=53 +ellps=WGS72 +units=m"; case 32254 : return "+proj=utm +zone=54 +ellps=WGS72 +units=m"; case 32255 : return "+proj=utm +zone=55 +ellps=WGS72 +units=m"; case 32256 : return "+proj=utm +zone=56 +ellps=WGS72 +units=m"; case 32257 : return "+proj=utm +zone=57 +ellps=WGS72 +units=m"; case 32258 : return "+proj=utm +zone=58 +ellps=WGS72 +units=m"; case 32259 : return "+proj=utm +zone=59 +ellps=WGS72 +units=m"; case 32260 : return "+proj=utm +zone=60 +ellps=WGS72 +units=m"; case 32301 : return "+proj=utm +zone=1 +south +ellps=WGS72 +units=m"; case 32302 : return "+proj=utm +zone=2 +south +ellps=WGS72 +units=m"; case 32303 : return "+proj=utm +zone=3 +south +ellps=WGS72 +units=m"; case 32304 : return "+proj=utm +zone=4 +south +ellps=WGS72 +units=m"; case 32305 : return "+proj=utm +zone=5 +south +ellps=WGS72 +units=m"; case 32306 : return "+proj=utm +zone=6 +south +ellps=WGS72 +units=m"; case 32307 : return "+proj=utm +zone=7 +south +ellps=WGS72 +units=m"; case 32308 : return "+proj=utm +zone=8 +south +ellps=WGS72 +units=m"; case 32309 : return "+proj=utm +zone=9 +south +ellps=WGS72 +units=m"; case 32310 : return "+proj=utm +zone=10 +south +ellps=WGS72 +units=m"; case 32311 : return "+proj=utm +zone=11 +south +ellps=WGS72 +units=m"; case 32312 : return "+proj=utm +zone=12 +south +ellps=WGS72 +units=m"; case 32313 : return "+proj=utm +zone=13 +south +ellps=WGS72 +units=m"; case 32314 : return "+proj=utm +zone=14 +south +ellps=WGS72 +units=m"; case 32315 : return "+proj=utm +zone=15 +south +ellps=WGS72 +units=m"; case 32316 : return "+proj=utm +zone=16 +south +ellps=WGS72 +units=m"; case 32317 : return "+proj=utm +zone=17 +south +ellps=WGS72 +units=m"; case 32318 : return "+proj=utm +zone=18 +south +ellps=WGS72 +units=m"; case 32319 : return "+proj=utm +zone=19 +south +ellps=WGS72 +units=m"; case 32320 : return "+proj=utm +zone=20 +south +ellps=WGS72 +units=m"; case 32321 : return "+proj=utm +zone=21 +south +ellps=WGS72 +units=m"; case 32322 : return "+proj=utm +zone=22 +south +ellps=WGS72 +units=m"; case 32323 : return "+proj=utm +zone=23 +south +ellps=WGS72 +units=m"; case 32324 : return "+proj=utm +zone=24 +south +ellps=WGS72 +units=m"; case 32325 : return "+proj=utm +zone=25 +south +ellps=WGS72 +units=m"; case 32326 : return "+proj=utm +zone=26 +south +ellps=WGS72 +units=m"; case 32327 : return "+proj=utm +zone=27 +south +ellps=WGS72 +units=m"; case 32328 : return "+proj=utm +zone=28 +south +ellps=WGS72 +units=m"; case 32329 : return "+proj=utm +zone=29 +south +ellps=WGS72 +units=m"; case 32330 : return "+proj=utm +zone=30 +south +ellps=WGS72 +units=m"; case 32331 : return "+proj=utm +zone=31 +south +ellps=WGS72 +units=m"; case 32332 : return "+proj=utm +zone=32 +south +ellps=WGS72 +units=m"; case 32333 : return "+proj=utm +zone=33 +south +ellps=WGS72 +units=m"; case 32334 : return "+proj=utm +zone=34 +south +ellps=WGS72 +units=m"; case 32335 : return "+proj=utm +zone=35 +south +ellps=WGS72 +units=m"; case 32336 : return "+proj=utm +zone=36 +south +ellps=WGS72 +units=m"; case 32337 : return "+proj=utm +zone=37 +south +ellps=WGS72 +units=m"; case 32338 : return "+proj=utm +zone=38 +south +ellps=WGS72 +units=m"; case 32339 : return "+proj=utm +zone=39 +south +ellps=WGS72 +units=m"; case 32340 : return "+proj=utm +zone=40 +south +ellps=WGS72 +units=m"; case 32341 : return "+proj=utm +zone=41 +south +ellps=WGS72 +units=m"; case 32342 : return "+proj=utm +zone=42 +south +ellps=WGS72 +units=m"; case 32343 : return "+proj=utm +zone=43 +south +ellps=WGS72 +units=m"; case 32344 : return "+proj=utm +zone=44 +south +ellps=WGS72 +units=m"; case 32345 : return "+proj=utm +zone=45 +south +ellps=WGS72 +units=m"; case 32346 : return "+proj=utm +zone=46 +south +ellps=WGS72 +units=m"; case 32347 : return "+proj=utm +zone=47 +south +ellps=WGS72 +units=m"; case 32348 : return "+proj=utm +zone=48 +south +ellps=WGS72 +units=m"; case 32349 : return "+proj=utm +zone=49 +south +ellps=WGS72 +units=m"; case 32350 : return "+proj=utm +zone=50 +south +ellps=WGS72 +units=m"; case 32351 : return "+proj=utm +zone=51 +south +ellps=WGS72 +units=m"; case 32352 : return "+proj=utm +zone=52 +south +ellps=WGS72 +units=m"; case 32353 : return "+proj=utm +zone=53 +south +ellps=WGS72 +units=m"; case 32354 : return "+proj=utm +zone=54 +south +ellps=WGS72 +units=m"; case 32355 : return "+proj=utm +zone=55 +south +ellps=WGS72 +units=m"; case 32356 : return "+proj=utm +zone=56 +south +ellps=WGS72 +units=m"; case 32357 : return "+proj=utm +zone=57 +south +ellps=WGS72 +units=m"; case 32358 : return "+proj=utm +zone=58 +south +ellps=WGS72 +units=m"; case 32359 : return "+proj=utm +zone=59 +south +ellps=WGS72 +units=m"; case 32360 : return "+proj=utm +zone=60 +south +ellps=WGS72 +units=m"; case 32401 : return "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32402 : return "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32403 : return "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32404 : return "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32405 : return "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32406 : return "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32407 : return "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32408 : return "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32409 : return "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32410 : return "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32411 : return "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32412 : return "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32413 : return "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32414 : return "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32415 : return "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32416 : return "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32417 : return "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32418 : return "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32419 : return "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32420 : return "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32421 : return "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32422 : return "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32423 : return "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32424 : return "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32425 : return "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32426 : return "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32427 : return "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32428 : return "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32429 : return "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32430 : return "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32431 : return "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32432 : return "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32433 : return "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32434 : return "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32435 : return "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32436 : return "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32437 : return "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32438 : return "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32439 : return "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32440 : return "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32441 : return "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32442 : return "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32443 : return "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32444 : return "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32445 : return "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32446 : return "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32447 : return "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32448 : return "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32449 : return "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32450 : return "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32451 : return "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32452 : return "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32453 : return "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32454 : return "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32455 : return "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32456 : return "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32457 : return "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32458 : return "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32459 : return "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32460 : return "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32501 : return "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32502 : return "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32503 : return "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32504 : return "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32505 : return "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32506 : return "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32507 : return "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32508 : return "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32509 : return "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32510 : return "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32511 : return "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32512 : return "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32513 : return "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32514 : return "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32515 : return "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32516 : return "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32517 : return "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32518 : return "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32519 : return "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32520 : return "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32521 : return "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32522 : return "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32523 : return "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32524 : return "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32525 : return "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32526 : return "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32527 : return "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32528 : return "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32529 : return "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32530 : return "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32531 : return "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32532 : return "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32533 : return "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32534 : return "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32535 : return "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32536 : return "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32537 : return "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32538 : return "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32539 : return "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32540 : return "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32541 : return "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32542 : return "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32543 : return "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32544 : return "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32545 : return "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32546 : return "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32547 : return "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32548 : return "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32549 : return "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32550 : return "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32551 : return "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32552 : return "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32553 : return "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32554 : return "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32555 : return "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32556 : return "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32557 : return "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32558 : return "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32559 : return "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32560 : return "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m"; case 32601 : return "+proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m"; case 32602 : return "+proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m"; case 32603 : return "+proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m"; case 32604 : return "+proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m"; case 32605 : return "+proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m"; case 32606 : return "+proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m"; case 32607 : return "+proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m"; case 32608 : return "+proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m"; case 32609 : return "+proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m"; case 32610 : return "+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m"; case 32611 : return "+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m"; case 32612 : return "+proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m"; case 32613 : return "+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m"; case 32614 : return "+proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m"; case 32615 : return "+proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m"; case 32616 : return "+proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m"; case 32617 : return "+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m"; case 32618 : return "+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m"; case 32619 : return "+proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m"; case 32620 : return "+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m"; case 32621 : return "+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m"; case 32622 : return "+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m"; case 32623 : return "+proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m"; case 32624 : return "+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m"; case 32625 : return "+proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m"; case 32626 : return "+proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m"; case 32627 : return "+proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m"; case 32628 : return "+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m"; case 32629 : return "+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m"; case 32630 : return "+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m"; case 32631 : return "+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m"; case 32632 : return "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m"; case 32633 : return "+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m"; case 32634 : return "+proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m"; case 32635 : return "+proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m"; case 32636 : return "+proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m"; case 32637 : return "+proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m"; case 32638 : return "+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m"; case 32639 : return "+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m"; case 32640 : return "+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m"; case 32641 : return "+proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m"; case 32642 : return "+proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m"; case 32643 : return "+proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m"; case 32644 : return "+proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m"; case 32645 : return "+proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m"; case 32646 : return "+proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m"; case 32647 : return "+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m"; case 32648 : return "+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m"; case 32649 : return "+proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m"; case 32650 : return "+proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m"; case 32651 : return "+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m"; case 32652 : return "+proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m"; case 32653 : return "+proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m"; case 32654 : return "+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m"; case 32655 : return "+proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m"; case 32656 : return "+proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m"; case 32657 : return "+proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m"; case 32658 : return "+proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m"; case 32659 : return "+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m"; case 32660 : return "+proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m"; case 32661 : return "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m"; case 32662 : return "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m"; case 32664 : return "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"; case 32665 : return "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"; case 32666 : return "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"; case 32667 : return "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192"; case 32701 : return "+proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32702 : return "+proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32703 : return "+proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32704 : return "+proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32705 : return "+proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32706 : return "+proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32707 : return "+proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32708 : return "+proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32709 : return "+proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32710 : return "+proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32711 : return "+proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32712 : return "+proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32713 : return "+proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32714 : return "+proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32715 : return "+proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32716 : return "+proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32717 : return "+proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32718 : return "+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32719 : return "+proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32720 : return "+proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32721 : return "+proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32722 : return "+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32723 : return "+proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32724 : return "+proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32725 : return "+proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32726 : return "+proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32727 : return "+proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32728 : return "+proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32729 : return "+proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32730 : return "+proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32731 : return "+proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32732 : return "+proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32733 : return "+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32734 : return "+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32735 : return "+proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32736 : return "+proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32737 : return "+proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32738 : return "+proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32739 : return "+proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32740 : return "+proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32741 : return "+proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32742 : return "+proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32743 : return "+proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32744 : return "+proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32745 : return "+proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32746 : return "+proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32747 : return "+proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32748 : return "+proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32749 : return "+proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32750 : return "+proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32751 : return "+proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32752 : return "+proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32753 : return "+proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32754 : return "+proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32755 : return "+proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32756 : return "+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32757 : return "+proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32758 : return "+proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32759 : return "+proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32760 : return "+proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m"; case 32761 : return "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m"; case 32766 : return "+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m"; } return ""; } } #endif // DOXYGEN_NO_DETAIL // Overloaded function inline parameters init(int epsg_code) { std::string args = detail::code_to_string(epsg_code); return detail::pj_init_plus(args, false); } }} #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/epsg_traits.hpp000066400000000000000000000022571177067165300307610ustar00rootroot00000000000000#ifndef _PROJECTIONS_EPSG_TRAITS_HPP #define _PROJECTIONS_EPSG_TRAITS_HPP // Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include namespace ggl { namespace projection { /*! \brief EPSG traits \details With help of the EPSG traits library users can statically use projections or coordinate systems specifying an EPSG code. The correct projections for transformations are used automically then, still keeping static polymorphism. \ingroup projection \tparam EPSG epsg code \tparam LL latlong point type \tparam XY xy point type \tparam PAR parameter type, normally not specified */ template struct epsg_traits { // Specializations define: // - type to get projection type // - function par to get parameters }; }} #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/factory.hpp000066400000000000000000000236241177067165300301050ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_PROJECTIONS_FACTORY_HPP #define GGL_PROJECTIONS_FACTORY_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // control points XY #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // includes two other projections #include #include #include #include #include // xy functions after inverse #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // includes other projection #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { namespace projection { template class factory : public detail::base_factory { private: typedef std::map > > prj_registry; prj_registry m_registry; public: factory() { detail::aea_init(*this); detail::aeqd_init(*this); detail::airy_init(*this); detail::aitoff_init(*this); detail::august_init(*this); detail::bacon_init(*this); detail::bipc_init(*this); detail::boggs_init(*this); detail::bonne_init(*this); detail::cass_init(*this); detail::cc_init(*this); detail::cea_init(*this); detail::chamb_init(*this); detail::collg_init(*this); detail::crast_init(*this); detail::denoy_init(*this); detail::eck1_init(*this); detail::eck2_init(*this); detail::eck3_init(*this); detail::eck4_init(*this); detail::eck5_init(*this); detail::eqc_init(*this); detail::eqdc_init(*this); detail::fahey_init(*this); detail::fouc_s_init(*this); detail::gall_init(*this); detail::geocent_init(*this); detail::geos_init(*this); detail::gins8_init(*this); detail::gn_sinu_init(*this); detail::gnom_init(*this); detail::goode_init(*this); detail::gstmerc_init(*this); detail::hammer_init(*this); detail::hatano_init(*this); detail::krovak_init(*this); detail::imw_p_init(*this); detail::labrd_init(*this); detail::laea_init(*this); detail::lagrng_init(*this); detail::larr_init(*this); detail::lask_init(*this); detail::latlong_init(*this); detail::lcc_init(*this); detail::lcca_init(*this); detail::loxim_init(*this); detail::lsat_init(*this); detail::mbtfpp_init(*this); detail::mbtfpq_init(*this); detail::mbt_fps_init(*this); detail::merc_init(*this); detail::mill_init(*this); detail::mod_ster_init(*this); detail::moll_init(*this); detail::nell_init(*this); detail::nell_h_init(*this); detail::nocol_init(*this); detail::nsper_init(*this); detail::nzmg_init(*this); detail::ob_tran_init(*this); detail::ocea_init(*this); detail::oea_init(*this); detail::omerc_init(*this); detail::ortho_init(*this); detail::poly_init(*this); detail::putp2_init(*this); detail::putp3_init(*this); detail::putp4p_init(*this); detail::putp5_init(*this); detail::putp6_init(*this); detail::robin_init(*this); detail::rouss_init(*this); detail::rpoly_init(*this); detail::sconics_init(*this); detail::somerc_init(*this); detail::stere_init(*this); detail::sterea_init(*this); detail::sts_init(*this); detail::tcc_init(*this); detail::tcea_init(*this); detail::tmerc_init(*this); detail::tpeqd_init(*this); detail::urm5_init(*this); detail::urmfps_init(*this); detail::vandg_init(*this); detail::vandg2_init(*this); detail::vandg4_init(*this); detail::wag2_init(*this); detail::wag3_init(*this); detail::wag7_init(*this); detail::wink1_init(*this); detail::wink2_init(*this); } virtual ~factory() {} virtual void add_to_factory(const std::string& name, detail::factory_entry* sub) { m_registry[name].reset(sub); } inline projection* create_new(const Parameters& parameters) { typename prj_registry::iterator it = m_registry.find(parameters.name); if (it != m_registry.end()) { return it->second->create_new(parameters); } return 0; } }; }} // namespace ggl::projection #endif // GGL_PROJECTIONS_FACTORY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/000077500000000000000000000000001177067165300266575ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/aasincos.hpp000066400000000000000000000055641177067165300312020ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_AASINCOS_HPP #define GGL_PROJECTIONS_IMPL_AASINCOS_HPP #include namespace ggl { namespace projection { namespace detail { namespace aasincos { static const double ONE_TOL= 1.00000000000001; //static const double TOL = 0.000000001; static const double ATOL = 1e-50; } inline double aasin(double v) { double av = 0; if ((av = std::fabs(v)) >= 1.0) { if (av > aasincos::ONE_TOL) { throw proj_exception(-19); } return (v < 0.0 ? -HALFPI : HALFPI); } return std::asin(v); } inline double aacos(double v) { double av = 0; if ((av = std::fabs(v)) >= 1.0) { if (av > aasincos::ONE_TOL) { throw proj_exception(-19); } return (v < 0.0 ? PI : 0.0); } return acos(v); } inline double asqrt(double v) { return ((v <= 0) ? 0. : std::sqrt(v)); } inline double aatan2(double n, double d) { return ((std::fabs(n) < aasincos::ATOL && std::fabs(d) < aasincos::ATOL) ? 0.0 : std::atan2(n, d)); } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_AASINCOS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/adjlon.hpp000066400000000000000000000050151177067165300306400ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_ADJLON_HPP #define GGL_PROJECTIONS_IMPL_ADJLON_HPP #include #include namespace ggl { namespace projection { namespace detail { /* reduce argument to range +/- PI */ inline double adjlon (double lon) { static const double SPI = 3.14159265359; static const double TWOPI = 6.2831853071795864769; static const double ONEPI = 3.14159265358979323846; if (std::fabs(lon) <= SPI) { return lon; } lon += ONEPI; /* adjust to 0..2pi rad */ lon -= TWOPI * std::floor(lon / TWOPI); /* remove integral # of 'revolutions'*/ lon -= ONEPI; /* adjust back to -pi..pi rad */ return lon; } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_ADJLON_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/base_dynamic.hpp000066400000000000000000000050761177067165300320160ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP #define GGL_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { // Base-virtual-forward template class base_v_f : public projection { protected: typedef typename projection::LL_T LL_T; typedef typename projection::XY_T XY_T; public: base_v_f(const P& params) : m_proj(params) {} virtual P params() const {return m_proj.params();} virtual bool forward(const LL& ll, XY& xy) const { return m_proj.forward(ll, xy); } virtual void fwd(LL_T& lp_lon, LL_T& lp_lat, XY_T& xy_x, XY_T& xy_y) const { m_proj.fwd(lp_lon, lp_lat, xy_x, xy_y); } virtual bool inverse(const XY& xy, LL& ll) const { boost::ignore_unused_variable_warning(xy); boost::ignore_unused_variable_warning(ll); // exception? return false; } virtual void inv(XY_T& xy_x, XY_T& xy_y, LL_T& lp_lon, LL_T& lp_lat) const { boost::ignore_unused_variable_warning(xy_x); boost::ignore_unused_variable_warning(xy_y); boost::ignore_unused_variable_warning(lp_lon); boost::ignore_unused_variable_warning(lp_lat); // exception? } virtual std::string name() const { return m_proj.name(); } protected: C m_proj; }; // Base-virtual-forward/inverse template class base_v_fi : public base_v_f { private: typedef typename base_v_f::LL_T LL_T; typedef typename base_v_f::XY_T XY_T; public : base_v_fi(const P& params) : base_v_f(params) {} virtual bool inverse(const XY& xy, LL& ll) const { return this->m_proj.inverse(xy, ll); } void inv(XY_T& xy_x, XY_T& xy_y, LL_T& lp_lon, LL_T& lp_lat) const { this->m_proj.inv(xy_x, xy_y, lp_lon, lp_lat); } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL }} // namespace ggl::projection #endif // GGL_PROJECTIONS_IMPL_BASE_DYNAMIC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/base_static.hpp000066400000000000000000000045421177067165300316560ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_PROJECTIONS_IMPL_BASE_STATIC_HPP #define GGL_PROJECTIONS_IMPL_BASE_STATIC_HPP #if defined(_MSC_VER) // For CRTP, *this is acceptable in constructor -> turn warning off #pragma warning( disable : 4355 ) #endif // defined(_MSC_VER) #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { // Base-template-forward template struct base_t_f { public: inline base_t_f(const Prj& prj, const P& params) : m_par(params), m_prj(prj) {} inline P params() const {return m_par;} inline bool forward(const LL& lp, XY& xy) const { try { pj_fwd(m_prj, m_par, lp, xy); return true; } catch(...) { return false; } } inline std::string name() const { return this->m_par.name; } protected: // Some projections do not work with float -> wrong results // TODO: make traits which select from int/float/double and else selects T //typedef typename ggl::coordinate_type::type LL_T; //typedef typename ggl::coordinate_type::type XY_T; typedef double LL_T; typedef double XY_T; P m_par; const Prj& m_prj; }; // Base-template-forward/inverse template struct base_t_fi : public base_t_f { public : inline base_t_fi(const Prj& prj, const P& params) : base_t_f(prj, params) {} inline bool inverse(const XY& xy, LL& lp) const { try { pj_inv(this->m_prj, this->m_par, xy, lp); return true; } catch(...) { return false; } } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL }} // namespace ggl::projection #endif // GGL_PROJECTIONS_IMPL_BASE_STATIC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/factory_entry.hpp000066400000000000000000000020351177067165300322600ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_PROJECTIONS_IMPL_FACTORY_ENTRY_HPP #define GGL_PROJECTIONS_IMPL_FACTORY_ENTRY_HPP #include #include namespace ggl { namespace projection { namespace detail { template class factory_entry { public: virtual ~factory_entry() {} virtual projection* create_new(const P& par) const = 0; }; template class base_factory { public: virtual ~base_factory() {} virtual void add_to_factory(const std::string& name, factory_entry* sub) = 0; }; }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_FACTORY_ENTRY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/function_overloads.hpp000066400000000000000000000015761177067165300333040ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_PROJECTIONS_IMPL_FUNCTION_OVERLOADS_HPP #define GGL_PROJECTIONS_IMPL_FUNCTION_OVERLOADS_HPP #include namespace ggl { namespace projection { // Functions to resolve ambiguity when compiling with coordinates of different types /*inline double atan2(double a, double b) { return std::atan2(a, b); } inline double pow(double a, double b) { return std::pow(a, b); } */ inline int int_floor(double f) { return int(std::floor(f)); } }} // namespace ggl::projection #endif // GGL_PROJECTIONS_IMPL_FUNCTION_OVERLOADS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/geocent.c000066400000000000000000000365561177067165300304660ustar00rootroot00000000000000/***************************************************************************/ /* RSC IDENTIFIER: GEOCENTRIC * * ABSTRACT * * This component provides conversions between Geodetic coordinates (latitude, * longitude in radians and height in meters) and Geocentric coordinates * (X, Y, Z) in meters. * * ERROR HANDLING * * This component checks parameters for valid values. If an invalid value * is found, the error code is combined with the current error code using * the bitwise or. This combining allows multiple error codes to be * returned. The possible error codes are: * * GEOCENT_NO_ERROR : No errors occurred in function * GEOCENT_LAT_ERROR : Latitude out of valid range * (-90 to 90 degrees) * GEOCENT_LON_ERROR : Longitude out of valid range * (-180 to 360 degrees) * GEOCENT_A_ERROR : Semi-major axis lessthan or equal to zero * GEOCENT_B_ERROR : Semi-minor axis lessthan or equal to zero * GEOCENT_A_LESS_B_ERROR : Semi-major axis less than semi-minor axis * * * REUSE NOTES * * GEOCENTRIC is intended for reuse by any application that performs * coordinate conversions between geodetic coordinates and geocentric * coordinates. * * * REFERENCES * * An Improved Algorithm for Geocentric to Geodetic Coordinate Conversion, * Ralph Toms, February 1996 UCRL-JC-123138. * * Further information on GEOCENTRIC can be found in the Reuse Manual. * * GEOCENTRIC originated from : U.S. Army Topographic Engineering Center * Geospatial Information Division * 7701 Telegraph Road * Alexandria, VA 22310-3864 * * LICENSES * * None apply to this component. * * RESTRICTIONS * * GEOCENTRIC has no restrictions. * * ENVIRONMENT * * GEOCENTRIC was tested and certified in the following environments: * * 1. Solaris 2.5 with GCC version 2.8.1 * 2. Windows 95 with MS Visual C++ version 6 * * MODIFICATIONS * * Date Description * ---- ----------- * 25-02-97 Original Code * * $Log: geocent.c,v $ * Revision 1.7 2007/09/11 20:19:36 fwarmerdam * avoid use of static variables to make reentrant * * Revision 1.6 2006/01/12 22:29:01 fwarmerdam * make geocent.c globals static to avoid conflicts * * Revision 1.5 2004/10/25 15:34:36 fwarmerdam * make names of geodetic funcs from geotrans unique * * Revision 1.4 2004/05/03 16:28:01 warmerda * Apply iterative solution to geocentric_to_geodetic as suggestion from * Lothar Gorling. * http://bugzilla.remotesensing.org/show_bug.cgi?id=563 * * Revision 1.3 2002/01/08 15:04:08 warmerda * The latitude clamping fix from September in Convert_Geodetic_To_Geocentric * was botched. Fixed up now. * */ /***************************************************************************/ /* * INCLUDES */ #include #include "geocent.h" /* * math.h - is needed for calls to sin, cos, tan and sqrt. * geocent.h - is needed for Error codes and prototype error checking. */ /***************************************************************************/ /* * DEFINES */ #define PI 3.14159265358979323e0 #define PI_OVER_2 (PI / 2.0e0) #define FALSE 0 #define TRUE 1 #define COS_67P5 0.38268343236508977 /* cosine of 67.5 degrees */ #define AD_C 1.0026000 /* Toms region 1 constant */ /***************************************************************************/ /* * FUNCTIONS */ long pj_Set_Geocentric_Parameters (GeocentricInfo *gi, double a, double b) { /* BEGIN Set_Geocentric_Parameters */ /* * The function Set_Geocentric_Parameters receives the ellipsoid parameters * as inputs and sets the corresponding state variables. * * a : Semi-major axis, in meters. (input) * b : Semi-minor axis, in meters. (input) */ long Error_Code = GEOCENT_NO_ERROR; if (a <= 0.0) Error_Code |= GEOCENT_A_ERROR; if (b <= 0.0) Error_Code |= GEOCENT_B_ERROR; if (a < b) Error_Code |= GEOCENT_A_LESS_B_ERROR; if (!Error_Code) { gi->Geocent_a = a; gi->Geocent_b = b; gi->Geocent_a2 = a * a; gi->Geocent_b2 = b * b; gi->Geocent_e2 = (gi->Geocent_a2 - gi->Geocent_b2) / gi->Geocent_a2; gi->Geocent_ep2 = (gi->Geocent_a2 - gi->Geocent_b2) / gi->Geocent_b2; } return (Error_Code); } /* END OF Set_Geocentric_Parameters */ void pj_Get_Geocentric_Parameters (GeocentricInfo *gi, double *a, double *b) { /* BEGIN Get_Geocentric_Parameters */ /* * The function Get_Geocentric_Parameters returns the ellipsoid parameters * to be used in geocentric coordinate conversions. * * a : Semi-major axis, in meters. (output) * b : Semi-minor axis, in meters. (output) */ *a = gi->Geocent_a; *b = gi->Geocent_b; } /* END OF Get_Geocentric_Parameters */ long pj_Convert_Geodetic_To_Geocentric (GeocentricInfo *gi, double Latitude, double Longitude, double Height, double *X, double *Y, double *Z) { /* BEGIN Convert_Geodetic_To_Geocentric */ /* * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), * according to the current ellipsoid parameters. * * Latitude : Geodetic latitude in radians (input) * Longitude : Geodetic longitude in radians (input) * Height : Geodetic height, in meters (input) * X : Calculated Geocentric X coordinate, in meters (output) * Y : Calculated Geocentric Y coordinate, in meters (output) * Z : Calculated Geocentric Z coordinate, in meters (output) * */ long Error_Code = GEOCENT_NO_ERROR; double Rn; /* Earth radius at location */ double Sin_Lat; /* sin(Latitude) */ double Sin2_Lat; /* Square of sin(Latitude) */ double Cos_Lat; /* cos(Latitude) */ /* ** Don't blow up if Latitude is just a little out of the value ** range as it may just be a rounding issue. Also removed longitude ** test, it should be wrapped by cos() and sin(). NFW for PROJ.4, Sep/2001. */ if( Latitude < -PI_OVER_2 && Latitude > -1.001 * PI_OVER_2 ) Latitude = -PI_OVER_2; else if( Latitude > PI_OVER_2 && Latitude < 1.001 * PI_OVER_2 ) Latitude = PI_OVER_2; else if ((Latitude < -PI_OVER_2) || (Latitude > PI_OVER_2)) { /* Latitude out of range */ Error_Code |= GEOCENT_LAT_ERROR; } if (!Error_Code) { /* no errors */ if (Longitude > PI) Longitude -= (2*PI); Sin_Lat = sin(Latitude); Cos_Lat = cos(Latitude); Sin2_Lat = Sin_Lat * Sin_Lat; Rn = gi->Geocent_a / (sqrt(1.0e0 - gi->Geocent_e2 * Sin2_Lat)); *X = (Rn + Height) * Cos_Lat * cos(Longitude); *Y = (Rn + Height) * Cos_Lat * sin(Longitude); *Z = ((Rn * (1 - gi->Geocent_e2)) + Height) * Sin_Lat; } return (Error_Code); } /* END OF Convert_Geodetic_To_Geocentric */ /* * The function Convert_Geocentric_To_Geodetic converts geocentric * coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude, * and height), according to the current ellipsoid parameters. * * X : Geocentric X coordinate, in meters. (input) * Y : Geocentric Y coordinate, in meters. (input) * Z : Geocentric Z coordinate, in meters. (input) * Latitude : Calculated latitude value in radians. (output) * Longitude : Calculated longitude value in radians. (output) * Height : Calculated height value, in meters. (output) */ #define USE_ITERATIVE_METHOD void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi, double X, double Y, double Z, double *Latitude, double *Longitude, double *Height) { /* BEGIN Convert_Geocentric_To_Geodetic */ #if !defined(USE_ITERATIVE_METHOD) /* * The method used here is derived from 'An Improved Algorithm for * Geocentric to Geodetic Coordinate Conversion', by Ralph Toms, Feb 1996 */ /* Note: Variable names follow the notation used in Toms, Feb 1996 */ double W; /* distance from Z axis */ double W2; /* square of distance from Z axis */ double T0; /* initial estimate of vertical component */ double T1; /* corrected estimate of vertical component */ double S0; /* initial estimate of horizontal component */ double S1; /* corrected estimate of horizontal component */ double Sin_B0; /* sin(B0), B0 is estimate of Bowring aux variable */ double Sin3_B0; /* cube of sin(B0) */ double Cos_B0; /* cos(B0) */ double Sin_p1; /* sin(phi1), phi1 is estimated latitude */ double Cos_p1; /* cos(phi1) */ double Rn; /* Earth radius at location */ double Sum; /* numerator of cos(phi1) */ int At_Pole; /* indicates location is in polar region */ At_Pole = FALSE; if (X != 0.0) { *Longitude = atan2(Y,X); } else { if (Y > 0) { *Longitude = PI_OVER_2; } else if (Y < 0) { *Longitude = -PI_OVER_2; } else { At_Pole = TRUE; *Longitude = 0.0; if (Z > 0.0) { /* north pole */ *Latitude = PI_OVER_2; } else if (Z < 0.0) { /* south pole */ *Latitude = -PI_OVER_2; } else { /* center of earth */ *Latitude = PI_OVER_2; *Height = -Geocent_b; return; } } } W2 = X*X + Y*Y; W = sqrt(W2); T0 = Z * AD_C; S0 = sqrt(T0 * T0 + W2); Sin_B0 = T0 / S0; Cos_B0 = W / S0; Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0; T1 = Z + gi->Geocent_b * gi->Geocent_ep2 * Sin3_B0; Sum = W - gi->Geocent_a * gi->Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0; S1 = sqrt(T1*T1 + Sum * Sum); Sin_p1 = T1 / S1; Cos_p1 = Sum / S1; Rn = gi->Geocent_a / sqrt(1.0 - gi->Geocent_e2 * Sin_p1 * Sin_p1); if (Cos_p1 >= COS_67P5) { *Height = W / Cos_p1 - Rn; } else if (Cos_p1 <= -COS_67P5) { *Height = W / -Cos_p1 - Rn; } else { *Height = Z / Sin_p1 + Rn * (gi->Geocent_e2 - 1.0); } if (At_Pole == FALSE) { *Latitude = atan(Sin_p1 / Cos_p1); } #else /* defined(USE_ITERATIVE_METHOD) */ /* * Reference... * ============ * Wenzel, H.-G.(1985): Hochauflösende Kugelfunktionsmodelle für * das Gravitationspotential der Erde. Wiss. Arb. Univ. Hannover * Nr. 137, p. 130-131. * Programmed by GGA- Leibniz-Institue of Applied Geophysics * Stilleweg 2 * D-30655 Hannover * Federal Republic of Germany * Internet: www.gga-hannover.de * * Hannover, March 1999, April 2004. * see also: comments in statements * remarks: * Mathematically exact and because of symmetry of rotation-ellipsoid, * each point (X,Y,Z) has at least two solutions (Latitude1,Longitude1,Height1) and * (Latitude2,Longitude2,Height2). Is point=(0.,0.,Z) (P=0.), so you get even * four solutions, every two symmetrical to the semi-minor axis. * Here Height1 and Height2 have at least a difference in order of * radius of curvature (e.g. (0,0,b)=> (90.,0.,0.) or (-90.,0.,-2b); * (a+100.)*(sqrt(2.)/2.,sqrt(2.)/2.,0.) => (0.,45.,100.) or * (0.,225.,-(2a+100.))). * The algorithm always computes (Latitude,Longitude) with smallest |Height|. * For normal computations, that means |Height|<10000.m, algorithm normally * converges after to 2-3 steps!!! * But if |Height| has the amount of length of ellipsoid's axis * (e.g. -6300000.m), algorithm needs about 15 steps. */ /* local defintions and variables */ /* end-criterium of loop, accuracy of sin(Latitude) */ #define genau 1.E-12 #define genau2 (genau*genau) #define maxiter 30 double P; /* distance between semi-minor axis and location */ double RR; /* distance between center and location */ double CT; /* sin of geocentric latitude */ double ST; /* cos of geocentric latitude */ double RX; double RK; double RN; /* Earth radius at location */ double CPHI0; /* cos of start or old geodetic latitude in iterations */ double SPHI0; /* sin of start or old geodetic latitude in iterations */ double CPHI; /* cos of searched geodetic latitude */ double SPHI; /* sin of searched geodetic latitude */ double SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ int At_Pole; /* indicates location is in polar region */ int iter; /* # of continous iteration, max. 30 is always enough (s.a.) */ At_Pole = FALSE; P = sqrt(X*X+Y*Y); RR = sqrt(X*X+Y*Y+Z*Z); /* special cases for latitude and longitude */ if (P/gi->Geocent_a < genau) { /* special case, if P=0. (X=0., Y=0.) */ At_Pole = TRUE; *Longitude = 0.; /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis * of ellipsoid (=center of mass), Latitude becomes PI/2 */ if (RR/gi->Geocent_a < genau) { *Latitude = PI_OVER_2; *Height = -gi->Geocent_b; return ; } } else { /* ellipsoidal (geodetic) longitude * interval: -PI < Longitude <= +PI */ *Longitude=atan2(Y,X); } /* -------------------------------------------------------------- * Following iterative algorithm was developped by * "Institut für Erdmessung", University of Hannover, July 1988. * Internet: www.ife.uni-hannover.de * Iterative computation of CPHI,SPHI and Height. * Iteration of CPHI and SPHI to 10**-12 radian resp. * 2*10**-7 arcsec. * -------------------------------------------------------------- */ CT = Z/RR; ST = P/RR; RX = 1.0/sqrt(1.0-gi->Geocent_e2*(2.0-gi->Geocent_e2)*ST*ST); CPHI0 = ST*(1.0-gi->Geocent_e2)*RX; SPHI0 = CT*RX; iter = 0; /* loop to find sin(Latitude) resp. Latitude * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ do { iter++; RN = gi->Geocent_a/sqrt(1.0-gi->Geocent_e2*SPHI0*SPHI0); /* ellipsoidal (geodetic) height */ *Height = P*CPHI0+Z*SPHI0-RN*(1.0-gi->Geocent_e2*SPHI0*SPHI0); RK = gi->Geocent_e2*RN/(RN+*Height); RX = 1.0/sqrt(1.0-RK*(2.0-RK)*ST*ST); CPHI = ST*(1.0-RK)*RX; SPHI = CT*RX; SDPHI = SPHI*CPHI0-CPHI*SPHI0; CPHI0 = CPHI; SPHI0 = SPHI; } while (SDPHI*SDPHI > genau2 && iter < maxiter); /* ellipsoidal (geodetic) latitude */ *Latitude=atan(SPHI/fabs(CPHI)); return; #endif /* defined(USE_ITERATIVE_METHOD) */ } /* END OF Convert_Geocentric_To_Geodetic */ merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/geocent.h000066400000000000000000000142131177067165300304550ustar00rootroot00000000000000#ifndef GEOCENT_H #define GEOCENT_H /***************************************************************************/ /* RSC IDENTIFIER: GEOCENTRIC * * ABSTRACT * * This component provides conversions between Geodetic coordinates (latitude, * longitude in radians and height in meters) and Geocentric coordinates * (X, Y, Z) in meters. * * ERROR HANDLING * * This component checks parameters for valid values. If an invalid value * is found, the error code is combined with the current error code using * the bitwise or. This combining allows multiple error codes to be * returned. The possible error codes are: * * GEOCENT_NO_ERROR : No errors occurred in function * GEOCENT_LAT_ERROR : Latitude out of valid range * (-90 to 90 degrees) * GEOCENT_LON_ERROR : Longitude out of valid range * (-180 to 360 degrees) * GEOCENT_A_ERROR : Semi-major axis less than or equal to zero * GEOCENT_B_ERROR : Semi-minor axis less than or equal to zero * GEOCENT_A_LESS_B_ERROR : Semi-major axis less than semi-minor axis * * * REUSE NOTES * * GEOCENTRIC is intended for reuse by any application that performs * coordinate conversions between geodetic coordinates and geocentric * coordinates. * * * REFERENCES * * An Improved Algorithm for Geocentric to Geodetic Coordinate Conversion, * Ralph Toms, February 1996 UCRL-JC-123138. * * Further information on GEOCENTRIC can be found in the Reuse Manual. * * GEOCENTRIC originated from : U.S. Army Topographic Engineering Center * Geospatial Information Division * 7701 Telegraph Road * Alexandria, VA 22310-3864 * * LICENSES * * None apply to this component. * * RESTRICTIONS * * GEOCENTRIC has no restrictions. * * ENVIRONMENT * * GEOCENTRIC was tested and certified in the following environments: * * 1. Solaris 2.5 with GCC version 2.8.1 * 2. Windows 95 with MS Visual C++ version 6 * * MODIFICATIONS * * Date Description * ---- ----------- * * */ /***************************************************************************/ /* * DEFINES */ #define GEOCENT_NO_ERROR 0x0000 #define GEOCENT_LAT_ERROR 0x0001 #define GEOCENT_LON_ERROR 0x0002 #define GEOCENT_A_ERROR 0x0004 #define GEOCENT_B_ERROR 0x0008 #define GEOCENT_A_LESS_B_ERROR 0x0010 /***************************************************************************/ /* * FUNCTION PROTOTYPES */ /* ensure proper linkage to c++ programs */ #ifdef __cplusplus extern "C" { #endif typedef struct { double Geocent_a; /* Semi-major axis of ellipsoid in meters */ double Geocent_b; /* Semi-minor axis of ellipsoid */ double Geocent_a2; /* Square of semi-major axis */ double Geocent_b2; /* Square of semi-minor axis */ double Geocent_e2; /* Eccentricity squared */ double Geocent_ep2; /* 2nd eccentricity squared */ } GeocentricInfo; void pj_Init_Geocentric( GeocentricInfo *gi ); long pj_Set_Geocentric_Parameters( GeocentricInfo *gi, double a, double b); /* * The function Set_Geocentric_Parameters receives the ellipsoid parameters * as inputs and sets the corresponding state variables. * * a : Semi-major axis, in meters. (input) * b : Semi-minor axis, in meters. (input) */ void pj_Get_Geocentric_Parameters ( GeocentricInfo *gi, double *a, double *b); /* * The function Get_Geocentric_Parameters returns the ellipsoid parameters * to be used in geocentric coordinate conversions. * * a : Semi-major axis, in meters. (output) * b : Semi-minor axis, in meters. (output) */ long pj_Convert_Geodetic_To_Geocentric ( GeocentricInfo *gi, double Latitude, double Longitude, double Height, double *X, double *Y, double *Z); /* * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), * according to the current ellipsoid parameters. * * Latitude : Geodetic latitude in radians (input) * Longitude : Geodetic longitude in radians (input) * Height : Geodetic height, in meters (input) * X : Calculated Geocentric X coordinate, in meters. (output) * Y : Calculated Geocentric Y coordinate, in meters. (output) * Z : Calculated Geocentric Z coordinate, in meters. (output) * */ void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi, double X, double Y, double Z, double *Latitude, double *Longitude, double *Height); /* * The function Convert_Geocentric_To_Geodetic converts geocentric * coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude, * and height), according to the current ellipsoid parameters. * * X : Geocentric X coordinate, in meters. (input) * Y : Geocentric Y coordinate, in meters. (input) * Z : Geocentric Z coordinate, in meters. (input) * Latitude : Calculated latitude value in radians. (output) * Longitude : Calculated longitude value in radians. (output) * Height : Calculated height value, in meters. (output) */ #ifdef __cplusplus } #endif #endif /* GEOCENT_H */ merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_auth.hpp000066400000000000000000000056671177067165300310400ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_AUTH_HPP #define GGL_PROJECTIONS_IMPL_PJ_AUTH_HPP #include #include namespace ggl { namespace projection { namespace detail { static const double P00 = .33333333333333333333; static const double P01 = .17222222222222222222; static const double P02 = .10257936507936507936; static const double P10 = .06388888888888888888; static const double P11 = .06640211640211640211; static const double P20 = .01641501294219154443; static const int APA_SIZE = 3; /* determine latitude from authalic latitude */ inline void pj_authset(double es, double* APA) { assert(0 != APA); double t = 0; // if (APA = (double *)pj_malloc(APA_SIZE * sizeof(double))) { APA[0] = es * P00; t = es * es; APA[0] += t * P01; APA[1] = t * P10; t *= es; APA[0] += t * P02; APA[1] += t * P11; APA[2] = t * P20; } } inline double pj_authlat(double beta, const double* APA) { assert(0 != APA); const double t = beta + beta; return(beta + APA[0] * std::sin(t) + APA[1] * std::sin(t + t) + APA[2] * std::sin(t + t + t)); } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_AUTH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_datum_set.hpp000066400000000000000000000145171177067165300320560ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP #define GGL_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP #include #include #include #include #include #include namespace ggl { namespace projection { namespace detail { /* SEC_TO_RAD = Pi/180/3600 */ const double SEC_TO_RAD = 4.84813681109535993589914102357e-6; /************************************************************************/ /* pj_datum_set() */ /************************************************************************/ inline void pj_datum_set(std::vector& pvalues, parameters& projdef) { std::string name, towgs84, nadgrids; projdef.datum_type = PJD_UNKNOWN; /* -------------------------------------------------------------------- */ /* Is there a datum definition in the parameter list? If so, */ /* add the defining values to the parameter list. Note that */ /* this will append the ellipse definition as well as the */ /* towgs84= and related parameters. It should also be pointed */ /* out that the addition is permanent rather than temporary */ /* like most other keyword expansion so that the ellipse */ /* definition will last into the pj_ell_set() function called */ /* after this one. */ /* -------------------------------------------------------------------- */ name = pj_param(pvalues, "sdatum").s; if(! name.empty()) { /* find the datum definition */ const int n = sizeof(pj_datums) / sizeof(pj_datums[0]); int index = -1; for (int i = 0; i < n && index == -1; i++) { if(pj_datums[i].id == name) { index = i; } } if (index == -1) { throw proj_exception(-9); } if(! pj_datums[index].ellipse_id.empty()) { std::string entry("ellps="); entry +=pj_datums[index].ellipse_id; pvalues.push_back(pj_mkparam(entry)); } if(! pj_datums[index].defn.empty()) { pvalues.push_back(pj_mkparam(pj_datums[index].defn)); } } /* -------------------------------------------------------------------- */ /* Check for nadgrids parameter. */ /* -------------------------------------------------------------------- */ nadgrids = pj_param(pvalues, "snadgrids").s; towgs84 = pj_param(pvalues, "stowgs84").s; if(! nadgrids.empty()) { /* We don't actually save the value separately. It will continue to exist int he param list for use in pj_apply_gridshift.c */ projdef.datum_type = PJD_GRIDSHIFT; } /* -------------------------------------------------------------------- */ /* Check for towgs84 parameter. */ /* -------------------------------------------------------------------- */ else if(! towgs84.empty()) { int parm_count = 0; int n = sizeof(projdef.datum_params) / sizeof(projdef.datum_params[0]); /* parse out the pvalues */ std::vector parm; boost::split(parm, towgs84, boost::is_any_of(" ,")); for (std::vector::const_iterator it = parm.begin(); it != parm.end() && parm_count < n; ++it) { projdef.datum_params[parm_count++] = atof(it->c_str()); } if( projdef.datum_params[3] != 0.0 || projdef.datum_params[4] != 0.0 || projdef.datum_params[5] != 0.0 || projdef.datum_params[6] != 0.0 ) { projdef.datum_type = PJD_7PARAM; /* transform from arc seconds to radians */ projdef.datum_params[3] *= SEC_TO_RAD; projdef.datum_params[4] *= SEC_TO_RAD; projdef.datum_params[5] *= SEC_TO_RAD; /* transform from parts per million to scaling factor */ projdef.datum_params[6] = (projdef.datum_params[6]/1000000.0) + 1; } else { projdef.datum_type = PJD_3PARAM; } /* Note that pj_init() will later switch datum_type to PJD_WGS84 if shifts are all zero, and ellipsoid is WGS84 or GRS80 */ } } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_DATUM_SET_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_datums.hpp000066400000000000000000000102631177067165300313600ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_DATUMS_HPP #define GGL_PROJECTIONS_IMPL_PJ_DATUMS_HPP #include namespace ggl { namespace projection { namespace detail { /* * The ellipse code must match one from pj_ellps.c. The datum id should * be kept to 12 characters or less if possible. Use the official OGC * datum name for the comments if available. */ static const PJ_DATUMS pj_datums[] = { /* id definition ellipse comments */ /* -- ---------- ------- -------- */ { "WGS84", "towgs84=0,0,0", "WGS84", "" }, { "GGRS87", "towgs84=-199.87,74.79,246.62", "GRS80", "Greek_Geodetic_Reference_System_1987" }, { "NAD83", "towgs84=0,0,0", "GRS80","North_American_Datum_1983" }, { "NAD27", "nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", "clrk66", "North_American_Datum_1927" }, { "potsdam", "towgs84=606.0,23.0,413.0", "bessel", "Potsdam Rauenberg 1950 DHDN" }, { "carthage", "towgs84=-263.0,6.0,431.0", "clark80", "Carthage 1934 Tunisia" }, { "hermannskogel", "towgs84=653.0,-212.0,449.0", "bessel", "Hermannskogel" }, { "ire65", "towgs84=482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", "mod_airy", "Ireland 1965" }, { "nzgd49", "towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993", "intl", "New Zealand Geodetic Datum 1949" }, { "OSGB36", "towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894", "airy", "Airy 1830" } }; static const PJ_PRIME_MERIDIANS pj_prime_meridians[] = { /* id definition */ /* -- ---------- */ { "greenwich", "0dE" }, { "lisbon", "9d07'54.862\"W" }, { "paris", "2d20'14.025\"E" }, { "bogota", "74d04'51.3\"W" }, { "madrid", "3d41'16.58\"W" }, { "rome", "12d27'8.4\"E" }, { "bern", "7d26'22.5\"E" }, { "jakarta", "106d48'27.79\"E" }, { "ferro", "17d40'W" }, { "brussels", "4d22'4.71\"E" }, { "stockholm", "18d3'29.8\"E" }, { "athens", "23d42'58.815\"E" }, { "oslo", "10d43'22.5\"E" } }; }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_DATUMS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_ell_set.hpp000066400000000000000000000136571177067165300315240ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_ELL_SET_HPP #define GGL_PROJECTIONS_IMPL_PJ_ELL_SET_HPP #include #include #include #include namespace ggl { namespace projection { namespace detail { /* set ellipsoid parameters a and es */ static const double SIXTH = .1666666666666666667; /* 1/6 */ static const double RA4 = .04722222222222222222; /* 17/360 */ static const double RA6 = .02215608465608465608; /* 67/3024 */ static const double RV4 = .06944444444444444444; /* 5/72 */ static const double RV6 = .04243827160493827160; /* 55/1296 */ /* initialize geographic shape parameters */ inline void pj_ell_set(std::vector& parameters, double &a, double &es) { int i = 0; double b = 0.0; double e = 0.0; std::string name; /* check for varying forms of ellipsoid input */ a = es = 0.; /* R takes precedence */ if (pj_param(parameters, "tR").i) a = pj_param(parameters, "dR").f; else { /* probable elliptical figure */ /* check if ellps present and temporarily append its values to pl */ name = pj_param(parameters, "sellps").s; if (! name.empty()) { const int n = sizeof(pj_ellps) / sizeof(pj_ellps[0]); int index = -1; for (int i = 0; i < n && index == -1; i++) { if(pj_ellps[i].id == name) { index = i; } } if (index == -1) { throw proj_exception(-9); } parameters.push_back(pj_mkparam(pj_ellps[index].major)); parameters.push_back(pj_mkparam(pj_ellps[index].ell)); } a = pj_param(parameters, "da").f; if (pj_param(parameters, "tes").i) /* eccentricity squared */ es = pj_param(parameters, "des").f; else if (pj_param(parameters, "te").i) { /* eccentricity */ e = pj_param(parameters, "de").f; es = e * e; } else if (pj_param(parameters, "trf").i) { /* recip flattening */ es = pj_param(parameters, "drf").f; if (!es) { throw proj_exception(-10); } es = 1./ es; es = es * (2. - es); } else if (pj_param(parameters, "tf").i) { /* flattening */ es = pj_param(parameters, "df").f; es = es * (2. - es); } else if (pj_param(parameters, "tb").i) { /* minor axis */ b = pj_param(parameters, "db").f; es = 1. - (b * b) / (a * a); } /* else es == 0. and sphere of radius a */ if (!b) b = a * sqrt(1. - es); /* following options turn ellipsoid into equivalent sphere */ if (pj_param(parameters, "bR_A").i) { /* sphere--area of ellipsoid */ a *= 1. - es * (SIXTH + es * (RA4 + es * RA6)); es = 0.; } else if (pj_param(parameters, "bR_V").i) { /* sphere--vol. of ellipsoid */ a *= 1. - es * (SIXTH + es * (RV4 + es * RV6)); es = 0.; } else if (pj_param(parameters, "bR_a").i) { /* sphere--arithmetic mean */ a = .5 * (a + b); es = 0.; } else if (pj_param(parameters, "bR_g").i) { /* sphere--geometric mean */ a = sqrt(a * b); es = 0.; } else if (pj_param(parameters, "bR_h").i) { /* sphere--harmonic mean */ a = 2. * a * b / (a + b); es = 0.; } else if ((i = pj_param(parameters, "tR_lat_a").i) || /* sphere--arith. */ pj_param(parameters, "tR_lat_g").i) { /* or geom. mean at latitude */ double tmp; tmp = sin(pj_param(parameters, i ? "rR_lat_a" : "rR_lat_g").f); if (fabs(tmp) > HALFPI) { throw proj_exception(-11); } tmp = 1. - es * tmp * tmp; a *= i ? .5 * (1. - es + tmp) / ( tmp * sqrt(tmp)) : sqrt(1. - es) / tmp; es = 0.; } } /* some remaining checks */ if (es < 0.) { throw proj_exception(-12); } if (a <= 0.) { throw proj_exception(-13); } } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_ELL_SET_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_ellps.hpp000066400000000000000000000121111177067165300311740ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_ELLPS_HPP #define GGL_PROJECTIONS_IMPL_PJ_ELLPS_HPP #include namespace ggl { namespace projection { namespace detail { static const PJ_ELLPS pj_ellps[] = { { "MERIT", "a=6378137.0", "rf=298.257", "MERIT 1983" }, { "SGS85", "a=6378136.0", "rf=298.257", "Soviet Geodetic System 85" }, { "GRS80", "a=6378137.0", "rf=298.257222101", "GRS 1980(IUGG, 1980)" }, { "IAU76", "a=6378140.0", "rf=298.257", "IAU 1976" }, { "airy", "a=6377563.396", "b=6356256.910", "Airy 1830" }, { "APL4.9", "a=6378137.0.", "rf=298.25", "Appl. Physics. 1965" }, { "NWL9D", "a=6378145.0.", "rf=298.25", "Naval Weapons Lab., 1965" }, { "mod_airy", "a=6377340.189", "b=6356034.446", "Modified Airy" }, { "andrae", "a=6377104.43", "rf=300.0", "Andrae 1876 (Den., Iclnd.)" }, { "aust_SA", "a=6378160.0", "rf=298.25", "Australian Natl & S. Amer. 1969" }, { "GRS67", "a=6378160.0", "rf=298.2471674270", "GRS 67(IUGG 1967)" }, { "bessel", "a=6377397.155", "rf=299.1528128", "Bessel 1841" }, { "bess_nam", "a=6377483.865", "rf=299.1528128", "Bessel 1841 (Namibia)" }, { "clrk66", "a=6378206.4", "b=6356583.8", "Clarke 1866" }, { "clrk80", "a=6378249.145", "rf=293.4663", "Clarke 1880 mod." }, { "CPM", "a=6375738.7", "rf=334.29", "Comm. des Poids et Mesures 1799" }, { "delmbr", "a=6376428.", "rf=311.5", "Delambre 1810 (Belgium)" }, { "engelis", "a=6378136.05", "rf=298.2566", "Engelis 1985" }, { "evrst30", "a=6377276.345", "rf=300.8017", "Everest 1830" }, { "evrst48", "a=6377304.063", "rf=300.8017", "Everest 1948" }, { "evrst56", "a=6377301.243", "rf=300.8017", "Everest 1956" }, { "evrst69", "a=6377295.664", "rf=300.8017", "Everest 1969" }, { "evrstSS", "a=6377298.556", "rf=300.8017", "Everest (Sabah & Sarawak)" }, { "fschr60", "a=6378166.", "rf=298.3", "Fischer (Mercury Datum) 1960" }, { "fschr60m", "a=6378155.", "rf=298.3", "Modified Fischer 1960" }, { "fschr68", "a=6378150.", "rf=298.3", "Fischer 1968" }, { "helmert", "a=6378200.", "rf=298.3", "Helmert 1906" }, { "hough", "a=6378270.0", "rf=297.", "Hough" }, { "intl", "a=6378388.0", "rf=297.", "International 1909 (Hayford)" }, { "krass", "a=6378245.0", "rf=298.3", "Krassovsky, 1942" }, { "kaula", "a=6378163.", "rf=298.24", "Kaula 1961" }, { "lerch", "a=6378139.", "rf=298.257", "Lerch 1979" }, { "mprts", "a=6397300.", "rf=191.", "Maupertius 1738" }, { "new_intl", "a=6378157.5", "b=6356772.2","New International 1967" }, { "plessis", "a=6376523.", "b=6355863.", "Plessis 1817 (France)" }, { "SEasia", "a=6378155.0", "b=6356773.3205", "Southeast Asia" }, { "walbeck", "a=6376896.0", "b=6355834.8467", "Walbeck" }, { "WGS60", "a=6378165.0", "rf=298.3", "WGS 60" }, { "WGS66", "a=6378145.0", "rf=298.25", "WGS 66" }, { "WGS72", "a=6378135.0", "rf=298.26", "WGS 72" }, { "WGS84", "a=6378137.0", "rf=298.257223563", "WGS 84" }, { "sphere", "a=6370997.0", "b=6370997.0", "Normal Sphere (r=6370997)" } }; }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_ELLPS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_fwd.hpp000066400000000000000000000062521177067165300306460ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_FWD_HPP #define GGL_PROJECTIONS_IMPL_PJ_FWD_HPP #include #include #include /* general forward projection */ namespace ggl { namespace projection { namespace detail { namespace forwrd { static const double EPS = 1.0e-12; } /* forward projection entry */ template inline void pj_fwd(const Prj& prj, const P& par, const LL& ll, XY& xy) { using namespace detail; double lp_lon = ggl::get_as_radian<0>(ll); double lp_lat = ggl::get_as_radian<1>(ll); const double t = std::fabs(lp_lat) - HALFPI; /* check for forward and latitude or longitude overange */ if (t > forwrd::EPS || std::fabs(lp_lon) > 10.) { throw proj_exception(); } if (std::fabs(t) <= forwrd::EPS) { lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; } else if (par.geoc) { lp_lat = std::atan(par.rone_es * std::tan(lp_lat)); } lp_lon -= par.lam0; /* compute del lp.lam */ if (! par.over) { lp_lon = adjlon(lp_lon); /* post_forward del longitude */ } double x = 0; double y = 0; prj.fwd(lp_lon, lp_lat, x, y); ggl::set<0>(xy, par.fr_meter * (par.a * x + par.x0)); ggl::set<1>(xy, par.fr_meter * (par.a * y + par.y0)); } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_FWD_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_gauss.hpp000066400000000000000000000072331177067165300312100ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_GAUSS_HPP #define GGL_PROJECTIONS_IMPL_PJ_GAUSS_HPP namespace ggl { namespace projection { namespace detail { namespace gauss { static const int MAX_ITER = 20; struct GAUSS { double C; double K; double e; double ratexp; }; static const double DEL_TOL = 1e-14; inline double srat(double esinp, double exp) { return (std::pow((1.0 - esinp) / (1.0 + esinp), exp)); } inline GAUSS gauss_ini(double e, double phi0, double &chi, double &rc) { using std::asin; using std::cos; using std::sin; using std::sqrt; using std::tan; double sphi = 0; double cphi = 0; double es = 0; GAUSS en; es = e * e; en.e = e; sphi = sin(phi0); cphi = cos(phi0); cphi *= cphi; rc = sqrt(1.0 - es) / (1.0 - es * sphi * sphi); en.C = sqrt(1.0 + es * cphi * cphi / (1.0 - es)); chi = asin(sphi / en.C); en.ratexp = 0.5 * en.C * e; en.K = tan(0.5 * chi + detail::FORTPI) / (pow(tan(0.5 * phi0 + detail::FORTPI), en.C) * srat(en.e * sphi, en.ratexp)); return en; } template inline void gauss(const GAUSS& en, T& lam, T& phi) { phi = 2.0 * std::atan(en.K * std::pow(std::tan(0.5 * phi + FORTPI), en.C) * srat(en.e * std::sin(phi), en.ratexp) ) - HALFPI; lam *= en.C; } template inline void inv_gauss(const GAUSS& en, T& lam, T& phi) { lam /= en.C; const double num = std::pow(std::tan(0.5 * phi + FORTPI) / en.K, 1.0 / en.C); int i = 0; for (i = MAX_ITER; i; --i) { const double elp_phi = 2.0 * std::atan(num * srat(en.e * std::sin(phi), - 0.5 * en.e)) - HALFPI; if (std::fabs(elp_phi - phi) < DEL_TOL) { break; } phi = elp_phi; } /* convergence failed */ if (!i) { throw proj_exception(-17); } } }}}} // namespace ggl::projection::detail::gauss #endif // GGL_PROJECTIONS_IMPL_PJ_GAUSS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_init.hpp000066400000000000000000000230531177067165300310270ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_INIT_HPP #define GGL_PROJECTIONS_IMPL_PJ_INIT_HPP #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { namespace projection { namespace detail { /************************************************************************/ /* pj_init() */ /* */ /* Main entry point for initialing a PJ projections */ /* definition. Note that the projection specific function is */ /* called to do the initial allocation so it can be created */ /* large enough to hold projection specific parameters. */ /************************************************************************/ template parameters pj_init(const R& arguments, bool use_defaults = true) { parameters pin; for (std::vector::const_iterator it = boost::begin(arguments); it != boost::end(arguments); it++) { pin.params.push_back(pj_mkparam(*it)); } /* check if +init present */ if (pj_param(pin.params, "tinit").i) { // maybe TODO: handle "init" parameter //if (!(curr = get_init(&arguments, curr, pj_param(pin.params, "sinit").s))) } // find projection -> implemented in projection factory pin.name = pj_param(pin.params, "sproj").s; //if (pin.name.empty()) //{ throw proj_exception(-4); } // set defaults, unless inhibited // GL-Addition, if use_defaults is false then defaults are ignored if (use_defaults && ! pj_param(pin.params, "bno_defs").i) { // proj4 gets defaults from "proj_def.dat", file of 94/02/23 with a few defaults. // Here manually if (pin.name == "lcc") { pin.params.push_back(pj_mkparam("lat_1=33")); pin.params.push_back(pj_mkparam("lat_2=45")); } else if (pin.name == "aea") { pin.params.push_back(pj_mkparam("lat_1=29.5")); pin.params.push_back(pj_mkparam("lat_2=45.5 ")); } else { //ellps=WGS84 } //curr = get_defaults(&arguments, curr, name); } /* allocate projection structure */ // done by constructor: // pin.is_latlong = 0; // pin.is_geocent = 0; // pin.long_wrap_center = 0.0; /* set datum parameters */ pj_datum_set(pin.params, pin); /* set ellipsoid/sphere parameters */ pj_ell_set(pin.params, pin.a, pin.es); pin.a_orig = pin.a; pin.es_orig = pin.es; pin.e = sqrt(pin.es); pin.ra = 1. / pin.a; pin.one_es = 1. - pin.es; if (pin.one_es == 0.) { throw proj_exception(-6); } pin.rone_es = 1./pin.one_es; /* Now that we have ellipse information check for WGS84 datum */ if( pin.datum_type == PJD_3PARAM && pin.datum_params[0] == 0.0 && pin.datum_params[1] == 0.0 && pin.datum_params[2] == 0.0 && pin.a == 6378137.0 && fabs(pin.es - 0.006694379990) < 0.000000000050 )/*WGS84/GRS80*/ { pin.datum_type = PJD_WGS84; } /* set pin.geoc coordinate system */ pin.geoc = (pin.es && pj_param(pin.params, "bgeoc").i); /* over-ranging flag */ pin.over = pj_param(pin.params, "bover").i; /* longitude center for wrapping */ pin.long_wrap_center = pj_param(pin.params, "rlon_wrap").f; /* central meridian */ pin.lam0 = pj_param(pin.params, "rlon_0").f; /* central latitude */ pin.phi0 = pj_param(pin.params, "rlat_0").f; /* false easting and northing */ pin.x0 = pj_param(pin.params, "dx_0").f; pin.y0 = pj_param(pin.params, "dy_0").f; /* general scaling factor */ if (pj_param(pin.params, "tk_0").i) pin.k0 = pj_param(pin.params, "dk_0").f; else if (pj_param(pin.params, "tk").i) pin.k0 = pj_param(pin.params, "dk").f; else pin.k0 = 1.; if (pin.k0 <= 0.) { throw proj_exception(-31); } /* set units */ std::string s; std::string units = pj_param(pin.params, "sunits").s; if (! units.empty()) { const int n = sizeof(pj_units) / sizeof(pj_units[0]); int index = -1; for (int i = 0; i < n && index == -1; i++) { if(pj_units[i].id == units) { index = i; } } if (index == -1) { throw proj_exception(-7); } s = pj_units[index].to_meter; } if (s.empty()) { s = pj_param(pin.params, "sto_meter").s; } if (! s.empty()) { // TODO: IMPLEMENT SPLIT pin.to_meter = atof(s.c_str()); //if (*s == '/') /* ratio number */ // pin.to_meter /= strtod(++s, 0); pin.fr_meter = 1. / pin.to_meter; } else { pin.to_meter = pin.fr_meter = 1.; } /* prime meridian */ s.clear(); std::string pm = pj_param(pin.params, "spm").s; if (! pm.empty()) { std::string value; int n = sizeof(pj_prime_meridians) / sizeof(pj_prime_meridians[0]); int index = -1; for (int i = 0; i < n && index == -1; i++) { if(pj_prime_meridians[i].id == pm) { value = pj_prime_meridians[i].defn; index = i; } } if (index == -1) { throw proj_exception(-7); } if (value.empty()) { throw proj_exception(-46); } ggl::strategy::dms_parser parser; pin.from_greenwich = parser(value.c_str()); } else { pin.from_greenwich = 0.0; } return pin; } /************************************************************************/ /* pj_init_plus() */ /* */ /* Same as pj_init() except it takes one argument string with */ /* individual arguments preceeded by '+', such as "+proj=utm */ /* +zone=11 +ellps=WGS84". */ /************************************************************************/ inline parameters pj_init_plus(const std::string& definition, bool use_defaults = true) { static const char* sep = " +"; /* split into arguments based on '+' and trim white space */ // boost::split splits on one character, here it should be on " +", so implementation below // todo: put in different routine or sort out std::vector arguments; std::string def = boost::trim_copy(definition); boost::trim_left_if(def, boost::is_any_of(sep)); std::string::size_type loc = def.find(sep); while (loc != std::string::npos) { std::string par = def.substr(0, loc); boost::trim(par); if (! par.empty()) { arguments.push_back(par); } def.erase(0, loc); boost::trim_left_if(def, boost::is_any_of(sep)); loc = def.find(sep); } if (! def.empty()) { arguments.push_back(def); } /*boost::split(arguments, definition, boost::is_any_of("+")); for (std::vector::iterator it = arguments.begin(); it != arguments.end(); it++) { boost::trim(*it); }*/ return pj_init(arguments, use_defaults); } }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_INIT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_inv.hpp000066400000000000000000000055541177067165300306660ustar00rootroot00000000000000#ifndef _PROJECTIONS_PJ_INV_HPP #define _PROJECTIONS_PJ_INV_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include /* general inverse projection */ namespace ggl { namespace projection { namespace detail { namespace inv { static const double EPS = 1.0e-12; } /* inverse projection entry */ template void pj_inv(const PRJ& prj, const PAR& par, const XY& xy, LL& ll) { /* can't do as much preliminary checking as with forward */ /* descale and de-offset */ double xy_x = (ggl::get<0>(xy) * par.to_meter - par.x0) * par.ra; double xy_y = (ggl::get<1>(xy) * par.to_meter - par.y0) * par.ra; double lon = 0, lat = 0; prj.inv(xy_x, xy_y, lon, lat); /* inverse project */ lon += par.lam0; /* reduce from del lp.lam */ if (!par.over) lon = adjlon(lon); /* adjust longitude to CM */ if (par.geoc && fabs(fabs(lat)-HALFPI) > inv::EPS) lat = atan(par.one_es * tan(lat)); ggl::set_from_radian<0>(ll, lon); ggl::set_from_radian<1>(ll, lat); } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_mlfn.hpp000066400000000000000000000074061177067165300310240ustar00rootroot00000000000000#ifndef _PROJECTIONS_PJ_MLFN_HPP #define _PROJECTIONS_PJ_MLFN_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. namespace ggl { namespace projection { namespace detail { /* meridinal distance for ellipsoid and inverse ** 8th degree - accurate to < 1e-5 meters when used in conjuction ** with typical major axis values. ** Inverse determines phi to EPS (1e-11) radians, about 1e-6 seconds. */ static const double C00 = 1.; static const double C02 = .25; static const double C04 = .046875; static const double C06 = .01953125; static const double C08 = .01068115234375; static const double C22 = .75; static const double C44 = .46875; static const double C46 = .01302083333333333333; static const double C48 = .00712076822916666666; static const double C66 = .36458333333333333333; static const double C68 = .00569661458333333333; static const double C88 = .3076171875; static const double EPS = 1e-11; static const int MAX_ITER = 10; static const int EN_SIZE = 5; inline void pj_enfn(double es, double* en) { double t; //, *en; //if (en = (double *)pj_malloc(EN_SIZE * sizeof(double))) { en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); en[2] = (t = es * es) * (C44 - es * (C46 + es * C48)); en[3] = (t *= es) * (C66 - es * C68); en[4] = t * es * C88; } // return en; } inline double pj_mlfn(double phi, double sphi, double cphi, const double *en) { cphi *= sphi; sphi *= sphi; return(en[0] * phi - cphi * (en[1] + sphi*(en[2] + sphi*(en[3] + sphi*en[4])))); } inline double pj_inv_mlfn(double arg, double es, const double *en) { double s, t, phi, k = 1./(1.-es); int i; phi = arg; for (i = MAX_ITER; i ; --i) { /* rarely goes over 2 iterations */ s = sin(phi); t = 1. - es * s * s; phi -= t = (pj_mlfn(phi, s, cos(phi), en) - arg) * (t * sqrt(t)) * k; if (fabs(t) < EPS) return phi; } throw proj_exception(-17); return phi; } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_msfn.hpp000066400000000000000000000040721177067165300310270ustar00rootroot00000000000000#ifndef _PROJECTIONS_PJ_MSFN_HPP #define _PROJECTIONS_PJ_MSFN_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. namespace ggl { namespace projection { namespace detail { /* determine constant small m */ inline double pj_msfn(double sinphi, double cosphi, double es) { return (cosphi / sqrt (1. - es * sinphi * sinphi)); } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_param.hpp000066400000000000000000000124351177067165300311660ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_PJ_PARAM_HPP #define GGL_PROJECTIONS_PJ_PARAM_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include namespace ggl { namespace projection { namespace detail { /* create pvalue list entry */ inline pvalue pj_mkparam(const std::string& str) { std::string name = str; std::string value; boost::trim_left_if(name, boost::is_any_of("+")); std::string::size_type loc = name.find("="); if (loc != std::string::npos) { value = name.substr(loc + 1); name.erase(loc); } pvalue newitem; newitem.param = name; newitem.s = value; newitem.used = 0; newitem.i = atoi(value.c_str()); newitem.f = atof(value.c_str()); return newitem; } /************************************************************************/ /* pj_param() */ /* */ /* Test for presence or get pvalue value. The first */ /* character in `opt' is a pvalue type which can take the */ /* values: */ /* */ /* `t' - test for presence, return TRUE/FALSE in pvalue.i */ /* `i' - integer value returned in pvalue.i */ /* `d' - simple valued real input returned in pvalue.f */ /* `r' - degrees (DMS translation applied), returned as */ /* radians in pvalue.f */ /* `s' - string returned in pvalue.s */ /* `b' - test for t/T/f/F, return in pvalue.i */ /* */ /************************************************************************/ inline pvalue pj_param(const std::vector& pl, std::string opt) { char type = opt[0]; opt.erase(opt.begin()); pvalue value; /* simple linear lookup */ for (std::vector::const_iterator it = pl.begin(); it != pl.end(); it++) { if (it->param == opt) { //it->used = 1; switch (type) { case 't': value.i = 1; break; case 'i': /* integer input */ value.i = atoi(it->s.c_str()); break; case 'd': /* simple real input */ value.f = atof(it->s.c_str()); break; case 'r': /* degrees input */ { ggl::strategy::dms_parser parser; value.f = parser(it->s.c_str()); } break; case 's': /* char string */ value.s = it->s; break; case 'b': /* boolean */ switch (it->s[0]) { case 'F': case 'f': value.i = 0; break; case '\0': case 'T': case 't': value.i = 1; break; default: value.i = 0; break; } break; } return value; } } value.i = 0; value.f = 0.0; value.s = ""; return value; } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_phi2.hpp000066400000000000000000000046541177067165300307340ustar00rootroot00000000000000#ifndef _PROJECTIONS_PHI2_HPP #define _PROJECTIONS_PHI2_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. namespace ggl { namespace projection { namespace detail { namespace phi2 { static const double TOL = 1.0e-10; static const int N_ITER = 15; } inline double pj_phi2(double ts, double e) { double eccnth, Phi, con, dphi; int i; eccnth = .5 * e; Phi = HALFPI - 2. * atan (ts); i = phi2::N_ITER; do { con = e * sin (Phi); dphi = HALFPI - 2. * atan (ts * pow((1. - con) / (1. + con), eccnth)) - Phi; Phi += dphi; } while ( fabs(dphi) > phi2::TOL && --i); if (i <= 0) throw proj_exception(-18); return Phi; } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_qsfn.hpp000066400000000000000000000053141177067165300310330ustar00rootroot00000000000000#ifndef _PROJECTIONS_PJ_QSFN_HPP #define _PROJECTIONS_PJ_QSFN_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. namespace ggl { namespace projection { namespace detail { /* determine small q */ inline double pj_qsfn(double sinphi, double e, double one_es) { static const double EPSILON = 1.0e-7; if (e >= EPSILON) { double con = e * sinphi; return (one_es * (sinphi / (1. - con * con) - (.5 / e) * log ((1. - con) / (1. + con)))); } else return (sinphi + sinphi); } #define MAX_C 9 struct AUTHALIC { double C[MAX_C], CP[MAX_C], CQ[MAX_C]; }; /** * @brief determine authalic latitude * @param[in] phi geographic latitude * @param[in] a initialized structure pointer * @return authalic latitude */ inline double proj_qsfn(double phi, const AUTHALIC& a) { double s, s2, sum; int i = MAX_C; s = sin(phi); s2 = s * s; sum = a.CQ[MAX_C - 1]; while (--i) sum = a.CQ[i] + s2 * sum; return(s * sum); } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_transform.hpp000066400000000000000000000567311177067165300321100ustar00rootroot00000000000000#ifndef _PROJECTIONS_PJ_TRANSFORM_HPP #define _PROJECTIONS_PJ_TRANSFORM_HPP namespace ggl { namespace projection { namespace detail { #include #include #include #ifndef SRS_WGS84_SEMIMAJOR #define SRS_WGS84_SEMIMAJOR 6378137.0 #endif #ifndef SRS_WGS84_ESQUARED #define SRS_WGS84_ESQUARED 0.0066943799901413165 #endif #define Dx_BF (defn->params().datum_params[0]) #define Dy_BF (defn->params().datum_params[1]) #define Dz_BF (defn->params().datum_params[2]) #define Rx_BF (defn->params().datum_params[3]) #define Ry_BF (defn->params().datum_params[4]) #define Rz_BF (defn->params().datum_params[5]) #define M_BF (defn->params().datum_params[6]) /* datum system errors */ #define PJD_ERR_GEOCENTRIC -45 typedef struct { double u, v; } projUV; typedef void *projPJ; #define projXY projUV #define projLP projUV /* ** This table is intended to indicate for any given error code in ** the range 0 to -44, whether that error will occur for all locations (ie. ** it is a problem with the coordinate system as a whole) in which case the ** value would be 0, or if the problem is with the point being transformed ** in which case the value is 1. ** ** At some point we might want to move this array in with the error message ** list or something, but while experimenting with it this should be fine. */ static const int transient_error[45] = { /* 0 1 2 3 4 5 6 7 8 9 */ /* 0 to 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10 to 19 */ 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, /* 20 to 29 */ 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, /* 30 to 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 40 to 44 */ 0, 0, 0, 0, 0 }; //int pj_apply_gridshift( const char *nadgrids, int inverse, // long point_count, int point_offset, // double *x, double *y, double *z ) //{ // int grid_count = 0; // PJ_GRIDINFO **tables; // int i; // int debug_flag = getenv( "PROJ_DEBUG" ) != NULL; // static int debug_count = 0; // pj_errno = 0; // tables = pj_gridlist_from_nadgrids( nadgrids, &grid_count); // if( tables == NULL || grid_count == 0 ) // return pj_errno; // for( i = 0; i < point_count; i++ ) // { // long io = i * point_offset; // LP input, output; // int itable; // input.phi = y[io]; // input.lam = x[io]; // output.phi = HUGE_VAL; // output.lam = HUGE_VAL; // /* keep trying till we find a table that works */ // for( itable = 0; itable < grid_count; itable++ ) // { // PJ_GRIDINFO *gi = tables[itable]; // struct CTABLE *ct = gi->ct; // /* skip tables that don't match our point at all. */ // if( ct->ll.phi > input.phi || ct->ll.lam > input.lam // || ct->ll.phi + (ct->lim.phi-1) * ct->del.phi < input.phi // || ct->ll.lam + (ct->lim.lam-1) * ct->del.lam < input.lam ) // continue; // /* If we have child nodes, check to see if any of them apply. */ // if( gi->child != NULL ) // { // PJ_GRIDINFO *child; // for( child = gi->child; child != NULL; child = child->next ) // { // struct CTABLE *ct1 = child->ct; // if( ct1->ll.phi > input.phi || ct1->ll.lam > input.lam // || ct1->ll.phi+(ct1->lim.phi-1)*ct1->del.phi < input.phi // || ct1->ll.lam+(ct1->lim.lam-1)*ct1->del.lam < input.lam) // continue; // break; // } // /* we found a more refined child node to use */ // if( child != NULL ) // { // gi = child; // ct = child->ct; // } // } // /* load the grid shift info if we don't have it. */ // if( ct->cvs == NULL && !pj_gridinfo_load( gi ) ) // { // pj_errno = -38; // return pj_errno; // } // // output = nad_cvt( input, inverse, ct ); // if( output.lam != HUGE_VAL ) // { // if( debug_flag && debug_count++ < 20 ) // fprintf( stderr, // "pj_apply_gridshift(): used %s\n", // ct->id ); // break; // } // } // if( output.lam == HUGE_VAL ) // { // if( debug_flag ) // { // fprintf( stderr, // "pj_apply_gridshift(): failed to find a grid shift table for\n" // " location (%.7fdW,%.7fdN)\n", // x[io] * RAD_TO_DEG, // y[io] * RAD_TO_DEG ); // fprintf( stderr, // " tried: %s\n", nadgrids ); // } // // pj_errno = -38; // return pj_errno; // } // else // { // y[io] = output.phi; // x[io] = output.lam; // } // } // return 0; //} /************************************************************************/ /* pj_transform() */ /* */ /* Currently this function doesn't recognise if two projections */ /* are identical (to short circuit reprojection) because it is */ /* difficult to compare PJ structures (since there are some */ /* projection specific components). */ /************************************************************************/ template inline int pj_transform( PRJF *srcdefn, PRJT *dstdefn, long point_count, int point_offset, double *x, double *y, double *z ) { long i; //int need_datum_shift; int pj_errno = 0; if( point_offset == 0 ) point_offset = 1; /* -------------------------------------------------------------------- */ /* Transform geocentric source coordinates to lat/long. */ /* -------------------------------------------------------------------- */ if( srcdefn->params().is_geocent ) { if( z == NULL ) { pj_errno = PJD_ERR_GEOCENTRIC; return PJD_ERR_GEOCENTRIC; } if( srcdefn->params().to_meter != 1.0 ) { for( i = 0; i < point_count; i++ ) { if( x[point_offset*i] != HUGE_VAL ) { x[point_offset*i] *= srcdefn->params().to_meter; y[point_offset*i] *= srcdefn->params().to_meter; } } } if( pj_geocentric_to_geodetic( srcdefn->params().a_orig, srcdefn->params().es_orig, point_count, point_offset, x, y, z ) != 0) return pj_errno; } /* -------------------------------------------------------------------- */ /* Transform source points to lat/long, if they aren't */ /* already. */ /* -------------------------------------------------------------------- */ else if( !srcdefn->params().is_latlong ) { for( i = 0; i < point_count; i++ ) { projXY projected_loc; projLP geodetic_loc; projected_loc.u = x[point_offset*i]; projected_loc.v = y[point_offset*i]; if( projected_loc.u == HUGE_VAL ) continue; point_2d in(projected_loc.u, projected_loc.v); point_ll_deg out; if (!srcdefn->inverse(in, out)) { fprintf( stderr, "pj_transform(): source projection not invertable\n" ); return -17; } geodetic_loc.u = out.lon()*PI/180.; geodetic_loc.v = out.lat()*PI/180.; if( pj_errno != 0 ) { if( (pj_errno != 33 /*EDOM*/ && pj_errno != 34 /*ERANGE*/ ) && (pj_errno > 0 || pj_errno < -44 || point_count == 1 || transient_error[-pj_errno] == 0 ) ) return pj_errno; else { geodetic_loc.u = HUGE_VAL; geodetic_loc.v = HUGE_VAL; } } x[point_offset*i] = geodetic_loc.u; y[point_offset*i] = geodetic_loc.v; } } /* -------------------------------------------------------------------- */ /* But if they are already lat long, adjust for the prime */ /* meridian if there is one in effect. */ /* -------------------------------------------------------------------- */ if( srcdefn->params().from_greenwich != 0.0 ) { for( i = 0; i < point_count; i++ ) { if( x[point_offset*i] != HUGE_VAL ) x[point_offset*i] += srcdefn->params().from_greenwich; } } /* -------------------------------------------------------------------- */ /* Convert datums if needed, and possible. */ /* -------------------------------------------------------------------- */ if( pj_datum_transform( srcdefn, dstdefn, point_count, point_offset, x, y, z ) != 0 ) return pj_errno; /* -------------------------------------------------------------------- */ /* But if they are staying lat long, adjust for the prime */ /* meridian if there is one in effect. */ /* -------------------------------------------------------------------- */ if( dstdefn->params().from_greenwich != 0.0 ) { for( i = 0; i < point_count; i++ ) { if( x[point_offset*i] != HUGE_VAL ) x[point_offset*i] -= dstdefn->params().from_greenwich; } } /* -------------------------------------------------------------------- */ /* Transform destination latlong to geocentric if required. */ /* -------------------------------------------------------------------- */ if( dstdefn->params().is_geocent ) { if( z == NULL ) { pj_errno = PJD_ERR_GEOCENTRIC; return PJD_ERR_GEOCENTRIC; } pj_geodetic_to_geocentric( dstdefn->params().a_orig, dstdefn->params().es_orig, point_count, point_offset, x, y, z ); if( dstdefn->params().fr_meter != 1.0 ) { for( i = 0; i < point_count; i++ ) { if( x[point_offset*i] != HUGE_VAL ) { x[point_offset*i] *= dstdefn->params().fr_meter; y[point_offset*i] *= dstdefn->params().fr_meter; } } } } /* -------------------------------------------------------------------- */ /* Transform destination points to projection coordinates, if */ /* desired. */ /* -------------------------------------------------------------------- */ else if( !dstdefn->params().is_latlong ) { for( i = 0; i < point_count; i++ ) { projXY projected_loc; projLP geodetic_loc; geodetic_loc.u = x[point_offset*i]; geodetic_loc.v = y[point_offset*i]; if( geodetic_loc.u == HUGE_VAL ) continue; point_ll_deg in(longitude<>(geodetic_loc.u*180/PI), latitude<>(geodetic_loc.v*180/PI)); point_2d out; dstdefn->forward(in, out); projected_loc.u = out.x(); projected_loc.v = out.y(); if( pj_errno != 0 ) { if( (pj_errno != 33 /*EDOM*/ && pj_errno != 34 /*ERANGE*/ ) && (pj_errno > 0 || pj_errno < -44 || point_count == 1 || transient_error[-pj_errno] == 0 ) ) return pj_errno; else { projected_loc.u = HUGE_VAL; projected_loc.v = HUGE_VAL; } } x[point_offset*i] = projected_loc.u; y[point_offset*i] = projected_loc.v; } } /* -------------------------------------------------------------------- */ /* If a wrapping center other than 0 is provided, rewrap around */ /* the suggested center (for latlong coordinate systems only). */ /* -------------------------------------------------------------------- */ else if( dstdefn->params().is_latlong && dstdefn->params().long_wrap_center != 0 ) { for( i = 0; i < point_count; i++ ) { if( x[point_offset*i] == HUGE_VAL ) continue; while( x[point_offset*i] < dstdefn->params().long_wrap_center - HALFPI ) x[point_offset*i] += PI; while( x[point_offset*i] > dstdefn->params().long_wrap_center + HALFPI ) x[point_offset*i] -= PI; } } return 0; } /************************************************************************/ /* pj_geodetic_to_geocentric() */ /************************************************************************/ int pj_geodetic_to_geocentric( double a, double es, long point_count, int point_offset, double *x, double *y, double *z ) { double b; int i; GeocentricInfo gi; int pj_errno = 0; if( es == 0.0 ) b = a; else b = a * sqrt(1-es); if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 ) { pj_errno = PJD_ERR_GEOCENTRIC; return pj_errno; } for( i = 0; i < point_count; i++ ) { long io = i * point_offset; if( x[io] == HUGE_VAL ) continue; if( pj_Convert_Geodetic_To_Geocentric( &gi, y[io], x[io], z[io], x+io, y+io, z+io ) != 0 ) { pj_errno = -14; x[io] = y[io] = HUGE_VAL; /* but keep processing points! */ } } return pj_errno; } /************************************************************************/ /* pj_geodetic_to_geocentric() */ /************************************************************************/ int pj_geocentric_to_geodetic( double a, double es, long point_count, int point_offset, double *x, double *y, double *z ) { double b; int i; GeocentricInfo gi; if( es == 0.0 ) b = a; else b = a * sqrt(1-es); if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 ) { int pj_errno = PJD_ERR_GEOCENTRIC; return pj_errno; } for( i = 0; i < point_count; i++ ) { long io = i * point_offset; if( x[io] == HUGE_VAL ) continue; pj_Convert_Geocentric_To_Geodetic( &gi, x[io], y[io], z[io], y+io, x+io, z+io ); } return 0; } /************************************************************************/ /* pj_compare_datums() */ /* */ /* Returns TRUE if the two datums are identical, otherwise */ /* FALSE. */ /************************************************************************/ template int pj_compare_datums( PRJF *srcdefn, PRJT *dstdefn ) { if( srcdefn->params().datum_type != dstdefn->params().datum_type ) { return 0; } else if( srcdefn->params().a_orig != dstdefn->params().a_orig || fabs(srcdefn->params().es_orig - dstdefn->params().es_orig) > 0.000000000050 ) { /* the tolerence for es is to ensure that GRS80 and WGS84 are considered identical */ return 0; } else if( srcdefn->params().datum_type == PJD_3PARAM ) { return (srcdefn->params().datum_params[0] == dstdefn->params().datum_params[0] && srcdefn->params().datum_params[1] == dstdefn->params().datum_params[1] && srcdefn->params().datum_params[2] == dstdefn->params().datum_params[2]); } else if( srcdefn->params().datum_type == PJD_7PARAM ) { return (srcdefn->params().datum_params[0] == dstdefn->params().datum_params[0] && srcdefn->params().datum_params[1] == dstdefn->params().datum_params[1] && srcdefn->params().datum_params[2] == dstdefn->params().datum_params[2] && srcdefn->params().datum_params[3] == dstdefn->params().datum_params[3] && srcdefn->params().datum_params[4] == dstdefn->params().datum_params[4] && srcdefn->params().datum_params[5] == dstdefn->params().datum_params[5] && srcdefn->params().datum_params[6] == dstdefn->params().datum_params[6]); } else if( srcdefn->params().datum_type == PJD_GRIDSHIFT ) { return strcmp( pj_param(srcdefn->params().params,"snadgrids").s.c_str(), pj_param(dstdefn->params().params,"snadgrids").s.c_str() ) == 0; } else return 1; } /************************************************************************/ /* pj_geocentic_to_wgs84() */ /************************************************************************/ template int pj_geocentric_to_wgs84( PJ *defn, long point_count, int point_offset, double *x, double *y, double *z ) { int i; //int pj_errno = 0; if( defn->params().datum_type == PJD_3PARAM ) { for( i = 0; i < point_count; i++ ) { long io = i * point_offset; if( x[io] == HUGE_VAL ) continue; x[io] = x[io] + Dx_BF; y[io] = y[io] + Dy_BF; z[io] = z[io] + Dz_BF; } } else if( defn->params().datum_type == PJD_7PARAM ) { for( i = 0; i < point_count; i++ ) { long io = i * point_offset; double x_out, y_out, z_out; if( x[io] == HUGE_VAL ) continue; x_out = M_BF*( x[io] - Rz_BF*y[io] + Ry_BF*z[io]) + Dx_BF; y_out = M_BF*( Rz_BF*x[io] + y[io] - Rx_BF*z[io]) + Dy_BF; z_out = M_BF*(-Ry_BF*x[io] + Rx_BF*y[io] + z[io]) + Dz_BF; x[io] = x_out; y[io] = y_out; z[io] = z_out; } } return 0; } /************************************************************************/ /* pj_geocentic_from_wgs84() */ /************************************************************************/ template int pj_geocentric_from_wgs84( PJ *defn, long point_count, int point_offset, double *x, double *y, double *z ) { int i; //int pj_errno = 0; if( defn->params().datum_type == PJD_3PARAM ) { for( i = 0; i < point_count; i++ ) { long io = i * point_offset; if( x[io] == HUGE_VAL ) continue; x[io] = x[io] - Dx_BF; y[io] = y[io] - Dy_BF; z[io] = z[io] - Dz_BF; } } else if( defn->params().datum_type == PJD_7PARAM ) { for( i = 0; i < point_count; i++ ) { long io = i * point_offset; double x_tmp, y_tmp, z_tmp; if( x[io] == HUGE_VAL ) continue; x_tmp = (x[io] - Dx_BF) / M_BF; y_tmp = (y[io] - Dy_BF) / M_BF; z_tmp = (z[io] - Dz_BF) / M_BF; x[io] = x_tmp + Rz_BF*y_tmp - Ry_BF*z_tmp; y[io] = -Rz_BF*x_tmp + y_tmp + Rx_BF*z_tmp; z[io] = Ry_BF*x_tmp - Rx_BF*y_tmp + z_tmp; } } return 0; } /************************************************************************/ /* pj_datum_transform() */ /* */ /* The input should be long/lat/z coordinates in radians in the */ /* source datum, and the output should be long/lat/z */ /* coordinates in radians in the destination datum. */ /************************************************************************/ template int pj_datum_transform( PRJF *srcdefn, PRJT *dstdefn, long point_count, int point_offset, double *x, double *y, double *z ) { double src_a, src_es, dst_a, dst_es; int z_is_temp = FALSE; int pj_errno = 0; /* -------------------------------------------------------------------- */ /* We cannot do any meaningful datum transformation if either */ /* the source or destination are of an unknown datum type */ /* (ie. only a +ellps declaration, no +datum). This is new */ /* behavior for PROJ 4.6.0. */ /* -------------------------------------------------------------------- */ if( srcdefn->params().datum_type == PJD_UNKNOWN || dstdefn->params().datum_type == PJD_UNKNOWN ) return 0; /* -------------------------------------------------------------------- */ /* Short cut if the datums are identical. */ /* -------------------------------------------------------------------- */ if( pj_compare_datums( srcdefn, dstdefn ) ) return 0; src_a = srcdefn->params().a_orig; src_es = srcdefn->params().es_orig; dst_a = dstdefn->params().a_orig; dst_es = dstdefn->params().es_orig; /* -------------------------------------------------------------------- */ /* Create a temporary Z array if one is not provided. */ /* -------------------------------------------------------------------- */ if( z == NULL ) { int bytes = sizeof(double) * point_count * point_offset; z = (double *) malloc(bytes); memset( z, 0, bytes ); z_is_temp = TRUE; } #define CHECK_RETURN {if( pj_errno != 0 && (pj_errno > 0 || transient_error[-pj_errno] == 0) ) { if( z_is_temp ) free(z); return pj_errno; }} /* -------------------------------------------------------------------- */ /* If this datum requires grid shifts, then apply it to geodetic */ /* coordinates. */ /* -------------------------------------------------------------------- */ //if( srcdefn->params().datum_type == PJD_GRIDSHIFT ) //{ // pj_apply_gridshift( pj_param(srcdefn->params().params,"snadgrids").s, 0, // point_count, point_offset, x, y, z ); // CHECK_RETURN; // src_a = SRS_WGS84_SEMIMAJOR; // src_es = SRS_WGS84_ESQUARED; //} //if( dstdefn->params().datum_type == PJD_GRIDSHIFT ) //{ // dst_a = SRS_WGS84_SEMIMAJOR; // dst_es = SRS_WGS84_ESQUARED; //} /* ==================================================================== */ /* Do we need to go through geocentric coordinates? */ /* ==================================================================== */ if( src_es != dst_es || src_a != dst_a || srcdefn->params().datum_type == PJD_3PARAM || srcdefn->params().datum_type == PJD_7PARAM || dstdefn->params().datum_type == PJD_3PARAM || dstdefn->params().datum_type == PJD_7PARAM) { /* -------------------------------------------------------------------- */ /* Convert to geocentric coordinates. */ /* -------------------------------------------------------------------- */ pj_geodetic_to_geocentric( src_a, src_es, point_count, point_offset, x, y, z ); CHECK_RETURN; /* -------------------------------------------------------------------- */ /* Convert between datums. */ /* -------------------------------------------------------------------- */ if( srcdefn->params().datum_type == PJD_3PARAM || srcdefn->params().datum_type == PJD_7PARAM ) { pj_geocentric_to_wgs84( srcdefn, point_count, point_offset,x,y,z); CHECK_RETURN; } if( dstdefn->params().datum_type == PJD_3PARAM || dstdefn->params().datum_type == PJD_7PARAM ) { pj_geocentric_from_wgs84( dstdefn, point_count,point_offset,x,y,z); CHECK_RETURN; } /* -------------------------------------------------------------------- */ /* Convert back to geodetic coordinates. */ /* -------------------------------------------------------------------- */ pj_geocentric_to_geodetic( dst_a, dst_es, point_count, point_offset, x, y, z ); CHECK_RETURN; } /* -------------------------------------------------------------------- */ /* Apply grid shift to destination if required. */ /* -------------------------------------------------------------------- */ //if( dstdefn->params().datum_type == PJD_GRIDSHIFT ) //{ // pj_apply_gridshift( pj_param(dstdefn->params().params,"snadgrids").s, 1, // point_count, point_offset, x, y, z ); // CHECK_RETURN; //} if( z_is_temp ) free( z ); return 0; } } } } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_tsfn.hpp000066400000000000000000000042711177067165300310370ustar00rootroot00000000000000#ifndef _PROJECTIONS_PJ_TSFN_HPP #define _PROJECTIONS_PJ_TSFN_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include namespace ggl { namespace projection { namespace detail { /* determine small t */ inline double pj_tsfn(double phi, double sinphi, double e) { sinphi *= e; return (tan (.5 * (HALFPI - phi)) / pow((1. - sinphi) / (1. + sinphi), .5 * e)); } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_units.hpp000066400000000000000000000065361177067165300312350ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PJ_UNITS_HPP #define GGL_PROJECTIONS_IMPL_PJ_UNITS_HPP #include namespace ggl { namespace projection { namespace detail { /* Field 2 that contains the multiplier to convert named units to meters ** may be expressed by either a simple floating point constant or a ** numerator/denomenator values (e.g. 1/1000) */ static const PJ_UNITS pj_units[] = { { "km", "1000.", "Kilometer" }, { "m", "1.", "Meter" }, { "dm", "1/10", "Decimeter" }, { "cm", "1/100", "Centimeter" }, { "mm", "1/1000", "Millimeter" }, { "kmi", "1852.0", "International Nautical Mile" }, { "in", "0.0254", "International Inch" }, { "ft", "0.3048", "International Foot" }, { "yd", "0.9144", "International Yard" }, { "mi", "1609.344", "International Statute Mile" }, { "fath", "1.8288", "International Fathom" }, { "ch", "20.1168", "International Chain" }, { "link", "0.201168", "International Link" }, { "us-in", "1./39.37", "U.S. Surveyor's Inch" }, { "us-ft", "0.304800609601219", "U.S. Surveyor's Foot" }, { "us-yd", "0.914401828803658", "U.S. Surveyor's Yard" }, { "us-ch", "20.11684023368047", "U.S. Surveyor's Chain" }, { "us-mi", "1609.347218694437", "U.S. Surveyor's Statute Mile" }, { "ind-yd", "0.91439523", "Indian Yard" }, { "ind-ft", "0.30479841", "Indian Foot" }, { "ind-ch", "20.11669506", "Indian Chain" } }; }}} // namespace ggl::projection::impl #endif // GGL_PROJECTIONS_IMPL_PJ_UNITS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/pj_zpoly1.hpp000066400000000000000000000065171177067165300313300ustar00rootroot00000000000000#ifndef _PROJECTIONS_ZPOLY1_HPP #define _PROJECTIONS_ZPOLY1_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include namespace ggl { namespace projection { namespace detail { /* evaluate complex polynomial */ /* note: coefficients are always from C_1 to C_n ** i.e. C_0 == (0., 0) ** n should always be >= 1 though no checks are made */ inline COMPLEX pj_zpoly1(COMPLEX z, COMPLEX *C, int n) { COMPLEX a; double t; a = *(C += n); while (n-- > 0) { a.r = (--C)->r + z.r * (t = a.r) - z.i * a.i; a.i = C->i + z.r * a.i + z.i * t; } a.r = z.r * (t = a.r) - z.i * a.i; a.i = z.r * a.i + z.i * t; return a; } /* evaluate complex polynomial and derivative */ inline COMPLEX pj_zpolyd1(COMPLEX z, COMPLEX *C, int n, COMPLEX *der) { double t; bool first = true; COMPLEX a = *(C += n); COMPLEX b = a; while (n-- > 0) { if (first) { first = false; } else { b.r = a.r + z.r * (t = b.r) - z.i * b.i; b.i = a.i + z.r * b.i + z.i * t; } a.r = (--C)->r + z.r * (t = a.r) - z.i * a.i; a.i = C->i + z.r * a.i + z.i * t; } b.r = a.r + z.r * (t = b.r) - z.i * b.i; b.i = a.i + z.r * b.i + z.i * t; a.r = z.r * (t = a.r) - z.i * a.i; a.i = z.r * a.i + z.i * t; *der = b; return a; } }}} // namespace ggl::projection::impl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/proj_mdist.hpp000066400000000000000000000102541177067165300315440ustar00rootroot00000000000000#ifndef _PROJECTIONS_PROJ_MDIST_HPP #define _PROJECTIONS_PROJ_MDIST_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. namespace ggl { namespace projection { namespace detail { static const int MDIST_MAX_ITER = 20; struct MDIST { int nb; double es; double E; double b[MDIST_MAX_ITER]; }; inline void proj_mdist_ini(double es, MDIST& b) { double numf, numfi, twon1, denf, denfi, ens, T, twon; double den, El, Es; double E[MDIST_MAX_ITER]; int i, j; /* generate E(e^2) and its terms E[] */ ens = es; numf = twon1 = denfi = 1.; denf = 1.; twon = 4.; Es = El = E[0] = 1.; for (i = 1; i < MDIST_MAX_ITER ; ++i) { numf *= (twon1 * twon1); den = twon * denf * denf * twon1; T = numf/den; Es -= (E[i] = T * ens); ens *= es; twon *= 4.; denf *= ++denfi; twon1 += 2.; if (Es == El) /* jump out if no change */ break; El = Es; } b.nb = i - 1; b.es = es; b.E = Es; /* generate b_n coefficients--note: collapse with prefix ratios */ b.b[0] = Es = 1. - Es; numf = denf = 1.; numfi = 2.; denfi = 3.; for (j = 1; j < i; ++j) { Es -= E[j]; numf *= numfi; denf *= denfi; b.b[j] = Es * numf / denf; numfi += 2.; denfi += 2.; } } inline double proj_mdist(double phi, double sphi, double cphi, const MDIST& b) { double sc, sum, sphi2, D; int i; sc = sphi * cphi; sphi2 = sphi * sphi; D = phi * b.E - b.es * sc / sqrt(1. - b.es * sphi2); sum = b.b[i = b.nb]; while (i) sum = b.b[--i] + sphi2 * sum; return(D + sc * sum); } inline double proj_inv_mdist(double dist, const MDIST& b) { static const double TOL = 1e-14; double s, t, phi, k; int i; k = 1./(1.- b.es); i = MDIST_MAX_ITER; phi = dist; while ( i-- ) { s = sin(phi); t = 1. - b.es * s * s; phi -= t = (proj_mdist(phi, s, cos(phi), b) - dist) * (t * sqrt(t)) * k; if (fabs(t) < TOL) /* that is no change */ return phi; } /* convergence failed */ throw proj_exception(-17); } } }} #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/impl/projects.hpp000066400000000000000000000132211177067165300312200ustar00rootroot00000000000000// Generic Geometry Library - projections (based on PROJ4) // This file is manually converted from PROJ4 (projects.h) // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #ifndef GGL_PROJECTIONS_IMPL_PROJECTS_HPP #define GGL_PROJECTIONS_IMPL_PROJECTS_HPP #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { /* some useful constants */ static const double HALFPI = 1.5707963267948966; static const double FORTPI = 0.78539816339744833; static const double PI = 3.14159265358979323846; static const double TWOPI = 6.2831853071795864769; static const double RAD_TO_DEG = 57.29577951308232; static const double DEG_TO_RAD = .0174532925199432958; static const int PJD_UNKNOWN =0; static const int PJD_3PARAM = 1; static const int PJD_7PARAM = 2; static const int PJD_GRIDSHIFT = 3; static const int PJD_WGS84 = 4; /* WGS84 (or anything considered equivelent) */ struct pvalue { std::string param; int used; int i; double f; std::string s; }; struct pj_const_pod { int over; /* over-range flag */ int geoc; /* geocentric latitude flag */ int is_latlong; /* proj=latlong ... not really a projection at all */ int is_geocent; /* proj=geocent ... not really a projection at all */ double a, /* major axis or radius if es==0 */ a_orig, /* major axis before any +proj related adjustment */ es, /* e ^ 2 */ es_orig, /* es before any +proj related adjustment */ e, /* eccentricity */ ra, /* 1/A */ one_es, /* 1 - e^2 */ rone_es, /* 1/one_es */ lam0, phi0, /* central longitude, latitude */ x0, y0, /* easting and northing */ k0, /* general scaling factor */ to_meter, fr_meter; /* cartesian scaling */ int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */ double datum_params[7]; double from_greenwich; /* prime meridian offset (in radians) */ double long_wrap_center; /* 0.0 for -180 to 180, actually in radians*/ // Initialize all variables to zero pj_const_pod() { std::memset(this, 0, sizeof(pj_const_pod)); } }; // PROJ4 complex. Might be replaced with std::complex struct COMPLEX { double r, i; }; struct PJ_ELLPS { std::string id; /* ellipse keyword name */ std::string major; /* a= value */ std::string ell; /* elliptical parameter */ std::string name; /* comments */ }; struct PJ_DATUMS { std::string id; /* datum keyword */ std::string defn; /* ie. "to_wgs84=..." */ std::string ellipse_id; /* ie from ellipse table */ std::string comments; /* EPSG code, etc */ }; struct PJ_PRIME_MERIDIANS { std::string id; /* prime meridian keyword */ std::string defn; /* offset from greenwich in DMS format. */ }; struct PJ_UNITS { std::string id; /* units keyword */ std::string to_meter; /* multiply by value to get meters */ std::string name; /* comments */ }; struct DERIVS { double x_l, x_p; /* derivatives of x for lambda-phi */ double y_l, y_p; /* derivatives of y for lambda-phi */ }; struct FACTORS { struct DERIVS der; double h, k; /* meridinal, parallel scales */ double omega, thetap; /* angular distortion, theta prime */ double conv; /* convergence */ double s; /* areal scale factor */ double a, b; /* max-min scale error */ int code; /* info as to analytics, see following */ }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief parameters, projection parameters \details This structure initializes all projections \ingroup projection */ struct parameters : public detail::pj_const_pod { std::string name; std::vector params; }; // TODO: derived from boost::exception / make more for forward/inverse/init/setup class proj_exception { public: proj_exception(int code = 0) { boost::ignore_unused_variable_warning(code); } }; }} // namespace ggl::projection #endif // GGL_PROJECTIONS_IMPL_PROJECTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/parameters.hpp000066400000000000000000000031511177067165300305720ustar00rootroot00000000000000#ifndef _PROJECTIONS_PARAMETERS_HPP #define _PROJECTIONS_PARAMETERS_HPP // Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include namespace ggl { namespace projection { template inline parameters init(const R& arguments) { return detail::pj_init(arguments); } /*! \ingroup projection \brief Initializes a projection as a string, using the format with + and = \details The projection can be initialized with a string (with the same format as the PROJ4 package) for convenient initialization from, for example, the command line \par Example +proj=labrd +ellps=intl +lon_0=46d26'13.95E +lat_0=18d54S +azi=18d54 +k_0=.9995 +x_0=400000 +y_0=800000 for the Madagascar projection. \note Parameters are described in the group */ inline parameters init(const std::string& arguments) { return detail::pj_init_plus(arguments); } /*! \ingroup projection \brief Overload using a const char* */ inline parameters init(const char* arguments) { return detail::pj_init_plus(arguments); } // todo: /* parameters init(const std::map& arguments) { return detail::pj_init_plus(arguments); } */ }} // namespace ggl::projection #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/000077500000000000000000000000001177067165300266705ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/aea.hpp000066400000000000000000000527221177067165300301370ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_AEA_HPP #define GGL_PROJECTIONS_AEA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace aea{ static const double EPS10 = 1.e-10; static const double TOL7 = 1.e-7; static const int N_ITER = 15; static const double EPSILON = 1.0e-7; static const double TOL = 1.0e-10; struct par_aea { double ec; double n; double c; double dd; double n2; double rho0; double rho; double phi1; double phi2; double en[EN_SIZE]; int ellips; }; /* determine latitude angle phi-1 */ inline double phi1_(double qs, double Te, double Tone_es) { int i; double Phi, sinpi, cospi, con, com, dphi; Phi = asin (.5 * qs); if (Te < EPSILON) return( Phi ); i = N_ITER; do { sinpi = sin (Phi); cospi = cos (Phi); con = Te * sinpi; com = 1. - con * con; dphi = .5 * com * com / cospi * (qs / Tone_es - sinpi / com + .5 / Te * log ((1. - con) / (1. + con))); Phi += dphi; } while (fabs(dphi) > TOL && --i); return( i ? Phi : HUGE_VAL ); } // template class, using CRTP to implement forward/inverse template struct base_aea_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; mutable par_aea m_proj_parm; inline base_aea_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if ((this->m_proj_parm.rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? this->m_proj_parm.n * pj_qsfn(sin(lp_lat), this->m_par.e, this->m_par.one_es) : this->m_proj_parm.n2 * sin(lp_lat))) < 0.) throw proj_exception(); this->m_proj_parm.rho = this->m_proj_parm.dd * sqrt(this->m_proj_parm.rho); xy_x = this->m_proj_parm.rho * sin( lp_lon *= this->m_proj_parm.n ); xy_y = this->m_proj_parm.rho0 - this->m_proj_parm.rho * cos(lp_lon); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { if( (this->m_proj_parm.rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) { if (this->m_proj_parm.n < 0.) { this->m_proj_parm.rho = -this->m_proj_parm.rho; xy_x = -xy_x; xy_y = -xy_y; } lp_lat = this->m_proj_parm.rho / this->m_proj_parm.dd; if (this->m_proj_parm.ellips) { lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n; if (fabs(this->m_proj_parm.ec - fabs(lp_lat)) > TOL7) { if ((lp_lat = phi1_(lp_lat, this->m_par.e, this->m_par.one_es)) == HUGE_VAL) throw proj_exception(); } else lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; } else if (fabs(lp_lat = (this->m_proj_parm.c - lp_lat * lp_lat) / this->m_proj_parm.n2) <= 1.) lp_lat = asin(lp_lat); else lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n; } else { lp_lon = 0.; lp_lat = this->m_proj_parm.n > 0. ? HALFPI : - HALFPI; } } }; template void setup(Parameters& par, par_aea& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); double cosphi, sinphi; int secant; if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) throw proj_exception(-21); proj_parm.n = sinphi = sin(proj_parm.phi1); cosphi = cos(proj_parm.phi1); secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10; if( (proj_parm.ellips = (par.es > 0.))) { double ml1, m1; pj_enfn(par.es, proj_parm.en); m1 = pj_msfn(sinphi, cosphi, par.es); ml1 = pj_qsfn(sinphi, par.e, par.one_es); if (secant) { /* secant cone */ double ml2, m2; sinphi = sin(proj_parm.phi2); cosphi = cos(proj_parm.phi2); m2 = pj_msfn(sinphi, cosphi, par.es); ml2 = pj_qsfn(sinphi, par.e, par.one_es); proj_parm.n = (m1 * m1 - m2 * m2) / (ml2 - ml1); } proj_parm.ec = 1. - .5 * par.one_es * log((1. - par.e) / (1. + par.e)) / par.e; proj_parm.c = m1 * m1 + proj_parm.n * ml1; proj_parm.dd = 1. / proj_parm.n; proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n * pj_qsfn(sin(par.phi0), par.e, par.one_es)); } else { if (secant) proj_parm.n = .5 * (proj_parm.n + sin(proj_parm.phi2)); proj_parm.n2 = proj_parm.n + proj_parm.n; proj_parm.c = cosphi * cosphi + proj_parm.n2 * sinphi; proj_parm.dd = 1. / proj_parm.n; proj_parm.rho0 = proj_parm.dd * sqrt(proj_parm.c - proj_parm.n2 * sin(par.phi0)); } // par.inv = e_inverse; // par.fwd = e_forward; } // Albers Equal Area template void setup_aea(Parameters& par, par_aea& proj_parm) { proj_parm.phi1 = pj_param(par.params, "rlat_1").f; proj_parm.phi2 = pj_param(par.params, "rlat_2").f; setup(par, proj_parm); } // Lambert Equal Area Conic template void setup_leac(Parameters& par, par_aea& proj_parm) { proj_parm.phi2 = pj_param(par.params, "rlat_1").f; proj_parm.phi1 = pj_param(par.params, "bsouth").i ? - HALFPI: HALFPI; setup(par, proj_parm); } }} // namespace detail::aea #endif // doxygen /*! \brief Albers Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_1= lat_2= \par Example \image html ex_aea.gif */ template struct aea_ellipsoid : public detail::aea::base_aea_ellipsoid { inline aea_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid(par) { detail::aea::setup_aea(this->m_par, this->m_proj_parm); } }; /*! \brief Lambert Equal Area Conic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_1= south \par Example \image html ex_leac.gif */ template struct leac_ellipsoid : public detail::aea::base_aea_ellipsoid { inline leac_ellipsoid(const Parameters& par) : detail::aea::base_aea_ellipsoid(par) { detail::aea::setup_leac(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class aea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class leac_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void aea_init(detail::base_factory& factory) { factory.add_to_factory("aea", new aea_entry); factory.add_to_factory("leac", new leac_entry); } } // namespace detail // Create EPSG specializations // (Proof of Concept, only for some) template struct epsg_traits<2964, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192"; } }; template struct epsg_traits<3005, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3083, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3085, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3086, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3087, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3153, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3174, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3175, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3309, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m"; } }; template struct epsg_traits<3310, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3311, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3338, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3467, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; template struct epsg_traits<3488, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; template struct epsg_traits<3513, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; template struct epsg_traits<3577, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; template struct epsg_traits<3578, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m"; } }; template struct epsg_traits<3579, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3665, LatLongRadian, Cartesian, Parameters> { typedef aea_ellipsoid type; static inline std::string par() { return "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_AEA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/aeqd.hpp000066400000000000000000000501441177067165300303170ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_AEQD_HPP #define GGL_PROJECTIONS_AEQD_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace aeqd{ static const double EPS10 = 1.e-10; static const double TOL = 1.e-14; static const int N_POLE = 0; static const int S_POLE = 1; static const int EQUIT = 2; static const int OBLIQ = 3; struct par_aeqd { double sinph0; double cosph0; double en[EN_SIZE]; double M1; double N1; double Mp; double He; double G; int mode; }; // template class, using CRTP to implement forward/inverse template struct base_aeqd_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_aeqd m_proj_parm; inline base_aeqd_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, cosphi, sinphi, rho, s, H, H2, c, Az, t, ct, st, cA, sA; coslam = cos(lp_lon); cosphi = cos(lp_lat); sinphi = sin(lp_lat); switch (this->m_proj_parm.mode) { case N_POLE: coslam = - coslam; case S_POLE: xy_x = (rho = fabs(this->m_proj_parm.Mp - pj_mlfn(lp_lat, sinphi, cosphi, this->m_proj_parm.en))) * sin(lp_lon); xy_y = rho * coslam; break; case EQUIT: case OBLIQ: if (fabs(lp_lon) < EPS10 && fabs(lp_lat - this->m_par.phi0) < EPS10) { xy_x = xy_y = 0.; break; } t = atan2(this->m_par.one_es * sinphi + this->m_par.es * this->m_proj_parm.N1 * this->m_proj_parm.sinph0 * sqrt(1. - this->m_par.es * sinphi * sinphi), cosphi); ct = cos(t); st = sin(t); Az = atan2(sin(lp_lon) * ct, this->m_proj_parm.cosph0 * st - this->m_proj_parm.sinph0 * coslam * ct); cA = cos(Az); sA = sin(Az); s = aasin( fabs(sA) < TOL ? (this->m_proj_parm.cosph0 * st - this->m_proj_parm.sinph0 * coslam * ct) / cA : sin(lp_lon) * ct / sA ); H = this->m_proj_parm.He * cA; H2 = H * H; c = this->m_proj_parm.N1 * s * (1. + s * s * (- H2 * (1. - H2)/6. + s * ( this->m_proj_parm.G * H * (1. - 2. * H2 * H2) / 8. + s * ((H2 * (4. - 7. * H2) - 3. * this->m_proj_parm.G * this->m_proj_parm.G * (1. - 7. * H2)) / 120. - s * this->m_proj_parm.G * H / 48.)))); xy_x = c * sA; xy_y = c * cA; break; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double c, Az, cosAz, A, B, D, E, F, psi, t; if ((c = boost::math::hypot(xy_x, xy_y)) < EPS10) { lp_lat = this->m_par.phi0; lp_lon = 0.; return; } if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) { cosAz = cos(Az = atan2(xy_x, xy_y)); t = this->m_proj_parm.cosph0 * cosAz; B = this->m_par.es * t / this->m_par.one_es; A = - B * t; B *= 3. * (1. - A) * this->m_proj_parm.sinph0; D = c / this->m_proj_parm.N1; E = D * (1. - D * D * (A * (1. + A) / 6. + B * (1. + 3.*A) * D / 24.)); F = 1. - E * E * (A / 2. + B * E / 6.); psi = aasin(this->m_proj_parm.sinph0 * cos(E) + t * sin(E)); lp_lon = aasin(sin(Az) * sin(E) / cos(psi)); if ((t = fabs(psi)) < EPS10) lp_lat = 0.; else if (fabs(t - HALFPI) < 0.) lp_lat = HALFPI; else lp_lat = atan((1. - this->m_par.es * F * this->m_proj_parm.sinph0 / sin(psi)) * tan(psi) / this->m_par.one_es); } else { /* Polar */ lp_lat = pj_inv_mlfn(this->m_proj_parm.mode == N_POLE ? this->m_proj_parm.Mp - c : this->m_proj_parm.Mp + c, this->m_par.es, this->m_proj_parm.en); lp_lon = atan2(xy_x, this->m_proj_parm.mode == N_POLE ? -xy_y : xy_y); } } }; // template class, using CRTP to implement forward/inverse template struct base_aeqd_guam : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_aeqd m_proj_parm; inline base_aeqd_guam(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double cosphi, sinphi, t; cosphi = cos(lp_lat); sinphi = sin(lp_lat); t = 1. / sqrt(1. - this->m_par.es * sinphi * sinphi); xy_x = lp_lon * cosphi * t; xy_y = pj_mlfn(lp_lat, sinphi, cosphi, this->m_proj_parm.en) - this->m_proj_parm.M1 + .5 * lp_lon * lp_lon * cosphi * sinphi * t; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double x2, t; int i; x2 = 0.5 * xy_x * xy_x; lp_lat = this->m_par.phi0; for (i = 0; i < 3; ++i) { t = this->m_par.e * sin(lp_lat); lp_lat = pj_inv_mlfn(this->m_proj_parm.M1 + xy_y - x2 * tan(lp_lat) * (t = sqrt(1. - t * t)), this->m_par.es, this->m_proj_parm.en); } lp_lon = xy_x * t / cos(lp_lat); } }; // template class, using CRTP to implement forward/inverse template struct base_aeqd_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_aeqd m_proj_parm; inline base_aeqd_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, cosphi, sinphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); coslam = cos(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: xy_y = cosphi * coslam; goto oblcon; case OBLIQ: xy_y = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosphi * coslam; oblcon: if (fabs(fabs(xy_y) - 1.) < TOL) if (xy_y < 0.) throw proj_exception(); else xy_x = xy_y = 0.; else { xy_y = acos(xy_y); xy_y /= sin(xy_y); xy_x = xy_y * cosphi * sin(lp_lon); xy_y *= (this->m_proj_parm.mode == EQUIT) ? sinphi : this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam; } break; case N_POLE: lp_lat = -lp_lat; coslam = -coslam; case S_POLE: if (fabs(lp_lat - HALFPI) < EPS10) throw proj_exception();; xy_x = (xy_y = (HALFPI + lp_lat)) * sin(lp_lon); xy_y *= coslam; break; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double cosc, c_rh, sinc; if ((c_rh = boost::math::hypot(xy_x, xy_y)) > PI) { if (c_rh - EPS10 > PI) throw proj_exception();; c_rh = PI; } else if (c_rh < EPS10) { lp_lat = this->m_par.phi0; lp_lon = 0.; return; } if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) { sinc = sin(c_rh); cosc = cos(c_rh); if (this->m_proj_parm.mode == EQUIT) { lp_lat = aasin(xy_y * sinc / c_rh); xy_x *= sinc; xy_y = cosc * c_rh; } else { lp_lat = aasin(cosc * this->m_proj_parm.sinph0 + xy_y * sinc * this->m_proj_parm.cosph0 / c_rh); xy_y = (cosc - this->m_proj_parm.sinph0 * sin(lp_lat)) * c_rh; xy_x *= sinc * this->m_proj_parm.cosph0; } lp_lon = xy_y == 0. ? 0. : atan2(xy_x, xy_y); } else if (this->m_proj_parm.mode == N_POLE) { lp_lat = HALFPI - c_rh; lp_lon = atan2(xy_x, -xy_y); } else { lp_lat = c_rh - HALFPI; lp_lon = atan2(xy_x, xy_y); } } }; // Azimuthal Equidistant template void setup_aeqd(Parameters& par, par_aeqd& proj_parm) { par.phi0 = pj_param(par.params, "rlat_0").f; if (fabs(fabs(par.phi0) - HALFPI) < EPS10) { proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; proj_parm.sinph0 = par.phi0 < 0. ? -1. : 1.; proj_parm.cosph0 = 0.; } else if (fabs(par.phi0) < EPS10) { proj_parm.mode = EQUIT; proj_parm.sinph0 = 0.; proj_parm.cosph0 = 1.; } else { proj_parm.mode = OBLIQ; proj_parm.sinph0 = sin(par.phi0); proj_parm.cosph0 = cos(par.phi0); } if (! par.es) { // par.inv = s_inverse; // par.fwd = s_forward; } else { pj_enfn(par.es, proj_parm.en); if (pj_param(par.params, "bguam").i) { proj_parm.M1 = pj_mlfn(par.phi0, proj_parm.sinph0, proj_parm.cosph0, proj_parm.en); // par.inv = e_guam_inv; // par.fwd = e_guam_fwd; } else { switch (proj_parm.mode) { case N_POLE: proj_parm.Mp = pj_mlfn(HALFPI, 1., 0., proj_parm.en); break; case S_POLE: proj_parm.Mp = pj_mlfn(-HALFPI, -1., 0., proj_parm.en); break; case EQUIT: case OBLIQ: // par.inv = e_inverse; // par.fwd = e_forward; proj_parm.N1 = 1. / sqrt(1. - par.es * proj_parm.sinph0 * proj_parm.sinph0); proj_parm.G = proj_parm.sinph0 * (proj_parm.He = par.e / sqrt(par.one_es)); proj_parm.He *= proj_parm.cosph0; break; } // par.inv = e_inverse; // par.fwd = e_forward; } } } }} // namespace detail::aeqd #endif // doxygen /*! \brief Azimuthal Equidistant projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - lat_0 guam \par Example \image html ex_aeqd.gif */ template struct aeqd_ellipsoid : public detail::aeqd::base_aeqd_ellipsoid { inline aeqd_ellipsoid(const Parameters& par) : detail::aeqd::base_aeqd_ellipsoid(par) { detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm); } }; /*! \brief Azimuthal Equidistant projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - lat_0 guam \par Example \image html ex_aeqd.gif */ template struct aeqd_guam : public detail::aeqd::base_aeqd_guam { inline aeqd_guam(const Parameters& par) : detail::aeqd::base_aeqd_guam(par) { detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm); } }; /*! \brief Azimuthal Equidistant projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - lat_0 guam \par Example \image html ex_aeqd.gif */ template struct aeqd_spheroid : public detail::aeqd::base_aeqd_spheroid { inline aeqd_spheroid(const Parameters& par) : detail::aeqd::base_aeqd_spheroid(par) { detail::aeqd::setup_aeqd(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class aeqd_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (! par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else if (pj_param(par.params, "bguam").i) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void aeqd_init(detail::base_factory& factory) { factory.add_to_factory("aeqd", new aeqd_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_AEQD_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/airy.hpp000066400000000000000000000215361177067165300303540ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_AIRY_HPP #define GGL_PROJECTIONS_AIRY_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace airy{ static const double EPS = 1.e-10; static const int N_POLE = 0; static const int S_POLE = 1; static const int EQUIT = 2; static const int OBLIQ = 3; struct par_airy { double p_halfpi; double sinph0; double cosph0; double Cb; int mode; int no_cut; /* do not cut at hemisphere limit */ }; // template class, using CRTP to implement forward/inverse template struct base_airy_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_airy m_proj_parm; inline base_airy_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double sinlam, coslam, cosphi, sinphi, t, s, Krho, cosz; sinlam = sin(lp_lon); coslam = cos(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: case OBLIQ: sinphi = sin(lp_lat); cosphi = cos(lp_lat); cosz = cosphi * coslam; if (this->m_proj_parm.mode == OBLIQ) cosz = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosz; if (!this->m_proj_parm.no_cut && cosz < -EPS) throw proj_exception();; if (fabs(s = 1. - cosz) > EPS) { t = 0.5 * (1. + cosz); Krho = -log(t)/s - this->m_proj_parm.Cb / t; } else Krho = 0.5 - this->m_proj_parm.Cb; xy_x = Krho * cosphi * sinlam; if (this->m_proj_parm.mode == OBLIQ) xy_y = Krho * (this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam); else xy_y = Krho * sinphi; break; case S_POLE: case N_POLE: lp_lat = fabs(this->m_proj_parm.p_halfpi - lp_lat); if (!this->m_proj_parm.no_cut && (lp_lat - EPS) > HALFPI) throw proj_exception();; if ((lp_lat *= 0.5) > EPS) { t = tan(lp_lat); Krho = -2.*(log(cos(lp_lat)) / t + t * this->m_proj_parm.Cb); xy_x = Krho * sinlam; xy_y = Krho * coslam; if (this->m_proj_parm.mode == N_POLE) xy_y = -xy_y; } else xy_x = xy_y = 0.; } } }; // Airy template void setup_airy(Parameters& par, par_airy& proj_parm) { double beta; proj_parm.no_cut = pj_param(par.params, "bno_cut").i; beta = 0.5 * (HALFPI - pj_param(par.params, "rlat_b").f); if (fabs(beta) < EPS) proj_parm.Cb = -0.5; else { proj_parm.Cb = 1./tan(beta); proj_parm.Cb *= proj_parm.Cb * log(cos(beta)); } if (fabs(fabs(par.phi0) - HALFPI) < EPS) if (par.phi0 < 0.) { proj_parm.p_halfpi = -HALFPI; proj_parm.mode = S_POLE; } else { proj_parm.p_halfpi = HALFPI; proj_parm.mode = N_POLE; } else { if (fabs(par.phi0) < EPS) proj_parm.mode = EQUIT; else { proj_parm.mode = OBLIQ; proj_parm.sinph0 = sin(par.phi0); proj_parm.cosph0 = cos(par.phi0); } } // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::airy #endif // doxygen /*! \brief Airy projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse - no_cut lat_b= \par Example \image html ex_airy.gif */ template struct airy_spheroid : public detail::airy::base_airy_spheroid { inline airy_spheroid(const Parameters& par) : detail::airy::base_airy_spheroid(par) { detail::airy::setup_airy(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class airy_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void airy_init(detail::base_factory& factory) { factory.add_to_factory("airy", new airy_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_AIRY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/aitoff.hpp000066400000000000000000000202711177067165300306530ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_AITOFF_HPP #define GGL_PROJECTIONS_AITOFF_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace aitoff{ struct par_aitoff { double cosphi1; int mode; }; // template class, using CRTP to implement forward/inverse template struct base_aitoff_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_aitoff m_proj_parm; inline base_aitoff_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double c, d; if((d = acos(cos(lp_lat) * cos(c = 0.5 * lp_lon)))) {/* basic Aitoff */ xy_x = 2. * d * cos(lp_lat) * sin(c) * (xy_y = 1. / sin(d)); xy_y *= d * sin(lp_lat); } else xy_x = xy_y = 0.; if (this->m_proj_parm.mode) { /* Winkel Tripel */ xy_x = (xy_x + lp_lon * this->m_proj_parm.cosphi1) * 0.5; xy_y = (xy_y + lp_lat) * 0.5; } } }; template void setup(Parameters& par, par_aitoff& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); // par.inv = 0; // par.fwd = s_forward; par.es = 0.; } // Aitoff template void setup_aitoff(Parameters& par, par_aitoff& proj_parm) { proj_parm.mode = 0; setup(par, proj_parm); } // Winkel Tripel template void setup_wintri(Parameters& par, par_aitoff& proj_parm) { proj_parm.mode = 1; if (pj_param(par.params, "tlat_1").i) { if ((proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_1").f)) == 0.) throw proj_exception(-22); } else /* 50d28' or acos(2/pi) */ proj_parm.cosphi1 = 0.636619772367581343; setup(par, proj_parm); } }} // namespace detail::aitoff #endif // doxygen /*! \brief Aitoff projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid \par Example \image html ex_aitoff.gif */ template struct aitoff_spheroid : public detail::aitoff::base_aitoff_spheroid { inline aitoff_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid(par) { detail::aitoff::setup_aitoff(this->m_par, this->m_proj_parm); } }; /*! \brief Winkel Tripel projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - lat_1 \par Example \image html ex_wintri.gif */ template struct wintri_spheroid : public detail::aitoff::base_aitoff_spheroid { inline wintri_spheroid(const Parameters& par) : detail::aitoff::base_aitoff_spheroid(par) { detail::aitoff::setup_wintri(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class aitoff_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template class wintri_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void aitoff_init(detail::base_factory& factory) { factory.add_to_factory("aitoff", new aitoff_entry); factory.add_to_factory("wintri", new wintri_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_AITOFF_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/august.hpp000066400000000000000000000131311177067165300307100ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_AUGUST_HPP #define GGL_PROJECTIONS_AUGUST_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace august{ static const double M = 1.333333333333333; // template class, using CRTP to implement forward/inverse template struct base_august_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_august_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double t, c1, c, x1, x12, y1, y12; t = tan(.5 * lp_lat); c1 = sqrt(1. - t * t); c = 1. + c1 * cos(lp_lon *= .5); x1 = sin(lp_lon) * c1 / c; y1 = t / c; xy_x = M * x1 * (3. + (x12 = x1 * x1) - 3. * (y12 = y1 * y1)); xy_y = M * y1 * (3. + 3. * x12 - y12); } }; // August Epicycloidal template void setup_august(Parameters& par) { // par.inv = 0; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::august #endif // doxygen /*! \brief August Epicycloidal projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_august.gif */ template struct august_spheroid : public detail::august::base_august_spheroid { inline august_spheroid(const Parameters& par) : detail::august::base_august_spheroid(par) { detail::august::setup_august(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class august_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void august_init(detail::base_factory& factory) { factory.add_to_factory("august", new august_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_AUGUST_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/bacon.hpp000066400000000000000000000225241177067165300304700ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_BACON_HPP #define GGL_PROJECTIONS_BACON_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace bacon{ static const double HLFPI2 = 2.46740110027233965467; static const double EPS = 1e-10; struct par_bacon { int bacn; int ortl; }; // template class, using CRTP to implement forward/inverse template struct base_bacon_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_bacon m_proj_parm; inline base_bacon_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double ax, f; xy_y = this->m_proj_parm.bacn ? HALFPI * sin(lp_lat) : lp_lat; if ((ax = fabs(lp_lon)) >= EPS) { if (this->m_proj_parm.ortl && ax >= HALFPI) xy_x = sqrt(HLFPI2 - lp_lat * lp_lat + EPS) + ax - HALFPI; else { f = 0.5 * (HLFPI2 / ax + ax); xy_x = ax - f + sqrt(f * f - xy_y * xy_y); } if (lp_lon < 0.) xy_x = - xy_x; } else xy_x = 0.; } }; // Apian Globular I template void setup_apian(Parameters& par, par_bacon& proj_parm) { proj_parm.bacn = proj_parm.ortl = 0; par.es = 0.; // par.fwd = s_forward; } // Ortelius Oval template void setup_ortel(Parameters& par, par_bacon& proj_parm) { proj_parm.bacn = 0; proj_parm.ortl = 1; par.es = 0.; // par.fwd = s_forward; } // Bacon Globular template void setup_bacon(Parameters& par, par_bacon& proj_parm) { proj_parm.bacn = 1; proj_parm.ortl = 0; par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::bacon #endif // doxygen /*! \brief Apian Globular I projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_apian.gif */ template struct apian_spheroid : public detail::bacon::base_bacon_spheroid { inline apian_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) { detail::bacon::setup_apian(this->m_par, this->m_proj_parm); } }; /*! \brief Ortelius Oval projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_ortel.gif */ template struct ortel_spheroid : public detail::bacon::base_bacon_spheroid { inline ortel_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) { detail::bacon::setup_ortel(this->m_par, this->m_proj_parm); } }; /*! \brief Bacon Globular projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_bacon.gif */ template struct bacon_spheroid : public detail::bacon::base_bacon_spheroid { inline bacon_spheroid(const Parameters& par) : detail::bacon::base_bacon_spheroid(par) { detail::bacon::setup_bacon(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class apian_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template class ortel_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template class bacon_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void bacon_init(detail::base_factory& factory) { factory.add_to_factory("apian", new apian_entry); factory.add_to_factory("ortel", new ortel_entry); factory.add_to_factory("bacon", new bacon_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_BACON_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/bipc.hpp000066400000000000000000000253541177067165300303270ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_BIPC_HPP #define GGL_PROJECTIONS_BIPC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace bipc{ static const double EPS = 1e-10; static const double EPS10 = 1e-10; static const double ONEEPS = 1.000000001; static const int NITER = 10; static const double lamB = -.34894976726250681539; static const double n = .63055844881274687180; static const double F = 1.89724742567461030582; static const double Azab = .81650043674686363166; static const double Azba = 1.82261843856185925133; static const double T = 1.27246578267089012270; static const double rhoc = 1.20709121521568721927; static const double cAzc = .69691523038678375519; static const double sAzc = .71715351331143607555; static const double C45 = .70710678118654752469; static const double S45 = .70710678118654752410; static const double C20 = .93969262078590838411; static const double S20 = -.34202014332566873287; static const double R110 = 1.91986217719376253360; static const double R104 = 1.81514242207410275904; struct par_bipc { int noskew; }; // template class, using CRTP to implement forward/inverse template struct base_bipc_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_bipc m_proj_parm; inline base_bipc_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double cphi, sphi, tphi, t, al, Az, z, Av, cdlam, sdlam, r; int tag; cphi = cos(lp_lat); sphi = sin(lp_lat); cdlam = cos(sdlam = lamB - lp_lon); sdlam = sin(sdlam); if (fabs(fabs(lp_lat) - HALFPI) < EPS10) { Az = lp_lat < 0. ? PI : 0.; tphi = HUGE_VAL; } else { tphi = sphi / cphi; Az = atan2(sdlam , C45 * (tphi - cdlam)); } if( (tag = (Az > Azba)) ) { cdlam = cos(sdlam = lp_lon + R110); sdlam = sin(sdlam); z = S20 * sphi + C20 * cphi * cdlam; if (fabs(z) > 1.) { if (fabs(z) > ONEEPS) throw proj_exception(); else z = z < 0. ? -1. : 1.; } else z = acos(z); if (tphi != HUGE_VAL) Az = atan2(sdlam, (C20 * tphi - S20 * cdlam)); Av = Azab; xy_y = rhoc; } else { z = S45 * (sphi + cphi * cdlam); if (fabs(z) > 1.) { if (fabs(z) > ONEEPS) throw proj_exception(); else z = z < 0. ? -1. : 1.; } else z = acos(z); Av = Azba; xy_y = -rhoc; } if (z < 0.) throw proj_exception();; r = F * (t = pow(tan(.5 * z), n)); if ((al = .5 * (R104 - z)) < 0.) throw proj_exception();; al = (t + pow(al, n)) / T; if (fabs(al) > 1.) { if (fabs(al) > ONEEPS) throw proj_exception(); else al = al < 0. ? -1. : 1.; } else al = acos(al); if (fabs(t = n * (Av - Az)) < al) r /= cos(al + (tag ? t : -t)); xy_x = r * sin(t); xy_y += (tag ? -r : r) * cos(t); if (this->m_proj_parm.noskew) { t = xy_x; xy_x = -xy_x * cAzc - xy_y * sAzc; xy_y = -xy_y * cAzc + t * sAzc; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t, r, rp, rl, al, z, fAz, Az, s, c, Av; int neg, i; if (this->m_proj_parm.noskew) { t = xy_x; xy_x = -xy_x * cAzc + xy_y * sAzc; xy_y = -xy_y * cAzc - t * sAzc; } if( (neg = (xy_x < 0.)) ) { xy_y = rhoc - xy_y; s = S20; c = C20; Av = Azab; } else { xy_y += rhoc; s = S45; c = C45; Av = Azba; } rl = rp = r = boost::math::hypot(xy_x, xy_y); fAz = fabs(Az = atan2(xy_x, xy_y)); for (i = NITER; i ; --i) { z = 2. * atan(pow(r / F,1 / n)); al = acos((pow(tan(.5 * z), n) + pow(tan(.5 * (R104 - z)), n)) / T); if (fAz < al) r = rp * cos(al + (neg ? Az : -Az)); if (fabs(rl - r) < EPS) break; rl = r; } if (! i) throw proj_exception();; Az = Av - Az / n; lp_lat = asin(s * cos(z) + c * sin(z) * cos(Az)); lp_lon = atan2(sin(Az), c / tan(z) - s * cos(Az)); if (neg) lp_lon -= R110; else lp_lon = lamB - lp_lon; } }; // Bipolar conic of western hemisphere template void setup_bipc(Parameters& par, par_bipc& proj_parm) { proj_parm.noskew = pj_param(par.params, "bns").i; // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::bipc #endif // doxygen /*! \brief Bipolar conic of western hemisphere projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid \par Example \image html ex_bipc.gif */ template struct bipc_spheroid : public detail::bipc::base_bipc_spheroid { inline bipc_spheroid(const Parameters& par) : detail::bipc::base_bipc_spheroid(par) { detail::bipc::setup_bipc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class bipc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void bipc_init(detail::base_factory& factory) { factory.add_to_factory("bipc", new bipc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_BIPC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/boggs.hpp000066400000000000000000000141671177067165300305130ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_BOGGS_HPP #define GGL_PROJECTIONS_BOGGS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace boggs{ static const int NITER = 20; static const double EPS = 1e-7; static const double ONETOL = 1.000001; static const double FXC = 2.00276; static const double FXC2 = 1.11072; static const double FYC = 0.49931; static const double FYC2 = 1.41421356237309504880; // template class, using CRTP to implement forward/inverse template struct base_boggs_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_boggs_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double theta, th1, c; int i; theta = lp_lat; if (fabs(fabs(lp_lat) - HALFPI) < EPS) xy_x = 0.; else { c = sin(theta) * PI; for (i = NITER; i; --i) { theta -= th1 = (theta + sin(theta) - c) / (1. + cos(theta)); if (fabs(th1) < EPS) break; } theta *= 0.5; xy_x = FXC * lp_lon / (1. / cos(lp_lat) + FXC2 / cos(theta)); } xy_y = FYC * (lp_lat + FYC2 * sin(theta)); } }; // Boggs Eumorphic template void setup_boggs(Parameters& par) { par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::boggs #endif // doxygen /*! \brief Boggs Eumorphic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - no inverse - Spheroid \par Example \image html ex_boggs.gif */ template struct boggs_spheroid : public detail::boggs::base_boggs_spheroid { inline boggs_spheroid(const Parameters& par) : detail::boggs::base_boggs_spheroid(par) { detail::boggs::setup_boggs(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class boggs_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void boggs_init(detail::base_factory& factory) { factory.add_to_factory("boggs", new boggs_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_BOGGS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/bonne.hpp000066400000000000000000000245601177067165300305110ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_BONNE_HPP #define GGL_PROJECTIONS_BONNE_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace bonne{ static const double EPS10 = 1e-10; struct par_bonne { double phi1; double cphi1; double am1; double m1; double en[EN_SIZE]; }; // template class, using CRTP to implement forward/inverse template struct base_bonne_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_bonne m_proj_parm; inline base_bonne_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double rh, E, c; rh = this->m_proj_parm.am1 + this->m_proj_parm.m1 - pj_mlfn(lp_lat, E = sin(lp_lat), c = cos(lp_lat), this->m_proj_parm.en); E = c * lp_lon / (rh * sqrt(1. - this->m_par.es * E * E)); xy_x = rh * sin(E); xy_y = this->m_proj_parm.am1 - rh * cos(E); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double s, rh; rh = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.am1 - xy_y); lp_lat = pj_inv_mlfn(this->m_proj_parm.am1 + this->m_proj_parm.m1 - rh, this->m_par.es, this->m_proj_parm.en); if ((s = fabs(lp_lat)) < HALFPI) { s = sin(lp_lat); lp_lon = rh * atan2(xy_x, xy_y) * sqrt(1. - this->m_par.es * s * s) / cos(lp_lat); } else if (fabs(s - HALFPI) <= EPS10) lp_lon = 0.; else throw proj_exception();; } }; // template class, using CRTP to implement forward/inverse template struct base_bonne_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_bonne m_proj_parm; inline base_bonne_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double E, rh; rh = this->m_proj_parm.cphi1 + this->m_proj_parm.phi1 - lp_lat; if (fabs(rh) > EPS10) { xy_x = rh * sin(E = lp_lon * cos(lp_lat) / rh); xy_y = this->m_proj_parm.cphi1 - rh * cos(E); } else xy_x = xy_y = 0.; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rh; rh = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.cphi1 - xy_y); lp_lat = this->m_proj_parm.cphi1 + this->m_proj_parm.phi1 - rh; if (fabs(lp_lat) > HALFPI) throw proj_exception();; if (fabs(fabs(lp_lat) - HALFPI) <= EPS10) lp_lon = 0.; else lp_lon = rh * atan2(xy_x, xy_y) / cos(lp_lat); } }; // Bonne (Werner lat_1=90) template void setup_bonne(Parameters& par, par_bonne& proj_parm) { double c; proj_parm.phi1 = pj_param(par.params, "rlat_1").f; if (fabs(proj_parm.phi1) < EPS10) throw proj_exception(-23); if (par.es) { pj_enfn(par.es, proj_parm.en); proj_parm.m1 = pj_mlfn(proj_parm.phi1, proj_parm.am1 = sin(proj_parm.phi1), c = cos(proj_parm.phi1), proj_parm.en); proj_parm.am1 = c / (sqrt(1. - par.es * proj_parm.am1 * proj_parm.am1) * proj_parm.am1); // par.inv = e_inverse; // par.fwd = e_forward; } else { if (fabs(proj_parm.phi1) + EPS10 >= HALFPI) proj_parm.cphi1 = 0.; else proj_parm.cphi1 = 1. / tan(proj_parm.phi1); // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::bonne #endif // doxygen /*! \brief Bonne (Werner lat_1=90) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_1= \par Example \image html ex_bonne.gif */ template struct bonne_ellipsoid : public detail::bonne::base_bonne_ellipsoid { inline bonne_ellipsoid(const Parameters& par) : detail::bonne::base_bonne_ellipsoid(par) { detail::bonne::setup_bonne(this->m_par, this->m_proj_parm); } }; /*! \brief Bonne (Werner lat_1=90) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_1= \par Example \image html ex_bonne.gif */ template struct bonne_spheroid : public detail::bonne::base_bonne_spheroid { inline bonne_spheroid(const Parameters& par) : detail::bonne::base_bonne_spheroid(par) { detail::bonne::setup_bonne(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class bonne_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void bonne_init(detail::base_factory& factory) { factory.add_to_factory("bonne", new bonne_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_BONNE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/cass.hpp000066400000000000000000000475361177067165300303510ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_CASS_HPP #define GGL_PROJECTIONS_CASS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace cass{ static const double EPS10 = 1e-10; static const double C1 = .16666666666666666666; static const double C2 = .00833333333333333333; static const double C3 = .04166666666666666666; static const double C4 = .33333333333333333333; static const double C5 = .06666666666666666666; struct par_cass { double m0; double n; double t; double a1; double c; double r; double dd; double d2; double a2; double tn; double en[EN_SIZE]; }; // template class, using CRTP to implement forward/inverse template struct base_cass_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; mutable par_cass m_proj_parm; inline base_cass_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_y = pj_mlfn(lp_lat, this->m_proj_parm.n = sin(lp_lat), this->m_proj_parm.c = cos(lp_lat), this->m_proj_parm.en); this->m_proj_parm.n = 1./sqrt(1. - this->m_par.es * this->m_proj_parm.n * this->m_proj_parm.n); this->m_proj_parm.tn = tan(lp_lat); this->m_proj_parm.t = this->m_proj_parm.tn * this->m_proj_parm.tn; this->m_proj_parm.a1 = lp_lon * this->m_proj_parm.c; this->m_proj_parm.c *= this->m_par.es * this->m_proj_parm.c / (1 - this->m_par.es); this->m_proj_parm.a2 = this->m_proj_parm.a1 * this->m_proj_parm.a1; xy_x = this->m_proj_parm.n * this->m_proj_parm.a1 * (1. - this->m_proj_parm.a2 * this->m_proj_parm.t * (C1 - (8. - this->m_proj_parm.t + 8. * this->m_proj_parm.c) * this->m_proj_parm.a2 * C2)); xy_y -= this->m_proj_parm.m0 - this->m_proj_parm.n * this->m_proj_parm.tn * this->m_proj_parm.a2 * (.5 + (5. - this->m_proj_parm.t + 6. * this->m_proj_parm.c) * this->m_proj_parm.a2 * C3); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double ph1; ph1 = pj_inv_mlfn(this->m_proj_parm.m0 + xy_y, this->m_par.es, this->m_proj_parm.en); this->m_proj_parm.tn = tan(ph1); this->m_proj_parm.t = this->m_proj_parm.tn * this->m_proj_parm.tn; this->m_proj_parm.n = sin(ph1); this->m_proj_parm.r = 1. / (1. - this->m_par.es * this->m_proj_parm.n * this->m_proj_parm.n); this->m_proj_parm.n = sqrt(this->m_proj_parm.r); this->m_proj_parm.r *= (1. - this->m_par.es) * this->m_proj_parm.n; this->m_proj_parm.dd = xy_x / this->m_proj_parm.n; this->m_proj_parm.d2 = this->m_proj_parm.dd * this->m_proj_parm.dd; lp_lat = ph1 - (this->m_proj_parm.n * this->m_proj_parm.tn / this->m_proj_parm.r) * this->m_proj_parm.d2 * (.5 - (1. + 3. * this->m_proj_parm.t) * this->m_proj_parm.d2 * C3); lp_lon = this->m_proj_parm.dd * (1. + this->m_proj_parm.t * this->m_proj_parm.d2 * (-C4 + (1. + 3. * this->m_proj_parm.t) * this->m_proj_parm.d2 * C5)) / cos(ph1); } }; // template class, using CRTP to implement forward/inverse template struct base_cass_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; mutable par_cass m_proj_parm; inline base_cass_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = asin(cos(lp_lat) * sin(lp_lon)); xy_y = atan2(tan(lp_lat) , cos(lp_lon)) - this->m_par.phi0; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = asin(sin(this->m_proj_parm.dd = xy_y + this->m_par.phi0) * cos(xy_x)); lp_lon = atan2(tan(xy_x), cos(this->m_proj_parm.dd)); } }; // Cassini template void setup_cass(Parameters& par, par_cass& proj_parm) { if (par.es) { pj_enfn(par.es, proj_parm.en); proj_parm.m0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en); // par.inv = e_inverse; // par.fwd = e_forward; } else { // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::cass #endif // doxygen /*! \brief Cassini projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid \par Example \image html ex_cass.gif */ template struct cass_ellipsoid : public detail::cass::base_cass_ellipsoid { inline cass_ellipsoid(const Parameters& par) : detail::cass::base_cass_ellipsoid(par) { detail::cass::setup_cass(this->m_par, this->m_proj_parm); } }; /*! \brief Cassini projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid \par Example \image html ex_cass.gif */ template struct cass_spheroid : public detail::cass::base_cass_spheroid { inline cass_spheroid(const Parameters& par) : detail::cass::base_cass_spheroid(par) { detail::cass::setup_cass(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class cass_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void cass_init(detail::base_factory& factory) { factory.add_to_factory("cass", new cass_entry); } } // namespace detail // Create EPSG specializations // (Proof of Concept, only for some) template struct epsg_traits<2066, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164"; } }; template struct epsg_traits<2099, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m"; } }; template struct epsg_traits<2314, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654"; } }; template struct epsg_traits<3068, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m"; } }; template struct epsg_traits<3140, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168"; } }; template struct epsg_traits<3366, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m"; } }; template struct epsg_traits<3377, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3378, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3379, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3380, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3381, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3382, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3383, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3384, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3385, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3407, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654"; } }; template struct epsg_traits<24500, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m"; } }; template struct epsg_traits<28191, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m"; } }; template struct epsg_traits<28193, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m"; } }; template struct epsg_traits<30200, LatLongRadian, Cartesian, Parameters> { typedef cass_ellipsoid type; static inline std::string par() { return "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164"; } }; #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_CASS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/cc.hpp000066400000000000000000000131461177067165300277730ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_CC_HPP #define GGL_PROJECTIONS_CC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace cc{ static const double EPS10 = 1.e-10; struct par_cc { double ap; }; // template class, using CRTP to implement forward/inverse template struct base_cc_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_cc m_proj_parm; inline base_cc_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if (fabs(fabs(lp_lat) - HALFPI) <= EPS10) throw proj_exception();; xy_x = lp_lon; xy_y = tan(lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = atan(xy_y); lp_lon = xy_x; } }; // Central Cylindrical template void setup_cc(Parameters& par, par_cc& proj_parm) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::cc #endif // doxygen /*! \brief Central Cylindrical projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_cc.gif */ template struct cc_spheroid : public detail::cc::base_cc_spheroid { inline cc_spheroid(const Parameters& par) : detail::cc::base_cc_spheroid(par) { detail::cc::setup_cc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class cc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void cc_init(detail::base_factory& factory) { factory.add_to_factory("cc", new cc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_CC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/cea.hpp000066400000000000000000000220441177067165300301330ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_CEA_HPP #define GGL_PROJECTIONS_CEA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace cea{ static const double EPS = 1e-10; struct par_cea { double qp; double apa[APA_SIZE]; }; // template class, using CRTP to implement forward/inverse template struct base_cea_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_cea m_proj_parm; inline base_cea_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = this->m_par.k0 * lp_lon; xy_y = .5 * pj_qsfn(sin(lp_lat), this->m_par.e, this->m_par.one_es) / this->m_par.k0; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = pj_authlat(asin( 2. * xy_y * this->m_par.k0 / this->m_proj_parm.qp), this->m_proj_parm.apa); lp_lon = xy_x / this->m_par.k0; } }; // template class, using CRTP to implement forward/inverse template struct base_cea_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_cea m_proj_parm; inline base_cea_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = this->m_par.k0 * lp_lon; xy_y = sin(lp_lat) / this->m_par.k0; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t; if ((t = fabs(xy_y *= this->m_par.k0)) - EPS <= 1.) { if (t >= 1.) lp_lat = xy_y < 0. ? -HALFPI : HALFPI; else lp_lat = asin(xy_y); lp_lon = xy_x / this->m_par.k0; } else throw proj_exception();; } }; // Equal Area Cylindrical template void setup_cea(Parameters& par, par_cea& proj_parm) { double t; if (pj_param(par.params, "tlat_ts").i && (par.k0 = cos(t = pj_param(par.params, "rlat_ts").f)) < 0.) throw proj_exception(-24); else t = 0.; if (par.es) { t = sin(t); par.k0 /= sqrt(1. - par.es * t * t); par.e = sqrt(par.es); pj_authset(par.es, proj_parm.apa); proj_parm.qp = pj_qsfn(1., par.e, par.one_es); // par.inv = e_inverse; // par.fwd = e_forward; } else { // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::cea #endif // doxygen /*! \brief Equal Area Cylindrical projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - lat_ts= \par Example \image html ex_cea.gif */ template struct cea_ellipsoid : public detail::cea::base_cea_ellipsoid { inline cea_ellipsoid(const Parameters& par) : detail::cea::base_cea_ellipsoid(par) { detail::cea::setup_cea(this->m_par, this->m_proj_parm); } }; /*! \brief Equal Area Cylindrical projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - lat_ts= \par Example \image html ex_cea.gif */ template struct cea_spheroid : public detail::cea::base_cea_spheroid { inline cea_spheroid(const Parameters& par) : detail::cea::base_cea_spheroid(par) { detail::cea::setup_cea(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class cea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void cea_init(detail::base_factory& factory) { factory.add_to_factory("cea", new cea_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_CEA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/chamb.hpp000066400000000000000000000251751177067165300304650ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_CHAMB_HPP #define GGL_PROJECTIONS_CHAMB_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace chamb{ static const double THIRD = 0.333333333333333333; static const double TOL = 1e-9; struct VECT { double r, Az; }; struct CXY { double x, y; }; // x/y for chamb struct par_chamb { struct { /* control point data */ double phi, lam; double cosphi, sinphi; VECT v; CXY p; double Az; } c[3]; CXY p; double beta_0, beta_1, beta_2; }; inline VECT /* distance and azimuth from point 1 to point 2 */ vect(double dphi, double c1, double s1, double c2, double s2, double dlam) { VECT v; double cdl, dp, dl; cdl = cos(dlam); if (fabs(dphi) > 1. || fabs(dlam) > 1.) v.r = aacos(s1 * s2 + c1 * c2 * cdl); else { /* more accurate for smaller distances */ dp = sin(.5 * dphi); dl = sin(.5 * dlam); v.r = 2. * aasin(sqrt(dp * dp + c1 * c2 * dl * dl)); } if (fabs(v.r) > TOL) v.Az = atan2(c2 * sin(dlam), c1 * s2 - s1 * c2 * cdl); else v.r = v.Az = 0.; return v; } inline double /* law of cosines */ lc(double b,double c,double a) { return aacos(.5 * (b * b + c * c - a * a) / (b * c)); } // template class, using CRTP to implement forward/inverse template struct base_chamb_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_chamb m_proj_parm; inline base_chamb_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double sinphi, cosphi, a; VECT v[3]; int i, j; sinphi = sin(lp_lat); cosphi = cos(lp_lat); for (i = 0; i < 3; ++i) { /* dist/azimiths from control */ v[i] = vect(lp_lat - this->m_proj_parm.c[i].phi, this->m_proj_parm.c[i].cosphi, this->m_proj_parm.c[i].sinphi, cosphi, sinphi, lp_lon - this->m_proj_parm.c[i].lam); if ( ! v[i].r) break; v[i].Az = adjlon(v[i].Az - this->m_proj_parm.c[i].v.Az); } if (i < 3) /* current point at control point */ { xy_x = this->m_proj_parm.c[i].p.x; xy_y = this->m_proj_parm.c[i].p.y; } else { /* point mean of intersepts */ { xy_x = this->m_proj_parm.p.x; xy_y = this->m_proj_parm.p.y; } for (i = 0; i < 3; ++i) { j = i == 2 ? 0 : i + 1; a = lc(this->m_proj_parm.c[i].v.r, v[i].r, v[j].r); if (v[i].Az < 0.) a = -a; if (! i) { /* coord comp unique to each arc */ xy_x += v[i].r * cos(a); xy_y -= v[i].r * sin(a); } else if (i == 1) { a = this->m_proj_parm.beta_1 - a; xy_x -= v[i].r * cos(a); xy_y -= v[i].r * sin(a); } else { a = this->m_proj_parm.beta_2 - a; xy_x += v[i].r * cos(a); xy_y += v[i].r * sin(a); } } xy_x *= THIRD; /* mean of arc intercepts */ xy_y *= THIRD; } } }; // Chamberlin Trimetric template void setup_chamb(Parameters& par, par_chamb& proj_parm) { int i, j; char line[10]; for (i = 0; i < 3; ++i) { /* get control point locations */ (void)sprintf(line, "rlat_%d", i+1); proj_parm.c[i].phi = pj_param(par.params, line).f; (void)sprintf(line, "rlon_%d", i+1); proj_parm.c[i].lam = pj_param(par.params, line).f; proj_parm.c[i].lam = adjlon(proj_parm.c[i].lam - par.lam0); proj_parm.c[i].cosphi = cos(proj_parm.c[i].phi); proj_parm.c[i].sinphi = sin(proj_parm.c[i].phi); } for (i = 0; i < 3; ++i) { /* inter ctl pt. distances and azimuths */ j = i == 2 ? 0 : i + 1; proj_parm.c[i].v = vect(proj_parm.c[j].phi - proj_parm.c[i].phi, proj_parm.c[i].cosphi, proj_parm.c[i].sinphi, proj_parm.c[j].cosphi, proj_parm.c[j].sinphi, proj_parm.c[j].lam - proj_parm.c[i].lam); if (! proj_parm.c[i].v.r) throw proj_exception(-25); /* co-linearity problem ignored for now */ } proj_parm.beta_0 = lc(proj_parm.c[0].v.r, proj_parm.c[2].v.r, proj_parm.c[1].v.r); proj_parm.beta_1 = lc(proj_parm.c[0].v.r, proj_parm.c[1].v.r, proj_parm.c[2].v.r); proj_parm.beta_2 = PI - proj_parm.beta_0; proj_parm.p.y = 2. * (proj_parm.c[0].p.y = proj_parm.c[1].p.y = proj_parm.c[2].v.r * sin(proj_parm.beta_0)); proj_parm.c[2].p.y = 0.; proj_parm.c[0].p.x = - (proj_parm.c[1].p.x = 0.5 * proj_parm.c[0].v.r); proj_parm.p.x = proj_parm.c[2].p.x = proj_parm.c[0].p.x + proj_parm.c[2].v.r * cos(proj_parm.beta_0); par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::chamb #endif // doxygen /*! \brief Chamberlin Trimetric projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse - lat_1= lon_1= lat_2= lon_2= lat_3= lon_3= \par Example \image html ex_chamb.gif */ template struct chamb_spheroid : public detail::chamb::base_chamb_spheroid { inline chamb_spheroid(const Parameters& par) : detail::chamb::base_chamb_spheroid(par) { detail::chamb::setup_chamb(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class chamb_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void chamb_init(detail::base_factory& factory) { factory.add_to_factory("chamb", new chamb_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_CHAMB_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/collg.hpp000066400000000000000000000141731177067165300305070ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_COLLG_HPP #define GGL_PROJECTIONS_COLLG_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace collg{ static const double FXC = 1.12837916709551257390; static const double FYC = 1.77245385090551602729; static const double ONEEPS = 1.0000001; // template class, using CRTP to implement forward/inverse template struct base_collg_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_collg_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if ((xy_y = 1. - sin(lp_lat)) <= 0.) xy_y = 0.; else xy_y = sqrt(xy_y); xy_x = FXC * lp_lon * xy_y; xy_y = FYC * (1. - xy_y); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / FYC - 1.; if (fabs(lp_lat = 1. - lp_lat * lp_lat) < 1.) lp_lat = asin(lp_lat); else if (fabs(lp_lat) > ONEEPS) throw proj_exception(); else lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; if ((lp_lon = 1. - sin(lp_lat)) <= 0.) lp_lon = 0.; else lp_lon = xy_x / (FXC * sqrt(lp_lon)); } }; // Collignon template void setup_collg(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::collg #endif // doxygen /*! \brief Collignon projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_collg.gif */ template struct collg_spheroid : public detail::collg::base_collg_spheroid { inline collg_spheroid(const Parameters& par) : detail::collg::base_collg_spheroid(par) { detail::collg::setup_collg(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class collg_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void collg_init(detail::base_factory& factory) { factory.add_to_factory("collg", new collg_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_COLLG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/crast.hpp000066400000000000000000000135521177067165300305230ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_CRAST_HPP #define GGL_PROJECTIONS_CRAST_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace crast{ static const double XM = 0.97720502380583984317; static const double RXM = 1.02332670794648848847; static const double YM = 3.06998012383946546542; static const double RYM = 0.32573500793527994772; static const double THIRD = 0.333333333333333333; // template class, using CRTP to implement forward/inverse template struct base_crast_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_crast_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { lp_lat *= THIRD; xy_x = XM * lp_lon * (2. * cos(lp_lat + lp_lat) - 1.); xy_y = YM * sin(lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = 3. * asin(xy_y * RYM); lp_lon = xy_x * RXM / (2. * cos((lp_lat + lp_lat) * THIRD) - 1); } }; // Craster Parabolic (Putnins P4) template void setup_crast(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::crast #endif // doxygen /*! \brief Craster Parabolic (Putnins P4) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_crast.gif */ template struct crast_spheroid : public detail::crast::base_crast_spheroid { inline crast_spheroid(const Parameters& par) : detail::crast::base_crast_spheroid(par) { detail::crast::setup_crast(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class crast_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void crast_init(detail::base_factory& factory) { factory.add_to_factory("crast", new crast_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_CRAST_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/denoy.hpp000066400000000000000000000131171177067165300305220ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_DENOY_HPP #define GGL_PROJECTIONS_DENOY_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace denoy{ static const double C0 = 0.95; static const double C1 = -.08333333333333333333; static const double C3 = .00166666666666666666; static const double D1 = 0.9; static const double D5 = 0.03; // template class, using CRTP to implement forward/inverse template struct base_denoy_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_denoy_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_y = lp_lat; xy_x = lp_lon; lp_lon = fabs(lp_lon); xy_x *= cos((C0 + lp_lon * (C1 + lp_lon * lp_lon * C3)) * (lp_lat * (D1 + D5 * lp_lat * lp_lat * lp_lat * lp_lat))); } }; // Denoyer Semi-Elliptical template void setup_denoy(Parameters& par) { par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::denoy #endif // doxygen /*! \brief Denoyer Semi-Elliptical projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - no inverse - Spheroid \par Example \image html ex_denoy.gif */ template struct denoy_spheroid : public detail::denoy::base_denoy_spheroid { inline denoy_spheroid(const Parameters& par) : detail::denoy::base_denoy_spheroid(par) { detail::denoy::setup_denoy(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class denoy_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void denoy_init(detail::base_factory& factory) { factory.add_to_factory("denoy", new denoy_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_DENOY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eck1.hpp000066400000000000000000000130341177067165300302250ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ECK1_HPP #define GGL_PROJECTIONS_ECK1_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck1{ static const double FC = .92131773192356127802; static const double RP = .31830988618379067154; // template class, using CRTP to implement forward/inverse template struct base_eck1_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_eck1_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = FC * lp_lon * (1. - RP * fabs(lp_lat)); xy_y = FC * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / FC; lp_lon = xy_x / (FC * (1. - RP * fabs(lp_lat))); } }; // Eckert I template void setup_eck1(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::eck1 #endif // doxygen /*! \brief Eckert I projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_eck1.gif */ template struct eck1_spheroid : public detail::eck1::base_eck1_spheroid { inline eck1_spheroid(const Parameters& par) : detail::eck1::base_eck1_spheroid(par) { detail::eck1::setup_eck1(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eck1_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eck1_init(detail::base_factory& factory) { factory.add_to_factory("eck1", new eck1_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ECK1_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eck2.hpp000066400000000000000000000141631177067165300302320ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ECK2_HPP #define GGL_PROJECTIONS_ECK2_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck2{ static const double FXC = 0.46065886596178063902; static const double FYC = 1.44720250911653531871; static const double C13 = 0.33333333333333333333; static const double ONEEPS = 1.0000001; // template class, using CRTP to implement forward/inverse template struct base_eck2_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_eck2_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = FXC * lp_lon * (xy_y = sqrt(4. - 3. * sin(fabs(lp_lat)))); xy_y = FYC * (2. - xy_y); if ( lp_lat < 0.) xy_y = -xy_y; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lon = xy_x / (FXC * ( lp_lat = 2. - fabs(xy_y) / FYC) ); lp_lat = (4. - lp_lat * lp_lat) * C13; if (fabs(lp_lat) >= 1.) { if (fabs(lp_lat) > ONEEPS) throw proj_exception(); else lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; } else lp_lat = asin(lp_lat); if (xy_y < 0) lp_lat = -lp_lat; } }; // Eckert II template void setup_eck2(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::eck2 #endif // doxygen /*! \brief Eckert II projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_eck2.gif */ template struct eck2_spheroid : public detail::eck2::base_eck2_spheroid { inline eck2_spheroid(const Parameters& par) : detail::eck2::base_eck2_spheroid(par) { detail::eck2::setup_eck2(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eck2_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eck2_init(detail::base_factory& factory) { factory.add_to_factory("eck2", new eck2_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ECK2_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eck3.hpp000066400000000000000000000265741177067165300302440ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ECK3_HPP #define GGL_PROJECTIONS_ECK3_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck3{ struct par_eck3 { double C_x, C_y, A, B; }; // template class, using CRTP to implement forward/inverse template struct base_eck3_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_eck3 m_proj_parm; inline base_eck3_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_y = this->m_proj_parm.C_y * lp_lat; xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.A + asqrt(1. - this->m_proj_parm.B * lp_lat * lp_lat)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / this->m_proj_parm.C_y; lp_lon = xy_x / (this->m_proj_parm.C_x * (this->m_proj_parm.A + asqrt(1. - this->m_proj_parm.B * lp_lat * lp_lat))); } }; template void setup(Parameters& par, par_eck3& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } // Eckert III template void setup_eck3(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = .42223820031577120149; proj_parm.C_y = .84447640063154240298; proj_parm.A = 1.; proj_parm.B = 0.4052847345693510857755; setup(par, proj_parm); } // Putnins P1 template void setup_putp1(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = 1.89490; proj_parm.C_y = 0.94745; proj_parm.A = -0.5; proj_parm.B = 0.30396355092701331433; setup(par, proj_parm); } // Wagner VI template void setup_wag6(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = proj_parm.C_y = 0.94745; proj_parm.A = 0.; proj_parm.B = 0.30396355092701331433; setup(par, proj_parm); } // Kavraisky VII template void setup_kav7(Parameters& par, par_eck3& proj_parm) { proj_parm.C_x = 0.2632401569273184856851; proj_parm.C_x = 0.8660254037844; proj_parm.C_y = 1.; proj_parm.A = 0.; proj_parm.B = 0.30396355092701331433; setup(par, proj_parm); } }} // namespace detail::eck3 #endif // doxygen /*! \brief Eckert III projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_eck3.gif */ template struct eck3_spheroid : public detail::eck3::base_eck3_spheroid { inline eck3_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_eck3(this->m_par, this->m_proj_parm); } }; /*! \brief Putnins P1 projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp1.gif */ template struct putp1_spheroid : public detail::eck3::base_eck3_spheroid { inline putp1_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_putp1(this->m_par, this->m_proj_parm); } }; /*! \brief Wagner VI projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_wag6.gif */ template struct wag6_spheroid : public detail::eck3::base_eck3_spheroid { inline wag6_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_wag6(this->m_par, this->m_proj_parm); } }; /*! \brief Kavraisky VII projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_kav7.gif */ template struct kav7_spheroid : public detail::eck3::base_eck3_spheroid { inline kav7_spheroid(const Parameters& par) : detail::eck3::base_eck3_spheroid(par) { detail::eck3::setup_kav7(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eck3_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class putp1_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class wag6_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class kav7_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eck3_init(detail::base_factory& factory) { factory.add_to_factory("eck3", new eck3_entry); factory.add_to_factory("putp1", new putp1_entry); factory.add_to_factory("wag6", new wag6_entry); factory.add_to_factory("kav7", new kav7_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ECK3_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eck4.hpp000066400000000000000000000153121177067165300302310ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ECK4_HPP #define GGL_PROJECTIONS_ECK4_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck4{ static const double C_x = .42223820031577120149; static const double C_y = 1.32650042817700232218; static const double RC_y = .75386330736002178205; static const double C_p = 3.57079632679489661922; static const double RC_p = .28004957675577868795; static const double EPS = 1e-7; static const int NITER = 6; // template class, using CRTP to implement forward/inverse template struct base_eck4_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_eck4_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double p, V, s, c; int i; p = C_p * sin(lp_lat); V = lp_lat * lp_lat; lp_lat *= 0.895168 + V * ( 0.0218849 + V * 0.00826809 ); for (i = NITER; i ; --i) { c = cos(lp_lat); s = sin(lp_lat); lp_lat -= V = (lp_lat + s * (c + 2.) - p) / (1. + c * (c + 2.) - s * s); if (fabs(V) < EPS) break; } if (!i) { xy_x = C_x * lp_lon; xy_y = lp_lat < 0. ? -C_y : C_y; } else { xy_x = C_x * lp_lon * (1. + cos(lp_lat)); xy_y = C_y * sin(lp_lat); } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double c; lp_lat = aasin(xy_y / C_y); lp_lon = xy_x / (C_x * (1. + (c = cos(lp_lat)))); lp_lat = aasin((lp_lat + sin(lp_lat) * (c + 2.)) / C_p); } }; // Eckert IV template void setup_eck4(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::eck4 #endif // doxygen /*! \brief Eckert IV projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_eck4.gif */ template struct eck4_spheroid : public detail::eck4::base_eck4_spheroid { inline eck4_spheroid(const Parameters& par) : detail::eck4::base_eck4_spheroid(par) { detail::eck4::setup_eck4(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eck4_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eck4_init(detail::base_factory& factory) { factory.add_to_factory("eck4", new eck4_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ECK4_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eck5.hpp000066400000000000000000000131631177067165300302340ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ECK5_HPP #define GGL_PROJECTIONS_ECK5_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eck5{ static const double XF = 0.44101277172455148219; static const double RXF = 2.26750802723822639137; static const double YF = 0.88202554344910296438; static const double RYF = 1.13375401361911319568; // template class, using CRTP to implement forward/inverse template struct base_eck5_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_eck5_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = XF * (1. + cos(lp_lat)) * lp_lon; xy_y = YF * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lon = RXF * xy_x / (1. + cos( lp_lat = RYF * xy_y)); } }; // Eckert V template void setup_eck5(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::eck5 #endif // doxygen /*! \brief Eckert V projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_eck5.gif */ template struct eck5_spheroid : public detail::eck5::base_eck5_spheroid { inline eck5_spheroid(const Parameters& par) : detail::eck5::base_eck5_spheroid(par) { detail::eck5::setup_eck5(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eck5_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eck5_init(detail::base_factory& factory) { factory.add_to_factory("eck5", new eck5_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ECK5_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eqc.hpp000066400000000000000000000133751177067165300301620ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_EQC_HPP #define GGL_PROJECTIONS_EQC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eqc{ struct par_eqc { double rc; }; // template class, using CRTP to implement forward/inverse template struct base_eqc_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_eqc m_proj_parm; inline base_eqc_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = this->m_proj_parm.rc * lp_lon; xy_y = lp_lat - this->m_par.phi0; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lon = xy_x / this->m_proj_parm.rc; lp_lat = xy_y + this->m_par.phi0; } }; // Equidistant Cylindrical (Plate Caree) template void setup_eqc(Parameters& par, par_eqc& proj_parm) { if ((proj_parm.rc = cos(pj_param(par.params, "rlat_ts").f)) <= 0.) throw proj_exception(-24); // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::eqc #endif // doxygen /*! \brief Equidistant Cylindrical (Plate Caree) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - lat_ts=[ - lat_0=0] \par Example \image html ex_eqc.gif */ template struct eqc_spheroid : public detail::eqc::base_eqc_spheroid { inline eqc_spheroid(const Parameters& par) : detail::eqc::base_eqc_spheroid(par) { detail::eqc::setup_eqc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eqc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eqc_init(detail::base_factory& factory) { factory.add_to_factory("eqc", new eqc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_EQC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/eqdc.hpp000066400000000000000000000223501177067165300303170ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_EQDC_HPP #define GGL_PROJECTIONS_EQDC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace eqdc{ static const double EPS10 = 1.e-10; struct par_eqdc { double phi1; double phi2; double n; double rho; double rho0; double c; double en[EN_SIZE]; int ellips; }; // template class, using CRTP to implement forward/inverse template struct base_eqdc_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; mutable par_eqdc m_proj_parm; inline base_eqdc_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { this->m_proj_parm.rho = this->m_proj_parm.c - (this->m_proj_parm.ellips ? pj_mlfn(lp_lat, sin(lp_lat), cos(lp_lat), this->m_proj_parm.en) : lp_lat); xy_x = this->m_proj_parm.rho * sin( lp_lon *= this->m_proj_parm.n ); xy_y = this->m_proj_parm.rho0 - this->m_proj_parm.rho * cos(lp_lon); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { if ((this->m_proj_parm.rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0 ) { if (this->m_proj_parm.n < 0.) { this->m_proj_parm.rho = -this->m_proj_parm.rho; xy_x = -xy_x; xy_y = -xy_y; } lp_lat = this->m_proj_parm.c - this->m_proj_parm.rho; if (this->m_proj_parm.ellips) lp_lat = pj_inv_mlfn(lp_lat, this->m_par.es, this->m_proj_parm.en); lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n; } else { lp_lon = 0.; lp_lat = this->m_proj_parm.n > 0. ? HALFPI : - HALFPI; } } #ifdef SPECIAL_FACTORS_NOT_CONVERTED inline void fac(Geographic lp, Factors &fac) const { double sinphi, cosphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); this->m_fac.code |= IS_ANAL_HK; this->m_fac.h = 1.; this->m_fac.k = this->m_proj_parm.n * (this->m_proj_parm.c - (this->m_proj_parm.ellips ? pj_mlfn(lp_lat, sinphi, cosphi, this->m_proj_parm.en) : lp_lat)) / pj_msfn(sinphi, cosphi, this->m_par.es); } #endif }; // Equidistant Conic template void setup_eqdc(Parameters& par, par_eqdc& proj_parm) { double cosphi, sinphi; int secant; proj_parm.phi1 = pj_param(par.params, "rlat_1").f; proj_parm.phi2 = pj_param(par.params, "rlat_2").f; if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) throw proj_exception(-21); pj_enfn(par.es, proj_parm.en); proj_parm.n = sinphi = sin(proj_parm.phi1); cosphi = cos(proj_parm.phi1); secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10; if( (proj_parm.ellips = (par.es > 0.)) ) { double ml1, m1; m1 = pj_msfn(sinphi, cosphi, par.es); ml1 = pj_mlfn(proj_parm.phi1, sinphi, cosphi, proj_parm.en); if (secant) { /* secant cone */ sinphi = sin(proj_parm.phi2); cosphi = cos(proj_parm.phi2); proj_parm.n = (m1 - pj_msfn(sinphi, cosphi, par.es)) / (pj_mlfn(proj_parm.phi2, sinphi, cosphi, proj_parm.en) - ml1); } proj_parm.c = ml1 + m1 / proj_parm.n; proj_parm.rho0 = proj_parm.c - pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en); } else { if (secant) proj_parm.n = (cosphi - cos(proj_parm.phi2)) / (proj_parm.phi2 - proj_parm.phi1); proj_parm.c = proj_parm.phi1 + cos(proj_parm.phi1) / proj_parm.n; proj_parm.rho0 = proj_parm.c - par.phi0; } // par.inv = e_inverse; // par.fwd = e_forward; // par.spc = fac; } }} // namespace detail::eqdc #endif // doxygen /*! \brief Equidistant Conic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_1= lat_2= \par Example \image html ex_eqdc.gif */ template struct eqdc_ellipsoid : public detail::eqdc::base_eqdc_ellipsoid { inline eqdc_ellipsoid(const Parameters& par) : detail::eqdc::base_eqdc_ellipsoid(par) { detail::eqdc::setup_eqdc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class eqdc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void eqdc_init(detail::base_factory& factory) { factory.add_to_factory("eqdc", new eqdc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_EQDC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/fahey.hpp000066400000000000000000000131171177067165300305000ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_FAHEY_HPP #define GGL_PROJECTIONS_FAHEY_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace fahey{ static const double TOL = 1e-6; // template class, using CRTP to implement forward/inverse template struct base_fahey_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_fahey_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_y = 1.819152 * ( xy_x = tan(0.5 * lp_lat) ); xy_x = 0.819152 * lp_lon * asqrt(1 - xy_x * xy_x); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = 2. * atan(xy_y /= 1.819152); lp_lon = fabs(xy_y = 1. - xy_y * xy_y) < TOL ? 0. : xy_x / (0.819152 * sqrt(xy_y)); } }; // Fahey template void setup_fahey(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::fahey #endif // doxygen /*! \brief Fahey projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_fahey.gif */ template struct fahey_spheroid : public detail::fahey::base_fahey_spheroid { inline fahey_spheroid(const Parameters& par) : detail::fahey::base_fahey_spheroid(par) { detail::fahey::setup_fahey(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class fahey_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void fahey_init(detail::base_factory& factory) { factory.add_to_factory("fahey", new fahey_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_FAHEY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/fouc_s.hpp000066400000000000000000000155031177067165300306630ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_FOUC_S_HPP #define GGL_PROJECTIONS_FOUC_S_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace fouc_s{ static const int MAX_ITER = 10; static const double LOOP_TOL = 1e-7; struct par_fouc_s { double n, n1; }; // template class, using CRTP to implement forward/inverse template struct base_fouc_s_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_fouc_s m_proj_parm; inline base_fouc_s_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double t; t = cos(lp_lat); xy_x = lp_lon * t / (this->m_proj_parm.n + this->m_proj_parm.n1 * t); xy_y = this->m_proj_parm.n * lp_lat + this->m_proj_parm.n1 * sin(lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double V; int i; if (this->m_proj_parm.n) { lp_lat = xy_y; for (i = MAX_ITER; i ; --i) { lp_lat -= V = (this->m_proj_parm.n * lp_lat + this->m_proj_parm.n1 * sin(lp_lat) - xy_y ) / (this->m_proj_parm.n + this->m_proj_parm.n1 * cos(lp_lat)); if (fabs(V) < LOOP_TOL) break; } if (!i) lp_lat = xy_y < 0. ? -HALFPI : HALFPI; } else lp_lat = aasin(xy_y); V = cos(lp_lat); lp_lon = xy_x * (this->m_proj_parm.n + this->m_proj_parm.n1 * V) / V; } }; // Foucaut Sinusoidal template void setup_fouc_s(Parameters& par, par_fouc_s& proj_parm) { proj_parm.n = pj_param(par.params, "dn").f; if (proj_parm.n < 0. || proj_parm.n > 1.) throw proj_exception(-99); proj_parm.n1 = 1. - proj_parm.n; par.es = 0; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::fouc_s #endif // doxygen /*! \brief Foucaut Sinusoidal projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_fouc_s.gif */ template struct fouc_s_spheroid : public detail::fouc_s::base_fouc_s_spheroid { inline fouc_s_spheroid(const Parameters& par) : detail::fouc_s::base_fouc_s_spheroid(par) { detail::fouc_s::setup_fouc_s(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class fouc_s_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void fouc_s_init(detail::base_factory& factory) { factory.add_to_factory("fouc_s", new fouc_s_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_FOUC_S_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/gall.hpp000066400000000000000000000132251177067165300303230ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GALL_HPP #define GGL_PROJECTIONS_GALL_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gall{ static const double YF = 1.70710678118654752440; static const double XF = 0.70710678118654752440; static const double RYF = 0.58578643762690495119; static const double RXF = 1.41421356237309504880; // template class, using CRTP to implement forward/inverse template struct base_gall_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_gall_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = XF * lp_lon; xy_y = YF * tan(.5 * lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lon = RXF * xy_x; lp_lat = 2. * atan(xy_y * RYF); } }; // Gall (Gall Stereographic) template void setup_gall(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::gall #endif // doxygen /*! \brief Gall (Gall Stereographic) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_gall.gif */ template struct gall_spheroid : public detail::gall::base_gall_spheroid { inline gall_spheroid(const Parameters& par) : detail::gall::base_gall_spheroid(par) { detail::gall::setup_gall(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class gall_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void gall_init(detail::base_factory& factory) { factory.add_to_factory("gall", new gall_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GALL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/geocent.hpp000066400000000000000000000127511177067165300310330ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GEOCENT_HPP #define GGL_PROJECTIONS_GEOCENT_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace geocent{ // template class, using CRTP to implement forward/inverse template struct base_geocent_other : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_geocent_other(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = lp_lon; xy_y = lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y; lp_lon = xy_x; } }; // Geocentric template void setup_geocent(Parameters& par) { par.is_geocent = 1; par.x0 = 0.0; par.y0 = 0.0; // par.inv = inverse; // par.fwd = forward; } }} // namespace detail::geocent #endif // doxygen /*! \brief Geocentric projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics \par Example \image html ex_geocent.gif */ template struct geocent_other : public detail::geocent::base_geocent_other { inline geocent_other(const Parameters& par) : detail::geocent::base_geocent_other(par) { detail::geocent::setup_geocent(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class geocent_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void geocent_init(detail::base_factory& factory) { factory.add_to_factory("geocent", new geocent_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GEOCENT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/geos.hpp000066400000000000000000000311051177067165300303360ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GEOS_HPP #define GGL_PROJECTIONS_GEOS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace geos{ struct par_geos { double h; double radius_p; double radius_p2; double radius_p_inv2; double radius_g; double radius_g_1; double C; }; // template class, using CRTP to implement forward/inverse template struct base_geos_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_geos m_proj_parm; inline base_geos_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double r, Vx, Vy, Vz, tmp; /* Calculation of geocentric latitude. */ lp_lat = atan (this->m_proj_parm.radius_p2 * tan (lp_lat)); /* Calculation of the three components of the vector from satellite to ** position on earth surface (lon,lat).*/ r = (this->m_proj_parm.radius_p) / boost::math::hypot(this->m_proj_parm.radius_p * cos (lp_lat), sin (lp_lat)); Vx = r * cos (lp_lon) * cos (lp_lat); Vy = r * sin (lp_lon) * cos (lp_lat); Vz = r * sin (lp_lat); /* Check visibility. */ if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz * this->m_proj_parm.radius_p_inv2) < 0.) throw proj_exception();; /* Calculation based on view angles from satellite. */ tmp = this->m_proj_parm.radius_g - Vx; xy_x = this->m_proj_parm.radius_g_1 * atan (Vy / tmp); xy_y = this->m_proj_parm.radius_g_1 * atan (Vz / boost::math::hypot (Vy, tmp)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double Vx, Vy, Vz, a, b, det, k; /* Setting three components of vector from satellite to position.*/ Vx = -1.0; Vy = tan (xy_x / this->m_proj_parm.radius_g_1); Vz = tan (xy_y / this->m_proj_parm.radius_g_1) * boost::math::hypot(1.0, Vy); /* Calculation of terms in cubic equation and determinant.*/ a = Vz / this->m_proj_parm.radius_p; a = Vy * Vy + a * a + Vx * Vx; b = 2 * this->m_proj_parm.radius_g * Vx; if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.) throw proj_exception();; /* Calculation of three components of vector from satellite to position.*/ k = (-b - sqrt(det)) / (2. * a); Vx = this->m_proj_parm.radius_g + k * Vx; Vy *= k; Vz *= k; /* Calculation of longitude and latitude.*/ lp_lon = atan2 (Vy, Vx); lp_lat = atan (Vz * cos (lp_lon) / Vx); lp_lat = atan (this->m_proj_parm.radius_p_inv2 * tan (lp_lat)); } }; // template class, using CRTP to implement forward/inverse template struct base_geos_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_geos m_proj_parm; inline base_geos_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double Vx, Vy, Vz, tmp; /* Calculation of the three components of the vector from satellite to ** position on earth surface (lon,lat).*/ tmp = cos(lp_lat); Vx = cos (lp_lon) * tmp; Vy = sin (lp_lon) * tmp; Vz = sin (lp_lat); /* Check visibility.*/ if (((this->m_proj_parm.radius_g - Vx) * Vx - Vy * Vy - Vz * Vz) < 0.) throw proj_exception();; /* Calculation based on view angles from satellite.*/ tmp = this->m_proj_parm.radius_g - Vx; xy_x = this->m_proj_parm.radius_g_1 * atan(Vy / tmp); xy_y = this->m_proj_parm.radius_g_1 * atan(Vz / boost::math::hypot(Vy, tmp)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double Vx, Vy, Vz, a, b, det, k; /* Setting three components of vector from satellite to position.*/ Vx = -1.0; Vy = tan (xy_x / (this->m_proj_parm.radius_g - 1.0)); Vz = tan (xy_y / (this->m_proj_parm.radius_g - 1.0)) * sqrt (1.0 + Vy * Vy); /* Calculation of terms in cubic equation and determinant.*/ a = Vy * Vy + Vz * Vz + Vx * Vx; b = 2 * this->m_proj_parm.radius_g * Vx; if ((det = (b * b) - 4 * a * this->m_proj_parm.C) < 0.) throw proj_exception();; /* Calculation of three components of vector from satellite to position.*/ k = (-b - sqrt(det)) / (2 * a); Vx = this->m_proj_parm.radius_g + k * Vx; Vy *= k; Vz *= k; /* Calculation of longitude and latitude.*/ lp_lon = atan2 (Vy, Vx); lp_lat = atan (Vz * cos (lp_lon) / Vx); } }; // Geostationary Satellite View template void setup_geos(Parameters& par, par_geos& proj_parm) { if ((proj_parm.h = pj_param(par.params, "dh").f) <= 0.) throw proj_exception(-30); if (par.phi0) throw proj_exception(-46); proj_parm.radius_g = 1. + (proj_parm.radius_g_1 = proj_parm.h / par.a); proj_parm.C = proj_parm.radius_g * proj_parm.radius_g - 1.0; if (par.es) { proj_parm.radius_p = sqrt (par.one_es); proj_parm.radius_p2 = par.one_es; proj_parm.radius_p_inv2 = par.rone_es; // par.inv = e_inverse; // par.fwd = e_forward; } else { proj_parm.radius_p = proj_parm.radius_p2 = proj_parm.radius_p_inv2 = 1.0; // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::geos #endif // doxygen /*! \brief Geostationary Satellite View projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - h= \par Example \image html ex_geos.gif */ template struct geos_ellipsoid : public detail::geos::base_geos_ellipsoid { inline geos_ellipsoid(const Parameters& par) : detail::geos::base_geos_ellipsoid(par) { detail::geos::setup_geos(this->m_par, this->m_proj_parm); } }; /*! \brief Geostationary Satellite View projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - h= \par Example \image html ex_geos.gif */ template struct geos_spheroid : public detail::geos::base_geos_spheroid { inline geos_spheroid(const Parameters& par) : detail::geos::base_geos_spheroid(par) { detail::geos::setup_geos(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class geos_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void geos_init(detail::base_factory& factory) { factory.add_to_factory("geos", new geos_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GEOS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/gins8.hpp000066400000000000000000000130061177067165300304310ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GINS8_HPP #define GGL_PROJECTIONS_GINS8_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gins8{ static const double Cl = 0.000952426; static const double Cp = 0.162388; static const double C12 = 0.08333333333333333; // template class, using CRTP to implement forward/inverse template struct base_gins8_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_gins8_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double t = lp_lat * lp_lat; xy_y = lp_lat * (1. + t * C12); xy_x = lp_lon * (1. - Cp * t); t = lp_lon * lp_lon; xy_x *= (0.87 - Cl * t * t); } }; // Ginsburg VIII (TsNIIGAiK) template void setup_gins8(Parameters& par) { par.es = 0.; // par.inv = 0; // par.fwd = s_forward; } }} // namespace detail::gins8 #endif // doxygen /*! \brief Ginsburg VIII (TsNIIGAiK) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - no inverse \par Example \image html ex_gins8.gif */ template struct gins8_spheroid : public detail::gins8::base_gins8_spheroid { inline gins8_spheroid(const Parameters& par) : detail::gins8::base_gins8_spheroid(par) { detail::gins8::setup_gins8(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class gins8_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void gins8_init(detail::base_factory& factory) { factory.add_to_factory("gins8", new gins8_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GINS8_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/gn_sinu.hpp000066400000000000000000000375651177067165300310630ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GN_SINU_HPP #define GGL_PROJECTIONS_GN_SINU_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gn_sinu{ static const double EPS10 = 1e-10; static const int MAX_ITER = 8; static const double LOOP_TOL = 1e-7; struct par_gn_sinu { double en[EN_SIZE]; double m, n, C_x, C_y; }; /* Ellipsoidal Sinusoidal only */ // template class, using CRTP to implement forward/inverse template struct base_gn_sinu_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_gn_sinu m_proj_parm; inline base_gn_sinu_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double s, c; xy_y = pj_mlfn(lp_lat, s = sin(lp_lat), c = cos(lp_lat), this->m_proj_parm.en); xy_x = lp_lon * c / sqrt(1. - this->m_par.es * s * s); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double s; boost::ignore_unused_variable_warning(s); if ((s = fabs(lp_lat = pj_inv_mlfn(xy_y, this->m_par.es, this->m_proj_parm.en))) < HALFPI) { s = sin(lp_lat); lp_lon = xy_x * sqrt(1. - this->m_par.es * s * s) / cos(lp_lat); } else if ((s - EPS10) < HALFPI) lp_lon = 0.; else throw proj_exception();; return; } /* General spherical sinusoidals */ }; // template class, using CRTP to implement forward/inverse template struct base_gn_sinu_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_gn_sinu m_proj_parm; inline base_gn_sinu_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if (!this->m_proj_parm.m) lp_lat = this->m_proj_parm.n != 1. ? aasin(this->m_proj_parm.n * sin(lp_lat)): lp_lat; else { double k, V; int i; k = this->m_proj_parm.n * sin(lp_lat); for (i = MAX_ITER; i ; --i) { lp_lat -= V = (this->m_proj_parm.m * lp_lat + sin(lp_lat) - k) / (this->m_proj_parm.m + cos(lp_lat)); if (fabs(V) < LOOP_TOL) break; } if (!i) throw proj_exception(); } xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.m + cos(lp_lat)); xy_y = this->m_proj_parm.C_y * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double s; boost::ignore_unused_variable_warning(s); xy_y /= this->m_proj_parm.C_y; lp_lat = this->m_proj_parm.m ? aasin((this->m_proj_parm.m * xy_y + sin(xy_y)) / this->m_proj_parm.n) : ( this->m_proj_parm.n != 1. ? aasin(sin(xy_y) / this->m_proj_parm.n) : xy_y ); lp_lon = xy_x / (this->m_proj_parm.C_x * (this->m_proj_parm.m + cos(xy_y))); } }; template void setup(Parameters& par, par_gn_sinu& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0; proj_parm.C_x = (proj_parm.C_y = sqrt((proj_parm.m + 1.) / proj_parm.n))/(proj_parm.m + 1.); // par.inv = s_inverse; // par.fwd = s_forward; } // General Sinusoidal Series template void setup_gn_sinu(Parameters& par, par_gn_sinu& proj_parm) { if (pj_param(par.params, "tn").i && pj_param(par.params, "tm").i) { proj_parm.n = pj_param(par.params, "dn").f; proj_parm.m = pj_param(par.params, "dm").f; } else throw proj_exception(-99); setup(par, proj_parm); } // Sinusoidal (Sanson-Flamsteed) template void setup_sinu(Parameters& par, par_gn_sinu& proj_parm) { pj_enfn(par.es, proj_parm.en); if (par.es) { // par.inv = e_inverse; // par.fwd = e_forward; } else { proj_parm.n = 1.; proj_parm.m = 0.; setup(par, proj_parm); } } // Eckert VI template void setup_eck6(Parameters& par, par_gn_sinu& proj_parm) { proj_parm.m = 1.; proj_parm.n = 2.570796326794896619231321691; setup(par, proj_parm); } // McBryde-Thomas Flat-Polar Sinusoidal template void setup_mbtfps(Parameters& par, par_gn_sinu& proj_parm) { proj_parm.m = 0.5; proj_parm.n = 1.785398163397448309615660845; setup(par, proj_parm); } }} // namespace detail::gn_sinu #endif // doxygen /*! \brief Sinusoidal (Sanson-Flamsteed) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - Ellipsoid \par Example \image html ex_sinu.gif */ template struct sinu_ellipsoid : public detail::gn_sinu::base_gn_sinu_ellipsoid { inline sinu_ellipsoid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_ellipsoid(par) { detail::gn_sinu::setup_sinu(this->m_par, this->m_proj_parm); } }; /*! \brief General Sinusoidal Series projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - m= n= \par Example \image html ex_gn_sinu.gif */ template struct gn_sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { inline gn_sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_gn_sinu(this->m_par, this->m_proj_parm); } }; /*! \brief Sinusoidal (Sanson-Flamsteed) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - Ellipsoid \par Example \image html ex_sinu.gif */ template struct sinu_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { inline sinu_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_sinu(this->m_par, this->m_proj_parm); } }; /*! \brief Eckert VI projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_eck6.gif */ template struct eck6_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { inline eck6_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_eck6(this->m_par, this->m_proj_parm); } }; /*! \brief McBryde-Thomas Flat-Polar Sinusoidal projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_mbtfps.gif */ template struct mbtfps_spheroid : public detail::gn_sinu::base_gn_sinu_spheroid { inline mbtfps_spheroid(const Parameters& par) : detail::gn_sinu::base_gn_sinu_spheroid(par) { detail::gn_sinu::setup_mbtfps(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class gn_sinu_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class sinu_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class eck6_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class mbtfps_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void gn_sinu_init(detail::base_factory& factory) { factory.add_to_factory("gn_sinu", new gn_sinu_entry); factory.add_to_factory("sinu", new sinu_entry); factory.add_to_factory("eck6", new eck6_entry); factory.add_to_factory("mbtfps", new mbtfps_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GN_SINU_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/gnom.hpp000066400000000000000000000223271177067165300303470ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GNOM_HPP #define GGL_PROJECTIONS_GNOM_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gnom{ static const double EPS10 = 1.e-10; static const int N_POLE = 0; static const int S_POLE = 1; static const int EQUIT = 2; static const int OBLIQ = 3; struct par_gnom { double sinph0; double cosph0; int mode; }; // template class, using CRTP to implement forward/inverse template struct base_gnom_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_gnom m_proj_parm; inline base_gnom_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, cosphi, sinphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); coslam = cos(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: xy_y = cosphi * coslam; break; case OBLIQ: xy_y = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosphi * coslam; break; case S_POLE: xy_y = - sinphi; break; case N_POLE: xy_y = sinphi; break; } if (xy_y <= EPS10) throw proj_exception();; xy_x = (xy_y = 1. / xy_y) * cosphi * sin(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: xy_y *= sinphi; break; case OBLIQ: xy_y *= this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam; break; case N_POLE: coslam = - coslam; case S_POLE: xy_y *= cosphi * coslam; break; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rh, cosz, sinz; rh = boost::math::hypot(xy_x, xy_y); sinz = sin(lp_lat = atan(rh)); cosz = sqrt(1. - sinz * sinz); if (fabs(rh) <= EPS10) { lp_lat = this->m_par.phi0; lp_lon = 0.; } else { switch (this->m_proj_parm.mode) { case OBLIQ: lp_lat = cosz * this->m_proj_parm.sinph0 + xy_y * sinz * this->m_proj_parm.cosph0 / rh; if (fabs(lp_lat) >= 1.) lp_lat = lp_lat > 0. ? HALFPI : - HALFPI; else lp_lat = asin(lp_lat); xy_y = (cosz - this->m_proj_parm.sinph0 * sin(lp_lat)) * rh; xy_x *= sinz * this->m_proj_parm.cosph0; break; case EQUIT: lp_lat = xy_y * sinz / rh; if (fabs(lp_lat) >= 1.) lp_lat = lp_lat > 0. ? HALFPI : - HALFPI; else lp_lat = asin(lp_lat); xy_y = cosz * rh; xy_x *= sinz; break; case S_POLE: lp_lat -= HALFPI; break; case N_POLE: lp_lat = HALFPI - lp_lat; xy_y = -xy_y; break; } lp_lon = atan2(xy_x, xy_y); } } }; // Gnomonic template void setup_gnom(Parameters& par, par_gnom& proj_parm) { if (fabs(fabs(par.phi0) - HALFPI) < EPS10) proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; else if (fabs(par.phi0) < EPS10) proj_parm.mode = EQUIT; else { proj_parm.mode = OBLIQ; proj_parm.sinph0 = sin(par.phi0); proj_parm.cosph0 = cos(par.phi0); } // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::gnom #endif // doxygen /*! \brief Gnomonic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid \par Example \image html ex_gnom.gif */ template struct gnom_spheroid : public detail::gnom::base_gnom_spheroid { inline gnom_spheroid(const Parameters& par) : detail::gnom::base_gnom_spheroid(par) { detail::gnom::setup_gnom(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class gnom_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void gnom_init(detail::base_factory& factory) { factory.add_to_factory("gnom", new gnom_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GNOM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/goode.hpp000066400000000000000000000152521177067165300305030ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GOODE_HPP #define GGL_PROJECTIONS_GOODE_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace goode{ static const double Y_COR = 0.05280; static const double PHI_LIM = .71093078197902358062; template struct par_goode { sinu_ellipsoid sinu; moll_spheroid moll; par_goode(const Parameters& par) : sinu(par), moll(par) {} }; // template class, using CRTP to implement forward/inverse template struct base_goode_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_goode m_proj_parm; inline base_goode_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par), m_proj_parm(par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if (fabs(lp_lat) <= PHI_LIM) this->m_proj_parm.sinu.fwd(lp_lon, lp_lat, xy_x, xy_y); else { this->m_proj_parm.moll.fwd(lp_lon, lp_lat, xy_x, xy_y); xy_y -= lp_lat >= 0.0 ? Y_COR : -Y_COR; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { if (fabs(xy_y) <= PHI_LIM) this->m_proj_parm.sinu.inv(xy_x, xy_y, lp_lon, lp_lat); else { xy_y += xy_y >= 0.0 ? Y_COR : -Y_COR; this->m_proj_parm.moll.inv(xy_x, xy_y, lp_lon, lp_lat); } } }; // Goode Homolosine template void setup_goode(Parameters& par, par_goode& proj_parm) { par.es = 0.; // par.fwd = s_forward; // par.inv = s_inverse; } }} // namespace detail::goode #endif // doxygen /*! \brief Goode Homolosine projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_goode.gif */ template struct goode_spheroid : public detail::goode::base_goode_spheroid { inline goode_spheroid(const Parameters& par) : detail::goode::base_goode_spheroid(par) { detail::goode::setup_goode(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class goode_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void goode_init(detail::base_factory& factory) { factory.add_to_factory("goode", new goode_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GOODE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/gstmerc.hpp000066400000000000000000000211321177067165300310440ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_GSTMERC_HPP #define GGL_PROJECTIONS_GSTMERC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace gstmerc{ struct par_gstmerc { double lamc; double phic; double c; double n1; double n2; double XS; double YS; }; // template class, using CRTP to implement forward/inverse template struct base_gstmerc_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_gstmerc m_proj_parm; inline base_gstmerc_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double L, Ls, sinLs1, Ls1; L= this->m_proj_parm.n1*lp_lon; Ls= this->m_proj_parm.c+this->m_proj_parm.n1*log(pj_tsfn(-1.0*lp_lat,-1.0*sin(lp_lat),this->m_par.e)); sinLs1= sin(L)/cosh(Ls); Ls1= log(pj_tsfn(-1.0*asin(sinLs1),0.0,0.0)); xy_x= (this->m_proj_parm.XS + this->m_proj_parm.n2*Ls1)*this->m_par.ra; xy_y= (this->m_proj_parm.YS + this->m_proj_parm.n2*atan(sinh(Ls)/cos(L)))*this->m_par.ra; /*fprintf(stderr,"fwd:\nL =%16.13f\nLs =%16.13f\nLs1 =%16.13f\nLP(%16.13f,%16.13f)=XY(%16.4f,%16.4f)\n",L,Ls,Ls1,lp_lon+this->m_par.lam0,lp_lat,(xy_x*this->m_par.a + this->m_par.x0)*this->m_par.to_meter,(xy_y*this->m_par.a + this->m_par.y0)*this->m_par.to_meter);*/ } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double L, LC, sinC; L= atan(sinh((xy_x*this->m_par.a - this->m_proj_parm.XS)/this->m_proj_parm.n2)/cos((xy_y*this->m_par.a - this->m_proj_parm.YS)/this->m_proj_parm.n2)); sinC= sin((xy_y*this->m_par.a - this->m_proj_parm.YS)/this->m_proj_parm.n2)/cosh((xy_x*this->m_par.a - this->m_proj_parm.XS)/this->m_proj_parm.n2); LC= log(pj_tsfn(-1.0*asin(sinC),0.0,0.0)); lp_lon= L/this->m_proj_parm.n1; lp_lat= -1.0*pj_phi2(exp((LC-this->m_proj_parm.c)/this->m_proj_parm.n1),this->m_par.e); /*fprintf(stderr,"inv:\nL =%16.13f\nsinC =%16.13f\nLC =%16.13f\nXY(%16.4f,%16.4f)=LP(%16.13f,%16.13f)\n",L,sinC,LC,((xy_x/this->m_par.ra)+this->m_par.x0)/this->m_par.to_meter,((xy_y/this->m_par.ra)+this->m_par.y0)/this->m_par.to_meter,lp_lon+this->m_par.lam0,lp_lat);*/ } }; // Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion) template void setup_gstmerc(Parameters& par, par_gstmerc& proj_parm) { proj_parm.lamc= par.lam0; proj_parm.n1= sqrt(1.0+par.es*pow(cos(par.phi0),4.0)/(1.0-par.es)); proj_parm.phic= asin(sin(par.phi0)/proj_parm.n1); proj_parm.c= log(pj_tsfn(-1.0*proj_parm.phic,0.0,0.0)) -proj_parm.n1*log(pj_tsfn(-1.0*par.phi0,-1.0*sin(par.phi0),par.e)); proj_parm.n2= par.k0*par.a*sqrt(1.0-par.es)/(1.0-par.es*sin(par.phi0)*sin(par.phi0)); proj_parm.XS= 0; /* -par.x0 */ proj_parm.YS= -1.0*proj_parm.n2*proj_parm.phic; /* -par.y0 */ // par.inv= s_inverse; // par.fwd= s_forward; /*fprintf(stderr,"a (m) =%16.4f\ne =%16.13f\nl0(rad)=%16.13f\np0(rad)=%16.13f\nk0 =%16.4f\nX0 (m)=%16.4f\nY0 (m)=%16.4f\n\nlC(rad)=%16.13f\npC(rad)=%16.13f\nc =%16.13f\nn1 =%16.13f\nn2 (m) =%16.4f\nXS (m) =%16.4f\nYS (m) =%16.4f\n", par.a, par.e, par.lam0, par.phi0, par.k0, par.x0, par.y0, proj_parm.lamc, proj_parm.phic, proj_parm.c, proj_parm.n1, proj_parm.n2, proj_parm.XS +par.x0, proj_parm.YS + par.y0); */ } }} // namespace detail::gstmerc #endif // doxygen /*! \brief Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - lat_0= lon_0= k_0= \par Example \image html ex_gstmerc.gif */ template struct gstmerc_spheroid : public detail::gstmerc::base_gstmerc_spheroid { inline gstmerc_spheroid(const Parameters& par) : detail::gstmerc::base_gstmerc_spheroid(par) { detail::gstmerc::setup_gstmerc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class gstmerc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void gstmerc_init(detail::base_factory& factory) { factory.add_to_factory("gstmerc", new gstmerc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_GSTMERC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/hammer.hpp000066400000000000000000000141731177067165300306600ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_HAMMER_HPP #define GGL_PROJECTIONS_HAMMER_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace hammer{ struct par_hammer { double w; double m, rm; }; // template class, using CRTP to implement forward/inverse template struct base_hammer_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_hammer m_proj_parm; inline base_hammer_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double cosphi, d; d = sqrt(2./(1. + (cosphi = cos(lp_lat)) * cos(lp_lon *= this->m_proj_parm.w))); xy_x = this->m_proj_parm.m * d * cosphi * sin(lp_lon); xy_y = this->m_proj_parm.rm * d * sin(lp_lat); } }; // Hammer & Eckert-Greifendorff template void setup_hammer(Parameters& par, par_hammer& proj_parm) { if (pj_param(par.params, "tW").i) { if ((proj_parm.w = fabs(pj_param(par.params, "dW").f)) <= 0.) throw proj_exception(-27); } else proj_parm.w = .5; if (pj_param(par.params, "tM").i) { if ((proj_parm.m = fabs(pj_param(par.params, "dM").f)) <= 0.) throw proj_exception(-27); } else proj_parm.m = 1.; proj_parm.rm = 1. / proj_parm.m; proj_parm.m /= proj_parm.w; par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::hammer #endif // doxygen /*! \brief Hammer & Eckert-Greifendorff projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse - W= M= \par Example \image html ex_hammer.gif */ template struct hammer_spheroid : public detail::hammer::base_hammer_spheroid { inline hammer_spheroid(const Parameters& par) : detail::hammer::base_hammer_spheroid(par) { detail::hammer::setup_hammer(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class hammer_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void hammer_init(detail::base_factory& factory) { factory.add_to_factory("hammer", new hammer_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_HAMMER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/hatano.hpp000066400000000000000000000163041177067165300306570ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_HATANO_HPP #define GGL_PROJECTIONS_HATANO_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace hatano{ static const int NITER = 20; static const double EPS = 1e-7; static const double ONETOL = 1.000001; static const double CN = 2.67595; static const double CS = 2.43763; static const double RCN = 0.37369906014686373063; static const double RCS = 0.41023453108141924738; static const double FYCN = 1.75859; static const double FYCS = 1.93052; static const double RYCN = 0.56863737426006061674; static const double RYCS = 0.51799515156538134803; static const double FXC = 0.85; static const double RXC = 1.17647058823529411764; // template class, using CRTP to implement forward/inverse template struct base_hatano_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_hatano_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double th1, c; int i; c = sin(lp_lat) * (lp_lat < 0. ? CS : CN); for (i = NITER; i; --i) { lp_lat -= th1 = (lp_lat + sin(lp_lat) - c) / (1. + cos(lp_lat)); if (fabs(th1) < EPS) break; } xy_x = FXC * lp_lon * cos(lp_lat *= .5); xy_y = sin(lp_lat) * (lp_lat < 0. ? FYCS : FYCN); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double th; th = xy_y * ( xy_y < 0. ? RYCS : RYCN); if (fabs(th) > 1.) if (fabs(th) > ONETOL) throw proj_exception(); else th = th > 0. ? HALFPI : - HALFPI; else th = asin(th); lp_lon = RXC * xy_x / cos(th); th += th; lp_lat = (th + sin(th)) * (xy_y < 0. ? RCS : RCN); if (fabs(lp_lat) > 1.) if (fabs(lp_lat) > ONETOL) throw proj_exception(); else lp_lat = lp_lat > 0. ? HALFPI : - HALFPI; else lp_lat = asin(lp_lat); } }; // Hatano Asymmetrical Equal Area template void setup_hatano(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::hatano #endif // doxygen /*! \brief Hatano Asymmetrical Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_hatano.gif */ template struct hatano_spheroid : public detail::hatano::base_hatano_spheroid { inline hatano_spheroid(const Parameters& par) : detail::hatano::base_hatano_spheroid(par) { detail::hatano::setup_hatano(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class hatano_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void hatano_init(detail::base_factory& factory) { factory.add_to_factory("hatano", new hatano_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_HATANO_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/imw_p.hpp000066400000000000000000000277001177067165300305220ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_IMW_P_HPP #define GGL_PROJECTIONS_IMW_P_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace imw_p{ static const double TOL = 1e-10; static const double EPS = 1e-10; struct PXY { double x, y; }; // x/y projection specific struct par_imw_p { double P, Pp, Q, Qp, R_1, R_2, sphi_1, sphi_2, C2; double phi_1, phi_2, lam_1; double en[EN_SIZE]; int mode; /* = 0, phi_1 and phi_2 != 0, = 1, phi_1 = 0, = -1 phi_2 = 0 */ }; template inline int phi12(Parameters& par, par_imw_p& proj_parm, double *del, double *sig) { int err = 0; if (!pj_param(par.params, "tlat_1").i || !pj_param(par.params, "tlat_2").i) { err = -41; } else { proj_parm.phi_1 = pj_param(par.params, "rlat_1").f; proj_parm.phi_2 = pj_param(par.params, "rlat_2").f; *del = 0.5 * (proj_parm.phi_2 - proj_parm.phi_1); *sig = 0.5 * (proj_parm.phi_2 + proj_parm.phi_1); err = (fabs(*del) < EPS || fabs(*sig) < EPS) ? -42 : 0; } return err; } template inline PXY loc_for(double const& lp_lam, double const& lp_phi, const Parameters& par, par_imw_p const& proj_parm, double *yc) { PXY xy; if (! lp_phi) { xy.x = lp_lam; xy.y = 0.; } else { double xa, ya, xb, yb, xc, D, B, m, sp, t, R, C; sp = sin(lp_phi); m = pj_mlfn(lp_phi, sp, cos(lp_phi), proj_parm.en); xa = proj_parm.Pp + proj_parm.Qp * m; ya = proj_parm.P + proj_parm.Q * m; R = 1. / (tan(lp_phi) * sqrt(1. - par.es * sp * sp)); C = sqrt(R * R - xa * xa); if (lp_phi < 0.) C = - C; C += ya - R; if (proj_parm.mode < 0) { xb = lp_lam; yb = proj_parm.C2; } else { t = lp_lam * proj_parm.sphi_2; xb = proj_parm.R_2 * sin(t); yb = proj_parm.C2 + proj_parm.R_2 * (1. - cos(t)); } if (proj_parm.mode > 0) { xc = lp_lam; *yc = 0.; } else { t = lp_lam * proj_parm.sphi_1; xc = proj_parm.R_1 * sin(t); *yc = proj_parm.R_1 * (1. - cos(t)); } D = (xb - xc)/(yb - *yc); B = xc + D * (C + R - *yc); xy.x = D * sqrt(R * R * (1 + D * D) - B * B); if (lp_phi > 0) xy.x = - xy.x; xy.x = (B + xy.x) / (1. + D * D); xy.y = sqrt(R * R - xy.x * xy.x); if (lp_phi > 0) xy.y = - xy.y; xy.y += C + R; } return (xy); } template inline void xy(Parameters& par, par_imw_p& proj_parm, double phi, double *x, double *y, double *sp, double *R) { double F; *sp = sin(phi); *R = 1./(tan(phi) * sqrt(1. - par.es * *sp * *sp )); F = proj_parm.lam_1 * *sp; *y = *R * (1 - cos(F)); *x = *R * sin(F); } // template class, using CRTP to implement forward/inverse template struct base_imw_p_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_imw_p m_proj_parm; inline base_imw_p_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double yc = 0; PXY xy = loc_for(lp_lon, lp_lat, this->m_par, m_proj_parm, &yc); xy_x = xy.x; xy_y = xy.y; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { PXY t; double yc = 0; lp_lat = this->m_proj_parm.phi_2; lp_lon = xy_x / cos(lp_lat); do { t = loc_for(lp_lon, lp_lat, this->m_par, m_proj_parm, &yc); lp_lat = ((lp_lat - this->m_proj_parm.phi_1) * (xy_y - yc) / (t.y - yc)) + this->m_proj_parm.phi_1; lp_lon = lp_lon * xy_x / t.x; } while (fabs(t.x - xy_x) > TOL || fabs(t.y - xy_y) > TOL); } }; // International Map of the World Polyconic template void setup_imw_p(Parameters& par, par_imw_p& proj_parm) { double del, sig, s, t, x1, x2, T2, y1, m1, m2, y2; int i; pj_enfn(par.es, proj_parm.en); if( (i = phi12(par, proj_parm, &del, &sig)) != 0) throw proj_exception(i); if (proj_parm.phi_2 < proj_parm.phi_1) { /* make sure proj_parm.phi_1 most southerly */ del = proj_parm.phi_1; proj_parm.phi_1 = proj_parm.phi_2; proj_parm.phi_2 = del; } if (pj_param(par.params, "tlon_1").i) proj_parm.lam_1 = pj_param(par.params, "rlon_1").f; else { /* use predefined based upon latitude */ sig = fabs(sig * RAD_TO_DEG); if (sig <= 60) sig = 2.; else if (sig <= 76) sig = 4.; else sig = 8.; proj_parm.lam_1 = sig * DEG_TO_RAD; } proj_parm.mode = 0; if (proj_parm.phi_1) xy(par, proj_parm, proj_parm.phi_1, &x1, &y1, &proj_parm.sphi_1, &proj_parm.R_1); else { proj_parm.mode = 1; y1 = 0.; x1 = proj_parm.lam_1; } if (proj_parm.phi_2) xy(par, proj_parm, proj_parm.phi_2, &x2, &T2, &proj_parm.sphi_2, &proj_parm.R_2); else { proj_parm.mode = -1; T2 = 0.; x2 = proj_parm.lam_1; } m1 = pj_mlfn(proj_parm.phi_1, proj_parm.sphi_1, cos(proj_parm.phi_1), proj_parm.en); m2 = pj_mlfn(proj_parm.phi_2, proj_parm.sphi_2, cos(proj_parm.phi_2), proj_parm.en); t = m2 - m1; s = x2 - x1; y2 = sqrt(t * t - s * s) + y1; proj_parm.C2 = y2 - T2; t = 1. / t; proj_parm.P = (m2 * y1 - m1 * y2) * t; proj_parm.Q = (y2 - y1) * t; proj_parm.Pp = (m2 * x1 - m1 * x2) * t; proj_parm.Qp = (x2 - x1) * t; // par.fwd = e_forward; // par.inv = e_inverse; } }} // namespace detail::imw_p #endif // doxygen /*! \brief International Map of the World Polyconic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Mod Polyconic - Ellipsoid - lat_1= and lat_2= [lon_1=] \par Example \image html ex_imw_p.gif */ template struct imw_p_ellipsoid : public detail::imw_p::base_imw_p_ellipsoid { inline imw_p_ellipsoid(const Parameters& par) : detail::imw_p::base_imw_p_ellipsoid(par) { detail::imw_p::setup_imw_p(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class imw_p_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void imw_p_init(detail::base_factory& factory) { factory.add_to_factory("imw_p", new imw_p_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_IMW_P_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/krovak.hpp000066400000000000000000000340531177067165300307030ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_KROVAK_HPP #define GGL_PROJECTIONS_KROVAK_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace krovak{ struct par_krovak { double C_x; }; /** NOTES: According to EPSG the full Krovak projection method should have the following parameters. Within PROJ.4 the azimuth, and pseudo standard parallel are hardcoded in the algorithm and can't be altered from outside. The others all have defaults to match the common usage with Krovak projection. lat_0 = latitude of centre of the projection lon_0 = longitude of centre of the projection ** = azimuth (true) of the centre line passing through the centre of the projection ** = latitude of pseudo standard parallel k = scale factor on the pseudo standard parallel x_0 = False Easting of the centre of the projection at the apex of the cone y_0 = False Northing of the centre of the projection at the apex of the cone **/ // template class, using CRTP to implement forward/inverse template struct base_krovak_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_krovak m_proj_parm; inline base_krovak_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { /* calculate xy from lat/lon */ /* Constants, identical to inverse transform function */ double s45, s90, e2, e, alfa, uq, u0, g, k, k1, n0, ro0, ad, a, s0, n; double gfi, u, fi0, deltav, s, d, eps, ro; s45 = 0.785398163397448; /* 45 DEG */ s90 = 2 * s45; fi0 = this->m_par.phi0; /* Latitude of projection centre 49 DEG 30' */ /* Ellipsoid is used as Parameter in for.c and inv.c, therefore a must be set to 1 here. Ellipsoid Bessel 1841 a = 6377397.155m 1/f = 299.1528128, e2=0.006674372230614; */ a = 1; /* 6377397.155; */ /* e2 = this->m_par.es;*/ /* 0.006674372230614; */ e2 = 0.006674372230614; e = sqrt(e2); alfa = sqrt(1. + (e2 * pow(cos(fi0), 4)) / (1. - e2)); uq = 1.04216856380474; /* DU(2, 59, 42, 42.69689) */ u0 = asin(sin(fi0) / alfa); g = pow( (1. + e * sin(fi0)) / (1. - e * sin(fi0)) , alfa * e / 2. ); k = tan( u0 / 2. + s45) / pow (tan(fi0 / 2. + s45) , alfa) * g; k1 = this->m_par.k0; n0 = a * sqrt(1. - e2) / (1. - e2 * pow(sin(fi0), 2)); s0 = 1.37008346281555; /* Latitude of pseudo standard parallel 78 DEG 30'00" N */ n = sin(s0); ro0 = k1 * n0 / tan(s0); ad = s90 - uq; /* Transformation */ gfi =pow ( ((1. + e * sin(lp_lat)) / (1. - e * sin(lp_lat))) , (alfa * e / 2.)); u= 2. * (atan(k * pow( tan(lp_lat / 2. + s45), alfa) / gfi)-s45); deltav = - lp_lon * alfa; s = asin(cos(ad) * sin(u) + sin(ad) * cos(u) * cos(deltav)); d = asin(cos(u) * sin(deltav) / cos(s)); eps = n * d; ro = ro0 * pow(tan(s0 / 2. + s45) , n) / pow(tan(s / 2. + s45) , n) ; /* x and y are reverted! */ xy_y = ro * cos(eps) / a; xy_x = ro * sin(eps) / a; if( !pj_param(this->m_par.params, "tczech").i ) { xy_y *= -1.0; xy_x *= -1.0; } return; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { /* calculate lat/lon from xy */ /* Constants, identisch wie in der Umkehrfunktion */ double s45, s90, fi0, e2, e, alfa, uq, u0, g, k, k1, n0, ro0, ad, a, s0, n; double u, deltav, s, d, eps, ro, fi1, xy0; int ok; s45 = 0.785398163397448; /* 45 DEG */ s90 = 2 * s45; fi0 = this->m_par.phi0; /* Latitude of projection centre 49 DEG 30' */ /* Ellipsoid is used as Parameter in for.c and inv.c, therefore a must be set to 1 here. Ellipsoid Bessel 1841 a = 6377397.155m 1/f = 299.1528128, e2=0.006674372230614; */ a = 1; /* 6377397.155; */ /* e2 = this->m_par.es; */ /* 0.006674372230614; */ e2 = 0.006674372230614; e = sqrt(e2); alfa = sqrt(1. + (e2 * pow(cos(fi0), 4)) / (1. - e2)); uq = 1.04216856380474; /* DU(2, 59, 42, 42.69689) */ u0 = asin(sin(fi0) / alfa); g = pow( (1. + e * sin(fi0)) / (1. - e * sin(fi0)) , alfa * e / 2. ); k = tan( u0 / 2. + s45) / pow (tan(fi0 / 2. + s45) , alfa) * g; k1 = this->m_par.k0; n0 = a * sqrt(1. - e2) / (1. - e2 * pow(sin(fi0), 2)); s0 = 1.37008346281555; /* Latitude of pseudo standard parallel 78 DEG 30'00" N */ n = sin(s0); ro0 = k1 * n0 / tan(s0); ad = s90 - uq; /* Transformation */ /* revert y, x*/ xy0=xy_x; xy_x=xy_y; xy_y=xy0; if( !pj_param(this->m_par.params, "tczech").i ) { xy_x *= -1.0; xy_y *= -1.0; } ro = sqrt(xy_x * xy_x + xy_y * xy_y); eps = atan2(xy_y, xy_x); d = eps / sin(s0); s = 2. * (atan( pow(ro0 / ro, 1. / n) * tan(s0 / 2. + s45)) - s45); u = asin(cos(ad) * sin(s) - sin(ad) * cos(s) * cos(d)); deltav = asin(cos(s) * sin(d) / cos(u)); lp_lon = this->m_par.lam0 - deltav / alfa; /* ITERATION FOR lp_lat */ fi1 = u; ok = 0; do { lp_lat = 2. * ( atan( pow( k, -1. / alfa) * pow( tan(u / 2. + s45) , 1. / alfa) * pow( (1. + e * sin(fi1)) / (1. - e * sin(fi1)) , e / 2.) ) - s45); if (fabs(fi1 - lp_lat) < 0.000000000000001) ok=1; fi1 = lp_lat; } while (ok==0); lp_lon -= this->m_par.lam0; return; } }; // Krovak template void setup_krovak(Parameters& par, par_krovak& proj_parm) { double ts; /* read some Parameters, * here Latitude Truescale */ ts = pj_param(par.params, "rlat_ts").f; proj_parm.C_x = ts; /* we want Bessel as fixed ellipsoid */ par.a = 6377397.155; par.e = sqrt(par.es = 0.006674372230614); /* if latitude of projection center is not set, use 49d30'N */ if (!pj_param(par.params, "tlat_0").i) par.phi0 = 0.863937979737193; /* if center long is not set use 42d30'E of Ferro - 17d40' for Ferro */ /* that will correspond to using longitudes relative to greenwich */ /* as input and output, instead of lat/long relative to Ferro */ if (!pj_param(par.params, "tlon_0").i) par.lam0 = 0.7417649320975901 - 0.308341501185665; /* if scale not set default to 0.9999 */ if (!pj_param(par.params, "tk").i) par.k0 = 0.9999; /* always the same */ // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::krovak #endif // doxygen /*! \brief Krovak projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Ellps \par Example \image html ex_krovak.gif */ template struct krovak_ellipsoid : public detail::krovak::base_krovak_ellipsoid { inline krovak_ellipsoid(const Parameters& par) : detail::krovak::base_krovak_ellipsoid(par) { detail::krovak::setup_krovak(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class krovak_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void krovak_init(detail::base_factory& factory) { factory.add_to_factory("krovak", new krovak_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_KROVAK_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/labrd.hpp000066400000000000000000000251561177067165300304760ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LABRD_HPP #define GGL_PROJECTIONS_LABRD_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace labrd{ static const double EPS = 1.e-10; struct par_labrd { double Az, kRg, p0s, A, C, Ca, Cb, Cc, Cd; int rot; }; // template class, using CRTP to implement forward/inverse template struct base_labrd_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_labrd m_proj_parm; inline base_labrd_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double V1, V2, ps, sinps, cosps, sinps2, cosps2, I1, I2, I3, I4, I5, I6, x2, y2, t; V1 = this->m_proj_parm.A * log( tan(FORTPI + .5 * lp_lat) ); t = this->m_par.e * sin(lp_lat); V2 = .5 * this->m_par.e * this->m_proj_parm.A * log ((1. + t)/(1. - t)); ps = 2. * (atan(exp(V1 - V2 + this->m_proj_parm.C)) - FORTPI); I1 = ps - this->m_proj_parm.p0s; cosps = cos(ps); cosps2 = cosps * cosps; sinps = sin(ps); sinps2 = sinps * sinps; I4 = this->m_proj_parm.A * cosps; I2 = .5 * this->m_proj_parm.A * I4 * sinps; I3 = I2 * this->m_proj_parm.A * this->m_proj_parm.A * (5. * cosps2 - sinps2) / 12.; I6 = I4 * this->m_proj_parm.A * this->m_proj_parm.A; I5 = I6 * (cosps2 - sinps2) / 6.; I6 *= this->m_proj_parm.A * this->m_proj_parm.A * (5. * cosps2 * cosps2 + sinps2 * (sinps2 - 18. * cosps2)) / 120.; t = lp_lon * lp_lon; xy_x = this->m_proj_parm.kRg * lp_lon * (I4 + t * (I5 + t * I6)); xy_y = this->m_proj_parm.kRg * (I1 + t * (I2 + t * I3)); x2 = xy_x * xy_x; y2 = xy_y * xy_y; V1 = 3. * xy_x * y2 - xy_x * x2; V2 = xy_y * y2 - 3. * x2 * xy_y; xy_x += this->m_proj_parm.Ca * V1 + this->m_proj_parm.Cb * V2; xy_y += this->m_proj_parm.Ca * V2 - this->m_proj_parm.Cb * V1; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double x2, y2, V1, V2, V3, V4, t, t2, ps, pe, tpe, s, I7, I8, I9, I10, I11, d, Re; int i; x2 = xy_x * xy_x; y2 = xy_y * xy_y; V1 = 3. * xy_x * y2 - xy_x * x2; V2 = xy_y * y2 - 3. * x2 * xy_y; V3 = xy_x * (5. * y2 * y2 + x2 * (-10. * y2 + x2 )); V4 = xy_y * (5. * x2 * x2 + y2 * (-10. * x2 + y2 )); xy_x += - this->m_proj_parm.Ca * V1 - this->m_proj_parm.Cb * V2 + this->m_proj_parm.Cc * V3 + this->m_proj_parm.Cd * V4; xy_y += this->m_proj_parm.Cb * V1 - this->m_proj_parm.Ca * V2 - this->m_proj_parm.Cd * V3 + this->m_proj_parm.Cc * V4; ps = this->m_proj_parm.p0s + xy_y / this->m_proj_parm.kRg; pe = ps + this->m_par.phi0 - this->m_proj_parm.p0s; for ( i = 20; i; --i) { V1 = this->m_proj_parm.A * log(tan(FORTPI + .5 * pe)); tpe = this->m_par.e * sin(pe); V2 = .5 * this->m_par.e * this->m_proj_parm.A * log((1. + tpe)/(1. - tpe)); t = ps - 2. * (atan(exp(V1 - V2 + this->m_proj_parm.C)) - FORTPI); pe += t; if (fabs(t) < EPS) break; } /* if (!i) { } else { } */ t = this->m_par.e * sin(pe); t = 1. - t * t; Re = this->m_par.one_es / ( t * sqrt(t) ); t = tan(ps); t2 = t * t; s = this->m_proj_parm.kRg * this->m_proj_parm.kRg; d = Re * this->m_par.k0 * this->m_proj_parm.kRg; I7 = t / (2. * d); I8 = t * (5. + 3. * t2) / (24. * d * s); d = cos(ps) * this->m_proj_parm.kRg * this->m_proj_parm.A; I9 = 1. / d; d *= s; I10 = (1. + 2. * t2) / (6. * d); I11 = (5. + t2 * (28. + 24. * t2)) / (120. * d * s); x2 = xy_x * xy_x; lp_lat = pe + x2 * (-I7 + I8 * x2); lp_lon = xy_x * (I9 + x2 * (-I10 + x2 * I11)); } }; // Laborde template void setup_labrd(Parameters& par, par_labrd& proj_parm) { double Az, sinp, R, N, t; proj_parm.rot = pj_param(par.params, "bno_rot").i == 0; Az = pj_param(par.params, "razi").f; sinp = sin(par.phi0); t = 1. - par.es * sinp * sinp; N = 1. / sqrt(t); R = par.one_es * N / t; proj_parm.kRg = par.k0 * sqrt( N * R ); proj_parm.p0s = atan( sqrt(R / N) * tan(par.phi0) ); proj_parm.A = sinp / sin(proj_parm.p0s); t = par.e * sinp; proj_parm.C = .5 * par.e * proj_parm.A * log((1. + t)/(1. - t)) + - proj_parm.A * log( tan(FORTPI + .5 * par.phi0)) + log( tan(FORTPI + .5 * proj_parm.p0s)); t = Az + Az; proj_parm.Ca = (1. - cos(t)) * ( proj_parm.Cb = 1. / (12. * proj_parm.kRg * proj_parm.kRg) ); proj_parm.Cb *= sin(t); proj_parm.Cc = 3. * (proj_parm.Ca * proj_parm.Ca - proj_parm.Cb * proj_parm.Cb); proj_parm.Cd = 6. * proj_parm.Ca * proj_parm.Cb; // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::labrd #endif // doxygen /*! \brief Laborde projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Special for Madagascar \par Example \image html ex_labrd.gif */ template struct labrd_ellipsoid : public detail::labrd::base_labrd_ellipsoid { inline labrd_ellipsoid(const Parameters& par) : detail::labrd::base_labrd_ellipsoid(par) { detail::labrd::setup_labrd(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class labrd_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void labrd_init(detail::base_factory& factory) { factory.add_to_factory("labrd", new labrd_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LABRD_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/laea.hpp000066400000000000000000000420301177067165300303020ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LAEA_HPP #define GGL_PROJECTIONS_LAEA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace laea{ static const double EPS10 = 1.e-10; static const int NITER = 20; static const double CONV = 1.e-10; static const int N_POLE = 0; static const int S_POLE = 1; static const int EQUIT = 2; static const int OBLIQ = 3; struct par_laea { double sinb1; double cosb1; double xmf; double ymf; double mmf; double qp; double dd; double rq; double apa[APA_SIZE]; int mode; }; // template class, using CRTP to implement forward/inverse template struct base_laea_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_laea m_proj_parm; inline base_laea_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, sinlam, sinphi, q, sinb=0.0, cosb=0.0, b=0.0; coslam = cos(lp_lon); sinlam = sin(lp_lon); sinphi = sin(lp_lat); q = pj_qsfn(sinphi, this->m_par.e, this->m_par.one_es); if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) { sinb = q / this->m_proj_parm.qp; cosb = sqrt(1. - sinb * sinb); } switch (this->m_proj_parm.mode) { case OBLIQ: b = 1. + this->m_proj_parm.sinb1 * sinb + this->m_proj_parm.cosb1 * cosb * coslam; break; case EQUIT: b = 1. + cosb * coslam; break; case N_POLE: b = HALFPI + lp_lat; q = this->m_proj_parm.qp - q; break; case S_POLE: b = lp_lat - HALFPI; q = this->m_proj_parm.qp + q; break; } if (fabs(b) < EPS10) throw proj_exception();; switch (this->m_proj_parm.mode) { case OBLIQ: xy_y = this->m_proj_parm.ymf * ( b = sqrt(2. / b) ) * (this->m_proj_parm.cosb1 * sinb - this->m_proj_parm.sinb1 * cosb * coslam); goto eqcon; break; case EQUIT: xy_y = (b = sqrt(2. / (1. + cosb * coslam))) * sinb * this->m_proj_parm.ymf; eqcon: xy_x = this->m_proj_parm.xmf * b * cosb * sinlam; break; case N_POLE: case S_POLE: if (q >= 0.) { xy_x = (b = sqrt(q)) * sinlam; xy_y = coslam * (this->m_proj_parm.mode == S_POLE ? b : -b); } else xy_x = xy_y = 0.; break; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double cCe, sCe, q, rho, ab=0.0; switch (this->m_proj_parm.mode) { case EQUIT: case OBLIQ: if ((rho = boost::math::hypot(xy_x /= this->m_proj_parm.dd, xy_y *= this->m_proj_parm.dd)) < EPS10) { lp_lon = 0.; lp_lat = this->m_par.phi0; return; } cCe = cos(sCe = 2. * asin(.5 * rho / this->m_proj_parm.rq)); xy_x *= (sCe = sin(sCe)); if (this->m_proj_parm.mode == OBLIQ) { q = this->m_proj_parm.qp * (ab = cCe * this->m_proj_parm.sinb1 + xy_y * sCe * this->m_proj_parm.cosb1 / rho); xy_y = rho * this->m_proj_parm.cosb1 * cCe - xy_y * this->m_proj_parm.sinb1 * sCe; } else { q = this->m_proj_parm.qp * (ab = xy_y * sCe / rho); xy_y = rho * cCe; } break; case N_POLE: xy_y = -xy_y; case S_POLE: if (!(q = (xy_x * xy_x + xy_y * xy_y)) ) { lp_lon = 0.; lp_lat = this->m_par.phi0; return; } /* q = this->m_proj_parm.qp - q; */ ab = 1. - q / this->m_proj_parm.qp; if (this->m_proj_parm.mode == S_POLE) ab = - ab; break; } lp_lon = atan2(xy_x, xy_y); lp_lat = pj_authlat(asin(ab), this->m_proj_parm.apa); } }; // template class, using CRTP to implement forward/inverse template struct base_laea_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_laea m_proj_parm; inline base_laea_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, cosphi, sinphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); coslam = cos(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: xy_y = 1. + cosphi * coslam; goto oblcon; case OBLIQ: xy_y = 1. + this->m_proj_parm.sinb1 * sinphi + this->m_proj_parm.cosb1 * cosphi * coslam; oblcon: if (xy_y <= EPS10) throw proj_exception();; xy_x = (xy_y = sqrt(2. / xy_y)) * cosphi * sin(lp_lon); xy_y *= this->m_proj_parm.mode == EQUIT ? sinphi : this->m_proj_parm.cosb1 * sinphi - this->m_proj_parm.sinb1 * cosphi * coslam; break; case N_POLE: coslam = -coslam; case S_POLE: if (fabs(lp_lat + this->m_par.phi0) < EPS10) throw proj_exception();; xy_y = FORTPI - lp_lat * .5; xy_y = 2. * (this->m_proj_parm.mode == S_POLE ? cos(xy_y) : sin(xy_y)); xy_x = xy_y * sin(lp_lon); xy_y *= coslam; break; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double cosz=0.0, rh, sinz=0.0; rh = boost::math::hypot(xy_x, xy_y); if ((lp_lat = rh * .5 ) > 1.) throw proj_exception();; lp_lat = 2. * asin(lp_lat); if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) { sinz = sin(lp_lat); cosz = cos(lp_lat); } switch (this->m_proj_parm.mode) { case EQUIT: lp_lat = fabs(rh) <= EPS10 ? 0. : asin(xy_y * sinz / rh); xy_x *= sinz; xy_y = cosz * rh; break; case OBLIQ: lp_lat = fabs(rh) <= EPS10 ? this->m_par.phi0 : asin(cosz * this->m_proj_parm.sinb1 + xy_y * sinz * this->m_proj_parm.cosb1 / rh); xy_x *= sinz * this->m_proj_parm.cosb1; xy_y = (cosz - sin(lp_lat) * this->m_proj_parm.sinb1) * rh; break; case N_POLE: xy_y = -xy_y; lp_lat = HALFPI - lp_lat; break; case S_POLE: lp_lat -= HALFPI; break; } lp_lon = (xy_y == 0. && (this->m_proj_parm.mode == EQUIT || this->m_proj_parm.mode == OBLIQ)) ? 0. : atan2(xy_x, xy_y); } }; // Lambert Azimuthal Equal Area template void setup_laea(Parameters& par, par_laea& proj_parm) { double t; if (fabs((t = fabs(par.phi0)) - HALFPI) < EPS10) proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; else if (fabs(t) < EPS10) proj_parm.mode = EQUIT; else proj_parm.mode = OBLIQ; if (par.es) { double sinphi; par.e = sqrt(par.es); proj_parm.qp = pj_qsfn(1., par.e, par.one_es); proj_parm.mmf = .5 / (1. - par.es); pj_authset(par.es, proj_parm.apa); switch (proj_parm.mode) { case N_POLE: case S_POLE: proj_parm.dd = 1.; break; case EQUIT: proj_parm.dd = 1. / (proj_parm.rq = sqrt(.5 * proj_parm.qp)); proj_parm.xmf = 1.; proj_parm.ymf = .5 * proj_parm.qp; break; case OBLIQ: proj_parm.rq = sqrt(.5 * proj_parm.qp); sinphi = sin(par.phi0); proj_parm.sinb1 = pj_qsfn(sinphi, par.e, par.one_es) / proj_parm.qp; proj_parm.cosb1 = sqrt(1. - proj_parm.sinb1 * proj_parm.sinb1); proj_parm.dd = cos(par.phi0) / (sqrt(1. - par.es * sinphi * sinphi) * proj_parm.rq * proj_parm.cosb1); proj_parm.ymf = (proj_parm.xmf = proj_parm.rq) / proj_parm.dd; proj_parm.xmf *= proj_parm.dd; break; } // par.inv = e_inverse; // par.fwd = e_forward; } else { if (proj_parm.mode == OBLIQ) { proj_parm.sinb1 = sin(par.phi0); proj_parm.cosb1 = cos(par.phi0); } // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::laea #endif // doxygen /*! \brief Lambert Azimuthal Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid \par Example \image html ex_laea.gif */ template struct laea_ellipsoid : public detail::laea::base_laea_ellipsoid { inline laea_ellipsoid(const Parameters& par) : detail::laea::base_laea_ellipsoid(par) { detail::laea::setup_laea(this->m_par, this->m_proj_parm); } }; /*! \brief Lambert Azimuthal Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid \par Example \image html ex_laea.gif */ template struct laea_spheroid : public detail::laea::base_laea_spheroid { inline laea_spheroid(const Parameters& par) : detail::laea::base_laea_spheroid(par) { detail::laea::setup_laea(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class laea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void laea_init(detail::base_factory& factory) { factory.add_to_factory("laea", new laea_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LAEA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/lagrng.hpp000066400000000000000000000146211177067165300306570ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LAGRNG_HPP #define GGL_PROJECTIONS_LAGRNG_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace lagrng{ static const double TOL = 1e-10; struct par_lagrng { double hrw; double rw; double a1; }; // template class, using CRTP to implement forward/inverse template struct base_lagrng_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_lagrng m_proj_parm; inline base_lagrng_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double v, c; if (fabs(fabs(lp_lat) - HALFPI) < TOL) { xy_x = 0; xy_y = lp_lat < 0 ? -2. : 2.; } else { lp_lat = sin(lp_lat); v = this->m_proj_parm.a1 * pow((1. + lp_lat)/(1. - lp_lat), this->m_proj_parm.hrw); if ((c = 0.5 * (v + 1./v) + cos(lp_lon *= this->m_proj_parm.rw)) < TOL) throw proj_exception();; xy_x = 2. * sin(lp_lon) / c; xy_y = (v - 1./v) / c; } } }; // Lagrange template void setup_lagrng(Parameters& par, par_lagrng& proj_parm) { double phi1; if ((proj_parm.rw = pj_param(par.params, "dW").f) <= 0) throw proj_exception(-27); proj_parm.hrw = 0.5 * (proj_parm.rw = 1. / proj_parm.rw); phi1 = pj_param(par.params, "rlat_1").f; if (fabs(fabs(phi1 = sin(phi1)) - 1.) < TOL) throw proj_exception(-22); proj_parm.a1 = pow((1. - phi1)/(1. + phi1), proj_parm.hrw); par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::lagrng #endif // doxygen /*! \brief Lagrange projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse - W= \par Example \image html ex_lagrng.gif */ template struct lagrng_spheroid : public detail::lagrng::base_lagrng_spheroid { inline lagrng_spheroid(const Parameters& par) : detail::lagrng::base_lagrng_spheroid(par) { detail::lagrng::setup_lagrng(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class lagrng_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void lagrng_init(detail::base_factory& factory) { factory.add_to_factory("lagrng", new lagrng_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LAGRNG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/larr.hpp000066400000000000000000000123711177067165300303450ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LARR_HPP #define GGL_PROJECTIONS_LARR_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace larr{ static const double SIXTH = .16666666666666666; // template class, using CRTP to implement forward/inverse template struct base_larr_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_larr_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = 0.5 * lp_lon * (1. + sqrt(cos(lp_lat))); xy_y = lp_lat / (cos(0.5 * lp_lat) * cos(SIXTH * lp_lon)); } }; // Larrivee template void setup_larr(Parameters& par) { // par.fwd = s_forward; // par.inv = 0; par.es = 0.; } }} // namespace detail::larr #endif // doxygen /*! \brief Larrivee projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_larr.gif */ template struct larr_spheroid : public detail::larr::base_larr_spheroid { inline larr_spheroid(const Parameters& par) : detail::larr::base_larr_spheroid(par) { detail::larr::setup_larr(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class larr_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void larr_init(detail::base_factory& factory) { factory.add_to_factory("larr", new larr_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LARR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/lask.hpp000066400000000000000000000135551177067165300303440ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LASK_HPP #define GGL_PROJECTIONS_LASK_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace lask{ static const double a10 = 0.975534; static const double a12 = -0.119161; static const double a32 = -0.0143059; static const double a14 = -0.0547009; static const double b01 = 1.00384; static const double b21 = 0.0802894; static const double b03 = 0.0998909; static const double b41 = 0.000199025; static const double b23 = -0.0285500; static const double b05 = -0.0491032; // template class, using CRTP to implement forward/inverse template struct base_lask_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_lask_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double l2, p2; l2 = lp_lon * lp_lon; p2 = lp_lat * lp_lat; xy_x = lp_lon * (a10 + p2 * (a12 + l2 * a32 + p2 * a14)); xy_y = lp_lat * (b01 + l2 * (b21 + p2 * b23 + l2 * b41) + p2 * (b03 + p2 * b05)); } }; // Laskowski template void setup_lask(Parameters& par) { // par.fwd = s_forward; // par.inv = 0; par.es = 0.; } }} // namespace detail::lask #endif // doxygen /*! \brief Laskowski projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_lask.gif */ template struct lask_spheroid : public detail::lask::base_lask_spheroid { inline lask_spheroid(const Parameters& par) : detail::lask::base_lask_spheroid(par) { detail::lask::setup_lask(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class lask_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void lask_init(detail::base_factory& factory) { factory.add_to_factory("lask", new lask_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LASK_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/latlong.hpp000066400000000000000000000257451177067165300310560ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LATLONG_HPP #define GGL_PROJECTIONS_LATLONG_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace latlong{ /* very loosely based upon DMA code by Bradford W. Drew */ // template class, using CRTP to implement forward/inverse template struct base_latlong_other : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_latlong_other(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = lp_lon / this->m_par.a; xy_y = lp_lat / this->m_par.a; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y * this->m_par.a; lp_lon = xy_x * this->m_par.a; } }; // Lat/long (Geodetic) template void setup_lonlat(Parameters& par) { par.is_latlong = 1; par.x0 = 0.0; par.y0 = 0.0; // par.inv = inverse; // par.fwd = forward; } // Lat/long (Geodetic alias) template void setup_latlon(Parameters& par) { par.is_latlong = 1; par.x0 = 0.0; par.y0 = 0.0; // par.inv = inverse; // par.fwd = forward; } // Lat/long (Geodetic alias) template void setup_latlong(Parameters& par) { par.is_latlong = 1; par.x0 = 0.0; par.y0 = 0.0; // par.inv = inverse; // par.fwd = forward; } // Lat/long (Geodetic alias) template void setup_longlat(Parameters& par) { par.is_latlong = 1; par.x0 = 0.0; par.y0 = 0.0; // par.inv = inverse; // par.fwd = forward; } }} // namespace detail::latlong #endif // doxygen /*! \brief Lat/long (Geodetic) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics \par Example \image html ex_lonlat.gif */ template struct lonlat_other : public detail::latlong::base_latlong_other { inline lonlat_other(const Parameters& par) : detail::latlong::base_latlong_other(par) { detail::latlong::setup_lonlat(this->m_par); } }; /*! \brief Lat/long (Geodetic alias) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics \par Example \image html ex_latlon.gif */ template struct latlon_other : public detail::latlong::base_latlong_other { inline latlon_other(const Parameters& par) : detail::latlong::base_latlong_other(par) { detail::latlong::setup_latlon(this->m_par); } }; /*! \brief Lat/long (Geodetic alias) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics \par Example \image html ex_latlong.gif */ template struct latlong_other : public detail::latlong::base_latlong_other { inline latlong_other(const Parameters& par) : detail::latlong::base_latlong_other(par) { detail::latlong::setup_latlong(this->m_par); } }; /*! \brief Lat/long (Geodetic alias) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics \par Example \image html ex_longlat.gif */ template struct longlat_other : public detail::latlong::base_latlong_other { inline longlat_other(const Parameters& par) : detail::latlong::base_latlong_other(par) { detail::latlong::setup_longlat(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class lonlat_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class latlon_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class latlong_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class longlat_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void latlong_init(detail::base_factory& factory) { factory.add_to_factory("lonlat", new lonlat_entry); factory.add_to_factory("latlon", new latlon_entry); factory.add_to_factory("latlong", new latlong_entry); factory.add_to_factory("longlat", new longlat_entry); } } // namespace detail // Create EPSG specializations // (Proof of Concept, only for some) template struct epsg_traits<4326, LatLongRadian, Cartesian, Parameters> { typedef longlat_other type; static inline std::string par() { return "+proj=longlat +ellps=WGS84 +datum=WGS84"; } }; #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LATLONG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/lcc.hpp000066400000000000000000000262151177067165300301500ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LCC_HPP #define GGL_PROJECTIONS_LCC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace lcc{ static const double EPS10 = 1.e-10; struct par_lcc { double phi1; double phi2; double n; double rho0; double c; int ellips; }; // template class, using CRTP to implement forward/inverse template struct base_lcc_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; mutable par_lcc m_proj_parm; inline base_lcc_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double rho; if (fabs(fabs(lp_lat) - HALFPI) < EPS10) { if ((lp_lat * this->m_proj_parm.n) <= 0.) throw proj_exception();; rho = 0.; } else rho = this->m_proj_parm.c * (this->m_proj_parm.ellips ? pow(pj_tsfn(lp_lat, sin(lp_lat), this->m_par.e), this->m_proj_parm.n) : pow(tan(FORTPI + .5 * lp_lat), -this->m_proj_parm.n)); xy_x = this->m_par.k0 * (rho * sin( lp_lon *= this->m_proj_parm.n ) ); xy_y = this->m_par.k0 * (this->m_proj_parm.rho0 - rho * cos(lp_lon) ); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rho; xy_x /= this->m_par.k0; xy_y /= this->m_par.k0; if( (rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho0 - xy_y)) != 0.0) { if (this->m_proj_parm.n < 0.) { rho = -rho; xy_x = -xy_x; xy_y = -xy_y; } if (this->m_proj_parm.ellips) { if ((lp_lat = pj_phi2(pow(rho / this->m_proj_parm.c, 1./this->m_proj_parm.n), this->m_par.e)) == HUGE_VAL) throw proj_exception();; } else lp_lat = 2. * atan(pow(this->m_proj_parm.c / rho, 1./this->m_proj_parm.n)) - HALFPI; lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n; } else { lp_lon = 0.; lp_lat = this->m_proj_parm.n > 0. ? HALFPI : - HALFPI; } } #ifdef SPECIAL_FACTORS_NOT_CONVERTED inline void fac(Geographic lp, Factors &fac) const { double rho; if (fabs(fabs(lp_lat) - HALFPI) < EPS10) { if ((lp_lat * this->m_proj_parm.n) <= 0.) return; rho = 0.; } else rho = this->m_proj_parm.c * (this->m_proj_parm.ellips ? pow(pj_tsfn(lp_lat, sin(lp_lat), this->m_par.e), this->m_proj_parm.n) : pow(tan(FORTPI + .5 * lp_lat), -this->m_proj_parm.n)); this->m_fac.code |= IS_ANAL_HK + IS_ANAL_CONV; this->m_fac.k = this->m_fac.h = this->m_par.k0 * this->m_proj_parm.n * rho / pj_msfn(sin(lp_lat), cos(lp_lat), this->m_par.es); this->m_fac.conv = - this->m_proj_parm.n * lp_lon; } #endif }; // Lambert Conformal Conic template void setup_lcc(Parameters& par, par_lcc& proj_parm) { double cosphi, sinphi; int secant; proj_parm.phi1 = pj_param(par.params, "rlat_1").f; if (pj_param(par.params, "tlat_2").i) proj_parm.phi2 = pj_param(par.params, "rlat_2").f; else { proj_parm.phi2 = proj_parm.phi1; if (!pj_param(par.params, "tlat_0").i) par.phi0 = proj_parm.phi1; } if (fabs(proj_parm.phi1 + proj_parm.phi2) < EPS10) throw proj_exception(-21); proj_parm.n = sinphi = sin(proj_parm.phi1); cosphi = cos(proj_parm.phi1); secant = fabs(proj_parm.phi1 - proj_parm.phi2) >= EPS10; if( (proj_parm.ellips = (par.es != 0.)) ) { double ml1, m1; par.e = sqrt(par.es); m1 = pj_msfn(sinphi, cosphi, par.es); ml1 = pj_tsfn(proj_parm.phi1, sinphi, par.e); if (secant) { /* secant cone */ proj_parm.n = log(m1 / pj_msfn(sinphi = sin(proj_parm.phi2), cos(proj_parm.phi2), par.es)); proj_parm.n /= log(ml1 / pj_tsfn(proj_parm.phi2, sinphi, par.e)); } proj_parm.c = (proj_parm.rho0 = m1 * pow(ml1, -proj_parm.n) / proj_parm.n); proj_parm.rho0 *= (fabs(fabs(par.phi0) - HALFPI) < EPS10) ? 0. : pow(pj_tsfn(par.phi0, sin(par.phi0), par.e), proj_parm.n); } else { if (secant) proj_parm.n = log(cosphi / cos(proj_parm.phi2)) / log(tan(FORTPI + .5 * proj_parm.phi2) / tan(FORTPI + .5 * proj_parm.phi1)); proj_parm.c = cosphi * pow(tan(FORTPI + .5 * proj_parm.phi1), proj_parm.n) / proj_parm.n; proj_parm.rho0 = (fabs(fabs(par.phi0) - HALFPI) < EPS10) ? 0. : proj_parm.c * pow(tan(FORTPI + .5 * par.phi0), -proj_parm.n); } // par.inv = e_inverse; // par.fwd = e_forward; // par.spc = fac; } }} // namespace detail::lcc #endif // doxygen /*! \brief Lambert Conformal Conic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_1= and lat_2= or lat_0 \par Example \image html ex_lcc.gif */ template struct lcc_ellipsoid : public detail::lcc::base_lcc_ellipsoid { inline lcc_ellipsoid(const Parameters& par) : detail::lcc::base_lcc_ellipsoid(par) { detail::lcc::setup_lcc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class lcc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void lcc_init(detail::base_factory& factory) { factory.add_to_factory("lcc", new lcc_entry); } } // namespace detail // Create EPSG specializations // (Proof of Concept, only for some) template struct epsg_traits<2805, LatLongRadian, Cartesian, Parameters> { typedef lcc_ellipsoid type; static inline std::string par() { return "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m"; } }; #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LCC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/lcca.hpp000066400000000000000000000175631177067165300303170ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LCCA_HPP #define GGL_PROJECTIONS_LCCA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace lcca{ static const int MAX_ITER = 10; static const double DEL_TOL = 1e-12; struct par_lcca { double en[EN_SIZE]; double r0, l, M0; double C; }; inline double /* func to compute dr */ fS(double S, double C) { return(S * ( 1. + S * S * C)); } inline double /* deriv of fs */ fSp(double S, double C) { return(1. + 3.* S * S * C); } // template class, using CRTP to implement forward/inverse template struct base_lcca_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_lcca m_proj_parm; inline base_lcca_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double S, r, dr; S = pj_mlfn(lp_lat, sin(lp_lat), cos(lp_lat), this->m_proj_parm.en) - this->m_proj_parm.M0; dr = fS(S, this->m_proj_parm.C); r = this->m_proj_parm.r0 - dr; xy_x = this->m_par.k0 * (r * sin( lp_lon *= this->m_proj_parm.l ) ); xy_y = this->m_par.k0 * (this->m_proj_parm.r0 - r * cos(lp_lon) ); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double theta, dr, S, dif; int i; xy_x /= this->m_par.k0; xy_y /= this->m_par.k0; theta = atan2(xy_x , this->m_proj_parm.r0 - xy_y); dr = xy_y - xy_x * tan(0.5 * theta); lp_lon = theta / this->m_proj_parm.l; S = dr; for (i = MAX_ITER; i ; --i) { S -= (dif = (fS(S, this->m_proj_parm.C) - dr) / fSp(S, this->m_proj_parm.C)); if (fabs(dif) < DEL_TOL) break; } if (!i) throw proj_exception(); lp_lat = pj_inv_mlfn(S + this->m_proj_parm.M0, this->m_par.es, this->m_proj_parm.en); } }; // Lambert Conformal Conic Alternative template void setup_lcca(Parameters& par, par_lcca& proj_parm) { double s2p0, N0, R0, tan0, tan20; pj_enfn(par.es, proj_parm.en); if (!pj_param(par.params, "tlat_0").i) throw proj_exception(50); if (par.phi0 == 0.) throw proj_exception(51); proj_parm.l = sin(par.phi0); proj_parm.M0 = pj_mlfn(par.phi0, proj_parm.l, cos(par.phi0), proj_parm.en); s2p0 = proj_parm.l * proj_parm.l; R0 = 1. / (1. - par.es * s2p0); N0 = sqrt(R0); R0 *= par.one_es * N0; tan0 = tan(par.phi0); tan20 = tan0 * tan0; proj_parm.r0 = N0 / tan0; proj_parm.C = 1. / (6. * R0 * N0); // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::lcca #endif // doxygen /*! \brief Lambert Conformal Conic Alternative projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid - lat_0= \par Example \image html ex_lcca.gif */ template struct lcca_ellipsoid : public detail::lcca::base_lcca_ellipsoid { inline lcca_ellipsoid(const Parameters& par) : detail::lcca::base_lcca_ellipsoid(par) { detail::lcca::setup_lcca(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class lcca_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void lcca_init(detail::base_factory& factory) { factory.add_to_factory("lcca", new lcca_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LCCA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/loxim.hpp000066400000000000000000000153431177067165300305370ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LOXIM_HPP #define GGL_PROJECTIONS_LOXIM_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace loxim{ static const double EPS = 1e-8; struct par_loxim { double phi1; double cosphi1; double tanphi1; }; // template class, using CRTP to implement forward/inverse template struct base_loxim_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_loxim m_proj_parm; inline base_loxim_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_y = lp_lat - this->m_proj_parm.phi1; if (fabs(xy_y) < EPS) xy_x = lp_lon * this->m_proj_parm.cosphi1; else { xy_x = FORTPI + 0.5 * lp_lat; if (fabs(xy_x) < EPS || fabs(fabs(xy_x) - HALFPI) < EPS) xy_x = 0.; else xy_x = lp_lon * xy_y / log( tan(xy_x) / this->m_proj_parm.tanphi1 ); } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y + this->m_proj_parm.phi1; if (fabs(xy_y) < EPS) lp_lon = xy_x / this->m_proj_parm.cosphi1; else if (fabs( lp_lon = FORTPI + 0.5 * lp_lat ) < EPS || fabs(fabs(lp_lon) - HALFPI) < EPS) lp_lon = 0.; else lp_lon = xy_x * log( tan(lp_lon) / this->m_proj_parm.tanphi1 ) / xy_y ; } }; // Loximuthal template void setup_loxim(Parameters& par, par_loxim& proj_parm) { proj_parm.phi1 = pj_param(par.params, "rlat_1").f; if ((proj_parm.cosphi1 = cos(proj_parm.phi1)) < EPS) throw proj_exception(-22); proj_parm.tanphi1 = tan(FORTPI + 0.5 * proj_parm.phi1); // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::loxim #endif // doxygen /*! \brief Loximuthal projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_loxim.gif */ template struct loxim_spheroid : public detail::loxim::base_loxim_spheroid { inline loxim_spheroid(const Parameters& par) : detail::loxim::base_loxim_spheroid(par) { detail::loxim::setup_loxim(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class loxim_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void loxim_init(detail::base_factory& factory) { factory.add_to_factory("loxim", new loxim_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LOXIM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/lsat.hpp000066400000000000000000000344371177067165300303570ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_LSAT_HPP #define GGL_PROJECTIONS_LSAT_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace lsat{ static const double TOL = 1e-7; static const double PI_HALFPI = 4.71238898038468985766; static const double TWOPI_HALFPI = 7.85398163397448309610; struct par_lsat { double a2, a4, b, c1, c3; double q, t, u, w, p22, sa, ca, xj, rlm, rlm2; }; /* based upon Snyder and Linck, USGS-NMD */ template inline void seraz0(double lam, double mult, Parameters& par, par_lsat& proj_parm) { double sdsq, h, s, fc, sd, sq, d__1; lam *= DEG_TO_RAD; sd = sin(lam); sdsq = sd * sd; s = proj_parm.p22 * proj_parm.sa * cos(lam) * sqrt((1. + proj_parm.t * sdsq) / (( 1. + proj_parm.w * sdsq) * (1. + proj_parm.q * sdsq))); d__1 = 1. + proj_parm.q * sdsq; h = sqrt((1. + proj_parm.q * sdsq) / (1. + proj_parm.w * sdsq)) * ((1. + proj_parm.w * sdsq) / (d__1 * d__1) - proj_parm.p22 * proj_parm.ca); sq = sqrt(proj_parm.xj * proj_parm.xj + s * s); proj_parm.b += fc = mult * (h * proj_parm.xj - s * s) / sq; proj_parm.a2 += fc * cos(lam + lam); proj_parm.a4 += fc * cos(lam * 4.); fc = mult * s * (h + proj_parm.xj) / sq; proj_parm.c1 += fc * cos(lam); proj_parm.c3 += fc * cos(lam * 3.); } // template class, using CRTP to implement forward/inverse template struct base_lsat_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_lsat m_proj_parm; inline base_lsat_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { int l, nn; double lamt, xlam, sdsq, c, d, s, lamdp, phidp, lampp, tanph, lamtp, cl, sd, sp, fac, sav, tanphi; if (lp_lat > HALFPI) lp_lat = HALFPI; else if (lp_lat < -HALFPI) lp_lat = -HALFPI; lampp = lp_lat >= 0. ? HALFPI : PI_HALFPI; tanphi = tan(lp_lat); for (nn = 0;;) { sav = lampp; lamtp = lp_lon + this->m_proj_parm.p22 * lampp; cl = cos(lamtp); if (fabs(cl) < TOL) lamtp -= TOL; fac = lampp - sin(lampp) * (cl < 0. ? -HALFPI : HALFPI); for (l = 50; l; --l) { lamt = lp_lon + this->m_proj_parm.p22 * sav; if (fabs(c = cos(lamt)) < TOL) lamt -= TOL; xlam = (this->m_par.one_es * tanphi * this->m_proj_parm.sa + sin(lamt) * this->m_proj_parm.ca) / c; lamdp = atan(xlam) + fac; if (fabs(fabs(sav) - fabs(lamdp)) < TOL) break; sav = lamdp; } if (!l || ++nn >= 3 || (lamdp > this->m_proj_parm.rlm && lamdp < this->m_proj_parm.rlm2)) break; if (lamdp <= this->m_proj_parm.rlm) lampp = TWOPI_HALFPI; else if (lamdp >= this->m_proj_parm.rlm2) lampp = HALFPI; } if (l) { sp = sin(lp_lat); phidp = aasin((this->m_par.one_es * this->m_proj_parm.ca * sp - this->m_proj_parm.sa * cos(lp_lat) * sin(lamt)) / sqrt(1. - this->m_par.es * sp * sp)); tanph = log(tan(FORTPI + .5 * phidp)); sd = sin(lamdp); sdsq = sd * sd; s = this->m_proj_parm.p22 * this->m_proj_parm.sa * cos(lamdp) * sqrt((1. + this->m_proj_parm.t * sdsq) / ((1. + this->m_proj_parm.w * sdsq) * (1. + this->m_proj_parm.q * sdsq))); d = sqrt(this->m_proj_parm.xj * this->m_proj_parm.xj + s * s); xy_x = this->m_proj_parm.b * lamdp + this->m_proj_parm.a2 * sin(2. * lamdp) + this->m_proj_parm.a4 * sin(lamdp * 4.) - tanph * s / d; xy_y = this->m_proj_parm.c1 * sd + this->m_proj_parm.c3 * sin(lamdp * 3.) + tanph * this->m_proj_parm.xj / d; } else xy_x = xy_y = HUGE_VAL; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { int nn; double lamt, sdsq, s, lamdp, phidp, sppsq, dd, sd, sl, fac, scl, sav, spp; lamdp = xy_x / this->m_proj_parm.b; nn = 50; do { sav = lamdp; sd = sin(lamdp); sdsq = sd * sd; s = this->m_proj_parm.p22 * this->m_proj_parm.sa * cos(lamdp) * sqrt((1. + this->m_proj_parm.t * sdsq) / ((1. + this->m_proj_parm.w * sdsq) * (1. + this->m_proj_parm.q * sdsq))); lamdp = xy_x + xy_y * s / this->m_proj_parm.xj - this->m_proj_parm.a2 * sin( 2. * lamdp) - this->m_proj_parm.a4 * sin(lamdp * 4.) - s / this->m_proj_parm.xj * ( this->m_proj_parm.c1 * sin(lamdp) + this->m_proj_parm.c3 * sin(lamdp * 3.)); lamdp /= this->m_proj_parm.b; } while (fabs(lamdp - sav) >= TOL && --nn); sl = sin(lamdp); fac = exp(sqrt(1. + s * s / this->m_proj_parm.xj / this->m_proj_parm.xj) * (xy_y - this->m_proj_parm.c1 * sl - this->m_proj_parm.c3 * sin(lamdp * 3.))); phidp = 2. * (atan(fac) - FORTPI); dd = sl * sl; if (fabs(cos(lamdp)) < TOL) lamdp -= TOL; spp = sin(phidp); sppsq = spp * spp; lamt = atan(((1. - sppsq * this->m_par.rone_es) * tan(lamdp) * this->m_proj_parm.ca - spp * this->m_proj_parm.sa * sqrt((1. + this->m_proj_parm.q * dd) * ( 1. - sppsq) - sppsq * this->m_proj_parm.u) / cos(lamdp)) / (1. - sppsq * (1. + this->m_proj_parm.u))); sl = lamt >= 0. ? 1. : -1.; scl = cos(lamdp) >= 0. ? 1. : -1; lamt -= HALFPI * (1. - scl) * sl; lp_lon = lamt - this->m_proj_parm.p22 * lamdp; if (fabs(this->m_proj_parm.sa) < TOL) lp_lat = aasin(spp / sqrt(this->m_par.one_es * this->m_par.one_es + this->m_par.es * sppsq)); else lp_lat = atan((tan(lamdp) * cos(lamt) - this->m_proj_parm.ca * sin(lamt)) / (this->m_par.one_es * this->m_proj_parm.sa)); } }; // Space oblique for LANDSAT template void setup_lsat(Parameters& par, par_lsat& proj_parm) { int land, path; double lam, alf, esc, ess; land = pj_param(par.params, "ilsat").i; if (land <= 0 || land > 5) throw proj_exception(-28); path = pj_param(par.params, "ipath").i; if (path <= 0 || path > (land <= 3 ? 251 : 233)) throw proj_exception(-29); if (land <= 3) { par.lam0 = DEG_TO_RAD * 128.87 - TWOPI / 251. * path; proj_parm.p22 = 103.2669323; alf = DEG_TO_RAD * 99.092; } else { par.lam0 = DEG_TO_RAD * 129.3 - TWOPI / 233. * path; proj_parm.p22 = 98.8841202; alf = DEG_TO_RAD * 98.2; } proj_parm.p22 /= 1440.; proj_parm.sa = sin(alf); proj_parm.ca = cos(alf); if (fabs(proj_parm.ca) < 1e-9) proj_parm.ca = 1e-9; esc = par.es * proj_parm.ca * proj_parm.ca; ess = par.es * proj_parm.sa * proj_parm.sa; proj_parm.w = (1. - esc) * par.rone_es; proj_parm.w = proj_parm.w * proj_parm.w - 1.; proj_parm.q = ess * par.rone_es; proj_parm.t = ess * (2. - par.es) * par.rone_es * par.rone_es; proj_parm.u = esc * par.rone_es; proj_parm.xj = par.one_es * par.one_es * par.one_es; proj_parm.rlm = PI * (1. / 248. + .5161290322580645); proj_parm.rlm2 = proj_parm.rlm + TWOPI; proj_parm.a2 = proj_parm.a4 = proj_parm.b = proj_parm.c1 = proj_parm.c3 = 0.; seraz0(0., 1., par, proj_parm); for (lam = 9.; lam <= 81.0001; lam += 18.) seraz0(lam, 4., par, proj_parm); for (lam = 18; lam <= 72.0001; lam += 18.) seraz0(lam, 2., par, proj_parm); seraz0(90., 1., par, proj_parm); proj_parm.a2 /= 30.; proj_parm.a4 /= 60.; proj_parm.b /= 30.; proj_parm.c1 /= 15.; proj_parm.c3 /= 45.; // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::lsat #endif // doxygen /*! \brief Space oblique for LANDSAT projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - lsat= path= \par Example \image html ex_lsat.gif */ template struct lsat_ellipsoid : public detail::lsat::base_lsat_ellipsoid { inline lsat_ellipsoid(const Parameters& par) : detail::lsat::base_lsat_ellipsoid(par) { detail::lsat::setup_lsat(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class lsat_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void lsat_init(detail::base_factory& factory) { factory.add_to_factory("lsat", new lsat_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_LSAT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/mbt_fps.hpp000066400000000000000000000150471177067165300310420ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MBT_FPS_HPP #define GGL_PROJECTIONS_MBT_FPS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace mbt_fps{ static const int MAX_ITER = 10; static const double LOOP_TOL = 1e-7; static const double C1 = 0.45503; static const double C2 = 1.36509; static const double C3 = 1.41546; static const double C_x = 0.22248; static const double C_y = 1.44492; static const double C1_2 = 0.33333333333333333333333333; // template class, using CRTP to implement forward/inverse template struct base_mbt_fps_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_mbt_fps_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double k, V, t; int i; k = C3 * sin(lp_lat); for (i = MAX_ITER; i ; --i) { t = lp_lat / C2; lp_lat -= V = (C1 * sin(t) + sin(lp_lat) - k) / (C1_2 * cos(t) + cos(lp_lat)); if (fabs(V) < LOOP_TOL) break; } t = lp_lat / C2; xy_x = C_x * lp_lon * (1. + 3. * cos(lp_lat)/cos(t) ); xy_y = C_y * sin(t); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t; lp_lat = C2 * (t = aasin(xy_y / C_y)); lp_lon = xy_x / (C_x * (1. + 3. * cos(lp_lat)/cos(t))); lp_lat = aasin((C1 * sin(t) + sin(lp_lat)) / C3); } }; // McBryde-Thomas Flat-Pole Sine (No. 2) template void setup_mbt_fps(Parameters& par) { par.es = 0; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::mbt_fps #endif // doxygen /*! \brief McBryde-Thomas Flat-Pole Sine (No. 2) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_mbt_fps.gif */ template struct mbt_fps_spheroid : public detail::mbt_fps::base_mbt_fps_spheroid { inline mbt_fps_spheroid(const Parameters& par) : detail::mbt_fps::base_mbt_fps_spheroid(par) { detail::mbt_fps::setup_mbt_fps(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class mbt_fps_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void mbt_fps_init(detail::base_factory& factory) { factory.add_to_factory("mbt_fps", new mbt_fps_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MBT_FPS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/mbtfpp.hpp000066400000000000000000000147661177067165300307070ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MBTFPP_HPP #define GGL_PROJECTIONS_MBTFPP_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace mbtfpp{ static const double CS = .95257934441568037152; static const double FXC = .92582009977255146156; static const double FYC = 3.40168025708304504493; static const double C23 = .66666666666666666666; static const double C13 = .33333333333333333333; static const double ONEEPS = 1.0000001; // template class, using CRTP to implement forward/inverse template struct base_mbtfpp_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_mbtfpp_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { lp_lat = asin(CS * sin(lp_lat)); xy_x = FXC * lp_lon * (2. * cos(C23 * lp_lat) - 1.); xy_y = FYC * sin(C13 * lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / FYC; if (fabs(lp_lat) >= 1.) { if (fabs(lp_lat) > ONEEPS) throw proj_exception(); else lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI; } else lp_lat = asin(lp_lat); lp_lon = xy_x / ( FXC * (2. * cos(C23 * (lp_lat *= 3.)) - 1.) ); if (fabs(lp_lat = sin(lp_lat) / CS) >= 1.) { if (fabs(lp_lat) > ONEEPS) throw proj_exception(); else lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI; } else lp_lat = asin(lp_lat); } }; // McBride-Thomas Flat-Polar Parabolic template void setup_mbtfpp(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::mbtfpp #endif // doxygen /*! \brief McBride-Thomas Flat-Polar Parabolic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_mbtfpp.gif */ template struct mbtfpp_spheroid : public detail::mbtfpp::base_mbtfpp_spheroid { inline mbtfpp_spheroid(const Parameters& par) : detail::mbtfpp::base_mbtfpp_spheroid(par) { detail::mbtfpp::setup_mbtfpp(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class mbtfpp_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void mbtfpp_init(detail::base_factory& factory) { factory.add_to_factory("mbtfpp", new mbtfpp_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MBTFPP_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/mbtfpq.hpp000066400000000000000000000161511177067165300306760ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MBTFPQ_HPP #define GGL_PROJECTIONS_MBTFPQ_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace mbtfpq{ static const int NITER = 20; static const double EPS = 1e-7; static const double ONETOL = 1.000001; static const double C = 1.70710678118654752440; static const double RC = 0.58578643762690495119; static const double FYC = 1.87475828462269495505; static const double RYC = 0.53340209679417701685; static const double FXC = 0.31245971410378249250; static const double RXC = 3.20041258076506210122; // template class, using CRTP to implement forward/inverse template struct base_mbtfpq_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_mbtfpq_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double th1, c; int i; c = C * sin(lp_lat); for (i = NITER; i; --i) { lp_lat -= th1 = (sin(.5*lp_lat) + sin(lp_lat) - c) / (.5*cos(.5*lp_lat) + cos(lp_lat)); if (fabs(th1) < EPS) break; } xy_x = FXC * lp_lon * (1.0 + 2. * cos(lp_lat)/cos(0.5 * lp_lat)); xy_y = FYC * sin(0.5 * lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t; lp_lat = RYC * xy_y; if (fabs(lp_lat) > 1.) { if (fabs(lp_lat) > ONETOL) throw proj_exception(); else if (lp_lat < 0.) { t = -1.; lp_lat = -PI; } else { t = 1.; lp_lat = PI; } } else lp_lat = 2. * asin(t = lp_lat); lp_lon = RXC * xy_x / (1. + 2. * cos(lp_lat)/cos(0.5 * lp_lat)); lp_lat = RC * (t + sin(lp_lat)); if (fabs(lp_lat) > 1.) if (fabs(lp_lat) > ONETOL) throw proj_exception(); else lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; else lp_lat = asin(lp_lat); } }; // McBryde-Thomas Flat-Polar Quartic template void setup_mbtfpq(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::mbtfpq #endif // doxygen /*! \brief McBryde-Thomas Flat-Polar Quartic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_mbtfpq.gif */ template struct mbtfpq_spheroid : public detail::mbtfpq::base_mbtfpq_spheroid { inline mbtfpq_spheroid(const Parameters& par) : detail::mbtfpq::base_mbtfpq_spheroid(par) { detail::mbtfpq::setup_mbtfpq(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class mbtfpq_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void mbtfpq_init(detail::base_factory& factory) { factory.add_to_factory("mbtfpq", new mbtfpq_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MBTFPQ_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/merc.hpp000066400000000000000000000214211177067165300303270ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MERC_HPP #define GGL_PROJECTIONS_MERC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace merc{ static const double EPS10 = 1.e-10; // template class, using CRTP to implement forward/inverse template struct base_merc_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_merc_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if (fabs(fabs(lp_lat) - HALFPI) <= EPS10) throw proj_exception();; xy_x = this->m_par.k0 * lp_lon; xy_y = - this->m_par.k0 * log(pj_tsfn(lp_lat, sin(lp_lat), this->m_par.e)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { if ((lp_lat = pj_phi2(exp(- xy_y / this->m_par.k0), this->m_par.e)) == HUGE_VAL) throw proj_exception();; lp_lon = xy_x / this->m_par.k0; } }; // template class, using CRTP to implement forward/inverse template struct base_merc_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_merc_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if (fabs(fabs(lp_lat) - HALFPI) <= EPS10) throw proj_exception();; xy_x = this->m_par.k0 * lp_lon; xy_y = this->m_par.k0 * log(tan(FORTPI + .5 * lp_lat)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = HALFPI - 2. * atan(exp(-xy_y / this->m_par.k0)); lp_lon = xy_x / this->m_par.k0; } }; // Mercator template void setup_merc(Parameters& par) { double phits=0.0; int is_phits; if( (is_phits = pj_param(par.params, "tlat_ts").i) ) { phits = fabs(pj_param(par.params, "rlat_ts").f); if (phits >= HALFPI) throw proj_exception(-24); } if (par.es) { /* ellipsoid */ if (is_phits) par.k0 = pj_msfn(sin(phits), cos(phits), par.es); // par.inv = e_inverse; // par.fwd = e_forward; } else { /* sphere */ if (is_phits) par.k0 = cos(phits); // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::merc #endif // doxygen /*! \brief Mercator projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - lat_ts= \par Example \image html ex_merc.gif */ template struct merc_ellipsoid : public detail::merc::base_merc_ellipsoid { inline merc_ellipsoid(const Parameters& par) : detail::merc::base_merc_ellipsoid(par) { detail::merc::setup_merc(this->m_par); } }; /*! \brief Mercator projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - lat_ts= \par Example \image html ex_merc.gif */ template struct merc_spheroid : public detail::merc::base_merc_spheroid { inline merc_spheroid(const Parameters& par) : detail::merc::base_merc_spheroid(par) { detail::merc::setup_merc(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class merc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void merc_init(detail::base_factory& factory) { factory.add_to_factory("merc", new merc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MERC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/mill.hpp000066400000000000000000000126461177067165300303470ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MILL_HPP #define GGL_PROJECTIONS_MILL_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace mill{ // template class, using CRTP to implement forward/inverse template struct base_mill_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_mill_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = lp_lon; xy_y = log(tan(FORTPI + lp_lat * .4)) * 1.25; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lon = xy_x; lp_lat = 2.5 * (atan(exp(.8 * xy_y)) - FORTPI); } }; // Miller Cylindrical template void setup_mill(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::mill #endif // doxygen /*! \brief Miller Cylindrical projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_mill.gif */ template struct mill_spheroid : public detail::mill::base_mill_spheroid { inline mill_spheroid(const Parameters& par) : detail::mill::base_mill_spheroid(par) { detail::mill::setup_mill(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class mill_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void mill_init(detail::base_factory& factory) { factory.add_to_factory("mill", new mill_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MILL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/mod_ster.hpp000066400000000000000000000467061177067165300312320ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MOD_STER_HPP #define GGL_PROJECTIONS_MOD_STER_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace mod_ster{ static const double EPSLN = 1e-10; struct par_mod_ster { COMPLEX *zcoeff; double cchio, schio; int n; }; /* based upon Snyder and Linck, USGS-NMD */ // template class, using CRTP to implement forward/inverse template struct base_mod_ster_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_mod_ster m_proj_parm; inline base_mod_ster_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double sinlon, coslon, esphi, chi, schi, cchi, s; COMPLEX p; sinlon = sin(lp_lon); coslon = cos(lp_lon); esphi = this->m_par.e * sin(lp_lat); chi = 2. * atan(tan((HALFPI + lp_lat) * .5) * pow((1. - esphi) / (1. + esphi), this->m_par.e * .5)) - HALFPI; schi = sin(chi); cchi = cos(chi); s = 2. / (1. + this->m_proj_parm.schio * schi + this->m_proj_parm.cchio * cchi * coslon); p.r = s * cchi * sinlon; p.i = s * (this->m_proj_parm.cchio * schi - this->m_proj_parm.schio * cchi * coslon); p = pj_zpoly1(p, this->m_proj_parm.zcoeff, this->m_proj_parm.n); xy_x = p.r; xy_y = p.i; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { int nn; COMPLEX p, fxy, fpxy, dp; double den, rh = 0, z, sinz = 0, cosz = 0, chi, phi = 0, dphi, esphi; p.r = xy_x; p.i = xy_y; for (nn = 20; nn ;--nn) { fxy = pj_zpolyd1(p, this->m_proj_parm.zcoeff, this->m_proj_parm.n, &fpxy); fxy.r -= xy_x; fxy.i -= xy_y; den = fpxy.r * fpxy.r + fpxy.i * fpxy.i; dp.r = -(fxy.r * fpxy.r + fxy.i * fpxy.i) / den; dp.i = -(fxy.i * fpxy.r - fxy.r * fpxy.i) / den; p.r += dp.r; p.i += dp.i; if ((fabs(dp.r) + fabs(dp.i)) <= EPSLN) break; } if (nn) { rh = boost::math::hypot(p.r, p.i); z = 2. * atan(.5 * rh); sinz = sin(z); cosz = cos(z); lp_lon = this->m_par.lam0; if (fabs(rh) <= EPSLN) { lp_lat = this->m_par.phi0; return; } chi = aasin(cosz * this->m_proj_parm.schio + p.i * sinz * this->m_proj_parm.cchio / rh); phi = chi; for (nn = 20; nn ;--nn) { esphi = this->m_par.e * sin(phi); dphi = 2. * atan(tan((HALFPI + chi) * .5) * pow((1. + esphi) / (1. - esphi), this->m_par.e * .5)) - HALFPI - phi; phi += dphi; if (fabs(dphi) <= EPSLN) break; } } if (nn) { lp_lat = phi; lp_lon = atan2(p.r * sinz, rh * this->m_proj_parm.cchio * cosz - p.i * this->m_proj_parm.schio * sinz); } else lp_lon = lp_lat = HUGE_VAL; } }; template void setup(Parameters& par, par_mod_ster& proj_parm) /* general initialization */ { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); double esphi, chio; if (par.es) { esphi = par.e * sin(par.phi0); chio = 2. * atan(tan((HALFPI + par.phi0) * .5) * pow((1. - esphi) / (1. + esphi), par.e * .5)) - HALFPI; } else chio = par.phi0; proj_parm.schio = sin(chio); proj_parm.cchio = cos(chio); // par.inv = e_inverse; // par.fwd = e_forward; } // Miller Oblated Stereographic template void setup_mil_os(Parameters& par, par_mod_ster& proj_parm) { static COMPLEX /* Miller Oblated Stereographic */ AB[] = { {0.924500, 0.}, {0., 0.}, {0.019430, 0.} }; proj_parm.n = 2; par.lam0 = DEG_TO_RAD * 20.; par.phi0 = DEG_TO_RAD * 18.; proj_parm.zcoeff = AB; par.es = 0.; setup(par, proj_parm); } // Lee Oblated Stereographic template void setup_lee_os(Parameters& par, par_mod_ster& proj_parm) { static COMPLEX /* Lee Oblated Stereographic */ AB[] = { {0.721316, 0.}, {0., 0.}, {-0.0088162, -0.00617325} }; proj_parm.n = 2; par.lam0 = DEG_TO_RAD * -165.; par.phi0 = DEG_TO_RAD * -10.; proj_parm.zcoeff = AB; par.es = 0.; setup(par, proj_parm); } // Mod. Stererographics of 48 U.S. template void setup_gs48(Parameters& par, par_mod_ster& proj_parm) { static COMPLEX /* 48 United States */ AB[] = { {0.98879, 0.}, {0., 0.}, {-0.050909, 0.}, {0., 0.}, {0.075528, 0.} }; proj_parm.n = 4; par.lam0 = DEG_TO_RAD * -96.; par.phi0 = DEG_TO_RAD * -39.; proj_parm.zcoeff = AB; par.es = 0.; par.a = 6370997.; setup(par, proj_parm); } // Mod. Stererographics of Alaska template void setup_alsk(Parameters& par, par_mod_ster& proj_parm) { static COMPLEX ABe[] = { /* Alaska ellipsoid */ {.9945303, 0.}, {.0052083, -.0027404}, {.0072721, .0048181}, {-.0151089, -.1932526}, {.0642675, -.1381226}, {.3582802, -.2884586}}, ABs[] = { /* Alaska sphere */ {.9972523, 0.}, {.0052513, -.0041175}, {.0074606, .0048125}, {-.0153783, -.1968253}, {.0636871, -.1408027}, {.3660976, -.2937382} }; proj_parm.n = 5; par.lam0 = DEG_TO_RAD * -152.; par.phi0 = DEG_TO_RAD * 64.; if (par.es) { /* fixed ellipsoid/sphere */ proj_parm.zcoeff = ABe; par.a = 6378206.4; par.e = sqrt(par.es = 0.00676866); } else { proj_parm.zcoeff = ABs; par.a = 6370997.; } setup(par, proj_parm); } // Mod. Stererographics of 50 U.S. template void setup_gs50(Parameters& par, par_mod_ster& proj_parm) { static COMPLEX ABe[] = { /* GS50 ellipsoid */ {.9827497, 0.}, {.0210669, .0053804}, {-.1031415, -.0571664}, {-.0323337, -.0322847}, {.0502303, .1211983}, {.0251805, .0895678}, {-.0012315, -.1416121}, {.0072202, -.1317091}, {-.0194029, .0759677}, {-.0210072, .0834037} }, ABs[] = { /* GS50 sphere */ {.9842990, 0.}, {.0211642, .0037608}, {-.1036018, -.0575102}, {-.0329095, -.0320119}, {.0499471, .1223335}, {.0260460, .0899805}, {.0007388, -.1435792}, {.0075848, -.1334108}, {-.0216473, .0776645}, {-.0225161, .0853673} }; proj_parm.n = 9; par.lam0 = DEG_TO_RAD * -120.; par.phi0 = DEG_TO_RAD * 45.; if (par.es) { /* fixed ellipsoid/sphere */ proj_parm.zcoeff = ABe; par.a = 6378206.4; par.e = sqrt(par.es = 0.00676866); } else { proj_parm.zcoeff = ABs; par.a = 6370997.; } setup(par, proj_parm); } }} // namespace detail::mod_ster #endif // doxygen /*! \brief Miller Oblated Stereographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azi(mod) \par Example \image html ex_mil_os.gif */ template struct mil_os_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid { inline mil_os_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid(par) { detail::mod_ster::setup_mil_os(this->m_par, this->m_proj_parm); } }; /*! \brief Lee Oblated Stereographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azi(mod) \par Example \image html ex_lee_os.gif */ template struct lee_os_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid { inline lee_os_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid(par) { detail::mod_ster::setup_lee_os(this->m_par, this->m_proj_parm); } }; /*! \brief Mod. Stererographics of 48 U.S. projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azi(mod) \par Example \image html ex_gs48.gif */ template struct gs48_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid { inline gs48_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid(par) { detail::mod_ster::setup_gs48(this->m_par, this->m_proj_parm); } }; /*! \brief Mod. Stererographics of Alaska projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azi(mod) \par Example \image html ex_alsk.gif */ template struct alsk_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid { inline alsk_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid(par) { detail::mod_ster::setup_alsk(this->m_par, this->m_proj_parm); } }; /*! \brief Mod. Stererographics of 50 U.S. projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azi(mod) \par Example \image html ex_gs50.gif */ template struct gs50_ellipsoid : public detail::mod_ster::base_mod_ster_ellipsoid { inline gs50_ellipsoid(const Parameters& par) : detail::mod_ster::base_mod_ster_ellipsoid(par) { detail::mod_ster::setup_gs50(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class mil_os_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class lee_os_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class gs48_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class alsk_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class gs50_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void mod_ster_init(detail::base_factory& factory) { factory.add_to_factory("mil_os", new mil_os_entry); factory.add_to_factory("lee_os", new lee_os_entry); factory.add_to_factory("gs48", new gs48_entry); factory.add_to_factory("alsk", new alsk_entry); factory.add_to_factory("gs50", new gs50_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MOD_STER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/moll.hpp000066400000000000000000000244121177067165300303470ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_MOLL_HPP #define GGL_PROJECTIONS_MOLL_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace moll{ static const int MAX_ITER = 10; static const double LOOP_TOL = 1e-7; struct par_moll { double C_x, C_y, C_p; }; // template class, using CRTP to implement forward/inverse template struct base_moll_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_moll m_proj_parm; inline base_moll_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double k, V; int i; k = this->m_proj_parm.C_p * sin(lp_lat); for (i = MAX_ITER; i ; --i) { lp_lat -= V = (lp_lat + sin(lp_lat) - k) / (1. + cos(lp_lat)); if (fabs(V) < LOOP_TOL) break; } if (!i) lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI; else lp_lat *= 0.5; xy_x = this->m_proj_parm.C_x * lp_lon * cos(lp_lat); xy_y = this->m_proj_parm.C_y * sin(lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = aasin(xy_y / this->m_proj_parm.C_y); lp_lon = xy_x / (this->m_proj_parm.C_x * cos(lp_lat)); lp_lat += lp_lat; lp_lat = aasin((lp_lat + sin(lp_lat)) / this->m_proj_parm.C_p); } }; template void setup(Parameters& par, par_moll& proj_parm, double p) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); double r, sp, p2 = p + p; par.es = 0; sp = sin(p); r = sqrt(TWOPI * sp / (p2 + sin(p2))); proj_parm.C_x = 2. * r / PI; proj_parm.C_y = r / sp; proj_parm.C_p = p2 + sin(p2); // par.inv = s_inverse; // par.fwd = s_forward; } // Mollweide template void setup_moll(Parameters& par, par_moll& proj_parm) { setup(par, proj_parm, HALFPI); } // Wagner IV template void setup_wag4(Parameters& par, par_moll& proj_parm) { setup(par, proj_parm, PI/3.); } // Wagner V template void setup_wag5(Parameters& par, par_moll& proj_parm) { par.es = 0; proj_parm.C_x = 0.90977; proj_parm.C_y = 1.65014; proj_parm.C_p = 3.00896; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::moll #endif // doxygen /*! \brief Mollweide projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_moll.gif */ template struct moll_spheroid : public detail::moll::base_moll_spheroid { inline moll_spheroid(const Parameters& par) : detail::moll::base_moll_spheroid(par) { detail::moll::setup_moll(this->m_par, this->m_proj_parm); } }; /*! \brief Wagner IV projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_wag4.gif */ template struct wag4_spheroid : public detail::moll::base_moll_spheroid { inline wag4_spheroid(const Parameters& par) : detail::moll::base_moll_spheroid(par) { detail::moll::setup_wag4(this->m_par, this->m_proj_parm); } }; /*! \brief Wagner V projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_wag5.gif */ template struct wag5_spheroid : public detail::moll::base_moll_spheroid { inline wag5_spheroid(const Parameters& par) : detail::moll::base_moll_spheroid(par) { detail::moll::setup_wag5(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class moll_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class wag4_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class wag5_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void moll_init(detail::base_factory& factory) { factory.add_to_factory("moll", new moll_entry); factory.add_to_factory("wag4", new wag4_entry); factory.add_to_factory("wag5", new wag5_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_MOLL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/nell.hpp000066400000000000000000000140301177067165300303310ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_NELL_HPP #define GGL_PROJECTIONS_NELL_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace nell{ static const int MAX_ITER = 10; static const double LOOP_TOL = 1e-7; // template class, using CRTP to implement forward/inverse template struct base_nell_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_nell_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double k, V; int i; k = 2. * sin(lp_lat); V = lp_lat * lp_lat; lp_lat *= 1.00371 + V * (-0.0935382 + V * -0.011412); for (i = MAX_ITER; i ; --i) { lp_lat -= V = (lp_lat + sin(lp_lat) - k) / (1. + cos(lp_lat)); if (fabs(V) < LOOP_TOL) break; } xy_x = 0.5 * lp_lon * (1. + cos(lp_lat)); xy_y = lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lon = 2. * xy_x / (1. + cos(xy_y)); lp_lat = aasin(0.5 * (xy_y + sin(xy_y))); } }; // Nell template void setup_nell(Parameters& par) { par.es = 0; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::nell #endif // doxygen /*! \brief Nell projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_nell.gif */ template struct nell_spheroid : public detail::nell::base_nell_spheroid { inline nell_spheroid(const Parameters& par) : detail::nell::base_nell_spheroid(par) { detail::nell::setup_nell(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class nell_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void nell_init(detail::base_factory& factory) { factory.add_to_factory("nell", new nell_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_NELL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/nell_h.hpp000066400000000000000000000140771177067165300306530ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_NELL_H_HPP #define GGL_PROJECTIONS_NELL_H_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace nell_h{ static const int NITER = 9; static const double EPS = 1e-7; // template class, using CRTP to implement forward/inverse template struct base_nell_h_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_nell_h_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = 0.5 * lp_lon * (1. + cos(lp_lat)); xy_y = 2.0 * (lp_lat - tan(0.5 *lp_lat)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double V, c, p; int i; p = 0.5 * xy_y; for (i = NITER; i ; --i) { c = cos(0.5 * lp_lat); lp_lat -= V = (lp_lat - tan(lp_lat/2) - p)/(1. - 0.5/(c*c)); if (fabs(V) < EPS) break; } if (!i) { lp_lat = p < 0. ? -HALFPI : HALFPI; lp_lon = 2. * xy_x; } else lp_lon = 2. * xy_x / (1. + cos(lp_lat)); } }; // Nell-Hammer template void setup_nell_h(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::nell_h #endif // doxygen /*! \brief Nell-Hammer projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_nell_h.gif */ template struct nell_h_spheroid : public detail::nell_h::base_nell_h_spheroid { inline nell_h_spheroid(const Parameters& par) : detail::nell_h::base_nell_h_spheroid(par) { detail::nell_h::setup_nell_h(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class nell_h_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void nell_h_init(detail::base_factory& factory) { factory.add_to_factory("nell_h", new nell_h_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_NELL_H_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/nocol.hpp000066400000000000000000000150041177067165300305130ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_NOCOL_HPP #define GGL_PROJECTIONS_NOCOL_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace nocol{ static const double EPS = 1e-10; // template class, using CRTP to implement forward/inverse template struct base_nocol_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_nocol_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { if (fabs(lp_lon) < EPS) { xy_x = 0; xy_y = lp_lat; } else if (fabs(lp_lat) < EPS) { xy_x = lp_lon; xy_y = 0.; } else if (fabs(fabs(lp_lon) - HALFPI) < EPS) { xy_x = lp_lon * cos(lp_lat); xy_y = HALFPI * sin(lp_lat); } else if (fabs(fabs(lp_lat) - HALFPI) < EPS) { xy_x = 0; xy_y = lp_lat; } else { double tb, c, d, m, n, r2, sp; tb = HALFPI / lp_lon - lp_lon / HALFPI; c = lp_lat / HALFPI; d = (1 - c * c)/((sp = sin(lp_lat)) - c); r2 = tb / d; r2 *= r2; m = (tb * sp / d - 0.5 * tb)/(1. + r2); n = (sp / r2 + 0.5 * d)/(1. + 1./r2); xy_x = cos(lp_lat); xy_x = sqrt(m * m + xy_x * xy_x / (1. + r2)); xy_x = HALFPI * ( m + (lp_lon < 0. ? -xy_x : xy_x)); xy_y = sqrt(n * n - (sp * sp / r2 + d * sp - 1.) / (1. + 1./r2)); xy_y = HALFPI * ( n + (lp_lat < 0. ? xy_y : -xy_y )); } } }; // Nicolosi Globular template void setup_nicol(Parameters& par) { par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::nocol #endif // doxygen /*! \brief Nicolosi Globular projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_nicol.gif */ template struct nicol_spheroid : public detail::nocol::base_nocol_spheroid { inline nicol_spheroid(const Parameters& par) : detail::nocol::base_nocol_spheroid(par) { detail::nocol::setup_nicol(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class nicol_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void nocol_init(detail::base_factory& factory) { factory.add_to_factory("nicol", new nicol_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_NOCOL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/nsper.hpp000066400000000000000000000322761177067165300305420ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_NSPER_HPP #define GGL_PROJECTIONS_NSPER_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace nsper{ static const double EPS10 = 1.e-10; static const int N_POLE = 0; static const int S_POLE = 1; static const int EQUIT = 2; static const int OBLIQ = 3; struct par_nsper { double height; double sinph0; double cosph0; double p; double rp; double pn1; double pfact; double h; double cg; double sg; double sw; double cw; int mode; int tilt; }; // template class, using CRTP to implement forward/inverse template struct base_nsper_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_nsper m_proj_parm; inline base_nsper_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, cosphi, sinphi; sinphi = sin(lp_lat); cosphi = cos(lp_lat); coslam = cos(lp_lon); switch (this->m_proj_parm.mode) { case OBLIQ: xy_y = this->m_proj_parm.sinph0 * sinphi + this->m_proj_parm.cosph0 * cosphi * coslam; break; case EQUIT: xy_y = cosphi * coslam; break; case S_POLE: xy_y = - sinphi; break; case N_POLE: xy_y = sinphi; break; } if (xy_y < this->m_proj_parm.rp) throw proj_exception();; xy_y = this->m_proj_parm.pn1 / (this->m_proj_parm.p - xy_y); xy_x = xy_y * cosphi * sin(lp_lon); switch (this->m_proj_parm.mode) { case OBLIQ: xy_y *= (this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam); break; case EQUIT: xy_y *= sinphi; break; case N_POLE: coslam = - coslam; case S_POLE: xy_y *= cosphi * coslam; break; } if (this->m_proj_parm.tilt) { double yt, ba; yt = xy_y * this->m_proj_parm.cg + xy_x * this->m_proj_parm.sg; ba = 1. / (yt * this->m_proj_parm.sw * this->m_proj_parm.h + this->m_proj_parm.cw); xy_x = (xy_x * this->m_proj_parm.cg - xy_y * this->m_proj_parm.sg) * this->m_proj_parm.cw * ba; xy_y = yt * ba; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rh, cosz, sinz; if (this->m_proj_parm.tilt) { double bm, bq, yt; yt = 1./(this->m_proj_parm.pn1 - xy_y * this->m_proj_parm.sw); bm = this->m_proj_parm.pn1 * xy_x * yt; bq = this->m_proj_parm.pn1 * xy_y * this->m_proj_parm.cw * yt; xy_x = bm * this->m_proj_parm.cg + bq * this->m_proj_parm.sg; xy_y = bq * this->m_proj_parm.cg - bm * this->m_proj_parm.sg; } rh = boost::math::hypot(xy_x, xy_y); if ((sinz = 1. - rh * rh * this->m_proj_parm.pfact) < 0.) throw proj_exception();; sinz = (this->m_proj_parm.p - sqrt(sinz)) / (this->m_proj_parm.pn1 / rh + rh / this->m_proj_parm.pn1); cosz = sqrt(1. - sinz * sinz); if (fabs(rh) <= EPS10) { lp_lon = 0.; lp_lat = this->m_par.phi0; } else { switch (this->m_proj_parm.mode) { case OBLIQ: lp_lat = asin(cosz * this->m_proj_parm.sinph0 + xy_y * sinz * this->m_proj_parm.cosph0 / rh); xy_y = (cosz - this->m_proj_parm.sinph0 * sin(lp_lat)) * rh; xy_x *= sinz * this->m_proj_parm.cosph0; break; case EQUIT: lp_lat = asin(xy_y * sinz / rh); xy_y = cosz * rh; xy_x *= sinz; break; case N_POLE: lp_lat = asin(cosz); xy_y = -xy_y; break; case S_POLE: lp_lat = - asin(cosz); break; } lp_lon = atan2(xy_x, xy_y); } } }; template void setup(Parameters& par, par_nsper& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); if ((proj_parm.height = pj_param(par.params, "dh").f) <= 0.) throw proj_exception(-30); if (fabs(fabs(par.phi0) - HALFPI) < EPS10) proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; else if (fabs(par.phi0) < EPS10) proj_parm.mode = EQUIT; else { proj_parm.mode = OBLIQ; proj_parm.sinph0 = sin(par.phi0); proj_parm.cosph0 = cos(par.phi0); } proj_parm.pn1 = proj_parm.height / par.a; /* normalize by radius */ proj_parm.p = 1. + proj_parm.pn1; proj_parm.rp = 1. / proj_parm.p; proj_parm.h = 1. / proj_parm.pn1; proj_parm.pfact = (proj_parm.p + 1.) * proj_parm.h; // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } // Near-sided perspective template void setup_nsper(Parameters& par, par_nsper& proj_parm) { proj_parm.tilt = 0; setup(par, proj_parm); } // Tilted perspective template void setup_tpers(Parameters& par, par_nsper& proj_parm) { double omega, gamma; omega = pj_param(par.params, "dtilt").f * DEG_TO_RAD; gamma = pj_param(par.params, "dazi").f * DEG_TO_RAD; proj_parm.tilt = 1; proj_parm.cg = cos(gamma); proj_parm.sg = sin(gamma); proj_parm.cw = cos(omega); proj_parm.sw = sin(omega); setup(par, proj_parm); } }} // namespace detail::nsper #endif // doxygen /*! \brief Near-sided perspective projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - h= \par Example \image html ex_nsper.gif */ template struct nsper_spheroid : public detail::nsper::base_nsper_spheroid { inline nsper_spheroid(const Parameters& par) : detail::nsper::base_nsper_spheroid(par) { detail::nsper::setup_nsper(this->m_par, this->m_proj_parm); } }; /*! \brief Tilted perspective projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - tilt= azi= h= \par Example \image html ex_tpers.gif */ template struct tpers_spheroid : public detail::nsper::base_nsper_spheroid { inline tpers_spheroid(const Parameters& par) : detail::nsper::base_nsper_spheroid(par) { detail::nsper::setup_tpers(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class nsper_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class tpers_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void nsper_init(detail::base_factory& factory) { factory.add_to_factory("nsper", new nsper_entry); factory.add_to_factory("tpers", new tpers_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_NSPER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/nzmg.hpp000066400000000000000000000176431177067165300303670ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_NZMG_HPP #define GGL_PROJECTIONS_NZMG_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace nzmg{ static const double EPSLN = 1e-10; static const double SEC5_TO_RAD = 0.4848136811095359935899141023; static const double RAD_TO_SEC5 = 2.062648062470963551564733573; static const int Nbf = 5; static const int Ntpsi = 9; static const int Ntphi = 8; static COMPLEX bf[] = { {.7557853228, 0.0}, {.249204646, .003371507}, {-.001541739, .041058560}, {-.10162907, .01727609}, {-.26623489, -.36249218}, {-.6870983, -1.1651967} }; static double tphi[] = { 1.5627014243, .5185406398, -.03333098, -.1052906, -.0368594, .007317, .01220, .00394, -.0013 }, tpsi[] = { .6399175073, -.1358797613, .063294409, -.02526853, .0117879, -.0055161, .0026906, -.001333, .00067, -.00034 }; // template class, using CRTP to implement forward/inverse template struct base_nzmg_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_nzmg_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { COMPLEX p; double *C; int i; lp_lat = (lp_lat - this->m_par.phi0) * RAD_TO_SEC5; for (p.r = *(C = tpsi + (i = Ntpsi)); i ; --i) p.r = *--C + lp_lat * p.r; p.r *= lp_lat; p.i = lp_lon; p = pj_zpoly1(p, bf, Nbf); xy_x = p.i; xy_y = p.r; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { int nn, i; COMPLEX p, f, fp, dp; double den, *C; p.r = xy_y; p.i = xy_x; for (nn = 20; nn ;--nn) { f = pj_zpolyd1(p, bf, Nbf, &fp); f.r -= xy_y; f.i -= xy_x; den = fp.r * fp.r + fp.i * fp.i; p.r += dp.r = -(f.r * fp.r + f.i * fp.i) / den; p.i += dp.i = -(f.i * fp.r - f.r * fp.i) / den; if ((fabs(dp.r) + fabs(dp.i)) <= EPSLN) break; } if (nn) { lp_lon = p.i; for (lp_lat = *(C = tphi + (i = Ntphi)); i ; --i) lp_lat = *--C + p.r * lp_lat; lp_lat = this->m_par.phi0 + p.r * lp_lat * SEC5_TO_RAD; } else lp_lon = lp_lat = HUGE_VAL; } }; // New Zealand Map Grid template void setup_nzmg(Parameters& par) { /* force to International major axis */ par.ra = 1. / (par.a = 6378388.0); par.lam0 = DEG_TO_RAD * 173.; par.phi0 = DEG_TO_RAD * -41.; par.x0 = 2510000.; par.y0 = 6023150.; // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::nzmg #endif // doxygen /*! \brief New Zealand Map Grid projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - fixed Earth \par Example \image html ex_nzmg.gif */ template struct nzmg_ellipsoid : public detail::nzmg::base_nzmg_ellipsoid { inline nzmg_ellipsoid(const Parameters& par) : detail::nzmg::base_nzmg_ellipsoid(par) { detail::nzmg::setup_nzmg(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class nzmg_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void nzmg_init(detail::base_factory& factory) { factory.add_to_factory("nzmg", new nzmg_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_NZMG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/ob_tran.hpp000066400000000000000000000337371177067165300310420ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_OB_TRAN_HPP #define GGL_PROJECTIONS_OB_TRAN_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { template class factory; #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace ob_tran{ static const double TOL = 1e-10; template struct par_ob_tran { boost::shared_ptr > link; double lamp; double cphip, sphip; }; // template class, using CRTP to implement forward/inverse template struct base_ob_tran_oblique : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_ob_tran m_proj_parm; inline base_ob_tran_oblique(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, sinphi, cosphi; coslam = cos(lp_lon); sinphi = sin(lp_lat); cosphi = cos(lp_lat); lp_lon = adjlon(aatan2(cosphi * sin(lp_lon), this->m_proj_parm.sphip * cosphi * coslam + this->m_proj_parm.cphip * sinphi) + this->m_proj_parm.lamp); lp_lat = aasin(this->m_proj_parm.sphip * sinphi - this->m_proj_parm.cphip * cosphi * coslam); m_proj_parm.link->fwd(lp_lon, lp_lat, xy_x, xy_y); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double coslam, sinphi, cosphi; m_proj_parm.link->inv(xy_x, xy_y, lp_lon, lp_lat); if (lp_lon != HUGE_VAL) { coslam = cos(lp_lon -= this->m_proj_parm.lamp); sinphi = sin(lp_lat); cosphi = cos(lp_lat); lp_lat = aasin(this->m_proj_parm.sphip * sinphi + this->m_proj_parm.cphip * cosphi * coslam); lp_lon = aatan2(cosphi * sin(lp_lon), this->m_proj_parm.sphip * cosphi * coslam - this->m_proj_parm.cphip * sinphi); } } }; // template class, using CRTP to implement forward/inverse template struct base_ob_tran_transverse : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_ob_tran m_proj_parm; inline base_ob_tran_transverse(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double cosphi, coslam; cosphi = cos(lp_lat); coslam = cos(lp_lon); lp_lon = adjlon(aatan2(cosphi * sin(lp_lon), sin(lp_lat)) + this->m_proj_parm.lamp); lp_lat = aasin(- cosphi * coslam); m_proj_parm.link->fwd(lp_lon, lp_lat, xy_x, xy_y); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double cosphi, t; m_proj_parm.link->inv(xy_x, xy_y, lp_lon, lp_lat); if (lp_lon != HUGE_VAL) { cosphi = cos(lp_lat); t = lp_lon - this->m_proj_parm.lamp; lp_lon = aatan2(cosphi * sin(t), - sin(lp_lat)); lp_lat = aasin(cosphi * cos(t)); } } }; // General Oblique Transformation template double setup_ob_tran(Parameters& par, par_ob_tran& proj_parm, bool create = true) { int i; double phip; Parameters pj; /* copy existing header into new */ par.es = 0.; /* force to spherical */ pj.params = par.params; pj.over = par.over; pj.geoc = par.geoc; pj.a = par.a; pj.es = par.es; pj.ra = par.ra; pj.lam0 = par.lam0; pj.phi0 = par.phi0; pj.x0 = par.x0; pj.y0 = par.y0; pj.k0 = par.k0; /* force spherical earth */ pj.one_es = pj.rone_es = 1.; pj.es = pj.e = 0.; pj.name = pj_param(par.params, "so_proj").s; factory fac; if (create) { proj_parm.link.reset(fac.create_new(pj)); if (! proj_parm.link.get()) throw proj_exception(-26); } if (pj_param(par.params, "to_alpha").i) { double lamc, phic, alpha; lamc = pj_param(par.params, "ro_lon_c").f; phic = pj_param(par.params, "ro_lat_c").f; alpha = pj_param(par.params, "ro_alpha").f; /* if (fabs(phic) <= TOL || fabs(fabs(phic) - HALFPI) <= TOL || fabs(fabs(alpha) - HALFPI) <= TOL) */ if (fabs(fabs(phic) - HALFPI) <= TOL) throw proj_exception(-32); proj_parm.lamp = lamc + aatan2(-cos(alpha), -sin(alpha) * sin(phic)); phip = aasin(cos(phic) * sin(alpha)); } else if (pj_param(par.params, "to_lat_p").i) { /* specified new pole */ proj_parm.lamp = pj_param(par.params, "ro_lon_p").f; phip = pj_param(par.params, "ro_lat_p").f; } else { /* specified new "equator" points */ double lam1, lam2, phi1, phi2, con; lam1 = pj_param(par.params, "ro_lon_1").f; phi1 = pj_param(par.params, "ro_lat_1").f; lam2 = pj_param(par.params, "ro_lon_2").f; phi2 = pj_param(par.params, "ro_lat_2").f; if (fabs(phi1 - phi2) <= TOL || (con = fabs(phi1)) <= TOL || fabs(con - HALFPI) <= TOL || fabs(fabs(phi2) - HALFPI) <= TOL) throw proj_exception(-33); proj_parm.lamp = atan2(cos(phi1) * sin(phi2) * cos(lam1) - sin(phi1) * cos(phi2) * cos(lam2), sin(phi1) * cos(phi2) * sin(lam2) - cos(phi1) * sin(phi2) * sin(lam1)); phip = atan(-cos(proj_parm.lamp - lam1) / tan(phi1)); } if (fabs(phip) > TOL) { /* oblique */ proj_parm.cphip = cos(phip); proj_parm.sphip = sin(phip); // par.fwd = o_forward; // par.inv = pj.inv ? o_inverse : 0; } else { /* transverse */ // par.fwd = t_forward; // par.inv = pj.inv ? t_inverse : 0; } boost::ignore_unused_variable_warning(i); // return phip to choose model return phip; } }} // namespace detail::ob_tran #endif // doxygen /*! \brief General Oblique Transformation projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - o_proj= plus parameters for projection - o_lat_p= o_lon_p= (new pole) or - o_alpha= o_lon_c= o_lat_c= or - o_lon_1= o_lat_1= o_lon_2= o_lat_2= \par Example \image html ex_ob_tran.gif */ template struct ob_tran_oblique : public detail::ob_tran::base_ob_tran_oblique { inline ob_tran_oblique(const Parameters& par) : detail::ob_tran::base_ob_tran_oblique(par) { detail::ob_tran::setup_ob_tran(this->m_par, this->m_proj_parm); } }; /*! \brief General Oblique Transformation projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - o_proj= plus parameters for projection - o_lat_p= o_lon_p= (new pole) or - o_alpha= o_lon_c= o_lat_c= or - o_lon_1= o_lat_1= o_lon_2= o_lat_2= \par Example \image html ex_ob_tran.gif */ template struct ob_tran_transverse : public detail::ob_tran::base_ob_tran_transverse { inline ob_tran_transverse(const Parameters& par) : detail::ob_tran::base_ob_tran_transverse(par) { detail::ob_tran::setup_ob_tran(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class ob_tran_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { detail::ob_tran::par_ob_tran proj_parm; Parameters p = par; double phip = setup_ob_tran(p, proj_parm, false); if (fabs(phip) > detail::ob_tran::TOL) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void ob_tran_init(detail::base_factory& factory) { factory.add_to_factory("ob_tran", new ob_tran_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_OB_TRAN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/ocea.hpp000066400000000000000000000201771177067165300303170ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_OCEA_HPP #define GGL_PROJECTIONS_OCEA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace ocea{ struct par_ocea { double rok; double rtk; double sinphi; double cosphi; double singam; double cosgam; }; // template class, using CRTP to implement forward/inverse template struct base_ocea_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_ocea m_proj_parm; inline base_ocea_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double t; xy_y = sin(lp_lon); /* xy_x = atan2((tan(lp_lat) * this->m_proj_parm.cosphi + this->m_proj_parm.sinphi * xy_y) , cos(lp_lon)); */ t = cos(lp_lon); xy_x = atan((tan(lp_lat) * this->m_proj_parm.cosphi + this->m_proj_parm.sinphi * xy_y) / t); if (t < 0.) xy_x += PI; xy_x *= this->m_proj_parm.rtk; xy_y = this->m_proj_parm.rok * (this->m_proj_parm.sinphi * sin(lp_lat) - this->m_proj_parm.cosphi * cos(lp_lat) * xy_y); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t, s; xy_y /= this->m_proj_parm.rok; xy_x /= this->m_proj_parm.rtk; t = sqrt(1. - xy_y * xy_y); lp_lat = asin(xy_y * this->m_proj_parm.sinphi + t * this->m_proj_parm.cosphi * (s = sin(xy_x))); lp_lon = atan2(t * this->m_proj_parm.sinphi * s - xy_y * this->m_proj_parm.cosphi, t * cos(xy_x)); } }; // Oblique Cylindrical Equal Area template void setup_ocea(Parameters& par, par_ocea& proj_parm) { double phi_0=0.0, phi_1, phi_2, lam_1, lam_2, lonz, alpha; proj_parm.rok = par.a / par.k0; proj_parm.rtk = par.a * par.k0; if ( pj_param(par.params, "talpha").i) { alpha = pj_param(par.params, "ralpha").f; lonz = pj_param(par.params, "rlonc").f; proj_parm.singam = atan(-cos(alpha)/(-sin(phi_0) * sin(alpha))) + lonz; proj_parm.sinphi = asin(cos(phi_0) * sin(alpha)); } else { phi_1 = pj_param(par.params, "rlat_1").f; phi_2 = pj_param(par.params, "rlat_2").f; lam_1 = pj_param(par.params, "rlon_1").f; lam_2 = pj_param(par.params, "rlon_2").f; proj_parm.singam = atan2(cos(phi_1) * sin(phi_2) * cos(lam_1) - sin(phi_1) * cos(phi_2) * cos(lam_2), sin(phi_1) * cos(phi_2) * sin(lam_2) - cos(phi_1) * sin(phi_2) * sin(lam_1) ); proj_parm.sinphi = atan(-cos(proj_parm.singam - lam_1) / tan(phi_1)); } par.lam0 = proj_parm.singam + HALFPI; proj_parm.cosphi = cos(proj_parm.sinphi); proj_parm.sinphi = sin(proj_parm.sinphi); proj_parm.cosgam = cos(proj_parm.singam); proj_parm.singam = sin(proj_parm.singam); // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::ocea #endif // doxygen /*! \brief Oblique Cylindrical Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Sph lonc= alpha= or - lat_1= lat_2= lon_1= lon_2= \par Example \image html ex_ocea.gif */ template struct ocea_spheroid : public detail::ocea::base_ocea_spheroid { inline ocea_spheroid(const Parameters& par) : detail::ocea::base_ocea_spheroid(par) { detail::ocea::setup_ocea(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class ocea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void ocea_init(detail::base_factory& factory) { factory.add_to_factory("ocea", new ocea_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_OCEA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/oea.hpp000066400000000000000000000175321177067165300301550ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_OEA_HPP #define GGL_PROJECTIONS_OEA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace oea{ struct par_oea { double theta; double m, n; double two_r_m, two_r_n, rm, rn, hm, hn; double cp0, sp0; }; // template class, using CRTP to implement forward/inverse template struct base_oea_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_oea m_proj_parm; inline base_oea_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double Az, M, N, cp, sp, cl, shz; cp = cos(lp_lat); sp = sin(lp_lat); cl = cos(lp_lon); Az = aatan2(cp * sin(lp_lon), this->m_proj_parm.cp0 * sp - this->m_proj_parm.sp0 * cp * cl) + this->m_proj_parm.theta; shz = sin(0.5 * aacos(this->m_proj_parm.sp0 * sp + this->m_proj_parm.cp0 * cp * cl)); M = aasin(shz * sin(Az)); N = aasin(shz * cos(Az) * cos(M) / cos(M * this->m_proj_parm.two_r_m)); xy_y = this->m_proj_parm.n * sin(N * this->m_proj_parm.two_r_n); xy_x = this->m_proj_parm.m * sin(M * this->m_proj_parm.two_r_m) * cos(N) / cos(N * this->m_proj_parm.two_r_n); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double N, M, xp, yp, z, Az, cz, sz, cAz; N = this->m_proj_parm.hn * aasin(xy_y * this->m_proj_parm.rn); M = this->m_proj_parm.hm * aasin(xy_x * this->m_proj_parm.rm * cos(N * this->m_proj_parm.two_r_n) / cos(N)); xp = 2. * sin(M); yp = 2. * sin(N) * cos(M * this->m_proj_parm.two_r_m) / cos(M); cAz = cos(Az = aatan2(xp, yp) - this->m_proj_parm.theta); z = 2. * aasin(0.5 * boost::math::hypot(xp, yp)); sz = sin(z); cz = cos(z); lp_lat = aasin(this->m_proj_parm.sp0 * cz + this->m_proj_parm.cp0 * sz * cAz); lp_lon = aatan2(sz * sin(Az), this->m_proj_parm.cp0 * cz - this->m_proj_parm.sp0 * sz * cAz); } }; // Oblated Equal Area template void setup_oea(Parameters& par, par_oea& proj_parm) { if (((proj_parm.n = pj_param(par.params, "dn").f) <= 0.) || ((proj_parm.m = pj_param(par.params, "dm").f) <= 0.)) throw proj_exception(-39); else { proj_parm.theta = pj_param(par.params, "rtheta").f; proj_parm.sp0 = sin(par.phi0); proj_parm.cp0 = cos(par.phi0); proj_parm.rn = 1./ proj_parm.n; proj_parm.rm = 1./ proj_parm.m; proj_parm.two_r_n = 2. * proj_parm.rn; proj_parm.two_r_m = 2. * proj_parm.rm; proj_parm.hm = 0.5 * proj_parm.m; proj_parm.hn = 0.5 * proj_parm.n; // par.fwd = s_forward; // par.inv = s_inverse; par.es = 0.; } } }} // namespace detail::oea #endif // doxygen /*! \brief Oblated Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - n= m= theta= \par Example \image html ex_oea.gif */ template struct oea_spheroid : public detail::oea::base_oea_spheroid { inline oea_spheroid(const Parameters& par) : detail::oea::base_oea_spheroid(par) { detail::oea::setup_oea(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class oea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void oea_init(detail::base_factory& factory) { factory.add_to_factory("oea", new oea_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_OEA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/omerc.hpp000066400000000000000000000340671177067165300305200ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_OMERC_HPP #define GGL_PROJECTIONS_OMERC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace omerc{ static const double TOL = 1.e-7; static const double EPS = 1.e-10; inline double TSFN0(double x) {return tan(.5 * (HALFPI - (x))); } struct par_omerc { double alpha, lamc, lam1, phi1, lam2, phi2, Gamma, al, bl, el, singam, cosgam, sinrot, cosrot, u_0; int ellips, rot; }; // template class, using CRTP to implement forward/inverse template struct base_omerc_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_omerc m_proj_parm; inline base_omerc_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double con, q, s, ul, us, vl, vs; vl = sin(this->m_proj_parm.bl * lp_lon); if (fabs(fabs(lp_lat) - HALFPI) <= EPS) { ul = lp_lat < 0. ? -this->m_proj_parm.singam : this->m_proj_parm.singam; us = this->m_proj_parm.al * lp_lat / this->m_proj_parm.bl; } else { q = this->m_proj_parm.el / (this->m_proj_parm.ellips ? pow(pj_tsfn(lp_lat, sin(lp_lat), this->m_par.e), this->m_proj_parm.bl) : TSFN0(lp_lat)); s = .5 * (q - 1. / q); ul = 2. * (s * this->m_proj_parm.singam - vl * this->m_proj_parm.cosgam) / (q + 1. / q); con = cos(this->m_proj_parm.bl * lp_lon); if (fabs(con) >= TOL) { us = this->m_proj_parm.al * atan((s * this->m_proj_parm.cosgam + vl * this->m_proj_parm.singam) / con) / this->m_proj_parm.bl; if (con < 0.) us += PI * this->m_proj_parm.al / this->m_proj_parm.bl; } else us = this->m_proj_parm.al * this->m_proj_parm.bl * lp_lon; } if (fabs(fabs(ul) - 1.) <= EPS) throw proj_exception();; vs = .5 * this->m_proj_parm.al * log((1. - ul) / (1. + ul)) / this->m_proj_parm.bl; us -= this->m_proj_parm.u_0; if (! this->m_proj_parm.rot) { xy_x = us; xy_y = vs; } else { xy_x = vs * this->m_proj_parm.cosrot + us * this->m_proj_parm.sinrot; xy_y = us * this->m_proj_parm.cosrot - vs * this->m_proj_parm.sinrot; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double q, s, ul, us, vl, vs; if (! this->m_proj_parm.rot) { us = xy_x; vs = xy_y; } else { vs = xy_x * this->m_proj_parm.cosrot - xy_y * this->m_proj_parm.sinrot; us = xy_y * this->m_proj_parm.cosrot + xy_x * this->m_proj_parm.sinrot; } us += this->m_proj_parm.u_0; q = exp(- this->m_proj_parm.bl * vs / this->m_proj_parm.al); s = .5 * (q - 1. / q); vl = sin(this->m_proj_parm.bl * us / this->m_proj_parm.al); ul = 2. * (vl * this->m_proj_parm.cosgam + s * this->m_proj_parm.singam) / (q + 1. / q); if (fabs(fabs(ul) - 1.) < EPS) { lp_lon = 0.; lp_lat = ul < 0. ? -HALFPI : HALFPI; } else { lp_lat = this->m_proj_parm.el / sqrt((1. + ul) / (1. - ul)); if (this->m_proj_parm.ellips) { if ((lp_lat = pj_phi2(pow(lp_lat, 1. / this->m_proj_parm.bl), this->m_par.e)) == HUGE_VAL) throw proj_exception();; } else lp_lat = HALFPI - 2. * atan(lp_lat); lp_lon = - atan2((s * this->m_proj_parm.cosgam - vl * this->m_proj_parm.singam), cos(this->m_proj_parm.bl * us / this->m_proj_parm.al)) / this->m_proj_parm.bl; } } }; // Oblique Mercator template void setup_omerc(Parameters& par, par_omerc& proj_parm) { double con, com, cosph0, d, f, h, l, sinph0, p, j; int azi; proj_parm.rot = pj_param(par.params, "bno_rot").i == 0; if( (azi = pj_param(par.params, "talpha").i) != 0.0) { proj_parm.lamc = pj_param(par.params, "rlonc").f; proj_parm.alpha = pj_param(par.params, "ralpha").f; if ( fabs(proj_parm.alpha) <= TOL || fabs(fabs(par.phi0) - HALFPI) <= TOL || fabs(fabs(proj_parm.alpha) - HALFPI) <= TOL) throw proj_exception(-32); } else { proj_parm.lam1 = pj_param(par.params, "rlon_1").f; proj_parm.phi1 = pj_param(par.params, "rlat_1").f; proj_parm.lam2 = pj_param(par.params, "rlon_2").f; proj_parm.phi2 = pj_param(par.params, "rlat_2").f; if (fabs(proj_parm.phi1 - proj_parm.phi2) <= TOL || (con = fabs(proj_parm.phi1)) <= TOL || fabs(con - HALFPI) <= TOL || fabs(fabs(par.phi0) - HALFPI) <= TOL || fabs(fabs(proj_parm.phi2) - HALFPI) <= TOL) throw proj_exception(-33); } com = (proj_parm.ellips = par.es > 0.) ? sqrt(par.one_es) : 1.; if (fabs(par.phi0) > EPS) { sinph0 = sin(par.phi0); cosph0 = cos(par.phi0); if (proj_parm.ellips) { con = 1. - par.es * sinph0 * sinph0; proj_parm.bl = cosph0 * cosph0; proj_parm.bl = sqrt(1. + par.es * proj_parm.bl * proj_parm.bl / par.one_es); proj_parm.al = proj_parm.bl * par.k0 * com / con; d = proj_parm.bl * com / (cosph0 * sqrt(con)); } else { proj_parm.bl = 1.; proj_parm.al = par.k0; d = 1. / cosph0; } if ((f = d * d - 1.) <= 0.) f = 0.; else { f = sqrt(f); if (par.phi0 < 0.) f = -f; } proj_parm.el = f += d; if (proj_parm.ellips) proj_parm.el *= pow(pj_tsfn(par.phi0, sinph0, par.e), proj_parm.bl); else proj_parm.el *= TSFN0(par.phi0); } else { proj_parm.bl = 1. / com; proj_parm.al = par.k0; proj_parm.el = d = f = 1.; } if (azi) { proj_parm.Gamma = asin(sin(proj_parm.alpha) / d); par.lam0 = proj_parm.lamc - asin((.5 * (f - 1. / f)) * tan(proj_parm.Gamma)) / proj_parm.bl; } else { if (proj_parm.ellips) { h = pow(pj_tsfn(proj_parm.phi1, sin(proj_parm.phi1), par.e), proj_parm.bl); l = pow(pj_tsfn(proj_parm.phi2, sin(proj_parm.phi2), par.e), proj_parm.bl); } else { h = TSFN0(proj_parm.phi1); l = TSFN0(proj_parm.phi2); } f = proj_parm.el / h; p = (l - h) / (l + h); j = proj_parm.el * proj_parm.el; j = (j - l * h) / (j + l * h); if ((con = proj_parm.lam1 - proj_parm.lam2) < -PI) proj_parm.lam2 -= TWOPI; else if (con > PI) proj_parm.lam2 += TWOPI; par.lam0 = adjlon(.5 * (proj_parm.lam1 + proj_parm.lam2) - atan( j * tan(.5 * proj_parm.bl * (proj_parm.lam1 - proj_parm.lam2)) / p) / proj_parm.bl); proj_parm.Gamma = atan(2. * sin(proj_parm.bl * adjlon(proj_parm.lam1 - par.lam0)) / (f - 1. / f)); proj_parm.alpha = asin(d * sin(proj_parm.Gamma)); } proj_parm.singam = sin(proj_parm.Gamma); proj_parm.cosgam = cos(proj_parm.Gamma); f = pj_param(par.params, "brot_conv").i ? proj_parm.Gamma : proj_parm.alpha; proj_parm.sinrot = sin(f); proj_parm.cosrot = cos(f); proj_parm.u_0 = pj_param(par.params, "bno_uoff").i ? 0. : fabs(proj_parm.al * atan(sqrt(d * d - 1.) / proj_parm.cosrot) / proj_parm.bl); if (par.phi0 < 0.) proj_parm.u_0 = - proj_parm.u_0; // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::omerc #endif // doxygen /*! \brief Oblique Mercator projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid - no_rot rot_conv no_uoff and - alpha= lonc= or - lon_1= lat_1= lon_2= lat_2= \par Example \image html ex_omerc.gif */ template struct omerc_ellipsoid : public detail::omerc::base_omerc_ellipsoid { inline omerc_ellipsoid(const Parameters& par) : detail::omerc::base_omerc_ellipsoid(par) { detail::omerc::setup_omerc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class omerc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void omerc_init(detail::base_factory& factory) { factory.add_to_factory("omerc", new omerc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_OMERC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/ortho.hpp000066400000000000000000000222511177067165300305360ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ORTHO_HPP #define GGL_PROJECTIONS_ORTHO_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace ortho{ static const double EPS10 = 1.e-10; static const int N_POLE = 0; static const int S_POLE = 1; static const int EQUIT = 2; static const int OBLIQ = 3; struct par_ortho { double sinph0; double cosph0; int mode; }; // template class, using CRTP to implement forward/inverse template struct base_ortho_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_ortho m_proj_parm; inline base_ortho_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, cosphi, sinphi; cosphi = cos(lp_lat); coslam = cos(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: if (cosphi * coslam < - EPS10) throw proj_exception();; xy_y = sin(lp_lat); break; case OBLIQ: if (this->m_proj_parm.sinph0 * (sinphi = sin(lp_lat)) + this->m_proj_parm.cosph0 * cosphi * coslam < - EPS10) throw proj_exception();; xy_y = this->m_proj_parm.cosph0 * sinphi - this->m_proj_parm.sinph0 * cosphi * coslam; break; case N_POLE: coslam = - coslam; case S_POLE: if (fabs(lp_lat - this->m_par.phi0) - EPS10 > HALFPI) throw proj_exception();; xy_y = cosphi * coslam; break; } xy_x = cosphi * sin(lp_lon); return; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rh, cosc, sinc; if ((sinc = (rh = boost::math::hypot(xy_x, xy_y))) > 1.) { if ((sinc - 1.) > EPS10) throw proj_exception();; sinc = 1.; } cosc = sqrt(1. - sinc * sinc); /* in this range OK */ if (fabs(rh) <= EPS10) { lp_lat = this->m_par.phi0; lp_lon = 0.0; } else { switch (this->m_proj_parm.mode) { case N_POLE: xy_y = -xy_y; lp_lat = acos(sinc); break; case S_POLE: lp_lat = - acos(sinc); break; case EQUIT: lp_lat = xy_y * sinc / rh; xy_x *= sinc; xy_y = cosc * rh; goto sinchk; case OBLIQ: lp_lat = cosc * this->m_proj_parm.sinph0 + xy_y * sinc * this->m_proj_parm.cosph0 /rh; xy_y = (cosc - this->m_proj_parm.sinph0 * lp_lat) * rh; xy_x *= sinc * this->m_proj_parm.cosph0; sinchk: if (fabs(lp_lat) >= 1.) lp_lat = lp_lat < 0. ? -HALFPI : HALFPI; else lp_lat = asin(lp_lat); break; } lp_lon = (xy_y == 0. && (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT)) ? (xy_x == 0. ? 0. : xy_x < 0. ? -HALFPI : HALFPI) : atan2(xy_x, xy_y); } return; } }; // Orthographic template void setup_ortho(Parameters& par, par_ortho& proj_parm) { if (fabs(fabs(par.phi0) - HALFPI) <= EPS10) proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; else if (fabs(par.phi0) > EPS10) { proj_parm.mode = OBLIQ; proj_parm.sinph0 = sin(par.phi0); proj_parm.cosph0 = cos(par.phi0); } else proj_parm.mode = EQUIT; // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::ortho #endif // doxygen /*! \brief Orthographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid \par Example \image html ex_ortho.gif */ template struct ortho_spheroid : public detail::ortho::base_ortho_spheroid { inline ortho_spheroid(const Parameters& par) : detail::ortho::base_ortho_spheroid(par) { detail::ortho::setup_ortho(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class ortho_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void ortho_init(detail::base_factory& factory) { factory.add_to_factory("ortho", new ortho_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ORTHO_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/poly.hpp000066400000000000000000000265311177067165300303730ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_POLY_HPP #define GGL_PROJECTIONS_POLY_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace poly{ static const double TOL = 1e-10; static const double CONV = 1e-10; static const int N_ITER = 10; static const int I_ITER = 20; static const double ITOL = 1.e-12; struct par_poly { double ml0; double en[EN_SIZE]; }; // template class, using CRTP to implement forward/inverse template struct base_poly_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_poly m_proj_parm; inline base_poly_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double ms, sp, cp; if (fabs(lp_lat) <= TOL) { xy_x = lp_lon; xy_y = -this->m_proj_parm.ml0; } else { sp = sin(lp_lat); ms = fabs(cp = cos(lp_lat)) > TOL ? pj_msfn(sp, cp, this->m_par.es) / sp : 0.; xy_x = ms * sin(lp_lon *= sp); xy_y = (pj_mlfn(lp_lat, sp, cp, this->m_proj_parm.en) - this->m_proj_parm.ml0) + ms * (1. - cos(lp_lon)); } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { xy_y += this->m_proj_parm.ml0; if (fabs(xy_y) <= TOL) { lp_lon = xy_x; lp_lat = 0.; } else { double r, c, sp, cp, s2ph, ml, mlb, mlp, dPhi; int i; r = xy_y * xy_y + xy_x * xy_x; for (lp_lat = xy_y, i = I_ITER; i ; --i) { sp = sin(lp_lat); s2ph = sp * ( cp = cos(lp_lat)); if (fabs(cp) < ITOL) throw proj_exception();; c = sp * (mlp = sqrt(1. - this->m_par.es * sp * sp)) / cp; ml = pj_mlfn(lp_lat, sp, cp, this->m_proj_parm.en); mlb = ml * ml + r; mlp = this->m_par.one_es / (mlp * mlp * mlp); lp_lat += ( dPhi = ( ml + ml + c * mlb - 2. * xy_y * (c * ml + 1.) ) / ( this->m_par.es * s2ph * (mlb - 2. * xy_y * ml) / c + 2.* (xy_y - ml) * (c * mlp - 1. / s2ph) - mlp - mlp )); if (fabs(dPhi) <= ITOL) break; } if (!i) throw proj_exception();; c = sin(lp_lat); lp_lon = asin(xy_x * tan(lp_lat) * sqrt(1. - this->m_par.es * c * c)) / sin(lp_lat); } } }; // template class, using CRTP to implement forward/inverse template struct base_poly_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_poly m_proj_parm; inline base_poly_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double cot, E; if (fabs(lp_lat) <= TOL) { xy_x = lp_lon; xy_y = this->m_proj_parm.ml0; } else { cot = 1. / tan(lp_lat); xy_x = sin(E = lp_lon * sin(lp_lat)) * cot; xy_y = lp_lat - this->m_par.phi0 + cot * (1. - cos(E)); } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double B, dphi, tp; int i; if (fabs(xy_y = this->m_par.phi0 + xy_y) <= TOL) { lp_lon = xy_x; lp_lat = 0.; } else { lp_lat = xy_y; B = xy_x * xy_x + xy_y * xy_y; i = N_ITER; do { tp = tan(lp_lat); lp_lat -= (dphi = (xy_y * (lp_lat * tp + 1.) - lp_lat - .5 * ( lp_lat * lp_lat + B) * tp) / ((lp_lat - xy_y) / tp - 1.)); } while (fabs(dphi) > CONV && --i); if (! i) throw proj_exception();; lp_lon = asin(xy_x * tan(lp_lat)) / sin(lp_lat); } } }; // Polyconic (American) template void setup_poly(Parameters& par, par_poly& proj_parm) { if (par.es) { pj_enfn(par.es, proj_parm.en); proj_parm.ml0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en); // par.inv = e_inverse; // par.fwd = e_forward; } else { proj_parm.ml0 = -par.phi0; // par.inv = s_inverse; // par.fwd = s_forward; } } }} // namespace detail::poly #endif // doxygen /*! \brief Polyconic (American) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid \par Example \image html ex_poly.gif */ template struct poly_ellipsoid : public detail::poly::base_poly_ellipsoid { inline poly_ellipsoid(const Parameters& par) : detail::poly::base_poly_ellipsoid(par) { detail::poly::setup_poly(this->m_par, this->m_proj_parm); } }; /*! \brief Polyconic (American) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - Ellipsoid \par Example \image html ex_poly.gif */ template struct poly_spheroid : public detail::poly::base_poly_spheroid { inline poly_spheroid(const Parameters& par) : detail::poly::base_poly_spheroid(par) { detail::poly::setup_poly(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class poly_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void poly_init(detail::base_factory& factory) { factory.add_to_factory("poly", new poly_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_POLY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/putp2.hpp000066400000000000000000000150541177067165300304600ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_PUTP2_HPP #define GGL_PROJECTIONS_PUTP2_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace putp2{ static const double C_x = 1.89490; static const double C_y = 1.71848; static const double C_p = 0.6141848493043784; static const double EPS = 1e-10; static const int NITER = 10; static const double PI_DIV_3 = 1.0471975511965977; // template class, using CRTP to implement forward/inverse template struct base_putp2_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_putp2_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double p, c, s, V; int i; p = C_p * sin(lp_lat); s = lp_lat * lp_lat; lp_lat *= 0.615709 + s * ( 0.00909953 + s * 0.0046292 ); for (i = NITER; i ; --i) { c = cos(lp_lat); s = sin(lp_lat); lp_lat -= V = (lp_lat + s * (c - 1.) - p) / (1. + c * (c - 1.) - s * s); if (fabs(V) < EPS) break; } if (!i) lp_lat = lp_lat < 0 ? - PI_DIV_3 : PI_DIV_3; xy_x = C_x * lp_lon * (cos(lp_lat) - 0.5); xy_y = C_y * sin(lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double c; lp_lat = aasin(xy_y / C_y); lp_lon = xy_x / (C_x * ((c = cos(lp_lat)) - 0.5)); lp_lat = aasin((lp_lat + sin(lp_lat) * (c - 1.)) / C_p); } }; // Putnins P2 template void setup_putp2(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::putp2 #endif // doxygen /*! \brief Putnins P2 projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp2.gif */ template struct putp2_spheroid : public detail::putp2::base_putp2_spheroid { inline putp2_spheroid(const Parameters& par) : detail::putp2::base_putp2_spheroid(par) { detail::putp2::setup_putp2(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class putp2_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void putp2_init(detail::base_factory& factory) { factory.add_to_factory("putp2", new putp2_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_PUTP2_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/putp3.hpp000066400000000000000000000173251177067165300304640ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_PUTP3_HPP #define GGL_PROJECTIONS_PUTP3_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace putp3{ static const double C = 0.79788456; static const double RPISQ = 0.1013211836; struct par_putp3 { double A; }; // template class, using CRTP to implement forward/inverse template struct base_putp3_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_putp3 m_proj_parm; inline base_putp3_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = C * lp_lon * (1. - this->m_proj_parm.A * lp_lat * lp_lat); xy_y = C * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / C; lp_lon = xy_x / (C * (1. - this->m_proj_parm.A * lp_lat * lp_lat)); } }; template void setup(Parameters& par, par_putp3& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } // Putnins P3 template void setup_putp3(Parameters& par, par_putp3& proj_parm) { proj_parm.A = 4. * RPISQ; setup(par, proj_parm); } // Putnins P3' template void setup_putp3p(Parameters& par, par_putp3& proj_parm) { proj_parm.A = 2. * RPISQ; setup(par, proj_parm); } }} // namespace detail::putp3 #endif // doxygen /*! \brief Putnins P3 projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp3.gif */ template struct putp3_spheroid : public detail::putp3::base_putp3_spheroid { inline putp3_spheroid(const Parameters& par) : detail::putp3::base_putp3_spheroid(par) { detail::putp3::setup_putp3(this->m_par, this->m_proj_parm); } }; /*! \brief Putnins P3' projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - no inverse - Spheroid \par Example \image html ex_putp3p.gif */ template struct putp3p_spheroid : public detail::putp3::base_putp3_spheroid { inline putp3p_spheroid(const Parameters& par) : detail::putp3::base_putp3_spheroid(par) { detail::putp3::setup_putp3p(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class putp3_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class putp3p_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void putp3_init(detail::base_factory& factory) { factory.add_to_factory("putp3", new putp3_entry); factory.add_to_factory("putp3p", new putp3p_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_PUTP3_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/putp4p.hpp000066400000000000000000000177661177067165300306560ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_PUTP4P_HPP #define GGL_PROJECTIONS_PUTP4P_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace putp4p{ struct par_putp4p { double C_x, C_y; }; // template class, using CRTP to implement forward/inverse template struct base_putp4p_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_putp4p m_proj_parm; inline base_putp4p_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { lp_lat = aasin(0.883883476 * sin(lp_lat)); xy_x = this->m_proj_parm.C_x * lp_lon * cos(lp_lat); xy_x /= cos(lp_lat *= 0.333333333333333); xy_y = this->m_proj_parm.C_y * sin(lp_lat); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = aasin(xy_y / this->m_proj_parm.C_y); lp_lon = xy_x * cos(lp_lat) / this->m_proj_parm.C_x; lp_lat *= 3.; lp_lon /= cos(lp_lat); lp_lat = aasin(1.13137085 * sin(lp_lat)); } }; template void setup(Parameters& par, par_putp4p& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } // Putnins P4' template void setup_putp4p(Parameters& par, par_putp4p& proj_parm) { proj_parm.C_x = 0.874038744; proj_parm.C_y = 3.883251825; setup(par, proj_parm); } // Werenskiold I template void setup_weren(Parameters& par, par_putp4p& proj_parm) { proj_parm.C_x = 1.; proj_parm.C_y = 4.442882938; setup(par, proj_parm); } }} // namespace detail::putp4p #endif // doxygen /*! \brief Putnins P4' projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp4p.gif */ template struct putp4p_spheroid : public detail::putp4p::base_putp4p_spheroid { inline putp4p_spheroid(const Parameters& par) : detail::putp4p::base_putp4p_spheroid(par) { detail::putp4p::setup_putp4p(this->m_par, this->m_proj_parm); } }; /*! \brief Werenskiold I projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_weren.gif */ template struct weren_spheroid : public detail::putp4p::base_putp4p_spheroid { inline weren_spheroid(const Parameters& par) : detail::putp4p::base_putp4p_spheroid(par) { detail::putp4p::setup_weren(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class putp4p_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class weren_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void putp4p_init(detail::base_factory& factory) { factory.add_to_factory("putp4p", new putp4p_entry); factory.add_to_factory("weren", new weren_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_PUTP4P_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/putp5.hpp000066400000000000000000000174561177067165300304730ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_PUTP5_HPP #define GGL_PROJECTIONS_PUTP5_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace putp5{ static const double C = 1.01346; static const double D = 1.2158542; struct par_putp5 { double A, B; }; // template class, using CRTP to implement forward/inverse template struct base_putp5_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_putp5 m_proj_parm; inline base_putp5_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = C * lp_lon * (this->m_proj_parm.A - this->m_proj_parm.B * sqrt(1. + D * lp_lat * lp_lat)); xy_y = C * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / C; lp_lon = xy_x / (C * (this->m_proj_parm.A - this->m_proj_parm.B * sqrt(1. + D * lp_lat * lp_lat))); } }; template void setup(Parameters& par, par_putp5& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } // Putnins P5 template void setup_putp5(Parameters& par, par_putp5& proj_parm) { proj_parm.A = 2.; proj_parm.B = 1.; setup(par, proj_parm); } // Putnins P5' template void setup_putp5p(Parameters& par, par_putp5& proj_parm) { proj_parm.A = 1.5; proj_parm.B = 0.5; setup(par, proj_parm); } }} // namespace detail::putp5 #endif // doxygen /*! \brief Putnins P5 projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp5.gif */ template struct putp5_spheroid : public detail::putp5::base_putp5_spheroid { inline putp5_spheroid(const Parameters& par) : detail::putp5::base_putp5_spheroid(par) { detail::putp5::setup_putp5(this->m_par, this->m_proj_parm); } }; /*! \brief Putnins P5' projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp5p.gif */ template struct putp5p_spheroid : public detail::putp5::base_putp5_spheroid { inline putp5p_spheroid(const Parameters& par) : detail::putp5::base_putp5_spheroid(par) { detail::putp5::setup_putp5p(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class putp5_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class putp5p_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void putp5_init(detail::base_factory& factory) { factory.add_to_factory("putp5", new putp5_entry); factory.add_to_factory("putp5p", new putp5p_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_PUTP5_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/putp6.hpp000066400000000000000000000217231177067165300304640ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_PUTP6_HPP #define GGL_PROJECTIONS_PUTP6_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace putp6{ static const double EPS = 1e-10; static const int NITER = 10; static const double CON_POLE = 1.732050807568877; struct par_putp6 { double C_x, C_y, A, B, D; }; // template class, using CRTP to implement forward/inverse template struct base_putp6_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_putp6 m_proj_parm; inline base_putp6_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double p, r, V; int i; p = this->m_proj_parm.B * sin(lp_lat); lp_lat *= 1.10265779; for (i = NITER; i ; --i) { r = sqrt(1. + lp_lat * lp_lat); lp_lat -= V = ( (this->m_proj_parm.A - r) * lp_lat - log(lp_lat + r) - p ) / (this->m_proj_parm.A - 2. * r); if (fabs(V) < EPS) break; } if (!i) lp_lat = p < 0. ? -CON_POLE : CON_POLE; xy_x = this->m_proj_parm.C_x * lp_lon * (this->m_proj_parm.D - sqrt(1. + lp_lat * lp_lat)); xy_y = this->m_proj_parm.C_y * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double r; lp_lat = xy_y / this->m_proj_parm.C_y; r = sqrt(1. + lp_lat * lp_lat); lp_lon = xy_x / (this->m_proj_parm.C_x * (this->m_proj_parm.D - r)); lp_lat = aasin( ( (this->m_proj_parm.A - r) * lp_lat - log(lp_lat + r) ) / this->m_proj_parm.B); } }; template void setup(Parameters& par, par_putp6& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } // Putnins P6 template void setup_putp6(Parameters& par, par_putp6& proj_parm) { proj_parm.C_x = 1.01346; proj_parm.C_y = 0.91910; proj_parm.A = 4.; proj_parm.B = 2.1471437182129378784; proj_parm.D = 2.; setup(par, proj_parm); } // Putnins P6' template void setup_putp6p(Parameters& par, par_putp6& proj_parm) { proj_parm.C_x = 0.44329; proj_parm.C_y = 0.80404; proj_parm.A = 6.; proj_parm.B = 5.61125; proj_parm.D = 3.; setup(par, proj_parm); } }} // namespace detail::putp6 #endif // doxygen /*! \brief Putnins P6 projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp6.gif */ template struct putp6_spheroid : public detail::putp6::base_putp6_spheroid { inline putp6_spheroid(const Parameters& par) : detail::putp6::base_putp6_spheroid(par) { detail::putp6::setup_putp6(this->m_par, this->m_proj_parm); } }; /*! \brief Putnins P6' projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_putp6p.gif */ template struct putp6p_spheroid : public detail::putp6::base_putp6_spheroid { inline putp6p_spheroid(const Parameters& par) : detail::putp6::base_putp6_spheroid(par) { detail::putp6::setup_putp6p(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class putp6_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class putp6p_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void putp6_init(detail::base_factory& factory) { factory.add_to_factory("putp6", new putp6_entry); factory.add_to_factory("putp6p", new putp6p_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_PUTP6_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/robin.hpp000066400000000000000000000247761177067165300305320ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ROBIN_HPP #define GGL_PROJECTIONS_ROBIN_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace robin{ static const double FXC = 0.8487; static const double FYC = 1.3523; static const double C1 = 11.45915590261646417544; static const double RC1 = 0.08726646259971647884; static const int NODES = 18; static const double ONEEPS = 1.000001; static const double EPS = 1e-8; /* note: following terms based upon 5 deg. intervals in degrees. */ static struct COEFS { double c0, c1, c2, c3; } X[] = { {1, -5.67239e-12, -7.15511e-05, 3.11028e-06}, {0.9986, -0.000482241, -2.4897e-05, -1.33094e-06}, {0.9954, -0.000831031, -4.4861e-05, -9.86588e-07}, {0.99, -0.00135363, -5.96598e-05, 3.67749e-06}, {0.9822, -0.00167442, -4.4975e-06, -5.72394e-06}, {0.973, -0.00214869, -9.03565e-05, 1.88767e-08}, {0.96, -0.00305084, -9.00732e-05, 1.64869e-06}, {0.9427, -0.00382792, -6.53428e-05, -2.61493e-06}, {0.9216, -0.00467747, -0.000104566, 4.8122e-06}, {0.8962, -0.00536222, -3.23834e-05, -5.43445e-06}, {0.8679, -0.00609364, -0.0001139, 3.32521e-06}, {0.835, -0.00698325, -6.40219e-05, 9.34582e-07}, {0.7986, -0.00755337, -5.00038e-05, 9.35532e-07}, {0.7597, -0.00798325, -3.59716e-05, -2.27604e-06}, {0.7186, -0.00851366, -7.0112e-05, -8.63072e-06}, {0.6732, -0.00986209, -0.000199572, 1.91978e-05}, {0.6213, -0.010418, 8.83948e-05, 6.24031e-06}, {0.5722, -0.00906601, 0.000181999, 6.24033e-06}, {0.5322, 0.,0.,0. }}, Y[] = { {0, 0.0124, 3.72529e-10, 1.15484e-09}, {0.062, 0.0124001, 1.76951e-08, -5.92321e-09}, {0.124, 0.0123998, -7.09668e-08, 2.25753e-08}, {0.186, 0.0124008, 2.66917e-07, -8.44523e-08}, {0.248, 0.0123971, -9.99682e-07, 3.15569e-07}, {0.31, 0.0124108, 3.73349e-06, -1.1779e-06}, {0.372, 0.0123598, -1.3935e-05, 4.39588e-06}, {0.434, 0.0125501, 5.20034e-05, -1.00051e-05}, {0.4968, 0.0123198, -9.80735e-05, 9.22397e-06}, {0.5571, 0.0120308, 4.02857e-05, -5.2901e-06}, {0.6176, 0.0120369, -3.90662e-05, 7.36117e-07}, {0.6769, 0.0117015, -2.80246e-05, -8.54283e-07}, {0.7346, 0.0113572, -4.08389e-05, -5.18524e-07}, {0.7903, 0.0109099, -4.86169e-05, -1.0718e-06}, {0.8435, 0.0103433, -6.46934e-05, 5.36384e-09}, {0.8936, 0.00969679, -6.46129e-05, -8.54894e-06}, {0.9394, 0.00840949, -0.000192847, -4.21023e-06}, {0.9761, 0.00616525, -0.000256001, -4.21021e-06}, {1., 0.,0.,0 }}; // template class, using CRTP to implement forward/inverse template struct base_robin_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_robin_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline double V(COEFS const& C, double z) const { return (C.c0 + z * (C.c1 + z * (C.c2 + z * C.c3))); } inline double DV(COEFS const& C, double z) const { return (C.c1 + z * (C.c2 + C.c2 + z * 3. * C.c3)); } inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { int i; double dphi; i = int_floor((dphi = fabs(lp_lat)) * C1); if (i >= NODES) i = NODES - 1; dphi = RAD_TO_DEG * (dphi - RC1 * i); xy_x = V(X[i], dphi) * FXC * lp_lon; xy_y = V(Y[i], dphi) * FYC; if (lp_lat < 0.) xy_y = -xy_y; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { int i; double t, t1; struct COEFS T; lp_lon = xy_x / FXC; lp_lat = fabs(xy_y / FYC); if (lp_lat >= 1.) { /* simple pathologic cases */ if (lp_lat > ONEEPS) throw proj_exception(); else { lp_lat = xy_y < 0. ? -HALFPI : HALFPI; lp_lon /= X[NODES].c0; } } else { /* general problem */ /* in Y space, reduce to table interval */ for (i = int_floor(lp_lat * NODES);;) { if (Y[i].c0 > lp_lat) --i; else if (Y[i+1].c0 <= lp_lat) ++i; else break; } T = Y[i]; /* first guess, linear interp */ t = 5. * (lp_lat - T.c0)/(Y[i+1].c0 - T.c0); /* make into root */ T.c0 -= lp_lat; for (;;) { /* Newton-Raphson reduction */ t -= t1 = V(T,t) / DV(T,t); if (fabs(t1) < EPS) break; } lp_lat = (5 * i + t) * DEG_TO_RAD; if (xy_y < 0.) lp_lat = -lp_lat; lp_lon /= V(X[i], t); } } }; // Robinson template void setup_robin(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::robin #endif // doxygen /*! \brief Robinson projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_robin.gif */ template struct robin_spheroid : public detail::robin::base_robin_spheroid { inline robin_spheroid(const Parameters& par) : detail::robin::base_robin_spheroid(par) { detail::robin::setup_robin(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class robin_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void robin_init(detail::base_factory& factory) { factory.add_to_factory("robin", new robin_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ROBIN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/rouss.hpp000066400000000000000000000240641177067165300305620ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_ROUSS_HPP #define GGL_PROJECTIONS_ROUSS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace rouss{ struct par_rouss { double s0; double A1, A2, A3, A4, A5, A6; double B1, B2, B3, B4, B5, B6, B7, B8; double C1, C2, C3, C4, C5, C6, C7, C8; double D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11; MDIST en; }; // template class, using CRTP to implement forward/inverse template struct base_rouss_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_rouss m_proj_parm; inline base_rouss_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double s, al, cp, sp, al2, s2; cp = cos(lp_lat); sp = sin(lp_lat); s = proj_mdist(lp_lat, sp, cp, this->m_proj_parm.en) - this->m_proj_parm.s0; s2 = s * s; al = lp_lon * cp / sqrt(1. - this->m_par.es * sp * sp); al2 = al * al; xy_x = this->m_par.k0 * al*(1.+s2*(this->m_proj_parm.A1+s2*this->m_proj_parm.A4)-al2*(this->m_proj_parm.A2+s*this->m_proj_parm.A3+s2*this->m_proj_parm.A5 +al2*this->m_proj_parm.A6)); xy_y = this->m_par.k0 * (al2*(this->m_proj_parm.B1+al2*this->m_proj_parm.B4)+ s*(1.+al2*(this->m_proj_parm.B3-al2*this->m_proj_parm.B6)+s2*(this->m_proj_parm.B2+s2*this->m_proj_parm.B8)+ s*al2*(this->m_proj_parm.B5+s*this->m_proj_parm.B7))); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double s, al, x = xy_x / this->m_par.k0, y = xy_y / this->m_par.k0, x2, y2;; x2 = x * x; y2 = y * y; al = x*(1.-this->m_proj_parm.C1*y2+x2*(this->m_proj_parm.C2+this->m_proj_parm.C3*y-this->m_proj_parm.C4*x2+this->m_proj_parm.C5*y2-this->m_proj_parm.C7*x2*y) +y2*(this->m_proj_parm.C6*y2-this->m_proj_parm.C8*x2*y)); s = this->m_proj_parm.s0 + y*(1.+y2*(-this->m_proj_parm.D2+this->m_proj_parm.D8*y2))+ x2*(-this->m_proj_parm.D1+y*(-this->m_proj_parm.D3+y*(-this->m_proj_parm.D5+y*(-this->m_proj_parm.D7+y*this->m_proj_parm.D11)))+ x2*(this->m_proj_parm.D4+y*(this->m_proj_parm.D6+y*this->m_proj_parm.D10)-x2*this->m_proj_parm.D9)); lp_lat=proj_inv_mdist(s, this->m_proj_parm.en); s = sin(lp_lat); lp_lon=al * sqrt(1. - this->m_par.es * s * s)/cos(lp_lat); } }; // Roussilhe Stereographic template void setup_rouss(Parameters& par, par_rouss& proj_parm) { double N0, es2, t, t2, R_R0_2, R_R0_4; proj_mdist_ini(par.es, proj_parm.en); es2 = sin(par.phi0); proj_parm.s0 = proj_mdist(par.phi0, es2, cos(par.phi0), proj_parm.en); t = 1. - (es2 = par.es * es2 * es2); N0 = 1./sqrt(t); R_R0_2 = t * t / par.one_es; R_R0_4 = R_R0_2 * R_R0_2; t = tan(par.phi0); t2 = t * t; proj_parm.C1 = proj_parm.A1 = R_R0_2 / 4.; proj_parm.C2 = proj_parm.A2 = R_R0_2 * (2 * t2 - 1. - 2. * es2) / 12.; proj_parm.A3 = R_R0_2 * t * (1. + 4. * t2)/ ( 12. * N0); proj_parm.A4 = R_R0_4 / 24.; proj_parm.A5 = R_R0_4 * ( -1. + t2 * (11. + 12. * t2))/24.; proj_parm.A6 = R_R0_4 * ( -2. + t2 * (11. - 2. * t2))/240.; proj_parm.B1 = t / (2. * N0); proj_parm.B2 = R_R0_2 / 12.; proj_parm.B3 = R_R0_2 * (1. + 2. * t2 - 2. * es2)/4.; proj_parm.B4 = R_R0_2 * t * (2. - t2)/(24. * N0); proj_parm.B5 = R_R0_2 * t * (5. + 4.* t2)/(8. * N0); proj_parm.B6 = R_R0_4 * (-2. + t2 * (-5. + 6. * t2))/48.; proj_parm.B7 = R_R0_4 * (5. + t2 * (19. + 12. * t2))/24.; proj_parm.B8 = R_R0_4 / 120.; proj_parm.C3 = R_R0_2 * t * (1. + t2)/(3. * N0); proj_parm.C4 = R_R0_4 * (-3. + t2 * (34. + 22. * t2))/240.; proj_parm.C5 = R_R0_4 * (4. + t2 * (13. + 12. * t2))/24.; proj_parm.C6 = R_R0_4 / 16.; proj_parm.C7 = R_R0_4 * t * (11. + t2 * (33. + t2 * 16.))/(48. * N0); proj_parm.C8 = R_R0_4 * t * (1. + t2 * 4.)/(36. * N0); proj_parm.D1 = t / (2. * N0); proj_parm.D2 = R_R0_2 / 12.; proj_parm.D3 = R_R0_2 * (2 * t2 + 1. - 2. * es2) / 4.; proj_parm.D4 = R_R0_2 * t * (1. + t2)/(8. * N0); proj_parm.D5 = R_R0_2 * t * (1. + t2 * 2.)/(4. * N0); proj_parm.D6 = R_R0_4 * (1. + t2 * (6. + t2 * 6.))/16.; proj_parm.D7 = R_R0_4 * t2 * (3. + t2 * 4.)/8.; proj_parm.D8 = R_R0_4 / 80.; proj_parm.D9 = R_R0_4 * t * (-21. + t2 * (178. - t2 * 26.))/720.; proj_parm.D10 = R_R0_4 * t * (29. + t2 * (86. + t2 * 48.))/(96. * N0); proj_parm.D11 = R_R0_4 * t * (37. + t2 * 44.)/(96. * N0); // par.fwd = e_forward; // par.inv = e_inverse; } }} // namespace detail::rouss #endif // doxygen /*! \brief Roussilhe Stereographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Ellps \par Example \image html ex_rouss.gif */ template struct rouss_ellipsoid : public detail::rouss::base_rouss_ellipsoid { inline rouss_ellipsoid(const Parameters& par) : detail::rouss::base_rouss_ellipsoid(par) { detail::rouss::setup_rouss(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class rouss_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void rouss_init(detail::base_factory& factory) { factory.add_to_factory("rouss", new rouss_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_ROUSS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/rpoly.hpp000066400000000000000000000143731177067165300305560ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_RPOLY_HPP #define GGL_PROJECTIONS_RPOLY_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace rpoly{ static const double EPS = 1e-9; struct par_rpoly { double phi1; double fxa; double fxb; int mode; }; // template class, using CRTP to implement forward/inverse template struct base_rpoly_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_rpoly m_proj_parm; inline base_rpoly_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double fa; if (this->m_proj_parm.mode) fa = tan(lp_lon * this->m_proj_parm.fxb) * this->m_proj_parm.fxa; else fa = 0.5 * lp_lon; if (fabs(lp_lat) < EPS) { xy_x = fa + fa; xy_y = - this->m_par.phi0; } else { xy_y = 1. / tan(lp_lat); xy_x = sin(fa = 2. * atan(fa * sin(lp_lat))) * xy_y; xy_y = lp_lat - this->m_par.phi0 + (1. - cos(fa)) * xy_y; } } }; // Rectangular Polyconic template void setup_rpoly(Parameters& par, par_rpoly& proj_parm) { if ((proj_parm.mode = (proj_parm.phi1 = fabs(pj_param(par.params, "rlat_ts").f)) > EPS)) { proj_parm.fxb = 0.5 * sin(proj_parm.phi1); proj_parm.fxa = 0.5 / proj_parm.fxb; } par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::rpoly #endif // doxygen /*! \brief Rectangular Polyconic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - no inverse - lat_ts= \par Example \image html ex_rpoly.gif */ template struct rpoly_spheroid : public detail::rpoly::base_rpoly_spheroid { inline rpoly_spheroid(const Parameters& par) : detail::rpoly::base_rpoly_spheroid(par) { detail::rpoly::setup_rpoly(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class rpoly_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void rpoly_init(detail::base_factory& factory) { factory.add_to_factory("rpoly", new rpoly_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_RPOLY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/sconics.hpp000066400000000000000000000512361177067165300310510ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_SCONICS_HPP #define GGL_PROJECTIONS_SCONICS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace sconics{ static const int EULER = 0; static const int MURD1 = 1; static const int MURD2 = 2; static const int MURD3 = 3; static const int PCONIC = 4; static const int TISSOT = 5; static const int VITK1 = 6; static const double EPS10 = 1.e-10; static const double EPS = 1e-10; struct par_sconics { double n; double rho_c; double rho_0; double sig; double c1, c2; int type; }; /* get common factors for simple conics */ template inline int phi12(Parameters& par, par_sconics& proj_parm, double *del) { double p1, p2; int err = 0; if (!pj_param(par.params, "tlat_1").i || !pj_param(par.params, "tlat_2").i) { err = -41; } else { p1 = pj_param(par.params, "rlat_1").f; p2 = pj_param(par.params, "rlat_2").f; *del = 0.5 * (p2 - p1); proj_parm.sig = 0.5 * (p2 + p1); err = (fabs(*del) < EPS || fabs(proj_parm.sig) < EPS) ? -42 : 0; *del = *del; } return err; } // template class, using CRTP to implement forward/inverse template struct base_sconics_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_sconics m_proj_parm; inline base_sconics_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double rho; switch (this->m_proj_parm.type) { case MURD2: rho = this->m_proj_parm.rho_c + tan(this->m_proj_parm.sig - lp_lat); break; case PCONIC: rho = this->m_proj_parm.c2 * (this->m_proj_parm.c1 - tan(lp_lat - this->m_proj_parm.sig)); break; default: rho = this->m_proj_parm.rho_c - lp_lat; break; } xy_x = rho * sin( lp_lon *= this->m_proj_parm.n ); xy_y = this->m_proj_parm.rho_0 - rho * cos(lp_lon); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rho; rho = boost::math::hypot(xy_x, xy_y = this->m_proj_parm.rho_0 - xy_y); if (this->m_proj_parm.n < 0.) { rho = - rho; xy_x = - xy_x; xy_y = - xy_y; } lp_lon = atan2(xy_x, xy_y) / this->m_proj_parm.n; switch (this->m_proj_parm.type) { case PCONIC: lp_lat = atan(this->m_proj_parm.c1 - rho / this->m_proj_parm.c2) + this->m_proj_parm.sig; break; case MURD2: lp_lat = this->m_proj_parm.sig - atan(rho - this->m_proj_parm.rho_c); break; default: lp_lat = this->m_proj_parm.rho_c - rho; } } }; template void setup(Parameters& par, par_sconics& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); double del, cs; int i; if( (i = phi12(par, proj_parm, &del)) ) throw proj_exception(i); switch (proj_parm.type) { case TISSOT: proj_parm.n = sin(proj_parm.sig); cs = cos(del); proj_parm.rho_c = proj_parm.n / cs + cs / proj_parm.n; proj_parm.rho_0 = sqrt((proj_parm.rho_c - 2 * sin(par.phi0))/proj_parm.n); break; case MURD1: proj_parm.rho_c = sin(del)/(del * tan(proj_parm.sig)) + proj_parm.sig; proj_parm.rho_0 = proj_parm.rho_c - par.phi0; proj_parm.n = sin(proj_parm.sig); break; case MURD2: proj_parm.rho_c = (cs = sqrt(cos(del))) / tan(proj_parm.sig); proj_parm.rho_0 = proj_parm.rho_c + tan(proj_parm.sig - par.phi0); proj_parm.n = sin(proj_parm.sig) * cs; break; case MURD3: proj_parm.rho_c = del / (tan(proj_parm.sig) * tan(del)) + proj_parm.sig; proj_parm.rho_0 = proj_parm.rho_c - par.phi0; proj_parm.n = sin(proj_parm.sig) * sin(del) * tan(del) / (del * del); break; case EULER: proj_parm.n = sin(proj_parm.sig) * sin(del) / del; del *= 0.5; proj_parm.rho_c = del / (tan(del) * tan(proj_parm.sig)) + proj_parm.sig; proj_parm.rho_0 = proj_parm.rho_c - par.phi0; break; case PCONIC: proj_parm.n = sin(proj_parm.sig); proj_parm.c2 = cos(del); proj_parm.c1 = 1./tan(proj_parm.sig); if (fabs(del = par.phi0 - proj_parm.sig) - EPS10 >= HALFPI) throw proj_exception(-43); proj_parm.rho_0 = proj_parm.c2 * (proj_parm.c1 - tan(del)); break; case VITK1: proj_parm.n = (cs = tan(del)) * sin(proj_parm.sig) / del; proj_parm.rho_c = del / (cs * tan(proj_parm.sig)) + proj_parm.sig; proj_parm.rho_0 = proj_parm.rho_c - par.phi0; break; } // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0; } // Tissot template void setup_tissot(Parameters& par, par_sconics& proj_parm) { proj_parm.type = TISSOT; setup(par, proj_parm); } // Murdoch I template void setup_murd1(Parameters& par, par_sconics& proj_parm) { proj_parm.type = MURD1; setup(par, proj_parm); } // Murdoch II template void setup_murd2(Parameters& par, par_sconics& proj_parm) { proj_parm.type = MURD2; setup(par, proj_parm); } // Murdoch III template void setup_murd3(Parameters& par, par_sconics& proj_parm) { proj_parm.type = MURD3; setup(par, proj_parm); } // Euler template void setup_euler(Parameters& par, par_sconics& proj_parm) { proj_parm.type = EULER; setup(par, proj_parm); } // Perspective Conic template void setup_pconic(Parameters& par, par_sconics& proj_parm) { proj_parm.type = PCONIC; setup(par, proj_parm); } // Vitkovsky I template void setup_vitk1(Parameters& par, par_sconics& proj_parm) { proj_parm.type = VITK1; setup(par, proj_parm); } }} // namespace detail::sconics #endif // doxygen /*! \brief Tissot projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_tissot.gif */ template struct tissot_spheroid : public detail::sconics::base_sconics_spheroid { inline tissot_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_tissot(this->m_par, this->m_proj_parm); } }; /*! \brief Murdoch I projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_murd1.gif */ template struct murd1_spheroid : public detail::sconics::base_sconics_spheroid { inline murd1_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_murd1(this->m_par, this->m_proj_parm); } }; /*! \brief Murdoch II projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_murd2.gif */ template struct murd2_spheroid : public detail::sconics::base_sconics_spheroid { inline murd2_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_murd2(this->m_par, this->m_proj_parm); } }; /*! \brief Murdoch III projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_murd3.gif */ template struct murd3_spheroid : public detail::sconics::base_sconics_spheroid { inline murd3_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_murd3(this->m_par, this->m_proj_parm); } }; /*! \brief Euler projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_euler.gif */ template struct euler_spheroid : public detail::sconics::base_sconics_spheroid { inline euler_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_euler(this->m_par, this->m_proj_parm); } }; /*! \brief Perspective Conic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_pconic.gif */ template struct pconic_spheroid : public detail::sconics::base_sconics_spheroid { inline pconic_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_pconic(this->m_par, this->m_proj_parm); } }; /*! \brief Vitkovsky I projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Conic - Spheroid - lat_1= and lat_2= \par Example \image html ex_vitk1.gif */ template struct vitk1_spheroid : public detail::sconics::base_sconics_spheroid { inline vitk1_spheroid(const Parameters& par) : detail::sconics::base_sconics_spheroid(par) { detail::sconics::setup_vitk1(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class tissot_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class murd1_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class murd2_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class murd3_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class euler_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class pconic_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class vitk1_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void sconics_init(detail::base_factory& factory) { factory.add_to_factory("tissot", new tissot_entry); factory.add_to_factory("murd1", new murd1_entry); factory.add_to_factory("murd2", new murd2_entry); factory.add_to_factory("murd3", new murd3_entry); factory.add_to_factory("euler", new euler_entry); factory.add_to_factory("pconic", new pconic_entry); factory.add_to_factory("vitk1", new vitk1_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_SCONICS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/somerc.hpp000066400000000000000000000202561177067165300306760ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_SOMERC_HPP #define GGL_PROJECTIONS_SOMERC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace somerc{ static const double EPS = 1.e-10; static const int NITER = 6; struct par_somerc { double K, c, hlf_e, kR, cosp0, sinp0; }; // template class, using CRTP to implement forward/inverse template struct base_somerc_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_somerc m_proj_parm; inline base_somerc_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double phip, lamp, phipp, lampp, sp, cp; sp = this->m_par.e * sin(lp_lat); phip = 2.* atan( exp( this->m_proj_parm.c * ( log(tan(FORTPI + 0.5 * lp_lat)) - this->m_proj_parm.hlf_e * log((1. + sp)/(1. - sp))) + this->m_proj_parm.K)) - HALFPI; lamp = this->m_proj_parm.c * lp_lon; cp = cos(phip); phipp = aasin(this->m_proj_parm.cosp0 * sin(phip) - this->m_proj_parm.sinp0 * cp * cos(lamp)); lampp = aasin(cp * sin(lamp) / cos(phipp)); xy_x = this->m_proj_parm.kR * lampp; xy_y = this->m_proj_parm.kR * log(tan(FORTPI + 0.5 * phipp)); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double phip, lamp, phipp, lampp, cp, esp, con, delp; int i; phipp = 2. * (atan(exp(xy_y / this->m_proj_parm.kR)) - FORTPI); lampp = xy_x / this->m_proj_parm.kR; cp = cos(phipp); phip = aasin(this->m_proj_parm.cosp0 * sin(phipp) + this->m_proj_parm.sinp0 * cp * cos(lampp)); lamp = aasin(cp * sin(lampp) / cos(phip)); con = (this->m_proj_parm.K - log(tan(FORTPI + 0.5 * phip)))/this->m_proj_parm.c; for (i = NITER; i ; --i) { esp = this->m_par.e * sin(phip); delp = (con + log(tan(FORTPI + 0.5 * phip)) - this->m_proj_parm.hlf_e * log((1. + esp)/(1. - esp)) ) * (1. - esp * esp) * cos(phip) * this->m_par.rone_es; phip -= delp; if (fabs(delp) < EPS) break; } if (i) { lp_lat = phip; lp_lon = lamp / this->m_proj_parm.c; } else throw proj_exception(); } }; // Swiss. Obl. Mercator template void setup_somerc(Parameters& par, par_somerc& proj_parm) { double cp, phip0, sp; proj_parm.hlf_e = 0.5 * par.e; cp = cos(par.phi0); cp *= cp; proj_parm.c = sqrt(1 + par.es * cp * cp * par.rone_es); sp = sin(par.phi0); proj_parm.cosp0 = cos( phip0 = aasin(proj_parm.sinp0 = sp / proj_parm.c) ); sp *= par.e; proj_parm.K = log(tan(FORTPI + 0.5 * phip0)) - proj_parm.c * ( log(tan(FORTPI + 0.5 * par.phi0)) - proj_parm.hlf_e * log((1. + sp) / (1. - sp))); proj_parm.kR = par.k0 * sqrt(par.one_es) / (1. - sp * sp); // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::somerc #endif // doxygen /*! \brief Swiss. Obl. Mercator projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Ellipsoid - For CH1903 \par Example \image html ex_somerc.gif */ template struct somerc_ellipsoid : public detail::somerc::base_somerc_ellipsoid { inline somerc_ellipsoid(const Parameters& par) : detail::somerc::base_somerc_ellipsoid(par) { detail::somerc::setup_somerc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class somerc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void somerc_init(detail::base_factory& factory) { factory.add_to_factory("somerc", new somerc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_SOMERC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/stere.hpp000066400000000000000000000466731177067165300305430ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_STERE_HPP #define GGL_PROJECTIONS_STERE_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace stere{ static const double EPS10 = 1.e-10; static const double TOL = 1.e-8; static const int NITER = 8; static const double CONV = 1.e-10; static const int S_POLE = 0; static const int N_POLE = 1; static const int OBLIQ = 2; static const int EQUIT = 3; struct par_stere { double phits; double sinX1; double cosX1; double akm1; int mode; }; inline double ssfn_(double phit, double sinphi, double eccen) { sinphi *= eccen; return (tan (.5 * (HALFPI + phit)) * pow((1. - sinphi) / (1. + sinphi), .5 * eccen)); } // template class, using CRTP to implement forward/inverse template struct base_stere_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_stere m_proj_parm; inline base_stere_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double coslam, sinlam, sinX=0.0, cosX=0.0, X, A, sinphi; coslam = cos(lp_lon); sinlam = sin(lp_lon); sinphi = sin(lp_lat); if (this->m_proj_parm.mode == OBLIQ || this->m_proj_parm.mode == EQUIT) { sinX = sin(X = 2. * atan(ssfn_(lp_lat, sinphi, this->m_par.e)) - HALFPI); cosX = cos(X); } switch (this->m_proj_parm.mode) { case OBLIQ: A = this->m_proj_parm.akm1 / (this->m_proj_parm.cosX1 * (1. + this->m_proj_parm.sinX1 * sinX + this->m_proj_parm.cosX1 * cosX * coslam)); xy_y = A * (this->m_proj_parm.cosX1 * sinX - this->m_proj_parm.sinX1 * cosX * coslam); goto xmul; case EQUIT: A = 2. * this->m_proj_parm.akm1 / (1. + cosX * coslam); xy_y = A * sinX; xmul: xy_x = A * cosX; break; case S_POLE: lp_lat = -lp_lat; coslam = - coslam; sinphi = -sinphi; case N_POLE: xy_x = this->m_proj_parm.akm1 * pj_tsfn(lp_lat, sinphi, this->m_par.e); xy_y = - xy_x * coslam; break; } xy_x = xy_x * sinlam; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double cosphi, sinphi, tp=0.0, phi_l=0.0, rho, halfe=0.0, halfpi=0.0; int i; rho = boost::math::hypot(xy_x, xy_y); switch (this->m_proj_parm.mode) { case OBLIQ: case EQUIT: cosphi = cos( tp = 2. * atan2(rho * this->m_proj_parm.cosX1 , this->m_proj_parm.akm1) ); sinphi = sin(tp); if( rho == 0.0 ) phi_l = asin(cosphi * this->m_proj_parm.sinX1); else phi_l = asin(cosphi * this->m_proj_parm.sinX1 + (xy_y * sinphi * this->m_proj_parm.cosX1 / rho)); tp = tan(.5 * (HALFPI + phi_l)); xy_x *= sinphi; xy_y = rho * this->m_proj_parm.cosX1 * cosphi - xy_y * this->m_proj_parm.sinX1* sinphi; halfpi = HALFPI; halfe = .5 * this->m_par.e; break; case N_POLE: xy_y = -xy_y; case S_POLE: phi_l = HALFPI - 2. * atan(tp = - rho / this->m_proj_parm.akm1); halfpi = -HALFPI; halfe = -.5 * this->m_par.e; break; } for (i = NITER; i--; phi_l = lp_lat) { sinphi = this->m_par.e * sin(phi_l); lp_lat = 2. * atan(tp * pow((1.+sinphi)/(1.-sinphi), halfe)) - halfpi; if (fabs(phi_l - lp_lat) < CONV) { if (this->m_proj_parm.mode == S_POLE) lp_lat = -lp_lat; lp_lon = (xy_x == 0. && xy_y == 0.) ? 0. : atan2(xy_x, xy_y); return; } } throw proj_exception();; } }; // template class, using CRTP to implement forward/inverse template struct base_stere_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_stere m_proj_parm; inline base_stere_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double sinphi, cosphi, coslam, sinlam; sinphi = sin(lp_lat); cosphi = cos(lp_lat); coslam = cos(lp_lon); sinlam = sin(lp_lon); switch (this->m_proj_parm.mode) { case EQUIT: xy_y = 1. + cosphi * coslam; goto oblcon; case OBLIQ: xy_y = 1. + this->m_proj_parm.sinX1 * sinphi + this->m_proj_parm.cosX1 * cosphi * coslam; oblcon: if (xy_y <= EPS10) throw proj_exception();; xy_x = (xy_y = this->m_proj_parm.akm1 / xy_y) * cosphi * sinlam; xy_y *= (this->m_proj_parm.mode == EQUIT) ? sinphi : this->m_proj_parm.cosX1 * sinphi - this->m_proj_parm.sinX1 * cosphi * coslam; break; case N_POLE: coslam = - coslam; lp_lat = - lp_lat; case S_POLE: if (fabs(lp_lat - HALFPI) < TOL) throw proj_exception();; xy_x = sinlam * ( xy_y = this->m_proj_parm.akm1 * tan(FORTPI + .5 * lp_lat) ); xy_y *= coslam; break; } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double c, rh, sinc, cosc; sinc = sin(c = 2. * atan((rh = boost::math::hypot(xy_x, xy_y)) / this->m_proj_parm.akm1)); cosc = cos(c); lp_lon = 0.; switch (this->m_proj_parm.mode) { case EQUIT: if (fabs(rh) <= EPS10) lp_lat = 0.; else lp_lat = asin(xy_y * sinc / rh); if (cosc != 0. || xy_x != 0.) lp_lon = atan2(xy_x * sinc, cosc * rh); break; case OBLIQ: if (fabs(rh) <= EPS10) lp_lat = this->m_par.phi0; else lp_lat = asin(cosc * this->m_proj_parm.sinX1 + xy_y * sinc * this->m_proj_parm.cosX1 / rh); if ((c = cosc - this->m_proj_parm.sinX1 * sin(lp_lat)) != 0. || xy_x != 0.) lp_lon = atan2(xy_x * sinc * this->m_proj_parm.cosX1, c * rh); break; case N_POLE: xy_y = -xy_y; case S_POLE: if (fabs(rh) <= EPS10) lp_lat = this->m_par.phi0; else lp_lat = asin(this->m_proj_parm.mode == S_POLE ? - cosc : cosc); lp_lon = (xy_x == 0. && xy_y == 0.) ? 0. : atan2(xy_x, xy_y); break; } } }; template void setup(Parameters& par, par_stere& proj_parm) /* general initialization */ { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); double t; if (fabs((t = fabs(par.phi0)) - HALFPI) < EPS10) proj_parm.mode = par.phi0 < 0. ? S_POLE : N_POLE; else proj_parm.mode = t > EPS10 ? OBLIQ : EQUIT; proj_parm.phits = fabs(proj_parm.phits); if (par.es) { double X; switch (proj_parm.mode) { case N_POLE: case S_POLE: if (fabs(proj_parm.phits - HALFPI) < EPS10) proj_parm.akm1 = 2. * par.k0 / sqrt(pow(1+par.e,1+par.e)*pow(1-par.e,1-par.e)); else { proj_parm.akm1 = cos(proj_parm.phits) / pj_tsfn(proj_parm.phits, t = sin(proj_parm.phits), par.e); t *= par.e; proj_parm.akm1 /= sqrt(1. - t * t); } break; case EQUIT: proj_parm.akm1 = 2. * par.k0; break; case OBLIQ: t = sin(par.phi0); X = 2. * atan(ssfn_(par.phi0, t, par.e)) - HALFPI; t *= par.e; proj_parm.akm1 = 2. * par.k0 * cos(par.phi0) / sqrt(1. - t * t); proj_parm.sinX1 = sin(X); proj_parm.cosX1 = cos(X); break; } // par.inv = e_inverse; // par.fwd = e_forward; } else { switch (proj_parm.mode) { case OBLIQ: proj_parm.sinX1 = sin(par.phi0); proj_parm.cosX1 = cos(par.phi0); case EQUIT: proj_parm.akm1 = 2. * par.k0; break; case S_POLE: case N_POLE: proj_parm.akm1 = fabs(proj_parm.phits - HALFPI) >= EPS10 ? cos(proj_parm.phits) / tan(FORTPI - .5 * proj_parm.phits) : 2. * par.k0 ; break; } // par.inv = s_inverse; // par.fwd = s_forward; } } // Stereographic template void setup_stere(Parameters& par, par_stere& proj_parm) { proj_parm.phits = pj_param(par.params, "tlat_ts").i ? proj_parm.phits = pj_param(par.params, "rlat_ts").f : HALFPI; setup(par, proj_parm); } // Universal Polar Stereographic template void setup_ups(Parameters& par, par_stere& proj_parm) { /* International Ellipsoid */ par.phi0 = pj_param(par.params, "bsouth").i ? - HALFPI: HALFPI; if (!par.es) throw proj_exception(-34); par.k0 = .994; par.x0 = 2000000.; par.y0 = 2000000.; proj_parm.phits = HALFPI; par.lam0 = 0.; setup(par, proj_parm); } }} // namespace detail::stere #endif // doxygen /*! \brief Stereographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - lat_ts= \par Example \image html ex_stere.gif */ template struct stere_ellipsoid : public detail::stere::base_stere_ellipsoid { inline stere_ellipsoid(const Parameters& par) : detail::stere::base_stere_ellipsoid(par) { detail::stere::setup_stere(this->m_par, this->m_proj_parm); } }; /*! \brief Universal Polar Stereographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - south \par Example \image html ex_ups.gif */ template struct ups_ellipsoid : public detail::stere::base_stere_ellipsoid { inline ups_ellipsoid(const Parameters& par) : detail::stere::base_stere_ellipsoid(par) { detail::stere::setup_ups(this->m_par, this->m_proj_parm); } }; /*! \brief Stereographic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid - lat_ts= \par Example \image html ex_stere.gif */ template struct stere_spheroid : public detail::stere::base_stere_spheroid { inline stere_spheroid(const Parameters& par) : detail::stere::base_stere_spheroid(par) { detail::stere::setup_stere(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class stere_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class ups_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void stere_init(detail::base_factory& factory) { factory.add_to_factory("stere", new stere_entry); factory.add_to_factory("ups", new ups_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_STERE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/sterea.hpp000066400000000000000000000366411177067165300306760ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_STEREA_HPP #define GGL_PROJECTIONS_STEREA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace sterea{ static const double DEL_TOL = 1.e-14; static const int MAX_ITER = 10; struct par_sterea { double phic0; double cosc0, sinc0; double R2; gauss::GAUSS en; }; // template class, using CRTP to implement forward/inverse template struct base_sterea_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_sterea m_proj_parm; inline base_sterea_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double cosc, sinc, cosl, k; detail::gauss::gauss(m_proj_parm.en, lp_lon, lp_lat); sinc = sin(lp_lat); cosc = cos(lp_lat); cosl = cos(lp_lon); k = this->m_par.k0 * this->m_proj_parm.R2 / (1. + this->m_proj_parm.sinc0 * sinc + this->m_proj_parm.cosc0 * cosc * cosl); xy_x = k * cosc * sin(lp_lon); xy_y = k * (this->m_proj_parm.cosc0 * sinc - this->m_proj_parm.sinc0 * cosc * cosl); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double rho, c, sinc, cosc; xy_x /= this->m_par.k0; xy_y /= this->m_par.k0; if((rho = boost::math::hypot(xy_x, xy_y))) { c = 2. * atan2(rho, this->m_proj_parm.R2); sinc = sin(c); cosc = cos(c); lp_lat = asin(cosc * this->m_proj_parm.sinc0 + xy_y * sinc * this->m_proj_parm.cosc0 / rho); lp_lon = atan2(xy_x * sinc, rho * this->m_proj_parm.cosc0 * cosc - xy_y * this->m_proj_parm.sinc0 * sinc); } else { lp_lat = this->m_proj_parm.phic0; lp_lon = 0.; } detail::gauss::inv_gauss(m_proj_parm.en, lp_lon, lp_lat); } }; // Oblique Stereographic Alternative template void setup_sterea(Parameters& par, par_sterea& proj_parm) { double R; proj_parm.en = detail::gauss::gauss_ini(par.e, par.phi0, proj_parm.phic0, R); proj_parm.sinc0 = sin(proj_parm.phic0); proj_parm.cosc0 = cos(proj_parm.phic0); proj_parm.R2 = 2. * R; // par.inv = e_inverse; // par.fwd = e_forward; } }} // namespace detail::sterea #endif // doxygen /*! \brief Oblique Stereographic Alternative projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Azimuthal - Spheroid - Ellipsoid \par Example \image html ex_sterea.gif */ template struct sterea_ellipsoid : public detail::sterea::base_sterea_ellipsoid { inline sterea_ellipsoid(const Parameters& par) : detail::sterea::base_sterea_ellipsoid(par) { detail::sterea::setup_sterea(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class sterea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void sterea_init(detail::base_factory& factory) { factory.add_to_factory("sterea", new sterea_entry); } } // namespace detail // Create EPSG specializations // (Proof of Concept, only for some) template struct epsg_traits<2036, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; template struct epsg_traits<2171, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; } }; template struct epsg_traits<2172, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; } }; template struct epsg_traits<2173, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; } }; template struct epsg_traits<2174, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; } }; template struct epsg_traits<2200, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"; } }; template struct epsg_traits<2290, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m"; } }; template struct epsg_traits<2291, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m"; } }; template struct epsg_traits<2292, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"; } }; template struct epsg_traits<2953, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<2954, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m"; } }; template struct epsg_traits<3120, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; } }; template struct epsg_traits<3328, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m"; } }; template struct epsg_traits<22780, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m"; } }; template struct epsg_traits<28991, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m"; } }; template struct epsg_traits<28992, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m"; } }; template struct epsg_traits<31600, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m"; } }; template struct epsg_traits<31700, LatLongRadian, Cartesian, Parameters> { typedef sterea_ellipsoid type; static inline std::string par() { return "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m"; } }; #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_STEREA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/sts.hpp000066400000000000000000000271011177067165300302130ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_STS_HPP #define GGL_PROJECTIONS_STS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace sts{ struct par_sts { double C_x, C_y, C_p; int tan_mode; }; // template class, using CRTP to implement forward/inverse template struct base_sts_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_sts m_proj_parm; inline base_sts_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double c; xy_x = this->m_proj_parm.C_x * lp_lon * cos(lp_lat); xy_y = this->m_proj_parm.C_y; lp_lat *= this->m_proj_parm.C_p; c = cos(lp_lat); if (this->m_proj_parm.tan_mode) { xy_x *= c * c; xy_y *= tan(lp_lat); } else { xy_x /= c; xy_y *= sin(lp_lat); } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double c; xy_y /= this->m_proj_parm.C_y; c = cos(lp_lat = this->m_proj_parm.tan_mode ? atan(xy_y) : aasin(xy_y)); lp_lat /= this->m_proj_parm.C_p; lp_lon = xy_x / (this->m_proj_parm.C_x * cos(lp_lat)); if (this->m_proj_parm.tan_mode) lp_lon /= c * c; else lp_lon *= c; } }; template void setup(Parameters& par, par_sts& proj_parm, double p, double q, int mode) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; proj_parm.C_x = q / p; proj_parm.C_y = p; proj_parm.C_p = 1/ q; proj_parm.tan_mode = mode; } // Kavraisky V template void setup_kav5(Parameters& par, par_sts& proj_parm) { setup(par, proj_parm, 1.50488, 1.35439, 0); } // Quartic Authalic template void setup_qua_aut(Parameters& par, par_sts& proj_parm) { setup(par, proj_parm, 2., 2., 0); } // McBryde-Thomas Flat-Polar Sine (No. 1) template void setup_mbt_s(Parameters& par, par_sts& proj_parm) { setup(par, proj_parm, 1.48875, 1.36509, 0); } // Foucaut template void setup_fouc(Parameters& par, par_sts& proj_parm) { setup(par, proj_parm, 2., 2., 1); } }} // namespace detail::sts #endif // doxygen /*! \brief Kavraisky V projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_kav5.gif */ template struct kav5_spheroid : public detail::sts::base_sts_spheroid { inline kav5_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid(par) { detail::sts::setup_kav5(this->m_par, this->m_proj_parm); } }; /*! \brief Quartic Authalic projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_qua_aut.gif */ template struct qua_aut_spheroid : public detail::sts::base_sts_spheroid { inline qua_aut_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid(par) { detail::sts::setup_qua_aut(this->m_par, this->m_proj_parm); } }; /*! \brief McBryde-Thomas Flat-Polar Sine (No. 1) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_mbt_s.gif */ template struct mbt_s_spheroid : public detail::sts::base_sts_spheroid { inline mbt_s_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid(par) { detail::sts::setup_mbt_s(this->m_par, this->m_proj_parm); } }; /*! \brief Foucaut projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_fouc.gif */ template struct fouc_spheroid : public detail::sts::base_sts_spheroid { inline fouc_spheroid(const Parameters& par) : detail::sts::base_sts_spheroid(par) { detail::sts::setup_fouc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class kav5_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class qua_aut_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class mbt_s_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class fouc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void sts_init(detail::base_factory& factory) { factory.add_to_factory("kav5", new kav5_entry); factory.add_to_factory("qua_aut", new qua_aut_entry); factory.add_to_factory("mbt_s", new mbt_s_entry); factory.add_to_factory("fouc", new fouc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_STS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/tcc.hpp000066400000000000000000000130031177067165300301470ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_TCC_HPP #define GGL_PROJECTIONS_TCC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace tcc{ static const double EPS10 = 1.e-10; struct par_tcc { double ap; }; // template class, using CRTP to implement forward/inverse template struct base_tcc_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_tcc m_proj_parm; inline base_tcc_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double b, bt; b = cos(lp_lat) * sin(lp_lon); if ((bt = 1. - b * b) < EPS10) throw proj_exception();; xy_x = b / sqrt(bt); xy_y = atan2(tan(lp_lat) , cos(lp_lon)); } }; // Transverse Central Cylindrical template void setup_tcc(Parameters& par, par_tcc& proj_parm) { par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::tcc #endif // doxygen /*! \brief Transverse Central Cylindrical projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - no inverse \par Example \image html ex_tcc.gif */ template struct tcc_spheroid : public detail::tcc::base_tcc_spheroid { inline tcc_spheroid(const Parameters& par) : detail::tcc::base_tcc_spheroid(par) { detail::tcc::setup_tcc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class tcc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void tcc_init(detail::base_factory& factory) { factory.add_to_factory("tcc", new tcc_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_TCC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/tcea.hpp000066400000000000000000000136711177067165300303250ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_TCEA_HPP #define GGL_PROJECTIONS_TCEA_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace tcea{ struct par_tcea { double rk0; }; // template class, using CRTP to implement forward/inverse template struct base_tcea_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_tcea m_proj_parm; inline base_tcea_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = this->m_proj_parm.rk0 * cos(lp_lat) * sin(lp_lon); xy_y = this->m_par.k0 * (atan2(tan(lp_lat), cos(lp_lon)) - this->m_par.phi0); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t; xy_y = xy_y * this->m_proj_parm.rk0 + this->m_par.phi0; xy_x *= this->m_par.k0; t = sqrt(1. - xy_x * xy_x); lp_lat = asin(t * sin(xy_y)); lp_lon = atan2(xy_x, t * cos(xy_y)); } }; // Transverse Cylindrical Equal Area template void setup_tcea(Parameters& par, par_tcea& proj_parm) { proj_parm.rk0 = 1 / par.k0; // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::tcea #endif // doxygen /*! \brief Transverse Cylindrical Equal Area projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid \par Example \image html ex_tcea.gif */ template struct tcea_spheroid : public detail::tcea::base_tcea_spheroid { inline tcea_spheroid(const Parameters& par) : detail::tcea::base_tcea_spheroid(par) { detail::tcea::setup_tcea(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class tcea_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void tcea_init(detail::base_factory& factory) { factory.add_to_factory("tcea", new tcea_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_TCEA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/tmerc.hpp000066400000000000000000000465651177067165300305330ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_TMERC_HPP #define GGL_PROJECTIONS_TMERC_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace tmerc{ static const double EPS10 = 1.e-10; static const double FC1 = 1.; static const double FC2 = .5; static const double FC3 = .16666666666666666666; static const double FC4 = .08333333333333333333; static const double FC5 = .05; static const double FC6 = .03333333333333333333; static const double FC7 = .02380952380952380952; static const double FC8 = .01785714285714285714; struct par_tmerc { double esp; double ml0; double en[EN_SIZE]; }; // template class, using CRTP to implement forward/inverse template struct base_tmerc_ellipsoid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_tmerc m_proj_parm; inline base_tmerc_ellipsoid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double al, als, n, cosphi, sinphi, t; /* * Fail if our longitude is more than 90 degrees from the * central meridian since the results are essentially garbage. * Is error -20 really an appropriate return value? * * http://trac.osgeo.org/proj/ticket/5 */ if( lp_lon < -HALFPI || lp_lon > HALFPI ) { xy_x = HUGE_VAL; xy_y = HUGE_VAL; throw proj_exception( -14); return; } sinphi = sin(lp_lat); cosphi = cos(lp_lat); t = fabs(cosphi) > 1e-10 ? sinphi/cosphi : 0.; t *= t; al = cosphi * lp_lon; als = al * al; al /= sqrt(1. - this->m_par.es * sinphi * sinphi); n = this->m_proj_parm.esp * cosphi * cosphi; xy_x = this->m_par.k0 * al * (FC1 + FC3 * als * (1. - t + n + FC5 * als * (5. + t * (t - 18.) + n * (14. - 58. * t) + FC7 * als * (61. + t * ( t * (179. - t) - 479. ) ) ))); xy_y = this->m_par.k0 * (pj_mlfn(lp_lat, sinphi, cosphi, this->m_proj_parm.en) - this->m_proj_parm.ml0 + sinphi * al * lp_lon * FC2 * ( 1. + FC4 * als * (5. - t + n * (9. + 4. * n) + FC6 * als * (61. + t * (t - 58.) + n * (270. - 330 * t) + FC8 * als * (1385. + t * ( t * (543. - t) - 3111.) ) )))); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double n, con, cosphi, d, ds, sinphi, t; lp_lat = pj_inv_mlfn(this->m_proj_parm.ml0 + xy_y / this->m_par.k0, this->m_par.es, this->m_proj_parm.en); if (fabs(lp_lat) >= HALFPI) { lp_lat = xy_y < 0. ? -HALFPI : HALFPI; lp_lon = 0.; } else { sinphi = sin(lp_lat); cosphi = cos(lp_lat); t = fabs(cosphi) > 1e-10 ? sinphi/cosphi : 0.; n = this->m_proj_parm.esp * cosphi * cosphi; d = xy_x * sqrt(con = 1. - this->m_par.es * sinphi * sinphi) / this->m_par.k0; con *= t; t *= t; ds = d * d; lp_lat -= (con * ds / (1.-this->m_par.es)) * FC2 * (1. - ds * FC4 * (5. + t * (3. - 9. * n) + n * (1. - 4 * n) - ds * FC6 * (61. + t * (90. - 252. * n + 45. * t) + 46. * n - ds * FC8 * (1385. + t * (3633. + t * (4095. + 1574. * t)) ) ))); lp_lon = d*(FC1 - ds*FC3*( 1. + 2.*t + n - ds*FC5*(5. + t*(28. + 24.*t + 8.*n) + 6.*n - ds * FC7 * (61. + t * (662. + t * (1320. + 720. * t)) ) ))) / cosphi; } } }; // template class, using CRTP to implement forward/inverse template struct base_tmerc_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_tmerc m_proj_parm; inline base_tmerc_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double b, cosphi; /* * Fail if our longitude is more than 90 degrees from the * central meridian since the results are essentially garbage. * Is error -20 really an appropriate return value? * * http://trac.osgeo.org/proj/ticket/5 */ if( lp_lon < -HALFPI || lp_lon > HALFPI ) { xy_x = HUGE_VAL; xy_y = HUGE_VAL; throw proj_exception( -14); return; } b = (cosphi = cos(lp_lat)) * sin(lp_lon); if (fabs(fabs(b) - 1.) <= EPS10) throw proj_exception();; xy_x = this->m_proj_parm.ml0 * log((1. + b) / (1. - b)); if ((b = fabs( xy_y = cosphi * cos(lp_lon) / sqrt(1. - b * b) )) >= 1.) { if ((b - 1.) > EPS10) throw proj_exception(); else xy_y = 0.; } else xy_y = acos(xy_y); if (lp_lat < 0.) xy_y = -xy_y; xy_y = this->m_proj_parm.esp * (xy_y - this->m_par.phi0); } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double h, g; h = exp(xy_x / this->m_proj_parm.esp); g = .5 * (h - 1. / h); h = cos(this->m_par.phi0 + xy_y / this->m_proj_parm.esp); lp_lat = asin(sqrt((1. - h * h) / (1. + g * g))); if (xy_y < 0.) lp_lat = -lp_lat; lp_lon = (g || h) ? atan2(g, h) : 0.; } }; template void setup(Parameters& par, par_tmerc& proj_parm) /* general initialization */ { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); if (par.es) { pj_enfn(par.es, proj_parm.en); proj_parm.ml0 = pj_mlfn(par.phi0, sin(par.phi0), cos(par.phi0), proj_parm.en); proj_parm.esp = par.es / (1. - par.es); // par.inv = e_inverse; // par.fwd = e_forward; } else { proj_parm.esp = par.k0; proj_parm.ml0 = .5 * proj_parm.esp; // par.inv = s_inverse; // par.fwd = s_forward; } } // Transverse Mercator template void setup_tmerc(Parameters& par, par_tmerc& proj_parm) { setup(par, proj_parm); } // Universal Transverse Mercator (UTM) template void setup_utm(Parameters& par, par_tmerc& proj_parm) { int zone; if (!par.es) throw proj_exception(-34); par.y0 = pj_param(par.params, "bsouth").i ? 10000000. : 0.; par.x0 = 500000.; if (pj_param(par.params, "tzone").i) /* zone input ? */ if ((zone = pj_param(par.params, "izone").i) > 0 && zone <= 60) --zone; else throw proj_exception(-35); else /* nearest central meridian input */ if ((zone = int_floor((adjlon(par.lam0) + PI) * 30. / PI)) < 0) zone = 0; else if (zone >= 60) zone = 59; par.lam0 = (zone + .5) * PI / 30. - PI; par.k0 = 0.9996; par.phi0 = 0.; setup(par, proj_parm); } }} // namespace detail::tmerc #endif // doxygen /*! \brief Transverse Mercator projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid \par Example \image html ex_tmerc.gif */ template struct tmerc_ellipsoid : public detail::tmerc::base_tmerc_ellipsoid { inline tmerc_ellipsoid(const Parameters& par) : detail::tmerc::base_tmerc_ellipsoid(par) { detail::tmerc::setup_tmerc(this->m_par, this->m_proj_parm); } }; /*! \brief Universal Transverse Mercator (UTM) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - zone= south \par Example \image html ex_utm.gif */ template struct utm_ellipsoid : public detail::tmerc::base_tmerc_ellipsoid { inline utm_ellipsoid(const Parameters& par) : detail::tmerc::base_tmerc_ellipsoid(par) { detail::tmerc::setup_utm(this->m_par, this->m_proj_parm); } }; /*! \brief Transverse Mercator projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Cylindrical - Spheroid - Ellipsoid \par Example \image html ex_tmerc.gif */ template struct tmerc_spheroid : public detail::tmerc::base_tmerc_spheroid { inline tmerc_spheroid(const Parameters& par) : detail::tmerc::base_tmerc_spheroid(par) { detail::tmerc::setup_tmerc(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class tmerc_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { if (par.es) return new base_v_fi, Geographic, Cartesian, Parameters>(par); else return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class utm_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void tmerc_init(detail::base_factory& factory) { factory.add_to_factory("tmerc", new tmerc_entry); factory.add_to_factory("utm", new utm_entry); } } // namespace detail // Create EPSG specializations // (Proof of Concept, only for some) template struct epsg_traits<2000, LatLongRadian, Cartesian, Parameters> { typedef tmerc_ellipsoid type; static inline std::string par() { return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"; } }; template struct epsg_traits<2001, LatLongRadian, Cartesian, Parameters> { typedef tmerc_ellipsoid type; static inline std::string par() { return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m"; } }; template struct epsg_traits<2002, LatLongRadian, Cartesian, Parameters> { typedef tmerc_ellipsoid type; static inline std::string par() { return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m"; } }; template struct epsg_traits<2003, LatLongRadian, Cartesian, Parameters> { typedef tmerc_ellipsoid type; static inline std::string par() { return "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m"; } }; template struct epsg_traits<2039, LatLongRadian, Cartesian, Parameters> { typedef tmerc_ellipsoid type; static inline std::string par() { return "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m"; } }; template struct epsg_traits<29118, LatLongRadian, Cartesian, Parameters> { typedef utm_ellipsoid type; static inline std::string par() { return "+proj=utm +zone=18 +ellps=GRS67 +units=m"; } }; template struct epsg_traits<29119, LatLongRadian, Cartesian, Parameters> { typedef utm_ellipsoid type; static inline std::string par() { return "+proj=utm +zone=19 +ellps=GRS67 +units=m"; } }; #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_TMERC_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/tpeqd.hpp000066400000000000000000000222751177067165300305260ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_TPEQD_HPP #define GGL_PROJECTIONS_TPEQD_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace tpeqd{ struct par_tpeqd { double cp1, sp1, cp2, sp2, ccs, cs, sc, r2z0, z02, dlam2; double hz0, thz0, rhshz0, ca, sa, lp, lamc; }; // template class, using CRTP to implement forward/inverse template struct base_tpeqd_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_tpeqd m_proj_parm; inline base_tpeqd_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double t, z1, z2, dl1, dl2, sp, cp; sp = sin(lp_lat); cp = cos(lp_lat); z1 = aacos(this->m_proj_parm.sp1 * sp + this->m_proj_parm.cp1 * cp * cos(dl1 = lp_lon + this->m_proj_parm.dlam2)); z2 = aacos(this->m_proj_parm.sp2 * sp + this->m_proj_parm.cp2 * cp * cos(dl2 = lp_lon - this->m_proj_parm.dlam2)); z1 *= z1; z2 *= z2; xy_x = this->m_proj_parm.r2z0 * (t = z1 - z2); t = this->m_proj_parm.z02 - t; xy_y = this->m_proj_parm.r2z0 * asqrt(4. * this->m_proj_parm.z02 * z2 - t * t); if ((this->m_proj_parm.ccs * sp - cp * (this->m_proj_parm.cs * sin(dl1) - this->m_proj_parm.sc * sin(dl2))) < 0.) xy_y = -xy_y; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double cz1, cz2, s, d, cp, sp; cz1 = cos(boost::math::hypot(xy_y, xy_x + this->m_proj_parm.hz0)); cz2 = cos(boost::math::hypot(xy_y, xy_x - this->m_proj_parm.hz0)); s = cz1 + cz2; d = cz1 - cz2; lp_lon = - atan2(d, (s * this->m_proj_parm.thz0)); lp_lat = aacos(boost::math::hypot(this->m_proj_parm.thz0 * s, d) * this->m_proj_parm.rhshz0); if ( xy_y < 0. ) lp_lat = - lp_lat; /* lam--phi now in system relative to P1--P2 base equator */ sp = sin(lp_lat); cp = cos(lp_lat); lp_lat = aasin(this->m_proj_parm.sa * sp + this->m_proj_parm.ca * cp * (s = cos(lp_lon -= this->m_proj_parm.lp))); lp_lon = atan2(cp * sin(lp_lon), this->m_proj_parm.sa * cp * s - this->m_proj_parm.ca * sp) + this->m_proj_parm.lamc; } }; // Two Point Equidistant template void setup_tpeqd(Parameters& par, par_tpeqd& proj_parm) { double lam_1, lam_2, phi_1, phi_2, A12, pp; /* get control point locations */ phi_1 = pj_param(par.params, "rlat_1").f; lam_1 = pj_param(par.params, "rlon_1").f; phi_2 = pj_param(par.params, "rlat_2").f; lam_2 = pj_param(par.params, "rlon_2").f; if (phi_1 == phi_2 && lam_1 == lam_2) throw proj_exception(-25); par.lam0 = adjlon(0.5 * (lam_1 + lam_2)); proj_parm.dlam2 = adjlon(lam_2 - lam_1); proj_parm.cp1 = cos(phi_1); proj_parm.cp2 = cos(phi_2); proj_parm.sp1 = sin(phi_1); proj_parm.sp2 = sin(phi_2); proj_parm.cs = proj_parm.cp1 * proj_parm.sp2; proj_parm.sc = proj_parm.sp1 * proj_parm.cp2; proj_parm.ccs = proj_parm.cp1 * proj_parm.cp2 * sin(proj_parm.dlam2); proj_parm.z02 = aacos(proj_parm.sp1 * proj_parm.sp2 + proj_parm.cp1 * proj_parm.cp2 * cos(proj_parm.dlam2)); proj_parm.hz0 = .5 * proj_parm.z02; A12 = atan2(proj_parm.cp2 * sin(proj_parm.dlam2), proj_parm.cp1 * proj_parm.sp2 - proj_parm.sp1 * proj_parm.cp2 * cos(proj_parm.dlam2)); proj_parm.ca = cos(pp = aasin(proj_parm.cp1 * sin(A12))); proj_parm.sa = sin(pp); proj_parm.lp = adjlon(atan2(proj_parm.cp1 * cos(A12), proj_parm.sp1) - proj_parm.hz0); proj_parm.dlam2 *= .5; proj_parm.lamc = HALFPI - atan2(sin(A12) * proj_parm.sp1, cos(A12)) - proj_parm.dlam2; proj_parm.thz0 = tan(proj_parm.hz0); proj_parm.rhshz0 = .5 / sin(proj_parm.hz0); proj_parm.r2z0 = 0.5 / proj_parm.z02; proj_parm.z02 *= proj_parm.z02; // par.inv = s_inverse; // par.fwd = s_forward; par.es = 0.; } }} // namespace detail::tpeqd #endif // doxygen /*! \brief Two Point Equidistant projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - lat_1= lon_1= lat_2= lon_2= \par Example \image html ex_tpeqd.gif */ template struct tpeqd_spheroid : public detail::tpeqd::base_tpeqd_spheroid { inline tpeqd_spheroid(const Parameters& par) : detail::tpeqd::base_tpeqd_spheroid(par) { detail::tpeqd::setup_tpeqd(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class tpeqd_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void tpeqd_init(detail::base_factory& factory) { factory.add_to_factory("tpeqd", new tpeqd_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_TPEQD_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/urm5.hpp000066400000000000000000000136351177067165300303010ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_URM5_HPP #define GGL_PROJECTIONS_URM5_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace urm5{ struct par_urm5 { double m, rmn, q3, n; }; // template class, using CRTP to implement forward/inverse template struct base_urm5_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_urm5 m_proj_parm; inline base_urm5_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double t; t = lp_lat = aasin(this->m_proj_parm.n * sin(lp_lat)); xy_x = this->m_proj_parm.m * lp_lon * cos(lp_lat); t *= t; xy_y = lp_lat * (1. + t * this->m_proj_parm.q3) * this->m_proj_parm.rmn; } }; // Urmaev V template void setup_urm5(Parameters& par, par_urm5& proj_parm) { double alpha, t; proj_parm.n = pj_param(par.params, "dn").f; proj_parm.q3 = pj_param(par.params, "dq").f / 3.; alpha = pj_param(par.params, "ralpha").f; t = proj_parm.n * sin(alpha); proj_parm.m = cos(alpha) / sqrt(1. - t * t); proj_parm.rmn = 1. / (proj_parm.m * proj_parm.n); par.es = 0.; // par.inv = 0; // par.fwd = s_forward; } }} // namespace detail::urm5 #endif // doxygen /*! \brief Urmaev V projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - n= q= alphi= \par Example \image html ex_urm5.gif */ template struct urm5_spheroid : public detail::urm5::base_urm5_spheroid { inline urm5_spheroid(const Parameters& par) : detail::urm5::base_urm5_spheroid(par) { detail::urm5::setup_urm5(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class urm5_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void urm5_init(detail::base_factory& factory) { factory.add_to_factory("urm5", new urm5_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_URM5_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/urmfps.hpp000066400000000000000000000203251177067165300307170ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_URMFPS_HPP #define GGL_PROJECTIONS_URMFPS_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace urmfps{ static const double C_x = 0.8773826753; static const double Cy = 1.139753528477; struct par_urmfps { double n, C_y; }; // template class, using CRTP to implement forward/inverse template struct base_urmfps_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_urmfps m_proj_parm; inline base_urmfps_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { lp_lat = aasin(this->m_proj_parm.n * sin(lp_lat)); xy_x = C_x * lp_lon * cos(lp_lat); xy_y = this->m_proj_parm.C_y * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { xy_y /= this->m_proj_parm.C_y; lp_lat = aasin(sin(xy_y) / this->m_proj_parm.n); lp_lon = xy_x / (C_x * cos(xy_y)); } }; template void setup(Parameters& par, par_urmfps& proj_parm) { boost::ignore_unused_variable_warning(par); boost::ignore_unused_variable_warning(proj_parm); proj_parm.C_y = Cy / proj_parm.n; par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } // Urmaev Flat-Polar Sinusoidal template void setup_urmfps(Parameters& par, par_urmfps& proj_parm) { if (pj_param(par.params, "tn").i) { proj_parm.n = pj_param(par.params, "dn").f; if (proj_parm.n <= 0. || proj_parm.n > 1.) throw proj_exception(-40); } else throw proj_exception(-40); setup(par, proj_parm); } // Wagner I (Kavraisky VI) template void setup_wag1(Parameters& par, par_urmfps& proj_parm) { proj_parm.n = 0.8660254037844386467637231707; setup(par, proj_parm); } }} // namespace detail::urmfps #endif // doxygen /*! \brief Urmaev Flat-Polar Sinusoidal projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - n= \par Example \image html ex_urmfps.gif */ template struct urmfps_spheroid : public detail::urmfps::base_urmfps_spheroid { inline urmfps_spheroid(const Parameters& par) : detail::urmfps::base_urmfps_spheroid(par) { detail::urmfps::setup_urmfps(this->m_par, this->m_proj_parm); } }; /*! \brief Wagner I (Kavraisky VI) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_wag1.gif */ template struct wag1_spheroid : public detail::urmfps::base_urmfps_spheroid { inline wag1_spheroid(const Parameters& par) : detail::urmfps::base_urmfps_spheroid(par) { detail::urmfps::setup_wag1(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class urmfps_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template class wag1_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void urmfps_init(detail::base_factory& factory) { factory.add_to_factory("urmfps", new urmfps_entry); factory.add_to_factory("wag1", new wag1_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_URMFPS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/vandg.hpp000066400000000000000000000212331177067165300305010ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_VANDG_HPP #define GGL_PROJECTIONS_VANDG_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace vandg{ static const double TOL = 1.e-10; static const double THIRD = .33333333333333333333; static const double TWO_THRD = .66666666666666666666; static const double C2_27 = .07407407407407407407; static const double PI4_3 = 4.18879020478639098458; static const double PISQ = 9.86960440108935861869; static const double TPISQ = 19.73920880217871723738; static const double HPISQ = 4.93480220054467930934; // template class, using CRTP to implement forward/inverse template struct base_vandg_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_vandg_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double al, al2, g, g2, p2; p2 = fabs(lp_lat / HALFPI); if ((p2 - TOL) > 1.) throw proj_exception();; if (p2 > 1.) p2 = 1.; if (fabs(lp_lat) <= TOL) { xy_x = lp_lon; xy_y = 0.; } else if (fabs(lp_lon) <= TOL || fabs(p2 - 1.) < TOL) { xy_x = 0.; xy_y = PI * tan(.5 * asin(p2)); if (lp_lat < 0.) xy_y = -xy_y; } else { al = .5 * fabs(PI / lp_lon - lp_lon / PI); al2 = al * al; g = sqrt(1. - p2 * p2); g = g / (p2 + g - 1.); g2 = g * g; p2 = g * (2. / p2 - 1.); p2 = p2 * p2; xy_x = g - p2; g = p2 + al2; xy_x = PI * (al * xy_x + sqrt(al2 * xy_x * xy_x - g * (g2 - p2))) / g; if (lp_lon < 0.) xy_x = -xy_x; xy_y = fabs(xy_x / PI); xy_y = 1. - xy_y * (xy_y + 2. * al); if (xy_y < -TOL) throw proj_exception();; if (xy_y < 0.) xy_y = 0.; else xy_y = sqrt(xy_y) * (lp_lat < 0. ? -PI : PI); } } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { double t, c0, c1, c2, c3, al, r2, r, m, d, ay, x2, y2; x2 = xy_x * xy_x; if ((ay = fabs(xy_y)) < TOL) { lp_lat = 0.; t = x2 * x2 + TPISQ * (x2 + HPISQ); lp_lon = fabs(xy_x) <= TOL ? 0. : .5 * (x2 - PISQ + sqrt(t)) / xy_x; return; } y2 = xy_y * xy_y; r = x2 + y2; r2 = r * r; c1 = - PI * ay * (r + PISQ); c3 = r2 + TWOPI * (ay * r + PI * (y2 + PI * (ay + HALFPI))); c2 = c1 + PISQ * (r - 3. * y2); c0 = PI * ay; c2 /= c3; al = c1 / c3 - THIRD * c2 * c2; m = 2. * sqrt(-THIRD * al); d = C2_27 * c2 * c2 * c2 + (c0 * c0 - THIRD * c2 * c1) / c3; if (((t = fabs(d = 3. * d / (al * m))) - TOL) <= 1.) { d = t > 1. ? (d > 0. ? 0. : PI) : acos(d); lp_lat = PI * (m * cos(d * THIRD + PI4_3) - THIRD * c2); if (xy_y < 0.) lp_lat = -lp_lat; t = r2 + TPISQ * (x2 - y2 + HPISQ); lp_lon = fabs(xy_x) <= TOL ? 0. : .5 * (r - PISQ + (t <= 0. ? 0. : sqrt(t))) / xy_x; } else throw proj_exception();; } }; // van der Grinten (I) template void setup_vandg(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::vandg #endif // doxygen /*! \brief van der Grinten (I) projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid \par Example \image html ex_vandg.gif */ template struct vandg_spheroid : public detail::vandg::base_vandg_spheroid { inline vandg_spheroid(const Parameters& par) : detail::vandg::base_vandg_spheroid(par) { detail::vandg::setup_vandg(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class vandg_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void vandg_init(detail::base_factory& factory) { factory.add_to_factory("vandg", new vandg_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_VANDG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/vandg2.hpp000066400000000000000000000202741177067165300305670ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_VANDG2_HPP #define GGL_PROJECTIONS_VANDG2_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace vandg2{ static const double TOL = 1e-10; static const double TWORPI = 0.63661977236758134308; struct par_vandg2 { int vdg3; }; // template class, using CRTP to implement forward/inverse template struct base_vandg2_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_vandg2 m_proj_parm; inline base_vandg2_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double x1, at, bt, ct; bt = fabs(TWORPI * lp_lat); if ((ct = 1. - bt * bt) < 0.) ct = 0.; else ct = sqrt(ct); if (fabs(lp_lon) < TOL) { xy_x = 0.; xy_y = PI * (lp_lat < 0. ? -bt : bt) / (1. + ct); } else { at = 0.5 * fabs(PI / lp_lon - lp_lon / PI); if (this->m_proj_parm.vdg3) { x1 = bt / (1. + ct); xy_x = PI * (sqrt(at * at + 1. - x1 * x1) - at); xy_y = PI * x1; } else { x1 = (ct * sqrt(1. + at * at) - at * ct * ct) / (1. + at * at * bt * bt); xy_x = PI * x1; xy_y = PI * sqrt(1. - x1 * (x1 + 2. * at) + TOL); } if ( lp_lon < 0.) xy_x = -xy_x; if ( lp_lat < 0.) xy_y = -xy_y; } } }; // van der Grinten II template void setup_vandg2(Parameters& par, par_vandg2& proj_parm) { proj_parm.vdg3 = 0; // par.inv = 0; // par.fwd = s_forward; } // van der Grinten III template void setup_vandg3(Parameters& par, par_vandg2& proj_parm) { proj_parm.vdg3 = 1; par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::vandg2 #endif // doxygen /*! \brief van der Grinten II projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_vandg2.gif */ template struct vandg2_spheroid : public detail::vandg2::base_vandg2_spheroid { inline vandg2_spheroid(const Parameters& par) : detail::vandg2::base_vandg2_spheroid(par) { detail::vandg2::setup_vandg2(this->m_par, this->m_proj_parm); } }; /*! \brief van der Grinten III projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_vandg3.gif */ template struct vandg3_spheroid : public detail::vandg2::base_vandg2_spheroid { inline vandg3_spheroid(const Parameters& par) : detail::vandg2::base_vandg2_spheroid(par) { detail::vandg2::setup_vandg3(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class vandg2_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template class vandg3_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void vandg2_init(detail::base_factory& factory) { factory.add_to_factory("vandg2", new vandg2_entry); factory.add_to_factory("vandg3", new vandg3_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_VANDG2_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/vandg4.hpp000066400000000000000000000152661177067165300305760ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_VANDG4_HPP #define GGL_PROJECTIONS_VANDG4_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace vandg4{ static const double TOL = 1e-10; static const double TWORPI = 0.63661977236758134308; // template class, using CRTP to implement forward/inverse template struct base_vandg4_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_vandg4_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double x1, t, bt, ct, ft, bt2, ct2, dt, dt2; if (fabs(lp_lat) < TOL) { xy_x = lp_lon; xy_y = 0.; } else if (fabs(lp_lon) < TOL || fabs(fabs(lp_lat) - HALFPI) < TOL) { xy_x = 0.; xy_y = lp_lat; } else { bt = fabs(TWORPI * lp_lat); bt2 = bt * bt; ct = 0.5 * (bt * (8. - bt * (2. + bt2)) - 5.) / (bt2 * (bt - 1.)); ct2 = ct * ct; dt = TWORPI * lp_lon; dt = dt + 1. / dt; dt = sqrt(dt * dt - 4.); if ((fabs(lp_lon) - HALFPI) < 0.) dt = -dt; dt2 = dt * dt; x1 = bt + ct; x1 *= x1; t = bt + 3.*ct; ft = x1 * (bt2 + ct2 * dt2 - 1.) + (1.-bt2) * ( bt2 * (t * t + 4. * ct2) + ct2 * (12. * bt * ct + 4. * ct2) ); x1 = (dt*(x1 + ct2 - 1.) + 2.*sqrt(ft)) / (4.* x1 + dt2); xy_x = HALFPI * x1; xy_y = HALFPI * sqrt(1. + dt * fabs(x1) - x1 * x1); if (lp_lon < 0.) xy_x = -xy_x; if (lp_lat < 0.) xy_y = -xy_y; } } }; // van der Grinten IV template void setup_vandg4(Parameters& par) { par.es = 0.; // par.fwd = s_forward; } }} // namespace detail::vandg4 #endif // doxygen /*! \brief van der Grinten IV projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_vandg4.gif */ template struct vandg4_spheroid : public detail::vandg4::base_vandg4_spheroid { inline vandg4_spheroid(const Parameters& par) : detail::vandg4::base_vandg4_spheroid(par) { detail::vandg4::setup_vandg4(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class vandg4_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void vandg4_init(detail::base_factory& factory) { factory.add_to_factory("vandg4", new vandg4_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_VANDG4_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/wag2.hpp000066400000000000000000000133141177067165300302430ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_WAG2_HPP #define GGL_PROJECTIONS_WAG2_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wag2{ static const double C_x = 0.92483; static const double C_y = 1.38725; static const double C_p1 = 0.88022; static const double C_p2 = 0.88550; // template class, using CRTP to implement forward/inverse template struct base_wag2_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_wag2_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { lp_lat = aasin(C_p1 * sin(C_p2 * lp_lat)); xy_x = C_x * lp_lon * cos(lp_lat); xy_y = C_y * lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y / C_y; lp_lon = xy_x / (C_x * cos(lp_lat)); lp_lat = aasin(sin(lp_lat) / C_p1) / C_p2; } }; // Wagner II template void setup_wag2(Parameters& par) { par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::wag2 #endif // doxygen /*! \brief Wagner II projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid \par Example \image html ex_wag2.gif */ template struct wag2_spheroid : public detail::wag2::base_wag2_spheroid { inline wag2_spheroid(const Parameters& par) : detail::wag2::base_wag2_spheroid(par) { detail::wag2::setup_wag2(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class wag2_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void wag2_init(detail::base_factory& factory) { factory.add_to_factory("wag2", new wag2_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_WAG2_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/wag3.hpp000066400000000000000000000135121177067165300302440ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_WAG3_HPP #define GGL_PROJECTIONS_WAG3_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wag3{ static const double TWOTHIRD = 0.6666666666666666666667; struct par_wag3 { double C_x; }; // template class, using CRTP to implement forward/inverse template struct base_wag3_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_wag3 m_proj_parm; inline base_wag3_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = this->m_proj_parm.C_x * lp_lon * cos(TWOTHIRD * lp_lat); xy_y = lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y; lp_lon = xy_x / (this->m_proj_parm.C_x * cos(TWOTHIRD * lp_lat)); } }; // Wagner III template void setup_wag3(Parameters& par, par_wag3& proj_parm) { double ts; ts = pj_param(par.params, "rlat_ts").f; proj_parm.C_x = cos(ts) / cos(2.*ts/3.); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::wag3 #endif // doxygen /*! \brief Wagner III projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - lat_ts= \par Example \image html ex_wag3.gif */ template struct wag3_spheroid : public detail::wag3::base_wag3_spheroid { inline wag3_spheroid(const Parameters& par) : detail::wag3::base_wag3_spheroid(par) { detail::wag3::setup_wag3(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class wag3_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void wag3_init(detail::base_factory& factory) { factory.add_to_factory("wag3", new wag3_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_WAG3_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/wag7.hpp000066400000000000000000000125631177067165300302550ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_WAG7_HPP #define GGL_PROJECTIONS_WAG7_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wag7{ // template class, using CRTP to implement forward/inverse template struct base_wag7_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; inline base_wag7_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double theta, ct, D; theta = asin(xy_y = 0.90630778703664996 * sin(lp_lat)); xy_x = 2.66723 * (ct = cos(theta)) * sin(lp_lon /= 3.); xy_y *= 1.24104 * (D = 1/(sqrt(0.5 * (1 + ct * cos(lp_lon))))); xy_x *= D; } }; // Wagner VII template void setup_wag7(Parameters& par) { // par.fwd = s_forward; // par.inv = 0; par.es = 0.; } }} // namespace detail::wag7 #endif // doxygen /*! \brief Wagner VII projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Miscellaneous - Spheroid - no inverse \par Example \image html ex_wag7.gif */ template struct wag7_spheroid : public detail::wag7::base_wag7_spheroid { inline wag7_spheroid(const Parameters& par) : detail::wag7::base_wag7_spheroid(par) { detail::wag7::setup_wag7(this->m_par); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class wag7_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void wag7_init(detail::base_factory& factory) { factory.add_to_factory("wag7", new wag7_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_WAG7_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/wink1.hpp000066400000000000000000000133361177067165300304400ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_WINK1_HPP #define GGL_PROJECTIONS_WINK1_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wink1{ struct par_wink1 { double cosphi1; }; // template class, using CRTP to implement forward/inverse template struct base_wink1_spheroid : public base_t_fi, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_wink1 m_proj_parm; inline base_wink1_spheroid(const Parameters& par) : base_t_fi, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { xy_x = .5 * lp_lon * (this->m_proj_parm.cosphi1 + cos(lp_lat)); xy_y = lp_lat; } inline void inv(cartesian_type& xy_x, cartesian_type& xy_y, geographic_type& lp_lon, geographic_type& lp_lat) const { lp_lat = xy_y; lp_lon = 2. * xy_x / (this->m_proj_parm.cosphi1 + cos(lp_lat)); } }; // Winkel I template void setup_wink1(Parameters& par, par_wink1& proj_parm) { proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_ts").f); par.es = 0.; // par.inv = s_inverse; // par.fwd = s_forward; } }} // namespace detail::wink1 #endif // doxygen /*! \brief Winkel I projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - lat_ts= \par Example \image html ex_wink1.gif */ template struct wink1_spheroid : public detail::wink1::base_wink1_spheroid { inline wink1_spheroid(const Parameters& par) : detail::wink1::base_wink1_spheroid(par) { detail::wink1::setup_wink1(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class wink1_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_fi, Geographic, Cartesian, Parameters>(par); } }; template inline void wink1_init(detail::base_factory& factory) { factory.add_to_factory("wink1", new wink1_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_WINK1_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/proj/wink2.hpp000066400000000000000000000143641177067165300304430ustar00rootroot00000000000000#ifndef GGL_PROJECTIONS_WINK2_HPP #define GGL_PROJECTIONS_WINK2_HPP // Generic Geometry Library - projections (based on PROJ4) // This file is automatically generated. DO NOT EDIT. // Copyright Barend Gehrels (1995-2009), Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande (2008-2009) // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // This file is converted from PROJ4, http://trac.osgeo.org/proj // PROJ4 is originally written by Gerald Evenden (then of the USGS) // PROJ4 is maintained by Frank Warmerdam // PROJ4 is converted to Geometry Library by Barend Gehrels (Geodan, Amsterdam) // Original copyright notice: // 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. #include #include #include #include #include namespace ggl { namespace projection { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace wink2{ static const int MAX_ITER = 10; static const double LOOP_TOL = 1e-7; static const double TWO_D_PI = 0.636619772367581343; struct par_wink2 { double cosphi1; }; // template class, using CRTP to implement forward/inverse template struct base_wink2_spheroid : public base_t_f, Geographic, Cartesian, Parameters> { typedef double geographic_type; typedef double cartesian_type; par_wink2 m_proj_parm; inline base_wink2_spheroid(const Parameters& par) : base_t_f, Geographic, Cartesian, Parameters>(*this, par) {} inline void fwd(geographic_type& lp_lon, geographic_type& lp_lat, cartesian_type& xy_x, cartesian_type& xy_y) const { double k, V; int i; xy_y = lp_lat * TWO_D_PI; k = PI * sin(lp_lat); lp_lat *= 1.8; for (i = MAX_ITER; i ; --i) { lp_lat -= V = (lp_lat + sin(lp_lat) - k) / (1. + cos(lp_lat)); if (fabs(V) < LOOP_TOL) break; } if (!i) lp_lat = (lp_lat < 0.) ? -HALFPI : HALFPI; else lp_lat *= 0.5; xy_x = 0.5 * lp_lon * (cos(lp_lat) + this->m_proj_parm.cosphi1); xy_y = FORTPI * (sin(lp_lat) + xy_y); } }; // Winkel II template void setup_wink2(Parameters& par, par_wink2& proj_parm) { proj_parm.cosphi1 = cos(pj_param(par.params, "rlat_1").f); par.es = 0.; // par.inv = 0; // par.fwd = s_forward; } }} // namespace detail::wink2 #endif // doxygen /*! \brief Winkel II projection \ingroup projections \tparam Geographic latlong point type \tparam Cartesian xy point type \tparam Parameters parameter type \par Projection characteristics - Pseudocylindrical - Spheroid - no inverse - lat_1= \par Example \image html ex_wink2.gif */ template struct wink2_spheroid : public detail::wink2::base_wink2_spheroid { inline wink2_spheroid(const Parameters& par) : detail::wink2::base_wink2_spheroid(par) { detail::wink2::setup_wink2(this->m_par, this->m_proj_parm); } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { // Factory entry(s) template class wink2_entry : public detail::factory_entry { public : virtual projection* create_new(const Parameters& par) const { return new base_v_f, Geographic, Cartesian, Parameters>(par); } }; template inline void wink2_init(detail::base_factory& factory) { factory.add_to_factory("wink2", new wink2_entry); } } // namespace detail #endif // doxygen }} // namespace ggl::projection #endif // GGL_PROJECTIONS_WINK2_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/project_inverse_transformer.hpp000066400000000000000000000042111177067165300342500ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_PROJECT_INVERSE_TRANSFORMER_HPP #define GGL_STRATEGY_PROJECT_INVERSE_TRANSFORMER_HPP #include #include #include #include #include namespace ggl { namespace projection { /*! \brief Transformation strategy to do transform using a Map Projection \ingroup transform \tparam Cartesian first point type \tparam LatLong second point type */ template struct project_inverse_transformer { typedef boost::shared_ptr > projection_ptr; projection_ptr m_prj; /// Constructor using a shared-pointer-to-projection_ptr inline project_inverse_transformer(projection_ptr& prj) : m_prj(prj) {} /// Constructor using a string inline project_inverse_transformer(const std::string& par) { factory fac; m_prj.reset(fac.create_new(init(par))); } /// Constructor using Parameters template inline project_inverse_transformer(const Parameters& par) { factory fac; m_prj.reset(fac.create_new(par)); } /// Transform operator inline bool operator()(const Cartesian& p1, LatLong& p2) const { // Latlong (LL -> XY) will be projected, rest will be copied. // So first copy third or higher dimensions ggl::detail::copy::copy_coordinates::value> ::copy(p1, p2); return m_prj->inverse(p1, p2); } }; }} // namespace ggl::projection #endif // GGL_STRATEGY_PROJECT_INVERSE_TRANSFORMER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/project_transformer.hpp000066400000000000000000000035021177067165300325170ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_PROJECT_TRANSFORMER_HPP #define GGL_STRATEGY_PROJECT_TRANSFORMER_HPP #include #include #include namespace ggl { namespace projection { /*! \brief Transformation strategy to do transform using a Map Projection \ingroup transform \tparam LatLong first point type \tparam Cartesian second point type See also \link p03_projmap_example.cpp the projmap example \endlink where this last one plus a transformation using a projection are used. */ template struct project_transformer { typedef boost::shared_ptr > projection_ptr; projection_ptr m_prj; inline project_transformer(projection_ptr& prj) : m_prj(prj) {} inline project_transformer(const std::string& par) { factory fac; m_prj.reset(fac.create_new(init(par))); } inline bool operator()(const LatLong& p1, Cartesian& p2) const { // Latlong (LatLong -> Cartesian) will be projected, rest will be copied. // So first copy third or higher dimensions ggl::detail::copy::copy_coordinates::value> ::copy(p1, p2); return m_prj->forward(p1, p2); } }; }} // namespace ggl::projection #endif // GGL_STRATEGY_PROJECT_TRANSFORMER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/gis/projections/projection.hpp000066400000000000000000000034311177067165300306040ustar00rootroot00000000000000#ifndef _PROJECTIONS_PROJECTION_HPP #define _PROJECTIONS_PROJECTION_HPP // Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include namespace ggl { namespace projection { /*! \brief projection virtual base class \details class containing virtual methods \ingroup projection \tparam LL latlong point type \tparam XY xy point type */ template class projection { protected : // see comment above //typedef typename ggl::coordinate_type::type LL_T; //typedef typename ggl::coordinate_type::type XY_T; typedef double LL_T; typedef double XY_T; public : /// Forward projection, from Latitude-Longitude to Cartesian virtual bool forward(const LL& lp, XY& xy) const = 0; /// Inverse projection, from Cartesian to Latitude-Longitude virtual bool inverse(const XY& xy, LL& lp) const = 0; /// Forward projection using lon / lat and x / y separately virtual void fwd(LL_T& lp_lon, LL_T& lp_lat, XY_T& xy_x, XY_T& xy_y) const = 0; /// Inverse projection using x / y and lon / lat virtual void inv(XY_T& xy_x, XY_T& xy_y, LL_T& lp_lon, LL_T& lp_lat) const = 0; /// Returns name of projection virtual std::string name() const = 0; /// Returns parameters of projection virtual parameters params() const = 0; virtual ~projection() {} }; }} #endif merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/index/000077500000000000000000000000001177067165300237045ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/index/rtree/000077500000000000000000000000001177067165300250255ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/index/rtree/helpers.hpp000066400000000000000000000040221177067165300271760ustar00rootroot00000000000000// Generic Geometry Library // // Boost.SpatialIndex - geometry helper functions // // Copyright 2008 Federico J. Fernandez. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GGL_INDEX_RTREE_HELPERS_HPP #define GGL_GGL_INDEX_RTREE_HELPERS_HPP #include #include #include namespace ggl { namespace index { /** * \brief Given two boxes, returns the minimal box that contains them */ // TODO: use ggl::combine template inline Box enlarge_box(Box const& b1, Box const& b2) { // TODO: mloskot - Refactor to readable form. Fix VC++8.0 min/max warnings: // warning C4002: too many actual parameters for macro 'min typedef typename ggl::point_type::type point_type; point_type pmin( ggl::get(b1) < ggl::get(b2) ? ggl::get(b1) : ggl::get(b2), ggl::get(b1) < ggl::get(b2) ? ggl::get(b1) : ggl::get(b2)); point_type pmax( ggl::get(b1) > ggl::get(b2) ? ggl::get(b1) : ggl::get(b2), ggl::get(b1) > ggl::get(b2) ? ggl::get(b1) : ggl::get(b2)); return Box(pmin, pmax); } /** * \brief Compute the area of the union of b1 and b2 */ template inline double compute_union_area(Box const& b1, Box const& b2) { Box enlarged_box = enlarge_box(b1, b2); return ggl::area(enlarged_box); } /** * \brief Checks if boxes intersects */ // TODO: move to ggl::intersects template inline bool is_overlapping(Box const& b1, Box const& b2) { return ! ggl::disjoint(b1, b2); } }} // namespace ggl::index #endif // GGL_GGL_INDEX_RTREE_HELPERS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/index/rtree/rtree.hpp000066400000000000000000000570721177067165300266720ustar00rootroot00000000000000// Generic Geometry Library // // Boost.SpatialIndex - rtree implementation // // Copyright 2008 Federico J. Fernandez. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_INDEX_RTREE_RTREE_HPP #define GGL_EXTENSIONS_INDEX_RTREE_RTREE_HPP #include #include // TODO: Remove if print() is removed #include #include #include #include #include #include #include #include namespace ggl { namespace index { template class rtree { public: typedef boost::shared_ptr > node_pointer; typedef boost::shared_ptr > leaf_pointer; /** * \brief Creates a rtree with 'maximum' elements per node and 'minimum'. */ rtree(unsigned int const& maximum, unsigned int const& minimum) : m_count(0) , m_min_elems_per_node(minimum) , m_max_elems_per_node(maximum) , m_root(new rtree_node(node_pointer(), 1)) { } /** * \brief Creates a rtree with maximum elements per node * and minimum (box is ignored). */ rtree(Box const& box, unsigned int const& maximum, unsigned int const& minimum) : m_count(0) , m_min_elems_per_node(minimum) , m_max_elems_per_node(maximum) , m_root(new rtree_node(node_pointer(), 1)) { boost::ignore_unused_variable_warning(box); } /** * \brief destructor (virtual because we have virtual functions) */ virtual ~rtree() {} /** * \brief Remove elements inside the 'box' */ inline void remove(Box const& box) { try { node_pointer leaf(choose_exact_leaf(box)); typename rtree_leaf::leaf_map q_leaves; leaf->remove(box); if (leaf->elements() < m_min_elems_per_node && elements() > m_min_elems_per_node) { q_leaves = leaf->get_leaves(); // we remove the leaf_node in the parent node because now it's empty leaf->get_parent()->remove(leaf->get_parent()->get_box(leaf)); } typename rtree_node::node_map q_nodes; condense_tree(leaf, q_nodes); std::vector > s; for (typename rtree_node::node_map::const_iterator it = q_nodes.begin(); it != q_nodes.end(); ++it) { typename rtree_leaf::leaf_map leaves = it->second->get_leaves(); // reinserting leaves from nodes for (typename rtree_leaf::leaf_map::const_iterator itl = leaves.begin(); itl != leaves.end(); ++itl) { s.push_back(*itl); } } for (typename std::vector >::const_iterator it = s.begin(); it != s.end(); ++it) { m_count--; insert(it->first, it->second); } // if the root has only one child and the child is not a leaf, // make it the root if (m_root->elements() == 1) { if (!m_root->first_element()->is_leaf()) { m_root = m_root->first_element(); } } // reinserting leaves for (typename rtree_leaf::leaf_map::const_iterator it = q_leaves.begin(); it != q_leaves.end(); ++it) { m_count--; insert(it->first, it->second); } m_count--; } catch(std::logic_error & e) { // TODO: mloskot - replace with ggl exception // not found std::cerr << e.what() << std::endl; return; } } /** * \brief Remove element inside the box with value */ void remove(Box const& box, Value const& value) { try { node_pointer leaf; // find possible leaves typedef typename std::vector node_type; node_type nodes; m_root->find_leaves(box, nodes); // refine the result for (typename node_type::const_iterator it = nodes.begin(); it != nodes.end(); ++it) { leaf = *it; try { leaf->remove(value); break; } catch (...) { leaf = node_pointer(); } } if (!leaf) return; typename rtree_leaf < Box, Value >::leaf_map q_leaves; if (leaf->elements() < m_min_elems_per_node && elements() > m_min_elems_per_node) { q_leaves = leaf->get_leaves(); // we remove the leaf_node in the parent node because now it's empty leaf->get_parent()->remove(leaf->get_parent()->get_box(leaf)); } typename rtree_node::node_map q_nodes; condense_tree(leaf, q_nodes); std::vector > s; for (typename rtree_node::node_map::const_iterator it = q_nodes.begin(); it != q_nodes.end(); ++it) { typename rtree_leaf::leaf_map leaves = it->second->get_leaves(); // reinserting leaves from nodes for (typename rtree_leaf::leaf_map::const_iterator itl = leaves.begin(); itl != leaves.end(); ++itl) { s.push_back(*itl); } } for (typename std::vector >::const_iterator it = s.begin(); it != s.end(); ++it) { m_count--; insert(it->first, it->second); } // if the root has only one child and the child is not a leaf, // make it the root if (m_root->elements() == 1) { if (!m_root->first_element()->is_leaf()) { m_root = m_root->first_element(); } } // reinserting leaves for (typename rtree_leaf::leaf_map::const_iterator it = q_leaves.begin(); it != q_leaves.end(); ++it) { m_count--; insert(it->first, it->second); } m_count--; } catch(std::logic_error & e) { // TODO: mloskot - ggl exception // not found std::cerr << e.what() << std::endl; return; } } /** * \brief Returns the number of elements. */ inline unsigned int elements() const { return m_count; } /** * \brief Inserts an element with 'box' as key with value. */ inline void insert(Box const& box, Value const& value) { m_count++; node_pointer leaf(choose_corresponding_leaf(box)); // check if the selected leaf is full to do the split if necessary if (leaf->elements() >= m_max_elems_per_node) { leaf->insert(box, value); // split! node_pointer n1(new rtree_leaf(leaf->get_parent())); node_pointer n2(new rtree_leaf(leaf->get_parent())); split_node(leaf, n1, n2); adjust_tree(leaf, n1, n2); } else { leaf->insert(box, value); adjust_tree(leaf); } } /** * \brief Returns all the values inside 'box' */ inline std::deque find(Box const& box) const { std::deque result; m_root->find(box, result, false); return result; } /** * \brief Print Rtree (mainly for debug) */ inline void print() { std::cerr << "===================================" << std::endl; std::cerr << " Min/Max: " << m_min_elems_per_node << " / " << m_max_elems_per_node << std::endl; std::cerr << "Leaves: " << m_root->get_leaves().size() << std::endl; m_root->print(); std::cerr << "===================================" << std::endl; } private: /// number of elements unsigned int m_count; /// minimum number of elements per node unsigned int m_min_elems_per_node; /// maximum number of elements per node unsigned int m_max_elems_per_node; /// tree root node_pointer m_root; /** * \brief Reorganize the tree after a removal. It tries to * join nodes with less elements than m. */ void condense_tree(node_pointer const& leaf, typename rtree_node::node_map& q_nodes) { if (leaf.get() == m_root.get()) { // if it's the root we are done return; } node_pointer parent = leaf->get_parent(); parent->adjust_box(leaf); if (parent->elements() < m_min_elems_per_node) { if (parent.get() == m_root.get()) { // if the parent is underfull and it's the root we just exit return; } // get the nodes that we should reinsert typename rtree_node::node_map this_nodes = parent->get_nodes(); for(typename rtree_node::node_map::const_iterator it = this_nodes.begin(); it != this_nodes.end(); ++it) { q_nodes.push_back(*it); } // we remove the node in the parent node because now it should be // re inserted parent->get_parent()->remove(parent->get_parent()->get_box(parent)); } condense_tree(parent, q_nodes); } /** * \brief After an insertion splits nodes with more than 'maximum' elements. */ inline void adjust_tree(node_pointer& node) { if (node.get() == m_root.get()) { // we finished the adjust return; } // as there are no splits just adjust the box of the parent and go on node_pointer parent = node->get_parent(); parent->adjust_box(node); adjust_tree(parent); } /** * \brief After an insertion splits nodes with more than maximum elements * (recursive step with subtrees 'n1' and 'n2' to be joined). */ void adjust_tree(node_pointer& leaf, node_pointer& n1, node_pointer& n2) { // check if we are in the root and do the split if (leaf.get() == m_root.get()) { node_pointer new_root(new rtree_node(node_pointer (), leaf->get_level() + 1)); new_root->add_node(n1->compute_box(), n1); new_root->add_node(n2->compute_box(), n2); n1->set_parent(new_root); n2->set_parent(new_root); n1->update_parent(n1); n2->update_parent(n2); m_root = new_root; return; } node_pointer parent = leaf->get_parent(); parent->replace_node(leaf, n1); parent->add_node(n2->compute_box(), n2); // if parent is full, split and readjust if (parent->elements() > m_max_elems_per_node) { node_pointer p1(new rtree_node(parent->get_parent(), parent->get_level())); node_pointer p2(new rtree_node(parent->get_parent(), parent->get_level())); split_node(parent, p1, p2); adjust_tree(parent, p1, p2); } else { adjust_tree(parent); } } /** * \brief Splits 'n' in 'n1' and 'n2' */ void split_node(node_pointer const& n, node_pointer& n1, node_pointer& n2) const { unsigned int seed1 = 0; unsigned int seed2 = 0; std::vector boxes = n->get_boxes(); n1->set_parent(n->get_parent()); n2->set_parent(n->get_parent()); linear_pick_seeds(n, seed1, seed2); if (n->is_leaf()) { n1->add_value(boxes[seed1], n->get_value(seed1)); n2->add_value(boxes[seed2], n->get_value(seed2)); } else { n1->add_node(boxes[seed1], n->get_node(seed1)); n2->add_node(boxes[seed2], n->get_node(seed2)); } unsigned int index = 0; if (n->is_leaf()) { // TODO: mloskot - add assert(node.size() >= 2); or similar typename rtree_leaf::leaf_map nodes = n->get_leaves(); unsigned int remaining = nodes.size() - 2; for (typename rtree_leaf::leaf_map::const_iterator it = nodes.begin(); it != nodes.end(); ++it, index++) { if (index != seed1 && index != seed2) { if (n1->elements() + remaining == m_min_elems_per_node) { n1->add_value(it->first, it->second); continue; } if (n2->elements() + remaining == m_min_elems_per_node) { n2->add_value(it->first, it->second); continue; } remaining--; /// current boxes of each group Box b1, b2; /// enlarged boxes of each group Box eb1, eb2; b1 = n1->compute_box(); b2 = n2->compute_box(); /// areas double b1_area, b2_area; double eb1_area, eb2_area; b1_area = ggl::area(b1); b2_area = ggl::area(b2); eb1_area = compute_union_area(b1, it->first); eb2_area = compute_union_area(b2, it->first); if (eb1_area - b1_area > eb2_area - b2_area) { n2->add_value(it->first, it->second); } if (eb1_area - b1_area < eb2_area - b2_area) { n1->add_value(it->first, it->second); } if (eb1_area - b1_area == eb2_area - b2_area) { if (b1_area < b2_area) { n1->add_value(it->first, it->second); } if (b1_area > b2_area) { n2->add_value(it->first, it->second); } if (b1_area == b2_area) { if (n1->elements() > n2->elements()) { n2->add_value(it->first, it->second); } else { n1->add_value(it->first, it->second); } } } } } } else { // TODO: mloskot - add assert(node.size() >= 2); or similar typename rtree_node::node_map nodes = n->get_nodes(); unsigned int remaining = nodes.size() - 2; for(typename rtree_node::node_map::const_iterator it = nodes.begin(); it != nodes.end(); ++it, index++) { if (index != seed1 && index != seed2) { if (n1->elements() + remaining == m_min_elems_per_node) { n1->add_node(it->first, it->second); continue; } if (n2->elements() + remaining == m_min_elems_per_node) { n2->add_node(it->first, it->second); continue; } remaining--; /// current boxes of each group Box b1, b2; /// enlarged boxes of each group Box eb1, eb2; b1 = n1->compute_box(); b2 = n2->compute_box(); /// areas double b1_area, b2_area; double eb1_area, eb2_area; b1_area = ggl::area(b1); b2_area = ggl::area(b2); eb1_area = compute_union_area(b1, it->first); eb2_area = compute_union_area(b2, it->first); if (eb1_area - b1_area > eb2_area - b2_area) { n2->add_node(it->first, it->second); } if (eb1_area - b1_area < eb2_area - b2_area) { n1->add_node(it->first, it->second); } if (eb1_area - b1_area == eb2_area - b2_area) { if (b1_area < b2_area) { n1->add_node(it->first, it->second); } if (b1_area > b2_area) { n2->add_node(it->first, it->second); } if (b1_area == b2_area) { if (n1->elements() > n2->elements()) { n2->add_node(it->first, it->second); } else { n1->add_node(it->first, it->second); } } } } } } } /** * \brief Choose initial values for the split algorithm (linear version) */ void linear_pick_seeds(node_pointer const& n, unsigned int &seed1, unsigned int &seed2) const { // get boxes from the node std::vectorboxes = n->get_boxes(); if (boxes.size() == 0) { // TODO: mloskot - throw ggl exception throw std::logic_error("Empty Node trying to Pick Seeds"); } // only two dim for now // unsigned int dimensions = // ggl::point_traits::coordinate_count; // find the first two elements double separation_x, separation_y; unsigned int first_x, second_x; unsigned int first_y, second_y; find_normalized_separations<0u>(boxes, separation_x, first_x, second_x); find_normalized_separations<1u>(boxes, separation_y, first_y, second_y); if (separation_x > separation_y) { seed1 = first_x; seed2 = second_x; } else { seed1 = first_y; seed2 = second_y; } } /** * \brief Find distances between possible initial values for the * pick_seeds algorithm. */ template void find_normalized_separations(const std::vector& boxes, double &separation, unsigned int &first, unsigned int &second) const { if (boxes.size() < 2) { throw std::logic_error("At least two boxes needed to split"); } // find the lowest high typename std::vector::const_iterator it = boxes.begin(); double lowest_high = ggl::get(*it); unsigned int lowest_high_index = 0; unsigned int index = 1; ++it; for(; it != boxes.end(); ++it) { if (ggl::get(*it) < lowest_high) { lowest_high = ggl::get(*it); lowest_high_index = index; } index++; } // find the highest low double highest_low = 0; unsigned int highest_low_index = 0; if (lowest_high_index == 0) { highest_low = ggl::get(boxes[1]); highest_low_index = 1; } else { highest_low = ggl::get(boxes[0]); highest_low_index = 0; } index = 0; for (typename std::vector::const_iterator it = boxes.begin(); it != boxes.end(); ++it, index++) { if (ggl::get(*it) >= highest_low && index != lowest_high_index) { highest_low = ggl::get(*it); highest_low_index = index; } } // find the lowest low it = boxes.begin(); double lowest_low = ggl::get(*it); ++it; for(; it != boxes.end(); ++it) { if (ggl::get(*it) < lowest_low) { lowest_low = ggl::get(*it); } } // find the highest high it = boxes.begin(); double highest_high = ggl::get(*it); ++it; for(; it != boxes.end(); ++it) { if (ggl::get(*it) > highest_high) { highest_high = ggl::get(*it); } } double const width = highest_high - lowest_low; separation = (highest_low - lowest_high) / width; first = highest_low_index; second = lowest_high_index; } /** * \brief Choose one of the possible leaves to make an insertion */ inline node_pointer choose_corresponding_leaf(Box const& e) { node_pointer node = m_root; // if the tree is empty add an initial leaf if (m_root->elements() == 0) { leaf_pointer new_leaf(new rtree_leaf(m_root)); m_root->add_leaf_node(Box (), new_leaf); return new_leaf; } while (!node->is_leaf()) { /// traverse node's map to see which node we should select node = node->choose_node(e); } return node; } /** * \brief Choose the exact leaf where an insertion should be done */ node_pointer choose_exact_leaf(Box const&e) const { // find possible leaves typedef typename std::vector node_type; node_type nodes; m_root->find_leaves(e, nodes); // refine the result for (typename node_type::const_iterator it = nodes.begin(); it != nodes.end(); ++it) { typedef std::vector > leaves_type; leaves_type leaves = (*it)->get_leaves(); for (typename leaves_type::const_iterator itl = leaves.begin(); itl != leaves.end(); ++itl) { if (itl->first.max_corner() == e.max_corner() && itl->first.min_corner() == e.min_corner()) { return *it; } } } // TODO: mloskot - ggl exception throw std::logic_error("Leaf not found"); } }; }} // namespace ggl::index #endif // GGL_EXTENSIONS_INDEX_RTREE_RTREE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/index/rtree/rtree_leaf.hpp000066400000000000000000000142461177067165300276550ustar00rootroot00000000000000// Generic Geometry Library // // Boost.SpatialIndex - rtree leaf implementation // // Copyright 2008 Federico J. Fernandez. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_INDEX_RTREE_RTREE_LEAF_HPP #define GGL_EXTENSIONS_INDEX_RTREE_RTREE_LEAF_HPP #include #include // TODO: Remove if print() is removed #include #include #include #include #include #include #include #include namespace ggl { namespace index { template class rtree_leaf : public rtree_node { public: /// container type for the leaves typedef boost::shared_ptr > node_pointer; typedef std::vector > leaf_map; /** * \brief Creates an empty leaf */ inline rtree_leaf() { } /** * \brief Creates a new leaf, with 'parent' as parent */ inline rtree_leaf(node_pointer const& parent) : rtree_node (parent, 0) { } /** * \brief Search for elements in 'box' in the Rtree. Add them to 'result'. * If exact_match is true only return the elements having as * key the 'box'. Otherwise return everything inside 'box'. */ virtual void find(Box const& box, std::deque& result, const bool exact_match) { for (typename leaf_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (exact_match) { if (ggl::equals(it->first, box)) { result.push_back(it->second); } } else { if (is_overlapping(it->first, box)) { result.push_back(it->second); } } } } /** * \brief Compute bounding box for this leaf */ virtual Box compute_box() const { if (m_nodes.empty()) { return Box (); } Box r; ggl::assign_inverse(r); for(typename leaf_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { ggl::combine(r, it->first); } return r; } /** * \brief True if we are a leaf */ virtual bool is_leaf() const { return true; } /** * \brief Number of elements in the tree */ virtual unsigned int elements() const { return m_nodes.size(); } /** * \brief Insert a new element, with key 'box' and value 'v' */ virtual void insert(Box const& box, Value const& v) { m_nodes.push_back(std::make_pair(box, v)); } /** * \brief Proyect leaves of this node. */ virtual std::vector< std::pair > get_leaves() const { return m_nodes; } /** * \brief Add a new child (node) to this node */ virtual void add_node(Box const&, node_pointer const&) { // TODO: mloskot - define & use GGL exception throw std::logic_error("Can't add node to leaf node."); } /** * \brief Add a new leaf to this node */ virtual void add_value(Box const& box, Value const& v) { m_nodes.push_back(std::make_pair(box, v)); } /** * \brief Proyect value in position 'index' in the nodes container */ virtual Value get_value(unsigned int index) const { return m_nodes[index].second; } /** * \brief Box projector for leaf */ virtual Box get_box(unsigned int index) const { return m_nodes[index].first; } /** * \brief Remove value with key 'box' in this leaf */ virtual void remove(Box const& box) { for (typename leaf_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (ggl::equals(it->first, box)) { m_nodes.erase(it); return; } } // TODO: mloskot - use GGL exception throw std::logic_error("Node not found."); } /** * \brief Remove value in this leaf */ virtual void remove(const Value &v) { for (typename leaf_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (it->second == v) { m_nodes.erase(it); return; } } // TODO: mloskot - use GGL exception throw std::logic_error("Node not found."); } /** * \brief Proyect boxes from this node */ virtual std::vector get_boxes() const { std::vector result; for (typename leaf_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { result.push_back(it->first); } return result; } /** * \brief Print leaf (mainly for debug) */ virtual void print() const { std::cerr << "\t" << " --> Leaf --------" << std::endl; std::cerr << "\t" << " Size: " << m_nodes.size() << std::endl; for (typename leaf_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { std::cerr << "\t" << " | "; std::cerr << "( " << ggl::get (it->first) << " , " << ggl::get (it->first) << " ) x "; std::cerr << "( " << ggl::get (it->first) << " , " << ggl::get (it->first) << " )"; std::cerr << " -> "; std::cerr << it->second; std::cerr << " | " << std::endl;; } std::cerr << "\t" << " --< Leaf --------" << std::endl; } private: /// leaves of this node leaf_map m_nodes; }; }} // namespace ggl::index #endif // GGL_EXTENSIONS_INDEX_RTREE_RTREE_LEAF_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/index/rtree/rtree_node.hpp000066400000000000000000000312411177067165300276650ustar00rootroot00000000000000// Generic Geometry Library // // Boost.SpatialIndex - rtree node implementation // // Copyright 2008 Federico J. Fernandez. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_EXTENSIONS_INDEX_RTREE_RTREE_NODE_HPP #define GGL_EXTENSIONS_INDEX_RTREE_RTREE_NODE_HPP #include #include // TODO: Remove if print() is removed #include #include #include #include #include #include #include #include #include namespace ggl { namespace index { /// forward declaration template class rtree_leaf; template class rtree_node { public: typedef boost::shared_ptr > node_pointer; typedef boost::shared_ptr > leaf_pointer; /// type for the node map typedef std::vector > node_map; /** * \brief Creates a default node (needed for the containers) */ rtree_node() { } /** * \brief Creates a node with 'parent' as parent and 'level' as its level */ rtree_node(node_pointer const& parent, unsigned int const& level) : m_parent(parent), m_level(level) { } /** * \brief destructor (virtual because we have virtual functions) */ virtual ~rtree_node() { } /** * \brief Level projector */ virtual unsigned int get_level() const { return m_level; } /** * \brief Number of elements in the subtree */ virtual unsigned int elements() const { return m_nodes.size(); } /** * \brief Project first element, to replace root in case of condensing */ inline node_pointer first_element() const { if (0 == m_nodes.size()) { // TODO: mloskot - define & use GGL exception throw std::logic_error("first_element in empty node"); } return m_nodes.begin()->second; } /** * \brief True if it is a leaf node */ virtual bool is_leaf() const { return false; } /** * \brief Proyector for the 'i' node */ node_pointer get_node(unsigned int index) { return m_nodes[index].second; } /** * \brief Search for elements in 'box' in the Rtree. Add them to 'result'. * If exact_match is true only return the elements having as * key the box 'box'. Otherwise return everything inside 'box'. */ virtual void find(Box const& box, std::deque& result, bool const exact_match) { for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (is_overlapping(it->first, box)) { it->second->find(box, result, exact_match); } } } /** * \brief Return in 'result' all the leaves inside 'box' */ void find_leaves(Box const& box, typename std::vector& result) const { for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (is_overlapping(it->first, box)) { if (it->second->is_leaf()) { result.push_back(it->second); } else { it->second->find_leaves(box, result); } } } } /** * \brief Compute bounding box for this node */ virtual Box compute_box() const { if (m_nodes.empty()) { return Box(); } Box result; ggl::assign_inverse(result); for(typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { ggl::combine(result, it->first); } return result; } /** * \brief Insert a value (not allowed for a node, only on leaves) */ virtual void insert(Box const&, Value const&) { // TODO: mloskot - define & use GGL exception throw std::logic_error("Insert in node!"); } /** * \brief Get the envelopes of a node */ virtual std::vector get_boxes() const { std::vector result; for(typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { result.push_back(it->first); } return result; } /** * \brief Recompute the bounding box */ void adjust_box(node_pointer const& node) { unsigned int index = 0; for (typename node_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it, index++) { if (it->second.get() == node.get()) { m_nodes[index] = std::make_pair(node->compute_box(), node); return; } } } /** * \brief Remove elements inside the 'box' */ virtual void remove(Box const& box) { for (typename node_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (ggl::equals(it->first, box)) { m_nodes.erase(it); return; } } } /** * \brief Remove value in this leaf */ virtual void remove(Value const&) { // TODO: mloskot - define & use GGL exception throw std::logic_error("Can't remove a non-leaf node by value."); } /** * \brief Replace the node in the m_nodes vector and recompute the box */ void replace_node(node_pointer const& leaf, node_pointer& new_leaf) { unsigned int index = 0; for(typename node_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it, index++) { if (it->second.get() == leaf.get()) { m_nodes[index] = std::make_pair(new_leaf->compute_box(), new_leaf); new_leaf->update_parent(new_leaf); return; } } // TODO: mloskot - define & use GGL exception throw std::logic_error("Node not found."); } /** * \brief Add a child to this node */ virtual void add_node(Box const& box, node_pointer const& node) { m_nodes.push_back(std::make_pair(box, node)); node->update_parent(node); } /** * \brief add a value (not allowed in nodes, only on leaves) */ virtual void add_value(Box const&, Value const&) { // TODO: mloskot - define & use GGL exception throw std::logic_error("Can't add value to non-leaf node."); } /** * \brief Add a child leaf to this node */ inline void add_leaf_node(Box const& box, leaf_pointer const& leaf) { m_nodes.push_back(std::make_pair(box, leaf)); } /** * \brief Choose a node suitable for adding 'box' */ node_pointer choose_node(Box const& box) { if (m_nodes.size() == 0) { // TODO: mloskot - define & use GGL exception throw std::logic_error("Empty node trying to choose the least enlargement node."); } bool first = true; double min_area = 0; double min_diff_area = 0; node_pointer chosen_node; // check for the least enlargement for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { double const diff_area = compute_union_area(box, it->first) - ggl::area(it->first); if (first) { // it's the first time, we keep the first min_diff_area = diff_area; min_area = ggl::area(it->first); chosen_node = it->second; first = false; } else { if (diff_area < min_diff_area) { min_diff_area = diff_area; min_area = ggl::area(it->first); chosen_node = it->second; } else { if (diff_area == min_diff_area) { if (ggl::area(it->first) < min_area) { min_diff_area = diff_area; min_area = ggl::area(it->first); chosen_node = it->second; } } } } } return chosen_node; } /** * \brief Empty the node */ virtual void empty_nodes() { m_nodes.clear(); } /** * \brief Projector for parent */ inline node_pointer get_parent() const { return m_parent; } /** * \brief Update the parent of all the childs */ void update_parent(node_pointer const& node) { for (typename node_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { it->second->set_parent(node); } } /** * \brief Set parent */ void set_parent(node_pointer const& node) { m_parent = node; } /** * \brief Value projector for leaf_node (not allowed for non-leaf nodes) */ virtual Value get_value(unsigned int) const { // TODO: mloskot - define & use GGL exception throw std::logic_error("No values in a non-leaf node."); } /** * \brief Box projector for node 'index' */ virtual Box get_box(unsigned int index) const { return m_nodes[index].first; } /** * \brief Box projector for node pointed by 'leaf' */ virtual Box get_box(node_pointer const& leaf) const { for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (it->second.get() == leaf.get()) { return it->first; } } // TODO: mloskot - define & use GGL exception throw std::logic_error("Node not found"); } /** * \brief Children projector */ node_map get_nodes() const { return m_nodes; } /** * \brief Get leaves for a node */ virtual std::vector > get_leaves() const { typedef std::vector > leaf_type; leaf_type leaf; for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { leaf_type this_leaves = it->second->get_leaves(); for (typename leaf_type::iterator it_leaf = this_leaves.begin(); it_leaf != this_leaves.end(); ++it_leaf) { leaf.push_back(*it_leaf); } } return leaf; } /** * \brief Print Rtree subtree (mainly for debug) */ virtual void print() const { std::cerr << " --> Node --------" << std::endl; std::cerr << " Address: " << this << std::endl; std::cerr << " Level: " << m_level << std::endl; std::cerr << " Size: " << m_nodes.size() << std::endl; std::cerr << " | "; for(typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { if (this != it->second->get_parent().get()) { std::cerr << "ERROR - " << this << " is not " << it->second->get_parent().get() << " "; } std::cerr << "( " << ggl::get(it->first) << " , " << ggl::get(it->first) << " ) x "; std::cerr << "( " << ggl::get(it->first) << " , " << ggl::get(it->first) << " )"; std::cerr << " | "; } std::cerr << std::endl; std::cerr << " --< Node --------" << std::endl; // print child nodes std::cerr << " Children: " << std::endl; for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it) { it->second->print(); } } private: /// parent node node_pointer m_parent; /// level of this node // TODO: mloskot - Why not std::size_t or node_map::size_type, same with member functions? unsigned int m_level; /// child nodes node_map m_nodes; }; }} // namespace ggl::index #endif // GGL_EXTENSIONS_INDEX_RTREE_RTREE_NODE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/io/000077500000000000000000000000001177067165300232045ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/io/svg/000077500000000000000000000000001177067165300240035ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/io/svg/write_svg.hpp000066400000000000000000000163171177067165300265350ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_SVG_WRITE_SVG_HPP #define GGL_IO_SVG_WRITE_SVG_HPP #include #include #include #include #include #include #include #include #include /*! \defgroup svg x Extension svg: Stream SVG (Scalable Vector Graphics) */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace svg { template struct svg_point { template static inline void apply(std::basic_ostream& os, Point const& p, std::string const& style, int size) { os << ""; } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; template struct svg_box { template static inline void apply(std::basic_ostream& os, Box const& box, std::string const& style, int size) { int x = ggl::get(box); int y = ggl::get(box); int width = std::abs(ggl::get(box) - x); int height = std::abs(ggl::get(box) - y); os << ""; } private: typedef typename ggl::point_type::type point_type; BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; /*! \brief Stream ranges as SVG \note policy is used to select type (polyline/polygon) */ template struct svg_range { template static inline void apply(std::basic_ostream& os, Range const& range, std::string const& style, int size) { typedef typename boost::range_const_iterator::type iterator; bool first = true; os << "<" << Policy::prefix() << " points=\""; for (iterator it = boost::begin(range); it != boost::end(range); ++it, first = false) { os << (first ? "" : " " ) << it->x() << "," << it->y(); } os << "\" style=\"" << style << Policy::style() << "\"/>"; } private: typedef typename boost::range_value::type point; BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; template struct svg_poly { template static inline void apply(std::basic_ostream& os, Polygon const& polygon, std::string const& style, int size) { typedef typename ggl::ring_type::type ring_type; typedef typename boost::range_const_iterator::type iterator_type; bool first = true; os << "x() << "," << it->y(); } // Inner rings: { typedef typename boost::range_const_iterator < typename ggl::interior_type::type >::type ring_iterator_type; for (ring_iterator_type rit = boost::begin(interior_rings(polygon)); rit != boost::end(interior_rings(polygon)); ++rit) { first = true; for (iterator_type it = boost::begin(*rit); it != boost::end(*rit); ++it, first = false) { os << (first ? "M" : " L") << " " << it->x() << "," << it->y(); } } } os << " z \" style=\"" << style << "\"/>"; } private: BOOST_CONCEPT_ASSERT ( (concept::ConstPoint::type>) ); }; struct prefix_linestring { static inline const char* prefix() { return "polyline"; } static inline const char* style() { return ";fill:none"; } }; struct prefix_ring { static inline const char* prefix() { return "polygon"; } static inline const char* style() { return ""; } }; }} // namespace detail::svg #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { /*! \brief Dispatching base struct for SVG streaming, specialized below per geometry type \details Specializations should implement a static method "stream" to stream a geometry The static method should have the signature: template static inline void apply(std::basic_ostream& os, const G& geometry) */ template struct svg {}; template struct svg : detail::svg::svg_point {}; template struct svg : detail::svg::svg_box {}; template struct svg : detail::svg::svg_range {}; template struct svg : detail::svg::svg_range {}; template struct svg : detail::svg::svg_poly {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Generic geometry template manipulator class, takes corresponding output class from traits class \ingroup svg \details Stream manipulator, streams geometry classes as Virtual Earth shape */ template class svg_manipulator { public: inline svg_manipulator(G const& g, std::string const& style, int size) : m_geometry(g) , m_style(style) , m_size(size) {} template inline friend std::basic_ostream& operator<<( std::basic_ostream& os, svg_manipulator const& m) { dispatch::svg < typename tag::type, G >::apply(os, m.m_geometry, m.m_style, m.m_size); os.flush(); return os; } private: G const& m_geometry; std::string const& m_style; int m_size; }; /*! \brief Main svg function to stream geometries as SVG \ingroup svg */ template inline svg_manipulator svg(Geometry const& t, std::string const& style, int size = -1) { return svg_manipulator(t, style, size); } } // namespace ggl #endif // GGL_IO_SVG_WRITE_SVG_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/extensions/io/svg/write_svg_multi.hpp000066400000000000000000000030711177067165300277400ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_IO_SVG_WRITE_SVG_MULTI_HPP #define GGL_IO_SVG_WRITE_SVG_MULTI_HPP #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace svg { template struct svg_multi { template static inline void apply(std::basic_ostream& os, MultiGeometry const& multi, std::string const& style, int size) { for (typename boost::range_const_iterator::type it = boost::begin(multi); it != boost::end(multi); ++it) { Policy::apply(os, *it, style, size); } } }; }} // namespace detail::svg #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct svg : detail::svg::svg_multi < MultiPolygon, detail::svg::svg_poly < typename boost::range_value::type > > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_IO_SVG_WRITE_SVG_MULTI_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/000077500000000000000000000000001177067165300225415ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/000077500000000000000000000000001177067165300241435ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/boost_array_as_linestring.hpp000066400000000000000000000015701177067165300321240ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_BOOST_ARRAY_AS_LINESTRING_HPP #define GGL_ADAPTED_BOOST_ARRAY_AS_LINESTRING_HPP #ifdef _GEOMETRY_ADAPTED_BOOST_ARRAY_RANGE_TAG_DEFINED #error Include only one headerfile to register tag for adapted boost::array #endif #define GGL_ADAPTED_BOOST_ARRAY_RANGE_TAG_DEFINED #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag< boost::array > { typedef linestring_tag type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/boost_array_as_ring.hpp000066400000000000000000000015461177067165300307100ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_BOOST_ARRAY_AS_RING_HPP #define GGL_ADAPTED_BOOST_ARRAY_AS_RING_HPP #ifdef _GEOMETRY_ADAPTED_BOOST_ARRAY_RANGE_TAG_DEFINED #error Include only one headerfile to register tag for adapted boost::array #endif #define GGL_ADAPTED_BOOST_ARRAY_RANGE_TAG_DEFINED #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag< boost::array > { typedef ring_tag type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/c_array.hpp000066400000000000000000000040271177067165300262770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_ADAPTED_C_ARRAY_HPP #define GGL_GEOMETRIES_ADAPTED_C_ARRAY_HPP #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { #ifndef DOXYGEN_NO_DETAIL namespace detail { // Create class and specialization to indicate the tag // for normal cases and the case that the type of the c-array is arithmetic template struct c_array_tag { typedef geometry_not_recognized_tag type; }; template <> struct c_array_tag { typedef point_tag type; }; } // namespace detail #endif // DOXYGEN_NO_DETAIL // Assign the point-tag, preventing arrays of points getting a point-tag template struct tag : detail::c_array_tag::value> {}; template struct coordinate_type { typedef T type; }; template struct dimension: boost::mpl::int_ {}; template struct access { template static inline T get(const T p[N]) { return p[I]; } template static inline void set(T p[N], const T& value) { p[I] = value; } }; // The library user has // 1) either to specify the coordinate system // 2) or include where @=cartesian,geographic,... } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_ADAPTED_C_ARRAY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/c_array_cartesian.hpp000066400000000000000000000016041177067165300303260ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_C_ARRAY_CARTESIAN_HPP #define GGL_ADAPTED_C_ARRAY_CARTESIAN_HPP #ifdef _GEOMETRY_ADAPTED_C_ARRAY_COORDINATE_SYSTEM_DEFINED #error Include only one headerfile to register coordinate coordinate_system for adapted c array #endif #define GGL_ADAPTED_C_ARRAY_COORDINATE_SYSTEM_DEFINED #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct coordinate_system { typedef cs::cartesian type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/c_array_geographic.hpp000066400000000000000000000016051177067165300304660ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_C_ARRAY_GEOGRAPHIC_HPP #define GGL_ADAPTED_C_ARRAY_GEOGRAPHIC_HPP #ifdef _GEOMETRY_ADAPTED_C_ARRAY_COORDINATE_SYSTEM_DEFINED #error Include only one headerfile to register coordinate coordinate_system for adapted c array #endif #define GGL_ADAPTED_C_ARRAY_COORDINATE_SYSTEM_DEFINED #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct coordinate_system { typedef cs::geographic type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/std_as_linestring.hpp000066400000000000000000000031371177067165300303730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_STD_AS_LINESTRING_HPP #define GGL_ADAPTED_STD_AS_LINESTRING_HPP #ifdef _GEOMETRY_ADAPTED_STD_RANGE_TAG_DEFINED #error Include only one headerfile to register tag for adapted std:: containers or iterator pair #endif #define GGL_ADAPTED_STD_RANGE_TAG_DEFINED #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace util { struct std_as_linestring { typedef linestring_tag type; }; } #endif #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { // specialization for an iterator pair (read only) template struct tag< std::pair > : util::std_as_linestring {}; // Indicate that std::library is not used to add things to std::pair. // Don't implement anything else -> adding points or clearing not possible template struct use_std< std::pair > : boost::mpl::false_ {}; // specializations for a std:: containers: vector, deque, list template struct tag< std::vector

> : util::std_as_linestring {}; template struct tag< std::deque

> : util::std_as_linestring {}; template struct tag< std::list

> : util::std_as_linestring {}; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/std_as_ring.hpp000066400000000000000000000023071177067165300271520ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_STD_AS_RING_HPP #define GGL_ADAPTED_STD_AS_RING_HPP #ifdef _GEOMETRY_ADAPTED_STD_RANGE_TAG_DEFINED #error Include only one headerfile to register tag for adapted std:: containers or iterator pair #endif #define GGL_ADAPTED_STD_RANGE_TAG_DEFINED #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { // specialization for an iterator pair template struct tag< std::pair > { typedef ring_tag type; }; // specialization for a std:: containers: vector, deque, list template struct tag< std::vector > { typedef ring_tag type; }; template struct tag< std::deque > { typedef ring_tag type; }; template struct tag< std::list > { typedef ring_tag type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/tuple.hpp000066400000000000000000000042301177067165300260040ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_ADAPTED_TUPLE_HPP #define GGL_GEOMETRIES_ADAPTED_TUPLE_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { // boost::tuple, 2D template struct coordinate_type > { typedef T type; }; template struct dimension > : boost::mpl::int_<2> {}; template struct access > { template static inline T get(const boost::tuple& p) { return p.get(); } template static inline void set(boost::tuple& p, const T& value) { p.get() = value; } }; template struct tag > { typedef point_tag type; }; // boost::tuple, 3D template struct coordinate_type > { typedef T type; }; template struct dimension > : boost::mpl::int_<3> {}; template struct access > { template static inline T get(const boost::tuple& p) { return p.get(); } template static inline void set(boost::tuple& p, const T& value) { p.get() = value; } }; template struct tag > { typedef point_tag type; }; // The library user has // 1) either to specify the coordinate system using a traits class // 2) or include where @=cartesian,geographic,... } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_ADAPTED_TUPLE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/tuple_cartesian.hpp000066400000000000000000000017651177067165300300470ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_TUPLE_CARTESIAN_HPP #define GGL_ADAPTED_TUPLE_CARTESIAN_HPP #ifdef _GEOMETRY_ADAPTED_TUPLE_COORDINATE_SYSTEM_DEFINED #error Include only one headerfile to register coordinate coordinate_system for adapted tuple #endif #define GGL_ADAPTED_TUPLE_COORDINATE_SYSTEM_DEFINED #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct coordinate_system > { typedef cs::cartesian type; }; template struct coordinate_system > { typedef cs::cartesian type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/adapted/tuple_geographic.hpp000066400000000000000000000020111177067165300301670ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ADAPTED_TUPLE_GEOGRAPHIC_HPP #define GGL_ADAPTED_TUPLE_GEOGRAPHIC_HPP #ifdef _GEOMETRY_ADAPTED_TUPLE_COORDINATE_SYSTEM_DEFINED #error Include only one headerfile to register coordinate coordinate_system for adapted tuple #endif #define GGL_ADAPTED_TUPLE_COORDINATE_SYSTEM_DEFINED #include namespace ggl { #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct coordinate_system > { typedef cs::geographic type; }; template struct coordinate_system > { typedef cs::geographic type; }; } #endif } #endif merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/box.hpp000066400000000000000000000054711177067165300240510ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_BOX_HPP #define GGL_GEOMETRIES_BOX_HPP #include #include #include #include namespace ggl { /*! \brief Class box: defines a box made of two describing points \ingroup Geometry \details Box is always described by a min_corner() and a max_corner() point. If another rectangle is used, use linear_ring or polygon. \note Boxes are for selections and for calculating the envelope of geometries. Not all algorithms are implemented for box. Boxes are also used in Spatial Indexes. \tparam P point type. The box takes a point type as template parameter. The point type can be any point type. It can be 2D but can also be 3D or more dimensional. The box can also take a latlong point type as template parameter. */ template class box { BOOST_CONCEPT_ASSERT( (concept::Point

) ); public: inline box() {} /*! \brief Constructor taking the minimum corner point and the maximum corner point */ inline box(P const& min_corner, P const& max_corner) { copy_coordinates(min_corner, m_min_corner); copy_coordinates(max_corner, m_max_corner); } inline P const& min_corner() const { return m_min_corner; } inline P const& max_corner() const { return m_max_corner; } inline P& min_corner() { return m_min_corner; } inline P& max_corner() { return m_max_corner; } private: P m_min_corner; P m_max_corner; }; // Traits specializations for box above #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag< box

> { typedef box_tag type; }; template struct point_type > { typedef P type; }; template struct indexed_access, C, D> { typedef box

box_type; static inline typename ggl::coordinate_type::type get(box_type const& b) { return (C == min_corner ? ggl::get(b.min_corner()) : ggl::get(b.max_corner())); } static inline void set(box_type& b, typename ggl::coordinate_type::type const& value) { if (C == min_corner) { ggl::set(b.min_corner(), value); } else { ggl::set(b.max_corner(), value); } } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_BOX_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/cartesian2d.hpp000066400000000000000000000015631177067165300254560ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_CARTESIAN2D_HPP #define GGL_GEOMETRIES_CARTESIAN2D_HPP // Predeclare common Cartesian 2D points for convenience #include namespace ggl { typedef point_xy point_2d; typedef linestring linestring_2d; typedef linear_ring ring_2d; typedef polygon polygon_2d; typedef box box_2d; typedef segment segment_2d; typedef nsphere circle; } // namespace ggl #endif // GGL_GEOMETRIES_CARTESIAN2D_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/cartesian3d.hpp000066400000000000000000000014331177067165300254530ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_CARTESIAN3D_HPP #define GGL_CARTESIAN3D_HPP // Predeclare common Cartesian 3D points for convenience #include namespace ggl { typedef point point_3d; typedef linestring linestring_3d; typedef linear_ring ring_3d; typedef polygon polygon_3d; typedef box box_3d; typedef nsphere sphere; } #endif // GGL_CARTESIAN3D_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/geometries.hpp000066400000000000000000000014731177067165300254220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_HPP #define GGL_GEOMETRIES_HPP #include #include #include #include #include #include #include #include #include #include #endif // GGL_GEOMETRIES_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/linear_ring.hpp000066400000000000000000000027301177067165300255450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_LINEAR_RING_HPP #define GGL_GEOMETRIES_LINEAR_RING_HPP #include #include #include #include #include #include namespace ggl { /*! \brief A linear_ring (linear linear_ring) is a closed line which should not be selfintersecting \ingroup Geometry \tparam P point type \tparam V optional container type, for example std::vector, std::list, std::deque \tparam A optional container-allocator-type */ template < typename P, template class V = std::vector, template class A = std::allocator > class linear_ring : public V > { BOOST_CONCEPT_ASSERT( (concept::Point

) ); }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template < typename P, template class V, template class A > struct tag< linear_ring > { typedef ring_tag type; }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_LINEAR_RING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/linestring.hpp000066400000000000000000000033671177067165300254410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_LINESTRING_HPP #define GGL_GEOMETRIES_LINESTRING_HPP #include #include #include #include #include #include #include namespace ggl { /*! \brief A linestring (named so by OGC) is a collection (default a vector) of points. \ingroup Geometry \tparam P point type \tparam V optional container type, for example std::vector, std::list, std::deque \tparam A optional container-allocator-type (see http://accu.org/index.php/journals/427#ftn.d0e249 ) \par Concepts: All algorithms work on ranges, based on a container with point types fulfilling the point concepts. They will take linestring, but also vector, std::pair, or other containers. */ template < typename P, template class V = std::vector, template class A = std::allocator > class linestring : public V > { BOOST_CONCEPT_ASSERT( (concept::Point

) ); }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template < typename P, template class V, template class A > struct tag > { typedef linestring_tag type; }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_LINESTRING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/nsphere.hpp000066400000000000000000000063571177067165300247310ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_NSPHERE_HPP #define GGL_GEOMETRIES_NSPHERE_HPP #include #include #include #include #include namespace ggl { /*! \brief Class nsphere: defines a circle or a sphere: a point with radius \ingroup Geometry \details The name nsphere is quite funny but the best description of the class. It can be a circle (2D), a sphere (3D), or higher (hypersphere) or lower. According to Wikipedia this name is the most appropriate. It was mentioned on the Boost list. An alternative is the more fancy name "sphercle" but that might be a bit too much an invention. \note Circle is currently used for selections, for example polygon_in_circle. Currently not all algorithms are implemented for n-spheres. \tparam P point type of the center \tparam T number type of the radius */ template class nsphere { BOOST_CONCEPT_ASSERT( (concept::Point

) ); public: typedef T radius_type; typedef typename coordinate_type

::type coordinate_type; nsphere() : m_radius(0) { detail::assign::assign_value(m_center, coordinate_type()); } nsphere(P const& center, T const& radius) : m_radius(radius) { copy_coordinates(center, m_center); } inline P const& center() const { return m_center; } inline T const& radius() const { return m_radius; } inline void radius(T const& r) { m_radius = r; } inline P& center() { return m_center; } private: P m_center; T m_radius; }; // Traits specializations for n-sphere above #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag< nsphere > { typedef nsphere_tag type; }; template struct point_type > { typedef P type; }; template struct radius_type > { typedef T type; }; template struct access > { typedef nsphere nsphere_type; template static inline typename ggl::coordinate_type::type get(nsphere_type const& s) { return ggl::get(s.center()); } template static inline void set(nsphere_type& s, typename ggl::coordinate_type::type const& value) { ggl::set(s.center(), value); } }; template struct radius_access, T, 0> { typedef nsphere nsphere_type; static inline T get(nsphere_type const& s) { return s.radius(); } static inline void set(nsphere_type& s, T const& value) { s.radius(value); } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_NSPHERE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/point.hpp000066400000000000000000000055631177067165300244140ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_POINT_HPP #define GGL_GEOMETRIES_POINT_HPP #include #include #include #include #include #include #include #include namespace ggl { /*! \brief Basic point class, having coordinates defined in a neutral way \ingroup Geometry \tparam T numeric type, for example double, float, int \tparam D coordinate dimension as number of coordinates, for example 2 \tparam C coordinate system, for example cs::cartesian */ template class point { public: // Concept typedefs and members typedef T coordinate_type; typedef C coordinate_system; static const std::size_t coordinate_count = D; /// Default constructor, no initialization at all inline point() {} /// Constructs with one, or optionally two or three values inline point(T const& v0, T const& v1 = 0, T const& v2 = 0) { if (D >= 1) m_values[0] = v0; if (D >= 2) m_values[1] = v1; if (D >= 3) m_values[2] = v2; } /// Compile time access to coordinate values template inline T const& get() const { BOOST_STATIC_ASSERT(K < D); return m_values[K]; } template inline void set(T value) { BOOST_STATIC_ASSERT(K < D); m_values[K] = value; } private: T m_values[D]; }; // Adapt the point to the concept #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag > { typedef point_tag type; }; template struct coordinate_type > { typedef T type; }; template struct coordinate_system > { typedef C type; }; template struct dimension > : boost::mpl::int_ {}; template struct access > { template static inline T get(point const& p) { return p.template get(); } template static inline void set(point& p, T const& value) { p.template set(value); } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_POINT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/point_xy.hpp000066400000000000000000000046771177067165300251410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_POINT_XY_HPP #define GGL_GEOMETRIES_POINT_XY_HPP #include #include #include #include namespace ggl { /*! \brief 2D point in Cartesian coordinate system \ingroup Geometry \tparam T numeric type, arguments can be, for example, double, float, int */ template class point_xy : public point { public: /// Default constructor, does not initialize anything inline point_xy() : point() {} /// Constructor with x/y values inline point_xy(T const& x, T const& y) : point(x, y) {} /// Get x-value inline T const& x() const { return this->template get<0>(); } /// Get y-value inline T const& y() const { return this->template get<1>(); } /// Set x-value inline void x(T const& v) { this->template set<0>(v); } /// Set y-value inline void y(T const& v) { this->template set<1>(v); } /// Compare two points inline bool operator<(point_xy const& other) const { return math::equals(x(), other.x()) ? y() < other.y() : x() < other.x(); } }; // Adapt the point_xy to the concept #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag > { typedef point_tag type; }; template struct coordinate_type > { typedef T type; }; template struct coordinate_system > { typedef C type; }; template struct dimension > : boost::mpl::int_<2> {}; template struct access > { template static inline T get(point_xy const& p) { return p.template get(); } template static inline void set(point_xy& p, T const& value) { p.template set(value); } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_POINT_XY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/polygon.hpp000066400000000000000000000116541177067165300247500ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_POLYGON_HPP #define GGL_GEOMETRIES_POLYGON_HPP #include #include #include #include #include #include #include #include #include namespace ggl { /*! \brief The \b polygon contains an outer ring and zero or more inner rings. \ingroup Geometry \tparam P point type \tparam PointList optional container type for points, for example std::vector, std::list, std::deque \tparam RingList optional container type for inner rings, for example std::vector, std::list, std::deque \tparam PointAlloc container-allocator-type \tparam RingAlloc container-allocator-type \note The container collecting the points in the rings can be different from the container collecting the inner rings. They all default to vector. */ template < typename Point, template class PointList = std::vector, template class RingList = std::vector, template class PointAlloc = std::allocator, template class RingAlloc = std::allocator > class polygon { BOOST_CONCEPT_ASSERT( (concept::Point) ); public: // Member types typedef Point point_type; typedef linear_ring ring_type; typedef RingList > inner_container_type; inline ring_type const& outer() const { return m_outer; } inline inner_container_type const& inners() const { return m_inners; } inline ring_type& outer() { return m_outer; } inline inner_container_type & inners() { return m_inners; } /// Utility method, clears outer and inner rings inline void clear() { m_outer.clear(); m_inners.clear(); } private: ring_type m_outer; inner_container_type m_inners; }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template < typename Point, template class PointList, template class RingList, template class PointAlloc, template class RingAlloc > struct tag > { typedef polygon_tag type; }; template < typename Point, template class PointList, template class RingList, template class PointAlloc, template class RingAlloc > struct ring_type > { typedef typename polygon < Point, PointList, RingList, PointAlloc, RingAlloc >::ring_type type; }; template < typename Point, template class PointList, template class RingList, template class PointAlloc, template class RingAlloc > struct interior_type< polygon > { typedef typename polygon < Point, PointList, RingList, PointAlloc, RingAlloc >::inner_container_type type; }; template < typename Point, template class PointList, template class RingList, template class PointAlloc, template class RingAlloc > struct exterior_ring< polygon > { typedef polygon polygon_type; static inline typename polygon_type::ring_type& get(polygon_type& p) { return p.outer(); } static inline typename polygon_type::ring_type const & get(polygon_type const& p) { return p.outer(); } }; template < typename Point, template class PointList, template class RingList, template class PointAlloc, template class RingAlloc > struct interior_rings< polygon > { typedef polygon polygon_type; static inline typename polygon_type::inner_container_type& get( polygon_type& p) { return p.inners(); } static inline typename polygon_type::inner_container_type const& get( polygon_type const& p) { return p.inners(); } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_POLYGON_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/000077500000000000000000000000001177067165300243655ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/box.hpp000066400000000000000000000073531177067165300256760ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_REGISTER_BOX_HPP #define GGL_GEOMETRIES_REGISTER_BOX_HPP #ifndef DOXYGEN_NO_SPECIALIZATIONS // box based on point #define GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS(Box, Point, MinCorner, MaxCorner) \ template \ struct indexed_access \ { \ static inline typename coordinate_type::type get(const Box& b) \ { \ return C == min_corner ? ggl::get(b. MinCorner) : ggl::get(b. MaxCorner); \ } \ static inline void set(Box& b, const typename coordinate_type::type& value) \ { \ if (C == min_corner) ggl::set(b. MinCorner, value); else ggl::set(b. MaxCorner, value); \ } \ }; #define GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS_TEMPLATIZED(Box, MinCorner, MaxCorner) \ template \ struct indexed_access, C, D> \ { \ static inline typename coordinate_type

::type get(const Box

& b) \ { \ return C == min_corner ? ggl::get(b. MinCorner) : ggl::get(b. MaxCorner); \ } \ static inline void set(Box

& b, const typename coordinate_type

::type& value) \ { \ if (C == min_corner) ggl::set(b. MinCorner, value); else ggl::set(b. MaxCorner, value); \ } \ }; #define GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS_4VALUES(Box, Point, Left, Bottom, Right, Top) \ template \ struct indexed_access \ { \ static inline typename coordinate_type::type get(const Box& b) \ { \ return C == min_corner && D == 0 ? b. Left \ : C == min_corner && D == 1 ? b. Bottom \ : C == max_corner && D == 0 ? b. Right \ : C == max_corner && D == 1 ? b. Top \ : 0; \ } \ static inline void set(Box& b, const typename coordinate_type::type& value) \ { \ if (C == min_corner && D == 0) b. Left = value; \ else if (C == min_corner && D == 1) b. Bottom = value; \ else if (C == max_corner && D == 0) b. Right = value; \ else if (C == max_corner && D == 1) b. Top = value; \ } \ }; #define GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS(Box, PointType) \ template<> struct tag { typedef box_tag type; }; \ template<> struct point_type { typedef PointType type; }; #define GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS_TEMPLATIZED(Box) \ template struct tag > { typedef box_tag type; }; \ template struct point_type > { typedef P type; }; #endif // DOXYGEN_NO_SPECIALIZATIONS #define GEOMETRY_REGISTER_BOX(Box, PointType, MinCorner, MaxCorner) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS(Box, PointType) \ GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS(Box, PointType, MinCorner, MaxCorner) \ }} #define GEOMETRY_REGISTER_BOX_TEMPLATIZED(Box, MinCorner, MaxCorner) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS_TEMPLATIZED(Box) \ GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS_TEMPLATIZED(Box, MinCorner, MaxCorner) \ }} #define GEOMETRY_REGISTER_BOX_2D_4VALUES(Box, PointType, Left, Bottom, Right, Top) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_BOX_TRAITS(Box, PointType) \ GEOMETRY_DETAIL_SPECIALIZE_BOX_ACCESS_4VALUES(Box, PointType, Left, Bottom, Right, Top) \ }} // CONST versions are for boxes probably not that common. Leave this for the moment. #endif // GGL_GEOMETRIES_REGISTER_BOX_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/linestring.hpp000066400000000000000000000013161177067165300272550ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_REGISTER_LINESTRING_HPP #define GGL_GEOMETRIES_REGISTER_LINESTRING_HPP #include #include #define GEOMETRY_REGISTER_LINESTRING(Linestring) \ namespace ggl { namespace traits { \ template<> struct tag { typedef linestring_tag type; }; \ }} #endif // GGL_GEOMETRIES_REGISTER_LINESTRING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/point.hpp000066400000000000000000000163621177067165300262370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_REGISTER_POINT_HPP #define GGL_GEOMETRIES_REGISTER_POINT_HPP // This file implements a "macro party", nevertheless very useful for registration of custom geometry types #ifndef DOXYGEN_NO_SPECIALIZATIONS // Starting point, specialize basic traits necessary to register a point // (the 'accessor' is technically not specialization but definition, specialized in another macro) #define GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, Dim, CoordinateType, CoordinateSystem) \ template<> struct tag { typedef point_tag type; }; \ template<> struct dimension : boost::mpl::int_ {}; \ template<> struct coordinate_type { typedef CoordinateType type; }; \ template<> struct coordinate_system { typedef CoordinateSystem type; }; \ template struct Point##accessor {}; // Non Const version #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, CoordinateType) \ template<> struct access { \ template \ static inline CoordinateType get(const Point& p) { return Point##accessor::get(p); } \ template \ static inline void set(Point& p, const CoordinateType& value) { Point##accessor::set(p, value); } \ }; // Const version #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, CoordinateType) \ template<> struct access { \ template \ static inline CoordinateType get(const Point& p) { return Point##accessor::get(p); } \ }; // Specialize the point-specific-accessor class, declared below, per dimension #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR(Point, Dim, CoordinateType, Get, Set) \ template<> struct Point##accessor< Dim > \ { \ static inline CoordinateType get(const Point& p) { return p. Get; } \ static inline void set(Point& p, const CoordinateType& value) { p. Set = value; } \ }; // Const version #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_CONST(Point, Dim, CoordinateType, Get) \ template<> struct Point##accessor< Dim > \ { \ static inline CoordinateType get(const Point& p) { return p. Get; } \ }; // Get/set version #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_GET_SET(Point, Dim, CoordinateType, Get, Set) \ template<> struct Point##accessor< Dim > \ { \ static inline CoordinateType get(const Point& p) { return p. Get (); } \ static inline void set(Point& p, const CoordinateType& value) { p. Set ( value ); } \ }; #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_2D(Point, CoordinateType, Get0, Get1, Set0, Set1) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR(Point, 0, CoordinateType, Get0, Set0) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR(Point, 1, CoordinateType, Get1, Set1) #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_3D(Point, CoordinateType, Get0, Get1, Get2, Set0, Set1, Set2) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR(Point, 0, CoordinateType, Get0, Set0) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR(Point, 1, CoordinateType, Get1, Set1) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR(Point, 2, CoordinateType, Get2, Set2) // Const versions #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST_2D(Point, CoordinateType, Get0, Get1) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_CONST(Point, 0, CoordinateType, Get0) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_CONST(Point, 1, CoordinateType, Get1) #define GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST_3D(Point, CoordinateType, Get0, Get1, Get2) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_CONST(Point, 0, CoordinateType, Get0) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_CONST(Point, 1, CoordinateType, Get1) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_CONST(Point, 2, CoordinateType, Get2) #endif // DOXYGEN_NO_SPECIALIZATIONS // Library user macro to register a custom 2D point #define GEOMETRY_REGISTER_POINT_2D(Point, CoordinateType, CoordinateSystem, Field0, Field1) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 2, CoordinateType, CoordinateSystem) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, CoordinateType) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_2D(Point, CoordinateType, Field0, Field1, Field0, Field1) \ }} // Library user macro to register a custom 3D point #define GEOMETRY_REGISTER_POINT_3D(Point, CoordinateType, CoordinateSystem, Field0, Field1, Field2) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 3, CoordinateType, CoordinateSystem) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, CoordinateType) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_3D(Point, CoordinateType, Field0, Field1, Field2, Field0, Field1, Field2) \ }} // Library user macro to register a custom 2D point (CONST version) #define GEOMETRY_REGISTER_POINT_2D_CONST(Point, CoordinateType, CoordinateSystem, Field0, Field1) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 2, CoordinateType, CoordinateSystem) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, CoordinateType) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST_2D(Point, CoordinateType, Field0, Field1) \ }} // Library user macro to register a custom 3D point (CONST version) #define GEOMETRY_REGISTER_POINT_3D_CONST(Point, CoordinateType, CoordinateSystem, Field0, Field1, Field2) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 3, CoordinateType, CoordinateSystem) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST(Point, CoordinateType) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS_CONST_3D(Point, CoordinateType, Field0, Field1, Field2) \ }} // Library user macro to register a custom 2D point (having separate get/set methods) #define GEOMETRY_REGISTER_POINT_2D_GET_SET(Point, CoordinateType, CoordinateSystem, Get0, Get1, Set0, Set1) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 2, CoordinateType, CoordinateSystem) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, CoordinateType) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_GET_SET(Point, 0, CoordinateType, Get0, Set0) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_GET_SET(Point, 1, CoordinateType, Get1, Set1) \ }} // Library user macro to register a custom 3D point (having separate get/set methods) #define GEOMETRY_REGISTER_POINT_3D_GET_SET(Point, CoordinateType, CoordinateSystem, Get0, Get1, Get2, Set0, Set1, Set2) \ namespace ggl { namespace traits { \ GEOMETRY_DETAIL_SPECIALIZE_POINT_TRAITS(Point, 3, CoordinateType, CoordinateSystem) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESS(Point, CoordinateType) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_GET_SET(Point, 0, CoordinateType, Get0, Set0) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_GET_SET(Point, 1, CoordinateType, Get1, Set1) \ GEOMETRY_DETAIL_SPECIALIZE_POINT_ACCESSOR_GET_SET(Point, 2, CoordinateType, Get2, Set2) \ }} #endif // GGL_GEOMETRIES_REGISTER_POINT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/register_box.hpp000066400000000000000000000015761177067165300276030ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_REGISTER_REGISTER_BOX_HPP #define GGL_GEOMETRIES_REGISTER_REGISTER_BOX_HPP #include #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: This header is deprecated. Please use: ggl/geometries/register/box.hpp") #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) # warning "This header is deprecated. Please use: ggl/geometries/register/box.hpp") #endif #endif // GGL_GEOMETRIES_REGISTER_REGISTER_BOX_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/register_point.hpp000066400000000000000000000016121177067165300301330ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_REGISTER_REGISTER_POINT_HPP #define GGL_GEOMETRIES_REGISTER_REGISTER_POINT_HPP #include #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) # pragma message ("Warning: This header is deprecated. Please use: ggl/geometries/register/point.hpp") #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) # warning "This header is deprecated. Please use: ggl/geometries/register/point.hpp") #endif #endif // GGL_GEOMETRIES_REGISTER_REGISTER_POINT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/register/ring.hpp000066400000000000000000000015141177067165300260360ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_REGISTER_RING_HPP #define GGL_GEOMETRIES_REGISTER_RING_HPP #include #include #define GEOMETRY_REGISTER_RING(Ring) \ namespace ggl { namespace traits { \ template<> struct tag { typedef ring_tag type; }; \ }} #define GEOMETRY_REGISTER_RING_TEMPLATIZED(Ring) \ namespace ggl { namespace traits { \ template struct tag< Ring

> { typedef ring_tag type; }; \ }} #endif // GGL_GEOMETRIES_REGISTER_RING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/geometries/segment.hpp000066400000000000000000000050041177067165300247130ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRIES_SEGMENT_HPP #define GGL_GEOMETRIES_SEGMENT_HPP #include #include #include #include #include namespace ggl { /*! \brief Class segment: small containing two (templatized) point references \ingroup Geometry \details From Wikipedia: In geometry, a line segment is a part of a line that is bounded by two distinct end points, and contains every point on the line between its end points. \note The structure is like std::pair, and can often be used interchangeable. So points are public available. We cannot derive from std::pair because of reference assignments. Points are not const and might be changed by the algorithm (used in intersection_linestring). \tparam P point type of the segment */ template struct segment { private: BOOST_CONCEPT_ASSERT( (typename boost::mpl::if_ < boost::is_const

, concept::ConstPoint

, concept::Point

> ) ); public: typedef P point_type; P& first; P& second; inline segment(P& p1, P& p2) : first(p1), second(p2) {} }; // Traits specializations for segment above #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template struct tag< segment

> { typedef segment_tag type; }; template struct point_type > { typedef P type; }; template struct indexed_access, I, D> { typedef segment

segment_type; typedef typename ggl::coordinate_type::type coordinate_type; static inline coordinate_type get(segment_type const& s) { return (I == 0 ? ggl::get(s.first) : ggl::get(s.second)); } static inline void set(segment_type& s, coordinate_type const& value) { if (I == 0) { ggl::set(s.first, value); } else { ggl::set(s.second, value); } } }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_GEOMETRIES_SEGMENT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/ggl.hpp000066400000000000000000000044571177067165300216720ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GGL_HPP #define GGL_GGL_HPP // Shortcut to include all header files #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif // GGL_GGL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/000077500000000000000000000000001177067165300224125ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/base.hpp000066400000000000000000000030561177067165300240410ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ITERATORS_BASE_HPP #define GGL_ITERATORS_BASE_HPP #include #include #include #ifndef DOXYGEN_NO_DETAIL namespace ggl { namespace detail { namespace iterators { template struct iterator_base : public boost::iterator_adaptor < T, Iterator, boost::use_default, typename boost::mpl::if_ < boost::is_convertible < typename boost::iterator_traversal::type, boost::random_access_traversal_tag >, boost::bidirectional_traversal_tag, boost::use_default >::type > { // Define operator cast to Iterator to be able to write things like Iterator it = myit++ inline operator Iterator() const { return this->base(); } /*inline bool operator==(const Iterator& other) const { return this->base() == other; } inline bool operator!=(const Iterator& other) const { return ! operator==(other); }*/ }; }}} // namespace ggl::detail::iterators #endif #endif // GGL_ITERATORS_BASE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/circular_iterator.hpp000066400000000000000000000043201177067165300266370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ITERATORS_CIRCULAR_ITERATOR_HPP #define GGL_ITERATORS_CIRCULAR_ITERATOR_HPP #include #include #include #include namespace ggl { /*! \brief Iterator which goes circular through a range, starting at a point, ending at that point \tparam Iterator iterator on which this class is based on \ingroup iterators */ template struct circular_iterator : public detail::iterators::iterator_base < circular_iterator, Iterator > { friend class boost::iterator_core_access; explicit inline circular_iterator(Iterator begin, Iterator end, Iterator start) : m_begin(begin) , m_end(end) , m_start(start) { this->base_reference() = start; } // Constructor to indicate the end of a range, to enable e.g. std::copy explicit inline circular_iterator(Iterator end) : m_begin(end) , m_end(end) , m_start(end) { this->base_reference() = end; } /// Navigate to a certain position, should be in [start .. end], it at end /// it will circle again. inline void moveto(Iterator it) { this->base_reference() = it; check_end(); } private: inline void increment() { if (this->base() != m_end) { (this->base_reference())++; check_end(); } } inline void check_end() { if (this->base() == this->m_end) { this->base_reference() = this->m_begin; } if (this->base() == m_start) { this->base_reference() = this->m_end; } } Iterator m_begin; Iterator m_end; Iterator m_start; }; } // namespace ggl #endif // GGL_ITERATORS_CIRCULAR_ITERATOR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/ever_circling_iterator.hpp000066400000000000000000000042711177067165300276530ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ITERATORS_EVER_CIRCLING_ITERATOR_HPP #define GGL_ITERATORS_EVER_CIRCLING_ITERATOR_HPP #include #include #include #include namespace ggl { /*! \brief Iterator which ever circles through a range \tparam Iterator iterator on which this class is based on \ingroup iterators \details If the iterator arrives at range.end() it restarts from the beginning. So it has to be stopped in another way. Don't call for(....; it++) because it will turn in an endless loop \note Name inspired on David Bowie's "Chant Of The Ever Circling Skeletal Family" */ template struct ever_circling_iterator : public detail::iterators::iterator_base < ever_circling_iterator, Iterator > { friend class boost::iterator_core_access; explicit inline ever_circling_iterator(Iterator begin, Iterator end) : m_begin(begin) , m_end(end) { this->base_reference() = begin; } explicit inline ever_circling_iterator(Iterator begin, Iterator end, Iterator start) : m_begin(begin) , m_end(end) { this->base_reference() = start; } /// Navigate to a certain position, should be in [start .. end], it at end /// it will circle again. inline void moveto(Iterator it) { this->base_reference() = it; check_end(); } private: inline void increment() { (this->base_reference())++; check_end(); } inline void check_end() { if (this->base() == this->m_end) { this->base_reference() = this->m_begin; } } Iterator m_begin; Iterator m_end; }; } // namespace ggl #endif // GGL_ITERATORS_EVER_CIRCLING_ITERATOR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/point_const_iterator.hpp000066400000000000000000000031471177067165300274000ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ITERATORS_POINT_CONST_ITERATOR_HPP #define GGL_ITERATORS_POINT_CONST_ITERATOR_HPP #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct point_const_iterator { // The default: meta-forward this to boost // This enables calling this function using std::vector as well, even if they // are not registered. // It also requires less specializations typedef typename boost::range_const_iterator::type type; }; template struct point_const_iterator { typedef typename boost::range_const_iterator < typename ring_type::type >::type type; }; } // namespace dispatch #endif /*! \brief Meta-function which defines point-const-iterator type \ingroup iterators */ template struct point_const_iterator { typedef typename boost::remove_const::type ncg; typedef typename dispatch::point_const_iterator< typename tag::type, ncg>::type type; }; } #endif // GGL_ITERATORS_POINT_CONST_ITERATOR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/section_iterators.hpp000066400000000000000000000150751177067165300266730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ITERATORS_SECTION_ITERATORS_HPP #define GGL_ITERATORS_SECTION_ITERATORS_HPP #include #include #include #include // FILE WILL BE SPLITTED namespace ggl { namespace detail { template inline bool exceeding(short int dir, const P& point, const B& box) { return (dir == 1 && get(point) > get<1, D>(box)) || (dir == -1 && get(point) < get<0, D>(box)); } template inline bool preceding(short int dir, const P& point, const B& box) { return (dir == 1 && get(point) < get<0, D>(box)) || (dir == -1 && get(point) > get<1, D>(box)); } } // Iterator walking through ring/sections, delivering only those points of the ring // which are inside the specified box (using the sections) template struct section_iterator : public detail::iterators::iterator_base< section_iterator, typename boost::range_const_iterator::type > { friend class boost::iterator_core_access; inline section_iterator(const G& ring, const S& sections, const B& box) : m_ring(ring) , m_sections(sections) , m_box(box) , m_section_iterator(boost::begin(m_sections)) { stay_within_box(); } private : inline void increment() { (this->base_reference())++; // If end or exceeding specified box, go to next section if (this->base() == m_end || detail::exceeding(m_section_iterator->directions[0], *this->base(), m_box)) { m_section_iterator++; stay_within_box(); } } // Check if iterator is still in box and if not, go to the next section and advance until it is in box void stay_within_box() { // Find section having overlap with specified box while (m_section_iterator != boost::end(m_sections) && ! overlaps(m_section_iterator->bounding_box, m_box)) { m_section_iterator++; } if (m_section_iterator != boost::end(m_sections)) { this->base_reference() = boost::begin(m_ring) + m_section_iterator->begin_index; m_end = boost::begin(m_ring) + m_section_iterator->end_index + 1; // While not yet at box, advance while(this->base() != m_end && detail::preceding(m_section_iterator->directions[0], *this->base(), m_box)) { ++(this->base_reference()); } if (this->base() == m_end) { // This should actually not occur because of bbox check, but to be sure m_section_iterator++; stay_within_box(); } } else { this->base_reference() = boost::end(m_ring); m_end = boost::end(m_ring); } } typedef typename boost::range_const_iterator::type IT; typedef typename boost::range_const_iterator::type SIT; const G& m_ring; const S& m_sections; const B& m_box; IT m_end; SIT m_section_iterator; }; // Iterator walking through ring/sections, delivering only those points of the ring // which are inside the specified box (using the sections) template struct one_section_segment_iterator : public detail::iterators::iterator_base< one_section_segment_iterator , typename boost::range_const_iterator::type> { friend class boost::iterator_core_access; typedef typename boost::range_const_iterator::type normal_iterator; inline one_section_segment_iterator(const G& ring, const SEC& section, const B& box) : m_box(&box) , m_dir(section.directions[0]) { init(section, ring); } inline one_section_segment_iterator(normal_iterator end) : m_section_end(end) , m_ring_end(end) , m_box(NULL) , m_dir(0) { this->base_reference() = end; } private : inline void increment() { m_previous = (this->base_reference())++; if (this->base() == m_section_end || detail::exceeding(m_dir, *m_previous, *m_box)) { this->base_reference() = m_ring_end; } } // Check if iterator is still in box and if not, go to the next section and advance until it is in box void init(const SEC& section, const G& ring) { //this->base_reference(); m_section_end = boost::begin(ring) + section.end_index + 1; m_ring_end = boost::end(ring); this->base_reference() = boost::begin(ring) + section.begin_index; /* Performance, TO BE CHECKED! normal_iterator next = boost::begin(ring) + section.begin_index; if (next != m_section_end && next != m_ring_end) { // While (not end and) not yet at box, advance normal_iterator it = next++; while(next != m_section_end && next != m_ring_end && detail::preceding(m_dir, *next, *m_box)) { it = next++; } if (it == m_section_end) { this->base_reference() = m_ring_end; } else { this->base_reference() = it; } } else { this->base_reference() = m_ring_end; } */ m_previous = this->base(); } const B* m_box; short int m_dir; normal_iterator m_previous; normal_iterator m_section_end; normal_iterator m_ring_end; }; } // namespace ggl #endif // GGL_ITERATORS_SECTION_ITERATORS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/iterators/segment_iterator.hpp000066400000000000000000000063701177067165300265040ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Copyright Mateusz Loskot 2009, mateusz@loskot.net // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ITERATORS_SEGMENT_ITERATOR_HPP #define GGL_ITERATORS_SEGMENT_ITERATOR_HPP // TODO: This is very experimental version of input iterator // reading collection of points as segments - proof of concept. // --mloskot // TODO: Move to boost::iterator_adaptor #include #include #include #include #include #include #include namespace ggl { template struct segment_iterator { typedef Base base_type; typedef Point point_type; typedef typename ggl::segment segment_type; typedef std::input_iterator_tag iterator_category; typedef typename std::iterator_traits::difference_type difference_type; typedef segment_type value_type; typedef segment_type* pointer; typedef segment_type& reference; explicit segment_iterator(Base const& end) : m_segment(p1 , p2) , m_prev(end) , m_it(end) , m_end(end) { BOOST_ASSERT(ggl::equals(point_type(), m_segment.first)); BOOST_ASSERT(ggl::equals(point_type(), m_segment.second)); } segment_iterator(Base const& it, Base const& end) : m_segment(p1 , p2) , m_prev(it) , m_it(it) , m_end(end) { if (m_it != m_end) { BOOST_ASSERT(m_prev != m_end); ++m_it; } } reference operator*() { BOOST_ASSERT(m_it != m_end && m_prev != m_end); p1 = *m_prev; p2 = *m_it; return m_segment; } pointer operator->() { return &(operator*()); } segment_iterator& operator++() { ++m_prev; ++m_it; return *this; } segment_iterator operator++(int) { segment_iterator it(*this); ++(*this); return it; } Base const& base() const { return m_it; } private: point_type p1; point_type p2; segment_type m_segment; Base m_prev; Base m_it; Base m_end; }; template bool operator==(segment_iterator const& lhs, segment_iterator const& rhs) { return (lhs.base() == rhs.base()); } template bool operator!=(segment_iterator const& lhs, segment_iterator const& rhs) { return (lhs.base() != rhs.base()); } template segment_iterator < typename C::iterator, typename C::value_type > make_segment_iterator(C& c) { typedef typename C::iterator base_iterator; typedef typename C::value_type point_type; return segment_iterator(c.begin(), c.end()); } } // namespace ggl #endif // GGL_ITERATORS_SEGMENT_ITERATOR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/000077500000000000000000000000001177067165300215305ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/000077500000000000000000000000001177067165300237015ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/area.hpp000066400000000000000000000017721177067165300253310ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_AREA_HPP #define GGL_MULTI_ALGORITHMS_AREA_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct area : detail::multi_sum::type, Strategy> > {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_AREA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/centroid.hpp000066400000000000000000000044001177067165300262170ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_CENTROID_HPP #define GGL_MULTI_ALGORITHMS_CENTROID_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace centroid { template struct centroid_multi_polygon { static inline void apply(MultiPolygon const& multi, Point& c, Strategy const& strategy) { typedef typename boost::range_const_iterator::type iterator; typename Strategy::state_type state; for (iterator it = boost::begin(multi); it != boost::end(multi); ++it) { // TODO: make THIS the building block! typedef typename boost::range_value::type polygon_type; polygon_type const& poly = *it; if (ring_ok(exterior_ring(poly), c)) { loop(exterior_ring(poly), strategy, state); typedef typename boost::range_const_iterator < typename interior_type::type >::type iterator_type; for (iterator_type it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { loop(*it, strategy, state); } } } state.centroid(c); } }; }} // namespace detail::centroid #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct centroid : detail::centroid::centroid_multi_polygon {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_CENTROID_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/convex_hull.hpp000066400000000000000000000043351177067165300267450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_CONVEX_HULL_HPP #define GGL_MULTI_ALGORITHMS_CONVEX_HULL_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace convex_hull { template struct convex_hull_multi { static inline OutputIterator apply(MultiGeometry const& multi, OutputIterator out) { using namespace boost; typedef typename point_type::type point; typename strategy_convex_hull < typename cs_tag::type, point >::type strategy; typedef typename range_const_iterator::type iterator; typedef typename range_value::type single; for(iterator it = begin(multi); it != end(multi); ++it) { strategy.add_range(as_range ::type>(*it)); } strategy.handle_input(); strategy.get(out); return out; } }; }} // namespace detail::convex_hull #endif #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { // Specialize for multi's template < typename MultiTag, typename MultiGeometry, typename OutputIterator > struct convex_hull : detail::convex_hull::convex_hull_multi {}; // Specialize more for point template struct convex_hull : detail::convex_hull::hull {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_CONVEX_HULL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/correct.hpp000066400000000000000000000021631177067165300260550ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_CORRECT_HPP #define GGL_MULTI_CORRECT_HPP #include #include //FIX ME it is not yet adapted to tag-dispatching namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace correct { // correct a multi-polygon template inline void correct_multi_polygon(O& o) { for (typename O::iterator it = o.begin(); it != o.end(); it++) { correct_polygon(*it); } } } } #endif template class V, template class A> void correct(multi_polygon& mp) { detail::correct::correct_multi_polygon(mp); } } // namespace ggl #endif // GGL_MULTI_CORRECT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/detail/000077500000000000000000000000001177067165300251435ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/detail/modify_with_predicate.hpp000066400000000000000000000022441177067165300322200ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_DETAIL_MODIFY_WITH_PREDICATE_HPP #define GGL_MULTI_ALGORITHMS_DETAIL_MODIFY_WITH_PREDICATE_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct multi_modify_with_predicate { static inline void apply(MultiGeometry& multi, Predicate const& predicate) { typedef typename boost::range_iterator::type iterator_type; for (iterator_type it = boost::begin(multi); it != boost::end(multi); ++it) { Policy::apply(*it, predicate); } } }; } // namespace detail #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_DETAIL_MODIFY_WITH_PREDICATE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/detail/multi_sum.hpp000066400000000000000000000022501177067165300276710ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_SUM_HPP #define GGL_MULTI_SUM_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template < typename T, typename MultiGeometry, typename Strategy, typename Policy > struct multi_sum { static inline T apply(MultiGeometry const& geometry, Strategy const& strategy) { typedef typename boost::range_const_iterator < MultiGeometry >::type iterator_type; T sum = T(); for (iterator_type it = boost::begin(geometry); it != boost::end(geometry); ++it) { sum += Policy::apply(*it, strategy); } return sum; } }; } // namespace detail #endif } // namespace ggl #endif // GGL_MULTI_SUM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/distance.hpp000066400000000000000000000067041177067165300262130ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_DISTANCE_HPP #define GGL_MULTI_ALGORITHMS_DISTANCE_HPP #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace distance { template struct distance_single_to_multi { typedef typename Strategy::return_type return_type; static inline return_type apply(Geometry const& geometry, MultiGeometry const& multi, Strategy const& strategy) { using namespace boost; return_type mindist = make_distance_result( numeric::bounds::type>::highest()); typedef typename range_const_iterator::type iterator; for(iterator it = begin(multi); it != end(multi); ++it) { return_type dist = ggl::distance(geometry, *it); if (dist < mindist) { mindist = dist; } } return mindist; } }; template struct distance_multi_to_multi { typedef typename Strategy::return_type return_type; static inline return_type apply(Multi1 const& multi1, Multi2 const& multi2, Strategy const& strategy) { using namespace boost; return_type mindist = make_distance_result( numeric::bounds::type>::highest()); for(typename range_const_iterator::type it = begin(multi1); it != end(multi1); ++it) { return_type dist = distance_single_to_multi < typename range_value::type, Multi2, Strategy >::apply(*it, multi2, strategy); if (dist < mindist) { mindist = dist; } } return mindist; } }; }} // namespace detail::distance #endif #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct distance : detail::distance::distance_single_to_multi {}; template struct distance : detail::distance::distance_multi_to_multi {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_DISTANCE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/envelope.hpp000066400000000000000000000044561177067165300262400ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ENVELOPE_HPP #define GGL_MULTI_ENVELOPE_HPP #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace envelope { template struct envelope_multi_linestring { static inline void apply(MultiLinestring const& mp, Box& mbr, Strategy const& strategy) { typename Strategy::state_type state(mbr); for (typename boost::range_const_iterator::type it = mp.begin(); it != mp.end(); ++it) { envelope_range_state(*it, strategy, state); } } }; // version for multi_polygon: outer linear_ring's of all polygons template struct envelope_multi_polygon { static inline void apply(MultiPolygon const& mp, Box& mbr, Strategy const& strategy) { typename Strategy::state_type state(mbr); for (typename boost::range_const_iterator::type it = mp.begin(); it != mp.end(); ++it) { envelope_range_state(exterior_ring(*it), strategy, state); } } }; }} // namespace detail::envelope #endif #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct envelope : detail::envelope::envelope_range {}; template struct envelope : detail::envelope::envelope_multi_linestring {}; template struct envelope : detail::envelope::envelope_multi_polygon {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ENVELOPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/foreach.hpp000066400000000000000000000120351177067165300260220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_FOREACH_HPP #define GGL_MULTI_FOREACH_HPP #include #include FIX ME it is not yet adapted to tag-dispatching namespace ggl { template inline F for_each_point_multi_point(MP& mp, F f) { return (for_each_point_container(mp, f)); } template inline F for_each_point_multi_linestring(ML& ml, F f) { for (typename ML::iterator it = ml.begin(); it != ml.end(); it++) { f = for_each_point_linestring(*it, f); } return (f); } template inline F for_each_point_multi_polygon(MY& mp, F f) { for (typename MY::iterator it = mp.begin(); it != mp.end(); it++) { f = for_each_point_polygon(*it, f); } return (f); } template inline F for_each_point_multi_point(const MP& mp, F f) { return (for_each_point_container(mp, f)); } template inline F for_each_point_multi_linestring(const ML& ml, F f) { for (typename ML::const_iterator it = ml.begin(); it != ml.end(); it++) { f = for_each_point_linestring(*it, f); } return (f); } template inline F for_each_point_multi_polygon(const MY& mp, F f) { for (typename MY::const_iterator it = mp.begin(); it != mp.end(); it++) { f = for_each_point_polygon(*it, f); } return (f); } template inline F for_each_segment_multi_linestring(ML& ml, F f) { for (typename ML::iterator it = ml.begin(); it != ml.end(); it++) { f = for_each_segment_linestring(*it, f); } return (f); } template inline F for_each_segment_multi_polygon(MY& mp, F f) { for (typename MY::iterator it = mp.begin(); it != mp.end(); it++) { f = for_each_segment_polygon(*it, f); } return (f); } template inline F for_each_segment_multi_linestring(const ML& ml, F f) { for (typename ML::const_iterator it = ml.begin(); it != ml.end(); it++) { f = for_each_segment_linestring(*it, f); } return (f); } template inline F for_each_segment_multi_polygon(const MY& mp, F f) { for (typename MY::const_iterator it = mp.begin(); it != mp.end(); it++) { f = for_each_segment_polygon(*it, f); } return (f); } template class V, template class A, typename F> inline F for_each_point(multi_point& mp, F f) { return (for_each_point_multi_point(mp, f)); } template class V, template class A, typename F> inline F for_each_point(multi_linestring& ml, F f) { return (for_each_point_multi_linestring(ml, f)); } template class V, template class A, typename F> inline F for_each_point(multi_polygon& mp, F f) { return (for_each_point_multi_polygon(mp, f)); } template class V, template class A, typename F> inline F for_each_point(const multi_point& mp, F f) { return (for_each_point_multi_point(mp, f)); } template class V, template class A, typename F> inline F for_each_point(const multi_linestring& ml, F f) { return (for_each_point_multi_linestring(ml, f)); } template class V, template class A, typename F> inline F for_each_point(const multi_polygon& mp, F f) { return (for_each_point_multi_polygon(mp, f)); } template class V, template class A, typename F> inline F for_each_segment(multi_linestring& ml, F f) { return (for_each_segment_multi_linestring(ml, f)); } template class V, template class A, typename F> inline F for_each_segment(multi_polygon& mp, F f) { return (for_each_segment_multi_polygon(mp, f)); } template class V, template class A, typename F> inline F for_each_segment(const multi_linestring& ml, F f) { return (for_each_segment_multi_linestring(ml, f)); } template class V, template class A, typename F> inline F for_each_segment(const multi_polygon& mp, F f) { return (for_each_segment_multi_polygon(mp, f)); } } // namespace ggl #endif // GGL_MULTI_FOREACH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/get_section.hpp000066400000000000000000000026341177067165300267220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_GET_SECTION_HPP #define GGL_MULTI_ALGORITHMS_GET_SECTION_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct get_section { typedef typename ggl::point_const_iterator::type iterator_type; static inline void apply(MultiPolygon const& multi_polygon, Section const& section, iterator_type& begin, iterator_type& end) { BOOST_ASSERT(section.multi_index >= 0 && section.multi_index < boost::size(multi_polygon)); get_section::type, Section> ::apply(multi_polygon[section.multi_index], section, begin, end); } }; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_GET_SECTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/intersection.hpp000066400000000000000000000016701177067165300271240ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_INTERSECTION_HPP #define GGL_MULTI_ALGORITHMS_INTERSECTION_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename MultiPolygon1, typename MultiPolygon2, typename OutputIterator, typename GeometryOut > struct intersection < multi_polygon_tag, multi_polygon_tag, polygon_tag, MultiPolygon1, MultiPolygon2, OutputIterator, GeometryOut > { // todo: implement this }; } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_INTERSECTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/length.hpp000066400000000000000000000015531177067165300256770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_LENGTH_HPP #define GGL_MULTI_LENGTH_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct length : detail::multi_sum::type, S> > {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_LENGTH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/num_points.hpp000066400000000000000000000035611177067165300266120ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_NUM_POINTS_HPP #define GGL_MULTI_ALGORITHMS_NUM_POINTS_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace num_points { template struct multi_count { static inline size_t apply(MultiGeometry const& geometry) { typedef typename boost::range_value::type geometry_type; typedef typename boost::remove_const::type ncg; typedef typename boost::range_const_iterator < MultiGeometry >::type iterator_type; size_t n = 0; for (iterator_type it = boost::begin(geometry); it != boost::end(geometry); ++it) { n += dispatch::num_points::type, ggl::is_linear::value, ncg>::apply(*it); } return n; } }; }} // namespace detail::num_points #endif #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct num_points : detail::num_points::multi_count {}; template struct num_points : detail::num_points::multi_count {}; template struct num_points : detail::num_points::multi_count {}; } // namespace dispatch #endif } #endif // GGL_MULTI_ALGORITHMS_NUM_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/overlay/000077500000000000000000000000001177067165300253625ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/overlay/copy_segments.hpp000066400000000000000000000042201177067165300307500ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_OVERLAY_COPY_SEGMENTS_HPP #define GGL_MULTI_ALGORITHMS_OVERLAY_COPY_SEGMENTS_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace copy_segments { template < typename MultiGeometry, typename SegmentIdentifier, typename RangeOut, typename Policy > struct copy_segments_multi { static inline void apply(MultiGeometry const& multi_geometry, SegmentIdentifier const& seg_id, int to_index, RangeOut& current_output) { BOOST_ASSERT ( seg_id.multi_index >= 0 && seg_id.multi_index < boost::size(multi_geometry) ); // Call the single-version Policy::apply(multi_geometry[seg_id.multi_index], seg_id, to_index, current_output); } }; }} // namespace detail::copy_segments #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct copy_segments : detail::copy_segments::copy_segments_multi < MultiPolygon, SegmentIdentifier, RangeOut, detail::copy_segments::copy_segments_polygon < typename boost::range_value::type, SegmentIdentifier, RangeOut > > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_OVERLAY_COPY_SEGMENTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/overlay/get_intersection_points.hpp000066400000000000000000000026501177067165300330370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_GET_INTERSECTION_POINTS_HPP #define GGL_MULTI_ALGORITHMS_GET_INTERSECTION_POINTS_HPP #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template < typename MultiTag1, typename MultiTag2, typename MultiGeometry1, typename MultiGeometry2, typename IntersectionPoints > struct get_intersection_points < MultiTag1, MultiTag2, true, true, MultiGeometry1, MultiGeometry2, IntersectionPoints > : detail::get_intersection_points::get_ips_generic < MultiGeometry1, MultiGeometry2, IntersectionPoints > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_GET_INTERSECTION_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/perimeter.hpp000066400000000000000000000016001177067165300264030ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_PERIMETER_HPP #define GGL_MULTI_PERIMETER_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct perimeter : detail::multi_sum::type, S> > {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_PERIMETER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/remove_holes_if.hpp000066400000000000000000000022451177067165300275620ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_REMOVE_HOLES_IF_HPP #define GGL_MULTI_ALGORITHMS_REMOVE_HOLES_IF_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct remove_holes_if : detail::multi_modify_with_predicate < MultiPolygon, Predicate, detail::remove_holes_if::polygon_remove_holes_if < typename boost::range_value::type, Predicate > > {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_REMOVE_HOLES_IF_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/sectionalize.hpp000066400000000000000000000040121177067165300271000ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_SECTIONALIZE_HPP #define GGL_MULTI_ALGORITHMS_SECTIONALIZE_HPP #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace sectionalize { template struct sectionalize_multi { static inline void apply(MultiGeometry const& multi, Sections& sections) { int multi_index = 0; for (typename boost::range_const_iterator::type it = boost::begin(multi); it != boost::end(multi); ++it, ++multi_index) { Policy::apply(*it, sections, multi_index); } } }; }} // namespace detail::sectionalize #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct sectionalize : detail::sectionalize::sectionalize_multi < MultiPolygon, Sections, DimensionCount, detail::sectionalize::sectionalize_polygon < typename boost::range_value::type, Sections, DimensionCount, MaxCount > > {}; } // namespace dispatch #endif } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_SECTIONALIZE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/simplify.hpp000066400000000000000000000040241177067165300262460ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_SIMPLIFY_HPP #define GGL_MULTI_SIMPLIFY_HPP #include #include FIX ME it is not yet adapted to tag-dispatching namespace ggl { template inline void simplify_multi_linestring(const ML& ml_in, ML& ml_out, double max_distance) { ml_out.resize(ml_in.size()); typename ML::const_iterator it_in = ml_in.begin(); typename ML::iterator it_out = ml_out.begin(); for (; it_in != ml_in.end(); it_in++, it_out++) { simplify_linestring(*it_in, *it_out, max_distance); } } template inline void simplify_multi_polygon(const MY& mp_in, MY& mp_out, double max_distance) { mp_out.resize(mp_in.size()); typename MY::const_iterator it_in = mp_in.begin(); typename MY::iterator it_out = mp_out.begin(); for (; it_in != mp_in.end(); it_in++, it_out++) { simplify(*it_in, *it_out, max_distance); } } template class V, template class A> inline void simplify(const multi_linestring& ml_in, multi_linestring& ml_out, double max_distance) { simplify_multi_linestring(ml_in, ml_out, max_distance); } template class V, template class A> inline void simplify(const multi_polygon& mp_in, multi_polygon& mp_out, double max_distance) { simplify_multi_polygon(mp_in, mp_out, max_distance); } } // namespace ggl #endif // GGL_MULTI_SIMPLIFY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/transform.hpp000066400000000000000000000041011177067165300264210ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_TRANSFORM_HPP #define GGL_MULTI_ALGORITHMS_TRANSFORM_HPP #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace transform { /*! \brief Is able to transform any multi-geometry, calling the single-version as policy */ template struct transform_multi { template static inline bool apply(Multi1 const& multi1, Multi2& multi2, S const& strategy) { multi2.resize(boost::size(multi1)); typename boost::range_const_iterator::type it1 = boost::begin(multi1); typename boost::range_iterator::type it2 = boost::begin(multi2); for (; it1 != boost::end(multi1); ++it1, ++it2) { if (! Policy::apply(*it1, *it2, strategy)) { return false; } } return true; } }; }} // namespace detail::transform #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct transform : detail::transform::transform_multi < Multi1, Multi2, detail::transform::transform_polygon < typename boost::range_value::type, typename boost::range_value::type > > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_TRANSFORM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/algorithms/within.hpp000066400000000000000000000047341177067165300257240ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ALGORITHMS_WITHIN_HPP #define GGL_MULTI_ALGORITHMS_WITHIN_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace within { template inline bool point_in_multi_polygon(const P& p, const I& m, const S& strategy) { for (typename I::const_iterator i = m.begin(); i != m.end(); i++) { // Point within a multi-polygon: true if within one of the polygons if (point_in_polygon(p, *i, strategy)) { return true; } } return false; } template inline bool multi_polygon_in_circle(const I& m, const C& c) { for (typename I::const_iterator i = m.begin(); i != m.end(); i++) { if (! polygon_in_circle(*i, c)) { return false; } } return true; } }} // namespace detail::within #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { /* template struct within { static inline bool apply(const M& m, const B& b) { return detail::within::multi_polygon_in_box(m, b); } }; */ template struct within { static inline bool apply(const M& m, const C& c) { return detail::within::multi_polygon_in_circle(m, c); } }; template struct within { template static inline bool apply(const P& p, const M& m, const S& strategy) { return detail::within::point_in_multi_polygon(p, m, strategy); } static inline bool apply(const P& p, const M& m) { typedef typename point_type::type PM; typename strategy_within< typename cs_tag

::type, typename cs_tag::type, P, PM >::type strategy; return apply(p, m, strategy); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_MULTI_ALGORITHMS_WITHIN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/000077500000000000000000000000001177067165300224605ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/geometry_id.hpp000066400000000000000000000020141177067165300254750ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_CORE_GEOMETRY_ID_HPP #define GGL_MULTI_CORE_GEOMETRY_ID_HPP #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template <> struct geometry_id : boost::mpl::int_<4> {}; template <> struct geometry_id : boost::mpl::int_<5> {}; template <> struct geometry_id : boost::mpl::int_<6> {}; } // namespace core_dispatch #endif } // namespace ggl #endif // GGL_MULTI_CORE_GEOMETRY_ID_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/is_multi.hpp000066400000000000000000000016211177067165300250160ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_CORE_IS_MULTI_HPP #define GGL_MULTI_CORE_IS_MULTI_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template <> struct is_multi : boost::true_type {}; template <> struct is_multi : boost::true_type {}; template <> struct is_multi : boost::true_type {}; } // namespace core_dispatch #endif } // namespace ggl #endif // GGL_MULTI_CORE_IS_MULTI_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/point_type.hpp000066400000000000000000000023521177067165300253650ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_CORE_POINT_TYPE_HPP #define GGL_MULTI_CORE_POINT_TYPE_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct point_type { typedef typename boost::range_value::type type; }; template struct point_type { typedef typename point_type::type>::type type; }; template struct point_type { typedef typename point_type::type>::type type; }; } #endif } // namespace ggl #endif // GGL_MULTI_CORE_POINT_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/ring_type.hpp000066400000000000000000000016361177067165300251770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_CORE_RING_TYPE_HPP #define GGL_MULTI_CORE_RING_TYPE_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template struct ring_type { typedef typename ggl::ring_type < typename boost::range_value::type >::type type; }; } // namespace core_dispatch #endif } // namespace ggl #endif // GGL_MULTI_CORE_RING_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/tags.hpp000066400000000000000000000013771177067165300241370ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_CORE_TAGS_HPP #define GGL_MULTI_CORE_TAGS_HPP namespace ggl { /// OGC Multi point identifying tag struct multi_point_tag {}; /// OGC Multi linestring identifying tag struct multi_linestring_tag {}; /// OGC Multi polygon identifying tag struct multi_polygon_tag {}; /// OGC Geometry Collection identifying tag struct geometry_collection_tag {}; } // namespace ggl #endif // GGL_MULTI_CORE_TAGS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/core/topological_dimension.hpp000066400000000000000000000016151177067165300275550ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_TOPOLOGICAL_DIMENSION_HPP #define GGL_MULTI_TOPOLOGICAL_DIMENSION_HPP #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace core_dispatch { template <> struct top_dim : boost::mpl::int_<0> {}; template <> struct top_dim : boost::mpl::int_<1> {}; template <> struct top_dim : boost::mpl::int_<2> {}; } // namespace core_dispatch #endif } // namespace ggl #endif merkaartor-0.18.1/include/builtin-ggl/ggl/multi/geometries/000077500000000000000000000000001177067165300236735ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/geometries/multi_linestring.hpp000066400000000000000000000023501177067165300277740ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_LINESTRING_HPP #define GGL_MULTI_LINESTRING_HPP #include #include #include #include namespace ggl { // Class: multi_line // Purpose: groups lines belonging to each other, e.g. a broken highway template < typename L, template class V = std::vector, template class A = std::allocator > struct multi_linestring : public V > { BOOST_CONCEPT_ASSERT( (concept::Linestring) ); }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template < typename L, template class V, template class A > struct tag< multi_linestring > { typedef multi_linestring_tag type; }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_MULTI_LINESTRING_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/geometries/multi_point.hpp000066400000000000000000000023631177067165300267530ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_GEOMETRIES_MULTI_POINT_HPP #define GGL_MULTI_GEOMETRIES_MULTI_POINT_HPP #include #include #include #include namespace ggl { // Class: multi_point // Purpose: groups points belonging to each other, e.g. a constellation template < typename P, template class V = std::vector, template class A = std::allocator > struct multi_point : public V > { BOOST_CONCEPT_ASSERT( (concept::Point

) ); }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template < typename P, template class V, template class A > struct tag< multi_point > { typedef multi_point_tag type; }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_MULTI_GEOMETRIES_MULTI_POINT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/geometries/multi_polygon.hpp000066400000000000000000000024411177067165300273060ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_GEOMETRIES_MULTI_POLYGON_HPP #define GGL_MULTI_GEOMETRIES_MULTI_POLYGON_HPP #include #include #include #include #include namespace ggl { // Class: multi_polygon // Purpose: groups polygons belonging to each other, e.g. Hawaii template < typename P, template class V = std::vector, template class A = std::allocator > struct multi_polygon : public V > { BOOST_CONCEPT_ASSERT( (concept::Polygon

) ); }; #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS namespace traits { template < typename P, template class V, template class A > struct tag< multi_polygon > { typedef multi_polygon_tag type; }; } // namespace traits #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS } // namespace ggl #endif // GGL_MULTI_GEOMETRIES_MULTI_POLYGON_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/iterators/000077500000000000000000000000001177067165300235445ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/iterators/point_const_iterator.hpp000066400000000000000000000020001177067165300305150ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_ITERATORS_POINT_CONST_ITERATOR_HPP #define GGL_MULTI_ITERATORS_POINT_CONST_ITERATOR_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct point_const_iterator { typedef typename boost::range_value::type polygon_type; typedef typename boost::range_const_iterator < typename ring_type::type >::type type; }; } // namespace dispatch #endif } #endif // GGL_MULTI_ITERATORS_POINT_CONST_ITERATOR_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/multi/util/000077500000000000000000000000001177067165300225055ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/multi/util/write_dsv.hpp000066400000000000000000000026051177067165300252270ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_MULTI_UTIL_WRITE_DSV_HPP #define GGL_MULTI_UTIL_WRITE_DSV_HPP #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace dsv { template struct dsv_multi { template static inline void apply(std::basic_ostream& os, Geometry const& geometry, dsv_settings const& settings) { os << settings.list_open; typedef typename range_const_iterator::type iterator; for(iterator it = begin(multi); it != end(multi); ++it) { os << ggl::dsv(*it); } os << settings.list_close; } }; }} // namespace detail::dsv #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct dsv : detail::dsv::dsv_multi {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH } // namespace ggl #endif // GGL_MULTI_UTIL_WRITE_DSV_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/policies/000077500000000000000000000000001177067165300222055ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/policies/relate/000077500000000000000000000000001177067165300234615ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/policies/relate/de9im.hpp000066400000000000000000000125751177067165300252130ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_POLICIES_RELATE_DE9IM_HPP #define GGL_GEOMETRY_POLICIES_RELATE_DE9IM_HPP #include #include #include namespace ggl { namespace policies { namespace relate { template struct segments_de9im { typedef de9im_segment return_type; typedef S1 segment_type1; typedef S2 segment_type2; typedef typename select_coordinate_type::type coordinate_type; static inline return_type rays_intersect(bool on_segment, double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, coordinate_type const& dx2, coordinate_type const& dy2, coordinate_type const& wx, coordinate_type const& wy, S1 const& s1, S2 const& s2) { if(on_segment) { // 0 <= ra <= 1 and 0 <= rb <= 1 // Now check if one of them is 0 or 1, these are "touch" cases bool a = math::equals(ra, 0.0) || math::equals(ra, 1.0); bool b = math::equals(rb, 0.0) || math::equals(rb, 1.0); if (a && b) { // Touch boundary/boundary: i-i == -1, i-b == -1, b-b == 0 // Opposite: if both are equal they touch in opposite direction return de9im_segment(ra,rb, -1, -1, 1, -1, 0, 0, 1, 0, 2, false, math::equals(ra,rb)); } else if (a || b) { // Touch boundary/interior: i-i == -1, i-b == -1 or 0, b-b == -1 int A = a ? 0 : -1; int B = b ? 0 : -1; return de9im_segment(ra,rb, -1, B, 1, A, -1, 0, 1, 0, 2); } // Intersects: i-i == 0, i-b == -1, i-e == 1 return de9im_segment(ra,rb, 0, -1, 1, -1, -1, 0, 1, 0, 2); } // Not on segment, disjoint return de9im_segment(ra,rb, -1, -1, 1, -1, -1, 0, 1, 0, 2); } static inline return_type collinear_touch(coordinate_type const& x, coordinate_type const& y, bool opposite, char) { return de9im_segment(0,0, -1, -1, 1, -1, 0, 0, 1, 0, 2, true, opposite); } template static inline return_type collinear_interior_boundary_intersect(S const& s, bool a_within_b, bool opposite) { return a_within_b ? de9im_segment(0,0, 1, -1, -1, 0, 0, -1, 1, 0, 2, true, opposite) : de9im_segment(0,0, 1, 0, 1, -1, 0, 0, -1, -1, 2, true, opposite); } static inline return_type collinear_a_in_b(S1 const& s, bool opposite) { return de9im_segment(0,0, 1, -1, -1, 0, -1, -1, 1, 0, 2, true, opposite); } static inline return_type collinear_b_in_a(const S2& s, bool opposite) { return de9im_segment(0,0, 1, 0, 1, -1, -1, 0, -1, -1, 2, true, opposite); } static inline return_type collinear_overlaps( coordinate_type const& x1, coordinate_type const& y1, coordinate_type const& x2, coordinate_type const& y2, bool opposite) { return de9im_segment(0,0, 1, 0, 1, 0, -1, 0, 1, 0, 2, true, opposite); } static inline return_type segment_equal(S1 const& s, bool opposite) { return de9im_segment(0,0, 1, -1, -1, -1, 0, -1, -1, -1, 2, true, opposite); } static inline return_type degenerate(S1 const& segment, bool a_degenerate) { return a_degenerate ? de9im_segment(0,0, 0, -1, -1, -1, -1, -1, 1, 0, 2, false, false, false, true) : de9im_segment(0,0, 0, -1, 1, -1, -1, 0, -1, -1, 2, false, false, false, true); } static inline return_type collinear_disjoint() { return de9im_segment(0,0, -1, -1, 1, -1, -1, 0, 1, 0, 2, true); } static inline return_type parallel() { return de9im_segment(0,0, -1, -1, 1, -1, -1, 0, 1, 0, 2, false, false, true); } }; }} // namespace policies::relate } // namespace ggl #endif // GGL_GEOMETRY_POLICIES_RELATE_DE9IM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/policies/relate/direction.hpp000066400000000000000000000226571177067165300261660ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_POLICIES_RELATE_DIRECTION_HPP #define GGL_GEOMETRY_POLICIES_RELATE_DIRECTION_HPP #include #include #include namespace ggl { namespace policies { namespace relate { struct direction_type { inline direction_type(char h, double a = 0, double b = 0, int ha = 0, int hb = 0, int da = 0, int db = 0, bool op = false) : how(h) , opposite(op) , ra(a) , rb(b) , how_a(ha) , how_b(hb) , dir_a(da) , dir_b(db) { } inline direction_type(char h, bool op, int ha = 0, int hb = 0) : how(h) , opposite(op) , ra(0) , rb(0) , how_a(ha) , how_b(hb) , dir_a(0) , dir_b(0) { } // "How" is the intersection formed? char how; // Is it opposite (for collinear/equal cases) bool opposite; // "Distance information", information on how far lies IP from a/b in ratio [0..1] double ra, rb; // Information on how A arrives at intersection, how B arrives at intersection // 1: arrives at intersection // -1: starts from intersection int how_a; int how_b; // Direction: how is A positioned from B // 1: points left, seen from IP // -1: points right, seen from IP // In case of intersection: B's TO direction // In case that B's TO direction is at A: B's from direction // In collinear cases: it is 0 int dir_a; // Direction of A-s TO from IP int dir_b; // Direction of B-s TO from IP }; template struct segments_direction { typedef direction_type return_type; typedef S1 segment_type1; typedef S2 segment_type2; typedef typename select_coordinate_type::type coordinate_type; static inline return_type rays_intersect(bool on_segment, double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, coordinate_type const& dx2, coordinate_type const& dy2, coordinate_type const& wx, coordinate_type const& wy, S1 const& s1, S2 const& s2) { boost::ignore_unused_variable_warning(dx2); boost::ignore_unused_variable_warning(dy2); boost::ignore_unused_variable_warning(wx); boost::ignore_unused_variable_warning(wy); if(on_segment) { // 0 <= ra <= 1 and 0 <= rb <= 1 // Check the configuration bool ra0 = math::equals(ra, 0.0); bool ra1 = math::equals(ra, 1.0); bool rb0 = math::equals(rb, 0.0); bool rb1 = math::equals(rb, 1.0); return // opposite and same starting point (FROM) ra0 && rb0 ? calculate_side<1>(ra, rb, dx1, dy1, s1, s2, 'f', -1, -1) // opposite and point to each other (TO) : ra1 && rb1 ? calculate_side<0>(ra, rb, dx1, dy1, s1, s2, 't', 1, 1) // not opposite, forming an angle, first a then b, // directed either both left, or both right // Check side of B2 from A. This is not calculated before : ra1 && rb0 ? angle<1>(ra, rb, dx1, dy1, s1, s2, 'a', 1, -1) // not opposite, forming a angle, first b then a, // directed either both left, or both right : ra0 && rb1 ? angle<0>(ra, rb, dx1, dy1, s1, s2, 'a', -1, 1) // b starts from interior of a : rb0 ? starts_from_middle(ra, rb, dx1, dy1, s1, s2, 'B', 0, -1) // a starts from interior of b (#39) : ra0 ? starts_from_middle(ra, rb, dx1, dy1, s1, s2, 'A', -1, 0) // b ends at interior of a, calculate direction of A from IP : rb1 ? b_ends_at_middle(ra, rb, dx2, dy2, s1, s2) // a ends at interior of b : ra1 ? a_ends_at_middle(ra, rb, dx1, dy1, s1, s2) // normal intersection : calculate_side<1>(ra, rb, dx1, dy1, s1, s2, 'i', -1, -1) ; } // Not on segment, disjoint return return_type('d'); } static inline return_type collinear_touch(coordinate_type const& , coordinate_type const& , bool opposite, char how) { // Though this is 'collinear', we handle it as To/From/Angle because it is the same. // It only does NOT have a direction. int const arrive = how == 'T' ? 1 : -1; return ! opposite ? return_type('a', 0, 0, how == 'A' ? 1 : -1, how == 'B' ? 1 : -1) : return_type(how == 'T' ? 't' : 'f', 0, 0, arrive, arrive, 0, 0, true); } template static inline return_type collinear_interior_boundary_intersect(S const& , bool, bool opposite) { return return_type('c', opposite); } static inline return_type collinear_a_in_b(S1 const& , bool opposite) { return return_type('c', opposite); } static inline return_type collinear_b_in_a(S2 const& , bool opposite) { return return_type('c', opposite); } static inline return_type collinear_overlaps( coordinate_type const& , coordinate_type const& , coordinate_type const& , coordinate_type const& , bool opposite) { return return_type('c', opposite); } static inline return_type segment_equal(S1 const& , bool opposite) { return return_type('e', opposite); } static inline return_type degenerate(S1 const& , bool) { return return_type('0'); } static inline return_type collinear_disjoint() { return return_type('d'); } static inline return_type parallel() { return return_type('p'); } private : template static inline return_type calculate_side(double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, S1 const& s1, S2 const& s2, char how, int how_a, int how_b) { coordinate_type dpx = get(s2) - get<0, 0>(s1); coordinate_type dpy = get(s2) - get<0, 1>(s1); // This is a "side calculation" as in the strategies, but here two terms are precalculated // We might merge this with side, offering a pre-calculated term // Waiting for implementing spherical... return dx1 * dpy - dy1 * dpx > 0 ? return_type(how, ra, rb, how_a, how_b, -1, 1) : return_type(how, ra, rb, how_a, how_b, 1, -1); } template static inline return_type angle(double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, S1 const& s1, S2 const& s2, char how, int how_a, int how_b) { coordinate_type dpx = get(s2) - get<0, 0>(s1); coordinate_type dpy = get(s2) - get<0, 1>(s1); return dx1 * dpy - dy1 * dpx > 0 ? return_type(how, ra, rb, how_a, how_b, 1, 1) : return_type(how, ra, rb, how_a, how_b, -1, -1); } static inline return_type starts_from_middle(double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, S1 const& s1, S2 const& s2, char which, int how_a, int how_b) { // Calculate ARROW of b segment w.r.t. s1 coordinate_type dpx = get<1, 0>(s2) - get<0, 0>(s1); coordinate_type dpy = get<1, 1>(s2) - get<0, 1>(s1); int dir = dx1 * dpy - dy1 * dpx > 0 ? 1 : -1; // From other perspective, then reverse bool const is_a = which == 'A'; if (is_a) { dir = -dir; } return return_type('s', ra, rb, how_a, how_b, is_a ? dir : -dir, ! is_a ? dir : -dir); } // To be harmonized static inline return_type a_ends_at_middle(double ra, double rb, coordinate_type const& dx, coordinate_type const& dy, S1 const& s1, S2 const& s2) { coordinate_type dpx = get<1, 0>(s2) - get<0, 0>(s1); coordinate_type dpy = get<1, 1>(s2) - get<0, 1>(s1); // Ending at the middle, one ARRIVES, the other one is NEUTRAL // (because it both "arrives" and "departs" there return dx * dpy - dy * dpx > 0 ? return_type('m', ra, rb, 1, 0, 1, 1) : return_type('m', ra, rb, 1, 0, -1, -1); } static inline return_type b_ends_at_middle(double ra, double rb, coordinate_type const& dx, coordinate_type const& dy, S1 const& s1, S2 const& s2) { coordinate_type dpx = get<1, 0>(s1) - get<0, 0>(s2); coordinate_type dpy = get<1, 1>(s1) - get<0, 1>(s2); return dx * dpy - dy * dpx > 0 ? return_type('m', ra, rb, 0, 1, 1, 1) : return_type('m', ra, rb, 0, 1, -1, -1); } }; }} // namespace policies::relate } // namespace ggl #endif // GGL_GEOMETRY_POLICIES_RELATE_DIRECTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/policies/relate/intersection_points.hpp000066400000000000000000000105741177067165300303030ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_POLICIES_RELATE_INTERSECTION_POINTS_HPP #define GGL_GEOMETRY_POLICIES_RELATE_INTERSECTION_POINTS_HPP #include #include #include namespace ggl { namespace policies { namespace relate { template struct segments_intersection_points { typedef ReturnType return_type; typedef S1 segment_type1; typedef S2 segment_type2; typedef typename select_coordinate_type::type coordinate_type; static inline return_type rays_intersect(bool on_segment, double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, coordinate_type const& dx2, coordinate_type const& dy2, coordinate_type const& wx, coordinate_type const& wy, S1 const& s1, S2 const& s2) { boost::ignore_unused_variable_warning(rb); boost::ignore_unused_variable_warning(dx2); boost::ignore_unused_variable_warning(dy2); boost::ignore_unused_variable_warning(wx); boost::ignore_unused_variable_warning(wy); boost::ignore_unused_variable_warning(s2); return_type result; if (on_segment) { result.count = 1; set<0>(result.intersections[0], boost::numeric_cast(get<0, 0>(s1) + ra * dx1)); set<1>(result.intersections[0], boost::numeric_cast(get<0, 1>(s1) + ra * dy1)); } return result; } static inline return_type collinear_touch(coordinate_type const& x, coordinate_type const& y, bool, char) { return_type result; result.count = 1; set<0>(result.intersections[0], x); set<1>(result.intersections[0], y); return result; } template static inline return_type collinear_inside(S const& s) { return_type result; result.count = 2; set<0>(result.intersections[0], get<0, 0>(s)); set<1>(result.intersections[0], get<0, 1>(s)); set<0>(result.intersections[1], get<1, 0>(s)); set<1>(result.intersections[1], get<1, 1>(s)); return result; } template static inline return_type collinear_interior_boundary_intersect(S const& s, bool, bool) { return collinear_inside(s); } static inline return_type collinear_a_in_b(S1 const& s, bool) { return collinear_inside(s); } static inline return_type collinear_b_in_a(S2 const& s, bool) { return collinear_inside(s); } static inline return_type collinear_overlaps( coordinate_type const& x1, coordinate_type const& y1, coordinate_type const& x2, coordinate_type const& y2, bool) { return_type result; result.count = 2; set<0>(result.intersections[0], x1); set<1>(result.intersections[0], y1); set<0>(result.intersections[1], x2); set<1>(result.intersections[1], y2); return result; } static inline return_type segment_equal(S1 const& s, bool) { return_type result; result.count = 2; set<0>(result.intersections[0], get<0, 0>(s)); set<1>(result.intersections[0], get<0, 1>(s)); set<0>(result.intersections[1], get<1, 0>(s)); set<1>(result.intersections[1], get<1, 1>(s)); return result; } static inline return_type collinear_disjoint() { return return_type(); } static inline return_type parallel() { return return_type(); } static inline return_type degenerate(S1 const& s, bool) { return_type result; result.count = 1; set<0>(result.intersections[0], get<0, 0>(s)); set<1>(result.intersections[0], get<0, 1>(s)); return result; } }; }} // namespace policies::relate } // namespace ggl #endif // GGL_GEOMETRY_POLICIES_RELATE_INTERSECTION_POINTS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/policies/relate/tupled.hpp000066400000000000000000000113631177067165300254730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_POLICIES_RELATE_TUPLED_HPP #define GGL_GEOMETRY_POLICIES_RELATE_TUPLED_HPP #include #include namespace ggl { namespace policies { namespace relate { // "tupled" to return intersection results together. // Now with two, with some meta-programming and derivations it can also be three (or more) template struct segments_tupled { typedef boost::tuple < typename Policy1::return_type, typename Policy2::return_type > return_type; // Take segments of first policy, they should be equal typedef typename Policy1::segment_type1 segment_type1; typedef typename Policy1::segment_type2 segment_type2; typedef typename select_coordinate_type < segment_type1, segment_type2 >::type coordinate_type; static inline return_type rays_intersect(bool on_segment, double ra, double rb, coordinate_type const& dx1, coordinate_type const& dy1, coordinate_type const& dx2, coordinate_type const& dy2, coordinate_type const& wx, coordinate_type const& wy, segment_type1 const& s1, segment_type2 const& s2) { return boost::make_tuple ( Policy1::rays_intersect(on_segment, ra, rb, dx1, dy1, dx2, dy2, wx, wy, s1, s2), Policy2::rays_intersect(on_segment, ra, rb, dx1, dy1, dx2, dy2, wx, wy, s1, s2) ); } static inline return_type collinear_touch(coordinate_type const& x, coordinate_type const& y, bool opposite, char how) { return boost::make_tuple ( Policy1::collinear_touch(x, y, opposite, how), Policy2::collinear_touch(x, y, opposite, how) ); } template static inline return_type collinear_interior_boundary_intersect(S const& segment, bool a_within_b, bool opposite) { return boost::make_tuple ( Policy1::collinear_interior_boundary_intersect(segment, a_within_b, opposite), Policy2::collinear_interior_boundary_intersect(segment, a_within_b, opposite) ); } static inline return_type collinear_a_in_b(segment_type1 const& segment, bool opposite) { return boost::make_tuple ( Policy1::collinear_a_in_b(segment, opposite), Policy2::collinear_a_in_b(segment, opposite) ); } static inline return_type collinear_b_in_a(segment_type2 const& segment, bool opposite) { return boost::make_tuple ( Policy1::collinear_b_in_a(segment, opposite), Policy2::collinear_b_in_a(segment, opposite) ); } static inline return_type collinear_overlaps( coordinate_type const& x1, coordinate_type const& y1, coordinate_type const& x2, coordinate_type const& y2, bool opposite) { return boost::make_tuple ( Policy1::collinear_overlaps(x1, y1, x2, y2, opposite), Policy2::collinear_overlaps(x1, y1, x2, y2, opposite) ); } static inline return_type segment_equal(segment_type1 const& s, bool opposite) { return boost::make_tuple ( Policy1::segment_equal(s, opposite), Policy2::segment_equal(s, opposite) ); } static inline return_type degenerate(segment_type1 const& segment, bool a_degenerate) { return boost::make_tuple ( Policy1::degenerate(segment, a_degenerate), Policy2::degenerate(segment, a_degenerate) ); } static inline return_type collinear_disjoint() { return boost::make_tuple ( Policy1::collinear_disjoint(), Policy2::collinear_disjoint() ); } static inline return_type parallel() { return boost::make_tuple ( Policy1::parallel(), Policy2::parallel() ); } }; }} // namespace policies::relate } // namespace ggl #endif // GGL_GEOMETRY_POLICIES_RELATE_TUPLED_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/000077500000000000000000000000001177067165300225505ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/agnostic/000077500000000000000000000000001177067165300243575ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/agnostic/agn_convex_hull.hpp000066400000000000000000000164461177067165300302560ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP #define GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP #ifdef _MSC_VER #pragma warning( disable : 4101 ) #endif #include #include #include #include #include #include // TODO: Temporary, comparing tests, this can be removed in the end #if defined(GGL_USE_SMOOTH_SORT) # include "SmoothSort.hpp" #elif defined(GGL_USE_MERGE_SORT) # include "MergeSort.hpp" #else #endif namespace ggl { namespace strategy { namespace convex_hull { #ifndef DOXYGEN_NO_DETAIL namespace detail { template static inline void get_extremes(const Range& range, RangeIterator& min_it, RangeIterator& max_it, const Strategy& strategy) { min_it = boost::begin(range); max_it = boost::begin(range); for (RangeIterator it = boost::begin(range) + 1; it != boost::end(range); ++it) { if (strategy.smaller(*it, *min_it)) { min_it = it; } if (strategy.larger(*it, *max_it)) { max_it = it; } } } template static inline void sort(R& range) { #if defined(USE_SMOOTH_SORT) smoothsort::sort(boost::begin(range), boost::end(range)); #elif defined(USE_MERGE_SORT) comparing::merge_sort(boost::begin(range), boost::end(range), std::less

()); #else std::sort(boost::begin(range), boost::end(range)); #endif } } // namespace detail #endif // DOXYGEN_NO_DETAIL // Completely reworked version from source at: // http://www.ddj.com/architect/201806315 // also available at http://marknelson.us/2007/08/22/convex template class graham { private: typedef typename cs_tag

::type cs_tag; typedef typename std::vector

container; typedef typename std::vector

::const_iterator iterator; typedef typename std::vector

::const_reverse_iterator rev_iterator; container m_lower_hull; container m_upper_hull; container m_copied_input; public: // Default constructor, ranges can be added using "add_range" but note they'll be copied inline graham() { } // Constructor with a range template inline graham(const Range& range) { handle_range(range); } template inline void get(OutputIterator out) { for (iterator it = m_upper_hull.begin(); it != m_upper_hull.end(); ++it, ++out) { *out = *it; } // STL Port does not accept iterating from rbegin+1 to rend std::size_t size = m_lower_hull.size(); if (size > 0) { rev_iterator it = m_lower_hull.rbegin() + 1; for (std::size_t i = 1; i < size; ++i, ++it, ++out) { *out = *it; } } } // Note / // TODO: // Consider if it is better to create an iterator over a multi, which is then used here, // instead of copying the range // It makes it slightly more complicated but avoids the copy, which is attractive because // multi-polygons (where it is used for) can be large. template inline void add_range(const Range& range) { std::copy(boost::begin(range), boost::end(range), std::back_inserter(m_copied_input)); } inline void handle_input() { handle_range(m_copied_input); } private: template inline void handle_range(const Range& range) { typedef typename boost::range_const_iterator::type range_iterator; // Polygons with three corners, or closed with 4 points, are always convex if (boost::size(range) <= 3) { for (range_iterator it = boost::begin(range); it != boost::end(range); ++it) { m_upper_hull.push_back(*it); } return; } // Get min/max (in most cases left / right) points range_iterator left_it, right_it; typename strategy_compare::type comparing; detail::get_extremes(range, left_it, right_it, comparing); // Bounding left/right points container lower_points, upper_points; assign_range(range, left_it, right_it, lower_points, upper_points); detail::sort(lower_points); detail::sort(upper_points); build_half_hull<1>(lower_points, m_lower_hull, *left_it, *right_it); build_half_hull<-1>(upper_points, m_upper_hull, *left_it, *right_it); } template inline void assign_range(const Range& range, const RangeIterator& left_it, const RangeIterator& right_it, container& lower_points, container& upper_points) { typename strategy_side::type side; // Put points in one of the two output sequences for (RangeIterator it = boost::begin(range); it != boost::end(range); ++it) { if (it != left_it && it != right_it) { int dir = side.side(*left_it, *right_it, *it); if ( dir < 0 ) { upper_points.push_back(*it); } else { lower_points.push_back(*it); } } } } template inline void build_half_hull(const container& input, container& output, const P& left, const P& right) { output.push_back(left); for(iterator it = input.begin(); it != input.end(); ++it) { add_to_hull(*it, output); } add_to_hull(right, output); } template inline void add_to_hull(const P& p, container& output) { typename strategy_side::type side; output.push_back(p); register std::size_t output_size = output.size(); while (output_size >= 3) { rev_iterator rit = output.rbegin(); const P& last = *rit++; const P& last2 = *rit++; if (Factor * side.side(*rit, last, last2) <= 0) { // Remove last two points from stack, and add last again // This is much faster then erasing the one but last. output.pop_back(); output.pop_back(); output.push_back(last); output_size--; } else { return; } } } }; }} // namespace strategy::convex_hull #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_convex_hull { typedef strategy::convex_hull::graham

type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_AGNOSTIC_CONVEX_HULL_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/agnostic/agn_simplify.hpp000066400000000000000000000157621177067165300275640ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP #define GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP #include #include //#define GL_DEBUG_SIMPLIFY #ifdef GL_DEBUG_SIMPLIFY #include #include #include #endif namespace ggl { namespace strategy { namespace simplify { #ifndef DOXYGEN_NO_DETAIL namespace detail { /*! \brief Small wrapper around a point, with an extra member "included" \details - We could implement a complete point as well but that is not necessary - We could derive from ggl::point but we need the original later on, including extra members; besides that it is not necessary to copy points during the algorithm \tparam the enclosed point type */ template struct douglas_peucker_point { const P& p; bool included; inline douglas_peucker_point(const P& ap) : p(ap) , included(false) {} inline douglas_peucker_point

operator=(const douglas_peucker_point

& other) { return douglas_peucker_point

(*this); } }; } #endif // DOXYGEN_NO_DETAIL /*! \brief Implements the simplify algorithm. \ingroup simplify \details The douglas_peucker strategy simplifies a linestring, ring or vector of points using the well-known Douglas-Peucker algorithm. For the algorithm, see for example: \see http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm \see http://www2.dcs.hull.ac.uk/CISRG/projects/Royal-Inst/demos/dp.html \tparam R boost range \tparam O_IT output iterator \tparam PSDS point-segment distance strategy to be used \note This strategy uses itself a point-segment-distance strategy which can be specified \author Barend and Maarten, 1995/1996 \author Barend, revised for Generic Geometry Library, 2008 */ template class douglas_peucker { typedef typename point_type::type P; typedef detail::douglas_peucker_point

DP; typedef typename std::vector::iterator DIT; typedef typename PSDS::return_type RET; inline void consider(DIT begin, DIT end, const RET& max_dist, int& n, const PSDS& ps_distance_strategy) const { size_t size = end - begin; // size must be at least 3 here: we want to consider a candidate point between begin and end if (size <= 2) { #ifdef GL_DEBUG_SIMPLIFY if (begin != end) { std::cout << "ignore between " << begin->p << " and " << (end - 1)->p << " size=" << size << std::endl; } std::cout << "return because size=" << size << std::endl; #endif return; } DIT last = end - 1; #ifdef GL_DEBUG_SIMPLIFY std::cout << "find between " << begin->p << " and " << last->p << " size=" << size << std::endl; #endif // Find most distance point, compare to the current segment ggl::segment s(begin->p, last->p); RET md(-1.0); // any value < 0 DIT candidate; for(DIT it = begin + 1; it != last; it++) { RET dist = ps_distance_strategy(it->p, s); #ifdef GL_DEBUG_SIMPLIFY std::cout << "consider " << it->p << " at " << dist.value() << (dist.value() > max_dist.value() ? " maybe" : " no") << std::endl; #endif if (dist > md) { md = dist; candidate = it; } } // If a point is found, set the include flag and handle segments in between recursively if (md > max_dist) { #ifdef GL_DEBUG_SIMPLIFY std::cout << "use " << candidate->p << std::endl; #endif candidate->included = true; n++; consider(begin, candidate + 1, max_dist, n, ps_distance_strategy); consider(candidate, end, max_dist, n, ps_distance_strategy); } } public : typedef PSDS distance_strategy_type; /*! \brief Call simplification on an iterator pair */ inline void simplify(const R& range, O_IT out, double max_distance) const { PSDS strategy; // Init the output, a vector of references to all points // Note Geometry Algorithms suggest here // http://geometryalgorithms.com/Archive/algorithm_0205/algorithm_0205.htm // to "STAGE 1: Vertex Reduction within max_distance of prior vertex cluster" // However, that is not correct: a vertex within the specified distance might be // excluded here, but might be a better candidate for final inclusion than the point before. std::vector ref_candidates(boost::begin(range), boost::end(range)); // Include first and last point of line, they are always part of the line int n = 2; ref_candidates.front().included = true; ref_candidates.back().included = true; // Get points, recursively, including them if they are further away than the specified distance typedef typename PSDS::return_type RET; consider(boost::begin(ref_candidates), boost::end(ref_candidates), make_distance_result(max_distance), n, strategy); // Copy included elements to the output (might be changed using copy_if) for(typename std::vector::const_iterator it = boost::begin(ref_candidates); it != boost::end(ref_candidates); it++) { if (it->included) { *out = it->p; out++; } } } }; } } } // namespace ggl #endif // GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/agnostic/agn_within.hpp000066400000000000000000000125471177067165300272300ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_AGNOSTIC_WITHIN_HPP #define GGL_STRATEGY_AGNOSTIC_WITHIN_HPP #include #include namespace ggl { namespace strategy { namespace within { /*! \brief Within detection using winding rule \tparam P point type of point to examine \tparam PS point type of segments, defaults to P \author Barend Gehrels \note The implementation is inspired by terralib http://www.terralib.org (LGPL) \note but totally revised afterwards, especially for cases on segments \note More efficient (less comparisons and no divison) than the cross count algorithm \note Only dependant on "side", -> agnostic, suitable for latlong */ template class winding { private : typedef typename coordinate_type

::type PT; typedef typename coordinate_type::type ST; /*! subclass to keep state */ struct windings { int count; bool touches; const P& p; inline explicit windings(const P& ap) : count(0) , touches(false) , p(ap) {} inline bool within() const { return ! touches && count != 0; } }; template static inline int check_touch(const segment& s, windings& state) { const PT& p = get(state.p); const ST& s1 = get<0, D>(s); const ST& s2 = get<1, D>(s); if ((s1 <= p && s2 >= p) || (s2 <= p && s1 >= p)) { state.touches = true; } return 0; } template static inline int check_segment(const segment& s, windings& state) { const PT& p = get(state.p); const ST& s1 = get<0, D>(s); const ST& s2 = get<1, D>(s); // Check if one of segment endpoints is at same level of point bool eq1 = math::equals(s1, p); bool eq2 = math::equals(s2, p); if (eq1 && eq2) { // Both equal p -> segment is horizontal (or vertical for D=0) // The only thing which has to be done is check if point is ON segment return check_touch<1 - D>(s, state); } return eq1 ? (s2 > p ? 1 : -1) // P on level s1, UP/DOWN depending on s2 : eq2 ? (s1 > p ? -1 : 1) // idem : s1 < p && s2 > p ? 2 // P between s1 -> s2 --> UP : s2 < p && s1 > p ? -2 // P between s2 -> s1 --> DOWN : 0; } public : typedef windings state_type; inline bool operator()(const segment& s, state_type& state) const { int cnt = check_segment<1>(s, state); if (cnt != 0) { typedef typename strategy_side::type, P, PS>::type SS; typename select_coordinate_type::type side = SS::side(s, state.p); if (math::equals(side, 0)) { // Point is lying on segment state.touches = true; state.count = 0; return false; } // Side is NEG for right, POS for left. // CNT is -2 for down, 2 for up (or -1/1) // Side positive thus means UP and LEFTSIDE or DOWN and RIGHTSIDE // See accompagnying figure (TODO) int sd = (side > 0 ? 1 : -1) * cnt; if (sd > 0) { state.count += cnt; } } return ! state.touches; } }; } // namespace within } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_within { typedef strategy::within::winding type; }; template struct strategy_within { typedef strategy::within::winding type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_AGNOSTIC_WITHIN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/000077500000000000000000000000001177067165300245215ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_area.hpp000066400000000000000000000057051177067165300271620ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_AREA_HPP #define GGL_STRATEGY_CARTESIAN_AREA_HPP #include #include #include #include namespace ggl { namespace strategy { namespace area { /*! \brief Strategy functor for area calculation on point_xy points \details Calculates area using well-known triangulation algorithm \tparam PS point type of segments \par Concepts for PS: - specialized point_traits class */ template class by_triangles { public : // If user specified a calculation type, use that type, // whatever it is and whatever the point-type is. // Else, use the pointtype, but at least double typedef typename boost::mpl::if_c < boost::is_void::type::value, typename select_most_precise < typename coordinate_type::type, double >::type, CalculationType >::type return_type; private : struct summation { return_type sum; inline summation() : sum(return_type()) { // Currently only 2D areas are supported assert_dimension(); } inline return_type area() const { return_type result = sum; result *= 0.5; return result; } }; public : typedef summation state_type; inline bool operator()(segment const& s, state_type& state) const { // SUM += x2 * y1 - x1 * y2; state.sum += get<1, 0>(s) * get<0, 1>(s) - get<0, 0>(s) * get<1, 1>(s); return true; } }; } // namespace area } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_area { typedef strategy::area::by_triangles

type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_AREA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_centroid.hpp000066400000000000000000000261361177067165300300620ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_CENTROID_HPP #define GGL_STRATEGY_CARTESIAN_CENTROID_HPP #include #include #include #include #include #include #include #include namespace ggl { namespace strategy { namespace centroid { /*! \brief Centroid calculation \details Geolib original version, \par Template parameters and concepts: see bashein_detmer \author Barend and Maarten, 1995/1996 \author Revised for templatized library, Barend Gehrels, 2007 \note The results are slightly different from Bashein/Detmer, so probably slightly wrong. */ template class geolib1995 { private : typedef typename select_most_precise < typename select_coordinate_type::type, double >::type T; /*! subclass to keep state */ struct sums { PC sum_ms, sum_m; sums() { assign_point(sum_m, T()); assign_point(sum_ms, T()); } void centroid(PC& point) { point = sum_ms; if (get<0>(sum_m) != 0 && get<1>(sum_m) != 0) { multiply_value(point, 0.5); divide_point(point, sum_m); } else { // exception? } } }; public : typedef sums state_type; inline bool operator()(const segment& s, state_type& state) const { /* Algorithm: For each segment: begin dx = x2 - x1; dy = y2 - y1; sx = x2 + x1; sy = y2 + y1; mx = dx * sy; my = sx * dy; sum_mx += mx; sum_my += my; sum_msx += mx * sx; sum_msy += my * sy; end; return POINT(0.5 * sum_msx / sum_mx, 0.5 * sum_msy / sum_my); */ PS diff = s.second, sum = s.second; subtract_point(diff, s.first); add_point(sum, s.first); // We might create an arithmatic operation for this. PS m; get<0>(m) = get<0>(diff) * get<1>(sum); get<1>(m) = get<0>(sum) * get<1>(diff); add_point(state.sum_m, m); multiply_point(m, sum); add_point(state.sum_ms, m); return true; } }; /*! \brief Centroid calculation using algorith Bashein / Detmer \details Calculates centroid using triangulation method published by Bashein / Detmer \tparam PC point type of centroid to calculate \tparam PS point type of segments, defaults to PC \par Concepts for PC and PS: - specialized point_traits class \author Adapted from "Centroid of a Polygon" by Gerard Bashein and Paul R. Detmer, in "Graphics Gems IV", Academic Press, 1994 \par Research notes The algorithm gives the same results as Oracle and PostGIS but differs from MySQL (tried 5.0.21 / 5.0.45 / 5.0.51a / 5.1.23). Without holes: - this: POINT(4.06923363095238 1.65055803571429) - geolib: POINT(4.07254 1.66819) - MySQL: POINT(3.6636363636364 1.6272727272727)' - PostGIS: POINT(4.06923363095238 1.65055803571429) - Oracle: 4.06923363095238 1.65055803571429 - SQL Server: POINT(4.06923362245959 1.65055804168294) Statements: - \b MySQL/PostGIS: select AsText(Centroid(GeomFromText('POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2 ,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3))'))) - \b Oracle: select sdo_geom.sdo_centroid(sdo_geometry(2003, null, null, sdo_elem_info_array(1, 1003, 1), sdo_ordinate_array(2,1.3,2.4,1.7,2.8,1.8 ,3.4,1.2,3.7,1.6,3.4,2,4.1,3,5.3,2.6,5.4,1.2,4.9,0.8,2.9,0.7,2,1.3)) , mdsys.sdo_dim_array(mdsys.sdo_dim_element('x',0,10,.00000005) ,mdsys.sdo_dim_element('y',0,10,.00000005))) from dual - \b SQL Server 2008: select geometry::STGeomFromText('POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2 ,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3))',0) .STCentroid() .STAsText() With holes: - this: POINT(4.04663 1.6349) - geolib: POINT(4.04675 1.65735) - MySQL: POINT(3.6090580503834 1.607573932092) - PostGIS: POINT(4.0466265060241 1.63489959839357) - Oracle: 4.0466265060241 1.63489959839357 - SQL Server: POINT(4.0466264962959677 1.6348996057331333) Statements: - \b MySQL/PostGIS: select AsText(Centroid(GeomFromText('POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2 ,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3) ,(4 2,4.2 1.4,4.8 1.9,4.4 2.2,4 2))'))); - \b Oracle: select sdo_geom.sdo_centroid(sdo_geometry(2003, null, null , sdo_elem_info_array(1, 1003, 1, 25, 2003, 1) , sdo_ordinate_array(2,1.3,2.4,1.7,2.8,1.8,3.4,1.2,3.7,1.6,3.4,2,4.1,3,5.3 ,2.6,5.4,1.2,4.9,0.8,2.9,0.7,2,1.3,4,2, 4.2,1.4, 4.8,1.9, 4.4,2.2, 4,2)) , mdsys.sdo_dim_array(mdsys.sdo_dim_element('x',0,10,.00000005) ,mdsys.sdo_dim_element('y',0,10,.00000005))) from dual */ template < typename CentroidPointType, typename SegmentPointType = CentroidPointType, typename CalculationType = void > class bashein_detmer { private : // If user specified a calculation type, use that type, // whatever it is and whatever the point-type(s) are. // Else, use the most appropriate coordinate type // of the two points, but at least double typedef typename boost::mpl::if_c < boost::is_void::type::value, typename select_most_precise < typename select_coordinate_type < CentroidPointType, SegmentPointType >::type, double >::type, CalculationType >::type calc_type; /*! subclass to keep state */ struct sums { calc_type sum_a2; calc_type sum_x; calc_type sum_y; inline sums() : sum_a2(calc_type()) , sum_x(calc_type()) , sum_y(calc_type()) { typedef calc_type ct; //std::cout << "-> calctype: " << typeid(ct).name() // << " size: " << sizeof(ct) // << " init: " << sum_a2 // << std::endl; } inline void centroid(CentroidPointType& point) { if (sum_a2 != 0) { calc_type const v3 = 3; calc_type const a3 = v3 * sum_a2; typedef typename ggl::coordinate_type < CentroidPointType >::type coordinate_type; set<0>(point, boost::numeric_cast(sum_x / a3)); set<1>(point, boost::numeric_cast(sum_y / a3)); } else { // exception? } } }; public : typedef sums state_type; inline bool operator()(segment const& s, state_type& state) const { /* Algorithm: For each segment: begin ai = x1 * y2 - x2 * y1; sum_a2 += ai; sum_x += ai * (x1 + x2); sum_y += ai * (y1 + y2); end return POINT(sum_x / (3 * sum_a2), sum_y / (3 * sum_a2) ) */ // Get coordinates and promote them to calc_type calc_type const x1 = boost::numeric_cast(get<0, 0>(s)); calc_type const y1 = boost::numeric_cast(get<0, 1>(s)); calc_type const x2 = boost::numeric_cast(get<1, 0>(s)); calc_type const y2 = boost::numeric_cast(get<1, 1>(s)); calc_type const ai = x1 * y2 - x2 * y1; state.sum_a2 += ai; state.sum_x += ai * (x1 + x2); state.sum_y += ai * (y1 + y2); return true; } }; } // namespace centroid } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_centroid { typedef strategy::centroid::bashein_detmer type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_CENTROID_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_compare.hpp000066400000000000000000000027101177067165300276710ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_COMPARE_HPP #define GGL_STRATEGY_CARTESIAN_COMPARE_HPP #include #include #include namespace ggl { namespace strategy { namespace compare { /*! \brief Compare (in one direction) strategy for cartesian coordinates \ingroup util \tparam P point-type \tparam D dimension */ template struct euclidian { static inline bool smaller(const P& p1, const P& p2) { return get(p1) < get(p2); } static inline bool larger(const P& p1, const P& p2) { return get(p1) > get(p2); } }; } // namespace compare } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_compare { typedef strategy::compare::euclidian type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_COMPARE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_distance.hpp000066400000000000000000000144461177067165300300460ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_DISTANCE_HPP #define GGL_STRATEGY_CARTESIAN_DISTANCE_HPP #include #include #include #include #include #include #include #include #include #include #include // Helper geometry #include namespace ggl { namespace strategy { namespace distance { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct compute_pythagoras { static inline T apply(P1 const& p1, P2 const& p2) { T const c1 = boost::numeric_cast(get(p2)); T const c2 = boost::numeric_cast(get(p1)); T const d = c1 - c2; return d * d + compute_pythagoras::apply(p1, p2); } }; template struct compute_pythagoras { static inline T apply(P1 const&, P2 const&) { return boost::numeric_cast(0); } }; } #endif /*! \brief Strategy for distance point to point: pythagoras \ingroup distance \tparam P1 first point type \tparam P2 optional, second point type, defaults to first point type \par Concepts for P1 and P2: - specialized point_traits class */ template < typename P1, typename P2 = P1, typename CalculationType = void > struct pythagoras { typedef typename boost::mpl::if_c < boost::is_void::type::value, typename select_coordinate_type < P1, P2 >::type, CalculationType >::type calculation_type; typedef cartesian_distance return_type; inline return_type operator()(P1 const& p1, P2 const& p2) const { BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); // Calculate distance using Pythagoras // (Leave comment above for Doxygen) assert_dimension_equal(); return return_type(detail::compute_pythagoras < P1, P2, dimension::value, calculation_type >::apply(p1, p2)); } }; /*! \brief Strategy for distance point to segment \ingroup distance \details Calculates distance using projected-point method, and (optionally) Pythagoras \author Adapted from: http://geometryalgorithms.com/Archive/algorithm_0102/algorithm_0102.htm \tparam P point type \tparam SEG segment type \tparam S strategy, optional, defaults to pythagoras \par Concepts for S: - cartesian_distance operator(P,P) */ template < typename P, typename Segment, typename Strategy = pythagoras::type> > struct xy_point_segment { typedef typename select_coordinate_type::type coordinate_type; typedef cartesian_distance return_type; typedef Strategy distance_strategy_type; // OBSOLETE! typedef Strategy point_strategy_type; inline return_type operator()(P const& p, Segment const& s) const { assert_dimension_equal(); /* Algorithm POINT v(x2 - x1, y2 - y1); POINT w(px - x1, py - y1); c1 = w . v c2 = v . v b = c1 / c2 RETURN POINT(x1 + b * vx, y1 + b * vy); */ typedef typename boost::remove_const < typename point_type::type >::type segment_point_type; segment_point_type v, w; // TODO // ASSUMPTION: segment // SOLVE THIS USING OTHER FUNCTIONS using get<,> copy_coordinates(s.second, v); copy_coordinates(p, w); subtract_point(v, s.first); subtract_point(w, s.first); Strategy strategy; coordinate_type c1 = dot_product(w, v); if (c1 <= 0) { return strategy(p, s.first); } coordinate_type c2 = dot_product(v, v); if (c2 <= c1) { return strategy(p, s.second); } // Even in case of char's, we have to turn to a point // because of the division. coordinate_type b = c1 / c2; // Note that distances with integer coordinates do NOT work because // - the project point is integer // - if we solve that, the used distance_strategy cannot handle double points segment_point_type projected; copy_coordinates(s.first, projected); multiply_value(v, b); add_point(projected, v); return strategy(p, projected); } }; }} // namespace strategy::distance #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_distance { typedef strategy::distance::pythagoras type; }; template struct strategy_distance_segment { typedef typename point_type::type segment_point_type; typedef strategy::distance::xy_point_segment < Point, Segment, typename strategy_distance < cartesian_tag, cartesian_tag, Point, segment_point_type >::type > type; }; #endif template struct strategy_tag > { typedef strategy_tag_distance_point_point type; }; template struct strategy_tag > { typedef strategy_tag_distance_point_segment type; }; } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_DISTANCE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_envelope.hpp000066400000000000000000000026751177067165300300720ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_ENVELOPE_HPP #define GGL_STRATEGY_CARTESIAN_ENVELOPE_HPP #include #include #include namespace ggl { namespace strategy { namespace envelope { // envelope calculation strategy for xy-points template struct combine_xy { struct state { B& m_box; state(B& box) : m_box(box) { assign_inverse(m_box); } }; typedef state state_type; void operator()(const P& p, state_type& s) const { ggl::combine(s.m_box, p); } }; } // namespace envelope } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_envelope { typedef strategy::envelope::combine_xy type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_ENVELOPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_intersect.hpp000066400000000000000000000330061177067165300302450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_INTERSECTION_HPP #define GGL_STRATEGY_CARTESIAN_INTERSECTION_HPP #include #include #include #include #include namespace ggl { class relate_cartesian_segments_exception : public ggl::exception { public: relate_cartesian_segments_exception() {} virtual char const* what() const throw() { return "GGL: Internal error, unexpected case in relate_segment"; } }; namespace strategy { namespace intersection { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct segment_interval { template static inline void arrange(S const& s, T& s_1, T& s_2, bool& swapped) { s_1 = get<0, D>(s); s_2 = get<1, D>(s); if (s_1 > s_2) { std::swap(s_1, s_2); swapped = true; } } }; } #endif /*! \see http://mathworld.wolfram.com/Line-LineIntersection.html */ template struct relate_cartesian_segments { typedef typename F::return_type RETURN_TYPE; typedef typename F::segment_type1 S1; typedef typename F::segment_type2 S2; typedef typename point_type::type P; BOOST_CONCEPT_ASSERT( (concept::Point

) ); BOOST_CONCEPT_ASSERT( (concept::ConstSegment) ); BOOST_CONCEPT_ASSERT( (concept::ConstSegment) ); typedef typename select_coordinate_type::type T; /// Relate segments a and b static inline RETURN_TYPE relate(S1 const& a, S2 const& b) { T dx_a = get<1, 0>(a) - get<0, 0>(a); // distance in x-dir T dx_b = get<1, 0>(b) - get<0, 0>(b); T dy_a = get<1, 1>(a) - get<0, 1>(a); // distance in y-dir T dy_b = get<1, 1>(b) - get<0, 1>(b); return relate(a, b, dx_a, dy_a, dx_b, dy_b); } /// Relate segments a and b using precalculated differences. This can save two or four substractions in many cases static inline RETURN_TYPE relate(S1 const& a, S2 const& b, T const& dx_a, T const& dy_a, T const& dx_b, T const& dy_b) { T wx = get<0, 0>(a) - get<0, 0>(b); T wy = get<0, 1>(a) - get<0, 1>(b); // Calculate determinants - Cramers rule T d = (dy_b * dx_a) - (dx_b * dy_a); T da = (dx_b * wy) - (dy_b * wx); T db = (dx_a * wy) - (dy_a * wx); if(! math::equals(d, 0)) { // Determinant d is nonzero. Rays do intersect. This is the normal case. // ra/rb: ratio 0-1 where intersection divides A/B // Maybe: // The ra/rb calculation can probably also be avoided, only necessary to calculate the points themselves // On segment: 0 <= r <= 1 // where: r==0 and r==1 are special cases // --> r=0 if and only if da==0 (d != 0) [this is also checked below] // --> r=1 da==d // --> da/d > 0 if da==positive and d==positive OR da==neg and d==neg // --> da/d < 1 if (both positive) da < d or (negative) da > d, e.g. -2 > -4 // --> it would save a division but makes it complexer double ra = double(da) / double(d); double rb = double(db) / double(d); return F::rays_intersect(ra >= 0 && ra <= 1 && rb >= 0 && rb <= 1, ra, rb, dx_a, dy_a, dx_b, dy_b, wx, wy, a, b); } if(math::equals(da, 0) && math::equals(db, 0)) { // Both da & db are zero. Segments are collinear. We'll find out how. return relate_collinear(a, b, dx_a, dy_a, dx_b, dy_b); } // Segments are parallel (might still be opposite but this is probably never interesting) return F::parallel(); } private : /// Relate segments known collinear static inline RETURN_TYPE relate_collinear(S1 const& a, S2 const& b, T const& dx_a, T const& dy_a, T const& dx_b, T const& dy_b) { // All ca. 200 lines are about collinear rays // The intersections, if any, are always boundary points of the segments. No need to calculate anything. // However we want to find out HOW they intersect, there are many cases. // Most sources only provide the intersection (above) or that there is a collinearity (but not the points) // or some spare sources give the intersection points (calculated) but not how they align. // This source tries to give everything and still be efficient. // It is therefore (and because of the extensive clarification comments) rather long... // \see http://mpa.itc.it/radim/g50history/CMP/4.2.1-CERL-beta-libes/file475.txt // \see http://docs.codehaus.org/display/GEOTDOC/Point+Set+Theory+and+the+DE-9IM+Matrix // \see http://mathworld.wolfram.com/Line-LineIntersection.html // Because of collinearity the case is now one-dimensional and can be checked using intervals // We arrange either horizontally or vertically // We get then two intervals: // a_1-------------a_2 where a_1 < a_2 // b_1-------------b_2 where b_1 < b_2 // In all figures below a_1/a_2 denotes arranged intervals, a1-a2 or a2-a1 are still unarranged T a_1, a_2, b_1, b_2; bool a_swapped = false, b_swapped = false; if (math::equals(dx_b, 0)) { // Vertical -> Check y-direction detail::segment_interval::arrange(a, a_1, a_2, a_swapped); detail::segment_interval::arrange(b, b_1, b_2, b_swapped); } else { // Check x-direction detail::segment_interval::arrange(a, a_1, a_2, a_swapped); detail::segment_interval::arrange(b, b_1, b_2, b_swapped); } // First handle "disjoint", probably common case. // 2 cases: a_1----------a_2 b_1-------b_2 or B left of A if (a_2 < b_1 || a_1 > b_2) { return F::collinear_disjoint(); } // Then handle "equal", in polygon neighbourhood comparisons also a common case // Check if segments are equal... bool a1_eq_b1 = math::equals(get<0, 0>(a), get<0, 0>(b)) && math::equals(get<0, 1>(a), get<0, 1>(b)); bool a2_eq_b2 = math::equals(get<1, 0>(a), get<1, 0>(b)) && math::equals(get<1, 1>(a), get<1, 1>(b)); if (a1_eq_b1 && a2_eq_b2) { return F::segment_equal(a, false); } // ... or opposite equal bool a1_eq_b2 = math::equals(get<0, 0>(a), get<1, 0>(b)) && math::equals(get<0, 1>(a), get<1, 1>(b)); bool a2_eq_b1 = math::equals(get<1, 0>(a), get<0, 0>(b)) && math::equals(get<1, 1>(a), get<0, 1>(b)); if (a1_eq_b2 && a2_eq_b1) { return F::segment_equal(a, true); } // Degenerate cases: segments of single point, lying on other segment, non disjoint if (math::equals(dx_a, 0) && math::equals(dy_a, 0)) { return F::degenerate(a, true); } if (math::equals(dx_b, 0) && math::equals(dy_b, 0)) { return F::degenerate(b, false); } // The rest below will return one or two intersections. // The delegated class can decide which is the intersection point, or two, build the Intersection Matrix (IM) // For IM it is important to know which relates to which. So this information is given, // without performance penalties to intersection calculation bool has_common_points = a1_eq_b1 || a1_eq_b2 || a2_eq_b1 || a2_eq_b2; // "Touch" -> one intersection point -> one but not two common points // --------> A (or B) // <---------- B (or A) // a_2==b_1 (b_2==a_1 or a_2==b1) // The check a_2/b_1 is necessary because it excludes cases like // -------> // ---> // ... which are handled lateron // Corresponds to 4 cases, of which the equal points are determined above // 1: a1---->a2 b1--->b2 ("a" first) // 2: a2<----a1 b2<---b1 ("b" first) // 3: a1---->a2 b2<---b1 ("t": to) // 4: a2<----a1 b1--->b2 ("f": from) // Where the arranged forms have two forms: // a_1-----a_2/b_1-------b_2 or reverse (B left of A) if (has_common_points && (math::equals(a_2, b_1) || math::equals(b_2, a_1))) { if (a2_eq_b1) return F::collinear_touch(get<1, 0>(a), get<1, 1>(a), false, 'A'); if (a2_eq_b2) return F::collinear_touch(get<1, 0>(a), get<1, 1>(a), true, 'T'); if (a1_eq_b2) return F::collinear_touch(get<0, 0>(a), get<0, 1>(a), false, 'B'); if (a1_eq_b1) return F::collinear_touch(get<0, 0>(a), get<0, 1>(a), true, 'F'); } // "Touch/within" -> there are common points and also an intersection of interiors: // Corresponds to many cases: // Case 1: a1------->a2 Case 5: a1-->a2 Case 9: a1--->a2 // b1--->b2 b1------->b2 b1---------b2 // Case 2: a2<-------a1 // b1----b2 Et cetera // Case 3: a1------->a2 // b2<---b1 // Case 4: a2<-------a1 // b2<---b1 // For case 1-4: a_1 < (b_1 or b_2) < a_2, two intersections are equal to segment B // For case 5-8: b_1 < (a_1 or a_2) < b_2, two intersections are equal to segment A if (has_common_points) { bool a_in_b = (b_1 < a_1 && a_1 < b_2) || (b_1 < a_2 && a_2 < b_2); if (a2_eq_b2) return F::collinear_interior_boundary_intersect(a_in_b ? a : b, a_in_b, false); if (a1_eq_b2) return F::collinear_interior_boundary_intersect(a_in_b ? a : b, a_in_b, true); if (a2_eq_b1) return F::collinear_interior_boundary_intersect(a_in_b ? a : b, a_in_b, true); if (a1_eq_b1) return F::collinear_interior_boundary_intersect(a_in_b ? a : b, a_in_b, false); } bool opposite = a_swapped ^ b_swapped; // "Inside", a completely within b or b completely within a // 2 cases: // case 1: // a_1---a_2 -> take A's points as intersection points // b_1------------b_2 // case 2: // a_1------------a_2 // b_1---b_2 -> take B's points if (a_1 > b_1 && a_2 < b_2) { // A within B return F::collinear_a_in_b(a, opposite); } if (b_1 > a_1 && b_2 < a_2) { // B within A return F::collinear_b_in_a(b, opposite); } // Now that all cases with equal,touch,inside,disjoint,degenerate are handled the only thing left is an overlap // Case 1: a1--------->a2 a_1---------a_2 // b1----->b2 b_1------b_2 // Case 2: a2<---------a1 a_1---------a_2 a_swapped // b1----->b2 b_1------b_2 // Case 3: a1--------->a2 a_1---------a_2 // b2<-----b1 b_1------b_2 b_swapped // Case 4: a2<-------->a1 a_1---------a_2 a_swapped // b2<-----b1 b_1------b_2 b_swapped // Case 5: a1--------->a2 a_1---------a_2 // b1----->b2 b1--------b2 // Case 6: a2<---------a1 // b1----->b2 // Case 7: a1--------->a2 // b2<-----b1 // Case 8: a2<-------->a1 // b2<-----b1 if (a_1 < b_1 && b_1 < a_2) { // Case 4,2,3,1 return a_swapped && b_swapped ? F::collinear_overlaps(get<0, 0>(a), get<0, 1>(a), get<1, 0>(b), get<1, 1>(b), opposite) : a_swapped ? F::collinear_overlaps(get<0, 0>(a), get<0, 1>(a), get<0, 0>(b), get<0, 1>(b), opposite) : b_swapped ? F::collinear_overlaps(get<1, 0>(a), get<1, 1>(a), get<1, 0>(b), get<1, 1>(b), opposite) : F::collinear_overlaps(get<1, 0>(a), get<1, 1>(a), get<0, 0>(b), get<0, 1>(b), opposite) ; } if (b_1 < a_1 && a_1 < b_2) { // Case 8, 6, 7, 5 return a_swapped && b_swapped ? F::collinear_overlaps(get<1, 0>(a), get<1, 1>(a), get<0, 0>(b), get<0, 1>(b), opposite) : a_swapped ? F::collinear_overlaps(get<1, 0>(a), get<1, 1>(a), get<1, 0>(b), get<1, 1>(b), opposite) : b_swapped ? F::collinear_overlaps(get<0, 0>(a), get<0, 1>(a), get<0, 0>(b), get<0, 1>(b), opposite) : F::collinear_overlaps(get<0, 0>(a), get<0, 1>(a), get<1, 0>(b), get<1, 1>(b), opposite) ; } // Nothing should goes through. If any we have made an error // TODO: proper exception throw relate_cartesian_segments_exception(); } }; }} // namespace strategy::intersection } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_INTERSECTION_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_side.hpp000066400000000000000000000037051177067165300271740ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_SIDE_HPP #define GGL_STRATEGY_CARTESIAN_SIDE_HPP #include #include #include namespace ggl { namespace strategy { namespace side { template struct xy_side { // Check at which side of a segment a point lies: // left of segment (> 0), right of segment (< 0), on segment (0) // In fact this is twice the area of a triangle static inline typename select_coordinate_type::type side(const segment& s, const P& p) { typedef typename select_coordinate_type::type T; // Todo: might be changed to subtract_point T dx = get<1, 0>(s) - get<0, 0>(s); T dy = get<1, 1>(s) - get<0, 1>(s); T dpx = get<0>(p) - get<0, 0>(s); T dpy = get<1>(p) - get<0, 1>(s); return dx * dpy - dy * dpx; } static inline int side(const P& p0, const P& p1, const P& p2) { typename coordinate_type

::type s = side(segment(p0, p1), p2); return s > 0 ? 1 : s < 0 ? -1 : 0; } }; } // namespace side } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_side { typedef strategy::side::xy_side type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_SIDE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/cartesian/cart_within.hpp000066400000000000000000000054241177067165300275520ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_CARTESIAN_WITHIN_HPP #define GGL_STRATEGY_CARTESIAN_WITHIN_HPP #include namespace ggl { namespace strategy { namespace within { /*! \brief Within detection using cross counting \author adapted from Randolph Franklin algorithm \author Barend and Maarten, 1995 \author Revised for templatized library, Barend Gehrels, 2007 \return true if point is in ring, works for closed rings in both directions \note Does NOT work correctly for point ON border */ template struct franklin { private : /*! subclass to keep state */ struct crossings { P p; bool crosses; explicit crossings(const P& ap) : p(ap) , crosses(false) {} bool within() const { return crosses; } }; public : typedef crossings state_type; inline bool operator()(const segment& s, state_type& state) const { /* Algorithm: if ( ( (y2 <= py && py < y1) || (y1 <= py && py < y2) ) && (px < (x1 - x2) * (py - y2) / (y1 - y2) + x2) ) crosses = ! crosses */ if ( ((get<1, 1>(s) <= get<1>(state.p) && get<1>(state.p) < get<0, 1>(s)) || (get<0, 1>(s) <= get<1>(state.p) && get<1>(state.p) < get<1, 1>(s))) && (get<0>(state.p) < (get<0, 0>(s) - get<1, 0>(s)) * (get<1>(state.p) - get<1, 1>(s)) / (get<0, 1>(s) - get<1, 1>(s)) + get<1, 0>(s)) ) { state.crosses = ! state.crosses; } return true; } }; } // namespace within } // namespace strategy } // namespace ggl #endif // GGL_STRATEGY_CARTESIAN_WITHIN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/distance_result.hpp000066400000000000000000000175751177067165300264700ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_STRATEGIES_DISTANCE_RESULT_HPP #define GGL_GEOMETRY_STRATEGIES_DISTANCE_RESULT_HPP #include #include #include #include #include #include namespace ggl { /*! \brief Encapsulate the results of distance calculation \ingroup distance \details Distance calculation for xy points or xyz points is done by taking the square root. However, for distance comparison drawing the square root is not necessary. Therefore the distance strategies are allowed to return the squares of the distance. This structure contains the distance, and a boolean to indicate if it is squared. It has an automatic conversion to a double value, which does the square root if necessary. \note Thanks to Phil Endecott for his suggestion to change the pair to the double-convertable http://article.gmane.org/gmane.comp.lib.boost.devel/172709/match=greatcircle_distance \note It might be templatized with a T */ template struct cartesian_distance { private : T m_squared_distance; // Because result is square-rooted, for integer, the cast should // go to double and NOT to T typedef typename boost::mpl::if_c < boost::is_integral::type::value, double, T >::type cast_type; public : /// Constructor with a value explicit cartesian_distance(T const& v) : m_squared_distance(v) {} /// Automatic conversion to double or higher precision, /// taking squareroot if necessary inline operator cast_type() const { #if defined(NUMERIC_ADAPTOR_INCLUDED) return boost::sqrt(m_squared_distance); #else return std::sqrt((long double)m_squared_distance); #endif } // Compare squared values inline bool operator<(cartesian_distance const& other) const { return this->m_squared_distance < other.m_squared_distance; } inline bool operator>(cartesian_distance const& other) const { return this->m_squared_distance > other.m_squared_distance; } inline bool operator==(cartesian_distance const& other) const { return this->m_squared_distance == other.m_squared_distance; } // Compare just with a corresponding POD value // Note: this is NOT possible because of the cast to double, // it makes it for the compiler ambiguous which to take /* inline bool operator<(T const& value) const { return this->m_squared_distance < (value * value); } inline bool operator>(T const& value) const { return this->m_squared_distance > (value * value); } inline bool operator==(T const& value) const { return this->m_squared_distance == (value * value); } */ // Utility method to compare without SQRT, but not with method above because for epsilon that // makes no sense... inline bool very_small() const { return m_squared_distance <= std::numeric_limits::epsilon(); } /// The "squared_value" method returns the internal squared value inline T squared_value() const { return m_squared_distance; } /// Make streamable to enable std::cout << ggl::distance( ) template inline friend std::basic_ostream& operator<<(std::basic_ostream& os, cartesian_distance const& d) { // Avoid "ambiguous function call" for MSVC cast_type const sq = d.m_squared_distance; os << #if defined(NUMERIC_ADAPTOR_INCLUDED) boost::sqrt(sq); #else std::sqrt(sq); #endif return os; } }; /* From Phil Endecott, on the list: You can go further. If I'm searching through a long list of points to find the closest to P then I'll avoid the squaring (and conversion to double if my co-ordinates are integers) whenever possible. You can achieve this with a more complex distance proxy: class distance_proxy { double dx; double dy; distance_proxy(double dx_, double dy_): dx(dx_), dy(dy_) {} friend pythag_distance(point,point); public: operator double() { return sqrt(dx*dx+dy*dy); } bool operator>(double d) { return dx>d || dy>d || (dx*dx+dy*dy > d*d); } }; So this is convertible to double, but can be compared to a distance without any need for sqrt() and only multiplication in some cases. Further refinement is possible. Barend: feasable, needs to be templatized by the number of dimensions. For distance it results in a nice "delayed calculation". For searching you might take another approach, first calculate dx, if OK then dy, if OK then the sqrs. So as above but than distance does not need to be calculated. So it is in fact another strategy. */ #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace distance { template struct distance_result_maker { }; template struct distance_result_maker, T> { static inline ggl::cartesian_distance apply(T const& value) { return cartesian_distance(value * value); } }; template struct distance_result_maker { static inline double apply(T const& value) { return value; } }; template struct close_to_zero { static inline bool apply(T const& value) { return value <= std::numeric_limits::epsilon(); } }; template struct close_to_zero > { static inline bool apply(ggl::cartesian_distance const& value) { return value.very_small(); } }; } } #endif /*! \brief Object generator to create instance which can be compared \ingroup distance \details If distance results have to be compared to a certain value it makes sense to use this function to generate a distance result of a certain value, and compare the distance result with this instance. SQRT calculations are then avoided \tparam R distance result type \tparam T arithmetic type, e.g. double \param value the distance to compare with \return the distance result */ template inline R make_distance_result(T const& value) { return detail::distance::distance_result_maker::apply(value); } /*! \brief Utility function to check if a distance is very small \ingroup distance \details Depending on the "distance result" type it checks if it is smaller than epsilon, or (for Cartesian distances) if the square is smaller than epsilon \tparam R the distance result type, either arithmetic or cartesian distance \param value the distance result to check */ template inline bool close_to_zero(T const& value) { return detail::distance::close_to_zero::apply(value); } } // namespace ggl #endif // GGL_GEOMETRY_STRATEGIES_DISTANCE_RESULT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/intersection_result.hpp000066400000000000000000000075751177067165300274030ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_INTERSECTION_RESULT_HPP #define GGL_INTERSECTION_RESULT_HPP #if defined(HAVE_MATRIX_AS_STRING) #include #endif namespace ggl { /*! \brief Dimensionally Extended 9 Intersection Matrix \details \ingroup overlay \see http://gis.hsr.ch/wiki/images/3/3d/9dem_springer.pdf */ struct de9im { int ii, ib, ie, bi, bb, be, ei, eb, ee; inline de9im() : ii(-1), ib(-1), ie(-1) , bi(-1), bb(-1), be(-1) , ei(-1), eb(-1), ee(-1) { } inline de9im(int ii0, int ib0, int ie0, int bi0, int bb0, int be0, int ei0, int eb0, int ee0) : ii(ii0), ib(ib0), ie(ie0) , bi(bi0), bb(bb0), be(be0) , ei(ei0), eb(eb0), ee(ee0) {} inline bool equals() const { return ii >= 0 && ie < 0 && be < 0 && ei < 0 && eb < 0; } inline bool disjoint() const { return ii < 0 && ib < 0 && bi < 0 && bb < 0; } inline bool intersects() const { return ii >= 0 || bb >= 0 || bi >= 0 || ib >= 0; } inline bool touches() const { return ii < 0 && (bb >= 0 || bi >= 0 || ib >= 0); } inline bool crosses() const { return (ii >= 0 && ie >= 0) || (ii == 0); } inline bool overlaps() const { return ii >= 0 && ie >= 0 && ei >= 0; } inline bool within() const { return ii >= 0 && ie < 0 && be < 0; } inline bool contains() const { return ii >= 0 && ei < 0 && eb < 0; } static inline char as_char(int v) { return v >= 0 && v < 10 ? ('0' + char(v)) : '-'; } #if defined(HAVE_MATRIX_AS_STRING) inline std::string matrix_as_string(std::string const& tab, std::string const& nl) const { std::string ret; ret.reserve(9 + tab.length() * 3 + nl.length() * 3); ret += tab; ret += as_char(ii); ret += as_char(ib); ret += as_char(ie); ret += nl; ret += tab; ret += as_char(bi); ret += as_char(bb); ret += as_char(be); ret += nl; ret += tab; ret += as_char(ei); ret += as_char(eb); ret += as_char(ee); return ret; } inline std::string matrix_as_string() const { return matrix_as_string("", ""); } #endif }; struct de9im_segment : public de9im { bool collinear; // true if segments are aligned (for equal,overlap,touch) bool opposite; // true if direction is reversed (for equal,overlap,touch) bool parallel; // true if disjoint but parallel bool degenerate; // true for segment(s) of zero length double ra, rb; // temp inline de9im_segment() : de9im() , collinear(false) , opposite(false) , parallel(false) , degenerate(false) {} inline de9im_segment(double a, double b, int ii0, int ib0, int ie0, int bi0, int bb0, int be0, int ei0, int eb0, int ee0, bool c = false, bool o = false, bool p = false, bool d = false) : de9im(ii0, ib0, ie0, bi0, bb0, be0, ei0, eb0, ee0) , collinear(c) , opposite(o) , parallel(p) , degenerate(d) , ra(a), rb(b) {} #if defined(HAVE_MATRIX_AS_STRING) inline std::string as_string() const { std::string ret = matrix_as_string(); ret += collinear ? "c" : "-"; ret += opposite ? "o" : "-"; return ret; } #endif }; template struct segment_intersection_points { int count; P intersections[2]; segment_intersection_points() : count(0) {} }; } // namespace ggl #endif // GGL_INTERSECTION_RESULT_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/spherical/000077500000000000000000000000001177067165300245225ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/spherical/haversine.hpp000066400000000000000000000226301177067165300272220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_SPHERICAL_DISTANCE_HPP #define GGL_STRATEGY_SPHERICAL_DISTANCE_HPP #include #include #include #include #include #include #include namespace ggl { namespace strategy { namespace distance { /*! \brief Distance calculation for spherical coordinates on a perfect sphere using haversine \ingroup distance \tparam P1 first point type \tparam P2 optional second point type \author Adapted from: http://williams.best.vwh.net/avform.htm \see http://en.wikipedia.org/wiki/Great-circle_distance \note It says: The great circle distance d between two points with coordinates {lat1,lon1} and {lat2,lon2} is given by: d=acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2)) A mathematically equivalent formula, which is less subject to rounding error for short distances is: d=2*asin(sqrt((sin((lat1-lat2)/2))^2 + cos(lat1)*cos(lat2)*(sin((lon1-lon2)/2))^2)) */ template class haversine { public : //typedef spherical_distance return_type; typedef double return_type; inline haversine(double r = 1.0) : m_radius(r) {} inline return_type operator()(const P1& p1, const P2& p2) const { return calc(get_as_radian<0>(p1), get_as_radian<1>(p1), get_as_radian<0>(p2), get_as_radian<1>(p2)); } private : double m_radius; typedef typename coordinate_type::type T1; typedef typename coordinate_type::type T2; inline return_type calc(const T1& lon1, const T1& lat1, const T2& lon2, const T2& lat2) const { double a = math::hav(lat2 - lat1) + cos(lat1) * cos(lat2) * math::hav(lon2 - lon1); double c = 2.0 * asin(sqrt(a)); return return_type(m_radius * c); } }; /*! \brief Strategy functor for distance point to segment calculation \ingroup distance \details Class which calculates the distance of a point to a segment, using latlong points \tparam P point type \tparam S segment type */ template class ll_point_segment { public : typedef double return_type; inline ll_point_segment(double r = 1.0) : m_radius(r) {} inline return_type operator()(P const& p, S const& s) const { PR pr, ps1, ps2; // Select transformation strategy and transform to radians (if necessary) typename strategy_transform< typename cs_tag

::type, typename cs_tag::type, typename coordinate_system

::type, typename coordinate_system::type, dimension

::value, dimension::value, P, PR>::type transform_strategy; // TODO // ASSUMPTION: segment // SOLVE THIS USING OTHER FUNCTIONS using get<,> transform_strategy(p, pr); transform_strategy(s.first, ps1); transform_strategy(s.second, ps2); return calc(pr, ps1, ps2); } private : typedef point < typename coordinate_type

::type, ggl::dimension

::type::value, typename ggl::detail::get_cs_as_radian < typename coordinate_system

::type >::type > PR; double m_radius; /// Calculate course (bearing) between two points. Might be moved to a "course formula" ... inline double course(PR const& p1, PR const& p2) const { /*** Course between points We obtain the initial course, tc1, (at point 1) from point 1 to point 2 by the following. The formula fails if the initial point is a pole. We can special case this with: IF (cos(lat1) < EPS) // EPS a small number ~ machine precision IF (lat1 > 0): tc1= pi // starting from N pole ELSE: tc1= 2*pi // starting from S pole ENDIF ENDIF For starting points other than the poles: IF sin(lon2-lon1)<0: tc1=acos((sin(lat2)-sin(lat1)*cos(d))/(sin(d)*cos(lat1))) ELSE: tc1=2*pi-acos((sin(lat2)-sin(lat1)*cos(d))/(sin(d)*cos(lat1))) ENDIF An alternative formula, not requiring the pre-computation of d, the distance between the points, is: tc1=mod(atan2(sin(lon1-lon2)*cos(lat2), cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon1-lon2)) , 2*pi) ***/ double dlon = get<0>(p2) - get<0>(p1); double cos_p2lat = cos(get<1>(p2)); return atan2(sin(dlon) * cos_p2lat, cos(get<1>(p1)) * sin(get<1>(p2)) - sin(get<1>(p1)) * cos_p2lat * cos(dlon)); } inline return_type calc(PR const& p, PR const& sp1, PR const& sp2) const { /*** Cross track error: Suppose you are proceeding on a great circle route from A to B (course =crs_AB) and end up at D, perhaps off course. (We presume that A is ot a pole!) You can calculate the course from A to D (crs_AD) and the distance from A to D (dist_AD) using the formulae above. In shifteds of these the cross track error, XTD, (distance off course) is given by XTD =asin(sin(dist_AD)*sin(crs_AD-crs_AB)) (positive XTD means right of course, negative means left) (If the point A is the N. or S. Pole replace crs_AD-crs_AB with lon_D-lon_B or lon_B-lon_D, respectively.) ***/ // Calculate distances, in radians, on the unit sphere // It seems not useful to let this strategy be templatized, it should be in radians and on the unit sphere strategy::distance::haversine strategy(1.0); double d1 = strategy(sp1, p); // Actually, calculation of d2 not necessary if we know that the projected point is on the great circle... double d2 = strategy(sp2, p); // Source: http://williams.best.vwh.net/avform.htm double crs_AD = course(sp1, p); double crs_AB = course(sp1, sp2); double XTD = fabs(asin(sin(d1) * sin(crs_AD - crs_AB))); // Return shortest distance, either to projected point on segment sp1-sp2, or to sp1, or to sp2 return return_type(m_radius * (std::min)((std::min)(d1, d2), XTD)); } }; } // namespace distance } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_distance { typedef strategy::distance::haversine type; }; template struct strategy_distance_segment { typedef strategy::distance::ll_point_segment type; }; // Use this point-segment for geographic as well. TODO: change this, extension! template struct strategy_distance_segment { typedef strategy::distance::ll_point_segment type; }; template struct strategy_tag > { typedef strategy_tag_distance_point_point type; }; template struct strategy_tag > { typedef strategy_tag_distance_point_segment type; }; #endif } // namespace ggl #endif // GGL_STRATEGY_SPHERICAL_DISTANCE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/spherical/sph_area.hpp000066400000000000000000000151061177067165300270200ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_STRATEGIES_SPHERICAL_SPH_AREA_HPP #define GGL_GEOMETRY_STRATEGIES_SPHERICAL_SPH_AREA_HPP #include #include #include #include namespace ggl { namespace strategy { namespace area { /*! \brief Area calculation by spherical excess \tparam P type of points of rings/polygons \author Barend Gehrels. Adapted from: - http://www.soe.ucsc.edu/~pang/160/f98/Gems/GemsIV/sph_poly.c - http://williams.best.vwh.net/avform.htm \note The version in Gems didn't account for polygons crossing the 180 meridian. \note This version works for convex and non-convex polygons, for 180 meridian crossing polygons and for polygons with holes. However, some cases (especially 180 meridian cases) must still be checked. \note The version which sums angles, which is often seen, doesn't handle non-convex polygons correctly. \note The version which sums longitudes, see http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/40409/1/07-03.pdf, is simple and works well in most cases but not in 180 meridian crossing cases. This probably could be solved. */ template class by_spherical_excess { private : struct excess_sum { double m_sum; double m_radius; // TODO: make this 1.0 & implement other construct to let user specify inline excess_sum(double radius = 1.0) //constants::average_earth_radius) : m_sum(0) , m_radius(radius) {} inline double area() const { return - m_sum * m_radius * m_radius; //constants::average_earth_radius * constants::average_earth_radius; } }; // Distances are calculated on unit sphere here strategy::distance::haversine m_unit_sphere; double m_radius; public : typedef double return_type; typedef excess_sum state_type; by_spherical_excess(double radius = 1.0) : m_unit_sphere(1) , m_radius(radius) {} inline bool operator()(segment const& segment, state_type& state) const { if (get<0>(segment.first) != get<0>(segment.second)) { typedef point < typename coordinate_type

::type, 2, typename ggl::detail::get_cs_as_radian < typename coordinate_system

::type >::type > PR; PR p1, p2; // Select transformation strategy and transform to radians (if necessary) typename strategy_transform< typename cs_tag

::type, typename cs_tag::type, typename coordinate_system

::type, typename coordinate_system::type, dimension

::value, dimension::value, P, PR>::type transform_strategy; transform_strategy(segment.first, p1); transform_strategy(segment.second, p2); // Distance p1 p2 double a = m_unit_sphere(segment.first, segment.second); // Sides on unit sphere to south pole double b = 0.5 * math::pi - ggl::get<1>(p2); double c = 0.5 * math::pi - ggl::get<1>(p1); // Semi parameter double s = 0.5 * (a + b + c); // E: spherical excess, using l'Huiller's formula // [tg(e / 4)]2 = tg[s / 2] tg[(s-a) / 2] tg[(s-b) / 2] tg[(s-c) / 2] double E = 4.0 * atan(sqrt(fabs(tan(s / 2) * tan((s - a) / 2) * tan((s - b) / 2) * tan((s - c) / 2)))); E = fabs(E); // In right direction: positive, add area. In left direction: negative, subtract area. // Longitude comparisons are not so obvious. If one is negative, other is positive, // we have to take the date into account. // TODO: check this / enhance this, should be more robust. See also the "grow" for ll // TODO: use minmax or "smaller"/"compare" strategy for this double lon1 = ggl::get<0>(p1) < 0 ? ggl::get<0>(p1) + math::two_pi : ggl::get<0>(p1); double lon2 = ggl::get<0>(p2) < 0 ? ggl::get<0>(p2) + math::two_pi : ggl::get<0>(p2); if (lon2 < lon1) { E= -E; } state.m_sum += E; } return true; } }; } // namespace area } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_area { typedef strategy::area::by_spherical_excess type; }; template struct strategy_area { typedef strategy::area::by_spherical_excess type; }; #endif } // namespace ggl #endif // GGL_GEOMETRY_STRATEGIES_SPHERICAL_SPH_AREA_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/spherical/sph_envelope.hpp000066400000000000000000000143171177067165300277300ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_GEOMETRY_STRATEGIES_SPHERICAL_SPH_ENVELOPE_HPP #define GGL_GEOMETRY_STRATEGIES_SPHERICAL_SPH_ENVELOPE_HPP #include #include // NOTE: maybe evaluate/rework this using new "compare" strategy // - implement "compare" for latlong (e.g. return true if distance-difference < 90 deg, so 170 < -170 but 90 > -180) #include namespace ggl { namespace strategy { namespace envelope { // envelope calculation strategy for latlong-points namespace shift { template struct shifted { }; template<> struct shifted { inline static double shift() { return math::two_pi; } }; template<> struct shifted { inline static double shift() { return 360.0; } }; } /*! \par Algorithm: The envelope of latlong-points cannot be implemented as for xy-points. Suppose the envelope of the Aleutian Islands must be calculated. The span from 170E to 170W, from -170 to 170. Of course the real envelope is not -170..170 but 170..-170. On the other hand, there might be geometries that indeed span from -170 to 170. If there are two points, it is not known. If there are points in between, we probably should take the shorter range. So we do that for the moment. We shift coordinates and do as if we live in a world with longitude coordinates from 0 - 360, where 0 is still at Greenwich. Longitude ranges are then calculated twice: one for real world, one for the shifted world. The shortest range is taken for the bounding box. This might have coordinates > 180 */ template struct grow_ll { struct state { typedef typename coordinate_type::type T; bool has_west; T min_lat, max_lat; T min_lon1, min_lon2, max_lon1, max_lon2; B& mbr; state(B& b) : mbr(b) , has_west(false) , min_lat(boost::numeric::bounds::highest()) , min_lon1(boost::numeric::bounds::highest()) , min_lon2(boost::numeric::bounds::highest()) , max_lat(boost::numeric::bounds::lowest()) , max_lon1(boost::numeric::bounds::lowest()) , max_lon2(boost::numeric::bounds::lowest()) {} template void take_minmax(const T& value, T& min_value, T& max_value) { if (value < min_value) { min_value = value; } if (value > max_value) { max_value = value; } } void grow(const P& p) { // For latitude, we can take the min/max take_minmax(get<1>(p), min_lat, max_lat); // For longitude, we do the same... take_minmax(get<0>(p), min_lon1, max_lon1); // But we also add 360 (2pi) if it is negative T value = get<0>(p); while(value < 0) { has_west = true; value += shift::shifted::type::units>::shift(); } while (value > math::two_pi) { value -= shift::shifted::type::units>::shift(); } take_minmax(value, min_lon2, max_lon2); } ~state() //void envelope(box& mbr) { // For latitude it is easy set(mbr, min_lat); set(mbr, max_lat); if (! has_west) { set(mbr, min_lon1); set(mbr, max_lon1); } else { // Get both ranges T diff1 = max_lon1 - min_lon1; T diff2 = max_lon2 - min_lon2; //std::cout << "range 1: " << min_lon1 * math::r2d << ".." << max_lon1 * math::r2d << std::endl; //std::cout << "range 2: " << min_lon2 * math::r2d << ".." << max_lon2 * math::r2d << std::endl; if (diff1 <= diff2) { set(mbr, min_lon1); set(mbr, max_lon1); } else { set(mbr, min_lon2); set(mbr, max_lon2); } } } }; typedef state state_type; void operator()(const P& p, state_type& s) const { s.grow(p); } }; } // namespace envelope } // namespace strategy #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS template struct strategy_envelope { typedef strategy::envelope::grow_ll type; }; #endif } // namespace ggl #endif // GGL_GEOMETRY_STRATEGIES_SPHERICAL_SPH_ENVELOPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/strategies.hpp000066400000000000000000000025471177067165300254430ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGIES_HPP #define GGL_STRATEGIES_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif // GGL_STRATEGIES_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/strategy_traits.hpp000066400000000000000000000142201177067165300265100ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGIES_STRATEGY_TRAITS_HPP #define GGL_STRATEGIES_STRATEGY_TRAITS_HPP #include #include // File containing strategy traits classes, to be specialized in other files // (This file might be splitted resulting into several small files) namespace ggl { namespace strategy { /*! \brief Indicate compiler/library user that strategy is not implemented. \details The strategy_traits class define strategies for point types or for point type combinations. If there is no implementation for that specific point type, or point type combination, the calculation cannot be done. To indicate this, this not_implemented class is used as a typedef stub. */ struct not_implemented {}; } /*! \brief Traits class binding an area strategy to a coordinate system \ingroup area \tparam T tag of coordinate system \tparam P point-type */ template struct strategy_area { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a distance strategy to a (possibly two) coordinate system(s) \ingroup distance \tparam T1 tag of coordinate system of first point type \tparam T2 tag of coordinate system of second point type \tparam P1 first point-type \tparam P2 second point-type */ template struct strategy_distance { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a distance-to-segment strategy to a (possibly two) coordinate system(s) \ingroup distance \tparam CsTag1 tag of coordinate system of point type \tparam CsTag2 tag of coordinate system of segment type, usually same as CsTag1 \tparam Point point-type \tparam Segment segment-type */ template struct strategy_distance_segment { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a centroid calculation strategy to a coordinate system \ingroup centroid \tparam T tag of coordinate system \tparam P point-type \tparam PS segment point-type */ template struct strategy_centroid { typedef strategy::not_implemented type; }; /*! \brief Traits class binding envelope strategy to a coordinate system \ingroup envelope \tparam TP tag of coordinate system of point \tparam TB tag of coordinate system of box, usually same as TP \tparam P point-type \tparam B box-type */ template struct strategy_envelope { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a convex hull calculation strategy to a coordinate system \ingroup convex_hull \tparam T tag of coordinate system \tparam P point-type of input points */ template struct strategy_convex_hull { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a within determination strategy to a coordinate system \ingroup within \tparam TP tag of coordinate system of point-type \tparam TS tag of coordinate system of segment-type \tparam P point-type of input points \tparam PS point-type of input segment-points */ template struct strategy_within { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a side determination strategy to a coordinate system \ingroup util \tparam T tag of coordinate system of point-type \tparam P point-type of input points \tparam PS point-type of input points */ template struct strategy_side { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a comparing strategy to a coordinate system \ingroup util \tparam T tag of coordinate system of point-type \tparam P point-type \tparam D dimension to compare */ template struct strategy_compare { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a transformation strategy to a coordinate system \ingroup transform \details Can be specialized - per coordinate system family (tag) - per coordinate system (or groups of them) - per dimension - per point type \tparam CS_TAG 1,2 coordinate system tags \tparam CS 1,2 coordinate system \tparam D 1, 2 dimension \tparam P 1, 2 point type */ template struct strategy_transform { typedef strategy::not_implemented type; }; /*! \brief Traits class binding a parsing strategy to a coordinate system \ingroup parse \tparam T tag of coordinate system of point-type \tparam CS coordinate system */ template struct strategy_parse { typedef strategy::not_implemented type; }; /*! \brief Shortcut to define return type of distance strategy \ingroup distance \tparam G1 first geometry \tparam G2 second geometry */ template struct distance_result { typedef typename point_type::type P1; typedef typename point_type::type P2; typedef typename strategy_distance< typename cs_tag::type, typename cs_tag::type, P1, P2>::type S; typedef typename S::return_type type; }; struct strategy_tag_unknown {}; struct strategy_tag_distance_point_point {}; struct strategy_tag_distance_point_segment {}; template struct strategy_tag { typedef strategy_tag_unknown type; }; } // namespace ggl #endif // GGL_STRATEGIES_STRATEGY_TRAITS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/strategy_transform.hpp000066400000000000000000000261651177067165300272300ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGY_TRANSFORM_HPP #define GGL_STRATEGY_TRANSFORM_HPP #include #include #include #include #include #include #include #include #include #include #include namespace ggl { namespace strategy { namespace transform { #ifndef DOXYGEN_NO_DETAIL namespace detail { template < typename Src, typename Dst, std::size_t D, std::size_t N, template class F > struct transform_coordinates { static inline void transform(const Src& source, Dst& dest, double value) { typedef typename select_coordinate_type::type coordinate_type; F function; set(dest, boost::numeric_cast(function(get(source), value))); transform_coordinates::transform(source, dest, value); } }; template < typename Src, typename Dst, std::size_t N, template class F > struct transform_coordinates { static inline void transform(const Src& source, Dst& dest, double value) { } }; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief Transformation strategy to copy one point to another using assignment operator \ingroup transform \tparam P point type */ template struct copy_direct { inline bool operator()(const P& p1, P& p2) const { p2 = p1; return true; } }; /*! \brief Transformation strategy to do copy a point, copying per coordinate. \ingroup transform \tparam P1 first point type \tparam P2 second point type */ template struct copy_per_coordinate { inline bool operator()(P1 const& p1, P2& p2) const { // Defensive check, dimensions are equal, selected by specialization assert_dimension_equal(); copy_coordinates(p1, p2); return true; } }; /*! \brief Transformation strategy to go from degree to radian and back \ingroup transform \tparam P1 first point type \tparam P2 second point type \tparam F additional functor to divide or multiply with d2r */ template class F> struct degree_radian_vv { inline bool operator()(P1 const& p1, P2& p2) const { // Spherical coordinates always have 2 coordinates measured in angles // The optional third one is distance/height, provided in another strategy // Polar coordinates having one angle, will be also in another strategy assert_dimension(); assert_dimension(); detail::transform_coordinates::transform(p1, p2, math::d2r); return true; } }; template class F> struct degree_radian_vv_3 { inline bool operator()(P1 const& p1, P2& p2) const { assert_dimension(); assert_dimension(); detail::transform_coordinates::transform(p1, p2, math::d2r); // Copy height or other third dimension set<2>(p2, get<2>(p1)); return true; } }; #ifndef DOXYGEN_NO_DETAIL namespace detail { /// Helper function for conversion, phi/theta are in radians template inline void spherical_to_cartesian(double phi, double theta, double r, P& p) { assert_dimension(); // http://en.wikipedia.org/wiki/List_of_canonical_coordinate_transformations#From_spherical_coordinates // Phi = first, theta is second, r is third, see documentation on cs::spherical double const sin_theta = std::sin(theta); set<0>(p, r * sin_theta * std::cos(phi)); set<1>(p, r * sin_theta * std::sin(phi)); set<2>(p, r * std::cos(theta)); } /// Helper function for conversion template inline bool cartesian_to_spherical2(double x, double y, double z, P& p) { assert_dimension(); // http://en.wikipedia.org/wiki/List_of_canonical_coordinate_transformations#From_Cartesian_coordinates // TODO: MAYBE ONLY IF TO BE CHECKED? double const r = std::sqrt(x * x + y * y + z * z); // Unit sphere, r should be 1 typedef typename coordinate_type

::type coordinate_type; if (std::abs(r - 1.0) > std::numeric_limits::epsilon()) { return false; } // end todo set_from_radian<0>(p, std::atan2(y, x)); set_from_radian<1>(p, std::acos(z)); return true; } template inline bool cartesian_to_spherical3(double x, double y, double z, P& p) { assert_dimension(); // http://en.wikipedia.org/wiki/List_of_canonical_coordinate_transformations#From_Cartesian_coordinates double const r = std::sqrt(x * x + y * y + z * z); set<2>(p, r); set_from_radian<0>(p, std::atan2(y, x)); if (r > 0.0) { set_from_radian<1>(p, std::acos(z / r)); return true; } return false; } } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief Transformation strategy for 2D spherical (phi,theta) to 3D cartesian (x,y,z) \details on Unit sphere \ingroup transform \tparam P1 first point type \tparam P2 second point type */ template struct from_spherical_2_to_cartesian_3 { inline bool operator()(P1 const& p1, P2& p2) const { assert_dimension(); detail::spherical_to_cartesian(get_as_radian<0>(p1), get_as_radian<1>(p1), 1.0, p2); return true; } }; /*! \brief Transformation strategy for 3D spherical (phi,theta,r) to 3D cartesian (x,y,z) \ingroup transform \tparam P1 first point type \tparam P2 second point type */ template struct from_spherical_3_to_cartesian_3 { inline bool operator()(P1 const& p1, P2& p2) const { assert_dimension(); detail::spherical_to_cartesian( get_as_radian<0>(p1), get_as_radian<1>(p1), get<2>(p1), p2); return true; } }; /*! \brief Transformation strategy for 3D cartesian (x,y,z) to 2D spherical (phi,theta) \details on Unit sphere \ingroup transform \tparam P1 first point type \tparam P2 second point type \note If x,y,z point is not lying on unit sphere, transformation will return false */ template struct from_cartesian_3_to_spherical_2 { inline bool operator()(P1 const& p1, P2& p2) const { assert_dimension(); return detail::cartesian_to_spherical2(get<0>(p1), get<1>(p1), get<2>(p1), p2); } }; /*! \brief Transformation strategy for 3D cartesian (x,y,z) to 3D spherical (phi,theta,r) \ingroup transform \tparam P1 first point type \tparam P2 second point type */ template struct from_cartesian_3_to_spherical_3 { inline bool operator()(P1 const& p1, P2& p2) const { assert_dimension(); return detail::cartesian_to_spherical3(get<0>(p1), get<1>(p1), get<2>(p1), p2); } }; }} // namespace strategy::transform #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS /// Specialization for same coordinate system family, same system, same dimension, same point type, can be copied template struct strategy_transform { typedef strategy::transform::copy_direct

type; }; /// Specialization for same coordinate system family and system, same dimension, different point type, copy per coordinate template struct strategy_transform { typedef strategy::transform::copy_per_coordinate type; }; /// Specialization to convert from degree to radian for any coordinate system / point type combination template class CoordSys, typename P1, typename P2> struct strategy_transform, CoordSys, 2, 2, P1, P2> { typedef strategy::transform::degree_radian_vv type; }; /// Specialization to convert from radian to degree for any coordinate system / point type combination template class CoordSys, typename P1, typename P2> struct strategy_transform, CoordSys, 2, 2, P1, P2> { typedef strategy::transform::degree_radian_vv type; }; /// Specialization degree->radian in 3D template class CoordSys, typename P1, typename P2> struct strategy_transform, CoordSys, 3, 3, P1, P2> { typedef strategy::transform::degree_radian_vv_3 type; }; /// Specialization radian->degree in 3D template class CoordSys, typename P1, typename P2> struct strategy_transform, CoordSys, 3, 3, P1, P2> { typedef strategy::transform::degree_radian_vv_3 type; }; /// Specialization to convert from unit sphere(phi,theta) to XYZ template struct strategy_transform { typedef strategy::transform::from_spherical_2_to_cartesian_3 type; }; /// Specialization to convert from sphere(phi,theta,r) to XYZ template struct strategy_transform { typedef strategy::transform::from_spherical_3_to_cartesian_3 type; }; /// Specialization to convert from XYZ to unit sphere(phi,theta) template struct strategy_transform { typedef strategy::transform::from_cartesian_3_to_spherical_2 type; }; /// Specialization to convert from XYZ to sphere(phi,theta,r) template struct strategy_transform { typedef strategy::transform::from_cartesian_3_to_spherical_3 type; }; #endif // DOXYGEN_NO_STRATEGY_SPECIALIZATIONS } // namespace ggl #endif // GGL_STRATEGY_TRANSFORM_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/transform/000077500000000000000000000000001177067165300245635ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/transform/inverse_transformer.hpp000066400000000000000000000037711177067165300314010ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGIES_TRANSFORM_INVERSE_TRANSFORMER_HPP #define GGL_STRATEGIES_TRANSFORM_INVERSE_TRANSFORMER_HPP #include #include #include namespace ggl { namespace strategy { namespace transform { /*! \brief Transformation strategy to do an inverse ransformation in Cartesian system \ingroup transform \tparam P1 first point type \tparam P2 second point type */ template struct inverse_transformer : ublas_transformer::type::value, dimension::type::value> { typedef typename select_coordinate_type::type T; template inline inverse_transformer(const MatrixType& input) { typedef boost::numeric::ublas::matrix matrix_type; // create a working copy of the input matrix_type copy(input.matrix()); // create a permutation matrix for the LU-factorization typedef boost::numeric::ublas::permutation_matrix<> permutation_matrix; permutation_matrix pm(copy.size1()); // perform LU-factorization int res = boost::numeric::ublas::lu_factorize(copy, pm); if( res == 0 ) { // create identity matrix this->m_matrix.assign(boost::numeric::ublas::identity_matrix(copy.size1())); // backsubstitute to get the inverse boost::numeric::ublas::lu_substitute(copy, pm, this->m_matrix); } } }; }} // namespace strategy::transform } // namespace ggl #endif // GGL_STRATEGIES_TRANSFORM_INVERSE_TRANSFORMER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/transform/map_transformer.hpp000066400000000000000000000114451177067165300305000ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGIES_TRANSFORM_MAP_TRANSFORMER_HPP #define GGL_STRATEGIES_TRANSFORM_MAP_TRANSFORMER_HPP #include namespace ggl { namespace strategy { namespace transform { /*! \brief Transformation strategy to do map from one to another Cartesian system \ingroup transform \tparam P1 first point type \tparam P2 second point type \tparam Mirror if true map is mirrored upside-down (in most cases pixels are from top to bottom, while map is from bottom to top) */ template < typename P1, typename P2, bool Mirror, bool SameScale = true, std::size_t Dimension1 = dimension::type::value, std::size_t Dimension2 = dimension::type::value > struct map_transformer : ublas_transformer { typedef typename select_coordinate_type::type T; typedef boost::numeric::ublas::matrix M; template explicit inline map_transformer(B const& box, D const& width, D const& height) { set_transformation( get(box), get(box), get(box), get(box), width, height); } template explicit inline map_transformer(W const& wx1, W const& wy1, W const& wx2, W const& wy2, D const& width, D const& height) { set_transformation(wx1, wy1, wx2, wy2, width, height); } private : void set_transformation_point(double wx, double wy, double px, double py, double scalex, double scaley) { // Translate to a coordinate system centered on world coordinates (-wx, -wy) M t1(3,3); t1(0,0) = 1; t1(0,1) = 0; t1(0,2) = -wx; t1(1,0) = 0; t1(1,1) = 1; t1(1,2) = -wy; t1(2,0) = 0; t1(2,1) = 0; t1(2,2) = 1; // Scale the map M s(3,3); s(0,0) = scalex; s(0,1) = 0; s(0,2) = 0; s(1,0) = 0; s(1,1) = scaley; s(1,2) = 0; s(2,0) = 0; s(2,1) = 0; s(2,2) = 1; // Translate to a coordinate system centered on the specified pixels (+px, +py) M t2(3, 3); t2(0,0) = 1; t2(0,1) = 0; t2(0,2) = px; t2(1,0) = 0; t2(1,1) = 1; t2(1,2) = py; t2(2,0) = 0; t2(2,1) = 0; t2(2,2) = 1; // Calculate combination matrix in two steps this->m_matrix = boost::numeric::ublas::prod(s, t1); this->m_matrix = boost::numeric::ublas::prod(t2, this->m_matrix); } template void set_transformation(W const& wx1, W const& wy1, W const& wx2, W const& wy2, D const& width, D const& height) { D px1 = 0; D py1 = 0; D px2 = width; D py2 = height; // Calculate appropriate scale, take min because whole box must fit // Scale is in PIXELS/MAPUNITS (meters) double sx = (px2 - px1) / (wx2 - wx1); double sy = (py2 - py1) / (wy2 - wy1); if (SameScale) { double scale = (std::min)(sx, sy); sx = scale; sy = scale; } // Calculate centerpoints double wmx = (wx1 + wx2) / 2.0; double wmy = (wy1 + wy2) / 2.0; double pmx = (px1 + px2) / 2.0; double pmy = (py1 + py2) / 2.0; set_transformation_point(wmx, wmy, pmx, pmy, sx, sy); if (Mirror) { // Mirror in y-direction M m(3,3); m(0,0) = 1; m(0,1) = 0; m(0,2) = 0; m(1,0) = 0; m(1,1) = -1; m(1,2) = 0; m(2,0) = 0; m(2,1) = 0; m(2,2) = 1; // Translate in y-direction such that it fits again M y(3, 3); y(0,0) = 1; y(0,1) = 0; y(0,2) = 0; y(1,0) = 0; y(1,1) = 1; y(1,2) = height; y(2,0) = 0; y(2,1) = 0; y(2,2) = 1; // Calculate combination matrix in two steps this->m_matrix = boost::numeric::ublas::prod(m, this->m_matrix); this->m_matrix = boost::numeric::ublas::prod(y, this->m_matrix); } } }; }} // namespace strategy::transform } // namespace ggl #endif // GGL_STRATEGIES_TRANSFORM_MAP_TRANSFORMER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/strategies/transform/matrix_transformers.hpp000066400000000000000000000252631177067165300314150ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_STRATEGIES_MATRIX_TRANSFORMERS_HPP #define GGL_STRATEGIES_MATRIX_TRANSFORMERS_HPP // Remove the ublas checking, otherwise the inverse might fail (while nothing seems to be wrong) #define BOOST_UBLAS_TYPE_CHECK 0 #include #include #include #include namespace ggl { namespace strategy { namespace transform { /*! \brief Transformation strategy to do an affine matrix transformation in Cartesian system \ingroup transform \tparam P1 first point type \tparam P2 second point type \tparam Dimension1 number of dimensions to transform from first point, optional \tparam Dimension1 number of dimensions to transform to second point, optional */ template < typename P1, typename P2, std::size_t Dimension1, std::size_t Dimension2 > class ublas_transformer { }; template class ublas_transformer { protected : typedef typename select_coordinate_type::type coordinate_type; typedef coordinate_type ct; // Abbreviation typedef boost::numeric::ublas::matrix matrix_type; matrix_type m_matrix; public : inline ublas_transformer( ct const& m_0_0, ct const& m_0_1, ct const& m_0_2, ct const& m_1_0, ct const& m_1_1, ct const& m_1_2, ct const& m_2_0, ct const& m_2_1, ct const& m_2_2) : m_matrix(3, 3) { m_matrix(0,0) = m_0_0; m_matrix(0,1) = m_0_1; m_matrix(0,2) = m_0_2; m_matrix(1,0) = m_1_0; m_matrix(1,1) = m_1_1; m_matrix(1,2) = m_1_2; m_matrix(2,0) = m_2_0; m_matrix(2,1) = m_2_1; m_matrix(2,2) = m_2_2; } inline ublas_transformer() : m_matrix(3, 3) { } inline bool operator()(const P1& p1, P2& p2) const { assert_dimension_greater_equal(); assert_dimension_greater_equal(); const coordinate_type& c1 = get<0>(p1); const coordinate_type& c2 = get<1>(p1); typedef typename ggl::coordinate_type::type ct2; set<0>(p2, boost::numeric_cast(c1 * m_matrix(0,0) + c2 * m_matrix(0,1) + m_matrix(0,2))); set<1>(p2, boost::numeric_cast(c1 * m_matrix(1,0) + c2 * m_matrix(1,1) + m_matrix(1,2))); return true; } const matrix_type& matrix() const { return m_matrix; } }; // It IS possible to go from 3 to 2 coordinates template struct ublas_transformer : public ublas_transformer { typedef typename select_coordinate_type::type coordinate_type; typedef coordinate_type ct; // Abbreviation inline ublas_transformer( ct const& m_0_0, ct const& m_0_1, ct const& m_0_2, ct const& m_1_0, ct const& m_1_1, ct const& m_1_2, ct const& m_2_0, ct const& m_2_1, ct const& m_2_2) : ublas_transformer( m_0_0, m_0_1, m_0_2, m_1_0, m_1_1, m_1_2, m_2_0, m_2_1, m_2_2) {} inline ublas_transformer() : ublas_transformer() {} }; template class ublas_transformer { protected : typedef typename select_coordinate_type::type coordinate_type; typedef coordinate_type ct; // Abbreviation typedef boost::numeric::ublas::matrix matrix_type; matrix_type m_matrix; inline ublas_transformer( ct const& m_0_0, ct const& m_0_1, ct const& m_0_2, ct const& m_0_3, ct const& m_1_0, ct const& m_1_1, ct const& m_1_2, ct const& m_1_3, ct const& m_2_0, ct const& m_2_1, ct const& m_2_2, ct const& m_2_3, ct const& m_3_0, ct const& m_3_1, ct const& m_3_2, ct const& m_3_3 ) : m_matrix(4, 4) { m_matrix(0,0) = m_0_0; m_matrix(0,1) = m_0_1; m_matrix(0,2) = m_0_2; m_matrix(0,3) = m_0_3; m_matrix(1,0) = m_1_0; m_matrix(1,1) = m_1_1; m_matrix(1,2) = m_1_2; m_matrix(1,3) = m_1_3; m_matrix(2,0) = m_2_0; m_matrix(2,1) = m_2_1; m_matrix(2,2) = m_2_2; m_matrix(2,3) = m_2_3; m_matrix(3,0) = m_3_0; m_matrix(3,1) = m_3_1; m_matrix(3,2) = m_3_2; m_matrix(3,3) = m_3_3; } inline ublas_transformer() : m_matrix(4, 4) { } public : inline bool operator()(const P1& p1, P2& p2) const { const coordinate_type& c1 = get<0>(p1); const coordinate_type& c2 = get<1>(p1); const coordinate_type& c3 = get<2>(p1); typedef typename ggl::coordinate_type::type ct2; set<0>(p2, boost::numeric_cast(c1 * m_matrix(0,0) + c2 * m_matrix(0,1) + c3 * m_matrix(0,2) + m_matrix(0,3))); set<1>(p2, boost::numeric_cast(c1 * m_matrix(1,0) + c2 * m_matrix(1,1) + c3 * m_matrix(1,2) + m_matrix(1,3))); set<2>(p2, boost::numeric_cast(c1 * m_matrix(2,0) + c2 * m_matrix(2,1) + c3 * m_matrix(2,2) + m_matrix(2,3))); return true; } const matrix_type& matrix() const { return m_matrix; } }; /*! \brief Transformation strategy to translate in Cartesian system \ingroup transform \see http://www.devmaster.net/wiki/Transformation_matrices \tparam P1 first point type \tparam P2 second point type \tparam Dimension1 number of dimensions to transform from first point, optional \tparam Dimension1 number of dimensions to transform to second point, optional */ template < typename P1, typename P2, std::size_t Dimension1 = ggl::dimension::type::value, std::size_t Dimension2 = ggl::dimension::type::value > struct translate_transformer {}; template struct translate_transformer : ublas_transformer { typedef typename select_coordinate_type::type coordinate_type; // To have translate transformers compatible for 2/3 dimensions, the // constructor takes an optional third argument doing nothing. inline translate_transformer(coordinate_type const& translate_x, coordinate_type const& translate_y, coordinate_type const& dummy = 0) : ublas_transformer( 1, 0, translate_x, 0, 1, translate_y, 0, 0, 1) {} }; template struct translate_transformer : ublas_transformer { typedef typename select_coordinate_type::type coordinate_type; inline translate_transformer(coordinate_type const& translate_x, coordinate_type const& translate_y, coordinate_type const& translate_z) : ublas_transformer( 1, 0, 0, translate_x, 0, 1, 0, translate_y, 0, 0, 1, translate_z, 0, 0, 0, 1) {} }; /*! \brief Transformation strategy to scale in Cartesian system \ingroup transform \see http://www.devmaster.net/wiki/Transformation_matrices \tparam P1 first point type \tparam P2 second point type \tparam Dimension1 number of dimensions to transform from first point, optional \tparam Dimension1 number of dimensions to transform to second point, optional */ template < typename P1, typename P2, std::size_t Dimension1 = ggl::dimension::type::value, std::size_t Dimension2 = ggl::dimension::type::value > struct scale_transformer {}; template struct scale_transformer : ublas_transformer { typedef typename select_coordinate_type::type coordinate_type; inline scale_transformer(coordinate_type const& scale_x, coordinate_type const& scale_y, coordinate_type const& dummy = 0) : ublas_transformer( scale_x, 0, 0, 0, scale_y, 0, 0, 0, 1) {} }; template struct scale_transformer : ublas_transformer { typedef typename select_coordinate_type::type coordinate_type; inline scale_transformer(coordinate_type const& scale_x, coordinate_type const& scale_y, coordinate_type const& scale_z) : ublas_transformer( scale_x, 0, 0, 0, 0, scale_y, 0, 0, 0, 0, scale_z, 0, 0, 0, 0, 1) {} }; #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct as_radian {}; template <> struct as_radian { static inline double get(double const& value) { return value; } }; template <> struct as_radian { static inline double get(double const& value) { return value * math::d2r; } }; template < typename P1, typename P2, std::size_t Dimension1 = ggl::dimension::type::value, std::size_t Dimension2 = ggl::dimension::type::value > struct rad_rotate_transformer : ublas_transformer { inline rad_rotate_transformer(double const& angle) : ublas_transformer( cos(angle), sin(angle), 0, -sin(angle), cos(angle), 0, 0, 0, 1) {} }; } #endif /*! \brief Transformation strategy to rotate in Cartesian system \ingroup transform \tparam P1 first point type \tparam P2 second point type \tparam DegreeOrRadian degree/or/radian, type of rotation angle specification \note Not yet in 3D, the 3D version requires special things to allow for rotation around X, Y, Z or arbitrary axis \see http://www.devmaster.net/wiki/Transformation_matrices \note The 3D version will not compile */ template struct rotate_transformer : detail::rad_rotate_transformer { inline rotate_transformer(double const& angle) : detail::rad_rotate_transformer < P1, P2 >(detail::as_radian::get(angle)) {} }; }} // namespace strategy::transform } // namespace ggl #endif // GGL_STRATEGIES_MATRIX_TRANSFORMERS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/000077500000000000000000000000001177067165300213535ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/util/as_range.hpp000066400000000000000000000041371177067165300236500ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_AS_RANGE_HPP #define GGL_UTIL_AS_RANGE_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct as_range_type { typedef Geometry type; }; template struct as_range_type { typedef typename ring_type::type type; }; template struct as_range { static inline Range const& get(Geometry const& input) { return input; } }; template struct as_range { static inline Range const& get(Geometry const& input) { return exterior_ring(input); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Meta-function utility returning either type itself, or outer ring \details Utility to handle polygon's outer ring as a range \ingroup utility */ template struct as_range_type { typedef typename dispatch::as_range_type < typename tag::type, Geometry >::type type; }; /*! \brief Function getting either the range (ring, linestring) itself or the outer ring \details Utility to handle polygon's outer ring as a range \ingroup utility */ template inline Range const& as_range(Geometry const& input) { return dispatch::as_range < typename tag::type, Geometry, Range >::get(input); } } // namespace ggl #endif // GGL_UTIL_AS_RANGE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/assign_box_corner.hpp000066400000000000000000000034151177067165300255730ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_ASSIGN_BOX_CORNER_HPP #define GGL_UTIL_ASSIGN_BOX_CORNER_HPP #include #include #include // TODO: merge with "assign" namespace ggl { /*! \brief Assign one point of a 2D box \ingroup assign \todo will be merged with assign */ template inline void assign_box_corner(B const& box, P& point) { // Be sure both are 2-Dimensional assert_dimension(); assert_dimension(); // Copy coordinates typedef typename coordinate_type

::type coordinate_type; set<0>(point, boost::numeric_cast(get(box))); set<1>(point, boost::numeric_cast(get(box))); } /*! \brief Assign the 4 points of a 2D box \ingroup assign \todo will be merged with assign \note The order can be crucial. Most logical is LOWER, UPPER and sub-order LEFT, RIGHT */ template inline void assign_box_corners(B const& box, P& lower_left, P& lower_right, P& upper_left, P& upper_right) { assign_box_corner(box, lower_left); assign_box_corner(box, lower_right); assign_box_corner(box, upper_left); assign_box_corner(box, upper_right); } } // namespace #endif // GGL_UTIL_ASSIGN_BOX_CORNER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/builder.hpp000066400000000000000000000212111177067165300235070ustar00rootroot00000000000000// VERY OLD // NOT PART OF GGL-REVIEW-TREE // Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_BUILDER_HPP #define GGL_UTIL_BUILDER_HPP #include #include #include #include #include namespace ggl { /*** * probably not necessary, in these cases points can be added directly. // Polygon builder version using a vector, to which points/holes can be added // Builds on destruction OR on call to build() template class polygon_builder_vector { public : polygon_builder_vector(Y& poly) : m_poly(poly) {} virtual ~polygon_builder_vector() { build(); } void build() { m_poly.outer().clear(); m_interior_rings(poly).resize(m_hole_array.size()); if (m_point_array.size() <= 0) { return; } P& first = m_point_array.front(); int r = -1; int h = 0; int i = 0; for (std::vector

::const_iterator it = m_point_array.begin(); it != m_point_array.end(); it++, i++) { // Check hole: if it is a holeindex, increase index r for rings if (m_hole_array.size() > h && i == m_hole_array[h]) { r = h++; } if (r == -1) { m_poly.outer().push_back(Y::point_type(it->x(), it->y())); } else { // Some files indicate a hole using the very first point of the polygon. // They then also close the complete polygon with the very first point // Those points are skipped if (! (first == *it)) { m_interior_rings(poly)[r].push_back(Y::point_type(it->x(), it->y())); } } } m_hole_array.clear(); m_point_array.clear(); } inline void add_hole(int h) { m_hole_array.push_back(h); } inline void add_point(const P& p) { m_point_array.push_back(p); } private : std::vector

m_point_array; std::vector m_hole_array; Y& m_poly; }; ***/ // Many files need a pointer to an array of points and/or holes // The class below plus the builders below support that // a boost scoped array, extended with a count and a size template class scoped_array_with_size : public boost::scoped_array { public: scoped_array_with_size(int n) : m_count(n) , boost::scoped_array(n > 0 ? new T[n] : NULL) {} inline void resize(int n) { m_count = n; reset(n > 0 ? new T[n] : NULL); } inline int count() const { return m_count; } inline int memorysize() const { return m_count * sizeof(T); } private: int m_count; }; // A linebuilder-pointer class, builds the line on destruction template class line_builder { public: line_builder(L& line, int n) : m_point_array(n) , m_line(line) { } virtual ~line_builder() { m_line.clear(); P* p = m_point_array.get(); for (int i = 0; i < m_point_array.count(); i++) { typedef point_type::type LP; m_line.push_back(make(p->x, p->y)); p++; } } inline int pointarray_size() const { return m_point_array.memorysize(); } inline P* pointarray() { return m_point_array.get(); } private: scoped_array_with_size

m_point_array; L& m_line; }; // Polygon builder-pointer class, builds polygons on destruction. // Creates inner rings using array with hole-indexes template class polygon_builder { public: polygon_builder(Y& poly, int n, int holecount = 0) : m_point_array(n) , m_hole_array(holecount) , m_poly(poly) {} virtual ~polygon_builder() { exterior_ring(m_poly).clear(); interior_rings(m_poly).resize(m_hole_array.count()); if (m_point_array.count() <= 0) { return; } P* p = m_point_array.get(); P& first = *p; int r = -1; int h = 0; for (int i = 0; i < m_point_array.count(); i++) { // Check hole: if it is a holeindex, increase index r for rings if (m_hole_array.count() > h && i == m_hole_array[h]) { r = h++; } if (r == -1) { exterior_ring(m_poly).push_back(Y::point_type(p->x, p->y)); } else { // Some files indicate a hole using the very first point of the polygon. // They then also close the complete polygon with the very first point // Those points are skipped if (! (first == *p)) { interior_rings(m_poly)[r].push_back(Y::point_type(p->x, p->y)); } } p++; } } inline void set_holecount(int n) { m_hole_array.resize(n); } inline int pointarray_size() const { return m_point_array.memorysize(); } inline P* pointarray() { return m_point_array.get(); } inline int holearray_size() const { return m_hole_array.memorysize(); } inline uint32* holearray() { return m_hole_array.get(); } private: scoped_array_with_size

m_point_array; scoped_array_with_size m_hole_array; Y& m_poly; }; // A linebuilder-pointer class, builds the line on destruction template class line_extractor { public: line_extractor(const L& line) : m_point_array(line.size()) , m_line(line) { P* p = m_point_array.get(); for(L::const_iterator it = line.begin(); it != line.end(); it++) { p->x = it->x(); p->y = it->y(); p++; } } inline int pointarray_size() const { return m_point_array.memorysize(); } inline const P* pointarray() const { return m_point_array.get(); } private: scoped_array_with_size

m_point_array; const L& m_line; }; template class polygon_extractor { public: polygon_extractor(const Y& poly) : m_poly(poly) , m_point_array(0) , m_hole_array(0) { // Calculate total point-size int n = exterior_ring(poly).size(); for (int i = 0; i < interior_rings(poly).size(); i++) { n += 1 + interior_rings(poly)[i].size(); } m_point_array.resize(n); m_hole_array.resize(interior_rings(poly).size()); // Fill the points with outer/inner arrays n = 0; add_points(exterior_ring(poly), m_point_array.get(), n); uint32* h = m_hole_array.get(); for (int i = 0; i < interior_rings(poly).size(); i++) { h[i] = n; add_points(interior_rings(poly)[i], m_point_array.get(), n); add_very_first(m_point_array.get(), n); } } inline int pointarray_count() const { return m_point_array.count(); } inline int pointarray_size() const { return m_point_array.memorysize(); } inline const P* pointarray()const { return m_point_array.get(); } inline int holearray_count() const { return m_hole_array.count(); } inline int holearray_size() const { return m_hole_array.memorysize(); } inline const uint32* holearray()const { return m_hole_array.get(); } private: typedef typename ring_type::type ring_type; scoped_array_with_size

m_point_array; scoped_array_with_size m_hole_array; const Y& m_poly; inline void add_points(const ring_type& r, P* p, int& n) { for (ring_type::const_iterator it = r.begin(); it != r.end(); it++) { p[n].x = it->x(); p[n].y = it->y(); n++; } } // add very first point to denote end-of-hole inline void add_very_first(P* p, int& n) { const P& very_first = *p; p[n++] = very_first; } }; } // namespace ggl #endif // GGL_UTIL_BUILDER_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/copy.hpp000066400000000000000000000042171177067165300230420ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_COPY_HPP #define GGL_UTIL_COPY_HPP #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace copy { template struct copy_coordinates { static inline void copy(const Src& source, Dst& dest) { typedef typename coordinate_type::type coordinate_type; set(dest, boost::numeric_cast(get(source))); copy_coordinates::copy(source, dest); } }; template struct copy_coordinates { static inline void copy(const Src& source, Dst& dest) { boost::ignore_unused_variable_warning(source); boost::ignore_unused_variable_warning(dest); } }; }} // namespace detail::copy #endif // DOXYGEN_NO_DETAIL /*! \brief Copies coordinates from source to destination point \ingroup assign \details The function copy_coordinates copies coordinates from one point to another point. Source point and destination point might be of different types. \param source Source point \param dest Destination point \note If destination type differs from source type, they must have the same coordinate count */ template inline void copy_coordinates(const Src& source, Dst& dest) { BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); BOOST_CONCEPT_ASSERT( (concept::Point) ); //assert_dimension_equal(); detail::copy::copy_coordinates::value>::copy(source, dest); } } // namespace ggl #endif // GGL_UTIL_COPY_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/for_each_coordinate.hpp000066400000000000000000000031301177067165300260360ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_FOR_EACH_COORDINATE_HPP #define GGL_UTIL_FOR_EACH_COORDINATE_HPP #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct coordinates_scanner { template static inline void apply(Point& point, Op operation) { operation.template apply(point); coordinates_scanner < Point, Dimension+1, DimensionCount >::apply(point, operation); } }; template struct coordinates_scanner { template static inline void apply(Point&, Op) {} }; } // namespace detail #endif // DOXYGEN_NO_DETAIL template inline void for_each_coordinate(Point& point, Op operation) { BOOST_CONCEPT_ASSERT( (concept::Point) ); typedef typename detail::coordinates_scanner < Point, 0, dimension::type::value > scanner; scanner::apply(point, operation); } } // namespace ggl #endif // GGL_UTIL_FOR_EACH_COORDINATE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/get_cs_as_radian.hpp000066400000000000000000000017001177067165300253270ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Bruno Lalande 2008, 2009 // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_GET_CS_AS_RADIAN_HPP #define GGL_UTIL_GET_CS_AS_RADIAN_HPP #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct get_cs_as_radian {}; template struct get_cs_as_radian > { typedef cs::geographic type; }; template struct get_cs_as_radian > { typedef cs::spherical type; }; } // namespace detail #endif } // namespace ggl #endif // GGL_UTIL_GET_CS_AS_RADIAN_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/less.hpp000066400000000000000000000027661177067165300230450ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_LESS_HPP #define GGL_UTIL_LESS_HPP namespace ggl { /*! \brief Less predicate for usage in e.g. std::map */ #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct less { static inline bool apply(P const& left, P const& right) { typedef typename ggl::coordinate_type

::type coordinate_type; coordinate_type const cleft = ggl::get(left); coordinate_type const cright = ggl::get(right); return ggl::math::equals(cleft, cright) ? less::apply(left, right) : cleft < cright; ; } }; template struct less { static inline bool apply(P const&, P const&) { return false; } }; } #endif template struct less { inline bool operator()(P const& left, P const& right) const { return detail::less::type::value>::apply(left, right); } }; } // namespace ggl #endif // GGL_UTIL_LESS_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/loop.hpp000066400000000000000000000056741177067165300230510ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_LOOP_HPP #define GGL_UTIL_LOOP_HPP #include #include #include namespace ggl { /*! \brief Loops through segments of a container and call specified functor for all segments. \ingroup loop \details for_each like implementation to: - walk over const segments of a linestring/polygon - be able to break out the loop (if the functor returns false) - have a const functor and keep state in separate state-object - we still keep the "functor" here so it might be a function or an object, at this place - in most algorithms the typename F::state_type is used; in those places it must be an object \tparam R range type, for example a vector, linestring, linear_ring \tparam F functor type, class or function, not modified by the algorithm \tparam S state type, might be modified \param range range (linestring iterator pair,vector,list,deque) containing points \param functor functor which is called at each const segment \param state state, specified separately from the strategy functor \return false if the functor returns false, otherwise true \par Concepts - \a V - const_iterator begin() - const_iterator end() - value_type - \a F - if it is a function functor: bool \b function (const segment&, state&) - if it is a class functor: bool operator()(const segment&, state&) const - \a S - no specific requirements here, requirments given by F \note Some algorithms from the Generic Geometry Library, for example within, centroid, use this method. \par Examples: First example, using a class functor \dontinclude doxygen_examples.cpp \skip example_loop1 \line { \until //:\\ Second example, using a function functor and latlong coordinates \dontinclude doxygen_examples.cpp \skip example_loop2 \line { \until //:\\ */ template inline bool loop(R const& range, F const& functor, S& state) { typedef typename boost::range_const_iterator::type iterator_type; iterator_type it = boost::begin(range); if (it != boost::end(range)) { iterator_type previous = it++; while(it != boost::end(range)) { segment::type> s(*previous, *it); if (! functor(s, state)) { return false; } previous = it++; } } return true; } } // namespace ggl #endif // GGL_UTIL_LOOP_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/math.hpp000066400000000000000000000042001177067165300230110ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_MATH_HPP #define GGL_UTIL_MATH_HPP #include #include #include #include namespace ggl { namespace math { // Maybe replace this by boost equals or boost ublas numeric equals or so /*! \brief returns true if both arguments are equal. equals returns true if both arguments are equal. \param a first argument \param b second argument \return true if a == b \note If both a and b are of an integral type, comparison is done by ==. If one of the types is floating point, comparison is done by abs and comparing with epsilon. */ template inline bool equals(T1 const& a, T2 const& b) { typedef typename select_most_precise::type select_type; // TODO: select on is_fundemental. Otherwise (non-fundamental), take == operator if (std::numeric_limits::is_exact) { return a == b; } else { return std::abs(a - b) < std::numeric_limits::epsilon(); } } double const pi = boost::math::constants::pi(); double const two_pi = 2.0 * pi; double const d2r = pi / 180.0; double const r2d = 1.0 / d2r; /*! \brief Calculates the haversine of an angle \note See http://en.wikipedia.org/wiki/Haversine_formula haversin(alpha) = sin2(alpha/2) */ template inline T hav(T const& theta) { using boost::math::constants::half; T const sn = std::sin(half() * theta); return sn * sn; } /*! \brief Short utility to return the square \param value Value to calculate the square from \return The squared value */ template inline T sqr(T const& value) { return value * value; } } // namespace math } // namespace ggl #endif // GGL_UTIL_MATH_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/select_coordinate_type.hpp000066400000000000000000000017451177067165300266220ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_SELECT_COORDINATE_TYPE_HPP #define GGL_UTIL_SELECT_COORDINATE_TYPE_HPP #include #include /*! \defgroup utility utility: utilities */ namespace ggl { /*! \brief Utility selecting the most precise coordinate type of two geometries \ingroup utility */ template struct select_coordinate_type { typedef typename select_most_precise < typename coordinate_type::type, typename coordinate_type::type >::type type; }; } // namespace ggl #endif // GGL_UTIL_SELECT_COORDINATE_TYPE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/select_most_precise.hpp000066400000000000000000000110021177067165300261110ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_SELECT_MOST_PRECISE_HPP #define GGL_UTIL_SELECT_MOST_PRECISE_HPP #include #include /*! \defgroup utility utility: utilities */ namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace select_most_precise { // At least one of the types is non-fundamental. Take that one. // if both are non-fundamental, the type-to-be-selected // is unknown, it should be defined by explicit specialization. template struct select_non_fundamental { typedef T1 type; }; template struct select_non_fundamental { typedef T2 type; }; template struct select_non_fundamental { typedef T1 type; }; // Selection of largest type (e.g. int of // It defaults takes the first one, if second is larger, take the second one template struct select_largest { typedef T1 type; }; template struct select_largest { typedef T2 type; }; // Selection of floating point and specializations: // both FP or both !FP does never occur... template struct select_floating_point { typedef char type; }; // ... so if ONE but not both of these types is floating point, take that one template struct select_floating_point { typedef T1 type; }; template struct select_floating_point { typedef T2 type; }; }} // namespace detail::select_most_precise #endif // DOXYGEN_NO_DETAIL /*! \brief Traits class to select, of two types, the most accurate type for calculations \ingroup utility \details select_most_precise classes, compares two types on compile time. For example, if an addition must be done with a double and an integer, the result must be a double. If both types are integer, the result can be an integer. \note It is different from the "promote" class, already in boost. That class promotes e.g. a (one) float to a double. This class selects a type from two types. It takes the most accurate, but does not promote afterwards. \note This traits class is completely independant from GGL and might be a separate (small) library in Boost \note If the input is a non-fundamental type, it might be a calculation type such as a GMP-value or another high precision value. Therefore, if one is non-fundamental, that one is chosen. \note If both types are non-fundamental, the result is indeterminate and currently the first one is chosen. */ template struct select_most_precise { static const bool second_larger = sizeof(T2) > sizeof(T1); static const bool one_not_fundamental = ! (boost::is_fundamental::type::value && boost::is_fundamental::type::value); static const bool both_same = boost::is_floating_point::type::value == boost::is_floating_point::type::value; typedef typename boost::mpl::if_c < one_not_fundamental, typename detail::select_most_precise::select_non_fundamental < boost::is_fundamental::type::value, boost::is_fundamental::type::value, T1, T2 >::type, typename boost::mpl::if_c < both_same, typename detail::select_most_precise::select_largest < second_larger, T1, T2 >::type, typename detail::select_most_precise::select_floating_point < boost::is_floating_point::type::value, boost::is_floating_point::type::value, T1, T2 >::type >::type >::type type; }; } // namespace ggl #endif // GGL_UTIL_SELECT_MOST_PRECISE_HPP merkaartor-0.18.1/include/builtin-ggl/ggl/util/write_dsv.hpp000066400000000000000000000231541177067165300240770ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_UTIL_WRITE_DSV_HPP #define GGL_UTIL_WRITE_DSV_HPP #include #include #include #include #include #include #include #include #include #include #include #include namespace ggl { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace dsv { struct dsv_settings { std::string coordinate_separator; std::string point_open; std::string point_close; std::string point_separator; std::string list_open; std::string list_close; std::string list_separator; dsv_settings(std::string const& sep , std::string const& open , std::string const& close , std::string const& psep , std::string const& lopen , std::string const& lclose , std::string const& lsep ) : coordinate_separator(sep) , point_open(open) , point_close(close) , point_separator(psep) , list_open(lopen) , list_close(lclose) , list_separator(lsep) {} }; template struct stream_coordinate { template static inline void apply(std::basic_ostream& os, P const& p, dsv_settings const& settings) { os << (Dimension > 0 ? settings.coordinate_separator : "") << get(p); stream_coordinate::apply(os, p, settings); } }; template struct stream_coordinate { template static inline void apply(std::basic_ostream&, P const&, dsv_settings const& settings) {} }; template struct stream_box_corner { template static inline void apply(std::basic_ostream& os, P const& p, dsv_settings const& settings) { os << (Dimension > 0 ? settings.coordinate_separator : "") << get(p); stream_box_corner::apply(os, p, settings); } }; template struct stream_box_corner { template static inline void apply(std::basic_ostream&, P const&, dsv_settings const& settings) {} }; /*! \brief Stream points as \ref DSV */ template struct dsv_point { template static inline void apply(std::basic_ostream& os, Point const& p, dsv_settings const& settings) { os << settings.point_open; stream_coordinate::type::value>::apply(os, p, settings); os << settings.point_close; } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; /*! \brief Stream ranges as DSV \note policy is used to stream prefix/postfix, enabling derived classes to override this */ template struct dsv_range { template static inline void apply(std::basic_ostream& os, Range const& range, dsv_settings const& settings) { typedef typename boost::range_const_iterator::type iterator_type; bool first = true; os << settings.list_open; // TODO: check EMPTY here for (iterator_type it = boost::begin(range); it != boost::end(range); ++it) { os << (first ? "" : settings.point_separator) << settings.point_open; stream_coordinate < point, 0, dimension::type::value >::apply(os, *it, settings); os << settings.point_close; first = false; } os << settings.list_close; } private: typedef typename boost::range_value::type point; BOOST_CONCEPT_ASSERT( (concept::ConstPoint) ); }; /*! \brief Stream sequence of points as DSV-part, e.g. (1 2),(3 4) \note Used in polygon, all multi-geometries */ template struct dsv_poly { template static inline void apply(std::basic_ostream& os, Polygon const& poly, dsv_settings const& settings) { typedef typename ring_type::type ring; typedef typename boost::range_const_iterator< typename interior_type::type>::type iterator; os << settings.list_open; dsv_range::apply(os, exterior_ring(poly), settings); for (iterator it = boost::begin(interior_rings(poly)); it != boost::end(interior_rings(poly)); ++it) { os << settings.list_separator; dsv_range::apply(os, *it, settings); } os << settings.list_close; } private: BOOST_CONCEPT_ASSERT( (concept::ConstPoint::type>) ); }; template struct dsv_box_corner { typedef typename point_type::type point_type; template static inline void apply(std::basic_ostream& os, Box const& box, dsv_settings const& settings) { os << settings.point_open; stream_box_corner < Box, Index, 0, dimension::type::value >::apply(os, box, settings); os << settings.point_close; } }; template struct dsv_box { typedef typename point_type::type point_type; template static inline void apply(std::basic_ostream& os, Box const& box, dsv_settings const& settings) { os << settings.list_open; dsv_box_corner::apply(os, box, settings); os << settings.point_separator; dsv_box_corner::apply(os, box, settings); os << settings.list_close; } }; }} // namespace detail::dsv #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct dsv {}; template struct dsv : detail::dsv::dsv_point {}; template struct dsv : detail::dsv::dsv_range {}; /*! \brief Specialization to stream a box as DSV */ template struct dsv : detail::dsv::dsv_box {}; /*! \brief Specialization to stream a ring as DSV */ template struct dsv : detail::dsv::dsv_range {}; /*! \brief Specialization to stream polygon as DSV */ template struct dsv : detail::dsv::dsv_poly {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Generic geometry template manipulator class, takes corresponding output class from traits class \ingroup dsv \details Stream manipulator, streams geometry classes as \ref DSV streams \par Example: Small example showing how to use the dsv class \dontinclude doxygen_examples.cpp \skip example_as_dsv_point \line { \until } \note the template parameter must be specified. If that is inconvient, users might use streamdsv which streams geometries as manipulators, or the object generator make_dsv */ template class dsv_manipulator { public: inline dsv_manipulator(Geometry const& g, detail::dsv::dsv_settings const& settings) : m_geometry(g) , m_settings(settings) {} template inline friend std::basic_ostream& operator<<( std::basic_ostream& os, dsv_manipulator const& m) { dispatch::dsv < typename tag::type, is_multi::type::value, Geometry >::apply(os, m.m_geometry, m.m_settings); os.flush(); return os; } private: Geometry const& m_geometry; detail::dsv::dsv_settings m_settings; }; /*! \brief Main DSV-streaming function \ingroup dsv */ template inline dsv_manipulator dsv(Geometry const& geometry , std::string const& coordinate_separator = ", " , std::string const& point_open = "(" , std::string const& point_close = ")" , std::string const& point_separator = ", " , std::string const& list_open = "(" , std::string const& list_close = ")" , std::string const& list_separator = ", " ) { return dsv_manipulator(geometry, detail::dsv::dsv_settings(coordinate_separator, point_open, point_close, point_separator, list_open, list_close, list_separator)); } } // namespace ggl #endif // GGL_UTIL_WRITE_DSV_HPP merkaartor-0.18.1/interfaces/000077500000000000000000000000001177067165300161105ustar00rootroot00000000000000merkaartor-0.18.1/interfaces/IBackend.h000066400000000000000000000013271177067165300177240ustar00rootroot00000000000000#ifndef IBACKEND_H #define IBACKEND_H #include #include #include class Feature; class Node; class Way; class Relation; class TrackSegment; class IBackend { public: virtual Node* allocNode(const Node& other) = 0; virtual Node* allocNode(const QPointF& aCoord) = 0; virtual Way* allocWay() = 0; virtual Way* allocWay(const Way& other) = 0; virtual Relation* allocRelation() = 0; virtual Relation* allocRelation(const Relation& other) = 0; virtual TrackSegment* allocSegment() = 0; virtual void deallocFeature(Feature*) = 0; virtual void sync(Feature* f) = 0; virtual void get(const QRectF& hz, QList& theFeatures) = 0; }; #endif // IBACKEND_H merkaartor-0.18.1/interfaces/IDocument.h000066400000000000000000000006401177067165300201500ustar00rootroot00000000000000#ifndef IDOCUMENT_H #define IDOCUMENT_H #include "Coord.h" class Layer; class IDocument { public: virtual int layerSize() const = 0; virtual Layer* getLayer(int i) = 0; virtual const Layer* getLayer(int i) const = 0; virtual const QList getDownloadBoxes() const = 0; virtual const QList getDownloadBoxes(Layer* l) const = 0; }; #endif // IDOCUMENT_H merkaartor-0.18.1/interfaces/IFeature.h000066400000000000000000000063741177067165300177770ustar00rootroot00000000000000#ifndef IFEATURE_H #define IFEATURE_H #include #include #include #include #define TECHNICAL_TAGS "created_by#source" class QPainterPath; class IFeature { public: typedef enum { Uninitialized = 0x00, Point = 0x01, LineString = 0x02, Polygon = 0x04, OsmRelation = 0x08, GpxSegment = 0x10, Conflict = 0x20, Import = 0x40, Special = 0x80, All = 0xff } FeatureType; class FId { public: FId() : type(IFeature::Uninitialized), numId(0) {} FId(char a, qint64 b) : type(a), numId(b) {} bool operator==(const FId& R) const { return ((type == R.type) && (numId == R.numId)); } unsigned char type; qint64 numId; }; public: virtual char getType() const = 0; virtual QString xmlId() const = 0; #ifndef FRISIUS_BUILD virtual const QDateTime time() const = 0; virtual int versionNumber() const = 0; virtual const QString& user() const = 0; #endif virtual int sizeParents() const = 0; virtual IFeature* getParent(int i) = 0; virtual const IFeature* getParent(int i) const = 0; virtual bool hasPainter(qreal PixelPerM) const = 0; /** Give the id of the feature. * If the feature has no id, a random id is generated * @return the id of the current feature */ virtual const IFeature::FId& id() const = 0; /** check if the feature is logically deleted * @return true if logically deleted */ virtual bool isDeleted() const = 0; /** @return the number of tags for the current object */ virtual int tagSize() const = 0; /** if a tag with the key "k" exists, return its index. * if the key doesn't exist, return the number of tags * @return index of tag */ virtual int findKey(const QString& k) const = 0; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagValue(int i) const = 0; /** return the value of the tag with the key "k". * if such a tag doesn't exists, return Default. * @return value or Default */ virtual QString tagValue(const QString& k, const QString& Default) const = 0; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagKey(int i) const = 0; /** check if the feature has been uploaded * @return true if uploaded */ virtual bool isUploaded() const = 0; /** check if the dirty status of the feature * @return true if the feature is dirty */ virtual bool isDirty() const = 0; /** check if the feature is visible * @return true if visible */ virtual bool isVisible() = 0; /** check if the feature is read-only * @return true if is read-only */ virtual bool isReadonly() = 0; virtual const QPainterPath& getPath() const = 0; }; Q_DECLARE_METATYPE(IFeature::FId) #endif // IFEATURE_H merkaartor-0.18.1/interfaces/IImageManager.cpp000066400000000000000000000052711177067165300212470ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "IImageManager.h" #include "MerkaartorPreferences.h" #include IImageManager::IImageManager() : cacheSize(0), cacheMaxSize(0), cachePermanent(false) { m_networkManager = new QNetworkAccessManager(); } IImageManager::~IImageManager() { delete m_networkManager; } QNetworkAccessManager* IImageManager::getNetworkManager() const { return m_networkManager; } bool IImageManager::useDiskCache(QString filename) { // qDebug() << cacheDir.absolutePath() << filename; if (!cacheMaxSize && !cachePermanent) return false; if (!cacheDir.exists(filename)) return false; if (M_PREFS->getOfflineMode()) return true; if (cachePermanent) return true; int random = qrand() % 100; QFileInfo info(cacheDir.absolutePath() + "/" + filename); int days = info.lastModified().daysTo(QDateTime::currentDateTime()); return random < (10 * days) ? false : true; } void IImageManager::adaptCache() { if (cachePermanent) return; QFileInfo info; while (cacheSize > cacheMaxSize) { info = cacheInfo.takeFirst(); cacheDir.remove(info.fileName()); cacheSize -= info.size(); } } void IImageManager::setCachePermanent(bool val) { cachePermanent = val; } bool IImageManager::isCachePermanant() const { return cachePermanent; } merkaartor-0.18.1/interfaces/IImageManager.h000066400000000000000000000100021177067165300207000ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef IIMAGEMANAGER_H #define IIMAGEMANAGER_H #include #include #include #include class IMapAdapter; class LoadingRequest { public: LoadingRequest(QString h, QString H, QString U) : hash(h), host(H), url(U) {}; bool operator==(const LoadingRequest& LR) const { if (hash != LR.hash) return false; if (host != LR.host) return false; if (url != LR.url) return false; return true; } QString hash; QString host; QString url; }; /** @author Kai Winter */ class IImageManager { public: IImageManager(); virtual ~IImageManager(); virtual QNetworkAccessManager* getNetworkManager() const; //! returns a QPixmap of the asked image /*! * If this component doesn´t have the image a network query gets started to load it. * @param host the host of the image * @param path the path to the image * @return the pixmap of the asked image */ virtual QImage getImage(IMapAdapter* anAdapter, QString url) = 0; virtual QByteArray getData(IMapAdapter* anAdapter, QString url) = 0; //QPixmap prefetchImage(const QString& host, const QString& path); virtual QImage prefetchImage(IMapAdapter* anAdapter, int x, int y, int z) = 0; virtual void receivedData(const QByteArray& ba, const QHash& headers, const QString& url) = 0; /*! * This method is called by MapNetwork, after all images in its queue were loaded. * The ImageManager emits a signal, which is used in MapControl to remove the zoom image. * The zoom image should be removed on Tile Images with transparency. * Else the zoom image stay visible behind the newly loaded tiles. */ virtual void loadingQueueEmpty() = 0; /*! * Aborts all current loading threads. * This is useful when changing the zoom-factor, though newly needed images loads faster */ virtual void abortLoading() = 0; virtual void setCacheDir(const QDir& path) = 0; virtual QDir getCacheDir() = 0; virtual void setCacheMaxSize(int max) = 0; virtual void setCachePermanent(bool val); virtual bool isCachePermanant() const; protected: QNetworkAccessManager* m_networkManager; QDir cacheDir; QFileInfoList cacheInfo; int cacheSize; int cacheMaxSize; bool cachePermanent; bool useDiskCache(QString filename); void adaptCache(); }; #endif merkaartor-0.18.1/interfaces/ILayer.h000066400000000000000000000001211177067165300174400ustar00rootroot00000000000000#ifndef ILAYER_H #define ILAYER_H class ILayer { public: }; #endif // ILAYER_H merkaartor-0.18.1/interfaces/IMapAdapter.h000066400000000000000000000071161177067165300204150ustar00rootroot00000000000000#ifndef IMAPADAPTER_H #define IMAPADAPTER_H #include #include #include #include #include #include #include #include #include class IFeature; class IProjection; class IImageManager; class IMapAdapter : public QObject { Q_OBJECT public: enum Type { NetworkBackground, NetworkDataBackground, BrowserBackground, DirectBackground, VectorBackground }; virtual ~IMapAdapter() {} //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const = 0; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const = 0; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const = 0; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const = 0; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const = 0; virtual int getTileSizeH () const = 0; //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const = 0; //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const = 0; //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const = 0; //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const = 0; virtual void setSourceTag (const QString& value) = 0; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const = 0; virtual int getAdaptedZoom() const = 0; virtual int getAdaptedMinZoom (const QRectF &) const = 0; virtual int getAdaptedMaxZoom (const QRectF &) const = 0; virtual void zoom_in() = 0; virtual void zoom_out() = 0; virtual bool isValid(int x, int y, int z) const = 0; virtual QString getQuery(int x, int y, int z) const = 0; virtual QString getQuery(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const = 0; virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const = 0; virtual const QList* getPaths(const QRectF& /*wgs84Bbox*/, const IProjection* /*projection*/) const { return NULL; } virtual QString projection() const = 0; virtual QRectF getBoundingbox() const = 0; virtual bool isTiled() const = 0; virtual int getTilesWE(int zoom) const = 0; virtual int getTilesNS(int zoom) const = 0; virtual QMenu* getMenu() const = 0; virtual IImageManager* getImageManager() = 0; virtual void setImageManager(IImageManager* anImageManager) = 0; virtual void cleanup() = 0; virtual bool toXML(QXmlStreamWriter& ) = 0; virtual void fromXML(QXmlStreamReader&) = 0; virtual QString toPropertiesHtml() = 0; virtual void setSettings(QSettings* aSet) = 0; signals: void forceRefresh(); void forceZoom(); void forceProjection(); }; Q_DECLARE_INTERFACE ( IMapAdapter, "com.cbsoft.Merkaartor.IMapAdapter/1.12" ) #endif merkaartor-0.18.1/interfaces/IMapAdapterFactory.h000066400000000000000000000013661177067165300217460ustar00rootroot00000000000000#ifndef IMAPADAPTERFACTORY_H #define IMAPADAPTERFACTORY_H #include "IMapAdapter.h" class IMapAdapterFactory { public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ virtual IMapAdapter* CreateInstance() = 0; //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const = 0; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const = 0; }; Q_DECLARE_INTERFACE ( IMapAdapterFactory, "com.cbsoft.Merkaartor.IMapAdapterFactory/1.0" ) #endif // IMAPADAPTERFACTORY_H merkaartor-0.18.1/interfaces/IMapWatermark.h000066400000000000000000000005721177067165300207710ustar00rootroot00000000000000#ifndef IMAPWATERMARK_H #define IMAPWATERMARK_H #include #include #include class IMapWatermark { public: virtual QString getLogoHtml() = 0; virtual QString getAttributionsHtml(const QRectF& bbox, const QRect& screen) = 0; }; Q_DECLARE_INTERFACE ( IMapWatermark, "com.cbsoft.Merkaartor.IMapWatermark/1.0" ) #endif merkaartor-0.18.1/interfaces/IMerkMainWindow.h000066400000000000000000000007701177067165300212710ustar00rootroot00000000000000#ifndef IMERKMAINWINDOW_H #define IMERKMAINWINDOW_H class MapView; class Document; class QGPS; class PropertiesDock; class InfoDock; class FeaturesDock; class IMerkMainWindow { public: virtual MapView* view() = 0; virtual void invalidateView(bool UpdateDock = true) = 0; virtual Document* document() = 0; virtual QGPS* gps() = 0; virtual PropertiesDock* properties() = 0; virtual InfoDock* info() = 0; virtual FeaturesDock* features() = 0; }; #endif // IMERKMAINWINDOW_H merkaartor-0.18.1/interfaces/IProgressWindow.h000066400000000000000000000007361177067165300213740ustar00rootroot00000000000000#ifndef MERKATOR_IPROGRESSWINDOW_H_ #define MERKATOR_IPROGRESSWINDOW_H_ class QProgressDialog; class QProgressBar; class QLabel; class IProgressWindow { protected: QProgressDialog* theProgressDialog; QProgressBar* theProgressBar; QLabel* theProgressLabel; public: QProgressDialog* getProgressDialog() { return theProgressDialog; } QProgressBar* getProgressBar() { return theProgressBar; } QLabel* getProgressLabel() { return theProgressLabel; } }; #endif merkaartor-0.18.1/interfaces/IProjection.h000066400000000000000000000005341177067165300205100ustar00rootroot00000000000000#ifndef MERKATOR_IPROJECTION_H_ #define MERKATOR_IPROJECTION_H_ class QString; class QPointF; class IProjection { public: virtual ~IProjection(void) {}; virtual QPointF project(const QPointF& pt) const = 0; virtual QPointF inverse2Point(const QPointF& pt) const = 0; virtual QString getProjectionType() const = 0; }; #endif merkaartor-0.18.1/interfaces/IRenderer.h000066400000000000000000000023531177067165300201430ustar00rootroot00000000000000#ifndef IRENDERER_H #define IRENDERER_H #include class RendererOptions { public: enum RenderOption { None = 0x0, BackgroundVisible = 0x1, ForegroundVisible = 0x2, TouchupVisible = 0x4, NamesVisible = 0x8, PhotosVisible = 0x10, VirtualNodesVisible = 0x20, NodesVisible = 0x40, TrackSegmentVisible = 0x80, RelationsVisible = 0x100, MapBackgroundVisible = 0x200, DownloadedVisible = 0x400, DirtyVisible = 0x800, ScaleVisible = 0x1000, LatLonGridVisible = 0x2000, UnstyledHidden = 0x4000, Interacting = 0x8000, LockZoom = 0x10000, ForPrinting = 0x20000, PrintAllLabels = 0x40000 }; Q_DECLARE_FLAGS(RenderOptions, RenderOption) enum DirectionalArrowsShowOption { ArrowsNever = 0x0, ArrowsOneway = 0x1, ArrowsAlways = 0x2 }; Q_DECLARE_FLAGS(DirectionalArrowsShowOptions, DirectionalArrowsShowOption) RenderOptions options; DirectionalArrowsShowOptions arrowOptions; }; Q_DECLARE_OPERATORS_FOR_FLAGS(RendererOptions::RenderOptions) Q_DECLARE_OPERATORS_FOR_FLAGS(RendererOptions::DirectionalArrowsShowOptions) #endif // IRENDERER_H merkaartor-0.18.1/interfaces/Interfaces.pri000066400000000000000000000004401177067165300207050ustar00rootroot00000000000000HEADERS += \ IFeature.h \ IProjection.h \ IImageManager.h \ IMapAdapter.h \ IRenderer.h \ IMapAdapterFactory.h \ IMapWatermark.h \ IBackend.h \ ILayer.h \ IProgressWindow.h \ IMerkMainWindow.h \ ../../../interfaces/IDocument.h merkaartor-0.18.1/macos/000077500000000000000000000000001177067165300150675ustar00rootroot00000000000000merkaartor-0.18.1/macos/Info.plist000066400000000000000000000020541177067165300170400ustar00rootroot00000000000000 CFBundleIconFile merkaartor.icns CFBundlePackageType APPL CFBundleGetInfoString Merkaartor 0.17-dev, © Bart Vanhauwaert, Chris Browet and others CFBundleSignature MERKAARTOR CFBundleDevelopmentRegion English CFBundleName merkaartor CFBundleExecutable merkaartor CFBundleVersion 0.17-dev CFBundleShortVersionString 0.17-dev CFBundleIdentifier org.merkaartor.app.merkaartor CFBundleInfoDictionaryVersion 6.0 merkaartor-0.18.1/macos/mklocversion.sh000077500000000000000000000022721177067165300201440ustar00rootroot00000000000000#!/bin/sh # # Creates the .lproj/locversion.plist files needed by Mac OS X as to translate # the standard mac menu items. See # # for details. # # Written by (c) Albrecht Dre\3 2010; released under the # terms of the GPL v. 2 as usual. if test -z "$2" ; then echo "usage: $0 [ ...]" exit 1 fi BUNDLE=$1 shift for n in "$@" ; do loc=$(echo "$n" | sed -e 's/.*_\(..\)_...qm/\1/') echo "Mac locale $loc..." rm -rf "$BUNDLE/Contents/Resources/$loc.lproj" mkdir -p "$BUNDLE/Contents/Resources/$loc.lproj" cat > "$BUNDLE/Contents/Resources/$loc.lproj/locversion.plist" < LprojCompatibleVersion 123 LprojLocale $loc LprojRevisionLevel 1 LprojVersion 123 EOF done merkaartor-0.18.1/macos/setupframework.sh000066400000000000000000000050441177067165300205040ustar00rootroot00000000000000mkdir Frameworks cp -R /Library/Frameworks/QtCore.framework Frameworks cp -R /Library/Frameworks/QtGui.framework Frameworks/ cp -R /Library/Frameworks/QtXml.framework Frameworks cp -R /Library/Frameworks/QtNetwork.framework Frameworks/ cp -R /Library/Frameworks/QtWebKit.framework Frameworks/ mkdir plugins cd plugins mkdir imageformats cd .. cp -R /Developer/Applications/Qt/plugins/imageformats/libqjpeg.dylib plugins/imageformats install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore MacOS/merkaartor install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui MacOS/merkaartor install_name_tool -change QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4.0/QtNetwork MacOS/merkaartor install_name_tool -change QtXml.framework/Versions/4/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/4.0/QtXml MacOS/merkaartor install_name_tool -change QtWebKit.framework/Versions/4/QtWebKit @executable_path/../Frameworks/QtWebKit.framework/Versions/4.0/QtWebKit MacOS/merkaartor install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore Frameworks/QtGui.framework/Versions/4.0/QtGui install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore Frameworks/QtNetwork.framework/Versions/4.0/QtNetwork install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore Frameworks/QtXml.framework/Versions/4.0/QtXml install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore Frameworks/QtWebKit.framework/Versions/4.0/QtWebKit install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore plugins/imageformats/libqjpeg.dylib install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui Frameworks/QtWebKit.framework/Versions/4.0/QtWebKit install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui plugins/imageformats/libqjpeg.dylib install_name_tool -change QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4.0/QtNetwork Frameworks/QtWebKit.framework/Versions/4.0/QtWebKit merkaartor-0.18.1/mobilemerk/000077500000000000000000000000001177067165300161135ustar00rootroot00000000000000merkaartor-0.18.1/mobilemerk/mobilemerk.pro000066400000000000000000000017771177067165300207770ustar00rootroot00000000000000# ------------------------------------------------- # Project created by QtCreator 2010-08-26T14:46:56 # ------------------------------------------------- QT += svg xml TARGET = mobilemerk TEMPLATE = app DEFINES += _MOBILE include(src/src.pri) INCLUDEPATH += thirdparty/MouseMachine DEPENDPATH += thirdparty/MouseMachine include(thirdparty/MouseMachine/MouseMachine.pri) contains(GOSMORE,1) { DEFINES += USE_GOSMORE INCLUDEPATH += ../plugins/background/MGosmoreBackground DEPENDPATH += ../plugins/background/MGosmoreBackground include(../plugins/background/MGosmoreBackground/MGosmoreBackground.pri) } contains(NAVIT,1) { DEFINES += USE_NAVIT INCLUDEPATH += ../plugins/background/MNavitBackground DEPENDPATH += ../plugins/background/MNavitBackground include(../plugins/background/MNavitBackground/MNavitBackground.pri) } INCLUDEPATH += ../src/PaintStyle DEPENDPATH += ../src/PaintStyle include(../src/PaintStyle/PaintStyle.pri) INCLUDEPATH += ../interfaces DEPENDPATH += ../interfaces merkaartor-0.18.1/mobilemerk/src/000077500000000000000000000000001177067165300167025ustar00rootroot00000000000000merkaartor-0.18.1/mobilemerk/src/MapView.cpp000066400000000000000000000332211177067165300207570ustar00rootroot00000000000000#include "MapView.h" #include "MouseMachine.h" #include #include #include #ifdef USE_GOSMORE #include "GosmoreAdapter.h" #else #include "NavitAdapter.h" #endif class MapViewPrivate { public: MapViewPrivate() : PixelPerM(0.0) , StaticBufferUpToDate(false) , StaticBuffer(0) {} public: Projection theProjection; QTransform theTransform; MouseMachine* mm; QShortcut* MoveLeft; QShortcut* MoveRight; QShortcut* MoveUp; QShortcut* MoveDown; QShortcut* ZoomIn; QShortcut* ZoomOut; double PixelPerM; double ZoomLevel; CoordBox Viewport; QList invalidRects; QPoint theVectorPanDelta; bool StaticBufferUpToDate; QPixmap* StaticBuffer; #ifdef USE_GOSMORE GosmoreAdapter* theAdapter; #else NavitAdapter* theAdapter; #endif }; MapView::MapView(QWidget *parent) : QWidget(parent) { p = new MapViewPrivate; p->theProjection.setProjectionType("EPSG:3857"); p->mm = new MouseMachine(this); connect(p->mm, SIGNAL(scroll(QPoint)), SLOT(panScreen(QPoint))); // connect(p->mm, SIGNAL(singleTap(QPoint)), SLOT(slotClicked(QPoint))); // connect(p->mm, SIGNAL(doubleTap(QPoint)), SLOT(slotDoubleClicked(QPoint))); // connect(p->mm, SIGNAL(tapAndHold(QPoint)), SLOT(slotTapAndHold(QPoint))); #ifdef USE_GOSMORE p->theAdapter = new GosmoreAdapter(); p->theAdapter->setFile("/home/cbro/Downloads/gosmore.pak"); #else p->theAdapter = new NavitAdapter(); p->theAdapter->setFile("/home/cbro/Downloads/osm_bbox_2.3,49.4,6.6,51.6.bin"); #endif setMouseTracking(false); setAttribute(Qt::WA_NoSystemBackground); p->MoveRight = new QShortcut(QKeySequence(Qt::Key_Right), this); connect(p->MoveRight, SIGNAL(activated()), this, SLOT(on_MoveRight_activated())); p->MoveLeft = new QShortcut(QKeySequence(Qt::Key_Left), this); connect(p->MoveLeft, SIGNAL(activated()), this, SLOT(on_MoveLeft_activated())); p->MoveUp = new QShortcut(QKeySequence(Qt::Key_Up), this); connect(p->MoveUp, SIGNAL(activated()), this, SLOT(on_MoveUp_activated())); p->MoveDown = new QShortcut(QKeySequence(Qt::Key_Down), this); connect(p->MoveDown, SIGNAL(activated()), this, SLOT(on_MoveDown_activated())); p->ZoomIn = new QShortcut(QKeySequence("+"), this); connect(p->ZoomIn, SIGNAL(activated()), this, SLOT(on_ZoomIn_activated())); p->ZoomOut = new QShortcut(QKeySequence("-"), this); connect(p->ZoomOut, SIGNAL(activated()), this, SLOT(on_ZoomOut_activated())); } MapView::~MapView() { delete p; } void MapView::on_MoveLeft_activated() { QPoint p(rect().width()/4,0); panScreen(p); } void MapView::on_MoveRight_activated() { QPoint p(-rect().width()/4,0); panScreen(p); } void MapView::on_MoveUp_activated() { QPoint p(0,rect().height()/4); panScreen(p); } void MapView::on_MoveDown_activated() { QPoint p(0,-rect().height()/4); panScreen(p); } void MapView::on_ZoomIn_activated() { zoom(2.0, rect().center()); } void MapView::on_ZoomOut_activated() { zoom(0.5, rect().center()); } void MapView::panScreen(QPoint delta) { p->theVectorPanDelta += delta; CoordBox r1, r2; Coord cDelta = p->theProjection.inverse(p->theTransform.inverted().map(QPointF(delta))) - p->theProjection.inverse(p->theTransform.inverted().map(QPointF(0., 0.))); p->invalidRects.clear(); if (delta.x()) { if (delta.x() < 0) r1 = CoordBox(p->Viewport.bottomRight(), Coord(p->Viewport.topRight().lat(), p->Viewport.topRight().lon() - cDelta.lon())); // OK else r1 = CoordBox(Coord(p->Viewport.bottomLeft().lat(), p->Viewport.bottomLeft().lon() - cDelta.lon()), p->Viewport.topLeft()); // OK p->invalidRects.push_back(r1); } if (delta.y()) { if (delta.y() < 0) r2 = CoordBox(Coord(p->Viewport.bottomLeft().lat() - cDelta.lat(), p->Viewport.bottomLeft().lon()), p->Viewport.bottomRight()); // OK else r2 = CoordBox(p->Viewport.topLeft(), Coord(p->Viewport.topRight().lat() - cDelta.lat(), p->Viewport.bottomRight().lon())); //NOK p->invalidRects.push_back(r2); } //qDebug() << "Inv rects size: " << p->invalidRects.size(); //qDebug() << "delta: " << delta; //qDebug() << "r1 : " << p->theTransform.map(theProjection.project(r1.topLeft())) << ", " << p->theTransform.map(theProjection.project(r1.bottomRight())); //qDebug() << "r2 : " << p->theTransform.map(theProjection.project(r2.topLeft())) << ", " << p->theTransform.map(theProjection.project(r2.bottomRight())); p->theTransform.translate(qreal(delta.x())/p->theTransform.m11(), qreal(delta.y())/p->theTransform.m22()); viewportRecalc(rect()); invalidate(); } void MapView::invalidate() { p->StaticBufferUpToDate = false; update(); } void MapView::paintEvent(QPaintEvent * anEvent) { QPainter P; P.begin(this); if (!p->StaticBufferUpToDate) updateStaticBuffer(); P.drawPixmap(p->theVectorPanDelta, *p->StaticBuffer); drawScale(P); drawGPS(P); P.end(); } void MapView::drawScale(QPainter & P) { errno = 0; double Log = log10(200./p->PixelPerM); if (errno != 0) return; double RestLog = Log-floor(Log); if (RestLog < log10(2.)) Log = floor(Log); else if (RestLog < log10(5.)) Log = floor(Log)+log10(2.); else Log = floor(Log)+log10(5.); double Length = pow(10.,Log); QPointF P1(20,height()-20); QPointF P2(20+Length*p->PixelPerM,height()-20); P.fillRect(P1.x()-4, P1.y()-20-4, P2.x() - P1.x() + 4, 33, QColor(255, 255, 255, 128)); P.setPen(QPen(QColor(0,0,0),2)); P.drawLine(P1-QPointF(0,5),P1+QPointF(0,5)); P.drawLine(P1,P2); if (Length < 1000) P.drawText(QRectF(P2-QPoint(200,40),QSize(200,30)),Qt::AlignRight | Qt::AlignBottom, QString(tr("%1 m")).arg(Length, 0, 'f', 0)); else P.drawText(QRectF(P2-QPoint(200,40),QSize(200,30)),Qt::AlignRight | Qt::AlignBottom, QString(tr("%1 km")).arg(Length/1000, 0, 'f', 0)); P.drawLine(P2-QPointF(0,5),P2+QPointF(0,5)); } void MapView::drawGPS(QPainter & P) { // if (Main->gps()->getGpsDevice()) { // if (Main->gps()->getGpsDevice()->fixStatus() == QGPSDevice::StatusActive) { // Coord vp(angToCoord(Main->gps()->getGpsDevice()->latitude()), angToCoord(Main->gps()->getGpsDevice()->longitude())); // QPointF g = p->theTransform.map(projection().project(vp)); // QPixmap pm = getPixmapFromFile(":/Gps/Gps_Marker.svg", 32); // P.drawPixmap(g - QPoint(16, 16), pm); // } // } } QPoint MapView::toView(const Coord& aCoord) const { return p->theTransform.map(p->theProjection.project(aCoord)).toPoint(); } bool MapView::toXML(QDomElement xParent) { bool OK = true; QDomElement e = xParent.namedItem("MapView").toElement(); if (!e.isNull()) { xParent.removeChild(e); } e = xParent.ownerDocument().createElement("MapView"); xParent.appendChild(e); viewport().toXML("Viewport", e); p->theProjection.toXML(e); return OK; } void MapView::fromXML(const QDomElement xParent) { CoordBox cb; QDomElement e = xParent.firstChildElement(); while(!e.isNull()) { if (e.tagName() == "Viewport") { cb = CoordBox::fromXML(e); } else if (e.tagName() == "Projection") { p->theProjection.fromXML(e); } e = e.nextSiblingElement(); } if (!cb.isNull()) setViewport(cb, rect()); } CoordBox MapView::viewport() const { return p->Viewport; } void MapView::viewportRecalc(const QRect & Screen) { QRectF fScreen(Screen); Coord bl = p->theProjection.inverse(p->theTransform.inverted().map(fScreen.bottomLeft())); Coord br = p->theProjection.inverse(p->theTransform.inverted().map(fScreen.bottomRight())); Coord tr = p->theProjection.inverse(p->theTransform.inverted().map(fScreen.topRight())); Coord tl = p->theProjection.inverse(p->theTransform.inverted().map(fScreen.topLeft())); double t = qMax(tr.lat(), tl.lat()); double b = qMin(br.lat(), bl.lat()); double l = qMin(tl.lon(), bl.lon()); double r = qMax(tr.lon(), br.lon()); p->Viewport = CoordBox(Coord(b, l), Coord(t, r)); if (p->theProjection.projIsLatLong()) { p->PixelPerM = Screen.width() / (double)p->Viewport.lonDiff() * p->theProjection.lonAnglePerM(coordToRad(p->Viewport.center().lat())); } else { // measure geographical distance between mid left and mid right of the screen int mid = (fScreen.topLeft().y() + fScreen.bottomLeft().y()) / 2; Coord left = p-> theProjection.inverse(p->theTransform.inverted().map(QPointF(fScreen.left(), mid))); Coord right = p->theProjection.inverse(p->theTransform.inverted().map(QPointF(fScreen.right(), mid))); p->PixelPerM = Screen.width() / (left.distanceFrom(right)*1000); } } void MapView::transformCalc(QTransform& theTransform, const Projection& theProjection, const CoordBox& TargetMap, const QRect& Screen) { QPointF bl = theProjection.project(TargetMap.bottomLeft()); QPointF tr = theProjection.project(TargetMap.topRight()); QRectF pViewport = QRectF(bl, QSizeF(tr.x() - bl.x(), tr.y() - bl.y())); QPointF pCenter(pViewport.center()); double Aspect = (double)Screen.width() / Screen.height(); double pAspect = pViewport.width() / pViewport.height(); double wv, hv; if (pAspect > Aspect) { wv = pViewport.width(); hv = pViewport.height() * pAspect / Aspect; } else { wv = pViewport.width() * Aspect / pAspect; hv = pViewport.height(); } double ScaleLon = Screen.width() / wv; double ScaleLat = Screen.height() / hv; double PLon = pCenter.x() * ScaleLon; double PLat = pCenter.y() * ScaleLat; double DeltaLon = Screen.width() / 2 - PLon; double DeltaLat = Screen.height() - (Screen.height() / 2 - PLat); theTransform.setMatrix(ScaleLon, 0, 0, 0, -ScaleLat, 0, DeltaLon, DeltaLat, 1); } void MapView::setViewport(const CoordBox & TargetMap) { if (TargetMap.latDiff() == 0 || TargetMap.lonDiff() == 0) p->Viewport = CoordBox (TargetMap.center()-COORD_ENLARGE*10, TargetMap.center()+COORD_ENLARGE*10); else p->Viewport = TargetMap; p->invalidRects.clear(); p->StaticBufferUpToDate = false; } void MapView::setViewport(const CoordBox & TargetMap, const QRect & Screen) { CoordBox targetVp; if (TargetMap.latDiff() == 0 || TargetMap.lonDiff() == 0) targetVp = CoordBox (TargetMap.center()-COORD_ENLARGE*10, TargetMap.center()+COORD_ENLARGE*10); else targetVp = TargetMap; transformCalc(p->theTransform, p->theProjection, targetVp, Screen); viewportRecalc(Screen); p->ZoomLevel = p->theTransform.m11(); p->invalidRects.clear(); p->StaticBufferUpToDate = false; } void MapView::zoom(double d, const QPoint & Around) { // Sensible limits on zoom range (circular scroll on touchpads can scroll // very fast). if (p->PixelPerM * d > 100 && d > 1.0) return; if (p->PixelPerM * d < 1e-5 && d < 1.0) return; qreal z = d; zoom(z, Around, rect()); } void MapView::zoom(double d, const QPoint & Around, const QRect & Screen) { Coord Before = p->theProjection.inverse(p->theTransform.inverted().map(QPointF(Around))); QPointF pBefore = p->theProjection.project(Before); double ScaleLon = p->theTransform.m11() * d; double ScaleLat = p->theTransform.m22() * d; double DeltaLat = (Around.y() - pBefore.y() * ScaleLat); double DeltaLon = (Around.x() - pBefore.x() * ScaleLon); p->theTransform.setMatrix(ScaleLon, 0, 0, 0, ScaleLat, 0, DeltaLon, DeltaLat, 1); viewportRecalc(Screen); p->ZoomLevel = ScaleLon; invalidate(); } void MapView::resize(QSize oldS, QSize newS) { Q_UNUSED(oldS) viewportRecalc(QRect(QPoint(0,0), newS)); } void MapView::setCenter(Coord & Center, const QRect & /*Screen*/) { Coord curCenter(p->Viewport.center()); QPointF curCenterScreen = p->theTransform.map(p->theProjection.project(curCenter)); QPointF newCenterScreen = p->theTransform.map(p->theProjection.project(Center)); QPointF panDelta = (curCenterScreen - newCenterScreen); panScreen(panDelta.toPoint()); } double MapView::pixelPerM() const { return p->PixelPerM; } void MapView::updateStaticBuffer() { #ifndef QT_NO_DEBUG_OUTPUT QDateTime tm = QDateTime::currentDateTime(); #endif if (!p->StaticBuffer || (p->StaticBuffer->size() != size())) { delete p->StaticBuffer; p->StaticBuffer = new QPixmap(size()); } QPainter P; if (!p->theVectorPanDelta.isNull()) { QRegion exposed; p->StaticBuffer->scroll(p->theVectorPanDelta.x(), p->theVectorPanDelta.y(), p->StaticBuffer->rect(), &exposed); P.begin(p->StaticBuffer); P.setClipping(true); P.setClipRegion(exposed); P.eraseRect(p->StaticBuffer->rect()); } else { p->StaticBuffer->fill(Qt::transparent); P.begin(p->StaticBuffer); } P.setRenderHint(QPainter::Antialiasing); QRectF fullbox = p->Viewport.toRectF(); if (!p->invalidRects.isEmpty()) { foreach (CoordBox cb, p->invalidRects) { QRectF selbox = cb.toRectF(); p->theAdapter->render(&P, fullbox, selbox, rect()); } } else { QRectF selbox = fullbox; p->theAdapter->render(&P, fullbox, selbox, rect()); } P.end(); #ifndef QT_NO_DEBUG_OUTPUT int ms = tm.time().msecsTo(QDateTime::currentDateTime().time()); qDebug() << "Paint buffer: " << ms << " msecs"; #endif p->invalidRects.clear(); p->theVectorPanDelta = QPoint(0, 0); p->StaticBufferUpToDate = true; } merkaartor-0.18.1/mobilemerk/src/MapView.h000066400000000000000000000030111177067165300204160ustar00rootroot00000000000000#ifndef MAPVIEW_H #define MAPVIEW_H #include #include #include "Maps/Coord.h" #include "Maps/Projection.h" class MapViewPrivate; class MapView : public QWidget { Q_OBJECT public: explicit MapView(QWidget *parent = 0); ~MapView(); public: void drawScale(QPainter & P); void drawGPS(QPainter & P); void setViewport(const CoordBox & TargetMap); void setViewport(const CoordBox & TargetMap, const QRect & Screen); CoordBox viewport() const; void viewportRecalc(const QRect & Screen); QPoint toView(const Coord& aCoord) const; double pixelPerM() const; void setCenter(Coord & Center, const QRect & /*Screen*/); void zoom(double d, const QPoint & Around); void zoom(double d, const QPoint & Around, const QRect & Screen); void resize(QSize oldS, QSize newS); bool toXML(QDomElement xParent); void fromXML(const QDomElement p); void invalidate(); protected slots: void panScreen(QPoint delta); protected: MapViewPrivate* p; void paintEvent(QPaintEvent * anEvent); void transformCalc(QTransform& theTransform, const Projection& theProjection, const CoordBox& TargetMap, const QRect& Screen); private: void updateStaticBuffer(); signals: public slots: virtual void on_MoveLeft_activated(); virtual void on_MoveRight_activated(); virtual void on_MoveUp_activated(); virtual void on_MoveDown_activated(); virtual void on_ZoomIn_activated(); virtual void on_ZoomOut_activated(); }; #endif // MAPVIEW_H merkaartor-0.18.1/mobilemerk/src/MobileMainWindow.cpp000066400000000000000000000020571177067165300226160ustar00rootroot00000000000000#include "MobileMainWindow.h" #include "ui_MobileMainWindow.h" #include "MapView.h" //#define START_COORDBOX CoordBox(Coord(COORD_MAX/4, -COORD_MAX/4), Coord(-COORD_MAX/4, COORD_MAX/4)) #define START_COORDBOX CoordBox(Coord(50.8607371, 4.3314877), Coord(50.8296372, 4.3802123)) // BXL class MainWindowPrivate { public: MainWindowPrivate() : theView(0) {} public: MapView* theView; }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { p = new MainWindowPrivate; ui->setupUi(this); p->theView = new MapView(this); setCentralWidget(p->theView); QTimer::singleShot(0, this, SLOT(initialize())); } void MainWindow::initialize() { p->theView->setViewport(START_COORDBOX, p->theView->rect()); } MainWindow::~MainWindow() { delete p->theView; delete ui; } void MainWindow::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } merkaartor-0.18.1/mobilemerk/src/MobileMainWindow.h000066400000000000000000000006461177067165300222650ustar00rootroot00000000000000#ifndef MAINWINDOW_H #define MAINWINDOW_H #include namespace Ui { class MainWindow; } class MainWindowPrivate; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void changeEvent(QEvent *e); private: Ui::MainWindow *ui; MainWindowPrivate* p; private slots: void initialize(); }; #endif // MAINWINDOW_H merkaartor-0.18.1/mobilemerk/src/MobileMainWindow.ui000066400000000000000000000016651177067165300224550ustar00rootroot00000000000000 MainWindow 0 0 600 400 MainWindow 0 0 600 25 TopToolBarArea false merkaartor-0.18.1/mobilemerk/src/main.cpp000066400000000000000000000002611177067165300203310ustar00rootroot00000000000000#include #include "MainWindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } merkaartor-0.18.1/mobilemerk/src/src.pri000066400000000000000000000004321177067165300202040ustar00rootroot00000000000000INCLUDEPATH += src ../src DEPENDPATH += src ../src SOURCES += main.cpp \ MobileMainWindow.cpp \ MapView.cpp \ Maps/Coord.cpp \ Maps/Projection.cpp HEADERS += MobileMainWindow.h \ MapView.h \ Maps/Coord.h \ Maps/Projection.h FORMS += MobileMainWindow.ui merkaartor-0.18.1/mobilemerk/thirdparty/000077500000000000000000000000001177067165300203055ustar00rootroot00000000000000merkaartor-0.18.1/mobilemerk/thirdparty/MouseMachine/000077500000000000000000000000001177067165300226625ustar00rootroot00000000000000merkaartor-0.18.1/mobilemerk/thirdparty/MouseMachine/LICENSE.LGPL000066400000000000000000000635041177067165300244340ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! merkaartor-0.18.1/mobilemerk/thirdparty/MouseMachine/MouseMachine.cpp000066400000000000000000000271751177067165300257570ustar00rootroot00000000000000// // C++ Implementation: MouseMachine // // Description: // // // Author: Chris Browet (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "MouseMachine.h" #include #include #include #include #define SPEED_INTERVAL 20 // The interval in ms between 2 speed checks. The greater, the greater the speed will be #define SPEEDVECTOR_MULTIPLIER 4 // the speed multiplier. Multiply the speed to get the end autoscroll pos. #define MIN_SPEED 12 // The minimum speed to switch to autoscroll #define MIN_MOVE 12 // The minimum move for a move event to be registered as such. Usefull on touch devices where it is nearly certain to get a mouse move between a press and a release. #define DBLCLICK_INTERVAL 500 #define TAPHOLD_TIMEOUT 500 struct AutoscrollEvent : public QEvent { AutoscrollEvent(bool val) : QEvent(QEvent::Type(QEvent::User+1)), value(val) {} bool value; }; class AutoscrollTransition : public QAbstractTransition { public: AutoscrollTransition(bool value) : m_value(value) {} protected: virtual bool eventTest(QEvent *e) { if (e->type() != QEvent::Type(QEvent::User+1)) return false; AutoscrollEvent *se = static_cast(e); return (m_value == se->value); } virtual void onTransition(QEvent *) {} private: bool m_value; }; struct FilteredMouseMoveEvent : public QEvent { FilteredMouseMoveEvent(bool val) : QEvent(QEvent::Type(QEvent::User+2)), value(val) {} bool value; }; class FilteredMouseMoveTransition : public QAbstractTransition { public: FilteredMouseMoveTransition(bool value) : m_value(value) {} protected: virtual bool eventTest(QEvent *e) { if (e->type() != QEvent::Type(QEvent::User+2)) return false; FilteredMouseMoveEvent *se = static_cast(e); return (m_value == se->value); } virtual void onTransition(QEvent *) {} private: bool m_value; }; /**********************/ MouseMachine::MouseMachine(QWidget* parent, MouseMachine::Options options) : QObject(parent) , theParent(parent) , m_options(options) , machine(0) , trPressed2Idle(0) , trPressed2Man(0) , trManScrolling(0) , trIdle2Pressed(0) , trMan2Auto(0) , trMan2Idle(0) , trAuto2Idle(0) , trAuto2Man(0) , trDoubleclick(0) { #ifdef Q_OS_SYMBIAN iTouchFeedback = MTouchFeedback::Instance(); #endif speedTimer.setInterval(SPEED_INTERVAL); connect(&speedTimer, SIGNAL(timeout()), SLOT(slotCalculateSpeed())); dblclickTimer.setInterval(DBLCLICK_INTERVAL); dblclickTimer.setSingleShot(true); connect(&dblclickTimer, SIGNAL(timeout()), SLOT(slotSingleTap())); scrollTimeline.setCurveShape(QTimeLine::EaseOutCurve); scrollTimeline.setEasingCurve(QEasingCurve::OutQuad); connect(&scrollTimeline, SIGNAL(valueChanged(qreal)), SLOT(slotAutoscroll(qreal))); connect(&scrollTimeline, SIGNAL(finished()), SLOT(slotAutoscrollFinished())); tapHoldTimer.setInterval(TAPHOLD_TIMEOUT); tapHoldTimer.setSingleShot(true); theTarget = theParent; QAbstractScrollArea *scrollArea = qobject_cast(theParent); if (scrollArea) { scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); theTarget = scrollArea->viewport(); theTarget->installEventFilter(this); } theParent->installEventFilter(this); buildMachine(); machine->start(); } void MouseMachine::buildMachine() { delete machine; machine = NULL; machine = new QStateMachine(this); stIdle = new QState(); stPressed = new QState(); stManScroll = new QState(); stAutoScroll = new QState(); trIdle2Pressed = new QMouseEventTransition(theTarget, QEvent::MouseButtonPress, Qt::LeftButton); trIdle2Pressed->setTargetState(stPressed); connect (trIdle2Pressed, SIGNAL(triggered()), SLOT(slotStartTap())); trDoubleclick = new QMouseEventTransition(theTarget, QEvent::MouseButtonDblClick, Qt::LeftButton); trDoubleclick->setTargetState(stIdle); connect (trDoubleclick, SIGNAL(triggered()), SLOT(slotDoubleTap())); trPressed2Idle = new QMouseEventTransition(theTarget, QEvent::MouseButtonRelease, Qt::LeftButton); trPressed2Idle->setTargetState(stIdle); connect (trPressed2Idle, SIGNAL(triggered()), SLOT(slotPotentialDblclick())); trPressed2Man = new FilteredMouseMoveTransition(false); trPressed2Man->setTargetState(stManScroll); connect (trPressed2Man, SIGNAL(triggered()), SLOT(slotStartDrag())); trTapHold = new QSignalTransition(&tapHoldTimer, SIGNAL(timeout())); trTapHold->setTargetState(stIdle); connect (trTapHold, SIGNAL(triggered()), SLOT(slotTapAndHold())); trManScrolling = new QMouseEventTransition(theTarget, QEvent::MouseMove, Qt::NoButton); connect (trManScrolling, SIGNAL(triggered()), SLOT(slotDrag())); stIdle->addTransition(trIdle2Pressed); stIdle->addTransition(trDoubleclick); stPressed->addTransition(trPressed2Idle); stPressed->addTransition(trPressed2Man); stPressed->addTransition(trTapHold); stManScroll->addTransition(trManScrolling); machine->addState(stIdle); machine->addState(stPressed); machine->addState(stManScroll); if (m_options & MouseMachine::AutoScroll) { trMan2Auto = new QMouseEventTransition(theTarget, QEvent::MouseButtonRelease, Qt::LeftButton); trMan2Auto->setTargetState(stAutoScroll); connect (trMan2Auto, SIGNAL(triggered()), SLOT(slotStartAuto())); trAuto2Man = new QMouseEventTransition(theTarget, QEvent::MouseButtonPress, Qt::LeftButton); trAuto2Man->setTargetState(stManScroll); connect (trAuto2Man, SIGNAL(triggered()), SLOT(slotStartDrag())); trAuto2Idle = new AutoscrollTransition(false); trAuto2Idle->setTargetState(stIdle); // connect (trAuto2Idle, SIGNAL(triggered()), SLOT(slotPotentialDblclick())); stManScroll->addTransition(trMan2Auto); stAutoScroll->addTransition(trAuto2Idle); stAutoScroll->addTransition(trAuto2Man); machine->addState(stAutoScroll); } else { trMan2Idle = new QMouseEventTransition(theTarget, QEvent::MouseButtonRelease, Qt::LeftButton); trMan2Idle->setTargetState(stIdle); // connect (trMan2Idle, SIGNAL(triggered()), SLOT(slotPotentialDblclick())); stManScroll->addTransition(trMan2Idle); } machine->setInitialState(stIdle); } MouseMachine::~MouseMachine() { theTarget->removeEventFilter(this); theParent->removeEventFilter(this); machine->stop(); } bool MouseMachine::eventFilter(QObject *object, QEvent *event) { if (!object->isWidgetType()) return false; QEvent::Type type = event->type(); if (type != QEvent::MouseButtonPress && type != QEvent::MouseButtonRelease && type != QEvent::MouseButtonDblClick && type != QEvent::MouseMove && type != QEvent::ContextMenu) return false; if (type == QEvent::MouseMove) { QMouseEvent* mouseEvent = static_cast(event); QPoint curPos = mouseEvent->pos(); if (oldFilteredPos.isNull()) oldFilteredPos = curPos; if ((oldFilteredPos - curPos).manhattanLength() > MIN_MOVE) { machine->postEvent(new FilteredMouseMoveEvent(false)); } } else oldFilteredPos = QPoint(); //#ifndef QT_NO_DEBUG_OUTPUT // qDebug() << object; // switch (event->type()) { // case QEvent::MouseButtonPress: // qDebug() << "-> MouseButtonPress " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); // break; // case QEvent::MouseButtonRelease: // qDebug() << "-> MouseButtonRelease" << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); // break; // case QEvent::MouseMove: // qDebug() << "-> MouseMove" << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); // break; // case QEvent::MouseButtonDblClick: // qDebug() << "-> MouseButtonDblClick" << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); // break; // default: // break; // } //#endif return true; } void MouseMachine::slotStartTap() { qDebug() << "--- slotStartTap "<< curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); curPos = theParent->mapFromGlobal(QCursor::pos()); firstPress = curPos; tapHoldTimer.start(); } void MouseMachine::slotPotentialDblclick() { tapHoldTimer.stop(); if (dblclickTimer.isActive()) { dblclickTimer.stop(); slotDoubleTap(); } else { dblclickTimer.start(); } } void MouseMachine::slotSingleTap() { qDebug() << "--- slotSingleTap " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); tapHoldTimer.stop(); #ifdef Q_OS_SYMBIAN iTouchFeedback->InstantFeedback(ETouchFeedbackBasic); #endif emit singleTap(firstPress); } void MouseMachine::slotDoubleTap() { qDebug() << "--- slotDoubleTap " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); tapHoldTimer.stop(); dblclickTimer.stop(); #ifdef Q_OS_SYMBIAN iTouchFeedback->InstantFeedback(ETouchFeedbackBasic); #endif emit doubleTap(firstPress); } void MouseMachine::slotTapAndHold() { qDebug() << "--- slotTapAndHold " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); tapHoldTimer.stop(); emit tapAndHold(firstPress); } void MouseMachine::slotStartDrag() { qDebug() << "--- slotStartDrag " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); curPos = theParent->mapFromGlobal(QCursor::pos()); oldPos = curPos; oldSpeedPos = curPos; speed = QPoint(); scrollTimeline.stop(); speedTimer.start(); } void MouseMachine::slotDrag() { qDebug() << "--- slotDrag " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); curPos = theParent->mapFromGlobal(QCursor::pos()); QPoint delta = curPos - oldPos; oldPos = curPos; if (!delta.isNull()) emit scroll(delta); } void MouseMachine::slotCalculateSpeed() { curPos = theParent->mapFromGlobal(QCursor::pos()); speed = curPos - oldSpeedPos; oldSpeedPos = curPos; } void MouseMachine::slotAutoscroll(qreal val) { qDebug() << "--- slotAutoscroll " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); curPos = theParent->mapFromGlobal(QCursor::pos()); QPoint curAutoPos = speedVector.pointAt(val).toPoint(); QPoint delta = curAutoPos - oldAutoPos; qDebug() << delta << " : " << curAutoPos << " : " << oldAutoPos << " : " << val; oldAutoPos = curAutoPos; if (!delta.isNull()) emit scroll(delta); } void MouseMachine::slotStartAuto() { qDebug() << "--- slotStartAuto " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); curPos = theParent->mapFromGlobal(QCursor::pos()); speedTimer.stop(); if (speed.manhattanLength() > MIN_SPEED) { speedVector = QLineF(curPos, curPos + (speed * SPEEDVECTOR_MULTIPLIER)); oldAutoPos = curPos; scrollTimeline.start(); } else { qDebug() << "--- StopAuto"; machine->postEvent(new AutoscrollEvent(false)); } slotDrag(); } void MouseMachine::slotAutoscrollFinished() { qDebug() << "--- slotAutoscrollFinished " << curPos << " : " << theParent->mapFromGlobal(QCursor::pos()); machine->postEvent(new AutoscrollEvent(false)); } void MouseMachine::setOptions(Options options) { m_options = options; machine->stop(); buildMachine(); machine->start(); } merkaartor-0.18.1/mobilemerk/thirdparty/MouseMachine/MouseMachine.h000066400000000000000000000045431177067165300254160ustar00rootroot00000000000000// // C++ Interface: MouseMachine // // Description: // // // Author: Chris Browet (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef MOUSEMACHINE_H #define MOUSEMACHINE_H #include #include #include #include #include #include #include #include #include #include #ifdef Q_OS_SYMBIAN #include #endif class AutoscrollTransition; class FilteredMouseMoveTransition; class MouseMachine : public QObject { Q_OBJECT public: enum Option { NoOptions = 0x0, AutoScroll = 0x1, }; Q_DECLARE_FLAGS(Options, Option) MouseMachine(QWidget* parent = 0, MouseMachine::Options options = MouseMachine::NoOptions); ~MouseMachine(); void setOptions(MouseMachine::Options options); bool eventFilter(QObject *object, QEvent *event); protected slots: void slotStartTap(); void slotSingleTap(); void slotDoubleTap(); void slotTapAndHold(); void slotStartDrag(); void slotDrag(); void slotStartAuto(); void slotAutoscrollFinished(); void slotCalculateSpeed(); void slotPotentialDblclick(); void slotAutoscroll(qreal val); signals: void singleTap(QPoint pos); void doubleTap(QPoint pos); void tapAndHold(QPoint pos); void scroll(QPoint delta); protected: void buildMachine(); protected: QWidget* theParent; QWidget* theTarget; Options m_options; QStateMachine* machine; QState *stIdle; QState *stPressed; QState *stManScroll; QState *stAutoScroll; QMouseEventTransition* trPressed2Idle; FilteredMouseMoveTransition* trPressed2Man; QSignalTransition* trTapHold; QMouseEventTransition* trManScrolling; QMouseEventTransition* trIdle2Pressed; QMouseEventTransition* trMan2Auto; QMouseEventTransition* trMan2Idle; AutoscrollTransition* trAuto2Idle; QMouseEventTransition* trAuto2Man; QMouseEventTransition* trDoubleclick; QPoint firstPress; QPoint curPos; QPoint oldPos; QPoint oldFilteredPos; QPoint oldAutoPos; QPoint oldSpeedPos; QPoint speed; QLineF speedVector; QTimer speedTimer; QTimer dblclickTimer; QTimer tapHoldTimer; QTimeLine scrollTimeline; #ifdef Q_OS_SYMBIAN MTouchFeedback* iTouchFeedback; // For Tactile feedback #endif }; Q_DECLARE_OPERATORS_FOR_FLAGS(MouseMachine::Options) #endif // MOUSEMACHINE_H merkaartor-0.18.1/mobilemerk/thirdparty/MouseMachine/MouseMachine.pri000066400000000000000000000000661177067165300257550ustar00rootroot00000000000000SOURCES += MouseMachine.cpp HEADERS += MouseMachine.h merkaartor-0.18.1/mobilemerk/thirdparty/MouseMachine/README000066400000000000000000000006141177067165300235430ustar00rootroot00000000000000MouseMachine is Qt class prinicpally allowing kinetic scrolling on any widget. It is largely inspired by the "flickcharm" class from Nokia. As an exercise, I wanted to reimplement it as a QStateMachine and with a signal/slot interface. The various interactions like tap, double-tap, tap-and-hold are all signals with a QPoint. The class requires (I think) Qt 4.6.x The code is LGPL licensed. merkaartor-0.18.1/plugins/000077500000000000000000000000001177067165300154465ustar00rootroot00000000000000merkaartor-0.18.1/plugins/background/000077500000000000000000000000001177067165300175655ustar00rootroot00000000000000merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/000077500000000000000000000000001177067165300245475ustar00rootroot00000000000000merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/CadastreFrance.cpp000066400000000000000000000317011177067165300301220ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2010 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include #include #include #include #include #include #include "CadastreFrance.h" #include "cadastrewrapper.h" #include "searchdialog.h" #include "IImageManager.h" static const QUuid theUid ( 0x14a9ff26, 0x634e, 0x4406, 0x94, 0xa5, 0x4c, 0x6d, 0x9c, 0xf0, 0xb1, 0x1d); static const QString theName("Cadastre (France)"); QUuid CadastreFranceAdapterFactory::getId() const { return theUid; } QString CadastreFranceAdapterFactory::getName() const { return theName; } /**************/ CadastreFranceAdapter::CadastreFranceAdapter() : theImageManager(0), theMenu(0), theSettings(0) , current_zoom(0), min_zoom(0), max_zoom(6) { loc = QLocale(QLocale::English); loc.setNumberOptions(QLocale::OmitGroupSeparator); Resolutions << 16 << 8. << 4. << 2 << 1.0 << 0.5 << 0.2; m_isTiled = true; } CadastreFranceAdapter::~CadastreFranceAdapter() { } QUuid CadastreFranceAdapter::getId() const { return theUid; } QString CadastreFranceAdapter::getName() const { return theName; } void CadastreFranceAdapter::setSettings(QSettings* aSet) { theSettings = aSet; if (theSettings) CadastreWrapper::instance()->setRootCacheDir(QDir(theSettings->value("backgroundImage/CacheDir").toString())); else CadastreWrapper::instance()->setRootCacheDir(QDir(QDir::homePath() + "/.merkaartor/BackgroundCache")); updateMenu(); } QString CadastreFranceAdapter::getHost() const { return "www.cadastre.gouv.fr"; } IMapAdapter::Type CadastreFranceAdapter::getType() const { return IMapAdapter::NetworkBackground; } QString CadastreFranceAdapter::projection() const { return m_city.projection(); } QRectF CadastreFranceAdapter::getBoundingbox() const { double L = qMax(m_city.geometry().width(), m_city.geometry().height()); QRectF bb(m_city.geometry()); QRectF R = QRectF(QPointF(bb.center().x()-L/2, bb.center().y()-L/2), QPointF(bb.center().x()+L/2, bb.center().y()+L/2)); return R; // return QRectF(R.bottomLeft(), R.topRight()); } QMenu* CadastreFranceAdapter::getMenu() const { return theMenu; } IImageManager* CadastreFranceAdapter::getImageManager() { return theImageManager; } void CadastreFranceAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; CadastreWrapper::instance()->setNetworkManager(theImageManager->getNetworkManager()); theImageManager->setCachePermanent(true); } void CadastreFranceAdapter::updateMenu() { delete theMenu; theMenu = new QMenu(0); QAction* grabCity = new QAction(tr("Grab City..."), this); connect(grabCity, SIGNAL(triggered()), SLOT(onGrabCity())); theMenu->addAction(grabCity); QAction* tiledToggle = new QAction(tr("Tiled"), this); tiledToggle->setCheckable(true); tiledToggle->setChecked(m_isTiled); connect(tiledToggle, SIGNAL(triggered()), SLOT(toggleTiled())); theMenu->addAction(tiledToggle); theMenu->addSeparator(); QDir cache = CadastreWrapper::instance()->getCacheDir(); QFileInfoList fl = cache.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs); foreach (QFileInfo fi, fl) { QSettings sets(fi.absoluteFilePath()+"/cache.ini", QSettings::IniFormat); QAction* cityAct = new QAction(sets.value("name").toString(), this); cityAct->setData(fi.fileName()); theMenu->addAction(cityAct); } connect(theMenu, SIGNAL(triggered(QAction*)), SLOT(cityTriggered(QAction*))); } void CadastreFranceAdapter::toggleTiled() { m_isTiled = !m_isTiled; updateMenu(); emit(forceRefresh()); } void CadastreFranceAdapter::onGrabCity() { if (!theImageManager) return; m_city = City(); SearchDialog *dial = new SearchDialog(); dial->cadastre->setRootCacheDir(QDir(theSettings->value("backgroundImage/CacheDir").toString())); dial->setModal(true); if (dial->exec()) { m_code = dial->cityCode(); QString name = dial->cityName(); if (!name.isEmpty()) initializeCity(name); } delete dial; } void CadastreFranceAdapter::cityTriggered(QAction *act) { QString name = act->text(); if (act->data().toString().isEmpty()) return; m_code = act->data().toString(); if (!theImageManager) return; m_city = City(); initializeCity(name); } void CadastreFranceAdapter::initializeCity(QString name) { qDebug() << "Initializing " << name; connect(CadastreWrapper::instance(), SIGNAL(resultsAvailable(QMap)), this, SLOT(resultsAvailable(QMap))); QString ville = name.left(name.lastIndexOf('(')-1); m_department = QString("%1").arg(name.mid(name.lastIndexOf('(')+1, name.lastIndexOf(')')-name.lastIndexOf('(')-1).toInt(), 3, 10, QChar('0')); CadastreWrapper::instance()->searchVille(ville, m_department); } void CadastreFranceAdapter::resultsAvailable(QMap results) { if (results.size() > 1) { CadastreWrapper::instance()->searchCode(m_code, m_department); return; } disconnect(CadastreWrapper::instance(), SIGNAL(resultsAvailable(QMap)), this, SLOT(resultsAvailable(QMap))); if (!results.size()) { QMessageBox::critical(0, tr("The city cannot be loaded"), tr("Only vectorized cities can be handled by this plugin and the selected one is still in \"Image\" format.")); return; } m_city = CadastreWrapper::instance()->requestCity(m_code); updateMenu(); // if (!CadastreWrapper::instance()->downloadTiles(m_city)) // return; QDir dir = CadastreWrapper::instance()->getCacheDir(); Q_ASSERT(dir.cd(m_city.code())); if (theImageManager) theImageManager->setCacheDir(dir); emit(forceZoom()); emit(forceProjection()); emit(forceRefresh()); } bool CadastreFranceAdapter::isValid(int x, int y, int z) const { // Origin is bottom-left y = getTilesNS(current_zoom)-1 - y; if (m_city.code().isEmpty()) return false; if ((x<0) || (x>=getTilesWE(z)) || (y<0) || (y>=getTilesNS(z))) { return false; } return true; } QString CadastreFranceAdapter::getQuery(int i, int j, int /* z */) const { qreal tileWidth = getBoundingbox().width() / getTilesWE(current_zoom); qreal tileHeight = getBoundingbox().height() / getTilesNS(current_zoom); QPointF ul = QPointF(i*tileWidth+getBoundingbox().topLeft().x(), getBoundingbox().bottomLeft().y()-j*tileHeight); QPointF br = QPointF((i+1)*tileWidth+getBoundingbox().topLeft().x(), getBoundingbox().bottomLeft().y()- (j+1)*tileHeight); QUrl theUrl("http://www.cadastre.gouv.fr/scpc/wms?version=1.1&request=GetMap&layers=CDIF:LS3,CDIF:LS2,CDIF:LS1,CDIF:PARCELLE,CDIF:NUMERO,CDIF:PT3,CDIF:PT2,CDIF:PT1,CDIF:LIEUDIT,CDIF:COMMUNE&format=image/png&exception=application/vnd.ogc.se_inimage&styles=LS3_90,LS2_90,LS1_90,PARCELLE_90,NUMERO_90,PT3_90,PT2_90,PT1_90,LIEUDIT_90,COMMUNE_90"); theUrl.addQueryItem("WIDTH", QString::number(getTileSizeW())); theUrl.addQueryItem("HEIGHT", QString::number(getTileSizeH())); theUrl.addQueryItem("BBOX", QString() .append(loc.toString(ul.x(),'f',6)).append(",") .append(loc.toString(br.y(),'f',6)).append(",") .append(loc.toString(br.x(),'f',6)).append(",") .append(loc.toString(ul.y(),'f',6)) ); return theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); } QString CadastreFranceAdapter::getQuery(const QRectF& , const QRectF& projBbox, const QRect& size) const { if (m_city.code().isEmpty()) return QString(); QUrl theUrl("http://www.cadastre.gouv.fr/scpc/wms?version=1.1&request=GetMap&layers=CDIF:LS3,CDIF:LS2,CDIF:LS1,CDIF:PARCELLE,CDIF:NUMERO,CDIF:PT3,CDIF:PT2,CDIF:PT1,CDIF:LIEUDIT,CDIF:COMMUNE&format=image/png&exception=application/vnd.ogc.se_inimage&styles=LS3_90,LS2_90,LS1_90,PARCELLE_90,NUMERO_90,PT3_90,PT2_90,PT1_90,LIEUDIT_90,COMMUNE_90"); theUrl.addQueryItem("WIDTH", QString::number(size.width())); theUrl.addQueryItem("HEIGHT", QString::number(size.height())); theUrl.addQueryItem("BBOX", QString() .append(loc.toString(projBbox.bottomLeft().x(),'f',6)).append(",") .append(loc.toString(projBbox.bottomLeft().y(),'f',6)).append(",") .append(loc.toString(projBbox.topRight().x(),'f',6)).append(",") .append(loc.toString(projBbox.topRight().y(),'f',6)) ); return theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); } QPixmap CadastreFranceAdapter::getPixmap(const QRectF& /*wgs84Bbox*/, const QRectF& projBbox, const QRect& src) const { QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter p(&pix); p.scale(src.width()/projBbox.width(), src.height()/projBbox.height()); p.translate(-projBbox.left(), -projBbox.bottom()); if (!m_city.code().isEmpty()) { QDir dir = CadastreWrapper::instance()->getCacheDir(); Q_ASSERT(dir.cd(m_city.code())); for (int r=0; r min_zoom ? current_zoom-1 : min_zoom; } int CadastreFranceAdapter::getMinZoom(const QRectF &) const { return min_zoom; } int CadastreFranceAdapter::getMaxZoom(const QRectF &) const { return max_zoom; } int CadastreFranceAdapter::getAdaptedMinZoom(const QRectF &) const { return 0; } int CadastreFranceAdapter::getAdaptedMaxZoom(const QRectF &) const { return max_zoom > min_zoom ? max_zoom - min_zoom : min_zoom - max_zoom; } int CadastreFranceAdapter::getZoom() const { return current_zoom; } int CadastreFranceAdapter::getAdaptedZoom() const { return max_zoom < min_zoom ? min_zoom - current_zoom : current_zoom - min_zoom; } QString CadastreFranceAdapter::getSourceTag () const { return "cadastre-dgi-fr source : Direction Gnrale des Impts - Cadastre. Mise jour : 2010"; } Q_EXPORT_PLUGIN2(MCadastreFranceBackgroundPlugin, CadastreFranceAdapterFactory) merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/CadastreFrance.h000066400000000000000000000130371177067165300275710ustar00rootroot00000000000000/*************************************************************************** * Copyright (C) 2010 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef CADASTREFRANCEADAPTER_H #define CADASTREFRANCEADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include #include "city.h" class CadastreFranceAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: CadastreFranceAdapter(); virtual ~CadastreFranceAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const; virtual int getTileSizeH () const; //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const; //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const; //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const ; //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const; virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const; virtual int getAdaptedMinZoom(const QRectF &) const; virtual int getAdaptedMaxZoom(const QRectF &) const; virtual void zoom_in(); virtual void zoom_out(); virtual bool isValid(int, int, int) const; virtual QString getQuery(int, int, int) const; virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const; virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const; virtual int getTilesWE(int) const; virtual int getTilesNS(int) const; virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* aSet); public slots: void onGrabCity(); void cityTriggered(QAction* act); void toggleTiled(); private slots: void resultsAvailable(QMap results); private: QLocale loc; IImageManager* theImageManager; QMenu* theMenu; QSettings* theSettings; QRectF theCoordBbox; int current_zoom; int min_zoom; int max_zoom; QList Resolutions; QString m_code; QString m_department; City m_city; bool m_isTiled; private: void initializeCity(QString name); protected: void updateMenu(); }; class CadastreFranceAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new CadastreFranceAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/MCadastreFranceBackground.pro000066400000000000000000000005671177067165300322630ustar00rootroot00000000000000include(../../common.pri) include(../common.pri) include(qadastre.pri) QT += webkit TARGET = $$qtLibraryTarget(MCadastreFranceBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) HEADERS += \ CadastreFrance.h SOURCES += \ CadastreFrance.cpp merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre.pri000066400000000000000000000004021177067165300270630ustar00rootroot00000000000000DEPENDPATH += $$PWD/qadastre INCLUDEPATH += $$PWD/qadastre QT += network webkit SOURCES += \ city.cpp \ searchdialog.cpp \ cadastrewrapper.cpp HEADERS += \ city.h \ searchdialog.h \ cadastrewrapper.h FORMS += \ searchdialog.ui merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/000077500000000000000000000000001177067165300263535ustar00rootroot00000000000000merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/COPYING.txt000066400000000000000000001045131177067165300302300ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/cadastrebrowser.cpp000066400000000000000000000050721177067165300322550ustar00rootroot00000000000000/* This file is part of Qadastre. Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see . */ #include "cadastrebrowser.h" #include "ui_cadastrebrowser.h" #include "cadastrewrapper.h" #include "searchdialog.h" #include #include #include #include "tile.h" CadastreBrowser::CadastreBrowser(QWidget *parent) : QMainWindow(parent), ui(new Ui::CadastreBrowser), m_scene(this), m_currentZoom(1.0) { ui->setupUi(this); ui->graphicsView->setScene(&m_scene); } CadastreBrowser::~CadastreBrowser() { delete ui; } void CadastreBrowser::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void CadastreBrowser::on_actionLoad_triggered() { SearchDialog *dial = new SearchDialog(this); dial->setModal(true); if (dial->exec()) { QString code = dial->cityCode(); qDebug() << code; City my_city = CadastreWrapper::instance()->requestCity(code); qDebug() << my_city.code(); qDebug() << my_city.name(); qDebug() << my_city.geometry(); CadastreWrapper::instance()->downloadTiles(my_city); for (int r = 0 ; r < my_city.tileRows() ; ++r) { for (int c = 0 ; c < my_city.tileColumns() ; ++c) { QString tileFile = CadastreWrapper::instance()->tileFile(my_city.code(), r, c); qDebug() << tileFile; Tile *tile = new Tile(tileFile); tile->setX(600 * c); tile->setY(600 * r); m_scene.addItem(tile); } } } } void CadastreBrowser::on_zoomSlider_valueChanged(int value) { qreal requestedScale = value/100.; qDebug() << requestedScale << m_currentZoom << requestedScale / m_currentZoom; ui->graphicsView->scale(requestedScale / m_currentZoom, requestedScale / m_currentZoom); m_currentZoom = requestedScale; } merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/cadastrebrowser.h000066400000000000000000000023171177067165300317210ustar00rootroot00000000000000/* This file is part of Qadastre. Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see . */ #ifndef CADASTREBROWSER_H #define CADASTREBROWSER_H #include #include namespace Ui { class CadastreBrowser; } class CadastreBrowser : public QMainWindow { Q_OBJECT public: CadastreBrowser(QWidget *parent = 0); ~CadastreBrowser(); protected: void changeEvent(QEvent *e); private: Ui::CadastreBrowser *ui; QGraphicsScene m_scene; qreal m_currentZoom; private slots: void on_zoomSlider_valueChanged(int value); void on_actionLoad_triggered(); }; #endif // CADASTREBROWSER_H merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/cadastrebrowser.ui000066400000000000000000000055501177067165300321110ustar00rootroot00000000000000 CadastreBrowser 0 0 596 396 CadastreBrowser 0 1 200 100 Qt::Vertical 0 0 596 22 File TopToolBarArea false Quit Quit Ctrl+Q Load Load a city from the cadastre Ctrl+O actionQuit activated() CadastreBrowser close() -1 -1 299 199 merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/cadastrewrapper.cpp000066400000000000000000000440161177067165300322530ustar00rootroot00000000000000/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see . */ #include "cadastrewrapper.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include CadastreWrapper *CadastreWrapper::m_instance = 0; CadastreWrapper *CadastreWrapper::instance() { if (!CadastreWrapper::m_instance) CadastreWrapper::m_instance = new CadastreWrapper; return CadastreWrapper::m_instance; } CadastreWrapper::CadastreWrapper(QObject *parent) : QObject(parent) , m_networkManager(0) , m_gotCookie(false) { setRootCacheDir(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); } void CadastreWrapper::setNetworkManager(QNetworkAccessManager *aManager) { if (m_networkManager) disconnect(m_networkManager, 0, this, 0); m_networkManager = aManager; connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkFinished(QNetworkReply*))); m_networkManager->get(QNetworkRequest(QUrl("http://www.cadastre.gouv.fr/scpc/accueil.do"))); } void CadastreWrapper::searchVille(const QString &city, const QString &department) { // {"numerovoie": "", "indiceRepetition": "", "nomvoie": "", "lieuDit": "", "ville": city.upper(), "codePostal": "", "codeDepartement": dept, "nbResultatParPage": 20, "x": 0, "y" : 0} QString data = QString("numerovoie=&indiceRepetition=&nomvoie=&lieuDit=&ville=%1&codePostal=&codeDepartement=%2&nbResultatParPage=20&x=0&y=0") .arg(QString::fromAscii(QUrl::toPercentEncoding(city.toUpper()))) .arg(department); qDebug() << data; qDebug() << data.toAscii(); qDebug() << m_networkManager; m_networkManager->post(QNetworkRequest(QUrl("http://www.cadastre.gouv.fr/scpc/rechercherPlan.do")), data.toAscii()); } void CadastreWrapper::searchCode(const QString &code, const QString &department) { // {"numerovoie": "", "indiceRepetition": "", "nomvoie": "", "lieuDit": "", "ville": city.upper(), "codePostal": "", "codeDepartement": dept, "nbResultatParPage": 20, "x": 0, "y" : 0} QString data = QString("numerovoie=&indiceRepetition=&nomvoie=&lieuDit=&codeCommune=%1&codeDepartement=%2&nbResultatParPage=20&x=0&y=0") .arg(QString::fromAscii(QUrl::toPercentEncoding(code.toUpper()))) .arg(department); qDebug() << data; qDebug() << data.toAscii(); qDebug() << m_networkManager; m_networkManager->post(QNetworkRequest(QUrl("http://www.cadastre.gouv.fr/scpc/rechercherPlan.do")), data.toAscii()); } City CadastreWrapper::requestCity(const QString &code) { qDebug() << "Request city: " << code; QDir cache = m_cacheDir; QNetworkReply *reply = m_networkManager->get(QNetworkRequest(QUrl("http://www.cadastre.gouv.fr/scpc/afficherCarteCommune.do?c=" + code))); while (!reply->isFinished()) qApp->processEvents(); cache.cd(code); QSettings raw_city(cache.absoluteFilePath("cache.ini"), QSettings::IniFormat); City result(code); result.setName(raw_city.value("name").toString()); result.setDepartement(raw_city.value("department").toString()); result.setGeometry(raw_city.value("geometry").toRect()); result.setProjection(raw_city.value("projection").toString()); return result; } QString CadastreWrapper::tileFile(const QString &code, int row, int column) { QDir cache = m_cacheDir; cache.cd(code); QString fileName = QString("%1-%2.png").arg(row).arg(column); return cache.absoluteFilePath(fileName); } bool CadastreWrapper::downloadTiles(City city) { m_progress = new QProgressDialog(); m_progress->setWindowTitle(QApplication::tr("Downloading tiles...")); m_progress->setMaximum(city.tileRows() * city.tileColumns()); m_progress->setMinimum(0); m_progress->setValue(0); m_progress->show(); QDir cache = m_cacheDir; cache.cd(city.code()); for (int r = 0 ; r < city.tileRows() ; ++r) { for (int c = 0 ; c < city.tileColumns() ; ++c) { QString fileName = QString("%1-%2.png").arg(r).arg(c); qDebug() << fileName; if (cache.exists(fileName) && QFileInfo(cache, fileName).size()) { // the file already exists, cool ! } else { QRect rect = city.tileGeometry(r, c); QString bbox = QString("%1.0,%2.0,%3.0,%4.0").arg(rect.left()).arg(rect.bottom()).arg(rect.right()).arg(rect.top()); fileName = cache.absoluteFilePath(fileName); m_waitingTiles[fileName] = city.tileGeometry(r, c); } } } m_progress->setMaximum(m_waitingTiles.count()); m_startTime = QDateTime::currentDateTime(); while (m_waitingTiles.count() > 0 && !m_progress->wasCanceled()) { QString fileName = m_waitingTiles.begin().key(); QRect rect = m_waitingTiles.begin().value(); m_waitingTiles.take(fileName); QString bbox = QString("%1.0,%2.0,%3.0,%4.0").arg(rect.left()).arg(rect.top()).arg(rect.right()).arg(rect.bottom()); QString url = QString("http://www.cadastre.gouv.fr/scpc/wms?version=1.1&request=GetMap&layers=CDIF:LS3,CDIF:LS2,CDIF:LS1,CDIF:PARCELLE,CDIF:NUMERO,CDIF:PT3,CDIF:PT2,CDIF:PT1,CDIF:LIEUDIT,CDIF:COMMUNE&format=image/png&bbox=%1&width=600&height=600&exception=application/vnd.ogc.se_inimage&styles=LS3_90,LS2_90,LS1_90,PARCELLE_90,NUMERO_90,PT3_90,PT2_90,PT1_90,LIEUDIT_90,COMMUNE_90").arg(bbox); qDebug() << url; m_pendingTiles[m_networkManager->get(QNetworkRequest(QUrl(url)))] = fileName; while (m_pendingTiles.count() > 0 && !m_progress->wasCanceled()) { qApp->processEvents(); } } bool ret = true; if (m_progress->wasCanceled()) ret = false; else { QSettings settings(cache.absoluteFilePath("cache.ini"), QSettings::IniFormat); settings.setValue("complete", true); settings.sync(); } m_progress->hide(); m_progress->deleteLater(); m_progress = NULL; return ret; } void CadastreWrapper::networkFinished(QNetworkReply *reply) { if (m_pendingTiles.contains(reply)) { QFile target(m_pendingTiles[reply]); QByteArray ba = reply->readAll(); // white -> transparent QImage img; img.loadFromData(ba); QImage img2 = img.convertToFormat(QImage::Format_ARGB32); Q_ASSERT(img2.hasAlphaChannel()); int w=0; for (int y=0; yreadAll()); img2.save(&target, "PNG"); target.close(); m_pendingTiles.remove(reply); if (m_progress) { m_progress->setValue(m_progress->value()+1); if (m_progress->value() > 10) { double ms = m_startTime.secsTo(QDateTime::currentDateTime()); double us = ms/m_progress->value(); int tot = us*(m_progress->maximum() - m_progress->value()); if (tot<3600) m_progress->setLabelText(tr("Downloaded: %1/%2\nRemaining time: %3:%4").arg(m_progress->value()).arg(m_progress->maximum()).arg(int(tot/60)).arg(int(tot%60), 2, 10, QChar('0'))); else m_progress->setLabelText(tr("Downloaded: %1/%2\nRemaining time: %3:%4:%5").arg(m_progress->value()).arg(m_progress->maximum()).arg(int(tot/3600)).arg(int((tot%3600)/60), 2, 10, QChar('0')).arg(int(tot%60), 2, 10, QChar('0'))); } else m_progress->setLabelText(tr("Downloaded: %1/%2").arg(m_progress->value()).arg(m_progress->maximum())); } } else if (reply->url() == QUrl("http://www.cadastre.gouv.fr/scpc/accueil.do")) { qDebug() << "Ok, I've got a cookie... I LOVE COOKIES."; reply->readAll(); m_gotCookie = true; } else if (reply->url() == QUrl("http://www.cadastre.gouv.fr/scpc/rechercherPlan.do")) { QString pageData = reply->readAll(); QWebPage parsedPage(this); QWebFrame *frame = parsedPage.mainFrame(); frame->setHtml(pageData); QWebElement codeCommune = frame->findFirstElement("#codeCommune"); QMap results; if (!codeCommune.isNull()) { // If there is a codeCommune object in the DOM, it means that the search was not successfull. if (codeCommune.tagName().toLower() != "select") { qDebug() << "Invalid page ???"; return; } QWebElementCollection options = codeCommune.findAll("option"); foreach (QWebElement option, options) { if (!option.attribute("value").isEmpty()) results[option.attribute("value")] = option.toPlainText(); } } else { // We may have been successfull, who knows ? QString name = frame->findFirstElement("#ville").attribute("value"); QWebElementCollection links = frame->findAllElements(".resultat > .parcelles .view a"); QRegExp linkRE("c=(\\w+)"); foreach (QWebElement link, links) { QString js = link.attribute("onclick"); int pos = linkRE.indexIn(js); if (pos > -1) { results[linkRE.cap(1)] = name; } } } qDebug() << results; emit(resultsAvailable(results)); } else if (reply->url().toString().startsWith("http://www.cadastre.gouv.fr/scpc/afficherCarteCommune.do?c=")) { qDebug() << "Got a result !"; QString pageData = reply->readAll(); if (pageData.isEmpty()) return; // qDebug() << pageData; QString name, code, projection; code = reply->url().queryItemValue("c"); qDebug() << code; bool inGeoBox = false; QList raw_geometry; foreach (QString line, pageData.split('\n')) { line = line.trimmed(); if (name.isEmpty()) { if (line.contains("")) if (line.split(" : ").count() > 1) name = line.split(" : ")[1].split(" - ")[0]; } if (projection.isEmpty()) { if (line.contains("projectionName")) { QRegExp reg("<span id=\"projectionName\">(.+)</span>"); reg.setMinimal(true); if (reg.indexIn(line) > -1) { projection = reg.cap(1); qDebug() << projection; if (projection.compare("RGF93CC42", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 1 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=42.000000000 +lon_0=3.000000000 +lat_1=41.250000000 +lat_2=42.750000000 +x_0=1700000.000 +y_0=1200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC43", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 2 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=43.000000000 +lon_0=3.000000000 +lat_1=42.250000000 +lat_2=43.750000000 +x_0=1700000.000 +y_0=2200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC44", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 3 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=44.000000000 +lon_0=3.000000000 +lat_1=43.250000000 +lat_2=44.750000000 +x_0=1700000.000 +y_0=3200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC45", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 4 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=45.000000000 +lon_0=3.000000000 +lat_1=44.250000000 +lat_2=45.750000000 +x_0=1700000.000 +y_0=4200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC46", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 5 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=46.000000000 +lon_0=3.000000000 +lat_1=45.250000000 +lat_2=46.750000000 +x_0=1700000.000 +y_0=5200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC47", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 6 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=47.000000000 +lon_0=3.000000000 +lat_1=46.250000000 +lat_2=47.750000000 +x_0=1700000.000 +y_0=6200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC48", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 7 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=48.000000000 +lon_0=3.000000000 +lat_1=47.250000000 +lat_2=48.750000000 +x_0=1700000.000 +y_0=7200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC49", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 8 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=49.000000000 +lon_0=3.000000000 +lat_1=48.250000000 +lat_2=49.750000000 +x_0=1700000.000 +y_0=8200000.000 +units=m +no_defs"; else if (projection.compare("RGF93CC50", Qt::CaseInsensitive) == 0) projection = "+title=Projection conique conforme Zone 9 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000 +lat_0=50.000000000 +lon_0=3.000000000 +lat_1=49.250000000 +lat_2=50.750000000 +x_0=1700000.000 +y_0=9200000.000 +units=m +no_defs"; else if (projection.compare("LAMB1", Qt::CaseInsensitive) == 0) projection = "+title=Lambert I +proj=lcc +nadgrids=ntf_r93.gsb,null +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=49.500000000 +lon_0=0.000000000 +k_0=0.99987734 +lat_1=49.500000000 +x_0=600000.000 +y_0=200000.000 +units=m +no_defs"; else if (projection.compare("LAMB2", Qt::CaseInsensitive) == 0) projection = "+title=Lambert II +proj=lcc +nadgrids=ntf_r93.gsb,null +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=46.800000000 +lon_0=0.000000000 +k_0=0.99987742 +lat_1=46.800000000 +x_0=600000.000 +y_0=200000.000 +units=m +no_defs"; else if (projection.compare("LAMB3", Qt::CaseInsensitive) == 0) projection = "+title=Lambert III +proj=lcc +nadgrids=ntf_r93.gsb,null +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=44.100000000 +lon_0=0.000000000 +k_0=0.99987750 +lat_1=44.100000000 +x_0=600000.000 +y_0=200000.000 +units=m +no_defs"; else if (projection.compare("LAMB4", Qt::CaseInsensitive) == 0) projection = "+title=Lambert IV +proj=lcc +nadgrids=ntf_r93.gsb,null +towgs84=-168.0000,-60.0000,320.0000 +a=6378249.2000 +rf=293.4660210000000 +pm=2.337229167 +lat_0=42.165000000 +lon_0=0.000000000 +k_0=0.99994471 +lat_1=42.165000000 +x_0=234.358 +y_0=185861.369 +units=m +no_defs"; } } } if (inGeoBox) { raw_geometry.append(line.split(".")[0].split(")")[0].toInt()); if (line.contains(')')) inGeoBox = false; } if (line == "new GeoBox(") inGeoBox = true; } if (!raw_geometry.size()) return; qDebug() << raw_geometry; QRect geometry(raw_geometry[0], raw_geometry[1], raw_geometry[2]-raw_geometry[0], raw_geometry[3]-raw_geometry[1]); qDebug() << geometry; QDir cache = m_cacheDir; if (!cache.exists(code)) cache.mkdir(code); cache.cd(code); qDebug() << cache.absoluteFilePath("cache.ini"); QSettings settings(cache.absoluteFilePath("cache.ini"), QSettings::IniFormat); settings.setValue("name", name); settings.setValue("geometry", geometry); settings.setValue("department", name.mid(name.lastIndexOf('(')+1, name.lastIndexOf(')')-name.lastIndexOf('(')-1)); settings.setValue("projection", projection); settings.sync(); } reply->close(); } void CadastreWrapper::setRootCacheDir(QDir dir) { m_cacheDir = dir; if (!m_cacheDir.cd("qadastre")) { m_cacheDir.mkdir("qadastre"); m_cacheDir.cd("qadastre"); } } QDir CadastreWrapper::getCacheDir() { return m_cacheDir; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/cadastrewrapper.h�����������0000664�0000000�0000000�00000003776�11770671653�0031730�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #ifndef CADASTREWRAPPER_H #define CADASTREWRAPPER_H #include <QObject> #include <QNetworkAccessManager> #include <QMap> #include <QProgressDialog> #include <QDir> #include <QDateTime> #include "city.h" class CadastreWrapper : public QObject { Q_OBJECT public: explicit CadastreWrapper(QObject *parent = 0); static CadastreWrapper *instance(); void searchVille (const QString &city, const QString &department); void searchCode (const QString &code, const QString &department); bool ready() { return m_gotCookie; } City requestCity (const QString &code); bool downloadTiles(City city); QString tileFile (const QString &code, int row, int column); void setRootCacheDir(QDir dir); QDir getCacheDir(); void setNetworkManager(QNetworkAccessManager* aManager); signals: void resultsAvailable(QMap<QString, QString> results); private slots: void networkFinished(QNetworkReply *reply); private: static CadastreWrapper *m_instance; QNetworkAccessManager *m_networkManager; bool m_gotCookie; // fileName ==> rect QMap<QString, QRect> m_waitingTiles; // reply ==> filename QMap<QNetworkReply*, QString> m_pendingTiles; QProgressDialog *m_progress; QDir m_cacheDir; QDateTime m_startTime; }; #endif // CADASTREWRAPPER_H ��merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/city.cpp��������������������0000664�0000000�0000000�00000003547�11770671653�0030040�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #include "city.h" #include <QDebug> City::City() { } City::City(const QString &code) : m_code(code) { } QString City::name() const { return m_name; } QString City::department() const { return m_department; } QString City::projection() const { return m_projection; } QString City::code() const { return m_code; } QRect City::geometry() const { return m_geometry; } void City::setName(const QString &name) { m_name = name; } void City::setDepartement(const QString &department) { m_department = department; } void City::setProjection(const QString &projection) { m_projection = projection; } void City::setGeometry(const QRect &geom) { m_geometry = geom; } // TODO: don't hardcode 100 meters here. int City::tileRows() const { return m_geometry.height()/100 + 1; } int City::tileColumns() const { return m_geometry.width()/100 + 1; } QRect City::tileGeometry(int row, int column) const { int left = m_geometry.left() / 100; left = left * 100; int top = m_geometry.top() / 100; top = top * 100; //top = top + 100; return QRect(left + column * 100, top - row * 100, 101, 101); } ���������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/city.h����������������������0000664�0000000�0000000�00000002653�11770671653�0027502�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #ifndef CITY_H #define CITY_H #include <QString> #include <QRect> class City { public: City(); City(const QString & code); void setName(const QString &name); QString name() const; void setDepartement(const QString &department); QString department() const; void setProjection(const QString &projection); QString projection() const; QString code() const; void setGeometry(const QRect &geom); QRect geometry() const; int tileRows() const; int tileColumns() const; QRect tileGeometry(int row, int column) const; private: QString m_name; QString m_department; QString m_code; QRect m_geometry; QString m_projection; }; #endif // CITY_H �������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/main.cpp��������������������0000664�0000000�0000000�00000002365�11770671653�0030011�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #include <QtGui/QApplication> #include <QDesktopServices> #include <QDebug> #include <QDir> #include "cadastrebrowser.h" #include "searchdialog.h" int main(int argc, char *argv[]) { QApplication::setGraphicsSystem("raster"); QApplication a(argc, argv); a.setApplicationName("Qadastre"); a.setApplicationVersion("0.1"); if (!QDir(QDesktopServices::storageLocation (QDesktopServices::DataLocation)).exists()) { QDir().mkpath(QDesktopServices::storageLocation (QDesktopServices::DataLocation)); } CadastreBrowser w; w.show(); return a.exec(); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/qadastre.pro����������������0000664�0000000�0000000�00000000777�11770671653�0030714�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ------------------------------------------------- # Project created by QtCreator 2010-03-22T20:27:26 # ------------------------------------------------- QT += network webkit TARGET = qadastre TEMPLATE = app SOURCES += main.cpp \ cadastrebrowser.cpp \ city.cpp \ tile.cpp \ searchdialog.cpp \ cadastrewrapper.cpp HEADERS += cadastrebrowser.h \ city.h \ tile.h \ searchdialog.h \ cadastrewrapper.h FORMS += cadastrebrowser.ui \ searchdialog.ui OTHER_FILES += COPYING.txt �merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/searchdialog.cpp������������0000664�0000000�0000000�00000006236�11770671653�0031513�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #include "searchdialog.h" #include "ui_searchdialog.h" #include "cadastrewrapper.h" #include <QMessageBox> #include <QDebug> SearchDialog::SearchDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SearchDialog) { ui->setupUi(this); for (quint16 i = 1 ; i < 96 ; i++) { ui->department->addItem(QString("%1").arg(i, 2, 10, QChar('0'))); } for (quint16 i = 971 ; i < 975 ; i++) { ui->department->addItem(QString("%1").arg(i, 2, 10, QChar('0'))); } ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); cadastre = CadastreWrapper::instance(); connect(cadastre, SIGNAL(resultsAvailable(QMap<QString,QString>)), this, SLOT(resultsAvailable(QMap<QString,QString>))); } SearchDialog::~SearchDialog() { delete ui; } void SearchDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void SearchDialog::on_searchButton_clicked() { if (ui->department->currentIndex() == -1) return; if (ui->name->text().isEmpty()) return; QString department = QString("%1").arg(ui->department->currentText().toInt(), 3, 10, QChar('0')); cadastre->searchVille(ui->name->text(), department); ui->results->clear(); m_results.clear(); ui->results->setEnabled(false); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); } void SearchDialog::on_results_activated(int index) { Q_UNUSED(index) ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); } void SearchDialog::resultsAvailable(QMap<QString, QString> results) { qDebug() << "SearchDialog::resultsAvailable: " << results; m_results = results; if (results.count() == 0) { QMessageBox::warning(this, tr("No result"), tr("Your search gave no result.")); } else { ui->results->setEnabled(true); QMap<QString, QString>::iterator i = results.begin(); while (i != results.end()) { ui->results->addItem(i.value(), i.key()); ++i; } ui->results->setCurrentIndex(0); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); } } QString SearchDialog::cityCode() { return ui->results->itemData(ui->results->currentIndex()).toString(); } QString SearchDialog::cityName() { return QString("%1 (%2)").arg(ui->results->currentText()).arg(ui->department->currentText()); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/searchdialog.h��������������0000664�0000000�0000000�00000002556�11770671653�0031161�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #ifndef SEARCHDIALOG_H #define SEARCHDIALOG_H #include <QDialog> #include <QMap> class CadastreWrapper; namespace Ui { class SearchDialog; } class SearchDialog : public QDialog { Q_OBJECT public: SearchDialog(QWidget *parent = 0); ~SearchDialog(); QString cityCode(); QString cityName(); public: CadastreWrapper *cadastre; protected: void changeEvent(QEvent *e); private: Ui::SearchDialog *ui; QMap<QString,QString> m_results; private slots: void on_results_activated(int index); void on_searchButton_clicked(); void resultsAvailable(QMap<QString,QString> results); }; #endif // SEARCHDIALOG_H ��������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/searchdialog.ui�������������0000664�0000000�0000000�00000010150�11770671653�0031334�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>SearchDialog</class> <widget class="QDialog" name="SearchDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>363</width> <height>191</height> </rect> </property> <property name="windowTitle"> <string>Search city</string> </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Department</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QComboBox" name="department"> <property name="editable"> <bool>true</bool> </property> <property name="insertPolicy"> <enum>QComboBox::NoInsert</enum> </property> </widget> </item> </layout> </item> <item row="1" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>Name</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="name"/> </item> </layout> </item> <item row="2" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="searchButton"> <property name="text"> <string>Search</string> </property> </widget> </item> </layout> </item> <item row="3" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QLabel" name="label_3"> <property name="enabled"> <bool>true</bool> </property> <property name="text"> <string>Results</string> </property> </widget> </item> <item> <widget class="QComboBox" name="results"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> </layout> </item> <item row="4" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>20</height> </size> </property> </spacer> </item> <item row="5" column="0"> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> <property name="centerButtons"> <bool>false</bool> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>SearchDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>SearchDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/tile.cpp��������������������0000664�0000000�0000000�00000007024�11770671653�0030017�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #include "tile.h" #include <QGraphicsSceneMouseEvent> #include <QDebug> #include <QPainter> #include <QFile> #include <QProcess> Tile::Tile(const QString &fileName, QGraphicsItem * parent) : QGraphicsItem(parent), m_filename(fileName), m_blank(false) { qDebug() << QFile(fileName).size(); // if (QFile(fileName).size() == 2365) if (QFile(fileName).size() == 2808) m_blank = true; } void appendNeighbour(QPoint point, QImage *image, QList<QPoint> *visited) { if (!visited->contains(point)) { visited->append(point); for (int x = qMax(0, point.x() - 1) ; x <= qMin(599, point.x() + 1) ; x++) { for (int y = qMax(0, point.y() - 1) ; y <= qMin(599, point.y() + 1) ; y++) { QPoint pt(x, y); if (visited->contains(pt)) continue; if (image->pixel(pt) == image->pixel(point)) { appendNeighbour(pt, image, visited); } } } } } QPixmap Tile::pixmap() { if (m_blank) return QPixmap(); if (m_pixCache.isNull()) m_pixCache = QPixmap(m_filename); return m_pixCache; } QPoint getNeightbour(const QPoint &point, const QPoint &previous, const QList<QPoint> points) { QList<QPoint> neightbours; foreach (QPoint pt, points) { if ((abs(pt.x() - point.x()) < 2) && (abs(pt.y() - point.y()) < 2)) neightbours.append(pt); } int maxDistance = 0; QPoint bestPoint(-1, -1); foreach (QPoint pt, neightbours) { if ((previous - pt).manhattanLength() > maxDistance) { maxDistance = (previous - pt).manhattanLength(); bestPoint = pt; } } return bestPoint; } void Tile::mousePressEvent(QGraphicsSceneMouseEvent *event) { QList<QPoint> points; QImage image = this->pixmap().toImage(); QPoint position = event->pos().toPoint(); // 248, 198, 50 ==> normal buildings // 255, 229, 153 ==> uncovered part of buildings qDebug() << image.pixel(position); appendNeighbour(position, &image, &points); qDebug() << points.count(); QImage bitmap(image.size(), QImage::Format_Mono); bitmap.fill(1); foreach(QPoint pt, points) { bitmap.setPixel(pt, 0); image.setPixel(pt, QColor(Qt::blue).rgb()); } bitmap.save("/tmp/test.ppm"); QProcess::execute("potrace", QStringList() << "-n" << "-u" << "1" << "-W" << "600" << "-H" << "600" << "-s" << "/tmp/test.ppm"); m_pixCache = QPixmap::fromImage(image); this->update(); } void Tile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { if (m_blank) { painter->fillRect(0, 0, 600, 600, Qt::white); } else { painter->drawPixmap(0, 0, pixmap()); } } QRectF Tile::boundingRect() const { return QRectF(0, 0, 600, 600); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MCadastreFranceBackground/qadastre/tile.h����������������������0000664�0000000�0000000�00000002343�11770671653�0027463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* This file is part of Qadastre. Copyright (C) 2010 Pierre Ducroquet <pinaraf@pinaraf.info> Qadastre is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Qadastre is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Qadastre. If not, see <http://www.gnu.org/licenses/>. */ #ifndef TILE_H #define TILE_H #include <QGraphicsPixmapItem> class Tile : public QGraphicsItem { public: Tile(const QString &fileName, QGraphicsItem * parent = 0 ); QPixmap pixmap(); virtual QRectF boundingRect () const; virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event ); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); private: QString m_filename; QPixmap m_pixCache; bool m_blank; }; #endif // TILE_H ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGdalBackground/�����������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0022551�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGdalBackground/GdalAdapter.cpp��������������������������������0000664�0000000�0000000�00000050105�11770671653�0025426�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: %CLASS% // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "GdalAdapter.h" #include <QCoreApplication> #include <QtPlugin> #include <QAction> #include <QFileDialog> #include <QPainter> #include <QMessageBox> #include <QInputDialog> #include <QDebug> #include "gdal_priv.h" #include "ogrsf_frmts.h" #include "ProjectionChooser.h" #define IN_MEMORY_LIMIT 100000000 static const QUuid theUid ("{5c9479df-0b1a-4c49-9559-83d5ffa93911}"); static const QString theName("GDAL Raster"); QUuid GdalAdapterFactory::getId() const { return theUid; } QString GdalAdapterFactory::getName() const { return theName; } /**************/ inline double radToAng(double a) { return a*180/M_PI; } inline double angToRad(double a) { return a*M_PI/180.; } #define FILTER_OPEN_SUPPORTED \ tr("All Files (*)") GdalAdapter::GdalAdapter() : poDataset(0), isLatLon(false) { GDALAllRegister(); QAction* loadImage = new QAction(tr("Load file(s)..."), this); loadImage->setData(theUid.toString()); connect(loadImage, SIGNAL(triggered()), SLOT(onLoadImage())); QAction* setSource = new QAction(tr("Specify \"source\" tag..."), this); setSource->setData(theUid.toString()); connect(setSource, SIGNAL(triggered()), SLOT(onSetSourceTag())); theMenu = new QMenu(); theMenu->addAction(loadImage); theMenu->addAction(setSource); } GdalAdapter::~GdalAdapter() { cleanup(); } QUuid GdalAdapter::getId() const { return theUid; } QString GdalAdapter::getName() const { return theName; } bool GdalAdapter::alreadyLoaded(QString fn) const { for (int j=0; j<theImages.size(); ++j) if (theImages[j].theFilename == fn) return true; return false; } bool GdalAdapter::loadImage(const QString& fn) { if (alreadyLoaded(fn)) return true; QFileInfo fi(fn); GdalImage img; QRectF bbox; poDataset = (GDALDataset *) GDALOpen( QDir::toNativeSeparators(fi.absoluteFilePath()).toUtf8().constData(), GA_ReadOnly ); if( poDataset == NULL ) { qDebug() << "GDAL Open failed: " << fn; return false; } bool hasGeo = false; QDir dir(fi.absoluteDir()); QString f = fi.baseName(); QStringList wldFilter; wldFilter << f+".tfw" << f+".tifw" << f+".tiffw" << f+".wld"; QFileInfoList fil = dir.entryInfoList(wldFilter); if (fil.count()) { QFile wld(fil[0].absoluteFilePath()); if (wld.open(QIODevice::ReadOnly)) { int i; for (i=0; i<6; ++i) { if (wld.atEnd()) break; QString l = wld.readLine(); bool ok; double d = l.toDouble(&ok); if (!ok) break; switch (i) { case 0: img.adfGeoTransform[1] = d; break; case 1: img.adfGeoTransform[4] = d; break; case 2: img.adfGeoTransform[2] = d; break; case 3: img.adfGeoTransform[5] = d; break; case 4: img.adfGeoTransform[0] = d; break; case 5: img.adfGeoTransform[3] = d; break; } } if (i == 6) hasGeo = true; } } if(!hasGeo) if ( poDataset->GetGeoTransform( img.adfGeoTransform ) != CE_None ) { GDALClose((GDALDatasetH)poDataset); return false; } qDebug( "Origin = (%.6f,%.6f)\n", img.adfGeoTransform[0], img.adfGeoTransform[3] ); qDebug( "Pixel Size = (%.6f,%.6f)\n", img.adfGeoTransform[1], img.adfGeoTransform[5] ); bbox.setTopLeft(QPointF(img.adfGeoTransform[0], img.adfGeoTransform[3])); bbox.setWidth(img.adfGeoTransform[1]*poDataset->GetRasterXSize()); bbox.setHeight(img.adfGeoTransform[5]*poDataset->GetRasterYSize()); isLatLon = false; if( strlen(poDataset->GetProjectionRef()) != 0 ) { qDebug( "Projection is `%s'\n", poDataset->GetProjectionRef() ); OGRSpatialReference* theSrs = new OGRSpatialReference(poDataset->GetProjectionRef()); if (theSrs && theSrs->Validate() == OGRERR_NONE) { theSrs->morphFromESRI(); char* theProj4; if (theSrs->exportToProj4(&theProj4) == OGRERR_NONE) { qDebug() << "GDAL: to proj4 : " << theProj4; } else { qDebug() << "GDAL: to proj4 error: " << CPLGetLastErrorMsg(); GDALClose((GDALDatasetH)poDataset); return false; } QString srsProj = QString(theProj4); if (!srsProj.isEmpty() && theProjection != srsProj) { cleanup(); theProjection = srsProj; } isLatLon = (theSrs->IsGeographic() == TRUE); } } if (theProjection.isEmpty()) { theProjection = ProjectionChooser::getProjection(QCoreApplication::translate("ImportExportGdal", "Unable to set projection; please specify one")); if (theProjection.isEmpty()) { GDALClose((GDALDatasetH)poDataset); return false; } } qDebug( "Driver: %s/%s\n", poDataset->GetDriver()->GetDescription(), poDataset->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME ) ); qDebug( "Size is %dx%dx%d\n", poDataset->GetRasterXSize(), poDataset->GetRasterYSize(), poDataset->GetRasterCount() ); GdalAdapter::ImgType theType = GdalAdapter::Unknown; int bandCount = poDataset->GetRasterCount(); int ixA = -1; int ixR, ixG, ixB; int ixH, ixS, ixL; int ixC, ixM, ixY, ixK; int ixYuvY, ixYuvU, ixYuvV; double adfMinMax[2]; double UnknownUnit; GDALColorTable* colTable = NULL; for (int i=0; i<bandCount; ++i) { GDALRasterBand *poBand = poDataset->GetRasterBand( i+1 ); GDALColorInterp bandtype = poBand->GetColorInterpretation(); qDebug() << "Band " << i+1 << " Color: " << GDALGetColorInterpretationName(poBand->GetColorInterpretation()); switch (bandtype) { case GCI_Undefined: theType = GdalAdapter::Unknown; int bGotMin, bGotMax; adfMinMax[0] = poBand->GetMinimum( &bGotMin ); adfMinMax[1] = poBand->GetMaximum( &bGotMax ); if( ! (bGotMin && bGotMax) ) GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax); UnknownUnit = (adfMinMax[1] - adfMinMax[0]) / 256; break; case GCI_GrayIndex: theType = GdalAdapter::GrayScale; break; case GCI_RedBand: theType = GdalAdapter::Rgb; ixR = i; break; case GCI_GreenBand: theType = GdalAdapter::Rgb; ixG = i; break; case GCI_BlueBand : theType = GdalAdapter::Rgb; ixB = i; break; case GCI_HueBand: theType = GdalAdapter::Hsl; ixH = i; break; case GCI_SaturationBand: theType = GdalAdapter::Hsl; ixS = i; break; case GCI_LightnessBand: theType = GdalAdapter::Hsl; ixL = i; break; case GCI_CyanBand: theType = GdalAdapter::Cmyk; ixC = i; break; case GCI_MagentaBand: theType = GdalAdapter::Cmyk; ixM = i; break; case GCI_YellowBand: theType = GdalAdapter::Cmyk; ixY = i; break; case GCI_BlackBand: theType = GdalAdapter::Cmyk; ixK = i; break; case GCI_YCbCr_YBand: theType = GdalAdapter::YUV; ixYuvY = i; break; case GCI_YCbCr_CbBand: theType = GdalAdapter::YUV; ixYuvU = i; break; case GCI_YCbCr_CrBand: theType = GdalAdapter::YUV; ixYuvV = i; break; case GCI_AlphaBand: ixA = i; break; case GCI_PaletteIndex: colTable = poBand->GetColorTable(); switch (colTable->GetPaletteInterpretation()) { case GPI_Gray : theType = GdalAdapter::Palette_Gray; break; case GPI_RGB : theType = GdalAdapter::Palette_RGBA; break; case GPI_CMYK : theType = GdalAdapter::Palette_CMYK; break; case GPI_HLS : theType = GdalAdapter::Palette_HLS; break; } break; } } QSize theImgSize(poDataset->GetRasterXSize(), poDataset->GetRasterYSize()); QImage theImg = QImage(theImgSize, QImage::Format_ARGB32); // Make sure that lineBuf holds one whole line of data. float *lineBuf; lineBuf = (float *) CPLMalloc(theImgSize.width() * bandCount * sizeof(float)); int px, py; //every row loop for (int row = 0; row < theImgSize.height(); row++) { py = row; poDataset->RasterIO( GF_Read, 0, row, theImgSize.width(), 1, lineBuf, theImgSize.width(), 1, GDT_Float32, bandCount, NULL, sizeof(float) * bandCount, 0, sizeof(float) ); // every pixel in row. for (int col = 0; col < theImgSize.width(); col++){ px = col; switch (theType) { case GdalAdapter::Unknown: { float* v = lineBuf + (col*bandCount); float val = (*v - adfMinMax[0]) / UnknownUnit; theImg.setPixel(px, py, qRgb(val, val, val)); break; } case GdalAdapter::GrayScale: { float* v = lineBuf + (col*bandCount); theImg.setPixel(px, py, qRgb(*v, *v, *v)); break; } case GdalAdapter::Rgb: { float* r = lineBuf + (col*bandCount) + ixR; float* g = lineBuf + (col*bandCount) + ixG; float* b = lineBuf + (col*bandCount) + ixB; int a = 255; if (ixA != -1) { float* fa = lineBuf + (col*bandCount) + ixA; a = *fa; } theImg.setPixel(px, py, qRgba(*r, *g, *b, a)); break; } #if QT_VERSION >= 0x040600 case GdalAdapter::Hsl: { float* h = lineBuf + (col*bandCount) + ixH; float* s = lineBuf + (col*bandCount) + ixS; float* l = lineBuf + (col*bandCount) + ixL; int a = 255; if (ixA != -1) { float* fa = lineBuf + (col*bandCount) + ixA; a = *fa; } QColor C = QColor::fromHsl(*h, *s, *l, a); theImg.setPixel(px, py, C.rgba()); break; } #endif case GdalAdapter::Cmyk: { float* c = lineBuf + (col*bandCount) + ixC; float* m = lineBuf + (col*bandCount) + ixM; float* y = lineBuf + (col*bandCount) + ixY; float* k = lineBuf + (col*bandCount) + ixK; int a = 255; if (ixA != -1) { float* fa = lineBuf + (col*bandCount) + ixA; a = *fa; } QColor C = QColor::fromCmyk(*c, *m, *y, *k, a); theImg.setPixel(px, py, C.rgba()); break; } case GdalAdapter::YUV: { // From http://www.fourcc.org/fccyvrgb.php float* y = lineBuf + (col*bandCount) + ixYuvY; float* u = lineBuf + (col*bandCount) + ixYuvU; float* v = lineBuf + (col*bandCount) + ixYuvV; int a = 255; if (ixA != -1) { float* fa = lineBuf + (col*bandCount) + ixA; a = *fa; } float R = 1.164*(*y - 16) + 1.596*(*v - 128); float G = 1.164*(*y - 16) - 0.813*(*v - 128) - 0.391*(*u - 128); float B = 1.164*(*y - 16) + 2.018*(*u - 128); theImg.setPixel(px, py, qRgba(R, G, B, a)); break; } case GdalAdapter::Palette_Gray: { float* ix = (lineBuf + (col*bandCount)); const GDALColorEntry* color = colTable->GetColorEntry(*ix); theImg.setPixel(px, py, qRgb(color->c1, color->c1, color->c1)); break; } case GdalAdapter::Palette_RGBA: { float* ix = (lineBuf + (col*bandCount)); const GDALColorEntry* color = colTable->GetColorEntry(*ix); theImg.setPixel(px, py, qRgba(color->c1, color->c2, color->c3, color->c4)); break; } #if QT_VERSION >= 0x040600 case GdalAdapter::Palette_HLS: { float* ix = (lineBuf + (col*bandCount)); const GDALColorEntry* color = colTable->GetColorEntry(*ix); QColor C = QColor::fromHsl(color->c1, color->c2, color->c3, color->c4); theImg.setPixel(px, py, C.rgba()); break; } #endif case GdalAdapter::Palette_CMYK: { float* ix = (lineBuf + (col*bandCount)); const GDALColorEntry* color = colTable->GetColorEntry(*ix); QColor C = QColor::fromCmyk(color->c1, color->c2, color->c3, color->c4); theImg.setPixel(px, py, C.rgba()); break; } } } QCoreApplication::processEvents(); } img.theFilename = fn; img.theImg = QPixmap::fromImage(theImg); theImages.push_back(img); theBbox = theBbox.united(bbox); GDALClose((GDALDatasetH)poDataset); return true; } void GdalAdapter::onLoadImage() { int fileOk = 0; QStringList fileNames = QFileDialog::getOpenFileNames( NULL, tr("Open GDAL files"), "", FILTER_OPEN_SUPPORTED); if (fileNames.isEmpty()) return; // theBbox = QRectF(); // theImages.clear(); for (int i=0; i<fileNames.size(); i++) { if (loadImage(fileNames[i])) ++fileOk; } if (!fileOk) { QMessageBox::critical(0,QCoreApplication::translate("GdalBackground","No valid file"),QCoreApplication::translate("GdalBackground","No valid GDAL file could be found.")); } else { emit forceZoom(); emit forceRefresh(); } return; } void GdalAdapter::onSetSourceTag() { bool ok; QString text = QInputDialog::getText(0, tr("Please specify automatic \"source\" tag value"), tr("Value:"), QLineEdit::Normal, theSourceTag, &ok); if (ok) theSourceTag = text; } QString GdalAdapter::getSourceTag() const { return theSourceTag; } QString GdalAdapter::getHost() const { return ""; } IMapAdapter::Type GdalAdapter::getType() const { return IMapAdapter::DirectBackground; } QMenu* GdalAdapter::getMenu() const { return theMenu; } QRectF GdalAdapter::getBoundingbox() const { QRectF projBbox = theBbox; if (isLatLon) projBbox = QRectF(angToRad(theBbox.left()), angToRad(theBbox.top()), angToRad(theBbox.width()), angToRad(theBbox.height())); return projBbox; } QString GdalAdapter::projection() const { return theProjection; } QPixmap GdalAdapter::getPixmap(const QRectF& /*wgs84Bbox*/, const QRectF& theProjBbox, const QRect& src) const { QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter p(&pix); QRectF projBbox = theProjBbox; if (isLatLon) projBbox = QRectF(radToAng(theProjBbox.left()), radToAng(theProjBbox.top()), radToAng(theProjBbox.width()), radToAng(theProjBbox.height())); for (int i=0; i<theImages.size(); ++i) { QPixmap theImg = theImages[i].theImg; QSizeF sz(projBbox.width() / theImages[i].adfGeoTransform[1], projBbox.height() / theImages[i].adfGeoTransform[5]); if (sz.isNull()) return QPixmap(); QPointF s((projBbox.left() - theImages[i].adfGeoTransform[0]) / theImages[i].adfGeoTransform[1], (projBbox.top() - theImages[i].adfGeoTransform[3]) / theImages[i].adfGeoTransform[5]); qDebug() << "Pixmap Origin: " << s.x() << "," << s.y(); qDebug() << "Pixmap size: " << sz.width() << "," << sz.height(); double rtx = src.width() / (double)sz.width(); double rty = src.height() / (double)sz.height(); QRect mRect = QRect(s.toPoint(), sz.toSize()); QRect iRect = theImg.rect().intersect(mRect); QRect sRect = QRect(iRect.topLeft() - mRect.topLeft(), iRect.size()); QRect fRect = QRect(sRect.x() * rtx, sRect.y() * rty, sRect.width() * rtx, sRect.height() * rty); qDebug() << "mrect: " << mRect; qDebug() << "iRect: " << iRect; qDebug() << "sRect: " << sRect; // QImage img2 = theImg.copy(iRect).scaled(fRect.size()); // p.drawImage(fRect.topLeft(), img2); QPixmap img2 = theImg.copy(iRect).scaled(fRect.size()); p.drawPixmap(fRect.topLeft(), img2); } p.end(); return pix; } IImageManager* GdalAdapter::getImageManager() { return NULL; } void GdalAdapter::setImageManager(IImageManager* /*anImageManager*/) { } void GdalAdapter::cleanup() { theImages.clear(); theBbox = QRectF(); theProjection = QString(); } bool GdalAdapter::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Images"); stream.writeAttribute("projection", theProjection); if (!theSourceTag.isEmpty()) stream.writeAttribute("source", theSourceTag); for (int i=0; i<theImages.size(); ++i) { stream.writeStartElement("Image"); stream.writeAttribute("filename", theImages[i].theFilename); stream.writeEndElement(); } stream.writeEndElement(); return OK; } void GdalAdapter::fromXML(QXmlStreamReader& stream) { theBbox = QRectF(); theImages.clear(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Images") { if (stream.attributes().hasAttribute("projection")) theProjection = stream.attributes().value("projection").toString(); if (stream.attributes().hasAttribute("source")) theSourceTag = stream.attributes().value("source").toString(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Image") { QString fn = stream.attributes().value("filename").toString(); if (!fn.isEmpty()) loadImage(fn); stream.readNext(); } else if (!stream.isWhitespace()) { qDebug() << "gdalimage: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } else if (!stream.isWhitespace()) { qDebug() << "gdalmain: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } QString GdalAdapter::toPropertiesHtml() { QString h; QStringList fn; for (int i=0; i<theImages.size(); ++i) { fn << QDir::toNativeSeparators(theImages[i].theFilename); } h += "<i>" + tr("Filename(s)") + ": </i>" + fn.join("; "); return h; } Q_EXPORT_PLUGIN2(MGdalBackgroundPlugin, GdalAdapterFactory) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGdalBackground/GdalAdapter.h����������������������������������0000664�0000000�0000000�00000011472�11770671653�0025077�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: %CLASS% // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef GDALADAPTER_H #define GDALADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include <QLocale> class GDALDataset; class GDALColorTable; class GdalImage { public: QString theFilename; QPixmap theImg; double adfGeoTransform[6]; }; class GdalAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: enum ImgType { Unknown, GrayScale, Rgb, Hsl, Cmyk, YUV, Palette_Gray, Palette_RGBA, Palette_CMYK, Palette_HLS }; GdalAdapter(); virtual ~GdalAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const; virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* /*aSet*/) {} public slots: void onLoadImage(); void onSetSourceTag(); protected: bool alreadyLoaded(QString fn) const; bool loadImage(const QString& fn); private: QMenu* theMenu; GDALDataset *poDataset; QString imageFilename; QString theProjection; QRect thePicRect; QRectF theBbox; bool isLatLon; QList<GdalImage> theImages; QString theSourceTag; // TiffType theType; // int bandCount; // int ixR, ixG, ixB, ixA; // GDALColorTable * colTable; }; class GdalAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new GdalAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif // GDALADAPTER_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGdalBackground/MGdalBackground.pro����������������������������0000664�0000000�0000000�00000001551�11770671653�0026261�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MGdalBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/src/Utils INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/src/Utils DEFINES += NO_PREFS HEADERS += \ ProjectionChooser.h \ GdalAdapter.h SOURCES += \ ProjectionChooser.cpp \ GdalAdapter.cpp FORMS += \ ProjectionChooser.ui COMMON_DIR=$${MERKAARTOR_SRC_DIR}/binaries win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib win32-msvc*:LIBS += -lgdal_i win32-g++:LIBS += -lgdal } unix { LIBS += $$system(gdal-config --libs) QMAKE_CXXFLAGS += $$system(gdal-config --cflags) QMAKE_CFLAGS += $$system(gdal-config --cflags) } �������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGeoTiffBackground/��������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0023225�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGeoTiffBackground/GeoTiffAdapter.cpp��������������������������0000664�0000000�0000000�00000027744�11770671653�0026573�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: GeoTiffAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "GeoTiffAdapter.h" #include <QCoreApplication> #include <QtPlugin> #include <QAction> #include <QFileDialog> #include <QPainter> #include <QMessageBox> #include <QInputDialog> #include <QDebug> #include "gdal_priv.h" #include "ogrsf_frmts.h" #include "ProjectionChooser.h" #define IN_MEMORY_LIMIT 100000000 static const QUuid theUid ("{867e78e9-3156-45f8-a9a7-e5cfa52f8507}"); static const QString theName("GeoTIFF"); QUuid GeoTiffAdapterFactory::getId() const { return theUid; } QString GeoTiffAdapterFactory::getName() const { return theName; } /**************/ inline double radToAng(double a) { return a*180/M_PI; } inline double angToRad(double a) { return a*M_PI/180.; } #define FILTER_OPEN_SUPPORTED \ tr("Supported formats")+" (*.tif *.tiff)\n" \ +tr("GeoTIFF files (*.tif *.tiff)\n") \ +tr("All Files (*)") GeoTiffAdapter::GeoTiffAdapter() : poDataset(0), isLatLon(false) { GDALAllRegister(); QAction* loadImage = new QAction(tr("Load image(s)..."), this); loadImage->setData(theUid.toString()); connect(loadImage, SIGNAL(triggered()), SLOT(onLoadImage())); QAction* setSource = new QAction(tr("Specify \"source\" tag..."), this); setSource->setData(theUid.toString()); connect(setSource, SIGNAL(triggered()), SLOT(onSetSourceTag())); theMenu = new QMenu(); theMenu->addAction(loadImage); theMenu->addAction(setSource); } GeoTiffAdapter::~GeoTiffAdapter() { cleanup(); } QUuid GeoTiffAdapter::getId() const { return theUid; } QString GeoTiffAdapter::getName() const { return theName; } bool GeoTiffAdapter::alreadyLoaded(QString fn) const { for (int j=0; j<theImages.size(); ++j) if (theImages[j].theFilename == fn) return true; return false; } bool GeoTiffAdapter::loadImage(const QString& fn) { if (alreadyLoaded(fn)) return true; QFileInfo fi(fn); GdalImage img; QRectF bbox; poDataset = (GDALDataset *) GDALOpen( QDir::toNativeSeparators(fi.absoluteFilePath()).toUtf8().constData(), GA_ReadOnly ); if( poDataset == NULL ) { qDebug() << "GDAL Open failed: " << fn; return false; } bool hasGeo = false; QDir dir(fi.absoluteDir()); QString f = fi.baseName(); QStringList wldFilter; wldFilter << f+".tfw" << f+".tifw" << f+".tiffw" << f+".wld"; QFileInfoList fil = dir.entryInfoList(wldFilter); if (fil.count()) { QFile wld(fil[0].absoluteFilePath()); if (wld.open(QIODevice::ReadOnly)) { int i; for (i=0; i<6; ++i) { if (wld.atEnd()) break; QString l = wld.readLine(); bool ok; double d = l.toDouble(&ok); if (!ok) break; switch (i) { case 0: img.adfGeoTransform[1] = d; break; case 1: img.adfGeoTransform[4] = d; break; case 2: img.adfGeoTransform[2] = d; break; case 3: img.adfGeoTransform[5] = d; break; case 4: img.adfGeoTransform[0] = d; break; case 5: img.adfGeoTransform[3] = d; break; } } if (i == 6) hasGeo = true; } } if(!hasGeo) if ( poDataset->GetGeoTransform( img.adfGeoTransform ) != CE_None ) { GDALClose((GDALDatasetH)poDataset); return false; } qDebug( "Origin = (%.6f,%.6f)\n", img.adfGeoTransform[0], img.adfGeoTransform[3] ); qDebug( "Pixel Size = (%.6f,%.6f)\n", img.adfGeoTransform[1], img.adfGeoTransform[5] ); bbox.setTopLeft(QPointF(img.adfGeoTransform[0], img.adfGeoTransform[3])); bbox.setWidth(img.adfGeoTransform[1]*poDataset->GetRasterXSize()); bbox.setHeight(img.adfGeoTransform[5]*poDataset->GetRasterYSize()); isLatLon = false; if( strlen(poDataset->GetProjectionRef()) != 0 ) { qDebug( "Projection is `%s'\n", poDataset->GetProjectionRef() ); OGRSpatialReference* theSrs = new OGRSpatialReference(poDataset->GetProjectionRef()); if (theSrs && theSrs->Validate() == OGRERR_NONE) { theSrs->morphFromESRI(); char* theProj4; if (theSrs->exportToProj4(&theProj4) == OGRERR_NONE) { qDebug() << "GDAL: to proj4 : " << theProj4; } else { qDebug() << "GDAL: to proj4 error: " << CPLGetLastErrorMsg(); GDALClose((GDALDatasetH)poDataset); return false; } QString srsProj = QString(theProj4); if (!srsProj.isEmpty() && theProjection != srsProj) { cleanup(); theProjection = srsProj; } isLatLon = (theSrs->IsGeographic() == TRUE); } } if (theProjection.isEmpty()) { theProjection = ProjectionChooser::getProjection(QCoreApplication::translate("ImportExportGdal", "Unable to set projection; please specify one")); if (theProjection.isEmpty()) { GDALClose((GDALDatasetH)poDataset); return false; } } qDebug( "Driver: %s/%s\n", poDataset->GetDriver()->GetDescription(), poDataset->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME ) ); qDebug( "Size is %dx%dx%d\n", poDataset->GetRasterXSize(), poDataset->GetRasterYSize(), poDataset->GetRasterCount() ); img.theFilename = fn; img.theImg.load(fn); theImages.push_back(img); theBbox = theBbox.united(bbox); GDALClose((GDALDatasetH)poDataset); return true; } void GeoTiffAdapter::onLoadImage() { int fileOk = 0; QStringList fileNames = QFileDialog::getOpenFileNames( NULL, tr("Open GeoTIFF files"), "", FILTER_OPEN_SUPPORTED); if (fileNames.isEmpty()) return; // theBbox = QRectF(); // theImages.clear(); for (int i=0; i<fileNames.size(); i++) { if (loadImage(fileNames[i])) ++fileOk; } if (!fileOk) { QMessageBox::critical(0,QCoreApplication::translate("GeoTiffBackground","No valid file"),QCoreApplication::translate("GeoTiffBackground","No valid GeoTIFF file could be found.")); } else { emit(forceProjection()); emit forceZoom(); emit forceRefresh(); } return; } void GeoTiffAdapter::onSetSourceTag() { bool ok; QString text = QInputDialog::getText(0, tr("Please specify automatic \"source\" tag value"), tr("Value:"), QLineEdit::Normal, theSourceTag, &ok); if (ok) theSourceTag = text; } QString GeoTiffAdapter::getSourceTag() const { return theSourceTag; } QString GeoTiffAdapter::getHost() const { return ""; } IMapAdapter::Type GeoTiffAdapter::getType() const { return IMapAdapter::DirectBackground; } QMenu* GeoTiffAdapter::getMenu() const { return theMenu; } QRectF GeoTiffAdapter::getBoundingbox() const { QRectF projBbox = theBbox; if (isLatLon) projBbox = QRectF(angToRad(theBbox.left()), angToRad(theBbox.top()), angToRad(theBbox.width()), angToRad(theBbox.height())); return projBbox; } QString GeoTiffAdapter::projection() const { return theProjection; } QPixmap GeoTiffAdapter::getPixmap(const QRectF& /*wgs84Bbox*/, const QRectF& theProjBbox, const QRect& src) const { QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter p(&pix); QRectF projBbox = theProjBbox; if (isLatLon) projBbox = QRectF(radToAng(theProjBbox.left()), radToAng(theProjBbox.top()), radToAng(theProjBbox.width()), radToAng(theProjBbox.height())); for (int i=0; i<theImages.size(); ++i) { QPixmap theImg = theImages[i].theImg; QSizeF sz(projBbox.width() / theImages[i].adfGeoTransform[1], projBbox.height() / theImages[i].adfGeoTransform[5]); if (sz.isNull()) return QPixmap(); QPointF s((projBbox.left() - theImages[i].adfGeoTransform[0]) / theImages[i].adfGeoTransform[1], (projBbox.top() - theImages[i].adfGeoTransform[3]) / theImages[i].adfGeoTransform[5]); qDebug() << "Pixmap Origin: " << s.x() << "," << s.y(); qDebug() << "Pixmap size: " << sz.width() << "," << sz.height(); double rtx = src.width() / (double)sz.width(); double rty = src.height() / (double)sz.height(); QRect mRect = QRect(s.toPoint(), sz.toSize()); QRect iRect = theImg.rect().intersect(mRect); QRect sRect = QRect(iRect.topLeft() - mRect.topLeft(), iRect.size()); QRect fRect = QRect(sRect.x() * rtx, sRect.y() * rty, sRect.width() * rtx, sRect.height() * rty); qDebug() << "mrect: " << mRect; qDebug() << "iRect: " << iRect; qDebug() << "sRect: " << sRect; // QImage img2 = theImg.copy(iRect).scaled(fRect.size()); // p.drawImage(fRect.topLeft(), img2); QPixmap img2 = theImg.copy(iRect).scaled(fRect.size()); p.drawPixmap(fRect.topLeft(), img2); } p.end(); return pix; } IImageManager* GeoTiffAdapter::getImageManager() { return NULL; } void GeoTiffAdapter::setImageManager(IImageManager* /*anImageManager*/) { } void GeoTiffAdapter::cleanup() { theImages.clear(); theBbox = QRectF(); theProjection = QString(); } bool GeoTiffAdapter::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Images"); stream.writeAttribute("projection", theProjection); if (!theSourceTag.isEmpty()) stream.writeAttribute("source", theSourceTag); for (int i=0; i<theImages.size(); ++i) { stream.writeStartElement("Image"); stream.writeAttribute("filename", theImages[i].theFilename); stream.writeEndElement(); } stream.writeEndElement(); return OK; } void GeoTiffAdapter::fromXML(QXmlStreamReader& stream) { theBbox = QRectF(); theImages.clear(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Images") { if (stream.attributes().hasAttribute("projection")) theProjection = stream.attributes().value("projection").toString(); if (stream.attributes().hasAttribute("source")) theSourceTag = stream.attributes().value("source").toString(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Image") { QString fn = stream.attributes().value("filename").toString(); if (!fn.isEmpty()) loadImage(fn); stream.readNext(); } else if (!stream.isWhitespace()) { qDebug() << "gdalimage: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } else if (!stream.isWhitespace()) { qDebug() << "gdalmain: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } QString GeoTiffAdapter::toPropertiesHtml() { QString h; QStringList fn; for (int i=0; i<theImages.size(); ++i) { fn << QDir::toNativeSeparators(theImages[i].theFilename); } h += "<i>" + tr("Filename(s)") + ": </i>" + fn.join("; "); return h; } Q_EXPORT_PLUGIN2(MGeoTiffBackgroundPlugin, GeoTiffAdapterFactory) ����������������������������merkaartor-0.18.1/plugins/background/MGeoTiffBackground/GeoTiffAdapter.h����������������������������0000664�0000000�0000000�00000011455�11770671653�0026230�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: GeoTiffAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef GEOTIFFADAPTER_H #define GEOTIFFADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include <QLocale> class GDALDataset; class GDALColorTable; class GdalImage { public: QString theFilename; QPixmap theImg; double adfGeoTransform[6]; }; class GeoTiffAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: enum TiffType { Unknown, Rgb, Rgba, Palette_Gray, Palette_RGBA, Palette_CMYK, Palette_HLS }; GeoTiffAdapter(); virtual ~GeoTiffAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const; virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* /*aSet*/) {} public slots: void onLoadImage(); void onSetSourceTag(); protected: bool alreadyLoaded(QString fn) const; bool loadImage(const QString& fn); private: QMenu* theMenu; GDALDataset *poDataset; QString imageFilename; QString theProjection; QRect thePicRect; QRectF theBbox; bool isLatLon; QList<GdalImage> theImages; QString theSourceTag; // TiffType theType; // int bandCount; // int ixR, ixG, ixB, ixA; // GDALColorTable * colTable; }; class GeoTiffAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new GeoTiffAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif // GeoTiffAdapter_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGeoTiffBackground/MGeoTiffBackground.pro����������������������0000664�0000000�0000000�00000001561�11770671653�0027412�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MGeoTiffBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/src/Utils INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/src/Utils DEFINES += NO_PREFS HEADERS += \ ProjectionChooser.h \ GeoTiffAdapter.h SOURCES += \ ProjectionChooser.cpp \ GeoTiffAdapter.cpp FORMS += \ ProjectionChooser.ui COMMON_DIR=$${MERKAARTOR_SRC_DIR}/binaries win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib win32-msvc*:LIBS += -lgdal_i win32-g++:LIBS += -lgdal } unix { LIBS += $$system(gdal-config --libs) QMAKE_CXXFLAGS += $$system(gdal-config --cflags) QMAKE_CFLAGS += $$system(gdal-config --cflags) } �����������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/��������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0023315�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/GosmoreAdapter.cpp��������������������������0000664�0000000�0000000�00000057347�11770671653�0026755�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: GosmoreAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "GosmoreAdapter.h" #include <QCoreApplication> #include <QtPlugin> #include <QAction> #include <QFileDialog> #include <QPainter> #include <QMessageBox> #include <QInputDialog> #include <QTimer> #include <QBuffer> #include <QPair> #include <QSettings> #include <math.h> #include <vector> #include <stack> #include <queue> #include "MasPaintStyle.h" #include "GosmoreFeature.h" static const QUuid theUid ("{7b7185c5-46cc-4b67-85b7-7aeb7fb49f31}"); static const QString theName("Gosmore"); QUuid GosmoreAdapterFactory::getId() const { return theUid; } QString GosmoreAdapterFactory::getName() const { return theName; } /********************************/ #define FILTER_OPEN_SUPPORTED \ tr("Supported formats")+" (*.pak)\n" \ +tr("All Files (*)") struct linePtType { QPoint pt; int cumulative; linePtType (QPoint _pt, int _c) : pt (_pt), cumulative (_c) {} }; #define Depth(lon,lat) \ (int)(yadj + (lat) * (myint) cosa - (lon) * (myint) sina) #define X1(lon,lat) \ (int)(xadj + (lon) * (myint) cosa + (lat) * (myint) sina) #define AdjDepth(lon,lat) (Depth (lon, lat) < PIX45 * HEIGHT * MUL / 5000 \ && Depth (lon, lat) > -PIX45 * HEIGHT * MUL / 5000 ? \ PIX45 * HEIGHT * MUL / 5000 : Depth (lon, lat)) #define Y(lon,lat) (Display3D ? PIX45 * HEIGHT * MUL / AdjDepth (lon, lat) \ : yadj + (int)(((lon) * (__int64) sina - (lat) * (__int64) cosa) >> 32)) #define X(lon,lat) (Display3D ? clip.width / 2 + \ ((AdjDepth (lon, lat) > 0 ? 1 : -1) * \ (X1 (lon, lat) / 32000 - AdjDepth (lon, lat) / XFix) > 0 ? 32000 : \ (AdjDepth (lon, lat) > 0 ? 1 : -1) * \ (X1 (lon, lat) / 32000 + AdjDepth (lon, lat) / XFix) < 0 ? -32000 : \ X1(lon,lat) / (AdjDepth (lon, lat) / XFix)) \ : xadj + (int)(((lon) * (__int64) cosa + (lat) * (__int64) sina) >> 32)) double angToRad(double a) { return a*M_PI/180.; } QPoint gosmoreProject(const QPointF& c) { double x = c.x() / 180.* INT_MAX; double y = log(tan(angToRad(c.y())) + 1/cos(angToRad(c.y()))) / M_PI * (INT_MAX); return QPoint(qRound(x), qRound(y)); } GosmoreAdapter::GosmoreAdapter() : pak(0) { QAction* loadFile = new QAction(tr("Load Gosmore file..."), this); loadFile->setData(theUid.toString()); connect(loadFile, SIGNAL(triggered()), SLOT(onLoadFile())); theMenu = new QMenu(); theMenu->addAction(loadFile); loaded = false; // setFile("d:/gosmore?.pak"); MasPaintStyle theStyle; theStyle.loadPainters(":/Styles/Mapnik.mas"); for (int i=0; i<theStyle.painterSize(); ++i) { thePrimitivePainters.append(PrimitivePainter(*theStyle.getPainter(i))); } loadStyle(gosmore_note_yes); loadStyle(highway_residential); loadStyle(highway_unclassified); loadStyle(highway_tertiary); loadStyle(highway_secondary); loadStyle(highway_primary); loadStyle(highway_trunk); loadStyle(highway_footway); loadStyle(highway_service); loadStyle(highway_track); loadStyle(highway_cycleway); loadStyle(highway_pedestrian); loadStyle(highway_steps); loadStyle(highway_bridleway); loadStyle(railway_rail); loadStyle(railway_station); loadStyle(highway_mini_roundabout); loadStyle(highway_traffic_signals); loadStyle(highway_bus_stop); loadStyle(amenity_parking); loadStyle(amenity_fuel); loadStyle(amenity_school); loadStyle(place_village); loadStyle(place_suburb); loadStyle(shop_supermarket); loadStyle(religion_christian); loadStyle(religion_jewish); loadStyle(religion_muslim); loadStyle(amenity_pub); loadStyle(amenity_restaurant); loadStyle(power_tower); loadStyle(waterway_stream); loadStyle(amenity_grave_yard); loadStyle(amenity_crematorium); loadStyle(amenity_shelter); loadStyle(tourism_picnic_site); loadStyle(leisure_common); loadStyle(amenity_park_bench); loadStyle(tourism_viewpoint); loadStyle(tourism_artwork); loadStyle(tourism_museum); loadStyle(tourism_theme_park); loadStyle(tourism_zoo); loadStyle(leisure_playground); loadStyle(leisure_park); loadStyle(leisure_nature_reserve); loadStyle(leisure_miniature_golf); loadStyle(leisure_golf_course); loadStyle(leisure_sports_centre); loadStyle(leisure_stadium); loadStyle(leisure_pitch); loadStyle(leisure_track); loadStyle(sport_athletics); loadStyle(sport_10pin); loadStyle(sport_boules); loadStyle(sport_bowls); loadStyle(sport_baseball); loadStyle(sport_basketball); loadStyle(sport_cricket); loadStyle(sport_cricket_nets); loadStyle(sport_croquet); loadStyle(sport_dog_racing); loadStyle(sport_equestrian); loadStyle(sport_football); loadStyle(sport_soccer); loadStyle(sport_climbing); loadStyle(sport_gymnastics); loadStyle(sport_hockey); loadStyle(sport_horse_racing); loadStyle(sport_motor); loadStyle(sport_pelota); loadStyle(sport_rugby); loadStyle(sport_australian_football); loadStyle(sport_skating); loadStyle(sport_skateboard); loadStyle(sport_handball); loadStyle(sport_table_tennis); loadStyle(sport_tennis); loadStyle(sport_racquet); loadStyle(sport_badminton); loadStyle(sport_paintball); loadStyle(sport_shooting); loadStyle(sport_volleyball); loadStyle(sport_beachvolleyball); loadStyle(sport_archery); loadStyle(sport_skiing); loadStyle(sport_rowing); loadStyle(sport_sailing); loadStyle(sport_diving); loadStyle(sport_swimming); loadStyle(leisure_swimming_pool); loadStyle(leisure_water_park); loadStyle(leisure_marina); loadStyle(leisure_slipway); loadStyle(leisure_fishing); loadStyle(shop_bakery); loadStyle(shop_butcher); loadStyle(shop_florist); loadStyle(shop_groceries); loadStyle(shop_beverages); loadStyle(shop_clothes); loadStyle(shop_shoes); loadStyle(shop_jewelry); loadStyle(shop_books); loadStyle(shop_newsagent); loadStyle(shop_furniture); loadStyle(shop_hifi); loadStyle(shop_electronics); loadStyle(shop_computer); loadStyle(shop_video); loadStyle(shop_toys); loadStyle(shop_motorcycle); loadStyle(shop_car_repair); loadStyle(shop_doityourself); loadStyle(shop_garden_centre); loadStyle(shop_outdoor); loadStyle(shop_bicycle); loadStyle(shop_dry_cleaning); loadStyle(shop_laundry); loadStyle(shop_hairdresser); loadStyle(shop_travel_agency); loadStyle(shop_convenience); loadStyle(shop_mall); loadStyle(shop_department_store); loadStyle(amenity_biergarten); loadStyle(amenity_nightclub); loadStyle(amenity_bar); loadStyle(amenity_cafe); loadStyle(amenity_fast_food); loadStyle(amenity_ice_cream); loadStyle(amenity_bicycle_rental); loadStyle(amenity_car_rental); loadStyle(amenity_car_sharing); loadStyle(amenity_car_wash); loadStyle(amenity_taxi); loadStyle(amenity_telephone); loadStyle(amenity_post_office); loadStyle(amenity_post_box); loadStyle(tourism_information); loadStyle(amenity_toilets); loadStyle(amenity_recycling); loadStyle(amenity_fire_station); loadStyle(amenity_police); loadStyle(amenity_courthouse); loadStyle(amenity_prison); loadStyle(amenity_public_building); loadStyle(amenity_townhall); loadStyle(amenity_cinema); loadStyle(amenity_arts_centre); loadStyle(amenity_theatre); loadStyle(tourism_hotel); loadStyle(tourism_motel); loadStyle(tourism_guest_house); loadStyle(tourism_hostel); loadStyle(tourism_chalet); loadStyle(tourism_camp_site); loadStyle(tourism_caravan_site); loadStyle(amenity_pharmacy); loadStyle(amenity_dentist); loadStyle(amenity_doctor); loadStyle(amenity_hospital); loadStyle(amenity_bank); loadStyle(amenity_bureau_de_change); loadStyle(amenity_atm); loadStyle(amenity_drinking_water); loadStyle(amenity_fountain); loadStyle(natural_spring); loadStyle(amenity_university); loadStyle(amenity_college); loadStyle(amenity_kindergarten); loadStyle(highway_living_street); loadStyle(highway_motorway); loadStyle(highway_motorway_link); loadStyle(highway_trunk_link); loadStyle(highway_primary_link); loadStyle(barrier_bollard); loadStyle(barrier_gate); loadStyle(barrier_stile); loadStyle(barrier_cattle_grid); loadStyle(barrier_toll_booth); loadStyle(man_made_beacon); loadStyle(man_made_survey_point); loadStyle(man_made_tower); loadStyle(man_made_water_tower); loadStyle(man_made_gasometer); loadStyle(man_made_reservoir_covered); loadStyle(man_made_lighthouse); loadStyle(man_made_windmill); loadStyle(man_made_pier); loadStyle(man_made_pipeline); loadStyle(man_made_wastewater_plant); loadStyle(man_made_crane); loadStyle(building_yes); loadStyle(landuse_forest); loadStyle(landuse_residential); loadStyle(landuse_industrial); loadStyle(landuse_retail); loadStyle(landuse_commercial); loadStyle(landuse_construction); loadStyle(landuse_reservoir); loadStyle(natural_water); loadStyle(landuse_basin); loadStyle(landuse_landfill); loadStyle(landuse_quarry); loadStyle(landuse_cemetery); loadStyle(landuse_allotments); loadStyle(landuse_farm); loadStyle(landuse_farmyard); loadStyle(landuse_military); loadStyle(religion_bahai); loadStyle(religion_buddhist); loadStyle(religion_hindu); loadStyle(religion_jain); loadStyle(religion_sikh); loadStyle(religion_shinto); loadStyle(religion_taoist); loadStyle(highway_road); loadStyle(restriction_no_right_turn); loadStyle(restriction_no_left_turn); loadStyle(restriction_no_u_turn); loadStyle(restriction_no_straight_on); loadStyle(restriction_only_right_turn); loadStyle(restriction_only_left_turn); loadStyle(restriction_only_straight_on); } void GosmoreAdapter::loadStyle(int stylenr) { GosmoreFeature f(stylenr); for (int i=0; i<thePrimitivePainters.size(); ++i) { if (thePrimitivePainters[i].matchesTag(&f, 0)) myStyles[stylenr] = &thePrimitivePainters[i]; } } GosmoreAdapter::~GosmoreAdapter() { } void GosmoreAdapter::setFile(const QString& fn) { if (pak) delete pak; pak = new QFile(fn, this); if (!pak->open(QIODevice::ReadOnly)) { QMessageBox::critical(0,QCoreApplication::translate("GosmoreAdapter","No valid file"),QCoreApplication::translate("GosmoreAdapter","File not found.")); return; } long sz = pak->size(); gosmap = NULL; if (sz) gosmap = pak->map(0, sz); pak->close(); if (!GosmInit(gosmap, sz)) { QMessageBox::critical(0,QCoreApplication::translate("GosmoreAdapter","No valid file"),QCoreApplication::translate("GosmoreAdapter","Cannot initialize file.")); return; } loaded = true; return; } void GosmoreAdapter::onLoadFile() { QString fileName = QFileDialog::getOpenFileName( NULL, tr("Open Gosmore file"), "", FILTER_OPEN_SUPPORTED); if (fileName.isEmpty()) return; setFile(fileName); } QString GosmoreAdapter::getHost() const { return ""; } QUuid GosmoreAdapter::getId() const { return QUuid(theUid); } IMapAdapter::Type GosmoreAdapter::getType() const { return IMapAdapter::DirectBackground; } QString GosmoreAdapter::getName() const { return theName; } QMenu* GosmoreAdapter::getMenu() const { return theMenu; } QRectF GosmoreAdapter::getBoundingbox() const { return QRectF(QPointF(-6378137.0/2, -6378137.0/2), QPointF(6378137.0/2, 6378137.0/2)); // return QRectF(QPointF(-180., -85.), QPointF(180., 85.)); } QString GosmoreAdapter::projection() const { return "EPSG:3857"; } int WaySizeCmp (ndType **a, ndType **b) { return Way (*a)->dlat * (__int64) Way (*a)->dlon > Way (*b)->dlat * (__int64) Way (*b)->dlon ? 1 : -1; } void SetColour (QColor *c, int hexTrip) { int red = (hexTrip >> 16) * 0x101; int green = ((hexTrip >> 8) & 0xff) * 0x101; int blue = (hexTrip & 0xff) * 0x101; c->setRgb(qRgb(red, green, blue)); } QPixmap GosmoreAdapter::getPixmap(const QRectF& wgs84Bbox, const QRectF& /*projBbox*/, const QRect& src) const { if (!loaded) return QPixmap(); QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter P(&pix); P.setRenderHint(QPainter::Antialiasing); render(&P, wgs84Bbox, wgs84Bbox, src); P.end(); return pix; } void GosmoreAdapter::render(QPainter* P, const QRectF& fullbox, const QRectF& selbox, const QRect& src) const { if (!loaded) return; QPoint tl = gosmoreProject(fullbox.topLeft()); QPoint br = gosmoreProject(fullbox.bottomRight()); QRectF pBox(tl, br); QTransform tfm; double ScaleLon = src.width() / pBox.width(); double ScaleLat = src.height() / pBox.height(); double PLon = pBox.center().x() * ScaleLon; double PLat = pBox.center().y() * ScaleLat; double DeltaLon = src.width() / 2 - PLon; double DeltaLat = src.height() - (src.height() / 2 - PLat); double LengthOfOneDegreeLat = 6378137.0 * M_PI / 180; double LengthOfOneDegreeLon = LengthOfOneDegreeLat * fabs(cos(angToRad(fullbox.center().y()))); double lonAnglePerM = 1 / LengthOfOneDegreeLon; double PixelPerM = src.width() / (double)fullbox.width() * lonAnglePerM; // qDebug() << PixelPerM; tfm.setMatrix(ScaleLon, 0, 0, 0, -ScaleLat, 0, DeltaLon, DeltaLat, 1); // P.setTransform(tfm); static QColor styleColour[2 << STYLE_BITS][2]; for (int i = 0; i < stylecount; i++) { for (int j = 0; j < 2; j++) { SetColour (&styleColour[i][j], !j ? style[i].areaColour : style[i].lineColour != -1 ? style[i].lineColour : (style[i].areaColour >> 1) & 0xefefef); // Dark border for polys } } tl = gosmoreProject(selbox.topLeft()); br = gosmoreProject(selbox.bottomRight()); pBox = QRectF(tl, br).adjusted(-1000, -1000, 1000, 1000); QPainterPath clipPath; clipPath.addRect(pBox); OsmItr itr (tl.x() - 1000, tl.y() - 1000, br.x() + 1000, br.y() + 1000); std::vector<ndType*> area; std::stack<ndType*> dlist[12]; long cnt = 0; while (Next (itr)) { ndType *nd = itr.nd[0]; wayType *w = Way (nd); // qDebug() << "Max style: " << Style (w)->scaleMax; // if (Style (w)->scaleMax < zoom / clip.width * 350 / (DetailLevel + 6) // && !Display3D && w->dlat < zoom / clip.width * 20 && // w->dlon < zoom / clip.width * 20) continue; // With 3D, the icons are filtered only much later when we know z. if (nd->other[0] != 0) { nd = itr.nd[0] + itr.nd[0]->other[0]; if (nd->lat == INT_MIN) nd = itr.nd[0]; // Node excluded from build else if (itr.left <= nd->lon && nd->lon < itr.right && itr.top <= nd->lat && nd->lat < itr.bottom) continue; } // Only process this way when the Itr gives us the first node, or // the first node that's inside the viewing area if (nd->other[0] == 0 && nd->other[1] == 0) dlist[11].push (nd); else if (Style (w)->areaColour != -1) area.push_back (nd); else dlist[Layer (w) + 5].push (nd); ++cnt; } // qDebug() << "cnt: " << cnt; qsort (&area[0], area.size (), sizeof (area[0]), (int (*)(const void *a, const void *b))WaySizeCmp); for (; !area.empty(); area.pop_back ()) { ndType *nd = area.back (); wayType *w = Way (nd); while (nd->other[0] != 0) nd += nd->other[0]; QPainterPath pth; bool hasFirst = false; for (; nd->other[1] != 0; nd += nd->other[1]) { if (nd->lat != INT_MIN) { if (hasFirst) pth.lineTo(nd->lon, nd->lat); else { pth.moveTo(nd->lon, nd->lat); hasFirst = true; } } } pth.closeSubpath(); if (!pth.isEmpty()) { // QPainterPath pp = tfm.map(pth); QPainterPath pp = tfm.map(clipPath.intersected(pth)); if (myStyles[StyleNr(w)]) { if (myStyles[StyleNr(w)]->matchesZoom(PixelPerM)) { myStyles[StyleNr(w)]->drawBackground(&pp, P, PixelPerM); // myStyles[StyleNr(w)]->drawForeground(&pp, P, PixelPerM); myStyles[StyleNr(w)]->drawTouchup(&pp, P, PixelPerM); // myStyles[StyleNr(w)]->drawLabel(&pp, P, PixelPerM); } } else { P->setPen(QPen(Qt::black, 2)); P->drawPath(pp); } // P.setBrush(styleColour[Style (w) - style][0]); // P.setPen(Qt::NoPen); // P.drawPath(tfm.map(pth)); // P.setBrush(styleColour[Style (w) - style][1]); // P.strokePath(tfm.map(pth), QPen(Style (w)->lineWidth)); // Text placement: The basic idea is here : http://alienryderflex.com/polygon_fill/ } // Polygon not empty } // For each area for (int l = 0; l < 12; l++) { for (; !dlist[l].empty (); dlist[l].pop ()) { ndType *nd = dlist[l].top (); wayType *w = Way (nd); QStringList strL(QString(QByteArray((char*)(w + 1) + 1)).split("\n")); // single-point node if (nd->other[0] == 0 && nd->other[1] == 0) { QPointF pt(nd->lon, nd->lat); // P.setPen(QPen(Qt::red, 3)); // P.drawPoint(tfm.map(pt)); if (myStyles[StyleNr(w)] && myStyles[StyleNr(w)]->matchesZoom(PixelPerM)) { QPointF pp = tfm.map(pt); myStyles[StyleNr(w)]->drawTouchup(&pp, P, PixelPerM); myStyles[StyleNr(w)]->drawLabel(&pp, P, PixelPerM, strL[0]); } } // ways (including areas on WinMob : FIXME) else if (nd->other[1] != 0) { // perform validation (on non-areas) ndType *orig = nd; nd = orig; QPainterPath pth; pth.moveTo(nd->lon, nd->lat); do { ndType *next = nd + nd->other[1]; if (next->lat == INT_MIN) break; // Node excluded from build pth.lineTo(next->lon, next->lat); nd = next; } while (itr.left <= nd->lon && nd->lon < itr.right && itr.top <= nd->lat && nd->lat < itr.bottom && nd->other[1] != 0); // P.setBrush(Qt::NoBrush); // P.setPen(QPen(styleColour[Style (w) - style][1], Style (w)->lineWidth)); // P.drawPath(tfm.map(pth)); // QPainterPath pp = tfm.map(pth); QPainterPath pp = tfm.map(clipPath.intersected(pth)); if (myStyles[StyleNr(w)]) { if (myStyles[StyleNr(w)]->matchesZoom(PixelPerM)) { // P->save(); // P->setCompositionMode(QPainter::CompositionMode_DestinationOver); // myStyles[StyleNr(w)]->drawBackground(&pp, P, PixelPerM); // P->restore(); myStyles[StyleNr(w)]->drawForeground(&pp, P, PixelPerM); myStyles[StyleNr(w)]->drawTouchup(&pp, P, PixelPerM); // myStyles[StyleNr(w)]->drawLabel(&pp, &P, PixelPerM, strL[0]); } } else { // qDebug() << StyleNr(w); P->setPen(QPen(Qt::black, 2)); P->drawPath(pp); } } /* If it has one or more segments */ } /* for each way / icon */ } // For each layer // qDebug() << "wgs84: " << wgs84Bbox; // qDebug() << "src: " << src; //// QRectF pBox(GosmoreProject(wgs84Bbox.topLeft()), GosmoreProject(wgs84Bbox.bottomRight())); // QRectF pBox(GosmoreProject(wgs84Bbox.topLeft()), GosmoreProject(wgs84Bbox.bottomRight())); // QList<GosmoreFeature> theFeats; // Gosmore.getFeatures(pBox.toRect(), theFeats); //// Gosmore.getFeatures("adbdbdacddbcad", theFeats); // qDebug () << "Feats: " << theFeats.size(); // if (!theFeats.size()) // return QPixmap(); // QTransform tfm; // double ScaleLon = src.width() / pBox.width(); // double ScaleLat = src.height() / pBox.height(); // double PLon = pBox.center().x() * ScaleLon; // double PLat = pBox.center().y() * ScaleLat; // double DeltaLon = src.width() / 2 - PLon; // double DeltaLat = src.height() - (src.height() / 2 - PLat); // tfm.setMatrix(ScaleLon, 0, 0, 0, -ScaleLat, 0, DeltaLon, DeltaLat, 1); // qDebug() << pBox.toRect(); // foreach (GosmoreAttribute a, theFeats[0].attributes) { // if (a.type == attr_street_name) // qDebug() << "Street_name: " << a.attribute; // } //// qDebug() << "type: " << QString("0x%1").arg(theFeats[0].type, 0, 16); //// qDebug() << theFeats[10].coordinates; //// qDebug() << QPolygon(theFeats[10].coordinates).boundingRect(); //// qDebug() << tfm.map(QPolygon(theFeats[10].coordinates)); // pix.fill(Qt::transparent); // QPainter P(&pix); // P.setRenderHint(QPainter::Antialiasing); // P.setTransform(tfm); //// P.setClipRect(pBox); //// P.setClipping(true); //// QRect ipBox = pBox.toRect(); // QPainterPath clipPath; // clipPath.addRect(pBox); // foreach (GosmoreFeature f, theFeats) { //// foreach (GosmoreAttribute a, f.attributes) { //// if (a.type == attr_street_name) //// qDebug() << "Street_name: " << a.attribute; //// } // if (f.coordinates.size() > 1) { // QPolygonF d(f.coordinates); // QPainterPath aPath; // aPath.addPolygon(d); //// QRect br = d.boundingRect(); //// qDebug() << "brect: " << br; // aPath = aPath.intersected(clipPath); //// if (!aPath.intersects(pBox)) //// continue; // if ((f.type & 0xc0000000) == 0xc0000000) { // P.setPen(QPen(Qt::lightGray, 1)); // aPath.closeSubpath(); // P.drawPath(aPath); //// P.drawPolygon(QPolygon(f.coordinates)); // } else { // P.setPen(QPen(Qt::blue, 2)); //// P.drawPolyline(f.coordinates); // P.drawPath(aPath); // } // } else { // if (f.coordinates.size() == 1) { // if (!pBox.contains(f.coordinates[0])) // continue; // P.setPen(QPen(Qt::red, 5)); // P.drawPoint(f.coordinates[0]); // } // } // } } IImageManager* GosmoreAdapter::getImageManager() { return NULL; } void GosmoreAdapter::setImageManager(IImageManager*) { } void GosmoreAdapter::cleanup() { } bool GosmoreAdapter::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Source"); if (loaded) stream.writeAttribute("filename", pak->fileName()); stream.writeEndElement(); return OK; } void GosmoreAdapter::fromXML(QXmlStreamReader& stream) { QString fn; while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Source") { fn = stream.attributes().value("filename").toString(); } stream.readNext(); } if (!fn.isEmpty()) setFile(fn); } QString GosmoreAdapter::toPropertiesHtml() { QString h; if (pak) h += "<i>" + tr("Filename") + ": </i>" + pak->fileName(); return h; } #ifndef _MOBILE Q_EXPORT_PLUGIN2(MGosmoreBackgroundPlugin, GosmoreAdapterFactory) #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/GosmoreAdapter.h����������������������������0000664�0000000�0000000�00000011125�11770671653�0026402�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: GosmoreAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef GOSMOREADAPTER_H #define GOSMOREADAPTER_H #include "IMapAdapter.h" #include "IMapAdapterFactory.h" #include <QLocale> #include <QByteArray> #include <QFile> #include "libgosm.h" #include "PaintStyle/PrimitivePainter.h" class MasPaintStyle; class GosmoreAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: GosmoreAdapter(); virtual ~GosmoreAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const { return ""; } virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* /*aSet*/) {} public: void setFile(const QString& fn); void render(QPainter* P, const QRectF& fullbox, const QRectF& selbox, const QRect& src) const; public slots: void onLoadFile(); protected: void loadStyle(int stylenr); bool alreadyLoaded(QString fn) const; private: QMenu* theMenu; bool loaded; QFile* pak; uchar* gosmap; QList<PrimitivePainter> thePrimitivePainters; QHash< int, PrimitivePainter* > myStyles; }; class GosmoreAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new GosmoreAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif // GOSMOREADAPTER_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/GosmoreFeature.cpp��������������������������0000664�0000000�0000000�00000064551�11770671653�0026763�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "GosmoreFeature.h" GosmoreFeature::GosmoreFeature(int stylenr) { switch (stylenr) { case gosmore_note_yes: Tags.append(qMakePair(QString("gosmore_note"),QString("yes"))); break; case highway_residential: Tags.append(qMakePair(QString("highway"),QString("residential"))); break; case highway_unclassified: Tags.append(qMakePair(QString("highway"),QString("unclassified"))); break; case highway_tertiary: Tags.append(qMakePair(QString("highway"),QString("tertiary"))); break; case highway_secondary: Tags.append(qMakePair(QString("highway"),QString("secondary"))); break; case highway_primary: Tags.append(qMakePair(QString("highway"),QString("primary"))); break; case highway_trunk: Tags.append(qMakePair(QString("highway"),QString("trunk"))); break; case highway_footway: Tags.append(qMakePair(QString("highway"),QString("footway"))); break; case highway_service: Tags.append(qMakePair(QString("highway"),QString("service"))); break; case highway_track: Tags.append(qMakePair(QString("highway"),QString("track"))); break; case highway_cycleway: Tags.append(qMakePair(QString("highway"),QString("cycleway"))); break; case highway_pedestrian: Tags.append(qMakePair(QString("highway"),QString("pedestrian"))); break; case highway_steps: Tags.append(qMakePair(QString("highway"),QString("steps"))); break; case highway_bridleway: Tags.append(qMakePair(QString("highway"),QString("bridleway"))); break; case railway_rail: Tags.append(qMakePair(QString("railway"),QString("rail"))); break; case railway_station: Tags.append(qMakePair(QString("railway"),QString("station"))); break; case highway_mini_roundabout: Tags.append(qMakePair(QString("highway"),QString("mini_roundabout"))); break; case highway_traffic_signals: Tags.append(qMakePair(QString("highway"),QString("traffic_signals"))); break; case highway_bus_stop: Tags.append(qMakePair(QString("highway"),QString("bus_stop"))); break; case amenity_parking: Tags.append(qMakePair(QString("amenity"),QString("parking"))); break; case amenity_fuel: Tags.append(qMakePair(QString("amenity"),QString("fuel"))); break; case amenity_school: Tags.append(qMakePair(QString("amenity"),QString("school"))); break; case place_village: Tags.append(qMakePair(QString("place"),QString("village"))); break; case place_suburb: Tags.append(qMakePair(QString("place"),QString("suburb"))); break; case shop_supermarket: Tags.append(qMakePair(QString("shop"),QString("supermarket"))); break; case religion_christian: Tags.append(qMakePair(QString("religion"),QString("christian"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_jewish: Tags.append(qMakePair(QString("religion"),QString("jewish"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_muslim: Tags.append(qMakePair(QString("religion"),QString("muslim"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case amenity_pub: Tags.append(qMakePair(QString("amenity"),QString("pub"))); break; case amenity_restaurant: Tags.append(qMakePair(QString("amenity"),QString("restaurant"))); break; case power_tower: Tags.append(qMakePair(QString("power"),QString("tower"))); break; case waterway_stream: Tags.append(qMakePair(QString("waterway"),QString("stream"))); break; case amenity_grave_yard: Tags.append(qMakePair(QString("amenity"),QString("grave_yard"))); break; case amenity_crematorium: Tags.append(qMakePair(QString("amenity"),QString("crematorium"))); break; case amenity_shelter: Tags.append(qMakePair(QString("amenity"),QString("shelter"))); break; case tourism_picnic_site: Tags.append(qMakePair(QString("tourism"),QString("picnic_site"))); break; case leisure_common: Tags.append(qMakePair(QString("leisure"),QString("common"))); break; case amenity_park_bench: Tags.append(qMakePair(QString("amenity"),QString("park_bench"))); break; case tourism_viewpoint: Tags.append(qMakePair(QString("tourism"),QString("viewpoint"))); break; case tourism_artwork: Tags.append(qMakePair(QString("tourism"),QString("artwork"))); break; case tourism_museum: Tags.append(qMakePair(QString("tourism"),QString("museum"))); break; case tourism_theme_park: Tags.append(qMakePair(QString("tourism"),QString("theme_park"))); break; case tourism_zoo: Tags.append(qMakePair(QString("tourism"),QString("zoo"))); break; case leisure_playground: Tags.append(qMakePair(QString("leisure"),QString("playground"))); break; case leisure_park: Tags.append(qMakePair(QString("leisure"),QString("park"))); break; case leisure_nature_reserve: Tags.append(qMakePair(QString("leisure"),QString("nature_reserve"))); break; case leisure_miniature_golf: Tags.append(qMakePair(QString("leisure"),QString("miniature_golf"))); break; case leisure_golf_course: Tags.append(qMakePair(QString("leisure"),QString("golf_course"))); break; case leisure_sports_centre: Tags.append(qMakePair(QString("leisure"),QString("sports_centre"))); break; case leisure_stadium: Tags.append(qMakePair(QString("leisure"),QString("stadium"))); break; case leisure_pitch: Tags.append(qMakePair(QString("leisure"),QString("pitch"))); break; case leisure_track: Tags.append(qMakePair(QString("leisure"),QString("track"))); break; case sport_athletics: Tags.append(qMakePair(QString("sport"),QString("athletics"))); break; case sport_10pin: Tags.append(qMakePair(QString("sport"),QString("10pin"))); break; case sport_boules: Tags.append(qMakePair(QString("sport"),QString("boules"))); break; case sport_bowls: Tags.append(qMakePair(QString("sport"),QString("bowls"))); break; case sport_baseball: Tags.append(qMakePair(QString("sport"),QString("baseball"))); break; case sport_basketball: Tags.append(qMakePair(QString("sport"),QString("basketball"))); break; case sport_cricket: Tags.append(qMakePair(QString("sport"),QString("cricket"))); break; case sport_cricket_nets: Tags.append(qMakePair(QString("sport"),QString("cricket_nets"))); break; case sport_croquet: Tags.append(qMakePair(QString("sport"),QString("croquet"))); break; case sport_dog_racing: Tags.append(qMakePair(QString("sport"),QString("dog_racing"))); break; case sport_equestrian: Tags.append(qMakePair(QString("sport"),QString("equestrian"))); break; case sport_football: Tags.append(qMakePair(QString("sport"),QString("football"))); break; case sport_soccer: Tags.append(qMakePair(QString("sport"),QString("soccer"))); break; case sport_climbing: Tags.append(qMakePair(QString("sport"),QString("climbing"))); break; case sport_gymnastics: Tags.append(qMakePair(QString("sport"),QString("gymnastics"))); break; case sport_hockey: Tags.append(qMakePair(QString("sport"),QString("hockey"))); break; case sport_horse_racing: Tags.append(qMakePair(QString("sport"),QString("horse_racing"))); break; case sport_motor: Tags.append(qMakePair(QString("sport"),QString("motor"))); break; case sport_pelota: Tags.append(qMakePair(QString("sport"),QString("pelota"))); break; case sport_rugby: Tags.append(qMakePair(QString("sport"),QString("rugby"))); break; case sport_australian_football: Tags.append(qMakePair(QString("sport"),QString("australian_football"))); break; case sport_skating: Tags.append(qMakePair(QString("sport"),QString("skating"))); break; case sport_skateboard: Tags.append(qMakePair(QString("sport"),QString("skateboard"))); break; case sport_handball: Tags.append(qMakePair(QString("sport"),QString("handball"))); break; case sport_table_tennis: Tags.append(qMakePair(QString("sport"),QString("table_tennis"))); break; case sport_tennis: Tags.append(qMakePair(QString("sport"),QString("tennis"))); break; case sport_racquet: Tags.append(qMakePair(QString("sport"),QString("racquet"))); break; case sport_badminton: Tags.append(qMakePair(QString("sport"),QString("badminton"))); break; case sport_paintball: Tags.append(qMakePair(QString("sport"),QString("paintball"))); break; case sport_shooting: Tags.append(qMakePair(QString("sport"),QString("shooting"))); break; case sport_volleyball: Tags.append(qMakePair(QString("sport"),QString("volleyball"))); break; case sport_beachvolleyball: Tags.append(qMakePair(QString("sport"),QString("beachvolleyball"))); break; case sport_archery: Tags.append(qMakePair(QString("sport"),QString("archery"))); break; case sport_skiing: Tags.append(qMakePair(QString("sport"),QString("skiing"))); break; case sport_rowing: Tags.append(qMakePair(QString("sport"),QString("rowing"))); break; case sport_sailing: Tags.append(qMakePair(QString("sport"),QString("sailing"))); break; case sport_diving: Tags.append(qMakePair(QString("sport"),QString("diving"))); break; case sport_swimming: Tags.append(qMakePair(QString("sport"),QString("swimming"))); break; case leisure_swimming_pool: Tags.append(qMakePair(QString("leisure"),QString("swimming_pool"))); break; case leisure_water_park: Tags.append(qMakePair(QString("leisure"),QString("water_park"))); break; case leisure_marina: Tags.append(qMakePair(QString("leisure"),QString("marina"))); break; case leisure_slipway: Tags.append(qMakePair(QString("leisure"),QString("slipway"))); break; case leisure_fishing: Tags.append(qMakePair(QString("leisure"),QString("fishing"))); break; case shop_bakery: Tags.append(qMakePair(QString("shop"),QString("bakery"))); break; case shop_butcher: Tags.append(qMakePair(QString("shop"),QString("butcher"))); break; case shop_florist: Tags.append(qMakePair(QString("shop"),QString("florist"))); break; case shop_groceries: Tags.append(qMakePair(QString("shop"),QString("groceries"))); break; case shop_beverages: Tags.append(qMakePair(QString("shop"),QString("beverages"))); break; case shop_clothes: Tags.append(qMakePair(QString("shop"),QString("clothes"))); break; case shop_shoes: Tags.append(qMakePair(QString("shop"),QString("shoes"))); break; case shop_jewelry: Tags.append(qMakePair(QString("shop"),QString("jewelry"))); break; case shop_books: Tags.append(qMakePair(QString("shop"),QString("books"))); break; case shop_newsagent: Tags.append(qMakePair(QString("shop"),QString("newsagent"))); break; case shop_furniture: Tags.append(qMakePair(QString("shop"),QString("furniture"))); break; case shop_hifi: Tags.append(qMakePair(QString("shop"),QString("hifi"))); break; case shop_electronics: Tags.append(qMakePair(QString("shop"),QString("electronics"))); break; case shop_computer: Tags.append(qMakePair(QString("shop"),QString("computer"))); break; case shop_video: Tags.append(qMakePair(QString("shop"),QString("video"))); break; case shop_toys: Tags.append(qMakePair(QString("shop"),QString("toys"))); break; case shop_motorcycle: Tags.append(qMakePair(QString("shop"),QString("motorcycle"))); break; case shop_car_repair: Tags.append(qMakePair(QString("shop"),QString("car_repair"))); break; case shop_doityourself: Tags.append(qMakePair(QString("shop"),QString("doityourself"))); break; case shop_garden_centre: Tags.append(qMakePair(QString("shop"),QString("garden_centre"))); break; case shop_outdoor: Tags.append(qMakePair(QString("shop"),QString("outdoor"))); break; case shop_bicycle: Tags.append(qMakePair(QString("shop"),QString("bicycle"))); break; case shop_dry_cleaning: Tags.append(qMakePair(QString("shop"),QString("dry_cleaning"))); break; case shop_laundry: Tags.append(qMakePair(QString("shop"),QString("laundry"))); break; case shop_hairdresser: Tags.append(qMakePair(QString("shop"),QString("hairdresser"))); break; case shop_travel_agency: Tags.append(qMakePair(QString("shop"),QString("travel_agency"))); break; case shop_convenience: Tags.append(qMakePair(QString("shop"),QString("convenience"))); break; case shop_mall: Tags.append(qMakePair(QString("shop"),QString("mall"))); break; case shop_department_store: Tags.append(qMakePair(QString("shop"),QString("department_store"))); break; case amenity_biergarten: Tags.append(qMakePair(QString("amenity"),QString("biergarten"))); break; case amenity_nightclub: Tags.append(qMakePair(QString("amenity"),QString("nightclub"))); break; case amenity_bar: Tags.append(qMakePair(QString("amenity"),QString("bar"))); break; case amenity_cafe: Tags.append(qMakePair(QString("amenity"),QString("cafe"))); break; case amenity_fast_food: Tags.append(qMakePair(QString("amenity"),QString("fast_food"))); break; case amenity_ice_cream: Tags.append(qMakePair(QString("amenity"),QString("ice_cream"))); break; case amenity_bicycle_rental: Tags.append(qMakePair(QString("amenity"),QString("bicycle_rental"))); break; case amenity_car_rental: Tags.append(qMakePair(QString("amenity"),QString("car_rental"))); break; case amenity_car_sharing: Tags.append(qMakePair(QString("amenity"),QString("car_sharing"))); break; case amenity_car_wash: Tags.append(qMakePair(QString("amenity"),QString("car_wash"))); break; case amenity_taxi: Tags.append(qMakePair(QString("amenity"),QString("taxi"))); break; case amenity_telephone: Tags.append(qMakePair(QString("amenity"),QString("telephone"))); break; case amenity_post_office: Tags.append(qMakePair(QString("amenity"),QString("post_office"))); break; case amenity_post_box: Tags.append(qMakePair(QString("amenity"),QString("post_box"))); break; case tourism_information: Tags.append(qMakePair(QString("tourism"),QString("information"))); break; case amenity_toilets: Tags.append(qMakePair(QString("amenity"),QString("toilets"))); break; case amenity_recycling: Tags.append(qMakePair(QString("amenity"),QString("recycling"))); break; case amenity_fire_station: Tags.append(qMakePair(QString("amenity"),QString("fire_station"))); break; case amenity_police: Tags.append(qMakePair(QString("amenity"),QString("police"))); break; case amenity_courthouse: Tags.append(qMakePair(QString("amenity"),QString("courthouse"))); break; case amenity_prison: Tags.append(qMakePair(QString("amenity"),QString("prison"))); break; case amenity_public_building: Tags.append(qMakePair(QString("amenity"),QString("public_building"))); break; case amenity_townhall: Tags.append(qMakePair(QString("amenity"),QString("townhall"))); break; case amenity_cinema: Tags.append(qMakePair(QString("amenity"),QString("cinema"))); break; case amenity_arts_centre: Tags.append(qMakePair(QString("amenity"),QString("arts_centre"))); break; case amenity_theatre: Tags.append(qMakePair(QString("amenity"),QString("theatre"))); break; case tourism_hotel: Tags.append(qMakePair(QString("tourism"),QString("hotel"))); break; case tourism_motel: Tags.append(qMakePair(QString("tourism"),QString("motel"))); break; case tourism_guest_house: Tags.append(qMakePair(QString("tourism"),QString("guest_house"))); break; case tourism_hostel: Tags.append(qMakePair(QString("tourism"),QString("hostel"))); break; case tourism_chalet: Tags.append(qMakePair(QString("tourism"),QString("chalet"))); break; case tourism_camp_site: Tags.append(qMakePair(QString("tourism"),QString("camp_site"))); break; case tourism_caravan_site: Tags.append(qMakePair(QString("tourism"),QString("caravan_site"))); break; case amenity_pharmacy: Tags.append(qMakePair(QString("amenity"),QString("pharmacy"))); break; case amenity_dentist: Tags.append(qMakePair(QString("amenity"),QString("dentist"))); break; case amenity_doctor: Tags.append(qMakePair(QString("amenity"),QString("doctor"))); break; case amenity_hospital: Tags.append(qMakePair(QString("amenity"),QString("hospital"))); break; case amenity_bank: Tags.append(qMakePair(QString("amenity"),QString("bank"))); break; case amenity_bureau_de_change: Tags.append(qMakePair(QString("amenity"),QString("bureau_de_change"))); break; case amenity_atm: Tags.append(qMakePair(QString("amenity"),QString("atm"))); break; case amenity_drinking_water: Tags.append(qMakePair(QString("amenity"),QString("drinking_water"))); break; case amenity_fountain: Tags.append(qMakePair(QString("amenity"),QString("fountain"))); break; case natural_spring: Tags.append(qMakePair(QString("natural"),QString("spring"))); break; case amenity_university: Tags.append(qMakePair(QString("amenity"),QString("university"))); break; case amenity_college: Tags.append(qMakePair(QString("amenity"),QString("college"))); break; case amenity_kindergarten: Tags.append(qMakePair(QString("amenity"),QString("kindergarten"))); break; case highway_living_street: Tags.append(qMakePair(QString("highway"),QString("living_street"))); break; case highway_motorway: Tags.append(qMakePair(QString("highway"),QString("motorway"))); break; case highway_motorway_link: Tags.append(qMakePair(QString("highway"),QString("motorway_link"))); break; case highway_trunk_link: Tags.append(qMakePair(QString("highway"),QString("trunk_link"))); break; case highway_primary_link: Tags.append(qMakePair(QString("highway"),QString("primary_link"))); break; case barrier_bollard: Tags.append(qMakePair(QString("barrier"),QString("bollard"))); break; case barrier_gate: Tags.append(qMakePair(QString("barrier"),QString("gate"))); break; case barrier_stile: Tags.append(qMakePair(QString("barrier"),QString("stile"))); break; case barrier_cattle_grid: Tags.append(qMakePair(QString("barrier"),QString("cattle_grid"))); break; case barrier_toll_booth: Tags.append(qMakePair(QString("barrier"),QString("toll_booth"))); break; case man_made_beacon: Tags.append(qMakePair(QString("man_made"),QString("beacon"))); break; case man_made_survey_point: Tags.append(qMakePair(QString("man_made"),QString("survey_point"))); break; case man_made_tower: Tags.append(qMakePair(QString("man_made"),QString("tower"))); break; case man_made_water_tower: Tags.append(qMakePair(QString("man_made"),QString("water_tower"))); break; case man_made_gasometer: Tags.append(qMakePair(QString("man_made"),QString("gasometer"))); break; case man_made_reservoir_covered: Tags.append(qMakePair(QString("man_made"),QString("reservoir_covered"))); break; case man_made_lighthouse: Tags.append(qMakePair(QString("man_made"),QString("lighthouse"))); break; case man_made_windmill: Tags.append(qMakePair(QString("man_made"),QString("windmill"))); break; case man_made_pier: Tags.append(qMakePair(QString("man_made"),QString("pier"))); break; case man_made_pipeline: Tags.append(qMakePair(QString("man_made"),QString("pipeline"))); break; case man_made_wastewater_plant: Tags.append(qMakePair(QString("man_made"),QString("wastewater_plant"))); break; case man_made_crane: Tags.append(qMakePair(QString("man_made"),QString("crane"))); break; case building_yes: Tags.append(qMakePair(QString("building"),QString("yes"))); break; case landuse_forest: Tags.append(qMakePair(QString("landuse"),QString("forest"))); break; case landuse_residential: Tags.append(qMakePair(QString("landuse"),QString("residential"))); break; case landuse_industrial: Tags.append(qMakePair(QString("landuse"),QString("industrial"))); break; case landuse_retail: Tags.append(qMakePair(QString("landuse"),QString("retail"))); break; case landuse_commercial: Tags.append(qMakePair(QString("landuse"),QString("commercial"))); break; case landuse_construction: Tags.append(qMakePair(QString("landuse"),QString("construction"))); break; case landuse_reservoir: Tags.append(qMakePair(QString("landuse"),QString("reservoir"))); break; case natural_water: Tags.append(qMakePair(QString("natural"),QString("water"))); break; case landuse_basin: Tags.append(qMakePair(QString("landuse"),QString("basin"))); break; case landuse_landfill: Tags.append(qMakePair(QString("landuse"),QString("landfill"))); break; case landuse_quarry: Tags.append(qMakePair(QString("landuse"),QString("quarry"))); break; case landuse_cemetery: Tags.append(qMakePair(QString("landuse"),QString("cemetery"))); break; case landuse_allotments: Tags.append(qMakePair(QString("landuse"),QString("allotments"))); break; case landuse_farm: Tags.append(qMakePair(QString("landuse"),QString("farm"))); break; case landuse_farmyard: Tags.append(qMakePair(QString("landuse"),QString("farmyard"))); break; case landuse_military: Tags.append(qMakePair(QString("landuse"),QString("military"))); break; case religion_bahai: Tags.append(qMakePair(QString("religion"),QString("bahai"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_buddhist: Tags.append(qMakePair(QString("religion"),QString("buddhist"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_hindu: Tags.append(qMakePair(QString("religion"),QString("hindu"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_jain: Tags.append(qMakePair(QString("religion"),QString("jain"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_sikh: Tags.append(qMakePair(QString("religion"),QString("sikh"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_shinto: Tags.append(qMakePair(QString("religion"),QString("shinto"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case religion_taoist: Tags.append(qMakePair(QString("religion"),QString("taoist"))); Tags.append(qMakePair(QString("amenity"),QString("place_of_worship"))); break; case highway_road: Tags.append(qMakePair(QString("highway"),QString("road"))); break; case restriction_no_right_turn: Tags.append(qMakePair(QString("restriction"),QString("no_right_turn"))); break; case restriction_no_left_turn: Tags.append(qMakePair(QString("restriction"),QString("no_left_turn"))); break; case restriction_no_u_turn: Tags.append(qMakePair(QString("restriction"),QString("no_u_turn"))); break; case restriction_no_straight_on: Tags.append(qMakePair(QString("restriction"),QString("no_straight_on"))); break; case restriction_only_right_turn: Tags.append(qMakePair(QString("restriction"),QString("only_right_turn"))); break; case restriction_only_left_turn: Tags.append(qMakePair(QString("restriction"),QString("only_left_turn"))); break; case restriction_only_straight_on: Tags.append(qMakePair(QString("restriction"),QString("only_straight_on"))); break; } } int GosmoreFeature::tagSize() const { return Tags.size(); } QString GosmoreFeature::tagValue(int i) const { return Tags[i].second; } QString GosmoreFeature::tagKey(int i) const { return Tags[i].first; } int GosmoreFeature::findKey(const QString &k) const { for (int i=0; i<Tags.size(); ++i) if (Tags[i].first == k) return i; return Tags.size(); } QString GosmoreFeature::tagValue(const QString& k, const QString& Default) const { for (int i=0; i<Tags.size(); ++i) if (Tags[i].first == k) return Tags[i].second; return Default; } �������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/GosmoreFeature.h����������������������������0000664�0000000�0000000�00000005523�11770671653�0026422�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef GOSMOREFEATURE_H #define GOSMOREFEATURE_H #include "IFeature.h" #include "libgosm.h" #include <QPair> #include <QPainterPath> class GosmoreFeature : public IFeature { public: GosmoreFeature(int stylenr); virtual char getType() const { return IFeature::All; } virtual QString xmlId() const { return QString(); } virtual const QDateTime& time() const { return QDateTime::currentDateTime(); } virtual int versionNumber() const { return -1; } virtual const QString& user() const { return QString(); } virtual int sizeParents() const { return 0; } virtual IFeature* getParent(int) { return NULL; } virtual const IFeature* getParent(int) const { return NULL; } virtual bool hasPainter(double) const { return false; } /** Give the id of the feature. * If the feature has no id, a random id is generated * @return the id of the current feature */ virtual const IFeature::FId& id() const {return theId;} /** check if the feature is logically deleted * @return true if logically deleted */ virtual bool isDeleted() const { return false; } /** @return the number of tags for the current object */ virtual int tagSize() const; /** if a tag with the key "k" exists, return its index. * if the key doesn't exist, return the number of tags * @return index of tag */ virtual int findKey(const QString& k) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagValue(int i) const; /** return the value of the tag with the key "k". * if such a tag doesn't exists, return Default. * @return value or Default */ virtual QString tagValue(const QString& k, const QString& Default) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagKey(int i) const; /** check if the feature has been uploaded * @return true if uploaded */ virtual bool isUploaded() const { return false; } /** check if the dirty status of the feature * @return true if the feature is dirty */ virtual bool isDirty() const { return false; } /** check if the feature is visible * @return true if visible */ virtual bool isVisible() { return true; } /** check if the feature is read-only * @return true if is read-only */ virtual bool isReadonly() { return true; } virtual const QPainterPath& getPath() const {return thePath;} protected: QList<QPair<QString, QString> > Tags; IFeature::FId theId; QPainterPath thePath; }; #endif // GOSMOREFEATURE_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/MGosmoreBackground.pri����������������������0000664�0000000�0000000�00000000465�11770671653�0027566�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������HEADERS += \ IMapAdapter.h \ IImageManager.h \ GosmoreAdapter.h \ libgosm.h \ GosmoreFeature.h SOURCES += \ Utils/TagSelector.cpp \ Utils/SvgCache.cpp \ GosmoreAdapter.cpp \ libgosm.cpp \ GosmoreFeature.cpp DEFINES += NOGTK RESOURCES += \ MGosmoreBackground.qrc �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/MGosmoreBackground.pro����������������������0000664�0000000�0000000�00000001100�11770671653�0027557�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) QT += network xml svg TARGET = $$qtLibraryTarget(MGosmoreBackgroundPlugin) INCLUDEPATH += $$MERKAARTOR_SRC_DIR/src DEPENDPATH += $$MERKAARTOR_SRC_DIR/src INCLUDEPATH += $$MERKAARTOR_SRC_DIR/src/PaintStyle $$MERKAARTOR_SRC_DIR/src/Utils DEPENDPATH += $$MERKAARTOR_SRC_DIR/src/PaintStyle $$MERKAARTOR_SRC_DIR/src/Utils include(../../../src/PaintStyle/PaintStyle.pri) include(MGosmoreBackground.pri) COMMON_DIR=$${MERKAARTOR_SRC_DIR}/binaries win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/MGosmoreBackground.qrc����������������������0000664�0000000�0000000�00000000202�11770671653�0027546�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/Styles"> <file alias="Mapnik.mas">../../../Styles/Mapnik.mas</file> </qresource> </RCC> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/libgosm.cpp���������������������������������0000664�0000000�0000000�00000101163�11770671653�0025457�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef _WIN32 #include <sys/mman.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #else #include <windows.h> #endif #include <stdio.h> #include <unistd.h> #include <vector> #include <deque> #include <string> #include <map> #include <assert.h> #include <float.h> using namespace std; #include "libgosm.h" routeNodeType *route = NULL, *shortest = NULL; routeHeapType *routeHeap; long dhashSize, dLength; int routeHeapSize, tlat, tlon, flat, flon, rlat, rlon, routeHeapMaxSize; int *hashTable, bucketsMin1, pakHead = 0xEB3A943, routeSuccess = FALSE; char *gosmData, *gosmSstr[searchCnt]; ndType *ndBase; styleStruct *style; int stylecount; wayType *gosmSway[searchCnt]; // store the maximum speeds (over all waytypes) of each vehicle type int TagCmp (const char *a, const char *b) { // This works like the ordering of books in a library : We ignore // meaningless words like "the", "street" and "north". We (should) also map // deprecated words to their new words, like petrol to fuel // TODO : We should consider an algorithm like double metasound. static const char *omit[] = { /* "the", in the middle of a name ?? */ "ave", "avenue", "blvd", "boulevard", "byp", "bypass", "cir", "circle", "close", "cres", "crescent", "ct", "court", "ctr", "center", "dr", "drive", "hwy", "highway", "ln", "lane", "loop", "pass", "pky", "parkway", "pl", "place", "plz", "plaza", /* "run" */ "rd", "road", "sq", "square", "st", "street", "ter", "terrace", "tpke", "turnpike", /*trce, trace, trl, trail */ "walk", "way" }; static const char *words[] = { "", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "nineth", "tenth", "eleventh", "twelth", "thirteenth", "fourteenth", "fifthteenth", "sixteenth", "seventeenth", "eighteenth", "nineteenth", "twentieth" }; static const char *teens[] = { "", "", "twenty ", "thirty ", "fourty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety " }; if (strncasecmp (a, "the ", 4) == 0) a += 4; else if (strncasecmp (a, "rue ", 4) == 0) a += 4; else if (strncasecmp (a, "avenue ", 7) == 0) a += 7; else if (strncasecmp (a, "boulevard ", 10) == 0) a += 10; if (strncasecmp (a, "de ", 3) == 0) a += 3; if (strncasecmp (b, "the ", 4) == 0) b += 4; else if (strncasecmp (b, "rue ", 4) == 0) b += 4; else if (strncasecmp (b, "avenue ", 7) == 0) b += 7; else if (strncasecmp (b, "boulevard ", 10) == 0) b += 10; if (strncasecmp (b, "de ", 3) == 0) b += 3; if (strchr ("WEST", a[0]) && a[1] == ' ') a += 2; // e.g. N 21st St if (strchr ("WEST", b[0]) && b[1] == ' ') b += 2; for (;;) { char n[2][30] = { "", "" }; const char *ptr[2]; int wl[2]; for (int i = 0; i < 2; i++) { const char **p = i ? &b : &a; if ((*p)[0] == ' ') { for (int i = 0; i < int (sizeof (omit) / sizeof (omit[0])); i++) { if (strncasecmp (*p + 1, omit[i], strlen (omit[i])) == 0 && !isalpha ((*p)[1 + strlen (omit[i])])) { (*p) += 1 + strlen (omit[i]); break; } } } if (isdigit (**p) && (!isdigit((*p)[1]) || !isdigit ((*p)[2])) /* && isalpha (*p + strcspn (*p, "0123456789"))*/) { // while (atoi (*p) > 99) (*p)++; // Buggy if (atoi (*p) > 20) strcpy (n[i], teens[atoi ((*p)++) / 10]); strcat (n[i], words[atoi (*p)]); while (isdigit (**p) /*|| isalpha (**p)*/) (*p)++; ptr[i] = n[i]; wl[i] = strlen (n[i]); } else { ptr[i] = *p; wl[i] = **p == ' ' ? 1 : strcspn (*p , " \n"); } } int result = strncasecmp (ptr[0], ptr[1], wl[0] < wl[1] ? wl[1] : wl[0]); if (result || *ptr[0] == '\0' || *ptr[0] == '\n') return result; if (n[0][0] == '\0') a += wl[1]; // In case b was 21st if (n[1][0] == '\0') b += wl[0]; // In case a was 32nd } } /* 1. Bsearch idx such that ZEnc (way[idx]) < ZEnc (clon/lat) < ZEnc (way[idx+1]) 2. Fill the list with ways around idx. 3. Now there's a circle with clon/clat as its centre and that runs through the worst way just found. Let's say it's diameter is d. There exist 4 Z squares smaller that 2d by 2d that cover this circle. Find them with binary search and search through them for the nearest ways. The worst case is when the nearest nodes are far along a relatively straight line. */ int *GosmIdxSearch (const char *key, unsigned z) { int *idx = (int *)(ndBase + hashTable[bucketsMin1 + (bucketsMin1 >> 7) + 2]); for (int l = 0, h = hashTable - idx; ;) { char *tag = gosmData + idx[(h + l) / 2]; int diff = TagCmp (tag, key); while (*--tag) {} if (diff > 0 || (diff == 0 && ZEnc ((unsigned)((wayType *)tag)[-1].clat >> 16, (unsigned)((wayType *)tag)[-1].clon >> 16) >= z)) h = (h + l) / 2; else l = (h + l) / 2 + 1; if (l >= h) return idx + h; } } void GosmSearch (int clon, int clat, const char *key) { __int64 dista[searchCnt]; int *idx = (int *)(ndBase + hashTable[bucketsMin1 + (bucketsMin1 >> 7) + 2]); int l = GosmIdxSearch (key, 0) - idx, count; // char *lastName = data + idx[min (hashTable - idx), // int (sizeof (gosmSway) / sizeof (gosmSway[0]))) + l - 1]; int cz = ZEnc ((unsigned) clat >> 16, (unsigned) clon >> 16); for (count = 0; count + l < hashTable - idx && count < searchCnt;) { int m[2], c = count, ipos, dir, bits; m[0] = GosmIdxSearch (gosmData + idx[count + l], cz) - idx; m[1] = m[0] - 1; __int64 distm[2] = { -1, -1 }, big = ((unsigned __int64) 1 << 63) - 1; while (c < searchCnt && (distm[0] < big || distm[1] < big)) { dir = distm[0] < distm[1] ? 0 : 1; if (distm[dir] != -1) { for (ipos = c; count < ipos && distm[dir] < dista[ipos - 1]; ipos--) { dista[ipos] = dista[ipos - 1]; gosmSway[ipos] = gosmSway[ipos - 1]; gosmSstr[ipos] = gosmSstr[ipos - 1]; } char *tag = gosmData + idx[m[dir]]; gosmSstr[ipos] = tag; while (*--tag) {} gosmSway[ipos] = (wayType*)tag - 1; dista[ipos] = distm[dir]; c++; } m[dir] += dir ? 1 : -1; if (0 <= m[dir] && m[dir] < hashTable - idx && TagCmp (gosmData + idx[m[dir]], gosmData + idx[count + l]) == 0) { char *tag = gosmData + idx[m[dir]]; while (*--tag) {} distm[dir] = Sqr ((__int64)(clon - ((wayType*)tag)[-1].clon)) + Sqr ((__int64)(clat - ((wayType*)tag)[-1].clat)); } else distm[dir] = big; } if (count == c) break; // Something's wrong. idx[count + l] not found ! if (c >= searchCnt) { c = count; // Redo the adding for (bits = 0; bits < 16 && dista[searchCnt - 1] >> (bits * 2 + 32); bits++) {} /* Print Z's for first solution for (int j = c; j < searchCnt; j++) { for (int i = 0; i < 32; i++) printf ("%d%s", (ZEnc ((unsigned) gosmSway[j]->clat >> 16, (unsigned) gosmSway[j]->clon >> 16) >> (31 - i)) & 1, i == 31 ? " y\n" : i % 2 ? " " : ""); } */ /* Print centre, up, down, right and left to see if they're in the square for (int i = 0; i < 32; i++) printf ("%d%s", (cz >> (31 - i)) & 1, i == 31 ? " x\n" : i % 2 ? " " : ""); for (int i = 0; i < 32; i++) printf ("%d%s", ( ZEnc ((unsigned)(clat + (int) sqrt (dista[searchCnt - 1])) >> 16, (unsigned)clon >> 16) >> (31 - i)) & 1, i == 31 ? " x\n" : i % 2 ? " " : ""); for (int i = 0; i < 32; i++) printf ("%d%s", ( ZEnc ((unsigned)(clat - (int) sqrt (dista[searchCnt - 1])) >> 16, (unsigned)clon >> 16) >> (31 - i)) & 1, i == 31 ? " x\n" : i % 2 ? " " : ""); for (int i = 0; i < 32; i++) printf ("%d%s", ( ZEnc ((unsigned)clat >> 16, (unsigned)(clon + (int) sqrt (dista[searchCnt - 1])) >> 16) >> (31 - i)) & 1, i == 31 ? " x\n" : i % 2 ? " " : ""); for (int i = 0; i < 32; i++) printf ("%d%s", ( ZEnc ((unsigned)clat >> 16, (unsigned)(clon - (int) sqrt (dista[searchCnt - 1])) >> 16) >> (31 - i)) & 1, i == 31 ? " x\n" : i % 2 ? " " : ""); */ int swap = cz ^ ZEnc ( (unsigned) (clat + (clat & (1 << (bits + 16))) * 4 - (2 << (bits + 16))) >> 16, (unsigned) (clon + (clon & (1 << (bits + 16))) * 4 - (2 << (bits + 16))) >> 16); // Now we search through the 4 squares around (clat, clon) for (int mask = 0, maskI = 0; maskI < 4; mask += 0x55555555, maskI++) { int s = GosmIdxSearch (gosmData + idx[count + l], (cz ^ (mask & swap)) & ~((4 << (bits << 1)) - 1)) - idx; /* Print the square for (int i = 0; i < 32; i++) printf ("%d%s", (((cz ^ (mask & swap)) & ~((4 << (bits << 1)) - 1)) >> (31 - i)) & 1, i == 31 ? "\n" : i % 2 ? " " : ""); for (int i = 0; i < 32; i++) printf ("%d%s", (((cz ^ (mask & swap)) | ((4 << (bits << 1)) - 1)) >> (31 - i)) & 1, i == 31 ? "\n" : i % 2 ? " " : ""); */ for (;;) { char *tag = gosmData + idx[s++]; if (TagCmp (gosmData + idx[count + l], tag) != 0) break; while (*--tag) {} wayType *w = (wayType*)tag - 1; if ((ZEnc ((unsigned)w->clat >> 16, (unsigned) w->clon >> 16) ^ cz ^ (mask & swap)) >> (2 + (bits << 1))) break; __int64 d = Sqr ((__int64)(w->clat - clat)) + Sqr ((__int64)(w->clon - clon)); if (count < searchCnt || d < dista[count - 1]) { if (count < searchCnt) count++; for (ipos = count - 1; ipos > c && d < dista[ipos - 1]; ipos--) { dista[ipos] = dista[ipos - 1]; gosmSway[ipos] = gosmSway[ipos - 1]; gosmSstr[ipos] = gosmSstr[ipos - 1]; } gosmSway[ipos] = w; dista[ipos] = d; gosmSstr[ipos] = gosmData + idx[s - 1]; } } // For each entry in the square } // For each of the 4 squares break; // count < searchCnt implies a bug. Don't loop infinitely. } // If the search list is filled by tags with this text count = c; } // For each for (int k = count; k < searchCnt; k++) gosmSstr[k] = NULL; } /*------------------------------- OsmItr --------------------------------*/ int Next (OsmItr &itr) /* Friend of osmItr */ { do { itr.nd[0]++; while (itr.nd[0] >= itr.end) { if ((itr.slon += itr.tsize) == itr.right) { itr.slon = itr.left; /* Here we wrap around from N85 to S85 ! */ if ((itr.slat += itr.tsize) == itr.bottom) return FALSE; } int bucket = Hash (itr.slon, itr.slat, itr.tsize != TILESIZE); itr.nd[0] = ndBase + hashTable[bucket]; itr.end = ndBase + hashTable[bucket + 1]; } } while (((itr.nd[0]->lon ^ itr.slon) & (~(itr.tsize - 1))) || ((itr.nd[0]->lat ^ itr.slat) & (~(itr.tsize - 1)))); /* ((itr.hs[1] = (halfSegType *) (data + itr.hs[0]->other)) > itr.hs[0] && itr.left <= itr.hs[1]->lon && itr.hs[1]->lon < itr.right && itr.top <= itr.hs[1]->lat && itr.hs[1]->lat < itr.bottom)); */ /* while nd[0] is a hash collision, */ return TRUE; } /* Routing starts at the 'to' point and moves to the 'from' point. This will help when we do in car navigation because the 'from' point will change often while the 'to' point stays fixed, so we can keep the array of nodes. It also makes the generation of the directions easier. We use "double hashing" to keep track of the shortest distance to each node. So we guess an upper limit for the number of nodes that will be considered and then multiply by a few so that there won't be too many clashes. For short distances we allow for dense urban road networks, but beyond a certain point there is bound to be farmland or seas. We call nodes that recently had their "best" increased "active". The active nodes are stored in a heap so that we can quickly find the most promissing one. OSM nodes are not our "graph-theor"etic nodes. Our "graph-theor"etic nodes are "states", namely the ability to reach nd directly from nd->other[dir] */ #ifdef ROUTE_CALIBRATE int routeAddCnt; #define ROUTE_SET_ADDND_COUNT(x) routeAddCnt = (x) #define ROUTE_SHOW_STATS printf ("%d / %d\n", routeAddCnt, dhashSize); \ fprintf (stderr, "flat=%lf&flon=%lf&tlat=%lf&tlon=%lf&fast=%d&v=motorcar\n", \ LatInverse (flat), LonInverse (flon), LatInverse (tlat), \ LonInverse (tlon), fast) // This ratio must be around 0.5. Close to 0 or 1 is bad #else #define ROUTE_SET_ADDND_COUNT(x) #define ROUTE_SHOW_STATS #endif static ndType *endNd[2] = { NULL, NULL}, from; static int toEndNd[2][2]; void GosmFreeRoute (void) { if (route) { #ifndef _WIN32 munmap (route, (sizeof (*route)) * dhashSize); #else free (route); #endif free (routeHeap); route = NULL; } routeSuccess = FALSE; } routeNodeType *AddNd (ndType *nd, int dir, int cost, routeNodeType *newshort) { /* This function is called when we find a valid route that consists of the segments (hs, hs->other), (newshort->hs, newshort->hs->other), (newshort->shortest->hs, newshort->shortest->hs->other), .., 'to' with cost 'cost'. When cost is -1, this function just returns the entry for nd without modifying anything. */ if (nd->lat == INT_MIN) return NULL; // Nodes missing from OSM-XML unsigned i = 0, hash = (intptr_t) nd / 10 + dir; routeNodeType *n; //if ((routeHeapSize & 0xff) == 0) printf ("%d %d\n", dhashSize, routeHeapSize); do { if (i++ > 10) { //fprintf (stderr, "Double hash bailout : Table full. %9d %p\n", // routeHeapSize, nd); // If you get the return NULL; } n = route + (/*(hash >> 16) ^ */hash) % dhashSize; hash -= hash << 6; hash ^= hash >> 17; hash -= hash << 9; hash ^= hash << 4; hash -= hash << 3; hash ^= hash << 10; hash ^= hash >> 15; // hash = (unsigned) (hash * (__int64) 1664525 + 1013904223); if (n->nd == NULL) { /* First visit of this node */ if (cost < 0) return NULL; if (routeHeapSize >= routeHeapMaxSize) { //printf ("Route Heap too big\n"); return NULL; } n->nd = nd; routeHeap[routeHeapSize].best = 0x7fffffff; /* Will do later : routeHeap[routeHeapSize].r = n; */ n->heapIdx = routeHeapSize++; n->dir = dir; n->remain = lrint (sqrt (Sqr ((__int64)(nd->lat - rlat)) + Sqr ((__int64)(nd->lon - rlon)))); if (!shortest || n->remain < shortest->remain) shortest = n; ROUTE_SET_ADDND_COUNT (routeAddCnt + 1); } } while (n->nd != nd || n->dir != dir); routeHeapType h; h.r = n; h.best = cost + n->remain - (!newshort ? 0 : newshort->heapIdx < 0 ? newshort->remain + newshort->heapIdx : newshort->remain - routeHeap[newshort->heapIdx].best); // TODO make sure newshort is never in the heap and exploit it. if (cost >= 0 && (n->heapIdx < 0 ? -n->heapIdx : routeHeap[n->heapIdx].best) > h.best) { n->shortest = newshort; if (n->heapIdx < 0) n->heapIdx = routeHeapSize++; for (; n->heapIdx > 1 && h.best < routeHeap[n->heapIdx / 2].best; n->heapIdx /= 2) { memcpy (routeHeap + n->heapIdx, routeHeap + n->heapIdx / 2, sizeof (*routeHeap)); routeHeap[n->heapIdx].r->heapIdx = n->heapIdx; } memcpy (&routeHeap[n->heapIdx], &h, sizeof (routeHeap[n->heapIdx])); } return n; } inline int IsOneway (wayType *w, int Vehicle) { return Vehicle != footR && (w->bits & (1 << (Vehicle == bicycleR ? bicycleOneway : onewayR))); //!((Vehicle == footR || Vehicle == bicycleR) && // (w->bits & (1 << motorcarR))) && (w->bits & (1<<onewayR)); } // left-hand drive country aproximate bounding boxes static const int lhtBbox[][4] = { { Longitude (10.2), Latitude (-85.0), Longitude (42.1), Latitude (4.7) }, // Africa. Not correct for Angola, DRC and a few other poor countries. { Longitude (-14.11), Latitude (49.83), Longitude (1.84), Latitude (60.03) }, // UK & IE { Longitude (68.0), Latitude (0.0), Longitude (90.2), Latitude (31.4) }, // India & Sri Lanka { Longitude (9.3), Latitude (-85.0), Longitude (179.0), Latitude (19.1) }, // Aus, NZ, Indonesia, Malazia, Thailand. { Longitude (129.55), Latitude (18.0), Longitude (145.84), Latitude (45.55) } // Japan }; static int lht = FALSE, Vehicle, fast; void Route (int recalculate, int plon, int plat, int _vehicle, int _fast) { /* Recalculate is faster but only valid if 'to', 'Vehicle' and 'fast' did not change */ /* We start by finding the segment that is closest to 'from' and 'to' */ ROUTE_SET_ADDND_COUNT (0); shortest = NULL; routeSuccess = FALSE; Vehicle = _vehicle; fast = _fast; for (int i = recalculate ? 0 : 1; i < 2; i++) { int lon = i ? flon : tlon, lat = i ? flat : tlat; __int64 bestd = (__int64) 1 << 62; /* find min (Sqr (distance)). Use long long so we don't loose accuracy */ OsmItr itr (lon - 100000, lat - 100000, lon + 100000, lat + 100000); /* Search 1km x 1km around 'from' for the nearest segment to it */ while (Next (itr)) { // We don't do for (int dir = 0; dir < 1; dir++) { // because if our search box is large enough, it will also give us // the other node. if (!(Way (itr.nd[0])->bits & (1 << Vehicle))) { continue; } if (itr.nd[0]->other[0] == 0) continue; __int64 lon0 = lon - itr.nd[0]->lon, lat0 = lat - itr.nd[0]->lat, lon1 = lon - (itr.nd[0] + itr.nd[0]->other[0])->lon, lat1 = lat - (itr.nd[0] + itr.nd[0]->other[0])->lat, dlon = lon1 - lon0, dlat = lat1 - lat0; /* We use Pythagoras to test angles for being greater that 90 and consequently if the point is behind hs[0] or hs[1]. If the point is "behind" hs[0], measure distance to hs[0] with Pythagoras. If it's "behind" hs[1], use Pythagoras to hs[1]. If neither, use perpendicular distance from a point to a line */ int segLen = lrint (sqrt ((double)(Sqr(dlon) + Sqr (dlat)))); __int64 d = dlon * lon0 >= - dlat * lat0 ? Sqr (lon0) + Sqr (lat0) : dlon * lon1 <= - dlat * lat1 ? Sqr (lon1) + Sqr (lat1) : Sqr ((dlon * lat1 - dlat * lon1) / segLen); wayType *w = Way (itr.nd[0]); if (i) { // For 'from' we take motion into account __int64 motion = segLen ? 3 * (dlon * plon + dlat * plat) / segLen : 0; // What is the most appropriate multiplier for motion ? if (motion > 0 && IsOneway (w, Vehicle)) d += Sqr (motion); else d -= Sqr (motion); // Is it better to say : // d = lrint (sqrt ((double) d)); // if (motion < 0 || IsOneway (w)) d += motion; // else d -= motion; } if (d < bestd) { bestd = d; double invSpeed = !fast ? 1.0 : Style (w)->invSpeed[Vehicle]; //printf ("%d %lf\n", i, invSpeed); toEndNd[i][0] = lrint (sqrt ((double)(Sqr (lon0) + Sqr (lat0))) * invSpeed); toEndNd[i][1] = lrint (sqrt ((double)(Sqr (lon1) + Sqr (lat1))) * invSpeed); // if (dlon * lon1 <= -dlat * lat1) toEndNd[i][1] += toEndNd[i][0] * 9; // if (dlon * lon0 >= -dlat * lat0) toEndNd[i][0] += toEndNd[i][1] * 9; if (IsOneway (w, Vehicle)) toEndNd[i][1 - i] = 200000000; /* It's possible to go up a oneway at the end, but at a huge penalty*/ endNd[i] = itr.nd[0]; /* The router only stops after it has traversed endHs[1], so if we want 'limit' to be accurate, we must subtract it's length if (i) { toEndHs[1][0] -= segLen; toEndHs[1][1] -= segLen; } */ } } /* For each candidate segment */ if (bestd == ((__int64) 1 << 62) || !endNd[0]) { endNd[i] = NULL; //fprintf (stderr, "No segment nearby\n"); return; } } /* For 'from' and 'to', find segment that passes nearby */ from.lat = flat; from.lon = flon; if (recalculate || !route) { GosmFreeRoute (); routeHeapSize = 1; /* Leave position 0 open to simplify the math */ #ifndef _WIN32 // Google "zero-fill-on-demand". Basically all the reasons they mention are valid. // In particular, while gosmore is paused while a page is swapped in, the OS can // zero some pages for us. int dzero = open ("/dev/zero", O_RDWR); long long ds = sysconf (_SC_PAGESIZE) * (long long) sysconf (_SC_PHYS_PAGES) / (sizeof (*routeHeap) + sizeof (*route) + 40); dhashSize = ds > INT_MAX ? INT_MAX : ds; routeHeapMaxSize = lrint (sqrt (dhashSize)) * 3; routeHeap = (routeHeapType*) malloc (routeHeapMaxSize * sizeof (*routeHeap)); if (!routeHeap || dzero == -1 || (route = (routeNodeType*) mmap (NULL, dhashSize * sizeof (*route), PROT_READ | PROT_WRITE, MAP_SHARED, dzero, 0)) == MAP_FAILED) { fprintf (stderr, "Error: Mmap of dnull for routing arrays\n"); route = NULL; return; } if (dzero != -1) close (dzero); #else MEMORYSTATUS memStat; GlobalMemoryStatus (&memStat); dhashSize = (memStat.dwAvailPhys - 400000) / (sizeof (*route) + sizeof (*routeHeap) + 40); routeHeapMaxSize = lrint (sqrt (dhashSize)) * 3; routeHeap = (routeHeapType*) malloc (routeHeapMaxSize * sizeof (*routeHeap)); if (!routeHeap) return; if (!(route = (routeNodeType*) calloc (sizeof (*route), dhashSize))) return; #endif rlat = flat; rlon = flon; AddNd (endNd[0], 0, toEndNd[0][0], NULL); AddNd (endNd[0] + endNd[0]->other[0], 1, toEndNd[0][1], NULL); AddNd (endNd[0], 1, toEndNd[0][0], NULL); AddNd (endNd[0] + endNd[0]->other[0], 0, toEndNd[0][1], NULL); #ifdef INSPECT printf ("\ncycleonewa: %s\n", Way (endNd[0])->bits & (1 << bicycleOneway) ? "yes" : "no"); #define M(x) printf ("%10s: %s\n", #x, \ Way (endNd[0])->bits & (1 << x ## R) ? "yes" : "no"); RESTRICTIONS #undef M // A bit confusing when the user clicks a way on which the selected // vehicle type is not allowed, because endNd will then be a different // way. #endif } else { routeNodeType *frn = AddNd (&from, 0, -1, NULL); if (frn) { if (frn->heapIdx < 0) frn->heapIdx = -0x7fffffff; else routeHeap[frn->heapIdx].best = 0x7fffffff; } routeNodeType *rn = AddNd (endNd[1], 0, -1, NULL); if (rn) AddNd (&from, 0, toEndNd[1][1], rn); routeNodeType *rno = AddNd (endNd[1] + endNd[1]->other[0], 1, -1, NULL); if (rno) AddNd (&from, 0, toEndNd[1][0], rno); } lht = FALSE; // keep lht true if we are not in any of the lhtBbox for (size_t i = 0; i < sizeof (lhtBbox) / sizeof (lhtBbox[0]); i++) { lht = lht || (lhtBbox[i][0] < tlon && lhtBbox[i][1] < tlat && tlon < lhtBbox[i][2] && tlat < lhtBbox[i][3]); } // printf (lht ? "Left Hand Traffic\n" : "Right Hand Traffic\n"); } int RouteLoop (void) { // printf ("%ld %ld\n", clock (), CLOCKS_PER_SEC); // Calibrate loop below for (int i = 0; i < 20000 && routeHeapSize > 1; i++) { routeNodeType *root = routeHeap[1].r; root->heapIdx = -routeHeap[1].best; /* Root now removed from the heap */ routeHeapSize--; for (int i = 2; i / 2 < routeHeapSize; ) { routeHeapType *end = &routeHeap[routeHeapSize]; int sml = i >= routeHeapSize || routeHeap[i].best > end->best ? (i + 1 >= routeHeapSize || routeHeap[i].best > end->best ? routeHeapSize : i + 1) : routeHeap[i].best < routeHeap[i + 1].best ? i : i + 1; memcpy (routeHeap + i / 2, routeHeap + sml, sizeof (*routeHeap)); routeHeap[i / 2].r->heapIdx = i / 2; i = sml * 2; } if (root->nd == &from) { // Remove 'from' from the heap in case we shortest = root->shortest; // get called with recalculate=0 routeSuccess = TRUE; return FALSE; } if (root->nd == (!root->dir ? endNd[1] : endNd[1] + endNd[1]->other[0])) { AddNd (&from, 0, toEndNd[1][1 - root->dir], root); } ndType *nd = root->nd, *other, *firstNd, *restrictItr; while (nd > ndBase && nd[-1].lon == nd->lon && nd[-1].lat == nd->lat) nd--; /* Find first nd in node */ firstNd = nd; // Save it for checking layout and restrictions int rootIsAdestination = Way (root->nd)->destination & (1 << Vehicle); /* Now work through the segments connected to root. */ unsigned layout[4] = { 0, 0, 0, 0 }, lmask = 1; ndType *rtother = root->nd + root->nd->other[root->dir], *layoutNd[4]; // We categorize each segment leaving this junction according to the // angle it form with the 'root' segment. The angles are 315 to 45, // 45 to 135, 135 to 225 and 225 to 315 degrees. do { lmask <<= 2; for (int dir = 0; dir < 2; dir++) { if (nd->other[dir] != 0) { other = nd + nd->other[dir]; int dot = (other->lat - nd->lat) * (nd->lat - rtother->lat) + (other->lon - nd->lon) * (nd->lon - rtother->lon); int cross = (other->lat - nd->lat) * (nd->lon - rtother->lon) - (other->lon - nd->lon) * (nd->lat - rtother->lat); int azimuth = (dot > cross ? 0 : 3) ^ (dot + cross > 0 ? 0 : 1); layout[azimuth] |= lmask << dir; layoutNd[azimuth] = nd; } } } while (++nd < ndBase + hashTable[bucketsMin1 + 1] && nd->lon == nd[-1].lon && nd->lat == nd[-1].lat); //printf ("%d %d %d %d\n", layout[0], layout[1], layout[2], layout[3]); nd = firstNd; lmask = 1; do { if (StyleNr (Way (nd)) >= barrier_bollard && StyleNr (Way (nd)) <= barrier_toll_booth && !(Way (nd)->bits & (1 << Vehicle))) break; lmask <<= 2; #ifdef _WIN32_WCE if (root->remain > 5500000 && -root->heapIdx - root->remain > 5500000 && #else if (root->remain > 25500000 && -root->heapIdx - root->remain > 25500000 && #endif (StyleNr (Way (nd)) == highway_residential || StyleNr (Way (nd)) == highway_service || StyleNr (Way (nd)) == highway_living_street || StyleNr (Way (nd)) == highway_unclassified)) continue; /* When more than 75km from the start and the finish, ignore minor roads. This reduces the number of calculations. */ for (int dir = 0; dir < 2; dir++) { if (nd == root->nd && dir == root->dir) continue; /* Don't consider an immediate U-turn to reach root->hs->other. This doesn't exclude 179.99 degree turns though. */ if (nd->other[dir] == 0) continue; if (Vehicle != footR && Vehicle != bicycleR) { for (restrictItr = firstNd; restrictItr->other[0] == 0 && restrictItr->other[1] == 0; restrictItr++) { wayType *w = Way (restrictItr); if (StyleNr (w) >= restriction_no_right_turn && StyleNr (w) <= restriction_only_straight_on && atoi ((char*)(w + 1) + 1) == nd->wayPtr && (StyleNr (w) <= restriction_no_straight_on) == (atoi (strchr ((char*)(w + 1) + 1, ' ')) == root->nd->wayPtr)) { break; } } if (restrictItr->other[0] == 0 && restrictItr->other[1] == 0) continue; } // Tagged node, start or end of way or restriction. other = nd + nd->other[dir]; wayType *w = Way (nd); // // DEBUGGING // char label[255], *strings; // strings=(char*)(w+1)+1; // memset(label,0,255); // strncpy(label,strings,strcspn(strings,"\n")); // printf ("DEBUG: %s (%d) %lf\n", label, StyleNr(w), // Style(w)->invSpeed[Vehicle]); int myV = Vehicle == bicycleR && (!(w->bits & (1 << bicycleR)) || ((w->bits & (1 << bicycleOneway)) && !dir)) ? footR : Vehicle; // If pedestrians are allowed and cyclists not, we can dismount and // walk. The same applies when we can't cycle in the wrong direction. if ((w->bits & (1 << myV)) && (dir || !IsOneway (w, myV))) { int d = lrint (sqrt ((double) (Sqr ((__int64)(nd->lon - other->lon)) + Sqr ((__int64)(nd->lat - other->lat)))) * (!fast ? 1.0 : Style (w)->invSpeed[Vehicle])); if (Vehicle != myV) d *= 4; // Penalty for dismounting if (rootIsAdestination && !(w->destination & (1 << Vehicle))) { d += 5000000; // 500km penalty for entering v='destination' area. } // If (lmask<<dir)&layout[x] is set, we are going approximately // in direction x * 90 degrees, relative to the direction we // are going to (Remember that we are coming from 'root') // If layout[x] is not zero, there are segments going in that // direction if (layout[lht ? 1 : 3] && ((lmask << dir) & layout[lht ? 3 : 1]) && fast && Style (w)->scaleMax > 100000) { d += 50000 * (fast ? Style (w)->invSpeed[Vehicle] : 1); // Turning right in the UK (or left in the rest of the world), when // we are on a major road (secondary+) that continues straight on, // you will probably have to wait for oncoming traffic. } if (layout[1] && layout[3] && ((lmask << dir) & layout[0])) { // Straight over a T-junction if ((Way (layoutNd[1])->bits & (1 << motorcarR)) && (Way (layoutNd[3])->bits & (1 << motorcarR)) && fast) { // And motorcars are allowed on both sides d += (Style (Way (layoutNd[1]))->invSpeed[motorcarR] < Style (w)->invSpeed[motorcarR] ? 10000 : 3000) * (fast ? Style (w)->invSpeed[Vehicle] : 1); // Crossing a road that is faster that the road we are traveling // on incurs a 100m penalty. If they are equal, the penality is // 30m. TODO: residential crossing residential should be less, // perhaps 20m. } } ndType *n2 = root->nd + root->nd->other[root->dir]; __int64 straight = (n2->lat - nd->lat) * (__int64)(nd->lat - other->lat) + (n2->lon - nd->lon) * (__int64)(nd->lon - other->lon), left = (n2->lat - nd->lat) * (__int64)(nd->lon - other->lon) - (n2->lon - nd->lon) * (__int64)(nd->lat - other->lat); // Note: We need not calculate these, because we can check the relevant // bits in layout // The code below adds a penalty to making a U-turn when an oncoming road // exists for example where a bidirectional road splits into two oneways. // We can add an extra condition to allow a right turn in right hand // traffic countries. Something like '&& lht ? left : -left > 0)' // Currently the threshold angle is 45 degrees (a turn of more than 135 degrees). // We can vary it using this line: // straight = straight * lrint (tan (M_PI / 180 * 45) * 100) / 100; if (straight < -left && straight < left && layout[2]) d += 50000 * (fast ? Style (w)->invSpeed[Vehicle] : 1); // Note: The layout values I've seen during debugging didn't add up. AddNd (other, 1 - dir, d, root); } // If we found a segment we may follow } // for each direction } while (++nd < ndBase + hashTable[bucketsMin1 + 1] && nd->lon == nd[-1].lon && nd->lat == nd[-1].lat); } // While there are active nodes left ROUTE_SHOW_STATS; // if (fastest) printf ("%lf // printf ("%lf km\n", limit / 100000.0); return routeHeapSize > 1; } int JunctionType (ndType *nd) { int ret = 'j'; while (nd > ndBase && nd[-1].lon == nd->lon && nd[-1].lat == nd->lat) nd--; int segCnt = 0; // Count number of segments at x->shortest do { // TODO : Only count segment traversable by 'Vehicle' // Except for the case where a cyclist passes a motorway_link. // TODO : Don't count oneways entering the roundabout if (nd->other[0] != 0) segCnt++; if (nd->other[1] != 0) segCnt++; if (StyleNr (Way (nd)) == highway_traffic_signals) { ret = 't'; } if (StyleNr (Way (nd)) == highway_mini_roundabout) { ret = 'm'; } } while (++nd < ndBase + hashTable[bucketsMin1 + 1] && nd->lon == nd[-1].lon && nd->lat == nd[-1].lat); return segCnt > 2 ? toupper (ret) : ret; } int GosmInit (void *d, long size) { if (!d) return FALSE; gosmData = (char*) d; ndBase = (ndType *)(gosmData + ((int*)(gosmData + size))[-1]); bucketsMin1 = ((int *) (gosmData + size))[-2]; stylecount = ((int *) (gosmData + size))[-3]; style = (struct styleStruct *) (gosmData + size - sizeof (stylecount) * 3) - stylecount; hashTable = (int *) (style) - bucketsMin1 - (bucketsMin1 >> 7) - 3; memset (gosmSway, 0, sizeof (gosmSway)); return ndBase && hashTable && *(int*) gosmData == pakHead; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MGosmoreBackground/libgosm.h�����������������������������������0000664�0000000�0000000�00000053346�11770671653�0025135�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef LIBGOSM_H #define LIBGOSM_H #include <math.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stdio.h> #include <limits.h> #ifdef _WIN32_WCE #include <windows.h> #define lrint(x) int ((x) < 0 ? (x) - 0.5 : (x) + 0.5) typedef int intptr_t; #define strncasecmp _strnicmp #define stricmp _stricmp #endif #ifndef _WIN32 #include <inttypes.h> #define stricmp strcasecmp typedef long long __int64; #endif #ifndef M_PI #define M_PI 3.14159265358979323846 // Not in math ?? #endif #if __FreeBSD__ || __APPLE__ // Thanks to Ted Mielczarek & Dmitry #define fopen64(x,y) fopen(x,y) #endif #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif // this definitions have been changes to prevent compiler warnings // copied verbatim for /usr/include/limits.h #ifndef INT_MAX #define INT_MAX 2147483647 #endif #ifndef INT_MIN #define INT_MIN (-INT_MAX - 1) #endif #define Sqr(x) ((x)*(x)) inline int isqrt (int x) { return lrint (sqrt (x)); } // Optimize this ? #define TILEBITS (18) #define TILESIZE (1<<TILEBITS) #define RESTRICTIONS M (access) M (motorcar) M (bicycle) M (foot) M (goods) \ M (hgv) M (horse) M (motorcycle) M (psv) M (moped) M (mofa) \ M (motorboat) M (boat) \ M (oneway) M (roundabout) #define M(field) field ## R, enum { STYLE_BITS = 10, RESTRICTIONS bicycleOneway, layerBit1, layerBit2, layerBit3 }; #undef M // Below is a list of the tags that the user may add. It should also include // any tags that gosmore.cpp may test for directly, e.g. // StyleNr(w) == highway_traffic_signals . // See http://etricceline.de/osm/Europe/En/tags.htm for the most popular tags // The fields are k, v, short name and the additional tags. #define STYLES \ s (gosmore_note, yes, "note" , "") \ s (highway, residential, "residential" , "") \ s (highway, unclassified, "unclassified" , "") \ s (highway, tertiary, "tertiary" , "") \ s (highway, secondary, "secondary" , "") \ s (highway, primary, "primary" , "") \ s (highway, trunk, "trunk" , "") \ s (highway, footway, "footway" , "") \ s (highway, service, "service" , "") \ s (highway, track, "track" , "") \ s (highway, cycleway, "cycleway" , "") \ s (highway, pedestrian, "pedestrian" , "") \ s (highway, steps, "steps" , "") \ s (highway, bridleway, "bridleway" , "") \ s (railway, rail, "railway" , "") \ s (railway, station, "railway station" , "") \ s (highway, mini_roundabout, "mini roundabout" , "") \ s (highway, traffic_signals, "traffic signals" , "") \ s (highway, bus_stop, "bus stop" , "") \ s (amenity, parking, "parking" , "") \ s (amenity, fuel, "fuel" , "") \ s (amenity, school, "school" , "") \ s (place, village, "village" , "") \ s (place, suburb, "suburb" , "") \ s (shop, supermarket, "supermarket" , "") \ s (religion, christian, "church" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, jewish, "synagogue" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, muslim, "mosque" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (amenity, pub, "pub" , "") \ s (amenity, restaurant, "restaurant" , "") \ s (power, tower, "power tower" , "") \ s (waterway, stream, "stream" , "") \ s (amenity, grave_yard, "grave yard" , "") \ s (amenity, crematorium, "crematorium" , "") \ s (amenity, shelter, "shelter" , "") \ s (tourism, picnic_site, "picnic site" , "") \ s (leisure, common, "common area" , "") \ s (amenity, park_bench, "park bench" , "") \ s (tourism, viewpoint, "viewpoint" , "") \ s (tourism, artwork, "artwork" , "") \ s (tourism, museum, "museum" , "") \ s (tourism, theme_park, "theme park" , "") \ s (tourism, zoo, "zoo" , "") \ s (leisure, playground, "playground" , "") \ s (leisure, park, "park" , "") \ s (leisure, nature_reserve, "nature reserve" , "") \ s (leisure, miniature_golf, "miniature golf" , "") \ s (leisure, golf_course, "golf course" , "") \ s (leisure, sports_centre, "sports centre" , "") \ s (leisure, stadium, "stadium" , "") \ s (leisure, pitch, "pitch" , "") \ s (leisure, track, "track" , "") \ s (sport, athletics, "athletics" , "") \ s (sport, 10pin, "10 pin" , "") \ s (sport, boules, "boules" , "") \ s (sport, bowls, "bowls" , "") \ s (sport, baseball, "baseball" , "") \ s (sport, basketball, "basketball" , "") \ s (sport, cricket, "cricket" , "") \ s (sport, cricket_nets, "cricket nets" , "") \ s (sport, croquet, "croquet" , "") \ s (sport, dog_racing, "dog racing" , "") \ s (sport, equestrian, "equestrian" , "") \ s (sport, football, "football" , "") \ s (sport, soccer, "soccer" , "") \ s (sport, climbing, "climbing" , "") \ s (sport, gymnastics, "gymnastics" , "") \ s (sport, hockey, "hockey" , "") \ s (sport, horse_racing, "horse racing" , "") \ s (sport, motor, "motor sport" , "") \ s (sport, pelota, "pelota" , "") \ s (sport, rugby, "rugby" , "") \ s (sport, australian_football, "australian football" , "") \ s (sport, skating, "skating" , "") \ s (sport, skateboard, "skateboard" , "") \ s (sport, handball, "handball" , "") \ s (sport, table_tennis, "table tennis" , "") \ s (sport, tennis, "tennis" , "") \ s (sport, racquet, "racquet" , "") \ s (sport, badminton, "badminton" , "") \ s (sport, paintball, "paintball" , "") \ s (sport, shooting, "shooting" , "") \ s (sport, volleyball, "volleyball" , "") \ s (sport, beachvolleyball, "beach volleyball" , "") \ s (sport, archery, "archery" , "") \ s (sport, skiing, "skiing" , "") \ s (sport, rowing, "rowing" , "") \ s (sport, sailing, "sailing" , "") \ s (sport, diving, "diving" , "") \ s (sport, swimming, "swimming" , "") \ s (leisure, swimming_pool, "swimming pool" , "") \ s (leisure, water_park, "water park" , "") \ s (leisure, marina, "marina" , "") \ s (leisure, slipway, "slipway" , "") \ s (leisure, fishing, "fishing" , "") \ s (shop, bakery, "bakery" , "") \ s (shop, butcher, "butcher" , "") \ s (shop, florist, "florist" , "") \ s (shop, groceries, "groceries" , "") \ s (shop, beverages, "liquor / wine" , "") \ s (shop, clothes, "clothing shop" , "") \ s (shop, shoes, "shoe shop" , "") \ s (shop, jewelry, "jewelry store" , "") \ s (shop, books, "bookshop" , "") \ s (shop, newsagent, "newsagent" , "") \ s (shop, furniture, "furniture store" , "") \ s (shop, hifi, "Hi-Fi store" , "") \ s (shop, electronics, "electronics store" , "") \ s (shop, computer, "computer shop" , "") \ s (shop, video, "video rental" , "") \ s (shop, toys, "toy shop" , "") \ s (shop, motorcycle, "motorcycle" , "") \ s (shop, car_repair, "car repair" , "") \ s (shop, doityourself, "doityourself" , "") \ s (shop, garden_centre, "garden centre" , "") \ s (shop, outdoor, "outdoor" , "") \ s (shop, bicycle, "bicycle shop" , "") \ s (shop, dry_cleaning, "dry cleaning" , "") \ s (shop, laundry, "laundry" , "") \ s (shop, hairdresser, "hairdresser" , "") \ s (shop, travel_agency, "travel_agency" , "") \ s (shop, convenience, "convenience" , "") \ s (shop, mall, "mall" , "") \ s (shop, department_store, "department store" , "") \ s (amenity, biergarten, "biergarten" , "") \ s (amenity, nightclub, "nightclub" , "") \ s (amenity, bar, "bar" , "") \ s (amenity, cafe, "cafe" , "") \ s (amenity, fast_food, "fast food" , "") \ s (amenity, ice_cream, "icecream" , "") \ s (amenity, bicycle_rental, "bicycle rental" , "") \ s (amenity, car_rental, "car rental" , "") \ s (amenity, car_sharing, "car sharing" , "") \ s (amenity, car_wash, "car wash" , "") \ s (amenity, taxi, "taxi" , "") \ s (amenity, telephone, "telephone" , "") \ s (amenity, post_office, "post office" , "") \ s (amenity, post_box, "post box" , "") \ s (tourism, information, "tourist info" , "") \ s (amenity, toilets, "toilets" , "") \ s (amenity, recycling, "recycling" , "") \ s (amenity, fire_station, "fire station" , "") \ s (amenity, police, "police" , "") \ s (amenity, courthouse, "courthouse" , "") \ s (amenity, prison, "prison" , "") \ s (amenity, public_building, "public building" , "") \ s (amenity, townhall, "townhall" , "") \ s (amenity, cinema, "cinema" , "") \ s (amenity, arts_centre, "arts centre" , "") \ s (amenity, theatre, "theatre" , "") \ s (tourism, hotel, "hotel" , "") \ s (tourism, motel, "motel" , "") \ s (tourism, guest_house, "guest house" , "") \ s (tourism, hostel, "hostel" , "") \ s (tourism, chalet, "chalet" , "") \ s (tourism, camp_site, "camp site" , "") \ s (tourism, caravan_site, "caravan site" , "") \ s (amenity, pharmacy, "pharmacy" , "") \ s (amenity, dentist, "dentist" , "") \ s (amenity, doctor, "doctor" , "") \ s (amenity, hospital, "hospital" , "") \ s (amenity, bank, "bank" , "") \ s (amenity, bureau_de_change, "bureau de change" , "") \ s (amenity, atm, "atm" , "") \ s (amenity, drinking_water, "drinking water" , "") \ s (amenity, fountain, "fountain" , "") \ s (natural, spring, "spring" , "") \ s (amenity, university, "university" , "") \ s (amenity, college, "college" , "") \ s (amenity, kindergarten, "kindergarten" , "") \ s (highway, living_street, "living street" , "") \ s (highway, motorway, "motorway" , "") \ s (highway, motorway_link, "mway link" , "") \ s (highway, trunk_link, "trunk link" , "") \ s (highway, primary_link, "primary_link" , "") \ s (barrier, bollard, "bollard" , "") /* First barrier ! */ \ s (barrier, gate, "gate" , "") \ s (barrier, stile, "stile" , "") \ s (barrier, cattle_grid, "cattle_grid" , "") \ s (barrier, toll_booth, "toll_booth" , "") /* Last barrier ! */ \ s (man_made, beacon, "beacon" , "" ) \ s (man_made, survey_point, "survey point" , "" ) \ s (man_made, tower, "tower" , "" ) \ s (man_made, water_tower, "water tower" , "" ) \ s (man_made, gasometer, "gasometer" , "" ) \ s (man_made, reservoir_covered, "covered reservoir", "" ) \ s (man_made, lighthouse, "lighthouse" , "" ) \ s (man_made, windmill, "windmill" , "" ) \ s (man_made, pier, "pier" , "" ) \ s (man_made, pipeline, "pipeline" , "" ) \ s (man_made, wastewater_plant, "wastewater plant" , "" ) \ s (man_made, crane, "crane" , "" ) \ s (building, yes, "building" , "") \ s (landuse, forest, "forest" , "") \ s (landuse, residential, "residential area", "") \ s (landuse, industrial, "industrial area" , "") \ s (landuse, retail, "retail area" , "") \ s (landuse, commercial, "commercial area" , "") \ s (landuse, construction, "construction area" , "") \ s (landuse, reservoir, "reservoir" , "") \ s (natural, water, "lake / dam" , "") \ s (landuse, basin, "basin" , "") \ s (landuse, landfill, "landfill" , "") \ s (landuse, quarry, "quarry" , "") \ s (landuse, cemetery, "cemetery" , "") \ s (landuse, allotments, "allotments" , "") \ s (landuse, farm, "farmland" , "") \ s (landuse, farmyard, "farmyard" , "") \ s (landuse, military, "military area" , "") \ s (religion, bahai, "bahai" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, buddhist, "buddhist" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, hindu, "hindu" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, jain, "jainism" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, sikh, "sikhism" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, shinto, "shinto" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (religion, taoist, "taoism" , \ " <tag k='amenity' v='place_of_worship' />\n") \ s (highway, road, "hway=road" , "") \ /* relations must be last and restriction_no_right_turn must be first */ \ s (restriction, no_right_turn, "" , "") \ s (restriction, no_left_turn, "" , "") \ s (restriction, no_u_turn, "" , "") \ s (restriction, no_straight_on, "" , "") \ /* restriction_no_straight_on must be the last "no_" restriction */ \ s (restriction, only_right_turn, "" , "") \ s (restriction, only_left_turn, "" , "") \ s (restriction, only_straight_on, "" , "") \ /* restriction_only_straight_on must be the last restriction */ #define XXXFSDFSF \ s (sport, orienteering, "orienteering" , "") \ s (sport, gym, "gym" , "") \ /* sport=golf isn't a golf course, so what is it ? */ \ #define s(k,v,shortname,extraTags) k ## _ ## v, enum { STYLES firstElemStyle }; // highway_residential, ... #undef s struct styleStruct { int x[16], lineWidth, lineRWidth, lineColour, lineColourBg, dashed; int scaleMax, areaColour, dummy /* pad to 8 for 64 bit compatibility */; double aveSpeed[layerBit1], invSpeed[layerBit1]; }; struct ndType { int wayPtr, lat, lon, other[2]; }; /* This struct takes up a lot of space, but compressing is possible: If other is encoded as byte offset from the current position, it should typically be close to 0. So it can be Huffman encoded. Then the struct will no longer have a fixed size, and the final position of an nd will not be known during the first pass. So we over estimate the space needed between 2 nds and we can do multiple passes until all the excess has been removed. The difference between lat and wayPtr->clat will normally also be quite small and can also be Huffman coded. The same applies to lon. C code can be generated for these non dynamic Huffman decoders and the C compiler can then optimize it for efficient decompression. Not only will this save (flash) storage, but it will also increase the size of maps that can be loaded and reduce the paging that is so slow on mobile devices. */ struct wayType { int bits, destination; int clat, clon, dlat, dlon; /* Centre coordinates and (half)diameter */ }; inline int Layer (wayType *w) { return w->bits >> 29; } inline int Latitude (double lat) { /* Mercator projection onto a square means we have to clip everything beyond N85.05 and S85.05 */ return lat > 85.051128779 ? 2147483647 : lat < -85.051128779 ? -2147483647 : lrint (log (tan (M_PI / 4 + lat * M_PI / 360)) / M_PI * 2147483648.0); } inline int Longitude (double lon) { return lrint (lon / 180 * 2147483648.0); } inline double LatInverse (int lat) { return (atan (exp (lat / 2147483648.0 * M_PI)) - M_PI / 4) / M_PI * 360; } inline double LonInverse (int lon) { return lon / 2147483648.0 * 180; } /*---------- Global variables -----------*/ #define searchCnt 40 extern wayType *gosmSway[searchCnt]; extern int *hashTable, bucketsMin1, pakHead; extern char *gosmData, *gosmSstr[searchCnt]; /* gosmSstr is no longer nul terminated. If it's a problem, use string s (gosmSstr[i], strcspn (gosmSstr[i], "\n")); ... s.c_str() ... */ extern ndType *ndBase; extern styleStruct *style; extern int stylecount; inline wayType *Way (ndType *nd) { return (wayType *)(nd->wayPtr+gosmData); } inline int StyleNr (wayType *w) { return w->bits & ((2 << STYLE_BITS) - 1); } inline styleStruct *Style (wayType *w) { return &style[StyleNr (w)]; } unsigned inline ZEnc (int lon, int lat) { // Input as bits : lon15,lon14,...lon0 and lat15,lat14,...,lat0 int t = (lon << 16) | lat; t = (t & 0xff0000ff) | ((t & 0x00ff0000) >> 8) | ((t & 0x0000ff00) << 8); t = (t & 0xf00ff00f) | ((t & 0x0f000f00) >> 4) | ((t & 0x00f000f0) << 4); t = (t & 0xc3c3c3c3) | ((t & 0x30303030) >> 2) | ((t & 0x0c0c0c0c) << 2); return (t & 0x99999999) | ((t & 0x44444444) >> 1) | ((t & 0x22222222) << 1); } // Output as bits : lon15,lat15,lon14,lat14,...,lon0,lat0 inline int Hash (int lon, int lat, int lowz = 0) { /* All the normal tiles (that make up a super tile) are mapped to sequential buckets thereby improving caching and reducing the number of disk tracks required to render / route through a super tile sized area. The map to sequential buckets is a 2-D Hilbert curve. */ if (lowz) { lon >>= 7; lat >>= 7; } int t = ZEnc (lon >> TILEBITS, ((unsigned) lat) >> TILEBITS); int s = ((((unsigned)t & 0xaaaaaaaa) >> 1) | ((t & 0x55555555) << 1)) ^ ~t; // s=ZEnc(lon,lat)^ZEnc(lat,lon), so it can be used to swap lat and lon. #define SUPERTILEBITS (TILEBITS + 8) for (int lead = 1 << (SUPERTILEBITS * 2 - TILEBITS * 2); lead; lead >>= 2) { if (!(t & lead)) t ^= ((t & (lead << 1)) ? s : ~s) & (lead - 1); } return (((((t & 0xaaaaaaaa) >> 1) ^ t) + (lon >> SUPERTILEBITS) * 0x00d20381 + (lat >> SUPERTILEBITS) * 0x75d087d9) & (lowz ? bucketsMin1 >> 7 : bucketsMin1)) + (lowz ? bucketsMin1 + 1 : 0); } // int TagCmp (const char *a, const char *b); // Only used in libgosm struct OsmItr { // Iterate over all the objects in a square ndType *nd[1]; /* Readonly. Either can be 'from' or 'to', but you */ /* can be guaranteed that nodes will be in hs[0] */ int slat, slon, left, right, top, bottom, tsize; /* Private */ ndType *end; OsmItr (int l, int t, int r, int b) { tsize = r - l > 1500000 ? TILESIZE << 7 : TILESIZE; left = l & (~(tsize - 1)); right = (r + tsize - 1) & (~(tsize-1)); top = t & (~(tsize - 1)); bottom = (b + tsize - 1) & (~(tsize-1)); slat = top; slon = left - tsize; nd[0] = end = NULL; } }; int Next (OsmItr &itr); /* Friend of osmItr */ struct routeNodeType { ndType *nd; routeNodeType *shortest; int heapIdx, dir, remain; // Dir is 0 or 1 // if heapIdx is negative, the node is not in the heap and best = -heapIdx. }; /* The data is split over two structures (routeNodeType and routeHeapType). Some of these fields may cause fewer cache misses if their are in routeHeapType */ struct routeHeapType { routeNodeType *r; int best; }; extern routeNodeType *route, *shortest; extern routeHeapType *routeHeap; extern int routeHeapSize, tlat, tlon, flat, flon, rlat, rlon, routeSuccess; void Route (int recalculate, int plon, int plat, int Vehicle, int fast); int RouteLoop (void); void GosmFreeRoute (void); int JunctionType (ndType *nd); int *GosmIdxSearch (const char *key, unsigned z); // GosmIdxSearch is only exported in order to find unique object, like cities. void GosmSearch (int clon, int clat, const char *key); int GosmInit (void *d, long size); // *** EVERYTHING AFTER THIS POINT IS NOT IN THE WINDOWS BUILDS *** #ifndef _WIN32 void GosmLoadAltStyle(const char* elemstylefile, const char* iconscsvfile); // struct to hold mappings between elemstyles.xml and stylesrec // these are needed when the osm file is converted to a pak file typedef struct { char style_k[80]; char style_v[80]; int ruleNr; int defaultRestrict; } elemstyleMapping; // reads the elemstyles.xml file into srec, with the mapping between // srec and elemstyles.xml stored in map, and the list of maximum // speeds for each vehicle type in maxspeeds. styleCnt representing // the location of the first elemstyle. Returns the final styleCnt. int LoadElemstyles(/* in */ const char *elemstylesfname, const char *iconsfname, /* out */ styleStruct *srec, elemstyleMapping *map); // creates a new pakfile from an osmdata file read from standard in int RebuildPak(const char* pakfile, const char* elemstylefile, const char* iconscsvfile, const char* masterpakfile, const int bbox[4]); int SortRelations (void); #endif // #ifndef _WIN32 #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0023517�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/MMsBingMapBackground.pro������������������0000664�0000000�0000000�00000000633�11770671653�0030175�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MMsBingMapBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) HEADERS += \ mapadapter.h \ msbingmapadapter.h SOURCES += \ mapadapter.cpp \ msbingmapadapter.cpp RESOURCES += \ Resources.qrc �����������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/Resources.qrc�����������������������������0000664�0000000�0000000�00000000205�11770671653�0026175�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/images"> <file alias="bing_logo.png">images/logo_powered_by.png</file> </qresource> </RCC> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/images/�����������������������������������0000775�0000000�0000000�00000000000�11770671653�0024764�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/images/logo_powered_by.png����������������0000664�0000000�0000000�00000010307�11770671653�0030652�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���]������)`���gAMA��7���tEXtSoftware�Adobe ImageReadyqe<��YIDATxZ tT̖eC A"U $(**@@AF+(bՈE`B $('3}}/w~rGh zZ/.{yy_&O lyyy :=Wj~W* 9~aTy>ZqÉ>$$`./�r𨀿\(Pell6>x<uAj/ծD1BtZ"""BCC�R>�VSScZhnspp  Lᨇ+NR)S{% JK[R qcqqz>ZXFLo!Zky�sT l\p~'; ћL)R%'?<L·~\\kIma>O}|*>Is*jPt!9�E̵9:Z`P3xz`P>`n�wK:xVWԬ\3 Ƃ997b�|yqEFFz43/%hYR*毯YN.0Щǀ`W(@bq0 9 `~AFѴ`UCe Y ;%/1W7v[(dйH4oxFVY.&fD-q}^,IiȠց=^B`@W bx9�Ѐl#&CI9WU:we?ٱwT\ wuԉT$bB -!PE^0&DÚlTT@uui.4Vxqʑ79B]^QgB Ϗl�Ìm(/Z>�EӈyBLb,k"%krh!z(#n>ЋdqO>C%@vµ;vګWQM{5DR-lG0j֭ZGFF vՉ'fe=IKvv~c+E= a: F.X(}n`ǨOk<uw6mzEJO`tGޫW�@9up:۴.>yaa 0`s۶mҡCT]# "#ڣK'R[ome �@40Pi%'o\O~bceee=#G$&vUUּXd~WWAuR>ŵ曓^g`<蝣Fݫ6@9mZ_ +} vqbG;e/JIIнҩ^Y,aj+9rl~oNE8"1`< 441;fWoPwA(9}l]ׯK15uX{ϔOt횐/\pSN?n}h| �8€N:tH*и#GmS'0*nÜm\BzINN~@ϝ; yGZk*COK/|0=}Tӥe2L[N^vb0Ȉ̜uȑGŗ)0a_5A*kzݳ-[>1)gik׭JK;@?CUN(F%Ϙ9=` TҤ],~c;p`qȪCy(1n[Ƶl#Ǟ9󡬂ώϜێq2!t,.\v.Sx`~>W1vl3Ν+a ѻ;;LdXk6mk1u%;wE~>ძswJJȷraB> msڥVn7iR 8[{"U.!ю!٬UWd FU3;t !( -�oԀ_?c%%QMKj1UU,_d+|?gϞ!h5uʇer'Qv ƨdv6Z �͎,ޣ#w0g|<v"VZm!:#_+ R'#[̓T�ߍ~s(q!EӞe|sa,�(w64ZX%%%NLXr4Y4 9QcCV%KP�q#~ew۵k2ˆ W�`3M c2AI&;+Q;JϞ$?ຘ5_uaN'dV; <$t &+XF{L,21Q |f.BU梱kd+F A L@yFǣDDD"ܢLɘl qW0 d&3VlDdc#Pb92c, ⠃h8a-/=U*;o{*Fv\ɹJ'뎸:o߾#N_Xu+Ά7 @F>AJkkc33+߿ T26m[Y3f< K1zVb'O tb99uJ'=pWfP ˧M�eڧOr]veQԖ-#77{/Fft?"!?+ogԣGmٳg'99ُt$hpd#ƻJUU9s@ 8h(,ZbS%+<>Ü7?QG22߿_J RL.A[B۵kt2 ҉caՌ33Y .N4z1#FudN6e NyQEEK=?ջ N̫ĝEktDBnF9ѳt⒗^}9(豈fq⤉32dHObbIwT/҅xXТٹϬڜu=#zk#+M1,cbS[c=mSPzGWJ-X$c kjjEvku,AcWz)"%[Z֭~{<&>}ogA1 tjc;� 2: b׬ eB8(F߽{G*cYTV+E<}y@³ ֥YkgV8qS@1-[i@9�Gjc(L�~(.` 2չYR/,65)Em_IF*{� ,r\Ȯ`|J:Yha1'k\0-%:(C̬۳́��<ֱ8x'*2r"9i Kt�ψ.<04 8 'hŃ~}7Jr$cu,'ߊyyJJ2JVeyk�)K|}Ջq<xy*%KꅢDq`s Oɐ` >-E̬cSv^rtLi1=0T|ZG;҂u<y) lLMfrnЃ}y1W[<$ggwȆdH+6o~ ϒSջwrי3fd͛pknK^ss͒3S ),mР̞䋡!ұ<nÇѹdI`NNoma͇UIOiN^Ci.'PהDD#q?``NաCN#Rlٲ{9 Tb lmЛ<5ݚt ,P#((-{wgر&#A#uNuܵs{[%0|԰K':o~VMlOHD!y y@X_r+,c$mfgv�\iDFT s:Q8r] } �M\����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/mapadapter.cpp����������������������������0000664�0000000�0000000�00000003577�11770671653�0026355�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "mapadapter.h" MapAdapter::MapAdapter(const QString& host, const QString& serverPath, const QString& theProjection, int minZoom, int maxZoom) :host(host), serverPath(serverPath), Projection(theProjection), min_zoom(minZoom), max_zoom(maxZoom) { current_zoom = min_zoom; loc = QLocale(QLocale::English); } MapAdapter::~MapAdapter() { } QString MapAdapter::getName() const { return name; } QString MapAdapter::getHost() const { return host; } QString MapAdapter::projection() const { return Projection; } ���������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/mapadapter.h������������������������������0000664�0000000�0000000�00000006637�11770671653�0026022�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef MAPADAPTER_H #define MAPADAPTER_H #include <QObject> #include <QSize> #include <QPoint> #include <QPointF> #include <QLocale> #include <QDebug> #include <cmath> #include "IImageManager.h" #include "IMapAdapter.h" //! Used to fit map servers into QMapControl /*! * MapAdapters are needed to convert between world- and display coordinates. * This calculations depend on the used map projection. * There are two ready-made MapAdapters: * - TileMapAdapter, which is ready to use for OpenStreetMap or Google (Mercator projection) * - WMSMapAdapter, which could be used for the most WMS-Server (some servers show errors, because of image ratio) * * MapAdapters are also needed to form the HTTP-Queries to load the map tiles. * The maps from WMS Servers are also divided into tiles, because those can be better cached. * * @see TileMapAdapter, @see WMSMapAdapter * * @author Kai Winter <kaiwinter@gmx.de> */ class MapAdapter : public IMapAdapter { //friend class ImageManager; //friend class BrowserImageManager; //friend class Layer; public: virtual ~MapAdapter(); //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the projection of this MapAdapter /*! * @return the projection of this MapAdapter */ virtual QString projection() const; virtual QMenu* getMenu() const { return NULL; } protected: QString name; MapAdapter(const QString& host, const QString& serverPath, const QString& projection, int minZoom = 0, int maxZoom = 0); virtual void zoom_in() = 0; virtual void zoom_out() = 0; virtual bool isValid(int x, int y, int z) const = 0; virtual QString getQuery(int x, int y, int z) const = 0; QSize size; QString host; QString serverPath; QString Projection; int min_zoom; int max_zoom; int current_zoom; QLocale loc; }; #endif �������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/msbingmapadapter.cpp����������������������0000664�0000000�0000000�00000021557�11770671653�0027553�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <QtPlugin> #include <QEventLoop> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QTimer> #include "msbingmapadapter.h" #include <math.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif static const QUuid theUid ( "{2a888701-1a93-4040-9b34-1e5339f67f43}"); static const QString theName("Bing Maps"); QUuid MsBingMapAdapterFactory::getId() const { return theUid; } QString MsBingMapAdapterFactory::getName() const { return theName; } /**************/ MsBingMapAdapter::MsBingMapAdapter() : MapAdapter(QString("ecn.t3.tiles.virtualearth.net"), QString("/tiles/a%1.jpeg?g=587&mkt=en-gb&n=z"), QString("EPSG:3857"), 0, 20) , theImageManager(0) , theSource("Bing") , isLoaded(false) { } MsBingMapAdapter::~MsBingMapAdapter() { } QUuid MsBingMapAdapter::getId() const { return QUuid(theUid); } QString MsBingMapAdapter::getName() const { return theName; } IMapAdapter::Type MsBingMapAdapter::getType() const { return IMapAdapter::NetworkBackground; } QString MsBingMapAdapter::getHost() const { return host; } QPoint MsBingMapAdapter::coordinateToDisplay(const QPointF& coordinate) const { double x = (coordinate.x()+180.) * (getTilesWE(current_zoom)*getTileSizeW())/360.; // coord to pixel! double y = (getMercatorYCoord(coordinate.y())-M_PI) * -1 * (getTilesNS(current_zoom)*getTileSizeH())/(2*M_PI); // coord to pixel! return QPoint(int(x), int(y)); } QPointF MsBingMapAdapter::displayToCoordinate(const QPoint& point) const { double lon = (point.x()*(360./(getTilesWE(current_zoom)*getTileSizeW())))-180.; double lat = getMercatorLatitude(point.y()*-1*(2*M_PI/(getTilesWE(current_zoom)*getTileSizeW())) + M_PI); lat = lat *180./M_PI; return QPointF(lon, lat); } double MsBingMapAdapter::getMercatorLatitude(double YCoord) const { // http://welcome.warnercnr.colostate.edu/class_info/nr502/lg4/projection_mathematics/converting.html if (YCoord > M_PI) return 9999.; if (YCoord < -M_PI) return -9999.; double t = atan(exp(YCoord)); double res = (2.*(t))-(M_PI/2.); return res; } double MsBingMapAdapter::getMercatorYCoord(double lati) const { double lat = lati; // conversion degre=>radians double phi = M_PI * lat / 180; double res; //double temp = Math.Tan(Math.PI / 4 - phi / 2); //res = Math.Log(temp); res = 0.5 * log((1 + sin(phi)) / (1 - sin(phi))); return res; } void MsBingMapAdapter::zoom_in() { if (min_zoom > max_zoom) current_zoom = current_zoom > max_zoom ? current_zoom-1 : max_zoom; else if (min_zoom < max_zoom) current_zoom = current_zoom < max_zoom ? current_zoom+1 : max_zoom; } void MsBingMapAdapter::zoom_out() { if (min_zoom > max_zoom) current_zoom = current_zoom < min_zoom ? current_zoom+1 : min_zoom; else if (min_zoom < max_zoom) current_zoom = current_zoom > min_zoom ? current_zoom-1 : min_zoom; } bool MsBingMapAdapter::isValid(int x, int y, int z) const { if ((x>=0 && x < getTilesWE(current_zoom)) && (y>=0 && y < getTilesNS(current_zoom)) && z>=0) { return true; } return false; } QRectF MsBingMapAdapter::getBoundingbox() const { return QRectF(QPointF(-20037508.34, -20037508.34), QPointF(20037508.34, 20037508.34)); } int MsBingMapAdapter::getTilesWE(int zoomlevel) const { return int(pow(2, zoomlevel+1.0)); } int MsBingMapAdapter::getTilesNS(int zoomlevel) const { return int(pow(2, zoomlevel+1.0)); } QString MsBingMapAdapter::getQuery(int i, int j, int z) const { return getQ(-180+i*(360./getTilesWE(current_zoom)), 90-(j+1)*(180./getTilesNS(current_zoom)), z+1); } QString MsBingMapAdapter::getQ(double longitude, double latitude, int zoom) const { double xmin=-180; double xmax=180; double ymin=-90; double ymax=90; double xmoy=0; double ymoy=0; QString location=""; for (int i = 0; i < zoom; i++) { xmoy = (xmax + xmin) / 2; ymoy = (ymax + ymin) / 2; if (latitude >= ymoy) //upper part (q or r) { ymin = ymoy; if (longitude < xmoy) { /*q*/ location+= "0"; xmax = xmoy; } else {/*r*/ location+= "1"; xmin = xmoy; } } else //lower part (t or s) { ymax = ymoy; if (longitude < xmoy) { /*t*/ location+= "2"; xmax = xmoy; } else {/*s*/ location+= "3"; xmin = xmoy; } } } return serverPath.arg(location); } int MsBingMapAdapter::getTileSizeW() const { return 256; } int MsBingMapAdapter::getTileSizeH() const { return 256; } QString MsBingMapAdapter::getSourceTag() const { return theSource; } void MsBingMapAdapter::setSourceTag (const QString& value) { theSource = value; } QString MsBingMapAdapter::getLicenseUrl() const { return QString(); } Q_EXPORT_PLUGIN2(MMsBingMapBackgroundPlugin, MsBingMapAdapterFactory) QString MsBingMapAdapter::getAttributionsHtml(const QRectF &bbox, const QRect &screen) { QStringList providers; int zoom = qRound(log(360. / bbox.width()) / log(2)); // log2 not available on FreeBSD qDebug() << "Bing Zoom: " << zoom; foreach (BingProvider prov, theProviders) { if (prov.bbox.intersects(bbox)) if (zoom >= prov.zoomMin && zoom <= prov.zoomMax) providers << prov.name; } return QString("<div style=\"color:silver; font-size:9px\">%1</div>").arg(providers.join(" ")); } QString MsBingMapAdapter::getLogoHtml() { return QString("<center><a href=\"http://www.bing.com/maps/\"><img src=\":/images/bing_logo.png\"/></a><br/><a href=\"http://opengeodata.org/microsoft-imagery-details\" style=\"color:silver; font-size:9px\">%1</a></center>").arg(tr("Terms of Use")); } int MsBingMapAdapter::getMinZoom(const QRectF &bbox) const { return min_zoom; } int MsBingMapAdapter::getMaxZoom(const QRectF &bbox) const { return max_zoom; } int MsBingMapAdapter::getAdaptedMinZoom(const QRectF &bbox) const { return 0; } int MsBingMapAdapter::getAdaptedMaxZoom(const QRectF &bbox) const { return max_zoom > min_zoom ? max_zoom - min_zoom : min_zoom - max_zoom; } int MsBingMapAdapter::getZoom() const { return current_zoom; } int MsBingMapAdapter::getAdaptedZoom() const { return max_zoom < min_zoom ? min_zoom - current_zoom : current_zoom - min_zoom; } IImageManager* MsBingMapAdapter::getImageManager() { return theImageManager; } void MsBingMapAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; QNetworkAccessManager* manager = theImageManager->getNetworkManager(); connect(manager, SIGNAL(finished(QNetworkReply*)), SLOT(on_adapterDataFinished(QNetworkReply*))); manager->get(QNetworkRequest(QUrl("http://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial/0,0?zl=1&mapVersion=v1&key=AlRQe0E4ha3yKkz2MuNI-G1AIk-CIym4zTeqaTgKVWz_LBsnQuPksHrHCOT0381M&include=ImageryProviders&output=xml"))); } void MsBingMapAdapter::on_adapterDataFinished(QNetworkReply* reply) { // int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (reply->error() != QNetworkReply::NoError) if (reply->error() != QNetworkReply::OperationCanceledError) return; QDomDocument theDoc; theDoc.setContent(reply->readAll()); QDomNodeList hostEl = theDoc.elementsByTagName("ImageUrl"); if (hostEl.size()) { QUrl u(hostEl.at(0).toElement().text()); host = u.host(); } QString curProvider; QDomNodeList providers = theDoc.elementsByTagName("ImageryProvider"); for (int i=0; i<providers.size(); ++i) { QDomNode nd = providers.at(i); QDomElement provider = nd.firstChildElement("Attribution"); if (!provider.isNull()) curProvider = provider.text(); QDomNodeList coverages = nd.toElement().elementsByTagName("CoverageArea"); for (int j=0; j<coverages.size(); ++j) { QDomNode cover = coverages.at(j); BingProvider prov; prov.name = curProvider; prov.zoomMin = cover.firstChildElement("ZoomMin").text().toInt(); prov.zoomMax = cover.firstChildElement("ZoomMax").text().toInt(); QDomElement bbox = cover.firstChildElement("BoundingBox"); prov.bbox.setBottom(bbox.firstChildElement("SouthLatitude").text().toDouble()); prov.bbox.setLeft(bbox.firstChildElement("WestLongitude").text().toDouble()); prov.bbox.setTop(bbox.firstChildElement("NorthLatitude").text().toDouble()); prov.bbox.setRight(bbox.firstChildElement("EastLongitude").text().toDouble()); theProviders << prov; } } isLoaded = true; } �������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MMsBingMapBackground/msbingmapadapter.h������������������������0000664�0000000�0000000�00000011324�11770671653�0027207�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MSLIVEMAP_H #define MSLIVEMAP_H #include "mapadapter.h" #include "IMapAdapterFactory.h" #include "IMapWatermark.h" struct BingProvider { QString name; int zoomMin; int zoomMax; QRectF bbox; }; //! MapAdapter for Ms Bing Maps /*! * This is a conveniece class, which extends and configures a TileMapAdapter * @author Kai Winter <kaiwinter@gmx.de> */ class MsBingMapAdapter : public MapAdapter, public IMapWatermark { Q_OBJECT Q_INTERFACES(IMapAdapter IMapWatermark) public: //! constructor /*! * This construct a Google Adapter */ MsBingMapAdapter(); virtual ~MsBingMapAdapter(); virtual QPoint coordinateToDisplay(const QPointF&) const; virtual QPointF displayToCoordinate(const QPoint&) const; //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const; virtual int getTileSizeH () const; //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &bbox) const; //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &bbox) const; //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const; //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag() const; virtual void setSourceTag (const QString& value); //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const; virtual int getAdaptedZoom() const; virtual int getAdaptedMinZoom(const QRectF &bbox) const; virtual int getAdaptedMaxZoom(const QRectF &bbox) const; virtual QString getQuery(const QRectF& , const QRectF& , const QRect&) const { return ""; } virtual bool isTiled() const { return true; } virtual QRectF getBoundingbox() const; virtual int getTilesWE(int zoom) const; virtual int getTilesNS(int zoom) const; virtual void cleanup() {} virtual bool toXML(QXmlStreamWriter& /*stream*/) { return true; } virtual void fromXML(QXmlStreamReader& /*xParent*/) {} virtual QString toPropertiesHtml() {return "";} virtual void setSettings(QSettings* aSet) {theSets = aSet;} virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); //IMapWatermark virtual QString getAttributionsHtml(const QRectF& bbox, const QRect& screen); virtual QString getLogoHtml(); protected: virtual void zoom_in(); virtual void zoom_out(); virtual QString getQuery(int x, int y, int z) const; virtual bool isValid(int x, int y, int z) const; virtual QPixmap getPixmap(const QRectF& /*wgs84Bbox*/, const QRectF& /*projBbox*/, const QRect& /*size*/) const { return QPixmap(); } virtual QMenu* getMenu() const { return NULL; } private: virtual QString getQ(double longitude, double latitude, int zoom) const; double getMercatorLatitude(double YCoord) const; double getMercatorYCoord(double lati) const; IImageManager* theImageManager; int srvNum; QString theSource; bool isLoaded; QList<BingProvider> theProviders; QSettings* theSets; private slots: void on_adapterDataFinished(QNetworkReply* rply); }; class MsBingMapAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new MsBingMapAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/����������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0022763�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/MNavitBackground.pri��������������������������0000664�0000000�0000000�00000000450�11770671653�0026674�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������HEADERS += IMapAdapter.h \ IImageManager.h \ NavitAdapter.h \ NavitBin.h \ NavitZip.h \ NavitFeature.h SOURCES += \ TagSelector.cpp \ SvgCache.cpp \ NavitAdapter.cpp \ NavitBin.cpp \ NavitZip.cpp \ NavitFeature.cpp \ RESOURCES += MNavitBackground.qrc ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/MNavitBackground.pro��������������������������0000664�0000000�0000000�00000001752�11770671653�0026710�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MNavitBackgroundPlugin) QT += network \ xml \ svg INCLUDEPATH += $$MERKAARTOR_SRC_DIR/src DEPENDPATH += $$MERKAARTOR_SRC_DIR/src INCLUDEPATH += $$MERKAARTOR_SRC_DIR/src/PaintStyle $$MERKAARTOR_SRC_DIR/src/Utils DEPENDPATH += $$MERKAARTOR_SRC_DIR/src/PaintStyle $$MERKAARTOR_SRC_DIR/src/Utils include(../../../src/PaintStyle/PaintStyle.pri) include(MNavitBackground.pri) COMMON_DIR = $${MERKAARTOR_SRC_DIR}/binaries win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib } symbian { # Load predefined include paths (e.g. QT_PLUGINS_BASE_DIR) to be used in the pro-files load(data_caging_paths) # EPOCALLOWDLLDATA have to set true because Qt macros has initialised global data TARGET.EPOCALLOWDLLDATA=1 # Defines plugin files into Symbian .pkg package pluginDep.sources = MNavitBackgroundPlugin.dll pluginDep.path = $$QT_PLUGINS_BASE_DIR/background DEPLOYMENT += pluginDep } ����������������������merkaartor-0.18.1/plugins/background/MNavitBackground/MNavitBackground.qrc��������������������������0000664�0000000�0000000�00000000202�11770671653�0026662�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/Styles"> <file alias="Mapnik.mas">../../../Styles/Mapnik.mas</file> </qresource> </RCC> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitAdapter.cpp������������������������������0000664�0000000�0000000�00000062510�11770671653�0026055�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: NavitAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "NavitAdapter.h" #include <QCoreApplication> #include <QtPlugin> #include <QAction> #include <QFileDialog> #include <QPainter> #include <QMessageBox> #include <QInputDialog> #include <QTimer> #include <QBuffer> #include <QPair> #include <QStringList> #include <QDebug> #include <math.h> #include "MasPaintStyle.h" static const QUuid theUid ("{afc13af7-d538-48e1-9997-a2b45db5b3ff}"); static const QString theName("Navit"); QUuid NavitAdapterFactory::getId() const { return theUid; } QString NavitAdapterFactory::getName() const { return theName; } /********************************/ #define FILTER_OPEN_SUPPORTED \ tr("Supported formats")+" (*.bin)\n" \ +tr("All Files (*)") double angToRad(double a) { return a*M_PI/180.; } QPoint NavitProject(QPointF i) { int x = i.x()*6371000.0*M_PI/180; int y = log(tan(M_PI_4+i.y()*M_PI/360))*6371000.0; return QPoint(x, y); } QPointF mercatorProject(const QPointF& c) { double x = angToRad(c.x()) / M_PI * 20037508.34; double y = log(tan(angToRad(c.y())) + 1/cos(angToRad(c.y()))) / M_PI * (20037508.34); return QPointF(x, y); } static QString attrmap( "n *=* point_unkn\n" "n Annehmlichkeit=Hochsitz poi_hunting_stand\n" "n addr:housenumber=* house_number\n" "n aeroway=aerodrome poi_airport\n" "n aeroway=airport poi_airport\n" "n aeroway=helipad poi_heliport\n" "n aeroway=terminal poi_airport\n" "n amenity=atm poi_bank\n" "n amenity=bank poi_bank\n" "n amenity=bench poi_bench\n" "n amenity=biergarten poi_biergarten\n" "n amenity=bus_station poi_bus_station\n" "n amenity=cafe poi_cafe\n" "n amenity=cinema poi_cinema\n" "n amenity=college poi_school_college\n" "n amenity=courthouse poi_justice\n" "n amenity=drinking_water poi_potable_water\n" "n amenity=fast_food poi_fastfood\n" "n amenity=fire_station poi_firebrigade\n" "n amenity=fountain poi_fountain\n" "n amenity=fuel poi_fuel\n" "n amenity=grave_yard poi_cemetery\n" "n amenity=hospital poi_hospital\n" "n amenity=hunting_stand poi_hunting_stand\n" "n amenity=kindergarten poi_kindergarten\n" "n amenity=library poi_library\n" "n amenity=nightclub poi_nightclub\n" "n amenity=park_bench poi_bench\n" "n amenity=parking poi_car_parking\n" "n amenity=pharmacy poi_pharmacy\n" "n amenity=place_of_worship,religion=christian poi_church\n" "n amenity=police poi_police\n" "n amenity=post_box poi_post_box\n" "n amenity=post_office poi_post_office\n" "n amenity=prison poi_prison\n" "n amenity=pub poi_bar\n" "n amenity=public_building poi_public_office\n" "n amenity=recycling poi_recycling\n" "n amenity=restaurant poi_restaurant\n" "n amenity=school poi_school\n" "n amenity=shelter poi_shelter\n" "n amenity=taxi poi_taxi\n" "n amenity=tec_common tec_common\n" "n amenity=telephone poi_telephone\n" "n amenity=theatre poi_theater\n" "n amenity=toilets poi_restroom\n" "n amenity=toilets poi_toilets\n" "n amenity=townhall poi_townhall\n" "n amenity=university poi_school_university\n" "n amenity=vending_machine poi_vending_machine\n" "n barrier=bollard barrier_bollard\n" "n barrier=cycle_barrier barrier_cycle\n" "n barrier=lift_gate barrier_lift_gate\n" "n car=car_rental poi_car_rent\n" "n highway=bus_station poi_bus_station\n" "n highway=bus_stop poi_bus_stop\n" "n highway=mini_roundabout mini_roundabout\n" "n highway=motorway_junction highway_exit\n" "n highway=stop traffic_sign_stop\n" "n highway=traffic_signals traffic_signals\n" "n highway=turning_circle turning_circle\n" "n historic=boundary_stone poi_boundary_stone\n" "n historic=castle poi_castle\n" "n historic=memorial poi_memorial\n" "n historic=monument poi_monument\n" "n historic=* poi_ruins\n" "n landuse=cemetery poi_cemetery\n" "n leisure=fishing poi_fish\n" "n leisure=golf_course poi_golf\n" "n leisure=marina poi_marine\n" "n leisure=playground poi_playground\n" "n leisure=slipway poi_boat_ramp\n" "n leisure=sports_centre poi_sport\n" "n leisure=stadium poi_stadium\n" "n man_made=tower poi_tower\n" "n military=airfield poi_military\n" "n military=barracks poi_military\n" "n military=bunker poi_military\n" "n military=danger_area poi_danger_area\n" "n military=range poi_military\n" "n natural=bay poi_bay\n" "n natural=peak poi_peak\n" "n natural=tree poi_tree\n" "n place=city town_label_2e5\n" "n place=hamlet town_label_2e2\n" "n place=locality town_label_2e0\n" "n place=suburb district_label\n" "n place=town town_label_2e4\n" "n place=village town_label_2e3\n" "n power=tower power_tower\n" "n power=sub_station power_substation\n" "n railway=halt poi_rail_halt\n" "n railway=level_crossing poi_level_crossing\n" "n railway=station poi_rail_station\n" "n railway=tram_stop poi_rail_tram_stop\n" "n shop=baker poi_shop_baker\n" "n shop=bakery poi_shop_baker\n" "n shop=beverages poi_shop_beverages\n" "n shop=bicycle poi_shop_bicycle\n" "n shop=butcher poi_shop_butcher\n" "n shop=car poi_car_dealer_parts\n" "n shop=car_repair poi_repair_service\n" "n shop=clothes poi_shop_apparel\n" "n shop=convenience poi_shop_grocery\n" "n shop=drogist poi_shop_drugstore\n" "n shop=florist poi_shop_florist\n" "n shop=fruit poi_shop_fruit\n" "n shop=furniture poi_shop_furniture\n" "n shop=garden_centre poi_shop_handg\n" "n shop=hardware poi_shop_handg\n" "n shop=hairdresser poi_hairdresser\n" "n shop=kiosk poi_shop_kiosk\n" "n shop=optician poi_shop_optician\n" "n shop=parfum poi_shop_parfum\n" "n shop=photo poi_shop_photo\n" "n shop=shoes poi_shop_shoes\n" "n shop=supermarket poi_shopping\n" "n sport=baseball poi_baseball\n" "n sport=basketball poi_basketball\n" "n sport=climbing poi_climbing\n" "n sport=golf poi_golf\n" "n sport=motor_sports poi_motor_sport\n" "n sport=skiing poi_skiing\n" "n sport=soccer poi_soccer\n" "n sport=stadium poi_stadium\n" "n sport=swimming poi_swimming\n" "n sport=tennis poi_tennis\n" "n tourism=attraction poi_attraction\n" "n tourism=camp_site poi_camp_rv\n" "n tourism=caravan_site poi_camp_rv\n" "n tourism=guest_house poi_guesthouse\n" "n tourism=hostel poi_hostel\n" "n tourism=hotel poi_hotel\n" "n tourism=information poi_information\n" "n tourism=motel poi_motel\n" "n tourism=museum poi_museum_history\n" "n tourism=picnic_site poi_picnic\n" "n tourism=theme_park poi_resort\n" "n tourism=viewpoint poi_viewpoint\n" "n tourism=zoo poi_zoo\n" "n traffic_sign=city_limit traffic_sign_city_limit\n" "w *=* street_unkn\n" "w addr:interpolation=even house_number_interpolation_even\n" "w addr:interpolation=odd house_number_interpolation_odd\n" "w addr:interpolation=all house_number_interpolation_all\n" "w addr:interpolation=alphabetic house_number_interpolation_alphabetic\n" "w aerialway=cable_car lift_cable_car\n" "w aerialway=chair_lift lift_chair\n" "w aerialway=drag_lift lift_drag\n" "w aeroway=aerodrome poly_airport\n" "w aeroway=apron poly_apron\n" "w aeroway=runway aeroway_runway\n" "w aeroway=taxiway aeroway_taxiway\n" "w aeroway=terminal poly_terminal\n" "w amenity=college poly_college\n" "w amenity=grave_yard poly_cemetery\n" "w amenity=parking poly_car_parking\n" "w amenity=place_of_worship poly_building\n" "w amenity=university poly_university\n" "w boundary=administrative border_country\n" "w boundary=civil border_civil\n" "w boundary=national_park border_national_park\n" "w boundary=political border_political\n" "w building=* poly_building\n" "w contour_ext=elevation_major height_line_1\n" "w contour_ext=elevation_medium height_line_2\n" "w contour_ext=elevation_minor height_line_3\n" #if 0 /* FIXME: Implement this as attribute */ "w cycleway=track cycleway\n" #endif "w highway=bridleway bridleway\n" "w highway=bus_guideway bus_guideway\n" "w highway=construction street_construction\n" "w highway=cyclepath cycleway\n" "w highway=cycleway cycleway\n" "w highway=footway footway\n" "w highway=footway,piste:type=nordic footway_and_piste_nordic\n" "w highway=living_street living_street\n" "w highway=minor street_1_land\n" "w highway=parking_lane street_parking_lane\n" "w highway=path path\n" "w highway=path,bicycle=designated cycleway\n" "w highway=path,foot=designated footway\n" "w highway=path,horse=designated bridleway\n" "w highway=path,sac_scale=alpine_hiking hiking_alpine\n" "w highway=path,sac_scale=demanding_alpine_hiking hiking_alpine_demanding\n" "w highway=path,sac_scale=demanding_mountain_hiking hiking_mountain_demanding\n" "w highway=path,sac_scale=difficult_alpine_hiking hiking_alpine_difficult\n" "w highway=path,sac_scale=hiking hiking\n" "w highway=path,sac_scale=mountain_hiking hiking_mountain\n" "w highway=pedestrian street_pedestrian\n" "w highway=pedestrian,area=1 poly_pedestrian\n" "w highway=plaza poly_plaza\n" "w highway=motorway highway_land\n" "w highway=motorway,rural=0 highway_city\n" "w highway=motorway_link ramp\n" "w highway=trunk street_4_land\n" "w highway=trunk,name=*,rural=1 street_4_land\n" "w highway=trunk,name=* street_4_city\n" "w highway=trunk,rural=0 street_4_city\n" "w highway=trunk_link ramp\n" "w highway=primary street_4_land\n" "w highway=primary,name=*,rural=1 street_4_land\n" "w highway=primary,name=* street_4_city\n" "w highway=primary,rural=0 street_4_city\n" "w highway=primary_link ramp\n" "w highway=secondary street_3_land\n" "w highway=secondary,name=*,rural=1 street_3_land\n" "w highway=secondary,name=* street_3_city\n" "w highway=secondary,rural=0 street_3_city\n" "w highway=secondary,area=1 poly_street_3\n" "w highway=secondary_link ramp\n" "w highway=tertiary street_2_land\n" "w highway=tertiary,name=*,rural=1 street_2_land\n" "w highway=tertiary,name=* street_2_city\n" "w highway=tertiary,rural=0 street_2_city\n" "w highway=tertiary,area=1 poly_street_2\n" "w highway=tertiary_link ramp\n" "w highway=residential street_1_city\n" "w highway=residential,area=1 poly_street_1\n" "w highway=unclassified street_1_city\n" "w highway=unclassified,area=1 poly_street_1\n" "w highway=road street_1_city\n" "w highway=service street_service\n" "w highway=service,area=1 poly_service\n" "w highway=service,service=parking_aisle street_parking_lane\n" "w highway=track track_gravelled\n" "w highway=track,surface=grass track_grass\n" "w highway=track,surface=gravel track_gravelled\n" "w highway=track,surface=ground track_ground\n" "w highway=track,surface=paved track_paved\n" "w highway=track,surface=unpaved track_unpaved\n" "w highway=track,tracktype=grade1 track_paved\n" "w highway=track,tracktype=grade2 track_gravelled\n" "w highway=track,tracktype=grade3 track_unpaved\n" "w highway=track,tracktype=grade4 track_ground\n" "w highway=track,tracktype=grade5 track_grass\n" "w highway=track,surface=paved,tracktype=grade1 track_paved\n" "w highway=track,surface=gravel,tracktype=grade2 track_gravelled\n" "w highway=track,surface=unpaved,tracktype=grade3 track_unpaved\n" "w highway=track,surface=ground,tracktype=grade4 track_ground\n" "w highway=track,surface=grass,tracktype=grade5 track_grass\n" "w highway=unsurfaced track_gravelled\n" "w highway=steps steps\n" "w historic=archaeological_site poly_archaeological_site\n" "w historic=battlefield poly_battlefield\n" "w historic=ruins poly_ruins\n" "w historic=town gate poly_building\n" "w landuse=allotments poly_allotments\n" "w landuse=basin poly_basin\n" "w landuse=brownfield poly_brownfield\n" "w landuse=cemetery poly_cemetery\n" "w landuse=commercial poly_commercial\n" "w landuse=construction poly_construction\n" "w landuse=farm poly_farm\n" "w landuse=farmland poly_farm\n" "w landuse=farmyard poly_town\n" "w landuse=forest poly_wood\n" "w landuse=greenfield poly_greenfield\n" "w landuse=industrial poly_industry\n" "w landuse=landfill poly_landfill\n" "w landuse=military poly_military\n" "w landuse=plaza poly_plaza\n" "w landuse=quarry poly_quarry\n" "w landuse=railway poly_railway\n" "w landuse=recreation_ground poly_recreation_ground\n" "w landuse=reservoir poly_reservoir\n" "w landuse=residential poly_town\n" "w landuse=residential,area=1 poly_town\n" "w landuse=retail poly_retail\n" "w landuse=village_green poly_village_green\n" "w landuse=vineyard poly_farm\n" "w leisure=common poly_common\n" "w leisure=fishing poly_fishing\n" "w leisure=garden poly_garden\n" "w leisure=golf_course poly_golf_course\n" "w leisure=marina poly_marina\n" "w leisure=nature_reserve poly_nature_reserve\n" "w leisure=park poly_park\n" "w leisure=pitch poly_sports_pitch\n" "w leisure=playground poly_playground\n" "w leisure=sports_centre poly_sport\n" "w leisure=stadium poly_sports_stadium\n" "w leisure=track poly_sports_track\n" "w leisure=water_park poly_water_park\n" "w military=airfield poly_airfield\n" "w military=barracks poly_barracks\n" "w military=danger_area poly_danger_area\n" "w military=naval_base poly_naval_base\n" "w military=range poly_range\n" "w natural=beach poly_beach\n" "w natural=coastline water_line\n" "w natural=fell poly_fell\n" "w natural=glacier poly_glacier\n" "w natural=heath poly_heath\n" "w natural=land poly_land\n" "w natural=marsh poly_marsh\n" "w natural=mud poly_mud\n" "w natural=scree poly_scree\n" "w natural=scrub poly_scrub\n" "w natural=water poly_water\n" "w natural=wood poly_wood\n" "w piste:type=downhill,piste:difficulty=advanced piste_downhill_advanced\n" "w piste:type=downhill,piste:difficulty=easy piste_downhill_easy\n" "w piste:type=downhill,piste:difficulty=expert piste_downhill_expert\n" "w piste:type=downhill,piste:difficulty=freeride piste_downhill_freeride\n" "w piste:type=downhill,piste:difficulty=intermediate piste_downhill_intermediate\n" "w piste:type=downhill,piste:difficulty=novice piste_downhill_novice\n" "w piste:type=nordic piste_nordic\n" "w place=suburb poly_place1\n" "w place=hamlet poly_place2\n" "w place=village poly_place3\n" "w place=municipality poly_place4\n" "w place=town poly_place5\n" "w place=city poly_place6\n" "w power=line powerline\n" "w railway=abandoned rail_abandoned\n" "w railway=disused rail_disused\n" "w railway=light_rail rail_light\n" "w railway=monorail rail_mono\n" "w railway=narrow_gauge rail_narrow_gauge\n" "w railway=preserved rail_preserved\n" "w railway=rail rail\n" "w railway=subway rail_subway\n" "w railway=tram rail_tram\n" "w route=ferry ferry\n" "w route=ski piste_nordic\n" "w sport=* poly_sport\n" "w tourism=artwork poly_artwork\n" "w tourism=attraction poly_attraction\n" "w tourism=camp_site poly_camp_site\n" "w tourism=caravan_site poly_caravan_site\n" "w tourism=picnic_site poly_picnic_site\n" "w tourism=theme_park poly_theme_park\n" "w tourism=zoo poly_zoo\n" "w waterway=canal water_canal\n" "w waterway=drain water_drain\n" "w waterway=river water_river\n" "w waterway=riverbank poly_water\n" "w waterway=stream water_stream\n" "w barrier=ditch ditch\n" "w barrier=hedge hedge\n" "w barrier=fence fence\n" "w barrier=wall wall\n" "w barrier=retaining_wall retaining_wall\n" "w barrier=city_wall city_wall\n" ); struct item_name { enum item_type item; char *name; }; struct item_name item_names[]={ #define ITEM2(x,y) ITEM(y) #define ITEM(x) { type_##x, #x }, #include "item_def.h" #undef ITEM2 #undef ITEM }; enum item_type item_from_name(const char *name) { int i; for (i=0 ; i < sizeof(item_names)/sizeof(struct item_name) ; i++) { if (! strcmp(item_names[i].name, name)) return item_names[i].item; } return type_none; } /*****/ #define DEFAULTWIDTH 6 #define LANEWIDTH 4 qreal CalculateWidth(NavitFeature& f) { qreal Width; QString s(f.tagValue("width",QString())); if (!s.isNull()) { Width = s.toDouble(); return Width; } QString h = f.tagValue("highway",QString()); if (s.isNull()) { Width = DEFAULTWIDTH; return Width; } if ( (h == "motorway") || (h=="motorway_link") ) Width = 4*LANEWIDTH; // 3 lanes plus emergency else if ( (h == "trunk") || (h=="trunk_link") ) Width = 3*LANEWIDTH; // 2 lanes plus emergency else if ( (h == "primary") || (h=="primary_link") ) Width = 2*LANEWIDTH; // 2 lanes else if (h == "secondary") Width = 2*LANEWIDTH; // 2 lanes else if (h == "tertiary") Width = 1.5*LANEWIDTH; // shared middle lane else if (h == "cycleway") Width = 1.5; Width = DEFAULTWIDTH; return Width; } NavitAdapter::NavitAdapter() { QAction* loadFile = new QAction(tr("Load Navit file..."), this); loadFile->setData(theUid.toString()); connect(loadFile, SIGNAL(triggered()), SLOT(onLoadFile())); theMenu = new QMenu(); theMenu->addAction(loadFile); loaded = false; // loaded = navit.setFilename("C:/home/cbro/Merkaartor/osm_bbox_11.3,47.9,11.7,48.2.bin"); // loaded = navit.setFilename("C:/home/cbro/Merkaartor/osm_bbox_4.2,50.7,4.6,50.9.bin"); // loaded = navit.setFilename("C:/home/cbro/Merkaartor/belgium.navit.bin"); MasPaintStyle theStyle; theStyle.loadPainters(":/Styles/Mapnik.mas"); for (int i=0; i<theStyle.painterSize(); ++i) { thePrimitivePainters.append(PrimitivePainter(*theStyle.getPainter(i))); } QStringList osmAttr = attrmap.split("\n", QString::SkipEmptyParts); foreach (QString l, osmAttr) { QStringList flds = l.split("\t", QString::SkipEmptyParts); item_type typ = item_from_name(flds[2].toLatin1().data()); if (typ == type_none) continue; NavitFeature f; QStringList sl = flds[1].split(","); foreach(QString t, sl) { QStringList kv = t.split("="); f.Tags.append(qMakePair(kv[0], kv[1])); } bool painterMatch = false; for(int i=0; i< thePrimitivePainters.size(); ++i) { if (thePrimitivePainters[i].matchesTag(&f, 0)) { myStyles.insert((quint32)typ, thePrimitivePainters[i]); painterMatch = true; break; } } if (painterMatch && typ > type_line && typ < type_area) { qreal wdth = CalculateWidth(f); myStyles[typ].BackgroundScale *= wdth; myStyles[typ].ForegroundScale *= wdth; myStyles[typ].TouchupScale *= wdth; } } } NavitAdapter::~NavitAdapter() { } void NavitAdapter::onLoadFile() { QString fileName = QFileDialog::getOpenFileName( NULL, tr("Open Navit file"), "", FILTER_OPEN_SUPPORTED); if (fileName.isEmpty()) return; loaded = navit.setFilename(fileName); emit forceRefresh(); } void NavitAdapter::setFile(const QString& fn) { loaded = navit.setFilename(fn); emit forceRefresh(); } QString NavitAdapter::getHost() const { return ""; } QUuid NavitAdapter::getId() const { return QUuid(theUid); } IMapAdapter::Type NavitAdapter::getType() const { return IMapAdapter::DirectBackground; } QString NavitAdapter::getName() const { return theName; } QMenu* NavitAdapter::getMenu() const { return theMenu; } QRectF NavitAdapter::getBoundingbox() const { return QRectF(QPointF(-6371000.0/2, -6371000.0/2), QPointF(6371000.0/2, 6371000.0/2)); } QString NavitAdapter::projection() const { return "EPSG:3857"; } QPixmap NavitAdapter::getPixmap(const QRectF& wgs84Bbox, const QRectF& /*projBbox*/, const QRect& src) const { if (!loaded) return QPixmap(); QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter P(&pix); P.setRenderHint(QPainter::Antialiasing); render(&P, wgs84Bbox, wgs84Bbox, src); P.end(); return pix; } void NavitAdapter::render(QPainter* P, const QRectF& fullbox, const QRectF& selbox, const QRect& src) const { if (!loaded) return; QRectF fBox(NavitProject(fullbox.topLeft()), NavitProject(fullbox.bottomRight())); QRectF sBox(NavitProject(selbox.topLeft()), NavitProject(selbox.bottomRight())); QList<NavitFeature> theFeats; navit.getFeatures(sBox.toRect(), theFeats); qDebug () << "Feats: " << theFeats.size(); if (!theFeats.size()) return; QTransform tfm; double ScaleLon = src.width() / fBox.width(); double ScaleLat = src.height() / fBox.height(); double PLon = fBox.center().x() * ScaleLon; double PLat = fBox.center().y() * ScaleLat; double DeltaLon = src.width() / 2 - PLon; double DeltaLat = src.height() - (src.height() / 2 - PLat); double LengthOfOneDegreeLat = 6378137.0 * M_PI / 180; double LengthOfOneDegreeLon = LengthOfOneDegreeLat * fabs(cos(angToRad(fullbox.center().y()))); double lonAnglePerM = 1 / LengthOfOneDegreeLon; double PixelPerM = src.width() / (double)fullbox.width() * lonAnglePerM; tfm.setMatrix(ScaleLon, 0, 0, 0, -ScaleLat, 0, DeltaLon, DeltaLat, 1); QPainterPath clipPath; clipPath.addRect(sBox.adjusted(-1000, -1000, 1000, 1000)); foreach (NavitFeature f, theFeats) { if (f.coordinates.size() > 1) { QPolygonF d(f.coordinates); QPainterPath aPath; aPath.addPolygon(d); // QRect br = d.boundingRect(); // qDebug() << "brect: " << br; aPath = aPath.intersected(clipPath); // if (!aPath.intersects(pBox)) // continue; // if ((f.type & 0xc0000000) == 0xc0000000) { // P.setPen(QPen(Qt::lightGray, 1)); // aPath.closeSubpath(); // P.drawPath(aPath); //// P.drawPolygon(QPolygon(f.coordinates)); // } else { // P.setPen(QPen(Qt::blue, 2)); //// P.drawPolyline(f.coordinates); // P.drawPath(aPath); // } if (!aPath.isEmpty()) { if (myStyles.contains(f.type)) { if (myStyles[f.type].matchesZoom(PixelPerM)) { QPainterPath pp = tfm.map(aPath); if ((f.type & 0xc0000000) == 0xc0000000) { pp.closeSubpath(); myStyles[f.type].drawBackground(&pp, P, PixelPerM); } else { myStyles[f.type].drawBackground(&pp, P, PixelPerM); myStyles[f.type].drawForeground(&pp, P, PixelPerM); } myStyles[f.type].drawTouchup(&pp, P, PixelPerM); // f.painter()->drawLabel(&pp, P, PixelPerM); } } } } else { if (f.coordinates.size() == 1) { if (!sBox.contains(f.coordinates[0])) continue; // P.setPen(QPen(Qt::red, 5)); // P.drawPoint(f.coordinates[0]); if (myStyles.contains(f.type)) { if (myStyles[f.type].matchesZoom(PixelPerM)) { QPointF pp = tfm.map(f.coordinates[0]); myStyles[f.type].drawTouchup(&pp, P, PixelPerM); // myStyles[StyleNr(w)]->drawLabel(&pp, &P, PixelPerM, strL[0]); } } } } } } IImageManager* NavitAdapter::getImageManager() { return NULL; } void NavitAdapter::setImageManager(IImageManager* anImageManager) { } void NavitAdapter::cleanup() { } bool NavitAdapter::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Source"); if (loaded) stream.writeAttribute("filename", navit.filename()); stream.writeEndElement(); return OK; } void NavitAdapter::fromXML(QXmlStreamReader& stream) { QString fn; while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Source") { fn = stream.attributes().value("filename").toString(); } stream.readNext(); } if (!fn.isEmpty()) setFile(fn); } QString NavitAdapter::toPropertiesHtml() { QString h; if (loaded) h += "<i>" + tr("Filename") + ": </i>" + navit.filename(); return h; } #ifndef _MOBILE Q_EXPORT_PLUGIN2(MNavitBackgroundPlugin, NavitAdapterFactory) #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitAdapter.h��������������������������������0000664�0000000�0000000�00000011012�11770671653�0025511�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: NavitAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef NAVITADAPTER_H #define NAVITADAPTER_H #include "IMapAdapter.h" #include "IMapAdapterFactory.h" #include <QLocale> #include <QByteArray> #include <QHash> #include "NavitBin.h" #include "PrimitivePainter.h" class MasPaintStyle; class NavitAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: NavitAdapter(); virtual ~NavitAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const { return ""; } virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* /*aSet*/) {} public: void setFile(const QString& fn); void render(QPainter* P, const QRectF& fullbox, const QRectF& selbox, const QRect& src) const; public slots: void onLoadFile(); protected: bool alreadyLoaded(QString fn) const; private: QMenu* theMenu; bool loaded; NavitBin navit; QHash< quint32, PrimitivePainter > myStyles; QList<PrimitivePainter> thePrimitivePainters; }; class NavitAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new NavitAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif // NAVITADAPTER_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitBin.cpp����������������������������������0000664�0000000�0000000�00000022542�11770671653�0025206�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: NavitBin // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "NavitBin.h" #include "NavitZip.h" #include <QCoreApplication> #include <QDebug> #include <QMessageBox> #include <QDataStream> #include <QPair> #include <math.h> NavitBin::NavitBin() : zip(NULL) { } NavitBin::~NavitBin() { if (zip) { delete zip; zip = NULL; } } bool NavitBin::setFilename(const QString& filename) { m_filename = QString(); zip = new NavitZip(); if (!zip->setZip(filename)) { QMessageBox::critical(0,QCoreApplication::translate("NavitBackground","Not a valid file"),QCoreApplication::translate("NavitBackground","Cannot open file.")); return false; } int idx = zip->indexNum; if (idx == -1) { QMessageBox::critical(0,QCoreApplication::translate("NavitBackground","Not a valid file"),QCoreApplication::translate("NavitBackground","Cannot locate index.")); return false; } if (!readTile(idx)) { QMessageBox::critical(0,QCoreApplication::translate("NavitBackground","Not a valid file"),QCoreApplication::translate("NavitBackground","Cannot read index.")); return false; } indexTile = theTiles[idx]; m_filename = filename; return true; } QString NavitBin::filename() { return m_filename; } bool NavitBin::readTile(int aIndex) const { // qDebug() << "Reading: " << aIndex; if (theTiles.contains(aIndex)) return true; if (!zip->setCurrentFile(aIndex)) return false; NavitTile aTile; qint32 len; quint32 type; qint32 coordLen; qint32 x, y; qint32 attrLen; quint32 attrType; qint8 attr; quint16 orderMin; quint16 orderMax; QByteArray ba = zip->readCurrentFile(); QDataStream data(ba); data.setByteOrder(QDataStream::LittleEndian); while (!data.atEnd()) { NavitFeature aFeat; data >> len; data >> type; aFeat.type = type; data >> coordLen; for (int i=0; i<coordLen/2; ++i) { data >> x >> y; if ((x && y) || type==type_submap || type==type_countryindex) aFeat.coordinates << QPoint(x, y); } for (int j=2+1+coordLen; j<len; j+=2) { QByteArray attribute; data >> attrLen; data >> attrType; // qDebug() << "-- attrType: " << QString("%1").arg(attrType, 0, 16); switch (type) { case type_submap: { NavitPointer ptr; switch (attrType) { case attr_zipfile_ref: { quint32 zipref; data >> zipref; if (aFeat.coordinates.size() >= 2) { ptr.box = QRect(aFeat.coordinates[0], aFeat.coordinates[1]); ptr.zipref = zipref; } else { ptr.box = QRect(); ptr.zipref = zipref; } break; } case attr_order: { data >> orderMin; data >> orderMax; ptr.orderMin = orderMin; ptr.orderMax = orderMax; break; } default: for (unsigned int i=0; i<(attrLen-1)*sizeof(qint32); ++i) { data >> attr; attribute.append(attr); } aFeat.attributes << NavitAttribute(attrType, attribute); break; } aTile.pointers.append(ptr); break; } case type_countryindex: { NavitPointer ptr; switch (attrType) { case attr_zipfile_ref: { quint32 zipref; data >> zipref; if (aFeat.coordinates.size() >= 2) { ptr.box = QRect(aFeat.coordinates[0], aFeat.coordinates[1]); ptr.zipref = zipref; } else { ptr.box = QRect(); ptr.zipref = zipref; } break; } case attr_order: { data >> orderMin; data >> orderMax; ptr.orderMin = orderMin; ptr.orderMax = orderMax; break; } case attr_country_id: { quint32 ctry_id; data >> ctry_id; // qDebug() << "Country id: " << ctry_id; } default: for (unsigned int i=0; i<(attrLen-1)*sizeof(qint32); ++i) { data >> attr; attribute.append(attr); } aFeat.attributes << NavitAttribute(attrType, attribute); break; } aTile.pointers.append(ptr); break; } default: // qDebug() << "-- type: " << QString("%1").arg(type, 0, 16); for (unsigned int i=0; i<(attrLen-1)*sizeof(qint32); ++i) { data >> attr; attribute.append(attr); } aFeat.attributes << NavitAttribute(attrType, attribute); break; } j += attrLen-1; } aTile.features.append(aFeat); } theTiles[aIndex] = aTile; // foreach(NavitPointer p, aTile.pointers) // qDebug() << p.orderMin; return true; } //bool NavitBin::getFeatures(const QString& tileRef, QList <NavitFeature>& theFeats) const //{ // readTile(tileRef); // NavitTile t = theTiles[tileRef]; // foreach(NavitFeature f, t.features) { // if ((f.type & 0x00010000) == 0x00010000) { // POI // theFeats.append(f); // } else if ((f.type & 0xc0000000) == 0xc0000000) { // Area // theFeats.append(f); // } else if ((f.type & 0x80000000) == 0x80000000) { // Line // theFeats.append(f); // } // } //} bool NavitBin::walkTiles(const QRect& pBox, const NavitTile& theTile, int order, QList <NavitFeature>& theFeats) const { NavitTile t = theTile; foreach(NavitFeature f, t.features) { if ((f.type & 0x00010000) == 0x00010000) { // POI theFeats.append(f); } else if ((f.type & 0xc0000000) == 0xc0000000) { // Area theFeats.append(f); } else if ((f.type & 0x80000000) == 0x80000000) { // Line theFeats.append(f); } } for (int i=t.pointers.size()-1; i>=0; --i) { if (t.pointers[i].box.intersects(pBox) && order>t.pointers[i].orderMin && order<t.pointers[i].orderMax) { if (readTile(t.pointers[i].zipref)) { NavitTile ti = theTiles[t.pointers[i].zipref]; walkTiles(pBox, ti, order, theFeats); } } } return true; } bool NavitBin::getFeatures(const QRect& pBox, QList <NavitFeature>& theFeats) const { NavitTile t = indexTile; qreal r = 40030174. / pBox.width(); int order = log2(r); // qDebug() << "order: " << order; return walkTiles(pBox, t, order, theFeats); } //bool NavitBin::getFeatures(const QRect& pBox, QList <NavitFeature>& theFeats) const //{ // QString tileRef; // tileRef.fill('_', 14); // QRect tileRect = QRect(QPoint(-20015087, -20015087), QPoint(20015087, 20015087)); // int lvl = -1; // bool ok = false; // while (lvl < 13) { // ++lvl; // QSize tmpSize = tileRect.size() /2; // // qDebug() << "ref: " << tileRef << "; rect: " << tileRect << "; sz: " << tmpSize; // QRect c = QRect(tileRect.topLeft().x() + tmpSize.width(), tileRect.topLeft().y(), tmpSize.width(), tmpSize.height()); // if (c.intersects(pBox)) { // tileRect = c; // tileRef.replace(lvl, 1, 'c'); // getFeatures(tileRef, theFeats); // continue; // } // QRect d = QRect(tileRect.topLeft().x(), tileRect.topLeft().y(), tmpSize.width(), tmpSize.height()); // if (d.intersects(pBox)) { // tileRect = d; // tileRef.replace(lvl, 1, 'd'); // getFeatures(tileRef, theFeats); // continue; // } // QRect a = QRect(tileRect.topLeft().x() + tmpSize.width(), tileRect.topLeft().y() + tmpSize.height(), tmpSize.width(), tmpSize.height()); // if (a.intersects(pBox)) { // tileRect = a; // tileRef.replace(lvl, 1, 'a'); // getFeatures(tileRef, theFeats); // continue; // } // QRect b = QRect(tileRect.topLeft().x(), tileRect.topLeft().y() + tmpSize.height(), tmpSize.width(), tmpSize.height()); // if (b.intersects(pBox)) { // tileRect = b; // tileRef.replace(lvl, 1, 'b'); // getFeatures(tileRef, theFeats); // continue; // } // } // qDebug() << "lvl: " << lvl << "; tile: " << tileRef << "; pbox: " << pBox; //} ��������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitBin.h������������������������������������0000664�0000000�0000000�00000002752�11770671653�0024654�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: NavitBin // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef NAVITBIN_H #define NAVITBIN_H #include <QPoint> #include <QPolygon> #include <QHash> #include <QStringList> #include "NavitFeature.h" class NavitZip; enum attr_type { #define ATTR2(x,y) attr_##y=x, #define ATTR(x) attr_##x, #include "attr_def.h" #undef ATTR2 #undef ATTR }; enum item_type { #define ITEM2(x,y) type_##y=x, #define ITEM(x) type_##x, #include "item_def.h" #undef ITEM2 #undef ITEM }; class NavitPointer { public: QRect box; quint32 zipref; quint16 orderMin; quint16 orderMax; }; class NavitTile { public: QList<NavitFeature> features; QList<NavitPointer> pointers; }; class NavitBin { public: NavitBin(); ~NavitBin(); bool setFilename(const QString& filename); QString filename(); bool readTile(int index) const; // bool getFeatures(const QString& tileRef, QList <NavitFeature>& theFeats) const; bool walkTiles(const QRect& box, const NavitTile& t, int order, QList <NavitFeature>& theFeats) const; bool getFeatures(const QRect& box, QList <NavitFeature>& theFeats) const; private: NavitZip* zip; mutable QHash<int, NavitTile> theTiles; NavitTile indexTile; QString m_filename; }; #endif // NAVITBIN_H ����������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitFeature.cpp������������������������������0000664�0000000�0000000�00000001370�11770671653�0026065�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "NavitFeature.h" #include <PrimitivePainter.h> NavitFeature::NavitFeature() : type(0) { } int NavitFeature::tagSize() const { return Tags.size(); } QString NavitFeature::tagValue(int i) const { return Tags[i].second; } QString NavitFeature::tagKey(int i) const { return Tags[i].first; } int NavitFeature::findKey(const QString &k) const { for (int i=0; i<Tags.size(); ++i) if (Tags[i].first == k) return i; return Tags.size(); } QString NavitFeature::tagValue(const QString& k, const QString& Default) const { for (int i=0; i<Tags.size(); ++i) if (Tags[i].first == k) return Tags[i].second; return Default; } void NavitFeature::setType(quint32 aTyp) { type = aTyp; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitFeature.h��������������������������������0000664�0000000�0000000�00000006421�11770671653�0025534�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef NAVITFEATURE_H #define NAVITFEATURE_H #include "IFeature.h" #include <QList> #include <QVector> #include <QPair> #include <QPoint> #include <QPainterPath> class PrimitivePainter; class NavitAttribute { public: NavitAttribute() : type(0) {} NavitAttribute(qint32 theType, QByteArray theAttribute) : type(theType), attribute(theAttribute) {} public: quint32 type; QByteArray attribute; }; class NavitFeature : public IFeature { friend class NavitBin; public: NavitFeature(); virtual char getType() const { return IFeature::All; } virtual QString xmlId() const { return QString(); } virtual const QDateTime& time() const { return QDateTime::currentDateTime(); } virtual int versionNumber() const { return -1; } virtual const QString& user() const { return QString(); } virtual int sizeParents() const { return 0; } virtual IFeature* getParent(int) { return NULL; } virtual const IFeature* getParent(int) const { return NULL; } virtual bool hasPainter(double) const { return false; } /** Give the id of the feature. * If the feature has no id, a random id is generated * @return the id of the current feature */ virtual const IFeature::FId& id() const {return theId;} /** check if the feature is logically deleted * @return true if logically deleted */ virtual bool isDeleted() const { return false; } /** @return the number of tags for the current object */ virtual int tagSize() const; /** if a tag with the key "k" exists, return its index. * if the key doesn't exist, return the number of tags * @return index of tag */ virtual int findKey(const QString& k) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagValue(int i) const; /** return the value of the tag with the key "k". * if such a tag doesn't exists, return Default. * @return value or Default */ virtual QString tagValue(const QString& k, const QString& Default) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagKey(int i) const; /** check if the feature has been uploaded * @return true if uploaded */ virtual bool isUploaded() const { return false; } /** check if the dirty status of the feature * @return true if the feature is dirty */ virtual bool isDirty() const { return false; } /** check if the feature is visible * @return true if visible */ virtual bool isVisible() { return true; } /** check if the feature is read-only * @return true if is read-only */ virtual bool isReadonly() { return true; } virtual const QPainterPath& getPath() const {return thePath;} void setType(quint32 aTyp); public: QList<QPair<QString, QString> > Tags; quint32 type; quint16 order; QVector<QPoint> coordinates; QList<NavitAttribute> attributes; IFeature::FId theId; QPainterPath thePath; }; #endif // NAVITFEATURE_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitZip.cpp����������������������������������0000664�0000000�0000000�00000010207�11770671653�0025233�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: NavitZip // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "NavitZip.h" #include <QDebug> #include <QFile> #include <zlib.h> NavitZip::NavitZip() : indexNum(-1) , zipFile(0) , zipMem(0) , zipLen(0) { } NavitZip::~NavitZip() { if (zipFile) delete zipFile; } void* NavitZip::setZip(QString fn) { if (zipFile) delete zipFile; zipFile = new QFile(fn); if (!zipFile->open(QIODevice::ReadOnly)) { return NULL; } zipLen = zipFile->size(); zipMem = NULL; if (zipLen) zipMem = zipFile->map(0, zipLen); zipFile->close(); if (!zipMem) return NULL; memcpy((void*)&footer, (void*)((quint32)zipMem + zipLen - sizeof(struct dirFooter)), sizeof(struct dirFooter)); if (footer.magic != DIR_FOOTER_MAGIC) { delete zipFile; zipFile = NULL; return NULL; } initialize(); return zipMem; } void NavitZip::initialize() { qDebug() << "eof: " << (quint32)zipMem + zipLen; int num = 0; struct dirHeader* cdhdr; struct dirHeader* dirstart = (struct dirHeader*) ((quint32)zipMem + footer.directoryOffset); for (cdhdr=dirstart; (quint32)cdhdr<(quint32)dirstart+footer.directorySize;) { Q_ASSERT(cdhdr->magic == 0x02014b50); if (cdhdr->sizeUncompressed) { struct dirEntry ent; ent.offset = cdhdr->relativeFileOffset; directory.insert(num, ent); char* fn = (char*) ((quint32)cdhdr + sizeof(struct dirHeader)); if (!strncmp(fn, "index", 5)) indexNum = num; } Q_ASSERT((quint32)(cdhdr) + sizeof(struct dirHeader) + cdhdr->filenameLen + cdhdr->extraLen + cdhdr->commentLen < (quint32) (zipMem) + zipLen); cdhdr = (struct dirHeader*) ((quint32)cdhdr + sizeof(struct dirHeader) + cdhdr->filenameLen + cdhdr->extraLen + cdhdr->commentLen); ++num; } qDebug() << "actual num: " << num << "; expected num: " << footer.totDirRecords; } bool NavitZip::setCurrentFile(int aIndex) { if (!directory.contains(aIndex)) return false; curOffset = directory[aIndex].offset; memcpy((void*)&curFile, (void*)((quint32)zipMem + curOffset), sizeof(struct fileHeader1)); return true; } QByteArray NavitZip::readCurrentFile() { QByteArray ba(curFile.sizeUncompressed, 0); void* fileStartPtr = (void *)((quint32)zipMem + curOffset + sizeof(struct fileHeader1) + curFile.filenameLen); switch (curFile.compressionMethod) { case 0: memcpy(ba.data(), fileStartPtr, curFile.sizeUncompressed); break; case 8: { z_stream stream; int err; void* buf = malloc(curFile.sizeCompressed); memcpy(buf, fileStartPtr, curFile.sizeCompressed); stream.next_in = (Bytef*)buf; stream.avail_in = (uInt)curFile.sizeCompressed; stream.next_out = (Bytef*)ba.data(); stream.avail_out = (uInt)curFile.sizeUncompressed; stream.zalloc = (alloc_func)0; stream.zfree = (free_func)0; err = inflateInit2(&stream, -MAX_WBITS); if (err != Z_OK) { qDebug("Decompression error %d\n", err); return QByteArray(); } err = inflate(&stream, Z_FINISH); if (err != Z_STREAM_END) { inflateEnd(&stream); if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) { qDebug("Decompression data error %d\n", err); return QByteArray(); } qDebug("Decompression error %d\n", err); return QByteArray(); } // *destLen = stream.total_out; err = inflateEnd(&stream); if (err != Z_OK) { qDebug("Decompression error %d\n", err); return QByteArray(); } break; } case 99: default: qDebug("Unsupported compression method %d\n", curFile.compressionMethod); } return ba; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/NavitZip.h������������������������������������0000664�0000000�0000000�00000004414�11770671653�0024703�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: NavitZip // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef NAVITZIP_H #define NAVITZIP_H #include <QHash> #include <QByteArray> class QFile; #define FILE_MAGIC 0x04034b50 #define DIR_HEADER_MAGIC 0x02014b50 #define DIR_FOOTER_MAGIC 0x06054b50 struct header2 { QString filename; QByteArray extra; QString comment; }; struct fileHeader1 { quint32 magic; // 0x04034b50 quint16 minVer; quint16 flag; quint16 compressionMethod; quint16 modTime; quint16 modDate; quint32 crc32; quint32 sizeCompressed; quint32 sizeUncompressed; quint16 filenameLen; quint16 extraLen; } __attribute__ ((packed)); struct dirHeader { quint32 magic; // 0x02014b50 quint16 creator; quint16 minVer; quint16 flag; quint16 compressionMethod; quint16 modTime; quint16 modDate; quint32 crc32; quint32 sizeCompressed; quint32 sizeUncompressed; quint16 filenameLen; quint16 extraLen; quint16 commentLen; quint16 diskNumber; quint16 internalAttributes; quint32 externalAttributes; quint32 relativeFileOffset; } __attribute__ ((packed)); struct dirEntry { quint32 offset; // fileHeader1 hdr1; // header2 hdr2; }; struct dirExtension { quint16 tag; quint16 size; quint64 zipofst; } __attribute__ ((packed)); struct dirFooter { quint32 magic; // 0x06054b50 quint16 diskNumber; quint16 dirDisk; quint16 numDirRecordsOnDisk; quint16 totDirRecords; quint32 directorySize; quint32 directoryOffset; quint16 zipCommentLen; char zipComment[0]; } __attribute__ ((packed)); class NavitZip { public: NavitZip(); ~NavitZip(); void* setZip(QString fn); bool setCurrentFile(int aIndex); QByteArray readCurrentFile(); public: struct fileHeader1 curFile; quint32 curOffset; quint32 indexNum; protected: void initialize(); private: QFile* zipFile; void* zipMem; long zipLen; struct dirFooter footer; QHash < quint32, dirEntry > directory; }; #endif // NAVITZIP_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/attr_def.h������������������������������������0000664�0000000�0000000�00000020115�11770671653�0024723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * Navit, a modular navigation system. * Copyright (C) 2005-2009 Navit Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ /* prototypes */ /* common */ ATTR2(0x00000000,none) ATTR(any) ATTR(any_xml) ATTR2(0x00010000,type_item_begin) ATTR(town_streets_item) ATTR(street_name_item) ATTR(street_name_numbers_item) ATTR(street_item) ATTR(street_number_item) ATTR(position_sat_item) ATTR(current_item) ATTR2(0x0001ffff,type_item_end) ATTR2(0x00020000,type_int_begin) ATTR(h_remove) ATTR(id) ATTR(flags) ATTR(w_remove) ATTR(x_remove) ATTR(y_remove) ATTR(flush_size) ATTR(flush_time) ATTR(zipfile_ref) ATTR(country_id) ATTR(position_sats) ATTR(position_sats_used) ATTR(update) ATTR(follow) ATTR(length) ATTR(time) ATTR(destination_length) ATTR(destination_time) ATTR(speed) ATTR(interval) ATTR(position_qual) ATTR(zoom) ATTR(retry_interval) ATTR(projection) ATTR(offroad) ATTR(vocabulary_name) ATTR(vocabulary_name_systematic) ATTR(vocabulary_distances) ATTR(announce_name_systematic_first) ATTR(antialias) ATTR(order_delta) ATTR(baudrate) ATTR(font_size_remove) ATTR(icon_xs) ATTR(icon_l) ATTR(icon_s) ATTR(spacing) ATTR(recent_dest) ATTR(destination_distance) ATTR(check_version) ATTR(details) ATTR(width) ATTR(offset) ATTR(directed) ATTR(radius) ATTR(text_size) ATTR(level) ATTR(icon_w) ATTR(icon_h) ATTR(rotation) ATTR(checksum_ignore) ATTR(position_fix_type) ATTR(timeout) ATTR(orientation) ATTR(keyboard) ATTR(position_sats_signal) ATTR(cps) ATTR(fast) ATTR(osd_configuration) ATTR(columns) ATTR(align) ATTR(sat_prn) ATTR(sat_elevation) ATTR(sat_azimuth) ATTR(sat_snr) ATTR(autozoom) ATTR(version) ATTR(autozoom_min) ATTR(maxspeed) ATTR(cdf_histsize) ATTR(message_maxage) ATTR(message_maxnum) ATTR(pitch) ATTR(roll) ATTR(yaw) ATTR(route_status) ATTR(route_weight) ATTR(distance_metric) ATTR(route_mode) ATTR(maxspeed_handling) ATTR(flags_forward_mask) ATTR(flags_reverse_mask) ATTR(house_number_interpolation) ATTR(house_number_left_interpolation) ATTR(house_number_right_interpolation) ATTR(delay) ATTR(lag) ATTR(bpp) ATTR(fullscreen) ATTR(windowid) ATTR(hog) ATTR(flags_town) ATTR(flags_street) ATTR(flags_house_number) ATTR(use_camera) ATTR(flags_graphics) ATTR(zoom_min) ATTR(zoom_max) ATTR(gamma) ATTR(brightness) ATTR(contrast) ATTR(height) ATTR(minspeed) ATTR(recspeed) ATTR(speed_cond) ATTR(shmkey) ATTR(vehicle_width) ATTR(vehicle_length) ATTR(vehicle_height) ATTR(vehicle_weight) ATTR(vehicle_axle_weight) ATTR(vehicle_dangerous_goods) ATTR(shmsize) ATTR(shmoffset) ATTR(speed_category) ATTR(static_speed) ATTR(static_distance) ATTR(through_traffic_penalty) ATTR(through_traffic_flags) ATTR2(0x00027500,type_rel_abs_begin) /* These attributes are int that can either hold relative * * or absolute values. A relative value is indicated by * * adding 0x60000000. * * * * The range of valid absolute values is -0x40000000 to * * 0x40000000, the range of relative values is from * * -0x20000000 to 0x20000000. */ ATTR(h) ATTR(w) ATTR(x) ATTR(y) ATTR(font_size) ATTR2(0x00028000,type_boolean_begin) /* boolean */ ATTR(overwrite) ATTR(active) ATTR(follow_cursor) ATTR(orientation_removeme) ATTR(tracking) ATTR(menubar) ATTR(statusbar) ATTR(toolbar) ATTR(animate) ATTR(lazy) ATTR(mkdir) ATTR(predraw) ATTR(postdraw) ATTR(button) ATTR(ondemand) ATTR(menu_on_map_click) ATTR(direction) ATTR(route_follow_straight_REMOVE) // This is to be removed with the next version ATTR(gui_speech) ATTR(town_id) /* fixme? */ ATTR(street_id) /* fixme? */ ATTR(district_id) /* fixme? */ ATTR(drag_bitmap) ATTR(use_mousewheel) ATTR(fullscreen_old) ATTR(position_magnetic_direction) ATTR(use_overlay) ATTR(night_mode) ATTR(autozoom_active) ATTR(position_valid) ATTR(frame) ATTR(tell_street_name) ATTR(bluetooth) ATTR(signal_on_map_click) ATTR(route_active) ATTR(search_active) ATTR(unsuspend) ATTR2(0x0002ffff,type_int_end) ATTR2(0x00030000,type_string_begin) ATTR(type) ATTR(label) ATTR(data) ATTR(charset) ATTR(country_all) ATTR(country_iso3) ATTR(country_iso2) ATTR(country_car) ATTR(country_name) ATTR(town_name) ATTR(town_postal) ATTR(district_name) ATTR(street_name) ATTR(street_name_systematic) ATTR(street_number) ATTR(debug) ATTR(address) ATTR(phone) ATTR(entry_fee) ATTR(open_hours) ATTR(skin) ATTR(fullscreen_removeme) ATTR(view_mode) ATTR(tilt) ATTR(media_window_title) ATTR(media_cmd) ATTR(image_codec) /* poi */ ATTR(icono) ATTR(info_html) ATTR(price_html) /* navigation */ ATTR(navigation_short) ATTR(navigation_long) ATTR(navigation_long_exact) ATTR(navigation_speech) ATTR(name) ATTR(cursorname) ATTR(source) ATTR(description) ATTR(gc_type) ATTR(layout) ATTR(position_nmea) ATTR(gpsd_query) ATTR(on_eof) ATTR(command) ATTR(src) ATTR(path) ATTR(font) ATTR(url_local) ATTR(gc_size) ATTR(gc_difficulty) ATTR(gc_terrain) ATTR(icon_src) ATTR(position_time_iso8601) ATTR(house_number) ATTR(osm_member) ATTR(osm_tag) ATTR(municipality_name) ATTR(county_name) ATTR(state_name) ATTR(message) ATTR(callbacks) ATTR(enable_expression) ATTR(fax) ATTR(email) ATTR(url) ATTR(profilename) ATTR(projectionname) ATTR(town_or_district_name) ATTR(postal) ATTR(postal_mask) ATTR(house_number_first) ATTR(house_number_last) ATTR(house_number_left_first) ATTR(house_number_left_last) ATTR(house_number_right_first) ATTR(house_number_right_last) ATTR(town_name_match) ATTR(district_name_match) ATTR(street_name_match) ATTR(language) ATTR(subtype) ATTR(filter) ATTR(daylayout) ATTR(nightlayout) ATTR(xml_text) ATTR(layout_name) ATTR(user_name) ATTR(user_pass) ATTR(status_text) ATTR(log_gpx_desc) ATTR(map_pass) ATTR(validity_period) ATTR(socket) ATTR2(0x0003ffff,type_string_end) ATTR2(0x00040000,type_special_begin) ATTR(order) ATTR(item_type) ATTR(item_types) ATTR(dash) ATTR(sequence_range) ATTR(angle_range) ATTR(speed_range) ATTR(attr_types) ATTR(ch_edge) ATTR(zipfile_ref_block) ATTR2(0x0004ffff,type_special_end) ATTR2(0x00050000,type_double_begin) ATTR(position_height) ATTR(position_speed) ATTR(position_direction) ATTR(position_hdop) ATTR(position_radius) ATTR2(0x0005ffff,type_double_end) ATTR2(0x00060000,type_coord_geo_begin) ATTR(position_coord_geo) ATTR(center) ATTR(click_coord_geo) ATTR2(0x0006ffff,type_coord_geo_end) ATTR2(0x00070000,type_color_begin) ATTR(color) ATTR(color2) ATTR(background_color) ATTR(text_color) ATTR(background_color2) ATTR2(0x0007ffff,type_color_end) ATTR2(0x00080000,type_object_begin) ATTR(navit) ATTR(log) ATTR(callback) ATTR(route) ATTR(navigation) ATTR(vehicle) ATTR(map) ATTR(bookmark_map) ATTR(bookmarks) ATTR(former_destination_map) ATTR(graphics) ATTR(gui) ATTR(trackingo) /* fixme */ ATTR(plugins) ATTR(layer) ATTR(itemgra) ATTR(polygon) ATTR(polyline) ATTR(circle) ATTR(text) ATTR(icon) ATTR(image) ATTR(arrows) ATTR(mapset) ATTR(osd) ATTR(plugin) ATTR(speech) ATTR(coord) ATTR(private_data) ATTR(callback_list) ATTR(displaylist) ATTR(transformation) ATTR(vehicleprofile) ATTR(roadprofile) ATTR(announcement) ATTR(cursor) ATTR(config) ATTR2(0x0008ffff,type_object_end) ATTR2(0x00090000,type_coord_begin) ATTR2(0x0009ffff,type_coord_end) ATTR2(0x000a0000,type_pcoord_begin) ATTR(destination) ATTR(position) ATTR2(0x000affff,type_pcoord_end) ATTR2(0x000b0000,type_callback_begin) ATTR(resize) ATTR(motion) ATTR(keypress) ATTR(window_closed) ATTR(log_gpx) ATTR(log_textfile) ATTR(graphics_ready) ATTR2(0x000bffff,type_callback_end) ATTR2(0x000c0000,type_int64_begin) ATTR(osm_nodeid) ATTR(osm_wayid) ATTR(osm_relationid) ATTR2(0x000cffff,type_int64_end) ATTR2(0x000d0000,type_group_begin) ATTR(speed_dep) ATTR2(0x000dffff,type_group_end) ATTR2(0x000e0000,type_item_type_begin) ATTR2(0x000effff,type_item_type_end) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MNavitBackground/item_def.h������������������������������������0000664�0000000�0000000�00000031122�11770671653�0024707�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** * Navit, a modular navigation system. * Copyright (C) 2005-2008 Navit Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ /* This file is generated from http://wiki.navit-project.org/index.php/Item_def.h, do not edit it, edit the wiki page instead */ ITEM2(0x00000000,none) ITEM2(0x00000001,point_unspecified) ITEM(town_streets) ITEM(street_name) ITEM(street_name_numbers) ITEM(street_number) ITEM(position_sat) /* Point */ ITEM2(0x00010000,town_label) ITEM2(0x00010001,town_label_0e0) ITEM2(0x00010002,town_label_1e0) ITEM2(0x00010003,town_label_2e0) ITEM2(0x00010004,town_label_5e0) ITEM2(0x00010005,town_label_1e1) ITEM2(0x00010006,town_label_2e1) ITEM2(0x00010007,town_label_5e1) ITEM2(0x00010008,town_label_1e2) ITEM2(0x00010009,town_label_2e2) ITEM2(0x0001000a,town_label_5e2) ITEM2(0x0001000b,town_label_1e3) ITEM2(0x0001000c,town_label_2e3) ITEM2(0x0001000d,town_label_5e3) ITEM2(0x0001000e,town_label_1e4) ITEM2(0x0001000f,town_label_2e4) ITEM2(0x00010010,town_label_5e4) ITEM2(0x00010011,town_label_1e5) ITEM2(0x00010012,town_label_2e5) ITEM2(0x00010013,town_label_5e5) ITEM2(0x00010014,town_label_1e6) ITEM2(0x00010015,town_label_2e6) ITEM2(0x00010016,town_label_5e6) ITEM2(0x00010017,town_label_1e7) ITEM2(0x00010100,district_label) ITEM2(0x00010101,district_label_0e0) ITEM2(0x00010102,district_label_1e0) ITEM2(0x00010103,district_label_2e0) ITEM2(0x00010104,district_label_5e0) ITEM2(0x00010105,district_label_1e1) ITEM2(0x00010106,district_label_2e1) ITEM2(0x00010107,district_label_5e1) ITEM2(0x00010108,district_label_1e2) ITEM2(0x00010109,district_label_2e2) ITEM2(0x0001010a,district_label_5e2) ITEM2(0x0001010b,district_label_1e3) ITEM2(0x0001010c,district_label_2e3) ITEM2(0x0001010d,district_label_5e3) ITEM2(0x0001010e,district_label_1e4) ITEM2(0x0001010f,district_label_2e4) ITEM2(0x00010110,district_label_5e4) ITEM2(0x00010111,district_label_1e5) ITEM2(0x00010112,district_label_2e5) ITEM2(0x00010113,district_label_5e5) ITEM2(0x00010114,district_label_1e6) ITEM2(0x00010115,district_label_2e6) ITEM2(0x00010116,district_label_5e6) ITEM2(0x00010117,district_label_1e7) ITEM(country_label) ITEM(town_ghost) ITEM(highway_exit_label) ITEM(port_label) ITEM(label_unkn) ITEM(highway_exit) ITEM(poi_lake) ITEM(poi_island) ITEM(poi) ITEM(waypoint) ITEM(trackpoint) ITEM(bookmark) ITEM(former_destination) ITEM(poi_land_feature) ITEM(poi_cape) ITEM(poi_rock) ITEM(poi_airport) ITEM(poi_toll_booth) ITEM(poi_fuel) ITEM(poi_hotel) ITEM(poi_camp_rv) ITEM(poi_marina) ITEM(poi_attraction) ITEM(poi_museum_history) ITEM(poi_shopping) ITEM(poi_car_dealer_parts) ITEM(poi_car_parking) ITEM(poi_wreck) ITEM(poi_building) ITEM(poi_bridge) ITEM(poi_park) ITEM(poi_water_feature) ITEM(poi_bar) ITEM(poi_picnic) ITEM(poi_hospital) ITEM(poi_camping) ITEM(poi_public_utilities) ITEM(poi_burgerking) ITEM(poi_kfc) ITEM(poi_mcdonalds) ITEM(poi_wienerwald) ITEM(poi_dining) ITEM(poi_fastfood) ITEM(poi_police) ITEM(poi_auto_club) ITEM(poi_autoservice) ITEM(poi_bank) ITEM(poi_bay) ITEM(poi_bend) ITEM(poi_boat_ramp) ITEM(poi_border_station) ITEM(poi_bowling) ITEM(poi_bus_station) ITEM(poi_bus_stop) ITEM(poi_business_service) ITEM(poi_car_rent) ITEM(poi_car_wash) ITEM(poi_casino) ITEM(poi_cemetery) ITEM(poi_church) ITEM(poi_cinema) ITEM(poi_civil_removeme) ITEM(poi_communication) ITEM(poi_concert) ITEM(poi_cove) ITEM(poi_crossing) ITEM(poi_dam) ITEM(poi_danger_area) ITEM(poi_danger_sea_wreck) ITEM(poi_daymark) ITEM(poi_diving) ITEM(poi_drinking_water) ITEM(poi_emergency) ITEM(poi_fair) ITEM(poi_firebrigade) ITEM(poi_fish) ITEM(poi_forbidden_area) ITEM(poi_shop_gps) ITEM(poi_golf) ITEM(poi_government_building) ITEM(poi_height) ITEM(poi_heliport) ITEM(poi_hotspring) ITEM(poi_icesport) ITEM(poi_information) ITEM(poi_justice) ITEM(poi_landmark) ITEM(poi_levee) ITEM(poi_library) ITEM(poi_locale) ITEM(poi_loudspeaker) ITEM(poi_mall) ITEM(poi_manmade_feature) ITEM(poi_marine) ITEM(poi_marine_type) ITEM(poi_mark) ITEM(poi_military) ITEM(poi_mine) ITEM(poi_nondangerous) ITEM(poi_oil_field) ITEM(poi_personal_service) ITEM(poi_pharmacy) ITEM(poi_post_removeme) ITEM(poi_public_office) ITEM(poi_repair_service) ITEM(poi_resort) ITEM(poi_rest_room_removeme) ITEM(poi_restaurant) ITEM(poi_restricted_area) ITEM(poi_restroom) ITEM(poi_sailing) ITEM(poi_scenic_area) ITEM(poi_school) ITEM(poi_service) ITEM(poi_shop_apparel) ITEM(poi_shop_computer) ITEM(poi_shop_department) ITEM(poi_shop_furnish_removeme) ITEM(poi_shop_grocery) ITEM(poi_shop_handg) ITEM(poi_shop_merchandise) ITEM(poi_shop_retail) ITEM(poi_shower) ITEM(poi_skiing) ITEM(poi_social_service) ITEM(poi_sounding) ITEM(poi_sport) ITEM(poi_stadium) ITEM(poi_subdivision_removeme) ITEM(poi_swimming) ITEM(poi_telephone) ITEM(poi_theater) ITEM(poi_tide) ITEM(poi_tower) ITEM(poi_trail) ITEM(poi_truck_stop) ITEM(poi_tunnel) ITEM(poi_wine) ITEM(poi_worship) ITEM(poi_wrecker) ITEM(poi_zoo) ITEM(rg_point) ITEM(point_unkn) ITEM(traffic_signals) ITEM(poi_gc_multi) ITEM(poi_gc_tradi) ITEM(poi_gc_event) ITEM(poi_gc_mystery) ITEM(poi_gc_question) ITEM(poi_gc_stages) ITEM(poi_gc_reference) ITEM(poi_gc_webcam) ITEM(poi_cafe) ITEM(nav_straight) ITEM(nav_turnaround) ITEM(nav_right_1) ITEM(nav_right_2) ITEM(nav_right_3) ITEM(nav_left_1) ITEM(nav_left_2) ITEM(nav_left_3) ITEM(nav_roundabout_r1) ITEM(nav_roundabout_r2) ITEM(nav_roundabout_r3) ITEM(nav_roundabout_r4) ITEM(nav_roundabout_r5) ITEM(nav_roundabout_r6) ITEM(nav_roundabout_r7) ITEM(nav_roundabout_r8) ITEM(nav_roundabout_l1) ITEM(nav_roundabout_l2) ITEM(nav_roundabout_l3) ITEM(nav_roundabout_l4) ITEM(nav_roundabout_l5) ITEM(nav_roundabout_l6) ITEM(nav_roundabout_l7) ITEM(nav_roundabout_l8) ITEM(poi_peak) ITEM(poi_rail_station) ITEM(poi_image) ITEM(mini_roundabout) ITEM(turning_circle) ITEM(poi_townhall) ITEM(poi_level_crossing) ITEM(poi_rail_halt) ITEM(poi_rail_tram_stop) ITEM(poi_wifi) ITEM(poi_bench) ITEM(poi_biergarten) ITEM(poi_boundary_stone) ITEM(poi_castle) ITEM(poi_hunting_stand) ITEM(poi_memorial) ITEM(poi_monument) ITEM(poi_shelter) ITEM(poi_fountain) ITEM(poi_potable_water) ITEM(poi_toilets) ITEM(poi_viewpoint) ITEM(poi_ruins) ITEM(nav_none) ITEM(nav_position) ITEM(nav_destination) ITEM(tec_common) ITEM(trackpoint_tracked) ITEM(announcement) ITEM(poi_post_box) ITEM(poi_post_office) ITEM(poi_school_university) ITEM(poi_school_college) ITEM(poi_motel) ITEM(poi_guesthouse) ITEM(poi_hostel) ITEM(poi_taxi) ITEM(poi_prison) ITEM(poi_kindergarten) ITEM(poi_shop_butcher) ITEM(poi_shop_baker) ITEM(poi_shop_kiosk) ITEM(poi_soccer) ITEM(poi_basketball) ITEM(poi_baseball) ITEM(poi_climbing) ITEM(poi_motor_sport) ITEM(poi_tennis) ITEM(house_number) ITEM(route_start) ITEM(route_end) ITEM(selected_point) ITEM(power_tower) ITEM(route_start_reverse) ITEM(log_entry) ITEM(poi_playground) ITEM(barrier_cycle) ITEM(barrier_bollard) ITEM(poi_vending_machine) ITEM(poi_recycling) ITEM(poi_hairdresser) ITEM(poi_shop_fruit) ITEM(poi_shop_bicycle) ITEM(poi_shop_florist) ITEM(poi_shop_optician) ITEM(poi_shop_beverages) ITEM(poi_nightclub) ITEM(poi_shop_shoes) ITEM(power_substation) ITEM(barrier_lift_gate) ITEM(traffic_sign_stop) ITEM(traffic_sign_city_limit) ITEM(poi_tree) ITEM(poi_shop_furniture) ITEM(poi_shop_parfum) ITEM(poi_shop_drugstore) ITEM(poi_shop_photo) ITEM(ch_node) ITEM(place_label) ITEM(vehicle) ITEM(vehicle_pedestrian) ITEM(bookmark_folder) ITEM2(0x7ffffff0,poi_custom0) ITEM(poi_custom1) ITEM(poi_custom2) ITEM(poi_custom3) ITEM(poi_custom4) ITEM(poi_custom5) ITEM(poi_custom6) ITEM(poi_custom7) ITEM(poi_custom8) ITEM(poi_custom9) ITEM(poi_customa) ITEM(poi_customb) ITEM(poi_customc) ITEM(poi_customd) ITEM(poi_custome) ITEM(poi_customf) /* Line */ ITEM2(0x80000000,line) ITEM2(0x80000001,line_unspecified) ITEM(border_country) ITEM(border_state) ITEM(rail) ITEM(water_line) ITEM(street_nopass) ITEM(street_0) ITEM(street_1_city) ITEM(street_2_city) ITEM(street_3_city) ITEM(street_4_city) ITEM(highway_city) ITEM(street_1_land) ITEM(street_2_land) ITEM(street_3_land) ITEM(street_4_land) ITEM(street_n_lanes) ITEM(highway_land) ITEM(ramp) ITEM(roundabout) ITEM(ferry) ITEM(roadbook) ITEM(street_unkn) ITEM(street_route) ITEM(height_line_1) ITEM(height_line_2) ITEM(track) ITEM(height_line_3) ITEM(depth_line_1) ITEM(depth_line_2) ITEM(depth_line_3) ITEM(powerline) ITEM(pipeline) ITEM(time_zone) ITEM(marine_boundary) ITEM(marine_hazard) ITEM(rg_segment) ITEM(aeroway_runway) ITEM(aeroway_taxiway) ITEM(street_service) ITEM(coverage) ITEM(street_pedestrian) ITEM(bridge) ITEM(tunnel) ITEM(bridleway) ITEM(cycleway) ITEM(footway) ITEM(steps) ITEM(track_paved) ITEM(track_gravelled) ITEM(track_unpaved) ITEM(track_ground) ITEM(track_grass) ITEM(rail_narrow_gauge) ITEM(rail_light) ITEM(rail_subway) ITEM(rail_mono) ITEM(rail_tram) ITEM(rail_preserved) ITEM(rail_disused) ITEM(rail_abandoned) ITEM(lift_cable_car) ITEM(lift_chair) ITEM(lift_drag) ITEM(living_street) ITEM(bus_guideway) ITEM(street_construction) ITEM(border_civil) ITEM(border_political) ITEM(border_national_park) ITEM(water_river) ITEM(water_canal) ITEM(water_stream) ITEM(water_drain) ITEM(path) ITEM(hiking) ITEM(hiking_mountain) ITEM(hiking_mountain_demanding) ITEM(hiking_alpine) ITEM(hiking_alpine_demanding) ITEM(hiking_alpine_difficult) ITEM(street_parking_lane) ITEM(piste_nordic) ITEM(piste_downhill_novice) ITEM(piste_downhill_easy) ITEM(piste_downhill_intermediate) ITEM(piste_downhill_advanced) ITEM(piste_downhill_expert) ITEM(piste_downhill_freeride) ITEM(footway_and_piste_nordic) ITEM(tracking_0) ITEM(tracking_10) ITEM(tracking_20) ITEM(tracking_30) ITEM(tracking_40) ITEM(tracking_50) ITEM(tracking_60) ITEM(tracking_70) ITEM(tracking_80) ITEM(tracking_90) ITEM(tracking_100) ITEM(track_tracked) ITEM(house_number_interpolation_even) ITEM(house_number_interpolation_odd) ITEM(house_number_interpolation_all) ITEM(house_number_interpolation_alphabetic) ITEM(ditch) ITEM(hedge) ITEM(fence) ITEM(wall) ITEM(retaining_wall) ITEM(city_wall) ITEM(street_turn_restriction_no) ITEM(street_turn_restriction_only) ITEM(border_city) ITEM(border_county) ITEM(selected_line) ITEM(traffic_distortion) ITEM(street_route_occluded) ITEM(forest_way_1) ITEM(forest_way_2) ITEM(forest_way_3) ITEM(forest_way_4) ITEM(former_itinerary) /* Area */ ITEM2(0xc0000000,area) ITEM2(0xc0000001,area_unspecified) ITEM(poly_wood) ITEM(poly_water) ITEM(poly_town) ITEM(poly_cemetery) ITEM(poly_car_parking) ITEM(poly_industry) ITEM(poly_airport) ITEM(poly_hospital) ITEM(poly_park) ITEM(poly_sport) ITEM(poly_museum) ITEM(image) ITEM(image_path) ITEM(poly_commercial_center) ITEM(poly_golf_course) ITEM(poly_university) ITEM(poly_national_park) ITEM(poly_nature_park) ITEM(poly_flats) ITEM(poly_scrub) ITEM(poly_military_zone) ITEM(poly_marine) ITEM(plantation) ITEM(tundra) ITEM(tile) ITEM(submap) ITEM(poly_building) ITEM(poly_place) ITEM(poly_station) ITEM(poly_farm) ITEM(poly_sport_tennis) ITEM(poly_apron) ITEM(poly_terminal) ITEM(countryindex) ITEM(poly_sports_centre) ITEM(poly_sports_stadium) ITEM(poly_sports_track) ITEM(poly_sports_pitch) ITEM(poly_water_park) ITEM(poly_marina) ITEM(poly_fishing) ITEM(poly_theme_park) ITEM(poly_attraction) ITEM(poly_ruins) ITEM(poly_archaeological_site) ITEM(poly_artwork) ITEM(poly_zoo) ITEM(poly_camp_site) ITEM(poly_caravan_site) ITEM(poly_picnic_site) ITEM(poly_playground) ITEM(poly_allotments) ITEM(poly_village_green) ITEM(poly_recreation_ground) ITEM(poly_common) ITEM(poly_garden) ITEM(poly_nature_reserve) ITEM(poly_glacier) ITEM(poly_scree) ITEM(poly_fell) ITEM(poly_heath) ITEM(poly_marsh) ITEM(poly_mud) ITEM(poly_land) ITEM(poly_beach) ITEM(poly_quarry) ITEM(poly_landfill) ITEM(poly_retail) ITEM(poly_commercial) ITEM(poly_brownfield) ITEM(poly_greenfield) ITEM(poly_construction) ITEM(poly_railway) ITEM(poly_military) ITEM(poly_airfield) ITEM(poly_barracks) ITEM(poly_danger_area) ITEM(poly_range) ITEM(poly_naval_base) ITEM(poly_basin) ITEM(poly_reservoir) ITEM(poly_college) ITEM(poly_battlefield) ITEM(poly_pedestrian) ITEM(poly_plaza) ITEM(poly_service) ITEM(poly_street_1) ITEM(poly_street_2) ITEM(poly_street_3) ITEM(poly_wetland) ITEM(poly_aeroway_runway) ITEM(map_information) ITEM(selected_area) ITEM(poly_place1) ITEM(poly_place2) ITEM(poly_place3) ITEM(poly_place4) ITEM(poly_place5) ITEM(poly_place6) ITEM(poly_water_tiled) ITEM2(0xffffffff,last) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/�����������������������������������������0000775�0000000�0000000�00000000000�11770671653�0024001�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/MSpatialiteBackground.pri����������������0000664�0000000�0000000�00000000403�11770671653�0030726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������HEADERS += IMapAdapter.h \ IImageManager.h \ SpatialiteAdapter.h \ PrimitiveFeature.h SOURCES += \ Utils/TagSelector.cpp \ Utils/SvgCache.cpp \ SpatialiteAdapter.cpp \ PrimitiveFeature.cpp \ RESOURCES += MSpatialiteBackground.qrc �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/MSpatialiteBackground.pro����������������0000664�0000000�0000000�00000001241�11770671653�0030735�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MSpatialiteBackgroundPlugin) QT += svg INCLUDEPATH += $$MERKAARTOR_SRC_DIR/src DEPENDPATH += $$MERKAARTOR_SRC_DIR/src INCLUDEPATH += $$MERKAARTOR_SRC_DIR/src/PaintStyle $$MERKAARTOR_SRC_DIR/src/Utils DEPENDPATH += $$MERKAARTOR_SRC_DIR/src/PaintStyle $$MERKAARTOR_SRC_DIR/src/Utils include(../../../src/PaintStyle/PaintStyle.pri) include(MSpatialiteBackground.pri) COMMON_DIR = $${MERKAARTOR_SRC_DIR}/binaries win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib } unix { CONFIG += link_pkgconfig PKGCONFIG += spatialite } win32 { LIBS += -lspatialite } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/MSpatialiteBackground.qrc����������������0000664�0000000�0000000�00000000202�11770671653�0030716�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/Styles"> <file alias="Mapnik.mas">../../../Styles/Mapnik.mas</file> </qresource> </RCC> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/PrimitiveFeature.cpp���������������������0000664�0000000�0000000�00000001434�11770671653�0027773�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "PrimitiveFeature.h" #include <PrimitivePainter.h> PrimitiveFeature::PrimitiveFeature() : type(0) { } int PrimitiveFeature::tagSize() const { return Tags.size(); } QString PrimitiveFeature::tagValue(int i) const { return Tags[i].second; } QString PrimitiveFeature::tagKey(int i) const { return Tags[i].first; } int PrimitiveFeature::findKey(const QString &k) const { for (int i=0; i<Tags.size(); ++i) if (Tags[i].first == k) return i; return Tags.size(); } QString PrimitiveFeature::tagValue(const QString& k, const QString& Default) const { for (int i=0; i<Tags.size(); ++i) if (Tags[i].first == k) return Tags[i].second; return Default; } void PrimitiveFeature::setType(quint32 aTyp) { type = aTyp; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/PrimitiveFeature.h�����������������������0000664�0000000�0000000�00000006424�11770671653�0027444�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef PRIMITIVEFEATURE_H #define PRIMITIVEFEATURE_H #include "IFeature.h" #include <QList> #include <QVector> #include <QPair> #include <QPoint> #include <QPainterPath> class PrimitivePainter; class PrimitiveAttribute { public: PrimitiveAttribute() : type(0) {} PrimitiveAttribute(qint32 theType, QByteArray theAttribute) : type(theType), attribute(theAttribute) {} public: quint32 type; QByteArray attribute; }; class PrimitiveFeature : public IFeature { public: PrimitiveFeature(); virtual char getType() const { return IFeature::All; } virtual QString xmlId() const { return QString(); } virtual const QDateTime time() const { return QDateTime::currentDateTime(); } virtual int versionNumber() const { return -1; } virtual const QString& user() const { return QString(); } virtual int sizeParents() const { return 0; } virtual IFeature* getParent(int) { return NULL; } virtual const IFeature* getParent(int) const { return NULL; } virtual bool hasPainter(double) const { return false; } /** Give the id of the feature. * If the feature has no id, a random id is generated * @return the id of the current feature */ virtual const IFeature::FId& id() const {return theId;} /** check if the feature is logically deleted * @return true if logically deleted */ virtual bool isDeleted() const { return false; } /** @return the number of tags for the current object */ virtual int tagSize() const; /** if a tag with the key "k" exists, return its index. * if the key doesn't exist, return the number of tags * @return index of tag */ virtual int findKey(const QString& k) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagValue(int i) const; /** return the value of the tag with the key "k". * if such a tag doesn't exists, return Default. * @return value or Default */ virtual QString tagValue(const QString& k, const QString& Default) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagKey(int i) const; /** check if the feature has been uploaded * @return true if uploaded */ virtual bool isUploaded() const { return false; } /** check if the dirty status of the feature * @return true if the feature is dirty */ virtual bool isDirty() const { return false; } /** check if the feature is visible * @return true if visible */ virtual bool isVisible() { return true; } /** check if the feature is read-only * @return true if is read-only */ virtual bool isReadonly() { return true; } virtual const QPainterPath& getPath() const {return thePath;} void setType(quint32 aTyp); public: quint32 type; quint16 order; QVector<QPoint> coordinates; QList<PrimitiveAttribute> attributes; IFeature::FId theId; QPainterPath thePath; QList<QPair<QString, QString> > Tags; }; #endif // NAVITFEATURE_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/SpatialiteAdapter.cpp��������������������0000664�0000000�0000000�00000034002�11770671653�0030104�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: SpatialiteAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "SpatialiteAdapter.h" #include <QCoreApplication> #include <QtPlugin> #include <QAction> #include <QFileDialog> #include <QPainter> #include <QMessageBox> #include <QTimer> #include <QBuffer> #include <QPair> #include <QStringList> #include <QDebug> #include <math.h> #include "spatialite/gaiageo.h" #include "MasPaintStyle.h" static const QUuid theUid ("{4509fe81-47d0-4487-b6d0-e8910f2f1f7d}"); static const QString theName("Spatialite"); QUuid SpatialiteAdapterFactory::getId() const { return theUid; } QString SpatialiteAdapterFactory::getName() const { return theName; } /******/ #define FILTER_OPEN_SUPPORTED \ tr("Supported formats")+" (*.sqlite *.spatialite)\n" \ +tr("All Files (*)") double angToRad(double a) { return a*M_PI/180.; } QPointF mercatorProject(const QPointF& c) { double x = angToRad(c.x()) / M_PI * 20037508.34; double y = log(tan(angToRad(c.y())) + 1/cos(angToRad(c.y()))) / M_PI * (20037508.34); return QPointF(x, y); } inline uint qHash(IFeature::FId id) { uint h1 = qHash(id.type); uint h2 = qHash(id.numId); return ((h1 << 16) | (h1 >> 16)) ^ h2; } /*****/ SpatialiteAdapter::SpatialiteAdapter() { /* VERY IMPORTANT: you must initialize the SpatiaLite extension [and related] BEFORE attempting to perform any other SQLite call */ spatialite_init (0); /* showing the SQLite version */ qDebug ("SQLite version: %s", sqlite3_libversion ()); /* showing the SpatiaLite version */ qDebug ("SpatiaLite version: %s", spatialite_version ()); QAction* loadFile = new QAction(tr("Load Spatialite db..."), this); loadFile->setData(theUid.toString()); connect(loadFile, SIGNAL(triggered()), SLOT(onLoadFile())); theMenu = new QMenu(); theMenu->addAction(loadFile); m_loaded = false; MasPaintStyle theStyle; theStyle.loadPainters(":/Styles/Mapnik.mas"); for (int i=0; i<theStyle.painterSize(); ++i) { thePrimitivePainters.append(PrimitivePainter(*theStyle.getPainter(i))); } m_cache.setMaxCost(100000); } SpatialiteAdapter::~SpatialiteAdapter() { if (m_loaded) sqlite3_close(m_handle); } void SpatialiteAdapter::onLoadFile() { QString fileName = QFileDialog::getOpenFileName( NULL, tr("Open Spatialite db"), "", FILTER_OPEN_SUPPORTED); if (fileName.isEmpty()) return; setFile(fileName); } void SpatialiteAdapter::initTable(const QString& table) { QString tag = table.mid(3); QString q = QString("select * from %1 where ROWID IN " "(Select rowid from idx_%1_Geometry WHERE xmax > ? and ymax > ? and xmin < ? and ymin < ?);").arg(table); int ret = sqlite3_prepare_v2(m_handle, q.toUtf8().data(), q.size(), &m_stmtHandles[table], NULL); if (ret != SQLITE_OK) { qDebug() << "Sqlite: prepare error: " << ret; return; } if (getType() == IMapAdapter::DirectBackground) { q = QString("select distinct sub_type from %1").arg(table); sqlite3_stmt *pStmt; ret = sqlite3_prepare_v2(m_handle, q.toUtf8().data(), q.size(), &pStmt, NULL); if (ret != SQLITE_OK) { qDebug() << "Sqlite: prepare error: " << ret; } while (sqlite3_step(pStmt) == SQLITE_ROW) { QString sub_type((const char*)sqlite3_column_text(pStmt, 0)); PrimitiveFeature f; f.Tags.append(qMakePair(tag, sub_type)); for(int i=0; i< thePrimitivePainters.size(); ++i) { if (thePrimitivePainters[i].matchesTag(&f, 0)) { myStyles.insert(QString("%1%2").arg(tag).arg(sub_type), &thePrimitivePainters[i]); break; } } } sqlite3_finalize(pStmt); } } void SpatialiteAdapter::setFile(const QString& fn) { if (m_loaded) sqlite3_close(m_handle); m_loaded = false; int ret = sqlite3_open_v2 (fn.toUtf8().data(), &m_handle, SQLITE_OPEN_READONLY, NULL); if (ret != SQLITE_OK) { QMessageBox::critical(0,QCoreApplication::translate("SpatialiteBackground","No valid file"),QCoreApplication::translate("SpatialiteBackground","Cannot open db.")); sqlite3_close (m_handle); return; } QString q = QString("SELECT f_table_name FROM geometry_columns;"); sqlite3_stmt *pStmt; ret = sqlite3_prepare_v2(m_handle, q.toUtf8().data(), q.size(), &pStmt, NULL); if (ret != SQLITE_OK) { qDebug() << "Sqlite: prepare error: " << ret; } while (sqlite3_step(pStmt) == SQLITE_ROW) { QString table((const char*)sqlite3_column_text(pStmt, 0)); m_tables << table; } sqlite3_finalize(pStmt); if (!m_tables.size()) { QMessageBox::critical(0,QCoreApplication::translate("SpatialiteBackground","No valid file"),QCoreApplication::translate("SpatialiteBackground","geometry_columns table absent or invalid")); sqlite3_close (m_handle); return; } m_dbName = fn; m_loaded = true; foreach (QString s, m_tables) initTable(s); emit (forceRefresh()); } QString SpatialiteAdapter::getHost() const { return ""; } QUuid SpatialiteAdapter::getId() const { return QUuid(theUid); } QString SpatialiteAdapter::getName() const { return theName; } QMenu* SpatialiteAdapter::getMenu() const { return theMenu; } QRectF SpatialiteAdapter::getBoundingbox() const { return QRectF(QPointF(-180.00, -90.00), QPointF(180.00, 90.00)); } QString SpatialiteAdapter::projection() const { return "EPSG:4326"; } const QList<IFeature*>* SpatialiteAdapter::getPaths(const QRectF& wgs84Bbox, const IProjection* projection) const { if (!m_loaded) return NULL; theFeatures.clear(); foreach (QString s, m_tables) buildFeatures(s, wgs84Bbox, projection); return &theFeatures; } QPixmap SpatialiteAdapter::getPixmap(const QRectF& wgs84Bbox, const QRectF& /*projBbox*/, const QRect& src) const { if (!m_loaded) return QPixmap(); QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter P(&pix); P.setRenderHint(QPainter::Antialiasing); double ScaleLon = src.width() / wgs84Bbox.width(); double ScaleLat = src.height() / wgs84Bbox.height(); double PLon = wgs84Bbox.center().x() * ScaleLon; double PLat = wgs84Bbox.center().y() * ScaleLat; double DeltaLon = src.width() / 2 - PLon; double DeltaLat = src.height() - (src.height() / 2 - PLat); double LengthOfOneDegreeLat = 6378137.0 * M_PI / 180; double LengthOfOneDegreeLon = LengthOfOneDegreeLat * fabs(cos(angToRad(wgs84Bbox.center().y()))); double lonAnglePerM = 1 / LengthOfOneDegreeLon; m_PixelPerM = src.width() / (double)wgs84Bbox.width() * lonAnglePerM; qDebug() << "ppm: " << m_PixelPerM; m_transform.setMatrix(ScaleLon, 0, 0, 0, -ScaleLat, 0, DeltaLon, DeltaLat, 1); theFeatures.clear(); foreach (QString s, m_tables) buildFeatures(s, wgs84Bbox); foreach(IFeature* iF, theFeatures) { PrimitiveFeature* f = static_cast<PrimitiveFeature*>(iF); if (f->theId.type & IFeature::Point) continue; PrimitivePainter* fpainter = myStyles[QString("%1%2").arg(f->Tags[0].first).arg(f->Tags[0].second)]; if (fpainter->matchesZoom(m_PixelPerM)) { QPainterPath pp = m_transform.map(f->thePath); fpainter->drawBackground(&pp, &P, m_PixelPerM); } } foreach(IFeature* iF, theFeatures) { PrimitiveFeature* f = static_cast<PrimitiveFeature*>(iF); if (f->theId.type & IFeature::Point) continue; PrimitivePainter* fpainter = myStyles[QString("%1%2").arg(f->Tags[0].first).arg(f->Tags[0].second)]; if (fpainter->matchesZoom(m_PixelPerM)) { QPainterPath pp = m_transform.map(f->thePath); if (!(f->theId.type & IFeature::Point)) fpainter->drawForeground(&pp,& P, m_PixelPerM); } } foreach(IFeature* iF, theFeatures) { PrimitiveFeature* f = static_cast<PrimitiveFeature*>(iF); PrimitivePainter* fpainter = myStyles[QString("%1%2").arg(f->Tags[0].first).arg(f->Tags[0].second)]; if (fpainter->matchesZoom(m_PixelPerM)) { if (f->theId.type & IFeature::Point) { QPointF pt = m_transform.map((QPointF)f->thePath.elementAt(0)); fpainter->drawTouchup(&pt, &P, m_PixelPerM); } else { QPainterPath pp = m_transform.map(f->thePath); fpainter->drawTouchup(&pp, &P, m_PixelPerM); } } } P.end(); foreach(IFeature* iF, theFeatures) { PrimitiveFeature* f = static_cast<PrimitiveFeature*>(iF); m_cache.insert(f->theId, f); } return pix; } void SpatialiteAdapter::buildFeatures(const QString& table, const QRectF& selbox, const IProjection* proj) const { QString tag = table.mid(3); // QPainterPath clipPath; // clipPath.addRect(selbox/*.adjusted(-1000, -1000, 1000, 1000)*/); double x, y; sqlite3_stmt* pStmt = m_stmtHandles[table]; if (!pStmt) return; sqlite3_bind_double(pStmt, 1, selbox.bottomLeft().x()); sqlite3_bind_double(pStmt, 2, selbox.topRight().y()); sqlite3_bind_double(pStmt, 3, selbox.topRight().x()); sqlite3_bind_double(pStmt, 4, selbox.bottomLeft().y()); while (sqlite3_step(pStmt) == SQLITE_ROW) { qint64 id = sqlite3_column_int64(pStmt, 0); if (m_cache.contains(IFeature::FId(IFeature::LineString, id))) { IFeature* f = m_cache.take(IFeature::FId(IFeature::LineString, id)); theFeatures << f; continue; } QString sub_type((const char*)sqlite3_column_text(pStmt, 1)); // if (!myStyles.contains(QString("%1%2").arg(tag).arg(sub_type))) // continue; QString name((const char*)sqlite3_column_text(pStmt, 2)); int blobSize = sqlite3_column_bytes(pStmt, 3); QByteArray ba((const char*)sqlite3_column_blob(pStmt, 3), blobSize); const unsigned char* blob = (const unsigned char*)ba.constData(); gaiaGeomCollPtr coll = gaiaFromSpatiaLiteBlobWkb(blob, blobSize); // Q_ASSERT(coll); if (!coll) continue; gaiaPointPtr node = coll->FirstPoint; while (node) { PrimitiveFeature* f = new PrimitiveFeature(); f->theId = IFeature::FId(IFeature::Point, id); f->Tags.append(qMakePair(QString("name"), name)); QPointF pt(node->X, node->Y); if (proj) pt = proj->project(pt); f->thePath.moveTo(pt); f->Tags.append(qMakePair(tag, sub_type)); theFeatures << f; node = node->Next; } gaiaLinestringPtr way = coll->FirstLinestring; while (way) { if (way->Points) { PrimitiveFeature* f = new PrimitiveFeature(); f->theId = IFeature::FId(IFeature::LineString, id); f->Tags.append(qMakePair(QString("name"), name)); f->Tags.append(qMakePair(tag, sub_type)); gaiaGetPoint(way->Coords, 0, &x, &y); QPointF pt(x, y); if (proj) pt = proj->project(pt); f->thePath.moveTo(pt); for (int i=1; i<way->Points; ++i) { gaiaGetPoint(way->Coords, i, &x, &y); pt.setX(x); pt.setY(y); if (proj) pt = proj->project(pt); f->thePath.lineTo(pt); } theFeatures << f; } way = way->Next; } gaiaPolygonPtr poly = coll->FirstPolygon; while (poly) { gaiaRingPtr ring = poly->Exterior; if (poly->NumInteriors) qDebug() << "has interiors!"; if (ring->Points) { PrimitiveFeature* f = new PrimitiveFeature(); f->theId = IFeature::FId(IFeature::LineString, id); f->Tags.append(qMakePair(QString("name"), name)); f->Tags.append(qMakePair(tag, sub_type)); gaiaGetPoint(ring->Coords, 0, &x, &y); QPointF pt(x, y); if (proj) pt = proj->project(pt); f->thePath.moveTo(pt); for (int i=1; i<ring->Points; ++i) { gaiaGetPoint(ring->Coords, i, &x, &y); pt.setX(x); pt.setY(y); if (proj) pt = proj->project(pt); f->thePath.lineTo(pt); } theFeatures << f; } poly = poly->Next; } } sqlite3_reset(pStmt); sqlite3_clear_bindings(pStmt); } IImageManager* SpatialiteAdapter::getImageManager() { return NULL; } void SpatialiteAdapter::setImageManager(IImageManager* anImageManager) { } void SpatialiteAdapter::cleanup() { } bool SpatialiteAdapter::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Database"); if (m_loaded) stream.writeAttribute("filename", m_dbName); stream.writeEndElement(); return OK; } void SpatialiteAdapter::fromXML(QXmlStreamReader& stream) { while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Database") { QString fn = stream.attributes().value("filename").toString(); if (!fn.isEmpty()) setFile(fn); } stream.readNext(); } } QString SpatialiteAdapter::toPropertiesHtml() { QString h; if (m_loaded) h += "<i>" + tr("Filename") + ": </i>" + m_dbName; return h; } #ifndef _MOBILE Q_EXPORT_PLUGIN2(MSpatialiteBackgroundPlugin, SpatialiteAdapterFactory) #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MSpatialiteBackground/SpatialiteAdapter.h����������������������0000664�0000000�0000000�00000012344�11770671653�0027556�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: SpatialiteAdapter // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef SPATIALITEADAPTER_H #define SPATIALITEADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include <QLocale> #include <QByteArray> #include <QHash> #include <QCache> /* these headers are required in order to support SQLite/SpatiaLite */ #include <spatialite/sqlite3.h> #include <spatialite/gaiageo.h> #include <spatialite.h> #include "PrimitiveFeature.h" #include "PaintStyle/PrimitivePainter.h" #include "IProjection.h" class MasPaintStyle; class SpatialiteAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: SpatialiteAdapter(); virtual ~SpatialiteAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const {return IMapAdapter::VectorBackground;} //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const { return ""; } virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual const QList<IFeature*>* getPaths(const QRectF& wgs84Bbox, const IProjection* projection) const; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* /*aSet*/) {} public: void setFile(const QString& fn); void initTable(const QString& table); void buildFeatures(const QString& table, const QRectF& selbox, const IProjection* proj=NULL) const; public slots: void onLoadFile(); protected: bool alreadyLoaded(QString fn) const; private: QMenu* theMenu; bool m_loaded; QHash<QString, PrimitivePainter* > myStyles; QList<PrimitivePainter> thePrimitivePainters; mutable QList<IFeature*> theFeatures; mutable QTransform m_transform; mutable double m_PixelPerM; QString m_dbName; sqlite3 *m_handle; QHash<QString, sqlite3_stmt*> m_stmtHandles; mutable QCache<IFeature::FId, IFeature> m_cache; QList<QString> m_tables; }; class SpatialiteAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new SpatialiteAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif // NAVITADAPTER_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MWalkingPapersBackground/��������������������������������������0000775�0000000�0000000�00000000000�11770671653�0024451�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MWalkingPapersBackground/MWalkingPapersBackground.pro����������0000664�0000000�0000000�00000001053�11770671653�0032056�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) QT += network TARGET = $$qtLibraryTarget(MWalkingPapersBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) HEADERS += \ WalkingPapersAdapter.h SOURCES += \ WalkingPapersAdapter.cpp COMMON_DIR=$${MERKAARTOR_SRC_DIR}/binaries win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib } contains(ZBAR, 1) { DEFINES += USE_ZBAR LIBS += -lzbar } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MWalkingPapersBackground/WalkingPapersAdapter.cpp��������������0000664�0000000�0000000�00000031426�11770671653�0031233�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: %CLASS% // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "WalkingPapersAdapter.h" #include <QCoreApplication> #include <QtPlugin> #include <QAction> #include <QFileDialog> #include <QPainter> #include <QMessageBox> #include <QInputDialog> #include <QTimer> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QDebug> #include <math.h> #ifdef USE_ZBAR #include <zbar.h> #include <zbar/QZBarImage.h> #endif // from wikipedia #define EQUATORIALRADIUS 6378137.0 #define POLARRADIUS 6356752.0 #define EQUATORIALMETERCIRCUMFERENCE 40075016.68 #define EQUATORIALMETERHALFCIRCUMFERENCE 20037508.34 #define EQUATORIALMETERPERDEGREE 222638.981555556 static const QUuid theUid ("{c580b2bc-dd14-40b2-8bb6-241da2a1fdb3}"); static const QString theName("Walking Papers"); QUuid WalkingPapersAdapterFactory::getId() const { return theUid; } QString WalkingPapersAdapterFactory::getName() const { return theName; } /**************/ #define FILTER_OPEN_SUPPORTED \ tr("Supported formats")+" (*.jpg *.png *.bmp)\n" \ +tr("All Files (*)") double angToRad(double a) { return a*M_PI/180.; } QPointF mercatorProject(const QPointF& c) { double x = angToRad(c.x()) / M_PI * EQUATORIALMETERHALFCIRCUMFERENCE; double y = log(tan(angToRad(c.y())) + 1/cos(angToRad(c.y()))) / M_PI * (EQUATORIALMETERHALFCIRCUMFERENCE); return QPointF(x, y); } WalkingPapersAdapter::WalkingPapersAdapter() : theImageManager(0) { QAction* loadImage = new QAction(tr("Load image..."), this); loadImage->setData(theUid.toString()); connect(loadImage, SIGNAL(triggered()), SLOT(onLoadImage())); theMenu = new QMenu(); theMenu->addAction(loadImage); } WalkingPapersAdapter::~WalkingPapersAdapter() { } QUuid WalkingPapersAdapter::getId() const { return theUid; } QString WalkingPapersAdapter::getName() const { return theName; } bool WalkingPapersAdapter::alreadyLoaded(QString fn) const { for (int j=0; j<theImages.size(); ++j) if (theImages[j].theFilename == fn) return true; return false; } void make_grayscale(QImage& in) { if(in.format()!=QImage::Format_Indexed8) throw "format error"; QVector<int> transform_table(in.numColors()); for(int i=0;i<in.numColors();i++) { QRgb c1=in.color(i); int avg=qGray(c1); transform_table[i] = avg; } in.setNumColors(256); for(int i=0;i<256;i++) in.setColor(i,qRgb(i,i,i)); for(int i=0;i<in.numBytes();i++) { in.bits()[i]=transform_table[in.bits()[i]]; } } bool WalkingPapersAdapter::getWalkingPapersDetails(const QUrl& reqUrl, QRectF& bbox) const { QNetworkAccessManager* manager = theImageManager->getNetworkManager(); QEventLoop q; QTimer tT; if (!reqUrl.host().contains("walking-papers.org")) return false; tT.setSingleShot(true); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); connect(manager, SIGNAL(finished(QNetworkReply*)), &q, SLOT(quit())); QNetworkReply *reply = manager->get(QNetworkRequest(reqUrl)); tT.start(theSets->value("Network/NetworkTimeout", 5000).toInt()); q.exec(); if(tT.isActive()) { // download complete tT.stop(); } else { QMessageBox::warning(0, tr("Network timeout"), tr("Cannot read the photo's details from the Walking Papers server."), QMessageBox::Ok); return false; } QString center = QString::fromAscii(reply->rawHeader("X-Print-Bounds")); QStringList sl = center.split(" "); if (!sl.size() == 4) return false; QPointF tl(sl[1].toDouble(), sl[0].toDouble()); QPointF br(sl[3].toDouble(), sl[2].toDouble()); qDebug() << tl << "; " << br; bbox = QRectF(tl, br); return true; } bool WalkingPapersAdapter::askAndgetWalkingPapersDetails(QRectF& bbox) const { bool ok; QString text = QInputDialog::getText(0, tr("Please specify Walking Papers URL"), tr("URL:"), QLineEdit::Normal, "", &ok); if (ok && !text.isEmpty()) { QUrl url(text); return getWalkingPapersDetails(url, bbox); } else return false; } bool WalkingPapersAdapter::loadImage(const QString& fn, QRectF theBbox, int theRotation) { if (alreadyLoaded(fn)) return true; QImage img(fn); WalkingPapersImage wimg; if (theBbox.isNull()) { #ifdef USE_ZBAR zbar::QZBarImage image(img); // create a reader zbar::ImageScanner scanner; // configure the reader scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1); // scan the image for barcodes scanner.recycle_image(image); zbar::Image tmp = image.convert(*(long*)"Y800"); int n = scanner.scan(tmp); image.set_symbols(tmp.get_symbols()); if (n <= 0) { qDebug() << "WP scan error: " << n; if (!askAndgetWalkingPapersDetails(theBbox)) return false; } else { QUrl url; // extract results for(zbar::Image::SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol) { // do something useful with results qDebug() << "decoded " << QString::fromStdString(symbol->get_type_name()) << " symbol \"" << QString::fromStdString(symbol->get_data()) << '"'; qDebug() << "x;y: " << symbol->get_location_x(0) << ", " << symbol->get_location_y(0); url = QUrl(QString::fromStdString(symbol->get_data())); getWalkingPapersDetails(url, theBbox); int x = symbol->get_location_x(0); int y = symbol->get_location_y(0); QPoint mid = QPoint(img.width()/2, img.height()/2); if (x < mid.x() || y < mid.y()) { if (x < mid.x() && y < mid.y()) theRotation = 180; else if (x > mid.x() && y < mid.y()) theRotation = 90; else if (x < mid.x() && y > mid.y()) theRotation = -90; } } } // clean up image.set_data(NULL, 0); #else if (!askAndgetWalkingPapersDetails(theBbox)) return false; #endif } if (theRotation) { QMatrix mat; mat.rotate(theRotation); img = img.transformed(mat); } wimg.theFilename = fn; wimg.theImg = QPixmap::fromImage(img); wimg.theBBox = theBbox; wimg.rotation = theRotation; theImages.push_back(wimg); theCoordBbox |= theBbox; return true; } void WalkingPapersAdapter::onLoadImage() { int fileOk = 0; QStringList fileNames = QFileDialog::getOpenFileNames( NULL, tr("Open Walking Papers scan"), "", FILTER_OPEN_SUPPORTED); if (fileNames.isEmpty()) return; QRectF theBbox = QRectF(); for (int i=0; i<fileNames.size(); i++) { if (loadImage(fileNames[i], theBbox)) ++fileOk; } if (!fileOk) { QMessageBox::critical(0,QCoreApplication::translate("WalkingPapersBackground","No valid file"),QCoreApplication::translate("WalkingPapersBackground","Cannot load file.")); } else { emit forceProjection(); emit forceZoom(); emit forceRefresh(); } return; } QString WalkingPapersAdapter::getHost() const { return ""; } IMapAdapter::Type WalkingPapersAdapter::getType() const { return IMapAdapter::DirectBackground; } QMenu* WalkingPapersAdapter::getMenu() const { return theMenu; } QRectF WalkingPapersAdapter::getBoundingbox() const { QRectF projBBox; projBBox = QRectF(mercatorProject(theCoordBbox.topLeft()), mercatorProject(theCoordBbox.bottomRight())); return projBBox; } QString WalkingPapersAdapter::projection() const { return "EPSG:900913"; } QPixmap WalkingPapersAdapter::getPixmap(const QRectF& wgs84Bbox, const QRectF& /*projBbox*/, const QRect& src) const { QPixmap pix(src.size()); pix.fill(Qt::transparent); QPainter p(&pix); for (int i=0; i<theImages.size(); ++i) { QPixmap theImg = theImages[i].theImg; double rx = wgs84Bbox.width() / src.width(); double ry = wgs84Bbox.height() / src.height(); qDebug() << "rx: " << rx << "; ry: " << ry; QSize sz(theImages[i].theBBox.width() / rx, theImages[i].theBBox.height() / ry); if (sz.isNull()) return QPixmap(); QPoint s((theImages[i].theBBox.bottomLeft().x() - wgs84Bbox.bottomLeft().x()) / rx, (wgs84Bbox.bottomLeft().y() - theImages[i].theBBox.bottomLeft().y()) / ry); qDebug() << "Viewport: " << wgs84Bbox; qDebug() << "Pixmap Origin: " << s.x() << "," << s.y(); qDebug() << "Pixmap size: " << sz.width() << "," << sz.height(); double rtx = theImg.width() / (double)sz.width(); double rty = theImg.height() / (double)sz.height(); QRect mRect = QRect(s, sz); QRect iRect = theImg.rect().intersect(mRect); QRect sRect = QRect(iRect.topLeft() - mRect.topLeft(), iRect.size()); QRect fRect = QRect(sRect.x() * rtx, sRect.y() * rty, sRect.width() * rtx, sRect.height() * rty); qDebug() << "mrect: " << mRect; qDebug() << "iRect: " << iRect; qDebug() << "sRect: " << sRect; qDebug() << "fRect: " << fRect; QPixmap img2 = theImg.copy(fRect).scaled(sRect.size()); p.drawPixmap(iRect.topLeft(), img2); } p.end(); return pix; } IImageManager* WalkingPapersAdapter::getImageManager() { return theImageManager; } void WalkingPapersAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; } void WalkingPapersAdapter::cleanup() { theImages.clear(); theCoordBbox = QRectF(); } bool WalkingPapersAdapter::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Images"); for (int i=0; i<theImages.size(); ++i) { stream.writeStartElement("Image"); stream.writeAttribute("filename", theImages[i].theFilename); stream.writeAttribute("top", QString::number(theImages[i].theBBox.top())); stream.writeAttribute("left", QString::number(theImages[i].theBBox.left())); stream.writeAttribute("width", QString::number(theImages[i].theBBox.width())); stream.writeAttribute("height", QString::number(theImages[i].theBBox.height())); stream.writeAttribute("rotation", QString::number(theImages[i].rotation)); stream.writeEndElement(); } stream.writeEndElement(); return OK; } void WalkingPapersAdapter::fromXML(QXmlStreamReader& stream) { theCoordBbox = QRectF(); theImages.clear(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Images") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Image") { QString fn = stream.attributes().value("filename").toString(); if (!fn.isEmpty()) { double x = stream.attributes().value("left").toString().toDouble(); double y = stream.attributes().value("top").toString().toDouble(); double w = stream.attributes().value("width").toString().toDouble(); double h = stream.attributes().value("height").toString().toDouble(); int r = stream.attributes().value("rotation").toString().toInt(); QRectF bbox(x, y, w, h); loadImage(fn, bbox, r); } stream.readNext(); } else if (!stream.isWhitespace()) { qDebug() << "wp: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } else if (!stream.isWhitespace()) { qDebug() << "wp: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } QString WalkingPapersAdapter::toPropertiesHtml() { QString h; QStringList fn; for (int i=0; i<theImages.size(); ++i) { fn << QDir::toNativeSeparators(theImages[i].theFilename); } h += "<i>" + tr("Filename(s)") + ": </i>" + fn.join("; "); return h; } Q_EXPORT_PLUGIN2(MWalkingPapersBackgroundPlugin, WalkingPapersAdapterFactory) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MWalkingPapersBackground/WalkingPapersAdapter.h����������������0000664�0000000�0000000�00000011253�11770671653�0030674�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: %CLASS% // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef WALKINGPAPERSADAPTER_H #define WALKINGPAPERSADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include "IImageManager.h" #include <QLocale> class WalkingPapersImage { public: QString theFilename; QPixmap theImg; QRectF theBBox; int rotation; }; class WalkingPapersAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: WalkingPapersAdapter(); virtual ~WalkingPapersAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const { return ""; } virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const; virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup(); virtual bool toXML(QXmlStreamWriter& stream); virtual void fromXML(QXmlStreamReader& stream); virtual QString toPropertiesHtml(); virtual void setSettings(QSettings* aSet) {theSets = aSet;} public slots: void onLoadImage(); bool loadImage(const QString& fn, QRectF theBbox, int theRotation=0); protected: bool alreadyLoaded(QString fn) const; bool getWalkingPapersDetails(const QUrl& reqUrl, QRectF& bbox) const; bool askAndgetWalkingPapersDetails(QRectF& bbox) const; private: QMenu* theMenu; IImageManager* theImageManager; QRectF theCoordBbox; QList<WalkingPapersImage> theImages; QSettings* theSets; }; class WalkingPapersAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new WalkingPapersAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif // WALKINGPAPERSADAPTER_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooBackground/����������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0022761�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooBackground/MYahooBackground.pro��������������������������0000664�0000000�0000000�00000000577�11770671653�0026710�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MYahooBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) HEADERS += \ yahoolegalmapadapter.h SOURCES += \ yahoolegalmapadapter.cpp RESOURCES += \ MYahooBackground.qrc ���������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooBackground/MYahooBackground.qrc��������������������������0000664�0000000�0000000�00000000153�11770671653�0026663�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/Html"> <file alias="ymap.html">ymap.html</file> </qresource> </RCC> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooBackground/yahoolegalmapadapter.cpp����������������������0000664�0000000�0000000�00000007055�11770671653�0027657�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <QtPlugin> #include "yahoolegalmapadapter.h" // {67CC0481-8C6A-4735-8666-BBA6A1B04E19} static const QUuid theUid ( 0x67cc0481, 0x8c6a, 0x4735, 0x86, 0x66, 0xbb, 0xa6, 0xa1, 0xb0, 0x4e, 0x19); static const QString theName("Yahoo! (WMS)"); QUuid YahooLegalMapAdapterFactory::getId() const { return theUid; } QString YahooLegalMapAdapterFactory::getName() const { return theName; } /**************/ YahooLegalMapAdapter::YahooLegalMapAdapter() : theImageManager(0) { loc = QLocale(QLocale::English); loc.setNumberOptions(QLocale::OmitGroupSeparator); } YahooLegalMapAdapter::~YahooLegalMapAdapter() { } QString YahooLegalMapAdapter::getHost() const { return ""; } QUuid YahooLegalMapAdapter::getId() const { return theUid; } IMapAdapter::Type YahooLegalMapAdapter::getType() const { return IMapAdapter::BrowserBackground; } QString YahooLegalMapAdapter::getName() const { return theName; } QString YahooLegalMapAdapter::projection() const { return ("EPSG:3857"); } QString YahooLegalMapAdapter::getQuery(const QRectF& wgs84Bbox, const QRectF& /*projBbox*/, const QRect& size) const { if (size.width() < 150 || size.height() < 150) return ""; return QString() .append("qrc:/Html/ymap.html?") .append("WIDTH=").append(QString::number(size.width()+100)) .append("&HEIGHT=").append(QString::number(size.height()+100)) .append("&BBOX=") .append(loc.toString(wgs84Bbox.bottomLeft().x(),'f',8)).append(",") .append(loc.toString(wgs84Bbox.bottomLeft().y(),'f',8)).append(",") .append(loc.toString(wgs84Bbox.topRight().x(),'f',8)).append(",") .append(loc.toString(wgs84Bbox.topRight().y(),'f',8)) ; } IImageManager* YahooLegalMapAdapter::getImageManager() { return theImageManager; } void YahooLegalMapAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; } Q_EXPORT_PLUGIN2(MYahooBackgroundPlugin, YahooLegalMapAdapterFactory) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooBackground/yahoolegalmapadapter.h������������������������0000664�0000000�0000000�00000012553�11770671653�0027323�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef YAHOOLEGALMAPADAPTER_H #define YAHOOLEGALMAPADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include <QLocale> class YahooLegalMapAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: YahooLegalMapAdapter(); virtual ~YahooLegalMapAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const { return "Yahoo"; } virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QPixmap getPixmap(const QRectF& /* wgs84Bbox */, const QRectF& /* projBbox */, const QRect& /* size */) const { return QPixmap(); } virtual QString projection() const; virtual QRectF getBoundingbox() const {return QRectF();} virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const { return NULL; } virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup() {} virtual bool toXML(QXmlStreamWriter& /*stream*/) { return true; } virtual void fromXML(QXmlStreamReader& /*xParent*/) {} virtual QString toPropertiesHtml() {return "";} virtual void setSettings(QSettings* /*aSet*/) {} private: QLocale loc; IImageManager* theImageManager; }; class YahooLegalMapAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new YahooLegalMapAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooBackground/ymap.html�������������������������������������0000664�0000000�0000000�00000007363�11770671653�0024626�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <head> <script type="text/javascript"> //var bbox = ""; //var width = 800; //var height = 800; // Parse query string and set variables var url = location.href; var queryStringPos = url.indexOf("?"); if( queryStringPos != -1 ) { url = url.substring(queryStringPos + 1); var variables = url.split ("&"); for (i = 0; i < variables.length; i++) { if( !variables[i] ) continue; var keyValue = variables[i].split("="); eval ('var '+keyValue[0].toLowerCase()+'="'+keyValue[1]+'"'); } } else { dump("YWMS ERROR: no queryString\n"); } // Limit size to current window's, to avoid memory problems //width = Math.min(width, screen.width); //height = Math.min(height, screen.height); </script> <script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=z7qRk3_V34HAbY_SkC7u7GAgG5nDTblw.cuL1OS5LWGwkIIUeGjg4qsnJDPpmhoF"></script> </head> <body style="margin: 0px"> <div id="map"></div> <script type="text/javascript"> if( !bbox || !width || !height) { alert("YWMS ERROR: invalid parameters\n"); } else { alert("ReqSize " + width + " " + height + "\n"); // Resize map container to parameter dimension var mapDiv = document.getElementById("map"); // Get the bounding box var coords = bbox.split(","); var tllon = Number(coords[0]), tllat = Number(coords[1]); var brlon = Number(coords[2]), brlat = Number(coords[3]); var points = new Array(); points[0] = new YGeoPoint(tllat, tllon); points[1] = new YGeoPoint(brlat, brlon); // other map types work as well but only satellite allowed for use with OSM! var map = new YMap(document.getElementById("map"), YAHOO_MAP_SAT, new YSize(width, height)); map.removeZoomScale(); var zac = map.getBestZoomAndCenter(points); var level = zac.zoomLevel; var levels = map.getZoomValidLevels(); if(levels[0] > level) level = levels[0]; map.drawZoomAndCenter(zac.YGeoPoint,level); // Get the on-screen coordinates of the points xy0 = map.convertLatLonXY(points[0]); xy1 = map.convertLatLonXY(points[1]); // This is hack to bug in getBestZoomAndCenter function cx = map.convertXYLatLon(new YCoordPoint((xy0.x+xy1.x)/2, (xy0.y+xy1.y)/2)); map.drawZoomAndCenter(cx,level) alert("Size " + xy0.x + " " + xy0.y + " " + xy1.x + " " + xy1.y + "\n"); alert("Coord " + tllat + " " + tllon + " " + brlat + " " + brlon + "\n"); //alert((brlat + tllat)/2 + " " + (brlon + tllon)/2 + "\n"); // Create a new size for the map. This makes the need of clipping the image unnecessary. new_width = Math.abs( xy0.x - xy1.x); new_height = Math.abs( xy0.y - xy1.y); // Apply the new width-height map.resizeTo( new YSize(new_width, new_height)); mapDiv.style.width = new_width; mapDiv.style.height = new_height; window.moveTo(0,0); window.resizeTo(new_width, new_height); /* /// DEBUG: colour the interesting area var cPT2 = new YGeoPoint(tllat, tllon); var cPT3 = new YGeoPoint(tllat, brlon); var cPT4 = new YGeoPoint(brlat, brlon); var cPT5 = new YGeoPoint(brlat, tllon); // args: array of pts, color, width, alpha var poly1 = new YPolyline([cPT2,cPT3,cPT4,cPT5, cPT2],'blue',7,0.7); map.addOverlay(poly1); */ } </script> </body> </html> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooTiledBackground/�����������������������������������������0000775�0000000�0000000�00000000000�11770671653�0023743�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooTiledBackground/MYahooTiledBackground.pro����������������0000664�0000000�0000000�00000000611�11770671653�0030641�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(MYahooTiledBackgroundPlugin) DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces include ($${MERKAARTOR_SRC_DIR}/interfaces/Interfaces.pri) HEADERS += \ yahootiledmapadapter.h SOURCES += \ yahootiledmapadapter.cpp RESOURCES += \ MYahooTiledBackground.qrc �����������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooTiledBackground/MYahooTiledBackground.qrc����������������0000664�0000000�0000000�00000000153�11770671653�0030627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/Html"> <file alias="ymap.html">ymap.html</file> </qresource> </RCC> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooTiledBackground/yahootiledmapadapter.cpp�����������������0000664�0000000�0000000�00000014241�11770671653�0030651�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <QtPlugin> #include "yahootiledmapadapter.h" #include <math.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif // from wikipedia #define EQUATORIALRADIUS 6378137.0 #define POLARRADIUS 6356752.0 #define EQUATORIALMETERCIRCUMFERENCE 40075016.68 #define EQUATORIALMETERHALFCIRCUMFERENCE 20037508.34 #define EQUATORIALMETERPERDEGREE 222638.981555556 // {10F45DE0-E529-11DE-8B99-9E7D56D89593} static const QUuid theUid ( 0x10F45DE0, 0xE529, 0x11DE, 0x8B, 0x99, 0x9E, 0x7D, 0x56, 0xD8, 0x95, 0x93); static const QString theName("Yahoo! (Tiled)"); QUuid YahooTiledMapAdapterFactory::getId() const { return theUid; } QString YahooTiledMapAdapterFactory::getName() const { return theName; } /**************/ YahooTiledMapAdapter::YahooTiledMapAdapter() : theImageManager(0) { host = ""; serverPath = "qrc:/Html/ymap.html?"; tilesize = 512; max_zoom = 17; min_zoom = 0; current_zoom = 0; loc = QLocale(QLocale::English); loc.setNumberOptions(QLocale::OmitGroupSeparator); } YahooTiledMapAdapter::~YahooTiledMapAdapter() { } QString YahooTiledMapAdapter::getHost() const { return ""; } QUuid YahooTiledMapAdapter::getId() const { return theUid; } IMapAdapter::Type YahooTiledMapAdapter::getType() const { return IMapAdapter::BrowserBackground; } QString YahooTiledMapAdapter::getName() const { return theName; } QRectF YahooTiledMapAdapter::getBoundingbox() const { return QRectF(QPointF(-EQUATORIALMETERHALFCIRCUMFERENCE, -EQUATORIALMETERHALFCIRCUMFERENCE), QPointF(EQUATORIALMETERHALFCIRCUMFERENCE, EQUATORIALMETERHALFCIRCUMFERENCE)); } QString YahooTiledMapAdapter::projection() const { return ("EPSG:3857"); } int YahooTiledMapAdapter::getTilesWE(int zoomlevel) const { return int(pow(2, zoomlevel+0.0)); } int YahooTiledMapAdapter::getTilesNS(int zoomlevel) const { return int(pow(2, zoomlevel+0.0)); } static QPointF mercatorInverse(const QPointF& point) { qreal longitude = point.x()*180.0/EQUATORIALMETERHALFCIRCUMFERENCE; qreal latitude = (atan(sinh(point.y()/EQUATORIALMETERHALFCIRCUMFERENCE*M_PI))) *180/M_PI; return QPointF(longitude, latitude); } QString YahooTiledMapAdapter::getQuery(int i, int j, int /* z */) const { qreal tileWidth = getBoundingbox().width() / getTilesWE(current_zoom); qreal tileHeight = getBoundingbox().height() / getTilesNS(current_zoom); QPointF ul = mercatorInverse(QPointF(i*tileWidth-EQUATORIALMETERHALFCIRCUMFERENCE, EQUATORIALMETERHALFCIRCUMFERENCE-j*tileHeight)); QPointF br = mercatorInverse(QPointF((i+1)*tileWidth-EQUATORIALMETERHALFCIRCUMFERENCE, EQUATORIALMETERHALFCIRCUMFERENCE- (j+1)*tileHeight)); return getQ(ul, br); } QString YahooTiledMapAdapter::getQ(QPointF ul, QPointF br) const { return QString().append(serverPath) .append("WIDTH=").append(QString().setNum(tilesize+100)) .append("&HEIGHT=").append(QString().setNum(tilesize+100)) .append("&BBOX=") .append(loc.toString(ul.x(),'f',8)).append(",") .append(loc.toString(ul.y(),'f',8)).append(",") .append(loc.toString(br.x(),'f',8)).append(",") .append(loc.toString(br.y(),'f',8)); } //*********** mapadapter int YahooTiledMapAdapter::getTileSizeW() const { return tilesize; } int YahooTiledMapAdapter::getTileSizeH() const { return tilesize; } int YahooTiledMapAdapter::getMinZoom(const QRectF &) const { return min_zoom; } int YahooTiledMapAdapter::getMaxZoom(const QRectF &) const { return max_zoom; } int YahooTiledMapAdapter::getAdaptedMinZoom(const QRectF &) const { return 0; } int YahooTiledMapAdapter::getAdaptedMaxZoom(const QRectF &) const { return max_zoom - min_zoom; } int YahooTiledMapAdapter::getZoom() const { return current_zoom; } int YahooTiledMapAdapter::getAdaptedZoom() const { return current_zoom - min_zoom; } IImageManager* YahooTiledMapAdapter::getImageManager() { return theImageManager; } void YahooTiledMapAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; } //********* tiledmapadapter void YahooTiledMapAdapter::zoom_in() { current_zoom = current_zoom < max_zoom ? current_zoom+1 : max_zoom; } void YahooTiledMapAdapter::zoom_out() { current_zoom = current_zoom > min_zoom ? current_zoom-1 : min_zoom; } bool YahooTiledMapAdapter::isValid(int x, int y, int z) const { return true; if (max_zoom < min_zoom) { z= min_zoom - z; } if ((x<0) || (x>pow(2,z+0.0)-1) || (y<0) || (y>pow(2,z+0.0)-1)) { return false; } return true; } Q_EXPORT_PLUGIN2(MYahooTiledBackgroundPlugin, YahooTiledMapAdapterFactory) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooTiledBackground/yahootiledmapadapter.h�������������������0000664�0000000�0000000�00000013153�11770671653�0030317�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef YAHOOTILEDMAPADAPTER_H #define YAHOOTILEDMAPADAPTER_H #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include <QLocale> //! MapAdapter for WMS servers /*! * Use this derived MapAdapter to display maps from WMS servers * @author Kai Winter <kaiwinter@gmx.de> */ class YahooTiledMapAdapter : public IMapAdapter { Q_OBJECT Q_INTERFACES(IMapAdapter) public: //! constructor /*! * This construct a Yahoo Adapter */ YahooTiledMapAdapter(); virtual ~YahooTiledMapAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const; virtual int getTileSizeH () const; //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const; //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const; //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const; //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag () const { return "Yahoo"; } virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const {return "";} virtual int getAdaptedZoom() const; virtual int getAdaptedMinZoom (const QRectF &) const; virtual int getAdaptedMaxZoom (const QRectF &) const; virtual void zoom_in(); virtual void zoom_out(); virtual bool isValid(int x, int y, int z) const; virtual QString getQuery(int x, int y, int z) const; virtual QString getQuery(const QRectF& /* wgs84Bbox */, const QRectF& /* projBbox */, const QRect& /* size */) const { return ""; } virtual QPixmap getPixmap(const QRectF& /* wgs84Bbox */, const QRectF& /* projBbox */, const QRect& /* size */) const { return QPixmap(); } virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return true; } virtual int getTilesWE(int zoom) const; virtual int getTilesNS(int zoom) const; virtual QString projection() const; virtual QMenu* getMenu() const { return NULL; } virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup() {} virtual bool toXML(QXmlStreamWriter& /*stream*/) { return true; } virtual void fromXML(QXmlStreamReader& /*xParent*/) {} virtual QString toPropertiesHtml() {return "";} virtual void setSettings(QSettings* /*aSet*/) {} private: QLocale loc; IImageManager* theImageManager; QString host; QString serverPath; int tilesize; int min_zoom; int max_zoom; int current_zoom; virtual QString getQ(QPointF ul, QPointF br) const; }; class YahooTiledMapAdapterFactory : public QObject, public IMapAdapterFactory { Q_OBJECT Q_INTERFACES(IMapAdapterFactory) public: //! Creates an instance of the actual plugin /*! * @return a pointer to the MapAdapter */ IMapAdapter* CreateInstance() {return new YahooTiledMapAdapter(); } //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/MYahooTiledBackground/ymap.html��������������������������������0000664�0000000�0000000�00000007363�11770671653�0025610�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <head> <script type="text/javascript"> //var bbox = ""; //var width = 800; //var height = 800; // Parse query string and set variables var url = location.href; var queryStringPos = url.indexOf("?"); if( queryStringPos != -1 ) { url = url.substring(queryStringPos + 1); var variables = url.split ("&"); for (i = 0; i < variables.length; i++) { if( !variables[i] ) continue; var keyValue = variables[i].split("="); eval ('var '+keyValue[0].toLowerCase()+'="'+keyValue[1]+'"'); } } else { dump("YWMS ERROR: no queryString\n"); } // Limit size to current window's, to avoid memory problems //width = Math.min(width, screen.width); //height = Math.min(height, screen.height); </script> <script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=z7qRk3_V34HAbY_SkC7u7GAgG5nDTblw.cuL1OS5LWGwkIIUeGjg4qsnJDPpmhoF"></script> </head> <body style="margin: 0px"> <div id="map"></div> <script type="text/javascript"> if( !bbox || !width || !height) { alert("YWMS ERROR: invalid parameters\n"); } else { alert("ReqSize " + width + " " + height + "\n"); // Resize map container to parameter dimension var mapDiv = document.getElementById("map"); // Get the bounding box var coords = bbox.split(","); var tllon = Number(coords[0]), tllat = Number(coords[1]); var brlon = Number(coords[2]), brlat = Number(coords[3]); var points = new Array(); points[0] = new YGeoPoint(tllat, tllon); points[1] = new YGeoPoint(brlat, brlon); // other map types work as well but only satellite allowed for use with OSM! var map = new YMap(document.getElementById("map"), YAHOO_MAP_SAT, new YSize(width, height)); map.removeZoomScale(); var zac = map.getBestZoomAndCenter(points); var level = zac.zoomLevel; var levels = map.getZoomValidLevels(); if(levels[0] > level) level = levels[0]; map.drawZoomAndCenter(zac.YGeoPoint,level); // Get the on-screen coordinates of the points xy0 = map.convertLatLonXY(points[0]); xy1 = map.convertLatLonXY(points[1]); // This is hack to bug in getBestZoomAndCenter function cx = map.convertXYLatLon(new YCoordPoint((xy0.x+xy1.x)/2, (xy0.y+xy1.y)/2)); map.drawZoomAndCenter(cx,level) alert("Size " + xy0.x + " " + xy0.y + " " + xy1.x + " " + xy1.y + "\n"); alert("Coord " + tllat + " " + tllon + " " + brlat + " " + brlon + "\n"); //alert((brlat + tllat)/2 + " " + (brlon + tllon)/2 + "\n"); // Create a new size for the map. This makes the need of clipping the image unnecessary. new_width = Math.abs( xy0.x - xy1.x); new_height = Math.abs( xy0.y - xy1.y); // Apply the new width-height map.resizeTo( new YSize(new_width, new_height)); mapDiv.style.width = new_width; mapDiv.style.height = new_height; window.moveTo(0,0); window.resizeTo(new_width, new_height); /* /// DEBUG: colour the interesting area var cPT2 = new YGeoPoint(tllat, tllon); var cPT3 = new YGeoPoint(tllat, brlon); var cPT4 = new YGeoPoint(brlat, brlon); var cPT5 = new YGeoPoint(brlat, tllon); // args: array of pts, color, width, alpha var poly1 = new YPolyline([cPT2,cPT3,cPT4,cPT5, cPT2],'blue',7,0.7); map.addOverlay(poly1); */ } </script> </body> </html> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/background.pro�������������������������������������������������0000664�0000000�0000000�00000001226�11770671653�0022427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������TEMPLATE = subdirs #Qt Version QT_VERSION = $$[QT_VERSION] QT_VERSION = $$split(QT_VERSION, ".") QT_VER_MAJ = $$member(QT_VERSION, 0) QT_VER_MIN = $$member(QT_VERSION, 1) !symbian { SUBDIRS += \ # MArbitraryRasterMapBackground \ # MNavitBackground \ # MYahooTiledBackground \ # MYahooBackground \ MMsBingMapBackground \ MWalkingPapersBackground greaterThan(QT_VER_MAJ, 3) : greaterThan(QT_VER_MIN, 5) { SUBDIRS += MCadastreFranceBackground } SUBDIRS += MGeoTiffBackground \ MGdalBackground contains (SPATIALITE, 1) { SUBDIRS += MSpatialiteBackground } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/background/common.pri�����������������������������������������������������0000664�0000000�0000000�00000000321�11770671653�0021565�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������DESTDIR = $$OUTPUT_DIR/$$(QMAKESPEC)/bin/plugins/background macx { target.path = $${PREFIX}/merkaartor.app/Contents/plugins/background } unix:!macx { target.path = $${LIBDIR}/merkaartor/plugins/background } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/common.pri����������������������������������������������������������������0000664�0000000�0000000�00000003277�11770671653�0017463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# PREFIX - base prefix for installation (default: /usr/local) # LIBDIR - base directory for plugins (default: $$PREFIX/lib) # NODEBUG - no debug target #Qt Version QT_VERSION = $$[QT_VERSION] QT_VERSION = $$split(QT_VERSION, ".") QT_VER_MAJ = $$member(QT_VERSION, 0) QT_VER_MIN = $$member(QT_VERSION, 1) MERKAARTOR_SRC_DIR = $$PWD/.. #Static config include ($$MERKAARTOR_SRC_DIR/src/Config.pri) DEFINES += VERSION=\"\\\"$$VERSION\\\"\" DEFINES += REVISION=\"\\\"$$REVISION\\\"\" !contains(NODEBUG,1) { CONFIG += debug OBJECTS_DIR += tmp/$$(QMAKESPEC)/obj_debug } contains(NODEBUG,1) { CONFIG += release DEFINES += NDEBUG DEFINES += QT_NO_DEBUG_OUTPUT OBJECTS_DIR += tmp/$$(QMAKESPEC)/obj_release } win32-msvc* { DEFINES += _USE_MATH_DEFINES } TEMPLATE = lib CONFIG += plugin QT += core xml network #DEFINES += QT_NO_DEBUG_OUTPUT OUTPUT_DIR = $$MERKAARTOR_SRC_DIR/$$(QMAKESPEC)/binaries UI_DIR += tmp/$$(QMAKESPEC) MOC_DIR += tmp/$$(QMAKESPEC) RCC_DIR += tmp/$$(QMAKESPEC) DESTDIR = $$OUTPUT_DIR/$$(QMAKESPEC)/bin/plugins DEPENDPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $${MERKAARTOR_SRC_DIR}/interfaces INCLUDEPATH += $$MERKAARTOR_SRC_DIR/include LIBS += -L$$OUTPUT_DIR macx { # Prefix: base instalation directory PREFIX = /Applications LIBDIR = $${PREFIX}/lib${LIB_SUFFIX} target.path = $${PREFIX}/merkaartor.app/Contents/plugins INSTALLS += target } unix:!macx { # Prefix: base instalation directory isEmpty( PREFIX ) { PREFIX = /usr/local } isEmpty( LIBDIR ) { LIBDIR = $${PREFIX}/lib${LIB_SUFFIX} } target.path = $${LIBDIR}/merkaartor/plugins INSTALLS += target } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/plugins.pro���������������������������������������������������������������0000664�0000000�0000000�00000000062�11770671653�0017647�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������TEMPLATE = subdirs SUBDIRS += background qtstyle ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0017153�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/common.pri��������������������������������������������������������0000664�0000000�0000000�00000000305�11770671653�0021155�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������DESTDIR = $$OUTPUT_DIR/$$(QMAKESPEC)/bin/plugins/styles macx { target.path = $${PREFIX}/merkaartor.app/Contents/plugins/styles } unix:!macx { target.path = $${LIBDIR}/merkaartor/plugins/styles } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/qtstyle.pro�������������������������������������������������������0000664�0000000�0000000�00000000064�11770671653�0021402�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������TEMPLATE = subdirs !symbian:SUBDIRS += skulpture22 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture/��������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0021211�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture/skulpture.cpp�������������������������������������������0000664�0000000�0000000�00001072617�11770671653�0023771�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * skulpture.cpp - classical three-dimensional artwork * * Copyright 2007, 2008 Christoph Feck * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ // ### This file is a mess #include "skulpture_p.h" #include <QtGui/QLayout> #include <QtGui/QLCDNumber> #include <QtGui/QPainter> #include <QtGui/QLabel> #include <QtGui/QProgressBar> #include <QtGui/QScrollBar> #include <QtGui/QIcon> #include <QtGui/QStatusBar> #include <QtGui/QAbstractScrollArea> #include <QtGui/QScrollArea> #include <QtGui/QMdiArea> #include <QtGui/QMdiSubWindow> #include <QtGui/QMenu> #include <QtGui/QMenuBar> #include <QtGui/QWorkspace> #include <QtGui/QHeaderView> #include <QtGui/QMainWindow> #include <QtGui/QSplitter> #include <QtGui/QPainterPath> #include <QtGui/QGroupBox> #include <QtGui/QDockWidget> #include <QtGui/QToolButton> #include <QtGui/QTextEdit> #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #include <QtGui/QPlainTextEdit> #endif #include <QtGui/QComboBox> #include <QtGui/QDial> #include <QtGui/QRadioButton> #include <QtGui/QCheckBox> #include <QtGui/QCalendarWidget> #include <QtGui/QToolBox> #include <QtGui/QToolBar> #include <QtGui/QApplication> #include <QtGui/QPushButton> #include <QtGui/QLineEdit> #include <QtGui/QDialog> #include <QtCore/QFile> #include <QtCore/QTextStream> #include <QtGui/QKeyEvent> #include <QtCore/QList> #include <cstdio> #include <QtCore/QDebug> /*-----------------------------------------------------------------------*/ #include <QtGui/QStylePlugin> class SkulptureStylePlugin : public QStylePlugin { public: QStringList keys() const { return QString::fromUtf8("Skulpture").split(QChar(',', 0)); } QStyle *create(const QString &key) { if (key.toLower() == QString::fromUtf8("skulpture")) { return new SkulptureStyle; } return 0; } }; Q_EXPORT_PLUGIN2(skulpture, SkulptureStylePlugin) /*-----------------------------------------------------------------------*/ SkulptureStyle::SkulptureStyle() : d(new Private) { d->q = this; } SkulptureStyle::~SkulptureStyle() { delete d; } /*-----------------------------------------------------------------------*/ void SkulptureStyle::polish(QApplication *application) { // ParentStyle::polish(application); // return; #if 0 QString oldStyle = application->styleSheet(); QString newStyle; QFile file(QString::fromUtf8("/home/pepo/Projekte/Qt/plugins/styles/SkulptureStyle.qss")); if (file.open(QIODevice::ReadOnly)) { QTextStream stream(&file); newStyle = stream.readAll(); } application->setStyleSheet(newStyle + QChar('\n', 0) + oldStyle); #endif application->installEventFilter(d->shortcut_handler); ParentStyle::polish(application); QPalette palette; polish(palette); application->setPalette(palette); // if (application->inherits("KApplication")) { // qDebug() << "KApplication is a" << application->metaObject()->className() << "(" << "object name:" << application->objectName() << ")"; // } } void SkulptureStyle::unpolish(QApplication *application) { ParentStyle::unpolish(application); application->removeEventFilter(d->shortcut_handler); } /*-----------------------------------------------------------------------*/ static inline bool is_frameless_popup(QWidget *widget) { while (widget) { Qt::WindowFlags flags = widget->windowFlags(); Qt::WindowType type = Qt::WindowType(int(flags & Qt::WindowType_Mask)); if (type & Qt::Window) { if (flags & Qt::FramelessWindowHint || type == Qt::Popup) { return true; } return false; } widget = widget->parentWidget(); } return true; } static inline bool is_framed_scrollarea(QWidget *widget) { #if 1 if (widget->inherits("Q3ScrollView")) { QFrame *frame = qobject_cast<QFrame *>(widget); if (frame->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken)) { return true; } } if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget)) { if (area->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken)) { int left, top, right, bottom; widget->getContentsMargins(&left, &top, &right, &bottom); if (!qobject_cast<QHeaderView *>(widget) // ### parse runtime version for better comparison && (QString::fromUtf8(qVersion()) >= QString::fromUtf8("4.4.") || !qobject_cast<QMdiArea *>(widget)) // && !qobject_cast<QWorkspace *>(widget) && !qobject_cast<QScrollArea *>(widget) && !widget->inherits("KColorCells") // && !widget->inherits("QColumnView") && !widget->inherits("DolphinColumnView") && (!widget->inherits("KTextBrowser") || (left && top && right && bottom)) && !widget->inherits("KDEPrivate::KPageTabbedView") // && !widget->inherits("KFilePlacesView") && !is_frameless_popup(widget)) { return true; } } } #endif return false; } static WidgetShadow *findShadow(QWidget *widget) { QWidget *parent = widget->parentWidget(); if (parent) { QList<WidgetShadow *> shadows = parent->findChildren<WidgetShadow *>(); foreach (WidgetShadow *shadow, shadows) { if (shadow->widget() == widget) { return shadow; } } } return 0; } void SkulptureStyle::polish(QWidget *widget) { // ParentStyle::polish(widget); // return; #if 1 //printf("polishing a \"%s\" (which is a \"%s\")\n", widget->metaObject()->className(), widget->metaObject()->superClass()->className()); #if 0 QPalette palette = widget->palette(); polish(palette); widget->setPalette(palette); #endif #if 1 if (QMdiArea *area = qobject_cast<QMdiArea *>(widget)) { area->installEventFilter(d); } if (qobject_cast<QMdiSubWindow *>(widget)) { WidgetShadow *shadow = findShadow(widget); if (!shadow) { widget->installEventFilter(d); if (widget->parentWidget()) { WidgetShadow *shadow = new WidgetShadow(widget->parentWidget()); shadow->setWidget(widget); shadow->updateZOrder(); shadow->show(); } } } #endif #if 1 if (QLCDNumber *lcd = qobject_cast<QLCDNumber *>(widget)) { QPalette palette; palette.setColor(QPalette::Base, QColor(220, 230, 210)); palette.setColor(QPalette::WindowText, QColor(60, 60, 60)); lcd->setPalette(palette); // lcd->installEventFilter(d); // lcd->setContentsMargins(8, 8, 8, 8); lcd->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); lcd->setSegmentStyle(QLCDNumber::Flat); } #endif #if 0 // FIXME Qt does not propagate scrollbars background role to ScrollBar*Page areas if (QScrollBar *bar = qobject_cast<QScrollBar *>(widget)) { if (bar->parentWidget()) { QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(bar->parentWidget()); if (area && area->viewport()) { bar->setBackgroundRole(area->viewport()->backgroundRole()); } } } #endif #if 1 if (QDialog *dialog = qobject_cast<QDialog *>(widget)) { dialog->installEventFilter(d); } #endif #if 0 if (QMainWindow *window = qobject_cast<QMainWindow *>(widget)) { window->setBackgroundRole(QPalette::Dark); } if (QDockWidget *dock = qobject_cast<QDockWidget *>(widget)) { dock->installEventFilter(d); } if (QStatusBar *bar = qobject_cast<QStatusBar *>(widget)) { bar->installEventFilter(d); } #endif if (QToolBox *toolBox = qobject_cast<QToolBox *>(widget)) { toolBox->setBackgroundRole(QPalette::Window); // toolBox->setContentsMargins(2, 2, 2, 2); // toolBox->installEventFilter(d); toolBox->layout()->setSpacing(0); } #if 0 if (widget->inherits("KTitleWidget")) { QPalette palette = widget->palette(); palette.setColor(QPalette::Base, palette.color(QPalette::Window)); palette.setColor(QPalette::Text, palette.color(QPalette::WindowText)); widget->setPalette(palette); } #endif if (QFrame *frame = qobject_cast<QFrame *>(widget)) { switch (frame->frameShape()) { case QFrame::Panel: case QFrame::WinPanel: case QFrame::Box: frame->setFrameShape(QFrame::StyledPanel); break; case QFrame::HLine: case QFrame::VLine: frame->setEnabled(false); break; default: break; } #if 1 if (widget->inherits("SidebarTreeView")) { QPalette palette = widget->palette(); palette.setColor(QPalette::Window, palette.color(QPalette::Base)); ((QAbstractScrollArea *) widget)->viewport()->setPalette(palette); // printf("frame style is 0x%08x\n", ((QFrame *) widget)->frameStyle()); ((QFrame *) widget)->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); } #endif #if 1 if (widget->inherits("KFilePlacesView")) { QPalette palette = widget->palette(); palette.setColor(QPalette::Window, palette.color(QPalette::Base)); ((QAbstractScrollArea *) widget)->viewport()->setPalette(palette); // widget->setAutoFillBackground(true); ((QFrame *) widget)->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); } #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) if (widget->inherits("QPlainTextEdit")) { QPlainTextEdit *edit = static_cast<QPlainTextEdit *>(widget); // QPalette palette = edit->palette(); // palette.setColor(QPalette::Window, QColor(245, 245, 245)); // edit->setPalette(palette); // edit->viewport()->setPalette(palette); edit->setBackgroundVisible(false); edit->viewport()->installEventFilter(d); // widget->setAttribute(Qt::WA_Hover, true); } #endif #if 1 if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { if (!qstrcmp(widget->metaObject()->className(), "SampleEdit")) { QWidget *bg = new QWidget(widget); bg->lower(); bg->setObjectName(QString::fromUtf8("sample_background")); bg->setGeometry(2, 2, widget->width() - 4, widget->height() - 4); bg->setAutoFillBackground(true); bg->show(); } else { d->mapper.setMapping(edit, edit); connect(edit, SIGNAL(textChanged()), &d->mapper, SLOT(map())); connect(&d->mapper, SIGNAL(mapped(QWidget *)), d, SLOT(textEditSourceChanged(QWidget *))); d->updateTextEditMargins(edit); } edit->viewport()->installEventFilter(d); // widget->setAttribute(Qt::WA_Hover, true); edit->setTabChangesFocus(true); #if 0 if (QTextBrowser *browser = qobject_cast<QTextBrowser *>(widget)) { connect(browser, SIGNAL(sourceChanged()), &d->mapper, SLOT(map())); } #endif } #endif } #if 1 if (QComboBox *combo = qobject_cast<QComboBox *>(widget)) { if (!combo->isEditable()) { combo->setBackgroundRole(QPalette::Button); combo->setForegroundRole(QPalette::ButtonText); } } #endif if (qobject_cast<QCheckBox *>(widget) || qobject_cast<QRadioButton *>(widget)) { widget->setBackgroundRole(QPalette::Window); widget->setForegroundRole(QPalette::WindowText); } if (qobject_cast<QScrollBar *>(widget) // || qobject_cast<QLineEdit *>(widget) || qobject_cast<QDial *>(widget) || qobject_cast<QHeaderView*>(widget) || qobject_cast<QSlider *>(widget) || qobject_cast<QToolButton *>(widget)) { widget->setAttribute(Qt::WA_Hover, true); } #if 0 if (d->allowScrollBarSliderToCoverArrows && qobject_cast<QScrollBar *>(widget)) { widget->installEventFilter(d); } #endif if (QProgressBar *pbar = qobject_cast<QProgressBar *>(widget)) { pbar->installEventFilter(d); if (pbar->isVisible() && !widget->inherits("StatusBarSpaceInfo")) { d->setAnimated(pbar, true); } return; // do not call ParentStyle, because QPlastiqueStyle may add its own animation timer. } #if 1 if (QToolBar *toolbar = qobject_cast<QToolBar *>(widget)) { QFont font; font.setPointSizeF(font.pointSizeF() / (1.19)); QList<QToolButton *> children = toolbar->findChildren<QToolButton *>(); foreach (QToolButton *child, children) { if (!child->icon().isNull()) { child->setFont(font); } } connect(toolbar, SIGNAL(orientationChanged(Qt::Orientation)), d, SLOT(updateToolBarOrientation(Qt::Orientation))); } #endif #if 0 // FIXME does not work if (QMenu *menu = qobject_cast<QMenu *>(widget)) { #if 1 QFont font; QFont oldfont; oldfont.setPointSizeF(oldfont.pointSizeF() * 1.0001); font.setPointSizeF(font.pointSizeF() / (1.19 /* * 1.19*/)); font.setBold(true); menu->setFont(font); /* QAction *action = menu->menuAction(); action->setFont(oldfont); QList<QAction *> children = action->findChildren<QAction *>(); foreach (QAction *child, children) { child->setFont(oldfont); }*/ #else menu->setStyleSheet(QString::fromUtf8("font-size: 6.5")/*.arg(menu->font().pointSizeF() / (1.19 * 1.19))*/); #endif } #endif #if 0 // FIXME does not work if (QGroupBox *group = qobject_cast<QGroupBox *>(widget)) { QFont oldfont; #if 0 if (group->testAttribute(Qt::WA_SetFont)) { QFont oldfont = group->fontInfo(); } #endif QFont font = oldfont; font.setPointSizeF(font.pointSizeF() * 1.19); font.setBold(true); group->setFont(font); QList<QWidget *> children = group->findChildren<QWidget *>(); foreach (QWidget *child, children) { if (1 || !(child->testAttribute(Qt::WA_SetFont))) { printf("reset\n"); child->setFont(oldfont); } } } #endif #if 1 if (widget->inherits("Q3Header")) { QFont font; font.setPointSizeF(font.pointSizeF() / (1.19 /* 1.19*/)); font.setBold(true); widget->setFont(font); } #endif if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget)) { if (QAbstractItemView *iv = qobject_cast<QAbstractItemView *>(widget)) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) // ### Qt issue // iv->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); // iv->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); // QApplication::setWheelScrollLines(64); iv = iv; #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) iv->viewport()->setAttribute(Qt::WA_Hover); #endif #if 1 if (QHeaderView *header = qobject_cast<QHeaderView *>(widget)) { QFont font; font.setPointSizeF(font.pointSizeF() / (1.19 /* 1.19*/)); font.setBold(true); header->setFont(font); // FIXME workaround for Qt 4.3 header->headerDataChanged(header->orientation(), 0, 0); header->updateGeometry(); } #endif } if (is_framed_scrollarea(area)) { if (true /*|| !widget->inherits("KTextBrowser") || !widget->parentWidget() || !widget->parentWidget()->parentWidget() || !(widget->parentWidget()->parentWidget()->inherits("KTipDialog"))*/) { // if (!widget->inherits("KHTMLView") // && !widget->inherits("DolphinIconsView")) { d->installFrameShadow(area); // } } } } #if 1 if (widget->inherits("Konsole::TerminalDisplay") || widget->inherits("KTextEditor::View") || widget->inherits("KHTMLView")) { // ((QFrame *) widget)->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); d->installFrameShadow(widget); } #endif if (widget->inherits("Q3ScrollView")) { if (is_framed_scrollarea(widget)) { d->installFrameShadow(widget); } } #endif #if 0 if (QTabWidget *tab = qobject_cast<QTabWidget *>(widget)) { if (QToolButton *button = qobject_cast<QToolButton *>(tab->cornerWidget(Qt::TopRightCorner))) { button->setAutoRaise(true); } if (QToolButton *button = qobject_cast<QToolButton *>(tab->cornerWidget(Qt::TopLeftCorner))) { button->setAutoRaise(true); } } #endif #if 1 if (QToolButton *button = qobject_cast<QToolButton *>(widget)) { if (qobject_cast<QTabWidget *>(button->parentWidget())) { button->setAutoRaise(true); } } #endif if (!qstrcmp(widget->metaObject()->className(), "QToolBoxButton")) { widget->setAttribute(Qt::WA_Hover, true); } if (!qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { widget->installEventFilter(d); widget->setAttribute(Qt::WA_Hover, true); } ParentStyle::polish(widget); } void SkulptureStyle::unpolish(QWidget *widget) { ParentStyle::unpolish(widget); // return; if (qobject_cast<QMdiArea *>(widget)) { widget->removeEventFilter(d); } if (QMdiSubWindow *win = qobject_cast<QMdiSubWindow *>(widget)) { win->removeEventFilter(d); WidgetShadow *shadow = findShadow(win); if (shadow) { shadow->hide(); shadow->setParent(0); shadow->deleteLater(); } } #if 1 if (QDialog *dialog = qobject_cast<QDialog *>(widget)) { dialog->removeEventFilter(d); } #endif #if 0 if (QLCDNumber *lcd = qobject_cast<QLCDNumber *>(widget)) { lcd->removeEventFilter(d); } if (QToolBox *toolBox = qobject_cast<QToolBox *>(widget)) { toolBox->removeEventFilter(d); } if (QDockWidget *dock = qobject_cast<QDockWidget *>(widget)) { dock->removeEventFilter(d); } if (QStatusBar *status = qobject_cast<QStatusBar *>(widget)) { status->removeEventFilter(d); } #endif #if 0 if (/*d->allowScrollBarSliderToCoverArrows &&*/ qobject_cast<QScrollBar *>(widget)) { widget->installEventFilter(d); } #endif if (QProgressBar *pbar = qobject_cast<QProgressBar *>(widget)) { pbar->removeEventFilter(d); d->setAnimated(pbar, false); return; } if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget)) { area->removeEventFilter(d); if (/*QAbstractItemView *iv =*/qobject_cast<QAbstractItemView *>(widget)) { #if 1 if (QHeaderView *header = qobject_cast<QHeaderView *>(widget)) { QFont font; // font.setPointSizeF(font.pointSizeF() / (1.19 * 1.19)); // font.setBold(true); header->setFont(font); // FIXME workaround for Qt 4.3 header->headerDataChanged(header->orientation(), 0, 0); header->updateGeometry(); } #endif } /* if (QMdiArea *area = qobject_cast<QMdiArea *>(widget)) { area->viewport()->removeEventFilter(d); } */ d->removeFrameShadow(area); } #if 1 if (widget->inherits("Konsole::TerminalDisplay") || widget->inherits("KTextEditor::View") || widget->inherits("KHTMLView")) { widget->removeEventFilter(d); d->removeFrameShadow(widget); } #endif if (widget->inherits("Q3ScrollView")) { widget->removeEventFilter(d); d->removeFrameShadow(widget); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) if (widget->inherits("QPlainTextEdit")) { QPlainTextEdit *edit = static_cast<QPlainTextEdit *>(widget); edit->viewport()->removeEventFilter(d); } #endif if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { if (!qstrcmp(widget->metaObject()->className(), "SampleEdit")) { QList<QObject *> children = widget->children(); foreach (QObject *child, children) { if (child->objectName() == QString::fromUtf8("sample_background")) { child->setParent(0); child->deleteLater(); } } } else { d->mapper.removeMappings(edit); } edit->viewport()->removeEventFilter(d); } if (QToolBar *toolbar = qobject_cast<QToolBar *>(widget)) { QFont font; // font.setPointSizeF(font.pointSizeF() / (1.19)); QList<QToolButton *> children = toolbar->findChildren<QToolButton *>(); foreach (QToolButton *child, children) { if (!child->icon().isNull()) { child->setFont(font); } } disconnect(toolbar, SIGNAL(orientationChanged(Qt::Orientation)), d, SLOT(updateToolBarOrientation(Qt::Orientation))); } if (!qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { widget->removeEventFilter(d); } } /*-----------------------------------------------------------------------*/ bool SkulptureStyle::Private::eventFilter(QObject *watched, QEvent *event) { #if 0 // can't happen, because widgets are the only ones to install it if (!watched->isWidgetType()) { return QObject::eventFilter(watched, event); } #endif QWidget *widget = reinterpret_cast<QWidget *>(watched); // printf("handling a \"%s\" (which is a \"%s\")\n", widget->metaObject()->className(), widget->metaObject()->superClass()->className()); if (qobject_cast<QMdiSubWindow *>(widget)) { WidgetShadow *shadow = findShadow(widget); switch (event->type()) { case QEvent::Move: case QEvent::Resize: if (shadow) { shadow->updateGeometry(); } break; case QEvent::ZOrderChange: if (shadow) { shadow->updateZOrder(); } break; case QEvent::Hide: if (shadow) { shadow->setParent(0); shadow->hide(); shadow->deleteLater(); } break; case QEvent::Show: if (!shadow) { if (widget->parentWidget()) { shadow = new WidgetShadow(widget->parentWidget()); shadow->setWidget(widget); shadow->updateZOrder(); } } else { shadow->updateZOrder(); } default: break; } } switch (event->type()) { case QEvent::Paint: #if 1 // highlight current line in QTextEdit / QPlainTextEdit if (widget->objectName() == QLatin1String("qt_scrollarea_viewport")) { if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget->parent())) { if (!qstrcmp(edit->metaObject()->className(), "SampleEdit")) { QList<QObject *> children = edit->children(); foreach (QObject *child, children) { if (child->objectName() == QString::fromUtf8("sample_background")) { QWidget *bg = qobject_cast<QWidget *>(child); if (bg) { QPalette palette = edit->palette(); palette.setColor(QPalette::Window, palette.color(QPalette::Base)); bg->setPalette(palette); } } } } // updateTextEditMargins(edit); highlightCurrentEditLine(edit); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) else if (widget->parent()->inherits("QPlainTextEdit")) { highlightCurrentEditLine(static_cast<QPlainTextEdit *>(widget->parent())); } #endif } #endif #if 0 if (QDialog *dialog = qobject_cast<QDialog *>(widget)) { QPainter painter(dialog); QRect r = dialog->rect(); QLinearGradient dialogGradient1(r.topLeft(), r.bottomRight()); dialogGradient1.setColorAt(0.0, QColor(255, 255, 255, 30)); dialogGradient1.setColorAt(1.0, QColor(0, 0, 0, 10)); // painter.fillRect(r, dialogGradient1); QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 225, 160)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); // painter.fillRect(r, dialogGradient2); QLinearGradient dialogGradient3(r.topLeft(), r.bottomLeft()); dialogGradient3.setColorAt(0.0, QColor(255, 255, 255, 30)); dialogGradient3.setColorAt(1.0, QColor(0, 0, 0, 20)); painter.fillRect(r, dialogGradient3); paintThinFrame(&painter, dialog->rect().adjusted(0, 0, 0, 0), dialog->palette(), 60, -20); paintThinFrame(&painter, dialog->rect().adjusted(1, 1, -1, -1), dialog->palette(), -20, 60); } #endif #if 0 if (QStatusBar *status = qobject_cast<QStatusBar *>(widget)) { QPainter painter(status); paintThinFrame(&painter, status->rect(), status->palette(), -20, 60); } if (QToolBox *toolBox = qobject_cast<QToolBox *>(widget)) { QPainter painter(toolBox); paintThinFrame(&painter, toolBox->rect(), toolBox->palette(), 60, -20); paintThinFrame(&painter, toolBox->rect().adjusted(1, 1, -1, -1), toolBox->palette(), -60, 140); } if (QLCDNumber *lcd = qobject_cast<QLCDNumber *>(watched)) { // TODO nicer digits, antialiased, slight italics } if (QDockWidget *dock = qobject_cast<QDockWidget *>(widget)) { // ### rendering a frame around dock widgets does not work, because // the subwidgets are placed at the edges. } #endif if (!qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { QPainter painter(widget); QStyleOption option; option.initFrom(widget); if (option.state & QStyle::State_Enabled && option.state & QStyle::State_MouseOver) { // painter.fillRect(widget->rect(), Qt::red); } else { painter.setOpacity(0.2); } QRect r = QRect(widget->rect().center() - QPoint(4, 4), QSize(8, 8)); painter.drawPixmap(r, q->standardIcon(QStyle::SP_TitleBarCloseButton, &option, widget).pixmap(8, 8)); event->accept(); return true; } break; case QEvent::Show: if (QProgressBar *pbar = qobject_cast<QProgressBar *>(watched)) { if (!widget->inherits("StatusBarSpaceInfo")) { setAnimated(pbar, true); } } /* fall through */ case QEvent::Move: case QEvent::Resize: if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { if (!qstrcmp(widget->metaObject()->className(), "SampleEdit")) { QList<QObject *> children = widget->children(); foreach (QObject *child, children) { if (child->objectName() == QString::fromUtf8("sample_background")) { QWidget *bg = qobject_cast<QWidget *>(child); if (bg) { bg->setGeometry(2, 2, widget->width() - 4, widget->height() - 4); } } } } else { textEditSourceChanged(edit); } } else if (qobject_cast<QMdiArea *>(widget)) { QList<WidgetShadow *> shadows = widget->findChildren<WidgetShadow *>(); foreach (WidgetShadow *shadow, shadows) { shadow->updateGeometry(); } } if (qobject_cast<QAbstractScrollArea *>(widget) || widget->inherits("Q3ScrollView") #if 1 || widget->inherits("Konsole::TerminalDisplay") || widget->inherits("KTextEditor::View") || widget->inherits("KHTMLView") #endif ) { updateFrameShadow(widget); } break; case QEvent::Destroy: case QEvent::Hide: setAnimated(reinterpret_cast<QProgressBar *>(watched), false); break; #if 0 case QEvent::MouseButtonRelease: if (allowScrollBarSliderToCoverArrows && qobject_cast<QScrollBar *>(widget)) { widget->update(); } break; #endif default: break; } return QObject::eventFilter(watched, event); } /*-----------------------------------------------------------------------*/ QRect SkulptureStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const { // return ParentStyle::subElementRect(element, option, widget); switch (element) { case SE_ToolBoxTabContents: return ParentStyle::subElementRect(element, option, widget).adjusted(11, 0, 0, 0); case SE_TabWidgetLeftCorner: case SE_TabWidgetRightCorner: return ParentStyle::subElementRect(element, option, widget).adjusted(1, 1, -1, 1); case SE_FrameContents: return option->rect.adjusted(2, 2, -2, -2); #if 1 case SE_CheckBoxIndicator: case SE_CheckBoxContents: case SE_CheckBoxFocusRect: case SE_CheckBoxClickRect: case SE_CheckBoxLayoutItem: case SE_RadioButtonIndicator: case SE_RadioButtonContents: case SE_RadioButtonFocusRect: case SE_RadioButtonClickRect: case SE_RadioButtonLayoutItem: // FIXME: only to work around QPlastiqueStyle return QWindowsStyle::subElementRect(element, option, widget); #endif case SE_LineEditContents: return option->rect.adjusted(3, 0, -3, 0); case SE_DockWidgetCloseButton: case SE_DockWidgetFloatButton: { bool floating = false; bool vertical = false; if (option->type == QStyleOption::SO_DockWidget) { if (widget) { QStyleOptionDockWidget *dockOptions = (QStyleOptionDockWidget *) option; if (dockOptions->floatable) { const QDockWidget *dock = qobject_cast<const QDockWidget *>(widget); if (dock) { floating = dock->isFloating(); vertical = dock->features() & QDockWidget::DockWidgetVerticalTitleBar; } } } } QRect r = ParentStyle::subElementRect(element, option, widget); if (!vertical) { if (floating) { if (option->direction == Qt::LeftToRight) { return r.adjusted(-6, 0, -6, 0); } else { return r.adjusted(6, 0, 6, 0); } } else { if (option->direction == Qt::LeftToRight) { return r.adjusted(-3, 1, -3, 1); } else { return r.adjusted(3, 1, 3, 1); } } } else { if (floating) { return r.adjusted(0, 6, 0, 6); } else { return r.adjusted(1, 3, 1, 3); } } } case SE_DockWidgetTitleBarText: return ParentStyle::subElementRect(element, option, widget).adjusted(4, -3, -4, 5); case SE_DockWidgetIcon: return ParentStyle::subElementRect(element, option, widget).adjusted(4, -3, 4, 5); default: break; } return ParentStyle::subElementRect(element, option, widget); } /*-----------------------------------------------------------------------*/ extern QSize sizeFromContentsMenuItem(const QStyleOptionMenuItem *option, const QSize &contentsSize); extern QSize sizeFromContentsMenu(const QStyleOption *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style); extern QSize sizeFromContentsToolButton(const QStyleOptionToolButton *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style); QSize SkulptureStyle::sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const { // printf("SizeFromContents %d ... ", type); // QSize result = ParentStyle::sizeFromContents(type, option, contentsSize, widget); // printf("SizeFromContents OK\n"); // return result; #define FF -1 switch (type) { case CT_Menu: return sizeFromContentsMenu(option, contentsSize, widget, this); #if 1 // FIXME: only to work around QPlastiqueStyle case CT_CheckBox: case CT_RadioButton: { QSize size = QWindowsStyle::sizeFromContents(type, option, contentsSize, widget); size.rheight() -= 1; return size; } #endif case CT_SpinBox: return QWindowsStyle::sizeFromContents(type, option, contentsSize, widget) + QSize(5, -1 - FF); case CT_ToolButton: { const QStyleOptionToolButton *buttonOption = qstyleoption_cast<const QStyleOptionToolButton *>(option); if (buttonOption) { return sizeFromContentsToolButton(buttonOption, contentsSize, widget, this); } } return contentsSize; case CT_PushButton: { QSize size = QCommonStyle::sizeFromContents(type, option, contentsSize, widget) + QSize(8, 0 - FF); int width = size.width(); const QStyleOptionButton *buttonOption = qstyleoption_cast<const QStyleOptionButton *>(option); /* make text buttons same size */ if (buttonOption && !buttonOption->text.isEmpty()) { if (width < 64) { width = 64; } else { width = ((width - 33) / 32) * 32 + 64; } } size.setWidth(width); return size; } case CT_TabBarTab: { const QStyleOptionTab *tabOption = qstyleoption_cast<const QStyleOptionTab *>(option); if (tabOption && int(tabOption->shape) & 2) { return contentsSize + QSize(8, 24); } } return contentsSize + QSize(24, 8); case CT_LineEdit: return contentsSize + QSize(8, 6 - FF); // case CT_TabWidget: // return contentsSize + QSize(8, 8); case CT_MenuBarItem: { QSize size = QWindowsStyle::sizeFromContents(type, option, contentsSize, widget); return size + QSize(0, 1); } break; #if 1 case CT_MenuItem: { const QStyleOptionMenuItem *menuOption = qstyleoption_cast<const QStyleOptionMenuItem *>(option); if (menuOption) { return sizeFromContentsMenuItem(menuOption, contentsSize); } } break; #endif case CT_Slider: { QSize size = QCommonStyle::sizeFromContents(type, option, contentsSize, widget); // size.rheight() -= 1; return size; #if 0 const QStyleOptionSlider *sliderOption = qstyleoption_cast<const QStyleOptionSlider *>(option); if (sliderOption) { QSize size = contentsSize; // FIXME: Qt has a fixed tickmarks size... disable ticks for now if (sliderOption->orientation == Qt::Horizontal) { if (sliderOption->tickPosition & QSlider::TicksAbove) { printf("ha\n"); size.rheight() -= 5; } if (sliderOption->tickPosition & QSlider::TicksBelow) { printf("hb\n"); size.rheight() -= 5; } } else { if (sliderOption->tickPosition & QSlider::TicksAbove) { printf("va\n"); size.rwidth() -= 5; } if (sliderOption->tickPosition & QSlider::TicksBelow) { printf("vb\n"); size.rwidth() -= 5; } } return size; } #endif } break; case CT_ComboBox: /* if (widget && widget->inherits("QComboBox")) { if (widget->parentWidget() && qobject_cast<QToolBar *>(widget->parentWidget())) { return contentsSize + QSize(34, 4); } } */ return contentsSize + QSize(34, 6 - FF); default: break; } return ParentStyle::sizeFromContents(type, option, contentsSize, widget); } /*-----------------------------------------------------------------------*/ extern QRect subControlRectScrollBar(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, void */*data*/, int /*id*/, const QStyle *style); extern QRect subControlRectSlider(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, void */*data*/, int /*id*/, const QStyle *style); extern QRect subControlRectToolButton(const QStyleOptionToolButton *option, QStyle::SubControl subControl, const QWidget *widget, void */*data*/, int /*id*/, const QStyle *style); QRect SkulptureStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const { // printf("SubControlRect %d ... ", control); // QRect result = ParentStyle::subControlRect(control, option, subControl, widget); // printf("SubControlRect OK\n"); // return result; switch (control) { #if 1 case CC_Slider: if (const QStyleOptionSlider *sliderOption = qstyleoption_cast<const QStyleOptionSlider *>(option)) { return subControlRectSlider(sliderOption, subControl, widget, 0, 0, this); } break; #else case CC_Slider: { QRect r = QCommonStyle::subControlRect(control, option, subControl, widget); return r; } break; #endif case CC_TitleBar: { QRect r = QCommonStyle::subControlRect(control, option, subControl, widget); if (subControl != QStyle::SC_TitleBarSysMenu) { return r.adjusted(-2, -2, -3, -3); } else { return r.adjusted(0, -1, 0, -1); } } break; case CC_ScrollBar: if (d->allowScrollBarSliderToCoverArrows) { if (const QStyleOptionSlider *sliderOption = qstyleoption_cast<const QStyleOptionSlider *>(option)) { return subControlRectScrollBar(sliderOption, subControl, widget, 0, 0, this); } } else { return QCommonStyle::subControlRect(QStyle::CC_ScrollBar, option, subControl, widget); } break; case CC_ToolButton: if (const QStyleOptionToolButton *toolButtonOption = qstyleoption_cast<const QStyleOptionToolButton *>(option)) { return subControlRectToolButton(toolButtonOption, subControl, widget, 0, 0, this); } break; case CC_SpinBox: { // FIXME do not depend on plastique style QRect r = QPlastiqueStyle::subControlRect(control, option, subControl, widget); switch (subControl) { case SC_SpinBoxEditField: if (QString::fromUtf8(qVersion()) == QString::fromUtf8("4.3.0")) { // printf("on 4.3.0\n"); return r; } // printf("on 4.3.x\n"); return r.adjusted(-2, -2, 2, 2); default: break; } return r; } break; case CC_ComboBox: switch (subControl) { case SC_ComboBoxEditField: { const QStyleOptionComboBox *comboBoxOption = qstyleoption_cast<const QStyleOptionComboBox *>(option); if (comboBoxOption) { if (!comboBoxOption->editable) { int s = option->direction == Qt::LeftToRight ? 4 : 0; return ParentStyle::subControlRect(control, option, subControl, widget).adjusted(s, 0, s - 4, 0); } else { // FIXME do not depend on plastique style QRect r = QPlastiqueStyle::subControlRect(control, option, subControl, widget); if (QString::fromUtf8(qVersion()) == QString::fromUtf8("4.3.0")) { return r; } return r.adjusted(-2, -2, 2, 2); } } } default: break; } break; case CC_GroupBox: switch (subControl) { case SC_GroupBoxCheckBox: // case SC_GroupBoxFrame: case SC_GroupBoxLabel: { const QStyleOptionGroupBox *groupBoxOption = qstyleoption_cast<const QStyleOptionGroupBox *>(option); if (groupBoxOption) { if (!(groupBoxOption->features & QStyleOptionFrameV2::Flat)) { int x = option->direction == Qt::RightToLeft ? 8 : -8; int y = (subControl == SC_GroupBoxCheckBox) ? 0 : 1; return ParentStyle::subControlRect(control, option, subControl, widget).adjusted(x, y, x, y); } } } default: break; } break; default: break; } return ParentStyle::subControlRect(control, option, subControl, widget); } /*-----------------------------------------------------------------------*/ QStyle::SubControl SkulptureStyle::hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const { #if 0 switch (control) { case CC_Slider: return QCommonStyle::hitTestComplexControl(control, option, position, widget); case CC_SpinBox: const QStyleOptionSpinBox *spinBoxOption = qstyleoption_cast<const QStyleOptionSpinBox *>(option); if (spinBoxOption) { } } #endif return ParentStyle::hitTestComplexControl(control, option, position, widget); } /*-----------------------------------------------------------------------*/ void SkulptureStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { const Private::DrawElementEntry *entry = d->draw_hash.value(element + Private::DE_Primitive); // entry = 0; Q_ASSERT(option); // printf("drawPrimitive %d ... ", element); if (entry && (!entry->type || option->type == entry->type)) { entry->func(painter, option, widget ? widget->backgroundRole() : QPalette::Window, widget ? widget->foregroundRole() : QPalette::WindowText, entry->data, entry->id, widget, this); } else { // painter->fillRect(option->rect, Qt::red); ParentStyle::drawPrimitive(element, option, painter, widget); } // printf("drawPrimitive OK\n"); } void SkulptureStyle::drawControl(ControlElement control, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { const Private::DrawElementEntry *entry = d->draw_hash.value(control + Private::DE_Element); // entry = 0; Q_ASSERT(option); // printf("drawControl %d ... ", control); if (entry && (!entry->type || option->type == entry->type)) { entry->func(painter, option, widget ? widget->backgroundRole() : QPalette::Window, widget ? widget->foregroundRole() : QPalette::WindowText, entry->data, entry->id, widget, this); } else { // painter->fillRect(option->rect, Qt::red); ParentStyle::drawControl(control, option, painter, widget); } // printf("drawControl OK\n"); } void SkulptureStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const { const Private::DrawElementEntry *entry = d->draw_hash.value(control + Private::DE_Complex); // entry = 0; Q_ASSERT(option); // printf("drawComplex %d ... ", control); if (entry && (!entry->type || option->type == entry->type)) { entry->func(painter, option, widget ? widget->backgroundRole() : QPalette::Window, widget ? widget->foregroundRole() : QPalette::WindowText, entry->data, entry->id, widget, this); } else { // painter->fillRect(option->rect, Qt::red); ParentStyle::drawComplexControl(control, option, painter, widget); } // printf("drawComplex OK\n"); } /*-----------------------------------------------------------------------*/ //#include "skulpture.moc" /* * skulpture_animations.cpp * */ #include "skulpture_p.h" #include <QtGui/QProgressBar> #include <QtCore/QTimeLine> #include <QtCore/QTimerEvent> /*-----------------------------------------------------------------------*/ /* * starts/stops timer * */ void SkulptureStyle::Private::setAnimated(QWidget *widget, bool animated) { if (!widget) { return; } if (animated && animateProgressBars) { animations.insert(widget); if (!timer) { timer = startTimer(60); } } else { animations.remove(widget); if (animations.isEmpty()) { if (timer) { killTimer(timer); timer = 0; } } } } bool SkulptureStyle::Private::isAnimated(QWidget *widget) { if (!widget || !timer) { return false; } return animations.contains(widget); } void SkulptureStyle::Private::timerEvent(QTimerEvent *event) { if (event->timerId() == timer) { foreach (QWidget *widget, animations) { // FIXME: move this logic to progressbar QProgressBar *bar = qobject_cast<QProgressBar *>(widget); if (bar) { if (bar->minimum() >= bar->maximum() || bar->value() < bar->maximum()) { bar->update(); } } else { widget->update(); } } } event->ignore(); } /* * skulpture_arrows.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ /* * Arrow shapes are paths. They are scaled, rotated, or flipped * before they are rendered. * * To create an arrow shape, use this coordinate system: * * (-1, 1) ... (1, 1) * * ... (0, 0) ... * * (-1, -1) ... (1, -1) * * The center (0,0) is at the center of the arrow. The arrow * MUST POINT DOWN and should fill the whole rectangle. * The returned path should be closed. * * FIXME: the following does not work: * If the path is not closed, it will be mirrored along the y-axis * and closed. So to create a simple arrow, use: * shape.moveTo(-1, 1); * shape.lineTo(0, -1); * */ #if 0 class ArrowGlyph { public: virtual QPainterPath shape(); virtual ~ArrowGlyph(); }; ArrowGlyph::~ArrowGlyph() { } #endif static inline QPainterPath arrowShape() { QPainterPath shape; #if 0 const qreal wf = 0.3; // width of arrow body, 0 ... 1 const qreal hf = 0.0; // start of arrow body, 1 ... -1 if (hf == 1.0) { // special case: closed triangle shape.moveTo(-1, 1); shape.lineTo(1, 1); shape.lineTo(0, -1); shape.lineTo(-1, 1); } else { // arrow const qreal h2f = hf; // start of arrow, 1 ... -1 shape.moveTo(-wf, 1); shape.lineTo(wf, 1); shape.lineTo(wf, hf); shape.lineTo(1, h2f); shape.lineTo(0, -1); shape.lineTo(-1, h2f); shape.lineTo(-wf, hf); shape.lineTo(-wf, 1); } #elif 1 const qreal wf = 0.8; // width of inner arrow 0 ... 1 const qreal hf = 0.2; // position of inner arrow, -1 ... 1 if (wf == 0.0) { // special case: closed triangle shape.moveTo(-1, 1); shape.lineTo(1, 1); shape.lineTo(0, -1); shape.lineTo(-1, 1); } else if (wf == 1.0) { // special case: full inner width shape.moveTo(-1, 1); shape.lineTo(0, hf); shape.lineTo(1, 1); shape.lineTo(0, -1); shape.lineTo(-1, 1); } else { // concave arrow shape.moveTo(-1, 1); shape.lineTo(-wf, 1); shape.lineTo(0, hf); shape.lineTo(wf, 1); shape.lineTo(1, 1); shape.lineTo(0, -1); shape.lineTo(-1, 1); } #else // dummy shape to test matrix shape.moveTo(-1, 1); shape.lineTo(0, 1); shape.lineTo(0, -1); shape.lineTo(-1, 1); #endif return shape; } static inline QPainterPath arrowPath(const QStyleOption *option, Qt::ArrowType arrow, bool spin) { int h = option->fontMetrics.height() * (spin ? 3 : 4) / 8; int w = option->fontMetrics.height() / 2; h /= 2; w /= 2; if (arrow == Qt::DownArrow || arrow == Qt::RightArrow) { h = -h; } if (arrow == Qt::LeftArrow || arrow == Qt::RightArrow) { QMatrix arrowMatrix(0, w, h, 0, 0, 0); return arrowMatrix.map(arrowShape()); } else { QMatrix arrowMatrix(w, 0, 0, h, 0, 0); return arrowMatrix.map(arrowShape()); } } void paintScrollArrow(QPainter *painter, const QStyleOption *option, Qt::ArrowType arrow, bool spin) { painter->save(); // FIXME: combine translations with path matrix painter->translate(option->rect.center()); #if 1 painter->setRenderHint(QPainter::Antialiasing, true); #else painter->setRenderHint(QPainter::Antialiasing, false); #endif if (painter->renderHints() & QPainter::Antialiasing) { painter->translate(0.5, 0.5); } switch (arrow) { case Qt::UpArrow: painter->translate(0, -0.5); break; case Qt::DownArrow: painter->translate(0, 0.5); break; case Qt::LeftArrow: painter->translate(-0.5, 0); break; case Qt::RightArrow: painter->translate(0.5, 0); break; case Qt::NoArrow: break; } painter->setPen(Qt::NoPen); QColor color = option->palette.color(QPalette::Text); if ((option->state & QStyle::State_MouseOver) && option->state & QStyle::State_Enabled /* && !(option->state & QStyle::State_Sunken)*/) { color = option->palette.color(QPalette::Highlight).dark(200); // painter->setPen(QPen(Qt::white, 1.0)); } else { // painter->setPen(QPen(Qt::white, 0.5)); } painter->setBrush(color); qreal opacity = painter->opacity(); painter->setOpacity(0.7 * opacity); painter->drawPath(arrowPath(option, arrow, spin)); painter->restore(); } void paintIndicatorArrowDown(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::DownArrow, false); } void paintIndicatorArrowLeft(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::LeftArrow, false); } void paintIndicatorArrowRight(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::RightArrow, false); } void paintIndicatorArrowUp(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::UpArrow, false); } /*-----------------------------------------------------------------------*/ /* * Arrow shape description language * * (-1|1),(0|-1) * * * wf: [0...1]; hf: [-1...1]; (-1, 1),(-wf, 1),(0, hf),(wf, 1),(1, 1),(0, -1),(-1, 1); * * global variables the expressions can contain: * * none * * types: * bool * intlist * strlist * floatrange * */ /* * skulpture_buttons.cpp * */ #include "skulpture_p.h" //#include <QtGui/QGradient> #include <QtGui/QPainter> #include <cstdio> /*-----------------------------------------------------------------------*/ /* * create a path from a rectangle, with round corners. * * this is similar to Qt's RoundRect, but with more * control over the cubic points. * */ static QPainterPath button_path(const QRectF &rect, qreal k) { // 0.1 no roundness // 0.2 - 0.3 minimal roundness // 0.5 some roundness // 0.7 nice roundness // 1.0 default roundness // 2.0 really round k *= 0.1; #if 0 // Oxygen like shape const qreal tlh_edge = 3.0 * k; const qreal tlv_edge = 6.0 * k; const qreal tlh_control = 2.0 * k; const qreal tlv_control = 4.0 * k; const qreal blh_edge = 3.0 * k; const qreal blv_edge = 6.0 * k; const qreal blh_control = 2.0 * k; const qreal blv_control = 4.0 * k; const qreal trh_edge = 3.0 * k; const qreal trv_edge = 6.0 * k; const qreal trh_control = 2.0 * k; const qreal trv_control = 4.0 * k; const qreal brh_edge = 3.0 * k; const qreal brv_edge = 6.0 * k; const qreal brh_control = 2.0 * k; const qreal brv_control = 4.0 * k; #elif 0 // testing new shape const qreal tlh_edge = 6.0 * k; const qreal tlv_edge = 3.0 * k; const qreal tlh_control = 4.0 * k; const qreal tlv_control = 2.0 * k; const qreal blh_edge = 6.0 * k; const qreal blv_edge = 6.0 * k; const qreal blh_control = 4.0 * k; const qreal blv_control = 4.0 * k; const qreal trh_edge = 6.0 * k; const qreal trv_edge = 3.0 * k; const qreal trh_control = 4.0 * k; const qreal trv_control = 2.0 * k; const qreal brh_edge = 6.0 * k; const qreal brv_edge = 6.0 * k; const qreal brh_control = 4.0 * k; const qreal brv_control = 4.0 * k; #else // circle shape const qreal tlh_edge = 6.0 * k; const qreal tlv_edge = 6.0 * k; const qreal tlh_control = 4.0 * k; const qreal tlv_control = 4.0 * k; const qreal blh_edge = 6.0 * k; const qreal blv_edge = 6.0 * k; const qreal blh_control = 4.0 * k; const qreal blv_control = 4.0 * k; const qreal trh_edge = 6.0 * k; const qreal trv_edge = 6.0 * k; const qreal trh_control = 4.0 * k; const qreal trv_control = 4.0 * k; const qreal brh_edge = 6.0 * k; const qreal brv_edge = 6.0 * k; const qreal brh_control = 4.0 * k; const qreal brv_control = 4.0 * k; #endif QPainterPath path; path.moveTo(rect.left() + tlh_edge, rect.top()); path.lineTo(rect.right() - trh_edge, rect.top()); path.cubicTo(rect.right() - trh_edge + trh_control, rect.top(), rect.right(), rect.top() + trv_edge - trv_control, rect.right(), rect.top() + trv_edge); path.lineTo(rect.right(), rect.bottom() - brv_edge); path.cubicTo(rect.right(), rect.bottom() - brv_edge + brv_control, rect.right() - brh_edge + brh_control, rect.bottom(), rect.right() - brh_edge, rect.bottom()); path.lineTo(rect.left() + blh_edge, rect.bottom()); path.cubicTo(rect.left() + blh_edge - blh_control, rect.bottom(), rect.left(), rect.bottom() - blv_edge + blv_control, rect.left(), rect.bottom() - blv_edge); path.lineTo(rect.left(), rect.top() + tlv_edge); path.cubicTo(rect.left(), rect.top() + tlv_edge - tlv_control, rect.left() + tlh_edge - tlh_control, rect.top(), rect.left() + tlh_edge, rect.top()); return path; } /*-----------------------------------------------------------------------*/ /* * create a gradient for the inner fill of a button * */ static QBrush button_gradient(const QRectF &rect, const QColor &color, const QStyleOptionButton *option) { qreal ch = color.hueF(); qreal cs = color.saturationF() * 1.0; qreal cv = color.valueF() * 1.0; int ca = color.alpha(); QColor col; if (0 && option->state & QStyle::State_MouseOver) { // Oxygen like highlight QRadialGradient gradient((rect.topLeft() + rect.topRight()) / 2.0, rect.width() / 2.0); col.setHsvF(ch, cs, qMax(0.0, cv - 0.01)); gradient.setColorAt(1.0, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.09)); gradient.setColorAt(0.0, col); return gradient; } else { if (rect.height() > 64) { return QColor(color); } QLinearGradient gradient(rect.topLeft(), rect.bottomLeft()); #if 1 // flat tin col.setHsvF(ch, cs, qMax(0.0, cv - 0.02)); // FIXME other users of ca col.setAlpha(ca); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); col.setAlpha(ca); gradient.setColorAt(1.0, col); #elif 0 // Skulpture default col.setHsvF(ch, cs, qMax(0.0, cv - 0.02)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv + 0.02)); gradient.setColorAt(0.4, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.01)); gradient.setColorAt(0.6, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(1.0, col); #elif 0 // tin col.setHsvF(ch, cs, qMin(1.0, cv + 0.05)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.02)); gradient.setColorAt(0.10, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(0.85, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.03)); gradient.setColorAt(1.0, col); #elif 0 // fat tin col.setHsvF(ch, cs, qMin(1.0, cv + 0.09)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.02)); gradient.setColorAt(0.15, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(0.80, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.07)); gradient.setColorAt(1.0, col); #elif 0 // plastik col.setHsvF(ch, cs, qMax(0.0, cv - 0.03)); gradient.setColorAt(1.0, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(0.0, col); #elif 0 // fat plastik col.setHsvF(ch, cs, qMin(1.0, cv + 0.09)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.05)); gradient.setColorAt(0.1, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.04)); gradient.setColorAt(0.85, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.07)); gradient.setColorAt(1.0, col); #elif 0 // oxygen (really flat) gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, color); #elif 0 // wet plastik (glassy, nearly like SkandaleStyle 0.0.0, but more flat) col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.01)); gradient.setColorAt(0.40, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.05)); gradient.setColorAt(0.405, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.05)); gradient.setColorAt(1.0, col); #elif 0 // aluminium col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.03)); gradient.setColorAt(0.40, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.03)); gradient.setColorAt(0.405, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); gradient.setColorAt(1.0, col); #elif 0 // platin col.setHsvF(ch, cs, qMin(1.0, cv + 0.05)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.05)); gradient.setColorAt(0.40, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.05)); gradient.setColorAt(0.405, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.05)); gradient.setColorAt(1.0, col); #elif 0 // silver col.setHsvF(ch, cs, qMin(1.0, cv + 0.07)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.05)); gradient.setColorAt(0.40, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.03)); gradient.setColorAt(0.405, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.09)); gradient.setColorAt(1.0, col); #elif 0 // rubber col.setHsvF(ch, cs, qMin(1.0, cv + 0.09)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.01)); gradient.setColorAt(0.30, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.00)); gradient.setColorAt(0.70, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.07)); gradient.setColorAt(1.0, col); #elif 0 // ugly silver col.setHsvF(ch, cs, qMin(1.0, cv + 0.09)); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.03)); gradient.setColorAt(0.10, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.05)); gradient.setColorAt(0.60, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.01)); gradient.setColorAt(0.90, col); col.setHsvF(ch, cs, qMax(0.0, cv - 0.07)); gradient.setColorAt(1.0, col); #endif return gradient; } } /*-----------------------------------------------------------------------*/ /* * style options: * features: Flat, HasMenu, DefaultButton, AutoDefaultButton, CommandLinkButton * state: Sunken, On, Raised * state: Enabled, HasFocus, MouseOver, Active * */ void paintButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole) { const QRectF &c_rect = option->rect; const qreal t = 1.0; QRectF rect = c_rect; #if 0 painter->setPen(Qt::NoPen); painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.5), QColor(255, 0, 0, 255), QColor(0, 0, 255, 255))); painter->drawPath(button_path(rect, 1.5)); return; #endif bool frame = true; if (option->features & QStyleOptionButton::Flat && !(option->state & QStyle::State_Sunken)) { frame = false; } painter->setPen(Qt::NoPen); if ((option->features & QStyleOptionButton::DefaultButton) && (option->state & QStyle::State_Enabled)) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.3), blend_color(QColor(0, 0, 0, 10), option->palette.color(QPalette::Highlight).light(110), 0.2), blend_color(QColor(0, 0, 0, 15), option->palette.color(QPalette::Highlight).light(110), 0.2))); } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.3), shaded_color(option->palette.color(QPalette::Window), -10), shaded_color(option->palette.color(QPalette::Window), -15))); } painter->drawPath(button_path(rect, 1.5)); rect.adjust(t, t, -t, -t); QBrush bgbrush = option->palette.brush(option->state & QStyle::State_Enabled ? (bgrole == QPalette::NoRole ? QPalette::Button : bgrole) : QPalette::Window); if (bgbrush.style() == Qt::SolidPattern && bgbrush.color().alpha() == 0) { QColor color = option->palette.color(QPalette::Window); color.setAlpha(0); bgbrush = color; } if (frame) { if (option->state & QStyle::State_Enabled) { if (0 && option->state & QStyle::State_HasFocus) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), blend_color(QColor(0, 0, 0, 35), option->palette.color(QPalette::Highlight).dark(120), 0.7), blend_color(QColor(0, 0, 0, 35), option->palette.color(QPalette::Highlight).dark(120), 0.7))); } else if (option->state & QStyle::State_Sunken || option->state & QStyle::State_On) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), shaded_color(option->palette.color(QPalette::Window), -35), shaded_color(option->palette.color(QPalette::Window), -75))); } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), shaded_color(option->palette.color(QPalette::Window), -75), shaded_color(option->palette.color(QPalette::Window), -45))); } } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), shaded_color(option->palette.color(QPalette::Window), -35), shaded_color(option->palette.color(QPalette::Window), -35))); } painter->drawPath(button_path(rect, 1.3)); rect.adjust(t, t, -t, -t); if (bgbrush.style() == Qt::SolidPattern) { QColor bgcolor = bgbrush.color(); if (option->state & QStyle::State_On) { bgcolor = blend_color(bgcolor, option->palette.color(QPalette::Highlight), 0.2); bgbrush = button_gradient(rect, bgcolor, option); } if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { bgcolor = bgcolor.light(102); } else if (option->state & QStyle::State_MouseOver) { bgcolor = bgcolor.light(104); } bgbrush = button_gradient(rect, bgcolor, option); } painter->setBrush(bgbrush); // painter->setBrush(option->palette.color(QPalette::Button)); painter->drawPath(button_path(rect, 1.1)); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken || option->state & QStyle::State_On) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 0.9), shaded_color(bgcolor, -10), shaded_color(bgcolor, -20))); } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 0.9), shaded_color(bgcolor, -20), shaded_color(bgcolor, 160))); } painter->drawPath(button_path(rect, 1.1)); } } painter->setBrush(bgbrush); } else { QColor bgcolor = option->palette.color(QPalette::Window); if (option->state & QStyle::State_MouseOver) { bgcolor = bgcolor.light(104); } if (option->state & QStyle::State_On) { bgcolor = blend_color(bgcolor, option->palette.color(QPalette::Highlight), 0.2); } painter->setBrush(bgcolor); } rect.adjust(t, t, -t, -t); // painter->setBrush(option->palette.color(QPalette::Button)); painter->save(); // make transparent buttons appear transparent painter->setCompositionMode(QPainter::CompositionMode_Source); painter->drawPath(button_path(rect, 0.9)); painter->restore(); // painter->drawRect(c_rect.adjusted(3, 3, -3, -3)); } void paintPushButtonBevel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole fgrole, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { QStyleOptionButton opt = *option; opt.features &= ~(QStyleOptionButton::HasMenu); ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_PushButtonBevel, &opt, painter, widget); if (option->features & QStyleOptionButton::Flat) { if (!(option->state & (QStyle::State_Sunken | QStyle::State_On))) { if (option->state & QStyle::State_MouseOver) { painter->fillRect(option->rect, QColor(255, 255, 255, 60)); } } } if (option->features & QStyleOptionButton::HasMenu) { int size = style->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, widget); // QFont font; // font.setPointSizeF(font.pointSizeF() / 1.19); // opt.fontMetrics = QFontMetrics(font); opt.palette.setColor(QPalette::Text, opt.palette.color(fgrole)); opt.state &= ~(QStyle::State_MouseOver); if (option->direction == Qt::LeftToRight) { opt.rect = QRect(option->rect.right() - size - 2, option->rect.top(), size, option->rect.height()); } else { opt.rect = QRect(option->rect.left() + 4, option->rect.top(), size, option->rect.height()); } if (option->state & (QStyle::State_Sunken | QStyle::State_On)) { opt.rect.translate(style->pixelMetric(QStyle::PM_ButtonShiftHorizontal, &opt, widget), style->pixelMetric(QStyle::PM_ButtonShiftVertical, &opt, widget)); } style->drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } } /* * skulpture_cache.cpp * */ #include "skulpture_p.h" #include <QtGui/QPixmapCache> #include <QtCore/QDebug> #include <QtGui/QGradient> #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ static const bool UsePixmapCache = true; /*-----------------------------------------------------------------------*/ /* * paint a pushbutton to painter * */ extern void paintButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole); static const int button_edge_size = 16; static const int button_inner_width = 32; void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole) { bool useCache = UsePixmapCache; QString pixmapName; QPixmap pixmap; QRect r = option->rect; r.setWidth(button_inner_width + 2 * button_edge_size); if (/*option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ r.height() > 64) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); uint features = uint(option->features) & (QStyleOptionButton::Flat | QStyleOptionButton::DefaultButton); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } pixmapName.sprintf("scp-cbp-%x-%x-%x-%x-%llx-%x", features, uint(bgrole), state, option->direction, option->palette.cacheKey(), r.height()); } if (!useCache || !QPixmapCache::find(pixmapName, pixmap)) { pixmap = QPixmap(r.size()); pixmap.fill(Qt::transparent); // pixmap.fill(Qt::red); QPainter p(&pixmap); QStyleOptionButton but = *option; but.rect = QRect(QPoint(0, 0), r.size()); // ### neither Clear nor Source works? // p.setCompositionMode(QPainter::CompositionMode_Clear); // p.setCompositionMode(QPainter::CompositionMode_Source); // p.fillRect(but.rect, Qt::transparent); // p.setCompositionMode(QPainter::CompositionMode_SourceOver); p.setFont(painter->font()); p.setRenderHint(QPainter::Antialiasing, true); paintButtonPanel(&p, &but, bgrole); p.end(); if (useCache) { QPixmapCache::insert(pixmapName, pixmap); // qDebug() << "inserted into cache:" << pixmapName; } } int rem; if (option->rect.width() == r.width()) { rem = r.width(); } else { int side = qMin(option->rect.width() / 2, button_inner_width + button_edge_size); painter->drawPixmap(r.topLeft(), pixmap, QRect(0, 0, side, r.height())); int midw = option->rect.width() - 2 * side; rem = option->rect.width() - side; r.translate(side, 0); while (midw > 0) { int w = qMin(button_inner_width, midw); rem -= w; painter->drawPixmap(r.topLeft(), pixmap, QRect(button_edge_size, 0, w, r.height())); r.translate(w, 0); midw -= button_inner_width; } } painter->drawPixmap(r.topLeft(), pixmap, QRect(r.width() - rem, 0, rem, r.height())); } /*-----------------------------------------------------------------------*/ void paintPanelButtonTool(QPainter *painter, const QStyleOption *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); QStyleOptionButton button; if (widget && !qstrcmp(widget->metaObject()->className(), "QDockWidgetTitleButton")) { if (!(option->state & QStyle::State_MouseOver)) return; } button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; // button.state &= ~(QStyle::State_Sunken | QStyle::State_Selected | QStyle::State_On); // ### qtconfig creates its color select buttons as disabled... // ### the same is done in for TitleBar buttons if (button.state == QStyle::State_Sunken || button.state == QStyle::State_Raised) { button.state |= QStyle::State_Enabled; } else if (!(button.state & QStyle::State_Enabled) && (option->state & QStyle::State_AutoRaise)) { return; } // ### don't know if tool buttons should have that big frame... button.rect.adjust(-1, -1, 1, 1); // FIXME bgrole paintCommandButtonPanel(painter, &button, QPalette::Button); } /*-----------------------------------------------------------------------*/ static void paintIndicatorCached(QPainter *painter, const QStyleOption *option, void (*paintIndicator)(QPainter *painter, const QStyleOption *option), bool useCache, const QString &pixmapName) { QPixmap pixmap; if (!useCache || !QPixmapCache::find(pixmapName, pixmap)) { pixmap = QPixmap(option->rect.size()); #if 1 pixmap.fill(Qt::transparent); // pixmap.fill(Qt::red); #else pixmap.fill(option->palette.color(QPalette::Window)); #endif QPainter p(&pixmap); QStyleOption opt = *option; opt.rect = QRect(QPoint(0, 0), option->rect.size()); // p.setCompositionMode(QPainter::CompositionMode_Clear); // p.setCompositionMode(QPainter::CompositionMode_Source); // p.fillRect(opt.rect, Qt::transparent); // p.setCompositionMode(QPainter::CompositionMode_SourceOver); p.setFont(painter->font()); p.setRenderHint(QPainter::Antialiasing, true); paintIndicator(&p, &opt); p.end(); if (useCache) { QPixmapCache::insert(pixmapName, pixmap); // qDebug() << "inserted into cache:" << pixmapName; } } painter->drawPixmap(option->rect, pixmap); } /*-----------------------------------------------------------------------*/ /* * paint a checkbox to the painter * * the size/position of the checkbox is * option->rect * * the following option->state flags modify appearance: * - enabled * - on, off, nochange * - mouse over * - selected * */ static void paintCheckBox(QPainter *painter, const QStyleOption *option) { QRect r = option->rect; // painter->fillRect(option->rect, Qt::red); r.adjust(2, 2, -2, -2); if (option->state & QStyle::State_NoChange) { paintThinFrame(painter, r.adjusted(-1, -1, 1, 1), option->palette, 30, -10); paintThinFrame(painter, r, option->palette, -50, -60); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, 0, 60); QColor color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { color = color.dark(110); } else if (option->state & QStyle::State_MouseOver) { color = color.light(106); } } else { color = color.dark(106); } painter->fillRect(r.adjusted(2, 2, -2, -2), color); } else { QColor color = option->palette.color(QPalette::Base); if (!(option->state & QStyle::State_On) && !(option->state & QStyle::State_Enabled)) { color = option->palette.color(QPalette::Window); } painter->fillRect(r.adjusted(1, 1, -1, -1), color); QLinearGradient checkGradient(r.topLeft(), r.bottomLeft()); checkGradient.setColorAt(0.0, shaded_color(color, -15)); checkGradient.setColorAt(1.0, shaded_color(color, 60)); painter->fillRect(r.adjusted(1, 1, -1, -1), checkGradient); paintRecessedFrame(painter, r.adjusted(-1, -1, 1, 1), option->palette, RF_Small); if (option->state & QStyle::State_Enabled) { paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, 140, 200); } else { paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, 180, 180); } #if 0 // FIXME dont use round highlight, but works better QRadialGradient on_gradient(rf.center(), r.width() / 2.0 + 2); QColor endc = option->palette.color(QPalette::Highlight).light(150); QColor midc = endc; if (option->state & QStyle::State_MouseOver) { midc.setAlpha(250); } else { midc.setAlpha(120); } endc.setAlpha(0); if (option->state & QStyle::State_Sunken) { on_gradient.setColorAt(0.0, option->palette.color(QPalette::Base)); } else if (option->state & QStyle::State_On) { on_gradient.setColorAt(0.0, option->palette.color(QPalette::Highlight).dark(150)); on_gradient.setColorAt(0.3, option->palette.color(QPalette::Highlight)); } else if (!(option->state & QStyle::State_MouseOver)) { return; } on_gradient.setColorAt(0.4, option->palette.color(QPalette::Highlight).light(150)); on_gradient.setColorAt(0.5, midc); on_gradient.setColorAt(1.0, endc); painter->setPen(Qt::NoPen); painter->setBrush(on_gradient); painter->drawRect(r); #endif { QRectF r = option->rect; r.adjust(2, 2, -2, -2); QPainterPath path; qreal a; r.moveCenter(QPointF(0, 0)); // FIXME make a loop if (option->state & (QStyle::State_On | QStyle::State_Sunken | QStyle::State_MouseOver)) { painter->save(); r.adjust(1, 1, -1, -1); path = QPainterPath(); path.setFillRule(Qt::WindingFill); a = r.width() / 4.0; path.addRect(r.adjusted(a, 0, -a, 0)); path.addRect(r.adjusted(0, a, 0, -a)); painter->setPen(Qt::NoPen); painter->setBrush(option->palette.color(QPalette::Highlight).light(150)); painter->setOpacity(painter->opacity() * 0.5); painter->translate(QRectF(option->rect).center()); painter->rotate(50); painter->drawPath(path); painter->restore(); } if (option->state & (QStyle::State_On | QStyle::State_Sunken)) { painter->save(); r.adjust(1, 1, -1, -1); path = QPainterPath(); path.setFillRule(Qt::WindingFill); a = r.width() / 3.0; path.addRect(r.adjusted(a, 0, -a, 0)); path.addRect(r.adjusted(0, a, 0, -a)); painter->setPen(Qt::NoPen); painter->setBrush(option->palette.color(QPalette::Highlight)); painter->setOpacity(painter->opacity() * (option->state & QStyle::State_On ? 0.5 : 0.7)); painter->translate(QRectF(option->rect).center()); painter->rotate(50); painter->drawPath(path); painter->restore(); } if (option->state & QStyle::State_On) { painter->save(); path = QPainterPath(); path.setFillRule(Qt::WindingFill); r.adjust(1, 1, -1, -1); a = r.width() / 3.0; path.addRect(r.adjusted(a, 0, -a, 0)); path.addRect(r.adjusted(0, a, 0, -a)); painter->setPen(Qt::NoPen); painter->setBrush(option->palette.color(QPalette::Highlight).dark(option->state & QStyle::State_Sunken ? 80 : 150)); painter->setOpacity(painter->opacity() * 0.8); painter->translate(QRectF(option->rect).center()); painter->rotate(50); painter->drawPath(path); painter->restore(); } } } } void paintIndicatorCheckBox(QPainter *painter, const QStyleOptionButton *option) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ r.width() * r.height() > 4096) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_NoChange | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-icb-%x-%x-%llx-%x-%x", state, option->direction, option->palette.cacheKey(), r.width(), r.height()); } paintIndicatorCached(painter, option, paintCheckBox, useCache, pixmapName); } /*-----------------------------------------------------------------------*/ /* * paint a radiobutton to the painter * * the size/position of the radiobutton is * option->rect * * the following option->state flags modify appearance: * - enabled * - on, off * - mouse over * - selected * */ static void paintRadioButton(QPainter *painter, const QStyleOption *option) { // const qreal angle = option->direction == Qt::LeftToRight ? 135.0 : 45.0; // painter->fillRect(option->rect, Qt::red); int d = qMin(option->rect.width(), option->rect.height()) - 4; QRect r(option->rect.left() + (option->rect.width() - d) / 2, option->rect.top() + (option->rect.height() - d) / 2, d, d); // painter->fillRect(r, Qt::white); QLinearGradient border_gradient(r.topLeft(), r.bottomRight()); border_gradient.setColorAt(0.0, option->palette.color(QPalette::Window).lighter(120)); // border_gradient.setColorAt(0.1, option->palette.color(QPalette::Window)); // border_gradient.setColorAt(0.7, option->palette.color(QPalette::Window).darker(400)); border_gradient.setColorAt(1.0, option->palette.color(QPalette::Window).darker(20)); int t = 2; painter->setPen(QPen(border_gradient, t)); #if 0 QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); dial_gradient.setColorAt(0.0, option->palette.color(QPalette::Window).darker(105)); dial_gradient.setColorAt(0.5, option->palette.color(QPalette::Window).lighter(102)); dial_gradient.setColorAt(1.0, option->palette.color(QPalette::Window).lighter(105)); #elif 0 QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); dial_gradient.setColorAt(0.0, option->palette.color(QPalette::Window).lighter(102)); dial_gradient.setColorAt(0.4, option->palette.color(QPalette::Window).darker(102)); dial_gradient.setColorAt(0.5, option->palette.color(QPalette::Window).darker(105)); dial_gradient.setColorAt(1.0, option->palette.color(QPalette::Window).lighter(102)); #else QConicalGradient dial_gradient(r.center(), -100); if (option->state & QStyle::State_Enabled) { dial_gradient.setColorAt(0.0, option->palette.color(QPalette::Base).darker(102)); dial_gradient.setColorAt(0.3, option->palette.color(QPalette::Base).darker(106)); dial_gradient.setColorAt(0.7, option->palette.color(QPalette::Base).darker(110)); dial_gradient.setColorAt(1.0, option->palette.color(QPalette::Base).darker(102)); } else { dial_gradient.setColorAt(0.0, option->palette.color(QPalette::Window).lighter(102)); dial_gradient.setColorAt(0.4, option->palette.color(QPalette::Window).darker(102)); dial_gradient.setColorAt(0.5, option->palette.color(QPalette::Window).darker(105)); dial_gradient.setColorAt(1.0, option->palette.color(QPalette::Window).lighter(102)); } #endif painter->setBrush(dial_gradient); t = t / 2; painter->drawEllipse(r.adjusted(t, t, -t, -t)); QLinearGradient border2_gradient(r.topLeft(), r.bottomRight()); border2_gradient.setColorAt(1.0, option->palette.color(QPalette::Window).darker(option->state & QStyle::State_On ? 120 : 110)); border2_gradient.setColorAt(0.5, option->palette.color(QPalette::Window)); border2_gradient.setColorAt(0.0, option->palette.color(QPalette::Window).darker(200)); painter->drawEllipse(r.adjusted(t, t, -t, -t)); // t = option->state & QStyle::State_On ? 2 : 1; t = 1; painter->setPen(QPen(border2_gradient, t)); painter->setBrush(Qt::NoBrush); painter->drawEllipse(r); if (1 || option->state & QStyle::State_On) { QRectF rf = r; QRadialGradient on_gradient(rf.center(), d / 2.0 + 2); QColor endc = option->palette.color(QPalette::Highlight).light(150); QColor midc = endc; #if 0 midc.setAlpha(120); endc.setAlpha(0); on_gradient.setColorAt(0.0, option->palette.color(QPalette::Highlight).dark(150)); on_gradient.setColorAt(0.3, option->palette.color(QPalette::Highlight)); on_gradient.setColorAt(0.4, option->palette.color(QPalette::Highlight).light(150)); #else if (option->state & QStyle::State_MouseOver) { midc.setAlpha(10); } else { midc.setAlpha(120); } endc.setAlpha(0); if (option->state & QStyle::State_Sunken) { on_gradient.setColorAt(0.0, option->palette.color(QPalette::Base)); } else if (option->state & QStyle::State_On) { on_gradient.setColorAt(0.0, option->palette.color(QPalette::Highlight).dark(150)); on_gradient.setColorAt(0.3, option->palette.color(QPalette::Highlight)); } else if (!(option->state & QStyle::State_MouseOver)) { return; } on_gradient.setColorAt(0.4, option->palette.color(QPalette::Highlight).light(150)); #endif on_gradient.setColorAt(0.5, midc); on_gradient.setColorAt(1.0, endc); painter->setPen(Qt::NoPen); painter->setBrush(on_gradient); painter->drawEllipse(r); // painter->drawEllipse(r.adjusted(-2, -2, 2, 2)); } } void paintIndicatorRadioButton(QPainter *painter, const QStyleOptionButton *option) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ r.width() * r.height() > 4096) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-irb-%x-%x-%llx-%x-%x", state, option->direction, option->palette.cacheKey(), r.width(), r.height()); } paintIndicatorCached(painter, option, paintRadioButton, useCache, pixmapName); } /*-----------------------------------------------------------------------*/ void paintIndicatorMenuCheckMark(QPainter *painter, const QStyleOptionMenuItem *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { // FIXME QPlastiqueStyle does not call this, but calls // PE_IndicatorCheckBox/RadioButton directly QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(*option); // buttonOption.rect.adjust(-2, -2, 2, 2); // qDebug("here!"); // printf("state 0x%08x\n", uint(buttonOption.state)); if (option->state & QStyle::State_Enabled) { if (buttonOption.state & QStyle::State_On) { buttonOption.state |= QStyle::State_Sunken; } } buttonOption.state |= QStyle::State_On; if (widget) { buttonOption.palette = widget->palette(); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Active) { buttonOption.palette.setCurrentColorGroup(QPalette::Active); } else { buttonOption.palette.setCurrentColorGroup(QPalette::Inactive); } } else { buttonOption.palette.setCurrentColorGroup(QPalette::Disabled); } } if (option->checkType == QStyleOptionMenuItem::Exclusive) { QSize size(style->pixelMetric(QStyle::PM_ExclusiveIndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_ExclusiveIndicatorHeight, option, widget)); buttonOption.rect = QRect(option->rect.center() - QPoint(size.width() / 2, size.height() / 2), size); paintIndicatorRadioButton(painter, &buttonOption); } else { QSize size(style->pixelMetric(QStyle::PM_IndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_IndicatorHeight, option, widget)); buttonOption.rect = QRect(option->rect.center() - QPoint(size.width() / 2, size.height() / 2), size); paintIndicatorCheckBox(painter, &buttonOption); } } /*-----------------------------------------------------------------------*/ static void paintGrip(QPainter *painter, const QStyleOption *option) { // painter->fillRect(option->rect, Qt::red); int d = qMin(option->rect.width(), option->rect.height()); // good values are 3 (very small), 4 (small), 5 (good), 7 (large), 9 (huge) // int d = 5; QRectF rect(QRectF(option->rect).center() - QPointF(d / 2.0, d / 2.0), QSizeF(d, d)); const qreal angle = option->direction == Qt::LeftToRight ? 135.0 : 45.0; // const qreal angle = 90; QColor color; qreal opacity = 0.9; painter->save(); painter->setPen(Qt::NoPen); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { color = option->palette.color(QPalette::Highlight).dark(110); } else { color = option->palette.color(QPalette::Button); } } else { color = option->palette.color(QPalette::Window); opacity = 0.5; } QConicalGradient gradient1(rect.center(), angle); gradient1.setColorAt(0.0, shaded_color(color, -110)); gradient1.setColorAt(0.25, shaded_color(color, -30)); gradient1.setColorAt(0.5, shaded_color(color, 180)); gradient1.setColorAt(0.75, shaded_color(color, -30)); gradient1.setColorAt(1.0, shaded_color(color, -110)); painter->setBrush(color); painter->drawEllipse(rect); painter->setBrush(gradient1); painter->setOpacity(opacity); painter->drawEllipse(rect); painter->setOpacity(1.0); if (d > 2) { QConicalGradient gradient2(rect.center(), angle); gradient2.setColorAt(0.0, shaded_color(color, -40)); gradient2.setColorAt(0.25, shaded_color(color, 0)); gradient2.setColorAt(0.5, shaded_color(color, 210)); gradient2.setColorAt(0.75, shaded_color(color, 0)); gradient2.setColorAt(1.0, shaded_color(color, -40)); rect.adjust(1, 1, -1, -1); painter->setBrush(color); painter->drawEllipse(rect); painter->setBrush(gradient2); painter->setOpacity(opacity); painter->drawEllipse(rect); painter->setOpacity(1.0); if (d > 8) { QConicalGradient gradient3(rect.center(), angle); gradient3.setColorAt(0.0, shaded_color(color, -10)); gradient3.setColorAt(0.25, shaded_color(color, 0)); gradient3.setColorAt(0.5, shaded_color(color, 180)); gradient3.setColorAt(0.75, shaded_color(color, 0)); gradient3.setColorAt(1.0, shaded_color(color, -10)); rect.adjust(2, 2, -2, -2); painter->setBrush(color); painter->drawEllipse(rect); painter->setBrush(gradient3); painter->setOpacity(opacity); painter->drawEllipse(rect); painter->setOpacity(1.0); } } painter->restore(); } void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ r.width() * r.height() > 4096) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-isg-%x-%x-%x-%llx-%x-%x", uint(bgrole), state, option->direction, option->palette.cacheKey(), r.width(), r.height()); } paintIndicatorCached(painter, option, paintGrip, useCache, pixmapName); } /*-----------------------------------------------------------------------*/ void paintDialBase(QPainter *painter, const QStyleOption *option) { // painter->fillRect(option->rect, Qt::red); // painter->save(); // painter->setRenderHint(QPainter::Antialiasing, true); int d = qMin(option->rect.width(), option->rect.height()); /* if (d > 20 && option->notchTarget > 0) { d += -1; } */ QRectF r((option->rect.width() - d) / 2.0, (option->rect.height() - d) / 2.0, d, d); const qreal angle = option->direction == Qt::LeftToRight ? 135.0 : 45.0; // const qreal angle = 90; painter->setPen(Qt::NoPen); QColor border_color = option->palette.color(QPalette::Window); #if 0 { QRadialGradient depth_gradient(r.center(), d / 2); // depth_gradient.setColorAt(0.0, QColor(0, 0, 0, 255)); depth_gradient.setColorAt(0.5, QColor(0, 0, 0, 255)); depth_gradient.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->setBrush(depth_gradient); painter->drawEllipse(r); } #endif #if 1 if (option->state & QStyle::State_HasFocus && option->state & QStyle::State_KeyboardFocusChange) { painter->setBrush(option->palette.color(QPalette::Highlight).dark(180)); r.adjust(1, 1, -1, -1); painter->drawEllipse(r); painter->setBrush(border_color); r.adjust(1, 1, -1, -1); painter->drawEllipse(r); r.adjust(1, 1, -1, -1); } else { painter->setBrush(border_color); r.adjust(1, 1, -1, -1); painter->drawEllipse(r); r.adjust(1, 1, -1, -1); QConicalGradient border_gradient(r.center(), angle); if (!(option->state & QStyle::State_Enabled)) { border_color = border_color.lighter(120); } border_gradient.setColorAt(0.0, border_color.darker(180)); border_gradient.setColorAt(0.3, border_color.darker(130)); border_gradient.setColorAt(0.5, border_color.darker(170)); border_gradient.setColorAt(0.7, border_color.darker(130)); border_gradient.setColorAt(1.0, border_color.darker(180)); painter->setBrush(border_gradient); // painter->setBrush(Qt::blue); painter->drawEllipse(r); r.adjust(1, 1, -1, -1); } d -= 6; QColor dial_color; if (option->state & QStyle::State_Enabled) { dial_color = option->palette.color(QPalette::Button).lighter(101); if (option->state & QStyle::State_MouseOver) { dial_color = dial_color.lighter(103); } } else { dial_color = option->palette.color(QPalette::Window); } qreal t = option->state & QStyle::State_Enabled ? 2.0 : 1.5; if (1) { // ###: work around Qt 4.3.0 bug? (this works for 4.3.1) QConicalGradient border_gradient(r.center(), angle); border_gradient.setColorAt(0.0, dial_color.lighter(120)); border_gradient.setColorAt(0.2, dial_color); border_gradient.setColorAt(0.5, dial_color.darker(130)); border_gradient.setColorAt(0.8, dial_color); border_gradient.setColorAt(1.0, dial_color.lighter(120)); painter->setPen(QPen(border_gradient, t)); } else { painter->setPen(QPen(Qt::red, t)); } #if 0 QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); dial_gradient.setColorAt(0.0, dial_color.darker(105)); dial_gradient.setColorAt(0.5, dial_color.lighter(102)); dial_gradient.setColorAt(1.0, dial_color.lighter(105)); #elif 1 QLinearGradient dial_gradient(option->direction == Qt::RightToLeft ? r.topRight() : r.topLeft(), option->direction == Qt::RightToLeft ? r.bottomLeft() : r.bottomRight()); // QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); if (true || option->state & QStyle::State_Enabled) { #if 1 dial_gradient.setColorAt(0.0, dial_color.darker(106)); dial_gradient.setColorAt(1.0, dial_color.lighter(104)); #else dial_gradient.setColorAt(0.0, dial_color.lighter(101)); dial_gradient.setColorAt(0.5, dial_color.darker(103)); dial_gradient.setColorAt(1.0, dial_color.lighter(104)); #endif } else { dial_gradient.setColorAt(0.0, dial_color); dial_gradient.setColorAt(1.0, dial_color); } #elif 0 QConicalGradient dial_gradient(r.center(), angle); dial_gradient.setColorAt(0.0, dial_color.lighter(102)); dial_gradient.setColorAt(0.5, dial_color.darker(103)); dial_gradient.setColorAt(1.0, dial_color.lighter(102)); #else QBrush dial_gradient(dial_color); #endif painter->setBrush(dial_gradient); t = t / 2; painter->drawEllipse(r.adjusted(t, t, -t, -t)); // painter->setPen(Qt::NoPen); // painter->setBrush(dial_color); // painter->drawEllipse(r.adjusted(d / 4, d / 4, - d / 4, - d / 4)); #if 0 QLinearGradient border2_gradient(r.topLeft(), r.bottomRight()); border2_gradient.setColorAt(1.0, dial_color.darker(425)); border2_gradient.setColorAt(0.9, dial_color); border2_gradient.setColorAt(0.0, dial_color.darker(400)); painter->setPen(QPen(border2_gradient, 1.3)); painter->setBrush(Qt::NoBrush); painter->drawEllipse(r.adjusted(0.3, 0.3, -0.3, -0.3)); #endif // painter->restore(); #endif } void paintCachedDialBase(QPainter *painter, const QStyleOptionSlider *option) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; int d = qMin(r.width(), r.height()); if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ d > 128) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_KeyboardFocusChange | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus | QStyle::State_KeyboardFocusChange); } // state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-qdb-%x-%x-%llx-%x", state, option->direction, option->palette.cacheKey(), d); } paintIndicatorCached(painter, option, paintDialBase, useCache, pixmapName); } void paintIndicatorDial(QPainter *painter, const QStyleOptionSlider *option) { int d = qMin(option->rect.width(), option->rect.height()); QRect rect(option->rect.center() - QPoint((d - 1) / 2, (d - 1) / 2), QSize(d, d)); QStyleOptionSlider opt; opt.QStyleOption::operator=(*option); opt.rect = rect; paintCachedDialBase(painter, &opt); } /*-----------------------------------------------------------------------*/ void paintBranchChildren(QPainter *painter, const QStyleOption *option) { painter->setBrush(option->palette.color(QPalette::Text)); painter->setPen(Qt::NoPen); painter->drawEllipse(option->rect); } void paintCachedIndicatorBranchChildren(QPainter *painter, const QStyleOption *option) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; int d = qMin(r.width(), r.height()); if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ d > 64) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_Open); // if (!(state & QStyle::State_Enabled)) { // state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus | QStyle::State_KeyboardFocusChange); // } // state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-qibc-%x-%x-%llx-%x", state, option->direction, option->palette.cacheKey(), d); } paintIndicatorCached(painter, option, paintBranchChildren, useCache, pixmapName); } /* * skulpture_color.cpp * */ #include "skulpture_p.h" /*-----------------------------------------------------------------------*/ QColor shaded_color(const QColor &color, int shade) { #if 1 const qreal contrast = 1.0; int r, g, b; color.getRgb(&r, &g, &b); int gray = qGray(r, g, b); gray = qMax(r, qMax(g, b)); gray = (r + b + g + 3 * gray) / 6; if (shade < 0) { qreal k = 220.0 / 255.0 * shade; k *= contrast; int a = 255; if (gray > 0) { a = int(k * 255 / (0 - gray)); if (a < 0) a = 0; if (a > 255) a = 255; } return QColor(0, 0, 0, a); } else { qreal k = (255 - 220.0) / (255.0) * shade; k *= contrast; int a = 255; if (gray < 255) { a = int(k * 255 / (255 - gray)); if (a < 0) a = 0; if (a > 255) a = 255; } return QColor(255, 255, 255, a); } #else if (shade < 0) { return QColor(0, 0, 0, -shade); } else { return QColor(255, 255, 255, shade); } #endif } QColor blend_color(const QColor &c0, const QColor &c1, qreal blend) { #if 0 // more exact, but probably slower QColor c; blend = qMin(1.0, qMax(0.0, blend)); c.setRgbF( c0.redF() * (1.0 - blend) + c1.redF() * blend, c0.greenF() * (1.0 - blend) + c1.greenF() * blend, c0.blueF() * (1.0 - blend) + c1.blueF() * blend, c0.alphaF() * (1.0 - blend) + c1.alphaF() * blend ); return c; #else int b = int(0.5 + 256.0 * blend); b = qMin(256, qMax(0, b)); QRgb rgba0 = c0.rgba(); QRgb rgba1 = c1.rgba(); return QColor( qRed(rgba0) + (((qRed(rgba1) - qRed(rgba0)) * b) >> 8), qGreen(rgba0) + (((qGreen(rgba1) - qGreen(rgba0)) * b) >> 8), qBlue(rgba0) + (((qBlue(rgba1) - qBlue(rgba0)) * b) >> 8), qAlpha(rgba0) + (((qAlpha(rgba1) - qAlpha(rgba0)) * b) >> 8) ); #endif } /*-----------------------------------------------------------------------*/ /* * Don't be too fancy about colors, because KDE 4 * has a different color system */ static void computePaletteGroups(QPalette &palette) { #if 0 // force colors (for KDE4 alpha) palette.setColor(QPalette::Active, QPalette::Window, QColor(221, 220, 218)); palette.setColor(QPalette::Active, QPalette::WindowText, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::Button, QColor(226, 225, 222)); palette.setColor(QPalette::Active, QPalette::ButtonText, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::Base, QColor(250, 250, 250)); palette.setColor(QPalette::Active, QPalette::Text, QColor(0, 0, 0)); // palette.setColor(QPalette::Active, QPalette::Highlight, QColor(250, 210, 0)); // palette.setColor(QPalette::Active, QPalette::HighlightedText, QColor(0, 0, 0)); #endif palette.setColor(QPalette::Inactive, QPalette::Window, palette.color(QPalette::Active, QPalette::Window)); palette.setColor(QPalette::Inactive, QPalette::WindowText, palette.color(QPalette::Active, QPalette::WindowText)); palette.setColor(QPalette::Inactive, QPalette::Button, palette.color(QPalette::Active, QPalette::Button)); palette.setColor(QPalette::Inactive, QPalette::ButtonText, palette.color(QPalette::Active, QPalette::ButtonText)); palette.setColor(QPalette::Inactive, QPalette::Base, palette.color(QPalette::Active, QPalette::Base)); palette.setColor(QPalette::Inactive, QPalette::Text, palette.color(QPalette::Active, QPalette::Text)); // palette.setColor(QPalette::Inactive, QPalette::Highlight, QColor(250, 210, 0)); // palette.setColor(QPalette::Inactive, QPalette::HighlightedText, QColor(0, 0, 0)); #if 0 palette.setColor(QPalette::Active, QPalette::WindowText, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::ButtonText, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::Text, QColor(0, 0, 0)); #endif palette.setColor(QPalette::Active, QPalette::AlternateBase, palette.color(QPalette::Active, QPalette::Base).dark(103)); palette.setColor(QPalette::Inactive, QPalette::AlternateBase, palette.color(QPalette::Inactive, QPalette::Base).dark(103)); palette.setColor(QPalette::Disabled, QPalette::AlternateBase, palette.color(QPalette::Disabled, QPalette::Base).dark(103)); palette.setColor(QPalette::Disabled, QPalette::Window, palette.color(QPalette::Window)); palette.setColor(QPalette::Disabled, QPalette::WindowText, shaded_color(palette.color(QPalette::Window), -40)); palette.setColor(QPalette::Disabled, QPalette::Button, palette.color(QPalette::Button)); palette.setColor(QPalette::Disabled, QPalette::ButtonText, shaded_color(palette.color(QPalette::Button), -40)); palette.setColor(QPalette::Disabled, QPalette::Base, palette.color(QPalette::Window).light(100)); palette.setColor(QPalette::Disabled, QPalette::Text, palette.color(QPalette::Base).dark(140)); palette.setColor(QPalette::Disabled, QPalette::Highlight, palette.color(QPalette::Window).dark(120)); // ### does Qt use these for QHLine / QVLine ? #if 1 // palette.setColor(QPalette::Active, QPalette::Dark, QColor(0, 0, 0, 20)); // palette.setColor(QPalette::Active, QPalette::Light, QColor(255, 255, 255, 60)); // palette.setColor(QPalette::Inactive, QPalette::Dark, QColor(0, 0, 0, 20)); // palette.setColor(QPalette::Inactive, QPalette::Light, QColor(255, 255, 255, 60)); palette.setColor(QPalette::Disabled, QPalette::Dark, shaded_color(palette.color(QPalette::Window), -20)); palette.setColor(QPalette::Disabled, QPalette::Light, shaded_color(palette.color(QPalette::Window), 60)); #endif } QPalette SkulptureStyle::standardPalette() const { QPalette palette = ParentStyle::standardPalette(); #if 0 palette.setColor(QPalette::Window, QColor(225, 222, 215)); palette.setColor(QPalette::Button, QColor(230, 227, 220)); palette.setColor(QPalette::Base, QColor(250, 250, 248)); #elif 0 // dark scheme (testing) palette.setColor(QPalette::Window, QColor(70, 70, 70)); palette.setColor(QPalette::Button, QColor(90, 90, 90)); palette.setColor(QPalette::Base, QColor(0, 0, 0)); palette.setColor(QPalette::Text, QColor(255, 255, 255)); palette.setColor(QPalette::ButtonText, QColor(255, 255, 255)); palette.setColor(QPalette::WindowText, QColor(255, 255, 255)); #elif 0 // Skulpture 0.0.3 //palette.setColor(QPalette::Window, QColor(235, 235, 235)); palette.setColor(QPalette::Window, QColor(220, 220, 220)); //palette.setColor(QPalette::Window, QColor(195, 195, 195)); //palette.setColor(QPalette::Button, QColor(255, 255, 255)); palette.setColor(QPalette::Button, QColor(225, 225, 225)); //palette.setColor(QPalette::Button, QColor(25, 25, 25)); //palette.setColor(QPalette::ButtonText, QColor(255, 255, 255)); palette.setColor(QPalette::Base, QColor(250, 250, 250)); #else // Skulpture 0.0.4 palette.setColor(QPalette::Window, QColor(221, 220, 218)); palette.setColor(QPalette::WindowText, QColor(0, 0, 0)); palette.setColor(QPalette::Button, QColor(226, 225, 222)); palette.setColor(QPalette::ButtonText, QColor(0, 0, 0)); palette.setColor(QPalette::Base, QColor(250, 250, 250)); palette.setColor(QPalette::Text, QColor(0, 0, 0)); #endif #if 0 // turkise palette.setColor(QPalette::Highlight, QColor(120, 230, 220)); palette.setColor(QPalette::HighlightedText, QColor(0, 0, 0)); #elif 0 // green palette.setColor(QPalette::Highlight, QColor(150, 210, 150)); //palette.setColor(QPalette::Highlight, QColor(220, 180, 60)); palette.setColor(QPalette::HighlightedText, QColor(0, 0, 0)); #elif 1 // gold palette.setColor(QPalette::Highlight, QColor(250, 210, 0)); //palette.setColor(QPalette::Highlight, QColor(180, 180, 180)); palette.setColor(QPalette::HighlightedText, QColor(0, 0, 0)); #elif 0 // light blue palette.setColor(QPalette::Highlight, QColor(160, 210, 250)); palette.setColor(QPalette::HighlightedText, QColor(0, 0, 0)); #else // dark blue palette.setColor(QPalette::Highlight, QColor(80, 120, 200)); palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255)); #endif // palette.setColor(QPalette::Button, QColor(215, 225, 210)); // palette.setColor(QPalette::Button, QColor(230, 230, 230)); // palette.setColor(QPalette::Button, QColor(240, 200, 210)); // palette.setColor(QPalette::Highlight, QColor(40, 70, 80)); // palette.setColor(QPalette::Highlight, QColor(80, 130, 160)); // palette.setColor(QPalette::Highlight, QColor(80, 130, 60)); // palette.setColor(QPalette::Highlight, QColor(140, 70, 50)); computePaletteGroups(palette); return palette; } void SkulptureStyle::polish(QPalette &palette) { ParentStyle::polish(palette); computePaletteGroups(palette); } /* * skulpture_combobox.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ void paintComboBox(QPainter *painter, const QStyleOptionComboBox *option, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { QStyleOptionComboBox opt; opt = *option; if (opt.state & QStyle::State_On) { opt.state |= QStyle::State_Sunken; } else { opt.state &= ~QStyle::State_Sunken; } opt.state &= ~QStyle::State_On; QRect r = ((QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, widget); if (option->direction == Qt::LeftToRight) { r.adjust(-2, 0, 1, 0); } else { r.adjust(-1, 0, 2, 0); } if (option->subControls & (QStyle::SC_ComboBoxFrame | QStyle::SC_ComboBoxEditField)) { if (!option->editable) { QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(opt); // buttonOption.palette.setColor(bgrole, buttonOption.palette.color(QPalette::Window)); style->drawPrimitive(QStyle::PE_PanelButtonCommand, &buttonOption, painter, widget); // separator int ox = r.width() - 1; if (opt.state & QStyle::State_Sunken) { ox -= 1; } if (option->direction == Qt::LeftToRight) { painter->fillRect(option->rect.adjusted(option->rect.width() - ox - 1, 2, -ox, -2), shaded_color(option->palette.color(QPalette::Button), -30)); painter->fillRect(option->rect.adjusted(option->rect.width() - ox, 2, -ox + 1, -2), shaded_color(option->palette.color(QPalette::Button), 80)); } else { painter->fillRect(option->rect.adjusted(ox - 1, 2, ox - option->rect.width(), -2), shaded_color(option->palette.color(QPalette::Button), -30)); painter->fillRect(option->rect.adjusted(ox, 2, ox - option->rect.width() + 1, -2), shaded_color(option->palette.color(QPalette::Button), 80)); } } else { QColor color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled) { color = option->palette.color(QPalette::Window).lighter(107); } if (option->direction == Qt::LeftToRight) { painter->fillRect(r.adjusted(3, 0, -1, 0), color); } else { painter->fillRect(r.adjusted(1, 0, -3, 0), color); } QStyleOptionFrame frameOpt; frameOpt.QStyleOption::operator=(*option); frameOpt.rect = style->subControlRect(QStyle::CC_ComboBox, option, QStyle::SC_ComboBoxFrame, widget); frameOpt.state |= QStyle::State_Sunken; frameOpt.lineWidth = style->pixelMetric(QStyle::PM_ComboBoxFrameWidth, &frameOpt, widget); frameOpt.midLineWidth = 0; color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled) { color = option->palette.color(QPalette::Base); if (option->state & QStyle::State_HasFocus) { color = blend_color(color, option->palette.color(QPalette::Highlight), 0.15); } } QRect edit = style->subControlRect(QStyle::CC_ComboBox, option, QStyle::SC_ComboBoxEditField, widget).adjusted(2, 2, -2, -2); painter->fillRect(edit, color); if (option->state & QStyle::State_Enabled && option->rect.height() <= 64) { QLinearGradient panelGradient(option->rect.topLeft(), option->rect.bottomLeft()); if (color.valueF() > 0.9) { panelGradient.setColorAt(0.0, shaded_color(color, -20)); } panelGradient.setColorAt(0.6, shaded_color(color, 0)); panelGradient.setColorAt(1.0, shaded_color(color, 10)); painter->fillRect(edit, panelGradient); } style->drawPrimitive(QStyle::PE_FrameLineEdit, &frameOpt, painter, widget); } } // arrow if (option->subControls & (QStyle::SC_ComboBoxArrow)) { int ox = r.width() - 2; // ### work around Qt bug // r.setHeight((r.height() & -2) + 0); if (option->direction == Qt::LeftToRight) { QRect ar(int(option->rect.width()) - ox + 2, 2, ox - 6, r.height()); if (opt.state & QStyle::State_Sunken) { ar.adjust(1, 1, 1, 1); } opt.rect = ar; } else { QRect ar(6, 2, ox - 6, r.height()); if (opt.state & QStyle::State_Sunken) { ar.adjust(-1, 1, -1, 1); } opt.rect = ar; } opt.state &= QStyle::State_Enabled; #if 0 ((QPlastiqueStyle *) style)->QPlastiqueStyle::drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, painter, widget); #else opt.rect.adjust(-1, 0, -1, 0); // painter->fillRect(opt.rect, Qt::red); style->drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, painter, widget); #endif } // focus frame if ((option->state & QStyle::State_HasFocus) && !option->editable) { QStyleOptionFocusRect focus; focus.QStyleOption::operator=(*option); focus.rect = style->subElementRect(QStyle::SE_ComboBoxFocusRect, option, widget); // focus.rect = style->subControlRect(QStyle::CC_ComboBox, option, QStyle::SC_ComboBoxEditField, widget).adjusted(-2, 0, 2, 0); focus.state |= QStyle::State_FocusAtBorder; focus.backgroundColor = option->palette.color(bgrole); style->drawPrimitive(QStyle::PE_FrameFocusRect, &focus, painter, widget); } } void paintComboBoxLabel(QPainter *painter, const QStyleOptionComboBox *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { QStyleOptionComboBox opt = *option; opt.palette.setColor(QPalette::Base, QColor(0, 0, 0, 0)); // ((QWindowsStyle *) style)->QWindowsStyle::drawControl(QStyle::CE_ComboBoxLabel, &opt, painter, widget); ((QPlastiqueStyle *) style)->QPlastiqueStyle::drawControl(QStyle::CE_ComboBoxLabel, &opt, painter, widget); } /* * skulpture_dial.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QAbstractSlider> #include <cmath> /*-----------------------------------------------------------------------*/ extern void paintIndicatorDial(QPainter *painter, const QStyleOptionSlider *option); extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole); void paintDial(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { int d = qMin(option->rect.width(), option->rect.height()); QStyleOptionSlider opt = *option; const QAbstractSlider *slider; // always highlight knob if pressed (even if mouse is not over knob) if ((option->state & QStyle::State_HasFocus) && (slider = qobject_cast<const QAbstractSlider *>(widget))) { if (slider->isSliderDown()) { opt.state |= QStyle::State_MouseOver; } } // tickmarks opt.palette.setColor(QPalette::Inactive, QPalette::WindowText, QColor(120, 120, 120, 255)); opt.palette.setColor(QPalette::Active, QPalette::WindowText, QColor(120, 120, 120, 255)); opt.state &= ~QStyle::State_HasFocus; ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_Dial, &opt, painter, widget); // focus rectangle if (option->state & QStyle::State_HasFocus) { QStyleOptionFocusRect focus; opt.state |= QStyle::State_HasFocus; focus.QStyleOption::operator=(opt); focus.rect.adjust(-1, -1, 1, 1); style->drawPrimitive(QStyle::PE_FrameFocusRect, &focus, painter, widget); } opt.palette = option->palette; // dial base if (d <= 256) { paintIndicatorDial(painter, &opt); } else { // large dials are slow to render, do not render them } // dial knob d -= 6; int gripSize = (option->fontMetrics.height() / 4) * 2 - 1; opt.rect.setSize(QSize(gripSize, gripSize)); opt.rect.moveCenter(option->rect.center()); // angle calculation from qcommonstyle.cpp (c) Trolltech 1992-2007, ASA. qreal angle; int sliderPosition = option->upsideDown ? option->sliderPosition : (option->maximum - option->sliderPosition); int range = option->maximum - option->minimum; if (!range) { angle = M_PI / 2; } else if (option->dialWrapping) { angle = M_PI * 1.5 - (sliderPosition - option->minimum) * 2 * M_PI / range; } else { angle = (M_PI * 8 - (sliderPosition - option->minimum) * 10 * M_PI / range) / 6; } qreal rr = d / 2.0 - gripSize - 2; opt.rect.translate(int(0.5 + rr * cos(angle)), int(0.5 - rr * sin(angle))); paintCachedGrip(painter, &opt, option->state & QStyle::State_Enabled ? QPalette::Button : QPalette::Window); } /* * skulpture_dock.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QDockWidget> /*-----------------------------------------------------------------------*/ void paintFrameDockWidget(QPainter *painter, const QStyleOptionFrame *option) { paintThinFrame(painter, option->rect, option->palette, -60, 160); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); } void paintDockWidgetTitle(QPainter *painter, const QStyleOptionDockWidget *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { const QDockWidget *dock = qobject_cast<const QDockWidget *>(widget); bool vertical = dock && (dock->features() & QDockWidget::DockWidgetVerticalTitleBar); bool floating = dock && dock->isFloating(); QRect r = option->rect; if (floating) { if (vertical) { r.adjust(-3, 3, 0, -3); } else { r.adjust(3, -3, -3, 0); } // painter->fillRect(r.adjusted(1, 1, -1, -1), QColor(30, 40, 80)); } QColor color = option->palette.color(QPalette::Window); paintThinFrame(painter, r, option->palette, 40, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 80); QLinearGradient gradient(r.topLeft(), vertical ? r.topRight() : r.bottomLeft()); gradient.setColorAt(0.0, shaded_color(color, 50)); gradient.setColorAt(0.2, shaded_color(color, 30)); gradient.setColorAt(0.5, shaded_color(color, 0)); gradient.setColorAt(0.51, shaded_color(color, -10)); gradient.setColorAt(1.0, shaded_color(color, -20)); painter->fillRect(r.adjusted(1, 1, -1, -1), gradient); #if 0 QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 255, 50)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->save(); painter->translate(r.center()); painter->scale(r.width() / 2.0 / r.height(), 1); painter->translate(-r.center()); painter->fillRect(r.adjusted(1, 1, -1, -1), dialogGradient2); painter->restore(); #endif QFont font = painter->font(); font.setBold(true); font.setPointSizeF(font.pointSizeF() / 1.19); painter->save(); painter->setFont(font); r = style->subElementRect(QStyle::SE_DockWidgetTitleBarText, option, widget); // ### fix for Plastique centering if (vertical && option->rect.height() & 1) { if (!floating) { r.adjust(0, 1, 0, 1); } else { r.adjust(0, -1, 0, -1); } } if (floating) { if (vertical) { r.adjust(-1, 12, 3, -10); } else { r.adjust(2, 3, -3, -7); } } else { if (vertical) { r.adjust(0, 8, 4, -8); } else { r.adjust(0, 5, 0, -7); } } if (vertical) { QMatrix mat; QPointF c = r.center(); mat.translate(c.x(), c.y()); mat.rotate(-90); mat.translate(-c.x(), -c.y()); r = mat.mapRect(r); painter->setMatrix(mat, true); } // painter->fillRect(r, Qt::red); painter->setClipRect(r); style->drawItemText(painter, r, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic | Qt::TextHideMnemonic, option->palette, true, option->title, QPalette::Text); painter->restore(); } /* * skulpture_frames.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractSpinBox> #include <QtGui/QApplication> #include <QtGui/QComboBox> #include <QtGui/QPainter> #include <cmath> #include <cstdio> /*-----------------------------------------------------------------------*/ static void paintThinFrame(QPainter *painter, const QRect &rect, const QBrush &brush1, const QBrush &brush2) { painter->fillRect(QRect(rect.left() + 1, rect.top(), rect.width() - 1, 1), brush2); painter->fillRect(QRect(rect.left(), rect.top(), 1, rect.height()), brush2); painter->fillRect(QRect(rect.left(), rect.bottom(), rect.width() - 1, 1), brush1); painter->fillRect(QRect(rect.right(), rect.top(), 1, rect.height()), brush1); } static const QBrush shaded_brush(const QPalette &palette, int shade, QPalette::ColorRole bgrole) { return (shaded_color(palette.color(bgrole), shade)); } /*-----------------------------------------------------------------------*/ /** * paintThinFrame - paint a single pixel wide frame * * Paints a frame _inside_ the specified rectangle, using * a single pixel wide pen. The frame is rendered by darkening * or brightening the pixels in that area; no specific color * can be selected. * * dark and light specify how dark or bright the frame should * be rendered. They are either negative (meaning darkening), * or positive (meaning brigthening). * * TODO: * dark and light are arbitrary values; they need adjustment. * */ void paintThinFrame(QPainter *painter, const QRect &rect, const QPalette &palette, int dark, int light, QPalette::ColorRole bgrole) { paintThinFrame(painter, rect, shaded_brush(palette, dark, bgrole), shaded_brush(palette, light, bgrole)); } void paintRecessedFrame(QPainter *painter, const QRect &rect, const QPalette &palette, enum RecessedFrame rf, QPalette::ColorRole bgrole) { paintThinFrame(painter, rect, palette, 30, -20, bgrole); paintThinFrame(painter, rect.adjusted(1, 1, -1, -1), palette, -20, -70, bgrole); paintRecessedFrameShadow(painter, rect.adjusted(2, 2, -2, -2), rf); } /*-----------------------------------------------------------------------*/ void paintFrameGroupBox(QPainter *painter, const QStyleOptionFrame *option) { QRect r = option->rect; r.setHeight(/*r.height() +*/ 2); paintThinFrame(painter, r, option->palette, 60, -20); // paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60); } void paintStyledFrame(QPainter *painter, const QStyleOptionFrame *option, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle */*style*/) { if (option->state & QStyle::State_Sunken) { if (widget && widget->parentWidget() && widget->inherits("QFrame") && widget->parentWidget()->inherits("KFontRequester")) { paintThinFrame(painter, option->rect, option->palette, 60, -20); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); QLinearGradient panelGradient(option->rect.topLeft(), option->rect.bottomLeft()); panelGradient.setColorAt(0.6, QColor(0, 0, 0, 0)); panelGradient.setColorAt(1.0, shaded_color(option->palette.color(QPalette::Window), 70)); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), panelGradient); } else { if (option->palette.color(QPalette::Base) == QColor(220, 230, 210)) { painter->fillRect(option->rect.adjusted(2, 2, -2, -2), option->palette.color(QPalette::Base)); paintRecessedFrame(painter, option->rect, option->palette, RF_Small); } else { RecessedFrame rf = RF_Large; if (!(option->state & QStyle::State_Enabled) || (widget && !widget->isEnabled())) { rf = RF_Small; } if (widget && (widget->inherits("QAbstractItemView") || widget->inherits("Q3ScrollView"))) { const QList<QObject *> children = widget->children(); foreach (QObject *child, children) { if (child->inherits("FrameShadow")) { rf = RF_None; break; } } } paintRecessedFrame(painter, option->rect, option->palette, rf); } } } else if (option->state & QStyle::State_Raised) { QRect r = option->rect; if (option->lineWidth == 0) { paintThinFrame(painter, r, option->palette, -20, 60); } else { paintThinFrame(painter, r, option->palette, -10, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -30, 80, bgrole); // painter->fillRect(option->rect, Qt::red); } } else { // Plain if (widget && widget->parentWidget() && widget->inherits("QFrame") && widget->parentWidget()->inherits("KTitleWidget")) { QRect r = option->rect; bgrole = QPalette::Window; // bgrole = QPalette::Base; QColor bgcolor = option->palette.color(bgrole); painter->fillRect(r, bgcolor); paintThinFrame(painter, r, option->palette, -10, -20); // painter->fillRect(r.adjusted(1, 1, -1, -1), QColor(200, 190, 160)); // painter->fillRect(r.adjusted(1, 1, -1, -1), QColor(240, 240, 240)); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -30, 80, bgrole); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); gradient.setColorAt(0.0, shaded_color(bgcolor, 90)); gradient.setColorAt(0.2, shaded_color(bgcolor, 60)); gradient.setColorAt(0.5, shaded_color(bgcolor, 0)); gradient.setColorAt(0.51, shaded_color(bgcolor, -10)); gradient.setColorAt(1.0, shaded_color(bgcolor, -20)); painter->fillRect(r.adjusted(1, 1, -1, -1), gradient); #if 0 QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 255, 50)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->save(); painter->translate(r.center()); painter->scale(r.width() / 2.0 / r.height(), 1); painter->translate(-r.center()); painter->fillRect(r.adjusted(1, 1, -1, -1), dialogGradient2); painter->restore(); #endif } else { QRect r = option->rect; paintThinFrame(painter, r, option->palette, 60, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60, bgrole); } } } void paintFrameLineEdit(QPainter *painter, const QStyleOptionFrame *option) { paintRecessedFrame(painter, option->rect, option->palette, RF_Small); } void paintPanelLineEdit(QPainter *painter, const QStyleOptionFrame *option, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget) { bool focus = (option->state & QStyle::State_HasFocus) && !(option->state & QStyle::State_ReadOnly); if (option->palette.brush(bgrole).style() == Qt::SolidPattern) { QColor color = option->palette.color(bgrole); // printf("style=%d, bgrole=%d, panel color: r=%d, g=%d, b=%d, a=%d\n", option->palette.brush(bgrole).style(), bgrole, color.red(), color.green(), color.blue(), color.alpha()); if (focus) { #if 0 color.setHsvF(option->palette.color(QPalette::Highlight).hueF(), 0.05, 1.0); #else color = blend_color(color, option->palette.color(QPalette::Highlight), 0.15); #endif } else if (option->state & QStyle::State_ReadOnly) { // color = color.light(102); /* } else if ((option->state & QStyle::State_Enabled) && (option->state & QStyle::State_MouseOver)) { color = color.light(120); */ } painter->fillRect(option->rect.adjusted(2, 2, -2, -2), color); if (option->state & QStyle::State_Enabled && option->rect.height() <= 64) { QLinearGradient panelGradient(option->rect.topLeft(), option->rect.bottomLeft()); if (color.valueF() > 0.9) { panelGradient.setColorAt(0.0, shaded_color(color, -20)); } panelGradient.setColorAt(0.6, shaded_color(color, 0)); panelGradient.setColorAt(1.0, shaded_color(color, 10)); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), panelGradient); } } if (focus && option->state & QStyle::State_KeyboardFocusChange) { QColor color = option->palette.color(QPalette::Highlight).dark(120); color.setAlpha(120); painter->fillRect(option->rect.adjusted(4, 4 + option->rect.height() - 9, -4, -4), color); } if (option->lineWidth) { if (option->state & QStyle::State_ReadOnly) { paintThinFrame(painter, option->rect, option->palette, 60, -20); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); } else { paintRecessedFrame(painter, option->rect, option->palette, option->rect.height() <= 64 ? RF_Small : RF_Small); } } else if (widget && widget->parent() && (qobject_cast<QAbstractSpinBox *>(widget->parent()) || qobject_cast<QComboBox *>(widget->parent()))) { if (option->palette.brush(bgrole).style() != Qt::SolidPattern) { /* Fix Qt stylesheet demo */ return; } int icon = 0; QComboBox *combo = qobject_cast<QComboBox *>(widget->parent()); if (combo) { icon = widget->geometry().left(); painter->save(); painter->setClipRect(option->rect.adjusted(2, 0, -2, 0)); } paintRecessedFrameShadow(painter, option->rect.adjusted(2 - icon, 2, -2, -2), option->rect.height() <= 64 ? RF_Small : RF_Small); if (combo) { painter->restore(); } } } void paintFrameFocusRect(QPainter *painter, const QStyleOptionFocusRect *option) { if (!(option->state & QStyle::State_KeyboardFocusChange)) { return; } QColor color = option->palette.color(QPalette::Highlight); color.setAlpha(20); painter->fillRect(option->rect, color); // painter->fillRect(option->rect.adjusted(1, 1, -1, -1), color); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), color); color = color.dark(120); color.setAlpha(230); painter->fillRect(option->rect.adjusted(0, option->rect.height() - 1, 0, 0), color); } /*-----------------------------------------------------------------------*/ /* * create a gradient to draw the edge of the given path. * * the path must be convex. * * there are eight colors, one for each of the four edges * and the four corners. * * these are as follows: * * c0 c1 c2 * c7 c3 * c6 c5 c4 * * currently, these are created from two colors only (c0, c4). * * ### currently this function DOES NOT WORK WELL * because of oddities in QConicalGradient. * * maybe don't use QConicalGradient at all * */ QGradient path_edge_gradient(const QRectF &rect, const QStyleOption *option, const QPainterPath &path, const QColor &color2, const QColor &color1) { QPointF c = rect.center(); QColor color[8]; #if 1 if (/*true ||*/ option->direction == Qt::LeftToRight) { color[0] = blend_color(QColor(255, 255, 255, 255), color1, 0.5); color[1] = color1; color[2] = blend_color(color1, color2, 0.5); color[3] = color2; // color[3] = color1; color[4] = blend_color(QColor(0, 0, 0, 255), color2, 0.5); color[5] = color2; color[6] = blend_color(color2, color1, 0.5); color[7] = color1; // color[7] = color2; } else { color[2] = blend_color(QColor(255, 255, 255, 255), color1, 0.5); color[1] = color1; color[0] = blend_color(color1, color2, 0.5); color[7] = color2; // color[7] = color1; color[6] = blend_color(QColor(0, 0, 0, 255), color2, 0.5); color[5] = color2; color[4] = blend_color(color2, color1, 0.5); color[3] = color1; // color[3] = color2; } #else color[0] = QColor(255, 0, 0); color[2] = QColor(255, 0, 100); color[4] = QColor(255, 100, 0); color[6] = QColor(255, 100, 100); color[1] = QColor(0, 255, 0); color[3] = QColor(0, 255, 100); color[5] = QColor(100, 255, 0); color[7] = QColor(100, 255, 100); #endif QConicalGradient gradient(c, 0); #if 0 // does not work well QPolygonF poly = path.toFillPolygon(); QPainterPath pp; pp.addPolygon(poly); for (int i = 0; i < pp.elementCount() - 1; ++i) { const QPainterPath::Element e1 = pp.elementAt(i); const QPainterPath::Element e2 = pp.elementAt(i + 1); if (e2.isLineTo()) { // printf("\nat segment %d (%3g/%3g) > (%3g/%3g)\n", i, e1.x, e1.y, e2.x, e2.y); QColor col; qreal angle = atan2(e2.y - e1.y, e2.x - e1.x); /* * angle == 0: c5 * angle == pi/2: c3 * angle == pi: c1 * angle == 3pi/2: c7 */ const qreal e = (M_PI / 4.0); if (angle < 0) { angle += M_PI * 2.0; } if (angle >= 0*e && angle <= 1*e) { col = blend_color(color[5], color[4], (angle - 0*e) / e); } else if (angle >= 1*e && angle <= 2*e) { col = blend_color(color[4], color[3], (angle - 1*e) / e); } else if (angle >= 2*e && angle <= 3*e) { col = blend_color(color[3], color[2], (angle - 2*e) / e); } else if (angle >= 3*e && angle <= 4*e) { col = blend_color(color[2], color[1], (angle - 3*e) / e); } else if (angle >= 4*e && angle <= 5*e) { col = blend_color(color[1], color[0], (angle - 4*e) / e); } else if (angle >= 5*e && angle <= 6*e) { col = blend_color(color[0], color[7], (angle - 5*e) / e); } else if (angle >= 6*e && angle <= 7*e) { col = blend_color(color[7], color[6], (angle - 6*e) / e); } else if (angle >= 7*e && angle <= 8.00001*e) { col = blend_color(color[6], color[5], (angle - 7*e) / e); } else { qDebug("should not get here"); } // printf(" color is %g/%g/%g\n", col.redF() * 255, col.greenF() * 255, col.blueF() * 255); qreal angle1 = atan2(e1.y - c.y(), e1.x - c.x()); qreal angle2 = atan2(e2.y - c.y(), e2.x - c.x()); if (angle1 < 0) { angle1 += M_PI * 2.0; } if (angle2 < 0) { angle2 += M_PI * 2.0; } if (angle1 > angle2) { gradient.setColorAt(0.0, color[3]); gradient.setColorAt(angle2 / 2.0 / M_PI - 0.00001, col); gradient.setColorAt(angle1 / 2.0 / M_PI + 0.00001, col); gradient.setColorAt(1.0, color[3]); } else { // FIXME: broken QConicalGradient in 4.3.0 ? // this is a workaround if (qAbs(e1.x - e2.x) < 0.1 || qAbs(e1.y - e2.y) < 0.1) { gradient.setColorAt(angle1 / 2.0 / M_PI + 0.00001, col); gradient.setColorAt(angle2 / 2.0 / M_PI - 0.00001, col); } else { // gradient.setColorAt((angle1 + angle2) / 4.0 / M_PI, col); } } // printf(" gradient range: %3g > %3g\n angle is %3g\n", angle1 / 2.0 / M_PI, angle2 / 2.0 / M_PI, angle); } } #else // works a BIT better for this special case Q_UNUSED(path); qreal angle; qreal d = 1; QRectF r = rect.adjusted(1, 1, -1, -1); { QRectF rect = r; gradient.setColorAt(0.0, color[3]); angle = atan2(rect.top() + d - c.y(), rect.right() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[3]); angle = atan2(rect.top() - c.y(), rect.right() - d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[5]); angle = atan2(rect.top() - c.y(), rect.left() + d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[5]); angle = atan2(rect.top() + d - c.y(), rect.left() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[7]); angle = atan2(rect.bottom() - d - c.y(), rect.left() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[7]); angle = atan2(rect.bottom() - c.y(), rect.left() + d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[1]); angle = atan2(rect.bottom() - c.y(), rect.right() - d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[1]); angle = atan2(rect.bottom() - d - c.y(), rect.right() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[3]); gradient.setColorAt(1.0, color[3]); } #endif return gradient; } /* * skulpture_header.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QHeaderView> /*-----------------------------------------------------------------------*/ void paintHeaderEmptyArea(QPainter *painter, const QStyleOption *option) { if (option->state & QStyle::State_Enabled) { painter->fillRect(option->rect, option->palette.color(QPalette::Window).light(107)); } else { painter->fillRect(option->rect, option->palette.color(QPalette::Window).dark(104)); } if (option->state & QStyle::State_Horizontal) { paintThinFrame(painter, option->rect.adjusted(0, -2, 32000, -1), option->palette, -20, 60); // painter->fillRect(option->rect.adjusted(0, option->rect.height() - 1, 0, 0), QColor(255, 255, 255, 160)); } else { paintThinFrame(painter, option->rect.adjusted(-2, 0, -1, 32000), option->palette, -20, 60); // painter->fillRect(option->rect.adjusted(option->rect.width() - 1, 0, 0, 0), QColor(255, 255, 255, 160)); } } void paintHeaderSection(QPainter *painter, const QStyleOptionHeader *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); if (!(option->state & (QStyle::State_Raised | QStyle::State_Sunken))) { painter->fillRect(option->rect, option->palette.color(QPalette::Window).dark(104)); paintRecessedFrame(painter, option->rect.adjusted(-9, -9, 3, 3), option->palette, RF_Small); painter->fillRect(QRect(option->rect.right(), option->rect.bottom(), 1, 1), option->palette.color(QPalette::Window)); } else { bool enabled = true; if (!(option->state & QStyle::State_Enabled)) { enabled = false; if (widget && widget->inherits("Q3Header")) { enabled = widget->isEnabled(); } } if (enabled) { bool hover = false; const QHeaderView *view = qobject_cast<const QHeaderView *>(widget); if (view && (view->isClickable() || view->isMovable())) { hover = option->state & QStyle::State_MouseOver; } // painter->fillRect(option->rect, option->palette.color(QPalette::Window).light(107)); painter->fillRect(option->rect, option->palette.color(QPalette::Base).dark(hover ? 104 : (option->state & QStyle::State_On ? 120 : 106))); } else { painter->fillRect(option->rect, option->palette.color(QPalette::Window).dark(104)); } if (true || !(option->state & QStyle::State_On)) { if (option->orientation == Qt::Horizontal) { paintThinFrame(painter, option->rect.adjusted(0, -2, 0, -1), option->palette, -20, 60); } else { if (option->direction == Qt::LeftToRight) { paintThinFrame(painter, option->rect.adjusted(-2, 0, -1, 0), option->palette, -20, 60); } else { paintThinFrame(painter, option->rect.adjusted(1, 0, 2, 0), option->palette, -20, 60); } } } #if 0 if (option->orientation == Qt::Horizontal) { painter->fillRect(option->rect.adjusted(0, option->rect.height() - 1, 0, 0), QColor(255, 255, 255, 160)); } else { painter->fillRect(option->rect.adjusted(option->rect.width() - 1, 0, 0, 0), QColor(255, 255, 255, 160)); } #endif } } void paintHeaderLabel(QPainter *painter, const QStyleOptionHeader *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { painter->save(); if (widget) { painter->setFont(widget->font()); } // if (true || !painter->font().bold()) { // painter->setOpacity(painter->opacity() * 0.7); // } // QFont font(painter->font()); // font.setPointSizeF(font.pointSizeF() / 1.19); // font.setBold(true); // painter->setFont(font); ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_HeaderLabel, option, painter, widget); painter->restore(); } void paintHeaderSortIndicator(QPainter *painter, const QStyleOptionHeader *option) { int h = option->fontMetrics.height() / 2 + 2; int w = option->fontMetrics.height() / 4 + 2; QPainterPath path; h /= 2; w /= 2; if (option->sortIndicator == QStyleOptionHeader::SortDown) { h = -h; } path.moveTo(-w, h); path.lineTo(w, h); path.lineTo(0, -h); path.lineTo(-w, h); qreal opacity = painter->opacity(); painter->save(); painter->setRenderHint(QPainter::Antialiasing, true); painter->translate(option->rect.center()); painter->translate(0.5, 1.5); painter->setPen(Qt::NoPen); painter->setBrush(option->palette.color(QPalette::Text)); painter->setOpacity(0.6 * opacity); painter->drawPath(path); painter->restore(); } /* * skulpture_icons.cpp * */ #include "skulpture_p.h" #include <QtCore/QSettings> #include <QtGui/QStyleOption> #include <QtGui/QDockWidget> #include <QtGui/QFrame> #include <QtGui/QPainter> #include <cstdlib> #include <cstdio> /*-----------------------------------------------------------------------*/ #if 0 // not yet static QStringList xdg_data_dirs() { QString dirs = QString::fromLocal8Bit(getenv("XDG_DATA_DIRS")); if (dirs.isEmpty()) { dirs = QString::fromUtf8("/usr/local/share:/usr/share:/opt/kde3/share"); } return dirs.split(QChar(':', 0)); } static QStringList icon_themes() { return QString::fromUtf8( "default.kde" "\n" "hicolor" "\n" "oxygen" "\n" "crystalsvg" ).split(QChar('\n', 0)); } #define OXYGEN "/media/hdb1/svn/kde/kdelibs/pics/oxygen" struct IconSetting { enum Size { ToolIconSize = -1 }; const char * const label; int id; const char * const icon; int size; }; static const struct IconSetting iconSettings[] = { { "MessageBox/InformationIcon", QStyle::SP_MessageBoxInformation, "dialog-information", 32 }, { "MessageBox/WarningIcon", QStyle::SP_MessageBoxWarning, "dialog-warning", 32 }, { "MessageBox/ErrorIcon", QStyle::SP_MessageBoxWarning, "dialog-error", 32 }, { "MessageBox/QuestionIcon", QStyle::SP_MessageBoxWarning, "KEduca", 32 }, { 0, -1, 0, 0 }, }; #endif QPixmap SkulptureStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *option, const QWidget *widget) const { #if 0 switch (standardPixmap) { case SP_MessageBoxInformation: return QPixmap(OXYGEN "/32x32/actions/dialog-information.png"); case SP_MessageBoxWarning: return QPixmap(OXYGEN "/32x32/actions/dialog-warning.png"); case SP_MessageBoxCritical: return QPixmap(OXYGEN "/32x32/actions/dialog-error.png"); case SP_MessageBoxQuestion: return QPixmap(OXYGEN "/32x32/apps/KEduca.png"); case SP_DesktopIcon: return QPixmap(OXYGEN "/16x16/actions/about-kde.png"); case SP_TrashIcon: return QPixmap(OXYGEN "/16x16/actions/edit-trash.png"); case SP_ComputerIcon: return QPixmap(OXYGEN "/16x16/devices/system.png"); case SP_DriveFDIcon: return QPixmap(OXYGEN "/16x16/devices/3floppy-unmount.png"); case SP_DriveHDIcon: return QPixmap(OXYGEN "/16x16/devices/hdd-unmount.png"); case SP_DriveCDIcon: return QPixmap(OXYGEN "/16x16/devices/drive-optical.png"); case SP_DriveDVDIcon: return QPixmap(OXYGEN "/16x16/devices/dvd-unmount.png"); case SP_DriveNetIcon: return QPixmap(OXYGEN "/16x16/devices/nfs-unmount.png"); case SP_DirHomeIcon: return QPixmap(OXYGEN "/16x16/places/folder-home.png"); case SP_DirClosedIcon: case SP_DirIcon: case SP_DirLinkIcon: return QPixmap(OXYGEN "/16x16/places/folder.png"); case SP_DirOpenIcon: return QPixmap(OXYGEN "/16x16/actions/folder-open.png"); case SP_FileLinkIcon: case SP_FileIcon: return QPixmap(OXYGEN "/16x16/mimetypes/document.png"); case SP_FileDialogStart: return QPixmap(OXYGEN "/16x16/actions/go-top.png"); case SP_FileDialogEnd: return QPixmap(OXYGEN "/16x16/actions/go-next.png"); case SP_FileDialogToParent: return QPixmap(OXYGEN "/16x16/actions/go-up.png"); case SP_FileDialogNewFolder: return QPixmap(OXYGEN "/16x16/actions/folder-new.png"); case SP_FileDialogDetailedView: return QPixmap(OXYGEN "/16x16/actions/fileview-detailed.png"); case SP_FileDialogInfoView: return QPixmap(OXYGEN "/16x16/actions/documentinfo-koffice.png"); case SP_FileDialogContentsView: return QPixmap(OXYGEN "/16x16/actions/file-find.png"); case SP_FileDialogListView: return QPixmap(OXYGEN "/16x16/actions/fileview-multicolumn.png"); case SP_FileDialogBack: return QPixmap(OXYGEN "/16x16/actions/go-previous.png"); case SP_DialogOkButton: return QPixmap(OXYGEN "/16x16/actions/dialog-ok.png"); case SP_DialogCancelButton: return QPixmap(OXYGEN "/16x16/actions/dialog-cancel.png"); case SP_DialogHelpButton: return QPixmap(OXYGEN "/16x16/actions/help-contents.png"); case SP_DialogOpenButton: return QPixmap(OXYGEN "/16x16/actions/document-open.png"); case SP_DialogSaveButton: return QPixmap(OXYGEN "/16x16/actions/document-save.png"); case SP_DialogCloseButton: return QPixmap(OXYGEN "/16x16/actions/dialog-close.png"); case SP_DialogApplyButton: return QPixmap(OXYGEN "/16x16/actions/dialog-apply.png"); case SP_DialogResetButton: return QPixmap(OXYGEN "/16x16/actions/edit-undo.png"); case SP_DialogDiscardButton: return QPixmap(OXYGEN "/16x16/actions/emptytrash.png"); case SP_DialogYesButton: return QPixmap(OXYGEN "/16x16/actions/dialog-apply.png"); case SP_DialogNoButton: return QPixmap(OXYGEN "/16x16/actions/dialog-cancel.png"); case SP_ArrowUp: return QPixmap(OXYGEN "/16x16/actions/arrow-up.png"); case SP_ArrowDown: return QPixmap(OXYGEN "/16x16/actions/arrow-down.png"); case SP_ArrowLeft: return QPixmap(OXYGEN "/16x16/actions/arrow-left.png"); case SP_ArrowRight: return QPixmap(OXYGEN "/16x16/actions/arrow-right.png"); case SP_ArrowBack: return QPixmap(OXYGEN "/16x16/actions/go-previous.png"); case SP_ArrowForward: return QPixmap(OXYGEN "/16x16/actions/go-next.png"); } #endif return ParentStyle::standardPixmap(standardPixmap, option, widget); } /*-----------------------------------------------------------------------*/ /** * decorationShape - get shape for window decoration button * * The coordinate system is -1 ... 1 for each dimension, with * (0, 0) being at the center, and positive coordinates pointing * down and to the right. * */ QPainterPath decorationShape(QStyle::StandardPixmap sp) { static const qreal k = 0.3; static const qreal kx1 = 0.8; static const qreal kx2 = 0.55; QPainterPath path; switch (sp) { case QStyle::SP_TitleBarCloseButton: path.moveTo(-1, -1); path.lineTo(0, -k); path.lineTo(1, -1); path.lineTo(k, 0); path.lineTo(1, 1); path.lineTo(0, k); path.lineTo(-1, 1); path.lineTo(-k, 0); path.lineTo(-1, -1); path.closeSubpath(); break; case QStyle::SP_TitleBarNormalButton: case QStyle::SP_TitleBarMaxButton: path.moveTo(0, -1); path.lineTo(1, 0); path.lineTo(0, 1); path.lineTo(-1, 0); path.lineTo(0, -1); path.moveTo(0, -kx2); path.lineTo(-kx1, 0); path.lineTo(0, kx2); path.lineTo(kx1, 0); path.lineTo(0, -kx2); path.closeSubpath(); break; case QStyle::SP_TitleBarShadeButton: path.moveTo(-1, -0.4); path.lineTo(0, -0.6); path.lineTo(1, -0.4); path.lineTo(0, -1); path.lineTo(-1, -0.4); path.closeSubpath(); break; case QStyle::SP_TitleBarUnshadeButton: path.moveTo(-1, -1); path.lineTo(0, -0.8); path.lineTo(1, -1); path.lineTo(0, -0.4); path.lineTo(-1, -1); path.closeSubpath(); break; case QStyle::SP_TitleBarMinButton: path.moveTo(-1, 0.4); path.lineTo(0, 0.6); path.lineTo(1, 0.4); path.lineTo(0, 1); path.lineTo(-1, 0.4); path.closeSubpath(); break; case QStyle::SP_TitleBarContextHelpButton: path.moveTo(0.0305, 0.513); path.lineTo(-0.0539, 0.513); path.lineTo(0.0117, 0.227); path.lineTo(0.22, -0.0859); path.lineTo(0.38, -0.323); path.lineTo(0.417, -0.491); path.lineTo(0.279, -0.767); path.lineTo(-0.0609, -0.87); path.lineTo(-0.342, -0.814); path.lineTo(-0.445, -0.692); path.lineTo(-0.383, -0.568); path.lineTo(-0.321, -0.456); path.lineTo(-0.368, -0.373); path.lineTo(-0.483, -0.339); path.lineTo(-0.64, -0.396); path.lineTo(-0.71, -0.555); path.lineTo(-0.512, -0.827); path.lineTo(0.0281, -0.947); path.lineTo(0.649, -0.783); path.lineTo(0.797, -0.516); path.lineTo(0.73, -0.31); path.lineTo(0.476, -0.0625); path.lineTo(0.111, 0.255); path.lineTo(0.0305, 0.513); path.moveTo(0.00234, 0.681); path.lineTo(0.165, 0.726); path.lineTo(0.232, 0.834); path.lineTo(0.164, 0.943); path.lineTo(0.00234, 0.988); path.lineTo(-0.158, 0.943); path.lineTo(-0.225, 0.834); path.lineTo(-0.158, 0.726); path.lineTo(0.00234, 0.681); path.closeSubpath(); break; case QStyle::SP_CustomBase + 1: path.moveTo(0, -1); path.lineTo(0.2, -0.2); path.lineTo(1, 0); path.lineTo(0.2, 0.2); path.lineTo(0, 1); path.lineTo(-0.2, 0.2); path.lineTo(-1, 0); path.lineTo(-0.2, -0.2); path.lineTo(0, -1); path.closeSubpath(); break; case QStyle::SP_CustomBase + 2: path.moveTo(0, -0.2); path.lineTo(1, 0); path.lineTo(0, 0.2); path.lineTo(-1, 0); path.lineTo(0, -0.2); path.closeSubpath(); break; case QStyle::SP_CustomBase + 4: path.moveTo(0, -0.2); path.lineTo(1, 0); path.lineTo(0, 0.2); path.lineTo(-1, 0); path.lineTo(0, -0.2); path.closeSubpath(); path.moveTo(-1, -0.4); path.lineTo(0, -0.6); path.lineTo(1, -0.4); path.lineTo(0, -1); path.lineTo(-1, -0.4); path.closeSubpath(); break; case QStyle::SP_CustomBase + 5: path.moveTo(0, -0.2); path.lineTo(1, 0); path.lineTo(0, 0.2); path.lineTo(-1, 0); path.lineTo(0, -0.2); path.closeSubpath(); path.moveTo(-1, 0.4); path.lineTo(0, 0.6); path.lineTo(1, 0.4); path.lineTo(0, 1); path.lineTo(-1, 0.4); path.closeSubpath(); break; case QStyle::SP_CustomBase + 6: path.moveTo(0, -0.2); path.lineTo(1, 0); path.lineTo(0, 0.2); path.lineTo(-1, 0); path.lineTo(0, -0.2); path.closeSubpath(); path.moveTo(-1, -1); path.lineTo(0, -0.8); path.lineTo(1, -1); path.lineTo(0, -0.4); path.lineTo(-1, -1); path.closeSubpath(); break; case QStyle::SP_CustomBase + 7: path.moveTo(0, -0.2); path.lineTo(1, 0); path.lineTo(0, 0.2); path.lineTo(-1, 0); path.lineTo(0, -0.2); path.closeSubpath(); path.moveTo(-1, 1); path.lineTo(0, 0.8); path.lineTo(1, 1); path.lineTo(0, 0.4); path.lineTo(-1, 1); path.closeSubpath(); break; case QStyle::SP_ToolBarHorizontalExtensionButton: path.moveTo(-1, -1); path.lineTo(0, 0); path.lineTo(-1, 1); path.lineTo(-0.5, 0); path.lineTo(-1, -1); path.closeSubpath(); path.moveTo(0, -1); path.lineTo(1, 0); path.lineTo(0, 1); path.lineTo(0.5, 0); path.lineTo(0, -1); path.closeSubpath(); break; case QStyle::SP_ToolBarVerticalExtensionButton: path.moveTo(-1, -1); path.lineTo(0, -0.5); path.lineTo(1, -1); path.lineTo(0, 0); path.lineTo(-1, -1); path.closeSubpath(); path.moveTo(-1, 0); path.lineTo(0, 0.5); path.lineTo(1, 0); path.lineTo(0, 1); path.lineTo(-1, 0); path.closeSubpath(); break; default: break; } return path; } QIcon SkulptureStyle::standardIconImplementation(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const { #if 0 QIcon icon; switch (standardIcon) { default: icon.addPixmap(standardPixmap(standardIcon, option, widget)); break; } return icon; #else if (standardIcon > QStyle::SP_CustomBase || (standardIcon >= QStyle::SP_TitleBarMinButton && standardIcon <= QStyle::SP_TitleBarContextHelpButton) || (standardIcon == QStyle::SP_ToolBarHorizontalExtensionButton) || (standardIcon == QStyle::SP_ToolBarVerticalExtensionButton) ) { bool dock = qobject_cast<const QDockWidget *>(widget) != 0; bool ext = (standardIcon == QStyle::SP_ToolBarHorizontalExtensionButton) || (standardIcon == QStyle::SP_ToolBarVerticalExtensionButton); if (dock && standardIcon == QStyle::SP_TitleBarNormalButton) { standardIcon = QStyle::SP_TitleBarMaxButton; } QPainterPath path = decorationShape(standardIcon); const int size = ext ? 8 : (dock ? 14 : 10); const qreal s = size / 2.0; QPixmap pixmap(size, size); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.setRenderHint(QPainter::Antialiasing, true); painter.translate(s, s); if (dock) { painter.scale(s - 2, s - 2); } else { painter.scale(s, s); } painter.setPen(Qt::NoPen); if (option) { painter.setBrush(option->palette.color(QPalette::Text)); } else { painter.setBrush(Qt::black); } painter.drawPath(path); return QIcon(pixmap); } return ParentStyle::standardIconImplementation(standardIcon, option, widget); #endif } QPixmap SkulptureStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const { return ParentStyle::generatedIconPixmap(iconMode, pixmap, option); } QRect SkulptureStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap & pixmap) const { return ParentStyle::itemPixmapRect(rectangle, alignment, pixmap); } void SkulptureStyle::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const { ParentStyle::drawItemPixmap(painter, rectangle, alignment, pixmap); } /* * skulpture_mdi.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QMdiSubWindow> #include <QtCore/QSettings> #include <cmath> /*-----------------------------------------------------------------------*/ void paintFrameWindow(QPainter *painter, const QStyleOptionFrame *option) { // painter->fillRect(option->rect, option->palette.color(QPalette::Window)); #if 0 paintThinFrame(painter, option->rect.adjusted(0, 0, 0, 0), option->palette, -60, 160); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); #else paintThinFrame(painter, option->rect.adjusted(0, 0, 0, 0), option->palette, -90, 355); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -40, 100); #endif // paintThinFrame(painter, option->rect.adjusted(4, 7 + option->fontMetrics.height(), -4, -4), option->palette, 60, -20); #if 0 painter->setPen(Qt::red); painter->setBrush(Qt::NoBrush); painter->drawRect(option->rect.adjusted(0, 0, -1, -1)); #endif } static void getTitleBarPalette(QPalette &palette) { QSettings settings(QLatin1String("Trolltech")); settings.beginGroup(QLatin1String("Qt")); if (settings.contains(QLatin1String("KWinPalette/activeBackground"))) { palette.setColor(QPalette::Window, QColor(settings.value(QLatin1String("KWinPalette/inactiveBackground")).toString())); palette.setColor(QPalette::WindowText, QColor(settings.value(QLatin1String("KWinPalette/inactiveForeground")).toString())); palette.setColor(QPalette::Highlight, QColor(settings.value(QLatin1String("KWinPalette/activeBackground")).toString())); palette.setColor(QPalette::HighlightedText, QColor(settings.value(QLatin1String("KWinPalette/activeForeground")).toString())); } else { palette.setColor(QPalette::Window, QColor(0, 0, 0, 20)); palette.setColor(QPalette::WindowText, QColor(0, 0, 0, 255)); QColor barColor = palette.color(QPalette::Highlight); barColor.setHsvF(barColor.hueF(), barColor.saturationF() * 0.9, 0.25); palette.setColor(QPalette::Highlight, barColor); palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255, 240)); } } void paintTitleBar(QPainter *painter, const QStyleOptionTitleBar *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { QColor barColor; QColor textColor; painter->save(); qreal opacity = painter->opacity(); QPalette palette = option->palette; if (widget && widget->inherits("QMdiSubWindow")) { if (widget->objectName() != QString::fromAscii("SkulpturePreviewWindow")) { getTitleBarPalette(palette); } } if (option->state & QStyle::State_Active) { barColor = palette.color(QPalette::Highlight); textColor = palette.color(QPalette::HighlightedText); } else { barColor = palette.color(QPalette::Window); textColor = palette.color(QPalette::WindowText); } QLinearGradient barGradient(option->rect.topLeft() + QPoint(-1, -1), option->rect.bottomLeft() + QPoint(-1, -2)); // barGradient.setColorAt(0.0, option->palette.color(QPalette::Window)); barGradient.setColorAt(0.0, barColor.dark(105)); // barGradient.setColorAt(0.3, barColor); // barGradient.setColorAt(0.7, barColor); barGradient.setColorAt(1.0, barColor.light(120)); // barGradient.setColorAt(1.0, option->palette.color(QPalette::Window)); // painter->fillRect(option->rect.adjusted(-1, -1, 1, -2), barGradient); // painter->fillRect(option->rect.adjusted(-1, -1, 1, -2), barColor); #if 1 { QRect r = option->rect.adjusted(-4, -7, 4, 0); QRect lr = r.adjusted(6, 2, -6/* - 55*/, -1); // QRect lr = r.adjusted(6, 2, -70, -1); if (true || option->state & QStyle::State_Active) { painter->fillRect(lr, barColor); } QStyleOptionTitleBar buttons = *option; // buttons.subControls &= ~QStyle::SC_TitleBarLabel; buttons.subControls = QStyle::SC_TitleBarSysMenu; buttons.rect.adjust(3, -2, -4, -1); painter->setOpacity(option->state & QStyle::State_Active ? opacity : 0.7 * opacity); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_TitleBar, &buttons, painter, widget); buttons = *option; #if 0 buttons.subControls &= ~(QStyle::SC_TitleBarLabel | QStyle::SC_TitleBarSysMenu); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_TitleBar, &buttons, painter, widget); #else QStyleOption opt = *option; QIcon icon; for (int i = 1; i <= 7; ++i) { QStyle::SubControl sc = (QStyle::SubControl) (1 << i); if (option->subControls & sc & ~(QStyle::SC_TitleBarContextHelpButton)) { QRect rect = style->subControlRect(QStyle::CC_TitleBar, option, sc, widget); if (option->activeSubControls & sc) { if (sc == QStyle::SC_TitleBarCloseButton) { painter->fillRect(rect, QColor(255, 0, 0, 120)); } else { painter->fillRect(rect, QColor(255, 255, 255, 70)); } } opt.palette.setColor(QPalette::Text, Qt::black); icon = style->standardIcon((QStyle::StandardPixmap)(QStyle::SP_TitleBarMenuButton + i), &opt, widget); painter->setOpacity(0.1 * opacity); icon.paint(painter, rect.adjusted(1, 1, 1, 1)); opt.palette.setColor(QPalette::Text, textColor); icon = style->standardIcon((QStyle::StandardPixmap)(QStyle::SP_TitleBarMenuButton + i), &opt, widget); painter->setOpacity(option->state & QStyle::State_Active ? opacity : 0.7 * opacity); icon.paint(painter, rect); } } #endif painter->setOpacity(opacity); #if 0 QRect buttonRect = option->rect.adjusted(300, 1, -90, -6); paintThinFrame(painter, buttonRect, option->palette, -180, 40); paintThinFrame(painter, buttonRect.adjusted(-1, -1, 1, 1), option->palette, 40, -180); #endif { QLinearGradient labelGradient(lr.topLeft(), lr.bottomLeft()); #if 0 labelGradient.setColorAt(0.0, QColor(0, 0, 0, 50)); labelGradient.setColorAt(0.5, QColor(0, 0, 0, 0)); labelGradient.setColorAt(0.55, QColor(0, 0, 0, 20)); labelGradient.setColorAt(1.0, QColor(0, 0, 0, 0)); #elif 1 labelGradient.setColorAt(0.0, QColor(255, 255, 255, 10)); labelGradient.setColorAt(0.5, QColor(255, 255, 255, 40)); labelGradient.setColorAt(0.55, QColor(0, 0, 0, 0)); labelGradient.setColorAt(1.0, QColor(255, 255, 255, 20)); #else labelGradient.setColorAt(0.0, QColor(0, 0, 0, 30)); labelGradient.setColorAt(1.0, QColor(255, 255, 255, 60)); #endif painter->fillRect(lr, labelGradient); } QLinearGradient barGradient(r.topLeft(), r.bottomLeft()); barGradient.setColorAt(0.0, QColor(255, 255, 255, 200)); barGradient.setColorAt(0.2, QColor(255, 255, 255, 80)); barGradient.setColorAt(0.5, QColor(255, 255, 255, 30)); barGradient.setColorAt(1.0, QColor(255, 255, 255, 0)); painter->fillRect(r, barGradient); #if 0 QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 225, 70)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->save(); painter->translate(r.center()); painter->scale(r.width() / 2.0 / r.height(), 1); painter->translate(-r.center()); painter->fillRect(r.adjusted(1, 1, -1, -1), dialogGradient2); painter->restore(); #endif paintThinFrame(painter, lr, option->palette, -30, 90); paintThinFrame(painter, lr.adjusted(-1, -1, 1, 1), option->palette, 90, -30); } #endif #if 0 // paintThinFrame(painter, option->rect.adjusted(0, 0, 0, -1), option->palette, -30, 80); paintThinFrame(painter, option->rect.adjusted(-1, -1, 1, 0), option->palette, 80, -30); painter->fillRect(option->rect.adjusted(0, 0, 0, -1), barColor); // FIXME: adjust rect for new shadow // paintRecessedFrameShadow(painter, option->rect.adjusted(-1, -1, 1, 0), RF_Large); { QRect labelRect = option->rect.adjusted(20, 0, -250, 0); painter->fillRect(labelRect, option->palette.color(QPalette::Window)); paintThinFrame(painter, labelRect.adjusted(0, 0, 0, 1), option->palette, -30, 80); } #endif if (option->subControls & QStyle::SC_TitleBarLabel) { QRect labelRect; if (widget && widget->inherits("QMdiSubWindow")) { QFont font = painter->font(); font.setBold(true); labelRect = option->rect.adjusted(option->fontMetrics.height() + 10, -1, -2, -3); // font.setPointSizeF(10); painter->setFont(font); } else { labelRect = style->subControlRect(QStyle::CC_TitleBar, option, QStyle::SC_TitleBarLabel, widget); } painter->setOpacity(opacity * 0.1); painter->setPen(Qt::black); painter->drawText(labelRect.adjusted(1, 1, 1, 1), Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, option->text); painter->setOpacity(option->state & QStyle::State_Active ? opacity : 0.7 * opacity); painter->setPen(textColor); painter->drawText(labelRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, option->text); } /* if (!option->icon.isNull()) { labelRect.setWidth(16); labelRect.setHeight(16); painter->drawPixmap(labelRect.adjusted(0, -1, 0, -1), option->icon.pixmap(QSize(16, 16))); } */ painter->restore(); } int getWindowFrameMask(QStyleHintReturnMask *mask, const QStyleOptionTitleBar *option, const QWidget *widget) { Q_UNUSED(widget); mask->region = option->rect; // TODO get total dimensions of workspace and don't use masks on corners /*if (option->rect.topLeft() != QPoint(0, 0))*/ { // mask->region -= QRect(option->rect.topLeft(), QSize(1, 1)); } // mask->region -= QRect(option->rect.topRight(), QSize(1, 1)); // mask->region -= QRect(option->rect.bottomLeft(), QSize(1, 1)); // mask->region -= QRect(option->rect.bottomRight(), QSize(1, 1)); // try new style // mask->region -= QRect(option->rect.topLeft(), QSize(6, 1)); // mask->region -= QRect(option->rect.topRight() - QPoint(5, 0), QSize(6, 1)); return 1; } /* * skulpture_menu.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QMenu> #include <QtGui/QShortcut> #include <cstdio> /*-----------------------------------------------------------------------*/ void paintFrameMenu(QPainter *painter, const QStyleOptionFrame *option) { paintThinFrame(painter, option->rect, option->palette, -60, 160); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); } void paintPanelMenuBar(QPainter *painter, const QStyleOptionFrame *option) { Q_UNUSED(painter); Q_UNUSED(option); // paintThinFrame(painter, option->rect, option->palette, -20, 60); // painter->fillRect(option->rect.adjusted(1, 1, -1, -1), option->palette.color(QPalette::Window)); } void paintMenuBarEmptyArea(QPainter *painter, const QStyleOption *option) { Q_UNUSED(painter); Q_UNUSED(option); // painter->fillRect(option->rect, option->palette.color(QPalette::Window)); } /*-----------------------------------------------------------------------*/ #if 0 QSize sizeFromContentsMenuBarItem(const QStyleOptionMenuItem *option, const QSize &contentsSize) { } #endif extern void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole); void paintMenuBarItem(QPainter *painter, const QStyleOptionMenuItem *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { #if 0 if (option->state & QStyle::State_Selected) { painter->fillRect(option->rect, option->palette.color(QPalette::Highlight)); paintThinFrame(painter, option->rect, option->palette, -10, 20); } #else QStyleOptionButton button; button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; button.rect.adjust(-1, -1, 1, 1); // button.rect.adjust(0, -1, 0, -1); if (option->state & QStyle::State_Selected || option->state & QStyle::State_MouseOver) { button.state |= QStyle::State_MouseOver; paintCommandButtonPanel(painter, &button, QPalette::Button); } #endif int alignment = Qt::AlignCenter | Qt::TextShowMnemonic; if (!style->styleHint(QStyle::SH_UnderlineShortcut, option, widget)) { alignment |= Qt::TextHideMnemonic; } #if 0 painter->save(); painter->setPen(option->palette.color(option->state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text)); style->drawItemText(painter, option->rect, alignment, option->palette, option->state & QStyle::State_Enabled, option->text, QPalette::NoRole); painter->restore(); #else QRect r = option->rect; // int x = option->state & QStyle::State_Sunken ? style->pixelMetric(QStyle::PM_ButtonShiftHorizontal, option, widget) : 0; // int y = option->state & QStyle::State_Sunken ? style->pixelMetric(QStyle::PM_ButtonShiftVertical, option, widget) : 0; // r.adjust(x, y, x, y); // r.adjust(0, -1, 0, -1); // FIXME support icon style->drawItemText(painter, r, alignment, option->palette, option->state & QStyle::State_Enabled, option->text, QPalette::ButtonText); #endif // ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_MenuBarItem, option, painter, widget); } /*-----------------------------------------------------------------------*/ /* * this menu code work arounds some limitations of Qt menus. * new features are: * * - text column and shortcut column can overlap * - shortcut column can be hidden * - shortcut column can have a different font * - shortcut column can have actual keyboard glyphs * - shortcut keys can have frames * - the + connector for keys can be hidden * * keyboard glyphs are used for: Shift, Arrows, Return * german keyboards also have: "Bild <arrow up>", "Bild <arrow down>" * keyboards in other locales may have other glyphs, so * keep it configurable. * * * We must entirely replace Qt's layout algorithm. * */ /*-----------------------------------------------------------------------*/ /** * sizeFromContentsMenu * * following information is passed in option: * * */ QSize sizeFromContentsMenu(const QStyleOption *option, const QSize &contentsSize, const QWidget *widget, const QStyle */*style*/) { Q_UNUSED(option); Q_UNUSED(widget); return contentsSize; } /*-----------------------------------------------------------------------*/ /** * sizeFromContentsMenuItem * * following information is passed in option: * * */ QSize sizeFromContentsMenuItem(const QStyleOptionMenuItem *option, const QSize &contentsSize) { if (option->menuItemType == QStyleOptionMenuItem::Separator) { return QSize(4, 4); } // always make room for icon column int iconWidth = 16 + 4; if (option->maxIconWidth > iconWidth) { iconWidth = option->maxIconWidth; } QFont menu_font; int w = contentsSize.width(), h = contentsSize.height(); w += iconWidth + 4 + 22; h += 4; return QSize(w, h); } /*-----------------------------------------------------------------------*/ void paintMenuItem(QPainter *painter, const QStyleOptionMenuItem *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { const bool buttonmode = true; if (qobject_cast<const QMenu *>(widget)) { painter->fillRect(option->rect, option->palette.color(QPalette::Active, buttonmode ? QPalette::Window : QPalette::Base)); QRect rect = option->rect; if (option->direction == Qt::RightToLeft) { rect.translate(rect.width() - 25, 0); } rect.setWidth(24/*option->maxIconWidth*/); #if 0 painter->fillRect(rect.adjusted(0, 0, -1, 0), option->palette.color(QPalette::Window).darker(107)); #else QLinearGradient gradient(rect.topLeft(), rect.topRight()); gradient.setColorAt(0.0, QColor(0, 0, 0, 10)); gradient.setColorAt(1.0, QColor(0, 0, 0, 10)); if (buttonmode) { painter->fillRect(rect.adjusted(0, 0, -1, 0), gradient); } else { painter->fillRect(rect.adjusted(0, 0, -1, 0), option->palette.color(QPalette::Active, QPalette::Window)); } #endif } // painter->fillRect(option->rect.adjusted(option->maxIconWidth, 0, -1, 0), option->palette.color(QPalette::Window).lighter(102)); if (option->state & QStyle::State_Selected) { if (buttonmode) { QStyleOptionButton button; button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; button.state |= QStyle::State_MouseOver; button.rect.adjust(-1, -1, 0, 1); if (option->state & QStyle::State_Selected || option->state & QStyle::State_MouseOver) { paintCommandButtonPanel(painter, &button, QPalette::Button); } } else { QColor color = option->palette.color(QPalette::Active, QPalette::Highlight); if (!(option->state & QStyle::State_Enabled)) { // color = blend_color(color, option->palette.color(QPalette::Window), 0.9); color.setAlpha(40); } else { color.setAlpha(180); } painter->fillRect(option->rect.adjusted(0, 0, -1, 0), color); if (option->state & QStyle::State_Enabled) { paintThinFrame(painter, option->rect.adjusted(0, 0, -1, 0), option->palette, -20, -20); } } } else { /* */ } if (option->menuItemType == QStyleOptionMenuItem::Separator) { if (qobject_cast<const QMenu *>(widget)) { // QRect rect = option->rect; // rect.setWidth(22/*option->maxIconWidth*/); // painter->fillRect(rect.adjusted(0, 0, -1, 0), option->palette.color(QPalette::Window).darker(110)); if (option->direction == Qt::LeftToRight) { paintThinFrame(painter, option->rect.adjusted(23, 1, 3, -1), option->palette, 60, -20); } else { paintThinFrame(painter, option->rect.adjusted(0, 1, -25, -1), option->palette, 60, -20); } // painter->fillRect(option->rect, Qt::red); } else { QRect rect = option->rect; rect.setHeight(2); rect.translate(0, (option->rect.height() - 2) >> 1); paintThinFrame(painter, rect, option->palette, 60, -20); } return; } // painter->save(); // QFont font = painter->font(); // font.setPointSizeF(font.pointSizeF() / (1.19)); // font.setBold(true); // painter->setFont(font); QStyleOptionMenuItem menuOption = *option; if (buttonmode) { menuOption.palette.setColor(QPalette::HighlightedText, option->palette.color(QPalette::ButtonText)); menuOption.palette.setColor(QPalette::ButtonText, option->palette.color(QPalette::WindowText)); } else { menuOption.palette.setColor(QPalette::ButtonText, option->palette.color(QPalette::Text)); } menuOption.palette.setColor(QPalette::Highlight, QColor(0, 0, 0, 0)); menuOption.palette.setColor(QPalette::Button, QColor(0, 0, 0, 0)); menuOption.palette.setColor(QPalette::Window, QColor(0, 0, 0, 0)); menuOption.palette.setColor(QPalette::Shadow, QColor(0, 0, 0, 0)); menuOption.palette.setColor(QPalette::Light, QColor(0, 0, 0, 0)); menuOption.palette.setColor(QPalette::Midlight, QColor(0, 0, 0, 0)); menuOption.palette.setColor(QPalette::Dark, QColor(0, 0, 0, 0)); #if 0 int pos; if ((pos = option->text.indexOf(QChar('\t', 0))) > 0) { QString shortcut = option->text.mid(pos + 1); // shortcut = shortcut.replace(QString::fromUtf8("Strg+"), QChar('^', 0)); shortcut = shortcut.left(shortcut.length() - 1).replace(QChar('+', 0), QChar(' ', 0)) + shortcut.right(1); #if 0 shortcut = shortcut.replace(QShortcut::tr("Left"), QChar(0x2190)); shortcut = shortcut.replace(QShortcut::tr("Up"), QChar(0x2191)); shortcut = shortcut.replace(QShortcut::tr("Right"), QChar(0x2192)); shortcut = shortcut.replace(QShortcut::tr("Down"), QChar(0x2193)); shortcut = shortcut.replace(QShortcut::tr("Shift"), QChar(0x21e7)); // shortcut = shortcut.replace(QShortcut::tr("Ctrl"), QChar(0x2318)); // german keyboard shows Arrows for PgUp / PgDown shortcut = shortcut.replace(QString::fromUtf8(" aufw\xc3\xa4rts"), QChar(0x2191)); shortcut = shortcut.replace(QString::fromUtf8(" abw\xc3\xa4rts"), QChar(0x2193)); #endif menuOption.text = option->text.left(pos) + QChar('\t', 0) + shortcut; } #endif if (menuOption.maxIconWidth < 16 + 4) { menuOption.maxIconWidth = 16 + 3; if (option->direction == Qt::LeftToRight) { menuOption.rect.adjust(2, 0, 2, 0); } else { menuOption.rect.adjust(-4, 0, -4, 0); } } else { if (option->direction == Qt::LeftToRight) { menuOption.rect.adjust(1, 0, 1, 0); } else { menuOption.rect.adjust(-3, 0, -3, 0); } } if (menuOption.checked) { menuOption.icon = QIcon(); } // ### hack to reduce size of arrow QFont font; font.setPointSizeF(font.pointSizeF() / 1.19); menuOption.fontMetrics = QFontMetrics(font); ((QWindowsStyle *) style)->QWindowsStyle::drawControl(QStyle::CE_MenuItem, &menuOption, painter, widget); // painter->restore(); /* arrows: left up right down: 0x2190-0x2193 * shift?: 0x21E7 * command: 0x2318 * return: 0x23CE, 0x21B5 * backspace: 0x232B * (scrollbar arrows: left up right down: 0x25C4,B2,BA,BC) * dot: 0x25CF * other arrow right: 0x2799 */ } /* * skulpture_metrics.cpp * */ #include "skulpture_p.h" #include <QtCore/QSettings> #include <QtGui/QApplication> #include <cstdio> /*-----------------------------------------------------------------------*/ #if 0 // not yet struct MetricSetting { const char * const label; int id; int value; unsigned char flags; unsigned char min; short max; }; static const struct MetricSetting metricSettings[] = { { "MDI/TitleBar/Height", QStyle::PM_TitleBarHeight, 25 }, { "Button/Margin", QStyle::PM_ButtonMargin, 8 }, { 0, -1, 0 } }; #endif static inline int fontSize(const QStyleOption *option, const QWidget *widget) { if (option) { return option->fontMetrics.height();// - 1; } else if (widget) { return widget->fontMetrics().height();// - 1; } return 16; } static inline int appFontSize(const QStyleOption *option, const QWidget *widget) { Q_UNUSED(option); Q_UNUSED(widget); return QApplication::fontMetrics().height(); } static inline int iconSize(int fontSize) { int iconSize; if (fontSize < 22) { iconSize = 16; } else if (fontSize < 32) { iconSize = 22; } else { iconSize = 32; } return iconSize; } static inline Qt::LayoutDirection direction(const QStyleOption *option, const QWidget *widget) { if (option) { return option->direction; } else if (widget) { return widget->layoutDirection(); } return Qt::LeftToRight; } /*-----------------------------------------------------------------------*/ int SkulptureStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const { // return ParentStyle::pixelMetric(metric, option, widget); switch (metric) { /* Window */ case PM_TitleBarHeight: { if (option) { #if 0 printf("fontleading: %d\n", option->fontMetrics.leading()); printf("fontlinespacing: %d\n", option->fontMetrics.lineSpacing()); printf("fontheight: %d\n", option->fontMetrics.height()); printf("xheight: %d\n", option->fontMetrics.xHeight()); printf("x-bheight: %d\n", option->fontMetrics.boundingRect(QChar('x', 0)).height()); printf("X-bheight: %d\n", option->fontMetrics.boundingRect(QChar('X', 0)).height()); printf("g-bheight: %d\n", option->fontMetrics.boundingRect(QChar('g', 0)).height()); printf("§-bheight: %d\n", option->fontMetrics.boundingRect(QString::fromUtf8("§").at(0)).height()); printf("Ä-bheight: %d\n", option->fontMetrics.boundingRect(QString::fromUtf8("Ä").at(0)).height()); #endif return 3 + fontSize(option, widget); } else { return 21; } } break; case PM_MDIFrameWidth: return 3; /* MenuBar & Menu */ case PM_MenuBarVMargin: return 1; case PM_MenuBarHMargin: return 1; case PM_MenuBarPanelWidth: return 0; case PM_MenuBarItemSpacing: return 0; // ### anything other than 0 f*cks up Qt's menu positioning code ... case PM_MenuVMargin: return 0; case PM_MenuHMargin: return 0; case PM_MenuPanelWidth: return 1; /* ToolBar & ToolButton */ case PM_ToolBarSeparatorExtent: return 6; case PM_ToolBarHandleExtent: return 9; //fontSize(option, widget) / 2; case PM_ToolBarFrameWidth: return 1; case PM_ToolBarItemMargin: return 0; case PM_ToolBarIconSize: return iconSize(fontSize(option, widget)); case PM_ToolBarItemSpacing: return 0; case PM_ToolBarExtensionExtent: return 12; /* DockWidget */ case PM_DockWidgetSeparatorExtent: return (fontSize(option, widget) / 4) * 2 - 1; case PM_DockWidgetHandleExtent: return 160; // TODO case PM_DockWidgetFrameWidth: return 2; case PM_DockWidgetTitleMargin: return 2; case PM_DockWidgetTitleBarButtonMargin: return 0; /* ItemView */ case PM_HeaderGripMargin: return 4; case PM_HeaderMargin: return 3; case PM_HeaderMarkSize: return 5; /* Controls */ /* Button */ case PM_ButtonDefaultIndicator: return 0; case PM_ButtonShiftHorizontal: return direction(option, widget) == Qt::LeftToRight ? 1 : -1; case PM_ButtonShiftVertical: return 1; case PM_ButtonMargin: return fontSize(option, widget) / 2 - 4; case PM_MenuButtonIndicator: return fontSize(option, widget); case PM_ExclusiveIndicatorWidth: case PM_ExclusiveIndicatorHeight: case PM_IndicatorWidth: case PM_IndicatorHeight: return fontSize(option, widget);// * 6 / 5; case PM_CheckBoxLabelSpacing: return fontSize(option, widget) / 3; case PM_RadioButtonLabelSpacing: return fontSize(option, widget) / 3; /* Slider */ case PM_SliderSpaceAvailable: return ((QCommonStyle *) this)->QCommonStyle::pixelMetric(metric, option, widget); case PM_SliderThickness: case PM_SliderControlThickness: return (fontSize(option, widget) / 4) * 2 + 9 + 4; case PM_SliderLength: return 2 * fontSize(option, widget) - 4; case PM_SliderTickmarkOffset: { if (const QStyleOptionSlider *sliderOption = qstyleoption_cast<const QStyleOptionSlider *>(option)) { if (sliderOption->tickPosition == QSlider::TicksAbove) { return 5; } else if (sliderOption->tickPosition == QSlider::TicksBothSides) { return 5; } else if (sliderOption->tickPosition == QSlider::TicksBelow) { return 0; } } return 0; } /* ScrollBar */ case PM_ScrollBarExtent: return (appFontSize(option, widget) / 4) * 2 + 9; case PM_ScrollBarSliderMin: return 2 * appFontSize(option, widget) + 4; /* ComboBox */ case PM_ComboBoxFrameWidth: return 2; /* SpinBox & QDial */ case PM_SpinBoxFrameWidth: return 2; /* Misc */ /* GroupBox */ /* TabBar & TabWidget */ case PM_TabBarIconSize: return iconSize(fontSize(option, widget)); case PM_TabBarTabHSpace: return 0; case PM_TabBarTabVSpace: return 0; case PM_TabBarBaseOverlap: return 2; case PM_TabBarScrollButtonWidth: return 2 * (fontSize(option, widget) / 2) + 1; case PM_TabBar_ScrollButtonOverlap: return 0; case PM_TabBarTabShiftVertical: return 0; case PM_TabBarTabShiftHorizontal: return 0; // case PM_TabBarBaseHeight: return 22; // ??? case PM_TabBarTabOverlap: return 4; /* ProgressBar */ /* Other */ case PM_SmallIconSize: return iconSize(fontSize(option, widget)); case PM_SplitterWidth: return (fontSize(option, widget) / 4) * 2 + 1; /* Layout */ case PM_LayoutHorizontalSpacing: case PM_LayoutVerticalSpacing: #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) return -1; #else return fontSize(option, widget) / 3; #endif case PM_DefaultChildMargin: return fontSize(option, widget) / 2; case PM_DefaultTopLevelMargin: return 1 + fontSize(option, widget) * 5 / 8; case PM_LayoutLeftMargin: case PM_LayoutTopMargin: case PM_LayoutRightMargin: case PM_LayoutBottomMargin: return pixelMetric((option && (option->state & State_Window)) || (widget && widget->isWindow()) ? PM_DefaultTopLevelMargin : PM_DefaultChildMargin, option, widget); case PM_DefaultFrameWidth: return 2; case PM_TextCursorWidth: return qMax(1, (fontSize(option, widget) + 8) / 12); default: return ParentStyle::pixelMetric(metric, option, widget); } } /*-----------------------------------------------------------------------*/ #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) int SkulptureStyle::layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const { #if 0 return ParentStyle::layoutSpacingImplementation(control1, control2, orientation, option, widget); #else if (orientation == Qt::Vertical && (control1 == QSizePolicy::CheckBox || control1 ==QSizePolicy::RadioButton || control2 ==QSizePolicy::CheckBox || control2 ==QSizePolicy::RadioButton)) { return fontSize(option, widget) / 3; } int space = ParentStyle::layoutSpacingImplementation(control1, control2, orientation, option, widget); if (space <= 0) return space; return int(0.5 + fontSize(option, widget) / 16.0 * ((space > 6 ? space - 2 : space) & -2)); #endif } #endif /* * skulpture_misc.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QTableView> /*-----------------------------------------------------------------------*/ #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void paintPanelItemViewItem(QPainter *painter, const QStyleOptionViewItemV4 *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); QColor color = option->palette.color(QPalette::Highlight); bool mouse = option->state & QStyle::State_MouseOver && option->state & QStyle::State_Enabled; if (option->version >= 2 && option->features & QStyleOptionViewItemV2::Alternate) { painter->fillRect(option->rect, option->palette.color(QPalette::AlternateBase)); } else { painter->fillRect(option->rect, option->backgroundBrush); } if (option->state & QStyle::State_Selected) { if (mouse) { color = color.lighter(110); } } else if (mouse) { color.setAlpha(40); } else { return; } painter->save(); // ### work around KDE widgets that turn on antialiasing painter->setRenderHint(QPainter::Antialiasing, false); painter->setBrush(Qt::NoBrush); // QColor shine(255, 255, 255, option->rect.height() > 20 ? 25 : 10); QColor shadow(0, 0, 0, option->rect.height() > 20 ? 50 : 20); painter->setPen(shadow); // painter->setPen(QPen(color.darker(option->rect.height() > 20 ? 150 : 120), 1)); painter->fillRect(option->rect, color); const QTableView *table = qobject_cast<const QTableView *>(widget); #if 0 if (!widget) { if (widget->objectName() == QLatin1String("qt_scrollarea_viewport")) { if (widget->parentWidget()) { table = qobject_cast<const QTableView *>(widget->parentWidget()); } } } #endif if (table && table->showGrid()) { painter->restore(); return; } if (option->version >= 4) { #if 0 // ### Qt doesn't initialize option->widget, so do not use it if (qobject_cast<const QTableView *>(option->widget)) { painter->restore(); return; } #endif switch (option->viewItemPosition) { case QStyleOptionViewItemV4::Beginning: painter->drawLine(option->rect.topLeft() + QPoint(0, 1), option->rect.bottomLeft() - QPoint(0, 1)); painter->drawLine(option->rect.topLeft(), option->rect.topRight()); painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight()); break; case QStyleOptionViewItemV4::End: painter->drawLine(option->rect.topRight() + QPoint(0, 1), option->rect.bottomRight() - QPoint(0, 1)); painter->drawLine(option->rect.topLeft(), option->rect.topRight()); painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight()); break; case QStyleOptionViewItemV4::Middle: painter->drawLine(option->rect.topLeft(), option->rect.topRight()); painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight()); break; case QStyleOptionViewItemV4::Invalid: case QStyleOptionViewItemV4::OnlyOne: painter->drawRect(option->rect.adjusted(0, 0, -1, -1)); break; } } else { painter->drawRect(option->rect.adjusted(0, 0, -1, -1)); } painter->restore(); } #endif /*-----------------------------------------------------------------------*/ extern void paintCachedIndicatorBranchChildren(QPainter *painter, const QStyleOption *option); void paintIndicatorBranch(QPainter *painter, const QStyleOption *option) { QPoint center = option->rect.center() + (option->direction == Qt::LeftToRight ? QPoint(2, 0) : QPoint(-1, 0)); if (option->state & (QStyle::State_Item | QStyle::State_Sibling)) { QColor lineColor = option->palette.color(QPalette::Text); lineColor.setAlpha(50); painter->fillRect(QRect(center.x(), option->rect.y(), 1, center.y() - option->rect.y()), lineColor); if (option->state & QStyle::State_Sibling) { painter->fillRect(QRect(center.x(), center.y(), 1, option->rect.bottom() - center.y() + 1), lineColor); } if (option->state & QStyle::State_Item) { if (option->direction == Qt::RightToLeft) { painter->fillRect(QRect(option->rect.left(), center.y(), center.x() - option->rect.left(), 1), lineColor); } else { painter->fillRect(QRect(center.x() + 1, center.y(), option->rect.right() - center.x(), 1), lineColor); } if (!(option->state & QStyle::State_Sibling)) { lineColor.setAlpha(25); painter->fillRect(QRect(center.x(), center.y(), 1, 1), lineColor); } } } if (option->state & QStyle::State_Children && !(option->state & QStyle::State_Open)) { QStyleOption opt = *option; static const int d = 5; opt.rect = QRect(center.x() - d / 2, center.y() - d / 2, d, d); paintCachedIndicatorBranchChildren(painter, &opt); } } /*-----------------------------------------------------------------------*/ void paintSizeGrip(QPainter *painter, const QStyleOptionSizeGrip *option) { QRect r; switch (option->corner) { case Qt::TopLeftCorner: r = option->rect.adjusted(0, 0, 2, 2); break; case Qt::TopRightCorner: r = option->rect.adjusted(-2, 0, 0, 2); break; case Qt::BottomLeftCorner: r = option->rect.adjusted(0, -2, 2, 0); break; case Qt::BottomRightCorner: r = option->rect.adjusted(-2, -2, 0, 0); break; } paintThinFrame(painter, r, option->palette, 60, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60); switch (option->corner) { case Qt::TopRightCorner: // for Kickoff 4.1 painter->save(); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), 60), 1.0)); painter->drawLine(r.topLeft(), r.bottomRight()); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), -20), 1.0)); painter->drawLine(r.topLeft() + QPoint(1, -1), r.bottomRight() + QPoint(1, -1)); painter->restore(); break; case Qt::BottomRightCorner: painter->save(); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), -20), 1.0)); painter->drawLine(r.topRight(), r.bottomLeft()); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), 60), 1.0)); painter->drawLine(r.topRight() + QPoint(1, 1), r.bottomLeft() + QPoint(1, 1)); painter->restore(); break; case Qt::TopLeftCorner: // TODO break; case Qt::BottomLeftCorner: // TODO break; } } /*-----------------------------------------------------------------------*/ extern void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole); void paintToolBoxTabShape(QPainter *painter, const QStyleOptionToolBoxV2 *option) { QRect r = option->rect; if (option->state & QStyle::State_Selected) { QColor color = option->palette.color(QPalette::Window); paintThinFrame(painter, r, option->palette, 40, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 80); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); gradient.setColorAt(0.0, shaded_color(color, 50)); gradient.setColorAt(0.2, shaded_color(color, 30)); gradient.setColorAt(0.5, shaded_color(color, 0)); gradient.setColorAt(0.51, shaded_color(color, -10)); gradient.setColorAt(1.0, shaded_color(color, -20)); painter->fillRect(r.adjusted(1, 1, -1, -1), gradient); } else if (option->state & (QStyle::State_Sunken | QStyle::State_MouseOver)) { QStyleOptionButton button; button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; // button.rect.adjust(-1, -1, 1, 1); paintCommandButtonPanel(painter, &button, QPalette::Window); } else if (option->version >= 2 && option->selectedPosition == QStyleOptionToolBoxV2::PreviousIsSelected) { r.setHeight(2); paintThinFrame(painter, r, option->palette, 60, -20); } else { // r.setHeight(2); // painter->fillRect(r, option->palette.color(QPalette::Window)); } QStyleOption indicator; indicator = *option; indicator.rect.setSize(QSize(11, 11)); indicator.rect.translate(0, (option->rect.height() - 11) >> 1); indicator.state = QStyle::State_Children; if (option->state & QStyle::State_Selected) { indicator.state |= QStyle::State_Open; } paintIndicatorBranch(painter, &indicator); } /*-----------------------------------------------------------------------*/ extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole); void paintSplitter(QPainter *painter, const QStyleOption *option) { if (option->state & QStyle::State_Enabled && option->state & QStyle::State_MouseOver) { painter->fillRect(option->rect, QColor(255, 255, 255, 60)); } int d = 5; QRect rect(QRect(option->rect).center() - QPoint(d / 2, d / 2), QSize(d, d)); QStyleOption iOption = *option; iOption.rect = rect; iOption.palette.setCurrentColorGroup(QPalette::Disabled); // iOption.state &= ~QStyle::State_Enabled; iOption.palette.setColor(QPalette::Button, iOption.palette.color(QPalette::Window)); paintCachedGrip(painter, &iOption, QPalette::Window); } /*-----------------------------------------------------------------------*/ void paintRubberBand(QPainter *painter, const QStyleOptionRubberBand *option) { painter->save(); if (true || option->shape == QRubberBand::Rectangle) { qreal opacity = painter->opacity(); painter->setOpacity(opacity * 0.2); painter->fillRect(option->rect, option->palette.color(QPalette::Highlight)); painter->setOpacity(opacity * 0.8); painter->setPen(QPen(option->palette.color(QPalette::Highlight) /*, 1.0, Qt::DotLine*/)); painter->drawRect(option->rect.adjusted(0, 0, -1, -1)); painter->setOpacity(opacity); } else { // painter->fillRect(option->rect, Qt::green); } painter->restore(); } int getRubberBandMask(QStyleHintReturnMask *mask, const QStyleOption *option, const QWidget *widget) { static const int rubber_width = 4; int r = rubber_width; Q_UNUSED(widget); mask->region = option->rect; if (option->rect.width() > 2 * r && option->rect.height() > 2 * r) { mask->region -= option->rect.adjusted(r, r, -r, -r); } return 1; } /* * skulpture_progressbar.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QProgressBar> #include <QtCore/QTime> /*-----------------------------------------------------------------------*/ void paintProgressBarGroove(QPainter *painter, const QStyleOptionProgressBar *option) { // paintThinFrame(painter, option->rect, option->palette, 60, -20); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), option->palette.color(QPalette::Base)); // painter->fillRect(option->rect.adjusted(1, 1, -1, -1), QColor(230, 230, 230)); } void paintProgressBarLabel(QPainter *painter, const QStyleOptionProgressBarV2 *option) { #if 0 QRectF rect = option->rect.adjusted(6, 0, -(option->rect.width() - 40), 0); #endif QFont font(painter->font()); font.setBold(true); painter->save(); painter->setFont(font); qreal opacity = painter->opacity(); #if 1 painter->setOpacity(0.3 * opacity); painter->setPen(Qt::black); if (option->version >= 2) { if (option->orientation == Qt::Vertical) { painter->translate(option->rect.center()); painter->rotate(option->bottomToTop ? -90 : 90); painter->translate(- option->rect.center()); } } painter->drawText(option->rect.adjusted(1, 1, 1, 1), Qt::AlignCenter, option->text); painter->drawText(option->rect.adjusted(-1, 1, -1, 1), Qt::AlignCenter, option->text); painter->drawText(option->rect.adjusted(1, -1, 1, -1), Qt::AlignCenter, option->text); painter->drawText(option->rect.adjusted(-1, -1, -1, -1), Qt::AlignCenter, option->text); #endif painter->setOpacity(0.9 * opacity); // painter->setPen(option->palette.color(QPalette::HighlightedText)); painter->setPen(Qt::white); painter->drawText(option->rect, Qt::AlignCenter, option->text); //painter->setOpacity(opacity); painter->restore(); } void paintProgressBarContents(QPainter *painter, const QStyleOptionProgressBar *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle */*style*/) { const QProgressBar *bar = qobject_cast<const QProgressBar *>(widget); bool norange = (option->minimum == 0 && option->maximum == 0); // norange = 1; int percentage = 0; int m = QTime(0, 0).msecsTo(QTime::currentTime()) / 30; if (option->minimum < option->maximum) { // decide if we should animate // FIXME: this test should be done in timerEvent, to stop/restart timer. if (option->progress == option->maximum || option->text == QString()) { m = 0; } else if (bar) { if (bar->format() != QString::fromAscii("%p%")) { m = 0; } } percentage = 100 * (option->progress - option->minimum) / (option->maximum - option->minimum); } QRectF rect = option->rect.adjusted(2, 2, -2, -2); qreal r = (qMax(rect.width() - 2, rect.height() - 2) - 8.0) * 100.0 / 100.0 + 8.0; QPointF center = rect.center(); QRadialGradient r_grad(center, r / 2.0); QLinearGradient l_grad(rect.topLeft(), rect.topRight()); QGradient *gradient = &l_grad; QColor color = option->palette.color(QPalette::Highlight).dark(150); if (widget && widget->parentWidget() && widget->parentWidget()->parentWidget() && widget->parentWidget()->parentWidget()->inherits("KNewPasswordDialog")) { color.setHsv(percentage * 85 / 100, 200, 240 - percentage); // if (percentage > 75) m = 0; } else if (widget && widget->inherits("StatusBarSpaceInfo")) { int p = percentage; if (p < 75) p = 100; else p = (100 - p) * 4; color.setHsv(p * 85 / 100, 200, 240 - p); } else { gradient = &r_grad; } if (norange) { percentage = 100; } if (percentage == 0 && option->progress == option->minimum) { int v = m & 15; if (m & 16) v = 15 - v; color.setAlpha(100 + v * 5); } gradient->setColorAt(0.0, color); gradient->setColorAt(0.04, color); int i; for (i = 0; i < percentage; ++i) { int v; if (norange) { v = i + m; } else { v = i - m; } int k = v & 7; if (v & 8) k = 7 - k; if (norange) { color.setAlpha(2 * (100 - i) + 7 * k); } else { color.setAlpha(100 + (100 - i * 0) + 7 * k); } gradient->setColorAt(0.1 + i * 0.009, color); } gradient->setColorAt(0.1 + i * 0.009, QColor(0, 0, 0, 0)); gradient->setColorAt(1.0, QColor(0, 0, 0, 0)); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), *gradient); QLinearGradient glassyGradient(option->rect.topLeft(), option->rect.bottomLeft()); #if 0 // really glassy glassyGradient.setColorAt(0.0, QColor(255, 255, 255, 210)); glassyGradient.setColorAt(0.45, QColor(0, 0, 0, 2)); glassyGradient.setColorAt(0.455, QColor(0, 0, 0, 11)); glassyGradient.setColorAt(1.0, QColor(255, 255, 255, 60)); #else // like Skandale 0.0.2 glassyGradient.setColorAt(0.0, QColor(255, 255, 255, 60)); glassyGradient.setColorAt(0.45, QColor(0, 0, 0, 2)); glassyGradient.setColorAt(0.455, QColor(0, 0, 0, 11)); glassyGradient.setColorAt(1.0, QColor(255, 255, 255, 60)); #endif painter->fillRect(option->rect.adjusted(2, 2, -2, -2), glassyGradient); paintRecessedFrame(painter, option->rect, option->palette, RF_Small); } /* * skulpture_scrollbar.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QAbstractScrollArea> #include <QtGui/QApplication> #include <climits> /*-----------------------------------------------------------------------*/ extern void paintScrollArrow(QPainter *painter, const QStyleOption *option, Qt::ArrowType arrow, bool spin); void paintScrollArea(QPainter *painter, const QStyleOption *option) { QColor color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled || option->type != QStyleOption::SO_Slider) { #if 0 if (option->state & QStyle::State_Sunken) { color = color.lighter(107); } else { color = color.darker(107); } #elif 0 color = option->palette.color(QPalette::Base); #elif 1 if (option->state & QStyle::State_Sunken) { color = color.darker(107); } else { // ### if (false && option->state & QStyle::State_MouseOver) { color = color.lighter(110); } else { color = color.lighter(107); } } #endif } painter->fillRect(option->rect, color); // painter->fillRect(option->rect, Qt::red); } void paintScrollAreaCorner(QPainter *painter, const QStyleOption *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle */*style*/) { QStyleOption opt; opt = *option; opt.type = QStyleOption::SO_Default; if (widget && widget->inherits("QAbstractScrollArea")) { opt.type = QStyleOption::SO_Slider; opt.state &= ~QStyle::State_Enabled; if (widget->isEnabled()) { opt.state |= QStyle::State_Enabled; } } paintScrollArea(painter, &opt); } extern void paintSliderGroove(QPainter *painter, QRect &rect, const QStyleOptionSlider *option); void paintScrollBarPage(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/) { paintScrollArea(painter, option); QRect rect = option->rect.adjusted(1, 1, -1, -1); paintSliderGroove(painter, rect, option); } void paintScrollBarAddLine(QPainter *painter, const QStyleOptionSlider *option) { paintScrollArea(painter, option); // paintThinFrame(painter, option->rect, option->palette, -40, 120); if (option->minimum != option->maximum) { QStyleOptionSlider opt = *option; opt.fontMetrics = QApplication::fontMetrics(); paintScrollArrow(painter, &opt, option->orientation == Qt::Horizontal ? (option->direction == Qt::RightToLeft ? Qt::LeftArrow : Qt::RightArrow) : Qt::DownArrow, false); } } void paintScrollBarSubLine(QPainter *painter, const QStyleOptionSlider *option) { paintScrollArea(painter, option); // paintThinFrame(painter, option->rect, option->palette, -40, 120); if (option->minimum != option->maximum) { QStyleOptionSlider opt = *option; opt.fontMetrics = QApplication::fontMetrics(); paintScrollArrow(painter, &opt, option->orientation == Qt::Horizontal ? (option->direction == Qt::RightToLeft ? Qt::RightArrow : Qt::LeftArrow) : Qt::UpArrow, false); } } /*-----------------------------------------------------------------------*/ extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole = QPalette::Window); extern void paintSliderHandle(QPainter *painter, const QRect &rect, const QStyleOptionSlider *option); void paintScrollBarSlider(QPainter *painter, const QStyleOptionSlider *option) { if (option->minimum == option->maximum) { paintScrollArea(painter, option); return; } #if 0 // ### Qt behaviour differs between Slider and ScrollBar QStyleOptionSlider aOption = *option; if (!(option->activeSubControls & QStyle::SC_SliderHandle)) { aOption.state &= ~QStyle::State_MouseOver; } paintSliderHandle(painter, option->rect, &aOption); #else paintSliderHandle(painter, option->rect, option); #endif #if 0 // slider grip QStyleOptionSlider grip = *option; int d = (qMin(option->rect.width(), option->rect.height()) / 6) * 2 + 1; grip.rect = QRect(option->rect.center() - QPoint(d / 2, d / 2), QSize(d, d)); paintCachedGrip(painter, &grip); #if 0 d += (d + 1) / 2; if (option->orientation == Qt::Horizontal) { grip.rect.adjust(d, 0, d, 0); paintCachedGrip(painter, &grip); grip.rect.adjust(- 2 * d, 0, - 2 * d, 0); paintCachedGrip(painter, &grip); } else { grip.rect.adjust(0, d, 0, d); paintCachedGrip(painter, &grip); grip.rect.adjust(0, - 2 * d, 0, - 2 * d); paintCachedGrip(painter, &grip); } #endif #endif } /*-----------------------------------------------------------------------*/ void paintScrollBar(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ScrollBar, option, painter, widget); QFrame *frame = 0; if (widget && widget->parentWidget()) { QWidget *container = widget->parentWidget(); if (container->inherits("Q3ListView")) { if (option->orientation == Qt::Vertical) { frame = qobject_cast<QFrame *>(container); } } else if (container->inherits("Q3Table")) { frame = qobject_cast<QFrame *>(container); } else if (container->parentWidget()) { frame = qobject_cast<QAbstractScrollArea *>(container->parentWidget()); } } if (frame && frame->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken)) { QRect rect = option->rect; if (option->orientation == Qt::Vertical) { if (option->direction == Qt::LeftToRight) { rect.adjust(-3, 0, 1, 0); } else { rect.adjust(-1, 0, 2, 0); } // ### temporary hack to detect corner widget if (widget->height() == frame->height() - 4) { rect.adjust(0, -1, 0, 1); } else { rect.adjust(0, -1, 0, 4); } } else { rect.adjust(0, -3, 0, 1); // ### temporary hack to detect corner widget if (widget->width() == frame->width() - 4) { rect.adjust(-1, 0, 1, 0); } else { if (option->direction == Qt::LeftToRight) { rect.adjust(-1, 0, 4, 0); } else { rect.adjust(-4, 0, 1, 0); } } } // painter->fillRect(option->rect.adjusted(0, 0, 100, 100), Qt::red); // return; #if 1 paintRecessedFrameShadow(painter, rect.adjusted(1, 1, -1, -1), RF_Small); #else paintRecessedFrameShadow(painter, rect.adjusted(-1, 1, -1, -1), RF_Large); #endif } } /*-----------------------------------------------------------------------*/ QRect subControlRectScrollBar(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, void */*data*/, int /*id*/, const QStyle *style) { int maxsize; if (option->orientation == Qt::Horizontal) { maxsize = option->rect.width(); } else { maxsize = option->rect.height(); } int slidersize; if (option->maximum != option->minimum) { uint range = option->maximum - option->minimum; slidersize = (qint64(option->pageStep) * maxsize) / (range + option->pageStep); int slidermin = style->pixelMetric(QStyle::PM_ScrollBarSliderMin, option, widget); if (slidermin > maxsize / 2) { slidermin = maxsize / 2; } if (slidersize < slidermin || range > INT_MAX / 2) { slidersize = slidermin; } if (slidersize > maxsize) { slidersize = maxsize; } } else { slidersize = maxsize; } int sliderpos = style->sliderPositionFromValue(option->minimum, option->maximum, option->sliderPosition, maxsize - slidersize, option->upsideDown); int buttonsize = style->pixelMetric(QStyle::PM_ScrollBarExtent, option, widget); buttonsize = qMin(maxsize / 2, buttonsize); int pos, size; switch (subControl) { case QStyle::SC_ScrollBarGroove: pos = 0; size = maxsize; break; case QStyle::SC_ScrollBarSlider: pos = sliderpos; size = slidersize; break; case QStyle::SC_ScrollBarSubPage: pos = buttonsize; size = sliderpos - buttonsize; break; case QStyle::SC_ScrollBarAddPage: pos = sliderpos + slidersize; size = maxsize - sliderpos - slidersize - buttonsize; break; case QStyle::SC_ScrollBarSubLine: pos = 0; size = buttonsize; //size = qMin(buttonsize, sliderpos); break; case QStyle::SC_ScrollBarAddLine: size = buttonsize; //size = qMin(buttonsize, maxsize - sliderpos - slidersize); pos = maxsize - size; break; default: pos = 0; size = 0; break; } QRect rect; if (option->orientation == Qt::Horizontal) { rect = QRect(pos, 0, size, option->rect.height()); } else { rect = QRect(0, pos, option->rect.width(), size); } return style->visualRect(option->direction, option->rect, rect); } /*-----------------------------------------------------------------------*/ /* * Arrow positions: * * <*> <*<> *<> <>*<> <>* * */ /* * skulpture_shadows.cpp * */ #include "skulpture_p.h" //#include <QtGui/QFrame> #include <QtGui/QAbstractScrollArea> #include <QtGui/QMdiArea> //#include <q3scrollview.h> #include <QtGui/QApplication> #include <QtGui/QMouseEvent> #include <QtCore/QEvent> #include <QtGui/QPainter> #include <cstdio> /*-----------------------------------------------------------------------*/ /** * FrameShadow - overlay a shadow inside a frame * * This class is used to give the impression of sunken * frames that cast shadows over the contents inside. * * To create the shadow, call installFrameShadow() * on the sunken QFrame that you want the shadow * to be added to. * * Side-effects: * * Adds transparent widgets to the frame, which may * affect performance. * */ FrameShadow::FrameShadow(QWidget *parent) : QWidget(parent) { init(); } FrameShadow::FrameShadow(ShadowArea area, QWidget *parent) : QWidget(parent) { init(); area_ = area; } FrameShadow::~FrameShadow() { /* */ } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::installFrameShadow(QWidget *widget) { // printf("adding shadow to %s\n", widget->metaObject()->className()); widget->installEventFilter(this); removeFrameShadow(widget); for (int i = 0; i < 4; ++i) { FrameShadow *shadow = new FrameShadow(FrameShadow::ShadowArea(i)); shadow->hide(); shadow->setParent(widget); shadow->updateGeometry(); shadow->show(); } } void SkulptureStyle::Private::removeFrameShadow(QWidget *widget) { const QList<QObject *> shadows = widget->children(); foreach (QObject *child, shadows) { FrameShadow *shadow; if ((shadow = qobject_cast<FrameShadow *>(child))) { shadow->hide(); shadow->setParent(0); shadow->deleteLater(); } } } void SkulptureStyle::Private::updateFrameShadow(QWidget *widget) { const QList<QObject *> shadows = widget->children(); foreach (QObject *child, shadows) { FrameShadow *shadow; if ((shadow = qobject_cast<FrameShadow *>(child))) { if (shadow->isVisible()) { shadow->updateGeometry(); } } } } /*-----------------------------------------------------------------------*/ #define SHADOW_SIZE_TOP 4 #define SHADOW_SIZE_BOTTOM 2 #define SHADOW_SIZE_LEFT 4 #define SHADOW_SIZE_RIGHT 4 void FrameShadow::updateGeometry() { QWidget *widget = parentWidget(); QRect cr = widget->contentsRect(); // printf("cr-top: %d in class %s\n", cr.top(), widget->metaObject()->className()); switch (shadowArea()) { case FrameShadow::Top: cr.setHeight(SHADOW_SIZE_TOP); break; case FrameShadow::Left: cr.setWidth(SHADOW_SIZE_LEFT); cr.adjust(0, SHADOW_SIZE_TOP, 0, -SHADOW_SIZE_BOTTOM); break; case FrameShadow::Bottom: cr.setTop(cr.bottom() - SHADOW_SIZE_BOTTOM + 1); break; case FrameShadow::Right: cr.setLeft(cr.right() - SHADOW_SIZE_RIGHT + 1); cr.adjust(0, SHADOW_SIZE_TOP, 0, -SHADOW_SIZE_BOTTOM); break; } setGeometry(cr); } /*-----------------------------------------------------------------------*/ bool FrameShadow::event(QEvent *e) { if (e->type() == QEvent::Paint) { return QWidget::event(e); } QWidget *viewport = 0; if (parentWidget()) { if (QAbstractScrollArea *widget = qobject_cast<QAbstractScrollArea *>(parentWidget())) { viewport = widget->viewport(); } else if (parentWidget()->inherits("Q3ScrollView")) { // FIXME: get viewport? needs Qt3Support linkage! viewport = 0; } else { viewport = 0; } } if (!viewport) { return false; } #if 1 switch (e->type()) { case QEvent::DragEnter: case QEvent::DragMove: case QEvent::DragLeave: case QEvent::Drop: { setAcceptDrops(viewport->acceptDrops()); QObject *o = viewport; return o->event(e); } break; case QEvent::Enter: setCursor(viewport->cursor()); setAcceptDrops(viewport->acceptDrops()); break; case QEvent::ContextMenu: { QContextMenuEvent *me = reinterpret_cast<QContextMenuEvent *>(e); QContextMenuEvent *ne = new QContextMenuEvent(me->reason(), parentWidget()->mapFromGlobal(me->globalPos()), me->globalPos()); QApplication::sendEvent(viewport, ne); e->accept(); return true; } break; case QEvent::MouseButtonPress: releaseMouse(); case QEvent::MouseMove: case QEvent::MouseButtonRelease: { QMouseEvent *me = reinterpret_cast<QMouseEvent *>(e); QMouseEvent *ne = new QMouseEvent(e->type(), parentWidget()->mapFromGlobal(me->globalPos()), me->globalPos(), me->button(), me->buttons(), me->modifiers()); QApplication::sendEvent(viewport, ne); e->accept(); return true; } break; case QEvent::Paint: return QWidget::event(e); default: break; } e->ignore(); return false; #else return QWidget::event(e); #endif } /*-----------------------------------------------------------------------*/ void FrameShadow::paintEvent(QPaintEvent *) { QPainter painter(this); QWidget *parent = parentWidget(); QRect r = parent->contentsRect(); r.translate(mapFromParent(QPoint(0, 0))); // painter.fillRect(QRect(-100, -100, 1000, 1000), Qt::red); paintRecessedFrameShadow(&painter, r, RF_Large); } /*-----------------------------------------------------------------------*/ void FrameShadow::init() { // setAttribute(Qt::WA_NoSystemBackground, true); // setAttribute(Qt::WA_NoBackground, true); setAttribute(Qt::WA_OpaquePaintEvent, false); setFocusPolicy(Qt::NoFocus); // TODO: check if this is private setAttribute(Qt::WA_TransparentForMouseEvents, true); setContextMenuPolicy(Qt::NoContextMenu); QWidget *viewport; if (parentWidget()) { if (QAbstractScrollArea *widget = qobject_cast<QAbstractScrollArea *>(parentWidget())) { setAcceptDrops(true); viewport = widget->viewport(); } else if (parentWidget()->inherits("Q3ScrollView")) { // FIXME: get viewport? needs Qt3Support linkage! viewport = parentWidget(); } else { viewport = 0; } if (viewport) { setCursor(viewport->cursor()); } } } /*-----------------------------------------------------------------------*/ void paintRecessedFrameShadow(QPainter *painter, const QRect &rect, enum RecessedFrame rf) { if (rf == RF_None) return; #if 1 int c1 = (rf == RF_Small) ? 10 : 10; int c2 = (rf == RF_Small) ? 20 : 36; #else int c1 = 0; int c2 = 0; #endif #if 0 c1 += c1 >> 1; c2 += c2 >> 1; int intensityTop = c2; int intensityLeft = c2; int intensityBottom = c1; int intensityRight = c1; #endif QRect r = rect; while (c1 > 3 || c2 > 3) { QBrush brush1(QColor(0, 0, 0, c1)); QBrush brush2(QColor(0, 0, 0, c2)); painter->fillRect(QRect(rect.left(), r.top(), rect.width(), 1), brush2); painter->fillRect(QRect(r.left(), rect.top(), 1, rect.height()), brush2); painter->fillRect(QRect(rect.left(), r.bottom(), rect.width(), 1), brush1); painter->fillRect(QRect(r.right(), rect.top(), 1, rect.height()), brush1); c1 >>= 1; c2 >>= 1; // c1 = int(c1 * 0.7); c2 = int(c2 * 0.7); r.adjust(1, 1, -1, -1); } } /*-----------------------------------------------------------------------*/ /** * WidgetShadow - add a drop shadow to a widget * * This class renders a shadow below a widget, such * as a QMdiSubWindow. * */ WidgetShadow::WidgetShadow(QWidget *parent) : QWidget(parent) { init(); } /*-----------------------------------------------------------------------*/ void WidgetShadow::init() { setObjectName(QString::fromUtf8("WidgetShadow")); // setAttribute(Qt::WA_NoSystemBackground, true); // setAttribute(Qt::WA_NoBackground, true); setAttribute(Qt::WA_OpaquePaintEvent, false); // setAutoFillBackground(false); setFocusPolicy(Qt::NoFocus); // TODO: check if this is private setAttribute(Qt::WA_TransparentForMouseEvents, true); // setContextMenuPolicy(Qt::NoContextMenu); widget_ = 0; } /*-----------------------------------------------------------------------*/ bool WidgetShadow::event(QEvent *e) { switch (e->type()) { case QEvent::Paint: if (widget_) { QRect r(- 10, - 5, widget_->frameGeometry().width() + 20, widget_->frameGeometry().height() + 15); r.translate(qMin(widget_->x(), 10), qMin(widget_->y(), 5)); QPainter p(this); QRegion region(r); region -= QRect(r.adjusted(10, 5, -10, -10)); p.setClipRegion(region); #if 0 for (int i = 0; i < 10; ++i) { int k = 9 - i; p.fillRect(r.adjusted(k, i, -k, -i), QColor(0, 0, 0, i)); p.fillRect(r.adjusted(i, k, -i, -k), QColor(0, 0, 0, i)); } #else for (int i = 0; i < 10; ++i) { p.fillRect(r, QColor(0, 0, 0, 2 + i)); r.adjust(1, 1, -1, -1); } #endif e->ignore(); return (true); } default: break; } return QWidget::event(e); } void WidgetShadow::updateGeometry() { if (widget_) { if (widget_->isHidden()) { hide(); } else { QWidget *parent = parentWidget(); if (parent && !qobject_cast<QMdiArea *>(parent) && qobject_cast<QMdiArea *>(parent->parentWidget())) { parent = parent->parentWidget(); } if (parent) { QRect geo(widget_->x() - 10, widget_->y() - 5, widget_->frameGeometry().width() + 20, widget_->frameGeometry().height() + 15); setGeometry(geo & parent->rect()); } show(); } } } void WidgetShadow::updateZOrder() { if (widget_) { if (widget_->isHidden()) { hide(); } else { stackUnder(widget_); QWidget *parent = parentWidget(); if (parent && !qobject_cast<QMdiArea *>(parent) && qobject_cast<QMdiArea *>(parent->parentWidget())) { parent = parent->parentWidget(); } if (parent) { QRect geo(widget_->x() - 10, widget_->y() - 5, widget_->frameGeometry().width() + 20, widget_->frameGeometry().height() + 15); setGeometry(geo & parent->rect()); } show(); } } } /* * skulpture_shortcuts.cpp * */ #include "skulpture_p.h" #include <QtGui/QKeyEvent> #include <QtGui/QFocusEvent> #include <QtGui/QMenu> #include <QtGui/QMenuBar> #include <QtGui/QAbstractButton> #include <QtGui/QLabel> #include <QtGui/QDockWidget> #include <QtGui/QToolBox> #include <QtGui/QGroupBox> #include <QtGui/QTabBar> /*-----------------------------------------------------------------------*/ /** * Class to manage the applications keyboard shortcuts * * It acts as an eventfilter for the application, and does the following: * * * the shortcuts are only underlined when the Alt key is pressed, and * the underline is removed once it is released. * * on many widgets the focus frame is not displayed if the focus was * received using the mouse. It is, however, still displayed if * you use the Tab key. * * Any other keyboard shortcut and focus issues should also be handled here. * */ /*-----------------------------------------------------------------------*/ bool ShortcutHandler::underlineShortcut(const QWidget *widget) const { if (widget && widget->isEnabled()) { if (alt_pressed.contains(widget->window())) { return true; } if (qobject_cast<const QMenuBar *>(widget)) { if (widget->hasFocus()) { return true; } QList<QWidget *> children = qFindChildren<QWidget *>(widget); foreach (QWidget *child, children) { if (child->hasFocus()) { return true; } } } if (qobject_cast<const QMenu *>(widget)) { return true; } } return false; } static inline bool hasShortcut(QWidget *widget) { if (qobject_cast<const QAbstractButton *>(widget) // && (qobject_cast<const QAbstractButton *>(widget))->text.contains(QChar('&', 0)) || qobject_cast<const QLabel *>(widget) || qobject_cast<const QDockWidget *>(widget) || qobject_cast<const QToolBox *>(widget) // || qobject_cast<const QMenu *>(widget) || qobject_cast<const QMenuBar *>(widget) || qobject_cast<const QGroupBox *>(widget) // && (qobject_cast<const QGroupBox *>(widget))->isCheckable() || qobject_cast<const QTabBar *>(widget)) { return true; } return false; } static inline void updateShortcuts(QWidget *widget) { QList<QWidget *> children = qFindChildren<QWidget *>(widget); foreach (QWidget *child, children) { if (child->isVisible() && hasShortcut(child)) { child->update(); } } } bool ShortcutHandler::eventFilter(QObject *watched, QEvent *event) { // event filter may be called on the application, abort in this case if (!watched->isWidgetType()) { return QObject::eventFilter(watched, event); } QWidget *widget = reinterpret_cast<QWidget *>(watched); switch (event->type()) { case QEvent::FocusIn: { Qt::FocusReason reason = ((QFocusEvent *) event)->reason(); if (reason != Qt::TabFocusReason && reason != Qt::BacktabFocusReason) { QWidget *window = widget->window(); window->setAttribute(Qt::WA_KeyboardFocusChange, false); } } break; case QEvent::KeyPress: if (((QKeyEvent *) event)->key() == Qt::Key_Alt) { QWidget *window = widget->window(); if (!alt_pressed.contains(window)) { alt_pressed.append(window); window->installEventFilter(this); updateShortcuts(window); } } break; case QEvent::Close: if (widget->isWindow()) { alt_pressed.removeAll(widget); widget->removeEventFilter(this); } break; case QEvent::WindowDeactivate: if (widget->isWindow()) { alt_pressed.removeAll(widget); widget->removeEventFilter(this); updateShortcuts(widget); } break; case QEvent::KeyRelease: if (((QKeyEvent *) event)->key() == Qt::Key_Alt) { QWidget *window = widget->window(); if (alt_pressed.contains(window)) { alt_pressed.removeAll(window); window->removeEventFilter(this); updateShortcuts(window); } } break; default: break; } return QObject::eventFilter(watched, event); } /*-----------------------------------------------------------------------*/ ShortcutHandler::ShortcutHandler(QObject *parent) : QObject(parent) { init(); } ShortcutHandler::~ShortcutHandler() { } /* * skulpture_slider.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractSlider> #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ void paintSliderGroove(QPainter *painter, QRect &rect, const QStyleOptionSlider *option) { if (option->orientation == Qt::Horizontal) { int d = rect.height() / 2; rect.adjust(0, d, 0, -d); } else { int d = rect.width() / 2; rect.adjust(d, 0, -d, 0); } QColor color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled) { color = color.dark(120); painter->fillRect(rect, color); paintThinFrame(painter, rect.adjusted(-1, -1, 1, 1), option->palette, -30, -90); } else { painter->fillRect(rect, color); paintThinFrame(painter, rect.adjusted(-1, -1, 1, 1), option->palette, -20, -60); } } void paintSliderHandle(QPainter *painter, const QRect &rect, const QStyleOptionSlider *option) { // shadow painter->fillRect(rect.adjusted(2, 2, 2, 2), QColor(0, 0, 0, 5)); painter->fillRect(rect.adjusted(1, 1, 1, 1), QColor(0, 0, 0, 8)); // slider color QColor color = option->palette.color(QPalette::Button); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { color = color.light(102); } else if (option->state & QStyle::State_MouseOver) { color = color.light(104); } } else { color = option->palette.color(QPalette::Window); } painter->fillRect(rect, color); #if 1 // slider gradient if ((option->state & QStyle::State_Enabled) && !(option->state & QStyle::State_Sunken)) { QLinearGradient gradient; gradient.setStart(rect.topLeft()); if (option->orientation == Qt::Horizontal) { gradient.setFinalStop(rect.bottomLeft()); } else { gradient.setFinalStop(rect.topRight()); } #if 1 // SkandaleStyle 0.0.2 gradient.setColorAt(0.0, shaded_color(color, 40)); gradient.setColorAt(0.5, shaded_color(color, -5)); gradient.setColorAt(1.0, shaded_color(color, 70)); #else // glassy gradient.setColorAt(0.0, shaded_color(color, 40)); gradient.setColorAt(0.4, shaded_color(color, -5)); gradient.setColorAt(0.405, shaded_color(color, -15)); gradient.setColorAt(1.0, shaded_color(color, 70)); #endif painter->fillRect(rect, gradient); } #endif // slider frame paintThinFrame(painter, rect, option->palette, -70, -20, QPalette::Button); paintThinFrame(painter, rect.adjusted(1, 1, -1, -1), option->palette, -30, 130, QPalette::Button); } /*-----------------------------------------------------------------------*/ void paintSlider(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { // groove if (option->subControls & QStyle::SC_SliderGroove) { // painter->fillRect(option->rect, option->palette.color(QPalette::Window).dark(105)); // paintThinFrame(painter, option->rect, option->palette, 130, -30); #if 0 int handlesize = style->pixelMetric(QStyle::PM_SliderLength, option, widget); int e = handlesize / 2 - 1; #else int e = 1; #endif #if 0 QRect rect = option->rect; // QRect rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget); if (option->orientation == Qt::Horizontal) { rect.adjust(e, 0, -e, 0); } else { rect.adjust(0, e, 0, -e); } paintSliderGroove(painter, rect, option); #else QRect rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget); //QRect rect = option->rect; QRect handle_rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle, widget); QStyleOptionSlider aOption = *option; aOption.palette.setColor(QPalette::Window, aOption.palette.color(QPalette::Highlight)); if (option->orientation == Qt::Horizontal) { handle_rect.adjust(0, 2, 0, -2); rect.adjust(e, 0, -e, 0); rect.setWidth(handle_rect.left() - rect.left() - 1); if (rect.width() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? option : &aOption); } rect.setLeft(handle_rect.right() + 2); rect.setWidth(option->rect.right() - handle_rect.right() - 1 - e); if (rect.width() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? &aOption : option); } } else { handle_rect.adjust(2, 0, -2, 0); rect.adjust(0, e, 0, -e); rect.setHeight(handle_rect.top() - rect.top() - 1); if (rect.height() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? option : &aOption); } rect.setTop(handle_rect.bottom() + 2); rect.setHeight(option->rect.bottom() - handle_rect.bottom() - e); if (rect.height() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? &aOption : option); } } #endif } #if 1 // tickmarks if (option->subControls & QStyle::SC_SliderTickmarks) { qreal opacity = painter->opacity(); QStyleOptionSlider slider = *option; slider.subControls = QStyle::SC_SliderTickmarks; // ### for now, just use common tickmarks painter->setOpacity(opacity * 0.2); if (option->orientation == Qt::Horizontal) { slider.rect.adjust(-1, 0, -1, 0); } else { slider.rect.adjust(0, -1, 0, -1); } ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_Slider, &slider, painter, widget); slider.rect = option->rect; QPalette palette = slider.palette; palette.setColor(QPalette::WindowText, Qt::white); slider.palette = palette; painter->setOpacity(opacity * 0.3); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_Slider, &slider, painter, widget); painter->setOpacity(opacity); } #endif // focus rect if (option->state & QStyle::State_HasFocus) { QStyleOptionFocusRect focus; focus.QStyleOption::operator=(*option); focus.rect = style->subElementRect(QStyle::SE_SliderFocusRect, option, widget); focus.state |= QStyle::State_FocusAtBorder; style->drawPrimitive(QStyle::PE_FrameFocusRect, &focus, painter, widget); } // handle if (option->subControls & QStyle::SC_SliderHandle) { QStyleOptionSlider aOption = *option; if (!(option->activeSubControls & QStyle::SC_SliderHandle)) { aOption.state &= ~QStyle::State_MouseOver; aOption.state &= ~QStyle::State_Sunken; } QRect rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle, widget); if (option->orientation == Qt::Horizontal) { rect.adjust(0, 2, 0, -2); } else { rect.adjust(2, 0, -2, 0); } #if 0 if (option->orientation == Qt::Horizontal) { rect.setTop(option->rect.top()); rect.setHeight(option->rect.height()); // rect.adjust(0, 1, 0, -1); } else { rect.setLeft(option->rect.left()); rect.setWidth(option->rect.width()); // rect.adjust(1, 0, -1, 0); } #endif // rect.adjust(0, 0, -1, -1); paintSliderHandle(painter, rect, &aOption); // rect.adjust(0, 0, 1, 1); // paintThinFrame(painter, rect.adjusted(1, 1, 1, 1), option->palette, -20, 0); #if 0 // grip const int o = 5; const int s = 6; if (option->orientation == Qt::Horizontal) { int d = (rect.width() - 2) / 2; rect.adjust(d, 0, -d, 0); rect.translate(-s, 0); } else { int d = (rect.height() - 2) / 2; rect.adjust(0, d, 0, -d); rect.translate(0, -s); } for (int k = -1; k < 2; ++k) { if (option->orientation == Qt::Horizontal) { painter->fillRect(rect.adjusted(0, o, 0, -o), QColor(0, 0, 0, 30)); painter->fillRect(rect.adjusted(1, o, 1, -o), QColor(255, 255, 255, 80)); rect.translate(s, 0); } else { painter->fillRect(rect.adjusted(o, 0, -o, 0), QColor(0, 0, 0, 30)); painter->fillRect(rect.adjusted(o, 1, -o, 1), QColor(255, 255, 255, 80)); rect.translate(0, s); } } #endif } #if 0 painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget), QColor(0, 0, 0, 70)); if (option->subControls & QStyle::SC_SliderGroove) { painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget), QColor(255, 0, 0, 70)); } if (option->subControls & QStyle::SC_SliderHandle) { painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle, widget), QColor(0, 100, 255, 70)); } if (option->subControls & QStyle::SC_SliderTickmarks) { painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderTickmarks, widget), QColor(0, 255, 0, 170)); } #endif } /*-----------------------------------------------------------------------*/ QRect subControlRectSlider(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, void */*data*/, int /*id*/, const QStyle *style) { QRect rect = ((QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_Slider, option, subControl, widget); switch (subControl) { case QStyle::SC_SliderGroove: case QStyle::SC_SliderTickmarks: case QStyle::SC_SliderHandle: default: break; } return rect; #if 0 /* option->orientation option->tickPosition: QSlider::TicksAbove | QSlider::TicksBelow option->state option->tickInterval */ switch (subControl) { case SC_SliderGrove: case SC_SliderTickmarks: case SC_SliderHandle: } #endif } /* * skulpture_spinbox.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractSpinBox> #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ extern void paintScrollArrow(QPainter *painter, const QStyleOption *option, Qt::ArrowType arrow, bool spin); void paintIndicatorSpinDown(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::DownArrow, true); } void paintIndicatorSpinUp(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::UpArrow, true); } void paintSpinBox(QPainter *painter, const QStyleOptionSpinBox *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { QStyleOption arrowOpt; // arrow background if (option->subControls & (QStyle::SC_SpinBoxUp | QStyle::SC_SpinBoxDown)) { QRect r = style->subControlRect(QStyle::CC_SpinBox, option, QStyle::SC_SpinBoxUp, widget); r |= style->subControlRect(QStyle::CC_SpinBox, option, QStyle::SC_SpinBoxDown, widget); QColor color = option->palette.color(QPalette::Base); if (option->state & QStyle::State_Enabled) { color = option->palette.color(QPalette::Window).lighter(107); } if (option->direction == Qt::LeftToRight) { painter->fillRect(r.adjusted(0, 2, -2, -2), color); } else { painter->fillRect(r.adjusted(2, 2, 0, -2), color); } } // arrows if (true /* || option->state & QStyle::State_MouseOver && option->state & QStyle::State_Enabled*/) { if (option->subControls & QStyle::SC_SpinBoxUp) { arrowOpt.QStyleOption::operator=(*option); arrowOpt.rect = style->subControlRect(QStyle::CC_SpinBox, option, QStyle::SC_SpinBoxUp, widget).adjusted(-1, 2, -2, -1); if (!(option->stepEnabled & QAbstractSpinBox::StepUpEnabled)) { arrowOpt.state &= ~(QStyle::State_Enabled | QStyle::State_MouseOver); arrowOpt.palette.setCurrentColorGroup(QPalette::Disabled); } if (!(option->activeSubControls & QStyle::SC_SpinBoxUp)) { arrowOpt.state &= ~(QStyle::State_Sunken | QStyle::State_On | QStyle::State_MouseOver); } if (option->direction == Qt::LeftToRight) { arrowOpt.rect.adjust(1, 3, -2, 0); } else { arrowOpt.rect.adjust(4, 3, 1, 0); } style->drawPrimitive(option->buttonSymbols == QAbstractSpinBox::PlusMinus ? QStyle::PE_IndicatorSpinPlus : QStyle::PE_IndicatorSpinUp, &arrowOpt, painter, widget); } if (option->subControls & QStyle::SC_SpinBoxDown) { arrowOpt.QStyleOption::operator=(*option); arrowOpt.rect = style->subControlRect(QStyle::CC_SpinBox, option, QStyle::SC_SpinBoxDown, widget).adjusted(-1, 0, -2, -2); if (!(option->stepEnabled & QAbstractSpinBox::StepDownEnabled)) { arrowOpt.state &= ~(QStyle::State_Enabled | QStyle::State_MouseOver); arrowOpt.palette.setCurrentColorGroup(QPalette::Disabled); } if (!(option->activeSubControls & QStyle::SC_SpinBoxDown)) { arrowOpt.state &= ~(QStyle::State_Sunken | QStyle::State_On | QStyle::State_MouseOver); } if (option->direction == Qt::LeftToRight) { arrowOpt.rect.adjust(1, 0, -2, -2); } else { arrowOpt.rect.adjust(4, 0, 1, -2); } style->drawPrimitive(option->buttonSymbols == QAbstractSpinBox::PlusMinus ? QStyle::PE_IndicatorSpinMinus : QStyle::PE_IndicatorSpinDown, &arrowOpt, painter, widget); } } // frame if (option->frame && (option->subControls & QStyle::SC_SpinBoxFrame)) { QStyleOptionFrame frameOpt; frameOpt.QStyleOption::operator=(*option); frameOpt.rect = style->subControlRect(QStyle::CC_SpinBox, option, QStyle::SC_SpinBoxFrame, widget); frameOpt.state |= QStyle::State_Sunken; frameOpt.lineWidth = style->pixelMetric(QStyle::PM_SpinBoxFrameWidth, &frameOpt, widget); frameOpt.midLineWidth = 0; style->drawPrimitive(QStyle::PE_FrameLineEdit, &frameOpt, painter, widget); } } /* * skulpture_tabs.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <cstdio> /*-----------------------------------------------------------------------*/ enum Pos { North, South, West, East }; static inline Pos tabPos(QTabBar::Shape shape) { return Pos(int(shape) & 3); } static inline bool isVertical(QTabBar::Shape shape) { return (int(shape) & 2); } struct Affinity { int x1, y1, x2, y2; }; static inline void tabAffinity(QTabBar::Shape shape, Affinity &affinity, int amount) { affinity.x1 = affinity.y1 = affinity.x2 = affinity.y2 = 0; switch (tabPos(shape)) { case North: affinity.y1 = amount; break; case South: affinity.y2 = -amount; break; case West: affinity.x1 = amount; break; case East: affinity.x2 = -amount; break; } } /*-----------------------------------------------------------------------*/ static void paintTabBase(QPainter *painter, const QRect &rect, const QStyleOption *option, QTabBar::Shape shape) { if (true /*option->state & QStyle::State_Enabled*/) { QLinearGradient tabGradient(rect.topLeft(), isVertical(shape) ? rect.topRight() : rect.bottomLeft()); tabGradient.setColorAt(0.0, option->palette.color(QPalette::Window).darker(118)); tabGradient.setColorAt(1.0, option->palette.color(QPalette::Window).darker(105)); painter->fillRect(rect.adjusted(1, 1, -1, -1), tabGradient); } else { painter->fillRect(rect.adjusted(1, 1, -1, -1), option->palette.color(QPalette::Window).darker(106)); } paintThinFrame(painter, rect.adjusted(1, 1, -1, -1), option->palette, -20, -40); paintRecessedFrameShadow(painter, rect.adjusted(2, 2, -2, -2), RF_Small); } void paintFrameTabBarBase(QPainter *painter, const QStyleOptionTabBarBase *option) { // ### remove clipping painter->save(); QRect r = option->rect; r = r.united(option->tabBarRect); QRegion region(r); region -= option->tabBarRect; painter->setClipRegion(region); paintTabBase(painter, r, option, option->shape); QRect rect = r; #if 0 Affinity affinity; tabAffinity(option->shape, affinity, 1); rect.adjust(affinity.x2, affinity.y2, affinity.x1, affinity.y1); #endif paintThinFrame(painter, rect, option->palette, 60, -20); painter->restore(); } void paintTabWidgetFrame(QPainter *painter, const QStyleOptionTabWidgetFrame *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget) { Q_UNUSED(widget); QRect base = option->rect; int s = (isVertical(option->shape) ? option->tabBarSize.width() : option->tabBarSize.height()); if (s < 2) s = 2; if (isVertical(option->shape)) { base.setWidth(s); } else { base.setHeight(s); } const int overlap = 2; switch (tabPos(option->shape)) { case North: base.translate(0, -(s - overlap)); break; case West: base.translate(-(s - overlap), 0); break; case South: base.translate(0, option->rect.height() - overlap); break; case East: base.translate(option->rect.width() - overlap, 0); break; } if (s != 2) { paintTabBase(painter, base, option, option->shape); } Affinity affinity; tabAffinity(option->shape, affinity, -(s - overlap)); // painter->save(); // painter->setClipRect(base); paintThinFrame(painter, option->rect.adjusted(affinity.x1, affinity.y1, affinity.x2, affinity.y2), option->palette, 60, -20); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -50, 160); #if 0 QRect r = option->rect.adjusted(2, 2, -2, -2); painter->fillRect(r, option->palette.color(QPalette::Window)); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); gradient.setColorAt(0.0, QColor(255, 255, 255, 0)); gradient.setColorAt(1.0, QColor(0, 0, 0, 20)); painter->fillRect(r, gradient); #endif // painter->restore(); } /*-----------------------------------------------------------------------*/ #define TAB_SHIFT 1 void paintTabBarTabShape(QPainter *painter, const QStyleOptionTab *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); bool mouse = (option->state & QStyle::State_MouseOver) && !(option->state & QStyle::State_Selected) && (option->state & QStyle::State_Enabled); QRect c_rect = option->rect; bool konq = false; if (widget && widget->parentWidget()) { if (!qstrcmp(widget->metaObject()->className(), "KTabBar") && !qstrcmp(widget->parentWidget()->metaObject()->className(), "KonqFrameTabs")) { konq = true; } } if (konq || (widget && (!(widget->parentWidget()) || !(widget->parentWidget()->inherits("QTabWidget"))))) { // ### remove clipping painter->save(); painter->setClipRect(option->rect); QRect rect = widget->rect(); if (konq) { rect.adjust(-10, 0, 10, 0); } paintTabBase(painter, rect, option, option->shape); #if 0 Affinity affinity; tabAffinity(option->shape, affinity, 1); rect.adjust(affinity.x2, affinity.y2, affinity.x1, affinity.y1); #endif paintThinFrame(painter, rect, option->palette, 60, -20); painter->restore(); } switch (tabPos(option->shape)) { case North: c_rect.adjust(1, 1, -2, 0); if (option->position != QStyleOptionTab::Beginning && option->position != QStyleOptionTab::OnlyOneTab) { c_rect.adjust(-1, 0, 0, 0); } if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, -1, 0), option->palette.color(QPalette::Window)); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.bottomLeft()); #if 0 QColor c = option->palette.color(QPalette::Highlight); gradient.setColorAt(0.0, c); gradient.setColorAt(0.2, QColor(255, 255, 255, 20)); gradient.setColorAt(1.0, QColor(255, 255, 255, 0)); #else gradient.setColorAt(0.0, shaded_color(option->palette.color(QPalette::Window), 20)); gradient.setColorAt(1.0, shaded_color(option->palette.color(QPalette::Window), 0)); #endif painter->fillRect(c_rect.adjusted(0, 0, -1, 0), gradient); } // ### flat tabs: 50->20, 180->80 // painter->fillRect(c_rect, QColor(255, 0, 0, 100)); Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.right() + 1, c_rect.top(), 1, c_rect.height()), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.right() + 2, c_rect.top(), 1, c_rect.height()), QColor(0, 0, 0, 10)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(1, mouse ? 1 : 2, -1, -1), mouse ? option->palette.color(QPalette::Window).darker(104) : option->palette.color(QPalette::Window).darker(108)); paintThinFrame(painter, c_rect.adjusted(1, mouse ? 1 : 2, -1, 1), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.right(), c_rect.top() + 3, 1, c_rect.height() - 4), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 3, 1, c_rect.height() - 4), QColor(0, 0, 0, 5)); painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() - 1, c_rect.width() - 2, 1), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() - 2, c_rect.width() - 2, 1), QColor(0, 0, 0, 4)); } break; case South: c_rect.adjust(1, 0, -2, -1); if (option->position != QStyleOptionTab::Beginning && option->position != QStyleOptionTab::OnlyOneTab) { c_rect.adjust(-1, 0, 0, 0); } if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, -1, 0), option->palette.color(QPalette::Window)); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.bottomLeft()); gradient.setColorAt(0.0, shaded_color(option->palette.color(QPalette::Window), 0)); gradient.setColorAt(1.0, shaded_color(option->palette.color(QPalette::Window), -5)); painter->fillRect(c_rect.adjusted(0, 0, -1, 0), gradient); } Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); //paintThinFrame(painter, c_rect.adjusted(0, -1, 0, 0), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 1, 1, c_rect.height() - 1), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.right() + 2, c_rect.top() + 1, 1, c_rect.height() - 1), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() + 1, c_rect.width(), 1), QColor(0, 0, 0, 20)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(1, 1, -1, mouse ? -1 : -2), mouse ? option->palette.color(QPalette::Window).darker(104) : option->palette.color(QPalette::Window).darker(108)); paintThinFrame(painter, c_rect.adjusted(1, -1, -1, mouse ? -1 : -2), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.right(), c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 5)); if (!mouse) { painter->fillRect(QRect(c_rect.left() + 2, c_rect.bottom() - 1, c_rect.width() - 3, 1), QColor(0, 0, 0, 10)); } painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 1, c_rect.width() - 2, 1), QColor(0, 0, 0, 30)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 2, c_rect.width() - 2, 1), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 3, c_rect.width() - 2, 1), QColor(0, 0, 0, 8)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 4, c_rect.width() - 2, 1), QColor(0, 0, 0, 4)); } break; case West: c_rect.adjust(1, 1, 0, -2); if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, 0, -1), option->palette.color(QPalette::Window)); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.topRight()); gradient.setColorAt(0.0, shaded_color(option->palette.color(QPalette::Window), 20)); gradient.setColorAt(1.0, shaded_color(option->palette.color(QPalette::Window), 0)); painter->fillRect(c_rect.adjusted(0, 0, 0, -1), gradient); } Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 1, c_rect.width(), 1), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 2, c_rect.width(), 1), QColor(0, 0, 0, 10)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(mouse ? 1 : 2, 1, 1, -1), mouse ? option->palette.color(QPalette::Window).darker(104) : option->palette.color(QPalette::Window).darker(108)); paintThinFrame(painter, c_rect.adjusted(mouse ? 1 : 2, 1, 1, -1), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.left() + 2, c_rect.bottom() + 0, c_rect.width() - 3, 1), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.left() + 2, c_rect.bottom() + 1, c_rect.width() - 3, 1), QColor(0, 0, 0, 5)); painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.right() - 1, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.right() - 2, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 4)); } break; case East: c_rect.adjust(0, 1, -1, -2); if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, 0, -1), option->palette.color(QPalette::Window)); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.topRight()); gradient.setColorAt(0.0, shaded_color(option->palette.color(QPalette::Window), 0)); gradient.setColorAt(1.0, shaded_color(option->palette.color(QPalette::Window), 10)); painter->fillRect(c_rect.adjusted(0, 0, 0, -1), gradient); } Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 1, c_rect.width(), 1), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 2, c_rect.width(), 1), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 1, 1, c_rect.height()), QColor(0, 0, 0, 20)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(-2, 1, mouse ? -1 : -2, -1), mouse ? option->palette.color(QPalette::Window).darker(104) : option->palette.color(QPalette::Window).darker(108)); paintThinFrame(painter, c_rect.adjusted(-2, 1, mouse ? -1 : -2, -1), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() + 0, c_rect.width() - 3, 1), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() + 1, c_rect.width() - 3, 1), QColor(0, 0, 0, 5)); painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 20)); painter->fillRect(QRect(c_rect.left() + 2, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.left() + 3, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 5)); // painter->fillRect(QRect(c_rect.left() + 4, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 4)); } break; } } void paintTabBarTabLabel(QPainter *painter, const QStyleOptionTab *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { // bool mouse = (option->state & QStyle::State_MouseOver) && !(option->state & QStyle::State_Selected) && (option->state & QStyle::State_Enabled); // painter->save(); #if 0 if (!(option->state & QStyle::State_Selected)) { if (mouse) { painter->setOpacity(0.7); } else { painter->setOpacity(0.5); } } else { painter->setOpacity(0.8); } // QFont font(painter->font()); // font.setBold(true); // painter->setFont(font); #endif QStyleOptionTabV2 opt; int offset = TAB_SHIFT; if (option->state & QStyle::State_Selected || (option->state & QStyle::State_MouseOver && option->state & QStyle::State_Enabled)) { offset = 0; } if (option->version > 1) { opt = *((QStyleOptionTabV2 *) option); } else { opt = *option; } Affinity affinity; tabAffinity(option->shape, affinity, offset); opt.rect.translate(affinity.x1 + affinity.x2, affinity.y1 + affinity.y2); switch (tabPos(option->shape)) { case North: opt.rect.adjust(3, 1, -6, 1); break; case South: opt.rect.adjust(3, 0, -6, 0); break; case West: case East: painter->save(); QMatrix mat; if (tabPos(option->shape) == West) { opt.rect.adjust(3, 4, 3, -4); } else { opt.rect.adjust(-1, 4, -1, -4); } QPointF c = opt.rect.center(); mat.translate(c.x(), c.y()); mat.rotate(tabPos(option->shape) == West ? -90 : 90); mat.translate(-c.x(), -c.y()); opt.rect = mat.mapRect(opt.rect); painter->setMatrix(mat, true); opt.shape = (QTabBar::Shape) 0; break; } ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_TabBarTabLabel, &opt, painter, widget); if (isVertical(option->shape)) { painter->restore(); } } /*-----------------------------------------------------------------------*/ #if 0 class IconTextLabel { QString text; QIcon icon; QSize iconSize; Qt::Orientation orientation; }; static void paintIconTextLabel(QPainter *painter, const QRect &rect, const IconTextLabel &label) { } #endif /* * skulpture_text.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QTextEdit> #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #include <QtGui/QPlainTextEdit> #endif #include <QtGui/QTextBrowser> #include <QtGui/QTextFrame> #include <QtGui/QScrollBar> #include <cstdio> /*-----------------------------------------------------------------------*/ #define HIGHLIGHT_VMARGIN 2 void SkulptureStyle::Private::highlightCurrentEditLine(QAbstractScrollArea *edit, const QRect &cursorRect) { QRect cursorLine = cursorRect; cursorLine.setLeft(0); cursorLine.setWidth(edit->viewport()->width()); cursorLine.adjust(0, - HIGHLIGHT_VMARGIN, 0, HIGHLIGHT_VMARGIN); cursorLine.translate(edit->horizontalScrollBar()->value(), edit->verticalScrollBar()->value()); cursorLine.moveTop(cursorLine.top() % edit->height()); if (cursorRect.top() < HIGHLIGHT_VMARGIN) { cursorLine.setTop(cursorLine.top() + HIGHLIGHT_VMARGIN - cursorRect.top()); } if (cursorRect.bottom() + HIGHLIGHT_VMARGIN > edit->rect().bottom()) { cursorLine.setBottom(cursorLine.bottom() - cursorRect.bottom() - HIGHLIGHT_VMARGIN + edit->rect().bottom()); } if (edit != oldEdit || cursorLine.top() != oldCursorTop || cursorLine.width() != oldCursorWidth || cursorLine.height() != oldCursorHeight || edit->viewport()->height() != oldHeight || edit->palette() != oldPalette) { oldEdit = edit; oldCursorTop = cursorLine.top(); oldCursorWidth = cursorLine.width(); oldCursorHeight = cursorLine.height(); oldHeight = edit->viewport()->height(); oldPalette = edit->palette(); QPixmap pixmap(edit->size()); QPalette palette = edit->palette(); pixmap.fill(palette.color(QPalette::Base)); QPainter painter(&pixmap); QColor color; bool wrap = false; do { color = palette.color(QPalette::Highlight); color.setAlpha(40); // color.setHsvF(palette.color(QPalette::Highlight).hueF(), 0.05, 0.97); painter.fillRect(cursorLine, color); if (edit->window()->testAttribute(Qt::WA_KeyboardFocusChange)) { color = palette.color(QPalette::Highlight).dark(120); color.setAlpha(120); painter.fillRect(cursorLine.adjusted(0, cursorLine.height() - 3, 0, -2), color); } if (!wrap) { if (cursorLine.bottom() > edit->rect().bottom()) { cursorLine.translate(0, -edit->height()); wrap = true; } } else { wrap = false; } } while (wrap); QBrush brush(pixmap); palette.setBrush(QPalette::Base, brush); edit->viewport()->setPalette(palette); } } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void SkulptureStyle::Private::highlightCurrentEditLine(QPlainTextEdit *edit) { if (edit->hasFocus() && !edit->isReadOnly() && edit->cursorRect().intersects(edit->rect())) { QStyleOption option; option.initFrom(edit); int cursorWidth = q->SkulptureStyle::pixelMetric(PM_TextCursorWidth, &option, edit); if (edit->cursorWidth() != cursorWidth) { edit->setCursorWidth(cursorWidth); } highlightCurrentEditLine(edit, edit->cursorRect()); } else { QPalette palette = edit->palette(); edit->viewport()->setPalette(palette); oldEdit = 0; } } #endif void SkulptureStyle::Private::highlightCurrentEditLine(QTextEdit *edit) { if (edit->hasFocus() && !edit->isReadOnly() && edit->cursorRect().intersects(edit->rect())) { QStyleOption option; option.initFrom(edit); int cursorWidth = q->SkulptureStyle::pixelMetric(PM_TextCursorWidth, &option, edit); if (edit->cursorWidth() != cursorWidth) { edit->setCursorWidth(cursorWidth); } highlightCurrentEditLine(edit, edit->cursorRect()); } else { QPalette palette = edit->palette(); edit->viewport()->setPalette(palette); oldEdit = 0; } } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::updateTextEditMargins(QTextEdit *edit) { int margin = 1 + edit->fontMetrics().height() / 5; if (margin > 4) margin = 4; if (qobject_cast<QTextBrowser *>(edit)) { margin = edit->fontMetrics().height(); if (margin < 4 || edit->height() < 4 * edit->fontMetrics().height()) { margin = 4; } } if (margin < 2 || edit->height() < 2 * edit->fontMetrics().height()) { margin = 2; } QTextDocument *doc = edit->document(); // printf("doc: %p\n", doc); if (!doc) return; if (doc->isEmpty()) { // create valid root frame QTextCursor cursor(doc); } QTextFrame *root = doc->rootFrame(); // printf("root: %p\n", root); if (!root) return; QTextFrameFormat format = root->frameFormat(); if (!format.isValid()) return; if (format.margin() == 2.0 && margin != 2) { // printf("set margin %d\n", margin); // ### crash on setText(), disable signals disconnect(edit, SIGNAL(textChanged()), &mapper, SLOT(map())); doc->blockSignals(true); format.setMargin(margin); root->setFrameFormat(format); // edit->insertPlainText(QString::fromUtf8("")); // edit->update(); doc->blockSignals(false); connect(edit, SIGNAL(textChanged()), &mapper, SLOT(map())); // clear undo buffer bool undo = edit->isUndoRedoEnabled(); edit->setUndoRedoEnabled(false); doc->setModified(false); // emit doc->contentsChanged(); edit->setUndoRedoEnabled(undo); // force relayout edit->resize(edit->size() + QSize(-1, 0)); edit->resize(edit->size() + QSize(1, 0)); } } void SkulptureStyle::Private::textEditSourceChanged(QWidget *widget) { if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { updateTextEditMargins(edit); } } /*-----------------------------------------------------------------------*/ QRect SkulptureStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const { Q_UNUSED(enabled); return ParentStyle::itemTextRect(metrics, rectangle, alignment, true, text); // return ParentStyle::itemTextRect(metrics, rectangle, alignment, enabled, text); } void SkulptureStyle::drawItemText(QPainter * painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const { if (1 || enabled) { // painter->save(); // QFont font = painter->font(); // font.setStretch(600); // painter->setFont(font); // painter->scale(1/24.0, 1); #if 0 if (enabled) { painter->save(); painter->setPen(QColor(255, 255, 255, 100)); ParentStyle::drawItemText(painter, rectangle.adjusted(1, 1, 1, 1), alignment, palette, enabled, text, QPalette::NoRole); painter->restore(); } #endif ParentStyle::drawItemText(painter, rectangle, alignment, palette, enabled, text, textRole); // painter->restore(); } else { QImage image(rectangle.size() + QSize(4, 4), QImage::Format_ARGB32_Premultiplied); image.fill(0); QPainter p(&image); p.setFont(painter->font()); p.setPen(painter->pen()); ParentStyle::drawItemText(&p, QRect(QPoint(3, 3), rectangle.size()), alignment, palette, enabled, text, QPalette::Light); // ParentStyle::drawItemText(&p, QRect(QPoint(1, 3), rectangle.size()), alignment, palette, enabled, text, QPalette::Light); // ParentStyle::drawItemText(&p, QRect(QPoint(3, 1), rectangle.size()), alignment, palette, enabled, text, QPalette::Light); // ParentStyle::drawItemText(&p, QRect(QPoint(1, 1), rectangle.size()), alignment, palette, enabled, text, QPalette::Light); // filterImage(image, 0.5); ParentStyle::drawItemText(&p, QRect(QPoint(2, 2), rectangle.size()), alignment, palette, enabled, text, textRole); // filterImage(image, 0.75); painter->drawImage(rectangle.topLeft() - QPoint(2, 2), image); } } /* * skulpture_toolbar.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QToolBar> #include <QtGui/QToolButton> #include <QtGui/QTabBar> #include <cstdio> /*-----------------------------------------------------------------------*/ #define PAINT_SEPARATOR 0 /*-----------------------------------------------------------------------*/ void paintToolBarSeparator(QPainter *painter, const QStyleOptionToolBar *option) { #if PAINT_SEPARATOR QRect rect = option->rect; if (option->state & QStyle::State_Horizontal) { // rect.adjust(2, 3, -2, -3); rect.adjust(2, -1, -2, 1); } else { // rect.adjust(3, 2, -3, -2); rect.adjust(-1, 2, 1, -2); } paintThinFrame(painter, rect, option->palette, 60, -20); #else Q_UNUSED(painter); Q_UNUSED(option); #endif } /*-----------------------------------------------------------------------*/ extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole); void paintToolBarHandle(QPainter *painter, const QStyleOptionToolBar *option) { #if 1 int d = 5; QRect rect(QRect(option->rect).center() - QPoint(d / 2, d / 2), QSize(d, d)); QStyleOption iOption; iOption.QStyleOption::operator=(*option); iOption.rect = rect; iOption.palette.setCurrentColorGroup(QPalette::Disabled); // iOption.state &= ~QStyle::State_Enabled; iOption.palette.setColor(QPalette::Button, iOption.palette.color(QPalette::Window)); paintCachedGrip(painter, &iOption, QPalette::Window); #else QRect rect = option->rect; if (option->state & QStyle::State_Horizontal) { rect.adjust(2, 2, -2, -2); #if PAINT_SEPARATOR rect.adjust(0, 1, 0, 1); #endif } else { rect.adjust(2, 2, -2, -2); #if PAINT_SEPARATOR rect.adjust(1, 0, 1, 0); #endif } paintThinFrame(painter, rect.adjusted(-1, -1, 1, 1), option->palette, 60, -20); paintThinFrame(painter, rect, option->palette, -30, 80); #endif } /*-----------------------------------------------------------------------*/ void paintPanelToolBar(QPainter *painter, const QStyleOptionToolBar *option) { // painter->fillRect(option->rect, option->palette.color(QPalette::Window)); // paintThinFrame(painter, option->rect, option->palette, -20, 60); #if PAINT_SEPARATOR QRect r = option->rect; if (option->state & QStyle::State_Horizontal) { r.setHeight(2); } else { r.setWidth(2); } paintThinFrame(painter, r, option->palette, 60, -20); #else Q_UNUSED(painter); Q_UNUSED(option); #endif } /*-----------------------------------------------------------------------*/ static inline bool inVerticalToolBar(const QStyleOption *option, const QWidget *widget) { // ### option->state does not reflect orientation Q_UNUSED(option); bool verticalBar = false; if (widget && widget->parentWidget()) { const QToolBar *toolBar = qobject_cast<const QToolBar *>(widget->parentWidget()); // printf("toolbar: %p\n", toolBar); if (toolBar && toolBar->orientation() == Qt::Vertical) { verticalBar = true; } } return verticalBar; } /*-----------------------------------------------------------------------*/ void paintToolButton(QPainter *painter, const QStyleOptionToolButton *option, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style) { Q_UNUSED(bgrole); if (widget) { QTabBar *bar = qobject_cast<QTabBar *>(widget->parentWidget()); if (bar) { // tabbar scroll button QStyleOptionToolButton opt = *option; if (int(bar->shape()) & 2) { opt.rect.adjust(4, 0, -4, -1); } else { opt.rect.adjust(0, 4, 0, -3); } painter->save(); painter->setClipRect(opt.rect); painter->fillRect(opt.rect, option->palette.color(QPalette::Window)); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); painter->restore(); return; } else if (widget->objectName() == QLatin1String("qt_menubar_ext_button") || widget->objectName() == QLatin1String("qt_toolbar_ext_button")) { QStyleOptionToolButton opt = *option; /* do not render menu arrow, because extension buttons already have an arrow */ opt.features &= ~(QStyleOptionToolButton::Menu | QStyleOptionToolButton::HasMenu); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); return; } } if (option->features & QStyleOptionToolButton::HasMenu) { if (option->features & QStyleOptionToolButton::Menu) { if (option->subControls & QStyle::SC_ToolButton) { painter->save(); QStyleOptionToolButton opt = *option; opt.rect = style->subControlRect(QStyle::CC_ToolButton, option, QStyle::SC_ToolButton, widget); // opt.features &= ~(QStyleOptionToolButton::Menu | QStyleOptionToolButton::HasMenu | QStyleOptionToolButton::Arrow); opt.arrowType = Qt::NoArrow; opt.features = 0; opt.subControls &= ~(QStyle::SC_ToolButtonMenu); opt.activeSubControls &= ~(QStyle::SC_ToolButtonMenu); if (inVerticalToolBar(option, widget)) { painter->setClipRect(opt.rect.adjusted(0, 0, 0, -1)); } else { painter->setClipRect(opt.rect.adjusted(option->direction == Qt::LeftToRight ? 0 : 1, 0, option->direction == Qt::LeftToRight ? -1 : 0, 0)); } ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); painter->restore(); } if (option->subControls & QStyle::SC_ToolButtonMenu) { painter->save(); QStyleOptionToolButton opt = *option; opt.rect = style->subControlRect(QStyle::CC_ToolButton, option, QStyle::SC_ToolButtonMenu, widget); QStyle::State state = option->state; state &= ~(QStyle::State_Sunken | QStyle::State_Raised); if (!(state & QStyle::State_AutoRaise) || (state & QStyle::State_MouseOver)) { state |= QStyle::State_Raised; } if (option->activeSubControls & QStyle::SC_ToolButtonMenu) { state |= QStyle::State_Sunken; } opt.state = state; if (inVerticalToolBar(option, widget)) { painter->setClipRect(opt.rect.adjusted(0, 1, 0, 0)); } else { painter->setClipRect(opt.rect.adjusted(option->direction == Qt::LeftToRight ? 1 : 0, 0, option->direction == Qt::LeftToRight ? 0 : -1, 0)); } if (state & (QStyle::State_Sunken | QStyle::State_On | QStyle::State_Raised)) { style->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, painter, widget); } painter->restore(); QRect r; if (inVerticalToolBar(option, widget)) { if (option->direction == Qt::LeftToRight) { r = QRect(opt.rect.right() - 9, opt.rect.top(), 7, opt.rect.height()); } else { r = QRect(3, opt.rect.top(), 7, opt.rect.height()); } } else { r = QRect(opt.rect.left(), opt.rect.bottom() - 9, opt.rect.width(), 7); } if (option->state & QStyle::State_Sunken) { if (option->direction == Qt::LeftToRight) { r.adjust(1, 1, 1, 1); } else { r.adjust(-1, 1, -1, 1); } } QFont font; font.setPixelSize(9); opt.fontMetrics = QFontMetrics(font); opt.rect = r; style->drawPrimitive(inVerticalToolBar(option, widget) ? QStyle::PE_IndicatorArrowRight : QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } // painter->fillRect(opt.rect.adjusted(3, 3, -3, -3), Qt::red); } else { QStyleOptionToolButton opt = *option; opt.features &= ~QStyleOptionToolButton::HasMenu; ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); QRect r; if (option->direction == Qt::LeftToRight) { r = QRect(option->rect.right() - 6, option->rect.bottom() - 6, 5, 5); if (option->state & QStyle::State_Sunken) { r.adjust(1, 1, 1, 1); } } else { r = QRect(2, option->rect.bottom() - 6, 5, 5); if (option->state & QStyle::State_Sunken) { r.adjust(-1, 1, -1, 1); } } QFont font; font.setPixelSize(7); opt.fontMetrics = QFontMetrics(font); opt.rect = r; style->drawPrimitive(inVerticalToolBar(option, widget) ? QStyle::PE_IndicatorArrowRight : QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } } else { ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, option, painter, widget); } } /*-----------------------------------------------------------------------*/ QRect subControlRectToolButton(const QStyleOptionToolButton *option, QStyle::SubControl subControl, const QWidget *widget, void */*data*/, int /*id*/, const QStyle *style) { QRect r = option->rect; if (option->features & QStyleOptionToolButton::Menu) { int pm = style->pixelMetric(QStyle::PM_MenuButtonIndicator, option, widget) - 2; bool verticalBar = inVerticalToolBar(option, widget); switch (subControl) { case QStyle::SC_ToolButton: if (verticalBar) { r.adjust(0, 0, 0, -pm); } else { r.adjust(0, 0, -pm, 0); } break; case QStyle::SC_ToolButtonMenu: if (verticalBar) { r.adjust(0, r.height() - pm - 2, 0, 0); } else { r.adjust(r.width() - pm - 2, 0, 0, 0); } break; default: break; } return style->visualRect(option->direction, option->rect, r); } return ((QPlastiqueStyle *) style)->QPlastiqueStyle::subControlRect(QStyle::CC_ToolButton, option, subControl, widget); } extern QSize sizeFromContentsToolButton(const QStyleOptionToolButton *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style) { QSize size = ((QPlastiqueStyle *) style)->QPlastiqueStyle::sizeFromContents(QStyle::CT_ToolButton, option, contentsSize, widget); if (widget && !qstrcmp(widget->metaObject()->className(), "KAnimatedButton")) { return size - QSize(4, 4); } if (option->features & QStyleOptionToolButton::Menu) { int pm = style->pixelMetric(QStyle::PM_MenuButtonIndicator, option, widget); size -= QSize(pm, 0); pm -= 2; bool verticalBar = inVerticalToolBar(option, widget); if (verticalBar) { size += QSize(0, pm); } else { size += QSize(pm, 0); } } return size; } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::updateToolBarOrientation(Qt::Orientation /*orientation */) { QToolBar *toolbar = static_cast<QToolBar *>(sender()); QList<QToolButton *> toolbuttons = toolbar->findChildren<QToolButton *>(); bool changed = false; foreach (QToolButton *toolbutton, toolbuttons) { if (toolbutton->popupMode() == QToolButton::MenuButtonPopup) { // ### this hack forces Qt to invalidate the size hint Qt::ToolButtonStyle oldstyle = toolbutton->toolButtonStyle(); Qt::ToolButtonStyle newstyle; if (oldstyle == Qt::ToolButtonIconOnly) { newstyle = Qt::ToolButtonTextOnly; } else { newstyle = Qt::ToolButtonIconOnly; } toolbutton->setToolButtonStyle(newstyle); toolbutton->setToolButtonStyle(oldstyle); changed = true; } } if (changed) { // ### Qt does not update dragged toolbars... toolbar->updateGeometry(); } } /* * skulpture_p.cpp * */ #include "skulpture_p.h" #include <QtCore/QSettings> #include <QtCore/QLocale> #include <QtGui/QFrame> #include <QtGui/QMainWindow> #include <QtGui/QApplication> #include <QtGui/QToolBar> #include <cstdio> /*-----------------------------------------------------------------------*/ struct StyleSetting { enum Type { Bool, Char, Frame, Alignment, Orientation, Pixels, Points, Milliseconds, Color, Size, Parent, Value }; const char * const label; int id; int type; int value; }; static const struct StyleSetting styleSettings[] = { // changed from defaults // { "TabWidget/TabBarAlignment", QStyle::SH_TabBar_Alignment, StyleSetting::Alignment, Qt::AlignCenter }, // { "GroupBox/TextLabelColor", QStyle::SH_GroupBox_TextLabelColor, StyleSetting::Color, 0xFF000000 }, // { "ItemView/GridLineColor", QStyle::SH_Table_GridLineColor, StyleSetting::Color, 0xFFD0D0D0 }, { "Menu/SubMenuPopupDelay", QStyle::SH_Menu_SubMenuPopupDelay, StyleSetting::Milliseconds, 80 }, // { "General/FullWidthSelection", QStyle::SH_RichText_FullWidthSelection, StyleSetting::Bool, 1 }, { "LineEdit/PasswordCharacter", QStyle::SH_LineEdit_PasswordCharacter, StyleSetting::Char, 10039 }, /* other useful values: 9096; 10039; 9679; 8226; 9055; 9675; 9642; 9643; 9674; 9675; 9688; 9689; 9633; 9632; 9702; 9733; 9830; 9786; */ // { "Dialog/ButtonsHaveIcons", QStyle::SH_DialogButtonBox_ButtonsHaveIcons, StyleSetting::Bool, 0 }, // { "ItemView/ActivateItemOnSingleClick", QStyle::SH_ItemView_ActivateItemOnSingleClick, StyleSetting::Bool, 1 }, // { "ItemView/FrameOnlyAroundContents", QStyle::SH_ScrollView_FrameOnlyAroundContents, StyleSetting::Bool, 0 }, // { "General/UnderlineShortcut", QStyle::SH_UnderlineShortcut, StyleSetting::Bool, 0 }, // { "ToolBox/SelectedPageTitleBold", QStyle::SH_ToolBox_SelectedPageTitleBold, StyleSetting::Bool, false }, #if 0 // configurable { "General/EtchDisabledText", QStyle::SH_EtchDisabledText, StyleSetting::Parent, 0 }, { "General/DitherDisabledText", QStyle::SH_DitherDisabledText, StyleSetting::Parent, 0 }, { "ScrollBar/ContextMenu", QStyle::SH_ScrollBar_ContextMenu, StyleSetting::Parent, 0 }, { "ScrollBar/MiddleClickAbsolutePosition", QStyle::SH_ScrollBar_MiddleClickAbsolutePosition, StyleSetting::Parent, 0 }, { "ScrollBar/LeftClickAbsolutePosition", QStyle::SH_ScrollBar_LeftClickAbsolutePosition, StyleSetting::Parent, 0 }, { "ScrollBar/ScrollWhenPointerLeavesControl", QStyle::SH_ScrollBar_ScrollWhenPointerLeavesControl, StyleSetting::Parent, 0 }, { "ScrollBar/RollBetweenButtons", QStyle::SH_ScrollBar_RollBetweenButtons, StyleSetting::Parent, 0 }, { "TabWidget/TabBarAlignment", QStyle::SH_TabBar_Alignment, StyleSetting::Parent, 0 }, { "ItemView/HeaderArrowAlignment", QStyle::SH_Header_ArrowAlignment, StyleSetting::Parent, 0 }, { "Slider/SnapToValue", QStyle::SH_Slider_SnapToValue, StyleSetting::Parent, 0 }, { "Slider/SloppyKeyEvents", QStyle::SH_Slider_SloppyKeyEvents, StyleSetting::Parent, 0 }, { "ProgressDialog/CenterCancelButton", QStyle::SH_ProgressDialog_CenterCancelButton, StyleSetting::Parent, 0 }, { "ProgressDialog/TextLabelAlignment", QStyle::SH_ProgressDialog_TextLabelAlignment, StyleSetting::Parent, 0 }, { "PrintDialog/RightAlignButtons", QStyle::SH_PrintDialog_RightAlignButtons, StyleSetting::Parent, 0 }, { "Window/SpaceBelowMenuBar", QStyle::SH_MainWindow_SpaceBelowMenuBar, StyleSetting::Parent, 0 }, { "FontDialog/SelectAssociatedText", QStyle::SH_FontDialog_SelectAssociatedText, StyleSetting::Parent, 0 }, { "Menu/KeyboardSearch", QStyle::SH_Menu_KeyboardSearch, StyleSetting::Parent, 0 }, { "Menu/AllowActiveAndDisabled", QStyle::SH_Menu_AllowActiveAndDisabled, StyleSetting::Parent, 0 }, { "Menu/SpaceActivatesItem", QStyle::SH_Menu_SpaceActivatesItem, StyleSetting::Parent, 0 }, { "Menu/Scrollable", QStyle::SH_Menu_Scrollable, StyleSetting::Parent, 0 }, { "Menu/SloppySubMenus", QStyle::SH_Menu_SloppySubMenus, StyleSetting::Parent, 0 }, { "Menu/AltKeyNavigation", QStyle::SH_MenuBar_AltKeyNavigation, StyleSetting::Parent, 0 }, { "ComboBox/ListMouseTracking", QStyle::SH_ComboBox_ListMouseTracking, StyleSetting::Parent, 0 }, { "Menu/MouseTracking", QStyle::SH_Menu_MouseTracking, StyleSetting::Parent, 0 }, { "Menu/BarMouseTracking", QStyle::SH_MenuBar_MouseTracking, StyleSetting::Parent, 0 }, { "Menu/FillScreenWithScroll", QStyle::SH_Menu_FillScreenWithScroll, StyleSetting::Parent, 0 }, { "Menu/SelectionWrap", QStyle::SH_Menu_SelectionWrap, StyleSetting::Parent, 0 }, { "ItemView/ChangeHighlightOnFocus", QStyle::SH_ItemView_ChangeHighlightOnFocus, StyleSetting::Parent, 0 }, { "Window/ShareActivation", QStyle::SH_Widget_ShareActivation, StyleSetting::Parent, 0 }, { "TabWidget/SelectMouseType", QStyle::SH_TabBar_SelectMouseType, StyleSetting::Parent, 0 }, { "ItemView/Compat/ExpansionSelectMouseType", QStyle::SH_Q3ListViewExpand_SelectMouseType, StyleSetting::Parent, 0 }, { "TabWidget/TabBarPreferNoArrows", QStyle::SH_TabBar_PreferNoArrows, StyleSetting::Parent, 0 }, { "ComboBox/Popup", QStyle::SH_ComboBox_Popup, StyleSetting::Parent, 0 }, { "MDI/Workspace/FillSpaceOnMaximize", QStyle::SH_Workspace_FillSpaceOnMaximize, StyleSetting::Parent, 0 }, { "Slider/StopMouseOverSlider", QStyle::SH_Slider_StopMouseOverSlider, StyleSetting::Parent, 0 }, { "General/BlinkCursorWhenTextSelected", QStyle::SH_BlinkCursorWhenTextSelected, StyleSetting::Parent, 0 }, { "GroupBox/TextLabelVerticalAlignment", QStyle::SH_GroupBox_TextLabelVerticalAlignment, StyleSetting::Parent, 0 }, { "Dialog/DefaultButton", QStyle::SH_DialogButtons_DefaultButton, StyleSetting::Parent, 0 }, { "General/SpellCheckUnderlineStyle", QStyle::SH_SpellCheckUnderlineStyle, StyleSetting::Parent, 0 }, { "SpinBox/AnimateButton", QStyle::SH_SpinBox_AnimateButton, StyleSetting::Parent, 0 }, { "SpinBox/KeyPressAutoRepeatRate", QStyle::SH_SpinBox_KeyPressAutoRepeatRate, StyleSetting::Parent, 0 }, { "SpinBox/ClickAutoRepeatRate", QStyle::SH_SpinBox_ClickAutoRepeatRate, StyleSetting::Parent, 0 }, { "ToolTip/Opacity", QStyle::SH_ToolTipLabel_Opacity, StyleSetting::Parent, 0 }, { "Menu/DrawMenuBarSeparator", QStyle::SH_DrawMenuBarSeparator, StyleSetting::Parent, 0 }, { "MDI/TitleBar/ModifyNotification", QStyle::SH_TitleBar_ModifyNotification, StyleSetting::Parent, 0 }, { "Button/FocusPolicy", QStyle::SH_Button_FocusPolicy, StyleSetting::Parent, 0 }, { "Menu/DismissOnSecondClick", QStyle::SH_MenuBar_DismissOnSecondClick, StyleSetting::Parent, 0 }, { "MessageBox/UseBorderForButtonSpacing", QStyle::SH_MessageBox_UseBorderForButtonSpacing, StyleSetting::Parent, 0 }, { "MessageBox/CenterButtons", QStyle::SH_MessageBox_CenterButtons, StyleSetting::Parent, 0 }, { "MessageBox/AllowTextInteraction", QStyle::SH_MessageBox_TextInteractionFlags, StyleSetting::Parent, 0 }, { "MDI/TitleBar/AutoRaise", QStyle::SH_TitleBar_AutoRaise, StyleSetting::Parent, 0 }, { "ToolBar/PopupDelay", QStyle::SH_ToolButton_PopupDelay, StyleSetting::Parent, 0 }, { "SpinBox/DisableControlsOnBounds", QStyle::SH_SpinControls_DisableOnBounds, StyleSetting::Parent, 0 }, { "ComboBox/LayoutDirection", QStyle::SH_ComboBox_LayoutDirection, StyleSetting::Parent, 0 }, { "ItemView/EllipsisLocation", QStyle::SH_ItemView_EllipsisLocation, StyleSetting::Parent, 0 }, { "ItemView/ShowDecorationSelected", QStyle::SH_ItemView_ShowDecorationSelected, StyleSetting::Parent, 0 }, { "Slider/AbsoluteSetButtons", QStyle::SH_Slider_AbsoluteSetButtons, StyleSetting::Parent, 0 }, { "Slider/PageSetButtons", QStyle::SH_Slider_PageSetButtons, StyleSetting::Parent, 0 }, { "TabWidget/ElideMode", QStyle::SH_TabBar_ElideMode, StyleSetting::Parent, 0 }, { "Dialog/ButtonLayout", QStyle::SH_DialogButtonLayout, StyleSetting::Parent, 0 }, { "ComboBox/PopupFrameStyle", QStyle::SH_ComboBox_PopupFrameStyle, StyleSetting::Parent, 0 }, { "ItemView/MovementWithoutUpdatingSelection", QStyle::SH_ItemView_MovementWithoutUpdatingSelection, StyleSetting::Parent, 0 }, { "General/FocusFrameAboveWidget", QStyle::SH_FocusFrame_AboveWidget, StyleSetting::Parent, 0 }, { "General/FocusIndicatorTextCharFormat", QStyle::SH_TextControl_FocusIndicatorTextCharFormat, StyleSetting::Parent, 0 }, #endif #if 0 // not configurable // GUIStyle ??? { "General/FocusFrameMask", QStyle::SH_FocusFrame_Mask, StyleSetting::Parent, 0 }, { "General/RubberBandMask", QStyle::SH_RubberBand_Mask, StyleSetting::Parent, 0 }, { "General/WindowFrameMask", QStyle::SH_WindowFrame_Mask, StyleSetting::Parent, 0 }, { "MDI/TitleBar/NoBorder", QStyle::SH_TitleBar_NoBorder, StyleSetting::Parent, 0 }, { "Dial/BackgroundRole", QStyle::SH_Dial_BackgroundRole, StyleSetting::Parent, 0 }, { "ScrollBar/BackgroundMode", QStyle::SH_ScrollBar_BackgroundMode, StyleSetting::Parent, 0 }, { "General/ToolTipMask", QStyle::SH_ToolTip_Mask, StyleSetting::Parent, 0 }, #endif #if 0 // New for SkulptureStyle (not supported yet) { "LineEdit/EnableClearButton", -1, StyleSetting::Bool, 1 }, { "LineEdit/ClearButtonExtent", -1, StyleSetting::Pixels, 20 }, { "LineEdit/ClearButtonIconSize", -1, StyleSetting::Size, 12 }, { "General/HighlightCursorLine", -1, StyleSetting::Bool, 1 }, { "General/HighlightCursorLineWithoutFocus", -1, StyleSetting::Bool, 1 }, { "General/UnderlineShortcutWhenAltPressed", -1, StyleSetting::Bool, 1 }, #endif { 0, -1, 0, 0 } }; extern int getRubberBandMask(QStyleHintReturnMask *mask, const QStyleOption *option, const QWidget *widget); extern int getWindowFrameMask(QStyleHintReturnMask *mask, const QStyleOptionTitleBar *option, const QWidget *widget); int SkulptureStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const { // return ParentStyle::styleHint(hint, option, widget, returnData); // TODO implement caching const StyleSetting *setting = &styleSettings[0]; QVariant value; switch (hint) { case QStyle::SH_Table_GridLineColor: { QColor bgcolor; if (option) { bgcolor = option->palette.color(QPalette::Base); } else { bgcolor = QApplication::palette().color(QPalette::Base); } QColor color = bgcolor.dark(120); int r, g, b, a; color.getRgb(&r, &g, &b, &a); return (int) qRgba(r, g, b, a); } /* case QStyle::SH_ComboBox_ListMouseTracking: return true; */ case QStyle::SH_UnderlineShortcut: if (d->hideShortcutUnderlines) { return (d->shortcut_handler->underlineShortcut(widget)); } else { return true; } case QStyle::SH_TitleBar_NoBorder: return 0; case QStyle::SH_RubberBand_Mask: { QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask *>(returnData); if (mask) { return getRubberBandMask(mask, option, widget); } } return 0; case QStyle::SH_WindowFrame_Mask: { QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask *>(returnData); const QStyleOptionTitleBar *titleBarOption = qstyleoption_cast<const QStyleOptionTitleBar *>(option); if (mask && titleBarOption) { return getWindowFrameMask(mask, titleBarOption, widget); } } return 0; case QStyle::SH_MainWindow_SpaceBelowMenuBar: { #if 0 if (widget) { QMainWindow *window = qobject_cast<QMainWindow *>(widget->parentWidget()); if (window) { QList<QToolBar *> toolBars = window->findChildren<QToolBar *>(); foreach (QToolBar *toolBar, toolBars) { if (window->toolBarArea(toolBar) == Qt::TopToolBarArea) { if (!toolBar->isFloating()) { printf("has top toolbar\n"); return 2; } } } } } #endif } return 0; default: break; } while (setting->label) { if (setting->id == int(hint)) { break; } ++setting; } if (setting->label) { value = setting->value; switch (setting->type) { case StyleSetting::Parent: value = ParentStyle::styleHint(hint, option, widget, returnData); break; case StyleSetting::Bool: value = setting->value != 0; break; case StyleSetting::Char: value = QString(QChar(setting->value)); break; case StyleSetting::Color: value = QChar('#', 0) + QString::number(value.toInt() - qRgba(0, 0, 0, 255), 16); break; } } else { value = ParentStyle::styleHint(hint, option, widget, returnData); setting = 0; } #if 1 if (setting && d->settings && setting->type != StyleSetting::Parent && !d->settings->contains(QString::fromAscii(setting->label))) { d->settings->setValue(QString::fromAscii(setting->label), value); } #endif if (setting) { if (d->settings) { value = d->settings->value(QString::fromAscii(setting->label), value); } switch (setting->type) { case StyleSetting::Color: value = qRgba(0, 0, 0, 255) + QLocale::c().toInt(value.toString().mid(1), 0, 16); break; case StyleSetting::Bool: value = value.toBool(); break; case StyleSetting::Char: QString s = value.toString(); if (s.size() == 1) { return s.at(0).unicode(); } return setting->value; } } return value.toInt(); } /*-----------------------------------------------------------------------*/ void paintNothing(QPainter */*painter*/, const QStyleOption */*option*/) { // } void paintDefault(QPainter */*painter*/, const QStyleOption */*option*/) { // } /*-----------------------------------------------------------------------*/ void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole); void paintPushButtonBevel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole fgrole, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintTabWidgetFrame(QPainter *painter, const QStyleOptionTabWidgetFrame *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget); void paintIndicatorCheckBox(QPainter *painter, const QStyleOptionButton *option); void paintIndicatorRadioButton(QPainter *painter, const QStyleOptionButton *option); void paintIndicatorSpinDown(QPainter *painter, const QStyleOption *option); void paintIndicatorSpinUp(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowDown(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowLeft(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowRight(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowUp(QPainter *painter, const QStyleOption *option); void paintHeaderSortIndicator(QPainter *painter, const QStyleOptionHeader *option); void paintStyledFrame(QPainter *painter, const QStyleOptionFrame *frame, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintFrameLineEdit(QPainter *painter, const QStyleOptionFrame *frame); void paintPanelLineEdit(QPainter *painter, const QStyleOptionFrame *frame, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget); void paintFrameDockWidget(QPainter *painter, const QStyleOptionFrame *frame); void paintFrameWindow(QPainter *painter, const QStyleOptionFrame *frame); void paintToolBarSeparator(QPainter *painter, const QStyleOptionToolBar *option); void paintToolBarHandle(QPainter *painter, const QStyleOptionToolBar *option); void paintScrollArea(QPainter *painter, const QStyleOption *option); void paintPanelToolBar(QPainter *painter, const QStyleOptionToolBar *option); void paintIndicatorMenuCheckMark(QPainter *painter, const QStyleOptionMenuItem *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintFrameGroupBox(QPainter *painter, const QStyleOptionFrame *option); void paintFrameFocusRect(QPainter *painter, const QStyleOptionFocusRect *option); void paintPanelButtonTool(QPainter *painter, const QStyleOption *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintSizeGrip(QPainter *painter, const QStyleOptionSizeGrip *option); void paintScrollAreaCorner(QPainter *painter, const QStyleOption *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void paintPanelItemViewItem(QPainter *painter, const QStyleOptionViewItemV4 *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); #endif void paintMenuBarEmptyArea(QPainter *painter, const QStyleOption *option); void paintPanelMenuBar(QPainter *painter, const QStyleOptionFrame *frame); void paintMenuBarItem(QPainter *painter, const QStyleOptionMenuItem *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintFrameMenu(QPainter *painter, const QStyleOptionFrame *frame); void paintMenuItem(QPainter *painter, const QStyleOptionMenuItem *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintTabBarTabShape(QPainter *painter, const QStyleOptionTab *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintTabBarTabLabel(QPainter *painter, const QStyleOptionTab *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintFrameTabBarBase(QPainter *painter, const QStyleOptionTabBarBase *option); void paintToolBoxTabShape(QPainter *painter, const QStyleOptionToolBoxV2 *option); void paintHeaderEmptyArea(QPainter *painter, const QStyleOption *option); void paintHeaderSection(QPainter *painter, const QStyleOptionHeader *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintHeaderLabel(QPainter *painter, const QStyleOptionHeader *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintIndicatorBranch(QPainter *painter, const QStyleOption *option); void paintScrollBarSlider(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarAddLine(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarSubLine(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarPage(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole bgrole); void paintProgressBarGroove(QPainter *painter, const QStyleOptionProgressBar *option); void paintProgressBarContents(QPainter *painter, const QStyleOptionProgressBar *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintProgressBarLabel(QPainter *painter, const QStyleOptionProgressBarV2 *option); void paintSplitter(QPainter *painter, const QStyleOption *option); void paintDockWidgetTitle(QPainter *painter, const QStyleOptionDockWidget *option, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintRubberBand(QPainter *paint, const QStyleOptionRubberBand *option); void paintSpinBox(QPainter *painter, const QStyleOptionSpinBox *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintComboBox(QPainter *painter, const QStyleOptionComboBox *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintComboBoxLabel(QPainter *painter, const QStyleOptionComboBox *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintDial(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintSlider(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintScrollBar(QPainter *painter, const QStyleOptionSlider *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); //void paintGroupBox(QPainter *painter, const QStyleOptionGroupBox *option); void paintTitleBar(QPainter *painter, const QStyleOptionTitleBar *option, QPalette::ColorRole /*bgrole*/, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); void paintToolButton(QPainter *painter, const QStyleOptionToolButton *option, QPalette::ColorRole bgrole, QPalette::ColorRole /*fgrole*/, void */*data*/, int /*id*/, const QWidget *widget, const QStyle *style); /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::readSettings(const QSettings &s) { animateProgressBars = s.value(QString::fromAscii("ProgressBar/AnimateProgressBars"), true).toBool(); allowScrollBarSliderToCoverArrows = s.value(QString::fromAscii("ScrollBar/AllowScrollBarSliderToCoverArrows"), true).toBool(); hideShortcutUnderlines = s.value(QString::fromAscii("General/HideShortcutUnderlines"), true).toBool(); } int SkulptureStyle::skulpturePrivateMethod(SkulptureStyle::SkulpturePrivateMethod id, void *data) { switch (id) { case SPM_SupportedMethods: return SPM_SetSettingsFileName; case SPM_SetSettingsFileName: { SkMethodDataSetSettingsFileName *md = (SkMethodDataSetSettingsFileName *) data; if (md && md->version >= 1) { QSettings s(md->fileName, QSettings::IniFormat); if (s.status() == QSettings::NoError) { d->readSettings(s); return 1; } } } return 0; default: break; } return 0; } /*-----------------------------------------------------------------------*/ SkulptureStyle::Private::Private() { init(); } SkulptureStyle::Private::~Private() { delete shortcut_handler; delete settings; QList<int> keys = draw_hash.keys(); for (int i=0; i<keys.size(); i++) delete draw_hash.take(keys.value(i)); } void SkulptureStyle::Private::register_draw(DrawElement type, int which, drawElementFunc *func, int option_type, void *data, int id) { DrawElementEntry *e = new DrawElementEntry; if (e) { e->type = option_type; e->func = func; e->id = id; e->data = data; draw_hash.insert(type + which, e); } } void SkulptureStyle::Private::init() { shortcut_handler = new ShortcutHandler(this); timer = 0; updatingShadows = false; #if 0 settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, QString::fromUtf8("SkulptureStyle"), QString::fromUtf8("")); #else settings = 0; #endif QSettings s(QSettings::IniFormat, QSettings::UserScope, QString::fromUtf8("SkulptureStyle"), QString::fromUtf8("")); readSettings(s); #define primitive(p, f, so) register_draw(DE_Primitive, QStyle::PE_ ## p, (drawElementFunc *) paint ## f, QStyleOption::SO_ ## so) /* PRIMITIVE ELEMENT */ // Qt 3.x compatibility // primitive(Q3CheckListController, Default, Default); // primitive(Q3CheckListExclusiveIndicator, Default, Default); // primitive(Q3CheckListIndicator, Default, Default); primitive(Q3DockWindowSeparator, Nothing, DockWidget); // primitive(Q3Separator, Default, Default); // Qt 4.0 Frames primitive(Frame, StyledFrame, Frame); primitive(FrameDefaultButton, Nothing, Button); primitive(FrameDockWidget, FrameDockWidget, Frame); primitive(FrameFocusRect, FrameFocusRect, FocusRect); primitive(FrameGroupBox, FrameGroupBox, Frame); primitive(FrameLineEdit, FrameLineEdit, Frame); /// Qt 4.3 calls FrameMenu with SO_ToolBar for a toolbar primitive(FrameMenu, FrameMenu, Default); primitive(FrameStatusBar, Nothing, Default); primitive(FrameTabWidget, TabWidgetFrame, TabWidgetFrame); primitive(FrameWindow, FrameWindow, Frame); // primitive(FrameButtonBevel, FrameButtonBevel, Frame); // primitive(FrameButtonTool, FrameButtonTool, Frame); primitive(FrameTabBarBase, FrameTabBarBase, TabBarBase); // Qt 4.0 Panels register_draw(DE_Primitive, QStyle::PE_PanelButtonCommand, (drawElementFunc *) paintCommandButtonPanel, QStyleOption::SO_Button); register_draw(DE_Primitive, QStyle::PE_PanelButtonBevel, (drawElementFunc *) paintPanelButtonTool, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_PanelButtonTool, (drawElementFunc *) paintPanelButtonTool, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_PanelMenuBar, (drawElementFunc *) paintPanelMenuBar, QStyleOption::SO_Frame); register_draw(DE_Primitive, QStyle::PE_PanelToolBar, (drawElementFunc *) paintPanelToolBar, QStyleOption::SO_Frame); register_draw(DE_Primitive, QStyle::PE_PanelLineEdit, (drawElementFunc *) paintPanelLineEdit, QStyleOption::SO_Frame); // Qt 4.0 Indicators register_draw(DE_Primitive, QStyle::PE_IndicatorArrowDown, (drawElementFunc *) paintIndicatorArrowDown, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorArrowLeft, (drawElementFunc *) paintIndicatorArrowLeft, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorArrowRight, (drawElementFunc *) paintIndicatorArrowRight, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorArrowUp, (drawElementFunc *) paintIndicatorArrowUp, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorBranch, (drawElementFunc *) paintIndicatorBranch, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorButtonDropDown, (drawElementFunc *) paintPanelButtonTool, QStyleOption::SO_Default); // register_draw(DE_Primitive, QStyle::PE_IndicatorViewItemCheck, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Primitive, QStyle::PE_IndicatorCheckBox, (drawElementFunc *) paintIndicatorCheckBox, QStyleOption::SO_Button); register_draw(DE_Primitive, QStyle::PE_IndicatorDockWidgetResizeHandle, (drawElementFunc *) paintSplitter, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorHeaderArrow, (drawElementFunc *) paintHeaderSortIndicator, QStyleOption::SO_Header); register_draw(DE_Primitive, QStyle::PE_IndicatorMenuCheckMark, (drawElementFunc *) paintIndicatorMenuCheckMark, QStyleOption::SO_MenuItem); // register_draw(DE_Primitive, QStyle::PE_IndicatorProgressChunk, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Primitive, QStyle::PE_IndicatorRadioButton, (drawElementFunc *) paintIndicatorRadioButton, QStyleOption::SO_Button); register_draw(DE_Primitive, QStyle::PE_IndicatorSpinDown, (drawElementFunc *) paintIndicatorSpinDown, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorSpinMinus, (drawElementFunc *) paintIndicatorSpinDown, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorSpinPlus, (drawElementFunc *) paintIndicatorSpinUp, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorSpinUp, (drawElementFunc *) paintIndicatorSpinUp, QStyleOption::SO_Default); register_draw(DE_Primitive, QStyle::PE_IndicatorToolBarHandle, (drawElementFunc *) paintToolBarHandle, QStyleOption::SO_ToolBar); register_draw(DE_Primitive, QStyle::PE_IndicatorToolBarSeparator, (drawElementFunc *) paintToolBarSeparator); // ### which are Qt 4.1 / Qt 4.2 additions ? // register_draw(DE_Primitive, QStyle::PE_PanelTipLabel, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Primitive, QStyle::PE_IndicatorTabTear, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Primitive, QStyle::PE_PanelScrollAreaCorner, (drawElementFunc *) paintScrollAreaCorner); // register_draw(DE_Primitive, QStyle::PE_Widget, (drawElementFunc *) paint, QStyleOption::SO_); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) // Qt 4.3 additions // register_draw(DE_Primitive, QStyle::PE_IndicatorColumnViewArrow, (drawElementFunc *) paint, QStyleOption::SO_); #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) // Qt 4.4 additions register_draw(DE_Primitive, QStyle::PE_PanelItemViewItem, (drawElementFunc *) paintPanelItemViewItem, QStyleOption::SO_ViewItem); // register_draw(DE_Primitive, QStyle::PE_PanelStatusBar, (drawElementFunc *) paint, QStyleOption::SO_); #endif /* CONTROL ELEMENT */ // Qt 4.0 Buttons // register_draw(DE_Element, QStyle::CE_PushButton, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Element, QStyle::CE_PushButtonBevel, (drawElementFunc *) paintPushButtonBevel, QStyleOption::SO_Button); // register_draw(DE_Element, QStyle::CE_PushButtonLabel, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_CheckBox, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_CheckBoxLabel, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_RadioButton, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_RadioButtonLabel, (drawElementFunc *) paint, QStyleOption::SO_); // Qt 4.0 Controls // register_draw(DE_Element, QStyle::CE_TabBarTab, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Element, QStyle::CE_TabBarTabShape, (drawElementFunc *) paintTabBarTabShape, QStyleOption::SO_Tab); register_draw(DE_Element, QStyle::CE_TabBarTabLabel, (drawElementFunc *) paintTabBarTabLabel, QStyleOption::SO_Tab); // register_draw(DE_Element, QStyle::CE_ProgressBar, (drawElementFunc *) paint, QStyleOption::SO_ProgressBar); register_draw(DE_Element, QStyle::CE_ProgressBarGroove, (drawElementFunc *) paintProgressBarGroove, QStyleOption::SO_ProgressBar); register_draw(DE_Element, QStyle::CE_ProgressBarContents, (drawElementFunc *) paintProgressBarContents, QStyleOption::SO_ProgressBar); register_draw(DE_Element, QStyle::CE_ProgressBarLabel, (drawElementFunc *) paintProgressBarLabel, QStyleOption::SO_ProgressBar); // Qt 4.0 Menus /*/*/ register_draw(DE_Element, QStyle::CE_MenuItem, (drawElementFunc *) paintMenuItem, QStyleOption::SO_MenuItem); // register_draw(DE_Element, QStyle::CE_MenuScroller, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_MenuVMargin, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_MenuHMargin, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_MenuTearoff, (drawElementFunc *) paint, QStyleOption::SO_); /*/*/ register_draw(DE_Element, QStyle::CE_MenuEmptyArea, (drawElementFunc *) paintNothing); /*/*/ register_draw(DE_Element, QStyle::CE_MenuBarItem, (drawElementFunc *) paintMenuBarItem, QStyleOption::SO_MenuItem); register_draw(DE_Element, QStyle::CE_MenuBarEmptyArea, (drawElementFunc *) paintMenuBarEmptyArea); // Qt 4.0 more Controls // register_draw(DE_Element, QStyle::CE_ToolButtonLabel, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_Header, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Element, QStyle::CE_HeaderSection, (drawElementFunc *) paintHeaderSection, QStyleOption::SO_Header); register_draw(DE_Element, QStyle::CE_HeaderLabel, (drawElementFunc *) paintHeaderLabel, QStyleOption::SO_Header); // register_draw(DE_Element, QStyle::CE_Q3DockWindowEmptyArea, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_ToolBoxTab, (drawElementFunc *) paint, QStyleOption::SO_ToolBox); register_draw(DE_Element, QStyle::CE_SizeGrip, (drawElementFunc *) paintSizeGrip, QStyleOption::SO_SizeGrip); register_draw(DE_Element, QStyle::CE_Splitter, (drawElementFunc *) paintSplitter); register_draw(DE_Element, QStyle::CE_RubberBand, (drawElementFunc *) paintRubberBand, QStyleOption::SO_RubberBand); register_draw(DE_Element, QStyle::CE_DockWidgetTitle, (drawElementFunc *) paintDockWidgetTitle, QStyleOption::SO_DockWidget); // Qt 4.0 ScrollBar register_draw(DE_Element, QStyle::CE_ScrollBarAddLine, (drawElementFunc *) paintScrollBarAddLine, QStyleOption::SO_Slider); register_draw(DE_Element, QStyle::CE_ScrollBarSubLine, (drawElementFunc *) paintScrollBarSubLine, QStyleOption::SO_Slider); register_draw(DE_Element, QStyle::CE_ScrollBarAddPage, (drawElementFunc *) paintScrollBarPage, QStyleOption::SO_Slider); register_draw(DE_Element, QStyle::CE_ScrollBarSubPage, (drawElementFunc *) paintScrollBarPage, QStyleOption::SO_Slider); register_draw(DE_Element, QStyle::CE_ScrollBarSlider, (drawElementFunc *) paintScrollBarSlider, QStyleOption::SO_Slider); // register_draw(DE_Element, QStyle::CE_ScrollBarFirst, (drawElementFunc *) paint, QStyleOption::SO_); // register_draw(DE_Element, QStyle::CE_ScrollBarLast, (drawElementFunc *) paint, QStyleOption::SO_); // Qt 4.0 even more Controls // register_draw(DE_Element, QStyle::CE_FocusFrame, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Element, QStyle::CE_ComboBoxLabel, (drawElementFunc *) paintComboBoxLabel, QStyleOption::SO_ComboBox); register_draw(DE_Element, QStyle::CE_ToolBar, (drawElementFunc *) paintPanelToolBar, QStyleOption::SO_ToolBar); register_draw(DE_Element, QStyle::CE_ToolBoxTabShape, (drawElementFunc *) paintToolBoxTabShape, QStyleOption::SO_ToolBox); // register_draw(DE_Element, QStyle::CE_ToolBoxTabLabel, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Element, QStyle::CE_HeaderEmptyArea, (drawElementFunc *) paintHeaderEmptyArea, QStyleOption::SO_Default); // Qt 4.3 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) register_draw(DE_Element, QStyle::CE_ColumnViewGrip, (drawElementFunc *) paintSplitter, QStyleOption::SO_Default); #endif // Qt 4.4 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) // register_draw(DE_Element, QStyle::CE_ItemViewItem, (drawElementFunc *) paint, QStyleOption::SO_); #endif // register_draw(DE_Element, QStyle::CE_, (drawElementFunc *) paint, QStyleOption::SO_); /* COMPLEX CONTROL */ /** * must override QCommonStyle, because of: * * ComboBox: not handled * SpinBox: qDrawWinPanel * Dial: ugly rendering * Slider: only draws the tickmarks * Q3ListView: only draws the background * * must override QWindowsStyle, because of: * * ComboBox: qDrawWinButton * Slider: fixed slider * SpinBox: qDrawWinPanel * **/ // Qt 4.0 Controls register_draw(DE_Complex, QStyle::CC_SpinBox, (drawElementFunc *) paintSpinBox, QStyleOption::SO_SpinBox); register_draw(DE_Complex, QStyle::CC_ComboBox, (drawElementFunc *) paintComboBox, QStyleOption::SO_ComboBox); register_draw(DE_Complex, QStyle::CC_ScrollBar, (drawElementFunc *) paintScrollBar, QStyleOption::SO_Slider); register_draw(DE_Complex, QStyle::CC_Slider, (drawElementFunc *) paintSlider, QStyleOption::SO_Slider); register_draw(DE_Complex, QStyle::CC_ToolButton, (drawElementFunc *) paintToolButton, QStyleOption::SO_ToolButton); register_draw(DE_Complex, QStyle::CC_TitleBar, (drawElementFunc *) paintTitleBar, QStyleOption::SO_TitleBar); // register_draw(DE_Complex, QStyle::CC_Q3ListView, (drawElementFunc *) paint, QStyleOption::SO_); register_draw(DE_Complex, QStyle::CC_Dial, (drawElementFunc *) paintDial, QStyleOption::SO_Slider); // register_draw(DE_Complex, QStyle::CC_GroupBox, (drawElementFunc *) paintGroupBox, QStyleOption::SO_GroupBox); // Qt 4.3 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) // register_draw(DE_Complex, QStyle::CC_MdiControls, (drawElementFunc *) paint, QStyleOption::SO_); #endif // register_draw(DE_Complex, QStyle::CC_, (drawElementFunc *) paint, QStyleOption::SO_); } /*-----------------------------------------------------------------------*/ //#include "skulpture_p.moc" �����������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture/skulpture.h���������������������������������������������0000664�0000000�0000000�00000006346�11770671653�0023431�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * skulpture.h * */ #ifndef SKULPTURE_H #define SKULPTURE_H 1 /*-----------------------------------------------------------------------*/ #include <QtGui/QPlastiqueStyle> class SkulptureStyle : public QPlastiqueStyle { Q_OBJECT typedef QPlastiqueStyle ParentStyle; // typedef QCommonStyle ParentStyle; public: SkulptureStyle(); virtual ~SkulptureStyle(); QPalette standardPalette() const; void polish(QPalette &palette); void polish(QWidget *widget); void unpolish(QWidget *widget); void polish(QApplication *application); void unpolish(QApplication *application); void drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const; void drawItemText(QPainter * painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; QRect itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap & pixmap) const; QRect itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text ) const; int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const; QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const; QSize sizeFromContents (ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const; QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const; SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const; QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const; QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option, const QWidget *widget) const; void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const; void drawControl(ControlElement control, const QStyleOption *option, QPainter *painter, const QWidget *widget) const; void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const; public: // internal, reserved for future use enum SkulpturePrivateMethod { SPM_SupportedMethods = 0, SPM_SetSettingsFileName = 1, }; public Q_SLOTS: int skulpturePrivateMethod(SkulpturePrivateMethod id, void *data = 0); protected Q_SLOTS: //#if (QT_VERSION >= QT_VERSION_CHECK(4, 1, 0)) QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; //#endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) int layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const; #endif private: void init(); class Private; Private * const d; }; /*-----------------------------------------------------------------------*/ #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture/skulpture_p.h�������������������������������������������0000664�0000000�0000000�00000012622�11770671653�0023742�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * skulpture_p.h * */ #ifndef SKULPTURE_PRIVATE_H #define SKULPTURE_PRIVATE_H 1 /*-----------------------------------------------------------------------*/ #include <QtCore/QObject> class QWidget; class ShortcutHandler : public QObject { Q_OBJECT public: explicit ShortcutHandler(QObject *parent = 0); virtual ~ShortcutHandler(); bool underlineShortcut(const QWidget *widget) const; protected: bool eventFilter(QObject *watched, QEvent *event); private: void init() { } private: QList<QWidget *> alt_pressed; }; /*-----------------------------------------------------------------------*/ #include "skulpture.h" #include <QtCore/QSignalMapper> #include <QtCore/QHash> #include <QtCore/QSet> #include <QtGui/QStyleOption> class QPainter; class QSettings; class QTextEdit; class QPlainTextEdit; class QAbstractScrollArea; class SkulptureStyle::Private : public QObject { Q_OBJECT public: Private(); ~Private(); SkulptureStyle *q; void setAnimated(QWidget *widget, bool animated); bool isAnimated(QWidget *widget); private: QSet<QWidget *> animations; int timer; public: void readSettings(const QSettings &s); QSettings *settings; bool animateProgressBars; bool allowScrollBarSliderToCoverArrows; bool hideShortcutUnderlines; enum Settings { Style, Metric, Icon, }; enum DrawElement { DE_Primitive = 0xF1000100, DE_Element = 0xF2000200, DE_Complex = 0xF3000300 }; typedef void (drawElementFunc)( QPainter *painter, const QStyleOption *option, int bgrole, int fgrole, // not in QStyleOption void *data, int id, const QWidget *widget, const QStyle *style ); struct DrawElementEntry { int type; drawElementFunc *func; int id; void *data; }; void register_settings(const char *label, ...); QSignalMapper mapper; QHash<int, DrawElementEntry *> draw_hash; ShortcutHandler *shortcut_handler; void register_draw(DrawElement type, int which, drawElementFunc *func, int option_type = QStyleOption::SO_Default, void *data = 0, int id = 0); void installFrameShadow(QWidget *widget); void removeFrameShadow(QWidget *widget); void updateFrameShadow(QWidget *widget); void updateTextEditMargins(QTextEdit *edit); void highlightCurrentEditLine(QAbstractScrollArea *edit, const QRect &cursorRect); void highlightCurrentEditLine(QTextEdit *edit); void highlightCurrentEditLine(QPlainTextEdit *edit); QAbstractScrollArea *oldEdit; int oldCursorTop; int oldCursorWidth; int oldCursorHeight; int oldHeight; QPalette oldPalette; bool updatingShadows; protected: void timerEvent(QTimerEvent *event); bool eventFilter(QObject *watched, QEvent *event); protected Q_SLOTS: void textEditSourceChanged(QWidget *); void updateToolBarOrientation(Qt::Orientation); private: void init(); }; /*-----------------------------------------------------------------------*/ class FrameShadow : public QWidget { Q_OBJECT public: enum ShadowArea { Left, Top, Right, Bottom }; public: explicit FrameShadow(QWidget *parent = 0); explicit FrameShadow(ShadowArea area, QWidget *parent = 0); virtual ~FrameShadow(); void setShadowArea(ShadowArea area) { area_ = area; } ShadowArea shadowArea() const { return area_; } void updateGeometry(); protected: bool event(QEvent *e); void paintEvent(QPaintEvent *); private: void init(); private: ShadowArea area_; }; /*-----------------------------------------------------------------------*/ class WidgetShadow : public QWidget { Q_OBJECT public: explicit WidgetShadow(QWidget *parent = 0); void setWidget(QWidget *w) { widget_ = w; } QWidget *widget() const { return widget_; } void updateGeometry(); void updateZOrder(); public: bool event(QEvent *e); private: void init(); private: QWidget *widget_; }; /*-----------------------------------------------------------------------*/ // ### Remove for 4.4 #if (QT_VERSION < QT_VERSION_CHECK(4, 4, 0)) #define PM_TabBar_ScrollButtonOverlap (QStyle::PixelMetric(int(PM_LayoutVerticalSpacing) + 1)) #define PM_TextCursorWidth (QStyle::PixelMetric(int(PM_LayoutVerticalSpacing) + 2)) #endif // ### does not work //#if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) //#if QT_PACKAGEDATE_STR < "2008-03" //#error If you build with Qt 4.4.0, you have to use a more recent version. //#endif //#endif /*-----------------------------------------------------------------------*/ struct SkMethodData { int version; }; struct SkMethodDataSetSettingsFileName : public SkMethodData { // in version 1 QString fileName; }; /*-----------------------------------------------------------------------*/ QColor shaded_color(const QColor &color, int shade); QColor blend_color(const QColor &c0, const QColor &c1, qreal blend); QGradient path_edge_gradient(const QRectF &rect, const QStyleOption *option, const QPainterPath &path, const QColor &color2, const QColor &color1); void paintThinFrame(QPainter *painter, const QRect &rect, const QPalette &palette, int dark, int light, QPalette::ColorRole bgrole = QPalette::Window); enum RecessedFrame { RF_Small, RF_Large, RF_None }; void paintRecessedFrame(QPainter *painter, const QRect &rect, const QPalette &palette, enum RecessedFrame rf, QPalette::ColorRole bgrole = QPalette::Window); void paintRecessedFrameShadow(QPainter *painter, const QRect &rect, enum RecessedFrame rf); /*-----------------------------------------------------------------------*/ #endif ��������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0021355�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/sk_effects.h������������������������������������������0000664�0000000�0000000�00000003146�11770671653�0023646�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * sk_effects.h - Classical Three-Dimensional Artwork for Qt 4 * * Copyright (c) 2008 Christoph Feck <christoph@maxiom.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef SKULPTURE_EFFECTS_H #define SKULPTURE_EFFECTS_H 1 /*-----------------------------------------------------------------------*/ #include <QtGui/QRgb> #define F_SHIFT 11 void filterRgbPixels(QRgb *rgb, int w, int h, int stride, int f); /*-----------------------------------------------------------------------*/ #include <QtGui/QImage> #include <cmath> static inline void filterImage(QImage &im, double f) { filterRgbPixels((QRgb *) im.bits(), im.width(), im.height(), im.bytesPerLine() / sizeof(QRgb), int((1 << F_SHIFT) * f)); } static inline void blurImage(QImage &im, int radius) { if (radius >= 1) { double f = 1.0 - exp(-2.3 / (radius + 1.0)); filterImage(im, f); } } /*-----------------------------------------------------------------------*/ #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/sk_factory.h������������������������������������������0000664�0000000�0000000�00000010547�11770671653�0023701�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * skulpture_factory.h - Classical Three-Dimensional Artwork for Qt 4 * * Copyright (c) 2008 Christoph Feck <christoph@maxiom.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef SKULPTURE_FACTORY_H #define SKULPTURE_FACTORY_H 1 /*-----------------------------------------------------------------------*/ #include <QtGui/QPainterPath> #include <QtGui/QLinearGradient> #include <QtGui/QColor> class AbstractFactory { public: typedef qint8 Code; typedef const Code *Description; static const int MinVar = 1; static const int MaxVar = 9; public: enum OpCode { /* Values */ MinVal = -100, MaxVal = 100, GetVar = 100, Add = 110, Sub, Mul, Div, Min, Max, Mix, Cond, /* Colors */ RGB = 0, RGBA, RGBAf, Blend, Palette, Shade, Darker, Lighter, /* Conditions */ EQ = 0, NE, LT, GE, GT, LE, Or, And, Not, FactoryVersion, OptionVersion, OptionType, OptionComplex, OptionState, OptionRTL, /* Instructions */ SetVar = 100, /* Shape */ Move = 121, Line, Quad, Cubic, Close, /* Gradient */ ColorAt = 121, /* Frame */ /* Panel */ /* Primitive */ /* Control */ Begin = 118, Else = 119, End = 120, If = 126, While = 127, Nop = 0 }; protected: AbstractFactory() : p(0), opt(0) { } virtual ~AbstractFactory() { } protected: void setDescription(Description description) { p = description; } void setOption(const QStyleOption *option) { opt = option; } void setVar(int n, qreal value) { var[n] = value; } qreal getVar(int n) const { return var[n]; } void create(); protected: virtual void QT_FASTCALL executeCode(Code code); virtual void QT_FASTCALL skipCode(Code code); virtual int QT_FASTCALL version() { return 0; } protected: qreal QT_FASTCALL evalValue(); QColor QT_FASTCALL evalColor(); void QT_FASTCALL skipValue(); void QT_FASTCALL skipColor(); private: bool QT_FASTCALL evalCondition(); void QT_FASTCALL skipCondition(); private: Description p; const QStyleOption *opt; qreal var[MaxVar + 1]; }; /*-----------------------------------------------------------------------*/ class ShapeFactory : public AbstractFactory { public: static QPainterPath createShape(Description description, qreal var[]); static QPainterPath createShape(Description description); protected: ShapeFactory() : AbstractFactory() { } virtual ~ShapeFactory() { } void clear() { path = QPainterPath(); } const QPainterPath &getPath() const { return path; } protected: virtual void QT_FASTCALL executeCode(Code code); virtual void QT_FASTCALL skipCode(Code code); private: QPainterPath path; }; #define Pvalue(v) int(100 * (v) + 0.5) #define Pmove(x,y) ShapeFactory::Move, Pvalue(x), Pvalue(y) #define Pline(x,y) ShapeFactory::Line, Pvalue(x), Pvalue(y) #define Pquad(x,y,a,b) ShapeFactory::Quad, Pvalue(x), Pvalue(y), Pvalue(a), Pvalue(b) #define Pcubic(x,y,a,b,c,d) ShapeFactory::Cubic, Pvalue(x), Pvalue(y), Pvalue(a), Pvalue(b), Pvalue(c), Pvalue(d) #define Pend ShapeFactory::Close, ShapeFactory::End #define Pclose ShapeFactory::Close /*-----------------------------------------------------------------------*/ class GradientFactory : public AbstractFactory { public: static QGradient createGradient(Description description, qreal var[]); static QGradient createGradient(Description description); protected: GradientFactory() : AbstractFactory() { } virtual ~GradientFactory() { } protected: void clear() { gradient.setStops(QGradientStops()); } const QGradient &getGradient() const { return gradient; } protected: virtual void QT_FASTCALL executeCode(Code code); virtual void QT_FASTCALL skipCode(Code code); private: QGradient gradient; }; /*-----------------------------------------------------------------------*/ #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/skulpture.cpp�����������������������������������������0000664�0000000�0000000�00001406755�11770671653�0024141�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Skulpture - Classical Three-Dimensional Artwork for Qt 4 * * Copyright (c) 2007-2009 Christoph Feck <christoph@maxiom.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ // ### This file is a mess #include "skulpture_p.h" #include <QtGui/QLayout> #include <QtGui/QLCDNumber> #include <QtGui/QPainter> #include <QtGui/QLabel> #include <QtGui/QProgressBar> #include <QtGui/QScrollBar> #include <QtGui/QIcon> #include <QtGui/QStatusBar> #include <QtGui/QAbstractScrollArea> #include <QtGui/QScrollArea> #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) #include <QtGui/QMdiArea> #include <QtGui/QMdiSubWindow> #endif #include <QtGui/QMenu> #include <QtGui/QMenuBar> #include <QtGui/QWorkspace> #include <QtGui/QHeaderView> #include <QtGui/QListView> #include <QtGui/QTreeView> #include <QtGui/QTableView> #include <QtGui/QMainWindow> #include <QtGui/QSplitter> #include <QtGui/QPainterPath> #include <QtGui/QGroupBox> #include <QtGui/QDockWidget> #include <QtGui/QToolButton> #include <QtGui/QTextEdit> #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #include <QtGui/QPlainTextEdit> #include <QtGui/QFormLayout> #endif #include <QtGui/QStackedLayout> #include <QtGui/QGridLayout> #include <QtGui/QBoxLayout> #include <QtGui/QComboBox> #include <QtGui/QDial> #include <QtGui/QRadioButton> #include <QtGui/QCheckBox> #include <QtGui/QToolBox> #include <QtGui/QToolBar> #include <QtGui/QApplication> #include <QtGui/QPushButton> #include <QtGui/QLineEdit> #include <QtGui/QDialog> #include <QtCore/QFile> #include <QtCore/QTextStream> #include <QtGui/QKeyEvent> #include <QtCore/QList> #include <QtCore/QTimer> #include <cstdio> #include <QtCore/QDebug> /*-----------------------------------------------------------------------*/ #include <QtGui/QStylePlugin> class SkulptureStylePlugin : public QStylePlugin { public: QStringList keys() const { return QStringList(QLatin1String("Skulpture")); } QStyle *create(const QString &key) { if (key.toLower() == QLatin1String("skulpture")) { return new SkulptureStyle; } return 0; } }; Q_EXPORT_PLUGIN2(skulpture, SkulptureStylePlugin) /*-----------------------------------------------------------------------*/ SkulptureStyle::SkulptureStyle() : d(new Private) { d->q = this; } SkulptureStyle::~SkulptureStyle() { delete d; } /*-----------------------------------------------------------------------*/ void SkulptureStyle::polish(QApplication *application) { // ParentStyle::polish(application); // return; #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) QString recursionCheck = QLatin1String("\n/* -skulpture-recursion-check- */\n"); if (!d->styleSheetFileName.isEmpty()) { QString oldStyle = application->styleSheet(); if (!oldStyle.contains(recursionCheck)) { QFile file(d->styleSheetFileName); if (file.open(QIODevice::ReadOnly)) { QTextStream stream(&file); QString newStyle = stream.readAll(); application->setStyleSheet(newStyle + recursionCheck + oldStyle); } } } #endif ParentStyle::polish(application); application->installEventFilter(d->shortcut_handler); #if 0 QPalette palette; polish(palette); application->setPalette(palette); #endif // if (application->inherits("KApplication")) { // qDebug() << "KApplication is a" << application->metaObject()->className() << "(" << "object name:" << application->objectName() << ")"; // } // QFontMetrics fm = QFontMetrics(QFont()); // printf("h:%d, s:%d, xh:%d, xb:%d, Xb:%d, Xyb: %d\n", fm.height(), fm.lineSpacing(), fm.xHeight(), fm.boundingRect(QChar('x', 0)).height(), fm.boundingRect(QChar('X', 0)).height(), fm.boundingRect(QLatin1String("Xy")).height()); } void SkulptureStyle::unpolish(QApplication *application) { application->removeEventFilter(d->shortcut_handler); ParentStyle::unpolish(application); } /*-----------------------------------------------------------------------*/ enum SidebarViewMode { DefaultSidebar, TransparentSidebar }; static void polishSidebarView(QAbstractItemView *view, SidebarViewMode viewMode) { QWidget *viewport = view->viewport(); QPalette palette = view->palette(); if (viewMode == TransparentSidebar) { if (viewport->autoFillBackground()) { viewport->setAutoFillBackground(false); QPalette::ColorRole textRole = viewport->foregroundRole(); if (textRole != QPalette::WindowText) { palette.setBrush(QPalette::Active, textRole, palette.brush(QPalette::Active, QPalette::WindowText)); palette.setBrush(QPalette::Inactive, textRole, palette.brush(QPalette::Inactive, QPalette::WindowText)); palette.setBrush(QPalette::Disabled, textRole, palette.brush(QPalette::Disabled, QPalette::WindowText)); viewport->setPalette(palette); } } view->setFrameStyle(QFrame::StyledPanel | QFrame::Plain); } else { if (viewport->autoFillBackground()) { palette.setBrush(QPalette::Active, QPalette::Window, palette.brush(QPalette::Active, QPalette::Base)); palette.setBrush(QPalette::Inactive, QPalette::Window, palette.brush(QPalette::Inactive, QPalette::Base)); palette.setBrush(QPalette::Disabled, QPalette::Window, palette.brush(QPalette::Disabled, QPalette::Base)); } else { viewport->setAutoFillBackground(true); } view->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); viewport->setPalette(palette); } } /*-----------------------------------------------------------------------*/ #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) static WidgetShadow *findShadow(QWidget *widget) { QWidget *parent = widget->parentWidget(); if (parent) { QList<WidgetShadow *> shadows = parent->findChildren<WidgetShadow *>(); Q_FOREACH (WidgetShadow *shadow, shadows) { if (shadow->widget() == widget) { return shadow; } } } return 0; } #endif void SkulptureStyle::polish(QWidget *widget) { // ParentStyle::polish(widget); // return; #if 1 //printf("polishing a \"%s\" (which is a \"%s\")\n", widget->metaObject()->className(), widget->metaObject()->superClass()->className()); #if 0 QPalette palette = widget->palette(); polish(palette); widget->setPalette(palette); #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (QMdiArea *area = qobject_cast<QMdiArea *>(widget)) { area->installEventFilter(d); } if (qobject_cast<QMdiSubWindow *>(widget)) { WidgetShadow *shadow = findShadow(widget); if (!shadow) { widget->installEventFilter(d); if (widget->parentWidget()) { WidgetShadow *shadow = new WidgetShadow(widget->parentWidget()); shadow->setWidget(widget); shadow->updateZOrder(); shadow->show(); } } } #endif #if 1 if (QLCDNumber *lcd = qobject_cast<QLCDNumber *>(widget)) { QPalette palette; palette.setColor(QPalette::Base, QColor(220, 230, 210)); palette.setColor(QPalette::WindowText, QColor(60, 60, 60)); // lcd->setPalette(palette); // lcd->installEventFilter(d); // lcd->setContentsMargins(8, 8, 8, 8); lcd->setFrameStyle(QFrame::StyledPanel | QFrame::Plain); lcd->setSegmentStyle(QLCDNumber::Flat); } #endif #if 1 if (QDialog *dialog = qobject_cast<QDialog *>(widget)) { dialog->installEventFilter(d); } #endif #if 0 if (QMainWindow *window = qobject_cast<QMainWindow *>(widget)) { window->setBackgroundRole(QPalette::Dark); } if (QDockWidget *dock = qobject_cast<QDockWidget *>(widget)) { dock->installEventFilter(d); } if (QStatusBar *bar = qobject_cast<QStatusBar *>(widget)) { bar->installEventFilter(d); } #endif if (QToolBox *toolBox = qobject_cast<QToolBox *>(widget)) { toolBox->setBackgroundRole(QPalette::Window); // toolBox->setContentsMargins(2, 2, 2, 2); // toolBox->installEventFilter(d); toolBox->layout()->setSpacing(0); } if (widget->inherits("KTitleWidget")) { // widget->setMaximumHeight(0); #if 0 QPalette palette = widget->palette(); palette.setColor(QPalette::Base, palette.color(QPalette::Window)); palette.setColor(QPalette::Text, palette.color(QPalette::WindowText)); widget->setPalette(palette); #endif } if (qobject_cast<QScrollBar *>(widget)) { widget->installEventFilter(d); } if (QFrame *frame = qobject_cast<QFrame *>(widget)) { switch (frame->frameShape()) { case QFrame::Panel: case QFrame::WinPanel: case QFrame::Box: frame->setFrameShape(QFrame::StyledPanel); break; case QFrame::HLine: case QFrame::VLine: frame->setEnabled(false); break; default: break; } if (frame->frameShadow() == QFrame::Plain && frame->backgroundRole() == QPalette::Base) { if (frame->parentWidget() && frame->parentWidget()->inherits("KTitleWidget")) { frame->setBackgroundRole(QPalette::Window); } } #if 1 if (!strcmp(widget->metaObject()->className(), "QListWidget") && widget->parentWidget() && !strcmp(widget->parentWidget()->metaObject()->className(), "Sidebar")) { //(static_cast<QAbstractItemView *>(widget))->setFrameStyle(QFrame::Plain | QFrame::StyledPanel); (static_cast<QAbstractItemView *>(widget))->setFrameStyle(QFrame::NoFrame); } if (!strcmp(widget->metaObject()->className(), "Kontact::Navigator")) { // (static_cast<QAbstractItemView *>(widget))->viewport()->setBackgroundRole(QPalette::Base); // (static_cast<QAbstractItemView *>(widget))->viewport()->setAutoFillBackground(true); (static_cast<QAbstractItemView *>(widget))->setFrameStyle(QFrame::Plain | QFrame::StyledPanel); // polishSidebarView(static_cast<QAbstractItemView *>(widget), d->transparentPlacesPanel ? TransparentSidebar : DefaultSidebar); } if (widget->inherits("SidebarTreeView")) { polishSidebarView(static_cast<QAbstractItemView *>(widget), DefaultSidebar); } if (widget->inherits("KHTMLView")) { // QPalette palette = widget->palette(); // palette.setColor(QPalette::Window, palette.color(QPalette::Base)); // ((QAbstractScrollArea *) widget)->viewport()->setPalette(palette); // printf("frame style is 0x%08x\n", ((QFrame *) widget)->frameStyle()); ((QFrame *) widget)->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); } #endif #if 1 if (widget->inherits("KFilePlacesView")) { polishSidebarView(static_cast<QAbstractItemView *>(widget), d->transparentPlacesPanel ? TransparentSidebar : DefaultSidebar); } #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) if (widget->inherits("QPlainTextEdit")) { QPlainTextEdit *edit = static_cast<QPlainTextEdit *>(widget); // QPalette palette = edit->palette(); // palette.setColor(QPalette::Window, QColor(245, 245, 245)); // edit->setPalette(palette); // edit->viewport()->setPalette(palette); edit->setBackgroundVisible(false); edit->viewport()->installEventFilter(d); edit->installEventFilter(d); widget->setAttribute(Qt::WA_Hover, true); } #endif #if 1 if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { if (!qstrcmp(widget->metaObject()->className(), "SampleEdit")) { QWidget *bg = new QWidget(widget); bg->lower(); bg->setObjectName(QLatin1String("sample_background")); bg->setGeometry(2, 2, widget->width() - 4, widget->height() - 4); bg->setAutoFillBackground(true); bg->show(); } else { d->mapper.setMapping(edit, edit); connect(edit, SIGNAL(textChanged()), &d->mapper, SLOT(map())); connect(&d->mapper, SIGNAL(mapped(QWidget *)), d, SLOT(textEditSourceChanged(QWidget *))); d->updateTextEditMargins(edit); } edit->viewport()->installEventFilter(d); edit->installEventFilter(d); widget->setAttribute(Qt::WA_Hover, true); edit->setTabChangesFocus(true); #if 0 if (QTextBrowser *browser = qobject_cast<QTextBrowser *>(widget)) { connect(browser, SIGNAL(sourceChanged()), &d->mapper, SLOT(map())); } #endif } #endif } #if 0 if (QComboBox *combo = qobject_cast<QComboBox *>(widget)) { if (!combo->isEditable()) { combo->setBackgroundRole(QPalette::Button); combo->setForegroundRole(QPalette::ButtonText); } } if (qobject_cast<QCheckBox *>(widget) || qobject_cast<QRadioButton *>(widget)) { widget->setBackgroundRole(QPalette::Window); widget->setForegroundRole(QPalette::WindowText); } #endif if (qobject_cast<QScrollBar *>(widget) || qobject_cast<QSlider *>(widget) || qobject_cast<QDial *>(widget) || qobject_cast<QLineEdit *>(widget) || qobject_cast<QAbstractSpinBox *>(widget) || qobject_cast<QHeaderView*>(widget) || qobject_cast<QTabBar *>(widget) || qobject_cast<QSplitterHandle *>(widget) || qobject_cast<QPushButton *>(widget) || qobject_cast<QComboBox *>(widget) || qobject_cast<QCheckBox *>(widget) || qobject_cast<QRadioButton *>(widget) || qobject_cast<QGroupBox *>(widget) || qobject_cast<QToolButton *>(widget)) { widget->setAttribute(Qt::WA_Hover, true); } #if 0 if (d->allowScrollBarSliderToCoverArrows && qobject_cast<QScrollBar *>(widget)) { widget->installEventFilter(d); } #endif #if 0 if (widget->inherits("Q3ProgressBar")) { widget->installEventFilter(d); if (widget->isVisible()) { d->setAnimated(widget, true); } } #endif if (QProgressBar *pbar = qobject_cast<QProgressBar *>(widget)) { pbar->installEventFilter(d); if (pbar->isVisible() && !widget->inherits("StatusBarSpaceInfo")) { d->setAnimated(pbar, true); } } #if 1 if (qobject_cast<QMenu *>(widget)) { widget->installEventFilter(d); } if (QToolBar *toolbar = qobject_cast<QToolBar *>(widget)) { QFont font; font.setPointSizeF(font.pointSizeF() / (1.19)); QList<QToolButton *> children = toolbar->findChildren<QToolButton *>(); Q_FOREACH (QToolButton *child, children) { if (!child->icon().isNull()) { child->setFont(font); } } connect(toolbar, SIGNAL(orientationChanged(Qt::Orientation)), d, SLOT(updateToolBarOrientation(Qt::Orientation))); toolbar->setBackgroundRole(QPalette::Window); } if (widget->inherits("Q3ToolBar")) { widget->setBackgroundRole(QPalette::Window); } #endif #if 0 // FIXME does not work if (QMenu *menu = qobject_cast<QMenu *>(widget)) { #if 1 QFont font; QFont oldfont; oldfont.setPointSizeF(oldfont.pointSizeF() * 1.0001); font.setPointSizeF(font.pointSizeF() / (1.19 /* * 1.19*/)); font.setBold(true); menu->setFont(font); /* QAction *action = menu->menuAction(); action->setFont(oldfont); QList<QAction *> children = action->findChildren<QAction *>(); Q_FOREACH (QAction *child, children) { child->setFont(oldfont); }*/ #else menu->setStyleSheet(QLatin1String("font-size: 6.5")/*.arg(menu->font().pointSizeF() / (1.19 * 1.19))*/); #endif } #endif #if 0 // FIXME does not work if (QGroupBox *group = qobject_cast<QGroupBox *>(widget)) { QFont oldfont; #if 0 if (group->testAttribute(Qt::WA_SetFont)) { QFont oldfont = group->fontInfo(); } #endif QFont font = oldfont; font.setPointSizeF(font.pointSizeF() * 1.19); font.setBold(true); group->setFont(font); QList<QWidget *> children = group->findChildren<QWidget *>(); Q_FOREACH (QWidget *child, children) { if (1 || !(child->testAttribute(Qt::WA_SetFont))) { printf("reset\n"); child->setFont(oldfont); } } } #endif #if 1 if (widget->inherits("Q3Header")) { QFont font; font.setPointSizeF(font.pointSizeF() / (1.19 /* 1.19*/)); font.setBold(true); widget->setFont(font); } #endif if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget)) { if (QAbstractItemView *iv = qobject_cast<QAbstractItemView *>(widget)) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) // ### Qt issue // iv->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); // iv->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); // QApplication::setWheelScrollLines(64); iv = iv; #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) iv->viewport()->setAttribute(Qt::WA_Hover); if (QTreeView *tree = qobject_cast<QTreeView *>(widget)) { iv->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); if (tree->uniformRowHeights()) { iv->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); } } else if (QListView *list = qobject_cast<QListView *>(widget)) { if (list->uniformItemSizes()) { iv->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); iv->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); } } else if (qobject_cast<QTableView *>(widget)) { iv->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); iv->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); } #endif #if 1 if (QHeaderView *header = qobject_cast<QHeaderView *>(widget)) { QFont font; font.setPointSizeF(font.pointSizeF() / (1.19 /* 1.19*/)); font.setBold(true); header->setFont(font); // FIXME workaround for Qt 4.3 header->headerDataChanged(header->orientation(), 0, 0); header->updateGeometry(); } #endif } if (area->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken)) { d->installFrameShadow(area); } } #if 1 if (widget->inherits("Konsole::TerminalDisplay") || widget->inherits("KTextEditor::View") || widget->inherits("KHTMLView")) { // ((QFrame *) widget)->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); d->installFrameShadow(widget); } #endif #if 0 if (widget->inherits("KTextEditor::View")) { QWidget *parent = widget->parentWidget(); if (parent) { QFrame *frame = new QFrame(parent); if (frame) { frame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); widget->setParent(frame); } } } #endif #if 1 if (widget->inherits("KCharSelectTable")) { QPalette palette; widget->setPalette(palette); } #endif #if 1 if (widget->inherits("KFadeWidgetEffect")) { widget->installEventFilter(d); } #endif if (widget->inherits("Q3ScrollView")) { QFrame *frame = qobject_cast<QFrame *>(widget); if (frame && frame->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken)) { d->installFrameShadow(widget); } } #endif #if 0 if (QTabWidget *tab = qobject_cast<QTabWidget *>(widget)) { if (QToolButton *button = qobject_cast<QToolButton *>(tab->cornerWidget(Qt::TopRightCorner))) { button->setAutoRaise(true); } if (QToolButton *button = qobject_cast<QToolButton *>(tab->cornerWidget(Qt::TopLeftCorner))) { button->setAutoRaise(true); } } #endif #if 1 if (QToolButton *button = qobject_cast<QToolButton *>(widget)) { if (qobject_cast<QTabWidget *>(button->parentWidget())) { button->setAutoRaise(true); } } #endif if (!qstrcmp(widget->metaObject()->className(), "QToolBoxButton")) { widget->setAttribute(Qt::WA_Hover, true); } if (!qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { widget->installEventFilter(d); widget->setAttribute(Qt::WA_Hover, true); } if (qobject_cast<QLineEdit *>(widget)) { widget->unsetCursor(); widget->installEventFilter(d); widget->setMouseTracking(true); } if (QLayout *layout = widget->layout()) { // explicitely check public layout classes, QMainWindowLayout doesn't work here if (qobject_cast<QBoxLayout *>(layout) #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) || qobject_cast<QFormLayout *>(layout) #endif || qobject_cast<QGridLayout *>(layout) || qobject_cast<QStackedLayout *>(layout)) { d->polishLayout(layout); } } if (!qstrcmp(widget->metaObject()->className(), "InfoSidebarPage")) { widget->installEventFilter(d); } #if 0//(QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) if (widget->inherits("KTabWidget") && widget->property("closeButtonEnabled").toBool()) { widget->setProperty("tabsClosable", true); widget->setProperty("closeButtonEnabled", false); connect(widget, SIGNAL(tabCloseRequested(int)), widget, SIGNAL(closeRequest(int))); } if (widget->inherits("KTabBar")) { widget->setProperty("tabsClosable", true); connect(widget, SIGNAL(tabCloseRequested(int)), widget, SIGNAL(closeRequest(int))); } #endif ParentStyle::polish(widget); } void SkulptureStyle::unpolish(QWidget *widget) { ParentStyle::unpolish(widget); // return; if (qobject_cast<QScrollBar *>(widget) || qobject_cast<QSlider *>(widget) || qobject_cast<QDial *>(widget) // || qobject_cast<QLineEdit *>(widget) || qobject_cast<QAbstractSpinBox *>(widget) || qobject_cast<QHeaderView*>(widget) || qobject_cast<QTabBar *>(widget) || qobject_cast<QSplitterHandle *>(widget) || qobject_cast<QPushButton *>(widget) || qobject_cast<QComboBox *>(widget) || qobject_cast<QCheckBox *>(widget) || qobject_cast<QRadioButton *>(widget) || qobject_cast<QGroupBox *>(widget) || qobject_cast<QToolButton *>(widget)) { widget->setAttribute(Qt::WA_Hover, false); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (qobject_cast<QMdiArea *>(widget)) { widget->removeEventFilter(d); } if (QMdiSubWindow *win = qobject_cast<QMdiSubWindow *>(widget)) { win->removeEventFilter(d); WidgetShadow *shadow = findShadow(win); if (shadow) { shadow->hide(); shadow->setParent(0); shadow->deleteLater(); } } #endif #if 1 if (QDialog *dialog = qobject_cast<QDialog *>(widget)) { dialog->removeEventFilter(d); } #endif #if 0 if (QLCDNumber *lcd = qobject_cast<QLCDNumber *>(widget)) { lcd->removeEventFilter(d); } if (QToolBox *toolBox = qobject_cast<QToolBox *>(widget)) { toolBox->removeEventFilter(d); } if (QDockWidget *dock = qobject_cast<QDockWidget *>(widget)) { dock->removeEventFilter(d); } if (QStatusBar *status = qobject_cast<QStatusBar *>(widget)) { status->removeEventFilter(d); } #endif #if 0 if (/*d->allowScrollBarSliderToCoverArrows &&*/ qobject_cast<QScrollBar *>(widget)) { widget->installEventFilter(d); } #endif if (QProgressBar *pbar = qobject_cast<QProgressBar *>(widget)) { pbar->removeEventFilter(d); d->setAnimated(pbar, false); return; } if (QAbstractScrollArea *area = qobject_cast<QAbstractScrollArea *>(widget)) { area->removeEventFilter(d); if (/*QAbstractItemView *iv =*/qobject_cast<QAbstractItemView *>(widget)) { #if 1 if (QHeaderView *header = qobject_cast<QHeaderView *>(widget)) { QFont font; // font.setPointSizeF(font.pointSizeF() / (1.19 * 1.19)); // font.setBold(true); header->setFont(font); // FIXME workaround for Qt 4.3 header->headerDataChanged(header->orientation(), 0, 0); header->updateGeometry(); } #endif } /* if (QMdiArea *area = qobject_cast<QMdiArea *>(widget)) { area->viewport()->removeEventFilter(d); } */ d->removeFrameShadow(area); } #if 1 if (widget->inherits("Konsole::TerminalDisplay") || widget->inherits("KTextEditor::View") || widget->inherits("KHTMLView")) { widget->removeEventFilter(d); d->removeFrameShadow(widget); } #endif if (widget->inherits("Q3ScrollView")) { widget->removeEventFilter(d); d->removeFrameShadow(widget); } #if 1 if (widget->inherits("KFadeWidgetEffect")) { widget->removeEventFilter(d); } #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) if (widget->inherits("QPlainTextEdit")) { QPlainTextEdit *edit = static_cast<QPlainTextEdit *>(widget); edit->viewport()->removeEventFilter(d); edit->removeEventFilter(d); } #endif if (qobject_cast<QScrollBar *>(widget)) { widget->removeEventFilter(d); } if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { if (!qstrcmp(widget->metaObject()->className(), "SampleEdit")) { QList<QObject *> children = widget->children(); Q_FOREACH (QObject *child, children) { if (child->objectName() == QLatin1String("sample_background")) { child->setParent(0); child->deleteLater(); } } } else { d->mapper.removeMappings(edit); } edit->viewport()->removeEventFilter(d); edit->removeEventFilter(d); } if (QToolBar *toolbar = qobject_cast<QToolBar *>(widget)) { QFont font; // font.setPointSizeF(font.pointSizeF() / (1.19)); QList<QToolButton *> children = toolbar->findChildren<QToolButton *>(); Q_FOREACH (QToolButton *child, children) { if (!child->icon().isNull()) { child->setFont(font); } } disconnect(toolbar, SIGNAL(orientationChanged(Qt::Orientation)), d, SLOT(updateToolBarOrientation(Qt::Orientation))); } if (!qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { widget->removeEventFilter(d); } if (qobject_cast<QLineEdit *>(widget)) { widget->setMouseTracking(false); widget->removeEventFilter(d); widget->setCursor(Qt::IBeamCursor); } if (!d->postEventWidgets.isEmpty()) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) d->postEventWidgets.removeOne(widget); #else d->postEventWidgets.removeAll(widget); #endif } if ((QWidget *) d->oldEdit == widget) { d->oldEdit = 0; } if (!qstrcmp(widget->metaObject()->className(), "InfoSidebarPage")) { widget->removeEventFilter(d); } if (qobject_cast<QMenu *>(widget)) { widget->removeEventFilter(d); } } /*-----------------------------------------------------------------------*/ extern void lineEditMouseMoved(QLineEdit *lineEdit, QMouseEvent *event); void SkulptureStyle::Private::processPostEventWidgets() { QWidget *widget; while (!postEventWidgets.isEmpty() && (widget = postEventWidgets.takeFirst())) { if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { handleCursor(edit); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) else if (QPlainTextEdit *edit = qobject_cast<QPlainTextEdit *>(widget)) { handleCursor(edit); } #endif } } void SkulptureStyle::Private::addPostEventWidget(QWidget *widget) { if (qobject_cast<QTextEdit *>(widget) #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) || qobject_cast<QPlainTextEdit *>(widget) #endif ) { if (!postEventWidgets.contains(widget)) { bool signal = postEventWidgets.isEmpty(); postEventWidgets.append(widget); if (signal) { QTimer::singleShot(0, this, SLOT(processPostEventWidgets())); } } } } bool SkulptureStyle::Private::eventFilter(QObject *watched, QEvent *event) { #if 0 // can't happen, because widgets are the only ones to install it if (!watched->isWidgetType()) { return QObject::eventFilter(watched, event); } #endif QWidget *widget = reinterpret_cast<QWidget *>(watched); #if 0 if (event->type() != QEvent::UpdateRequest && event->type() != QEvent::Paint) { qDebug() << "handling" << event->type() << "for object" << widget->objectName() << "which is a" << widget->metaObject()->className() << " which is a" << widget->metaObject()->superClass()->className(); } #endif if (QMenu *menu = qobject_cast<QMenu *>(widget)) { return menuEventFilter(menu, event); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (qobject_cast<QMdiSubWindow *>(widget)) { WidgetShadow *shadow = findShadow(widget); switch (event->type()) { case QEvent::Move: case QEvent::Resize: if (shadow) { shadow->updateGeometry(); } break; case QEvent::ZOrderChange: if (shadow) { shadow->updateZOrder(); } break; case QEvent::Hide: if (shadow) { shadow->setParent(0); shadow->hide(); shadow->deleteLater(); } break; case QEvent::Show: if (!shadow) { if (widget->parentWidget()) { shadow = new WidgetShadow(widget->parentWidget()); shadow->setWidget(widget); shadow->updateZOrder(); } } else { shadow->updateZOrder(); } default: break; } } #endif if (event->type() == QEvent::Hide || event->type() == QEvent::Destroy) { if (!postEventWidgets.isEmpty()) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) postEventWidgets.removeOne(widget); #else postEventWidgets.removeAll(widget); #endif } if ((QWidget *) oldEdit == widget) { oldEdit = 0; } } else if (event->type() != QEvent::Paint) { addPostEventWidget(widget); if (QWidget *parent = widget->parentWidget()) { addPostEventWidget(parent); if ((parent = parent->parentWidget())) { addPostEventWidget(parent); } } } switch (event->type()) { case QEvent::Paint: #if 1 // highlight current line in QTextEdit / QPlainTextEdit if (widget->objectName() == QLatin1String("qt_scrollarea_viewport")) { if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget->parent())) { if (!qstrcmp(edit->metaObject()->className(), "SampleEdit")) { QList<QObject *> children = edit->children(); Q_FOREACH (QObject *child, children) { if (child->objectName() == QLatin1String("sample_background")) { QWidget *bg = qobject_cast<QWidget *>(child); if (bg) { QPalette palette = edit->palette(); palette.setColor(QPalette::Window, palette.color(QPalette::Base)); bg->setPalette(palette); } } } } // updateTextEditMargins(edit); paintCursorLine(edit); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) else if (widget->parent()->inherits("QPlainTextEdit")) { paintCursorLine(static_cast<QPlainTextEdit *>(widget->parent())); } #endif } #endif #if 0 if (QDialog *dialog = qobject_cast<QDialog *>(widget)) { QPainter painter(dialog); QRect r = dialog->rect(); QLinearGradient dialogGradient1(r.topLeft(), r.bottomRight()); dialogGradient1.setColorAt(0.0, QColor(255, 255, 255, 30)); dialogGradient1.setColorAt(1.0, QColor(0, 0, 0, 10)); // painter.fillRect(r, dialogGradient1); QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 225, 160)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); // painter.fillRect(r, dialogGradient2); QLinearGradient dialogGradient3(r.topLeft(), r.bottomLeft()); dialogGradient3.setColorAt(0.0, QColor(255, 255, 255, 30)); dialogGradient3.setColorAt(1.0, QColor(0, 0, 0, 20)); painter.fillRect(r, dialogGradient3); paintThinFrame(&painter, dialog->rect().adjusted(0, 0, 0, 0), dialog->palette(), 60, -20); paintThinFrame(&painter, dialog->rect().adjusted(1, 1, -1, -1), dialog->palette(), -20, 60); } #endif #if 0 if (QStatusBar *status = qobject_cast<QStatusBar *>(widget)) { QPainter painter(status); paintThinFrame(&painter, status->rect(), status->palette(), -20, 60); } if (QToolBox *toolBox = qobject_cast<QToolBox *>(widget)) { QPainter painter(toolBox); paintThinFrame(&painter, toolBox->rect(), toolBox->palette(), 60, -20); paintThinFrame(&painter, toolBox->rect().adjusted(1, 1, -1, -1), toolBox->palette(), -60, 140); } if (QLCDNumber *lcd = qobject_cast<QLCDNumber *>(watched)) { // TODO nicer digits, antialiased, slight italics } if (QDockWidget *dock = qobject_cast<QDockWidget *>(widget)) { // ### rendering a frame around dock widgets does not work, because // the subwidgets are placed at the edges. } #endif if (!qstrcmp(widget->metaObject()->className(), "InfoSidebarPage")) { QPainter painter(widget); paintThinFrame(&painter, widget->rect().adjusted(0, 0, 0, 0), widget->palette(), 60, -20); paintThinFrame(&painter, widget->rect().adjusted(1, 1, -1, -1), widget->palette(), -20, 60); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (!qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { QPainter painter(widget); QStyleOption option; option.initFrom(widget); QIcon::Mode iconMode = QIcon::Normal; if (option.state & QStyle::State_Enabled && option.state & QStyle::State_MouseOver) { //iconMode = QIcon::Active; // painter.fillRect(widget->rect(), Qt::red); } else { //iconMode = QIcon::Disabled; painter.setOpacity(0.2); } QRect r = QRect(widget->rect().center() - QPoint(6, 5), QSize(12, 12)); painter.drawPixmap(r, q->standardIcon(QStyle::SP_TitleBarCloseButton, &option, widget).pixmap(12, 12, iconMode)); event->accept(); return true; } if (widget->inherits("KFadeWidgetEffect")) { // widget->hide(); event->accept(); // widget->removeEventFilter(this); return true; } break; #endif case QEvent::MouseMove: if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(watched)) { lineEditMouseMoved(lineEdit, static_cast<QMouseEvent *>(event)); } break; case QEvent::Show: if (QProgressBar *pbar = qobject_cast<QProgressBar *>(watched)) { if (!widget->inherits("StatusBarSpaceInfo")) { setAnimated(pbar, true); } } /* fall through */ case QEvent::Move: case QEvent::Resize: if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { if (!qstrcmp(widget->metaObject()->className(), "SampleEdit")) { QList<QObject *> children = widget->children(); Q_FOREACH (QObject *child, children) { if (child->objectName() == QLatin1String("sample_background")) { QWidget *bg = qobject_cast<QWidget *>(child); if (bg) { bg->setGeometry(2, 2, widget->width() - 4, widget->height() - 4); } } } } else { textEditSourceChanged(edit); } } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) else if (qobject_cast<QMdiArea *>(widget)) { QList<WidgetShadow *> shadows = widget->findChildren<WidgetShadow *>(); Q_FOREACH (WidgetShadow *shadow, shadows) { shadow->updateGeometry(); } } #endif if (qobject_cast<QAbstractScrollArea *>(widget) || widget->inherits("Q3ScrollView") #if 1 || widget->inherits("Konsole::TerminalDisplay") || widget->inherits("KTextEditor::View") || widget->inherits("KHTMLView") #endif ) { updateFrameShadow(widget); } break; case QEvent::Destroy: case QEvent::Hide: setAnimated(reinterpret_cast<QProgressBar *>(watched), false); break; #if 0 case QEvent::MouseButtonRelease: if (allowScrollBarSliderToCoverArrows && qobject_cast<QScrollBar *>(widget)) { widget->update(); } break; #endif default: break; } return QObject::eventFilter(watched, event); } /*-----------------------------------------------------------------------*/ #define SkulptureDrawFunction(function, selectortype, optiontype, array) \ \ void SkulptureStyle::function(selectortype element, const optiontype *option, QPainter *painter, const QWidget *widget) const \ { \ if (uint(element) < array_elements(array)) { \ const Private::DrawElementEntry *entry = &array[element]; \ if (entry->func && option && (!entry->type || option->type == entry->type)) { \ entry->func(painter, option, widget, this); \ return; \ } \ } \ ParentStyle::function(element, option, painter, widget); \ } SkulptureDrawFunction(drawPrimitive, PrimitiveElement, QStyleOption, d->draw_primitive_entry) SkulptureDrawFunction(drawControl, ControlElement, QStyleOption, d->draw_element_entry) //SkulptureDrawFunction(drawComplexControl, ComplexControl, QStyleOptionComplex, d->draw_complex_entry) /*-----------------------------------------------------------------------*/ //#include "skulpture.moc" /* * skulpture_animations.cpp * */ #include "skulpture_p.h" #include <QtGui/QProgressBar> #include <QtCore/QTimerEvent> /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::setAnimated(QWidget *widget, bool animated) { if (!widget) { return; } animations.removeAll(widget); if (animated && animateProgressBars) { animations.prepend(widget); if (!timer) { timer = startTimer(60); } } else { if (animations.isEmpty()) { if (timer) { killTimer(timer); timer = 0; } } } } bool SkulptureStyle::Private::isAnimated(QWidget *widget) { if (!widget || !timer) { return false; } return animations.contains(widget); } void SkulptureStyle::Private::timerEvent(QTimerEvent *event) { if (event->timerId() == timer) { Q_FOREACH (QWidget *widget, animations) { // FIXME: move this logic to progressbar QProgressBar *bar = qobject_cast<QProgressBar *>(widget); if (bar) { if (bar->minimum() >= bar->maximum() || bar->value() < bar->maximum()) { bar->update(); } } else { widget->update(); } } } event->ignore(); } /* * skulpture_arrows.cpp * */ #include "skulpture_p.h" #include "sk_factory.h" #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ #define awf 0.8 /* width of inner arrow 0 ... 1 */ #define ahf 0.2 /* position of inner arrow, -1 ... 1 */ #define spf 0.2 /* position of spin plus/minus edges */ #define swf 0.8 /* width of spin plus/minus sign */ #define shf 1.0 /* height of spin plus/minus sign */ static const ShapeFactory::Code arrowShapeDescription[] = { Pmove(-1, 1), Pline(-awf, 1), Pline(0, ahf), Pline(awf, 1), Pline(1, 1), Pline(0, -1), Pend }; static const ShapeFactory::Code spinPlusDescription[] = { Pmove(-swf, spf), Pline(-spf, spf), Pline(-spf, shf), Pline(spf, shf), Pline(spf, spf), Pline(swf, spf), Pline(swf, -spf), Pline(spf, -spf), Pline(spf, -shf), Pline(-spf, -shf), Pline(-spf, -spf), Pline(-swf, -spf), Pend }; static const ShapeFactory::Code spinMinusDescription[] = { Pmove(-swf, spf), Pline(swf, spf), Pline(swf, -spf), Pline(-swf, -spf), Pend }; static const ShapeFactory::Code sortIndicatorShapeDescription[] = { Pmove(-1, 1), Pline(1, 1), Pline(0, -1), Pend }; /*-----------------------------------------------------------------------*/ static inline QPainterPath arrowPath(const QStyleOption *option, Qt::ArrowType arrow, bool spin) { qreal var[ShapeFactory::MaxVar + 1]; var[1] = 0.01 * arrow; var[2] = spin ? 1.0 : 0.0; var[3] = option->fontMetrics.height(); var[4] = 0.0; QPainterPath shape = ShapeFactory::createShape( spin && arrow == Qt::LeftArrow ? spinMinusDescription : spin && arrow == Qt::RightArrow ? spinPlusDescription : arrowShapeDescription, var); if (var[4] != 0.0) { shape.setFillRule(Qt::WindingFill); } qreal h = 2.0 + var[3] * (spin ? 2.0 : 3.0) / 9.0; qreal w = 2.0 + var[3] / 3.0; h /= 2; w /= 2; if (arrow == Qt::DownArrow || arrow == Qt::RightArrow) { h = -h; } bool horiz = !spin && (arrow == Qt::LeftArrow || arrow == Qt::RightArrow); QMatrix arrowMatrix(horiz ? 0 : w, horiz ? w : 0, horiz ? h : 0 , horiz ? 0 : h, 0, 0); return arrowMatrix.map(shape); } void paintScrollArrow(QPainter *painter, const QStyleOption *option, Qt::ArrowType arrow, bool spin) { painter->save(); // FIXME: combine translations with path matrix painter->translate(option->rect.center()); #if 1 painter->setRenderHint(QPainter::Antialiasing, true); #else painter->setRenderHint(QPainter::Antialiasing, false); #endif if (painter->renderHints() & QPainter::Antialiasing) { painter->translate(0.5, 0.5); } #if 1 switch (arrow) { case Qt::UpArrow: painter->translate(0, -0.5); break; case Qt::DownArrow: painter->translate(0, 0.5); break; case Qt::LeftArrow: if (!spin) { painter->translate(-0.5, 0); } break; case Qt::RightArrow: if (!spin) { painter->translate(0.5, 0); } break; case Qt::NoArrow: break; } #endif painter->setPen(Qt::NoPen); QColor color = option->palette.color(spin ? (option->state & QStyle::State_Enabled ? QPalette::WindowText : QPalette::Text) : QPalette::ButtonText); if ((option->state & QStyle::State_MouseOver) && option->state & QStyle::State_Enabled /* && !(option->state & QStyle::State_Sunken)*/) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) color = option->palette.color(QPalette::Highlight).darker(200); #else color = option->palette.color(QPalette::Highlight).dark(200); #endif // painter->setPen(QPen(Qt::white, 1.0)); } else { // painter->setPen(QPen(Qt::white, 0.5)); } color.setAlpha((179 * color.alpha()) >> 8); painter->setBrush(color); painter->drawPath(arrowPath(option, arrow, spin)); painter->restore(); } void paintIndicatorArrowDown(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::DownArrow, false); } void paintIndicatorArrowLeft(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::LeftArrow, false); } void paintIndicatorArrowRight(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::RightArrow, false); } void paintIndicatorArrowUp(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::UpArrow, false); } /* * skulpture_buttons.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QPainterPath> static QPainterPath button_path(const QRectF &rect, qreal k) { k *= 0.1; const qreal tlh_edge = 6.0 * k; const qreal tlv_edge = 6.0 * k; const qreal tlh_control = 4.0 * k; const qreal tlv_control = 4.0 * k; const qreal blh_edge = 6.0 * k; const qreal blv_edge = 6.0 * k; const qreal blh_control = 4.0 * k; const qreal blv_control = 4.0 * k; const qreal trh_edge = 6.0 * k; const qreal trv_edge = 6.0 * k; const qreal trh_control = 4.0 * k; const qreal trv_control = 4.0 * k; const qreal brh_edge = 6.0 * k; const qreal brv_edge = 6.0 * k; const qreal brh_control = 4.0 * k; const qreal brv_control = 4.0 * k; QPainterPath path; path.moveTo(rect.left() + tlh_edge, rect.top()); path.lineTo(rect.right() - trh_edge, rect.top()); path.cubicTo(rect.right() - trh_edge + trh_control, rect.top(), rect.right(), rect.top() + trv_edge - trv_control, rect.right(), rect.top() + trv_edge); path.lineTo(rect.right(), rect.bottom() - brv_edge); path.cubicTo(rect.right(), rect.bottom() - brv_edge + brv_control, rect.right() - brh_edge + brh_control, rect.bottom(), rect.right() - brh_edge, rect.bottom()); path.lineTo(rect.left() + blh_edge, rect.bottom()); path.cubicTo(rect.left() + blh_edge - blh_control, rect.bottom(), rect.left(), rect.bottom() - blv_edge + blv_control, rect.left(), rect.bottom() - blv_edge); path.lineTo(rect.left(), rect.top() + tlv_edge); path.cubicTo(rect.left(), rect.top() + tlv_edge - tlv_control, rect.left() + tlh_edge - tlh_control, rect.top(), rect.left() + tlh_edge, rect.top()); return path; } static QBrush button_gradient(const QRectF &rect, const QColor &color, const QStyleOptionButton *option) { Q_UNUSED(option) qreal ch = color.hueF(); qreal cs = color.saturationF() * 1.0; qreal cv = color.valueF() * 1.0; int ca = color.alpha(); QColor col; if (rect.height() > 64) { return QColor(color); } QLinearGradient gradient(rect.topLeft(), rect.bottomLeft()); col.setHsvF(ch, cs, qMax(0.0, cv - 0.02)); col.setAlpha(ca); gradient.setColorAt(0.0, col); col.setHsvF(ch, cs, qMin(1.0, cv + 0.03)); col.setAlpha(ca); gradient.setColorAt(1.0, col); return gradient; } void paintButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole) { const QRectF &c_rect = option->rect; const qreal t = 1.0; QRectF rect = c_rect; bool frame = true; if (option->features & QStyleOptionButton::Flat && !(option->state & QStyle::State_Sunken)) { frame = false; } painter->setPen(Qt::NoPen); if ((option->features & QStyleOptionButton::DefaultButton) && (option->state & QStyle::State_Enabled)) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.3), blend_color(QColor(0, 0, 0, 10), option->palette.color(QPalette::Highlight).lighter(110), 0.2), blend_color(QColor(0, 0, 0, 15), option->palette.color(QPalette::Highlight).lighter(110), 0.2))); } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.3), shaded_color(option->palette.color(QPalette::Window), -10), shaded_color(option->palette.color(QPalette::Window), -15))); } painter->drawPath(button_path(rect, 1.5)); rect.adjust(t, t, -t, -t); QBrush bgbrush = option->palette.brush(option->state & QStyle::State_Enabled ? (bgrole == QPalette::NoRole ? QPalette::Button : bgrole) : QPalette::Button); if (bgbrush.style() == Qt::SolidPattern && bgbrush.color().alpha() == 0) { QColor color = option->palette.color(QPalette::Window); color.setAlpha(0); bgbrush = color; } if (frame) { if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken || option->state & QStyle::State_On) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), shaded_color(option->palette.color(QPalette::Window), -35), shaded_color(option->palette.color(QPalette::Window), -75))); } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), shaded_color(option->palette.color(QPalette::Window), -75), shaded_color(option->palette.color(QPalette::Window), -45))); } } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 1.1), shaded_color(option->palette.color(QPalette::Window), -35), shaded_color(option->palette.color(QPalette::Window), -35))); } painter->drawPath(button_path(rect, 1.3)); rect.adjust(t, t, -t, -t); if (bgbrush.style() == Qt::SolidPattern) { QColor bgcolor = bgbrush.color(); if (option->state & QStyle::State_On) { bgcolor = blend_color(bgcolor, option->palette.color(QPalette::Highlight), 0.2); bgbrush = button_gradient(rect, bgcolor, option); } if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { bgcolor = bgcolor.lighter(102); } else if (option->state & QStyle::State_MouseOver) { bgcolor = bgcolor.lighter(104); } bgbrush = button_gradient(rect, bgcolor, option); } painter->setBrush(bgbrush); // painter->setBrush(option->palette.color(QPalette::Button)); painter->drawPath(button_path(rect, 1.1)); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken || option->state & QStyle::State_On) { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 0.9), shaded_color(bgcolor, -10), shaded_color(bgcolor, -20))); } else { painter->setBrush(path_edge_gradient(rect, option, button_path(rect, 0.9), shaded_color(bgcolor, -20), shaded_color(bgcolor, 160))); } painter->drawPath(button_path(rect, 1.1)); } } painter->setBrush(bgbrush); } else { QColor bgcolor = option->palette.color(QPalette::Window); if (option->state & QStyle::State_MouseOver) { bgcolor = bgcolor.lighter(104); } if (option->state & QStyle::State_On) { bgcolor = blend_color(bgcolor, option->palette.color(QPalette::Highlight), 0.2); } painter->setBrush(bgcolor); } rect.adjust(t, t, -t, -t); painter->save(); // make transparent buttons appear transparent painter->setCompositionMode(QPainter::CompositionMode_DestinationOut); painter->setBrush(Qt::black); painter->drawPath(button_path(rect, 0.9)); painter->restore(); painter->drawPath(button_path(rect, 0.9)); } void paintPushButtonBevel(QPainter *painter, const QStyleOptionButton *option, const QWidget *widget, const QStyle *style) { QStyleOptionButton opt = *option; opt.features &= ~(QStyleOptionButton::HasMenu); ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_PushButtonBevel, &opt, painter, widget); if (option->features & QStyleOptionButton::Flat) { if (!(option->state & (QStyle::State_Sunken | QStyle::State_On))) { if (option->state & QStyle::State_MouseOver) { painter->fillRect(option->rect.adjusted(2, 2, -2, -2), QColor(255, 255, 255, 60)); } } } if (option->features & QStyleOptionButton::HasMenu) { int size = style->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, widget); opt.palette.setColor(QPalette::WindowText, opt.palette.color(widget ? widget->foregroundRole() : QPalette::ButtonText)); opt.state &= ~(QStyle::State_MouseOver); if (option->direction == Qt::LeftToRight) { opt.rect = QRect(option->rect.right() - size - 2, option->rect.top(), size, option->rect.height()); } else { opt.rect = QRect(option->rect.left() + 4, option->rect.top(), size, option->rect.height()); } if (option->state & (QStyle::State_Sunken | QStyle::State_On)) { opt.rect.translate(style->pixelMetric(QStyle::PM_ButtonShiftHorizontal, &opt, widget), style->pixelMetric(QStyle::PM_ButtonShiftVertical, &opt, widget)); } style->drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } } /* * skulpture_cache.cpp * */ #include "skulpture_p.h" #include <QtGui/QPixmapCache> #include <QtGui/QGradient> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include "sk_factory.h" #include <cmath> // FIXME #if (QT_VERSION < QT_VERSION_CHECK(4, 3, 0)) #define cacheKey serialNumber #endif /*-----------------------------------------------------------------------*/ static const bool UsePixmapCache = true; /*-----------------------------------------------------------------------*/ /* * paint a pushbutton to painter * */ extern void paintButtonPanel(QPainter *painter, const QStyleOptionButton *option, QPalette::ColorRole bgrole); static const int button_edge_size = 16; static const int button_inner_width = 32; void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, const QWidget *widget) { Q_UNUSED(widget); QPalette::ColorRole bgrole = /*widget ? widget->backgroundRole() : */QPalette::Button; bool useCache = UsePixmapCache; QString pixmapName; QPixmap pixmap; QRect r = option->rect; r.setWidth(button_inner_width + 2 * button_edge_size); if (/*option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ r.height() > 64) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); uint features = uint(option->features) & (QStyleOptionButton::Flat | QStyleOptionButton::DefaultButton); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } pixmapName.sprintf("scp-cbp-%x-%x-%x-%x-%llx-%x", features, uint(bgrole), state, option->direction, option->palette.cacheKey(), r.height()); } if (!useCache || !QPixmapCache::find(pixmapName, pixmap)) { pixmap = QPixmap(r.size()); pixmap.fill(Qt::transparent); // pixmap.fill(Qt::red); QPainter p(&pixmap); QStyleOptionButton but = *option; but.rect = QRect(QPoint(0, 0), r.size()); // ### neither Clear nor Source works? // p.setCompositionMode(QPainter::CompositionMode_Clear); // p.setCompositionMode(QPainter::CompositionMode_Source); // p.fillRect(but.rect, Qt::transparent); // p.setCompositionMode(QPainter::CompositionMode_SourceOver); p.setFont(painter->font()); p.setRenderHint(QPainter::Antialiasing, true); paintButtonPanel(&p, &but, bgrole); p.end(); if (useCache) { QPixmapCache::insert(pixmapName, pixmap); // qDebug() << "inserted into cache:" << pixmapName; } } int rem; if (option->rect.width() == r.width()) { rem = r.width(); } else { int side = qMin(option->rect.width() / 2, button_inner_width + button_edge_size); painter->drawPixmap(r.topLeft(), pixmap, QRect(0, 0, side, r.height())); int midw = option->rect.width() - 2 * side; rem = option->rect.width() - side; r.translate(side, 0); while (midw > 0) { int w = qMin(button_inner_width, midw); rem -= w; painter->drawPixmap(r.topLeft(), pixmap, QRect(button_edge_size, 0, w, r.height())); r.translate(w, 0); midw -= button_inner_width; } } painter->drawPixmap(r.topLeft(), pixmap, QRect(r.width() - rem, 0, rem, r.height())); } /*-----------------------------------------------------------------------*/ void paintPanelButtonTool(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); QStyleOptionButton button; if (widget && !qstrcmp(widget->metaObject()->className(), "QDockWidgetTitleButton")) { if (!(option->state & QStyle::State_MouseOver) && !(option->state & QStyle::State_On)) return; } button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; // button.state &= ~(QStyle::State_Sunken | QStyle::State_Selected | QStyle::State_On); // ### qtconfig creates its color select buttons as disabled... // ### the same is done in for TitleBar buttons if (button.state == QStyle::State_Sunken || button.state == QStyle::State_Raised) { button.state |= QStyle::State_Enabled; } else if (!(button.state & QStyle::State_Enabled) && (option->state & QStyle::State_AutoRaise)) { return; } // ### don't know if tool buttons should have that big frame... button.rect.adjust(-1, -1, 1, 1); // FIXME bgrole? paintCommandButtonPanel(painter, &button, 0); } /*-----------------------------------------------------------------------*/ static void paintIndicatorCached(QPainter *painter, const QStyleOption *option, void (*paintIndicator)(QPainter *painter, const QStyleOption *option), bool useCache, const QString &pixmapName) { QPixmap pixmap; if (!useCache || !QPixmapCache::find(pixmapName, pixmap)) { pixmap = QPixmap(option->rect.size()); #if 1 pixmap.fill(Qt::transparent); // pixmap.fill(Qt::red); #else pixmap.fill(option->palette.color(QPalette::Window)); #endif QPainter p(&pixmap); QStyleOption opt = *option; opt.rect = QRect(QPoint(0, 0), option->rect.size()); // p.setCompositionMode(QPainter::CompositionMode_Clear); // p.setCompositionMode(QPainter::CompositionMode_Source); // p.fillRect(opt.rect, Qt::transparent); // p.setCompositionMode(QPainter::CompositionMode_SourceOver); p.setFont(painter->font()); p.setRenderHint(QPainter::Antialiasing, true); paintIndicator(&p, &opt); p.end(); if (useCache) { QPixmapCache::insert(pixmapName, pixmap); // qDebug() << "inserted into cache:" << pixmapName; } } painter->drawPixmap(option->rect, pixmap); } static void paintIndicatorShape(QPainter *painter, const QStyleOption *option, qreal scale, const QPainterPath &shapePath) { // configuration const QPalette::ColorRole indicatorRole = QPalette::Text; if (option->state & QStyle::State_Sunken || option->state & QStyle::State_On || option->state & QStyle::State_MouseOver) { painter->save(); painter->setPen(Qt::NoPen); painter->translate(QRectF(option->rect).center()); painter->setRenderHint(QPainter::Antialiasing, true); QColor color; if ((option->state & QStyle::State_MouseOver || option->state & QStyle::State_Sunken) && option->state & QStyle::State_Enabled) { color = option->palette.color(QPalette::Highlight); if (!(option->state & QStyle::State_Sunken) && !(option->state & QStyle::State_On)) { color.setAlpha(80); } } else if (!(option->state & QStyle::State_Sunken) && option->state & QStyle::State_On) { color = option->palette.color(indicatorRole); color.setAlpha(80); } if (color.isValid()) { painter->setBrush(color); QMatrix matrix(scale, 0, 0, scale, 0, 0); painter->drawPath(matrix.map(shapePath)); } if (!(option->state & QStyle::State_Sunken) && option->state & QStyle::State_On) { painter->setBrush(option->palette.brush(indicatorRole)); QMatrix matrix(scale - 1, 0, 0, scale - 1, 0, 0); painter->drawPath(matrix.map(shapePath)); } painter->restore(); } } /*-----------------------------------------------------------------------*/ #define csx 0.35 #define csc 0.2 // cross static const ShapeFactory::Code checkShapeDescription1[] = { Pmove(-1 + csc, -1), Pline(0, -csx), Pline(1 - csc, -1), Pline(1, -1 + csc), Pline(csx, 0), Pline(1, 1 - csc), Pline(1 - csc, 1), Pline(0, csx), Pline(-1 + csc, 1), Pline(-1, 1 - csc), Pline(-csx, 0), Pline(-1, -1 + csc), Pend }; // checkmark static const ShapeFactory::Code checkShapeDescription2[] = { Pmove(1 - csc, -1), Pline(1, -1 + csc), Pline(csx, 1), Pline(-csx, 1), Pline(-1, csc), Pline(-1 + csc, 0), Pline(0, 1 - 2 * csx), Pend }; static void paintCheckBox(QPainter *painter, const QStyleOption *option) { if (option->state & QStyle::State_NoChange) { paintThinFrame(painter, option->rect, option->palette, 30, -10); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -50, -60); paintThinFrame(painter, option->rect.adjusted(2, 2, -2, -2), option->palette, 0, 60); QColor color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { color = color.darker(110); } else if (option->state & QStyle::State_MouseOver) { color = color.lighter(106); } } else { color = color.darker(106); } painter->fillRect(option->rect.adjusted(3, 3, -3, -3), color); } else { QColor color = option->palette.color(QPalette::Base); if (!(option->state & QStyle::State_On) && !(option->state & QStyle::State_Enabled)) { color = option->palette.color(QPalette::Window); } else if (option->state & QStyle::State_MouseOver) { color = color.lighter(105); } painter->fillRect(option->rect.adjusted(2, 2, -2, -2), color); paintRecessedFrame(painter, option->rect, option->palette, RF_Small); if (!(option->state & QStyle::State_Sunken)) { if (option->state & QStyle::State_Enabled) { paintThinFrame(painter, option->rect.adjusted(2, 2, -2, -2), option->palette, 140, 200); } else { paintThinFrame(painter, option->rect.adjusted(2, 2, -2, -2), option->palette, 180, 180); } } const ShapeFactory::Description description = checkShapeDescription1; const qreal scale = (option->rect.width() - 4) * 0.35; paintIndicatorShape(painter, option, scale, ShapeFactory::createShape(description)); } } void paintIndicatorCheckBox(QPainter *painter, const QStyleOptionButton *option) { bool useCache = UsePixmapCache; QString pixmapName; if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ option->rect.width() * option->rect.height() > 4096) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_NoChange | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-icb-%x-%x-%llx-%x-%x", state, option->direction, option->palette.cacheKey(), option->rect.width(), option->rect.height()); } paintIndicatorCached(painter, option, paintCheckBox, useCache, pixmapName); } /*-----------------------------------------------------------------------*/ static void paintThinBevel(QPainter *painter, const QPainterPath &path, const QColor &dark, const QColor &light, qreal lightAngle = M_PI / 4) { QMatrix scaleUp; scaleUp.scale(10, 10); QList<QPolygonF> bevel = path.toSubpathPolygons(scaleUp); Q_FOREACH (QPolygonF polygon, bevel) { for (int i = 0; i < polygon.size() - 1; ++i) { QLineF line(polygon.at(i) / 10, polygon.at(i + 1) / 10); line.setLength(line.length() + 0.20); painter->setPen(QPen(blend_color(light, dark, sin(atan2(polygon.at(i + 1).y() - polygon.at(i).y(), polygon.at(i + 1).x() - polygon.at(i).x()) - lightAngle) / 2 + 0.5), 1.0, Qt::SolidLine, Qt::FlatCap)); painter->drawLine(line); } } } static void paintThinBevel(QPainter *painter, const QPainterPath &path, const QPalette &palette, int dark, int light, qreal lightAngle = M_PI / 4) { paintThinBevel(painter, path, shaded_color(palette.color(QPalette::Window), dark), shaded_color(palette.color(QPalette::Window), light), lightAngle); } static inline QPainterPath radioShape(const QRectF rect) { QPainterPath path; path.addEllipse(rect); return path; } static void paintRadioButton(QPainter *painter, const QStyleOption *option) { const qreal lightAngle = option->direction == Qt::LeftToRight ? M_PI / 4 : 3 * M_PI / 4; QColor color = option->palette.color(QPalette::Base); if (!(option->state & QStyle::State_On) && !(option->state & QStyle::State_Enabled)) { color = option->palette.color(QPalette::Window); } else if (option->state & QStyle::State_MouseOver) { color = color.lighter(105); } painter->save(); painter->setRenderHint(QPainter::Antialiasing, true); painter->setPen(Qt::NoPen); painter->setBrush(color); painter->drawPath(radioShape(QRectF(option->rect).adjusted(2, 2, -2, -2))); paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(0.5, 0.5, -0.5, -0.5)), option->palette, 39, -26, lightAngle); paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(1.5, 1.5, -1.5, -1.5)), option->palette, -26, -91, lightAngle); paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(2.5, 2.5, -2.5, -2.5)), QColor(0, 0, 0, 15), QColor(0, 0, 0, 30), lightAngle); paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(3.5, 3.5, -3.5, -3.5)), QColor(0, 0, 0, 8), QColor(0, 0, 0, 15), lightAngle); paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(4.5, 4.5, -4.5, -4.5)), QColor(0, 0, 0, 4), QColor(0, 0, 0, 8), lightAngle); if (!(option->state & QStyle::State_Sunken)) { if (option->state & QStyle::State_Enabled) { paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(2.5, 2.5, -2.5, -2.5)), option->palette, 140, 300, lightAngle); } else { paintThinBevel(painter, radioShape(QRectF(option->rect).adjusted(2.5, 2.5, -2.5, -2.5)), option->palette, 180, 180, lightAngle); } } painter->restore(); const qreal scale = (option->rect.width() - 4) * 0.35; QPainterPath circlePath; const qreal radius = 0.7; circlePath.addEllipse(QRectF(-radius, -radius, 2 * radius, 2 * radius)); paintIndicatorShape(painter, option, scale, circlePath); } void paintIndicatorRadioButton(QPainter *painter, const QStyleOptionButton *option) { bool useCache = UsePixmapCache; QString pixmapName; if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ option->rect.width() * option->rect.height() > 4096) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-irb-%x-%x-%llx-%x-%x", state, option->direction, option->palette.cacheKey(), option->rect.width(), option->rect.height()); } paintIndicatorCached(painter, option, paintRadioButton, useCache, pixmapName); } /*-----------------------------------------------------------------------*/ void paintIndicatorMenuCheckMark(QPainter *painter, const QStyleOptionMenuItem *option, const QWidget *widget, const QStyle *style) { QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(*option); // buttonOption.rect.adjust(-2, -2, 2, 2); // qDebug("here!"); // printf("state 0x%08x\n", uint(buttonOption.state)); if (option->state & QStyle::State_Enabled) { if (buttonOption.state & QStyle::State_On) { buttonOption.state |= QStyle::State_Sunken; } } else { buttonOption.state &= ~QStyle::State_Sunken; } if (option->state & QStyle::State_Selected) { buttonOption.state |= QStyle::State_MouseOver; } else { buttonOption.state &= ~QStyle::State_MouseOver; } if (option->checked) { buttonOption.state |= QStyle::State_On; } else { buttonOption.state &= ~QStyle::State_On; } if (widget) { buttonOption.palette = widget->palette(); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Active) { buttonOption.palette.setCurrentColorGroup(QPalette::Active); } else { buttonOption.palette.setCurrentColorGroup(QPalette::Inactive); } } else { buttonOption.palette.setCurrentColorGroup(QPalette::Disabled); } } if (option->checkType == QStyleOptionMenuItem::Exclusive) { QSize size(style->pixelMetric(QStyle::PM_ExclusiveIndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_ExclusiveIndicatorHeight, option, widget)); buttonOption.rect = QRect(option->rect.x() + ((option->rect.width() - size.width()) >> 1), option->rect.y() + ((option->rect.height() - size.height()) >> 1), size.width(), size.height()); paintIndicatorRadioButton(painter, &buttonOption); } else { QSize size(style->pixelMetric(QStyle::PM_IndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_IndicatorHeight, option, widget)); buttonOption.rect = QRect(option->rect.x() + ((option->rect.width() - size.width()) >> 1), option->rect.y() + ((option->rect.height() - size.height()) >> 1), size.width(), size.height()); paintIndicatorCheckBox(painter, &buttonOption); } } void paintQ3CheckListIndicator(QPainter *painter, const QStyleOptionQ3ListView *option, const QWidget *widget, const QStyle *style) { if (!option->items.isEmpty()) { QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(*option); QSize size(style->pixelMetric(QStyle::PM_IndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_IndicatorHeight, option, widget)); buttonOption.rect = QRect(option->rect.center() - QPoint(size.width() / 2, size.height() / 2), size); // buttonOption.rect.adjust(0, -1, 0, -1); paintIndicatorCheckBox(painter, &buttonOption); } } void paintQ3CheckListExclusiveIndicator(QPainter *painter, const QStyleOptionQ3ListView *option, const QWidget *widget, const QStyle *style) { if (!option->items.isEmpty()) { QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(*option); QSize size(style->pixelMetric(QStyle::PM_ExclusiveIndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_ExclusiveIndicatorHeight, option, widget)); buttonOption.rect = QRect(option->rect.center() - QPoint(size.width() / 2, size.height() / 2), size); // buttonOption.rect.adjust(0, -1, 0, -1); paintIndicatorRadioButton(painter, &buttonOption); } } void paintIndicatorItemViewItemCheck(QPainter *painter, const QStyleOption *option) { QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(*option); buttonOption.state &= ~QStyle::State_MouseOver; paintIndicatorCheckBox(painter, &buttonOption); } /*-----------------------------------------------------------------------*/ static void paintGrip(QPainter *painter, const QStyleOption *option) { // painter->fillRect(option->rect, Qt::red); int d = qMin(option->rect.width(), option->rect.height()); // good values are 3 (very small), 4 (small), 5 (good), 7 (large), 9 (huge) // int d = 5; QRectF rect(QRectF(option->rect).center() - QPointF(d / 2.0, d / 2.0), QSizeF(d, d)); const qreal angle = option->direction == Qt::LeftToRight ? 135.0 : 45.0; // const qreal angle = 90; QColor color; qreal opacity = 0.9; painter->save(); painter->setPen(Qt::NoPen); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { color = option->palette.color(QPalette::Highlight).darker(110); } else { color = option->palette.color(QPalette::Button); } } else { color = option->palette.color(QPalette::Button); opacity = 0.5; } QConicalGradient gradient1(rect.center(), angle); gradient1.setColorAt(0.0, shaded_color(color, -110)); gradient1.setColorAt(0.25, shaded_color(color, -30)); gradient1.setColorAt(0.5, shaded_color(color, 180)); gradient1.setColorAt(0.75, shaded_color(color, -30)); gradient1.setColorAt(1.0, shaded_color(color, -110)); painter->setBrush(color); painter->drawEllipse(rect); painter->setBrush(gradient1); #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) // ### merge opacity into color painter->setOpacity(opacity); #endif painter->drawEllipse(rect); #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) painter->setOpacity(1.0); if (d > 2) { QConicalGradient gradient2(rect.center(), angle); gradient2.setColorAt(0.0, shaded_color(color, -40)); gradient2.setColorAt(0.25, shaded_color(color, 0)); gradient2.setColorAt(0.5, shaded_color(color, 210)); gradient2.setColorAt(0.75, shaded_color(color, 0)); gradient2.setColorAt(1.0, shaded_color(color, -40)); rect.adjust(1, 1, -1, -1); painter->setBrush(color); painter->drawEllipse(rect); painter->setBrush(gradient2); painter->setOpacity(opacity); painter->drawEllipse(rect); painter->setOpacity(1.0); if (d > 8) { QConicalGradient gradient3(rect.center(), angle); gradient3.setColorAt(0.0, shaded_color(color, -10)); gradient3.setColorAt(0.25, shaded_color(color, 0)); gradient3.setColorAt(0.5, shaded_color(color, 180)); gradient3.setColorAt(0.75, shaded_color(color, 0)); gradient3.setColorAt(1.0, shaded_color(color, -10)); rect.adjust(2, 2, -2, -2); painter->setBrush(color); painter->drawEllipse(rect); painter->setBrush(gradient3); painter->setOpacity(opacity); painter->drawEllipse(rect); painter->setOpacity(1.0); } } #endif painter->restore(); } void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole /*bgrole*/) { bool useCache = UsePixmapCache; QString pixmapName; if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ option->rect.width() * option->rect.height() > 4096) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_Sunken | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus); } state &= ~(QStyle::State_HasFocus); QByteArray colorName = option->palette.color(QPalette::Button).name().toAscii(); pixmapName.sprintf("scp-isg-%x-%x-%s-%x-%x", state, option->direction, colorName.constData(), option->rect.width(), option->rect.height()); } paintIndicatorCached(painter, option, paintGrip, useCache, pixmapName); } /*-----------------------------------------------------------------------*/ void paintDialBase(QPainter *painter, const QStyleOption *option) { // painter->fillRect(option->rect, Qt::red); // painter->save(); // painter->setRenderHint(QPainter::Antialiasing, true); int d = qMin(option->rect.width(), option->rect.height()); /* if (d > 20 && option->notchTarget > 0) { d += -1; } */ QRectF r((option->rect.width() - d) / 2.0, (option->rect.height() - d) / 2.0, d, d); const qreal angle = option->direction == Qt::LeftToRight ? 135.0 : 45.0; // const qreal angle = 90; painter->setPen(Qt::NoPen); QColor border_color = option->palette.color(QPalette::Window); #if 0 { QRadialGradient depth_gradient(r.center(), d / 2); // depth_gradient.setColorAt(0.0, QColor(0, 0, 0, 255)); depth_gradient.setColorAt(0.5, QColor(0, 0, 0, 255)); depth_gradient.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->setBrush(depth_gradient); painter->drawEllipse(r); } #endif #if 1 if (option->state & QStyle::State_HasFocus && option->state & QStyle::State_KeyboardFocusChange) { painter->setBrush(option->palette.color(QPalette::Highlight).darker(180)); r.adjust(1, 1, -1, -1); painter->drawEllipse(r); painter->setBrush(border_color); r.adjust(1, 1, -1, -1); painter->drawEllipse(r); r.adjust(1, 1, -1, -1); } else { painter->setBrush(border_color); r.adjust(1, 1, -1, -1); painter->drawEllipse(r); r.adjust(1, 1, -1, -1); QConicalGradient border_gradient(r.center(), angle); if (!(option->state & QStyle::State_Enabled)) { border_color = border_color.lighter(120); } border_gradient.setColorAt(0.0, border_color.darker(180)); border_gradient.setColorAt(0.3, border_color.darker(130)); border_gradient.setColorAt(0.5, border_color.darker(170)); border_gradient.setColorAt(0.7, border_color.darker(130)); border_gradient.setColorAt(1.0, border_color.darker(180)); painter->setBrush(border_gradient); // painter->setBrush(Qt::blue); painter->drawEllipse(r); r.adjust(1, 1, -1, -1); } d -= 6; QColor dial_color; if (option->state & QStyle::State_Enabled) { dial_color = option->palette.color(QPalette::Button).lighter(101); if (option->state & QStyle::State_MouseOver) { dial_color = dial_color.lighter(103); } } else { dial_color = option->palette.color(QPalette::Window); } qreal t = option->state & QStyle::State_Enabled ? 2.0 : 1.5; if (1) { // ###: work around Qt 4.3.0 bug? (this works for 4.3.1) QConicalGradient border_gradient(r.center(), angle); border_gradient.setColorAt(0.0, dial_color.lighter(120)); border_gradient.setColorAt(0.2, dial_color); border_gradient.setColorAt(0.5, dial_color.darker(130)); border_gradient.setColorAt(0.8, dial_color); border_gradient.setColorAt(1.0, dial_color.lighter(120)); painter->setPen(QPen(border_gradient, t)); } else { painter->setPen(QPen(Qt::red, t)); } #if 0 QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); dial_gradient.setColorAt(0.0, dial_color.darker(105)); dial_gradient.setColorAt(0.5, dial_color.lighter(102)); dial_gradient.setColorAt(1.0, dial_color.lighter(105)); #elif 1 QLinearGradient dial_gradient(option->direction == Qt::LeftToRight ? r.topLeft() : r.topRight(), option->direction == Qt::LeftToRight ? r.bottomRight() : r.bottomLeft()); // QLinearGradient dial_gradient(r.topLeft(), r.bottomLeft()); if (true || option->state & QStyle::State_Enabled) { #if 1 dial_gradient.setColorAt(0.0, dial_color.darker(106)); dial_gradient.setColorAt(1.0, dial_color.lighter(104)); #else dial_gradient.setColorAt(0.0, dial_color.lighter(101)); dial_gradient.setColorAt(0.5, dial_color.darker(103)); dial_gradient.setColorAt(1.0, dial_color.lighter(104)); #endif } else { dial_gradient.setColorAt(0.0, dial_color); dial_gradient.setColorAt(1.0, dial_color); } #elif 0 QConicalGradient dial_gradient(r.center(), angle); dial_gradient.setColorAt(0.0, dial_color.lighter(102)); dial_gradient.setColorAt(0.5, dial_color.darker(103)); dial_gradient.setColorAt(1.0, dial_color.lighter(102)); #else QBrush dial_gradient(dial_color); #endif painter->setBrush(dial_gradient); t = t / 2; painter->drawEllipse(r.adjusted(t, t, -t, -t)); // painter->setPen(Qt::NoPen); // painter->setBrush(dial_color); // painter->drawEllipse(r.adjusted(d / 4, d / 4, - d / 4, - d / 4)); #if 0 QLinearGradient border2_gradient(r.topLeft(), r.bottomRight()); border2_gradient.setColorAt(1.0, dial_color.darker(425)); border2_gradient.setColorAt(0.9, dial_color); border2_gradient.setColorAt(0.0, dial_color.darker(400)); painter->setPen(QPen(border2_gradient, 1.3)); painter->setBrush(Qt::NoBrush); painter->drawEllipse(r.adjusted(0.3, 0.3, -0.3, -0.3)); #endif // painter->restore(); #endif } void paintCachedDialBase(QPainter *painter, const QStyleOptionSlider *option) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; int d = qMin(r.width(), r.height()); if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ d > 128) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_On | QStyle::State_MouseOver | QStyle::State_KeyboardFocusChange | QStyle::State_HasFocus); if (!(state & QStyle::State_Enabled)) { state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus | QStyle::State_KeyboardFocusChange); } // state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-qdb-%x-%x-%llx-%x", state, option->direction, option->palette.cacheKey(), d); } paintIndicatorCached(painter, option, paintDialBase, useCache, pixmapName); } void paintIndicatorDial(QPainter *painter, const QStyleOptionSlider *option) { int d = qMin(option->rect.width(), option->rect.height()); QRect rect(option->rect.center() - QPoint((d - 1) / 2, (d - 1) / 2), QSize(d, d)); QStyleOptionSlider opt; opt.QStyleOption::operator=(*option); opt.rect = rect; paintCachedDialBase(painter, &opt); } /*-----------------------------------------------------------------------*/ void paintBranchChildren(QPainter *painter, const QStyleOption *option) { painter->setBrush(option->palette.color(QPalette::Text)); painter->setPen(Qt::NoPen); const qreal r = qMin(option->rect.width() * 0.5, option->fontMetrics.height() * 0.15); const QPointF center = QRectF(option->rect).center(); painter->drawEllipse(QRectF(center.x() - r, center.y() - r, 2 * r, 2 * r)); } void paintCachedIndicatorBranchChildren(QPainter *painter, const QStyleOption *option) { bool useCache = UsePixmapCache; QString pixmapName; QRect r = option->rect; int d = qMin(r.width(), r.height()); if (/* option->state & (QStyle::State_HasFocus | QStyle::State_MouseOver) ||*/ d > 64) { useCache = false; } if (useCache) { uint state = uint(option->state) & (QStyle::State_Enabled | QStyle::State_Open); // if (!(state & QStyle::State_Enabled)) { // state &= ~(QStyle::State_MouseOver | QStyle::State_HasFocus | QStyle::State_KeyboardFocusChange); // } // state &= ~(QStyle::State_HasFocus); pixmapName.sprintf("scp-qibc-%x-%x-%llx-%x", state, option->direction, option->palette.cacheKey(), d); } paintIndicatorCached(painter, option, paintBranchChildren, useCache, pixmapName); } /* * skulpture_color.cpp * */ #include "skulpture_p.h" #include <QtGui/QApplication> /*-----------------------------------------------------------------------*/ QColor shaded_color(const QColor &color, int shade) { #if 1 const qreal contrast = 1.0; int r, g, b; color.getRgb(&r, &g, &b); int gray = qGray(r, g, b); gray = qMax(r, qMax(g, b)); gray = (r + b + g + 3 * gray) / 6; if (shade < 0) { qreal k = 220.0 / 255.0 * shade; k *= contrast; int a = 255; if (gray > 0) { a = int(k * 255 / (0 - gray)); if (a < 0) a = 0; if (a > 255) a = 255; } return QColor(0, 0, 0, a); } else { qreal k = (255 - 220.0) / (255.0) * shade; k *= contrast; int a = 255; if (gray < 255) { a = int(k * 255 / (255 - gray)); if (a < 0) a = 0; if (a > 255) a = 255; } return QColor(255, 255, 255, a); } #else if (shade < 0) { return QColor(0, 0, 0, -shade); } else { return QColor(255, 255, 255, shade); } #endif } QColor blend_color(const QColor &c0, const QColor &c1, qreal blend) { #if 0 // more exact, but probably slower QColor c; blend = qMin(1.0, qMax(0.0, blend)); c.setRgbF( c0.redF() * (1.0 - blend) + c1.redF() * blend, c0.greenF() * (1.0 - blend) + c1.greenF() * blend, c0.blueF() * (1.0 - blend) + c1.blueF() * blend, c0.alphaF() * (1.0 - blend) + c1.alphaF() * blend ); return c; #else int b = int(0.5 + 256.0 * blend); b = qMin(256, qMax(0, b)); QRgb rgba0 = c0.rgba(); QRgb rgba1 = c1.rgba(); return QColor( qRed(rgba0) + (((qRed(rgba1) - qRed(rgba0)) * b) >> 8), qGreen(rgba0) + (((qGreen(rgba1) - qGreen(rgba0)) * b) >> 8), qBlue(rgba0) + (((qBlue(rgba1) - qBlue(rgba0)) * b) >> 8), qAlpha(rgba0) + (((qAlpha(rgba1) - qAlpha(rgba0)) * b) >> 8) ); #endif } /*-----------------------------------------------------------------------*/ enum ColorScheme { NormalColorScheme, // allow 3D effects DarkColorScheme, // too dark, no 3D effects BrightColorScheme // too bright, no 3D effects }; ColorScheme guessColorScheme(const QPalette &palette, QPalette::ColorGroup colorGroup = QPalette::Active, QPalette::ColorRole colorRole = QPalette::Window) { const QColor windowColor = palette.color(colorGroup, colorRole); int r, g, b; windowColor.getRgb(&r, &g, &b); int brightness = qGray(r, g, b); if (brightness > 230) { return BrightColorScheme; } else if (brightness < 40) { return DarkColorScheme; } return NormalColorScheme; } static void computeAlternateBase(QPalette &palette, QPalette::ColorGroup colorGroup) { switch (guessColorScheme(palette, colorGroup, QPalette::Base)) { case DarkColorScheme: palette.setColor(colorGroup, QPalette::AlternateBase, palette.color(colorGroup, QPalette::Base).lighter(103)); break; case BrightColorScheme: case NormalColorScheme: palette.setColor(colorGroup, QPalette::AlternateBase, palette.color(colorGroup, QPalette::Base).darker(103)); break; } } static void copyColorGroup(QPalette &palette, QPalette::ColorGroup fromColorGroup, QPalette::ColorGroup toColorGroup) { for (int role = int(QPalette::WindowText); role <= int(QPalette::LinkVisited); ++role) { QPalette::ColorRole colorRole = QPalette::ColorRole(role); palette.setColor(toColorGroup, colorRole, palette.color(fromColorGroup, colorRole)); } } static void computeColorGroups(QPalette &palette, bool kdeMode = false, bool makeDisabledWidgetsTransparent = true) { // ### Is this used by pre-Qt 4.5 for HLine / VLine ? palette.setColor(QPalette::Disabled, QPalette::Dark, shaded_color(palette.color(QPalette::Active, QPalette::Window), -20)); palette.setColor(QPalette::Disabled, QPalette::Light, shaded_color(palette.color(QPalette::Active, QPalette::Window), 60)); if (!kdeMode) { // compute remaining colors in Active group computeAlternateBase(palette, QPalette::Active); // copy Active group to Inactive group copyColorGroup(palette, QPalette::Active, QPalette::Inactive); // compute remaining colors in Inactive group computeAlternateBase(palette, QPalette::Inactive); } if (!kdeMode || makeDisabledWidgetsTransparent) { // create Disabled group QColor disabledBackgroundColor = palette.color(QPalette::Active, QPalette::Window); QColor disabledForegroundColor; switch (guessColorScheme(palette, QPalette::Active, QPalette::Window)) { case DarkColorScheme: disabledForegroundColor = palette.color(QPalette::Active, QPalette::Window).lighter(125); break; case BrightColorScheme: case NormalColorScheme: disabledForegroundColor = palette.color(QPalette::Active, QPalette::Window).darker(125); break; } palette.setColor(QPalette::Disabled, QPalette::Window, disabledBackgroundColor); palette.setColor(QPalette::Disabled, QPalette::WindowText, disabledForegroundColor); palette.setColor(QPalette::Disabled, QPalette::Base, disabledBackgroundColor); palette.setColor(QPalette::Disabled, QPalette::Text, disabledForegroundColor); palette.setColor(QPalette::Disabled, QPalette::Link, disabledForegroundColor); palette.setColor(QPalette::Disabled, QPalette::LinkVisited, disabledForegroundColor); palette.setColor(QPalette::Disabled, QPalette::Button, disabledBackgroundColor); palette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledForegroundColor); palette.setColor(QPalette::Disabled, QPalette::Highlight, disabledForegroundColor); palette.setColor(QPalette::Disabled, QPalette::HighlightedText, disabledBackgroundColor); computeAlternateBase(palette, QPalette::Disabled); } } QPalette SkulptureStyle::standardPalette() const { QPalette palette(QColor(205, 205, 205)); palette.setColor(QPalette::Active, QPalette::Base, QColor(229, 229, 229)); palette.setColor(QPalette::Active, QPalette::Text, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::Link, QColor(80, 40, 120)); palette.setColor(QPalette::Active, QPalette::LinkVisited, QColor(80, 50, 80)); palette.setColor(QPalette::Active, QPalette::Highlight, QColor(114, 174, 211)); palette.setColor(QPalette::Active, QPalette::HighlightedText, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::Window, QColor(200, 200, 200)); palette.setColor(QPalette::Active, QPalette::WindowText, QColor(0, 0, 0)); // palette.setColor(QPalette::Active, QPalette::Button, QColor(205, 205, 205)); palette.setColor(QPalette::Active, QPalette::ButtonText, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::Shadow, QColor(0, 0, 0)); palette.setColor(QPalette::Active, QPalette::BrightText, QColor(240, 240, 240)); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) palette.setColor(QPalette::Inactive, QPalette::ToolTipBase, QColor(240, 230, 190)); palette.setColor(QPalette::Inactive, QPalette::ToolTipText, QColor(0, 0, 0)); #endif computeColorGroups(palette); return palette; } void SkulptureStyle::polish(QPalette &palette) { ParentStyle::polish(palette); computeColorGroups(palette, qApp->inherits("KApplication"), d->makeDisabledWidgetsTransparent); } /* * skulpture_combobox.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QApplication> /*-----------------------------------------------------------------------*/ extern void paintComplexControlArea(QPainter *painter, const QStyleOption *option); void paintComboBox(QPainter *painter, const QStyleOptionComboBox *option, const QWidget *widget, const QStyle *style) { QStyleOptionComboBox opt = *option; const bool buttonMode = false; //!option->editable; QRect rect = style->subControlRect(QStyle::CC_ComboBox, option, QStyle::SC_ComboBoxArrow, widget); if (option->subControls & (QStyle::SC_ComboBoxFrame | QStyle::SC_ComboBoxEditField)) { if (buttonMode) { QStyleOptionButton buttonOption; buttonOption.QStyleOption::operator=(opt); if (buttonOption.state & QStyle::State_On) { buttonOption.state |= QStyle::State_Sunken; } else { buttonOption.state &= ~QStyle::State_Sunken; } buttonOption.state &= ~QStyle::State_On; // separator position opt.rect = rect; if (option->direction == Qt::LeftToRight) { opt.rect.setWidth(1); } else { opt.rect.setLeft(rect.left() + rect.width() - 1); } if (option->frame) { style->drawPrimitive(QStyle::PE_PanelButtonCommand, &buttonOption, painter, widget); QColor color = option->palette.color(QPalette::Button); if (!(opt.state & QStyle::State_On)) { opt.rect.translate(option->direction == Qt::LeftToRight ? -1 : 1, 0); } painter->fillRect(opt.rect, shaded_color(color, option->state & QStyle::State_Enabled ? -30 : -15)); if (option->state & QStyle::State_Enabled) { opt.rect.translate(option->direction == Qt::LeftToRight ? 1 : -1, 0); painter->fillRect(opt.rect, shaded_color(color, 80)); } } else { QColor bg = option->palette.color(QPalette::Button); painter->fillRect(option->rect, bg); painter->fillRect(opt.rect, shaded_color(bg, -15)); } } else { int fw = option->frame ? style->pixelMetric(QStyle::PM_ComboBoxFrameWidth, option, widget) : 0; QColor color = option->palette.color(QPalette::Base); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_HasFocus && option->editable) { color = blend_color(color, option->palette.color(QPalette::Highlight), 0.15); } else if (option->state & QStyle::State_MouseOver /*&& !option->editable*/) { color = color.lighter(103); } } QRect edit = style->subControlRect(QStyle::CC_ComboBox, option, QStyle::SC_ComboBoxFrame, widget).adjusted(fw, fw, -fw, -fw); painter->fillRect(edit, color); if (false && option->state & QStyle::State_Enabled && option->rect.height() <= 64) { QLinearGradient panelGradient(option->rect.topLeft(), option->rect.bottomLeft()); if (color.valueF() > 0.9) { panelGradient.setColorAt(0.0, shaded_color(color, -20)); } panelGradient.setColorAt(0.6, shaded_color(color, 0)); panelGradient.setColorAt(1.0, shaded_color(color, 10)); painter->fillRect(edit, panelGradient); } opt.rect = rect; if (!(option->activeSubControls & QStyle::SC_ComboBoxArrow)) { opt.state &= ~QStyle::State_MouseOver; } paintComplexControlArea(painter, &opt); if (option->subControls & QStyle::SC_ComboBoxFrame && option->frame) { QStyleOptionFrame frameOpt; frameOpt.QStyleOption::operator=(*option); frameOpt.rect = style->subControlRect(QStyle::CC_ComboBox, option, QStyle::SC_ComboBoxFrame, widget); frameOpt.state |= QStyle::State_Sunken; frameOpt.lineWidth = fw; frameOpt.midLineWidth = 0; style->drawPrimitive(QStyle::PE_FrameLineEdit, &frameOpt, painter, widget); } } } // arrow if (option->subControls & (QStyle::SC_ComboBoxArrow)) { opt.rect = rect; opt.state &= /*QStyle::State_MouseOver |*/ QStyle::State_Enabled; if (buttonMode) { opt.state &= ~QStyle::State_MouseOver; if (option->state & QStyle::State_On) { int sx = style->pixelMetric(QStyle::PM_ButtonShiftHorizontal, option, widget); int sy = style->pixelMetric(QStyle::PM_ButtonShiftVertical, option, widget); opt.rect.adjust(sx, sy, sx, sy); } } else { opt.palette.setColor(QPalette::ButtonText, opt.palette.color(option->state & QStyle::State_Enabled ? QPalette::WindowText : QPalette::Text)); } style->drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } // focus frame if ((option->state & QStyle::State_HasFocus) && !option->editable) { QStyleOptionFocusRect focus; focus.QStyleOption::operator=(*option); focus.rect = style->subElementRect(QStyle::SE_ComboBoxFocusRect, option, widget); focus.state |= QStyle::State_FocusAtBorder; focus.backgroundColor = option->palette.color(buttonMode ? QPalette::Button : QPalette::Base); style->drawPrimitive(QStyle::PE_FrameFocusRect, &focus, painter, widget); } } void paintComboBoxLabel(QPainter *painter, const QStyleOptionComboBox *option, const QWidget *widget, const QStyle *style) { QStyleOptionComboBox opt = *option; const bool buttonMode = false; //!option->editable; if (!buttonMode) { opt.palette.setColor(QPalette::Base, QColor(0, 0, 0, 0)); } else { painter->save(); painter->setPen(opt.palette.color(QPalette::ButtonText)); if (opt.state & QStyle::State_On) { int sx = style->pixelMetric(QStyle::PM_ButtonShiftHorizontal, option, widget); int sy = style->pixelMetric(QStyle::PM_ButtonShiftVertical, option, widget); opt.rect.adjust(sx, sy, sx, sy); } } ((const QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_ComboBoxLabel, &opt, painter, widget); if (buttonMode) { painter->restore(); } } /*-----------------------------------------------------------------------*/ QRect subControlRectComboBox(const QStyleOptionComboBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { int fw = option->frame ? style->pixelMetric(QStyle::PM_ComboBoxFrameWidth, option, widget) : 0; int bw = style->pixelMetric(QStyle::PM_ScrollBarExtent, option, widget); if (option->editable) bw = qMax(bw, qApp->globalStrut().width()); QRect rect; switch (subControl) { case QStyle::SC_ComboBoxArrow: rect = QRect(option->rect.right() - bw - fw + 1, option->rect.top() + fw, bw, option->rect.height() - 2 * fw); break; case QStyle::SC_ComboBoxEditField: { if (option->editable) { rect = option->rect.adjusted(fw, fw, -fw - bw, -fw); } else { rect = option->rect.adjusted(fw + 4, fw, -fw - bw - 4, -fw); } break; } case QStyle::SC_ComboBoxFrame: default: // avoid warning rect = option->rect; break; } return style->visualRect(option->direction, option->rect, rect); } QRect subElementRectComboBoxFocusRect(const QStyleOptionComboBox *option, const QWidget *widget, const QStyle *style) { int fw = option->frame ? (option->editable ? style->pixelMetric(QStyle::PM_ComboBoxFrameWidth, option, widget) : 4) : 2; int bw = true || option->editable ? qMax(style->pixelMetric(QStyle::PM_ScrollBarExtent, option, widget), qApp->globalStrut().width()) : 0; return style->visualRect(option->direction, option->rect, option->rect.adjusted(fw, fw, -fw - bw, -fw)); } /* * skulpture_complex.cpp * */ #include "skulpture_p.h" /*-----------------------------------------------------------------------*/ extern QRect subControlRectSpinBox(const QStyleOptionSpinBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style); extern QRect subControlRectScrollBar(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style, ArrowPlacementMode horizontalArrowMode, ArrowPlacementMode verticalArrowMode); extern QRect subControlRectSlider(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style); extern QRect subControlRectToolButton(const QStyleOptionToolButton *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style); extern QRect subControlRectComboBox(const QStyleOptionComboBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style); extern QRect subControlRectGroupBox(const QStyleOptionGroupBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style); extern QRect subControlRectTitleBar(const QStyleOptionTitleBar *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style); /*-----------------------------------------------------------------------*/ #define SC_CASE(cc, so) \ case CC_## cc: \ if (option->type == QStyleOption::SO_## so) { \ return subControlRect ## cc((const QStyleOption ## so *) option, subControl, widget, this); \ } \ break QRect SkulptureStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const { switch (control) { SC_CASE(SpinBox, SpinBox); SC_CASE(ComboBox, ComboBox); case CC_ScrollBar: if (option && option && option->type == QStyleOption::SO_Slider) { return subControlRectScrollBar((const QStyleOptionSlider *) option, subControl, widget, this, d->horizontalArrowMode, d->verticalArrowMode); } break; SC_CASE(Slider, Slider); SC_CASE(TitleBar, TitleBar); case CC_Q3ListView: break; SC_CASE(ToolButton, ToolButton); case CC_Dial: break; //#if (QT_VERSION >= QT_VERSION_CHECK(4, 1, 0)) SC_CASE(GroupBox, GroupBox); //#endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) case CC_MdiControls: break; #endif case CC_CustomBase: // avoid warning break; } return ParentStyle::subControlRect(control, option, subControl, widget); } /*-----------------------------------------------------------------------*/ extern QStyle::SubControl hitTestComplexControlScrollBar(const QStyleOptionSlider *option, const QPoint &position, const QWidget *widget, const QStyle *style, ArrowPlacementMode horizontalArrowMode, ArrowPlacementMode verticalArrowMode); /*-----------------------------------------------------------------------*/ #define HIT_CASE(cc, so) \ case CC_## cc: \ if (option->type == QStyleOption::SO_## so) { \ return hitTestComplexControl ## cc((const QStyleOption ## so *) option, position, widget, this); \ } \ break QStyle::SubControl SkulptureStyle::hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const { switch (control) { case CC_ScrollBar: if (option->type == QStyleOption::SO_Slider) { return hitTestComplexControlScrollBar((const QStyleOptionSlider *) option, position, widget, this, d->horizontalArrowMode, d->verticalArrowMode); } break; default: break; } return ParentStyle::hitTestComplexControl(control, option, position, widget); } /*-----------------------------------------------------------------------*/ extern void paintSpinBox(QPainter *painter, const QStyleOptionSpinBox *option, const QWidget *widget, const QStyle *style); extern void paintComboBox(QPainter *painter, const QStyleOptionComboBox *option, const QWidget *widget, const QStyle *style); extern void paintScrollBar(QPainter *painter, const QStyleOptionSlider *option, const QWidget *widget, const QStyle *style, ArrowPlacementMode horizontalArrowMode, ArrowPlacementMode verticalArrowMode); extern void paintSlider(QPainter *painter, const QStyleOptionSlider *option, const QWidget *widget, const QStyle *style); extern void paintToolButton(QPainter *painter, const QStyleOptionToolButton *option, const QWidget *widget, const QStyle *style); extern void paintTitleBar(QPainter *painter, const QStyleOptionTitleBar *option, const QWidget *widget, const QStyle *style); extern void paintQ3ListView(QPainter *painter, const QStyleOptionQ3ListView *option, const QWidget *widget, const QStyle *style); extern void paintDial(QPainter *painter, const QStyleOptionSlider *option, const QWidget *widget, const QStyle *style); //extern void paintGroupBox(QPainter *painter, const QStyleOptionGroupBox *option, const QWidget *widget, const QStyle *style); //extern void paintMdiControls(QPainter *painter, const QStyleOptionComplex *option, const QWidget *widget, const QStyle *style); /*-----------------------------------------------------------------------*/ #define CC_CASE(cc, so) \ case CC_## cc: \ if (option->type == QStyleOption::SO_## so) { \ paint ## cc(painter, (const QStyleOption ## so *) option, widget, this); \ return; \ } \ break void SkulptureStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const { switch (control) { CC_CASE(SpinBox, SpinBox); CC_CASE(ComboBox, ComboBox); case CC_ScrollBar: if (option->type == QStyleOption::SO_Slider) { paintScrollBar(painter, (const QStyleOptionSlider *) option, widget, this, d->horizontalArrowMode, d->verticalArrowMode); return; } break; CC_CASE(Slider, Slider); CC_CASE(ToolButton, ToolButton); CC_CASE(TitleBar, TitleBar); CC_CASE(Q3ListView, Q3ListView); CC_CASE(Dial, Slider); //#if (QT_VERSION >= QT_VERSION_CHECK(4, 1, 0)) case CC_GroupBox: break; //#endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) case CC_MdiControls: break; #endif case CC_CustomBase: // avoid warning break; } ParentStyle::drawComplexControl(control, option, painter, widget); } /* * skulpture_dial.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QAbstractSlider> #include <cmath> /*-----------------------------------------------------------------------*/ extern void paintIndicatorDial(QPainter *painter, const QStyleOptionSlider *option); extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole); void paintDial(QPainter *painter, const QStyleOptionSlider *option, const QWidget *widget, const QStyle *style) { int d = qMin(option->rect.width() & ~1, option->rect.height() & ~1); QStyleOptionSlider opt = *option; const QAbstractSlider *slider; // always highlight knob if pressed (even if mouse is not over knob) if ((option->state & QStyle::State_HasFocus) && (slider = qobject_cast<const QAbstractSlider *>(widget))) { if (slider->isSliderDown()) { opt.state |= QStyle::State_MouseOver; } } // tickmarks opt.palette.setColor(QPalette::Inactive, QPalette::WindowText, QColor(120, 120, 120, 255)); opt.palette.setColor(QPalette::Active, QPalette::WindowText, QColor(120, 120, 120, 255)); opt.state &= ~QStyle::State_HasFocus; opt.rect.setWidth(opt.rect.width() & ~1); opt.rect.setHeight(opt.rect.height() & ~1); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_Dial, &opt, painter, widget); // focus rectangle if (option->state & QStyle::State_HasFocus) { QStyleOptionFocusRect focus; opt.state |= QStyle::State_HasFocus; focus.QStyleOption::operator=(opt); focus.rect.adjust(-1, -1, 1, 1); style->drawPrimitive(QStyle::PE_FrameFocusRect, &focus, painter, widget); } opt.palette = option->palette; // dial base if (d <= 256) { paintIndicatorDial(painter, &opt); } else { // large dials are slow to render, do not render them } // dial knob d -= 6; int gripSize = (option->fontMetrics.height() / 4) * 2 - 1; opt.rect.setSize(QSize(gripSize, gripSize)); opt.rect.moveCenter(option->rect.center()); // angle calculation from qcommonstyle.cpp (c) Trolltech 1992-2007, ASA. qreal angle; int sliderPosition = option->upsideDown ? option->sliderPosition : (option->maximum - option->sliderPosition); int range = option->maximum - option->minimum; if (!range) { angle = M_PI / 2; } else if (option->dialWrapping) { angle = M_PI * 1.5 - (sliderPosition - option->minimum) * 2 * M_PI / range; } else { angle = (M_PI * 8 - (sliderPosition - option->minimum) * 10 * M_PI / range) / 6; } qreal rr = d / 2.0 - gripSize - 2; opt.rect.translate(int(0.5 + rr * cos(angle)), int(0.5 - rr * sin(angle))); paintCachedGrip(painter, &opt, option->state & QStyle::State_Enabled ? QPalette::Button : QPalette::Window); } /* * skulpture_dock.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QDockWidget> /*-----------------------------------------------------------------------*/ void paintFrameDockWidget(QPainter *painter, const QStyleOptionFrame *option) { paintThinFrame(painter, option->rect, option->palette, -60, 160); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); } void paintDockWidgetTitle(QPainter *painter, const QStyleOptionDockWidget *option, const QWidget *widget, const QStyle *style) { const QDockWidget *dock = qobject_cast<const QDockWidget *>(widget); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) const bool vertical = dock && (dock->features() & QDockWidget::DockWidgetVerticalTitleBar); #else const bool vertical = false; #endif const bool floating = dock && dock->isFloating(); QRect r = option->rect; if (floating) { if (vertical) { r.adjust(-3, 3, 0, -3); } else { r.adjust(3, -3, -3, 0); } // painter->fillRect(r.adjusted(1, 1, -1, -1), QColor(30, 40, 80)); } QColor color = option->palette.color(QPalette::Window); paintThinFrame(painter, r, option->palette, 40, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 80); QLinearGradient gradient(r.topLeft(), vertical ? r.topRight() : r.bottomLeft()); gradient.setColorAt(0.0, shaded_color(color, 50)); gradient.setColorAt(0.2, shaded_color(color, 30)); gradient.setColorAt(0.5, shaded_color(color, 0)); gradient.setColorAt(0.51, shaded_color(color, -10)); gradient.setColorAt(1.0, shaded_color(color, -20)); painter->fillRect(r.adjusted(1, 1, -1, -1), gradient); #if 0 QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 255, 50)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->save(); painter->translate(r.center()); painter->scale(r.width() / 2.0 / r.height(), 1); painter->translate(-r.center()); painter->fillRect(r.adjusted(1, 1, -1, -1), dialogGradient2); painter->restore(); #endif QFont font = painter->font(); font.setBold(true); font.setPointSizeF(font.pointSizeF() / 1.19); painter->save(); painter->setFont(font); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) r = style->subElementRect(QStyle::SE_DockWidgetTitleBarText, option, widget); #else // FIXME r = option->rect; #endif // ### fix for Plastique centering if (vertical && option->rect.height() & 1) { if (!floating) { r.adjust(0, 1, 0, 1); } else { r.adjust(0, -1, 0, -1); } } if (floating) { if (vertical) { r.adjust(-1, 12, 3, -10); } else { r.adjust(2, 3, -3, -7); } } else { if (vertical) { r.adjust(0, 8, 4, -8); } else { r.adjust(0, 5, 0, -7); } } if (vertical) { QMatrix mat; QPointF c = r.center(); mat.translate(c.x(), c.y()); mat.rotate(-90); mat.translate(-c.x(), -c.y()); r = mat.mapRect(r); painter->setMatrix(mat, true); } // painter->fillRect(r, Qt::red); painter->setClipRect(r); style->drawItemText(painter, r, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic | Qt::TextHideMnemonic, option->palette, true, option->title, QPalette::WindowText); painter->restore(); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) QRect subElementRectDockWidget(QStyle::SubElement element, const QStyleOptionDockWidget *option, const QWidget *widget, const QStyle *style) { switch (element) { case QStyle::SE_DockWidgetCloseButton: case QStyle::SE_DockWidgetFloatButton: { const QDockWidget *dock = qobject_cast<const QDockWidget *>(widget); bool floating = option->floatable && dock && dock->isFloating(); bool vertical = dock && (dock->features() & QDockWidget::DockWidgetVerticalTitleBar); QRect r = ((QCommonStyle *) style)->QCommonStyle::subElementRect(element, option, widget); if (!vertical) { if (floating) { if (option->direction == Qt::LeftToRight) { return r.adjusted(-6, 0, -6, 0); } else { return r.adjusted(6, 0, 6, 0); } } else { if (option->direction == Qt::LeftToRight) { return r.adjusted(-3, 1, -3, 1); } else { return r.adjusted(3, 1, 3, 1); } } } else { if (floating) { return r.adjusted(0, 6, 0, 6); } else { return r.adjusted(1, 3, 1, 3); } } } case QStyle::SE_DockWidgetTitleBarText: return ((QCommonStyle *) style)->QCommonStyle::subElementRect(element, option, widget).adjusted(4, -3, -4, 5); case QStyle::SE_DockWidgetIcon: return ((QCommonStyle *) style)->QCommonStyle::subElementRect(element, option, widget).adjusted(4, -3, 4, 5); default: // avoid warning return option->rect; } } #endif /* * skulpture_effects.cpp * */ #include "sk_effects.h" /*-----------------------------------------------------------------------*/ /** * Image blurring and sharpening functions * * Currently, these are only used to blur disabled text, but may be * used for other things in the future. * */ /*-----------------------------------------------------------------------*/ #define V_SHIFT 10 #define V_PREC 8 #define V_MIN 0 #define V_MAX ((1 << V_PREC) - 1) #define V_ROUND (1 << (V_SHIFT - V_PREC - 1)) /*-----------------------------------------------------------------------*/ static inline int clampValue(int v) { v = (v + V_ROUND) >> V_SHIFT; return (v < V_MIN ? V_MIN : (v > V_MAX ? V_MAX : v)); } /*-----------------------------------------------------------------------*/ static void sharpenRgbSpan(int count, QRgb *rgb, int offset, int f) { unsigned char *ptr = (unsigned char *) rgb; int v0, v1, v2, v3; v0 = ptr[0] << V_SHIFT; v1 = ptr[1] << V_SHIFT; v2 = ptr[2] << V_SHIFT; v3 = ptr[3] << V_SHIFT; do { ptr += offset; v0 += (((ptr[0] << V_SHIFT) - v0) * f) >> F_SHIFT; ptr[0] = clampValue(v0); v1 += (((ptr[1] << V_SHIFT) - v1) * f) >> F_SHIFT; ptr[1] = clampValue(v1); v2 += (((ptr[2] << V_SHIFT) - v2) * f) >> F_SHIFT; ptr[2] = clampValue(v2); v3 += (((ptr[3] << V_SHIFT) - v3) * f) >> F_SHIFT; ptr[3] = clampValue(v3); } while (--count >= 0); } /*-----------------------------------------------------------------------*/ static void blurRgbSpan(int count, QRgb *rgb, int offset, int f) { unsigned char *ptr = (unsigned char *) rgb; int v0, v1, v2, v3; v0 = ptr[0] << V_SHIFT; v1 = ptr[1] << V_SHIFT; v2 = ptr[2] << V_SHIFT; v3 = ptr[3] << V_SHIFT; do { ptr += offset; v0 += (((ptr[0] << V_SHIFT) - v0) * f) >> F_SHIFT; ptr[0] = (v0 + V_ROUND) >> V_SHIFT; v1 += (((ptr[1] << V_SHIFT) - v1) * f) >> F_SHIFT; ptr[1] = (v1 + V_ROUND) >> V_SHIFT; v2 += (((ptr[2] << V_SHIFT) - v2) * f) >> F_SHIFT; ptr[2] = (v2 + V_ROUND) >> V_SHIFT; v3 += (((ptr[3] << V_SHIFT) - v3) * f) >> F_SHIFT; ptr[3] = (v3 + V_ROUND) >> V_SHIFT; } while (--count >= 0); } /*-----------------------------------------------------------------------*/ void filterRgbPixels(QRgb *rgb, int w, int h, int stride, int f) { if (f < (1 << F_SHIFT)) { if (w >= 2) { int i = h; while (--i >= 0) { blurRgbSpan(w - 2, rgb + i * stride, 4, f); blurRgbSpan(w - 2, rgb + i * stride + w - 1, -4, f); } } if (h >= 2) { int i = w; while (--i >= 0) { blurRgbSpan(h - 2, rgb + i, 4 * stride, f); blurRgbSpan(h - 2, rgb + i + (h - 1) * w, -4 * stride, f); } } } else if (f > (1 << F_SHIFT)) { if (w >= 2) { int i = h; while (--i >= 0) { sharpenRgbSpan(w - 2, rgb + i * stride, 4, f); sharpenRgbSpan(w - 2, rgb + i * stride + w - 1, -4, f); } } if (h >= 2) { int i = w; while (--i >= 0) { sharpenRgbSpan(h - 2, rgb + i, 4 * stride, f); sharpenRgbSpan(h - 2, rgb + i + (h - 1) * w, -4 * stride, f); } } } } /* * skulpture_factory.cpp * */ #include "skulpture_p.h" #include "sk_factory.h" /*-----------------------------------------------------------------------*/ bool AbstractFactory::evalCondition() { Code code = *p++; if (code < Or) { qreal v1 = evalValue(); qreal v2 = evalValue(); switch (code) { case EQ: return qAbs(v1 - v2) < 1.0e-9; case NE: return qAbs(v1 - v2) >= 1.0e-9; case LT: return v1 < v2; case GE: return v1 >= v2; case GT: return v1 > v2; case LE: return v1 <= v2; default: break; } } else { switch (code) { case OptionState: return opt && (opt->state & (1 << *p++)); case OptionRTL: return opt && (opt->direction != Qt::LeftToRight); case OptionVersion: return opt && (opt->version >= *p++); case OptionType: return opt && (!*p || opt->type == *p++); case OptionComplex: return opt && ((!*p && opt->type >= QStyleOption::SO_Complex) || (opt->type == QStyleOption::SO_Complex + *p++)); case FactoryVersion: return version() >= *p++; case Not: return !evalCondition(); case Or: if (evalCondition()) { skipCondition(); return true; } else { return evalCondition(); } case And: if (!evalCondition()) { skipCondition(); return false; } else { return evalCondition(); } default: break; } } return false; } void AbstractFactory::skipCondition() { Code code = *p++; if (code < Or) { skipValue(); skipValue(); } else { skipCondition(); skipCondition(); } } /*-----------------------------------------------------------------------*/ qreal AbstractFactory::evalValue() { Code code = *p++; if (code >= MinVal && code <= MaxVal) { return code * 0.01; } else if (code >= GetVar + MinVar && code <= GetVar + MaxVar) { return var[code - GetVar]; } else if (code >= Add && code <= Max) { qreal v1 = evalValue(); qreal v2 = evalValue(); switch (code) { case Add: return v1 + v2; case Sub: return v1 - v2; case Mul: return v1 * v2; case Div: return v2 != 0 ? v1 / v2 : 0; case Min: return qMin(v1, v2); case Max: return qMax(v1, v2); } } else if (code == Mix) { qreal v = evalValue(); return v * evalValue() + (1 - v) * evalValue(); } else if (code == Cond) { if (evalCondition()) { qreal v = evalValue(); skipValue(); return v; } else { skipValue(); return evalValue(); } } return 0; } void AbstractFactory::skipValue() { Code code = *p++; if (code >= MinVal && code <= MaxVal) { return; } else if (code >= GetVar + MinVar && code <= GetVar + MaxVar) { return; } else if (code >= Add && code <= Max) { skipValue(); skipValue(); return; } else if (code == Mix) { skipValue(); skipValue(); skipValue(); return; } else if (code == Cond) { skipCondition(); skipValue(); skipValue(); return; } } /*-----------------------------------------------------------------------*/ QColor AbstractFactory::evalColor() { Code code = *p++; switch (code) { case RGB: { const quint8 *c = (const quint8 *) p; p += 3; return QColor(c[0], c[1], c[2]); } case RGBA: { const quint8 *c = (const quint8 *) p; p += 4; return QColor(c[0], c[1], c[2], c[3]); } case RGBAf: { qreal v[4]; for (int n = 0; n < 4; ++n) { v[n] = qMin(qMax(qreal(0), evalValue()), qreal(1)); } return QColor::fromRgbF(v[0], v[1], v[2], v[3]); } case Blend: { QColor color0 = evalColor(); QColor color1 = evalColor(); return blend_color(color0, color1, evalValue()); } case Palette: { if (opt) { return opt->palette.color(QPalette::ColorRole(*p++)); } break; } case Shade: { QColor color = evalColor(); return shaded_color(color, int(evalValue() * 200)); } case Darker: { QColor color = evalColor(); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) return color.darker(*p++); #else return color.dark(*p++); #endif } case Lighter: { QColor color = evalColor(); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) return color.lighter(*p++); #else return color.light(*p++); #endif } default: break; } return QColor(); } void AbstractFactory::skipColor() { Code code = *p++; switch (code) { case RGB: { p += 3; return; } case RGBA: { p += 4; return; } case RGBAf: { for (int n = 0; n < 4; ++n) { skipValue(); } return; } case Blend: { skipColor(); skipColor(); skipValue(); return; } case Palette: { ++p; return; } case Shade: { skipColor(); skipValue(); return; } case Darker: case Lighter: { skipColor(); p++; return; } default: break; } } /*-----------------------------------------------------------------------*/ void AbstractFactory::executeCode(Code code) { if (code >= SetVar + MinVar && code <= SetVar + MaxVar) { var[code - SetVar] = evalValue(); } else switch (code) { case Begin: { while (*p != End) { Code code = *p++; executeCode(code); } ++p; return; } case While: { const Code *loop_p = p; int counter = 100; // prevent infinite loop while (evalCondition() && --counter >= 0) { Code code = *p++; executeCode(code); p = loop_p; } Code code = *p++; skipCode(code); return; } case If: { if (evalCondition()) { Code code = *p++; executeCode(code); if (*p == Else) { ++p; Code code = *p++; skipCode(code); } } else { Code code = *p++; skipCode(code); if (*p == Else) { ++p; Code code = *p++; executeCode(code); } } return; } } } void AbstractFactory::skipCode(Code code) { if (code >= SetVar + MinVar && code <= SetVar + MaxVar) { skipValue(); } else switch (code) { case Begin: { while (*p != End) { Code code = *p++; skipCode(code); } ++p; return; } case While: { skipCondition(); Code code = *p++; skipCode(code); return; } case If: { skipCondition(); Code code = *p++; skipCode(code); if (*p == Else) { ++p; Code code = *p++; skipCode(code); } return; } } } /*-----------------------------------------------------------------------*/ void AbstractFactory::create() { if (p != 0) { while (*p != End) { Code code = *p++; executeCode(code); } } } /* * skulpture_frames.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractSpinBox> #include <QtGui/QSpinBox> #include <QtGui/QDoubleSpinBox> #include <QtGui/QAbstractItemView> #include <QtGui/QMouseEvent> #include <QtGui/QApplication> #include <QtGui/QComboBox> #include <QtGui/QPainter> #include <QtGui/QLCDNumber> #include <QtGui/QLineEdit> #include <cmath> /*-----------------------------------------------------------------------*/ static void paintThinFrame(QPainter *painter, const QRect &rect, const QBrush &brush1, const QBrush &brush2) { painter->fillRect(QRect(rect.left() + 1, rect.top(), rect.width() - 1, 1), brush2); painter->fillRect(QRect(rect.left(), rect.top(), 1, rect.height()), brush2); painter->fillRect(QRect(rect.left(), rect.bottom(), rect.width() - 1, 1), brush1); painter->fillRect(QRect(rect.right(), rect.top(), 1, rect.height()), brush1); } static const QBrush shaded_brush(const QPalette &palette, int shade, QPalette::ColorRole bgrole) { return (shaded_color(palette.color(bgrole), shade)); } /*-----------------------------------------------------------------------*/ /** * paintThinFrame - paint a single pixel wide frame * * Paints a frame _inside_ the specified rectangle, using * a single pixel wide pen. The frame is rendered by darkening * or brightening the pixels in that area; no specific color * can be selected. * * dark and light specify how dark or bright the frame should * be rendered. They are either negative (meaning darkening), * or positive (meaning brigthening). * * TODO: * dark and light are arbitrary values; they need adjustment. * */ void paintThinFrame(QPainter *painter, const QRect &rect, const QPalette &palette, int dark, int light, QPalette::ColorRole bgrole) { paintThinFrame(painter, rect, shaded_brush(palette, dark, bgrole), shaded_brush(palette, light, bgrole)); } void paintRecessedFrame(QPainter *painter, const QRect &rect, const QPalette &palette, enum RecessedFrame rf, QPalette::ColorRole bgrole) { paintThinFrame(painter, rect, palette, 30, -20, bgrole); paintThinFrame(painter, rect.adjusted(1, 1, -1, -1), palette, -20, -70, bgrole); paintRecessedFrameShadow(painter, rect.adjusted(2, 2, -2, -2), rf); } /*-----------------------------------------------------------------------*/ void paintFrameGroupBox(QPainter *painter, const QStyleOptionFrame *option) { QRect r = option->rect; r.setHeight(/*r.height() +*/ 2); paintThinFrame(painter, r, option->palette, 60, -20); // paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60); } static inline bool is_popup_menu(const QWidget *widget) { if (widget) { Qt::WindowFlags flags = widget->windowFlags(); Qt::WindowType type = Qt::WindowType(int(flags & Qt::WindowType_Mask)); if ((type & Qt::Window) && (flags & Qt::FramelessWindowHint || type == Qt::Popup)) { return true; } } return false; } void paintStyledFrame(QPainter *painter, const QStyleOptionFrame *option, const QWidget *widget, const QStyle * /*style*/) { QPalette::ColorRole bgrole = widget ? widget->backgroundRole() : QPalette::Window; if (option->state & QStyle::State_Sunken) { if (qobject_cast<const QFrame *>(widget) && widget->parentWidget() && widget->parentWidget()->inherits("KFontRequester")) { paintThinFrame(painter, option->rect, option->palette, 60, -20); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); QLinearGradient panelGradient(option->rect.topLeft(), option->rect.bottomLeft()); panelGradient.setColorAt(0.6, QColor(0, 0, 0, 0)); panelGradient.setColorAt(1.0, shaded_color(option->palette.color(QPalette::Window), 70)); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), panelGradient); } else { /* if (option->palette.color(QPalette::Base) == QColor(220, 230, 210)) { painter->fillRect(option->rect.adjusted(2, 2, -2, -2), option->palette.color(QPalette::Base)); paintRecessedFrame(painter, option->rect, option->palette, RF_Small); } else*/ { RecessedFrame rf = RF_Large; if (!(option->state & QStyle::State_Enabled) || (widget && (!widget->isEnabled() || qobject_cast<const QLCDNumber *>(widget)))) { rf = RF_Small; } if (qobject_cast<const QAbstractItemView *>(widget) || (widget && widget->inherits("Q3ScrollView"))) { const QList<QObject *> children = widget->children(); Q_FOREACH (QObject *child, children) { if (qobject_cast<FrameShadow *>(child)) { rf = RF_None; break; } } } paintRecessedFrame(painter, option->rect, option->palette, rf); } } } else if (option->state & QStyle::State_Raised) { QRect r = option->rect; if (option->lineWidth == 0) { paintThinFrame(painter, r, option->palette, -20, 60); } else { paintThinFrame(painter, r, option->palette, -10, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -40, 80, bgrole); // painter->fillRect(option->rect, Qt::red); } } else { // Plain if (qobject_cast<const QFrame *>(widget) && widget->parentWidget() && widget->parentWidget()->inherits("KTitleWidget")) { QRect r = option->rect; bgrole = QPalette::Window; // bgrole = QPalette::Base; #if 1 QColor bgcolor = option->palette.color(bgrole); #else QColor bgcolor = QColor(230, 230, 230); #endif // painter->fillRect(r.adjusted(1, 1, -1, -1), bgcolor); paintThinFrame(painter, r, option->palette, -10, -20); // painter->fillRect(r.adjusted(1, 1, -1, -1), QColor(200, 190, 160)); // painter->fillRect(r.adjusted(1, 1, -1, -1), QColor(240, 240, 240)); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -30, 80, bgrole); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); gradient.setColorAt(0.0, shaded_color(bgcolor, 90)); gradient.setColorAt(0.2, shaded_color(bgcolor, 60)); gradient.setColorAt(0.5, shaded_color(bgcolor, 0)); gradient.setColorAt(0.51, shaded_color(bgcolor, -10)); gradient.setColorAt(1.0, shaded_color(bgcolor, -20)); painter->fillRect(r.adjusted(1, 1, -1, -1), gradient); #if 0 QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 255, 50)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->save(); painter->translate(r.center()); painter->scale(r.width() / 2.0 / r.height(), 1); painter->translate(-r.center()); painter->fillRect(r.adjusted(1, 1, -1, -1), dialogGradient2); painter->restore(); #endif } else if (is_popup_menu(widget)) { QRect r = option->rect; paintThinFrame(painter, r, option->palette, -60, 160); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60, bgrole); } else { QRect r = option->rect; paintThinFrame(painter, r, option->palette, 60, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60, bgrole); } } } void paintFrameLineEdit(QPainter *painter, const QStyleOptionFrame *option) { paintRecessedFrame(painter, option->rect, option->palette, RF_Small); } class LineEditHack : public QLineEdit { public: QRect cursorRectHack() const { #if QT_VERSION >= QT_VERSION_CHECK(4, 4, 0) return cursorRect(); #else return inputMethodQuery(Qt::ImMicroFocus).toRect(); #endif } }; static QRect getCursorRect(const QWidget *widget) { if (const QLineEdit *lineEdit = qobject_cast<const QLineEdit *>(widget)) { const LineEditHack *lineEditHack = reinterpret_cast<const LineEditHack *>(lineEdit); /*if (lineEdit->cursorPosition() != lineEdit->text().length())*/ { return lineEditHack->cursorRectHack(); } } return QRect(); } void lineEditMouseMoved(QLineEdit *lineEdit, QMouseEvent *event) { if (!lineEdit->hasFocus()) { QAbstractSpinBox *spinBox = qobject_cast<QAbstractSpinBox *>(lineEdit->parentWidget()); int oldCursorPosition = lineEdit->cursorPosition(); int newCursorPosition = lineEdit->cursorPositionAt(event->pos()); if (spinBox && lineEdit->text() == spinBox->specialValueText()) { // newCursorPosition = lineEdit->text().length(); } else { if (QSpinBox *spinBox = qobject_cast<QSpinBox *>(lineEdit->parentWidget())) { newCursorPosition = qBound(spinBox->prefix().length(), newCursorPosition, lineEdit->text().length() - spinBox->suffix().length()); } else if (QDoubleSpinBox *spinBox = qobject_cast<QDoubleSpinBox *>(lineEdit->parentWidget())) { newCursorPosition = qBound(spinBox->prefix().length(), newCursorPosition, lineEdit->text().length() - spinBox->suffix().length()); } } if (oldCursorPosition != newCursorPosition) { lineEdit->update(getCursorRect(lineEdit).adjusted(-4, -16, 4, 16)); lineEdit->setCursorPosition(newCursorPosition); lineEdit->update(getCursorRect(lineEdit).adjusted(-4, -16, 4, 16)); } } } void paintPanelLineEdit(QPainter *painter, const QStyleOptionFrame *option, const QWidget *widget, const QStyle *style) { QPalette::ColorRole bgrole = widget ? widget->backgroundRole() : QPalette::Window; bool focus = (option->state & QStyle::State_HasFocus) && !(option->state & QStyle::State_ReadOnly); int fw = option->lineWidth; if (option->palette.brush(bgrole).style() == Qt::SolidPattern) { QRect cursorRect; QColor color = option->palette.color(bgrole); // printf("style=%d, bgrole=%d, panel color: r=%d, g=%d, b=%d, a=%d\n", option->palette.brush(bgrole).style(), bgrole, color.red(), color.green(), color.blue(), color.alpha()); if (focus && color.alpha() > 0) { color = blend_color(color, option->palette.color(QPalette::Highlight), 0.15); } else { focus = false; #if 1 if (option->state & QStyle::State_MouseOver && option->state & QStyle::State_Enabled && !(option->state & QStyle::State_ReadOnly)) { color = color.lighter(103); cursorRect = getCursorRect(widget); } else if (widget) { QWidget *box = widget->parentWidget(); if (qobject_cast<QComboBox *>(box) || qobject_cast<QAbstractSpinBox *>(box)) { if (box->underMouse() && option->state & QStyle::State_Enabled) { QAbstractSpinBox *spinBox = qobject_cast<QAbstractSpinBox *>(box); if (!spinBox || !spinBox->isReadOnly()) { color = color.lighter(103); } } } } #endif } painter->fillRect(option->rect.adjusted(fw, fw, -fw, -fw), color); if (false && option->state & QStyle::State_Enabled && option->rect.height() <= 64) { QLinearGradient panelGradient(option->rect.topLeft(), option->rect.bottomLeft()); if (color.valueF() > 0.9) { panelGradient.setColorAt(0.0, shaded_color(color, -20)); } panelGradient.setColorAt(0.6, shaded_color(color, 0)); panelGradient.setColorAt(1.0, shaded_color(color, 10)); painter->fillRect(option->rect.adjusted(fw, fw, -fw, -fw), panelGradient); } if (!cursorRect.isEmpty()) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) QRect cursor = style->subElementRect(QStyle::SE_LineEditContents, option, widget).adjusted(0, 2, 0, -3); #else QRect cursor = option->rect.adjusted(0, fw + 2, 0, -fw - 3); #endif if (cursor.height() != option->fontMetrics.height() - 1) { cursor.adjust(0, 1, 0, 0); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) int cursorWidth = style->pixelMetric(QStyle::PM_TextCursorWidth, option, widget); #else int cursorWidth = style->pixelMetric((QStyle::PixelMetric)((int) QStyle::PM_CustomBase + 1), option, widget); #endif cursor.setLeft(cursorRect.center().x() + 1 - (cursorWidth >> 1)); cursor.setWidth(cursorWidth); cursor.setTop(cursor.top() + ((cursor.height() - option->fontMetrics.height() + 2) >> 1)); cursor.setHeight(cursorRect.height() - 2); QColor color = option->palette.color(QPalette::Text); color.setAlpha(60); painter->fillRect(cursor, color); painter->fillRect(QRect(cursor.left() - cursorWidth, cursor.top() - 1, cursorWidth, 1), color); painter->fillRect(QRect(cursor.left() + cursorWidth, cursor.top() - 1, cursorWidth, 1), color); painter->fillRect(QRect(cursor.left() - cursorWidth, cursor.bottom() + 1, cursorWidth, 1), color); painter->fillRect(QRect(cursor.left() + cursorWidth, cursor.bottom() + 1, cursorWidth, 1), color); } } if (focus && option->state & QStyle::State_KeyboardFocusChange) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) QColor color = option->palette.color(QPalette::Highlight).darker(120); #else QColor color = option->palette.color(QPalette::Highlight).dark(120); #endif color.setAlpha(120); QRect r = option->rect.adjusted(fw + 2, fw + 2, -fw - 2, -fw - 2); r.setTop(r.top() + r.height() - 1); painter->fillRect(r, color); } if (fw) { if (option->state & QStyle::State_ReadOnly && !(option->state & QStyle::State_Enabled)) { paintThinFrame(painter, option->rect, option->palette, 60, -20); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); } else { paintRecessedFrame(painter, option->rect, option->palette, option->rect.height() <= 64 ? RF_Small : RF_Small); } } else if (widget && widget->parent() && (qobject_cast<QAbstractSpinBox *>(widget->parent()) || qobject_cast<QComboBox *>(widget->parent()))) { if (option->palette.brush(bgrole).style() != Qt::SolidPattern) { /* Fix Qt stylesheet demo */ return; } // we need to adjust shadows to the real frame, not that of the line edit int left = widget->geometry().left()/*, right = widget->geometry().right()*/; QComboBox *combo = qobject_cast<QComboBox *>(widget->parent()); int parentFrameWidth; if (combo) { if (!combo->hasFrame()) { return; } parentFrameWidth = style->pixelMetric(QStyle::PM_ComboBoxFrameWidth, option, widget); } else { QAbstractSpinBox *spin = qobject_cast<QAbstractSpinBox *>(widget->parent()); if (spin && !spin->hasFrame()) { return; } parentFrameWidth = style->pixelMetric(QStyle::PM_SpinBoxFrameWidth, option, widget); } // FIXME use correct right adjustment paintRecessedFrameShadow(painter, option->rect.adjusted(parentFrameWidth - left, 0, 100, 0), option->rect.height() <= 64 ? RF_Small : RF_Small); } } void paintFrameFocusRect(QPainter *painter, const QStyleOptionFocusRect *option, const QWidget *widget) { if (!(option->state & QStyle::State_KeyboardFocusChange)) { return; } if (option->state & QStyle::State_Item) { if (widget && widget->window() && !widget->window()->testAttribute(Qt::WA_KeyboardFocusChange)) { return; } } QColor color = option->palette.color(QPalette::Highlight); color.setAlpha(20); painter->fillRect(option->rect, color); // painter->fillRect(option->rect.adjusted(1, 1, -1, -1), color); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), color); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) color = color.darker(120); #else color = color.dark(120); #endif color.setAlpha(230); painter->fillRect(option->rect.adjusted(0, option->rect.height() - 1, 0, 0), color); } //#if (QT_VERSION >= QT_VERSION_CHECK(4, 1, 0)) QRect subControlRectGroupBox(const QStyleOptionGroupBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { switch (subControl) { case QStyle::SC_GroupBoxContents: return option->rect.adjusted(0, option->fontMetrics.height(), 0, 0); case QStyle::SC_GroupBoxCheckBox: case QStyle::SC_GroupBoxLabel: { if (!(option->features & QStyleOptionFrameV2::Flat)) { int x = option->direction == Qt::LeftToRight ? -8 : 8; int y = (subControl == QStyle::SC_GroupBoxCheckBox) ? 0 : 1; return ((const QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_GroupBox, option, subControl, widget).adjusted(x, y, x, y); } break; } default: break; } return ((const QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_GroupBox, option, subControl, widget); } //#endif /*-----------------------------------------------------------------------*/ QGradient path_edge_gradient(const QRectF &rect, const QStyleOption *option, const QPainterPath &path, const QColor &color2, const QColor &color1) { QPointF c = rect.center(); QColor color[8]; if (/*true ||*/ option->direction == Qt::LeftToRight) { color[0] = blend_color(QColor(255, 255, 255, 255), color1, 0.5); color[1] = color1; color[2] = blend_color(color1, color2, 0.5); color[3] = color2; // color[3] = color1; color[4] = blend_color(QColor(0, 0, 0, 255), color2, 0.5); color[5] = color2; color[6] = blend_color(color2, color1, 0.5); color[7] = color1; // color[7] = color2; } else { color[2] = blend_color(QColor(255, 255, 255, 255), color1, 0.5); color[1] = color1; color[0] = blend_color(color1, color2, 0.5); color[7] = color2; // color[7] = color1; color[6] = blend_color(QColor(0, 0, 0, 255), color2, 0.5); color[5] = color2; color[4] = blend_color(color2, color1, 0.5); color[3] = color1; // color[3] = color2; } QConicalGradient gradient(c, 0); Q_UNUSED(path); qreal angle; qreal d = 1; QRectF r = rect.adjusted(1, 1, -1, -1); { QRectF rect = r; gradient.setColorAt(0.0, color[3]); angle = atan2(rect.top() + d - c.y(), rect.right() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[3]); angle = atan2(rect.top() - c.y(), rect.right() - d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[5]); angle = atan2(rect.top() - c.y(), rect.left() + d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[5]); angle = atan2(rect.top() + d - c.y(), rect.left() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[7]); angle = atan2(rect.bottom() - d - c.y(), rect.left() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[7]); angle = atan2(rect.bottom() - c.y(), rect.left() + d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[1]); angle = atan2(rect.bottom() - c.y(), rect.right() - d - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[1]); angle = atan2(rect.bottom() - d - c.y(), rect.right() - c.x()); if (angle < 0) angle += M_PI * 2.0; gradient.setColorAt(angle / 2.0 / M_PI, color[3]); gradient.setColorAt(1.0, color[3]); } return gradient; } /* * skulpture_gradients.cpp * */ #include "skulpture_p.h" #include "sk_factory.h" /*-----------------------------------------------------------------------*/ /** * GradientFactory - create a QGradient from a description * * The gradient description is a bytecode stream that allows simple arithmetic, * conditionals, and looping. * */ /*-----------------------------------------------------------------------*/ void GradientFactory::executeCode(Code code) { qreal v; switch (code) { case ColorAt: v = evalValue(); gradient.setColorAt(v, evalColor()); break; default: AbstractFactory::executeCode(code); break; } } void GradientFactory::skipCode(Code code) { switch (code) { case ColorAt: skipValue(); skipColor(); break; default: AbstractFactory::skipCode(code); break; } } /*-----------------------------------------------------------------------*/ QGradient GradientFactory::createGradient(GradientFactory::Description description, qreal var[]) { GradientFactory factory; factory.setDescription(description); for (int n = MinVar; n <= MaxVar; ++n) { factory.setVar(n, var[n]); } factory.create(); for (int n = MinVar; n <= MaxVar; ++n) { var[n] = factory.getVar(n); } return factory.getGradient(); } QGradient GradientFactory::createGradient(GradientFactory::Description description) { GradientFactory factory; factory.setDescription(description); factory.create(); return factory.getGradient(); } /* * skulpture_header.cpp * */ #include "skulpture_p.h" #include "sk_factory.h" #include <QtGui/QPainter> #include <QtGui/QHeaderView> /*-----------------------------------------------------------------------*/ void paintHeaderEmptyArea(QPainter *painter, const QStyleOption *option) { if (option->state & QStyle::State_Enabled) { painter->fillRect(option->rect, option->palette.color(QPalette::Window).lighter(107)); } else { painter->fillRect(option->rect, option->palette.color(QPalette::Window).darker(104)); } if (option->state & QStyle::State_Horizontal) { paintThinFrame(painter, option->rect.adjusted(0, -2, 32000, -1), option->palette, -20, 60); // painter->fillRect(option->rect.adjusted(0, option->rect.height() - 1, 0, 0), QColor(255, 255, 255, 160)); } else { paintThinFrame(painter, option->rect.adjusted(-2, 0, -1, 32000), option->palette, -20, 60); // painter->fillRect(option->rect.adjusted(option->rect.width() - 1, 0, 0, 0), QColor(255, 255, 255, 160)); } } static bool isHeaderEnabled(const QStyleOptionHeader *option, const QWidget *widget) { bool enabled = true; if (!(option->state & QStyle::State_Enabled)) { enabled = false; if (widget && widget->inherits("Q3Header")) { enabled = widget->isEnabled(); } } return enabled; } void paintHeaderSection(QPainter *painter, const QStyleOptionHeader *option, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); if (!(option->state & (QStyle::State_Raised | QStyle::State_Sunken))) { painter->fillRect(option->rect, option->palette.color(QPalette::Window).darker(104)); paintRecessedFrame(painter, option->rect.adjusted(-9, -9, 3, 3), option->palette, RF_Small); painter->fillRect(QRect(option->rect.right(), option->rect.bottom(), 1, 1), option->palette.color(QPalette::Window)); } else { if (isHeaderEnabled(option, widget)) { bool hover = false; const QHeaderView *view = qobject_cast<const QHeaderView *>(widget); if (view && (view->isClickable() || view->isMovable())) { hover = option->state & QStyle::State_MouseOver; } painter->fillRect(option->rect, option->palette.color(QPalette::Base).darker(hover ? 104 : (option->state & QStyle::State_On ? 120 : 106))); } else { painter->fillRect(option->rect, option->palette.color(QPalette::Window).darker(104)); } if (true || !(option->state & QStyle::State_On)) { if (option->orientation == Qt::Horizontal) { const QHeaderView *view = qobject_cast<const QHeaderView *>(widget); if (view && view->rect().right() == option->rect.right()) { paintThinFrame(painter, option->rect.adjusted(0, -2, 1, -1), option->palette, -20, 60); } else { paintThinFrame(painter, option->rect.adjusted(0, -2, 0, -1), option->palette, -20, 60); } } else { if (option->direction == Qt::LeftToRight) { paintThinFrame(painter, option->rect.adjusted(-2, 0, -1, 0), option->palette, -20, 60); } else { paintThinFrame(painter, option->rect.adjusted(1, 0, 2, 0), option->palette, -20, 60); } } } #if 0 if (option->orientation == Qt::Horizontal) { painter->fillRect(option->rect.adjusted(0, option->rect.height() - 1, 0, 0), QColor(255, 255, 255, 160)); } else { painter->fillRect(option->rect.adjusted(option->rect.width() - 1, 0, 0, 0), QColor(255, 255, 255, 160)); } #endif } } void paintHeaderLabel(QPainter *painter, const QStyleOptionHeader *option, const QWidget *widget, const QStyle *style) { QStyleOptionHeader opt = *option; if (isHeaderEnabled(option, widget)) { opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::Text)); } else { opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::WindowText)); } painter->save(); if (widget) { painter->setFont(widget->font()); } ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_HeaderLabel, &opt, painter, widget); painter->restore(); } static const ShapeFactory::Code headerSortIndicatorShapeDescription[] = { Pmove(-1, 1), Pline(1, 1), Pline(0, -1), Pend }; void paintHeaderSortIndicator(QPainter *painter, const QStyleOptionHeader *option) { int h = option->fontMetrics.height() / 2 + 2; int w = option->fontMetrics.height() / 4 + 2; QPainterPath path; h /= 2; w /= 2; if (option->sortIndicator == QStyleOptionHeader::SortDown) { h = -h; } painter->save(); painter->setRenderHint(QPainter::Antialiasing, true); painter->translate(option->rect.center()); painter->translate(0.5, 1.5); painter->setPen(Qt::NoPen); QColor color = option->palette.color(option->state & QStyle::State_Enabled ? QPalette::Text : QPalette::WindowText); color.setAlphaF(0.6 * color.alphaF()); painter->setBrush(color); QMatrix matrix(w, 0, 0, h, 0, 0); painter->drawPath(matrix.map(ShapeFactory::createShape(headerSortIndicatorShapeDescription))); painter->restore(); } /* * skulpture_icons.cpp * */ #include "skulpture_p.h" #include "sk_factory.h" #include <QtCore/QSettings> #include <QtGui/QStyleOption> #include <QtGui/QDockWidget> #include <QtGui/QFrame> #include <QtGui/QPainter> #include "sk_effects.h" #include <cstdlib> /*-----------------------------------------------------------------------*/ QPixmap SkulptureStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *option, const QWidget *widget) const { return ParentStyle::standardPixmap(standardPixmap, option, widget); } /*-----------------------------------------------------------------------*/ /** * decorationShape - get shape for window decoration button * * The coordinate system is -1 ... 1 for each dimension, with * (0, 0) being at the center, and positive coordinates pointing * down and to the right. * */ static const ShapeFactory::Code titleBarMenuButtonDescription[] = { Pmove(0, 0.6), Pline(0.6, 0), Pline(0, -0.6), Pline(-0.6, 0), Pend }; static const ShapeFactory::Code titleBarCloseButtonDescription[] = { #define kx3 0.3 Pmove(-1, -1), Pline(0, -kx3), Pline(1, -1), Pline(kx3, 0), Pline(1, 1), Pline(0, kx3), Pline(-1, 1), Pline(-kx3, 0), Pend }; static const ShapeFactory::Code titleBarShadeButtonDescription[] = { Pmove(-1, -0.4), Pline(0, -0.6), Pline(1, -0.4), Pline(0, -1), Pend }; static const ShapeFactory::Code titleBarUnshadeButtonDescription[] = { Pmove(-1, -1), Pline(0, -0.8), Pline(1, -1), Pline(0, -0.4), Pend }; static const ShapeFactory::Code titleBarMinButtonDescription[] = { Pmove(-1, 0.4), Pline(0, 0.6), Pline(1, 0.4), Pline(0, 1), Pend }; static const ShapeFactory::Code titleBarMaxButtonDescription[] = { #define kx1 0.8 #define kx2 0.55 Pmove(0, -1), Pline(1, 0), Pline(0, 1), Pline(-1, 0), Pclose, Pmove(0, -kx2), Pline(-kx1, 0), Pline(0, kx2), Pline(kx1, 0), Pend, }; static const ShapeFactory::Code titleBarNormalButtonDescription[] = { Pmove(0, -1), Pline(1, 0), Pline(0, 1), Pline(-1, 0), Pclose, Pmove(0, -kx1), Pline(-kx2, 0), Pline(0, kx1), Pline(kx2, 0), Pend, }; static const ShapeFactory::Code titleBarHelpButtonDescription[] = { Pmove(0.0305, 0.513), Pline(-0.0539, 0.513), Pline(0.0117, 0.227), Pline(0.22, -0.0859), Pline(0.38, -0.323), Pline(0.417, -0.491), Pline(0.279, -0.767), Pline(-0.0609, -0.87), Pline(-0.342, -0.814), Pline(-0.445, -0.692), Pline(-0.383, -0.568), Pline(-0.321, -0.456), Pline(-0.368, -0.373), Pline(-0.483, -0.339), Pline(-0.64, -0.396), Pline(-0.71, -0.555), Pline(-0.512, -0.827), Pline(0.0281, -0.947), Pline(0.649, -0.783), Pline(0.797, -0.516), Pline(0.73, -0.31), Pline(0.476, -0.0625), Pline(0.111, 0.255), Pclose, Pmove(0.00234, 0.681), Pline(0.165, 0.726), Pline(0.232, 0.834), Pline(0.164, 0.943), Pline(0.00234, 0.988), Pline(-0.158, 0.943), Pline(-0.225, 0.834), Pline(-0.158, 0.726), Pend }; static const ShapeFactory::Code titleBarStickyButtonDescription[] = { Pmove(0, -1), Pline(0.2, -0.2), Pline(1, 0), Pline(0.2, 0.2), Pline(0, 1), Pline(-0.2, 0.2), Pline(-1, 0), Pline(-0.2, -0.2), Pend }; static const ShapeFactory::Code titleBarUnstickyButtonDescription[] = { Pmove(0, -0.2), Pline(1, 0), Pline(0, 0.2), Pline(-1, 0), Pend }; static const ShapeFactory::Code titleBarAboveButtonDescription[] = { Pmove(0, -0.2), Pline(1, 0), Pline(0, 0.2), Pline(-1, 0), Pclose, Pmove(-1, -0.4), Pline(0, -0.6), Pline(1, -0.4), Pline(0, -1), Pend }; static const ShapeFactory::Code titleBarBelowButtonDescription[] = { Pmove(0, -0.2), Pline(1, 0), Pline(0, 0.2), Pline(-1, 0), Pclose, Pmove(-1, 0.4), Pline(0, 0.6), Pline(1, 0.4), Pline(0, 1), Pend }; static const ShapeFactory::Code titleBarUnaboveButtonDescription[] = { Pmove(0, -0.2), Pline(1, 0), Pline(0, 0.2), Pline(-1, 0), Pclose, Pmove(-1, -1), Pline(0, -0.8), Pline(1, -1), Pline(0, -0.4), Pend }; static const ShapeFactory::Code titleBarUnbelowButtonDescription[] = { Pmove(0, -0.2), Pline(1, 0), Pline(0, 0.2), Pline(-1, 0), Pclose, Pmove(-1, 1), Pline(0, 0.8), Pline(1, 1), Pline(0, 0.4), Pend }; static const ShapeFactory::Code toolBarHorizontalExtensionButtonDescription[] = { Pmove(-1, -1), Pline(0, 0), Pline(-1, 1), Pline(-0.5, 0), Pclose, Pmove(0, -1), Pline(1, 0), Pline(0, 1), Pline(0.5, 0), Pend }; static const ShapeFactory::Code toolBarVerticalExtensionButtonDescription[] = { Pmove(-1, -1), Pline(0, -0.5), Pline(1, -1), Pline(0, 0), Pclose, Pmove(-1, 0), Pline(0, 0.5), Pline(1, 0), Pline(0, 1), Pend }; static const ShapeFactory::Code * const titleBarButtonDescriptions[] = { titleBarMenuButtonDescription, titleBarMinButtonDescription, titleBarMaxButtonDescription, titleBarCloseButtonDescription, titleBarNormalButtonDescription, titleBarShadeButtonDescription, titleBarUnshadeButtonDescription, titleBarHelpButtonDescription }; static const ShapeFactory::Code * const titleBarCustomDescriptions[] = { 0, // CustomBase intentionally left blank titleBarStickyButtonDescription, titleBarUnstickyButtonDescription, 0, // this used to be titleBarIconDescription titleBarAboveButtonDescription, titleBarBelowButtonDescription, titleBarUnaboveButtonDescription, titleBarUnbelowButtonDescription }; //static QPainterPath growPath(const QPainterPath &path, double offset, Qt::PenJoinStyle style = Qt::MiterJoin) //{ // QPainterPathStroker stroker; // QPainterPath path2; // QPainterPath res; // bool add; // // if (offset > 0) { // stroker.setWidth(2.0 * offset); // add = false; // } else if (offset < 0) { // stroker.setWidth(-2.0 * offset); // add = true; // } else { // return path; // } // stroker.setCapStyle(Qt::FlatCap); // stroker.setJoinStyle(style); // stroker.setDashPattern(Qt::SolidLine); // stroker.setCurveThreshold(0.1); // path2 = stroker.createStroke(path); // // for (int i = 0; i < path2.elementCount(); ++i) { // const QPainterPath::Element &element = path2.elementAt(i); // switch (element.type) // { // case QPainterPath::MoveToElement: // // copy every other subpath, extracting either inner or outer winding. // add = !add; // if (add) { // res.moveTo(element.x, element.y); // } // break; // case QPainterPath::LineToElement: // if (add) { // res.lineTo(element.x, element.y); // } // break; // case QPainterPath::CurveToElement: { // const QPainterPath::Element &element1 = path2.elementAt(++i); // const QPainterPath::Element &element2 = path2.elementAt(++i); // if (add) { // res.cubicTo(element.x, element.y, element1.x, element1.y, element2.x, element2.y); // } // break; // } // case QPainterPath::CurveToDataElement: // break; // } // } // res.setFillRule(Qt::WindingFill); //#if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) // res = res.simplified(); //#endif // if (offset < 0) { // return res.toReversed(); // } // return res; //} QIcon SkulptureStyle::standardIconImplementation(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const { const ShapeFactory::Code *code = 0; int numStates = 1; int size = 10; if (standardIcon > QStyle::SP_CustomBase) { if (standardIcon - QStyle::SP_CustomBase < sizeof(titleBarCustomDescriptions) / sizeof(titleBarCustomDescriptions[0])) { code = titleBarCustomDescriptions[standardIcon - QStyle::SP_CustomBase]; numStates = 3; } } else if (/*standardIcon >= QStyle::SP_TitleBarMenuButton && */standardIcon <= QStyle::SP_TitleBarContextHelpButton) { code = titleBarButtonDescriptions[standardIcon - QStyle::SP_TitleBarMenuButton]; numStates = 3; } else { switch (standardIcon) { case QStyle::SP_ToolBarHorizontalExtensionButton: code = toolBarHorizontalExtensionButtonDescription; numStates = 2; size = 8; break; case QStyle::SP_ToolBarVerticalExtensionButton: code = toolBarVerticalExtensionButtonDescription; numStates = 2; size = 8; break; default: break; } } if (code) { QIcon icon; bool dock = qobject_cast<const QDockWidget *>(widget) != 0; if (dock) { size = 14; numStates = 2; } qreal s = size / 2.0; if (numStates == 3) { if (widget && !qstrcmp(widget->metaObject()->className(), "KLineEditButton")) { s = qMin(22, widget->fontMetrics().height()) * 0.25; size += 2; } else if (widget && !qstrcmp(widget->metaObject()->className(), "CloseButton")) { s = qMin(20, widget->fontMetrics().height()) * 0.25; } else { size += 4; if (option) { s = qMin(22, option->fontMetrics.height()) * 0.3; } } } for (int state = 0; state < numStates; ++state) { QImage image(size, size, QImage::Format_ARGB32); image.fill(0); QPainter painter(&image); painter.setRenderHint(QPainter::Antialiasing, true); painter.translate(size / 2.0, size / 2.0); if (dock) { painter.scale(s - 2, s - 2); } else { painter.scale(s, s); } painter.setPen(Qt::NoPen); QPalette palette; if (option) { palette = option->palette; } QPalette::ColorRole role = QPalette::Text; QColor shapeColor; if (numStates == 2) { if (state == 0) { role = QPalette::WindowText; } else { role = QPalette::ButtonText; } shapeColor = palette.color(role); } else if (numStates == 3) { if (state == 1) { QColor glowColor = palette.color(role); if (standardIcon == QStyle::SP_TitleBarCloseButton) { glowColor = QColor(255, 0, 0, 100); } else { glowColor.setAlpha(50); } #if 0 painter.setBrush(glowColor); QPainterPath path = ShapeFactory::createShape(code); path = growPath(path, 0.15); painter.drawPath(path); filterImage(image, 0.9); shapeColor = palette.color(role); #else painter.fillRect(QRectF(-1.5, -1.5, 3, 3), glowColor); QPainterPath path = ShapeFactory::createShape(code); shapeColor = palette.color(role); // painter.setPen(QPen(shapeColor, 0.3)); painter.drawRect(QRectF(-1.5, -1.5, 3, 3)); painter.setPen(Qt::NoPen); painter.setBrush(shapeColor); painter.drawPath(path); #endif } else { shapeColor = palette.color(role); } } QColor shadowColor = option ? option->palette.color(QPalette::Shadow) : Qt::black; shadowColor.setAlpha(25); painter.translate(1 / s, 1 / s); painter.setBrush(shadowColor); painter.drawPath(ShapeFactory::createShape(code)); painter.translate(-1 / s, -1 / s); painter.setBrush(shapeColor); painter.drawPath(ShapeFactory::createShape(code)); painter.end(); QIcon::Mode iconMode; switch (state) { case 1: iconMode = QIcon::Active; break; case 2: #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) iconMode = QIcon::Selected; #else iconMode = QIcon::Normal; #endif break; default: iconMode = QIcon::Normal; break; } icon.addPixmap(QPixmap::fromImage(image), iconMode); } return icon; } return ParentStyle::standardIconImplementation(standardIcon, option, widget); } QPixmap SkulptureStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const { return ParentStyle::generatedIconPixmap(iconMode, pixmap, option); } QRect SkulptureStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap & pixmap) const { return ParentStyle::itemPixmapRect(rectangle, alignment, pixmap); } void SkulptureStyle::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const { ParentStyle::drawItemPixmap(painter, rectangle, alignment, pixmap); } /* * skulpture_kde4.cpp * */ #include "skulpture_p.h" //#include "config.h" #if KDE4_FOUND /*-----------------------------------------------------------------------*/ QVariant readKdeSetting(const QString &entry) { return QVariant(); } #else /*-----------------------------------------------------------------------*/ QVariant readKdeSetting(const QString &entry) { Q_UNUSED(entry) return QVariant(); } #endif /* * skulpture_layout.cpp * */ #include "skulpture_p.h" #include <QtCore/QSettings> #include <QtGui/QFrame> #include <QtGui/QApplication> #include <QtGui/QShortcut> #include <QtGui/QLayout> #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #include <QtGui/QFormLayout> #include <QtGui/QLabel> #include <QtGui/QCheckBox> #endif /*-----------------------------------------------------------------------*/ int SkulptureStyle::Private::verticalTextShift(const QFontMetrics &fontMetrics) { if (fontMetrics == qApp->fontMetrics()) { return textShift; } QFont boldFont; boldFont.setBold(true); if (fontMetrics == QFontMetrics(boldFont)) { return textShift; } return 0; } static QFontMetrics styledFontMetrics(const QStyleOption *option, const QWidget *widget) { if (option) { return option->fontMetrics; } else if (widget) { return widget->fontMetrics(); } return qApp->fontMetrics(); } int SkulptureStyle::Private::textLineHeight(const QStyleOption *option, const QWidget *widget) { QFontMetrics fm = styledFontMetrics(option, widget); return fm.height() + (verticalTextShift(fm) & 1); } static int fontHeight(const QStyleOption *option, const QWidget *widget) { return styledFontMetrics(option, widget).height(); } /*-----------------------------------------------------------------------*/ int SkulptureStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const { switch (metric) { /* entries are stricly sorted in Qt order for future lookup table */ case PM_ButtonMargin: return d->pushButtonSize; case PM_ButtonDefaultIndicator: return 0; case PM_MenuButtonIndicator: return fontHeight(option, widget); case PM_ButtonShiftHorizontal: { Qt::LayoutDirection direction; if (option) { direction = option->direction; } else if (widget) { direction = widget->layoutDirection(); } else { direction = QApplication::layoutDirection(); } return direction == Qt::LeftToRight ? 1 : -1; } case PM_ButtonShiftVertical: return 1; case PM_DefaultFrameWidth: return 2; // 3 for command buttons case PM_SpinBoxFrameWidth: return 2; case PM_ComboBoxFrameWidth: return 2; // 3 for non-editable combobox (in button mode) case PM_MaximumDragDistance: return -1; case PM_ScrollBarExtent: { if (d->scrollBarSize > 0) { return d->scrollBarSize; } // do not depend on widget font size int extent = ((fontHeight(0, 0) >> 1) & ~1) + 9; #if 0 if (option && (option->state & QStyle::State_Horizontal)) { return (qMax(extent, qApp->globalStrut().height()) & ~1) + 1; } else { return (qMax(extent, qApp->globalStrut().width()) & ~1) + 1; } #else return extent; #endif } case PM_ScrollBarSliderMin: { if (d->scrollBarLength > 0) { return d->scrollBarLength; } return fontHeight(0, 0) + 1; } case PM_SliderThickness: case PM_SliderControlThickness: { if (d->sliderSize > 0) { return d->sliderSize + 4; } int thickness = (fontHeight(option, widget) & ~1) + 5; if (option && !(option->state & QStyle::State_Horizontal)) { return (qMax(thickness, qApp->globalStrut().width()) & ~1) + 1; } else { return (qMax(thickness, qApp->globalStrut().height()) & ~1) + 1; } } case PM_SliderLength: { if (d->sliderLength > 0) { return d->sliderLength; } int length = (fontHeight(option, widget)) + 6; if (option && !(option->state & QStyle::State_Horizontal)) { return qMax(length, qApp->globalStrut().height()); } else { return qMax(length, qApp->globalStrut().width()); } } case PM_SliderTickmarkOffset: { if (const QStyleOptionSlider *sliderOption = qstyleoption_cast<const QStyleOptionSlider *>(option)) { if (sliderOption->tickPosition == QSlider::TicksAbove) { return 5; } else if (sliderOption->tickPosition == QSlider::TicksBothSides) { return 5; } else if (sliderOption->tickPosition == QSlider::TicksBelow) { return 0; } } return 0; } case PM_SliderSpaceAvailable: { return QCommonStyle::pixelMetric(metric, option, widget); } case PM_DockWidgetSeparatorExtent: return ((qMax(fontHeight(option, widget), 16) >> 1) & ~1) - 1; case PM_DockWidgetHandleExtent: return 8; case PM_DockWidgetFrameWidth: return 2; case PM_TabBarTabOverlap: return 2; case PM_TabBarTabHSpace: return 0; case PM_TabBarTabVSpace: return 0; case PM_TabBarBaseHeight: return 2; case PM_TabBarBaseOverlap: return 2; case PM_ProgressBarChunkWidth: return fontHeight(option, widget) >> 1; case PM_SplitterWidth: return ((qMax(fontHeight(option, widget), 16) >> 1) & ~1) - 1; case PM_TitleBarHeight: return d->textLineHeight(option, widget) + 4; case PM_MenuScrollerHeight: return (fontHeight(option, widget) >> 1) + 2; #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) case PM_MenuHMargin: return 1; case PM_MenuVMargin: return 1; case PM_MenuPanelWidth: return 1; #else case PM_MenuHMargin: return 0; // ### anything other than 0 messes Qt's menu positioning code ... case PM_MenuVMargin: return 0; case PM_MenuPanelWidth: return 2; #endif case PM_MenuTearoffHeight: return (fontHeight(option, widget) >> 1) + 2; case PM_MenuDesktopFrameWidth: return 0; case PM_MenuBarPanelWidth: return 0; case PM_MenuBarItemSpacing: return 0; case PM_MenuBarVMargin: return 1; case PM_MenuBarHMargin: return 1; case PM_IndicatorWidth: case PM_IndicatorHeight: case PM_ExclusiveIndicatorWidth: case PM_ExclusiveIndicatorHeight: case PM_CheckListButtonSize: case PM_CheckListControllerSize: { // do not use strut width, because label is usually wide enough return qMax(d->textLineHeight(option, widget), QApplication::globalStrut().height()); } case PM_DialogButtonsSeparator: return 6; case PM_DialogButtonsButtonWidth: return 64; case PM_DialogButtonsButtonHeight: return 16; #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) case PM_MdiSubWindowFrameWidth: return 3; case PM_MdiSubWindowMinimizedWidth: return fontHeight(option, widget) * 12; #else case PM_MDIFrameWidth: return 3; case PM_MDIMinimizedWidth: return fontHeight(option, widget) * 12; #endif case PM_HeaderMargin: return 3; case PM_HeaderMarkSize: return 5; case PM_HeaderGripMargin: return 4; case PM_TabBarTabShiftHorizontal: return 0; case PM_TabBarTabShiftVertical: return 0; case PM_TabBarScrollButtonWidth: return (fontHeight(option, widget) & ~1) + 1; case PM_ToolBarFrameWidth: return 1; case PM_ToolBarHandleExtent: return 9; case PM_ToolBarItemSpacing: return 2; case PM_ToolBarItemMargin: return 0; case PM_ToolBarSeparatorExtent: return 4; case PM_ToolBarExtensionExtent: return 12; case PM_SpinBoxSliderHeight: return 2; case PM_DefaultTopLevelMargin: { if (d->dialogMargins >= 0) { return d->dialogMargins; } return (fontHeight(option, widget) >> 1); } case PM_DefaultChildMargin: { if (d->widgetMargins >= 0) { return d->widgetMargins; } return (fontHeight(option, widget) >> 1); } case PM_DefaultLayoutSpacing: { if (d->verticalSpacing >= 0) { return d->verticalSpacing; } return ((fontHeight(option, widget) * 3) >> 3); } case PM_ToolBarIconSize: return pixelMetric(PM_SmallIconSize, option, widget); case PM_ListViewIconSize: return pixelMetric(PM_SmallIconSize, option, widget); case PM_IconViewIconSize: return pixelMetric(PM_LargeIconSize, option, widget); case PM_SmallIconSize: { int iconSize = d->textLineHeight(option, widget); return iconSize; } case PM_LargeIconSize: { const bool hasSvgIcons = false; int iconSize = 2 * fontHeight(option, widget); if (!hasSvgIcons) { if (iconSize < 28) { return 22; } else if (iconSize < 40) { return 32; } else if (iconSize < 56) { return 48; } else if (iconSize < 96) { return 64; } } return iconSize; } case PM_FocusFrameVMargin: return 2; case PM_FocusFrameHMargin: return 2; case PM_ToolTipLabelFrameWidth: return 1; case PM_CheckBoxLabelSpacing: { if (d->labelSpacing >= 0) { return d->labelSpacing; } return (fontHeight(option, widget) >> 1) - 2; } case PM_TabBarIconSize: return pixelMetric(PM_SmallIconSize, option, widget); case PM_SizeGripSize: return 13; // ### make this variable case PM_DockWidgetTitleMargin: return 2; #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) case PM_MessageBoxIconSize: return pixelMetric(PM_LargeIconSize, option, widget); case PM_ButtonIconSize: return pixelMetric(PM_SmallIconSize, option, widget); #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) case PM_DockWidgetTitleBarButtonMargin: return 0; case PM_RadioButtonLabelSpacing: { if (d->labelSpacing >= 0) { return d->labelSpacing; } return (fontHeight(option, widget) >> 1) - 2; } case PM_LayoutLeftMargin: case PM_LayoutTopMargin: case PM_LayoutRightMargin: case PM_LayoutBottomMargin: { PixelMetric metric = QStyle::PM_DefaultChildMargin; if ((option && (option->state & QStyle::State_Window)) || (widget && widget->isWindow())) { metric = QStyle::PM_DefaultTopLevelMargin; } return pixelMetric(metric, option, widget); } case PM_LayoutHorizontalSpacing: case PM_LayoutVerticalSpacing: { return -1; } #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) case PM_TabBar_ScrollButtonOverlap: return 0; case PM_TextCursorWidth: { if (d->textCursorWidth > 0) { return qMax(1, int(d->textCursorWidth + 0.5)); } return qMax(1, (fontHeight(option, widget) + 8) / 12); } #else // used for TextCursorWidth in Qt < 4.4 case PM_CustomBase + 1: { if (d->textCursorWidth > 0) { return qMax(1, int(d->textCursorWidth + 0.5)); } return qMax(1, (fontHeight(option, widget) + 8) / 12); } #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) case PM_TabCloseIndicatorWidth: case PM_TabCloseIndicatorHeight: { return (fontHeight(option, widget) & ~1); } case PM_ScrollView_ScrollBarSpacing: return 0; case PM_SubMenuOverlap: return -2; #endif case PM_CustomBase: // avoid warning break; } return ParentStyle::pixelMetric(metric, option, widget); } /*-----------------------------------------------------------------------*/ #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) int SkulptureStyle::layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const { Q_UNUSED(control2); if (orientation == Qt::Horizontal) { if (control1 == QSizePolicy::Label) { if (d->labelSpacing >= 0) { return d->labelSpacing + 2; } return fontHeight(option, widget) >> 1; } if (d->horizontalSpacing >= 0) { return d->horizontalSpacing; } return fontHeight(option, widget) >> 1; } if (control1 & (QSizePolicy::CheckBox | QSizePolicy::RadioButton) && control2 & (QSizePolicy::CheckBox | QSizePolicy::RadioButton)) { if (d->verticalSpacing >= 0) { return qMax(0, d->verticalSpacing - 2); } return pixelMetric(PM_DefaultLayoutSpacing, option, widget) - 2; } if (d->verticalSpacing >= 0) { return d->verticalSpacing; } return pixelMetric(PM_DefaultLayoutSpacing, option, widget); } #endif /*-----------------------------------------------------------------------*/ extern QSize sizeFromContentsToolButton(const QStyleOptionToolButton *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int toolButtonSize); extern QSize sizeFromContentsMenuItem(const QStyleOptionMenuItem *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int menuItemSize, int textLineHeight); /*-----------------------------------------------------------------------*/ static inline QSize sizeFromContentsPushButton(const QStyleOptionButton *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int pushButtonSize, int textLineHeight) { Q_UNUSED(style); // width int w = contentsSize.width() + (fontHeight(option, widget) & ~1); if (!option->text.isEmpty()) { w += 6 + 2 * pushButtonSize; const int sizeBase = qMin(64, 4 * fontHeight(option, widget)); const int sizeIncrement = qMin(32, qMin(sizeBase, qMax(1, 2 * pushButtonSize))); if (w < sizeBase) { w = sizeBase; } else { w = ((w - sizeBase + sizeIncrement - 1) / sizeIncrement) * sizeIncrement + sizeBase; } } // height int h = qMax(contentsSize.height(), textLineHeight); h += 2 * pushButtonSize + 4; return QSize(w, h); } static inline QSize sizeFromContentsComboBox(const QStyleOptionComboBox *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int widgetSize, int textLineHeight) { // if (contentsSize.height() > 16) { // fh = contentsSize.height() - 2; // } return ((const QCommonStyle *) style)->QCommonStyle::sizeFromContents(QStyle::CT_ComboBox, option, QSize(contentsSize.width(), textLineHeight + 2 * widgetSize), widget); } static inline QSize sizeFromContentsLineEdit(const QStyleOptionFrame *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int widgetSize, int textLineHeight) { Q_UNUSED(widget); Q_UNUSED(style); int fw = option->lineWidth; int fh = textLineHeight; // if (contentsSize.height() > 14) { // fh = contentsSize.height() - 4; // } return QSize(contentsSize.width() + 6 + 2 * fw, fh + 2 * (widgetSize + fw)); } static inline QSize sizeFromContentsSpinBox(const QStyleOptionSpinBox *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style) { Q_UNUSED(option); Q_UNUSED(widget); Q_UNUSED(style); return contentsSize + QSize(4, 0); } static inline QSize sizeFromContentsGroupBox(const QStyleOptionGroupBox *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style) { Q_UNUSED(widget); Q_UNUSED(style); if (!(option->features & QStyleOptionFrameV2::Flat)) { return contentsSize + QSize(fontHeight(option, widget) & ~1, 0); } return contentsSize; } static inline QSize sizeFromContentsTabBarTab(const QStyleOptionTab *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int tabBarSize, int textShift) { Q_UNUSED(widget); Q_UNUSED(style); if (int(option->shape) & 2) { return (contentsSize + QSize(8, 24)).expandedTo(QApplication::globalStrut()); } if (!option->icon.isNull()) { textShift = 0; } return (contentsSize + QSize(2 * tabBarSize + (fontHeight(option, widget) & ~1), 2 + 2 * tabBarSize + (textShift & 1))).expandedTo(QApplication::globalStrut()); } static inline QSize sizeFromContentsProgressBar(const QStyleOptionProgressBar *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int widgetSize, int textShift) { Q_UNUSED(widget); Q_UNUSED(style); if (option->version >= 2 && ((const QStyleOptionProgressBarV2 *) option)->orientation == Qt::Vertical) { return contentsSize + QSize(2 * widgetSize, 6); } return contentsSize + QSize(6, (textShift & 1) + 2 * widgetSize - 6); } /*-----------------------------------------------------------------------*/ #define CT_CASE(ct, so) \ case CT_## ct: \ if (option && option->type == QStyleOption::SO_## so) { \ return sizeFromContents ## ct((const QStyleOption ## so *) option, contentsSize, widget, this); \ } \ break QSize SkulptureStyle::sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const { switch (type) { case CT_PushButton: if (option && option->type == QStyleOption::SO_Button) { return sizeFromContentsPushButton((const QStyleOptionButton *) option, contentsSize, widget, this, d->pushButtonSize, d->textLineHeight(option, widget)); } break; case CT_CheckBox: case CT_RadioButton: return ParentStyle::sizeFromContents(type, option, contentsSize, widget) + QSize(0, 2 * d->widgetSize - 4); //break; case CT_ToolButton: if (option && option->type == QStyleOption::SO_ToolButton) { return sizeFromContentsToolButton((const QStyleOptionToolButton *) option, contentsSize, widget, this, d->toolButtonSize); } break; case CT_ComboBox: if (option && option->type == QStyleOption::SO_ComboBox) { return sizeFromContentsComboBox((const QStyleOptionComboBox *) option, contentsSize, widget, this, d->widgetSize, d->textLineHeight(option, widget)); } break; case CT_Splitter: case CT_Q3DockWindow: return contentsSize; case CT_ProgressBar: if (option && option->type == QStyleOption::SO_ProgressBar) { return sizeFromContentsProgressBar((const QStyleOptionProgressBar *) option, contentsSize, widget, this, d->widgetSize, d->verticalTextShift(styledFontMetrics(option, widget))); } break; case CT_MenuItem: if (option && option->type == QStyleOption::SO_MenuItem) { return sizeFromContentsMenuItem((const QStyleOptionMenuItem *) option, contentsSize, widget, this, 2 * d->menuItemSize, d->textLineHeight(option, widget)); } break; case CT_MenuBarItem: { int h = 2 * (d->menuBarSize >= 0 ? d->menuBarSize : 2) + d->textLineHeight(option, widget); return QSize(contentsSize.width() + (((fontHeight(option, widget) * 7) >> 3) & ~1), h).expandedTo(qApp->globalStrut()); } case CT_MenuBar: return contentsSize; case CT_Menu: return contentsSize; case CT_TabBarTab: if (option && option->type == QStyleOption::SO_Tab) { return sizeFromContentsTabBarTab((const QStyleOptionTab *) option, contentsSize, widget, this, d->tabBarSize, d->verticalTextShift(styledFontMetrics(option, widget))); } break; case CT_Slider: case CT_ScrollBar: case CT_Q3Header: return contentsSize; case CT_LineEdit: if (option && option->type == QStyleOption::SO_Frame) { return sizeFromContentsLineEdit((const QStyleOptionFrame *) option, contentsSize, widget, this, d->widgetSize, d->textLineHeight(option, widget)); } break; CT_CASE(SpinBox, SpinBox); case CT_SizeGrip: return contentsSize; case CT_TabWidget: return contentsSize + QSize(4, 4); case CT_DialogButtons: return contentsSize; case CT_HeaderSection: break; //#if (QT_VERSION >= QT_VERSION_CHECK(4, 1, 0)) CT_CASE(GroupBox, GroupBox); //#endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) case CT_MdiControls: break; #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) case CT_ItemViewItem: break; #endif case CT_CustomBase: // avoid warning break; } return ParentStyle::sizeFromContents(type, option, contentsSize, widget); } /*-----------------------------------------------------------------------*/ extern QRect subElementRectDockWidget(QStyle::SubElement element, const QStyleOptionDockWidget *option, const QWidget *widget, const QStyle *style); extern QRect subElementRectComboBoxFocusRect(const QStyleOptionComboBox *option, const QWidget *widget, const QStyle *style); /*-----------------------------------------------------------------------*/ #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) static inline QRect subElementRectFrameContents(const QStyleOption *option, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); if (widget && widget->inherits("KHTMLView")) { QWidget *window; // case 1: the parent widget is a QFrame, and already has a sunken frame // do not show any frame (KMail mail view, Kopete chat view) if (QFrame *frame = qobject_cast<QFrame *>(widget->parentWidget())) { if (frame->frameShape() == QFrame::StyledPanel) { // ### fix Kopete frame // frame->setFrameShadow(QFrame::Sunken); return option->rect; } } else if ((window = widget->window()) && window->inherits("KonqMainWindow")) { // case 2: the html view covers the full width of window: // do not show side frames (Konqueror) return option->rect.adjusted(0, 2, 0, -2); } else { // case 3: detect KMail 4.2 while ((widget = widget->parentWidget())) { if (widget->inherits("KMReaderWin")) { return option->rect; } } } } return option->rect.adjusted(2, 2, -2, -2); } static inline QRect subElementRectLineEditContents(const QStyleOptionFrame *option, const QWidget *widget, const QStyle *style, int textShift) { Q_UNUSED(widget); Q_UNUSED(style); int fw = option->lineWidth; if (textShift & 1 && !(option->rect.height() & 1)) { textShift += 1; } return option->rect.adjusted(fw + 2, fw + ((-textShift) >> 1), -fw - 2, -fw + ((-textShift) >> 1)); } #endif /*-----------------------------------------------------------------------*/ QRect SkulptureStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const { switch (element) { case SE_PushButtonContents: case SE_PushButtonFocusRect: case SE_CheckBoxIndicator: case SE_CheckBoxContents: case SE_CheckBoxFocusRect: case SE_CheckBoxClickRect: case SE_RadioButtonIndicator: case SE_RadioButtonContents: case SE_RadioButtonFocusRect: case SE_RadioButtonClickRect: break; case SE_ComboBoxFocusRect: if (option->type == QStyleOption::SO_ComboBox) { return subElementRectComboBoxFocusRect((const QStyleOptionComboBox *) option, widget, this); } break; case SE_SliderFocusRect: case SE_Q3DockWindowHandleRect: break; case SE_ProgressBarGroove: case SE_ProgressBarContents: case SE_ProgressBarLabel: return option->rect; case SE_DialogButtonAccept: case SE_DialogButtonReject: case SE_DialogButtonApply: case SE_DialogButtonHelp: case SE_DialogButtonAll: case SE_DialogButtonAbort: case SE_DialogButtonIgnore: case SE_DialogButtonRetry: case SE_DialogButtonCustom: break; case SE_ToolBoxTabContents: return option->rect.adjusted(11, 0, -6, 0); case SE_HeaderLabel: case SE_HeaderArrow: break; case SE_TabWidgetTabBar: case SE_TabWidgetTabPane: case SE_TabWidgetTabContents: break; case SE_TabWidgetLeftCorner: case SE_TabWidgetRightCorner: return QCommonStyle::subElementRect(element, option, widget).adjusted(1, 1, -1, 1); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) case SE_ItemViewItemCheckIndicator: #else case SE_ViewItemCheckIndicator: #endif break; case SE_TabBarTearIndicator: case SE_TreeViewDisclosureItem: break; #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) case SE_LineEditContents: if (option->type == QStyleOption::SO_Frame) { return subElementRectLineEditContents((const QStyleOptionFrame *) option, widget, this, d->textShift); } break; case SE_FrameContents: return subElementRectFrameContents(option, widget, this); #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) case SE_DockWidgetCloseButton: case SE_DockWidgetFloatButton: case SE_DockWidgetTitleBarText: case SE_DockWidgetIcon: if (option->type == QStyleOption::SO_DockWidget) { return subElementRectDockWidget(element, (const QStyleOptionDockWidget *) option, widget, this); } break; case SE_CheckBoxLayoutItem: case SE_ComboBoxLayoutItem: case SE_DateTimeEditLayoutItem: break; case SE_DialogButtonBoxLayoutItem: break; case SE_LabelLayoutItem: case SE_ProgressBarLayoutItem: case SE_PushButtonLayoutItem: case SE_RadioButtonLayoutItem: case SE_SliderLayoutItem: case SE_SpinBoxLayoutItem: case SE_ToolButtonLayoutItem: break; case SE_FrameLayoutItem: case SE_GroupBoxLayoutItem: case SE_TabWidgetLayoutItem: break; #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) case SE_ItemViewItemDecoration: case SE_ItemViewItemText: case SE_ItemViewItemFocusRect: break; #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) case SE_TabBarTabLeftButton: case SE_TabBarTabRightButton: case SE_TabBarTabText: break; case SE_ShapedFrameContents: break; #endif case SE_CustomBase: // avoid warning break; } return ParentStyle::subElementRect(element, option, widget); } /*-----------------------------------------------------------------------*/ #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void SkulptureStyle::Private::polishFormLayout(QFormLayout *layout) { if (layout->labelAlignment() & Qt::AlignVCenter) { return; } int addedHeight = -1; for (int row = 0; row < layout->rowCount(); ++row) { QLayoutItem *labelItem = layout->itemAt(row, QFormLayout::LabelRole); if (!labelItem) { continue; } QLayoutItem *fieldItem = layout->itemAt(row, QFormLayout::FieldRole); if (!fieldItem) { continue; } QWidget *label = labelItem->widget(); if (!label) { continue; } int labelHeight; if (addedHeight < 0) { #if 0 // fixed value in Qt static const int verticalMargin = 1; QStyleOptionFrame option; option.initFrom(label); option.lineWidth = label->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &option, label); option.midLineWidth = 0; option.rect = QRect(0, 0, 10, fontHeight(option, label) + 2 * verticalMargin); // label should be aligned centered to LineEdit, so use its size addedHeight = label->style()->sizeFromContents(QStyle::CT_LineEdit, &option, option.rect.size(), label).height() - fontHeight(option, height); #else addedHeight = 4 + 2 * widgetSize; #endif } if (qobject_cast<QLabel *>(label)) { labelHeight = label->sizeHint().height() + addedHeight; } else if (qobject_cast<QCheckBox *>(label)) { labelHeight = label->sizeHint().height(); } else { continue; } int fieldHeight = fieldItem->sizeHint().height(); // work around KIntNumInput::sizeHint() bug if (fieldItem->widget() && fieldItem->widget()->inherits("KIntNumInput")) { fieldHeight -= 2; fieldItem->widget()->setMaximumHeight(fieldHeight); } /* for large fields, we don't center */ if (fieldHeight <= 2 * fontHeight(0, label) + addedHeight) { if (fieldHeight > labelHeight) { labelHeight = fieldHeight; } } else { if (verticalTextShift(label->fontMetrics()) & 1) { labelHeight += 1; } } if (qobject_cast<QCheckBox *>(label)) { label->setMinimumHeight(labelHeight); } else { // QFormLayout determines label size as height * 5 / 4, so revert that label->setMinimumHeight((labelHeight * 4 + 4) / 5); } } } #endif void SkulptureStyle::Private::polishLayout(QLayout *layout) { if (forceSpacingAndMargins) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) if (QFormLayout *formLayout = qobject_cast<QFormLayout *>(layout)) { if (formLayout->spacing() >= 2) { formLayout->setSpacing(-1); } } else #endif if (QGridLayout *gridLayout = qobject_cast<QGridLayout *>(layout)) { if (gridLayout->spacing() >= 2) { gridLayout->setSpacing(-1); } } else if (QBoxLayout *boxLayout = qobject_cast<QBoxLayout *>(layout)) { if (boxLayout->spacing() >= 2) { boxLayout->setSpacing(-1); } } else { if (layout->spacing() >= 2) { layout->setSpacing(-1); } } if (layout->margin() >= 4) { layout->setMargin(-1); } } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) if (QFormLayout *formLayout = qobject_cast<QFormLayout *>(layout)) { polishFormLayout(formLayout); } #endif // recurse into layouts for (int i = 0; i < layout->count(); ++i) { QLayoutItem *item = layout->itemAt(i); if (QLayout *layout = item->layout()) { polishLayout(layout); } } } /* * skulpture_mdi.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) #include <QtGui/QMdiSubWindow> #endif #include <QtCore/QSettings> #include <cmath> /*-----------------------------------------------------------------------*/ QRect subControlRectTitleBar(const QStyleOptionTitleBar *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { QRect r = ((const QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_TitleBar, option, subControl, widget); if (subControl != QStyle::SC_TitleBarSysMenu) { return r.adjusted(option->direction == Qt::LeftToRight ? -2 : 2, -2, option->direction == Qt::LeftToRight ? -3 : 3, -3); } else { return r.adjusted(0, -1, 0, -1); } } /*-----------------------------------------------------------------------*/ void paintFrameWindow(QPainter *painter, const QStyleOptionFrame *option) { // painter->fillRect(option->rect, option->palette.color(QPalette::Window)); #if 0 paintThinFrame(painter, option->rect.adjusted(0, 0, 0, 0), option->palette, -60, 160); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); #else paintThinFrame(painter, option->rect.adjusted(0, 0, 0, 0), option->palette, -90, 355); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -40, 100); #endif // paintThinFrame(painter, option->rect.adjusted(4, 7 + option->fontMetrics.height(), -4, -4), option->palette, 60, -20); #if 0 painter->setPen(Qt::red); painter->setBrush(Qt::NoBrush); painter->drawRect(option->rect.adjusted(0, 0, -1, -1)); #endif } static void getTitleBarPalette(QPalette &palette) { QSettings settings(QLatin1String("Trolltech")); settings.beginGroup(QLatin1String("Qt")); if (settings.contains(QLatin1String("KWinPalette/activeBackground"))) { palette.setColor(QPalette::Window, QColor(settings.value(QLatin1String("KWinPalette/inactiveBackground")).toString())); palette.setColor(QPalette::WindowText, QColor(settings.value(QLatin1String("KWinPalette/inactiveForeground")).toString())); palette.setColor(QPalette::Highlight, QColor(settings.value(QLatin1String("KWinPalette/activeBackground")).toString())); palette.setColor(QPalette::HighlightedText, QColor(settings.value(QLatin1String("KWinPalette/activeForeground")).toString())); } else { palette.setColor(QPalette::Window, QColor(0, 0, 0, 20)); palette.setColor(QPalette::WindowText, QColor(0, 0, 0, 255)); QColor barColor = palette.color(QPalette::Highlight); barColor.setHsvF(barColor.hueF(), barColor.saturationF() * 0.9, 0.25); palette.setColor(QPalette::Highlight, barColor); palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255, 240)); } } void paintTitleBar(QPainter *painter, const QStyleOptionTitleBar *option, const QWidget *widget, const QStyle *style) { QColor barColor; QColor textColor; painter->save(); #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) qreal opacity = painter->opacity(); #endif QPalette palette = option->palette; #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (qobject_cast<const QMdiSubWindow *>(widget)) { if (widget->objectName() != QLatin1String("SkulpturePreviewWindow")) { getTitleBarPalette(palette); } } #endif if (option->state & QStyle::State_Active) { barColor = palette.color(QPalette::Highlight); textColor = palette.color(QPalette::HighlightedText); } else { barColor = palette.color(QPalette::Window); textColor = palette.color(QPalette::WindowText); } QLinearGradient barGradient(option->rect.topLeft() + QPoint(-1, -1), option->rect.bottomLeft() + QPoint(-1, -2)); // barGradient.setColorAt(0.0, option->palette.color(QPalette::Window)); // barGradient.setColorAt(0.3, barColor); // barGradient.setColorAt(0.7, barColor); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) barGradient.setColorAt(0.0, barColor.darker(105)); barGradient.setColorAt(1.0, barColor.lighter(120)); #else barGradient.setColorAt(0.0, barColor.dark(105)); barGradient.setColorAt(1.0, barColor.light(120)); #endif // barGradient.setColorAt(1.0, option->palette.color(QPalette::Window)); // painter->fillRect(option->rect.adjusted(-1, -1, 1, -2), barGradient); // painter->fillRect(option->rect.adjusted(-1, -1, 1, -2), barColor); #if 1 { QRect r = option->rect.adjusted(-4, -7, 4, 0); QRect lr = r.adjusted(6, 2, -6/* - 55*/, -1); // QRect lr = r.adjusted(6, 2, -70, -1); if (true || option->state & QStyle::State_Active) { painter->fillRect(lr, barColor); } QStyleOptionTitleBar buttons = *option; // buttons.subControls &= ~QStyle::SC_TitleBarLabel; buttons.subControls = QStyle::SC_TitleBarSysMenu; buttons.rect.adjust(3, -2, -4, -1); #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) painter->setOpacity(option->state & QStyle::State_Active ? opacity : 0.7 * opacity); #endif ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_TitleBar, &buttons, painter, widget); buttons = *option; #if 0 buttons.subControls &= ~(QStyle::SC_TitleBarLabel | QStyle::SC_TitleBarSysMenu); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_TitleBar, &buttons, painter, widget); #else QStyleOption opt = *option; QIcon icon; for (int i = 1; i <= 7; ++i) { QStyle::SubControl sc = (QStyle::SubControl) (1 << i); if (option->subControls & sc & ~(QStyle::SC_TitleBarContextHelpButton)) { QRect rect = style->subControlRect(QStyle::CC_TitleBar, option, sc, widget); QIcon::Mode iconMode = QIcon::Normal; if (option->activeSubControls & sc) { iconMode = QIcon::Active; } opt.palette.setColor(QPalette::Text, textColor); icon = style->standardIcon((QStyle::StandardPixmap)(QStyle::SP_TitleBarMenuButton + i), &opt, widget); icon.paint(painter, rect, Qt::AlignCenter, iconMode); } } #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) painter->setOpacity(opacity); #endif #if 0 QRect buttonRect = option->rect.adjusted(300, 1, -90, -6); paintThinFrame(painter, buttonRect, option->palette, -180, 40); paintThinFrame(painter, buttonRect.adjusted(-1, -1, 1, 1), option->palette, 40, -180); #endif { QLinearGradient labelGradient(lr.topLeft(), lr.bottomLeft()); #if 0 labelGradient.setColorAt(0.0, QColor(0, 0, 0, 50)); labelGradient.setColorAt(0.5, QColor(0, 0, 0, 0)); labelGradient.setColorAt(0.55, QColor(0, 0, 0, 20)); labelGradient.setColorAt(1.0, QColor(0, 0, 0, 0)); #elif 1 labelGradient.setColorAt(0.0, QColor(255, 255, 255, 10)); labelGradient.setColorAt(0.5, QColor(255, 255, 255, 40)); labelGradient.setColorAt(0.55, QColor(0, 0, 0, 0)); labelGradient.setColorAt(1.0, QColor(255, 255, 255, 20)); #else labelGradient.setColorAt(0.0, QColor(0, 0, 0, 30)); labelGradient.setColorAt(1.0, QColor(255, 255, 255, 60)); #endif painter->fillRect(lr, labelGradient); } QLinearGradient barGradient(r.topLeft(), r.bottomLeft()); barGradient.setColorAt(0.0, QColor(255, 255, 255, 200)); barGradient.setColorAt(0.2, QColor(255, 255, 255, 80)); barGradient.setColorAt(0.5, QColor(255, 255, 255, 30)); barGradient.setColorAt(1.0, QColor(255, 255, 255, 0)); painter->fillRect(r, barGradient); #if 0 QRadialGradient dialogGradient2(r.left() + r.width() / 2, r.top(), r.height()); dialogGradient2.setColorAt(0.0, QColor(255, 255, 225, 70)); dialogGradient2.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->save(); painter->translate(r.center()); painter->scale(r.width() / 2.0 / r.height(), 1); painter->translate(-r.center()); painter->fillRect(r.adjusted(1, 1, -1, -1), dialogGradient2); painter->restore(); #endif paintThinFrame(painter, lr, option->palette, -30, 90); paintThinFrame(painter, lr.adjusted(-1, -1, 1, 1), option->palette, 90, -30); } #endif #if 0 // paintThinFrame(painter, option->rect.adjusted(0, 0, 0, -1), option->palette, -30, 80); paintThinFrame(painter, option->rect.adjusted(-1, -1, 1, 0), option->palette, 80, -30); painter->fillRect(option->rect.adjusted(0, 0, 0, -1), barColor); // FIXME: adjust rect for new shadow // paintRecessedFrameShadow(painter, option->rect.adjusted(-1, -1, 1, 0), RF_Large); { QRect labelRect = option->rect.adjusted(20, 0, -250, 0); painter->fillRect(labelRect, option->palette.color(QPalette::Window)); paintThinFrame(painter, labelRect.adjusted(0, 0, 0, 1), option->palette, -30, 80); } #endif if (option->subControls & QStyle::SC_TitleBarLabel) { QRect labelRect; #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (qobject_cast<const QMdiSubWindow *>(widget)) { QFont font = painter->font(); font.setBold(true); labelRect = option->rect.adjusted(option->fontMetrics.height() + 10, -1, -2, -3); // font.setPointSizeF(10); painter->setFont(font); } else #endif { labelRect = style->subControlRect(QStyle::CC_TitleBar, option, QStyle::SC_TitleBarLabel, widget); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) painter->setOpacity(opacity * 0.1); painter->setPen(Qt::black); style->drawItemText(painter, labelRect.adjusted(1, 1, 1, 1), Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, option->palette, true, option->text, QPalette::NoRole); //painter->drawText(labelRect.adjusted(1, 1, 1, 1), Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, option->text); painter->setOpacity(option->state & QStyle::State_Active ? opacity : 0.7 * opacity); #endif painter->setPen(textColor); style->drawItemText(painter, labelRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, option->palette, true, option->text, QPalette::NoRole); //painter->drawText(labelRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, option->text); } /* if (!option->icon.isNull()) { labelRect.setWidth(16); labelRect.setHeight(16); painter->drawPixmap(labelRect.adjusted(0, -1, 0, -1), option->icon.pixmap(QSize(16, 16))); } */ painter->restore(); } int getWindowFrameMask(QStyleHintReturnMask *mask, const QStyleOptionTitleBar *option, const QWidget *widget) { Q_UNUSED(widget); mask->region = option->rect; // TODO get total dimensions of workspace and don't use masks on corners /*if (option->rect.topLeft() != QPoint(0, 0))*/ { // mask->region -= QRect(option->rect.topLeft(), QSize(1, 1)); } // mask->region -= QRect(option->rect.topRight(), QSize(1, 1)); // mask->region -= QRect(option->rect.bottomLeft(), QSize(1, 1)); // mask->region -= QRect(option->rect.bottomRight(), QSize(1, 1)); // try new style // mask->region -= QRect(option->rect.topLeft(), QSize(6, 1)); // mask->region -= QRect(option->rect.topRight() - QPoint(5, 0), QSize(6, 1)); return 1; } /* * skulpture_menu.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QMenu> #include <QtGui/QShortcut> #include <QtGui/QApplication> #include <QtGui/QTabletEvent> #include <QtGui/QMouseEvent> #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) #include <QtGui/QWidgetAction> #endif /*-----------------------------------------------------------------------*/ void paintFrameMenu(QPainter *painter, const QStyleOptionFrame *option) { paintThinFrame(painter, option->rect, option->palette, -60, 160); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -20, 60); } void paintPanelMenuBar(QPainter *painter, const QStyleOptionFrame *option) { Q_UNUSED(painter); Q_UNUSED(option); // paintThinFrame(painter, option->rect, option->palette, -20, 60); // painter->fillRect(option->rect.adjusted(1, 1, -1, -1), option->palette.color(QPalette::Window)); } void paintMenuBarEmptyArea(QPainter *painter, const QStyleOption *option) { Q_UNUSED(painter); Q_UNUSED(option); // painter->fillRect(option->rect, option->palette.color(QPalette::Window)); } /*-----------------------------------------------------------------------*/ extern void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, const QWidget *widget); void paintMenuBarItem(QPainter *painter, const QStyleOptionMenuItem *option, const QWidget *widget, const QStyle *style) { QStyleOptionMenuItem opt = *option; if (option->state & QStyle::State_Selected || option->state & QStyle::State_MouseOver) { QStyleOptionButton button; button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; button.rect.adjust(-1, -1, 1, 1); button.state |= QStyle::State_MouseOver; // call without widget to get QPalette::Button background paintCommandButtonPanel(painter, &button, 0); } else { opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::WindowText)); } opt.state &= ~QStyle::State_Sunken; ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_MenuBarItem, &opt, painter, widget); } /*-----------------------------------------------------------------------*/ enum MenuMode { ButtonMenu, ItemViewMenu, }; enum CheckColumnMode { UseIconColumn, ShowCheckColumn, NoCheckColumn }; enum IconColumnMode { ForceIconColumn, ShowIconColumn, HideIconColumn }; enum SeparatorMode { TextSeparator, IconSeparator, ItemSeparator }; enum SelectionMode { TextSelection, IconSelection, ItemSelection }; /*-----------------------------------------------------------------------*/ QSize sizeFromContentsMenuItem(const QStyleOptionMenuItem *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int menuItemSize, int textLineHeight) { if (option->menuItemType == QStyleOptionMenuItem::Separator) { if (option->text.isEmpty()) { return QSize(4, 4); } // ### width? return QSize(4, QFontMetrics(option->font).height() + 8); } int w = contentsSize.width(), h = contentsSize.height(); // always make room for icon column const int iconMargin = 4; int iconWidth; if (option->maxIconWidth) { iconWidth = option->maxIconWidth - 4 + 2 * iconMargin; } else { iconWidth = style->pixelMetric(QStyle::PM_SmallIconSize, option, widget) + 2 * iconMargin; } w += iconWidth; // add size for check column const int checkMargin = 4; if (option->checkType != QStyleOptionMenuItem::NotCheckable) { w += style->pixelMetric(QStyle::PM_IndicatorWidth, option, widget) + checkMargin; } // submenu arrow and spacing w += option->fontMetrics.height() + 4; if (option->menuItemType == QStyleOptionMenuItem::SubMenu || option->text.indexOf(QChar('\t', 0)) >= 0) { w += option->fontMetrics.height(); } if (h < textLineHeight) { h = textLineHeight; } h += menuItemSize; return QSize(w, qMax(h, qApp->globalStrut().height())); } /*-----------------------------------------------------------------------*/ inline QRect remainingHorizontalVisualRect(const QRect &rect, const QStyleOption *option, int width) { return rect.adjusted(option->direction == Qt::LeftToRight ? width : 0, 0, option->direction != Qt::LeftToRight ? -width : 0, 0); } inline QRect horizontalVisualRect(const QRect &rect, const QStyleOption *option, int width) { QRect res = rect; if (option->direction != Qt::LeftToRight) { res.setLeft(rect.left() + rect.width() - width); } else { res.setWidth(width); } return res; } inline QRect rightHorizontalVisualRect(const QRect &rect, const QStyleOption *option, int width) { QRect res = rect; if (option->direction != Qt::LeftToRight) { res.setWidth(width); } else { res.setLeft(rect.left() + rect.width() - width); } return res; } /*-----------------------------------------------------------------------*/ void paintMenuItem(QPainter *painter, const QStyleOptionMenuItem *option, const QWidget *widget, const QStyle *style) { // configuration const MenuMode menuMode = ButtonMenu; const CheckColumnMode checkColumnMode = option->maxIconWidth ? (/*option->menuHasCheckableItems ? UseIconColumn :*/ NoCheckColumn) : NoCheckColumn; const bool showUncheckedIndicator = true; const bool showShortcut = true; const IconColumnMode iconColumnMode = checkColumnMode == UseIconColumn && option->menuHasCheckableItems ? ForceIconColumn : option->maxIconWidth ? ShowIconColumn : ShowIconColumn; const SeparatorMode separatorMode = TextSeparator; const SelectionMode selectionMode = ItemSelection; // layout // ### make margins configurable const int checkMargin = 4; const int iconMargin = 4; const int checkSize = option->menuHasCheckableItems ? qMax(style->pixelMetric(QStyle::PM_ExclusiveIndicatorWidth, option, widget), style->pixelMetric(QStyle::PM_IndicatorWidth, option, widget)) : 0; const int iconSize = style->pixelMetric(QStyle::PM_SmallIconSize, option, widget); const int checkColumnWidth = checkSize + 2 * checkMargin; // FIXME qMax(checkSize, iconSize) for useIconColum const int iconColumnWidth = iconColumnMode == HideIconColumn ? 0 : option->maxIconWidth ? option->maxIconWidth - 4 + 2 * iconMargin : iconSize + 2 * iconMargin; // Qt 4.x has a bug where the option->rect is one pixel too wide const QRect itemRect = option->rect.adjusted(0, 0, -1, 0); QRect iconRect = horizontalVisualRect(itemRect, option, iconColumnWidth); QRect textRect = remainingHorizontalVisualRect(itemRect, option, iconColumnWidth); // background color QPalette::ColorRole menuBackgroundRole; QPalette::ColorRole menuForegroundRole; QBrush menuBackground; QBrush iconBackground; switch (menuMode) { case ButtonMenu: menuBackgroundRole = QPalette::Window; menuForegroundRole = QPalette::WindowText; iconBackground = QColor(0, 0, 0, 10); break; case ItemViewMenu: menuBackgroundRole = QPalette::Base; menuForegroundRole = QPalette::Text; iconBackground = option->palette.brush(QPalette::Active, QPalette::Window); break; } // background menuBackground = option->palette.brush(QPalette::Active, menuBackgroundRole); painter->fillRect(textRect, menuBackground); if (!iconRect.isEmpty()) { if (!iconBackground.isOpaque()) { painter->fillRect(iconRect, menuBackground); } } painter->fillRect(iconRect, iconBackground); // painter->fillRect(iconRect.adjusted(2, 2, -2, -2), QColor(0, 255, 0, 120)); // separator if (option->menuItemType == QStyleOptionMenuItem::Separator) { QRect separatorRect; switch (separatorMode) { case IconSeparator: separatorRect = iconRect; break; case TextSeparator: separatorRect = textRect; break; case ItemSeparator: separatorRect = itemRect; break; } // ### make separator margins configurable separatorRect.adjust(0, 1, 0, -1); if (option->text.isEmpty()) { paintThinFrame(painter, separatorRect, option->palette, 60, -20); } else { const int textFlags = Qt::AlignLeft | Qt::AlignVCenter | Qt::TextDontClip | Qt::TextSingleLine; QColor bgcolor = menuBackground.color(); paintThinFrame(painter, separatorRect, option->palette, -10, -20); paintThinFrame(painter, separatorRect.adjusted(1, 1, -1, -1), option->palette, -30, 80, menuBackgroundRole); QLinearGradient gradient(separatorRect.topLeft(), separatorRect.bottomLeft()); gradient.setColorAt(0.0, shaded_color(bgcolor, 90)); gradient.setColorAt(0.2, shaded_color(bgcolor, 60)); gradient.setColorAt(0.5, shaded_color(bgcolor, 0)); gradient.setColorAt(0.51, shaded_color(bgcolor, -10)); gradient.setColorAt(1.0, shaded_color(bgcolor, -20)); painter->fillRect(separatorRect.adjusted(1, 1, -1, -1), gradient); // ### margins separatorRect = remainingHorizontalVisualRect(separatorRect, option, 8); style->drawItemText(painter, separatorRect, textFlags, option->palette, true, option->text, menuForegroundRole); } return; } // selection background painter->save(); if (option->state & QStyle::State_Selected) { QRect selectionRect; switch (selectionMode) { case IconSelection: selectionRect = iconRect; break; case TextSelection: selectionRect = textRect; break; case ItemSelection: selectionRect = itemRect; break; } switch (menuMode) { case ButtonMenu: { QStyleOptionButton button; button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; button.state |= QStyle::State_MouseOver; button.rect = selectionRect.adjusted(-1, -1, 1, 1); paintCommandButtonPanel(painter, &button, 0); menuForegroundRole = QPalette::ButtonText; break; } case ItemViewMenu: { QColor color = option->palette.color(QPalette::Active, QPalette::Highlight); color.setAlpha(option->state & QStyle::State_Enabled ? 180 : 40); painter->fillRect(selectionRect, color); if (option->state & QStyle::State_Enabled) { paintThinFrame(painter, selectionRect, option->palette, -20, -20); } menuForegroundRole = QPalette::HighlightedText; break; } } painter->setPen(option->palette.color(QPalette::Active, menuForegroundRole)); } // arrow if (option->menuItemType == QStyleOptionMenuItem::SubMenu) { const int arrowWidth = option->fontMetrics.height(); const QRect arrowRect = rightHorizontalVisualRect(textRect, option, arrowWidth); QStyleOptionMenuItem opt = *option; opt.rect = arrowRect; QFont font = painter->font(); font.setPointSizeF(font.pointSizeF() / 1.19); opt.fontMetrics = QFontMetrics(font); opt.state &= QStyle::State_Enabled; opt.palette.setColor(QPalette::ButtonText, option->palette.color(option->state & QStyle::State_Enabled ? QPalette::Active : QPalette::Disabled, menuForegroundRole)); style->drawPrimitive((option->direction == Qt::RightToLeft) ? QStyle::PE_IndicatorArrowLeft : QStyle::PE_IndicatorArrowRight, &opt, painter, widget); } // check if (option->checkType != QStyleOptionMenuItem::NotCheckable) { QRect checkRect; switch (checkColumnMode) { case UseIconColumn: checkRect = iconRect; if (option->checked) { // when using the icon colum, we do not show an icon for checked items iconRect = QRect(); } break; case NoCheckColumn: case ShowCheckColumn: checkRect = horizontalVisualRect(textRect, option, checkColumnWidth); textRect = remainingHorizontalVisualRect(textRect, option, checkColumnWidth - checkMargin); break; } // painter->fillRect(checkRect.adjusted(2, 2, -2, -2), QColor(0, 0, 255, 120)); if (option->checked || option->state & QStyle::State_Selected || (showUncheckedIndicator && option->checkType == QStyleOptionMenuItem::NonExclusive)) { QStyleOptionMenuItem opt = *option; opt.rect = checkRect; style->drawPrimitive(QStyle::PE_IndicatorMenuCheckMark, &opt, painter, widget); } } else if (checkColumnMode == ShowCheckColumn) { textRect = remainingHorizontalVisualRect(textRect, option, checkColumnWidth - checkMargin); } // painter->fillRect(textRect.adjusted(2, 2, -2, -2), QColor(255, 0, 0, 120)); // text if (!option->text.isEmpty()) { const int shortcutPos = option->text.indexOf(QChar('\t', 0)); int textFlags = Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; if (!style->styleHint(QStyle::SH_UnderlineShortcut, option, widget)) { textFlags |= Qt::TextHideMnemonic; } if (showShortcut && shortcutPos >= 0) { const int shortcutWidth = option->tabWidth + option->fontMetrics.height() - 2; const QRect shortcutRect = rightHorizontalVisualRect(textRect, option, shortcutWidth); // painter->fillRect(shortcutRect, QColor(255, 220, 0, 120)); style->drawItemText(painter, shortcutRect, textFlags, option->palette, option->state & QStyle::State_Enabled, option->text.mid(shortcutPos + 1), menuForegroundRole); } QFont font = option->font; if (option->menuItemType == QStyleOptionMenuItem::DefaultItem) { font.setBold(true); } painter->setFont(font); // ### textMargin textRect = remainingHorizontalVisualRect(textRect, option, 4); style->drawItemText(painter, textRect, textFlags, option->palette, option->state & QStyle::State_Enabled, option->text.left(shortcutPos), menuForegroundRole); } // icon if (iconColumnMode != HideIconColumn && !option->icon.isNull() && !iconRect.isEmpty()) { QIcon::Mode mode; if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Selected) { mode = QIcon::Active; } else { mode = QIcon::Normal; } } else { mode = QIcon::Disabled; } iconRect = QRect((iconRect.left() + iconRect.right() + 2 - iconSize) >> 1, (iconRect.top() + iconRect.bottom() + 2 - iconSize) >> 1, iconSize, iconSize); option->icon.paint(painter, iconRect, Qt::AlignCenter, mode, QIcon::Off); } painter->restore(); } /*-----------------------------------------------------------------------*/ void paintMenuTitle(QPainter *painter, const QStyleOptionToolButton *option, const QWidget *widget, const QStyle *style) { const QPalette::ColorRole bgrole = QPalette::Window; QColor bgcolor = option->palette.color(bgrole); QStyleOptionToolButton opt = *option; opt.state &= ~(QStyle::State_Sunken | QStyle::State_On | QStyle::State_Selected); // Qt 4.x has a bug where the option->rect is one pixel too wide opt.rect.adjust(0, 0, -1, 0); opt.palette.setColor(QPalette::ButtonText, option->palette.color(QPalette::WindowText)); paintThinFrame(painter, opt.rect, option->palette, -10, -20); paintThinFrame(painter, opt.rect.adjusted(1, 1, -1, -1), opt.palette, -30, 80, bgrole); QLinearGradient gradient(opt.rect.topLeft(), opt.rect.bottomLeft()); gradient.setColorAt(0.0, shaded_color(bgcolor, 90)); gradient.setColorAt(0.2, shaded_color(bgcolor, 60)); gradient.setColorAt(0.5, shaded_color(bgcolor, 0)); gradient.setColorAt(0.51, shaded_color(bgcolor, -10)); gradient.setColorAt(1.0, shaded_color(bgcolor, -20)); painter->fillRect(opt.rect.adjusted(1, 1, -1, -1), gradient); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); } /*-----------------------------------------------------------------------*/ bool SkulptureStyle::Private::menuEventFilter(QMenu *menu, QEvent *event) { QHash<QMenu *, MenuInfo>::iterator i = menuHash.begin(); while (i != menuHash.end()) { if (!i->menu) { i = menuHash.erase(i); } else { ++i; } } i = menuHash.find(menu); MenuInfo *menuInfo = i != menuHash.end() ? &(*i) : 0; if (event->type() == QEvent::Hide) { if (menuInfo) { menuHash.erase(i); } menuInfo = 0; } else { QPoint eventPos; bool moveEvent = false; if (event->type() == QEvent::TabletMove) { QTabletEvent *tabletEvent = (QTabletEvent *) event; eventPos = tabletEvent->pos(); moveEvent = true; } else if (event->type() == QEvent::MouseMove) { QMouseEvent *mouseEvent = (QMouseEvent *) event; eventPos = mouseEvent->pos(); moveEvent = true; } QAction *menuAction = 0; QAction *action = 0; if (moveEvent && menu->rect().contains(eventPos)) { action = menu->actionAt(eventPos); #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) if (QWidgetAction * widgetAction = qobject_cast<QWidgetAction *>(action)) { if (widgetAction->defaultWidget()) { action = 0; } } #endif if (action && action->menu()) { menuAction = action; } } if (menuAction && !menuInfo) { MenuInfo info; info.menu = menu; info.delayTimer = 0; info.lastPos = eventPos; info.eventCount = 0; i = menuHash.insert(menu, info); menuInfo = &(*i); } if (menuInfo) { if (event->type() == QEvent::Enter) { menuInfo->lastSubMenuAction = 0; menuInfo->eventCount = 0; } else if (event->type() == QEvent::Leave) { menuInfo->lastSubMenuAction = 0; menuInfo->eventCount = 0; } else if (moveEvent) { if (action != menuAction) { menuInfo->lastSubMenuAction = 0; menuInfo->eventCount = 0; } if (menu->rect().contains(eventPos)) { if (menuAction) { QAction *last = menuInfo->lastSubMenuAction; menuInfo->lastSubMenuAction = menuAction; if (last && last == menuAction) { if (event->type() == QEvent::MouseMove) { QMouseEvent *mouseEvent = (QMouseEvent *) event; ++menuInfo->eventCount; if (menuInfo->eventCount > 2 && mouseEvent->buttons() == Qt::NoButton) { event->accept(); return true; } } } else { menuInfo->eventCount = 0; } } } else { menuInfo->lastSubMenuAction = 0; menuInfo->eventCount = 0; } } } } return false; } /* * skulpture_misc.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QTableView> /*-----------------------------------------------------------------------*/ extern void paintPanelButtonTool(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #if 0 void paintPanelPlacesViewItem(QPainter *painter, const QStyleOptionViewItemV4 *option, const QWidget *widget, const QStyle *style) { QStyleOption opt = *option; if (opt.state & QStyle::State_Selected) { opt.state |= QStyle::State_On; } else if (!(opt.state & QStyle::State_MouseOver)) { // draw nothing return; } paintPanelButtonTool(painter, &opt, 0, style); } #endif void paintPanelItemViewItem(QPainter *painter, const QStyleOptionViewItemV4 *option, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); #if 0 if (widget && widget->inherits("KFilePlacesView")) { paintPanelPlacesViewItem(painter, option, widget, style); return; } #endif QColor color = option->palette.color(QPalette::Highlight); const bool mouse = option->state & QStyle::State_MouseOver && option->state & QStyle::State_Enabled; const QTableView *table = qobject_cast<const QTableView *>(widget); const bool largePanel = option->rect.height() > 7 + option->fontMetrics.height() && !table; QRect panelRect; if (largePanel) { if (option->version >= 4) { switch (option->viewItemPosition) { case QStyleOptionViewItemV4::Beginning: panelRect = option->rect.adjusted(1, 1, 0, 0); break; case QStyleOptionViewItemV4::End: panelRect = option->rect.adjusted(0, 1, -1, 0); break; case QStyleOptionViewItemV4::Middle: panelRect = option->rect.adjusted(0, 1, 0, 0); break; case QStyleOptionViewItemV4::Invalid: case QStyleOptionViewItemV4::OnlyOne: panelRect = option->rect.adjusted(1, 1, -1, 0); break; } } else { panelRect = option->rect.adjusted(1, 1, -1, 0); } } else { panelRect = option->rect; } if (option->version >= 2 && option->features & QStyleOptionViewItemV2::Alternate) { painter->fillRect(panelRect, option->palette.color(QPalette::AlternateBase)); } else { painter->fillRect(panelRect, option->backgroundBrush); } if (option->state & QStyle::State_Selected) { if (mouse) { color = color.lighter(110); } } else if (mouse) { color.setAlpha(40); } else { return; } painter->save(); // ### work around KDE widgets that turn on antialiasing painter->setRenderHint(QPainter::Antialiasing, false); painter->setBrush(Qt::NoBrush); // QColor shine(255, 255, 255, panelRect.height() > 20 ? 25 : 10); QColor shadow(0, 0, 0, largePanel ? 50 : 20); painter->setPen(shadow); // painter->setPen(QPen(color.darker(panelRect.height() > 20 ? 150 : 120), 1)); painter->fillRect(panelRect, color); if (table && table->showGrid()) { painter->restore(); return; } if (option->version >= 4) { switch (option->viewItemPosition) { case QStyleOptionViewItemV4::Beginning: painter->drawLine(panelRect.topLeft() + QPoint(0, 1), panelRect.bottomLeft() - QPoint(0, 1)); painter->drawLine(panelRect.topLeft(), panelRect.topRight()); painter->drawLine(panelRect.bottomLeft(), panelRect.bottomRight()); break; case QStyleOptionViewItemV4::End: painter->drawLine(panelRect.topRight() + QPoint(0, 1), panelRect.bottomRight() - QPoint(0, 1)); painter->drawLine(panelRect.topLeft(), panelRect.topRight()); painter->drawLine(panelRect.bottomLeft(), panelRect.bottomRight()); break; case QStyleOptionViewItemV4::Middle: painter->drawLine(panelRect.topLeft(), panelRect.topRight()); painter->drawLine(panelRect.bottomLeft(), panelRect.bottomRight()); break; case QStyleOptionViewItemV4::Invalid: case QStyleOptionViewItemV4::OnlyOne: painter->drawRect(panelRect.adjusted(0, 0, -1, -1)); break; } } else { painter->drawRect(panelRect.adjusted(0, 0, -1, -1)); } painter->restore(); } #endif /*-----------------------------------------------------------------------*/ extern void paintCachedIndicatorBranchChildren(QPainter *painter, const QStyleOption *option); void paintIndicatorBranch(QPainter *painter, const QStyleOption *option) { QPoint center = option->rect.center() + (option->direction == Qt::LeftToRight ? QPoint(2, 0) : QPoint(-1, 0)); if (option->state & (QStyle::State_Item | QStyle::State_Sibling)) { QColor lineColor = option->palette.color(QPalette::Text); lineColor.setAlpha(50); painter->fillRect(QRect(center.x(), option->rect.y(), 1, center.y() - option->rect.y()), lineColor); if (option->state & QStyle::State_Sibling) { painter->fillRect(QRect(center.x(), center.y(), 1, option->rect.bottom() - center.y() + 1), lineColor); } if (option->state & QStyle::State_Item) { if (option->direction == Qt::LeftToRight) { painter->fillRect(QRect(center.x() + 1, center.y(), option->rect.right() - center.x(), 1), lineColor); } else { painter->fillRect(QRect(option->rect.left(), center.y(), center.x() - option->rect.left(), 1), lineColor); } if (!(option->state & QStyle::State_Sibling)) { lineColor.setAlpha(25); painter->fillRect(QRect(center.x(), center.y(), 1, 1), lineColor); } } } if (option->state & QStyle::State_Children && !(option->state & QStyle::State_Open)) { QStyleOption opt = *option; static const int d = 9; opt.rect = QRect(center.x() - d / 2, center.y() - d / 2, d, d); paintCachedIndicatorBranchChildren(painter, &opt); } } /*-----------------------------------------------------------------------*/ void paintQ3ListView(QPainter *painter, const QStyleOptionQ3ListView *option, const QWidget *widget, const QStyle *style) { Q_UNUSED(widget); Q_UNUSED(style); if (option->subControls & QStyle::SC_Q3ListView) { painter->fillRect(option->rect, option->viewportPalette.brush(option->viewportBGRole)); } if (option->subControls & QStyle::SC_Q3ListViewBranch) { QStyleOption opt = *((QStyleOption *) option); int y = option->rect.y(); for (int i = 1; i < option->items.size(); ++i) { QStyleOptionQ3ListViewItem item = option->items.at(i); if (y + item.totalHeight > 0 && y < option->rect.height()) { opt.state = QStyle::State_Item; if (i + 1 < option->items.size()) { opt.state |= QStyle::State_Sibling; } if (item.features & QStyleOptionQ3ListViewItem::Expandable || (item.childCount > 0 && item.height > 0)) { opt.state |= QStyle::State_Children | (item.state & QStyle::State_Open); } opt.rect = QRect(option->rect.left(), y, option->rect.width(), item.height); paintIndicatorBranch(painter, &opt); if (opt.state & QStyle::State_Sibling && item.height < item.totalHeight) { opt.state = QStyle::State_Sibling; opt.rect = QRect(option->rect.left(), y + item.height, option->rect.width(), item.totalHeight - item.height); paintIndicatorBranch(painter, &opt); } } y += item.totalHeight; } } } /*-----------------------------------------------------------------------*/ void paintSizeGrip(QPainter *painter, const QStyleOption *option) { Qt::Corner corner = Qt::BottomRightCorner; #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) if (option->type == QStyleOption::SO_SizeGrip) { const QStyleOptionSizeGrip *sizegrip = static_cast<const QStyleOptionSizeGrip *>(option); corner = sizegrip->corner; } #endif QRect r; switch (corner) { case Qt::TopLeftCorner: r = option->rect.adjusted(0, 0, 2, 2); break; case Qt::TopRightCorner: r = option->rect.adjusted(-2, 0, 0, 2); break; case Qt::BottomLeftCorner: r = option->rect.adjusted(0, -2, 2, 0); break; case Qt::BottomRightCorner: r = option->rect.adjusted(-2, -2, 0, 0); break; } paintThinFrame(painter, r, option->palette, 60, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 60); switch (corner) { case Qt::TopRightCorner: // for Kickoff 4.1 painter->save(); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), 60), 1.0)); painter->drawLine(r.topLeft(), r.bottomRight()); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), -20), 1.0)); painter->drawLine(r.topLeft() + QPoint(1, -1), r.bottomRight() + QPoint(1, -1)); painter->restore(); break; case Qt::BottomRightCorner: painter->save(); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), -20), 1.0)); painter->drawLine(r.topRight(), r.bottomLeft()); painter->setPen(QPen(shaded_color(option->palette.color(QPalette::Window), 60), 1.0)); painter->drawLine(r.topRight() + QPoint(1, 1), r.bottomLeft() + QPoint(1, 1)); painter->restore(); break; case Qt::TopLeftCorner: // TODO break; case Qt::BottomLeftCorner: // TODO break; } } /*-----------------------------------------------------------------------*/ extern void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, const QWidget *widget); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) void paintToolBoxTabShape(QPainter *painter, const QStyleOptionToolBoxV2 *option) #else void paintToolBoxTabShape(QPainter *painter, const QStyleOptionToolBox *option) #endif { QRect r = option->rect; if (option->state & QStyle::State_Selected) { QColor color = option->palette.color(QPalette::Window); paintThinFrame(painter, r, option->palette, 40, -20); paintThinFrame(painter, r.adjusted(1, 1, -1, -1), option->palette, -20, 80); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); gradient.setColorAt(0.0, shaded_color(color, 50)); gradient.setColorAt(0.2, shaded_color(color, 30)); gradient.setColorAt(0.5, shaded_color(color, 0)); gradient.setColorAt(0.51, shaded_color(color, -10)); gradient.setColorAt(1.0, shaded_color(color, -20)); painter->fillRect(r.adjusted(1, 1, -1, -1), gradient); } else if (option->state & (QStyle::State_Sunken | QStyle::State_MouseOver)) { QStyleOptionButton button; button.QStyleOption::operator=(*option); button.features = QStyleOptionButton::None; button.rect.adjust(-1, -1, 1, 1); // ### needs QPalette::Window ? paintCommandButtonPanel(painter, &button, 0); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) } else if (option->version >= 2 && option->selectedPosition == QStyleOptionToolBoxV2::PreviousIsSelected) { r.setHeight(2); paintThinFrame(painter, r, option->palette, 60, -20); #endif } else { // r.setHeight(2); // painter->fillRect(r, option->palette.color(QPalette::Window)); } QStyleOption indicator; indicator = *option; indicator.rect.setSize(QSize(11, 11)); indicator.rect.translate(0, (option->rect.height() - 11) >> 1); indicator.state = QStyle::State_Children; if (option->state & QStyle::State_Selected) { indicator.state |= QStyle::State_Open; } paintIndicatorBranch(painter, &indicator); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) void paintToolBoxTabLabel(QPainter *painter, const QStyleOptionToolBox *option, const QWidget *widget, const QStyle *style) { QStyleOptionToolBoxV2 opt; if (option->version >= 2) { opt = *((const QStyleOptionToolBoxV2 *) option); } else { opt = *option; } if ((option->state & QStyle::State_Selected) || !(option->state & (QStyle::State_Sunken | QStyle::State_MouseOver))) { opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::WindowText)); } ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_ToolBoxTabLabel, &opt, painter, widget); } #endif /*-----------------------------------------------------------------------*/ extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole); void paintSplitter(QPainter *painter, const QStyleOption *option) { if (option->state & QStyle::State_Enabled && option->state & QStyle::State_MouseOver) { painter->fillRect(option->rect, QColor(255, 255, 255, 60)); } int d = 5; QRect rect(QRect(option->rect).center() - QPoint(d / 2, d / 2), QSize(d, d)); QStyleOption iOption = *option; iOption.rect = rect; iOption.palette.setCurrentColorGroup(QPalette::Disabled); // iOption.state &= ~QStyle::State_Enabled; iOption.palette.setColor(QPalette::Button, iOption.palette.color(QPalette::Window)); paintCachedGrip(painter, &iOption, QPalette::Window); } /*-----------------------------------------------------------------------*/ void paintRubberBand(QPainter *painter, const QStyleOptionRubberBand *option) { painter->save(); if (true || option->shape == QRubberBand::Rectangle) { QColor color = option->palette.color(QPalette::Highlight); color.setAlphaF(0.2 * color.alphaF()); painter->fillRect(option->rect, color); color = option->palette.color(QPalette::Highlight); color.setAlphaF(0.8 * color.alphaF()); painter->setPen(QPen(color /*, 1.0, Qt::DotLine*/)); painter->drawRect(option->rect.adjusted(0, 0, -1, -1)); } else { // painter->fillRect(option->rect, Qt::green); } painter->restore(); } int getRubberBandMask(QStyleHintReturnMask *mask, const QStyleOption *option, const QWidget *widget) { static const int rubber_width = 4; int r = rubber_width; Q_UNUSED(widget); mask->region = option->rect; if (option->rect.width() > 2 * r && option->rect.height() > 2 * r) { mask->region -= option->rect.adjusted(r, r, -r, -r); } return 1; } /* * skulpture_progressbar.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QProgressBar> #include <QtCore/QTime> #include "sk_effects.h" #if 0 #define FG_ROLE_PROGRESS QPalette::WindowText #define BG_ROLE_PROGRESS QPalette::Window #elif 1 #define FG_ROLE_PROGRESS QPalette::Text #define BG_ROLE_PROGRESS QPalette::Base #else #define FG_ROLE_PROGRESS QPalette::QPalette::Highlight #define BG_ROLE_PROGRESS QPalette::Base #endif #define FG_ROLE_CHUNK QPalette::HighlightedText #define BG_ROLE_CHUNK QPalette::Highlight /*-----------------------------------------------------------------------*/ static void paintRotatedText(QPainter *painter, const QRect &rect, int alignment, const QString &text, int angle) { QMatrix matrix; QPointF center = QRectF(rect).center(); matrix.translate(center.x(), center.y()); matrix.rotate(-angle); matrix.translate(-center.x(), -center.y()); QRect r = matrix.mapRect(rect); QRect textRect = painter->fontMetrics().boundingRect(r, alignment, text); QPixmap pixmap(textRect.size() + QSize(4, 4)); pixmap.fill(Qt::transparent); QPainter p(&pixmap); p.setPen(painter->pen()); p.setFont(painter->font()); p.drawText(QRect(2, 2, pixmap.width() - 2, pixmap.height() - 2), alignment, text); painter->save(); painter->setMatrix(matrix, true); painter->drawPixmap(r.x() + ((r.width() - pixmap.width()) >> 1), r.y() + ((r.height() - pixmap.height()) >> 1), pixmap); painter->restore(); } /*-----------------------------------------------------------------------*/ static bool isPasswordStrengthIndicator(const QWidget *widget) { return widget && widget->parentWidget() && widget->parentWidget()->parentWidget() && widget->parentWidget()->parentWidget()->inherits("KNewPasswordDialog"); } static bool isDiskSpaceIndicator(const QWidget * widget) { return false && widget && widget->inherits("StatusBarSpaceInfo"); } /*-----------------------------------------------------------------------*/ static bool progressBarContentsCentered(const QStyleOptionProgressBarV2 *option, const QWidget *widget) { const bool vertical = option->version >= 2 && option->orientation == Qt::Vertical; if (vertical) { return false; } if (isPasswordStrengthIndicator(widget) || isDiskSpaceIndicator(widget)) { return false; } return true; } static QRect progressBarContentsRect(const QStyleOptionProgressBarV2 *option, bool contentsCentered) { // configuration options const int border = 2; QRect contentsRect = option->rect.adjusted(border, border, -border, -border); if (option->minimum < option->maximum) { if (option->progress > option->minimum) { if (option->progress < option->maximum) { // progress qreal progress = qreal(option->progress - option->minimum) / (option->maximum - option->minimum); if (option->version >= 2 && option->orientation == Qt::Vertical) { if (contentsCentered) { int adjustment = int((contentsRect.height() / 2) * (1.0 - progress)); contentsRect.adjust(0, adjustment, 0, -adjustment); } else { int contentsHeight = qMax(1, int(contentsRect.height() * progress + 0.5)); if (option->version >= 2 && option->invertedAppearance) { contentsRect.setHeight(contentsHeight); } else { contentsRect.setTop(contentsRect.top() + contentsRect.height() - contentsHeight); } } } else { if (contentsCentered) { int adjustment = int((contentsRect.width() / 2) * (1.0 - progress)); contentsRect.adjust(adjustment, 0, -adjustment, 0); } else { int contentsWidth = qMax(1, int(contentsRect.width() * progress + 0.5)); if ((option->version >= 2 && option->invertedAppearance) ^ (option->direction != Qt::LeftToRight)) { contentsRect.setLeft(contentsRect.left() + contentsRect.width() - contentsWidth); } else { contentsRect.setWidth(contentsWidth); } } } } else { // finished } } else { // starting contentsRect = QRect(); } } else if (option->minimum == option->maximum) { // busy indicator } else { // invalid values contentsRect = QRect(); } return contentsRect; } /*-----------------------------------------------------------------------*/ void paintProgressBarGroove(QPainter *painter, const QStyleOptionProgressBar *option) { painter->fillRect(option->rect.adjusted(2, 2, -2, -2), option->palette.brush(BG_ROLE_PROGRESS)); } void paintProgressBarLabel(QPainter *painter, const QStyleOptionProgressBarV2 *option, const QWidget *widget, const QStyle *style) { if (!option->textVisible) { return; } const bool vertical = option->version >= 2 && option->orientation == Qt::Vertical; Qt::Alignment alignment = option->textAlignment; if (vertical) { if (!(alignment & (Qt::AlignTop | Qt::AlignBottom | Qt::AlignVCenter))) { alignment |= Qt::AlignVCenter; } alignment &= ~(Qt::AlignLeft | Qt::AlignRight); alignment |= Qt::AlignHCenter; } else { if (!(alignment & (Qt::AlignLeft | Qt::AlignRight | Qt::AlignHCenter))) { alignment |= Qt::AlignHCenter; } alignment &= ~(Qt::AlignTop | Qt::AlignBottom); alignment |= Qt::AlignVCenter; } // FIXME currently forces centering if (true) { alignment &= ~(Qt::AlignLeft | Qt::AlignRight); alignment &= ~(Qt::AlignTop | Qt::AlignBottom); alignment |= Qt::AlignCenter; } QRect r = option->rect.adjusted(6, 0, -6, 0); QRect labelRect = option->fontMetrics.boundingRect(r, alignment, option->text); if (!labelRect.isEmpty()) { const bool contentsCentered = progressBarContentsCentered(option, widget); const QRect contentsRect = progressBarContentsRect(option, contentsCentered); if (contentsRect.intersects(labelRect)) { painter->save(); if (vertical) { QMatrix mat; QPointF c = QRectF(r).center(); mat.translate(c.x(), c.y()); mat.rotate(option->bottomToTop ? -90 : 90); mat.translate(-c.x(), -c.y()); r = mat.mapRect(r); painter->setMatrix(mat, true); } #if 0 QImage outlineBuffer(labelRect.size() + QSize(8, 8), QImage::Format_ARGB32_Premultiplied); outlineBuffer.fill(0); QPainter outlinePainter(&outlineBuffer); outlinePainter.setPen(option->palette.color(FG_ROLE_CHUNK).value() > 150 ? Qt::black : Qt::white); style->drawItemText(&outlinePainter, QRect(0, 0, outlineBuffer.width(), outlineBuffer.height()), Qt::AlignCenter, option->palette, true, option->text, QPalette::NoRole); outlinePainter.end(); blurImage(outlineBuffer, 4); outlinePainter.begin(&outlineBuffer); style->drawItemText(&outlinePainter, QRect(0, 0, outlineBuffer.width(), outlineBuffer.height()), Qt::AlignCenter, option->palette, true, option->text, FG_ROLE_CHUNK); outlinePainter.end(); #endif if (vertical) { QMatrix mat; QPointF c = QRectF(r).center(); mat.translate(c.x(), c.y()); mat.rotate(option->bottomToTop ? 90 : -90); mat.translate(-c.x(), -c.y()); painter->setClipRegion(mat.mapRect(contentsRect)); } else { painter->setClipRegion(contentsRect); } #if 0 painter->drawImage(QRect(labelRect.x() - 4, labelRect.y() - 4, labelRect.width() + 8, labelRect.height() + 8), outlineBuffer); #else style->drawItemText(painter, r, alignment, option->palette, true, option->text, FG_ROLE_CHUNK); #endif painter->restore(); } painter->save(); QRegion region = option->rect; region -= contentsRect; painter->setClipRegion(region); if (vertical) { painter->setPen(option->palette.color(FG_ROLE_PROGRESS)); paintRotatedText(painter, r, alignment, option->text, option->bottomToTop ? 90 : -90); } else { style->drawItemText(painter, r, alignment, option->palette, option->state & QStyle::State_Enabled, option->text, FG_ROLE_PROGRESS); } painter->restore(); } } /*-----------------------------------------------------------------------*/ enum AnimationMode { NoAnimation, FloatAnimation, LiquidAnimation }; static QColor progressBarFillColor(const QStyleOptionProgressBarV2 *option, const QWidget *widget) { QColor fillColor = option->palette.color(BG_ROLE_CHUNK); if (isPasswordStrengthIndicator(widget)) { int p = option->minimum < option->maximum ? 100 * (option->progress - option->minimum) / (option->maximum - option->minimum) : 0; fillColor.setHsv(p * 85 / 100, 200, 240 - p); } else if (isDiskSpaceIndicator(widget)) { int p = option->minimum < option->maximum ? 100 * (option->progress - option->minimum) / (option->maximum - option->minimum) : 0; if (p < 75) p = 100; else p = (100 - p) * 4; fillColor.setHsv(p * 85 / 100, 200, 240 - p); } return fillColor; } void paintProgressBarContents(QPainter *painter, const QStyleOptionProgressBarV2 *option, const QWidget *widget, const QStyle *style) { // configuration const bool busyIndicator = option->minimum == option->maximum; const bool vertical = option->version >= 2 && option->orientation == Qt::Vertical; const AnimationMode animationMode = busyIndicator ? FloatAnimation : vertical ? LiquidAnimation : FloatAnimation; const int chunkWidth = 4 * qMax(1, style->pixelMetric(QStyle::PM_ProgressBarChunkWidth, option, widget)); const bool reverseAnimation = busyIndicator; const int animationSpeed = (busyIndicator ? 1000 : 1000) * (reverseAnimation ? -1 : 1); const int floatAlpha = busyIndicator ? 100 : 255; const bool contentsCentered = progressBarContentsCentered(option, widget); const QRect contentsRect = progressBarContentsRect(option, contentsCentered); const int cornerSmoothing = 0; const int centerSmoothing = busyIndicator ? 100 : 0; const int borderSmoothing = 0; const bool contentsFrame = false; const int gradientSharpness = 0; const int gradientRatio = 50; const int gradientAngle = 0; // contents if (!contentsRect.isEmpty()) { QColor fillColor = progressBarFillColor(option, widget); qreal rounding = -1; if (!busyIndicator && option->progress < option->maximum) { rounding = contentsCentered ? 0.6 : 0.5; } switch (animationMode) { case NoAnimation: { painter->fillRect(contentsRect, fillColor); break; } case FloatAnimation: { QColor floatColor; if (option->palette.color(FG_ROLE_CHUNK).value() > fillColor.value()) { floatColor = fillColor.lighter(105); } else { floatColor = fillColor.darker(105); } floatColor.setAlpha(floatAlpha); int m = QTime(0, 0).msecsTo(QTime::currentTime()) / (animationSpeed / chunkWidth); QPoint startPoint = contentsCentered ? contentsRect.topLeft() : contentsRect.center(); startPoint += vertical ? QPoint(0, chunkWidth - 1 - m % chunkWidth) : QPoint(m % chunkWidth, 0); QLinearGradient fillGradient(startPoint, startPoint + (vertical ? QPoint(0, chunkWidth) : QPoint(chunkWidth, qRound(chunkWidth * sin(gradientAngle * M_PI / 180))))); fillGradient.setSpread(QGradient::RepeatSpread); const qreal delta = gradientRatio * gradientSharpness * 0.000049999; fillGradient.setColorAt(0.0, fillColor); fillGradient.setColorAt(0.0 + delta, fillColor); fillGradient.setColorAt(gradientRatio / 100.0 - delta, floatColor); fillGradient.setColorAt(gradientRatio / 100.0 + delta, floatColor); fillGradient.setColorAt(gradientRatio / 50.0 - delta, fillColor); fillGradient.setColorAt(1.0, fillColor); if (contentsCentered) { painter->save(); if (vertical) { painter->setClipRect(QRect(contentsRect.x(), contentsRect.y() + (contentsRect.height() >> 1), contentsRect.width(), contentsRect.height() - (contentsRect.height() >> 1))); } else { painter->setClipRect(QRect(contentsRect.x(), contentsRect.y(), contentsRect.width() >> 1, contentsRect.height())); } painter->translate(QRectF(contentsRect).center()); painter->scale(vertical ? 1 : -1, vertical ? -1 : 1); painter->translate(-QRectF(contentsRect).center()); painter->fillRect(contentsRect, fillGradient); painter->restore(); painter->save(); if (vertical) { painter->setClipRect(QRect(contentsRect.x(), contentsRect.y(), contentsRect.width(), contentsRect.height() >> 1)); } else { painter->setClipRect(QRect(contentsRect.x() + (contentsRect.width() >> 1), contentsRect.y(), contentsRect.width() - (contentsRect.width() >> 1), contentsRect.height())); } painter->fillRect(contentsRect, fillGradient); painter->restore(); } else { painter->fillRect(contentsRect, fillGradient); } if (contentsCentered && centerSmoothing > 0) { QColor centerColor = fillColor; const int contentsSize = vertical ? contentsRect.height() : contentsRect.width(); const int centerSize = qMin(3 * chunkWidth, contentsSize >> 1); const int delta = (contentsSize - centerSize) >> 1; const QRect centerRect = vertical ? contentsRect.adjusted(0, delta, 0, -delta) : contentsRect.adjusted(delta, 0, -delta, 0); QLinearGradient centerGradient(centerRect.topLeft(), vertical ? centerRect.bottomLeft() : centerRect.topRight()); centerGradient.setColorAt(0.0, Qt::transparent); centerGradient.setColorAt(0.4, centerColor); centerGradient.setColorAt(0.6, centerColor); centerGradient.setColorAt(1.0, Qt::transparent); painter->fillRect(centerRect, centerGradient); } break; } case LiquidAnimation: { painter->fillRect(contentsRect, fillColor); if (rounding >= 0) { int m = QTime(0, 0).msecsTo(QTime::currentTime()); rounding = (sin(m / 100.0) + 1) / 2; } } } if (rounding >= 0) { QLinearGradient lineGradient(contentsRect.topLeft(), vertical ? contentsRect.topRight() : contentsRect.bottomLeft()); QColor innerColor = blend_color(option->palette.color(BG_ROLE_PROGRESS), fillColor, rounding); QColor outerColor = blend_color(fillColor, option->palette.color(BG_ROLE_PROGRESS), rounding); lineGradient.setColorAt(0.0, outerColor); lineGradient.setColorAt(0.5, innerColor); lineGradient.setColorAt(1.0, outerColor); if (contentsCentered || (option->version >= 2 && option->invertedAppearance)) { if (vertical) { painter->fillRect(QRect(contentsRect.x(), contentsRect.bottom(), contentsRect.width(), 1), lineGradient); } else { painter->fillRect(QRect(contentsRect.left(), contentsRect.y(), 1, contentsRect.height()), lineGradient); } } if (contentsCentered || !(option->version >= 2 && option->invertedAppearance)) { if (vertical) { painter->fillRect(QRect(contentsRect.x(), contentsRect.top(), contentsRect.width(), 1), lineGradient); } else { painter->fillRect(QRect(contentsRect.right(), contentsRect.y(), 1, contentsRect.height()), lineGradient); } } } if (cornerSmoothing > 0) { painter->save(); QColor color = option->palette.color(BG_ROLE_PROGRESS); color.setAlpha(cornerSmoothing); painter->setPen(color); painter->drawPoint(contentsRect.left(), contentsRect.top()); painter->drawPoint(contentsRect.left(), contentsRect.bottom()); painter->drawPoint(contentsRect.right(), contentsRect.top()); painter->drawPoint(contentsRect.right(), contentsRect.bottom()); painter->restore(); } if (borderSmoothing > 0) { painter->save(); QColor frameColor = option->palette.color(BG_ROLE_PROGRESS); frameColor.setAlpha(borderSmoothing); painter->setPen(frameColor); painter->drawRect(contentsRect.adjusted(0, 0, -1, -1)); painter->restore(); } if (contentsFrame) { paintThinFrame(painter, contentsRect, option->palette, -20, 60, BG_ROLE_CHUNK); } } // overlay gradient QLinearGradient glassyGradient(option->rect.topLeft(), vertical ? option->rect.topRight() : option->rect.bottomLeft()); glassyGradient.setColorAt(0.0, QColor(255, 255, 255, 0)); glassyGradient.setColorAt(0.47, QColor(0, 0, 0, 2)); glassyGradient.setColorAt(0.475, QColor(0, 0, 0, 21)); glassyGradient.setColorAt(1.0, QColor(255, 255, 255, 0)); painter->fillRect(option->rect.adjusted(2, 2, -2, -2), glassyGradient); paintRecessedFrame(painter, option->rect, option->palette, RF_Small); } /* * skulpture_scrollbar.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QAbstractScrollArea> #include <QtGui/QApplication> #include <climits> /*-----------------------------------------------------------------------*/ extern void paintScrollArrow(QPainter *painter, const QStyleOption *option, Qt::ArrowType arrow, bool spin); void paintScrollArea(QPainter *painter, const QStyleOption *option) { QColor color = option->palette.color(QPalette::Disabled, QPalette::Window); if (option->state & QStyle::State_Enabled || option->type != QStyleOption::SO_Slider) { #if 0 if (option->state & QStyle::State_Sunken) { color = color.lighter(107); } else { color = color.darker(107); } #elif 0 color = option->palette.color(QPalette::Base); #elif 1 if (option->state & QStyle::State_Sunken) { color = color.darker(107); } else { // ### if (false && option->state & QStyle::State_MouseOver) { color = color.lighter(110); } else { color = color.lighter(107); } } #endif } painter->fillRect(option->rect, color); // painter->fillRect(option->rect, Qt::red); } void paintScrollAreaCorner(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle * /*style*/) { QStyleOption opt; opt = *option; opt.type = QStyleOption::SO_Default; if (qobject_cast<const QAbstractScrollArea *>(widget)) { // ### work around bug in Qt 4.5 if (option->rect.y() + option->rect.height() > widget->rect().height() || option->rect.x() + option->rect.width() > widget->rect().width()) { return; } opt.type = QStyleOption::SO_Slider; opt.state &= ~QStyle::State_Enabled; if (widget->isEnabled()) { opt.state |= QStyle::State_Enabled; } } paintScrollArea(painter, &opt); } extern void paintSliderGroove(QPainter *painter, QRect &rect, const QStyleOptionSlider *option); void paintScrollBarPage(QPainter *painter, const QStyleOptionSlider *option) { const bool paintGroove = true; paintScrollArea(painter, option); if (paintGroove) { QRect rect = option->rect.adjusted(1, 1, -1, -1); paintSliderGroove(painter, rect, option); } } void paintScrollBarAddLine(QPainter *painter, const QStyleOptionSlider *option) { paintScrollArea(painter, option); // paintThinFrame(painter, option->rect, option->palette, -40, 120); if (option->minimum != option->maximum) { QStyleOptionSlider opt = *option; opt.fontMetrics = QApplication::fontMetrics(); opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::WindowText)); paintScrollArrow(painter, &opt, option->orientation == Qt::Horizontal ? (option->direction == Qt::LeftToRight ? Qt::RightArrow : Qt::LeftArrow) : Qt::DownArrow, false); } } void paintScrollBarSubLine(QPainter *painter, const QStyleOptionSlider *option) { paintScrollArea(painter, option); // paintThinFrame(painter, option->rect, option->palette, -40, 120); if (option->minimum != option->maximum) { QStyleOptionSlider opt = *option; opt.fontMetrics = QApplication::fontMetrics(); opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::WindowText)); paintScrollArrow(painter, &opt, option->orientation == Qt::Horizontal ? (option->direction == Qt::LeftToRight ? Qt::LeftArrow : Qt::RightArrow) : Qt::UpArrow, false); } } void paintScrollBarFirst(QPainter *painter, const QStyleOptionSlider *option) { paintScrollBarSubLine(painter, option); if (option->minimum != option->maximum) { painter->fillRect(option->rect.adjusted(2, 2, -2, -2), option->palette.color(QPalette::WindowText)); } } void paintScrollBarLast(QPainter *painter, const QStyleOptionSlider *option) { paintScrollBarAddLine(painter, option); if (option->minimum != option->maximum) { painter->fillRect(option->rect.adjusted(2, 2, -2, -2), option->palette.color(QPalette::WindowText)); } } /*-----------------------------------------------------------------------*/ class ComplexControlLayout { public: struct SubControlItem { QStyle::SubControl subControl; QStyle::ControlElement controlElement; char layoutSpec; }; protected: ComplexControlLayout(const SubControlItem *controlItem, uint controlCount, const QStyleOptionComplex *opt, const QWidget *w = 0, const QStyle *s = 0) : subControlItem(controlItem), subControlCount(controlCount), option(opt), widget(w), style(s), layoutCount(0) { /* */ } ~ComplexControlLayout() { } public: QStyle::SubControl hitTestComplexControl(const QPoint &position) const; QRect subControlRect(QStyle::SubControl subControl) const; void paintComplexControl(QPainter *painter) const; protected: struct LayoutItem { QStyle::SubControl subControl; QRect rect; }; protected: void addLayoutItem(QStyle::SubControl subControl, const QRect &rect); protected: static const uint maxLayoutCount = 16; protected: const SubControlItem * const subControlItem; const uint subControlCount; const QStyleOptionComplex * const option; const QWidget * const widget; const QStyle * const style; uint layoutCount; LayoutItem layoutItem[maxLayoutCount]; }; /*-----------------------------------------------------------------------*/ void ComplexControlLayout::addLayoutItem(QStyle::SubControl subControl, const QRect &rect) { if (layoutCount < maxLayoutCount) { layoutItem[layoutCount].subControl = subControl; layoutItem[layoutCount].rect = style->visualRect(option->direction, option->rect, rect); ++layoutCount; } } QStyle::SubControl ComplexControlLayout::hitTestComplexControl(const QPoint &position) const { for (uint i = 0; i < subControlCount; ++i) { for (uint j = 0; j < layoutCount; ++j) { if (layoutItem[j].subControl == subControlItem[i].subControl) { if (layoutItem[j].rect.contains(position)) { return layoutItem[j].subControl; } } } } return QStyle::SC_None; } QRect ComplexControlLayout::subControlRect(QStyle::SubControl subControl) const { QRect rect; for (uint i = 0; i < layoutCount; ++i) { if (layoutItem[i].subControl == subControl) { rect |= layoutItem[i].rect; } } return rect; } void ComplexControlLayout::paintComplexControl(QPainter *painter) const { for (int i = subControlCount; --i >= 0; ) { if (subControlItem[i].controlElement != QStyle::CE_CustomBase && option->subControls & subControlItem[i].subControl) { for (uint j = 0; j < layoutCount; ++j) { if (layoutItem[j].subControl == subControlItem[i].subControl) { QStyleOptionSlider opt = *static_cast<const QStyleOptionSlider *>(ComplexControlLayout::option); opt.rect = layoutItem[j].rect; if (!(option->activeSubControls & subControlItem[i].subControl)) { opt.state &= ~(QStyle::State_Sunken | QStyle::State_MouseOver); } style->drawControl(subControlItem[i].controlElement, &opt, painter, widget); } } } } } /*-----------------------------------------------------------------------*/ static const ComplexControlLayout::SubControlItem scrollBarSubControlItem[] = { /* hitTest in forward order, paint in reverse order */ { QStyle::SC_ScrollBarSlider, QStyle::CE_ScrollBarSlider, '*' }, { QStyle::SC_ScrollBarAddLine, QStyle::CE_ScrollBarAddLine, '>' }, { QStyle::SC_ScrollBarSubLine, QStyle::CE_ScrollBarSubLine, '<' }, { QStyle::SC_ScrollBarFirst, QStyle::CE_ScrollBarFirst, '[' }, { QStyle::SC_ScrollBarLast, QStyle::CE_ScrollBarLast, ']' }, { QStyle::SC_ScrollBarAddPage, QStyle::CE_ScrollBarAddPage, ')' }, { QStyle::SC_ScrollBarSubPage, QStyle::CE_ScrollBarSubPage, '(' }, { QStyle::SC_ScrollBarGroove, QStyle::CE_CustomBase, '#' } }; class ScrollBarLayout : public ComplexControlLayout { public: ScrollBarLayout(const QStyleOptionSlider *opt, const QWidget *w = 0, const QStyle *s = 0) : ComplexControlLayout(scrollBarSubControlItem, array_elements(scrollBarSubControlItem), opt, w, s) { /* */ } ~ScrollBarLayout() { } public: void initLayout(const char *layoutSpec); void initLayout(ArrowPlacementMode placementMode); protected: void addLayoutItem(const char layoutSpec, int pos, int size); }; /*-----------------------------------------------------------------------*/ void ScrollBarLayout::addLayoutItem(char c, int pos, int size) { const QStyleOptionSlider *option = static_cast<const QStyleOptionSlider *>(ComplexControlLayout::option); if (size > 0) { for (uint i = 0; i < subControlCount; ++i) { if (subControlItem[i].layoutSpec == c) { QRect rect; if (option->orientation == Qt::Horizontal) { rect = QRect(option->rect.left() + pos, option->rect.top(), size, option->rect.height()); } else { rect = QRect(option->rect.left(), option->rect.top() + pos, option->rect.width(), size); } ComplexControlLayout::addLayoutItem(subControlItem[i].subControl, rect); return; } } } } void ScrollBarLayout::initLayout(ArrowPlacementMode placementMode) { static const char *layoutSpec[] = { "(*)", // NoArrowsMode "(<*>)", // SkulptureMode "<(*)>", // WindowsMode "<(*)<>", // KDEMode "(*)<>", // PlatinumMode "<>(*)" // NextMode }; initLayout(layoutSpec[uint(placementMode)]); } void ScrollBarLayout::initLayout(const char *layoutSpec) { const QStyleOptionSlider *option = static_cast<const QStyleOptionSlider *>(ComplexControlLayout::option); uint range = option->maximum - option->minimum; int pos = option->orientation == Qt::Horizontal ? option->rect.left() : option->rect.top(); int maxSize = option->orientation == Qt::Horizontal ? option->rect.width() : option->rect.height(); int endPos = pos + maxSize; int groovePos = pos, grooveSize = maxSize; int pagePos = pos, pageSize = maxSize; int buttonSize = style->pixelMetric(QStyle::PM_ScrollBarExtent, option, widget); buttonSize = qMin(maxSize >> 1, buttonSize); if (qstrcmp(layoutSpec, "(*)")) { if (!qstrcmp(layoutSpec, "<(*)<>")) { if (maxSize < 4 * buttonSize) { layoutSpec = "<(*)>"; } } if (maxSize < 3 * buttonSize) { layoutSpec = "(<*>)"; } } if (layoutSpec && range != 0) { // layout items before slider const char *p = layoutSpec; char c; while ((c = *p)) { if (c == '*') { pagePos = pos; break; } else if (c == '(') { groovePos = pos; } else { addLayoutItem(c, pos, buttonSize); pos += buttonSize; } ++p; } // layout items after slider while (*p) { ++p; } --p; pos = endPos; while (p >= layoutSpec) { c = *p; if (c == '*') { pageSize = pos - pagePos; break; } else if (c == ')') { grooveSize = pos - groovePos; } else { pos -= buttonSize; addLayoutItem(c, pos, buttonSize); } --p; } } if (layoutCount > maxLayoutCount - 4) { layoutCount = maxLayoutCount - 4; } if (range != 0) { int sliderSize = (qint64(option->pageStep) * grooveSize) / (range + option->pageStep); int sliderMin = style->pixelMetric(QStyle::PM_ScrollBarSliderMin, option, widget); if (sliderMin > grooveSize >> 1) { sliderMin = grooveSize >> 1; if (sliderSize > sliderMin) { sliderSize = sliderMin; } } if (sliderSize < sliderMin || range > INT_MAX / 2) { sliderSize = sliderMin; } if (grooveSize != pageSize) { if (sliderSize > grooveSize - buttonSize) { sliderSize = grooveSize - buttonSize; } } int sliderPos = groovePos + style->sliderPositionFromValue(option->minimum, option->maximum, option->sliderPosition, grooveSize - sliderSize, option->upsideDown); addLayoutItem('(', pagePos, sliderPos - pagePos); addLayoutItem(')', sliderPos + sliderSize, (pagePos + pageSize) - (sliderPos + sliderSize)); addLayoutItem('*', sliderPos, sliderSize); } else { addLayoutItem('*', groovePos, grooveSize); } addLayoutItem('#', groovePos, grooveSize); } /*-----------------------------------------------------------------------*/ extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole = QPalette::Window); extern void paintSliderHandle(QPainter *painter, const QRect &rect, const QStyleOptionSlider *option); void paintScrollBarSlider(QPainter *painter, const QStyleOptionSlider *option) { if (option->minimum == option->maximum) { paintScrollArea(painter, option); } else { paintSliderHandle(painter, option->rect, option); } } /*-----------------------------------------------------------------------*/ void paintScrollBar(QPainter *painter, const QStyleOptionSlider *option, const QWidget *widget, const QStyle *style, ArrowPlacementMode horizontalArrowMode, ArrowPlacementMode verticalArrowMode) { // paint scrollbar ScrollBarLayout layout(option, widget, style); layout.initLayout(option->orientation == Qt::Horizontal ? horizontalArrowMode : verticalArrowMode); layout.paintComplexControl(painter); // get frame this scrollbar is in QFrame *frame = 0; if (widget && widget->parentWidget()) { QWidget *container = widget->parentWidget(); if (container->inherits("Q3ListView")) { if (option->orientation == Qt::Vertical) { frame = qobject_cast<QFrame *>(container); } } else if (container->inherits("Q3Table")) { frame = qobject_cast<QFrame *>(container); } else if (container->parentWidget()) { frame = qobject_cast<QAbstractScrollArea *>(container->parentWidget()); } } // paint shadow if (frame && frame->frameStyle() == (QFrame::StyledPanel | QFrame::Sunken)) { QRect rect = option->rect; if (option->orientation == Qt::Vertical) { if (option->direction == Qt::LeftToRight) { rect.adjust(-3, 0, 1, 0); } else { rect.adjust(-1, 0, 2, 0); } // ### temporary hack to detect corner widget if (widget->height() == frame->height() - 4) { rect.adjust(0, -1, 0, 1); } else { rect.adjust(0, -1, 0, 4); } } else { rect.adjust(0, -3, 0, 1); // ### temporary hack to detect corner widget if (widget->width() == frame->width() - 4) { rect.adjust(-1, 0, 1, 0); } else { if (option->direction == Qt::LeftToRight) { rect.adjust(-1, 0, 4, 0); } else { rect.adjust(-4, 0, 1, 0); } } } paintRecessedFrameShadow(painter, rect.adjusted(1, 1, -1, -1), RF_Small); } } QRect subControlRectScrollBar(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style, ArrowPlacementMode horizontalArrowMode, ArrowPlacementMode verticalArrowMode) { ScrollBarLayout layout(option, widget, style); layout.initLayout(option->orientation == Qt::Horizontal ? horizontalArrowMode : verticalArrowMode); return layout.subControlRect(subControl); } QStyle::SubControl hitTestComplexControlScrollBar(const QStyleOptionSlider *option, const QPoint &position, const QWidget *widget, const QStyle *style, ArrowPlacementMode horizontalArrowMode, ArrowPlacementMode verticalArrowMode) { ScrollBarLayout layout(option, widget, style); layout.initLayout(option->orientation == Qt::Horizontal ? horizontalArrowMode : verticalArrowMode); return layout.hitTestComplexControl(position); } /* * skulpture_shadows.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractScrollArea> #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) #include <QtGui/QMdiArea> #endif #include <QtGui/QApplication> #include <QtGui/QMouseEvent> #include <QtCore/QEvent> #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ /** * FrameShadow - overlay a shadow inside a frame * * This class is used to give the impression of sunken * frames that cast shadows over the contents inside. * * To create the shadow, call installFrameShadow() * on the sunken QFrame that you want the shadow * to be added to. * * Side-effects: * * Adds transparent widgets to the frame, which may * affect performance. * */ FrameShadow::FrameShadow(QWidget *parent) : QWidget(parent) { init(); } FrameShadow::FrameShadow(ShadowArea area, QWidget *parent) : QWidget(parent) { init(); area_ = area; } FrameShadow::~FrameShadow() { /* */ } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::installFrameShadow(QWidget *widget) { // printf("adding shadow to %s\n", widget->metaObject()->className()); widget->installEventFilter(this); removeFrameShadow(widget); for (int i = 0; i < 4; ++i) { FrameShadow *shadow = new FrameShadow(FrameShadow::ShadowArea(i)); shadow->hide(); shadow->setParent(widget); shadow->updateGeometry(); shadow->show(); } } void SkulptureStyle::Private::removeFrameShadow(QWidget *widget) { const QList<QObject *> shadows = widget->children(); Q_FOREACH (QObject *child, shadows) { FrameShadow *shadow; if ((shadow = qobject_cast<FrameShadow *>(child))) { shadow->hide(); shadow->setParent(0); shadow->deleteLater(); } } } void SkulptureStyle::Private::updateFrameShadow(QWidget *widget) { const QList<QObject *> shadows = widget->children(); Q_FOREACH (QObject *child, shadows) { FrameShadow *shadow; if ((shadow = qobject_cast<FrameShadow *>(child))) { if (shadow->isVisible()) { shadow->updateGeometry(); } } } } /*-----------------------------------------------------------------------*/ #define SHADOW_SIZE_TOP 4 #define SHADOW_SIZE_BOTTOM 2 #define SHADOW_SIZE_LEFT 4 #define SHADOW_SIZE_RIGHT 4 void FrameShadow::updateGeometry() { QWidget *widget = parentWidget(); QRect cr = widget->contentsRect(); // printf("cr-top: %d in class %s\n", cr.top(), widget->metaObject()->className()); switch (shadowArea()) { case FrameShadow::Top: cr.setHeight(SHADOW_SIZE_TOP); break; case FrameShadow::Left: cr.setWidth(SHADOW_SIZE_LEFT); cr.adjust(0, SHADOW_SIZE_TOP, 0, -SHADOW_SIZE_BOTTOM); break; case FrameShadow::Bottom: cr.setTop(cr.bottom() - SHADOW_SIZE_BOTTOM + 1); break; case FrameShadow::Right: cr.setLeft(cr.right() - SHADOW_SIZE_RIGHT + 1); cr.adjust(0, SHADOW_SIZE_TOP, 0, -SHADOW_SIZE_BOTTOM); break; } setGeometry(cr); } /*-----------------------------------------------------------------------*/ bool FrameShadow::event(QEvent *e) { if (e->type() == QEvent::Paint) { return QWidget::event(e); } QWidget *viewport = 0; if (parentWidget()) { if (QAbstractScrollArea *widget = qobject_cast<QAbstractScrollArea *>(parentWidget())) { viewport = widget->viewport(); } else if (parentWidget()->inherits("Q3ScrollView")) { // FIXME: get viewport? needs Qt3Support linkage! viewport = 0; } else { viewport = 0; } } if (!viewport) { return false; } #if 1 switch (e->type()) { case QEvent::DragEnter: case QEvent::DragMove: case QEvent::DragLeave: case QEvent::Drop: { setAcceptDrops(viewport->acceptDrops()); QObject *o = viewport; return o->event(e); } break; case QEvent::Enter: setCursor(viewport->cursor()); setAcceptDrops(viewport->acceptDrops()); break; case QEvent::ContextMenu: { QContextMenuEvent *me = reinterpret_cast<QContextMenuEvent *>(e); QContextMenuEvent *ne = new QContextMenuEvent(me->reason(), parentWidget()->mapFromGlobal(me->globalPos()), me->globalPos()); QApplication::sendEvent(viewport, ne); e->accept(); return true; } break; case QEvent::MouseButtonPress: releaseMouse(); case QEvent::MouseMove: case QEvent::MouseButtonRelease: { QMouseEvent *me = reinterpret_cast<QMouseEvent *>(e); QMouseEvent *ne = new QMouseEvent(e->type(), parentWidget()->mapFromGlobal(me->globalPos()), me->globalPos(), me->button(), me->buttons(), me->modifiers()); QApplication::sendEvent(viewport, ne); e->accept(); return true; } break; case QEvent::Paint: return QWidget::event(e); default: break; } e->ignore(); return false; #else return QWidget::event(e); #endif } /*-----------------------------------------------------------------------*/ void FrameShadow::paintEvent(QPaintEvent *) { // this fixes shadows in frames that change frameStyle() after polish() if (QFrame *frame = qobject_cast<QFrame *>(parentWidget())) { if (frame->frameStyle() != (QFrame::StyledPanel | QFrame::Sunken)) { return; } } QPainter painter(this); QWidget *parent = parentWidget(); QRect r = parent->contentsRect(); r.translate(mapFromParent(QPoint(0, 0))); // painter.fillRect(QRect(-100, -100, 1000, 1000), Qt::red); paintRecessedFrameShadow(&painter, r, RF_Large); } /*-----------------------------------------------------------------------*/ void FrameShadow::init() { // setAttribute(Qt::WA_NoSystemBackground, true); // setAttribute(Qt::WA_NoBackground, true); setAttribute(Qt::WA_OpaquePaintEvent, false); setFocusPolicy(Qt::NoFocus); // TODO: check if this is private setAttribute(Qt::WA_TransparentForMouseEvents, true); setContextMenuPolicy(Qt::NoContextMenu); QWidget *viewport; if (parentWidget()) { if (QAbstractScrollArea *widget = qobject_cast<QAbstractScrollArea *>(parentWidget())) { setAcceptDrops(true); viewport = widget->viewport(); } else if (parentWidget()->inherits("Q3ScrollView")) { // FIXME: get viewport? needs Qt3Support linkage! viewport = parentWidget(); } else { viewport = 0; } if (viewport) { setCursor(viewport->cursor()); } } } /*-----------------------------------------------------------------------*/ void paintRecessedFrameShadow(QPainter *painter, const QRect &rect, enum RecessedFrame rf) { if (rf == RF_None) return; #if 1 int c1 = (rf == RF_Small) ? 10 : 10; int c2 = (rf == RF_Small) ? 24 : 36; #else int c1 = 0; int c2 = 0; #endif #if 0 c1 += c1 >> 1; c2 += c2 >> 1; int intensityTop = c2; int intensityLeft = c2; int intensityBottom = c1; int intensityRight = c1; #endif QRect r = rect; while (c1 > 3 || c2 > 3) { QBrush brush1(QColor(0, 0, 0, c1)); QBrush brush2(QColor(0, 0, 0, c2)); painter->fillRect(QRect(rect.left(), r.top(), rect.width(), 1), brush2); painter->fillRect(QRect(r.left(), rect.top(), 1, rect.height()), brush2); painter->fillRect(QRect(rect.left(), r.bottom(), rect.width(), 1), brush1); painter->fillRect(QRect(r.right(), rect.top(), 1, rect.height()), brush1); c1 >>= 1; c2 >>= 1; // c1 = int(c1 * 0.7); c2 = int(c2 * 0.7); r.adjust(1, 1, -1, -1); } } /*-----------------------------------------------------------------------*/ /** * WidgetShadow - add a drop shadow to a widget * * This class renders a shadow below a widget, such * as a QMdiSubWindow. * */ WidgetShadow::WidgetShadow(QWidget *parent) : QWidget(parent) { init(); } /*-----------------------------------------------------------------------*/ void WidgetShadow::init() { setObjectName(QLatin1String("WidgetShadow")); // setAttribute(Qt::WA_NoSystemBackground, true); // setAttribute(Qt::WA_NoBackground, true); setAttribute(Qt::WA_OpaquePaintEvent, false); // setAutoFillBackground(false); setFocusPolicy(Qt::NoFocus); // TODO: check if this is private setAttribute(Qt::WA_TransparentForMouseEvents, true); // setContextMenuPolicy(Qt::NoContextMenu); widget_ = 0; } /*-----------------------------------------------------------------------*/ bool WidgetShadow::event(QEvent *e) { switch (e->type()) { case QEvent::Paint: if (widget_) { QRect r(- 10, - 5, widget_->frameGeometry().width() + 20, widget_->frameGeometry().height() + 15); r.translate(qMin(widget_->x(), 10), qMin(widget_->y(), 5)); QPainter p(this); QRegion region(r); region -= QRect(r.adjusted(10, 5, -10, -10)); p.setClipRegion(region); #if 0 for (int i = 0; i < 10; ++i) { int k = 9 - i; p.fillRect(r.adjusted(k, i, -k, -i), QColor(0, 0, 0, i)); p.fillRect(r.adjusted(i, k, -i, -k), QColor(0, 0, 0, i)); } #else for (int i = 0; i < 10; ++i) { p.fillRect(r, QColor(0, 0, 0, 2 + i)); r.adjust(1, 1, -1, -1); } #endif e->ignore(); return (true); } default: break; } return QWidget::event(e); } void WidgetShadow::updateGeometry() { if (widget_) { if (widget_->isHidden()) { hide(); } else { QWidget *parent = parentWidget(); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (parent && !qobject_cast<QMdiArea *>(parent) && qobject_cast<QMdiArea *>(parent->parentWidget())) { parent = parent->parentWidget(); } #endif if (parent) { QRect geo(widget_->x() - 10, widget_->y() - 5, widget_->frameGeometry().width() + 20, widget_->frameGeometry().height() + 15); setGeometry(geo & parent->rect()); } show(); } } } void WidgetShadow::updateZOrder() { if (widget_) { if (widget_->isHidden()) { hide(); } else { stackUnder(widget_); QWidget *parent = parentWidget(); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (parent && !qobject_cast<QMdiArea *>(parent) && qobject_cast<QMdiArea *>(parent->parentWidget())) { parent = parent->parentWidget(); } #endif if (parent) { QRect geo(widget_->x() - 10, widget_->y() - 5, widget_->frameGeometry().width() + 20, widget_->frameGeometry().height() + 15); setGeometry(geo & parent->rect()); } show(); } } } /* * skulpture_shapes.cpp * */ #include "skulpture_p.h" #include "sk_factory.h" /*-----------------------------------------------------------------------*/ /** * ShapeFactory - create a QPainterPath from a description * * The shape description is a bytecode stream that allows simple arithmetic, * conditionals, and looping. * * Syntax is as follows: * Description: Instruction* End * Instruction: Close | Move X Y | Line X Y | Quad X1 Y1 X2 Y2 | Cubic X1 Y1 X2 Y2 X3 Y3 * Instruction: Nop | SetVar X | Begin Instruction* End | While Condition Instruction | If Condition Instruction1 [ Else Instruction2 ] * Condition: Not Condition | And Condition1 Condition2 | Or Condition1 Condition2 | EQ X Y | NE X Y | LT X Y | GE X Y | GT X Y | LE X Y * Expression: Number | GetVar | Add X Y | Sub X Y | Mul X Y | Div X Y | Min X Y | Max X Y | Mix V X Y | Cond Condition X Y * * TODO * * Mod, MultiLine, DoWhile, Integer/Float, Switch, Exp, Sin, Cos, Tan, Atan, Atan2, Pi * Colors, Gradients, Functions (Call/Ret), Frames, Text * */ /*-----------------------------------------------------------------------*/ void ShapeFactory::executeCode(Code code) { qreal v[6]; switch (code) { case Move: case Line: v[0] = evalValue(); v[1] = evalValue(); if (code == Move) { path.moveTo(v[0], v[1]); } else { path.lineTo(v[0], v[1]); } break; case Close: path.closeSubpath(); break; case Quad: case Cubic: { for (int n = 0; n < (code == Quad ? 4 : 6); ++n) { v[n] = evalValue(); } if (code == Quad) { path.quadTo(v[0], v[1], v[2], v[3]); } else { path.cubicTo(v[0], v[1], v[2], v[3], v[4], v[5]); } break; } default: AbstractFactory::executeCode(code); break; } } void ShapeFactory::skipCode(Code code) { switch (code) { case Move: case Line: skipValue(); skipValue(); break; case Close: break; case Quad: case Cubic: { for (int n = 0; n < (code == Quad ? 4 : 6); ++n) { skipValue(); } break; } default: AbstractFactory::skipCode(code); break; } } /*-----------------------------------------------------------------------*/ QPainterPath ShapeFactory::createShape(ShapeFactory::Description description, qreal var[]) { ShapeFactory factory; factory.setDescription(description); for (int n = MinVar; n <= MaxVar; ++n) { factory.setVar(n, var[n]); } factory.create(); for (int n = MinVar; n <= MaxVar; ++n) { var[n] = factory.getVar(n); } return factory.getPath(); } QPainterPath ShapeFactory::createShape(ShapeFactory::Description description) { ShapeFactory factory; factory.setDescription(description); factory.create(); return factory.getPath(); } /* * skulpture_shortcuts.cpp * */ #include "skulpture_p.h" #include <QtGui/QKeyEvent> #include <QtGui/QFocusEvent> #include <QtGui/QMenu> #include <QtGui/QMenuBar> #include <QtGui/QAbstractButton> #include <QtGui/QLabel> #include <QtGui/QDockWidget> #include <QtGui/QToolBox> #include <QtGui/QGroupBox> #include <QtGui/QTabBar> #include <QtGui/QApplication> /*-----------------------------------------------------------------------*/ /** * Class to manage the applications keyboard shortcuts * * It acts as an eventfilter for the application, and does the following: * * * the shortcuts are only underlined when the Alt key is pressed, and * the underline is removed once it is released. * * on many widgets the focus frame is not displayed if the focus was * received using the mouse. It is, however, still displayed if * you use the Tab key. * * Additionally, this class is responsible for blanking the mouse pointer: * * * when the tablet pen leaves proximity * * Any other keyboard shortcut and focus issues should also be handled here. * */ /*-----------------------------------------------------------------------*/ bool ShortcutHandler::underlineShortcut(const QWidget *widget) const { if (widget && widget->isEnabled()) { if (alt_pressed.contains(widget->window())) { return true; } if (qobject_cast<const QMenuBar *>(widget)) { if (widget->hasFocus()) { return true; } QList<QWidget *> children = qFindChildren<QWidget *>(widget); Q_FOREACH (QWidget *child, children) { if (child->hasFocus()) { return true; } } } if (qobject_cast<const QMenu *>(widget)) { return true; } } return false; } static inline bool hasShortcut(QWidget *widget) { if (qobject_cast<const QAbstractButton *>(widget) // && (qobject_cast<const QAbstractButton *>(widget))->text.contains(QChar('&', 0)) || qobject_cast<const QLabel *>(widget) || qobject_cast<const QDockWidget *>(widget) || qobject_cast<const QToolBox *>(widget) // || qobject_cast<const QMenu *>(widget) || qobject_cast<const QMenuBar *>(widget) || qobject_cast<const QGroupBox *>(widget) // && (qobject_cast<const QGroupBox *>(widget))->isCheckable() || qobject_cast<const QTabBar *>(widget)) { return true; } return false; } static inline void updateShortcuts(QWidget *widget) { QList<QWidget *> children = qFindChildren<QWidget *>(widget); Q_FOREACH (QWidget *child, children) { if (child->isVisible() && hasShortcut(child)) { child->update(); } } } bool ShortcutHandler::eventFilter(QObject *watched, QEvent *event) { if (!watched->isWidgetType()) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) switch (event->type()) { case QEvent::TabletEnterProximity: if (tabletCursorState != TabletCursor) { if (tabletCursorState != DefaultCursor) { QApplication::restoreOverrideCursor(); } tabletCursorState = DefaultCursor; } break; case QEvent::TabletLeaveProximity: if (tabletCursorState != BlankCursor) { if (tabletCursorState != DefaultCursor) { QApplication::restoreOverrideCursor(); } QApplication::setOverrideCursor(Qt::BlankCursor); tabletCursorState = BlankCursor; } break; default: break; } #endif return QObject::eventFilter(watched, event); } QWidget *widget = reinterpret_cast<QWidget *>(watched); switch (event->type()) { case QEvent::MouseMove: if (tabletCursorState != DefaultCursor) { QApplication::restoreOverrideCursor(); tabletCursorState = DefaultCursor; } break; case QEvent::FocusIn: { Qt::FocusReason reason = ((QFocusEvent *) event)->reason(); if (reason != Qt::TabFocusReason && reason != Qt::BacktabFocusReason) { QWidget *window = widget->window(); window->setAttribute(Qt::WA_KeyboardFocusChange, false); } } break; case QEvent::KeyPress: if (((QKeyEvent *) event)->key() == Qt::Key_Alt) { QWidget *window = widget->window(); if (!alt_pressed.contains(window)) { alt_pressed.append(window); window->installEventFilter(this); updateShortcuts(window); } } break; case QEvent::Close: if (widget->isWindow()) { alt_pressed.removeAll(widget); widget->removeEventFilter(this); } break; case QEvent::WindowDeactivate: if (widget->isWindow()) { alt_pressed.removeAll(widget); widget->removeEventFilter(this); updateShortcuts(widget); } break; case QEvent::KeyRelease: if (((QKeyEvent *) event)->key() == Qt::Key_Alt) { QWidget *window = widget->window(); if (alt_pressed.contains(window)) { alt_pressed.removeAll(window); window->removeEventFilter(this); updateShortcuts(window); } } break; default: break; } return QObject::eventFilter(watched, event); } /*-----------------------------------------------------------------------*/ ShortcutHandler::ShortcutHandler(QObject *parent) : QObject(parent), tabletCursorState(DefaultCursor) { init(); } ShortcutHandler::~ShortcutHandler() { if (tabletCursorState != DefaultCursor) { tabletCursorState = DefaultCursor; QApplication::restoreOverrideCursor(); } } /* * skulpture_slider.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractSlider> #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ void paintSliderGroove(QPainter *painter, QRect &rect, const QStyleOptionSlider *option) { if (option->orientation == Qt::Horizontal) { int d = rect.height() / 2; rect.adjust(0, d, 0, -d); } else { int d = rect.width() / 2; rect.adjust(d, 0, -d, 0); } QColor color = option->palette.color(QPalette::Window); if (option->state & QStyle::State_Enabled) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) color = color.darker(120); #else color = color.dark(120); #endif painter->fillRect(rect, color); paintThinFrame(painter, rect.adjusted(-1, -1, 1, 1), option->palette, -30, -90); } else { painter->fillRect(rect, color); paintThinFrame(painter, rect.adjusted(-1, -1, 1, 1), option->palette, -20, -60); } } void paintSliderHandle(QPainter *painter, const QRect &rect, const QStyleOptionSlider *option) { // shadow painter->fillRect(rect.adjusted(2, 2, 2, 2), QColor(0, 0, 0, 5)); painter->fillRect(rect.adjusted(1, 1, 1, 1), QColor(0, 0, 0, 8)); // slider color QColor color = option->palette.color(QPalette::Button); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_Sunken) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) color = color.lighter(102); #else color = color.light(102); #endif } else if (option->state & QStyle::State_MouseOver) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) color = color.lighter(104); #else color = color.light(104); #endif } } else { color = option->palette.color(QPalette::Window); } painter->fillRect(rect, color); #if 1 // slider gradient if ((option->state & QStyle::State_Enabled) && !(option->state & QStyle::State_Sunken)) { QLinearGradient gradient(rect.topLeft(), option->orientation == Qt::Horizontal ? rect.bottomLeft() : rect.topRight()); #if 1 // SkandaleStyle 0.0.2 gradient.setColorAt(0.0, shaded_color(color, 40)); gradient.setColorAt(0.5, shaded_color(color, -5)); gradient.setColorAt(1.0, shaded_color(color, 70)); #else // glassy gradient.setColorAt(0.0, shaded_color(color, 40)); gradient.setColorAt(0.4, shaded_color(color, -5)); gradient.setColorAt(0.405, shaded_color(color, -15)); gradient.setColorAt(1.0, shaded_color(color, 70)); #endif painter->fillRect(rect, gradient); } #endif // slider frame paintThinFrame(painter, rect, option->palette, -70, -20, QPalette::Button); paintThinFrame(painter, rect.adjusted(1, 1, -1, -1), option->palette, -30, 130, QPalette::Button); } /*-----------------------------------------------------------------------*/ void paintSlider(QPainter *painter, const QStyleOptionSlider *option, const QWidget *widget, const QStyle *style) { // groove if (option->subControls & QStyle::SC_SliderGroove) { // painter->fillRect(option->rect, option->palette.color(QPalette::Window).darker(105)); // paintThinFrame(painter, option->rect, option->palette, 130, -30); #if 0 int handlesize = style->pixelMetric(QStyle::PM_SliderLength, option, widget); int e = handlesize / 2 - 1; #else int e = 1; #endif #if 0 QRect rect = option->rect; // QRect rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget); if (option->orientation == Qt::Horizontal) { rect.adjust(e, 0, -e, 0); } else { rect.adjust(0, e, 0, -e); } paintSliderGroove(painter, rect, option); #else QRect rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget); //QRect rect = option->rect; QRect handle_rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle, widget); QStyleOptionSlider aOption = *option; aOption.palette.setColor(QPalette::Window, aOption.palette.color(QPalette::Highlight)); if (option->orientation == Qt::Horizontal) { handle_rect.adjust(0, 2, 0, -2); rect.adjust(e, 0, -e, 0); rect.setWidth(handle_rect.left() - rect.left() - 1); if (rect.width() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? option : &aOption); } rect.setLeft(handle_rect.right() + 2); rect.setWidth(option->rect.right() - handle_rect.right() - 1 - e); if (rect.width() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? &aOption : option); } } else { handle_rect.adjust(2, 0, -2, 0); rect.adjust(0, e, 0, -e); rect.setHeight(handle_rect.top() - rect.top() - 1); if (rect.height() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? option : &aOption); } rect.setTop(handle_rect.bottom() + 2); rect.setHeight(option->rect.bottom() - handle_rect.bottom() - e); if (rect.height() > -3) { paintSliderGroove(painter, rect, option->upsideDown ? &aOption : option); } } #endif } #if 1 // tickmarks if (option->subControls & QStyle::SC_SliderTickmarks) { QStyleOptionSlider slider = *option; slider.subControls = QStyle::SC_SliderTickmarks; // ### for now, just use common tickmarks QPalette palette = slider.palette; QColor col = palette.color(QPalette::WindowText); col.setAlpha(51); palette.setColor(QPalette::WindowText, col); slider.palette = palette; if (option->orientation == Qt::Horizontal) { slider.rect.adjust(-1, 0, -1, 0); } else { slider.rect.adjust(0, -1, 0, -1); } ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_Slider, &slider, painter, widget); slider.rect = option->rect; palette.setColor(QPalette::WindowText, QColor(255, 255, 255, 77)); slider.palette = palette; ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_Slider, &slider, painter, widget); } #endif // focus rect if (option->state & QStyle::State_HasFocus) { QStyleOptionFocusRect focus; focus.QStyleOption::operator=(*option); focus.rect = style->subElementRect(QStyle::SE_SliderFocusRect, option, widget); focus.state |= QStyle::State_FocusAtBorder; style->drawPrimitive(QStyle::PE_FrameFocusRect, &focus, painter, widget); } // handle if (option->subControls & QStyle::SC_SliderHandle) { QStyleOptionSlider aOption = *option; if (!(option->activeSubControls & QStyle::SC_SliderHandle)) { aOption.state &= ~QStyle::State_MouseOver; aOption.state &= ~QStyle::State_Sunken; } QRect rect = style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle, widget); if (option->orientation == Qt::Horizontal) { rect.adjust(0, 2, 0, -2); } else { rect.adjust(2, 0, -2, 0); } #if 0 if (option->orientation == Qt::Horizontal) { rect.setTop(option->rect.top()); rect.setHeight(option->rect.height()); // rect.adjust(0, 1, 0, -1); } else { rect.setLeft(option->rect.left()); rect.setWidth(option->rect.width()); // rect.adjust(1, 0, -1, 0); } #endif // rect.adjust(0, 0, -1, -1); paintSliderHandle(painter, rect, &aOption); // rect.adjust(0, 0, 1, 1); // paintThinFrame(painter, rect.adjusted(1, 1, 1, 1), option->palette, -20, 0); #if 0 // grip const int o = 5; const int s = 6; if (option->orientation == Qt::Horizontal) { int d = (rect.width() - 2) / 2; rect.adjust(d, 0, -d, 0); rect.translate(-s, 0); } else { int d = (rect.height() - 2) / 2; rect.adjust(0, d, 0, -d); rect.translate(0, -s); } for (int k = -1; k < 2; ++k) { if (option->orientation == Qt::Horizontal) { painter->fillRect(rect.adjusted(0, o, 0, -o), QColor(0, 0, 0, 30)); painter->fillRect(rect.adjusted(1, o, 1, -o), QColor(255, 255, 255, 80)); rect.translate(s, 0); } else { painter->fillRect(rect.adjusted(o, 0, -o, 0), QColor(0, 0, 0, 30)); painter->fillRect(rect.adjusted(o, 1, -o, 1), QColor(255, 255, 255, 80)); rect.translate(0, s); } } #endif } #if 0 painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget), QColor(0, 0, 0, 70)); if (option->subControls & QStyle::SC_SliderGroove) { painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderGroove, widget), QColor(255, 0, 0, 70)); } if (option->subControls & QStyle::SC_SliderHandle) { painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle, widget), QColor(0, 100, 255, 70)); } if (option->subControls & QStyle::SC_SliderTickmarks) { painter->fillRect(style->subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderTickmarks, widget), QColor(0, 255, 0, 170)); } #endif } /*-----------------------------------------------------------------------*/ QRect subControlRectSlider(const QStyleOptionSlider *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { QRect rect = ((QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_Slider, option, subControl, widget); switch (subControl) { case QStyle::SC_SliderGroove: case QStyle::SC_SliderTickmarks: case QStyle::SC_SliderHandle: default: break; } return rect; #if 0 /* option->orientation option->tickPosition: QSlider::TicksAbove | QSlider::TicksBelow option->state option->tickInterval */ switch (subControl) { case SC_SliderGrove: case SC_SliderTickmarks: case SC_SliderHandle: } #endif } /* * skulpture_spinbox.cpp * */ #include "skulpture_p.h" #include <QtGui/QAbstractSpinBox> #include <QtGui/QApplication> #include <QtGui/QPainter> /*-----------------------------------------------------------------------*/ extern void paintScrollArrow(QPainter *painter, const QStyleOption *option, Qt::ArrowType arrow, bool spin); void paintIndicatorSpinDown(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::DownArrow, true); } void paintIndicatorSpinUp(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::UpArrow, true); } void paintIndicatorSpinMinus(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::LeftArrow, true); } void paintIndicatorSpinPlus(QPainter *painter, const QStyleOption *option) { paintScrollArrow(painter, option, Qt::RightArrow, true); } /*-----------------------------------------------------------------------*/ QRect subControlRectSpinBox(const QStyleOptionSpinBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { int fw = option->frame ? style->pixelMetric(QStyle::PM_SpinBoxFrameWidth, option, widget) : 0; int bw; #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (option->buttonSymbols == QAbstractSpinBox::NoButtons) { bw = 0; } else #endif { bw = qMax(style->pixelMetric(QStyle::PM_ScrollBarExtent, option, widget), qApp->globalStrut().width()); } bool strutMode = qApp->globalStrut().height() > (option->rect.height() >> 1); QRect rect; switch (subControl) { case QStyle::SC_SpinBoxUp: case QStyle::SC_SpinBoxDown: { int h = option->rect.height() - 2 * fw; int t = option->rect.top() + fw; int l = option->rect.right() - bw - fw + 1; if (strutMode) { if (subControl == QStyle::SC_SpinBoxUp) { l -= bw; } } else { if (subControl == QStyle::SC_SpinBoxDown) { t += (h >> 1); } h = (h + 1) >> 1; } rect = QRect(l, t, bw, h); break; } case QStyle::SC_SpinBoxEditField: { if (strutMode) { bw *= 2; } rect = option->rect.adjusted(fw, fw, -fw - bw, -fw); break; } case QStyle::SC_SpinBoxFrame: default: // avoid warning rect = option->rect; break; } return style->visualRect(option->direction, option->rect, rect); } /*-----------------------------------------------------------------------*/ void paintComplexControlArea(QPainter *painter, const QStyleOption *option) { // configuration const bool paintBackground = true; const bool paintSeparator = true; // background QColor color; if (paintBackground && option->state & QStyle::State_Enabled) { color = option->palette.color(QPalette::Window); // ### should arrow areas have hover highlight? if (false && option->state & QStyle::State_MouseOver) { #if QT_VERSION >= QT_VERSION_CHECK(4, 3, 0) color = color.lighter(110); #else color = color.light(110); #endif } else { #if QT_VERSION >= QT_VERSION_CHECK(4, 3, 0) color = color.lighter(107); #else color = color.light(107); #endif } } else { color = option->palette.color(QPalette::Base); } painter->fillRect(option->rect, color); // separator if (paintSeparator) { QRect rect = option->rect; if (option->direction == Qt::LeftToRight) { rect.setWidth(1); } else { rect.setLeft(rect.left() + rect.width() - 1); } painter->fillRect(rect, shaded_color(option->palette.color(QPalette::Window), -5)); } } static void paintSpinBoxUpDown(QPainter *painter, const QStyleOptionSpinBox *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { QStyleOption opt; opt.QStyleOption::operator=(*option); opt.rect = style->subControlRect(QStyle::CC_SpinBox, option, subControl, widget); if (!(option->activeSubControls & subControl)) { opt.state &= ~(QStyle::State_Sunken | QStyle::State_On | QStyle::State_MouseOver); } // button background paintComplexControlArea(painter, &opt); // button symbol QStyle::PrimitiveElement pe; if (!(option->stepEnabled & (subControl == QStyle::SC_SpinBoxUp ? QAbstractSpinBox::StepUpEnabled : QAbstractSpinBox::StepDownEnabled))) { opt.state &= ~(QStyle::State_Enabled | QStyle::State_MouseOver); opt.palette.setCurrentColorGroup(QPalette::Disabled); } // micro adjustments if (subControl == QStyle::SC_SpinBoxUp) { opt.rect.translate(0, 1); } else if (opt.rect.height() & 1) { opt.rect.translate(0, -1); } switch (option->buttonSymbols) { case QAbstractSpinBox::PlusMinus: pe = subControl == QStyle::SC_SpinBoxUp ? QStyle::PE_IndicatorSpinPlus : QStyle::PE_IndicatorSpinMinus; break; default: pe = subControl == QStyle::SC_SpinBoxUp ? QStyle::PE_IndicatorSpinUp : QStyle::PE_IndicatorSpinDown; break; } style->drawPrimitive(pe, &opt, painter, widget); } void paintSpinBox(QPainter *painter, const QStyleOptionSpinBox *option, const QWidget *widget, const QStyle *style) { // up/down controls #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (option->buttonSymbols != QAbstractSpinBox::NoButtons) #endif { for (uint sc = QStyle::SC_SpinBoxUp; sc != QStyle::SC_SpinBoxFrame; sc <<= 1) { if (option->subControls & sc) { paintSpinBoxUpDown(painter, option, (QStyle::SubControl) sc, widget, style); } } } // frame if (option->frame && (option->subControls & QStyle::SC_SpinBoxFrame)) { QStyleOptionFrame frameOpt; frameOpt.QStyleOption::operator=(*option); frameOpt.rect = style->subControlRect(QStyle::CC_SpinBox, option, QStyle::SC_SpinBoxFrame, widget); frameOpt.state |= QStyle::State_Sunken; frameOpt.lineWidth = style->pixelMetric(QStyle::PM_SpinBoxFrameWidth, &frameOpt, widget); frameOpt.midLineWidth = 0; style->drawPrimitive(QStyle::PE_FrameLineEdit, &frameOpt, painter, widget); } } /* * skulpture_tabs.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QTabWidget> /*-----------------------------------------------------------------------*/ enum Pos { North, South, West, East }; static inline Pos tabPos(QTabBar::Shape shape) { return Pos(int(shape) & 3); } static inline bool isVertical(QTabBar::Shape shape) { return (int(shape) & 2); } struct Affinity { int x1, y1, x2, y2; }; static inline void tabAffinity(QTabBar::Shape shape, Affinity &affinity, int amount) { affinity.x1 = affinity.y1 = affinity.x2 = affinity.y2 = 0; switch (tabPos(shape)) { case North: affinity.y1 = amount; break; case South: affinity.y2 = -amount; break; case West: affinity.x1 = amount; break; case East: affinity.x2 = -amount; break; } } /*-----------------------------------------------------------------------*/ #if 0 enum TabState { TS_New, TS_Removed, TS_Inactive, TS_HoverAnim, TS_Hover, TS_ActiveAnim, TS_Active, TS_Moved, TS_LabelChanged // text, icon or color changed TS_StateChanged // disabled changed }; class TabAnim { qreal pos; qreal speed; int color; }; class Tab { public: TabState state; TabAnim anim; #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) QStyleOptionTabV3 oldOption; #else QStyleOptionTabV2 oldOption; #endif }; /*-----------------------------------------------------------------------*/ class TabBarState { public: TabBarState() : active_tab(0), hover_tab(0) { } public: QList<Tab> tabs; Tab *active_tab; Tab *hover_tab; int hover_x; int hover_y; int hover_counter; }; const TabBarState *SkulpturePrivate::tabBarState(const QWidget *widget) { if (qobject_cast<const QTabBar *>(widget)) { if ((int i = tabBarStates.indexOf(widget))) { return tabBarStates.at(i); } // add state if not found TabBarState *state = new TabBarState; if (state) { } } return 0; } #endif /*-----------------------------------------------------------------------*/ static void paintTabBase(QPainter *painter, const QRect &rect, const QStyleOption *option, QTabBar::Shape shape) { if (true /*option->state & QStyle::State_Enabled*/) { QLinearGradient tabGradient(rect.topLeft(), isVertical(shape) ? rect.topRight() : rect.bottomLeft()); tabGradient.setColorAt(0.0, option->palette.color(QPalette::Window).darker(118)); tabGradient.setColorAt(1.0, option->palette.color(QPalette::Window).darker(105)); painter->fillRect(rect.adjusted(1, 1, -1, -1), tabGradient); } else { painter->fillRect(rect.adjusted(1, 1, -1, -1), option->palette.color(QPalette::Window).darker(106)); } paintThinFrame(painter, rect.adjusted(1, 1, -1, -1), option->palette, -20, -40); paintRecessedFrameShadow(painter, rect.adjusted(2, 2, -2, -2), RF_Small); } void paintFrameTabBarBase(QPainter *painter, const QStyleOptionTabBarBase *option) { // ### remove clipping painter->save(); QRect r = option->rect; #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) r = r.united(option->tabBarRect); #else r = r.unite(option->tabBarRect); #endif QRegion region(r); region -= option->tabBarRect; painter->setClipRegion(region); paintTabBase(painter, r, option, option->shape); QRect rect = r; #if 0 Affinity affinity; tabAffinity(option->shape, affinity, 1); rect.adjust(affinity.x2, affinity.y2, affinity.x1, affinity.y1); #endif paintThinFrame(painter, rect, option->palette, 60, -20); painter->restore(); } void paintTabWidgetFrame(QPainter *painter, const QStyleOptionTabWidgetFrame *option, const QWidget *widget) { Q_UNUSED(widget); QRect base = option->rect; int s = (isVertical(option->shape) ? option->tabBarSize.width() : option->tabBarSize.height()); if (s < 2) s = 2; if (isVertical(option->shape)) { base.setWidth(s); } else { base.setHeight(s); } const int overlap = 2; switch (tabPos(option->shape)) { case North: base.translate(0, -(s - overlap)); break; case West: base.translate(-(s - overlap), 0); break; case South: base.translate(0, option->rect.height() - overlap); break; case East: base.translate(option->rect.width() - overlap, 0); break; } if (s != 2) { paintTabBase(painter, base, option, option->shape); } Affinity affinity; tabAffinity(option->shape, affinity, -(s - overlap)); // painter->save(); // painter->setClipRect(base); paintThinFrame(painter, option->rect.adjusted(affinity.x1, affinity.y1, affinity.x2, affinity.y2), option->palette, 60, -20); paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -40, 160); #if 1 painter->save(); painter->setPen(QPen(QColor(0, 0, 0, 20), 1)); painter->drawLine(option->rect.x() + 1, option->rect.bottom(), option->rect.right() - 1, option->rect.bottom()); painter->drawLine(option->rect.right(), option->rect.top() + 1, option->rect.right(), option->rect.bottom()); painter->restore(); #endif #if 0 QRect r = option->rect.adjusted(2, 2, -2, -2); painter->fillRect(r, option->palette.color(QPalette::Window)); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); gradient.setColorAt(0.0, QColor(255, 255, 255, 0)); gradient.setColorAt(1.0, QColor(0, 0, 0, 20)); painter->fillRect(r, gradient); #endif // painter->restore(); } /*-----------------------------------------------------------------------*/ #define TAB_SHIFT 1 void paintTabBarTabShape(QPainter *painter, const QStyleOptionTab *option, const QWidget *widget, const QStyle *style) { Q_UNUSED(style); const QColor tabBackgroundColor = option->palette.color(QPalette::Active, QPalette::Window); bool mouse = (option->state & QStyle::State_MouseOver) && !(option->state & QStyle::State_Selected) && (option->state & QStyle::State_Enabled); QRect c_rect = option->rect; bool konq = false; if (widget && widget->parentWidget()) { if (!qstrcmp(widget->metaObject()->className(), "KTabBar") && !qstrcmp(widget->parentWidget()->metaObject()->className(), "KonqFrameTabs")) { konq = true; } } if (konq || (widget && !(qobject_cast<const QTabWidget *>(widget->parentWidget()))) #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) || (option->version >= 3 && ((QStyleOptionTabV3 *) option)->documentMode) #endif ) { // ### remove clipping painter->save(); painter->setClipRect(option->rect); QRect rect = widget->rect(); if (konq) { rect.adjust(-10, 0, 10, 0); } paintTabBase(painter, rect, option, option->shape); #if 0 Affinity affinity; tabAffinity(option->shape, affinity, 1); rect.adjust(affinity.x2, affinity.y2, affinity.x1, affinity.y1); #endif paintThinFrame(painter, rect, option->palette, 60, -20); painter->restore(); } switch (tabPos(option->shape)) { case North: c_rect.adjust(1, 1, -2, 0); if (option->position != QStyleOptionTab::Beginning && option->position != QStyleOptionTab::OnlyOneTab) { c_rect.adjust(-1, 0, 0, 0); } if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, -1, 0), tabBackgroundColor); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.bottomLeft()); #if 0 QColor c = option->palette.color(QPalette::Highlight); gradient.setColorAt(0.0, c); gradient.setColorAt(0.2, QColor(255, 255, 255, 20)); gradient.setColorAt(1.0, QColor(255, 255, 255, 0)); #else gradient.setColorAt(0.0, shaded_color(tabBackgroundColor, 20)); gradient.setColorAt(1.0, shaded_color(tabBackgroundColor, 0)); #endif painter->fillRect(c_rect.adjusted(0, 0, -1, 0), gradient); } // ### flat tabs: 50->20, 180->80 // painter->fillRect(c_rect, QColor(255, 0, 0, 100)); Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.right() + 1, c_rect.top(), 1, c_rect.height()), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.right() + 2, c_rect.top(), 1, c_rect.height()), QColor(0, 0, 0, 10)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(1, mouse ? 1 : 2, -1, -1), mouse ? tabBackgroundColor.darker(104) : tabBackgroundColor.darker(108)); paintThinFrame(painter, c_rect.adjusted(1, mouse ? 1 : 2, -1, 1), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.right(), c_rect.top() + 3, 1, c_rect.height() - 4), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 3, 1, c_rect.height() - 4), QColor(0, 0, 0, 5)); painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() - 1, c_rect.width() - 2, 1), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() - 2, c_rect.width() - 2, 1), QColor(0, 0, 0, 4)); } break; case South: c_rect.adjust(1, 0, -2, -1); if (option->position != QStyleOptionTab::Beginning && option->position != QStyleOptionTab::OnlyOneTab) { c_rect.adjust(-1, 0, 0, 0); } if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, -1, 0), tabBackgroundColor); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.bottomLeft()); gradient.setColorAt(0.0, shaded_color(tabBackgroundColor, 0)); gradient.setColorAt(1.0, shaded_color(tabBackgroundColor, -5)); painter->fillRect(c_rect.adjusted(0, 0, -1, 0), gradient); } Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); //paintThinFrame(painter, c_rect.adjusted(0, -1, 0, 0), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 1, 1, c_rect.height() - 1), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.right() + 2, c_rect.top() + 1, 1, c_rect.height() - 1), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() + 1, c_rect.width(), 1), QColor(0, 0, 0, 20)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(1, 1, -1, mouse ? -1 : -2), mouse ? tabBackgroundColor.darker(104) : tabBackgroundColor.darker(108)); paintThinFrame(painter, c_rect.adjusted(1, -1, -1, mouse ? -1 : -2), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.right(), c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 5)); if (!mouse) { painter->fillRect(QRect(c_rect.left() + 2, c_rect.bottom() - 1, c_rect.width() - 3, 1), QColor(0, 0, 0, 10)); } painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 1, c_rect.width() - 2, 1), QColor(0, 0, 0, 30)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 2, c_rect.width() - 2, 1), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 3, c_rect.width() - 2, 1), QColor(0, 0, 0, 8)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 4, c_rect.width() - 2, 1), QColor(0, 0, 0, 4)); } break; case West: c_rect.adjust(1, 1, 0, -2); if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, 0, -1), tabBackgroundColor); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.topRight()); gradient.setColorAt(0.0, shaded_color(tabBackgroundColor, 20)); gradient.setColorAt(1.0, shaded_color(tabBackgroundColor, 0)); painter->fillRect(c_rect.adjusted(0, 0, 0, -1), gradient); } Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 1, c_rect.width(), 1), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 2, c_rect.width(), 1), QColor(0, 0, 0, 10)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(mouse ? 1 : 2, 1, 1, -1), mouse ? tabBackgroundColor.darker(104) : tabBackgroundColor.darker(108)); paintThinFrame(painter, c_rect.adjusted(mouse ? 1 : 2, 1, 1, -1), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.left() + 2, c_rect.bottom() + 0, c_rect.width() - 3, 1), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.left() + 2, c_rect.bottom() + 1, c_rect.width() - 3, 1), QColor(0, 0, 0, 5)); painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.right() - 1, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.right() - 2, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 4)); } break; case East: c_rect.adjust(0, 1, -1, -2); if (option->state & QStyle::State_Selected) { painter->fillRect(c_rect.adjusted(0, 0, 0, -1), tabBackgroundColor); if (option->state & QStyle::State_Enabled) { QLinearGradient gradient(c_rect.topLeft(), c_rect.topRight()); gradient.setColorAt(0.0, shaded_color(tabBackgroundColor, 0)); gradient.setColorAt(1.0, shaded_color(tabBackgroundColor, 10)); painter->fillRect(c_rect.adjusted(0, 0, 0, -1), gradient); } Affinity affinity; tabAffinity(option->shape, affinity, 1); paintThinFrame(painter, c_rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1), option->palette, -50, 180); // shadows painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 1, c_rect.width(), 1), QColor(0, 0, 0, 25)); painter->fillRect(QRect(c_rect.left(), c_rect.bottom() + 2, c_rect.width(), 1), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.right() + 1, c_rect.top() + 1, 1, c_rect.height()), QColor(0, 0, 0, 20)); } else { // ### install clip painter->save(); Affinity affinity; tabAffinity(option->shape, affinity, -1); painter->setClipRect(option->rect.adjusted(affinity.x2, affinity.y2, affinity.x1, affinity.y1)); painter->fillRect(c_rect.adjusted(-2, 1, mouse ? -1 : -2, -1), mouse ? tabBackgroundColor.darker(104) : tabBackgroundColor.darker(108)); paintThinFrame(painter, c_rect.adjusted(-2, 1, mouse ? -1 : -2, -1), option->palette, -40, 90); // shadows painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() + 0, c_rect.width() - 3, 1), QColor(0, 0, 0, 15)); painter->fillRect(QRect(c_rect.left() + 1, c_rect.bottom() + 1, c_rect.width() - 3, 1), QColor(0, 0, 0, 5)); painter->restore(); // shadow below base painter->fillRect(QRect(c_rect.left() + 1, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 20)); painter->fillRect(QRect(c_rect.left() + 2, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 10)); painter->fillRect(QRect(c_rect.left() + 3, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 5)); // painter->fillRect(QRect(c_rect.left() + 4, c_rect.top() + 1, 1, c_rect.height() - 2), QColor(0, 0, 0, 4)); } break; } } #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) void paintIndicatorTabClose(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style) { int offset = 0; QTabBar::Shape shape = QTabBar::RoundedNorth; if (widget) { if (QTabBar *tabbar = qobject_cast<QTabBar *>(widget->parentWidget())) { offset = TAB_SHIFT; shape = tabbar->shape(); for (int i = 0; i < tabbar->count(); ++i) { if (tabbar->tabRect(i).contains(widget->mapToParent(QPoint(1, 1)))) { if (i == tabbar->currentIndex()) { offset = 0; } else if (tabbar->tabRect(i).contains(tabbar->mapFromGlobal(QCursor::pos()))) { offset = 0; } break; } } if (false /*tabPos(shape) == East || tabPos(shape) == South*/) { offset += 1; } } } QIcon::Mode iconMode = QIcon::Normal; painter->save(); if (option->state & QStyle::State_Enabled) { if (option->state & QStyle::State_MouseOver || option->state & QStyle::State_Sunken) { // paintThinFrame(painter, option->rect, option->palette, 90, -30); iconMode = QIcon::Active; //painter->fillRect(option->rect.adjusted(1, 1, -1, -1), QColor(220, 0, 0)); if (!(option->state & QStyle::State_Sunken)) { // paintThinFrame(painter, option->rect.adjusted(1, 1, -1, -1), option->palette, -60, 180); } else { //iconMode = QIcon::Selected; } } else { painter->setOpacity(0.7); } } else { //iconMode = QIcon::Disabled; painter->setOpacity(0.7); } QRect r = QRect(option->rect.center() - QPoint(option->state & QStyle::State_Sunken ? 3 : 4, option->state & QStyle::State_Sunken ? 3 : 4), QSize(10, 10)); if (offset) { Affinity affinity; tabAffinity(shape, affinity, offset); r.translate(affinity.x1 + affinity.x2, affinity.y1 + affinity.y2); } painter->drawPixmap(r, style->standardIcon(QStyle::SP_TitleBarCloseButton, option, widget).pixmap(10, 10, iconMode)); painter->restore(); } #endif void paintTabBarTabLabel(QPainter *painter, const QStyleOptionTab *option, const QWidget *widget, const QStyle *style) { // bool mouse = (option->state & QStyle::State_MouseOver) && !(option->state & QStyle::State_Selected) && (option->state & QStyle::State_Enabled); // painter->save(); #if 0 if (!(option->state & QStyle::State_Selected)) { if (mouse) { painter->setOpacity(0.7); } else { painter->setOpacity(0.5); } } else { painter->setOpacity(0.8); } // QFont font(painter->font()); // font.setBold(true); // painter->setFont(font); #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) QStyleOptionTabV3 opt; #else QStyleOptionTabV2 opt; #endif int offset = TAB_SHIFT; if (option->state & QStyle::State_Selected || (option->state & QStyle::State_MouseOver && option->state & QStyle::State_Enabled)) { offset = 0; } if (option->version > 1) { opt = *((QStyleOptionTabV2 *) option); } else { opt = *option; } Affinity affinity; tabAffinity(option->shape, affinity, offset); opt.rect.translate(affinity.x1 + affinity.x2, affinity.y1 + affinity.y2); switch (tabPos(option->shape)) { case North: opt.rect.adjust(-2, 1, -1, 1); break; case South: opt.rect.adjust(-2, 0, -1, 0); break; case West: case East: painter->save(); QMatrix mat; if (tabPos(option->shape) == West) { opt.rect.adjust(3, 0, 3, 0); } else { opt.rect.adjust(-1, 0, -1, 0); } QPointF c = opt.rect.center(); mat.translate(c.x(), c.y()); mat.rotate(tabPos(option->shape) == West ? -90 : 90); mat.translate(-c.x(), -c.y()); opt.rect = mat.mapRect(opt.rect); painter->setMatrix(mat, true); opt.shape = (QTabBar::Shape) 0; break; } ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_TabBarTabLabel, &opt, painter, widget); if (isVertical(option->shape)) { painter->restore(); } } /* * skulpture_text.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QTextEdit> #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #include <QtGui/QPlainTextEdit> #endif #include <QtGui/QTextBrowser> #include <QtGui/QTextFrame> #include <QtGui/QTextCursor> #include <QtGui/QScrollBar> #include <QtGui/QApplication> /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::removeCursorLine(QAbstractScrollArea *edit) { Q_UNUSED (edit); if (oldEdit) { oldEdit->viewport()->update(QRect(0, oldCursorTop, oldCursorWidth, oldCursorHeight)); oldEdit = 0; } } void SkulptureStyle::Private::updateCursorLine(QAbstractScrollArea *edit, const QRect &cursorRect) { const int highlightMargin = qMin(2, widgetSize); QRect cursorLine = cursorRect; cursorLine.setLeft(0); cursorLine.setWidth(edit->viewport()->width()); cursorLine.adjust(0, -highlightMargin, 0, highlightMargin); if (edit != oldEdit || cursorLine.top() != oldCursorTop || cursorLine.width() != oldCursorWidth || cursorLine.height() != oldCursorHeight || edit->viewport()->height() != oldHeight) { removeCursorLine(edit); oldEdit = edit; oldCursorTop = cursorLine.top(); oldCursorWidth = cursorLine.width(); oldCursorHeight = cursorLine.height(); oldHeight = edit->viewport()->height(); edit->viewport()->update(cursorLine); } } void SkulptureStyle::Private::paintCursorLine(QAbstractScrollArea *edit) { if (edit == oldEdit) { QRect cursorLine = QRect(0, oldCursorTop, oldCursorWidth, oldCursorHeight); QPainter painter(edit->viewport()); QPalette palette = edit->palette(); QColor color = palette.color(QPalette::Highlight); color.setAlpha(40); painter.fillRect(cursorLine, color); if (edit->window()->testAttribute(Qt::WA_KeyboardFocusChange)) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) color = palette.color(QPalette::Highlight).darker(120); #else color = palette.color(QPalette::Highlight).dark(120); #endif color.setAlpha(120); painter.fillRect(cursorLine.adjusted(0, cursorLine.height() - 3, 0, -2), color); } } } #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void SkulptureStyle::Private::handleCursor(QPlainTextEdit *edit) { if (edit->hasFocus() && !edit->isReadOnly()) { QStyleOption option; option.initFrom(edit); int cursorWidth = q->SkulptureStyle::pixelMetric(PM_TextCursorWidth, &option, edit); if (edit->cursorWidth() != cursorWidth) { edit->setCursorWidth(cursorWidth); } updateCursorLine(edit, edit->cursorRect()); } else { if (edit == oldEdit) { removeCursorLine(edit); } } } #endif void SkulptureStyle::Private::handleCursor(QTextEdit *edit) { if (edit->hasFocus() && !edit->isReadOnly()) { QStyleOption option; option.initFrom(edit); #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) int cursorWidth = q->SkulptureStyle::pixelMetric(PM_TextCursorWidth, &option, edit); #else int cursorWidth = q->SkulptureStyle::pixelMetric((QStyle::PixelMetric)((int) PM_CustomBase + 1), &option, edit); #endif if (edit->cursorWidth() != cursorWidth) { edit->setCursorWidth(cursorWidth); } #endif updateCursorLine(edit, edit->cursorRect()); } else { if (edit == oldEdit) { removeCursorLine(edit); } } } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::updateTextEditMargins(QTextEdit *edit) { int margin = 1 + edit->fontMetrics().height() / 5; if (margin > 4) margin = 4; if (qobject_cast<QTextBrowser *>(edit)) { margin = edit->fontMetrics().height(); if (margin < 4 || edit->height() < 4 * edit->fontMetrics().height()) { margin = 4; } } if (margin < 2 || edit->height() < 2 * edit->fontMetrics().height()) { margin = 2; } QTextDocument *doc = edit->document(); // printf("doc: %p\n", doc); if (!doc) return; if (doc->isEmpty()) { // create valid root frame QTextCursor cursor(doc); } QTextFrame *root = doc->rootFrame(); // printf("root: %p\n", root); if (!root) return; QTextFrameFormat format = root->frameFormat(); if (!format.isValid()) return; if (format.margin() == 2.0 && margin != 2) { // printf("set margin %d\n", margin); // ### crash on setText(), disable signals disconnect(edit, SIGNAL(textChanged()), &mapper, SLOT(map())); doc->blockSignals(true); format.setMargin(margin); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) if (margin < 12) { format.setTopMargin(widgetSize - ((textShift + 1) >> 1)); format.setBottomMargin(widgetSize + ((textShift + 1) >> 1)); } #endif root->setFrameFormat(format); // edit->insertPlainText(QLatin1String("")); // edit->update(); doc->blockSignals(false); connect(edit, SIGNAL(textChanged()), &mapper, SLOT(map())); // clear undo buffer bool undo = edit->isUndoRedoEnabled(); edit->setUndoRedoEnabled(false); doc->setModified(false); // emit doc->contentsChanged(); edit->setUndoRedoEnabled(undo); // force relayout edit->resize(edit->size() + QSize(-1, 0)); edit->resize(edit->size() + QSize(1, 0)); } } void SkulptureStyle::Private::textEditSourceChanged(QWidget *widget) { if (QTextEdit *edit = qobject_cast<QTextEdit *>(widget)) { updateTextEditMargins(edit); } } /*-----------------------------------------------------------------------*/ QRect SkulptureStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const { Q_UNUSED(enabled); return ParentStyle::itemTextRect(metrics, rectangle, alignment, true, text); } void SkulptureStyle::drawItemText(QPainter * painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const { int textShift = 0; if (!(alignment & (Qt::AlignTop | Qt::AlignBottom))) { textShift = d->verticalTextShift(painter->fontMetrics()); if (textShift & 1 && !(rectangle.height() & 1)) { textShift += 1; } } ParentStyle::drawItemText(painter, textShift == 0 || textShift == -1 ? rectangle : rectangle.adjusted(0, (-textShift) >> 1, 0, (-textShift) >> 1), alignment, palette, enabled, text, textRole); } /* * skulpture_toolbar.cpp * */ #include "skulpture_p.h" #include <QtGui/QPainter> #include <QtGui/QToolBar> #include <QtGui/QToolButton> #include <QtGui/QTabBar> /*-----------------------------------------------------------------------*/ #define PAINT_SEPARATOR 0 /*-----------------------------------------------------------------------*/ extern void paintCachedGrip(QPainter *painter, const QStyleOption *option, QPalette::ColorRole bgrole); void paintToolBarSeparator(QPainter *painter, const QStyleOptionToolBar *option) { #if 0 int d = 3; QRect rect(QRect(option->rect).center() - QPoint(d / 2, d / 2), QSize(d, d)); QStyleOption iOption; iOption.QStyleOption::operator=(*option); if (option->state & QStyle::State_Horizontal) { iOption.rect = rect.adjusted(1, 0, 1, 0); } else { iOption.rect = rect.adjusted(0, 1, 0, 1); } iOption.palette.setCurrentColorGroup(QPalette::Disabled); // iOption.state &= ~QStyle::State_Enabled; iOption.palette.setColor(QPalette::Button, iOption.palette.color(QPalette::Window)); paintCachedGrip(painter, &iOption, QPalette::Window); #else #if PAINT_SEPARATOR QRect rect = option->rect; if (option->state & QStyle::State_Horizontal) { // rect.adjust(2, 3, -2, -3); rect.adjust(2, -1, -2, 1); } else { // rect.adjust(3, 2, -3, -2); rect.adjust(-1, 2, 1, -2); } paintThinFrame(painter, rect, option->palette, 60, -20); #else Q_UNUSED(painter); Q_UNUSED(option); #endif #endif } /*-----------------------------------------------------------------------*/ void paintToolBarHandle(QPainter *painter, const QStyleOptionToolBar *option) { #if 1 int d = 5; QRect rect(QRect(option->rect).center() - QPoint(d / 2, d / 2), QSize(d, d)); QStyleOption iOption; iOption.QStyleOption::operator=(*option); iOption.rect = rect; iOption.palette.setCurrentColorGroup(QPalette::Disabled); // iOption.state &= ~QStyle::State_Enabled; iOption.palette.setColor(QPalette::Button, iOption.palette.color(QPalette::Window)); paintCachedGrip(painter, &iOption, QPalette::Window); #else QRect rect = option->rect; if (option->state & QStyle::State_Horizontal) { rect.adjust(2, 2, -2, -2); #if PAINT_SEPARATOR rect.adjust(0, 1, 0, 1); #endif } else { rect.adjust(2, 2, -2, -2); #if PAINT_SEPARATOR rect.adjust(1, 0, 1, 0); #endif } paintThinFrame(painter, rect.adjusted(-1, -1, 1, 1), option->palette, 60, -20); paintThinFrame(painter, rect, option->palette, -30, 80); #endif } /*-----------------------------------------------------------------------*/ void paintPanelToolBar(QPainter *painter, const QStyleOptionToolBar *option) { #if 0 QLinearGradient gradient(option->rect.topLeft(), option->rect.bottomLeft()); gradient.setColorAt(0.0, option->palette.color(QPalette::Window).lighter(105)); gradient.setColorAt(1.0, option->palette.color(QPalette::Window)); painter->fillRect(option->rect, gradient); QRect r; // r = option->rect; // r.setTop(r.top() + r.height() - 1); // painter->fillRect(r, option->palette.color(QPalette::Window).darker(105)); r = option->rect; r.setHeight(1); painter->fillRect(r, option->palette.color(QPalette::Window).darker(105)); // painter->fillRect(option->rect, option->palette.color(QPalette::Window)); // paintThinFrame(painter, option->rect, option->palette, -20, 60); #endif #if PAINT_SEPARATOR QRect r = option->rect; if (option->state & QStyle::State_Horizontal) { r.setHeight(2); } else { r.setWidth(2); } paintThinFrame(painter, r, option->palette, 60, -20); #else Q_UNUSED(painter); Q_UNUSED(option); #if 0 if (option->state & QStyle::State_Horizontal) { paintThinFrame(painter, option->rect.adjusted(-1, 0, 1, 0), option->palette, 80, -30); painter->fillRect(option->rect.adjusted(0, 1, 0, -1), QColor(200, 210, 230)); QLinearGradient toolBarGradient(option->rect.topLeft(), option->rect.bottomLeft()); toolBarGradient.setColorAt(0.0, QColor(0, 0, 0, 30)); toolBarGradient.setColorAt(0.05, QColor(0, 0, 0, 0)); #if 0 toolBarGradient.setColorAt(0.5, QColor(0, 0, 0, 10)); toolBarGradient.setColorAt(0.51, QColor(0, 0, 0, 30)); #endif toolBarGradient.setColorAt(0.8, QColor(0, 0, 0, 20)); toolBarGradient.setColorAt(1.0, QColor(0, 0, 0, 0)); painter->fillRect(option->rect.adjusted(0, 1, 0, -1), toolBarGradient); } else { paintThinFrame(painter, option->rect.adjusted(0, -1, 0, 1), option->palette, 80, -30); } #else // painter->fillRect(option->rect, QColor(0, 0, 0, 10)); #endif #endif } /*-----------------------------------------------------------------------*/ static inline bool inVerticalToolBar(const QStyleOption *option, const QWidget *widget) { // ### option->state does not reflect orientation Q_UNUSED(option); bool verticalBar = false; if (widget && widget->parentWidget()) { const QToolBar *toolBar = qobject_cast<const QToolBar *>(widget->parentWidget()); // printf("toolbar: %p\n", toolBar); if (toolBar && toolBar->orientation() == Qt::Vertical) { verticalBar = true; } } return verticalBar; } /*-----------------------------------------------------------------------*/ // FIXME #if (QT_VERSION < QT_VERSION_CHECK(4, 3, 0)) #define HasMenu Menu #endif extern void paintMenuTitle(QPainter *painter, const QStyleOptionToolButton *option, const QWidget *widget, const QStyle *style); void paintToolButton(QPainter *painter, const QStyleOptionToolButton *option, const QWidget *widget, const QStyle *style) { if (widget) { QTabBar *bar = qobject_cast<QTabBar *>(widget->parentWidget()); if (bar) { // tabbar scroll button QStyleOptionToolButton opt = *option; if (int(bar->shape()) & 2) { opt.rect.adjust(4, 0, -4, -1); } else { opt.rect.adjust(0, 4, 0, -3); } painter->save(); painter->setClipRect(opt.rect); painter->fillRect(opt.rect, option->palette.color(QPalette::Window)); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); painter->restore(); return; } else if (widget->objectName() == QLatin1String("qt_menubar_ext_button") || widget->objectName() == QLatin1String("qt_toolbar_ext_button")) { QStyleOptionToolButton opt = *option; /* do not render menu arrow, because extension buttons already have an arrow */ opt.features &= ~(QStyleOptionToolButton::Menu | QStyleOptionToolButton::HasMenu); ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); return; } else { const QToolButton *button = qobject_cast<const QToolButton *>(widget); if (button && button->isDown() && button->toolButtonStyle() == Qt::ToolButtonTextBesideIcon) { if (widget->parentWidget() && widget->parentWidget()->inherits("KMenu")) { paintMenuTitle(painter, option, widget, style); return; } } } } if (option->features & QStyleOptionToolButton::HasMenu) { if (option->features & QStyleOptionToolButton::Menu) { if (option->subControls & QStyle::SC_ToolButton) { painter->save(); QStyleOptionToolButton opt = *option; opt.rect = style->subControlRect(QStyle::CC_ToolButton, option, QStyle::SC_ToolButton, widget); // opt.features &= ~(QStyleOptionToolButton::Menu | QStyleOptionToolButton::HasMenu | QStyleOptionToolButton::Arrow); opt.arrowType = Qt::NoArrow; opt.features = 0; opt.subControls &= ~(QStyle::SC_ToolButtonMenu); opt.activeSubControls &= ~(QStyle::SC_ToolButtonMenu); if (inVerticalToolBar(option, widget)) { painter->setClipRect(opt.rect.adjusted(0, 0, 0, -1)); } else { painter->setClipRect(opt.rect.adjusted(option->direction == Qt::LeftToRight ? 0 : 1, 0, option->direction == Qt::LeftToRight ? -1 : 0, 0)); } ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); painter->restore(); } if (option->subControls & QStyle::SC_ToolButtonMenu) { painter->save(); QStyleOptionToolButton opt = *option; opt.rect = style->subControlRect(QStyle::CC_ToolButton, option, QStyle::SC_ToolButtonMenu, widget); QStyle::State state = option->state; state &= ~(QStyle::State_Sunken | QStyle::State_Raised); if (!(state & QStyle::State_AutoRaise) || (state & QStyle::State_MouseOver)) { state |= QStyle::State_Raised; } if (option->activeSubControls & QStyle::SC_ToolButtonMenu) { state |= QStyle::State_Sunken; } opt.state = state; if (inVerticalToolBar(option, widget)) { painter->setClipRect(opt.rect.adjusted(0, 1, 0, 0)); } else { painter->setClipRect(opt.rect.adjusted(option->direction == Qt::LeftToRight ? 1 : 0, 0, option->direction == Qt::LeftToRight ? 0 : -1, 0)); } if (state & (QStyle::State_Sunken | QStyle::State_On | QStyle::State_Raised)) { style->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, painter, widget); } painter->restore(); QRect r; if (inVerticalToolBar(option, widget)) { if (option->direction == Qt::LeftToRight) { r = QRect(opt.rect.right() - 9, opt.rect.top(), 7, opt.rect.height()); } else { r = QRect(3, opt.rect.top(), 7, opt.rect.height()); } } else { r = QRect(opt.rect.left(), opt.rect.bottom() - 9, opt.rect.width(), 7); } if (option->state & QStyle::State_Sunken) { if (option->direction == Qt::LeftToRight) { r.adjust(1, 1, 1, 1); } else { r.adjust(-1, 1, -1, 1); } } QFont font; font.setPixelSize(9); opt.fontMetrics = QFontMetrics(font); opt.rect = r; style->drawPrimitive(inVerticalToolBar(option, widget) ? QStyle::PE_IndicatorArrowRight : QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } // painter->fillRect(opt.rect.adjusted(3, 3, -3, -3), Qt::red); } else { QStyleOptionToolButton opt = *option; opt.features &= ~QStyleOptionToolButton::HasMenu; ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, &opt, painter, widget); QRect r; if (option->direction == Qt::LeftToRight) { r = QRect(option->rect.right() - 6, option->rect.bottom() - 6, 5, 5); if (option->state & QStyle::State_Sunken) { r.adjust(1, 1, 1, 1); } } else { r = QRect(2, option->rect.bottom() - 6, 5, 5); if (option->state & QStyle::State_Sunken) { r.adjust(-1, 1, -1, 1); } } QFont font; font.setPixelSize(7); opt.fontMetrics = QFontMetrics(font); opt.rect = r; style->drawPrimitive(inVerticalToolBar(option, widget) ? QStyle::PE_IndicatorArrowRight : QStyle::PE_IndicatorArrowDown, &opt, painter, widget); } } else { ((QCommonStyle *) style)->QCommonStyle::drawComplexControl(QStyle::CC_ToolButton, option, painter, widget); } } void paintToolButtonLabel(QPainter *painter, const QStyleOptionToolButton *option, const QWidget *widget, const QStyle *style) { QStyleOptionToolButton opt = *option; if (option->state & QStyle::State_AutoRaise) { if (!(option->state & QStyle::State_Enabled) || !(option->state & QStyle::State_MouseOver)) { opt.palette.setColor(QPalette::ButtonText, opt.palette.color(QPalette::WindowText)); } } ((QCommonStyle *) style)->QCommonStyle::drawControl(QStyle::CE_ToolButtonLabel, &opt, painter, widget); } /*-----------------------------------------------------------------------*/ QRect subControlRectToolButton(const QStyleOptionToolButton *option, QStyle::SubControl subControl, const QWidget *widget, const QStyle *style) { QRect r = option->rect; if (option->features & QStyleOptionToolButton::Menu) { int pm = style->pixelMetric(QStyle::PM_MenuButtonIndicator, option, widget) - 2; bool verticalBar = inVerticalToolBar(option, widget); switch (subControl) { case QStyle::SC_ToolButton: if (verticalBar) { r.adjust(0, 0, 0, -pm); } else { r.adjust(0, 0, -pm, 0); } break; case QStyle::SC_ToolButtonMenu: if (verticalBar) { r.adjust(0, r.height() - pm - 2, 0, 0); } else { r.adjust(r.width() - pm - 2, 0, 0, 0); } break; default: break; } return style->visualRect(option->direction, option->rect, r); } return ((QCommonStyle *) style)->QCommonStyle::subControlRect(QStyle::CC_ToolButton, option, subControl, widget); } QSize sizeFromContentsToolButton(const QStyleOptionToolButton *option, const QSize &contentsSize, const QWidget *widget, const QStyle *style, int toolButtonSize) { QSize size = contentsSize + QSize(4, 4); if (toolButtonSize >= 0) { if (option->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { size += QSize(toolButtonSize, qMax(2, toolButtonSize)); } else { size += QSize(toolButtonSize, toolButtonSize); } } else { size += QSize(4, 4); } if (widget && !qstrcmp(widget->metaObject()->className(), "KAnimatedButton")) { return contentsSize + QSize(4, 4); } if (widget && !qstrcmp(widget->metaObject()->className(), "QtColorButton")) { return contentsSize + QSize(12, 12); } if (option->features & QStyleOptionToolButton::Menu) { int pm = style->pixelMetric(QStyle::PM_MenuButtonIndicator, option, widget); size -= QSize(pm, 0); pm -= 2; bool verticalBar = inVerticalToolBar(option, widget); if (verticalBar) { size += QSize(0, pm); } else { size += QSize(pm, 0); } } return size; } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::updateToolBarOrientation(Qt::Orientation /*orientation */) { QToolBar *toolbar = static_cast<QToolBar *>(sender()); QList<QToolButton *> toolbuttons = toolbar->findChildren<QToolButton *>(); bool changed = false; Q_FOREACH (QToolButton *toolbutton, toolbuttons) { if (toolbutton->popupMode() == QToolButton::MenuButtonPopup) { // ### this hack forces Qt to invalidate the size hint Qt::ToolButtonStyle oldstyle = toolbutton->toolButtonStyle(); Qt::ToolButtonStyle newstyle; if (oldstyle == Qt::ToolButtonIconOnly) { newstyle = Qt::ToolButtonTextOnly; } else { newstyle = Qt::ToolButtonIconOnly; } toolbutton->setToolButtonStyle(newstyle); toolbutton->setToolButtonStyle(oldstyle); changed = true; } } if (changed) { // ### Qt does not update dragged toolbars... toolbar->updateGeometry(); } } /* * skulpture_p.cpp * */ #include "skulpture_p.h" #include <QtCore/QSettings> #include <QtCore/QLocale> #include <QtGui/QSlider> #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) #include <QtGui/QDialogButtonBox> #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) #include <QtGui/QWizard> #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) #include <QtGui/QFormLayout> #endif /*-----------------------------------------------------------------------*/ struct StyleSetting { enum Type { Bool, Char, Frame, Alignment, Orientation, Pixels, Points, Milliseconds, Color, Size, Parent, VarParent, Value }; const char * const label; int id; int type; int value; }; static const struct StyleSetting styleHintSettings[] = { /* entries are stricly sorted in Qt order for future lookup table */ { "General/EtchDisabledText", QStyle::SH_EtchDisabledText, StyleSetting::Bool, 1 }, /// { "General/DitherDisabledText", QStyle::SH_DitherDisabledText, StyleSetting::Bool, 0 }, { "ScrollBar/MiddleClickAbsolutePosition", QStyle::SH_ScrollBar_MiddleClickAbsolutePosition, StyleSetting::Bool, 1 }, // { "ScrollBar/ScrollWhenPointerLeavesControl", QStyle::SH_ScrollBar_ScrollWhenPointerLeavesControl, StyleSetting::Parent, 0 }, // { "TabWidget/SelectMouseType", QStyle::SH_TabBar_SelectMouseType, StyleSetting::Parent, 0 }, /// { "TabWidget/TabBarAlignment", QStyle::SH_TabBar_Alignment, StyleSetting::Alignment, Qt::AlignCenter }, // { "ItemView/HeaderArrowAlignment", QStyle::SH_Header_ArrowAlignment, StyleSetting::Parent, 0 }, { "Slider/SnapToValue", QStyle::SH_Slider_SnapToValue, StyleSetting::Bool, 1 }, // { "Slider/SloppyKeyEvents", QStyle::SH_Slider_SloppyKeyEvents, StyleSetting::Parent, 0 }, // { "ProgressDialog/CenterCancelButton", QStyle::SH_ProgressDialog_CenterCancelButton, StyleSetting::Parent, 0 }, // { "ProgressDialog/TextLabelAlignment", QStyle::SH_ProgressDialog_TextLabelAlignment, StyleSetting::Parent, 0 }, { "PrintDialog/RightAlignButtons", QStyle::SH_PrintDialog_RightAlignButtons, StyleSetting::Bool, 1 }, // { "Window/SpaceBelowMenuBar", QStyle::SH_MainWindow_SpaceBelowMenuBar, StyleSetting::Parent, 0 }, { "FontDialog/SelectAssociatedText", QStyle::SH_FontDialog_SelectAssociatedText, StyleSetting::Bool, 1 }, { "Menu/AllowActiveAndDisabled", QStyle::SH_Menu_AllowActiveAndDisabled, StyleSetting::Bool, 1 }, // { "Menu/SpaceActivatesItem", QStyle::SH_Menu_SpaceActivatesItem, StyleSetting::Parent, 0 }, // ### dynamic { "Menu/SubMenuPopupDelay", QStyle::SH_Menu_SubMenuPopupDelay, StyleSetting::Milliseconds, 100 }, /// { "ItemView/FrameOnlyAroundContents", QStyle::SH_ScrollView_FrameOnlyAroundContents, StyleSetting::Bool, 0 }, { "Menu/AltKeyNavigation", QStyle::SH_MenuBar_AltKeyNavigation, StyleSetting::Bool, 1 }, { "ComboBox/ListMouseTracking", QStyle::SH_ComboBox_ListMouseTracking, StyleSetting::Bool, 1 }, { "Menu/MouseTracking", QStyle::SH_Menu_MouseTracking, StyleSetting::Bool, 1 }, { "Menu/BarMouseTracking", QStyle::SH_MenuBar_MouseTracking, StyleSetting::Bool, 1 }, // { "ItemView/ChangeHighlightOnFocus", QStyle::SH_ItemView_ChangeHighlightOnFocus, StyleSetting::Parent, 0 }, // { "Window/ShareActivation", QStyle::SH_Widget_ShareActivation, StyleSetting::Parent, 0 }, // { "MDI/Workspace/FillSpaceOnMaximize", QStyle::SH_Workspace_FillSpaceOnMaximize, StyleSetting::Parent, 0 }, // { "ComboBox/Popup", QStyle::SH_ComboBox_Popup, StyleSetting::Parent, 0 }, /// { "MDI/TitleBar/NoBorder", QStyle::SH_TitleBar_NoBorder, StyleSetting::Bool, 0 }, #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) /// { "Slider/StopMouseOverSlider", QStyle::SH_Slider_StopMouseOverSlider, StyleSetting::Bool, 1 }, #else /// { "Slider/StopMouseOverSlider", QStyle::SH_ScrollBar_StopMouseOverSlider, StyleSetting::Bool, 1 }, #endif // { "General/BlinkCursorWhenTextSelected", QStyle::SH_BlinkCursorWhenTextSelected, StyleSetting::Parent, 0 }, // { "General/FullWidthSelection", QStyle::SH_RichText_FullWidthSelection, StyleSetting::Bool, 1 }, // { "Menu/Scrollable", QStyle::SH_Menu_Scrollable, StyleSetting::Parent, 0 }, // { "GroupBox/TextLabelVerticalAlignment", QStyle::SH_GroupBox_TextLabelVerticalAlignment, StyleSetting::Parent, 0 }, // ### dynamic { "GroupBox/TextLabelColor", QStyle::SH_GroupBox_TextLabelColor, StyleSetting::Color, 0xFF000000 }, // { "Menu/SloppySubMenus", QStyle::SH_Menu_SloppySubMenus, StyleSetting::Parent, 0 }, // ### dynamic { "ItemView/GridLineColor", QStyle::SH_Table_GridLineColor, StyleSetting::Color, 0xFFD0D0D0 }, // ### dynamic { "LineEdit/PasswordCharacter", QStyle::SH_LineEdit_PasswordCharacter, StyleSetting::Char, 10039 }, // { "Dialog/DefaultButton", QStyle::SH_DialogButtons_DefaultButton, StyleSetting::Parent, 0 }, // { "ToolBox/SelectedPageTitleBold", QStyle::SH_ToolBox_SelectedPageTitleBold, StyleSetting::Bool, 1 }, // { "TabWidget/TabBarPreferNoArrows", QStyle::SH_TabBar_PreferNoArrows, StyleSetting::Parent, 0 }, // { "ScrollBar/LeftClickAbsolutePosition", QStyle::SH_ScrollBar_LeftClickAbsolutePosition, StyleSetting::Parent, 0 }, // { "ItemView/Compat/ExpansionSelectMouseType", QStyle::SH_Q3ListViewExpand_SelectMouseType, StyleSetting::Parent, 0 }, // ### dynamic { "General/UnderlineShortcut", QStyle::SH_UnderlineShortcut, StyleSetting::Bool, 0 }, // { "SpinBox/AnimateButton", QStyle::SH_SpinBox_AnimateButton, StyleSetting::Parent, 0 }, // { "SpinBox/KeyPressAutoRepeatRate", QStyle::SH_SpinBox_KeyPressAutoRepeatRate, StyleSetting::Parent, 0 }, // { "SpinBox/ClickAutoRepeatRate", QStyle::SH_SpinBox_ClickAutoRepeatRate, StyleSetting::Parent, 0 }, // { "Menu/FillScreenWithScroll", QStyle::SH_Menu_FillScreenWithScroll, StyleSetting::Parent, 0 }, // { "ToolTip/Opacity", QStyle::SH_ToolTipLabel_Opacity, StyleSetting::Parent, 0 }, // { "Menu/DrawMenuBarSeparator", QStyle::SH_DrawMenuBarSeparator, StyleSetting::Parent, 0 }, // { "MDI/TitleBar/ModifyNotification", QStyle::SH_TitleBar_ModifyNotification, StyleSetting::Parent, 0 }, // { "Button/FocusPolicy", QStyle::SH_Button_FocusPolicy, StyleSetting::Parent, 0 }, // { "Menu/DismissOnSecondClick", QStyle::SH_MenuBar_DismissOnSecondClick, StyleSetting::Parent, 0 }, // { "MessageBox/UseBorderForButtonSpacing", QStyle::SH_MessageBox_UseBorderForButtonSpacing, StyleSetting::Parent, 0 }, { "MDI/TitleBar/AutoRaise", QStyle::SH_TitleBar_AutoRaise, StyleSetting::Bool, 1 }, { "ToolBar/PopupDelay", QStyle::SH_ToolButton_PopupDelay, StyleSetting::Milliseconds, 250 }, // ### dynamic { "General/FocusFrameMask", QStyle::SH_FocusFrame_Mask, StyleSetting::Parent, 0 }, // ### dynamic { "General/RubberBandMask", QStyle::SH_RubberBand_Mask, StyleSetting::Parent, 0 }, // ### dynamic { "General/WindowFrameMask", QStyle::SH_WindowFrame_Mask, StyleSetting::Parent, 0 }, // { "SpinBox/DisableControlsOnBounds", QStyle::SH_SpinControls_DisableOnBounds, StyleSetting::Parent, 0 }, // { "Dial/BackgroundRole", QStyle::SH_Dial_BackgroundRole, StyleSetting::Parent, 0 }, // { "ComboBox/LayoutDirection", QStyle::SH_ComboBox_LayoutDirection, StyleSetting::Parent, 0 }, // { "ItemView/EllipsisLocation", QStyle::SH_ItemView_EllipsisLocation, StyleSetting::Parent, 0 }, // { "ItemView/ShowDecorationSelected", QStyle::SH_ItemView_ShowDecorationSelected, StyleSetting::Parent, 0 }, // ### from KDE { "ItemView/ActivateItemOnSingleClick", QStyle::SH_ItemView_ActivateItemOnSingleClick, StyleSetting::Bool, 1 }, // { "ScrollBar/ContextMenu", QStyle::SH_ScrollBar_ContextMenu, StyleSetting::Parent, 0 }, // { "ScrollBar/RollBetweenButtons", QStyle::SH_ScrollBar_RollBetweenButtons, StyleSetting::Parent, 0 }, #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) // { "Slider/AbsoluteSetButtons", QStyle::SH_Slider_AbsoluteSetButtons, StyleSetting::Parent, 0 }, // { "Slider/PageSetButtons", QStyle::SH_Slider_PageSetButtons, StyleSetting::Parent, 0 }, // { "Menu/KeyboardSearch", QStyle::SH_Menu_KeyboardSearch, StyleSetting::Parent, 0 }, // { "TabWidget/ElideMode", QStyle::SH_TabBar_ElideMode, StyleSetting::Parent, 0 }, #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) // { "Dialog/ButtonLayout", QStyle::SH_DialogButtonLayout, StyleSetting::Value, QDialogButtonBox::KdeLayout }, #else { "Dialog/ButtonLayout", QStyle::SH_DialogButtonLayout, StyleSetting::Value, QDialogButtonBox::KdeLayout }, #endif // { "ComboBox/PopupFrameStyle", QStyle::SH_ComboBox_PopupFrameStyle, StyleSetting::Parent, 0 }, { "MessageBox/AllowTextInteraction", QStyle::SH_MessageBox_TextInteractionFlags, StyleSetting::Bool, 1 }, // ### from KDE { "Dialog/ButtonsHaveIcons", QStyle::SH_DialogButtonBox_ButtonsHaveIcons, StyleSetting::Bool, 0 }, // { "General/SpellCheckUnderlineStyle", QStyle::SH_SpellCheckUnderlineStyle, StyleSetting::Parent, 0 }, { "MessageBox/CenterButtons", QStyle::SH_MessageBox_CenterButtons, StyleSetting::Bool, 0 }, // { "Menu/SelectionWrap", QStyle::SH_Menu_SelectionWrap, StyleSetting::Parent, 0 }, // { "ItemView/MovementWithoutUpdatingSelection", QStyle::SH_ItemView_MovementWithoutUpdatingSelection, StyleSetting::Parent, 0 }, #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) // ### dynamic { "General/ToolTipMask", QStyle::SH_ToolTip_Mask, StyleSetting::Parent, 0 }, // { "General/FocusFrameAboveWidget", QStyle::SH_FocusFrame_AboveWidget, StyleSetting::Parent, 0 }, // { "General/FocusIndicatorTextCharFormat", QStyle::SH_TextControl_FocusIndicatorTextCharFormat, StyleSetting::Parent, 0 }, // { "Dialog/WizardStyle", QStyle::SH_WizardStyle, StyleSetting::Value, QWizard::ModernStyle }, { "ItemView/ArrowKeysNavigateIntoChildren", QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren, StyleSetting::Bool, 1 }, // ### dynamic { "General/MenuMask", QStyle::SH_Menu_Mask, StyleSetting::Parent, 0 }, #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) // { "Menu/FlashTriggeredItem", QStyle::SH_Menu_FlashTriggeredItem, StyleSetting::Parent, 0 }, // { "Menu/FadeOutOnHide", QStyle::SH_Menu_FadeOutOnHide, StyleSetting::Parent, 0 }, // { "SpinBox/ClickAutoRepeatThreshold", QStyle::SH_SpinBox_ClickAutoRepeatThreshold, StyleSetting::Parent, 0 }, // { "ItemView/PaintAlternatingRowColorsForEmptyArea", QStyle::SH_ItemView_PaintAlternatingRowColorsForEmptyArea, StyleSetting::Parent, 0 }, // { "FormLayout/WrapPolicy", QStyle::SH_FormLayoutWrapPolicy, StyleSetting::Value, QFormLayout::DontWrapRows }, // { "TabWidget/DefaultTabPosition", QStyle::SH_TabWidget_DefaultTabPosition, StyleSetting::Parent, 0 }, // { "ToolBar/Movable", QStyle::SH_ToolBar_Movable, StyleSetting::Parent, 0 }, { "FormLayout/FieldGrowthPolicy", QStyle::SH_FormLayoutFieldGrowthPolicy, StyleSetting::Value, QFormLayout::ExpandingFieldsGrow }, // { "FormLayout/FormAlignment", QStyle::SH_FormLayoutFormAlignment, StyleSetting::Alignment, Qt::AlignLeft | Qt::AlignTop }, { "FormLayout/LabelAlignment", QStyle::SH_FormLayoutLabelAlignment, StyleSetting::Alignment, Qt::AlignRight | Qt::AlignTop }, #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) // { "ItemView/DrawDelegateFrame", QStyle::SH_, StyleSetting::Parent, 0 }, // { "TabWidget/CloseButtonPosition", QStyle::SH_TabBar_CloseButtonPosition, StyleSetting::Parent, 0 }, // { "DockWidget/ButtonsHaveFrame", QStyle::SH_DockWidget_ButtonsHaveFrame, StyleSetting::Parent, 0 }, #endif { 0, -1, 0, 0 } }; extern int getRubberBandMask(QStyleHintReturnMask *mask, const QStyleOption *option, const QWidget *widget); extern int getWindowFrameMask(QStyleHintReturnMask *mask, const QStyleOptionTitleBar *option, const QWidget *widget); int SkulptureStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const { // return ParentStyle::styleHint(hint, option, widget, returnData); // TODO implement caching const StyleSetting *setting = &styleHintSettings[0]; QVariant value; switch (hint) { case QStyle::SH_Menu_SubMenuPopupDelay: { return d->subMenuDelay; } case QStyle::SH_TabBar_Alignment: { return d->centerTabs ? Qt::AlignHCenter : Qt::AlignLeft; } #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) case QStyle::SH_Slider_StopMouseOverSlider: { #else case QStyle::SH_ScrollBar_StopMouseOverSlider: { #endif // this works around a bug with Qt 4.4.2 return qobject_cast<const QSlider *>(widget) != 0; } case QStyle::SH_ItemView_ActivateItemOnSingleClick: { // ### use KDE setting return d->useSingleClickToActivateItems; } #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) case QStyle::SH_DialogButtonBox_ButtonsHaveIcons: { // ### use KDE setting return 0; } #endif #if 1 case QStyle::SH_GroupBox_TextLabelColor: { QPalette palette; if (option) { palette = option->palette; } else if (widget) { palette = widget->palette(); } return palette.color(QPalette::WindowText).rgba(); } #endif case QStyle::SH_Table_GridLineColor: { QPalette palette; if (option) { palette = option->palette; } else if (widget) { palette = widget->palette(); } #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) return palette.color(QPalette::Base).darker(120).rgba(); #else return palette.color(QPalette::Base).dark(120).rgba(); #endif } case QStyle::SH_LineEdit_PasswordCharacter: { QFontMetrics fm = option ? option->fontMetrics : (widget ? widget->fontMetrics() : QFontMetrics(QFont())); for (int i = 0; i < d->passwordCharacters.length(); ++i) { if (fm.inFont(d->passwordCharacters.at(i))) { return d->passwordCharacters.at(i).unicode(); } } return int('*'); } case QStyle::SH_UnderlineShortcut: { if (d->hideShortcutUnderlines) { return (d->shortcut_handler->underlineShortcut(widget)); } return true; } case QStyle::SH_RubberBand_Mask: { QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask *>(returnData); if (mask) { return getRubberBandMask(mask, option, widget); } return 0; } case QStyle::SH_WindowFrame_Mask: { QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask *>(returnData); const QStyleOptionTitleBar *titleBarOption = qstyleoption_cast<const QStyleOptionTitleBar *>(option); if (mask && titleBarOption) { return getWindowFrameMask(mask, titleBarOption, widget); } return 0; } default: break; } while (setting->label) { if (setting->id == int(hint)) { break; } ++setting; } if (setting->label) { value = setting->value; switch (setting->type) { case StyleSetting::Parent: value = ParentStyle::styleHint(hint, option, widget, returnData); break; case StyleSetting::Bool: value = setting->value != 0; break; case StyleSetting::Char: value = QString(QChar(setting->value)); break; case StyleSetting::Color: value = QChar('#', 0) + QString::number(value.toInt() - qRgba(0, 0, 0, 255), 16); break; } } else { value = ParentStyle::styleHint(hint, option, widget, returnData); setting = 0; } #if 1 if (setting && d->settings && setting->type != StyleSetting::Parent && !d->settings->contains(QLatin1String(setting->label))) { d->settings->setValue(QLatin1String(setting->label), value); } #endif if (setting) { if (d->settings) { value = d->settings->value(QLatin1String(setting->label), value); } switch (setting->type) { case StyleSetting::Color: value = qRgba(0, 0, 0, 255) + QLocale::c().toInt(value.toString().mid(1), 0, 16); break; case StyleSetting::Bool: value = value.toBool(); break; case StyleSetting::Char: QString s = value.toString(); if (s.size() == 1) { return s.at(0).unicode(); } return setting->value; } } return value.toInt(); } /*-----------------------------------------------------------------------*/ /* * Read color out of current settings group * * color - where to store the resulting color * s - Settings * colorName - name of color, such as "checkMark", first letter should be not be capitalized * n - for multiple color entries, returns the "n"th color (n = 1, 2, ...) otherwise use n = 0. * * This will do the following: * * 1. check if "custom<ColorName>Color<n>" is set to "false" -> return false with "color" unmodified * 2. read color entry from "<colorName>Color<n>" * 3. read color opacity from "<colorName>Color<n>Opacity" * 4. return true with "color" modified accordingly * */ static bool readSettingsColor(QColor &color, const QSettings &s, const QString &colorName, int n = 0) { QString cName = colorName + QLatin1String("Color"); if (n > 0) { cName += QString::number(n); } if (s.value(QLatin1String("custom") + cName.at(0).toUpper() + cName.mid(1), true).toBool() == false) { return false; } QString val = s.value(cName).toString(); if (!val.isEmpty()) { QColor c = QColor(val); if (c.isValid()) { color = c; int opacity = s.value(cName + QLatin1String("Opacity"), -1).toInt(); if (opacity >= 0 && opacity <= 255) { color.setAlpha(opacity); } return true; } } return false; } /*-----------------------------------------------------------------------*/ /* * Read gradient out of current settings group * * gradient - where to store the resulting gradient (only the color stops are modified) * s - Settings * gradientName - name of gradient, such as "activeTabTop", first letter should be not be capitalized * * This returns true with "gradient" colors modified accordingly, or false, if no color was found. * * Limitations: * * Maximum number of gradients per background: 9 * Maximum number of colors per gradient: 2 * */ #define MIN_STOP 0 // must be 0 #define MAX_STOP 100 static inline qreal topToStop(int v) { if (v <= MIN_STOP) { return qreal(0.00000); } else if (v >= MAX_STOP) { return qreal(0.99999); } return v / qreal(MAX_STOP) - qreal(0.00001); } static inline qreal bottomToStop(int v) { if (v <= 0) { return qreal(0.00001); } else if (v >= MAX_STOP) { return qreal(1.00000); } return v / qreal(MAX_STOP) + qreal(0.00001); } static bool readSettingsGradient(QGradient &gradient, const QSettings &s, const QString &gradientName) { QColor background(s.value(gradientName + QLatin1String("background")).toString()); if (!background.isValid()) { return false; } bool hasTop = false; bool hasBottom = false; int numGradients = s.value(gradientName + QLatin1String("numGradients"), 0).toInt(); numGradients = qMin(numGradients, 9); // single digit limit for (int i = 1; i <= numGradients; ++i) { QString gradientPrefix = gradientName + QChar('g', 0) + QChar('0' + i, 0); int top = s.value(gradientPrefix + QLatin1String("Top"), -1).toInt(); int bottom = s.value(gradientPrefix + QLatin1String("Bottom"), -1).toInt(); if (top == MIN_STOP) { hasTop = true; } if (bottom == MAX_STOP) { hasBottom = true; } if (top >= 0 && bottom >= 0) { QColor c[9 + 1]; int k = 0; for (int n = 1; n <= 9; ++n) { // single digit limit if (readSettingsColor(c[n], s, gradientPrefix, n)) { ++k; } else { // force continous color numbering break; } } // k colors are found, spread lineary between top ... bottom if (k > 1) { // FIXME blindly assumes k == 2 for now gradient.setColorAt(topToStop(top), c[1]); gradient.setColorAt(bottomToStop(bottom), c[2]); } else if (k == 1) { gradient.setColorAt(topToStop(top), c[1]); gradient.setColorAt(bottomToStop(bottom), c[1]); } } } // FIXME does not detect "holes" between gradients // that are to be "filled" with background if (!hasTop) { gradient.setColorAt(0, background); } if (!hasBottom) { gradient.setColorAt(1, background); } return true; } /*-----------------------------------------------------------------------*/ /* * Read domino settings out of current settings group * */ void SkulptureStyle::Private::readDominoSettings(const QSettings &s) { static const char * const gradientName[] = { "tabTop", "tabBottom", "activeTabTop", "activeTabBottom", "btn", "checkItem", "header", "scrollBar", "scrollBarGroove" }; static const char * const colorName[] = { "checkMark", "groupBoxBackground", "popupMenu", "selMenuItem", "toolTip" }; for (uint i = 0; i < array_elements(gradientName); ++i) { QGradient gradient; if (readSettingsGradient(gradient, s, QLatin1String(gradientName[i]) + QLatin1String("Surface_"))) { #if 0 printf("domino: gradient[%s]=", gradientName[i]); QGradientStops stops = gradient.stops(); for (int i = 0; i < stops.size(); ++i) { QGradientStop stop = stops.at(i); QColor color = stop.second; printf("(%.6g=#%2x%2x%2x/a=#%2x)", stop.first, color.red(), color.green(), color.blue(), color.alpha()); } printf("\n"); #endif // only save stops from the gradient // dominoGradientStops[i] = gradient.stops(); } } for (uint i = 0; i < array_elements(colorName); ++i) { QColor color; if (readSettingsColor(color, s, QLatin1String(colorName[i]))) { #if 0 printf("domino: color[%s]=#%2x%2x%2x/a=#%2x\n", colorName[i], color.red(), color.green(), color.blue(), color.alpha()); #endif // dominoCustomColors[i] = color; } } animateProgressBars = s.value(QLatin1String("animateProgressBar"), animateProgressBars).toBool(); centerTabs = s.value(QLatin1String("centerTabs"), centerTabs).toBool(); #if 0 readSettingsColor(buttonContourColor, s, QLatin1String("buttonContour")); readSettingsColor(buttonDefaultContourColor, s, QLatin1String("buttonDefaultContour")); readSettingsColor(buttonMouseOverContourColor, s, QLatin1String("buttonMouseOverContour")); readSettingsColor(buttonPressedContourColor, s, QLatin1String("buttonPressedContour")); readSettingsColor(indicatorButtonColor, s, QLatin1String("indicatorButton")); readSettingsColor(indicatorColor, s, QLatin1String("indicator")); readSettingsColor(rubberBandColor, s, QLatin1String("rubberBand")); readSettingsColor(textEffectButtonColor, s, QLatin1String("textEffectButton")); readSettingsColor(textEffectColor, s, QLatin1String("textEffect")); highlightToolBtnIcon = s.value(QLatin1String("highlightToolBtnIcon"), highlightToolBtnIcon).toBool(); indentPopupMenuItems = s.value(QLatin1String("indentPopupMenuItems"), indentPopupMenuItems).toBool(); smoothScrolling = s.value(QLatin1String("smoothScrolling"), smoothScrolling).toBool(); tintGroupBoxBackground = s.value(QLatin1String("tintGroupBoxBackground"), tintGroupBoxBackground).toBool(); indicateFocus = s.value(QLatin1String("indicateFocus"), indicateFocus).toBool(); drawButtonSunkenShadow = s.value(QLatin1String("drawButtonSunkenShadow"), drawButtonSunkenShadow).toBool(); drawFocusUnderline = s.value(QLatin1String("drawFocusUnderline"), drawFocusUnderline).toBool(); drawPopupMenuGradient = s.value(QLatin1String("drawPopupMenuGradient"), drawPopupMenuGradient).toBool(); drawTextEffect = s.value(QLatin1String("drawTextEffect"), drawTextEffect).toBool(); drawToolButtonAsButton = s.value(QLatin1String("drawToolButtonAsButton"), drawToolButtonAsButton).toBool(); drawTriangularExpander = s.value(QLatin1String("drawTriangularExpander"), drawTriangularExpander).toBool(); #endif } /*-----------------------------------------------------------------------*/ void SkulptureStyle::Private::readSettings(const QSettings &s) { // defaults animateProgressBars = true; verticalArrowMode = SkulptureMode; horizontalArrowMode = SkulptureMode; hideShortcutUnderlines = true; centerTabs = false; makeDisabledWidgetsTransparent = true; transparentPlacesPanel = false; forceSpacingAndMargins = false; useIconColumnForCheckIndicators = false; useSelectionColorForCheckedIndicators = false; useSelectionColorForSelectedMenuItems = false; useSingleClickToActivateItems = true; dialogMargins = -1; horizontalSpacing = -1; labelSpacing = -1; menuBarSize = -1; menuItemSize = -1; pushButtonSize = -1; scrollBarSize = -1; scrollBarLength = -1; sliderSize = -1; sliderLength = -1; tabBarSize = -1; toolButtonSize = -1; verticalSpacing = -1; widgetMargins = -1; widgetSize = -1; textShift = 0; buttonGradient = 0; buttonRoundness = 0; passwordCharacters = QString(QChar(ushort(10039))); textCursorWidth = 0; subMenuDelay = 100; // legacy settings import: domino 0.4 QString dominoConfigFile = s.value(QLatin1String("LegacyImport/DominoConfiguration")).toString(); if (!dominoConfigFile.isEmpty()) { QSettings s(dominoConfigFile, QSettings::IniFormat); s.beginGroup(QLatin1String("Settings")); readDominoSettings(s); s.endGroup(); } // native settings animateProgressBars = s.value(QLatin1String("ProgressBar/AnimateProgressBars"), animateProgressBars).toBool(); if (s.contains(QLatin1String("ScrollBar/AllowScrollBarSliderToCoverArrows")) && !s.contains(QLatin1String("ScrollBar/VerticalArrowMode"))) { verticalArrowMode = s.value(QLatin1String("ScrollBar/AllowScrollBarSliderToCoverArrows"), true).toBool() ? SkulptureMode : WindowsMode; } else { QString mode = s.value(QLatin1String("ScrollBar/VerticalArrowMode"), QLatin1String("Covered")).toString(); if (mode == QLatin1String("Top")) { verticalArrowMode = NextMode; } else if (mode == QLatin1String("Bottom")) { verticalArrowMode = PlatinumMode; } else if (mode == QLatin1String("BottomTop") || mode == QLatin1String("Bottom/Top")) { verticalArrowMode = WindowsMode; } else if (mode == QLatin1String("KDEMode")) { verticalArrowMode = KDEMode; } else if (mode == QLatin1String("Covered")) { verticalArrowMode = SkulptureMode; } else if (mode == QLatin1String("None")) { verticalArrowMode = NoArrowsMode; } else { verticalArrowMode = SkulptureMode; } } if (s.contains(QLatin1String("ScrollBar/AllowScrollBarSliderToCoverArrows")) && !s.contains(QLatin1String("ScrollBar/HorizontalArrowMode"))) { horizontalArrowMode = s.value(QLatin1String("ScrollBar/AllowScrollBarSliderToCoverArrows"), true).toBool() ? SkulptureMode : WindowsMode; } else { QString mode = s.value(QLatin1String("ScrollBar/HorizontalArrowMode"), QLatin1String("Covered")).toString(); if (mode == QLatin1String("Left")) { horizontalArrowMode = NextMode; } else if (mode == QLatin1String("Right")) { horizontalArrowMode = PlatinumMode; } else if (mode == QLatin1String("RightLeft") || mode == QLatin1String("Right/Left")) { horizontalArrowMode = WindowsMode; } else if (mode == QLatin1String("KDEMode")) { horizontalArrowMode = KDEMode; } else if (mode == QLatin1String("Covered")) { horizontalArrowMode = SkulptureMode; } else if (mode == QLatin1String("None")) { horizontalArrowMode = NoArrowsMode; } else { horizontalArrowMode = SkulptureMode; } } hideShortcutUnderlines = s.value(QLatin1String("General/HideShortcutUnderlines"), hideShortcutUnderlines).toBool(); makeDisabledWidgetsTransparent = s.value(QLatin1String("General/MakeDisabledWidgetsTransparent"), makeDisabledWidgetsTransparent).toBool(); transparentPlacesPanel = s.value(QLatin1String("Views/TransparentPlacesPanel"), transparentPlacesPanel).toBool(); forceSpacingAndMargins = s.value(QLatin1String("Layout/ForceSpacingAndMargins"), forceSpacingAndMargins).toBool(); useIconColumnForCheckIndicators = s.value(QLatin1String("Menus/UseIconColumnForCheckIndicators"), useIconColumnForCheckIndicators).toBool(); useSelectionColorForCheckedIndicators = s.value(QLatin1String("General/UseSelectionColorForCheckedIndicators"), useSelectionColorForCheckedIndicators).toBool(); useSelectionColorForSelectedMenuItems = s.value(QLatin1String("Menus/UseSelectionColorForSelectedMenuItems"), useSelectionColorForSelectedMenuItems).toBool(); useSingleClickToActivateItems = s.value(QLatin1String("General/UseSingleClickToActivateItems"), useSingleClickToActivateItems).toBool(); dialogMargins = s.value(QLatin1String("Layout/DialogMargins"), dialogMargins).toInt(); horizontalSpacing = s.value(QLatin1String("Layout/HorizontalSpacing"), horizontalSpacing).toInt(); labelSpacing = s.value(QLatin1String("Layout/LabelSpacing"), labelSpacing).toInt(); menuBarSize = s.value(QLatin1String("Layout/MenuBarSize"), menuBarSize).toInt(); menuItemSize = s.value(QLatin1String("Layout/MenuItemSize"), menuItemSize).toInt(); pushButtonSize = s.value(QLatin1String("Layout/PushButtonSize"), pushButtonSize).toInt(); scrollBarSize = s.value(QLatin1String("Layout/ScrollBarSize"), scrollBarSize).toInt(); scrollBarLength = s.value(QLatin1String("Layout/ScrollBarLength"), scrollBarLength).toInt(); sliderSize = s.value(QLatin1String("Layout/SliderSize"), sliderSize).toInt(); sliderLength = s.value(QLatin1String("Layout/SliderLength"), sliderLength).toInt(); tabBarSize = s.value(QLatin1String("Layout/TabBarSize"), tabBarSize).toInt(); toolButtonSize = s.value(QLatin1String("Layout/ToolButtonSize"), toolButtonSize).toInt(); verticalSpacing = s.value(QLatin1String("Layout/VerticalSpacing"), verticalSpacing).toInt(); widgetMargins = s.value(QLatin1String("Layout/WidgetMargins"), widgetMargins).toInt(); widgetSize = s.value(QLatin1String("Layout/WidgetSize"), widgetSize).toInt(); textShift = s.value(QLatin1String("General/TextShift"), textShift).toInt(); buttonGradient = s.value(QLatin1String("General/ButtonGradientIntensity"), buttonGradient).toInt(); buttonRoundness = s.value(QLatin1String("General/ButtonRoundness"), buttonRoundness).toInt(); passwordCharacters = s.value(QLatin1String("General/PasswordCharacters"), passwordCharacters).toString(); styleSheetFileName = s.value(QLatin1String("General/StyleSheetFileName"), QString()).toString(); textCursorWidth = s.value(QLatin1String("General/TextCursorWidth"), (double) textCursorWidth).toDouble(); subMenuDelay = s.value(QLatin1String("Menus/SubMenuDelay"), subMenuDelay).toInt(); // apply defaults if (widgetSize < 0) { widgetSize = 2; } if (pushButtonSize < 0) { pushButtonSize = 2; } if (tabBarSize < 0) { tabBarSize = 2; } if (menuItemSize < 0) { menuItemSize = 2; } } int SkulptureStyle::skulpturePrivateMethod(SkulptureStyle::SkulpturePrivateMethod id, void *data) { switch (id) { case SPM_SupportedMethods: { return SPM_SetSettingsFileName; } case SPM_SetSettingsFileName: { SkMethodDataSetSettingsFileName *md = (SkMethodDataSetSettingsFileName *) data; if (md && md->version >= 1) { QSettings s(md->fileName, QSettings::IniFormat); if (s.status() == QSettings::NoError) { d->readSettings(s); return 1; } } return 0; } default: return 0; } } /*-----------------------------------------------------------------------*/ void paintNothing(QPainter * /*painter*/, const QStyleOption * /*option*/) { // } void paintDefault(QPainter * /*painter*/, const QStyleOption * /*option*/) { // } /*-----------------------------------------------------------------------*/ void paintCommandButtonPanel(QPainter *painter, const QStyleOptionButton *option, const QWidget *widget); void paintPushButtonBevel(QPainter *painter, const QStyleOptionButton *option, const QWidget *widget, const QStyle *style); void paintTabWidgetFrame(QPainter *painter, const QStyleOptionTabWidgetFrame *option, const QWidget *widget); void paintIndicatorCheckBox(QPainter *painter, const QStyleOptionButton *option); void paintIndicatorItemViewItemCheck(QPainter *painter, const QStyleOption *option); void paintQ3CheckListIndicator(QPainter *painter, const QStyleOptionQ3ListView *option, const QWidget *widget, const QStyle *style); void paintQ3CheckListExclusiveIndicator(QPainter *painter, const QStyleOptionQ3ListView *option, const QWidget *widget, const QStyle *style); void paintIndicatorRadioButton(QPainter *painter, const QStyleOptionButton *option); void paintIndicatorSpinDown(QPainter *painter, const QStyleOption *option); void paintIndicatorSpinUp(QPainter *painter, const QStyleOption *option); void paintIndicatorSpinMinus(QPainter *painter, const QStyleOption *option); void paintIndicatorSpinPlus(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowDown(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowLeft(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowRight(QPainter *painter, const QStyleOption *option); void paintIndicatorArrowUp(QPainter *painter, const QStyleOption *option); void paintHeaderSortIndicator(QPainter *painter, const QStyleOptionHeader *option); void paintStyledFrame(QPainter *painter, const QStyleOptionFrame *frame, const QWidget *widget, const QStyle *style); void paintFrameLineEdit(QPainter *painter, const QStyleOptionFrame *frame); void paintPanelLineEdit(QPainter *painter, const QStyleOptionFrame *frame, const QWidget *widget, const QStyle *style); void paintFrameDockWidget(QPainter *painter, const QStyleOptionFrame *frame); void paintFrameWindow(QPainter *painter, const QStyleOptionFrame *frame); void paintToolBarSeparator(QPainter *painter, const QStyleOptionToolBar *option); void paintToolBarHandle(QPainter *painter, const QStyleOptionToolBar *option); void paintScrollArea(QPainter *painter, const QStyleOption *option); void paintPanelToolBar(QPainter *painter, const QStyleOptionToolBar *option); void paintIndicatorMenuCheckMark(QPainter *painter, const QStyleOptionMenuItem *option, const QWidget *widget, const QStyle *style); void paintFrameGroupBox(QPainter *painter, const QStyleOptionFrame *option); void paintFrameFocusRect(QPainter *painter, const QStyleOptionFocusRect *option, const QWidget *widget); void paintPanelButtonTool(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style); void paintSizeGrip(QPainter *painter, const QStyleOption *option); void paintScrollAreaCorner(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void paintPanelItemViewItem(QPainter *painter, const QStyleOptionViewItemV4 *option, const QWidget *widget, const QStyle *style); #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) void paintIndicatorTabClose(QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style); #endif void paintMenuBarEmptyArea(QPainter *painter, const QStyleOption *option); void paintPanelMenuBar(QPainter *painter, const QStyleOptionFrame *frame); void paintMenuBarItem(QPainter *painter, const QStyleOptionMenuItem *option, const QWidget *widget, const QStyle *style); void paintFrameMenu(QPainter *painter, const QStyleOptionFrame *frame); void paintMenuItem(QPainter *painter, const QStyleOptionMenuItem *option, const QWidget *widget, const QStyle *style); void paintTabBarTabShape(QPainter *painter, const QStyleOptionTab *option, const QWidget *widget, const QStyle *style); void paintTabBarTabLabel(QPainter *painter, const QStyleOptionTab *option, const QWidget *widget, const QStyle *style); void paintFrameTabBarBase(QPainter *painter, const QStyleOptionTabBarBase *option); #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) void paintToolBoxTabShape(QPainter *painter, const QStyleOptionToolBoxV2 *option); void paintToolBoxTabLabel(QPainter *painter, const QStyleOptionToolBox *option, const QWidget *widget, const QStyle *style); #else void paintToolBoxTabShape(QPainter *painter, const QStyleOptionToolBox *option); #endif void paintHeaderEmptyArea(QPainter *painter, const QStyleOption *option); void paintHeaderSection(QPainter *painter, const QStyleOptionHeader *option, const QWidget *widget, const QStyle *style); void paintHeaderLabel(QPainter *painter, const QStyleOptionHeader *option, const QWidget *widget, const QStyle *style); void paintIndicatorBranch(QPainter *painter, const QStyleOption *option); void paintScrollBarSlider(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarAddLine(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarSubLine(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarFirst(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarLast(QPainter *painter, const QStyleOptionSlider *option); void paintScrollBarPage(QPainter *painter, const QStyleOptionSlider *option); void paintProgressBarGroove(QPainter *painter, const QStyleOptionProgressBar *option); void paintProgressBarContents(QPainter *painter, const QStyleOptionProgressBarV2 *option, const QWidget *widget, const QStyle *style); void paintProgressBarLabel(QPainter *painter, const QStyleOptionProgressBarV2 *option, const QWidget *widget, const QStyle *style); void paintSplitter(QPainter *painter, const QStyleOption *option); void paintDockWidgetTitle(QPainter *painter, const QStyleOptionDockWidget *option, const QWidget *widget, const QStyle *style); void paintRubberBand(QPainter *paint, const QStyleOptionRubberBand *option); void paintComboBoxLabel(QPainter *painter, const QStyleOptionComboBox *option, const QWidget *widget, const QStyle *style); void paintToolButtonLabel(QPainter *painter, const QStyleOptionToolButton *option, const QWidget *widget, const QStyle *style); /*-----------------------------------------------------------------------*/ SkulptureStyle::Private::Private() { init(); } SkulptureStyle::Private::~Private() { delete shortcut_handler; delete settings; } void SkulptureStyle::Private::init() { shortcut_handler = new ShortcutHandler(this); timer = 0; updatingShadows = false; oldEdit = 0; #if 0 settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, QLatin1String("SkulptureStyle"), QLatin1String("")); #else settings = 0; #endif QSettings s(QSettings::IniFormat, QSettings::UserScope, QLatin1String("SkulptureStyle"), QLatin1String("")); readSettings(s); register_draw_entries(); } void SkulptureStyle::Private::register_draw_entries() { for (uint i = 0; i < sizeof(draw_primitive_entry) / sizeof(Private::DrawElementEntry); ++i) { draw_primitive_entry[i].func = 0; } for (uint i = 0; i < sizeof(draw_element_entry) / sizeof(Private::DrawElementEntry); ++i) { draw_element_entry[i].func = 0; } /* entries are stricly sorted in Qt order for future lookup table */ #define register_primitive(pe, f, so) draw_primitive_entry[QStyle::PE_ ## pe].type = QStyleOption::SO_ ## so; draw_primitive_entry[QStyle::PE_ ## pe].func = (drawElementFunc *) paint ## f; /* PRIMITIVE ELEMENT */ // Qt 3.x compatibility //### register_primitive(Q3CheckListController, Nothing, Default); register_primitive(Q3CheckListExclusiveIndicator, Q3CheckListExclusiveIndicator, Default); register_primitive(Q3CheckListIndicator, Q3CheckListIndicator, Default); register_primitive(Q3DockWindowSeparator, ToolBarSeparator, Default); //### register_primitive(Q3Separator, Q3Separator, Default); // Qt 4.0 Frames register_primitive(Frame, StyledFrame, Frame); register_primitive(FrameDefaultButton, Nothing, Button); register_primitive(FrameDockWidget, FrameDockWidget, Frame); register_primitive(FrameFocusRect, FrameFocusRect, FocusRect); register_primitive(FrameGroupBox, FrameGroupBox, Frame); register_primitive(FrameLineEdit, FrameLineEdit, Frame); register_primitive(FrameMenu, FrameMenu, Default); // ### Qt 4.3 calls FrameMenu with SO_ToolBar for a toolbar #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) register_primitive(FrameStatusBarItem, Nothing, Default); #else register_primitive(FrameStatusBar, Nothing, Default); #endif register_primitive(FrameTabWidget, TabWidgetFrame, TabWidgetFrame); register_primitive(FrameWindow, FrameWindow, Frame); register_primitive(FrameButtonBevel, PanelButtonTool, Default); register_primitive(FrameButtonTool, PanelButtonTool, Default); register_primitive(FrameTabBarBase, FrameTabBarBase, TabBarBase); // Qt 4.0 Panels register_primitive(PanelButtonCommand, CommandButtonPanel, Button); register_primitive(PanelButtonBevel, PanelButtonTool, Default); register_primitive(PanelButtonTool, PanelButtonTool, Default); register_primitive(PanelMenuBar, PanelMenuBar, Frame); register_primitive(PanelToolBar, PanelToolBar, Frame); register_primitive(PanelLineEdit, PanelLineEdit, Frame); // Qt 4.0 Indicators register_primitive(IndicatorArrowDown, IndicatorArrowDown, Default); register_primitive(IndicatorArrowLeft, IndicatorArrowLeft, Default); register_primitive(IndicatorArrowRight, IndicatorArrowRight, Default); register_primitive(IndicatorArrowUp, IndicatorArrowUp, Default); register_primitive(IndicatorBranch, IndicatorBranch, Default); register_primitive(IndicatorButtonDropDown, PanelButtonTool, Default); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) register_primitive(IndicatorItemViewItemCheck, IndicatorItemViewItemCheck, Default); #else register_primitive(IndicatorViewItemCheck, IndicatorItemViewItemCheck, Default); #endif register_primitive(IndicatorCheckBox, IndicatorCheckBox, Button); register_primitive(IndicatorDockWidgetResizeHandle, Splitter, Default); register_primitive(IndicatorHeaderArrow, HeaderSortIndicator, Header); register_primitive(IndicatorMenuCheckMark, IndicatorMenuCheckMark, MenuItem); // register_primitive(IndicatorProgressChunk, , ); register_primitive(IndicatorRadioButton, IndicatorRadioButton, Button); register_primitive(IndicatorSpinDown, IndicatorSpinDown, Default); register_primitive(IndicatorSpinMinus, IndicatorSpinMinus, Default); register_primitive(IndicatorSpinPlus, IndicatorSpinPlus, Default); register_primitive(IndicatorSpinUp, IndicatorSpinUp, Default); register_primitive(IndicatorToolBarHandle, ToolBarHandle, ToolBar); register_primitive(IndicatorToolBarSeparator, ToolBarSeparator, Default); // register_primitive(PanelTipLabel, , ); // register_primitive(IndicatorTabTear, , ); // Qt 4.2 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) register_primitive(PanelScrollAreaCorner, ScrollAreaCorner, Default); // ### register_primitive(Widget, , ); #endif // Qt 4.3 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) // TODO register_primitive(IndicatorColumnViewArrow, , ); #endif // Qt 4.4 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) // register_primitive(IndicatorItemViewItemDrop, , ); register_primitive(PanelItemViewItem, PanelItemViewItem, ViewItem); // register_primitive(PanelItemViewRow, , ); // register_primitive(PanelStatusBar, , ); #endif // Qt 4.5 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) register_primitive(IndicatorTabClose, IndicatorTabClose, Default); // register_primitive(PanelMenu, , ); #endif #define register_element(ce, f, so) draw_element_entry[QStyle::CE_ ## ce].type = QStyleOption::SO_ ## so; draw_element_entry[QStyle::CE_ ## ce].func = (drawElementFunc *) paint ## f; /* CONTROL ELEMENT */ // Qt 4.0 Buttons // register_element(PushButton, , ); register_element(PushButtonBevel, PushButtonBevel, Button); // register_element(PushButtonLabel, , ); // register_element(CheckBox, , ); // register_element(CheckBoxLabel, , ); // register_element(RadioButton, , ); // register_element(RadioButtonLabel, , ); // Qt 4.0 Controls // register_element(TabBarTab, , ); register_element(TabBarTabShape, TabBarTabShape, Tab); register_element(TabBarTabLabel, TabBarTabLabel, Tab); // register_element(ProgressBar, , ProgressBar); register_element(ProgressBarGroove, ProgressBarGroove, ProgressBar); register_element(ProgressBarContents, ProgressBarContents, ProgressBar); register_element(ProgressBarLabel, ProgressBarLabel, ProgressBar); // Qt 4.0 Menus register_element(MenuItem, MenuItem, MenuItem); // register_element(MenuScroller, , ); // register_element(MenuVMargin, , ); // register_element(MenuHMargin, , ); // register_element(MenuTearoff, , ); register_element(MenuEmptyArea, Nothing, Default); register_element(MenuBarItem, MenuBarItem, MenuItem); register_element(MenuBarEmptyArea, MenuBarEmptyArea, Default); // Qt 4.0 more Controls register_element(ToolButtonLabel, ToolButtonLabel, ToolButton); // register_element(Header, , ); register_element(HeaderSection, HeaderSection, Header); register_element(HeaderLabel, HeaderLabel, Header); // register_element(Q3DockWindowEmptyArea, , ); // register_element(ToolBoxTab, , ); register_element(SizeGrip, SizeGrip, Default); register_element(Splitter, Splitter, Default); register_element(RubberBand, RubberBand, RubberBand); register_element(DockWidgetTitle, DockWidgetTitle, DockWidget); // Qt 4.0 ScrollBar register_element(ScrollBarAddLine, ScrollBarAddLine, Slider); register_element(ScrollBarSubLine, ScrollBarSubLine, Slider); register_element(ScrollBarAddPage, ScrollBarPage, Slider); register_element(ScrollBarSubPage, ScrollBarPage, Slider); register_element(ScrollBarSlider, ScrollBarSlider, Slider); register_element(ScrollBarFirst, ScrollBarFirst, Slider); register_element(ScrollBarLast, ScrollBarLast, Slider); // Qt 4.0 even more Controls // register_element(FocusFrame, , ); register_element(ComboBoxLabel, ComboBoxLabel, ComboBox); // Qt 4.1 additions //#if (QT_VERSION >= QT_VERSION_CHECK(4, 1, 0)) register_element(ToolBar, PanelToolBar, ToolBar); //#endif // Qt 4.3 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) register_element(ToolBoxTabShape, ToolBoxTabShape, ToolBox); register_element(ToolBoxTabLabel, ToolBoxTabLabel, ToolBox); register_element(HeaderEmptyArea, HeaderEmptyArea, Default); register_element(ColumnViewGrip, Splitter, Default); #endif // Qt 4.4 additions #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) // register_element(ItemViewItem, , ); #endif } /*-----------------------------------------------------------------------*/ //#include "skulpture_p.moc" �������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/skulpture.h�������������������������������������������0000664�0000000�0000000�00000011403�11770671653�0023563�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Skulpture - Classical Three-Dimensional Artwork for Qt 4 * * Copyright (c) 2007, 2008 Christoph Feck <christoph@maxiom.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef SKULPTURE_H #define SKULPTURE_H 1 #include <QtGui/QCommonStyle> /*-----------------------------------------------------------------------*/ // Skulpture is a subclass of QCommonStyle in order to // ease transition to KStyle later class SkulptureStyle : public QCommonStyle { Q_OBJECT typedef QCommonStyle ParentStyle; public: SkulptureStyle(); virtual ~SkulptureStyle(); QPalette standardPalette() const; void polish(QPalette &palette); void polish(QWidget *widget); void unpolish(QWidget *widget); void polish(QApplication *application); void unpolish(QApplication *application); void drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const; void drawItemText(QPainter * painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; QRect itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap & pixmap) const; QRect itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text ) const; int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const; QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const; QSize sizeFromContents (ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const; QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const; SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &position, const QWidget *widget) const; QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const; QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option, const QWidget *widget) const; void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const; void drawControl(ControlElement control, const QStyleOption *option, QPainter *painter, const QWidget *widget) const; void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const; public: // internal enum SkulpturePrivateMethod { SPM_SupportedMethods = 0, SPM_SetSettingsFileName = 1 }; public Q_SLOTS: int skulpturePrivateMethod(SkulpturePrivateMethod id, void *data = 0); protected Q_SLOTS: //#if (QT_VERSION >= 0x040100) QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const; //#endif #if (QT_VERSION >= 0x040300) int layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const; #endif private: void init(); class Private; Private * const d; }; /*-----------------------------------------------------------------------*/ #endif // SKULPTURE_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/skulpture22.pro���������������������������������������0000664�0000000�0000000�00000000314�11770671653�0024277�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������include(../../common.pri) include(../common.pri) TARGET = $$qtLibraryTarget(skulpture) #Header files HEADERS += \ skulpture.h \ skulpture_p.h \ #Source files SOURCES += \ skulpture.cpp \ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/plugins/qtstyle/skulpture22/skulpture_p.h�����������������������������������������0000664�0000000�0000000�00000023527�11770671653�0024114�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * skulpture_p.h - Classical Three-Dimensional Artwork for Qt 4 * * Copyright (c) 2007-2009 Christoph Feck <christoph@maxiom.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef SKULPTURE_PRIVATE_H #define SKULPTURE_PRIVATE_H 1 /*-----------------------------------------------------------------------*/ #include <QtCore/QObject> class QWidget; class ShortcutHandler : public QObject { Q_OBJECT enum TabletCursorState { DefaultCursor, TabletCursor, BlankCursor }; public: explicit ShortcutHandler(QObject *parent = 0); virtual ~ShortcutHandler(); bool underlineShortcut(const QWidget *widget) const; protected: bool eventFilter(QObject *watched, QEvent *event); private: void init() { } private: QList<QWidget *> alt_pressed; TabletCursorState tabletCursorState; }; /*-----------------------------------------------------------------------*/ #if (QT_VERSION < 0x040300) #define QT_VERSION_CHECK(maj, min, rel) ((maj << 16) + (min << 8) + (rel)) #endif /*-----------------------------------------------------------------------*/ enum ArrowPlacementMode { NoArrowsMode, // (*) SkulptureMode, // (<*>) WindowsMode, // <(*)> KDEMode, // <(*)<> PlatinumMode, // (*)<> NextMode // <>(*) }; /*-----------------------------------------------------------------------*/ #include "skulpture.h" #include <QtCore/QPointer> #include <QtCore/QSignalMapper> #include <QtCore/QHash> #include <QtGui/QStyleOption> class QPainter; class QSettings; class QTextEdit; class QPlainTextEdit; class QAbstractScrollArea; class QLineEdit; #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) class QFormLayout; #endif class QMenu; class SkulptureStyle::Private : public QObject { Q_OBJECT public: Private(); ~Private(); SkulptureStyle *q; void setAnimated(QWidget *widget, bool animated); bool isAnimated(QWidget *widget); private: QList<QWidget *> animations; int timer; public: void readSettings(const QSettings &s); void readDominoSettings(const QSettings &s); QSettings *settings; bool animateProgressBars; bool hideShortcutUnderlines; bool centerTabs; // from domino bool makeDisabledWidgetsTransparent; bool transparentPlacesPanel; bool forceSpacingAndMargins; bool useIconColumnForCheckIndicators; bool useSelectionColorForCheckedIndicators; bool useSelectionColorForSelectedMenuItems; bool useSingleClickToActivateItems; ArrowPlacementMode verticalArrowMode; ArrowPlacementMode horizontalArrowMode; int dialogMargins; int horizontalSpacing; int labelSpacing; int menuBarSize; int menuItemSize; int pushButtonSize; int scrollBarSize; int scrollBarLength; int sliderSize; int sliderLength; int tabBarSize; int toolButtonSize; int verticalSpacing; int widgetMargins; int widgetSize; int textShift; int buttonGradient; int buttonRoundness; int subMenuDelay; QString passwordCharacters; QString styleSheetFileName; qreal textCursorWidth; enum Settings { Style, Metric, Icon }; typedef void (drawElementFunc)( QPainter *painter, const QStyleOption *option, const QWidget *widget, const QStyle *style ); struct DrawElementEntry { int type; drawElementFunc *func; }; void register_settings(const char *label, ...); QSignalMapper mapper; #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) struct DrawElementEntry draw_primitive_entry[QStyle::PE_PanelMenu + 1]; #elif (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) struct DrawElementEntry draw_primitive_entry[QStyle::PE_PanelStatusBar + 1]; #elif (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) struct DrawElementEntry draw_primitive_entry[QStyle::PE_IndicatorColumnViewArrow + 1]; #elif (QT_VERSION >= QT_VERSION_CHECK(4, 2, 0)) struct DrawElementEntry draw_primitive_entry[QStyle::PE_Widget + 1]; #else struct DrawElementEntry draw_primitive_entry[QStyle::PE_IndicatorTabTear + 1]; #endif #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) struct DrawElementEntry draw_element_entry[QStyle::CE_ItemViewItem + 1]; #elif (QT_VERSION >= QT_VERSION_CHECK(4, 3, 0)) struct DrawElementEntry draw_element_entry[QStyle::CE_ColumnViewGrip + 1]; #else struct DrawElementEntry draw_element_entry[QStyle::CE_ToolBar + 1]; #endif ShortcutHandler *shortcut_handler; void register_draw_entries(); void installFrameShadow(QWidget *widget); void removeFrameShadow(QWidget *widget); void updateFrameShadow(QWidget *widget); void updateTextEditMargins(QTextEdit *edit); void removeCursorLine(QAbstractScrollArea *edit); void updateCursorLine(QAbstractScrollArea *edit, const QRect &cursorRect); void paintCursorLine(QAbstractScrollArea *edit); void handleCursor(QTextEdit *edit); void handleCursor(QPlainTextEdit *edit); int verticalTextShift(const QFontMetrics &fontMetrics); int textLineHeight(const QStyleOption *option, const QWidget *widget); void polishLayout(QLayout *layout); #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) void polishFormLayout(QFormLayout *layout); #endif QList<QPointer<QWidget> > postEventWidgets; void addPostEventWidget(QWidget *widget); QAbstractScrollArea *oldEdit; int oldCursorTop; int oldCursorWidth; int oldCursorHeight; int oldHeight; QPalette oldPalette; bool updatingShadows; QLineEdit *hoverLineEdit; QLineEdit *focusLineEdit; QRect lineEditHoverCursorRect; struct MenuInfo { QPointer<QMenu> menu; QPointer<QAction> lastAction; QPointer<QAction> visibleSubMenu; QPointer<QAction> lastSubMenuAction; int eventCount; QPoint lastPos; int delayTimer; }; QHash<QMenu *, MenuInfo> menuHash; bool menuEventFilter(QMenu *menu, QEvent *event); protected: void timerEvent(QTimerEvent *event); bool eventFilter(QObject *watched, QEvent *event); protected Q_SLOTS: void textEditSourceChanged(QWidget *); void updateToolBarOrientation(Qt::Orientation); void processPostEventWidgets(); private: void init(); }; /*-----------------------------------------------------------------------*/ class FrameShadow : public QWidget { Q_OBJECT public: enum ShadowArea { Left, Top, Right, Bottom }; public: explicit FrameShadow(QWidget *parent = 0); explicit FrameShadow(ShadowArea area, QWidget *parent = 0); virtual ~FrameShadow(); void setShadowArea(ShadowArea area) { area_ = area; } ShadowArea shadowArea() const { return area_; } void updateGeometry(); protected: bool event(QEvent *e); void paintEvent(QPaintEvent *); private: void init(); private: ShadowArea area_; }; /*-----------------------------------------------------------------------*/ class WidgetShadow : public QWidget { Q_OBJECT public: explicit WidgetShadow(QWidget *parent = 0); void setWidget(QWidget *w) { widget_ = w; } QWidget *widget() const { return widget_; } void updateGeometry(); void updateZOrder(); public: bool event(QEvent *e); private: void init(); private: QWidget *widget_; }; /*-----------------------------------------------------------------------*/ struct SkMethodData { int version; }; struct SkMethodDataSetSettingsFileName : public SkMethodData { // in version 1 QString fileName; }; /*-----------------------------------------------------------------------*/ class QPainterPath; QColor shaded_color(const QColor &color, int shade); QColor blend_color(const QColor &c0, const QColor &c1, qreal blend); QGradient path_edge_gradient(const QRectF &rect, const QStyleOption *option, const QPainterPath &path, const QColor &color2, const QColor &color1); void paintThinFrame(QPainter *painter, const QRect &rect, const QPalette &palette, int dark, int light, QPalette::ColorRole bgrole = QPalette::Window); enum RecessedFrame { RF_Small, RF_Large, RF_None }; void paintRecessedFrame(QPainter *painter, const QRect &rect, const QPalette &palette, enum RecessedFrame rf, QPalette::ColorRole bgrole = QPalette::Window); void paintRecessedFrameShadow(QPainter *painter, const QRect &rect, enum RecessedFrame rf); /*-----------------------------------------------------------------------*/ // FIXME #if (QT_VERSION < QT_VERSION_CHECK(4, 3, 0)) #define lighter light #define darker dark #endif /*-----------------------------------------------------------------------*/ #define array_elements(a) (sizeof(a) / sizeof(a[0])) /*-----------------------------------------------------------------------*/ #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/�����������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016077�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MouseMachine/����������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0020454�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MouseMachine/LICENSE.LGPL����������������������������������������������0000664�0000000�0000000�00000063504�11770671653�0022226�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MouseMachine/MouseMachine.cpp������������������������������������������0000664�0000000�0000000�00000035424�11770671653�0023545�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: MouseMachine // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "Mousemachine.h" #include <QApplication> #include <QWidget> #include <QMouseEvent> #include <QDebug> #include <QAbstractScrollArea> #define SPEED_INTERVAL 20 // The interval in ms between 2 speed checks. The greater, the greater the speed will be #define SPEEDVECTOR_MULTIPLIER 4 // the speed multiplier. Multiply the speed to get the end autoscroll pos. #define MIN_SPEED 12 // The minimum speed to switch to autoscroll #define MIN_MOVE 12 // The minimum move for a move event to be registered as such. Usefull on touch devices where it is nearly certain to get a mouse move between a press and a release. #define DBLCLICK_INTERVAL 500 #define TAPHOLD_TIMEOUT 500 #define EVENT_AUTOSCROLL (QEvent::Type(QEvent::User+1)) #define EVENT_MOVE (QEvent::Type(QEvent::User+2)) #define EVENT_PRESS (QEvent::Type(QEvent::User+3)) #define EVENT_RELEASE (QEvent::Type(QEvent::User+4)) #define EVENT_DBLCLICK (QEvent::Type(QEvent::User+5)) int gSkipEvents; struct AutoscrollEvent : public QEvent { AutoscrollEvent(bool val) : QEvent(EVENT_AUTOSCROLL), value(val) {} bool value; }; class AutoscrollTransition : public QAbstractTransition { public: AutoscrollTransition(bool value) : m_value(value) {} protected: virtual bool eventTest(QEvent *e) { if (e->type() != EVENT_AUTOSCROLL) return false; AutoscrollEvent *se = static_cast<AutoscrollEvent*>(e); return (m_value == se->value); } virtual void onTransition(QEvent *) {} private: bool m_value; }; struct FilteredMouseMoveEvent : public QEvent { FilteredMouseMoveEvent(bool val) : QEvent(EVENT_MOVE), value(val) {} bool value; }; struct FilteredMousePressEvent : public QEvent { FilteredMousePressEvent() : QEvent(EVENT_PRESS) {} }; struct FilteredMouseReleaseEvent : public QEvent { FilteredMouseReleaseEvent() : QEvent(EVENT_RELEASE) {} }; struct FilteredDoubleClickEvent : public QEvent { FilteredDoubleClickEvent() : QEvent(EVENT_DBLCLICK) {} }; class FilteredMouseMoveTransition : public QAbstractTransition { public: FilteredMouseMoveTransition(bool value) : m_value(value) {} protected: virtual bool eventTest(QEvent *e) { if (e->type() != EVENT_MOVE) return false; FilteredMouseMoveEvent *se = static_cast<FilteredMouseMoveEvent*>(e); return (m_value == se->value); } virtual void onTransition(QEvent *) {} private: bool m_value; }; class FilteredMouseClickTransition : public QAbstractTransition { public: FilteredMouseClickTransition(QEvent::Type typ) : m_typ(typ) {} protected: virtual bool eventTest(QEvent *e) { if (e->type() != m_typ) return false; return (gSkipEvents == 0); } virtual void onTransition(QEvent *e) {} private: QEvent::Type m_typ; }; /**********************/ MouseMachine::MouseMachine(QWidget* parent, MouseMachine::Options options) : QObject(parent) , theParent(parent) , m_options(options) , machine(0) , trPressed2Idle(0) , trPressed2Man(0) , trManScrolling(0) , trIdle2Pressed(0) , trMan2Auto(0) , trMan2Idle(0) , trAuto2Idle(0) , trAuto2Man(0) , trDoubleclick(0) { speedTimer.setInterval(SPEED_INTERVAL); connect(&speedTimer, SIGNAL(timeout()), SLOT(slotCalculateSpeed())); if (options & MouseMachine::SignalDoubleTap) dblclickTimer.setInterval(DBLCLICK_INTERVAL); else dblclickTimer.setInterval(0); dblclickTimer.setSingleShot(true); connect(&dblclickTimer, SIGNAL(timeout()), SLOT(slotSingleTap())); scrollTimeline.setCurveShape(QTimeLine::EaseOutCurve); scrollTimeline.setEasingCurve(QEasingCurve::OutQuad); connect(&scrollTimeline, SIGNAL(valueChanged(qreal)), SLOT(slotAutoscroll(qreal))); connect(&scrollTimeline, SIGNAL(finished()), SLOT(slotAutoscrollFinished())); tapHoldTimer.setInterval(TAPHOLD_TIMEOUT); tapHoldTimer.setSingleShot(true); theTarget = theParent; QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(theParent); if (scrollArea) { oldHzPolicy = scrollArea->horizontalScrollBarPolicy(); oldVtPolicy = scrollArea->verticalScrollBarPolicy(); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); theTarget = scrollArea->viewport(); } if (!(options.testFlag(MouseMachine::CascadedEventFilter))) theTarget->installEventFilter(this); gSkipEvents = 0; buildMachine(); machine->start(); } bool MouseMachine::eventFilter(QObject *object, QEvent *event) { if (!object->isWidgetType()) return false; if (gSkipEvents && gSkipEvents-- > 0) return false; QEvent::Type type = event->type(); if (type != QEvent::MouseButtonPress && type != QEvent::MouseButtonRelease && type != QEvent::MouseButtonDblClick && type != QEvent::MouseMove && type != QEvent::ContextMenu) return false; QMouseEvent* mouseEvent = dynamic_cast<QMouseEvent*>(event); if (mouseEvent) { if (type == QEvent::MouseMove) { QPoint curPos = mouseEvent->globalPos(); if (oldFilteredPos.isNull()) oldFilteredPos = curPos; if ((oldFilteredPos - curPos).manhattanLength() > MIN_MOVE) { machine->postEvent(new FilteredMouseMoveEvent(false)); } } else { oldFilteredPos = QPoint(); if (type == QEvent::MouseButtonPress && mouseEvent->button() == Qt::LeftButton && mouseEvent->modifiers() == Qt::NoModifier ) { machine->postEvent(new FilteredMousePressEvent()); } else if (type == QEvent::MouseButtonRelease && mouseEvent->button() == Qt::LeftButton && mouseEvent->modifiers() == Qt::NoModifier) { machine->postEvent(new FilteredMouseReleaseEvent()); } else if (type == QEvent::MouseButtonDblClick && mouseEvent->button() == Qt::LeftButton && mouseEvent->modifiers() == Qt::NoModifier) { machine->postEvent(new FilteredDoubleClickEvent()); } } } //#ifndef QT_NO_DEBUG_OUTPUT // qDebug() << object; // switch (event->type()) { // case QEvent::MouseButtonPress: // qDebug() << "-> MouseButtonPress " << curPos << " : " << QCursor::pos(); // break; // case QEvent::MouseButtonRelease: // qDebug() << "-> MouseButtonRelease" << curPos << " : " << QCursor::pos(); // break; // case QEvent::MouseMove: // qDebug() << "-> MouseMove" << curPos << " : " << QCursor::pos(); // break; // case QEvent::MouseButtonDblClick: // qDebug() << "-> MouseButtonDblClick" << curPos << " : " << QCursor::pos(); // break; // default: // break; // } //#endif return true; } void MouseMachine::buildMachine() { delete machine; machine = new QStateMachine(this); stIdle = new QState(); stPressed = new QState(); stManScroll = new QState(); stAutoScroll = new QState(); trIdle2Pressed = new FilteredMouseClickTransition(EVENT_PRESS); trIdle2Pressed->setTargetState(stPressed); connect (trIdle2Pressed, SIGNAL(triggered()), SLOT(slotStartTap())); trDoubleclick = new FilteredMouseClickTransition(EVENT_DBLCLICK); trDoubleclick->setTargetState(stIdle); connect (trDoubleclick, SIGNAL(triggered()), SLOT(slotDoubleTap())); trPressed2Idle = new FilteredMouseClickTransition(EVENT_RELEASE); trPressed2Idle->setTargetState(stIdle); connect (trPressed2Idle, SIGNAL(triggered()), SLOT(slotPotentialDblclick())); trPressed2Man = new FilteredMouseMoveTransition(false); trPressed2Man->setTargetState(stManScroll); connect (trPressed2Man, SIGNAL(triggered()), SLOT(slotStartDrag())); trTapHold = new QSignalTransition(&tapHoldTimer, SIGNAL(timeout())); trTapHold->setTargetState(stIdle); connect (trTapHold, SIGNAL(triggered()), SLOT(slotTapAndHold())); trManScrolling = new QMouseEventTransition(theTarget, QEvent::MouseMove, Qt::NoButton); connect (trManScrolling, SIGNAL(triggered()), SLOT(slotDrag())); stIdle->addTransition(trIdle2Pressed); stIdle->addTransition(trDoubleclick); stPressed->addTransition(trPressed2Idle); stPressed->addTransition(trPressed2Man); stPressed->addTransition(trTapHold); stManScroll->addTransition(trManScrolling); machine->addState(stIdle); machine->addState(stPressed); machine->addState(stManScroll); if (m_options & MouseMachine::AutoScroll) { trMan2Auto = new FilteredMouseClickTransition(EVENT_RELEASE); trMan2Auto->setTargetState(stAutoScroll); connect (trMan2Auto, SIGNAL(triggered()), SLOT(slotStartAuto())); trAuto2Man = new FilteredMouseClickTransition(EVENT_PRESS); trAuto2Man->setTargetState(stManScroll); connect (trAuto2Man, SIGNAL(triggered()), SLOT(slotStartDrag())); trAuto2Idle = new AutoscrollTransition(false); trAuto2Idle->setTargetState(stIdle); // connect (trAuto2Idle, SIGNAL(triggered()), SLOT(slotPotentialDblclick())); stManScroll->addTransition(trMan2Auto); stAutoScroll->addTransition(trAuto2Idle); stAutoScroll->addTransition(trAuto2Man); machine->addState(stAutoScroll); } else { trMan2Idle = new FilteredMouseClickTransition(EVENT_RELEASE); trMan2Idle->setTargetState(stIdle); // connect (trMan2Idle, SIGNAL(triggered()), SLOT(slotPotentialDblclick())); stManScroll->addTransition(trMan2Idle); } machine->setInitialState(stIdle); } MouseMachine::~MouseMachine() { machine->stop(); QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(theParent); if (scrollArea) { scrollArea->setHorizontalScrollBarPolicy(oldHzPolicy); scrollArea->setVerticalScrollBarPolicy(oldVtPolicy); } } void MouseMachine::slotStartTap() { // qDebug() << "--- slotStartTap "<< curPos << " : " << QCursor::pos(); curPos = QCursor::pos(); firstPress = curPos; tapHoldTimer.start(); } void MouseMachine::slotPotentialDblclick() { tapHoldTimer.stop(); if (dblclickTimer.isActive()) { dblclickTimer.stop(); slotDoubleTap(); } else { dblclickTimer.start(); } } void MouseMachine::slotSingleTap() { // qDebug() << "--- slotSingleTap " << curPos << " : " << QCursor::pos(); tapHoldTimer.stop(); if (m_options & MouseMachine::SignalTap) { emit singleTap(theParent->mapFromGlobal(firstPress)); } else { QWidget*w = theTarget; QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress, theParent->mapFromGlobal(firstPress), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QMouseEvent *event2 = new QMouseEvent(QEvent::MouseButtonRelease, theParent->mapFromGlobal(firstPress), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); gSkipEvents = 2; QApplication::postEvent(w, event1); QApplication::postEvent(w, event2); } } void MouseMachine::slotDoubleTap() { // qDebug() << "--- slotDoubleTap " << curPos << " : " << QCursor::pos(); tapHoldTimer.stop(); dblclickTimer.stop(); emit doubleTap(theParent->mapFromGlobal(firstPress)); } void MouseMachine::slotTapAndHold() { // qDebug() << "--- slotTapAndHold " << curPos << " : " << QCursor::pos(); tapHoldTimer.stop(); emit tapAndHold(theParent->mapFromGlobal(firstPress)); } void MouseMachine::slotStartDrag() { // qDebug() << "--- slotStartDrag " << curPos << " : " << QCursor::pos(); curPos = QCursor::pos(); oldPos = curPos; oldSpeedPos = curPos; speed = QPoint(); scrollTimeline.stop(); speedTimer.start(); } void MouseMachine::slotDrag() { // qDebug() << "--- slotDrag " << curPos << " : " << QCursor::pos(); curPos = QCursor::pos(); QPoint delta = curPos - oldPos; if (!delta.isNull()) { if (m_options.testFlag(MouseMachine::SignalScroll)) { emit scroll(theParent->mapFromGlobal(oldPos), theParent->mapFromGlobal(curPos)); } else { if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(theParent)) { scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() - delta.x()); scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() - delta.y()); } } } oldPos = curPos; } void MouseMachine::slotCalculateSpeed() { curPos = QCursor::pos(); speed = curPos - oldSpeedPos; oldSpeedPos = curPos; } void MouseMachine::slotAutoscroll(qreal val) { // qDebug() << "--- slotAutoscroll " << curPos << " : " << QCursor::pos(); curPos = QCursor::pos(); QPoint curAutoPos = speedVector.pointAt(val).toPoint(); QPoint delta = curAutoPos - oldAutoPos; // qDebug() << delta << " : " << curAutoPos << " : " << oldAutoPos << " : " << val; if (!delta.isNull()) { if (m_options & MouseMachine::SignalScroll) { emit scroll(theParent->mapFromGlobal(oldAutoPos), theParent->mapFromGlobal(curAutoPos)); } else { if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(theParent)) { scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() - delta.x()); scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() - delta.y()); } } } oldAutoPos = curAutoPos; } void MouseMachine::slotStartAuto() { // qDebug() << "--- slotStartAuto " << curPos << " : " << QCursor::pos(); curPos = QCursor::pos(); speedTimer.stop(); if (speed.manhattanLength() > MIN_SPEED) { speedVector = QLineF(curPos, curPos + (speed * SPEEDVECTOR_MULTIPLIER)); oldAutoPos = curPos; scrollTimeline.start(); } else { // qDebug() << "--- StopAuto"; machine->postEvent(new AutoscrollEvent(false)); } slotDrag(); } void MouseMachine::slotAutoscrollFinished() { // qDebug() << "--- slotAutoscrollFinished " << curPos << " : " << QCursor::pos(); machine->postEvent(new AutoscrollEvent(false)); } void MouseMachine::setOptions(Options options) { m_options = options; machine->stop(); buildMachine(); machine->start(); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MouseMachine/MouseMachine.h��������������������������������������������0000664�0000000�0000000�00000005454�11770671653�0023212�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: MouseMachine // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef MOUSEMACHINE_H #define MOUSEMACHINE_H #include <QObject> #include <QPoint> #include <QState> #include <QStateMachine> #include <QMouseEventTransition> #include <QSignalTransition> #include <QTimer> #include <QTimeLine> #include <QLineF> #include <QFlags> #include <QScrollBar> #ifdef Q_OS_SYMBIAN #include <touchfeedback.h> #endif class AutoscrollTransition; class FilteredMouseMoveTransition; class FilteredMouseClickTransition; class MouseMachine : public QObject { Q_OBJECT public: enum Option { NoOptions = 0x0, AutoScroll = 0x1, SignalTap = 0x2, SignalDoubleTap = 0x4, SignalScroll = 0x8, CascadedEventFilter = 0x10 }; Q_DECLARE_FLAGS(Options, Option) MouseMachine(QWidget* parent = 0, MouseMachine::Options options = MouseMachine::NoOptions); ~MouseMachine(); void setOptions(MouseMachine::Options options); bool eventFilter(QObject *object, QEvent *event); protected slots: void slotStartTap(); void slotSingleTap(); void slotDoubleTap(); void slotTapAndHold(); void slotStartDrag(); void slotDrag(); void slotStartAuto(); void slotAutoscrollFinished(); void slotCalculateSpeed(); void slotPotentialDblclick(); void slotAutoscroll(qreal val); signals: void singleTap(QPoint pos); void doubleTap(QPoint pos); void tapAndHold(QPoint pos); void scroll(QPoint oldPos, QPoint newPos); protected: void buildMachine(); protected: QWidget* theParent; QWidget* theTarget; Options m_options; QStateMachine* machine; QState *stIdle; QState *stPressed; QState *stManScroll; QState *stAutoScroll; FilteredMouseClickTransition* trPressed2Idle; FilteredMouseMoveTransition* trPressed2Man; QSignalTransition* trTapHold; QMouseEventTransition* trManScrolling; FilteredMouseClickTransition* trIdle2Pressed; FilteredMouseClickTransition* trMan2Auto; FilteredMouseClickTransition* trMan2Idle; AutoscrollTransition* trAuto2Idle; FilteredMouseClickTransition* trAuto2Man; FilteredMouseClickTransition* trDoubleclick; QPoint firstPress; QPoint curPos; QPoint oldPos; QPoint oldFilteredPos; QPoint oldAutoPos; QPoint oldSpeedPos; QPoint speed; QLineF speedVector; QTimer speedTimer; QTimer dblclickTimer; QTimer tapHoldTimer; QTimeLine scrollTimeline; Qt::ScrollBarPolicy oldHzPolicy; Qt::ScrollBarPolicy oldVtPolicy; #ifdef Q_OS_SYMBIAN MTouchFeedback* iTouchFeedback; // For Tactile feedback #endif }; Q_DECLARE_OPERATORS_FOR_FLAGS(MouseMachine::Options) #endif // MOUSEMACHINE_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MouseMachine/README����������������������������������������������������0000664�0000000�0000000�00000000614�11770671653�0021335�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MouseMachine is Qt class prinicpally allowing kinetic scrolling on any widget. It is largely inspired by the "flickcharm" class from Nokia. As an exercise, I wanted to reimplement it as a QStateMachine and with a signal/slot interface. The various interactions like tap, double-tap, tap-and-hold are all signals with a QPoint. The class requires (I think) Qt 4.6.x The code is LGPL licensed. ��������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MyMessageHandler.h�����������������������������������������������������0000664�0000000�0000000�00000005334�11770671653�0021445�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MYMESSAGEHANDLER_H #define MYMESSAGEHANDLER_H #if defined(Q_OS_WIN) extern Q_CORE_EXPORT void qWinMsgHandler(QtMsgType t, const char* str); #endif #ifdef LOG_TO_FILE #include <QFile> #include <QTextStream> QFile* pLogFile; QTextStream ts; #endif void myMessageOutput(QtMsgType msgType, const char *buf) { // From corelib/global/qglobal.cpp : qt_message_output //#if defined(Q_OS_WIN) && !defined(QT_NO_DEBUG_OUTPUT) // qWinMsgHandler(msgType, buf); //#endif #ifdef LOG_TO_FILE if (pLogFile) { ts << buf << endl; } #endif #if defined(Q_CC_MWERKS) && defined(Q_OS_MACX) mac_default_handler(buf); #elif defined(Q_OS_WINCE) QString fstr = QString::fromLatin1(buf); fstr += QLatin1Char('\n'); OutputDebugString(reinterpret_cast<const wchar_t *> (fstr.utf16())); #elif defined(Q_OS_SYMBIAN) // RDebug::Print has a cap of 256 characters so break it up _LIT(format, "[Qt Message] %S"); const int maxBlockSize = 256 - ((const TDesC &)format).Length(); const TPtrC8 ptr(reinterpret_cast<const TUint8*>(buf)); HBufC* hbuffer = q_check_ptr(HBufC::New(qMin(maxBlockSize, ptr.Length()))); for (int i = 0; i < ptr.Length(); i += hbuffer->Length()) { hbuffer->Des().Copy(ptr.Mid(i, qMin(maxBlockSize, ptr.Length()-i))); RDebug::Print(format, hbuffer); } delete hbuffer; #else fprintf(stderr, "%s\n", buf); fflush(stderr); #endif if (msgType == QtFatalMsg || (msgType == QtWarningMsg && (!qgetenv("QT_FATAL_WARNINGS").isNull())) ) { #if defined(Q_CC_MSVC) && defined(QT_DEBUG) && defined(_DEBUG) && defined(_CRT_ERROR) // get the current report mode int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); _CrtSetReportMode(_CRT_ERROR, reportMode); #if !defined(Q_OS_WINCE) int ret = _CrtDbgReport(_CRT_ERROR, __FILE__, __LINE__, QT_VERSION_STR, buf); #else int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(QT_VERSION_STR), reinterpret_cast<const wchar_t *> (QString::fromLatin1(buf).utf16())); #endif if (ret == 0 && reportMode & _CRTDBG_MODE_WNDW) return; // ignore else if (ret == 1) _CrtDbgBreak(); #endif #if defined(Q_OS_SYMBIAN) __DEBUGGER(); // on the emulator, get the debugger to kick in if there's one around TBuf<256> tmp; TPtrC8 ptr(reinterpret_cast<const TUint8*>(buf)); TInt len = Min(tmp.MaxLength(), ptr.Length()); tmp.Copy(ptr.Left(len)); // Panic the current thread. We don't use real panic codes, so 0 has no special meaning. User::Panic(tmp, 0); #elif (defined(Q_OS_UNIX) || defined(Q_CC_MINGW)) abort(); // trap; generates core dump #else exit(1); // goodbye cruel world #endif } } #endif // MYMESSAGEHANDLER_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MyPreferences.cpp������������������������������������������������������0000664�0000000�0000000�00000014330�11770671653�0021353�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: MyPreferences // // Description: // // // Author: cbro <cbro@semperpax.com> (C) 2008, 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "MyPreferences.h" #include <QSettings> #include <QToolButton> #define PARAM_IMPLEMENT_BOOL(Param, Category, Default) \ bool mb_##Category##Param = false; \ void MyPreferences::set##Category##Param(bool theValue) \ { \ m_##Category##Param = theValue; \ Sets->setValue(#Category"/"#Param, theValue); \ } \ bool MyPreferences::get##Category##Param() \ { \ if (!::mb_##Category##Param) { \ ::mb_##Category##Param = true; \ m_##Category##Param = Sets->value(#Category"/"#Param, Default).toBool(); \ } \ return m_##Category##Param; \ } \ void MyPreferences::initWidget##Category##Param() \ { \ ui->w##Category##Param->setProperty("checked", get##Category##Param()); \ } \ void MyPreferences::retrieveWidget##Category##Param() \ { \ set##Category##Param(ui->w##Category##Param->property("checked").toBool()); \ } #define PARAM_IMPLEMENT_STRING(Param, Category, Default) \ bool mb_##Category##Param = false; \ void MyPreferences::set##Category##Param(QString theValue) \ { \ m_##Category##Param = theValue; \ Sets->setValue(#Category"/"#Param, theValue); \ } \ QString MyPreferences::get##Category##Param() \ { \ if (!::mb_##Category##Param) { \ ::mb_##Category##Param = true; \ m_##Category##Param = Sets->value(#Category"/"#Param, Default).toString(); \ } \ return m_##Category##Param; \ } \ void MyPreferences::initWidget##Category##Param() \ { \ if(QString(ui->w##Category##Param->metaObject()->className()) == "QLineEdit") \ ui->w##Category##Param->setProperty("text", get##Category##Param()); \ else \ if(QString(ui->w##Category##Param->metaObject()->className()) == "QComboBox") \ ui->w##Category##Param->setProperty("currentText", get##Category##Param()); \ } \ void MyPreferences::retrieveWidget##Category##Param() \ { \ if(QString(ui->w##Category##Param->metaObject()->className()) == "QLineEdit") \ set##Category##Param(ui->w##Category##Param->property("text").toString()); \ else \ if(QString(ui->w##Category##Param->metaObject()->className()) == "QComboBox") \ set##Category##Param(ui->w##Category##Param->property("currcurrentTextentIndex").toString()); \ } #define PARAM_IMPLEMENT_INT(Param, Category, Default) \ bool mb_##Category##Param = false; \ void MyPreferences::set##Category##Param(int theValue) \ { \ m_##Category##Param = theValue; \ Sets->setValue(#Category"/"#Param, theValue); \ } \ int MyPreferences::get##Category##Param() \ { \ if (!::mb_##Category##Param) { \ ::mb_##Category##Param = true; \ m_##Category##Param = Sets->value(#Category"/"#Param, Default).toInt(); \ } \ return m_##Category##Param; \ } \ void MyPreferences::initWidget##Category##Param() \ { \ if(QString(ui->w##Category##Param->metaObject()->className()) == "QComboBox") \ ui->w##Category##Param->setProperty("currentIndex", get##Category##Param()); \ else \ ui->w##Category##Param->setProperty("value", get##Category##Param()); \ } \ void MyPreferences::retrieveWidget##Category##Param() \ { \ if(QString(ui->w##Category##Param->metaObject()->className()) == "QComboBox") \ set##Category##Param(ui->w##Category##Param->property("currentIndex").toInt()); \ else \ set##Category##Param(ui->w##Category##Param->property("value").toInt()); \ } #define PARAM_IMPLEMENT_REAL(Param, Category, Default) \ bool mb_##Category##Param = false; \ void MyPreferences::set##Category##Param(qreal theValue) \ { \ m_##Category##Param = theValue; \ Sets->setValue(#Category"/"#Param, theValue); \ } \ qreal MyPreferences::get##Category##Param() \ { \ if (!::mb_##Category##Param) { \ ::mb_##Category##Param = true; \ m_##Category##Param = Sets->value(#Category"/"#Param, Default).toDouble(); \ } \ return m_##Category##Param; \ } \ void MyPreferences::initWidget##Category##Param() \ { \ ui->w##Category##Param->setProperty("value", get##Category##Param()); \ } \ void MyPreferences::retrieveWidget##Category##Param() \ { \ set##Category##Param(ui->w##Category##Param->property("value").toDouble()); \ } /***************************/ #include "ui_MyPreferences.h" MyPreferences* MyPreferences::m_prefInstance = 0; MyPreferences::MyPreferences(QWidget *parent) : QWidget(parent), ui(new Ui::MyPreferencesDialog) { ui->setupUi(this); ui->dummy->setVisible(false); QSize btSz(32, 32); QToolButton* btOk = new QToolButton(this); btOk->setIcon(QIcon::fromTheme("go-down", QPixmap(":icons/down"))); btOk->setIconSize(btSz); QToolButton* btExit = new QToolButton(this); btExit->setIcon(QIcon::fromTheme("application-exit", QPixmap(":icons/exit"))); btExit->setIconSize(btSz); ui->buttonBox->addButton(btOk, QDialogButtonBox::AcceptRole); ui->buttonBox->addButton(btExit, QDialogButtonBox::RejectRole); Sets = new QSettings(); } MyPreferences::~MyPreferences() { delete Sets; delete ui; } void MyPreferences::accept() { m_dialogResult = QDialog::Accepted; } void MyPreferences::reject() { m_dialogResult = QDialog::Rejected; } bool MyPreferences::execPreferences() { QEventLoop loop; connect(ui->buttonBox, SIGNAL(accepted()), &loop, SLOT(quit())); connect(ui->buttonBox, SIGNAL(rejected()), &loop, SLOT(quit())); loop.exec(QEventLoop::DialogExec); if (m_dialogResult == QDialog::Accepted) { } else { QCoreApplication::quit(); } return (m_dialogResult == QDialog::Accepted); } void MyPreferences::changeEvent(QEvent *e) { QWidget::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MyPreferences.h��������������������������������������������������������0000664�0000000�0000000�00000005204�11770671653�0021020�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: MyPreferences // // Description: // // // Author: cbro <cbro@semperpax.com> (C) 2008, 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef MYPREFERENCES_H #define MYPREFERENCES_H #include <QDialog> class QSettings; #define PARAM_DECLARE_BOOL(Param, Category) \ private: \ bool m_##Category##Param; \ void initWidget##Category##Param(); \ void retrieveWidget##Category##Param(); \ public slots: \ void set##Category##Param(bool theValue); \ public: \ bool get##Category##Param(); #define PARAM_DECLARE_STRING(Param, Category) \ private: \ QString m_##Category##Param; \ void initWidget##Category##Param(); \ void retrieveWidget##Category##Param(); \ public slots: \ void set##Category##Param(QString theValue); \ public: \ QString get##Category##Param(); #define PARAM_DECLARE_INT(Param, Category) \ private: \ int m_##Category##Param; \ void initWidget##Category##Param(); \ void retrieveWidget##Category##Param(); \ public slots: \ void set##Category##Param(int theValue); \ public: \ int get##Category##Param(); #define PARAM_DECLARE_REAL(Param, Category) \ private: \ qreal m_##Category##Param; \ void initWidget##Category##Param(); \ void retrieveWidget##Category##Param(); \ public slots: \ void set##Category##Param(qreal theValue); \ public: \ qreal get##Category##Param(); #define SAFE_DELETE(x) {delete (x); x = NULL;} #define STRINGIFY(x) XSTRINGIFY(x) #define XSTRINGIFY(x) #x #define SEMPERMERK_PREFS MyPreferences::instance() /***************************/ namespace Ui { class MyPreferencesDialog; } class MyPreferences : public QWidget { Q_OBJECT public: MyPreferences(QWidget *parent = 0); ~MyPreferences(); static MyPreferences* instance() { if (!m_prefInstance) { m_prefInstance = new MyPreferences; } return m_prefInstance; } static MyPreferences* m_prefInstance; public slots: bool execPreferences(); private slots: void accept(); void reject(); protected: void changeEvent(QEvent *e); private: Ui::MyPreferencesDialog *ui; int m_dialogResult; QSettings * Sets; public: PARAM_DECLARE_INT(UserAgent, General) PARAM_DECLARE_STRING(LastPicDownloadDir, General) PARAM_DECLARE_STRING(LastDataDownloadDir, General) PARAM_DECLARE_INT(InstantHistorySize, Caching) PARAM_DECLARE_BOOL(ControlAutoCollapse, Ui) PARAM_DECLARE_BOOL(BookmarkAutoBrowse, Ui) }; #endif // MYPREFERENCES_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/MyPreferences.ui�������������������������������������������������������0000664�0000000�0000000�00000004077�11770671653�0021215�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <author>Chris Browet</author> <class>MyPreferencesDialog</class> <widget class="QWidget" name="MyPreferencesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>416</width> <height>478</height> </rect> </property> <property name="windowTitle"> <string>Dialog</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QFrame" name="dummy"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QHBoxLayout" name="horizontalLayout"/> </widget> </item> <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::NoButton</set> </property> </widget> </item> </layout> </widget> <layoutdefault spacing="4" margin="6"/> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>MyPreferencesDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>257</x> <y>468</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>MyPreferencesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>325</x> <y>468</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/README.TXT�������������������������������������������������������������0000664�0000000�0000000�00000000000�11770671653�0017423�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/semperMerk.pro���������������������������������������������������������0000664�0000000�0000000�00000006232�11770671653�0020736�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������VERSION = 1.0.0 QT += network \ xml \ svg DEFINES += _MOBILE MOBILE = 1 symbian: { CONFIG(release): DEFINES += QT_NO_DEBUG_OUTPUT } # DEFINES += LOG_TO_FILE MERKAARTOR_SRC_DIR = $$PWD/../src COMMON_DIR = $$MERKAARTOR_SRC_DIR/binaries OUTPUT_DIR = $$MERKAARTOR_SRC_DIR/binaries DESTDIR = $$OUTPUT_DIR/bin INCLUDEPATH += $$PWD/src $$PWD/../include $$PWD/../interfaces $MOC_DIR DEPENDPATH += $$PWD/../interfaces win32 { INCLUDEPATH += $$PWD/../binaries/include LIBS += -L$$PWD/../binaries/lib } #win32-msvc* { # LIBS += -lzlib #} else { # LIBS += -lz #} #Qt Version QT_VERSION = $$[QT_VERSION] QT_VERSION = $$split(QT_VERSION, ".") QT_VER_MAJ = $$member(QT_VERSION, 0) QT_VER_MIN = $$member(QT_VERSION, 1) DEFINES += VERSION=0.1 DEFINES += REVISION= #Include file(s) include(../src/common/common.pri) include(../src/Backend/Backend.pri) include(../interfaces/Interfaces.pri) include(../src/PaintStyle/PaintStyle.pri) include(../src/PaintStyle/PaintStyleEditor.pri) include(../src/Features/Features.pri) include(../src/Layers/Layers.pri) include(../src/Preferences/Preferences.pri) include(../src/Sync/Sync.pri) include(../src/Commands/Commands.pri) include(../src/Interactions/Interactions.pri) include (../src/Docks/Docks.pri) include(../src/QMapControl.pri) include(../src/ImportExport/ImportExport.pri) include(../src/Render/Render.pri) isEmpty(MOBILE) { include(../src/qextserialport/qextserialport.pri) } include(../src/GPS/GPS.pri) include(../src/Tools/Tools.pri) include(../src/TagTemplate/TagTemplate.pri) include(../src/NameFinder/NameFinder.pri) include(../src/Utils/Utils.pri) HEADERS += \ src/TitleBar.h \ src/HomeView.h \ src/AddressBar.h \ src/BookmarksView.h \ src/BookmarksDelegate.h \ src/ZoomStrip.h \ src/ControlStrip.h \ src/BookmarkBar.h \ src/ControlButton.h \ MyPreferences.h \ MouseMachine/MouseMachine.h \ MyMessageHandler.h \ src/BookmarksModel.h \ src/MainWindow.h \ src/BookmarkItem.h \ src/ViewMenu.h SOURCES += src/Main.cpp \ src/TitleBar.cpp \ src/HomeView.cpp \ src/AddressBar.cpp \ src/BookmarksView.cpp \ src/BookmarksDelegate.cpp \ src/ZoomStrip.cpp \ src/ControlStrip.cpp \ src/BookmarkBar.cpp \ MyPreferences.cpp \ MouseMachine/MouseMachine.cpp \ src/BookmarksModel.cpp \ src/MainWindow.cpp \ src/BookmarkItem.cpp \ src/ViewMenu.cpp FORMS += MyPreferences.ui \ src/BookmarkBar.ui \ src/ViewMenu.ui RESOURCES += \ # src/semperWeb.qrc \ src/retinaIcons.qrc \ src/resources/resources.qrc symbian { TARGET.UID3 = 0x200398E6 ICON = src/resources/Merkaartor.svg RSS_RULES = "group_name=\"SemperPax\";" vendorinfo = "; Localised Vendor name" \ "%{\"SemperPax\"}" \ " " \ "; Unique Vendor name" \ ":\"SemperPax\"" \ " " default_deployment.pkg_prerules += vendorinfo LIBS += -lesock \ -linsock TARGET.CAPABILITY = NetworkServices SwEvent ReadDeviceData Location TARGET.EPOCHEAPSIZE = 0x500000 \ 0x5000000 } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/�������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016666�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/AddressBar.cpp�����������������������������������������������������0000664�0000000�0000000�00000006174�11770671653�0021414�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "AddressBar.h" #include <QtCore> #include <QtGui> class LineEdit: public QLineEdit { public: LineEdit(QWidget *parent = 0): QLineEdit(parent) {} void paintEvent(QPaintEvent *event) { QLineEdit::paintEvent(event); if (text().isEmpty()) { QPainter p(this); int flags = Qt::AlignLeft | Qt::AlignVCenter; p.setPen(palette().color(QPalette::Disabled, QPalette::Text)); p.drawText(rect().adjusted(10, 0, 0, 0), flags, "Enter address or search terms"); p.end(); } } }; AddressBar::AddressBar(QWidget *parent) : QWidget(parent) { QSize btSize(32, 32); m_lineEdit = new LineEdit(this); QFont fnt = m_lineEdit->font(); fnt.setPixelSize(20); m_lineEdit->setFont(fnt); connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(processAddress())); m_goButton = new QToolButton(this); // m_toolButton->setText("Go"); m_goButton->setIcon(QPixmap(":/icons/forward")); m_goButton->setIconSize(btSize); connect(m_goButton, SIGNAL(clicked()), SLOT(processAddress())); QHBoxLayout *layout = new QHBoxLayout(this); layout->setMargin(0); layout->setSpacing(2); layout->addWidget(m_lineEdit); layout->addWidget(m_goButton); // setFocusProxy(m_lineEdit); } void AddressBar::processAddress() { if (m_lineEdit->text().isEmpty()) return; QString url = m_lineEdit->text(); if (!url.contains('.') || url.contains(' ')) url = QString("http://www.google.com/search?q=%1").arg(url); QUrl u(url); emit addressEntered(QString(u.toEncoded())); } void AddressBar::setUrl(const QString& theUrl) { m_lineEdit->setText(theUrl); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/AddressBar.h�������������������������������������������������������0000664�0000000�0000000�00000003654�11770671653�0021061�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef ADDRESSBAR_H #define ADDRESSBAR_H #include <QWidget> class QLineEdit; class QToolButton; class AddressBar : public QWidget { Q_OBJECT public: AddressBar(QWidget *parent = 0); void setUrl(const QString& theUrl); signals: void addressEntered(const QString &address); void back(); private slots: void processAddress(); private: QLineEdit *m_lineEdit; QToolButton *m_goButton; QToolButton *m_backButton; }; #endif // ADDRESSBAR_H ������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarkBar.cpp����������������������������������������������������0000664�0000000�0000000�00000001734�11770671653�0021571�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "BookmarkBar.h" #include <QtCore> #include <QtGui> BookmarkBar::BookmarkBar(QWidget *parent) : QWidget(parent) { ui.setupUi(this); connect(ui.m_updButton, SIGNAL(clicked()), SLOT(processBookmark())); connect(ui.m_delButton, SIGNAL(clicked()), SLOT(delBookmark())); connect(ui.m_fldrButton, SIGNAL(clicked()), SLOT(processFolder())); } void BookmarkBar::processBookmark() { if (!ui.m_nameEdit->text().isEmpty() && !ui.m_urlEdit->text().isEmpty()) emit bookmarkEntered(ui.m_nameEdit->text(), ui.m_urlEdit->text()); } void BookmarkBar::processFolder() { if (!ui.m_nameEdit->text().isEmpty()) emit bookmarkEntered(ui.m_nameEdit->text(), QString()); } void BookmarkBar::delBookmark() { if (!ui.m_nameEdit->text().isEmpty()) emit bookmarkDeleted(ui.m_nameEdit->text()); } void BookmarkBar::slotBookmarkSelected(const QString& name, const QString& url) { ui.m_nameEdit->setText(name); ui.m_urlEdit->setText(url); } ������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarkBar.h������������������������������������������������������0000664�0000000�0000000�00000001140�11770671653�0021225�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef BOOKMARKBAR_H #define BOOKMARKBAR_H #include <QWidget> #include "ui_BookmarkBar.h" class QLineEdit; class QToolButton; class BookmarkBar : public QWidget { Q_OBJECT public: BookmarkBar(QWidget *parent = 0); protected: signals: void bookmarkEntered(const QString &name, const QString &url); void bookmarkDeleted(const QString &name); public slots: void slotBookmarkSelected(const QString& name, const QString& url); private slots: void processBookmark(); void processFolder(); void delBookmark(); private: Ui::BookmarkBar ui; }; #endif // BOOKMARKBAR_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarkBar.ui�����������������������������������������������������0000664�0000000�0000000�00000003171�11770671653�0021421�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>BookmarkBar</class> <widget class="QWidget" name="BookmarkBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>212</width> <height>92</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QGridLayout" name="gridLayout"> <property name="margin"> <number>4</number> </property> <property name="spacing"> <number>4</number> </property> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Title</string> </property> </widget> </item> <item row="2" column="0" colspan="4"> <widget class="QLineEdit" name="m_nameEdit"/> </item> <item row="3" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> <string>URL</string> </property> </widget> </item> <item row="4" column="0" colspan="4"> <widget class="QLineEdit" name="m_urlEdit"/> </item> <item row="0" column="2"> <widget class="QToolButton" name="m_delButton"> <property name="text"> <string>Del</string> </property> </widget> </item> <item row="0" column="3"> <widget class="QToolButton" name="m_fldrButton"> <property name="text"> <string>Fldr</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QToolButton" name="m_updButton"> <property name="text"> <string>Upd</string> </property> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarkItem.cpp���������������������������������������������������0000664�0000000�0000000�00000002311�11770671653�0021753�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "BookmarkItem.h" BookmarkItem::BookmarkItem() : QStandardItem() { m_bookmark.title = QString(); m_bookmark.uri = QString(); } BookmarkItem::BookmarkItem(const QString & text) : QStandardItem(text) { m_bookmark.title = text; m_bookmark.uri = QString(); } BookmarkItem::BookmarkItem(const BookmarkItem &other) : QStandardItem(other) { m_bookmark = other.m_bookmark; } BookmarkItem & BookmarkItem::operator=(const BookmarkItem &other) { if (this != &other) { QStandardItem::operator =(other); m_bookmark = other.m_bookmark; } return *this; } BookmarkItem::~BookmarkItem() { } MobileBookmark& BookmarkItem::bookmark() { return m_bookmark; } BookmarkItem * BookmarkItem::BookmarkItem::clone() const { BookmarkItem* i = new BookmarkItem(m_bookmark.title); i->m_bookmark = m_bookmark; return i; } void BookmarkItem::read(QDataStream &in) { QStandardItem::read(in); in >> m_bookmark.title; in >> m_bookmark.uri; } void BookmarkItem::write(QDataStream &out) const { QStandardItem::write(out); out << m_bookmark.title; out << m_bookmark.uri; } bool BookmarkItem::isFolder() { return m_bookmark.uri.isEmpty(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarkItem.h�����������������������������������������������������0000664�0000000�0000000�00000001421�11770671653�0021421�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef BOOKMARKITEM_H #define BOOKMARKITEM_H #include "BookmarksModel.h" struct MobileBookmark { QString title; QString uri; }; class BookmarkItem : public QObject, public QStandardItem { Q_OBJECT Q_PROPERTY(bool isFolder READ isFolder) friend class BookmarksModel; public: BookmarkItem(); BookmarkItem(const QString & text); BookmarkItem(const BookmarkItem &other); ~BookmarkItem(); int type () const { return QStandardItem::UserType + 1; } BookmarkItem * clone () const; public: MobileBookmark& bookmark(); BookmarkItem &operator=(const BookmarkItem &other); bool isFolder(); void read(QDataStream &in); void write(QDataStream &out) const; private: MobileBookmark m_bookmark; }; #endif // BOOKMARKITEM_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarksDelegate.cpp����������������������������������������������0000664�0000000�0000000�00000014030�11770671653�0022753�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "BookmarksDelegate.h" #include "BookmarkItem.h" #include "BookmarksView.h" #include <QDebug> #include <QPainter> #define RADIUS 10 #define SPACER 10 #define scaleFactor1 0.4 #define scaleFactor2 0.8 BookmarksDelegate::BookmarksDelegate(BookmarksView *aParent) : QItemDelegate(aParent) , mViewPtr(aParent) { } BookmarksDelegate::~BookmarksDelegate() { } void BookmarksDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if(!mViewPtr) return; painter->save(); QColor bkgrColor = QColor(0xAA,0xAA,0xAA); QColor folderColor = QColor(0x33, 0x33, 0x33); QPen borderPen(bkgrColor.darker()); if(!isFolder(index)) { QRadialGradient itemGradient(0.3*(qreal)option.rect.width()+option.rect.left(), -2*(qreal)option.rect.height()+option.rect.top(), 0.8*(qreal)option.rect.width(), 0.3*(qreal)option.rect.width()+option.rect.left(), -2*(qreal)option.rect.height()+option.rect.top()); itemGradient.setColorAt(0.0, Qt::white); itemGradient.setColorAt(1.0, bkgrColor); if(isLast(index)) { QPainterPath endPath; endPath.moveTo(option.rect.topLeft()); endPath.lineTo(option.rect.bottomLeft()-QPoint(0, RADIUS)); endPath.arcTo(option.rect.left(), option.rect.bottom()-2*RADIUS, 2*RADIUS, 2*RADIUS, 180, 90); endPath.lineTo(option.rect.bottomRight()-QPoint(RADIUS, 0)); endPath.arcTo(option.rect.right()-2*RADIUS, option.rect.bottom()-2*RADIUS, 2*RADIUS, 2*RADIUS, 270, 90); endPath.lineTo(option.rect.topRight()); //painter->setBrush( bkgrColor ); painter->setBrush(itemGradient); painter->setPen(borderPen); painter->drawPath(endPath); } else // middle elements { //painter->setBrush( bkgrColor ); painter->setBrush(itemGradient); painter->setPen(Qt::NoPen); painter->drawRect(option.rect); painter->setPen(borderPen); // vertical lines painter->drawLine(option.rect.topLeft(), option.rect.bottomLeft()); painter->drawLine(option.rect.topRight(), option.rect.bottomRight()); // horizontal lines painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); } QRectF brect = option.rect; brect.setLeft(brect.left()+SPACER); painter->setFont(option.font); painter->drawText(brect, Qt::AlignVCenter, qVariantValue<QString>(index.data())); } else // doesn't have parent { QRadialGradient itemGradient(0.3*(qreal)option.rect.width()+option.rect.left(), -2*(qreal)option.rect.height()+option.rect.top(), 0.8*(qreal)option.rect.width(), 0.3*(qreal)option.rect.width()+option.rect.left(), -2*(qreal)option.rect.height()+option.rect.top()); itemGradient.setColorAt(0.0, Qt::white); itemGradient.setColorAt(1.0, folderColor); QPainterPath titlePath; if(isExpanded(index)) { titlePath.moveTo(option.rect.bottomLeft()); titlePath.lineTo(option.rect.topLeft()+QPoint(0, RADIUS)); titlePath.arcTo(option.rect.left(), option.rect.top(), 2*RADIUS, 2*RADIUS, 180, -90); titlePath.lineTo(option.rect.topRight()-QPoint(RADIUS, 0)); titlePath.arcTo(option.rect.right()-2*RADIUS, option.rect.top(), 2*RADIUS, 2*RADIUS, 90, -90); titlePath.lineTo(option.rect.bottomRight()); titlePath.closeSubpath(); } else { titlePath.lineTo(option.rect.topLeft()+QPoint(0, RADIUS)); titlePath.arcTo(option.rect.left(), option.rect.top(), 2*RADIUS, 2*RADIUS, 180, -90); titlePath.lineTo(option.rect.topRight()-QPoint(RADIUS, 0)); titlePath.arcTo(option.rect.right()-2*RADIUS, option.rect.top(), 2*RADIUS, 2*RADIUS, 90, -90); titlePath.lineTo(option.rect.bottomRight()-QPoint(0, RADIUS)); titlePath.arcTo(option.rect.right()-2*RADIUS, option.rect.bottom()-2*RADIUS, 2*RADIUS, 2*RADIUS, 0, -90); titlePath.lineTo(option.rect.bottomLeft()+QPoint(RADIUS, 0)); titlePath.arcTo(option.rect.left(), option.rect.bottom()-2*RADIUS, 2*RADIUS, 2*RADIUS, 270, -90); titlePath.closeSubpath(); } painter->setBrush(itemGradient); painter->setPen(borderPen); painter->drawPath(titlePath); QRectF brect = option.rect; brect.setLeft(brect.left()+SPACER); painter->setFont(option.font); painter->drawText(brect, Qt::AlignVCenter, qVariantValue<QString>(index.data())); } //// HIGHLIGHTING SELECTED ITEM //if (option.state & QStyle::State_Selected) //painter->fillRect(option.rect, option.palette.highlight()); painter->restore(); } QSize BookmarksDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(option) return QSize(100,40); } bool BookmarksDelegate::hasParent( const QModelIndex &index ) const { if( index.parent().isValid() ) return true; else return false; } bool BookmarksDelegate::isFolder( const QModelIndex &index ) const { BookmarkItem *item=dynamic_cast<BookmarkItem*>(mViewPtr->model()->itemFromIndex(index)); Q_ASSERT(item); return item->bookmark().uri.isEmpty(); } bool BookmarksDelegate::isLast( const QModelIndex &index ) const { if(!hasParent(index)) return false; // what should be returned here? if(index.row() >= (mViewPtr->model()->rowCount(index.parent())-1)) return true; else return false; } bool BookmarksDelegate::isExpanded( const QModelIndex &index ) const { if( !mViewPtr ) return false; else return mViewPtr->view()->isExpanded( index ); } bool BookmarksDelegate::isPointFromRect(const QPoint &aPoint, const QRect &aRect) const { if( (aPoint.x()>=aRect.left() && aPoint.x()<=aRect.right()) && (aPoint.y()>=aRect.top() && aPoint.y()<=aRect.bottom()) ) return true; return false; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarksDelegate.h������������������������������������������������0000664�0000000�0000000�00000001754�11770671653�0022431�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef DELEGATE_H #define DELEGATE_H #include <QItemDelegate> #include <QTreeView> #include <QPointer> class BookmarksView; class BookmarksDelegate : public QItemDelegate { Q_OBJECT public: BookmarksDelegate(BookmarksView *aParent); // the delegate 'owner' has to be specified in the constructor - it's used to obtain visualRect of selected item/index ~BookmarksDelegate(); void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; bool isPointFromRect(const QPoint &aPoint, const QRect &aRect) const; private: bool hasParent( const QModelIndex &index ) const; bool isFolder(const QModelIndex &index) const; bool isLast( const QModelIndex &index ) const; bool isExpanded( const QModelIndex &index ) const; private: QPointer<BookmarksView> mViewPtr; }; #endif /* DELEGATE_H */ ��������������������merkaartor-0.18.1/semperMerk/src/BookmarksModel.cpp�������������������������������������������������0000664�0000000�0000000�00000000477�11770671653�0022313�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "BookmarksModel.h" #include "BookmarkItem.h" BookmarksModel::BookmarksModel(QObject* parent) : QStandardItemModel(parent) { setItemPrototype(new BookmarkItem); } BookmarksModel::BookmarksModel(int rows, int columns, QObject* parent) : QStandardItemModel(rows, columns, parent) { } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarksModel.h���������������������������������������������������0000664�0000000�0000000�00000000526�11770671653�0021753�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef BOOKMARKSMODEL_H #define BOOKMARKSMODEL_H #include <QStandardItemModel> class BookmarkItem; class BookmarksModel : public QStandardItemModel { Q_OBJECT public: BookmarksModel(QObject * parent = 0); BookmarksModel(int rows, int columns, QObject * parent = 0); public: }; #endif // BOOKMARKSMODEL_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarksView.cpp��������������������������������������������������0000664�0000000�0000000�00000024405�11770671653�0022162�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "BookmarksView.h" #include "BookmarksDelegate.h" #include "BookmarkItem.h" BookmarksView::BookmarksView(QWidget *parent) : QWidget(parent) { QString sData; QList<QStandardItem *> items; fromXml(); #if 1 int rowCount; if (!m_model.rowCount()) { qDebug() << "Bookmarks: " << QDir::homePath() + "/Bookmarks.bin"; QFile f(QDir::homePath() + "/Bookmarks.bin"); f.open(QIODevice::ReadOnly); if (f.isOpen()) { QDataStream d(&f); d >> rowCount; for (int i=0; i<rowCount; i++) { items.clear(); d >> sData; BookmarkItem* it = new BookmarkItem(sData); it->setEditable(false); it->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); d >> sData; it->bookmark().uri = sData; m_model.appendRow(it); } f.close();; } } #endif if (!m_model.rowCount()) { BookmarkItem* bk1 = new BookmarkItem("SemperPax"); bk1->bookmark().uri = "http://redmine.semperpax.com"; bk1->setEditable(false); bk1->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); m_model.appendRow(bk1); bk1 = new BookmarkItem("Twitter"); bk1->bookmark().uri = "http://mobile.twitter.com"; bk1->setEditable(false); bk1->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); m_model.appendRow(bk1); bk1 = new BookmarkItem("Wikipedia (Mobile)"); bk1->bookmark().uri = "http://mobile.wikipedia.org"; bk1->setEditable(false); bk1->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); m_model.appendRow(bk1); BookmarkItem* fld1 = new BookmarkItem("Google"); fld1->setEditable(false); fld1->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); m_model.appendRow(fld1); bk1 = new BookmarkItem("Google Search"); bk1->bookmark().uri = "http://www.google.com/m"; bk1->setEditable(false); bk1->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); fld1->setChild(fld1->rowCount(), bk1); bk1 = new BookmarkItem("GMail"); bk1->bookmark().uri = "http://m.gmail.com"; bk1->setEditable(false); bk1->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); fld1->setChild(fld1->rowCount(), bk1); } m_iconView = new QTreeView(this); m_iconView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); m_iconView->setDragEnabled(true); m_iconView->setAcceptDrops(true); m_iconView->setDropIndicatorShown(true); m_iconView->setDefaultDropAction(Qt::MoveAction); m_iconView->setSelectionBehavior(QAbstractItemView::SelectRows); m_iconView->setDragDropOverwriteMode(false); m_iconView->setExpandsOnDoubleClick(false); m_iconView->setAutoScroll(true); m_iconView->setModel(&m_model); connect(m_iconView, SIGNAL(clicked(const QModelIndex &)), SLOT(select(const QModelIndex &))); connect(m_iconView, SIGNAL(doubleClicked(const QModelIndex &)), SLOT(activate(const QModelIndex &))); m_iconView->setHeaderHidden(true); m_iconView->setRootIsDecorated(false); m_iconView->setIndentation(10); m_iconView->setAnimated(true); m_iconView->setUniformRowHeights(true); m_iconView->setItemDelegate(new BookmarksDelegate(this)); // charm = new MouseMachine(m_iconView, MouseMachine::AutoScroll); // connect(charm, SIGNAL(singleTap(QPoint)), SLOT(slotClicked(QPoint))); // connect(charm, SIGNAL(doubleTap(QPoint)), SLOT(slotDoubleClicked(QPoint))); // connect(charm, SIGNAL(tapAndHold(QPoint)), SLOT(slotTapAndHold(QPoint))); QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout); layout->setMargin(0); layout->addWidget(m_iconView); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } BookmarksView::~BookmarksView() { toXml(); } void BookmarksView::select(const QModelIndex &index) { BookmarkItem *item=static_cast<BookmarkItem*>(m_model.itemFromIndex(index)); QString name = item->bookmark().title; QString url = item->bookmark().uri; if (url.isEmpty()) m_iconView->setExpanded(index, !m_iconView->isExpanded(index)); emit bookmarkSelected(name, url); } void BookmarksView::activate(const QModelIndex &index) { BookmarkItem *item=static_cast<BookmarkItem*>(m_model.itemFromIndex(index)); if (!item) return; if (item->bookmark().uri.isEmpty()) m_iconView->setExpanded(index, !m_iconView->isExpanded(index)); else emit urlSelected(QUrl(item->bookmark().uri)); } void BookmarksView::bookmarkAdd(const QString& name, const QString &url, int seq) { QList<QStandardItem *> items = m_model.findItems(name, Qt::MatchRecursive | Qt::MatchExactly); if (items.size() == 0) { BookmarkItem *ibk; ibk = new BookmarkItem(name); ibk->bookmark().uri = url; ibk->setEditable(false); ibk->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); if (url.isEmpty()) ibk->setFlags(ibk->flags() | Qt::ItemIsDropEnabled); items.append(ibk); m_model.appendRow(items); } else { BookmarkItem *item=static_cast<BookmarkItem*>(items[0]); bool isfolder = url.isEmpty(); if (item->isFolder() != isfolder) { bookmarkAdd(QString("%1#%2").arg(name).arg(seq, 1), url, ++seq); } else { item->bookmark().uri = url; } } } void BookmarksView::bookmarkDel(const QString& name) { QList<QStandardItem *> items = m_model.findItems(name, Qt::MatchRecursive | Qt::MatchExactly); if (items.size() != 0) { QModelIndex ix = m_model.indexFromItem(items[0]); m_model.removeRow(ix.row(), ix.parent()); } } void BookmarksView::slotDoubleClicked(QPoint p) { QModelIndex index = m_iconView->indexAt(p); activate(index); } void BookmarksView::fromXmlFolder(QDomElement& e, BookmarkItem* fit) { QDomElement c = e.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Bookmark") { BookmarkItem* bk = new BookmarkItem(c.attribute("title")); bk->setEditable(false); bk->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); bk->bookmark().uri = c.attribute("uri"); fit->setChild(fit->rowCount(), bk); } else if (c.tagName() == "Folder") { BookmarkItem* bk = new BookmarkItem(c.attribute("title")); bk->setEditable(false); bk->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); fit->setChild(fit->rowCount(), bk); fromXmlFolder(c, bk); } c = c.nextSiblingElement(); } } void BookmarksView::fromXml() { qDebug() << "Bookmarks: " << QDir::homePath() + "/semperWebBookmarks.xml"; QFile f(QDir::homePath() + "/semperWebBookmarks.xml"); f.open(QIODevice::ReadOnly); if (f.isOpen()) { QDomDocument doc; doc.setContent(&f); f.close(); QDomElement bks = doc.documentElement(); while (!bks.isNull()) { if (bks.nodeName() == "BookmarkList") { QDomElement c = bks.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Bookmark") { BookmarkItem* bk = new BookmarkItem(c.attribute("title")); bk->setEditable(false); bk->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); bk->bookmark().uri = c.attribute("uri"); m_model.appendRow(bk); } else if (c.tagName() == "Folder") { BookmarkItem* bk = new BookmarkItem(c.attribute("title")); bk->setEditable(false); bk->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); m_model.appendRow(bk); fromXmlFolder(c, bk); } c = c.nextSiblingElement(); } } bks = bks.nextSiblingElement(); } } } void BookmarksView::toXmlFolder(QDomElement& e, QModelIndex& pindex) { BookmarkItem* pit = static_cast<BookmarkItem*>(m_model.itemFromIndex(pindex)); for (int i=0; i<pit->rowCount(); ++i) { QModelIndex ix = m_model.index(i, 0, pindex); BookmarkItem* it = static_cast<BookmarkItem*>(m_model.itemFromIndex(ix)); if (it->bookmark().uri.isEmpty()) { QDomElement fld = e.ownerDocument().createElement("Folder"); e.appendChild(fld); fld.setAttribute("title", it->bookmark().title); toXmlFolder(fld, ix); } else { QDomElement bk = e.ownerDocument().createElement("Bookmark"); e.appendChild(bk); bk.setAttribute("title", it->bookmark().title); bk.setAttribute("uri", it->bookmark().uri); } } } void BookmarksView::toXml() { QDomDocument doc; doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement rt = doc.createElement("BookmarkList"); doc.appendChild(rt); for (int i=0; i<m_model.rowCount(); ++i) { QModelIndex ix = m_model.index(i, 0); BookmarkItem* it = static_cast<BookmarkItem*>(m_model.itemFromIndex(ix)); if (it->bookmark().uri.isEmpty()) { QDomElement fld = doc.createElement("Folder"); rt.appendChild(fld); fld.setAttribute("title", it->bookmark().title); toXmlFolder(fld, ix); } else { QDomElement bk = doc.createElement("Bookmark"); rt.appendChild(bk); bk.setAttribute("title", it->bookmark().title); bk.setAttribute("uri", it->bookmark().uri); } } QByteArray ba = doc.toByteArray(); QFile f(QDir::homePath() + "/semperWebBookmarks.xml"); f.open(QIODevice::WriteOnly); if (f.isOpen()) { f.write(ba); f.close(); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BookmarksView.h����������������������������������������������������0000664�0000000�0000000�00000005001�11770671653�0021616�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef BOOKMARKSVIEW_H #define BOOKMARKSVIEW_H #include <QtGui> #include <QtXml> #include "BookmarksModel.h" #include "MouseMachine/MouseMachine.h" class QListWidgetItem; class QUrl; class BookmarksView : public QWidget { Q_OBJECT public: BookmarksView(QWidget *parent = 0); ~BookmarksView(); QTreeView* view() { return m_iconView; } BookmarksModel* model() { return &m_model; } void fromXml(); void toXml(); signals: void bookmarkSelected(const QString& name, const QString &url); void urlSelected(const QUrl &url); public slots: void bookmarkAdd(const QString& name, const QString &url, int seq=0); void bookmarkDel(const QString& name); private slots: void select(const QModelIndex &index); void activate(const QModelIndex &index); void slotDoubleClicked(QPoint p); private: BookmarksModel m_model; QTreeView *m_iconView; MouseMachine* charm; void fromXmlFolder(QDomElement &e, BookmarkItem *fit); void toXmlFolder(QDomElement &e, QModelIndex &pindex); }; #endif // BOOKMARKSVIEW_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BrowserCache.cpp���������������������������������������������������0000664�0000000�0000000�00000003350�11770671653�0021742�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "BrowserCache.h" #include <QIODevice> #include <QNetworkCacheMetaData> BrowserCache::BrowserCache(QObject *parent) : QAbstractNetworkCache(parent) { m_cache = new QCache<int, BrowserCacheItem>(3000000); } BrowserCache::~BrowserCache () { delete m_cache; } qint64 BrowserCache::cacheSize() const { return m_cache->size(); } QIODevice * BrowserCache::data(const QUrl &url) { BrowserCacheItem* a = m_cache->take(qHash(url.toString())); if (!a) return NULL; QBuffer* buf = new QBuffer(&a->data); buf->open(QIODevice::ReadWrite); return buf; } void BrowserCache::insert(QIODevice *device) { if (!m_devices.contains(device)) { delete device; return; } BrowserCacheItem* c = m_devices.take(device); m_cache->insert(qHash(c->meta.url().toString()), c, sizeof(BrowserCacheItem) + c->data.size()); delete device; } QNetworkCacheMetaData BrowserCache::metaData(const QUrl &url) { BrowserCacheItem* c = m_cache->object(qHash(url.toString())); if (c) return c->meta; else { QNetworkCacheMetaData ret; return ret; } } QIODevice * BrowserCache::prepare(const QNetworkCacheMetaData &metaData) { BrowserCacheItem* c = new BrowserCacheItem; c->meta = metaData; QBuffer* buf = new QBuffer(&c->data); buf->open(QIODevice::ReadWrite); m_devices[buf] = c; return buf; } bool BrowserCache::remove(const QUrl &url) { return m_cache->remove(qHash(url.toString())); } void BrowserCache::updateMetaData(const QNetworkCacheMetaData &metaData) { BrowserCacheItem* c = m_cache->object(qHash(metaData.url().toString())); if (c) { c->meta = metaData; } } void BrowserCache::clear() { m_cache->clear(); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BrowserCache.h�����������������������������������������������������0000664�0000000�0000000�00000001675�11770671653�0021417�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef BROWSERCACHE_H #define BROWSERCACHE_H #include <QAbstractNetworkCache> #include <QCache> #include <QBuffer> #include <QHash> struct BrowserCacheItem { QNetworkCacheMetaData meta; QByteArray data; }; class BrowserCache : public QAbstractNetworkCache { Q_OBJECT public: explicit BrowserCache(QObject *parent = 0); virtual ~BrowserCache (); public: virtual qint64 cacheSize () const; virtual QIODevice * data ( const QUrl & url ); virtual void insert ( QIODevice * device ); virtual QNetworkCacheMetaData metaData ( const QUrl & url ); virtual QIODevice * prepare ( const QNetworkCacheMetaData & metaData ); virtual bool remove ( const QUrl & url ); virtual void updateMetaData ( const QNetworkCacheMetaData & metaData ); public slots: virtual void clear (); private: QCache<int, BrowserCacheItem>* m_cache; QHash<QIODevice*, BrowserCacheItem*> m_devices; }; #endif // BROWSERCACHE_H �������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BrowserView.cpp����������������������������������������������������0000664�0000000�0000000�00000041375�11770671653�0021662�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "BrowserView.h" #include <QtGui> #include <QtNetwork> #include <QNetworkCookieJar> #include <QTimeLine> #include <QMessageBox> #include <QWebFrame> #include <Phonon> #include "MyPreferences.h" #include "MainWindow.h" #include "MWebView.h" #include "ControlStrip.h" #include "TitleBar.h" #include "ZoomStrip.h" #include "Downloader.h" #include "BrowserCache.h" class PersistentCookieJar : public QNetworkCookieJar { public: PersistentCookieJar(QObject *parent) : QNetworkCookieJar(parent) { load(); } ~PersistentCookieJar() { save(); } public: void save() { QList<QNetworkCookie> list = allCookies(); QByteArray data; foreach (QNetworkCookie cookie, list) { if (!cookie.isSessionCookie()) { data.append(cookie.toRawForm()); data.append("\n"); } } QSettings settings; settings.setValue("Cookies",data); } void load() { QSettings settings; QByteArray data = settings.value("Cookies").toByteArray(); setAllCookies(QNetworkCookie::parseCookies(data)); } }; /***************************/ BrowserView::BrowserView(MainWindow *parent) : QWidget(parent) , m_titleBar(0) , oldWebView(0) , curWebView(0) , expiredWebView(0) , m_webPage(0) , m_progress(0) , m_curHistIdx(-1) , m_downloader(0) , m_cache(0) { curWebView = new MWebView(this); curWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, false); m_webPage = new MWebPage(curWebView); m_webPage->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); connect(m_webPage, SIGNAL(linkClicked(QUrl)), this, SLOT(navigate(QUrl))); connect(m_webPage, SIGNAL(frameCreated (QWebFrame *)), this, SLOT(slotFrameCreated (QWebFrame *))); connect(m_webPage, SIGNAL(windowCloseRequested()), SLOT(backView())); #ifndef QT_NO_OPENSSL connect(m_webPage->networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(slotSslErrors(QNetworkReply*,QList<QSslError>))); #endif connect(m_webPage, SIGNAL(downloadRequested (const QNetworkRequest &)), SLOT(onDownloadRequested (const QNetworkRequest &))); connect(m_webPage, SIGNAL(unsupportedContent (QNetworkReply *)), SLOT(onUnsupportedContent (QNetworkReply *))); m_cookiejar = new PersistentCookieJar(this); if (!M_PREFS->getCachingInstantHistorySize()) { m_cache = new BrowserCache(this); m_webPage->networkAccessManager()->setCache(m_cache); } m_webPage->networkAccessManager()->setCookieJar(m_cookiejar); QWebFrame *frame = m_webPage->mainFrame(); connect(frame, SIGNAL(initialLayoutCompleted()), SLOT(slotFrameInitialLayoutCompleted())); frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); curWebView->setPage(m_webPage); m_titleBar = new TitleBar(this); // m_zoomStrip = new ZoomStrip(this); m_controlStrip = parent->controlStrip(); // QVBoxLayout *layout = new QVBoxLayout(this); // layout->setSpacing(0); // layout->setContentsMargins(0, 0, 0, 0); // setLayout(layout); // layout->addWidget(m_titleBar); // layout->addWidget(curWebView); // layout->addWidget(m_controlStrip); // m_timeLineFwd = new QTimeLine(800, this); m_timeLineFwd->setCurveShape(QTimeLine::EaseInOutCurve); m_timeLineFwd->setUpdateInterval(100); m_timeLineBack = new QTimeLine(800, this); m_timeLineBack->setCurveShape(QTimeLine::EaseInOutCurve); m_timeLineBack->setUpdateInterval(100); QTimer::singleShot(0, this, SLOT(initialize())); } BrowserView::~BrowserView() { delete m_cookiejar; } void BrowserView::initialize() { QPalette pal = curWebView->palette(); pal.setBrush(QPalette::Base, Qt::white); curWebView->setPalette(pal); connect(curWebView, SIGNAL(loadStarted()), SLOT(start())); connect(curWebView, SIGNAL(loadProgress(int)), SLOT(setProgress(int))); connect(curWebView, SIGNAL(loadFinished(bool)), SLOT(finish(bool))); connect(curWebView, SIGNAL(urlChanged(QUrl)), SLOT(updateHistory(QUrl))); connect(curWebView, SIGNAL(loadStarted()), m_controlStrip, SLOT(slotLoadingStarted())); connect(curWebView, SIGNAL(loadFinished(bool)), m_controlStrip, SLOT(slotLoadingFinished())); curWebView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // curWebView->setFocus(); curWebView->setGeometry(0, 0, width(), height()); curWebView->show(); gotoHomePage(); connect(m_timeLineFwd, SIGNAL(frameChanged(int)), SLOT(slideFwd(int))); connect(m_timeLineFwd, SIGNAL(finished()), SLOT(slideFwdDone())); connect(m_timeLineBack, SIGNAL(frameChanged(int)), SLOT(slideBack(int))); connect(m_timeLineBack, SIGNAL(finished()), SLOT(slideBackDone())); m_controlStrip->backAct->setEnabled(false); m_controlStrip->forwardAct->setEnabled(false); QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true); QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true); } void BrowserView::cleanupMemory() { } void BrowserView::addWebview(bool appendToQ) { if (appendToQ) { oldWebView = curWebView; m_webQ.append(oldWebView); if (m_webQ.size() > M_PREFS->getCachingInstantHistorySize()) { expiredWebView = m_webQ.takeFirst(); expiredWebView->deleteLater(); if (expiredWebView == oldWebView) oldWebView = NULL; expiredWebView = NULL; } if (m_timeLineFwd->state() == QTimeLine::NotRunning) { m_timeLineFwd->setFrameRange(curWebView->pos().x(), curWebView->pos().x() + curWebView->width()); m_timeLineFwd->start(); } } // dynamic_cast<PersistentCookieJar*>(m_webPage->networkAccessManager()->cookieJar())->save(); curWebView = NULL; m_webPage = NULL; curWebView = new MWebView(this); if (!curWebView) { cleanupMemory(); } m_webPage = new MWebPage(curWebView); if (!m_webPage) { cleanupMemory(); } if (!curWebView || !m_webPage) { QMessageBox::critical(0, tr("Memory Allocation error"), tr("Cannot allocate memory.\nBailing out...")); } m_webPage->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); connect(m_webPage, SIGNAL(linkClicked(QUrl)), this, SLOT(navigate(QUrl))); #ifndef QT_NO_OPENSSL connect(m_webPage->networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(slotSslErrors(QNetworkReply*,QList<QSslError>))); #endif connect(m_webPage, SIGNAL(frameCreated (QWebFrame *)), this, SLOT(slotFrameCreated (QWebFrame *))); connect(m_webPage, SIGNAL(downloadRequested (const QNetworkRequest &)), SLOT(onDownloadRequested (const QNetworkRequest &))); connect(m_webPage, SIGNAL(unsupportedContent (QNetworkReply *)), SLOT(onUnsupportedContent (QNetworkReply *))); connect(m_webPage, SIGNAL(rtspRequested(QUrl)), SLOT(showMedia (QUrl))); if (!M_PREFS->getCachingInstantHistorySize()) { if (!m_cache) m_cache = new BrowserCache(this); m_webPage->networkAccessManager()->setCache(m_cache); } m_webPage->networkAccessManager()->setCookieJar(m_cookiejar); m_cookiejar->setParent(0); QWebFrame *frame = m_webPage->mainFrame(); frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); connect(frame, SIGNAL(initialLayoutCompleted()), SLOT(slotFrameInitialLayoutCompleted())); curWebView->setPage(m_webPage); QPalette pal = curWebView->palette(); pal.setBrush(QPalette::Base, Qt::white); curWebView->setPalette(pal); connect(curWebView, SIGNAL(loadStarted()), SLOT(start())); connect(curWebView, SIGNAL(loadProgress(int)), SLOT(setProgress(int))); connect(curWebView, SIGNAL(loadFinished(bool)), SLOT(finish(bool))); connect(curWebView, SIGNAL(urlChanged(QUrl)), SLOT(updateHistory(QUrl))); connect(curWebView, SIGNAL(loadStarted()), m_controlStrip, SLOT(slotLoadingStarted())); connect(curWebView, SIGNAL(loadFinished(bool)), m_controlStrip, SLOT(slotLoadingFinished())); curWebView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // curWebView->setFocus(); curWebView->setGeometry(0, 0, width(), height()); curWebView->show(); if (oldWebView) curWebView->stackUnder(oldWebView); } void BrowserView::gotoHomePage() { // curWebView->setHtml("<big><b>semperWeb</b></big><p>by SemperPax</p>"); curWebView->setUrl(QUrl("qrc:/html/home.html")); } void BrowserView::stop() { curWebView->stop(); } void BrowserView::zoomBest() { curWebView->zoomBest(); } void BrowserView::reload() { curWebView->reload(); } void BrowserView::backView() { if (m_curHistIdx) { m_curHistIdx--; } else { gotoHomePage(); return; } if (m_webQ.size()) { oldWebView = curWebView; curWebView = m_webQ.takeLast(); curWebView->show(); expiredWebView = oldWebView; oldWebView->stackUnder(oldWebView); } else { if (M_PREFS->getCachingInstantHistorySize() > 0) { oldWebView = curWebView; expiredWebView = curWebView; addWebview(false); curWebView->stackUnder(m_titleBar); curWebView->move(curWebView->pos().x() + curWebView->width(), curWebView->pos().y()); } QNetworkRequest req(m_history[m_curHistIdx]); req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache); curWebView->page()->mainFrame()->load(req); } if (m_timeLineBack->state() == QTimeLine::NotRunning && M_PREFS->getCachingInstantHistorySize() > 0) { m_timeLineBack->setFrameRange(curWebView->pos().x(), curWebView->pos().x() - curWebView->width()); m_timeLineBack->start(); } m_controlStrip->backAct->setEnabled((m_curHistIdx >= 0)); m_controlStrip->forwardAct->setEnabled(true); } void BrowserView::fwdView() { if (m_curHistIdx < m_history.size()-1) { m_curHistIdx++; } else return; if (M_PREFS->getCachingInstantHistorySize() > 0) { addWebview(); } curWebView->page()->mainFrame()->load(m_history[m_curHistIdx]); m_controlStrip->backAct->setEnabled(true); m_controlStrip->forwardAct->setEnabled((m_curHistIdx < m_history.size()-1)); } void BrowserView::updateButtons() { m_controlStrip->backAct->setEnabled((m_curHistIdx >= 0)); m_controlStrip->forwardAct->setEnabled((m_curHistIdx < m_history.size()-1)); } void BrowserView::slideBack(int pos) { if (oldWebView) oldWebView->move(-(oldWebView->size().width() - pos), 0); curWebView->move(pos, 0); // update(); } void BrowserView::slideBackDone() { if (oldWebView) oldWebView->hide(); if (expiredWebView) { expiredWebView->deleteLater(); expiredWebView = NULL; } } void BrowserView::slideFwd(int pos) { curWebView->move(-(curWebView->size().width() - pos), 0); if (oldWebView) oldWebView->move(pos, 0); // update(); } void BrowserView::slideFwdDone() { if (oldWebView) oldWebView->hide(); if (expiredWebView) { expiredWebView->deleteLater(); expiredWebView = NULL; } } void BrowserView::start() { m_progress = 0; updateTitleBar(); //m_titleBar->setText(curWebView->url().toString()); } void BrowserView::setProgress(int percent) { m_progress = percent; updateTitleBar(); //m_titleBar->setText(QString("Loading %1%").arg(percent)); } void BrowserView::updateTitleBar() { QUrl url = curWebView->url(); m_titleBar->setHost(url.host()); m_titleBar->setTitle(curWebView->title()); m_titleBar->setProgress(m_progress); } void BrowserView::updateHistory(const QUrl& url) { if (url.toString() == "about:blank") return; if (m_curHistIdx < m_history.size()-1 && url == m_history[m_curHistIdx]) return; m_history.erase(m_history.begin()+m_curHistIdx+1, m_history.end()); m_history.append(url); m_curHistIdx++; updateButtons(); updateTitleBar(); } void BrowserView::finish(bool ok) { // m_webPage->setViewportSize(m_webPage->mainFrame()->contentsSize()); m_progress = 0; updateTitleBar(); // TODO: handle error if (!ok && !unsupHandled) { m_titleBar->setTitle("Loading failed."); return; } // Force hidding any scrollbar QWebElement body = m_webPage->currentFrame()->findFirstElement("body"); if (!body.isNull()) body.setStyleProperty("overflow", "hidden !important"); #if !defined(QT_NO_DEBUG_OUTPUT) && !defined(Q_OS_SYMBIAN) QFile f("c:/semperWeb.html"); f.open(QIODevice::WriteOnly); f.write(m_webPage->mainFrame()->toHtml().toUtf8()); f.close(); #endif } void BrowserView::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); int h1 = m_titleBar->sizeHint().height(); m_titleBar->resize(width(), h1); curWebView->resize(width(), height()); // int zw = m_zoomStrip->sizeHint().width(); // int zh = m_zoomStrip->sizeHint().height(); // m_zoomStrip->move(width() - zw, (height() - zh) / 2); } void BrowserView::showMedia(const QUrl &url) { QWidget *dummy = new QWidget(parentWidget()); dummy->resize(parentWidget()->size()); dummy->raise(); dummy->show(); // Phonon::MediaObject *mediaObject = new Phonon::MediaObject(this); // Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget(dummy); // Phonon::createPath(mediaObject, videoWidget); // qDebug() << url.toString(); // Phonon::MediaSource source = Phonon::MediaSource(url.toString()); // mediaObject->setCurrentSource(source); // mediaObject->play(); Phonon::VideoPlayer *player = new Phonon::VideoPlayer(Phonon::VideoCategory, dummy); player->play(url); } void BrowserView::navigate(const QUrl &url) { // if (url.toString().endsWith("3gp")) { // showMedia(url); // return; // } // curWebView->setZoomFactor(INIT_ZOOM); QUrl referer = curWebView->page()->mainFrame()->url(); if (M_PREFS->getCachingInstantHistorySize() > 0) { addWebview(); } QNetworkRequest req(url); req.setRawHeader(QString("Referer").toAscii(), referer.toString().toAscii()); req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); unsupHandled = false; curWebView->load(req); } #ifndef QT_NO_OPENSSL void BrowserView::slotSslErrors(QNetworkReply* rep,QList<QSslError>) { rep->ignoreSslErrors(); } #endif void BrowserView::slotFrameCreated(QWebFrame * frame) { frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); connect(frame, SIGNAL(initialLayoutCompleted()), SLOT(slotFrameInitialLayoutCompleted())); } void BrowserView::slotFrameInitialLayoutCompleted() { } QString BrowserView::getCurrentName() { return curWebView->title(); } QString BrowserView::getCurrentAdress() { return curWebView->url().toString(); } void BrowserView::onUnsupportedContent (QNetworkReply * reply) { if (!reply) return; updateHistory(reply->url()); if (reply->error() != QNetworkReply::NoError) return; if (reply->header(QNetworkRequest::ContentTypeHeader).isValid() != true) return; if (reply->header(QNetworkRequest::ContentTypeHeader).toString().toLower() == "image/pjpeg") { unsupReply = reply; unsupReply->setParent(this); if (unsupReply->isFinished()) unsupportedReplyFinished(); else { connect(unsupReply, SIGNAL(finished()), SLOT(unsupportedReplyFinished())); } unsupHandled = true; return; } if (reply->header(QNetworkRequest::ContentTypeHeader).toString().toLower().startsWith("video")) { showMedia(reply->url()); unsupHandled = true; return; } qDebug() << "Unsuported: " << reply->url() << reply->header(QNetworkRequest::ContentTypeHeader); if (QMessageBox::question(0, tr("Launch File"), tr("Do you really want to launch this file?"), QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok) { m_downloader = new Downloader(this, reply); unsupHandled = true; } else reply->abort(); // backView(); } void BrowserView::onDownloadRequested (const QNetworkRequest & request) { m_downloader = new Downloader(this, request, (QNetworkCookieJar *)m_cookiejar); m_downloader->go(); //FIXME When to delete the Downloader? Async -> no now... } void BrowserView::unsupportedReplyFinished() { QByteArray ba = unsupReply->readAll(); curWebView->setContent(ba, QString("image/jpeg")); // QFile* m_out = new QFile("c:/tmp.jpg"); // m_out->open(QIODevice::WriteOnly); // m_out->write(unsupReply->readAll()); // m_out->close(); unsupReply->close(); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/BrowserView.h������������������������������������������������������0000664�0000000�0000000�00000004227�11770671653�0021322�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef BROWSERVIEW_H #define BROWSERVIEW_H #include <QWidget> #include <QVector> #include <QSslError> #include <QWebPage> #include <QList> class MainWindow; class QUrl; class MWebPage; class MWebView; class QWebView; class QNetworkReply; class QTimeLine; class TitleBar; class ControlStrip; class ZoomStrip; class PersistentCookieJar; class Downloader; class BrowserCache; class BrowserView : public QWidget { Q_OBJECT friend class MWebView; public: BrowserView(MainWindow *parent = 0); ~BrowserView(); QString getCurrentName(); QString getCurrentAdress(); void updateButtons(); public slots: void showMedia(const QUrl &url); void navigate(const QUrl &url); private slots: void initialize(); void start(); void setProgress(int percent); void finish(bool); void updateTitleBar(); void updateHistory(const QUrl& url); #ifndef QT_NO_OPENSSL void slotSslErrors(QNetworkReply* rep,QList<QSslError>); #endif void slotFrameCreated(QWebFrame * frame); void slotFrameInitialLayoutCompleted(); void backView(); void fwdView(); void stop(); void zoomBest(); void reload(); void slideFwd(int pos); void slideFwdDone(); void slideBack(int pos); void slideBackDone(); void onDownloadRequested (const QNetworkRequest & request); void onUnsupportedContent (QNetworkReply * reply); void unsupportedReplyFinished(); signals: void menuButtonClicked(); void preferencesClicked(); protected: void cleanupMemory(); void addWebview(bool appendToQ = true); void resizeEvent(QResizeEvent *event); void gotoHomePage(); protected: TitleBar *m_titleBar; QList<MWebView *> m_webQ; MWebView *oldWebView; MWebView *curWebView; MWebView *expiredWebView; MWebPage *m_webPage; BrowserCache* m_cache; PersistentCookieJar* m_cookiejar; // ZoomStrip *m_zoomStrip; ControlStrip *m_controlStrip; int m_progress; QTimeLine *m_timeLineFwd; QTimeLine *m_timeLineBack; QList<QUrl> m_history; int m_curHistIdx; Downloader* m_downloader; QNetworkReply* unsupReply; bool unsupHandled; }; #endif // BROWSERVIEW_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ControlButton.h����������������������������������������������������0000664�0000000�0000000�00000001047�11770671653�0021655�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef CONTROLBUTTON_H #define CONTROLBUTTON_H #include <QToolButton> #include <QStyle> #include <QStyleOption> #include <QPainter> #include <QAction> class ControlButton : public QToolButton { Q_OBJECT public: ControlButton(QAction* theAct, QSize sz, QWidget *parent) : QToolButton(parent) { setDefaultAction(theAct); setIconSize(sz); setAttribute(Qt::WA_TransparentForMouseEvents); } public slots: void trigger() { defaultAction()->trigger(); } }; #endif // CONTROLBUTTON_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ControlStrip.cpp���������������������������������������������������0000664�0000000�0000000�00000025216�11770671653�0022042�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ControlStrip.h" #include "ControlButton.h" #include "MouseMachine/MouseMachine.h" #include <QtCore> #include <QtGui> #include <QObject> #define STRIP_WIDTH 60 #define BAR_ALPHA 48 ControlStrip::ControlStrip(QWidget *parent) : QWidget(parent) , BarLayout(0) , collapsed(false) { m_Charm = new MouseMachine(this, MouseMachine::SignalTap | MouseMachine::SignalScroll | MouseMachine::CascadedEventFilter); m_Charm->setObjectName("ControlStrip_charm"); connect(m_Charm, SIGNAL(singleTap(QPoint)), SLOT(onSingleTap(QPoint))); connect(m_Charm, SIGNAL(tapAndHold(QPoint)), SLOT(onTapAndHold(QPoint))); connect(m_Charm, SIGNAL(scroll(QPoint,QPoint)), SLOT(onScroll(QPoint,QPoint))); connect(m_Charm, SIGNAL(doubleTap(QPoint)), SLOT(onDoubleTap(QPoint))); theBar = new QWidget(this); // bookmarkAct = new QAction(QPixmap(":/icons/bookmark"), "Menu", theBar); // connect(bookmarkAct, SIGNAL(triggered()), this, SIGNAL(bookmarkClicked())); // backAct = new QAction(QPixmap(":/icons/back"), "Back", this); // connect(backAct, SIGNAL(triggered()), this, SIGNAL(backClicked())); // forwardAct = new QAction(QPixmap(":/icons/forward"), "Forward", theBar); // connect(forwardAct, SIGNAL(triggered()), this, SIGNAL(forwardClicked())); // stopAct = new QAction(QPixmap(":/icons/stop"), "Stop", theBar); // connect(stopAct, SIGNAL(triggered()), this, SIGNAL(stopClicked())); // zoomBestAct = new QAction(QPixmap(":/icons/zoomBest"), "Zoom Best", theBar); // connect(zoomBestAct, SIGNAL(triggered()), SIGNAL(zoomBestClicked())); // refreshAct = new QAction(QPixmap(":/icons/refresh"), "Refresh", theBar); // connect(refreshAct, SIGNAL(triggered()), SIGNAL(refreshClicked())); // editAct = new QAction(QPixmap(":/icons/edit"), "Edit", theBar); // connect(editAct, SIGNAL(triggered()), SIGNAL(editClicked())); prefAct = new QAction(QPixmap(":/icons/settings"), "Preferences", theBar); connect(prefAct, SIGNAL(triggered()), this, SIGNAL(prefClicked())); searchAct = new QAction(QPixmap(":/icons/search"), "Search", theBar); connect(searchAct, SIGNAL(triggered()), SIGNAL(searchClicked())); zoomInAct = new QAction(QPixmap(":/icons/zoomIn"), "Zoom In", theBar); connect(zoomInAct, SIGNAL(triggered()), SIGNAL(zoomInClicked())); zoomOutAct = new QAction(QPixmap(":/icons/zoomOut"), "Zoom Out", theBar); connect(zoomOutAct, SIGNAL(triggered()), SIGNAL(zoomOutClicked())); menuAct = new QAction(QPixmap(":/icons/menu"), "Zoom Out", theBar); connect(menuAct, SIGNAL(triggered()), SIGNAL(menuClicked())); QSize btSize(48, 48); // backBt = new ControlButton(backAct, btSize, theBar); // forwardBt = new ControlButton(forwardAct, btSize, theBar); // bookmarkBt = new ControlButton(bookmarkAct, btSize, theBar); // stopBt = new ControlButton(stopAct, btSize, theBar); // searchBt = new ControlButton(searchAct, btSize, theBar); prefBt = new ControlButton(prefAct, btSize, theBar); // refreshBt = new ControlButton(refreshAct, btSize, theBar); // editBt = new ControlButton(editAct, btSize, theBar); searchBt = new ControlButton(searchAct, btSize, theBar); zoomInBt = new ControlButton(zoomInAct, btSize, theBar); zoomOutBt = new ControlButton(zoomOutAct, btSize, theBar); menuBt = new ControlButton(menuAct, btSize, theBar); // m_menuAct = new QAction(QPixmap(":/icons/back"), "Back", this); // connect(m_menuAct, SIGNAL(triggered()), this, SIGNAL(backClicked())); // m_menuButton = new ControlButton(backAct, btSize, this); // m_menuButton->hide(); // QVBoxLayout* layout = new QVBoxLayout(this); // layout->addWidget(theBar); // layout->addWidget(m_menuButton); // pal.setBrush(QPalette::Window, QColor(32, 32, 32, BAR_ALPHA)); // theBar->setPalette(pal); // theBar->setBackgroundRole(QPalette::Window); // theBar->setAutoFillBackground(true); // QSpacerItem* verticalSpacer = new QSpacerItem(20, STRIP_WIDTH, QSizePolicy::Minimum, QSizePolicy::Expanding); // theLayout->addItem(verticalSpacer); m_dock = DockLeft; m_timeLine = new QTimeLine(800, this); m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve); m_timeLine->setUpdateInterval(100); connect(m_timeLine, SIGNAL(valueChanged(qreal)), SLOT(onBarAnimation(qreal))); connect(m_timeLine, SIGNAL(finished()), SLOT(onBarAnimationFinished())); installEventFilter(m_Charm); } void ControlStrip::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); // p.setPen(QPen(Qt::green, 2)); // p.drawRect(opt.rect); } void ControlStrip::slotLoadingStarted() { setUpdatesEnabled(false); refreshBt->hide(); // theLayout->removeWidget(refreshBt); stopBt->show(); // theLayout->insertWidget(2, stopBt); setUpdatesEnabled(true); } void ControlStrip::slotLoadingFinished() { setUpdatesEnabled(false); stopBt->hide(); // theLayout->removeWidget(stopBt); refreshBt->show(); // theLayout->insertWidget(2, refreshBt); setUpdatesEnabled(true); } ControlButton* ControlStrip::getButtonAt(const QPoint& p) { QObjectList ol = children(); foreach(QObject* o, ol) { if (ControlButton* b = dynamic_cast<ControlButton*>(o)) { if (b->geometry().contains(p) && b->isVisible()) { return b; } } } ol = theBar->children(); foreach(QObject* o, ol) { if (ControlButton* b = dynamic_cast<ControlButton*>(o)) { if (b->geometry().contains(theBar->mapFrom(this, p)) && b->isVisible()) { return b; } } } return NULL; } void ControlStrip::resizeBar(const QSize& sz, bool resetPos) { switch (m_dock) { case DockLeft: case DockRight: if (BarLayout) delete BarLayout; BarLayout = new QVBoxLayout(theBar); if (sz.height() > sz.width()) { theBar->resize(STRIP_WIDTH, sz.width()); } else { theBar->resize(STRIP_WIDTH, sz.height()); } break; case DockTop: case DockBottom: if (BarLayout) delete BarLayout; BarLayout = new QHBoxLayout(theBar); if (sz.height() > sz.width()) { theBar->resize(sz.width(), STRIP_WIDTH); } else { theBar->resize(sz.height(), STRIP_WIDTH); } break; default: break; } if (resetPos) { switch (m_dock) { case DockLeft: qDebug() << sz.height() << theBar->height(); move(0, (sz.height() - theBar->height())/2); break; case DockRight: move(sz.width() - STRIP_WIDTH, (sz.height() - height())/2); break; case DockTop: move((sz.width() - width())/2, 0); break; case DockBottom: move((sz.width() - width())/2, sz.height() - STRIP_WIDTH); break; default: break; } } // BarLayout->addWidget(backBt); // BarLayout->addWidget(forwardBt); // BarLayout->addWidget(stopBt); // BarLayout->addWidget(refreshBt); // BarLayout->addWidget(searchBt); // BarLayout->addWidget(bookmarkBt); // BarLayout->addWidget(editBt); BarLayout->addWidget(searchBt); BarLayout->addWidget(zoomInBt); BarLayout->addWidget(zoomOutBt); BarLayout->addWidget(menuBt); BarLayout->addWidget(prefBt); if (!collapsed) resize(theBar->size()); } void ControlStrip::onSingleTap(QPoint p) { ControlButton* b = getButtonAt(p); if (b) b->trigger(); } void ControlStrip::Collapse() { if (collapsed) return; // m_menuButton->resize(backBt->size()); // resize(STRIP_WIDTH, STRIP_WIDTH); // QPoint src = backBt->mapToGlobal(QPoint()); // QPoint dst = QPoint(STRIP_WIDTH/2, STRIP_WIDTH/2) - QPoint(m_menuButton->width()/2, m_menuButton->height()/2); // move(parentWidget()->mapFromGlobal(src-dst)); // m_menuButton->move(mapFromGlobal(src)); // m_menuButton->show(); // theBar->hide(); //// QPoint dst = src - QPoint((width() - m_menuButton->width())/2, (height() - m_menuButton->height())/2); //// move(parentWidget()->mapFromGlobal(dst)); //// if (m_timeLine->state() == QTimeLine::NotRunning) { //// originalSize = theBar->size(); //// originalPos = theBar->pos(); //// m_timeLine->setDirection(QTimeLine::Backward); //// m_timeLine->start(); //// } collapsed = true; } void ControlStrip::Expand() { if (!collapsed) return; // QPoint src = m_menuButton->mapToGlobal(QPoint()); // QPoint dest = backBt->pos(); // move(parentWidget()->mapFromGlobal(src-dest)); // m_menuButton->hide(); // theBar->show(); // resize(theBar->size()); //// if (m_timeLine->state() == QTimeLine::NotRunning) { //// m_timeLine->setDirection(QTimeLine::Forward); //// m_timeLine->start(); //// } collapsed = false; } void ControlStrip::onDoubleTap(QPoint p) { // ControlButton* b = getButtonAt(p); // if (b && b == m_menuButton) // bookmarkBt->trigger(); } void ControlStrip::onTapAndHold(QPoint p) { if (!collapsed) { Collapse(); } else { Expand(); } } void ControlStrip::onScroll(QPoint oldP, QPoint newP) { QPoint oldPos = pos(); QPoint newPos = pos()+newP-oldP; QPoint curPos = parentWidget()->mapFromGlobal(QCursor::pos()); if (curPos.y() > parentWidget()->height() - STRIP_WIDTH && newPos.y() > oldPos.y()) { m_dock = DockBottom; resizeBar(parentWidget()->size()); move(newPos.x(), parentWidget()->height() - STRIP_WIDTH); } else if (curPos.x() > parentWidget()->width() - STRIP_WIDTH && newPos.x() > oldPos.x()) { m_dock = DockRight; resizeBar(parentWidget()->size()); move(parentWidget()->width() - STRIP_WIDTH, newPos.y()); } else if (curPos.y() < STRIP_WIDTH && newPos.y() < oldPos.y()) { m_dock = DockTop; resizeBar(parentWidget()->size()); move(newPos.x(), 0); } else if (curPos.x() < STRIP_WIDTH && newPos.x() < oldPos.x()) { m_dock = DockLeft; resizeBar(parentWidget()->size()); move(0, newPos.y()); } else { m_dock = DockNone; move(newPos); } } void ControlStrip::onBarAnimation(qreal val) { theBar->resize(originalSize*val); if (theBar->isHidden() && val > 0) theBar->show(); } void ControlStrip::onBarAnimationFinished() { if (m_timeLine->currentFrame() == 0) theBar->hide(); if (m_timeLine->currentFrame() > 0) m_menuButton->hide(); } bool ControlStrip::event(QEvent *event) { return QWidget::event(event); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ControlStrip.h�����������������������������������������������������0000664�0000000�0000000�00000004171�11770671653�0021504�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef CONTROLSTRIP_H #define CONTROLSTRIP_H #include <QWidget> #include <QAction> #include <QTimeLine> class QBoxLayout; class ControlButton; class MouseMachine; class ControlStrip : public QWidget { Q_OBJECT friend class MainWindow; public: enum Docking { DockNone, DockTop, DockBottom, DockLeft, DockRight }; public: ControlStrip(QWidget *parent = 0); void resizeBar(const QSize& sz, bool resetPos=false); signals: void bookmarkClicked(); void backClicked(); void forwardClicked(); void stopClicked(); void prefClicked(); void searchClicked(); void zoomInClicked(); void zoomOutClicked(); void refreshClicked(); void editClicked(); void menuClicked(); public slots: void slotLoadingStarted(); void slotLoadingFinished(); void Collapse(); void Expand(); private slots: void onSingleTap(QPoint p); void onDoubleTap(QPoint p); void onTapAndHold(QPoint p); void onScroll(QPoint oldPos, QPoint newPos); void onBarAnimation(qreal); void onBarAnimationFinished(); protected: void paintEvent(QPaintEvent *event); bool event (QEvent * event); ControlButton * getButtonAt(const QPoint &p); private: QPalette pal; QWidget* theBar; QBoxLayout* BarLayout; ControlButton *backBt; ControlButton *forwardBt; ControlButton *bookmarkBt; ControlButton *stopBt; ControlButton *zoomInBt; ControlButton *zoomOutBt; ControlButton *searchBt; ControlButton *prefBt; ControlButton *refreshBt; ControlButton *editBt; ControlButton *menuBt; ControlButton *m_menuButton; MouseMachine* m_Charm; QPoint lastMenuPos; Docking m_dock; QTimeLine *m_timeLine; QSize originalSize; QPoint originalPos; bool collapsed; public: QAction* bookmarkAct; QAction* backAct; QAction* forwardAct; QAction* stopAct; QAction* prefAct; QAction* zoomInAct; QAction* zoomOutAct; QAction* searchAct; QAction* refreshAct; QAction* editAct; QAction* menuAct; QAction* m_menuAct; }; #endif // CONTROLSTRIP_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/Downloader.cpp�����������������������������������������������������0000664�0000000�0000000�00000011502�11770671653�0021467�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Downloader.h" #include "BrowserView.h" #include "MyPreferences.h" #include <QNetworkAccessManager> #include <QNetworkReply> #include <QNetworkProxyQuery> #include <QNetworkCookieJar> #include <QFileDialog> #include <QFileInfo> #include <QMessageBox> #include <QDesktopServices> Downloader::Downloader(BrowserView *parent) : QObject(parent) { } Downloader::Downloader(BrowserView* parent, const QNetworkRequest& r, QNetworkCookieJar* j) : QObject(parent) , m_parent(parent) , m_request(r) , m_reply(0) , m_cookieJar(j) , m_out(0) , m_launch(false) { m_am = new QNetworkAccessManager(this); } Downloader::Downloader(BrowserView* parent, QNetworkReply* r) : QObject(parent) , m_parent(parent) , m_am(0) , m_reply(r) , m_out(0) , m_launch(true) { m_reply->setParent(this); // qDebug() << "Filename: " << m_reply->url(); // foreach(QByteArray k, m_reply->rawHeaderList()) { // qDebug() << k << m_reply->rawHeader(k); // } QString m_filename; if (m_reply->hasRawHeader("Content-Disposition")) { QStringList s1 = QString(m_reply->rawHeader("Content-Disposition")).split(";", QString::SkipEmptyParts); if (s1.count() && s1[0] == "attachment") { QStringList s2 = s1[1].split("="); if (s2.count() == 2) { m_filename = s2[1].remove('"'); } } } if (m_filename.isEmpty()) m_filename = m_reply->url().path().section('/', -1); if (!m_filename.isEmpty()) { m_out = new QFile(QDesktopServices::storageLocation(QDesktopServices::TempLocation) + "/" + m_filename, this); m_out->open(QIODevice::WriteOnly); } else { m_out = new QTemporaryFile(this); ((QTemporaryFile*)m_out)->open(); } if (m_reply->isFinished()) slotFinished(); else { connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError))); #ifndef QT_NO_OPENSSL connect(m_reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>))); #endif connect(m_reply, SIGNAL(finished()), SLOT(slotFinished())); } } void Downloader::go() { QNetworkProxyQuery npq(m_request.url()); QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::systemProxyForQuery(npq); if (listOfProxies.size()) m_am->setProxy(listOfProxies[0]); m_am->setCookieJar(m_cookieJar); m_cookieJar->setParent(0); m_reply = m_am->get(m_request); connect(m_reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead())); #ifndef QT_NO_OPENSSL connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError))); #endif connect(m_reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>))); connect(m_reply, SIGNAL(finished()), SLOT(slotFinished())); m_out = new QTemporaryFile(this); ((QTemporaryFile*)m_out)->open(); } void Downloader::setRequest(const QNetworkRequest &r) { m_request = r; } #ifndef QT_NO_OPENSSL void Downloader::slotSslErrors(QList<QSslError>) { m_reply->ignoreSslErrors(); } #endif void Downloader::slotError(QNetworkReply::NetworkError err) { } void Downloader::slotReadyRead() { m_out->write(m_reply->readAll()); } void Downloader::slotFinished() { m_out->write(m_reply->readAll()); m_reply->close(); m_out->close(); if (!m_reply->error()) { if (m_launch) QDesktopServices::openUrl(QUrl::fromLocalFile(m_out->fileName())); else { QString m_filename; QString mimeType = m_reply->header(QNetworkRequest::ContentTypeHeader).toString().section(QLatin1Char(';'), 0, 0); if (mimeType.startsWith("image")) { m_filename = M_PREFS->getGeneralLastPicDownloadDir(); if (m_filename.isEmpty()) m_filename = QDesktopServices::storageLocation(QDesktopServices::PicturesLocation); } else { m_filename = M_PREFS->getGeneralLastDataDownloadDir(); if (m_filename.isEmpty()) m_filename = QDesktopServices::storageLocation(QDesktopServices::DataLocation); } m_filename = QFileDialog::getSaveFileName(m_parent, tr("Save File"), m_filename + "/" + m_reply->url().path().section('/', -1)); if (m_filename.isEmpty()) m_reply->abort(); else { if (mimeType.startsWith("image")) { M_PREFS->setGeneralLastPicDownloadDir(QFileInfo(m_filename).absolutePath()); } else { M_PREFS->setGeneralLastDataDownloadDir(QFileInfo(m_filename).absolutePath()); } m_out->copy(m_filename); } } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/Downloader.h�������������������������������������������������������0000664�0000000�0000000�00000001755�11770671653�0021145�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef DOWNLOADER_H #define DOWNLOADER_H #include <QObject> #include <QNetworkRequest> #include <QNetworkReply> #include <QTemporaryFile> #include <QSslError> class QNetworkAccessManager; class QNetworkReply; class QNetworkCookieJar; class BrowserView; class Downloader : public QObject { Q_OBJECT public: explicit Downloader(BrowserView *parent = 0); Downloader(BrowserView* parent, const QNetworkRequest& r, QNetworkCookieJar* j); Downloader(BrowserView* parent, QNetworkReply* r); public: void setRequest(const QNetworkRequest& r); void go(); signals: public slots: void slotReadyRead(); void slotFinished(); #ifndef QT_NO_OPENSSL void slotSslErrors( QList<QSslError>); #endif void slotError(QNetworkReply::NetworkError err); protected: BrowserView* m_parent; QNetworkAccessManager* m_am; QNetworkRequest m_request; QNetworkReply* m_reply; QNetworkCookieJar* m_cookieJar; QFile *m_out; bool m_launch; }; #endif // DOWNLOADER_H �������������������merkaartor-0.18.1/semperMerk/src/HomeView.cpp�������������������������������������������������������0000664�0000000�0000000�00000004472�11770671653�0021124�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "HomeView.h" #include <QtCore> #include <QtGui> #include "AddressBar.h" #include "BookmarkBar.h" #include "BookmarksView.h" #include "MouseMachine/MouseMachine.h" HomeView::HomeView(QWidget *parent) : QWidget(parent) , m_addressBar(0) , m_bookmarkBar(0) , charm(0) { m_addressBar = new AddressBar(parent); connect(m_addressBar, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString))); connect(m_addressBar, SIGNAL(back()), SIGNAL(back())); m_bookmarkBar = new BookmarkBar(parent); m_bookmarks = new BookmarksView(parent); connect(m_bookmarks, SIGNAL(urlSelected(QUrl)), SIGNAL(urlActivated(QUrl))); connect(m_bookmarks, SIGNAL(bookmarkSelected(QString, QString)), m_bookmarkBar, SLOT(slotBookmarkSelected(QString, QString))); connect(m_bookmarks, SIGNAL(bookmarkSelected(QString, QString)), this, SLOT(slotBookmarkSelected(QString, QString))); connect(m_bookmarkBar, SIGNAL(bookmarkEntered(QString, QString)), m_bookmarks, SLOT(bookmarkAdd(QString, QString))); connect(m_bookmarkBar, SIGNAL(bookmarkDeleted(QString)), m_bookmarks, SLOT(bookmarkDel(QString))); QVBoxLayout *layout = new QVBoxLayout(this); layout->setMargin(2); layout->setSpacing(4); layout->addWidget(m_addressBar); layout->addWidget(m_bookmarks); layout->addWidget(m_bookmarkBar); } void HomeView::gotoAddress(const QString &address) { emit addressEntered(address); } void HomeView::setCurrentAdress(const QString & name, const QString& adress) { m_bookmarkBar->slotBookmarkSelected(name, adress); } void HomeView::slotBookmarkSelected(const QString& name, const QString& url) { m_addressBar->setUrl(url); } void HomeView::toggleEdit() { if (charm) { delete charm; charm = NULL; m_addressBar->show(); m_bookmarkBar->show(); m_addressBar->activateWindow(); m_addressBar->setFocus(); } else { switchToBrowse(); } } void HomeView::switchToBrowse() { m_addressBar->hide(); m_bookmarkBar->hide(); if (!charm) { charm = new MouseMachine(m_bookmarks->view(), MouseMachine::AutoScroll | MouseMachine::SignalTap); charm->setObjectName("Bookmark_charm"); connect(charm, SIGNAL(singleTap(QPoint)), m_bookmarks, SLOT(slotDoubleClicked(QPoint))); } m_bookmarks->toXml(); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/HomeView.h���������������������������������������������������������0000664�0000000�0000000�00000004422�11770671653�0020564�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef HOMEVIEW_H #define HOMEVIEW_H #include <QWidget> class QUrl; class AddressBar; class BookmarkBar; class BookmarksView; class MouseMachine; class HomeView : public QWidget { Q_OBJECT public: HomeView(QWidget *parent); void setCurrentAdress(const QString & name, const QString& adress); AddressBar* addressBar() { return m_addressBar; } signals: void urlActivated(const QUrl &url); void addressEntered(const QString &address); void back(); private slots: void gotoAddress(const QString &address); void slotBookmarkSelected(const QString& name, const QString& url); void toggleEdit(); public slots: void switchToBrowse(); private: AddressBar *m_addressBar; BookmarkBar *m_bookmarkBar; BookmarksView *m_bookmarks; MouseMachine* charm; }; #endif // HOMEVIEW_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/MWebView.cpp�������������������������������������������������������0000664�0000000�0000000�00000017432�11770671653�0021066�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MWebView.h" #include "MouseMachine/MouseMachine.h" #include "BrowserView.h" #include "MyPreferences.h" #include <QApplication> #include <QMouseEvent> #include <QPainter> #include <QMenu> #include <QGesture> #define ZOOM_STEP 1.10 MWebPage::MWebPage(QObject * parent) : QWebPage(parent) { setForwardUnsupportedContent(true); } MWebPage::~MWebPage() { } QString MWebPage::userAgentForUrl ( const QUrl & url ) const { if (url.toString().toLower().contains("iphone")) return("Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16"); // return("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3"); switch (M_PREFS->getGeneralUserAgent()) { case 1: // Default symbian browser return("Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/30.0.011; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/532.4 (KHTML, like Gecko) Safari/532.4"); break; case 2: // iPhone // return("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3"); return("Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16"); break; case 3: // Android // return("Mozilla/5.0 (Linux; U; Android 1.0; en-us; generic) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2"); return("Mozilla/5.0 (Linux; U; Android 2.0.1; en-us;sdk Build/ES54) AppleWebKit/530.17+ (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"); break; default: return QWebPage::userAgentForUrl(url); break; } } bool MWebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type) { // if (QWebPage::acceptNavigationRequest(frame, request, type)) { // // QNetworkProxy myProxy(QNetworkProxy::HttpProxy, "localhost", 8888); // // p->m_webPage->networkAccessManager()->setProxy(myProxy); // QNetworkProxyQuery npq(request.url()); // QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::systemProxyForQuery(npq); // if (listOfProxies.size()) // networkAccessManager()->setProxy(listOfProxies[0]); // return true; // } else // return false; QNetworkProxyQuery npq(request.url()); QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::systemProxyForQuery(npq); if (listOfProxies.size()) networkAccessManager()->setProxy(listOfProxies[0]); // QNetworkProxy myProxy(QNetworkProxy::HttpProxy, "localhost", 8888); // networkAccessManager()->setProxy(myProxy); if (request.url().scheme() == "rtsp") { emit rtspRequested(request.url()); return false; } return QWebPage::acceptNavigationRequest(frame, request, type); } /**************************************/ MWebView::MWebView(BrowserView * parent) : QWebView(parent), m_BrowserView(parent), doubleClickHold(false), possibleSingleClick(false), charm(0) , m_zoomedIn(false), m_zoomedOut(false), m_initZoom(1.0) { setAttribute(Qt::WA_AcceptTouchEvents); grabGesture(Qt::PinchGesture); QTimer::singleShot(0, this, SLOT(initialize())); } void MWebView::initialize() { setMouseTracking(false); charm = new MouseMachine(this, MouseMachine::AutoScroll | MouseMachine::SignalTap | MouseMachine::SignalScroll); charm->setObjectName("Browser_charm"); connect(charm, SIGNAL(scroll(QPoint,QPoint)), SLOT(slotScroll(QPoint,QPoint))); connect(charm, SIGNAL(singleTap(QPoint)), SLOT(slotClicked(QPoint))); connect(charm, SIGNAL(doubleTap(QPoint)), SLOT(slotDoubleClicked(QPoint))); connect(charm, SIGNAL(tapAndHold(QPoint)), SLOT(slotTapAndHold(QPoint))); } void MWebView::slotScroll(QPoint oldPos, QPoint newPos) { QWebFrame *frame = page()->mainFrame(); frame->setScrollPosition(frame->scrollPosition() - (newPos - oldPos)); } void MWebView::slotClicked(QPoint pos) { QWebFrame* f = page()->frameAt(pos); if (f) { QWebHitTestResult wh = f->hitTestContent(pos); if (!wh.linkUrl().isEmpty()) { // QString code = "$('a').each( function () { $(this).css('background-color', 'yellow') } )"; // QString code = QString("$(\":contains('%1')\").css('background-color', 'yellow')").arg(wh.linkUrl().toString()); // f->evaluateJavaScript(code); } } QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QMouseEvent *event2 = new QMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QApplication::postEvent(page(), event1); QApplication::postEvent(page(), event2); } void MWebView::slotDoubleClicked(QPoint pos) { QWebFrame *frame = page()->mainFrame(); QPoint p = frame->scrollPosition(); qDebug() << p; qDebug() << zoomFactor(); qreal targetZoom; if (m_zoomedIn || m_zoomedOut) { targetZoom = m_initZoom; m_zoomedIn = false; m_zoomedOut = false; } else { targetZoom = m_initZoom * 2.0; m_zoomedIn = true; } QPointF p2 = p * (targetZoom / zoomFactor()); QPointF pos2 = pos * (targetZoom / zoomFactor()); p2 += pos2 - pos; setZoomFactor(targetZoom); frame->setScrollPosition(p2.toPoint()); } void MWebView::slotTapAndHold(QPoint pos) { // QContextMenuEvent *event1 = new QContextMenuEvent(QContextMenuEvent::Other, pos); // QApplication::postEvent(page(), event1); page()->updatePositionDependentActions(pos); QMenu* ctxMenu = page()->createStandardContextMenu(); ctxMenu->exec(mapToGlobal(pos)); } void MWebView::zoomIn() { double currentZoom = zoomFactor() * ZOOM_STEP; setZoomFactor(currentZoom); } void MWebView::zoomOut() { double currentZoom = zoomFactor() / ZOOM_STEP; setZoomFactor(currentZoom); } void MWebView::zoomBest() { QWebFrame *frame = page()->mainFrame(); QPoint lastZoomedPoint = frame->scrollPosition(); double currentZoom = (double)width() / page()->mainFrame()->contentsSize().width() * zoomFactor(); setZoomFactor(currentZoom); m_zoomedOut = true; m_zoomedIn = false; frame->setScrollPosition(lastZoomedPoint); } bool MWebView::isZoomed() { return (zoomFactor() != m_initZoom); } void MWebView::zoom100() { setZoomFactor(m_initZoom); } QWebView *MWebView::createWindow(QWebPage::WebWindowType type) { Q_UNUSED(type); m_BrowserView->addWebview(); return qobject_cast<QWebView *>(m_BrowserView->curWebView); } bool MWebView::event(QEvent *event) { switch(event->type()){ case QEvent::TouchBegin: //accepting touch begin allows us to get touch updates return true; break; case QEvent::Gesture: return gestureEvent(static_cast<QGestureEvent*>(event)); break; default: return QWebView::event(event); } } bool MWebView::gestureEvent(QGestureEvent *event) { qDebug() << "gesture"; if (QGesture *pinch = event->gesture(Qt::PinchGesture)){ pinchTriggered(static_cast<QPinchGesture *>(pinch)); } return true; } void MWebView::pinchTriggered(QPinchGesture *gesture) { qDebug() << "pinch"; QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags(); if (changeFlags & QPinchGesture::ScaleFactorChanged) { qreal value = gesture->scaleFactor(); qreal zoom = value*zoomFactor(); if(zoom < 2 && zoom > 0.5){ qDebug()<< "zooming"; setZoomFactor(zoom); } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/MWebView.h���������������������������������������������������������0000664�0000000�0000000�00000003312�11770671653�0020523�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MWEBVIEW_H #define MWEBVIEW_H #include <QtWebKit> class MouseMachine; class BrowserView; class QPinchGesture; class MWebPage : public QWebPage { Q_OBJECT public: MWebPage(QObject * parent = 0); ~MWebPage(); protected: QString userAgentForUrl ( const QUrl & url ) const; bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type); signals: void rtspRequested(QUrl url); }; class MWebView : public QWebView { Q_OBJECT public: MWebView(BrowserView * parent = 0); private slots: void initialize(); protected: // virtual void mouseDoubleClickEvent (QMouseEvent * event); // virtual void mousePressEvent ( QMouseEvent * event ); // virtual void mouseReleaseEvent ( QMouseEvent * event ); // virtual void mouseMoveEvent ( QMouseEvent * event ); // virtual void paintEvent ( QPaintEvent * event ); virtual QWebView *createWindow(QWebPage::WebWindowType type); bool event(QEvent *event); bool gestureEvent(QGestureEvent *event); void pinchTriggered(QPinchGesture *gesture); protected slots: // void mouseRelease (); void slotScroll(QPoint oldPos, QPoint newPos); void slotClicked(QPoint pos); void slotDoubleClicked(QPoint pos); void slotTapAndHold(QPoint pos); public slots: void zoomIn(); void zoomOut(); void zoomBest(); void zoom100(); public: bool isZoomed(); private: BrowserView* m_BrowserView; bool doubleClickHold; bool possibleSingleClick; double scaleRatio; double curZoom; QPoint lastMouse; MouseMachine *charm; QPixmap* theImage; QMouseEvent * curEvent; qreal m_initZoom; bool m_zoomedIn; bool m_zoomedOut; }; #endif // MWEBVIEW_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/Main.cpp�����������������������������������������������������������0000664�0000000�0000000�00000013251�11770671653�0020260�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: Main // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include <QtCore> #include <QtGui> #include "MainWindow.h" #include "MyMessageHandler.h" #include "MerkaartorPreferences.h" #include "IMapAdapterFactory.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QCoreApplication::setApplicationName("semperMerk"); QCoreApplication::setOrganizationName("SemperPax"); QCoreApplication::setOrganizationDomain("semperpax.com"); QCoreApplication::setApplicationVersion("1.0.0"); #ifdef LOG_TO_FILE #if defined(Q_OS_UNIX) QString logFilename = QString("/tmp/%1.log").arg(QCoreApplication::applicationName()); #elif defined(Q_OS_WIN) QString logFilename = QString(qApp->applicationDirPath() + "/%1.log").arg(QCoreApplication::applicationName()); #elif defined(Q_OS_SYMBIAN) QString logFilename = QString(QDir::homePath() + "/%1.log").arg(QCoreApplication::applicationName()); #endif pLogFile = new QFile(logFilename); pLogFile->open(QIODevice::Append | QIODevice::Text); ts.setDevice(pLogFile); qInstallMsgHandler(myMessageOutput); qDebug() << "**** " << QDateTime::currentDateTime().toString(Qt::ISODate) << " -- Starting " << QString("%1 %2") .arg(QCoreApplication::applicationName()).arg(QCoreApplication::applicationVersion()); qDebug() << "-------" << QString("using QT version %1 (built with %2)").arg(qVersion()).arg(QT_VERSION_STR); #ifdef Q_WS_X11 qDebug() << "-------" << "on X11"; #endif #ifdef Q_WS_WIN qDebug() << "-------" << "on Windows"; #endif #ifdef Q_WS_MACX qDebug() << "-------" << "on Mac OS/X"; #endif #ifdef Q_WS_S60 qDebug() << "-------" << "on S60"; #endif #endif // LOG_TO_FILE MainWindow window; #if defined(Q_OS_SYMBIAN) || defined(Q_WS_SIMULATOR) window.showFullScreen(); #else window.resize(360, 640); window.show(); app.setStyle("windows"); #endif QString theStyle( // " ControlStrip {" // " background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(0, 0, 0, 160), stop:0.500 rgba(50, 50, 50, 160), stop:0.501 rgba(52, 52, 52, 160), stop:1 rgba(0, 0, 0, 160)) ;" // " }" " ControlStrip {" " background-color: rgba(0, 0, 0, 128);" " }" " ViewMenu {" " background-color: rgba(0, 0, 0, 128);" " }" "ViewMenu QPushButton {" " color: #333;" " border: 1px solid #555;" " padding: 5px;" " background: qradialgradient(cx: 0.3, cy: -0.4," " fx: 0.3, fy: -0.4," " radius: 1.35, stop: 0 #fff, stop: 1 #bbb);" " min-width: 80px;" "}" " ZoomStrip {" " background: rgba(128, 128, 128, 128) ;" " }" " ControlButton {" " border: none;" " background-color: transparent;" " }" "BookmarksView QTreeView {" " background-color: #333;" " font: bold 24px;" "}" "" "BookmarksView QTreeView::item {" " color: #333;" " border: 1px solid #555;" " padding: 5px;" " background: qradialgradient(cx: 0.3, cy: -0.4," " fx: 0.3, fy: -0.4," " radius: 1.35, stop: 0 #fff, stop: 1 #bbb);" " min-width: 80px;" "}" "" "BookmarksView QTreeView::item:has-children {" " color: #ddd;" " border: 1px solid #555;" " padding: 5px;" " background: qradialgradient(cx: 0.3, cy: -0.4," " fx: 0.3, fy: -0.4," " radius: 1.35, stop: 0 #fff, stop: 1 #333);" " min-width: 80px;" "}" ); app.setStyleSheet(theStyle); #ifdef QT_KEYPAD_NAVIGATION QApplication::setNavigationMode(Qt::NavigationModeCursorAuto); #endif // Plugins #if defined(Q_OS_WIN32) QDir pluginsDir = QDir(qApp->applicationDirPath() + "/plugins"); // Fixes MacOSX plugin dir (fixes #2253) #elif defined(Q_OS_MAC) QDir pluginsDir = QDir(qApp->applicationDirPath()); pluginsDir.cdUp(); pluginsDir.cd("plugins"); #elif defined(Q_OS_SYMBIAN) QDir pluginsDir(QLibraryInfo::location(QLibraryInfo::PluginsPath)); #else QDir pluginsDir = (g_Merk_Portable ? QDir(qApp->applicationDirPath() + "/plugins") : QDir(STRINGIFY(PLUGINS_DIR))); #endif QCoreApplication::addLibraryPath(pluginsDir.path()); pluginsDir.cd("background"); foreach (QString fileName, pluginsDir.entryList(QDir::Files)) { QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); QObject *plugin = loader.instance(); if (plugin) { IMapAdapterFactory *fac = qobject_cast<IMapAdapterFactory *>(plugin); if (fac) M_PREFS->addBackgroundPlugin(fac); } } int x = app.exec(); #ifdef LOG_TO_FILE qDebug() << "**** " << QDateTime::currentDateTime().toString(Qt::ISODate) << " -- Ending " << QString("%1 %2") .arg(QCoreApplication::applicationName()).arg(QCoreApplication::applicationVersion()); if(pLogFile) { pLogFile->close(); delete pLogFile; } #endif // LOG_TO_FILE return x; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/MainWindow.cpp�����������������������������������������������������0000664�0000000�0000000�00000030662�11770671653�0021455�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "MainWindow.h" #include <QtCore> #include <QtGui> #include "MapView.h" #include "Document.h" #include "ImageMapLayer.h" #include "EditInteraction.h" #include "HomeView.h" #include "MyPreferences.h" #include "AddressBar.h" #include "ControlStrip.h" #include "ControlButton.h" #include "ViewMenu.h" #include "MouseMachine/MouseMachine.h" #include "qgps.h" #include "qgpsdevice.h" MainWindow::MainWindow() : QWidget() , m_homeView(0) , m_mapView(0) , m_gpsview(0) , m_controlStrip(0) , viewToShow(0) { m_timeLine = new QTimeLine(800, this); m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve); QTimer::singleShot(0, this, SLOT(initialize())); } MainWindow::~MainWindow() { M_PREFS->setInitialPosition(m_mapView); M_PREFS->getQSettings()->sync(); } void MainWindow::initialize() { MyPreferences::m_prefInstance = new MyPreferences(this); SEMPERMERK_PREFS->hide(); SEMPERMERK_PREFS->resize(size()); SEMPERMERK_PREFS->move(0, 0); m_controlStrip = new ControlStrip(this); m_controlStrip->resizeBar(size(), true); m_controlStrip->show(); m_homeView = new HomeView(this); m_mapView = new MapView(this); m_mapView->show(); m_mapView->resize(QSize(width(), height())); loadTemplateDocument(":/doc/initial.mdc"); m_mapView->setDocument(m_document); // ImageMapLayer* ilayer = m_document->addImageLayer(); // ilayer->setMapAdapter(TMS_ADAPTER_UUID, "OSM Mapnik"); // ilayer->setVisible(true); M_PREFS->initialPosition(m_mapView); m_mapView->launch(new EditInteraction(m_mapView)); m_mapView->invalidate(true, true); m_homeView->resize(QSize(width(), height())); m_homeView->move(width(), m_homeView->y()); m_homeView->show(); m_gpsview = new QGPS(this); #if defined(Q_OS_SYMBIAN) || defined(Q_WS_SIMULATOR) QGPSMobileDevice* aGps = new QGPSMobileDevice(); if (aGps->openDevice()) { connect(aGps, SIGNAL(updatePosition(qreal, qreal, QDateTime, qreal, qreal, qreal)), this, SLOT(updateGpsPosition(qreal, qreal, QDateTime, qreal, qreal, qreal))); // ui->gpsConnectAction->setEnabled(false); // ui->gpsReplayAction->setEnabled(false); // ui->gpsDisconnectAction->setEnabled(true); // ui->gpsRecordAction->setEnabled(true); // ui->gpsPauseAction->setEnabled(true); m_gpsview->setGpsDevice(aGps); m_gpsview->resetGpsStatus(); m_gpsview->startGps(); } #elif defined(Q_WS_SIMULATOR) QGPSFileDevice* aGps = new QGPSFileDevice(":/test/test.nma"); if (aGps->openDevice()) { connect(aGps, SIGNAL(updatePosition(qreal, qreal, QDateTime, qreal, qreal, qreal)), this, SLOT(updateGpsPosition(qreal, qreal, QDateTime, qreal, qreal, qreal))); // ui->gpsConnectAction->setEnabled(false); // ui->gpsReplayAction->setEnabled(false); // ui->gpsDisconnectAction->setEnabled(true); // ui->gpsRecordAction->setEnabled(true); // ui->gpsPauseAction->setEnabled(true); m_gpsview->setGpsDevice(aGps); m_gpsview->resetGpsStatus(); m_gpsview->startGps(); } #endif m_gpsview->resize(QSize(width(), height())); m_gpsview->move(width(), m_gpsview->y()); m_gpsview->show(); SEMPERMERK_PREFS->show(); m_controlStrip->raise(); connect(m_homeView, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString))); // connect(m_mapView, SIGNAL(menuButtonClicked()), SLOT(showHomeView())); // connect(m_controlStrip, SIGNAL(backClicked()), m_mapView, SLOT(backView())); // connect(m_controlStrip, SIGNAL(forwardClicked()), m_mapView, SLOT(fwdView())); // connect(m_controlStrip, SIGNAL(stopClicked()), m_mapView, SLOT(stop())); // connect(m_controlStrip, SIGNAL(zoomBestClicked()), m_mapView, SLOT(zoomBest())); // connect(m_controlStrip, SIGNAL(refreshClicked()), m_mapView, SLOT(reload())); // connect(m_controlStrip, SIGNAL(bookmarkClicked()), m_mapView, SIGNAL(menuButtonClicked())); connect(m_controlStrip, SIGNAL(zoomInClicked()), m_mapView, SLOT(zoomIn())); connect(m_controlStrip, SIGNAL(zoomOutClicked()), m_mapView, SLOT(zoomOut())); connect(m_controlStrip, SIGNAL(prefClicked()), SLOT(showPreferencesView())); connect(m_controlStrip, SIGNAL(menuClicked()), SLOT(showMenu())); // m_controlStrip->bookmarkBt->show(); // m_controlStrip->searchBt->show(); // m_controlStrip->editBt->hide(); downSlide(0); // QTimer::singleShot(2000, this, SLOT(showHomeView())); } Document* MainWindow::doLoadDocument(QFile* file) { QXmlStreamReader stream(file); while (stream.readNext() && stream.tokenType() != QXmlStreamReader::Invalid && stream.tokenType() != QXmlStreamReader::StartElement); if (stream.tokenType() != QXmlStreamReader::StartElement || stream.name() != "MerkaartorDocument") { return NULL; } double version = stream.attributes().value("version").toString().toDouble(); Document* newDoc = NULL; if (version < 2.) { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "MapDocument") { newDoc = Document::fromXML(QFileInfo(*file).fileName(), stream, version, NULL, NULL); } else if (stream.name() == "MapView") { m_mapView->fromXML(stream); } else if (!stream.isWhitespace()) { qDebug() << "Main: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } return newDoc; } void MainWindow::loadTemplateDocument(QString fn) { Document* newDoc = NULL; QFile file(fn); if (file.open(QIODevice::ReadOnly)) { newDoc = doLoadDocument(&file); file.close(); } if (newDoc) { m_document = newDoc; m_document->setTitle(tr("untitled")); } } void MainWindow::sideSlide(int pos) { m_mapView->move(pos, m_mapView->y()); if (viewToShow) viewToShow->move(width() + pos, viewToShow->y()); } void MainWindow::downSlide(int pos) { m_mapView->move(m_mapView->x(), pos); if (viewToShow) viewToShow->move(viewToShow->x(), pos); SEMPERMERK_PREFS->move(0, pos + height()); } void MainWindow::showHomeView() { if (m_timeLine->state() != QTimeLine::NotRunning) return; m_timeLine->setFrameRange(0, -width()); disconnect(m_timeLine, SIGNAL(frameChanged(int)), 0, 0); connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(sideSlide(int))); // m_controlStrip->backAct->setEnabled(true); // m_controlStrip->forwardBt->hide(); // m_controlStrip->bookmarkBt->hide(); // m_controlStrip->stopBt->hide(); // m_controlStrip->searchBt->hide(); // m_controlStrip->refreshBt->hide(); // m_controlStrip->editBt->show(); // disconnect(m_controlStrip, 0, 0, 0); // connect(m_controlStrip, SIGNAL(backClicked()), m_homeView, SIGNAL(back())); // connect(m_controlStrip, SIGNAL(forwardClicked()), m_homeView->addressBar(), SLOT(processAddress())); // connect(m_controlStrip, SIGNAL(editClicked()), m_homeView, SLOT(toggleEdit())); // connect(m_controlStrip, SIGNAL(prefClicked()), SLOT(showPreferencesView())); m_homeView->blockSignals(false); m_mapView->blockSignals(true); SEMPERMERK_PREFS->blockSignals(true); m_controlStrip->Expand(); m_timeLine->start(); // m_homeView->setCurrentAdress(m_mapView->getCurrentName(), m_mapView->getCurrentAdress()); m_homeView->stackUnder(m_controlStrip); // m_homeView->setFocus(); } void MainWindow::showMapView() { if (m_timeLine->state() != QTimeLine::NotRunning) return; m_timeLine->setFrameRange(-width(), 0); disconnect(m_timeLine, SIGNAL(frameChanged(int)), 0, 0); connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(sideSlide(int))); // m_controlStrip->forwardBt->show(); // m_controlStrip->bookmarkBt->show(); //// m_controlStrip->stopBt->show(); // m_controlStrip->searchBt->show(); //// m_controlStrip->refreshBt->show(); // m_controlStrip->editBt->hide(); // disconnect(m_controlStrip, 0, 0, 0); // connect(m_controlStrip, SIGNAL(backClicked()), m_mapView, SLOT(backView())); // connect(m_controlStrip, SIGNAL(forwardClicked()), m_mapView, SLOT(fwdView())); // connect(m_controlStrip, SIGNAL(stopClicked()), m_mapView, SLOT(stop())); // connect(m_controlStrip, SIGNAL(zoomBestClicked()), m_mapView, SLOT(zoomBest())); // connect(m_controlStrip, SIGNAL(refreshClicked()), m_mapView, SLOT(reload())); // connect(m_controlStrip, SIGNAL(bookmarkClicked()), m_mapView, SIGNAL(menuButtonClicked())); // connect(m_controlStrip, SIGNAL(prefClicked()), SLOT(showPreferencesView())); m_homeView->blockSignals(true); m_mapView->blockSignals(false); SEMPERMERK_PREFS->blockSignals(true); // m_mapView->updateButtons(); m_controlStrip->show(); m_timeLine->start(); m_mapView->stackUnder(m_controlStrip); // m_browserView->setFocus(); } void MainWindow::showGpsView() { if (m_timeLine->state() != QTimeLine::NotRunning) return; m_timeLine->setFrameRange(0, -width()); disconnect(m_timeLine, SIGNAL(frameChanged(int)), 0, 0); connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(sideSlide(int))); viewToShow = m_gpsview; m_timeLine->start(); m_gpsview->stackUnder(m_controlStrip); } void MainWindow::showPreferencesView() { if (m_timeLine->state() != QTimeLine::NotRunning) return; m_timeLine->setFrameRange(0, -SEMPERMERK_PREFS->height()); disconnect(m_timeLine, SIGNAL(frameChanged(int)), 0, 0); connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(downSlide(int))); m_timeLine->start(); m_controlStrip->hide(); m_homeView->blockSignals(true); m_mapView->blockSignals(true); SEMPERMERK_PREFS->blockSignals(false); SEMPERMERK_PREFS->execPreferences(); m_homeView->blockSignals(false); m_mapView->blockSignals(false); SEMPERMERK_PREFS->blockSignals(true); m_controlStrip->show(); m_timeLine->setFrameRange(-height(), 0); m_timeLine->start(); } void MainWindow::keyReleaseEvent(QKeyEvent *event) { QWidget::keyReleaseEvent(event); if (event->key() == Qt::Key_F3) { if (m_homeView->isVisible()) showMapView(); else showHomeView(); } } void MainWindow::resizeEvent(QResizeEvent *event) { if (m_homeView) m_homeView->resize(QSize(width(), height())); if (m_mapView) m_mapView->resize(QSize(width(), height())); if (m_gpsview) m_gpsview->resize(QSize(width(), height())); SEMPERMERK_PREFS->resize(size()); if (m_controlStrip) m_controlStrip->resizeBar(size(), true); if (m_mapView) { if (m_mapView->x() < 0) sideSlide(-width()); else sideSlide(0); if (m_mapView->y() < 0) { downSlide(-SEMPERMERK_PREFS->height()); } else { downSlide(0); } } } void MainWindow::invalidateView(bool UpdateDock) { m_mapView->invalidate(true, true); // //theLayers->updateContent(); // if (UpdateDock) // p->theProperties->resetValues(); } void MainWindow::updateLanguage() { } void MainWindow::showMenu() { ViewMenu* menu = new ViewMenu(this); menu->move((width()-menu->width())/2, (height()-menu->height())/2); connect(menu, SIGNAL(mapRequested()), SLOT(showMapView())); connect(menu, SIGNAL(gpsRequested()), SLOT(showGpsView())); menu->exec(); } void MainWindow::updateGpsPosition(qreal latitude, qreal longitude, QDateTime time, qreal altitude, qreal speed, qreal heading) { Q_UNUSED(heading) if (m_gpsview->getGpsDevice()) { Coord gpsCoord(longitude,latitude); CoordBox vp = m_mapView->viewport(); qreal lonDiff = vp.lonDiff(); qreal latDiff = vp.latDiff(); QRectF vpr = vp.adjusted(lonDiff / 4, -latDiff / 4, -lonDiff / 4, latDiff / 4); if (!vpr.contains(gpsCoord)) { m_mapView->setCenter(gpsCoord, m_mapView->rect()); m_mapView->invalidate(true, true); } // if (ui->gpsRecordAction->isChecked() && !ui->gpsPauseAction->isChecked()) { // Node* pt = g_backend.allocNode(gpsRecLayer, gpsCoord); // pt->setTime(time); // pt->setElevation(altitude); // pt->setSpeed(speed); // gpsRecLayer->add(pt); // curGpsTrackSegment->add(pt); // m_mapView->invalidate(true, false); // } } m_mapView->update(); } ������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/MainWindow.h�������������������������������������������������������0000664�0000000�0000000�00000003433�11770671653�0021116�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef BROWSERWINDOW_H #define BROWSERWINDOW_H #include <QWidget> #include <QDateTime> #include <QFile> #include "IMerkMainWindow.h" #include "IProgressWindow.h" class QTimeLine; class QUrl; class MapView; class Document; class HomeView; class QGPS; class ControlStrip; class ControlButton; class MouseMachine; class MainWindow : public QWidget, public IMerkMainWindow, public IProgressWindow { Q_OBJECT public: MainWindow(); ~MainWindow(); public: ControlStrip* controlStrip() { return m_controlStrip; } MapView* view() { return m_mapView; } Document* document() { return m_document; } QGPS* gps() { return m_gpsview; } PropertiesDock* properties() { return NULL; } InfoDock* info() { return NULL; } FeaturesDock* features() { return NULL; } QProgressDialog* getProgressDialog() { return NULL; } QProgressBar* getProgressBar() { return NULL; } QLabel* getProgressLabel() { return NULL; } void updateLanguage(); private: Document * doLoadDocument(QFile *file); void loadTemplateDocument(QString fn); public slots: void invalidateView(bool UpdateDock = true); void updateGpsPosition(qreal latitude, qreal longitude, QDateTime time, qreal altitude, qreal speed, qreal heading); private slots: void initialize(); public slots: void showMenu(); void showMapView(); void showGpsView(); void showHomeView(); void showPreferencesView(); void sideSlide(int); void downSlide(int); protected: void keyReleaseEvent(QKeyEvent *event); void resizeEvent(QResizeEvent *event); private: HomeView *m_homeView; MapView *m_mapView; Document *m_document; ControlStrip *m_controlStrip; QTimeLine *m_timeLine; QGPS* m_gpsview; QWidget* viewToShow; }; #endif // BROWSERWINDOW_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/TitleBar.cpp�������������������������������������������������������0000664�0000000�0000000�00000011220�11770671653�0021074�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "TitleBar.h" #include <QtCore> #include <QtGui> TitleBar::TitleBar(QWidget *parent) : QWidget(parent) , m_progress(0) , curOpacity(1.0) { m_timeLine = new QTimeLine(1000, this); m_timeLine->setCurveShape(QTimeLine::EaseInCurve); startHideTimer.setSingleShot(true); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); QTimer::singleShot(0, this, SLOT(initialize())); } void TitleBar::initialize() { connect(&startHideTimer, SIGNAL(timeout()), this, SLOT(slotStartHiding())); connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(slide(int))); } void TitleBar::slide(int pos) { move (defPos.x(), pos); update(); } void TitleBar::setHost(const QString &host) { m_host = host; update(); } void TitleBar::setTitle(const QString &title) { m_title = title; update(); } void TitleBar::setProgress(int percent) { m_progress = percent; if (m_progress == 0) { startHideTimer.start(1000); } else { startHideTimer.stop(); move(defPos); } update(); } void TitleBar::slotStartHiding() { if (m_progress == 0 && m_timeLine->state() != QTimeLine::Running) { m_timeLine->setFrameRange(defPos.y(), defPos.y() - height()); m_timeLine->start(); } } QSize TitleBar::sizeHint() const { return minimumSizeHint(); } QSize TitleBar::minimumSizeHint() const { QFontMetrics fm = fontMetrics(); return QSize(100, fm.height()); } void TitleBar::paintEvent(QPaintEvent *event) { QString title = m_host; if (!m_title.isEmpty()) title.append(": ").append(m_title); QPalette pal = palette(); QPainter p(this); if (m_progress > 0) { p.fillRect(event->rect(), pal.color(QPalette::Highlight)); QRect box = rect(); box.setLeft(16); box.setWidth(width() - box.left() - 110); p.setPen(pal.color(QPalette::HighlightedText)); p.setOpacity(0.8); p.drawText(box, Qt::AlignLeft + Qt::AlignVCenter, title); int x = width() - 100 - 5; int y = 1; int h = height() - 4; p.setOpacity(1.0); p.setBrush(Qt::NoBrush); p.setPen(pal.color(QPalette::HighlightedText)); p.drawRect(x, y, 100, h); p.setPen(Qt::NoPen); p.setBrush(pal.color(QPalette::HighlightedText)); p.drawRect(x, y, m_progress, h); } else { p.setOpacity(curOpacity); p.fillRect(event->rect(), pal.color(QPalette::Highlight)); QRect box = rect(); box.setLeft(16); box.setWidth(width() - box.left() - 5); p.setPen(pal.color(QPalette::HighlightedText)); p.drawText(box, Qt::AlignLeft + Qt::AlignVCenter, title); } p.end(); } //void TitleBar::mousePressEvent (QMouseEvent * event) //{ // if (m_timeLine->state() == QTimeLine::Running) // m_timeLine->stop(); // m_timeLine->setDuration(500); // m_timeLine->setFrameRange(90, 1); // m_timeLine->start(); // // event->ignore(); //} // //void TitleBar::mouseReleaseEvent (QMouseEvent * event) //{ // if (m_timeLine->state() == QTimeLine::Running) // m_timeLine->stop(); // m_timeLine->setDuration(500); // m_timeLine->setFrameRange(1, 90); // m_timeLine->start(); // // event->ignore(); //} // ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/TitleBar.h���������������������������������������������������������0000664�0000000�0000000�00000004367�11770671653�0020557�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef TITLEBAR_H #define TITLEBAR_H #include <QWidget> #include <QTimer> class QTimeLine; class TitleBar : public QWidget { Q_OBJECT private slots: void initialize(); void slotStartHiding(); public slots: void slide(int); public: TitleBar(QWidget *parent = 0); void setHost(const QString &host); void setTitle(const QString &title); void setProgress(int percent); QSize sizeHint() const; QSize minimumSizeHint() const; protected: void paintEvent(QPaintEvent *event); // void mousePressEvent (QMouseEvent * event); // void mouseReleaseEvent (QMouseEvent * event); private: QString m_host; QString m_title; int m_progress; QTimeLine *m_timeLine; qreal curOpacity; QPoint defPos; QTimer startHideTimer; }; #endif // TITLEBAR_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ViewMenu.cpp�������������������������������������������������������0000664�0000000�0000000�00000001071�11770671653�0021130�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ViewMenu.h" #include "ui_ViewMenu.h" ViewMenu::ViewMenu(QWidget *parent) : QDialog(parent), ui(new Ui::ViewMenu) { ui->setupUi(this); } ViewMenu::~ViewMenu() { delete ui; } void ViewMenu::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void ViewMenu::on_btMap_clicked() { emit mapRequested(); accept(); } void ViewMenu::on_btGps_clicked() { emit gpsRequested(); accept(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ViewMenu.h���������������������������������������������������������0000664�0000000�0000000�00000000702�11770671653�0020575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef VIEWMENU_H #define VIEWMENU_H #include <QDialog> namespace Ui { class ViewMenu; } class ViewMenu : public QDialog { Q_OBJECT public: explicit ViewMenu(QWidget *parent = 0); ~ViewMenu(); private slots: void on_btMap_clicked(); void on_btGps_clicked(); signals: void mapRequested(); void gpsRequested(); protected: void changeEvent(QEvent *e); private: Ui::ViewMenu *ui; }; #endif // VIEWMENU_H ��������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ViewMenu.ui��������������������������������������������������������0000664�0000000�0000000�00000001360�11770671653�0020764�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>ViewMenu</class> <widget class="QWidget" name="ViewMenu"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>200</width> <height>200</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QPushButton" name="btMap"> <property name="text"> <string>Map</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btGps"> <property name="text"> <string>Gps</string> </property> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ZoomStrip.cpp������������������������������������������������������0000664�0000000�0000000�00000005555�11770671653�0021352�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "ZoomStrip.h" #include "ControlButton.h" #include <QtCore> #include <QtGui> ZoomStrip::ZoomStrip(QWidget *parent) : QWidget(parent) { QSize IconSize(48, 48); zoomIn = new QAction(QPixmap(":/icons/add"), "Zoom In", this); zoomOut = new QAction(QPixmap(":/icons/remove"), "Zoom Out", this); zoomBest = new QAction(QPixmap(":/icons/zoomBest"), "Zoom Best", this); zoom100 = new QAction(QPixmap(":/icons/zoom100"), "Zoom 100%", this); connect(zoomIn, SIGNAL(triggered()), SIGNAL(zoomInClicked())); connect(zoomOut, SIGNAL(triggered()), SIGNAL(zoomOutClicked())); connect(zoomBest, SIGNAL(triggered()), SIGNAL(zoomBestClicked())); connect(zoom100, SIGNAL(triggered()), SIGNAL(zoom100Clicked())); ControlButton *zoomInBt = new ControlButton(zoomIn, IconSize, this); ControlButton *zoomOutBt = new ControlButton(zoomOut, IconSize, this); ControlButton *zoomBestBt = new ControlButton(zoomBest, IconSize, this); ControlButton *zoom100Bt = new ControlButton(zoom100, IconSize, this); QVBoxLayout* lay = new QVBoxLayout(this); lay->setSpacing(0); lay->setMargin(0); lay->addWidget(zoomInBt); lay->addWidget(zoomBestBt); lay->addWidget(zoom100Bt); lay->addWidget(zoomOutBt); } void ZoomStrip::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } ���������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/ZoomStrip.h��������������������������������������������������������0000664�0000000�0000000�00000003572�11770671653�0021014�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demos of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef ZOOMSTRIP_H #define ZOOMSTRIP_H #include <QWidget> class ZoomStrip : public QWidget { Q_OBJECT public: ZoomStrip(QWidget *parent = 0); protected: void paintEvent(QPaintEvent *event); signals: void zoomInClicked(); void zoomOutClicked(); void zoomBestClicked(); void zoom100Clicked(); private: QAction* zoomIn; QAction* zoomOut; QAction* zoomBest; QAction* zoom100; }; #endif // ZOOMSTRIP_H ��������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0020133�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/arrow_down_48.png�������������������������������������������0000664�0000000�0000000�00000000777�11770671653�0023350�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZݍ0 07B:G_q؀N�n:A1AԴK*"vld8nb|l( x)eQ4qX`f L\ O]; Cv - #sxo $@"$@"૥Եt.j˲k. xkc�@aOS-1\L:�_Ab� |{+ѣ%|PsM/ tQ't%/5&veߠڥD&^7n1w@SK'e?P  M~k֑)Iـ"00?GUi-xIT:dz$ wLh莛D_2DW}ptMT>,<qD$Yg 0�9%<����IENDB`�merkaartor-0.18.1/semperMerk/src/images/arrow_left_48.png�������������������������������������������0000664�0000000�0000000�00000000721�11770671653�0023320�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��sIDATx 07pu::nn Ni V$-.%kz5(bD؈y�`hc9z9<,-/L5ciI6RbC !K/?r%@o PPMd{ uw3]&Iq^ YV1Lj�8bB5J()8%*@DM p~_M�80?)B0)I� R.k�ǁ,#_DvetN @9<)΀4m6hi:m fP ݶJ "W__5繂G+lu Nr>_ <mo�c[MjX����IENDB`�����������������������������������������������merkaartor-0.18.1/semperMerk/src/images/arrow_right_48.png������������������������������������������0000664�0000000�0000000�00000001021�11770671653�0023475�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZq0vqA t<|y #= s2p37ЮNZ8jF!VXؽE1<?[3w@Y3MӋβ,kɿW[Ȑ3HZ#,DNѮLIBQ&�bGֆH!"qsh꽍+r.'ڱ=[ҹ8fmD[jN;@YH$#"&~G&P@e/@w305K_Z@p-;gd'\fef<SF&렂HD<Tk�t);ͷ9}t]i&[U Gƫֻ>\AD9HjMX(`b]di\T(*,Ki.9}Ģ � 0�ҎR����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/arrow_up_48.png���������������������������������������������0000664�0000000�0000000�00000000644�11770671653�0023016�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��FIDATx 0 +nn�#x#8>GB H[Zx'/®=K;a`]׮ϡP4]uT6-$!<o/:q|+TI &9UP"`jg>d�* k�%NL[8zr 'R- :[‘AgSĵNX2:̳y+7:iX"V 浃N8XlЉ͉kϠYTtz/fîɄYHm#ZS: z 0�1P59F����IENDB`��������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/book_bookmark_48.png����������������������������������������0000664�0000000�0000000�00000000465�11770671653�0024000�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���IDATxA 0Et7G*[ O GpM=7SpQbMFf |  ruy#8#(bhҾdRiתZ[<ԧPVz= hlh!A U,L׏""!!!!!~ysy 0�cBn*����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/edit-find-replace.png���������������������������������������0000664�0000000�0000000�00000004070�11770671653�0024116�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��IDATXypU?wyK#HB5HŶQR[.:L:t:ጴqJ;qDCg(6LD$3yֻ!oνg9sݤK;vqf%IR,ȲeYXa9k{>I5Mۼk׮_I<n,KX%4MK]9 H3\Ӵ'IL&Ŗ-[/^aF$I>}I0MM<?8@0 <0tv;99.#''ILP�z$|h(ǭQ]S** 't:YY߀ `.Y,˚ dρ.p  w41ާ| �lٲ9_ cl~!DyCpU9y`%,1s𸟿'nq----ٴq֯&pvn" so- ;.cgCC1u<b EE%؝v>ɓ)%4T;l9/QC׃;ANÁ+IEia6y)֬^C8<ʊ+(//a<YYLEt S$Ј%h%ѓqQy�YY|twwsEr ap8#eǰ ,! N&l2c?;'ƢTUU]k8liN%$xqISH Oh;eDUU***�Вq?KӓaS!X0ӓxўs,]IFMl H5 ?+3;=@yy555wF&h~i3?]ݒ?zp LNNԒ ڴډ*d:X8T$qj8I{<-UVWсd{x-4+},{(9|HuU iN'eE9<s  ܙ-BI^~F.֮]Gmm-v1鞭 8ra|! n۶MfNn6B!Z ؜9cg8Q h_mΦ]nN`;}jd+JL%f~׽}0. >R䭟O4 KQWWGM5,,@QUFphwEK&dff='Գ[> 29aG=0mX)oUj->Ehl ]v�H2V6dI)i_.@lh!;Ym*uuu’8z|BNn$ E,.,Ae$IBQΝa(8'>YTW9sd_ yz!Ě˗GF+$UVx< ff!2Qm-חPPq?əx6<oR`�d_RZJ'TWՒ]D<GeE0P%c~|ݍ7dr Hct&(`J, �Yljmm]ϑ, EQp:N]]$zu5ظ29pT OjGdYu ۂ@MD^npIPU˅i|>LD$"#|w;kĘ 05|FۀLaz+\la92e=I#qr(AװG^~-p!ޖR<uwwc&gN!r &|!7}*++¢eYnM_`/Az悯� z`o݆e FF'8O%ijRyt5�,O !2222RUUB`t{c%3NBEAUUEAQdYnOy8(ȩYIҮRūDoo mmm#Y� /UpΫ@�,/;l?_L@I }(Yd����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/edit-find.png�����������������������������������������������0000664�0000000�0000000�00000003144�11770671653�0022506�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��IDATXmh[^]ٖ7َ_j`[RҒMIf4Qؗ 01ePɖt]^x mΛ_f/8NHeɺ{!)v¾큇s<?s(8{웚 !*EAQ,²,Y]oLz{{K3MӶ,˶,u=lR05z3dӧO 9 !!0M2t]G99#`6`0ض,(5^cf J(*|]Bۋ*Q в PlafрO0BP<)P "ܺu]vp_ O�ё!ߓ%sYZZDJSYYEMu-p8غuض⑒ äR\5\._>AiJß1<4}/ܲf|Vnfx3~V:B21H}{9j'o[KU@)PXBޡu|Z'uouu󝷿Dvr)N S,sQL �q;?ā0_}%r|AƁݍwŴž}/'!m{�Ť{vos{ÁhNMrQS?4ĶۙGJ%Ⱦ (2/7f "M CZDZ`CT[,3Tϕ\u7e az~ SϰLk E� I Kw-r{0t$@�y&MsbH`ˢġ9q]L PYI34m'#  N#K* ̭UWW*}}]= /?wPeraFZ1 ~sss՗xloD68+$2** ز`G7CLMMH$n\RѦMܸq(羽w~!#3<꣺B0,F兩n"m5%IϹzcc /Auv2@"6>'m \l{&thNgΜYb!Rz1MVVҌ{*vCs:1I,O?�PDQ4Mc|b1,ŋE=j_p(@4Eav6(3wI.'~p8B=LϹ_PQQA0n0??dv>ʵkWL>{Ote5^=A_rUv|8P`]s.8R>EQmx<z\ܿ%]IR,//L&I$$ 8TGbs۳,FZ67 vzzGNS k`)FU¥K;vVw X}Psj W <WV]kEۀgZwl~vF,(%3^TK p.y� hh W�/ F ����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/gear_48.png�������������������������������������������������0000664�0000000�0000000�00000001755�11770671653�0022102�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZMv0?qNznؖ 5EqOP%[V '9E$\Ga$ٞOoyېkLӏq'i>|-缎zFkS[៞# o#QCЅl.\\}L;CP4>V! vP7W]o1㾫*̝ TP?.i"ܝ�~4#vR{@x5paǪ #Lh,w8Ux`m`"] j {Bs2&pxn pel/�&Ұn 6=ecѭ{6.?y%�D{#$ܡ !t)KB햠ƶmC?Гgf' ZYl1J�cQb8^F#A6qy*AFlU[1) �q* dp?: "$2*xBXcVU\M`W}WcUqaQ4ª#�FK^"®jTN(]Hȁc-w WbGIS&(Y ^PF;G;Չ[y_~:%B@S�F@K& (LB.lmY馢'CZ�:R1t[RlLk4"k Alyӌϫ! ѺeSwlBwjT5q0~ѩ^r=Qp͢#6`EC)j 8SM2zU褝X@�th�̷YĨIk[_Lk1ƀy۵'JP200끮n�.w]+ *֕msw? � LGe ����IENDB`�������������������merkaartor-0.18.1/semperMerk/src/images/go-down.png�������������������������������������������������0000664�0000000�0000000�00000002243�11770671653�0022214�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��ZIDATXKlTU{-P4jJ&1 ##MQnи%4Acbb@<ڂ0B<ǽ̴2-#a×sg9ǽ=Ӣu^�`LYzҷ�t8gb`:+-!ׅ)S#� ۉLelȦlЦlH$Y6]$:nG-n|=�UUdo83@A|�"6/"]Z9D@KGwlEu~6 E @ !i@P҂a0( %%^&^TgnB>XXWCf*"X VBh {H$JX: "|^X}rNh#!+!)ύtq.@xjOn=Ff1k g?ѸDOo:mA[z6R0*h@'^{ZvwS_'ڷ p+ȤkY=E*&W"r=s~Ӊ t8s5^μbeCęWƻ) 650xsw{̘<_B_xxp~"[l%4=3ko}*2捦:.v]:os :8e35jO<Ei0dOdgOfx�r;VZX5d+ړa@y OkT%:q fy/XQDXk?]7켊ўB{Kٓ#SD+yKвPvoD8QVh_ٔ*~U^vt}qƍ �p`3LڎS33q�1si[dRko ;&X9Hښ]״ޫm/.< /3U~[3f I$8t7-ɩ4+Sj2T-o=s4>pV~cS `(QJTuVG:k䔦#go] U`^0i 6~OOX}}~9vԵPf4x:XXPQf6gZbRз  uO^Ŀ5/vm����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/go-next.png�������������������������������������������������0000664�0000000�0000000�00000002303�11770671653�0022220�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��zIDATXhUe?{qd3S ~.(*- C2#( B7#  D#,ei6r*͙S7ڶ{~yw_{=y}mhEQl=wu$O{b{% Zh-r凯}kǓ0nzloZR0p1'p˄JS.Ggjofe,(g0Z$8G*9b|rF [^Z=OAmti}wh,S.hdOdLl$=A-ݺ5 ,^e9H$BfJa &;k4SF?HyMi=I̯ؽS3> ).B,m (Z:NӞ:*glU_.=L3W]|Zx(<tPE^v&N~iΒ ÜڙESDSr.|ᡄ> d#;Nr7YqwsFmYh@"VatxhKJIsh;%m%S||VKkÒ6h Fq<� gR?c FC=<M )R V`9X@i  h#ylٱU6H+ i )`�-b<<Y6ߗmLttYZmL_DB{)çT!Ü\<'낊FfUKS$2 t^|`EP)L̗Vcb7i*;GL gú$_{j�X.u%+g/Ɇ ;lT[%c$`�]E08),+dY@F>NGI.Ffw;2 l#"UDftӔ>qXrԮ0?rsIBB-0-g! vkK>ru"OW|1D�^ 򡬢=pdA4.|,cҾdA}!/wtlɡx-H@ERF677-߳Z}ETA)ɊX����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/go-previous.png���������������������������������������������0000664�0000000�0000000�00000002260�11770671653�0023120�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��gIDATXmhU?̊"ôYݩeVكJ SM{^ ^AA7EM0EJEe|u=޻{y۽׭@?tLa FU_้-; NȄ<&V oG<O7 UMMZtE.Tv@utֶ7V%~{Iӓ"0DY3g2+:N1i ѤrC[6ec5Ypj,p|"mbꪟn\i'uk i4 Yl(jc ﶼ94lw^lEO]'Hfpa Xjch:!G$P=^߭1cDɚt Ƣq.38,΍D-w,߳v4C#A@�+ ' ',F&ׯl\;KgY!RZ�B K2hp |%amXp8 Xk}C&Ε3qT kV;q֩`ySq>޿sK_*S̵%>C- R xRւ0a� MP͌Iڊ9KoKlޤoܣu n2 "Ey@|֔@zRTST #bc}+W'網Y$(_|C9A)xAGjC S-m[o$^ZJoD9YY�4auXŎF GvUmOO_vSk#Cr~𗀄{4|il5N|he7vnbaͪ?P&uСd$mBR S$Ч>ןv7-q �I`H9ybµF{M] /άG<JT)GcGD6$WІՀ <рwg>p;^>GpMpt2Ab̶.1CŘYttLT�6rõu5)cF����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/go-up.png���������������������������������������������������0000664�0000000�0000000�00000002251�11770671653�0021670�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��`IDATX[lU5{OO{jCXD$JZM1T%DLDD1KO $Q  Q iz93{0rz5>==k ܴ봅;)bn4w=)_*6̼}W~[ -+3-rJ= .?_)vMf&Sl_rg>#0 .lU6LLtb&uk8--NCZ`ĚX~[{SnC:Ѹ=1g֝s "8 !-Xs״es쮉+PQk*]ʲ5'0idOGo#K{?t;JM?P^k/:c3U㿶ӝh5<?CقoNV\:<^1bkX,U-=k`^<&_=meunc ]_s_j:~n %+ }GJw4ڵ_VW/*:]N@U#QQcςg1J@E?{3� `(|~`%5ߐ N5!sHnax-]g\Xm[ۛgݶX玍5liY7hލ5;!1ؙ} $=m8 Q@*5PՁ ?\W~x0[f_p*tg TbAJ^7``PP{;#$䋑P+K_Ə$q\?GB;9wNah~ @ $FZa�RKIh$Q:Eya&.] c)MalTfπ+PPoԆ1πg$sH>O m UIQ#:c  022i 4AzGj(VW_?T0R� qP55<hȵMsPJ3RY`,烽;G-'ڱ@^Z}w*.3q% <3>4Kgde2&l˂CD3CnPh�'Ӵfg<9ioご|~����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/heart_48.png������������������������������������������������0000664�0000000�0000000�00000001243�11770671653�0022257�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��EIDATxZq0 A 5g M'h�6H6p6 `jr/:8݋|pHK~|0v۸)WЅZ ]]yY`3<5 �$ TExvy @ 䑮Ovp.<'iŎvuف==j�ie!r x8:a%�@,Y "pG۔� l9�OĭP@E�3�+@�/jt\=@D�w }@k� k\<|jt\� )Dzl8TySpBNZ kBҵNePg7Lj9H'-mb, ìm2Q&*j<HgڭݑAagԻb-2tUm̤'f V6ʏW}Xe)*nͱrem �ؼ0nsL<l=kP"` �Hͦf<.2^1pڀ5NC X/�ٖt?����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/list-add.png������������������������������������������������0000664�0000000�0000000�00000001131�11770671653�0022336�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��IDATX햱kAH$D+AX?B[CF+AA\aai#v"B,LD"hlryMv݋Zx ;70cDU۳z?v{:�d֕3vO"ae3No3A d홆9{!K|=Swz"(-g˙Z|w͛ܐOK1ђ<'!${V3K8̈́ N΁u}'l('Aq)m/Ǒp0VLq &o3 s R7</|tn!$>~1j>,$jt mPcT&tlV%~~3# jiw] (0[@ 4w$H^wIH|4N rZc'2Se_T0/]X&΍-OV +0JOhC3o? WLv����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/list-remove.png���������������������������������������������0000664�0000000�0000000�00000000475�11770671653�0023115�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d���IDATX!NCA}k8 p pE3 HȈRҤo+7$I$g_>~r }绋ugv.^N@)5Ng= �^HKc/Jj{kT퓦{5Sd L07-Mj%/^^g˶o^U�FCj.a&c?pb>RUf/I$I2od����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/magnifier_48.png��������������������������������������������0000664�0000000�0000000�00000001514�11770671653�0023116�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxXq09@EWw"wT`+W]LV,d/XT&;#Ͼ݇.KrrOl6?өi#ՒjAu&Q=Q=!^,NeQ]QU mGL%FRq0]Q\'3&<g i<�0E``]pMlm_>ü-Uj&<EӅzS}a` �x5e09Z3f11A)*F bJLс%BSY%k#E2p=J%}.-RuL{<-z2窪nSAZ(bBDOأ �ynC)5Z3K[at,&@:TS<"prBU�61Lti{h-�\�hh%b%r\"D�pFhPp7%;wTqKRI :g Y+t0 wfc�`U,1J9Pi}~橯!f4O$s"xQ:UqWq&! {N1Y3:`zrzU9gnd @*|}fBnk]h֡@\Fĵ p1W XUl@]Hd�8c@/MՍޢpm!�C_k'����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/minus_48.png������������������������������������������������0000664�0000000�0000000�00000000270�11770671653�0022306�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���ZIDATxر 0�Ae6f9B/O5g ����������࿀U5,̰B������ ]��������������ɹ [GT�����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/on_off_48.png�����������������������������������������������0000664�0000000�0000000�00000000373�11770671653�0022425�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���IDATxA )m|KJ⅄ 6LOpۡQ9(8;ӞSJ[&j^zi|v#_zb!�� 1?2dhE��������G,������;e Lc!Ȱ5zjw]�baC����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/pencil_48.png�����������������������������������������������0000664�0000000�0000000�00000001172�11770671653�0022427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxm0N�$L̅87�AG7`v32sb'#aɢ >Kbur^1i26l`Oki7# Pmq!]|kQ (U!:/7تje@Eb2:7 xDk"t= `m+qw?& U f(Q^*D2bT)*T{Y5)m%PHD0@| o72WxN_]զ@}@P)@?�}DU .Q D"W1۾"2^}=^U-?^O.AI9+ m_>^B8A.dJvʰ. 6k | [ "!N@wcdk`@D "7 VER"omx&G ̵?CKʌQcB1>x&xk �Jt����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/play_48.png�������������������������������������������������0000664�0000000�0000000�00000000750�11770671653�0022123�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZM@LVC@_�:?8:v{ؾYiΌo|+euM<χeeY^g|2μ:@'s80P uΨon{@_B+㛱B%ץJ@7xeq-iܾr({m:n)kTmqs$u3n-q;gE ͊[kanP D`-*@-`?ivj{s,TI.T n@4s;g~J|Jځ䪧rsZ 2Mn>&pTҼiSL>zxF^pzXK�HQ) ����IENDB`������������������������merkaartor-0.18.1/semperMerk/src/images/plus_48.png�������������������������������������������������0000664�0000000�0000000�00000000410�11770671653�0022132�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���IDATx1 E^l܌Kq2'1,M^d$d4^! Ic4s����>T�?1gV)$&7lF>AB������� +ݨ}l喝sBB&0=P Z |�U������_h��!����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/process-stop.png��������������������������������������������0000664�0000000�0000000�00000003607�11770671653�0023310�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��>IDATXilTow6@I FƮ UAEi+5!JժkUZሆ)D UT8iTZjPdaM0ۛ7oyockW:zۙs]F`}Z$pd%?a%WU})-um,ml6M~X(t4a,m64vv~x.ǐk/<v̛D  ţ0I U駕@' ŸW-V<v̛ H R"L{h ӛLڃ^ѣd0HC^˿sRc$F۞=X RA۲d]c/9KTs0%F 6z2tJ$t:un-֯7%FGIBp;e .Ak:Ea`66M&L^% 36lþ0p8jrY}!D,㡼50q4GĎn%=iS7t gY-[{HjZn9fbOmkC6Mֆ<ҴO&ۦknΝ;Ήy, Fd6 @g}>A@۵̋/љ^/孭ϜAxEg$ ~SSgȋhqXc׮AEٮ.A@Ee6 J)om%yxn6b:MՅ Y jve-#q\8LA weΝk$Qy'@!E&B!Z ))]J`E2M"(QQs"11י%HK|_(IJm" ](U@U]c"X#-۲;uĸnZxʛ71;;|IL<ٙx3PUl*D�0OAH)ToLEOGE絓&p z5 ROXVN}OR}YFE$]Grۘ؇~ dzl%krՍ�PL՞=h H("fHo41~f{;eauu!2>@״XJmK_FOf\/]bG") `j !**eLM+P2iRaÒW<8TF?tMoHùZ֯؈fM\ŢH�_`cG_lx 燇xe�NM`]kkA|CJrrDSs= 9 `;?_?=>ޱW6fgQgg"f>UUT1|*s_| `m6lڄ7by$X&cc"|yfp_N߾M"*MԠNO/ϒ׋XVF&+e-̤R_,)<̧mݪZ=#B{(_z*_n:L HB40L�?L8g2kǢ^L+K(4mJ83>>PNCt!:\ߕTG''wV U͋X-\xhڶYhk00]LNL5Xmqkjj-MH[ A˝+]; /oξ{wi,,w\`;۲ gf,�@ѹ�72k p^ZƷdKíKp*@5$`/B{c  r!4�@f1xJ0.P<AL bC+ Ql����IENDB`�������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/reload_48.png�����������������������������������������������0000664�0000000�0000000�00000001437�11770671653�0022427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZq0Cq*HR*GǩLgw`w`W<Ų"9 $03;ծV AUUlqnLw\#}+#-"<=kur* \Ē뺍:`ɬx<GAFp�N w>uGkS!N $HycHpLQR ~I( &Юc𲈥6BxِZYHqgBx%Jh)ΐ6d@ ܧҷ6#<_iSLc% gzbcJLNrӅJcoӨ xZckջ,~h. J>lsj}"5F`ygC#0J8r|@_!@DӺwF"4:" 9^Bh Xy& @1ƾs5`h("Xܓii7U#D D-ը";픉@ r[*gUK$1u @fPYs-K+_}K R)@K۝'O�jI-%R_Y b+qDZ</ ^?KҦiR{ Q*oeתcdmʶ5;~* K$'m!oV`�ɳ:B����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/star_48.png�������������������������������������������������0000664�0000000�0000000�00000001157�11770671653�0022131�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxԚm0 {AANPA `l6H7(J |HVD}~~w$Tybiۙ9�Bv�"@@lu@Dst}`!P@h{�&\F�J2A�X&. G,�&W÷ ФiZMy֓5l>nh6|k-! Q7ݎBgzfi7/[\X|q,TI"IA4~!^<IEsH(I)d%FeN$+cG(�"bл뎽T u1w5-%^q+@9a#R0@86ծ *3%@0*oػL$yy =pHp`k(C7+DO]YRr%Aׄ0K,L@&DeY�hd()�e $՘G,eyO� wZ`����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/stop_48.png�������������������������������������������������0000664�0000000�0000000�00000001172�11770671653�0022142�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxm0éll@xdyfnP6(AG .Uw>;FIg}_vPxuO6wbw% x<}ۭ D/$% #xdϖ Y)d %;%�¶�)7H5/l #Z*a_S+*DnT"H�xkʹR~χ#ߏohQ@2]F>$R 8%5ĝD9Xckmp5xͻ 5x*WZޞYv$>Ӓ U% 2|\ f'- _٦X wMD3m\am+3H(š$$@ )RTNw[;nb3ˎ3\pÏ Mv0f$F]hVxu`J ',DwNϮmi˺\.WbLHy&R" ] E`ËH*]�q%����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/system-lock-screen.png��������������������������������������0000664�0000000�0000000�00000003327�11770671653�0024375�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��IDATXo\W?=8I R ` RXtaUD. ]@jVlMMKkǩ'm̛wof<Lvđ;ss|Iuo^~?[c{,yؙϟŋ0\ų?k*9ؿØ߾8I.\XhbRq69&( LG A,Y^xLMf8hK#^�\.+^<k1gN:@Α,#,ZkvvvX[dkC}T.x>1k+[r90 Q&xa}59CK߲Z8{(gΜyRu #\vwt 91sG'y&b�)s9%YY% Cr5^}J WSO,4;; D3?*LFcf{z Z4R0PƍT?3oshz۲R&5Op41VWWsn@L& x66 q]fCĘpDB0?H�@)y߯ѝOr!?Q&Bt.c ̾{?<I& 14)Ov(ϲ1R� k=0<3̍ikm/�\1u;uӗ 3p[83XM֘]j˼~g� ܺ>Q7 ((J=Ҋ}L@$?q5uM5uR<w:B^87{ (=�@P`DL˃Hĥ{vֳm):(">94{V=8ӎh_3J)j; {Z:z8gP] PsBdž %C @qu{9?Ð34cGh"BjUFƟ`0 f&Y'tMmpm<-E @kFAkMbl� a1(DQj+OS_DiZIKk5MZ^@6+ll4ix-0L nbyQ^j{9(=<M: 0z[�ժ#<8*.�Ԟ f+ԞFu7F,;t1`mH_ $}ɞ3AXW!hǻҽO`09�ԗLMQ"RA<vʾe;-]X\\$ z�syJ/u֦( Ճ('N=|.?ucB>whjfn~črT* @k�-�Y {̫:S_;(+t맣svtAR<r}- �A{e2LÃA*ǎwb '"Xc)*PZA JluX( RR(�bEy[I/U+�M i:BE9@OLe6P|6U�8Z4NO^x n)m�s�=4@9Z91555Q,'|%[[[+ju4m.妟V;;DKZch �˴Ju݌?D('6<����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/system-log-out.png������������������������������������������0000664�0000000�0000000�00000003275�11770671653�0023560�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��� pHYs�� �� B(x���tEXtSoftware�www.inkscape.org<��:IDATXMh\}η ƶƑT0&'Q0V`hM[ȦU7M'fM I?tQhCHƦ"""nbۖFo׽f43 =p7ͻ?̽ 5 \' D:~EѵY u]\Ƕ1 FJEw޻�Q]񕟲H"" C(JGH),bիW?ZyUQ 4M,BJ^+PJ0 ǡ\0M !D P*fn88XmH)ZwĴ8CXIJڡ7 #@T]\qض *Z*ض8Q/:3iaf p'H'Y`w /1! TG$4C-4quS'mn˲zI<tB$a`&BR/6i84ٜ&Y`/JzS2?vo1vd%nfaP OӓWXh2@255ۙpk/OvwA)OB<7�Oro6Gȑ#4} >ss?oz7oR8wwߵ1 Akt7(ƍT*fggq]wrmO33;}@K#v h )_08qaFGGrܽ{y}>}a4GOh`YmI(yzЛJٳgYYYAG*?I嗠¶4"R;`z۶assjcnmNL,-", (C6 h ,Bm"Ы~zz8i4j ůfLBxf@1rgxc?@oJ%ܺu ˲r:v"g?-/G3g0 ESMCy hX>K}"O}!w|ɱ1gk>p0 D@>zbҠ$ (Xag?g* < RJn7 CÁ�1 b&KKuj'=<;˽~'(W@i^1p;uhI3kyQ{.)~m--%.ׁ� ( ! Cb@TJS0Mˍj?GklZo �r!n'TU\%qx \t?Oŋ !{"C0 <kk-zɓ')Wʸ�(L4Jid>j՟�7_+eVq  AG27)%<|2vɡCh6wY2c<15Aa6Zi($_Zk@H;9�귔%8aZR+vY|@Z�C)*JnjV;Eq!R?9m~ѵ~AΓfBc;~�x7ݦ3cˍc\����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/system-search.png�������������������������������������������0000664�0000000�0000000�00000004247�11770671653�0023437�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��^IDATX͖l[ǿNL֩ I[!-AMnLӤ`eBbRX Bۘ6uu"M)LMeWmc;Ѧ4ؑ޹Ws)HD"rԂÇ !_>A�ضmB{1C�GumBP<σR 0d066QrRy#5#GB+ۡ*4MimAE(ۍR! !/b?8|pP 2 .'J<s5>vM+죫ܿ>e| Μ9˲ּKeuj5z �g;/&J&oOڥ84�P5]R]mk~s1<<<WTZ#Hy)�vPTwޠ ~ˑˏ<n{fWIlZ,\OKn$~]]]HRD"<זG:eY>ݍYĥJ]u_ZoEY8^9^vҪޣH%HWBT6C~EQ011+l``<lY7oUCh-+I9K/<!<GJتF~)ױLiCCZ[[!WM�ؓ(Ls;w9MMuPPAN84#q^MXNEX'�I`6OF+wzL۶mJudefM1ʔ RYb{Gm|�е@G"RNݲˡՉhQ PQG,ʘL`]H@0TČZ10t:`r�*1hOݴu!as3`ؔYWjtrVMA! .3۶AkeUWr%#/ '@H1Ri�! L(+"1R�@r9�҂1Q8-Ay|jNFSdp`+ "�d2X5t�._| |a_  �P<Hl�Դ)_(ߵaiډ�nvӳX75Ƨρ#S0pL�ǜd�"3J_ٷ-jHHӈb$"A) �GjtȹcVtQ8`' DUȥطW5:<j1HHK{|2|0աPOhbYGh!ӪZrfxT2ӝ|wϖ֖W]ˡ^j9 b1m1 |aÆ5[nT ^DzVT�F={ǦᩝFrp88w~?TUʼn'&_#��8rH#xssN455AQa6,B\iH8}4vލD"jT*}BRy>8%X'O~cOL&-JPUb|tx###f5M[0zf!":;;d`0b/ZD",� ؊~3R~__O?-}GGSpT*I 2N:d2~ٳ'k׮=o>0P(`6<>S\p}]ןo[\oO*to7ND"ѳqF^EB@A}}=z{{qڵulVFXcǎڴiS]t:!mۆٹhq� � URttt@$W^|A---n{rxUe(ku]:�ugϞ޷~J6E( B�,�Bjw/bsNStAg]]dI3~.{<mmmy\o~ab%X7-<kYPo۶ <�:Db]PoB6, oYk_n3+Mz@����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/system-shutdown.png�����������������������������������������0000664�0000000�0000000�00000002037�11770671653�0024040�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��IDATX;O+G61 )pNt4/H2/ PDp冂)<&療]^;ʑFkg9 ߍ 988_!)1dBJi![[[B`bs{Y.댱ݔR~ί؍Fs<pԌ15auu&G�?�JB~||R qr9ض=jH) 9xzzBP?�.c9!zz-rLz{P0Ơv hR^78 ˲FnX�okQAjt:,+R("ht:zHGGGf#ל`8e!H`ii) , c&Q��8fggC1p ߛ #D(B>%'NR*�d3 LF/E`aa99#}<(LNC9nx*�r Lӑ�^DUSƋ@TPJ /..GDU )edp]7033 (  OȽv q`Ynoon`<<< Jj|Eqpqq)%nkEz@( #0Lo6>.//Cs8vh>Jc(Jj0ƀ1J)lۆ1V @JD[0hQ3Ơlqt]! $ BNTIeoBL&zp�RUJtfBΨF>-˂R ^��iZ~yyv]hC>T"1(<\R uQV7�|xxgRB_T*Y*bk�~NOOFvS*W?͌1///_?aIH3rB�W�m�l ī����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/tray_full_48.png��������������������������������������������0000664�0000000�0000000�00000000404�11770671653�0023153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���IDATxM F�[xhWMeJ.yEUY`wBSx RDwZ4B!B!B!B!B!B!������� /5EW}B"Uj@7s ���7~{�PC�$e����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/video_pause_48.png������������������������������������������0000664�0000000�0000000�00000000275�11770671653�0023463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���_IDATx1 @3m>y}i̖+,LotYTթ(>nGۙھ�������������������������������� m��9 [����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/video_stop_48.png�������������������������������������������0000664�0000000�0000000�00000000266�11770671653�0023333�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<���XIDATxڡ @ w\fH]{{Nx{LĞL���������������������������� +� [����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/view-refresh.png��������������������������������������������0000664�0000000�0000000�00000003750�11770671653�0023254�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���sBIT|d��IDATXŗilT޷q ij,\5(%%QBZ〚㦊RRPFE,iIҪ qC M�c xggz7͹;w= 66O7.(;U8[9sX n#u13mǷ[SZ[[Č�5~0-ݰ<T>XtM#%Lp@`ʽ|s }?EAӢ߷xSt ~]U..eD$IK)s~3@ }Cn#e!�XƇE]70-m]=kad^@ q$ %A )$|t}p&_[7U8y^�e].jx:0+KrKdaX!P lWr$HlI0m3<B(Srʁx2xb2Z87<! �P/++z[r0ጁQ·H 檥C%ܧ2MF2c!I!+رeU ktSSw 8ܴ,eO�zϱ[C5݀||Mr\ mp%O5]̉hŲw`L Ty%WWV.~ڇh8( GP".>=6Yͬx)w|e"y`D<cCJB!DWPˁ:^X˽8-&Pg JXI4BX꾺/Uu7/$4�\� H&a9|A@?p&;LOfj{�XQ( �"1nL (6\G�5y8 ̨cV7~?\*?i  .Upfw;"Fلt5 M[}]XuA��UpN& {EޙI[M LջIp-%Bu@f>8S'<&"F: &�x\H"خBMb߉)ronmܸ(ۋo2'q>BI˝ vq3kwRgp͖:/177 @M 0f4Iv p*/>, N]YQUmk[c�O2idm�xmtF.i�_pjH$w0XBL }f7{G 9w> kʷ uGkª8eME"9.^%8c_GO, %F,F%Y"/uvj}#_ TGѴPw枹Ա /S֤w?ڌ""/Ep UhP{'dt!qvKA hX~ɚ.q nIoK[6<Wc1 B0Da1,& K1hpI* iX1jc^� �n&֑S:zb?_tbLۈ-r$L[B[5B�1d2Y gDϮ/0jOs�m?r?=tRwslo#|ous!0{!@2w$yv+>`{Cۉg:9@{@ݘ&n?s퍽ͅ{QZȒEJ)eii �cp$`6҆d2&cmf}_y5n̓@r{Q�8{s)*[ee5zQٗB 9*׈}8t\?Y 篆L*j~w;8�l"1XN~aAX`l#BL ?َ.S!F�=HA^UK /�x!Nѻ$k >_=ˆm2sv����IENDB`������������������������merkaartor-0.18.1/semperMerk/src/images/wifi_48.png�������������������������������������������������0000664�0000000�0000000�00000001511�11770671653�0022110�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxYm@旅p@*SAH ) tSG?Tp@nB NNb37^, `0^�Y6g>tX_C+hA2pYrшSSJDD&k~a2P;Dg\<$sI. j(Uo`j+ZT k8Zp9]jDF# 4:G"~DxEM�j`<8їwPF I>]`-B* dz i ݾ>n�oس))>*O_5@X4g+V8N+d A&)B+j0J 6#bsOZ.|qojγ̹& k(ȶ�"s~ Ec@Nb訬?T\4gD.!]�rI_` l'`?ِؾ/0ÈiSc kR]]�y4XV. 4XPoL"AV 4vm7F2t'2V8x:X։ ,TfkصObe#$mts�;Rt%>w�H  9]v<a8a35=!R>+9z0 }F bw *A|LYNc}ud@L |cD܀ml#f�3 J>�2d;{����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/zoom-best-fit.png�������������������������������������������0000664�0000000�0000000�00000004222�11770671653�0023340�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ������˞n���sBIT|d��� pHYs�� C�� C" ���tEXtSoftware�www.inkscape.org<��IDATH[lzvkOk:qq M 66}hUmUCR\!E+bViӊ 5$Zō14!)jcfzﻳٙ9n{Og| aዚdܼf=FÑH]J�|/|4 w?W[[ 硪*4Mdt|Mvҥ}>_'^p}.R RЂf5 64{\4 @`qii9|s0<~X6=9bL\jWǿhjkq6==|�~_y^0v#uaÆǚ670jQUz(^L̈́bF-uxx7ÙLfZCX9Ew]]]֩O�k39Pka 4SOi8<<|V~Ν;ry:[mXMFBn :$Śɰp8߶.�N'%Pᣖz�ܝ=u Šv{ujws=2�uI3&csBSXn0/`6LNBP_OlX$&O>s7љ1L Bȓk|$IRUDIzhws(*G8 *4B8p)cM.dسfﷶcP4pҊ4SJ) pW! *!TznHf0f!Ы(#AufϚs\`0,Q.w|o!tRVdFA.QB3:a ooV\ 躎B0f��q䲀'S:}nݺ) Խd)lzbnATpm_$Ơq]*D"S(EA[%Yn+TTE.kjFGFj)ijJ)S*;t}bG`,*866L&q�fM]xq9o[Ze#clB~;UKyڕKpZӃw7s˗/geY>\Ǐg˧>.Sеی񑶻ϕEC:vOxDo8kuw6 8{~ R`0/ tXm=,}MaUjg3ov?$Իkk 2x$I' �x<===|UU&opH*-QEJI0K֋jF:(if,   p(۷ooomm�T*%x\vX-rqjb1D"L&躎z$5#x�>:555 L"brr2 W"nG8�\.w( XU�[Fc([|>EIYGԁm---c]]]błd2r Պh;DXO;p۷AUU<Rl6 Qq@ pKS X�͛7<4M�$Imrr7? ,'8|epp-I]S\bX̙3KO.G0)x߶l(JX,hoo+4dD_zC=vl6[lny^u=U,d2[ SGru�@sd``EMF#qnܸW_}gddoe^=k�wر޽{---!I<ǙST: ŧO<@�`0xBӴ;}}}A Q#ȇ�ȃ* W "P۹e˖tww7B0|addu�=@>2XXވ+!+Aݻ4M _xQ^e`9ߐէA�<a'6fG����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/zoom-original.png�������������������������������������������0000664�0000000�0000000�00000004121�11770671653�0023425�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ������˞n���sBIT|d��� pHYs�� C�� C" ���tEXtSoftware�www.inkscape.org<��IDATHKl.גEZOSeŮd+h$ؕ,?k.\Zs Q(ТhbZENdKv);D&w\LA�v|3K8xB;�iZr\d<H| z0~K^0�PA?߿m QaLӄjÇ͛gcABG.X*aI% iMWkLmrչZ-.t`&`BG>v< -h&~rM>wITJRQU7}S~'׋k׮񙙙@0_B/xmm:\[ONlJ}i?h:u:͛-xbP(l]r+dY[cqٹ-#?ndGnݼmcnZ`eUU7 v@(ؽ{R+斏;68JdSsFd+M(sE\]I)ӆ: oy<|$Iݭn �j9'wn'`�DR%Цf__'�xs]�ñK̥5Xl"Hqn渭!bqoB)e1pNr2*ìQT(kx< .7 Lp:0uƠm^#N2\ D@4R_-,) { BC7n2j&cUy1hiTL`RrjJ B'eM7A)f RX,hɕjMV482ʪq0Mͤ5!Her0)pƫAtfԚڽvPJ캖 Ϗ&;3%UnP5[PżfsA:!\g a M' @&Y7u]GOEQk%Ͽ,/\XP39'X$<S \NmlZH(�΍MN�pB /7m{ !,< PBkJ~@g uVQQKϦNq$|eN!}q(88ܸ{[q\?kkabb'ϝ;WZ `x}vUkQ㳹]wEE(,}&7IV (Y_yMBT1>>^:qXFAtba I M/2F2vM*zy躎Qb#;pܺ�ˈm,s-[��jrEr&7v;$IBZ$IB}}=RV+(ry0 l̀e ,$AudY$ILNNcIY888ؔdv�$իWKp8�^ey{\W.*2(ǎ{{߮iv;,*nܸ8L u3:} À(T*(e+FpB�< ��vQu9(0M�f!2Ѩ999y G < |f8q><<ܒ$YժJJ|ҥKex<R 8;<<|rRnvONl &ᜃ|=]q9[SNy=rlnQ}Ҝi_ G'O;55`�؞={9vػ---<3gGFF>'ͫg-{P; r\>/\8??O�X45M˃$I$ hH$ ._/b+`@`k׮x<F"ߎ�]3+WcF\ Y iǕu ~[} ED$j"����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/zoom_in_48.png����������������������������������������������0000664�0000000�0000000�00000001475�11770671653�0022635�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZm@Ɩߡ lWp\xCs N tw�pAr)#"|h֛,Jq<vyAh,4#B+Ы),v>i0p�= .7!p 7�"I*wIbx�0�Ot ]YyyhB&G$ 7JxCIH/PdX^.^z"9 �hx $L=Z3�/6#c>JHl z`cJB <n@*MXEzKbTY?3[rE@tKp֕!}@% Jo̽!"0o{@-̤ƲZՒ:y;Od;I&P3jA384\<Gc\t+SG~ ׸ @Qr:L̳ʅCDlsnٯh98ٕ:r�;Z6cFj&BX07υ^&@ݕhB-�Ӹ$y"#H\}6mJ=j\Ή=5i<ב]Pzg^)X||caFf@,OkI\DĽGJkSHLTbp*y:v.GBO%SB:9)[y-??{| �iĹܓ����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/images/zoom_out_48.png���������������������������������������������0000664�0000000�0000000�00000001413�11770671653�0023026�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���tEXtSoftware�Adobe ImageReadyqe<��IDATxZM0N+ޓ }+ede׾L@ـnLPl,:'8|?19N%4p2͘LH zZY@\"X2f4҅f�Nb4BMv� ZYR�/ P�V^F{UT$EkxY3OL�:@$n})1"DߌCg`uW spGR %xN98EC:t"0CZ99"WZޅ"Nz,c E&%Py|  Ĉo4{[gb9t46M*ԋ*u]߆fh T$*%IcX9K 858PQd]s"xt5 R =Y?CkQJvQV._o]FӎzAMMJ>S Qt� NA˻DVK g!/I,o\,UN)Jt-�R'f dH}2%~^- ;6)_�{9A"& lTtdO^9X| Y:E>y*3i~6F'1TC"1dGFBbҙz'cJ!ubB(B]$JXL@(L@�>;Wn#�5UaOI����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/���������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0020700�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/Merkaartor.svg�������������������������������������������0000664�0000000�0000000�00000067520�11770671653�0023542�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Converted with image2svgt --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="100" height="100"> <image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gJCgwbC2fqXYEAACAASURBVHjaVLxZrGVpeiW0/mHPZz733HmMecjIjMixMmtIZ1VRbruNXV0CuT3JGFAbkBoQ4g0k4IUHhECIJxBCQrTaMrjdhY3tqsKuKmdWZtYUGTlFxnzjzsM5555hz3v/Ew9nR2X5PsXVvbqx9/d/w/rWWv8hf/enf2CglRTR5JhQZoyhlJZF9md/+cHrLy0vLy2kyaQoUs+rGWOkVO3uIgHZ233g2Faz3TNGW5YrRCnKDIQUed7qLNqOf/eTD/eO0+uXVza3Ltx/dPAv/vX9o1PJGaSG1jAGzRoaARZ6/uIciWK1dyy+/uX1L752rd8/+Zd//uFgrLRGr82OBjorzFwL9YB869euXLiwRSkv80iU6eLadSVLQmgYjrI0aXcWmu1FQqiSBWVWGo9s22OWG02ObCcglDHGk2ggpFLa7vUWGLPKIjZGaa2VKtPozBgNQmC06zWNMXE0ULK0nKDVXnG85rnnvkm+/3//ISE0S6eHu59wzpWSo3H4dD/69FH69S8urq+0Dw/3G3Xf9QIAu3vHwwm5sLWQxJOsUGWpLp5b8H2/KFKtpBAiDCcfPyykInmh7z1FkpOaT6JYCwmlYXFoDQNoA0pACRgDJbAtCAXO4DmQCr02uXppJU7Eu7dPSwEC2BaMASFY7PEw0r0OW1ugEvXROF5fpEKkoymkorduLM3PNT+9f7qx4lgkrPm243qMkrIsplHm+40kLT66NxXSdNvuc1fXXCsfhZCiSFKhZaSNvbxY911ijC7yRGvNGJOiNLR249ZbX/r1/4pLWRAQJcuiyJK4cL1gNA6P+xkBxpOEQpz006PTfGVJ9M/y00Gx3zcfP9whBItdEqemKA+/9MZN12/sPn109+Go08TZ1Owem0kEpWCMGRaGMRAKCpQSMCAEjMGxYHFYFnwHgYfNZRQlct27emlpc7V564UrUha/9Y3Hx/2MMO/Bo4P3bh8NRrJ/JrMco6nePUJeFpQgzbC5jDhFKfVfff8wyQ9LgcBDq4ZXrpPVxYJS4rnW3mESpanF4dhGShNGye07930XhYBjYRxhvo28LKSIfI/anChtAJRC1z0apTm1GtzyuFZSK7G9/WTnab9V1yf9cVnqG5e8JKOTMJ5MjWNDa/2TD8eTCMMpbl2mTw91lmM4MYxi/0S+/5N7nmcvzln3d3S7wZ4eIkxACCiFNoCClNAGxgAAJSAElKDmY64F34Ux0AZpzl6+de6lF2/2FjYoswiglOh2x0EQz82fe/21G7/9b8m/+8H7f//ufWP0hTUwih99hFLg4BT7J8hLeA60hjawOKYxphGENNH7qe/i5iVIZZLMEALPJWmB8QBSwbYQuNAGnMFiMEDNQ5rq7TOcjmAMpMIr1/SHD3HlFQ4Q9vvfuk4oPTjs7+71bQu7R2o0NZsrvufyLCvT3BDgdATPpa7Luk2sL9k7R3I4hdYAUAqzf1KOxtn97Xg4wSg0nEEbCAljMKs+GFAKztBtIPBACWwbdR9SQWsEHuoB/cf/6Mtf/srXbdvhlkMoBSGUsjyLvvfd725sbvpB2wvqVy6fv3LOGQ0OjgZ6/xSby3juPEoBpSEVpERWQEhUlcuhNCYRshxZgSQHTPVrSYpCIMlgcbxwiXealFLkJVnoOo6tCGDbsDiOBmAUoxDjEK0m/5Wv/RNujFJKfv/d3cMTc3nD1AIy37WDWtAfTOe7bGHOKgSv18Q0xvKCl6T6w/vR5U1y6wrLcpWX+NldIyRcG4WAMWAMSkFI5GWVMoxguQfGMI2RFbAtLPYgBOIMvoO8xFy3+e/8/m94XpBnEwDGeLIsCSGUcsb9H/5cHo7e/k/+w286lBFCNraef+0L5n/4X34YJaAEzQDTGFmOmgetUfdxNq2OSkhkJSjBXAtCAjlgsDhHtpbJ+5/oUmASgRLYjuvZ5fqSU68HZVmejRVzTI2Smq9uXrFvf1YOxhoEqz2TRcfsj//wzbJIv/039wDtuzi/Xl9aaNRqNde1srzwXMcY1Wg0HEuc31xO0vLxXr7cI/NtQgjOpoYxhDGKEtqAAFnx7FsNRhF4uLQBITGcIMkgJQzQrIMzbC7hpWvsS69t/eo3vlqrt5USokgcr0kpN0YBIIQQog/2n/74znB6tvPireuUMkr58vLShQ1vf39PaTOJYHEQgrxEmCDO8MtfxoAAhEBrKIMwxjTG4hzJcqQ52g2AYByWSuqFrj3X7SZpLsqy3QzqNZdRGJg0x9NDzRlefXHz0vUvsd/75mVKSZmHT3ameYleSyuZOg6zLKs7txJH0elQEIi6z+58Nvx/fhBf3SJam8C3anW/f1ZuH2ASQ0gIhTRHUcIA9QCBV026jSVog5V5LPf4l19Z+De+vNH0y05dfPGVjedfuHX12su27SpZnPWfhpPj7vx5xh1SRYpQwkRxdufT00mYzbfk8soqIQTA4uLixa3mwd4TqWAMOk10mjibVJ3BPAsWJQBAgHYDjg3OYYBxaNbmSeBjc4U4Fg77eHKAemBtrNRgZJqmjNmMkzDK01yVJdJcE4JXbm3eeuMP2R/901e0Ert7ew+fhr02lNLNGlOGB77PGKXUtJt1Icp7j+O9E9VrkTgzO0ewuT4akE8fq7RAXkBpKAVtAMBzMN9BUaIU4AyNAG+96r3+0spX37z15ptf29xY2Vzvbm0sXLz2arOzQgiZjo+TeJilE87d7sKFGUaYQR5jNCfZR59sHw1gxIlHB53ukmX7gGk2W82guPfgREg4Fi6uo9OA58LiiLNqmBAKxqANkgzaQGk4NvISJ0OkBb7ycjtOyrpvsgIffCagpi7PAp+FcdE/ywmB51Dfo8aYNMf5C9dfeOkt9gffumoMjk/OHj89AwElePONq8tLiw8ePs6yZGV5VUj98Om4LFVemIU562SohcTTYzzak3GGrKjOk1FQCseGxRGnkAqtOtYX8cpz1muvvb6+davVWaOMAcayvaDeMUYbo8fDvcf33nM9Pw7P6s05bjnccmE0IQQGlHHPq/3kZ3f3jkWngYafuQ5rtZcAAKTdnqMk2TsctepVybcbUBp1HwDyEhYDUA2ZvECcIkow10KcIkywc5hzal58rvPSjU6cik8fizhDu45RqEqBbpNNY6WUubgZtGrm3OaKEUP2R7/zqiiTP/32B4OxMAbtBrl6oVsUWZaG0zAHzDs/PQjjUmni2OTJgT7sIytQlFAapazO0OJVnnMGStCq49ZlPHeevHClduP5F1c3nuPcmVWEmQUCMFrtbd+enO3XGu3O3HqnuwqCMo9sJyCEEUIoY5QybjmTs92T/phzHPbl5XOB5/u2XWPctpzg3LnLnbr+7MHB3W2Mpug2sdBB4KFdB6XISwhZ5TsAQgCCrEDdh2tjOMHJGVpN+7lL7ShOT4bl/jFsbrpNdJq8lCbJzJ0H+vxGw4Bvbq5Totnvf+uqVuL9208Ho/LyJpoBmWuRwaBvcdofqR/8JBxNTX+MwDNri/TjhzoroDSEhHwWKc4QeBASACwLW8vk+nnSbeH8RvfGzdcXVy7PRhtljFBOAGOUMSaJhod7d10v6C2crzfnHbfBLVeKwhhjOwFACSFGa61VPNl993Z/HMEYzLe1RdKg3nbcBqEUwNLy2v7h8MH2WZQgSmFzzHfg2phrwebQGlKBEBCAUmhdFWOjBq0RZ9g7KhwWKVn4jklynAzBOa6eD4SQaaZrHqJEPd4ter3uzVd+g/3Rb7+kVDkZTw6Pp4zBtrC52spLJcr853fVfh+dJnn9Bf9kKBgzjRp2jiEElK7OilIQUoVsoYvXb7CvvNI4v9m7dPnapauvtbprnDuEUEIppWwGNaXM4+nJZHRgWU6jtdDurhJCQWDZPqFUq5IA3HK1klpLKYvAtz+48yBO4diouaXnO4uLK4AhhM6S9Pq1S4tzdv/0IErNYIIwQrNOem3SbcIAjgVKwHl1nMYgKxAnYAyeg1KgP9IX1rjFdd3HcIKTIVo12WmQJNdhggc76myiz292v/jW73LKLKMVZcy2YDSMYWWZ9QeJ1IQQBC7eeME2MHnJokSNQ2hVoQRCwRkoBSXotXFpHc9f4s1m7dqNNxvtZcZsrRWMVlIRyighALRRQqR5OhFlZju+6zXacxuUWZRajFnMcghlSpaUstlMm9Vsp3f+n/+zX/t/v/tz15bzHbaxedVyAq2U1pIQypgdeLWvfvWtlcXmf/s//sU0hpRQxuydoN3ApXWyTU0pYADOQACFCpqPQngOXAdJZt6+LV65jm4TnSaiBB89NFurtFkjUho5j/1TaJkqLdhvfa1T5vEP3t0+HpSUwnOIkvnte/rTJzrwyBs3g+39/N62sG3cfYKTYbXfUQrbgsUQeLi2hRsX6fWLtd5ce2XtaquzTJlFCNW61FpSygiIMQbGSJnn6XR4uu0FzVqjV28uMm4RQmYdTWtl2b7t1i3L00rkWVTkie0ElDLPs199+flbt25duHBpbn4DACEUIHE82ts/bLeahBKLqyx8ejzICQGjqAe0N9d580svbK21VudLpeVwrIX8HFgQoBQQCp6DUmIS4fya222ol6+xemAGIxX4lgElBL7Hup3g8uWrXJa51mp92T8bR4zCd/VwTKYJCJBmpt0gJ0N+MhJ5btLZ4DPgDJ4LRjHXxpsvOetLFkAJtZXSJyfHjdYSQBk3SgkYUMpmYdJa5uk0iUeO61PGATDunJ4cvv+z+5wpIcy5ja4f1HoLW3c+vPud7392dBpuLIJQ9mtfe+75G1ddLyCEnR4/vf3x4XyHTkYnB8fjgxN10Een+ReNeqPXAVR0ZRMWw41ri6++9mazsw5CtRIL+x/Z1gdCjD9+BCEgVdXIjEFZYmLQaSBKIbRz80b3waOT44EJE0wTsbZo9TruItVrS/509JRfuPGPP7v9Z6PR2cvXSJKZT58gyYzNsdBG4JPvvhtPIhhddUcAjMGxQSkYxUoPYSzDhB6d5o/3w4UuhDg93N/mdtDpnasFnuNwqa1SqFYjgMl//tP3s1xxO5iExc6RtCxWFPJsIjmbPf2TRoBCIE5hDDwbWYnRVP1v//KjjeVPXrxqTUJ92Bd3n6BZQ7uBrIDnAsD+ibGG02kI10aYIMkg9dnFC0cgthe0hoOT7Z3T7f1sMIJtQSpwAqWhn72UUigFbAufPJzeuNx2guXdk33PwVyLeS5v1OinD7PBtP/crZLbTt31GpSSk6EpSoynIBSBizirdsgZPihFlb2MVmeiDW7fg5TKdTPHQquOcYRuE0cDPY6ikx991G5gtgwd9NGqYXkeSiFMIOQEQJoDEDUfro04q/aSKIHS8BzMtxGlEAJ1H+MQxwP9d2FBgGmMmo80R5Ti2jlcO8c+faz3T40xaARIMmQFCoEPH4j+//6js+k7AO2P9KzD6me8Y0WBEFDAdqoBZQxOz9Cfut/4+q0k/sswTKJE759kL12zO00aF4oxmxNCjVG7x0hS9NpoNzCcIElBKaLMNGo4GlRJOxt5Mx5uRsXNdgspISWEhNaQsloyKMXZFIRASFi8Qj3TCEqDEDg25js4myBK0KwBGUoJSmGANEOrDhBojWmCJK1m7tEAFq8w3eynP72Lx/tqtjPPuIcZGOYMS3N4vG/yElrr2ZZKKIwBzOdznJHqf2QUpcAs3Hfv7W6udlcWnK1lctTPSyEpcxtB/vrrNwgBn5xtE5DZ62UFGEWrjiSD76FZr0LAGQhBqRF4uHWFfvJIp3kVBQCuDRAUJWwLeYn7O6j7AAEBDJDlEBKEVCSXxcEZ0gzHg2qvtjhcG5TCsaAUXAeeUz2GMiBAXmASVY2mWQMhaNYxCWFMhZu0QSFwegapoDQIMA6f7dIAAK3A8WwHIrB4hfJtC/1x9dZCgnN89iS7c+/dbhO/8op3bqO5skR7vc5Hnzyd6y0BhDNmUW59+aVaFEW9riekPDot7tzXnSYGIxwNPkeehYBUiBJDCJSG0nAdEALb+pyZmSW5NihL5CUAaF2d/Cy/fBe9NpIMK/MYhZTAXNlijLtSwcgkzkwpUffhWCgEeIJGANeG6yBOUQoUJXwX0whZAc6qeiQErgOjIdU/iNEs/QlBt4lOA55Df+WNjUlY/Oyjk3YDvTb76adiVpiz0gkTAAhcFCV+fjeLk3J10e33ESW61lxQsuBFNjVa7x/FrYY132vtHwzyEraF0RSDCdIc2kBLCIm6j6LEkwPDKBwL51Zx64oTpfr0TB/1VcGhSygFEJQCeVG1BvULJoCgHqBdx9YKf/HWzc2NRUr04f4Dzsj80oVafe7w4PG9T2/npSxKQwClwSjCBFIhL9FuQEoMp1AapaiioE3VQPOiOqfPWQcDQrDQwa0rcCwEHt1ccS17emlrObCjo9N0ecHTHwvbAmfIiiq4aQ7bAoD+CHVf+W4qZDrXomU2ghNwbnmc267rDEZpfzAVIt87RphAaYymv9SbDGbctmODEBQlPttGIyibNdy87J1blT/6oEwYFjqo+zgaohQVD0EAy0I9wKU1rCy3rlxYunxpq9VdAYgokpXVi1kWNdrLnLtLK+efProNGErg2nQSa9epktri6I+R5mjrZ7yoAiNIc3BWSSGzvFa/1E8BDMb4+9tYmUe7rsM4I1TcNP1etxan+s5n0ewvAygllAKZga8SxIbSeLyPRmCWeyQvYbSBMex3v3nJaCVFpkRIIDgzO0dIcwwn1QSktMJwnQaubuHiOt05MkkGAHGKKMVn2+LpgTq/hq1ltGpo1nB/B5TC5mAMgYf1RbzxAn/tZu+1V1/c3Dpfq/dmmwohxHJ8P2gTSjl3sizcfvxpKaA1PJdmhZnG0PrzN5/9W0oQwHWqtDUGjMJi4LxiHAmp0gqmYk2nEaIUhEIpPThLX7i2kqfTzdW6Y2MayWYAzpA8m8hCQSkwijhDq04W51iv63Xmllyvxhm3KbN6cw3f6gDmnZ8NKTWeW2XmLMmNqabbk0NsH+ooBYB6AEYxnMBzMI0B0GsXGu/dmd55YIQAZQhc+C7mWvyf/ta1zfUFy/YAo41m3AEhRkslDYDB6eFo8CSOprZtc85GUxmliFKVF8gK5AUcq2pGWiMvKkx0eQPHQ+wcPYsmqV511kMLUaHCWb83BkmG15+3SqHSXB8dH0+i4tJW/fVbgRAnaSb0KfwEeQGhwCimMTpNcAbK6ysrre2dg2tKGICLItFanPYnRuaubSWZkWoGgqr6nz3ErBIHI3AORhG4aNYQpxVVxCgGY/z1O/H9p4YSUIrAxeYyVudx+ULvxvPPE0KzNNx58tFcb9lx6qLMxmcHcTSWGuNJvrqyUpRyMp0SwnsdSqg5GuiyVA920ayj5iEvQQhqHsIUWiPN8ekTRAlKCW1ATFXylFbbMiGY6SZ4NgRvXGRzbZYXOk7w8GlU8/HDnwxA7TgRwzEoxeUNPNhFXlSVFKewLcx3naXljSKfxNFZq7PEASgpbJtv78ejEGdTk+Y4GVYFaJ6tUtrAsVDzkReYRXOhiyiB1pAAodg51kJoQkAZfBfNGlbncX7dObe5VBZJFI7ufPBT3zG2bXV7iRu0F/0mjGbMVkoQgvVzt5Qojg8fTUe7vV62OBd9eD/l3IynOB7AtrAyjzCGa0NrRClG0yqCvyCqYKoi+EX3+MVPGcVLV4mUuixNVqDX5Zur9VY91trcuU/GkdEamQut4XuwOUiFmfHe7eHp8IPLG8qtZasbhP3eNy9pLco8Ojo63T81aY5JhKIEY1UNzjAhoyCo0INScGxEaZXqrgNGofTnTGnDxyvXySjEex8bUx6fHN6fjo56ve6Fyy9unH/JcRuM24xZjNmEMgIQwijjjNntzkqrsyxFypnuNuV8W2qNSYw4RZbDc0FJJWcJCc5Q8yAVKK1a/gzQ4JdKwbGw0MVL17C+yA1ord7yHL2+2i6LjEDlgj3cFTUPvTamMcQzRF3K6q9RipOh8Gz9xS88X6+3OLd9KUvOiOvSRqCPBihKuDaURlZUXQCmYo3LZ3qXkFiaQyFAgLxE4FaYc/YLcYpv/9BIBUC/eQtaw3H9i1dfqzXmCaFaC0IIYRZAftEXCWEzlcILOhef+/rJ/qdK35kXcv+kJMQwCsuqeP1ZcZUClKLmI/DAKLKiwpYzxdTm8BwIBWNgcXgOLl99QYosSdJWM5hMpo1683R4EqXq199s/fTjqVLm4jo+eogsr+AI55ASeYFGDYcDMr+4ZYygtcaS49a8oK21dTbFL6A5JVXi/PJBEcCx4dlYmSdXtthiB2mBaYyj4efUx6ytimc8qlSkUbN6vXm/1jXPqlqpcsZ2AaCUU8aNMYAGCGWcUt5bulyrt33fMzCcod3EjQu4skXaDUgFIUEplMIkrEA8o9UcJKhwWZwhTpEVOJvCGBLUGs3WvJb5yelQykIqCVBGFHR2cQ2bS5QzLM5VxTtryrMUszjyQt2795BbAc2zkeUEWZbuHhWMoiiRl8hLJPmzqcyr5iUlOK+Wm+fOk5evewtdwikYRacBTv8BdJ6FpdvEfIf7vqe1MloRMtMDGUCMlkqVSuazKUIImVHJs4lS5nEcjgghi13KGZTCkwMUpbFtSAmLo11Hqw7LwkwNm1XfLK3oP8SraY7hxOztPOmf7Hxwtz8a51orKaXjkMUeN0YpTQphHuxgOK4iZQzysuIkZjR6u9PhlsMptaTI4lRT+vn0VapKq18shrP9zrYgJBoBHu6a+a6888D4Lvnd31wqstEPf5pvH1YolNHKLeO7YEzbtttbPAdCjDG24xujtZJKlYQQY5RSpWUHM+RljIYGKPrHD8qyGJxFUaI7DXz0CHUfSQatK3VroYuLa+TceqBQ/87bx2GMVh0r82gEOBzgZIgwwSQCpYBBluMnd3aeu9S9tOlkmRSSRHFZFHL30Mx3ALDtA7m5gijBzlE1yijFOERRIoxBKcaT9BxhnHNHiiyNx5yh5qMewHcRJmAM7TqiFAZQCgaweeUZGoU4HZmnR/lKDxc27BtX5vun8tq5PEpxNoXrVI1MSNgW8VzL9YJ6cx4GRmspMsZdrWWWjh0nIJQRQpQsuOXOUswYpUR5evRoZ398PNRpjvkO1hcRJihLEAIDNAKcX8XGErE4vXZpK/Dwg/dPpdKOhXaDPt7XcYZxWIEJEDzcw8YSjk4mNR/TSOelmUS56xCbG8emYaJrPrICnoNWHXGKRvA50SI10gxPdkcv3tLcry8mcf9sHM2IvZlDahoDBmle1ZXWoASdJq5u0Q/uaRgszeGtV735ju275PR413H9jWXWHyvbwjiqVmhjkOYGxLIsdyZbAJAiN0YDJM8Sxwk+V9qNAYxWpTEGBPPLF+8/Po5SxCmaNVw/h70THA8rpqEUeHKAUagpCe9t/5wzorQGKsx8f6ey01SgH9AErk0We26n0z04PD04KTiDMUYqTGPCGFO6LEo0ArxwCR8/RJqjEOi1cTKsxmISjaRIuVKF0ZoRrTT2TzGawrErMXk2O6UCY1ju4Y0XyMYyC2MzDk0hyPd/kjt29kff6vV6C2E4atS9L7xgvvducjKEQQX6L29AKxHUO4QyVI9NGHddr2k5QZGOlRR5Nq03F8oiZswaTyb7e4e9uZptuwtdZnP88LY+m6LXxnIPeVm11FmwOAOArChrHi6sIUoRJeiPK4Zv1uxnJJ/SaDV4WYowHAOfT3nO4FjIS+HasDgCjyzO8b+/LYQAY5ASnoMohdLodV2tBNdKEko9z8kKSAnPhVSY7yDJnonyuiLbDk7Nvafi8T6We0gjc+sy6Y8gRZEm0yxLHMdb39x478M7rqt8BwBOR9g5xotXiv39fe7MOY7DqD4bRa2mv7h6XcuSUCrz7Pjg/rf/+qO/+cF2vWZNQ5GXcB3yynOBZ8mlObKxRO49NQsdLPeQFdg9hmPjV1+nAPnpp+rpERwLloUoxcHp51FgrBqXsy/HBiEKII5tKV1yho0VhxIiRNmoe7Wa12pER/0cwP6JnAk8eYlCwDxbjaMUWivuBh0rPAwCvxQVzbg6j+0DeA4CD8MJCgGj4dg46Fff7hzBd0EIee35YByaIBBaqSBwizy7sMaf7Cv9bJ2EgQF5+8d7/9P/sZeXxHdpnKrf+yfXf+93Ls2YOMdrHJyU3/7udiEQp4IxcAbOzJO9eLmHmmeW5lDzsNBFkmE4gVTwHLzx+heOj5589PC00wQlCDycTSu/lVUJemAcqaqwDgHe+UD/xptelpUEqtPE0kIL4LOCENLASJuTnWMziTDXqnaAGe0z6yc/u3P4m78qaZGNCWWu1xhNEWfIcvRHKATSHOMQgQfPASU4HqIQcG289TK9sMYBPD00o0n6ycOo3x8YmOl0ajvOKzfXb1ygM9vYbD2KE+05WFsAJWYSKanw/739uCxiQiilFmN2mNUAWKwi4WacjGNjvg3PRc1Dt4WixMkZkqyCBYPh6Ps/jg/7gIHnIC8wCaENbBvNAFGKJIeUVcOdvXCYYBIqwqy9YzkcY/9ozLmxbWsyDQ+ORr7HhUTNAyE4HqAo4bnQploPjMFRPwMh3PE648Fjx/WjFEpVDd7iKASyAtOkAk1aw7NhMcy1+fOX3U8e5ufXXSVz29a2zVy3NhiOo3C0snbp9VtnjdpkHOq7T5DkuLuNRoC8hFTVWp5kqswzL7AYt7RWD58cUlp54WAq914jgGPDsdAfY1b4kxC2BaXh2vg///z+8QCco1fHJEJ/VNWE0Qh8eA4KUaHiX0CwlXkIWcaR6nUsIZXN2XQyidPCsannkr2j/GyKxTniOPjwgaEUQmDmOM0LGIpb1zu2U+NlHipZPtkZxSlcp1ruaj6eHj17AcAY2DZ8F3mJpwelzc3GslXzrSguu00YQ0D461/8mhRFWaTdTuPVF+hkErYb+mQonxygFEgyFKISh8JYJqVfb3l5Ov7b77+zd3A246nJM9JKa+wcwbaw6oxCkwAAIABJREFU0MXRAMdDTGPYHJSAMqQFphHyErauBKHZmJ95n4sCjMEyFXUzI3XnWljoVNrw1vocobzIJocnMWO03WpxXuwchp6DtSV397CkRM3Ak9ZwLLTrGExQr3nc8rgUKSHUsog2UKoSvho1eDYIUJRVHtY8cI6FOvZP0G6ITlPtHaWvPt9ut5uMWe3uslIyqHfTeFyrN9Nk0ut153p2mpP9w6HW8uGO+PlnilJc2sBoip2d3dXllx89/Oy737+rFLpN/LPff2llTvyvf/LZo1052zNOzyo1zLVBCRiv0AAnaNUhJEqJwbgyejRrZKFLjvp6HFX4mTMYA8dBr41zKzAGrkOCwGVU5/l05yCOU9NpUa1lIcA51hbpcT/vj6AN6h4WOtg9RlZUMt3N60tBY5FrJTi3wzAPPBQlhEAYYxSiKME5OEezhuUepEK7Dt8lp5bZPcaFNUKIfeHi9UF/lxIShYOl1avT8fF0MoimA84ty3IWVy7V6nPLS/ej6emNy+Sl62MCdXgq7iT6wma3LOMoirtNtOq4cXX1H33jKwdPf/af/fs3//btB4FHitIcHKc7x0pqBC4W5yroNKNDbF7pPTC4fsG6dt5b6alafe47b5/89NNilr+NAFrjyhYub5BGjRNiGDUWt7RWSVrUA6a0moQiy8eUEJtDa8MZXrzmjMJ8dgBxWkWcUfzV935+64Ur3K8vTEe7H909shiIDakwGzGHAxgNiyHNcXqGdgMHfbi2IQQbSyQrzNoCk7JoteeVko3WohSFVpLAaD1bj+l0fBJH43A60srM9ZYuWM79B9tRin/vd1+q1VwtyyCoNwIwhpqv8iwM6j2txDd/o5elU6XEdDzcPzx5esQXekGehtMwnZFC3SYCD0mOcYivvd5+6ysvn/WfHh489Xzx6vO1hztlmJhXb1hCiBuXvE6DGKM55wDJsyzPMz+oM8Z83x6Oo2ad+A7zPctx+OkwhVFKyoUOKYXhHIGPNKvkxbuPi73dxzwc7SolRhMxM/aOI/guwhiOhbqPwRgAGgGK8hm/TJBkhjNCiD492VFKNxpNbgVlkUThYDAYuK5bllmnu1Tkaa3ubJ1/Pqj3tJajwe5V3n7ti/PLKxszR83u3mEhULcwGp5sP3j//OXXs3RMlGi0FinjvYWLF66SX/NalLE8nb79/X/10f3YoGKNhUDNwzQs23Ob208+Ox6qDx8czWTda+fov/1vPn94eBJ4CsYIUQJGa80449xyHdfivCylYydlqRnV3DKMq27bn0zjUqilOTzYxWoLvRYSF5fXcXcbeQmtMm60tLiztdHY3Z90W7AsuBZcu6JBmjWAgFBoAaEgYrgO8gJPD3WzbqbTSClZqzXufvqR51JKTafTMVp1Oj0hCimLOB57fqvRthms1a1XNrlTlokxmoAYaNdK1xbgOqxRd5utBcYt128pWVi2z7hDqUWeaRXcsluthpAxBZq1Sit0LKysLGpjwqz+7kfYXCLGGEIgJDl/+UtLq6N7H33PD+pa6zQJjRGcc6N1kiRJVtYDt16zHJu0m4Fl8SzPPa92NorHkRGSzHegdTVV+2OUEvNdb2XtPDcwIGS+a00ncCwELjwHIAgTPN7HQqcSUBlDmmOxi24LnSYxhth24HuWlLLIs5WVXpYm9XrDdjyjVa0xp7UaDQ6yNAqnw9bcGqVMlBFgKGWUOVrJYX/n0/tH1y52Xn71LccNuOUqJS3Lc5w6ZRYh5Bfkl9YqnJwmcTS7beA6KCUcG5SgETDLciaRODjFcGzmOwg82JYJozjwgzTLbcfzvBpA4miUZaIU0nV04DmWxT3XerSTvPicb0DyXCbJIMmNY8N3cTzExS2qtH60j/4IjKIoirLIqOO1lCrXF+jWCmwLrTryEnyWU4DFK7KNzK5FBNhappe36l/90qXVtXWhzMf3R1Eq4yh88GQ4mUyCoFVv9soiicOh4/qNZpdSk0ZnM2eakoWZ4Wvg8aPPrl9svPbGN2qN3syERSmjzKLcJpTNHFiEUkKoEllZxI/3yuEU8x3WrNvDcWWrXVrqTSd9l2eXN4jnwrVxaR0XVvXh7ofx9KQ/zECYMcYYzblFKSOEzPYhKQV04TmGMYsQy3MtrQ0Bwhj9kVEKSW7u7VTaGgBKzWR0SotsChCwYBxW/AyAwwHCGJ6DNAcliFP4LmAw3yGOQ0ohQHhZFpyxF5/faNScVqtzYbObJIkxBgaMWZbt+bVWZ249jafTyTGMecbxMaWkUmWRHC0trXp+E4DRmhDGuTvD9Iw5lNmVs5KyJB5+/Mn9x3vF6jy2VojFSKtOOg3cvNq5cOn5ud7KrReuEgLXxtoC5tooBKRIDw+eHvbL0dlZnsVaK0KobVmcEWOMUlJKwRjaDTiO22g0hchLAaWJ76LdwFyLTCNojW4LWysgBCdDIxSjWTKCMYHvz0I4IwZ3T3A6qmCe0pgZg+oBssIQoCjKJ08ePX78tCxzypwZ125ZpNttRdFZUaTGGNt2XbemZClkmaWhUoIyDgMlC60EDCyL1eptQiilzMBQximzGLcIoZXaT5gxZv/pxz965/vv3T4hBOfXA9exJpHYOzGug/WNddupFUX+J9/+5P6OUQqLc8RzKIAn2/u+7145367VXKWkFIIQShltNFqWZRdFmeWFNjTJyGSaG6Pzkjq2ZVvE4mR1MUhzE6VmawVrC7AtODYWukTrkpdFTAjRckop9o4xI2rMM7XCM+AM7QY4x9Ut0muTbscfTfIoLs9tzudZykg2v7w6OjspC2lQaiWLPKk3Oq7XkLLUWrXa80brOOw326vctoxWxihCqGXX7j867sxfdBxrRjZrrVQelUXMLZdb7nQ8eP/H7+3s7Myc97cuk2bNFEWplG430GmQxw8/KbLRz+/mP/xxf2YeerBrKDHXz5O1lbmVjRujUZgnJ4wRwNi2SymzbVdrTUiRpsJ1uG2hyMdnZ6LdqmVp2qjZrgPLIqVEf1Q5Kma8y9HA/OvvPOaMWZQyEHumlyhdcUaVVq4q2Xl1Hle2nDCWWSbTVPo+syzLdTud7poQuecH9Ua7yBMlRXtuNUunUpZFHlPChCgoY45b11oeHzxcXDoHYP/g5L/+n3eFxJ/+1dGL1+tf/eLG+YsvMG7P2nkcnp71d3/wzofvfaRmfNFiF/WAKqWyXEUpzq9aaa5v31Nvf7B3NoVjQylMIgiBFy6zwHdgyiwZW9xkMNyylZRKKcf1pSi1VoxxxiTn1HPgOpbROs2SJC21IbblppmYiWwFJ42APDnQjAHAl1/b5F7QJoS2OiuD8RPfq/SIGVymgJSo+aAE/RHhlhOnZb1uLfYkY4wSWpZSSGG0UlJoJbVShHHXq9m2Wxap69VFkRFC/KBjO4EQ4r/577/3yq21zbXO//WXD2bndjzIv/dObnO1uLRaa/QYcyzbD8dHcTg8ODUzP8+LV6zVRTdO0pMzPNnD5oq9vNh6vDs5GarZzSbOMNdCkmFxjly/YC/0ao7t2E6wezBo1RhnlpIyy2JjtG27xpiZf48Q4nucEBz3oyjRjk3WlxtRnCapbNagFL70cnP3SH/yOBQSX7jZvrjZ5pRyrdX+cXg2xThCnMIA8x2MIxhd2ekYhc3NJ/ennRZdXlrO8ziJp0WRMmaJIlFKFkXWas2Pzo4pYzCgzOKWW+SR1lprc3zc785vHR0d9jr8vZ/tfe/vdxwbm8u4fsFdWVmTmnVr0z/787958yuvX7r8AgBKmTb6woZz2M8Wu1hd9JRWh339yeNCKWwsqzhJDk/FjAsFAWOYa2F9ETevOM0aVUopLaPJscUEwAihnFuVuYUQA2OMtixba2VZxPOCpXk7359GiY6S0nMtSiClyEvzvR9Nto8AoFXD2pLn+Q0uRAbgyZN9x64gwoxOCxNowHcrCVrSyl4ynZ4tr5yzbbfIU200ZSzPItcNTo53KSOQ5bC/02wv0dnUl+XH9w7e+Xny8qPhpXX2u7+1JUX5l3/79GRonrto/erXbi6tXSuyKJycMvroT/7Vu89dPfzN3/iqZfvG6JV5qx5kvTYpy/LxXnHngWEUnovBSE2i9P6OkQqODakqtq9dp45NKbM5txjlSTzmtOAsoJSyWSGhQg6UMqWUUpoQopRSSlrMbK543W4ricMg8IYTKZVxbHQbGIyR5XBsY9ke+3d/51Uli0/vHURRPKPNtK4eYnaFllGsLqBVQ5ZDKiOlqvsYjwaO40ilRJEpJaUoyzKHMVobx3G1VloJJcVpv//dH00mCVbmdJbG/WEYpyqKsyiFUmZnbzQcRYHPx2f7T/eGH9wrHmyPLH1S91WWhFrpd+/klCKM5eEAoynm2rA49k4qL02cgVIQWtlcr18MPM9mlDg2U1qXZT4anQGm1Z4jlColGWOWZRdFRghxXZ8xVuQZYJIk00ZbFqXE2LYdRslwLGereD0AgEmEUpA3XtnkjNlpmaW5HD9zaYJgdulxvg3O4DpYmkOUkpeu1zktH+/mu3tHnsumR8NuO2CUeH6jKLJ2dzEOzxjjlFJCiJSlUrJ/llFKvvKi9dKN+fE4/Ku3p8NJYVtsEun+yGyuiEIefvLpw0e7ahxhuYfNZdz++LDXyinBYBQv9xCl8F1ICcZwYRVRioUO7m7jF+OIUVxYJb/yhe7S0spwcMpZKUSptcqzzBjmOIHj+sYYYyDKXIjScTxCCLccA2JgKGWNRg1RzCiklABqQc2xp3mhJhEO+0hzKI3Fnkcp543O5miwPThLjaluoGpAaVCCUVg1+NEUjZppNWxK+PqyNsbMdTt5UTYaTderUUot2zHGAIRzixBa5Ilte2dn0XffjZs1ujLPRuPpX/wgOhlibZH9p3/81jvv3V2Ys27efCGodQ/2H/+X/92PhEReoNtEq05PB0leCEow30FxglJgZR6ei/64Mq1YHJOoovpsC7/+1uJct0cZCwKn3V4ZDg7SMHFcb36xq5WagV6tpBAFIYQxS2tlKr6ZGGM8L1BKSSlnn03AGN9a9X/6cdQfVb4lY/Dyja5l+5wQenqyG0ZZVn5uiNAGWVEZaWZ08DjEB3cnVzZBoBd6HW5Zc/V2FIX9/mPGqDHEtu1GvV6WRZZGQa0J4JNHcVGi7uvHu1mSZ/snyAocnOrv/uDByWk0CXlQP6o3yr/4zpNxCAOECSxOG3X33nYBozoNdJsAUPOIAeHM7B6b/hgEVXPISpQCvkfn5uY5twhl3e5irTE3mmR7x6eXzwVFnlHGlJRSFmVZzPZNpQRAlBSEUBDGGI2jCaE0TrWQWPWpNjovhG2Rmm9uXmbfeU+VAg93khdf0jxoLK1vPd9q7I6mGbOqqwczLXdmwyYEnoOah7KU3KrXAlIUCaBEWeZFblssjBLGmFKlMcJo7XqBUuqzR5O//8nYczCYYP+0cqhTgjAxf/Y3+zP/1F/+4PaMR555T7TB+x+b/+I/vmX7/Xd+/GgcYhqjFHjtBlp1XZS4u11dK47Sym672ON//AevdefnxsN9kSdBrVMW6U8+2B2NsbVaRHHS6/WkLKSYWQXAGAdQFLnv1wzguXYcp4RoxjhjVpTkStNmsy7KIvClHEip6PlVXZQmCqdZGrJ//h98M4uORqPR4fF4lpszYWN2BWWmU84YZ89Bq06XFtpSaVHkBkiT1LKszXNXLItSQmzLllI223OuFzx40i+K/GyK/ghhjLwEJXAdtBvVRwnMfBWNGjoNWLzSZfMScy1srTpP985Ozqpa0wY1D2mOMPklg7uB5+A//4/efO0LXzRaTUcHANygEUfjwenB1fN+monhWDQbLiFQUs7YHsa4lIIQkiTRTBi3LO55QVCrL8zPD4bTsixrvl2W5f3trD9Glmul0B/h3pPCoWeccccYrC7VbV6pkgTo1NEfoxTwHABIMxiN9SXWbTnccnu9eppGSirO7UazW6t3bccrsng6HTSaHYvbWikly+EEo+nnFl7PxTfeaHz9K5fTJHq6H97fjteWrFbD2VhpP90f7xxkf/32uBT4s7/Zf+2GpRSdRGomjKc5Dk5xNsX2QQVuYNCo4cVr/s2btwBoJShjjNsEkCK7dGHRaGXMtNOkSinH8Y3RZZkLUWZZOg3jVrPhOC6htMgz1/UIoVKU4/Gg1bDiOBsMR2FcOjZqHvqjSoIwBtyucSULIdIsizsNhAmKEr02an71MREzHXzmmLAt4jq83uimydh1g1ZnSWtltKaMcW5Jzn2/UZZ5FI0BU5aiuiWhEbiQGr6DbosvrFwVZVZvHnzhtY4xusgjv9ZdXGUv5vHx2c9+/sl4GuNvfyxmVWkx1PwKxGTFjLaoNrCtVee3v/XGLECM22kSNloLlu2f9s8ct7Z17tyDz34GY1zXdVxfa0VAsjSWsuSMUkpc18/zVIjSGPi+b4yZhnGWCUDneT5jWTpNjCMYAddGXhIDj4sy0VKEkZjpUTO//zTG+lJl3LEY2g00AijNpBJnw0NGCaF0dkVXaeWCTMd9wFBKlRJGG6XkQtc8dx5zberY9Mm+jFKMQpyNE60kYJrtFcetU8ZncKzIwzSZJklKCfQzQYzSShXPCwwnyMtKNLUYbBsvPb/c6SyJIpn5cPygNaPJzl14PqjVoukgilPP5UrJwVnsuyBQrhcURV6vB5xzAzRbPUqZlKWU0nFcz7XLQhYlLE5GU+17EAKcolBw7P+/qTOLkey6z/t3trvVrbX3vXt6NnJmONwXk5SHFG1Slhwvsh0bjg0kfnGAOECQwFleAgR5SPKWBwd5SIDYCRInghzLmxiZsmVJJkVRJGeGM+TM9PRM70tV115117Pk4dwe6rEbDVT1vef8z3/5vt/B6y+Ev/CV57jjlvM8FkyPE7S6yBWO2hAcO4fwXVRKWJ1Hf4i1BbIwwx0hhBB2HiEcbzwedjvN8bBnjDTaEEopoQoKMHZVVkIa+Pw81bc39fIMfCdrt7YnplYYF4wJEEKZSJPxzRsf3L7bOjhWjKEWYLIGAkgNR2AUFeIhRuE6iNNCpL68UPeCmjGGEppncak84fnlk1ZTCFGpzbSOtwiIVvLeZvN//MWx7+LcCn/6Ip2qGXtuuq4PmGptMhr3e71ulibaGC6YSZTr8hefLH10uzeMDEgxHlycbxDCuF+aVAqb2+1cwndRLoEzJCmGEaplVAKkGUo+Fqa5wxUXjuN4ICQaD48PH1aqEzJPvVqNczdNRqNRPxoPCKG9QdodyKMOGJOTNWltYJ6DvWPzV9+98eW3yo3JNVACY6RM//ybf/XpvXaSFwXDwjReuEQGkWEU4xjf+xjWoBB4xWAKwEtXMD8/J5xAqRzGHO59Go26mXL+9C/v/523npqcivJ0VKl42/vR33xoLLbgkw2538QXn8PSXMIY6/c607NL7ZODSqXheqXm8Z7RmkIGHhzBt/fHaWbqZUxUcWcLMsc4YYChxuhOL7p5N+r2kWSYm0CjUjgGrJp2qo7FGdzelPX6dKU6KRyXAL3e8OhwXwhvemY+S+NB/0TKfGJyPgjKnPM4kVFczDUBMhwjl5ifdjln798cffNbP4iinsxiJbNPbt78o2+17+0USihKrF/HfHQHm3vYaxazCakwGCOTxRm6vsg8P6TM4cIHoTDKL1W2d5uVELWqI2W2vXOQ5Xpjl97fg1KFEaPdwzf/Fvd3DQhljJ4097RSXDh5liptcqUopQRkNM7avUwbzE4xK7oCwV+/uxVFMU+jztREuDrPb2/KOMXWITwXcQpK0RsCpsBwTNaoATFGx1HMhVOrhr1u0u0caCWVUvuHJzBmZiYGZH1inorqfnOXR/KpK8t3N3bHibl8vnZ2bQq0eW+7//6NntJvr67MjMb5H/7JA+uBSzI43Eod6UHLHJ2YwxNEMdgp9cM22rRBLcRjV16s1qZlHoOQPBs7bjA5c84N5s+t7y0uP9452W528jNL/jjWAKQCFKw+J07xF9/LPnvQffWZyvqyn0u59XAjSRKlDCGkWgkJlVmaXjobvH8zAmhnoKwWCMakcZcz7go3mJ+tfHK/ozXSDI0KBEOukOXoj2CAkx5W59TG5uGZlYYfhEpK1/MnpmYY41w40XgIKNd1Wq2jWjUsVydn589rmUiZtFqdeoWFJf/C2XnKmCPM+RW0e7h1r/vR7W53gCwvBJy5RDXEGy/6V69c+OBG8+b9Ayu50wb81P9tf3N2rbG6/gQh1BgNg/GwVSpPOF4YhoO5hZfzLPnk+ruBqzvdsVLG+TFCgRWJUIKNHbVz1H3tuajsZ7OTVGsSpzi7NlufmB4Ne3mW7h2epDnaPek7MCV4DhpV4QdlDkLTeMCoqZdBAKXQGSDJi6rCirQpQS4RJ/lwOHC9wPMCY7Sdx3DhxNGYUVIKPM9vLK48VqnNE0qTJB6NhlsHinPxzOWSF5SDUm1+ppNEQ88x93cLgf/ldVCGJEUusb5ceuH5JyamVpodqdQBo3AEoqQQAWsDJVEJ8Utfvui4ZUKo1tIY7XohF+6tG+92uuNrry+3Og+iOC6XyIM9s3cMwT8X0th0L5OgBEmKt7+fnlvBS57hzLgOjaLI88d+EFJCckmlQn9kxgmiBK6D1aVqWJ3hadyjhJ5Zabz7cdcRGCcYRqCk2OraYHoi+KkvrC3OiMO9T43RxoAylme5UlII1xjj+0G9Vg7Lddf103iky3k8HPT7wyxXizOgVPX6w2p9XAobURQxZqbraHURJUUPxABlH65Lnr265PnlYf+keXifsULvX6AjKBwCRfHSk+7i/LSSmcVGSZnKPGHcLYd+r98HzKB35HD28EC9/W5xhj6yihjzububMmiDjW20uvq5x+kLT9brtVqSxlKmSkopZeASQkyzU1g5PrjZ/kprm7t+3QtqUWKsfPSRxsgAvouXnp765Z97oVGvAYQi63YOlcyTeBTH0eT0ouDOeNQdDQcgzv2t7v3t3S9+4eLkDG0ebSutAVItO0oZKbNo1MuSyHWdiYm6K6g2nWbHDCNUQ1KplBdnfcZI4Jmj/Xud7vDd64lg0AZxAgJ7bBZ7cLImHC/URhqttFbRqO04vlLy9q0bb7z1K4y7wvEZJ3e3i6COU3Wr4MjzwhJiAKNACUAxGOHbP9RxPvr5n6pTQk9azVzqwHdGcRJ4KPmIEkQJWl19eLDPHa9MKDs46llhFCUQHIlGo85+8a3V17/wpOOFVmg8ObOWphEhiMbD41anVKqwcv3O5sk73z/uDozdsFcvS8adsFyp14L+IJEScZIFvkiSqFIN5hbWGePt1l456DJq0kM88fjM2rlnHMcfD9v93lGve6KlOukhVxAMjBVGcymLeefSQr1UniKEaMg8i9JkyLhIouHa+nnOhVb5aNhhlEhZhCcYUFLIb6xG3xbtjijGNozDGHz/o2T/+MFXrtUdiiSV1Yo7USOjsbHGjXIJrsNnZme5cCr1qfOOeNvODS1D6eLZ+r/4nS/6QZClY2MMZQxGu16wuv60NVKaWx/+/tc3fI9vbCdpVsyuKcWD7c7LMk3iYRTj6ERN1lCruLnUSZImyd7R0W65XNFKCk6P2toYMj276jiBzNPD/XtJEg+GUZIZq67iHK7AOC7QNwaYmSBnVmcthswYrWTOueO65V7n8PzFZwF0Wlvd9r7SpDOA1jAEChD8czyj5TrYc6zw2ORFLNvcVf/pf51cOUuunAMZ5iWfKIXDtgEwWcVrL6+WKw0OYtMOjJPC0bGyEPzTf3gtLFe0kpQyxjiMMcYw5mid2Mx7YWH5oHmHMVnyC80r58hy5FLlWRxWJivVdnWYrK3MEmKOmyefbo7LASaqpFqpccd3vbw3HAwjEJCT5tbh/maeJc12TIiBIY+tod1Df4xOv2iHWm+JI2h9YokyAYBxQSgJq7NMeKPhYHqWgBApU8YYd8IsP7Halh9fTVYFaMW19kdtYHDKoGTIJa7fM8cd8soz4uF+OhyjHGAYYRRDCMdozbXKsmTw8WdD6/T4J3//peeeOSe4sNZZLrxH7BbGHW2UlJnjltq9yHXgOrh6npd88sHt3A5lpycEY2Jq9nytsRiNvsY4A8xJz3z2ED//ejXwKaVUqkzKtByg2THv/uBjwVJtUAkFY9zlsjNAlKA9KOrnYr1bNC1YWJmllBNCCUgaDx2v4nqVsxdfcr2wc7K1tXnTcbzjo9Q+JnPqL7XWAWmKNIKzYtxntZmFA8cU8bHVNd/+wWhtHq6DhSkEPg5a6A4SLjwq83jQ3a2FMs3w6vPzL790WQjHOkNknhzvf5bEA2MKf1iexXkWaZW//9FeGGCiisAz1ZBeXCWeC07huxgP22ncp5R54fwH13cPDg5nJ/Cz1yrViscYy7JE5jljfBBhMMZ7N5IkM1luooSvLk16Hlfa9EeYnyosSzjtfBlgdSEQjkMpp5SlydAYc/1H324db1cbS4w7aTwa9HuUMkaNHSZY25+VkFjmrgUBBh4cDocXfk47TqanB6VUaPdwfwflAActbB3g8ATf+NZOr3PItcqF4z71xJlLj5Frr141xsBoY4zWuVL5xPSa45ZsgDfGBKWGlGky7t1/2CTAuWVa8okQRHCzOkce7hujM9cLk3jA8mQwjAhMnCgeMlfIPM8IIUpJAhLFmfWoRSl6Q9t6J47rK21CH09fRJKh2SlCFTmN02++/gQAxp08i4/3b3l+OUmy737vvb/7axelTLN0GAQOY0wplZ9KxC3EA6bw11qJrCMK7+Qjq67RIByMgpJiPfZG+OHt02UI1Ctaac3zdKhk9spLlwmhrh8abTFzJo56MAiqDWOMlf8YUEKIUvknt+9ubEVXz2FuinMuOBcLs2xNoFaO9g66//W/v708HzaqdDgcGyDJMOk4ruvZ4R1jnBBCx2m5lDeqYBTrKxWX547DPT8UnFMqSz7JJYwxlrxhVZ2Bj4sXzlh6dO/koXD8SmPpxZeXQF3CwbdFAAARuElEQVSZRe3jzf2dO1mW3n2YfuM7qVKohphp4MF+kVq7ojAFEo1sCM8p6l+bxNlFZ+3W5scslhYvYSzYyQ84F55wgtbhPS48IXwrOADAKCeUa/vsjNFGUcoIYd2T3T99Z0sbXL3AGGPVaoMLp1wxURQNRuOdI9Mfpfe2UzupXV9EyWe5xOZO7+xqZXp61hgwRpU2N+8lvotama+uLJQrk8LxlJSMc8HJ7rHJclhCGKOnE0wGLnwufK1lmgwmps9Ozl0edLYIpcboLB2naZzl5rELy7cfbN+4m6cZ9lvFI6iVcekMNnZx3C56mZTA4bAL0Gho8rkV3J7FluNiu6HGYGk+DEoNboxRMrPEQhCitSKEyDwBIcaoPIuE49ttqLWihNz6bOuwpQhQq9XqtbLnlShjQak+RVnzZNjsjEUNSYZhhHGMcQzPZYetvD/Srus5jj89f2E0bPZ6PUvxBeTx4Xa/25qeXd3ZftjtRfe2zeYe4rQAXBgDI2GA9WUvCEKAxFEvGvcmZoRW+cHOzZmFi0pmQanGGKtUKmHoV0Luu7nrwHPJpXX20WeSEmzsIs8LGojNSzwXveHn45JHGSyjRXX12Co4w4efYhih3U2zNOJMeIy7QVhPk5GUiRB+nsVpPHT9CiHQxlgzoDGGEKJk3u0OLAHEgIXlxuTMGcbdeNRWKr9w/kya3pUyH0bms4dgFNuHaHVTwTE3xVbWLnlBJYn7Skrfd1fm+daHstNHq5OVg7zTvfGDT6QrzCf3kaTQGkLAc0EJ0gxG40e3k3/1b37/ycvLe7t3X356YnFV9k7uB2FVydQYc7i/meWKs5n/8J8/bXVV6OPMAh7sm40duThDpDKTVdzdBoC5SQQejtqFaDbwyOwk+kPT6RfxkVD4HqTExg5mGsXXaHbyXCputMrSoXACSjkljBDKuANCLTvVGEWpNTATAMYoypjvQinsNfHSq08yJgihrhfa42lt+WR7t6W1rIWF9bw3LEbKrl923JLRutfeiKPR6oJ7c0M+3Mc3viMfW8PZJV7ycNJDvYyDBMpgoY5hVDjYbEy5frt549MmAe49HHvhx2fW18PKrOdXP7v+56PBMaOk3++3e6rkY24KT10UjRqP4izLVG+I2w8QeKiX8cIV/smGihNjT8bf/e1L87O1D2/s/sEfbVvxhOWsOAKBh40dhIG1pOr2yRFP416exTCGcWFglMoo5aXyxOnKJErmlHGbPQz7LY7RdB17TZxZW6WUGaOtr1I4QWNqjVDG+N2JentlwewfJXe2tXVZ+66xPBWt8yCsJek4l9Iai8Yx2n1cPsvnpjQhphLCEchy+B6G0ef4gIKYwMAptNJf++PvL8+99+u//pthZW5p/cXjw/8ZBKXrd5q1MpZmwSh+8En+1k/OT0/673z3fn8sBSsozPe25X4Tl8+5gmXnzkw988xLhNLp2bPbe9/48FY3iguJlUGx9KTCaZ9Hs9/46uVhb88CJbVWeTbWWgnhaa0Ao7UyRhNClcqVzHcfXhdMtnvpOGa/+ouvCMf9cewzIdTzK2FlQuvUEQh97Yo88LA6h6k6oGOjZbk2q1Uu8ySK4o3t7KSHcoBqGY+f9V2hYfTcBLGMqShBZ4A0Lw4sRsE5BCe/9DMXn7tE37s+3tgxF89NL6+sC8f/6EffAzG10GilXnl28qkn1tcWg5WFWinwV5Ymbt9t2gG75+CkR37r167+xq/+5Nklfn59vlydJoQyJs6tVeve3uKMzqUhBJ0eRjF8t4hf/RFmGpSXKrOU8dGgFZYnaeE3xaniS1PKuPC1kgDibHT3/nGWJZ2+WVud9/3Adj2KPhwhgLHSteW1pwf9w+bhw/3j9KAl56fE9HQjGvd7vbZSuR9US2F9vHUwipBkCANM1akjKKPumWU/isZKq2YHSYZR9GM8aQJK8DOvn/2Vr/70wf7W8R/8iVT4+h+/k4xbUw23Vg02t1pL85Xf/LUX5xYvuX4lS0ad1uZ41IvHzXFsXKc4cL50beVLb14DIWcuNIRTknmktWTcnV28dPbcjr9zr1HRH35m9pswGlKiFKLdh+/h1Zce5+X6sudVjFaEUBDKuUso1VpRavUw7JQ/QEaj8bffj84tkdCnaaaNAaGEEGols0brYqcR6gUVxyvlWVarHGsjO0PxxsXnjg+3b9265fvb09NLhLJUhu3+2HMwUcXls/akQxwnuSJRAkIRJxAckEVauDLv/PN/dG16ZsmSczhD4GFrX3/9zz6+tM4WZvzza9Wl1StzS1e44xPCgvJUmg47J7syj69e4EcnZu9YtbpoNGpaK8ZdyuB4oXCDNB4QQhhzls8822ntaG0ozcLAdAdIMtAIucRknVUbCzzPIm0U47bEMYw7SkmZJ4w7RmtKGdW8MILLuFaGI9Dq6nu7h0fH7fn5aStEMY94DpbDZAiAmYULaRJ9unnz+p3o/PUPtRxrQ+M4TZJxpTZTqVaz/JhRdAcYxWhIefdBFyazg6X+CCAQHM9dwuNrhAtx4cLjs3PL1mvtspMvvVpOkqjdU0mG47bxXPXYpStzS1dslmMd6lx4g0FHw/nymy9XqvW//psfvvtR76deu2r9/oSQPB1R5nDhEUIo45XaXFieMKYd+tnsBOIUnoPAQ5bDdQjnjP3L3/2d7vFto5UN4Yy7WksAybiXpSPHCxgThFKt8sGge+fu7jjGcQe9ocmS7pXHFk/DVtEEKTT5FjBO6eTM+mTdu3NvK03G59bq1YrvOEIryRjb3Dp5uDu2EfSkm9/fGTc7apxgFOG4g24fwwiOwPykhSvoXq/70c2H3W635OlabfLC2fnHzi+trcysLZZ+4oULKyvLC8tXCGWUcUooCINRBzu37t29NRhETz//xszCZZf233rjhUq1DkIo5QC0yoyWttjUShFCS2Gt194u+eagmWUSaws4s8g298zf++VXnnryKk/jjo3ilHKr0xfCT9ORUnmpPCmckm0tOl54cNgaJ8gl0gyM4i+/39w+ePvf/+uvMsYJERq50drYjNiAUGoMUTI7s37+y188fP/Du4fH/fnZeims2vZ5vZw+cQ43NuCwU1VIWgQpKRGlsHPM7SNUShhGJvDSkp8y9K9eXq02lrygTilfBbJ0lMY9xysz7tjYSpkghBmj+92jPJOzcyvl6rQxavXc84yJLBlRxijlSuUyz4wxlAmL7AV0tbHcmFpWent2Knl4IO9t4/6u0hqDfgeE8H57wxhJKLPMXpmntoDwSzUuXFjLBEAom1tY42yjNyymnoRgZ78/Ho/CsEIpIVbbqrVWOaGMgoMQoxUh5LnnXz44Orl5r53lerIxLgUlqXKHpedX6G5T24LZdghqAe5sgRJUQ1y94D13pRoEwUSjTKnQKiEE9YnF2YXHKBN2aQAQjq9kqmRmU0Vr1gCglVQymZqsPv74k1k6AqFBOJ3GPccLLcfl/t330nh44fI1YzRgCIFWOs/HYXkiS4ZnlqL3bgwscyTJ8Ofv3PnZN+/xcn31cPuDt9/50eMXFhfnJwa94yCsndaJ9mFBZrHS8s6du3GKwfjzQmR92S+X63Z2gEJHZGxz7lEII5R6Tunatdea/+fr+8fpcJT63rAakmFkrt/VVt4aA/UyJmu4v4tRhEaV/MJPL774/BNBOMG4w7lLmWMx3ZQJxlyctoysEcP1K7nt6FJBObHFy2hwSKBn51cZ53k6UjI1WhHCrDZC5knz4P7q2aeE4yuZyTyhjMdRdzQ4ytIR407J57ZUhO32MEOFTx23/L33H/yX//3ga392FyBSpkpJraSUqQ17jDlceN98+2/e+d7uMEKSng5LgHYvGww6jHFCGeMuOQXzFEg/SinjhHJt9NT07IX1Kat9vr+rk4xGMTb3CnCL4BAcJz20+6AUP/fm+Tff+nJ9cq1cm/f8KuOuzWAcr8KFb7+VBdcYowmllHLhho8+1Cr8Bv2Tnf0TAnNaqzFKmUXIwxgl02de+oXl9Re4CBhzCKGEsCwdySwWwiOEnnSi6cbnBLE0MzJPOOPBa69elWlHZsM47vuluudX7HzpFI4NQqmU2X5T2+TQEmlg0GzLk1a73pi1MnyAnP49I4RSSi0zRWtJCHvy6Rce7v7F8YlKcvRG+PBTPbIzNw1FEacwBhfX8NSV5a+8+Vzh6dHKaE0oZcxxvDII1ZYlVfRQLBKeEs7I6fZHISHN//YHt96/nr/4E+cAcOF5Qe1RuWwAL2gwJvI8JoRwNzA2VWJO52QnTSKlFIycqGKyhlYXnGFx1ve8gDpepT61fvHs9GDQH/SOR4NmmgwJoY4bnBLZqetWwrBidbsWzFouwRH4x//gysrqMoyxSbntadq3d2oY1LqgcJmJqaXHLz0VZ2AU97byjV2kGXJVTECTFITSN15Z/erPvW59NrZsAECZw0TBVLSodANjFwux5HitjdEgMFoarWwf5Uef9HaPUmOU0QogSmYyS5TK7D9lsfxGqzwd5clIa6VkqmQ6GnalksJxalWHswIMJTgmGlXXq1ClsnjU7A+irf3s6PCAUqZk7nrlR8ZIQuig3/6/39qz7AQL9rQvqT/ILGmt4L4Txhi3C95+J2uXsMAsQsj6mSV7SdUn95HlIBSNChZnsDSDKxdK/+y3X33ttWuMC8Y9uzYJYTi9TsBGcdtHgjFGF5ALSoUxxj4mC+TSWn7z7XfuPuhN1ZkfVIRb4sIvXiGI1lLJ9HD7R3aiDkIHvb3m/i1jFKUiisZpMh4N++Vy+dxqyY7oAw8f3zre3TugadQCTBj6BLi1MRoPu1orLtzTWauOo+7W5gdppl3n87mIxYLvHAztc+HC5yKw1dIjr+4puwiEcsYcx6uUy5W5STQ7iBIwijPzqIaohfA9vPXFpxeWz1HmCKfEuANjbLpnLyayAcEGnWJKarTW0q5kQukpGAgg9LPPPv3Db9zKJQRTSuWcu1x4jDkWMkopZ9z1gjpACGUwZjxs99p7TPhZnvWHse0OpElUq7gWX2tvKWi3DrjMkywZDEdqnGC0l71wNc/zxG4gu/07rZ006k7VaZLq0C8AtAwQApN1UbTntTSEnOZrlBBqDAAKaMBolRPuUMopMWsLYhTlJz3kElGK0Ifn4tXnl9bOrBfPxRhtlNY5AaEWUwVoJRl3KHeUzAyMUdLA9tcSo5WdMiuZaZ1v3Ln5b//jd7oDvTCNV56doIRqnSuZPjp/7FusT65RxmQuCWWMO4NBL0/HQVAOA9cYMxj0CSHf/WhsactpireuLV+8eJZn6SDPY8qoHSkPIjahtdESlAMmy8aj4Um5NjeOj23A8lwMx4hzlDy8/so6pVxraVdBkcGDFqcPE8VFVsYomSZxdzQ4qlbr55fbD/bU5h5aXfSHuHCm/OwzT9kBF6XC3p1iAYNaK6oUOAG0VtICmYxWWktbwMs8BRIlszQd+kHjzu33/93vvd8b6sUZ8qWX2cJ8xQ8njVZKpoChzLFr32hNOc+zCAaEUM+vJknaOvx0POoPx5lSOaVUKV2v0DjRroPnL2NuEn5pkgfhLGPu0vzETIM0OyaKIgDaaHuu9Nr70bj/6cbwsGWsL6U7LLA+l6+USkEpTYdC+IQyGACaMm7vriTUnobEqokJoZb5xxgXgizP4cEBjEGuMD01GYR1EGphdiBEywwQ1ivCmEsoJaCP/OWUMUI8+2ao1mF1sd/ZPt784UEr/73/9nF/jEqAZx4PfDdXShHCmON+Xu0bUwg5SMHXIpT7pdrVZ9/ot3f/6q/fbXWyi2dErRIAZvswArC+iFqZrq6ecf0aN0Y5bkkbGXimUcXOfndxvlKudkvlyTQe9rrHSTxOM2mAclDodYprE/ySdfIChDEBEKMVodQiEAns9tQ/ftOZ4wTjBO/dVLc2UQ4wGINRTE8IG48AUMYBYqg6jVankQiglBLKbUFjUwTGHD+YLFUXx4Ojo8Ot//fd9mCMqTr/nd/6wvJCePfWd+r1ulY5pZRQZu9rs2c0Fx4hzBhLqiNc+JX6inBKynzfEdko0o0aIYQdtpSVZ7743KUXXv5ZrbP/DyIlR01YWvZVAAAAAElFTkSuQmCC" width = "100" height = "100" /> </svg> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/btn_donate_LG.gif����������������������������������������0000664�0000000�0000000�00000003262�11770671653�0024071�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a\���3-ߡ҄8=@QVB >ku|@^uoGH`t|;>j:bۯ0Ts; Jqοe Im6 C`0J[0QlPYTMpj IoC`t~Z&ܨߟ9`oqphM In B^@[nЪ޺G@QXwϘ=Aϔ4 Gj@vC,@`{ B_ԓ`uZա/jߛ0;{zpC΀OPk~фݾܚKٔԝˡ`v;bWypgKŪٗl=``OஏyIpoܧσοΦ@^v`aQp_٪yab@_wRo@RY;cPeo)N֦ϕ8pyspIPizʝ}CJĥ@`z1F}?Pj{?dPk~Bpݟ8}ٞ̀aB(�3f��3���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!���,����\����8P*\ȰÇ J@X>chȱǏ CqG(JfO0cʜI͛8o6R0< JѣH*]TPϕ`tIJիXjʕjEٳhӪ]˶[YBիݻx˷߿z\DÈ�?AKLV3#ғYC-c'N �cEo<yMu,8$}7գ~;p!� �_w`|C/Cu `Aӟg| `̟P͸z`RsO Q@~z' 0T Vx� @ p`�q�B0r%!@C c*0#v@N% (L6餓8�#z�<�r�6�`J$ 1000@EOH6`|g 蠄 j0G*0|�ꃡ"2F)>�cN:*ehJ|j $뮻� H�C �$D�L&�L*n.QkU1n;B-1@0�#Dp�cʺ%�cĽk(FqBg14q+ <L!tl*_lr )0vŌ 1\O0mHL3MG7F@AK35ZKP@IMէTo$L pmxw5<%/.n'` /G.Wng9HU .褗n騧yX!"n q-o'7 C�Pgwg/SHD觯@@�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/home.html������������������������������������������������0000664�0000000�0000000�00000001622�11770671653�0022517�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <body> <div class="centering" style="display: table; margin: 0 auto; height: 100%;"> <div style="display: table-cell; vertical-align: middle;"> <center> <img src="qrc:/img/semperWeb-big.svg"/> <p><big><b>semperWeb</b></big></p> <p>by SemperPax  <a href="http://www.twitter.com/SmprPax"><img src="t_logo-a.png" alt="Follow me on Twitter"/></a></p> <p><a href="http://redmine.semperpax.com/projects/semperweb">http://redmine.semperpax.com</a> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="W4PNXC9M6SLRN"> <input type="image" src="btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="pixel.gif" width="1" height="1"> </form> </center> </div> </div> </body> </html> ��������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/pixel.gif������������������������������������������������0000664�0000000�0000000�00000000053�11770671653�0022506�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a������!����,�������D�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/resources.qrc��������������������������������������������0000664�0000000�0000000�00000001150�11770671653�0023416�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/html"> <file>home.html</file> <file>btn_donate_LG.gif</file> <file>pixel.gif</file> <file>t_logo-a.png</file> </qresource> <qresource prefix="/img"> <file>semperWeb.svg</file> <file>semperWeb-big.svg</file> </qresource> <qresource prefix="/test"> <file alias="test.nma">E:/cbro/Merkaartor/log_2009-04-18_16-40-39.bin.nma</file> </qresource> <qresource prefix="/doc"> <file>initial.mdc</file> </qresource> <qresource prefix="/Styles"> <file>Mapnik.mas</file> </qresource> </RCC> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/semperWeb - Copy.svg�������������������������������������0000664�0000000�0000000�00000014167�11770671653�0024373�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"> <svg version="1.1" baseProfile="tiny" id="svg1" sodipodi:version="0.32" inkscape:version="0.46" sodipodi:docname="11949842201535358324globe_01.svg" sodipodi:docbase="/home/bana/misc/loen" inkscape:output_extension="org.inkscape.output.svg.inkscape" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="47.992px" height="48.007px" viewBox="0 0 47.992 48.007" xml:space="preserve"> <defs> <inkscape:perspective id="perspective28" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"> </inkscape:perspective> </defs> <sodipodi:namedview id="base" inkscape:window-y="-8" inkscape:window-x="-8" inkscape:window-height="746" inkscape:window-width="1360" inkscape:current-layer="svg1" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:zoom="1.569201" showgrid="false" borderopacity="1.0" bordercolor="#666666" inkscape:cy="120.2455" pagecolor="#ffffff" inkscape:cx="181.18414"> </sodipodi:namedview> <g id="g1006" transform="matrix(0.1792847,0,0,0.1747529,-40.488306,-43.297229)"> <g id="path908"> <image width="48" height="48" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsSAAALEgHS3X78AAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoNJREFUeNrMms1Kw0AQx7OyBz8h PlSvvXrwVgpeKngREbwo9KKXQumht1567aEgpaD4DiKUgsV3sB+C0I6mUpuY3WZnd2ZjIbRJmslv Z/6zmd2NCIg+9/efMJ8HwWIB31uw3H72V7/Xx6OtXN4WFPd1MtLvf0ISFFLgKvjkeQhOT3eEtwY8 Pv5Ap2FA4XV9RHQNu7jANWbLFj66WRw+uW8HH31XqzMgj8DTk87ra3iTiJjIKb5/c7MrnCMQh097 mQ8+2i4vs6MhMPA6mCwQWzmtrrm72xPoBqzgXb3oAh//b62mboSwhcd6kcIRjUa6EUIFTy0BDHyW rWZzP8Es/zZgEzyuYfS5EO1vjMDDgypp+eGxcmq11lEQWfBqEBt50OVCdLzdPhAJCZlfTAPvKqdU DriENM9cWIah14vLhw+eWk6dzoGQSfn46CrpcuFXQpzwnHJaSqjbjeRD20P4LDMkB7xPOcn8ygaa MkNyVI4+5SQ5n5Y0ZcZmW5KzcnSXU7YjJOfT0q3MMLMluStHOzmZO0JyPurtygycLemjcuR0hPRR OXKOq6WvypHLEctyul7/AF8SoLT1/Byuy+k8vWjriN9ymhrelyMSg/rb2w/Iu0fB1FuDQaga1Ofb o2AcoRjUw7/MBd055cTW9fUM8upRMPZeX0OhnRu9uprlngubbMXhlXOjtAMXekcYTa+fn0/Bdy6Y 2Hp7OxTGCxxnZ1PgHIhgHaGCz1xiqlSmwAlvKicdvNEq5cnJBHxP/JrCGy+zlkoToILHyCkLHr1S f3w8Bh+zE6PRoWB71eDoaAycM3UYeOeXPYrFMVD088Nh6O9lD92nUHgHzAPv5SUkufeXAAMAy7XM 80+CxBwAAAAASUVORK5CYII=" sodipodi:cx="342.13577" sodipodi:cy="244.65948" sodipodi:rx="132.30278" sodipodi:ry="135.77428" sodipodi:type="arc" transform="matrix(5.5777 0 0 5.7224 225.8103 247.7821)"> </image> <path d="M359.722,529.877h-0.063c-77.72,0-140.971-64.896-141.001-144.663c-0.014-38.746,14.641-75.092,41.266-102.435 c26.628-27.34,62.036-42.406,99.704-42.42c77.78,0,141.036,64.896,141.063,144.666c0.016,38.743-14.641,75.089-41.266,102.432 C432.801,514.8,397.39,529.865,359.722,529.877L359.722,529.877z M359.678,258.24c-33.055,0.011-64.086,13.213-87.421,37.179 c-23.335,23.962-36.182,55.818-36.168,89.697c0.025,70.001,55.458,126.878,123.57,126.878v8.941l0.057-8.941 c33.011-0.011,64.043-13.211,87.378-37.179c23.335-23.962,36.179-55.815,36.168-89.694 C483.24,315.118,427.801,258.24,359.678,258.24L359.678,258.24z"/> </g> <path id="path4042" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115c0,0-37.562,15.706-38.33,136.051 c-0.771,120.346,42.187,134.724,42.187,134.724"/> <path id="path7092" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115 c0,0,115.716,15.429,114.942,135.775c-0.768,120.348-111.086,135.001-111.086,135.001"/> <path id="path7093" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115c0,0,41.403,16.214,40.634,136.56 c-0.773,120.346-36.778,134.216-36.778,134.216"/> <path id="path7094" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115 c0,0-105.157,13.898-105.925,134.244c-0.773,120.348,109.781,136.532,109.781,136.532"/> <path id="path7095" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115c0,0,77.146,13.887,76.372,134.232 c-0.773,120.348-72.516,136.543-72.516,136.543"/> <path id="path7096" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115c0,0-77.788,14.429-78.562,134.774 c-0.773,120.343,82.418,136.001,82.418,136.001"/> <path id="path7097" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M353.891,250.115c0,0,2.315,11.573,1.542,131.919 c-0.768,120.348,2.315,138.857,2.315,138.857"/> <path id="path7107" fill="none" stroke="#000000" d="M306.834,260.917c0,0,3.083,17.743,47.83,17.743 c44.742,0,57.858-16.2,57.858-16.2"/> <path id="path7108" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M263.416,292.547c0,0,2.195,27,90.564,27 c88.358,0,105.042-25.457,103.501-24.686"/> <path id="path7109" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M241.214,324.176c0,0,10.21,34.714,113.45,34.714 c103.242,0,124.246-31.629,124.246-31.629"/> <path id="path7110" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M228.959,366.605c0,0,16.886,28.539,127.568,28.539 s133.871-26.997,133.871-26.997"/> <path id="path7111" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M228.959,398.234c0,0,16.096,32.401,126.452,32.401 c110.35,0,134.214-30.858,134.214-30.858"/> <path id="path7112" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M236.595,432.177c0,0,15.627,30.087,119.191,30.087 c103.558,0,125.428-28.545,125.428-28.545"/> <path id="path7113" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M253.399,465.349c0,0,13.127,26.226,102.787,26.226 s108.991-24.683,108.991-24.683"/> <path id="path7114" sodipodi:nodetypes="ccc" fill="none" stroke="#000000" d="M277.834,490.032c0,0,10.932,24.689,79.896,24.689 c68.97,0,83.012-23.146,83.012-23.146"/> </g> </svg> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/semperWeb-big.svg����������������������������������������0000664�0000000�0000000�00000025442�11770671653�0024120�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg1" sodipodi:version="0.32" inkscape:version="0.48.0 r9654" sodipodi:docname="semperWeb-big.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" x="0px" y="0px" width="100" height="100" viewBox="0 0 99.999999 100" xml:space="preserve"><metadata id="metadata28"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata> <defs id="defs3"> <inkscape:perspective id="perspective28" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"> </inkscape:perspective> <radialGradient inkscape:collect="always" xlink:href="#linearGradient4114" id="radialGradient4120" gradientTransform="scale(1.64399,0.608276)" cx="15.115514" cy="63.965389" fx="15.115514" fy="63.965389" r="12.289036" gradientUnits="userSpaceOnUse" /><linearGradient inkscape:collect="always" id="linearGradient4114"><stop stop-color="#000000" stop-opacity="1" offset="0" id="stop4116" /><stop stop-color="#000000" stop-opacity="0" offset="1" id="stop4118" /></linearGradient><radialGradient inkscape:collect="always" xlink:href="#linearGradient3962" id="radialGradient3968" gradientTransform="scale(0.999989,1.000011)" cx="18.247644" cy="15.716079" fx="18.247644" fy="15.716079" r="29.993349" gradientUnits="userSpaceOnUse" /><linearGradient id="linearGradient3962"><stop stop-color="#d3e9ff" stop-opacity="1.0000000" offset="0.0000000" id="stop3964" /><stop stop-color="#d3e9ff" stop-opacity="1.0000000" offset="0.15517241" id="stop4134" /><stop stop-color="#4074ae" stop-opacity="1.0000000" offset="0.75000000" id="stop4346" /><stop stop-color="#36486c" stop-opacity="1.0000000" offset="1.0000000" id="stop3966" /></linearGradient><radialGradient inkscape:collect="always" xlink:href="#linearGradient4350" id="radialGradient4356" gradientTransform="scale(1.179536,0.847791)" cx="11.826907" cy="10.476453" fx="11.826907" fy="10.476453" r="32.664848" gradientUnits="userSpaceOnUse" /><linearGradient inkscape:collect="always" id="linearGradient4350"><stop stop-color="#ffffff" stop-opacity="1" offset="0" id="stop4352" /><stop stop-color="#ffffff" stop-opacity="0" offset="1" id="stop4354" /></linearGradient><radialGradient r="32.664848" fy="10.476453" fx="11.826907" cy="10.476453" cx="11.826907" gradientTransform="scale(1.179536,0.847791)" gradientUnits="userSpaceOnUse" id="radialGradient3188" xlink:href="#linearGradient4350" inkscape:collect="always" /></defs> <sodipodi:namedview id="base" inkscape:window-y="-8" inkscape:window-x="-8" inkscape:window-height="745" inkscape:window-width="1360" inkscape:current-layer="svg1" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:zoom="3.138402" showgrid="false" borderopacity="1.0" bordercolor="#666666" inkscape:cy="21.004812" pagecolor="#ffffff" inkscape:cx="29.513245" inkscape:window-maximized="0"> </sodipodi:namedview> <g transform="matrix(2.2367403,0,0,2.2367403,-4.7872027,-4.8196743)" id="g3155"><path style="fill:url(#radialGradient4120);fill-opacity:1;stroke:none" transform="matrix(1,0,0,1.243244,0,-10.27241)" d="m 45.052803,38.908627 c 0,4.128399 -9.045214,7.475128 -20.203051,7.475128 -11.157836,0 -20.2030502,-3.346729 -20.2030502,-7.475128 0,-4.1284 9.0452142,-7.475129 20.2030502,-7.475129 11.157837,0 20.203051,3.346729 20.203051,7.475129 z" sodipodi:ry="7.4751287" sodipodi:rx="20.203051" sodipodi:cy="38.908627" sodipodi:cx="24.849752" id="path4112" sodipodi:type="arc" /><path style="fill:url(#radialGradient3968);fill-opacity:1;fill-rule:nonzero;stroke:#39396c;stroke-miterlimit:4;stroke-opacity:1" inkscape:connector-curvature="0" id="path3214" d="m 43.959853,23.485499 c 0,10.709718 -8.682103,19.391723 -19.390348,19.391723 -10.709226,0 -19.3908387,-8.682103 -19.3908387,-19.391723 0,-10.709227 8.6816127,-19.3903473 19.3908387,-19.3903473 10.708245,0 19.390348,8.6811203 19.390348,19.3903473 l 0,0 z" stroke-miterlimit="4.0000000" /><path style="opacity:0.42159382;fill:url(#radialGradient3188);fill-opacity:1;stroke:none" transform="matrix(0.835938,0,0,1,9.886868,0)" d="m 30.708637,15.271057 c 0,5.132605 -5.788937,9.293404 -12.929952,9.293404 -7.141016,0 -12.929953,-4.160799 -12.929953,-9.293404 0,-5.132605 5.788937,-9.2934035 12.929953,-9.2934035 7.141015,0 12.929952,4.1607985 12.929952,9.2934035 z" sodipodi:ry="9.2934036" sodipodi:rx="12.929953" sodipodi:cy="15.271057" sodipodi:cx="17.778685" id="path4348" sodipodi:type="arc" /></g><g id="g3043" transform="matrix(1.7372186,0,0,1.7372186,14.822334,7.6227609)"><path inkscape:connector-curvature="0" id="path11" d="m 20.321791,51.033973 h -0.01206 c -14.8843148,0 -26.9976422,-12.120645 -27.0033875,-27.018751 -0.00268,-7.236601 2.8039276,-14.0249541 7.9029354,-19.1318142 5.0995823,-5.10629969 11.8806401,-7.9201809 19.0945151,-7.9227957 14.895806,0 27.010091,12.1206448 27.015262,27.0193109 0.0031,7.236041 -2.803928,14.024394 -7.902936,19.131254 -5.098816,5.10686 -11.880448,7.920555 -19.094324,7.922796 l 0,0 z M 20.313365,0.30025169 C 13.982935,0.30230616 8.040125,2.7680475 3.5711918,7.2441843 -0.89774147,11.719574 -3.3580965,17.669328 -3.3554153,23.996919 -3.3506275,37.071026 7.2654588,47.69396 20.309726,47.69396 v 1.669913 l 0.01092,-1.669913 C 26.64265,47.69186 32.585651,45.226538 37.054585,40.750027 41.523518,36.274638 43.983298,30.325444 43.981192,23.997853 43.976974,10.923372 33.359739,0.30025169 20.313365,0.30025169 l 0,0 z" /><path id="path4042" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 -7.193575,2.9334142 -7.340656,25.4102849 -0.147656,22.477057 8.079318,25.16244 8.079318,25.16244" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7092" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 22.161006,2.8816788 22.012776,25.3587359 C 41.070779,46.61891 19.943555,49.355655 19.943555,49.355655" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7093" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 7.929172,3.0282935 7.7819,25.5053509 -0.148039,22.477057 -7.04343,25.067561 -7.04343,25.067561" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7094" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 -20.13883073,2.5957335 -20.285912,25.0727909 -0.1480388,22.477431 21.024382,25.500121 21.024382,25.500121" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7095" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 14.774387,2.593679 14.626157,25.0705499 -0.148039,22.477431 -13.887687,25.502175 -13.887687,25.502175" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7096" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 -14.897338,2.6949085 -15.0455683,25.1717789 C 4.0114779,46.431019 19.943555,49.355468 19.943555,49.355468" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7097" sodipodi:nodetypes="ccc" d="m 19.205085,-1.2172569 c 0,0 0.44335,2.16149255 0.295311,24.6385499 -0.147081,22.477431 0.443351,25.934362 0.443351,25.934362" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7107" d="m 10.193103,0.80023576 c 0,0 0.590432,3.31386524 9.160021,3.31386524 8.568631,0 11.080503,-3.0256787 11.080503,-3.0256787" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7108" sodipodi:nodetypes="ccc" d="m 1.8780339,6.70778 c 0,0 0.4203689,5.042798 17.3440951,5.042798 16.92162,0 20.116807,-4.7546114 19.821687,-4.6106115" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7109" sodipodi:nodetypes="ccc" d="m -2.3739162,12.615138 c 0,0 1.95533783,6.483543 21.7270402,6.483543 19.772085,0 23.794603,-5.907357 23.794603,-5.907357" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7110" sodipodi:nodetypes="ccc" d="m -4.7208961,20.539614 c 0,0 3.2338721,5.330237 24.4308071,5.330237 21.196934,0 25.637906,-5.042237 25.637906,-5.042237" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7111" sodipodi:nodetypes="ccc" d="m -4.7208961,26.446972 c 0,0 3.0825776,6.051544 24.2170791,6.051544 21.133353,0 25.703596,-5.763358 25.703596,-5.763358" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7112" sodipodi:nodetypes="ccc" d="m -3.2585103,32.786516 c 0,0 2.99275853,5.619357 22.8265103,5.619357 19.832603,0 24.020971,-5.331358 24.020971,-5.331358" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7113" sodipodi:nodetypes="ccc" d="m -0.04034211,38.98206 c 0,0 2.51397841,4.898237 19.68494711,4.898237 17.170969,0 20.873088,-4.610051 20.873088,-4.610051" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /><path id="path7114" sodipodi:nodetypes="ccc" d="m 4.6392543,43.592111 c 0,0 2.0936096,4.611171 15.3010447,4.611171 13.208585,0 15.897797,-4.322985 15.897797,-4.322985" inkscape:connector-curvature="0" style="fill:none;stroke:#000000;stroke-width:0.1891263" /></g> </svg>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/semperWeb.svg��������������������������������������������0000664�0000000�0000000�00000015476�11770671653�0023367�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="48" height="48" viewBox="0 0 48 48" id="svg1" xml:space="preserve"><metadata id="metadata28"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata> <defs id="defs3"> <linearGradient id="linearGradient4114"><stop id="stop4116" style="stop-color:#000000;stop-opacity:1" offset="0" /><stop id="stop4118" style="stop-color:#000000;stop-opacity:0" offset="1" /></linearGradient><linearGradient id="linearGradient3962"><stop id="stop3964" style="stop-color:#d3e9ff;stop-opacity:1" offset="0" /><stop id="stop4134" style="stop-color:#d3e9ff;stop-opacity:1" offset="0.15517241" /><stop id="stop4346" style="stop-color:#4074ae;stop-opacity:1" offset="0.75" /><stop id="stop3966" style="stop-color:#36486c;stop-opacity:1" offset="1" /></linearGradient><radialGradient cx="11.826907" cy="10.476453" r="32.664848" fx="11.826907" fy="10.476453" id="radialGradient4356" xlink:href="#linearGradient4350" gradientUnits="userSpaceOnUse" gradientTransform="scale(1.179536,0.847791)" /><linearGradient id="linearGradient4350"><stop id="stop4352" style="stop-color:#ffffff;stop-opacity:1" offset="0" /><stop id="stop4354" style="stop-color:#ffffff;stop-opacity:0" offset="1" /></linearGradient><radialGradient cx="15.115514" cy="63.965389" r="12.289036" fx="15.115514" fy="63.965389" id="radialGradient3993" xlink:href="#linearGradient4114" gradientUnits="userSpaceOnUse" gradientTransform="scale(1.64399,0.608276)" /></defs> <path d="m 45.052803,38.908627 a 20.203051,7.4751287 0 1 1 -40.4061012,0 20.203051,7.4751287 0 1 1 40.4061012,0 z" transform="matrix(1.104732,0,0,1.3734514,-2.9783789,-14.517628)" id="path4112" style="fill:url(#radialGradient3993);fill-opacity:1;stroke:none" /><path d="m 45.585477,22.775815 c 0,11.831368 -9.591397,21.422657 -21.421138,21.422657 -11.830824,0 -21.4216795,-9.591397 -21.4216795,-21.422657 0,-11.830826 9.5908555,-21.4211375 21.4216795,-21.4211375 11.829741,0 21.421138,9.5903115 21.421138,21.4211375 l 0,0 z" id="path3214" style="fill:#4074ae;fill-opacity:1;fill-rule:nonzero;stroke:#39396c;stroke-width:1.10473204;stroke-miterlimit:4;stroke-opacity:1" /><path d="m 24.143263,46.763994 h -0.01035 C 11.361922,46.763994 0.96848257,36.364276 0.963553,23.58145 0.96125352,17.372324 3.3693702,11.547802 7.7444049,7.1660304 12.119933,2.7847391 17.938195,0.37038155 24.127821,0.36813801 c 12.780853,0 23.175114,10.39971799 23.179551,23.18302499 0.0027,6.208645 -2.405818,12.033166 -6.780853,16.414938 -4.37487,4.381772 -10.193625,6.79597 -16.383252,6.797893 l 0,0 z M 24.136033,3.2336051 C 18.704417,3.2353679 13.605386,5.3510156 9.770966,9.1916164 5.9365459,13.031576 3.8255198,18.136566 3.8278203,23.565745 3.8319283,34.78355 12.940709,43.898206 24.132911,43.898206 v 1.432814 l 0.0094,-1.432814 c 5.424386,-0.0018 10.523581,-2.117089 14.358002,-5.958011 3.83442,-3.83996 5.944953,-8.944468 5.943146,-14.373648 C 44.439809,12.348422 35.330042,3.2336051 24.136033,3.2336051 l 0,0 z" id="path11" /><path d="m 23.18511,1.9315571 c 0,0 -6.172209,2.5169189 -6.298407,21.8024529 -0.126691,19.285694 6.932192,21.589798 6.932192,21.589798" id="path4042" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 23.18511,1.9315571 c 0,0 19.014517,2.4725291 18.887333,21.7582229 C 41.946244,42.975795 23.81873,45.323969 23.81873,45.323969" id="path7092" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 23.18511,1.9315571 c 0,0 6.803363,2.598327 6.677002,21.8840209 -0.12702,19.285695 -6.043382,21.508391 -6.043382,21.508391" id="path7093" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 23.18511,1.9315571 c 0,0 -17.2794564,2.2271832 -17.4056546,21.5128779 C 5.6524356,42.73045 23.81873,45.323969 23.81873,45.323969" id="path7094" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 23.18511,1.9315571 c 0,0 12.676673,2.2254204 12.54949,21.5109549 -0.12702,19.286015 -11.91587,21.881296 -11.91587,21.881296" id="path7095" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 23.18511,1.9315571 c 0,0 -12.782167,2.312277 -12.909351,21.5978109 -0.12702,19.285214 13.542971,21.79444 13.542971,21.79444" id="path7096" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 23.18511,1.9315571 c 0,0 0.380402,1.8545971 0.253382,21.1402919 -0.126198,19.286015 0.380403,22.25212 0.380403,22.25212" id="path7097" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 15.452678,3.6625999 c 0,0 0.5066,2.8433523 7.859452,2.8433523 7.35203,0 9.507259,-2.5960834 9.507259,-2.5960834" id="path7107" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 8.318208,8.7313725 c 0,0 0.3606836,4.3268055 14.881526,4.3268055 14.519036,0 17.26056,-4.0795365 17.007342,-3.9559822" id="path7108" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 4.6699631,13.799985 c 0,0 1.6777128,5.56299 18.6421669,5.56299 16.964783,0 20.416171,-5.068612 20.416171,-5.068612" id="path7109" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 2.6562147,20.599319 c 0,0 2.7747168,4.573434 20.9620443,4.573434 18.187327,0 21.997756,-4.326325 21.997756,-4.326325" id="path7110" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 2.6562147,25.667932 c 0,0 2.6449036,5.192327 20.7786623,5.192327 18.132774,0 22.054119,-4.945058 22.054119,-4.945058" id="path7111" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 3.9109664,31.107368 c 0,0 2.5678373,4.821503 19.5855306,4.821503 17.016708,0 20.610399,-4.574395 20.610399,-4.574395" id="path7112" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 6.672209,36.423249 c 0,0 2.1570359,4.20277 16.890017,4.20277 14.732981,0 17.909461,-3.955501 17.909461,-3.955501" id="path7113" style="fill:none;stroke:#000000;stroke-width:0.16227356" /><path d="m 10.687382,40.378751 c 0,0 1.796352,3.956462 13.128554,3.956462 11.333189,0 13.640578,-3.709194 13.640578,-3.709194" id="path7114" style="fill:none;stroke:#000000;stroke-width:0.16227356" /> </svg>��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/resources/t_logo-a.png���������������������������������������������0000664�0000000�0000000�00000004265�11770671653�0023116�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���$���$�������tEXtSoftware�Adobe ImageReadyqe<��fiTXtXML:com.adobe.xmp�����<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:F77F117407206811AD26D1F9FB271BE0" xmpMM:DocumentID="xmp.did:13A5D296CCCA11DF948AC71C3BA0292E" xmpMM:InstanceID="xmp.iid:13A5D295CCCA11DF948AC71C3BA0292E" xmp:CreatorTool="Adobe Photoshop CS5 Macintosh"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FC7F1174072068118E3793D54EDCDA3F" stRef:documentID="xmp.did:F77F117407206811AD26D1F9FB271BE0"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>`��IDATxX[L\U]Ν 3C)0тU|"ҘiMM4&mIF?~M?4~hRc⏚RiՈbU 3qg2C dÜ;k}>�b7Ț7Ⱦ#;-K @YZ\VAh ~qzuhzrg 4xN Nk.ҵBD"Tc E?fF᫛D y 悹-b6spzh}B\|zF(H_(pc2d$!3k5 f6{#,@Br�aA k0jog$<$G;r%<SgWZQ@CYQ_�g;ӄ/#Pb,d+M +hC$D‹Q7 "Vkc0*J¹bxām].Ypy'^[a%.wMWMye_9L4FL!愆Գ(7ek7f':mCx̹-m(4֣;,Je`o5&߀J, oPQET1sܻ[)o 9d:)[)m3G~I!SFI+"=I pZ5ǷpݤW CI!"r ԗ1JB�=yLC.|ԁõv8 Q*0=YG:ސA3Hf!SF`EJ9? K^Ѩ64dY*Pش" =$S]As 8O$_ؗyȪH�T#|$_/CSYQh/|х@d+i:vatn5d-X*fK5 -{$0dտp.z}^ QzsP[A*/ #㕐vL}loxFcuU鋝>3fg68^0L` 3SMUx +\G?ZQMĄN@triTB!xO9PY=-А QpN~ Ly>7gdJiJRx^ {߿]ɋ+k< o1N�}zzV$l\z=baiɟ FU`Q[!c83ef'-yP%3=_-Y/+`31PkC݁@(+)Z\ ]#Mg^Gk4J$O�`_0p����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/retinaIcons.qrc����������������������������������������������������0000664�0000000�0000000�00000002006�11770671653�0021651�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/icons"> <file alias="up">images/arrow_up_48.png</file> <file alias="down">images/arrow_down_48.png</file> <file alias="back">images/arrow_left_48.png</file> <file alias="forward">images/arrow_right_48.png</file> <file alias="bookmark">images/heart_48.png</file> <file alias="edit">images/pencil_48.png</file> <file alias="stop">images/stop_48.png</file> <file alias="refresh">images/reload_48.png</file> <file alias="add">images/plus_48.png</file> <file alias="remove">images/minus_48.png</file> <file alias="exit">images/on_off_48.png</file> <file alias="zoomOut">images/zoom_out_48.png</file> <file alias="search">images/magnifier_48.png</file> <file alias="zoomIn">images/zoom_in_48.png</file> <file alias="gps">images/wifi_48.png</file> <file alias="menu">images/tray_full_48.png</file> <file alias="settings">images/gear_48.png</file> </qresource> </RCC> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/semperWeb.qrc������������������������������������������������������0000664�0000000�0000000�00000001457�11770671653�0021335�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/icons"> <file alias="forward">images/go-next.png</file> <file alias="back">images/go-previous.png</file> <file alias="bookmark">images/edit-find.png</file> <file alias="add">images/list-add.png</file> <file alias="remove">images/list-remove.png</file> <file alias="stop">images/process-stop.png</file> <file alias="exit">images/system-log-out.png</file> <file alias="zoom100">images/zoom-original.png</file> <file alias="zoomBest">images/zoom-best-fit.png</file> <file alias="up">images/go-up.png</file> <file alias="down">images/go-down.png</file> <file alias="refresh">images/view-refresh.png</file> <file alias="edit">images/edit-find-replace.png</file> </qresource> </RCC> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/semperMerk/src/sym_iap_util.h�����������������������������������������������������0000664�0000000�0000000�00000037772�11770671653�0021555�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QSYM_IAP_UTIL_H #define QSYM_IAP_UTIL_H // Symbian #include <utf.h> #include <es_sock.h> #include <in_sock.h> #include <es_enum.h> #include <in_iface.h> #include <commdbconnpref.h> #include <e32cmn.h> // OpenC #include <sys/socket.h> #include <net/if.h> //Qt #include <QSettings> #include <QStringList> //#include <QTextCodec> _LIT(KIapNameSetting, "IAP\\Name"); // text - mandatory _LIT(KIapDialogPref, "IAP\\DialogPref"); // TUnit32 - optional _LIT(KIapService, "IAP\\IAPService"); // TUnit32 - mandatory _LIT(KIapServiceType, "IAP\\IAPServiceType"); // text - mandatory _LIT(KIapBearer, "IAP\\IAPBearer"); // TUint32 - optional _LIT(KIapBearerType, "IAP\\IAPBearerType"); // text - optional _LIT(KIapNetwork, "IAP\\IAPNetwork"); // TUint32 - optional const QLatin1String qtOrganizationTag("Trolltech"); const QLatin1String qtNetworkModuleTag("QtNetwork"); const QLatin1String iapGroupTag("IAP"); const QLatin1String iapNamesArrayTag("Names"); const QLatin1String iapNameItemTag("Name"); static QTextCodec *utf16LETextCodec = 0; void clearIapNamesSettings(QSettings &settings) { settings.beginGroup(qtNetworkModuleTag); settings.beginGroup(iapGroupTag); settings.remove(iapNamesArrayTag); settings.endGroup(); settings.endGroup(); } void writeIapNamesSettings(QSettings &settings, const QStringList& iapNames) { clearIapNamesSettings(settings); settings.beginGroup(qtNetworkModuleTag); settings.beginGroup(iapGroupTag); settings.beginWriteArray(iapNamesArrayTag); for (int index = 0; index < iapNames.size(); ++index) { settings.setArrayIndex(index); settings.setValue(iapNameItemTag, iapNames.at(index)); } settings.endArray(); settings.endGroup(); settings.endGroup(); } void readIapNamesSettings(QSettings &settings, QStringList& iapNames) { settings.beginGroup(qtNetworkModuleTag); settings.beginGroup(iapGroupTag); int last = settings.beginReadArray(iapNamesArrayTag); for (int index = 0; index < last; ++index) { settings.setArrayIndex(index); iapNames.append(settings.value(iapNameItemTag).toString()); } settings.endArray(); settings.endGroup(); settings.endGroup(); } static QString qt_TNameToQString(TName data) { if(utf16LETextCodec == 0) utf16LETextCodec = QTextCodec::codecForName("UTF-16LE"); QByteArray tmpByteArray = QByteArray::fromRawData((char*)(data.PtrZ()), data.Length() * 2); return utf16LETextCodec->toUnicode(tmpByteArray); } static QString qt_InterfaceInfoL() { QString output; TBuf8<512> buffer; TBuf<128> t; TAutoClose<RSocketServ> ss; User::LeaveIfError(ss.iObj.Connect()); ss.PushL(); TAutoClose<RSocket> sock; User::LeaveIfError(sock.iObj.Open(ss.iObj, _L("udp"))); sock.PushL(); User::LeaveIfError(sock.iObj.SetOpt(KSoInetEnumInterfaces, KSolInetIfCtrl)); TProtocolDesc in; User::LeaveIfError(sock.iObj.Info(in)); printf("EPOC32 IP Configuration TCPIP Version %d.%d.%d\n", in.iVersion.iMajor, in.iVersion.iMinor, in.iVersion.iBuild); TPckgBuf<TSoInetInterfaceInfo> info, next; TInt res=sock.iObj.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, info); if(res!=KErrNone) User::Leave(res); TInt count = 0; while(res==KErrNone) { res=sock.iObj.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, next); if(info().iName != _L("") && info().iName != _L("loop6") && info().iName != _L("loop4")) { printf("Interface %d\n", count++); printf("Name \"%s\"\n", qt_TNameToQString(info().iName).toLatin1().data()); printf("NIF tag \"%s\"\n", qt_TNameToQString(info().iTag).toLatin1().data()); printf("State "); switch (info().iState) { case EIfPending: printf("pending\n"); break; case EIfUp: printf("up\n"); break; case EIfBusy: printf("busy\n"); break; default: printf("down\n"); break; } printf("Mtu %d\n", info().iMtu); printf("Speed Metric %d\n", info().iSpeedMetric); printf("Features:"); info().iFeatures & KIfIsLoopback ? printf(" loopback") : printf(""); info().iFeatures & KIfIsDialup ? printf(" dialup") : printf(""); info().iFeatures & KIfIsPointToPoint ? printf(" pointtopoint") : printf(""); info().iFeatures & KIfCanBroadcast ? printf(" canbroadcast") : printf(""); info().iFeatures & KIfCanMulticast ? printf(" canmulticast") : printf(""); info().iFeatures & KIfCanSetMTU ? printf(" cansetmtu") : printf(""); info().iFeatures & KIfHasHardwareAddr ? printf(" hardwareaddr") : printf(""); info().iFeatures & KIfCanSetHardwareAddr ? printf(" cansethardwareaddr") : printf(""); printf("\n"); TName address; info().iAddress.Output(address); printf("Addr: %s\n", qt_TNameToQString(address).toLatin1().data()); if(info().iAddress.IsLinkLocal()) { printf(" -link local\n"); } else if(info().iAddress.IsSiteLocal()) { printf(" -site local\n"); } else { printf(" -global\n"); } info().iNetMask.Output(address); printf("Netmask %s\n", qt_TNameToQString(address).toLatin1().data()); info().iBrdAddr.Output(address); printf("Broadcast address %s\n", qt_TNameToQString(address).toLatin1().data()); info().iDefGate.Output(address); printf("Gatew: %s\n", qt_TNameToQString(address).toLatin1().data()); info().iNameSer1.Output(address); printf("DNS 1: %s\n", qt_TNameToQString(address).toLatin1().data()); info().iNameSer2.Output(address); printf("DNS 2: %s\n", qt_TNameToQString(address).toLatin1().data()); if (info().iHwAddr.Family() != KAFUnspec) { printf("Hardware address "); TUint j; for(j = sizeof(SSockAddr) ; j < sizeof(SSockAddr) + 6 ; ++j) { if(j < (TUint)info().iHwAddr.Length()) { printf("%02X", info().iHwAddr[j]); } else { printf("??"); } if(j < sizeof(SSockAddr) + 5) printf("-"); else printf("\n"); } } } if(res == KErrNone) { info = next; printf("\n"); } else { printf("\n"); } } sock.Pop(); ss.Pop(); return output; } static QString qt_RouteInfoL() { QString output; TAutoClose<RSocketServ> ss; User::LeaveIfError(ss.iObj.Connect()); ss.PushL(); TAutoClose<RSocket> sock; User::LeaveIfError(sock.iObj.Open(ss.iObj, _L("udp"))); sock.PushL(); TSoInetRouteInfo routeInfo; TPckg<TSoInetRouteInfo> routeInfoPkg(routeInfo); TName destAddr; TName netMask; TName gateway; TName ifAddr; // Begins enumeration of routes by setting this option User::LeaveIfError(sock.iObj.SetOpt(KSoInetEnumRoutes, KSolInetRtCtrl)); // The TSoInetRouteInfo contains information for a new route each time GetOpt returns KErrNone for(TInt i = 0; sock.iObj.GetOpt(KSoInetNextRoute, KSolInetRtCtrl, routeInfoPkg) == KErrNone ; i++) { // Extract the destination and netmask routeInfo.iDstAddr.Output(destAddr); routeInfo.iNetMask.Output(netMask); routeInfo.iGateway.Output(gateway); routeInfo.iIfAddr.Output(ifAddr); /* if(destAddr.Length() <= 2) continue; if(netMask.Find(_L("255.255.255.255")) != KErrNotFound || netMask.Find(_L("0.0.0.0")) != KErrNotFound || netMask.Find(_L("ffff:ffff:ffff:ffff")) != KErrNotFound) continue; */ printf("Route Info #[%i]\n", i); printf("DstAddr %s\n", qt_TNameToQString(destAddr).toLatin1().data()); printf("NetMask %s\n", qt_TNameToQString(netMask).toLatin1().data()); printf("Gateway %s\n", qt_TNameToQString(gateway).toLatin1().data()); printf("IfAddr %s\n", qt_TNameToQString(ifAddr).toLatin1().data()); printf("\n"); } sock.Pop(); ss.Pop(); return output; } QString qt_TDesC2QStringL(const TDesC& aDescriptor) { #ifdef QT_NO_UNICODE return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length()); #else return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length()); #endif } static bool qt_SetDefaultIapName(const QString &iapName, int &error) { struct ifreq ifReq; // clear structure memset(&ifReq, 0, sizeof(struct ifreq)); // set IAP name value // make sure it is in UTF8 strcpy(ifReq.ifr_name, iapName.toUtf8().data()); if(setdefaultif(&ifReq) == 0) { // OK error = 0; return true; } else { error = errno; return false; } } static bool qt_SetDefaultSnapId(const int snapId, int &error) { struct ifreq ifReq; // clear structure memset(&ifReq, 0, sizeof(struct ifreq)); // set SNAP ID value ifReq.ifr_ifru.snap_id = snapId; if(setdefaultif(&ifReq) == 0) { // OK error = 0; return true; } else { error = errno; return false; } } static void qt_SaveIapName(QSettings& settings, QStringList& iapNames, QString& iapNameValue) { if(iapNames.contains(iapNameValue) && iapNames.first() == iapNameValue) { // no need to update } else { if(iapNameValue != QString("Easy WLAN")) { // new selection alway on top iapNames.removeAll(iapNameValue); iapNames.prepend(iapNameValue); writeIapNamesSettings(settings, iapNames); } else { // Unbeliveable ... if IAP dodn't exist before // no matter what you choose from IAP selection list // you will get "Easy WLAN" as IAP name value // somehow commsdb is not in sync } } } static QString qt_OfferIapDialog() { TBuf8<256> iapName; RSocketServ socketServ; CleanupClosePushL(socketServ); RConnection connection; CleanupClosePushL(connection); socketServ.Connect(); connection.Open(socketServ); connection.Start(); connection.GetDesSetting(TPtrC(KIapNameSetting), iapName); //connection.Stop(); iapName.ZeroTerminate(); QString strIapName((char*)iapName.Ptr()); int error = 0; if(!qt_SetDefaultIapName(strIapName, error)) { //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error); strIapName = QString(""); } CleanupStack::PopAndDestroy(&connection); CleanupStack::PopAndDestroy(&socketServ); return strIapName; } static QString qt_CheckForActiveConnection() { TUint count; RSocketServ serv; CleanupClosePushL(serv); RConnection conn; CleanupClosePushL(conn); serv.Connect(); conn.Open(serv); TConnectionInfoBuf connInfo; TBuf8<256> iapName; TBuf8<256> iapServiceType; QString strIapName; if (conn.EnumerateConnections(count) == KErrNone) { if(count > 0) { for (TUint i = 1; i <= count; i++) { if (conn.GetConnectionInfo(i, connInfo) == KErrNone) { RConnection tempConn; CleanupClosePushL(tempConn); tempConn.Open(serv); if (tempConn.Attach(connInfo, RConnection::EAttachTypeNormal) == KErrNone) { tempConn.GetDesSetting(TPtrC(KIapNameSetting), iapName); tempConn.GetDesSetting(TPtrC(KIapServiceType), iapServiceType); //tempConn.Stop(); iapName.ZeroTerminate(); iapServiceType.ZeroTerminate(); // if(iapServiceType.Find(_L8("LANService")) != KErrNotFound) { // activeLanConnectionFound = ETrue; // break; // } strIapName = QString((char*)iapName.Ptr()); int error = 0; if(!qt_SetDefaultIapName(strIapName, error)) { //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error); strIapName = QString(""); } CleanupStack::PopAndDestroy(&tempConn); break; } } } } } //conn.Stop(); CleanupStack::PopAndDestroy(&conn); CleanupStack::PopAndDestroy(&serv); return strIapName; } static QString qt_CheckSettingsForConnection(QStringList& iapNames) { QString strIapName; for(int index = 0; index < iapNames.size(); ++index) { strIapName = iapNames.at(index); int error = 0; if(!qt_SetDefaultIapName(strIapName, error)) { //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error); strIapName = QString(""); } else { return strIapName; } } return strIapName; } static void qt_SetDefaultIapL() { // settings @ /c/data/.config/Trolltech.com QSettings settings(QSettings::UserScope, qtOrganizationTag); // populate iap name list QStringList iapNames; readIapNamesSettings(settings, iapNames); QString iapNameValue; iapNameValue = qt_CheckForActiveConnection(); if(!iapNameValue.isEmpty()) { qt_SaveIapName(settings, iapNames, iapNameValue); return; } // iapNameValue = qt_CheckSettingsForConnection(iapNames); // // if(!iapNameValue.isEmpty()) { // qt_SaveIapName(settings, iapNames, iapNameValue); // return; // } /* * no active LAN connections yet * no IAP in settings * offer IAP dialog to user */ iapNameValue = qt_OfferIapDialog(); qt_SaveIapName(settings, iapNames, iapNameValue); return; } static int qt_SetDefaultIap() { TRAPD(err1, qt_SetDefaultIapL()); // TRAPD(err2, qt_InterfaceInfoL()); // TRAPD(err3, qt_RouteInfoL()); return err1; } #endif // QSYM_IAP_UTIL_H ������merkaartor-0.18.1/share/����������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015067�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/BookmarksList.xml�����������������������������������������������������������0000664�0000000�0000000�00000001241�11770671653�0020373�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <MerkaartorList > <Bookmarks version="1.0" creator="SVN" > <Bookmark name="Europe" > <Coordinates> <topright lon="19.41069998" lat="57.01699999" /> <bottomleft lon="-7.07099992" lat="37.37469998" /> </Coordinates> </Bookmark> <Bookmark name="London" > <Coordinates> <topright lon="-0.07999999" lat="51.50999992" /> <bottomleft lon="-0.19999992" lat="51.46999997" /> </Coordinates> </Bookmark> <Bookmark name="World" > <Coordinates> <topright lon="-180.00000000" lat="84.67349998" /> <bottomleft lon="-180.00000000" lat="-84.60779994" /> </Coordinates> </Bookmark> </Bookmarks> </MerkaartorList> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/Projections.xml�������������������������������������������������������������0000664�0000000�0000000�00000001604�11770671653�0020111�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <MerkaartorList> <Projections creator="Merkaartor 0.14" > <Projection name="Mercator (EPSG:3785)" >+proj=merc +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +ellps=WGS84 +datum=WGS84 +no_defs</Projection> <Projection name="Mercator (epsg:3785)" deleted="true" >+proj=merc +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +ellps=WGS84 +datum=WGS84 +no_defs</Projection> <Projection name="EPSG:4326" deleted="true" >+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +to_meter=0.017453292519943295769236907684886</Projection> <Projection name="Latitude/Longitude (EPSG:4326)" >+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +to_meter=0.017453292519943295769236907684886</Projection> <Projection name="OSGB36 (EPSG:27700)">+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +no_defs</Projection> </Projections> </MerkaartorList> ����������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/TmsServersList.xml����������������������������������������������������������0000664�0000000�0000000�00000004114�11770671653�0020562�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <MerkaartorList> <TmsServers version="1.1" creator="SVN" > <TmsServer minzoom="0" maxzoom="14" path="/tiles/cycle/%1/%2/%3.png" address="andy.sandbox.cloudmade.com" name="Cycle Map" tilesize="256" /> <TmsServer minzoom="0" maxzoom="14" path="/tiles/cycle/%1/%2/%3.png" address="thunderflames.org" name="Gravitystorm Cycle" tilesize="256" /> <TmsServer minzoom="12" maxzoom="16" path="/Tiles/maplint/%1/%2/%3.png" address="tah.openstreetmap.org" name="Maplint" tilesize="256" /> <TmsServer minzoom="6" maxzoom="15" path="/%1/%2/%3.png" address="npe.openstreetmap.org" name="New Popular Edition (NPE)" tilesize="256" /> <TmsServer minzoom="14" maxzoom="14" path="/npe/%1/%2/%3.jpg" address="richard.dev.openstreetmap.org" name="New Popular Edition (NPE) at zoom 14" tilesize="256" /> <TmsServer minzoom="12" maxzoom="16" path="/Tiles/maplint/%1/%2/%3.png" address="tah.openstreetmap.org" name="OSM Maplint" tilesize="256" /> <TmsServer minzoom="0" maxzoom="17" path="/%1/%2/%3.png" address="tile.openstreetmap.org" name="OSM Mapnik" tilesize="256" /> <TmsServer minzoom="0" maxzoom="18" path="/Tiles/tile/%1/%2/%3.png" address="tah.openstreetmap.org" name="OSM T@H" tilesize="256" /> <TmsServer minzoom="0" maxzoom="18" path="/tiles/1.0.0/openaerialmap-900913/%1/%2/%3.png" address="tile.openaerialmap.org" name="OpenAerialMap" tilesize="256" /> <TmsServer minzoom="0" maxzoom="23" path="/maps/nml=Vert&x=%2&y=%3&z=%1" address="www.nearmap.com" name="NearMap" tilesize="256"/> <TmsServer minzoom="0" maxzoom="19" sourcetag="Cnes/Spot Image" tmsBaseUrl="http://spotmaps.youmapps.org/spotmaps4osm/" path="/spotmaps4osm/1.0.0/spotmaps4osm/%1/%2/%3.jpeg" projection="EPSG:4326" address="spotmaps.youmapps.org" licenseurl="http://www.youmapps.org/licenses/EULA-OSM-J-fr.html" name="SPOTMaps (France)" tilesize="256" tmsorigin="true"/> <TmsServer minzoom="0" maxzoom="19" sourcetag="Fugro (2005)" path="/fugro2005/%1/%2/%3.jpg" projection="EPSG:900913" address="fugro.openstreetmap.dk" name="Denmark - Fugro Aerial Imagery" tilesize="256"/> </TmsServers> </MerkaartorList> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/WmsServersList.xml����������������������������������������������������������0000664�0000000�0000000�00000005002�11770671653�0020562�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <MerkaartorList> <WmsServers version="1.0" creator="SVN" > <WmsServer styles="," layers="Countries,Borders,Highways,Roads,Cities" projections="EPSG:4326" format="image/png" path="/wms/wms.asp?wms=WorldMap&" address="www2.demis.nl" name="Demis" /> <WmsServer styles="," layers="DOP20" projections="EPSG:4326" format="image/png" path="/wms/?SERVICE=WMS&" address="oberpfalz.geofabrik.de" name="Oberpfalz Germany" /> <WmsServer styles="," layers="DOP20" projections="EPSG:4326" format="image/png" path="/wms?" address="oberpfalz.geofabrik.de" name="Oberpfalz_DOP20" /> <WmsServer styles="," layers="world" projections="EPSG:4326" format="image/jpeg" path="/wms/?" address="openaerialmap.org" name="OpenAerialMap" deleted="true"/> <WmsServer styles="," layers="world" projections="EPSG:4326" format="image/jpeg" path="/wms/?" address="opentopomap.org" name="OpenTopoMap" deleted="true" /> <WmsServer styles="," layers="doq" projections="EPSG:4326" format="image/jpeg" path="/ogcmap.ashx?" address="terraservice.net" name="Terraservice_DOQ" /> <WmsServer styles="," layers="drg" projections="EPSG:4326" format="image/jpeg" path="/ogcmap.ashx?" address="terraservice.net" name="Terraservice_DRG" /> <WmsServer styles="," layers="urbanarea" projections="EPSG:4326" format="image/jpeg" path="/ogcmap.ashx?" address="terraservice.net" name="Terraservice_Urban" /> <WmsServer styles="," layers="Wohnstrasse,Wege,Zufahrtswege,Landstrasse,Bundesstrasse,Kraftfahrstrasse,Autobahn" projections="EPSG:4326" format="image/png" path="/cgi-bin/mapserv?map=/data/umn/osm/osm_basic.map&SERVICE=WMS&" address="mapbender.wheregroup.com" name="WhereGroup OSM" /> <WmsServer styles="" layers="PICC/Voirie,PICC/Voirie mob (l),PICC/Voirie ame,PICC/Voirie,PICC/Voirie mob (p)" projections="EPSG:31370" format="image/png" path="/wmspicc/wms110.do?" address="cartopro2.wallonie.be" name="Wallonie PICC" /> <WmsServer styles="" layers="ppnc1,ppnc2,ppnc3,ppnc4,ppnc5,ppnc6,ppnc7" projections="EPSG:31370" format="image/png" path="/WMS/com.esri.wms.Esrimap/PPNC?version1.1.1&" address="cartopro1.wallonie.be" name="Wallonie PPNC" /> <WmsServer styles="" layers="osm" projections="EPSG:4326" format="image/png" path="/cgi-bin/c2corg4osm?" address="www.camptocamp.org" name="camptocamp.org" /> <WmsServer styles="" layers="GlobeXplorer Image" projections="EPSG:4326" format="image/jpeg" path="/gexservlets/wms?" address="wms.globexplorer.com" name="GlobeXplorer DigitalGlobe" deleted="true" /> </WmsServers> </MerkaartorList> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/�����������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016041�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/GL27�������������������������������������������������������������������0000664�0000000�0000000�00000001266�11770671653�0016444�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SCCSID @(#)GL27 1.1 93/08/25 GIE REL # Great Lakes Grids <erie-etal> # Lake Erie, Ontario and St. Lawrence River. proj=omerc ellps=clrk66 k_0=0.9999 lonc=78d00'W lat_0=44d00'N alpha=55d40' x_0=-3950000 y_0=-3430000 no_defs <> <huron> # Lake Huron proj=omerc ellps=clrk66 k_0=0.9999 lonc=82d00'W lat_0=43d00'N alpha=350d37' x_0=1200000 y_0=-3500000 no_defs <> <michigan> # Lake Michigan proj=omerc ellps=clrk66 k_0=0.9999 lonc=87d00'W lat_0=44d00'N alpha=15d00' x_0=-1000000 y_0=-4300000 no_defs <> <superior> # Lake Superior, Lake of the Woods proj=omerc ellps=clrk66 k_0=0.9999 lonc=88d50'0.256"W lat_0=47d12'21.554"N alpha=285d41'42.593" x_0=9000000 y_0=-1600000 no_defs <> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/epsg�������������������������������������������������������������������0000664�0000000�0000000�00001767375�11770671653�0016754�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Unknown datum based upon the Airy 1830 ellipsoid <4001> +proj=longlat +ellps=airy +no_defs <> # Unknown datum based upon the Airy Modified 1849 ellipsoid <4002> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs <> # Unknown datum based upon the Australian National Spheroid <4003> +proj=longlat +ellps=aust_SA +no_defs <> # Unknown datum based upon the Bessel 1841 ellipsoid <4004> +proj=longlat +ellps=bessel +no_defs <> # Unknown datum based upon the Bessel Modified ellipsoid <4005> +proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs <> # Unknown datum based upon the Bessel Namibia ellipsoid <4006> +proj=longlat +ellps=bess_nam +no_defs <> # Unknown datum based upon the Clarke 1858 ellipsoid <4007> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> # Unknown datum based upon the Clarke 1866 ellipsoid <4008> +proj=longlat +ellps=clrk66 +no_defs <> # Unknown datum based upon the Clarke 1866 Michigan ellipsoid <4009> +proj=longlat +a=6378450.047548897 +b=6356826.621488445 +no_defs <> # Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid <4010> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs <> # Unknown datum based upon the Clarke 1880 (IGN) ellipsoid <4011> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Unknown datum based upon the Clarke 1880 (RGS) ellipsoid <4012> +proj=longlat +ellps=clrk80 +no_defs <> # Unknown datum based upon the Clarke 1880 (Arc) ellipsoid <4013> +proj=longlat +a=6378249.145 +b=6356514.966398754 +no_defs <> # Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid <4014> +proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs <> # Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid <4015> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> # Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid <4016> +proj=longlat +ellps=evrstSS +no_defs <> # Unknown datum based upon the Everest 1830 Modified ellipsoid <4018> +proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs <> # Unknown datum based upon the GRS 1980 ellipsoid <4019> +proj=longlat +ellps=GRS80 +no_defs <> # Unknown datum based upon the Helmert 1906 ellipsoid <4020> +proj=longlat +ellps=helmert +no_defs <> # Unknown datum based upon the Indonesian National Spheroid <4021> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs <> # Unknown datum based upon the International 1924 ellipsoid <4022> +proj=longlat +ellps=intl +no_defs <> # Unknown datum based upon the Krassowsky 1940 ellipsoid <4024> +proj=longlat +ellps=krass +no_defs <> # Unknown datum based upon the NWL 9D ellipsoid <4025> +proj=longlat +ellps=WGS66 +no_defs <> # Unknown datum based upon the Plessis 1817 ellipsoid <4027> +proj=longlat +a=6376523 +b=6355862.933255573 +no_defs <> # Unknown datum based upon the Struve 1860 ellipsoid <4028> +proj=longlat +a=6378298.300000001 +b=6356657.142669562 +no_defs <> # Unknown datum based upon the War Office ellipsoid <4029> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <> # Unknown datum based upon the WGS 84 ellipsoid <4030> +proj=longlat +ellps=WGS84 +no_defs <> # Unknown datum based upon the GEM 10C ellipsoid <4031> +proj=longlat +ellps=WGS84 +no_defs <> # Unknown datum based upon the OSU86F ellipsoid <4032> +proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs <> # Unknown datum based upon the OSU91A ellipsoid <4033> +proj=longlat +a=6378136.300000001 +b=6356751.616592147 +no_defs <> # Unknown datum based upon the Clarke 1880 ellipsoid <4034> +proj=longlat +ellps=clrk80 +no_defs <> # Unknown datum based upon the Authalic Sphere <4035> +proj=longlat +a=6371000 +b=6371000 +no_defs <> # Unknown datum based upon the GRS 1967 ellipsoid <4036> +proj=longlat +ellps=GRS67 +no_defs <> # Unknown datum based upon the Average Terrestrial System 1977 ellipsoid <4041> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <> # Unknown datum based upon the Everest (1830 Definition) ellipsoid <4042> +proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs <> # Unknown datum based upon the WGS 72 ellipsoid <4043> +proj=longlat +ellps=WGS72 +no_defs <> # Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid <4044> +proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs <> # Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid <4045> +proj=longlat +a=6377299.151000001 +b=6356098.145120133 +no_defs <> # Unspecified datum based upon the GRS 1980 Authalic Sphere <4047> +proj=longlat +a=6371007 +b=6371007 +no_defs <> # Unspecified datum based upon the Clarke 1866 Authalic Sphere <4052> +proj=longlat +a=6370997 +b=6370997 +no_defs <> # Unspecified datum based upon the International 1924 Authalic Sphere <4053> +proj=longlat +a=6371228 +b=6371228 +no_defs <> # Unspecified datum based upon the Hughes 1980 ellipsoid <4054> +proj=longlat +a=6378273 +b=6356889.449 +no_defs <> # Greek <4120> +proj=longlat +ellps=bessel +no_defs <> # GGRS87 <4121> +proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs <> # ATS77 <4122> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <> # KKJ <4123> +proj=longlat +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +no_defs <> # RT90 <4124> +proj=longlat +ellps=bessel +no_defs <> # Samboja <4125> +proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs <> # LKS94 (ETRS89) <4126> +proj=longlat +ellps=GRS80 +no_defs <> # Tete <4127> +proj=longlat +ellps=clrk66 +no_defs <> # Madzansua <4128> +proj=longlat +ellps=clrk66 +no_defs <> # Observatario <4129> +proj=longlat +ellps=clrk66 +no_defs <> # Moznet <4130> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs <> # Indian 1960 <4131> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> # FD58 <4132> +proj=longlat +ellps=clrk80 +no_defs <> # EST92 <4133> +proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs <> # PDO Survey Datum 1993 <4134> +proj=longlat +ellps=clrk80 +no_defs <> # Old Hawaiian <4135> +proj=longlat +ellps=clrk66 +no_defs <> # St. Lawrence Island <4136> +proj=longlat +ellps=clrk66 +no_defs <> # St. Paul Island <4137> +proj=longlat +ellps=clrk66 +no_defs <> # St. George Island <4138> +proj=longlat +ellps=clrk66 +no_defs <> # Puerto Rico <4139> +proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs <> # NAD83(CSRS98) <4140> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Israel <4141> +proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs <> # Locodjo 1965 <4142> +proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs <> # Abidjan 1987 <4143> +proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs <> # Kalianpur 1937 <4144> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> # Kalianpur 1962 <4145> +proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs <> # Kalianpur 1975 <4146> +proj=longlat +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +no_defs <> # Hanoi 1972 <4147> +proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs <> # Hartebeesthoek94 <4148> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # CH1903 <4149> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs <> # CH1903+ <4150> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs <> # CHTRF95 <4151> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # NAD83(HARN) <4152> +proj=longlat +ellps=GRS80 +no_defs <> # Rassadiran <4153> +proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs <> # ED50(ED77) <4154> +proj=longlat +ellps=intl +no_defs <> # Dabola 1981 <4155> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs <> # S-JTSK <4156> +proj=longlat +ellps=bessel +no_defs <> # Mount Dillon <4157> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> # Naparima 1955 <4158> +proj=longlat +ellps=intl +no_defs <> # ELD79 <4159> +proj=longlat +ellps=intl +no_defs <> # Chos Malal 1914 <4160> +proj=longlat +ellps=intl +no_defs <> # Pampa del Castillo <4161> +proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs <> # Korean 1985 <4162> +proj=longlat +ellps=bessel +no_defs <> # Yemen NGN96 <4163> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # South Yemen <4164> +proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs <> # Bissau <4165> +proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs <> # Korean 1995 <4166> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # NZGD2000 <4167> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Accra <4168> +proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs <> # American Samoa 1962 <4169> +proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs <> # SIRGAS <4170> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # RGF93 <4171> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # POSGAR <4172> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # IRENET95 <4173> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Sierra Leone 1924 <4174> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <> # Sierra Leone 1968 <4175> +proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs <> # Australian Antarctic <4176> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Pulkovo 1942(83) <4178> +proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +no_defs <> # Pulkovo 1942(58) <4179> +proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs <> # EST97 <4180> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Luxembourg 1930 <4181> +proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +no_defs <> # Azores Occidental 1939 <4182> +proj=longlat +ellps=intl +no_defs <> # Azores Central 1948 <4183> +proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs <> # Azores Oriental 1940 <4184> +proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs <> # Madeira 1936 <4185> +proj=longlat +ellps=intl +no_defs <> # OSNI 1952 <4188> +proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs <> # REGVEN <4189> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # POSGAR 98 <4190> +proj=longlat +ellps=GRS80 +no_defs <> # Albanian 1987 <4191> +proj=longlat +ellps=krass +no_defs <> # Douala 1948 <4192> +proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs <> # Manoca 1962 <4193> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs <> # Qornoq 1927 <4194> +proj=longlat +ellps=intl +no_defs <> # Scoresbysund 1952 <4195> +proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs <> # Ammassalik 1958 <4196> +proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs <> # Garoua <4197> +proj=longlat +ellps=clrk80 +no_defs <> # Kousseri <4198> +proj=longlat +ellps=clrk80 +no_defs <> # Egypt 1930 <4199> +proj=longlat +ellps=intl +no_defs <> # Pulkovo 1995 <4200> +proj=longlat +ellps=krass +no_defs <> # Adindan <4201> +proj=longlat +ellps=clrk80 +no_defs <> # AGD66 <4202> +proj=longlat +ellps=aust_SA +no_defs <> # AGD84 <4203> +proj=longlat +ellps=aust_SA +no_defs <> # Ain el Abd <4204> +proj=longlat +ellps=intl +no_defs <> # Afgooye <4205> +proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs <> # Agadez <4206> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Lisbon <4207> +proj=longlat +ellps=intl +no_defs <> # Aratu <4208> +proj=longlat +ellps=intl +no_defs <> # Arc 1950 <4209> +proj=longlat +a=6378249.145 +b=6356514.966398754 +no_defs <> # Arc 1960 <4210> +proj=longlat +ellps=clrk80 +no_defs <> # Batavia <4211> +proj=longlat +ellps=bessel +no_defs <> # Barbados 1938 <4212> +proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs <> # Beduaram <4213> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs <> # Beijing 1954 <4214> +proj=longlat +ellps=krass +no_defs <> # Belge 1950 <4215> +proj=longlat +ellps=intl +no_defs <> # Bermuda 1957 <4216> +proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs <> # Bogota 1975 <4218> +proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs <> # Bukit Rimpah <4219> +proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs <> # Camacupa <4220> +proj=longlat +ellps=clrk80 +no_defs <> # Campo Inchauspe <4221> +proj=longlat +ellps=intl +no_defs <> # Cape <4222> +proj=longlat +a=6378249.145 +b=6356514.966398754 +no_defs <> # Carthage <4223> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Chua <4224> +proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs <> # Corrego Alegre <4225> +proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs <> # Cote d'Ivoire <4226> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Deir ez Zor <4227> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Douala <4228> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Egypt 1907 <4229> +proj=longlat +ellps=helmert +no_defs <> # ED50 <4230> +proj=longlat +ellps=intl +no_defs <> # ED87 <4231> +proj=longlat +ellps=intl +no_defs <> # Fahud <4232> +proj=longlat +ellps=clrk80 +no_defs <> # Gandajika 1970 <4233> +proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs <> # Garoua <4234> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Guyane Francaise <4235> +proj=longlat +ellps=intl +no_defs <> # Hu Tzu Shan <4236> +proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs <> # HD72 <4237> +proj=longlat +ellps=GRS67 +no_defs <> # ID74 <4238> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs <> # Indian 1954 <4239> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs <> # Indian 1975 <4240> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> # Jamaica 1875 <4241> +proj=longlat +ellps=clrk80 +no_defs <> # JAD69 <4242> +proj=longlat +ellps=clrk66 +no_defs <> # Kalianpur 1880 <4243> +proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs <> # Kandawala <4244> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs <> # Kertau 1968 <4245> +proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs <> # KOC <4246> +proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs <> # La Canoa <4247> +proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs <> # PSAD56 <4248> +proj=longlat +ellps=intl +no_defs <> # Lake <4249> +proj=longlat +ellps=intl +no_defs <> # Leigon <4250> +proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs <> # Liberia 1964 <4251> +proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs <> # Lome <4252> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Luzon 1911 <4253> +proj=longlat +ellps=clrk66 +no_defs <> # Hito XVIII 1963 <4254> +proj=longlat +ellps=intl +no_defs <> # Herat North <4255> +proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs <> # Mahe 1971 <4256> +proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs <> # Makassar <4257> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs <> # ETRS89 <4258> +proj=longlat +ellps=GRS80 +no_defs <> # Malongo 1987 <4259> +proj=longlat +ellps=intl +no_defs <> # Manoca <4260> +proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs <> # Merchich <4261> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs <> # Massawa <4262> +proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs <> # Minna <4263> +proj=longlat +ellps=clrk80 +no_defs <> # Mhast <4264> +proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs <> # Monte Mario <4265> +proj=longlat +ellps=intl +no_defs <> # M'poraloko <4266> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # NAD27 <4267> +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs <> # NAD27 Michigan <4268> +proj=longlat +a=6378450.047548897 +b=6356826.621488445 +no_defs <> # NAD83 <4269> +proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs <> # Nahrwan 1967 <4270> +proj=longlat +ellps=clrk80 +no_defs <> # Naparima 1972 <4271> +proj=longlat +ellps=intl +no_defs <> # NZGD49 <4272> +proj=longlat +ellps=intl +datum=nzgd49 +no_defs <> # NGO 1948 <4273> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs <> # Datum 73 <4274> +proj=longlat +ellps=intl +no_defs <> # NTF <4275> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs <> # NSWC 9Z-2 <4276> +proj=longlat +ellps=WGS66 +no_defs <> # OSGB 1936 <4277> +proj=longlat +datum=OSGB36 +no_defs <> # OSGB70 <4278> +proj=longlat +ellps=airy +no_defs <> # OS(SN)80 <4279> +proj=longlat +ellps=airy +no_defs <> # Padang <4280> +proj=longlat +ellps=bessel +no_defs <> # Palestine 1923 <4281> +proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs <> # Pointe Noire <4282> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # GDA94 <4283> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Pulkovo 1942 <4284> +proj=longlat +ellps=krass +no_defs <> # Qatar 1974 <4285> +proj=longlat +ellps=intl +no_defs <> # Qatar 1948 <4286> +proj=longlat +ellps=helmert +no_defs <> # Qornoq <4287> +proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs <> # Loma Quintana <4288> +proj=longlat +ellps=intl +no_defs <> # Amersfoort <4289> +proj=longlat +ellps=bessel +no_defs <> # SAD69 <4291> +proj=longlat +ellps=GRS67 +no_defs <> # Sapper Hill 1943 <4292> +proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs <> # Schwarzeck <4293> +proj=longlat +ellps=bess_nam +no_defs <> # Segora <4294> +proj=longlat +ellps=bessel +no_defs <> # Serindung <4295> +proj=longlat +ellps=bessel +no_defs <> # Sudan <4296> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Tananarive <4297> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs <> # Timbalai 1948 <4298> +proj=longlat +ellps=evrstSS +no_defs <> # TM65 <4299> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs <> # TM75 <4300> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs <> # Tokyo <4301> +proj=longlat +ellps=bessel +no_defs <> # Trinidad 1903 <4302> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> # TC(1948) <4303> +proj=longlat +ellps=helmert +no_defs <> # Voirol 1875 <4304> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs <> # Bern 1938 <4306> +proj=longlat +ellps=bessel +no_defs <> # Nord Sahara 1959 <4307> +proj=longlat +ellps=clrk80 +no_defs <> # RT38 <4308> +proj=longlat +ellps=bessel +no_defs <> # Yacare <4309> +proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs <> # Yoff <4310> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # Zanderij <4311> +proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs <> # MGI <4312> +proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs <> # Belge 1972 <4313> +proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +no_defs <> # DHDN <4314> +proj=longlat +ellps=bessel +datum=potsdam +no_defs <> # Conakry 1905 <4315> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs <> # Dealul Piscului 1933 <4316> +proj=longlat +ellps=intl +no_defs <> # Dealul Piscului 1970 <4317> +proj=longlat +ellps=krass +no_defs <> # NGN <4318> +proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs <> # KUDAMS <4319> +proj=longlat +ellps=GRS80 +no_defs <> # WGS 72 <4322> +proj=longlat +ellps=WGS72 +no_defs <> # WGS 72BE <4324> +proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs <> # WGS 84 <4326> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs <> # Anguilla 1957 <4600> +proj=longlat +ellps=clrk80 +no_defs <> # Antigua 1943 <4601> +proj=longlat +ellps=clrk80 +no_defs <> # Dominica 1945 <4602> +proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs <> # Grenada 1953 <4603> +proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs <> # Montserrat 1958 <4604> +proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs <> # St. Kitts 1955 <4605> +proj=longlat +ellps=clrk80 +no_defs <> # St. Lucia 1955 <4606> +proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs <> # St. Vincent 1945 <4607> +proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs <> # NAD27(76) <4608> +proj=longlat +ellps=clrk66 +no_defs <> # NAD27(CGQ77) <4609> +proj=longlat +ellps=clrk66 +no_defs <> # Xian 1980 <4610> +proj=longlat +a=6378140 +b=6356755.288157528 +no_defs <> # Hong Kong 1980 <4611> +proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs <> # JGD2000 <4612> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Segara <4613> +proj=longlat +ellps=bessel +no_defs <> # QND95 <4614> +proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs <> # Porto Santo <4615> +proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs <> # Selvagem Grande <4616> +proj=longlat +ellps=intl +no_defs <> # NAD83(CSRS) <4617> +proj=longlat +ellps=GRS80 +no_defs <> # SAD69 <4618> +proj=longlat +ellps=aust_SA +no_defs <> # SWEREF99 <4619> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Point 58 <4620> +proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs <> # Fort Marigot <4621> +proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs <> # Guadeloupe 1948 <4622> +proj=longlat +ellps=intl +no_defs <> # CSG67 <4623> +proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs <> # RGFG95 <4624> +proj=longlat +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +no_defs <> # Martinique 1938 <4625> +proj=longlat +ellps=intl +no_defs <> # Reunion 1947 <4626> +proj=longlat +ellps=intl +no_defs <> # RGR92 <4627> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Tahiti 52 <4628> +proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs <> # Tahaa 54 <4629> +proj=longlat +ellps=intl +no_defs <> # IGN72 Nuku Hiva <4630> +proj=longlat +ellps=intl +no_defs <> # K0 1949 <4631> +proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs <> # Combani 1950 <4632> +proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs <> # IGN56 Lifou <4633> +proj=longlat +ellps=intl +no_defs <> # IGN72 Grand Terre <4634> +proj=longlat +ellps=intl +no_defs <> # ST87 Ouvea <4635> +proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs <> # Petrels 1972 <4636> +proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs <> # Perroud 1950 <4637> +proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs <> # Saint Pierre et Miquelon 1950 <4638> +proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs <> # MOP78 <4639> +proj=longlat +ellps=intl +no_defs <> # RRAF 1991 <4640> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # IGN53 Mare <4641> +proj=longlat +ellps=intl +no_defs <> # ST84 Ile des Pins <4642> +proj=longlat +ellps=intl +no_defs <> # ST71 Belep <4643> +proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +no_defs <> # NEA74 Noumea <4644> +proj=longlat +ellps=intl +no_defs <> # RGNC 1991 <4645> +proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs <> # Grand Comoros <4646> +proj=longlat +ellps=intl +no_defs <> # Reykjavik 1900 <4657> +proj=longlat +a=6377019.27 +b=6355762.539100001 +towgs84=-28,199,5,0,0,0,0 +no_defs <> # Hjorsey 1955 <4658> +proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs <> # ISN93 <4659> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Helle 1954 <4660> +proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +no_defs <> # LKS92 <4661> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # IGN72 Grande Terre <4662> +proj=longlat +ellps=intl +no_defs <> # Porto Santo 1995 <4663> +proj=longlat +ellps=intl +no_defs <> # Azores Oriental 1995 <4664> +proj=longlat +ellps=intl +no_defs <> # Azores Central 1995 <4665> +proj=longlat +ellps=intl +no_defs <> # Lisbon 1890 <4666> +proj=longlat +ellps=bessel +no_defs <> # IKBD-92 <4667> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # ED79 <4668> +proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs <> # LKS94 <4669> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # IGM95 <4670> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Voirol 1879 <4671> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <> # CI1971 <4672> +proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs <> # CI1979 <4673> +proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +no_defs <> # SIRGAS 2000 <4674> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Guam 1963 <4675> +proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs <> # Vientiane 1982 <4676> +proj=longlat +ellps=krass +no_defs <> # Lao 1993 <4677> +proj=longlat +ellps=krass +no_defs <> # Lao 1997 <4678> +proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs <> # Jouik 1961 <4679> +proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs <> # Nouakchott 1965 <4680> +proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs <> # Mauritania 1999 <4681> +proj=longlat +ellps=clrk80 +no_defs <> # Gulshan 303 <4682> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <> # PRS92 <4683> +proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs <> # Gan 1970 <4684> +proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs <> # Gandajika <4685> +proj=longlat +ellps=intl +no_defs <> # MAGNA-SIRGAS <4686> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # RGPF <4687> +proj=longlat +ellps=GRS80 +no_defs <> # Fatu Iva 72 <4688> +proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs <> # IGN63 Hiva Oa <4689> +proj=longlat +ellps=intl +no_defs <> # Tahiti 79 <4690> +proj=longlat +ellps=intl +no_defs <> # Moorea 87 <4691> +proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs <> # Maupiti 83 <4692> +proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs <> # Nakhl-e Ghanem <4693> +proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs <> # POSGAR 94 <4694> +proj=longlat +ellps=GRS80 +no_defs <> # Katanga 1955 <4695> +proj=longlat +ellps=clrk66 +no_defs <> # Kasai 1953 <4696> +proj=longlat +ellps=clrk80 +no_defs <> # IGC 1962 6th Parallel South <4697> +proj=longlat +ellps=clrk80 +no_defs <> # IGN 1962 Kerguelen <4698> +proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs <> # Le Pouce 1934 <4699> +proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs <> # IGN Astro 1960 <4700> +proj=longlat +ellps=clrk80 +no_defs <> # IGCB 1955 <4701> +proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs <> # Mauritania 1999 <4702> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Mhast 1951 <4703> +proj=longlat +ellps=clrk80 +no_defs <> # Mhast (onshore) <4704> +proj=longlat +ellps=intl +no_defs <> # Mhast (offshore) <4705> +proj=longlat +ellps=intl +no_defs <> # Egypt Gulf of Suez S-650 TL <4706> +proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs <> # Tern Island 1961 <4707> +proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs <> # Cocos Islands 1965 <4708> +proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs <> # Iwo Jima 1945 <4709> +proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs <> # St. Helena 1971 <4710> +proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs <> # Marcus Island 1952 <4711> +proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs <> # Ascension Island 1958 <4712> +proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs <> # Ayabelle Lighthouse <4713> +proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0 +no_defs <> # Bellevue <4714> +proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs <> # Camp Area Astro <4715> +proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs <> # Phoenix Islands 1966 <4716> +proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs <> # Cape Canaveral <4717> +proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs <> # Solomon 1968 <4718> +proj=longlat +ellps=intl +no_defs <> # Easter Island 1967 <4719> +proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs <> # Fiji 1986 <4720> +proj=longlat +ellps=WGS72 +no_defs <> # Fiji 1956 <4721> +proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs <> # South Georgia 1968 <4722> +proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs <> # Grand Cayman 1959 <4723> +proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +no_defs <> # Diego Garcia 1969 <4724> +proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs <> # Johnston Island 1961 <4725> +proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs <> # Little Cayman 1961 <4726> +proj=longlat +ellps=clrk66 +no_defs <> # Midway 1961 <4727> +proj=longlat +ellps=intl +no_defs <> # Pico de la Nieves <4728> +proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs <> # Pitcairn 1967 <4729> +proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs <> # Santo 1965 <4730> +proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs <> # Viti Levu 1916 <4731> +proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs <> # Marshall Islands 1960 <4732> +proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs <> # Wake Island 1952 <4733> +proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs <> # Tristan 1968 <4734> +proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs <> # Kusaie 1951 <4735> +proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs <> # Deception Island <4736> +proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs <> # Korea 2000 <4737> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Hong Kong 1963 <4738> +proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs <> # Hong Kong 1963(67) <4739> +proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs <> # PZ-90 <4740> +proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0 +no_defs <> # FD54 <4741> +proj=longlat +ellps=intl +no_defs <> # GDM2000 <4742> +proj=longlat +ellps=GRS80 +no_defs <> # Karbala 1979 (Polservice) <4743> +proj=longlat +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +no_defs <> # Nahrwan 1934 <4744> +proj=longlat +ellps=clrk80 +no_defs <> # RD/83 <4745> +proj=longlat +ellps=bessel +no_defs <> # PD/83 <4746> +proj=longlat +ellps=bessel +no_defs <> # GR96 <4747> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # Vanua Levu 1915 <4748> +proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs <> # RGNC91-93 <4749> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # ST87 Ouvea <4750> +proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs <> # Kertau (RSO) <4751> +proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs <> # Viti Levu 1912 <4752> +proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs <> # fk89 <4753> +proj=longlat +ellps=intl +no_defs <> # LGD2006 <4754> +proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +no_defs <> # DGN95 <4755> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # VN-2000 <4756> +proj=longlat +ellps=WGS84 +no_defs <> # SVY21 <4757> +proj=longlat +ellps=WGS84 +no_defs <> # JAD2001 <4758> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <> # NAD83(NSRS2007) <4759> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <> # WGS 66 <4760> +proj=longlat +ellps=WGS66 +no_defs <> # Bern 1898 (Bern) <4801> +proj=longlat +ellps=bessel +pm=bern +no_defs <> # Bogota 1975 (Bogota) <4802> +proj=longlat +ellps=intl +pm=bogota +no_defs <> # Lisbon (Lisbon) <4803> +proj=longlat +ellps=intl +pm=lisbon +no_defs <> # Makassar (Jakarta) <4804> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs <> # MGI (Ferro) <4805> +proj=longlat +ellps=bessel +pm=ferro +no_defs <> # Monte Mario (Rome) <4806> +proj=longlat +ellps=intl +pm=rome +no_defs <> # NTF (Paris) <4807> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs <> # Padang (Jakarta) <4808> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> # Belge 1950 (Brussels) <4809> +proj=longlat +ellps=intl +pm=brussels +no_defs <> # Tananarive (Paris) <4810> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs <> # Voirol 1875 (Paris) <4811> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs <> # Batavia (Jakarta) <4813> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> # RT38 (Stockholm) <4814> +proj=longlat +ellps=bessel +pm=stockholm +no_defs <> # Greek (Athens) <4815> +proj=longlat +ellps=bessel +pm=athens +no_defs <> # Carthage (Paris) <4816> +proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs <> # NGO 1948 (Oslo) <4817> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs <> # S-JTSK (Ferro) <4818> +proj=longlat +ellps=bessel +pm=ferro +no_defs <> # Nord Sahara 1959 (Paris) <4819> +proj=longlat +ellps=clrk80 +pm=paris +no_defs <> # Segara (Jakarta) <4820> +proj=longlat +ellps=bessel +pm=jakarta +no_defs <> # Voirol 1879 (Paris) <4821> +proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs <> # ATF (Paris) <4901> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs <> # NDG (Paris) <4902> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs <> # Madrid 1870 (Madrid) <4903> +proj=longlat +a=6378298.300000001 +b=6356657.142669562 +pm=madrid +no_defs <> # Lisbon 1890 (Lisbon) <4904> +proj=longlat +ellps=bessel +pm=lisbon +no_defs <> # Anguilla 1957 / British West Indies Grid <2000> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> # Antigua 1943 / British West Indies Grid <2001> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> # Dominica 1945 / British West Indies Grid <2002> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs <> # Grenada 1953 / British West Indies Grid <2003> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs <> # Montserrat 1958 / British West Indies Grid <2004> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs <> # St. Kitts 1955 / British West Indies Grid <2005> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <> # St. Lucia 1955 / British West Indies Grid <2006> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs <> # St. Vincent 45 / British West Indies Grid <2007> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 2 <2008> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 3 <2009> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 4 <2010> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 5 <2011> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 6 <2012> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 7 <2013> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 8 <2014> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 9 <2015> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / SCoPQ zone 10 <2016> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 8 <2017> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 9 <2018> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 10 <2019> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 11 <2020> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 12 <2021> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 13 <2022> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 14 <2023> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 15 <2024> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 16 <2025> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / MTM zone 17 <2026> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / UTM zone 15N <2027> +proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / UTM zone 16N <2028> +proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / UTM zone 17N <2029> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> # NAD27(76) / UTM zone 18N <2030> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / UTM zone 17N <2031> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / UTM zone 18N <2032> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / UTM zone 19N <2033> +proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / UTM zone 20N <2034> +proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs <> # NAD27(CGQ77) / UTM zone 21N <2035> +proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs <> # NAD83(CSRS98) / New Brunswick Stereo (deprecated) <2036> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.9999119999999999 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 19N (deprecated) <2037> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 20N (deprecated) <2038> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Israel / Israeli TM Grid <2039> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs <> # Locodjo 1965 / UTM zone 30N <2040> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> # Abidjan 1987 / UTM zone 30N <2041> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> # Locodjo 1965 / UTM zone 29N <2042> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> # Abidjan 1987 / UTM zone 29N <2043> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> # Hanoi 1972 / Gauss-Kruger zone 18 <2044> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> # Hanoi 1972 / Gauss-Kruger zone 19 <2045> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> # Hartebeesthoek94 / Lo15 # Unable to translate coordinate system EPSG:2046 into PROJ.4 format. # # Hartebeesthoek94 / Lo17 # Unable to translate coordinate system EPSG:2047 into PROJ.4 format. # # Hartebeesthoek94 / Lo19 # Unable to translate coordinate system EPSG:2048 into PROJ.4 format. # # Hartebeesthoek94 / Lo21 # Unable to translate coordinate system EPSG:2049 into PROJ.4 format. # # Hartebeesthoek94 / Lo23 # Unable to translate coordinate system EPSG:2050 into PROJ.4 format. # # Hartebeesthoek94 / Lo25 # Unable to translate coordinate system EPSG:2051 into PROJ.4 format. # # Hartebeesthoek94 / Lo27 # Unable to translate coordinate system EPSG:2052 into PROJ.4 format. # # Hartebeesthoek94 / Lo29 # Unable to translate coordinate system EPSG:2053 into PROJ.4 format. # # Hartebeesthoek94 / Lo31 # Unable to translate coordinate system EPSG:2054 into PROJ.4 format. # # Hartebeesthoek94 / Lo33 # Unable to translate coordinate system EPSG:2055 into PROJ.4 format. # # CH1903+ / LV95 <2056> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs <> # Rassadiran / Nakhl e Taqi <2057> +proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.9998959340000001 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs <> # ED50(ED77) / UTM zone 38N <2058> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <> # ED50(ED77) / UTM zone 39N <2059> +proj=utm +zone=39 +ellps=intl +units=m +no_defs <> # ED50(ED77) / UTM zone 40N <2060> +proj=utm +zone=40 +ellps=intl +units=m +no_defs <> # ED50(ED77) / UTM zone 41N <2061> +proj=utm +zone=41 +ellps=intl +units=m +no_defs <> # Madrid 1870 (Madrid) / Spain <2062> +proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293000001 +x_0=600000 +y_0=600000 +a=6378298.300000001 +b=6356657.142669562 +pm=madrid +units=m +no_defs <> # Dabola 1981 / UTM zone 28N (deprecated) <2063> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> # Dabola 1981 / UTM zone 29N (deprecated) <2064> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> # S-JTSK (Ferro) / Krovak <2065> +proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # Mount Dillon / Tobago Grid <2066> +proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs <> # Naparima 1955 / UTM zone 20N <2067> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 5 <2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 6 <2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 7 <2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 8 <2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 9 <2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 10 <2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 11 <2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 12 <2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / Libya zone 13 <2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <> # ELD79 / UTM zone 32N <2077> +proj=utm +zone=32 +ellps=intl +units=m +no_defs <> # ELD79 / UTM zone 33N <2078> +proj=utm +zone=33 +ellps=intl +units=m +no_defs <> # ELD79 / UTM zone 34N <2079> +proj=utm +zone=34 +ellps=intl +units=m +no_defs <> # ELD79 / UTM zone 35N <2080> +proj=utm +zone=35 +ellps=intl +units=m +no_defs <> # Chos Malal 1914 / Argentina zone 2 <2081> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Pampa del Castillo / Argentina zone 2 <2082> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs <> # Hito XVIII 1963 / Argentina zone 2 <2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Hito XVIII 1963 / UTM zone 19S <2084> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs <> # NAD27 / Cuba Norte <2085> +proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / Cuba Sur <2086> +proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # ELD79 / TM 12 NE <2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Carthage / TM 11 NE <2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Yemen NGN96 / UTM zone 38N <2089> +proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Yemen NGN96 / UTM zone 39N <2090> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # South Yemen / Gauss Kruger zone 8 (deprecated) <2091> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> # South Yemen / Gauss Kruger zone 9 (deprecated) <2092> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> # Hanoi 1972 / GK 106 NE <2093> +proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <> # WGS 72BE / TM 106 NE <2094> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # Bissau / UTM zone 28N <2095> +proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs <> # Korean 1985 / Korea East Belt <2096> +proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> # Korean 1985 / Korea Central Belt <2097> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> # Korean 1985 / Korea West Belt <2098> +proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <> # Qatar 1948 / Qatar Grid <2099> +proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs <> # GGRS87 / Greek Grid <2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs <> # Lake / Maracaibo Grid M1 <2101> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs <> # Lake / Maracaibo Grid <2102> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs <> # Lake / Maracaibo Grid M3 <2103> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs <> # Lake / Maracaibo La Rosa Grid <2104> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs <> # NZGD2000 / Mount Eden Circuit 2000 <2105> +proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Bay of Plenty Circuit 2000 <2106> +proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Poverty Bay Circuit 2000 <2107> +proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Hawkes Bay Circuit 2000 <2108> +proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Taranaki Circuit 2000 <2109> +proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Tuhirangi Circuit 2000 <2110> +proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Wanganui Circuit 2000 <2111> +proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Wairarapa Circuit 2000 <2112> +proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Wellington Circuit 2000 <2113> +proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Collingwood Circuit 2000 <2114> +proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Nelson Circuit 2000 <2115> +proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Karamea Circuit 2000 <2116> +proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Buller Circuit 2000 <2117> +proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Grey Circuit 2000 <2118> +proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Amuri Circuit 2000 <2119> +proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Marlborough Circuit 2000 <2120> +proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Hokitika Circuit 2000 <2121> +proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Okarito Circuit 2000 <2122> +proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Jacksons Bay Circuit 2000 <2123> +proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Mount Pleasant Circuit 2000 <2124> +proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Gawler Circuit 2000 <2125> +proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Timaru Circuit 2000 <2126> +proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Lindis Peak Circuit 2000 <2127> +proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Mount Nicholas Circuit 2000 <2128> +proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Mount York Circuit 2000 <2129> +proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Observation Point Circuit 2000 <2130> +proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / North Taieri Circuit 2000 <2131> +proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.9999600000000001 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / Bluff Circuit 2000 <2132> +proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / UTM zone 58S <2133> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / UTM zone 59S <2134> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NZGD2000 / UTM zone 60S <2135> +proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Accra / Ghana National Grid <2136> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs <> # Accra / TM 1 NW <2137> +proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs <> # NAD27(CGQ77) / Quebec Lambert <2138> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # NAD83(CSRS98) / SCoPQ zone 2 (deprecated) <2139> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 3 (deprecated) <2140> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 4 (deprecated) <2141> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 5 (deprecated) <2142> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 6 (deprecated) <2143> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 7 (deprecated) <2144> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 8 (deprecated) <2145> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 9 (deprecated) <2146> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / MTM zone 10 (deprecated) <2147> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 21N (deprecated) <2148> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 18N (deprecated) <2149> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 17N (deprecated) <2150> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 13N (deprecated) <2151> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 12N (deprecated) <2152> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS98) / UTM zone 11N (deprecated) <2153> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # RGF93 / Lambert-93 <2154> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # American Samoa 1962 / American Samoa Lambert (deprecated) <2155> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / UTM zone 59S (deprecated) <2156> +proj=utm +zone=59 +south +ellps=GRS80 +units=m +no_defs <> # IRENET95 / Irish Transverse Mercator <2157> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # IRENET95 / UTM zone 29N <2158> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Sierra Leone 1924 / New Colony Grid <2159> +proj=tmerc +lat_0=6.666666666666668 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <> # Sierra Leone 1924 / New War Office Grid <2160> +proj=tmerc +lat_0=6.666666666666668 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <> # Sierra Leone 1968 / UTM zone 28N <2161> +proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <> # Sierra Leone 1968 / UTM zone 29N <2162> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <> # US National Atlas Equal Area <2163> +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs <> # Locodjo 1965 / TM 5 NW <2164> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <> # Abidjan 1987 / TM 5 NW <2165> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <> # Pulkovo 1942(83) / Gauss Kruger zone 3 (deprecated) <2166> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> # Pulkovo 1942(83) / Gauss Kruger zone 4 (deprecated) <2167> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> # Pulkovo 1942(83) / Gauss Kruger zone 5 (deprecated) <2168> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> # Luxembourg 1930 / Gauss <2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666668 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs <> # MGI / Slovenia Grid <2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # Pulkovo 1942(58) / Poland zone I (deprecated) <2171> +proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Poland zone II <2172> +proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Poland zone III <2173> +proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Poland zone IV <2174> +proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Poland zone V <2175> +proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # ETRS89 / Poland CS2000 zone 5 <2176> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Poland CS2000 zone 6 <2177> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Poland CS2000 zone 7 <2178> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Poland CS2000 zone 8 <2179> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Poland CS92 <2180> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993000000000001 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs <> # Azores Occidental 1939 / UTM zone 25N <2188> +proj=utm +zone=25 +ellps=intl +units=m +no_defs <> # Azores Central 1948 / UTM zone 26N <2189> +proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs <> # Azores Oriental 1940 / UTM zone 26N <2190> +proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs <> # Madeira 1936 / UTM zone 28N (deprecated) <2191> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> # ED50 / France EuroLambert <2192> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs <> # NZGD2000 / New Zealand Transverse Mercator <2193> +proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # American Samoa 1962 / American Samoa Lambert (deprecated) <2194> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / UTM zone 2S <2195> +proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Kp2000 Jutland <2196> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Kp2000 Zealand <2197> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Kp2000 Bornholm <2198> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # Albanian 1987 / Gauss Kruger zone 4 (deprecated) <2199> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> # ATS77 / New Brunswick Stereographic (ATS77) <2200> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.9999119999999999 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # REGVEN / UTM zone 18N <2201> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # REGVEN / UTM zone 19N <2202> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # REGVEN / UTM zone 20N <2203> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD27 / Tennessee <2204> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Kentucky North <2205> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 9 <2206> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 10 <2207> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 11 <2208> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 12 <2209> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 13 <2210> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 14 <2211> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / 3-degree Gauss-Kruger zone 15 <2212> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ETRS89 / TM 30 NE <2213> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # Douala 1948 / AOF west (deprecated) <2214> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs <> # Manoca 1962 / UTM zone 32N <2215> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs <> # Qornoq 1927 / UTM zone 22N <2216> +proj=utm +zone=22 +ellps=intl +units=m +no_defs <> # Qornoq 1927 / UTM zone 23N <2217> +proj=utm +zone=23 +ellps=intl +units=m +no_defs <> # Scoresbysund 1952 / Greenland zone 5 east # Unable to translate coordinate system EPSG:2218 into PROJ.4 format. # # ATS77 / UTM zone 19N <2219> +proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # ATS77 / UTM zone 20N <2220> +proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # Scoresbysund 1952 / Greenland zone 6 east # Unable to translate coordinate system EPSG:2221 into PROJ.4 format. # # NAD83 / Arizona East (ft) <2222> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Arizona Central (ft) <2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Arizona West (ft) <2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / California zone 1 (ftUS) <2225> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / California zone 2 (ftUS) <2226> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / California zone 3 (ftUS) <2227> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / California zone 4 (ftUS) <2228> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / California zone 5 (ftUS) <2229> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / California zone 6 (ftUS) <2230> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Colorado North (ftUS) <2231> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Colorado Central (ftUS) <2232> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Colorado South (ftUS) <2233> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Connecticut (ftUS) <2234> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Delaware (ftUS) <2235> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Florida East (ftUS) <2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Florida West (ftUS) <2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Florida North (ftUS) <2238> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Georgia East (ftUS) <2239> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Georgia West (ftUS) <2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Idaho East (ftUS) <2241> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Idaho Central (ftUS) <2242> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Idaho West (ftUS) <2243> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Indiana East (ftUS) (deprecated) <2244> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Indiana West (ftUS) (deprecated) <2245> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Kentucky North (ftUS) <2246> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Kentucky South (ftUS) <2247> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016002 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Maryland (ftUS) <2248> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Massachusetts Mainland (ftUS) <2249> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Massachusetts Island (ftUS) <2250> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Michigan North (ft) <2251> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Michigan Central (ft) <2252> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Michigan South (ft) <2253> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Mississippi East (ftUS) <2254> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9999500000000001 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Mississippi West (ftUS) <2255> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333331 +k=0.9999500000000001 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Montana (ft) <2256> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / New Mexico East (ftUS) <2257> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New Mexico Central (ftUS) <2258> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New Mexico West (ftUS) <2259> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New York East (ftUS) <2260> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New York Central (ftUS) <2261> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New York West (ftUS) <2262> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=350000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New York Long Island (ftUS) <2263> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / North Carolina (ftUS) <2264> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / North Dakota North (ft) <2265> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / North Dakota South (ft) <2266> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Oklahoma North (ftUS) <2267> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Oklahoma South (ftUS) <2268> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Oregon North (ft) <2269> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Oregon South (ft) <2270> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Pennsylvania North (ftUS) <2271> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Pennsylvania South (ftUS) <2272> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / South Carolina (ft) <2273> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Tennessee (ftUS) <2274> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Texas North (ftUS) <2275> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Texas North Central (ftUS) <2276> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Texas Central (ftUS) <2277> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Texas South Central (ftUS) <2278> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Texas South (ftUS) <2279> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Utah North (ft) <2280> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Utah Central (ft) <2281> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Utah South (ft) <2282> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83 / Virginia North (ftUS) <2283> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Virginia South (ftUS) <2284> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Washington North (ftUS) <2285> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Washington South (ftUS) <2286> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wisconsin North (ftUS) <2287> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wisconsin Central (ftUS) <2288> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wisconsin South (ftUS) <2289> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # ATS77 / Prince Edward Isl. Stereographic (ATS77) <2290> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.9999119999999999 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated) <2291> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.9999119999999999 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated) <2292> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.9999119999999999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ATS77 / MTM Nova Scotia zone 4 <2294> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # ATS77 / MTM Nova Scotia zone 5 <2295> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs <> # Ammassalik 1958 / Greenland zone 7 east # Unable to translate coordinate system EPSG:2296 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 1 east (deprecated) # Unable to translate coordinate system EPSG:2297 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 2 east (deprecated) # Unable to translate coordinate system EPSG:2298 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 2 west # Unable to translate coordinate system EPSG:2299 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 3 east (deprecated) # Unable to translate coordinate system EPSG:2300 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 3 west # Unable to translate coordinate system EPSG:2301 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 4 east (deprecated) # Unable to translate coordinate system EPSG:2302 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 4 west # Unable to translate coordinate system EPSG:2303 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 5 west # Unable to translate coordinate system EPSG:2304 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 6 west # Unable to translate coordinate system EPSG:2305 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 7 west # Unable to translate coordinate system EPSG:2306 into PROJ.4 format. # # Qornoq 1927 / Greenland zone 8 east # Unable to translate coordinate system EPSG:2307 into PROJ.4 format. # # Batavia / TM 109 SE <2308> +proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m +no_defs <> # WGS 84 / TM 116 SE <2309> +proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / TM 132 SE <2310> +proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / TM 6 NE <2311> +proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # Garoua / UTM zone 33N <2312> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs <> # Kousseri / UTM zone 33N <2313> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs <> # Trinidad 1903 / Trinidad Grid (ftCla) <2314> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs <> # Campo Inchauspe / UTM zone 19S <2315> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs <> # Campo Inchauspe / UTM zone 20S <2316> +proj=utm +zone=20 +south +ellps=intl +units=m +no_defs <> # PSAD56 / ICN Regional <2317> +proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs <> # Ain el Abd / Aramco Lambert <2318> +proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM27 <2319> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM30 <2320> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM33 <2321> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM36 <2322> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM39 <2323> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM42 <2324> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM45 <2325> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Hong Kong 1980 Grid System <2326> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 13 <2327> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 14 <2328> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 15 <2329> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 16 <2330> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 17 <2331> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 18 <2332> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 19 <2333> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 20 <2334> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 21 <2335> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 22 <2336> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger zone 23 <2337> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 75E <2338> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 81E <2339> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 87E <2340> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 93E <2341> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 99E <2342> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 105E <2343> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 111E <2344> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 117E <2345> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 123E <2346> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 129E <2347> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / Gauss-Kruger CM 135E <2348> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 25 <2349> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 26 <2350> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 27 <2351> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 28 <2352> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 29 <2353> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 30 <2354> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 31 <2355> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 32 <2356> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 33 <2357> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 34 <2358> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 35 <2359> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 36 <2360> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 37 <2361> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 38 <2362> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 39 <2363> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 40 <2364> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 41 <2365> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 42 <2366> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 43 <2367> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 44 <2368> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 45 <2369> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 75E <2370> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 78E <2371> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 81E <2372> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 84E <2373> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 87E <2374> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 90E <2375> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 93E <2376> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 96E <2377> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 99E <2378> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 102E <2379> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 105E <2380> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 108E <2381> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 111E <2382> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 114E <2383> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 117E <2384> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 120E <2385> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 123E <2386> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 126E <2387> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 129E <2388> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 132E <2389> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 135E <2390> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs <> # KKJ / Finland zone 1 <2391> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland zone 2 <2392> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland Uniform Coordinate System <2393> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland zone 4 <2394> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # South Yemen / Gauss-Kruger zone 8 <2395> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> # South Yemen / Gauss-Kruger zone 9 <2396> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <> # Pulkovo 1942(83) / Gauss-Kruger zone 3 <2397> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> # Pulkovo 1942(83) / Gauss-Kruger zone 4 <2398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> # Pulkovo 1942(83) / Gauss-Kruger zone 5 <2399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <> # RT90 2.5 gon W (deprecated) <2400> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 25 <2401> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 26 <2402> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 27 <2403> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 28 <2404> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 29 <2405> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 30 <2406> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 31 <2407> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 32 <2408> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 33 <2409> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 34 <2410> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 35 <2411> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 36 <2412> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 37 <2413> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 38 <2414> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 39 <2415> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 40 <2416> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 41 <2417> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 42 <2418> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 43 <2419> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 44 <2420> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 45 <2421> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 75E <2422> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 78E <2423> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 81E <2424> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 84E <2425> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 87E <2426> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 90E <2427> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 93E <2428> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 96E <2429> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 99E <2430> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 102E <2431> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 105E <2432> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 108E <2433> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 111E <2434> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 114E <2435> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 117E <2436> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 120E <2437> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 123E <2438> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 126E <2439> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 129E <2440> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 132E <2441> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 135E <2442> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS I <2443> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS II <2444> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS III <2445> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS IV <2446> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS V <2447> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS VI <2448> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS VII <2449> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS VIII <2450> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS IX <2451> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS X <2452> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XI <2453> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XII <2454> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XIII <2455> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XIV <2456> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XV <2457> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XVI <2458> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XVII <2459> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XVIII <2460> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / Japan Plane Rectangular CS XIX <2461> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Albanian 1987 / Gauss-Kruger zone 4 <2462> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 21E <2463> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 27E <2464> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 33E <2465> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 39E <2466> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 45E <2467> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 51E <2468> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 57E <2469> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 63E <2470> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 69E <2471> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 75E <2472> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 81E <2473> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 87E <2474> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 93E <2475> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 99E <2476> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 105E <2477> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 111E <2478> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 117E <2479> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 123E <2480> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 129E <2481> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 135E <2482> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 141E <2483> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 147E <2484> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 153E <2485> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 159E <2486> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 165E <2487> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 171E <2488> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 177E <2489> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 177W <2490> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 171W <2491> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 9E <2492> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 15E <2493> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 21E <2494> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 27E <2495> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 33E <2496> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 39E <2497> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 45E <2498> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 51E <2499> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 57E <2500> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 63E <2501> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 69E <2502> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 75E <2503> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 81E <2504> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 87E <2505> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 93E <2506> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 99E <2507> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 105E <2508> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 111E <2509> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 117E <2510> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 123E <2511> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 129E <2512> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 135E <2513> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 141E <2514> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 147E <2515> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 153E <2516> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 159E <2517> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 165E <2518> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 171E <2519> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 177E <2520> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 177W <2521> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 171W <2522> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 7 <2523> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 8 <2524> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 9 <2525> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 10 <2526> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 11 <2527> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 12 <2528> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 13 <2529> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 14 <2530> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 15 <2531> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 16 <2532> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 17 <2533> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 18 <2534> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 19 <2535> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 20 <2536> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 21 <2537> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 22 <2538> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 23 <2539> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 24 <2540> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 25 <2541> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 26 <2542> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 27 <2543> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 28 <2544> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 29 <2545> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 30 <2546> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 31 <2547> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 32 <2548> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 33 <2549> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Samboja / UTM zone 50S (deprecated) <2550> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 34 <2551> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 35 <2552> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 36 <2553> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 37 <2554> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 38 <2555> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 39 <2556> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 40 <2557> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 41 <2558> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 42 <2559> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 43 <2560> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 44 <2561> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 45 <2562> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 46 <2563> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 47 <2564> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 48 <2565> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 49 <2566> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 50 <2567> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 51 <2568> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 52 <2569> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 53 <2570> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 54 <2571> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 55 <2572> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 56 <2573> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 57 <2574> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 58 <2575> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 59 <2576> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (deprecated) <2577> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 61 <2578> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 62 <2579> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 63 <2580> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 64 <2581> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E <2582> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E <2583> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E <2584> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E <2585> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E <2586> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E <2587> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E <2588> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E <2589> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E <2590> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E <2591> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E <2592> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E <2593> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E <2594> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E <2595> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E <2596> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E <2597> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E <2598> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E <2599> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Lietuvos Koordinoei Sistema 1994 (deprecated) <2600> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E <2601> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E <2602> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E <2603> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E <2604> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E <2605> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E <2606> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E <2607> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E <2608> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E <2609> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E <2610> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E <2611> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E <2612> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E <2613> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E <2614> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E <2615> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E <2616> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E <2617> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E <2618> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E <2619> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E <2620> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E <2621> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E <2622> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E <2623> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E <2624> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E <2625> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E <2626> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E <2627> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E <2628> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E <2629> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E <2630> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E <2631> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E <2632> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E <2633> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E <2634> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E <2635> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E <2636> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W <2637> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W <2638> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W <2639> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W <2640> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 7 <2641> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 8 <2642> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 9 <2643> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 10 <2644> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 11 <2645> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 12 <2646> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 13 <2647> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 14 <2648> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 15 <2649> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 16 <2650> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 17 <2651> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 18 <2652> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 19 <2653> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 20 <2654> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 21 <2655> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 22 <2656> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 23 <2657> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 24 <2658> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 25 <2659> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 26 <2660> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 27 <2661> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 28 <2662> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 29 <2663> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 30 <2664> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 31 <2665> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 32 <2666> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 33 <2667> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 34 <2668> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 35 <2669> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 36 <2670> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 37 <2671> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 38 <2672> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 39 <2673> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 40 <2674> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 41 <2675> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 42 <2676> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 43 <2677> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 44 <2678> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 45 <2679> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 46 <2680> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 47 <2681> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 48 <2682> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 49 <2683> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 50 <2684> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 51 <2685> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 52 <2686> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 53 <2687> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 54 <2688> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 55 <2689> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 56 <2690> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 57 <2691> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 58 <2692> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 59 <2693> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (deprecated) <2694> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 61 <2695> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 62 <2696> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 63 <2697> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 64 <2698> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E <2699> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E <2700> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E <2701> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E <2702> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E <2703> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E <2704> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E <2705> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E <2706> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E <2707> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E <2708> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E <2709> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E <2710> +proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E <2711> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E <2712> +proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E <2713> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E <2714> +proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E <2715> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E <2716> +proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E <2717> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E <2718> +proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E <2719> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E <2720> +proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E <2721> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E <2722> +proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E <2723> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E <2724> +proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E <2725> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E <2726> +proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E <2727> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E <2728> +proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E <2729> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E <2730> +proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E <2731> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E <2732> +proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E <2733> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E <2734> +proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E <2735> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Tete / UTM zone 36S <2736> +proj=utm +zone=36 +south +ellps=clrk66 +units=m +no_defs <> # Tete / UTM zone 37S <2737> +proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E <2738> +proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E <2739> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E <2740> +proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E <2741> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E <2742> +proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E <2743> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E <2744> +proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E <2745> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E <2746> +proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E <2747> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E <2748> +proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E <2749> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E <2750> +proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E <2751> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E <2752> +proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E <2753> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E <2754> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W <2755> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W <2756> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W <2757> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W <2758> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # NAD83(HARN) / Alabama East <2759> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9999600000000001 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Alabama West <2760> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333330000001 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Arizona East <2761> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Arizona Central <2762> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Arizona West <2763> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Arkansas North <2764> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Arkansas South <2765> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / California zone 1 <2766> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / California zone 2 <2767> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / California zone 3 <2768> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / California zone 4 <2769> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / California zone 5 <2770> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / California zone 6 <2771> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Colorado North <2772> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Colorado Central <2773> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Colorado South <2774> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Connecticut <2775> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Delaware <2776> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Florida East <2777> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Florida West <2778> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Florida North <2779> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Georgia East <2780> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Georgia West <2781> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Hawaii zone 1 <2782> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Hawaii zone 2 <2783> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Hawaii zone 3 <2784> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Hawaii zone 4 <2785> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Hawaii zone 5 <2786> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Idaho East <2787> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Idaho Central <2788> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Idaho West <2789> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Illinois East <2790> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Illinois West <2791> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Indiana East <2792> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Indiana West <2793> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Iowa North <2794> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Iowa South <2795> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Kansas North <2796> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Kansas South <2797> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Kentucky North <2798> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Kentucky South <2799> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Louisiana North <2800> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Louisiana South <2801> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333331 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Maine East <2802> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Maine West <2803> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Maryland <2804> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Massachusetts Mainland <2805> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Massachusetts Island <2806> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Michigan North <2807> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Michigan Central <2808> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Michigan South <2809> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Minnesota North <2810> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.10000000000001 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Minnesota Central <2811> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Minnesota South <2812> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Mississippi East <2813> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9999500000000001 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Mississippi West <2814> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333331 +k=0.9999500000000001 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Missouri East <2815> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333330000001 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Missouri Central <2816> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333330000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Missouri West <2817> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411770000001 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Montana <2818> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Nebraska <2819> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Nevada East <2820> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Nevada Central <2821> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Nevada West <2822> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New Hampshire <2823> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New Jersey <2824> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New Mexico East <2825> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New Mexico Central <2826> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New Mexico West <2827> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New York East <2828> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New York Central <2829> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New York West <2830> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / New York Long Island <2831> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / North Dakota North <2832> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / North Dakota South <2833> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Ohio North <2834> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Ohio South <2835> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Oklahoma North <2836> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Oklahoma South <2837> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Oregon North <2838> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Oregon South <2839> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Rhode Island <2840> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / South Dakota North <2841> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / South Dakota South <2842> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Tennessee <2843> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Texas North <2844> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Texas North Central <2845> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Texas Central <2846> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Texas South Central <2847> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Texas South <2848> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Utah North <2849> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Utah Central <2850> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Utah South <2851> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Vermont <2852> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642860000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Virginia North <2853> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Virginia South <2854> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Washington North <2855> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Washington South <2856> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / West Virginia North <2857> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / West Virginia South <2858> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wisconsin North <2859> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wisconsin Central <2860> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wisconsin South <2861> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wyoming East <2862> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999374999999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wyoming East Central <2863> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999374999999999 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wyoming West Central <2864> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999374999999999 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Wyoming West <2865> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999374999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Puerto Rico & Virgin Is. <2866> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Arizona East (ft) <2867> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Arizona Central (ft) <2868> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Arizona West (ft) <2869> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / California zone 1 (ftUS) <2870> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / California zone 2 (ftUS) <2871> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / California zone 3 (ftUS) <2872> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / California zone 4 (ftUS) <2873> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / California zone 5 (ftUS) <2874> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / California zone 6 (ftUS) <2875> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Colorado North (ftUS) <2876> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Colorado Central (ftUS) <2877> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Colorado South (ftUS) <2878> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Connecticut (ftUS) <2879> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Delaware (ftUS) <2880> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Florida East (ftUS) <2881> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Florida West (ftUS) <2882> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Florida North (ftUS) <2883> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Georgia East (ftUS) <2884> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Georgia West (ftUS) <2885> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Idaho East (ftUS) <2886> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Idaho Central (ftUS) <2887> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Idaho West (ftUS) <2888> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Indiana East (ftUS) (deprecated) <2889> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Indiana West (ftUS) (deprecated) <2890> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Kentucky North (ftUS) <2891> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Kentucky South (ftUS) <2892> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016002 +y_0=500000.0001016002 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Maryland (ftUS) <2893> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Massachusetts Mainland (ftUS) <2894> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Massachusetts Island (ftUS) <2895> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Michigan North (ft) <2896> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Michigan Central (ft) <2897> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Michigan South (ft) <2898> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Mississippi East (ftUS) <2899> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9999500000000001 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Mississippi West (ftUS) <2900> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333331 +k=0.9999500000000001 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Montana (ft) <2901> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / New Mexico East (ftUS) <2902> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New Mexico Central (ftUS) <2903> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New Mexico West (ftUS) <2904> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New York East (ftUS) <2905> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New York Central (ftUS) <2906> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New York West (ftUS) <2907> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=350000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New York Long Island (ftUS) <2908> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / North Dakota North (ft) <2909> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / North Dakota South (ft) <2910> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Oklahoma North (ftUS) <2911> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Oklahoma South (ftUS) <2912> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Oregon North (ft) <2913> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Oregon South (ft) <2914> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Tennessee (ftUS) <2915> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Texas North (ftUS) <2916> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Texas North Central (ftUS) <2917> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Texas Central (ftUS) <2918> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Texas South Central (ftUS) <2919> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Texas South (ftUS) <2920> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Utah North (ft) <2921> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Utah Central (ft) <2922> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Utah South (ft) <2923> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Virginia North (ftUS) <2924> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Virginia South (ftUS) <2925> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Washington North (ftUS) <2926> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Washington South (ftUS) <2927> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wisconsin North (ftUS) <2928> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wisconsin Central (ftUS) <2929> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wisconsin South (ftUS) <2930> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # Beduaram / TM 13 NE <2931> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs <> # QND95 / Qatar National Grid <2932> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs <> # Segara / UTM zone 50S <2933> +proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs <> # Segara (Jakarta) / NEIEZ (deprecated) <2934> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs <> # Pulkovo 1942 / CS63 zone A1 <2935> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone A2 <2936> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone A3 <2937> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone A4 <2938> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone K2 <2939> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone K3 <2940> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone K4 <2941> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs <> # Porto Santo / UTM zone 28N <2942> +proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs <> # Selvagem Grande / UTM zone 28N <2943> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> # NAD83(CSRS) / SCoPQ zone 2 <2944> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 3 <2945> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 4 <2946> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 5 <2947> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 6 <2948> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 7 <2949> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 8 <2950> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 9 <2951> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / MTM zone 10 <2952> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / New Brunswick Stereo <2953> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.9999119999999999 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83) <2954> +proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.9999119999999999 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 11N <2955> +proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 12N <2956> +proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 13N <2957> +proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 17N <2958> +proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 18N <2959> +proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 19N <2960> +proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 20N <2961> +proj=utm +zone=20 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 21N <2962> +proj=utm +zone=21 +ellps=GRS80 +units=m +no_defs <> # Lisbon 1890 (Lisbon) / Portugal Bonne # Unable to translate coordinate system EPSG:2963 into PROJ.4 format. # # NAD27 / Alaska Albers <2964> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Indiana East (ftUS) <2965> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Indiana West (ftUS) <2966> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Indiana East (ftUS) <2967> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Indiana West (ftUS) <2968> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # Fort Marigot / UTM zone 20N <2969> +proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs <> # Guadeloupe 1948 / UTM zone 20N <2970> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> # CSG67 / UTM zone 22N <2971> +proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs <> # RGFG95 / UTM zone 22N <2972> +proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs <> # Martinique 1938 / UTM zone 20N <2973> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> # RGR92 / UTM zone 40S <2975> +proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Tahiti 52 / UTM zone 6S <2976> +proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs <> # Tahaa 54 / UTM zone 5S <2977> +proj=utm +zone=5 +south +ellps=intl +units=m +no_defs <> # IGN72 Nuku Hiva / UTM zone 7S <2978> +proj=utm +zone=7 +south +ellps=intl +units=m +no_defs <> # K0 1949 / UTM zone 42S (deprecated) <2979> +proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs <> # Combani 1950 / UTM zone 38S <2980> +proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs <> # IGN56 Lifou / UTM zone 58S <2981> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> # IGN72 Grand Terre / UTM zone 58S (deprecated) <2982> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> # ST87 Ouvea / UTM zone 58S (deprecated) <2983> +proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs <> # RGNC 1991 / Lambert New Caledonia (deprecated) <2984> +proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Petrels 1972 / Terre Adelie Polar Stereographic # Unable to translate coordinate system EPSG:2985 into PROJ.4 format. # # Perroud 1950 / Terre Adelie Polar Stereographic # Unable to translate coordinate system EPSG:2986 into PROJ.4 format. # # Saint Pierre et Miquelon 1950 / UTM zone 21N <2987> +proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs <> # MOP78 / UTM zone 1S <2988> +proj=utm +zone=1 +south +ellps=intl +units=m +no_defs <> # RRAF 1991 / UTM zone 20N <2989> +proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Reunion 1947 / TM Reunion (deprecated) <2990> +proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +units=m +no_defs <> # NAD83 / Oregon Lambert <2991> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Oregon Lambert (ft) <2992> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Oregon Lambert <2993> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Oregon Lambert (ft) <2994> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # IGN53 Mare / UTM zone 58S <2995> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> # ST84 Ile des Pins / UTM zone 58S <2996> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> # ST71 Belep / UTM zone 58S <2997> +proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m +no_defs <> # NEA74 Noumea / UTM zone 58S <2998> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> # Grand Comoros / UTM zone 38S <2999> +proj=utm +zone=38 +south +ellps=intl +units=m +no_defs <> # Segara / NEIEZ <3000> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs <> # Batavia / NEIEZ <3001> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs <> # Makassar / NEIEZ <3002> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs <> # Monte Mario / Italy zone 1 <3003> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Monte Mario / Italy zone 2 <3004> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs <> # NAD83 / BC Albers <3005> +proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # SWEREF99 TM <3006> +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 12 00 <3007> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 13 30 <3008> +proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 15 00 <3009> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 16 30 <3010> +proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 18 00 <3011> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 14 15 <3012> +proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 15 45 <3013> +proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 17 15 <3014> +proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 18 45 <3015> +proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 20 15 <3016> +proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 21 45 <3017> +proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SWEREF99 23 15 <3018> +proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # RT90 7.5 gon V <3019> +proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT90 5 gon V <3020> +proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT90 2.5 gon V <3021> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT90 0 gon <3022> +proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT90 2.5 gon O <3023> +proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT90 5 gon O <3024> +proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT38 7.5 gon V <3025> +proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT38 5 gon V <3026> +proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT38 2.5 gon V <3027> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT38 0 gon <3028> +proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT38 2.5 gon O <3029> +proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RT38 5 gon O <3030> +proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # WGS 84 / Antarctic Polar Stereographic <3031> +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / Australian Antarctic Polar Stereographic <3032> +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / Australian Antarctic Lambert <3033> +proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # ETRS89 / ETRS-LCC <3034> +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-LAEA <3035> +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs <> # Moznet / UTM zone 36S <3036> +proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs <> # Moznet / UTM zone 37S <3037> +proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs <> # ETRS89 / ETRS-TM26 <3038> +proj=utm +zone=26 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM27 <3039> +proj=utm +zone=27 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM28 <3040> +proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM29 <3041> +proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM30 <3042> +proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM31 <3043> +proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM32 <3044> +proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM33 <3045> +proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM34 <3046> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM35 <3047> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM36 <3048> +proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM37 <3049> +proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM38 <3050> +proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-TM39 <3051> +proj=utm +zone=39 +ellps=GRS80 +units=m +no_defs <> # Reykjavik 1900 / Lambert 1900 # Unable to translate coordinate system EPSG:3052 into PROJ.4 format. # # Hjorsey 1955 / Lambert 1955 # Unable to translate coordinate system EPSG:3053 into PROJ.4 format. # # Hjorsey 1955 / UTM zone 26N <3054> +proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs <> # Hjorsey 1955 / UTM zone 27N <3055> +proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs <> # Hjorsey 1955 / UTM zone 28N <3056> +proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs <> # ISN93 / Lambert 1993 <3057> +proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Helle 1954 / Jan Mayen Grid <3058> +proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +units=m +no_defs <> # LKS92 / Latvia TM <3059> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # IGN72 Grande Terre / UTM zone 58S <3060> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs <> # Porto Santo 1995 / UTM zone 28N <3061> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> # Azores Oriental 1995 / UTM zone 26N <3062> +proj=utm +zone=26 +ellps=intl +units=m +no_defs <> # Azores Central 1995 / UTM zone 26N <3063> +proj=utm +zone=26 +ellps=intl +units=m +no_defs <> # IGM95 / UTM zone 32N <3064> +proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # IGM95 / UTM zone 33N <3065> +proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ED50 / Jordan TM <3066> +proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +units=m +no_defs <> # ETRS89 / ETRS-TM35FIN <3067> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> # DHDN / Soldner Berlin <3068> +proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m +no_defs <> # NAD27 / Wisconsin Transverse Mercator <3069> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD83 / Wisconsin Transverse Mercator <3070> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / Wisconsin Transverse Mercator <3071> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m +no_defs <> # NAD83 / Maine CS2000 East <3072> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.9999800000000001 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Maine CS2000 Central (deprecated) <3073> +proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.9999800000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Maine CS2000 West <3074> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.9999800000000001 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / Maine CS2000 East <3075> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.9999800000000001 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Maine CS2000 Central (deprecated) <3076> +proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.9999800000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Maine CS2000 West <3077> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.9999800000000001 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83 / Michigan Oblique Mercator <3078> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / Michigan Oblique Mercator <3079> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +units=m +no_defs <> # NAD27 / Shackleford <3080> +proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048 +no_defs <> # NAD83 / Texas State Mapping System <3081> +proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas Centric Lambert Conformal <3082> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas Centric Albers Equal Area <3083> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / Texas Centric Lambert Conformal <3084> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Texas Centric Albers Equal Area <3085> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs <> # NAD83 / Florida GDL Albers <3086> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / Florida GDL Albers <3087> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83 / Kentucky Single Zone <3088> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Kentucky Single Zone (ftUS) <3089> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Kentucky Single Zone <3090> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Kentucky Single Zone (ftUS) <3091> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # Tokyo / UTM zone 51N <3092> +proj=utm +zone=51 +ellps=bessel +units=m +no_defs <> # Tokyo / UTM zone 52N <3093> +proj=utm +zone=52 +ellps=bessel +units=m +no_defs <> # Tokyo / UTM zone 53N <3094> +proj=utm +zone=53 +ellps=bessel +units=m +no_defs <> # Tokyo / UTM zone 54N <3095> +proj=utm +zone=54 +ellps=bessel +units=m +no_defs <> # Tokyo / UTM zone 55N <3096> +proj=utm +zone=55 +ellps=bessel +units=m +no_defs <> # JGD2000 / UTM zone 51N <3097> +proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / UTM zone 52N <3098> +proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / UTM zone 53N <3099> +proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / UTM zone 54N <3100> +proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JGD2000 / UTM zone 55N <3101> +proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # American Samoa 1962 / American Samoa Lambert <3102> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # Mauritania 1999 / UTM zone 28N (deprecated) <3103> +proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs <> # Mauritania 1999 / UTM zone 29N (deprecated) <3104> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs <> # Mauritania 1999 / UTM zone 30N (deprecated) <3105> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> # Gulshan 303 / Bangladesh Transverse Mercator <3106> +proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # GDA94 / SA Lambert <3107> +proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ETRS89 / Guernsey Grid <3108> +proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.9999969999999999 +x_0=47000 +y_0=50000 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / Jersey Transverse Mercator <3109> +proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999998999999999 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m +no_defs <> # AGD66 / Vicgrid66 <3110> +proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +units=m +no_defs <> # GDA94 / Vicgrid94 <3111> +proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / Geoscience Australia Lambert <3112> +proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / BCSG02 <3113> +proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # MAGNA-SIRGAS / Colombia Far West zone <3114> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # MAGNA-SIRGAS / Colombia West zone <3115> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # MAGNA-SIRGAS / Colombia Bogota zone <3116> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # MAGNA-SIRGAS / Colombia East Central zone <3117> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # MAGNA-SIRGAS / Colombia East zone <3118> +proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Douala 1948 / AEF west <3119> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs <> # Pulkovo 1942(58) / Poland zone I <3120> +proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # PRS92 / Philippines zone 1 <3121> +proj=tmerc +lat_0=0 +lon_0=117 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> # PRS92 / Philippines zone 2 <3122> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> # PRS92 / Philippines zone 3 <3123> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> # PRS92 / Philippines zone 4 <3124> +proj=tmerc +lat_0=0 +lon_0=123 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> # PRS92 / Philippines zone 5 <3125> +proj=tmerc +lat_0=0 +lon_0=125 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs <> # ETRS89 / ETRS-GK19FIN <3126> +proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK20FIN <3127> +proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK21FIN <3128> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK22FIN <3129> +proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK23FIN <3130> +proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK24FIN <3131> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK25FIN <3132> +proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK26FIN <3133> +proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK27FIN <3134> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK28FIN <3135> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK29FIN <3136> +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK30FIN <3137> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / ETRS-GK31FIN <3138> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # Vanua Levu 1915 / Vanua Levu Grid # Unable to translate coordinate system EPSG:3139 into PROJ.4 format. # # Viti Levu 1912 / Viti Levu Grid <3140> +proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168 +no_defs <> # Fiji 1956 / UTM zone 60S <3141> +proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs <> # Fiji 1956 / UTM zone 1S <3142> +proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs <> # Fiji 1986 / Fiji Map Grid (deprecated) <3143> +proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.9998500000000001 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs <> # FD54 / Faroe Lambert # Unable to translate coordinate system EPSG:3144 into PROJ.4 format. # # ETRS89 / Faroe Lambert # Unable to translate coordinate system EPSG:3145 into PROJ.4 format. # # Pulkovo 1942 / 3-degree Gauss-Kruger zone 6 <3146> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E <3147> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Indian 1960 / UTM zone 48N <3148> +proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Indian 1960 / UTM zone 49N <3149> +proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 6 <3150> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E <3151> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # ST74 <3152> +proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.783600001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(CSRS) / BC Albers <3153> +proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 7N <3154> +proj=utm +zone=7 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 8N <3155> +proj=utm +zone=8 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 9N <3156> +proj=utm +zone=9 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 10N <3157> +proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 14N <3158> +proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 15N <3159> +proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / UTM zone 16N <3160> +proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs <> # NAD83 / Ontario MNR Lambert <3161> +proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(CSRS) / Ontario MNR Lambert <3162> +proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +units=m +no_defs <> # RGNC91-93 / Lambert New Caledonia <3163> +proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ST87 Ouvea / UTM zone 58S <3164> +proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs <> # NEA74 Noumea / Noumea Lambert <3165> +proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +units=m +no_defs <> # NEA74 Noumea / Noumea Lambert 2 <3166> +proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +units=m +no_defs <> # Kertau (RSO) / RSO Malaya (ch) <3167> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.9998400000000001 +x_0=40000 +y_0=0 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs <> # Kertau (RSO) / RSO Malaya (m) <3168> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.9998400000000001 +x_0=804670.24 +y_0=0 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs <> # RGNC91-93 / UTM zone 57S <3169> +proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # RGNC91-93 / UTM zone 58S <3170> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # RGNC91-93 / UTM zone 59S <3171> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # IGN53 Mare / UTM zone 59S <3172> +proj=utm +zone=59 +south +ellps=intl +units=m +no_defs <> # fk89 / Faroe Lambert FK89 # Unable to translate coordinate system EPSG:3173 into PROJ.4 format. # # NAD83 / Great Lakes Albers <3174> +proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Great Lakes and St Lawrence Albers <3175> +proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # Indian 1960 / TM 106 NE <3176> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # LGD2006 / Libya TM <3177> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 18N <3178> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 19N <3179> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 20N <3180> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 21N <3181> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 22N <3182> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 23N <3183> +proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 24N <3184> +proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 25N <3185> +proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 26N <3186> +proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 27N <3187> +proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 28N <3188> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GR96 / UTM zone 29N <3189> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 5 <3190> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 6 <3191> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 7 <3192> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 8 <3193> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 9 <3194> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 10 <3195> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 11 <3196> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 12 <3197> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / Libya TM zone 13 <3198> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / UTM zone 32N <3199> +proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # FD58 / Iraq zone <3200> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs <> # LGD2006 / UTM zone 33N <3201> +proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / UTM zone 34N <3202> +proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # LGD2006 / UTM zone 35N <3203> +proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs <> # WGS 84 / SCAR IMW SP19-20 <3204> +proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SP21-22 <3205> +proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SP23-24 <3206> +proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ01-02 <3207> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ19-20 <3208> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ21-22 <3209> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ37-38 <3210> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ39-40 <3211> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ41-42 <3212> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ43-44 <3213> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ45-46 <3214> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ47-48 <3215> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ49-50 <3216> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ51-52 <3217> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ53-54 <3218> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ55-56 <3219> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SQ57-58 <3220> +proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR13-14 <3221> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR15-16 <3222> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR17-18 <3223> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR19-20 <3224> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR27-28 <3225> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR29-30 <3226> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR31-32 <3227> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR33-34 <3228> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR35-36 <3229> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR37-38 <3230> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR39-40 <3231> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR41-42 <3232> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR43-44 <3233> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR45-46 <3234> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR47-48 <3235> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR49-50 <3236> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR51-52 <3237> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR53-54 <3238> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR55-56 <3239> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR57-58 <3240> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SR59-60 <3241> +proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS04-06 <3242> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS07-09 <3243> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS10-12 <3244> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS13-15 <3245> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS16-18 <3246> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS19-21 <3247> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS25-27 <3248> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS28-30 <3249> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS31-33 <3250> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS34-36 <3251> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS37-39 <3252> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS40-42 <3253> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS43-45 <3254> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS46-48 <3255> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS49-51 <3256> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS52-54 <3257> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS55-57 <3258> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SS58-60 <3259> +proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST01-04 <3260> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST05-08 <3261> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST09-12 <3262> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST13-16 <3263> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST17-20 <3264> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST21-24 <3265> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST25-28 <3266> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST29-32 <3267> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST33-36 <3268> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST37-40 <3269> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST41-44 <3270> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST45-48 <3271> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST49-52 <3272> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST53-56 <3273> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW ST57-60 <3274> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU01-05 <3275> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU06-10 <3276> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU11-15 <3277> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU16-20 <3278> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU21-25 <3279> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU26-30 <3280> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU31-35 <3281> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU36-40 <3282> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU41-45 <3283> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU46-50 <3284> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU51-55 <3285> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SU56-60 <3286> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SV01-10 <3287> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SV11-20 <3288> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SV21-30 <3289> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SV31-40 <3290> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SV41-50 <3291> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SV51-60 <3292> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / SCAR IMW SW01-60 <3293> +proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / USGS Transantarctic Mountains <3294> +proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # Guam 1963 / Yap Islands # Unable to translate coordinate system EPSG:3295 into PROJ.4 format. # # RGPF / UTM zone 5S <3296> +proj=utm +zone=5 +south +ellps=GRS80 +units=m +no_defs <> # RGPF / UTM zone 6S <3297> +proj=utm +zone=6 +south +ellps=GRS80 +units=m +no_defs <> # RGPF / UTM zone 7S <3298> +proj=utm +zone=7 +south +ellps=GRS80 +units=m +no_defs <> # RGPF / UTM zone 8S <3299> +proj=utm +zone=8 +south +ellps=GRS80 +units=m +no_defs <> # Estonian Coordinate System of 1992 <3300> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs <> # Estonian Coordinate System of 1997 <3301> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # IGN63 Hiva Oa / UTM zone 7S <3302> +proj=utm +zone=7 +south +ellps=intl +units=m +no_defs <> # Fatu Iva 72 / UTM zone 7S <3303> +proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs <> # Tahiti 79 / UTM zone 6S <3304> +proj=utm +zone=6 +south +ellps=intl +units=m +no_defs <> # Moorea 87 / UTM zone 6S <3305> +proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs <> # Maupiti 83 / UTM zone 5S <3306> +proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs <> # Nakhl-e Ghanem / UTM zone 39N <3307> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs <> # GDA94 / NSW Lambert <3308> +proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD27 / California Albers <3309> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD83 / California Albers <3310> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / California Albers <3311> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m +no_defs <> # CSG67 / UTM zone 21N <3312> +proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs <> # RGFG95 / UTM zone 21N <3313> +proj=utm +zone=21 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs <> # Katanga 1955 / Katanga Lambert <3314> +proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Katanga 1955 / Katanga TM <3315> +proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Kasai 1953 / Congo TM zone 22 <3316> +proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # Kasai 1953 / Congo TM zone 24 <3317> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 12 <3318> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 14 <3319> +proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 16 <3320> +proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 18 <3321> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 20 <3322> +proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 22 <3323> +proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 24 <3324> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 26 <3325> +proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 28 <3326> +proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # IGC 1962 / Congo TM zone 30 <3327> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # Pulkovo 1942(58) / GUGiK-80 <3328> +proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 <3329> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6 <3330> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7 <3331> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8 <3332> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Gauss-Kruger zone 3 <3333> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Gauss-Kruger zone 4 <3334> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # Pulkovo 1942(58) / Gauss-Kruger zone 5 <3335> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <> # IGN 1962 Kerguelen / UTM zone 42S <3336> +proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs <> # Le Pouce 1934 / Mauritius Grid <3337> +proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs <> # NAD83 / Alaska Albers <3338> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # IGCB 1955 / Congo TM zone 12 <3339> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> # IGCB 1955 / Congo TM zone 14 <3340> +proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> # IGCB 1955 / Congo TM zone 16 <3341> +proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> # IGCB 1955 / UTM zone 33S <3342> +proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs <> # Mauritania 1999 / UTM zone 28N <3343> +proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Mauritania 1999 / UTM zone 29N <3344> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Mauritania 1999 / UTM zone 30N <3345> +proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # LKS94 / Lithuania TM <3346> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / Statistics Canada Lambert <3347> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.39067499999999 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(CSRS) / Statistics Canada Lambert <3348> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.39067499999999 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs <> # WGS 84 / PDC Mercator <3349> +proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # Pulkovo 1942 / CS63 zone C0 <3350> +proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone C1 <3351> +proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / CS63 zone C2 <3352> +proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +units=m +no_defs <> # Mhast (onshore) / UTM zone 32S <3353> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs <> # Mhast (offshore) / UTM zone 32S <3354> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs <> # Egypt Gulf of Suez S-650 TL / Red Belt <3355> +proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs <> # Grand Cayman 1959 / UTM zone 17N <3356> +proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m +no_defs <> # Little Cayman 1961 / UTM zone 17N <3357> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs <> # NAD83(HARN) / North Carolina <3358> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / North Carolina (ftUS) (deprecated) <3359> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / South Carolina <3360> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / South Carolina (ft) <3361> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs <> # NAD83(HARN) / Pennsylvania North <3362> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Pennsylvania North (ftUS) <3363> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Pennsylvania South <3364> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / Pennsylvania South (ftUS) <3365> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # Hong Kong 1963 Grid System (deprecated) <3366> +proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs <> # IGN Astro 1960 / UTM zone 28N <3367> +proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs <> # IGN Astro 1960 / UTM zone 29N <3368> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs <> # IGN Astro 1960 / UTM zone 30N <3369> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> # NAD27 / UTM zone 59N <3370> +proj=utm +zone=59 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 60N <3371> +proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD83 / UTM zone 59N <3372> +proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 60N <3373> +proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # FD54 / UTM zone 29N <3374> +proj=utm +zone=29 +ellps=intl +units=m +no_defs <> # GDM2000 / Peninsula RSO <3375> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.9998400000000001 +x_0=804671 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / East Malaysia BRSO <3376> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.9998400000000001 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Johor Grid <3377> +proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Sembilan and Melaka Grid <3378> +proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / PahangGrid <3379> +proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Selangor Grid <3380> +proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Terengganu Grid <3381> +proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Pinang Grid <3382> +proj=cass +lat_0=5.421517541666668 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Kedah and Perlis Grid <3383> +proj=cass +lat_0=5.96467271388889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Perak Grid <3384> +proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs <> # GDM2000 / Kelantan Grid <3385> +proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs <> # KKJ / Finland zone 0 <3386> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # KKJ / Finland zone 5 <3387> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs <> # Pulkovo 1942 / Caspian Sea Mercator <3388> +proj=merc +lon_0=51 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 <3389> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 <3390> +proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Karbala 1979 (Polservice) / UTM zone 37N <3391> +proj=utm +zone=37 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs <> # Karbala 1979 (Polservice) / UTM zone 38N <3392> +proj=utm +zone=38 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs <> # Karbala 1979 (Polservice) / UTM zone 39N <3393> +proj=utm +zone=39 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs <> # Nahrwan 1934 / Iraq zone <3394> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs <> # WGS 84 / World Mercator <3395> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # PD/83 / Gauss-Kruger zone 3 <3396> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # PD/83 / Gauss-Kruger zone 4 <3397> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RD/83 / Gauss-Kruger zone 4 <3398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # RD/83 / Gauss-Kruger zone 5 <3399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # NAD83 / Alberta 10-TM (Forest) <3400> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992000000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alberta 10-TM (Resource) <3401> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992000000000001 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(CSRS) / Alberta 10-TM (Forest) <3402> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992000000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(CSRS) / Alberta 10-TM (Resource) <3403> +proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992000000000001 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / North Carolina (ftUS) <3404> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # VN-2000 / UTM zone 48N <3405> +proj=utm +zone=48 +ellps=WGS84 +units=m +no_defs <> # VN-2000 / UTM zone 49N <3406> +proj=utm +zone=49 +ellps=WGS84 +units=m +no_defs <> # Hong Kong 1963 Grid System <3407> +proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs <> # NSIDC EASE-Grid North <3408> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs <> # NSIDC EASE-Grid South <3409> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs <> # NSIDC EASE-Grid Global # Unable to translate coordinate system EPSG:3410 into PROJ.4 format. # # NSIDC Sea Ice Polar Stereographic North <3411> +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs <> # NSIDC Sea Ice Polar Stereographic South <3412> +proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs <> # WGS 84 / NSIDC Sea Ice Polar Stereographic North <3413> +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # SVY21 / Singapore TM <3414> +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs <> # WGS 72BE / South China Sea Lambert <3415> +proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # ETRS89 / Austria Lambert <3416> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs <> # NAD83 / Iowa North (ft US) <3417> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Iowa South (ft US) <3418> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Kansas North (ft US) <3419> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Kansas South (ft US) <3420> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Nevada East (ft US) <3421> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Nevada Central (ft US) <3422> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Nevada West (ft US) <3423> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New Jersey (ft US) <3424> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Iowa North (ft US) <3425> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Iowa South (ft US) <3426> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Kansas North (ft US) <3427> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Kansas South (ft US) <3428> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Nevada East (ft US) <3429> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Nevada Central (ft US) <3430> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Nevada West (ft US) <3431> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New Jersey (ft US) <3432> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Arkansas North (ftUS) <3433> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Arkansas South (ftUS) <3434> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Illinois East (ftUS) <3435> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Illinois West (ftUS) <3436> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / New Hampshire (ftUS) <3437> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Rhode Island (ftUS) <3438> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # PSD93 / UTM zone 39N <3439> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> # PSD93 / UTM zone 40N <3440> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> # NAD83(HARN) / Arkansas North (ftUS) <3441> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Arkansas South (ftUS) <3442> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Illinois East (ftUS) <3443> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Illinois West (ftUS) <3444> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / New Hampshire (ftUS) <3445> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Rhode Island (ftUS) <3446> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # ETRS89 / Belgian Lambert 2005 <3447> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333334 +x_0=150328 +y_0=166262 +ellps=GRS80 +units=m +no_defs <> # JAD2001 / Jamaica Metric Grid <3448> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JAD2001 / UTM zone 17N <3449> +proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # JAD2001 / UTM zone 18N <3450> +proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / Louisiana North (ftUS) <3451> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Louisiana South (ftUS) <3452> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333331 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Louisiana Offshore (ftUS) <3453> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333331 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / South Dakota North (ftUS) <3454> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / South Dakota South (ftUS) <3455> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Louisiana North (ftUS) <3456> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Louisiana South (ftUS) <3457> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333331 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / South Dakota North (ftUS) <3458> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / South Dakota South (ftUS) <3459> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # Fiji 1986 / Fiji Map Grid <3460> +proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.9998500000000001 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs <> # Dabola 1981 / UTM zone 28N <3461> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs <> # Dabola 1981 / UTM zone 29N <3462> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs <> # NAD83 / Maine CS2000 Central <3463> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.9999800000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(HARN) / Maine CS2000 Central <3464> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.9999800000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(NSRS2007) / Alabama East <3465> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9999600000000001 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alabama West <3466> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333330000001 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska Albers <3467> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 1 <3468> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 2 <3469> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 3 <3470> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 4 <3471> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 5 <3472> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 6 <3473> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 7 <3474> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 8 <3475> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 9 <3476> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Alaska zone 10 <3477> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Arizona Central <3478> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Arizona Central (ft) <3479> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Arizona East <3480> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Arizona East (ft) <3481> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Arizona West <3482> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Arizona West (ft) <3483> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Arkansas North <3484> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Arkansas North (ftUS) <3485> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Arkansas South <3486> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Arkansas South (ftUS) <3487> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / California Albers <3488> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 1 <3489> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 1 (ftUS) <3490> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / California zone 2 <3491> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 2 (ftUS) <3492> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / California zone 3 <3493> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 3 (ftUS) <3494> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / California zone 4 <3495> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 4 (ftUS) <3496> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / California zone 5 <3497> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 5 (ftUS) <3498> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / California zone 6 <3499> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / California zone 6 (ftUS) <3500> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Colorado Central <3501> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Colorado Central (ftUS) <3502> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Colorado North <3503> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Colorado North (ftUS) <3504> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Colorado South <3505> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Colorado South (ftUS) <3506> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Connecticut <3507> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Connecticut (ftUS) <3508> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Delaware <3509> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Delaware (ftUS) <3510> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Florida East <3511> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Florida East (ftUS) <3512> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Florida GDL Albers <3513> +proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Florida North <3514> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Florida North (ftUS) <3515> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Florida West <3516> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Florida West (ftUS) <3517> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Georgia East <3518> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Georgia East (ftUS) <3519> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Georgia West <3520> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Georgia West (ftUS) <3521> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Idaho Central <3522> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Idaho Central (ftUS) <3523> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Idaho East <3524> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Idaho East (ftUS) <3525> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Idaho West <3526> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Idaho West (ftUS) <3527> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Illinois East <3528> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Illinois East (ftUS) <3529> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Illinois West <3530> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Illinois West (ftUS) <3531> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Indiana East <3532> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Indiana East (ftUS) <3533> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Indiana West <3534> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Indiana West (ftUS) <3535> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Iowa North <3536> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Iowa North (ft US) <3537> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Iowa South <3538> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Iowa South (ft US) <3539> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Kansas North <3540> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Kansas North (ft US) <3541> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Kansas South <3542> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Kansas South (ft US) <3543> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Kentucky North <3544> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Kentucky North (ftUS) <3545> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Kentucky Single Zone <3546> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Kentucky Single Zone (ftUS) <3547> +proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Kentucky South <3548> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Kentucky South (ftUS) <3549> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016002 +y_0=500000.0001016002 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Louisiana North <3550> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Louisiana North (ftUS) <3551> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Louisiana South <3552> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333331 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Louisiana South (ftUS) <3553> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333331 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Maine CS2000 Central <3554> +proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.9999800000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Maine CS2000 East <3555> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.9999800000000001 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Maine CS2000 West <3556> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.9999800000000001 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Maine East <3557> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Maine West <3558> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Maryland <3559> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / Utah North (ftUS) <3560> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # Old Hawaiian / Hawaii zone 1 <3561> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> # Old Hawaiian / Hawaii zone 2 <3562> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> # Old Hawaiian / Hawaii zone 3 <3563> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> # Old Hawaiian / Hawaii zone 4 <3564> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> # Old Hawaiian / Hawaii zone 5 <3565> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Utah Central (ftUS) <3566> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Utah South (ftUS) <3567> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Utah North (ftUS) <3568> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Utah Central (ftUS) <3569> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Utah South (ftUS) <3570> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # WGS 84 / North Pole LAEA Bering Sea <3571> +proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / North Pole LAEA Alaska <3572> +proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / North Pole LAEA Canada <3573> +proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / North Pole LAEA Atlantic <3574> +proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / North Pole LAEA Europe <3575> +proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / North Pole LAEA Russia <3576> +proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # GDA94 / Australian Albers <3577> +proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83 / Yukon Albers <3578> +proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(CSRS) / Yukon Albers <3579> +proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs <> # NAD83 / NWT Lambert <3580> +proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83(CSRS) / NWT Lambert <3581> +proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # NAD83(NSRS2007) / Maryland (ftUS) <3582> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Massachusetts Island <3583> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Massachusetts Island (ftUS) <3584> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Massachusetts Mainland <3585> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Massachusetts Mainland (ftUS) <3586> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Michigan Central <3587> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Michigan Central (ft) <3588> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Michigan North <3589> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Michigan North (ft) <3590> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Michigan Oblique Mercator <3591> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Michigan South <3592> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Michigan South (ft) <3593> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Minnesota Central <3594> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Minnesota North <3595> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.10000000000001 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Minnesota South <3596> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Mississippi East <3597> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9999500000000001 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Mississippi East (ftUS) <3598> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9999500000000001 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Mississippi West <3599> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333331 +k=0.9999500000000001 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Mississippi West (ftUS) <3600> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333331 +k=0.9999500000000001 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Missouri Central <3601> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333330000001 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Missouri East <3602> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333330000001 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Missouri West <3603> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411770000001 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Montana <3604> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Montana (ft) <3605> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Nebraska <3606> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Nevada Central <3607> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Nevada Central (ft US) <3608> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Nevada East <3609> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Nevada East (ft US) <3610> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Nevada West <3611> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Nevada West (ft US) <3612> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New Hampshire <3613> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New Hampshire (ftUS) <3614> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New Jersey <3615> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New Jersey (ft US) <3616> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New Mexico Central <3617> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New Mexico Central (ftUS) <3618> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New Mexico East <3619> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New Mexico East (ftUS) <3620> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New Mexico West <3621> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New Mexico West (ftUS) <3622> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New York Central <3623> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New York Central (ftUS) <3624> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New York East <3625> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New York East (ftUS) <3626> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New York Long Island <3627> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New York Long Island (ftUS) <3628> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / New York West <3629> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / New York West (ftUS) <3630> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=350000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / North Carolina <3631> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / North Carolina (ftUS) <3632> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / North Dakota North <3633> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / North Dakota North (ft) <3634> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / North Dakota South <3635> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / North Dakota South (ft) <3636> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Ohio North <3637> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Ohio South <3638> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Oklahoma North <3639> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Oklahoma North (ftUS) <3640> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Oklahoma South <3641> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Oklahoma South (ftUS) <3642> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Oregon Lambert <3643> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Oregon Lambert (ft) <3644> +proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Oregon North <3645> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Oregon North (ft) <3646> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Oregon South <3647> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Oregon South (ft) <3648> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Pennsylvania North <3649> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Pennsylvania North (ftUS) <3650> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Pennsylvania South <3651> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Pennsylvania South (ftUS) <3652> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Rhode Island <3653> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Rhode Island (ftUS) <3654> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / South Carolina <3655> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / South Carolina (ft) <3656> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / South Dakota North <3657> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / South Dakota North (ftUS) <3658> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / South Dakota South <3659> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / South Dakota South (ftUS) <3660> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Tennessee <3661> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Tennessee (ftUS) <3662> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Texas Central <3663> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas Central (ftUS) <3664> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Texas Centric Albers Equal Area <3665> +proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas Centric Lambert Conformal <3666> +proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas North <3667> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas North (ftUS) <3668> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Texas North Central <3669> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas North Central (ftUS) <3670> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Texas South <3671> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas South (ftUS) <3672> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Texas South Central <3673> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Texas South Central (ftUS) <3674> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Utah Central <3675> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Utah Central (ft) <3676> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Utah Central (ftUS) <3677> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Utah North <3678> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Utah North (ft) <3679> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Utah North (ftUS) <3680> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Utah South <3681> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Utah South (ft) <3682> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs <> # NAD83(NSRS2007) / Utah South (ftUS) <3683> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Vermont <3684> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642860000001 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Virginia North <3685> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Virginia North (ftUS) <3686> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Virginia South <3687> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Virginia South (ftUS) <3688> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Washington North <3689> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Washington North (ftUS) <3690> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Washington South <3691> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Washington South (ftUS) <3692> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / West Virginia North <3693> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / West Virginia South <3694> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wisconsin Central <3695> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wisconsin Central (ftUS) <3696> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wisconsin North <3697> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wisconsin North (ftUS) <3698> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wisconsin South <3699> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wisconsin South (ftUS) <3700> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wisconsin Transverse Mercator <3701> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wyoming East <3702> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999374999999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wyoming East Central <3703> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999374999999999 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wyoming West Central <3704> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999374999999999 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / Wyoming West <3705> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999374999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 59N <3706> +proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 60N <3707> +proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 1N <3708> +proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 2N <3709> +proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 3N <3710> +proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 4N <3711> +proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 5N <3712> +proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 6N <3713> +proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 7N <3714> +proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 8N <3715> +proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 9N <3716> +proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 10N <3717> +proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 11N <3718> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 12N <3719> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 13N <3720> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 14N <3721> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 15N <3722> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 16N <3723> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 17N <3724> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 18N <3725> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD83(NSRS2007) / UTM zone 19N <3726> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Reunion 1947 / TM Reunion <3727> +proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +units=m +no_defs <> # NAD83(NSRS2007) / Ohio North (ftUS) <3728> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Ohio South (ftUS) <3729> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wyoming East (ftUS) <3730> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999374999999999 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wyoming East Central (ftUS) <3731> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999374999999999 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wyoming West Central (ftUS) <3732> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999374999999999 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83(NSRS2007) / Wyoming West (ftUS) <3733> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999374999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Ohio North (ftUS) <3734> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Ohio South (ftUS) <3735> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wyoming East (ftUS) <3736> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999374999999999 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wyoming East Central (ftUS) <3737> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999374999999999 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wyoming West Central (ftUS) <3738> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999374999999999 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Wyoming West (ftUS) <3739> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999374999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / UTM zone 10N <3740> +proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 11N <3741> +proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 12N <3742> +proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 13N <3743> +proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 14N <3744> +proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 15N <3745> +proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 16N <3746> +proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 17N <3747> +proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 18N <3748> +proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 19N <3749> +proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 4N <3750> +proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs <> # NAD83(HARN) / UTM zone 5N <3751> +proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs <> # WGS 84 / Mercator 41 <3752> +proj=merc +lon_0=100 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # NAD83(HARN) / Ohio North (ftUS) <3753> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Ohio South (ftUS) <3754> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wyoming East (ftUS) <3755> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999374999999999 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wyoming East Central (ftUS) <3756> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999374999999999 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wyoming West Central (ftUS) <3757> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999374999999999 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Wyoming West (ftUS) <3758> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999374999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Hawaii zone 3 (ftUS) <3759> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83(HARN) / Hawaii zone 3 (ftUS) <3760> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs <> # NAD83(CSRS) / UTM zone 22N <3761> +proj=utm +zone=22 +ellps=GRS80 +units=m +no_defs <> # WGS 84 / South Georgia Lambert <3762> +proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # Puerto Rico / UTM zone 20N <3920> +proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs <> # Puerto Rico State Plane CS of 1927 <3991> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # Puerto Rico / St. Croix <3992> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <> # Guam 1963 / Guam SPCS # Unable to translate coordinate system EPSG:3993 into PROJ.4 format. # # Pulkovo 1995 / Gauss-Kruger zone 4 <20004> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 5 <20005> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 6 <20006> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 7 <20007> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 8 <20008> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 9 <20009> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 10 <20010> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 11 <20011> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 12 <20012> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 13 <20013> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 14 <20014> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 15 <20015> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 16 <20016> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 17 <20017> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 18 <20018> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 19 <20019> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 20 <20020> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 21 <20021> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 22 <20022> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 23 <20023> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 24 <20024> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 25 <20025> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 26 <20026> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 27 <20027> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 28 <20028> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 29 <20029> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 30 <20030> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 31 <20031> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 32 <20032> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 4N (deprecated) <20064> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 5N (deprecated) <20065> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 6N (deprecated) <20066> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 7N (deprecated) <20067> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 8N (deprecated) <20068> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 9N (deprecated) <20069> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 10N (deprecated) <20070> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 11N (deprecated) <20071> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 12N (deprecated) <20072> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 13N (deprecated) <20073> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 14N (deprecated) <20074> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 15N (deprecated) <20075> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 16N (deprecated) <20076> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 17N (deprecated) <20077> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 18N (deprecated) <20078> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 19N (deprecated) <20079> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 20N (deprecated) <20080> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 21N (deprecated) <20081> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 22N (deprecated) <20082> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 23N (deprecated) <20083> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 24N (deprecated) <20084> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 25N (deprecated) <20085> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 26N (deprecated) <20086> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 27N (deprecated) <20087> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 28N (deprecated) <20088> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 29N (deprecated) <20089> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 30N (deprecated) <20090> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 31N (deprecated) <20091> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1995 / Gauss-Kruger 32N (deprecated) <20092> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Adindan / UTM zone 35N <20135> +proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs <> # Adindan / UTM zone 36N <20136> +proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs <> # Adindan / UTM zone 37N <20137> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs <> # Adindan / UTM zone 38N <20138> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs <> # AGD66 / AMG zone 48 <20248> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 49 <20249> +proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 50 <20250> +proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 51 <20251> +proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 52 <20252> +proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 53 <20253> +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 54 <20254> +proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 55 <20255> +proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 56 <20256> +proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 57 <20257> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs <> # AGD66 / AMG zone 58 <20258> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 48 <20348> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 49 <20349> +proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 50 <20350> +proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 51 <20351> +proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 52 <20352> +proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 53 <20353> +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 54 <20354> +proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 55 <20355> +proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 56 <20356> +proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 57 <20357> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs <> # AGD84 / AMG zone 58 <20358> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs <> # Ain el Abd / UTM zone 36N <20436> +proj=utm +zone=36 +ellps=intl +units=m +no_defs <> # Ain el Abd / UTM zone 37N <20437> +proj=utm +zone=37 +ellps=intl +units=m +no_defs <> # Ain el Abd / UTM zone 38N <20438> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <> # Ain el Abd / UTM zone 39N <20439> +proj=utm +zone=39 +ellps=intl +units=m +no_defs <> # Ain el Abd / UTM zone 40N <20440> +proj=utm +zone=40 +ellps=intl +units=m +no_defs <> # Ain el Abd / Bahrain Grid <20499> +proj=utm +zone=39 +ellps=intl +units=m +no_defs <> # Afgooye / UTM zone 38N <20538> +proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs <> # Afgooye / UTM zone 39N <20539> +proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs <> # Lisbon (Lisbon)/Portuguese National Grid <20790> +proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m +no_defs <> # Lisbon (Lisbon)/Portuguese Grid <20791> +proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m +no_defs <> # Aratu / UTM zone 22S <20822> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs <> # Aratu / UTM zone 23S <20823> +proj=utm +zone=23 +south +ellps=intl +units=m +no_defs <> # Aratu / UTM zone 24S <20824> +proj=utm +zone=24 +south +ellps=intl +units=m +no_defs <> # Arc 1950 / UTM zone 34S <20934> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398754 +units=m +no_defs <> # Arc 1950 / UTM zone 35S <20935> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398754 +units=m +no_defs <> # Arc 1950 / UTM zone 36S <20936> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398754 +units=m +no_defs <> # Arc 1960 / UTM zone 35S <21035> +proj=utm +zone=35 +south +ellps=clrk80 +units=m +no_defs <> # Arc 1960 / UTM zone 36S <21036> +proj=utm +zone=36 +south +ellps=clrk80 +units=m +no_defs <> # Arc 1960 / UTM zone 37S <21037> +proj=utm +zone=37 +south +ellps=clrk80 +units=m +no_defs <> # Arc 1960 / UTM zone 35N <21095> +proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs <> # Arc 1960 / UTM zone 36N <21096> +proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs <> # Arc 1960 / UTM zone 37N <21097> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs <> # Batavia (Jakarta) / NEIEZ (deprecated) <21100> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs <> # Batavia / UTM zone 48S <21148> +proj=utm +zone=48 +south +ellps=bessel +units=m +no_defs <> # Batavia / UTM zone 49S <21149> +proj=utm +zone=49 +south +ellps=bessel +units=m +no_defs <> # Batavia / UTM zone 50S <21150> +proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs <> # Barbados 1938 / British West Indies Grid <21291> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs <> # Barbados 1938 / Barbados National Grid <21292> +proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 13 <21413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 14 <21414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 15 <21415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 16 <21416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 17 <21417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 18 <21418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 19 <21419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 20 <21420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 21 <21421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 22 <21422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger zone 23 <21423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 75E <21453> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 81E <21454> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 87E <21455> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 93E <21456> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 99E <21457> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 105E <21458> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 111E <21459> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 117E <21460> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 123E <21461> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 129E <21462> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger CM 135E <21463> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 13N (deprecated) <21473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 14N (deprecated) <21474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 15N (deprecated) <21475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 16N (deprecated) <21476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 17N (deprecated) <21477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 18N (deprecated) <21478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 19N (deprecated) <21479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 20N (deprecated) <21480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 21N (deprecated) <21481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 22N (deprecated) <21482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Beijing 1954 / Gauss-Kruger 23N (deprecated) <21483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Belge 1950 (Brussels) / Belge Lambert 50 <21500> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs <> # Bern 1898 (Bern) / LV03C <21780> +proj=somerc +lat_0=46.95240555555556 +lon_0=0 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m +no_defs <> # CH1903 / LV03 <21781> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / UTM zone 17N (deprecated) <21817> +proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / UTM zone 18N <21818> +proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia West zone (deprecated) <21891> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia Bogota zone (deprecated) <21892> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia East Central zone (deprecated) <21893> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia East (deprecated) <21894> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia West zone <21896> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia Bogota zone <21897> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia East Central zone <21898> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Bogota 1975 / Colombia East <21899> +proj=tmerc +lat_0=4.599047222222223 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs <> # Camacupa / UTM zone 32S <22032> +proj=utm +zone=32 +south +ellps=clrk80 +units=m +no_defs <> # Camacupa / UTM zone 33S <22033> +proj=utm +zone=33 +south +ellps=clrk80 +units=m +no_defs <> # Camacupa / TM 11.30 SE <22091> +proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # Camacupa / TM 12 SE <22092> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs <> # POSGAR 98 / Argentina 1 <22171> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 98 / Argentina 2 <22172> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 98 / Argentina 3 <22173> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 98 / Argentina 4 <22174> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 98 / Argentina 5 <22175> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 98 / Argentina 6 <22176> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 98 / Argentina 7 <22177> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 1 <22181> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 2 <22182> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 3 <22183> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 4 <22184> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 5 <22185> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 6 <22186> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # POSGAR 94 / Argentina 7 <22187> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # Campo Inchauspe / Argentina 1 <22191> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Campo Inchauspe / Argentina 2 <22192> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Campo Inchauspe / Argentina 3 <22193> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Campo Inchauspe / Argentina 4 <22194> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Campo Inchauspe / Argentina 5 <22195> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Campo Inchauspe / Argentina 6 <22196> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Campo Inchauspe / Argentina 7 <22197> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Cape / UTM zone 34S <22234> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398754 +units=m +no_defs <> # Cape / UTM zone 35S <22235> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398754 +units=m +no_defs <> # Cape / UTM zone 36S <22236> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398754 +units=m +no_defs <> # Cape / Lo15 # Unable to translate coordinate system EPSG:22275 into PROJ.4 format. # # Cape / Lo17 # Unable to translate coordinate system EPSG:22277 into PROJ.4 format. # # Cape / Lo19 # Unable to translate coordinate system EPSG:22279 into PROJ.4 format. # # Cape / Lo21 # Unable to translate coordinate system EPSG:22281 into PROJ.4 format. # # Cape / Lo23 # Unable to translate coordinate system EPSG:22283 into PROJ.4 format. # # Cape / Lo25 # Unable to translate coordinate system EPSG:22285 into PROJ.4 format. # # Cape / Lo27 # Unable to translate coordinate system EPSG:22287 into PROJ.4 format. # # Cape / Lo29 # Unable to translate coordinate system EPSG:22289 into PROJ.4 format. # # Cape / Lo31 # Unable to translate coordinate system EPSG:22291 into PROJ.4 format. # # Cape / Lo33 # Unable to translate coordinate system EPSG:22293 into PROJ.4 format. # # Carthage (Paris) / Tunisia Mining Grid # Unable to translate coordinate system EPSG:22300 into PROJ.4 format. # # Carthage / UTM zone 32N <22332> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Carthage / Nord Tunisie <22391> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Carthage / Sud Tunisie <22392> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.9996257690000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Corrego Alegre / UTM zone 21S <22521> +proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> # Corrego Alegre / UTM zone 22S <22522> +proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> # Corrego Alegre / UTM zone 23S <22523> +proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> # Corrego Alegre / UTM zone 24S <22524> +proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> # Corrego Alegre / UTM zone 25S <22525> +proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs <> # Deir ez Zor / Levant Zone <22700> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Deir ez Zor / Syria Lambert <22770> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Deir ez Zor / Levant Stereographic <22780> +proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Douala / UTM zone 32N (deprecated) <22832> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Egypt 1907 / Blue Belt <22991> +proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m +no_defs <> # Egypt 1907 / Red Belt <22992> +proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +units=m +no_defs <> # Egypt 1907 / Purple Belt <22993> +proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +units=m +no_defs <> # Egypt 1907 / Extended Purple Belt <22994> +proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m +no_defs <> # ED50 / UTM zone 28N <23028> +proj=utm +zone=28 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 29N <23029> +proj=utm +zone=29 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 30N <23030> +proj=utm +zone=30 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 31N <23031> +proj=utm +zone=31 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 32N <23032> +proj=utm +zone=32 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 33N <23033> +proj=utm +zone=33 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 34N <23034> +proj=utm +zone=34 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 35N <23035> +proj=utm +zone=35 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 36N <23036> +proj=utm +zone=36 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 37N <23037> +proj=utm +zone=37 +ellps=intl +units=m +no_defs <> # ED50 / UTM zone 38N <23038> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <> # ED50 / TM 0 N <23090> +proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # ED50 / TM 5 NE <23095> +proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <> # Fahud / UTM zone 39N <23239> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> # Fahud / UTM zone 40N <23240> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> # Garoua / UTM zone 33N (deprecated) <23433> +proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs <> # HD72 / EOV <23700> +proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 46.2 <23830> +proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 47.1 <23831> +proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 47.2 <23832> +proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 48.1 <23833> +proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 48.2 <23834> +proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 49.1 <23835> +proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 49.2 <23836> +proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 50.1 <23837> +proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 50.2 <23838> +proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 51.1 <23839> +proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 51.2 <23840> +proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 52.1 <23841> +proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 52.2 <23842> +proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 53.1 <23843> +proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 53.2 <23844> +proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / Indonesia TM-3 zone 54.1 <23845> +proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ID74 / UTM zone 46N <23846> +proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 47N <23847> +proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 48N <23848> +proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 49N <23849> +proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 50N <23850> +proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 51N <23851> +proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 52N <23852> +proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 53N (deprecated) <23853> +proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # DGN95 / UTM zone 46N <23866> +proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 47N <23867> +proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 48N <23868> +proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 49N <23869> +proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 50N <23870> +proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 51N <23871> +proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 52N <23872> +proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 47S <23877> +proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 48S <23878> +proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 49S <23879> +proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 50S <23880> +proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 51S <23881> +proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 52S <23882> +proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 53S <23883> +proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # DGN95 / UTM zone 54S <23884> +proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # ID74 / UTM zone 46S (deprecated) <23886> +proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 47S <23887> +proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 48S <23888> +proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 49S <23889> +proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 50S <23890> +proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 51S <23891> +proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 52S <23892> +proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 53S <23893> +proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # ID74 / UTM zone 54S <23894> +proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs <> # Indian 1954 / UTM zone 46N <23946> +proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> # Indian 1954 / UTM zone 47N <23947> +proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> # Indian 1954 / UTM zone 48N <23948> +proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs <> # Indian 1975 / UTM zone 47N <24047> +proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Indian 1975 / UTM zone 48N <24048> +proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Jamaica 1875 / Jamaica (Old Grid) <24100> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +ellps=clrk80 +to_meter=0.3047972654 +no_defs <> # JAD69 / Jamaica National Grid <24200> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m +no_defs <> # Kalianpur 1937 / UTM zone 45N <24305> +proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Kalianpur 1937 / UTM zone 46N <24306> +proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Kalianpur 1962 / UTM zone 41N <24311> +proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs <> # Kalianpur 1962 / UTM zone 42N <24312> +proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs <> # Kalianpur 1962 / UTM zone 43N <24313> +proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs <> # Kalianpur 1975 / UTM zone 42N <24342> +proj=utm +zone=42 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / UTM zone 43N <24343> +proj=utm +zone=43 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / UTM zone 44N <24344> +proj=utm +zone=44 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / UTM zone 45N <24345> +proj=utm +zone=45 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / UTM zone 46N <24346> +proj=utm +zone=46 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / UTM zone 47N <24347> +proj=utm +zone=47 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1880 / India zone 0 <24370> +proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs <> # Kalianpur 1880 / India zone I <24371> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs <> # Kalianpur 1880 / India zone IIa <24372> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs <> # Kalianpur 1880 / India zone III <24373> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs <> # Kalianpur 1880 / India zone IV <24374> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs <> # Kalianpur 1937 / India zone IIb <24375> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs <> # Kalianpur 1962 / India zone I <24376> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs <> # Kalianpur 1962 / India zone IIa <24377> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs <> # Kalianpur 1975 / India zone I <24378> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / India zone IIa <24379> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / India zone IIb <24380> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1975 / India zone III <24381> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kalianpur 1880 / India zone IIb <24382> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs <> # Kalianpur 1975 / India zone IV <24383> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs <> # Kertau 1968 / Singapore Grid <24500> +proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> # Kertau 1968 / UTM zone 47N <24547> +proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> # Kertau 1968 / UTM zone 48N <24548> +proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs <> # Kertau / R.S.O. Malaya (ch) (deprecated) <24571> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.9998400000000001 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs <> # KOC Lambert <24600> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs <> # La Canoa / UTM zone 18N <24718> +proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> # La Canoa / UTM zone 19N <24719> +proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> # La Canoa / UTM zone 20N <24720> +proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs <> # PSAD56 / UTM zone 17N <24817> +proj=utm +zone=17 +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 18N <24818> +proj=utm +zone=18 +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 19N <24819> +proj=utm +zone=19 +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 20N <24820> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 21N <24821> +proj=utm +zone=21 +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 17S <24877> +proj=utm +zone=17 +south +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 18S <24878> +proj=utm +zone=18 +south +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 19S <24879> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 20S <24880> +proj=utm +zone=20 +south +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 21S <24881> +proj=utm +zone=21 +south +ellps=intl +units=m +no_defs <> # PSAD56 / UTM zone 22S <24882> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs <> # PSAD56 / Peru west zone <24891> +proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.9998300800000001 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m +no_defs <> # PSAD56 / Peru central zone <24892> +proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m +no_defs <> # PSAD56 / Peru east zone <24893> +proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.9995299200000001 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m +no_defs <> # Leigon / Ghana Metre Grid <25000> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs <> # Lome / UTM zone 31N <25231> +proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Luzon 1911 / Philippines zone I <25391> +proj=tmerc +lat_0=0 +lon_0=117 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Luzon 1911 / Philippines zone II <25392> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Luzon 1911 / Philippines zone III <25393> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Luzon 1911 / Philippines zone IV <25394> +proj=tmerc +lat_0=0 +lon_0=123 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Luzon 1911 / Philippines zone V <25395> +proj=tmerc +lat_0=0 +lon_0=125 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs <> # Makassar (Jakarta) / NEIEZ (deprecated) <25700> +proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs <> # ETRS89 / UTM zone 28N <25828> +proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 29N <25829> +proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 30N <25830> +proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 31N <25831> +proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 32N <25832> +proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 33N <25833> +proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 34N <25834> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 35N <25835> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 36N <25836> +proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 37N <25837> +proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / UTM zone 38N <25838> +proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs <> # ETRS89 / TM Baltic93 <25884> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # Malongo 1987 / UTM zone 32S <25932> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs <> # Merchich / Nord Maroc <26191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.9996257690000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> # Merchich / Sud Maroc <26192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> # Merchich / Sahara (deprecated) <26193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> # Merchich / Sahara Nord <26194> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> # Merchich / Sahara Sud <26195> +proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs <> # Massawa / UTM zone 37N <26237> +proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs <> # Minna / UTM zone 31N <26331> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs <> # Minna / UTM zone 32N <26332> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs <> # Minna / Nigeria West Belt <26391> +proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m +no_defs <> # Minna / Nigeria Mid Belt <26392> +proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m +no_defs <> # Minna / Nigeria East Belt <26393> +proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m +no_defs <> # Mhast / UTM zone 32S (deprecated) <26432> +proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs <> # Monte Mario (Rome) / Italy zone 1 (deprecated) <26591> +proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs <> # Monte Mario (Rome) / Italy zone 2 (deprecated) <26592> +proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs <> # M'poraloko / UTM zone 32N <26632> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs <> # M'poraloko / UTM zone 32S <26692> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs <> # NAD27 / UTM zone 1N <26701> +proj=utm +zone=1 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 2N <26702> +proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 3N <26703> +proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 4N <26704> +proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 5N <26705> +proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 6N <26706> +proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 7N <26707> +proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 8N <26708> +proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 9N <26709> +proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 10N <26710> +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 11N <26711> +proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 12N <26712> +proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 13N <26713> +proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 14N <26714> +proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 15N <26715> +proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 16N <26716> +proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 17N <26717> +proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 18N <26718> +proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 19N <26719> +proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 20N <26720> +proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 21N <26721> +proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / UTM zone 22N <26722> +proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / Alabama East <26729> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9999600000000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alabama West <26730> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333330000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 1 <26731> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 2 <26732> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 3 <26733> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 4 <26734> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 5 <26735> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 6 <26736> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 7 <26737> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 8 <26738> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 9 <26739> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Alaska zone 10 <26740> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone I <26741> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone II <26742> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone III <26743> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone IV <26744> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone V <26745> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone VI <26746> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone VII (deprecated) <26747> +proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Arizona East <26748> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Arizona Central <26749> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Arizona West <26750> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Arkansas North <26751> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Arkansas South <26752> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Colorado North <26753> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Colorado Central <26754> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Colorado South <26755> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Connecticut <26756> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Delaware <26757> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Florida East <26758> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Florida West <26759> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Florida North <26760> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Georgia East <26766> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Georgia West <26767> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Idaho East <26768> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Idaho Central <26769> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Idaho West <26770> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Illinois East <26771> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Illinois West <26772> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Indiana East <26773> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Indiana West <26774> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Iowa North <26775> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Iowa South <26776> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Kansas North <26777> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Kansas South <26778> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Kentucky North <26779> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Kentucky South <26780> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Louisiana North <26781> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Louisiana South <26782> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333331 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Maine East <26783> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Maine West <26784> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Maryland <26785> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Massachusetts Mainland <26786> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Massachusetts Island <26787> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Minnesota North <26791> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.10000000000001 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Minnesota Central <26792> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Minnesota South <26793> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Mississippi East <26794> +proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.9999600000000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Mississippi West <26795> +proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333331 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Missouri East <26796> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333330000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Missouri Central <26797> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333330000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Missouri West <26798> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / California zone VII <26799> +proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD Michigan / Michigan East <26801> +proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.9999428570000001 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548897 +b=6356826.621488445 +to_meter=0.3048006096012192 +no_defs <> # NAD Michigan / Michigan Old Central <26802> +proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548897 +b=6356826.621488445 +to_meter=0.3048006096012192 +no_defs <> # NAD Michigan / Michigan West <26803> +proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548897 +b=6356826.621488445 +to_meter=0.3048006096012192 +no_defs <> # NAD Michigan / Michigan North <26811> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548897 +b=6356826.621488445 +to_meter=0.3048006096012192 +no_defs <> # NAD Michigan / Michigan Central <26812> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548897 +b=6356826.621488445 +to_meter=0.3048006096012192 +no_defs <> # NAD Michigan / Michigan South <26813> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548897 +b=6356826.621488445 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / UTM zone 1N <26901> +proj=utm +zone=1 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 2N <26902> +proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 3N <26903> +proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 4N <26904> +proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 5N <26905> +proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 6N <26906> +proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 7N <26907> +proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 8N <26908> +proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 9N <26909> +proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 10N <26910> +proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 11N <26911> +proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 12N <26912> +proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 13N <26913> +proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 14N <26914> +proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 15N <26915> +proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 16N <26916> +proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 17N <26917> +proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 18N <26918> +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 19N <26919> +proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 20N <26920> +proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 21N <26921> +proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 22N <26922> +proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / UTM zone 23N <26923> +proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alabama East <26929> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9999600000000001 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alabama West <26930> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.9999333330000001 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 1 <26931> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 2 <26932> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 3 <26933> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 4 <26934> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 5 <26935> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 6 <26936> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 7 <26937> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 8 <26938> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 9 <26939> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Alaska zone 10 <26940> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / California zone 1 <26941> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / California zone 2 <26942> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / California zone 3 <26943> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / California zone 4 <26944> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / California zone 5 <26945> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / California zone 6 <26946> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Arizona East <26948> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Arizona Central <26949> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Arizona West <26950> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Arkansas North <26951> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Arkansas South <26952> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Colorado North <26953> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Colorado Central <26954> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Colorado South <26955> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289000001 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Connecticut <26956> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Delaware <26957> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Florida East <26958> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Florida West <26959> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Florida North <26960> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Hawaii zone 1 <26961> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Hawaii zone 2 <26962> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Hawaii zone 3 <26963> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Hawaii zone 4 <26964> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Hawaii zone 5 <26965> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Georgia East <26966> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Georgia West <26967> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Idaho East <26968> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473680000001 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Idaho Central <26969> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473680000001 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Idaho West <26970> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.9999333330000001 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Illinois East <26971> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Illinois West <26972> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666669 +k=0.9999411770000001 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Indiana East <26973> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Indiana West <26974> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Iowa North <26975> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Iowa South <26976> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Kansas North <26977> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Kansas South <26978> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Kentucky North (deprecated) <26979> +proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Kentucky South <26980> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Louisiana North <26981> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Louisiana South <26982> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333331 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Maine East <26983> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Maine West <26984> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Maryland <26985> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Massachusetts Mainland <26986> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Massachusetts Island <26987> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Michigan North <26988> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Michigan Central <26989> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Michigan South <26990> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Minnesota North <26991> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.10000000000001 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Minnesota Central <26992> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Minnesota South <26993> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Mississippi East <26994> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9999500000000001 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Mississippi West <26995> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333331 +k=0.9999500000000001 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Missouri East <26996> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9999333330000001 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Missouri Central <26997> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9999333330000001 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Missouri West <26998> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9999411770000001 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 37N <27037> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 38N <27038> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 39N <27039> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs <> # Nahrwan 1967 / UTM zone 40N <27040> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs <> # Naparima 1972 / UTM zone 20N <27120> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <> # NZGD49 / New Zealand Map Grid <27200> +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Mount Eden Circuit <27205> +proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Bay of Plenty Circuit <27206> +proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Poverty Bay Circuit <27207> +proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Hawkes Bay Circuit <27208> +proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Taranaki Circuit <27209> +proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Tuhirangi Circuit <27210> +proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Wanganui Circuit <27211> +proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Wairarapa Circuit <27212> +proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Wellington Circuit <27213> +proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Collingwood Circuit <27214> +proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Nelson Circuit <27215> +proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Karamea Circuit <27216> +proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Buller Circuit <27217> +proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Grey Circuit <27218> +proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Amuri Circuit <27219> +proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Marlborough Circuit <27220> +proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Hokitika Circuit <27221> +proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Okarito Circuit <27222> +proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Jacksons Bay Circuit <27223> +proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Mount Pleasant Circuit <27224> +proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Gawler Circuit <27225> +proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Timaru Circuit <27226> +proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Lindis Peak Circuit <27227> +proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Mount Nicholas Circuit <27228> +proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Mount York Circuit <27229> +proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Observation Point Circuit <27230> +proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / North Taieri Circuit <27231> +proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.9999600000000001 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / Bluff Circuit <27232> +proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / UTM zone 58S <27258> +proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / UTM zone 59S <27259> +proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / UTM zone 60S <27260> +proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m +no_defs <> # NZGD49 / North Island Grid <27291> +proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464115 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160288 +no_defs <> # NZGD49 / South Island Grid <27292> +proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080144 +y_0=457199.2073080144 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160288 +no_defs <> # NGO 1948 (Oslo) / NGO zone I <27391> +proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone II <27392> +proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone III <27393> +proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone IV <27394> +proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone V <27395> +proj=tmerc +lat_0=58 +lon_0=6.166666666666668 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone VI <27396> +proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone VII <27397> +proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # NGO 1948 (Oslo) / NGO zone VIII <27398> +proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs <> # Datum 73 / UTM zone 29N <27429> +proj=utm +zone=29 +ellps=intl +units=m +no_defs <> # Datum 73 / Modified Portuguese Grid <27492> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs <> # ATF (Paris) / Nord de Guerre <27500> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert Nord France <27561> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert Centre France <27562> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert Sud France <27563> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.9998774990000001 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert Corse <27564> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.9999447100000001 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert zone I <27571> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert zone II <27572> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert zone III <27573> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.9998774990000001 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Lambert zone IV <27574> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.9999447100000001 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / France I (deprecated) <27581> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / France II (deprecated) <27582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / France III (deprecated) <27583> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.9998774990000001 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / France IV (deprecated) <27584> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.9999447100000001 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Nord France (deprecated) <27591> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Centre France (deprecated) <27592> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Sud France (deprecated) <27593> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.9998774990000001 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # NTF (Paris) / Corse (deprecated) <27594> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.9999447100000001 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs <> # OSGB 1936 / British National Grid <27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs <> # Palestine 1923 / Palestine Grid <28191> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs <> # Palestine 1923 / Palestine Belt <28192> +proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs <> # Palestine 1923 / Israeli CS Grid <28193> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs <> # Pointe Noire / UTM zone 32S <28232> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs <> # GDA94 / MGA zone 48 <28348> +proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 49 <28349> +proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 50 <28350> +proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 51 <28351> +proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 52 <28352> +proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 53 <28353> +proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 54 <28354> +proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 55 <28355> +proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 56 <28356> +proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 57 <28357> +proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # GDA94 / MGA zone 58 <28358> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 2 <28402> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 3 <28403> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 4 <28404> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 5 <28405> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 6 <28406> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 7 <28407> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 8 <28408> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 9 <28409> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 10 <28410> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 11 <28411> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 12 <28412> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 13 <28413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 14 <28414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 15 <28415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 16 <28416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 17 <28417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 18 <28418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 19 <28419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 20 <28420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 21 <28421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 22 <28422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 23 <28423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 24 <28424> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 25 <28425> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 26 <28426> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 27 <28427> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 28 <28428> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 29 <28429> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 30 <28430> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 31 <28431> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 32 <28432> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 2N (deprecated) <28462> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 3N (deprecated) <28463> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 4N (deprecated) <28464> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 5N (deprecated) <28465> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 6N (deprecated) <28466> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 7N (deprecated) <28467> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 8N (deprecated) <28468> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 9N (deprecated) <28469> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 10N (deprecated) <28470> +proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 11N (deprecated) <28471> +proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 12N (deprecated) <28472> +proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 13N (deprecated) <28473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 14N (deprecated) <28474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 15N (deprecated) <28475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 16N (deprecated) <28476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 17N (deprecated) <28477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 18N (deprecated) <28478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 19N (deprecated) <28479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 20N (deprecated) <28480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 21N (deprecated) <28481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 22N (deprecated) <28482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 23N (deprecated) <28483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 24N (deprecated) <28484> +proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 25N (deprecated) <28485> +proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 26N (deprecated) <28486> +proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 27N (deprecated) <28487> +proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 28N (deprecated) <28488> +proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 29N (deprecated) <28489> +proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 30N (deprecated) <28490> +proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 31N (deprecated) <28491> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Pulkovo 1942 / Gauss-Kruger 32N (deprecated) <28492> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs <> # Qatar 1974 / Qatar National Grid <28600> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs <> # Amersfoort / RD Old <28991> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Amersfoort / RD New <28992> +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs <> # SAD69 / Brazil Polyconic (deprecated) <29100> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m +no_defs <> # SAD69 / Brazil Polyconic <29101> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 18N (deprecated) <29118> +proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 19N (deprecated) <29119> +proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 20N (deprecated) <29120> +proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 21N (deprecated) <29121> +proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 22N (deprecated) <29122> +proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 18N <29168> +proj=utm +zone=18 +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 19N <29169> +proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 20N <29170> +proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 21N <29171> +proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 22N <29172> +proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 17S (deprecated) <29177> +proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 18S (deprecated) <29178> +proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 19S (deprecated) <29179> +proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 20S (deprecated) <29180> +proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 21S (deprecated) <29181> +proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 22S (deprecated) <29182> +proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 23S (deprecated) <29183> +proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 24S (deprecated) <29184> +proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 25S (deprecated) <29185> +proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs <> # SAD69 / UTM zone 17S <29187> +proj=utm +zone=17 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 18S <29188> +proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 19S <29189> +proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 20S <29190> +proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 21S <29191> +proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 22S <29192> +proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 23S <29193> +proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 24S <29194> +proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs <> # SAD69 / UTM zone 25S <29195> +proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs <> # Sapper Hill 1943 / UTM zone 20S <29220> +proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs <> # Sapper Hill 1943 / UTM zone 21S <29221> +proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs <> # Schwarzeck / UTM zone 33S <29333> +proj=utm +zone=33 +south +ellps=bess_nam +units=m +no_defs <> # Schwarzeck / Lo22/11 # Unable to translate coordinate system EPSG:29371 into PROJ.4 format. # # Schwarzeck / Lo22/13 # Unable to translate coordinate system EPSG:29373 into PROJ.4 format. # # Schwarzeck / Lo22/15 # Unable to translate coordinate system EPSG:29375 into PROJ.4 format. # # Schwarzeck / Lo22/17 # Unable to translate coordinate system EPSG:29377 into PROJ.4 format. # # Schwarzeck / Lo22/19 # Unable to translate coordinate system EPSG:29379 into PROJ.4 format. # # Schwarzeck / Lo22/21 # Unable to translate coordinate system EPSG:29381 into PROJ.4 format. # # Schwarzeck / Lo22/23 # Unable to translate coordinate system EPSG:29383 into PROJ.4 format. # # Schwarzeck / Lo22/25 # Unable to translate coordinate system EPSG:29385 into PROJ.4 format. # # Sudan / UTM zone 35N (deprecated) <29635> +proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Sudan / UTM zone 36N (deprecated) <29636> +proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Tananarive (Paris) / Laborde Grid (deprecated) <29700> +proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> # Tananarive (Paris) / Laborde Grid # Unable to translate coordinate system EPSG:29701 into PROJ.4 format. # # Tananarive (Paris) / Laborde Grid approximation <29702> +proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs <> # Tananarive / UTM zone 38S <29738> +proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs <> # Tananarive / UTM zone 39S <29739> +proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs <> # Timbalai 1948 / UTM zone 49N <29849> +proj=utm +zone=49 +ellps=evrstSS +units=m +no_defs <> # Timbalai 1948 / UTM zone 50N <29850> +proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs <> # Timbalai 1948 / RSO Borneo (ch) <29871> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.9998400000000001 +x_0=590476.8714630402 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs <> # Timbalai 1948 / RSO Borneo (ft) <29872> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.9998400000000001 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762 +no_defs <> # Timbalai 1948 / RSO Borneo (m) <29873> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.9998400000000001 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m +no_defs <> # TM65 / Irish National Grid (deprecated) <29900> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs <> # OSNI 1952 / Irish National Grid <29901> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs <> # TM65 / Irish Grid <29902> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs <> # TM75 / Irish Grid <29903> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS I <30161> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS II <30162> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS III <30163> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS IV <30164> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS V <30165> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS VI <30166> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS VII <30167> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS VIII <30168> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS IX <30169> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS X <30170> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XI <30171> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XII <30172> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XIII <30173> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XIV <30174> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XV <30175> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XVI <30176> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XVII <30177> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XVIII <30178> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Tokyo / Japan Plane Rectangular CS XIX <30179> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs <> # Trinidad 1903 / Trinidad Grid <30200> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs <> # TC(1948) / UTM zone 39N <30339> +proj=utm +zone=39 +ellps=helmert +units=m +no_defs <> # TC(1948) / UTM zone 40N <30340> +proj=utm +zone=40 +ellps=helmert +units=m +no_defs <> # Voirol 1875 / Nord Algerie (ancienne) <30491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs <> # Voirol 1875 / Sud Algerie (ancienne) <30492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996257690000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs <> # Voirol 1879 / Nord Algerie (ancienne) <30493> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Voirol 1879 / Sud Algerie (ancienne) <30494> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996257690000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 29N <30729> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 30N <30730> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 31N <30731> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs <> # Nord Sahara 1959 / UTM zone 32N <30732> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs <> # Nord Sahara 1959 / Voirol Unifie Nord <30791> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> # Nord Sahara 1959 / Voirol Unifie Sud <30792> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996257690000001 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs <> # RT38 2.5 gon W (deprecated) <30800> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs <> # Yoff / UTM zone 28N <31028> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs <> # Zanderij / UTM zone 21N <31121> +proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> # Zanderij / TM 54 NW <31154> +proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> # Zanderij / Suriname Old TM <31170> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> # Zanderij / Suriname TM <31171> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs <> # MGI (Ferro) / Austria GK West Zone <31251> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria GK Central Zone <31252> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria GK East Zone <31253> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI / Austria GK West <31254> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria GK Central <31255> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria GK East <31256> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria GK M28 <31257> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria GK M31 <31258> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria GK M34 <31259> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / 3-degree Gauss zone 5 (deprecated) <31265> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / 3-degree Gauss zone 6 (deprecated) <31266> +proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / 3-degree Gauss zone 7 (deprecated) <31267> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / 3-degree Gauss zone 8 (deprecated) <31268> +proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Balkans zone 5 <31275> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Balkans zone 6 <31276> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Balkans zone 7 <31277> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Balkans zone 8 (deprecated) <31278> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Balkans zone 8 <31279> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI (Ferro) / Austria West Zone <31281> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria Central Zone <31282> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria East Zone <31283> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI / Austria M28 <31284> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria M31 <31285> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria M34 <31286> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria Lambert <31287> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI (Ferro) / M28 <31288> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / M31 <31289> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / M34 <31290> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria West Zone (deprecated) <31291> +proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria Central Zone (deprecated) <31292> +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI (Ferro) / Austria East Zone (deprecated) <31293> +proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <> # MGI / M28 (deprecated) <31294> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / M31 (deprecated) <31295> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / M34 (deprecated) <31296> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # MGI / Austria Lambert (deprecated) <31297> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <> # Belge 1972 / Belge Lambert 72 <31300> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs <> # Belge 1972 / Belgian Lambert 72 <31370> +proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-99.1,53.3,-112.5,0.419,-0.83,1.885,-1.0 +units=m +no_defs <> # DHDN / 3-degree Gauss zone 1 (deprecated) <31461> +proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / 3-degree Gauss zone 2 (deprecated) <31462> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / 3-degree Gauss zone 3 (deprecated) <31463> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / 3-degree Gauss zone 4 (deprecated) <31464> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / 3-degree Gauss zone 5 (deprecated) <31465> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / Gauss-Kruger zone 2 <31466> +proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / Gauss-Kruger zone 3 <31467> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / Gauss-Kruger zone 4 <31468> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # DHDN / Gauss-Kruger zone 5 <31469> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <> # Conakry 1905 / UTM zone 28N <31528> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> # Conakry 1905 / UTM zone 29N <31529> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <> # Dealul Piscului 1933/ Stereo 33 <31600> +proj=sterea +lat_0=45.90000000000001 +lon_0=25.39246588888889 +k=0.9996666999999999 +x_0=500000 +y_0=500000 +ellps=intl +units=m +no_defs <> # Dealul Piscului 1970/ Stereo 70 <31700> +proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m +no_defs <> # NGN / UTM zone 38N <31838> +proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs <> # NGN / UTM zone 39N <31839> +proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs <> # KUDAMS / KTM (deprecated) <31900> +proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # KUDAMS / KTM <31901> +proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 11N <31965> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 12N <31966> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 13N <31967> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 14N <31968> +proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 15N <31969> +proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 16N <31970> +proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 17N <31971> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 18N <31972> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 19N <31973> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 20N <31974> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 21N <31975> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 22N <31976> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 17S <31977> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 18S <31978> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 19S <31979> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 20S <31980> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 21S <31981> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 22S <31982> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 23S <31983> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 24S <31984> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS 2000 / UTM zone 25S <31985> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 17N <31986> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 18N <31987> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 19N <31988> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 20N <31989> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 21N <31990> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 22N <31991> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 17S <31992> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 18S <31993> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 19S <31994> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 20S <31995> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 21S <31996> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 22S <31997> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 23S <31998> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 24S <31999> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # SIRGAS / UTM zone 25S <32000> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <> # NAD27 / Montana North <32001> +proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Montana Central <32002> +proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Montana South <32003> +proj=lcc +lat_1=46.40000000000001 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Nebraska North <32005> +proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Nebraska South <32006> +proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Nevada East <32007> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Nevada Central <32008> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Nevada West <32009> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New Hampshire <32010> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New Jersey <32011> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New Mexico East <32012> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New Mexico Central <32013> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New Mexico West <32014> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New York East <32015> +proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New York Central <32016> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New York West <32017> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / New York Long Island <32018> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / North Carolina <32019> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / North Dakota North <32020> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / North Dakota South <32021> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Ohio North <32022> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Ohio South <32023> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Oklahoma North <32024> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Oklahoma South <32025> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Oregon North <32026> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Oregon South <32027> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Pennsylvania North <32028> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Pennsylvania South <32029> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Rhode Island <32030> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999937999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / South Carolina North <32031> +proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / South Carolina South <32033> +proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / South Dakota North <32034> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / South Dakota South <32035> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.40000000000001 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Tennessee (deprecated) <32036> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Texas North <32037> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Texas North Central <32038> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Texas Central <32039> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Texas South Central <32040> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Texas South <32041> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Utah North <32042> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Utah Central <32043> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Utah South <32044> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Vermont <32045> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642860000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Virginia North <32046> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Virginia South <32047> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Washington North <32048> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Washington South <32049> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / West Virginia North <32050> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / West Virginia South <32051> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wisconsin North <32052> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wisconsin Central <32053> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wisconsin South <32054> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wyoming East <32055> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wyoming East Central <32056> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wyoming West Central <32057> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Wyoming West <32058> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.9999411770000001 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / Guatemala Norte <32061> +proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333331 +k_0=0.9999222600000001 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / Guatemala Sur <32062> +proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333331 +k_0=0.9998990600000001 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / BLM 14N (ftUS) <32064> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 15N (ftUS) <32065> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 16N (ftUS) <32066> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 17N (ftUS) <32067> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 14N (feet) (deprecated) <32074> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 15N (feet) (deprecated) <32075> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 16N (feet) (deprecated) <32076> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / BLM 17N (feet) (deprecated) <32077> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD27 / MTM zone 1 <32081> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / MTM zone 2 <32082> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / MTM zone 3 <32083> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / MTM zone 4 <32084> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / MTM zone 5 <32085> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / MTM zone 6 <32086> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / Quebec Lambert <32098> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <> # NAD27 / Louisiana Offshore <32099> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333331 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / Montana <32100> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Nebraska <32104> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Nevada East <32107> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Nevada Central <32108> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Nevada West <32109> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New Hampshire <32110> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New Jersey <32111> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New Mexico East <32112> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New Mexico Central <32113> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New Mexico West <32114> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New York East <32115> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New York Central <32116> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999374999999999 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New York West <32117> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999374999999999 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / New York Long Island <32118> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / North Carolina <32119> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / North Dakota North <32120> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / North Dakota South <32121> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Ohio North <32122> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Ohio South <32123> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Oklahoma North <32124> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Oklahoma South <32125> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Oregon North <32126> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Oregon South <32127> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Pennsylvania North <32128> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Pennsylvania South <32129> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Rhode Island <32130> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / South Carolina <32133> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / South Dakota North <32134> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / South Dakota South <32135> +proj=lcc +lat_1=44.40000000000001 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Tennessee <32136> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas North <32137> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas North Central <32138> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas Central <32139> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas South Central <32140> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Texas South <32141> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Utah North <32142> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Utah Central <32143> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Utah South <32144> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Vermont <32145> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.9999642860000001 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Virginia North <32146> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Virginia South <32147> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Washington North <32148> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Washington South <32149> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / West Virginia North <32150> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / West Virginia South <32151> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wisconsin North <32152> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wisconsin Central <32153> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wisconsin South <32154> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wyoming East <32155> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999374999999999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wyoming East Central <32156> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999374999999999 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wyoming West Central <32157> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999374999999999 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Wyoming West <32158> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999374999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Puerto Rico & Virgin Is. <32161> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / BLM 14N (ftUS) <32164> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / BLM 15N (ftUS) <32165> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / BLM 16N (ftUS) <32166> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / BLM 17N (ftUS) <32167> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <> # NAD83 / SCoPQ zone 2 <32180> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 1 <32181> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 2 <32182> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 3 <32183> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 4 <32184> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 5 <32185> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 6 <32186> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 7 <32187> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 8 <32188> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 9 <32189> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 10 <32190> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 11 <32191> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 12 <32192> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 13 <32193> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 14 <32194> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 15 <32195> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 16 <32196> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / MTM zone 17 <32197> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Quebec Lambert <32198> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # NAD83 / Louisiana Offshore <32199> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333331 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <> # WGS 72 / UTM zone 1N <32201> +proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 2N <32202> +proj=utm +zone=2 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 3N <32203> +proj=utm +zone=3 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 4N <32204> +proj=utm +zone=4 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 5N <32205> +proj=utm +zone=5 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 6N <32206> +proj=utm +zone=6 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 7N <32207> +proj=utm +zone=7 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 8N <32208> +proj=utm +zone=8 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 9N <32209> +proj=utm +zone=9 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 10N <32210> +proj=utm +zone=10 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 11N <32211> +proj=utm +zone=11 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 12N <32212> +proj=utm +zone=12 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 13N <32213> +proj=utm +zone=13 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 14N <32214> +proj=utm +zone=14 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 15N <32215> +proj=utm +zone=15 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 16N <32216> +proj=utm +zone=16 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 17N <32217> +proj=utm +zone=17 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 18N <32218> +proj=utm +zone=18 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 19N <32219> +proj=utm +zone=19 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 20N <32220> +proj=utm +zone=20 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 21N <32221> +proj=utm +zone=21 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 22N <32222> +proj=utm +zone=22 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 23N <32223> +proj=utm +zone=23 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 24N <32224> +proj=utm +zone=24 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 25N <32225> +proj=utm +zone=25 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 26N <32226> +proj=utm +zone=26 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 27N <32227> +proj=utm +zone=27 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 28N <32228> +proj=utm +zone=28 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 29N <32229> +proj=utm +zone=29 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 30N <32230> +proj=utm +zone=30 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 31N <32231> +proj=utm +zone=31 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 32N <32232> +proj=utm +zone=32 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 33N <32233> +proj=utm +zone=33 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 34N <32234> +proj=utm +zone=34 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 35N <32235> +proj=utm +zone=35 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 36N <32236> +proj=utm +zone=36 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 37N <32237> +proj=utm +zone=37 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 38N <32238> +proj=utm +zone=38 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 39N <32239> +proj=utm +zone=39 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 40N <32240> +proj=utm +zone=40 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 41N <32241> +proj=utm +zone=41 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 42N <32242> +proj=utm +zone=42 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 43N <32243> +proj=utm +zone=43 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 44N <32244> +proj=utm +zone=44 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 45N <32245> +proj=utm +zone=45 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 46N <32246> +proj=utm +zone=46 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 47N <32247> +proj=utm +zone=47 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 48N <32248> +proj=utm +zone=48 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 49N <32249> +proj=utm +zone=49 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 50N <32250> +proj=utm +zone=50 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 51N <32251> +proj=utm +zone=51 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 52N <32252> +proj=utm +zone=52 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 53N <32253> +proj=utm +zone=53 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 54N <32254> +proj=utm +zone=54 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 55N <32255> +proj=utm +zone=55 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 56N <32256> +proj=utm +zone=56 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 57N <32257> +proj=utm +zone=57 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 58N <32258> +proj=utm +zone=58 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 59N <32259> +proj=utm +zone=59 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 60N <32260> +proj=utm +zone=60 +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 1S <32301> +proj=utm +zone=1 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 2S <32302> +proj=utm +zone=2 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 3S <32303> +proj=utm +zone=3 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 4S <32304> +proj=utm +zone=4 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 5S <32305> +proj=utm +zone=5 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 6S <32306> +proj=utm +zone=6 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 7S <32307> +proj=utm +zone=7 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 8S <32308> +proj=utm +zone=8 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 9S <32309> +proj=utm +zone=9 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 10S <32310> +proj=utm +zone=10 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 11S <32311> +proj=utm +zone=11 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 12S <32312> +proj=utm +zone=12 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 13S <32313> +proj=utm +zone=13 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 14S <32314> +proj=utm +zone=14 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 15S <32315> +proj=utm +zone=15 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 16S <32316> +proj=utm +zone=16 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 17S <32317> +proj=utm +zone=17 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 18S <32318> +proj=utm +zone=18 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 19S <32319> +proj=utm +zone=19 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 20S <32320> +proj=utm +zone=20 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 21S <32321> +proj=utm +zone=21 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 22S <32322> +proj=utm +zone=22 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 23S <32323> +proj=utm +zone=23 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 24S <32324> +proj=utm +zone=24 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 25S <32325> +proj=utm +zone=25 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 26S <32326> +proj=utm +zone=26 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 27S <32327> +proj=utm +zone=27 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 28S <32328> +proj=utm +zone=28 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 29S <32329> +proj=utm +zone=29 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 30S <32330> +proj=utm +zone=30 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 31S <32331> +proj=utm +zone=31 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 32S <32332> +proj=utm +zone=32 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 33S <32333> +proj=utm +zone=33 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 34S <32334> +proj=utm +zone=34 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 35S <32335> +proj=utm +zone=35 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 36S <32336> +proj=utm +zone=36 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 37S <32337> +proj=utm +zone=37 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 38S <32338> +proj=utm +zone=38 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 39S <32339> +proj=utm +zone=39 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 40S <32340> +proj=utm +zone=40 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 41S <32341> +proj=utm +zone=41 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 42S <32342> +proj=utm +zone=42 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 43S <32343> +proj=utm +zone=43 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 44S <32344> +proj=utm +zone=44 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 45S <32345> +proj=utm +zone=45 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 46S <32346> +proj=utm +zone=46 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 47S <32347> +proj=utm +zone=47 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 48S <32348> +proj=utm +zone=48 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 49S <32349> +proj=utm +zone=49 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 50S <32350> +proj=utm +zone=50 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 51S <32351> +proj=utm +zone=51 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 52S <32352> +proj=utm +zone=52 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 53S <32353> +proj=utm +zone=53 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 54S <32354> +proj=utm +zone=54 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 55S <32355> +proj=utm +zone=55 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 56S <32356> +proj=utm +zone=56 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 57S <32357> +proj=utm +zone=57 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 58S <32358> +proj=utm +zone=58 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 59S <32359> +proj=utm +zone=59 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72 / UTM zone 60S <32360> +proj=utm +zone=60 +south +ellps=WGS72 +units=m +no_defs <> # WGS 72BE / UTM zone 1N <32401> +proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 2N <32402> +proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 3N <32403> +proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 4N <32404> +proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 5N <32405> +proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 6N <32406> +proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 7N <32407> +proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 8N <32408> +proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 9N <32409> +proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 10N <32410> +proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 11N <32411> +proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 12N <32412> +proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 13N <32413> +proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 14N <32414> +proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 15N <32415> +proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 16N <32416> +proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 17N <32417> +proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 18N <32418> +proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 19N <32419> +proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 20N <32420> +proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 21N <32421> +proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 22N <32422> +proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 23N <32423> +proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 24N <32424> +proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 25N <32425> +proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 26N <32426> +proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 27N <32427> +proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 28N <32428> +proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 29N <32429> +proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 30N <32430> +proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 31N <32431> +proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 32N <32432> +proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 33N <32433> +proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 34N <32434> +proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 35N <32435> +proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 36N <32436> +proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 37N <32437> +proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 38N <32438> +proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 39N <32439> +proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 40N <32440> +proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 41N <32441> +proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 42N <32442> +proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 43N <32443> +proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 44N <32444> +proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 45N <32445> +proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 46N <32446> +proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 47N <32447> +proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 48N <32448> +proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 49N <32449> +proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 50N <32450> +proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 51N <32451> +proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 52N <32452> +proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 53N <32453> +proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 54N <32454> +proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 55N <32455> +proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 56N <32456> +proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 57N <32457> +proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 58N <32458> +proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 59N <32459> +proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 60N <32460> +proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 1S <32501> +proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 2S <32502> +proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 3S <32503> +proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 4S <32504> +proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 5S <32505> +proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 6S <32506> +proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 7S <32507> +proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 8S <32508> +proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 9S <32509> +proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 10S <32510> +proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 11S <32511> +proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 12S <32512> +proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 13S <32513> +proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 14S <32514> +proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 15S <32515> +proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 16S <32516> +proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 17S <32517> +proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 18S <32518> +proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 19S <32519> +proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 20S <32520> +proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 21S <32521> +proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 22S <32522> +proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 23S <32523> +proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 24S <32524> +proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 25S <32525> +proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 26S <32526> +proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 27S <32527> +proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 28S <32528> +proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 29S <32529> +proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 30S <32530> +proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 31S <32531> +proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 32S <32532> +proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 33S <32533> +proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 34S <32534> +proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 35S <32535> +proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 36S <32536> +proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 37S <32537> +proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 38S <32538> +proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 39S <32539> +proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 40S <32540> +proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 41S <32541> +proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 42S <32542> +proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 43S <32543> +proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 44S <32544> +proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 45S <32545> +proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 46S <32546> +proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 47S <32547> +proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 48S <32548> +proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 49S <32549> +proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 50S <32550> +proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 51S <32551> +proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 52S <32552> +proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 53S <32553> +proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 54S <32554> +proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 55S <32555> +proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 56S <32556> +proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 57S <32557> +proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 58S <32558> +proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 59S <32559> +proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 72BE / UTM zone 60S <32560> +proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <> # WGS 84 / UTM grid system (northern hemisphere) # Unable to translate coordinate system EPSG:32600 into PROJ.4 format. # # WGS 84 / UTM zone 1N <32601> +proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 2N <32602> +proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 3N <32603> +proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 4N <32604> +proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 5N <32605> +proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 6N <32606> +proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 7N <32607> +proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 8N <32608> +proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 9N <32609> +proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 10N <32610> +proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 11N <32611> +proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 12N <32612> +proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 13N <32613> +proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 14N <32614> +proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 15N <32615> +proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 16N <32616> +proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 17N <32617> +proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 18N <32618> +proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 19N <32619> +proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 20N <32620> +proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 21N <32621> +proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 22N <32622> +proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 23N <32623> +proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 24N <32624> +proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 25N <32625> +proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 26N <32626> +proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 27N <32627> +proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 28N <32628> +proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 29N <32629> +proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 30N <32630> +proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 31N <32631> +proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 32N <32632> +proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 33N <32633> +proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 34N <32634> +proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 35N <32635> +proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 36N <32636> +proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 37N <32637> +proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 38N <32638> +proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 39N <32639> +proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 40N <32640> +proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 41N <32641> +proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 42N <32642> +proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 43N <32643> +proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 44N <32644> +proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 45N <32645> +proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 46N <32646> +proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 47N <32647> +proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 48N <32648> +proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 49N <32649> +proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 50N <32650> +proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 51N <32651> +proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 52N <32652> +proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 53N <32653> +proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 54N <32654> +proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 55N <32655> +proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 56N <32656> +proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 57N <32657> +proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 58N <32658> +proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 59N <32659> +proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 60N <32660> +proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UPS North <32661> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / Plate Carree <32662> +proj=eqc +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / BLM 14N (ftUS) <32664> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs <> # WGS 84 / BLM 15N (ftUS) <32665> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs <> # WGS 84 / BLM 16N (ftUS) <32666> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs <> # WGS 84 / BLM 17N (ftUS) <32667> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs <> # WGS 84 / UTM grid system (southern hemisphere) # Unable to translate coordinate system EPSG:32700 into PROJ.4 format. # # WGS 84 / UTM zone 1S <32701> +proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 2S <32702> +proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 3S <32703> +proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 4S <32704> +proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 5S <32705> +proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 6S <32706> +proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 7S <32707> +proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 8S <32708> +proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 9S <32709> +proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 10S <32710> +proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 11S <32711> +proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 12S <32712> +proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 13S <32713> +proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 14S <32714> +proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 15S <32715> +proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 16S <32716> +proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 17S <32717> +proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 18S <32718> +proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 19S <32719> +proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 20S <32720> +proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 21S <32721> +proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 22S <32722> +proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 23S <32723> +proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 24S <32724> +proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 25S <32725> +proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 26S <32726> +proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 27S <32727> +proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 28S <32728> +proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 29S <32729> +proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 30S <32730> +proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 31S <32731> +proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 32S <32732> +proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 33S <32733> +proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 34S <32734> +proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 35S <32735> +proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 36S <32736> +proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 37S <32737> +proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 38S <32738> +proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 39S <32739> +proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 40S <32740> +proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 41S <32741> +proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 42S <32742> +proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 43S <32743> +proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 44S <32744> +proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 45S <32745> +proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 46S <32746> +proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 47S <32747> +proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 48S <32748> +proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 49S <32749> +proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 50S <32750> +proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 51S <32751> +proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 52S <32752> +proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 53S <32753> +proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 54S <32754> +proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 55S <32755> +proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 56S <32756> +proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 57S <32757> +proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 58S <32758> +proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 59S <32759> +proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UTM zone 60S <32760> +proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / UPS South <32761> +proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> # WGS 84 / TM 36 SE <32766> +proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/esri�������������������������������������������������������������������0000664�0000000�0000000�00001565474�11770671653�0016754�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Anguilla 1957 / British West Indies Grid <2000> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs no_defs <> # Antigua 1943 / British West Indies Grid <2001> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +units=m +no_defs no_defs <> # Dominica 1945 / British West Indies Grid <2002> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs no_defs <> # Grenada 1953 / British West Indies Grid <2003> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs no_defs <> # Montserrat 58 / British West Indies Grid <2004> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs no_defs <> # St Kitts 1955 / British West Indies Grid <2005> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +units=m +no_defs no_defs <> # St Lucia 1955 / British West Indies Grid <2006> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs no_defs <> # St Vincent 45 / British West Indies Grid <2007> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 2 <2008> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 3 <2009> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 4 <2010> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 5 <2011> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 6 <2012> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 7 <2013> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 8 <2014> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 9 <2015> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / SCoPQ zone 10 <2016> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 8 <2017> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 9 <2018> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 10 <2019> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 11 <2020> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 12 <2021> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 13 <2022> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 14 <2023> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 15 <2024> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 16 <2025> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / MTM zone 17 <2026> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / UTM zone 15N <2027> +proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / UTM zone 16N <2028> +proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / UTM zone 17N <2029> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(76) / UTM zone 18N <2030> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / UTM zone 17N <2031> +proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / UTM zone 18N <2032> +proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / UTM zone 19N <2033> +proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / UTM zone 20N <2034> +proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD27(CGQ77) / UTM zone 21N <2035> +proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD83(CSRS98) / New Brunswick Stereo <2036> +proj=stere +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 19N <2037> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 20N <2038> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Israel / Israeli TM Grid <2039> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.000007 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +units=m +no_defs no_defs <> # Locodjo 1965 / UTM zone 30N <2040> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs no_defs <> # Abidjan 1987 / UTM zone 30N <2041> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs no_defs <> # Locodjo 1965 / UTM zone 29N <2042> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs no_defs <> # Abidjan 1987 / UTM zone 29N <2043> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs no_defs <> # Hanoi 1972 / Gauss-Kruger zone 18 <2044> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs no_defs <> # Hanoi 1972 / Gauss-Kruger zone 19 <2045> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs no_defs <> # Hartebeesthoek94 / Lo15 # Hartebeesthoek94 / Lo17 # Hartebeesthoek94 / Lo19 # Hartebeesthoek94 / Lo21 # Hartebeesthoek94 / Lo23 # Hartebeesthoek94 / Lo25 # Hartebeesthoek94 / Lo27 # Hartebeesthoek94 / Lo29 # Hartebeesthoek94 / Lo31 # Hartebeesthoek94 / Lo33 # CH1903+ / LV95 <2056> +proj=omerc +lat_0=46.95240555555556 +lonc=7.439583333333333 +alpha=90 +k=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs no_defs <> # Rassadiran / Nakhl e Taqi <2057> +proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs no_defs <> # ED50(ED77) / UTM zone 38N <2058> +proj=utm +zone=38 +ellps=intl +units=m +no_defs no_defs <> # ED50(ED77) / UTM zone 39N <2059> +proj=utm +zone=39 +ellps=intl +units=m +no_defs no_defs <> # ED50(ED77) / UTM zone 40N <2060> +proj=utm +zone=40 +ellps=intl +units=m +no_defs no_defs <> # ED50(ED77) / UTM zone 41N <2061> +proj=utm +zone=41 +ellps=intl +units=m +no_defs no_defs <> # Madrid 1870 (Madrid) / Spain <2062> +proj=lcc +lat_1=40 +lat_0=40 +lon_0=-3.687938888888889 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669562 +pm=madrid +units=m +no_defs no_defs <> # Dabola 1981 / UTM zone 28N <2063> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs no_defs <> # Dabola 1981 / UTM zone 29N <2064> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs no_defs <> # S-JTSK (Ferro) / Krovak <2065> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # Mount Dillon / Tobago Grid <2066> +proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66154375 +y_0=36209.915082 +a=6378293.63683822 +b=6356617.979337744 +to_meter=0.2011661949 +no_defs no_defs <> # Naparima 1955 / UTM zone 20N <2067> +proj=utm +zone=20 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 5 <2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 6 <2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 7 <2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 8 <2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 9 <2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 10 <2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 11 <2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 12 <2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / Libya zone 13 <2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / UTM zone 32N <2077> +proj=utm +zone=32 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / UTM zone 33N <2078> +proj=utm +zone=33 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / UTM zone 34N <2079> +proj=utm +zone=34 +ellps=intl +units=m +no_defs no_defs <> # ELD79 / UTM zone 35N <2080> +proj=utm +zone=35 +ellps=intl +units=m +no_defs no_defs <> # Chos Malal 1914 / Argentina zone 2 <2081> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Pampa del Castillo / Argentina zone 2 <2082> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Hito XVIII 1963 / Argentina zone 2 <2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013 +units=m +no_defs no_defs <> # Hito XVIII 1963 / UTM zone 19S <2084> +proj=utm +zone=19 +south +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013 +units=m +no_defs no_defs <> # NAD27 / Cuba Norte <2085> +proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / Cuba Sur <2086> +proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # ELD79 / TM 12 NE <2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Carthage / TM 11 NE <2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.999600 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Yemen NGN96 / UTM zone 38N <2089> +proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Yemen NGN96 / UTM zone 39N <2090> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # South Yemen / Gauss Kruger zone 8 <2091> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs no_defs <> # South Yemen / Gauss Kruger zone 9 <2092> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs no_defs <> # Hanoi 1972 / GK 106 NE <2093> +proj=tmerc +lat_0=0 +lon_0=106 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs no_defs <> # WGS 72BE / TM 106 NE <2094> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # Bissau / UTM zone 28N <2095> +proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs no_defs <> # Korean 1985 / Korea East Belt <2096> +proj=tmerc +lat_0=38 +lon_0=129 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs no_defs <> # Korean 1985 / Korea Central Belt <2097> +proj=tmerc +lat_0=38 +lon_0=127 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs no_defs <> # Korean 1985 / Korea West Belt <2098> +proj=tmerc +lat_0=38 +lon_0=125 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs no_defs <> # Qatar 1948 / Qatar Grid <2099> +proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs no_defs <> # GGRS87 / Greek Grid <2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs no_defs <> # Lake / Maracaibo Grid M1 <2101> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs no_defs <> # Lake / Maracaibo Grid <2102> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs no_defs <> # Lake / Maracaibo Grid M3 <2103> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs no_defs <> # Lake / Maracaibo La Rosa Grid <2104> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs no_defs <> # NZGD2000 / Mount Eden Circuit 2000 <2105> +proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.999900 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Bay of Plenty Circuit 2000 <2106> +proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Poverty Bay Circuit 2000 <2107> +proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Hawkes Bay Circuit 2000 <2108> +proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Taranaki Circuit 2000 <2109> +proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Tuhirangi Circuit 2000 <2110> +proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Wanganui Circuit 2000 <2111> +proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Wairarapa Circuit 2000 <2112> +proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Wellington Circuit 2000 <2113> +proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Collingwood Circuit 2000 <2114> +proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Nelson Circuit 2000 <2115> +proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Karamea Circuit 2000 <2116> +proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Buller Circuit 2000 <2117> +proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Grey Circuit 2000 <2118> +proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Amuri Circuit 2000 <2119> +proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Marlborough Circuit 2000 <2120> +proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Hokitika Circuit 2000 <2121> +proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Okarito Circuit 2000 <2122> +proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Jacksons Bay Circuit 2000 <2123> +proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Mount Pleasant Circuit 2000 <2124> +proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Gawler Circuit 2000 <2125> +proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Timaru Circuit 2000 <2126> +proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Lindis Peak Circuit 2000 <2127> +proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Mount Nicholas Circuit 2000 <2128> +proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Mount York Circuit 2000 <2129> +proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Observation Point Circuit 2000 <2130> +proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / North Taieri Circuit 2000 <2131> +proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.999960 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / Bluff Circuit 2000 <2132> +proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / UTM zone 58S <2133> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / UTM zone 59S <2134> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NZGD2000 / UTM zone 60S <2135> +proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Accra / Ghana National Grid <2136> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.999750 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs no_defs <> # Accra / TM 1 NW <2137> +proj=tmerc +lat_0=0 +lon_0=-1 +k=0.999600 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs no_defs <> # NAD27(CGQ77) / Quebec Lambert <2138> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # NAD83(CSRS98) / SCoPQ zone 2 <2139> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 3 <2140> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 4 <2141> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 5 <2142> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 6 <2143> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 7 <2144> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 8 <2145> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 9 <2146> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / MTM zone 10 <2147> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 21N <2148> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 18N <2149> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 17N <2150> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 13N <2151> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 12N <2152> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS98) / UTM zone 11N <2153> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # RGF93 / Lambert-93 <2154> +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # American Samoa 1962 / American Samoa Lambert <2155> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / UTM zone 59S <2156> +proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # IRENET95 / Irish Transverse Mercator <2157> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.999820 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # IRENET95 / UTM zone 29N <2158> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Sierra Leone 1924 / New Colony Grid <2159> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1.000000 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs no_defs <> # Sierra Leone 1924 / New War Office Grid <2160> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1.000000 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs no_defs <> # Sierra Leone 1968 / UTM zone 28N <2161> +proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs no_defs <> # Sierra Leone 1968 / UTM zone 29N <2162> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs no_defs <> # US National Atlas Equal Area <2163> +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs no_defs <> # Locodjo 1965 / TM 5 NW <2164> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs no_defs <> # Abidjan 1987 / TM 5 NW <2165> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs no_defs <> # Pulkovo 1942(83) / Gauss Kruger zone 3 <2166> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs no_defs <> # Pulkovo 1942(83) / Gauss Kruger zone 4 <2167> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs no_defs <> # Pulkovo 1942(83) / Gauss Kruger zone 5 <2168> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs no_defs <> # Luxembourg 1930 / Gauss <2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1.000000 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs no_defs <> # MGI / Slovenia Grid <2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Pulkovo 1942(58) / Poland zone I <2171> +proj=stere +lat_0=50.625 +lon_0=21.08333333333333 +k=0.999800 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs no_defs <> # Pulkovo 1942(58) / Poland zone II <2172> +proj=stere +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.999800 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs no_defs <> # Pulkovo 1942(58) / Poland zone III <2173> +proj=stere +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.999800 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs no_defs <> # Pulkovo 1942(58) / Poland zone IV <2174> +proj=stere +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.999800 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs no_defs <> # Pulkovo 1942(58) / Poland zone V <2175> +proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs no_defs <> # ETRS89 / Poland CS2000 zone 5 <2176> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / Poland CS2000 zone 6 <2177> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / Poland CS2000 zone 7 <2178> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / Poland CS2000 zone 8 <2179> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / Poland CS92 <2180> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.999300 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs no_defs <> # Azores Occidental 1939 / UTM zone 25N <2188> +proj=utm +zone=25 +ellps=intl +units=m +no_defs no_defs <> # Azores Central 1948 / UTM zone 26N <2189> +proj=utm +zone=26 +ellps=intl +units=m +no_defs no_defs <> # Azores Oriental 1940 / UTM zone 26N <2190> +proj=utm +zone=26 +ellps=intl +units=m +no_defs no_defs <> # Madeira 1936 / UTM zone 28N <2191> +proj=utm +zone=28 +ellps=intl +units=m +no_defs no_defs <> # ED50 / France EuroLambert <2192> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs no_defs <> # NZGD2000 / New Zealand Transverse Mercator <2193> +proj=tmerc +lat_0=0 +lon_0=173 +k=0.999600 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # American Samoa 1962 / American Samoa Lambert <2194> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / UTM zone 2S <2195> +proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # ETRS89 / Kp2000 Jutland <2196> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.999950 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / Kp2000 Zealand <2197> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999950 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / Kp2000 Bornholm <2198> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # Albanian 1987 / Gauss Kruger zone 4 <2199> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # ATS77 / New Brunswick Stereographic (ATS77) <2200> +proj=stere +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # REGVEN / UTM zone 18N <2201> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # REGVEN / UTM zone 19N <2202> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # REGVEN / UTM zone 20N <2203> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD27 / Tennessee <2204> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Kentucky North <2205> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 9 <2206> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 10 <2207> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 11 <2208> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 12 <2209> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 13 <2210> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 14 <2211> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / 3-degree Gauss-Kruger zone 15 <2212> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ETRS89 / TM 30 NE <2213> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # Douala 1948 / AOF west <2214> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs no_defs <> # Manoca 1962 / UTM zone 32N <2215> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs no_defs <> # Qornoq 1927 / UTM zone 22N <2216> +proj=utm +zone=22 +ellps=intl +units=m +no_defs no_defs <> # Qornoq 1927 / UTM zone 23N <2217> +proj=utm +zone=23 +ellps=intl +units=m +no_defs no_defs <> # ATS77 / UTM zone 19N <2219> +proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # ATS77 / UTM zone 20N <2220> +proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # NAD83 / Arizona East (ft) <2222> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Arizona Central (ft) <2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Arizona West (ft) <2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / California zone 1 (ftUS) <2225> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / California zone 2 (ftUS) <2226> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / California zone 3 (ftUS) <2227> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / California zone 4 (ftUS) <2228> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / California zone 5 (ftUS) <2229> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / California zone 6 (ftUS) <2230> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Colorado North (ftUS) <2231> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Colorado Central (ftUS) <2232> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Colorado South (ftUS) <2233> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Connecticut (ftUS) <2234> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Delaware (ftUS) <2235> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Florida East (ftUS) <2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Florida West (ftUS) <2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Florida North (ftUS) <2238> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Georgia East (ftUS) <2239> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Georgia West (ftUS) <2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Idaho East (ftUS) <2241> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Idaho Central (ftUS) <2242> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Idaho West (ftUS) <2243> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Indiana East (ftUS) <2244> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Indiana West (ftUS) <2245> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Kentucky North (ftUS) <2246> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Kentucky South (ftUS) <2247> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Maryland (ftUS) <2248> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Massachusetts Mainland (ftUS) <2249> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Massachusetts Island (ftUS) <2250> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Michigan North (ft) <2251> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Michigan Central (ft) <2252> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Michigan South (ft) <2253> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Mississippi East (ftUS) <2254> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Mississippi West (ftUS) <2255> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Montana (ft) <2256> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / New Mexico East (ftUS) <2257> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / New Mexico Central (ftUS) <2258> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / New Mexico West (ftUS) <2259> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / New York East (ftUS) <2260> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / New York Central (ftUS) <2261> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / New York West (ftUS) <2262> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / New York Long Island (ftUS) <2263> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / North Carolina (ftUS) <2264> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / North Dakota North (ft) <2265> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / North Dakota South (ft) <2266> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Oklahoma North (ftUS) <2267> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Oklahoma South (ftUS) <2268> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Oregon North (ft) <2269> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Oregon South (ft) <2270> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Pennsylvania North (ftUS) <2271> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Pennsylvania South (ftUS) <2272> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / South Carolina (ft) <2273> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Tennessee (ftUS) <2274> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Texas North (ftUS) <2275> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Texas North Central (ftUS) <2276> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Texas Central (ftUS) <2277> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Texas South Central (ftUS) <2278> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Texas South (ftUS) <2279> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Utah North (ft) <2280> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Utah Central (ft) <2281> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Utah South (ft) <2282> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs no_defs <> # NAD83 / Virginia North (ftUS) <2283> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Virginia South (ftUS) <2284> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Washington North (ftUS) <2285> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Washington South (ftUS) <2286> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Wisconsin North (ftUS) <2287> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Wisconsin Central (ftUS) <2288> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / Wisconsin South (ftUS) <2289> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # ATS77 / Prince Edward Isl. Stereographic (ATS77) <2290> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) <2291> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) <2292> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # ATS77 / MTM Nova Scotia zone 4 <2294> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # ATS77 / MTM Nova Scotia zone 5 <2295> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs no_defs <> # Batavia / TM 109 SE <2308> +proj=tmerc +lat_0=0 +lon_0=109 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m +no_defs no_defs <> # WGS 84 / TM 116 SE <2309> +proj=tmerc +lat_0=0 +lon_0=116 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / TM 132 SE <2310> +proj=tmerc +lat_0=0 +lon_0=132 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / TM 6 NE <2311> +proj=tmerc +lat_0=0 +lon_0=6 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # Garoua / UTM zone 33N <2312> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs no_defs <> # Kousseri / UTM zone 33N <2313> +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs no_defs <> # Trinidad 1903 / Trinidad Grid (ftCla) <2314> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46380699999 +y_0=65379.01334249999 +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.304797265 +no_defs no_defs <> # Campo Inchauspe / UTM zone 19S <2315> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / UTM zone 20S <2316> +proj=utm +zone=20 +south +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / ICN Regional <2317> +proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs no_defs <> # Ain el Abd / Aramco Lambert <2318> +proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM27 <2319> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM30 <2320> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM33 <2321> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM36 <2322> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM39 <2323> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM42 <2324> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM45 <2325> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Hong Kong 1980 Grid System <2326> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 13 <2327> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 14 <2328> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 15 <2329> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 16 <2330> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 17 <2331> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 18 <2332> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 19 <2333> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 20 <2334> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 21 <2335> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 22 <2336> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger zone 23 <2337> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 75E <2338> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 81E <2339> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 87E <2340> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 93E <2341> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 99E <2342> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 105E <2343> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 111E <2344> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 117E <2345> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 123E <2346> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 129E <2347> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / Gauss-Kruger CM 135E <2348> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 25 <2349> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 26 <2350> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 27 <2351> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 28 <2352> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 29 <2353> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 30 <2354> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 31 <2355> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 32 <2356> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 33 <2357> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 34 <2358> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 35 <2359> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 36 <2360> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 37 <2361> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 38 <2362> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 39 <2363> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 40 <2364> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 41 <2365> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 42 <2366> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 43 <2367> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 44 <2368> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger zone 45 <2369> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 75E <2370> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 78E <2371> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 81E <2372> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 84E <2373> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 87E <2374> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 90E <2375> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 93E <2376> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 96E <2377> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 99E <2378> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 102E <2379> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 105E <2380> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 108E <2381> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 111E <2382> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 114E <2383> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 117E <2384> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 120E <2385> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 123E <2386> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 126E <2387> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 129E <2388> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 132E <2389> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # Xian 1980 / 3-degree Gauss-Kruger CM 135E <2390> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs no_defs <> # KKJ / Finland zone 1 <2391> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs no_defs <> # KKJ / Finland zone 2 <2392> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs no_defs <> # KKJ / Finland Uniform Coordinate System <2393> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs no_defs <> # KKJ / Finland zone 4 <2394> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +units=m +no_defs no_defs <> # South Yemen / Gauss-Kruger zone 8 <2395> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs no_defs <> # South Yemen / Gauss-Kruger zone 9 <2396> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs no_defs <> # Pulkovo 1942(83) / Gauss-Kruger zone 3 <2397> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs no_defs <> # Pulkovo 1942(83) / Gauss-Kruger zone 4 <2398> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs no_defs <> # Pulkovo 1942(83) / Gauss-Kruger zone 5 <2399> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs no_defs <> # RT90 2.5 gon W <2400> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 25 <2401> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 26 <2402> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 27 <2403> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 28 <2404> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 29 <2405> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 30 <2406> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 31 <2407> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 32 <2408> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 33 <2409> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 34 <2410> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 35 <2411> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 36 <2412> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 37 <2413> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 38 <2414> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 39 <2415> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 40 <2416> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 41 <2417> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 42 <2418> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 43 <2419> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 44 <2420> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger zone 45 <2421> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 75E <2422> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 78E <2423> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 81E <2424> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 84E <2425> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 87E <2426> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 90E <2427> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 93E <2428> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 96E <2429> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 99E <2430> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 102E <2431> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 105E <2432> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 108E <2433> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 111E <2434> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 114E <2435> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 117E <2436> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 120E <2437> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 123E <2438> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 126E <2439> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 129E <2440> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 132E <2441> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / 3-degree Gauss-Kruger CM 135E <2442> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS I <2443> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS II <2444> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS III <2445> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS IV <2446> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS V <2447> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS VI <2448> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS VII <2449> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS VIII <2450> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS IX <2451> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS X <2452> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XI <2453> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XII <2454> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XIII <2455> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XIV <2456> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XV <2457> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XVI <2458> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XVII <2459> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XVIII <2460> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # JGD2000 / Japan Plane Rectangular CS XIX <2461> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.999900 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Albanian 1987 / Gauss-Kruger zone 4 <2462> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 21E <2463> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 27E <2464> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 33E <2465> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 39E <2466> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 45E <2467> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 51E <2468> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 57E <2469> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 63E <2470> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 69E <2471> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 75E <2472> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 81E <2473> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 87E <2474> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 93E <2475> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 99E <2476> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 105E <2477> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 111E <2478> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 117E <2479> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 123E <2480> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 129E <2481> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 135E <2482> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 141E <2483> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 147E <2484> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 153E <2485> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 159E <2486> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 165E <2487> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 171E <2488> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 177E <2489> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 177W <2490> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger CM 171W <2491> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 9E <2492> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 15E <2493> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 21E <2494> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 27E <2495> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 33E <2496> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 39E <2497> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 45E <2498> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 51E <2499> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 57E <2500> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 63E <2501> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 69E <2502> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 75E <2503> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 81E <2504> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 87E <2505> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 93E <2506> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 99E <2507> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 105E <2508> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 111E <2509> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 117E <2510> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 123E <2511> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 129E <2512> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 135E <2513> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 141E <2514> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 147E <2515> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 153E <2516> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 159E <2517> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 165E <2518> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 171E <2519> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 177E <2520> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 177W <2521> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger CM 171W <2522> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 7 <2523> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 8 <2524> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 9 <2525> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 10 <2526> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 11 <2527> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 12 <2528> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 13 <2529> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 14 <2530> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 15 <2531> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 16 <2532> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 17 <2533> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 18 <2534> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 19 <2535> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 20 <2536> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 21 <2537> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 22 <2538> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 23 <2539> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 24 <2540> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 25 <2541> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 26 <2542> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 27 <2543> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 28 <2544> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 29 <2545> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 30 <2546> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 31 <2547> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 32 <2548> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 33 <2549> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Samboja / UTM zone 50S <2550> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 34 <2551> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 35 <2552> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 36 <2553> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 37 <2554> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 38 <2555> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 39 <2556> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 40 <2557> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 41 <2558> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 42 <2559> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 43 <2560> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 44 <2561> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 45 <2562> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 46 <2563> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 47 <2564> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 48 <2565> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 49 <2566> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 50 <2567> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 51 <2568> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 52 <2569> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 53 <2570> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 54 <2571> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 55 <2572> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 56 <2573> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 57 <2574> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 58 <2575> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 59 <2576> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 <2577> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 61 <2578> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 62 <2579> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 63 <2580> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger zone 64 <2581> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E <2582> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E <2583> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E <2584> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E <2585> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E <2586> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E <2587> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E <2588> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E <2589> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E <2590> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E <2591> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E <2592> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E <2593> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E <2594> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E <2595> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E <2596> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E <2597> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E <2598> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E <2599> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Lietuvos Koordinoei Sistema 1994 <2600> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999800 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E <2601> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E <2602> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E <2603> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E <2604> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E <2605> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E <2606> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E <2607> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E <2608> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E <2609> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E <2610> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E <2611> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E <2612> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E <2613> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E <2614> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E <2615> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E <2616> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E <2617> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E <2618> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E <2619> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E <2620> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E <2621> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E <2622> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E <2623> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E <2624> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E <2625> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E <2626> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E <2627> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E <2628> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E <2629> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E <2630> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E <2631> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E <2632> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E <2633> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E <2634> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E <2635> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E <2636> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W <2637> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W <2638> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W <2639> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W <2640> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 7 <2641> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 8 <2642> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 9 <2643> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 10 <2644> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 11 <2645> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 12 <2646> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 13 <2647> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 14 <2648> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 15 <2649> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 16 <2650> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 17 <2651> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 18 <2652> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 19 <2653> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 20 <2654> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 21 <2655> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 22 <2656> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 23 <2657> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 24 <2658> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 25 <2659> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 26 <2660> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 27 <2661> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 28 <2662> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 29 <2663> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 30 <2664> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 31 <2665> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 32 <2666> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 33 <2667> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 34 <2668> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 35 <2669> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 36 <2670> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 37 <2671> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 38 <2672> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 39 <2673> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 40 <2674> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 41 <2675> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 42 <2676> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 43 <2677> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 44 <2678> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 45 <2679> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 46 <2680> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 47 <2681> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 48 <2682> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 49 <2683> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 50 <2684> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 51 <2685> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 52 <2686> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 53 <2687> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 54 <2688> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 55 <2689> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 56 <2690> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 57 <2691> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 58 <2692> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 59 <2693> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 <2694> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 61 <2695> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 62 <2696> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 63 <2697> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger zone 64 <2698> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E <2699> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E <2700> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E <2701> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E <2702> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E <2703> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E <2704> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E <2705> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E <2706> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E <2707> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E <2708> +proj=tmerc +lat_0=0 +lon_0=48 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E <2709> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E <2710> +proj=tmerc +lat_0=0 +lon_0=54 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E <2711> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E <2712> +proj=tmerc +lat_0=0 +lon_0=60 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E <2713> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E <2714> +proj=tmerc +lat_0=0 +lon_0=66 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E <2715> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E <2716> +proj=tmerc +lat_0=0 +lon_0=72 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E <2717> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E <2718> +proj=tmerc +lat_0=0 +lon_0=78 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E <2719> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E <2720> +proj=tmerc +lat_0=0 +lon_0=84 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E <2721> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E <2722> +proj=tmerc +lat_0=0 +lon_0=90 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E <2723> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E <2724> +proj=tmerc +lat_0=0 +lon_0=96 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E <2725> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E <2726> +proj=tmerc +lat_0=0 +lon_0=102 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E <2727> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E <2728> +proj=tmerc +lat_0=0 +lon_0=108 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E <2729> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E <2730> +proj=tmerc +lat_0=0 +lon_0=114 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E <2731> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E <2732> +proj=tmerc +lat_0=0 +lon_0=120 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E <2733> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E <2734> +proj=tmerc +lat_0=0 +lon_0=126 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E <2735> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Tete / UTM zone 36S <2736> +proj=utm +zone=36 +south +ellps=clrk66 +units=m +no_defs no_defs <> # Tete / UTM zone 37S <2737> +proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E <2738> +proj=tmerc +lat_0=0 +lon_0=132 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E <2739> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E <2740> +proj=tmerc +lat_0=0 +lon_0=138 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E <2741> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E <2742> +proj=tmerc +lat_0=0 +lon_0=144 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E <2743> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E <2744> +proj=tmerc +lat_0=0 +lon_0=150 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E <2745> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E <2746> +proj=tmerc +lat_0=0 +lon_0=156 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E <2747> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E <2748> +proj=tmerc +lat_0=0 +lon_0=162 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E <2749> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E <2750> +proj=tmerc +lat_0=0 +lon_0=168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E <2751> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E <2752> +proj=tmerc +lat_0=0 +lon_0=174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E <2753> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E <2754> +proj=tmerc +lat_0=0 +lon_0=180 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W <2755> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W <2756> +proj=tmerc +lat_0=0 +lon_0=-174 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W <2757> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W <2758> +proj=tmerc +lat_0=0 +lon_0=-168 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # NAD83(HARN) / Alabama East <2759> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Alabama West <2760> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Arizona East <2761> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Arizona Central <2762> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Arizona West <2763> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Arkansas North <2764> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Arkansas South <2765> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / California zone 1 <2766> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / California zone 2 <2767> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / California zone 3 <2768> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / California zone 4 <2769> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / California zone 5 <2770> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / California zone 6 <2771> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Colorado North <2772> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Colorado Central <2773> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Colorado South <2774> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Connecticut <2775> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Delaware <2776> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Florida East <2777> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Florida West <2778> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Florida North <2779> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Georgia East <2780> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Georgia West <2781> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Hawaii zone 1 <2782> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Hawaii zone 2 <2783> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Hawaii zone 3 <2784> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Hawaii zone 4 <2785> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Hawaii zone 5 <2786> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Idaho East <2787> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Idaho Central <2788> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Idaho West <2789> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Illinois East <2790> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Illinois West <2791> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Indiana East <2792> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Indiana West <2793> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Iowa North <2794> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Iowa South <2795> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Kansas North <2796> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Kansas South <2797> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Kentucky North <2798> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Kentucky South <2799> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Louisiana North <2800> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Louisiana South <2801> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Maine East <2802> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Maine West <2803> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Maryland <2804> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Massachusetts Mainland <2805> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Massachusetts Island <2806> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Michigan North <2807> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Michigan Central <2808> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Michigan South <2809> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Minnesota North <2810> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Minnesota Central <2811> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Minnesota South <2812> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Mississippi East <2813> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Mississippi West <2814> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Missouri East <2815> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Missouri Central <2816> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Missouri West <2817> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Montana <2818> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Nebraska <2819> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Nevada East <2820> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Nevada Central <2821> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Nevada West <2822> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New Hampshire <2823> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New Jersey <2824> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New Mexico East <2825> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New Mexico Central <2826> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New Mexico West <2827> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New York East <2828> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New York Central <2829> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New York West <2830> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / New York Long Island <2831> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / North Dakota North <2832> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / North Dakota South <2833> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Ohio North <2834> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Ohio South <2835> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Oklahoma North <2836> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Oklahoma South <2837> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Oregon North <2838> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Oregon South <2839> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Rhode Island <2840> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / South Dakota North <2841> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / South Dakota South <2842> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Tennessee <2843> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Texas North <2844> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Texas North Central <2845> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Texas Central <2846> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Texas South Central <2847> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Texas South <2848> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Utah North <2849> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Utah Central <2850> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Utah South <2851> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Vermont <2852> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Virginia North <2853> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Virginia South <2854> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Washington North <2855> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Washington South <2856> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / West Virginia North <2857> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / West Virginia South <2858> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wisconsin North <2859> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wisconsin Central <2860> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wisconsin South <2861> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wyoming East <2862> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wyoming East Central <2863> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wyoming West Central <2864> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Wyoming West <2865> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Puerto Rico & Virgin Is. <2866> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(HARN) / Arizona East (ft) <2867> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Arizona Central (ft) <2868> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Arizona West (ft) <2869> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / California zone 1 (ftUS) <2870> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / California zone 2 (ftUS) <2871> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / California zone 3 (ftUS) <2872> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / California zone 4 (ftUS) <2873> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / California zone 5 (ftUS) <2874> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / California zone 6 (ftUS) <2875> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Colorado North (ftUS) <2876> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Colorado Central (ftUS) <2877> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Colorado South (ftUS) <2878> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Connecticut (ftUS) <2879> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Delaware (ftUS) <2880> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Florida East (ftUS) <2881> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Florida West (ftUS) <2882> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Florida North (ftUS) <2883> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Georgia East (ftUS) <2884> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Georgia West (ftUS) <2885> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Idaho East (ftUS) <2886> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Idaho Central (ftUS) <2887> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Idaho West (ftUS) <2888> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Indiana East (ftUS) <2889> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Indiana West (ftUS) <2890> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Kentucky North (ftUS) <2891> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Kentucky South (ftUS) <2892> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Maryland (ftUS) <2893> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Massachusetts Mainland (ftUS) <2894> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Massachusetts Island (ftUS) <2895> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Michigan North (ft) <2896> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Michigan Central (ft) <2897> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Michigan South (ft) <2898> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Mississippi East (ftUS) <2899> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Mississippi West (ftUS) <2900> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Montana (ft) <2901> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / New Mexico East (ftUS) <2902> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / New Mexico Central (ftUS) <2903> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / New Mexico West (ftUS) <2904> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / New York East (ftUS) <2905> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / New York Central (ftUS) <2906> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / New York West (ftUS) <2907> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / New York Long Island (ftUS) <2908> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / North Dakota North (ft) <2909> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / North Dakota South (ft) <2910> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Oklahoma North (ftUS) <2911> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Oklahoma South (ftUS) <2912> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Oregon North (ft) <2913> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Oregon South (ft) <2914> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Tennessee (ftUS) <2915> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Texas North (ftUS) <2916> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Texas North Central (ftUS) <2917> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Texas Central (ftUS) <2918> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Texas South Central (ftUS) <2919> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Texas South (ftUS) <2920> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Utah North (ft) <2921> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Utah Central (ft) <2922> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Utah South (ft) <2923> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs no_defs <> # NAD83(HARN) / Virginia North (ftUS) <2924> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Virginia South (ftUS) <2925> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Washington North (ftUS) <2926> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Washington South (ftUS) <2927> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Wisconsin North (ftUS) <2928> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Wisconsin Central (ftUS) <2929> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83(HARN) / Wisconsin South (ftUS) <2930> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs no_defs <> # Beduaram / TM 13 NE <2931> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.999600 +x_0=500000.0000000001 +y_0=0 +a=6378249.2 +b=6356515 +to_meter=0.3048006096012192 +no_defs no_defs <> # QND95 / Qatar National Grid <2932> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.999990 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs no_defs <> # Segara / UTM zone 50S <2933> +proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs no_defs <> # Segara (Jakarta) / NEIEZ <2934> +proj=merc +lat_ts=0 +lon_0=216.8077194444444 +k=0.997000 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone A1 <2935> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1.000000 +x_0=1300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone A2 <2936> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1.000000 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone A3 <2937> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1.000000 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone A4 <2938> +proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1.000000 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone K2 <2939> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1.000000 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone K3 <2940> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1.000000 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / CS63 zone K4 <2941> +proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1.000000 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Porto Santo / UTM zone 28N <2942> +proj=utm +zone=28 +ellps=intl +units=m +no_defs no_defs <> # Selvagem Grande / UTM zone 28N <2943> +proj=utm +zone=28 +ellps=intl +units=m +no_defs no_defs <> # NAD83(CSRS) / SCoPQ zone 2 <2944> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 3 <2945> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 4 <2946> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 5 <2947> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 6 <2948> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 7 <2949> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 8 <2950> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 9 <2951> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / MTM zone 10 <2952> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / New Brunswick Stereo <2953> +proj=stere +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83) <2954> +proj=stere +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 11N <2955> +proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 12N <2956> +proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 13N <2957> +proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 17N <2958> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 18N <2959> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 19N <2960> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 20N <2961> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD83(CSRS) / UTM zone 21N <2962> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Moznet / UTM zone 36S <3036> +proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs no_defs <> # Moznet / UTM zone 37S <3037> +proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs no_defs <> # Indian 1960 / UTM zone 48N <3148> +proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Indian 1960 / UTM zone 49N <3149> +proj=utm +zone=49 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Indian 1960 / TM 106 NE <3176> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.999600 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # FD58 / Iraq zone <3200> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs no_defs <> # Estonian Coordinate System of 1992 <3300> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs no_defs <> # Estonian Coordinate System of 1997 <3301> +proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # PSD93 / UTM zone 39N <3439> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs no_defs <> # PSD93 / UTM zone 40N <3440> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs no_defs <> # Old Hawaiian / Hawaii zone 1 <3561> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Old Hawaiian / Hawaii zone 2 <3562> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Old Hawaiian / Hawaii zone 3 <3563> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Old Hawaiian / Hawaii zone 4 <3564> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Old Hawaiian / Hawaii zone 5 <3565> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Puerto Rico / UTM zone 20N <3920> +proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs no_defs <> # Puerto Rico State Plane CS of 1927 <3991> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Puerto Rico / St. Croix <3992> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs no_defs <> # Unknown datum based upon the Airy 1830 ellipsoid <4001> +proj=longlat +ellps=airy +no_defs no_defs <> # Unknown datum based upon the Airy Modified 1849 ellipsoid <4002> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs no_defs <> # Unknown datum based upon the Australian National Spheroid <4003> +proj=longlat +ellps=aust_SA +no_defs no_defs <> # Unknown datum based upon the Bessel 1841 ellipsoid <4004> +proj=longlat +ellps=bessel +no_defs no_defs <> # Unknown datum based upon the Bessel Modified ellipsoid <4005> +proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs no_defs <> # Unknown datum based upon the Bessel Namibia ellipsoid <4006> +proj=longlat +ellps=bess_nam +no_defs no_defs <> # Unknown datum based upon the Clarke 1858 ellipsoid <4007> +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +no_defs no_defs <> # Unknown datum based upon the Clarke 1866 ellipsoid <4008> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Unknown datum based upon the Clarke 1866 Michigan ellipsoid <4009> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs no_defs <> # Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid <4010> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs no_defs <> # Unknown datum based upon the Clarke 1880 (IGN) ellipsoid <4011> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Unknown datum based upon the Clarke 1880 (RGS) ellipsoid <4012> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Unknown datum based upon the Clarke 1880 (Arc) ellipsoid <4013> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs no_defs <> # Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid <4014> +proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs no_defs <> # Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid <4015> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs no_defs <> # Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid <4016> +proj=longlat +ellps=evrstSS +no_defs no_defs <> # Unknown datum based upon the Everest 1830 Modified ellipsoid <4018> +proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs no_defs <> # Unknown datum based upon the GRS 1980 ellipsoid <4019> +proj=longlat +ellps=GRS80 +no_defs no_defs <> # Unknown datum based upon the Helmert 1906 ellipsoid <4020> +proj=longlat +ellps=helmert +no_defs no_defs <> # Unknown datum based upon the Indonesian National Spheroid <4021> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs no_defs <> # Unknown datum based upon the International 1924 ellipsoid <4022> +proj=longlat +ellps=intl +no_defs no_defs <> # Unknown datum based upon the Krassowsky 1940 ellipsoid <4024> +proj=longlat +ellps=krass +no_defs no_defs <> # Unknown datum based upon the NWL 9D ellipsoid <4025> +proj=longlat +ellps=WGS66 +no_defs no_defs <> # Unknown datum based upon the Plessis 1817 ellipsoid <4027> +proj=longlat +a=6376523 +b=6355862.933255573 +no_defs no_defs <> # Unknown datum based upon the Struve 1860 ellipsoid <4028> +proj=longlat +a=6378298.3 +b=6356657.142669562 +no_defs no_defs <> # Unknown datum based upon the War Office ellipsoid <4029> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs no_defs <> # Unknown datum based upon the WGS 84 ellipsoid <4030> +proj=longlat +ellps=WGS84 +no_defs no_defs <> # Unknown datum based upon the GEM 10C ellipsoid <4031> +proj=longlat +ellps=WGS84 +no_defs no_defs <> # Unknown datum based upon the OSU86F ellipsoid <4032> +proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs no_defs <> # Unknown datum based upon the OSU91A ellipsoid <4033> +proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs no_defs <> # Unknown datum based upon the Clarke 1880 ellipsoid <4034> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Unknown datum based upon the Authalic Sphere <4035> +proj=longlat +a=6371000 +b=6371000 +no_defs no_defs <> # Unknown datum based upon the GRS 1967 ellipsoid <4036> +proj=longlat +ellps=GRS67 +no_defs no_defs <> # Unknown datum based upon the Average Terrestrial System 1977 ellipsoid <4041> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs no_defs <> # Unknown datum based upon the Everest (1830 Definition) ellipsoid <4042> +proj=longlat +a=6377299.36559538 +b=6356098.357204817 +no_defs no_defs <> # Unknown datum based upon the WGS 72 ellipsoid <4043> +proj=longlat +ellps=WGS72 +no_defs no_defs <> # Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid <4044> +proj=longlat +a=6377301.243 +b=6356100.230165385 +no_defs no_defs <> # Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid <4045> +proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs no_defs <> # Unspecified based upon the GRS 1980 Authalic Sphere <4047> +proj=longlat +a=6370997 +b=6370997 +no_defs no_defs <> # Greek <4120> +proj=longlat +ellps=bessel +no_defs no_defs <> # GGRS87 <4121> +proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs no_defs <> # ATS77 <4122> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs no_defs <> # KKJ <4123> +proj=longlat +ellps=intl +towgs84=-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37 +no_defs no_defs <> # RT90 <4124> +proj=longlat +ellps=bessel +no_defs no_defs <> # Samboja <4125> +proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs no_defs <> # LKS94 (ETRS89) <4126> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Tete <4127> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Madzansua <4128> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Observatario <4129> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Moznet <4130> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs no_defs <> # Indian 1960 <4131> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs no_defs <> # FD58 <4132> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # EST92 <4133> +proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs no_defs <> # PDO Survey Datum 1993 <4134> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Old Hawaiian <4135> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # St. Lawrence Island <4136> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # St. Paul Island <4137> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # St. George Island <4138> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Puerto Rico <4139> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # NAD83(CSRS98) <4140> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Israel <4141> +proj=longlat +ellps=GRS80 +no_defs no_defs <> # Locodjo 1965 <4142> +proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs no_defs <> # Abidjan 1987 <4143> +proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs no_defs <> # Kalianpur 1937 <4144> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs no_defs <> # Kalianpur 1962 <4145> +proj=longlat +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +no_defs no_defs <> # Kalianpur 1975 <4146> +proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs no_defs <> # Hanoi 1972 <4147> +proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs no_defs <> # Hartebeesthoek94 <4148> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # CH1903 <4149> +proj=longlat +ellps=bessel +no_defs no_defs <> # CH1903+ <4150> +proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs no_defs <> # CHTRF95 <4151> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # NAD83(HARN) <4152> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Rassadiran <4153> +proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs no_defs <> # ED50(ED77) <4154> +proj=longlat +ellps=intl +no_defs no_defs <> # Dabola 1981 <4155> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs no_defs <> # S-JTSK <4156> +proj=longlat +ellps=bessel +no_defs no_defs <> # Mount Dillon <4157> +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +no_defs no_defs <> # Naparima 1955 <4158> +proj=longlat +ellps=intl +no_defs no_defs <> # ELD79 <4159> +proj=longlat +ellps=intl +no_defs no_defs <> # Chos Malal 1914 <4160> +proj=longlat +ellps=intl +no_defs no_defs <> # Pampa del Castillo <4161> +proj=longlat +ellps=intl +no_defs no_defs <> # Korean 1985 <4162> +proj=longlat +ellps=bessel +no_defs no_defs <> # Yemen NGN96 <4163> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # South Yemen <4164> +proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs no_defs <> # Bissau <4165> +proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs no_defs <> # Korean 1995 <4166> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # NZGD2000 <4167> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Accra <4168> +proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs no_defs <> # American Samoa 1962 <4169> +proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs no_defs <> # SIRGAS <4170> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # RGF93 <4171> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # POSGAR <4172> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # IRENET95 <4173> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Sierra Leone 1924 <4174> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs no_defs <> # Sierra Leone 1968 <4175> +proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs no_defs <> # Australian Antarctic <4176> +proj=longlat +ellps=GRS80 +no_defs no_defs <> # Pulkovo 1942(83) <4178> +proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +no_defs no_defs <> # Pulkovo 1942(58) <4179> +proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs no_defs <> # EST97 <4180> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Luxembourg 1930 <4181> +proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +no_defs no_defs <> # Azores Occidental 1939 <4182> +proj=longlat +ellps=intl +no_defs no_defs <> # Azores Central 1948 <4183> +proj=longlat +ellps=intl +no_defs no_defs <> # Azores Oriental 1940 <4184> +proj=longlat +ellps=intl +no_defs no_defs <> # Madeira 1936 <4185> +proj=longlat +ellps=intl +no_defs no_defs <> # OSNI 1952 <4188> +proj=longlat +ellps=airy +no_defs no_defs <> # REGVEN <4189> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # POSGAR 98 <4190> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Albanian 1987 <4191> +proj=longlat +ellps=krass +no_defs no_defs <> # Douala 1948 <4192> +proj=longlat +ellps=intl +no_defs no_defs <> # Manoca 1962 <4193> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs no_defs <> # Qornoq 1927 <4194> +proj=longlat +ellps=intl +no_defs no_defs <> # Scoresbysund 1952 <4195> +proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs no_defs <> # Ammassalik 1958 <4196> +proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs no_defs <> # Garoua <4197> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Kousseri <4198> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Egypt 1930 <4199> +proj=longlat +ellps=intl +no_defs no_defs <> # Pulkovo 1995 <4200> +proj=longlat +ellps=krass +no_defs no_defs <> # Adindan <4201> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # AGD66 <4202> +proj=longlat +ellps=aust_SA +no_defs no_defs <> # AGD84 <4203> +proj=longlat +ellps=aust_SA +no_defs no_defs <> # Ain el Abd <4204> +proj=longlat +ellps=intl +no_defs no_defs <> # Afgooye <4205> +proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs no_defs <> # Agadez <4206> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Lisbon <4207> +proj=longlat +ellps=intl +no_defs no_defs <> # Aratu <4208> +proj=longlat +ellps=intl +no_defs no_defs <> # Arc 1950 <4209> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs no_defs <> # Arc 1960 <4210> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Batavia <4211> +proj=longlat +ellps=bessel +no_defs no_defs <> # Barbados 1938 <4212> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Beduaram <4213> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Beijing 1954 <4214> +proj=longlat +ellps=krass +no_defs no_defs <> # Belge 1950 <4215> +proj=longlat +ellps=intl +no_defs no_defs <> # Bermuda 1957 <4216> +proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs no_defs <> # Bogota 1975 <4218> +proj=longlat +ellps=intl +no_defs no_defs <> # Bukit Rimpah <4219> +proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs no_defs <> # Camacupa <4220> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Campo Inchauspe <4221> +proj=longlat +ellps=intl +no_defs no_defs <> # Cape <4222> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs no_defs <> # Carthage <4223> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Chua <4224> +proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs no_defs <> # Corrego Alegre <4225> +proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs no_defs <> # Cote d'Ivoire <4226> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Deir ez Zor <4227> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Douala <4228> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Egypt 1907 <4229> +proj=longlat +ellps=helmert +no_defs no_defs <> # ED50 <4230> +proj=longlat +ellps=intl +no_defs no_defs <> # ED87 <4231> +proj=longlat +ellps=intl +towgs84=-82.981,-99.719,-110.709,-0.5076,0.1503,0.3898,-0.3143 +no_defs no_defs <> # Fahud <4232> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Gandajika 1970 <4233> +proj=longlat +ellps=intl +no_defs no_defs <> # Garoua <4234> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Guyane Francaise <4235> +proj=longlat +ellps=intl +no_defs no_defs <> # Hu Tzu Shan <4236> +proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs no_defs <> # HD72 <4237> +proj=longlat +ellps=GRS67 +no_defs no_defs <> # ID74 <4238> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs no_defs <> # Indian 1954 <4239> +proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +no_defs no_defs <> # Indian 1975 <4240> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs no_defs <> # Jamaica 1875 <4241> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # JAD69 <4242> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Kalianpur 1880 <4243> +proj=longlat +a=6377299.36559538 +b=6356098.357204817 +no_defs no_defs <> # Kandawala <4244> +proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs84=-97,787,86,0,0,0,0 +no_defs no_defs <> # Kertau <4245> +proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs no_defs <> # KOC <4246> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # La Canoa <4247> +proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs no_defs <> # PSAD56 <4248> +proj=longlat +ellps=intl +no_defs no_defs <> # Lake <4249> +proj=longlat +ellps=intl +no_defs no_defs <> # Leigon <4250> +proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs no_defs <> # Liberia 1964 <4251> +proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs no_defs <> # Lome <4252> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Luzon 1911 <4253> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Hito XVIII 1963 <4254> +proj=longlat +ellps=intl +towgs84=18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013 +no_defs no_defs <> # Herat North <4255> +proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs no_defs <> # Mahe 1971 <4256> +proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs no_defs <> # Makassar <4257> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs no_defs <> # ETRS89 <4258> +proj=longlat +ellps=GRS80 +no_defs no_defs <> # Malongo 1987 <4259> +proj=longlat +ellps=intl +no_defs no_defs <> # Manoca <4260> +proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs no_defs <> # Merchich <4261> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs no_defs <> # Massawa <4262> +proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs no_defs <> # Minna <4263> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Mhast <4264> +proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs no_defs <> # Monte Mario <4265> +proj=longlat +ellps=intl +no_defs no_defs <> # M'poraloko <4266> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # NAD27 <4267> +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs no_defs <> # NAD27 Michigan <4268> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs no_defs <> # NAD83 <4269> +proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs no_defs <> # Nahrwan 1967 <4270> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Naparima 1972 <4271> +proj=longlat +ellps=intl +no_defs no_defs <> # NZGD49 <4272> +proj=longlat +ellps=intl +no_defs no_defs <> # NGO 1948 <4273> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs no_defs <> # Datum 73 <4274> +proj=longlat +ellps=intl +no_defs no_defs <> # NTF <4275> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs no_defs <> # NSWC 9Z-2 <4276> +proj=longlat +ellps=WGS66 +no_defs no_defs <> # OSGB 1936 <4277> +proj=longlat +ellps=airy +no_defs no_defs <> # OSGB70 <4278> +proj=longlat +ellps=airy +no_defs no_defs <> # OS(SN)80 <4279> +proj=longlat +ellps=airy +no_defs no_defs <> # Padang <4280> +proj=longlat +ellps=bessel +no_defs no_defs <> # Palestine 1923 <4281> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs no_defs <> # Pointe Noire <4282> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # GDA94 <4283> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Pulkovo 1942 <4284> +proj=longlat +ellps=krass +no_defs no_defs <> # Qatar 1974 <4285> +proj=longlat +ellps=intl +no_defs no_defs <> # Qatar 1948 <4286> +proj=longlat +ellps=helmert +no_defs no_defs <> # Qornoq <4287> +proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs no_defs <> # Loma Quintana <4288> +proj=longlat +ellps=intl +no_defs no_defs <> # Amersfoort <4289> +proj=longlat +ellps=bessel +no_defs no_defs <> # SAD69 <4291> +proj=longlat +ellps=GRS67 +no_defs no_defs <> # Sapper Hill 1943 <4292> +proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs no_defs <> # Schwarzeck <4293> +proj=longlat +ellps=bess_nam +no_defs no_defs <> # Segora <4294> +proj=longlat +ellps=bessel +no_defs no_defs <> # Serindung <4295> +proj=longlat +ellps=bessel +no_defs no_defs <> # Sudan <4296> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Tananarive <4297> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs no_defs <> # Timbalai 1948 <4298> +proj=longlat +ellps=evrstSS +no_defs no_defs <> # TM65 <4299> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs no_defs <> # TM75 <4300> +proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs no_defs <> # Tokyo <4301> +proj=longlat +ellps=bessel +no_defs no_defs <> # Trinidad 1903 <4302> +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs no_defs <> # TC(1948) <4303> +proj=longlat +ellps=helmert +no_defs no_defs <> # Voirol 1875 <4304> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs no_defs <> # Bern 1938 <4306> +proj=longlat +ellps=bessel +no_defs no_defs <> # Nord Sahara 1959 <4307> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # RT38 <4308> +proj=longlat +ellps=bessel +no_defs no_defs <> # Yacare <4309> +proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs no_defs <> # Yoff <4310> +proj=longlat +a=6378249.2 +b=6356515 +no_defs no_defs <> # Zanderij <4311> +proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs no_defs <> # MGI <4312> +proj=longlat +ellps=bessel +no_defs no_defs <> # Belge 1972 <4313> +proj=longlat +ellps=intl +no_defs no_defs <> # DHDN <4314> +proj=longlat +ellps=bessel +no_defs no_defs <> # Conakry 1905 <4315> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs no_defs <> # Dealul Piscului 1933 <4316> +proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +no_defs no_defs <> # Dealul Piscului 1970 <4317> +proj=longlat +ellps=krass +no_defs no_defs <> # NGN <4318> +proj=longlat +ellps=WGS84 +no_defs no_defs <> # KUDAMS <4319> +proj=longlat +ellps=GRS80 +no_defs no_defs <> # WGS 72 <4322> +proj=longlat +ellps=WGS72 +no_defs no_defs <> # WGS 72BE <4324> +proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs no_defs <> # WGS 84 <4326> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs no_defs <> # Anguilla 1957 <4600> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # Antigua 1943 <4601> +proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +no_defs no_defs <> # Dominica 1945 <4602> +proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs no_defs <> # Grenada 1953 <4603> +proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs no_defs <> # Montserrat 1958 <4604> +proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs no_defs <> # St. Kitts 1955 <4605> +proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +no_defs no_defs <> # St. Lucia 1955 <4606> +proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs no_defs <> # St. Vincent 1945 <4607> +proj=longlat +ellps=clrk80 +no_defs no_defs <> # NAD27(76) <4608> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # NAD27(CGQ77) <4609> +proj=longlat +ellps=clrk66 +no_defs no_defs <> # Xian 1980 <4610> +proj=longlat +a=6378140 +b=6356755.288157528 +no_defs no_defs <> # Hong Kong 1980 <4611> +proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs no_defs <> # JGD2000 <4612> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Segara <4613> +proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs no_defs <> # QND95 <4614> +proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs no_defs <> # Porto Santo <4615> +proj=longlat +ellps=intl +no_defs no_defs <> # Selvagem Grande <4616> +proj=longlat +ellps=intl +no_defs no_defs <> # NAD83(CSRS) <4617> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs no_defs <> # Bern 1898 (Bern) <4801> +proj=longlat +ellps=bessel +pm=bern +no_defs no_defs <> # Bogota 1975 (Bogota) <4802> +proj=longlat +ellps=intl +pm=bogota +no_defs no_defs <> # Lisbon (Lisbon) <4803> +proj=longlat +ellps=intl +pm=lisbon +no_defs no_defs <> # Makassar (Jakarta) <4804> +proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs no_defs <> # MGI (Ferro) <4805> +proj=longlat +ellps=bessel +pm=ferro +no_defs no_defs <> # Monte Mario (Rome) <4806> +proj=longlat +ellps=intl +pm=rome +no_defs no_defs <> # NTF (Paris) <4807> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs no_defs <> # Padang (Jakarta) <4808> +proj=longlat +ellps=bessel +pm=jakarta +no_defs no_defs <> # Belge 1950 (Brussels) <4809> +proj=longlat +ellps=intl +pm=brussels +no_defs no_defs <> # Tananarive (Paris) <4810> +proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs no_defs <> # Voirol 1875 (Paris) <4811> +proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs no_defs <> # Batavia (Jakarta) <4813> +proj=longlat +ellps=bessel +pm=jakarta +no_defs no_defs <> # RT38 (Stockholm) <4814> +proj=longlat +ellps=bessel +pm=stockholm +no_defs no_defs <> # Greek (Athens) <4815> +proj=longlat +ellps=bessel +pm=athens +no_defs no_defs <> # Carthage (Paris) <4816> +proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs no_defs <> # NGO 1948 (Oslo) <4817> +proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs no_defs <> # S-JTSK (Ferro) <4818> +proj=longlat +ellps=bessel +pm=ferro +no_defs no_defs <> # Nord Sahara 1959 (Paris) <4819> +proj=longlat +ellps=clrk80 +pm=paris +no_defs no_defs <> # Segara (Jakarta) <4820> +proj=longlat +ellps=bessel +pm=jakarta +no_defs no_defs <> # ATF (Paris) <4901> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs no_defs <> # NDG (Paris) <4902> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs no_defs <> # Madrid 1870 (Madrid) <4903> +proj=longlat +a=6378298.3 +b=6356657.142669562 +pm=madrid +no_defs no_defs <> # Lisbon 1890 (Lisbon) <4904> +proj=longlat +ellps=bessel +pm=lisbon +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 4 <20004> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 5 <20005> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 6 <20006> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 7 <20007> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 8 <20008> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 9 <20009> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 10 <20010> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 11 <20011> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 12 <20012> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 13 <20013> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 14 <20014> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 15 <20015> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 16 <20016> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 17 <20017> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 18 <20018> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 19 <20019> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 20 <20020> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 21 <20021> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 22 <20022> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 23 <20023> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 24 <20024> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 25 <20025> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 26 <20026> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 27 <20027> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 28 <20028> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 29 <20029> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 30 <20030> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 31 <20031> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger zone 32 <20032> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 4N <20064> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 5N <20065> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 6N <20066> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 7N <20067> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 8N <20068> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 9N <20069> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 10N <20070> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 11N <20071> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 12N <20072> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 13N <20073> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 14N <20074> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 15N <20075> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 16N <20076> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 17N <20077> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 18N <20078> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 19N <20079> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 20N <20080> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 21N <20081> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 22N <20082> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 23N <20083> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 24N <20084> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 25N <20085> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 26N <20086> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 27N <20087> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 28N <20088> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 29N <20089> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 30N <20090> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 31N <20091> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1995 / Gauss-Kruger 32N <20092> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Adindan / UTM zone 37N <20137> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs no_defs <> # Adindan / UTM zone 38N <20138> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs no_defs <> # AGD66 / AMG zone 48 <20248> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 49 <20249> +proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 50 <20250> +proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 51 <20251> +proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 52 <20252> +proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 53 <20253> +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 54 <20254> +proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 55 <20255> +proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 56 <20256> +proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 57 <20257> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD66 / AMG zone 58 <20258> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 48 <20348> +proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 49 <20349> +proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 50 <20350> +proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 51 <20351> +proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 52 <20352> +proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 53 <20353> +proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 54 <20354> +proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 55 <20355> +proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 56 <20356> +proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 57 <20357> +proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs no_defs <> # AGD84 / AMG zone 58 <20358> +proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs no_defs <> # Ain el Abd / UTM zone 37N <20437> +proj=utm +zone=37 +ellps=intl +units=m +no_defs no_defs <> # Ain el Abd / UTM zone 38N <20438> +proj=utm +zone=38 +ellps=intl +units=m +no_defs no_defs <> # Ain el Abd / UTM zone 39N <20439> +proj=utm +zone=39 +ellps=intl +units=m +no_defs no_defs <> # Ain el Abd / Bahrain Grid <20499> +proj=utm +zone=39 +ellps=intl +units=m +no_defs no_defs <> # Afgooye / UTM zone 38N <20538> +proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs no_defs <> # Afgooye / UTM zone 39N <20539> +proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs no_defs <> # Lisbon (Lisbon)/Portuguese National Grid <20790> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m +no_defs no_defs <> # Lisbon (Lisbon)/Portuguese Grid <20791> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m +no_defs no_defs <> # Aratu / UTM zone 22S <20822> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs no_defs <> # Aratu / UTM zone 23S <20823> +proj=utm +zone=23 +south +ellps=intl +units=m +no_defs no_defs <> # Aratu / UTM zone 24S <20824> +proj=utm +zone=24 +south +ellps=intl +units=m +no_defs no_defs <> # Arc 1950 / UTM zone 34S <20934> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs no_defs <> # Arc 1950 / UTM zone 35S <20935> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs no_defs <> # Arc 1950 / UTM zone 36S <20936> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs no_defs <> # Arc 1960 / UTM zone 35S <21035> +proj=utm +zone=35 +south +ellps=clrk80 +units=m +no_defs no_defs <> # Arc 1960 / UTM zone 36S <21036> +proj=utm +zone=36 +south +ellps=clrk80 +units=m +no_defs no_defs <> # Arc 1960 / UTM zone 37S <21037> +proj=utm +zone=37 +south +ellps=clrk80 +units=m +no_defs no_defs <> # Arc 1960 / UTM zone 35N <21095> +proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs no_defs <> # Arc 1960 / UTM zone 36N <21096> +proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs no_defs <> # Arc 1960 / UTM zone 37N <21097> +proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs no_defs <> # Batavia (Jakarta) / NEIEZ <21100> +proj=merc +lat_ts=0 +lon_0=216.8077194444444 +k=0.997000 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs no_defs <> # Batavia / UTM zone 48S <21148> +proj=utm +zone=48 +south +ellps=bessel +units=m +no_defs no_defs <> # Batavia / UTM zone 49S <21149> +proj=utm +zone=49 +south +ellps=bessel +units=m +no_defs no_defs <> # Batavia / UTM zone 50S <21150> +proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs no_defs <> # Barbados 1938 / British West Indies Grid <21291> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs no_defs <> # Barbados 1938 / Barbados National Grid <21292> +proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.999999 +x_0=30000 +y_0=75000 +ellps=clrk80 +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 13 <21413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 14 <21414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 15 <21415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 16 <21416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 17 <21417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 18 <21418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 19 <21419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 20 <21420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 21 <21421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 22 <21422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger zone 23 <21423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 75E <21453> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 81E <21454> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 87E <21455> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 93E <21456> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 99E <21457> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 105E <21458> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 111E <21459> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 117E <21460> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 123E <21461> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 129E <21462> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger CM 135E <21463> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 13N <21473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 14N <21474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 15N <21475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 16N <21476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 17N <21477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 18N <21478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 19N <21479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 20N <21480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 21N <21481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 22N <21482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Beijing 1954 / Gauss-Kruger 23N <21483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Belge 1950 (Brussels) / Belge Lambert 50 <21500> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.367975 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs no_defs <> # Bern 1898 (Bern) / LV03C <21780> +proj=omerc +lat_0=46.95240555555556 +lonc=7.439583333333333 +alpha=90 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m +no_defs no_defs <> # CH1903 / LV03 <21781> +proj=omerc +lat_0=46.95240555555556 +lonc=7.439583333333333 +alpha=90 +k=1 +x_0=600000 +y_0=200000 +ellps=bessel +units=m +no_defs no_defs <> # Bogota 1975 / UTM zone 17N <21817> +proj=utm +zone=17 +ellps=intl +units=m +no_defs no_defs <> # Bogota 1975 / UTM zone 18N <21818> +proj=utm +zone=18 +ellps=intl +units=m +no_defs no_defs <> # Bogota 1975 / Colombia West zone <21891> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs no_defs <> # Bogota 1975 / Colombia Bogota zone <21892> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs no_defs <> # Bogota 1975 / Colombia East Central zone <21893> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs no_defs <> # Bogota 1975 / Colombia East <21894> +proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs no_defs <> # Camacupa / UTM zone 32S <22032> +proj=utm +zone=32 +south +ellps=clrk80 +units=m +no_defs no_defs <> # Camacupa / UTM zone 33S <22033> +proj=utm +zone=33 +south +ellps=clrk80 +units=m +no_defs no_defs <> # Camacupa / TM 11.30 SE <22091> +proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs no_defs <> # Camacupa / TM 12 SE <22092> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 1 <22191> +proj=tmerc +lat_0=-90 +lon_0=-72 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 2 <22192> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 3 <22193> +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 4 <22194> +proj=tmerc +lat_0=-90 +lon_0=-63 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 5 <22195> +proj=tmerc +lat_0=-90 +lon_0=-60 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 6 <22196> +proj=tmerc +lat_0=-90 +lon_0=-57 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Campo Inchauspe / Argentina 7 <22197> +proj=tmerc +lat_0=-90 +lon_0=-54 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Cape / UTM zone 34S <22234> +proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs no_defs <> # Cape / UTM zone 35S <22235> +proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs no_defs <> # Cape / UTM zone 36S <22236> +proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs no_defs <> # South African Coordinate System zone 15 # South African Coordinate System zone 17 # South African Coordinate System zone 19 # South African Coordinate System zone 21 # South African Coordinate System zone 23 # South African Coordinate System zone 25 # South African Coordinate System zone 27 # South African Coordinate System zone 29 # South African Coordinate System zone 31 # South African Coordinate System zone 33 # Carthage (Paris) / Tunisia Mining Grid # Carthage / UTM zone 32N <22332> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Carthage / Nord Tunisie <22391> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Carthage / Sud Tunisie <22392> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Corrego Alegre / UTM zone 23S <22523> +proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs no_defs <> # Corrego Alegre / UTM zone 24S <22524> +proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs no_defs <> # Deir ez Zor / Levant Zone <22700> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Deir ez Zor / Syria Lambert <22770> +proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Deir ez Zor / Levant Stereographic <22780> +proj=stere +lat_0=34.2 +lon_0=39.15 +k=0.999534 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Douala / UTM zone 32N <22832> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Egypt 1907 / Blue Belt <22991> +proj=tmerc +lat_0=30 +lon_0=35 +k=1.000000 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m +no_defs no_defs <> # Egypt 1907 / Red Belt <22992> +proj=tmerc +lat_0=30 +lon_0=31 +k=1.000000 +x_0=615000 +y_0=810000 +ellps=helmert +units=m +no_defs no_defs <> # Egypt 1907 / Purple Belt <22993> +proj=tmerc +lat_0=30 +lon_0=27 +k=1.000000 +x_0=700000 +y_0=200000 +ellps=helmert +units=m +no_defs no_defs <> # Egypt 1907 / Extended Purple Belt <22994> +proj=tmerc +lat_0=30 +lon_0=27 +k=1.000000 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m +no_defs no_defs <> # ED50 / UTM zone 28N <23028> +proj=utm +zone=28 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 29N <23029> +proj=utm +zone=29 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 30N <23030> +proj=utm +zone=30 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 31N <23031> +proj=utm +zone=31 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 32N <23032> +proj=utm +zone=32 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 33N <23033> +proj=utm +zone=33 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 34N <23034> +proj=utm +zone=34 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 35N <23035> +proj=utm +zone=35 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 36N <23036> +proj=utm +zone=36 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 37N <23037> +proj=utm +zone=37 +ellps=intl +units=m +no_defs no_defs <> # ED50 / UTM zone 38N <23038> +proj=utm +zone=38 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM 0 N <23090> +proj=tmerc +lat_0=0 +lon_0=0 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # ED50 / TM 5 NE <23095> +proj=tmerc +lat_0=0 +lon_0=5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs no_defs <> # Fahud / UTM zone 39N <23239> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs no_defs <> # Fahud / UTM zone 40N <23240> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs no_defs <> # Garoua / UTM zone 33N <23433> +proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # HD72 / EOV <23700> +proj=omerc +lat_0=47.14439372222222 +lonc=19.04857177777778 +alpha=90 +k=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m +no_defs no_defs <> # ID74 / UTM zone 46N <23846> +proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 47N <23847> +proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 48N <23848> +proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 49N <23849> +proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 50N <23850> +proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 51N <23851> +proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 52N <23852> +proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 53N <23853> +proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 46S <23886> +proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 47S <23887> +proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 48S <23888> +proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 49S <23889> +proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 50S <23890> +proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 51S <23891> +proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 52S <23892> +proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 53S <23893> +proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # ID74 / UTM zone 54S <23894> +proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs no_defs <> # Indian 1954 / UTM zone 46N <23946> +proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs no_defs <> # Indian 1954 / UTM zone 47N <23947> +proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs no_defs <> # Indian 1954 / UTM zone 48N <23948> +proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs no_defs <> # Indian 1975 / UTM zone 47N <24047> +proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Indian 1975 / UTM zone 48N <24048> +proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Jamaica 1875 / Jamaica (Old Grid) <24100> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49575 +y_0=121918.906 +ellps=clrk80 +to_meter=0.304797265 +no_defs no_defs <> # JAD69 / Jamaica National Grid <24200> +proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m +no_defs no_defs <> # Kalianpur 1937 / UTM zone 45N <24305> +proj=utm +zone=45 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Kalianpur 1937 / UTM zone 46N <24306> +proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Kalianpur 1962 / UTM zone 41N <24311> +proj=utm +zone=41 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1962 / UTM zone 42N <24312> +proj=utm +zone=42 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1962 / UTM zone 43N <24313> +proj=utm +zone=43 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / UTM zone 42N <24342> +proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / UTM zone 43N <24343> +proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / UTM zone 44N <24344> +proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / UTM zone 45N <24345> +proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / UTM zone 46N <24346> +proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / UTM zone 47N <24347> +proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1880 / India zone 0 <24370> +proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs no_defs <> # Kalianpur 1880 / India zone I <24371> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs no_defs <> # Kalianpur 1880 / India zone IIa <24372> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs no_defs <> # Kalianpur 1880 / India zone III <24373> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs no_defs <> # Kalianpur 1880 / India zone IV <24374> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs no_defs <> # Kalianpur 1937 / India zone IIb <24375> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.413140239 +units=m +no_defs no_defs <> # Kalianpur 1962 / India zone I <24376> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1962 / India zone IIa <24377> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / India zone I <24378> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / India zone IIa <24379> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / India zone IIb <24380> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1975 / India zone III <24381> +proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kalianpur 1880 / India zone IIb <24382> +proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204817 +to_meter=0.9143985307444408 +no_defs no_defs <> # Kalianpur 1975 / India zone IV <24383> +proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs no_defs <> # Kertau / Singapore Grid <24500> +proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs no_defs <> # Kertau / UTM zone 47N <24547> +proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs no_defs <> # Kertau / UTM zone 48N <24548> +proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs no_defs <> # Kertau / R.S.O. Malaya (ch) <24571> +proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs no_defs <> # KOC Lambert <24600> +proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs no_defs <> # La Canoa / UTM zone 18N <24718> +proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs no_defs <> # La Canoa / UTM zone 19N <24719> +proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs no_defs <> # La Canoa / UTM zone 20N <24720> +proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs no_defs <> # PSAD56 / UTM zone 18N <24818> +proj=utm +zone=18 +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 19N <24819> +proj=utm +zone=19 +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 20N <24820> +proj=utm +zone=20 +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 21N <24821> +proj=utm +zone=21 +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 17S <24877> +proj=utm +zone=17 +south +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 18S <24878> +proj=utm +zone=18 +south +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 19S <24879> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 20S <24880> +proj=utm +zone=20 +south +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / UTM zone 22S <24882> +proj=utm +zone=22 +south +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / Peru west zone <24891> +proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.999830 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / Peru central zone <24892> +proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.999330 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m +no_defs no_defs <> # PSAD56 / Peru east zone <24893> +proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.999530 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m +no_defs no_defs <> # Leigon / Ghana Metre Grid <25000> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.999750 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs no_defs <> # Lome / UTM zone 31N <25231> +proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Luzon 1911 / Philippines zone I <25391> +proj=tmerc +lat_0=0 +lon_0=117 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # Luzon 1911 / Philippines zone II <25392> +proj=tmerc +lat_0=0 +lon_0=119 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # Luzon 1911 / Philippines zone III <25393> +proj=tmerc +lat_0=0 +lon_0=121 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # Luzon 1911 / Philippines zone IV <25394> +proj=tmerc +lat_0=0 +lon_0=123 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # Luzon 1911 / Philippines zone V <25395> +proj=tmerc +lat_0=0 +lon_0=125 +k=0.999950 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs no_defs <> # Makassar (Jakarta) / NEIEZ <25700> +proj=merc +lat_ts=0 +lon_0=216.8077194444444 +k=0.997000 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs no_defs <> # ETRS89 / UTM zone 28N <25828> +proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 29N <25829> +proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 30N <25830> +proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 31N <25831> +proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 32N <25832> +proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 33N <25833> +proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 34N <25834> +proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 35N <25835> +proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 36N <25836> +proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 37N <25837> +proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / UTM zone 38N <25838> +proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs no_defs <> # ETRS89 / TM Baltic93 <25884> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # Malongo 1987 / UTM zone 32S <25932> +proj=utm +zone=32 +south +ellps=intl +units=m +no_defs no_defs <> # Merchich / Nord Maroc <26191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs no_defs <> # Merchich / Sud Maroc <26192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs no_defs <> # Merchich / Sahara <26193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs no_defs <> # Massawa / UTM zone 37N <26237> +proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs no_defs <> # Minna / UTM zone 31N <26331> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs no_defs <> # Minna / UTM zone 32N <26332> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs no_defs <> # Minna / Nigeria West Belt <26391> +proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.999750 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m +no_defs no_defs <> # Minna / Nigeria Mid Belt <26392> +proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.999750 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m +no_defs no_defs <> # Minna / Nigeria East Belt <26393> +proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.999750 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m +no_defs no_defs <> # Mhast / UTM zone 32S <26432> +proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs no_defs <> # Monte Mario (Rome) / Italy zone 1 <26591> +proj=tmerc +lat_0=0 +lon_0=21.45233333333333 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs no_defs <> # Monte Mario (Rome) / Italy zone 2 <26592> +proj=tmerc +lat_0=0 +lon_0=27.45233333333333 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs no_defs <> # M'poraloko / UTM zone 32N <26632> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # M'poraloko / UTM zone 32S <26692> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # NAD27 / UTM zone 3N <26703> +proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 4N <26704> +proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 5N <26705> +proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 6N <26706> +proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 7N <26707> +proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 8N <26708> +proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 9N <26709> +proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 10N <26710> +proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 11N <26711> +proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 12N <26712> +proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 13N <26713> +proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 14N <26714> +proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 15N <26715> +proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 16N <26716> +proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 17N <26717> +proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 18N <26718> +proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 19N <26719> +proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 20N <26720> +proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 21N <26721> +proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / UTM zone 22N <26722> +proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / Alabama East <26729> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alabama West <26730> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 1 <26731> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 2 <26732> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 3 <26733> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 4 <26734> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 5 <26735> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 6 <26736> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 7 <26737> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 8 <26738> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 9 <26739> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Alaska zone 10 <26740> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone I <26741> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone II <26742> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone III <26743> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone IV <26744> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone V <26745> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone VI <26746> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California zone VII <26747> +proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Arizona East <26748> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Arizona Central <26749> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Arizona West <26750> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Arkansas North <26751> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Arkansas South <26752> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Colorado North <26753> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Colorado Central <26754> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Colorado South <26755> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Connecticut <26756> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Delaware <26757> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Florida East <26758> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Florida West <26759> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Florida North <26760> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Georgia East <26766> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Georgia West <26767> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Idaho East <26768> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Idaho Central <26769> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Idaho West <26770> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Illinois East <26771> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Illinois West <26772> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Indiana East <26773> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Indiana West <26774> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Iowa North <26775> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Iowa South <26776> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Kansas North <26777> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Kansas South <26778> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Kentucky North <26779> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Kentucky South <26780> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Louisiana North <26781> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Louisiana South <26782> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Maine East <26783> +proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Maine West <26784> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Maryland <26785> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Massachusetts Mainland <26786> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Massachusetts Island <26787> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Minnesota North <26791> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Minnesota Central <26792> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Minnesota South <26793> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Mississippi East <26794> +proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.999960 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Mississippi West <26795> +proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Missouri East <26796> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Missouri Central <26797> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Missouri West <26798> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD Michigan / Michigan East <26801> +proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999943 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD Michigan / Michigan Old Central <26802> +proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD Michigan / Michigan West <26803> +proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD Michigan / Michigan North <26811> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD Michigan / Michigan Central <26812> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD Michigan / Michigan South <26813> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD83 / UTM zone 3N <26903> +proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 4N <26904> +proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 5N <26905> +proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 6N <26906> +proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 7N <26907> +proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 8N <26908> +proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 9N <26909> +proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 10N <26910> +proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 11N <26911> +proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 12N <26912> +proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 13N <26913> +proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 14N <26914> +proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 15N <26915> +proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 16N <26916> +proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 17N <26917> +proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 18N <26918> +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 19N <26919> +proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 20N <26920> +proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 21N <26921> +proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 22N <26922> +proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / UTM zone 23N <26923> +proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alabama East <26929> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alabama West <26930> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 1 <26931> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 2 <26932> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 3 <26933> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 4 <26934> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 5 <26935> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 6 <26936> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 7 <26937> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 8 <26938> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 9 <26939> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Alaska zone 10 <26940> +proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / California zone 1 <26941> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / California zone 2 <26942> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / California zone 3 <26943> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / California zone 4 <26944> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / California zone 5 <26945> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / California zone 6 <26946> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Arizona East <26948> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Arizona Central <26949> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Arizona West <26950> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Arkansas North <26951> +proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Arkansas South <26952> +proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Colorado North <26953> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Colorado Central <26954> +proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Colorado South <26955> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Connecticut <26956> +proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Delaware <26957> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Florida East <26958> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Florida West <26959> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Florida North <26960> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Hawaii zone 1 <26961> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Hawaii zone 2 <26962> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Hawaii zone 3 <26963> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Hawaii zone 4 <26964> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Hawaii zone 5 <26965> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Georgia East <26966> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Georgia West <26967> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Idaho East <26968> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Idaho Central <26969> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Idaho West <26970> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Illinois East <26971> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Illinois West <26972> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Indiana East <26973> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Indiana West <26974> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Iowa North <26975> +proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Iowa South <26976> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Kansas North <26977> +proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Kansas South <26978> +proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Kentucky North <26979> +proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Kentucky South <26980> +proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Louisiana North <26981> +proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Louisiana South <26982> +proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Maine East <26983> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Maine West <26984> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Maryland <26985> +proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Massachusetts Mainland <26986> +proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Massachusetts Island <26987> +proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Michigan North <26988> +proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Michigan Central <26989> +proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Michigan South <26990> +proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Minnesota North <26991> +proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Minnesota Central <26992> +proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Minnesota South <26993> +proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Mississippi East <26994> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Mississippi West <26995> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Missouri East <26996> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Missouri Central <26997> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Missouri West <26998> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # Nahrwan 1967 / UTM zone 38N <27038> +proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs no_defs <> # Nahrwan 1967 / UTM zone 39N <27039> +proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs no_defs <> # Nahrwan 1967 / UTM zone 40N <27040> +proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs no_defs <> # Naparima 1972 / UTM zone 20N <27120> +proj=utm +zone=20 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / New Zealand Map Grid <27200> +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Mount Eden Circuit <27205> +proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.999900 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Bay of Plenty Circuit <27206> +proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Poverty Bay Circuit <27207> +proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Hawkes Bay Circuit <27208> +proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Taranaki Circuit <27209> +proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Tuhirangi Circuit <27210> +proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Wanganui Circuit <27211> +proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Wairarapa Circuit <27212> +proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Wellington Circuit <27213> +proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Collingwood Circuit <27214> +proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Nelson Circuit <27215> +proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Karamea Circuit <27216> +proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Buller Circuit <27217> +proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Grey Circuit <27218> +proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Amuri Circuit <27219> +proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Marlborough Circuit <27220> +proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Hokitika Circuit <27221> +proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Okarito Circuit <27222> +proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Jacksons Bay Circuit <27223> +proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Mount Pleasant Circuit <27224> +proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Gawler Circuit <27225> +proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Timaru Circuit <27226> +proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Lindis Peak Circuit <27227> +proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Mount Nicholas Circuit <27228> +proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Mount York Circuit <27229> +proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Observation Point Circuit <27230> +proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1.000000 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / North Taieri Circuit <27231> +proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.999960 +x_0=300000 +y_0=700000 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / Bluff Circuit <27232> +proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1.000000 +x_0=300002.66 +y_0=699999.58 +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / UTM zone 58S <27258> +proj=utm +zone=58 +south +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / UTM zone 59S <27259> +proj=utm +zone=59 +south +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / UTM zone 60S <27260> +proj=utm +zone=60 +south +ellps=intl +units=m +no_defs no_defs <> # NZGD49 / North Island Grid <27291> +proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1.000000 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +to_meter=0.9143984146160287 +no_defs no_defs <> # NZGD49 / South Island Grid <27292> +proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1.000000 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +to_meter=0.9143984146160287 +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone I <27391> +proj=tmerc +lat_0=58 +lon_0=6.056250000000003 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone II <27392> +proj=tmerc +lat_0=58 +lon_0=8.389583333333336 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone III <27393> +proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone IV <27394> +proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone V <27395> +proj=tmerc +lat_0=58 +lon_0=16.88958333333334 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone VI <27396> +proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone VII <27397> +proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # NGO 1948 (Oslo) / NGO zone VIII <27398> +proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs no_defs <> # Datum 73 / UTM zone 29N <27429> +proj=utm +zone=29 +ellps=intl +units=m +no_defs no_defs <> # Datum 73 / Modified Portuguese Grid <27492> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs no_defs <> # ATF (Paris) / Nord de Guerre <27500> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=7.737229170000001 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert Nord France <27561> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert Centre France <27562> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert Sud France <27563> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert Corse <27564> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert zone I <27571> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert zone II <27572> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert zone III <27573> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Lambert zone IV <27574> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / France I <27581> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / France II <27582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / France III <27583> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / France IV <27584> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Nord France <27591> +proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=2.33722917 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Centre France <27592> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Sud France <27593> +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=2.33722917 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # NTF (Paris) / Corse <27594> +proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=2.33722917 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # OSGB 1936 / British National Grid <27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs no_defs <> # Palestine 1923 / Palestine Grid <28191> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +units=m +no_defs no_defs <> # Palestine 1923 / Palestine Belt <28192> +proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1.000000 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +units=m +no_defs no_defs <> # Palestine 1923 / Israeli CS Grid <28193> +proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +units=m +no_defs no_defs <> # Pointe Noire / UTM zone 32S <28232> +proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # GDA94 / MGA zone 48 <28348> +proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 49 <28349> +proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 50 <28350> +proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 51 <28351> +proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 52 <28352> +proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 53 <28353> +proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 54 <28354> +proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 55 <28355> +proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 56 <28356> +proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 57 <28357> +proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # GDA94 / MGA zone 58 <28358> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 2 <28402> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 3 <28403> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 4 <28404> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 5 <28405> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 6 <28406> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 7 <28407> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 8 <28408> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 9 <28409> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 10 <28410> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 11 <28411> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 12 <28412> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 13 <28413> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 14 <28414> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 15 <28415> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 16 <28416> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 17 <28417> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 18 <28418> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 19 <28419> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 20 <28420> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 21 <28421> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 22 <28422> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 23 <28423> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 24 <28424> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 25 <28425> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 26 <28426> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 27 <28427> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 28 <28428> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 29 <28429> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 30 <28430> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 31 <28431> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger zone 32 <28432> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 2N <28462> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 3N <28463> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 4N <28464> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 5N <28465> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 6N <28466> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 7N <28467> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 8N <28468> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 9N <28469> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 10N <28470> +proj=tmerc +lat_0=0 +lon_0=57 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 11N <28471> +proj=tmerc +lat_0=0 +lon_0=63 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 12N <28472> +proj=tmerc +lat_0=0 +lon_0=69 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 13N <28473> +proj=tmerc +lat_0=0 +lon_0=75 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 14N <28474> +proj=tmerc +lat_0=0 +lon_0=81 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 15N <28475> +proj=tmerc +lat_0=0 +lon_0=87 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 16N <28476> +proj=tmerc +lat_0=0 +lon_0=93 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 17N <28477> +proj=tmerc +lat_0=0 +lon_0=99 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 18N <28478> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 19N <28479> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 20N <28480> +proj=tmerc +lat_0=0 +lon_0=117 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 21N <28481> +proj=tmerc +lat_0=0 +lon_0=123 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 22N <28482> +proj=tmerc +lat_0=0 +lon_0=129 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 23N <28483> +proj=tmerc +lat_0=0 +lon_0=135 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 24N <28484> +proj=tmerc +lat_0=0 +lon_0=141 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 25N <28485> +proj=tmerc +lat_0=0 +lon_0=147 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 26N <28486> +proj=tmerc +lat_0=0 +lon_0=153 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 27N <28487> +proj=tmerc +lat_0=0 +lon_0=159 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 28N <28488> +proj=tmerc +lat_0=0 +lon_0=165 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 29N <28489> +proj=tmerc +lat_0=0 +lon_0=171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 30N <28490> +proj=tmerc +lat_0=0 +lon_0=177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 31N <28491> +proj=tmerc +lat_0=0 +lon_0=-177 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Pulkovo 1942 / Gauss-Kruger 32N <28492> +proj=tmerc +lat_0=0 +lon_0=-171 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs no_defs <> # Qatar 1974 / Qatar National Grid <28600> +proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.999990 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs no_defs <> # Amersfoort / RD Old <28991> +proj=stere +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Amersfoort / RD New <28992> +proj=stere +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs no_defs <> # SAD69 / Brazil Polyconic <29100> +proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 18N <29118> +proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 19N <29119> +proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 20N <29120> +proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 21N <29121> +proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 22N <29122> +proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 17S <29177> +proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 18S <29178> +proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 19S <29179> +proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 20S <29180> +proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 21S <29181> +proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 22S <29182> +proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 23S <29183> +proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 24S <29184> +proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs no_defs <> # SAD69 / UTM zone 25S <29185> +proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs no_defs <> # Sapper Hill 1943 / UTM zone 20S <29220> +proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs no_defs <> # Sapper Hill 1943 / UTM zone 21S <29221> +proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs no_defs <> # Schwarzeck / UTM zone 33S <29333> +proj=utm +zone=33 +south +ellps=bess_nam +units=m +no_defs no_defs <> # South West African Coord. System zone 11 # South West African Coord. System zone 13 # South West African Coord. System zone 15 # South West African Coord. System zone 17 # South West African Coord. System zone 19 # South West African Coord. System zone 21 # South West African Coord. System zone 23 # South West African Coord. System zone 25 # Sudan / UTM zone 35N <29635> +proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Sudan / UTM zone 36N <29636> +proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Tananarive (Paris) / Laborde Grid <29700> +proj=omerc +lat_0=-18.9 +lonc=46.43722917000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs no_defs <> # Tananarive / UTM zone 38S <29738> +proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs no_defs <> # Tananarive / UTM zone 39S <29739> +proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs no_defs <> # Timbalai 1948 / UTM zone 49N <29849> +proj=utm +zone=49 +ellps=evrstSS +units=m +no_defs no_defs <> # Timbalai 1948 / UTM zone 50N <29850> +proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs no_defs <> # Timbalai 1948 / R.S.O. Borneo (ch) <29871> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs no_defs <> # Timbalai 1948 / R.S.O. Borneo (ft) <29872> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762 +no_defs no_defs <> # Timbalai 1948 / R.S.O. Borneo (m) <29873> +proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m +no_defs no_defs <> # TM65 / Irish National Grid <29900> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs no_defs <> # OSNI 1952 / Irish National Grid <29901> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000000 +x_0=200000 +y_0=250000 +ellps=airy +units=m +no_defs no_defs <> # TM65 / Irish Grid <29902> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs no_defs <> # TM75 / Irish Grid <29903> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS I <30161> +proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS II <30162> +proj=tmerc +lat_0=33 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS III <30163> +proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS IV <30164> +proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS V <30165> +proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS VI <30166> +proj=tmerc +lat_0=36 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS VII <30167> +proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS VIII <30168> +proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS IX <30169> +proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS X <30170> +proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XI <30171> +proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XII <30172> +proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XIII <30173> +proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XIV <30174> +proj=tmerc +lat_0=26 +lon_0=142 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XV <30175> +proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XVI <30176> +proj=tmerc +lat_0=26 +lon_0=124 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XVII <30177> +proj=tmerc +lat_0=26 +lon_0=131 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XVIII <30178> +proj=tmerc +lat_0=20 +lon_0=136 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Tokyo / Japan Plane Rectangular CS XIX <30179> +proj=tmerc +lat_0=26 +lon_0=154 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Trinidad 1903 / Trinidad Grid <30200> +proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46380700001 +y_0=65379.0133425 +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.2011661949 +no_defs no_defs <> # TC(1948) / UTM zone 39N <30339> +proj=utm +zone=39 +ellps=helmert +units=m +no_defs no_defs <> # TC(1948) / UTM zone 40N <30340> +proj=utm +zone=40 +ellps=helmert +units=m +no_defs no_defs <> # Voirol 1875 / Nord Algerie (ancienne) <30491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs no_defs <> # Voirol 1875 / Sud Algerie (ancienne) <30492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs no_defs <> # Nord Sahara 1959 / UTM zone 29N <30729> +proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs no_defs <> # Nord Sahara 1959 / UTM zone 30N <30730> +proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs no_defs <> # Nord Sahara 1959 / UTM zone 31N <30731> +proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs no_defs <> # Nord Sahara 1959 / UTM zone 32N <30732> +proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs no_defs <> # Nord Sahara 1959 / Voirol Unifie Nord <30791> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs no_defs <> # Nord Sahara 1959 / Voirol Unifie Sud <30792> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs no_defs <> # RT38 2.5 gon W <30800> +proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Yoff / UTM zone 28N <31028> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs no_defs <> # Zanderij / UTM zone 21N <31121> +proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs no_defs <> # Zanderij / TM 54 NW <31154> +proj=tmerc +lat_0=0 +lon_0=-54 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs no_defs <> # Zanderij / Suriname Old TM <31170> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs no_defs <> # Zanderij / Suriname TM <31171> +proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.999900 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs no_defs <> # MGI / 3-degree Gauss zone 5 <31265> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / 3-degree Gauss zone 6 <31266> +proj=tmerc +lat_0=0 +lon_0=18 +k=1.000000 +x_0=6500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / 3-degree Gauss zone 7 <31267> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=7500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / 3-degree Gauss zone 8 <31268> +proj=tmerc +lat_0=0 +lon_0=24 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Balkans zone 5 <31275> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Balkans zone 6 <31276> +proj=tmerc +lat_0=0 +lon_0=18 +k=0.999900 +x_0=6500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Balkans zone 7 <31277> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=7500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Balkans zone 8 <31278> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=7500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Balkans zone 8 <31279> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999900 +x_0=8500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI (Ferro) / Austria West Zone <31281> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # MGI (Ferro) / Austria Central Zone <31282> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # MGI (Ferro) / Austria East Zone <31283> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # MGI / M28 <31284> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=150000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / M31 <31285> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=450000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / M34 <31286> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=750000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Austria Lambert <31287> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +units=m +no_defs no_defs <> # MGI (Ferro) / Austria West Zone <31291> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # MGI (Ferro) / Austria Central Zone <31292> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # MGI (Ferro) / Austria East Zone <31293> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs no_defs <> # MGI / M28 <31294> +proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1.000000 +x_0=150000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / M31 <31295> +proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1.000000 +x_0=450000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / M34 <31296> +proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1.000000 +x_0=750000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # MGI / Austria Lambert <31297> +proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +units=m +no_defs no_defs <> # Belge 1972 / Belge Lambert 72 <31300> +proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m +no_defs no_defs <> # Belge 1972 / Belgian Lambert 72 <31370> +proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +units=m +no_defs no_defs <> # DHDN / 3-degree Gauss zone 1 <31461> +proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / 3-degree Gauss zone 2 <31462> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / 3-degree Gauss zone 3 <31463> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / 3-degree Gauss zone 4 <31464> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / 3-degree Gauss zone 5 <31465> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / Gauss-Kruger zone 2 <31466> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / Gauss-Kruger zone 3 <31467> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / Gauss-Kruger zone 4 <31468> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # DHDN / Gauss-Kruger zone 5 <31469> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # Conakry 1905 / UTM zone 28N <31528> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs no_defs <> # Conakry 1905 / UTM zone 29N <31529> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs no_defs <> # Dealul Piscului 1933/ Stereo 33 <31600> +proj=stere +lat_0=45.9 +lon_0=25.39246588888889 +k=0.999667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +units=m +no_defs no_defs <> # Dealul Piscului 1970/ Stereo 70 <31700> +proj=stere +lat_0=46 +lon_0=25 +k=0.999750 +x_0=500000 +y_0=500000 +ellps=krass +units=m +no_defs no_defs <> # NGN / UTM zone 38N <31838> +proj=utm +zone=38 +ellps=WGS84 +units=m +no_defs no_defs <> # NGN / UTM zone 39N <31839> +proj=utm +zone=39 +ellps=WGS84 +units=m +no_defs no_defs <> # KUDAMS / KTM <31900> +proj=tmerc +lat_0=0 +lon_0=48 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 17N <31986> +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 18N <31987> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 19N <31988> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 20N <31989> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 21N <31990> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 22N <31991> +proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 17S <31992> +proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 18S <31993> +proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 19S <31994> +proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 20S <31995> +proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 21S <31996> +proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 22S <31997> +proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 23S <31998> +proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 24S <31999> +proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # SIRGAS / UTM zone 25S <32000> +proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs no_defs <> # NAD27 / Montana North <32001> +proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Montana Central <32002> +proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Montana South <32003> +proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Nebraska North <32005> +proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Nebraska South <32006> +proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Nevada East <32007> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Nevada Central <32008> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Nevada West <32009> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New Hampshire <32010> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New Jersey <32011> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.999975 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New Mexico East <32012> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New Mexico Central <32013> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New Mexico West <32014> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New York East <32015> +proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New York Central <32016> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New York West <32017> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / New York Long Island <32018> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / North Carolina <32019> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / North Dakota North <32020> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / North Dakota South <32021> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Ohio North <32022> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Ohio South <32023> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Oklahoma North <32024> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Oklahoma South <32025> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Oregon North <32026> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Oregon South <32027> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Pennsylvania North <32028> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Pennsylvania South <32029> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Rhode Island <32030> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / South Carolina North <32031> +proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / South Carolina South <32033> +proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / South Dakota North <32034> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / South Dakota South <32035> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Tennessee <32036> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Texas North <32037> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Texas North Central <32038> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Texas Central <32039> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Texas South Central <32040> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Texas South <32041> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Utah North <32042> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Utah Central <32043> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Utah South <32044> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Vermont <32045> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Virginia North <32046> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Virginia South <32047> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Washington North <32048> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Washington South <32049> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / West Virginia North <32050> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / West Virginia South <32051> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wisconsin North <32052> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wisconsin Central <32053> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wisconsin South <32054> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wyoming East <32055> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wyoming East Central <32056> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wyoming West Central <32057> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Wyoming West <32058> +proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / Guatemala Norte <32061> +proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / Guatemala Sur <32062> +proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / BLM 14N (ftUS) <32064> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 15N (ftUS) <32065> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 16N (ftUS) <32066> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 17N (ftUS) <32067> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 14N (feet) <32074> +proj=tmerc +lat_0=0 +lon_0=-99 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 15N (feet) <32075> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 16N (feet) <32076> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / BLM 17N (feet) <32077> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999600 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / MTM zone 1 <32081> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / MTM zone 2 <32082> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / MTM zone 3 <32083> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / MTM zone 4 <32084> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / MTM zone 5 <32085> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / MTM zone 6 <32086> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD27 / Quebec Lambert <32098> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD83 / Montana <32100> +proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Nebraska <32104> +proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Nevada East <32107> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Nevada Central <32108> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Nevada West <32109> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New Hampshire <32110> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New Jersey <32111> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New Mexico East <32112> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New Mexico Central <32113> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New Mexico West <32114> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New York East <32115> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New York Central <32116> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New York West <32117> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / New York Long Island <32118> +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / North Carolina <32119> +proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / North Dakota North <32120> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / North Dakota South <32121> +proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Ohio North <32122> +proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Ohio South <32123> +proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Oklahoma North <32124> +proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Oklahoma South <32125> +proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Oregon North <32126> +proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Oregon South <32127> +proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Pennsylvania North <32128> +proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Pennsylvania South <32129> +proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Rhode Island <32130> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / South Carolina <32133> +proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / South Dakota North <32134> +proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / South Dakota South <32135> +proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Tennessee <32136> +proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Texas North <32137> +proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Texas North Central <32138> +proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Texas Central <32139> +proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Texas South Central <32140> +proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Texas South <32141> +proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Utah North <32142> +proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Utah Central <32143> +proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Utah South <32144> +proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Vermont <32145> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Virginia North <32146> +proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Virginia South <32147> +proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Washington North <32148> +proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Washington South <32149> +proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / West Virginia North <32150> +proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / West Virginia South <32151> +proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wisconsin North <32152> +proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wisconsin Central <32153> +proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wisconsin South <32154> +proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wyoming East <32155> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wyoming East Central <32156> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wyoming West Central <32157> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Wyoming West <32158> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Puerto Rico & Virgin Is. <32161> +proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / SCoPQ zone 2 <32180> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 1 <32181> +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 2 <32182> +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 3 <32183> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 4 <32184> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 5 <32185> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 6 <32186> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 7 <32187> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 8 <32188> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 9 <32189> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 10 <32190> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 11 <32191> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 12 <32192> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 13 <32193> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 14 <32194> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 15 <32195> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 16 <32196> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / MTM zone 17 <32197> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Quebec Lambert <32198> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 1N <32201> +proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 2N <32202> +proj=utm +zone=2 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 3N <32203> +proj=utm +zone=3 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 4N <32204> +proj=utm +zone=4 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 5N <32205> +proj=utm +zone=5 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 6N <32206> +proj=utm +zone=6 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 7N <32207> +proj=utm +zone=7 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 8N <32208> +proj=utm +zone=8 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 9N <32209> +proj=utm +zone=9 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 10N <32210> +proj=utm +zone=10 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 11N <32211> +proj=utm +zone=11 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 12N <32212> +proj=utm +zone=12 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 13N <32213> +proj=utm +zone=13 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 14N <32214> +proj=utm +zone=14 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 15N <32215> +proj=utm +zone=15 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 16N <32216> +proj=utm +zone=16 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 17N <32217> +proj=utm +zone=17 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 18N <32218> +proj=utm +zone=18 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 19N <32219> +proj=utm +zone=19 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 20N <32220> +proj=utm +zone=20 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 21N <32221> +proj=utm +zone=21 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 22N <32222> +proj=utm +zone=22 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 23N <32223> +proj=utm +zone=23 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 24N <32224> +proj=utm +zone=24 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 25N <32225> +proj=utm +zone=25 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 26N <32226> +proj=utm +zone=26 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 27N <32227> +proj=utm +zone=27 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 28N <32228> +proj=utm +zone=28 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 29N <32229> +proj=utm +zone=29 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 30N <32230> +proj=utm +zone=30 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 31N <32231> +proj=utm +zone=31 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 32N <32232> +proj=utm +zone=32 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 33N <32233> +proj=utm +zone=33 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 34N <32234> +proj=utm +zone=34 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 35N <32235> +proj=utm +zone=35 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 36N <32236> +proj=utm +zone=36 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 37N <32237> +proj=utm +zone=37 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 38N <32238> +proj=utm +zone=38 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 39N <32239> +proj=utm +zone=39 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 40N <32240> +proj=utm +zone=40 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 41N <32241> +proj=utm +zone=41 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 42N <32242> +proj=utm +zone=42 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 43N <32243> +proj=utm +zone=43 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 44N <32244> +proj=utm +zone=44 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 45N <32245> +proj=utm +zone=45 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 46N <32246> +proj=utm +zone=46 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 47N <32247> +proj=utm +zone=47 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 48N <32248> +proj=utm +zone=48 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 49N <32249> +proj=utm +zone=49 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 50N <32250> +proj=utm +zone=50 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 51N <32251> +proj=utm +zone=51 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 52N <32252> +proj=utm +zone=52 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 53N <32253> +proj=utm +zone=53 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 54N <32254> +proj=utm +zone=54 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 55N <32255> +proj=utm +zone=55 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 56N <32256> +proj=utm +zone=56 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 57N <32257> +proj=utm +zone=57 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 58N <32258> +proj=utm +zone=58 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 59N <32259> +proj=utm +zone=59 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 60N <32260> +proj=utm +zone=60 +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 1S <32301> +proj=utm +zone=1 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 2S <32302> +proj=utm +zone=2 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 3S <32303> +proj=utm +zone=3 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 4S <32304> +proj=utm +zone=4 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 5S <32305> +proj=utm +zone=5 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 6S <32306> +proj=utm +zone=6 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 7S <32307> +proj=utm +zone=7 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 8S <32308> +proj=utm +zone=8 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 9S <32309> +proj=utm +zone=9 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 10S <32310> +proj=utm +zone=10 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 11S <32311> +proj=utm +zone=11 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 12S <32312> +proj=utm +zone=12 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 13S <32313> +proj=utm +zone=13 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 14S <32314> +proj=utm +zone=14 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 15S <32315> +proj=utm +zone=15 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 16S <32316> +proj=utm +zone=16 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 17S <32317> +proj=utm +zone=17 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 18S <32318> +proj=utm +zone=18 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 19S <32319> +proj=utm +zone=19 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 20S <32320> +proj=utm +zone=20 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 21S <32321> +proj=utm +zone=21 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 22S <32322> +proj=utm +zone=22 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 23S <32323> +proj=utm +zone=23 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 24S <32324> +proj=utm +zone=24 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 25S <32325> +proj=utm +zone=25 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 26S <32326> +proj=utm +zone=26 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 27S <32327> +proj=utm +zone=27 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 28S <32328> +proj=utm +zone=28 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 29S <32329> +proj=utm +zone=29 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 30S <32330> +proj=utm +zone=30 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 31S <32331> +proj=utm +zone=31 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 32S <32332> +proj=utm +zone=32 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 33S <32333> +proj=utm +zone=33 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 34S <32334> +proj=utm +zone=34 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 35S <32335> +proj=utm +zone=35 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 36S <32336> +proj=utm +zone=36 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 37S <32337> +proj=utm +zone=37 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 38S <32338> +proj=utm +zone=38 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 39S <32339> +proj=utm +zone=39 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 40S <32340> +proj=utm +zone=40 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 41S <32341> +proj=utm +zone=41 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 42S <32342> +proj=utm +zone=42 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 43S <32343> +proj=utm +zone=43 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 44S <32344> +proj=utm +zone=44 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 45S <32345> +proj=utm +zone=45 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 46S <32346> +proj=utm +zone=46 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 47S <32347> +proj=utm +zone=47 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 48S <32348> +proj=utm +zone=48 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 49S <32349> +proj=utm +zone=49 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 50S <32350> +proj=utm +zone=50 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 51S <32351> +proj=utm +zone=51 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 52S <32352> +proj=utm +zone=52 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 53S <32353> +proj=utm +zone=53 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 54S <32354> +proj=utm +zone=54 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 55S <32355> +proj=utm +zone=55 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 56S <32356> +proj=utm +zone=56 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 57S <32357> +proj=utm +zone=57 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 58S <32358> +proj=utm +zone=58 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 59S <32359> +proj=utm +zone=59 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72 / UTM zone 60S <32360> +proj=utm +zone=60 +south +ellps=WGS72 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 1N <32401> +proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 2N <32402> +proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 3N <32403> +proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 4N <32404> +proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 5N <32405> +proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 6N <32406> +proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 7N <32407> +proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 8N <32408> +proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 9N <32409> +proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 10N <32410> +proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 11N <32411> +proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 12N <32412> +proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 13N <32413> +proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 14N <32414> +proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 15N <32415> +proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 16N <32416> +proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 17N <32417> +proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 18N <32418> +proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 19N <32419> +proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 20N <32420> +proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 21N <32421> +proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 22N <32422> +proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 23N <32423> +proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 24N <32424> +proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 25N <32425> +proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 26N <32426> +proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 27N <32427> +proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 28N <32428> +proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 29N <32429> +proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 30N <32430> +proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 31N <32431> +proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 32N <32432> +proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 33N <32433> +proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 34N <32434> +proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 35N <32435> +proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 36N <32436> +proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 37N <32437> +proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 38N <32438> +proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 39N <32439> +proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 40N <32440> +proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 41N <32441> +proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 42N <32442> +proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 43N <32443> +proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 44N <32444> +proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 45N <32445> +proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 46N <32446> +proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 47N <32447> +proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 48N <32448> +proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 49N <32449> +proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 50N <32450> +proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 51N <32451> +proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 52N <32452> +proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 53N <32453> +proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 54N <32454> +proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 55N <32455> +proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 56N <32456> +proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 57N <32457> +proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 58N <32458> +proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 59N <32459> +proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 60N <32460> +proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 1S <32501> +proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 2S <32502> +proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 3S <32503> +proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 4S <32504> +proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 5S <32505> +proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 6S <32506> +proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 7S <32507> +proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 8S <32508> +proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 9S <32509> +proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 10S <32510> +proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 11S <32511> +proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 12S <32512> +proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 13S <32513> +proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 14S <32514> +proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 15S <32515> +proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 16S <32516> +proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 17S <32517> +proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 18S <32518> +proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 19S <32519> +proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 20S <32520> +proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 21S <32521> +proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 22S <32522> +proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 23S <32523> +proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 24S <32524> +proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 25S <32525> +proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 26S <32526> +proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 27S <32527> +proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 28S <32528> +proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 29S <32529> +proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 30S <32530> +proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 31S <32531> +proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 32S <32532> +proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 33S <32533> +proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 34S <32534> +proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 35S <32535> +proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 36S <32536> +proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 37S <32537> +proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 38S <32538> +proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 39S <32539> +proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 40S <32540> +proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 41S <32541> +proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 42S <32542> +proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 43S <32543> +proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 44S <32544> +proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 45S <32545> +proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 46S <32546> +proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 47S <32547> +proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 48S <32548> +proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 49S <32549> +proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 50S <32550> +proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 51S <32551> +proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 52S <32552> +proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 53S <32553> +proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 54S <32554> +proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 55S <32555> +proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 56S <32556> +proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 57S <32557> +proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 58S <32558> +proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 59S <32559> +proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 72BE / UTM zone 60S <32560> +proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 1N <32601> +proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 2N <32602> +proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 3N <32603> +proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 4N <32604> +proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 5N <32605> +proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 6N <32606> +proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 7N <32607> +proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 8N <32608> +proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 9N <32609> +proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 10N <32610> +proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 11N <32611> +proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 12N <32612> +proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 13N <32613> +proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 14N <32614> +proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 15N <32615> +proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 16N <32616> +proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 17N <32617> +proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 18N <32618> +proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 19N <32619> +proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 20N <32620> +proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 21N <32621> +proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 22N <32622> +proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 23N <32623> +proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 24N <32624> +proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 25N <32625> +proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 26N <32626> +proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 27N <32627> +proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 28N <32628> +proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 29N <32629> +proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 30N <32630> +proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 31N <32631> +proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 32N <32632> +proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 33N <32633> +proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 34N <32634> +proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 35N <32635> +proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 36N <32636> +proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 37N <32637> +proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 38N <32638> +proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 39N <32639> +proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 40N <32640> +proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 41N <32641> +proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 42N <32642> +proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 43N <32643> +proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 44N <32644> +proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 45N <32645> +proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 46N <32646> +proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 47N <32647> +proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 48N <32648> +proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 49N <32649> +proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 50N <32650> +proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 51N <32651> +proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 52N <32652> +proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 53N <32653> +proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 54N <32654> +proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 55N <32655> +proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 56N <32656> +proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 57N <32657> +proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 58N <32658> +proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 59N <32659> +proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 60N <32660> +proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UPS North <32661> +proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 1S <32701> +proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 2S <32702> +proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 3S <32703> +proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 4S <32704> +proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 5S <32705> +proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 6S <32706> +proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 7S <32707> +proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 8S <32708> +proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 9S <32709> +proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 10S <32710> +proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 11S <32711> +proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 12S <32712> +proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 13S <32713> +proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 14S <32714> +proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 15S <32715> +proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 16S <32716> +proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 17S <32717> +proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 18S <32718> +proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 19S <32719> +proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 20S <32720> +proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 21S <32721> +proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 22S <32722> +proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 23S <32723> +proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 24S <32724> +proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 25S <32725> +proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 26S <32726> +proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 27S <32727> +proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 28S <32728> +proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 29S <32729> +proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 30S <32730> +proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 31S <32731> +proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 32S <32732> +proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 33S <32733> +proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 34S <32734> +proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 35S <32735> +proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 36S <32736> +proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 37S <32737> +proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 38S <32738> +proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 39S <32739> +proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 40S <32740> +proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 41S <32741> +proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 42S <32742> +proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 43S <32743> +proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 44S <32744> +proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 45S <32745> +proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 46S <32746> +proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 47S <32747> +proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 48S <32748> +proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 49S <32749> +proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 50S <32750> +proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 51S <32751> +proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 52S <32752> +proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 53S <32753> +proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 54S <32754> +proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 55S <32755> +proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 56S <32756> +proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 57S <32757> +proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 58S <32758> +proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 59S <32759> +proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UTM zone 60S <32760> +proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / UPS South <32761> +proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS 84 / TM 36 SE <32766> +proj=tmerc +lat_0=0 +lon_0=36 +k=0.999600 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # Pulkovo 1995 GK Zone 2 <20002> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m no_defs <> # Pulkovo 1995 GK Zone 3 <20003> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m no_defs <> # Pulkovo 1995 GK Zone 2N <20062> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m no_defs <> # Pulkovo 1995 GK Zone 3N <20063> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m no_defs <> # La Canoa UTM Zone 21N <24721> +proj=utm +zone=21 +ellps=intl +units=m no_defs <> # NAD 1927 StatePlane Hawaii 1 FIPS 5101 <26761> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 2 FIPS 5102 <26762> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 3 FIPS 5103 <26763> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 4 FIPS 5104 <26764> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 5 FIPS 5105 <26765> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Michigan North FIPS 2111 <26788> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Michigan Central FIPS 2112 <26789> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Michigan South FIPS 2113 <26790> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # Nord Algerie <30591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # Sud Algerie <30592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # Germany Zone 1 <31491> +proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 2 <31492> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 3 <31493> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 4 <31494> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 5 <31495> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m no_defs <> # NAD 1927 StatePlane Puerto Rico FIPS 5201 <32059> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Virgin Islands St Croix FIPS 5202 <32060> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # Sphere Plate Carree <53001> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Equidistant Cylindrical <53002> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Miller Cylindrical <53003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Mercator <53004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Sinusoidal <53008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Mollweide <53009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert VI <53010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert V <53011> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert IV <53012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert III <53013> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert II <53014> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert I <53015> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Gall Stereographic <53016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Behrmann <53017> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Winkel I <53018> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Winkel II <53019> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Polyconic <53021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Quartic Authalic <53022> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Loximuthal <53023> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Bonne <53024> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Hotine <53025> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Stereographic <53026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Equidistant Conic <53027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Cassini <53028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Van der Grinten I <53029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Robinson <53030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Two Point Equidistant <53031> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Azimuthal Equidistant <53032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # World Plate Carree <54001> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Equidistant Cylindrical <54002> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Miller Cylindrical <54003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Mercator <54004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Sinusoidal <54008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Mollweide <54009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert VI <54010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert V <54011> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert IV <54012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert III <54013> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert II <54014> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert I <54015> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Gall Stereographic <54016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Behrmann <54017> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Winkel I <54018> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Winkel II <54019> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Polyconic <54021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Quartic Authalic <54022> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Loximuthal <54023> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Bonne <54024> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Hotine <54025> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Stereographic <54026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Equidistant Conic <54027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Cassini <54028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Van der Grinten I <54029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Robinson <54030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Two Point Equidistant <54031> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Azimuthal Equidistant <54032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # NAD 1927 StatePlane Guam FIPS 5400 <65061> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Guam FIPS 5400 <65161> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Canada Albers Equal Area Conic <102001> +proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Canada Lambert Conformal Conic <102002> +proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # USA Contiguous Albers Equal Area Conic <102003> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # USA Contiguous Lambert Conformal Conic <102004> +proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # USA Contiguous Equidistant Conic <102005> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Alaska Albers Equal Area Conic <102006> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Hawaii Albers Equal Area Conic <102007> +proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # North America Albers Equal Area Conic <102008> +proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # North America Lambert Conformal Conic <102009> +proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # North America Equidistant Conic <102010> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Africa Sinusoidal <102011> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia Lambert Conformal Conic <102012> +proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Europe Albers Equal Area Conic <102013> +proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # Europe Lambert Conformal Conic <102014> +proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # South America Lambert Conformal Conic <102015> +proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> # North Pole Azimuthal Equidistant <102016> +proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # North Pole Lambert Azimuthal Equal Area <102017> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # North Pole Stereographic <102018> +proj=stere +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # South Pole Azimuthal Equidistant <102019> +proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # South Pole Lambert Azimuthal Equal Area <102020> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # South Pole Stereographic <102021> +proj=stere +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Africa Albers Equal Area Conic <102022> +proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Africa Equidistant Conic <102023> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Africa Lambert Conformal Conic <102024> +proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia North Albers Equal Area Conic <102025> +proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia North Equidistant Conic <102026> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia North Lambert Conformal Conic <102027> +proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia South Albers Equal Area Conic <102028> +proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia South Equidistant Conic <102029> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia South Lambert Conformal Conic <102030> +proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Europe Equidistant Conic <102031> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # South America Equidistant Conic <102032> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> # South America Albers Equal Area Conic <102033> +proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> # S-JTSK Krovak <102065> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m no_defs <> # S-JTSK Ferro Krovak East North <102066> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m no_defs <> # S-JTSK Krovak East North <102067> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m no_defs <> # Monte Mario Italy 1 <102091> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m no_defs <> # Monte Mario Italy 2 <102092> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +units=m no_defs <> # NGO 1948 Norway Zone 1 <102101> +proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 2 <102102> +proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 3 <102103> +proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 4 <102104> +proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 5 <102105> +proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 6 <102106> +proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 7 <102107> +proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 8 <102108> +proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # RGF 1993 Lambert 93 <102110> +proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m no_defs <> # Old Hawaiian UTM Zone 4N <102114> +proj=utm +zone=4 +ellps=clrk66 +units=m no_defs <> # Old Hawaiian UTM Zone 5N <102115> +proj=utm +zone=5 +ellps=clrk66 +units=m no_defs <> # NAD 1927 Michigan GeoRef Feet US <102120> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 Michigan GeoRef Feet US <102121> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 Michigan GeoRef Meters <102122> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m no_defs <> # NAD 1983 Michigan GeoRef Meters <102123> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # NGO 1948 UTM Zone 32N <102132> +proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 UTM Zone 33N <102133> +proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 UTM Zone 34N <102134> +proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 UTM Zone 35N <102135> +proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # Hong Kong 1980 Grid <102140> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m no_defs <> # Hong Kong 1980 UTM Zone 49N <102141> +proj=utm +zone=49 +ellps=intl +units=m no_defs <> # Hong Kong 1980 UTM Zone 50N <102142> +proj=utm +zone=50 +ellps=intl +units=m no_defs <> # Tokyo UTM Zone 51N <102151> +proj=utm +zone=51 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 52N <102152> +proj=utm +zone=52 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 53N <102153> +proj=utm +zone=53 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 54N <102154> +proj=utm +zone=54 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 55N <102155> +proj=utm +zone=55 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 56N <102156> +proj=utm +zone=56 +ellps=bessel +units=m no_defs <> # Datum 73 Hayford Gauss IGeoE <102160> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m no_defs <> # Datum 73 Hayford Gauss IPCC <102161> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m no_defs <> # Graciosa Base SW 1948 UTM Zone 26N <102162> +proj=utm +zone=26 +ellps=intl +units=m no_defs <> # Lisboa Bessel Bonne <102163> +ellps=bessel +units=m no_defs <> # Lisboa Hayford Gauss IGeoE <102164> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +units=m no_defs <> # Lisboa Hayford Gauss IPCC <102165> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # Observ Meteorologico 1939 UTM Zone 25N <102166> +proj=utm +zone=25 +ellps=intl +units=m no_defs <> # Porto Santo 1936 UTM Zone 28N <102167> +proj=utm +zone=28 +ellps=intl +units=m no_defs <> # Sao Braz UTM Zone 26N <102168> +proj=utm +zone=26 +ellps=intl +units=m no_defs <> # Selvagem Grande 1938 UTM Zone 28N <102169> +proj=utm +zone=28 +ellps=intl +units=m no_defs <> # Nord Maroc Degree <102191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Sud Maroc Degree <102192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Sahara Degree <102193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NAD 1983 HARN StatePlane Alabama East FIPS 0101 <102229> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Alabama West FIPS 0102 <102230> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California I FIPS 0401 <102241> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California II FIPS 0402 <102242> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California III FIPS 0403 <102243> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California IV FIPS 0404 <102244> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California V FIPS 0405 <102245> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California VI FIPS 0406 <102246> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arizona East FIPS 0201 <102248> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arizona Central FIPS 0202 <102249> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arizona West FIPS 0203 <102250> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arkansas North FIPS 0301 <102251> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arkansas South FIPS 0302 <102252> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Colorado North FIPS 0501 <102253> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Colorado Central FIPS 0502 <102254> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Colorado South FIPS 0503 <102255> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Connecticut FIPS 0600 <102256> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Delaware FIPS 0700 <102257> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Florida East FIPS 0901 <102258> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Florida West FIPS 0902 <102259> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Florida North FIPS 0903 <102260> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 1 FIPS 5101 <102261> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 2 FIPS 5102 <102262> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 3 FIPS 5103 <102263> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 4 FIPS 5104 <102264> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 5 FIPS 5105 <102265> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Georgia East FIPS 1001 <102266> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Georgia West FIPS 1002 <102267> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Idaho East FIPS 1101 <102268> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Idaho Central FIPS 1102 <102269> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Idaho West FIPS 1103 <102270> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Illinois East FIPS 1201 <102271> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Illinois West FIPS 1202 <102272> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Indiana East FIPS 1301 <102273> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Indiana West FIPS 1302 <102274> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kansas North FIPS 1501 <102277> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kansas South FIPS 1502 <102278> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kentucky North FIPS 1601 <102279> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kentucky South FIPS 1602 <102280> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Louisiana North FIPS 1701 <102281> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Louisiana South FIPS 1702 <102282> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Maine East FIPS 1801 <102283> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Maine West FIPS 1802 <102284> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Maryland FIPS 1900 <102285> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Massachusetts Mainland FIPS 2001 <102286> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Massachusetts Island FIPS 2002 <102287> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Michigan North FIPS 2111 <102288> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Michigan Central FIPS 2112 <102289> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Michigan South FIPS 2113 <102290> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Minnesota North FIPS 2201 <102291> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Minnesota Central FIPS 2202 <102292> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Minnesota South FIPS 2203 <102293> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Mississippi East FIPS 2301 <102294> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Mississippi West FIPS 2302 <102295> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Missouri East FIPS 2401 <102296> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Missouri Central FIPS 2402 <102297> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Missouri West FIPS 2403 <102298> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Montana FIPS 2500 <102300> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nebraska FIPS 2600 <102304> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nevada East FIPS 2701 <102307> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nevada Central FIPS 2702 <102308> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nevada West FIPS 2703 <102309> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Hampshire FIPS 2800 <102310> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Jersey FIPS 2900 <102311> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Mexico East FIPS 3001 <102312> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Mexico Central FIPS 3002 <102313> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Mexico West FIPS 3003 <102314> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York East FIPS 3101 <102315> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York Central FIPS 3102 <102316> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York West FIPS 3103 <102317> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York Long Island FIPS 3104 <102318> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane North Dakota North FIPS 3301 <102320> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane North Dakota South FIPS 3302 <102321> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Ohio North FIPS 3401 <102322> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Ohio South FIPS 3402 <102323> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oklahoma North FIPS 3501 <102324> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oklahoma South FIPS 3502 <102325> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oregon North FIPS 3601 <102326> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oregon South FIPS 3602 <102327> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Rhode Island FIPS 3800 <102330> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane South Dakota North FIPS 4001 <102334> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane South Dakota South FIPS 4002 <102335> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Tennessee FIPS 4100 <102336> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas North FIPS 4201 <102337> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas North Central FIPS 4202 <102338> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas Central FIPS 4203 <102339> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas South Central FIPS 4204 <102340> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas South FIPS 4205 <102341> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Utah North FIPS 4301 <102342> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Utah Central FIPS 4302 <102343> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Utah South FIPS 4303 <102344> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Vermont FIPS 4400 <102345> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Virginia North FIPS 4501 <102346> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Virginia South FIPS 4502 <102347> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Washington North FIPS 4601 <102348> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Washington South FIPS 4602 <102349> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane West Virginia North FIPS 4701 <102350> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane West Virginia South FIPS 4702 <102351> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wisconsin North FIPS 4801 <102352> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wisconsin Central FIPS 4802 <102353> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wisconsin South FIPS 4803 <102354> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming East FIPS 4901 <102355> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming East Central FIPS 4902 <102356> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming West Central FIPS 4903 <102357> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming West FIPS 4904 <102358> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Puerto Rico Virgin Islands FIPS 5200 <102361> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m no_defs <> # Nord Algerie Ancienne Degree <102491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Sud Algerie Ancienne Degree <102492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France I degrees <102581> +proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France II degrees <102582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France III degrees <102583> +proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France IV degrees <102584> +proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Nord Algerie Degree <102591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # Sud Algerie Degree <102592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # NAD 1983 StatePlane Alabama East FIPS 0101 Feet <102629> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alabama West FIPS 0102 Feet <102630> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 1 FIPS 5001 Feet <102631> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 2 FIPS 5002 Feet <102632> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 3 FIPS 5003 Feet <102633> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 4 FIPS 5004 Feet <102634> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 5 FIPS 5005 Feet <102635> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 6 FIPS 5006 Feet <102636> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 7 FIPS 5007 Feet <102637> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 8 FIPS 5008 Feet <102638> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 9 FIPS 5009 Feet <102639> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 10 FIPS 5010 Feet <102640> +proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California I FIPS 0401 Feet <102641> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California II FIPS 0402 Feet <102642> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California III FIPS 0403 Feet <102643> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California IV FIPS 0404 Feet <102644> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California V FIPS 0405 Feet <102645> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California VI FIPS 0406 Feet <102646> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arizona East FIPS 0201 Feet <102648> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arizona Central FIPS 0202 Feet <102649> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arizona West FIPS 0203 Feet <102650> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arkansas North FIPS 0301 Feet <102651> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arkansas South FIPS 0302 Feet <102652> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Colorado North FIPS 0501 Feet <102653> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Colorado Central FIPS 0502 Feet <102654> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Colorado South FIPS 0503 Feet <102655> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Connecticut FIPS 0600 Feet <102656> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Delaware FIPS 0700 Feet <102657> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Florida East FIPS 0901 Feet <102658> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Florida West FIPS 0902 Feet <102659> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Florida North FIPS 0903 Feet <102660> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 1 FIPS 5101 Feet <102661> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 2 FIPS 5102 Feet <102662> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 3 FIPS 5103 Feet <102663> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 4 FIPS 5104 Feet <102664> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 5 FIPS 5105 Feet <102665> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Georgia East FIPS 1001 Feet <102666> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Georgia West FIPS 1002 Feet <102667> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Idaho East FIPS 1101 Feet <102668> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Idaho Central FIPS 1102 Feet <102669> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Idaho West FIPS 1103 Feet <102670> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Illinois East FIPS 1201 Feet <102671> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Illinois West FIPS 1202 Feet <102672> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Indiana East FIPS 1301 Feet <102673> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Indiana West FIPS 1302 Feet <102674> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Iowa North FIPS 1401 Feet <102675> +proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Iowa South FIPS 1402 Feet <102676> +proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kansas North FIPS 1501 Feet <102677> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kansas South FIPS 1502 Feet <102678> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kentucky North FIPS 1601 Feet <102679> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kentucky South FIPS 1602 Feet <102680> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Louisiana North FIPS 1701 Feet <102681> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Louisiana South FIPS 1702 Feet <102682> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Maine East FIPS 1801 Feet <102683> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Maine West FIPS 1802 Feet <102684> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Maryland FIPS 1900 Feet <102685> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 Feet <102686> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Massachusetts Island FIPS 2002 Feet <102687> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Michigan North FIPS 2111 Feet <102688> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Michigan Central FIPS 2112 Feet <102689> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Michigan South FIPS 2113 Feet <102690> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Minnesota North FIPS 2201 Feet <102691> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Minnesota Central FIPS 2202 Feet <102692> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Minnesota South FIPS 2203 Feet <102693> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Mississippi East FIPS 2301 Feet <102694> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Mississippi West FIPS 2302 Feet <102695> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Missouri East FIPS 2401 Feet <102696> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Missouri Central FIPS 2402 Feet <102697> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Missouri West FIPS 2403 Feet <102698> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Montana FIPS 2500 Feet <102700> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nebraska FIPS 2600 Feet <102704> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nevada East FIPS 2701 Feet <102707> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nevada Central FIPS 2702 Feet <102708> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nevada West FIPS 2703 Feet <102709> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Hampshire FIPS 2800 Feet <102710> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Jersey FIPS 2900 Feet <102711> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Mexico East FIPS 3001 Feet <102712> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Mexico Central FIPS 3002 Feet <102713> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Mexico West FIPS 3003 Feet <102714> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York East FIPS 3101 Feet <102715> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York Central FIPS 3102 Feet <102716> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York West FIPS 3103 Feet <102717> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York Long Island FIPS 3104 Feet <102718> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane North Carolina FIPS 3200 Feet <102719> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane North Dakota North FIPS 3301 Feet <102720> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane North Dakota South FIPS 3302 Feet <102721> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Ohio North FIPS 3401 Feet <102722> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Ohio South FIPS 3402 Feet <102723> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oklahoma North FIPS 3501 Feet <102724> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oklahoma South FIPS 3502 Feet <102725> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oregon North FIPS 3601 Feet <102726> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oregon South FIPS 3602 Feet <102727> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Pennsylvania North FIPS 3701 Feet <102728> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Pennsylvania South FIPS 3702 Feet <102729> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Rhode Island FIPS 3800 Feet <102730> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane South Carolina FIPS 3900 Feet <102733> +proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane South Dakota North FIPS 4001 Feet <102734> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane South Dakota South FIPS 4002 Feet <102735> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Tennessee FIPS 4100 Feet <102736> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas North FIPS 4201 Feet <102737> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas North Central FIPS 4202 Feet <102738> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas Central FIPS 4203 Feet <102739> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas South Central FIPS 4204 Feet <102740> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas South FIPS 4205 Feet <102741> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Utah North FIPS 4301 Feet <102742> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Utah Central FIPS 4302 Feet <102743> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Utah South FIPS 4303 Feet <102744> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Vermont FIPS 4400 Feet <102745> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Virginia North FIPS 4501 Feet <102746> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Virginia South FIPS 4502 Feet <102747> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Washington North FIPS 4601 Feet <102748> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Washington South FIPS 4602 Feet <102749> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane West Virginia North FIPS 4701 Feet <102750> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane West Virginia South FIPS 4702 Feet <102751> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wisconsin North FIPS 4801 Feet <102752> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wisconsin Central FIPS 4802 Feet <102753> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wisconsin South FIPS 4803 Feet <102754> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming East FIPS 4901 Feet <102755> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming East Central FIPS 4902 Feet <102756> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming West Central FIPS 4903 Feet <102757> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming West FIPS 4904 Feet <102758> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Puerto Rico Virgin Islands FIPS 5200 Feet <102761> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Guam FIPS 5400 Feet <102766> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # Belge Lambert 1972 <103300> +proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m no_defs <> # GCS International 1967 <4023> +proj=longlat +ellps=aust_SA no_defs <> # GCS Bern 1898 <4217> +proj=longlat +ellps=bessel no_defs <> # GCS Voirol Unifie 1960 <4305> +proj=longlat +ellps=clrk80 no_defs <> # GCS Montserrat 1958 <4404> +proj=longlat +ellps=clrk80 no_defs <> # GCS Voirol Unifie 1960 Paris <4812> +proj=longlat +ellps=clrk80 +pm=2.337229166666667 no_defs <> # GCS WGS 1966 <37001> +proj=longlat +ellps=WGS66 no_defs <> # GCS Fischer 1960 <37002> +proj=longlat +a=6378166 +b=6356784.283607107 no_defs <> # GCS Fischer 1968 <37003> +proj=longlat +a=6378150 +b=6356768.337244385 no_defs <> # GCS Fischer Modified <37004> +proj=longlat +ellps=fschr60m no_defs <> # GCS Hough 1960 <37005> +proj=longlat +a=6378270 +b=6356794.343434343 no_defs <> # GCS Everest Modified 1969 <37006> +proj=longlat +a=6377295.664 +b=6356094.667915204 no_defs <> # GCS Walbeck <37007> +proj=longlat +a=6376896 +b=6355834.846687363 no_defs <> # GCS Sphere ARC INFO <37008> +proj=longlat +a=6370997 +b=6370997 no_defs <> # GCS European 1979 <37201> +proj=longlat +ellps=intl no_defs <> # GCS Everest Bangladesh <37202> +proj=longlat +a=6377276.345 +b=6356075.413140239 no_defs <> # GCS Everest India Nepal <37203> +proj=longlat +a=6377301.243 +b=6356100.230165385 no_defs <> # GCS Hjorsey 1955 <37204> +proj=longlat +ellps=intl no_defs <> # GCS Hong Kong 1963 <37205> +proj=longlat +ellps=intl no_defs <> # GCS Oman <37206> +proj=longlat +ellps=clrk80 no_defs <> # GCS South Asia Singapore <37207> +proj=longlat +ellps=fschr60m no_defs <> # GCS Ayabelle <37208> +proj=longlat +ellps=clrk80 no_defs <> # GCS Point 58 <37211> +proj=longlat +ellps=clrk80 no_defs <> # GCS Beacon E 1945 <37212> +proj=longlat +ellps=intl no_defs <> # GCS Tern Island 1961 <37213> +proj=longlat +ellps=intl no_defs <> # GCS Astro 1952 <37214> +proj=longlat +ellps=intl no_defs <> # GCS Bellevue IGN <37215> +proj=longlat +ellps=intl no_defs <> # GCS Canton 1966 <37216> +proj=longlat +ellps=intl no_defs <> # GCS Chatham Island 1971 <37217> +proj=longlat +ellps=intl no_defs <> # GCS DOS 1968 <37218> +proj=longlat +ellps=intl no_defs <> # GCS Easter Island 1967 <37219> +proj=longlat +ellps=intl no_defs <> # GCS Guam 1963 <37220> +proj=longlat +ellps=clrk66 no_defs <> # GCS GUX 1 <37221> +proj=longlat +ellps=intl no_defs <> # GCS Johnston Island 1961 <37222> +proj=longlat +ellps=intl no_defs <> # GCS Carthage Degree <37223> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Midway 1961 <37224> +proj=longlat +ellps=intl no_defs <> # GCS Pitcairn 1967 <37226> +proj=longlat +ellps=intl no_defs <> # GCS Santo DOS 1965 <37227> +proj=longlat +ellps=intl no_defs <> # GCS Viti Levu 1916 <37228> +proj=longlat +ellps=clrk80 no_defs <> # GCS Wake Eniwetok 1960 <37229> +proj=longlat +a=6378270 +b=6356794.343434343 no_defs <> # GCS Wake Island 1952 <37230> +proj=longlat +ellps=intl no_defs <> # GCS Anna 1 1965 <37231> +proj=longlat +ellps=aust_SA no_defs <> # GCS Gan 1970 <37232> +proj=longlat +ellps=intl no_defs <> # GCS ISTS 073 1969 <37233> +proj=longlat +ellps=intl no_defs <> # GCS Kerguelen Island 1949 <37234> +proj=longlat +ellps=intl no_defs <> # GCS Reunion <37235> +proj=longlat +ellps=intl no_defs <> # GCS Ascension Island 1958 <37237> +proj=longlat +ellps=intl no_defs <> # GCS DOS 71 4 <37238> +proj=longlat +ellps=intl no_defs <> # GCS Cape Canaveral <37239> +proj=longlat +ellps=clrk66 no_defs <> # GCS Fort Thomas 1955 <37240> +proj=longlat +ellps=clrk80 no_defs <> # GCS Graciosa Base SW 1948 <37241> +proj=longlat +ellps=intl no_defs <> # GCS ISTS 061 1968 <37242> +proj=longlat +ellps=intl no_defs <> # GCS LC5 1961 <37243> +proj=longlat +ellps=clrk66 no_defs <> # GCS Observ Meteorologico 1939 <37245> +proj=longlat +ellps=intl no_defs <> # GCS Pico de Las Nieves <37246> +proj=longlat +ellps=intl no_defs <> # GCS Porto Santo 1936 <37247> +proj=longlat +ellps=intl no_defs <> # GCS Sao Braz <37249> +proj=longlat +ellps=intl no_defs <> # GCS Selvagem Grande 1938 <37250> +proj=longlat +ellps=intl no_defs <> # GCS Tristan 1968 <37251> +proj=longlat +ellps=intl no_defs <> # GCS Samoa 1962 <37252> +proj=longlat +ellps=clrk66 no_defs <> # GCS Camp Area <37253> +proj=longlat +ellps=intl no_defs <> # GCS Deception Island <37254> +proj=longlat +ellps=clrk80 no_defs <> # GCS Gunung Segara <37255> +proj=longlat +ellps=bessel no_defs <> # GCS S42 Hungary <37257> +proj=longlat +ellps=krass no_defs <> # GCS Kusaie 1951 <37259> +proj=longlat +ellps=intl no_defs <> # GCS Alaskan Islands <37260> +proj=longlat +ellps=clrk66 no_defs <> # GCS Assumed Geographic 1 <104000> +proj=longlat +ellps=clrk66 +datum=NAD27 no_defs <> # GCS Estonia 1937 <104101> +proj=longlat +ellps=bessel no_defs <> # GCS Hermannskogel <104102> +proj=longlat +ellps=bessel no_defs <> # GCS Sierra Leone 1960 <104103> +proj=longlat +ellps=clrk80 no_defs <> # GCS Hong Kong 1980 <104104> +proj=longlat +ellps=intl no_defs <> # GCS Datum Lisboa Bessel <104105> +proj=longlat +ellps=bessel no_defs <> # GCS Datum Lisboa Hayford <104106> +proj=longlat +ellps=intl no_defs <> # GCS RGF 1993 <104107> +proj=longlat +ellps=GRS80 no_defs <> # GCS NZGD 2000 <104108> +proj=longlat +ellps=GRS80 no_defs <> # GCS Merchich Degree <104261> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Voirol 1875 Degree <104304> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Voirol Unifie 1960 Degree <104305> +proj=longlat +ellps=clrk80 no_defs <> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/esri.extra�������������������������������������������������������������0000664�0000000�0000000�00000226053�11770671653�0020060�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Pulkovo 1995 GK Zone 2 <20002> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=krass +units=m no_defs <> # Pulkovo 1995 GK Zone 3 <20003> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +units=m no_defs <> # Pulkovo 1995 GK Zone 2N <20062> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m no_defs <> # Pulkovo 1995 GK Zone 3N <20063> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +units=m no_defs <> # La Canoa UTM Zone 21N <24721> +proj=utm +zone=21 +ellps=intl +units=m no_defs <> # NAD 1927 StatePlane Hawaii 1 FIPS 5101 <26761> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 2 FIPS 5102 <26762> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 3 FIPS 5103 <26763> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 4 FIPS 5104 <26764> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Hawaii 5 FIPS 5105 <26765> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Michigan North FIPS 2111 <26788> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Michigan Central FIPS 2112 <26789> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Michigan South FIPS 2113 <26790> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024385 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # Nord Algerie <30591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # Sud Algerie <30592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # Germany Zone 1 <31491> +proj=tmerc +lat_0=0 +lon_0=3 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 2 <31492> +proj=tmerc +lat_0=0 +lon_0=6 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 3 <31493> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 4 <31494> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=bessel +units=m no_defs <> # Germany Zone 5 <31495> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=bessel +units=m no_defs <> # NAD 1927 StatePlane Puerto Rico FIPS 5201 <32059> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 StatePlane Virgin Islands St Croix FIPS 5202 <32060> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012193 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # Sphere Plate Carree <53001> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Equidistant Cylindrical <53002> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Miller Cylindrical <53003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Mercator <53004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Sinusoidal <53008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Mollweide <53009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert VI <53010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert V <53011> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert IV <53012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert III <53013> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert II <53014> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Eckert I <53015> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Gall Stereographic <53016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Behrmann <53017> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Winkel I <53018> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Winkel II <53019> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Polyconic <53021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Quartic Authalic <53022> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Loximuthal <53023> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Bonne <53024> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Hotine <53025> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Stereographic <53026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Equidistant Conic <53027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Cassini <53028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Van der Grinten I <53029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Robinson <53030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Two Point Equidistant <53031> +a=6371000 +b=6371000 +units=m no_defs <> # Sphere Azimuthal Equidistant <53032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m no_defs <> # World Plate Carree <54001> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Equidistant Cylindrical <54002> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Miller Cylindrical <54003> +proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Mercator <54004> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Sinusoidal <54008> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Mollweide <54009> +proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert VI <54010> +proj=eck6 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert V <54011> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert IV <54012> +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert III <54013> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert II <54014> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Eckert I <54015> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Gall Stereographic <54016> +proj=gall +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Behrmann <54017> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Winkel I <54018> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Winkel II <54019> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Polyconic <54021> +proj=poly +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Quartic Authalic <54022> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Loximuthal <54023> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Bonne <54024> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Hotine <54025> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Stereographic <54026> +proj=stere +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Equidistant Conic <54027> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=60 +lat_2=60 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Cassini <54028> +proj=cass +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Van der Grinten I <54029> +proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Robinson <54030> +proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Two Point Equidistant <54031> +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # World Azimuthal Equidistant <54032> +proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # NAD 1927 StatePlane Guam FIPS 5400 <65061> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000.00000000001 +y_0=50000.00000000001 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Guam FIPS 5400 <65161> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=50000 +y_0=50000 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Canada Albers Equal Area Conic <102001> +proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Canada Lambert Conformal Conic <102002> +proj=lcc +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # USA Contiguous Albers Equal Area Conic <102003> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # USA Contiguous Lambert Conformal Conic <102004> +proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # USA Contiguous Equidistant Conic <102005> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Alaska Albers Equal Area Conic <102006> +proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Hawaii Albers Equal Area Conic <102007> +proj=aea +lat_1=8 +lat_2=18 +lat_0=13 +lon_0=-157 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # North America Albers Equal Area Conic <102008> +proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # North America Lambert Conformal Conic <102009> +proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # North America Equidistant Conic <102010> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # Africa Sinusoidal <102011> +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia Lambert Conformal Conic <102012> +proj=lcc +lat_1=30 +lat_2=62 +lat_0=0 +lon_0=105 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Europe Albers Equal Area Conic <102013> +proj=aea +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # Europe Lambert Conformal Conic <102014> +proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # South America Lambert Conformal Conic <102015> +proj=lcc +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> # North Pole Azimuthal Equidistant <102016> +proj=aeqd +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # North Pole Lambert Azimuthal Equal Area <102017> +proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # North Pole Stereographic <102018> +proj=stere +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # South Pole Azimuthal Equidistant <102019> +proj=aeqd +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # South Pole Lambert Azimuthal Equal Area <102020> +proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # South Pole Stereographic <102021> +proj=stere +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Africa Albers Equal Area Conic <102022> +proj=aea +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Africa Equidistant Conic <102023> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=20 +lat_2=-23 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Africa Lambert Conformal Conic <102024> +proj=lcc +lat_1=20 +lat_2=-23 +lat_0=0 +lon_0=25 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia North Albers Equal Area Conic <102025> +proj=aea +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia North Equidistant Conic <102026> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=15 +lat_2=65 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia North Lambert Conformal Conic <102027> +proj=lcc +lat_1=15 +lat_2=65 +lat_0=30 +lon_0=95 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia South Albers Equal Area Conic <102028> +proj=aea +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia South Equidistant Conic <102029> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=7 +lat_2=-32 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Asia South Lambert Conformal Conic <102030> +proj=lcc +lat_1=7 +lat_2=-32 +lat_0=-15 +lon_0=125 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m no_defs <> # Europe Equidistant Conic <102031> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=43 +lat_2=62 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # South America Equidistant Conic <102032> +proj=eqdc +lat_0=0 +lon_0=0 +lat_1=-5 +lat_2=-42 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> # South America Albers Equal Area Conic <102033> +proj=aea +lat_1=-5 +lat_2=-42 +lat_0=-32 +lon_0=-60 +x_0=0 +y_0=0 +ellps=aust_SA +units=m no_defs <> # S-JTSK Krovak <102065> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m no_defs <> # S-JTSK Ferro Krovak East North <102066> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=-17.66666666666667 +units=m no_defs <> # S-JTSK Krovak East North <102067> +proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m no_defs <> # Monte Mario Italy 1 <102091> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +ellps=intl +units=m no_defs <> # Monte Mario Italy 2 <102092> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999600 +x_0=2520000 +y_0=0 +ellps=intl +units=m no_defs <> # NGO 1948 Norway Zone 1 <102101> +proj=tmerc +lat_0=58 +lon_0=6.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 2 <102102> +proj=tmerc +lat_0=58 +lon_0=8.389583333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 3 <102103> +proj=tmerc +lat_0=58 +lon_0=10.72291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 4 <102104> +proj=tmerc +lat_0=58 +lon_0=13.22291666666667 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 5 <102105> +proj=tmerc +lat_0=58 +lon_0=16.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 6 <102106> +proj=tmerc +lat_0=58 +lon_0=20.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 7 <102107> +proj=tmerc +lat_0=58 +lon_0=24.88958333333333 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 Norway Zone 8 <102108> +proj=tmerc +lat_0=58 +lon_0=29.05625 +k=1.000000 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # RGF 1993 Lambert 93 <102110> +proj=lcc +lat_1=44 +lat_2=49 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m no_defs <> # Old Hawaiian UTM Zone 4N <102114> +proj=utm +zone=4 +ellps=clrk66 +units=m no_defs <> # Old Hawaiian UTM Zone 5N <102115> +proj=utm +zone=5 +ellps=clrk66 +units=m no_defs <> # NAD 1927 Michigan GeoRef Feet US <102120> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 Michigan GeoRef Feet US <102121> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.495961392 +y_0=-4354009.816002033 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1927 Michigan GeoRef Meters <102122> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=clrk66 +datum=NAD27 +units=m no_defs <> # NAD 1983 Michigan GeoRef Meters <102123> +proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.255555555556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m no_defs <> # NGO 1948 UTM Zone 32N <102132> +proj=utm +zone=32 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 UTM Zone 33N <102133> +proj=utm +zone=33 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 UTM Zone 34N <102134> +proj=utm +zone=34 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # NGO 1948 UTM Zone 35N <102135> +proj=utm +zone=35 +a=6377492.018 +b=6356173.508712696 +units=m no_defs <> # Hong Kong 1980 Grid <102140> +proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1.000000 +x_0=836694.05 +y_0=819069.8 +ellps=intl +units=m no_defs <> # Hong Kong 1980 UTM Zone 49N <102141> +proj=utm +zone=49 +ellps=intl +units=m no_defs <> # Hong Kong 1980 UTM Zone 50N <102142> +proj=utm +zone=50 +ellps=intl +units=m no_defs <> # Tokyo UTM Zone 51N <102151> +proj=utm +zone=51 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 52N <102152> +proj=utm +zone=52 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 53N <102153> +proj=utm +zone=53 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 54N <102154> +proj=utm +zone=54 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 55N <102155> +proj=utm +zone=55 +ellps=bessel +units=m no_defs <> # Tokyo UTM Zone 56N <102156> +proj=utm +zone=56 +ellps=bessel +units=m no_defs <> # Datum 73 Hayford Gauss IGeoE <102160> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200180.598 +y_0=299913.01 +ellps=intl +units=m no_defs <> # Datum 73 Hayford Gauss IPCC <102161> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m no_defs <> # Graciosa Base SW 1948 UTM Zone 26N <102162> +proj=utm +zone=26 +ellps=intl +units=m no_defs <> # Lisboa Bessel Bonne <102163> +ellps=bessel +units=m no_defs <> # Lisboa Hayford Gauss IGeoE <102164> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=200000 +y_0=300000 +ellps=intl +units=m no_defs <> # Lisboa Hayford Gauss IPCC <102165> +proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1.000000 +x_0=0 +y_0=0 +ellps=intl +units=m no_defs <> # Observ Meteorologico 1939 UTM Zone 25N <102166> +proj=utm +zone=25 +ellps=intl +units=m no_defs <> # Porto Santo 1936 UTM Zone 28N <102167> +proj=utm +zone=28 +ellps=intl +units=m no_defs <> # Sao Braz UTM Zone 26N <102168> +proj=utm +zone=26 +ellps=intl +units=m no_defs <> # Selvagem Grande 1938 UTM Zone 28N <102169> +proj=utm +zone=28 +ellps=intl +units=m no_defs <> # Nord Maroc Degree <102191> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Sud Maroc Degree <102192> +proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Sahara Degree <102193> +proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NAD 1983 HARN StatePlane Alabama East FIPS 0101 <102229> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Alabama West FIPS 0102 <102230> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California I FIPS 0401 <102241> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California II FIPS 0402 <102242> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California III FIPS 0403 <102243> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California IV FIPS 0404 <102244> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California V FIPS 0405 <102245> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane California VI FIPS 0406 <102246> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arizona East FIPS 0201 <102248> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arizona Central FIPS 0202 <102249> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arizona West FIPS 0203 <102250> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arkansas North FIPS 0301 <102251> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Arkansas South FIPS 0302 <102252> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Colorado North FIPS 0501 <102253> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Colorado Central FIPS 0502 <102254> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Colorado South FIPS 0503 <102255> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Connecticut FIPS 0600 <102256> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Delaware FIPS 0700 <102257> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Florida East FIPS 0901 <102258> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Florida West FIPS 0902 <102259> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Florida North FIPS 0903 <102260> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 1 FIPS 5101 <102261> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 2 FIPS 5102 <102262> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 3 FIPS 5103 <102263> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 4 FIPS 5104 <102264> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Hawaii 5 FIPS 5105 <102265> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Georgia East FIPS 1001 <102266> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Georgia West FIPS 1002 <102267> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Idaho East FIPS 1101 <102268> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Idaho Central FIPS 1102 <102269> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Idaho West FIPS 1103 <102270> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Illinois East FIPS 1201 <102271> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Illinois West FIPS 1202 <102272> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Indiana East FIPS 1301 <102273> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Indiana West FIPS 1302 <102274> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kansas North FIPS 1501 <102277> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kansas South FIPS 1502 <102278> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kentucky North FIPS 1601 <102279> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Kentucky South FIPS 1602 <102280> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Louisiana North FIPS 1701 <102281> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Louisiana South FIPS 1702 <102282> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Maine East FIPS 1801 <102283> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Maine West FIPS 1802 <102284> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Maryland FIPS 1900 <102285> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Massachusetts Mainland FIPS 2001 <102286> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Massachusetts Island FIPS 2002 <102287> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Michigan North FIPS 2111 <102288> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Michigan Central FIPS 2112 <102289> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Michigan South FIPS 2113 <102290> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Minnesota North FIPS 2201 <102291> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Minnesota Central FIPS 2202 <102292> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Minnesota South FIPS 2203 <102293> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Mississippi East FIPS 2301 <102294> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Mississippi West FIPS 2302 <102295> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Missouri East FIPS 2401 <102296> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Missouri Central FIPS 2402 <102297> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Missouri West FIPS 2403 <102298> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Montana FIPS 2500 <102300> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nebraska FIPS 2600 <102304> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nevada East FIPS 2701 <102307> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nevada Central FIPS 2702 <102308> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Nevada West FIPS 2703 <102309> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Hampshire FIPS 2800 <102310> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Jersey FIPS 2900 <102311> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Mexico East FIPS 3001 <102312> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Mexico Central FIPS 3002 <102313> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New Mexico West FIPS 3003 <102314> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York East FIPS 3101 <102315> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York Central FIPS 3102 <102316> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York West FIPS 3103 <102317> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane New York Long Island FIPS 3104 <102318> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane North Dakota North FIPS 3301 <102320> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane North Dakota South FIPS 3302 <102321> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Ohio North FIPS 3401 <102322> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Ohio South FIPS 3402 <102323> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oklahoma North FIPS 3501 <102324> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oklahoma South FIPS 3502 <102325> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oregon North FIPS 3601 <102326> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Oregon South FIPS 3602 <102327> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Rhode Island FIPS 3800 <102330> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane South Dakota North FIPS 4001 <102334> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane South Dakota South FIPS 4002 <102335> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Tennessee FIPS 4100 <102336> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas North FIPS 4201 <102337> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas North Central FIPS 4202 <102338> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas Central FIPS 4203 <102339> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas South Central FIPS 4204 <102340> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Texas South FIPS 4205 <102341> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Utah North FIPS 4301 <102342> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Utah Central FIPS 4302 <102343> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Utah South FIPS 4303 <102344> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Vermont FIPS 4400 <102345> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Virginia North FIPS 4501 <102346> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Virginia South FIPS 4502 <102347> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Washington North FIPS 4601 <102348> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Washington South FIPS 4602 <102349> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane West Virginia North FIPS 4701 <102350> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane West Virginia South FIPS 4702 <102351> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wisconsin North FIPS 4801 <102352> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wisconsin Central FIPS 4802 <102353> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wisconsin South FIPS 4803 <102354> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming East FIPS 4901 <102355> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming East Central FIPS 4902 <102356> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming West Central FIPS 4903 <102357> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Wyoming West FIPS 4904 <102358> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m no_defs <> # NAD 1983 HARN StatePlane Puerto Rico Virgin Islands FIPS 5200 <102361> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m no_defs <> # Nord Algerie Ancienne Degree <102491> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Sud Algerie Ancienne Degree <102492> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France I degrees <102581> +proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=2.337229166666667 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France II degrees <102582> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France III degrees <102583> +proj=lcc +lat_1=44.1 +lat_0=44.1 +lon_0=2.337229166666667 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # NTF France IV degrees <102584> +proj=lcc +lat_1=42.165 +lat_0=42.165 +lon_0=2.337229166666667 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356514.999904194 +units=m no_defs <> # Nord Algerie Degree <102591> +proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # Sud Algerie Degree <102592> +proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m no_defs <> # NAD 1983 StatePlane Alabama East FIPS 0101 Feet <102629> +proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.999960 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alabama West FIPS 0102 Feet <102630> +proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 1 FIPS 5001 Feet <102631> +proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=-36.86989764583333 +k=0.9999 +x_0=4999999.999999999 +y_0=-4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 2 FIPS 5002 Feet <102632> +proj=tmerc +lat_0=54 +lon_0=-142 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 3 FIPS 5003 Feet <102633> +proj=tmerc +lat_0=54 +lon_0=-146 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 4 FIPS 5004 Feet <102634> +proj=tmerc +lat_0=54 +lon_0=-150 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 5 FIPS 5005 Feet <102635> +proj=tmerc +lat_0=54 +lon_0=-154 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 6 FIPS 5006 Feet <102636> +proj=tmerc +lat_0=54 +lon_0=-158 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 7 FIPS 5007 Feet <102637> +proj=tmerc +lat_0=54 +lon_0=-162 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 8 FIPS 5008 Feet <102638> +proj=tmerc +lat_0=54 +lon_0=-166 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 9 FIPS 5009 Feet <102639> +proj=tmerc +lat_0=54 +lon_0=-170 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Alaska 10 FIPS 5010 Feet <102640> +proj=lcc +lat_1=51.83333333333334 +lat_2=53.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California I FIPS 0401 Feet <102641> +proj=lcc +lat_1=40 +lat_2=41.66666666666666 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California II FIPS 0402 Feet <102642> +proj=lcc +lat_1=38.33333333333334 +lat_2=39.83333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California III FIPS 0403 Feet <102643> +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California IV FIPS 0404 Feet <102644> +proj=lcc +lat_1=36 +lat_2=37.25 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California V FIPS 0405 Feet <102645> +proj=lcc +lat_1=34.03333333333333 +lat_2=35.46666666666667 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane California VI FIPS 0406 Feet <102646> +proj=lcc +lat_1=32.78333333333333 +lat_2=33.88333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arizona East FIPS 0201 Feet <102648> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arizona Central FIPS 0202 Feet <102649> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arizona West FIPS 0203 Feet <102650> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arkansas North FIPS 0301 Feet <102651> +proj=lcc +lat_1=34.93333333333333 +lat_2=36.23333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Arkansas South FIPS 0302 Feet <102652> +proj=lcc +lat_1=33.3 +lat_2=34.76666666666667 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Colorado North FIPS 0501 Feet <102653> +proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Colorado Central FIPS 0502 Feet <102654> +proj=lcc +lat_1=38.45 +lat_2=39.75 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Colorado South FIPS 0503 Feet <102655> +proj=lcc +lat_1=37.23333333333333 +lat_2=38.43333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Connecticut FIPS 0600 Feet <102656> +proj=lcc +lat_1=41.2 +lat_2=41.86666666666667 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Delaware FIPS 0700 Feet <102657> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Florida East FIPS 0901 Feet <102658> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Florida West FIPS 0902 Feet <102659> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Florida North FIPS 0903 Feet <102660> +proj=lcc +lat_1=29.58333333333333 +lat_2=30.75 +lat_0=29 +lon_0=-84.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 1 FIPS 5101 Feet <102661> +proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 2 FIPS 5102 Feet <102662> +proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999967 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 3 FIPS 5103 Feet <102663> +proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 4 FIPS 5104 Feet <102664> +proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.999990 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Hawaii 5 FIPS 5105 Feet <102665> +proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1.000000 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Georgia East FIPS 1001 Feet <102666> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Georgia West FIPS 1002 Feet <102667> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Idaho East FIPS 1101 Feet <102668> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.999947 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Idaho Central FIPS 1102 Feet <102669> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.999947 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Idaho West FIPS 1103 Feet <102670> +proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933 +x_0=799999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Illinois East FIPS 1201 Feet <102671> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Illinois West FIPS 1202 Feet <102672> +proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Indiana East FIPS 1301 Feet <102673> +proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999967 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Indiana West FIPS 1302 Feet <102674> +proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999967 +x_0=900000.0000000001 +y_0=250000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Iowa North FIPS 1401 Feet <102675> +proj=lcc +lat_1=42.06666666666667 +lat_2=43.26666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Iowa South FIPS 1402 Feet <102676> +proj=lcc +lat_1=40.61666666666667 +lat_2=41.78333333333333 +lat_0=40 +lon_0=-93.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kansas North FIPS 1501 Feet <102677> +proj=lcc +lat_1=38.71666666666667 +lat_2=39.78333333333333 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kansas South FIPS 1502 Feet <102678> +proj=lcc +lat_1=37.26666666666667 +lat_2=38.56666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.9999999999 +y_0=399999.9999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kentucky North FIPS 1601 Feet <102679> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Kentucky South FIPS 1602 Feet <102680> +proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0000000002 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Louisiana North FIPS 1701 Feet <102681> +proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Louisiana South FIPS 1702 Feet <102682> +proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Maine East FIPS 1801 Feet <102683> +proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.999900 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Maine West FIPS 1802 Feet <102684> +proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999967 +x_0=900000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Maryland FIPS 1900 Feet <102685> +proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 Feet <102686> +proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Massachusetts Island FIPS 2002 Feet <102687> +proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Michigan North FIPS 2111 Feet <102688> +proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Michigan Central FIPS 2112 Feet <102689> +proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000.000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Michigan South FIPS 2113 Feet <102690> +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Minnesota North FIPS 2201 Feet <102691> +proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Minnesota Central FIPS 2202 Feet <102692> +proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Minnesota South FIPS 2203 Feet <102693> +proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Mississippi East FIPS 2301 Feet <102694> +proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.999950 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Mississippi West FIPS 2302 Feet <102695> +proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.999950 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Missouri East FIPS 2401 Feet <102696> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Missouri Central FIPS 2402 Feet <102697> +proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Missouri West FIPS 2403 Feet <102698> +proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Montana FIPS 2500 Feet <102700> +proj=lcc +lat_1=45 +lat_2=49 +lat_0=44.25 +lon_0=-109.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nebraska FIPS 2600 Feet <102704> +proj=lcc +lat_1=40 +lat_2=43 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nevada East FIPS 2701 Feet <102707> +proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.999900 +x_0=200000 +y_0=7999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nevada Central FIPS 2702 Feet <102708> +proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.999900 +x_0=500000.0000000002 +y_0=6000000.000000001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Nevada West FIPS 2703 Feet <102709> +proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.999900 +x_0=799999.9999999999 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Hampshire FIPS 2800 Feet <102710> +proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999967 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Jersey FIPS 2900 Feet <102711> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Mexico East FIPS 3001 Feet <102712> +proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Mexico Central FIPS 3002 Feet <102713> +proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.999900 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New Mexico West FIPS 3003 Feet <102714> +proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999917 +x_0=829999.9999999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York East FIPS 3101 Feet <102715> +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.999900 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York Central FIPS 3102 Feet <102716> +proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999938 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York West FIPS 3103 Feet <102717> +proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999938 +x_0=350000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane New York Long Island FIPS 3104 Feet <102718> +proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane North Carolina FIPS 3200 Feet <102719> +proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999999 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane North Dakota North FIPS 3301 Feet <102720> +proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane North Dakota South FIPS 3302 Feet <102721> +proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Ohio North FIPS 3401 Feet <102722> +proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Ohio South FIPS 3402 Feet <102723> +proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oklahoma North FIPS 3501 Feet <102724> +proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oklahoma South FIPS 3502 Feet <102725> +proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oregon North FIPS 3601 Feet <102726> +proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Oregon South FIPS 3602 Feet <102727> +proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Pennsylvania North FIPS 3701 Feet <102728> +proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Pennsylvania South FIPS 3702 Feet <102729> +proj=lcc +lat_1=39.93333333333333 +lat_2=40.96666666666667 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Rhode Island FIPS 3800 Feet <102730> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane South Carolina FIPS 3900 Feet <102733> +proj=lcc +lat_1=32.5 +lat_2=34.83333333333334 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane South Dakota North FIPS 4001 Feet <102734> +proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane South Dakota South FIPS 4002 Feet <102735> +proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Tennessee FIPS 4100 Feet <102736> +proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas North FIPS 4201 Feet <102737> +proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas North Central FIPS 4202 Feet <102738> +proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000.0000000001 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas Central FIPS 4203 Feet <102739> +proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas South Central FIPS 4204 Feet <102740> +proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000.0000000001 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Texas South FIPS 4205 Feet <102741> +proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=4999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Utah North FIPS 4301 Feet <102742> +proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Utah Central FIPS 4302 Feet <102743> +proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Utah South FIPS 4303 Feet <102744> +proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0000000002 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Vermont FIPS 4400 Feet <102745> +proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Virginia North FIPS 4501 Feet <102746> +proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Virginia South FIPS 4502 Feet <102747> +proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3499999.999999999 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Washington North FIPS 4601 Feet <102748> +proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Washington South FIPS 4602 Feet <102749> +proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0000000002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane West Virginia North FIPS 4701 Feet <102750> +proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane West Virginia South FIPS 4702 Feet <102751> +proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wisconsin North FIPS 4801 Feet <102752> +proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wisconsin Central FIPS 4802 Feet <102753> +proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wisconsin South FIPS 4803 Feet <102754> +proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming East FIPS 4901 Feet <102755> +proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.999938 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming East Central FIPS 4902 Feet <102756> +proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.999938 +x_0=399999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming West Central FIPS 4903 Feet <102757> +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.999938 +x_0=600000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Wyoming West FIPS 4904 Feet <102758> +proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.999938 +x_0=799999.9999999999 +y_0=100000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Puerto Rico Virgin Islands FIPS 5200 Feet <102761> +proj=lcc +lat_1=18.03333333333334 +lat_2=18.43333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # NAD 1983 StatePlane Guam FIPS 5400 Feet <102766> +proj=poly +lat_0=13.47246635277778 +lon_0=-144.7487507055556 +x_0=49999.99999999999 +y_0=49999.99999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 no_defs <> # Belge Lambert 1972 <103300> +proj=lcc +lat_1=49.8333339 +lat_2=51.16666733333333 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +units=m no_defs <> # GCS International 1967 <4023> +proj=longlat +ellps=aust_SA no_defs <> # GCS Bern 1898 <4217> +proj=longlat +ellps=bessel no_defs <> # GCS Voirol Unifie 1960 <4305> +proj=longlat +ellps=clrk80 no_defs <> # GCS Montserrat 1958 <4404> +proj=longlat +ellps=clrk80 no_defs <> # GCS Voirol Unifie 1960 Paris <4812> +proj=longlat +ellps=clrk80 +pm=2.337229166666667 no_defs <> # GCS WGS 1966 <37001> +proj=longlat +ellps=WGS66 no_defs <> # GCS Fischer 1960 <37002> +proj=longlat +a=6378166 +b=6356784.283607107 no_defs <> # GCS Fischer 1968 <37003> +proj=longlat +a=6378150 +b=6356768.337244385 no_defs <> # GCS Fischer Modified <37004> +proj=longlat +ellps=fschr60m no_defs <> # GCS Hough 1960 <37005> +proj=longlat +a=6378270 +b=6356794.343434343 no_defs <> # GCS Everest Modified 1969 <37006> +proj=longlat +a=6377295.664 +b=6356094.667915204 no_defs <> # GCS Walbeck <37007> +proj=longlat +a=6376896 +b=6355834.846687363 no_defs <> # GCS Sphere ARC INFO <37008> +proj=longlat +a=6370997 +b=6370997 no_defs <> # GCS European 1979 <37201> +proj=longlat +ellps=intl no_defs <> # GCS Everest Bangladesh <37202> +proj=longlat +a=6377276.345 +b=6356075.413140239 no_defs <> # GCS Everest India Nepal <37203> +proj=longlat +a=6377301.243 +b=6356100.230165385 no_defs <> # GCS Hjorsey 1955 <37204> +proj=longlat +ellps=intl no_defs <> # GCS Hong Kong 1963 <37205> +proj=longlat +ellps=intl no_defs <> # GCS Oman <37206> +proj=longlat +ellps=clrk80 no_defs <> # GCS South Asia Singapore <37207> +proj=longlat +ellps=fschr60m no_defs <> # GCS Ayabelle <37208> +proj=longlat +ellps=clrk80 no_defs <> # GCS Point 58 <37211> +proj=longlat +ellps=clrk80 no_defs <> # GCS Beacon E 1945 <37212> +proj=longlat +ellps=intl no_defs <> # GCS Tern Island 1961 <37213> +proj=longlat +ellps=intl no_defs <> # GCS Astro 1952 <37214> +proj=longlat +ellps=intl no_defs <> # GCS Bellevue IGN <37215> +proj=longlat +ellps=intl no_defs <> # GCS Canton 1966 <37216> +proj=longlat +ellps=intl no_defs <> # GCS Chatham Island 1971 <37217> +proj=longlat +ellps=intl no_defs <> # GCS DOS 1968 <37218> +proj=longlat +ellps=intl no_defs <> # GCS Easter Island 1967 <37219> +proj=longlat +ellps=intl no_defs <> # GCS Guam 1963 <37220> +proj=longlat +ellps=clrk66 no_defs <> # GCS GUX 1 <37221> +proj=longlat +ellps=intl no_defs <> # GCS Johnston Island 1961 <37222> +proj=longlat +ellps=intl no_defs <> # GCS Carthage Degree <37223> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Midway 1961 <37224> +proj=longlat +ellps=intl no_defs <> # GCS Pitcairn 1967 <37226> +proj=longlat +ellps=intl no_defs <> # GCS Santo DOS 1965 <37227> +proj=longlat +ellps=intl no_defs <> # GCS Viti Levu 1916 <37228> +proj=longlat +ellps=clrk80 no_defs <> # GCS Wake Eniwetok 1960 <37229> +proj=longlat +a=6378270 +b=6356794.343434343 no_defs <> # GCS Wake Island 1952 <37230> +proj=longlat +ellps=intl no_defs <> # GCS Anna 1 1965 <37231> +proj=longlat +ellps=aust_SA no_defs <> # GCS Gan 1970 <37232> +proj=longlat +ellps=intl no_defs <> # GCS ISTS 073 1969 <37233> +proj=longlat +ellps=intl no_defs <> # GCS Kerguelen Island 1949 <37234> +proj=longlat +ellps=intl no_defs <> # GCS Reunion <37235> +proj=longlat +ellps=intl no_defs <> # GCS Ascension Island 1958 <37237> +proj=longlat +ellps=intl no_defs <> # GCS DOS 71 4 <37238> +proj=longlat +ellps=intl no_defs <> # GCS Cape Canaveral <37239> +proj=longlat +ellps=clrk66 no_defs <> # GCS Fort Thomas 1955 <37240> +proj=longlat +ellps=clrk80 no_defs <> # GCS Graciosa Base SW 1948 <37241> +proj=longlat +ellps=intl no_defs <> # GCS ISTS 061 1968 <37242> +proj=longlat +ellps=intl no_defs <> # GCS LC5 1961 <37243> +proj=longlat +ellps=clrk66 no_defs <> # GCS Observ Meteorologico 1939 <37245> +proj=longlat +ellps=intl no_defs <> # GCS Pico de Las Nieves <37246> +proj=longlat +ellps=intl no_defs <> # GCS Porto Santo 1936 <37247> +proj=longlat +ellps=intl no_defs <> # GCS Sao Braz <37249> +proj=longlat +ellps=intl no_defs <> # GCS Selvagem Grande 1938 <37250> +proj=longlat +ellps=intl no_defs <> # GCS Tristan 1968 <37251> +proj=longlat +ellps=intl no_defs <> # GCS Samoa 1962 <37252> +proj=longlat +ellps=clrk66 no_defs <> # GCS Camp Area <37253> +proj=longlat +ellps=intl no_defs <> # GCS Deception Island <37254> +proj=longlat +ellps=clrk80 no_defs <> # GCS Gunung Segara <37255> +proj=longlat +ellps=bessel no_defs <> # GCS S42 Hungary <37257> +proj=longlat +ellps=krass no_defs <> # GCS Kusaie 1951 <37259> +proj=longlat +ellps=intl no_defs <> # GCS Alaskan Islands <37260> +proj=longlat +ellps=clrk66 no_defs <> # GCS Assumed Geographic 1 <104000> +proj=longlat +ellps=clrk66 +datum=NAD27 no_defs <> # GCS Estonia 1937 <104101> +proj=longlat +ellps=bessel no_defs <> # GCS Hermannskogel <104102> +proj=longlat +ellps=bessel no_defs <> # GCS Sierra Leone 1960 <104103> +proj=longlat +ellps=clrk80 no_defs <> # GCS Hong Kong 1980 <104104> +proj=longlat +ellps=intl no_defs <> # GCS Datum Lisboa Bessel <104105> +proj=longlat +ellps=bessel no_defs <> # GCS Datum Lisboa Hayford <104106> +proj=longlat +ellps=intl no_defs <> # GCS RGF 1993 <104107> +proj=longlat +ellps=GRS80 no_defs <> # GCS NZGD 2000 <104108> +proj=longlat +ellps=GRS80 no_defs <> # GCS Merchich Degree <104261> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Voirol 1875 Degree <104304> +proj=longlat +a=6378249.2 +b=6356514.999904194 no_defs <> # GCS Voirol Unifie 1960 Degree <104305> +proj=longlat +ellps=clrk80 no_defs <> # # Chris' funny epsgish code for the google mercator # <900913> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs <> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/nad.lst����������������������������������������������������������������0000664�0000000�0000000�00000014361�11770671653�0017334�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Listing of State Plane North American Datum Zones NGS zone number State and zone 1927 1983 Alabama east .................. 101 101 Alabama west .................. 102 102 Alaska zone no. 1 ............. 5001 5001 Alaska zone no. 2 ............. 5002 5002 Alaska zone no. 3 ............. 5003 5003 Alaska zone no. 4 ............. 5004 5004 Alaska zone no. 5 ............. 5005 5005 Alaska zone no. 6 ............. 5006 5006 Alaska zone no. 7 ............. 5007 5007 Alaska zone no. 8 ............. 5008 5008 Alaska zone no. 9 ............. 5009 5009 Alaska zone no. 10 ............ 5010 5010 American Samoa ................ 5300 Arizona central ............... 202 202 Arizona east .................. 201 201 Arizona west .................. 203 203 Arkansas north ................ 301 301 Arkansas south ................ 302 302 California I .................. 401 401 California II ................. 402 402 California III ................ 403 403 California IV ................. 404 404 California V .................. 405 405 California VI ................. 406 406 California VII ................ 407 Colorado central .............. 502 502 Colorado north ................ 501 501 Colorado south ................ 503 503 Connecticut ................... 600 600 Delaware ...................... 700 700 Florida east .................. 901 901 Florida north ................. 903 903 Florida west .................. 902 902 Georgia east .................. 1001 1001 Georgia west .................. 1002 1002 Guam Island ................... 5400 Hawaii 1 ...................... 5101 5101 Hawaii 2 ...................... 5102 5102 Hawaii 3 ...................... 5103 5103 Hawaii 4 ...................... 5104 5104 Hawaii 5 ...................... 5105 5105 Idaho central ................. 1102 1102 Idaho east .................... 1101 1101 Idaho west .................... 1103 1103 Illinois east ................. 1201 1201 Illinois west ................. 1202 1202 Indiana east .................. 1301 1301 Indiana west .................. 1302 1302 Iowa north .................... 1401 1401 Iowa south .................... 1402 1402 Kansas north .................. 1501 1501 Kansas south .................. 1502 1502 Kentucky north ................ 1601 1601 Kentucky south ................ 1602 1602 Louisiana north ............... 1701 1701 Louisiana offshore ............ 1703 1703 Louisiana south ............... 1702 1702 Maine east .................... 1801 1801 Maine west .................... 1802 1802 Maryland ...................... 1900 1900 Massachusetts island .......... 2002 2002 Massachusetts mainland ........ 2001 2001 Michigan central/l ............ 2112 2112 current Michigan central/m ............ 2102 old Michigan east ................. 2101 old Michigan north ................ 2111 2111 current Michigan south ................ 2113 2113 current Michigan west ................. 2103 old Minnesota central ............. 2202 2202 Minnesota north ............... 2201 2201 Minnesota south ............... 2203 2203 Mississippi east .............. 2301 2301 Mississippi west .............. 2302 2302 Missouri central .............. 2402 2402 Missouri east ................. 2401 2401 Missouri west ................. 2403 2403 Montana ....................... 2500 Montana central ............... 2502 Montana north ................. 2501 Montana south ................. 2503 Nebraska ...................... 2600 Nebraska north ................ 2601 Nebraska south ................ 2602 Nevada central ................ 2702 2702 Nevada east ................... 2701 2701 Nevada west ................... 2703 2703 New hampshire ................. 2800 2800 New jersey .................... 2900 2900 New mexico central ............ 3002 3002 New mexico east ............... 3001 3001 New mexico west ............... 3003 3003 New york central .............. 3102 3102 New york east ................. 3101 3101 New york long island .......... 3104 3104 New york west ................. 3103 3103 North carolina ................ 3200 3200 North dakota north ............ 3301 3301 North dakota south ............ 3302 3302 Ohio north .................... 3401 3401 Ohio south .................... 3402 3402 Oklahoma north ................ 3501 3501 Oklahoma south ................ 3502 3502 Oregon north .................. 3601 3601 Oregon south .................. 3602 3602 Pennsylvania north ............ 3701 3701 Pennsylvania south ............ 3702 3702 Puerto Rico, Virgin Islands ... 5201 5200 Rhode Island .................. 3800 3800 South Carolina ................ 3900 South Carolina north .......... 3901 South Carolina south .......... 3902 South Dakota north ............ 4001 4001 South Dakota south ............ 4002 4002 Tennessee ..................... 4100 4100 Texas central ................. 4203 4203 Texas north ................... 4201 4201 Texas north central ........... 4202 4202 Texas south ................... 4205 4205 Texas south central ........... 4204 4204 Utah central .................. 4302 4302 Utah north .................... 4301 4301 Utah south .................... 4303 4303 Vermont ....................... 4400 4400 Virgin Islands, St. Croix ..... 5202 Virginia north ................ 4501 4501 Virginia south ................ 4502 4502 Washington north .............. 4601 4601 Washington south .............. 4602 4602 West Virginia north ........... 4701 4701 West Virginia south ........... 4702 4702 Wisconsin central ............. 4802 4802 Wisconsin north ............... 4801 4801 Wisconsin south ............... 4803 4803 Wyoming east .................. 4901 4901 Wyoming east central .......... 4902 4902 Wyoming west .................. 4904 4904 Wyoming west central .......... 4903 4903 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/nad27������������������������������������������������������������������0000664�0000000�0000000�00000046055�11770671653�0016711�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SCCSID @(#)nad27 4.1 92/12/20 GIE # proj +init files for: # # State Plane Coordinate Systems, # North American Datum 1927 # 101: alabama east: nad27 <101> proj=tmerc datum=NAD27 lon_0=-85d50 lat_0=30d30 k=.99996 x_0=152400.3048006096 y_0=0 no_defs <> # 102: alabama west: nad27 <102> proj=tmerc datum=NAD27 lon_0=-87d30 lat_0=30 k=.9999333333333333 x_0=152400.3048006096 y_0=0 no_defs <> # 5010: alaska zone no. 10: nad27 <5010> proj=lcc datum=NAD27 lon_0=-176 lat_1=53d50 lat_2=51d50 lat_0=51 x_0=914401.8288036576 y_0=0 no_defs <> # 5300: american samoa: nad27 <5300> proj=lcc datum=NAD27 lon_0=-170 lat_1=-14d16 lat_2=-14d16 lat_0=-14d16 x_0=152400.3048006096 y_0=95169.31165862332 no_defs <> # 201: arizona east: nad27 <201> proj=tmerc datum=NAD27 lon_0=-110d10 lat_0=31 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 202: arizona central: nad27 <202> proj=tmerc datum=NAD27 lon_0=-111d55 lat_0=31 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 203: arizona west: nad27 <203> proj=tmerc datum=NAD27 lon_0=-113d45 lat_0=31 k=.9999333333333333 x_0=152400.3048006096 y_0=0 no_defs <> # 301: arkansas north: nad27 <301> proj=lcc datum=NAD27 lon_0=-92 lat_1=36d14 lat_2=34d56 lat_0=34d20 x_0=609601.2192024384 y_0=0 no_defs <> # 302: arkansas south: nad27 <302> proj=lcc datum=NAD27 lon_0=-92 lat_1=34d46 lat_2=33d18 lat_0=32d40 x_0=609601.2192024384 y_0=0 no_defs <> # 401: california i: nad27 <401> proj=lcc datum=NAD27 lon_0=-122 lat_1=41d40 lat_2=40 lat_0=39d20 x_0=609601.2192024384 y_0=0 no_defs <> # 402: california ii: nad27 <402> proj=lcc datum=NAD27 lon_0=-122 lat_1=39d50 lat_2=38d20 lat_0=37d40 x_0=609601.2192024384 y_0=0 no_defs <> # 403: california iii: nad27 <403> proj=lcc datum=NAD27 lon_0=-120d30 lat_1=38d26 lat_2=37d4 lat_0=36d30 x_0=609601.2192024384 y_0=0 no_defs <> # 404: california iv: nad27 <404> proj=lcc datum=NAD27 lon_0=-119 lat_1=37d15 lat_2=36 lat_0=35d20 x_0=609601.2192024384 y_0=0 no_defs <> # 405: california v: nad27 <405> proj=lcc datum=NAD27 lon_0=-118 lat_1=35d28 lat_2=34d2 lat_0=33d30 x_0=609601.2192024384 y_0=0 no_defs <> # 406: california vi: nad27 <406> proj=lcc datum=NAD27 lon_0=-116d15 lat_1=33d53 lat_2=32d47 lat_0=32d10 x_0=609601.2192024384 y_0=0 no_defs <> # 407: california vii: nad27 <407> proj=lcc datum=NAD27 lon_0=-118d20 lat_1=34d25 lat_2=33d52 lat_0=34d8 x_0=1276106.450596901 y_0=1268253.006858014 no_defs <> # 501: colorado north: nad27 <501> proj=lcc datum=NAD27 lon_0=-105d30 lat_1=40d47 lat_2=39d43 lat_0=39d20 x_0=609601.2192024384 y_0=0 no_defs <> # 502: colorado central: nad27 <502> proj=lcc datum=NAD27 lon_0=-105d30 lat_1=39d45 lat_2=38d27 lat_0=37d50 x_0=609601.2192024384 y_0=0 no_defs <> # 503: colorado south: nad27 <503> proj=lcc datum=NAD27 lon_0=-105d30 lat_1=38d26 lat_2=37d14 lat_0=36d40 x_0=609601.2192024384 y_0=0 no_defs <> # 600: connecticut ---: nad27 <600> proj=lcc datum=NAD27 lon_0=-72d45 lat_1=41d52 lat_2=41d12 lat_0=40d50 x_0=182880.3657607315 y_0=0 no_defs <> # 700: delaware ---: nad27 <700> proj=tmerc datum=NAD27 lon_0=-75d25 lat_0=38 k=.999995 x_0=152400.3048006096 y_0=0 no_defs <> # 901: florida east: nad27 <901> proj=tmerc datum=NAD27 lon_0=-81 lat_0=24d20 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 902: florida west: nad27 <902> proj=tmerc datum=NAD27 lon_0=-82 lat_0=24d20 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 903: florida north: nad27 <903> proj=lcc datum=NAD27 lon_0=-84d30 lat_1=30d45 lat_2=29d35 lat_0=29 x_0=609601.2192024384 y_0=0 no_defs <> # 1001: georgia east: nad27 <1001> proj=tmerc datum=NAD27 lon_0=-82d10 lat_0=30 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 1002: georgia west: nad27 <1002> proj=tmerc datum=NAD27 lon_0=-84d10 lat_0=30 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5101: hawaii 1: nad27 <5101> proj=tmerc datum=NAD27 lon_0=-155d30 lat_0=18d50 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 5102: hawaii 2: nad27 <5102> proj=tmerc datum=NAD27 lon_0=-156d40 lat_0=20d20 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 5103: hawaii 3: nad27 <5103> proj=tmerc datum=NAD27 lon_0=-158 lat_0=21d10 k=.99999 x_0=152400.3048006096 y_0=0 no_defs <> # 5104: hawaii 4: nad27 <5104> proj=tmerc datum=NAD27 lon_0=-159d30 lat_0=21d50 k=.99999 x_0=152400.3048006096 y_0=0 no_defs <> # 5105: hawaii 5: nad27 <5105> proj=tmerc datum=NAD27 lon_0=-160d10 lat_0=21d40 k=1 x_0=152400.3048006096 y_0=0 no_defs <> # 1101: idaho east: nad27 <1101> proj=tmerc datum=NAD27 lon_0=-112d10 lat_0=41d40 k=.9999473684210526 x_0=152400.3048006096 y_0=0 no_defs <> # 1102: idaho central: nad27 <1102> proj=tmerc datum=NAD27 lon_0=-114 lat_0=41d40 k=.9999473684210526 x_0=152400.3048006096 y_0=0 no_defs <> # 1103: idaho west: nad27 <1103> proj=tmerc datum=NAD27 lon_0=-115d45 lat_0=41d40 k=.9999333333333333 x_0=152400.3048006096 y_0=0 no_defs <> # 1201: illinois east: nad27 <1201> proj=tmerc datum=NAD27 lon_0=-88d20 lat_0=36d40 k=.999975 x_0=152400.3048006096 y_0=0 no_defs <> # 1202: illinois west: nad27 <1202> proj=tmerc datum=NAD27 lon_0=-90d10 lat_0=36d40 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 1301: indiana east: nad27 <1301> proj=tmerc datum=NAD27 lon_0=-85d40 lat_0=37d30 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 1302: indiana west: nad27 <1302> proj=tmerc datum=NAD27 lon_0=-87d5 lat_0=37d30 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 1401: iowa north: nad27 <1401> proj=lcc datum=NAD27 lon_0=-93d30 lat_1=43d16 lat_2=42d4 lat_0=41d30 x_0=609601.2192024384 y_0=0 no_defs <> # 1402: iowa south: nad27 <1402> proj=lcc datum=NAD27 lon_0=-93d30 lat_1=41d47 lat_2=40d37 lat_0=40 x_0=609601.2192024384 y_0=0 no_defs <> # 1501: kansas north: nad27 <1501> proj=lcc datum=NAD27 lon_0=-98 lat_1=39d47 lat_2=38d43 lat_0=38d20 x_0=609601.2192024384 y_0=0 no_defs <> # 1502: kansas south: nad27 <1502> proj=lcc datum=NAD27 lon_0=-98d30 lat_1=38d34 lat_2=37d16 lat_0=36d40 x_0=609601.2192024384 y_0=0 no_defs <> # 1601: kentucky north: nad27 <1601> proj=lcc datum=NAD27 lon_0=-84d15 lat_1=38d58 lat_2=37d58 lat_0=37d30 x_0=609601.2192024384 y_0=0 no_defs <> # 1602: kentucky south: nad27 <1602> proj=lcc datum=NAD27 lon_0=-85d45 lat_1=37d56 lat_2=36d44 lat_0=36d20 x_0=609601.2192024384 y_0=0 no_defs <> # 1701: louisiana north: nad27 <1701> proj=lcc datum=NAD27 lon_0=-92d30 lat_1=32d40 lat_2=31d10 lat_0=30d40 x_0=609601.2192024384 y_0=0 no_defs <> # 1702: louisiana south: nad27 <1702> proj=lcc datum=NAD27 lon_0=-91d20 lat_1=30d42 lat_2=29d18 lat_0=28d40 x_0=609601.2192024384 y_0=0 no_defs <> # 1703: louisiana offshore: nad27 <1703> proj=lcc datum=NAD27 lon_0=-91d20 lat_1=27d50 lat_2=26d10 lat_0=25d40 x_0=609601.2192024384 y_0=0 no_defs <> # 1801: maine east: nad27 <1801> proj=tmerc datum=NAD27 lon_0=-68d30 lat_0=43d50 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 1802: maine west: nad27 <1802> proj=tmerc datum=NAD27 lon_0=-70d10 lat_0=42d50 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 1900: maryland ---: nad27 <1900> proj=lcc datum=NAD27 lon_0=-77 lat_1=39d27 lat_2=38d18 lat_0=37d50 x_0=243840.4876809754 y_0=0 no_defs <> # 2001: massachusetts mainland: nad27 <2001> proj=lcc datum=NAD27 lon_0=-71d30 lat_1=42d41 lat_2=41d43 lat_0=41 x_0=182880.3657607315 y_0=0 no_defs <> # 2002: massachusetts island: nad27 <2002> proj=lcc datum=NAD27 lon_0=-70d30 lat_1=41d29 lat_2=41d17 lat_0=41 x_0=60960.12192024384 y_0=0 no_defs <> # 2101: michigan east: nad27 <2101> proj=tmerc datum=NAD27 lon_0=-83d40 lat_0=41d30 k=.9999428571428571 x_0=152400.3048006096 y_0=0 no_defs <> # 2102: michigan central/m: nad27 <2102> proj=tmerc datum=NAD27 lon_0=-85d45 lat_0=41d30 k=.9999090909090909 x_0=152400.3048006096 y_0=0 no_defs <> # 2103: michigan west: nad27 <2103> proj=tmerc datum=NAD27 lon_0=-88d45 lat_0=41d30 k=.9999090909090909 x_0=152400.3048006096 y_0=0 no_defs <> # 2111: michigan north: nad27 <2111> proj=lcc a=6378450.047 es=.006768657997291094 lon_0=-87 lat_1=47d5 lat_2=45d29 lat_0=44d47 x_0=609601.2192024384 y_0=0 no_defs <> # 2112: michigan central/l: nad27 <2112> proj=lcc a=6378450.047 es=.006768657997291094 lon_0=-84d20 lat_1=45d42 lat_2=44d11 lat_0=43d19 x_0=609601.2192024384 y_0=0 no_defs <> # 2113: michigan south: nad27 <2113> proj=lcc a=6378450.047 es=.006768657997291094 lon_0=-84d20 lat_1=43d40 lat_2=42d6 lat_0=41d30 x_0=609601.2192024384 y_0=0 no_defs <> # 2201: minnesota north: nad27 <2201> proj=lcc datum=NAD27 lon_0=-93d6 lat_1=48d38 lat_2=47d2 lat_0=46d30 x_0=609601.2192024384 y_0=0 no_defs <> # 2202: minnesota central: nad27 <2202> proj=lcc datum=NAD27 lon_0=-94d15 lat_1=47d3 lat_2=45d37 lat_0=45 x_0=609601.2192024384 y_0=0 no_defs <> # 2203: minnesota south: nad27 <2203> proj=lcc datum=NAD27 lon_0=-94 lat_1=45d13 lat_2=43d47 lat_0=43 x_0=609601.2192024384 y_0=0 no_defs <> # 2301: mississippi east: nad27 <2301> proj=tmerc datum=NAD27 lon_0=-88d50 lat_0=29d40 k=.99996 x_0=152400.3048006096 y_0=0 no_defs <> # 2302: mississippi west: nad27 <2302> proj=tmerc datum=NAD27 lon_0=-90d20 lat_0=30d30 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 2401: missouri east: nad27 <2401> proj=tmerc datum=NAD27 lon_0=-90d30 lat_0=35d50 k=.9999333333333333 x_0=152400.3048006096 y_0=0 no_defs <> # 2402: missouri central: nad27 <2402> proj=tmerc datum=NAD27 lon_0=-92d30 lat_0=35d50 k=.9999333333333333 x_0=152400.3048006096 y_0=0 no_defs <> # 2403: missouri west: nad27 <2403> proj=tmerc datum=NAD27 lon_0=-94d30 lat_0=36d10 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 2501: montana north: nad27 <2501> proj=lcc datum=NAD27 lon_0=-109d30 lat_1=48d43 lat_2=47d51 lat_0=47 x_0=609601.2192024384 y_0=0 no_defs <> # 2502: montana central: nad27 <2502> proj=lcc datum=NAD27 lon_0=-109d30 lat_1=47d53 lat_2=46d27 lat_0=45d50 x_0=609601.2192024384 y_0=0 no_defs <> # 2503: montana south: nad27 <2503> proj=lcc datum=NAD27 lon_0=-109d30 lat_1=46d24 lat_2=44d52 lat_0=44 x_0=609601.2192024384 y_0=0 no_defs <> # 2601: nebraska north: nad27 <2601> proj=lcc datum=NAD27 lon_0=-100 lat_1=42d49 lat_2=41d51 lat_0=41d20 x_0=609601.2192024384 y_0=0 no_defs <> # 2602: nebraska south: nad27 <2602> proj=lcc datum=NAD27 lon_0=-99d30 lat_1=41d43 lat_2=40d17 lat_0=39d40 x_0=609601.2192024384 y_0=0 no_defs <> # 2701: nevada east: nad27 <2701> proj=tmerc datum=NAD27 lon_0=-115d35 lat_0=34d45 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 2702: nevada central: nad27 <2702> proj=tmerc datum=NAD27 lon_0=-116d40 lat_0=34d45 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 2703: nevada west: nad27 <2703> proj=tmerc datum=NAD27 lon_0=-118d35 lat_0=34d45 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 2800: new hampshire ---: nad27 <2800> proj=tmerc datum=NAD27 lon_0=-71d40 lat_0=42d30 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 2900: new jersey ---: nad27 <2900> proj=tmerc datum=NAD27 lon_0=-74d40 lat_0=38d50 k=.999975 x_0=609601.2192024384 y_0=0 no_defs <> # 3001: new mexico east: nad27 <3001> proj=tmerc datum=NAD27 lon_0=-104d20 lat_0=31 k=.9999090909090909 x_0=152400.3048006096 y_0=0 no_defs <> # 3002: new mexico central: nad27 <3002> proj=tmerc datum=NAD27 lon_0=-106d15 lat_0=31 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 3003: new mexico west: nad27 <3003> proj=tmerc datum=NAD27 lon_0=-107d50 lat_0=31 k=.9999166666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 3101: new york east: nad27 <3101> proj=tmerc datum=NAD27 lon_0=-74d20 lat_0=40 k=.9999666666666667 x_0=152400.3048006096 y_0=0 no_defs <> # 3102: new york central: nad27 <3102> proj=tmerc datum=NAD27 lon_0=-76d35 lat_0=40 k=.9999375 x_0=152400.3048006096 y_0=0 no_defs <> # 3103: new york west: nad27 <3103> proj=tmerc datum=NAD27 lon_0=-78d35 lat_0=40 k=.9999375 x_0=152400.3048006096 y_0=0 no_defs <> # 3104: new york long island: nad27 <3104> proj=lcc datum=NAD27 lon_0=-74 lat_1=41d2 lat_2=40d40 lat_0=40d30 x_0=609601.2192024384 y_0=30480.06096012192 no_defs <> # 3200: north carolina ---: nad27 <3200> proj=lcc datum=NAD27 lon_0=-79 lat_1=36d10 lat_2=34d20 lat_0=33d45 x_0=609601.2192024384 y_0=0 no_defs <> # 3301: north dakota north: nad27 <3301> proj=lcc datum=NAD27 lon_0=-100d30 lat_1=48d44 lat_2=47d26 lat_0=47 x_0=609601.2192024384 y_0=0 no_defs <> # 3302: north dakota south: nad27 <3302> proj=lcc datum=NAD27 lon_0=-100d30 lat_1=47d29 lat_2=46d11 lat_0=45d40 x_0=609601.2192024384 y_0=0 no_defs <> # 3401: ohio north: nad27 <3401> proj=lcc datum=NAD27 lon_0=-82d30 lat_1=41d42 lat_2=40d26 lat_0=39d40 x_0=609601.2192024384 y_0=0 no_defs <> # 3402: ohio south: nad27 <3402> proj=lcc datum=NAD27 lon_0=-82d30 lat_1=40d2 lat_2=38d44 lat_0=38 x_0=609601.2192024384 y_0=0 no_defs <> # 3501: oklahoma north: nad27 <3501> proj=lcc datum=NAD27 lon_0=-98 lat_1=36d46 lat_2=35d34 lat_0=35 x_0=609601.2192024384 y_0=0 no_defs <> # 3502: oklahoma south: nad27 <3502> proj=lcc datum=NAD27 lon_0=-98 lat_1=35d14 lat_2=33d56 lat_0=33d20 x_0=609601.2192024384 y_0=0 no_defs <> # 3601: oregon north: nad27 <3601> proj=lcc datum=NAD27 lon_0=-120d30 lat_1=46 lat_2=44d20 lat_0=43d40 x_0=609601.2192024384 y_0=0 no_defs <> # 3602: oregon south: nad27 <3602> proj=lcc datum=NAD27 lon_0=-120d30 lat_1=44 lat_2=42d20 lat_0=41d40 x_0=609601.2192024384 y_0=0 no_defs <> # 3701: pennsylvania north: nad27 <3701> proj=lcc datum=NAD27 lon_0=-77d45 lat_1=41d57 lat_2=40d53 lat_0=40d10 x_0=609601.2192024384 y_0=0 no_defs <> # 3702: pennsylvania south: nad27 <3702> proj=lcc datum=NAD27 lon_0=-77d45 lat_1=40d58 lat_2=39d56 lat_0=39d20 x_0=609601.2192024384 y_0=0 no_defs <> # 3800: rhode island ---: nad27 <3800> proj=tmerc datum=NAD27 lon_0=-71d30 lat_0=41d5 k=.99999375 x_0=152400.3048006096 y_0=0 no_defs <> # 3901: south carolina north: nad27 <3901> proj=lcc datum=NAD27 lon_0=-81 lat_1=34d58 lat_2=33d46 lat_0=33 x_0=609601.2192024384 y_0=0 no_defs <> # 3902: south carolina south: nad27 <3902> proj=lcc datum=NAD27 lon_0=-81 lat_1=33d40 lat_2=32d20 lat_0=31d50 x_0=609601.2192024384 y_0=0 no_defs <> # 4001: south dakota north: nad27 <4001> proj=lcc datum=NAD27 lon_0=-100 lat_1=45d41 lat_2=44d25 lat_0=43d50 x_0=609601.2192024384 y_0=0 no_defs <> # 4002: south dakota south: nad27 <4002> proj=lcc datum=NAD27 lon_0=-100d20 lat_1=44d24 lat_2=42d50 lat_0=42d20 x_0=609601.2192024384 y_0=0 no_defs <> # 4100: tennessee ---: nad27 <4100> proj=lcc datum=NAD27 lon_0=-86 lat_1=36d25 lat_2=35d15 lat_0=34d40 x_0=609601.2192024384 y_0=30480.06096012192 no_defs <> # 4201: texas north: nad27 <4201> proj=lcc datum=NAD27 lon_0=-101d30 lat_1=36d11 lat_2=34d39 lat_0=34 x_0=609601.2192024384 y_0=0 no_defs <> # 4202: texas north central: nad27 <4202> proj=lcc datum=NAD27 lon_0=-97d30 lat_1=33d58 lat_2=32d8 lat_0=31d40 x_0=609601.2192024384 y_0=0 no_defs <> # 4203: texas central: nad27 <4203> proj=lcc datum=NAD27 lon_0=-100d20 lat_1=31d53 lat_2=30d7 lat_0=29d40 x_0=609601.2192024384 y_0=0 no_defs <> # 4204: texas south central: nad27 <4204> proj=lcc datum=NAD27 lon_0=-99 lat_1=30d17 lat_2=28d23 lat_0=27d50 x_0=609601.2192024384 y_0=0 no_defs <> # 4205: texas south: nad27 <4205> proj=lcc datum=NAD27 lon_0=-98d30 lat_1=27d50 lat_2=26d10 lat_0=25d40 x_0=609601.2192024384 y_0=0 no_defs <> # 4301: utah north: nad27 <4301> proj=lcc datum=NAD27 lon_0=-111d30 lat_1=41d47 lat_2=40d43 lat_0=40d20 x_0=609601.2192024384 y_0=0 no_defs <> # 4302: utah central: nad27 <4302> proj=lcc datum=NAD27 lon_0=-111d30 lat_1=40d39 lat_2=39d1 lat_0=38d20 x_0=609601.2192024384 y_0=0 no_defs <> # 4303: utah south: nad27 <4303> proj=lcc datum=NAD27 lon_0=-111d30 lat_1=38d21 lat_2=37d13 lat_0=36d40 x_0=609601.2192024384 y_0=0 no_defs <> # 4400: vermont ---: nad27 <4400> proj=tmerc datum=NAD27 lon_0=-72d30 lat_0=42d30 k=.9999642857142857 x_0=152400.3048006096 y_0=0 no_defs <> # 4501: virginia north: nad27 <4501> proj=lcc datum=NAD27 lon_0=-78d30 lat_1=39d12 lat_2=38d2 lat_0=37d40 x_0=609601.2192024384 y_0=0 no_defs <> # 4502: virginia south: nad27 <4502> proj=lcc datum=NAD27 lon_0=-78d30 lat_1=37d58 lat_2=36d46 lat_0=36d20 x_0=609601.2192024384 y_0=0 no_defs <> # 4601: washington north: nad27 <4601> proj=lcc datum=NAD27 lon_0=-120d50 lat_1=48d44 lat_2=47d30 lat_0=47 x_0=609601.2192024384 y_0=0 no_defs <> # 4602: washington south: nad27 <4602> proj=lcc datum=NAD27 lon_0=-120d30 lat_1=47d20 lat_2=45d50 lat_0=45d20 x_0=609601.2192024384 y_0=0 no_defs <> # 4701: west virginia north: nad27 <4701> proj=lcc datum=NAD27 lon_0=-79d30 lat_1=40d15 lat_2=39 lat_0=38d30 x_0=609601.2192024384 y_0=0 no_defs <> # 4702: west virginia south: nad27 <4702> proj=lcc datum=NAD27 lon_0=-81 lat_1=38d53 lat_2=37d29 lat_0=37 x_0=609601.2192024384 y_0=0 no_defs <> # 4801: wisconsin north: nad27 <4801> proj=lcc datum=NAD27 lon_0=-90 lat_1=46d46 lat_2=45d34 lat_0=45d10 x_0=609601.2192024384 y_0=0 no_defs <> # 4802: wisconsin central: nad27 <4802> proj=lcc datum=NAD27 lon_0=-90 lat_1=45d30 lat_2=44d15 lat_0=43d50 x_0=609601.2192024384 y_0=0 no_defs <> # 4803: wisconsin south: nad27 <4803> proj=lcc datum=NAD27 lon_0=-90 lat_1=44d4 lat_2=42d44 lat_0=42 x_0=609601.2192024384 y_0=0 no_defs <> # 4901: wyoming east: nad27 <4901> proj=tmerc datum=NAD27 lon_0=-105d10 lat_0=40d40 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 4902: wyoming east central: nad27 <4902> proj=tmerc datum=NAD27 lon_0=-107d20 lat_0=40d40 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 4903: wyoming west central: nad27 <4903> proj=tmerc datum=NAD27 lon_0=-108d45 lat_0=40d40 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 4904: wyoming west: nad27 <4904> proj=tmerc datum=NAD27 lon_0=-110d5 lat_0=40d40 k=.9999411764705882 x_0=152400.3048006096 y_0=0 no_defs <> # 5001: alaska zone no. 1: nad27 <5001> proj=omerc datum=NAD27 k=.9999 lonc=-133d40 lat_0=57 alpha=-36d52'11.6315 x_0=818585.5672270928 y_0=575219.2451072642 no_defs <> # 5002: alaska zone no. 2: nad27 <5002> proj=tmerc datum=NAD27 lon_0=-142 lat_0=54 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5003: alaska zone no. 3: nad27 <5003> proj=tmerc datum=NAD27 lon_0=-146 lat_0=54 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5004: alaska zone no. 4: nad27 <5004> proj=tmerc datum=NAD27 lon_0=-150 lat_0=54 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5005: alaska zone no. 5: nad27 <5005> proj=tmerc datum=NAD27 lon_0=-154 lat_0=54 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5006: alaska zone no. 6: nad27 <5006> proj=tmerc datum=NAD27 lon_0=-158 lat_0=54 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5007: alaska zone no. 7: nad27 <5007> proj=tmerc datum=NAD27 lon_0=-162 lat_0=54 k=.9999 x_0=213360.4267208534 y_0=0 no_defs <> # 5008: alaska zone no. 8: nad27 <5008> proj=tmerc datum=NAD27 lon_0=-166 lat_0=54 k=.9999 x_0=152400.3048006096 y_0=0 no_defs <> # 5009: alaska zone no. 9: nad27 <5009> proj=tmerc datum=NAD27 lon_0=-170 lat_0=54 k=.9999 x_0=182880.3657607315 y_0=0 no_defs <> # 5201: puerto rico and virgin islands: nad27 <5201> proj=lcc datum=NAD27 lon_0=-66d26 lat_1=18d26 lat_2=18d2 lat_0=17d50 x_0=152400.3048006096 y_0=0 no_defs <> # 5202: virgin islands st. croix: nad27 <5202> proj=lcc datum=NAD27 lon_0=-66d26 lat_1=18d26 lat_2=18d2 lat_0=17d50 x_0=152400.3048006096 y_0=30480.06096012192 no_defs <> # 5400: guam island: nad27 <5400> proj=poly datum=NAD27 x_0=50000 y_0=50000 lon_0=144d44'55.50254 lat_0=13d28'20.87887 no_defs <> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/nad83������������������������������������������������������������������0000664�0000000�0000000�00000040257�11770671653�0016711�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SCCSID @(#)nad83 4.1 92/12/20 GIE # proj +init files for: # # State Plane Coordinate Systems, # North American Datum 1983 # 101: alabama east: nad83 <101> proj=tmerc datum=NAD83 lon_0=-85d50 lat_0=30d30 k=.99996 x_0=200000 y_0=0 no_defs <> # 102: alabama west: nad83 <102> proj=tmerc datum=NAD83 lon_0=-87d30 lat_0=30 k=.9999333333333333 x_0=600000 y_0=0 no_defs <> # 5010: alaska zone no. 10: nad83 <5010> proj=lcc datum=NAD83 lon_0=-176 lat_1=53d50 lat_2=51d50 lat_0=51 x_0=1000000 y_0=0 no_defs <> # 201: arizona east: nad83 <201> proj=tmerc datum=NAD83 lon_0=-110d10 lat_0=31 k=.9999 x_0=213360 y_0=0 no_defs <> # 202: arizona central: nad83 <202> proj=tmerc datum=NAD83 lon_0=-111d55 lat_0=31 k=.9999 x_0=213360 y_0=0 no_defs <> # 203: arizona west: nad83 <203> proj=tmerc datum=NAD83 lon_0=-113d45 lat_0=31 k=.9999333333333333 x_0=213360 y_0=0 no_defs <> # 301: arkansas north: nad83 <301> proj=lcc datum=NAD83 lon_0=-92 lat_1=36d14 lat_2=34d56 lat_0=34d20 x_0=400000 y_0=0 no_defs <> # 302: arkansas south: nad83 <302> proj=lcc datum=NAD83 lon_0=-92 lat_1=34d46 lat_2=33d18 lat_0=32d40 x_0=400000 y_0=400000 no_defs <> # 401: california i: nad83 <401> proj=lcc datum=NAD83 lon_0=-122 lat_1=41d40 lat_2=40 lat_0=39d20 x_0=2000000 y_0=500000 no_defs <> # 402: california ii: nad83 <402> proj=lcc datum=NAD83 lon_0=-122 lat_1=39d50 lat_2=38d20 lat_0=37d40 x_0=2000000 y_0=500000 no_defs <> # 403: california iii: nad83 <403> proj=lcc datum=NAD83 lon_0=-120d30 lat_1=38d26 lat_2=37d4 lat_0=36d30 x_0=2000000 y_0=500000 no_defs <> # 404: california iv: nad83 <404> proj=lcc datum=NAD83 lon_0=-119 lat_1=37d15 lat_2=36 lat_0=35d20 x_0=2000000 y_0=500000 no_defs <> # 405: california v: nad83 <405> proj=lcc datum=NAD83 lon_0=-118 lat_1=35d28 lat_2=34d2 lat_0=33d30 x_0=2000000 y_0=500000 no_defs <> # 406: california vi: nad83 <406> proj=lcc datum=NAD83 lon_0=-116d15 lat_1=33d53 lat_2=32d47 lat_0=32d10 x_0=2000000 y_0=500000 no_defs <> # 501: colorado north: nad83 <501> proj=lcc datum=NAD83 lon_0=-105d30 lat_1=40d47 lat_2=39d43 lat_0=39d20 x_0=914401.8289 y_0=304800.6096 no_defs <> # 502: colorado central: nad83 <502> proj=lcc datum=NAD83 lon_0=-105d30 lat_1=39d45 lat_2=38d27 lat_0=37d50 x_0=914401.8289 y_0=304800.6096 no_defs <> # 503: colorado south: nad83 <503> proj=lcc datum=NAD83 lon_0=-105d30 lat_1=38d26 lat_2=37d14 lat_0=36d40 x_0=914401.8289 y_0=304800.6096 no_defs <> # 600: connecticut ---: nad83 <600> proj=lcc datum=NAD83 lon_0=-72d45 lat_1=41d52 lat_2=41d12 lat_0=40d50 x_0=304800.6096 y_0=152400.3048 no_defs <> # 700: delaware ---: nad83 <700> proj=tmerc datum=NAD83 lon_0=-75d25 lat_0=38 k=.999995 x_0=200000 y_0=0 no_defs <> # 901: florida east: nad83 <901> proj=tmerc datum=NAD83 lon_0=-81 lat_0=24d20 k=.9999411764705882 x_0=200000 y_0=0 no_defs <> # 902: florida west: nad83 <902> proj=tmerc datum=NAD83 lon_0=-82 lat_0=24d20 k=.9999411764705882 x_0=200000 y_0=0 no_defs <> # 903: florida north: nad83 <903> proj=lcc datum=NAD83 lon_0=-84d30 lat_1=30d45 lat_2=29d35 lat_0=29 x_0=600000 y_0=0 no_defs <> # 1001: georgia east: nad83 <1001> proj=tmerc datum=NAD83 lon_0=-82d10 lat_0=30 k=.9999 x_0=200000 y_0=0 no_defs <> # 1002: georgia west: nad83 <1002> proj=tmerc datum=NAD83 lon_0=-84d10 lat_0=30 k=.9999 x_0=700000 y_0=0 no_defs <> # 5101: hawaii 1: nad83 <5101> proj=tmerc datum=NAD83 lon_0=-155d30 lat_0=18d50 k=.9999666666666667 x_0=500000 y_0=0 no_defs <> # 5102: hawaii 2: nad83 <5102> proj=tmerc datum=NAD83 lon_0=-156d40 lat_0=20d20 k=.9999666666666667 x_0=500000 y_0=0 no_defs <> # 5103: hawaii 3: nad83 <5103> proj=tmerc datum=NAD83 lon_0=-158 lat_0=21d10 k=.99999 x_0=500000 y_0=0 no_defs <> # 5104: hawaii 4: nad83 <5104> proj=tmerc datum=NAD83 lon_0=-159d30 lat_0=21d50 k=.99999 x_0=500000 y_0=0 no_defs <> # 5105: hawaii 5: nad83 <5105> proj=tmerc datum=NAD83 lon_0=-160d10 lat_0=21d40 k=1 x_0=500000 y_0=0 no_defs <> # 1101: idaho east: nad83 <1101> proj=tmerc datum=NAD83 lon_0=-112d10 lat_0=41d40 k=.9999473684210526 x_0=200000 y_0=0 no_defs <> # 1102: idaho central: nad83 <1102> proj=tmerc datum=NAD83 lon_0=-114 lat_0=41d40 k=.9999473684210526 x_0=500000 y_0=0 no_defs <> # 1103: idaho west: nad83 <1103> proj=tmerc datum=NAD83 lon_0=-115d45 lat_0=41d40 k=.9999333333333333 x_0=800000 y_0=0 no_defs <> # 1201: illinois east: nad83 <1201> proj=tmerc datum=NAD83 lon_0=-88d20 lat_0=36d40 k=.999975 x_0=300000 y_0=0 no_defs <> # 1202: illinois west: nad83 <1202> proj=tmerc datum=NAD83 lon_0=-90d10 lat_0=36d40 k=.9999411764705882 x_0=700000 y_0=0 no_defs <> # 1301: indiana east: nad83 <1301> proj=tmerc datum=NAD83 lon_0=-85d40 lat_0=37d30 k=.9999666666666667 x_0=100000 y_0=250000 no_defs <> # 1302: indiana west: nad83 <1302> proj=tmerc datum=NAD83 lon_0=-87d5 lat_0=37d30 k=.9999666666666667 x_0=900000 y_0=250000 no_defs <> # 1401: iowa north: nad83 <1401> proj=lcc datum=NAD83 lon_0=-93d30 lat_1=43d16 lat_2=42d4 lat_0=41d30 x_0=1500000 y_0=1000000 no_defs <> # 1402: iowa south: nad83 <1402> proj=lcc datum=NAD83 lon_0=-93d30 lat_1=41d47 lat_2=40d37 lat_0=40 x_0=500000 y_0=0 no_defs <> # 1501: kansas north: nad83 <1501> proj=lcc datum=NAD83 lon_0=-98 lat_1=39d47 lat_2=38d43 lat_0=38d20 x_0=400000 y_0=0 no_defs <> # 1502: kansas south: nad83 <1502> proj=lcc datum=NAD83 lon_0=-98d30 lat_1=38d34 lat_2=37d16 lat_0=36d40 x_0=400000 y_0=400000 no_defs <> # 1601: kentucky north: nad83 <1601> proj=lcc datum=NAD83 lon_0=-84d15 lat_1=38d58 lat_2=37d58 lat_0=37d30 x_0=500000 y_0=0 no_defs <> # 1602: kentucky south: nad83 <1602> proj=lcc datum=NAD83 lon_0=-85d45 lat_1=37d56 lat_2=36d44 lat_0=36d20 x_0=500000 y_0=500000 no_defs <> # 1701: louisiana north: nad83 <1701> proj=lcc datum=NAD83 lon_0=-92d30 lat_1=32d40 lat_2=31d10 lat_0=30d30 x_0=1000000 y_0=0 no_defs <> # 1702: louisiana south: nad83 <1702> proj=lcc datum=NAD83 lon_0=-91d20 lat_1=30d42 lat_2=29d18 lat_0=28d30 x_0=1000000 y_0=0 no_defs <> # 1703: louisiana offshore: nad83 <1703> proj=lcc datum=NAD83 lon_0=-91d20 lat_1=27d50 lat_2=26d10 lat_0=25d30 x_0=1000000 y_0=0 no_defs <> # 1801: maine east: nad83 <1801> proj=tmerc datum=NAD83 lon_0=-68d30 lat_0=43d40 k=.9999 x_0=300000 y_0=0 no_defs <> # 1802: maine west: nad83 <1802> proj=tmerc datum=NAD83 lon_0=-70d10 lat_0=42d50 k=.9999666666666667 x_0=900000 y_0=0 no_defs <> # 1900: maryland ---: nad83 <1900> proj=lcc datum=NAD83 lon_0=-77 lat_1=39d27 lat_2=38d18 lat_0=37d40 x_0=400000 y_0=0 no_defs <> # 2001: massachusetts mainland: nad83 <2001> proj=lcc datum=NAD83 lon_0=-71d30 lat_1=42d41 lat_2=41d43 lat_0=41 x_0=200000 y_0=750000 no_defs <> # 2002: massachusetts island: nad83 <2002> proj=lcc datum=NAD83 lon_0=-70d30 lat_1=41d29 lat_2=41d17 lat_0=41 x_0=500000 y_0=0 no_defs <> # 2111: michigan north: nad83 <2111> proj=lcc datum=NAD83 lon_0=-87 lat_1=47d5 lat_2=45d29 lat_0=44d47 x_0=8000000 y_0=0 no_defs <> # 2112: michigan central/l: nad83 <2112> proj=lcc datum=NAD83 lon_0=-84d22 lat_1=45d42 lat_2=44d11 lat_0=43d19 x_0=6000000 y_0=0 no_defs <> # 2113: michigan south: nad83 <2113> proj=lcc datum=NAD83 lon_0=-84d22 lat_1=43d40 lat_2=42d6 lat_0=41d30 x_0=4000000 y_0=0 no_defs <> # 2201: minnesota north: nad83 <2201> proj=lcc datum=NAD83 lon_0=-93d6 lat_1=48d38 lat_2=47d2 lat_0=46d30 x_0=800000 y_0=100000 no_defs <> # 2202: minnesota central: nad83 <2202> proj=lcc datum=NAD83 lon_0=-94d15 lat_1=47d3 lat_2=45d37 lat_0=45 x_0=800000 y_0=100000 no_defs <> # 2203: minnesota south: nad83 <2203> proj=lcc datum=NAD83 lon_0=-94 lat_1=45d13 lat_2=43d47 lat_0=43 x_0=800000 y_0=100000 no_defs <> # 2301: mississippi east: nad83 <2301> proj=tmerc datum=NAD83 lon_0=-88d50 lat_0=29d30 k=.99995 x_0=300000 y_0=0 no_defs <> # 2302: mississippi west: nad83 <2302> proj=tmerc datum=NAD83 lon_0=-90d20 lat_0=29d30 k=.99995 x_0=700000 y_0=0 no_defs <> # 2401: missouri east: nad83 <2401> proj=tmerc datum=NAD83 lon_0=-90d30 lat_0=35d50 k=.9999333333333333 x_0=250000 y_0=0 no_defs <> # 2402: missouri central: nad83 <2402> proj=tmerc datum=NAD83 lon_0=-92d30 lat_0=35d50 k=.9999333333333333 x_0=500000 y_0=0 no_defs <> # 2403: missouri west: nad83 <2403> proj=tmerc datum=NAD83 lon_0=-94d30 lat_0=36d10 k=.9999411764705882 x_0=850000 y_0=0 no_defs <> # 2500: montana: nad83 <2500> proj=lcc datum=NAD83 lon_0=-109d30 lat_1=49 lat_2=45 lat_0=44d15 x_0=600000 y_0=0 no_defs <> # 2600: nebraska: nad83 <2600> proj=lcc datum=NAD83 lon_0=-100 lat_1=43 lat_2=40 lat_0=39d50 x_0=500000 y_0=0 no_defs <> # 2701: nevada east: nad83 <2701> proj=tmerc datum=NAD83 lon_0=-115d35 lat_0=34d45 k=.9999 x_0=200000 y_0=8000000 no_defs <> # 2702: nevada central: nad83 <2702> proj=tmerc datum=NAD83 lon_0=-116d40 lat_0=34d45 k=.9999 x_0=500000 y_0=6000000 no_defs <> # 2703: nevada west: nad83 <2703> proj=tmerc datum=NAD83 lon_0=-118d35 lat_0=34d45 k=.9999 x_0=800000 y_0=4000000 no_defs <> # 2800: new hampshire ---: nad83 <2800> proj=tmerc datum=NAD83 lon_0=-71d40 lat_0=42d30 k=.9999666666666667 x_0=300000 y_0=0 no_defs <> # 2900: new jersey ---: nad83 <2900> proj=tmerc datum=NAD83 lon_0=-74d30 lat_0=38d50 k=.9999 x_0=150000 y_0=0 no_defs <> # 3001: new mexico east: nad83 <3001> proj=tmerc datum=NAD83 lon_0=-104d20 lat_0=31 k=.9999090909090909 x_0=165000 y_0=0 no_defs <> # 3002: new mexico central: nad83 <3002> proj=tmerc datum=NAD83 lon_0=-106d15 lat_0=31 k=.9999 x_0=500000 y_0=0 no_defs <> # 3003: new mexico west: nad83 <3003> proj=tmerc datum=NAD83 lon_0=-107d50 lat_0=31 k=.9999166666666667 x_0=830000 y_0=0 no_defs <> # 3101: new york east: nad83 <3101> proj=tmerc datum=NAD83 lon_0=-74d30 lat_0=38d50 k=.9999 x_0=150000 y_0=0 no_defs <> # 3102: new york central: nad83 <3102> proj=tmerc datum=NAD83 lon_0=-76d35 lat_0=40 k=.9999375 x_0=250000 y_0=0 no_defs <> # 3103: new york west: nad83 <3103> proj=tmerc datum=NAD83 lon_0=-78d35 lat_0=40 k=.9999375 x_0=350000 y_0=0 no_defs <> # 3104: new york long island: nad83 <3104> proj=lcc datum=NAD83 lon_0=-74 lat_1=41d2 lat_2=40d40 lat_0=40d10 x_0=300000 y_0=0 no_defs <> # 3200: north carolina ---: nad83 <3200> proj=lcc datum=NAD83 lon_0=-79 lat_1=36d10 lat_2=34d20 lat_0=33d45 x_0=609601.22 y_0=0 no_defs <> # 3301: north dakota north: nad83 <3301> proj=lcc datum=NAD83 lon_0=-100d30 lat_1=48d44 lat_2=47d26 lat_0=47 x_0=600000 y_0=0 no_defs <> # 3302: north dakota south: nad83 <3302> proj=lcc datum=NAD83 lon_0=-100d30 lat_1=47d29 lat_2=46d11 lat_0=45d40 x_0=600000 y_0=0 no_defs <> # 3401: ohio north: nad83 <3401> proj=lcc datum=NAD83 lon_0=-82d30 lat_1=41d42 lat_2=40d26 lat_0=39d40 x_0=600000 y_0=0 no_defs <> # 3402: ohio south: nad83 <3402> proj=lcc datum=NAD83 lon_0=-82d30 lat_1=40d2 lat_2=38d44 lat_0=38 x_0=600000 y_0=0 no_defs <> # 3501: oklahoma north: nad83 <3501> proj=lcc datum=NAD83 lon_0=-98 lat_1=36d46 lat_2=35d34 lat_0=35 x_0=600000 y_0=0 no_defs <> # 3502: oklahoma south: nad83 <3502> proj=lcc datum=NAD83 lon_0=-98 lat_1=35d14 lat_2=33d56 lat_0=33d20 x_0=600000 y_0=0 no_defs <> # 3601: oregon north: nad83 <3601> proj=lcc datum=NAD83 lon_0=-120d30 lat_1=46 lat_2=44d20 lat_0=43d40 x_0=2500000 y_0=0 no_defs <> # 3602: oregon south: nad83 <3602> proj=lcc datum=NAD83 lon_0=-120d30 lat_1=44 lat_2=42d20 lat_0=41d40 x_0=1500000 y_0=0 no_defs <> # 3701: pennsylvania north: nad83 <3701> proj=lcc datum=NAD83 lon_0=-77d45 lat_1=41d57 lat_2=40d53 lat_0=40d10 x_0=600000 y_0=0 no_defs <> # 3702: pennsylvania south: nad83 <3702> proj=lcc datum=NAD83 lon_0=-77d45 lat_1=40d58 lat_2=39d56 lat_0=39d20 x_0=600000 y_0=0 no_defs <> # 3800: rhode island ---: nad83 <3800> proj=tmerc datum=NAD83 lon_0=-71d30 lat_0=41d5 k=.99999375 x_0=100000 y_0=0 no_defs <> # 3900: south carolina: nad83 <3900> proj=lcc datum=NAD83 lon_0=-81 lat_1=34d50 lat_2=32d30 lat_0=31d50 x_0=609600 y_0=0 no_defs <> # 4001: south dakota north: nad83 <4001> proj=lcc datum=NAD83 lon_0=-100 lat_1=45d41 lat_2=44d25 lat_0=43d50 x_0=600000 y_0=0 no_defs <> # 4002: south dakota south: nad83 <4002> proj=lcc datum=NAD83 lon_0=-100d20 lat_1=44d24 lat_2=42d50 lat_0=42d20 x_0=600000 y_0=0 no_defs <> # 4100: tennessee ---: nad83 <4100> proj=lcc datum=NAD83 lon_0=-86 lat_1=36d25 lat_2=35d15 lat_0=34d20 x_0=600000 y_0=0 no_defs <> # 4201: texas north: nad83 <4201> proj=lcc datum=NAD83 lon_0=-101d30 lat_1=36d11 lat_2=34d39 lat_0=34 x_0=200000 y_0=1000000 no_defs <> # 4202: texas north central: nad83 <4202> proj=lcc datum=NAD83 lon_0=-98d30 lat_1=33d58 lat_2=32d8 lat_0=31d40 x_0=600000 y_0=2000000 no_defs <> # 4203: texas central: nad83 <4203> proj=lcc datum=NAD83 lon_0=-100d20 lat_1=31d53 lat_2=30d7 lat_0=29d40 x_0=700000 y_0=3000000 no_defs <> # 4204: texas south central: nad83 <4204> proj=lcc datum=NAD83 lon_0=-99 lat_1=30d17 lat_2=28d23 lat_0=27d50 x_0=600000 y_0=4000000 no_defs <> # 4205: texas south: nad83 <4205> proj=lcc datum=NAD83 lon_0=-98d30 lat_1=27d50 lat_2=26d10 lat_0=25d40 x_0=300000 y_0=5000000 no_defs <> # 4301: utah north: nad83 <4301> proj=lcc datum=NAD83 lon_0=-111d30 lat_1=41d47 lat_2=40d43 lat_0=40d20 x_0=500000 y_0=1000000 no_defs <> # 4302: utah central: nad83 <4302> proj=lcc datum=NAD83 lon_0=-111d30 lat_1=40d39 lat_2=39d1 lat_0=38d20 x_0=500000 y_0=2000000 no_defs <> # 4303: utah south: nad83 <4303> proj=lcc datum=NAD83 lon_0=-111d30 lat_1=38d21 lat_2=37d13 lat_0=36d40 x_0=500000 y_0=3000000 no_defs <> # 4400: vermont ---: nad83 <4400> proj=tmerc datum=NAD83 lon_0=-72d30 lat_0=42d30 k=.9999642857142857 x_0=500000 y_0=0 no_defs <> # 4501: virginia north: nad83 <4501> proj=lcc datum=NAD83 lon_0=-78d30 lat_1=39d12 lat_2=38d2 lat_0=37d40 x_0=3500000 y_0=2000000 no_defs <> # 4502: virginia south: nad83 <4502> proj=lcc datum=NAD83 lon_0=-78d30 lat_1=37d58 lat_2=36d46 lat_0=36d20 x_0=3500000 y_0=1000000 no_defs <> # 4601: washington north: nad83 <4601> proj=lcc datum=NAD83 lon_0=-120d50 lat_1=48d44 lat_2=47d30 lat_0=47 x_0=500000 y_0=0 no_defs <> # 4602: washington south: nad83 <4602> proj=lcc datum=NAD83 lon_0=-120d30 lat_1=47d20 lat_2=45d50 lat_0=45d20 x_0=500000 y_0=0 no_defs <> # 4701: west virginia north: nad83 <4701> proj=lcc datum=NAD83 lon_0=-79d30 lat_1=40d15 lat_2=39 lat_0=38d30 x_0=600000 y_0=0 no_defs <> # 4702: west virginia south: nad83 <4702> proj=lcc datum=NAD83 lon_0=-81 lat_1=38d53 lat_2=37d29 lat_0=37 x_0=600000 y_0=0 no_defs <> # 4801: wisconsin north: nad83 <4801> proj=lcc datum=NAD83 lon_0=-90 lat_1=46d46 lat_2=45d34 lat_0=45d10 x_0=600000 y_0=0 no_defs <> # 4802: wisconsin central: nad83 <4802> proj=lcc datum=NAD83 lon_0=-90 lat_1=45d30 lat_2=44d15 lat_0=43d50 x_0=600000 y_0=0 no_defs <> # 4803: wisconsin south: nad83 <4803> proj=lcc datum=NAD83 lon_0=-90 lat_1=44d4 lat_2=42d44 lat_0=42 x_0=600000 y_0=0 no_defs <> # 4901: wyoming east: nad83 <4901> proj=tmerc datum=NAD83 lon_0=-105d10 lat_0=40d30 k=.9999375 x_0=200000 y_0=0 no_defs <> # 4902: wyoming east central: nad83 <4902> proj=tmerc datum=NAD83 lon_0=-107d20 lat_0=40d30 k=.9999375 x_0=400000 y_0=100000 no_defs <> # 4903: wyoming west central: nad83 <4903> proj=tmerc datum=NAD83 lon_0=-108d45 lat_0=40d30 k=.9999375 x_0=600000 y_0=0 no_defs <> # 4904: wyoming west: nad83 <4904> proj=tmerc datum=NAD83 lon_0=-110d5 lat_0=40d30 k=.9999375 x_0=800000 y_0=100000 no_defs <> # 5001: alaska zone no. 1: nad83 <5001> proj=omerc datum=NAD83 k=.9999 lonc=-133d40 lat_0=57 alpha=-36d52'11.6315 x_0=818676.7344011233 y_0=575097.6888751927 no_defs <> # 5002: alaska zone no. 2: nad83 <5002> proj=tmerc datum=NAD83 lon_0=-142 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5003: alaska zone no. 3: nad83 <5003> proj=tmerc datum=NAD83 lon_0=-146 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5004: alaska zone no. 4: nad83 <5004> proj=tmerc datum=NAD83 lon_0=-150 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5005: alaska zone no. 5: nad83 <5005> proj=tmerc datum=NAD83 lon_0=-154 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5006: alaska zone no. 6: nad83 <5006> proj=tmerc datum=NAD83 lon_0=-158 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5007: alaska zone no. 7: nad83 <5007> proj=tmerc datum=NAD83 lon_0=-162 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5008: alaska zone no. 8: nad83 <5008> proj=tmerc datum=NAD83 lon_0=-166 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5009: alaska zone no. 9: nad83 <5009> proj=tmerc datum=NAD83 lon_0=-170 lat_0=54 k=.9999 x_0=500000 y_0=0 no_defs <> # 5200: puerto rico and virgin islands: nad83 <5200> proj=lcc datum=NAD83 lon_0=-66d26 lat_1=18d26 lat_2=18d2 lat_0=17d50 x_0=200000 y_0=200000 no_defs <> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/other.extra������������������������������������������������������������0000664�0000000�0000000�00000007166�11770671653�0020241�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## NAD83 / BC Albers (this has been superceeded but is kept for compatibility) <42102> +proj=aea +ellps=GRS80 +lat_0=45 +lon_0=-126.0 +lat_1=50.0 +lat_2=58.5 +x_0=1000000.0 +y_0=0 +datum=NAD83 +units=m no_defs <> # # OGC-defined extended codes (41000--41999) # see http://www.digitalearth.gov/wmt/auto.html # # WGS84 / Simple Mercator <41001> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # # CubeWerx-defined extended codes (42100--42199) # # WGS 84 / LCC Canada <42101> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=0 +lon_0=-95 +x_0=0 +y_0=-8000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> #EPSG:42102,"PROJCS[\"NAD83 / BC Albers\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS_1980\",6378137,298.257222101]],PRIMEM[\"Greenwich\",0],UNIT[\"Decimal_Degree\",0.0174532925199433]],PROJECTION[\"Albers_conic_equal_area\"],PARAMETER[\"central_meridian\",-126.0],PARAMETER[\"latitude_of_origin\",45],PARAMETER[\"standard_parallel_1\",50.0],PARAMETER[\"standard_parallel_2\",58.5],PARAMETER[\"false_easting\",1000000.0],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]]" # WGS 84 / LCC USA <42103> +proj=lcc +lat_1=33 +lat_2=45 +lat_0=0 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS72 +datum=WGS84 +units=m +no_defs no_defs <> # NAD83 / MTM zone 8 Québec <42104> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs no_defs <> # WGS84 / Merc NorthAm <42105> +proj=merc +lat_ts=0 +lon_0=-96 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs no_defs <> # WGS84 / Lambert Azim Mozambique <42106> +proj=laea +lat_0=5 +lon_0=20 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +datum=WGS84 +units=m +no_defs no_defs <> # # CubeWerx-customer definitions (42300--42399) # # NAD27 / Polar Stereographic / CM=-98 <42301> +proj=stere +lat_0=90 +lon_0=-98 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # JapanOrtho.09 09 <42302> +proj=tmerc +lat_0=36 +lon_0=139.833333333333 +k=0.999900 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs no_defs <> # NAD83 / Albers NorthAm <42303> +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / NRCan LCC Canada <42304> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # France_II <42305> +proj=lcc +lat_1=45.898918964419 +lat_2=47.696014502038 +lat_0=46.8 +lon_0=2.337229166666667 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999904194 +pm=2.337229166666667 +units=m +no_defs no_defs <> # NAD83/QC_LCC <42306> +proj=lcc +lat_1=46 +lat_2=60 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # NAD83 / Texas Central - feet <42307> +proj=lcc +lat_1=31.8833333333333 +lat_2=30.1166666666667 +lat_0=29.6666666666667 +lon_0=-100.333333333333 +x_0=700000.0000000001 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs no_defs <> # NAD27 / California Albers <42308> +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs no_defs <> # NAD 83 / LCC Canada AVHRR-2 <42309> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=0 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> # WGS84+GRS80 / Mercator <42310> +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=GRS80 +datum=WGS84 +units=m +no_defs no_defs <> # NAD83 / LCC Statcan <42311> +proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666700000001 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/proj_def.dat�����������������������������������������������������������0000664�0000000�0000000�00000000405�11770671653�0020322�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Projection library defaults file # SCCSID--- @(#)proj_def.dat 4.3 94/02/23 GIE REL" # very preliminary version <general> ellps=WGS84 <> <aea> # Conterminous U.S. map lat_1=29.5 lat_2=45.5 <> <lcc> # Conterminous U.S. map lat_1=33 lat_2=45 <> <lagrng> W=2 <> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/proj/world������������������������������������������������������������������0000664�0000000�0000000�00000015603�11770671653�0017120�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SCCSID @(#)world 1.2 95/08/05 GIE REL # proj +init files for various non-U.S. coordinate systems. # <CH1903> # Swiss Coordinate System +proj=somerc +lat_0=46d57'8.660"N +lon_0=7d26'22.500"E +ellps=bessel +x_0=600000 +y_0=200000 +k_0=1. no_defs <> <madagascar> # Laborde grid for Madagascar proj=labrd ellps=intl lon_0=46d26'13.95E lat_0=18d54S azi=18d54 k_0=.9995 x_0=400000 y_0=800000 no_defs <> <new_zealand> # New Zealand Map Grid (NZMG) proj=nzmg # Projection unique to N.Z. so all factors fixed no_defs <> # Secondary grids DMA TM8358.1, p. 4.3 <bwi> # British West Indies proj=tmerc ellps=clrk80 lon_0=62W x_0=400000 k_0=0.9995 no_defs <> <costa-n> # Costa Rica Norte proj=lcc ellps=clrk66 lat_1=10d28N lon_0=84d20W x_0=500000 y_0=217820.522 k_0=0.99995696 no_defs <> <costa-s> # Costa Rica Sud proj=lcc ellps=clrk66 lat_1=9dN lon_0=83d40W x_0=500000 y_0=327987.436 k_0=0.99995696 no_defs <> <cuba-n> # Cuba Norte proj=lcc ellps=clrk66 lat_1=22d21N lon_0=81dW x_0=500000 y_0=280296.016 k_0=0.99993602 no_defs <> <cuba-s> # Cuba Sud proj=lcc ellps=clrk66 lat_1=20d43'N lon_0=76d50'W x_0=500000 y_0=229126.939 k_0=0.99994848 no_defs <> <domin_rep> # Dominican Republic proj=lcc ellps=clrk66 lat_1=18d49'N lon_0=71d30'W x_0=500000 y_0=277063.657 k_0=0.99991102 no_defs <> <egypt-1> # Egypt proj=tmerc ellps=intl lon_0=25d30'E x_0=300000 k_0=0.99985 no_defs <> <egypt-2> # Egypt proj=tmerc ellps=intl lon_0=28d30'E x_0=300000 k_0=0.99985 no_defs <> <egypt-3> # Egypt proj=tmerc ellps=intl lon_0=31d30'E x_0=300000 k_0=0.99985 no_defs <> <egypt-4> # Egypt proj=tmerc ellps=intl lon_0=34d30'E x_0=300000 k_0=0.99985 no_defs <> <egypt-5> # Egypt proj=tmerc ellps=intl lon_0=37d30'E x_0=300000 k_0=0.99985 no_defs <> <el_sal> # El Salvador proj=lcc ellps=clrk66 lat_1=13d47'N lon_0=89dW x_0=500000 y_0=295809.184 k_0=0.99996704 no_defs <> <guat-n> # Guatemala Norte proj=lcc ellps=clrk66 lat_1=16d49'N lon_0=90d20'W x_0=500000 y_0=292209.579 k_0=0.99992226 no_defs <> <guat-s> # Guatemala Sud proj=lcc ellps=clrk66 lat_1=14d54'N lon_0=90d20'W x_0=500000 y_0=325992.681 k_0=0.99989906 no_defs <> <haiti> # Haiti proj=lcc ellps=clrk66 lat_1=18d49'N lon_0=71d30'W x_0=500000 y_0=277063.657 k_0=0.99991102 no_defs <> <hond-n> # Honduras Norte proj=lcc ellps=clrk66 lat_1=15d30'N lon_0=86d10'W x_0=500000 y_0=296917.439 k_0=0.99993273 no_defs <> <hond-s> # Honduras Sud proj=lcc ellps=clrk66 lat_1=13d47'N lon_0=87d10'W x_0=500000 y_0=296215.903 k_0=0.99995140 no_defs <> <levant> # Levant proj=lcc ellps=clrk66 lat_1=34d39'N lon_0=37d21'E x_0=500000 y_0=300000 k_0=0.9996256 no_defs <> <nica-n> # Nicaragua Norte proj=lcc ellps=clrk66 lat_1=13d52'N lon_0=85d30'W x_0=500000 y_0=359891.816 k_0=0.99990314 no_defs <> <nica-s> # Nicaragua Sud proj=lcc ellps=clrk66 lat_1=11d40'N lon_0=85d30'W x_0=500000 y_0=288876.327 k_0=0.99992228 no_defs <> <nw-africa> # Northwest Africa proj=lcc ellps=clrk80 lat_1=34dN lon_0=0dE x_0=1000000 y_0=500000 k_0=0.99908 no_defs <> <palestine> # Palestine proj=tmerc a=6378300.79 rf=293.488307656 lat_0=31d44'2.749"N lon_0=35d12'43.490"E x_0=170251.555 y_0=126867.909 k_0=1 no_defs <> <panama> # Panama proj=lcc ellps=clrk66 lat_1=8d25'N lon_0=80dW x_0=500000 y_0=294865.303 k_0=0.99989909 no_defs <> # other grids in DMA TM8358.1 <bng> # British National Grid proj=tmerc ellps=airy lat_0=49dN lon_0=2dW k_0=0.9996012717 x_0=400000 y_0=-100000 no_defs <> <malay> # West Malaysian RSO Grid proj=omerc a=6377295.66402 rf=300.8017 alpha=323d01'32.846" no_uoff rot_conv lonc=102d15E lat_0=4dN k_0=0.99984 x_0=804670.240 y_0=0 no_defs <> <india-I> # India Zone I proj=lcc ellps=everest lon_0=68E lat_1=32d30'N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <india-IIA> # India Zone IIA proj=lcc ellps=everest lon_0=74E lat_1=26N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <india-IIB> # India Zone IIB proj=lcc ellps=everest lon_0=90E lat_1=26N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <india-IIIA> # India Zone IIIA proj=lcc ellps=everest lon_0=80E lat_1=19N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <india-IIIB> # India Zone IIIB proj=lcc ellps=everest lon_0=100E lat_1=19N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <india-IVA> # India Zone IVA proj=lcc ellps=everest lon_0=80E lat_1=12N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <india-IVB> # India Zone IVB proj=lcc ellps=everest lon_0=104E lat_1=12N x_0=2743185.69 y_0=914395.23 k_0=.998786408 no_defs <> <ceylon> # Ceylon Belt proj=tmerc ellps=everest lon_0=80d46'18.160"E lat_0=7d0'1.729"N x_0=160933.56048 y_0=160933.56048 k_0=1. no_defs <> <irish> # Irish Transverse Mercator Grid proj=tmerc ellps=mod_airy lat_0=53d30'N lon_0=8W x_0=200000 y_0=250000 k_0=1.000035 no_defs <> <neiez> # Netherlands East Indies Equitorial Zone proj=merc ellps=bessel lon_0=110E x_0=3900000 y_0=900000 k_0=0.997 no_defs <> <n-alger> # Nord Algerie Grid proj=lcc ellps=clrk80 lon_0=2d42E lat_0=36N x_0=500000 y_0=300000 k_0=0.999625544 no_defs <> <n-maroc> # Nord Maroc Grid proj=lcc ellps=clrk80 lon_0=5d24'W lat_0=33d18'N x_0=500000 y_0=300000 k_0=0.999625769 no_defs <> <n-tunis> # Nord Tunisie Grid proj=lcc ellps=clrk80 lon_0=9d54E lat_0=36N x_0=500000 y_0=300000 k_0=0.999625544 no_defs <> <s-alger> # Sud Algerie Grid proj=lcc ellps=clrk80 lon_0=2d42E lat_0=33d18'N x_0=500000 y_0=300000 k_0=0.999625769 no_defs <> <s-maroc> # Sud Maroc Grid proj=lcc ellps=clrk80 lon_0=5d24W lat_0=29d42'N x_0=500000 y_0=300000 k_0=0.999615596 no_defs <> <s-tunis> # Sud Tunisie Grid proj=lcc ellps=clrk80 lon_0=9d54'E lat_0=33d18'N x_0=500000 y_0=300000 k_0=0.999625769 no_defs <> # Gauss Krueger Grid for Germany # # The first figure of the easting is lon_0 devided by 3 # ( 2 for 6d0E, 3 for 9d0E, 4 for 12d0E) # For translations you have to remove this first figure # and convert northings and eastings from km to meter . # The other way round, devide by 1000 and add the figure. # I made 3 entrys for the officially used grids in Germany # # # Und nochmal in deutsch : # Die erste Ziffer des Rechtswerts beschreibt den Hauptmeridian # und ist dessen Gradzahl geteilt durch 3. # Zum Umrechnen in Grad muss daher die erste Ziffer des Rechtswertes # entfernt werden und evt. von km auf Metern umgerechnet werden. # Zur Umrechnung in Gauss Krueger Koordinaten entsprechend die # Ziffer fuer den Hauptmeridian vor dem Rechtswert ergaenzen. # Ich hab fuer alle drei in Deutschland ueblichen Hauptmeridiane # jeweils einen Eintrag ergaenzt. # # # added by Michael Goepel <goepel@ffm.plusline.de> # <gk2-d> # Gauss Krueger Grid for Germany proj=tmerc ellps=bessel lon_0=6d0E lat_0=0 x_0=500000 no_defs<> <gk3-d> # Gauss Krueger Grid for Germany proj=tmerc ellps=bessel lon_0=9d0E lat_0=0 x_0=500000 no_defs<> <gk4-d> # Gauss Krueger Grid for Germany proj=tmerc ellps=bessel lon_0=12d0E lat_0=0 x_0=500000 no_defs<> �����������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/share.qrc�������������������������������������������������������������������0000664�0000000�0000000�00000000664�11770671653�0016706�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/"> <file alias="Projections.xml">Projections.xml</file> <file alias="WmsServersList.xml">WmsServersList.xml</file> <file alias="TmsServersList.xml">TmsServersList.xml</file> <file alias="BookmarksList.xml">BookmarksList.xml</file> </qresource> <qresource prefix="/proj"> <file alias="epsg">proj/epsg</file> <file alias="esri">proj/esri</file> </qresource> </RCC> ����������������������������������������������������������������������������merkaartor-0.18.1/share/world_shp/������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0017070�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/world_shp/world_adm0.dbf����������������������������������������������������0000664�0000000�0000000�00000034327�11770671653�0021606�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������f����E������������������W��NAME�������C����(���������������GMI_CNTRY��C�������������������REGION�����C������������������� Afghanistan AFGAsia Albania ALBEurope Algeria DZANorthAfrica Andorra ANDEurope Angola AGOSub Saharan Africa Antarctica ATAAntarctica Antigua and Barbuda ATGCaribbean Argentina ARGLatin America Armenia ARMAsia Australia AUSAustralia Austria AUTEurope Azerbaijan AZEAsia Bahamas, The BHSCaribbean Bahrain BHRAsia Bangladesh BGDAsia Barbados BRBCaribbean Belgium BELEurope Belize BLZLatin America Benin BENSub Saharan Africa Bermuda BMUNorth America Bhutan BTNAsia Bolivia BOLLatin America Bosnia and Herzegovina BIHEurope Botswana BWASub Saharan Africa Brazil BRALatin America Brunei BRNAsia Bulgaria BGREurope Burkina Faso BFASub Saharan Africa Burundi BDISub Saharan Africa Byelarus BLREurope Cambodia KHMAsia Cameroon CMRSub Saharan Africa Canada CANNorth America Cape Verde CPVSub Saharan Africa Central African Republic CAFSub Saharan Africa Chad TCDSub Saharan Africa Chile CHLLatin America China CHNAsia Colombia COLLatin America Comoros COMSub Saharan Africa Congo COGSub Saharan Africa Costa Rica CRILatin America Croatia HRVEurope Cuba CUBCaribbean Cyprus CYPAsia Czech Republic CZEEurope Denmark DNKEurope Djibouti DJISub Saharan Africa Dominica DMACaribbean Dominican Republic DOMCaribbean Ecuador ECULatin America Egypt EGYNorthAfrica El Salvador SLVLatin America Equatorial Guinea GNQSub Saharan Africa Eritrea ERISub Saharan Africa Estonia ESTEurope Ethiopia ETHSub Saharan Africa Falkland Islands (Islas Malvinas) FLKLatin America Faroe Islands FROEurope Fiji FJIAsia Finland FINEurope France FRAEurope French Guiana GUFLatin America French Polynesia PYFPacific Gabon GABSub Saharan Africa Gambia, The GMBSub Saharan Africa Gaza Strip ISRAsia Georgia GEOAsia Germany DEUEurope Ghana GHASub Saharan Africa Greece GRCEurope Greenland GRLNorth America Grenada GRDCaribbean Guadeloupe GLPCaribbean Guatemala GTMLatin America Guinea GINSub Saharan Africa Guinea-Bissau GNBSub Saharan Africa Guyana GUYLatin America Haiti HTICaribbean Honduras HNDLatin America Hong Kong Asia Hungary HUNEurope Iceland ISLEurope India INDAsia Indonesia IDNAsia Iran IRNAsia Iraq IRQAsia Iraq-Saudi Arabia Neutral Zone Asia Ireland IRLEurope Isle of Man XIMEurope Israel ISRAsia Italy ITAEurope Ivory Coast CIVSub Saharan Africa Jamaica JAMCaribbean Jan Mayen SJMEurope Japan JPNAsia Jordan JORAsia Kazakhstan KAZAsia Kenya KENSub Saharan Africa Kerguelen Antarctica Kiribati KIRAsia Korea, Peoples Republic of PRKAsia Korea, Republic of KORAsia Kuwait KWTAsia Kyrgyzstan KGZAsia Laos LAOAsia Latvia LVAEurope Lebanon LBNAsia Lesotho LSOSub Saharan Africa Liberia LBRSub Saharan Africa Libya LBYNorthAfrica Liechtenstein LIEEurope Lithuania LTUEurope Luxembourg LUXEurope Macau MACAsia Macedonia MKDEurope Madagascar MDGSub Saharan Africa Malawi MWISub Saharan Africa Malaysia MYSAsia Maldives MDVPacific Mali MLISub Saharan Africa Malta MLTPacific Martinique MTQCaribbean Mauritania MRTSub Saharan Africa Mauritius MUSSub Saharan Africa Mexico MEXLatin America Moldova MDAEurope Monaco MCOEurope Mongolia MNGAsia Morocco MARNorthAfrica Mozambique MOZSub Saharan Africa Myanmar (Burma) MMRAsia Namibia NAMSub Saharan Africa Nepal NPLAsia Netherlands NLDEurope New Caledonia NCLAsia New Zealand NZLAustralia Nicaragua NICLatin America Niger NERSub Saharan Africa Nigeria NGASub Saharan Africa Northern Mariana Islands MNPPacific Norway NOREurope Oman OMNAsia Pakistan PAKAsia Panama PANLatin America Papua New Guinea PNGAsia Paraguay PRYLatin America Peru PERLatin America Philippines PHLAsia Poland POLEurope Portugal PRTEurope Puerto Rico PRICaribbean Qatar QATAsia Reunion REUSub Saharan Africa Romania ROMEurope Russia RUSEurope Rwanda RWASub Saharan Africa San Marino SMREurope Sao Tome and Principe STPSub Saharan Africa Saudi Arabia SAUAsia Senegal SENSub Saharan Africa Seychelles SYCSub Saharan Africa Sierra Leone SLESub Saharan Africa Singapore SGPPacific Slovakia SVKEurope Slovenia SVNEurope Solomon Islands SLBAsia Somalia SOMSub Saharan Africa South Africa ZAFSub Saharan Africa Spain ESPEurope Sri Lanka LKAAsia St. Christopher-Nevis Caribbean St. Lucia LCACaribbean St. Vincent and the Grenadines VCTCaribbean Sudan SDNSub Saharan Africa Suriname SURLatin America Svalbard SJMEurope Swaziland SWZSub Saharan Africa Sweden SWEEurope Switzerland CHEEurope Syria SYRAsia Taiwan TWNAsia Tajikistan TJKAsia Tanzania, United Republic of TZASub Saharan Africa Thailand THAAsia Togo TGOSub Saharan Africa Tonga TONPacific Trinidad and Tobago TTOCaribbean Tunisia TUNNorthAfrica Turkey TURAsia Turkmenistan TKMAsia Turks and Caicos Islands TCACaribbean Uganda UGASub Saharan Africa Ukraine UKREurope United Arab Emirates AREAsia United Kingdom GBREurope United States USANorth America Uruguay URYLatin America Uzbekistan UZBAsia Vanuatu VUTAsia Venezuela VENLatin America Vietnam VNMAsia Western Sahara ESHNorthAfrica Western Samoa WSMPacific Yemen YEMAsia Yugoslavia YUGEurope Zaire ZARSub Saharan Africa Zambia ZMBSub Saharan Africa Zimbabwe ZWESub Saharan Africa ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/world_shp/world_adm0.shp����������������������������������������������������0000664�0000000�0000000�00005672170�11770671653�0021656�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000��������������������������������������������������������������������������������������������������������������������������������������������������������������������������' ��������������������� <��������f�����V�����f@���T@����p����������������������������� 0������`@N@���d=@���`R@���@9C@���#���������%hP@���@B@���@giP@���B@���@lP@��� B@���qP@���`_B@����FrP@����B@���@`P@���kB@��� {P@���@%B@���P@���B@���P@��� NB@���P@���`AB@���bP@��� HB@����P@���@B@���P@��� B@���@ P@���B@���)P@��� B@���bP@���B@���`P@���B@���P@���B@���P@��� aB@���P@���@ȗB@���@P@��� NB@���P@����ۇB@����FP@���؁B@����FQ@���\vB@���!Q@���B@���Q@��� B@��� NQ@���8B@���nQ@����^B@���`aQ@����B@���@!Q@��� B@���)Q@���`B@��� 4Q@���B@���@3Q@���`GB@���j6Q@��� B@����9Q@���עB@���);Q@���`qB@���9Q@���B@���?Q@���dB@���OQ@��� B@���PUQ@���`B@���@\Q@����pB@����hXQ@��� B@���~XQ@���@XB@����aQ@���@XB@����zQ@���SB@���Y}Q@���QB@���Q@��� B@���ZQ@���B@����Q@���@B@����Q@���B@���@Q@����B@���� Q@���@B@��� 6Q@���dC@���{Q@��� gC@����gQ@���#C@���*Q@���`*C@���߫Q@���0C@���`Q@���� 5C@���ZQ@���@9C@���Q@���3C@���;Q@����C@���IQ@���`C@���8Q@���C@���Q@���B@���Q@���B@���Q@��� B@����Q@���B@���@Q@���uB@���Q@���B@���@`Q@���`_B@��� Q@���B@����Q@���B@���@_Q@���@^B@���~Q@���� VB@���Q@��� XB@���@�R@��� gB@��� /R@���~B@���@x*R@���VB@��� 3R@����pB@����5ER@���B@���@IR@��� NB@���@TR@��� NB@���qR@���`B@���@-pR@���jB@���iR@���B@���`gR@��� B@��� hR@���B@���rR@���]B@���IR@���`ܶB@���R@��� B@���ǬR@���*B@���`R@��� žB@���HR@��� B@��� ڰR@��� B@���תR@���B@���@R@���� B@���`aR@���B@���R@���nB@���@R@���ϑB@����VR@���`cB@���`R@���{B@���@ܞR@���kB@���R@���zB@���R@��� sB@���*R@��� tB@���R@��� ,iB@���@}R@���;kB@���qR@���VsB@���;GR@����oB@���R@���bB@���� R@���{[B@���C R@��� TB@����R@���~PB@���R@��� rKB@���Q@���>B@����VQ@��� U5B@���1Q@���(4B@���bQ@���;B@���Q@���`/B@���KQ@��� *B@���Q@���B@���Q@���� B@����Q@���A@���ZQ@���A@���@Q@���`A@���Q@��� 6A@���IQ@���`A@���Q@���௽A@���kQ@���A@����%Q@���`A@���mQ@���A@��� /Q@����A@���Q@���АA@���`Q@��� A@���Q@���zA@���@Q@���qA@���nQ@���I_A@���!Q@���VA@����Q@���HA@��� Q@���GA@����Q@���bAA@���Q@���s2A@���Q@���`A.A@���Q@���`BA@����ʾQ@����#A@���@Q@���A@���@Q@���@@���@rQ@���@@���yQ@��� A@����zQ@��� @@���Q@���c@@���~Q@��� &@@���`Q@���`@@���Q@���`/@@���Q@���`@@���@Q@����}@@���@GQ@���@@@����VQ@��� =@@��� &Q@���ؑ@@���cxQ@���@@���rQ@���?@@���cQ@���|@@���_Q@���@@����`Q@���@o@@���@GYQ@��� c@@��� >]Q@���RW@@���tYQ@���;K@@��� fRQ@���``C@@���OQ@���8@@���`RQ@���@@��� fRQ@���@@����^UQ@���?@���AQ@���B?@���P5Q@���?@���.Q@���?@���@-Q@���d?@��� #Q@���C?@���lQ@���r?@���Q@���@?@���$Q@���?@���j"Q@���`?@��� /Q@���?@���� Q@���B?@����P@���Ţ?@���P@���`֣?@���;P@���?@���0P@����?@����^P@��� h?@���@P@���=i?@���@.P@���a?@���P@���`RW?@���nP@���6?@���@hP@��� 8?@����vP@���9=?@���8P@����#A?@��� NP@���@;L?@���\P@���`Q?@���P@���@K?@����FP@���`S6?@���ȫP@���@ ?@���@?P@��� O>@����P@���@4>@���� P@���D>@���jP@���@Ws>@���P@���9>@���@@P@����F>@��� P@���`R=@���lP@���=@���ZP@��� =@��� /BP@���=@���@,P@����=@���P@���=@���Z P@��� |=@����hP@���d=@���`)O@���@=@��� dO@���o=@���>O@��� g=@���@.N@����=@��� 7N@���@{=@���nN@���@=@���cN@���B>@���N@���>@���@N@���@!>@���`qN@���` ?@���`N@����>?@���`N@��� ~Q?@���@WN@���!b?@���IN@���Te?@���lN@���?@���gN@���@?@���`mN@���@ @@���`^N@���`J@@���|JN@��� ,@@���KN@���ޔ@@���mN@���@@���`mN@��� 7@@���`vN@��� @@���@isN@���@@���`SN@���@@@���BN@���@@���`@N@���@@���`FN@���@@���@BN@��� @@���AN@��� NA@���UN@����$(A@���tN@��� (A@��� rN@���C,A@���`N@���`=A@���]N@��� UEA@���nN@��� IA@���ZN@���hA@���N@���ϙA@����^N@��� A@��� җN@��� A@���N@���`A@���N@���A@��� N@����A@���@ӮN@����A@���N@���{A@���N@���A@���N@���A@���`qN@���A@��� O@���A@��� ,!O@���`A@���'O@����A@���:O@��� A@���OO@��� ̜A@��� &O@���A@���1O@���#A@���O@��� A@��� UO@���A@���IO@���SA@���`O@���@A@����O@���`qA@���:O@���`)A@����O@���B@���@P@����B@����P@���D B@��� P@���@pB@����P@��� rB@���P@���`B@����^P@���B@���$P@���-B@����-(P@���:B@���@`'P@��� PB@���@2P@��� &vB@���`1P@���CB@���3P@���`B@���DP@���IB@���aP@��� ҟB@���%hP@���@B@�����������@QH3@��� yC@��� 5@���TE@���\����������e3@���(E@���>x3@���23E@���Ţ3@���`ME@���`3@���TE@��� ~3@����QE@��� %3@���EE@���3@��� <E@���l4@���HE@����4@����{GE@���`)+4@���`@E@���@4@���)E@���`Z4@���)E@���4@���`E@���4@��� D@��� 4@����9D@����4@���@'D@��� &4@���D@���ev4@���`D@����4@����D@���@J~4@���D@��� 4@��� D@���4@����D@���4@���DD@���߻4@��� tD@���@`4@���`tD@���`4@���;sD@���4@����wwD@���4@���jrD@���@4@���mD@���4@���`EeD@���A4@���`bD@����5@���YD@���`5@���@`YD@����L 5@���VD@��� 5@����.OD@���@4@���r;D@���4@��� <D@���@4@���2D@��� O4@��� D@���J4@��� D@����|4@���j D@���@i4@��� D@���d4@��� C@���P4@���C@���\4@���(C@���i4@���`C@��� a4@���@C@���J4@���@@C@����pM4@����C@����B4@��� yC@��� &4@���YC@��� 3@����C@���4@���C@���3@���`D@����t3@���zD@���I3@���@p5D@��� Q3@���@-8D@���`<k3@���)D@���`x3@���`+D@���|3@���l8D@��� n3@���?D@���@t3@��� GD@��� Ue3@���aJD@���O3@���@QD@����i3@���nD@���`3@���`sD@���q3@���xD@���@m3@���moD@��� y3@���:tD@��� \3@���@?D@���@y3@���`A~D@��� o3@���bD@����|3@���@?D@���3@��� yD@���j3@���tD@��� c3@���߳D@��� o3@��� D@���ă3@���QD@���@43@���`qD@��� yu3@����D@���jr3@����D@���3@���D@����*3@���D@���3@���ZD@���3@���`D@���3@��� D@���`S^3@���D@���a3@���`D@���$e3@����@ E@����e3@���` E@���@QH3@���E@���e3@���(E@�����������V!����2@����'@���`B@����������������{@@���������)@@���h$���@3@@���?���~8@@���<+���A@@���@ ��� \@@����8���>x@@���@���T}@@������m@@�������٠@@�������@@��� ���I@@��� gE��� N@@���m��� @@���0u��� A@�������l0A@����s����>A@���@���LA@�������_A@���h���A@���`0���ÌA@���`���A@���@B�����5A@���DD���{A@��� v��� %A@������@-A@���xV���bA@��� ���`A@���@S���A@������2A@��� ���iA@���@l޿����MA@���޿����#A@���&տ����A@���@ѿ��� >A@���@Tv���A@���-?���@?A@���?���B@���k?����5B@����u?��� ,B@���_?��� 1B@���@ff?��� 9B@����?����@B@���@Q?����vHB@����rw@���PB@���@w@���PB@���G@���KB@����@���KB@��� M<@���VB@���@'@���@peB@���~1@���mgB@���`N @���@^B@����[ @���`B@��� $ @���`gB@��� S @���cB@���`4 @���`NcB@����!@���@XrB@����@���@XrB@���`(@���!rB@���h@���2cB@����L]@���`ZB@��� @���TB@���xV@���RB@��� @���@iB@��� M@���@-hB@��� =@��� ,qB@���@^ @���yB@���@#@��� x~B@��� D@���`B@���b @��� B@����_@���|B@����f@��� wB@���@���qB@���@���vB@���@��� ,B@����n@���@XB@���@���@B@����@���B@���@��� چB@���`ڀ@��� |B@����33@��� ~B@���` @����5qB@���`p=@���SnB@��� 4@���UlB@���@Uu @���@FzB@��� @���)sB@���B!@���xB@����;!@����rB@���@P!@��� oB@���L!@���jB@��� @���`0eB@��� @���aB@���} @���c`B@���@W @���@[B@���� @���@SB@���@xv @���`HB@����^ @���`CB@���a @���`>B@���I @���8B@��� @���VA@��� @���A@���@8 @���A@���t @���A@���`o @���ஶA@���ݝ @���@iA@��� @���@äA@��� @��� =A@���@ @���A@���@^ @���`A@���ԅ @���`tA@���ē @���Z`A@���@ t @��� YA@����~ @���RA@��� [@��� 4A@���@@���`AA@���@���2A@��� @���� A@���@w@���)@@���� @���@@���@���>@@���@����ɟ@@���[@���`@@���@ @���n@@���8. @���@@���� @���`j@@���ij @��� C@@���J"@��� @@���d"@���?@���e#@���`n<>@����"@���[>@���!"#@���=@���#@���n=@���@%#@���<@���#@���BE<@���`#@���\;@��� #@��� ;@���#@���;@���#@���;@���@Qx#@���R;@���X#@����:@���@q#@����:@���#@���d:@���F#@���aj:@���"@���[:@���`("@��� ;:@���@>"@����.:@����"@����@':@���` $@���eV9@���$@���8@����o$@���H8@����#$@���8@���@-$@���az8@���7n%@���48@���&'@����pM8@����'@���7@���Z'@����#q7@���$@���6@���!@���5@���e@���@%4@���?@���3r3@��� @���l%3@���@ҧ @����2@���@@���"3@���`: @���93@���- @���@_3@���@ @���@ 3@���`% @���?3@���G @���3@��� g@���3@���`_@��� 4@���`@���34@��� @����wG4@��� l@���`G4@�����@���`84@��� Ί?���;;4@���?���@'M4@��� ?���M4@����?���4q4@���ߛ?���>4@���`?����4@������?���@Q4@��� :?���4@���?���4@��� ?���4@��� 7?����5@���`Zc���`5@�������6@���^���`7@����9����9@������� x69@������@zD:@���V!��� G;@���V!���9;@���V!����<@���@ ���a<@���. ��� N<@��� ���=@���@}��� Vd=@�������@e=@������?=@���^M���@4=@���` ���3=@������B=@������=@���@���I=@���$`���=@��� ���b=@���z����/>@������~>@���&^���Z>@������@ >@�������>@���`���>@���_, ��� >@���Y ��� >@���� ���@ ?@���@ ��� H0?@���@B��� '?@��� ����.?@���@_���8?@��� n���@V?@����; ��� e?@����8���w?@���@��� x?@������?@��� ���d?@���@& ���:?@��� ����?@�������@@������ @@��� !���2@@���������@ @@���`h���{ @@���-����@@���-����^@@����8����_@@������{@@������X������?��� 7E@���@?����SE@�������������`?���<E@��� ?��� 7E@���@_,?���9E@���g$?��� >IE@���?���`oLE@����d?����SE@���@?���sJE@���`?���<E@������������Tv'@����2����8@���8����������������'(@��� ��� 1U(@���U���i(@���@ ���(@���,���W(@���h���L)@��� <���1T)@���/����ɏ)@���8���@)@���`>���@-)@������ .*@����D���=**@������)@���5���j)@���`���(@���^���`)@���{���` )@��������Z(@������Xk(@��� h��� \O(@�������N(@���@k���`)[(@��� b*���r(@���`#���` u(@���@d���5(@������ (@���].����w(@������@!"(@���2���:(@�������'(@��� ���`%[*@���`=p���ʮ*@������*@���aj���l�+@����k���@+@���W���@ͫ,@������].@���`|s��� i/@����8o���@J^0@���i���h0@����t���0@���� ���`0@����z���10@�������S0@���2���t0@���@Tv���@^0@��� ���0@������@0@���'���@!0@���U��� x1@���;���`1@���@[���\.1@���` ���%1@���@���61@���`Z���@I1@���`l���H1@����;���rk1@����id����o1@������1@��� ���@1@���' ���@W1@���@42 ���1@��� ���1@���@;, ���\1@���w ����1@���� ��� 2@���@S7 ���82@���@6 ��� 2@���@' ����"2@��� ���2@����s���2@�������2@���`���2@������@_3@������[3@���@n��� `3@���`cI���`x3@����BF��� ,3@���@ ���@3@���`h���43@���W���@3@���@T6���Ί3@����(���`3@������O4@������ U4@���@d���4@���@d���<4@���࢑���໊4@����#���a5@���!����5@���m ���5@���^M����5@���`\���@ۿ5@���`��� %5@��� ����5@��� ���:5@���@!���@5@���yu"���a5@����"���5@���5#���e6@���#���%6@����#��� P6@���$����C6@���`I�%����M6@���W%����$P6@����ш%����/6@����%���a*6@��� %%���`�?6@��� h%&���>6@���S&���@{6@���`B&��� 6@���z&���@6@���`&���=6@����/&���@6@����&���`Y6@���0&��� 7@��� /&���e7@���%���ǀ7@���``%���7@��� 9&���7@���`&���7@��� @%����8@��� &����S8@��� b&���7@���`'����7@���`ff(��� 8@���@A(���@^ 8@���`C(���<7@���V)���7@���@)��� V8@���t)���B8@���E*���T7@���*���6@����*���5@���"*���5@���ʁ*���@5@��� -���3�6@���+0���!6@���@:=0���#6@���~0���?6@���0����37@���z1���`y7@���@1��� x6@���I1����ql5@��� 2���a5@����2��� &>5@����71���4@���`f1���4@����2����d4@���@31���@4@���`C1��� O3@���1���k3@���1����3@���T1���u3@���`1���@2@���1���>2@���1���{2@���@p1���`Gh2@����c1���1@��� Vd1���@/@���@c1���@o,@��� c1���*k,@����c1���`#`,@���j1���`/+@���l1���+@���"1���n*@���@1���*@��� 0���)@���1���h)@���'=1����@(@���@@1��� N(@���41���n~(@����:1���`�?(@���%1���1'@���`)1���'@��� B1���'@���41����'@���0���G'@���@q0����}'@���`.0���`ݝ'@��� /����Tv'@���/���{'@���`/���@'@����/���`'@��� ȑ/��� (@����#/����#!(@���`l.���J(@����X.���`(@��� ,���j(@����\,���W(@���+���t(@����l+��� )@���:+��� )@���*��� G)@���`̭*���D)@���z*��� yu)@���o*���)@��� )���)@���@)���O)@����=)���jb*@����}2)���*@���5)��� *@���*)���@+@���t(���50+@���(����`+@��� E'���`+@���`&&���@+@����w&���3+@���%���r+@���@%���+@���`d%���`+@���` U%���9 +@���$��� +@���h$���*@���$���`*@���@#���@`*@����_#��� r*@���@s;#����GI*@���U"���@-)@���f&"���� *@���@!��� F*@����!��� H�*@����"���@ *@���;,"��� \o*@���Ȑ!���{*@����!���v*@���@c!���`f*@���{!���`5*@���N!���ࣰ*@��� ����i*@���� ���n*@��� ���n?*@���x���@)@���~���``)@������>)@������� )@��� S���`~(@���o���@!(@���6P��� %(@���8����Z(@��� |����)@������Q)@�������1*@���`S���`%[*@���`=p�����7��������f�����V�����f@���@BN��������� ������2���R���_���v�������������������������� �������@d@���@fP����d@��� zP���d@��� 7P���d@����P���d@���P���Ŏd@����P���d@���`P����d@���`P���5d@���%P���@d@���@fP���P���zP��� P����zP����דP���HwP����)P����uP���aP��� qP���P���2nP���P����fiP���@zP���`eP��� lP���dP��� hP���fP���@fP���hlP���0pP���nP��� wP���[rP���`}P���'wP��� نP���`ZzP���P���zP���`(M���`P���$&M���P����8M��� WP��� FM��� P����8M���mP���` M��� P����;M���5 P���8M���BP���c+M���FP���$&M���O���� M����VO���L����XO���`L���`IO���L���`I�P���L���@.P���LL���P���=L��� P��� <L���P���xL���@P���`|L���@P����HL���`P���` M���`[P���]M���P���`(M���`P��� DQ��� P���HQ���P��� SSQ���/P���UQ����P���<RQ���P����NQ���P���DQ����$P����7Q���`P���_-Q��� P����{$Q���@,P���0 Q���P���eQ���P���Q���P���P���P����P���eP���=P���P�����Q���िP����Q���@|P���3P���uP���P���P���@Q���P����dQ���P���@ Q���@P����Q���P���Q��� <P����Q��� P���tQ���qP���Q���@P��� b(Q���`P���@2Q����5P����=Q���P��� DQ��� P����RK���*N���TSK���\N��� XK��� N���BpK���uN���K���N���K���N���@kK���:N���K���WN���K���N����K���ʉN���`fK���ʉN��� VK���YN����RK���*N���@YF���@BN���@}F���@BN���`߿F���@BN��� 4F���iCN���@F���`HN���F���@0ON���`F��� RN���F���`WN���lF���[N���lF��� j^N���`ВF���[N���F���XN��� ªF���@VN���mF���`uUN���F��� VN���F���@0ON���F���KN���@2F����NN���@HF���ON���F��� MN���F���KN���RF���GN���@YF���@BN���P����.P���@ P���,P���� P���&P���vO���`-$P���`8O��� <!P��� O��� >P���O���@P��� O����P���ണO���P���`@O���@rP����߯O����_P���GO���-P��� >O���P����}O���P���`;O���#P���O����/'P���`O���%P���@xO���#P���mO����u%P��� gO����(P���O���-P���`UO���`.P���O���k1P���UO���L4P���`=P��� 4P����\P���`3P��� P���`0P���P����.P���xM���@O���q}M���`O���$vM���@O���@jM���O���]M���$O���LRM���@! O���`_EM����5O���`O=M���O���.M���`tO����xM���N��� L���N���`WL���`.N��� gL���`*O���L���` O����L���- O��� M���O���M���@;O���J,M���O���#6M����+O���@LM���@#O��� ZM���#O���@fM����O���xM���@O���` V���`1Q���@CV���*5Q���V���c9Q���@V���?Q����`V���@BQ��� V���`YBQ���V���+@Q���V���>;Q���V���`5Q���|V���1Q���V���0Q���` V���`1Q���TO����)#P���7TO���~P���=O���`_P���`FO���P���%FO��� P���,O��� P���� O���1P��� O��� P���` O���` P��� O��� P����QO���kP��� *O����jP���4.O���P���`>O��� P���`}JO���` P���TO����)#P����R���Q���R���Q���R���`rQ���@R���Q����R���Q����NR���`~Q��� jR���p|Q����R���vQ���S���`erQ���nS���nQ���R���`rlQ���`R���@lQ��� #R���MfQ���nR���`dQ���R���<fQ���R���kQ��� R���oQ��� XR����>qQ��� GR���uQ���`ZR����nyQ���&R���}Q���R���@=Q���@вR��� Q����R���Q���ڌN���_O����N���\O��� N���jWO���@sN���TO���mN��� *RO���`cN��� iLO���fVN��� JO���?N���JO����N����IO����I N���FO���y N���HO���sN����NO���M���XO���@i N����$aO���N���5dO���`.N���aO���e6N���^O���kGN���YO���\N���YO���`kN���[O���N����^O���ڌN���_O���9b����lR���`8b���5R���` Fb���@R���Sb���R��� ^b���`"R���"gb����R���@l_b���nR���Ub���R���@Gb��� >R���=b���@aR���9b����lR���G G���[lS����AG���lS���G���kS���!H���@5gS���6)H��� "aS����G���\S���`vG����=`S���G���eS��� F���jS���G G���[lS���`+,e@���3RR���0e@���QR���y3e@��� SR����+e@���VR���`+,e@���3RR���9Z���QR���b8Z���NR���,Z���MR��� Z���`OR���`Z���TR����= Z���`XR���H Z��� ]R��� Z���@^R��� M"Z���l\R���2Z���`XR����9Z����mTR���9Z���QR���ݥ>���@sDQ����?���#DQ���ݥ>����FQ��� 9��� JQ���ݥ>���}QQ���s?���NVQ���@r?���d_Q����9?���gQ��� <h?���tQ���]=?���|Q���x?���Q��� ~?���@yQ����'@��� Q����@���Q���@���`DQ���~ @���@Q���] @���Q���r@@���Q���:@���Q���R@���hQ���|@���`JQ��� @��� Q���w@���hQ��� C@����Q��� @���Q���@gf@���Q��� _@����FQ���o@����oQ���@@���(Q���@��� Q����7 @���:Q���`@���Q���L@���@~Q���`@��� }Q���`.@���K~Q��� ǡ@����}Q���`]{ @���v}Q���`!@���@~Q���`!@���Q���Gb"@��� Q���]z"@���ڀQ���34"@���e}Q���`"@���{Q���e#@���|Q���`$@���{Q���*$@���Q���%@���*~Q���`5%@����bQ���&@���`xQ���&@��� Q���@('@���ڀQ���m(@���-Q���`2)@���Q����ٹ)@���`$}Q���V)@��� yQ���@')@���`sQ���*@���7pQ���+@���gQ����:*@���/aQ���`+@��� t\Q���t,@���XQ���U$-@���VQ���o-@���@UQ���-@���#WQ����-@���UQ���@/.@����~[Q���ސ.@���`dgQ���.@���kQ���g.@���@sQ����</@���?tQ���@Y0@���pQ���^0@���qQ���ޏ1@��� 4rQ���@1@���tQ���]1@����wQ���7_2@���v}Q���K2@���0Q���%3@���Q���आ3@����}Q��� 4@���U}Q��� H4@���Q���5@���>Q���l5@���5Q��� 1S5@���%Q���4@���Q���5@���CQ���5@���CQ���@u6@���hQ���`E7@���Q��� 6T7@���>Q���T7@���PQ���?`8@���Q��� 8@���܎Q���Y8@����Q���;8@��� Q���`8@��� Q���`H9@���@'Q���`9@���EQ���`\9@��� BQ����J:@��� Q����G:@���8Q���@^%:@���@~Q���@m:@���@Q���;@���`rQ���ȁ;@���~Q��� ;@���`Z{Q���`;@���@xQ���`~<@���/tQ���<@���qQ���<@���oQ���@w=@���<fQ���ef=@���@i]Q��� =@���TQ���@C>@����2TQ���3^>@����kMQ���v>@���FQ���@->@���` HQ���8?@���@LQ��� ?@���@=KQ���p?@���LSQ����S@@���ZQ���:/@@����aaQ��� s@@����dQ���͇@@����_Q���@@��� SQ���/@@���`AQQ���@|@@���� KQ���f@@���@Q��� @@���`'/Q���@@���,Q���`b@@��� /Q���#A@���@9Q���EA@���AQ��� A@��� LQ���A@���9XQ��� A@���B\Q���A@����cQ���@J'B@���`iQ���@*GB@���mQ���NB@����nQ���hB@���lQ��� B@���ujQ���`B@����rQ��� B@����QQ��� RC@���Q���XDC@���CzQ����@PC@���sQ���TnC@���LnQ���˼C@���`OiQ���bC@���dQ���C@���@aQ���� C@���aQ���C@���XQ���`ͧC@��� SQ���C@���`3LQ���zC@���`qFQ���FC@���P>Q���C@���=Q���qC@���;Q���$D@����2Q���LD@���y/Q��� D@���` *Q��� D@����R#Q���D@���nQ����E@���Q���@ 0E@���Q���ME@���` Q���`JgE@���9Q����E@��� P���@>E@���`P���`"F@���P����gF@��� P���1F@���`PP���ÐF@���P��� F@����P���`F@���P���@G@���-P���OXG@���@P���>uG@���@P���@0G@���aP���ஂG@���@P���wG@��� P��� XG@��� P��� aG@���P���}G@���P���@HG@���`KP��� G@���`P���@ H@���`P��� 0H@���-P���`d H@���@P��� QXH@���`P���`^H@���P���zH@��� P���9_H@���P���NH@���P���/H@���P���H@���*P���a H@���P��� 5H@���P���`RH@���pP����I|H@���P���H@���P���`H@��� IP���gH@���P���`H@����*P����H@���@P���@"I@���P���=I@���P����I@���`P����p I@���`P���1I@���`P���@f1I@���@$P���`I@���P���`H@���/P���@I@���1P��� ;I@����ɗP���`fI@���̕P��� aI@���ఓP����I@���sP��� J@���P����EJ@���@P���6iJ@���nP���FJ@���`GP���J@���^P���K@���@P���SK@���P����K@��� ?P���`K@���`P���@K@����ÎP���`K@��� ٗP���@} L@��� P���O L@���@nP��� L@���@kP���7L@���P���fL@���@P���wL@����^P���wL@���@ P���L@���P���@'\L@���@&P���;L@����P���W9L@���@P���HL@��� P���{OL@���@_P���gL@���P��� L@��� ZP���EL@���P���`xL@��� &P���L@���`P���L@����dP���`+M@��� IP���M@���uP���@)M@���`RP��� GM@���XP���zoM@���P��� \M@���`P��� 69M@����P����TM@���P��� uM@���`KP����JM@��� P���M@����P���rM@���KP���౸M@���~P���`M@���P��� M@���P���b N@��� P���`MmN@��� P���N@����WP���|N@���`cP��� N@���P����WN@���@@P��� N@���{P��� N@���P���N@���P���/(O@���VP���JO@���� P���tO@���P���@O@���DP���@<O@���@P���@uP@���@P���%9P@��� ZP���TP@���P���@vfP@���AP���MP@���@P���P@���@P��� P@���`P����2#Q@���P���@JQ@���P���gQ@���P���kQ@���`Q���eQ@���`Q����:Q@���@\Q���DQ@��� Q���#Q@���s&Q���Q@���`*Q���Q@����-Q����:Q@���,Q��� nR@���!Q��� R@���PQ���@TR@���ZQ���@OR@���$!Q���Z_R@���`,%Q���`s[R@���`:*Q���BSR@���7Q���]R@���S9Q���PxR@���@0Q����0R@���[=Q���3R@��� AQ���`qR@���$OQ���@mR@��� &ZQ���@UR@����cQ���|R@���`jhQ���sR@���qQ���(R@���rQ���R@���`<nQ���kR@���cQ���@R@���`RQ��� R@����TQ���`iR@���_Q���R@���cQ���R@���cQ���S@��� _Q���"S@��� ^Q���HS@���`RQ���eS@����ZMQ��� p{S@���@BAQ���nS@���0Q���xS@���'Q���@S@���Q���ǯS@���RQ��� 4S@��� Q���S@���R�Q���`T@���@P���`ET@���P��� RT@���`nP���@_T@���`PP���ZT@���CP���rT@���P��� T@��� $P���T@���vP���T@��� P���`CtT@���@ϫP���_VT@���ҖP���`{UT@���cP���goT@���@LuP���GT@��� rP���@oT@���`P���`T@���ڇP����T@���CP���T@���oP���KT@���ਢP���T@���>P���U@��� P����\-U@���@P���:U@��� P���RU@���qP���onU@��� 5P���U@���`NP���U@���@XP���U@���P���@U@����P����V@���P��� V@���P����:V@���@+P���bV@����P����(V@���`GP���V@����P���oV@��� P���W@���ۥP���)W@����PP���@BW@���`P���hW@���ͨP���@ۂW@���@P����IW@����P���W@���@|P���ǿW@���@ęP���W@���@P���;W@���ےP���@W@��� $P���`W@���eP���;W@���JP����#X@���@KP���@HTX@���[P���gX@���mmP���X@����lrP���#X@���uP����8X@���xP���`sX@���zP����X@���@rP��� Y@��� RkP���Y@���rcP���1Y@��� I\P���`BY@���`[P��� �QY@���`P���`dY@��� gP���/~Y@���`nP���Y@����IoP���`\Y@����kP���Y@���`P���@Y@��� TP���׷Y@���@KP���CY@���HP���`Y@���`PP���Y@��� 1XP���Z@���WP���@!Z@���@t[P���`o3Z@���fP���`@Z@��� WtP��� SZ@���@P�����@Z@��� P���@hZ@���@uyP��� Z@���@vP���KZ@���xP���gZ@���}P���wZ@���P����06Z@���P���;XZ@��� P���[uZ@���P���Z@���� P���Z@��� P���KZ@���+P��� Z@���P���g[@����cP���/[@���@{P����[@���P����-[@���P���+C[@���@P���I[@����P���Q[@���P���Si[@���uP���`z[@���קP��� [[@����P���`[@���P���?[@���P���'[@���(P���[@���P��� S[@���@P���[@���P���[@���P���?[@��� )zP���\@����wP���\@���tP���w7\@���opP���`kP\@���SnP����(e\@���yP��� x\@���CP����\@����P���\@���P���ן\@����hP���{\@���`P���Ӷ\@����P����\@����P���\@���@P����\@���@ęP���@\@���P���@]@����fP���`/+]@���ۥP���K-]@���`P���<]@����P���U]@���P���_n]@���@qP���@Ć]@���/P���/]@��� .P���`]@��� P���@C]@���/P���^@���@P����^@���P���"<^@����P���@KS^@���P���j^@���P���`B^@���P���o5^@��� P���`7^@����asP���L^@���WlP���� X^@���`mP���b^@���~P���'u^@����ÎP����<^@���P���˚^@��� P����^@���@P���@#^@���P����^@���P���@^@���@̰P���^@����aP���^@��� P���K^@����tP���@;^@��� P����<^@���@ʢP���@^@���qP���@h^@���@]P����d^@���P���^@���{P���c_@��� P���7_@���ಎP���@Y_@���@BP���@3w_@����P��� ߋ_@���YP����_@���ʚP���_@���VP���@_@����]P���@_@���P���`k_@���өP��� _@���`lP��� _@���िP���{`@����iP���`@���P���$`@����P����l.`@���P���s2`@��� nP����V1`@���ۥP��� H7`@���P���!7`@���`P���S:`@���P���<`@���~P���oH`@���`/{P���M`@���`UP���!^`@��� P���i`@���P���|`@���@P���`@���yP���ɐ`@���@P���7`@���P����L`@����P���`@���YP���`@���cP���`@���muP���`@���jP���`@����\P���]`@���RP���O`@��� EP���`@���DP���'`@��� %NP���`@���o]P���`@���oP����`@���`}P���}`@���P���u`@����IP���`@���@/P���{`@����P��� `@���YP��� <a@���P���a@���9P���m&a@���IP���3a@���P���Za@���P���]a@���uP��� Vma@���P���}a@��� FP���a@��� TP���˫a@���EP���a@���@ݰP���źa@��� SP���a@����P��� .a@���P���a@���ZP���a@���`P��� a@���P���a@���@9P���ob@���P���b@���`P���Ob@���LP���1b@���=P���:b@��� $P���M0b@���`PP���$b@���`:P���)b@����KP����*2b@����_P���?b@���@P���Ib@���`P���!Nb@��� P���Sb@���tP���`b@���lP���ob@����Q��� ڀb@���Q���#b@���:Q���b@���bQ���wb@���ZQ���{b@���Q���െb@����Q���Wb@���Q���˛b@���`DQ����b@���Q���b@���Q���!b@���`uQ���b@��� !Q���b@���` Q���Kb@���Q���˷b@���Q���b@���Q��� ܻb@���2Q���?b@���Q���b@���Q��� b@���@Q���b@���MQ���c@���Q���[c@��� Q���,c@���PQ���Fc@���"Q���Oc@��� >(Q����Mc@����)Q��� >Lc@����.Q���Lc@���`M8Q���Vc@���@8BQ���]]c@���<Q���lc@���`?Q���oc@����vDQ���ෝc@���@yJQ���c@���@BQ���{c@���:Q���=c@��� CQ���]c@���@#LQ���c@��� LQ���c@��� VOQ���c@���`RQ���Gc@���TQ���ac@���@\Q���Mc@���_iQ���!d@���tQ���d@����|Q���U d@����QQ���yd@���:Q����d@���`Q��� d@���Q��� &d@���`nQ���/d@���Q���;d@���FQ���Cd@���@ZQ��� Hd@��� *Q���Ud@���Q���[d@��� Q���_d@���@Q���'sd@���Q���d@���`Q���-d@���6Q���d@��� Q���d@��� Q���d@����XQ���d@���@3Q����d@���@Q����d@��� Q��� td@���6Q���d@��� {Q���d@����LQ���d@���@½Q���qd@���Q���5e@���Q���e@���AQ��� e@���Q���)e@��� Q����3e@��� Q��� 8e@���Q����x<e@���Q���9e@���Q���?e@���`pQ���Fe@���Q����hLe@���Q���Oe@��� Q���Ie@���` �R���Y?e@����=R���5e@���$R���%=e@���R���=e@����R���y;e@���G(R���A2e@���v5R���*e@���>R���"e@���FR���e@���MR���w e@���TR���� e@���@ZR����d@����s]R���d@���IlR���d@��� yR��� d@���@R���id@���@R���d@��� R���ࣞd@���R���d@����R���Wd@���=R���d@���@סR���d@���R���d@���R���фd@���@/R���{d@���R���md@����R���Wpd@���R���|d@���R��� ԋd@���R��� d@��� \R���nd@���R���SVd@���R���Vd@����R���W\d@���@WR���Nd@���R���)Rd@���R���[d@���S���nd@���`S��� ,ed@��� S����Td@��� *S���KYd@��� ~S���}Ud@���"S����Td@���+S���Xd@��� 6S���{Nd@���9S���Id@���;S����Pd@����d>S���cd@���~ES���#ad@���7OS���ohd@����TS���/od@����p[S���snd@���ddS���}d@���kS���d@���@qS���Kd@��� zS���๠d@���_vS���7d@���ovS���d@���tS���Cd@���@;pS����d@���`mS���=d@���fS��� d@���\S���d@���@?SS���d@���`KS����d@���(GS���gd@���`GS���d@���@KS���ad@����LMS���d@���MPS��� d@���KUS���e@��� YS���e@���(ZS���%e@��� U\S���2e@���`dS��� L=e@���`_S��� p@e@��� ^S����DUe@���aS���ge@��� iS����e@���.nS���?e@���@qS���e@��� ttS���f@���zS���9.f@���`S��� Pf@���`S���1~f@����S���f@���NS�����f@�����V�����f�����V�����f���MS���[_f���]S��� 5f���@ΞS��� 7 f���KS���e���%S���`ve���S���ֻe���@S���@e���{S���ze����S���Oe��� S����.e���S���O e���RS��� d���ɠS���d���S����ןd���@"S���~d���@S���`d���ํS��� 3od���@؊S���`Md����S���`33d���@)S��� d���R|S��� c���wS����Rc��� rS���`=c���gS���c���@]S���c���=PS���� c��� JS���`;c��� IS���`fc���@FS���@^c���`]ES���SKc��� OHS���S;c��� HS���)c��� OS��� c���NS���b����2NS���6b����DS���@b���6S����Pb����[/S���b���+S���`Ab���`%S���rb���uS���`b����ES��� bb���`S���]fb���S���@f:b���` S���`Bb���S���jTb���~R��� `!b���`R���@a����0R���@a���@R���a���R���A0a���R���`!`��� uR���`z`���`R���r`��� JR���`���>R����`���R���@`���~R����-n`���R���`T`���ΊR���"7`���ΊR���. `���7R���`G_���`axR���|_���`kR��� `_���UR����_���@\R���^���eR��� ^��� lR���pM^���@qR��� ^����+wR���^���wR��� ^���xR���]���@zR���x]���@.}R���]���`R���॓]���R���e]���"R���K]����R���:']���@R���\���`R���S\��� R���*\���R��� x\���@~R���`~\���R����\���OR��� !p\����R��� \\���:R��� L\���R���'\���`R���`\���R���Y[���`ÓR���E[���ڌR���[���R���٦[���R���`ʁ[���`gR���k[���ଚR��� k[���R��� 9L[���R���[���@;R��� VZ���`R��� Z����R���`Z���@R����mZ���ǤR���Z���@R��� VZ���@pR��� Z���@R����fZ���`R���2Z���@R���9Z���@)R���@OZ���R���^Z��� R���$NZ���?R���s;Z���ıR���@r(Z���@R���OY����5R���Y���R���`Y���@#R���Q`Y���`iR��� tKY���R���@fVY���`^R���hY���R���xY���`ʧR���~rY���R���B{Y���`R����Y����R���B{Y���ֆR���gY���|R����Y���sR��� IY���nR���Y����amR����cY��� VnR����GIY��� nR���8Y���jR���5>Y���`cR����RY���]R����eY���`f[R��� Y���`]R���`Y���`^R���CY���`^R���Y��� YR��� Y���VR���`Y���PR���@Y��� LR���Y���GR���`+Y���BR����Y���/?R���@KY���X;R���@WY���R:R���`CY���@6R���@Y���@$5R���@Y���`.R���߿Y���`(R���`OY���@$"R���`Y���@R���/Y���/R���`Y���@R���Y���ZR���ʑY��� R���Y���@ R����^rY���$R���MY���1R��� -Y���R���tY��� Q���[X���`�R���Y���R����GX���$R���X��� R���X��� R��� X���R��� X���DR���?X����" R���`X���eR���X���RR���X���@gR���@dX��� R���@lX���R����X���R��� X���K�R���`X���`VQ���N}X���R���`1X���` R���2sX���@Y R����dX���R����NbX����R���`WX���R���TX���r R���EX����" R��� =X���`SR���3X��� R���"X���Q��� �(X���`R���`%X���@.R���`X���L R���W���m R���&W���@R���@ X��� R��� X���`R���W���ZR��� W���R����}X����I R���W���&R���@W���,R���SW����m.R����W����+R���`W���`Z+R���W��� )+R���W���,R����W����+R���`W���X(R���"kW��� +R��� QW���`-R���@8W��� -R���W���E-R����V����4*R����V����a$R���`V��� R��� TV���@R��� }V���R����[V���mR���I4V����3R���@ V���R��� U����!R��� U��� R���@U���&R���U���0R���sU���k6R���RU���@6R���U���v5R���AT��� 6R��� T���~9R���`T����D=R���nT���@R���OT���{>R���T����BR��� ^T���yCR���S���@?R���@S���CR���"S���NR���OS���@pZR���}S��� \R���@lS���`SR���@S���IR���`7S���`@R���?S��� 6R���S���4R����pS���@2R���@bS���`}.R���}S���'R��� ŀS���#R���SkS���!R���rHS���!R���\7S���@#R���33S����"R���(S���J#R��� (S���`(R���US��� *R��� S����)R��� 5S���*R��� ' S����)3R���`5R���@R���"R���KAR���`R���@2:R���R���8R����R���P7R���AR��� 9R����qR��� <R���{R���<R��� /mR��� cBR���uR���@+IR���pR���NOR���]R���@NR����LR���@0RR���9R���6^R���`,*R���@�]R���`0R��� TR���`R���SR���Q����~TR��� 3Q���`xKR���R��� CR���(R���@?R���#R���c:R���` R���5R���`rR��� T*R���`R���{#R���G!R����R���"R���`R���BR���R���`R���R��� .R���`@ R���KGR����R���OR���@0 R���`KgR��� R���@yR���@;R����R���tR����3R���Q���R���@Q���@R���Q���`R���Q���`zR��� Q���@ʹR��� Q����mR���`Q����qR��� Q���R����Q��� =jR���Q���jTR���@Q����PR���Q���@kR���`9Q��� uR���Q���|R���wQ��� GR���1Q���GR����iQ���@ R���ٶQ��� R���@Q����R���(Q���ʩR���GQ���`IR���ެQ���ԘR���ެQ����`R���`lQ���4R���@qQ����R���`Q��� R���ऊQ���@ R���Q���`0R���`Q���໤R���:~Q����R���`RwQ���@fR���uQ���R��� tQ���uR����>qQ���_R���� qQ���@"SR���pQ����c@R���pQ����,R��� nQ���(R��� kQ���)R���gQ���`t3R���dQ���2R���cQ���)R���^Q���`"R���ZQ���@R���@6ZQ��� NR���1\Q����Q���aQ���MQ���`bQ����Q���@`Q���`jQ���`VQ���@Q���OQ���` R���LQ���@Q���LHQ���Q����BQ���$Q���a>Q����uQ��� :Q��� Q���29Q����Q��� 9Q��� Q���f<Q���7Q���@AQ���`Q��� iFQ���Q���HQ����)Q��� �QQ��� {Q���iUQ���$nQ���UQ��� cQ���uWQ���scQ���@`Q���`Q���@KcQ����XQ���`fQ����VQ���sQ���MQ���~Q���@Q����ЁQ���@5Q���*~Q���@+Q����wQ���!Q����coQ��� )Q���,fQ���/Q���[Q���AQ���`���Q���`SQ���Q���(MQ��� z Q���JQ���@P���nKQ���KP���@EQ��� P���` =Q���P���S9Q���@P���3Q��� P���'Q���@P���@l"Q���2P���@Q���`P��� Q���`P���sQ���4P���]Q���P��� Q���@�P����Q���=P���Q��� qP���@&P���P���&P���AP���@P���AP���vP��� qP��� ZP���6P���P��� fP���P���`P��� P���`P���@P��� wP���@(P����ýP��� UP���`cP���@P���`P���P���P���P���2P���`KP��� P���`P����TP���P���P���KP��� P���@P���P���P���@P���P���P���P��� P���P���P��� P��� P��� P��� qP���P���ȶP���PP���P���P���ƫP����$P���`P����P���`jP���P���໔P���P���@P���P���`P���MP����>P���<P���@dP���P��� xYP���P���@jdP���QP��� pP���P���@fnP���P���eP���P���]P���`P��� #[P���P���`tSP���`SP���vNP���P��� pEP��� P���`EP����IP���DP����P����<P���@s~P���`$6P���`P���'P���P����XP���@P��� P���@s~P���&P���xP���D&P���2vP���P���tP��� CP���0sP��� "P���lP���UP���rkP���hP���`GlP����{P���mP���P����qhP���P���JgP���3O���gP���O���fP���`qO���!cP���`O���@_P���P���rXP��� P��� >RP���tP����JP���� O���`GP���$O���`FP����O��� JP���sO���GP���3O���CP���`GO����jAP��� dO���8P���@S3O���8P���CO���5P��� <O����,P��� -O���'P���`O-O���c-P����4O���8.P���`O��� =,P����N���@(P���_N��� %P��� N���`s"P��� N���`P��� ݤN���mP���/N���P���yN���f P���WiN���1P��� r8N���eO���N���O���EM���O��� M��� =O���@M���`O���M���O���` M���O��� >M���@5O���`jlM���O���4M����;O���M����O���`?L����4O���L����կO���pL���@O���L��� O���ʁL���@O���wL���ۻO���@2L���@O����7L���@O���jL��� XO���@L����O���`L���&O���L���]O���5L��� mO���L����O���mL����O���M���sO����'1M���O���9DM��� O��� WM���P���� gM��� P���`tM���8P���kM���`%P���`ztM���Y.P���j|M���`<P���@M���@HP��� ĠM���RP��� )M���[P���ཿM���mbP���0M��� iP����M��� zP���N���P���8N���YP���@PN���BP���\N���@P���a`N���P���[N���@P����[N���*P���^N���P��� }jN����P���gN��� UP���oN���`. Q��� dN��� 9Q���@OMN���`3Q���@HN��� h?Q���0N���1IQ���!N���@VQ���2N���@bQ����/MN���9sQ���gN��� pQ��� ;oN����pQ���XN���͡Q���)LN���`ªQ����HLN����iQ���5N���,Q���+N���`Q���@&N���Q���GN���Q���>EN���Q���N��� Q���@N���Q���B@N�����R���vN���@;R���M����aR���@N���@AR����:N���@u*R���N���@6R���M��� ?R���QM���`SR���M���@iVR���zN���@>WR���EN��� [R���h\N����eR���@mN���@rR���@mN���|R����JN���@IR���`N���R���`-}N��� R����VN���@.R����XIN���@R����N���R���ݿN��� UR���&N���`+R���`N���AR���KN����R���`HM��� R���aM���@R���� M���R��� ,L���HR���L����s S���K��� S��� +wK���DS���`K��� (S���lJ��� r0S���@~J���@4S���.J���Z7S��� I��� @S���hI���BS���I���FS����> I��� mMS���.I���7OS���`kI���`QS��� fI���>[S����y)I���@hS��� dH���mS���H���jS���`G���@3lS����{G���.nS���_G��� [xS���@F����S���@ZtF���`ʅS���l7F���S���E��� ‰S���9tE���`{S����g6E���FrS���@D���iS���ffD���@rS���@WC���@}S���WC��� {S���'B���}S���@1B���`|S���A���@QyS����A���uS��� D{A���dS���j@����XS���k@���{JS����?���`]ES���.?���`FS���`6?���X<S���@H?���`8S����B>���3S���l<>���+S���=���`)$S���`G=����[S���<���S��� l<����S��� A;��� c S���s;��� S���A ;���S��� y:����OR���`:���R���|:���`R���� :���`<R���W:����#R���j:���R���/r9���R��� n9���R����8����^R���8���R��� m8���}R���  8��� ƴR���`7���R���@ף7���MR���7���`R���`T6����dR��� "p6���R���VN6���R���5��� &R���ڎ5����ՋR���@;5���R��� 5���R���Z4���� xR����o4����nR���p=4��� dR���4����\R����3���@0RR���3���HR���s3��� RBR���`/=3���=R���2��� g8R����|2��� 5R���2���.R���ૼ2���&R��� =2���`]&R���1���)R���1��� *R����1��� F%R����?0���"R���ȋ0���' R���@k0���`GR��� B0���R���`/����kR���/���m R���A.��� R���.-���R��� 0H,���`VQ��� V+���Q��� +���@R���`]*���R���`)���R���-)���Q���@*���ZQ���)���VQ���U)��� OQ���` )����XQ���(���Q���1(��� Q���H(���@/Q��� ´'���xQ���''����NQ��� &���Q���&��� Q���@W%����!Q���`$���@½Q��� RM$���Q���#���Q���M#���dQ���#���Q���`"���5Q��� P "���Q���@h!���¢Q���@ ���Q���` ���4Q����@`��� Q���`�V���Q���z���NQ���t���`(Q���@(���Q���`���!Q���l���NQ����l���Q���J���Q������@Q��� v���+Q���?4���@Q���A���#Q��� ���Q���xh ��� Q����� ���@3Q���j���@HQ����t��� RQ�������Q������ ԇQ���`&��� Q���`$���~Q���A���@}Q������2zQ���d����+vQ���a3���mQ������@jQ���@C1����hQ���ࢶ���gQ������`]Q���@����UQ���@���@vOQ���`!��� GQ���`Qb����[EQ���`���EGQ���ڿ���NCQ��� Կ���yBQ��� ˿���EQ��� ¿���FQ���ݥ>���@sDQ����� ������N����]0@���LN���1@���@������������@N���d1@��� N����=1@���oN���<1@���@>N���1@���N���@P1@���uN���1@���3N���q1@���{N���`1@��� N���1@��� N���1@��� N���`1@��� N���࣐1@��� N���`[1@���LN���1@���@N���{1@��� N���Z1@��� 8N��� 1@��� N����Ô1@���eN���z1@����4N���1@���N��� ?1@���N���1@���qN����21@���N���`21@���zN���@1@���`2N����F1@���zN���`f1@���`N��� 1@���N���Q1@���N���@1@���N����)1@���`N����1@���`N���41@���N��� ˠ1@���`N���31@���`N����ף1@���N����F1@���`N���1@����N���*1@��� LN���Q1@���@N���q1@���N���1@��� 8N���`1@���@N���1@��� N��� 1@����N���[1@���`N���@ı1@��� N���ײ1@���N���21@���N���@{1@���`N���Z1@���N����41@���`N���1@���\N���41@����N���;1@���N���@<1@���8N����)1@��� N���P1@����qN���)1@����)N���` 1@���N���1@���N��� ¦1@���jN���z1@���@{N����ף1@���N���� 1@���N���[1@���@N���ߞ1@���N����]1@���@{N���`]1@���@N����)1@��� QN���(1@���`N���1@���@N�����1@���N���1@���kN���F1@���QN���`1@���GN���1@���`[N��� 1@���kN���@r1@���@N���ପ1@���`N���@ͫ1@��� uN���1@��� N����]1@����N���;1@���N��� 1@���N���˯1@���BN���|1@���N��� |1@���N����1@���@N��� 1@���`N���வ1@���`N���1@���LN���1@���N���` 1@���<N���1@���jN����1@��� N���θ1@���3N���1@���@N���1@���kN���@1@���-N���`1@��� N����׳1@����N����1@���N���@G1@���{N���� 1@���`kN���@1@���N���[1@���N���˯1@���-N���1@���`N���෯1@��� \N���1@��� 8N���1@���N���@31@���`BN���`ó1@���@N���1@����N���Z1@����MN���{1@���N��� |1@��� N���|1@���`)N���1@���@N���1@���=N����1@���`N����q1@���`N���1@���#N���@1@���N���1@����$N��� 1@���`N��� 1@���$N���11@��� N����21@����zN���� 1@���RN���`ã1@���@N���{1@���`N���` 1@���`N�����1@���@N���`1@���pN���`I1@���`VN���@͛1@����]N���=1@���pN����1@���zN���@ 1@���@N���z1@���N���1@���N���@G1@���N���1@���N���41@���N��� 1@���N���@1@���`N���1@���@N���d1@����zN����]0@���@.N����0@�����N����0@���N����0@���`N���`�0@���3N���0@���aN���@�1@���N��� 1@���`N���1@���@N���F1@���N���1@����N���1@���N����1@��� N���[�1@���N����1@���`N��� �1@���@>N��� H�1@��� N���0@���uN���40@���@#N���40@���N���0@��� N���@�1@���N����o1@���N��� 1@���N���`1@���`N��� 1@��� N���Z1@����fN���`1@����$N���S1@���N���� 1@���N��� 1@���aN���11@���N���@y1@���`[N���� 1@���` N���] 1@���N��� 1@���N���1@���N���1@���`[N��� 1@���`N���1@����N���Z1@���N����1@����$N���`1@����fN��� 1@���N���� 1@���$N����1@���@N���1@���[N����f1@���` N���1@���N���1@���N���1@���N���1@���N����1@���-N���@1@����N���@1@���QN��� 1@��� N���1@��� 8N��� 1@���`fN���@<1@���N���1@���N���`1@���@N��� 1@���@{N��� 1@���@{N���1@���2N���o1@���N���1@���LN��� 1@���`VN����h"1@���� N���`#1@��� N���@$1@����)N���@%1@���N���&1@���@WN���'1@���`N���` )1@���@N���`)1@���N���*1@����N���@*1@���@>N���)*1@��� \N���`)1@���@N���� *1@���N����)1@���N���=)1@���`N���`(1@���N���'1@���`N���&1@���@WN���f%1@����N���@g$1@��� N��� #1@���@N��� !1@���@WN��� 1@���`)N���o1@��� N���@p1@���@GN����1@���@N���1@��� N���1@���N��� 1@���N���'1@���N���| 1@����$N���G!1@���`N��� !1@����BN���#1@���N���"1@���`fN���@!1@���@N��� 1@���N���`1@����N��� 1@���@N���`o 1@���qN��� 1@���`N��� 1@��� QN���1@��� QN���H1@���N����1@��� N���@<1@��� CN���1@���N��� 1@���N���<1@���zN���1@���N��� 1@���N��� 1@���@gN��� 1@��� N���1@���@{N���11@��� N���y1@���`N���1@���-N���1@���N���`1@���7N���Q1@���`N���`1@���`�N���*1@��� LN��� 1@���`N���1@���N���1@���N��� 1@��� LN���Z1@���N���g1@���`N���@{1@���N���1@����N���31@���N���`[1@���@>N���@1@���oN���`o1@��� N���1@���`N���1@���N���1@����]N���( 1@���LN��� 1@���pN���d 1@���N���� 1@���N���� 1@���$N���`1@��� \N���@ 1@���N��� ?1@��� N����1@���uN��� ?1@���@GN���1@����N���@ 1@���`N���`1@���`N���Q1@���`2N���`1@���`N����1@���RN���y1@��� N���R1@���`N��� S1@����]N���21@���`2N���1@���N����o1@���(N���0@���BN���@p0@���N���@0@����zN����]0@�����������@:eR���˅K���`<J���@5���q������/���D������(Q���@K���?(Q���J���@'Q���`J���'Q��� bRJ���g'Q���@RJ���Q���\wJ����bQ���`1J���WQ��� 8J����BQ���#J���Q���@AJ���"Q���-J���Q$Q���@KJ���"Q���^J���@Q���pJ���@ Q���J����bQ��� JJ���@:Q��� J����9P���@J���@P��� +J���@P����J���`[P��� K����P���%K���hP���t:K���lP����VK����OP��� QK���@IP���@RK���@mTP��� ssK���VP����vK���@+^P��� qK���`\_P���wK���@kP���_|K���nP���sK���#}P����rK���@mP���yK���P���`T~K����ΗP���~K���P���˅K���NP���`K����P���htK����Q��� nK���`tQ���`eK���@Q���`kK��� Q���`mK���(Q���`dK���@(Q���`MTK����(Q���FK���(Q���@K���+P���@sK���,P���lK���@;0P��� kK����J/P���@fK����+P��� cK���K&P���`TfK���@ P���`cK����{$P��� \K���hP���dK����JP���ZK���QP���p]K���O����\K���O��� cK���O���@hK���`TO���gK���O���bK���?P���kK���@2P���cK���5%P��� 8oK���@ 'P���@3sK���+P���@sK���P���L6����P���� 5���ӎP���@5���P���5����P���5����J{P���5����(qP���+6���@TfP���6���@E?P���@A6����B.P���o.6���*P���+6���#P���@]>6���"P���F6����;$P����\6���P���6��� :P���١6���@"P��� 6����P���6���@P���F6����Z P���n6���iP���`W6���@vO����7�6���gO���`5���` eO���n6���QO���<6���OO����?6����dPO����M6��� !O����ք6���`fO���#6���b!O����6���@�O����66���N����6��� \N���,I7���ÜN���&7���N��� 7���N���@]7����RN���`C7���`(N��� 18���N��� 8��� N���}8��� M���]?8���M���PI8����M���e8���`ѐM���P8����ZqM���8���WM���@8���:M���=8���@E+M��� \8��� CM����78���L����9��� nL���x9���`<L���{T9���L���`9���`eL���n9���@L����9���`$L��� 9���`�L���w9���`NL����9���@LL���`9���M��� 8:���g M����=:��� M���E:���M���`W:���M���@m:��� M���~:���`M��� b:���M���ј:���M���`:��� M���T:���M���`:���+M��� [:����(M���:���@<M���:���>AM���;���EM��� ;���`$HM���`;���`lQM���!#;���VTM���o.;���#MM���`OK;���`lM��� 1E;���&L���&N;����ųL���`l;���L���'};��� \wL���Ml;���oL���k;���`dL���` ~;��� wbL����;���\L���@;���/VL���v;���JL����r;���AL���v;���9L���;���42L���� ;���8.L��� ;���"L���v;����*#L���ge;���L���@O;���pL����M;���K���yU;���`K���:o;��� CK����X;��� tK���LM;��� K���`*;��� ٹK���`e;����K���@;���K���`:���`$K���:���ۗK���x:���`$K���:��� K���:���yK���`C:���wK����7:����qK���:���fK���Ѩ:��� QK���E3:��� TK��� +9���MK���`9��� tRK���-9���JK���9���`MLK���*9���6K��� \9���0K����ד9���#K����9���K���`9����K���ؒ9���K���9��� D K���9��� K����69���X K���,9���K���9���J���@9���`J����9��� J���@9���J����9���J���`9����J���!3:���`<J���WC:���`<J���M\:���` J���@:���`J���V:���`J���:����lJ����:��� aJ���+;��� [J���@;��� K����H;���K����J;���yK�����@;���K����X;���#K���`l;���`e'K���n;��� D,K���`Bf;���U-K��� 2t;���@":K���ui;���Y9K���w;���DK���`};���4JK���`r;���@d`K���;���.gK���`;���tK���;���K���@;����ZK��� ;���`}K��� b;��� ƂK���y;���ໃK���;���K���;���`$K���`;���K���`;���K���>;����dK���V<���K���Q8<���K���`?<���K���pM<����K���@dX<���K����h<���K���`<[<���K���`<[<���`<K��� ~a<��� bK���@v<���aL���<���L����S<���` %L��� <����d(L���@<���3L���`f<���5L���o=���,IL���@=���@"RL���@42=��� [XL���U=���@LL���ij=���&L���D=��� L����=����L���=���L����=���ML���)>��� L��� .>���L���0>���`$L���,I>��� L���m>���L���#>���L���`>���L���@>��� L���>���`$L���@>���`L���%>���L���@ ?����L���f?���� M���`t?��� M���{?���`TL���@q?��� UL���@;?���M���P?���M���?���`M���?���M����?���M���`@��� M���,!@���` M���)@���aM���`:@����M���T@���bM���s@���M��� @��� sM���@)@���@3M����Y@���7M���@���5M���o@��� =M���@���DDM���@���@:EM���@���:M���@@����:M���`@���`~1M���A���Q0M���`A���8M���`"A���,AM���@"A���@dHM���@%A���`=M���`-A���`*CM���8A��� [8M���`SGA��� t*M���SA��� L��� qA���`L���A��� L���^A���4L���@A���L���A���bL���@A���GL���`A��� \L��� B��� ͌L���`$B���wL���`r,B���`xL���,1B����lL���+B���FbL���z,B���FbL���`&B���8^L���)B���`XL���@A7B���@LUL���d`B���VL��� 9vB���cL���@3B���`L���B���`fL���B��� L��� B����L���h C���L���nC����L���-C���?M���_DC���ˍM���YC���@dM���iC���7N��� vC��� N����C���@N��� 9~C���UO����wC���@LO���gC���.O���LeC����2O���@ciC���+O���=rC���N+O���`yC��� +"O���{C����)O���`C���@,O���C���`'O��� ߜC���4 O���>C���`O���@dC���@O���hC���@ O���VC���O���wC���$O��� C���"O���`C���@O���C��� [O���@C���,!O���`rC��� .O���`D���E+O��� D���/O���D���7O���D����>O���'D���g5O���E;D��� t*O���?D���`l)O���`CD���G!O���`GD���O���ND��� #O���QD���@,O���`MD���`)O���VD���xO���QD���`O���`~QD���(O��� nD����.O����qD���`tO����D���༲O���D���6O���@D���O���?D���`P���…D���_P��� D����B.P���jD���68P���@kD����b:P���`IhD��� 8P���fD���@5P��� [hD���n/P���eD���1P���^]D��� :P���`}ZD����J;P��� C]D���O:P���bD���AP���cD���HP���`lD���iKP��� D���GP��� ŦD���i?P����GD���@AP��� \D���i?P��� D���EP���`D���@3CP����E����;P���@E����B.P���`E���!P���eE���gP���X"E���@+"P���`Z)E���@&P��� y6E���y%P��� 7E���P���`7E���@*P��� 1E���P��� (E����ZP���`"E���P����E���P���E���@ P���E��� O���` E���&O���2 E��� O���*E���`$O���aE���@O���,iE��� P����qE���@ P���SoE���6P���@`E��� P���QE���P���`EE����ZP��� @E����(P���`*CE���=P���fVE���`@P����kbE����BP���`1}E���@2P���yE����P���~E��� P���E���`t2P���E���`AP���E����bBP���tE���VHP���E���#UP��� zE���UUP��� E���@PP��� E���yMP����GE���NP���`F���@SP���@jF����NP���h,F���UP���$8F���QP���>F���cP���LF����nP���WcF���~mP����jF���bP���@3sF���@leP���`TvF����fP���`F���iP���`F���@|wP����~F����rxP���`ƂF��� }P��� tF���P���`|F���]P���`<{F���P���F���=P���ӎF���@P���ѐF���˝P���@F���_P��� F���@P���F���@P���F����BP���`+F��� 0P���F���iP���F���P���F���EP���`F���GP���`F���P����F���hP���F����P����G����P����G���XP���G���@P����;G���P���XG���@ P����G����B~P����ZG���pqP���@cG���nP��� G����rpP���^G����rxP���G����}P���@{G���#yP���G���@wP���@|G���rP���G����rP��� 2G���}P���@"G���@T~P���`CG����ZyP��� a H���@yP���: H���@P��� H���@uP����H����P���`0&H���P���@;,H��� P���8H����QP���uIH���@޽P���@LH����P��� WH���WP��� QiH���P��� tzH���P���.H���@AP���xH���@P���ɟH���P���`}H��� P���ϲH���@:P���SH����(P���dH���P���`H���P��� H���@3P���H���@P��� H����Q���@c I���@Q���I���Q���%I���@Q���I���@"Q���`H���%Q���H���=&Q���?H���'Q���H����#Q���H���@m Q��� I���Q���,I����Q���DI����!Q���I���4Q���'I����Z=Q����3I���FQ���VLI���@LIQ���,qI��� LQ���{I���JQ��� I���<Q���zI����B>Q���I���_HQ���I����WQ��� 8I����JgQ���I���TQ���I����bJQ���NI���gMQ��� [I���#AQ���@I���>Q��� I���@ 3Q���4I���-Q��� JJ���@Q��� +J���@wQ���`0J���Q���"*J���NQ���XJ���]Q��� bJ���@Q���I���Q���I���@Q��� I���@Q���I����2Q���`~I���/Q���@)I���R���@vI��� 1R����*I���@R���I���` R���@I����R����I���R���I����R���I���R���VI���@R���4I����R��� lI���R��� 8_I���R���`*SI���R���@NI���@"R���]NI����B&R���UUI����)R��� UI���.R���OI���1R���`�PI����(AR����_I���QHR��� bI���`%KR����S_I���?PR���GI���PR���.I���QR���S-I���QR��� })I����RR���(I��� VR��� I���aR��� I����KbR���I���]R����I���@cR���`H���q\R����)H���@]bR����H���``R���H���@:eR���H���aR����H��� }bR����dH���@\R���H����]R���ۧH���@HR����ݦH���qHR���@cH���WKR���VH����DR����dH���`<R���@|{H���i3R���`xH����,R���rH��� +R���)pH��� e#R���MdH����S#R���`[H���@&R���=H���`&R���=H���aR���+H����R���@ H���!R���`G����B"R���`_G���@R���G���R��� sG��� R��� G���@ R���hG���`R���G���`R���]G��� R���ZG���@$R��� ¢G����R����/G���@R���G���-Q���gG���@Q���`eG����SQ���G���Q���uG���Q���`BG���Q���G����Q���`xG���Q���.gG���@Q����`dG���@Q���`VG���@ Q����CG���Q���`+G���Q���+G���@Q���G����Q���0G���@uQ����G����cQ��� \G��� Q���F���Q���4F���@Q��� F���@Q��� F���iQ��� F���GQ��� F���-Q���F���Q���F���@mQ��� F���@Q���%F���Q���9F����Q���_F����Q����F���Q���V|F���@R���rF��� 1R���`*cF���WR���`F���` Q����`dF���Q��� J_F����Q���fF����ZQ���eF��� Q���]F���Q����TF���@Q���mPF���Q��� IF���Q���CF����Q���6F����ZQ���2F����Q���.F���Q���`�(F���@Q��� z F���@Q���E���=Q����E���`Q��� *E��� Q���E���zQ��� [E����|Q����YE����Q����E���Q����BE���-Q���E���@CQ���@E���@Q���E����BQ���@E���Q���`kE��� Q���E���@ Q���@dE����*Q���`E���Q���`E��� Q����qE��� eR���gE���R���@ E��� R���~E���@R���@lE���@vR���zTE���ER���`CE���@R���=E���@R���`7E���R���@.E���@mR���$E���@#R��� E���Q�����E���Q���E���@ Q���L E���Q���-D����Q���`D���`Q���@D����Q���ʎD���Q���`zD����Q���`]D���@Q��� DD����Q���'5D����Q���6D��� Q���&D���Q��� a#D���Q����&D����Q���wD��� Q��� D���@Q��� D��� Q���@ D����Q��� D���Q���C���@Q���C���yQ���`C����Q���C����Q���`eC���@Q���`C���Q���\C���Q���C���Q���@C���FQ���`kC���Q���C���Q���@C���Q���zC���@uQ��� CuC���Q��� `C��� Q���XC���@Q���QC���@uQ��� LC���ڴQ��� FC���@"Q����5C��� Q����B����JQ���NB���Q���>B���.Q���@B���Q���B��� Q���$B���Q���UB���Q����|B���QQ���`*{B���Q���`lB���Q��� mXB���@Q���xVB��� Q���YB���Q���`WB��� Q��� HB����kQ���8>B����;Q��� >B��� 1Q����|3B���ŮQ���@]6B����֬Q���`_4B��� :Q��� #B���Q����B���NQ���YB��� Q���B����9Q���WA���@Q���wA���Q��� bA����ZQ���A���@~Q��� A���Q���A���7Q���@A����rQ��� A����Q���@A���@Q���@A���`%Q���=A����*Q���A���`ߐQ����fA��� Q���_A���@Q���^UA���aQ��� 2LA���@ Q���_4A����Q���`0&A���Q���3#A���uQ��� A���� tQ���gA��� nwQ���`kA���XvQ���h@���@yQ���@���yQ��� t@���@KvQ���@���wQ���?@���qQ���`@����sQ���@����yQ���f@����{Q����/@��� ~Q���`B@���yQ���@���@TQ���@���Q���`׃@���Q���r@��� :Q���~a@���Q��� M@����ZQ���@@���Q���@:@���Q���6@���@ Q���)@���@Q���>@���QQ��� @���@:Q���@���yQ��� '@���@؎Q��� ?���`БQ���@?���@Q���?���@Q��� ?����Q���@?��� "Q���$0?���@+Q���?���Q���?���Q���w'?���XQ��� ?��� Q���-?����Q���� ?���Q���>���7Q���>���@Q���p>����Q���`^>���ZQ���Z>���ӂQ��� e>���q|Q��� [`>���@uyQ����R>���tQ����(>���uQ����>���}Q���>���@yQ���=���`zQ���=����}Q��� 9=���@2Q����l=���=Q���@Z=����Q���-H=���7sQ���=���mQ��� <���jQ���<��� jQ���`g<���aQ���@O<��� }^Q���0<���@BZQ���`f6<����|SQ���@�<���@KQ���@A;����r@Q���yu;���@<Q���j;���i7Q���@I;����;8Q���<;���@3Q����;����J/Q���t;���@%Q���r+;���@!Q���;���Q���`s ;���aQ���O:���@%Q���`C:����$Q���GQ:���Q����,:���Q���@A9��� &Q���`l9����$Q���@Z9����) Q����_-9���@uQ���`#9���@Q���@!9���Q��� 8���"Q���8���@$Q���&8��� nQ���N8���hQ��� [8���@Q���~8��� Q��� 1u8����)Q���ye8���P���@8���@P���`e7��� P���@�7���@P���Q6����P���ҷ6����P���@6���@uP���@6���P���Lm6����*P���=:6���P���L6��� �������� E@���`lC@��� OG@���8D@������������� E@���`D@���E@���uD@��� E@���ҎD@���`fE@����ÔD@��� (E@���D@���F@���D@����)F@���@D@���F@���`D@���F@���`BD@���&F@���D@����.F@��� D@���:F@����ܗD@���CF@���jD@����FF@����ܗD@���IF@����ܗD@����4QF@���`D@��� [F@����=D@���nF@���@{D@���[pF@���BD@����4iF@����D@���@jF@��� D@���@GzF@���`D@���@F@���8D@���෇F@����fD@��� †F@���D@��� F@���D@���F@���)D@���F@���D@���`kF@���`܎D@���aF@���D@����F@��� D@���F@����BD@���F@���@D@���@F@����D@���`̝F@��� ǂD@����)F@���D@���-F@���@D@��� F@���{zD@���@pF@���-yD@����vF@���[pD@���F@���`oD@���`vF@���lD@���F@���dD@����F@���`V]D@���ೱF@���UD@���F@���WRD@���@ֵF@���LD@��� ǺF@���aJD@���F@���DD@��� F@���AD@���(F@���:D@���F@���@0D@����F@���&D@���@F@���"D@����F@���!D@���F@���"D@���[�G@���2D@���� F@���D@���RF@���� D@���F@����D@���@F@��� D@���LF@����D@���F@���C@���`F@�����C@���F@����C@���`F@���kC@���@F@���C@����G@����C@���G@���@>C@��� G@���2C@���@#G@���C@��� G@����)C@���,G@���eC@���4G@���@C@���AG@���`C@���LEG@���@>C@���`EG@���C@���=AG@���C@���@#BG@����C@���`M3G@���೹C@���0G@���`fC@����3G@����vC@��� QBG@���@GC@���`EG@����C@��� OG@����ÜC@���@EG@���@>C@���9G@��� C@���B5G@���ǙC@���`B6G@���C@���@.?G@����vC@���aAG@���@gC@���`CG@���`C@���`R?G@���zC@���@EG@���`8pC@����MDG@����woC@��� g-G@���tC@���`G@���`lC@��� G@��� wC@���zG@���C@���2F@���LC@���@gF@��� uC@���#G@���@C@���`2F@����ףC@���aF@��� C@���@F@���C@���@F@���C@���@WF@��� C@���=F@����C@��� HF@��� \C@���`[F@���`C@��� CF@���C@���F@��� QC@���7F@��� C@���`F@���@.C@����MF@����C@���F@����C@��� \F@���FC@���@F@���C@���F@���`C@���)F@���=C@���F@���@#C@���F@���C@���`F@����C@���owF@���VC@���mF@���C@���cF@���sC@���PF@���QC@���'EF@���C@���#F@���D@���*F@���D@���1E@��� D@���E@��� ,D@���LE@��� gD@���@E@���2+D@���E@����2D@���E@���Z8D@���sE@���VD@���`/E@���(dD@���E@���@~D@���`E@���D@���E@����^D@��� E@���`D@��� ��B�������OR@���`~J����3c@���k%���Q������ ���������@���L���\���g���}��������������������&M\@���� %:���I\@���Q:����G\@����:���+=\@���9���!:\@��� 9����_<\@���`~9��� H@\@����~9���>\@���&9���aI\@���9���@N\@���:���&M\@���� %:���يb@��� m@D���`܊b@���<D���Sb@�����8D���/b@���@A7D���b@���`1D���/b@����r,D���`b@���@&D���`Ib@���6D���يb@��� m@D���b@����7����b@���7��� b@���E7���b@���Uu7����b@���r7��� b@���`7���@b@���@^}7���bb@���7���@`b@���27���b@����7���a@���@,���!a@���@,���a@���,���� a@���@e,��� a@���c,��� a@����C,���` a@���+��� a@����`+���`� a@���@d+��� a@��� +����a@���`̭+��� a@���z+����-a@���@$a+���a@���K^+��� a@��� f+���`a@���`M+���+a@����\+��� a@����x+���a@���+��� a@���U+���a@���@j+���`a@���+���a@���`҈+��� na@����L+���`a@���+���aa@���,����a@���` ,���`a@���&,���`a@���T,����a@���d,���@a@���M,��� a@����`l,���<a@���_,���a@���@,����^aR@���`~J���bYR@��� J���@UR@���<J����OR@���o~J���)SR@���@j{J���WR@���tJ���� ZR@���.J����ZR@���WJ���@ eR@��� !J���� nR@���`0J���gR@���@J����^aR@���`~J��� !c@���@;9���tc@����=9���&c@���@G9���� "c@����fW9���!c@���@^=9���8 c@���O:9���`&c@���@p9��� 'c@���8���&c@���@8����M$c@���@8���)c@���8���k)c@���N8���@+c@����9���`&c@���,Y9���"c@���9��� !c@���@;9����Da@���&D����a@���C���`a@���C���Ta@���@|C��� a@���C��� a@���`*C���ka@���C���yb@��� C���}b@���D���+a@��� D����Da@���&D���@<b@���4"D���`Ib@��� D���� b@��� D����-|b@��� D���`�}b@���xC���!|b@����C���@yb@���`<C����Dxb@���C��� {b@���C���@{b@���$C���~b@���C���`ʄb@���C���b@���C���tb@��� sC���@Nb@���@D���`2b@���eD���@ćb@���D���@b@��� D����b@���D����2b@��� D��� b@���`~!D���@<b@���4"D���O`@���@^'���J`@���:'��� A`@���I'���`@`@���'���&B`@����f'���/B`@���`r\'���`D`@���?h'����2F`@���U'���� F`@����&���`D`@��� +&����H`@���Ȱ&���J`@���@&����L`@���&���L`@����'����vN`@���''����_N`@����i'���@Q`@���@i'���`]T`@��� '���S`@���h'���O`@���@^'���@%_`@���&'����$^`@���`O'���*X`@���'����_P`@���WS'���`L`@���`5&���K`@����=k&���L`@���SW&���`L`@��� Q&���sP`@��� &��� Q`@���&���S`@���&���Q`@����&���@7S`@���@&���@T`@���&���HV`@����&���`V`@���&���\`@���&���!``@��� V&���``@��� &���Pc`@���@^&���`d`@����&���`f`@���7&���`f`@���`&���|f`@���@p~&���&h`@����c&���"i`@���b&���Yi`@���:&���l`@���`r|&���m`@����&���@n`@���&���p`@���"&���@@q`@����`&���o`@��� +&���'o`@���.8'���<l`@����)'���`i`@���u'���@c`@��� h'���@%_`@���&'���/a@���@ B��� .a@��� B���@W+a@���?�B���j&a@��� A���b%a@��� B���a@���, B���]a@���oA���@.a@���^A����Ma@��� A��� a@���nA���@(a@���@A��� ?*a@��� A���4a@���A���T3a@���fA���z2a@���`A����4a@���A���2a@���A���3a@���`wA���8a@��� A���F9a@���A���`:a@���@A���@=a@���A���`@a@���A����MDa@���`A���Aa@���A���`8a@���A���3a@���A���'3a@���A���3a@�����B���/a@���@ B���@.ea@���@0���da@����_0���`2ea@���0���ia@���@y0���`ra@���@e0���`wa@��� 9~0���@`sa@���@q0��� qa@���|0���}oa@���0���`na@���v0���ja@���20��� ga@���0���ea@���0���@.ea@���@0���`b@���,D���b@���D���b@���vD��� ?b@���`~qD���qb@���,aD��� b@���`fVD���`b@���QD����db@��� 1]D��� eb@���@_D���9#b@���hD���`$b@���hD��� 'b@��� eD����(b@��� [D����)b@���``D���`(b@���dD���q*b@���WkD��� 7b@���wD��� S9b@��� tD��� Fb@���D���Lb@��� D��� |Qb@���D���`Rb@���`D���Wb@��� D���Yb@���FD���@Yb@���@D���^b@���`D���F]b@���GD����Zb@���܎D���&Zb@���-D���[b@��� D���jb@���xD���`2mb@���FD���tob@���~D���rb@��� hmD���}ub@���4jD���tyb@���@"rD���{b@���pD��� }b@���`iD���`f~b@���#aD��� 1b@���@_D���b@��� pD���`ob@���`}D���jb@���`D��� ?b@���D��� b@��� tD���Bb@���@"D���`�b@����֤D���`b@����D��� b@���D����b@���D���@b@���@{E���b@���E��� b@���`CE���b@���#E���b@���`E��� (b@���N#E��� ?b@���E��� b@���`+E����b@���-E���Kb@���6E���b@���E���Zb@���@D���b@���E���نb@���h E���`�b@���` E���`~b@���+E���`xb@���@d(E���b@����k*E���`)b@���DE���~b@���eGE���`[}b@���=BE���z|b@���FE���`~b@���WSE���~b@���\E���Z|b@����GbE���zb@��� JoE���@{b@���@"rE���=}b@���qE���&|b@��� nE���}b@���ikE��� b@���@sE���`~b@���E���8b@���E��� b@���E���`|b@���E��� Q|b@����ZE���@@{b@���E���yb@���`wE���Ovb@���E����-vb@���4E��� wb@���`wE����Mtb@���@E���@sb@����E���ub@���@dxE���wb@���xE���wb@���bE���yb@��� E��� {b@���ԅE���`zb@���tE���`rb@���iE���Jpb@��� lE���`pb@����0vE���qb@���p}E���qb@���`ЁE��� mb@���…E���lb@��� [E����nb@���@ςE���]ob@���E���"ob@����`tE���`[mb@���wE���`mb@���`qE���]ib@���PiE��� kb@���`uE���jb@���…E���`hb@���"E���Fhb@���E��� ib@���`E���gb@���E���zhb@���E���gb@���`ƢE����mfb@���E���@%cb@��� JE���Ycb@���`E���`obb@���E���@.ab@���E��� 6`b@���fE���b_b@���eE���^b@���`E���@cb@��� E���`bb@���`$E���^b@���`تE���ab@���E���`b@���]E���]b@���`E���a`b@���E���� `b@���ԽE���^b@���E���^b@���`E���Zb@���E��� Yb@���@E���@@Ub@����E���`Rb@����HE����Rb@���@λE��� |Qb@����E���Pb@���`E���`2Ib@���ME��� Hb@���E���Fb@����E���� Fb@���`E���bEb@���PE���`Ab@���@ E���"Ab@���yE���=b@���E���`Bb@���yE���@Eb@���E���@wGb@���`}E���Gb@���`E��� nEb@���@E��� Cb@��� !E���j@b@���E��� =b@���@"E���;b@���`СE��� =b@���VE���@E=b@����AE���=;b@���SE���`2b@���V|E��� e/b@���vE���+b@���,aE���@+b@���VE��� )b@���NE���3(b@���@KNE��� e)b@��� IHE���@w'b@���`;E���%b@��� bE���@'b@���Q E���@-b@���@R0E���.b@���AE���`[/b@���=E���@r/b@���^5E���0b@���n7E���0b@��� +E��� /b@���@,E���@*b@���iE���@@)b@����0E���(b@����rE���@i'b@���"E���s(b@�����E��� 'b@����)E���#b@��� tD���@ib@��� D���b@���,D���`b@���,D���`@���U&���Ф`@��� c'��� `@���Qx'���٪`@��� o'��� `@���}'���@ī`@���:'���`@���@t'���@.`@���"'����`@��� 1'���@`@���G'���@`@���'���`@���`O'���`@��� '���``@��� \o'��� ۽`@���n'���`@��� +'���`@���`'����`@����f'��� `@���@d'����`@���`'���``@���@ʯ'����`@���'���`@���'���`@���E'����`@����((���3`@��� (���J`@���'���@``@���W'���``@���@(���`@��� !(����-`@���'��� |`@���@?(���=`@��� v(����`@���c(���``@��� {(���@.`@���x(���``@����(����`@���@u(���`@����~(���``@���t(���`@���$`(��� |`@���`+(���`@���t:(����;`@���Y2(���@W`@���`I (����_`@����}2(���` `@���,(���``@����= (���``@���`&(���J`@���(���@`@���'��� `@���`l'���� `@���'����`@���'���``@���'���J`@��� +'���@`@���'���`@���v'���`@��� n�(���``@����`'���`@���@'���@`@���@K(��� n`@���d(���`I`@���@$(���3`@���]N(���B`@���@p^(���`�a@���@+(���Ta@���~1(���� `@���g(���``@���@A(���@a@���v(���@a@���`(���@r`@���(���`a@��� (���`a@���(���`[a@���(��� Q a@���|(��� a@���}(���@ a@���j(����a@��� d(���a@���S(��� a@���I?(���`a@���'���@ia@���@G'���a@���'���`a@���`'���`a@���'���a@���z'���a@��� (���@a@���`I�(���`)a@���2(���a@���`M(���ba@��� (���a@���@(���Oa@���(���a@��� \o(��� a@���n(���&a@����b(���`a@���`W(���a@���8(���ya@���`5(���`Ia@���`&(���a@���(��� a@���` (���a@����i)���a@���:m)����a@����)���`a@���()���/a@��� E)���@@a@����~)��� a@���r)���a@����)���@wa@���@)���@a@���W)���@%a@���W)����Va@��� E)���@a@���@p)���qa@���@*����a@���z)���a@����)���@a@���*��� a@���`*���`2a@���|*���`I a@���vx*��� a@���౤*��� a@���*���| a@���`5q*��� a@���`l!*���` a@���r*��� a@���,*���* a@���` U*���`� a@���`S*����a@���B*��� Sa@���O*���a@���i*���`2a@����|*���@a@���GA*���@a@���`S*��� a@����ݞ*�����a@���zt*��� `@���@s*���` `@���`*����`@���҇*���``@���*���`@���*���`2`@���@ *���`@����}*���`]`@���I*���t`@���*���!`@���`5Q+���@`@����)\+���q`@���b+���O`@���s+���@`@���$+���3�a@��� \o+��� a@��� L+���a@���zU+����h�a@���@+���`@���+���@W`@���@+��� `@���@d,���`@���0v,����D`@���µ,��� e`@��� v-��� `@����^t-���`@��� -���K`@��� ? .���`@���@jc.���]a@���.���a@���` .���a@���`/���a a@���06/���&a@��� bJ/���a@���`q/���a@���k/���@a@���/���a@���/���za@���@/���Fa@���E/����a@���@/��� a@���/���@a@���/���,a@���~!0���b7a@���?0���kAa@���0��� eIa@���0���pYa@���`0���`a@��� 10���`da@���1����da@���"1���qfa@���G1����Vha@���W1���*ra@��� ?y1����2ta@���`1���xa@���@^1��� }a@���1���`Ia@���}1��� a@���1��� 6a@���@1����a@��� t1���Ha@���@q]1����_a@���|1���`[a@���ચ0���`a@����}"0���a@����0���a@���/���`[a@���t/���`a@����}/���a@���,.���`a@����-���8a@���-���a@���@3,���'a@���@f,���`a@����Z1,���4a@���E+���a@��� +���@Wa@���+���`Ka@����*���a@����T*����a@���@3s*���8a@��� R*���`a@���)��� (a@��� b)����a@���)����va@���Q)���a@���`)���a@���d)���`[a@���,)���`a@���$)����a@��� t)���a@���WS)���sa@��� 7)���4a@���`-)���ƻa@���`+)���` a@��� ')��� 6a@���@G)���a@���(���@Wa@���`(���a@���`` )����;a@���")���a@���p)���`Ӷa@���ty(���a@���`O{(���a@���n(���a@���&(���ݻa@���@'���a@���`(���`[a@���@5(���`a@���@(���a@���$(��� a@���(���Fa@��� '���a@���"'���3a@��� &����ha@��� \%���a@���v%���`a@���%����$a@���k%���a@���x%���a@����#%���*a@���%���a@��� %��� a@���@%���@%a@���@%���a@���@d%���4a@��� &���` a@���@;%��� a@���U&���a@���W&���a@���@j&���a@���t'���a@���n'��� na@��� '���a@���Q'���a@���I'���a@���@'���a@��� '���ka@���~(����a@��� 1u(����ma@���@(���a@����(���`a@���(���a@����)���Fa@���`+)��� a@���@:)���@ia@���`)����a@���z)���ka@���`̭)����a@���� )���a@���*��� a@���`O*���a@���`I+���=a@���I+���a@��� ,���a@���E,���a@���@,���a@���@-���b@���@A,���@b@���[,���Fb@���؂,��� b@��� n,��� b@���`l,���`Ib@����}R,���`ob@���",����$b@���Q,���`]b@���@,��� |b@���@,��� b@����-���`b@��� +:-��� b@���@-���'b@��� -���&b@���`r-����(b@���@A-����*b@���-���'b@���$@.����-(b@���,y.���B)b@���h.����v*b@���q.���4+b@��� .���)b@���.���@'b@���.����2*b@����f'/���]+b@���/���`o.b@���+ 0���.b@���0���.b@���:0���` /b@��� C0���@%-b@���`CU0���@,b@���Tv0����M0b@���0��� 64b@���0���`8b@���@0����8b@���(0���`:b@���@30���@;b@���0��� =b@���0���`>b@���0���<b@���@ 1���@b@���*[1����_Bb@��� id1��� Bb@���1���Db@���m1���Bb@���y1���`Cb@���`1����@b@��� !2����M@b@���<2���`Cb@��� Y2��� Eb@���@_2���Fb@���2���Jb@����2���|Jb@��� i2���Hb@��� 2���Jb@��� V2����MTb@���,3���Zb@���@3C3���S^b@���`M3���``b@��� =3���`b@��� -3���bb@��� [@3��� ab@���N3��� cb@���@ci3��� |mb@��� j3���Onb@���{d3���nb@���@AW3���Psb@���[3����rb@���3��� |ub@���@3���@yb@����g3���wb@���|3���Fzb@���వ3���={b@���`3���K{b@����3��� }b@����3�����b@���3����vb@���`l3����2b@���3���Ljb@���3��� Qb@���g4���`)b@���44���b@���@/4��� b@����+4���+b@����Y"4��� b@���v4��� 6b@����74���b@���&4���@Eb@��� h54���Fb@���@ 74���b@���04���ƕb@���@E4���b@���t:4���ٚb@���e4���b@���@d4����b@���n4���Sb@���`r4���`2b@���o4���`�b@���Rx4��� b@����y4���3b@���q4���@b@���Ȁ4���@b@���`4���b@���V4���b@��� 4���Zb@��� i4���sb@���4��� (b@���@@4���@rb@���4���`b@���@4����b@���w5���@ib@��� 5���b@���`fF5���Bb@���QI5���Yb@���@v5���` b@���5����b@���@5���@b@���5����-b@���5���`�b@���@5���Ưb@���ɏ5���b@����5���Pb@���੻5���ƭb@���5���ࣲb@����86��� b@���GA6���b@����fG6���Ab@���Y6���qb@���@js6���Kb@����6���b@���n6���ݹb@���@a6���=b@���ե6���Bb@���`t6���pb@���`O6���`b@���06��� eb@���E#6��� b@���U6��� b@����^6��� b@��� h6���`b@���>y6���Tb@����`6���`�b@���@f6���b@���@V6���Ab@����SW6���b@����j6���@wb@���[6��� (b@���@v6��� Sb@���6���b@���6���b@���~6���b@���o6���@Eb@���ǡ6����;b@��� 6���b@���u6���b@���@c6��� b@���\6���sb@���`6���@ib@���87���`b@����>7����b@����H7���b@��� P7����-b@��� {7��� b@���G7���b@����܏7���jb@����L7���Jb@���7���b@���7���`b@���7���b@���8���Tb@���@]7���@wb@���`e8���b@���@j8����b@���Q8���`b@���� 8����b@���@8��� |b@���= 8��� b@���8���ab@����7���kb@���`C8���b@��� 8��� b@���|8���`xb@���8���b@���`'8��� b@����.8���b@��� &8���c@���Κ8���c@���µ8���b c@���8���c@���8���c@���O8���Xc@���`'9���c@���+9���@c@���`G9���`fc@��� 8?9���@%c@���`J9��� c@���`k9���c@���,y9���`c@���@q}9���c@���m9����$c@���9��� c@���|9���` c@��� 9����"c@��� 9��� !c@����Y9����$$c@�����9���z&c@���9���`"c@���UE:����d"c@���`W:����2$c@���!c:���#c@���@:���$c@���`ˮ:����$c@���@:���&c@���;��� %c@���;���K#c@���`;���F!c@���=*;���@E!c@���1;���#c@���2;���T#c@���B;���!c@���=J;����m"c@���@jS;���T%c@��� 9^;���J&c@����Tv;��� )c@��� ;���+c@���(;���3.c@���;���@.c@���@;���@r/c@���@ <���`2c@���`C<���1c@���A<����3c@���V<���@i3c@���<���s.c@���@c =���p+c@����=k=���z(c@���=���s&c@��� !>���s c@��� b>��� c@���>���`"c@���|>����_ c@��� i$?��� Sc@���`H?���`]c@��� a{?���c@���ɏ?���c@��� ?����Vc@���$?���`c@��� 8@��� c@���`I@���`c@���<@���gc@���? @��� |c@��� 8@���� c@���uA@���Fc@���P@���c@���`Z@���`c@���@U@��� c@���Y@���!c@���`\@���c@���`+b@���b@���`p@���Xb@���`ד@���b@���@���@Eb@���E@����b@���?@���b@���@���`b@���ɯ@����Db@���f@���@b@���@���b@���@���b@����O@��� b@���@���+b@���@���b@���@���b@���`@���b@���@@��� b@���u@����-b@���@���b@���@��� Sb@���@@���b@���`@���� b@���`�A��� b@���@���b@���A���Tb@��� A���kb@���`A���b@��� A���b@��� A���b@��� %A��� b@��� 8A����Db@����DA���yb@���`~AA���<b@����BA���b@���`GA���4b@���gMA��� b@��� JOA���b@���EcA���b@��� IpA���`b@���sA���b@���~A���bb@����A���`b@���໋A���b@���A���@b@���A���Jb@���`ŃA��� b@��� A����b@���ڐA��� b@��� A���Jb@���@"A��� b@���`A���@b@��� A���=b@����A���8b@��� A���b@���@|A��� b@���A���b@��� 8B���b@���@ B��� b@���3 B���b@���(B��� b@���o>B���b@���hLB���Bb@����\B���b@���`eB���@b@����0vB���!b@���B����b@���'B���`b@���vB���Ab@��� B���@b@��� tB���@b@���ڠB���8b@����`B���Yb@���@B���@b@��� B���@b@���B��� b@���B���b@���XB���ab@���B���"b@���B����b@����ZB��� b@���@LB���pb@��� B���׆b@���WB��� xb@���B��� ib@���%C���\b@��� QC���`Zb@���`XC���`Zb@���@;TC���`Mb@���^C���`2Kb@��� XC��� Fb@���_C���Hb@��� tC���Ib@���uC���@Mb@���geC���`Nb@���@eC���Ob@���puC���Mb@����kC���@Ob@���bC��� Lb@���OC����;Jb@���C���Jb@��� C���@NEb@���onC����;Bb@���hC���@b@���iC���H@b@����krC���=b@��� tC���|:b@���]C���8b@��� TC���:b@���FZC���O:b@���`SC���8b@���`QC���3b@���WC���`0b@���MC��� /b@���HC���,b@��� CEC����-b@��� 2<C���-b@���&6C���S0b@���6C���1b@���-0C���`o.b@���@C����2(b@��� 9C���P'b@��� 5C����-"b@���8C���!b@���bAC���zb@���0C���@<b@���@u)C��� b@��� 1C���b@����0.C���#b@���`TC���<$b@���C���@E#b@��� C���b@���B���'b@���B���@7b@���@ B���`b@��� C���* b@���C��� b@����C���b@���C���@Nb@���C����b@���C��� Qb@���FC���`b@���C���Hb@���]&C��� b@����%C��� b@���=C���` a@���XC���a@���]C����a@���@]nC���]a@���baC���`2a@���aC���a@���VTC���a@���IC��� a@���/C���`a@��� 4C���qa@��� .C���}a@��� s3C���ݻa@���#C���˷a@���="C���/a@��� 'C��� a@��� ,C���a@����2C��� a@���8C���a@��� ?1C���ݭa@�����0C���@Ea@���z4C��� a@���1C���`a@���+C���` a@���DC���sa@��� C���`a@���@C���Za@���5 C��� a@���@B���a@����kB���Ka@���hB���@ia@���vB��� ?a@���eB���ԃa@���B���@Na@���]B���Aa@��� B���wa@����B���@ya@��� B���gwa@���>B��� aua@���rzB���@ya@���rB���0{a@���`kB���@{a@���@LUB���ta@���OB����Mla@����A��� |_a@���A���@`]a@����A���^a@��� QA���la@���,A��� sa@���B���]ua@���B���Tsa@���LB���@wia@���A���`2aa@���� A���@Waa@����ZA���da@���@A���0ga@���@A��� ga@���@jA���@7ga@����A���Jja@���A���ka@���LA���@fa@���`A���ha@���A���@Wka@���A���ka@����`A���gia@���`A���Kga@���ѨA���}_a@��� A���j^a@���ࣸA���^a@���@ּA���@aa@���ۿA���`a@��� A���` [a@���`A��� _a@���`A���_a@���SA���`)Wa@��� A���"Qa@����A���`Ha@���A���`xFa@��� A���Ca@���A����;Da@���`TA���Ma@���`A���Oa@���^A���Na@���܎A���jPa@���_A��� Oa@����dA����dPa@���bA���Qa@����0fA���0Qa@��� \_A���Ka@���MLA����Ca@���A���`Ba@���A���8@a@���A���@%Aa@���`%A���`@a@���V,A��� =a@����5A����V<a@���@IA��� ;a@���g]A���� 8a@����A���5a@����AA���.a@��� A����d,a@���A���+a@���oA���(a@��� A���%a@���wA���`!a@��� CA���a@����A���a@���A���a@���`A���+a@���N{A��� a@���WsA���`'a@���`tA���+a@���xA���3,a@��� zA���-a@���@xA��� ?0a@���vPA���@W/a@���;A���`.a@���9A��� -a@���V<A���t/a@���g-A���/a@���A����d.a@���@)A���'1a@��� A���1a@���A���0a@���A��� 4a@���x@��� 4a@��� @����<a@���@@���=a@����@���@=a@��� @���:a@����)@����:a@���`ś@��� ?a@���@@���+Aa@���=@���`@a@���`ޅ@���>a@���@���<a@��� d@��� =a@���m`@���9a@���`M@���`8a@��� sC@���*8a@���@Q@���9a@����k@���8a@���@ @���` 5a@����y@���'3a@����~@���`3a@���̓@��� ?.a@���`}@��� +a@���µ@���k%a@���@��� a@���@���a@����@����Da@���w@����va@���@���a@���@���a@����@��� a@���A���a@��� )A���Fa@���^-A��� na@����6A����a@��� P:A��� |a@��� DA���@a@��� 1EA���3a@���`T>A���``@���OBA���@i`@���WKA��� (`@����QA���!`@��� ?QA���@i`@����YA���``@���#aA��� `@���fA����`@��� hA��� 6`@��� hA���`@���^A���`�a@��� [`A�����a@���gA���`@���@nA���H�a@���`0~A���`@���@A���Z`@���@oA���*`@���mA���`@���uA����`@����yA���`@���@zA��� e`@��� PrA���H`@��� ]A��� Q`@���vXA���`)`@���SA���� `@���`IA���`I`@���IA��� `@����qMA���`[`@���@LA����m`@��� 8A���``@���$@A���`2`@���<KA���Z`@��� +RA��� `@���6PA����$`@��� NA��� `@���@LMA���`@���@FA����`@���<KA���`�`@���!A��� `@���A���@r`@��� A���`@��� A���j`@���@A���@W`@���W@���`@���@���@`@���`C@����`@���'@��� `@���@���]`@���@՝@���`@���o@���`@���@����`@���@@���@<`@���@��� S`@��� @���`@����r@���y`@���;@���`@���Й@���``@���ߔ@���@`@���@���4`@���`0@���@`@��� P@���``@���`l@����`@��� s{@���`)`@��� w@����v`@����x@���J`@��� r@���`@��� 9n@���@`@���f@����`@���\@���H`@���`\@���a`@���`g@���``@���`h@���@`@���W@���`@���K@���`@���:@���"`@��� a;@���ࣼ`@���`BF@���B`@���E@��� `@���4@���`@��� 5@���`x`@���2@���q`@��� @���и`@��� P"@���b`@���`@���+`@���@���`@��� @��� e`@���h @���`@����@�����`@���@���B`@���@ @���`I`@���@���P`@���2@���@``@��� @����ׯ`@���@���``@����Y@��� `@���@���/`@���`@��� S`@��� h?���В`@���@?���``@���@?���S`@���@?���U`@���`N@���``@���D@���jx`@���?���&f`@���M|?��� c`@���y?���[`@����?���J`@���`?��� =`@��� ?����M*`@����/?���` `@����?���`@���?���@U_@��� @���Q_@��� @���k_@���`+"@���#_@��� (@���_@��� h%@����Ռ_@���@���_@���`"@���f}_@���`k"@����v`_@���F@���M_@���`+R@���@._@���|s@���_@��� z@��� _@���@���&_@���@���f^@���@����d^@���@���@i^@��� y@���8^@���@���z^@����@���^@���@���@^@���`~A����^@���@�A���`^@���@���^@���@@���^@���;@���`ʦ^@���`}@����^@����@���@W^@���`B@����^@���@@���̐^@���`*@����^@���`A���܅^@���A���^@���`+A���@^@���`@���#^@���`@���`;{^@���`@���@r^@���3@���=Y^@��� @���M^@���@���J^@���v@����OC^@���@���$^@��� b@����$^@���D@���^@���o@���@]@���@(@����]@���`SA���]@��� )A���`]@���.A����]@���`1A���]@��� 0A���-]@���7A���@{]@���`?A��� l]@���8A���]@���E;A���]@���@BA��� ]@���MDA��� 6]@���?A���ʵ]@���`:A����]@���-@A���z]@��� DA��� ]@���IA���D]@���MA���0]@����VA���`]@���@{\A���&]@���dA���]@���UuA��� \]@���UuA���3]@��� yA���]@���`A����܋]@���A���]@��� JA���&v]@���@jA���u]@���A��� Hx]@���`}A���y]@���అA��� ]@���@)A���@{]@���A���n]@��� 'A���@j]@����A����g]@���`A��� sg]@���A����P]@���`A���`_K]@���A��� HH]@���`$A���p=]@��� ǁA���9]@���A���]@���@RA���@]@���xA���-]@���`vA��� ]@���`lyA���]@���`CuA���]@��� mA���]@���@tA���]@��� uA���]@��� jA���\@���jA���`\@���ZA���x\@���;A����M\@��� &'A����v\@���&A����\@��� y.A��� \@���@!A���p\@����`@���\@��� s@����_\@���@R@���\@���@@���\@��� @���W\@���K@���\@��� @���f\@����@���#\@���@��� 1\@���@@���@\@���n@���\@���@����\@���,@���\@���@���\@���}@���\@���V@��� n\@���@C@��� H\@���`O@���`\@��� Pb@���\@���2d@���\@���]@���3\@���~Q@���Y\@���uQ@���@\@���tR@���5\@���L@���\@���`TF@���`\@���7@��� !\@���|#@���E\@���E#@���@U\@��� @���`\@���?���`\@���:?���`�\@���`>���W\@���">��� \@���`R>���\@���`G>��� \@����>���Խ\@��� =����\@���=���`\@���@=���೵\@���O=���\@����<���.\@���t<���`\@���`<����\@���`s;<���\@���@<���\@���;���\@���|;��� \@���}R;����o\@���:���0a\@���L:���&R\@����fg:���`RO\@���C:����_H\@���&:���pM\@���(-:���?P\@���<:���OQ\@���-:���R\@���O :���U\@���[:��� 1X\@���@A':���Z\@���/:���`k^\@���`b:����_\@���`X:��� n_\@���@F:���.b\@���@U:���`c\@���A:����d\@����=:��� f\@���{:���`dg\@����g:���Oi\@��� :����Ok\@���@:����o\@���:����s\@����:��� Jw\@���@|:���@Ew\@���SW:���r\@���$@:���@j\@���y5:��� 1\\@���@9���]\@���9���Y\@���N9���0Y\@���9���^\@��� 9����_\@���9���-`\@���u9���`n\@���9��� k\@���:���m\@���1:���p\@��� 24:���@.w\@���`:���`xv\@���`k9���y\@���@9���x\@���`k:���}\@���~Q:����;\@���`Bv:���\@����W:���@\@���`J:���`\@���`1:����q\@���`:���\@���@9���@W\@���[�:����\@���9���`Ŏ\@���`9���࣐\@��� +9���a\@���@39��� t\@���@19��� l\@���%9���ai\@���\8���j\@���t8��� 8g\@���`8���@3g\@���8���`Z\@���M|8����vX\@���o>8��� [\@���`-8���&Z\@���` 8���+i\@����7��� 8o\@���`7���`r\@���@T7��� Hp\@����"7���-t\@��� 7���q\@���@ 6���m\@����6���Ej\@���`6����l\@���|6��� lx\@��� 6����\@����Z5���\@���5���\@���5����O\@���5���&\@���`#6��� \@���UU6���ى\@���L6���\@���OZ6���`�\@���y6����\@���6���D\@��� i6���\@��� t6���`x\@���&~6����\@���Nk6����v\@���O:6���&\@���T6��� \@��� 6���\@���J5���@\@���@ 6����\@���5���G\@���@35��� \@���5���@3\@���`J5��� 8\@���=5���\@����5���G]@���L�5��� ]@���`4��� H ]@���4���`]@���4���-]@��� 4���2]@���@c4���5]@���ߌ4���E2]@���4���-4]@���`l4����7]@���4���!J]@��� ?4��� K]@���K4����MT]@��� b4���b]@���D4���`f]@���4���n]@���?4���v]@����4����q]@���]^4���@i]@���RX4���@]@���_4���@]@����N4���O]@���T4����d]@���xF4����]@���R3���x]@���m�4���`�]@���4���`}]@���@4���]@��� 3���@^@���23���1^@���E3���A^@���`3���^U^@���� U3��� c^@���]2���Gi^@���`r2���@g^@���2��� 1p^@���`r2���q^@���@2���@n^@����02����t^@���Uu2����Ky^@���`x2���5^@���!c2���^@���@332���@^@���(2���`R^@���!2���`^@����7�2���-^@���U1����q^@���@�2���`^@���1���O^@����1���@^@���#1���^@����ݎ1���@3^@���K>1���ԑ^@��� %1����^@����1���`;^@���w0���ೝ^@���0���J^@���0���^@��� 0��� J^@����0����^@���`0����v^@���0���`;^@���20��� ^@����0���^@���$p0���@U^@���`I`0��� ^@���s0���@^@����={0���@i^@���Qy0���^@���@Η0���^@��� 0���T^@���`0���Y^@���߬0���&^@���S0���^@���Q0���@^@����Z1���^@����7P1��� ^@��� k1��� ^@���1���T^@���`ˎ1���^@����_M1���G^@���`.1���^@���@1��� ^@���1��� Z^@���`0���=^@��� 0���^@���{$1����v^@���~11����^@���@1���`^@����1��� ^@����g1��� ^@��� h0���h^@���0���@^@����0���@.^@���0���@^@���0����^@��� 0��� ^@���0����_^@��� 0���@E^@���m0���.^@���=0���^@���0���`^@���%0���@^@���@0���^@���@0���^@���`s{0��� Z^@���Nk0����K^@���h0����^@���`n0����M^@���%_0���^@��� a0���^@���`W0��� 8^@����H0���3^@��� )0���k^@���+*0����^@��� 30���^@���50���^@���`r<0���`^@���@B0���@^@���W0���^@���@_0����_^@���(m0���5^@���`BV0���`^@���!c0���`^@���I0���&^@���@90����_@���vH0��� _@���xf0���T_@��� i0���_@����Y0���$_@���`g0���@/_@����b0���}5_@���n0���9_@���=j0���h$_@��� S0���$_@���uY0����v_@���RH0����O_@�����0���^_@���J0���#!_@���-0���%_@���@:0���$_@����/���5)_@��� /���a._@���ڠ/���)_@���@ /����'_@���/��� _@���&/����O_@���/���h_@����=/���_@���/����_@���`W/���_@����fG/���D_@��� b /����_@��� /���_@���@ .����!_@���.���`'_@��� /��� (_@���..���@*_@����.���`;+_@���@;.���`._@��� .���!*_@���4.���._@���ੋ.����0_@���@.���`�?_@���0.���@?_@���@.���A_@���(.����MD_@���.���K_@��� /���D_@��� .���E_@��� ¶.���OI_@��� .���A_@���@.��� ;_@���.���?8_@���`.���^=_@���m.���@_@���Uu.���@3C_@���@U.���@_@����N.���@?_@���`.���`_;_@���@dh.���@7_@���؂.���@6_@���c.����4_@���U.���p9_@���@33.���`=_@���`CE.���JB_@���&.���@@_@���-���D_@���`-���D_@���(.���F_@���.���kI_@����M.���@J_@���4R.���I_@����Z.���`J_@���t.���Q_@����1.���Q_@���`D.���`Z_@��� \O.���\_@���A.���`)W_@���� 6.���@[_@���`.���@K_@���`-���@O_@���`-���Q_@���-���?T_@���@G-����M_@��� ¶-���H_@���-���@{K_@���d-���`R_@���@I-���`N_@���`CE-����P_@���c)-���JV_@���I,���U_@���6-����Y_@��� 1-���@[_@���H-���ab_@������-���a_@���O-���e_@���Q-���`}f_@��� v,���g_@���@r,���l_@��� –,���m_@���@d,���i_@���ེ,����k_@���.,����h_@�����@-���Jj_@���,9-���`�o_@���@,���n_@���`,���u_@���,���t_@��� &-���y_@���@I-���`z_@��� hE-���z_@��� -���!_@���� -���_@���,���`~_@���`,���&_@���t,���?_@����7,���@i_@���r{,���_@��� d,���_@���<,��� _@��� &,���5_@���@^-,���~_@��� ,���`~_@���+���+_@���`,���s_@���@ +���}_@���`,���_@���4+���̀_@���O+���x_@���@+���@_@���@d,���ь_@���?,��� ҋ_@���O,���`k_@���Sw,���\_@���Z,���@_@���Y2,����_@���@3+���&_@���+���_@���Q+���3_@��� +���_@����",���_@���@+,���8_@���#,���_@���H,��� H_@���`fF,����;_@����n,���n_@���u,���#_@���&,���_@���@,���@_@���,��� _@������,���_@����Z+���@_@���+���@_@���`+��� _@���+���_@��� ١+��� _@���O+���_@����f+���_@���+���8_@���@u+���@i_@����7+���_@���,+���_@����+���`_@���+���G_@���`+��� _@���@+���_@���+���_@��� +��� _@���K,���_@���`X,���D_@���@,����_@���(-����`@���I-���K`@��� f-���@%`@���`h-���=`@���}-����`@���Qx-��� `@���-����h`@���-���`@���-����-`@���-��� 6`@���@3.���|`@����.��� e`@��� .����_`@���`l.����d�`@���p.��� e`@���.���`�`@���@G.���@`@���@Ĕ.��� `@���e.��� `@���`^.���`@���.���` `@��� .���b `@���ෟ.���`@���+.���`@��� .���� `@���~-���` `@��� V-���@ `@���@-.���`@���.��� `@���@j-���`@���-���* `@��� -���``@���ౄ-���`]"`@���-���%`@���-���$`@����}r.���&`@���p].���&`@���Oz.���3(`@���.���`&`@���0-��� '`@���-���@1`@���].���@2`@���` 5.���2`@����/W.����v4`@���@F.���K5`@����J.���t5`@���@Ag.���p7`@���`d.���3`@���-����4`@��� -���;`@���-����V<`@��� ߜ-���p?`@���`-��� ?`@����m-���;`@��� -���8`@���-���y9`@���Љ-���B7`@���-���@N3`@���tY-���`2`@���@$A-���@3`@��� 6-���`x8`@����-���j8`@���@-���F5`@���(-���`21`@���,-���}+`@����,���0-`@����Tv,���K/`@����wW,��� /`@���[0,��� S/`@���.,���2`@��� 1,���3`@���,���'7`@����,�����8`@��� n+���6`@���`+���8`@���ཚ+��� :`@��� 9+���@N9`@���+��� 9`@����lb+��� ?<`@���A*���@<=`@���+���0?`@���`+���D`@���``*���@WG`@���Ȱ*���H`@���@*���HJ`@���0*���qJ`@���@*��� C`@��� X*���C`@����})��� uD`@���)���E`@���)���F`@���`)����2H`@���")���J`@���)��� eK`@���@G)���KK`@���@Y)����MP`@����Q)��� O`@���@4)���Q`@��� \O)���S`@��� o)��� V`@��� ?i)���!T`@���@U)���Q`@���D)���S`@����)<)��� S`@���`0)���jR`@���,)���sR`@��� 9(��� S`@���(���`X`@���(���+Y`@����))���zZ`@���`)���`^`@��� A)���&^`@����=+)���\`@���`")���[`@���` )���F]`@���)���`]\`@���(���Z`@���(����mZ`@���`(���\`@���@d(���ya`@���I(���_`@����b(����``@���L(��� f`@���`h(��� g`@���|(���g`@����m(����h`@��� !(��� i`@���#(���k`@���tz(��� n`@���` (���Kw`@���`5(���`x|`@���`p(���}`@���`(���`@���`&(��� `@���Q(���``@���tz(���` `@���f(���``@����Tv(���@r`@���`(���F`@���t(��� S`@���(����;`@���ޝ(���}`@����=k(��� `@���P(���/`@���-(���ؕ`@���G(����$`@���C(���ൔ`@���-(��� `@���z(���``@���,'���`@���`'����$`@���R'���`@���z'���` `@���&���`@���$&���b`@���� '���ԁ`@���'���p`@���&���<~`@���&���+`@���&����{`@���`&���x`@���@&���` y`@����/&���`[y`@���E&���`z`@���@ʏ&���z`@���`&���� z`@���j&��� (|`@����Y&���}`@���`l&���t`@���@u&���``@���@jC&���*`@���E&���y`@��� 9&��� `@���@&��� `@���&���'`@���&���`@����}&���`@��� ¶&��� n`@���@&���``@���آ&���`@����J&���`@���B&���ଈ`@���&���`@���@-x&���`@���`W&���̊`@���"B&���3`@��� \o&���`@���@&���b`@��� &���`@��� 9n&���`@���m&���`@���&���`@��� '���``@���@ &���ԛ`@���Ϊ&��� `@���S&���`@���U&��� ��������#@���@1G@��� .1@���`H@�������������@0@��� {]H@���`0@���NH@���y0@���\>H@����*0@���5H@���@0@����./H@��� 0@���#H@���0@���KH@����o1@���sH@���@1@��� = H@��� .1@���;�H@���1@���G@���@.1@��� G@���` 1@���G@���`1@���@G@���g1@��� G@���0@���`G@���0@���G@���J0@��� =G@����ɯ0@��� 7G@���J0@���G@���@Q0@���{G@���@Ws0@���`YG@���o0@���� G@����0@���`G@���e0@���`G@���B0@���`G@���@Ws0@��� G@���`}0@���`֣G@���Hp0@���ZG@����t0@���ΒG@���B0@���ߓG@���0@����5G@��� w0@���1G@��� V0@���ȇG@���u0@���`ăG@����X0@���`GG@���P0@���`lG@���/@���jG@���/@���\^G@���0@���TG@���`L/@���ZG@���l�/@���OG@����5.@��� TG@���-@���@NG@����#-@��� AG@���50-@���`7G@����&-@���@1G@��� N,@���"9G@��� Q,@���l8G@���``+,@��� >G@���p+@���DCG@���*@���IG@���@)@���nNG@��� (@���@XG@���`/(@���cG@���`5(@���KeG@���@ (@���nG@����I(@���9uG@��� C(@���G@���`h(@���G@���l(@���G@��� '@��� }G@���;'@���G@��� &@���@z|G@���`&@���mG@���1T&@���`){G@���`&@���bG@����x%@���8fG@���d%@���`jG@���vX%@���`oG@��� %%@���lG@����Y$@���FoG@����$@���UqG@��� +$@���`wG@���9$@����$G@��� %$@���@yG@���@Y$@���mG@���l $@����nG@���I#@���`zG@���@H#@���G@���#4#@���ZG@��� 5#@��� eG@���8#@���GG@��� <#@���G@���@>#@���@G@���1B#@���G@���AD#@���@G@���*H#@����pG@���F#@����G@���@)D#@���G@���@E#@��� uG@���wF#@����vG@���B#@���G@���@A#@���OG@���@5?#@���uG@����;#@���`G@���6#@���G@���3#@����eG@���#0#@���XG@���`v+#@���G@���@&#@���`iG@���`%#@���G@���@S&#@���@G@���`'(#@����G@���_*#@��� yG@���t*#@���@G@���(#@���G@����,%#@���eG@���m #@����xG@���#@���G@���#@����֝G@���^"#@���]G@���.%#@���oG@���h&#@���G@����W #@��� G@���#@���G@���`#@���`G@���#@���@,G@���5#@��� G@���zT#@���аG@����N#@��� OG@���#@���`G@����"#@��� G@���� 6#@��� G@���_t#@��� G@����#@���G@���#@��� G@����U#@����G@���9#@���`G@���$@���G@���;+$@��� G@��� y5$@���@G@��� ,$@��� G@���O$@���@@G@���@;l$@���tG@���`m$@���ZG@���V$@��� G@���`$@����G@���@X$@���G@���$@���G@���-$@���G@���7$@���G@���%@��� G@���`�_%@���G@����}%@��� G@���%@���G@��� N%@���G@��� %@��� G@����}%@���DG@���6&@���G@��� g&@���G@���+y&@���mG@���zt&@���DG@���@&@���`G@���&@����#G@����&'@���G@���CD'@���1G@��� '@���G@���hd(@���G@����i(@���`G@���Z(@���G@���`(@���G@��� |(@���G@���"(@���`kG@���`)@���@G@���@;)@���JG@���b)@��� 7G@���W)@��� rG@���)@���G@���`*@���@G@���`)*@���`G@���%*@���G@���W3*@���`G@���`*@��� aG@���)@���G@����#)@���`qG@���@*@��� UG@���@j)@���mH@����)@���`H@���*@���� -H@���&*@���5H@���*@���HH@����+@���`JH@��� t+@����FBH@���@+@���tYH@��� +@���\H@��� +@����dH@���-,@���VH@���U,@���@NH@��� ,@���IH@���,@��� RH@��� f-@���jJH@�����-@���dH@���-@���!bH@���-@���`H@���M.@���@-H@���Q.@���xH@���\.@���`/~H@���@/@���@QpH@����/@���`jH@���@0@���PaH@���`^0@���]H@���@ 0@���gH@���0@���dH@����0@���\H@���@0@��� {]H@��� ��j������cF@���@1C@���`G1I@���D@��� ������)������ gF@����EC@���`eF@���`kC@���cF@���sC@���mF@���C@���owF@���VC@���`F@����C@���F@���C@���F@���@#C@���)F@���=C@���F@���`C@���@F@���C@��� \F@���FC@���F@����C@����MF@����C@���`F@���@.C@���7F@��� C@���F@��� QC@��� CF@���C@���`[F@���`C@��� HF@��� \C@���=F@����C@���@WF@��� C@���@F@���C@���@F@���C@���aF@��� C@���`2F@����ףC@���#G@���@C@���@gF@��� uC@���2F@���LC@���zG@���C@��� G@��� wC@���`G@���`lC@��� UG@���kC@���`F@��� pC@���F@���`C@���;F@��� C@���`F@��� C@���@ӎF@��� C@��� yF@���ȷC@���qF@���C@��� gF@����EC@����9G@���D@����HG@���D@���HG@����fD@���KG@���fD@���\G@����D@���aaG@���@D@���bG@���@D@���oG@���LD@����zvG@���D@��� \wG@���D@��� G@��� HD@���@G@���`vD@���[G@��� D@���G@��� D@����̖G@���`[D@����=G@���D@���#G@���\D@���G@���aD@���G@��� D@���@G@���͢D@���G@���D@���-G@���`D@����qG@��� (D@���)G@���D@���G@���D@��� CG@���8D@���`G@����D@���@3G@����D@��� H@���RD@���� H@���D@���H@���QD@���`)3H@���jD@���V<H@���D@���DH@���3D@���eKH@���D@���dH@���9D@���kH@���D@���֓H@���iD@���@-H@���\~D@���H@��� cD@���H@���`VD@����H@���PD@����wH@��� ~ID@��� H@���KD@����5 I@����FD@���8I@���>D@���.I@���-D@���`G1I@���UD@���`'I@����e'D@���I@���r+D@���� I@��� +D@���PH@���@.D@���H@��� +D@���H@���jD@��� xH@���`/D@���`˽H@���C@���@µH@���JC@���`H@���@.C@���մH@����<C@���H@���C@���H@���C@���̤H@���C@���H@����#C@���`H@���լC@���@H@��� DC@��� _H@����C@���� H@���C@���H@���`C@���ؙH@���)C@���@H@���@}C@��� >H@��� `{C@���H@���@-C@��� H@���@WC@���2H@���sC@��� >H@���9C@���`H@���`ˍC@����H@���`C@���ZH@���@?C@���{H@���SC@��� wH@���@C@��� wH@���@W{C@���sH@���`rC@���jH@����nC@���$nH@��� Z8C@��� 0UH@���@1C@��� &NH@���3C@��� 7H@���#PC@���`*H@���LC@���@.H@��� gUC@��� 7H@���@']C@���`0 H@����MdC@���H@���mC@���jH@����_tC@���V#H@���}C@���t)H@��� `C@���%H@��� fC@���`GH@���C@���[H@���C@���;H@���@C@���� .H@��� >C@��� `+H@��� xC@���G@��� C@���@@G@���C@���`G@���C@���*G@���`C@��� yG@���`C@���@ÌG@���C@���DG@���>C@��� NkG@���ߓC@���@EG@���`8pC@���`R?G@���zC@���`CG@���`C@���aAG@���@gC@���@.?G@����vC@���`B6G@���C@���B5G@���ǙC@���9G@��� C@���@EG@���@>C@��� OG@����ÜC@���`EG@����C@��� QBG@���@GC@����3G@����vC@���0G@���`fC@���`M3G@���೹C@���@#BG@����C@���=AG@���C@���`EG@���C@���LEG@���@>C@���AG@���`C@���4G@���@C@���,G@���eC@��� G@����)C@���@#G@���C@��� G@���2C@���G@���@>C@����G@����C@���@F@���C@���`F@���kC@���F@����C@���`F@�����C@���F@���C@���LF@����D@���@F@��� D@���F@����D@���RF@���� D@���� F@���D@���[�G@���2D@���F@���"D@����F@���!D@���@F@���"D@����F@���&D@���F@���@0D@���(F@���:D@��� F@���AD@���F@���DD@��� ǺF@���aJD@���@ֵF@���LD@���F@���WRD@���ೱF@���UD@����F@���`V]D@���F@���dD@���`vF@���lD@���F@���`oD@����vF@���[pD@���@pF@���-yD@��� F@���{zD@���-F@���@D@����)F@���D@���`̝F@��� ǂD@���@F@����D@���F@���@D@���F@����BD@����F@��� D@���aF@���D@���`kF@���`܎D@���F@���D@���F@���)D@��� F@���D@��� †F@���D@���෇F@����fD@���@F@���8D@����F@��� QD@����F@���@3D@���@WF@���ҶD@���F@��� lD@����F@���`D@����F@���@D@��� F@���` D@���`F@���(D@���F@���D@���G@���`̕D@���`G@���`D@���$G@��� QD@��� l0G@���`VD@���[8G@���VD@���`=G@���D@���BG@���`fD@���`EG@���2D@���=IG@���@֍D@��� OG@���D@���UG@����דD@���ZG@���D@���XG@��� D@��� lPG@��� D@���@OG@���`D@���@KG@��� D@���?G@���ײD@���4G@���@3D@���=*G@���@D@��� *G@���)D@��� L&G@���@pD@��� +G@��� \D@����q,G@����D@���`)G@��� D@���$G@���jD@���2$G@��� D@���!G@���RD@��� G@���qD@���\G@����)D@���@G@���@gD@���`[G@���D@���G@���D@���{*G@���-D@���@5G@����=D@����9G@���D@��� ��v������eS���A6@���uR����:@�������������)���D���T���q������������@R���A6@���R���R6@���@R���cX6@���@CR���f6@���@R���Bu6@���@KzR���x6@���@wR���@ 6@���@;xR���6@���@zR���t6@���R��� +6@���@R���`ݭ6@���$|R���k6@���vR���;6@����wR���6@���uR���6@���~R����vX6@���@R���A6@���@NS��� 9@���@YS���:@���NS���%:@���@mPS���@ 3:@��� }NS����F:@���`tNS���q:@���IS���`0:@���IS���`:@���US���`*:@���WWS��� :@���@3[S���:@���GaS���:@���5yS���`:@����|S���@:@���`uS����:@���=fS���:@����YS���g:@����JS���@ :@����JCS��� U:@����r@S���N:@��� 1IS���C:@����KS��� #:@����rLS��� V9@���@NS��� 9@���@TjS���@Q7@����nS���@7@���EkS���`7@���@dS���`/7@���ngS���B7@���@lS���@7@���pS���7@���jS���J7@����0rS����7@���GuS���@7@���,uS���8@���@zS��� 8@���`lS���`H8@���@hS���@8@���QpS���#8@���lS���88@���woS���`8@���lS���` 8@���@hS���58@���fS���68@���bS���8@���aS���j7@��� aS���h7@���MdS���97@����8gS���<7@��� iS���j7@���@TjS���@Q7@���@R���[8@���R��� '8@���R���@98@����R���G8@���@"R���``K8@���R���@ 8@��� 1R���`/8@���yR���@ԕ8@���@R���@8@���R����F8@���R���`դ8@��� R���H8@���GR����O8@���R���$8@���iR���@Q(8@���@R���[8@���^S���@E8@���S���F8@���S���[_8@���S���h8@���S���@8@���@S���t8@���S����8@���@2S���8@���@S���8@���@S���8@���@:S����8@����ZS���`8@����S���@ۏ8@���S���@8@����bS���8@���@S���߻8@���S��� 8@����S����8@���S��� 8@��� S����L9@���S���`39@���S���'9@����rxS����8@����JoS���8@���mS���8@����qS��� r8@����vS����Ml8@���wS���@]^8@���^S���@E8@���] S���@8@��� S���8@���S���`68@���S����*8@��� S���`8@���� S���@8@���Q S���@8@��� S���78@���@ S����8@���G S���@X9@���@ S���9@���@ S���&9@���ES���@=9@���� S���<Z9@��� -S���q9@���1S���`k9@����/S��� %9@���+S����ʎ9@���*S��� {9@���WS���\9@���iS���@-H9@����S����"9@���@ S���9@���� S���8@���] S���@8@���S���@ :@���eS���:@��� S���@.:@����S���:@����S���`:@����S��� &:@���S���r:@���ಇS���:@���@*{S����:@���yS���:@����kzS���`:@���@3S����:@���S���@ :@���R��� 6@����R���k7@���@R���@,7@����rR���27@���R����$7@���R���F27@���QR��� &>7@���@R���@']7@���R���p7@���@*R���7@���R����ɟ7@���@R����7@���FR���2S7@���@R���-7@���@R���@7@���`R��� O7@��� R��� 7@���@:R���` 6@���R��� 6@������X������ ;I@���a9@��� xNI@����=:@�������������II@���a9@��� ;I@���9@���@?@I@����=:@���LI@���@7:@���`FI@���@0:@��� xNI@��� :@���@MI@���9@���II@���a9@����� B������`V@���@4@���*W@���:@���E������������V@���5@����^V@���d6@����V@���6@����V@�����`6@����#V@���6@���V@����6@���V@���[6@����V@���6@���V@��� x6@��� ~V@���6@���@WV@���~6@���@V@���ti6@���`yV@���6@���V@���5@���@V@���`::@����CV@���>:@����?V@���U:@����:V@��� &^:@���� =V@���@4r:@���DV@���b:@���IV@��� V$:@����[V@���9@����`V@����:@���dcV@���`S9@���@hV@���!:@���eV@���`R':@���@QhV@��� ,9:@���kV@���s::@����vV@���9@���@%wV@���9@���@@wV@���@9@���vV@���`9@���@tV@���`t9@����tV@��� ̼9@���@@wV@���9@���@tV@���_9@���uV@���@K9@����V@���[/9@��� fV@����&9@���@V@���-9@���V@����T&9@����V@���`059@���sV@���#9@���1�W@����.9@���@W@����p-9@���W@���`9@���W@���8@���@W@���8@���W@���?8@���W@��� y8@���W@���8@���W@���`j8@����FW@���@`8@���`aV@���@`8@����V@����|S8@���`V@���tY8@���@V@����S8@���`V@���F8@���@V@���@-(8@���*V@���n.8@���@V@���a:8@����V@���9=8@����VV@���`(8@���V@����&8@���V@���b98@���lV@���8@���@V@���@.8@���V@����M8@��� V@���8@���V@���`8@���V@����7@���V@���t7@��� /V@���@.7@���V@���_7@��� V@���7@���@V@���7@���@(V@����47@���"V@���iC7@���DV@���C7@���@V@���%7@����V@����7@����EV@���k6@���V@���7@���@V@���17@���V@���A7@����V@���i7@���@V@���z7@����V@���D7@����V@���7@���`Q�W@����7@���@W@���`07@���) W@���|7@��� > W@���`7@���@W@���7@����$W@��� 7@���|W@���@47@��� W@���7@���W@���`H7@���@OW@���>97@��� >W@����6@���kW@��� s6@���@W@���6@��� W@����Ѹ6@���&W@���@&6@���#W@���@W#6@���{&W@���o5@���@(W@��� d5@���*W@���@L5@���&W@����$@5@���t%W@���iC5@���m#W@���@_5@����W@���@(\5@���W@��� a5@����W@���Io5@���@W@���by5@��� W@���`W5@����_ W@���`-5@���@W@��� 5@��� W@��� N4@��� >W@���@z4@���@W@���@4@���@.W@���4@���rW@��� '5@���V@���r5@���{V@���@5@����^W@���<5@���`�W@���b5@���@V@���5@���V@����5@���V@���`5@���`V@���5@���KV@���@5@���8V@��� 5@���)V@���6@���RV@���'M6@���`QV@���@6@���@V@���6@���V@���`6@����V@����6@���@V@���6@���V@����6@���V@���@6@���V@���D6@���@V@���t6@��� fV@���@6@���V@��� &6@���3V@��� 6@���V@���z6@���V@���@X6@���V@��� 7@���aV@����0F7@��� V@���!R7@���@V@���`7@���`V@���y7@���@V@���{7@���:V@��� ف7@���@OV@���`}7@���V@���7@���@?V@���P7@����ɣV@���h7@���V@���7@���V@���` 7@���7V@����Fb7@����V@���u7@���V@���Dd7@����#V@����H7@���2V@���`87@���@OV@���7@���V@����}7@����ќV@���7@���V@���`_ 7@���HV@��� 6@���`V@���@6@���@2V@���@6@���V@���z6@���YV@���6@���0V@���@ۿ6@��� V@���Ʊ6@���V@���`6@����V@���i6@���V@����6@���@V@���v6@���V@���K6@���֣V@���146@����V@���6@���V@����v6@���@V@���P96@��� >V@���H6@���@pV@���b5@����$V@���`5@����V@���5@���V@���@P5@���@ V@���5@���`V@���Q5@���@gV@���5@���{V@��� 6@���V@���`Y!6@���@܎V@���H06@���V@���@5@����V@������6@����=V@��� ~6@���ƁV@��� \6@����~V@���5@���|V@���`5@���@OzV@��� 6@���@ xV@���`H6@���`V@���Ds6@���ÂV@���@`6@���~V@��� z6@���(|V@��� n6@���`uV@���hD6@��� wV@����v6@���@vV@����#6@���rV@���6@����vV@���6@���lxV@���j5@��� &rV@���i5@���jV@���5@���@iV@����5@���hV@���`5@���lV@���`5@���kV@��� 5@����eV@���!5@����fV@���5@����cV@����5@����bV@���@5@���|fV@��� 6@���eV@���@26@����gV@��� VT6@���dV@��� E6@����#eV@���6@���|bV@���`_5@���raV@���@>�6@����=bV@���h6@���s^V@���J6@����]V@����56@���'aV@���B6@���@ aV@���Q5@���`^V@��� 5@���`]V@���5@���jZV@���Ե5@����VXV@��� ҷ5@����<WV@����5@���qXV@���5@���aVV@���5@���`VV@����|5@���@QV@���85@���RV@���@5@���@NV@���` 5@���LV@���5@���@MV@���5@���@KV@��� 5@���IV@���`5@����FV@���5@���`CV@���`H6@���DV@���6@���*FV@���@ &6@����v@V@���F6@����?V@���@.w6@���<V@���J6@���Q<V@���S6@���J>V@��� U6@��� W7V@����6@���@7V@���`07@����%?V@���!27@���86V@��� &>7@���.V@���J>7@���-V@��� O7@���2V@���@u7@���Z$V@���7@����F&V@���7@��� N'V@���[7@����.V@���s7@���@.V@��� 8@���K-V@��� 8@����U-V@���+8@���@/V@���`/8@���2/V@���`6@8@���:,V@���Q8@����#V@���7O8@���V@���@48@���@V@��� 8@���`V@��� %8@���s V@���8@���V@����8@��� V@���8@���BV@���8@���V@���9@��� V@���09@���@#V@���`.9@���u<V@���j29@���@h@V@���@.G9@���@_@V@��� &N9@���@z8V@���S9@���4V@���@f9@���@5V@���Ct9@���@p1V@��� 29@���,V@��� w9@���Y!V@���@-9@��� fV@��� N9@���zV@���9@���! V@���@9@���@V@���@9@���cV@���99@��� V@����:@���� V@���@$:@���`V@���M:@���@GV@���@^:@���@p!V@���[:@����V@���@3s:@���1V@���@K}:@����V@����s:@���kV@���|:@���@V@���:@���V@���`:@����wV@���:@���l,V@��� Vd:@���@r/V@���R:@����*V@���J:@����,V@����D:@���0V@���L:@���\6V@��� N;:@���8V@���@G:@���@`;V@���`G:@���@V@���`::@������h�������`M���@'*@����M����*@��� ����������M���@'*@��� CM���(*@���4M���@I*@����`M��� *@���M����*@���DM����*@����M��� m*@����M���zT*@���@M���2*@���M���@'*@�����@������UU@���H@���@@���ZI@���e����������@ @����I@���> @����$I@���i @���II@����~1 @���I@���2 @���I@���@-X@���I@���{s@���`ěI@����d@���ਛI@���(@���@FI@���@@���`I@����,@���7I@��� @���3I@���0@��� I@���@���@ԭI@���H@���I@���/@����^I@���@���|I@��� 2@��� ˽I@���`*@���I@����ɯ@���I@���@@���ZI@���M@����I@���`@��� I@����C@��� xI@���@!@���I@���@��� `I@���a*@���JI@���`j@���`I@���@O@���I@���`W@���ǨI@����3@����wI@����@��� I@���@���I@����k@���I@��� 6@���I@���s@���`I@���`@���{I@���b @���}yI@���&@���pI@��� `@���`I@���@���`I@����L@����[I@���n@���`\I@���`@����OI@���@��� OI@���@���BI@��� .w@����9I@���@@���!*I@����~@���I@���@@���`I@���m@��� yI@��� @���� I@����eG@��� >I@���`;@���`H@���`@���sH@���i@����H@����@���`H@���?H@��� H@����@���`H@���(\@���H@���!@���}H@����"@���`H@���h@���H@����~@���H@��� :@���`H@���`Q@���@zH@���@���`kH@���&@���cH@���d@��� aH@���n@���H@���A@���H@���@ 4@���@'H@���ch@���* I@���k@���`I@��� @��� I@���Ʊ@���`H@���@U@���#H@���@_@���H@���@���`AH@���@@���a I@���`@��� I@����L@���`!I@���`]@���@?(I@��� @���� -I@����^ @����$(I@��� $` @���U,I@���Y @���8I@���Y @���?I@���  @���m?I@���p= @���DI@���`H@ @��� LI@��� @���@^I@���`@���eI@���@?H@��� cI@���5@���8YI@���kA@���`I@��� @��� iI@���`f@��� qI@���UU@��� I@���@���`I@���@ @����I@������������MV���`/@���@CV���]}2@���4����������@'V���[72@���V���w2@����V���]}2@���� V���6|2@���V���h2@���V���@`2@���@;V���Y2@���?V���o^2@���V��� K2@����Z V���aZ2@��� V���@ V2@����0V���@_2@���V���bY2@���@CV����Z12@����Z V��� ,1@��� V���1@���V���1@���V��� آ1@���V��� 1@���@ V����}1@���G V���@^}1@���@V��� {1@���@*V���@z41@���V���1@��� V���0@���V����0@����V���@0@���@*V���e0@���=V��� O0@���@V����0@���@V���p0@���@#V���1D0@���6,V���>0@���r/V���70@���/V���%0@���%;V���t/@��� M:V���/@���>V���@/@����MV���`/@��� LV����|#0@���@KV����y0@���@"JV���@0@��� :IV���%1@���@#IV���{1@���IV����1@���-IV���1@����KBV���k2@���O6V��� 1@���@1V���` 1@���y-V���@2@���@+V���@/2@���@'V���[72@�����������s?���@@���@ @���@a(@���`����������f6@���`'@���G@���'@���I@���`'@���`@���@'@���`@���^ (@���@��� 1U(@���A@���{(@���)@���@(@����}@���(@���@<+@���`F(@���{@���@a(@���~ @��� (@���� @����(@���@n @��� '@���`H @���`/'@���@x @���'@��� @���@%b'@���@ @���@&@���঍ @���E&@��� @���;&@����@���%@���@��� g%@���@ @��� +%@����P@���7$@���ׂ @���A$@��� @��� $@���@ҧ @���@$@���y @���@^M$@��� $ @����g#@���`3 @����6#@��� @���J#@��� @���@#@���  @���@']#@��� @����E#@���`N @���E#@���!" @���"@���\ @���"@���@���\."@���`f@���I"@���N@���@"@��� @����-!@����@���* @�����u@���@@��� @����<@���@����@���*@���`0@���0u@���;@��� \@���@@���`:@���`@���r@���e@���`b@���@(@����^@���Y@���`d@���"@���@���|@���@���3u@���[@���L@��� ?���@X@���%?���@@���?���@����W?����@���V4?���@���?���`@���`?���`)@��� G?���@r@���O?���`@���@'?����. @���?����ۿ @���Œ?����o @���?���@!@���_ ?��� !@���@ϊ?���;"@��� ?����E"@���`ff?����#@��� ?���}1#@���?���#@���s?���$@��� ?���` %@���[?���@%@���?���`%@��� S?��� )&@���?���@&@���?���`G&@���?���WS&@���?���&@���@Tv?���&@���L]?���&@��� ?��� 1&@����)\?����#&@������?���`&@���$?���@&@���A?��� s&@���^q?���n&@���@'�@����&@���Ȃ@���['@��� V@���`'@���f6@���`'@�����������`6P���`[!@@��� *P���0@@���[����������4P���`[!@@���05P���u!@@���5P���u!@@���&6P���!@@���6P���!@@���`6P���@#"@@���@6P����"@@���6P���"@@���@6P���@"@@���5P����"@@���T5P���W"@@���4P��� u"@@���z4P���"@@���4P���`"@@��� 3P���@"@@��� J3P��� #@@���@2P���`M#@@���@2P��� #@@���82P��� #@@���1P���$@@���1P���$@@���`1P���%@@���82P���@%@@���s2P����&@@���@2P��� L&@@���1P���&@@���f1P���`&@@���1P���`�'@@���0P���H'@@���h0P���'@@����0P��� '@@����/P��� '@@���/P���[(@@���@{/P���(@@����=/P���Q)@@��� .P���)@@��� .P���=*@@���@.P���`*@@���8.P����+@@���-P����+@@���-P��� ,@@���-P���,@@���^-P���B-@@���+-P���@-@@���,P���`f.@@����,P���.@@���,P����/@@���Q,P�����0@@��� ,P���[0@@��� +P����0@@��� a+P���0@@��� *P���0@@��� &+P�����0@@����x+P���/@@��� +P��� \/@@��� ,P���.@@��� H,P���.@@����,P��� .@@����,P����]-@@���,P��� ,@@���,P��� +@@����v,P���@{+@@���Q,P��� *@@����v,P���=*@@���,P���*@@���:-P���)@@���-P���`)@@���-P���=)@@���`+.P���(@@���`k.P���(@@���@.P��� (@@���@.P��� '@@���@3/P���@.'@@��� n/P���`&@@��� /P���`B&@@����/P���`%@@��� 60P���f%@@����q0P���$@@���0P���z$@@���0P���@$@@���G1P���#@@���1P���q#@@���`1P���"@@���!2P����"@@���`}2P���W"@@���@2P���"@@��� &3P���!@@���@i3P���!@@��� 3P���`!@@���?4P���k!@@���4P���`[!@@������������ 0V@���:@���RW@���R<@���<����������� 0V@���%;@���@3V@���@;@����9V@���?H;@���:V@���/R;@��� &>V@���>y;@���� HV@����G;@���nNV@��� ;@��� WV@��� %;@���eV@����#<@���9uV@���?<@���@V@���R<@���mV@���@A<@���YV@����M<<@���@zV@���h<@���@gV@��� <@����V@��� O;@���V@���;@���(V@���<@���@V@����p <@���!V@���`;@���V@���;@��� 6V@���@;@���sV@���@;@����FV@���`;@����hV@���@P;@���V@����t;@���V@���j;@�����W@����x;@���RW@��� ,I;@�����W@���`+;@����W@���@;@����UW@���@;@����.W@���:@���zW@��� :@����V@���:@���V@���`:@���V@���@:@���}V@���@:@���@V@���:@���@V@���:@����V@���:@���V@���:@���@V@���@:@���`V@���@.:@���`V@����0:@���V@���`R:@���@V@���:@���'V@���@:@���[V@���`_:@����uV@���:@���@gV@���:@���hV@���g:@��� WV@���@(:@���!NV@���:@��� GV@���C:@����:V@���:@���7V@���@z:@����7V@���;@���5V@���@;@���� 0V@���%;@�����������iQ���6���L����]#������������\=Q����+70��� >Q���50����sFQ���@.70���IQ���70����MQ��� (0���[Q���`r</���WQ���9/��� TQ���`r.���@QQ���`.���FRQ���.���HQ����l.����HQ���Ws.���QQ���`8.���@XQ���-���`%WQ����T-���WOQ���Ws-��� OQ���;-���@"NQ���#-���IQ��� %-���>Q����),����r@Q���Ϊ,��� ?Q���@u,����6Q���e,���7Q���Q8,���@>Q����`+���>Q���,+���yEQ���QY+���EQ���@I+���@@Q���D+����=Q����w*���a>Q���O)���q8Q���@)���w3Q���@u)���.Q���V)���1Q���M<)�����,Q���` )���U1Q��� (���@IQ���`C'���PdQ����%���vDQ���%���7Q���?&����)0Q����&���@42Q����L=&���0Q���`G&���@%Q��� 5&��� Q���`%��� Q���i%����Q���~Q%���P����S%���P���@{c%��� 'P���P8%����8P���"$���`P���W$���ݱP���@j$���ͣP����#���ɃP���#���݁P����(#���tP���E#���`sP���@#��� rP���v#���@pP���=#��� 1mP���$#���@<gP���#����{dP���@;#���` \P����]#���qXP���Ce#����JSP���#����ZUP���@^ $��� }RP��� d$��� TP���x$����YYP���d$���YP��� E$���h\P���`%���@4ZP��� %���TP���ij%����*SP���@%���@YP��� T&���`XP���`/&����TP���`&���VP���&����2TP���O&���NP���'�����LP���L'���^MP���o'���JP��� '���GP���Ec'���?P����}'���@AP���'���@3?P��� h(���3P���(���`%/P���]N(���?,P���@33(���@+P����TV(���@C!P���{(���@ P���`x(���P���࣐(���@P���t(��� :P����`(���O���)���O���)���`$O���(���O����7(���O���h)���`~O���@E)��� O��� 9N)��� O��� )���cO���*���@XO����)���JO��� *���<O���h$*��� 2O���H*���O���@K*���@4O����}*���N���`*���N���+���N���@^ +���N���+���N����+���@N���`+���`NN���@*���N���` +���ࣈN����}*���N���+���eN���r[+���`=N���t+���,1N��� +���=N����M,����l9N���`,���V,N����w,���@L-N��� V4-��� ^7N��� ֢-���@#1N���/.���,IN���1.���N���` .����N���WC0���M���J0���`M���Q0����d8M���{T0���`~1M���F0���)M���wG0���-M���p0���q,M���`l0���;M����|0��� s;M���x0���2M���@?1��� M���Z1���`L���p1���L��� R~1���`IL���`1��� L���@d1���`<L��� 1����L���`2����dL��� 2$2���L���-2���L���h42���ܾL���=2����L���'=2��� L��� 2���L���`k2���@4L����` 3���@L���@3���M����3����L���3���>M���`:+4���iM���3���M���R3���` M���Y3���M���K3��� NN��� u3��� N���3��� N���{4���`}"O���@4���,!O���@5���QO���<6���` eO���n6���gO���`5���@vO����7�6���iP���`W6����Z P���n6���@P���F6����P���6���@"P��� 6��� :P���١6���P���6����;$P����\6���"P���F6���#P���@]>6���*P���+6����B.P���o.6���@E?P���@A6���@TfP���6����(qP���+6����J{P���5����P���5���P���5���ӎP���@5����P���� 5���P���L6����*P���=:6���P���Lm6���@uP���@6����P���@6����P���ҷ6���@P���Q6���P���6���P���6���P���6���@P����7p6���P���K6���@ P���`=6���P��� 6���gQ����5���Q���5���  Q���`<5���  Q���L5���Q���m4��� Q���4���@#Q���4���Q$Q���4���Q���� 4���@EQ���4���+Q���}4����/Q����n4����{0Q���H`4���*Q���`S4���`x.Q����*;4���@u-Q����0&4����1Q��� !4���@]2Q���t4���)Q���4���$Q����4���"Q���@@3���,Q���`3���@+Q���@j3���Q���q3�����Q���@o3����Q���f3���i/Q����-3���<Q��� 2���;Q���2��� @Q��� 92���@AQ���`ew2���yIQ���E#2����DQ���`2����EQ���2��� HQ���@ 2���PQ��� 1���iSQ���1���yUQ��� 1���r_Q���1���_Q����Z1��� `Q���`1���eQ���K1���iQ���,I1���@gQ���/1���XQ��� 1���OZQ���`C1���UQ��� 0���@JQ���v0��� FQ���� 0����)@Q���� 0����kBQ��� b0���fBQ���F0���AQ���v0���i?Q���rk0����4Q���Y0���@Z5Q���pM0����G8Q���@OE0���:Q���8>0���\=Q����+70�����������` y/@���@BHE@���3@��� F@�������������]1@���@xE@���@<1@���`M{E@���'1@���}E@���`[1@���׉E@��� t1@���E@���`d1@���zE@���@PL1@���@E@���A1@���� E@���@E1@��� E@���B1@���׺E@���@*1@���E@���`0@���`E@���>0@���E@���` 0@���E@����0@���E@����0@���F@���[p0@���@F@���Z0@��� u F@����]M0@��� F@���?0@���-F@���@$0@����F@��� -0@���@{F@��� /0@���$'F@���90@���*F@���`(0@���`k2F@��� 0@����@F@���@ 0@���@FF@���/@���YF@���@/@���q[F@���/@���@WcF@���` y/@��� hF@���/@���zmF@��� /@���`uF@���@3/@����fF@���/@���kF@���/@����fF@���`/@��� F@���@/@���F@��� /@���BF@���@E/@���`F@���0@��� F@���`I 0@���@gF@���0@���eF@���0@����)F@���(0@����F@���50@���@gF@���@J0@���F@���Z0@����F@���`ff0@����F@���e0@���$F@���@u0@���{F@���y0@���F@���0@��� F@���Q0@���@F@��� 0@��� F@���0@��� F@��� 0@��� F@���0@����F@��� 0@���F@��� 0@���`F@���@0@���� F@���1@��� F@���� 1@��� F@���  1@���F@���1@���F@���`I-1@���F@���@=1@���F@���@gD1@���`F@���H_1@��� F@���<l1@���)F@��� s1@���`F@���gs1@���eF@����~1@���uF@���{1@���.F@���11@���8F@��� 1@���ېF@���H1@���.F@����1@���`F@���1@���`F@���� 1@��� LF@����1@���=F@��� 1@���`F@��� 1@���@pF@���`o�2@���@{F@���@>2@���F@���2@���@ёF@���@2@����]F@����2@����F@���42@���׊F@����f72@����F@���`o@2@���F@���R2@���`2F@����n2@���F@���Qy2@���QF@���2@��� F@���2@���F@���2@���<F@���2@���шF@���2@���@F@���@2@��� NJF@���@{2@��� F@��� 2@�����F@���2@����fF@���2@����=F@��� 2@���F@���د2@���F@���P2@���F@����=2@���͂F@���`)2@���`F@����=2@���`F@���@2@����yF@���g2@���xF@���2@���8uF@���>2@����znF@��� 3@��� (nF@���@<-3@���.vF@���f53@��� asF@���@3@���8uF@��� Z3@��� ^rF@���a3@���@pnF@����Z3@���(mF@���`]\3@���`kjF@���@U3@���@cF@���`X3@��� ubF@��� HP3@���)ZF@���`2E3@���@ WF@���`73@��� KF@���@/3@���IF@���@03@���.FF@��� 3@���WBF@��� %3@���@8F@����#3@���4F@����)3@����3F@���3@���-F@��� Q*3@���@g$F@���33@���p%F@���`I=3@���!F@���`Q3@���@"F@���[3@���`F@���Gq3@���3F@���� z3@���qF@���@>x3@���eF@���3@���q F@���3@���F@���`[3@���@F@���`3@���F@���3@���F@���3@���aF@���3@����E@���@_3@���E@���=3@���F@���`'@3@���`)E@���|3@���E@���Â3@���`�E@����}3@���`E@���ׂ3@���aE@����h3@���E@���'_3@���@E@���@P3@���@E@���I3@���`E@���:3@���E@���@<-3@���`E@���3@���E@���` 3@���E@���3@���@.E@���2@���E@��� 2@����4E@���@2@���)E@���3@���E@����F3@���)E@���`R3@���E@���{3@���E@���@P 3@���E@���F3@��� E@����=2@���`E@���F2@���E@���@2@���QE@���]2@���஭E@���2@���E@���2@���@E@����2@���QE@���2@���qE@���֤2@���@ёE@���`2@���@GE@���`f2@���`E@��� 2@���3E@���{2@���@g|E@��� }2@��� LnE@���@gt2@���jE@��� 2@���]E@���o2@���`)[E@����ד2@����SE@���`̍2@���@OE@���t2@���@BHE@���@ri2@���ME@���\2@���7PE@����D2@���$OE@���@2@���@`E@���1@���uaE@����)1@��� gE@��� 1@���hE@���e1@��� nE@��� 1@��� sE@���@G1@���`uE@���Q1@����sE@���1@���vE@���ѧ1@���rE@��� U1@���xE@���]1@���@xE@������������3@��� :����^=@���31������������� 4@���AQ2���ev5@���`M2���J7@���1���Av7@���92���`7@����6Q2���!7@���w2���7@���@;|2���7@����R2���@'7@���`*2���a8@����Y1���@v8@���@2���`�8@��� 82���8@���`C2���8@����/1���@D9@���31���<9@���1��� %O9@���2���@d9@���\2����Ѩ9@���2���@(9@���2���9@���@2���+9@���@2���A9@����3����#1:@���`s3���Y:@��� 3����iS:@����3���`g:@���@3���p:@����*3���:@���`3���^:@���@3���>:@���}4���@;@���`�4���@Q8;@���w4����L;@���@qM4����I;@����~4���r[;@���@ w4���ƶ;@��� 4���;@���G4����i;@���N4���@-;@����4���m;@���`I5���@K;@���`C%5����;@��� [P5���D<@����܏5���3<@���`5���r[<@��� b5���}<@��� ,5���k<@���`5���@=@���"5���U=@��� ;5���@ =@���� 5���@ =@���@c5���=@���� 6���(=@����6��� B=@���6����^=@���@06���e=@���@c96���<@����7P6����@<@���b6����<@���Uu6���j<@����76���p<@���ؒ6��� %/<@���J6���`/&<@��� 6���� <@����S6���@^ <@���6���A<@���6��� H;@���6����;@����7����G;@���7���>;@���O*7���;@���@:7����;@���@d87����;@���`J7���B;@���@4b7���Te;@��� d7��� O;@���7���4;@��� ,7���@Q;@���7����:@���@ 7���@:@���@7���c:@����C8���:@���@o8���@v:@���8��� #g:@���d8���@(\:@���o8���9@���8��� 9@����/9���K9@���9���b9@���`9���@&9@��� 9���t 9@��� 9����8@���9����#8@���W9���3r8@���M9���@d8@���E9���D8@����Y9��� x&8@���%9����8@����9��� 8@���\9���7@���9���@7@����Tv9���7@���yU9���Tu7@���@AG9���@7@��� L9���@'6@���Fb9����$6@��� [9��� 6@����9����6@���9���6@����9��� 6@���@9��� x6@����9���Av6@���@ 7:���-6@����m:���46@����_:����5@���:���5@���:���5@���#:����S5@���U:���k5@���a:���@ 5@���t:���=Y5@����:���$5@��� :���4@���`s:���@=4@��� :���4@���`:���`4@���r:��� ~4@���b:���^4@���@4":���4@���-9���4@���`9���4@��� 29���ơ4@����ք9���^4@���u9���84@���Ga9���`c4@���u 9��� ,4@��� i8���`\�4@���@}8���3@���@:m7��� %3@���6����3@���[�6���4@��� 85���@J4@���@4���\4@���L3��� 4@���AQ2�����3������R���@���`TfA����-@ ���t������ ���������#���+���3���C���K���T���������I���`���I������I���@���@jI���.����gI������� hI�������BvI�������I������I���`���HH���;���`$@H���m;���5H���@c;���`/H���`q;���`BH���;���HH���;���v8I����?����BI��� Y?���DI���`5?����6I���a?���7I���?���j/I���n?����(I���?���N+I��� h$?���v8I����?���H���Ų���` I���@lV?���N+I��� Y?���`<3I����?���42I��� H?���H���d?���,H���?����kH���@a?��� \H���ܾ?���yH������H���Ų���@lI���6ѿ���`lI���@Ϳ���༂I����ƿ����|I���= ���@SI���@����NI���@'���`SGI��� �����@lI���6ѿ���I����߿��� I���}ۿ���I���^Mؿ���@dI���DD̿���I���_9����ŋI���`п��� CI����G޿���I����߿���I���m��� I����;L���`I������#I���`X���@I�������@dI������ I������'I��� Z���I���[���I���`���5I���#���I���]n��� ƢI��� :���xI����s����BI��� @���I���m��� \I���?���@&I���`A?���`(I���`A?��� I���@%?���, I����?���`*I���` ?���I���W?��� \I���?���H��� Ŀ���`}H���@���@(H���n���H���մ?���ࣸH���`O?���ٱH����?铿���`ѰH��������H���@8���H��� Ŀ���9I���K��� [PI���@z5���RI���N���fI��� ���`neI���`(��� aI�������GI��� Y���OI���z����=I����d���`CI���i���4RI���@z���[I��� ���tbI���4��� eI��� K~���`<cI���*;���8^I��������dI������`T^I���$���@MI���@Ϋ���yEI���@Q���RI������]I���`߿���@;TI���`ѿ���dHI���#ǿ���8I���؂��� +I���?���`}H���%Ͽ��� [H���̿���8H���`:L����ŃH���'ſ���`2H��� bѿ����.H���`|ҿ����/H���`-ؿ���:H���a���`S?H���؂���5AH������@HH���`""���`<CH���@(}����DH�������`TH������OH��� $���� eH���h$��� iH���@n����nH���A���kH���DD���yH���Be���@LH������.H������VH���@}���H����;L���`lH�������H���@%���`<H������`H������`wH��� N<��� tH����S���.H����a ���H���`���`H���� ���]I���O���@KI���`:m���@ /I���`a����B&I������&I���`���9I���K���]N���3@���^UN���`@����d8N���@���N����-@����CN���S@����N���`@���M���I_@���`NN���1@����|N���K@���N����@���M���@@��� M���`8@���`<M���<@���`M���@@���FM���;@���bM���@���M���@����kM���@����ZM��� @��� M���ׂ @���@#M��� @��� M���@K @���` M���J@���@M���i@����M����@��� M���:L@���?M���,?���@M��� Ί?���`M����W?���FM���?���M���?���`˝M���`?���M���@L?���vM���,?���nM���);?����SgM���?���`\M����d?���XM���R?���AM���H?���`M<M���@ ?���@M��� y5?���z,M���?���'M���@?��� [ M��� ?��� M���2?���L����I?���L���ׂ?���L���a?���vL���d?���?L���;+?��� L���>?��� 1L����I?���`ʦL���ó?���`TL���@'?��� ߌL���@0�@���ࣈL���/�@���`ʆL��� >?��� U}L���?��� UL���&?��� mPL��� ?��� GL���@ t?���F<L���@?��� tK���R?���iK���[?���iK���@\�@���`L����@��� L���`H@���L���@@��� K��� @���`K����.@���>K���`kA@����LK��� y5@���ࣰK��� l@���XK���R@���K���@_,@���#K����O@���`<K���`z@���`TK���7@��� zK��� @���azK���@���z|K���p@��� oK����@���@gK���@|@���GaK���`@���`6XK����@��� ,YK���@���VK��� @��� NK���@@���FK��� @���` =K���`%@���K���@_,@���K��� Ga@��� tK�����@���p K���`�@���J��� 8@��� \J���:@����SJ����,@���J���@y@���@J����U@���\J����@���J����N@���`_J��� @����|J���|@���J��� @���J���<@���.J���@���@LuJ���`@���HJ���@@����9J��� @���*J���@@���` ,J���`; @���9 J���[ @���I���@���I���@ @���@dI���{@����I���t@��� I����Ȑ@���`I���@���yI����O@���I���@ @��� +I���9@���`TI���K@���I���` @����I���  @����wI���@|@���ovI���`l@��� IpI��� A@��� mhI��� @��� kI���`@���eI���@���@]I����N@���@ WI���@YQ@���`}ZI��� @���eI���);@���bI����Xr�@���_I��� $`�@���x^I����@���`UI���[@���hLI���`�@���KI��� 8�@���8I���6?��� JI���?���oH��� y5?��� H����I?���`<H���?����I���`9m?��� I����P?���H����?����H����N?���H���g?���I���@A?����!I����j?���@$I��� v?���+I���`Œ?���QI���d?���`TfI���`:L?��� 8oI���z?���@{I���@?���@:I��� �����I���;+���I���nȿ���`I��� ٿ���I���@s��� I���Y��� I��� hE���I��� I���@jI���`h���`I���z���@LI���� ���`I���؂���oJ������J���@ϊ���@J��� ���J���@B���@3[J���`��� YJ������@|#J���S���pJ��� ����J������J���5���`$�J���`���I���y��� I���2���`I����������I��� ���I������`I�������zI���K~���@tI����0���hI����a ���fI��� ���iI������ hI���@0���@VI���?���UI���H���[I���`އ���cI���-���,iI���_���@ I��� G��� I���`+���I��������rI���@ϊ���&I���`u����I������I���@���`*I����Y���ܶI��� ���5I��� 7���`TI���|����AI���0u��� I���`h����kI��� >����`I���@���I���y���4I������ࣸI���%���dI���^M��� I��� ���~I���� 6����I��� G���˅I���@���{I������ kI��� ���IzI������`ƂI�������@yI���W�����kI���.����`lI��� ƒ����`dI����p����`liI���g���_I���޼���VI���`���@|[I������VI��������BNI���X���@NI������3I���^M���V<I���@Q���9I���@0���].I���@%��� I���`���@LI��� ���`I���`c���@ H���`���`H��� ��� H������'H��� ����`lH���@����QH������� H���8���QH���`ff���@H�������H���r���-H���b���@|H��� !C���H���Q��� ޵H���@ZQ�����BH���@���@H��� \����ļH������`H���`_���ٹH���@%����H��������H��� ���zH���xV��� ?YH���@���RH���j���LH���`j��� DH���`a���d8H���^M���`f6H���@%���`=H��� @���W;H��� ��� 0H������ IH���`j��� H���""��� z=H��� ���d@H����UU���`T>H��� -���@":H��� ���`<3H������ t*H������@|#H������(H���,���#H������=H���@33���@3H���`u����kH����r���H���j���`}G������G���ף���G���Tv��� G���`2���xG���A���� G��� 9����G����K���G������ܾG��� ��� QG���Q���\G���E#���G������ੳG���@j���DG���@���@G���@���@{G���`���`ףG���7���G���@���G������,G������G���@ d����œG������@G���n��� G���``��� G������PG���@��� G����h���4zG���`ϊ��� xG��� ���@vG������hG���@���hG������cG������`G��� :m���<[G���8���WG���@J���@NG���|����0NG��� ���RG���@_��� 1UG���`A���dXG������WSG���g��� JG���Tv��� HG���+���`KG��� @���<CG���K~���L-G���.���U-G����VU���@u)G���i��� (G����S���`S'G������!G������G���E#����G���`y��� G���@;L���G����_���>!G��� ���'G����W����G���@��� G��� N<���G����S���z G���@33���`l G����;L���`N�G���S���F���`���F���A���-F��� ���F��� ���uF���@Tv���F���h$���`F���`q���<F���@%���F���@7���@F���= ���F����p^���F����G���F���|����F���@ ���`TF��� d���hF��� d��� F���g���üF���-���F���`���,F���@(}���`޽F�������ǹF���[���F����p^���F��� Y���ɧF���g���`fF���`���LF���`u���@F������WF���`��� F���@���@dF��� ���F������`[F�������ݞF������`<F������F���""���ۇF��� ���|F���F��� pF����s����lF������\wF���O���@vF���@B���`qF������ bjF���A���@jkF���6���hF���O���%gF���9���@"bF���xV����ZF������@gF���z��� UF������@|SF��� \����LF������VTF���@��� EF���ww���@KF���`o��� ?AF������ \?F������� 9FF���`>����@?F��� f����GF����ų����@:MF��� x���^F���`���`WF��� :���DTF���L]���`ZF���`���ZF���`I@���`OF���h$���>F���d(���U5F����yV���.F���� ����H1F���%?��� AF���`+����?F���_���@)TF���G����GF���`J���EF��� p���@dPF��� ƒ���RF���V���\WF���L���WF���`����OF���`E���PF���@ϊ���� eF���@ ����dF��� J ���`�`F����_ ���uaF��� ���QF���X ���HF���b��� z5F���@tZ���].F����a���`&F���*;���` F���O����F���@���F����a��� F���ҧ���F���,���`lF����_��� F������ !F����[���(F��� q=��� $F��� |s����F������F���۟���| F������`F������4E���%����qE���`l��� E������`E���@���`E�������`ZE���Oz����E���$��� yE���D���;E��� ��� ̽E���ff���tE������E������ ̽E���`<���@)E���@(���ѨE���`���nE���@ ���d@E���@����3E����a ���@#E���@��� E���'���!E����Ԇ���E���Xr���,D���`߼���D���A���`ZE���`���D������� D���?���KD���*;���4D���|s���KD����+���D��� ��� ̥D���`lA��� ƊD������lD���@��� PjD������d@D���d���`C������ QC���ɯ����C����#���`C���@ ��� ̭C���Oz ���C���� ���C���  ���`C���� ���AC��� ���C���`���B���`:m���@cB������4B����H!���`TB������B��� !���`ţB��� Y���@ΛB����(}���B���@T���xB���@(���`jB������EB���@����OCB���@8o���B���@e���A���5��� hA���~q���A���Q���A���[��� ͔A���%��� zA�������ˎA��� Щ���A��� ���<A�������ĄA��� u����tA�������`mA�������jA��� u���`TfA���vX���`jA��� >���fA���Ȑ���lA����ޝ���qA���B���@)lA���@W���dhA���@���`mA���% ���vA��� ���qA���n? ���`T~A���x ���<A��� !���KA���@�`"���A���"��� aA����p^#���`TA���@M#���A���@-#���A���@33#���`TA���#a#���\A���@Sw#���A���@*;#���@A���@>#��� JA���@A#���A����#���DB��� p$��� b2B����)$���E;B���� %���mB���tz%���B���v%���B���z%���#B���%���<B���`w%���໓B��� b%���`1B���̬%���ӆB���%���^B���`2&���B���&���໣B��� &���`ZB���`$&��� B���$&��� aB���@Gb&���B���[p&���=B���&���`lB����&���B��� E&���`*B���@&���`B���$`&���4B���0&���`B��� \&���B���Q&���FB����&����YB��� &���� B��� &���4B���`r&����B����'���B���,(����B��� +(��� C���)���=C���` *���DC���*��� z=C���])���`DC��� v)���YC��� 8)���\C����\)���`gC���ࣰ)���`mC���`C)���`IpC��� c)���@uC����{)���=jC���)��� y^C���`r)���`bC���)���nC���K*���3sC����<*���@gC���O*��� ?yC���"*���@3{C���`*���C���`̭*���3C���@G"+����C����w*��� C���+��� y~C����+���|C����ף+��� &C��� +���uC���m+���C���+��� 'C���+���@~C��� ¶+���4C���+��� C����+���`C��� +���~C���`+���o~C���%,���,C����-,���\C����;,���`zC��� !,����|C���+���xC��� +���@uC���@+���vC���,���C���-���`[C���.���xC���U5/��� JoC���/���@3vC����0���`wC���` 0���@C���ߌ0���C���1��� C���1���C���1��� C���`1���C����61���`C���@:=2���C���@2��� C���3���XC��� m3���`C���@Ĥ3����ZD���3��� D���3���@|D���23���D���@4���D��� I4���`T&D���;4���@A/D���<4���.D����ZQ4���@K&D���Q4���~!D���S4���4*D��� t4��� PD���U4���SD���4���"bD���4���lD���,5���yD���y55���@|{D���F5���`{D���(M5���nD���@;|5����D���*5����HD���@q5���h|D���5���D����6���D���`C%6���uD���@M6���`D����6���D���6���LD��� 6���DE��� 6���E��� 6���� 5E���@6���^E���@c6���QE���`6���tE���6��� E���`6���E���@6���`}E��� ?6���@E���@6���E���U6��� E���6���E��� 7�����F���`7��� [�F��� 87����E��� 7���E���7���`E���@7���E���6����F���6���F��� \6��� F���#7����F���@ 7���F���n6���@d(F��� �7���-F���`6��� &'F��� 6���`}*F���`s6����/F���6���4F����76���8F���7��� sSF��� a 7���WF���`7���`ZF���97���TF���`77��� \WF���@?7���LF���N;7��� \GF��� a;7���dHF���`C7���CF��� C7���@F���ML7���`]F���Z7���DdF���@`7��� 2tF���W7���`T~F���-h7��� ޅF����j7���FF���ww7���F���`7���F����֔7���`F���@G7���ӶF���7���F���`7���VF���W7���F��� 7����/F����)7���F��� h7���G���!7���G��� 7���@cG���7���#G���8��� [(G���8���"G���@^7��� &'G���7���0G���K7���,9G���}7���`/G���L7���m0G���8����7G���y8����kG���`88����~G��� R8���G���i8���|G���$8��� !G��� 98���&G���@8���G��� 9���`&G���U 9��� aH���9���H���`9���G���J9���G���9���`G���@A79���@b�H���779���H��� `9����H����0v9���H����s9���eH���`j9��� zH���@^M9���$H���{T9���)H���@\9���*H���;9���`S/H����H9���`$0H���@pN9���7H����>9���7H���R9���?H���U9���4H���@k9���7H���mp9���HH���w9��� YH���Pi9���_H���`r\9���`SWH���z9����]H���+z9����SH���y9���OJH���9���`S?H���@9���v0H���@9���.H����09���JH����)9���]H����9��� bbH���`9���GH���9���`}JH���.:��� WH���&>:���^H����f7:��� `H���`3:���`cH����gF:���MH���`Ip:��� QH���H:����WH���ɯ:��� UH����:��� IH���`:���PH����:����IH��� ;����NH���*;���`lIH���`*;���AH���%;��� =H����*;���@H���`8;��� FH���0;���OH���>;���NH���KN;��� GH���W;���PH���p;���`SH���{;���@uIH��� ;��� +RH����;���GIH��� h;���OH���`r;���LH��� <����_H����o<���`cH���L}<���gH��� p<���LeH����Za<���@jH���� V<����oH���vX<���mH���z<���@3cH���అ<���H���<���ôH���$�=���@H���@_=��� H���@@=���4I���!3>���`0I���`l>����VI���>����I��� \?��� I���@?���EI���?���J���`B@���X J���`Z@���J���?��� J���?���@| J���`?���`SJ���?���@I����?����I����6?���I����?���I��� i?���I����?���`I���M?����kI���4?���@|I���?���`TI���`}?��� II����f?���I���@G?���ɗI���a?��� I��� $?���I���?���ڀI���`?���PI���@c?��� C}I���"?���xI���� ?��� ~I���M ?���zI����>��� |I���{>����)tI���`C>��� ^I���@;>���@YI���+>���xVI���>���`\I���@q]>���@VI����)\>���`SI����7p>���`LI��� {>���HI���� u>���`DI���Q>��� FI���[@>���"RI���`0>���nWI���;>���@SI����6A>���`0VI���J>���^I���J>���.gI���2T>���mI���@P>���`TvI���U>���vI���p>���I���`a>���5I��� bJ>���`I���B>���]I���0>���໛I���%>���@I���@c >����I���>��� I���9>���UI���J_>���`I���`W>���I���Z>���`I���@e>���I���xf>��� \I��� t>���`I���>���I���>���I���`>���ɧI���@@>��� I���`>���`I��� >����I���>���@uI���`>����BI��� >��� tI���2>���@LI���`>���UI��� ?���I��� h?��� I���?����ZI���`(?��� I����B?���@I���O?����I���+j?���I����?��� J��� ?��� J��� ?��� J���@ڐ?���` J���?���`J���?���` J���?���VJ��� 8?���J���S?��� J���?���@uJ���?����J���@?��� J���?��� J���@���`~J���� @���J��� @���` J���y@��� J���� @���@|J���$@��� J���5 @��� J���U@���NJ��� Q@���%'J��� m0@���:J���4b@���SJ���3@��� yJ���@���|J���@���J���@���J��� 8@���`J���@@����J����Y@���`$J����;@���`J���@���J���@@���@KJ���`_@����)J���\@���J���AU@����J���@(M@���`<J��� I@���J����.@���J���F@����J���@����J���~@����)J���?���K�����?��� K��� b?���`;K����)?��� 2<K����֔?���@EKK���xv?���DtK���m`?���`K���`CE?��� [K����S?���/K���>?���0K����>���`K���>>���K���>>���4K���#>���K����6>���`K���4?���`�L���� ?����L���>���@K���@;>���?�L���@>���`L���`C>����#L���`e>���PL���`sK>��� JOL��� @>���eL��� >����|L���@>���,L���>���`L��� \/>���@EL���K>>���iL���J>��� L���xF>���@L���@@>���L���4>��� L��� .>���ML���)>���L����=����L���=��� L����=���&L���D=���@LL���ij=��� [XL���U=���@"RL���@42=���,IL���@=���5L���o=���3L���`f<����d(L���@<���` %L��� <���L����S<���aL���<��� bK���@v<���`<K��� ~a<���K���`<[<���K���`<[<���K����h<����K���@dX<���K���pM<���K���`?<���K���Q8<����dK���V<���K���>;���K���`;���`$K���`;���K���;���ໃK���;��� ƂK���y;���`}K��� b;����ZK��� ;���K���@;���tK���;���.gK���`;���@d`K���;���4JK���`r;���DK���`};���Y9K���w;���@":K���ui;���U-K��� 2t;��� D,K���`Bf;���`e'K���n;���#K���`l;���K����X;���yK�����@;���K����J;��� K����H;��� [J���@;��� aJ���+;����lJ����:���`J���:���`J���V:���` J���@:���`<J���M\:���`<J���WC:����J���!3:���J���`9���J����9��� J���@9���`J����9���J���@9���K���9���X K���,9��� K����69��� D K���9���K���9����K���ؒ9���K���`9���#K����9���0K����ד9���6K��� \9���`MLK���*9��� OK���$p9��� 6K��� #9���:K��� 9���q3K���8���'K���8��� t*K���&~8��� #K���Pi8���@d K����T8���(K���<8��� +*K���%8���K����_ 8���6K���7���QK����7��� \wK���7��� +K���8��� ƲK���`7���@K���m7���K���@j7���@K���ј7��� [K���`7���`xK��� Q7����|K���Q87���K���6���K���g6���K���`6��� nK��� 1e6��� K����H6���@K���L6���L���F6���@#1L����6���2L���#6���`@>L���)6���QL���EC6����YL���@66���@cL���@6��� jL����`L6���@pL���H6���oL���>6��� L��� ;6��� L���@A76���@L���36��� +L���J/6��� L���M,6���`L���@c6���L���`l!6���`L���6���L��� 15��� tL���5���`+L���5���@"L���`Ƃ5���L���T5���` L���G5���`NL���W35���L���4���L���4���@L���4����BL���D4����L���N4��� L���4����L���@4����LL���@ 4����L���4���L���p4��� M���_4���� M���C4���FM���`G4���M���`<4����SM����|34���>M���`:+4����L���3���M����3���@L���@3���@4L����` 3���L���`k2��� L��� 2����L���'=2���ܾL���=2���L���h42���L���-2����dL��� 2$2����L���`2���`<L��� 1��� L���@d1���`IL���`1���L��� R~1���`L���p1��� M���Z1���2M���@?1��� s;M���x0���;M����|0���q,M���`l0���-M���p0���)M���wG0���`~1M���F0����d8M���{T0���`M���Q0���M���J0����N���WC0���N���` .���,IN���1.���@#1N���/.��� ^7N��� ֢-���@L-N��� V4-���V,N����w,����l9N���`,���=N����M,���,1N��� +���`=N���t+���eN���r[+���N���+���ࣈN����}*���N���` +���`NN���@*���@N���`+���N����+���N���+���N���@^ +���N���+���N���`*���@4O����}*���O���@K*��� 2O���H*���<O���h$*���JO��� *���@XO����)���cO���*��� O��� )��� O��� 9N)���`~O���@E)���O���h)���O����7(���`$O���(���O���)���O���)��� :P����`(���@P���t(���P���࣐(���@ P���`x(���@C!P���{(���@+P����TV(���?,P���@33(���`%/P���]N(���3P���(���@3?P��� h(���@AP���'���?P����}'���GP���Ec'���JP��� '���^MP���o'�����LP���L'���NP���'����2TP���O&���VP���&����TP���`&���`XP���`/&���@YP��� T&����*SP���@%���TP���ij%���@4ZP��� %���h\P���`%���YP��� E$����YYP���d$��� TP���x$��� }RP��� d$����ZUP���@^ $����JSP���#���qXP���Ce#���` \P����]#����{dP���@;#���@<gP���#��� 1mP���$#���@pP���=#��� rP���v#���`sP���@#���tP���E#���݁P����(#���ɃP���#���ͣP����#���ݱP���@j$���`P���W$����8P���"$��� 'P���P8%���P���@{c%���P����S%����Q���~Q%��� Q���i%��� Q���`%���@%Q��� 5&���0Q���`G&���@42Q����L=&����)0Q����&���7Q���?&���vDQ���%���PdQ����%���w{Q���2%���Q���%���>Q��� &��� :Q��� +&���Q����L%���qQ��� &���QQ���%����2Q���@Ϫ#��� Q���^#���aQ���a#���/Q���@T6#����rQ���##���@+Q���@d"���gQ����I"���^Q���/#��� Q���@m#���`%Q���&#����Q��� $��� R���$���@ R���#��� R����P#����ZR���@K~#���@R���\#��� nR���@S"����%R����@"���@#MR���"���o>R����8O"����<R���*"���=R���w!���@JR���k!���@ SR���^M!��� VR��� ��� "bR���` ���iR����@ ���@qR���@2����rR���|����mR���p}��� VlR���@<���ymR���@���@UuR��� ���R���@#���|R��������B~R���"b���yR���@����mR����F���@mR���@#���@KsR��� x���MpR���z���[R���?���OR���E���HLR��� 6���GR���`���JR�������MR������@NR��� .����<R����A���:R���=J���9R��� {���:R������r/R���`4����(R���@<��� "R�������kR���ੋ����R���` ���R��� ���Q���@����2Q���`C���@Q���`c ����Q���p���@Q�������Q���ш���Q���#����Q���`C���Q���]n���HQ���v����JQ���`]����BQ���@���@mQ���_,���pQ���H���Q���x���ͫQ��� Y����Q��� uy��� Q���@v���@uQ������Q���ʎ���àQ���,���Q���ӆ���Q��� ����ZQ����M���@ Q��� L���Q��� ���Q�������BQ���-X����9~Q���@T6���|Q��������;tQ���`Ce ���lQ�������dQ������@#]Q��� �����\Q���@���XQ���@���_XQ������M\Q���b���@]Q����b����2dQ���= ���@gQ���|����dQ���@_���gQ����i$���i{Q���@ӿ���ඃQ���(Ŀ����Q��� h$?���ӂQ���?����2|Q��� ?���ikQ���t?����!gQ���c?���@`Q���@>?���]Q���Z?���hTQ���@?����fMQ���?����HQ���`(?���` HQ���?��� KQ���@l?���@IQ���?���LQ���i?���_LQ���Sv?���QQ����d?���@E[Q���`o?��� \Q���?���umQ����?���@"nQ���`o?���uQ���?����uQ���@r?����JoQ���`?����c]Q���@*?���-XQ��� }?���` Q��� /?���@Q����P?���z Q����@����Q��� ?����Q���`a?���P���F?��� "P��� >?���@P���@�@����*P���&@���uP����@��� IP���R?����P���"?���@cP���@*?����P���@?���P���͛?���QP��� 4?���HP���r?���&~P���t?���.wP���:?����mP���?����cP����W?���@`P���{?���@`P���"?����ZeP���`:?��� dP���J~?��� :aP���?���@[P���@_?���XP���/?���NSP���@?��� LP���`Œ?���@KP����?���HP���?���OFP����S?���@AP���g$?����24P���@?��� 0P���?���,P���U4?���@~!P������?���P���@.?���@fP���$?���P���8?����|P���@?���@P����?���VP���Z?���P���g?���P���?��� DO���y?��� O���6?���WO����@���OO��� 6@���˭O���c(@���ӮO����_@���`TO���`g@���@]P���@���@ P���`N@���O���~@�����P���j@��� P����@���P����v @���@ P���n^ @���� P��� G @����P���ͫ@���+P���@?H@���@E3P���@���@3P���@��� :1P���(@���Z,P���`@���)P��� G@���@C%P���|@���P���@����|P���d@���P����)@���O���~@���zO���@@��� O���`@���`$O���`(@��� tO���@���/O���@���O���C@���HO���Œ@���]~O���� @�����pO���r{ @���`<cO��� @���&^O���n^ @���`]O���P @��� aO���@@���`O���@����]O���&@���^EO���@*@���DO���k@���`<3O����O@���O��� p}@���O���@@g@���O���@���=N���s@��� nN���m@���N��� %@���N��� 51@���N���@Ô@��� tN���@7@���ͫN���@���N���1@���ۧN���@@���`N���1@���~N��� @���`%wN��� V@���GqN���@���@vhN���;@���@"RN���`l@���4JN��� @���TN���@���]N���3@�����:�������Ӆ\@���@q@��� \@���S6@���$������� ������`V\@��� @���`\@���e@��� \@���@&@��� \@���Q@���\@���@>@���O\@����@���\@���l@����\@���E@���\@���Zp@���@\@���@@���`V\@��� @��� \@���`@���\@����S@���`T\@���� 4@���DZ\@���!@���ϵ\@���@���@\@���`)@����\@���@7o@��� n\@���@���E\@��� @���@\@���@���@\@���n@���@ \@���@q@����v\@���@6@���@\@��� @���ൔ\@����@���\@���`@���`\@���` @����Ӆ\@���\@���a\@���zT@��� \@����~@���@\@���@��� l\@���S6@���`\@���%@���@Ͼ\@���@@��� \@���`@�����8������@\6@��� D@���;<@���F@�������������F;@���F@���aJ;@���D F@���ef;@���F@��� ;@���@pF@���;@���{E@���@;@����E@���;;@����F@����;@���KE@��� I;@���E@����9<@����E@���v<@���E@���9<@���VE@����<@���E@���;<@���E@���<@���@E@���`x<@���E@���a<@���E@���?(<@���E@���<@���E@���` <@���E@���@-;@���E@���;@��� gE@���`0;@���uE@����;@���ZE@���;@���[E@���;@���VE@���;@���PE@���;@���@GE@���;@���GE@���@Ws;@���=E@��� ;@����w7E@���@ ;@���9E@���@;@���5E@���`;@���0E@���@;@���*E@��� ,;@���@'E@���@;@��� >!E@����<@���E@���@W<@���D@���@;@���@?�E@���@X;@��� D@���h;@���`D@���;@���1D@���\>;@���� E@����3;@���E@���@;@��� E@���:@���`qD@���:@���`D@���:@���@XD@��� `:@����5D@���`0U:@���cD@��� \:@���`D@���9:@���ID@���:@��� D@����G:@���@D@���@:@���}D@���`2:@���>D@����":@���KD@���J9@���@D@���@.9@���`D@���@Wc9@���D@���@K=9@��� D@���59@���D@��� 8@���D@���`8@��� gD@���@8@���D@����8@���D@���8@��� >D@���@']8@���`D@���N8@���8D@���>8@���`D@���I/8@���!D@���?(8@���BD@���8@���@D@���28@���@ͻD@����7@���D@��� 7@���`D@���`7@���D@���G7@���D@���-7@���@PD@���`6@���@D@��� 6@���|D@����M6@���D@��� 7@���:D@���D7@���`D@���6@���D@����6@���`E@���@6@���9 E@���ch6@���`#E@���]6@��� (E@���@^6@���U)E@����6@���`3E@���`܎6@���T=E@���@(|6@��� %GE@��� Hp6@��� IE@���Av6@���eE@���@p6@���hE@����6@����FrE@���6@����qE@���J6@���E@���7@���@E@���@6@��� E@��� 6@���E@���@6@���1E@���}6@���E@���@\6@��� E@���j6@���`�F@��� \6@��� F@���`ݝ6@����F@���`"6@���F@���@6@���~F@���@ 7@��� F@���� 7@���@@F@����6@���F@���@-6@����E@���6@���`E@���6@���9E@���H7@���E@���i7@���E@��� 7@����E@����TV8@��� E@���l8@���tE@���Z�9@���E@���9@���uE@���99@���`E@���\9@��� E@���9@���E@���9@���E@���:@���E@���z:@���SF@���^:@���}F@���F;@���F@�����������'����"@���f6@���*.@����������������l@+@���@e���O+@���;���`}q+@���W���`F+@������ 1,@���@?���`,@��������M,@��� 9���� H`,@����~���@3,@���s��� H�-@���`+���/u-@���@.���-@���@33���*.@���hܿ���*.@���` ؿ���.@���Ͽ��� '.@���7?���-@����L]?���`f-@���@%?���-@���?����#-@���UU?���@ -@���??���,@���?���@!,@����ף?���,,@���?���^+@���@?���l`+@���`??���I+@���Z?���`#+@���@'?���*@���@z?��� +*@����?���?*@���/?���۾*@��� ?���@J*@���@?���@-*@��� $?���@*@��� @?���`B)@����X?��� 7)@���@}?����Tv)@���`�@���@{s)@���M@��� B)@���`@���(@���I�@���@(@���@ww�@���(@���f6@���`'@��� V@���`'@���Ȃ@���['@���@'�@����&@���^q?���n&@���A?��� s&@���$?���@&@������?���`&@����)\?����#&@��� ?��� 1&@���L]?���&@���@Tv?���&@���?���&@���?���WS&@���?���`G&@���?���@&@��� S?��� )&@���?���`%@���[?���@%@����K~?���@J%@����""?���%@���8?���G&@��� Rÿ���`NG&@���Aҿ���TU&@���&ѿ���`B&@���`ֿ���E#&@���qؿ���7&@���`Wۿ��� 1&@���I߿��� %%@���<+���@%@������%@���@G����%@���H���`%@�������`#�&@���@����&@���@ ���ປ%@���u���`B%@������$@���&���T$@��� ���@$@���@ ��� $@���@_����$@������#@����[���x#@���~���"@�������"@����2T����"@���`����^M#@������t#@���@B���2s#@�������#@���`o ����#@���@e ���#@���  ���3#@���l ���R#@���$` ���9#@���`����M#@��� )���@P#@����|���@#@���&���ka#@����K>���@X2#@�������=*#@���`���P#@��� c ����O#@������:l#@���!���J~#@���@I���_#@���h���@Yq#@��� ���Y#@���� ����$#@������+y#@���@���#@���p���#@������@q#@������@#@������#@��� ���r$@������@$@���@3���1$@���` ���$@���=J���+$@��� C��� +$@���'���$@������J%@���W���n~%@������� %@������&@���V���@'&@���`4R���:&@���0���`I&@����[0����i&@��������L}&@�������=&@���``���x&@���`��� ''@����d(���;'@���@ ���'@���PY����'@���`���'@���hd���'@������'@���ܾ���`(@��� #���l�(@���``���`# (@���R���(@����d(���`G(@���G���f(@��� ���(@��� ���@-(@����͌���I(@������n(@���v���)@�������P)@���$����s)@������n)@���@2���@d)@���@}��� k)@��� SW���P8*@�����@��� 1U*@���$��� \*@���@,���x*@������� ߜ*@������ +*@���@���@!+@���Q8���`*@���`���@;*@���F���*@���UU���+*@����2T ���[*@���� ��� V*@���b ���e*@���h ���@<*@����) ���@{*@���@<+ ����@g+@��� ���p+@��� ���[+@���`���@XR+@���`Ce���9+@������l@+@�����H������ <@������>@���`Ce���F����������`pl=@���`B���`b=@���@ޝ���;=@���z���7?=@���k ���+7=@���@ ���@7=@���`f ���5=@��� ���==@������8=@���@<+��� &=@���� ���=@���@n��� <@���|���<@���(���.=@������=@���x��� #=@���@���1T=@���:���@Y=@��� v����#a=@��� ��� q=@���@]��� =@������==@��� 8g���j=@���@.���A=@������g=@������j=@��� ���=@���p���>@������3>@���৵���`>@���y���>@����a ���!>@���f���`R'>@���`q����9>@���@z���`K>@��� 9���@Z>@���࡯���,[>@���`w���a>@���`Ce���@>@��� 1���mo>@���$���`�o>@��� f���9}>@���@]����>@���t2��� u>@������j>@���`C���3|>@��� o����>@���@&��� &>@������>@��� ����>@���`���>@���`B ���>@��� 9 ���@z>@���`ff ����>@��� ����ɟ>@��� ���>@��� ���>@��� ��� s>@���Mb ���f>@���I����U>@���~1��� ~A>@���v���`05>@��� ����>@������`` >@���`M���=@���f���=@���p��� =@�������A=@������3=@���`���`pl=@���`B����� ������;+7@���[I@����z^@@���fL@������������*<@���=L@�����P<@���`fL@���Z<@���HL@���@3c<@����M L@��� S<@���z L@���f<@��� L@���`ó<@��� L@���@<@���FK@���<@���K@���<@���<K@���4=@���2L@����i=@���@K@���v=@���K@���*h=@���K@���[=@���� K@���b=@���K@���@p~=@���-K@��� †=@���K@���H=@���7K@���=@����)K@���=@����=K@���=@���GK@��� =@���K@���`>@����]K@���`#>@��� K@���9>@���`K@���`L>@���`K@����]}>@���`fK@���~>@���K@���P>@���K@���>@��� 8K@���஥>@���K@��� >@���K@��� >@���`K@���|>@����BK@��� >@���`2K@��� \>@���@K@���`)>@��� K@���|>@����K@��� >@���`VK@���>@��� ǺK@���|>@���K@���>@���BK@��� H>@���K@���>@���QK@����>@��� K@����4?@���WK@��� >@��� LK@���`?@���K@��� ?@���jK@���>@��� CK@���@>@���`�K@���`>@���|K@���z>@���xK@���Q>@���pK@���>@���pmK@��� >@����fK@���G?@����[K@���R?@���@{SK@���o/?@���3RK@���/?@����NK@��� !?@���` IK@���?@���@K@����o!?@���B=K@��� 1?@���z=K@���2?@���:K@���];?@��� u:K@����C?@���`1K@���O?@����,K@���O?@���@%K@���@T?@���`fK@���P?@���WK@���?@���K@���෯?@���`2 K@���?@���8 K@���?@����K@���?@���@>K@����?@��� H�K@���2?@���uJ@���`?@���@J@����4?@���@J@��� S?@��� J@���`R@@���J@���`[@@���zJ@���)*@@���J@���@>0@@���J@����;@@���J@���`[A@@���@J@���5@@���@J@���8@@����4J@���` I@@��� J@���zL@@���`ܾJ@���@U@@���@J@���2T@@���J@����z^@@���`J@���`B^@@����$J@���\@@��� J@���R^@@����׫J@����]M@@���J@��� N@@��� lJ@���J@@���HJ@���@3;@@���`vJ@����M<@@���J@���@?@@���`J@���7@@���aJ@���`2-@@���HJ@���`B&@@��� J@���@@����J@��� @@���@J@����@@���@J@���@.@@���`)J@���@@���J@���;?@���<J@��� ?@���`vJ@���?@���@J@���?@���ۘJ@���?@���@J@���`?@���`J@����)l?@���@J@���`2e?@��� 8J@���[`?@���@J@��� b?@���J@���`S?@���J@���`[Q?@���J@���2D?@���͂J@����=[?@���`2}J@���� b?@���uJ@��� Qj?@��� QrJ@����y?@���nJ@���@r?@���mJ@���=?@����4iJ@���@?@����fJ@���Q?@����z^J@���?@���YJ@�����?@���QXJ@���f?@��� LJ@���>?@����FJ@���@?@���FJ@���e?@��� DJ@��� ?@���BJ@���?@���@>J@���� ?@��� 3J@���?@����2J@����4?@���o/J@����2?@���(J@���@?@���"J@���?@���`!J@���`ó?@����fJ@���2?@���kJ@���Q?@���8J@���?@���@ J@���\?@����J@���M?@��� J@���`G?@���`�J@���`o@?@���@J@��� e)?@��� J@���>@���a J@���>@���-J@���`>@��� LJ@���@p>@��� CJ@���>@���@3J@���`>@����J@���@>@���I@���>@���I@���@>@��� I@���>@����I@���4>@���@I@����>@���uI@��� >@���`I@���*>@���I@���>@���@I@����F>@��� I@���@ؠ>@��� I@��� >@���GI@���>@�����I@���z>@���I@����>@���I@���அ>@��� I@���>@���I@���� >@���I@���@ؐ>@���I@����>@���I@���>@���@#I@���@>@��� I@���>@���BI@����ä>@���`vI@���@ġ>@���zI@���@>@���@I@���� >@���I@���Z>@���I@���>@���[I@���z>@���`I@���u>@����I@���@Gb>@���`RI@���U>@����)I@���@Y>@���ܭI@��� Y>@���I@���(->@���I@���=@���`BI@��� =@���I@��� S=@���@I@���`=@��� ҷI@���Z=@����vI@���=@���HI@���q=@����ܿI@���'=@���`I@���*=@��� I@���@=@���I@���{=@���`I@��� h=@����I@���@Z=@�����I@���`'P=@���GI@���*H=@����I@����q<=@����I@���`4@=@����I@���H>=@���I@���z4=@����I@���@/=@���\I@��� S=@���I@���= =@��� I@���>=@��� CI@����<@���I@���`<@���@I@���e<@����I@��� <@��� I@����<@����]I@���<@���I@����<@���ܵI@���<@���I@���`�<@����$I@��� <@���׹I@��� <@���I@���y<@���3I@���[<@���I@��� V<@���I@���B<@��� I@���3B<@���I@��� H0<@��� QI@���`"<@���@GI@���<@���QI@���@;@���I@���{;@��� \I@���`;@����fI@���;@���@WI@���G;@���I@���4;@���I@���@ͫ;@���I@����;@���@>I@���@>;@����I@���@3;@���I@���`x;@��� I@���r;@���I@���G;@���I@���L;@���`I@���@33;@���`I@���@4;@���I@����.;@���`I@���y;@���{I@���:@��� I@���R:@���I@���� u:@��� I@���`op:@���` I@���o:@���I@���H.:@���`BI@���`:@���pI@���� 9@����I@���9@���7I@���� 9@���@I@���9@���,I@����q\9@���I@���>9@���I@��� -9@���I@����8@���I@��� e8@���`I@���`4P8@���GI@���G8@���@pI@��� 8@���@I@���27@���@I@��� 7@���aI@���7@��� I@���ପ7@��� I@���@͛7@���@I@���f7@���I@���7@���I@����7@���I@���ˍ7@����wI@���Z7@��� I@���7@���I@���7@��� UJ@��� ,7@���J@���`_|7@���J@���;K7@���`J@����67@���J@���;+7@��� $J@���@Xb7@���`@J@���H7@���JJ@����F7@����VJ@���7@���`)[J@���[7@���@qJ@���@7@��� J@����v7@���J@���g7@���uJ@���7@���<J@���F7@��� J@���`7@���@J@���Q7@��� J@���`7@���zJ@���7@���J@���f7@���J@��� \7@���WJ@����q7@���-J@���8@�����J@��� ,8@����J@����=;8@��� J@���G8@���`)J@���U8@��� J@��� c8@���J@��� 8@���`�J@���@8@���7�K@��� Q8@��� J@���� 8@���J@���18@���@gK@���8@��� K@���8@���K@���8@���3K@��� 8@����MK@��� ?9@���K@����h9@���=K@���@r)9@���K@���@59@���pK@���79@���!K@���Fd9@���� K@���s9@���\&K@��� (~9@��� 'K@���`Ó9@��� K@���@9@����K@���<9@���K@����49@���oK@���Έ9@���K@���P9@���kK@���F9@���@K@���` 9@���K@����9@���K@����9@���K@���`29@���$K@���)9@���`2%K@���ն9@���a*K@����q9@����'K@����)9@���*K@���9@���`.K@��� 9@���6K@���9@���(=K@���@9@���=BK@���9@���@#JK@���)9@���`VUK@���˿9@���8]K@���`9@���� eK@���9@���-hK@���`9@����foK@���9@��� tK@��� 9@���xK@���@*):@���}K@���*8:@����׃K@���?:@���K@���@@:@��� ҏK@���`H:@����K@���Fs:@���K@���P{:@����דK@��� :@��� K@���F:@���=K@���F:@��� lK@���`):@���K@���:@���K@����z:@���K@���:@��� K@���S:@����$K@���`:@���aK@����:@���K@���@t:@����K@���ࣀ:@���K@��� :@���ѸK@���@đ:@���@K@��� :@���kK@���`o:@���K@���4:@���K@��� e:@���WK@����̾:@���K@���:@���K@���@y:@��� K@���p:@���K@��� ';@���VK@���@>H;@����K@����Y;@���K@���`ff;@���@K@���`;@����]K@��� ;@���K@���஥;@��� LK@���;@���@K@���;@����=L@���@;@���eL@��� ;@���L@���<@���uL@���H<@���fL@���*<@���=L@�����������`}Y@����$@���Z@���h-@����������������&Z@����$@���Y@���@$@���Y@���$@����Z@���$@���pZ@���$@���`Z@���$@���&Z@����$@����FZ@����,@��� Z@���,@��� Z@��� -@���@Z@���2-@���@,Z@���,@���@Z@���`,@���Z@�����,@����׿Z@���N,@���6Z@���,@���@Z@���@^,@���Z@���-@���@Z@����}2-@����Z@���6-@���@ Z@���`R-@����Z@����-@���Z@��� c-@����Z@���h-@���EZ@���@'-@���Z@���,@���`Z@���,@���Z@���,@���@Z@����Z,@��� Z@���`l,@��� Z@���`,@���ZZ@���@*+@����Z@���ਗ+@���?Z@���@+@���Z@����i*@��� Z@���*@���Z@����)@���@UZ@���)@���OZ@������)@��� !Z@���x(@��� 6Z@��� ف(@���hZ@���`(@���Z@��� 9(@���@Z@���;+(@��� Z@���!(@���@Z@����'@���Z@���'@���Z@����}'@���)Z@���)'@���@Z@���'@��� XZ@���@AT'@����)Z@���'@���Z@����'@���}Z@���J'@���tZ@���`='@���`]tZ@���`1'@���yZ@���f&@����xZ@���&@��� wZ@���&@���DŽZ@��� 6&@���.Z@���`0&@���Z@���@{%@���Z@����%@���TZ@����%@���Z@���%@���G}Z@���%@���@{Z@���Ϊ%@���`wZ@��� %@���rZ@���`&@����pZ@��� &@���]Z@���%@���@[Z@����%@���VZ@���`}%@���FZ@���=%@���`BZ@����%@���?DZ@���`%@���aFZ@���`s%@����8Z@���z%@���4Z@���= %@���O&Z@���`}%@���Z@���Q$@���Z@��� $@��� Z@���@!"%@���Y Z@���%@��� Y@���C$%@���@Y@���b%@���Y@���%@���@Y@���� %@���`;Y@���&$@��� ZY@��� N$@���Y@���&>%@���Y@����Tv%@���@Y@���`){%@���3Y@���r%@���Y@���%@����Y@���ZP&@�����Y@��� T&@���Y@��� s&@���Y@���`%@���Y@���%@���Y@��� %%@��� Y@���@%@���Y@���@PY&@���Y@���Ȑ&@���YY@���&@����Y@��� &@����Y@��� &@���@Y@���,&@����Y@���&@���@Y@���@^&@���&Y@����/'@��� Y@���'@���5Y@���O'@���@EY@���E'@���`Y@���jB'@��� ۽Y@���V'@����ܿY@���j'@���-Y@��� g'@����KY@���`s'@���aY@���@^m'@���Y@����m'@���Y@���`#'@���@Y@���OD'@���@Y@���`L|'@��� Y@���@'@���`)Y@���r(@���`xY@���t(@���Y@���@)@���ǠY@���zT)@���Y@���`)@��� Y@����*@���`}Y@����ш*@��� Y@���$+@���Y@����"+@���`ڧY@���6+@���@ߣY@���N+@��� Y@��� \+@���8Y@���+@���`Y@���n+@���`ܺY@���5,@���OY@��� g,@���`Y@��� b,@���Y@����,@���.Y@���`C,@����Y@���G,@���Y@��� ,@���OY@���,@����� Z@���,@����_Z@���,@��� $Z@���,@���-Z@���`#,@���2Z@����q,@��� Z8Z@���Q,@��� @Z@���C,@���BZ@���~,@����qDZ@����o,@���HZ@���z,@���@wMZ@���,@���pMZ@��� ,@���`MWZ@���8,@���aZ@���H,@���JfZ@���`M,@���nZ@���@9,@���@YvZ@���`,@��� vZ@����,@���@|Z@���+@���Z@���@ +@���`)Z@���@,@���Z@���_,@���Z@���s,@����Z@����ɯ,@���ρZ@���@u,@���kZ@��� H,@���@͏Z@���@,@����Z@���,@����FZ@����,@��� ��������@G!@���vw?���@40@���``+*@������������ e&,@��� )*@���,@���``+*@���@^ -@���)@��� -@���G)@��� M -@���`)@���-@���)@���-@���)@���n-@���k)@���j-@���`N)@���}-@���X)@��� H-@��� (@���`-@��� I(@���`.@��� +(@���r.@���(@��� s.@����'@���`8.@���`'@���`# .@���]'@��� G.@��� '@��� 6.@���&@���.@���I_&@���?(.@���d%@���.@����q%@��� ,.@���~%@���`G.@���` %@��� .@���` u$@���[/@���@#@���@-.@����#@���-w.@���#@���`.@���#@���--@���}#@����-@���#@���@,@���m#@���a,@���#@���7,@����n#@���,@����u#@���+@���D#@���,@����D"@���A-@���I!@���@-@���@!@���b.@���@ @��� .@���� @���.@���@��� /@���@���(/@��� @����+/@��� %@����.@���@���.@���-@���.@����U@���z.@����@���@J.@���K@���-@���@7@����)-@��� b@���{-@��� @���,@���`Մ@���1,@���9-@���Q,@����@���l -@���త@���/-@���@���@J>-@��� N[@���?-@���@���`--@���@j@���3-@���@���5-@��� ,@��� `-@��� u@��� g-@���@7o@���-w-@���~@����-@���@���x.@���r@���@4.@���@���>.@���`&u@���a.@���0@���x.@���`@���d'.@����L]@��� B.@���`d @���@'/@���@-@���@/@���@P@����M0@���@���0@���/@���@X0@���`_@��� 0@����@��� {0@���@@���`0@���`H@@���*0@���f@���@40@��� @��� 0@���@T@���@0@���Œ?����0@����r?����)0@���l?����}0@���vw?���0@���-?����/@���@'}?���n/@���@33?���.@����I?��� .@���?���.@��� $?����M.@���@YQ�@���@dH.@����@����$.@���?���-@���`kA�@����c-@���@e�@��� -@���`�@���@X-@���`9m�@��� -@���e�@���`L-@����|�@���"-@���ǡ@���@; -@���H@���,@���J@���u+@���@?H@����*@����P@���`*@����!@���C*@���>@���@+*@���@@������*@���` @���`)@���@@���&)@���`1@���@z(@����ȉ@���S(@���>@���@?'@����#@����&@��� m@���@F&@���PY@���`X%@���W@��� $@���V@���#@���`@���#@���@���#@���@-X@���#@���@@���#@���9 @���@.#@���O @���I#@��� gE @���@ܞ#@���`` @��� ]#@���k @���@p=#@����2 @���� #@���i@���3#@���23@���@0#@���2@����M<#@���@����T#@���@<@���b#@���x@���@|#@���@���@g#@���@���r[#@��� A@���#@���@@���l@#@��� @���:#@���@���r#@���@f@���@B#@����@���@p#@��� @����"@���p@���"@���<@���@#@���@���`("@���@���@ "@���@���"@���`8@���"@���`%?@���"@���`D@����"@���@���@"@���`(@���ע"@����@���̌"@���@@��� w"@���7@����h"@��� @���;"@���` @���!@���`o@���>!@����7@���[!@���@ӆ@����!@���0@���!@���@6@����!@����[@���N!@���e&@���@!@���U@����!@���@8@���@!@����)@���Yq!@���@Q@����_!@���a@���H!@���`%@���s!@���@����eg!@���@O@���!@��� @���@G!@���kA@���!@���<J@���g!@���`@����T.!@���=@���@E!@��� N@����o>!@���1@���@!@���`@���!@���@���.!@����n@���Ϊ!@���@���!@���$@���@!@��� G@����!@���;k@����E"@���֣@���"@���d@��� "@���@@���"@���M@���"@���O@���@"@���@&@���@@'#@��� @���t9#@���`/@����;l#@���R@���R#@���`4@����ۿ#@���s@���U$@����@���h$@���*@���E$@���ـ@���@%@��� @���`51%@���b@���p=%@���@6@���T%@��� @���`%@���O@��� %@���@@���` &@���K@���*&@���@���%&@���K]@���;&@���@���7O&@��� @���&@���R@����&@����Ec@���`'@���@j@����� '@���@���@,'@��� $@���@'@����H@���,'@��� @��� 1'@���� 4@���@'@���`O@���`'@���~@���@'@��� @���Q'@���ߛ@����T(@���O@����T(@��� y@���r(@����@���~(@��� @���@(@����N @���(@����M @���(@���� !@���(@���9!@���'(@����A!@���E#)@���{3!@�����`)@���@XR!@���t)@���Մ!@��� )@����!@���@)@����!@���`ɮ)@���+"@����Z)@���ux"@���)@���@"@����)@���@\"@����*@����D#@���`P*@����#@���`5q*@����M#@���@*@����Z#@���t*@���#@��� *@���@Q#@��� |*@���5$@���@d*@���,$@���@*@���`8$@���*@���@!b$@���*@���Nz$@���(+@���p]%@���`fF+@��� %@���@+@���`RW&@���,@���&@���P,@���w&@���Cd,@���l&@���`L<-@���'@���J-@���@&'@���?H-@���;K'@���`-@���7n'@���`L-@���z'@���=-@���3(@���+Y-@���9M(@��� P-@���@_(@���-@���v(@��� N,@���(@��� Y,@���(@��� H`,@���E(@����],@���_(@��� e&,@��� )*@���!�{������ a��� xD@����NJ���@T@a���]/������ ������'���R���[���c������������������������������ ��F������������������ �� ��b��p���������� ��! ��J ��V ��_ �� �� �� �� �� �� ��U ��_ ��m �� �� �� �� ��q �� �� ������������������������C��n��}��@��J��Y��������������L��_��q����������c��l��(��5��P��[���������yS���ߋO@���@S����O@���S���@O@����S���ZO@����S���O@���@;hS���O@���`gS���`qO@��� `S���@O@���cS����eO@���yS���ߋO@���`N���7OL@��� zN���`RL@���`}N��� ^L@��� N���� nL@���@dN���yL@���`N���tL@���ͳN���`pL@���N���`mL@���?N����vhL@���@ּN���kL@���tN���bL@����N���c`L@���`N���`0eL@��� PN��� cL@���.N����WL@���`N���7OL@���+S����wO@����B6S���PO@��� OS���O@����AWS���`NO@����)\S��� gO@���@]S���{O@����BZS��� O@���� LS���mO@���-S���O@���@ 'S��� =O@���@+S����O@���@$S���`O@���+S����wO@����S��� UK@����S���`6K@���S����^ L@���S���L@���QS���@oL@����0S��� K@���T��� `K@���@S���L@����8S���� L@���S���\6L@���@+S���EL@����S���`NCL@���S���8L@���GS��� DL@����S���L@����BS���@L@���WS���@L@����JS��� >9L@����9S���BML@���S���ML@���@2S���@FL@���S���)CL@���fS���D;L@���S���6L@���@S���6L@���@"S���+L@���QS���@-(L@���?S���*L@���S���{K@���S���`6(L@���@"S���1L@���S��� &.L@��� S���L@����S��� ~L@����S���`_K@����S��� &L@���>S����L@���@8S���L@���@S����K@����S���`AK@���VS���K@���@dS���`K@����S��� UK@���T���`L@����T���`L@���T����'L@���S���7/L@���FS���*:L@���@S��� ?L@���tS���*L@���S���L@���T���`L@���`\S���L@���@S��� L@���MS���`%L@���@S���@5L@���@+S���`8L@���@KS���@5L@����JS���@.L@���`\S���L@��� 3_���H@���r8_���`H@���G=_����}H@���`I_���`H@���@YN_���yH@���=U_���(|H@���P_����H@���`0V_���:H@���@W_��� U}H@����$`_��� yuH@��� x_���`NH@���`v_���`/H@����=o_���H@���@f_���`YH@��� sg_���H@���`n_���ߓH@���hp_����MH@���@ o_���@H@����Ts_���H@���q_���@ӮH@���}_���՜H@��� s_��� H@���0_���H@���`~_��� H@����{_���H@���y_����ɷH@���_��� ,H@����)_���H@��� a_���H@���-_���`NH@���_���H@���_���رH@����f_��� &H@���@_���H@���@_���൸H@���ԝ_���`H@��� _����ѰH@����;_���H@���`_���`YH@���_���H@���@_���`H@���_��� xH@���_��� gH@��� _���@H@���@p_��� H@���@ _���@H@���ԝ_���@H@���_���|H@���ǥ_���*H@���_���H@��� Ԯ_���`H@��� J_����H@���`+_��� `H@���|_���`_H@����d_���H@���@Ϻ_���H@��� _���@oH@����_���`0H@��� J_���H@��� n_��� ,I@��� _���I@���B_��� I@���:_���`HI@���`B_���sI@���@ _���` I@���`_���!I@���_��� I@���[_���@WI@���`_���) I@����_��� I@��� _���`I@���_���!I@���`_��� I@���_��� xI@���`_���` I@���T_��� I@���_���`I@��� _��� I@���8_���#I@���|_����#)I@����_����v(I@���_���`q,I@���_���5I@���m_���`A>I@���_���=I@���@^_���0I@���_���`0I@���z_��� AI@���`_��� UEI@����d_��� ,II@���_���`_LI@���_���SNI@���_���@II@���`_���FI@���@_���@DI@���`���@=I@���`���P9I@��� A`��� &FI@���`9 `���MI@���`B `���TI@���U `���sbI@���, `���fI@���8_���`oI@���a_���cI@��� _���uYI@���`+_���@_I@���3_���`AVI@���@W_���@oNI@���@Y_���GI@���=_��� FI@���`_����AI@���_���=I@��� n{_���@0I@���d_���.I@����[_��� 'I@��� W_���`0I@��� R_��� I@���BM_���`H@����=7_���H@���8_���KH@���;_���� H@���@^>_���H@��� 2_���iH@���`_���H@���^���`_H@���8^���QH@����^���@ӎH@���^���`H@���^��� U}H@���L^���|jH@���^��� geH@���Q^���I_H@���z^���`H@���^��� VH@���`^���rCH@���@G^���kIH@���k^����WH@���^^���VH@���`^����#AH@���@^���=H@���^���`q4H@��� ^���2H@���[^���8H@���+^���:,H@���T^���&H@����$^���*H@���5^��� g-H@���_���CH@��� !_���`EH@��� JG_���]H@����K_����gH@���z5_���`H@���1_���|H@��� 3_���H@����JmU��� O@���esU���jO@���@U���O@��� U���O@���@U��� O@���`бU���aO@���U��� xO@���hU���O@���U���O@���U���@O@���OU���@.O@����λU��� O@���@KU��� >P@���@U����U P@���@U���[P@���U���%P@���@U���@6P@���~U����D8P@���‰U����:P@���U����>P@���-U���DP@����ֈU��� ~IP@���@U����QP@���U���@VP@���@U����MXP@���U���bmP@���GuU���@GuP@��� gU����zP@���@r`U���{P@���^U���|zP@���UaU���uP@���aU����sP@���@]U���rP@����rXU���tuP@���MU���sP@���pIU����<oP@���KU���*nP@��� CU���chP@���NCU���fP@���GU���dP@���@RU���`cP@����RU���aP@����BU���[P@���@2@U����YP@���@U���TP@���.;U���kMP@���3U����MP@���@/U���RP@���@0U���0UP@���@"&U���@o^P@���@2U���9]P@���@U����YP@���@ U���UP@���@U����QP@���U���@ MP@���T���HP@���T���DP@��� T���@FBP@���UT���<P@���QT���:P@���wT����n/P@����{T����#1P@���T���-P@����BrT���` P@���?pT���)P@���qT���P@���nT���`P@���fT���@G P@���fT���`QP@��� 1}T���P@���T���@6�P@���@{T��� xO@��� ]T����=P@���@[T��� P@���@\T��� >P@���@RXT���`P@���=T���O@����B:T��� O@����0:T��� ~P@����B>T���@`P@���<T���`QP@��� 0T���P@���nT���'O@���Q$T���O@���,T����O@���(T���O@���@"T���O@���v T����O@���r T���O@���T���'O@���5T���:O@����b:T��� `O@���<T���ֻO@���@@T��� ~O@���V\T����O@����BbT���@FO@���iT����5O@���vpT��� >O@���FT���`O@���@T����<O@���@BT����O@���ET���O@��� T���'O@����T���`qO@����T���DO@���T��� O@���T���O@���T���c�P@����οT���jP@���yT���P@���@T��� P@���iT����w P@���@;T���P@���@T���@P@���5T���P@���@T����v�P@���@T����eO@���gT����O@���@"T���O@����T���O@���nT���`O@���@U���`O@���U����vO@���U���O@����%U���O@���]NU����wO@���^U���@.O@���dU���`0O@����hU���[O@���iU���UO@���eU���`O@���EgU����O@���#mU���`GO@����JmU��� O@����B.U����bP@���n3U���1dP@���@;8U���@jP@����DU���nP@����QIU����uP@���.KU��� P@���:IU���YP@����B:U���P@���@:%U���iP@���@u%U����gP@����B.U����bP@���@IT����egP@���`T���@ mP@���fT���IkP@���T���biP@���T���kP@����T���� nP@���@T���oP@���`T���@pP@���@T���@oP@���T���3rP@����T���@qP@���@uT���7oP@���5 U���pP@��� }U����vtP@���@ U���}P@���U���P@���@U���(P@���U���`P@���eU���JP@���T���P@���@T���|P@����T���@FzP@���T����wwP@���eT���:tP@���@T����UmP@��� T����nP@���T���`ymP@���T����hP@���@IT����egP@���[_��� RI@���_���bYI@����M_���`hI@���_���iI@���@i_���`I@����_���TI@���[_��� RI@���M��� `K@���hM���taK@���`M���@FjK@���M���pK@��� M���@?pK@��� mL��� tK@��� L���fK@��� L���jK@���`TL��� xfK@���M��� `K@����ZR���@ P@���R����5P@���@BR���@P@���R����P@���˱R���c�Q@���@R���1Q@���@ޝR����Q@���@͔R��� Q@���@ލR���Q@���R���`Q@���jR���z�Q@���]R���@WP@���fZR����P@����[R���@P@���OVR���P@����ZR���@ P@����U���@`T@���V����5eT@���cV���^T@���`V����WT@���KV���XT@���ٵV���[T@����ĴV���@p]T@���@{hV���fT@���fV���@-hT@���@V����iT@���^V���lT@���V���1lT@���V���kT@���V���@ iT@���@sV���jT@���nV����ngT@����7V���eT@���@V���cT@���V���aT@���@rV���YeT@���@V���iT@���V���jT@���V���kT@���V���`pT@��� 9V���@pT@����V���sT@����OV���@ uT@���"rV���zT@��� oV����yT@���@RhV���vT@���`[TV���rT@��� QUV���tT@���IV���:xT@���@JV����UyT@���uYV���3zT@����zYV���{T@���OV���:|T@���@DV���@XzT@��� X?V����zT@���`|CV���2T@��� (V���@T@���@V����T@���U���'T@���U����T@���`U���T@���@ U���S~T@���wU���'yT@���U���@yT@����qU���@`{T@���$U����}T@���U��� T@���`U���@.T@���U���@T@����U����wT@����.U���@WT@����z}U���zT@��� [U����vT@���@XU���wT@����nU���~T@���fU���@T@����MU���T@���%CU����]~T@��� yBU����T@����6U���T@���@I4U���!~T@���`3U���[{T@���*U����xT@���'U���yT@���0U���`T@���;U��� >T@��� pU���ćT@���@)U���T@���@U����T@���@ηU���KT@���ZU���T@����WU���@T@����^U���T@���@ZU����T@���@bbU���T@���@`U���T@����yU���2T@���vtU���@T@����'FU���@ӞT@���`k*U���@T@���m(U���@-T@���2<U���T@��� U���T@��� U���ėT@���:T����T@���T���T@��� T���T@����zT���3T@���@T���T@���T����T@���T���T@���@J{T���8T@���zT���@`T@���@ZT���BT@����hT���T@����T���/T@���@T���T@���@jT����T@���@{T����nT@���@>T���T@���T���~T@���S����tT@����S���:tT@����S��� T@���`CS���@T@���*T����$T@��� ;T���@T@��� p>T���T@���7T���@T@���eT���T@��� T���`T@���@BT��� ژT@���T���!T@���UT���(T@��� {T���`yT@���T���)T@���@ΗT���T@���ǍT��� ʪT@���2`T���T@���@:T���AT@���:%T����T@����q9T���@T@���dT���sT@���ueT���@T@����G^T���̴T@��� T��� T@���" T���T@���@ T���@T@���@IS���T@���ES���bT@���@S����T@���S���YT@���:S���T@���@ZS���RT@���S���T@���S����T@���S���T@���@S���`iT@���@r T����T@����zT���T@���@ZS���@XT@���`CS����T@���DS���@T@���@S���T@���@cS����T@���@IS���T@����S���T@��� S���`T@���S���T@���:S����T@����@S���T@���@sS���T@���|S���@T@���@1qS��� T@����7HS���@T@���@;S����زT@���@$S���@T@���R����=T@����R���@T@���v S���T@���S���T@���@S����vT@���@R���צT@���R���T@���5 S����UT@���3S���@WT@���@S���@-T@���}R���8T@��� S���@T@��� XS����T@���@)PS���T@���<S��� >T@���S���{T@���R���T@���@jR���ĻT@���VtR���T@��� +R���T@���@R���T@���>R���*T@���@VR���T@���[R���0T@���hR��� ʺT@���@gR���:T@���+R���T@���@Q���AT@���@Q���@T@���@Q���PT@���@Q����T@���Q���κT@���ɷQ���cT@���@Q���kT@���Q����vT@���@JQ����T@���@Q���@T@��� lQ���T@���jQ���`T@���\Q���JT@���NQ���T@���@@Q���T@���`k>Q���T@���@>Q����T@���@Q���`T@���@ Q����nT@��� Q���T@���P����^T@���P���kT@���@JP���T@���@P��� ڸT@���ٵP���@T@���@b&Q���@©T@����)Q����;T@���@P���@`T@���mP���@T@����]P����UT@���aP��� T@���`LP���T@���JP���@GT@���VP���`T@���@FP���@FT@���SP��� eT@���>P���T@���+P���T@���n+P���T@���`;P���ķT@���P���@T@���P���9T@����O���YT@����ĴO���T@���,O����T@���`ZO����T@���@O���ϭT@���\O��� T@����O���T@��� 'O���`T@��� O���T@��� s{O���`yT@��� yO���T@���`O���T@���|O����ٝT@���FO���T@���O���@T@���N���@ܞT@���N���@T@���@N���T@���ljN���`T@���@cN���֏T@���@N��� T@���\N���@ӆT@���#O���@T@����O����EsT@���@P����,qT@��� P���oT@����P���*nT@���`CUP���pT@��� VP���oT@���mhP���`lT@���@̀P��� lT@���@sP��� kT@���VP���HlT@���w[P���jT@���@wP����$hT@���P���@iT@��� P���gT@���P���� fT@���@ Q���cT@���@(Q���cdT@���@HQ����^mT@���RQ����nT@���@sOQ���lT@���Q���`dT@���Q���jbT@����Y6Q���@%cT@���@J/Q���aT@���Q���`aT@���P����$dT@���P���bT@���P����`T@���\?Q���@PT@���:Q���@KT@���@AQ���@XJT@���@hQ���[KT@����Q���FT@���@BjQ���HT@���]Q���KT@����`P���K]T@���59P���jbT@���`k"P��� bT@���@P���^T@���@Z)P���bYT@����@\P���@hPT@���@~P���SNT@��� P����GT@���P���DT@���@ZP���H<T@���@P���;T@���VP��� &:T@����P���@p9T@���P���6T@���`*Q��� +T@���`k2Q���z(T@���@8Q����=&T@����zQQ����T@���SQ���`T@���+fQ���T@���@Q���T@���Q��� T@���Q���T@���`Q���@ T@���"Q���$T@��� Q����"T@���@{Q���@oT@���Q���T@���nQ����5T@���@jQ���T@���nQ���� T@���Q����, T@����Q���T@����Q���)T@���`R���JT@���@R��� T@����hQ����eT@���@JQ��� fT@����R���`yT@���� R���`iT@���ѰQ���`T@���Q���aT@���EQ���`T@��� Q��� S@����Q����S@����zQ����S@����?Q���S@��� Q���S@���@BQ����S@���wQ���S@���` R����=S@���`k:R���S@��� DR���)S@���@(R���S@���UR���@XS@����ĬR���S@���WR����5S@���RR���S@���*KR���S@���HR��� S@���@bNR���@S@���@sgR���S@����qR���1S@���zR���[S@���@JR���RS@���@R���@FS@���|R���S@���@~R���'S@����ԢR���S@��� ŻR����nS@���R���S@����R���`iS@����R���@S@���@׻R���S@���:R���@S@����PR���S@���@RR����S@���@R���S@���E S���IS@����IS��� S@����@LS���S@����HS���@`S@���w S���kS@��� 0 S���S@���� S���S@���@rR���S@���S���0S@���7S����]S@���DS��� ~S@��� HS���@S@���XS����S@���VS��� S@����'JS���S@���R{S���S@���@JS���S@���@j{S���@S@���TS���@S@���@8S���YS@����R���2S@���yR����S@����R���@GS@���@RR���rS@����R����=S@���fR���S@���R��� S@���R����S@���;R���kS@���R���:S@��� R����=S@���R����S@���FS���S@���= S����S@����?S���aS@���@c S����S@���DS���`S@���_S����#S@���@JS����^S@���S���@ S@���@ZmS���S@���@ZS���ijS@��� S���|S@���S���KS@���ŊS���S@���yS���jS@���mS���`ԽS@���@#S����S@���R���S@���R����һS@���2S���YS@���2S����S@���2R���0S@���`R���@S@���R���S@���R���S@���R���S@���:R���S@���R���@GS@���@R���@S@���@rR���(S@���`CR����S@����`R���ǠS@���@S����S@���*R���@ۗS@���R����5S@����.R���@.S@���R���@NS@����R���8S@���@JR���S@���$S���S@���6S����S@���":S���S@���@R���S@���@R����S@���@bR���@g}S@��� S���̀S@���@jS���}S@����$S����D|S@����z9S���yS@���@BrS���@|S@���S��� S@���ES���S~S@���@cS���}S@���S����e{S@���@JS����zS@���eS���@`wS@���@rS���@6tS@���|S���`yqS@���}S���oS@����OS���nS@����~S���@lS@���:S���kS@���2pS���gS@���FnS���@XfS@���@~S���@cS@���@r|S���@`S@���S���/^S@���@)S����\S@���S���@XZS@���@ƎS���YS@���S���SS@���@S���@SS@���S���WS@���S���@_XS@���@ZS���2SS@���S���@`SS@���S���@_TS@���ES���QS@���+T���TS@���QT���)[S@���`LyT���kS@���|T���iS@���TzT����gS@���@jkT���sbS@���jT����$`S@����oT���\S@���`aT���1XS@���MT���WS@����JT���TS@���uT���JRS@���T���@?TS@���@T��� SS@���yT���OS@���FzT���qLS@����3rT���@IJS@���@FT���`RS@��� T���PMS@����T���KS@���T���ES@����?T���DS@����? T����FS@����T���1LS@���tS���[OS@���@RS���@MS@���S���@OJS@����@S���@FS@���S���@G=S@���S���;S@����S���@;S@���:S���9S@���S���@F6S@���S����4S@���S���:8S@���@RS���8S@��� S���;S@���@S����@S@���S���@GAS@���@s{S����=S@���`dxS���@-<S@���zS���@X:S@���uuS���@8S@���xS���77S@����mS���4S@���rS���2S@����?qS���!*S@���*wS����M(S@���߀S���@_(S@���@jS���:$S@��� S����!S@����`S���S@����S���@%S@���2S���$S@���S���$S@��� S���S@���@S���S@���yS����wS@���S���S@���@jCT���1S@���ET���S@���DT���` S@���� =T���: S@����ET���B S@���0T���9S@����c1T���@S@���UMT����n#S@��� XT���S@���@mT���S@���T��� S@���@΃T����"S@���@~T���k%S@���@T���`&S@���*wT���@*S@���5T���c(S@���@T���(S@���@RT���+S@���#T����1S@���fT���l4S@���T����w3S@���T���@F.S@���`�T���,S@����ܛT���1(S@���@JT���$S@���T���`#S@���=T���"S@���"T���`S@���@)T����DS@��� T���S@���T���`S@���@T��� ~S@���T���"S@���T���(S@���@T����*S@���@T����$0S@���T���0S@��� 1T����-S@���T���@N+S@���@IT���@%S@���T����S@���@TT���S@���@T���2S@���@rT����S@���;T���rS@����'U���8"S@���U����w'S@��� 9U���*S@���@1U���@p)S@���@ U���@'S@��� U���($S@���U����]"S@��� U���{S@���@ U����5S@���5!U���@`S@���+2U����S@����Y6U���S"S@���@">U��� >%S@���@AU���$S@���@JCU��� S@����>U����ES@���uU���'S@���@:U���S@����XU����eS@���җU���@S@���U���jS@����˚U���S@���=U��� S@���}U���"S@����@U��� (S@���U���@!S@���@U���7S@���U���S@���@rU���S@���`U���@FS@����`U���S@���@U���S@���@U���S@��� XU����vS@���U��� >S@����U����S@��� U���A"S@���U���%S@���@bU���'S@����U��� 'S@����U����U!S@���U���@? S@���eU���BS@���U���S@���@U����vS@���@U���`S@���@U���@S@���@RU���S@����U���S@���U����<S@��� }V���S@���@V���S@���V����S@���V���S@���V��� S@���U!V���@'S@����V���@)S@���@#V���.S@���@V����1S@���@V��� 3S@���@"V���@4S@���,V���@o.S@���@Z)V���@`+S@���@C%V���(S@����G*V��� f&S@���@Z!V���:$S@���SV���@6 S@���*'V���S@���@B&V���S@��� X+V����S@���"*V���sS@���(V����#S@����,V����%S@���2V���7#S@���@1V���!S@���@L5V���S@���2V����S@���9V���!S@���@@V���jS@���BV���S@���GV���`S@���@ZV���{S@���*[V����#S@���@jV���$S@���fV���'S@����[V���@x*S@���]ZV���@+S@����?]V����-S@���YV����.S@��� `V����3S@���"bV���@6S@���V���1DS@���@V���ES@����V���GS@���U���@-HS@����U����FS@���]U��� FS@���U���BIS@���`U����wKS@���XU��� HS@���`|U����$HS@���@ZU��� ~IS@���@U����JS@����U��� LS@���nU���@MS@���"U����PS@����U���QS@���@U���SS@���:U���VS@���U���{WS@���@U���'US@���U����VS@���@U����ZS@���U���@?\S@����U���^S@���@rU���abS@���@b V���hS@���OV��� fjS@��� V���@onS@��� V���@pS@���@j V����rS@���V���tS@���`[V����tS@���U���`yyS@���`U���uS@��� y~U���mS@���mU���]S@����@`U���a^S@���`|_U���]S@���@`U���@[S@���YU����UYS@���K>U����$XS@���.U��� SS@���U���RS@���`U����VTS@���\'U���XS@���@8#U����YS@���^T���@\S@���@JT���]S@���@JT���_S@���%T���YqS@���ੳT���)sS@���*T���uS@���@֠T����5}S@���@եT���S@���oT���@S@���ߔT���@-S@���`T���@ S@���T���BS@����ԲT���S@���T���@{S@���%T���rS@���T���'mS@���*T���@aS@���*T���_S@���5U���@obS@���@s7U���dS@���U���lS@���@jU���AnS@���U���@nS@���@Z!U����lS@��� ;U���@fS@���%SU���@FjS@����SU����EkS@���@(QU���@lS@���TVU���nS@����<U���tS@���4BU���@puS@���`SU���`sS@���YU���@ tS@���YU���uS@����NU���lxS@���@j7U����,yS@���6U���wS@���@b:U����uS@����z!U���yS@����iU���@xS@���U���AzS@���@LU���yS@���@b^U����wS@����``U���@yS@���@skU���{{S@���fU���B}S@���2DU���S@���0U���S@��� pU���ՄS@����"U���`yS@���%3U���@S@���@DU���υS@���EU���S@���?U���AS@���`d(U���̌S@���@j U���S@���@U����S@���@=U���ύS@����h5U���(S@����q1U���S@����P6U���qS@���2U���@_S@����'U����S@����8+U����S@����>U����S@���=U���@S@���@ZU���S@���~U���@S@���U���@?S@���U����5S@����U���S@���|U���S@���tU���S@���UuU���`QS@���eU��� S@���U���S@���U����ьS@����ܟU���@ˍS@���@U���͇S@���U���S@����`U���@6S@���U���S@���@U���:S@���U���@S@���@U���@S@��� pU����ٍS@���5U����S@���@U���`QS@����U���AS@���U���S@���U���7S@���@sU���S@���2U���S@����U���cS@���U���@S@��� U����S@���@bFU���S@���T���S@���@T���S@����T���@hS@���T���@=S@���@ΣT���`S@���@rT���S@���@ƎT���S@����ݎT��� S@���yT��� S@����`T���@S@���~T����S@���@soT���S@���KjT���@-S@���2pT���aS@���@iT����S@��� !_T���@S@���bT���S@���T���tS@���`T���@xS@���2T����S@���*T���ֻS@����U���PS@���.U���S@���@1U���`S@���2U���qS@����"U���@ S@���3U���S@���eT���@NS@��� pT���S@���T����S@����T���S@��� T����DS@����U���S@���@RT���S@���@T���/S@���`U���S@���U���S@����zU����$S@���U���@ S@��� U����S@���<U����S@���@AU���`iS@���@_U���S@���јU���S@���%U���S@���@U����<S@���QU���`S@���U���AS@����zU���@S@���@U���PS@���U���bS@���@jWU����^S@���@ZQU��� S@���VU���S@����ĨU���@T@��� 9U���1T@���@U���@%T@���nU���YT@���ST���@T@���iT���`y T@���T���S@���ˉT���S@���~T���@-S@���~T���S@���@sgT���@S@���@BrT���[S@����nT���S@���@fT���S@���`C]T���@S@���`[(T����S@���&T���S@���'T���8S@���@S���@gS@���S���S@���@2T���`yS@���@RhT���@S@���`[dT���S@���@bfT����S@���jT���tS@���YT���S@���cT��� ~S@���@ƊT����T@���`T����T@���T���@T@���T���@!T@���S����<%T@����S����&T@���ES����&T@���@S���'T@���S����3T@���@%S���5T@���@jS���7T@���*?S����8T@���2S��� 8T@����S���6T@���S���8T@���%S���@O:T@���`S���<T@���S���>T@���3S����AT@���@JS��� GT@���S���@GIT@���@BS���!JT@���@0S����n[T@���1S���q\T@���@ZyS���`yUT@����éS���LT@����'S���`KT@���@IS����HT@����7S���GT@���S���@FFT@��� !S���zLT@����S���JT@���S���ET@���S���lDT@���VS���CT@���S���@?T@���@S����>T@���@S���`=T@���S���q4T@����7DT���B)T@���%T����"T@���?T���@"T@���@T����$T@���T���@&T@���@T���@G)T@���T����/T@���@pT���@3T@����i|T���P5T@���5T���,T@���@JT���@,T@���@rT���@N/T@���@T���@h4T@���"T���Y5T@���@T���j2T@���T���.T@���T���.T@���KT����5)T@���@T���`$T@��� T����"T@���U��� T@���@vU���`"T@����dU���@`'T@���vlU����E'T@����ĀU���!"T@���@JU���$T@����OU����=&T@���@BU���@*T@���`qU���@<T@���@s?U���BT@���@U���@BT@����zT���JT@���T����IT@��� PU���@CT@����fU���CT@���ғU���@6<T@���^U����V(T@���@U���:(T@���RV����]6T@���@\V���9T@���]V���@:T@���9V���>T@����? V���(@T@���@RU���@T@���@uU����DT@���xU���GT@���@1U���QT@���/U����RT@���?U���ST@���@1qU���`OT@���U���GT@���@IhV���@T@����ĀV���`BT@��� V����vDT@���=V���@XJT@���`V��� KT@���łV���ROT@���>V���{OT@���<V���:PT@���iV���@oRT@���@zV���TT@���2|V����UUT@���4V���]T@���;V���`^T@���@-V���`T@���U���JbT@���U���_T@����U���@`T@���NU���@P@����U����P@���U���3P@����U���YP@����BU���KQ@���*U��� Q@���@U���3Q@���yU���Q@���`kU���� Q@��� U���@%Q@���@cU���@NQ@���ŚU���� Q@���@כU��� f Q@���U���P@����ZU���`P@���U���`P@���NU���@P@���@4S��� P@���CS���@ P@���mPS���@ P@���tNS���P@���TS���P@��� pNS���@P@���/S���sQ@���@"S����Q@���` S����eQ@���@S����Q@���@R���Q@���@R���@Q@���R���@% Q@��� R��� Q@���*R���Q@��� R���P@���@JR���)P@����R���P@����@R���P@���@bR���sP@���@2R���)P@���@R���P@����S���@-P@���@4S��� P@����_���`H@���z_���iH@���@Y_���H@���`_���3H@����;_���H@���@E_���@H@���(_����vH@����_���H@���@@_��� H@���_����H@����_���`H@���$Z���BQ@���8Z���Q@���:EZ���"Q@���=Z����,%Q@��� +Z���@$Q@���@Z��� Q@��� aZ��� >Q@���?Z���Q@���$Z���BQ@���@R���KQ@���R���Q@���R���@WQ@���R���'!Q@���`R����$,Q@����bR���0-Q@����)R���+Q@��� R����#!Q@����R���@`Q@���R���@pQ@���ٹR���@NQ@���@R���@FQ@���@JR����MQ@���@;R���`Q@���ߴR���Q@���@R���KQ@���5uY���H$Q@���`ޕY���r+Q@���zY���q4Q@���mlY���'1Q@��� kY���@X*Q@���lY����(Q@���tY���)Q@���@rY���@?(Q@���5uY���H$Q@����V���@S@���@bW���AS@���N+W���S@����*W����5S@���&W���@S@���@cV���S@���V���@S@���@V��� S@��� XV����S@���`#W���`iS@���&"W���S@���W���S@���W��� S@���@1%W���S@���6W���S@���K>W���S@���BW���@xS@���:IW���sS@���@CW���S@���@W���S@��� 9VW����S@���WW���@S@��� !OW���S@��� OW���@S@���UW���S@���`_W���@S@����jW���S@���~iW���@S@���@{pW��� &S@����~W���zS@���>W���@pS@��� W����S@���@uW���`S@���@W���S@��� W����MS@����zW���@S@���@rW���S@���`W���@S@����rW���@WS@���`dW���BS@���W���S@����W���HS@���wW���`S@���W���S@���W���@S@���@W���S@���@W���aS@���@uW��� S@���%W��� fS@���wW���|S@���@W���@ S@����W����S@���W���zS@����zW���S@���W���@pS@���@jW���@ S@���@W����S@���iX���S@���@X����<S@����$X��� fS@��� a'X���`S@����ZX����S@���@X���|S@���@rX���lS@���@X����S@���X���S@��� #X���@S@���@3+X���`�T@���@J+X���T@����J3X���T@����/X���T@���@BX���@T@��� W���`T@���W���S@���W���@S@���`SW��� ~T@���W���� T@���݅W��� T@���W��� T@����W��� fT@���W��� T@���`W���T@���W���@ T@���QW���� T@���@W���� T@���@ZW���@WT@��� W���l T@����@$X���kT@���X���T@��� +X���T@���@%X���7T@���X���kT@���X���)T@���`X���`T@����zW���T@���`W����T@���@W���`T@���X���T@���W���@"T@���UX���`Q$T@����r�X���K%T@���W����&T@����hW���#T@���`|wW����,!T@����sW���"T@��� XW����E'T@���@ƢW���a&T@���ܪW���*T@���W���+T@���W���,T@���W���3.T@���KW����,1T@���@W���I3T@����8W����$4T@���W���@O2T@���W���3T@���@W����U5T@���W���c8T@���W����8T@���yW���8:T@����'W���<T@���nW���c@T@����W���CT@���ǝW���@T@���@W���>T@����'W���@=T@���"zW����BT@���W���FT@���3SW���ET@���@GW���@`GT@���wKW���HT@���"FW���`IT@���GW��� KT@���`ZW����NT@���@s{W���@ MT@��� pW���OT@���W���PT@���ّW����UT@���@[W���@WT@����`dW���@`ST@���`[`W���UT@���@)dW����XT@���@cMW��� WT@���@ W����nOT@���@V���!JT@���@V���ET@����V����8T@���@V����M0T@���@JV���-T@���V���K)T@���@cV���`$T@���@sV���#T@����V���@"T@���pV���@T@���DpV��� T@���tV���0!T@���eV����"T@��� TV���� "T@���@CV���T@���vPV���@gT@���@ZEV��� ~T@���@FV����T@���@rPV���T@���@PV���T@���EV��� T@��� $V���T@���@V����T@���@V����T@���"V���T@���@b V���`T@���; V���[T@���V���@ T@���@rV���� T@����V���@ T@����$V����T@���-V���`T@���`)V����DT@���+V����T@���@j#V��� T@���V���cT@���U���AT@���@U���T@���@U���tT@���U���: T@���@jU���� T@���%V���@ T@���:U����vT@���3U���qT@���U���T@���@BU���S@���:U���BS@���U����DS@���4U����S@���@U����5S@���2U���S@���U���S@���$U���S@���U���S@���:U����S@���DU���@S@���U���8S@����U���1S@���@U���@S@����PU���S@���@޽U���@S@���@޵U���@S@���vU���S@���+U���2S@���U���|S@���@{U���`QS@��� U���)S@���U���S@���eU����#S@���@U����S@����U���`yS@��� ́U���aS@����GU���S@����U���(S@����ĀU���@-S@���@yU����S@����BvU���*S@���oU���{S@���@gU���@XS@���PU���BS@���<U���`S@���@9U���S@���;U���`S@����qU���S@���@)U��� >S@���U����S@���@sU���@S@���йU��� S@���U���`S@���@U����S@���*U���ǼS@��� U���஺S@���@U���@S@���U���S@���@U���S@��� pU���@S@����U���zS@����7�V���`S@���U���/S@����GU���ƽS@���U���ͿS@����bU��� S@���2U���`yS@���Q V���S@����z V����S@��� V���`yS@���V���S@���VV����ҫS@���V��� &S@����'U���3S@���U����S@��� U���@S@���# V���`S@���@#V���@S@���}2V���7S@����/V���JS@��� X#V���S@����P"V���� S@��� 92V����S@���@B6V����S@����LV���S@����'bV���S@���� yV���@`S@���>}V���S@���V���jS@���tV���@.S@��� V���S@����BrV���`yS@���]V����<S@���`]V��� &S@��� dV���S@���%kV���S@���xV���ƍS@���~V���S@���@V����US@���@V���ޔS@��� ̭V����ɓS@���@֔V���bS@���V���ďS@����V��� S@���@JV���S@���ɛV���@S@��� XV���RS@����V���@WS@���W���@GS@���@ W���ZS@����W���aS@���� W���S@���]W����єS@����hW���@WS@���'W����,S@����J'W���@ܖS@���:W���ΚS@����/?W���tS@���@=W����ES@���@ZQW���bS@���@]W����US@����UW���S@���@cW���S@���tW����S@���@iW���8S@���`tJW���S@���`kBW����S@��� W����S@���`CW���S@���ڐW���{S@���@fW���@NS@���y]W����#S@���@RW���S@����V����=S@����V���@S@���`���`_J@���`}`���J@��� `���J@���`���J@��� \`���(J@���l`���`J@����2`���2J@����`���`6J@���``����eJ@����`���٨J@���@ό`���@XJ@���``���@ôJ@���@`���7J@���#`���J@���``���bJ@����`����J@���`���J@���˗`���@J@���,`��� J@���Z`���*J@��� `���sJ@���z`����eJ@����`���`J@���`���` J@���``����J@���`9`���J@���?`���J@����`���J@��� !`���J@���@`���ZJ@���g`���(J@���$`���J@���O`����eJ@��� `���ZJ@���P`��� K@���`���` K@���&`���`AK@���@`���K@���ّ`���D K@���`"`��� K@���`���{J@���@`���`GJ@���U`����M K@���L`��� &K@���@τ`��� J@��� `���lJ@���@3`���J@���ൔ`��� J@���z`��� &J@���@ `���`J@���g`����vJ@���~`����J@���L`��� `J@���q`���J@���``���\J@���@`����J@���@`��� J@���`���@J@���h`���{J@���@`���jJ@���?`���lJ@���`����J@���@؂`���J@���`����$�K@���y`���K@���Q`��� K@��� J{`���K@���:u`���@K@��� u`���K@��� w`���`/J@����O{`��� J@���~`���J@���@}`���@­J@��� n`���`6J@���``����<J@���-`����јJ@���`���٘J@���`���J@���`���`_J@���|Y���`y-Q@���`Y���/Q@���Y���|2Q@���!Y��� f2Q@���$Y���H0Q@���'Y���@0Q@����(Y��� f:Q@���$Y��� ;Q@���2(Y���r?Q@���`"Y���@XBQ@���Y����?Q@��� JY���@%;Q@����dY����=:Q@��� Y���/6Q@���` Y���)3Q@���|Y���`y-Q@���@M`���`J@����O`���7J@���J`��� J@���M`���J@���5O`���`J@���LQ`���DJ@��� JS`���sJ@��� XU`��� `J@���VV`���J@���S`���J@���-T`���J@���DV`���J@���#W`��� gJ@���YU`���SJ@���'M`��� K@���`J`���K@���@wG`���@pJ@���`kH`���J@��� K`��� J@���@M`���`J@���@JS���`4Q@���nS���A6Q@���S���7Q@����S���:Q@���@S���@O>Q@����ZS���@GEQ@���;S���HQ@���mS���zPQ@���@S���qPQ@���@bS���0UQ@���@ZS���`XQ@���S���WQ@���S���2SQ@���`ϖS���LQ@���^S���3NQ@���S���CQ@����λS���8Q@���@JS���`4Q@���V���OQ@����9V���QQ@����V����VQ@���ٝV����XQ@���`SV���[Q@���@|V���@XQ@����8V���@ZQ@���ˍV���:\Q@���V���ZQ@���݉V���VQ@���V���OQ@����q9S���FQ@���^=S���@IQ@���KS���@GQ@���@KRS���`IQ@���@rXS���OQ@��� WS����#YQ@���@JGS����D\Q@���<S���KYQ@���K.S���@���@C)S���@hXQ@���@J+S����SQ@����9S���|NQ@����<S���LQ@���6S���IQ@����q9S���FQ@����c X���!VQ@���X���{WQ@���@)X���@cQ@���X����bQ@���&X���@]Q@����c X���!VQ@���NY���WQ@��� 8SY����M\Q@���@NY����[Q@����KY���j^Q@���XY���bQ@���aVY���dQ@���PY���9eQ@����OY����bQ@��� FY���bQ@���@iCY���H`Q@���u=Y����=^Q@���?Y���H\Q@��� JCY���Y]Q@���NY���WQ@���/`���ΚJ@���L3`���@۟J@���q<`��� J@���;`���J@��� X=`���J@���@`���PJ@����A`���KJ@���@>`���3J@���`+B`���PJ@���I`���J@���`H`����J@��� E`����MJ@���7`���9J@���`0`���J@����2`���@J@����-`��� %J@���.`���J@���`t0`����wJ@���#/`���� J@���/`���ΚJ@����BW���`TQ@���@W���WQ@���~W���YQ@����rW���bQ@���6W���@dQ@����W���@`Q@���W���@]Q@���.W���@FVQ@���`W���*VQ@���W���`XQ@���@W���|ZQ@����X���@]Q@����W���fQ@��� W����ngQ@����JW���1dQ@���@ W���`Q@���W���`XQ@���W����TQ@����BW���`TQ@����V`���-Q@���`���.Q@���@`���0Q@���@`����=Q@���`���2?Q@���@E`���`=Q@���`���>Q@���@`����n;Q@���`f`����U9Q@���`���`Q<Q@���`��� >=Q@���y`���@=Q@���`���@@Q@����O`���BQ@��� `���R?Q@���@`���`@Q@���`����BQ@���`���aFQ@���@`���MQ@���`����MPQ@��� n`���KIQ@���@E`���'QQ@���'`����SQ@��� s`����,UQ@���`����DTQ@���`���JNQ@���`���@NQ@����`����vTQ@���M`���UQ@���u`����PQ@���`���@ORQ@���`��� SQ@���0`���@ZQ@���``����^Q@��� `���`^Q@����`���H\Q@���@w`���@]Q@���`���r_Q@���@3`���`Q@���`����`Q@���@`���j^Q@���@`��� `Q@���q`���cQ@��� J`���@xbQ@���`��� hQ@���`���mQ@���`��� &nQ@���>`���jQ@���5`���@kQ@���@`���hQ@���`���@ eQ@���`���@eQ@�����`���bQ@��� J`���`aQ@���O`���@h`Q@���ǹ`����bQ@���U`���@dQ@���`���bQ@��� s`���@6\Q@���`���`VQ@���-`���@FQ@��� `����#AQ@���U`���0=Q@���`��� 7Q@���`���2Q@����V`���-Q@���QS����\Q@���S���)_Q@���@ S���hQ@���S����^iQ@���@S���lQ@����S��� kQ@���2S���8jQ@��� S���`jQ@���5S���@nQ@���@S���oQ@����~S����vlQ@���@|S���biQ@���S���@dQ@���QS����\Q@����bS����$`Q@���@ T����aQ@����!T����cQ@����Z T���gQ@���T��� gQ@���T���cQ@���T����jQ@���3T���lQ@���*T���oQ@����T���mQ@����T���pQ@���T����rQ@���: T���sQ@���`T���pQ@���@ T���8nQ@���T���oQ@����ZS���@%oQ@���S���sQ@���@RS����rQ@���:S����mQ@����S���ZlQ@���`kS���7gQ@���@S���@fQ@����hT���0iQ@����?T���ZhQ@��� S���� bQ@����bS����$`Q@����&X���@GQ@���]FX���%Q@����GX����D$Q@��� FX���@"Q@���_HX���@!Q@���f^X���@F"Q@��� xX����*Q@���@3X���z,Q@��� X���@*Q@����X���/Q@���@X����1Q@���@X���3Q@���@X����6Q@����X���5Q@���@CX����1Q@���`ߜX���/Q@����0X���@ 0Q@����X���2Q@���=X���4Q@���QX���6Q@����X���@F:Q@���X����w;Q@���ʾX���<Q@����rX���:Q@���@X����:Q@���@X���[7Q@��� X���4Q@���@X���@Q@���X����BQ@���X���@_HQ@���X����JQ@����X���LQ@���>X���@PQ@���X��� SQ@���?X���SQ@��� 1X���SQ@����֘X���UQ@���FX���[Q@���X���\Q@���X���^Q@����X���]Q@����X���^Q@��� X���`Q@��� X���JbQ@���MX���@dQ@���X����UeQ@����X����cQ@����X��� _Q@����X���[Q@���?X���@[Q@���X���@F^Q@���@X���@xfQ@���X���8nQ@����X���)sQ@����X����$tQ@����X����vxQ@���wX���zxQ@���`tVX���tmQ@���@UX���@lQ@���`S_X��� kQ@���@YX���eQ@���rSX����lQ@����JGX����gQ@����(=X��� ~aQ@��� X���SQ@���@ X����PQ@����X����IQ@��� X���1HQ@���@ X����DQ@��� X���sBQ@����X���@AQ@��� X���sJQ@���@X���@NQ@����(W���@IQ@���@*W����EQ@���W���@%CQ@���@W����$8Q@��� W���7Q@���W���4Q@��� aW���9Q@���yW���6Q@����W���@`3Q@���@W���*Q@����8W���,Q@���W���J.Q@���W���@-0Q@���NW���.Q@���W���@W'Q@���-X���$Q@���@X���@FQ@����&X���@GQ@��� %`��� J@���%`��� &J@��� 8%`���J@���@<!`���@J@���Z`���J@���`9`��� fJ@����`��� >J@���� `���J@���`k"`����J@��� %`��� J@���=`���:J@���`F`��� J@��� I`��� ,J@���M`���J@���K`���J@���XN`���J@���P`���J@���@P`���J@���L`���J@���`<`���DJ@���U7`���J@���`08`���@ÔJ@���=`���:J@���|V���3S@���:V��� S@��� V���@p-S@���`kV��� /S@���V���@1S@����ZV����4S@���~V���5S@��� lV���@/S@���kV���,S@���uV���@o*S@���3wV����=&S@����rV���!"S@����jV����D S@��� sV����S@���%{V��� S@���|V���3S@����O���ߛG@����O���`G@��� N��� G@���`N���G@���@;N���G@���4N���*G@���@N���`G@���N���G@���VN���`AG@���hN���7G@���N��� gG@��� N���@G@���N���`ĻG@��� N����G@���4N���iG@���4N��� yG@���`*N���G@���DN���`YG@��� N���G@����O���ߛG@����`���`qLJ@���`��� kJ@���``��� sJ@���`���zJ@����`����<{J@��� S`���tJ@���6`��� =rJ@����`���` uJ@���� `���@hJ@���@`���]J@����2`���UJ@���``���TJ@���`���XJ@���M`����RJ@��� !`���\J@����#`����5iJ@����#`���@oJ@���@"`���cpJ@��� `���sJ@���`���̓J@���@`���J@���_ `����J@����`���`qJ@����`����J@���``���J@���!`���tJ@���b#`���sJ@����O%`��� &vJ@���$&`���J@���,%`���J@���"`���`J@���!`���J@���"`���@äJ@��� a!`����J@���`4`���֣J@���`���ԕJ@���`���J@���`���zJ@����`���@o^J@���@`���NJ@����`���`qLJ@���@,T���YJ@���@HT���dJ@��� WT���mJ@���{T����{J@���T���`J@���zT���iJ@���jT���3J@���rGT���J@���@ET���J@���@1T���`xJ@���*T���rcJ@���@,T���YJ@��� s`���@9J@���H `���DCJ@����O#`���SFJ@��� X)`��� ~aJ@��� e'`����vhJ@��� `���NJ@��� e`���CJ@����2`���<J@��� s`���@9J@���e`���J@���h`���@J@��� ng`��� J@���?h`���`J@���r`���0J@���`}r`���a2J@���p`���2J@����q`���R7J@���t`���9J@���`���`]J@����`���``J@��� \}`���z\J@���`t~`��� cJ@���`x`����^mJ@���'`���``J@���`���`J@����`��� iJ@���:`���nJ@���`���oJ@���`���@wJ@���-`���3zJ@���`����ewJ@���`���J@���p`���'J@���Y`���{J@���`���{J@���`���J@���т`���J@���y`����vJ@���@ y`���BJ@���=v`����eJ@��� s`���J@��� su`��� J@��� `���@ۇJ@��� X}`���� ~J@��� |`���`_J@���`t`��� J@���#s`���|J@���5u`���@pJ@���y`���nJ@���|`���`0uJ@���p`���`pJ@���|`���*rJ@��� {`���lJ@���`z`���7gJ@���@t`��� xfJ@����)z`���� ^J@���@z`��� ZJ@���yw`���kYJ@����u`���@QJ@���us`���*BJ@���`o`���AJ@���Lm`���`:J@���Mn`���@1J@���`l`���`2J@���l`���`0-J@���:k`���.J@���@wk`���5J@���-h`���Z8J@����g`��� 6J@���i`���k1J@����i`����-J@���h`��� %/J@���`kh`���+J@���k`���,J@���`j`���z$J@���Cg`���@? J@���`f`���&J@���@d`���(J@���@b`���$J@���`b`��� J@���e`����J@���@``���KJ@���`+``���sJ@���@*a`���`J@��� c`��� yJ@���e`���J@���`"`���/J@���@`��� O2J@���@ `���;J@��� `���BJ@���� `���9UJ@��� `���BeJ@��� `���;J@��� `���@0J@���`"`���/J@���aY���9Q@���`BY���ğQ@���`k*Y���@Q@����+Y���Q@���@^*Y���Q@���p-Y����nQ@���Y����=Q@���Q Y���Q@���Y���@Q@���@Y���ƥQ@��� Y���Q@��� Y���Q@���aY���9Q@��� _���@I@���B_���aI@����M_���� J@��� 6_����wJ@���_���&J@��� 8_���`3J@��� \_���5J@���L_���,J@����_���&J@���_���`YJ@���Q_���@I@��� _���@I@����OWZ���I7R@����=Z���JR@���`}Z����$LR@���ׂZ���� NR@����Z���`PR@���Z���JRR@���ԝZ����YR@���Z���A^R@���+Z���`Q`R@���@Z����lR@���(Z���`nR@���@nZ���@nR@���`BbZ����pR@���IZ����DpR@���@WZ����aR@���$Z���@ ]R@���@#Z���ZR@���)Z���QR@���LZ���<R@���TZ���:R@���MZ���@N7R@����OWZ���I7R@���Y����wS@���pZ���cS@��� Z���JS@���Z����S@����xZ����S@���`Z����S@���Z���`S@���Z���S@���`+*Z���"S@����+Z����=&S@���Z���*S@����)Y���B)S@���@ Y���(S@����TZ���@h$S@���?Y���$S@���Y���'S@���@Y���$S@���`Y����"S@���Y���@S@����Y���KS@���Y����DS@���Y���S@���Y���S@���Y����wS@���N���F@���N���F@���N����F@���?N���~F@���@uN����5F@����BN���G@���-N���@hG@���N����v(G@���N���JFG@��� QN���@OG@���oN���eG@���4ZN���rG@���QN���G@����KN��� DG@���@>N���@G@���2N��� G@��� 0N���`HG@���?N���`rG@���`'N���lG@���`r,N��� WG@����2N���9UG@���D,N���`/NG@����FN��� G@���g=N��� 'G@���`T6N���s*G@����5N���$G@����NN����wG@��� nN����G@���N���@FF@���MN���@oF@���%N��� F@���qN��� G@���_N��� G@���]N��� G@���nN���@F@����N��� F@��� N���F@���N{N���`F@���}N���F@���N���F@��� !N��� F@���N���QF@���xN���F@���oN���F@��� fN���`F@���-hN���`0F@���`C]N���F@����_N���F@��� \N���F@���5N���F@���@6N��� &F@���WN���F@���dN���F@���XN���@?�G@����7N���G@���`f&N���G@���@)N���G@����2N���DG@���MN��� G@���|SN���@-G@����BFN���G@���.N��� 'G@����$N����#)G@���`N���`G@���� %N���G@���~N���aG@���N���`G@����N���G@���UN���'G@��� N����G@����M���*G@���M���iG@���@uM��� gG@����M���@ G@����M���SG@���M��� UG@���@"M���1G@���M���`�G@����GM����G@���]M���`F@���`N��� F@���@"N����F@���, N���F@���N N����MF@���`TN���F@���/N���F@���\N���ZF@��� wN���F@���N���F@���@*S���` I@���@S���I@���MS���J@���xS��� J@���@ S���` J@���@2S����# J@���S��� J@���vS���(I@���S��� I@���@*S���` I@���`���@.I@���`t`���`6I@���`9`���I@���`���`I@���~`���rI@���`9`���`I@���@`���`I@���``���`J@��� _���J@���_���`/J@���`"�`���@-I@���`���I@����;�`���(I@���`���@.I@����X���S@���nX���@6S@����X���S@����JX����MS@����ZX����eS@����X����US@���@X���S@���Y���S@��� Y����S@���-Y���S@���Q Y���@T@���2Y���@T@����X���@ T@���X���ZT@����GX���bT@��� 1X���S@���@ޱX���S@���X���ZS@����X��� &S@����X���S@����_O���bF@���`uO���`G@���`lqO���[G@��� sO���@G@��� +rO��� G@���@yO���@?G@���4zO��� `G@����vO���@G@���@:}O����5G@���@LO���G@����O���'%G@���`<{O���`(G@���O���G@��� mO���`G@��� bO���G@���O���@G@����ĜO����G@���FO���@G@���]O���(G@���\O���m/G@���@O���b1G@��� O��� f6G@���`SP���3G@����P����w7G@����rP���PG@���P��� OG@���P����wOG@���P���UG@���P���@h\G@���O��� G@���O����G@���P����#iG@���@P��� cG@���@RP��� _G@���O���ZG@���O���`RG@����O���NG@��� O���`HPG@���`O���@IG@���O��� >G@��� tO���BG@���O����<G@���@ O���@?8G@���bO���j:G@���O���@?G@���O���FG@���O���`HG@���ӾO���)CG@��� ƺO��� ;G@���]O���>G@���iO���?G@����O���)3G@���O���`6G@����VO���9G@���E;O���9=G@����N��� :G@���N���`:G@����0O��� ,G@���-O���-G@���*O���'G@��� \?O���"G@���6O���@.G@���`5O���(G@���JO����G@���`HO��� G@��� AO���3G@���@<O����<G@���59O��� G@���@uIO���`qG@���4:O���jG@����?O���F@����_O���bF@���`Y���`S@��� Y��� S@���Z����S@���Z����S@���Z���� S@����Y���S@���Y���jS@���Y���JS@���^Y���� S@���`ޡY���` S@���`Y���`S@���_���@I@����`���iI@���`���I@���`k�`���UI@���_���`I@����_���rI@���_���@I@���2^����R@���^���R@���@W^��� fR@���^���R@���^����S@���&^����R@���-^���S@���`.^��� S@���)^���aS@����/^����S@����/^���@S@���`0*^���@ S@���`6^��� S@���5=^���@` S@���@^���S@���uA^����S@���;^���@pR@���?^����$R@���@^���!R@���?^���R@���P^����R@���=R^����=R@���@Gv^���S@���^���SS@���^����R@���@^����nR@���@E^���R@���@^���@FR@���^���z�S@���^��� ~S@���@Ϣ^����S@���&^���S@���^���S@�����^��� S@����^���) S@���^��� S@���`^���cS@���[^���@S@����M^���` S@���@^����e S@���`^���S@���^���zS@����^���S@����ŏ^���3S@���@3c^����S@����[^����S@���@^Z^���r#S@���`}N^���7'S@���M^����*S@���`^���`2S@��� a^���5S@��� n^���77S@���]���KS@���`]���QS@���]��� TS@���]���WS@���`]����UUS@���C]���RS@���@]���@RS@��� F]���@US@���K]���US@���#I]��� WS@���J6]���@6TS@���)]���@-XS@���`k*]���YS@��� ?]��� >YS@���`I]���\S@����x3]����_S@���=1]���@ aS@���]���cS@���@.\���{[S@����\����WS@���\���SS@���-\���MS@���]���`HS@��� ]���@BS@���Q\��� ~=S@��� \���7;S@���\���k9S@���]���;S@��� ]���9S@���`\���@h0S@���B\����-S@���`]����'S@��� ?]���"S@���D]���1 S@���@>]���@S@����)@]���S@�����<]����S@���@F]���S@���@V]���@hS@���d]����5S@����׃]���/S@���@i]���@S@���]���`S@���`y]���!S@��� }]���@$S@���J~]���*&S@���`y]���Z(S@���@i{]���@N+S@����o]���1S@���@Eo]���/2S@���Dt]���`4S@���x]���@h4S@���z}]���@G1S@���r]���`y1S@���є]���0S@����x]���@-S@��� ]���-S@����+]���$S@���@]���S@���]����!S@���`]����V S@���#]����S@���]���@S@���`]���`S@����;]���@S@���̨]���@oS@���]���@S@���]��� S@���]����e S@���]����US@����]��� S@��� ]���@ S@���@]��� S@���0]���ZS@���]����S@���]���9S@���8]���S@���!]����5S@���]���S@���]��� S@���]���@o S@���I]��� f S@����]����S@��� a]���@S@��� ]���RS@���@.]���tS@���?]���S@���`T]���0S@���`]���!R@����]���@R@���]����VR@���]���@OR@���3]���R@���G]����DR@���^���@R@��� ^����^R@���B^��� R@���2^����R@���S����wR@����S����MR@���MS���!R@���S����MR@��� 9S���@R@���:S����R@���@(S����eS@���S���S@���"S��� S@���`CS���jR@���@JS����R@���S���R@���mS���R@���S���R@���VS���R@���@cS���R@����rS���R@���@S���@FR@���S����wR@���`_\��� S@���!\���S@��� u\����S@���[��� R@���@[���R@���[���BR@���@W\���1R@��� \����R@���@p\���R@���[���R@���[��� R@���[����R@���[���@R@���@[����]R@���![��� R@���^[���@pR@���@3[����ER@���ෟ[���lR@����[���@xR@���?P[���R@���9[���|R@����+;[���R@���A[����nR@���5[���7R@����O;[����eR@���J>[���R@����l[���@R@���j[���rR@��� |[���R@���[���@R@���`0Z[����v�S@���@Z[���JS@���Q[����S@���VX[���9S@��� S[���@oS@���ca[���� S@���cu[���S@���x[��� S@���`k[���S@���[���@FS@����ܗ[���S@��� ![���@S@���ࣘ[����S@���q[��� S@���@Yn[���"S@���8v[����"S@���pa[���+S@���][����.S@���K[���q4S@���@:[���3S@���`x2[���@6S@���`)[���`Q4S@���Q,[���@G1S@���? [���c0S@���[���@O.S@���I[���`,S@���2$[���)S@���-[����^)S@���-[���'S@����$([���$S@���![���r#S@��� 6([����#!S@���`![��� S@���%[���S@���[����,S@���@ '[����nS@���@&[���@FS@��� [���bS@���[���@S@���@[��� S@���`[���@S@���! [���' S@���5[��� S@���:[���@XS@���[���S@���[���aS@���Z���S@���8Z����M�S@���Z���R@����[���BR@���[���*R@���+Z���`R@���`0Z���ZR@��� Z���`R@���`Z���R@���`Z���kR@���޼Z���R@���`Z����R@���Z���R@���ָZ����R@���cZ���R@���(Z���JR@���@iZ���`R@��� Z���R@����$Z���R@���+Z���R@���Z����eS@���DZ���[S@���uZ���R@���@fZ����R@���]Z���`R@���XZ����R@����_Z���@R@���@ioZ���R@���TiZ���@FR@���`eZ���@R@���mZ���R@���^iZ���@`R@���xZ���YR@����x{Z���R@���`vZ��� R@���xZ����R@����OZ���R@���Z���3R@����Z���R@��� Z����^R@���@3Z��� ~R@����dZ��� R@���Z���ͻR@���`Z���R@���|Z���R@���cZ���`R@���@WZ����R@��� [���R@���IZ���R@���[���@FR@���5![����]R@���`![���ZR@���`2[���lR@��� a;[���RR@���`=[���R@���@[���`R@���!V[����vR@���`[���rR@��� [����ٱR@���[���@R@���[���@˥R@���[���R@���\���R@���20\����R@���Y\���sR@���\���ϡR@��� !\���R@����d\���@R@���`ܚ\���R@���\����R@���T\��� ʶR@���N\���@R@���N\���@%R@���aR\���@R@���,\���@ӾR@���`[����<R@��� J[���@R@��� [���R@����M[���@R@���[����R@���@[���*R@��� [���@OR@���:[����R@���Q[���@R@���c[���R@����O[���@gR@����[����R@���`[���R@���8\���R@���\���R@���`\���R@���p\����nR@���\����R@��� \���R@���%\����R@���(\���`R@���`%\���@NR@���*\���`R@���@.\���bR@���,\���@GR@���:9\���R@���`}B\���@R@���H\���9R@���`M\��� >R@���:y\���@WR@���|\���R@���@G~\���*R@��� {\���@ R@���`fz\���@R@���`kz\���@R@���@s\���R@���T\���R@���^y\��� R@���\���R@����Ä\���1R@���\���JR@���@\���@R@���̈\���R@���\���*R@���Ѡ\����$R@���`\���@R@���\����R@���`\���R@��� \\��� R@��� \���@R@����\���!R@���`+\����ҿR@���\���R@��� \���R@���`}\��� R@��� \���R@����d\����eR@���\����R@����\���R@���\����#R@���c\���R@���\���HR@���`f\���R@���@\���@R@���2\���R@��� ]���@WR@���@]��� R@���]���@R@����)]���(R@��� ]���@XR@���]���PR@����O]���@R@���!]����R@����x+]���@R@��� Z]���R@���@ik]���R@���j]���@R@���P]����R@���`]����R@����$�]���`R@��� \���@ R@���0\���!R@��� \���R@��� \���@6R@��� a\���R@���=]����R@���zL]���R@�����P]���R@���@N]���R@���`;]���R@���0]���2R@���\���R@���`}\���R@����v\���@pR@��� \���@R@���\���`R@���@]���R@����O+]���R@���@^.]����R@���@.]����R@����v(]���R@���@]����R@���- ]����R@���]���S@���*]����S@���Y-]���S@��� )]���@S@���]��� S@���\���� S@���@p\��� S@��� &\���S@���@ \���S@���r\���@-S@���@3\���@XS@���\���@hS@���3\���`S@���`\����,S@���^\���aS@���\���@!S@���`ʒ\���S@���z\���@S@���ԅ\���@S@���`ʆ\����S@����;\���@S@���`~\���@S@����\��� S@���mp\��� S@���@\���S@���9\���@?S@��� 0\��� S@���`_\��� S@���@K����I@��� K��� I@���K���@I@���K���@XI@����ִK���@oI@���½K���I@���K���`˵I@���K���@I@�����K���I@���`K���`ܦI@����L����eI@����) L���tI@��� tL����I@����L����eI@���L����5I@��� K��� I@���K���`I@���K���`ěI@���`K���cI@���K��� =I@���@K���I@���L���icI@��� L��� D\I@���@L L���:\I@���@dL���`kI@���L L��� rI@���`L���`YqI@����)L���lXI@��� L����WI@���L���MI@��� CL���bII@���L���`CI@���3L���/I@���MLL���I@���_L��� I@��� dL���@pH@��� \L���`H@���^L���H@��� sL���ZH@����dL���H@��� hL���H@���lL���H@����>L���H@��� s;L���H@���`T6L��� H@���`T6L���H@���L-L���`0H@���xL��� I@���L���DI@���| L���lI@���`L��� , I@���$L���`AH@��� L���8H@��� �L���@I@���K���`H�I@���=K��� I@����K��� I@���K���JH@���`K����I@���K����H@���@ K��� gH@���L���`6H@���@:L��� H@���L���@H@���DK���H@���`K��� H@���`$K���BH@���vK��� H@�����K���H@���= L���SH@��� L��� xH@���K���`H@���DK���H@���@K���H@���`TK��� H@���K���H@���eK����eH@���@{K���H@���`ZK���`6H@���`K���H@���K���`ܾH@���`K��� H@��� \K��� H@���bK���@FH@���`SK���`H@���K���@pH@���"K��� H@����K���@FH@��� K���@WH@���K���@ӮH@���`K��� yH@���ۧK���H@���`K��� H@���ۧK���H@���LK���H@���`K���`H@��� K���H@���K���`H@��� K��� =H@���ӮK���'H@��� \K���@pH@��� K���9H@���eK����eH@���K���̌H@���@K���`H@���K��� ~H@���K���@hH@����K���௭H@���K���`ݥH@���K���(H@����{K��� H@���rK��� H@���@mK���H@���`rK���H@���UmK���H@���@iK���βH@���jK���� H@���`iK���sH@���LEK���iH@���>9K���H@���`CK���`H@���8K���̼H@���>9K���H@���>K���@H@���9K���@H@���`T>K��� >H@���\/K����H@���`l!K���H@���@)K��� gH@��� K���@H@���KK����^H@���J���`H@���˽J���{H@���J���`H@���`J���`H@���\J��� H@����J���`H@���J���H@���J���(H@���`TJ��� >H@���@J��� >H@���@{J���|H@��� bJ��� {H@���eJ���wH@���J���@htH@���J���rH@���J��� >qH@���J���jH@���K���@fH@���5K���aH@���J���@gH@��� 1J��� cH@���,J���kiH@���4J���jjH@���J����egH@���@ J���bH@���J���]H@���K���@^H@���wJ���`YH@���`lJ���KUH@��� \J���OH@����J���VH@���J���TH@���J���VH@���`}J���_H@���� J����YH@���J���`6XH@���@{J���SH@���J���`XH@���J����^UH@���DJ���GH@���J���GH@���J���l@H@���@K���1H@���GK����^-H@���@J����T:H@���J���;H@���J���j2H@���J���@/H@���iJ���8H@���`kJ���<H@���J����<CH@���J���@?H@����J���6H@���J���@?8H@��� J����<CH@���J���J>H@���J���4H@���`J���`@H@��� J���[OH@��� J����LH@���@ϢJ���DH@���J��� BH@���໓J����vPH@���J���3RH@���J���@XH@���}J���MH@���@J���`8H@��� J���,H@���DJ��� ~1H@���үJ���$H@���`J���@XH@���J���`H@����J���`H@���J���H@����J���D H@���`J��� H@��� IJ���@H@����BJ��� H@���`J���`G@���J���H@���@KJ���`G@���J���G@���`J���@G@��� J���aG@���J���G@���`}J���IG@���J��� G@����ZJ��� G@���`$J���G@����J���G@���`<J���G@���J���`YG@���`J���G@���J��� G@��� +J���`G@���J���G@���J���� G@����J���G@����֬J���G@���J����#H@���,J��� H@���uJ���H@���tjJ��� H@���`lyJ��� H@���@j{J���@G@���nJ��� G@���@J���bG@���J���G@��� J����$G@���dJ����G@���@J���G@���J���G@���җJ���G@���PJ���`G@���mJ���G@����)tJ���`/G@���LeJ���G@��� +ZJ��� G@����RJ����G@���XJ���@.G@����NJ���G@��� TJ���@üG@���^J���cG@���hJ���@G@���nJ���G@����wJ��� G@����nJ���`G@���{J��� =bG@���ੋJ���@XRG@���J���ROG@���@LJ���RG@���4J���]G@����J���IWG@���`<J���ZG@���@;J���NG@��� J���kQG@���XJ���*ZG@���J���nG@���@J���9eG@���-J���1lG@���`J���@yG@��� +J���}G@���J���@ۏG@���`J���`G@��� mJ���`ݍG@���`J���G@���K���@eG@���`K���hG@��� K���|G@���K���BG@��� JJ���G@���J����G@���`J���G@��� J���ةG@���J��� G@���@J���G@���J���\G@���`$J���G@����K���G@���K���G@���K���@G@���`<K���G@���$K���`G@���*K���@G@���(K���iG@���:K���RG@��� 3K���G@���@u9K���`ݵG@���`:K���@XG@���`<KK���G@��� NK���@oG@��� 8K���jG@���UK���G@���WK���G@���`$`K���G@���`hK���G@���`liK���G@���K��� DG@���@K����G@���ࣈK���גG@���K��� >G@���@LK����#G@���DK���G@���`דK���G@���@K���`YG@��� K���`wG@���@:K��� sG@���PK���`nG@��� aK���QpG@���<K���`HxG@���`IK���7oG@���K��� &nG@���,K��� sG@��� K��� wG@���K���}G@���K����G@���%K����#G@��� 9K���3G@��� +K���`ŲG@����K���G@���DlK���IG@��� IpK���G@���@lK����G@���GYK���@G@���tbK���`G@���yK���@G@���4K���G@���VK���@hG@���xK���`G@��� \K���`G@����K���@XG@���K����MG@��� K��� G@���ÔK��� ~G@���@K���`G@��� K���`G@���`*K���`G@���`<K���`G@���<K����G@��� K���ͻG@���K���ZG@���`<K���`G@���K���`G@���� K���G@���`K���PG@��� mK���KG@���K����eG@���K���`ʾG@��� K���G@���XK���`G@���K��� G@���U L���@WG@���L��� G@��� L���tG@���K���G@���K��� xG@���`K���@.G@���K���3G@���`K��� gG@���`TK���JG@���@uK���kG@���@ K���`/G@���eK���G@���^K����G@���@ L���G@���` L���G@����L���G@���` L���`G@���iL��� G@���L���ZG@���eL���2G@���`T&L���G@���`'L���G@���-L���G@��� `L��� G@���]L���G@����cL���iG@���nL���G@���L���|G@���L����G@���'L���G@����L���G@���~ M����^G@���M���@G@���D,M���@FG@��� -M���G@���!M���G@����/M���{G@���6M����G@���`DM���`G@���M���G@���M��� G@����M���RG@����ųM��� >G@��� +M��� UG@����jM���BH@���LM���`/6H@���=M���6H@���.M���@H@���F"M��� AH@���`0&M���CH@���BM���@H@��� TM���FH@����M��� ;H@��� ̝M����BH@����kM��� RH@���@3cM���`cH@���oM���YH@���`ZyM���@FRH@���`zM���NH@���`rM���FH@����mM���JH@���_M����GH@���4ZM��� IH@���`TNM���fH@���`@M���`wH@���m@M���H@���/M��� gH@���`.M���H@���`[M���cH@���� M���}H@��� L���szH@��� L���@|H@���`M���~H@��� M���`H@���`}M���`H@���@L���H@����7�M���@ӖH@���L���H@���� M���2H@��� M���ஞH@���M��� H@���`M���`H@���M���KH@���L��� &H@��� L��� H@���L���jH@���L���`H@���L���`H@��� L���3H@���L��� H@���L���H@��� L���`0H@���`~L���H@���gL��� I@���@RL���JI@���#L���NI@���L���NI@���L���XI@���ԭL���@h\I@��� ̕L���_I@���}L��� %oI@���@vL���uI@���~L���`vI@���<{L���r{I@��� sL����I@���wL����I@���`tL���1I@���8nL���I@���`rdL��� I@���gL���@I@���_L���*I@��� eL��� I@���-XL��� I@���uL��� I@���K���@?I@���`ZK���@.I@��� QK���`I@���`lK����eI@���PK���I@���K���௽I@���K���`I@���K���`YI@���@K����I@���S;P���@N@���yMP��� N@����`PP���`YN@���LP���`N@���`[DP���`AN@���AP���N@���T>P���@N@���� 5P���!N@���6P���N@���S;P���@N@���S���`N@���@2T���7N@���� T���ZN@��� }T���N@����{T����#N@���@T���`0N@��� T��� O@���T���-O@���S��� `3O@���S���4O@��� S���!O@���S���O@���@S���N@���S���`N@���?S����N@���DS���@FN@���S���`N@���<P���N@��� ?P��� N@���E;P��� =N@����?P���̴N@���tFP���N@���`EP���ϹN@���@]P���N@���@8_P��� N@���=^P���`N@���MP���N@���.P���zN@��� /P���JN@���=*P���DN@���}.P��� gN@���,P����MN@����-P����wN@���<P���N@���MP���`%N@���1P���3N@���6P��� I;N@���@j5P���>N@���"(P����?N@���!!P���`7N@���<!P��� 1N@���:P���"5N@���RP���2N@���P���u,N@���MP���`%N@����Q���@DO@���`Q���8FO@���@ZQ���`HHO@����Q���@WKO@���vQ��� gMO@���Q���@W[O@���@Q���`^O@��� QQ���@?`O@���Q���`cO@���`Q���@eO@���`Q���hO@����Q���PiO@���Q���`mO@���`Q���qO@���Q���`cO@���@Q����vXO@���Q��� SO@���%Q���aRO@���4Q����LO@���Q���`IO@����Q���@DO@���@*Q���N@���,Q��� N@���2Q���'N@���MQ���IN@����BQ���aJN@���@P���@GN@���@jP���D;N@���P���@p5N@���@P��� ,)N@���@Q���N@���@*Q���N@����T���O@���@"T���`/O@���@+T��� $O@���rT���`;O@����T��� VO@����QT���SnO@���@T���SvO@���@T���)kO@����rT���@?xO@���@*T���{O@���@T���@p}O@���]zT����yO@����xT���rsO@��� 1}T��� UeO@���%{T���]O@���@"T����TO@���T��� ;O@���@:T���O@���%T���`O@���T��� O@���@ T���O@����T���O@���ӊR���@MO@����R���[O@���ŞR���^O@���@RR���[WO@����ZR���XO@���R���TO@���U}R���`NO@���~R���'MO@���ӊR���@MO@��� %P����/O@����O;P���5O@���@=P����;O@���@2P���>O@����6P��� AO@���@6P���EO@���1P���HO@���#P���zDO@��� !P��� &FO@���P���`NCO@����!P���?O@����P����=O@���:P���;O@��� %P����/O@��� JY���`R@���@Y���@R@���@Y���`R@����Y���@R@��� Y���R@���?Y���@WR@��� JY���R@���:Y���@_R@���Y����R@���kY���R@��� JY���`R@���`DX����wsS@���GX���@`wS@���@?X���@zS@���@[pX���@S@����oX���S@����iX���RS@����kX���@S@����ziX���υS@����?X����фS@���8X���PS@���9X���@ӆS@���@7X���`S@���TX���@GS@���N{X���S@���@{X���@%S@���yqX���IS@���@wX���S@���@X���@NS@���X���S@����bX���kS@���@BX���ZS@���X���`S@���X���ͣS@���@X����]S@���@2X����5S@���@ΗX����S@���VX����ɯS@��� XX���'S@���|X���HS@����BJX���`S@���@ X���:S@��� X��� fS@���@cX���@xS@���W����S@���W���YS@���@:W���S@���2W���@ S@���:W���@WS@���W���8S@���@W��� S@���"W���S@����`W���lS@���ȸW���S@���oW���}S@���W���{{S@���FX����wS@���@-X���wS@����z-X����vS@���`DX����wsS@���@cS���/R@���@S���/R@���@S����<7R@���@ T���BR@����T���RGR@���@J T��� HR@���` T��� fJR@���@JT���)KR@���, T����MR@���T���@ PR@��� 3T����QR@����9T���WR@���@*7T����^YR@���6T���^R@���4T���@N_R@���,T���^R@���@u9T���/fR@���-4T���hR@���2T���lR@����J7T���oR@����c1T���oR@���@T���qR@���S���ZhR@���S����jR@���@LS���Z`R@���%CS���)WR@���0S���@hTR@���%S���NR@����(S����KR@���@cS����GR@���nS���ER@���S����AR@��� S����?R@���:S����>R@���S���<R@���S���;R@���S���� :R@���S����6R@���2S����M4R@���:MS����6R@����mS���k9R@����zS���8R@���@cS���/R@���@V���LS@���V���PS@���V���@XS@���^V����ZS@���@V���\S@���>V���cdS@���@V���@gS@���V����iS@����QV���zdS@���;pV���@F^S@���lV���@XS@���:mV���VS@���iV���TS@���@bvV���OS@���@V���LS@���@X���@h|R@���@;X���{R@����X����wR@���yX��� sR@���@:X���snR@���X���lR@���oX���lR@���@X���@oR@���ӶX���@-pR@����X����uR@���xX���yR@���@oX����=zR@���.oX����yR@���uX���wR@���rX����vR@���`gX����5yR@���ONX���vR@���=X����EoR@���;X����MlR@���>X���`hR@���LX���`cR@���\X���@eR@����[X���@aR@����hX���@xbR@���jX���^R@���@gX����5]R@����OX���@o^R@���@ KX���t]R@���KX���c\R@����OX����w[R@���@IX���`XR@���KX���VR@����ZmX���@SR@����X��� @R@���`\X���c<R@����֜X���7R@���iX��� 6R@���&X����=R@���@X��� fBR@����kX���`BR@���.SX���>R@���fNX���(<R@���@QX���:8R@��� ZX���[7R@���%OX���@5R@����bBX����/R@���@BX���-R@���@2LX���(R@���@LX���&R@���DX����&R@����{8X���+R@���V$X���@60R@���!X���-R@���@u%X���@h,R@���X���@&R@���WX���R@����X���R@����7X���R@����#X���@R@���@%X���@R@���@""X���)R@���X����<R@���@ X���@pR@���@|7X���@R@���@ +X�����R@���$ X���@xR@����) X���@oQ@���@2$X��� Q@���(X���@GQ@���0X��� Q@���%/X���Q@���y!X���Q@���6 X���@Q@���@)$X���@Q@���.X��� Q@���@/X����vQ@���@+X���Q@���@1X���@Q@���@*7X���rQ@���@>X���Q@����cEX����Q@����[X���@Q@����ZyX���@Q@���@X���0Q@���ŖX���AQ@����֔X���Q@��� X���:Q@���VX���@Q@����֐X����wQ@����֜X���@Q@���@ןX���Q@���@X���Q@���X���Q@���X���@OQ@���yX���`QQ@���@"X���Q@����rX���Q@��� X���Q@����X����<Q@���X���Q@���@X���`iQ@���@X����Q@���@iY���0Q@���(Y��� R@���8Y���K R@���^AY��� R@����CY���@%R@���`fBY����R@���@NY���YR@���TYY����]R@���YY����R@���`Y���`R@���xY���2R@���xY���kR@���@^zY���8R@���`̩Y����w+R@���Y���1R@���Y����M4R@��� 8Y���b9R@���#Y����^AR@���`Y���ER@���zY���@`CR@���xY���AR@���@WoY���j>R@���hY���@8R@���dY����8R@���]Y���`4R@���@ZY���@O2R@���TY���1R@���@RY���/R@��� CY��� +R@���5Y���@,R@���G5Y���@o.R@���4Y���0R@����Y���/R@���-Y���[3R@���YY���@F6R@��� 6Y����:R@����Y���<R@���`BY����=BR@���IY���/BR@���Y���@@R@���`Y���>R@���mY���<R@���Y���t=R@���Y����:R@���Y���J:R@���Y���18R@���Y���@8R@��� Y���<R@����;Y���@R@���Y���CR@���!Y����BR@���@ Y���ER@��� Y���GR@���Y����5ER@��� Y���RGR@���@&Y����^IR@���`BY���@_LR@���z!Y����NR@��� JY���@QR@���@iY���KR@���vX���@_LR@���X����MR@���2Y���OR@���YY��� XR@���Y���`iWR@���Y���TR@����4Y����PR@����@Y���@oRR@����xgY���_R@���MY���@fR@���3:Y���afR@���0!Y���ZR@����Y���� ZR@���`Y����ZR@���O&Y����n_R@���%Y���@aR@���@"Y���cR@����O#Y���SfR@���@Y:Y���@gR@���@6Y���ajR@���@GY���JnR@���8Y���`tR@��� Y���@%sR@���Y���nR@���,X���tR@����bX���`vR@���@X���@6xR@���_X���@yR@���Y���uR@���@Y��� >uR@���@.Y���wR@���Y���@yR@���@X���@h|R@���@X���KuR@����rX����wR@�����X���@gyR@���MX���{R@����{pX���R@���iX��� fR@���hX���R@���pX���@R@���fX���wR@���@X���KuR@���@Z���'R@���0-Z����MR@���`;Z���YR@��� ,Z���R@���01Z���� R@����fZ���R@���` Z���R@���@iY���R@���Y����,R@���@Y���R@��� Y���`R@���@Y���R@���TY���R@����+Y���`R@���@Z���'R@���W���Q@���VW��� �R@���@W���Q@���@W���[R@����ZW���AR@���@W���R@���@+W����R@���W���� R@���@+W���R@����!W����nR@���@W���tR@����ZW���`+R@����kW���A.R@����8W���@1R@���@W���@x2R@����8W���`5R@���W���;R@���W���?R@��� 1W��� CR@��� W���'ER@���@uW����wGR@��� W���:HR@���@W���@IR@��� 9W���� NR@���yW���SR@����W���SVR@���`tW���lXR@���W��� fZR@���W����\R@���W���aR@����W���rcR@���W���dR@���W����gR@���@KW���`hR@����JW����jR@����W���mR@���W���YqR@���&W���9qR@���W���@kR@���@W���iR@��� W���jR@���W���nR@���W���!rR@���nW����sR@���UW��� >uR@��� W���vR@���W���tR@����W���xR@����W���`|R@���W���ীR@���W����^R@���@֔W���@R@���|W���@R@���noW���R@���pW����DR@���nW���`݉R@��� [W���`R@���2W���R@����/W���@R@���0W���`yR@����(W����R@����hW����R@����W����eR@���@W���`Q|R@����JW���|R@���@AW���~R@���V����5R@����hV��� R@���fV��� &zR@���ˍV���1xR@���@V���uR@���V����wR@���V���jvR@���V����sR@���@ZV���iR@���V����cR@���WV���`icR@����V���`R@���@V��� _R@����V���@PR@����V���NR@��� V���`yMR@���@V��� LR@���"V���/6R@���W���@N/R@���W���0-R@����BNW���1R@���gUW���3R@���@fW���@1R@����֐W���1R@���W��� 0R@���W���/.R@���rW���I/R@���rW����,R@���tW���@)R@���>qW���'R@���fW���%R@���@_W���@g!R@���]W���R@���@2hW����R@����brW���R@���`W���| R@��� IW���R@���W����R@���-W���9R@��� W���R@���W���Q@���[���@S@���@[���YS@���`[����S@����d\���S@���A\���tS@��� L\���@GS@���GU\���@ S@���G\���S@���\����S@���([���S@����;[���@S@��� [����,S@���=[����$S@���`Y[���S@���P[����,S@���TU[���2S@���Y[���S@���`̭[����S@����x[���zS@����[����S@���@W[���S@��� [���S@���[���!S@���[���@S@���\���TS@���@p\��� VS@���%\����[S@���`x&\����#]S@���2\���:\S@���L\���aS@��� aO\���eS@���`+F\���@NgS@���N\���@OnS@����)T\���*rS@����S\���uS@���`N\���`yS@���@\���@S@���[���@S@���@[��� S@���[���AS@���@r[���@XS@���@f[���S@���0e[���S@���`j[���/~S@���[���byS@���[���wS@���T[��� vS@���[���KuS@����[���qS@����d[���pS@���O[���/rS@���#[��� pS@��� J[����VlS@���@[���hS@���`k[���fS@���5[���`dS@��� [����bS@����$[���t]S@��� [���!ZS@���[���@.[S@���\���TS@���`YY���@`#S@����lY���%S@����/Y���@60S@���@ Y���3.S@���VLY���`$S@���`YY���@`#S@���[\���lS@���2\����vpS@���\����pS@���\���|S@���\���}S@����v\���@F~S@���`}\���@-S@���&\����ɃS@���@p\����S@���@f\���0uS@���e\���sS@���!z\���|nS@���[\���lS@���P_���R@���<_���@-$R@���>_����&R@���D_���r'R@���D_���(R@���p=_���+R@���`=_����#-R@���A_���4R@���@3G_���j6R@���`fF_���7R@��� _���@:R@��� _���>R@���`x._���l@R@���@37_���@hDR@���`2_���HR@���B)_����JR@���`*_��� KR@���3_����wWR@����_���@OZR@����_���@^R@���`}_���aR@���`}_���eR@���_���@gR@���V_���iR@���`^���lR@���^���@pR@���`^���kuR@���_���JvR@��� _���@wR@����__���}R@���`_����R@����O_���`R@���#_���R@���[,_��� >R@���@&_���R@���1_���lR@���[0_���R@��� s^���@R@��� ^���{R@���i^���R@���I^���R@����$@^���R@���`0>^����R@���]���R@���]���R@����x]����R@���]��� R@���Q]���R@��� ]����R@��� ]����R@��� ]���njR@���]���� R@����d]���R@���]���@WR@���+]����R@���k]���R@��� ]���7R@���@G]���@R@����=]���!R@���ॳ]���`R@���@]����R@���൸]����R@����)]���R@����ׇ]����R@���`]����ER@���=2]����҃R@���\���@kR@���\���eR@���\���q`R@����)\���^R@���k\���@UR@���5]���@oJR@����O]���@CR@���i]���@?R@����]���c,R@���`+]���'R@����]���@G%R@���`]���"R@��� ]����vR@���G]���R@��� \]���@R@���@^]���@OR@���` ^���`R@���@E ^���R@���^����#R@��� n^���R@���^���@WR@���L ^���@ R@���@@ ^���� R@���^����UQ@����^���`Q@���D^���`Q@��� J^���Q@����)^���lQ@���@G^���1Q@���`"^���Q@���1^���kQ@���=Y^����VQ@���`fb^��� fQ@���`b^���{Q@���=e^���@Q@���m^��� ~Q@���`ł^���@Q@���:^����Q@���^����eQ@���^���Q@���^���@Q@���@i^���Q@���@^���`Q@���^����=Q@����_���@Q@��� =_���Q@����<_���Q@���@Z_���@XQ@���`kr_���@Q@���an_���RR@���m_���*R@���@r_����<R@���ml_��� R@���hd_���@% R@��� k_���� R@���`j_���R@���`b_���R@���`^_����]R@���3b_���R@���P_���R@���@T����>R@���@T���@?R@���JU��� ~MR@���LU���NR@���@jGU���TR@���@2<U���@WR@���m0U���cXR@���D(U���SR@���U���@xNR@���*U���XR@���`�(U����YR@���� U���j^R@����bT���@oZR@���@ T���TR@����`T���`SR@���@T���`SR@���T���r[R@����T���@ ]R@���T����_R@����T���'aR@���NT����]jR@����T����UiR@���@յT���nR@���=~T���`nR@���}^T���lR@���`PT���dR@���KT���ZR@���@MT���rSR@���@RLT���PR@���+&T���`yIR@���*#T��� >ER@���)T���>R@���'T���@O:R@����'T���@1R@���@T����].R@���T���*R@���@#T���@&R@���!T���`$R@���@4T���@R@���BT����R@���@XT���rR@����NT���R@���@[8T���@ R@����#T��� R@��� T����R@��� T����MR@���+T���R@���@4T����vR@���@5T��� R@���=T���` R@���@r$T����R@���$T���@_R@���@Z)T���@ R@���^1T���@R@���?T����DR@���`CT����wR@���CT����R@���=6T����R@���2T���R@���5T���(Q@���>T���@Q@���9T���Q@���`d0T����Q@���@/T����Q@���#T���q�R@��� pT���lR@���T���`R@���#T���b R@���*T��� R@���`T���� R@����T����VR@���T����R@���@r T���jR@���wS���@N R@���S���@6R@���@IS��� R@���%S���1 R@��� T���R@���eT����R@���@S���R@���@*S���@R@���S���R@���S����R@����S��� ~R@����?S���rR@���:S���aR@���"S���kR@���5S��� R@���`CS���sR@���@S��� R@���S����R@���KS���0R@���@S���z R@���@S���R@���S���JR@����S���R@����S���R@���@S���@R@���нS���JR@����ļS���R@����YS���qR@���:S���@%Q@���2S����UQ@���ɿS���Q@����zS���`iQ@���S���@WQ@���@:S����VQ@���<S���`Q@���@*S���PR@����S����MR@����@S���@p R@���S��� R@���@͠S���@xR@���~S����R@���@rS����eQ@��� S���Q@��� zS���PQ@���@S���'Q@���S���Q@���@ޑS���Q@���@S���Q@��� sS���Q@���@)pS��� Q@���lS���Q@���nwS���tQ@���eS����wQ@���@cS���rQ@���S���@OR@���S���@x R@���@S���R@���@ƲS���`QR@���@ S���jR@���@S����R@���S���PR@����S����R@���S���'R@���@ޡS���R@����S��� R@���S����< R@���@BS���R@���^S���2R@���"S��� R@���`rS���@R@����?iS��� R@���iS���R@���eS���R@���gS���� R@���@RdS��� R@���?S���1R@����AS���R@���3cS��� R@���S���R@���@ΣS��� R@���S���%R@����PfS���:0R@���PS����0R@���20S���`.R@���)S���*R@���@+S���@)R@��� S��� &&R@���@ S���$R@���f S���!R@���@S���@FR@���@bS���RR@���S����"R@���@JR����,%R@���R���%R@���@RR���{R@���`R���R@���2R���rR@���@R���R@���@S���R@���NS���Q@���@+S���Q@���`S���@Q@����S���@.R@���R���@R@���`R����R@����R���bR@����'R����$R@���@R���@xR@���@R����,R@���@R���@Q@���@RR����UQ@���QS���9Q@����zS���HQ@���@R���sQ@����R���Q@���@RR���Q@���R��� Q@���@*R���� R@���R���@xR@����οR���:R@���R���R@���҇R����Q@���`R���Q@���R���jQ@���R����Q@���ڐR���@6Q@���ѤR���@hQ@���@R���Q@���uR��� Q@����R����nQ@���5R��� ~Q@���@R���`iQ@���R���Q@���#R���Q@����0R��� Q@���fR����Q@���@ͨR���Q@���R���Q@���:R����Q@���@ZR���Q@���"R���Q@���R���@gQ@���;R���Q@���@AR���Q@���@ޭR���@Q@���,R���@_Q@���R����Q@����.R���Q@���SR���(Q@���R���Q@���@֨R���@NQ@���R����=Q@���R���@Q@���R���`Q@���R���Q@���yR���aQ@����hR���IQ@���@BR���Q@���SR���Q@����)R���@Q@���R����Q@���`R��� fQ@���@ZR���@Q@���R����Q@���@R����nQ@���@r|R���Q@���@mR����Q@���ikR���@OQ@���eR���@Q@���@JR���Q@���`R����Q@���@JR���@WQ@���@R����eQ@���@ޅR���@FQ@���nR���Q@����vR���JQ@���lR���@Q@���@eR���Q@���@IdR���@Q@���iR���@?Q@����ZeR��� Q@���gR���@Q@���aR���`QQ@���@^R���Q@���VXR���Q@����kR����Q@����oR���Q@���@wR����vQ@���MxR���Q@���mR���Q@����GjR���Q@��� !kR���@oQ@���igR���Q@���[R����Q@���@[R���@Q@���@bVR���Q@���@GR���@Q@���@sCR���Q@����hQR���`Q@��� OR���Q@���@QR��� Q@���@\R���Q@����.XR����Q@����!KR���� Q@��� KR����Q@���M@R���@WQ@��� <R���:Q@���?R���tQ@��� y>R���/Q@���1R��� Q@����0R���Q@����5R���@hQ@���(R���Q@���@$R���`Q@���Q���Q@���"Q����Q@���;Q���Q@���@JQ���@Q@���WQ���Q@���Q����Q@����zR����Q@��� R����Q@��� R���Q@����cR���:Q@���R����wQ@���@b R���@Q@���R���`'Q@���'R����Q@���@"R��� Q@���� R���Q@���Q���Q@���Q����Q@��� !Q���@.Q@���Q���@xQ@���Q��� >Q@���`Q���RQ@���`[Q����eQ@���Q���Q@���@Q���1Q@���`CQ���|Q@���@Q���Q@���@jQ����MQ@����PQ���Q@��� QQ���@XQ@���@8Q���YQ@���`Q���צQ@����Q���Q@���@bQ���`iQ@���Q���(Q@���@jQ���Q@����zQ��� fQ@���@Q����Q@���`[Q���Q@���@bQ���Q@���Q���Q@����/Q���`Q@����Q����=Q@���Q���Q@���`Q���@ Q@���2Q���@.Q@���@bQ���PQ@���Q����Q@����Q���@Q@���Q����Q@���@Q���Q@��� Q���KQ@���:Q���:Q@��� Q���:Q@���@jQ����eQ@���ҿQ���@ Q@���@wQ���`Q@���qQ����Q@���rQ����ٵQ@���@J{Q���`Q@���Q��� ڨQ@���`Q���@èQ@���Q���@ӦQ@���Q���Q@����Q���Q@���Q���Q@���ғQ���ߟQ@���Q���@gQ@���Q���@`Q@���Q����Q@���Q���Q@���@8Q���@Q@���=vQ��� Q@���@jQ���`Q@���`iQ��� ʮQ@���@rdQ���@gQ@���ZQ���@xQ@���Q����MQ@���@Q���@Q@���Q����Q@��� Q���3Q@���Q���֗Q@����Q����Q@���@1%Q���`ݙQ@���#Q���ড়Q@����H%Q����Q@���]*Q����Q@��� *Q���Q@��� 02Q���@ۓQ@����MQ���Q@����Q���@XQ@��� pQ���̀Q@��� QQ����Q@���vQ���Q@���`tQ���@~Q@����Q���}Q@���Q���@XzQ@���mQ���wQ@���@ƖQ����uQ@���ɋQ���AzQ@���`oQ���a~Q@���SoQ���Q@���sQ���|Q@���+rQ����Q@���iQ���@GQ@��� NQ���@ Q@���@CQ���Q@���@Q����Q@���MHQ���Q@���+Q���Q@���:)Q���@pQ@���;,Q���qQ@����z]Q���@ tQ@���=fQ���uQ@���@BrQ���tQ@���Q���@iQ@���@~Q����egQ@���sQ���nQ@���sQ���@pqQ@���mQ���sQ@���XQ���qQ@��� LQ����xQ@���7Q���|Q@���@R,Q����{Q@���v$Q���`Q@���Q����Q@���`d Q���Q@���lQ���Q@���@Q��� Q@���Q���8Q@���@Q���৔Q@���P���`Q@���P���@|Q@���@jP���nQ@����/P���mQ@���P����qQ@���Q���cpQ@���Q���@?hQ@���UQ����DhQ@���UQ����bQ@���@lQ���qdQ@���`|Q���@\bQ@���kQ��� cQ@���3SQ���c`Q@���+>Q���cQ@���&Q���`yeQ@����P���]Q@���P���@]Q@���@jP���XQ@���@JP����QQ@���@cP���MQ@���$P����]JQ@���@P���@?HQ@���P����nKQ@���@BP���/JQ@����q Q���SQ@���@@Q����VQ@���@sOQ���/RQ@��� OQ���PQ@���@jGQ���`iSQ@��� Q���BQQ@���@Q���NQ@���@RQ���LQ@���@Q���MQ@���V Q���`LQ@���`C-Q��� HQ@���@Q���`GQ@���@EQ���EQ@���S;Q���JFQ@���@1=Q���/BQ@���@@Q���@x>Q@���;Q���@?Q@���@J;Q����AQ@���@j'Q����HQ@���Q���`JQ@���`kP���BQ@����'P���@Q@���Q���*>Q@���Q���@Q@���`Q���>Q@���@jQ���?Q@���Q���@;Q@���Q����9Q@����Q���8Q@���*P���6Q@����GQ���9Q@���P���a2Q@���@Q���5Q@���*'Q��� ~5Q@��� Q���4Q@���wQ���@2Q@����=Q����$4Q@���SCQ���/6Q@���*WQ��� 7Q@����?YQ���6Q@���`OQ���|6Q@���IQ���4Q@���@VQ���5Q@��� WQ���@4Q@����H=Q����2Q@���@=Q���H0Q@���@!Q����/Q@���@Q���H,Q@���"Q���*Q@��� Q���@-(Q@���+Q���@)Q@����8Q����&Q@���@&Q���(Q@��� Q���&Q@���@#Q���9%Q@���Q���%Q@��� Q���($Q@���P���"Q@���@P����,Q@����zP���@gQ@���`P���`Q@���SP���)#Q@����P���#Q@���P���!Q@���P���@%Q@���P���Q@���P���Q@����P���@?Q@���@JP����Q@��� P���7Q@���@P����Q@���@IP���IQ@��� pP���`Q@���@8P���Q@���P���@Q@���@jP���Q@���}P���Q@���P���@Q@����YP����UQ@����P���@Q@���@P���`Q@���P����UQ@���UP���@XQ@����OP���`Q@���P��� Q@���P���Q@���P���:Q@����P���Q@���P����Q@���P���� Q@���`P����5 Q@���P���� Q@���P���Q@���P���(Q@���P���@6 Q@���P��� Q@����P���`Q@���=P���Q@���`CP����nQ@���P���Q@��� ̽P���Q@���@P���Q@���P���lQ@����P���@ Q@���@jP���`Q@��� P���@P@���lP����Q@����P���@ Q@���P���P Q@���@P����vQ@���P����Q@���@ΗP���9Q@���@P���qQ@����zP���Q@���@΋P����5Q@���@cP���P@���P����P@��� XP���@-P@���P���@P@��� P���P@����HP���P@���nP���P@���`P���P@���u}P���3Q@���@R|P����Q@����z}P��� > Q@���@zP����] Q@���@vP���Q@���vP����Q@���@ށP���P@���@r|P����5P@����hP���P@���@~P����wP@���@1}P���@_P@���@rP���P@���@pP���P@���tP���P@���@B^P����P@���`d\P���@P@��� QaP���@P@���@jgP���@OP@���@JWP����=P@���@UP����P@���@WP����P@���@AcP���P@���tZP���P@����7LP����UP@����'JP����$�Q@���@CP����Q@���@P���Q@����P.P����eP@���-P���@P@���7P����P@���<P���P@��� !CP���P@���@GP���P@���#AP���`P@���BP���@P@���UIP���IP@���LP���P@����MP��� ~P@���@ KP���P@���@RHP���P@���:P���P@����@4P����P@���;4P���`yP@����/3P���@6P@���@ 0P���@P@����`0P����VP@���*'P���@P@��� pP���`P@���EP��� P@���%P��� P@��� (P���@FP@���`[P���`P@��� P���@%P@��� P���PP@���@bP���P@���@RP���jP@���@P���)P@���@P��� &P@���P���@`P@���P���P@���P���@P@���P����UP@��� &O���P@��� O���P@���O��� ~P@���O���@NP@���m,P���jP@��� 3P���@P@����/P���YP@����P���P@���P���P@���`[P���P@���:)P���@P@���3P���tP@���@J3P����P@���� O���P@���<O���KP@����P���P@����P����P@����q)P���P@���@r,P����=P@����,P���@6P@����7(P���P@����&P����P@���m P���HP@���`޽O���P@���@O����=P@���`O���P@���O����UP@���O���@P@���\O����<P@���O����^P@���4O���cP@���?O���P@���O����EP@���`O���0P@���KO���P@����ܟO���P@����O����P@���`O���P@���@jO����P@��� ̕O���*P@���O���@6P@���O����,P@���O���P@����`|O���P@���`O����P@����O���tP@���;O���@P@���@(O���AP@���O���9P@����8O����MP@���`O����eP@���@O����P@���@)O���P@���O���P@��� ̵O���@P@���@O����P@���`O���P@���O���PP@���`[xO���`ݽP@���DlO���P@���`liO���rP@���rO���@P@���jO���P@��� `O���P@���aO���7P@���|SO���@üP@���@JO���ৼP@��� ?AO����P@���@O���@P@���(O���|P@���&O���@pP@��� 8O���޸P@���5O���@NP@���`l!O���P@���%O����^P@���oO���7P@���@O���P@����O���AP@���` O���P@���tO���P@���tN����P@���EN���@P@���N���(P@��� N���P@���N���P@��� �O���P@���`N���ַP@���EN����P@���oN��� P@���~N���P@���dN���P@���N����P@���6N���P@��� N���HP@���N���jP@��� QN���sP@���N���7P@��� N����UP@��� �O���P@���`+O���`P@��� O����$P@���@O����P@��� zN���`yP@��� N���)P@���N���@.P@���`N���P@���LN���P@���nN���|P@���<N����P@���N���P@���uO����P@���O����nP@���O���bP@���MO����VP@���UMO���`ԙP@���ZO���@FP@���`BVO���0P@���\?O���@P@���":O���P@���@(O��� P@��� 2O���`yP@���^UO����P@���cO���ƑP@���`cO���`P@���oO���P@����oO���@_P@���[O���P@���w/O���֋P@���\'O���@P@��� O���'P@���`O���P@���O���sP@���4O���@P@���` O���2P@���@O���`yP@���e'O���S~P@��� YO���P@���cO���!P@���@kO����P@���vpO���@ P@���5yO���P@���oO���P@���O���rP@���dxO���P@���`kO���@P@��� 5O���`~P@���`l1O���{P@����9O���@.{P@���$O���@ tP@����KO���@sP@��� heO���wP@���4jO���@yP@���nO���@OzP@��� oO���xP@��� IO���pP@���`JO���JnP@���lO���@pP@���`TfO���mP@���LO���@kP@���OO���[gP@����RO���eP@��� VO���8fP@���SO���hP@���2\O���hP@��� ]O����eP@���lO���ZhP@���`lqO����oP@���yO����VpP@���4rO���@iP@���`zO���eP@���@O���`yeP@���`ZO����DhP@���@O���`hP@��� O���@{P@���O���xP@���@{O���@NkP@��� O���iP@��� O����vhP@��� O���eP@��� zO���jbP@����ļO���aP@����`O����UeP@��� O���@%cP@���~O���@x^P@���5O���@_P@��� ̥O���[P@���tO���7[P@����O���A^P@���O���`\P@��� +O���@GYP@����O����wWP@���O����<SP@���O���KQP@���O���`PP@���^O����OP@���઺O���ROP@���LO���LP@���`ZO���@_LP@���@ΫO���HP@����O���DP@����O���`AP@���O���@>P@���O���9P@���4O���k9P@���O���;P@���O���>P@���`O���@P@���O���@>P@���O����@P@���O���@oBP@���O��� CP@���O���@AP@���@cO���@EP@���LO���JP@���\O���KP@���LO���HP@���`lO���@oFP@���@P��� GP@���5P���DP@���P���BP@���P���SFP@����?P���LP@����GP���LP@���vP��� ~IP@���@ZP���BMP@���P���@RP@���P���QP@���@P���{SP@���%P����[P@���yP����n[P@���`P����RP@��� P���GP@���#P���EP@���$P���(HP@���@)P���@IP@����'P���`QLP@���@-P���@IP@���-P���(LP@���`,P��� OP@���:-P���@QP@����3P���`NP@���@c9P��� ~QP@���9P��� SP@����,P���UP@���@.P���UP@��� 0:P���kUP@���~-P���`XP@���MP���ZP@���@ P����^P@���:P���z\P@���@=P���YP@��� X?P���WP@���HP��� [P@���`JP���^P@���2P���beP@���5P���IgP@���4P���iP@����h-P���@iP@����i4P����]jP@���<P���@_dP@���`GP���@bP@���"NP���cP@���KP���@eP@���@sSP����fP@���@RP���lhP@���HP���`hP@���`>P���mP@���@j3P���mP@���@4P����nP@����CP���@mP@���@JP���@iP@���@[P���@jP@���V\P���lP@���WP���KqP@���@YP����rP@���@B^P��� oP@���`[`P���oP@���"ZP����wP@����GP���@}P@���2<P���P@���Q0P���`}P@���V0P���`P@���}6P���ρP@���@R0P���|P@��� 0.P���@P@���@cP���P@���@%P����P@����5P���@_P@����6P���`P@���NP���9P@���UP���:P@���@_P���~P@���@xP���|P@����@|P���@`P@���@}P���΂P@��� 9^P���P@���@^P���ǘP@���|P���P@���ڌP���׊P@���iP���`P@����P���IP@���P����P@��� P���cP@���ɗP���jP@���@RP���@P@��� XP����P@����P����wP@���@P���!P@���@bP���P@���P���cP@����'P���AP@���2P����P@���@8P���P@���P���`ݙP@���ٝP����P@���P���`P@���\P���ǜP@���@RP���P@���@P��� &P@���P���@FP@����GP���P@���P����P@���P����UP@����zP����,P@���@P���@ P@���ѸP���qP@���ҿP����P@���P���� P@���P���@P@���P���@àP@���@P���P@���P����P@����P���sP@����zP����ҧP@���@P����P@���@P���P@���P��� >P@���P���P@���@BP���P@���VP���@P@���`P���@hP@���@P����P@����P����EP@���`kP���rP@���P���@P@����7P���P@���,P���zP@����P���2P@���`P����P@���P���P@���P���tP@��� !P���P@���P���qP@���P����P@��� P���8P@���`P����$P@���P����]P@���`P���P@���P���I{P@��� P���/zP@����PP���@h|P@���P���@pyP@���@P���7{P@���P���`y}P@���`P���{P@���@P���'yP@���P���`xP@���P���`zP@���SP���P@���Q���P@���@jP���@P@���Q����^P@���@Q���@P@����Q���P@���`Q���2P@����Q����#P@���5Q����^P@����z!Q���)P@����Q����]P@���Q���`P@��� Q���YP@��� pQ���zP@���KQ���P@���Q��� P@���Q���̄P@��� XQ���@gP@���nQ����nP@���Q���`~P@���@Q����P@��� Q���@P@���@( Q���@-P@����Q���S~P@���Q����}P@���@ZQ��� ʂP@����Q���@?P@���Q���K}P@���@2Q���k}P@���@ZQ���{P@���Q���*zP@��� Q���{P@���` Q���xP@��� Q���@vP@��� 1Q���@guP@���@( Q����rP@���P���8rP@���P��� sP@����P���'qP@���@BP���bmP@���P����,iP@��� P���2gP@���@P���HdP@��� P���@_dP@���Q����_P@���P���@hP@���`P���RkP@���P���@gP@���@rP���@XfP@���`P����,eP@���P���aP@����/P����cP@���@P���BaP@����zP����_P@���:P���`P@���P���q\P@���2P���Y]P@���@P���@WP@���+P���bUP@��� P���HTP@���P���SP@���@P���'QP@���P���@PP@���`P���MP@���@jP����LP@���һP���NP@���@cP���@FP@���P���FP@���P���@CP@����zP���(DP@��� P���IP@���P���KP@����7P���@GP@���@P���FP@���*P����$DP@���P���*BP@���~P���`AP@��� P����?P@���үP����U=P@���#P���@6<P@����P���I;P@���P���9P@��� P���4P@���@ƬP����0P@���@{P����2P@���ҫP����3P@���@)P���|BP@���@BP����@P@���P���=P@���P���>P@���`P���<P@���DP���a:P@���P���:<P@���ɓP���9P@���@IP���7P@���P���9P@���~P���7P@���MP����1P@����P����,1P@���5P��� &.P@���P���+P@���P����,P@��� P���/P@���$P���5P@����P���J6P@���P���`.P@���$P���0P@���@|P���`0P@���V|P���-P@��� tP���q(P@����wP���Y-P@���yP����w/P@���@vP���0P@���|P���23P@���xP���4P@���@Z}P���@-8P@����/{P���@ 9P@����qP��� 7P@���@brP���@N3P@���nP���� 6P@���jP��� 3P@����oP����n/P@���mP���+P@���@ZmP���/P@���@jP����^1P@���@)hP���Y1P@���@cP����.P@��� dP���@)P@���`knP����!P@���@ZmP���@%P@���@(aP���P@���`[`P����P@���WP����!P@���"VP���P@���@ZP����P@����qYP���@_P@���@cUP���P@���@QP��� ~P@���@PP����#!P@����zMP���@O"P@���@AOP���P@���GP��� P@���@JP���!P@���uEP���P@���DP���P@����JKP���@ P@���@AOP���P@���PP���@?P@���LP���@`P@���KP���P@���@LP���P@����UP����P@���wcP����P@���@iP���@NP@���[P����P@���V\P���P@��� dP���@P@����RP��� &P@���:QP��� P@���YP��� P@���VP���b P@����zQP����w P@���@jGP���P@���JP���`P@���`|CP���P@���FP���@%P@���+NP���SP@����.LP���KP@���<P���`�P@���@R<P���� O@���@+P���@P@���`[(P���9O@��� >P���@pO@���3?P���`YO@���D<P��� O@���=*P���O@����!P���O@���@r P���O@���@!P���O@����#P���`O@���@u!P����O@���@P���`O@���"P���`O@���@)(P��� UO@���T&P���൰O@��� P���`O@���@ P���`O@���'P��� >O@���%P���\O@���@P���O@���(P���`O@���1P���@O@����h5P��� ҿO@���`dLP���O@���IP���O@����QP���O@��� LP���9O@���BAP���`O@���?P��� O@���~EP���@-O@���@FP����O@���BP���׺O@���GP����<O@���KBP���O@���<P���`˭O@���@9P��� fO@���HP���9O@���@JGP���`HO@���>P���͛O@���`AP����O@���CP���RO@���4P���`O@����70P���`_O@���S7P��� `O@���1P���O@���@2P���`˅O@���^1P���`}O@��� 06P���{O@����,P����yO@���)P���@FrO@���@<P���@rO@���@(EP����$xO@���@ HP��� %O@���IP���K}O@����GP��� &vO@���:QP���`HO@���@RP���z|O@��� ?P���i[O@���@j;P���@PO@����HIP���lHO@����MP����vHO@���@RP���UO@��� pVP����WO@���@UP���]O@���OP��� cO@���*WP���)cO@����JWP��� hO@���@RPP���`iO@���UP���2kO@���TP���`vO@��� !WP���@htO@����hYP���iO@����eP���gO@���hP����MlO@��� pP��� vO@���kP���@O@���mP��� fO@���@oP���BO@���@oP����{O@���@ tP���yO@���tP��� vO@���rP���qO@����rP����eoO@���}P����vO@���puP��� `O@���@J{P���O@���@|P���|O@���P���� ~O@����̈́P���O@���P����#O@���`LP��� gO@���@P���S~O@���P��� ,yO@��� 0P��� wO@���@1P���ZO@���@P���O@����)P��� O@���P���O@���@JP����O@���P��� O@���@P��� O@����P���O@����ܣP���O@����˦P���`HO@���`kP��� O@���P����O@���,P����<O@���@P����O@���P���O@����'P��� gO@����/P����O@����`P��� O@����zP���O@���P���O@���P���`_O@���`dP���`O@����'P����O@��� P���iO@����P����O@���P��� O@���SP��� O@���P���DO@���4P��� O@����qP���`źO@���P���7O@����P���O@���@P����O@���P���O@����P���RO@���*P��� %O@����/P���`O@���SP���O@����P���̴O@���%P���lO@���]P���O@���@J Q���O@���Q���zO@��� Q���`HO@���@Q���O@��� Q���ZO@����ZQ���O@���@jQ���O@��� XQ���8O@���?Q����O@���`-Q��� O@���@JQ���@O@���: Q���@O@���@Q���aO@��� 9Q���͓O@���P��� O@���P���QO@���P����O@���P���mO@���`P��� O@���P��� ҇O@���"P���`O@���@1P���~O@���`CP���@zO@���P���`zO@���P���@O@���2P���SO@��� P���@O@���P��� `{O@���@BP���(|O@���`LP���@zO@���P���qO@���KP���@pmO@����hP���`oO@���EP���@hlO@���P���ZhO@��� XP���iO@���`P���eO@���@P��� ^O@���*P��� XO@���P����#YO@����ԾP���SO@���P���VO@���P���UO@���P���QO@���`dP���`YIO@���`|P���(<O@����ܟP���5O@���P���`G9O@���:P����5O@���@P����51O@���tP���,O@����P��� ="O@���@JP���`Y)O@�����P���(,O@���P���`0%O@���P���O@���@rP���"O@���P���@oO@���P��� O@���{P���O@���EP��� O@���P���O@���@{P���r O@���@މP���O@���@֌P��� xO@���P���O@���ڈP���`�O@���:}P���N@����}P���`N@���P��� xN@���P���N@���`P����N@��� !P���@pO@����zP���O@���@P����M O@���@AP����O@���P���`/O@���fP���iO@���P���O@���@P���\O@���@BP���:O@���P��� O@���P���aO@��� Q���@O@���=.Q���&O@���6Q����0O@���v8Q��� &.O@���GQ���4O@��� RQ���8>O@���SQ���`CO@���QQ��� OO@���@SQ���`_LO@���`WQ��� DO@���"ZQ���`HO@���YQ���LO@���@1]Q����OO@���@j[Q���`/FO@���=fQ���TO@���`_Q���@ZO@���@cQ���aZO@���cQ����\O@���`dXQ���``O@���gQ���dO@���@bjQ��� %_O@���@kQ���aO@���:uQ����5iO@���tQ���dO@���pQ���� ^O@����.|Q����eO@��� Q���``O@���6Q���`O@����Q���@nO@���:Q���vO@���Q���yO@���@RQ���{O@���@Q���{{O@���@2Q���rO@����'Q���@p}O@���@cQ���O@���@FQ���O@����Q���@O@���+Q���`ݕO@���eQ����O@���@ZQ���@O@����)Q��� ,O@���Q���ՌO@��� Q���)O@���"Q��� O@����?Q����eO@����Q���O@����zQ���O@���+Q���O@���2Q��� xO@���@Q���O@���Q���aO@���Q���O@���2Q���O@���@Q���@hO@���Q���(O@���`LQ���UO@����Q���ϱO@����R���O@����Q���ٸO@���Q����O@����BQ���RO@����Q���`/O@���6Q���O@���:Q���cO@���Q���O@���@JQ����O@����.Q���O@����zQ���O@���@1Q���O@���Q���sO@��� Q���`O@��� 0Q��� O@���@Q����MO@���Q���`O@���@Q���`O@���Q���`O@���+Q��� O@���@Q���O@����/Q����MO@���Q���O@����Q���O@���Q���O@���"Q���`O@���@I�R���ZO@���Q���tO@���Q���@O@���Q��� O@��� aQ���`O@���,Q���O@���+R���'O@���m R���`O@���@ R���O@���@RR���JO@���@JR���O@���VR���O@���2R���PO@���R���(O@����R���O@����q R��� OO@���@JR���@O@���@R���`0O@����R���`O@���@R���O@���@R���(O@����h!R��� O@���`[ R���O@����Z!R���O@����G*R���O@���� )R���`O@���`%R���'P@���@J+R���KP@���*R���O@���@.R���`O@���2<R����P@���@8R���P@����q9R���� P@����=R��� P@����DR���@ P@���@CR���P@���NR���@P@���SR���@P@���QR���P@���� UR���`P@���`[XR���0P@���@YR���P@���QR���P@���VR���P@���^YR���P@���@B^R���P@��� Q]R���P@���@SR���P@���@[R����P@���WR���P@��� QR���@G!P@���@JR����&P@���>QR���%P@���SR���� *P@��� 0VR���)P@���WSR����^%P@���@jSR���s"P@���]R���( P@���^R���`$P@���@"ZR����#P@���:YR���:$P@���~]R���@.'P@���cR����U%P@���@gR���@)P@���}jR���(P@���:iR���:$P@���?pR���A"P@����ZyR���$P@����vR��� P@���FrR���P@���2tR���bP@���@JwR����P@���"~R���P@���@R���0P@����R����P@���%R���IP@���R���P@���@ޅR���@P@���R���YP@��� R���P@���R���`P@���@ςR���@P@���2R���`"P@����z}R��� P@���ڀR���#P@����R���#P@��� R���@%P@���R���$P@���@R���&P@����ZR���c(P@���@AR��� f.P@����'R���0P@���;R���@.P@���R���q,P@���+R����*P@���R���&P@���@R���'%P@��� !R���(P@���ڐR���`y)P@���@R����w+P@���@:R���@?(P@��� R����=*P@���=R����%P@����rR���z$P@���R���*&P@����R���/P@���wR����6P@���R��� ~5P@����R���9P@���`R���@9P@���R��� 7P@����R���7P@���@R���5P@���:R����<3P@���@bR����^1P@���R���{3P@���R���2P@���`kR���#P@���`ߠR���!"P@����7R���"P@���@JR���@!P@���@bR��� P@���R���P@���6R���P@���R��� P@���@"R���P@���@R����P@���`R���P@���@R���`P@��� R���� "P@���2R���1$P@���@R���J"P@���@R���P@��� QR����<P@���@R��� fP@���"R���`P@���@*R���rP@����zR����P@����S���|P@���`�S���P@����S���@6P@���@ S���@P@���@JS���P@���S���@P@���@2S����P@���@ S���P@���%S���P@���"*S���P@��� 1-S���@P@���@*/S���JP@����0.S���@P@���@B*S��� P@���"*S���( P@���@5S��� P@���@4S����P@���GS����P@���US���`P@���WS���P@����\S���P@���XS���(P@���iS���P@����iS���P@���@wS��� P@���yS���@P@���:uS��� fP@���fvS���@`P@����|S����P@���S���[P@����G~S���P@���S���$P@���S���(P@����{S���)P@���S���q,P@���@ S���,P@���@ׇS���1P@���� S����]6P@����ZS���@ <P@����QS���@G=P@���hS���`HP@���@VS���KP@��� TS���`LP@���@`S���@hTP@���`]S����DXP@���TS���VP@���`|SS���XP@���@ZS���(\P@����[S��� >]P@����zMS���@]P@���`ES���ZP@���+S���@XZP@���@R���NP@���@R���IP@���=R���tEP@����GR���AP@���@R���8>P@���:R���;P@��� pR����<P@����R���7P@����R���@5P@���R��� 3P@���R���2P@����R���@1P@���@ZR���[/P@��� R���j.P@���@R���P5P@���R���@:P@��� 1R����:P@���R���7P@���R����:P@���R���>P@���@RR���@@P@���R����EP@���3R����FP@����PR���@?@P@���@BR����KP@���@R���KP@���"R���`NP@���@mR���SP@���R���TP@���@R���SP@���`\R���UP@���@BR���@RP@���R���PP@���R����^QP@���@R���UP@����!R���@XP@���R���(XP@���@R���@[P@���@JR���@VP@���R���9UP@���&R����ZP@���@R���]P@���`R���3bP@���oR���@aP@���lR����]P@���\_R����\P@���M`R���_P@���mhR����fP@���`fR���hP@���lR���@kP@���lR���1pP@���xR���tP@���`R���xP@����hR����P@���R���@܎P@���aR���P@���#UR���8P@���FR���JP@���Q���@P@���@Q���@P@���`Q���@P@���@Q���P@���Q���@pP@���Q����^P@���`�Q���P@����'Q���P@���Q���ৄP@���@Q���@˅P@���@BQ���@WP@���@Q���@x~P@����7Q���B}P@����Q����P@���@Q���RP@���үQ���@oP@���Q��� &P@����Q���@ P@����`Q��� P@����hQ���ՐP@���@ޝQ���@GP@���Q���P@���:Q����P@���Q��� P@���rQ����P@���@joQ���P@���@AkQ���P@���hQ���@6P@���KjQ��� ~P@���"fQ���:P@���`Q���kP@���aQ���AP@����IQ���'P@����zIQ���@P@���@jOQ���@gP@����[Q���bP@���@j[Q���@P@���@RdQ����P@��� lQ���BP@����bQ���P@���@bQ����#P@���S_Q���PP@���;TQ���|P@���NQ���P@���QQ���kP@���@{`Q���ޠP@��� ![Q���@ P@��� gQ���ΦP@����oQ���ħP@����oQ���@P@���`�Q���P@���@Q���P@���@ΧQ���@ôP@��� 0Q����P@��� Q����P@���2Q���kP@���Q���P@���Q���bP@���ɫQ���@P@����Q���@P@���`CQ���P@���Q���@P@���@Q���P@��� !Q����P@���Q���P@����Q��� P@����`,R���bP@���=R���P@���@R��� &P@���@=R���)P@���4R����P@���)R����5P@���R��� &P@���R���@NP@����R���sP@��� R���`P@���R��� P@���@R���8P@���`d R���P@��� R���@P@���R���P@���(R���@P@����J+R���@hP@����z%R���@?P@����A/R����wP@���6R���sP@���":R���@P@����-<R���LP@���9R����P@���e?R���@h Q@��� @R����eQ@���MDR��� Q@���JR���RQ@���_R���@Q@����SR����Q@���RR���JQ@���:QR���Q@���@]R���Q@���hR���HQ@���@2hR���@Q@���@joR��� Q@���|R����]Q@���wR���Q@���@JoR���` Q@���nR���@o"Q@���2tR���$Q@���@oR���0%Q@���tnR���'Q@����tR���'Q@���@mR���*Q@���qR����$,Q@����OR���@O.Q@���ER����*Q@���@rxR���@.#Q@���zR���@ Q@���eR���@Q@���:R���`y!Q@���@RR���� &Q@���١R���@_(Q@���@R���@.Q@��� R���P1Q@��� R����2Q@���@JR���'5Q@���$R���5Q@���@R���@h4Q@���`R���`2Q@���бR����1Q@����R���3Q@���R���7Q@���@R���j:Q@���R����;Q@����GR���9Q@���+R���1<Q@���R���`<Q@���R���q@Q@��� R���?Q@���@֨R���AQ@���@KR���BQ@���@cR���9EQ@���R���CQ@���R���'=Q@���@R���8Q@��� R��� >9Q@���R���YAQ@���vR���@Q@���@1R���@o>Q@���@ R����E;Q@���S����w+Q@���@$S���@%+Q@���K*S���@,Q@���@ ,S����e/Q@���*S���91Q@����#S���Z4Q@���!S���8Q@���@)S���@.;Q@���(S���@Q@���%S���BQ@���`LS���{CQ@���R���@?@Q@���R���`BQ@���@TR����EQ@���@rR���!JQ@���R���IOQ@���mR���QQ@���� S���SZQ@���@S���@YQ@����)S���cQ@���'S���eQ@���@cS����iQ@���@( S���`igQ@��� S���jQ@���$S���1lQ@���@r(S���@jQ@���"S���@.kQ@���@B"S���hQ@����H-S���cQ@����7S����5eQ@����8S���!fQ@����4S���hQ@����=S����eQ@���KS���hQ@���IS���kQ@���@j?S���lQ@���@ <S���@kQ@���7S����kQ@���`2S���@mQ@���t2S����$pQ@����9S���HpQ@����9S���@rQ@���� 1S���sQ@����b2S���uQ@���SS����,uQ@���=RS���wQ@����IS��� >yQ@���@J_S���@%wQ@���`S���tQ@���@r\S����rQ@���:aS���@qQ@���@fS���@`oQ@���@iS���qQ@���@jkS���@Q@���qS���Q@���|S���Q@���S���HQ@���@cS��� ʎQ@���S����DQ@��� XS���ތQ@���@S����ɓQ@���S���BQ@���@IS����Q@���S���@Q@���S���Q@���@S���Q@���@{S���Q@���`S���@Q@���@S����Q@����S���Q@��� !S���Q@���SS����Q@����S���*Q@���@S���7Q@���`S���/Q@���S���Q@���S���ըQ@����S����Q@���S���@Q@���S���tQ@���S����<Q@���@ S���@Q@���S���Q@���=S���Q@����qS����Q@���S����vQ@���@JS����Q@���@S����5Q@����S����nQ@���@S���Q@���S���bQ@����S����=Q@���@S���{Q@����S���Q@���S���@ Q@���@S���`Q@���@IS���BQ@���S����Q@���S���Q@����ְS����Q@���ׯS����Q@���S���Q@���S���}Q@����/S���xQ@���`CS����vQ@���S���|~Q@���+T���z|Q@���T���Q@���@T����Q@���T���~Q@���@#T����Q@���IT����^Q@����nT����vQ@����pT���Q@���jT���@-Q@���*ST���@ˁQ@����.<T���7wQ@���@0T����pQ@����3T���roQ@���`=T����mQ@���VT����VxQ@���`CqT���@o~Q@���@~T����Q@���T���Q@����T���Q@���~mT����{Q@����pT���@yQ@����z}T���vQ@����HT���wQ@���T���sQ@���@1T����rQ@����zT���@sQ@���@:T���uQ@���T����vQ@���T���`uQ@���T����n{Q@���@sT���AzQ@���@IT����Q@���3T���s~Q@���U���~Q@���4U���ρQ@����7U���Q@����3U���Q@����3U����Q@���;U���@-Q@��� WU���@Q@���=vU����Q@���vU���sQ@����zeU���`QQ@���OU���Q@���OU����Q@���uU���1Q@���`SU����ɇQ@���U���`Q@���`\U���3Q@���ݥU���Q@���@U���AQ@���@ƒU���@`Q@���U���Q@��� ̕U���Q@���U���`Q@���lU���qQ@���U���ޔQ@����ZU����Q@����QU���{Q@���@U���ޘQ@���U���@Q@���@JU���ߛQ@��� !U���9Q@����YU���՜Q@���`U���Q@����BU����Q@���@U���@Q@���`U���@Q@���~U����5Q@���FU����eQ@���;U����Q@���@U���@ˑQ@���rU���IQ@���@V���`Q@���: V����Q@���U���{Q@���U���@Q@����V���ޘQ@����V���Q@���@3V��� Q@���>=V����^Q@���V@V���� Q@����PUV���۲Q@���\V���@¹Q@���[V���Q@����hMV����Q@���LV���Q@���@cV���Q@���\V���Q@���HV����Q@����.V���Q@���V���zQ@����V���Q@���V���Q@��� U���@fQ@���U���qQ@���U����=Q@����U���'Q@���U���Q@���U���@OQ@����U���Q@��� 9U���@Q@���YV����Q@���yV���|Q@���2V����^Q@���,}V���Q@����V���`Q@���@rV���Q@���ੇV���IQ@���*V���Q@���V����R@����fV���K R@���peV���@ R@��� 9vV���I R@����z}V����R@����uV���R@���xV���zR@���rV���R@����oV��� 'R@���ikV���H(R@����dV���{'R@���O^V��� +R@���dV����#-R@���@rdV����]2R@���@YV���@_0R@���@OV���A2R@���vXV���@N3R@���@TZV���05R@���@mTV���8R@���%SV��� ;R@���@VV���=R@���UV���@ @R@���}NV���@R@����SV����BR@���KV����JR@���HV���KR@���@8V���MR@���@AV���@xNR@���KBV���zPR@���8V����nSR@���,5V���RR@���@,V��� RR@����6V���UR@���4V���aR@���@bU���iR@���U����pR@���U���wR@���@rDU���RsR@����5U���oR@���5=U���jR@���"NU���afR@���zU����nWR@���@U���?R@���"U����E7R@���eU����=.R@����U���B)R@���U���@%R@���@RU���cR@���`U���@GR@���@ZU����R@��� U���R@���U�����R@���U���`Q@���@dU���Q@����;U����Q@���<U���Q@���7U����UQ@���^5U���Q@���7U����5Q@���`IU���`Q@���=^U���Q@���@ZU���@OQ@���XU���Q@���`U����EQ@���nU���0Q@���U���0Q@���@{U����EQ@���@ޥU����=Q@���^U���@Q@���tJU���Q@���@BU����Q@���@r<U���Q@���@"6U���tQ@���Q8U���qQ@���@>U���@xQ@���y=U���Q@���2@U���Q@���@<U����,Q@���S;U����<Q@����k>U����Q@���@Z=U���׺Q@���%3U���`Q@���/U����<Q@���5U����Q@���n3U���@%Q@���*U���!Q@���2U���@Q@���2U���KQ@���0U���Q@���`.U���@.Q@���#U���lQ@���@!U����Q@����#U���Q@���@"*U����^Q@����&U���Q@���)U���`Q@���7U����Q@���8U���@-Q@���@RU���`Q@���dU���Q@���[U���Q@���EcU���Q@���U���@Q@��� pU����R@���@pU����UR@���@pU����R@���@uaU���R@���@_U���R@���bU��� R@���@cYU���R@��� pbU���R@���ZU��� R@��� Q]U����R@����:U���R@���U���R@���@r U���Q@���` U���lQ@��� U���R@��� 0U����vR@���@RU���R@���M U����, R@���@*U��� R@����J;U���R@����J3U���R@���7U���R@����7U����R@���]2U���*R@���@1U����UR@���$HU����R@���@jGU���R@���@OU���R@���@BbU���R@���@JgU���7#R@����!_U���($R@����^U���`$R@���@gU���%R@���#mU����(R@���@lU���k-R@���jU��� 4R@��� kU����:R@���_U���@X>R@���"RU����=R@���mDU���1@R@��� 9JU���BR@���@jKU���l@R@���@bbU���AR@���2\U���HR@���@RXU���HR@��� PU���CR@���@HU���@CR@����PJU���@DR@���FNU���HR@���@RHU����IR@���5U���`yER@���KU���@NCR@���@T����>R@����dW���@\S@���W����]^S@��� W����]S@���  X����bS@���X����fS@����X����hS@���@[X����$lS@��� W���sS@���eW���`isS@���W����oS@���W���oS@���@)W���@xrS@���@vW���7oS@��� jW���qS@���.KW���mS@���FW��� fjS@���]^W����cS@���`k^W���*^S@����dW���@\S@���Q]���R@��� \]����R@���-]���`iR@���]���@R@���p]���R@���]����R@���]��� ~R@���`Ŋ]���R@���`]���S@���g]���RS@���`+^]����S@���d]���R@��� {]���AR@���5}]���R@��� \{]����R@���ސ]���{R@��� ]���SR@���Q]���R@���O���H@���4O���ޜH@���O��� H@���O���H@����O���*H@���O���`_H@���Q P��� yH@��� P���@.H@����P���`H@��� P���@H@���@ O����H@���`zO���� H@���%O���@WH@���N���ͣH@���`N���`H@����N���H@���O���H@����;h\���P-S@���ࣴ\���@60S@���\����0S@���@\���2S@���@Ϧ\���`i7S@���-\���8S@��� s\���@8S@���_\����U5S@���\\���1S@����;h\���P-S@����_���@.H@���`T_���`H@���`)_���8H@���`*_��� H@����'_����^H@��� _���`/H@���h_���`NH@���_����<H@����_���@.H@��� X���`qS@���@&Y��� wS@���@&Y����yS@����3Y���@S@���5Y����=S@���@/Y���`S@���@GBY���S@��� RY���S@���lY����$S@���Y���S@���`̥Y���@WS@���Y���S@����_Y���7S@���`Y����S@��� Y���@-S@���Y���tS@���Y��� S@���@EZ���HS@���4Z���`ŖS@����=CZ����<S@����@Z���bS@���55Z���zS@���uZ���zS@���!Y���ğS@���Y���8S@����Y����S@���Y���@%S@���&Z���`S@����OY���YS@��� Y���@S@���mY���@`S@���Y����=S@���@Y���S@���`}Y���`QS@���Y���βS@���Y���S@���`Y����5S@��� Z����S@���Z���S@���` Z���@?S@���Y����ٹS@���0Z���ாS@���@Z���{S@���3Z���ռS@���$Z���@WS@���Q4Z���@WS@���@@?Z���S@���AZ���@-S@���@Z���S@����,Z����S@��� +Z���S@���`:Z���[S@���LYZ���S@�����dZ���S@���afZ���0S@����;hZ���SS@���@bZ���[S@���[Z���`yS@����\Z���S@���@^Z���S@����)\Z���S@���OJZ��� S@���Y���S@��� Y����S@����OY���S@���Y���@S@����+Y���S@���Y����S@���(Y����,S@����Y���S@���YY���S@���Y���S@����Y���S@����Y���`S@����Y���`S@��� šY���S@���`{Y��� ~S@���iY��� S@��� NY���@gS@���[@Y���ZS@���2@Y����S@���LY���`S@����KY���@`S@��� J'Y���S@���`}Y����S@���Y���@˱S@���X���@oS@���xX���@S@���Y���@S@���Y����wS@���xX���JS@���@"X���YS@����X���S@���X����MS@���@;X���S@���rX����S@����JX���@OS@���@X��� S@����0X���@S@����X����}S@���X��� xS@���X���uS@��� X���`qS@����W���*S@���@KV���,S@���V���)S@���V����#S@��� V���` S@���V���@S@��� pV���S@��� V���@S@���V���� S@���V���@ S@����V���@GS@���@ƮV����S@���SV���@%S@���@ZMV����S@���QLV���S@����bVV���� S@���V���� S@���@ƚV���{ S@��� V���a S@���V���@S@���ׇV���@S@���2V��� S@����'V���� S@����֬V���S@���nV����S@���3V���zS@���5V���`S@���ѤV���S@���@rV���@S@���V���@S@���V���R@���V���`R@����ּV���R@���MV���R@����V���|R@���V��� &R@���V���R@���V���R@��� ̹V���@.R@���@ϲV���`R@���V���R@���V���kR@���V���@R@���@RV���kR@����V���R@���V��� ~R@���V���R@���nV����R@���?V���R@���`|V����v�S@���v|V���*R@��� lV���@R@���qV���R@���QlV���R@��� jV���R@���cV���R@���\V���R@���`KV���@R@����KV���@R@����@PV���cR@���@RdV��� ~R@���`[dV���R@���EcV��� R@���@YV���R@���@MV���@pR@����=V���R@����1V����R@����/V���!R@���@9V���R@���@{0V���@GR@���Q0V���@NR@���t&V���3R@���� V���@R@���iV���R@����V���@R@���� V���`R@���@U����R@���~U���R@���`U���@R@���@U���R@���`U���R@��� U���R@���@U���R@���U���/R@���U���R@���@U���2R@���U���@R@���@U���9R@���@jU���R@���eU����eR@���U���R@���GU���R@���@ U���R@���U���@ R@���%{U���R@���@LU���@FR@���@EU���R@���@@U����R@���)U���7R@���pU���R@���@T����nR@���T���R@���4T���@R@���T���R@���@bT���@R@��� T���lR@���@T���@R@���GT���@R@���*GT����R@���QT���`R@���@ZQT����R@���MT���ZR@����`T���@ R@���T����R@���� S���R@��� T���R@���@T����R@���@T����,R@���@S���3R@���@AS���@?R@���S���@R@���<S���`R@����S���R@��� S���@R@���S��� fR@���@S����^R@���MS���2R@���`|S���R@����zS���R@���2T���@oR@��� T���@xR@���@T���@gR@���@jT���R@���@S���@R@���@RS���@R@���S���@gR@��� +S���@`R@���$S����R@���`[S���R@��� a T���@R@���� T���`yR@���� T��� R@���~ T����R@���; T���BR@���"T���ķR@���`T���cR@���@T����R@��� pT���tR@��� !T���R@���T���@ôR@���T���@R@���@T���zR@���@T���@XR@���@T���@R@���@Z T���qR@����c T���R@����T���R@����NT���`R@���pT���R@���:T���R@���@T���SR@����T���R@����'T���KR@���T���`R@���T���R@���2T���@R@���T����wR@���nT���R@����/T���`yR@��� pT���bR@��� T���@pR@����T���@R@���@ZT���R@���@mT���@R@���T���`ԥR@���@*T���R@���T���@R@���@%U���1R@���9U���@6R@���>U���R@���<U���R@���@K>U���R@���@DU���R@����bBU���AR@���EU���`QR@����PU����eR@���@JWU���R@���^U���*R@���UaU���R@���ScU���AR@���`^U����wR@����_U����R@���@1eU���@R@���GU���@R@���ņU���qR@���U���R@���ىU���`R@���`ЍU���R@���U����٥R@����GU���R@���U���R@���`U���R@���iU���kR@���2U���@GR@���U����ER@���*U���@`R@��� U��� ʢR@���U����R@���`dU���R@���@ U����R@���@*U���@R@���wU���/R@����U���R@���@JU���עR@���@U����١R@���U���R@���~U��� ~R@���QU���ޠR@���U���8R@���@!V���R@���$V���2R@���@sV���R@���"V����eR@���@V��� >R@���.V���R@���hV���R@���@b"V���� R@���M$V����VR@���@"V���@FR@���@j'V���1R@���'V���*R@���*V����R@���@3V���@`R@���.7V���*R@���:V���R@���:V���`yR@����EV���R@���CV��� R@���@@V���R@��� CV����=R@���@PV���@hR@���"FV���R@����HV���@ӦR@���NV���R@���n{V���R@���@JV���bR@���V��� R@���@AV���R@���V���@xR@���@V���R@���`dV���'R@���2V���@ӮR@����ZV���R@���V����R@���@jV����=R@���MV���R@��� yV����R@����GV���`R@���@mV���:R@���@JV����R@���@V���R@���V���R@���%V���YR@���:V��� R@���@ V����,R@���V����^R@���@JV����R@���@V����$R@���@V����ѬR@���V����R@���V���sR@���UV���R@���@V��� &R@���V���׮R@���W���R@���?W���@ R@����W���!R@���@W���R@���W���R@���}W���@R@���@8W���@?R@���W���R@���W����R@���@; W���@R@��� W���R@����ZW���R@���@{W���@R@��� �W���R@����W���@%R@����YW���{R@���@* W���R@����W���@R@���W���R@���D(W���`�S@����(W���`iS@���MDW���@%S@���@2DW���AS@���@bJW���@S@���aW���@S@���gW���@S@��� iW���@`S@���hW���S@���pW���S@����BW��� S@����W���@S@���`CW���@S@���@bW���@S@��� W��� S@���W���S@���W���S@����W���S@���@W���S@���W���0S@���W���S@���@W���S@���@:W���@GS@���X���S@��� X��� S@���W����5!S@����cW���J&S@���W���@&S@���nW����e#S@���`\W���%S@���@X���(S@���X���+S@���@6X���@,S@���<X����E/S@���5X���@ 1S@���9X���/2S@���@5X���@3S@����)X���/S@����X���0S@���DX���I3S@���@ 3X��� 7S@���i7X���`y9S@����6X���2;S@���@K*X���<S@���/X���>S@����X����AS@����.W���cDS@����W���� >S@����W���@:S@���@+W���@8S@���}W���;S@���iW���`:S@���]W���`4S@���`�LW���/S@����KW���J*S@���@SW����$S@��� SW���`"S@���@RhW���@S@����rhW����nS@����cW���S@���]W���S@����(eW���S@����GW���$S@���FW���r'S@���� W���@W'S@����W���*S@���@J��� H@���J��� H@���J���`H@����cJ���H@���J���H@���`J���cH@���J���H@���@fJ���` H@���@J��� H@���VX���R@���Y���@R@���Y���@R@���zY��� &R@���`"Y���ZR@���Y���@OR@����Y����R@����Y���@R@���@Y����R@���IY���R@���Y���@XR@����vY���@ R@��� Y����R@���0Y���*R@��� J+Y����R@���� Y���@`R@����Y���@R@���h%Y���IR@���FX���@R@���%X���R@���!Y���`R@���@X���R@���@X���IR@���<X���RR@���QX���R@���LY���`R@��� Y���R@���aY���R@���Y���sR@���@Y���R@���|Y���@xR@��� Y���@6R@����vY���@WR@���Y����R@���Y����R@��� Y���@ R@����TY���R@����+Y����R@���Y���AR@���Y���� R@���@3Y���ZR@���@Y���@R@����TwY���R@���0]Y���@R@���^Y���@ R@���QY���R@���BY���R@���`BVY���@R@���TY���@ R@���2XY����R@���aY���R@���`BfY���@R@���YY����S@���@jY���R@���mtY���@�S@���`yY����DS@���yY���S@���pY���@% S@���YYY���S@����TY��� S@���=Y���S@����Y����VS@����Y��� &S@���=Y���`S@���G}Y����S@����TY���@S@���xY���zS@��� ^Y���@S@���[DY��� >S@���HY���@`S@���@i;Y���sS@���V(Y���`S@���r(Y���`iS@��� n/Y���S@���pY���rS@���Y���R@��� Y���|R@����JX����R@���GX���R@��� X���aR@���X���@R@���QX���AR@���Y���|S@����+Y���|S@���!Y����vS@���X���`S@���X���RS@���X���! S@���@X���@o S@�����Y���@ S@����Y���@ S@��� Y��� S@���Y���@S@����Y���HS@���@ Y����S@���Y���S@���,Y���S@���=>Y���S@���=Y��� S@���Y���@6(S@���@^Y��� (S@���@X���'%S@���@:X��� S@���5X���� S@����rX���`S@����X���S@���@;X���S@����X���@S@���žX���/S@���X���S@��� X���HS@���@X���@!S@����AX���@O"S@���@X���@x&S@����)X����E'S@���oX���'S@���X���`)S@���@"X���+S@���QX����+S@���ݙX���S*S@���X���`Q(S@���UX���� &S@���X���@$S@���pX��� S@����kjX��� S@���lX��� ~S@���fjX���S@���@qX����S@���yaX����, S@���@_X����5 S@���`CiX���R@����cX��� R@���jX���`R@���@{X���R@���@wX����R@���<[X����MR@���@WX���R@���%[X���`R@����zYX���`R@���QX���@gR@���@UX����5R@���._X���R@���@3_X����R@���tX����<R@����oX���3R@���sX���9R@���ewX���zR@����X���R@���_|X���R@���@X���`R@���rX���`iR@���@"vX���SR@���@X���R@���wX��� R@����rX���aR@����X���R@����X���bR@����(X���@R@���DX���RR@���X���8R@���@dX����vR@���@:yX���@R@���@|X���8R@����{X��� R@���yX���@R@���oX��� fR@����8sX���@hR@����BfX���R@���GeX���R@���tX���R@���X��� fR@���X��� ~R@����cX���R@���@:X���ZR@���p}X���`R@���@|X���R@���XX���RR@���@*X���`R@���@X����R@���yX���RR@���iX���R@���@X����R@���#X���@pR@���pX���`iR@���X���R@����X����R@����JX���rR@���VX���R@����:X���:R@���#AX���1<R@���_HX���BR@����IX���`yER@����CX���IR@����h1X����KR@���.X����#IR@����Z1X����EGR@���@)X���`HR@���h$X���CR@���(X���=R@���@/X����;R@����:X���:R@���@2Z���FS@��� ?Z����JS@��� XZ��� >MS@����$XZ���@MS@���DTZ���JNS@���dZ����TS@��� !cZ���WS@����$lZ����ZS@���`iZ���H\S@���pZ����]S@��� akZ����v`S@���`uZ���dS@���tZ���*fS@���@{Z���@ojS@���`ޅZ���mS@���@Z���oS@���iZ���oS@���@KZ���@.gS@���c=Z���`S@���<Z���@^S@��� AZ���ZS@���Z���TS@���=Z���/RS@���hZ���@PS@���kZ���KS@���=Z���HS@���@2Z���FS@���Y���@kS@����Y���nS@���`}Y���@6pS@����MY���@qS@���Y���buS@���QY����xS@���`kY����,yS@���?LY����,uS@����<Y���:pS@���2<Y����nS@���Y���@kS@���@W���qR@���@[W���R@����W���R@����W���R@���@"W����R@���@BW���@R@����W����wR@���@W��� R@����W���R@����W���@ܶR@���X���aR@���X���R@���@"X���@üR@���EX���AR@����X���޼R@���X���sR@����X���R@���@ X����#R@���p X����R@���X���`ԹR@����cX���@ܺR@���@:X���R@���@X���aR@���X���R@���N'X��� R@���$X���*R@���@:X��� R@���X���ZR@��� X���R@���@ X���@FR@����cW���R@���W����R@���W���@XR@���W���R@���W���bR@���@ X���R@����b X���PR@���]W���R@���W���@R@���W���`iR@���@AW����R@��� W���R@���@W���R@���@W���HR@���W���cR@���W���`R@���W���@R@���vW���@R@���`SkW���@R@����bjW����DR@���yiW���IR@���_W���R@����_W����R@���eW���R@����Z]W���1R@����J_W���R@���`W���sR@���`kZW���!R@����\W����R@���dW���R@����]W���மR@���@ _W���@R@��� dW���3R@���@W���qR@��� \���e&R@���\���@#R@���`}\���#R@���@\����v(R@���a\���@,R@���ce\���@*R@���@n\����e'R@���l\���@&R@���V\\���`+R@���=Z\���.R@���@f\���`0R@���`Tf\���2R@��� aS\���@<R@���D\���z@R@����$\���b=R@���[���.R@���T[���+R@���[���%R@���[���*R@���`[���@R@���[����R@���[���R@��� [���@R@���[���lR@����[���R@���O[���AR@���[��� R@���[���@%R@����+[���R@���[���R@���[���R@���@[��� ~R@���[���tR@���@.[����eR@����T[���@R@���[���R@���@[���� R@���-[����R@���`[����MR@���c[���R@��� 8[���R@��� [���*R@����[���AR@���T[���9!R@���ǭ[���$R@���@[���@W#R@���@[���R@���[����ER@���ൠ[��� R@���[���#R@���`[���R@����=[���R@���&~[���tR@���`r[���{R@���#u[���R@��� &[��� #R@���@[���H$R@���x[���`R@�����t[��� R@���`[����*R@����x[���Y)R@���֐[����E+R@���@i[���+R@���[���-R@���[���$.R@���Lu[���s*R@���u[���+R@���v[����,R@���Lq[���8.R@����$[���@.R@���@i[���@-0R@���@[���@1R@���[���@_4R@��� [���5R@����[���B=R@���?[���>R@���T[���(@R@��� [���@@R@���@z[���@=R@���@v[����:R@���@ o[���;R@����g[���3:R@�����p[���`8R@���&j[���6R@���=[���{+R@���G=[���!*R@���&B[����e'R@���`B[���`Q$R@���`x6[���`Q$R@���8[���A&R@���-[����#%R@����'[���2#R@���`%[���Z R@���`x*[���7R@���`T"[��� R@���[���R@���a[���[Q@���@[���|Q@���L[���@Q@����f[����Q@���? [���`yQ@����$ [��� Q@���@[���qQ@���[����]Q@���@ [����MQ@����[���@Q@���Q [���Q@���[���Q@���`xZ���Q@���@Z���`Q@���Z���7Q@��� nZ���@Q@���`xZ����DQ@���=Z���RQ@���Z����Q@��� Z���@Q@���Z���Q@���@GZ���Q@���Z���`Q@���Z����$Q@���Z���Q@���!Z��� Q@���TZ���HQ@���Z���`Q@���Z���)Q@���`Z���`Q@��� JZ����R@���Z���@?R@���@ Z���R@����Z���R@���Z���R@���@Z���R@��� \Z���R@���Z���R@����Z���!R@���Z���R@���IZ����#R@���Z���@R@���@3Z����R@����Z���@R@���Z����5R@���Z���@OR@��� Z��� R@��� Z���!R@���Z���%R@�����[���'R@���Z���(R@���[���@*R@����_�[���`,R@���[���/R@���@E[����2R@��� [���7R@���`}[���9R@���@[���`BR@��� [���CR@���[����ER@���@3[���HR@���0[���JR@���@ [���@ MR@���Z����KR@���Z���MR@���h[���OR@��� [���[SR@����[����SR@���G[����VR@����[����VR@���DZ���@QR@���`Z���{KR@���Z���KR@���LZ��� LR@��� Z���OR@���`Z����RR@���zZ���SR@��� Z���@RR@���Z���2OR@���BZ���MR@���Z���@NR@���Z���IR@����Z���CR@��� vZ���CR@����pZ����>R@���bZ����M8R@���TZ���/R@���`VZ���.R@��� _Z���1R@���B]Z����,R@��� SZ���A*R@���SZ���@?(R@����_TZ���#R@����=OZ���#R@���LZ���`yR@����TSZ����#R@���G=Z��� R@���`>Z���@ R@���`fBZ���R@���`2Z����Q@���%Z���Q@��� sZ����Q@��� Z���@ Q@���Z���Q@���Z���Q@���`Z����Q@���@Z���[Q@���`+Z���@xQ@���@Z���Q@����Z����Q@���Z����Q@���)Z����Q@���sZ���Q@����Z���Q@����Z����vQ@���@ Y����Q@��� Y���1Q@����fY���@Q@���@Y���Q@���@Y���Q@����Y����eQ@���`Y����VQ@���`Y���ߣQ@���Y���@Q@���Y���)Q@���Y���AQ@���JY����Q@���@ Y����ѠQ@���Y���Q@����={Y���Q@���@^vY���lQ@���@nY���`Q@���eY���@gQ@���iY���*Q@����cY����EQ@��� uZY���Q@����XY���@`Q@��� JOY���Q@����+GY���Q@��� ?Y���Q@���J>Y���@Q@���-@Y����Q@���`;Y���}Q@���=Y����|Q@��� 7Y���tQ@���28Y���bqQ@����<Y��� kQ@��� DY���iQ@���UY����jQ@���]Y���tQ@���@ZY���@xQ@���\Y���/zQ@��� cY���`pQ@��� jY���iQ@���@vY���oQ@����{Y����nQ@���=Y����=vQ@���Y���tQ@����TY���@XvQ@���`Y����vxQ@���Y���zQ@���2Y���yQ@���@.Y���svQ@���BY���`uQ@����+Y���rQ@���aY���@hpQ@����Y���sQ@���Y���2oQ@���`Y���@ qQ@����+Y���@pQ@���Y���@hlQ@���|Y���`lQ@���Y����dQ@��� Y���@aQ@���Y���HhQ@���@ Y��� lQ@��� Y���clQ@����vY���@gQ@���`Y����EcQ@���Y���[Q@���Y���S^Q@���&Y���`Q@���@Y���@aQ@��� sY���@.[Q@���zY���bQQ@���Y��� LQ@���`Y���HQ@��� Y���GQ@���ԵY���`XQ@���Y���3ZQ@���`ʞY���a^Q@���Y���7_Q@���|Y���[Q@��� {Y����ZQ@���Y���VQ@���@GY���VQ@��� Y���TQ@���`Y����RQ@���QY���@NOQ@���Y���`QQ@���Y���jNQ@��� ԆY���@KQ@���`}Y����vPQ@���`BrY���`LQ@��� pY����JQ@���qY���FQ@����wY����BQ@����sY���@?@Q@���yY���j>Q@���QY���@=Q@��� Y���7Q@��� Y���7Q@���@Y���b9Q@���Y����8Q@���֬Y���6Q@���@iY���2Q@���Y���@5Q@���@ Y���4Q@���Y���/2Q@���Y���3Q@���Z����C<Q@���TZ���@9Q@���Z���<Q@��� Z���7Q@���h5Z���`7Q@���QZ���@<Q@���<Z����AQ@���@Y:Z���@6DQ@���TEZ���FQ@���JBZ���CQ@���`]Z����=FQ@��� scZ���@IQ@���#uZ���`KQ@��� aZ���9IQ@���Z���KQ@���`BZ���MQ@���Z����RQ@����ܓZ����YQ@��� Z���_Q@��� Z����D\Q@��� 6Z����DXQ@���Z���@VQ@��� ҿZ���tUQ@���@3Z���ROQ@����Z���MQ@���Z���@IQ@����xZ����BQ@��� sZ���@o>Q@����= [����;Q@���@[���<Q@��� $[����;Q@���![����9Q@��� J#[���H8Q@�����<[����n/Q@���@؀[���@'Q@���[����D(Q@���@E[���$Q@����[����w'Q@���`k[���`%Q@����)[����&Q@���[���@G%Q@���[���@6$Q@���[���@`#Q@���[���!Q@����;[���@ Q@���@p[��� "Q@���=\���jQ@����P\���Q@���@S\���Q@���@R\���@NQ@���`kB\���@Q@���`B\����D Q@���@Z\���@6(Q@���e\���1Q@����Tk\���3Q@���@g\���6Q@����fk\���@8Q@���[d\���'AQ@���@b\���CQ@���@ k\����wGQ@����Ml\���LQ@���l\���tMQ@����\����=RQ@��� \���(PQ@���|\���QQ@����;\���ROQ@���-\���RQ@���`x"]���AZQ@����']��� f^Q@����#]����E_Q@���5%]���cQ@�����0]���dQ@����x/]���`bQ@���`:]���fQ@���&6]���'iQ@��� JO]���1pQ@���[]���@Q@����P]���ৄQ@��� ]���@Q@���`\���@Q@���Q\����MQ@����k\���ՐQ@���`J\���Q@����$$\����Q@���`"\���Q@��� 6$\���ΎQ@��� \����5Q@���[���̐Q@���`[���ϑQ@���[���ΒQ@���Y[����EQ@����[���9Q@���`[����Q@���`[���Q@���\���Q@��� a\���@XQ@���`\���BQ@���`!\���Q@���k-\���`QQ@����v8\���@xQ@���:M\���9Q@���r\���Q@���@Y~\���@˭Q@���@\���Q@���#\���@.Q@����;\���{Q@���`f ]���ߧQ@���I$]��� Q@���9]���8Q@���`b]���Q@���an]���@ Q@����xo]���SQ@���hm]���@hQ@��� n]���@GQ@���&]���Q@���`]���߿Q@��� ~]���Q@��� r]���Q@����;4]���@Q@���4]���@Q@���^ ]���@NQ@��� ]���JQ@����\���`iQ@���@\���@hQ@��� ]����Q@��� ]���Q@��� \���Q@���@\���Q@���D\���0Q@���:\���Q@���@3\����EQ@���@3\���HQ@���@\���Q@���0\���Q@���\���Q@���I]����Q@����$X]����Q@���@Z]���@ Q@��� 6X]���Q@���d]���Q@���`f]����Q@���mh]����5Q@���`^]���Q@���a]���HQ@����k]����MQ@���@ϊ]���1Q@���&]���Q@����$]���Q@���ِ]����Q@���]���Q@���`n]���Q@���B}]���@OQ@���|]���`Q@���=m]��� fQ@���Qq]���Q@���@]���Q@���J]���`yQ@���@i]���@ Q@���൘]���`Q@���?]���jQ@��� ¶]��� fQ@���@]����#Q@���@]���Q@��� ]����Q@��� ]����Q@����]���rQ@���`ޭ]����DR@���]���{R@���]����E R@��� 6]���8R@���@]���`R@����Ň]���R@����T]���R@���]���R@��� ]���@_R@���]���@R@��� 8]���R@���]���+R@���y]����V,R@���Y]���� :R@���`\���IR@���\���WR@���\���BUR@��� \����NR@���=}\���@IR@��� \���8R@���~\���4R@���`\����e3R@���\���H0R@���@\���r/R@���\���,R@���\���I+R@��� \���e&R@����R���`<F@���QR���@X2F@���iS����_,F@���S��� g F@���2S���`E@����\oS��� E@���S���@E@���S���E@���S���ڢE@���@S���@E@���@2S���ÌE@���jS��� ŊE@���@S����.E@���RS��� ւE@���S����|E@���@S���DuE@���QS���`mE@���S��� gE@����9T���2E@���@T����./E@���@OT��� E@���@+VT���E@���7T��� xD@��� T����D@���T���� D@���T���E@���T��� aE@���`?T���* E@����JT���#E@����T��� g%E@���T���&E@���T���`'E@���@T����.E@���T��� GE@��� WT����GE@���T���GE@���^T��� 7OE@���aT���`6`E@���ʞT���*jE@����tT���{{E@���T����́E@����T���`xE@���VT���E@���gT��� E@���@T����FRF@���ŢT���F@���@ T���F@���AT��� F@���T���G@���@T���@@G@����T����G@���^T��� , G@���@]U��� G@����B U��� f6G@���U��� OBG@��� U���`DG@��� U����B>G@���`U��� :G@���-$U���`;G@���@1U���SG@���E7U���sG@���?hU���`՜G@����U���G@���@vU���@XG@���@V��� 'H@����,V���` H@���VV��� gG@���@UeV���l�H@���@eV����H@����*kV���@H@���yV���G@���@V���H@���-V���` H@���@V���`H@���V���`r H@���iV���� H@���ԱV���@ H@���V���`H@���qV���\H@���aV��� HH@���@4V���H@��� V��� H@��� V���cH@���5V���`/H@����SW���K-H@���@W���1,H@���@<W��� 'H@����W���@H@����JW���H@���@W���-H@���@W���+9H@����2,W��� 8H@���,W���=H@���'W���?H@����(W��� DH@��� OW���@QH@���VW��� NH@���`%WW���MH@��� :]W���(LH@���]W���GH@���iW���BH@���rW����FBH@����xW���`PH@��� W���UH@��� ّW���YH@���W��� YH@���-W���`)cH@����W����GnH@��� W���mnH@����֬W���)sH@���@:W���uH@����lW���0H@���@W��� 6H@���@W���@ H@���W���`H@���W���H@���LX���H@���Y���H@��� Y���`H@����Z���H@���+[���H@���3b\���`H@���@@3]���`H@���V^���H@���w^��� H@���ɷ^���`ʆH@���@3^���*H@���@Ϻ^���)H@���@^���@pH@���@Y^���H@���^���H@���T^���@H@���a^����H@���^����H@���k^���`HH@���^���`H@����$^���H@���`^����H@����^���`H@����_^���`_H@���m^��� H@����$^���@۷H@���^��� &H@���^���H@���@.^���\H@���c^���H@���Q^���sH@��� !^���ZH@���|^���H@��� ^���@hH@��� ^���!H@����^��� H@���`x^��� H@���^���tH@���^���@H@���k^���`YH@���_���H@���_��� H@���`k^����eH@��� ^����wH@���^���PH@��� ^���H@���L^���DH@���^���H@���^���@H@��� s^���`H@�����^��� H@����^���H@���^���`H@���^���@H@���=^��� &H@��� 6^��� I@���^���`_ I@���@^��� `I@���@@^����I@���^��� I@���^����^I@����^��� ~I@��� n^���H@���O^���RH@���`B^����H@����_���QH@���(_���`_H@���`_���H@���h_���JH@���`_���H@���� _���H@���)_���H@���|/_���@H@���4_���I@���4_���I@���I,_���`H@���*_���I@��� &_��� I@���-_����5)I@���`*_���k1I@����;_���6I@��� _��� f>I@���@_���@I@��� $_���`5I@���@*_���@6I@���@i3_���`(I@���<_��� )I@���@E?_���3I@����?_����-I@����D_���`(I@���E_���U,I@����C_���` =I@��� 9_���`FI@���4_���\I@���@Y:_���dI@���@^2_����5qI@���@3_���`uI@���@6_��� wI@���`k:_��� kI@��� >_���gI@���h9_��� g]I@���`>_���JI@��� 8G_��� f>I@���@WG_���7I@��� aK_��� 4I@��� O_���);I@��� nO_���?I@���`S_���@:I@���U_���@>I@���V_���DI@����X_���EI@���LY_���=I@���V\_���:I@����Md_���a:I@���b_���`HPI@����f[_��� OZI@��� ^_���YI@��� c_����RI@���@g_��� D<I@���Ql_��� 7I@��� r_���@?I@���@Eo_���BI@��� 6t_���`_DI@����{_���<I@���_���l@I@���_���)CI@���c}_���@NI@���`}_���!RI@��� _���{KI@���_���`NI@���_��� >QI@���8n_���@UI@����g_���``I@����)h_����gI@���ui_���`NkI@����g_���`AnI@���c_��� gmI@����v`_���vI@����Oc_��� gI@���h_���@hI@���f_���`~I@���`b_���xI@���Dd_���@WsI@���`Tj_���cpI@��� k_���@XjI@��� i_���`eI@��� \o_����ZI@���+_���`UI@���8_����vXI@���ف_���1dI@����__��� UeI@���`_���bI@���D_���dI@���_���@pmI@���@_��� hI@���ॣ_��� `kI@��� _���`6pI@����_���BuI@��� u_���`sI@����B_���`yI@��� _���@ovI@���_���`YyI@���Ǡ_���I@��� _����I@���z_���lxI@���`T_���oI@���_���sI@���@_���[wI@���_���`uI@��� _���`pI@���_���`hI@���_���vI@���`_���`{I@���`B_���I@���`_���zI@��� _���I@���r_���`ċI@���`_���`0I@���8_���I@���a_���` I@���`_���I@���_��� ,I@���`_���I@���T_���lI@��� _���`I@���=_���լI@���_���`I@���_���8I@����O_���I@��� _���I@���!_���I@���Q_���*I@��� _���@I@���@_���DI@���a_���I@���_����I@���[_���@I@���_����<I@���_����I@���_���@-I@����T_���@XI@���_����I@��� \_��� I@���@^_��� =I@���:_���`YI@���_���I@���_���I@���`_���I@���@ _���lI@����v_���rI@���_���I@����_���ாI@���`+_���I@����_���`I@��� _���@WI@���_���I@����_���@pI@��� _���I@���@_����$I@���@ _����#I@���I_���`N J@���`_���J@���!_����J@���_��� fJ@���_���`HJ@��� _���` J@���@E_���J@���_��� J@��� _���`'J@���_���7'J@����;_����$ J@��� _���J@���_��� J@��� n_���$J@����_���`G)J@���@ _���2J@���_����*J@���`_���`-J@���@_���@J@���_���@?XJ@���`_���@\J@���_���jJ@���_����#qJ@���@_���@p]J@���`_��� RJ@���`_���aBJ@����_���<J@���_���#J@��� _���i#J@���_���B-J@���@ _���&J@���`_����J@���@@_���%J@���=_���+J@���!_��� %/J@��� _���Z8J@���_���`G1J@���_��� ,)J@��� `���t1J@���`0`���P9J@���@ `����e?J@���Y_��� gEJ@���_���`HJ@���@`����@J@���@`���#J@���Z `���%J@��� /`���:J@���`����GJ@���``���@peJ@���h`���`<kJ@���``���pJ@���@`���rsJ@���`���@uJ@���`t`���SvJ@���L`��� fnJ@���`��� %gJ@��� `����hJ@���`]`���~J@���5`���`YJ@����`���`J@���@<`���J@���Y`���`J@���@*`���`NJ@���`��� J@���`t`��� J@���@`���'J@����`���`AJ@��� J`���J@��� &`��� J@���`���`J@���``���`ŲJ@���l`���{J@���`"`���1J@���G `���J@���^`���cJ@���F`���J@����`���மJ@���T_���3J@���_����ѠJ@���h_���J@��� _���`qJ@���@3_���!J@���`���`NJ@��� `���J@���``���)J@���`���@J@���P`���iJ@���`��� J@����`���kJ@���`��� xJ@��� &`���rK@����`����K@���`���J@���`���@J@���`���J@���`���`GJ@��� !`���J@��� X!`���J@���@!`���7J@���&`���`J@���@b(`���@FJ@��� '`���`ĻJ@���(`���`J@����/`���RJ@���7`���@oJ@���9`���@J@����?`��� DJ@���>`����J@���`}@`���mJ@���,C`��� J@���vB`���K@���GA`���@K@��� =`���K@���9`���@K@���=`��� K@��� =`���mK@���:`���@K@���3`���K@���/`���`/K@����1`���` K@���u3`���@K@���@:`���@K@��� XC`���`K@���@H`��� =K@��� &I`���K@���`BF`���`G!K@���`TH`���2+K@��� SI`��� D,K@���`tN`���`+K@��� |O`���i3K@���N`���P9K@���ML`���9K@����M`���?K@����M`���RGK@���`L`��� ,IK@����N`���\NK@���M`���`PK@���`4J`���HK@���B`���+K@��� A`��� &.K@���B`���3K@����A`��� U=K@���B`���`>K@���@B`���7K@���C`����6K@���>K`���OK@���K`���SK@���J`���`WK@���E`���ZK@���@`���NK@��� >`���`OK@���`tF`���` ]K@���D`���ZhK@���A`���pK@���A`���@XrK@��� jE`��� kK@���A`���`yK@���?`���(|K@���h>`��� =zK@���=`���QxK@���7`���@}K@��� 8`���`K@���?`���@K@����?`���@K@���<`����K@���_6`��� DK@���9`���K@���� :`���'K@���:9`��� K@���:`���*K@���@8`���� K@���`B`���`6K@��� 8C`���`~K@��� !E`���@K@���B`���K@���V>`��� `K@��� AC`���7K@����dB`��� K@���� D`���`qK@����C`��� K@���@>`���@K@���)@`��� 'K@���@`���K@���`t@`��� L@���B`���L@���UG`��� L@��� AM`���~L@���N`����L@����T`���!L@���X`���`.L@���d`���J6L@���Cq`����_LL@���z`���(LL@���{`���\fL@���L`���`nL@���@`��� L@���NJ`��� NL@��� A`���3L@���Ô`���@@L@���``���`M@���@b`���bM@���O`��� H0M@���`���J6M@���ݵ`���:LM@����v`���\M@��� `���mM@���``����wM@����`���r{M@���@`���@}M@���`���M@���`��� 6M@���� `���M@��� `��� %M@���Q`����M@���`���`M@���`���M@���@`���M@���`���LM@���v`���M@���'`���M@���@ a���'M@���a����M@��� |a��� NM@��� a���LM@���a��� M@���ba���M@���@a���`M@���a���@'M@��� -a���tM@���/a��� tM@����;0a���xM@���Y/a���M@���2a��� M@���@?a��� M@��� ?a���`͹M@���`Ra���M@���@Ta��� HM@����Va���@M@���aa���`M@��� fa��� ` N@����ba��� (N@���-ba���@-N@���ua���+N@���@Wa���N@����ma���'N@���@a���`qN@���a��� _'N@��� a��� O@���`a���@GP@���a���@iQ@��� a����]fQ@���`xa��� ffQ@���va���@dQ@���da���``Q@���`^a���@YQ@���Ta���RQ@��� 8Sa���@%OQ@���@ Ma����QQ@���@Ma���rSQ@���gKa���SQ@���`Ja���@NOQ@���@Ga���KQ@����)(a����<Q@����da���@:Q@���@a����7Q@���a���/:Q@����a���7Q@���`���,Q@���`o`���@*Q@���`���@,Q@���Q`���j.Q@����2`���@G5Q@���`���95Q@��� X`���7Q@���@3`���8Q@����`���R;Q@��� `����M8Q@��� `���{;Q@��� `����$8Q@���@*`���-Q@���u`���+Q@���`���+Q@��� &`���,Q@����`���>Q@���`"`���`@Q@���`���EQ@���`x`���8JQ@���5`����MPQ@���`��� fRQ@���ࣸ`���sVQ@����m`����^UQ@���`���`VQ@��� s`���XQ@���F`���^Q@���`x`���@ dQ@���`���fQ@���`���iQ@��� \`���hQ@���࣊`����jQ@��� `���@lQ@���@b`����iQ@���`���`lQ@���@E`���jQ@���L`���kQ@���L`���`ioQ@��� j`����UmQ@���@`���@kQ@���}`���@pQ@���x`���@rQ@���t`���[wQ@��� em`����yQ@����m`���{Q@��� !m`���B}Q@����g`����{Q@���`f`���xQ@��� g`���@uQ@���e`���tQ@���`d`��� wQ@��� se`���qxQ@���@b`���xQ@���&``���@?Q@���]`����^Q@���``���ƁQ@����Y`���Q@���V`���Q@���W`��� >Q@���CU`����مQ@��� U`���Q@���@O`��� Q@���Q`���(Q@���@P`���Q@���@L`���Q@��� !I`���@Q@���J`���@ Q@���@wE`���Q@����2F`���Q@���@ E`���Q@��� \C`���`Q@���B`����UQ@���;`���@XQ@���G9`����Q@���'5`���(Q@���2`���Q@���$4`���JQ@���.`���@pQ@���� 0`����Q@���`.`���@Q@���`-`���Q@���@,`���߇Q@���-`���� Q@��� /`���)Q@��� 1`���Q@���/`���Q@���`B`����wQ@���@P`����rQ@���`R`���PmQ@���Y`��� ~iQ@��� j]`����MdQ@���``���@eQ@���Ga`����iQ@���h`����^aQ@���``���`^Q@���`����ZQ@���@`���WQ@���`܊`���SQ@���`���@OQ@���`����SQ@���`0`��� RQ@���Ѝ`���@hPQ@���`���jJQ@����)`����LQ@���`����,QQ@���``��� fRQ@���`���*NQ@���`���GQ@���`���FQ@���@`���DQ@����;`���?Q@���`���?Q@��� j`���DQ@���ݥ`���BQ@���@`���@Q@���@<`���@x:Q@���൪`����n7Q@���Ǭ`���@h8Q@���``����#9Q@��� `���@6Q@���`���j6Q@���~`��� 3Q@���@`����/Q@���b`���@-,Q@���@b`���@-Q@���`���b1Q@���`���@X2Q@����2`���`y5Q@���``����7Q@���`���2Q@���Ǟ`���@6Q@���@`���c4Q@���`����]2Q@���`���4Q@���`���t5Q@���`��� 7Q@���6`���9Q@���>`���(8Q@���q`���8Q@���@`����]6Q@���`Ә`���6Q@���``���@_8Q@���`���9Q@���`���;Q@��� `���@N;Q@���b`����?Q@���Ǜ`����AQ@����`���@_DQ@���`4`����DHQ@���V`����JQ@����`���NQ@���`����NQ@���`���IQ@���`���@FQ@���Q`���HQ@���ߊ`���@NQ@��� n`���NQ@���U`���@ MQ@���M`���MQ@���`z`���SQ@���`v`���tYQ@���@~`���kYQ@���$|`���`i[Q@���`t`���`ZQ@���u`���@\Q@���ps`���J^Q@��� m`����$\Q@���@q`����UUQ@���@wm`���@%WQ@��� l`���\Q@���Mj`���_Q@��� h`����YQ@����mh`���^Q@����;h`����`Q@���@f`����\Q@���`f`���@YQ@���Gm`���ISQ@���`0f`���@`WQ@���@d`���@_\Q@���g`���dQ@���c`��� `Q@���`d`���WQ@���@3c`��� >YQ@���a`���`Q@����;f`���@ eQ@���e`����fQ@���c`���@WgQ@���b`���@ofQ@��� Xc`���dQ@���@<a`���@`Q@���a`����w[Q@���c`���TQ@���-``��� fZQ@���_`����bQ@���$^`����#aQ@���]`���7[Q@���a`���UQ@���``����SQ@��� ]`����,YQ@���@\`���`WQ@���,]`���TQ@���```���kMQ@���`t``���@HQ@���]`���HQ@���@^`����]JQ@���O^`���PQ@���@X`���YQ@��� aU`���@.[Q@���@T`���]Q@����W`���\Q@���`J`���`ikQ@����;>`���cpQ@���`$`��� fvQ@���!`���wQ@���`���@}Q@���`���}Q@���`����zQ@���``���xQ@���`���vQ@���#`���AvQ@���l%`���tQ@���&$`���oQ@���$`����lQ@���G`���@.kQ@���`���kQ@��� &`���/nQ@���_ `����|Q@���� `���Q@��� `���ăQ@��� `���@Q@���~`���`Q@���_���/Q@���`_���Q@����`���SQ@��� `���`Q@���=_���Q@���_����,Q@��� `����Q@���`K`���@Q@���#`���rQ@���@`���@`Q@���_���@˥Q@���_���ޔQ@����_���Q@���+_���`Q@���_���{Q@����_���zQ@���+_���qQ@��� J_���[Q@����s_���`XQ@��� J[_���SQ@���Y_����WQ@���z]_���YQ@���@J_���lXQ@����+G_���ZQ@���E_���\Q@����O_���]Q@����g_���ZQ@���d_���/^Q@���T_���aQ@���mH_���`_Q@���K_����v`Q@���@R_���@%cQ@���`M_���dQ@���=Z_���1hQ@���2X_����nkQ@���E_���@oQ@���`k>_���`nQ@��� <_����UiQ@��� s7_��� kQ@���4_���@mQ@���p9_���pQ@��� sO_���pQ@���Q_��� sQ@���@K_���`vQ@���J_���tQ@���D_���@rQ@���+9_���@-|Q@���!*_���@}Q@���-(_��� Q@���`*_���Q@���0_���!~Q@���4_����Q@���4_���̀Q@��� G_����~Q@��� 6L_���{Q@���L_���@Q@���A_���@ Q@��� >_���@ÄQ@��� &?_���@Q@���==_���Q@���-_���lQ@���L)_��� Q@���`B&_����Q@���&"_��� >Q@���@#_���`Q@����_���SQ@���?_���ބQ@����/_���@.Q@����/_����$Q@���@3#_����Q@���5_���Q@���_���Q@����x_���Q@���@_����Q@���3"_���@}Q@���_���|Q@���_���@xzQ@����_���7wQ@���Q_���KuQ@����; _���`nQ@���_���lQ@����v_���@OnQ@���`B_���rkQ@��� _���`gQ@����f_���7cQ@���L_���)_Q@���_���\Q@��� _���jZQ@��� _���!ZQ@���8_��� WQ@���@_���AVQ@��� ^���`VQ@��� _����DXQ@���`^���@YQ@���^���@`WQ@��� ^���@6XQ@��� ^���VQ@��� ^���� ZQ@���^��� \Q@��� n^���|^Q@���@E^���l`Q@��� ^���_Q@���^���dQ@���a^����gQ@���`+^����jQ@���^���'qQ@���c^���YuQ@���ෳ^��� rQ@����^���`tQ@���෋^���@rQ@����{^���tQ@���;^���iQ@���^���`YQ@���`]���VQ@��� ¶]���(PQ@���B]���@MQ@���]��� GQ@���Ta]���=Q@���@>]���@9Q@���>]���:Q@���@:]���@;Q@���m0]���`8Q@����]����6Q@���h]���z8Q@����]��� 3Q@���?\���3Q@���]���<Q@���]����>Q@���`\���;Q@���\���@<Q@���\����3Q@���\���0Q@����\����$,Q@���=\���'Q@���ɇ\���@!Q@���\���9Q@��� \���Q@��� \���Q@���\��� Q@���`\���Q@���a~\���Q@���`Bz\���Q@���@\���`QQ@���@3\��� fQ@���ീ\���@Q@����;\����EQ@���p\���JQ@���V\����$ Q@���^\���@g Q@���`f\���� Q@���\���A Q@��� !\���Q@����\��� Q@���@\���Q@��� J\���@Q@���\����P@���\���@P@���@^\���P@���@\���@6P@���2\���P@���r\����P@���@E\���P@���`\���@P@��� \���@P@���@\����<P@���`W\���qP@���T\����wP@���Y\���`P@���|\����P@����\���P@���@ [���P@��� [���@P@���[���@P@���@.[���P@���T[���'P@���Y[���P@���@Y[���P@���8[���@`P@���[���P@���@@[���@P@���5[���@ P@���Q[���P@���@[���P@���`[���`P@���•[���@P@���ى[���P@���[���P@���nj[����#P@��� [���P@���|[���`�Q@���`[���/P@���}[���@?P@����;[���P@���`}[����#P@���`z[���P@���|[���qP@���t[����nP@����l[����wP@����o[����P@���g[����eP@���o[���RP@���l[���P@���8b[���@P@����=_[���@ P@����`[���@P@���`+Z[���P@����W[���@P@��� 6D[���P@��� :[���JP@���^A[���@P@����$@[���cP@���@6[���*P@���4[����]P@���@2[����EP@��� !/[��� P@����O/[���3P@���,[���P@���@ '[����P@��� [���2P@���u![���@6P@���[����<P@���Q[���8P@����[��� P@����)[���[P@���|[���zP@����[����P@�����Z����P@��� Z���zP@���Z���@`P@����T [���P@��� [����5P@���z[���P@���`%[���`P@���`&[���`P@���![���sP@��� \[���P@���0[���P@���([���)P@��� J [���@˽P@���@W[���rP@����[���@.P@���`[��� fP@����� [���PP@��� 6�[��� ~P@���?Z���sP@����Z���`P@���Z���sP@���`}Z���P@���Z���@hP@��� uZ����P@���Z���P@���`Z���P@���@ Z���@OP@���Z���P@���Z���P@���`Z���cP@���Z���P@���Z���P@���Z���@`P@��� Z���P@���Z���P@���Z���`P@��� Z���@_P@���Z���@P@���Z���KP@���@Z���@%P@���Z���P@���@Z���KP@���@ Z���rP@��� Z���P@���`BZ���:P@��� !Z����$P@���5Z���৸P@����vZ���@P@���Z���*P@���uZ����P@���Z���P@���@Z���P@���@ Z���P@���Z����]P@���Z���P@���=Z���@WP@���Z���@ P@���Z��� >P@���2Z����VP@���3Z���JP@����xZ���@oP@���=Z��� ~P@���Z���@P@����fZ���tP@���@Z����P@����[���P@����Z���`P@���Z����UP@���Z���1P@���`BZ����EP@���Z���9Q@���@Z��� Q@����Z��� Q@���QZ���Q@���TZ����Q@���Z����<P@��� Z����Q@���@.Z����Q@���@@Z���@XQ@���SZ���Q@���2Z��� Q@���@ͳZ���B Q@���̬Z���@OQ@���`xZ��� Q@��� Z��� Q@���Z���@%Q@���@^Z���Q@����vZ��� Q@���Z��� Q@��� \Z���*Q@���Z��� ~Q@����Z���`Q@���@Z���Q@���tZ���Q@���rZ���|Q@���@nZ���@Q@���lZ���@%Q@���hqZ���@o"Q@���GiZ���`(Q@���[Z���%Q@���`kZ��� Q@���=Z���@Q@���DZ���`Q@���ԡZ���ZQ@����OZ���`Q@���@iZ���@Q@��� 8Z���@Q@���@3Z���`Q@��� Z���Q@���Z���@Q@���Z���@Q@���ٱZ���`Q@��� \Z���`Q@���@Z���Q@���Z���Q@���rZ���@pQ@���Z���Q@���Z���Q@��� Z���@Q@���Z����5Q@���`Z���7 Q@���`Z���2 Q@���Z��� Q@���QZ���b Q@���`T [��� Q@���B[���@Q@���`[���[Q@����[���cQ@����f[���` Q@���|[���@O Q@���[����U Q@����[����V Q@���@[��� Q@���[����Q@���[���@ Q@���[��� Q@���k[���`Q@����d[���Q@���`-[���Q@���-4[���Q@����[���%Q@���`[���'Q@����dZ���`,Q@����Z���3Q@���`Z���@%7Q@���@Z���@6<Q@��� sZ���H8Q@����+_Z���.Q@���^Z���,Q@���`bZ����]*Q@���ZZ���9!Q@���TZ���� Q@���TZ���@Q@��� [Z���{Q@���@pbZ���Q@��� cZ���`Q@���@ZZ���� Q@���UZ���aQ@���@RZ���Q@���`EZ���Q@���?@Z����Q@���GEZ���Q@���59Z���SQ@���`5Z���@Q@���@6Z���Q@���<Z���(Q@��� :Z���Q@���,Z���@Q@���`'Z���rQ@���8&Z���8Q@���`*Z���@ Q@����� Z���� Q@���Y����UQ@���`Y���Q@���Y���Q@���BY���@F Q@���Y���S Q@���`Y����nQ@���Y�����Q@���@Y���@P@���`Y���P@���&Y���@P@���Y���9P@��� Y���@P@���@~Y���jP@���dY����P@���=ZY���@P@���0]Y���`P@���`9Y���qP@���`:Y���@`P@���8Y���P@���`x6Y����P@����+'Y���P@���:%Y���bP@���%Y���`P@���Y���@P@���`4X���qP@���`X���P@���X���P@���@X���*P@���@X���P@����ZX���@P@���@X���P@���@dX��� P@���]X���3P@���@X����P@���ÜX���`iP@���X���P@���@X���P@����X����Q@���yX����Q@���@|X����P@����X���lP@����X���1P@����JoX���P@���@bX���8P@���@mDX����P@���@CX���@P@��� NX���PP@���GX���@P@���eOX����EP@���TX����P@��� YX���`QP@���5iX���`�Q@���lX���Q@���rX���!P@���@2xX���P@���X���HP@���@X��� fP@���%X���P@���X����UP@���5X���`Q@���@TX��� Q@���iX���a Q@���� X���@Q@���@:X���Q@���`tX���Q@���QX���a Q@���X���Q@���@X����Q@���@ȨX����DQ@����X���!Q@���@+X���Q@���ʢX���Q@���X����Q@���X���zQ@����X���Q@���WX���Q@���@pX���@Q@���@oX���Q@��� rX���Q@���_|X���tQ@���X���Q@��� X���@"Q@���@TnX���`y!Q@���@"jX��� Q@����ZiX��� Q@����kbX���`Q@����_X���@Q@���`gX���Q@����BfX����Q@���bX��� Q@���RX���@XQ@���� @X���Q@���5AX���Q@����{DX���7Q@���@EX��� Q@���@3;X���@NQ@���@m,X���Q@���(X����Q@����r,X���Q@���_(X���r Q@����{(X���@oQ@���@"X���Q@���X���Q@���@2,X���@Q@���1X���`Q@���3X���Q@���2X���Q@���@,X����Q@���(X���Q@���X����Q@��� X���Q@���#X���@Q@���� X���Q@��� X���/Q@���@W���@Q@���X���@ Q@���@:X���Q@���@ X���P@���@X���ZP@��� X���zP@��� X���P@����X���@P@���X���`QP@���X����P@���@X���P@���VX���1P@���X���`P@����X���JP@����ZX���P@����BX����P@����X���P@���X��� P@��� X���`P@���X����DP@����)X���P@���`SX����P@���`W����P@����AW����P@���@W���`P@���W����P@���W���`P@���@W���P@���W���@XP@���@mW���`yP@����8W���@ P@����JW���P@����W���@P@���MW���P@���@W���P@���@W���� P@����kW����P@����BW���@P@����W���P@��� W���`P@����W���9P@����W���P@���@W����vP@���%W����P@���NX����P@���@X���JP@���@X����ѼP@���@X���@WP@���@ X���@P@����BX���:P@���@X���@P@���oX���@_P@���X���@_P@���pX���P@���^ X���BP@���@X���KP@���.W���P@���W���@P@���vW����^P@���QW����<P@���@W���@P@���?W���{P@���@W����P@���=W���@.P@���@X����P@���yX���RP@����X����ѼP@���W���P@����W���`P@����bW���P@���W���@.P@����BW���@P@���`W��� P@���W��� ~P@����W���P@����W����P@���@W����P@���W���P@����)W���'P@���W����#P@���@:W���@_P@���W���� P@���W���P@���@[W���@P@���UW����P@����8W���rP@���pW���P@���#W���P@���W����d�Q@���W���Q@���W���Q@���@W���Q@���@W����Q@���QW����Q@����QW���jQ@��� XW���`(Q@���$pW����E'Q@���lW���`Q,Q@���@;dW����]6Q@���@:iW���P9Q@����hW���;Q@���@jW���8>Q@���@vW���@g=Q@��� uW���@h@Q@����0zW���?Q@���@mW���9Q@���@[W���@N7Q@����0W����U5Q@���W����V0Q@��� W���@_0Q@���@KW���@-Q@����{W����D0Q@����W���8Q@����W���c<Q@���W����>Q@���.W���<Q@���W���PAQ@���W����AQ@���ÀW���`JQ@���@W���GQ@���W���SJQ@���`W���QQ@����ΓW���@RQ@���`4W���@hTQ@���@W���@UQ@���@|wW����VQ@���VpW����5YQ@���cW���1\Q@����cW����ZQ@���`SsW���@SQ@��� xW���@MQ@���tW���@MQ@���uW����JQ@���eWW���XQ@����eW���WQ@���?\W����^Q@���bW��� ~aQ@���kW���kaQ@���rW���|^Q@����QuW����n_Q@���wW��� \Q@���n{W���[Q@��� W���\Q@���`W���0aQ@����rW���KiQ@���fW���`hQ@���W��� kQ@���W���iQ@���ŮW���fQ@���5W���@6dQ@����bW����rQ@����bW���roQ@���@W����pQ@���W���@orQ@���W���qQ@���� X���[wQ@���@CX���wQ@���nX���@ }Q@���@"X���@G}Q@���@ X����Q@���@$X����Q@����#X���@ Q@���X����=Q@���@X���Q@���]X���ϡQ@���@X����vQ@���@ X���Q@���vX���Q@���W����Q@���@*W���@%Q@���X���JQ@���@X���'Q@��� X����ɧQ@���@*'X���ײQ@����J'X���Q@���@X���@-Q@���@X���@Q@���`4X���Q@���X���'Q@���#X���Q@���"X���Q@���X���Q@���gX���Q@���@X���Q@���X���7Q@���nX����Q@���@X���8Q@���W���8Q@���@+W���@FQ@���W����EQ@����W���Q@���"W���IQ@��� !W���`iQ@���W��� Q@���.W����MQ@���@[W����nQ@����(W���Q@����)W���Q@����bW���@ Q@����bW����Q@����W���SQ@���@KW���Q@���W���Q@���ѬW����,Q@���eW���Q@���W���@Q@����rW���{Q@���W���zQ@���VW���@Q@����W����<Q@���`ߘW���@%Q@����bW���Q@���yW����]Q@��� W���1Q@���W����Q@���gW����Q@���@W���Q@����W����Q@���W���Q@��� W���JQ@��� W���Q@���=zW���Q@���@mtW���Q@����mW���@Q@���@lW��� ~Q@���htW����Q@���@ sW���@Q@���@NW���@OQ@���^MW���Q@���X>W���Q@���@6W����Q@���":W���`ԹQ@���6W����Q@����{<W��� ~Q@���gAW���1Q@���BW���@Q@���=W���Q@���@1W����Q@��� (W���@pQ@���,W���Q@���@%W���@Q@��� W����MQ@����W���zQ@����W���Q@���vW���Q@���U W���Q@���� W���Q@����W���Q@��� W����MQ@���FW���7Q@���@W����Q@���V���`Q@����zW���Q@���V����VQ@���V���lQ@���V���஖Q@���.V����Q@���hV���Q@���hV���Q@���@V���@ӎQ@���`V���؉Q@���@V����Q@����PW���Q@���W���@ Q@���W���*Q@��� 1W���@6Q@����W���`ŊQ@����ZW���Q@����!#W��� ~Q@���-$W���`Q@��� 1W���@˅Q@���@V����Q@����)V���KQ@���QW���@-xQ@���@#W��� sQ@����"W���qQ@���@%W��� pQ@��� *W���|rQ@����'*W���pQ@���@7W���lQ@���@B"W����#mQ@���W���lQ@���W���@ojQ@���@W���@xjQ@���`W����ngQ@���W���:hQ@���@*V���`_Q@���`kV����jQ@�����V���hQ@���V��� gQ@���`V����bQ@��� V���/bQ@���rV���Z`Q@���QV���@dQ@���V���``Q@���V����bQ@���V���^Q@���V���^Q@���@V����bQ@���V���B]Q@���V���@[Q@���@;V���@\Q@���pV���@ZQ@���%V���`WQ@���V���RQ@���V����PQ@����rV���`PQ@���V���@.SQ@����V����QQ@���5V���VQ@���`[V��� fRQ@���V���DQ@���#V���@OBQ@����@V���{?Q@����ΧV����n?Q@���V��� <Q@��� V���s:Q@���V���9Q@���V����n7Q@���UV���5Q@���@V����4Q@���@V����U1Q@���vV���1Q@���@ǡV���@%/Q@����V���@,Q@���V���)Q@���WV���%Q@���}V���@-$Q@���@bV���!Q@���@V����,Q@���V���Q@���6V����Q@���@mV���*Q@���@uV���7Q@���nV���Q@���@V���Q@��� V���Q@���V���Q@���V����Q@���~yV���@Q@����uV����"Q@����zV����n#Q@����|V���&Q@���sV���t-Q@���qV����,-Q@���oV���*Q@���@qV���'Q@���mV���P)Q@����bnV���`*Q@��� IlV��� 0Q@����rpV���(<Q@���@mV���c@Q@���@SV���PQ@���FV���QQ@���@R<V����NQ@���7V���IQ@���V����$<Q@���U���Z0Q@����kU���`Q@���@U���` Q@���V���Q@��� V���Q@��� V����Q@���` V���Q@���UV���AQ@����V���@OQ@���@V����Q@���@dV���Q@���@cV���0�Q@���V���bP@���:V��� P@�����V���@P@���U����P@���U���@P@����U���P@���wU���YP@���`[U���@P@���U����eP@���#U���P@��� aU���P@���U���IP@��� U���`P@���`[U���P@����8U��� &P@���U���[P@���rU���`iP@���U����P@���U���:P@���U��� P@����U���P@���U���sP@����bU����DP@����U���P@���@U��� P@���@lU���P@���`U���@P@���`ϢU����P@���2U���@-P@���@U���P@���XU���@P@���EU���P@��� U����=P@���U���IP@����bU���P@���MU���P@����U����Q@���U���@P@���@U����Q@���yU���IQ@���zU���@Q@���wU���zQ@���@xU���@. Q@���=rU���� Q@���uU���Q@���}rU���`yQ@��� 1mU���Q@���@oU���@Q@���jU����Q@���nU���Q@���hlU���@*Q@���}jU����.Q@���@^U���R/Q@���^U���0Q@���ncU���@1Q@���WU���0Q@���XU���@./Q@���@NU���t-Q@���NU����.Q@��� PU���c0Q@���@b2U����.Q@���0U����1Q@��� 06U���@4Q@���;@U��� 3Q@���:IU����#5Q@���VLU���@.7Q@���eKU���7Q@���@1AU���7Q@���AU���9Q@���?U���@;Q@���MHU���;Q@���}FU����U=Q@���m4U���@`;Q@���@3U���B=Q@���?U���(@Q@���@d4U���BQ@���%U���?Q@���@"U���@Q@���@GU����eGQ@��� GU���IQ@���3?U��� JQ@����0JU���`JQ@���`LU����HQ@���SU���0IQ@���RU��� fJQ@���@MU����<KQ@���@]U���QQ@���2`U���TQ@���VU���SQ@����7`U����YQ@��� _U���JZQ@���UU���\Q@���+ZU���]Q@���@s_U��� [Q@���bU����]Q@����aU���aQ@���mXU���cQ@���bU���hQ@���bU��� fjQ@����\U���:lQ@���$\U����oQ@���@`U��� pQ@���`[U���|rQ@���ZU���pQ@���UUU���qQ@���]VU���`QtQ@���@eU���tQ@���dU��� vQ@���@)XU���@xvQ@����EU���YqQ@���@{8U����vQ@��� 0U���KuQ@���"U����wQ@���@U���kuQ@����T����^mQ@���+T����EkQ@����7T����#mQ@����T����ekQ@���@jT���lQ@���@RT���@hQ@���T����fQ@����BT���hQ@���@T���hQ@���ǩT���gQ@����OT���@eQ@���@T���`dQ@���T���`Q@��� T���@_Q@���nT����cQ@���T���bQ@���@T���:`Q@���T���ZQ@����kT����^YQ@���@*T���lXQ@����zT����WQ@���:T���7SQ@���@T����PQ@����T���NQ@��� QmT���PQ@���@ WT���LQ@����zQT���`EQ@���]T���DQ@���dT���?Q@���}T���`8Q@���@kT���9Q@����eT���`7Q@���5eT����,5Q@���\T���7Q@���RT����M4Q@���OT���@G1Q@���,QT���-Q@���@)PT���@)Q@���@VT���@X&Q@���@ciT���Z Q@���`sT���@!Q@���DtT���Q@���@"~T����Q@���`T���jQ@���T���@!Q@����?T����"Q@���ET���rQ@���2T���`Q@���T����Q@��� pT���Q@����T���Q@���T����Q@����zT����Q@����T���Q@���`T���@ Q@���ӖT���!Q@���ӖT���Q@��� T���`QQ@���T���)Q@����ĘT���@ Q@���~T���|Q@����T���ZQ@���@"T��� Q@���5T���`iQ@���tT���@ Q@����T��� Q@���T��� Q@���T��� Q@���T���@Q@����T��� Q@����AT���P@���|T����P@���@[T��� P@���OT��� fP@����OT���IP@���@BVT���P@���[T����DP@���aT����eP@����ZuT���@ۿP@��� }T���P@���`T���P@���T����5P@���ډT���@P@���@T���P@����zT����$P@���T����P@���T���cP@���@T����P@���@T���@P@����T���[P@���@T���@6P@���@T���@hP@���T���BP@���@ T���PP@�����U���P@����U����VP@����T���ެP@���T���BP@���T���P@���#T���@ۯP@���T���P@���T���P@���@T���cP@����T���P@���@U����UP@��� U����٭P@��� U����P@���U���P@���@U���@_P@���U��� ~P@��� XU����^P@���@{U���@WP@���@U����P@���U��� P@���@$U���3P@����U���@P@���9U���P@���6U���P@���@(U����P@���`CU����P@���NU���@6P@���@ZIU����P@���@<U����P@���9U���`yP@����8U���@P@���V0U���P@���#U����P@���/U���@pP@���@"U���`P@���!U���P@���@+U���P@���]&U���@6P@���U���ϱP@���U���BP@���U���P@����U���RP@���QU��� P@��� U���@P@���� U���kP@���U���P@���T���P@��� T���@GP@���NT���P@����T����nP@���T��� ~P@���T���׊P@���@BT���ωP@���@T����EP@���]T���ৌP@����JT���`ݍP@����.T���@_P@���i U���1P@���@U����eP@����U���P@���@U���P@���SU����<P@���!U���P@���@ (U���@P@���(U���@ P@���U���@ˍP@���U���`ŊP@����zU���/P@���;(U���P@����/U���9P@���@7U���P@���;DU���@P@���GU���ǔP@���iKU���ǐP@����)PU���`yP@���SU����P@����!SU���@.P@���UU���9P@���UU���)P@���]U����P@���qU����P@����zU���@6P@���@rU��� ڠP@����ZU���2P@���@rU���ՠP@���5U���P@���U����P@���@U���P@���@U���P@���U���P@���@U���P@���@LU����vP@���@2|U���P@���lyU���`ŊP@���@U���P@���T~U���|P@���]U���@WP@���@U���yP@���@U���YqP@���U���@oP@���&U����bP@���U��� _P@���U���@_\P@����U���@ZP@���@*U���@TP@���U���PUP@���@ V���YP@���"V���eP@����bV����VhP@����bFV���jnP@���@ZV����<wP@���htV����M|P@���nV���|P@���nV����wP@���nV���kuP@���rV���tP@����!V��� xP@���-V���@.wP@���`\V���1xP@����(V���YyP@���oV���@yP@���@ V��� {P@���@V���byP@���?V����~P@����rV���{P@���@V���sP@���~V���tP@���V���yP@����bV����zP@���V���sP@���@oV���anP@����(]V���*fP@��� \V���@xbP@���@WV���@N_P@����LV��� [P@���@2DV���PUP@���U���ARP@����JU��� OP@���`SU���LP@����{U���� JP@����U���HP@���ҿU���/FP@���U���CP@���%U���8P@���U����.P@���U���@G-P@���U���/P@���U���-P@����U���(P@����U���@$P@���@U���@ P@���?U���@XP@����BV���P@����9V���/P@���U��� P@���EV���P@���V����P@���@V���`P@���@+V����D�P@���.V���UO@���-DV���kP@���LV���P@��� PV���3 P@���XRV���P@����AV��� O@���KV��� O@����0RV����P@����OV���O@���WV���P@���v\V���bP@���obV���@P@���@2dV���9P@���_V���O@����!kV���P@���5mV����P@����GrV���@P@����tV���P@����AoV����P@���@[pV����P@���`4rV���`P@���@xV��� P@���?tV��� P@���?tV���`y P@���V���:P@���zV���P@����|V���P@���tV����MO@���@2tV���IO@����~V���`O@���@|V���O@����(V��� fO@���V���O@���@V����P@���ݑV���:�P@���˅V���JO@���V���O@���f~V���O@���}V���O@���iV���O@���ಃV��� O@���V���`O@���V����O@���@ȐV����vO@���V��� O@���@|V���@O@���%V���@O@����AV��� O@����V���!O@���V���@O@����V���1O@����V���O@����V���`6O@���@V���zO@���źV���@-O@���@V���@O@���hV���)O@����V���O@���FV���`O@����bV��� O@����V��� O@���`V���O@���@ V���O@���W����eO@����W���{O@���@=W��� O@���oZW����P@���.gW���@P@���@hW��� P@���.gW���@ P@���yqW���c P@���@ cW���@?�P@���@:eW��� O@��� pW���@O@���iW���`HO@���`SSW���`O@���MW��� O@���^UW���O@���\W���*O@���@YW���`qO@���@'W���`O@���W���RO@���X W���1O@��� W���O@���@2 W���[O@���> W���iO@���-W���@O@���@W���O@����ZW��� ,O@���"W��� %O@����9W��� O@����W���PO@���W���`qO@��� W���`AO@����{V���iO@���@:V���`O@���V���O@����V����O@���@V���`O@���V��� %O@���V���@ӶO@���@TV���`O@����)V���`O@���V��� &O@���ڼV���ײO@���V���O@���V���PO@���wV��� ~O@����ΫV���@O@���V���`ʖO@���@ V���1O@���@2V��� %O@���@uV��� UO@����rV��� %O@���@LV���`GyO@���V����vxO@���V����MtO@���V���kO@���@KV���@hO@���oV����eO@���oV���\fO@����rW���'mO@���gW���gO@����J W��� gO@���W��� kO@����W���jjO@���gW���gO@����ZW����ZO@���@W��� SO@���V���rSO@���V��� OO@���V���@WKO@���V���@DO@���f W��� gEO@��� W��� >IO@��� W���LO@����W���1LO@���@W���`HHO@���W���CO@���W���8FO@���W���`KO@���&W���OO@����9&W���`KO@���@#W���EO@����$W��� ?O@����"W���;O@����b"W���Z8O@���@u-W����;O@���`-W���`Y1O@����b.W���-O@���@u%W���&O@���@(W���  O@����9W���O@���@&W���@O@���n/W��� $O@����2W���@O@���2W��� O@����J3W���`O@���@CW��� xO@���`SGW��� O@���� HW���`O@���@:EW����^ O@���<W����O@����;W��� U O@���@@W���`HO@���QDW��� O@���FW����O@���IW���O@����bJW���KN@���XW���O@���=NW����N@���RW���N@����XW��� ~N@����RW��� N@����SW���N@���eW���N@����9fW����eN@���_W��� ON@���@3gW���`N@���dW���` N@���@VW���N@���@[W���`N@���@WW���`_N@����OW���`qN@���@[PW��� N@���\W���sN@���`[W��� gN@����SW����^N@���wW���(N@���~W���N@���~W���`ŲN@����vW���`YN@���yuW���ةN@���@2|W���@¥N@���ņW��� N@���W���@N@���OW���'N@���W���N@���� W���`N@���~W���N@���`ߌW���r{N@���FW��� ObN@���UW���\N@���àW���@LN@���QW��� fFN@���ڤW���BN@���@:W���@pEN@���>W���CN@���©W���@AN@���©W��� ?N@���ಫW��� <N@���WW���@1N@����ΫW���`N@���GW���` N@����AW���N@���W���@-M@��� 1W���(M@���@W���9M@���~W���`M@���&W���ެM@���W���M@���fW���@hM@���۳W���`HM@���@W����M@���W��� y}M@����JW���`wM@���ಯW���`jM@���EW���cpM@���W���`oM@����W���@gM@���W���\M@���W��� `[M@���W���KeM@���NW��� \M@���ڌW���WM@���W����MM@����JW��� M@���ʎW���@1M@����ŏW���`KM@���W���`]M@���WW���bM@��� 1qW���bM@���� `W���`bM@���\W��� [M@���@YW��� YM@���TW���@`M@��� JW���@^M@���FW���;M@����J3W���(M@���2W���L@���@u-W����ML@����JW����L@���iW���L@����$W����шL@���`-W���`GyL@���@.W��� vL@����kW���̄L@���W����vL@����8W���@…L@��� W���wL@���iW���{L@���@ W���`L@���V���L@����rV���@L@���`ߜV����јL@���uV����}L@����r<V��� lL@���@5V��� kL@��� 15V���fL@���`SV���AL@����U���`8L@����ZU��� L@���U���� L@����U����L@���U���K@���@U���jK@���U��� %K@���@U���KK@���@nU���K@����bU��� K@����_U���`qK@���@lQU���K@����ZIU���@pK@���wGU���`YK@��� IHU���`K@����ZQU���(K@���@3[U���K@���,YU���QK@���nOU���`K@���@KU����vK@���@BU��� yK@���]&U���`K@���> U���ԥK@���@KU���עK@���T���K@��� T���jK@���T���K@���T����K@���T���SK@���T��� ~K@����T���ͣK@���@T��� >K@���fT���@K@���@T���KK@���gT���஖K@���@T����K@���@:T���3K@���ݕT���PK@���@T���@ӎK@���fT���KK@��� IT���`AK@����ΏT���`ŊK@����bT����K@���@T���lK@���.T���R'K@����ΛT���K@���T���`�K@����rT���`J@���@T��� J@���ݍT���KJ@����JT����J@����BT����eJ@����ΏT��� J@���NT��� UJ@���T���wJ@���QT���gJ@����JT��� aJ@���@cT���`0J@���@^T���&J@���hT���&J@���xvT���[J@���xT���`J@���@pT���J@���`T���`J@���eWT���� J@���?T���tJ@���:T��� I@���'T���I@���@T���kI@����JT���I@���)T����I@���9T���iI@���>T����$I@����?T��� I@���;T���\I@���;T���I@���6T���I@���@ 'T���iI@���@!T����MI@���@T���)I@���@T���I@���;S���`s\I@���@S���kI@���S��� DI@���@S���I@���� S���I@���S��� `I@���@CS���`I@����S���SI@���@:S��� I@���WS���`GI@���S���I@���-S���I@����S���I@���S��� I@���S���`0I@���źS���I@���@"S��� fI@���@S��� I@����S���`I@���S���൸I@��� S��� I@���S��� I@���S���I@���S���KI@���FS���rI@���=S����I@���@S���`I@���@KS���I@��� S���`I@���^S���[I@���@S���J@���S���`J@����֨S���RJ@���fS��� %J@���ңS��� yJ@��� S��� J@���S���@oJ@���S���"J@���iS���@F"J@����S���U4J@����S����AJ@���yS���DJ@���ڰS���@?HJ@���MS����MLJ@���ݱS��� SJ@���@2S���ZXJ@����kS���aJ@����bS���dJ@����{S���@?hJ@���oS���\nJ@���S���`vJ@���]S���|J@���@S���sJ@���@ƺS���J@����bS���`J@���@S���'J@����κS���J@���žS���J@����S���J@���S��� J@���5S���J@���@S����#J@���S����J@���QS���@?J@���S����J@���S��� J@���@ S���J@��� S���@hJ@���vS���`J@����S��� =J@���NS���@XJ@���VS����J@���S����<J@����S���ZJ@����S����J@��� }S���iJ@����S��� J@����S��� J@���@S���J@���@"S���K@����S��� ` K@���@S���`K@���@S���@K@���DS���`K@����S����^K@����S���@K@����S��� #K@���@S���r3K@���<S���`:K@����S��� GK@��� S���IK@���@S���`KK@���S��� NK@����S���`HPK@���fS��� yUK@���iS���gK@���S���kK@����BS���`6xK@����S���`6K@����r|S��� K@���rS���sK@���jS���K@���`tNS���`NK@����KS���JK@���hHS��� K@���+S���UL@���J'S���`_L@���`t"S���`&L@����r S���@gL@���@#S���@WL@���@!S���L@���i/S���lL@����Z9S���kL@���KS���M@����nS��� y%M@����΃S���m7M@���S���?:M@���S���>M@���pS����wOM@����S���MM@���@S���'EM@��� S��� >IM@���@+S���JNM@���@*S���KMM@���S���PM@���S���XM@����S���YM@����S���]M@���@ S���aM@����S���dM@���@S���{cM@����JS���iM@���@*S���tM@����S���{M@���`ϞS��� wM@���ڜS���ztM@���S����yM@����S��� ,yM@����JS���tM@���@S���@.wM@���@S��� M@���MS��� &~M@���S���M@���@"S���@M@���-S���`ݍM@��� ՉS���{M@���`S��� M@���@S���@XM@���`qS���@M@���EsS���@.M@���@TnS��� M@���@lyS���ײM@����HyS���M@���OvS���M@����wS���`ʾM@���@+nS���@M@���@CqS���sM@����JsS���@oM@���nS���M@����jS���SM@���@aS���M@���F^S���`GM@���@]S���)M@���@VS����$M@����VS���M@���@2\S���@M@���\S���M@���bS���`M@���@_S���`M@���@bS���7M@����RS���M@����JWS���`M@���XS���M@���%OS���RM@����TS���@N@����BVS���`N@��� hS���N@���@:eS���7N@���YS���`6N@����JcS���@N@���^S���`NN@���@gS���@X"N@��� fS���Z(N@���@oS���:4N@���MlS��� ;N@���xZS����EN@����caS���HN@����jS���\FN@���@uS���QN@���@ gS���`N@���lS���`aN@����JoS���@FbN@���aS��� OjN@���rS���dN@���xS���_N@����vS����^eN@���@}S���KeN@���xS���iN@���@S��� dN@���@S��� gmN@���rS���@oN@����qS���9N@���@lS���N@���@lS��� `N@����)pS����^N@���`\oS���8N@���rS���N@��� dS��� N@���QdS���N@����jS���sN@���`gS��� N@���@^S��� N@���@_S��� %N@���ymS���N@���@"rS���kN@���yS���@N@���~S���sN@���5S���@O@���=S����"O@���S���@X2O@���@*wS���`6O@���^S���`KO@���)S���`_<O@����8R����e'O@���@"R����"O@����R���\&O@����R��� g%O@���R���"O@���R��� yO@���R���@!O@���iR��� O@���`SR���`O@���@R��� g O@���R����vO@���`tR���[O@���R���#O@���lR���B=O@����JgR���@7O@�����dR���Z0O@���XR���@/O@���@33R��� O@���-4R��� O@���(R���`O@���'R���` O@����b*R���@O@���&R���O@���@&R����MN@����3R���N@���*R���`N@���6(R���N@���&&R���N@���&R���lN@���> R���[N@����kR���@N@��� R���N@����R���`N@���eQ���N@����(R���` N@���Q���N@����Q���N@���UQ���|N@���@8Q���UN@���Q���N@���@*Q���`N@���@:Q����N@����Q���N@���Q���UN@���@Q����N@���Q���:N@���Q��� %N@���Q��� UN@���Q���`N@���`tQ���N@����Q���`AN@���Q���ߓN@����Q����N@����Q���N@���iQ��� N@���Q���RN@����Q���@pN@���@Q��� %N@���iQ���N@���iQ���`N@��� !Q���N@���~Q���sN@���Q��� xN@��� Q���`N@���Q��� %N@���nQ���N@���=Q���؁N@���`Q���@|N@���Q��� rN@���@Q���lN@����yQ����^mN@����rpQ���uN@���@nQ���pN@����'jQ���@?pN@���:iQ����sN@���@ lQ���azN@����jQ���`܆N@���ffQ���|N@���@CaQ���bN@���`WQ���iN@���`[XQ����eN@����ZmQ���WN@���iQ����JN@���mQ����EN@���tQ���CN@��� 0nQ���7/N@����oQ���@&N@���@fQ���`N@���gQ���N@���@LuQ���N@���vQ���rN@���rQ���M@����bQ���c�N@���єQ��� M@���pQ���M@���nQ���M@���@+nQ���M@���@pQ���M@��� dQ���M@����/gQ���@hM@���@bQ���M@���iQ���PM@���gaQ����M@����bQ���� M@���nQ���M@����pQ���7M@��� iQ���M@����hQ���M@���oQ���M@���@JoQ��� M@���*[Q���M@����WQ���`6M@����PQ���ϩM@���@ OQ���M@���@KRQ���@M@���@jWQ��� M@����VQ���@M@���ZQ���M@����ZQ���M@���:aQ���`6M@���@bbQ��� M@���`Q���M@���]Q��� M@��� WQ���@oM@���iWQ���tM@����)\Q��� M@���@_Q����5M@���^Q��� &~M@���]Q���@rM@���@b^Q��� oM@���aQ���`nM@���bQ���gM@���jQ���dM@���mQ���nM@���@ kQ���rM@���@kQ���wM@��� mQ���uM@����hmQ���`|M@���tQ���M@���@KvQ���� M@����wQ���@M@���UyQ���zM@���tQ���kyM@���@sQ���DkM@����vQ���` mM@���~yQ����oM@���#yQ���jjM@���$Q���bM@���zQ���cM@���{Q���@FZM@���FzQ���XM@���sQ���ZM@���sQ���@?XM@���xQ���aRM@���mtQ���@WKM@���fQ���``M@���HQ��� `sM@���8Q���@?pM@���*Q���@WsM@���@Q���dM@��� pQ����^MM@��� Q��� KM@���Q���CM@��� Q����EM@���@JQ���,M@����Q���QM@���Q���`M@���@71Q���@2L@���@1Q���L@���@)HQ��� L@����WQ���@L@���@2Q���(L@���2Q���=L@���\2Q���SL@����72Q���cL@���2Q���~L@���1Q���L@���@1Q���L@���1Q����L@����1Q���`L@���s1Q���L@����U1Q���L@���)1Q���L@���@1Q���`L@����0Q���` L@���0Q���` L@����0Q���*L@��� `0Q���5L@����C0Q���`EL@���*0Q����KL@���0Q���UL@���/Q���cL@���@Q���@hM@���Q��� M@���@Q����M@���  Q���K-M@���Q��� `CM@���@Q���AM@�����Q���kIM@���P��� DM@���:P���?M@���"P���`/.M@���@P���(M@���P���!M@���@"Q���M@���QQ��� M@���@Q��� M@����JP���%M@���,P���j*M@���fP���r;M@��� XP���7M@���P����M$M@���@ZP���l M@���P��� M@���-P���M@���`P���`L@���@ P���QL@���P��� yM@����9P���`M@���P��� !M@����P���c0M@���@"P��� ,M@����P���1M@��� P��� ?M@���ȸP��� &>M@���yP���8M@���@ȴP���9M@���DP���`6@M@����P���`A>M@���P���KM@���SP���[M@���P���`[M@���@P���^M@��� XP��� `M@���`ߘP���lM@����JP���YM@���VP���SM@���@|P���NM@���M|P���JM@����hP���S>M@���%P���`/6M@���@JP���`-M@����zP���9M@����~P����<M@���xP���@XJM@���@wP���@OM@���P���^M@���@P���`cM@���@uP���JnM@���UuP���3jM@���@rP���`mM@���@T~P���@pM@���}P���'uM@���@vP����xM@���xP���@?M@���@pP���U|M@���@jkP���vM@���@jP���jzM@���qP���փM@���kP���M@���bP���@M@���dP���8M@���@RTP���KM@��� pZP���`6M@���@iP���@M@���@nP���sM@����jP���@-M@���@eP���M@���dP���M@���_P���M@���2dP���M@���@dP���ZM@���i[P���{M@���\P���M@���@[P��� M@����zaP���M@����!CP���൰M@���@>P���@-M@���@J[P���`NM@���@bP��� yM@���[_P���`1M@���VP���@FM@���TP��� DM@���eGP���M@���NP���`HM@���HP���@.M@���@1IP���`M@���2HP���M@���DP����M@��� GP���N@���DP���`N@���@AP���N@���DP��� N@���8P���@N@���5=P���`H N@���@c5P���`Y)N@���6P��� .N@���}&P���*N@���@rP��� N@���<'P���` %N@����'.P���k!N@����.0P���BN@���(P���j"N@���P���`N@����#P���JN@���@P���N@���@ P���N@����P���`/N@���@3P���@�N@���e3P��� gM@���P��� N@���P���` N@���P���N@���@{P���N@���%P���`6�N@���P���M@���#P���M@��� P����M@���P���`M@���@P����MM@���@bP����eM@���P���`N@��� ! P����N@��� P���`M@���P���M@���@P���`6M@��� P���M@���@ P��� M@���P���M@���P���M@���� P���`M@���@ P��� M@���P���M@��� P���@FM@��� P���@M@���@O���M@��� bO���tM@���~P���sM@���P���M@��� P���\M@����P���`M@��� O����M@����/O���`M@���4O���M@���`O���M@���@O��� M@���O���@WM@���`O���M@���P��� >M@���O��� M@���O���@M@����O����ѠM@���`O���8M@���`O���M@���`O���{M@���O���2M@���MO���M@��� PO����M@���`lO���M@���DO���M@���༺O���@M@���O���ƙM@��� \O����<M@���@խO���`YM@���O���@-M@���$O���`M@���`O���aM@���P���`NM@���@:P���@M@���@O����wM@���`O���M@����O���` }M@��� &O���`zM@��� [O����<M@���O���M@���O��� M@��� O���M@���`�O��� M@���O���ބM@����O���2M@���LO���M@���#O���zM@����/O��� y}M@���@ՕO���3zM@���|O���arM@���-O���9mM@���`O���`YiM@���5O���sM@���`~O���`KpM@����ˆO����nM@��� uO���hM@���UuO���_M@���|O���@YM@���oO���[M@���@kO���@UM@��� zO���`JM@���O����?M@���@;O���@=M@���໳O���`3M@���O���c(M@��� O���@&M@���`lO��� `;M@���@O���@=M@���O��� =:M@���O��� /M@���O��� 9M@���O���@o6M@���@fO���?M@���YO��� &>M@���NO��� @M@����GO��� f>M@��� PO��� U-M@���SOO���'M@���,iO���@? M@���NO��� M@���`kJO���M@���SO���@oM@���O��� M@���`O���`YM@���໓O���k M@���`O���M@���໫O���L@����O���M@��� O���[M@���@uqO���@M@����RO���@M@���`lIO���@M@����GO���`M@���`BO����M@���`:O���rM@���CO���' M@���AO���[M@���`;O���` M@��� 8/O���JM@���.O��� M@���42O���`M@��� )O���@M@���S'O��� M@���`~1O���7L@��� tBO���`�M@���wOO���`GL@��� DO���`_L@���6O��� L@���6O��� L@���@j3O���@.L@���`$0O���L@���*O���`L@���+O���(L@���@O��� L@���4 O���`L@���O���@L@���`ZO���{L@���`O��� &L@���-�O����<L@��� N���`L@���N���L@���`O���UL@����rO����<L@���!O���`L@���4*O���L@���@LEO���`L@���@|;O���*L@���@L-O���L@���O���`NL@���`N���@L@���N���L@���N���`ʮL@���oN����L@��� N���`HL@���iO���L@����N���'L@���N���L@���N���L@��� N���L@��� N���`qL@���dN���)L@���@LN���@hL@���`N����L@���MN���yL@���@dN����}L@���nN����^}L@���N����#qL@����N���iL@���`N���dL@���N���`eL@���`<N���ZL@���SN���@W[L@��� N��� `L@���,N���@?`L@���5N���@\L@��� N��� >YL@���N���@WL@���VN��� RL@���<N���PQL@��� N���`PL@���N���RL@���N��� %WL@���,O���UL@���S?O��� cL@���<O���8fL@���`O���hL@����O���jL@��� AO���lL@���JO��� yeL@���@O���OL@���O����OL@���@ O���LL@��� N���bIL@���`N���UDL@����N���@L@��� N��� >L@���nN���=L@���5N����M<L@���N����9L@�����O���:L@���O��� 7L@���N���'5L@���&N���2L@���`*N���r+L@���@|N���%L@���N��� 'L@���N���"L@��� N��� L@���dN���#L@���@O��� 'L@���O��� #L@���`}N��� DL@���@N��� DL@���N���@L@���N���`L@��� N���L@���໫N��� &L@���N���L@���N���L@���dN���cL@����N��� L@���N���L@����ļN���l�L@���`N����K@���લN���zK@��� N���@K@���N��� K@����kN���:K@���N����eK@��� +N��� OK@��� JN���`K@���`lN���@-K@���?N���KK@���2dN��� UK@���`T^N���`NK@���@]N����K@���nN���QK@���aN���`0K@���QN���K@���`BNN����K@���@KN���!K@���@)TN���K@���vPN���K@���WCN���`K@���`}BN���K@���:N���8K@����7N���@K@���+N��� K@���4*N���tK@����/N���@K@���o>N���K@���2DN���)K@���=N���ZK@����O3N���K@���1N���K@���=:N���`K@���`S7N���`K@���L-N���K@���(N���tK@���g-N���@ӾK@���9N���௵K@��� C=N���zK@��� 5N���@K@���`B6N���K@���@(N���K@���(N���cK@���`$N���K@���#N��� %K@���N���`ܾK@���`N���ஶK@��� h-N����K@���`*3N���`K@��� bBN��� K@���@NN���@K@����/N���`YK@���.N���SK@���@UN����K@���`wWN���[K@���`N���K@���N���`K@���`1N���עK@���@:N���QK@���$N���@ӆK@���<#N���@hK@���@M��� ,K@���YM���K@���`*M���K@��� M����K@���M���iK@���`<M���K@���M���@K@���UM���BK@���M���ךK@���@M���K@���6M���*K@���M���rK@���`SM��� K@���M���@hlK@��� hM���eK@��� M���`K@����rM���@^K@���LM���dK@���nM���`kK@���|M��� K@���M���2K@���͛M���`K@���M���SK@���`ѐM��� K@��� [M���ԕK@���@M���K@���M���@K@���`kzM���`K@���`{M��� K@���M���[K@���~M���`K@���trM���`yK@���uM��� UuK@���`$pM���tK@���LuM���'mK@���jM���jjK@��� gM����mK@���FM���@fK@���@dHM���bK@���$8M���`bK@���8M���@_K@���1M���`^K@��� 3M���`qdK@���,M���`eK@���`M���`6`K@���5L���^K@���L���ZK@��� L���`PK@���tL���`NSK@���`L���*JK@���`ZL���l@K@���@{L���<K@���|L���23K@���`L����$0K@��� M����)K@���vHM���!K@���[M���K@���`M���� K@���`*M���K@���4M���J@���fM��� K@���4M����^K@��� 3M���2K@���LM��� K@���4ZM���{K@���vM���K@���}M���`J@���M���J@���@(M���rJ@��� M����J@����M���@.J@���"M���J@���dN���sJ@���FN���`J@���4 N���J@���N���J@���$N���lJ@���,N����J@���d@N���@XJ@���fN���jJ@���noN���J@���mN��� yJ@���nwN���BJ@����)tN���J@���SN���J@���@A/N��� J@��� N��� OJ@����N���J@���`3N���J@���1N���J@���`$N���ެJ@���]N���DJ@���D$N���` J@���5N���|J@���`l!N���aJ@��� N���`J@��� 8N����J@��� N���@¥J@���|N����5J@���"M���J@���M��� J@���@{M���`J@���`M���*J@����M���zJ@���M���{J@���`M���J@���ܦM��� J@����M��� J@��� M��� `J@����M���)J@���M���@J@���lM���QJ@���@M���b K@��� M���@h K@���dL����vK@���L���` K@����`M���bK@���]&M���` K@���'5M���PK@����0M����K@���M��� &K@���L���K@���L���mK@��� [L���J@���ML���J@���L���QJ@���L����J@���@{L���J@��� \L���`J@����/L��� J@���`L���`J@���L���J@���`�L���RJ@���� L���`J@����L���`J@����L����^J@���L����vJ@��� L���2J@���XL��� J@���#QL���J@���eGL��� =J@��� s;L���J@���5L���'J@���D\L���`J@��� EL���`J@���` L���J@���K���J@���#L���J@���`L���`J@���!L���J@��� !L���'J@��� 8L���ռJ@���K���`_J@��� L��� J@��� K���`J@���`IK���KJ@���nK��� J@��� K���J@���K��� J@���K���J@���4K��� J@���K���J@���`CK���tJ@���`K���aJ@���=K���`qJ@����K���J@���K���`HJ@����K����J@���L��� &~J@��� L���:|J@���`K��� |J@��� K���`HpJ@��� K����#iJ@��� yK���@.gJ@���@|K���9eJ@���K��� bJ@���L���`hJ@����L���eJ@���K���`VJ@���K���[WJ@���@K���@FRJ@���K���KJ@���;L���SJ@���\L���@XRJ@��� K���OJ@���`K���`/NJ@���@L���@XJJ@���4L���EJ@���!L��� DJ@���uK���@?J@���K���@<J@���"K���P9J@����K���`H8J@��� bK���`-J@��� 2K���`*J@��� K��� /J@���`K���`N#J@���@K����J@����K���`0J@���|K���J@���`ZK���J@���eK����$J@���-K���@.J@���WK���@J@����K��� J@���K��� J@���`K��� J@��� K���@J@���K���I@���`K���sJ@���`}K���)I@���`1K���RI@���,L���`I@���`<3L���I@���n7L���`I@���@JL����<I@���SWL���3I@��� aL���I@��� lL���:I@��� vL���II@���`xL����I@���ЙL���@ôI@���L��� ҿI@��� &L���@½I@����HL���lI@���L���`ʶI@���L���@hI@���L���`I@���M���I@���M���I@���`l!M���ޤI@��� M���I@���&M���aI@���7M���I@���`fVM���`I@���VM���̜I@���@KM���I@���bM���{I@���qM����I@���sM���3I@���tM���I@���mM���@I@���yM���tI@���@cyM���`jI@����M��� _I@���3M����<cI@���,M���`lI@���-M����qI@����ݎM���`hI@���јM��� g]I@���#M���ZI@���@֬M���TI@���`lM���PI@���M���`0=I@���M���`7I@���`M���,I@��� [M����,I@���M���(I@��� bN���`q$I@����N���#I@���6 N���!"I@���`[N���JI@���WkN���I@��� ͔N����I@���� N��� ~I@���N���`0I@��� sN���@-I@���`N���`I@���N���I@��� N���\I@���N���I@���O���I@���2O���%I@���@d@O���|"I@��� \O���'I@���O���`NI@���O��� 'I@��� P���!I@���P���`(I@���7P���3"I@���SP���`'I@���@uP���l I@���zP���$I@���*P����#I@���@P��� I@����P���II@����ZP���I@��� P���I@���P���@F"I@����P��� I@���P���iI@���@ƢP��� %I@���eP���@I@����P���@XI@���@֨P���7I@���P���`I@���ڬP���` I@���nP��� gI@���"P�����I@���@P��� H@���P��� OH@���@"P��� H@����P���IH@���@P����eH@���oP����H@����P��� H@���P���` H@���`�P����H@���%Q���@H@��� Q����vH@���@*Q���H@��� Q���H@���@ Q���jH@���$ Q���\H@���@"Q���H@���Q���tH@����Q���� H@���Q���H@���Q���H@��� %Q���`H@���@,Q���QxH@���@)Q��� UuH@���<Q���`hH@���=Q���1dH@���@CQ��� =bH@���@GQ����eOH@���=JQ��� JH@���NQ��� `KH@���@j[Q���`'H@���kQ��� H@���sQ���H@���g}Q���|"H@���@uQ���)H@����Q���7/H@����GQ���@2H@���@͸Q���-H@���ɷQ���(H@���"Q��� g-H@���ŖQ���)H@���@Q���H@����{Q���@hH@���@ oQ���H@���E{Q����G@���@2Q����G@���oQ���`G@�����Q���G@���@Q��� G@����0Q����G@���Q���uG@���Q���_G@���@Q���kG@���@lQ���9uG@����֨Q����}G@���@Q���G@���yQ���@WG@���Q���`G@����ZQ���ԭG@���Q���ײG@���Q���)G@���@*cQ���zG@����cQ���`G@����\Q��� UG@���@:IQ���*H@���AQ���` H@���@Q��� UEH@���nP���PaH@����ZP����eH@����GP��� U}H@����8P���`YH@���@sP����H@����]P���H@����4P���H@���@P���`{H@���@ P���qH@���@ P���@aH@���@#P���`pH@���@ P��� =jH@����P��� hH@����ZP���dH@���@b P���QPH@���@P���@NH@���"P����$HH@��� P���@BH@���2P����5H@����.P���`N+H@���h,P��� 'H@���^1P����#H@����q=P���H@���<P��� OH@���GQP��� H@����(]P����H@���iP��� H@����yP���H@��� 1yP���H@���DP��� H@���@P���K H@���P����# H@���@"P���IH@���VP���`YH@���IP���G@�����P���@pG@���@P��� H@��� yP���@H@����P���)H@����JP���`AG@���vP��� G@����{pP���G@���;hP����G@���jP���iG@���hP����wG@����fP���zG@���@SP����G@���KP���`YG@����ZAP���(G@���@m@P���kG@���DP���rG@���4P���@G@���]2P���G@����2P��� G@����1P���`NG@����.P���G@���N+P��� &G@���`|+P��� G@���3P���G@���`t6P����G@����9P��� G@���8P���SG@���@9P��� OG@�����<P��� G@���=P���G@���@WP���`G@���EP���`G@���@3P���`G@���@j3P��� f~G@���@9P���` uG@���9P���lG@���>5P���`_G@���@6P���� VG@���Q4P����#YG@���.P����#YG@���,-P���sRG@����P.P��� OJG@���`+P���@G@���-P���@p=G@����)P���`Y9G@���@*'P���`q4G@���-(P���+G@����%P���@)G@���#P���`.G@���5!P���)G@���`d$P���$G@����#P���(G@��� P���G@���. P����G@����?P��� `G@���@P��� G@���FO���G@���O��� G@���O���`G@���@[P���`G@���P���`G@���`lO���� F@��� O��� F@���˽O���`HF@����O���3F@���O���F@���O���@F@���-O���|F@���ࣰO���F@���O���@hF@���@O���F@���`lO���JF@���@dO���F@���.O���F@����^O���F@����QO��� F@���@:]O���F@��� NO���F@���<O���F@���>AO���`F@���@K>O���BF@���@K.O��� gF@��� 2O���F@���@N���F@���xN���kF@���@N���F@���N����F@���N���F@���`N���F@����N���F@���UN���@?F@���N���`F@����N��� F@���N��� F@���N��� F@���D|N��� ,F@���@;|N���F@���@N���ZF@���N��� F@���@|N���`0F@���`TN���`F@���XN���`F@���ۯN����#F@��� N���`ʖF@���=N���!F@���#N���F@����N���@WF@���@LN���`F@���NN����F@���`3N���`߅F@���@O����рF@��� O����{F@���$O���`vF@���:O���3jF@���=O���`rF@��� KO���`iF@���hO���@_F@��� fO��� D\F@���@O���ZF@���@dO���`bF@��� O���bF@��� O���`N[F@����0O���VF@���@O��� DdF@���O���`_F@���FO����$XF@���O���\F@���4O��� &VF@����O���]F@���DO���`HPF@����O���!RF@���O���@.WF@��� ǹO���� VF@��� ߴO��� ~QF@���O���KF@���`O���UF@���^O��� KF@���O���@F@���?O���{;F@���UO���`;F@���O����=F@���4O��� BF@���`O���>F@���O����5AF@���`$O���`NF@���~O��� WF@����P���QF@���@�P���AF@���UP��� ;F@���@P���@F@���@ P���|JF@����P���EF@���@ P��� `;F@���P���k9F@��� 1P���U4F@����rP���:4F@����P���`0F@���@P���j*F@���P��� ~)F@���fP��� g%F@���`SP����%F@���@"P���c F@���P����M$F@����JP���@XF@���@*#P���`F@����#P���� F@���-P���F@����B*P���F@���.P���E@����5P���\E@���4P����E@���5P��� >E@���9P����$E@���59P���E@���@8P���`E@���:P��� xE@���@m<P���UE@���@=P���`6E@����BP���E@���@AP���@WE@���DP���tE@���`DP���`HE@���GP���E@���HP���`E@����AKP���@E@���NP���E@����rPP���@WE@���@KNP���2E@���PP���'E@���TP���E@���@[TP����#E@���iWP���E@����TP���@E@���@XP���E@����\P���@E@���\P��� DE@����b^P���E@����cP���E@���lP���@-E@����nP���`E@���spP���)E@���@"rP���E@���@:qP���\E@���rP���`E@���rP���JE@���_tP���`E@����wP���E@���iwP���tE@���zP���`E@���@}P���)E@���%P���`qE@�����P���\E@���}P���JE@���ڀP���`E@��� 1P���OE@���iP��� fE@���шP����E@���ੋP��� F@���P���{ F@���fP���`/6F@���iwP����DF@����8wP��� KF@���P����^EF@���@2P���1F@���@P���@-8F@���rP���XF@���@2pP���FRF@���@2pP���MF@��� hP���UTF@���@j[P���icF@����0nP��� yUF@���oP��� ~YF@����ZMP���1|F@����)4P���:F@���fP���`ʞF@���@uP��� F@���@(P���@ӦF@���NP��� F@���@P����vF@���@P����F@����JP����F@���@:P���ZF@��� P���QF@��� P���9}F@����YP���[F@���  P��� gF@���@ P���DF@��� O���*F@��� O���@F@���DO���`0F@���@LO���`F@���@O���F@���@O����F@���@)�P���F@���`t P���`F@���@ P���jF@���$P����F@���w+P���൰F@���@-P���'F@���Q0P���@pF@����3P���:F@���;P���ةF@���:P����MF@���@P���`HF@���VP���F@���@P���F@���P��� F@����zP���@F@���P���F@���^P���F@����P���F@��� !P���F@����AP���F@���@,P���G@���@:-P���RF@����$P��� F@���@m0P���F@���@u9P��� F@���@EP��� F@���@UP����F@���WoP����eF@���rP���F@���xP����F@���P���BF@���P���F@����P���F@����P���`NF@���P���F@��� P���@WF@����P��� F@����P���رF@���P��� yF@���@2P���rF@����QP��� F@��� P���!F@���pP���`F@���ݍP���`_F@���NP��� OF@���P���`YF@���6P���`F@���P��� F@���2P���bF@���P���גF@����zP���`F@��� P��� F@���@RP��� F@���QP���RF@���&P���F@��� P���QF@���UP���`6F@���"P���@WF@���P����MF@����bP���`F@���@P���`F@���@P����5F@���@mP���`F@���@P���F@���P��� F@���P���F@����P���F@����KP���`F@���#P���F@���P���@F@���@P���`F@���P���F@����|P���F@���P����YF@���vP���@F@���@P���`+G@���@P���� G@���Q���@G@���Q���@ӮG@���@Q���G@���Q���G@��� I Q���`G@���@8Q���`G@���@ CQ���G@���@CQ���#G@����NQ��� FG@���[Q���`ŢG@���Q���`YYG@����FQ���68G@���`Q���0G@���aQ���@PG@��� Q��� NG@����BQ���G@���ғQ��� F@���Q���{F@���@Q���lF@���@TQ���F@���Q���ZF@���@Q���F@���ݝQ��� F@��� Q���ZF@���@Q���`/F@���@Q���@ӶF@���Q���`ֳF@���ΪQ���*F@��� :Q��� F@���@Q���`BF@����ִQ���`F@���@Q��� xF@����Q���KF@��� Q��� yF@���Q��� F@��� eQ����ʦF@���@2Q��� F@���`Q���F@���@Q����шF@��� Q���ଂF@���UQ���F@���,R���|F@���@ER���F@���1MR���F@���tUR���`HF@���VR��� >F@���@vlR���`F@��� eR���`F@����kR���!F@���`R���`uF@���@ R����\F@����R���`<F@���"��V������M\9���@۟-@����)6���11@���'������� ������������@/9���0@�����P9���0@���`5Q9��� �1@���M\9��� 1@���U9���1@���C9���1@���w9���11@���@8��� 1@���8����1@���@/9���0@���@]~7���`5-@����Щ7���-@��� 7����.@���@7���$.@���W7���e.@���g7����.@���W7����.@���ٱ7���.@���ô7���@;.@���7���`x.@���q7��� .@���@]~7���`5-@���K^8���@۟-@����{8���µ-@���…8���@'-@���w8���@�.@���a8���Q.@���HP8���.@���L8���v-@���K^8���@۟-@���@6����/@���6����0@���`f6��� 0@����6���<0@���,6����|30@����6���;0@����)6���%0@���`6���J0@���@6����/@���#��������1,@��� @���Bu;@���@�&@�������������@z6@���%@���6@��� %@���j7@���@e%@��� M7@����$@��� N7@���߻#@���ر7@���@W#@��� H7@���#@���@7@���["@��� &~7@����,Y"@���r7@��� "@���:|7@���!@����S7@����=!@���7@���"@���B7@���*!@���7@���@!@���7@���@O!@���7@����m!@����;8@���d!@���@@8@���a!@���D8@���*!@��� s*8@��� @���#8@���l @���@^-8@���ء @����Y8@���@ @���u8@���� @��� 8@���j @���8@���b @���8@���@V @���@Q8@���� @��� 9@���@7@����&9@���|@���99@���}@���@PI9@���!"@���@K9@���`@��� 09@����_@����49@��� p@����T9@���{@����_9@���[@���`_ :@���J@���@-:@���f@���e:@����@���b:@��� N[@���\N:@���:@���@'M:@����@���@ :@���`j@���@ :@���Ʊ@����is:@���@v@���`o:@���O@����:@���Zp@���:@��� @��� :@���@��� V:@���@���$;@���@x@���@-H;@���`2@���<;@���k@��� K;@���}@���Bu;@���U@���@t;@���@���``k;@���`L@���`;@���@���@:@���@���[:@���# @��� y:@���S@����$:@���`-@���):@���@���:@���S@���:@��� @���+9@���9@���9@���ϩ@���59@���@���9@��� @��� U9@���c@��� \9@����FB@���@O9@��� @���R9@���:@��� O:9@��� @���9@���@����i9@����@���`*8@���{@���:8@���`@���8@����O@��� t8@���l@���@n8@���B@���d8@���Sv@���Z8@��� p=@���f8@��� $@���&8@���`@���`8@����@���7@���s@���2s7@���@@���@'m7@���@&^@���@E7@���@����/7@��� @���7@���@���@6@���~P@���` 6@���@F@���6@���@����6@���@���`6@���}@���6@���@����6@���@����T6@���@���6@��� z@��� w6@����@���1d6@��� @����}B6@���b@���5@���@����5@���@X2@����L5@��� @����Z5@����@���cH5@���`/V@����,5@���-7@���@4@���`@���4@���@���@^4@���ء@���@{4@���@���`t4@����@����^4@���@@@���G4@���;+@����3@���@*@���3@���sZ@���@3@����@����e3@���z@���`H3@���z@���3@���`@���2@���@@���@2@���}@���@2@���`){@��� 2@���@r{@���2@���W@���@2@���@X2@���d2@��� @����2@��� @���@Q2@���@'@���A2@��� @���`2@���`9m @���`2@��� @���;{2@����" @���e2@��� @���E2@��� @���;2@���J @���/2@���@ @���`$2@���h @��� 2@���` @���@'1@���@6P @���Z1@��� @����p1@����I @���1@���`` @��� V1@���@/ @���\~1@���@ɯ @����i1@���p @���`)[1@���` @���1@���  @���0@���@?H @���l0@���҆ @��� 0@���2 @��� 0@���@\ @���0@��� @���{0@��� @ @���l0@���@���@40@��� @���*0@���f@���`0@���`H@@��� {0@���@@��� 0@����@���@X0@���`_@���0@���/@����M0@���@���@/@���@P@���@'/@���@-@��� B.@���`d @���d'.@����L]@���x.@���`@���a.@���0@���>.@���`&u@���@4.@���@���x.@���r@����-@���@���-w-@���~@��� g-@���@7o@��� `-@��� u@���5-@��� ,@���3-@���@���`--@���@j@���?-@���@���@J>-@��� N[@���/-@���@���l -@���త@���Q,@����@���1,@���9-@���,@���`Մ@���{-@��� @����)-@��� b@���-@���@7@���@J.@���K@���z.@����@���.@����U@���.@���-@����.@���@���@ /@���@���`/@��� v@���@ǐ/@���@@���Z@0@���`@���`g0@��� #@���`Rg0@����@��� 0@���J~@���`60@���B@���0@���@@����G0@���0@���`B0@����/@���@X0@���@Ô@��� s*1@����@���1d1@���ׂ@���@^1@���`@���31@����U@���@ 2@���` @���2@��� @���`2@���j" @��� 2@���@J @����ɯ2@���m @���72@��� @����3@���d'!@���5 3@���uX!@��� S2@����!@���2@���R!@���@3@���"@���c3@���@!@����p3@���"@����G4@���BE"@���1T4@���@y5"@���t4@���P"@��� 4@���"@����4@���"@���4@����"@���4@���s"@��� 4@����.#@���74@���@^#@����D5@���S#@���W5@���#@���`h5@���$@���`*z5@���@^M$@���`5@���`L|$@���5@���=$@����i5@��� %@���@P5@���`H%@���@�6@���@-x%@����6@����%@���Z6@����%@���7/6@���E%@���36@����%@���`Rw6@���@�&@���@z6@���%@���$�������� *@���@@����7@���@Ws7@�������������R�.@���@�7@���`6�0@���@Ws7@���]2@���@-X6@��� e5@���`*4@��� 7@���@m3@���@7@���d2@����7@����f/@���m7@��� /@���@z7@���s/@��� a7@���^/@���@J7@���@k/@���6@����� /@���``6@����/@����6@���.@����6@����Tv.@���6@���r;.@���@J6@���Z0.@���@6@���1-@���;6@���T-@���`ֳ6@���a-@���j6@���V3-@���@Xb6@���-@��� a6@���@ -@����#q6@���,@���p6@��� ,@���t6@����#,@��� &6@���v,@����#6@��� T,@����p6@���`=,@���z6@����3,@���;6@���@+@���6@����+@���@{#6@����t+@���`R'6@���`D+@��� 76@���``++@���K6@���`l*@���:6@����*@���@z6@���@N*@��� 5@���,*@���@5@���)@���5@��� sZ)@���`5@���`G)@��� 6@���L)@���+96@���~)@���w6@���@J>)@����Fb6@���7(@���m6@���_(@���`z6@���`}(@����$6@���*(@���`6@����T'@����$6@��� '@���6@���`&@���@J6@���&@���@6@���@n&@���6@��� %@���@z6@���%@���`Rw6@���@�&@���36@����%@���7/6@���E%@���Z6@����%@����6@����%@���@�6@���@-x%@���@P5@���`H%@����i5@��� %@���5@���=$@���`5@���`L|$@���`*z5@���@^M$@���`h5@���$@���W5@���#@����D5@���S#@���74@���@^#@��� 4@����.#@���4@���s"@���4@����"@����4@���"@��� 4@���"@���t4@���P"@���1T4@���@y5"@����G4@���BE"@����p3@���"@���c3@���@!@���@3@���"@���2@���R!@��� S2@����!@���5 3@���uX!@����3@���d'!@���72@��� @����ɯ2@���m @��� 2@���@J @���`2@���j" @���2@��� @���@ 2@���` @���31@����U@���@^1@���`@���1d1@���ׂ@��� s*1@����@���@X0@���@Ô@���`B0@����/@����G0@���0@���0@���@@���`60@���B@��� 0@���J~@���`Rg0@����@���`g0@��� #@���Z@0@���`@���@ǐ/@���@@���`/@��� v@���@ /@���@����.@���@����+/@��� %@���(/@��� @��� /@���@���.@���@��� .@���� @���b.@���@ @���@-@���@!@���A-@���I!@���,@����D"@���+@���D#@���,@����u#@���7,@����n#@���a,@���#@���@,@���m#@����-@���#@���--@���}#@���`.@���#@���-w.@���#@���@-.@����#@���[/@���@#@��� .@���` u$@���`G.@���` %@��� ,.@���~%@���.@����q%@���?(.@���d%@���.@���I_&@��� 6.@���&@��� G.@��� '@���`# .@���]'@���`8.@���`'@��� s.@����'@���r.@���(@���`.@��� +(@���`-@��� I(@��� H-@��� (@���}-@���X)@���j-@���`N)@���n-@���k)@���-@���)@���-@���)@��� M -@���`)@��� -@���G)@���@^ -@���)@���,@���``+*@��� e&,@��� )*@���m+@���I*@���+@���� +@���@+@���@o+@���@+@����+@��� *@���`),@���@{*@����,@���T+@��� y-@���@J^+@���%-@���@XR+@���@J-@��� +@���-w-@����ш+@���3-@���+@���W.@��� ߼,@��� w/@��� +.@��� x0@����O /@��� }U1@���Z//@���2@���/@���3@���@J/@���aZ4@��� #/@���4@���`/@���j4@���;+/@���4@����#A/@���4@��� .@���@q5@��� g.@����~5@���`c.@���5@���R�.@���@�7@���%��W������R���;K��� P����Z1*��� ������ ������.���@���M���_���l�����������������������+��;��w��������������\��p��x������q������������������)��Y�����,R���kG����R���G��� MR���G����R���'G����]R���G���@R���`G���R���G���`uR���~G����]tR���`@G��� uR���G����{R���'G����L{R���`QG���,R���kG���@R���*E��� R��� bE���@ R���`[E���R���E���R���E���V|R���E����wR���E���rR���,E���pR����E���@vR���E����BzR���@E���ewR���E���>}R��� E���~R���vE����zR���E���@R���*E���3R���I����rR����I����BR����˾I���@TR��� I����R����I���VR���I����R���I���@ R���I���QR���I���-R���iI���@ R���I����0R���I���R���yI���R���4I���R���I���R���gI���3R���I���zQ����K���yQ��� K���|Q���`{K���?|Q���5yK��� vQ���~yK���@A{Q���@:uK���`S{Q���`rK���tQ���@dpK���eoQ���xK��� IlQ���uK���@LqQ���5qK���WoQ��� oK���@aQ��� trK���aQ���PyK���\Q���@sK���LQ���`xK���@JQ���W{K���zQ����K���R���QXH���@R���@XH����R���TH��� IR���TH���R���PH���R���OH���WR���QH���R��� KH����R���@c9H���@+R��� 87H���R��� @H���-R��� LH���R���QXH���@R��� G���R���� G���R��� 9G���R���@G���@uR��� F���~R���=F���@ R���F����R���`fF���R���.F���@2R���hF���R���F����ŻR���@F���@R���GF���ಯR��� &F���R���`F���@R���`F���R���,G���@R��� G���R���¥H����RR���@ H���QR���H���`R���H����R���ѐH���@*R���@ΓH���R���UH����ZR����BH���@R���H���R���H���@R���੃H���@:R��� ƊH���R���¥H���@*P���@K���P����)K���yP���@dK���@P���WK���@"P���`K���P���˕K����!P���K��� P��� ǡK����P���@K���vP���.K����P����K����P���`wK���P���K���Q���`TK��� Q���`K���NQ���oK���  Q���K���i Q���@~K����)Q���eK���`SQ��� xK����ZQ���uK���@"P���uK���P���E{K��� P���୍K���P���K���@P���K���@*P���@K����Q����K���@2Q���_K���Q���@K���Q���ǙK����Q����K��� IQ���K���@3Q����K����֤Q���҇K���Q����K���rQ���K���Q���@RK����Q���,K���rQ��� PK���Q���K���@Q��� K���Q��� }K���@[Q����zK����Q��� JwK����JQ���@|K����Q���'}K���@Q���$xK���>Q���z|K����BQ���zK���@:Q��� tK���tQ���sK���@Q����wK����ΟQ���,yK���Q���\K���@Q���4K����Q���`}K���Q���&K���@ Q���`ѐK����śQ���@K���ÜQ���`K���@Q���͓K����Q����K���'Q��� bRJ���@'Q���`J���?(Q���J���(Q���@K����(Q���FK���@(Q���`MTK���(Q���`dK����(Q���dK���@)Q���fK���(Q��� \gK��� (Q���8qK���B(Q����qK���)Q���qK���@":Q���fK���/Q���`~qK����0Q���� uK���CQ���yK���@hQ���iK���hQ����HYK���jQ���aK���^mQ���XK���mQ��� fK���pQ���dK���`pQ����\K����brQ����)\K���@sQ����fK���@RtQ���`hK��� X{Q���`hK���~Q���=bK���U}Q���`wWK���~Q���`WK���Q���]K���]~Q��� iK���Q���`CmK���Q��� CeK���@ֈQ����jK��� Q���gmK���Q���gmK���Q���jK���oQ���dK���ܖQ���jK���Q��� \gK��� Q����kK���Q���biK���gQ��� eK���%Q���SK���Q��� QK����Q��� PK����Q��� 1UK���oQ���@`K����BQ��� bZK���˱Q��� IXK���QQ��� VK���$Q���UK���@Q���GaK���Q���cK���@Q���baK���Q���-PK���Q���`KK����Q���SK����QQ���RK����Q���`WK����AQ���`UK���Q��� SK����Q���`QK���Q���`JK���5Q����CK����!Q���`CK��� Q���HK���Q���FK���@KQ���IK���Q����0NK���Q���`SK���Q���?XK���@CQ��� VK���wQ���`KK����Q��� sSK���Q����NK���Q���`}JK���#Q���SK����!Q���SK����Q���mPK���Q��� LK���Q����)TK���@Q��� SK���Q���%OK����Q��� bJK����)�R���tBK����Q���@AK��� �R����<K����Q���=:K���Q���`>K���&Q���`DK���Q���`IK���@Q���eGK���Q���>AK���xQ���FK����Q���@CK���Q���E;K���Q���D<K����BQ����5K���@;Q���2K���@ Q���@K6K���@Q���@d@K���Q���`?K���Q���g=K��� 1Q��� ;K���@Q���5K���Q���`3K����Q��� 9K���Q��� 4K���Q���:K����Q���7K���@|Q���`3K���@Q����/K���@ Q��� I8K���Q��� AK���@Q���z<K���Q����7K���Q���`<K����ּQ���`+K����ԪQ���*K���iQ��� s+K���ݱQ��� 8GK���:Q��� LK����JQ���`GK���5Q���NK���@:Q���DK����Q���`9K��� Q����2K����BQ���CK���%Q�����@K���_Q����BFK��� Q���/K���Q���v(K��� IQ���_$K���GQ���!K���@2Q���`TK����QQ���`K���@Q����K���@Q���-0K���#Q���6K���Q���u1K���Q���,1K���VQ���./K���ŊQ����,K����֌Q���)K���@׋Q���`'K���Q���K����B~Q��� &K���@}Q���?0K��� xQ��� 96K���xQ���@?K���sQ���<K���qQ��� @K����JsQ����DK���@pQ���%GK����JoQ���>K��� xQ���Q(K���nwQ���`$K����kQ���@u)K����cQ���?8K���yaQ����06K����dQ���`$0K���bQ��� s+K���VPQ���@d8K����NQ���;K���xZQ��� 8OK���`XQ����WK���@sSQ���HK����OQ���CK���MQ���CK���`KQ���XJK���~IQ��� FK����JKQ���`?K���JQ���F:K���@Q���`<K����)@Q���`T6K����qQ���K���Q��� K���@ Q��� CJ����Q���`J����ZQ���@ J���YQ���J����VQ���@J���`tVQ���@KJ��� XQ���J���@yQ��� J���Q���DJ���@"Q���J���@Q���J���ŞQ���`J���GQ���'J����Q��� ?yJ���ݕQ���J���$Q���`+J���@Q���`T~J���fQ���tJ����Q��� pJ���Q����krJ����֐Q��� IhJ���@Q���`dJ���Q���cJ����Q���^J���Q���@[J���@Q���NcJ���vQ��� iJ���?|Q���tjJ���@joQ���`~aJ���igQ��� bRJ����gQ���'EJ���\Q��� ;J���rWQ���`@J���@NQ���`<SJ���IQ����WJ��� <Q���FRJ���=2Q���`EJ���'Q��� bRJ���@4R���`lI����AR���fI���R���@KfI����R���VlI���R���MlI���`ЙR���_I���wR���_I���@:R���z\I���äR���QI���@R���II���R���CI��� R���>I�����R���`B6I���R��� 5I���R���@;<I����R���4:I���@*R����VI���%R��� VI���@R���[I���@2R���``I����JR��� eI���@4R���`lI���@tR���ZH����rR���`?H���>R���5H���@R���2H���R���+H���R���`4H���#R���6H����R���M4H���R���G1H����R���'H���R���L%H����BR���@)H���`SR���^%H���@R���H���R���@H��� R���; H���`R����H��� }R���@�H����R���4H���R���`3H���@KR���V<H���R���MLH����R���,YH���@tR���ZH���>Q��� *K���]Q����*K���Q��� [ K���@Q���^K���R���K��� R���`K�����R���`K���R���K���R��� K��� R��� K���@: R��� K���@R���K���@ R����K���@2R���@|J���QR����J����rR���J���@R���@KJ���R���@J���Q���XJ���@Q���J���6Q���J���@Q���J���Q���`J���Q���5J���Q���`J��� 9Q���UJ���@Q���J���@Q��� �K���@Q��� �K����rQ���`J����{Q����K���@ Q���` K���Q���`k K���Q����K���WQ���K���@Q���K���`Q���K��� Q���`}K���Q���@K����Q���>!K���rQ���2$K���>Q��� *K���@"R���`TI���@2R���@ϊI���NR��� ǁI���>R���`I����R���I���`߸R���I��� R����q}I����R��� zI���_R���`B~I���@R���{I���>R���vI���<R���5qI���@R���`SwI���gR���qI���@:R���rI����ZR���mI���ಧR���4jI����AR���]fI���@R���]I���@*R���cI���gR����GjI���R���@iI���@CR���vpI���R���uI����ΗR����ZI���R���`ƊI����kR���`*I���5R��� I���R���੃I����rR���I���ҧR���NI���@"R���`TI���R���'F���`SR���F����bR���g}F���R��� JoF���}R���@jsF����bzR���`yF���~R���~F����rR���\F���R���'F���tR��� I���R���`I����JR���-I���R���I���@R���I����(R���xI���@R��� I���R���I���<R��� 1I���R���iI����J{R���I���i{R����I���tR��� I���Q���`1K���Q���nK����ŷQ���@K����Q���J���@޵Q���`J��� Q���@J���Q���eJ���ӦQ���`J���@IQ���6J���@ȬQ���`J����Q���=J���Q���J���@*Q���wJ���@Q����J���ќQ���NJ���@Q���`<J���@Q���SJ���fQ��� K���yQ���@LK��� }Q���MK����Q���J����bQ����J���Q���K���Q���`1K���@cR���`2J���@dR��� 8/J����΋R���`)J���@R��� )J����rR���@:%J���@R���J����͌R���@:J��� R��� J���gR���J���@*R���pJ���@R���J���FR���� J���<R���� J���@[|R���`$(J���~R���`-J���@cR���`2J����uR��� E���yR��� E���|R����qE���@R���`[E���@ȘR���tE���R����/E��� R���`{E���@*R���vE���@R���rE���yR����KE����R��� @E���R���E����JR��� E����R���D���`ЁR���D���@|R��� D����zR���D����xR���@dD���&zR���@D���@3R���`D���R����D���@2xR���D���`tR��� D���qR���D���qR���`D��� lR���@D���@[`R���|D����eR��� D���@\R���wE���\R���` E����_R��� E����_R���@3E��� XR���`0E���XR��� &E���@CiR���`,E���kR���`�0E���QlR���:E���egR���@@E����bnR��� EE���rR��� bBE���vpR����;E���@ sR��� <E���@tR���`BE���@oR���DTE���@m`R���yeE���@*_R���mE���_R���pE���`lR��� 8oE���^aR���E���@eR���E���_R���E���@_R��� E����oR���E���yqR���E���@CqR���E���lR���`E���hlR��� zE����0nR��� zE���noR���`[E����uR��� E���@mPR���@xF��� NSR���uF���yYR���VlF���YR��� mhF���@MR���`gF����RR���aF���WR���`0fF���Q\R���D\F���@]R���`}RF���ZR���MLF���@ OR��� PRF����PR���zLF���QR���]FF��� IPR���;DF���gIR���IF���QHR���EF���rOR���AF���PR���U=F���NR���g5F���WKR���;4F����kBR���>F���ER���`l1F���`S?R��� &/F���n;R���5F��� }>R���=BF���5=R���tBF���@:9R���8F���`t2R���:F���.R��� DF���3R����HQF���@<R���`NF���:R���`SF���@l5R���fVF��� 5R���ZF���vHR���@tF���@mPR���@xF���@hR���6F���YkR���`4F���tR����)F���ioR���F���qR���F���=rR���@F���@mR���@uF���@"fR���`F���eR���@F���WgR��� F����JkR���`F���jR��� 2F���@*gR���F���@hR���6F���@ R���fI����R��� I���@ R����I���@R���`I���@R���@AI���R���`rI��� 1R���ڨI���@ϮR���@cI���@R��� I���@TR���໣I���R���'I����֤R���`<I���R��� I���oR����I���@R���`I���R���I���nR��� &I���R���I���&R���SI���@ R���fI����R���XH����bR���PH����bR���NH���@R���@KH���@R���$@H���@2R���5H���R��� +2H���-R���24H���ҳR��� ;H���@R���`?H���@:R����Z9H���ŲR����1H��� R��� t*H���5R����H���R��� H���ڬR���`H���@R��� &H���yR���@d0H���5R���`3H���ŪR���L5H����R����Y:H���oR���HH���ܢR����OH���@LR���@JH���@ R���DLH����ΟR���`SH����R���XH���`R���J���aR���D J����bR��� J���@2R���I����R���I����BR���`I���R���`I����R���`I���@:R����I���@R���@I����R���`I���@R���`I��� չR���`II���R���@I���R��� sI����JR��� J���`R���J���@R���"H���@R���@H����R���H���R��� H���$R���H���@TR���`H���@R���H���R���`H����R��� H����bR���]H���� R���?H���@;R���H���R���5H���R���`H���R��� H���R���`H���@R���"H����r4R���@cK����8;R��� JK���@;R���N K���@AR���� K���#AR���K���i3R���dK���8R���2K���0R��� 2K���]6R���J����)R���@ J����3R���@J���?R���J���AR���J���@2DR���J���@FR���J���@BR���fJ���`ER���K���TR���J���@OR���@3J����TR����J���QPR��� 8J���`PR����J����SR����J����OR��� CJ�����PR���J���dR���,J����)dR���`fJ���_R���J���@3_R���J���xfR���`J���@gR���`J����BfR���@|J���`S[R��� J���UUR���J���@QR���J����Z=R���J���`<R���J���ER���J����AR���J���@GR��� aJ�����PR���J���RR���oJ����PR��� J���@XR���FJ���E[R���@ּJ���fZR���NJ����ZER���J���@[HR���J���MHR���GJ���iKR���J���`CR���J���h@R��� &J����J?R���4J����@R���VJ���O:R���@J���@2<R���@J���>9R���@uJ����7R���`J���`4:R��� IJ���8R���]J���n7R���@J���3R���`J���7R���J���@2R���pJ���%+R����qJ���M,R���yJ���@(R��� J���@(R���J����*R���J���%R����7J����"R���`J����R���bJ���`R���`[J���R���@;J���R��� zJ���R���J���6R����7J��� R���`J����R���J���@R���@uJ���@ R���J��� R���J���R���`J���R���`J���@*R���J���@R���@J���R���`J���FR���@J��� R���J���R���J��� IR���`SJ����R���^K���@;R���K��� R���`fJ���!R���@; K���%R���� K���@2(R��� K����r4R���@cK���WR���@cH���R���H����)R��� yH���]R���H���@R���H���=R����{H���R���@{H���R����~H���6R��� z}H���R���XzH���@R����/oH���FR����lH���R��� tH���@2R����tH����R���`~iH����R���WsH��� R���lH���eR���\oH���R���`H���WR���@cH���vlR����J���@]nR���J���|R��� J���@؆R��� CI����R����I���yqR��� IJ��� lR���4J���vlR����J���@nR���hF���rR���`ڢF���tR���F���@ R����F���@KR��� ؒF���@R���F����R���@(F���R���MF���@2R���ÄF���yR���`F����0vR��� [F���nR����qF���lR���VF���@nR���hF����Q���;K����Q����K���@ Q��� K���Q���`K���@Q����K���@[Q��� K��� Q��� K����!Q��� K���"Q����K����B&Q���K���*Q���K���.Q���`K���@T2Q���oK���1Q���eK���8Q���`K���@>Q���ܶK���@2<Q���`<K���:1Q���໫K���@u9Q����BK����B>Q���K���3Q���ژK���<Q���pK����B>Q���K����BQ���FK����GQ����ZK����8GQ���`K����KQ���K���VPQ����OK���@2XQ���NK���QQ���`K���`SSQ��� ͜K���@]Q��� ǡK���VQ����K���@JSQ���VK���eOQ���K���`SSQ����BK����cIQ���`fK���oJQ���@uK���@:UQ���@KK����VQ���OK����XQ���K���@YQ��� K����A[Q��� [K���[Q���^K���@`Q���zK��� 1aQ���ٱK���UYQ����K���@3_Q���@3K��� dQ���-K����gQ��� K����fQ����K���=nQ���థK���@`Q��� K����bbQ��� K���:uQ���5K���zQ���'K����vQ��� hK���>Q���@K���Q���࣐K���rQ���`K���@eQ���UK���dQ���mK���&bQ���઒K���bQ���…K���[Q���K���@UQ���`K���@XQ���K���RQ��� ~K���`4Q��� }K��� !Q���%wK��� Q����%|K���@Q���@K���Q��� K���@Q���bK����Q��� ̈́K���@Q���༊K��� Q����K����k&Q���@uK���=&Q����K���h$Q���]K���%Q���`}K���0Q���K���@AQ��� K���CQ��� ߄K���CQ��� K���Q$Q���K���@Q���`K���y Q���K���@Q���@:K���%Q���`�K����`,Q���OK���=&Q����K���Q��� ǩK���Q���hK����Q���ੳK���� Q��� PK����H Q���yK���N Q���EK���Q���@;K����9Q���`lK���@Q����K����P���K���@"Q����K���@P���K����Q���;K���@R���oI���@*R��� H���8R����@I���?R����I����JR���I���R���`0H���@R���`H���fR���FH���yR���H����R���H���R��� H����R���vH���R��� H���R���H���NR���`H���R��� H���5R���H����ִR���H���@R���H���@3R����ZH���@ R���H���øR���@;H����R���nH���R���H���@R��� H���R���H���үR���`IH�����R���H���R���LH����9R���@(H���%R���`H���R����OH���yR���KH���<R���@H���@R����ųH���@R����HH���@:R����ļH����BR���H���üR���`H���OR���üH���R���`H���@׿R���H���R���H���R���@H����ZR���H���@CR���^H���@R���-H���@R����HH����!R���H���R���H���QR���H���R����H���@R���H���R���H���R���EH���R���H���R���fH���R��� H���@R���SH���@[R��� H���yR��� H����R��� H���R���઺H���&R���tH���� R���:H���@R����H���@2R���߼H���R���`ףH���R���5H���@R����HH����R���`[H���R���nH��� R���`H����R���:H���@R���٩H���R���H���]R���@H���R���ܮH���R���`H����R���`H���R����ˎH����JR����qH���R���5H���@R���@{|H���@2R���H���@R���mxH����bR���`|H���@ R���@"zH���R���sH����ηR���`rlH����R�����pH����R���hlH����JR����0fH���@[R���@"jH����rR���@cH���R���YH���%R���-`H���@DZR���`XH���$R����7XH����R���`ZH���ɧR���@(]H����R���lH���R���UmH���ŦR���`H���R����YZH���@"R����[H���R���`woH���@2R���htH��� IR����sH����R��� {H���R����ŃH����ZR���oH���ݝR���MH����JR��� H����R���`H����R���`H����R����H���&R��� H����!R���H���R���H���@2R���H����֠R����H����R����H���@;R���H���@R����BH���@R���H���੟R���`H����R���H����ŧR���I���@R���oI����ZR���7I����R���"7I����)R��� 2I���#R���(I���R����)I����rR���@A/I���@R���(I����R���I���R����GI���@R��� I���@[R���I����9R��� I���GR���DI���R���>!I���^R���6 I���iR���I���oR���@dI���@:R���eI���R���m�I���R����I���yR���I���@ R���I����R����I���-R����I���yR��� I���`R��� JI���R����I���ER���I���ʶR����I���R���@I���R��� !I���R��� I���ऺR���XI����JR���`%I����ZR���7I����R���fF���R��� cF���@mR���^F���VR���@3[F����BR���,YF����bR���QF����֐R���MF���R���MF���zR���@QF���@wR���@WF����R���fF����R���F����R���F���R����GF���rR��� 'F���@ȜR���`F���R���F���`R���F����R���ڸF���@KR��� F���R���@KF���@"R���^F����R���F����R���F����R���`qI���@R���mI���@R���jI���@"R���eI���>R���_I����ּR���`\I��� R���_I���R���`kZI���@|R���`WI���R���ZI��� R��� UI����R���YI���@ǭR���`fI���fR��� lI���R���?hI���@R����nI����R���`qI���R���7H���@[R���� H���R��� H���R���|H����ZR��� sH����R���H���@R����)H��� R���`T.H���R���7H���|R���`ZJ���@+vR��� MJ���@"~R���UJ���}R���eOJ����wR����GJ���xR����FJ���R���PJ���R���`SOJ���@R���CJ���UqR����3J���@nR����`4J���jR��� <J���OrR���eGJ���@nR���KJ���`\sR��� XJ���|R���`ZJ���@R���H����R���'H���R��� �H����9R���@G���R��� .H���.R���UG���QR����G���@R���`lG���GR��� bG���gR���eG���@2R���QG���@R���G���R���G���@R���H���@R���H���@Q���,1K���@Q��� +K���_Q���n/K����BQ���'K����BQ���%K����Q���@K���@ Q���`*K���@Q��� K���� Q��� K��� 1Q���`K���@Q����K���Q��� sK���-Q��� K����Q���`IK����Q���K���oQ���"K����Q���nK���Q���K���hQ���K����bQ���@K���Q���K���@Q��� K����BQ���J���-Q���4J����rQ��� J���Q���`J���Q���`J���%Q���`K���Q���@K����Q���hK���Q����J���� Q���K���WQ���K���@Q���UK����JQ���  K����Q����K���Q����K���@[Q���` K���>Q�����K��� Q���` K���@Q���K���Q���^K���@*Q���"K���@JQ����k*K���Q���&K����ZQ����+K���Q���Q0K���@Q���,1K���R���eI���yR��� \_I���R���NcI���R���tbI���R��� a[I���@R���VI���@R���pUI���R���.OI���@ R���KI����R���@cAI���R���@;I���@"R���@?I���QR���oFI���R���GI���QR���DLI��� R���`rLI���R���FI����R���@uII���R���PI���R���eI���FR��� J���_TR���J���@ZR���J����^R���`J���@eR���@J���@*gR���yJ��� `R���`J���nR���uJ��� nR���@J���-xR���@AJ���@yR��� J���ER��� J����ZR���zJ���WR��� J���R���iJ���@R���� J��� R��� 2|J���äR��� wJ���R���pJ���@+R���iJ���`SR���@"bJ���`R��� \J���R����Y]J��� IR���%oJ���R��� uJ���@R���zJ���wR��� yJ���@R��� J���@uR���{J���|R���`J���}R���@cJ���yyR����քJ����ZyR���ȀJ����gR���WJ����{hR��� JJ���jR���҇J����fR��� [J���ObR����J���@dR��� [J����ZaR���bJ��� ^R���J���-`R���J���@T^R����ZJ���@YR���KJ���SR���J���@WR���J���FR���`ūJ���FR��� J����ЙQ���Y2���iQ��� 2T2���`}Q���`A2���uQ���@ 2��� :qQ���`k1���@KvQ���w1����)tQ���1���@kQ����1���_Q����Z1���r_Q���1���yUQ��� 1���iSQ���1���PQ��� 1��� HQ���@ 2����EQ���2����DQ���`2���yIQ���E#2���@AQ���`ew2��� @Q��� 92���;Q���2���<Q��� 2���i/Q����-3����Q���f3�����Q���@o3���Q���q3���@+Q���@j3���,Q���`3���"Q���@@3���$Q����4���)Q���4���@]2Q���t4����1Q��� !4���@u-Q����0&4���`x.Q����*;4���*Q���`S4����{0Q���H`4����/Q����n4���+Q���}4���@EQ���4���Q���� 4���Q$Q���4���@#Q���4��� Q���4���Q���m4���  Q���L5���  Q���`<5���Q���5���gQ����5���P��� 6���@ P���`=6���P���K6���@P����7p6���P���6���P���6���P���6���@P���Q6��� P���@�7���@P���`e7���P���@8����)Q���ye8��� Q��� 1u8���@Q���~8���hQ��� [8��� nQ���N8���@$Q���&8���"Q���8���Q��� 8���@Q���@!9���@uQ���`#9����) Q����_-9����$Q���@Z9��� &Q���`l9���Q���@A9���Q����,:����$Q���GQ:���@%Q���`C:���aQ���O:���Q���`s ;���@!Q���;���@%Q���r+;����J/Q���t;���@3Q����;����;8Q���<;���i7Q���@I;���@<Q���j;����r@Q���yu;���@KQ���@A;����|SQ���@�<���@BZQ���`f6<��� }^Q���0<���aQ���@O<��� jQ���`g<���jQ���<���mQ��� <���7sQ���=����Q���-H=���=Q���@Z=���@2Q����l=����}Q��� 9=���`zQ���=���@yQ���=���}Q���>���uQ����>���tQ����(>���@uyQ����R>���q|Q��� [`>���ӂQ��� e>���ZQ���Z>����Q���`^>���@Q���p>���7Q���>���Q���>����Q���� ?��� Q���-?���XQ��� ?���Q���w'?���Q���?���@+Q���?��� "Q���$0?����Q���@?���@Q��� ?���@Q���?���`БQ���@?���@؎Q��� ?���yQ��� '@���@:Q���@���QQ��� @���@Q���>@���@ Q���)@���Q���6@���Q���@:@����ZQ���@@���Q��� M@��� :Q���~a@���Q���r@���Q���`׃@���@TQ���@���yQ���@��� ~Q���`B@����{Q����/@����yQ���f@����sQ���@���qQ���`@���wQ���?@���@KvQ���@���yQ��� t@���@yQ���@���XvQ���h@��� nwQ���`kA���� tQ���gA���uQ��� A���Q���3#A����Q���`0&A���@ Q���_4A���aQ��� 2LA���@Q���^UA��� Q���_A���`ߐQ����fA����*Q���A���`%Q���=A���@Q���@A����Q���@A����rQ��� A���7Q���@A���Q���A���@~Q��� A����ZQ���A���Q��� bA���@Q���wA����9Q���WA��� Q���B���NQ���YB���Q����B��� :Q��� #B����֬Q���`_4B���ŮQ���@]6B��� 1Q����|3B����;Q��� >B����kQ���8>B��� Q��� HB���Q���`WB��� Q���YB���@Q���xVB���Q��� mXB���Q���`lB���QQ���`*{B���Q����|B���Q���UB��� Q���$B���Q���B���.Q���@B���Q���>B����JQ���NB��� Q����B���@"Q����5C���ڴQ��� FC���@uQ��� LC���@Q���QC��� Q���XC���Q��� `C���@uQ��� CuC���Q���zC���Q���@C���Q���C���FQ���`kC���Q���@C���Q���C���Q���\C���@Q���`C����Q���`eC����Q���C���yQ���`C���@Q���C���Q���C����Q��� D��� Q���@ D���@Q��� D��� Q��� D����Q���wD���Q����&D���Q��� a#D��� Q���&D����Q���6D����Q���'5D���@Q��� DD����Q���`]D���Q���`zD����Q���ʎD���`Q���@D����Q���`D���Q���-D���@ Q���L E���Q���E���Q�����E���@#R��� E���@mR���$E���R���@.E���@R���`7E���@R���=E���ER���`CE���@vR���zTE���@R���@lE��� R���~E���R���@ E��� eR���gE��� Q����qE���Q���`E����*Q���`E���@ Q���@dE��� Q���E���Q���`kE����BQ���@E���@Q���E���@CQ���@E���-Q���E���Q����BE����Q����E����|Q����YE���zQ��� [E��� Q���E���`Q��� *E���=Q����E���@Q���E���@Q��� z F���Q���`�(F����Q���.F����ZQ���2F����Q���6F���Q���CF���Q��� IF���@Q���mPF���Q����TF��� Q���]F����ZQ���eF����Q���fF���Q��� J_F���` Q����`dF���WR���`F��� 1R���`*cF���@R���rF���Q���V|F����Q����F����Q���_F���Q���9F���@Q���%F���@mQ��� F���Q���F���-Q���F���GQ��� F���iQ��� F���@Q��� F���@Q��� F���Q���4F��� Q���F����cQ��� \G���@uQ����G����Q���0G���@Q���G���Q���+G���Q���`+G���@ Q����CG���@Q���`VG���@Q����`dG���Q���.gG����Q���`xG���Q���G���Q���`BG���Q���uG����SQ���G���@Q���`eG���-Q���gG���@R���G����R����/G���@$R��� ¢G��� R���ZG���`R���]G���`R���G���@ R���hG��� R��� G���R��� sG���@R���G����B"R���`_G���!R���`G����R���@ H���aR���+H���`&R���=H���@&R���=H����S#R���`[H��� e#R���MdH��� +R���)pH����,R���rH���i3R���`xH���`<R���@|{H����DR����dH���WKR���VH���qHR���@cH���@HR����ݦH����]R���ۧH���@\R���H��� }bR����dH���aR����H���@:eR���H���``R���H���@]bR����H���q\R����)H���@cR���`H���]R����I����KbR���I���aR��� I��� VR��� I����RR���(I���QR��� })I���QR���S-I���PR���.I���?PR���GI���`%KR����S_I���QHR��� bI����(AR����_I���1R���`�PI���.R���OI����)R��� UI����B&R���UUI���@"R���]NI���R���@NI���R���`*SI���R��� 8_I����R��� lI���@R���4I���R���VI����R���I���R���I����R����I���` R���@I���@R���I��� 1R����*I���R���@vI���/Q���@)I����2Q���`~I���@Q���I���@Q��� I���Q���I���@Q���I���]Q��� bJ���NQ���XJ���Q���"*J���@wQ���`0J����*Q���<1J��� Q���)J���5Q���&J����zIQ���J���@PQ����kJ��� \Q��� J���@ _Q���$J���@_Q���2J���cQ���V4J��� dQ��� P:J���-lQ���CJ���OvQ���^=J����΋Q���KJ����Q���FRJ���Q���@uQJ���MQ��� tZJ��� Q���PYJ����rQ���tRJ���@Q����SJ���>Q����XJ����Q���@L]J���Q���]^J����QQ���cJ���@Q���yeJ����Q��� PrJ���6Q����tJ���wQ��� !{J���@Q���J���@Q���J����Q����)J���Q���`lJ���iQ���`J���Q���bJ���@:Q���nJ���`SQ���J����Q��� IJ���@Q���gJ����R���@KJ����AR���J���R��� J���R���J���@R���`J����R���ڨJ����BR���%J����R���ڠJ���R����GJ���@"R���J����JR���۷J��� R���`ѸJ���V�R����ZJ���yR����J���@Q���`J���`SQ����`J���yQ���eJ����bQ���ࣸJ���@Q����J���M�R���J���v�R���`J����Q���J���Q����J���MQ��� J���@Q���͛J���Q���J����9Q���`J��� Q���J���@Q���J���eQ���xnJ���Q���ngJ���@Q��� 2dJ���@:Q���]J���Q���,iJ���@Q���`{J����R���ɏJ���nR���J���R���@J����R���J���#R��� J���@R���OJ����R���4J���FR���@J���  R���J��� R����J����{R���,J���@"R����J���R��� J���O"R���J����R���`J����{R��� ͤJ���@""R����J���_ R���nJ���` R��� J���'R���`J���@R���`׳J���@uR���िJ���R���LJ����$R���@J���@0R���@"J���2R��� mJ��� 4R���@uJ���yIR���@ϢJ���ESR���J���@;<R��� J���Q0R����ݞJ���?0R���J���g-R����J���2R���ӖJ���O.R���ɗJ����r0R���@J����)R��� J���@.R���^J���6R��� J���-<R���J���7R���J���@*;R���VJ���>R���tjJ���w+R���ZJ���@&R���aJ���@K.R���mJ���G-R���oJ���%R���8fJ���R���SgJ���R���mJ���@R����HYJ���@Q���PJ����)Q���WJ���Q���-XJ����kQ���QJ���4Q���`GJ���@dR��� AJ���~R���`rDJ��� R���PJ��� R���@SJ���@ #R���JJ���R��� 2DJ���@R���EJ���R���GAJ���@3R���@@J���$R���GJ���6R���@J���7R���IJ���>R���GYJ���@=R����r\J��� I4R���EKJ����A+R����RJ���i+R���UJ���@ 3R���^J���<R���fJ���AR���@{lJ���@<R���`J���@*?R���J���HR���J���EKR���J���eKR���`J���LR���J��� KR����`J���UMR���yJ���`\R���ڀJ����\R���`T~J���fVR���eJ���@WR���`zJ���OR���zJ���MR��� sJ���LR����ZqJ���bR���hJ����AcR����dJ���yYR����cJ��� YR���`gJ���@KNR���`cJ���WSR���@caJ���wSR��� \J���OR���ZJ���&NR���`*SJ���@IR���FRJ���nGR���VDJ����ZER���?J���HR���@?J���@LR����6J���NR���?J����JKR���@J���@JR���IJ���@:QR��� 'VJ���wSR��� UJ���@UR���`}RJ����JSR���NKJ���XR��� 'FJ��� ZR��� \GJ���@XR���NJ���@YR���`QJ���-`R���@SJ���@"fR���\J����jR���]J���@kR����XJ���@ddR���bQJ����JkR����RJ���@kR���VLJ����cR���DJ����JgR���CJ���egR��� AJ���@[`R���M<J����fR���`Z9J����jR���5J���&jR���v0J����ZeR���@/J��� 1eR���J���@hR���J���ioR��� IJ���@KnR���`*J���6lR���EJ���ObR��� J���@*_R����J����_R���WJ���^R���`lJ���@;TR���J���NR��� J���`MR���@J����BFR���@| J���>R��� J���@*?R���J���@*CR����J��� DR���@J���@*?R�����J���@*7R���!J���@C5R���J���/R���mJ���@1R���J���4R���N J���6R���J���@9R��� J����<R���`J���o6R���I���2R���I��� ,R���`I���.R���yJ���@,R���J���&R��� J��� "R���J���`'R���h,J���@+:R���8J��� 9R����:J���`,R����4J���"R���`}:J���@; R��� 6J���_(R���`4J����(R����2J����8R���(J����0R���J����B*R���@J���)R���PI���%R���>I���5R���I��� R���I����BR����rI���.R���XI���@+6R���@dI���@DR���DI���@CER���@:I���OR���`*I���hPR���vI����BR��� I���FBR���@I���@ER���I���=FR���`CI���>R���DI���0R���eI���5-R��� I��� #R��� CI���@#R���,I���,)R���I���i?R���I���>R���`CI���@JR���uI����OR���@I���RR���@I���@NR���I����NR���=I���KR���I���@ER���I���AR���`I���?R���yI���@CR���`}I���BR���~I���DR���PI���LR���I����AKR���@"I���>R���I���<R���I���;R���@I���yIR���I����KR���� J����OR���`} J���UR���I���@XR��� I����8SR���J����RR���J���UR����J���@mdR���J����hR���I���#iR���PI���fR���I���@[R���@3J���gYR���J���]R���I���]R���`<I����rdR���I���@eR���I���@*_R����I���@+^R���I����cR���DI���@jR��� I���@umR���@I����sR���I����!oR���I���%wR���`I���yR���`I���@2tR���`CI���@zR���I���`S{R����ݶI���@:yR���\I���sR���EI���@;hR��� I����bjR���5I���nR���@I���ymR���`1I���ioR��� I����qR��� I����knR���I����kR���I����8kR���6I���@KnR���`I���@lR���`lI���qR���-I����pR��� ޕI���zR����˞I����~R����I���~R���@I���@R����AI��� R���WI����ֈR���I����R���I����R����I���@R����GzI���@R���I���ER���2I���R��� yI���R��� uI����R����pI���yR���oI��� sR���E{I���OrR����AwI����wR���iI����tR���eI���$pR���jI����JoR���hI���&rR���XI���oR���_TI���@gR���`RI����BbR���[I���X^R����UI���@iR���@NI���@KnR���$HI���nR���VDI��� fR���>I���yeR���`8I���eR��� 3I���#iR���^=I���@oR���@cAI����qR���@KFI���@mtR���5aI����wR���eI���`R���iI���ɇR���aI���ɃR���`1]I���R���YI���iR���\I���~R���x^I����R��� NI���`R���FI����rR����EI���@"R���<I���R���`;I���R���JI���@R����KI���R���@AI���R���=I����րR���`DI���_xR���EI���@:R���>I���@R���9I���`R���`<I����·R���]6I���@"R���n/I���R���2I���%R���6I���@R���`2I����JR���&.I���@uR����#I���ɓR��� !I����R��� .I���`tR���.I���@KR���&I����R���I���hR���`I���$R���^I���MR���`I���ܢR��� I���@ȠR���@"I���YR��� I���@"R����O I��� R���uI���`ߔR���I���R���`I���vR���`Z!I���R���`CI���}R����%I���%wR���M$I���R���`I����R��� PI���`tR����I����R��� I���R���@I���ŒR���I���@R���@H���@R���@H���QR���`H����kzR����qI���@mR���H����R���@jH���?xR���H��� }zR���`TH���R���H���ER��� bH����JR���WH���@R���`H���`ߔR���H���R���H���R���eH���ɓR���H����֔R���`IH���<R���H���@R��� H��� R���@H���yR��� &H���R���@AH���@{R���`$H���mR���H��� lR���H���!uR��� gH���VxR���`H���R���@AH���@ R���໻H���`R���FH���@R���H����9zR���H���|R���H���@mR���H���X~R��� ߔH���R����H���@zR���H��� tR���`SH���uR��� H���@KzR��� H���QR���H���R���@H���NR���xH���R���4H���@[R���@H���@ljR���`H���@R���ڨH���yR���H���@R���DH����R���@:H����AR���H���@R���@cH���]R���H���@R���H���R���`}H���R���DH����ZR���N{H���iR��� sH���ÜR����lH���?R���eH���җR��� \H���R��� ^H����R���tZH����[R���`ZH���@R���]VH���5R���^MH����͌R���@<H����{R���@H���@R���LH���@~R���hLH����B~R����HH���@R���MDH����R��� I8H���#yR��� 3H���<R����<3H���ЋR���m,H���wR���*H���`R���&H����R���*H���ÐR���@$H���nR���`H���R��� H���R���  H���R���@H����R���@ H���gR��� H����bR���:H���MR���G���yR���`kG���=R��� !H���R���H���&R���`H���@[R���wH���ÔR���`��H���`R��� JG����vR���H���@wR��� H���tR���`SH���pR��� H���.sR���@H���nR��� H��� eR���=H����fR���H���icR���`wH���@_R���H���W[R���`SH����VR���@H���@"RR���iH���SR���`H���QXR���yH���@_R��� H���@:iR���oG����ZiR���G����iR���<G���dR���G���_R��� G���NR���@�H���QR���G���]R���`G���@aR���.G����r`R���#G���cR����G���@gR��� hG���`ScR���eG���mR���NG���eoR���`}G���jR��� G���lR��� G����kR����G���woR���@G���@nR���XG���`trR���G���pR���WG���@sR���G���{R���1G����bR���"G���QR��� G��� R���`G����R���`G����9R���:G���R���G���NR���4G���@R����G���R���gG���@R���G����BR���G��� աR��� G��� R���`G���ŞR���`G���ŚR���G���R���@G����ΗR���G���@R���EG���iR���^G����kR���G���>R���G���@R���_G���R���@KG���@*R���G���R��� !G���@׏R���QG����BR���G���R���G���R���G����bR���G����R���G���@R��� G���R���`1G���@R���G���@ȘR���G���@R���µG����!R���`G���¡R���oG���MR���G���FR���� G���R���`G���R���zG����R���`G���R���G���R���nG���R����ܟG���y}R���QG���.R���`G���iR���VG����{R���G���@|R����kG���R��� ~G���@uR���qG����R���`jG����R��� JoG���@R���@gG���‘R���`cG����cR���@L]G���ಟR���`}bG����R��� fG����R���eG���@R��� lG���қR��� nG���ŞR���sG���� R���`pG���ݭR��� lG���vR���icG���`R���DTG���R���`OG���һR���?G���@R��� 9G���@:R���`~IG���nR���`+RG���@R��� PG����BR���`VG����R����bG����R���`cG���@R���~YG��� R���=ZG���R���`1]G����bR���cG���@R��� 2dG���R���iG���R���nG���R���@oG���R���sG����R���tzG���R��� IxG���R���LeG���R����[G���@R��� HG���@R���`HG���XR���`AG����R���<G���pR����7G����)R���`/G���R���V4G���QR��� %G���R���-G���@R���&G���@R����7 G���R���@|G����bR���`G����JR���#G���yR���G���ݹR���G���@׷R���`*G���@R����G���vR���G���R���@G���@dR��� G����cR��� 1G���R���DG���OR���`0F���@ R���`F���DR���F���&R���`F���@*R���DF���@R���F���R���OF���R����G���@R���`*G���R����F���>R��� \F����R��� F���R��� PF���ۏR����AF���R��� &F���@R���F���>R��� F���@R��� F����R���F���R���F���ŊR���G���yR���G���R���`Z G���@ljR���@G��� R��� t G���QR���F���@؂R���F���f~R���@(G���@"~R���` G���hR���~G���6R���G���@R��� G���@*R��� sG���ʞR���G����R��� G���ÔR���!G���@ςR���>G���QR���G���рR���`$G���QxR���@,G����vR��� )G���@:R���=G���@}R��� bG���xR���G���@pR���G����brR���p-G���eR���`[HG���@xR���yMG���`uR���JG���qR���`=G���@oR���`5G���gR���)G���N_R���&G���dR���#G���@aR���G���UR��� G���@[R����rG���dR���`[G����bfR���m G���NkR���(G���lR���'G���@gR���@ G���iR���G���geR���,F����ZaR���`IF���� dR���2F��� }bR��� 8F����JWR���F����(MR���F����KR���F���@UR��� F���@2dR���F���@eR����F���`R���=F���@[R���`F���ZR���F���YR��� F���eWR���\F���@TR���@F���MTR����F����MR���ܦF���@R���F���@7R���DF���4R���F���6R���F���p=R���`F���^ER����F���@uQR���`wF���UR���F���\R����F���@]R��� F���@\R���PF���~UR���@F���ESR���`lF���@[XR��� [F���yYR���`F���rWR��� a{F���LR���zF����1R��� m`F���@.R���aF���e+R���gEF���@"&R���@F���N'R����;F���%R���+F���Q,R��� @F����b.R���`I@F����4R����6F��� <R���n'F����JKR��� F��� ILR���KF���FR���LF���QHR���=F���JR���F���`4NR���`lF����BRR���`0F���FRR���@F����{PR��� 1 F���@TNR��� F��� NR���@ F���@KR���F���IR����O F���@ GR���| F���HR���@F���@R���`E���v4R���E����7R���@E����:R����E���@@R���KE���@CR��� bE���`4>R���@E���@;R���`E���@:R���`E����kBR���@E���rGR��� IE���DR���E���9R���UE���i;R����E���6R���5E����3R����E���2R���`�E���.R���`kE���@/R���`rtE���4R����qmE���@6R���eE����7R���IE���@3R��� 8?E��� ,R��� @E���`\#R���HE���@*#R���CE���@+R���=E����B6R���`#E���@&R���eE��� $R���XE���R����Y:E����R���?8E���XR��� #E���R���E���iR���E���@R���MD���@!R���iD���f&R���`E���@/R���E���@8R���:D���)R��� D����$R���D���@R��� 8D���`R���`D���`R��� DZD���R��� D���XR��� D���R���`D���@+R���hD���@*'R���D���r+R��� D���M0R��� 'D���9R���$D���.CR���D����FR��� !D����CR���`D����MR����qD��� VR����D����ZR���`0D���6pR���`D���@KnR���D����JcR���@(D���_R����D���@TfR���@:D���NsR���D���@wR���`D����|R���D���R���`{D����yR���qD����|R����nD���@SzR���hD���iwR���h\D����vR���-PD���tR��� &OD���oR���$@D���@oR���` D���@"jR��� h D���@mR��� CC���kR���-C���xfR����C���G]R��� C���@*[R���<C���@YR���`C���@[XR���@|C���@YR���C���fRR��� C���@MR��� C���@;PR��� 2C���@[R���XC���yaR���"BC���@laR���!C����b^R���WC���@]R���C���@_R���`+B���jR���B���kR��� sB����9fR���$B���fR���@B���@|kR����B��� 1iR���`B���eR���B���@`R���`B����BVR���B���NR���SB��� LR���ѐB����QIR���iB���@LR���aB���@GR���]B���@GR���^MB���ER��� yNB���@ER��� PZB���5AR���;\B����>R���YB���=R���@NB���?R���`GB���>R���=BB����;R����)DB���Q8R���5B����2R���hA����%R���A���p%R���`A���@)R��� A���@(R���SA����{ R���� A���@R��� A���@ R���`IA���@ R���`ŋA���� R����qA��� R��� lA���@R���QA���eR��� z5A���@ Q���� -A���@:R����A���Q����7A����Q���@����JQ���`@���@Q���h@��� Q����q@���@Q���d@���@;Q���@���@:Q��� P@���Q���`@��� Q���@@���Q����c@���yQ���~Y@���QQ���vP@���]Q���`kB@���Q��� 0@���@Q���@���Q���@ ?���-Q���?��� Q����>?���Q���`?��� Q���`>���@Q���Rx>���_Q���`=>���%Q���`K>���@Q���F>���@Q���=*>���@Q���@.>����Q���>���Q���=���Q���=���`4Q���=���@Q���`=����Q���=���yQ���@=����Q���@k=���Q���L=���Q���9=���@Q���0=���`SQ��� =����cQ���R<���Q����_<���`Q���L<���XQ���`<���Q����Y<���xQ���+Z<����Q���w'<����BQ���`;���QQ����_;���KQ��� 8;���Q���@|;���@Q���@\;����Q���`K;���ݽQ��� -;����Q���(;����Q����6!;����9Q���:���@Q���G:��� IQ���@q:���UQ���#:���hQ���%O:���.Q���RH:���_Q���9���Q��� 99���#Q���ǡ9����cQ���@9���Q���@Aw9����֠Q���c9���oQ����c9���`Q���[9���@Q���`l19���@2Q���@@9���@Q���@8���Q���`8���vQ���n8���GQ���ӆ8���Q����78���5Q����`7����Q���@7�����Q���,7���Q��� 7���Q���Օ7���@Q���z7���@Q���s7���@Q��� h7���@Q���@7���`ХQ���@57����JQ���@)7����ͤQ���#7���@2Q��� 7���oQ���7���`ߘQ���@7���~Q���`l7���Q��� 6���iQ���`6���@Q��� 5���iQ���`l5���Q����0V5���@2Q���tJ5����Q���`5���vQ��� a4���Q���`4���@ Q���u4���@Q���`G4���@Q���424���݉Q���23��� Q����03���Q���@3���`kQ���f3����rQ���2���QQ���@k2����ЙQ���Y2���&��H^������`gR@���;+2@���`@���@J@��� ������ ������m������^u^@���1t?@���@b^@���?@���TQ^@���e?@���M^@���?@���`S^@���?@���@.[^@���?@���^^@���q?@���`__^@���`ݭ?@���v^@���?@�����x^@����Ä?@���^u^@���1t?@���`^@���7=@���8^@����|>@����^@���@]=@���~^@���>@���}^@����#>@���೅^@���&>@��� ^@���>@���`^@���7=@���Dd[@���;+2@����d[@���l@2@���`T^[@���B52@���`_[@��� =2@���\[@���?H2@���@N[@���M2@���@J[@���G2@���H[@���Z2@����q8[@����Lm2@���2[@���`|2@��� ,[@���`62@���@*[@���`62@����v,[@���Ʊ2@���@*[@���@2@��� '[@��� U2@���)[@���2@���@{'[@���3@���@+[@���A&3@��� 1([@����C3@���-,[@���a3@��� 10[@���b3@���5=[@����ш3@����M[@���`Y3@���`N[@���3@��� S[@���@3@��� nS[@���c3@���M[@���l3@���`J[@���3@���aJ[@���@(3@���WR[@���3@���`[@���s3@���`dc[@���3@���` e[@���3@���8m[@��� 4@���@3s[@���D3@���Qt[@���3@���u[@���@'3@����{[@��� 3@���`~[@��� 3@���`R[@���c3@���`[@���<3@����[@���3@���‰[@���@4@���[@��� &4@����d[@���4@��� Z[@���@ 4@���[@���`3@���`ܦ[@��� 3@���[@����L3@����_[@��� 4@���[@��� N4@���`_[@���c(4@���8[@��� V4@���[@���3@���@[@���Z�4@��� [@��� &3@���[@����ף3@���ܽ[@���!3@���@[@���>3@����[@���3@���@U[@���`3@����[@���is3@�����[@��� ?3@���Y[@���(3@���[@����*3@��� [@���H 3@���@ [@���i#3@��� 6[@���3@����[@���@2@���u[@���`*2@���@[@����2@��� J[@����2@���@͟[@����$2@���.[@����2@��� [@���@2@���`}[@��� +2@���^[@���2@����[@���l2@���@[@���2@���&[@���@'}2@���@E[@���b2@���~[@���a2@��� s[@���Jn2@���u[@���a2@���-p[@���f2@���n[@����GA2@���8m[@���22@���@@k[@���@=2@���@f[@��� 152@���Dd[@���;+2@���3]@���H@���]@����5I@���]@��� I@���`]@���`+I@��� ]@���/I@���a]@���3I@����]@���<I@���`T]@��� KI@��� ]@���^I@����]@��� yI@���]@���`I@����M]@���|I@���@]@���I@��� ]@���`I@���\]@���`ռI@���&^@���`I@���^@���@@I@���?$^@���I@���)^@���I@���-^@���I@��� H,^@��� yJ@���1^@���`J@���0-^@��� ="J@��� C(^@���)J@���.^@���DJ@����$^@���}QJ@���� ^@���`JJ@���^@��� rKJ@���^@���ZPJ@���^@����FbJ@���^@��� OrJ@���`;#^@���J@���@6^@���rJ@���Z^@���ZJ@��� ^@���jJ@���Ѽ^@��� fJ@��� 6^@���@J@���`^@���J@���_@���J@��� \_@���8J@���_@����J@���`M+_@���`ܖJ@���-_@���ǐJ@���@,8_@���;J@����d8_@���`֓J@���`B_@���ǘJ@���J_@���J@����d`_@���ބJ@���f_@���`�J@���`fn_@���`}J@���En_@���"yJ@���i_@��� yuJ@���#i_@���qJ@���v_@��� sJ@���}_@��� cJ@���`ڃ_@���`_dJ@���&_@���I_J@���W_@���\J@����;_@���RWJ@���~_@���RJ@���`;_@���|JJ@���a_@���`GJ@���DŽ_@���KJ@��� ~_@���:DJ@����_@��� `;J@���_@���`:J@���_@���@Q0J@���?_@��� 'J@���@_@���@h$J@��� ғ_@���LJ@���_@���J@���`ܢ_@���kJ@���O_@��� > J@���_@���J@���_@���@I@���`x_@����I@���Ҫ_@���I@���_@���`I@���@W_@��� I@����ô_@����$I@���`+_@���#I@���W_@���I@���_@����I@��� _@���@FI@���`_@���ͣI@���_@���@.I@���+_@��� I@���_@���tI@���Ҷ_@����I@���_@���I@���ٽ_@���I@���_@���I@���_@��� =I@����_@���`I@���`k_@���d_I@���_@���WI@���`d_@���jJI@���`x_@���:I@���`x_@���@p5I@���#_@����(I@����_@���I@���_@����I@���`__@���8I@��� _@��� H@���_@���H@���?_@���H@���_@���H@���_@���`HH@���@_@���`H@��� _@����H@���/ `@���H@����`@���H@���j`@���H@��� `@���H@���`@���\H@��� `@���`ֻH@��� `@���~H@���!`@���H@���@#`@���UH@����&`@���رH@���`*`@���@iH@���+`@���BH@���+`@���`H@���+-`@���@H@���`0`@���H@���`1`@���`�H@���2`@����H@���6`@��� NH@���@{7`@���H@���k7`@���`H@���@.=`@���sH@���<`@����H@���`G`@���nH@��� ?T`@��� 6pH@���tU`@���nH@����P`@���NH@���@T`@���=H@��� W`@��� 7?H@���`oX`@���K=H@��� W`@��� &6H@���Z`@���&H@���4U`@���H@���@U`@���SH@���S\`@���`G@���A^`@��� xG@��� ]`@��� yG@���@_`@���G@���Gc`@���G@����l`@���`AG@����p`@���G@����q`@���G@����`@���G@���`@���`G@���`@����FG@���`@���G@����`@���@XG@���`@��� G@����M`@���H@���`@���@H@���`@���H@���@N`@��� H@����`@��� H@���@W`@���@p-H@����]`@��� 1H@���`@���@z,H@���@G`@���.H@���`;`@���,(H@���`@���G"H@���`@���H@���@E`@���K H@���`@���`H@���`@���IG@���`@���� G@��� `@��� ,G@���`@��� 7G@���`@���`ݵG@���`�`@���!G@���` `@��� HG@���``@���ߋG@����V`@���`G@���`@��� |G@���@@`@��� nG@���X`@��� gG@���@r`@����aG@���`@��� UUG@���` `@���=G@���`2`@���>8G@���@7`@���4G@���`@��� 60G@��� `@���;+G@���`@���!G@���w`@���`G@���`@���G@��� `@��� OG@���@.`@���QG@���@%`@���@F@���`D`@���F@���``@���@?F@���`@���`F@���K`@��� fF@��� `@���F@���``@����ۇF@��� `@���F@���ǚ`@��� F@���`@��� rF@���|~`@���bF@���|`@��� `F@���{`@����F@���x`@���DF@���@Wu`@���;F@��� ?t`@���F@���@t`@���`F@���`n`@���@{F@���`2k`@����|F@���@7g`@���tF@��� 1d`@���@vF@���^`@���LlF@��� _`@���UdF@���` c`@��� XF@���@i`@���F@����g`@���F@����f`@���E@��� f`@����E@���i`@���E@��� i`@���3E@���`h`@���@E@���h`@���VE@���f`@���+E@���`f`@���@E@���@rc`@��� UE@���@`c`@��� |E@����_d`@���`wE@��� c`@���`tE@���\`@����lE@��� 1Z`@���#pE@���`L`@���[E@���N`@��� WE@���Q`@���`WE@���]S`@���ROE@���S`@���*JE@��� R`@���DE@��� SS`@���5E@���`P`@����BE@���`xP`@���@ME@���@iO`@����ME@���N`@��� FE@���M`@���IE@���H`@���ZE@���JH`@��� ,qE@���9C`@��� tE@���XD`@���`){E@���@.C`@���`}E@���@WA`@���zE@���;`@����{E@���� 8`@���3ZE@���`8`@���RE@���@7`@���`RE@���T7`@��� 0=E@����q6`@���8E@���A2`@���3E@���@1`@���.E@���@i+`@���+9E@���`&`@��� $E@��� %`@��� E@���`&`@���E@��� #`@���E@���`@��� E@��� `@��� E@����-`@���`E@���`@��� �E@��� `@���E@���` `@���E@���`@���l�E@��� `@���D@���`@���CD@��� `@���D@��� `@���D@���"`@���kD@���@i`@���رD@��� _@����5D@���f_@���`D@��� _@����D@���@_@���`D@���`f_@���LD@���}_@���D@���@_@���1D@���`_@���`D@��� n_@���2D@���_@��� `D@���_@��� D@���@i_@���D@���\_@���`D@���u_@����D@����_@���D@���`R_@���D@���_@���dD@���q_@���`D@��� _@���ID@���_@���@­D@���0_@����D@����Մ_@���`D@���_@���xD@���y_@���rD@����l_@���mD@���ki_@���gD@���@k_@���bD@���@f_@���`D@���e_@���zdD@���Y_@����wOD@���@U_@��� RD@���@T_@����RD@���R_@���QD@���B_@���@CD@����@_@���`GAD@���B_@���;D@��� =_@��� :D@����K=_@���`9D@��� 9_@���`<D@���%_@���t!D@���_@���` D@���@_@����$�D@���` _@��� C@��� ^@���C@��� ^@����<C@���^@���C@���!^@���C@���@^@���C@���p^@��� fC@���.^@��� yC@���^@���`C@���^@���:C@���`^@���`C@���Y^@��� C@���^@����wC@���p^@���@C@���^@���C@����d^@���`_C@��� Z^@����vC@���^@����C@��� ^@���PC@���ࣼ^@���[C@���@^@���C@���ި^@���C@���`_^@���C@���^@����C@��� s^@���`C@���^@���@C@���`^@��� C@���@^@���`C@���@^@���`6C@���}^@���:C@���3v^@���@hC@���t^@���ׂC@���5y^@���@|C@����w^@���PyC@���u^@����#yC@���r^@���ീC@���m^@��� C@���`)o^@���@C@���j^@���@C@���e^@���@.wC@����l^@���rsC@���@@O^@���sbC@���`RK^@���[C@����vH^@���^C@���@iG^@���lC@���I^@���rC@���uE^@���UtC@���@UH^@���`xC@���`xN^@���@wC@���U^@���@|C@����T^@���`YC@����X^@���`C@���]^@����C@���`;k^@��� C@��� l^@���`C@���f^@���`C@���l^@���@äC@���Oz^@��� C@���@z^@���@pC@���u^@���ٰC@���Ym^@���@WC@���m^@���7C@���a^@��� C@���@ _^@���@C@��� [^@���C@���N^@���`C@���@N^@���C@����S^@���(C@���Jb^@���C@���@b^@���C@���?`^@���`C@���}]^@���C@���@b^@���C@���Tq^@���@C@��� x^@�����D@��� u^@���jD@���+^@���@/D@���#^@���� 6D@�����^@��� 7D@���`^@���3BD@���^@����MD@���^@��� YD@��� ^@���IWD@���?^@���`]D@���x^@���fD@���t^@���uD@��� w^@��� &~D@���?t^@���{{D@���Bq^@���BmD@���@Wg^@���`jD@���`b^@���oD@���@WW^@���IwD@���M^@���uD@���I^@���`NsD@���=^@���`gD@��� 1<^@��� ^D@���`B^@���ZD@���4^@���TD@���`3^@���@hLD@��� s#^@���3D@���8"^@���@/D@���`%^@���'-D@���@^@����'D@���  ^@��� %D@���^@���`GD@���O ^@���D@���`]@���'C@���@]@����C@���\]@���{C@��� !]@����C@���@]@���cC@��� 1]@���)C@���½]@���rC@���]@���C@���#]@��� C@��� ]@���@FC@���`]@���@?C@����]@���`ʎC@��� ]@���`0C@��� ]@���C@����O]@����C@���Qx]@���C@���m]@���zC@����p]@���9}C@����l]@���`~C@����c]@���^C@��� c]@���MC@���pi]@���5C@���\r]@����$C@����È]@���`C@��� 6]@���C@���`x]@���`C@���൰]@���2C@���&]@���@C@���`ʶ]@���@C@��� n]@��� C@���]@���B@���]@���1B@���]@���`_B@��� ]@���B@���]@����ѰB@���&]@���@B@��� Z]@���B@���]@��� `B@��� ]@���B@���=]@���|B@���]@��� B@����^@���IB@��� ^@���B@����v^@���B@��� ^@��� B@���`T^@���B@���@ '^@���B@����8^@���@B@���u=^@���`B@���aI^@���QB@����H^@���B@���@J^@���@B@���fQ^@���@B@���X^@���`B@���X^@���`B@��� d^@���\B@��� k^@���B@��� 6h^@����B@���}^@���|B@����|^@���B@��� ^@���B@���`~^@���9B@��� ^@���RB@���^@���B@���^@��� xB@����^@���B@���@@^@���jB@���@ȓ^@���B@��� \^@���B@��� ^@���֫B@����^@���B@���@.^@���B@����^@��� җB@��� 6^@���@WB@���Q^@��� &B@���^@���`NB@���O^@���`B@���^@���!B@����^@���wB@���^@��� UuB@����^@���8nB@���@^@���`GiB@��� ^@���(lB@��� s^@���PqB@����Ð^@���rB@��� 6^@��� vB@��� !^@����|B@���ʉ^@���B@���O^@��� =rB@���a^@����wB@���}^@���B@���z^@��� ~B@����{^@���vB@���@g^@����$hB@��� g^@���]B@���a^@����$`B@����_^@���icB@���fe^@���@hB@���Ef^@���:lB@����\^@���@hB@���^^@���zdB@���\^@���@-`B@���Q^@���ZB@��� 1@^@���JB@���5^@���`SB@���@/^@���MB@��� !/^@��� fFB@���1^@���DB@���86^@��� UMB@���$;^@���`AFB@���+9^@����2B@���O6^@���0B@����q4^@��� :B@��� /^@���:B@����+^@���`/B@��� .^@����#)B@����(^@��� ,)B@���,^@���B@���@+^@���QB@���^@���`0B@���s^@����B@���^@��� B@����O^@���@X"B@���^@���`B@��� ^@��� B@��� s^@���`B@���p^@���rB@���^@��� fB@��� 1 ^@���`A@���`^@����B@���^@���iA@���@3 ^@��� A@���^@���A@���f^@���tA@���@.]@���A@��� ]@���A@���]@���@A@���]@���@A@���]@���A@���]@��� A@��� ]@���tA@���`]@���@.A@���B]@���A@���`k]@����A@���@W]@���lA@���]@���A@���p]@���A@���s]@����lA@���]@����ZA@���@]@���`GaA@���]@���@_A@���@]@���`ZA@���Y]@���\VA@���\]@��� kHA@���`v]@���`FA@��� \]@���@F:A@���^@���@&A@����^@���@@��� ^@���@@���@E^@���@@��� H$^@���@@@���@*^@��� @@��� /^@���|@@���`�/^@���`@@���2^@��� @@���4^@���@@���9^@��� ,@@���9^@���g@@���`6^@���d@@���5^@���Q@@���@S^@��� ,9@@���EZ^@���`x.@@���`[^@���I@@���`V^@���/@@���5Y^@���`0@@����d^@���`q @@���#u^@����?@���Ty^@���?@���@w^@���?@����s^@���`ܮ?@����d^@���?@���!R^@���?@���>^@����?@���@3^@���s@@����'^@���@ @@���!^@���` @@���W^@��� %?@���` ^@���l?@����^@���@(?@���]@���`@@���`]@���@@����]@���7'@@���@]@����^-@@���@]@���`&@@���`}]@���R@@���@]@���!@@���?]@���@@���Q]@���J@@���]@���@@���G]@���I@@��� ]@���@@��� Z]@���o?@��� ]@���?@���=^@��� ?@��� ^@���`?@��� ^@���`@@����$,^@���?@��� !/^@���d?@���a2^@���?@���.^@����G?@��� 1^@���?@���>^@���Z?@���`N^@��� ?@���@S^@��� ?@���h^@���T?@���m^@��� C?@���x^@����>@���x^@���>@���=v^@���`*>@���@c^@���>@���@[^@���>@���U^@���@>@��� ?^@����}>@���<^@���>@���;^@���Oj>@���9^@���f>@���\:^@���^>@���?0^@���U>@��� ,^@����b>@����O'^@���e>@��� ^@���^>@���^@���`K>@��� ^@��� OJ>@���Y ^@��� 1>@��� ^@���1D>@���a^@����S7>@����^@���``;>@���^@���>I>@���^@���`O>@���!^@���@K>@���5%^@���`(>@���D(^@���`*>@���+1^@���>@���@*^@���@>@��� (^@��� 1%>@���x-^@����p>@���@{K^@���M>@���`S^@���M>@���@Z^@���<>@���`_k^@���=@���@r^@���@=@����{^@��� =@����^@���2=@���@^@���@=@���@^@���J=@���|^@��� \=@���@ k^@��� %=@���`^@��� ~=@��� _^@���=@���z\^@���B=@����$\^@���j=@����_^@���s=@���.n^@���`=@���@o^@���`w=@���@3s^@���az=@����dt^@���=@��� t^@���r=@���`do^@���@=@���`Ro^@���=@���az^@���=@���`~^@���@ԕ=@���@|^@���r=@���~^@���o=@���y^@���>i=@���y^@��� Q=@���|^@���H@=@���^}^@����S7=@���`u^@��� ,)=@���@.s^@���@W3=@���uu^@���S=@���^q^@���`/V=@���@@o^@����#1=@���`i^@���Z0=@���h^@���`8=@���i^@���9M=@��� g^@���`_L=@����$h^@���3=@���e^@����)L=@���xa^@����TF=@���a^@���<=@���EZ^@���(=@���-\^@����F"=@���@Uh^@���`<=@���$g^@���` =@���&e^@��� =@���i^@����* =@���@j^@���=@��� k^@���<@��� k^@���<@���Be^@���<@���@.c^@���<@���@j^@���j<@���`xf^@���<@���`d_^@���@4<@���J^@���<@���R^@���@;<@���`;S^@���k<@���P^@����*<@���@W^@���<@���`;_^@��� <@���?d^@���y<@���e^@���[<@���i^@���V<@���h^@���H<@���d^@���Z@<@��� Hd^@���%O<@���G]^@���V<@���BY^@���K<@���Z^@���A<@���`W^@���@Q8<@��� sW^@���c(<@����T^@���@$<@���M^@���zT<@���P^@���\<@���WJ^@���@a<@���=F^@���@I<@���?D^@���K<@��� \G^@���><@���@F^@����4<@��� ?^@����}"<@���O=^@��� ;@���@:^@���;@��� /^@���<@���(^@���<@���#^@����<@���6^@���@;@���5^@��� %;@���k-^@���`;@����q(^@���;@���*^@���Ų;@���(^@��� ,;@���$^@���`f;@���&^@��� ~;@����+^@���z;@��� (^@���o^;@���"^@���@ f;@���!^@���@:;@���^@���,;@���-^@����9;@���@^@���``+;@��� !^@��� %?;@��� ^@���=;@���^@���1D;@��� l^@��� +J;@����^@���`Q;@���^@���B;@���@ ^@��� xF;@���� ^@���@ 6;@���^@���@<;@���@^@����.;@���=^@���`Y!;@���z^@���;@��� ^@��� ;@���^@��� ;@���@3^@���;@��� ^@���@ ;@����^@���@:@���0 ^@����:@���`R^@���:@��� ^@���:@���^@���@:@���a^@���:@���`+^@����T:@���B^@����T:@��� ^@���:@���`x^@���:@��� ^@���B:@���@U^@���@ :@����]@���` :@���^]@����T:@���a]@���`:@���@^@����G:@���@^@���@:@���@]@���`*:@���]@���[:@���@]@����T:@���`]@���`:@���u]@���b:@���@]@���:@����]@���޼:@���@]@���!:@���]@���:@��� J]@���:@���]@���`/:@����]@��� ٱ:@���`v]@���@:@���]@���@:@���`d]@��� :@���]@���@:@���.]@��� :@��� ]@���>:@���.]@���:@���`]@����G:@���`}]@���@:@���@i]@��� |:@��� ]@��� m:@����]@���h:@��� ]@���Io:@���]@���Py:@���h]@��� &n:@���]@���@q:@���]@���V:@����]@���`R:@����]@���k:@���]@���@_:@���`]@���]:@��� Z]@��� J:@���]@���A:@���`}]@���@-8:@�����]@���i3:@���]@����|#:@���h]@���`9@���x]@���:@����]@��� 1:@���@W]@���9@��� \]@���@9@���]@����9@���]@��� :@���&]@��� :@���0]@��� 9@���`]@��� 9@����]@����$9@���`�]@���`9@���B]@���p9@���]@��� &9@��� 1]@��� 9@���!]@��� ؒ9@���-]@���b9@���a]@���i9@����]@���I_9@���]@��� W9@���]@���kq9@���`}]@���`t9@���`k]@����]9@���`]@���7_9@����M]@���@y9@���@]@���q9@���]@���H9@���W]@��� ҇9@���D]@����9@����]@���``9@����]@���J~9@����)]@��� n9@���@]@���Q9@���]@���sZ9@��� ]@���Q9@��� ]@���?H9@���]@��� A9@��� ]@���@ S9@���`f]@����}R9@���`f]@���`>9@���]@��� :9@���s]@��� 19@���]@���*9@���]@����p-9@���-]@���@]>9@���@]@����*+9@���Y]@���J9@���@]@���@9@��� ]@���@99@����)]@���89@���]@���<9@���`]@���E9@���@ͷ]@���o>9@���@ͷ]@���?89@���#]@���@09@���8]@��� *9@���`]@���9@���`R]@���@9@���`x]@���@X9@���5]@���@8@����]@��� 9@���@ ]@����L8@���]@���8@���f]@����G8@���]@��� ,8@��� ]@���8@���ʵ]@���8@���]@���``8@��� H]@���8@���]@��� 8@���ת]@����}8@���]@��� 8@���@]@���8@���ԩ]@��� 8@����]@���8@���@]@����8@���]@���8@����v]@���`8@���`�]@��� N8@���]@���t8@���]@���28@���`;]@���8@���]@���8@��� ]@���8@��� ]@���@8@���`ʚ]@���8@���s]@���͛8@���$]@���@8@���]@���8@��� ]@���`8@����v]@���8@���@]@���8@���]@���8@���]@����8@���]@���@z8@���`ʂ]@����8@���@.]@���H8@����_]@���@8@��� n]@���28@��� l]@���`0u8@���x]@���{8@���r]@���Iv8@����w]@���` e8@���]@���dg8@���р]@���Q8@���]@���`W8@��� ]@���`A8@���}]@���&8@���}]@��� 18@��� y]@��� 8@��� v]@��� 8@���p]@���@7@���Jr]@���@8@���m]@����8@���@Wg]@���7@���@h]@��� 7@���Qd]@���7@���f]@��� 7@��� c]@���7@���Y]@���7@���`Z]@���7@���`}^]@���e7@���`^]@���7@���@[]@���@7@����S]@���`Y7@���`R]@���@7@���P]@����7@���&Q]@���`Y7@���M]@���q7@���`)O]@���7@���JN]@���7@���`TF]@���7@���hD]@���7@���A]@���@Q7@���`d;]@��� 7@���`:]@���@7@���?8]@���q7@���$3]@���b7@��� \+]@���aZ7@���^!]@���sj7@����$]@���@T7@��� /]@����GQ7@���1]@���9=7@���-]@���o>7@���`_']@���+7@���&]@���87@���@"]@���`=7@���h ]@���77@���%]@���47@���u!]@����7@���n"]@���@X7@���`x]@���6@���E]@��� &6@���5]@��� 6@���#]@���6@��� n]@���`e6@����q]@���6@���@]@���6@���D]@���B6@��� 8]@���<6@���E\@���6@���@\@���6@���@\@���!6@���@\@���6@���`v\@���6@���\@����6@���\@����*6@����\@���`6@���@ \@���`6@���@\@���`6@���\@���`6@���8\@���6@���\@����6@���@\@���6@���\@���@z6@���\@��� ˽6@���}\@���6@���5\@���6@���`\@��� 6@���@\@���@(6@���\@���6@��� \@���@.6@���\@���6@��� 6\@���6@���`\@����T6@����\@���@6@����ռ\@���6@���`\@����#6@���5\@���`6@���\@���@6@��� ҷ\@����v6@���`ʮ\@���`6@���`k\@���`*6@���\@��� 6@���\@���6@���@\@���6@���Y\@���@6@����$\@����Ô6@���@\@����M6@���`\@���I6@����O\@����$6@���\@���`'s6@���\@��� %6@���ז\@��� 6@���@O\@��� 6@����(\@���6@���@\@���@ۂ6@���\@���ୂ6@���s}\@���`6@���`)w\@��� xv6@����p\@���k6@���i\@����ɿ6@���i\@���6@���.f\@���6@���#e\@���D7@���@b\@���6@���pa\@���@7@���@g\@���7@����s\@���7@����k\@��� '7@����`\@����L 7@��� \\@���7@���Y\@��� 7@���`^\@���� 7@��� _\@����7@���a^\@����6@���M\@���@Q6@��� V\@���!6@���@^\@���` 6@���@X\@���6@���fa\@���6@����;d\@���@6@���b\@���@j6@���`b\@���@ c6@���`f\@���q\6@���c\@����56@����c\@���@66@���@c\@��� ?66@����c\@���`f66@���@ic\@���66@��� Jc\@���66@���`)c\@���66@���`c\@���66@���@b\@���66@��� b\@���66@���`b\@���66@���b\@���66@���`kb\@���R66@���Ob\@����266@���=b\@���56@���`0b\@���z56@���!b\@���56@���b\@���@46@��� b\@���246@���b\@���36@���`b\@���@336@���`b\@����26@���`b\@���26@���`b\@��� |16@���a\@���06@���`a\@���|06@���a\@���06@���a\@���/6@���a\@��� /6@���a\@����.6@���a\@���w.6@����$\\@���`,6@���@J\@����F6@���8J\@���sz6@���L\@���s6@����X\@���@,6@���$S\@���,6@���WN\@���� 6@���@K\@���J6@��� 8G\@���6@���`G\@���56@���GE\@���46@��� !?\@���`06@���A\@���5@���@<\@���@]5@��� 8\@���5@����4\@��� 5@����/\@���I5@���?(\@��� +5@���@#\@����5@���\@���`5@���`k\@��� x5@���@\@���`/5@���\@���5@���@\@���5@���\@���5@���^\@���`5@���`\@���5@��� H \@����T5@���@\@���5@����;�\@���@5@���\@���`5@���[@����F5@���[@���5@���#[@���@5@����[@���` 5@���`[@���5@���[@��� 5@���T[@���5@��� [@���5@���![@����}5@���[@����}5@���Y[@��� y5@����[@���5@���[@����5@���[@���c5@���[@���` 5@���@[@���5@���[@��� ؒ5@����[@���5@���[@���g5@���![@���{5@�����[@���@o5@���@[@���@5@���[@���` 5@����[@���;{5@���[@���w5@����[@���`65@���[@���5@���[@����r5@���@߷[@���b5@���[@���g5@���೭[@���``[5@���[@����#A5@���[@���`R5@���[@���`\5@����[@���i5@����d[@���g5@���@3[@���BU5@����q[@���<:5@���[@��� ~15@���[@���F5@���`[@���N5@����[@���e5@���T[@���b5@���@ߗ[@���Jn5@���G[@���1T5@���[@����TV5@���E[@���`;5@���܍[@���5@����_[@���H5@���a[@���d4@���೑[@���4@��� s[@��� y4@���[@���;4@��� [@���4@���`x[@��� %4@���@.[@���`4@���ޘ[@����4@���E[@����}4@���ܡ[@��� ,y4@���[@���@[4@��� [@���'M4@���`v[@����p=4@���![@���`L4@���z[@���@(<4@���@z[@���dW4@���@x[@��� `4@���y[@����pm4@���`~[@���`X4@���ീ[@���<j4@����[@���@Xr4@���@z[@���4q4@����t[@���` 4@���&v[@��� 4@���r[@���4@����o[@���H4@����o[@����4@���pu[@���4@���+q[@��� 4@����p[@���?4@���`n[@���@4@���nj[@���4@��� \k[@���#5@���@n[@���I/5@�����p[@���(5@����p[@���25@���p[@���Y5@���u[@���Y5@���|[@���s5@��� Hx[@���{5@���ht[@���`t5@���@r[@���`w5@���`s[@���@5@���@o[@����5@����Kq[@���@(|5@���@n[@��� w5@���i[@���C5@���@j[@���`ܞ5@��� ng[@���5@����d[@���5@���}e[@���o5@��� _[@���@5@���a[@���5@����d[@��� ّ5@��� [[@���s5@��� X[@���@zt5@���R[@�����p5@����H[@���e5@���@B[@���s5@���I[@��� y5@���I[@���@z5@��� C[@���`5@���>[@���<5@���:[@���n5@���`d7[@���@5@��� 7[@���l5@���2[@���[5@���J6[@���5@���5[@����5@���`2[@���5@���4[@��� ~5@���5[@���5@���`_/[@���5@���@/[@���@Q5@����+[@���5@����)[@����ʾ5@���*[@���`5@���D([@��� [5@���&[@���5@���-$[@���5@���([@���j5@���@$[@��� 5@���d[@��� 5@���`[@���Q5@���@[@���@z5@���^![@���5@���#[@���5@���![@���q5@���[@���!5@���[@���J5@���[@���@Q5@��� [@���5@���`+[@���Ϊ5@���[@��� 5@���O[@���5@����[@���25@���p [@���75@��� ![@����*5@���[@���5@��� [@���5@���@Z@���5@���Z@���5@���`Z@���ɪ5@��� Z@���`5@���`Z@���5@���@.Z@���C5@��� Z@����v5@���Z@��� &5@���@@Z@���5@��� JZ@���`)5@���Z@���A5@����Z@���5@���`Z@���5@���uZ@��� H5@���@ȯZ@���6@����MZ@����@5@���6Z@���^5@��� ~Z@����6@���ԩZ@���T6@����Z@���`fV6@����Z@���9]6@���`ܦZ@���``6@����Z@���6@����Z@����6@��� Z@���6@���@{Z@����$6@���Z@���`)6@���`ʦZ@���@6@���Z@��� s6@���@Z@���76@���Z@���`6@���^Z@���6@����wZ@���6@����pZ@����7@���dZ@��� 7@���@{cZ@���)7@���aZ@����/7@����TZ@���5`7@���`dOZ@���`B7@��� DZ@����:7@����4Z@���@7@���@7Z@����6@���W.Z@��� 6@���%Z@���@X6@���@.Z@����ɯ6@����Z@���޼6@��� ZZ@����6@���`Z@���6@���@Z@���6@���Z@����6@���Y@���`6@���Y@����Ô6@���Y@���@6@���@Y@���`6@���pY@���6@���`)Y@��� s6@����_Y@���@-6@���Y@���`6@���Y@��� N6@��� Y@���@۟6@���nY@���6@����qY@��� &~6@����Y@���@q6@���Y@���@o6@��� nY@���_{6@���`Y@���6@��� Y@���@ڰ6@���`ڣY@���6@���^Y@����6@��� Y@��� y6@��� lY@���6@���`Y@���@6@���Y@���{6@��� Y@���i6@���@Y@����m6@����Y@����Ye6@���`ņY@���`o6@��� Y@���r6@���ByY@���@Xb6@��� nwY@���c6@����tY@���w6@���5qY@���`66@��� lY@���cx6@��� hY@��� &N6@���zdY@����wG6@��� JgY@���d6@���8rY@���25@����)pY@���t5@��� uY@���k5@���@.sY@���5@���`doY@���HP5@���`xvY@���>5@���8rY@���$5@���mY@���%5@���fY@���`.5@���`fY@���@(<5@��� RY@��� &.5@���`�OY@���A5@���PY@���H`5@����dLY@���@i5@���^MY@��� 5@��� IY@���#5@��� GY@���` 5@���8Y@����b5@���.Y@���5@���`#Y@���s5@����]Y@���|5@���Y@���@P5@��� Y@���@n5@���a Y@���w5@���`Y@��� U5@��� Y@����5@���Y@���m5@��� X@���@5@���X@���`5@���X@��� 6@����=X@���@6@���X@���D6@���lX@��� 6@���@X@���6@���@7X@���`6@���@X@���"6@����X@��� 6@���X@����L6@���sX@��� O*6@���`X@���4Q6@����X@���h6@���X@���6@���X@����6@���X@���6@���@X@���@ 6@����X@��� O6@���@?X@����$6@���`X@���A7@���X@���"7@���@X@���<7@���X@���!7@���@X@���@*7@����hX@����$07@���X@���kQ7@���@X@���fU7@����ʺX@���@^]7@���@X@���j7@���@QX@���@{7@���`X@���|7@���X@���`ݍ7@����X@���@7@����gX@����#7@����ҫX@���7@���ZX@���77@����X@���@7@���X@����8@���X@���!)8@���@X@���78@���!X@��� 8@���X@���5 8@����X@���`8@���@iX@���`7@���SbX@���@W7@���@dX@���7@��� oX@���`)8@���nX@����98@���pX@���A8@����woX@��� OJ8@���@jX@���@]N8@����jX@���xV8@���`mX@��� OZ8@���@lX@���`b8@���@aX@���@p8@���cdX@���``8@���[cX@���88@���gX@���`*8@����rX@���8@���`sX@���8@����%oX@���;8@����FnX@��� 9@���*vX@���@D9@���wX@���@4B9@���zX@����59@���:|X@���@69@���qX@��� P9@���X@���@۟9@���X@���99@����X@���`9@���X@���9@���AX@���>9@���@qX@���9@���X@���9@���ƭX@���9@���X@���19@���ZX@���@:@���X@���2#:@���X@��� ,:@���@pX@����}":@���X@���@33:@���X@���`B:@���@ԱX@���:@��� WX@���9:@���ৰX@���;@����,X@���;@���X@���\;@���̬X@���ic;@���X@��� ;@����X@���;@���X@��� +;@���DX@���;@���dX@���;@���DX@���@;@���@pX@���ߋ;@���3X@���@;@���@͓X@���̌;@���ஊX@���3;@���BX@���`;@����X@���8;@����_X@���;@���X@����<@����_X@���)<@���X@��� 7<@����5X@���@G<@���yX@��� a<@����sX@���bY<@��� lX@���g<@����hhX@���{<@���dX@���@<@���cX@���<<@���@]X@���@J<@����FZX@���J<@����_VX@����9<@���SX@���`=<@����NX@���`YQ<@���`FX@���a<@���`?X@���` U<@���`1X@����$`<@���@i/X@���@'m<@���@%X@��� w<@����X@���Y<@���X@��� Oj<@���@X@���`_|<@���X@���<@����X@��� <@���X@���`5<@���r'X@���@<@����%'X@���<@���*"X@��� y<@����M X@���=@���X@���Q=@���@X@���@<@���  X@����T<@��� X@��� ~<@���� X@����<@����X@���B=@����X@���`.=@���KX@���`YA=@���2X@���aJ=@���X@��� ==@����X@���A=@��� X@���`^=@���@X@���@.w=@���W@����>=@����W@����}"=@���W@���` $=@���W@���@{=@���W@��� =@���W@���r =@���@OW@���=@���W@���(=@���;W@���*=@����W@��� G=@���pW@����S=@��� &W@��� H=@���AW@���$=@���W@���<@���3W@���@Q<@����%W@����L<@���;oW@���j<@���`cW@���`�<@���nNW@���@ڠ<@���JW@���r<@���GW@���7_<@���@4W@���-<@���[3W@����3<@���@+W@��� &<@���`a*W@����$<@���@.W@���@P <@����,W@���;@���@HW@���;@���W@���@-;@���tW@����M;@���W@���`_;@���`W@���@;@���lW@���;@���@?W@���@;@����V@���a;@��� 6V@���@;@���V@���;@���!V@���`;@���@V@����p <@���(V@���<@���V@���;@����V@��� O;@���@gV@��� <@���@zV@���h<@���YV@����M<<@���mV@���@A<@���@V@���R<@���9uV@���?<@���eV@����#<@��� WV@��� %;@���nNV@��� ;@���� HV@����G;@��� &>V@���>y;@���:V@���/R;@���!2V@����$p;@���1V@����p};@����h8V@���`;@���4V@���1<@����%'V@���<@��� /"V@����w<@���V@��� ;@���`V@���;@���` V@��� ;;@���U@��� +;@���`U@����T;@����U@���;@����U@���`;@���0U@��� %;@���`U@����M;@���UU@���`;@���U@���;@���U@���@W;@���U@���@<@���U@���@<@���U@���<@���U@����q<@��� U@���<@����=U@���@z;@���@zU@����v;@���U@���<@���ƍU@���J<@���U@����)<@����U@��� <@���lU@���;@���@U@���@;@����F~U@��� s;@����~U@���];@���zU@���`<@���zU@����<@���qU@����4<@����,mU@���@.W<@���`gU@���H@<@���sbU@���J<@���*RU@���@E<@���FU@���@P<@���FU@���@Xr<@���KU@��� <@���@(LU@��� s<@���CU@��� <@���#<U@���=<@����4U@����L<@���U@���<@���cU@��� =@��� U@���=@���I U@���6=@���U@����wG=@����T@���:=@��� WT@���t)=@���T@���s*=@��� &T@��� %=@���3T@���@ty=@���zT@���z=@����T@���=@���tT@���@ԕ=@����T@����)=@���@T@���;=@����T@���`Y=@���T@���h>@���nT@���W>@���dgT@��� rk>@���bT@���T>@���SZT@��� ~a>@����^YT@����vH>@����VT@��� 1%>@���RT@���k!>@���RST@���f>@���@ONT@����>@���`GT@����T>@���AT@���@g4>@���|&T@����y>@���|"T@���v>@��� T@���>@��� T@��� >@���T@���7>@��� T@���>@���@hT@���@κ>@���T@���[>@���bT@���>@���8S@���@>@���`S@���]>@���S@���@>@���@`S@���@>?@����S@���@W?@���S@���lp?@���0S@���@Pi?@���S@���@WS?@���@HS@���@(\?@����5S@����L?@���@_S@���bI?@���S@���@P?@���S@���u?@��� fS@����{?@���|S@���?@���S@��� &?@���@ԵS@����?@���S@���[?@����_S@���?@��� >S@��� y?@���S@���@@���@ܢS@���@@��� fS@���8@@���S@��� x&@@����US@���E@@���S@����vH@@����S@���I@@���S@���Q@@���kS@���O@@���S@���K=@@��� S@���`.@@���@XS@���,0@@���@pS@���� >@@���:S@���A@@���S@���I?@@���S@��� F@@���@ S@����V@@����S@���`_@@���S@����f@@���S@���m@@���`S@���s@@���@S@���`}@@���S@���@@@��� WS@��� H@@����S@���@@���@S@���@ä@@����S@���Ǩ@@���S@���N@@���JS@���@@@����S@���@@���S@���#@@��� >S@��� @@����S@��� @@���*S@���1@@���S@���@A@���sS@���*A@���kS@���A@���S@���ZA@���S@���A@���S@���4A@���S@���d7A@���S@����4A@����DS@���`8A@���S@���;A@���AS@���BA@���S@���FA@���S@���IA@���S@���`TA@���@T@���UTA@���T@���8^A@��� T@���jrA@��� 6 T@��� A@���@T@���ǘA@���*T@��� A@���T@���nA@���T@����A@���\T@���A@��� T@���lA@���;T@���dA@��� T@���`A@���T@���A@���T@���A@����gT@���`A@���S@���CA@����S@��� A@���{S@���A@���cS@��� NA@��� S@��� ,A@���S@���A@���S@���A@���SS@���@pA@����-S@���~A@���BS@���@A@����S@��� NA@���S@���8A@���@ͻS@��� =A@���@ͳS@���@A@���լS@��� A@���zS@���KA@���@S@���A@���@ÈS@���A@����=~S@��� ~A@����-|S@���`6A@���5uS@���@A@���lS@���`A@���YaS@���A@���:S@���:A@���%S@���bA@���k%S@���*A@���$S@���`A@���!S@��� A@���8S@���A@��� S@���@A@���@(S@���`A@���@S@����B@�����S@���`6�B@���@R@���B@���R@���@@B@���H�S@���B@���`Q�S@���`:B@���R@���uPB@���SR@���_B@����wR@���@bB@���AR@���\B@���R@���_B@���@R@���@puB@����hR@���@-B@���@`R@���{B@���KR@����tB@����R@���kB@��� 6R@���B@����VR@���`cB@���@R@���ϑB@���R@���nB@���`aR@���B@���@R@���� B@���תR@���B@��� ڰR@��� B@���HR@��� B@���`R@��� žB@��� /R@����5B@���R@���B@���R@��� B@����üR@���B@���ƹR@���B@���@`R@���B@���ƹR@���`qB@���R@���,B@���@xR@����FC@���R@���C@���ײR@����.'C@���@7R@��� ,1C@����ӶR@���:<C@���dR@���LC@���@R@���SVC@���@ÄR@��� NC@���PR@��� FC@���@X~R@����MDC@���8vR@���DKC@���rR@���TC@���"mR@���nC@���JnR@��� tC@���@vR@���@xC@���|vR@���|C@���`gR@���:C@���iR@���`C@����jR@���C@���@ kR@����C@����FvR@��� ̼C@���0}R@���`C@���`uR@���@C@���jvR@���C@���R@���D@���@R@���D@���R@��� D@����R@���D@���@XR@���`+D@����-R@��� )D@����ҷR@��� %/D@���R@���@p5D@���R@����v@D@���R@���@BD@���@R@���@P9D@��� R@���=D@���� R@���jRD@���� R@���QD@���`R@��� 8D@���SR@��� 2D@���#R@���@'D@���R@���&D@���@S@���1D@��� S@���0D@���BS@����9D@���S@���9D@���S@��� U-D@���LS@���`3D@���@(S@���MD@���@p)S@���^D@����2S@��� fnD@���� 2S@���lxD@���7S@���kD@���bAS@��� fD@���@_`S@���8~D@���AS@����D@���S@���DD@���dS@���D@���@S@��� `D@���@S@���@ԽD@���S@���D@����S@���D@���S@���D@���IS@���D@���@S@���D@���@S@���`_E@��� T@��� E@����T@���E@���@ET@���WE@���@T@���E@���� T@���`PE@���`T@���uhE@���($T@���`pE@����$T@���LtE@����T@���E@���T@���;E@��� (T@���ϑE@���@P1T@���ݍE@���3T@���E@����1T@���ءE@���0T@���E@����*T@���`E@���@*T@��� E@����=.T@���@ͳE@��� W/T@����E@���@T@����E@����.T@���,F@���T@���nF@���T@���0F@���ST@��� 9F@���T@���@MF@���T@��� rSF@���!T@���ZF@���`T@���_F@���T@���iF@���kT@���eF@���� S@����nF@���[S@���`rF@���T@���`)F@���`a2T@��� F@���7T@���ǐF@����gT@���3F@���nT@���F@��� sT@��� %F@����wsT@���{F@���@|T@���(F@����UT@���`/F@����єT@���@ԝF@���@ӞT@���@QF@���)T@���ȏF@���wT@���\F@��� &T@���:F@���T@��� F@���T@��� `F@����.T@���mF@����vT@���`F@���@ÔT@���F@���\T@��� F@����T@��� &G@����T@���EG@���`T@���aG@���T@��� zG@���T@���}G@���`T@���1G@��� fT@���G@���(T@��� ҇G@���`U@���9}G@���S*U@���[G@���@ 0U@��� OzG@���2U@���@vG@��� /U@��� kG@����=2U@���iG@���=U@���nG@���� NU@���@G@����aU@���mG@����5eU@���G@���kU@��� G@���'mU@����G@����fU@���`G@���@dU@���G@���SbU@���`G@��� QcU@���G@���qU@���{3H@���bU@���`7H@���`ŎU@���n6H@���@U@���d?H@��� &U@���DH@���@GU@���NH@���U@���r[H@���`U@����_lH@���U@���tH@����U@���`q|H@����%U@���@pH@���U@���8H@���U@���?H@���`U@���H@��� U@���H@���U@���`HH@���U@���yH@���U@���vH@��� U@���pH@���@U@����bH@���@V@���_H@���@V@���jZH@����UV@���QH@���� U@���@MH@���JU@���IH@���$V@���n.H@���@&V@���H@����^5V@���`H@��� ;V@���H@���@DV@���mG@���sNV@���`G@���@aV@���KH@���eV@���H@���`jV@���G@���� rV@���`G@���@|V@��� G@���@~V@���*G@���`QV@���G@���`݅V@���G@����UV@��� G@���V@��� fG@���זV@���SG@���V@���@XG@���V@���G@���ϝV@���G@���[V@����5G@���V@���G@���@ܶV@��� ~G@����^V@���qG@����hV@���`jG@���3V@����_G@���V@���bIG@���V@���c(G@����=V@���G@���V@��� UG@���YV@���G@���� V@��� &F@����.V@���[F@���ײV@���F@���lV@���!F@���@V@���F@���@V@���F@���V@���;F@����V@���VF@���V@����.F@���V@���:F@���V@���LjF@����W@���*F@���`W@��� F@���FW@���PF@���aW@���`){F@���#W@��� YF@���ZW@���2KF@����YW@���`BF@���\W@���@9F@���\W@����,F@���@PW@���` F@���@OW@��� %F@��� W@����#F@���jW@���F@���W@���@F@���W@���E@����W@���~E@����hW@��� E@���X@���@tE@���X@���`]E@����JX@��� fE@���X@���~PE@���X@���IE@���8Y@��� RE@���QY@���RE@����)Y@���uXE@���x5Y@����VE@����$tY@��� >AE@���Y@���`E@���QY@���VE@���Y@���E@���@Y@��� D@���\Y@���D@����Z@���D@���!Z@��� HD@���!Z@���D@���@;Z@��� rD@���@Z@���jD@���NZ@���D@���]Z@���jD@����ׇZ@��� E@��� Z@���@%E@���-Z@���(E@���Z@��� .E@���Z@���4E@���3Z@���;E@���Z@���`4E@���![@���`8E@���6[@���23E@�����@[@���@:E@����T[@��� 7E@���@\[@���`:E@���`b[@���<E@��� l[@����wGE@���`_{[@���`RE@���@[@����RE@����[@���8VE@��� 1[@���cE@���3[@���LlE@���@[@���lE@���`k[@���`E@���@W[@��� E@���@[@���E@���}[@���E@���`+[@��� E@���T[@���`E@���[@���E@��� H[@���,E@���p[@��� NF@��� J[@���*F@���`R[@���`4F@����[@���`IF@��� Z[@���`VF@���=[@���F@���`[@��� F@���@W\@��� OF@���@&\@���vF@����H\@���`fF@����h\@���d_F@���z\@����vF@����\@���`xF@���\@���`F@���\@���رF@���@\@���`F@���@\@���@F@���\@���`F@���]@���F@��� ]@���`F@���k]@���� F@���]@���bF@���]@��� F@���`;]@��� ` G@���x%]@���`%G@���5]@���a2G@���E]@���.G@��� W]@���.G@���@Z]@���`JG@���`Tf]@���SNG@��� ~h]@��� FG@���m]@���AG@���v]@���@hDG@���`z]@���`NG@���`ړ]@���S^G@��� n]@���lXG@���}]@����WG@���]@���@aG@����ø]@���bG@���]@���:\G@���`d]@���`G@���@]@���VG@���`;]@���NG@���]@���@QPG@���?]@���`LG@���]@���uPG@���`d]@��� ZG@���`;]@���UtG@��� J]@��� 7G@��� ]@���G@���`M]@���G@���]@��� =G@��� ]@���SG@���`+]@���G@���]@���UG@�����]@���`G@���]@���G@���`]@���dG@���#}]@���@�H@���@s]@���H@��� p]@���@G@��� `]@��� G@���X]@���G@���T]@���G@���@G]@����$G@��� 7]@���@G@���`]@���@iG@����]@���uG@���`d]@����5G@���@\@��� G@���\@��� G@���\@���G@���`\@���bH@���}\@���Q H@����\@����BH@���a]@���lhH@����]@���@nH@���@ +]@���2H@����]-]@��� H@���pM]@���*H@���Qp]@���H@���@w]@���H@���x]@��� gH@��� \]@���H@���]@��� H@���`f]@��� OH@����$]@��� yH@���E]@���� H@���3]@���H@���'��p������NS�������P���@(@������������Q���@'@���Q���$'@���Q���zT'@���R���N&@��� R���zT&@���@R��� >&@���g%R���@%@����96R���@ %@����>R����O#@���=R���#@���@"FR���)#@���XR����#a"@���WR���@yU"@���`TR���`X"@����@R���"@���>R���"@���O>R���@H"@����S;R���@X2"@��� 6R����G"@���@l1R���9"@��� *R���@?H!@���@R��� @���yR����J @����ZR���@P @���R���@y @���R����@���/R���@����R����۟@��� R��� @���P R���_@����2R��� %?@���_Q���@��� eQ���`-@���@vQ���`)@���Q���@���@Q��� W@����rQ���q\@����֠Q���@��� Q����F@���`Q���@@@���[Q���`ty@���5UQ���๜@����rPQ���U@���zLQ���ef@���FQ���@���&>Q���_@��� :)Q���b@���@Q��� @��� Q��� @���� Q���@��� �Q����@���yP���`;@���@P���~@���@P���@����|P���`ty@��� P���@���P���e&@����P����@���@P���(@���P���@����bP���`);@��� P���r@���P���23@���`P����@���� P���@q@���@P���@@���P���`Y@���@2P���;@���@"P��� @���@JP���> @���P���@ @���rP���@ @����P����. @���@P��� @��� P��� @���P����X@���`*P����V@����rP��� @���P����L]@���VP���vw@����P���@T@���@P���ׂ@���QP���#@���%P���@���P���`3@���@ P���7/@����*P����@���P���@?���wP���!"?���P���͛?����P���@?���@cP���@*?����P���"?��� IP���R?���uP����@����*P���&@���@P���@�@��� "P��� >?���P���F?����Q���`a?����Q��� ?���z Q����@���@Q����P?���` Q��� /?���-XQ��� }?����c]Q���@*?����JoQ���`?����uQ���@r?���uQ���?���@"nQ���`o?���umQ����?��� \Q���?���@E[Q���`o?���QQ����d?���_LQ���Sv?���LQ���i?���@IQ���?��� KQ���@l?���` HQ���?����HQ���`(?����fMQ���?���hTQ���@?���]Q���Z?���@`Q���@>?����!gQ���c?���ikQ���t?����2|Q��� ?���ӂQ���?����Q��� h$?���ඃQ���(Ŀ���i{Q���@ӿ���gQ����i$����dQ���@_���@gQ���|����2dQ���= ���@]Q����b���M\Q���b���_XQ������XQ���@�����\Q���@���@#]Q��� ����dQ������lQ�������;tQ���`Ce ���|Q�������Q������͗Q����N����Q������Q���s���@]Q���<���.Q������@Q���I���� Q���v����*Q���`j���Q���m���@Q���`q����3Q���@��� Q������@Q���`����Q���>i���WQ���u����Q���`1���@Q���@Q����bQ���@]���@Q���o^���@+Q������@Q��� f���@Q���l����JQ�������Q���!���Q������Q����/7���yQ������Q�������|Q���`����Q����2���Q���@ W����Q���W���@�R������@R���`����R�������QR���@B���^ R�������^ R���@ ����R���x���@R���@y���@"&R��� !C����Z)R��� ���Q,R���@B���-R������/R���y���3R��� ���9R���@B���q<R���@*���@uAR���`���OBR�������QER������HR���X���@ER������ CR���m ���@ER���[����LR���@Q���SR��������{`R����,���\R���@ϊ���@aR������cR�������JoR���Y���@[pR������vR���<+����kvR���`���` |R����ų���PR������R���-����*R���^M���ʒR�������R���z����JR����K~���@ɓR��������R���-���R����ؿ���ڨR���Aڿ��� }R���/ֿ��� :R���ૉ׿���ŮR��� ѿ���XR���@Ϋɿ����R����Ϳ���@R����?飿����R���@33��� R���@���AR���~���R���@R����BR���`/?����2R��� ?���@R����߬?���S����?���S���/?���iS���CD?��� eS���?���@:S��� >?���@"S��� g?���@+S���b?���@+.S���?���.S���?���V8S��� #?���,ES���?��� LS���@l?��� MXS���I?���W[S���`*?���q\S���3?��� }^S���L<?���bS���@?���@"jS��� ?���iS����~?����mS���?���@sS���@?���xS����?���zS����6?��� S���`W?����KS���@*?���ۣS���-?���#S���@O?���@S���);?���ԳS���?���`S��� ?���%S���G?���=S���?���NS���g$?����S���@*?��� }S���b?���@dS���?���`S��� M<?����cS���^M?���@ S���k?���@"S���&?���¥S��� �@����S���>�@���FS����?���S��� @��� }S���`p@����bS���y@���pS���@@���S��� \@���@S���F@���@S����I@��� S���B@���ۃS���f@���@S���+@���@|S���y@���~S��� @���5yS��� @���@"zS���`ij@���@*wS���@x@���rS���3@���ioS���x@��� tS����@���qS���vw@���hS��� D@��� 1iS���@�@���@CmS���G@����(mS���@-X@���@CiS��� @���@gS���P@���?lS����X@���lS��� Ga@���cS���9m@���`S��� @���@[`S���` @���@ZS���  @��� ZS��� l @���`4^S���� @���Q\S���` @���VS���� @���6TS���J @���PS��� @���UQS���`.7 @����RS���  @��� LS���` @����ZIS���O @���QHS���) @��� ILS���* @���LS���@@��� HS����!@���JS��� l@��� HS���`ʎ@���AS���W@���GS���`b@���%GS���+@��� PS���@@���@RS���`@����SS���Sv@���RS���@Y@���nOS����@���KS����=@���@"RS���@F@���yUS���`.@���FVS���\n@���WS���Oz@���@[S���'}@���@[S���@X@���@VS��� @��� TS��� @���`SOS����@����)XS���`O@���@"VS���`@��� ITS���@���RS���@<@���@mPS���6@���EWS���`@���vXS����|@����\S��� 5@���@ _S���@@���@ cS����@���@m`S���@T@���ZS���@���@CUS���`s@���PS����@���OS����!@����k^S����@��� ^S��� +@����BZS���@����WS���(\@����ZS���`8@���VS���ǐ@���@VS��� @���@US���`B@���e_S���@���@bS����@���dS���t9@���jS���@��� IlS���a@���@dlS���k@���iS���`@���ikS���`y5@����rtS��� G@���xS����0@���@sS���@��� oS���2@���nS��� 51@���@pS����@���QpS��� @���oS���@���ajS��� @���fS���2@���dS����@����\S���}@����TS���!@���WS����$@���@RS����@����cIS���@���/NS����V4 @����JWS���� @���WS���� @���ZS���� @���^S��� @���nWS����3Z!@����OS���4 @���GS����+ @����>S���@# @���<S���@XR @���<S���l@ @���9S����w7 @����5S���D @���@7S���Z @���:S��� @����J;S����@���@5S���#@���0S���a@���/S���@ @���@1S���`(| @���4S���Q @���<S����~!@���>9S���@<!@���`)S���aj!@���)S���|!@����S���@&!@��� S���!@���S���!@���@S�����"@���S���)"@����r S���@N;"@��� S���*z"@���@S���@`"@����JS����n"@���R���`("@���fR���P"@���@R���"@���R����e'#@����R���@b#@��� R���f#@���R���@N#@����R���@Py$@����R���{$@���@R���c$@���R����q$@����R���$@����8R���$@���R���@!"%@���@R���{%@����rR���=i%@���R���3r%@����R���`}%@���R���@&@���`SR���`�?&@���ݕR���+%@����0R���%@���@R��� %@���#R���7%@���R���n%@���R����%@���ӦR����%@����R����q%@���R��� %@����ΟR��� %@���VR���`%@���=R����%@���R���`z%@���R����q|%@����R���`%@���@R���k&@����R���&@��� R����Դ&@���rkR���?&@���@VR���&@���NR���;&@���=BR���`l'@���&R����#'@���R����'@���`R���'@��� R���` 5(@���@* R���@r(@���@: R��� %(@���Q���(@���@Q���@k(@���@Q���P(@���OQ���Cd(@���iQ���i(@���Q���7(@���@uQ��� ˍ(@����Q���`(@���Q���(@���Q���l(@���Q���(@���Q���@(@����JQ���(@���_Q���@(@���Q���h(@���Q���@'(@����JQ���`51(@���@Q���(@���Q���@'@���(���������rE@���޽(���iCF@��� &���������� ������>F@���޽(����0F@���(���sF@��� R(���@-F@��� \(���5F@���@@(���4F@��� 9.(���;F@����#(���CF@���~q(���iCF@���r(���>F@���޽(���E@���'���E@���΋'���rE@���zt'����#E@���'���PE@���&���@E@���"&���mE@��� &���`ŲE@���&���@ۯE@���t:'��� E@���"'���`E@���*'���E@���'���)��h�������tH&@��� ���h2@���@ɯ @�������������A2@��� @���h2@���7 @���2@��� 8 @���2@��� @���g2@����@���W2@���@���@Q82@���j@���2@���@@���` 2@���|?��� 2@���@ ?���@1@���`?���1@���`c?����1@��� >?���1@���@?���1@��� Kƿ����1@���T?Կ���1@���dܿ���`1@���`ww���N1@��� >��� 0@���@Tv����0@������ y0@���DD���j0@�������40@���gE���/0@���@w���@!20@���z���Z00@���J~��� O:0@��� ����w/@��� 9����}/@���@[����ɯ/@������#/@���&���/@��� c���@a.@�������.@��� ���@X.@�������r.@���,���.@���:��� M.@������`5-@����*���`p-@���=��� \O-@���@ף���`,@���]���`,@������C,@���e���,@��� *;��� ,@���W���,@��� 1���^,@���`]���,@���@���r+@���q���+@������+@���@[���?+@���V��� sz+@���`D���f+@������*@���.7���@*@���?��� H*@���@%���`c*@������ bJ*@���N[����3*@���=J��� .*@����D���@-)@������@)@���`>����ɏ)@���8���1T)@���/���L)@��� <���W(@���h���(@���,���i(@���@ ��� 1U(@���U���'(@��� ���'@���`|���'@���x���@P'@���@_���@'@���� ����i&@��� ���@;&@��� W���P&@��������tH&@���`b����L}&@���m ���&@��� ���&@����+ ���`�'@���@E# ���`c'@���`4 ����'@��� ���'@����j ���7'@��� ���`ɮ'@���>i ���@3'@��� ���'@���T ���Af'@���@U ���v'@���^M���?'@���`��� s'@���4����C'@�������#!'@��� ���`/'@�������'@���Y���@P9'@������ K'@������%'@������\'@���@t���@ux'@���J~����'@����+���`'@������� (@���!����(@��� '����)@�������f(@���@2����(@��� ����(@���?��� )@���|��� )@������ \O)@���@0���@ǰ)@��� gE���)@���,���)@����Ԇ���@*@���L]���� *@���?���@P*@���r{����s+@���'}��� Vt+@���y5���+@�������`L+@���@���+@��� kb���+@�������@,,@������A,@�������`,@���޼���Q,@����2���@{s,@������d,@���0u���@,@���DD���`,@���#����,@������@,@������&,@���A����-@��� >����i,@���O���,@���g��� 1,@�������@ -@����K~���`,@���v���,@���ۿ���@Z,@����ܿ���@XR,@���ֿ���`=,@���ͫѿ����+@��� 2п��� V+@���pſ���`f+@���?����+@����¥?���+@���?��� +@����7?���!,@���Be?����$,@����= ?���4,@����|?����,@���@.?���,@����W?���,@���@q?���`#,@���`?���@;,@���8?���@hx,@���?��� Q,@����S?���%,@���"?����+@���`?���+@���4?���ʎ+@���{?���`3+@���O?���; +@����Y?���*@���`?����q*@���$?���`*_*@���?���M*@���?���@{s*@���@?���%~*@���1T?���`fF*@���?���`H*@���??��� Y*@���`j?����}R*@���@x?����*@����@����*@����P@���u+@���@?H@���,@���J@���@; -@���H@���"-@���ǡ@���`L-@����|�@��� -@���e�@���@X-@���`9m�@��� -@���`�@����c-@���@e�@���-@���`kA�@����$.@���?���@dH.@����@����M.@���@YQ�@���.@��� $?��� .@���?���.@����I?���n/@���@33?����/@���@'}?���0@���-?����}0@���vw?����)0@���l?����0@����r?���@0@���Œ?��� 0@���@T@���@40@��� @���l0@���@���{0@��� @ @���0@��� @��� 0@���@\ @��� 0@���2 @���l0@���҆ @���0@���@?H @���1@���  @���`)[1@���` @����i1@���p @���\~1@���@ɯ @��� V1@���@/ @���1@���`` @����p1@����I @���Z1@��� @���@'1@���@6P @��� 2@���` @���`$2@���h @���/2@���@ @���;2@���J @���E2@��� @���e2@��� @���;{2@����" @���`2@��� @���`2@���`9m @���A2@��� @���*���������yU��� @��� ,T���@^m&@���n����������mU���&+&@���@iU���`M&@����SgU���@^m&@���/RU���.&@����2<U��� %@���@9U���%@����*+U��� '&@���qU���;%@���U���%@���@U��� s%@���aU���%@���@ U���@X%@���T��� %@����*T���``k%@���WT���`%@���XT����F%@���@MT���8%@����T��� V%@��� T���r%@���T���;%@���@+T���@$@���@T���h$@���T���?$@���yT����$@���@:T���#@���@T���L#@��� ,T����##@��� eT��� "@���@T���@&#@���@T����w7#@���@T���#@���`ST���@"@���һT���}"@���@ɻT����"@���`|T���"@���ŶT����w"@���T���k!@���@T���A!@����T����Ǒ!@����T���}!@���T���@&!@����(T���� @����T��� @���ݽT���@ @���T���j @����cT��� @���@ T���{ @���T���2 @���T���@ @���@T���� @���@T����~1!@���_T����*!@���T���@@!@����T���� V!@���� T���@x!@���oT���b!@����JT��� !@���@T���� @���@T���`& @���T���� @���T���� @����T���@9!@���T���7!@���T���@X!@���@LT���@!@���T���@!@���T���@;"@��� IT���@"@���U���`o"@����8 U����"@���� U���S"@���U���"@���y!U��� #@����*U���@`K#@���D(U����e#@���%/U����#@��� I8U���G$@���vDU��� B$@����EU���TU$@���QLU���`/V$@����BRU����$@���@NU���>$@���KU���@ $@���@FU���0#@����;U���#@���i;U����#@���`7U���@#@���@?U����eg#@���EU���:,#@���EGU���)#@���MPU���~#@���VU���ϩ#@���eU���#@���jU���@_#@���@mU���$�$@���@uU���`m$@���@wU���$@���qU����$@����sU���`%@���hU���@:%@���iU���F%@���@TjU���`f%@����lU���%@����yU��� %@����)xU���E%@���>mU���@d%@����nU����}&@���@3kU���`&@���BlU���t&&@���mU���&+&@���+�� ~������&*@��� 2E@���l3@���8EG@���l������ ������3������@XR-@��� {F@���:-@���}F@���A-@���zF@���`,@���փF@���,@���`F@���@ -@���!F@���,-@���@F@���Z0-@��� `F@����Z-@���@F@���-@���|F@���@XR-@��� {F@��� -@���`NF@���,@���QF@����,@��� vF@���,@��� tF@���`I,@��� F@���,@����F@���@,@���`F@���-,@���'F@���@,@����F@���~,@���'}F@���,@���`0]F@��� -@���`NF@���ѧ1@���rE@���1@���vE@���Q1@����sE@���@G1@���`uE@��� 1@��� sE@���e1@��� nE@��� 1@���hE@����)1@��� gE@���1@���uaE@���@2@���@`E@����D2@���$OE@���\2@���7PE@���@ri2@���ME@���t2@���@BHE@���@u2@���R>E@��� 2@����9E@���2@��� 2E@���62@���*JE@���<:2@���`ME@��� 1@���_E@���1@���@gE@���`1@���tiE@���:1@���@eE@���U1@���wE@���@ 1@���`qE@���k1@���{E@���`1@���`lE@���ѧ1@���rE@���0@���<G@���Z0@���(G@���l0@���G@���l1@���sG@���@51@��� %G@���R1@��� F@���[1@���@F@���m1@���3F@����1@���cF@��� 1@���`F@��� 2@���!F@���l02@���@hF@���jG2@��� SF@���72@���F@���2@���#F@��� 2@���F@���2@���}F@���`2@���@F@���2@����qF@���2@���`F@���2@����)F@���f2@���F@����2@���8F@���`2@���`MF@��� 2@���fF@���@y2@����F@���2@���F@���2@���F@��� ?3@���@F@���3@���fF@���3@���F@����F3@���@pF@���`2@���ҾF@����2@���@ѹF@���@* 3@���F@����=2@���@F@��� 2@���@F@��� 3@���F@���@3@���F@����3@���oF@��� 3@���`2F@���13@���aF@���@3@��� F@����B3@���@F@����j3@��� (F@���l3@���`F@���=i3@���`fF@��� T3@���F@���`Q3@���F@����qL3@���F@���B3@��� F@��� 93@���`F@���)3@���`)F@���H.3@���8F@��� )3@���F@���Z#3@���F@���@3@����$F@���3@���`F@���@3@���F@����3@���`}F@���$3@���}F@���`2%3@���yF@���@{3@���@gtF@��� e 3@��� \wF@���@{3@���`VuF@����43@����=sF@��� 3@��� (nF@���>2@����znF@���2@���8uF@���g2@���xF@���@2@����yF@����=2@���`F@���`)2@���`F@����=2@���͂F@���P2@���F@���د2@���F@��� 2@���F@���2@����=F@���2@����fF@��� 2@�����F@���@{2@��� F@���@2@��� NJF@���2@���@F@���2@���шF@���2@���<F@���2@���F@���2@��� F@���Qy2@���QF@����n2@���F@���R2@���`2F@���`o@2@���F@����f72@����F@���42@���׊F@����2@����F@���@2@����]F@���2@���@ёF@���@>2@���F@���`o�2@���@{F@��� 1@���@pF@��� 1@���`F@����1@���=F@���� 1@��� LF@���1@���`F@����1@���`F@���H1@���.F@��� 1@���ېF@���11@���8F@���{1@���.F@����~1@���uF@���gs1@���eF@��� s1@���`F@���<l1@���)F@���H_1@��� F@���@gD1@���`F@���@=1@���F@���`I-1@���F@���1@���F@���  1@���F@���� 1@��� F@���1@��� F@���@0@���� F@��� 0@���`F@��� 0@���F@���0@����F@��� 0@��� F@���0@��� F@��� 0@��� F@���Q0@���@F@���0@��� F@���y0@���F@���@u0@���{F@���e0@���$F@���`ff0@����F@���Z0@����F@���@J0@���F@���50@���@gF@���(0@����F@���0@����)F@���0@���eF@���`I 0@���@gF@���0@��� F@���@E/@���`F@��� /@���BF@���@/@���F@���`/@��� F@���/@����fF@���/@���kF@���@3/@����fF@��� /@���`uF@���/@���zmF@���` y/@��� hF@���/@���@WcF@���@/@���q[F@���/@���YF@���@ 0@���@FF@��� 0@����@F@���`(0@���`k2F@���90@���*F@��� /0@���$'F@��� -0@���@{F@���@$0@����F@���?0@���-F@����]M0@��� F@���Z0@��� u F@���[p0@���@F@����0@���F@����0@���E@���` 0@���E@���>0@���E@���`0@���`E@���@*1@���E@���B1@���׺E@���@E1@��� E@���A1@���� E@���@PL1@���@E@���`d1@���zE@��� t1@���E@���`[1@���׉E@���'1@���}E@���@<1@���`M{E@���]1@���@xE@���z1@���`~E@���l1@���E@���@Z1@����<E@���C1@���KE@���j0@��� E@���@0@��� >E@���@.0@���E@���d0@���PE@���y0@���E@��� Z0@���E@��� 0@���E@���`/@���@WE@���/@���E@���@/@���E@����/@���E@����7P/@��� E@�����.@���E@��� G.@���F@���`:.@���P!F@��� D.@���1$F@���[.@���mF@���@i.@���!F@����Fb.@��� f&F@���`}.@���F@����w.@���@%F@���.@���@X*F@���.@���P!F@���@^ /@���|"F@���`.@���.F@����-@����MLF@���@-@���`bF@���-@���`pF@����w-@����<{F@��� \-@���JF@���,9-@���F@����/,@��� ҧF@���`,@����^F@���,@��� F@���`n,@����ɏF@���bI,@��� %F@���SW,@���~F@���h$,@���@xF@���,@���DF@���,@���IwF@���@3+@��� iF@���`+@��� gF@���+@���@oF@���A+@���F@��� %?+@���QF@���0+@���F@���@&+@���@oF@���&*@���@ӾF@���`#+@���F@���;+@���qF@��� a+@��� F@���`+@���`2F@���@U+@���F@���0+@���@F@����+@���pF@���+@���F@���+@���F@���FC,@��� F@���z,@���F@���%,@���@F@��� ,@���8F@���,@���@F@���`-@���F@���`-@���F@���G!-@���F@���3-@���@pF@���):-@��� \F@���^-@���`F@���`_-@���F@���g-@���2F@���*-@���-F@���-@���`F@���|-@���F@��� -@���F@��� .@���F@���]+.@���8F@���RV.@����zF@���N`.@���@>F@���`r.@���@.F@���].@����F@���.@���`kF@���.@���F@���@.@���QF@���.@���F@���.@���@F@��� :.@����F@��� .@��� F@���@ı.@���`fF@���w.@���`F@���`.@���qF@����.@���GF@����.@���@F@���.@��� lF@��� .@���F@���s.@���F@���.@���uF@���.@��� lF@���.@���F@���`.@���F@����/@���F@���@8/@���F@����;P/@���aF@����Fe/@���F@���`[/@���RF@���`a/@����F@���{r/@���@F@���`ff/@���`G@����o/@��� G@���@B/@��� G@��� 3/@���=G@���M/@���G@���`xZ/@���G@���`/@���@3G@���൤/@����!G@���@g0@��� (&G@����0@���a*G@��� 0@����0G@���� %0@��� 3G@���G10@���=1G@���ZC0@���1G@����=K0@���`/G@���`M0@���a1G@���D0@��� 4G@���[@0@���@?G@���L0@����DG@���@e0@���8EG@���`Ó0@���@<G@���0@���<G@���,�� ������=U���j3@���qR���/7@���������������T���`6p5@���?T���@u5@���T���t5@���@T���5@���#T���5@����λT���@5@����ZT���5@����T���x5@���yT���`5@����ZT���5@����T���@W5@���@T���5@���ӦT���5@���ŢT���5@����rT��� U5@���T���`6p5@����!;U���``5@���y9U���@X5@����t6U���5@����U���@ 6@���@U���@ 6@���@U����* 6@���OU���`6@���qU����i36@���@U���x6@��� U���6@��� U���C6@���@~U����6@���@U���:6@����U���`|6@���@U���@.6@���T���`6@����T����6@���QT��� x6@���>T���6@����T���T6@���T��� [�7@����JT���6@����T���`6@���T���@'6@��� T���6@���@T��� 7@��� T���6@���@T����6@����JT����7@���¥T����q 7@��� T���/7@��� gT���`(7@���icT��� #7@����aT���7@��� ecT���@ 7@����{`T����M 7@���^T���@7@���LT���@.7@���FRT���`7@����NT���`7@����JKT���@Q7@���GT���7@���@ET����7@���?T���7@���=>T��� %7@���*T���@7@���@'T���7@����(T���&7@���%T���%7@���@'T����w7@���"T���6@��� T���6@��� T����6@���T���@ 6@���T��� 6@���T���T6@���aS���t6@���/S���`6@����JS����6@���@S���`6@���aS����6@���S���j6@���` S���@Ӧ6@���S���!b6@���S��� e6@���@ES��� P6@����S��� W6@���S���b6@���@ɣS��� P6@����֜S���Z@6@���ES���86@���@S���@*6@����S����6@����xS���5@���iwS���5@���vS���`5@���hpS���5@���^S���5@���q\S�����5@���]S���@Ե5@���[S���@Q5@���@+VS���@X5@���@uUS���5@���\S����p5@���@[dS���`5@���`%gS���@{5@����{dS���5@���@aS���?5@���_S���5@���HS���Z5@���GS���5@���@"JS���@5@��� PS��� ̜5@���@ WS���`5@����2TS���`5@����)PS��� ~5@���@CQS����}5@���yMS���Ct5@���@JS���@z5@���FS����5@���@:ES���`5@���@:S���5p5@���3S���@d5@���5S���@%[5@���@v8S���`)[5@���9S��� P5@���7S����pM5@��� 5S����XZ5@���@E3S���b5@���@"*S���aZ5@���(S���!R5@���`-S���tI5@���(S���kA5@���)S���@J5@��� e'S���@'M5@���"S���`H5@����*#S����;5@���&S���65@���S���@W35@��� :S���95@���!S���`=5@���U!S���G5@���S���@@5@���qS���(5@���@S��� 5@���R���@5@���R���5@���@R���5@���iR���@z4@����R����4@���@"R���@4@���@R���4@���R���k4@���R���4@���R��� y4@���R����Z4@���iR���24@���R���4@���?R���A4@���&R���ײ4@���R���Z4@���OR���4@���UR���4@���@R���`S4@���@R���a4@����rR����4@���5R��� V4@����!R���4@���` R���4@���@R���4@���NR����G4@��� R���84@���@R���i4@����cR���`Rw4@��� R���`Z4@���@fR���K4@����R���@P4@���qR����84@���qR���@ 34@���R���H4@���R���> 4@���@R��� y3@���&R���E3@���ZR���`3@���R��� 3@���R����4@����R���n4@���&R���3@��� MR���3@����bR���Z3@���R����i3@��� R���`3@���oS���3@���S����3@��� I$S����$3@���W7S����3@���Q@S���Z3@���@RS��� 3@���US����3@���,YS��� O3@���@kS���j3@���oS���3@���@mS���+3@���@dS���84@���OS���``K4@���MS���F4@���iGS����p]4@���ES���@Qx4@���NOS���84@���@LS��� ١4@���@TS���4@��� :qS����F4@���wS����4@���@S���4@���@S���4@���>S���!4@���@~S���` 5@���۟S����5@���ģS���``[5@����S���{5@���@S����q5@���S��� ~5@���� S���5@��� eS����}5@��� nS���5@���S���5@���@S���5@���S����5@���gS���@5@���M�T���5@���T���J5@���@T���@5@���qT���` 6@���T���Z6@���T��� 6@���T���Z06@����B"T���-6@���T���D6@���7T��� 6@���@"FT���6@���HT���`*6@���@]JT���B6@����KT���G6@����MT����C6@���QLT��� 6@���MT���@6@���@<OT����@'6@���@mTT���@ 6@���XT���`6@���qXT���@.'6@���@ZT����-6@����bvT��� 66@���wT���@A6@����ֈT���]6@���oT����e6@���T���@n6@��� mT���1t6@���iT��� }6@���@CiT���@{6@���?xT���`ݭ6@���vT����6@���T���@W6@���=T���@^6@���@T���z6@���T��� N[6@��� T����S6@��� "T���@XR6@����T��� 16@��� T���,6@����rT���>6@���T���``+6@����T���+6@���T���`Y!6@���v�U���86@���@T���6@���iT���5@���@U���5@���U���5@���@U���l5@���U���5@���!U���` 5@���� U���85@���@"U����5@��� U���@5@��� U���75@���z,U���5@����24U���@5@���;U���@5@���=U���@(5@����!;U���``5@���-��H������s"@@���HA@���sJA@���A@���&���������� @@���HA@��� x@@����$HA@���zt@@���{SA@����^]@@���RA@���>@@����YA@��� 3@@���`A@���@1@@���DkA@���`Y)@@��� OrA@���s"@@���A@����'@@���`ŊA@���@/@@���@A@���`6@@���`˅A@���@.O@@���[A@���@h\@@��� %A@��� Oj@@���3A@���rs@@���JA@���Zx@@���A@����u@@���@A@���@h@@���@A@���@@���լA@���A@���`A@����-A@��� &A@���sJA@���A@���AA@���@A@���@A@���൸A@���`@@��� UA@���@@����A@���@ A@���zA@���@@���� ~A@��� y@@���@-xA@���@@���`{A@���@@���{A@���`@@��� wA@���@@���biA@���ߣ@@���{[A@���`@@���RWA@��� >@@���@QA@��� @@���HA@���.��������@/(@���IH@���s2@���I@������������@/(@���`)I@���(@��� ~!I@���@(@��� I@����Ѩ(@����I@���(@��� #I@��� (@����,I@���)@���"9I@���)@���`/6I@���@')@��� &6I@���`5*@���Z@I@��� a*@����v@I@���z*@���3JI@���C*@���aJI@���`*@���`RI@���*@���9MI@���""+@���`[I@���@P+@���`\I@���+@���`0eI@��� ,@���IgI@���@,@���rI@����,@���[wI@���,@���@I@���,@���I@���2-@���}I@���`#-@���`BuI@���9M-@���JvI@���`#@-@��� UmI@��� s-@����hI@����_-@��� nI@����.@���`�oI@��� .@���zI@��� N-@���`I@��� +.@���I@���vX.@���jI@���.@���@(|I@���@.@���uI@���.@���`mI@����q.@���dI@��� /@���_I@���/@���UI@����w/@����wWI@���/@����WI@����}0@���`MI@�����0@���@@OI@���`80@���}QI@���<0@���@UI@���Y0@���1TI@��� r0@���II@���e0@���jBI@���O0@���`@I@���50@����5I@���gu0@���`&I@���@.0@���I@���@0@���@ I@����F0@���`I@���@.1@���� I@���0@���4I@���0@���>8I@���@1@���J6I@���7?1@���`+I@���Z1@���`G)I@���OZ1@��� `#I@���a1@���`)#I@���31@����5)I@���1@���`'I@���21@��� OI@���1@���CI@����$1@���@PI@�����1@���@ I@����1@���I@���E1@���H@��� 2@���`YI@��� 2@���I@����S2@���I@���)2@���H@����}r2@����H@���2@���`H@���@2@���@zH@����2@���� H@���s2@���FH@���@>2@���H@���|2@���`kH@����q2@���H@���2@���H@���Z2@���@H@���2@���@ֽH@���2@���@H@���z2@���H@���2@���`vH@���`է2@���H@���2@��� lH@���`[2@����BH@���2@���`�H@����2@����H@���@2@��� H@����Ô2@���෿H@���`2@��� 8H@���(2@���RH@���`]2@���`H@���`]2@���@WH@���@͋2@���`H@���` 2@���`H@���@g2@���۸H@��� 2@���@H@��� {2@��� (H@���y2@���H@���x2@��� H@���q2@���@GH@���o2@��� H@����m2@���H@��� j2@���`H@���g2@���ͲH@���`g2@��� uH@��� h2@���@ѱH@���j2@��� lH@���k2@���H@���k2@���@H@���`h2@���8H@��� c2@���H@���` a2@���@GH@���]2@���@H@����Y2@���`[H@��� SU2@���H@���`[Q2@��� \H@���N2@���@H@��� H2@���H@��� @2@���஥H@���@>82@���H@����z62@���H@����F52@���`H@��� ,2@����H@��� \/2@���@H@���`'02@����]H@���`'02@���H@��� \/2@����MH@���`,2@��� H@���@*2@���#H@���(2@���(H@���`2%2@���`H@���%2@���H@���&2@���࣐H@��� &2@���`H@���@%2@����̎H@���`[!2@���(H@���42@���@H@����2@��� H@���F2@����]H@���2@��� H@���2@���FH@���z2@���`)H@���p1@����H@��� 1@��� H@���1@��� H@��� 1@���)H@���=1@���~H@����1@��� |H@��� 1@���@W{H@���`f1@���`yH@���1@���GyH@���z1@���`wH@���1@���vH@���Z1@���RvH@����1@����vH@��� H1@��� vH@���@p1@���@vH@���1@���@vH@���1@����tH@���@>1@���tH@���1@���FsH@���z1@���-qH@���Z1@����pH@����41@���@pH@����q1@����oH@���R1@���mH@��� 1@���`mH@���@1@���`mH@����q1@���lH@����F1@���� mH@���1@���VlH@���P1@���`kH@��� 1@���@jH@���Ò1@���3jH@���̌1@���hH@���1@���[hH@���…1@���hH@���Z1@���@jH@���H~1@����MlH@���� z1@���mH@��� u1@���� mH@��� q1@��� kH@���n1@���`jH@���`)k1@���@iH@����fg1@���QiH@���c1@���QiH@���[`1@���iH@��� W1@���lH@����N1@���mH@���@1@���`voH@����:1@���oH@���@41@���`RoH@���[01@����BoH@���@)1@���lH@���f%1@���@kH@���[ 1@����=kH@���(1@����jH@���1@���iH@���1@����fH@���`1@���zeH@���1@���dH@��� (1@���qcH@����= 1@���`bH@���� 1@���aH@��� 1@���` aH@���1@�����`H@���1@���@g\H@����41@���[H@��� �1@���@ZH@����o1@���`[YH@����1@���XH@���\0@��� XH@��� 0@��� 8WH@����0@���QH@���e0@����4QH@���0@���ePH@���`0@���NH@���@0@��� {]H@����0@���\H@���0@���dH@���@ 0@���gH@���`^0@���]H@���@0@���PaH@����/@���`jH@���@/@���@QpH@���\.@���`/~H@���Q.@���xH@���M.@���@-H@���-@���`H@���-@���!bH@�����-@���dH@��� f-@���jJH@���,@��� RH@��� ,@���IH@���U,@���@NH@���-,@���VH@��� +@����dH@��� N{+@���pH@���R+@���rH@���;++@���|H@���?+@���@'}H@����+@��� xH@���*@���`H@��� b*@���nH@���?h*@���IH@���@^M*@���H@��� *@���`/H@����)@���H@��� )@���@H@��� R)@����H@��� )@��� H@����F(@��� H@���\(@���`GH@���(@���H@���)@���`H@���(@���H@���`L(@��� H@���(@���H@��� 1u(@���U I@���h(@���JI@��� 1(@���I@���E(@����#I@���@/(@���`)I@���/�� &������. @���HK@���L.@���@L@��������� ������'���3���P���Y���������#@���mK@����m#@���pK@���#@���`sK@���g#@���jzK@���7#@���QxK@���#@����|K@���@D#@���@…K@���@eG#@���@K@����"#@���ΊK@��� \$@���yK@��� h%$@���pK@���#@���mK@���?h%@���\K@���4%@���jK@��� t%@���pK@���\%@���sK@���%@����eK@���%@��� K@���@%@���kqK@���`z%@���^K@���?h%@���\K@���@;&@���7OK@���-&@���@_K@���p%@���1dK@��� &@���hK@���@d(&@���@.gK@���@ 7&@���`GiK@��� &@��� >qK@���`&@���wK@���xv&@���|zK@����-'@���mgK@���""'@���kK@����I'@��� sK@��� '@���@iK@���,'@���@_K@���M'@����ZK@����w'@���@?XK@���`'@���@RK@���@;&@���7OK@���O!@���JVL@���� !@���\^L@���.!@���`0eL@����}R!@���gL@���K!@����#qL@���N!@���|L@���!@��� %oL@���@w!@���qL@���!@���iL@����t!@��� dL@���@=!@���XL@���O!@���JVL@���v8%@���8K@���@'}%@���K@���UU%@���ϹK@���@ӆ%@���K@���``%@���K@����7%@���K@���|%@���@K@��� %@���` K@����{%@���`K@����%@����K@���#$@��� K@���O$@���@?K@����w7$@���@ۗK@��� #@����vK@����#@���K@���%#@���K@����[#@���`K@���#@���K@���N[#@���IK@����#@���@K@���@D#@���K@��� $@���`K@���@X%@���rK@���1$@���K@��� N$@���@.K@���@-$@���rK@���$@����$K@���W3%@���`˽K@���v8%@���8K@���@A'.@����$K@��� b-@���DK@��� %_-@����MK@���e-@���K@����-@���@oK@���@-@����K@���D.@���sK@���L.@���iK@���@A'.@����$K@���r{'@���9K@���,Y'@���` K@���`/V'@���K@��� v'@����K@���|s'@���@?K@���1T'@��� K@���n?'@���DK@��� y'@���K@��� b'@���K@���'@����K@��� '@���K@���'@����MK@��� '@���iK@����/'@����K@���M'@���@WK@���@(@���`GK@���`(@��� K@���'@���JK@���'@���K@����L(@����K@���`0(@���`K@����#!(@���@-K@����(@���K@���'@��� K@���` '@���DK@���,9(@��� L@���t(@����vL@���� )@���` L@���`r<)@���UL@���)@���K@���W3)@���!K@��� )@���PK@���@(@���8K@����)|(@���BK@����Fb(@��� K@���t(@���K@���(@���K@���(@���`K@��� (@����K@��� #(@���`AK@��� (@��� K@���n(@���ِK@���X(@���K@���xV(@���{K@���?(@���aK@���`X(@���K@���`$(@��� {K@���`'@���`K@���`l'@���`xK@���`'@���uK@���@^'@���`xK@���$�(@���sK@����8(@���@qK@���V(@���ikK@���`'@���aZK@���'@���TK@���'@���HK@���'@���PIK@���n'@��� `SK@���h'@���_K@���@|'@���rK@���j'@��� wK@���l'@��� zK@����T'@��� =zK@���h'@��� |K@���Ʊ'@���K@���<'@���`K@���'@���K@���`'@���jK@���r'@���`ݍK@���`'@����ѐK@���'@��� K@���p'@���{K@���r{'@���tK@���K~&@��� K@���`x&@���K@���{&@��� OK@���SW&@���@ìK@����8&@��� OK@���5&@���K@���m&@���K@���`)[&@��� xK@���`B&@����K@���(&@��� ,K@���L&@���\K@����L=&@���9K@���@%@���`K@���+&@���UK@���I%@���@K@���@N&@���K@����>&@����K@����TV&@���`K@����ɯ&@���K@���@ۿ&@����K@���@P&@��� K@���'@���*K@���'@���K@���]&@���K@��� &@���9K@���x6'@���@K@���'@���{K@���'@���QK@���r{'@���9K@���#@���lK@���@"@���`iK@���� !@���:tK@���Zp!@���rK@����P!@���`muK@����L]!@���K@���!@���`K@���` !@��� >K@��� @���K@��� @���@ۏK@����S @����vK@����"!@���K@����!@���)K@���T!@���K@���a!@���3K@����F!@���K@����2!@����vK@���G @����K@���@= @���K@���@҇ @���kK@���-x @���@K@���? @���K@��� @���K@���. @����K@����L] @���K@���@ @���K@����|S @���K@���@n_ @���K@���� @���*K@���I @���`L@����J @���8L@���H @���`K@���O: @����L@���@ 6 @���L@���B @����w'L@���AF @���JL@���c @��� XL@���n @����ZL@����y @���XL@����dh @���QL@���@ @���JFL@���' @���@FJL@���j"!@���PIL@���@@!@���B=L@��� t!@����=L@���?!@���@GL@����\!@���NL@���@#!@���`ZL@����:!@���2[L@���!@���eL@����#"@����egL@����X"@���[L@���@M"@���PL@���x"@��� DLL@���@ "@���HL@���M"@��� fNL@���@n"@���QL@����|"@���mOL@����m"@���@FJL@���"@���DCL@���@"@���9EL@���@n"@��� HL@����"@���@GL@���@Ѩ"@��� SL@���@"@����YL@����\"@���UL@���@a"@��� ~YL@���@z"@���]L@����X"@���SfL@���l"@���mL@���@T"@���qL@���|"@����{L@����"@���@XL@���#@���L@����d(#@��� {L@����3S#@���L@���I_#@���L@���@ #@���L@���#@���`L@���(#@��� yL@����آ"@���L@����|"@���mL@����*;"@���L@����m "@����L@���o~!@���`yL@����X!@��� >yL@���%!@���`hL@����t @���'eL@��� @���r[L@��� !@���`[L@���� !@���WL@���6!@���PL@���(!@����JL@��� @���!bL@���� @����bL@��� @���ZL@���{ @���ZL@���| @���eL@���� @���L@���+!@���L@���@A!@���L@����"!@���L@���"@���ڏL@���xv"@��� L@����"@���@WL@��� #@��� `L@����H#@���L@��� $@���BL@���%@���@L@���=J%@��� fL@���$@���`L@���p$@���L@���$@���`L@���%@���@L@���%@���`L@��� $@���L@���`$@��� L@���v$@��� ;L@���@ $@��� L@���@u#@���L@���$@���}L@���Љ$@��� guL@���M$@��� _L@��� \$@���[L@����i$@���YL@��� Q$@���:\L@���@#@���QL@���@-x$@����$XL@���@^$@���XL@��� +$@����RL@���$@���NL@���;k$@���FL@���s$@���>L@���1t$@���EL@���@j$@��� LL@��� V$@��� CL@���@Xr%@��� CL@����7%@���CL@���%@���`8L@���?%@����#!L@��� h%@���BL@���Sw%@���`L@���V%@���`0L@���a%@���L@���`I@%@���9L@���M%@���L@���&%@���`L@����` %@��� L@���$@���`GL@��� %@��� L@���$@���L@����7$@���L@����ô$@���L@���C%@���@!L@���$@���9%L@����7p$@���iL@���`f$@���L@���7$@���jL@���b$@���`K@���M$@����K@���9$@���K@����#@���K@���@n#@����<K@���`$@���@?K@���$@���@K@���b $@���K@���#@���K@���;#@���`K@����Ȱ#@���K@����#@���K@���@#@���K@����d(#@���SK@���@L#@���@K@��� T#@���׺K@���1#@����ɯK@���@>#@���K@���l#@���kK@���`#@����5K@����"@���൐K@����#@���`K@���o"@���`qK@���@ #@���`ăK@���.#@���ԅK@���zt#@���~K@���>#@���rK@���?h#@���3rK@���#@���lK@����uy#@���`iK@����t:#@���@qK@���K#@����tK@����24#@���`vK@���#@���lK@���0��`������ >D@���%@���@µE@ j)@���i����������D@���a&@��� >D@����'@���*D@���{'@���`kD@���"'@��� r+E@���;(@OSX:E@')@a:E@E{)@���DE@���@!)@ϥ-OE@JM(@���@eOE@���@(@���@uQE@����|(@����SE@���(@��� CUE@���(@���`nWE@�����(@E�ξgYE@C\(@���`kYE@���O(@Z1kYE@*P(@��� lYE@���O(@:lYE@~R(@03^E@k(@���@_E@���(@���@_E@���(@���?`E@���`(@���`E@���>(@���`E@���(@n|1aE@q(@{fE@ (@���fE@���(@���gE@���(@�����hE@���(@���@vhE@����J(@���`hE@��� l(@���`,iE@���(@���GiE@����(@���>iE@����c(@7iE@ϑ(@݈kE@dO5)@���kE@���`M)@���lE@���@)@���lE@���)@���mE@���`n)@��� mE@���@#!)@���/nE@���#)@���` nE@���&)@���mE@���))@1mE@󵃚,)@nE@ ,]-)@���`fnE@���.)@����nE@��� 0)@���oE@���Y1)@���oE@��� |3)@���6pE@����5)@���?pE@���P9)@���HpE@����<)@PXpE@&=)@*1pE@a'H?A)@���@pE@���GA)@-#pE@)(KA)@0ƲqE@ wB)@���@+rE@���@B)@���`rE@���A)@���isE@���@)@���sE@���`>)@����)tE@���'=)@���tE@���;)@��� wE@���`n?)@���PyE@���@C)@���{E@��� G)@����}E@��� K)@���6E@���O)@���@E@���S)@���ՄE@���W)@���%E@���[)@����lE@���_)@���E@���c)@���` E@���g)@0EʏE@ j)@���KE@���(@���@µE@���=J(@����E@���@'(@���@E@���@'@��� ~E@���d'@���ஆE@���O'@���zdE@����{'@���`HPE@���'@����CE@���@ '@���`_DE@���'@���VE@���1&@���TE@��� 9'@���`0mE@���/'@���E@���%'@���2E@���,9'@��� &E@���`'@���ҟE@���`&@���`xE@����&@��� 6hE@����%@���bE@���@d&@���@?`E@����@'&@����5QE@���32&@���!E@���'%@���D@���%@���@D@���P%@���#D@���1&@���`D@���I&@���D@���a&@���1���`������N���`ff.@���vN���A/@��� ����������N���`ff.@��� [N��� y.@���N���.@���N���3/@���N���A/@���N���@'/@���vN���.@���N��� .@���N���`ff.@���2�������� uQ���J1@���Q����3@���[����������iQ���@P3@���HQ���>83@���Q���`=3@���Q����T3@���WQ����vX3@��� MQ���3@���@Q���`>3@����Q���3@���eQ���@z3@���Q���@3@���Q���3@����Q���3@���@Q���`3@���Q����3@���@uQ��� x3@���OQ���`3@����Q���3@���Q����3@���iQ���`3@�����Q���3@���~Q���3@����yQ���@ 3@���@mxQ���@3@���@2xQ���q3@���@pQ���J3@���5QQ���@PY3@����NQ���`]3@���iOQ���<J3@���fJQ���M3@���MQ����$03@���gQ���`:3@���@hQ���3@���@gQ���@3@���ZQ���3@���@LQ���i3@���`HQ��� 3@���?Q���3@���N;Q���3@���@:)Q����2@���@+Q����2@���Q��� N2@����Q���[2@���@:!Q���X2@���&Q���@`2@����(Q���62@���/Q���22@���@5Q��� Z2@���=Q���`k2@���CQ��� c2@����)TQ��� q2@����TQ���@'m2@��� hQ���h2@���6lQ���t2@����rxQ���@-x2@���Q���aj2@���݉Q���;2@���@Q���@42@����Q���@f2@���Q���[o2@���Q���i2@���@Q���Z`2@���@2Q����X2@���fQ���@-X2@��� }Q���1D2@���@Q���@2@����Q��� &N2@����Q���`M2@���@Q���>2@���@Q���&2@���@Q���1@����cQ���J1@���VQ���@1@���Q���1@���NQ���@X1@���@2Q���k1@���XQ���1@���_Q���� 2@���Q����v2@��� :Q����32@���@vQ����}R2@����BQ����#q2@����Q���`*z2@����Q���ފ2@��� uQ���̛2@���@"Q����ɟ2@����Q���`2@��� }Q���`R2@���pQ����2@���Q���`02@����Q���2@���iQ���@P3@���3��������V���@j���R���?���������� ���'���/���7���>���K������V���@���iV���@.����V���ff��� }V���`q���V��� k���@"V���@ ����QV���@ף���@V���@y���EV���`Sۿ���V���ؿ���V���`qԿ���@"V���ʿ���@2V���nȿ��� V������V���@$���@3V���`���@V��� ���@V�����������@2V����'?���@V���0u?���@V���`N?���?V���d?���V��� ?���@V���%���V���q̿���V���ۿ���@uV��� K~����kV������V���@*;����(V����b���%V���`P���V���@��� IV���@I߿����JV���@ݿ���V����ҿ���V���� п����QV���+տ��� V���yݿ��� IV���@I߿���%V���` ؿ����cV��� ֿ���ҷV��� Pп���ŲV���` ÿ����V���@ ÿ���yV���]nϿ����8V��� cӿ���%V���` ؿ���V������ŢV���` ����8V����-���V���-���V���gE߿��� V������V���@j���V������F^V���2���MhV��� Ϋ���NgV��� J���@*WV���N���@OV���@d����rXV���F���F^V���2��� T���J����ZT���<+���T�������@: T��� ���`tT���O���`S��� ���@dS��������ZT���;��� T������> T������fT���พ���@T���S��� T���J���@S���);?���#S���@O?���ۣS���-?����KS���@*?��� S���`W?���zS����6?���xS����?���@sS���@?����mS���?���iS����~?���@"jS��� ?���bS���@?��� }^S���L<?���q\S���3?���W[S���`*?��� MXS���I?��� LS���@l?���,ES���?���V8S��� #?���.S���?���@+.S���?���@+S���b?���@"S��� g?���@:S��� >?��� eS���?���iS���CD?���S���/?���S����?���@R����߬?����2R��� ?����BR���`/?���R���@R���AR���~���@ R����mÿ����2R��� ���R���`ƿ���@R��� jͿ����JR����ݿ���R���@߼��� R�������R������R���gE���@R���`M<����R���e���@R���t��� : S���x���@T*S��� ���US���u���`yS����/7���`ЍS��� ���S��� |s ���&S���  ���@dS���" ����S���g ����9S���C ���@S���`a ���™S���e����S���^M���FS����z5���S���D���@S���%���ŪS���@<���iS���a���źS������ S���m`����*S���@j���S������S���t���@2S����BF��� S���`!���`S��� *��� S���@���S���=����S��� ƒ���S������]T���@ ��� :T���d����T���`l���T����Q���yT����;���@T���E���T���w���aT���e���T���@���?T���^ ���@ T���`+���T���@ ���@ T���D ����ZT���D ���?T���@] ����T��� ���`T��� ����T��� ���@T����Ϋ ���T��� ���T��� > ���@2S����&���S�������S���\���@S���Ž���S����T���S���*;���`S��� ����S��������@S���@���`SS����&����S���؂���@S���`���-�T���f���@T���� ��� T��� m����T��������@S������S���`l����bT������T���>i���`S����s{���T������@T���V���@ T��� ���T��� |���@T���@���@mT��� ���T��������+T����A'����:T���\���@@T���6P���@;T���@����6T���f���_0T����d����.T���� ���13T��� c���6T���|���@4T������0T���`r����Z9T��� ���O:T���@n���5T������i'T���`A���v$T���z���?T���@ d���T���/���T����i$����T���L]���@CT������T���@ƒ���T���?���T���7׿���.T���@6Կ���MT���̿���T����0ſ���T��� <+z?���T���g?���~T���`a?���@T���??���@T��� v?���S���'}?����JS����5?����S����?���@S����5?���@|S���`a?��� S����?����bS��� ?���S��� ?���S���?���NS���@?���S���`?���S���@z?���S���?��� IS���@'?���ԳS���?���@S���);?���4��@������`մ8@��� %5@���A@��� ?@������������`A@���R?@���/"A@���\7?@���'A@���?@���@-A@���`>@���s2A@���@>@���@9A@���` >@����$@A@���@.>@����BA@���>@���EA@���n>@���`OA@���V>@��� yUA@����9>@���@W[A@���>@���``A@������>@���eA@���` =@���@jA@���=@���\nA@���`=@���@nA@���=@���esA@����i~=@���`iA@���`_l=@����_A@��� NK=@���ZXA@��� #=@���IWA@���<@���QA@���<@���RA@���C<@����OA@��� <@���@MA@���<@��� ?BA@���@K<@��� AA@���y<@���=A@���@Qx<@���4A@����GQ<@���@9A@���b)<@��� 8A@���7;@����*A@����;@���"A@��� ;@���!A@��� ;@���@?A@���@;@���` A@����;@���`GA@���@;@���@@���@4;@��� @@���@' <@��� @@���*<@���@?@@��� NK<@���t@@����GQ<@���`H@@���k<@���@@@���<@���1@@���<@���`ě@@����<@���8@@���i<@���@@����*<@��� `@@��� V=@����@@��� =@���r@@���;=@���h@@���l`=@���9]@@���z=@���D[@@���=@���Y@@���`=@���M@@���i=@���?J@@����=@��� I@@����M=@���@@@@���=@���:@@���B=@���?@@���@'=@��� 3@@���=@���+@@���=@���8@@���}=@���H@@���a=@���'M@@����N=@���`R@@���'=@���@-P@@���@=@���`S@@���4<@���`@@���`<@���sj@@���@<@��� q@@���<@��� O@@���ht<@���`@@���kQ<@���@W@@���@/<@���|@@���2<@���|@@���Z�<@����@@���@];@����w@@���@;@���` @@���@;@���` @@���;@���@@����#;@���8@@��� \;@���@@���;@���R@@���`դ;@����w@@���@ ;@��� @@���`;@���U@@���@p;@��� @@���@ V;@����@@���l@;@����@@���@';@���7@@����:@����$�A@��� :@���`q@@���:@��� ,@@���@:@���@@����Ѩ:@���A@���d:@���/A@��� 9@���PA@���Ô9@���`pA@����9@����wA@��� 8@���@A@���8@���sA@���;8@���ךA@���`6p8@���@A@���8@���A@���@X8@���A@��� 7@���@A@���7@����A@���`_7@���ԽA@���`67@���A@���@]>7@���A@��� 7@���� A@��� U6@��� |A@���=6@��� `[A@����I6@���A@���@X26@��� A@���@~5@���@@���@5@���|@@���@U�6@���aj@@���`6�6@���|@@���@�6@���1t?@���5@���` ?@��� +6@����M|?@���d76@���p?@��� r;6@����c?@���46@��� G?@����5@���?@���@5@���b>@����6@���@ڰ=@���@5@��� �=@���@U�6@���<@������6@����-<@��� �6@����L;@���m5@���:@��� %5@���F:@���5@���9@����5@����9@���@U�6@���H�9@���`y6@���@8@���h7@���m8@���.9@���@8@���:@����9@����;@���m8@���?=@��� H8@���=@���8@����=@���48@���`/=@���`8@��� =@���`մ8@��� '>@���8@���;>@���8@���ׂ>@����9@���`>@���n8@���t)?@����8@����Fb?@���8@��� m?@��� 9@���?@���\"9@��� ?@���-9@���`?@���R9@���`6?@���9@���`?@���kq:@����?@���`:@���p?@���:@���r?@��� ;@���j?@���W;@���`^?@���@QX;@���X?@���`m;@��� O:?@���@Q;@���`05?@���`;@���;?@���`*;@���t?@���6<@���@?@���`h<@���@?@���`Y<@����>@���`/<@���?>@���!=@���@>@���`,=@���1>@����L]=@����>@���`=@���`>@���=@���l?@���`=@���B%?@���=@����3?@����>@���J?@���@W>@���:L?@���+>@���`D?@���$>@���8?@���m/>@���b9?@���<J>@��� <?@���@Q8>@���`D?@���M>@����0V?@���Y>@���@o?@��� &^>@����Sw?@���:\>@���@?@���w>@���t?@���r>@����~?@���>@����p?@���>@���?@���>@���@z?@���@>@���i?@���@>@���b?@���@^>@���l?@���>@���b?@����>@���@p?@���i>@����Lm?@��� U>@���r?@���g?@����?@���``?@��� |?@���`Y!?@���1?@���>@����?@��� V$?@���`?@����V?@���`?@���k?@���Ct?@���?@����vx?@���@ ?@���?@���?@��� V?@���@@���ef?@���S@@���M?@���` @@���X?@��� ?@���rk?@���o?@���?@���2?@���?@���?@���8n?@���?@���Ri?@��� ?@���[?@���?@����H?@��� x?@���:?@��� ?@���`3?@���@X@@����w7?@���@h@@���@ ?@���` @@��� ?@���P@@����?@���@@���<?@���z$@@��� ?@���@p%@@���:,?@���#@@���@?@���)@@��� yE?@����v(@@���@XB?@��� ~1@@���`8?@��� ~A@@���@?@���O@@����?@��� =j@@��� N?@���m@@���?@��� &V@@��� ?@���b@@����* ?@���`k@@���?@���9u@@���b?@���I@@���� ?@���`N@@���`?@���*z@@���?@���߃@@���'?@���`@@����#1?@���ؑ@@���"?@���Ƒ@@��� ?@��� ,@@���@X?@���I@@���t?@���l@@���$?@���@@@���$?@���@p@@���?@���Z@@���*?@���A@���;?@���`A@���R?@���5�� ������ņV���5P*@���@U����@,@���A����������@VV��� ,@����HV���,@���aBV���``,@���@=V���l`,@���&:V���j,@���55V��� s:,@���3V���@/,@���@1V��� F,@���@+.V���1,@����U*V����<,@���M V���w+@���NV���`)+@���V���+@��� V����+@����V����+@����V����q+@����r�V���@'+@���@U���@+@����;U��� +@���U��� f+@���@U���ע+@��� "U���� +@���U���*@��� U���*@����U���@*@����U����@*@����BU���v*@���U���`}*@����U���`d*@���^U���5P*@���@ V��� Q*@���V���@ W*@���@V���@!b*@���`\V��� V*@���V���\n*@���@!V���{*@��� }&V���*@����.V����*@���&V���h*@���#V���@J~*@���V���T*@����.V����u*@���=V����*@���@CV���`r*@���RV����*@���dV���@+@����sV���@^ +@����0vV���6+@�����V���zt+@����V���@}+@���ņV���+@���fV���@+@���vV���q,@���7oV����T,@���@oV���*,@����ZiV���Af,@���_V��� {,@����dV���,@���kcV���`,@���@eV���`դ,@���dV����,@���bV���-,@���aV���,@����ZYV����@,@���@VV��� ,@���6���������� "@���`?��� 1&@���@������������� $@���V@���`X%@���W@���@F&@���PY@���&@���` ?��� 1&@���`?���n^%@���= ?���`$@���`?���#@��� v ?����#@���CD?���Yq#@���?���/V#@����P?���>)#@����ף?����+#@���?����f#@���g$?���"@���@b?���� "@���?���9#@���b?���PY#@���!"?����DD#@���vw?���P9#@���~?���#@��� ?���#@���`@���#@���@���#@���`@��� $@���V@���7��+������ 8B@���O(@���`ՏE@���@G2@���s������������5D@���%/@���'C@���5/@����$C@���a/@���@hD@���F/@���* D@���R/@���sD@��� v/@���C@���`){/@���C@���`/@��� %C@���?/@���@C@���@/@���`D@���?/@���kD@����)/@����D@���/@��� D@���Z/@���` D@���ē/@���D@����/@���D@���Z/@���BD@���`G/@���`#D@���@N/@���D@���QX/@��� xD@���@e/@���(D@���c/@��� 4D@���E/@���5D@���%/@jD@յ+@���D@��� +@W.D@F+@���ID@���+@2]D@ľ+@���D@���+@ 2hD@#0g+@eK/D@Iz;F+@���D@����@+@���_E@���D+@���sE@��� +@���� E@����h+@ E@DyEF+@��� E@���E+@���|E@���J+@ =$ E@P 9+@���E@���7+@���E@���++@E@N@%+@`L'E@} +@����UE@��� -+@r6E@rQ.+@���DE@��� V4+@��� E@���O+@���$E@���@$+@Ռ%E@S+@���@i'E@���` +@����q(E@���*@ޮe+(E@U\*@vO(E@¹%x*@���+E@���@*@���&/E@���`9*@���`/E@���P*@����h/E@���*@����1E@��� ]*@N32E@S'k*@���<E@���`*@���EE@���1t*@RR%HE@Eg*@���`HE@���>g*@IHE@Rne*@���]E@���@*@]E@$23_ *@���_E@���`*@���`E@���@)@���`_`E@���@)@3J`E@*s3)@TXbE@vK)@���cE@���9)@VHDcE@/(k')@���@eE@���)@iWVchE@eM)@���`hE@���`H)@���ckE@���6)@��� mE@���_)@+mE@ )@���`xE@���)@���`HE@���)@���9E@���@)@/ E@Р)@����zE@����͢)@���E@���`׏)@AI&E@Q)@���ǏE@���k)@ȏE@k)@���`ՏE@���`j)@0EʏE@ j)@���` E@���g)@���E@���c)@����lE@���_)@���%E@���[)@���ՄE@���W)@���@E@���S)@���6E@���O)@����}E@��� K)@���{E@��� G)@���PyE@���@C)@��� wE@���`n?)@���tE@���;)@����)tE@���'=)@���sE@���`>)@���isE@���@)@���`rE@���A)@���@+rE@���@B)@0ƲqE@ wB)@-#pE@)(KA)@���@pE@���GA)@*1pE@a'H?A)@PXpE@&=)@���HpE@����<)@���?pE@���P9)@���6pE@����5)@���oE@��� |3)@���oE@���Y1)@����nE@��� 0)@���`fnE@���.)@nE@ ,]-)@1mE@󵃚,)@���mE@���))@���` nE@���&)@���/nE@���#)@��� mE@���@#!)@���mE@���`n)@���lE@���)@���lE@���@)@���kE@���`M)@݈kE@dO5)@7iE@ϑ(@���>iE@����c(@���GiE@����(@���`,iE@���(@���`hE@��� l(@���@vhE@����J(@�����hE@���(@���gE@���(@���fE@���(@{fE@ (@n|1aE@q(@���`E@���(@���`E@���>(@���?`E@���`(@���@_E@���(@���@_E@���(@03^E@k(@:lYE@~R(@��� lYE@���O(@Z1kYE@*P(@���`kYE@���O(@E�ξgYE@C\(@���`nWE@�����(@��� CUE@���(@����SE@���(@���@uQE@����|(@���@eOE@���@(@ϥ-OE@JM(@���DE@���@!)@a:E@E{)@OSX:E@')@���@#9E@��� )@���%7E@��� l)@���'5E@����(@��� *3E@���`(@����k2E@����:(@���0E@���(@��� n0E@����(@���"E@���@AG)@���`!E@���J)@���!E@���M)@��� !E@����N)@���� E@���P)@���E@���zT)@���E@����[)@���E@���d)@����E@��� q)@���E@���u)@���`E@���v)@���YE@���M|)@����dE@���)@���E@��� )@���`fE@���)@���E@���)@���`_E@����`)@���E@���Ȑ)@���OE@��� Œ)@���E@���`)@���@E@���Q)@���`E@���)@���@]E@����))@��� E@���)@��� E@���`)@��� mE@��� h)@���.E@��� )@���E@���b)@���'E@���)@���`E@���)@���E@���@^)@���PE@��� \)@������E@����Z)@���8D@��� 1)@���0D@���@-)@����;D@���߻)@��� D@���E)@����D@���@A)@���`eD@���x)@���D@���Q)@���JD@���)@���@ D@��� %)@���@^D@���@j)@���'D@���)@���D@���)@���@ED@����/)@��� D@���@P)@���D@���)@���XD@��� )@���D@��� *@���`6D@����Z*@����D@���1*@��� D@����T*@���D@���,*@���@D@���&*@���`D@���#*@���&D@���?(*@���D@���0*@���`_D@��� 2*@���D@���s2*@���D@���4*@���D@����w7*@���D@���`=*@��� D@���l@*@���`GD@���bI*@���`D@���@N*@���`6D@���S*@���8D@���$`*@���@D@���h*@���D@���`l*@���`D@��� y*@���`D@���Q*@����|D@��� *@���@D@���*@��� D@���=*@���`D@���*@��� D@���Ʊ*@���7D@���@3*@���`D@���` *@���@D@����*@���` D@����)*@���2D@���n*@���D@���*@���D@���*@���@]D@���*@���(D@���`5*@����D@���@X*@���D@���`*@���D@���@*@���@D@���$*@���`D@���*@���@D@���*@���`D@���@*@���`ʶD@���*@���gD@���*@���7D@��� +@���pD@��� +@���īD@���`5+@���`GD@���+@��� D@���r+@���9D@���I+@���D@���`#+@���D@���`$+@��� D@���*+@���`ʞD@��� \/+@���D@���@X2+@���̜D@���5+@����D@���`;+@����*D@����L=+@���D@���F+@���D@���9M+@���D@���O+@���QD@���~Q+@���ID@���X+@���ӖD@���]+@���&D@���`la+@���`D@���`ff+@���D@���&~+@���D@���?+@���HD@���`+@���D@���+@��� \D@���W+@���`ʎD@���+@���gD@���@+@���0D@��� +@���D@���`+@���`D@���v+@���LjD@����ݾ+@���D@���`+@���D@���`+@���`D@���@d+@���@ D@���+@���`D@���+@��� =D@���`+@���YD@���+@���D@���`+@���o~D@����+@���}D@����7+@���{D@���@P+@���2{D@���+@���zD@���+@��� tzD@���`+@��� yD@���j,@���`$xD@��� ,@���@wD@���],@���vD@��� ,@���htD@���,@���` tD@���,@���@rD@���!,@��� ,qD@���&,@��� oD@���,,@����nD@���.,@����mD@��� 1,@���lD@���U5,@��� 2lD@���6,@���WkD@���t:,@���OjD@���@@,@����fiD@���`E,@���?hD@��� bJ,@����fD@���`N,@���@ fD@���`P,@��� UeD@���P,@���cD@���`S,@���_D@���vX,@���XD@���p],@����TD@���@_,@���TTD@���@ `,@���2SD@���l`,@��� QD@���`la,@��� nOD@����c,@��� ND@���Cd,@����KD@��� g,@���2KD@���i,@���JD@���j,@���`HD@���m,@��� FD@���p,@���8FD@���@Xr,@����CD@����/w,@���BD@��� +z,@���H@D@����~,@���>D@����#,@���<D@���ԅ,@���� ;D@���,@���:D@���Ɋ,@���`59D@���`,@���8D@���,@���8D@���7,@���6D@���3,@���`M4D@���,@���F2D@��� ,@���0D@����,@��� m0D@����,@����L-D@���x,@���,D@��� ,@���P)D@��� ,@��� 'D@���;,@��� \'D@���9,@��� 'D@��� \,@���&D@����,@���p%D@���@X,@���"D@���t,@��� 1D@���,@���` D@���,@��� jD@���`V,@��� mD@����7,@����D@���,@���AD@���,@���p D@���,@���` D@���,@���O D@��� ,@��� D@���@,@���`6D@���b,@���D@���,@���`D@���,@���jD@���,@���D@���@,@���C@���!,@����C@���,@���zC@���d,@���C@���`C,@��� =C@���,@���C@���@',@����dC@��� N,@���C@���,@���C@���,@���C@����,@���`MC@���M,@���C@���,@���DC@���`,@���@C@���,@���C@���`,@���C@���W,@���9C@���,@���C@���O,@���C@���r,@���FC@��� N,@����C@���O,@��� C@���O,@���@vC@���r,@���.C@���@�-@���C@��� -@���JC@���-@��� C@���-@���` C@���-@���WC@���`-@���`C@���`f-@���`C@���`l-@���C@���,@����;C@���,@��� NC@���t,@��� C@���M,@���-C@���@',@���`wC@��� ,@���C@������-@���`C@���@-@���`C@���-@���?C@���-@���C@����J-@���C@���@ -@����TC@��� -@���`C@���Z-@���C@���`-@���2C@���-@����C@���`-@���`%C@���`C%-@���oC@����&-@���C@���A&-@���hC@���#-@���C@���!-@��� C@���M-@����|C@���-@���@EC@��� -@���C@��� V-@��� =C@���-@���C@���3-@����C@���`5-@���&C@���-@���@C@���`C-@���`C@���-@��� C@��� -@���C@���E-@���`C@��� -@���>C@��� -@���C@���@-@����C@���@�-@��� C@���l�-@���`C@���`,@���βC@��� N,@���@ڰC@���Q,@���`eC@����/,@���C@���S,@���@4C@����),@���C@���,@��� C@����L,@���@ C@���,@���`C@���`,@��� C@���`/,@���C@���z,@���C@���,@���C@����R,@���YC@���`,@���C@���,@���࣠C@���@,@��� C@���,@���`%C@���n,@���C@���`,@���C@���\,@����;C@���,@���2C@����,@��� ؚC@����,@���XC@��� ,@���tC@���-@���`C@���A-@���C@���-@����dC@��� y-@���`$C@��� -@���@ɗC@���`-@���`C@���-@���/C@���`C%-@���`C@���&-@����|C@���@33-@���PC@���M<-@���2C@���`?B-@���C@���@jC-@���`C@���G-@���C@���;K-@���C@���K-@��� ҇C@���`K-@���.C@���J-@���C@���@I-@���0C@��� bJ-@��� C@���@K-@��� ЃC@��� qO-@��� C@��� qO-@���C@���M-@���@5C@���K-@���`C@���E-@��� فC@���jB-@���FC@���2-@��� ǁC@���--@���bC@���+-@���C@����)-@���HC@���(-@���@C@���@A'-@���`~C@����#-@���`x~C@��� !-@��� {C@���-@���FzC@���-@���vC@���-@����uC@���-@���@uC@��� \-@����LuC@���@^ -@���tC@����-@��� VtC@���`f-@���sC@���-@���rC@���`-@���OrC@���l�-@���oC@���@',@���nC@���,@���`MlC@���,@����|kC@���p,@���jC@���`r,@���XjC@���@,@���iC@���,@����liC@����w,@���`%gC@���@,@���eC@��� ,@���`;dC@��� R,@���@EcC@����7,@���`C@��� \,@���_C@��� ,@���._C@���,@���@]^C@���,@���]C@��� ,@���OZC@���,@����lYC@���,@���WC@���,@���/VC@���,@���UC@���,@���`<SC@���,@���RC@��� h,@���QC@����,@���`6PC@���,@����MC@���,@���LC@���@,@��� JC@��� ,@���HC@���`),@���`FC@���,@��� DDC@���`,@���BC@���`,@��� AC@���,@���@C@���z,@���?@C@��� 1,@���>C@����,@���`=C@���t,@���@=C@���`,@����;C@���`/,@���`<;C@��� 1,@���@9C@���,@���`8C@���,@���H8C@���,@���7C@���,@��� 6C@���;,@���5C@���@^,@��� U5C@���7,@���@4C@���Z,@���2C@���,@��� 2C@��� ,@���1C@���,@���0C@���,@��� /C@����L,@���@,C@��� -@���`+C@���-@���*C@���@ -@���j*C@��� -@���)C@���-@���(C@���!-@���@v(C@���&-@���Q(C@���)-@���I'C@����70-@���`&C@���@2-@���%C@���U5-@���@$C@���7-@���#C@���@<-@���"C@���&>-@���j"C@���@@-@���@4"C@���F-@��� ="C@��� VT-@���!C@���`Z-@���`~!C@���[-@��� m C@���`^-@���AC@����#a-@���C@���a-@���C@���`la-@���@4C@����b-@��� C@����c-@���`4C@���c-@���C@���c-@���C@��� b-@���C@���Ga-@��� C@�����`-@���@]C@���_-@����*C@���`]-@���C@���&^-@����dC@���l`-@���`C@���`d-@���`M C@���bi-@���C@��� p-@���C@��� r-@���XC@���Qx-@��� C@���M|-@����C@���ԅ-@���`GC@���`-@���B@���@-@���@B@��� -@���@^B@���-@���0B@��� -@��� UB@����/-@���`B@���@'-@���@B@���-@���B@���`-@���`<B@��� %-@���@B@���G-@���@B@��� b-@���XB@���-@���B@���ʮ-@���@B@��� -@���B@���U-@���B@���`-@��� B@����)-@���&B@���-@��� B@���h-@���`B@���Z-@���B@���Ϊ-@���@B@���-@���`NB@��� 9n-@���B@���1T-@��� B@��� B-@����^B@���@-@���B@���`-@��� B@���,@���B@���Q,@��� >B@��� Z4,@���@^B@����/7,@���@5B@���M9,@���B@��� N;,@��� B@���<,@���B@����>,@���OB@���dG,@���@4B@���`5Q,@��� B@����/W,@���`B@���Z,@���@4B@��� \,@���B@���K^,@���@ɿB@���`I`,@����LB@���`d,@����;B@��� g,@���ͻB@���@i,@����B@���l,@���2B@��� 9n,@���B@���q,@��� B@���,@���༺B@���C,@���aB@��� ,@����B@���,@��� nB@���=,@��� B@���`,@���`xB@���`,@���B@����,@���9B@���@X,@��� B@���@-,@���B@���`,@���jB@���`r,@���`B@���,@���jB@��� V,@����B@����,@���`GB@���t,@���දB@����ݾ,@��� B@�����,@��� B@��� ,@���` B@����,@��� B@���,@���`MB@���`5,@���ͫB@���`/,@��� B@���t,@����}B@���,@���B@���,@���B@�����,@���धB@����F,@���.B@���,@����B@���,@��� UB@���d,@���`B@���?,@���@B@���,@���!B@���d,@���B@����,@���QB@��� ,@���`eB@���C,@��� CB@��� ,@���`B@���`,@���B@��� ,@��� ,B@���d,@���B@���`f,@���B@���@j,@���`%B@���G,@��� B@���,@���`MB@���@,@��� B@���@,@���ŒB@���l,@����lB@����,@���HB@����),@��� ҏB@���t,@����TB@���3,@���@^B@���;,@���`B@���=,@����׋B@���n,@���`B@���,@����|B@��� ,@���ċB@���,@���NjB@���@,@���͋B@����,@���``B@���@',@���ΊB@���Q,@���B@���1,@��� B@���Ȑ,@���B@���,@���.B@��� ˍ,@���yB@���,@���B@���,@��� tB@���,@���@#B@����,@��� mB@���,@���`B@���,@���`~B@���`f,@���{B@���,@���zB@���Z,@���!zB@���S,@���yB@���`,@���xB@���`,@��� vB@���,@���uB@���`r,@���`MtB@����L,@���sB@���n,@���rB@���ע,@����lqB@���,@���oB@���h,@���@oB@���@j,@���@mB@���,@���rkB@���@,@��� jB@����,@���OjB@���@A,@���iB@��� ,@���hB@��� ,@���JfB@���@j,@���yeB@��� ,@����dB@���l,@���@bB@��� ,@���_B@���,@���A^B@���`,@���`\B@���,@���@[B@���j,@��� ZB@���,@���`~YB@���&,@���XB@���K,@���7WB@���n,@���UB@�����,@��� tRB@���j,@���QB@��� ١,@����QB@���ڠ,@���`xNB@���@P,@���MB@���Q,@���`_LB@����/,@���IB@����T,@���IB@���x,@���HHB@���@,@���GB@���,@?EB@LUu ,@���EB@��� ,@���`UEB@���@],@����DB@���.,@���_DB@���$,@���CB@���,@��� CB@��� DZ,@���CB@���,@��� BB@���i,@���BB@���,@����kBB@��� ,@���`4BB@���,@���AB@���,@���AB@���,@���AB@��� \,@���@~AB@���-,@���GAB@����-@��� AB@��� -@���@B@���@}-@���@B@���N-@����[@B@���$-@���`$@B@��� ,-@���?B@���5-@���@?B@���>-@���`?B@���=C-@���?B@���@eG-@����J?B@��� P-@��� ?B@���X-@���>B@���a-@���>B@��� j-@���@]>B@���Ws-@���&>B@����)|-@��� =B@���Մ-@���@=B@���@-@���p=B@���x-@����:=B@����J-@���`=B@���@-@���<B@���-@���@<B@���-@���`M<B@����k-@���<B@���@<-@��� ;B@��� -@���;B@����-@����s;B@���`-@���`<;B@���@]-@���:B@���.-@���:B@������.@���@:B@���`.@���O:B@���.@����:B@��� t.@���9B@����!#.@���9B@���@+.@����c9B@���4.@���`,9B@��� =.@���8B@���`fF.@��� 8B@���M.@\S9B@rO.@��� yEB@���@-x.@;ݺ}EB@ZVx.@���/FB@���.@���FB@���.@���GB@���X.@��� dHB@���.@����IB@���.@��� IB@���_.@���`JB@��� .@���`EKB@���.@���@KB@���`f.@���`LB@���@.@���pMB@���`.@���&NB@���.@{pOB@.@yl+QB@o>` .@���`PB@��� .@���`$PB@���.@���PB@���`E/@���GQB@���` /@���`QB@���/@���QB@���`/@���@}RB@���p/@���SB@���&/@���SB@���./@���@;TB@���w7/@����TB@���$@/@���pUB@���`H/@���@UB@���@~Q/@����VB@���OZ/@���.WB@���b/@���`WB@���k/@���@mXB@���@Vt/@���XB@���}/@���PYB@���/@���[B@����c/@��� ]B@���5/@���Q`B@����/@x?aB@/@5pB@4j߇ 0@��� qB@���5!0@���`qB@����%0@ԈrB@6(0@>OwsB@hi</0@���VtB@���@20@���uB@���@50@o tY2uB@fEc60@���9uB@��� 70@ ::uB@W 70@���uB@���?80@���uB@���@u90@����BvB@���O:0@���vB@��� *;0@���7wB@���<0@���`wB@���`<0@����RxB@���^=0@���xB@���@>0@��� lyB@���`>0@ &yB@(?0@���U|B@����C0@x{B@Ø*P0@���{B@���P0@���`{B@���`Q0@����!{B@���S0@����zB@���T0@���@zB@���gU0@���@+zB@���xV0@���yB@��� W0@���yB@���X0@���`~yB@���aZ0@���PyB@���[0@���YyB@���]0@����cyB@����J_0@���`~yB@���`0@���yB@���`4b0@���yB@���`c0@���zB@���0e0@���`4zB@���f0@���XzB@���@h0@��� tzB@����i0@<+iuzB@ 1i0@C zz@zB@5;n0@���=zB@���n0@BlzB@ Zn0@^xB@$R[r0@���$xB@���`r0@��� wB@��� s0@���@wB@���t0@���vB@���@u0@���ovB@���@v0@���`vB@���w0@��� uB@���`vx0@���uB@���y0@���tB@���z0@���VtB@��� {0@���sB@���@|0@���sB@���}0@�csB@c~0@��� `sB@���~0@7`sB@ "~0@����!sB@���`$0@���rB@���0@��� rB@���0@���rB@��� 0@����rB@��� T0@���`rB@���0@���rB@��� u0@���@3sB@����ϊ0@���isB@��� ;0@���`sB@����0@����sB@��� 0@sB@`# #ʏ0@���tB@���`0@'v1tB@:_0@���tB@���0@��� uB@���`U0@���`UuB@���0@���uB@���0@@EvB@ɿ?z\0@ dˀB@8,0@���B@���0@��� B@���h0@����cB@���@0@��� ǁB@����0@��� "B@��� 0@���@B@����0@Q'B@_0@���B@���0@뒂B@o}0@���aB@��� 0@���`فB@���@0@��� lB@���p0@���@#B@���`0@���`,B@���0@O)]B@Ìe0@h*߫~B@[0@���~B@�����0@q?U~B@sDd0@���S~B@���k0@ET~B@Cϝo0@���~B@���0@���`~B@���V0@���B@���g0@tB@GE#0@��� OB@����1@HrB@/8`& 1@���@mB@����c 1@�����B@���O 1@����B@���` 1@���.B@���`M 1@����~B@��� 1@���~B@���1@렶~B@}1@���@~B@��� 1@K~B@TK~1@���~B@���`1@���.B@����1@���wB@���1@���WB@���1@���B@���@31@��� B@���1@��� B@����1@���gB@���1@���ԅB@��� 1@��� KB@���1@kkMB@p?1@MUB@yǞ 1@����׋B@���@ 1@���`B@���p 1@���`^B@��� 1@���B@���`M 1@���@]B@���r 1@���@B@��� 1@���%B@��� 1@���B@���1@\ 6B@>6M1@WeB@31@���B@����21@G❢B@11@UDB@�<1@���gB@���1@��� B@���1@����B@����B1@���%B@���1@���@B@���1@����[B@��� 1@���`,B@���-1@���B@���Q1@���@ؚB@���@1@���@B@��� 1@��� 2B@���`1@��� B@���`1@���B@���1@���B@��� T1@���wB@����B1@���HB@���`f1@���B@���1@���B@���@e1@��� "B@��� 1@���B@���1@���B@���� 1@���@B@���` 1@���B@���r 1@����B@��� ; 1@���@B@��� 1@���pB@���� 1@���@B@��� 1@��� B@���%1@���IB@���1@���@B@��� 1@���B@���1@���@٩B@���`n1@���`B@���@1@���`B@���1@���B@���o1@���ìB@��� 1@���`^B@��� L 1@���@B@��� 1@���`B@���_ 1@���`wB@��� 1@���-B@���@ 1@���@ѰB@��� 1@���B@���� 1@���aB@����t 1@���@3B@���@+ 1@���@B@��� 1@���B@��� 1@���@B@���` 1@����B@���` 1@JB@���` 1@72GB@&1@��� \B@���.'1@���@B@��� d(1@���@B@��� u)1@���`B@���*1@���@B@���+1@UB@,1@{VĴB@N.1@����B@���@.1@eB@F /1@���!B@����/1@���B@���P1@dBRB@oڵP1@���B@����P1@���@#B@���Q1@���B@����R1@���@+B@���iS1@��� YB@���`{S1@���`B@���S1@���B@���S1@���@B@��� |S1@���@LB@���@S1@����B@���hT1@���B@���U1@���@ B@���U1@���B@���fV1@���-B@���W1@���`B@���W1@����cB@���?X1@���B@���@X1@���B@���>Y1@���iB@���`Y1@��� B@���Z1@���B@���OZ1@���B@���Z1@����KB@���Z1@��� B@���`<[1@���@B@��� [1@���B@���[1@����cB@����[1@���@"B@���\1@���B@���@;\1@���B@����\1@����B@���`\1@��� CB@���@\1@���B@���]1@����B@����:]1@����B@���]1@��� dB@���]1@���@#B@���^1@���B@���8^1@���B@���^1@/mEB@l^1@,B@%_1@���B@��� \_1@BmB@-_1@{.B@χJl`1@t/B@m`1@|4B@ʻxj1@���5B@���@j1@���>B@���`Ml1@���B@���'m1@3+B@̬m1@dB@a&ws1@���@B@��� |s1@���B@����t1@���hB@���` v1@���B@���w1@��� CB@���w1@���B@���x1@���xB@���@y1@���@ B@����y1@���B@���=z1@���`$B@���z1@���`B@���`<{1@���NB@���n{1@���`B@��� {1@���aB@���{1@���B@���`<{1@���`B@���@z1@���B@���y1@���hB@���x1@���B@��� Sw1@=z{yB@e}v1@QB@5q1@����SB@���q1@pSB@0kq1@H>fB@M ^r1@HgB@Nr1@'B@"4Jv1@����RB@���ww1@���@B@����Rx1@���`,B@���Py1@���B@���az1@���B@���`{1@���OB@���q|1@���B@���p}1@���B@���o~1@����|B@���1@���`B@����[1@����B@���1@��� B@���1@��� B@���X1@���/B@���1@���`B@���`1@����JB@���V1@���`B@���Մ1@���Q�C@���y1@����C@���1@���@uC@���ӆ1@���C@���w1@���`C@���@1@���C@���1@���`C@���1@����)C@���O1@���C@���1@���@LC@���1@noC@;TL1@���`C@����M1@y\C@XL1@���C@���`M1@���C@���̌1@���%C@��� L1@���C@����1@���`C@���1@��� C@��� L1@���X C@����ߌ1@����* C@���`1@��� C@���1@��� ; C@���@<1@���h C@��� Љ1@���@D C@���?1@��� C@���ӆ1@u'. C@ ^1@ Zt^ C@G|1@���_ C@����|1@|̌&` C@Z!|1@KC@Z{1@(jƶC@M{1@GxC@+Oށ1@���C@���1@����C@���h1@���C@��� 1@����cC@���.1@���`#C@���@v1@���C@���`1@���@C@���@<1@���@C@���q1@���`C@���̌1@���C@����ߌ1@���iC@����1@���VC@���q1@����C@���1@���^C@����1@S窵C@$1@����C@���1@@YC@=zs1@���C@���1@��� KC@���ए1@���C@���`ɏ1@���`C@���1@����RC@���%1@���C@���`1@���C@���`1@v&7C@{gj1@kwC@wg 1@!C@#9D 1@���`"C@���:1@<Zr"C@.1@���@"C@���@ 1@���`"C@���`ј1@qZC#C@3Y\1@���`#C@���a1@3 #C@եa1@���#C@���a1@���i#C@���`1@��� #C@���@;1@��� $C@����ߜ1@���%C@��� 1@���@%C@���81@��� T&C@���`1@&C@0X1@vՂg.C@Ǩ1@���.C@����1@onn/C@y]1@���/C@���@1@޼1C@8sq1@��� 2C@���w1@h!�<2C@*1@bM4C@Py1@���5C@���1@.#6C@ğ1@Ύ7C@!m1@���@7C@���G1@���8C@����1@���`~9C@���1@#H:C@y!1@���`:C@��� 1@G6t:C@;l 1@��� =C@���@D1@��� @C@���@1@���CC@���%1@���IGC@��� 1@���oIC@���1@aYIC@"1@���`OC@���@G2@��� ,QC@���:1@���`nC@��� %1@���zC@���@(L1@���C@���@0@����C@���:0@CZВC@}m0@���*C@���·0@H9ƒC@$@:0@kC@mŎ|0@���C@���@{0@yC@cRw0@���ءC@���@z0@���jC@��� B/@'MC@")d/@���C@���/@���C@���ҋ/@*0KC@<=/@���`C@���v/@0bٸC@r[/@���C@���P/@���C@��� >/@p~C@ :/@���`0C@���t9/@6P/sC@OW8/@����]C@���2/@���C@���l0/@���`ԸC@����70/@���@ŸC@���'/@.*>ԸC@(G&/@ғ"C@?}?/@|˨C@Nw /@��� yC@���/@���`NC@��� /@���rC@���.@���bC@���Y.@���C@��� b*.@`C@!`(.@���`C@���L.@���@C@����-b.@2'JC@ʚD.@zQC@uE.@����C@���.@���C@���ʁ.@���*C@����.@���mC@���ĺ.@����EC@���.@MFC@TU.@��� C@���.@{`C@W}L&.@���C@��� .@C@4A.@FrC@.@����)C@��� .@pcG+C@b.@xC@.@����C@���`.@���`C@���@.@u?fC@+x2.@���QC@���@.@��� D@���@.@1hw D@z-.@��� D@���.@O^D@FM.@iD@`zo.@����]D@���`.@)YID@ *2.@���)D@���y.@D@2 Wu.@���D@���u.@��� OD@��� n.@!|D@"$x<k.@zCD@eF.@��� D@���.@���tD@���@)-@e=!D@%Y-@���&D@��� -@eS1r,D@g-@��� /-D@���-@V<.D@'o-@ y2D@ü$-@���@2D@���o-@.i3D@?-@���9D@��� .@!t?D@ Ec-@���m?D@���`a-@���AD@���R-@����ED@���@q-@_4h ED@M -@��� OD@���`-@���@OD@���-@���`SD@���-@���PYD@���-@���@^D@����t-@����D@���@K-@1YD@|X;-@��� D@���� 9-@) D@İ1-@���@?D@���@X-@ =D@W4 �-@���@äD@���`,@���D@���,@[kED@i,@ ¯D@vR,@���wD@���,@��� D@���,@���»D@���@,@���׼D@���,@���@D@���,y,@���`D@���kc,@����D@���N,@��� D@��� *&,@��� D@���@Z,@���bD@���@9,@���wD@���+@����D@����+@>_*D@s+@jD@յ+@���8���������5@��� L@���`1<@���M@����������*���@������9 6@���`qL@����$�6@����^L@���5@����L@���%5@��� gL@���` 6@��� M@����}26@���@M@���j5@���`H M@���`<5@���&M@���5@��� &M@���5@����*M@����05@���+M@��� 15@���@?(M@���5@����,M@���6@���9-M@���@5@����:M@����5@���@M@����$�6@���@AM@��� 6@���5M@���`6@���5M@���P6@���=M@���26@���SFM@����=6@��� ?M@���tI6@���@BM@���`eG6@���IGM@���'6@���`PM@���>6@���sJM@���%6@��� OM@���`k7@���tKM@���dG7@����:M@���zD7@���6M@���(7@��� U=M@����S7@���`-M@���6@���0M@���6@���)M@���@W6@���"M@���6@���`Y!M@���6@���M@���@6@���`M@���`d6@���M@����wG6@���`M@����36@���8L@���9 6@���`qL@���6@��� WM@���?x6@���ZM@���y6@���``M@���r6@���DkM@���a6@���qM@����6@���uM@��� 6@���QxM@���P6@���)M@���6@��� xM@���@6@���وM@���ײ6@����M@���@6@���@-M@��� 6@���@}M@����M 7@���lM@���7@���iM@���6@���jM@���j6@���cM@����6@���`NcM@���D6@���hM@���6@���hM@���6@���@FZM@���6@��� WM@���<@���`M@���+<@��� M@���`1<@���@M@���`o0<@���M@���<@���`M@��� <@���oM@���@;@���M@����o;@���@WM@���;@���M@���@;@���LM@���;@����qM@���;@���@M@���;@���@p~M@���\~;@��� pM@���@Pl;@���@fM@���@;@���4M@���� ;@��� L.M@���v;@���@&M@��� ey;@��� aM@����;@���M@���`];@���` M@���@<;@���M@���z;@����M@��� ;@���=M@���ò;@���`L@��� ;@���@L@��� (;@���L@���3;@���L@����);@����L@���;@���L@����;@��� L@���2;@���L@���Ն;@���L@���i;@���eL@��� d;@���VL@���=j;@���uL@���g;@���L@��� Y;@���<L@���`�_;@���L@���V;@��� L@���`>;@��� LL@���R;@��� L@����;@���`BL@���:@����BL@��� :@���#L@���`I:@���@L@���F:@���`L@���:@���L@���*:@��� uL@���`:@���$L@���:@���qL@���@:@���L@���@g:@���L@���@u:@���` L@���`L:@���`BL@��� (.:@���@gL@��� :@����qL@���`R:@���L@��� :@����L@��� :@���L@���(9@���L@���˿9@���@.L@���o9@���LL@���`Ó9@����L@����9@���`L@��� v9@���HL@���k9@���M@���@*Y9@���M@���@<M9@���� M@���ZC9@���M@���L9@���M@���]K9@����M@��� ;9@��� L@����49@���M@��� +9@���� M@���y9@���- M@���`8@���M@����8@����M@����8@���pL@���@8@���@�M@���8@���@L@���8@���3L@���`s8@����L@���k8@���`L@���`_O8@���`wL@����u8@���`M@���y8@���M@���@8@���@h$M@���78@���)M@���@8@���`0-M@���rk8@��� ~1M@����|S8@��� >1M@���<8@���"M@���%8@���"M@����M8@����M@���7@���)M@���``7@���`_,M@���7@����DM@�����7@���`GM@���`~7@���XM@���7@���@_M@���7@���@p]M@���7@���@fM@���m7@���@aM@���@ 7@���`YiM@��� j7@���tM@���@]n7@���@?xM@���E7@���:|M@��� 7@���PM@���s7@���{M@���?h7@���aM@���`n7@���M@���7@����M@���7@���்M@���@v7@���jM@���ł7@���9M@���7@���`˝M@��� 7@��� M@���@ 8@���`NM@����8@���M@���8@���@oM@���@ 8@���@M@���8@���3M@���28@���߫M@���>98@���`ݭM@����*8@���̴M@���7?8@���`M@���Q8@���@M@���DT8@���iM@���` e8@���̼M@���8@��� ҷM@���I8@���߻M@���8@���M@���8@���PM@���8@���`YM@����#8@���M@���@8@���@M@���=8@���`M@���@g9@���M@���ੋ9@���UM@���@-x9@��� M@��� &~9@���M@���@9@���ZM@���i9@���M@���9@���@WM@���%9@���ZM@���Ʊ9@���M@����T9@���`YM@���9@���M@���9@���@M@����9@���M@����|9@��� M@��� &9@���M@���:@���M@���:@���@M@���:@���`M@���k;@���1M@���;@��� %M@���<@���`M@���9�� ������~@@��� @ @���G@���h-@���������OSX:E@')@��� r+E@���;(@���`kD@���"'@���*D@���{'@��� >D@����'@���D@���a&@���`D@���I&@���#D@���1&@���@D@���P%@���D@���%@���!E@���'%@����5QE@���32&@���@?`E@����@'&@���bE@���@d&@��� 6hE@����%@���`xE@����&@��� 0UE@���%>%@���`)[E@���Z%@���dE@���=$@��� hE@���ഠ$@��� E@���@/#@���ਛE@���D#@���E@���cH#@���ਫE@���R7#@��� %E@���*"@���`E@���@"@��� HE@���@y"@���`YF@���@"@���F@���� !@���G@���� @���G@���� @���`5G@���@���yF@���`(@���E@���*@��� E@��� z@���E@���@���U|E@����@���uE@���l@���sjE@���\.@���AE@���@7@���E@���@��� E@���{@���@XD@���RW@���D@��� @��� D@���B@��� D@��� @���@D@���@���٨D@��� 8@����D@���`ij@���`GdD@���&@���1D@���Be@���`C@���@���1C@���`9m @���C@��� @ @���C@���@-X @���C@���@h @����5C@����2 @���C@���7 @���tC@���@q @����CC@���); @���`Y9C@��� @���C@��� @���B@���1 @���`|B@���/@���RB@���b@��� ?B@���b@���`B@���b@���A@���z@���`\A@���}@��� A@���1@��� A@��� M@���@XA@���@���`A@���2@��� A@����@@��� HA@���[@���@pA@���~@��� DA@���{@����A@���@���8A@���h@���`A@��� 5q@���`A@���@���`A@���`@���KA@���@���A@��� g@���|A@��� @���}A@���`>@���moA@���2@���`GaA@���Zp@���`WA@���@���`@A@���{3@���<A@���B@���sA@���@X2@���A@���@���`A@���`@���rA@���@���@@���@r@����ɿ@@���@���~@@��� @���2@@���`@���@@��� /@���@@���@(@���@@����Ec@���~@@��� ij@���@p@@���/ @���@@����A @���@@����d @���*@@���@& @���@@��� @���@@��� @���@2@@���U @���`Y@@���@ @����@@��� @���SA@���k!!@���`GA@���!@��� A@���)#@���A@���$@��� +A@����L]$@���,A@���p}$@���$A@���%@��� H8A@��� %@���@LA@��� %@���bA@���%@��� bA@���_%@���`|A@���%@����wwA@���`%@���ീA@���@PY&@���`}A@���q&@��� `{A@���&@���2A@���@X'@���A@���@z'@���@hA@���d'@���{A@��� (@���kA@���@ W(@���[A@���f(@���`A@���`I(@���A@���T)@���B@���r)@���� B@���i)@���B@���` *@��� B@����q*@���2B@����"+@���S>B@��� ˭+@���"9B@����+@����EB@���,@?EB@LUu ,@���GB@���,@���HHB@���@,@���IB@���x,@���IB@����T,@���`_LB@����/,@���MB@���Q,@���`xNB@���@P,@����QB@���ڠ,@���QB@��� ١,@��� tRB@���j,@���UB@�����,@���7WB@���n,@���XB@���K,@���`~YB@���&,@��� ZB@���,@���@[B@���j,@���`\B@���,@���A^B@���`,@���_B@���,@���@bB@��� ,@����dB@���l,@���yeB@��� ,@���JfB@���@j,@���hB@��� ,@���iB@��� ,@���OjB@���@A,@��� jB@����,@���rkB@���@,@���@mB@���,@���@oB@���@j,@���oB@���h,@����lqB@���,@���rB@���ע,@���sB@���n,@���`MtB@����L,@���uB@���`r,@��� vB@���,@���xB@���`,@���yB@���`,@���!zB@���S,@���zB@���Z,@���{B@���,@���`~B@���`f,@���`B@���,@��� mB@���,@���@#B@����,@��� tB@���,@���B@���,@���yB@���,@���.B@��� ˍ,@���B@���,@��� B@���Ȑ,@���B@���1,@���ΊB@���Q,@���``B@���@',@���͋B@����,@���NjB@���@,@���ċB@���,@����|B@��� ,@���`B@���,@����׋B@���n,@���`B@���=,@���@^B@���;,@����TB@���3,@��� ҏB@���t,@���HB@����),@����lB@����,@���ŒB@���l,@��� B@���@,@���`MB@���@,@��� B@���,@���`%B@���G,@���B@���@j,@���B@���`f,@��� ,B@���d,@���B@��� ,@���`B@���`,@��� CB@��� ,@���`eB@���C,@���QB@��� ,@���B@����,@���!B@���d,@���@B@���,@���`B@���?,@��� UB@���d,@����B@���,@���.B@���,@���धB@����F,@���B@�����,@���B@���,@����}B@���,@��� B@���t,@���ͫB@���`/,@���`MB@���`5,@��� B@���,@���` B@����,@��� B@��� ,@��� B@�����,@���දB@����ݾ,@���`GB@���t,@����B@����,@���jB@��� V,@���`B@���,@���jB@���`r,@���B@���`,@��� B@���@-,@���9B@���@X,@���B@����,@���`xB@���`,@��� B@���`,@��� nB@���=,@����B@���,@���aB@��� ,@���༺B@���C,@��� B@���,@���B@���q,@���2B@��� 9n,@����B@���l,@���ͻB@���@i,@����;B@��� g,@����LB@���`d,@���@ɿB@���`I`,@���B@���K^,@���@4B@��� \,@���`B@���Z,@��� B@����/W,@���@4B@���`5Q,@���OB@���dG,@���B@����>,@��� B@���<,@���B@��� N;,@���@5B@���M9,@���@^B@����/7,@��� >B@��� Z4,@���B@���Q,@��� B@���,@���B@���`-@����^B@���@-@��� B@��� B-@���B@���1T-@���`NB@��� 9n-@���@B@���-@���B@���Ϊ-@���`B@���Z-@��� B@���h-@���&B@���-@��� B@����)-@���B@���`-@���B@���U-@���@B@��� -@���B@���ʮ-@���XB@���-@���@B@��� b-@���@B@���G-@���`<B@��� %-@���B@���`-@���@B@���-@���`B@���@'-@��� UB@����/-@���0B@��� -@���@^B@���-@���@B@��� -@���B@���@-@���`GC@���`-@����C@���ԅ-@��� C@���M|-@���XC@���Qx-@���C@��� r-@���C@��� p-@���`M C@���bi-@���`C@���`d-@����dC@���l`-@���C@���&^-@����*C@���`]-@���@]C@���_-@��� C@�����`-@���C@���Ga-@���C@��� b-@���C@���c-@���`4C@���c-@��� C@����c-@���@4C@����b-@���C@���`la-@���C@���a-@���AC@����#a-@��� m C@���`^-@���`~!C@���[-@���!C@���`Z-@��� ="C@��� VT-@���@4"C@���F-@���j"C@���@@-@���"C@���&>-@���#C@���@<-@���@$C@���7-@���%C@���U5-@���`&C@���@2-@���I'C@����70-@���Q(C@���)-@���@v(C@���&-@���(C@���!-@���)C@���-@���j*C@��� -@���*C@���@ -@���`+C@���-@���@,C@��� -@��� /C@����L,@���0C@���,@���1C@���,@��� 2C@��� ,@���2C@���,@���@4C@���Z,@��� U5C@���7,@���5C@���@^,@��� 6C@���;,@���7C@���,@���H8C@���,@���`8C@���,@���@9C@���,@���`<;C@��� 1,@����;C@���`/,@���@=C@���`,@���`=C@���t,@���>C@����,@���?@C@��� 1,@���@C@���z,@��� AC@���,@���BC@���`,@��� DDC@���`,@���`FC@���,@���HC@���`),@��� JC@��� ,@���LC@���@,@����MC@���,@���`6PC@���,@���QC@����,@���RC@��� h,@���`<SC@���,@���UC@���,@���/VC@���,@���WC@���,@����lYC@���,@���OZC@���,@���]C@��� ,@���@]^C@���,@���._C@���,@���_C@��� ,@���`C@��� \,@���@EcC@����7,@���`;dC@��� R,@���eC@��� ,@���`%gC@���@,@����liC@����w,@���iC@���,@���XjC@���@,@���jC@���`r,@����|kC@���p,@���`MlC@���,@���nC@���,@���oC@���@',@���OrC@���l�-@���rC@���`-@���sC@���-@��� VtC@���`f-@���tC@����-@����LuC@���@^ -@���@uC@��� \-@����uC@���-@���vC@���-@���FzC@���-@��� {C@���-@���`x~C@��� !-@���`~C@����#-@���@C@���@A'-@���HC@���(-@���C@����)-@���bC@���+-@��� ǁC@���--@���FC@���2-@��� فC@���jB-@���`C@���E-@���@5C@���K-@���C@���M-@��� C@��� qO-@��� ЃC@��� qO-@��� C@���@K-@���0C@��� bJ-@���C@���@I-@���.C@���J-@��� ҇C@���`K-@���C@���K-@���C@���;K-@���`C@���G-@���C@���@jC-@���2C@���`?B-@���PC@���M<-@����|C@���@33-@���`C@���&-@���/C@���`C%-@���`C@���-@���@ɗC@���`-@���`$C@��� -@����dC@��� y-@���C@���-@���`C@���A-@���tC@���-@���XC@��� ,@��� ؚC@����,@���2C@����,@����;C@���,@���C@���\,@���C@���`,@���`%C@���n,@��� C@���,@���࣠C@���@,@���C@���,@���YC@���`,@���C@����R,@���C@���,@���C@���z,@��� C@���`/,@���`C@���`,@���@ C@���,@��� C@����L,@���C@���,@���@4C@����),@���C@���S,@���`eC@����/,@���@ڰC@���Q,@���βC@��� N,@���`C@���`,@��� C@���l�-@����C@���@�-@���C@���@-@���>C@��� -@���`C@��� -@���C@���E-@��� C@��� -@���`C@���-@���@C@���`C-@���&C@���-@����C@���`5-@���C@���3-@��� =C@���-@���C@��� V-@���@EC@��� -@����|C@���-@��� C@���M-@���C@���!-@���hC@���#-@���C@���A&-@���oC@����&-@���`%C@���`C%-@����C@���`-@���2C@���-@���C@���`-@���`C@���Z-@����TC@��� -@���C@���@ -@���C@����J-@���?C@���-@���`C@���-@���`C@���@-@���C@������-@���`wC@��� ,@���-C@���@',@��� C@���M,@��� NC@���t,@����;C@���,@���C@���,@���`C@���`l-@���`C@���`f-@���WC@���`-@���` C@���-@��� C@���-@���JC@���-@���C@��� -@���.C@���@�-@���@vC@���r,@��� C@���O,@����C@���O,@���FC@��� N,@���C@���r,@���C@���O,@���9C@���,@���C@���W,@���C@���`,@���@C@���,@���DC@���`,@���C@���,@���`MC@���M,@���C@����,@���C@���,@���C@���,@����dC@��� N,@���C@���@',@��� =C@���,@���C@���`C,@���zC@���d,@����C@���,@���C@���!,@���D@���@,@���jD@���,@���`D@���,@���D@���,@���`6D@���b,@��� D@���@,@���O D@��� ,@���` D@���,@���p D@���,@���AD@���,@����D@���,@��� mD@����7,@��� jD@���`V,@���` D@���,@��� 1D@���,@���"D@���t,@���p%D@���@X,@���&D@����,@��� 'D@��� \,@��� \'D@���9,@��� 'D@���;,@���P)D@��� ,@���,D@��� ,@����L-D@���x,@��� m0D@����,@���0D@����,@���F2D@��� ,@���`M4D@���,@���6D@���3,@���8D@���7,@���8D@���,@���`59D@���`,@���:D@���Ɋ,@���� ;D@���,@���<D@���ԅ,@���>D@����#,@���H@D@����~,@���BD@��� +z,@����CD@����/w,@���8FD@���@Xr,@��� FD@���p,@���`HD@���m,@���JD@���j,@���2KD@���i,@����KD@��� g,@��� ND@���Cd,@��� nOD@����c,@��� QD@���`la,@���2SD@���l`,@���TTD@���@ `,@����TD@���@_,@���XD@���p],@���_D@���vX,@���cD@���`S,@��� UeD@���P,@���@ fD@���`P,@����fD@���`N,@���?hD@��� bJ,@����fiD@���`E,@���OjD@���@@,@���WkD@���t:,@��� 2lD@���6,@���lD@���U5,@����mD@��� 1,@����nD@���.,@��� oD@���,,@��� ,qD@���&,@���@rD@���!,@���` tD@���,@���htD@���,@���vD@��� ,@���@wD@���],@���`$xD@��� ,@��� yD@���j,@��� tzD@���`+@���zD@���+@���2{D@���+@���{D@���@P+@���}D@����7+@���o~D@����+@���D@���`+@���YD@���+@��� =D@���`+@���`D@���+@���@ D@���+@���`D@���@d+@���D@���`+@���D@���`+@���LjD@����ݾ+@���`D@���v+@���D@���`+@���0D@��� +@���gD@���@+@���`ʎD@���+@��� \D@���W+@���D@���+@���HD@���`+@���D@���?+@���D@���&~+@���`D@���`ff+@���&D@���`la+@���ӖD@���]+@���ID@���X+@���QD@���~Q+@���D@���O+@���D@���9M+@���D@���F+@����*D@����L=+@����D@���`;+@���̜D@���5+@���D@���@X2+@���`ʞD@��� \/+@��� D@���*+@���D@���`$+@���D@���`#+@���9D@���I+@��� D@���r+@���`GD@���+@���īD@���`5+@���pD@��� +@���7D@��� +@���gD@���*@���`ʶD@���*@���`D@���@*@���@D@���*@���`D@���*@���@D@���$*@���D@���@*@���D@���`*@����D@���@X*@���(D@���`5*@���@]D@���*@���D@���*@���D@���*@���2D@���n*@���` D@����)*@���@D@����*@���`D@���` *@���7D@���@3*@��� D@���Ʊ*@���`D@���*@��� D@���=*@���@D@���*@����|D@��� *@���`D@���Q*@���`D@��� y*@���D@���`l*@���@D@���h*@���8D@���$`*@���`6D@���S*@���`D@���@N*@���`GD@���bI*@��� D@���l@*@���D@���`=*@���D@����w7*@���D@���4*@���D@���s2*@���`_D@��� 2*@���D@���0*@���&D@���?(*@���`D@���#*@���@D@���&*@���D@���,*@��� D@����T*@����D@���1*@���`6D@����Z*@���D@��� *@���XD@��� )@���D@���)@��� D@���@P)@���@ED@����/)@���D@���)@���'D@���)@���@^D@���@j)@���@ D@��� %)@���JD@���)@���D@���Q)@���`eD@���x)@����D@���@A)@��� D@���E)@����;D@���߻)@���0D@���@-)@���8D@��� 1)@������E@����Z)@���PE@��� \)@���E@���@^)@���`E@���)@���'E@���)@���E@���b)@���.E@��� )@��� mE@��� h)@��� E@���`)@��� E@���)@���@]E@����))@���`E@���)@���@E@���Q)@���E@���`)@���OE@��� Œ)@���E@���Ȑ)@���`_E@����`)@���E@���)@���`fE@���)@���E@��� )@����dE@���)@���YE@���M|)@���`E@���v)@���E@���u)@����E@��� q)@���E@���d)@���E@����[)@���E@���zT)@���� E@���P)@��� !E@����N)@���!E@���M)@���`!E@���J)@���"E@���@AG)@��� n0E@����(@���0E@���(@����k2E@����:(@��� *3E@���`(@���'5E@����(@���%7E@��� l)@���@#9E@��� )@OSX:E@')@���:��������N���`qK���2A��� I����������d����������M��� s+J���iM��� J����M��� J���~M���#J���M���J���EM���&I����M��� I���@LM���I���MM���@I��� M���I����M���MI���`M���I��� bM��� [I��� M���@I����M���`I���~M����BI���~M���@I����M��� I���M���@I��� M����7I���@M��� I���,M���I���M���I����0~M���@I���`wM����ŻI���ÌM���I��� pM���I���nM���@I���`lyM��� I���OM���hI���4JM����I���V<M���@AI����,M��� I���(M���˵I��� 5M���ٹI���>M���`I���oFM���I��� I@M���>I����GBM���`$I���.7M���'I�����0M���I���$M���6I���5!M���@I��� M����I���M��� I���`M���`I���^%M���I���+M���@I���`-M���`I���!M���`I����L���I���L���iI��� L���üI���`L��� I��� CL���@KI��� + M���I����YM���I���M���NI���`L���fI���`L���GI���`*L���I���@L���I���` M���`I���FM��� I���6M�����I���&M���`TI���@;LM��� I���oM���`I���wM��� yI���{M��� I����|M���`1I���dM���I��� QM���@3I���@LMM���-�J���`UM���@J���>QM����BJ���VM���J���]M��� 9J����lM���@LJ���`*sM���` J���wM���@ J����M��� J���.M����I��� ޥM��� �J���M���@|J��� M���J���M��� J���໓M���J���M���J���ÄM���J���DM��� J���`0M���@J���M���@J���pM����)J���>M���J���M���J���`M���J���M���`� J���4M���*J����M��� s+J���3 B���`qK��� $B���`K���+B���SK���=B���#IK���;B���MDK���|CB���n?K����NB���`BK���@gB���`9K����kB���O2K���sB���.K���@nB���D,K���`B��� +K���@RB���Q K���໳B���"K���4B��� 8K���B���K��� B���K��� JB���iK���B���K���`B���=K���`B��� K���B����AK���B���OK���DB���U K���`B��� K���B����0K���`B���K����YC���K����C���>K���`B��� m�K���dB���K��� 'B���@K���B���]K���]B���K���@B���@KK���`ؒB��� K���~B����K��� z}B���F K���2B����0K���`}B���`K���hB��� K���vhB���`}K���^B��� K���$PB���.K���`lQB���K���`ZB���K���`ZB���nK���@GB��� [K���@VB��� s#K���?B���@3#K���`?B����,K���7B���n'K���M,B���@K.K���2B����K��� B���$K���` B���?0K���LB���/K���`B���8K����B���?K���; B��� hEK���B���@IK����YA���`TFK��� A���@YK���2A���aK���`rA���hK���� B���@aK���A���OjK��� bA���&nK���3 B���`qK���@|KN���J���@3SN���J��� mXN���J���`hN��� J���M\N���gJ���NcN���J���N��� J���qN���`J���hN����rJ���_N���`J����`lN���I����GN��� CI���:N���DI���4N���I���D4N����)I���`BN��� I���LMN��� I���n?N���I���8N���I���`9N���I���@1N���`I���@;,N���`0I����&N���I����N���@I���N��� I���D,N���`}I���@:5N��� II���gEN���oI���=RN���I���PQN��� 9I���`;N���I��� N���iI��� N���GI���N���I���>N����I����AN��� [I���$@N��� ޽I��� +2N���eI���y5N���I����NN���^I���`RN���&I����>N���#I���N���`I���M���I���` N���I���@|N��� I���`$M���`~I��� \M���`+I��� M���I���@M���iI���`<M��� I���M���I���bM��� I���M��� I���`<M���I���M���`I���ѠM���#I���M���`�I���यM���ɿI���ٱM��� I���SM���I��� M���I���M���I���M��� 8I���@N���`[I��� N����I��� N����I���$N�����J��� !N��� J���/N����`J���xFN���oJ����?N���J���@|KN���J���;������������wN@���E���@F*O@���������� ������ J����wN@���-���O@���` ���` O@���`͊���`!O@������ O@���`DZ���&O@���Y���9%O@���`[����vO@������`O@������N@��� J����wN@������ %O@���@���* O@���`��� O@���?���`O@���a���tO@���a���K O@��� !��� O@������ aO@��� S���l(O@���_���@F*O@����͌���`(O@���`m��� #O@���:���'%O@���`d���ZO@������@.O@���E���PO@���ନ���|O@���o^��� O@����ޝ���@ O@������ %O@���<��$������3(f@���Q)3����f@���'0���a����������2������Af@���Q)3���`>f@���$3���`>f@����3���@@Ef@����` 3��� |Ef@������3����Lf@���`2��� Of@���@@2���`Of@���`3����Jf@���w3��� If@���2��� Ef@���@3���XFf@���@$3���YEf@��� )3����-Df@���@!3���Af@���Q)3���@f@���@C2��� 7f@���82���)f@���2���3(f@����61��� +f@���1��� +f@��� 1���@-f@���1���-f@���ڰ1���Z,f@���R1���@.f@���K1���4f@���o1����9f@���@3c1���:f@���@:m1��� =f@���f1���`>f@���`h1����-Ff@���@M1����Hf@���^1���`Hf@����/g1����Gf@���+z1���@If@���n1���Kf@���@y1���Nf@��� ލ1���@Rf@���`Ƣ1���'Sf@����1����Rf@����61��� Sf@���@j1���Rf@����01��� eUf@���!2��� QVf@���@ 2���`Rf@���W#2���Qf@���`2���Nf@���S'2���`)Kf@����2���@Af@��� C2���@f@���@C2���aXf@����Z1����hVf@����1���@7Sf@��� ?0���Pf@���@0��� SOf@���0���Pf@���`0���Rf@���0���Rf@���0���Qf@���@0���Qf@����Y0����MTf@��� i0����vVf@���ͬ0���@Xf@���@c0���3Zf@���@@0���k_f@���@@x0���@kf@���d0���lf@���@i0���@mf@���~Q0���sf@���@p>0���`xf@���`.0����xf@����;0����f@���'0���zf@���N[0��� 6tf@���Յ0���arf@����0���]of@���#0����qf@���|0����$~f@���@v0���k}f@���\0���{f@���@0����d|f@��� 0����v~f@���`0��� {f@���0���yf@���,0���`tf@���@0���rf@���]0��� nif@���`I0���bkf@���L0���hf@���0����2df@����70��� cf@���0��� af@���0���``f@��� 10���^f@��� 0����h\f@���M0��� Yf@���v0���aXf@����Z1���=���������3@��� M@���@Y?@���@Q@������������*������3@��� > N@����3@��� N@���n3@���!N@���@P3@���\&N@���@3@��� N@���@43@����N@���n3@���1$N@���@ 3@���{+N@����3@���`'N@��� 3@����,N@���3@���23N@���p3@���,N@��� 2$4@��� O*N@���@ G4@���`#N@���+4@����N@���4@���JN@���4@���UN@���@4@���'N@���4@���@-N@���@ 4@���`/&N@���g4@���!N@���`3@���a"N@��� 24@���7N@���3@���:N@���!3@��� %N@���N 4@��� N@���@ 4@���{ N@��� 13@���r N@���3@��� > N@���y6@���`M@���l6@���` N@���6@���N@���k6@���jN@���`q6@���`NN@����s6@���N@���6@���N@���6@���$N@���6@���N@���@6@���U N@���q6@���c�N@���`6@��� �N@���y6@���`M@���<@���pQ@���<@���|Q@���`5a<@���@tQ@���@P=@���@PmQ@���rK=@����_Q@���I=@���]Q@���`<@���;OQ@���<@���IQ@���t<@���GQ@��� <@���RCQ@����t<@���`:Q@����n<@���@8Q@���޼<@���� 8Q@���J<@���`4Q@���@X<@���0Q@���gu<@���8"Q@���@X<@����_ Q@���``[=@���@GQ@���=@����-P@����S>@���uP@���`=@���@`P@��� O=@���P@����=@���@P@���g=@���bP@���@X"=@���P@���x=@����P@���@3=@���@QP@����(=@����%P@���@Y=@���`P@����c=@���P@���`_=@���`P@���J=@���!P@���=@���@.P@���@X">@���@nP@���@>@����jP@���A>@���:lP@���=@���iP@���=@���gP@����=@���dP@����v=@����wcP@��� =@���@`P@���@ۿ=@���AVP@���@P=@���PP@���@=@��� OP@��� =@����NP@���=@���;KP@���=@���IP@���@=@���� HP@��� =@���@_DP@���;=@����v@P@���=@���|:P@��� N=@���`3P@���x>@���@2P@����Z!>@���10P@���!>@��� /.P@���5>@��� +P@��� ->@���l(P@���=@���}%P@����>@���"!P@����T>@����P@���9 >@���@P@���'>@���@P@���@\>@����vP@���>@���P@���`܎>@���� P@���7>@���@ P@����L>@���P@���@d>@����P@��� ~A>@���`O@���`5>@���ZO@���@ >@���O@��� N{>@���`BO@����w>@���@­O@���e>@���O@���@42?@���O@����$@?@����O@���`fF?@���O@���@Y?@���`tO@���n?@����#aO@���C?@��� AO@���>@���@ O@���)'>@��� N@���- >@���yN@���=@���(N@���@=@���ZN@����=@���஖N@����T<@��� UN@���<@���{N@���m<@���sN@����v;@���FN@����T;@���tIN@����);@���FN@���l;@���@N@���@ ;@��� x>N@���;@��� =BN@���N;@���@N@���H;@��� ;N@���|;@���`@N@���y;@����<N@���Fr;@���;N@���6;@����GN@��� U%;@���`BN@���O ;@��� UEN@���`:@���8N@���r:@���=N@���@ :@���4N@����|:@��� 9N@���`:@���Z8N@���z:@��� <N@���Q:@���LN@���:@��� ,IN@���@:@���`RN@���:@���`QN@���Av:@���`@N@���r{:@���7N@���`X:@���/N@���`60:@���z4N@���:@���`A6N@���@9@���=N@���@9@��� ;N@��� :@���95N@���@�:@���*2N@���:@���@F*N@���B:@���@%N@��� 9@���,N@���9@���@W3N@���O9@���-N@���9@���$N@���`9@��� N@���@39@���`N@����|9@��� 'N@���`9@���"N@����9@��� xN@����S9@��� U%N@���z9@��� `+N@����)9@���@o.N@���9@���t)N@����ք9@��� N@���@`9@����N@��� V49@����N@���@19@���@N@���9@����N@��� 29@��� N@���A9@���N@��� 8@��� N@���@ 8@���N@����8@��� ~N@���8@���`N@���`8@���`N@���@8@��� N@���ˍ8@���`N@���`f8@��� N@���=8@��� N@���r{8@���M@����i8@���`M@���u8@���`N@���R8@��� M@���QX8@���`NN@���`]8@���N@���>)8@���N@����8@���`�N@����8@���N@���`7@���*M@���7o7@���M@���z7@���@�N@���͋7@���`N@��� 1u7@���N@����X7@���M@���67@��� ,M@���@7@��� M@���`6@��� M@���I6@��� M@���a*7@���kM@���(7@��� gM@��� A7@���M@���V7@����N@���Q7@���2N@���97@���`fM@���&7@����wM@���7@���M@���@97@���l�N@�����@7@���N@��� 7@���N@���`6@���` N@����#6@���`NN@���7@���|*N@���J7@���9-N@���h6@���1N@���6@���@pN@����}r6@���IN@���6@���0N@����#6@���`.N@����z6@����<3N@���I6@���`/N@���@-6@���77N@���6@���`8N@�����5@���BN@���`f5@���@XBN@����5@���`<N@���5@����=N@���5@��� HN@���Q5@���)KN@����5@���ON@���5@���EN@���5@���>N@���75@���� >N@��� U5@���BN@��� ,i5@���JN@���@w5@���MN@��� 1e5@���QN@���@Z5@���@WN@���@q5@����5YN@���`c5@���@_N@��� Q5@��� xnN@���`_l5@���nN@���l5@��� sN@���K5@����UN@���{5@���N@���Io5@���ϑN@���75@���N@���=z5@���N@���``5@��� `N@���5@���N@���@q5@���iN@���5@���߳N@��� \5@���ஶN@����l5@���N@���`/5@���@N@����5@��� N@��� |5@���` N@���J~5@���tN@���`e5@���`N@����M5@���2N@���`5@���@oN@���o~5@���� N@���`5@���N@���%O5@����wN@���?5@���N@����c5@���O@���S5@���@-O@���@ G5@���`+O@���`D5@��� 3O@���`515@���@*O@�����05@���*2O@����� 5@��� 3O@��� 5@��� FO@����45@���KO@���l5@���ULO@���5@��� VO@���`6 5@���`WO@��� 5@���]O@���5@��� cO@��� \/5@���zdO@���p=5@���@.oO@���^5@���mO@���`fv5@���yO@���lp5@���@pO@���` 5@����vO@���`5@���aO@���ʮ5@���̓O@���Ǡ5@��� O@���~5@���O@���n5@����O@����5@���௝O@���@5@��� O@��� 5@���O@���` 5@���lO@���5@���@oO@��� 5@���@O@���5@���`O@��� 6@���`ʞO@���a*6@���@hO@��� G6@���`˥O@���kQ6@���sO@���X6@���O@���Z6@���(O@����26@���O@���26@��� O@���f6@���KO@���`C6@���O@����H6@���`O@���xV6@���@XO@����vh6@����O@���8~6@���O@���@6@���@O@��� 6@���O@���A6@���@XO@���86@���PO@����6@��� O@���6@���O@���o6@���O@���6@����O@���`_6@���O@���@7@���`O@���`6@���@O@���` 7@��� `O@���o>7@���tO@���@j7@���O@���^7@���`O@��� Ue7@���2P@����)7@���P@����ɟ7@��� P@���G7@���@XP@��� 7@����wP@����7@���@XP@���`<7@���P@���7@����P@���@7@����P@���58@��� P@���@8@����,1P@���̬8@���82P@���J8@���5P@��� 9@���3:P@���B9@���4P@���9]9@��� >5P@���`_\9@���:P@���M9@����9P@���`609@���`=P@���79@���@N?P@���k9@���l<P@���r9@���`y=P@���`h9@���@xBP@���69@���GP@���L9@���2OP@���Q9@���TP@��� 2D9@����$XP@����Z9@���JZP@���W9@����_P@����#9@���gP@���੫8@���`hP@��� 8@����nP@���o8@����]rP@���8@���lxP@���h8@���@rP@���<8@���@?tP@���I?8@���qP@���68@���@qP@��� *8@���tP@���G8@���@`P@���7@���@P@���c7@���� P@����7@���`yP@���@37@���zP@���`f7@����MP@���@8@���;P@���7@���P@����й7@����P@���7@���@P@����7@���BP@���7@���SP@����L7@��� P@���`ݽ7@���8P@���@-7@���@P@���7@���@P@���7@����P@����$7@���`P@���@]n7@���@P@���Zp7@���P@���`7@���@P@��� +z7@���@P@���~7@���� P@���a7@���P@���@-7@��� P@���Ί7@����P@���``K7@��� Q@���@%7@���@(Q@����(7@���@r Q@����7@���{Q@����6@���Q@��� 6@���@Q@���@5@���z$Q@���5@���@$Q@����*5@����_(Q@���`055@����v4Q@��� 14@���09Q@���14@���Q;Q@���@]4@����<Q@���`4@���`Q@Q@���� 4@��� DQ@���@4@���*FQ@���G5@���@BQ@���5@���FQ@���5@���@HQ@��� + 5@���`KQ@���5@����NQ@���!R5@���TQ@���5@���8RQ@���>Y6@����5Q@����e6@���-Q@���Z7@���@,Q@���C47@���:(Q@���7@���-Q@���;7@���@G5Q@���r 8@���@4Q@���!8@����1Q@���8@���I+Q@���@;8@����)Q@���8@���#Q@���8@��� #Q@���@8@���&Q@���`9@���C(Q@���@*9@���J2Q@����}b9@���Z8Q@���9@����h8Q@��� %9@���@@Q@���g9@���`9MQ@���H9@���UQ@���9@��� 6XQ@���a9@����cQ@���79@���@?dQ@����9@����VhQ@���`59@���jQ@���@'9@���`9mQ@����^:@��� fvQ@���u:@���{Q@����:@���@|Q@���` ;@���!zQ@���@J;@���|Q@���`;@���@-Q@���@;@���@Q@���<@���pQ@���>��2������)���D@���@ #@��� I@���#������0������6p"@���D@���1"@���@FD@���>)"@���@üD@���!@���D@����\!@��� `D@���!@���`D@����!@���D@���!@���`YD@����M\!@���`6D@���s!@���rD@���!@���|D@���!!@���@D@���:!@��� D@���@-!@��� D@���@5Q!@���`0D@����s!@���9E@���@d!@��� E@����!@���E@����C%!@���iE@���?H!@��� E@���H`!@���"E@����u9!@���,E@����!@���`60E@���-X!@��� ;E@���@S!@���@E@���!@���tQE@���)"@����MTE@���@*"@��� ZE@���k"@���]E@��� "@���`/VE@����"@���]E@���@D"@����rE@���Y"@���zE@���@"@���E@���@M"@���E@���"@���vE@���@"@���@?hE@����"@���BME@���v#@���~HE@���"@���LE@���@ #@��� 7E@���#@���cE@����["@��� D@���"@���7D@����Ȑ"@���`D@���"@���@D@���l"@��� D@���6p"@���D@���5@���8YI@���@?H@��� cI@���`@���eI@��� @���@^I@���`H@ @��� LI@���p= @���DI@���  @���m?I@���Y @���?I@���Y @���8I@��� $` @���U,I@����^ @����$(I@��� @���� -I@���`]@���@?(I@����L@���`!I@���`@��� I@���@@���a I@���@���`AH@���@_@���H@���@U@���#H@���Ʊ@���`H@��� @��� I@���k@���`I@���ch@���* I@���@ 4@���@'H@���A@���H@���n@���H@���d@��� aH@���&@���cH@���@���`kH@���`Q@���@zH@��� :@���`H@����~@���H@���h@���H@����"@���`H@���!@���}H@����t@���@H@����@���bH@���`>@���`H@����r@���H@���@���=H@���`@��� xH@��� [@���H@����&@��� ̔H@���[@���`֓H@���c@���H@���`N@���,H@���@'@��� %H@���sZ@���H@���r@��� H@���H@���H@��� @���H@���(@��� `H@���@��� UH@����#@���`AH@���jb @���|H@����mt @���Z{H@���@DD @���`YqH@���@���RXH@���05@���`KH@����:@���AH@���/@���`>H@���`�@���`+H@���k@���@H@���bI@���@H@���v@���Z�H@��� @���`G@��� Z@���G@���@��� NG@���@���@(G@���@��� GG@���@���G@���@���dG@����T@���G@���@��� =G@��� @���ٸG@���A@���௭G@���@���@G@��� %?@���:G@��� @���G@���@����^G@��� @���G@���@���G@���PY@���n~G@���'@���vG@���@��� cG@���L@���`,ZG@���@���KG@���O@��� :G@����n@��� r3G@���0u@��� G@���J>@��� G@����L@����FG@������@���JG@���`@���`G@��� @���G@��� 8@���Q G@���@���`&G@����@��� D)G@���L@���`-G@���6P@���@4G@���`ш@���@i;G@���7/@���[7G@���L<@���4G@���`A8@���`3G@���@@���`-G@���`@���@"G@��� ].@���G@���&@���3G@���@���#G@���L|@���G@���@w@���ZG@���@'@���BF@���L<@���jF@���X2@���F@��� K@���F@���@���F@����n@���@XF@���@����F@���@?@���F@����}@���F@����f@���kF@��� @���F@���`{@��� *F@����@���F@����,@���@PyF@��� = @���lF@���F@��� 6XF@���`�@���}YF@���@���UF@��� S@���~PF@���`>i@���9EF@���m@���@F@���`p@���8F@���``@���95F@���J@���b)F@���&@��� F@���@@���dF@���@��� > F@���@���IE@���`#@��� HE@���]@���E@���F@���`�E@���@���QE@���`B@���@E@���@���E@���@@��� uE@���@���@E@���@����E@���@���@E@��� @����E@����@���WE@���`@���E@���`'@���E@���@Ɯ@���uE@���@@���E@���@���E@���Z@���E@���@���-E@���@��� E@���@���oE@���@���E@���@���@E@��� \@���.E@���-@���E@���`@��� 0E@���e@���dE@����"b@���:E@���j@���E@���@���`6E@���g@����wE@���`j@���ஶE@��� @���E@���˭@���cE@���@[@��� gE@����@��� E@���u@���௕E@��� $`@���`GE@���H@���)E@���`x@���ߋE@��� @���E@���@���`ʎE@���t@���7E@���Z@����E@���`@���E@���Qx@���E@���'@���E@���@@���̌E@���`r@���[E@���@����E@���I@���ϑE@���O@��� DE@��� Vt@���@hE@���Xr@��� E@���I@���`E@���@#A@����E@���` @��� үE@���@���`NE@���@���iE@���@���@E@���@���` E@��� $ @���@E@���~@���E@����K>@��� E@���>@���E@���@��� fE@���@#@���`AE@���~@����ɯE@���`@���௵E@���@w@���@pE@���@C@���E@���bI@��� E@���m@���SE@���K@���E@��� h@��� fE@���&@���ǹE@���@���@XE@���`H@���@E@���?@��� >E@���'@���E@����T@���`_E@���`@���E@��� @����ɿE@���?@����E@��� ?@���E@���j@���� E@���g @��� E@���` @���`E@���Y@���`ŊE@����X@���்E@���`>@���وE@���@@���@oE@����^M@���ZxE@���@K@���rE@���` @���lE@����^@���`gE@���@��� &fE@���k@����vpE@���Be@���FE@����kj @���8E@���4 @����w7E@���N@��� <E@���9m@���@i3E@���o^@��� N+E@���@6@���-E@���@���7E@����@���@.E@���l?��� /E@���??��� 7E@���?���>E@���`?���<E@���@?���sJE@����d?����SE@���?���`oLE@���@E#?��� HXE@����N?���kE@���`o^?���@ikE@���`?���_E@���?��� 6XE@���`ff?���@XE@���?���@VE@���?���`[E@���p���XE@���.���``E@���` ȿ���dE@���`mӿ����lE@��� +ٿ���eE@������ >iE@������9eE@������nE@�������{E@���V4���yE@������ ,E@��� ���`E@������ E@��� ���`/E@������਋E@���`r���+E@�������E@��� ����ѠE@���J~���`E@���@���dE@���`o��� E@��� ���@E@�������#E@������ >!F@���xV���PF@���`W��� TF@������zTF@��� v���mWF@���&���aF@����ų���@WcF@����s���PF@���@%��� XF@������ ҏF@���@B���F@�������#F@������@F@��������F@������F@���@���൐F@���_,���`܆F@���@���J~F@���`t���`łF@���߿���@F@��� J���F@���@ ���F@���b��� F@���@����<F@���@33���sF@�������F@�������F@���xV���@F@���e���F@���@z5���F@���&���F@���?����G@������G@������ G@���`o���G@���p=���G@���`+���G@�������!G@���@����$(G@���`���(G@���]n��� "G@���@(}���`_,G@���-���D+G@���8���@2G@���@0����5G@���?���9G@������S>G@���m����$XG@���L�����$hG@���4��� qG@�������`G@���`I���@hG@���`i����`qG@���`���bG@���@O���'G@����S���@G@���@33���� G@���� ���\G@����s���G@��� F���G@���/���`G@���@w���KG@���=���BG@������`GG@���m���@?G@���@<+���߳G@���,y���G@���>���G@������`G@����;L���@WG@��� ���`G@���Oz���`G@����;L���G@������`HG@���`C���G@���`q��� xG@���&���mG@���= ���G@���@K~���`qG@����8���@?G@���� ��� G@���@T���G@���~1 ���G@��� ���G@��� ���@hG@����8/ ���G@����ų ���G@���@ ���sG@���H@ ���(G@���� ���G@����ų ���G@���?���G@��� ���G@����W��� %G@��� *����G@��� J���|G@������SG@���r���G@���$`���BG@���˭��� G@���&����H@����s���@H@��� ��� ?H@������k H@���.��� H@��� 0���@H@���@���`H@������8H@���&���H@���#A���H@���~���$H@���^ ���@o&H@��� ���&H@���`K���`(H@���`E���`-H@���`��� O*H@��� J���`0H@���_,���6H@���8��� *H@���)���5H@������`EH@������3JH@���@���DSH@����A���`UH@������ RH@���@��� WH@��� ���]H@����m���{SH@����3���VH@���U���`PH@����|���\H@��� ���@VH@��� ��� WH@��� ���]H@���A ���^H@���@ ���*bH@���`+ ���)kH@���  ���@WkH@���D ���moH@���  ���eH@���6���oH@���@"���iH@���`���jbH@������ %WH@������SH@������ >IH@��� :���CH@������PH@���ƒ��� XH@��� F����UH@���@"���OH@�������`ANH@���>i���*JH@�������`RH@�������`JH@���Q���AH@���O���@FH@���p=����`NSH@��� 0���`ZH@��� ���2SH@���r���`NH@���@z5���`NH@���5���TH@����,���R_H@������� kH@���`c���`vH@������`H@���L]����#H@������`H@������H@���4��� H@���b���ٰH@���������ZH@���@���H@���&��� H@���p���`H@�������@FH@���!"��� xH@���4��� H@���`u��� xH@���Œ��� =H@���!"���`H@���@'���`H@������H@������H@���F���@H@���8���H@���ۿ��� H@���X˿���)H@���X?���H@���@'?���H@���@a?���` H@���r?��� ~H@���ߛ?���`H@���` ?���@H@���?���tH@���?��� I@���?���I@���G?���I@���ׂ?���I@���Q?���I@���`?���!"I@���?���$I@���-?��� .I@���?��� %/I@���5?���3I@���);?���\NI@��� 7?���nI@���`?����eI@���@?@���I@���UU@��� I@���`f@��� qI@��� @��� iI@���kA@���`I@���5@���8YI@���?�������� NK���`�@��� I���H�@���Q���������� K���`(\ @���@d�K���Ί @��� J��� @���,K���R @���K���P @���K����H@���h$K��� >i@���.K���#@��� t*K��� @����|3K���@���7K���@���<K���@X@���X:K���@��� 1%K���@���K���b@���@ K���@@���J��� @���J���H�@��� \J���a@���J����E@���SwJ���@����IJ���h@���5J��� @���b1J���~@����*J���@@���#J���t@���5!J���|@���)J��� v@����*J���`@���`*#J���@&^@���J���Ut@��� IJ���`@���@:I���Y@��� tI��� @���'J���`WS@����I��� .w@����I���@����I���{s@���<I���`ԥ@���I��� @��� tI���9-@���I���@?H@���I����E@��� I���B@���`I���!@���I���@ @���I���@���9 J���[ @���` ,J���`; @���*J���@@����9J��� @���HJ���@@���@LuJ���`@���.J���@���J���<@���J��� @����|J���|@���`_J��� @���J����N@���\J����@���@J����U@���J���@y@����SJ����,@��� \J���:@���J��� 8@���p K���`�@��� tK�����@���K��� Ga@���K���@_,@���` =K���`%@���FK��� @��� NK���@@���@uIK���x@����CK���Z@���=K��� m@��� 6K���j@���K��� @���K���:@���K���@���K���\n @��� K���`(\ @���@���������b���`1���äb����1��������������b���`1���̨b��� 1���@b���@d1���b���1���`Ӳb����)1���b���1���=b���̌1���b����1��� sb��� 1���b���*1���Hb���@1��� ҥb���઺1���äb����1��� b���1����b���`1���A��H������i!@���`b���@ -@����ȉ@��������������&@��� m@���@?'@����#@���S(@���>@���@z(@����ȉ@���&)@���`1@���`)@���@@������*@���` @���@+*@���@@���C*@���>@���`*@����!@����*@����P@����*@����@����}R*@���@x?��� Y*@���`j?���`H*@���??���`fF*@���?���%~*@���1T?���@{s*@���@?���M*@���?���`*_*@���?����q*@���$?���*@���`?���; +@����Y?���`3+@���O?���ʎ+@���{?���+@���4?����+@���`?���%,@���"?��� Q,@����S?���@hx,@���?���@;,@���8?���`#,@���`?���,@���@q?���,@����W?����,@���@.?���4,@����|?����$,@����= ?���!,@���Be?��� +@����7?���+@���?����+@����¥?���`f+@���?��� V+@���pſ����+@��� 2п���`=,@���ͫѿ���@XR,@���ֿ���@Z,@����ܿ���,@���ۿ���`,@���v���@ -@����K~��� 1,@�������,@���g����i,@���O����-@��� >���&,@���A���@,@�������,@������`,@���#���@,@���DD���d,@���0u���@{s,@������Q,@����2���`,@���޼���A,@�������@,,@������+@�������+@��� kb���`L+@���@���+@������� Vt+@���y5����s+@���'}���@P*@���r{���� *@���?���@*@���L]���)@����Ԇ���)@���,���@ǰ)@��� gE��� \O)@���@0��� )@������ )@���|����(@���?���(@��� ���f(@���@2�����)@��������(@��� '���� (@���!���`'@�������'@����+���@ux'@���J~���\'@���@t���%'@������ K'@������@P9'@������'@���Y���`/'@��������#!'@��� ����C'@������ s'@���4���?'@���`���v'@���^M���Af'@���@U ���'@���T ���@3'@��� ���`ɮ'@���>i ���7'@��� ���'@����j ����'@��� ���`c'@���`4 ���`�'@���@E# ���&@����+ ���&@��� ����L}&@���m ����tH&@���`b���`L%@���% ���@G%@���@S ���jB%@���x ����Z$@����d���1$@��� :���@f#@������a#@���@ ���#@���@Tv����V#@�������0$@���ɯ���Q$@���|���&$@��� Y���,$@����j���$@��� ���@!$@���`I@���#@��� f���#@���K���#@���1����}r#@����j���{#@���A���e#@����j���ka#@��� |s����+#@��� y���$#@���_���"@���'}����@"@������Y"@���`���#@��� f�����v"@�������f"@������j"@���(���"@����O����"@����Y����׃"@������@ v"@������@I"@���5����S!@���%���+"@��� ���>"@���-���ԅ"@��� w���@"@������"@���@Q����U"@���k���@"@��������J#@���K���"@����W��� "@���6���"@���|���@"@���� ���Ƒ"@���`W���@~"@��� ���Ô"@���ww���x"@���`j���"@������@6p"@������`K"@���!"����P"@������s:"@���`���"@���;���"@������S!@���Q���R!@���`W���@ۿ!@���@*���i!@����s���l!@����F����!@����-����S!@��� ���!@�������!@������I!@���[��� "@���h$���@"@���n���:"@������2"@���Y���'"@��� \ֿ���@"@����g���K"@��� ?����"@��� M<?���@ۿ"@��� $?����"@���@?���J"@��� +?����}"@���N?���"@���*?����"@��� ?���� #@���?���-#@���޼?����J#@���?���%#@���'}?���#@���??���@#@����?��� #@���`K?���@; $@���??���@g#@���?���-X#@���}?���@ #@���`?���J"@���`-?����"@���@I?���@N"@���q?���֣"@���?���@#@���`p?���@#@���ͫ?����"@��� y5?���` #@���k?��� *#@���q?���)#@���@0?���R7#@����?���@#@���?���@#@���?���\#@��� ?����#@���@?���#@��� v ?���`$@���`?���n^%@���= ?��� 1&@���`?���&@���` ?���@F&@���PY@����&@��� m@���B��������@0���*@���`+���@+@���>����������0����.+@���O.��� -+@���.���`h+@���.���`+@���G.����/+@���ڀ.����L}+@��� $.���@+@���O-���`}+@���-���r{+@���z-���@N+@���`p-���@P9+@����`L-���S+@���`2-���-W+@���@-���`D+@����,����+@���,����c*@���@+���=*+@��� +���""+@���`+���X+@���`ݝ+��� *@���`+���@*@���+���Ϊ*@���Q,���r{*@���,���p}*@���@%-���*@���K-���Z*@���@t-��� ߼*@���|-����c*@���`-���*@��� 9.���1+@���d.���+@���l.���@*@���ք.��� h*@���Q.���@*@����/���*@���`"/���`*@���&/���*@���n/���Q*@���@W0���R*@���Z0���*@���@0���@*@����0���@*@���0����@*@���A0��� *@���`0���\n*@���@p0��� *@���<0���*@���� 50���ч*@���60���`*@���`f&0���@P*@����w7/��� *@��� /���`+@���.���`#*@���t.���*@���(/��� \+@���/���*@���w'0��� *@���"R0���*@���0����/*@���G0���*@����܏0��� s*@���0����.+@���C���h������`A@���\7?@���GA@���?@��� ����������>A@���?@���GA@����v?@���.A@���^\?@���m/A@���rK?@���/"A@���\7?@���`A@���R?@���`%A@���@S?@��� A@���`*Z?@���Z0A@���w?@���>A@���?@���D��������`�D@���`fD@���ZG@���`E@�������������`�D@��� E@���@ D@���@ E@���`D@���`E@����!D@���=E@���@ED@���E@���=RD@���E@����XD@���`E@��� _D@��� E@���pD@����)E@���`D@�����E@���@D@���E@���@֥D@���`E@���WD@����ME@���D@���E@����D@���{E@���QD@���E@���zD@���2E@���@D@���(E@���GD@���@#E@��� HD@����כE@����fE@��� җE@����fE@���`E@���@.E@��� (E@���(5E@��� E@���B=E@���E@���@gDE@���@.E@���@PE@��� QE@���YE@��� \E@���lE@����E@����wE@����$E@���`E@����]E@���aE@����BE@���E@��� a{E@���@WE@����BwE@���WE@����sE@���E@���.nE@���E@���BeE@���`E@���@_E@���`E@���(]E@���@E@���@RE@���`E@���`2ME@���@ E@���LE@���@E@���oGE@���`F@���OE@���`F@���`ROE@��� CF@����QE@���$F@����=[E@���@>0F@���@ZE@���\FF@����4aE@��� HXF@���`B^E@����`F@���-XE@��� fF@���NE@���`vgF@���(UE@���pmF@���$_E@���`qF@���QaE@����vxF@���`E@���෇F@���XE@���VF@���WZE@���F@���`MSE@���F@���`CE@��� F@���@pFE@���@F@���BE@��� F@���=E@���F@���LE@���@F@���3E@���@F@���8E@���F@����E@���F@���p E@����F@��� E@���aG@���@E@���G@���E@��� G@���`E@���L G@����BD@���`G@���-�E@���(G@���-D@��� u2G@���eD@����9G@���D@���@5G@����=D@���{*G@���-D@���G@���D@���`[G@���D@���@G@���@gD@���\G@����)D@��� G@���qD@���!G@���RD@���2$G@��� D@���$G@���jD@���`)G@��� D@����q,G@����D@��� +G@��� \D@��� L&G@���@pD@��� *G@���)D@���=*G@���@D@���4G@���@3D@���?G@���ײD@���@KG@��� D@���@OG@���`D@��� lPG@��� D@���XG@��� D@���ZG@���D@���UG@����דD@��� OG@���D@���=IG@���@֍D@���`EG@���2D@���BG@���`fD@���`=G@���D@���[8G@���VD@��� l0G@���`VD@���$G@��� QD@���`G@���`D@���G@���`̕D@���F@���D@���`F@���(D@��� F@���` D@����F@���@D@����F@���`D@���F@��� lD@���@WF@���ҶD@����F@���@3D@����F@��� QD@���@F@���8D@���@GzF@���`D@���@jF@��� D@����4iF@����D@���[pF@���BD@���nF@���@{D@��� [F@����=D@����4QF@���`D@���IF@����ܗD@����FF@����ܗD@���CF@���jD@���:F@����ܗD@����.F@��� D@���&F@���D@���F@���`BD@���F@���`D@����)F@���@D@���F@���D@��� (E@���D@���`fE@����ÔD@��� E@���ҎD@���E@���uD@��� E@���`D@���E@��� OD@���E@����D@���@ԝE@���@ӖD@���E@���`D@��� ҏE@���`D@���E@���ID@���`E@���D@���qE@���D@���`qlE@���D@��� dE@���PD@���|jE@���@D@���\E@���D@���DKE@���D@���@E@��� D@���.E@��� D@��� =D@���D@���@D@���@ӶD@���`D@���`D@���`AD@���`D@���@D@����D@��� D@���`YE@����D@��� E@���@D@���b1E@����D@���@GE@����$D@����]E@���D@��� ,aE@���D@���eE@���D@���lE@���PD@���`vE@��� OjD@����5E@���JVD@����<E@��� >1D@���`0E@���)D@���*E@���D@���ѨE@���D@����eE@���`�D@��� E@���E��|������@Oz@��� G@���@{.@���`muK@������������<������s,@���J@���h,@���gJ@���Qo,@���@0J@���@_,@���`J@���@+@���J@���`f+@���`J@���+@���J@���]+@���@J@��� ,@��� J@���@,@���J@��� +@���sK@���@ +@���K@��� +@���`�K@���+@���`K@���j+@��� K@���+@���K@���+@��� K@���s,@���J@���@*@��� K@���@ͫ*@���`#K@���?h*@����"K@���<*@���*K@��� B*@����w/K@���҇*@���`0K@���7O*@���S6K@���``*@���<K@���``K*@���9EK@���{*@���FK@���@'*@���AK@���r*@��� IK@���*@���|BK@���$*@����eGK@���I*@����^=K@���b +@���`GK@���*@���`YIK@����*@���NK@���*@���HK@��� ~*@����eGK@���`*@���RK@��� t*@����vPK@��� v*@��� RK@���1*@���IWK@��� *@���QK@���*@��� LK@���*@���PIK@���@D+@��� JK@���tZ+@���ZHK@���@Y+@��� `CK@���++@���`=K@���'+@���:K@����)<+@��� 3K@���+@����+K@���@d+@��� y%K@���a+@����)K@���n^+@����,K@���A*@��� (K@���@*@���t!K@���@ *@���t!K@���*@��� xK@���@*@��� K@���@"@���`iK@���#@���lK@���@"@���IgK@���@e'#@���SnK@���@(#@���iK@���@U#@���BeK@���$@���YK@����#@���rUK@���W$@���UK@��� 9$@���FK@���N#@���`=K@���@@$@���>K@���g$@���`:K@��� he$@���@2K@���M$@���.K@���y$@��� g5K@���`$@���7K@���zT%@���)K@��� \%@����e'K@���%@���`+K@���>&@��� =2K@���"B&@���0K@����#!&@���,K@���@/&@���`GK@���n%@����< K@���%@���: K@���E%@���@hK@���z%@���J@���%@���J@���%%@���J@����w&@����K@���jb&@���`YK@���@|&@���@J@��� ˍ&@���@J@���&@���J@����&@���@WJ@����Z&@���J@���@;,'@���@pK@���?'@���`K@���= (@����K@���@33(@���@K@���(@���`&K@���t(@��� =:K@��� )@���`H8K@���)@���@5K@���9)@��� U5K@���`/6)@��� 3K@��� (@���32K@����L(@���@!K@��� (@���b!K@���S(@���`$K@���`(@����&K@���l)@���@h4K@���~)@���`0K@��� ١)@���U,K@���)@���`7K@���7/*@���I/K@���@d(*@���s*K@���@XR*@���@!K@���@*@���K@���@*@���` K@����`l+@���K@���+@���@h K@���`I+@��� K@���|+@���@pJ@���p+@��� yJ@����+@���J@���H,@���J@��� y,@��� ,J@���,@��� J@���y,@���kJ@���`>,@���`J@���,@���J@��� H,@��� &J@���`,@���@J@���`5,@����J@���,@���!J@���7,@���@…J@��� VT,@���|J@���CD,@���@jJ@����׃,@���`0eJ@��� +-@���uPJ@���?H-@���`HJ@��� -@���2J@����F"-@���@)J@���9m-@���J@���b-@��� g J@���`-@���@ J@���~-@��� 7J@���n-@���uI@���r;-@���KI@���14-@����$I@����׃-@���gI@��� \o-@���I@���@X-@���@ԽI@���@{.@��� OI@���W-@���I@����_-@��� nI@��� s-@����hI@���`#@-@��� UmI@���9M-@���JvI@���`#-@���`BuI@���2-@���}I@���,@���I@���,@���@I@����,@���[wI@���@,@���rI@��� ,@���IgI@���+@���`0eI@���@P+@���`\I@���""+@���`[I@���*@���9MI@���`*@���`RI@���C*@���aJI@���z*@���3JI@��� a*@����v@I@���`5*@���Z@I@���@')@��� &6I@���)@���`/6I@���)@���"9I@��� (@����,I@���(@��� #I@����Ѩ(@����I@���@(@��� I@���(@��� ~!I@���@/(@���`)I@���E(@����#I@��� 1(@���I@���h(@���JI@��� 1u(@���U I@���(@���H@���`L(@��� H@���(@���H@���)@���`H@���(@���H@���\(@���`GH@����F(@��� H@��� )@��� H@��� R)@����H@��� )@���@H@����)@���H@��� *@���`/H@���@^M*@���H@���?h*@���IH@��� b*@���nH@���*@���`H@����+@��� xH@���?+@���@'}H@���;++@���|H@���R+@���rH@��� N{+@���pH@��� +@����dH@��� +@���\H@���@+@���tYH@��� t+@����FBH@����+@���`JH@���*@���HH@���&*@���5H@���*@���� -H@����)@���`H@���@j)@���mH@���@*@��� UG@����#)@���`qG@���)@���G@���`*@��� aG@���W3*@���`G@���%*@���G@���`)*@���`G@���`*@���@G@���)@���G@���W)@��� rG@���b)@��� 7G@���@;)@���JG@���`)@���@G@���"(@���`kG@��� |(@���G@���`(@���G@���Z(@���G@����i(@���`G@���hd(@���G@��� '@���G@���CD'@���1G@����&'@���G@���&@����#G@���@&@���`G@���zt&@���DG@���+y&@���mG@��� g&@���G@���6&@���G@����}%@���DG@��� %@��� G@��� N%@���G@���%@���G@����}%@��� G@���`�_%@���G@���%@��� G@���7$@���G@���-$@���G@���$@���G@���@X$@���G@���`$@����G@���V$@��� G@���`m$@���ZG@���@;l$@���tG@���O$@���@@G@��� ,$@��� G@��� y5$@���@G@���;+$@��� G@���$@���G@���9#@���`G@����U#@����G@���#@��� G@����#@���G@���_t#@��� G@���� 6#@��� G@����"#@��� G@����"@���G@����!@���G@���!@����G@���Q!@���mG@����3s!@���@PG@���1t!@���@G@���!@��� 7G@���6 @���`G@���@ @���G@���J>!@���`G@���<!@����G@���@D!@���lG@���n @���G@����] @��� ~G@���@>i @���@G@���@���`G@���`G@��� NG@���@@���G@����,y@��� G@��� @���G@��� Z@���G@��� @���`G@���v@���Z�H@���bI@���@H@���k@���@H@���`�@���`+H@���/@���`>H@����:@���AH@���05@���`KH@���@���RXH@���@DD @���`YqH@����mt @���Z{H@���jb @���|H@����#@���`AH@���@��� UH@���(@��� `H@��� @���H@���H@���H@���r@��� H@���sZ@���H@���@'@��� %H@���`N@���,H@���c@���H@���[@���`֓H@����&@��� ̔H@��� [@���H@���`@��� xH@���@���=H@����r@���H@���`p}@���H@��� @���jH@���`@��� H@���N@���{H@���@@���@H@���@@���`I@����~@���I@���@@���!*I@��� .w@����9I@���@���BI@���@��� OI@���`@����OI@���n@���`\I@����L@����[I@���@���`I@���9@���fI@���`V@��� oI@��� @���xI@���`@���}I@���`@���9}I@���@Oz@���jI@���~@���nI@���@@����I@����<@���`ՔI@���YQ@���@I@���K@���:I@���@���JI@����@���I@���I_@����I@���v@��� rI@���&@���`I@���(@���`I@���@@��� I@��� $@���BI@���@���@FI@���`˭@���`I@���`@���@?I@���@���I@���`g@��� =I@���2@���@PI@���`>@��� I@���R@���UI@���`3@���@�J@���@@����J@���<@��� J@���`5q@���dJ@���Մ@���J@���@5@���`/J@��� C@���b1J@����3@���`;J@����@���`7J@����}@���`/>J@���@���FJ@��� @���`HJ@����"@��� PJ@����m @��� SJ@��� $@���@PJ@���8@��� rSJ@����eG@���QhJ@���@@���{J@���x@���J@���-@���@J@����@��� J@���3@���{J@���6@���J@����#@��� fJ@���`@���@J@���[@���J@���jb@���`J@���`@���`AJ@���6@���@J@���@d@���iJ@��� @���J@���@ @���@J@���Q @���`J@���@S @���`J@���@n @���J@���) @���`J@���@4r @���`NJ@���@~ @���J@���� @���κJ@���� @���`J@���@v @���J@���q| @���`J@���� @���J@���ʮ @���J@���!@���`J@��� @��� UJ@���@v @��� J@����l!@���UJ@���"!@��� DJ@���� !@���`0J@���� @���J@���@U5!@��� J@���q\!@���J@���t!@���`J@���!@���@J@���A"@���`J@���&"@���J@���Q"@��� J@���a*#@���`J@���#@���`qJ@���A#@���@oJ@���@,Y#@���J@���#@���J@���7#@���J@���@$"@���J@����"@���jJ@���!@���`J@���@!@���Z�K@���.!@��� gK@���@"@��� K@��� "@��� K@����!@���`K@���@!@���K@���!@���K@��� !@���@"K@��� !@��� (K@���x!@���`_$K@���iC!@��� #K@����2!@���@)K@���7!@���:,K@���@Ec!@���@-K@���N!@���0K@���@!@���5K@���"@��� y=K@���-!@���AK@���@!@����wOK@���z!@���@WK@����+Z!@��� cK@���@H!@���iK@����P!@���`muK@���Zp!@���rK@���� !@���:tK@���@"@���`iK@���F��������J ���`>@���@B?���TU&@�������������@����&@�������`#�&@���H���`%@���@G����%@������%@���<+���@%@���I߿��� %%@���`Wۿ��� 1&@���qؿ���7&@���`ֿ���E#&@���&ѿ���`B&@���Aҿ���TU&@��� Rÿ���`NG&@���E#��� 9&@���&���` 5&@���?���`f&&@����ף?���%@���F����y%@���@K~���@D%@���`ww?���,%@���D#?���$@���1T?���`$@���`?���=$@���`_,?���`ݝ$@��� ?���@$@���a?���;$@���@?���I$@���8?���$@����ף?���Tu#@���K]?���jb#@����K~?����L#@���`&?���`(\#@���2?���N#@���`A?���.#@���X?���+9#@����?���\.#@���O?��� #@���@?���$#@��� ?���#@���?����#@���?��� "@���]M?���@"@���`VP?���S"@��� j?���"@���S?��� "@���`&?���@"@���@?���z"@���@?����"@���?����= "@���Sv?����!@���G?����U!@���?���2!@���?���A!@���@p=?����/!@��� H?���@ @���Œ?��� @��� C?���� @���`-?���@e @���?����@����?���@���I?��� {@����?���`W@���xV?���@����??���@��� ~?���`@���`N?���@6@���0u?��� @���q?���!@���`` ?���@���?���M@���F?��� @@���@?���@lY@���y?���`@���{?���YQ@���#?���O@���?���@h@��� 7?���֣@���@B?����{e@���?���@F@���ͫ?����E@���p?���@x@���`?���`@���`^M?���@���?����n?@���`?���` U@���6?��� 2@���@?���k@����?����[@����}?��� @���`.?��� H@���@V4?���`j"@��� $?��� @���?��� @����}?���@@���@n?���@@��� lٿ���B@���Œ߿���@x@������@f@���@S����@���W���@���4���@�������  @���@.���s@��� ���U@���`o���@�������`>@����;L���z@������ v@���*���W@�������js@������ 5q@��� *���~P@���m���e@������{s@���/���ef@������`b@������\@���@6���@ t@���H@���-w@����8����F@���`���*@���q���z@���` ���\n@����[ ���@���J ���`r@����} ���@��� ���"A@���Q���m?@���~1���J@��� S��� `K@���?H���j@���2���b@��� ���k@����,y����f @���` ��� @������F @������Be @���]���@$!@���`%?���"@����8/����M"@���L���ω"@���`���@"@���-X���"@���~���"@����[���x#@������#@���@_����$@���@ ��� $@��� ���@$@���&���T$@������$@���u���`B%@���@ ���ປ%@���@����&@���G��������࣠3@��� wA@��� ><@���ID@���W���������C���K���V���e���q���������������������������r4@���C@���4@���@?C@���4@����C@���h4@���` C@��� w4@���C@���@Ws4@���`#C@���[o4@���C@���`\4@���C@���@Z4@��� C@���`k4@��� ,C@����$4@���`(C@���4@���8.C@���@44@���;C@���Ǡ4@����*C@���@4@���`_$C@���ע4@���`6 C@���4@���!C@����4@���`C@���r4@���C@���8@��� wA@���D8@���`A@���;8@���@A@���7_8@���ZA@���` 8@���QA@��� 7@���A@��� ,7@���A@���g7@���ޤA@���@7@���`A@���@-7@���`A@���`7@����5A@���7@���rA@���`ݽ7@���A@����7@���A@����7@���`/A@����8@���A@���8@���A@���C8@���`A@���H 8@���` A@����38@���`/A@���``+8@���ZA@���@8@���`YA@���`8@���SA@���88@����A@���iC8@���A@���D8@����A@����i8@���`˭A@���`8@���`_A@��� 9@���`A@���@^ 9@���լA@���v9@���@pA@���@ 9@���ΪA@���@Ե9@���SA@���9@���IA@���9@���A@���9@���`A@���:@����MA@���@]:@���`YA@���`3:@���@A@���@4R:@��� A@����F:@���DA@���aJ:@���ǐA@����}2:@���؁A@���:@���`A@���9@���`ăA@���d9@���`~A@���H 9@��� >yA@���8@��� wA@����S8@���@?B@���@.8@���BB@����G8@���`B@���8@���B@����*8@����B@���l8@���`B@����8@���iB@����S8@���@?B@���4@����<B@���m4@���B@���@4@��� B@����ִ4@��� B@���@4@���B@���4@����#B@���`4@���B@���4@���B@���4@����B@���4@���B@���4@����<B@���:@��� C@���@:9@���@C@���9@���|"C@���`9@���@,C@���!9@���@F:C@���h9@��� DDC@��� ,9@���IC@��� &:@���KC@���@:@���@GC@���):@���DC@����$:@���`q,C@���):@���&C@���``:@���)#C@��� &:@���` C@���:@��� C@���`:@��� B@����:@���@B@���`:@��� fB@���@X:@���B@���:@���@B@����:@���`B@���:@���B@���:@����B@���;@���@B@���d;@���lB@���;@��� B@���`:@��� B@���h4@��� %C@����Z3@����#C@���`3@���� C@���࣠3@���C@���3@����C@���@3@���C@���j3@����MC@���`3@���C@���`3@���`C@���3@���*C@���b3@���C@���@:3@���C@���4@���mC@���@X4@���C@���%4@���ZC@���h4@��� %C@���s9@���uB@���@_9@���sB@����SW9@���@B@���9@���PB@����}9@���8B@��� 9@���`HB@���@9@���zB@���s9@���uB@����*k:@��� zC@���@:@��� >C@���>I:@��� yC@���<J:@���C@���d7:@���ƙC@���:@���@C@���@:@���{C@���@9@���C@���9@���zC@���c9@��� C@���@:@����C@���g5:@���`C@���[:@���C@���k:@���C@���`:@���`C@���@ڐ:@���SC@���J:@���@WC@���@:@���tC@���ł:@��� &C@���@ӆ:@���C@��� ~:@���`AC@���r:@���C@���D:@���`C@���``:@���J~C@����*k:@��� zC@���;@���`A@����;@���A@����;@���B@��� U;@���*B@���` 5<@���8B@��� ><@���1B@���H<@���SB@���@<@���7B@���;@���@B@���;@���A@���;@���`A@���@X8@���B@���e8@����C@���Dc8@���{B@���4Q8@���@FC@��� J8@���� C@���.8@���C@���58@���@C@��� *8@���@C@��� 8@���`C@���`(8@���`"C@���8@��� 'C@���@ 8@���\.C@������8@���i3C@���@7@���@W3C@���`D7@����:C@���@7@���BC@���I7@���@XJC@��� 7@��� JC@���DS7@���aC@���s6@��� >qC@���J6@���9mC@���B6@���`YiC@����#6@���@oC@���7@���~C@���L7@���C@���n7@��� >yC@��� ~q7@����vpC@���!7@���zdC@���`7@��� `C@���7@���@aC@���@7@���SVC@���@8@���'UC@���@-(8@���SC@����$ 8@���`HPC@����8@���`qLC@���;8@���`CC@���/8@���`8C@��� A8@���C@���t8@���@C@���8@���C@���l8@���\B@���@X8@���B@���``[9@���`C@��� yE9@����C@���D9@���zC@��� 39@���*C@����39@���@C@���99@���SC@���#9@��� C@���@9@���C@��� 9@���� C@���`9@���C@���`:9@���c�D@���V9@���`C@���p9@���`D@���q9@���`�D@���V9@��� gC@���``[9@���`C@����ä8@���ID@����|8@���QD@����8@���i[D@���8@���eD@���8@���@_D@��� 8@��� &ND@����ä8@���ID@���9:@���ID@��� \:@���`D@����~:@���� D@���:@���8D@���@ :@���uD@��� &:@��� D@���s:@���`D@���!R:@���D@���S:@��� xD@��� 4:@���nnD@���23:@���`jD@���@X":@���dD@����:@���_D@����:@���^D@���:@����iD@����Ѩ9@���mD@��� ~A9@���@wD@����"9@���yD@���@.'9@���lD@��� 9@���`D@����)8@���@wD@���8@��� guD@����8@���`mD@��� 8@���mD@���8@���yD@���e8@���wD@���N8@����MlD@����L8@���`0]D@���7@���9]D@����7@���@dD@��� N7@���c`D@���l7@��� XD@���27@���lHD@��� O7@���DD@���`7@���AD@���`7@���@-8D@���@ 7@����v0D@����F8@���1D@��� 7@����9D@����I8@���@? D@���d8@���D@���e8@���@XD@���@]N8@���7D@���`**8@����#D@��� 7@���`/D@����7@���)+D@���7@���`&D@����7@���D@���`7@���D@���8@���D@��� &7@��� =C@���@.7@����C@���7@���D@���77@����D@���`h7@��� $D@��� Z7@����eD@���@zT7@���D@���`z7@���`D@���m7@����eC@���7@���C@���[7@���`C@���`5a7@���`C@���@O7@����D@���6@���@1D@���6@���=D@���6@����CD@����6@���kID@���6@���cPD@���`6@���QD@���6@���`GID@���6@��� UED@����S6@���=D@���Z6@��� 1D@���@6@���/D@����6@���D@���6@���`D@���6@���C@���6@���`AC@��� 6@��� C@��� 57@���mC@���W7@���`C@��� S7@���C@���@-7@���C@��� 7@��� DC@���@(7@���:C@��� ,7@��� UC@����57@���`NC@����87@���C@���m7@���`C@���@46@��� &C@���6@���C@����6@���UC@����#6@��� C@���6@��� DC@���6@��� &C@���`6@��� yC@���@ 6@���`C@���k7@���̄C@���@ 6@����vxC@��� 6@��� pC@���6@���`pC@���`6@���iC@���`6@����lC@���6@���dC@���@-7@���Z`C@���7@����PC@���l07@���SC@����O7@���`RC@���V7@��� NC@����vH7@���GC@���@`7@���CC@��� ,i7@���Z@C@����T7@��� &>C@���7@���,C@���97@���@%C@���8@����5C@���@8@���lC@��� 8@���C@���7@��� C@���`_ 8@���rB@���Z8@���B@����|8@���B@���s 8@���B@���i7@����B@����7@���B@��� %7@���B@���@7@��� B@����#7@���B@��� ,7@���rC@���`07@���9C@��� P7@���`B@���8.7@���`B@��� 7@���B@��� 6@��� ,B@���`57@��� B@��� .7@��� %B@��� '7@����5B@���@7@���� B@���q,7@��� B@���@P)7@���[B@����R7@���(B@����p]7@���B@���@O7@���@B@���ic7@��� ~B@���i7@���B@����_7@��� B@���@ 7@���`B@���l7@���`B@����M<7@���`B@���eF7@���B@���07@���iB@���@/7@��� gB@���@X7@���௭B@����p7@���௵B@���@ 7@���`YB@��� 6@���`B@���D6@����B@���6@���B@���@]6@���|B@���6@���@B@���6@���`B@���P6@���٘B@���g6@���൐B@���7@���B@���7@���@WkB@���97@���)cB@���@-7@���UB@��� 27@���IB@���@'7@���DB@���"7@���?B@���37@���@9B@���27@���I7B@��� 7@���Q8B@���@7@���AB@����$6@���@FJB@��� 6@���bB@���@-6@��� xfB@���@X6@���fB@����6@���cB@���z6@���KB@���'}6@���k1B@���@j6@���<B@���`6@���`0=B@��� ^6@���EB@����}b6@��� =RB@��� ;6@���rB@���@#6@����tB@���`(6@���B@����6@���B@���5@���B@���@^5@���)sB@���o5@���iB@���l5@���!bB@��� 5@���1\B@����}5@��� gB@��� V5@���ZhB@���@45@��� tB@���A5@���`xB@���`Ք5@���@ۇB@���l5@���B@���¥5@��� B@��� ٱ5@��� B@���`5@���`AB@���5@���� B@����c5@���B@���T5@���'B@����*K5@��� B@���5@���`NB@����5@���B@���05@��� B@���nO5@���C@���`5@���@C@���`05@���`C@���`_5@��� C@���@P5@���`N+C@���6@��� ~!C@���DC6@���C@����6@���`HC@���6@����vB@����}6@���`B@���6@����B@���6@���@C@���6@���@F C@���7@���@C@���67@���z C@���97@��� C@���6@���`qC@���6@���`6C@���@6@���C@��� 6@���IC@��� 6@���D#C@���6@��� +C@����$6@��� U-C@����6@���1C@����6@����$C@���6@���`G)C@���v6@���\6C@���e6@���`4C@���a6@��� *C@���@;6@���`.C@��� '6@���:,C@����M5@��� 3C@��� 5@����/C@���5@���@)C@����5@���,C@��� N{5@��� x&C@���>y5@���`.C@���_5@���@2C@���` U5@��� ?C@���;K5@���S.C@���-5@���`A&C@���5@���.C@���#5@��� O2C@���@Q5@���6C@���`5@����CC@���@5@���BC@����L4@���@UC@���4@���@UC@����Z4@���dC@���b4@���`/fC@����w4@���aC@���@4@���jC@���4@���nC@���4@���`qtC@���`4@���`,zC@���``4@���uC@���5@���wC@���@ 5@��� rC@���A5@���nC@���5@���(tC@���'5@���@FrC@���` $5@���zC@��� *5@���K}C@���>5@���`ʆC@���� 5@���C@���@4@����C@���j4@���C@����4@���ߋC@����4@���3C@���k4@����{C@���`_4@���yC@���ǰ4@���C@����y4@����C@����*{4@���{C@���W4@���C@���@64@���C@���` E4@���൸C@��� 74@��� C@���@ &4@����C@���04@��� C@���`64@��� C@��� &4@���YC@����B4@��� yC@����pM4@����C@���J4@���@@C@��� a4@���@C@���i4@���`C@���\4@���(C@���P4@���C@���d4@��� C@���@i4@��� D@����|4@���j D@���J4@��� D@��� O4@��� D@���@4@���2D@���4@��� <D@���@4@���r;D@��� 5@����.OD@����L 5@���VD@���`5@���@`YD@����5@���YD@���A4@���`bD@���4@���`EeD@���@4@���mD@����5@���@lnD@��� W5@���`oD@���x5@���tD@���@(5@��� rsD@���Ʊ5@���`xD@���5@���@vD@��� 5@���1D@���6@���CD@���!6@���`D@���7?6@���@ԕD@���x6@���@D@���6@���[D@���d6@���D@����v6@����FD@���`6@���ϗD@���46@���rD@����6@��� 6D@���@'6@��� D@���`6@���@D@���-7@���@PD@���G7@���D@���`7@���D@��� 7@���`D@����7@���D@���28@���@ͻD@���8@���@D@���?(8@���BD@���I/8@���!D@���>8@���`D@���N8@���8D@���@']8@���`D@���8@��� >D@����8@���D@���@8@���D@���`8@��� gD@��� 8@���D@���59@���D@���@K=9@��� D@���@Wc9@���D@���@.9@���`D@���J9@���@D@����":@���KD@���`2:@���>D@���@:@���}D@����G:@���@D@���:@��� D@���9:@���ID@���H��V������BR���BM@���O(���T@ ���������������,���K���[���f���p���w���~��������������������������� ����)��3��:��H��V��j�����������������@3���T@���E4���T@����3���@ T@���u3���`T@��� +z3���@T@���@3���� T@���@3���T@���D5���R@���@5���@R@���5��� ~R@���5���R@���5���@R@���Wc5���1R@���g4���ZR@��� 4���R@��� 9~4���@_R@��� 8o4����]R@���n4����ّR@���` 4���@R@���P)4����R@���D5���R@���U2���@ R@���F2����R@����2���!S@���h2���`S@���3����S@���h$3����!S@���3���`%S@���2���0%S@���v2���'S@����3���@&S@���2��� (S@���`3���A.S@��� 3���@h0S@���@;2���/S@���`2����)S@����T2���I'S@��� 2��� S@���G2���S@���q2��� S@�����2����$S@���`2���S@��� 2���R@���U2���@ R@����*1��� R@���1���R@����1���@NR@���%1���@R@���@2���߿R@���2���R@���2���`R@���@2���R@��� 2���`R@���@32���R@����2���R@���\2���IR@���x&2���@R@���2���|R@��� 1���@R@���I1����DR@��� 1����R@���1���R@���$02����nR@���02���`R@���2��� R@��� 82���`iR@���`1���jR@���@A1���@ R@���U1���@R@���@;1���@R@���`j1���SR@���S1���R@���xf1���R@���@Y1���@R@����*1��� R@���m04���@R@���@js4���ʮR@��� 84���R@���K4����#R@��� 4����eR@���4���@wR@���v4���sR@���;4���R@��� 93���`R@���@3���R@���"4����R@����4����R@���ʾ3���R@��� 93���8R@���4���`ԭR@���m04���@R@���2���S@����2���@_S@���'2���S@���@2��� &S@����1���� S@����Y1����ES@����1���S@��� 1���S@���r1���9S@���1���S@���2���S@���@)H���XN@����H����\N@���@H���eN@���"G���2kN@���G���@ofN@���`kG��� `N@��� G���]N@���`G���aN@���@G���']N@���@)H���XN@���`G���`N@���2lG���`YaN@����TG��� =jN@���G����5yN@���� G��� vN@���tG���PqN@���`G���`N@���4F����N@���`ƲF���@N@���LF���`0N@���|F���@-0N@��� QF��� +N@���dF���P!N@���4F����N@����E���M@����E���`M@���E���M@���E���M@����E���kM@���`E��� M@����E���7M@���`*E���N@���4E���@-N@���`E���@N@���F���' N@���F���`N@��� a F���JN@���EE���'N@���=E���N@���@cE��� xM@���oE���@N@���\E���@�N@����E���M@����E���BM@���\E���tM@���|E���M@���@F��� xM@���F���!M@��� F���[M@���E���M@����E���M@���@E���M@���E���zM@��� E���`M@���<E����$M@��� yE���M@���@E���`6M@���E���`M@����E���mM@����E���BM@���D����P@����H9D���sP@���`�@D���P@���� =D���"P@���`CED���1$P@���d@D���S&P@����JD���@H,P@���"ZD���@g1P@���`dD���@3P@���nD��� ~9P@���@mD���s:P@��� QaD����;P@��� @D���95P@��� CD���2P@���$8D��� /P@��� 8D���@o.P@���ED���@-P@��� <D���+P@���v0D���`'P@���`<D���Y%P@���9D���@-$P@����D���!"P@��� !D���RP@���D����P@���B���dP@���B����fP@���]B���'mP@���`B���rP@���@{B���tP@���<B���wP@���@B���`yP@���`B����xP@���ઢB���pP@���`}B���@pP@���\B��� sP@����ļB���@pP@���ҿB���@gmP@���B����#mP@��� B���lP@���@B���ZhP@���B����hP@���B����fP@���@B���gP@��� B���`iP@���,B���hP@��� B���fP@���`TB���dP@���B���dP@����/E���`VO@��� +E����YO@���`3E���@XO@���`Z9E���@-`O@��� -E����egO@���D���`O@���@D���^O@���`D���[O@���E���`O@���E����]O@���DE���']O@���`1E���3ZO@����/E���`VO@���@RQ���{SS@���\R����$TS@����R���!VS@����R���(XS@��� #R���YS@����$R���|ZS@���R���]S@��� Q����XS@���Q����VS@���@RQ���{SS@���`Z3���@NsS@��� 4���wS@����Sw4���l|S@���xv4���`}S@���4���@}S@���`4��� >}S@���3���xS@���P3���xS@���:3���@uS@��� 9>3���sS@���`Z3���@NsS@��� 2���jS@���`<2���)kS@���K2���ZpS@��� 1���tS@���1���xS@��� 91���yS@���̬1���yS@��� 1���uS@���1���YmS@���1����ekS@��� 2���jS@��� 3���S@���`3���@S@��� 3���`S@��� b3����S@���13���@S@���J3���@gS@���@)3���'S@���PY3���:S@���`.3���rS@���@f3����S@��� (3����US@��� VD3���@ӮS@��� 3���S@���wJ���kQ@���J��� Q@���eJ���@6Q@���@jJ���Q@���D|J��� Q@��� 5J���Q@���@*J���Q@��� 9.J����UQ@���@KJ��� Q@���4RJ���@Q@���wJ���kQ@���ǑF���T@���@cF���T@���`lqG���T@���G���RT@���� G���`T@��� G���T@���`G���9T@���fVG����ET@���2G���8T@���nF���T@���-8F���@gT@���5F����nT@��� QF���T@���nF���3T@��� F���`ݍT@���]^F���!T@���EcF����T@���ǑF���T@��� !J���Q@���UJ����^Q@���J���Q@���J����Q@���@J���Q@���J���@Q@���લJ���@Q@���-J���[Q@����J���)Q@��� !J���Q@���Q���WS@����Q���H\S@���@JQ���0]S@���Q���]S@���Q��� fZS@���@rQ����5YS@���Q���WS@���`�D���ךO@���`TD���`O@���@D���ԝO@����D���O@���DD��� fO@����qD���@O@��� D���O@���D���`O@���`D���O@����D���@O@���@ִD����ɯO@���`D���O@���DD����MO@���`�D���ךO@���`lI���`~T@����J���T@��� aJ���`iT@���2J���T@���J���@ T@���`J���`QT@���J���T@��� LJ���/T@���GJ���BT@��� LJ���T@���AJ���bT@���^I���2T@���`TI����~T@���`lI���`~T@���8��� CR@���,9���HR@��� 19���@KR@���"9���LR@���@^M9���@TR@����K9���XR@����S79���3ZR@���k8���ZR@���7���`iSR@���D7����PR@���;7���`NR@���`7���aNR@���8���TR@���'8���NSR@���u8���RR@���@7����KR@���`!7���KR@���`6���@IR@����Y7����FR@���8��� CR@����<���RQ@���M<���Q@���"<���Q@���`;���Q@���<����2Q@���;����EQ@���@y;����nQ@���H ;����Q@���`T:���rQ@����9���Q@��� 89���@ Q@��� 99����vQ@���य9��� fQ@���h9����Q@��� f9���Q@���`9����wQ@���j9���AQ@��� U9���:Q@���|9����Q@���`Ce9���bQ@����R9���ৰQ@��� H9���Q@���L9����Q@���:���YQ@���@33:���kQ@��� (;���{Q@����<���RQ@���J���PQ@����J��� PQ@����J���rSQ@��� K���XQ@���5!K��� [Q@���K���@\Q@���@J����ZQ@���uJ����$\Q@���J���@X^Q@���eJ����cQ@����J���1dQ@���vJ����e_Q@��� aJ���\Q@���J���]Q@��� J���`Q@���`J��� _Q@���LJ����aQ@���\J��� cQ@���dJ���fQ@����J���3fQ@��� JJ����cQ@���:K���cQ@���`gK���fQ@���@{K���nQ@���VK���pQ@���]6K���jQ@���M4K���kQ@���5QK���@qQ@���lK����rQ@��� vK���tQ@��� &wK���wQ@���@eK���@xQ@���oK���zQ@���@{lK���z|Q@���tZK���}Q@���` K���SzQ@���`[ K���{Q@���:]K���BQ@���`hK���߃Q@���kK���@Q@���`laK����eQ@���&K���@?Q@���`J����Q@����ĄJ���rQ@��� ^J���{Q@����`,J���8vQ@���^J���sQ@���`I���qQ@����I���)oQ@��� sJ���kQ@���I���hQ@���`I���hQ@��� J����$`Q@���d`J����VQ@���J���PQ@���5���@N+R@���6���+R@��� 6���`y-R@����֤6���-R@���6���.R@���6����2R@���6���5R@���|7���`7R@���`e8����U9R@���•8���`<R@���8��� f>R@����E7���@DR@���96��� &>R@���`C6��� ;R@���`e5���@X:R@���K6����,5R@���`06���3R@���@5���� .R@���5���@N+R@���@J���@xQ@���бJ���Q@���J���Q@���hJ���!Q@��� J���Q@���bJ����]Q@���,aJ���@Q@���@J���@xQ@��� I���Z`Q@���@I����aQ@���`تI���@kQ@���`ZI���@lQ@���I���@oQ@���ЁI���wQ@���@I���wQ@��� QI����UuQ@��� yI����vQ@���I���zQ@���`II��� zQ@��� UI���wQ@���VI���ZtQ@���kI���pQ@���qI���@qQ@���{I����]nQ@���5yI���dQ@��� I���Z`Q@���F6���IR@���$6���@R@���6���A R@����Y6���@ R@����76���@ R@����ݮ6��� R@���K6����R@���@7���`iR@���`k7���`R@��� 88����$R@���@8����]R@���G8���@R@��� 8��� R@���&8���`"R@����98���"R@����Sg8���@)R@���f8���@X.R@���@|8��� 4R@���M8����w7R@���@7���`7R@���G7��� >5R@���7���l4R@���6��� &.R@���`*6����M R@���z46���R@���@6���R@���@5���R@���`5���R@���6���R@���x6���`R@���6���@?R@���&6���@R@���җ6����R@���@O6���@NR@���`P6���1R@���@6���@GR@��� 16���@ R@���H 6��� R@���&6���R@���F6���IR@�����@���T@���`ƪ@���T@���@ս@���T@�����@����|T@���p@���T@���?@��� T@����W@���PT@�����@����~T@���A���@T@���@A���@T@���<A���@ۯT@���A����T@��� A���T@���A����T@���\A���T@���A���@ӶT@��� [A���`T@���@���T@����@����T@���\@���޴T@����@���[T@��� @���|T@���`l@���@ôT@���@@���T@���@���޸T@���L@���oT@����@����T@���$@���3T@���@���_T@���?���@WT@���??���@T@��� ?���T@���?���T@���@?��� T@���no?���T@����}>���(T@��� V=���@T@��� V<���T@���O:���@T@���H09���sT@���@8���T@���w8���T@���8���'T@���K8���`T@���@8���'T@���z8���IT@���F"9���T@���!9���T@��� +9���T@��� 97���@XT@���`e7���T@���8���`T@���?7���:T@��� 7����]T@���8����vT@���@7���ϱT@���$7���BT@���`B7���T@���`7���T@��� 6���BT@���`f6����eT@���`_6���T@���P5����T@���f5����T@���N6����T@����S76���T@����96���@ T@��� a{6����,T@���@47���@T@���`7���AT@����8���@ T@���9���T@��� <���T@����H=���@T@���Ǣ>���@.T@���>���T@���@t>���@T@��� >���@T@���`=���|T@��� \@���@zT@���@����tT@���`T@���@htT@���4@���sT@���`@���qT@���`�@����pT@���`�@���mT@���@����wkT@���2@���8jT@���@���)jT@���`ww@���ajT@���-@���oT@���࣠?����5uT@����=���?|T@��� 1=���){T@����Y=���wT@��� 9=���wT@��� 9n=���zT@���|=����M|T@���@4b=���P}T@���wW<���T@���'=9���T@����39����~T@����*K9���{T@����=9���yT@��� ?9���`tT@���r[9����qT@���w9���kT@���w';����bT@���H;���{_T@���;��� f^T@���z;���@]T@���@@;���@]T@����5;���[T@��� 8?;���PYT@����7:���3bT@����)8���@hlT@���`<K8��� >mT@���=8����5qT@���"8���qtT@���F8����}zT@���`8���|T@���@8���cT@���'7���T@���@6���@ÄT@���$@6����T@���h6���{T@���5���@hpT@���26���^T@���•6����VTT@���v6���@FRT@��� 6���PT@���7���0MT@���h6���KT@���7����$8T@���7����5T@���H7���@4T@���`7����3T@���`7���a.T@����n8����e+T@����),8���:,T@���@8���+T@���8���@#T@���`8����"T@���a8��� #T@���@7���-T@���-7���0T@���D7���[3T@���@ڀ7����4T@���7���6T@��� 87���@8T@���`C7����:T@���`6���?T@���`6���@BT@���xv5���@UT@���q5����YT@���੻4���eT@��� 3���@.kT@����4���gT@���@04���hhT@���A4���7gT@����74���cT@���`H4���/^T@���@4���@ZT@��� v3���dT@���P2���bT@���H2���S^T@��� a2���@^T@����|2���aT@���@42���aT@���Ue2���\T@���`1���s^T@���@2���(`T@��� 2����bT@��� (2���1dT@���,2���KeT@���1���7cT@���@1���fT@����1���@ hT@����1���`kT@���`1����lT@���1���mT@���G1���2oT@����E1���@lT@���ઊ1���oT@���w1���`sT@����01���uT@���{1���RwT@���t0��� vT@���0���wT@��� 0���yT@���W0���{T@���b-���`zT@���)���@oT@���O(���fT@��� (���@paT@���D*���`yYT@���Oz*����=VT@���p*���TT@����/+���2ST@���g+���@vPT@���`5Q+����OT@���@XR,���@?HT@���GA-���HT@���@$.���@OFT@���E.���`DT@���-���` @T@���@M-��� <T@���d-���@:T@���~/���4T@����//����2T@��� 0���s.T@���1���/T@���t1���4T@����*2���|2T@���W2���/T@���@2����-T@���2���Z(T@���@2����'T@���$3���*T@��� (4���+T@���h4���@p%T@��� \?5���$T@���85���#T@���@4���[#T@����|4���!T@���4���T@���@3C4���k%T@��� 4���9)T@���3���@)T@���2���%T@���`2���($T@���`l!2���@%#T@���Hp1����M(T@���x60���`x"T@���$ 0���T@���"0���@ T@���@0���T@���0���`T@����Y0���`T@���0���`QT@���ј0���/T@���0����,T@���0���T@���@1���T@��� r2���@ T@���ht3���T@��� 3����T@��� 4���T@���H 4���@W T@���&4���@oT@���']4����UT@��� b4���@T@����x4���S@���4����S@���`4��� S@��� 9n4���@%S@���@J4���S@���@Z4���S@���@<4���S@���3���/S@���64��� S@���@/4��� S@���A4���@hS@���4���IS@���`J3���T@���w2����UT@����YR2���zT@���@31���zT@���G1���@xT@���Dt1����ET@���@1���rS@��� 92���`QS@��� 9n2���IS@���:3���|S@���"r3���IS@���W3���S@���3���`QS@����3���@US@���3���@S@���3���S@���`3���S@����3���0S@��� 3���@S@���@43���S@����3����S@��� ز3���`S@���ʎ3����5S@��� 3���`S@���@03���S@���`.3���jS@��� 8/3���S@���>3���*S@����3���S@����7P3���S@���,I3��� S@���*3���`S@���@P3���@S@���3���@S@���3���@hS@���x3���S@���-3���S@���@3����S@���3���S@���`e4���S@���`3���aS@��� 3����wS@���3���@hS@����(4���@S@���ʮ4���@ڸS@���4���@~S@���5���@S@��� 8/5����eS@���5���`S@���@5���@_S@����Y5����eS@���`35���S@���'4���(S@����Yb5���S@���j5���@S@���@4���S@���w4���`QS@���H4���@S@���`*5����S@���`"5����S@���@_5���S@���H`5���S@���`J5���`iS@���wG5���S@���@j5���S@����5���S@���5���ZS@���i5���ஆS@���`5���{S@���5���@zS@���D5���s~S@���5���b}S@���@d5���avS@���`<5���uS@���5����sS@���`f6���mS@���6���`ikS@��� 9n5���IkS@��� 5���@WcS@���S5���aS@���`~5���fS@���@4B5���0iS@���@e5���@-lS@���^5���`sS@��� 5����~S@���4���`S@���4����~S@���4��� {S@���= 4���@guS@���'m3���|rS@��� 53���pS@���g2���hS@���M3����#eS@���ww3���JfS@��� 3���@mS@���A4���@nS@��� i4���@lS@��� 4���8nS@����4���sjS@����X4���@XfS@����>4���@cS@���{4���@_dS@���@A4���`bS@����_4���@obS@���`m4���`S@���` 5���bS@���,4���Y]S@���H4���ZS@���4���YS@���K3���@pYS@���|3���@US@���@e3��� SS@����Yr3����#QS@���k3���[OS@���3���NS@����3����TS@���2���@XS@��� b2���@US@����k2���@SS@���@cI2���SS@���r;2���@QS@���@2���@_<S@���Q82����7S@����ք2����3S@����0v2����0S@���`ew2���@/S@��� 2���6S@���`"3���*6S@���`3���k=S@���Q4����?S@���, 5���c<S@��� 4���@=S@���@4���@:S@���4����7S@���`5���9S@���G5��� 8S@���`C5���@8S@���G5���I7S@��� 4���5S@���`5���J2S@����/5���@3S@��� 95���A*S@���@5����#)S@���@5���/*S@����75���@1S@���6���`3S@��� 2$6����5S@���hD6����6S@��� x6���`4S@���QX6���K1S@��� Q6����/S@��� ߜ6����/S@���@6���`y-S@��� 16��� +S@���@u6���(S@���@36���@x&S@��� VT6���@ S@��� I6���@!S@���V6����5%S@��� )6���(S@���Q5���'S@��� \5���'%S@���#6���r#S@��� 6���"S@���@5���{#S@��� 95���@G!S@���`e6���AS@���6���kS@���@j5���S@���5����S@���5���S@���5���@S@��� \76����S@���@dX6���S@���Io6���S@���r[6���S@���c6���S@���Œ5��� S@����5���HS@���� 5���S@���`5���@NS@���5����S@���`kr5���ZS@���#a5����S@����/5���S@���˭4���@O S@���k4����S@���5���@xS@���4���S@��� 8o4���`S@���3���S@���K3���@S@���3���S@���ҷ3���S@���@e4���R@���5���@R@���5���S@���5���@NR@���5����^R@���3���R@��� Z3����=R@���`l3���R@���3���R@���c3����wR@���@U3���@R@��� i3���R@����)3���R@����3���kR@���G4���R@���4���R@���`3���R@���`N4���`yR@���`~4���`R@���@4���R@���.5���!R@���`fF5���)R@���g5���R@���H@6���@R@���@ F6����5R@����5���`R@��� h5���R@���f6���R@���s6���@(R@���7z6���uR@���G6����<R@���a6���R@���=j5���R@��� 4���R@���4���@oR@���4����nR@��� 5���R@���`5���@xR@����5��� R@���5���@R@��� 5���R@���d6���R@����'6���R@���G5���R@���`6���R@���g5���R@���5���R@���5���@R@���G4���`R@��� 4���JR@��� 4���޸R@��� 4���R@���H4���R@��� 4��� R@���@4����R@����5���@,R@��� 4���@ӪR@���G4���@R@���3���tR@���@ci3���@۫R@���K3���AR@���@F3���R@���#a3���@R@��� b2���@ӞR@���`3����R@���ј3���`R@���@j34���R@���g54����ɓR@���]4���ZR@���4���R@���@j5���zR@���`55����R@���`55���@ӢR@���@ 6���@FR@���N6���kR@���G5���`R@����5���ךR@���5���R@���Q6����MR@���z6���R@����6���jR@���� 6���cR@���G6���@oR@���V6���R@���`46���jR@����(6����R@���@3s6����مR@���{6���@_R@���5���R@���6���~R@���5���yR@���m5���� vR@���5��� pR@���5���iR@���5���lR@���`5����wR@���5���@N{R@��� 95���}R@���5���~R@���5���@OR@��� b5��� R@���5���H|R@����H4���QxR@���?4���@ uR@����4���!nR@���gu4���hR@���@ 4���@6dR@���4���bR@���`^4����aR@���xf4���`_R@���4��� \R@����4����]R@���'}5����^R@���'5���@]R@���@5���@?\R@����L5���PYR@���`:6��� OR@���l6���`QPR@���`Ce7���ZR@������8���fR@���8���@jR@���7���8nR@���@7���kR@���  7���@ofR@���6���bR@���<6���NgR@���W36���1hR@���6���dR@���`)7��� iR@���@7���pR@���8���@-tR@���,98���jrR@���ht8���`lR@��� u8���HhR@���@`8���`cR@����8����fR@���`8���hR@����8���HlR@���`k9����nR@���o9���tR@���@9����yR@���`'9���@|R@���9���@zR@���A9���WwR@���'9���sR@���9���-lR@���9���@?hR@���A9���`eR@����Z8����aR@���A8���`i_R@���@P9���]R@���n9���gYR@���@;l9����#YR@���@r9��� &VR@���@9���OR@���@*:���OR@���`Cu:���@UR@���:����vTR@���G:���pUR@���� ;���`XR@���%?;����w_R@���`Z;����E_R@���u;���:\R@���&;���`WR@����)l:����5QR@���@e:��� OR@���t:����VHR@���;����$LR@���o;���IR@����/;���HR@���w;���zHR@��� h;��� GR@���@_;���>R@���@;����V<R@���{;���);R@���T;���@=R@���R;���tAR@���@I;���@GR@���@%;���kIR@���Ե:���jFR@���@d:���rGR@���{:���KR@���?h:���qLR@���@;9���KR@��� 9���HR@��� 9���BER@���M8���9AR@���@j9����e?R@���,9��� ;R@���x9���P9R@���:���a2R@��� B:���1R@���`:���7R@���a;����6R@���`kb;����,5R@���?X;���@h4R@���`:����5R@���e:���1R@���:���.R@���:���@-R@���Q:���/R@���]:��� (R@���@p:����=&R@���xv:���$R@����[:���&R@���I/:���*.R@��� 9���k5R@���@;9���@.3R@���z49����1R@���8���.R@���8��� +R@���`8���b)R@���`8���t%R@���t8���@%#R@���p8���Y!R@���8���tR@���`9���R@���z9����R@���@O9���R@����9��� R@���`ew9���� R@���9���@R@����)|9����R@���d9���`y R@��� h9����5 R@���Y9����R@��� 8���R@���U8����]R@���@i8���jR@���7��� R@��� V7���AR@���7���R@���@ 7���� R@���7��� R@���'7����R@���@7��� R@���7���R@����7���R@���`*7����R@����}"7���Q@���`e7���@�R@����6����]Q@���`6���lQ@����6���Q@���G!7���sQ@����7 7���Q@��� 86���@Q@��� 8o6���Q@���wg6���Q@���$p6���Q@��� 6���Q@���h6���Q@��� 6���`Q@���K6����Q@����)L6����Q@���g%6����Q@���y%6���@GQ@���5����eQ@����5���Q@���?86����MQ@���H 6����Q@���@A'6���@Q@���@P6���Q@��� 6���.Q@���6���Q@���}6���@Q@���Ȁ6���Q@���@u6���Q@���z6����Q@���Es6���@Q@���]6���`Q@���zT6���1Q@����`\6��� &Q@���K6����SQ@���6���7Q@���`e6���Q@���5���Q@���ि5���`Q@��� 5���`QQ@���5���Q@���5���Q@����ݮ5����=Q@����5���2Q@����)5���`Q@����5���Q@���`5���Q@���5���9Q@���5���`Q@���A5���@Q@���`5���@Q@����5��� Q@���@5����Q@����*5����Q@���5����Q@����Y5���@?Q@���w5����wQ@���`5���Q@���@5���Q@���T6����Q@���F6���Q@��� 5���Q@���@]5���@_Q@���5���Q@���5���Q@���-5���jQ@���?5���Q@���5���Q@���5���`iQ@���"5���cQ@���`5���@%Q@����׳5���৴Q@���w5���βQ@���5���@Q@���5���Q@���5���`Q@����Z5���tQ@���5���@ܮQ@���5����Q@���5���0Q@��� 5���@Q@����|5����Q@���`l5���(Q@���@y5����Q@���`e5���Q@��� 5���Q@���$�6���Q@���`55���� Q@���  6���ߟQ@���@_6���@6Q@��� +j6���8Q@���uy6��� fQ@���Hp6���Q@���#q6���/Q@���`6���Q@��� 6���@oQ@���g6���`ԭQ@��� [6���@Q@���A6���{Q@����Z6���@_Q@���ि6���[Q@���Z7���@6Q@���@8���Q@����.8����Q@���r;8���Q@����28����#Q@���य8���`Q@���`8���Q@���`e8��� Q@���8���Q@���'9���`iQ@����Y9���@xQ@��� 2T:��� Q@���hd:���Q@���@o:���Q@���'}:����$Q@���:���Q@���H:����EQ@���%/;���@`Q@���g5;���Q@���H;���H�R@���<���|Q@���Œ<���@6R@���@<���@FR@���`<���@R@��� x<���@R@���@Z<����R@���_<���Q@����x<���@Q@���@y<����DQ@���h;���BQ@���G;���@Q@��� 9;���@gQ@���<���Q@���ES;���kQ@����h;����Q@����<����Q@���;���/Q@���@%<��� Q@���@^}<���Q@���Oz<����Q@���]<���@Q@��� ;����<Q@���#;���`Q@���`5!;���Q@���WC;����,Q@���H�;����Q@���̬:���sQ@���o:���lQ@���H9���Q@����9���HQ@���Hp9����Q@���,i9���!Q@����ք9���Q@���@9���`Q@���࣠9���@Q@���z:���tQ@���G;���Q@���@;��� ~Q@���W;���`yQ@��� ;���Q@���u;���BQ@��� 2;���:Q@���;���`Q@���`;���Q@���H;����=Q@���`4<���@Q@����*K<���Q@����h<���ϽQ@��� B<���ǼQ@���`;���@Q@���;����#Q@���+<���`QQ@���@P<���@ Q@���`T<���7Q@���><����Q@���`T<���Q@���@4=���Q@����;=���`!Q@���` =���Q@���<���ƝQ@����/G<���@?Q@����X<����$Q@��� U<���*Q@����9<���Q@���u<���zQ@���@:���@Q@��� {:����Q@���wW:���@Q@���Z:���Q@���O:��� fQ@��� 2:���Q@����Y2;���Q@����n;���`Q@���;����Q@���@<���Q@���C<���Q@���p<���@GQ@���@j<���`Q@���x<��� >Q@���<��� ʂQ@����7 <��� Q@���;���qQ@���;����*Q@���h;����}Q@���tj;����#}Q@���AF;����Q@���+;���׊Q@����0:���Q@���@:���1Q@���`N:���ৌQ@����9���Q@���x69���@oQ@���t:9����vQ@���d9���`Q@���xF9���Q@���Z9��� Q@���hT9���Q@���:9���@pQ@���`9���Q@����7�9��� Q@���8���{Q@���@c)7���@˅Q@���u6���@pQ@���6���׆Q@���@_6���*~Q@���`6���@X~Q@���~6���@6|Q@���h6���{Q@���6���@ }Q@���6���(|Q@���6���`yyQ@���`6���HxQ@���7���(|Q@��� 7����zQ@���= 7��� wQ@���DD7���IwQ@��� 6���sQ@����6����rQ@���D7���@_pQ@�����07���@xrQ@���A7���`yuQ@����^7���vQ@���WS7���uQ@���>7���pQ@���h7����]nQ@���w7����VpQ@��� 17����nQ@��� V7���gQ@���7���@XfQ@��� \7���keQ@���7����ncQ@����T7���@`Q@��� 87����eQ@����L 8���[cQ@���`T8����fQ@��� 8���`Q@���8���A^Q@����(8���]Q@��� 88����[Q@����*8���sZQ@���UE8���H\Q@���xV8��� [Q@����)\8����YQ@���zt8���VQ@��� 98����E[Q@���8���@ YQ@���8����EWQ@���8���TQ@����8���ISQ@���8��� &RQ@���'8����QQ@�����8���PQ@���&8���IOQ@���`9���`SQ@���A9����OQ@���gE9���NQ@���9���sNQ@����8���LQ@���9���IQ@���R9���@?HQ@���C9���@oFQ@���Q89���BQ@���QH9��� BQ@���@_9���BQ@��� Y9���CQ@���y9���CQ@���@c9���@FQ@���@A9���EQ@���@9���`AQ@���`C9���@?Q@���t9���@W?Q@���ww9��� >=Q@���$9����^=Q@���@A9���;Q@���h9���@9Q@���`k9���{7Q@���9���Z8Q@����*9���!6Q@���G:����1Q@���`D:���!.Q@���:���)Q@���w:���@o*Q@����0:���-Q@���;���(Q@��� ;���@%Q@����;���@$Q@���`J;���@&Q@���@U;���%Q@���@9;���@N#Q@��� 9;���@o"Q@���`l;���@o"Q@���@:;����="Q@����Y;���@G!Q@���;���Q@��� ;���Q@���w;���@Q@���;���� Q@���";���c$Q@���u <���#Q@��� <���@Q@���O<���Q@���F<��� Q@����\<���Q@���C<����5Q@���K<���`Q@���K~<��� Q@����Z<���@Q@���<���@Q@��� <���cQ@��� <���Q@���'<���`Q@���%=����UQ@��� 5=���:Q@���O=���Q@���=���@Q@���G1=��� Q@���xF=���`QQ@���@dx=���`Q@���`=���@ Q@���@=���� Q@��� آ=���Q@���`=����Q@���=���sQ@���=���Q@��� =����Q@���`=���jQ@���#>���`Q@���`5>���Q@���G>���Q@��� [�>����Q@���-H>����vQ@����>���AQ@��� >���@6Q@���>���@%Q@��� +Z>���@Q@����h>��� Q@���@d>����v Q@��� +j>����=Q@���`>���Q@���w>��� Q@���Gq>��� Q@��� 2t>��� Q@���t>���Q@��� a>���Q@����Sg?���7Q@���@3s?���@Q@���X?���@ Q@��� x?��� Q@���`~?���`iQ@����)l?���8Q@����)l?���GQ@���@?���Q@���h?���JQ@���˭?��� Q@���?���+ Q@���"?���)Q@����@���@Q@����@���Q@���P@���Q@��� @����Q@���,!@���Q@���@"*@���Q@���@&@���@Q@���6@���'Q@����@@���'Q@���:@���#Q@���3@���"Q@��� \7@��� Q@���@dH@���Q@���.7@���HQ@����@����Q@��� @���� Q@����r @��� Q@���7@���`Q@���@8@���l Q@���z@���' Q@���n?����Q@���`�@����Q@����r @���@ Q@���@���@XQ@���5 @��� P@��� @���PP@��� C@���P@��� \@����P@���`@����P@���@@���P@���@���P@���U-@���P@���@E@���P@����)D@���P@���w@���`P@���`@���P@���`@���`P@����@���`iP@���`@���@pP@���@����P@���҇@����$P@���f@���@XP@��� @���{P@���L@���'P@���@���`P@����@���@P@���`@��� P@���W@���P@���d@���@P@���@���@P@��� @���@P@���@���BP@���@���P@��� J@���`P@���@)@���@P@���@����VP@���@����P@���4@���lP@���e@����P@���`@���`P@���@����P@��� Q@���`yP@��� @���ĿP@���u@���P@���@����ٽP@���@R�A���@P@���@����P@���`A���P@���\@���P@���`@���)P@���@���P@���< A���2P@����A����EP@��� A���cP@��� A���ǬP@���A���P@���` A���@P@���!A���[P@����$A����ҫP@���`T&A���YP@��� J/A���P@���`2A����P@����4A����wP@���d8A���ήP@���@7A��� P@���uAA���KP@���;A���2P@���<CA���`ԥP@���3A����P@���:5A���P@���4ZA���@XP@���@AOA����P@��� JWA���@P@���|cA���qP@���@nA���@OP@���htA����$P@���~A���/P@����A���P@���A���@%P@���A��� ʚP@����ĔA���@gP@���A���P@���`1A����VP@����A����<P@��� ̝A���{P@���tA���ǔP@����ܿA���SP@���`A���|P@���A���P@���$A����P@��� &A���0P@���A���@WP@���\A���tP@���A���[P@��� A���� P@���A���@P@��� QA���@_P@���@AA����P@���A���:P@���@A���P@���A���@P@���@cA���P@����A���`'P@���oA��� >P@���dA���P@���@(A���KP@��� A���P@���`A���@P@���B���{P@���B���{P@���B���@X~P@���@!B���|P@���� B����VP@���`}*B����^}P@����)B����=zP@���v0B���zP@����2B��� >P@���@+B���̄P@����DB����,P@���@IB���P@���<B���P@���AB����EP@���$pB���zP@���kB����5yP@���M|B���uP@���UB����vP@���`IB����{P@���B���c|P@���@{B���SP@���B���P@���B����P@���<B���@P@����ĔB����рP@���໓B���xP@���`rB���@xP@���|B���vP@���B���sP@���`CB���@%sP@���,B���@uP@���@AB���sP@���B����qP@��� aB���@gqP@��� yB���|P@���`B���xP@���4B���yP@���B���a~P@���SB���YP@���B���2P@����B���P@���B���JP@����B���ஒP@���B����ғP@���@B���`ݕP@���B���ZP@���:B���@P@���B���cP@���`B���ߗP@���h C���ǘP@���C���P@���uC����^P@���|B���@ӒP@��� B���ސP@���dB���!P@���`B���P@���B���P@��� B���P@���B���P@��� yB���@P@���@B���׆P@��� C���RP@��� C���P@���`B���@gP@���4B���ăP@���-�C���ƁP@����B���}P@���C��� fzP@��� C���@}P@���4C���`zP@��� C���@yP@���&C���zP@���`3C���@P@���`1=C���@ P@���:C����zP@���$C���@ qP@���$C����UqP@���C���kP@���`C���HhP@���@5C���3jP@���9C����fP@���`�@C���eP@���d@C���iP@���@AC���kP@���FC���@%kP@���@EC���hP@����JC���`hP@���@QC��� jP@���YC���@xjP@���`_C����MlP@����dC����<kP@���v`C���hP@���PC����DhP@���LC���dP@���шC���@eP@��� !C��� kP@���C����oP@���@{C���@lP@���`C���hP@��� C���eP@���`rC���dP@���C����gP@���`C���sbP@��� C����cP@����OC���gP@���C���@eP@���ɯC����<cP@���C���!bP@��� C���gP@���5C���3jP@���`TC���{kP@��� C���@giP@����C���@gP@���� C���`hP@��� C���{gP@���tC���KeP@���`C���cP@���C��� &bP@��� JC���RcP@���C���@-`P@��� C���_P@���D���@ eP@���V D����MdP@���fD����bP@���� D���@_P@���D���`W`P@���D���^P@���C��� fZP@���@C���`VP@���,C���ARP@��� sC���PP@���C����RP@���`C���@OP@���C���@ PP@���`C���KP@��� D���cLP@���@cD���@KP@���`C���jJP@���tC���@IP@���`BD���JP@���`BD����$HP@���@C���FP@���C����EP@���D���`yEP@���D���CP@���`D����AP@���@)$D���`?P@���1D���YEP@���42D���DP@���@.D���BP@���`2D���@AP@���:MD���@IP@��� zUD���@FP@���`ZD���AP@���@nD����FP@���<sD���`DP@���ED���HP@���-D���EP@���}D��� >P@���D����#=P@����HD���>P@���D����=P@��� D���8P@���qD���6P@���`kzD���4P@���`XD���@.P@���dXD����D,P@���LD����+P@���$HD���` P@��� QD���P@��� 0D����P@���`-D���P@���7D����P@���\?D���*P@���`CED���P@���`OD���@P@���@gD����vP@���@D����P@��� D��� P@��� D���KP@���`D���P@����D���P@���<D��� P@���`CD���rP@���D���tP@���zD����P@���@vD���@P@���zD���`P@���`rD���J P@���`*KD���rP@��� ED���P@���ED���`P@����RD����P@����qMD��� O@���� UD��� O@��� ZD���`O@��� akD���O@��� PD���O@���`HD���@XO@����OD��� &O@���"BD���O@����YBD��� >O@���5QD��� %O@���`TD����O@����O[D���� O@���D���{O@����D���O@���ӾD���O@���`BD��� =O@����D��� O@���D���O@���<D���O@���@jD���O@���dpD��� `O@���`kD���@O@���@qD���@O@���^D���O@��� JgD���@ۿO@���`lD���O@���tD���O@���D���IO@��� D����MO@���ໃD��� >O@���4D���*O@���`[D��� O@���"D����5O@���`�D���@O@���ચD���` O@���`ףD���ZO@���`D���O@����D���(O@���@D��� O@���`CD���`O@���D���@hO@���`تD����eO@���@D��� gO@���`D���@hO@���SD���O@���`D���#O@���2D���{O@��� D��� O@���5D���@O@���fD���ͫO@���D���\O@���4D���O@���`D���(O@��� ̽D���{O@���D���@-O@���D���`ċO@���D���O@���@D���`O@���D���̓O@���uD���@pO@���@cD���ՌO@���`D���3O@���D���@O@����E���@O@��� E���*O@���`E����5O@���@)E���(O@���E���O@���D���O@���`[D��� O@���]D���yO@���D���@uO@���D��� oO@���D���@mO@��� D���tiO@���E���oO@���`1E���dO@���u)E���gO@���2,E���`mO@��� y.E���|rO@���`$E���RwO@���*E��� wO@���8E��� fnO@���@LE���oO@���dHE���rkO@���5E���@jO@���h4E��� hO@���\?E���DcO@��� 'FE���iO@���$HE���`/fO@��� @E���tYO@���WKE��� ~aO@���@NE����`O@���`[HE���jZO@���uQE���`VO@���WE���!bO@���|[E���`cO@���5YE���`XO@���hE���@h\O@��� E���aO@���dE���`/^O@��� E��� ,YO@���� eE��� `SO@���KVE���DKO@���tRE���@.OO@���`;E��� KO@��� )E���`@O@���`/E��� `;O@���FE���`;O@��� E���R7O@���E#E���0O@���`'E��� f.O@���|{E���BO@����|E���@<O@���eE��� 8O@���RE��� 0O@��� PE���i+O@����H!E����w'O@����Y*E���!O@���`l!E��� O@���!E��� ,O@��� *E���@XO@���&E���JO@���@AE���O@���`5E��� OO@���EE���`YN@���;E���@N@���+E���`O@���E����O@���E����O@��� QE���`N@���^5E���N@����E���N@���� %E���N@���L=E��� fN@���KE��� N@���d`E���cN@��� hmE��� N@���`7E���`N@���@!E����N@���`'E���`N@���51E���RN@���2E���@N@��� (E���|N@���)E���N@���;E���N@���6E���`6N@���\E��� N@���:E���N@���wE���N@��� DE���N@���|CE���lN@���4E���N@���7E��� N@����@E���@ۯN@���4JE����5N@���XE����wN@���RE���N@���DE���1N@���SE���N@���`kE����5N@����YrE��� N@���<cE���N@����sE���N@���@jKE��� N@���aE���@N@���mE���@N@����XE��� ~N@��� PE���N@��� E���N@���@{E���`GN@��� E���RN@��� E���`N@���,E��� fN@����^E���N@���aE���N@���TE���N@���,YE���|N@���`dE���@FN@��� eE���8~N@���@fE��� ~yN@���L]E����vN@��� ̈́E���qN@���½E����$xN@���`E���1tN@���`TE���@oN@����eE���hN@���`gE���JfN@���E���`fN@���E����<cN@����E���eN@����dE���[_N@��� iE���XN@���tE���SN@��� !E���UN@���,E����$PN@���rE���3RN@����dE���`WN@���aE���UN@���`jE��� UMN@���=E���KMN@���pE���aJN@���}E���`EN@���tE���DN@��� sE���|BN@���`E��� ?N@��� E���EN@���E���`=N@���ٙE���{;N@���`E��� DN@���tE��� ON@���`TE���@XZN@���E���XN@���eE���HN@��� E���8FN@���F��� LN@���F��� JN@���E���EN@����E���`>N@���=E���9N@���`E����8N@���mE���`BN@���໫E���j:N@���`E���7N@���E���(N@���@E���c(N@���@E���-N@���@E���`)N@���|E���[/N@��� 8E���2N@���ԕE���`H0N@���:E���,N@��� zE���`-N@���E���)N@����qE���I'N@���E��� #N@����܏E��� xN@����˦E��� N@���E���N@���E���aN@���~E���N@���`ؚE����5N@���E���`N@���@E���� N@���<E���PN@���-E���`HN@���@{E���N@����` F���N@���@F���`N@���F���($N@���F��� y-N@��� F��� ,1N@����Y F��� $N@���;F���N@���eF���@*N@���@"F���`)N@���F��� ,!N@���F��� DN@���`(F��� gN@���!F���`N@���@'F����<N@���8F���N@���FF�����N@���`0NF���M@���� UF��� �N@���`CUF��� N@���,YF��� N@���<[F���`M@���`laF��� M@��� ?qF���N@���hlF���@FN@���`lqF����N@���vF���` N@���jF���`NN@��� |F���N@��� xF��� N@���LF���9 N@��� zF��� N@��� F��� N@���@F��� N@���iF���QN@���`laF���PN@����YbF���N@���@jF���N@��� hF���N@���`]F��� #N@���[F���`*N@���<F��� >AN@���;F���@GN@���vF���N@��� F���KN@��� F���2N@���`F���#N@���vF���)N@���`[xF���`/.N@���DlF���;N@���@vF���@>N@���tbF���MN@���<cF���`NSN@���PF��� f^N@���$hF���UN@��� pF����HN@��� F����<N@���<F���7N@����F����:N@���F���`MN@����܇F���(TN@���F���`PN@��� bF���`NKN@���`1F���`>N@���F���AN@���F���@EN@����ܯF��� yMN@���F���@.WN@���F���9UN@���`[F��� [N@���@RF���@YN@���@խF���TN@���`ŻF���`MN@���໻F���@GN@��� F���aJN@��� F��� <N@���F����#AN@���F����MDN@����F���IN@����7F����GN@���F���MN@���F���PQN@���F����PN@���F���`MN@���F���`FN@���hF���PIN@��� F���VN@���"F���kYN@��� zF���ZN@���F���KUN@���^F����XN@���F���aN@���vF���cN@���dF���rsN@���`IF���vN@���tF���}N@���4F���`N@���LF���@N@��� F����zN@���]F��� _N@���F���`H`N@���@cF���fN@����F���iN@����F����lN@���F���8fN@���uG���`/^N@���G���\N@����`G����v`N@���G���bN@���F��� oN@���`TF���qN@��� QG���7gN@��� G���7gN@���G����5qN@��� F���:N@���@F���N@���`śF���3N@����qF���N@���F���N@���-F���N@���`F���@N@��� F��� &N@���`F���N@��� �G���@tN@���dG���uN@��� G���{N@���2F���ބN@���@AF��� ~N@���F��� N@���eF���!N@���uF���N@���|F���N@���@AF��� N@���tF���ءN@���|F����ѨN@���@(F����N@���eF���`ݝN@���G���N@���F���N@���EF���`N@���F���`N@���� F���֋N@��� &G����N@���%G���`N@���@G���`˅N@����G���`N@��� G��� g}N@���d G���}N@��� !G���ԅN@���4G���`ŊN@����70G���N@���@AG����N@��� GG���@FN@���UEG��� yN@���QG��� D|N@���`1MG���`vN@��� TG���tN@��� pG���SvN@���ZG��� qN@���[G���9mN@���vG��� fN@���`}G���`hN@���@{lG����vpN@���@΃G���`jN@���:G���@?pN@���uG���vN@���`lyG���@yN@���G���`vN@���ɟG���jrN@���`0G���yN@���� G���ZpN@���`[G���lN@���G���qN@���G����woN@���@G���mN@���G���@gN@���`TG����$pN@��� H���@gN@���H��� >iN@���H��� xnN@���G��� N@��� G���tN@����/H���@}N@��� 4H����wN@��� zH���N@���\G���1N@���`G����^N@��� G���N@���G��� N@���G��� N@���`}G���N@����H����<N@���`H���N@���H��� N@���H��� =N@���� H���N@���t H���@¥N@���@LG���tN@��� zH���ةN@���`H���N@���SH��� N@��� $H���@N@���H���tN@���@1H���`N@���m8H���N@���`'H��� N@����&H���ΚN@��� &'H���@N@���V<H��� N@���`CEH��� N@���GH���`N@���@QH���`N@���5QH���N@����IH���zN@���`+2H���� N@���0H���IN@��� @H��� N@��� =H���`qN@����,H��� %N@���\GH���`N@���UH���3N@���4RH���@-N@���mH���N@���`BnH����<N@���`H����N@���lH���`N@���<H��� N@���<+H��� N@���,)H���N@��� ,H���@pN@���@H���!N@���H���N@��� hH���`ʾN@���`TH���N@��� ̅H����MN@���H���N@���H��� N@����H���N@���]H���`N@���KH����#N@��� nH����N@���$xH���3N@���H���N@���ڈH���N@���`wH���`N@���\oH���1N@���4H��� N@���`H��� N@���`_H��� ON@����aH���� N@���uH��� yN@���H��� N@���H��� =N@���eH���mN@���H��� N@���UH���@N@���`TH��� ON@���H��� N@���@յH���`GN@���mH���@hN@���H���`N@���@γH���N@���XrH���8O@���noH���� O@���`lH���s O@���|H���O@��� H��� O@���H���` O@���ȀH���!O@���`H���)O@����H���@ O@���3H���O@���H����N@���`lH���O@���H���@O@����H���`N@���H���mN@���#H���|O@���H���O@���?H���) O@���`H���@W O@���H���@O@���H����M O@��� H��� O@��� H���O@���`H��� ,O@���H���� O@��� yH���UO@���`rH���3O@���EH���@O@���H���)O@���`H��� O@���;H���[O@���`H���@O@��� H���t!O@���H��� O@���H���`A&O@���`H���#O@���@H���@.'O@���H���z$O@���H���.O@���`H����w'O@��� I���`G)O@��� I��� O2O@���(I���@>O@���I����UO@���, I��� ^O@���I���eO@��� H���qO@���`lH����rO@����I����<cO@���!I���YO@���d(I���^O@���@H���@O@���H���`O@��� I���`pO@���,I���`qdO@���<3I����lO@��� hI���`~O@���I���O@���I���`˅O@���@$I��� |O@��� ;I���yO@���NI����|O@���?I���O@���AI���`O@���@FI���`O@��� LI����O@���MI���O@���7I���tO@���9I���̔O@���/I���`O@��� I���zO@���.I��� &O@��� 8I����ɗO@���hDI���O@��� XI����<O@���sI���@O@���uI���O@���DdI���@ӞO@���jI����O@���~I���1O@���`I���O@���`0I���O@��� bzI���O@��� |I���`O@���`0I���@O@���I����^O@���|I��� yO@��� ̍I���rO@���I���7O@��� I����O@���I���@WO@���I���O@���I���O@���DI���cO@��� I��� &O@���I���QO@����I���`O@���ໃI���`6O@���bI���O@���`laI���O@����I��� O@���`+I��� ~O@���=I���O@���`*sI���O@���`*KI���aO@����FI���`O@��� @I��� gO@���`I���*O@���@I���O@���I���aO@���I���cO@���@AI���O@���`I���`O@���I���O@���I���@O@���`I��� O@��� I���@O@���I��� >O@���I���@O@���`I����wO@���I���O@���?I��� O@���I��� O@��� I���`O@���`0I��� O@���@I���@O@���;I����P@����I����P@���I����v�P@���I����P@���@I���{P@���oI���@P@���$XI��� P@���<+I���S P@��� I��� P@���`TI��� P@��� Q I���`P@���, I���P@���4 I���@ P@����I��� P@���I���)P@���`1EI���`i P@���2DI���� P@���*I���8P@���`5I��� &P@���KI���P@���@γI���@GP@���`I���P@���I���P@���I��� P@��� ̭I���P@���`NI��� P@���dI��� P@���@I��� P@���I��� P@���`lI��� P@����lI���P@���tI���P@��� QI����P@���`T~I���@P@���|sI���@P@���eI���@P@��� PRI���YP@���`ZYI���P@���.I���P@����I���ZP@���I����]P@���E;I���P@���`RI���P@���|SI��� P@���8I���"P@���ESI���@!P@���:UI���@#P@��� OI���`y%P@����pI���P%P@���@rI���'P@����qeI���)P@���2LI���`Q(P@���t:I���`*P@��� =I���@.+P@���� MI���!*P@���dPI����D,P@���|3I����$,P@���L%I����*P@����I���� P@���LH���KP@���H��� P@���H����eP@���H���`iP@���I���!P@���I���l(P@���H���+P@��� I���K-P@���I���z,P@��� aI���@x.P@���-I���0P@��� H���@%7P@����I���5P@����/I���0P@��� EI���0P@���<[I���@=P@���$XI���`@P@���cI���@gAP@���|kI����GP@���@]I���LP@���dpI���@IP@���L}I���NP@���zI���IP@���@cqI���jFP@����xI���EP@����pI���CP@���5qI���@>P@���_I���@-@P@���@|[I��� <P@���@[I���q8P@���RI����55P@���ZI���2P@���QI���0P@���uYI���@`/P@����O[I����51P@���vI���['P@���I����'P@���`I���-P@���`I����M0P@���`II���J2P@���`I����1P@��� ̥I����.P@���I���)P@���I���r'P@����˾I����P@���<I���P@���@(I����P@���I��� P@���DJ��� P@����J���P@���`l J���P@���� J���P@���L J���P@���`k J���@P@���� J���R#P@����J���R'P@���J���@W+P@���@J���/P@���DI���/P@���I���4P@���I���8P@���� I��� 6P@���I���@<P@���#I���@?@P@���3I���!BP@���,I���@P@���\I���<P@��� I���8P@���@I����=P@���I����w?P@����I����^AP@���`BI���@>P@���I����U9P@���I����e7P@���� J���@x2P@��� J���4P@���@I���6P@��� I���8P@���SJ���:P@��� J���@.7P@���J���@.3P@����J���5P@���@{J���6P@���`rJ���`8P@���;J���*:P@���`J���=P@���uJ���@>P@���; J���`>P@���, J���@P@����H!J����$DP@���`$J���bEP@���@J���GP@���EJ��� GP@���<J���JP@���J����eSP@���^J���{SP@���,J���tMP@���\'J���LP@����J���SP@���`J����,UP@���(J���jRP@����G*J���@UP@��� ?AJ���KP@���d@J���NP@���9J���RP@���AJ���@QP@���HJ���@-TP@���24J���`XP@���`I���bP@���<I���@dP@���I����fP@���vI���`hP@���4I���oP@���}I���pP@����/_I���kP@��� zEI���lP@���@FI���mP@���o^I����$lP@��� heI���kmP@���@WI���@pP@���I���`sP@���LI���kP@���LI���@cP@���J���@?`P@����>J���XP@����EJ���@.[P@���8J���0aP@���IJ���``P@���UMJ���aP@���`WJ���(`P@����`dJ���@aP@���dJ���qdP@���� UJ���2gP@���`[J���@iP@���4bJ���`hP@���Q`J���jP@��� &WJ���)oP@���VJ���rP@���`[J����EsP@���MdJ��� kP@���EJ���jP@��� 9J���`kP@���`J���!nP@���mJ����rP@���sJ���sP@���J���nP@��� bJ���oP@���@)J���sP@���`J���@sP@��� J���@FvP@���TJ����{P@���#AJ���xP@���`"J���yP@���4"J���@FzP@��� �J���P@���I����VP@���I���P@��� zI���@6P@���fJ���P@���`B&J���`yP@���@J����yP@���@{LJ���@|P@����YBJ���{P@���`lIJ���ǀP@����WJ��� ~}P@���dJ���z|P@���БJ���vP@���J���@`wP@���|J����xP@���tJ���@xP@���١J���AzP@���LJ����P@���KJ���{P@��� J���B}P@���J���~P@���ӦJ����5P@����J���*P@���`IJ���PP@���3J���/P@��� J���P@���=bJ���@ۏP@���<KJ����nP@���|I���7P@���J��� >P@��� I���`P@���tI����#P@���@I��� ڬP@���I���/P@��� I��� P@���@I����P@��� yI���@?P@���@fI���P@���`rtI���ͷP@��� I���P@���tzI����һP@���అI���P@��� I���@ܮP@���@(I���`P@���`J����,P@���ZJ����P@���tJ���@ӎP@���\J���P@��� J���P@���J���P@���`lJ���P@���`TJ���@`P@���DJ���P@���`lJ����P@���,J���@P@���`J���`yP@��� J����<P@���DJ���֛P@���J����P@��� J���`ԡP@���`J���P@���@wJ���P@���@=J���0P@��� 5J���P@���yJ���ޤP@����J����P@���J����P@���`lJ����P@����J����nP@����ļJ���sP@���J����P@���DJ����P@���lJ���P@����JJ���@ P@���`SJ���ήP@���`lYJ���`yP@���<SJ���@P@��� UJ���մP@���J����P@���uJ���P@���J���@P@���ӆJ��� ~P@��� JJ����EP@���0J����P@���<;J���߷P@���@%J����#P@���+J���κP@���`C=J���@P@���`I@J���P@��� s;J���P@���^J����P@���J���P@��� J����P@��� J����EP@���`J���@P@���@J���P@���J����P@���:J���P@���`J���@hP@���~J����P@���tJ���@P@���J���jP@���J����P@���`J���P@���^J���@pP@���@jJ���@P@���J���@NP@���`sJ���P@���@NJ���`QP@���3I����5P@���`ŻI����EP@���I���AP@���`II���P@��� ,I���P@���;DI���8P@���@{I���P@���I���*P@��� ̽I����nP@���໓I���@P@���@I���P@���@I���P@���`J���P@���J���P@���|J���'P@���`J���qP@���#J���@P@���ЩJ����nP@���vJ���P@���zJ���`iP@���໋J���@P@���,J���`iP@����rJ���`P@��� hJ���P@���e_J���P@���n'J����P@���`1I���@.P@���I���@6P@����ĔI����P@��� LI���P@���,I���P@���E[I���P@���$pI���!P@���`*#I��� P@���H��� P@��� bH���P@���!I���P@���`liI����vP@��� I��� P@���`sI���/P@���`I���tP@��� I����P@���I����P@��� !SI����vP@���\7I���/P@���<I���@P@��� 9fI���`P@���lI��� &P@���aI���@ P@���<SI���@OP@���I���P@���I���P@���I���P@��� &I���P@��� 9I���@P@��� I���@P@���`r|I����P@���\I���P@���`I����=P@��� I���`P@����I���P@���,I���P@���4I���@P@���#I���P@���`I���@P@��� I���P@���WI���P@��� I���P@���I����P@���fI���@hP@��� I���� P@���`I���P@���@I����P@���&J����P@���`+J���@P@���J���@8P@���I���@hP@���I���P@���VJ���P@���2|J���@P@��� J����P@���DJ���kP@���dJ���P@���`J���P@���`J���P@���J���P@���LJ���@P@���J���P@���tJ���@_P@��� QJ���P@����ܟJ���P@���`J���P@���J���KP@��� &J����VP@��� J���`P@��� &J���`QP@���$J���/P@���J���P@���J����nP@���,J���P@���@uJ���AP@���@vJ���)P@����HJ����P@���J����Q@���tJ���@Q@���IJ���P@���` J����$P@���J���P@��� J���zP@���@RJ���P@���dJ����P@���VJ���AP@���J���Q@���ઊJ���3 Q@���dJ��� Q@��� bJ���cQ@��� J��� Q@���`+J��� Q@��� ̕J��� Q@���fJ���� Q@���@cJ����$ Q@���4JJ���� Q@���hI���IQ@����I���(Q@���`NI���@P@���` I���jP@���I��� P@���<I���cP@���fFI����P@���@EI��� P@��� I���tQ@���`}I���@p Q@���KI���l Q@���KI��� Q@���`ŋI��� ~ Q@���I���@Q@���?I���Q@���I����vQ@���I���Q@����YI���Q@���<I���@WQ@��� I����Q@���I����Q@���J���Y Q@����?J���e Q@���,9J����Q@���nGJ���@6Q@���DJ���Q@����HaJ���Q@��� PJ���@Q@��� 8wJ���Q@���vJ��� >Q@���dJ����Q@��� J���Q@��� bJ����Q@���J��� >Q@���@J����#Q@���J���|Q@����OJ���Q@���`gJ����Q@��� 6J���Q@���`<J��� Q@��� QI���@G%Q@���`I����w#Q@���@I���"Q@���@{I���@#Q@���I���#Q@���uI���|&Q@���I���P)Q@���I���`*Q@���I���,Q@���$pI���@'Q@���LmI���Z(Q@���LuI���@*Q@���]~I����.Q@���|cI����^1Q@���$`I���3Q@��� I����.Q@���`CI����0Q@����O{I���;Q@���`I���J:Q@���@I���@8Q@���`[I���8Q@���I���R;Q@��� bI���`>Q@���@I����BQ@���tI���)CQ@���@I���@FFQ@���tbI���HQ@���]I���sFQ@���sI���qDQ@���hTI���@DQ@���ECI���`yAQ@��� bBI����v<Q@���2,I����9Q@���'I���2;Q@���;I����=>Q@��� ?I���@Q@���<;I���AQ@���E+I����?Q@���2,I���CQ@���,!I���CQ@����H!I��� >AQ@���%I���?Q@���`I���@g=Q@��� bI���=Q@���$I����BQ@��� I���DQ@���`7I���ICQ@���WI���FQ@���`TVI���1HQ@��� J?I����GQ@���hI���*JQ@����I���MQ@���I���aNQ@��� "I����MLQ@���2<I���LQ@��� ;I���2OQ@���/I���UQ@���\7I����UQ@���`CI����SQ@���FI���PQ@���5II���/NQ@���`lqI���KQ@���@AI���LQ@���MI���MQ@���oI���RQ@���I����TQ@���`{I���@UQ@���jI���`UQ@���`sI���'YQ@��� akI���[Q@���nI���@G]Q@��� XI��� _Q@��� =I���\Q@���"BI����<_Q@���I���@h`Q@���LI���`aQ@���dpI���_Q@��� pI���@`Q@���LeI���@cQ@��� eI����UeQ@���MlI��� gQ@��� iI���`hQ@���_I����,iQ@���`5I���`eQ@���`T6I���RgQ@���m8I���@iQ@���`dI���@jQ@��� hI����,mQ@���@{LI���!rQ@��� I���zpQ@���,)I���`yuQ@���$(I���@wQ@���|KI����<{Q@���mHI���J~Q@����/'I���|~Q@���`*I����Q@���I���@OQ@���\/I���Q@��� YI��� Q@���`I���@}Q@���I���!Q@���~I���Q@��� 9nI��� ~Q@���VtI���@Q@���-I����VQ@��� PI���k}Q@���I��� f~Q@��� I���ρQ@���I����Q@����!J���@WQ@��� =J���Q@���?pJ���@Q@���`J����Q@����.K���Q@���dPK���`ݩQ@���EK��� ʮQ@��� %K���@.Q@���$K���Q@���@{\J���`Q@���`I����Q@���@VI���৔Q@���@GI���PQ@���DI���Q@���DLI����5Q@��� TI����Q@���oVI���`ݙQ@���DI���[Q@���cI���Q@����ĄI���Q@���MI���@Q@���@}I���Q@���yI���@xQ@���\I���@_Q@���3I���Q@���2I����DQ@���,I���@Q@���`[pI���zQ@����oI����Q@���rI���`Q@���aI���jQ@���`I���@Q@���o~I���Q@���|I���:Q@���`oI���Q@���MTI���@WQ@���OI���Q@���SI���PQ@���@oI���Q@���I���/Q@���`+I����Q@���,I���հQ@���tI���Q@��� I����5Q@���`I����Q@���@jI���Q@��� bI���Q@���MI��� Q@���]fI���Q@���\WI���BQ@���QI���@`Q@���uI���@hQ@���ӶI���@Q@���I���Q@���,I���@6Q@���`[I���@ Q@���yI��� &Q@��� uI���@gQ@���I���rQ@���@սI���Q@���dI���Q@���ٱI���@.Q@���I���:Q@��� I���PQ@���I���@Q@��� I���Q@����J���� Q@���@AJ���Q@��� 'J���`Q@���@I���Q@���=I���@-Q@���|I���Q@���I���@Q@����I���Q@���I��� Q@��� JI���Q@���J����DQ@��� =J����Q@��� 9FJ����=Q@���`TFJ���Q@���@>J���AQ@���-(J����eQ@���@J���!Q@��� $J����Q@���`I����eQ@���@I����$Q@����:I���@Q@��� !I����VQ@��� !3J���(Q@���ZJ���@hQ@���~J���Q@���`lYJ���bQ@���7J���@Q@��� J���Q@���-I���@%Q@���4I���Q@���� I���Q@���DI���/Q@���@I���Q@���|J���)Q@���#IJ����VQ@���IJ���Q@���sJ���Q@��� J����UQ@���`uJ����DQ@���mJ���Q@���sJ���Q@���DtJ���*Q@���@YJ���@Q@���@ZJ����R@���cJ���@�R@���;J���@Q@���`}J���@Q@���`J����UQ@���ɯJ���Q@���5J���Q@���ڨJ���Q@���ѰJ���Q@����YJ���*R@����J���R@���dJ���R@����`J��� > R@���dJ���@R@����J����R@���`lJ���R@���J���JR@���`J���@.R@���`IJ���R@���@J���@ R@���`J���`R@���2J��� R@���J���@hR@���`kJ���R@���`ƲJ����Q@����ĴJ���bQ@���#J���)Q@���mJ���Q@���J���Q@����`J���{Q@��� J���Q@���@J���@6Q@���wJ���@Q@���;K���Q@���@ K���@GQ@���LK���@NQ@��� K���Q@���J����Q@���`J���Q@���:J���HQ@��� 5K���@Q@���dpK���)Q@���@)|K���@WQ@���K���`iQ@���K���Q@���=K���Q@���K���Q@���`1K���(Q@���,K���Q@���K���Q@���K����DQ@���K���Q@����K��� >Q@��� K���Q@���K����Q@���ѸK���@`Q@��� K���0Q@���-K���@Q@��� K���lQ@��� QiK��� Q@���BK���R@���7K����R@���RK���R@����7PK���'R@���uK���Q@���4K��� Q@���|K���`Q@��� K���R@���;K��� R@��� K����#R@���K����R@���#qK���R@��� xK���@.R@���aK���sR@����gK���RR@���D|K����R@���K���R@���`K���R@���ɧK���@R@���໫K���`yR@���DK����R@���K���R@���$K����R@���`kK���R@���2K���@g!R@���үK���`Q R@��� }K����v R@��� bK����!R@���`B~K���$R@���;TK���`&R@���=RK����D(R@���lK���`(R@���@oK���`+R@���|KK���l,R@���d`K���/R@���`DK���k1R@��� HK����3R@���@iK���`0R@���uK����1R@����qMK���4R@��� QYK���@9R@���gK��� ;R@���cK���`>R@��� 'fK���?R@���4K���`?R@���K���@R@��� QK���CR@���|K���@DR@���DK����@R@���@)K����]BR@��� K���CR@���K���ER@��� sK����GR@���UK��� FR@��� K���@JR@��� 'K���{KR@���K���KR@���K���MR@���� K���@OR@���`K���PR@��� bK���SR@���`K����TR@����K��� XR@���ʌK���VR@���•K���@XZR@��� K���\R@����K����eR@���L���qhR@��� L���/jR@����K���@WkR@���K���kR@��� tL���@WkR@���@L����VlR@���@K���mR@���@K���@%oR@���#K���pR@���;K���@lR@���K���nR@���<K����VpR@���$K��� vR@���K��� ~uR@��� K���wR@���K���xR@��� L���}R@���E L���`QR@���.L���@R@���`lL���@WR@��� 'L���`iR@���L���@_R@���L����R@���`TVL����^R@���nL���8R@���DL���@R@���@(L���8R@���)L���R@���~IL���R@��� DL���`R@���`[XL���kR@���dXL���@XR@���dL���(R@��� PL����5R@���3L���@R@���<KL���@™R@��� dL���@ÜR@���`}L���@R@���!L���R@���tL���@R@���`I0L���஢R@����LL���@R@��� @L���IR@���`<L���9R@���~aL���R@���|cL����R@��� aL���@`R@��� 9L���IR@��� L��� R@���`L����R@���`L���R@���L}L��� R@���fL���৴R@����L���@R@���KL���R@���<L���ϹR@���L����eR@��� M��� R@���@M���@R@���`M����R@���`L����R@��� L���@R@���L����VR@���`M���R@���h4M���R@��� 7M����R@����&M���@R@��� .M���IR@���`l!M���R@��� M���R@���@7M����5R@���BM����R@��� QYM���*R@��� TM���R@����`M���@R@��� 8M���R@���`M���R@���n7M����MR@���v(M���R@��� LM���R@����GM���HR@��� 9M���R@����DM����R@��� M���KR@���M���R@���DM���@gR@���uM���zR@���M���@R@���`M��� R@���M���R@���M��� &R@����M����R@���`lM���`R@����HM��� R@���dM���:R@���@M���@pR@���@(M���@R@���@(M���R@��� M���@R@���@N���@XR@���N���R@���AN���(S@���^N���R@���sN���S@����YjN���`S@���`TnN���@ S@���`TN���7 S@���<N���� S@����/N���@ S@��� &O���8S@���O����S@���O���@XS@���-PO����S@���<cO��� S@��� ]O��� S@����cO���c S@���mO����S@���iO���S@���LmO���S@���@O����S@���O��� S@��� O���S@���eO��� S@��� O���@ S@�����P���S@��� P���� S@��� P���S@��� P���@-S@���@RP����S@���@JP����S@���@jP���`S@���`P����S@����+P���S@���n+P���� S@���$P���� S@��� ,P��� S@���&P���S@���@r,P���`S@���6P��� S@���@ZAP���) S@���f>P���S@���@JOP���S@���LP��� S@���MP���` S@���VP��� S@���@rTP���`y S@���@JWP���HS@���RP���`S@���`|WP���`yS@���`[hP���@S@���xP���aS@���oP���`y S@���@ZqP��� S@���eP����S@����kP���`S@��� XP���� S@���P���@OS@���P���k S@���@JP���S@����qP���S@����P���S@���@rP����e S@���@P��� S@���P���� S@���mP���rS@��� P����S@����P���@? S@����P���j S@���P���S@���P���@XS@���P���S@����P��� R@��� P���sR@���;P���*R@���!Q����S@���v$Q���S@���Q���S@���@bQ��� S@���3Q���J S@���@/Q��� S@���S;Q����S@���f:Q���@S@���@TQ���S@���hQ���@_S@���@rdQ���@S@���2DQ���@S@���-Q���%S@����Q���%S@���@P����]&S@��� !P��� 'S@����Q����)S@���^Q���*S@����Q���@-S@����G2Q���*S@���@Q���0S@���Q���2S@���UQ���4S@����yQ���@ 8S@���yQ���t9S@���bQ���@S@��� kQ���@S@���2Q���@2S@���:Q���@X2S@��� Q���R7S@���@ƾQ���@9S@���@ZQ���9S@���`Q���;S@���Q���@g=S@���VQ���BAS@���`|Q���CS@���]Q���DS@���mQ���`HS@���Q���IS@���*Q���@WKS@���UQ���LS@���@r|Q���@NOS@���@J'Q���@JS@���mP���@LS@���^P���FS@���@bP���HS@����.P���@GIS@���@)P���)KS@���`[P���zLS@���@P���KS@���P���*NS@����7 Q���LS@���`CQ���@?PS@���EQ���@QS@���,Q���WS@���P���@XS@���P���VS@���P���@QS@����P���@PS@��� QP���BQS@��� P���SS@���@P���ZS@���@ZP���[S@���@P���ZS@���P���@ \S@���P����]S@���`ώP���@`cS@����YP���@dS@���EP���@eS@����'P����<gS@���@rP����hS@���@bP���kS@���RP����mS@���P���`jS@���@ZP���hS@����P���dS@���^P���'aS@���Q���:`S@���nQ���cS@��� Q����dS@����,Q���|jS@���24Q����iS@����(Q���dS@���"&Q���aS@���@*Q���`Q`S@���:MQ���@\S@���@͐Q���cS@���@Q���@ eS@���_Q����lS@���_Q����DpS@���@BvQ���@-lS@���ɫQ���[kS@����Q���lS@���5Q����tS@���Q����tS@���Q���`uS@���Q���vS@���@Q���@qS@���@8Q���`pS@���@Q���8rS@����Q��� sS@���Q����vS@���Q���qxS@���2Q��� wS@��� Q����5yS@���2Q���@zS@���@ Q���xS@���@R��� S@���@R����<S@���%R����S@���7R���PS@���@R���S@���BR����S@���@.R����$S@����74R���*S@���@r,R���1S@���*R��� fS@���@b6R����S@���4R���@S@���@j+R���S@����z%R���ךS@���*+R���1S@���@%R���ƝS@���'R��� S@��� X#R���YS@���GQ���S@���}Q���S@���Q����S@���@֬Q���̬S@���߀Q����S@����uQ���7S@���@BVQ���S@���HQ����S@���6Q���@ S@���@2Q����S@���IQ���@xS@����JQ���rS@���EQ���S@���@j'Q���S@���Q���S@��� P���aS@����P����ES@���3P���S@���DP���S@��� P���S@���P���`S@���fP���S@���@rP���@S@���}P���S@���@P����S@���`ϺP���*S@���2P���S@���P���S@���P���IS@���yP���S@��� QyP���3S@���nP���S@����qmP����S@���@kP��� S@���@aP���@hS@���@jcP���jS@���HP���:S@���:IP����S@���@R8P���@S@���4P��� &S@���24P���@S@���8P���zS@����@P���S@���@:P���S@���AP��� S@���<P����S@���@RHP����=S@���@?P����<S@���BP���@GS@���=P���@S@���@jCP����S@���AP���PT@���O��� k T@���: P��� T@���@ P��� T@��� P���T@���VP���`iT@���UP��� T@���!P���`T@���=P���@T@���=RP����T@���*cP����T@���@RP����T@���@RP���@WT@���@ƮP����T@���:P���:T@���@1P���T@����P��� T@���P���@g T@���@cP���T@���P���@%T@��� P����T@���@P����T@���@ZP���7T@���@ձP���P!T@���@խP���#T@���P���$T@���%P����*T@���lP���-T@���@DP���2T@��� ?P���� 6T@���@ZAP���27T@����?P���@G9T@���/P���j:T@���2P���0=T@���0P���@?T@����O���{CT@���tO���@HT@���~O���@GIT@���`rO���`iGT@���@O���Z@T@���eO���0T@���`T^O���1T@���`lO���'=T@���oO����$HT@��� zO���@xJT@����|O���JNT@���O���LT@���N���ZDT@���4rN����JT@���� N���@LT@���@N����RT@���DN���TT@���N����#UT@���wN��� WT@���dN���S^T@��� heN���`T@���@N���lT@���N���1pT@���N����qT@���N���ZtT@���`�N����v|T@���`hM���@xvT@���TM���qT@���aM���nT@���ZM���1lT@���7M���iT@����L���0eT@���L���� bT@���BL���0UT@���9L���@UT@����OL���YT@���`L���@\T@���໋L���A^T@���L���fT@���@M���@xjT@���.M��� pT@���`:M���@vT@���vHM���xT@���`M���@~T@���`ŻM���T@���`KL���T@���`T6L���!T@���@)L���`ŊT@���@!L���|T@��� L���@܎T@���`K����ؐT@���;K���T@���EK���@T@��� K���T@���K���T@���`K���T@���K����T@��� yK���T@���`K����T@���`K���@ܒT@���@9K���@NT@���4 K���HT@���@J����nT@����/J��� T@����J���0T@��� J����v|T@���J����5yT@���J���@nT@���`CJ���`iT@���J���rcT@��� J��� `T@���J���`T@����J���@%cT@���J���@fT@���:J����EkT@���?J���qT@��� &wJ����<wT@����yJ���}T@���J���@ÀT@��� s{J����T@��� aJ���� T@���4*J���@F~T@��� I���yT@��� &I����#mT@���@I���@hT@���H���`gT@���\H����,iT@���`lI���nT@��� ?I����qT@���KI����sT@���`uI���@wT@����ˆI���R{T@���3{I����|T@���H��� wT@���H���PyT@���$H��� {T@���\GI���@T@���K^I���BT@��� heI���@NT@���ӆI���T@���4I���T@��� ̍I����$T@��� fI���T@����H���@6T@���@~H���`QT@���\WH����=T@��� G���!T@���G���T@��� G���@܊T@����G2G���AT@���2F���T@���F���~T@���`F���r{T@���`BF���`qT@���QF����DpT@���`TF��� ~uT@��� aKF���@xT@����`\F���(|T@��� DF���@ |T@���`<F���}T@��� yvF���@WT@���wF���T@���`*3F���sT@���\OF���T@���`CeF��� T@��� hUF���T@���6F���[T@���F���T@���4*E���@T@���<+E���|T@���iE���@T@���E���T@���@E���/T@���`E���1T@���nE���@UT@��� E���ST@���,1F����T@���=:F���T@����F���T@����F���T@��� F���T@���E���T@��� E����T@���`E���T@���4E���T@���`rD���T@����D���֧T@���@RD���@ܢT@���D��� ʞT@����D��� T@��� 8D����T@��� &D���դT@���uD���`ݥT@���D����^T@���D���T@���dD���WT@���D���T@���D���T@��� MD���T@���@D���ۣT@���,D���T@���| D���lT@���@ D���`T@��� C����eT@��� C���ėT@����C���`ݙT@���,C���T@��� C���T@���"C���:T@���D���֣T@��� zC���9T@��� 8C���HT@���`C���T@���`ZD����T@��� 9D���PT@���VF��� fT@���<sF���T@���<{F��� fT@����F���@T@���@5G����ɷT@���@qG����T@���`bG���@˽T@���YG���ZT@���`;G����wT@���$F����^T@����GF����ٽT@���@(F���T@��� `F����T@���5F����ɻT@��� yE���@xT@���E���!T@���`F���T@��� F���2T@���F���T@���F���@ T@����ݎF���@OT@����YZF���T@���tZF���T@���]F���'T@���@)TF���@T@��� 2E���@T@���`E����T@���qE����^T@��� XE���@T@���� D���*T@����YD���T@���`D���T@���D���@-T@���=D����T@��� C���@pT@���@C���@pT@���tC����ET@���sC���@6T@��� UC���T@���`lQC����ɯT@���@FC���@ T@��� =C����T@���,YC��� T@��� scC���@xT@���DdC���kT@���iC���T@���C���/T@��� &C���T@���� uC���T@���B���@pT@���,aC����T@���oNC����5T@���UB���BT@���B���!T@����B���T@���|CC���T@���nC����MT@���:]C����T@���`liC����T@��� _C���@T@���kC���3T@���`TfC��� T@���`B���`T@���`IB���@-T@����C���T@��� B���PT@����OB���`T@���@{B���rT@���B���T@��� '>B���@.T@��� h5B����T@���`XB��� fT@����?B���@ T@���sB���`iT@���$`B����T@���`gB���T@��� VB����]T@��� B����wT@��� A���8T@���\WA���ST@����q=A���T@���d8A���@T@���)A���T@���2$A��� T@���@���T@���e@���T@��� A���@T@��� A����T@���3@���@T@���t@���T@�����@���@T@��� @���)T@����&@���T@���@|#@���ZT@���@ 7>��� &T@���GA=���`T@���`lA=����T@���=����T@��� =���@vT@���<���`QT@���w<���@T@���<���T@���=<���@T@���`f&<��� T@���`p<���@gT@���K<����T@���a;����T@���:���`T@���9��� T@���@9���T@���� :���9T@��� ";���T@���?X=����<T@���@ v>����T@���@A>��� T@��� @���[T@�����@���T@���I��������N��� ('@���VN���y(@�������������QN��� ('@���N���h�(@���N���(@���kN���@g(@���`N���@(@���{N���(@���`)N����(@���`N���'@����MN����(@����N����h(@���N���(@���N����F(@��� N���(@���qN���`(@���@N���`D (@��� QN��� (@���N��� (@����4N��� (@���N��� (@��� lN����4(@���N���{(@���@N���z(@���`RN���X(@��� \N���`x(@���@N���`I(@����N���o(@���@>N���G!(@����$N���#(@����$N���@%(@����vN���'(@���N��� *(@���N���-(@���N����/(@���[N���@1(@����N���3(@���`N���5(@��� \N���8(@����BN���`;(@���N����?(@���@N���A(@���N���D(@���`fN���F(@���`N��� H(@���N���@J(@���N����dL(@����N����N(@���N���Q(@����N���YU(@����N���*X(@���`N��� QZ(@���N���@P\(@���`N���O^(@����=N���h`(@���N����hb(@���`N��� d(@��� N���f(@���kN���`_g(@���N��� i(@���N��� k(@���QN���@m(@���N���o(@���oN���`[q(@���N���r(@���N���@t(@���N���@u(@���(N���`+v(@���N���w(@����MN���0y(@���N���y(@���@N���y(@���WN���*x(@����N���`w(@����N���1w(@���`N���Xw(@���@ N���1w(@���RN���Rv(@���N���@t(@���N���`r(@���fN���p(@���N���`}n(@����N���@l(@���@N���`Di(@���N���@f(@���`VN���?d(@���N���a(@����N��� _(@���N����)\(@����N��� X(@���N���sU(@���� N����R(@���8N���`O(@���`VN���L(@���fN���I(@���(N���`_G(@���N����FE(@���zN���C(@���VN���N@(@���N���=(@���LN���<(@��� (N���=(@��� N����"=(@����N���;(@���N���@8(@����fN���`25(@���HN���`T2(@��� 8N���4/(@���`N���-(@����zN���6+(@���8N��� ((@���N���&(@���$N���`m%(@����N���F#(@����N��� (@��� N���@(@����$N���(@����vN���(@���N���`(@���QN���(@���N���@3(@���=N���(@���N����;(@��� aN���@(@����)N���(@����N���(@����]N��� ~ (@����N��� (@��� N���� (@����N���� (@���`vN���@>(@��� HN��� (@��� N��� ?(@���N���(@���N���` (@���uN��� !'@��� N���'@��� uN���(@��� N���&(@����N��� (@���`N��� n(@���N����F(@���N���(@����N���@(@����zN����o(@���@ N���`'�(@���`N���`'@���QN��� ('@���J���������MN���`f/@���N����|0@����������������N���`f/@���N���: 0@���MN���BU0@���N���\0@���N���I0@����N���`0@���N���`f/@��� ^N���230@���@N����90@���N���@WC0@���@UN���d0@���@xN���`s0@��� N����|0@���N���`z0@����N���@`0@���N���FB0@����ߒN���@?0@��� ^N���230@���K��������W���@}+@��� V���@41@���^����������V���A1@���V���A1@���V���`A1@���V���`1@���V���1@���VV���1@���@ǑV���@41@���@{V���!1@���dV���@1@���@"NV���1@���IV����1@���@#IV���{1@��� :IV���%1@���@"JV���@0@���@KV����y0@��� LV����|#0@����MV���`/@���>V���@/@��� M:V���/@����7V���`/@���2V���t/@���(V��� r/@���@'V���`Ce/@��� #V���W/@���#V����/@����V���`/@���`#V���5/@���n'V���`/@���@&V���@^/@���@V���@/@��� V���3r/@���V��� W/@���V���`CE/@���*V���@3.@���@V���`#@.@���@IV���@%.@���KV���.@���IV���w-@���aNV����q-@���>IV���L-@���IV���=*-@����*SV��� -@���@VV��� ,@����ZYV����@,@���aV���,@���bV���-,@���dV����,@���@eV���`դ,@���kcV���`,@����dV���,@���_V��� {,@����ZiV���Af,@���@oV���*,@���7oV����T,@���vV���q,@���fV���@+@���ņV���+@����V���@}+@���@V���@+@����BV���O+@���V���`R+@����kV���l+@����kV���@; ,@���@[V���;K,@����V���,@���`W����L,@���W����-@���@ W���9--@���@ W���-@���@ W���-@���@ W���@-@���6W���'.@��� W���A.@���@�W���5/@���@V����/@���V���20@���HV����i0@���V���@W0@����|V���@W0@��� V���@30@���V���:0@��� ٙV���`*Z0@���5V���+i0@���=V����z0@���UV���0@���rV���0@����JV���`0@���HV���0@���ڼV��� y0@���V���@.0@��� V��� 0@���@V���@1@����V����-1@���V���A1@���L�� J������?(.��� y @���:!@���U)@���&������ ������@N!@��� y @����, @���@ @��� @���ͫ @���A @���r{ @���@?!@��� @����$!@����d @���`!@���@@����!@���`@���@x!@���r @���:!@���` @���0!@���@< @���@N!@��� y @���`l+���U)@���n*���`G)@���U*���.)@���E#*��� )@���W*���3(@���)���`(@���)���` )@����)��� )@���ʮ)���(@���CD)�����(@���`C%)���(@���n(���`(@���n(���`(@���Ȱ(���O(@���2(���@(@���`'���@d(@���'���(@���`'���(@��� &���(@��� %&����-(@��� &���`(@����)&���(@���p&���@i(@���&���G(@���&��� '@���`N&����(@����/&���j(@����%���f(@���N%��� z'@���@%���r;(@���@$���^(@����$��� r(@���΋$���;k(@���P#���`=(@���#���\(@����RX#���"(@���U#���`lA(@���"���I(@����ް"���(@���/"��� (@���@;"���h(@����u"���(@���c"����-)@����"���(@���!����ô(@���!��� r(@����!���`)[(@����!���(@���@ؗ!��� (@���@Щ!��� R'@���g!����ZQ'@���.7!����&@���@~!��� &@����A!���`L&@����$ ��� =&@���� ���&@���� ��� B&@��� ���Z&@��� ���` &@���@!���`s&@����]!���%@���@W!���%@��� 4!���`%@����!���V%@���O ���&&@���ij ����L&@���V ���`&@��� ���@P%@���@]n ���$@���> ���@$@���@0 ���w$@������@$@��� !���|$@���@%���T$@��� ���2$@���@DD ���f$@���4R ���@i#@����5 ����#@���N; ���)#@���F ���"@���O ���"@��� ����f"@���r���"@����[p���#"@��� ����o"@���@"���]"@���� ���@3"@������B%"@���z��� "@���`%����!@���W���*!@���@d����ш!@���-���!@���`���@=!@���`���o @������ @��� \����- @���L���� @���@}R����% @�������N @���@���@ @����e ���J @����| ���@ @���5q ����x @��� ����# @����C% ���S @���V���!b @���`m���@! @������� @��� ���Z @���_ ���]@���@l ����.@���_ ���`ty@���� ���`O=@���!���`ty@���@L!���C@���QW!����b@���@4r!���@I@��� j!���@���˭!���{3@����!���`@����s!���&@���@8"���@����2"����@���ge"���?@���h"���`@���0"���`]@���@"���@����R"���2@���"���bt@���"���@0@����ݵ"��� p@����J"����O@����"��� @���N"��� @���@"���D @���@"���Y @���#���L| @���� "���@Y @���)#��� @���O#���@ @���GA#����> @���@3S#���s @���ic#��� @���@i#��� @���##���#!@���@#��� @���#���@ @����/$��� @��� $��� @���$���j!@���S$����!@���n$��� @���@u$����7 @���@$����p @���$����µ @���@P%���@ܞ @���M%���� @��� g%���/ @���L%��� @���-%����$!@���$�%���?!@���7$���J^!@���%���!@���0%���d!@���z$%���/"@���`w%���@("@���1t%���@\"@����7P%��� "@��� %%���"@���?%���"@���n%���Q#@���m&���#@���='���#@���b'���#@���C(���#@���`x(���#@���)���t#@���` )���k#@���*)���@S#@����h)���@_"@���|)���@"@����7)����"@��� D)���z"@���`r)���"@���)���x"@����*���� 5"@���1*����w"@�����`*���,"@���˘*����"@���@Ӧ*���%"@���`I*���7O"@���Qy*���J^"@���`*����VT"@��� h*���^"@���*����"@���@*���͋"@���W*���"@���@*���"@���Q*���0"@����/+���@"@��� ,+���#@����`,+���@"#@���n+���!#@���`s+���@#@���+���#@���Q+���#@���K+���#@���@Z+���|#@���Qy+����n#@���؂+���|#@��� g+���#@���+����#@���@^+��� #@���@G",���$@���x,���C$$@���`r+���d'$@��� ,���3$@���`O,���@^M$@����`,,����� $@����D,���$@���M\,���($@���`],��� y5$@���J,���`fF$@��� F,���Z$@���q,��� 4$@���@^,���@N$@���@,���dg$@���,���s$@���`,����)|$@����-���@P$@���@-���E%@���A-���`}$@���@3S-���%@���j-���`%@����w7-��� |%@��� g-���@G%@���n-���e%@��� 1U-���I%@���`-����ic%@����/-���ـ%@���@z-���@J%@���&-���C%@���@-����#%@���`-���%@���`I`-��� &@����-���`%@��� -���`)%@���@-��� %@���@A-���&@����w-���9 &@���-���&%@���2-���%@���� -���%@���=-���@%@��� .���%@���?(.���1%@���@%.���%@���.���%@���` .���%@���@-��� Be&@���~-��� B&@���a-���@j'@���-���A'@���,���['@����#,���H'@��� +��� V'@���`+���}'@���@P+���m'@���U+���`�_'@���`k+���7n'@���i+���@�(@���+���@I(@��� +��� tN(@���+���``k(@��� +���}(@���m+����׃(@���`sc+���(@���S+��� (@���I+���X(@���m+���E#)@���`l+���U)@���M���������0��� %@���I+���^)@���t�����������0��� N(@���v0���`(@���50���(@���_/����)(@��� .���@')@����o.���^)@��� N+��� sZ)@���`l+���U)@���m+���E#)@���I+���X(@���S+��� (@���`sc+���(@���m+����׃(@��� +���}(@���+���``k(@��� +��� tN(@���+���@I(@���i+���@�(@���`k+���7n'@���U+���`�_'@���@P+���m'@���`+���}'@��� +��� V'@����#,���H'@���,���['@���-���A'@���a-���@j'@���~-��� B&@���@-��� Be&@���` .���%@���@..��� %@��� 15.����%@���O:.����%@���.����X&@����f.��� Vt&@��� w.��� %@���`.��� \&@���k.���\.&@���p.���`H&@���`r|.���`�?&@���.���K&@���t.����/&@���.��� H&@���.���&@���.���`&@���Q.���&@���`.��� &@����.���7&@���/���&@���.���&@���` .���'@���`.���'@���@Ӧ.���+'@���M|.����$'@���7.���='@���`g.���`}1'@��� ^.���F'@���@E.��� $'@����.���`#'@���.���7'@���[0.���:'@���`B.���`S'@���EC.���`g'@���`n.���X'@��� %_.����Zq'@��� 1u.���`l'@��� .���U'@���`.���l'@���.���`RW'@��� –.���J'@���`5.���@\'@���@p.���\.'@��� +.���@2'@���`.�����`'@���*.����O'@���`O.���i'@���Q/���]'@���`r/���zt'@���l.���`'@���n_.���`'@����(.���G'@���$ .���@'@���-.���T'@���K.����'@���-���K~'@���-���'@���@.��� '@���`".���'@��� .���'@���*-���'@���".����}'@���@+.����w'@�����`.���@'@����s.���'@���.���'@���.���'@��� /���`'@���@A/���}'@��� +/���@'@���@/��� '@���/���C'@���@/���'@���@^/���w'@���/���'@���~/���'@���@/���'@���O/���`(@��� /���@'@���@/����'@���@"0���h'@���yU0���K'@���[0���3(@���0���=(@����X0���hd(@���Uu0���W(@����0��� N(@���N�� ������N���?���F<L���3!@�������������M����k @���`}M���@0u @����M���̌ @���@M���3!@���M����!@���M���@F @���@M���A @���M���s @��� [M���@ @����M��� @���M��� @���M���@Q @���zM���2s@���SM���d@���`;M���l @���@L=M��� @���FM���@���%OM���@X2@���>QM���`@���`wWM���@@���VLM���@@���K>M���I@��� 6M���v@���)M���@Ô@���wL��� ].@���`~L���`@���`}L����U@���`L���K]@���@L���(@���L����"@���`pL���@-@���गL����^@����ßL��� x@���L��� @@���L��� @���`lL���@���QL����@���`<L���@����dL���@����LL���@6@���L��� @��� L���`@���L���@���@L���A@���@L���� @���`CL���@����L���1@���WL���n@���L���<@���@"L���&@���, M���ߛ@��� 1M���@0@����L���`@���L����Q @���L��� @���L���Z @���^L���* @���4L���� @���`TL���v @���L���@q @���L���@?H@���`L���@��� [L����UU@���`L��� @���L���m@���XL���>7�@���`eGL����,�@���F<L���@?��� GL���@ t?��� mPL��� ?��� UL���&?��� U}L���?���`ʆL��� >?���ࣈL���/�@��� ߌL���@0�@���`TL���@'?���`ʦL���ó?��� 1L����I?��� L���>?���?L���;+?���vL���d?���L���a?���L���ׂ?���L����I?��� M���2?��� [ M��� ?���'M���@?���z,M���?���@M��� y5?���`M<M���@ ?���AM���H?���XM���R?���`\M����d?����SgM���?���nM���);?���vM���,?���M���@L?���`˝M���`?���M���?���FM���?���`M����W?���@M��� Ί?���?M���,?��� M���:L@����M����@���@M���i@���` M���J@��� M���@K @���@#M��� @��� M���ׂ @����ZM��� @����kM���@���M���@���bM���@���FM���;@���`M���@@���`<M���<@��� M���`8@���M���@@���N����@����|N���K@���`NN���1@���M���I_@����N���`@����CN���S@���N����-@����d8N���@���^UN���`@���]N���3@���N���@���ຣN���\D@���` N���@���xN���@����N��� @���` N���P@���N���@���@4N���:L@���N���@���rN���@ @���htN���<@���E[N���@?@��� D4N���<@���/N���@@����k*N���@���#N����3s@���-N��� ij@���`e?N���t@���@DN���@~@��� ON���@���5QN���@?@���@EKN���C@���RN��� %@���@vXN���@��� \N���@���@XN��� C@���PN���`g@����DN��� y5@���+N���Xb@���`N���@���N���0 @���M����k @���O��"������R���@2@���HQ����3@���a�������������@24R���2@���@MR���2@����RR���`2@����bNR���2@���6R���2@����J3R���@^2@���@24R���2@���@Q���`>3@��� MQ���3@���WQ����vX3@���Q����T3@���Q���`=3@���HQ���>83@���iQ���@P3@����Q���2@���Q���`02@���pQ����2@��� }Q���`R2@����Q���`2@���@"Q����ɟ2@��� uQ���̛2@����Q���ފ2@����Q���`*z2@����BQ����#q2@���@vQ����}R2@��� :Q����32@���Q����v2@���_Q���� 2@���@Q��� .2@����rR���@^=2@���@%R���-2@��� 0R���,2@�����4R����|#2@���@"VR���>2@���v\R��� A2@����fR���62@���$lR���<2@���@"nR���@422@����rtR���@ &2@���uR���2@���rR��� 2@���isR���`/2@����rxR���@2@���FR���`>2@���R���oN2@���@*R���J2@���R����h2@����!R���2@���R��� 2@����R���`2@���@pR���`2@����fR���@ԕ2@���dR���i2@���&fR���q2@��� mR���2@���@"jR���m2@����[R��� V2@���@C9R��� m2@���@1R��� o2@���.R���l2@����r(R���@^2@����bR����2@���iR���2@���@R���`*2@���@R���``2@���#R���2@���_4R���; 3@��� }2R���3@����b.R���?3@���^-R���l 3@����!3R��� 73@���1R���H3@����-R���J3@����Q1R���gU3@����/R���7_3@���i+R���@Qh3@���@,R���s3@���0R��� q3@���?R���t3@���YR���3@���@u]R���`ݭ3@���]R����3@���@ZR���3@���@MR���`03@���`SGR��� 3@���o6R����3@���,R���q3@��� R���3@���-R���3@���� R����3@���g R���@ۿ3@���NQ��� ҷ3@����JQ���@Ӷ3@���@"Q���`ݭ3@���Q���`3@���Q���3@���@Q���`>3@���P��������@VV���)@��� `T���`00@�������������V��� W/@��� V���3r/@���O V���&^/@���V�����`/@���U���+/@���WU���ע/@���@U���t/@���VU��� y/@���@;U���`/@���=U����ݞ/@���@"U���/@���U���W/@���`U���@3/@����bU���ׂ/@���U��� 1/@���@U���`/@���U���=/@���EU���@;/@���@zU���@/@���yU���/@���U���C0@���`S{U���`00@���mU���3/@���jU���@j/@���ZU���@d/@���GU���/@���yAU���`/@���@<U���@P/@���,U���/@���@ 'U���/@���@;(U���@j/@���&U���@^/@���U���`/@��� U���/@���@U���/@���U���K/@���MT���.@���T���� /@����bU���,/@���# U���@/@���w U��� y.@����c U���5/@���@U���;.@���@U���1.@���U���`.@���U���.@���@T��� s.@���@T���.@���@LT���` .@����T��� N{.@��� T���h.@����T���.@����U���?.@���$�U��� .@���@T���`.@��� T���3r.@���`4T���`ff.@���@T���.@���T����7.@���@T����f.@���@T���w.@���T���c.@���UT���Q.@���T���@i.@���@mT���7.@����0T���r.@���@:T��� .@����0T���@3.@���@T���~q.@���T���2.@����{T���b .@��� `T���-@����ST���-@���T��� .@���`T���r-@����rT��� .@���T���A-@���@T���-@���@T���-@����T���@P-@��� T���G-@���@U���`}-@����U���/u-@��� U���`n-@���.U���@ӆ-@���@#U����L}-@���@U���zT-@����U���`X-@����U���`lA-@���+U���`�_-@���@d4U���ҧ-@���@AU���f-@��� BU���@%-@����EU���`/-@���`GU���""-@���@KU����,@���@IU���7,@���wKU���`l,@����)TU���,@����XU���=i,@���@]U���`R7,@����aU���M,@���nU��� b+@���`%oU���?+@���@sU���`+@����vU��� +@���/zU���Z+@���pU���,@���U���!,@���@U���,@���@U���+@���� U���@+@���U��� +@���U���•+@���@U���`l+@���ܰU���@k+@���U��� +@���U���*@��� U��� *@���U���*@���@U���*@���U��� *@����9U���r{*@���U���U*@��� U���$�*@���5U���)@���5U��� *@����U����Z*@���U���`$*@���nU���`}1*@���U����/7*@���U��� *@����U���*@����bU���`*@���QU���۾*@���~U���@3*@���@"U���*@���U���Ʊ*@���U���*@���rU���@A*@���U���@*@���WU���*@���`\U����*@��� U���*@���U���*@��� "U���� +@���@U���ע+@���U��� f+@����;U��� +@���@U���@+@����r�V���@'+@����V����q+@����V����+@��� V����+@���V���+@���NV���`)+@���M V���w+@����U*V����<,@���@+.V���1,@���@1V��� F,@���3V���@/,@���55V��� s:,@���&:V���j,@���@=V���l`,@���aBV���``,@����HV���,@���@VV��� ,@����*SV��� -@���IV���=*-@���>IV���L-@���aNV����q-@���IV���w-@���KV���.@���@IV���@%.@���@V���`#@.@���*V���@3.@���V���`CE/@���V��� W/@���Q����������t\@���`$6@����)\@��� 6@��� ����������\@���ୂ6@���@\@���@ۂ6@����(\@���6@���@O\@��� 6@���ז\@��� 6@���\@��� %6@��� \@����r6@����)\@���`$6@���@gx\@���`$6@����t\@���76@���`w\@���u6@���@3w\@����v6@���\@���ୂ6@���R�� ������P0@��� SF@���6@���IH@�������������`&6@���`4H@��� yE6@��� 3H@����B6@���`/.H@���Q6@���J.H@���@P6@���)H@���!b6@���@@H@���@6@���dH@���֞6@���  H@���@6@���H@���H6@���@ H@���6@����H@���`6@���`YH@���6@���G@��� U6@��� G@���A6@��� G@���6@��� aG@���q6@���BG@���k6@��� 7G@��� Q6@����wG@���6@���G@���46@���`G@����)5@����^G@���n5@��� G@���@Ӧ5@���DG@���@!5@���G@���5@����rG@���5p5@���`SG@����S5@���[OG@��� B5@���S>G@���@K5@����G9G@���I5@���� 5G@���`|25@���`2G@���/5@��� =*G@���` 5@���G@���h4@���{#G@���@4@���G@���@W4@���}G@���4@���`G@���U4@���:G@��� B4@��� G@���@J4@����^G@����3@���cG@���@3@��� fG@���3@���8G@����?3@��� %F@���'3@���\F@���3@���`G@���y3@���|G@��� 3@���`F@���`2@���@F@���2@���}F@��� 2@���F@���2@���#F@���72@���F@���jG2@��� SF@���l02@���@hF@��� 2@���!F@��� 1@���`F@����1@���cF@���m1@���3F@���[1@���@F@���R1@��� F@���@51@��� %G@���l1@���sG@���l0@���G@���Z0@���(G@���0@���<G@���Cd0@���tQG@���9m0@���XG@��� ~Q0@���cG@���Y0@���kG@���H0@���`oG@���P0@���`lG@����X0@���`GG@���u0@���`ăG@��� V0@���ȇG@��� w0@���1G@���0@����5G@���B0@���ߓG@����t0@���ΒG@���Hp0@���ZG@���`}0@���`֣G@���@Ws0@��� G@���B0@���`G@���e0@���`G@����0@���`G@���o0@���� G@���@Ws0@���`YG@���@Q0@���{G@���J0@���G@����ɯ0@��� 7G@���J0@��� =G@���0@���G@���0@���`G@���g1@��� G@���`1@���@G@���` 1@���G@���@.1@��� G@���1@���G@��� .1@���;�H@���l@1@���2H@���s1@���@G@���1@���`G@���`fV2@���@G@�����2@���`G@���r2@���G@��� V2@���ZG@��� 12@��� aG@���2@��� 7G@����2@���H@���Q�3@���H@����y3@���@i H@���3@���`)H@���3@���H@���`)3@��� H@���4@��� H@��� x&4@���P!H@���J4@���` H@���@^]4@��� %'H@���4@���DH@���@ 4@���IH@����$ 5@��� ?H@���`Yq5@��� IH@���95@����?H@���Ǡ5@���9H@���@5@���,H@���5@����.H@���`6@��� H0H@���`&6@���`4H@���S���������׃8���O@����*���3P@������������`Ya5���@/}P@���wG5���@GyP@���`I5���uP@����Y5����rP@���y5���`pP@���V5���@WoP@���$p5���lP@���@5���lP@���5���pP@���U5���@qP@��� +5���RkP@����5���iP@��� h5����vhP@���@o5���eP@���y5���cP@���UU5��� ffP@���L5���BeP@���`M5���aP@���z5���l\P@����T65���[P@���`$5����<OP@���P5��� fJP@���5����vLP@���5���ARP@���5����UP@��� 5��� [P@���`5���0]P@���4���`UP@���'4���]P@���"4���dP@���`4����DlP@���H4���IkP@���`C4����cP@���4���@peP@���Ǒ4���dP@����)4����`P@��� 9~4���2_P@����Yr4���_P@��� 9n4���bP@���4����dP@���,i4���@eP@��� 1e4���aP@��� R4���iP@���WC4���@OnP@���P4���sP@���%O4��� vP@���`kr4���P@���k4��� ~P@���Q4���P@���@3���@yP@���z3���RwP@���ԥ3���cpP@��� 83���nP@����3���pP@����s3���snP@���@e3���ArP@���d3���uP@���W3���@|P@���k3��� P@����t3��� P@���?X3����^P@��� 93����DP@���3���@ӆP@���3����=P@���g2����P@��� 2���P@���@2���KP@���2���̌P@���2���:P@��� 92���@P@��� ز2����P@���H2���zP@���@2���P@����Z2����P@���g2���@ˁP@���O2���A~P@���`J2���JzP@��� 9.2���3rP@���@4"2���mP@���2����,iP@���`2���kP@���2���`pP@���2����uP@��� 1%2���{P@���42����{P@���P2����P@���`CU2����P@���@52���P@���"1���@.P@���I1��� |P@����L1���@F~P@����7p1���P@���@i1���K}P@���[1���P@����YB1���(P@���yE1���@FP@��� 1���P@��� 0���ߋP@���0���P@���@c0����^P@���@j0���jP@���H0���3P@���`C0���P@���m0���'P@����|0���rP@���@j0����UP@����ד0��� fP@��� 90���@ P@���30���HP@���-0���3P@����/���ߟP@���$/����P@��� b/���`iP@���I_/���bP@���΋/���jP@���$@/���SP@���.���@ P@���.����#P@���@.����<P@���7.���@-P@���$.��� P@���E-���@?P@���t-���P@����.���P@���n-���P@���2-���@܊P@����`L.���P@���`N.���@XP@��� !.��� &P@���@.���zP@��� -����فP@���`/v-���:P@����S-��� ʂP@���`/6-���P}P@����=K-���@xP@����-���pP@����-���*nP@���,���rP@���`,���`rP@���,����mP@��� ,���jP@���-���bP@���@,����wcP@���@ ,���hP@���{,���!jP@���$�,���SfP@���`+���@.gP@��� %+���aP@���Q+���bP@���,9+���`P@����Y+���WP@���Ϊ+����EWP@���2t+���@gUP@���p}+���SP@���+���QP@���@e+����eSP@��� #+���QP@����fG+���� NP@���,���ZLP@���>+���`QLP@���T+����IP@���^+���@`GP@�����@+���/FP@���@+���jJP@���A+���8JP@����*���DP@���r;+���?P@���`+���7?P@���`C,���DP@���,���CP@���@2,���@AP@���7o,���@gAP@���Q+����@P@���j+��� ;P@���{+��� f:P@��� +,���;P@���j+����9P@����+����v8P@���҇+��� 7P@����f+���4P@���+���5P@���@+���c4P@���Ϊ+���@.3P@��� \,����2P@��� ,���z0P@���@A,���|.P@���`r|,���,P@���,���0P@���,���@2P@����,����+P@���Ί,��� +P@����ɏ,����U)P@���@,����#)P@��� \,����$(P@����,����&P@���p-����M$P@���@p,���`"P@���Ȱ,����&P@���2-���@P@��� ~-���P@��� "-����]P@����fg-���{P@���`-���@-P@���E-���P@���-���RP@����-���@NP@����-���@pP@����.����vP@��� 1U.���P@���q.���@P@���΋.���@P@���@.����P@���b.����nP@���@p.����<P@���@.���@P@���``k/��� P@���r/��� P@���`O/���P@����0&0���P@���`q0���O@���-0��� O@���0���O@���0����O@���P0���O@����0���`qO@���0���O@���w0��� gO@���h1����O@���q0����O@���@ڐ1���bO@���H1���mO@���w1���O@���1���`O@���`1���O@��� 91����O@���M1����O@����Y1���O@���x1���O@���r1��� yO@���1���O@���`*2��� DO@���Q82���(O@���-2���O@���`N2���O@��� C2���O@��� 92���O@��� 3��� O@���@3���O@���+4��� O@���V4���O@���@4r4��� yO@���4����O@���@o4���`O@���@4���`O@���@[~4���`uO@���O4��� gO@���`q4��� DO@���f4���`YO@���@4����$O@���4���`O@���`4���@FO@���@4���`AO@���@;4���O@���4���*O@���`4���`AO@���4���O@���,5���O@���15���`O@���@ 5���`HO@���15���3O@���L5���O@���45���kO@���`]5����O@���ģ5���PO@���E5���RO@���QH6���O@��� 6���`O@��� ز6��� gO@���6���O@���6���`YO@���t6���O@����й6���P@���H6���bP@���6���P@����)6���'O@����5����DP@����) 6����=P@���5��� P@���`5���JP@���r5���P@���� 6��� P@���&5���� P@����S5���I P@���`f5��� P@���5���P@���`55���P@���Dt5���9P@���5���@P@���@5����P@��� 6���P@����6���P@���5���1P@��� 6����^P@���5���@ P@����׳5����&P@���5���@p)P@���5���**P@���5���!P@���`e6���Y!P@��� 6��� P@���x6���@P@���$@6���P@��� 9>6���@_$P@���wW6���@`#P@���`\6��� f&P@���@p6���A*P@��� R6���`+P@���06����.P@���`eg6��� *P@���hd6���q,P@���R6���/P@����S6���0P@���p6���1P@���Ws6���3P@���x6���b1P@���@6����2P@���6���`2P@���!7���3P@���J7���@4P@���Ȑ7����4P@���7���7/P@���`7���/P@����8����8P@���y7���@W;P@���`7����9P@���HP7���<P@���@jC7���`;P@��� 97���@_<P@���@:=7����e?P@���@07����AP@���g7����V@P@��� )7���@<P@����)7����:P@���7����^=P@��� ز6���CP@���`6���?P@����ד6���s>P@���$6����@P@����6���@CP@��� 5��� CP@���Q5���`QDP@���@5����JP@���5���LP@��� 5����MP@���5���HP@���"6���FP@��� 6���@KP@���@q6����OP@��� 16���TP@���5����[P@���6���aP@���`-6���`Q\P@���G6���@-\P@����Yb6����^P@���`]6���@6`P@���p-6���AbP@���@6����fP@���WS6���abP@���`~6����D`P@���6����wgP@���>6���dP@���6���@aP@���6���aP@����6��� >eP@��� 6���gP@���@j6���@ hP@���Q6���`P@��� 6���bP@���6���eP@����6����<gP@����)6���keP@���6����$dP@����|6����fP@���7���bP@���x&7���cP@���,)7���@eP@����Y27���cP@���17����D`P@���:7���^P@���7���]P@��� 7���ZP@���Q7���@YP@������8���q\P@���` 8���*^P@���gU8���_P@����Y8���R_P@����׃8���`P@���H`8���cP@���`CU8���`QhP@���Q(8����fP@���h7���'aP@���7����bP@���W8���fP@���g8���kiP@���7���fP@���H 8����qP@���8����sP@���@37���IkP@���7���iP@����܏7���`fP@����w7���hP@���L7���jP@���x7���lP@���7��� fnP@���@;7���@pqP@���7���@ pP@���@]7���qP@���`7����<wP@���7���@yP@����Y7���zP@���P7���`vP@����7���}P@���7��� P@���7����P@���ɯ7���@P@���7���P@����7���@P@���@7���P@���d7���P@����7��� ڈP@���y7���*P@���`_7���HP@���h$7��� ڈP@���7���ބP@��� 7���@ӆP@���`<6���P@���6���tP@���6���@P@��� 96���`P@���v6���9P@���6���a~P@���H6���@P@���h6���azP@����6���/~P@���`6���`P@���&6���@P@���Ǒ6���J~P@���`6���RwP@���P6����~P@���gu6����D|P@���n6���xP@���w6���buP@���@o6����uP@���[6���`zP@��� y6���`iP@���"b6���υP@���`~6���@P@���@6���P@���'6���@P@���`k6���P@���҇6��� P@���K^6����,P@���@6���@gP@���6����<P@���W6����P@��� 6���@P@����)6���@P@���I6���͓P@��� 6���P@���H6���P@���g%7���P@���@07���P@���` 7����EP@��� 7���P@���!7���@WP@��� 7���P@���6���P@���G6����DP@���F6���@P@���s6���@ӚP@���`n6���P@���@dh6���9P@���[6����#P@��� V46���@pP@��� a;6���P@���5����wP@��� 95���`QP@���`5����P@���`5���P@���`5����DP@����*5���KP@��� 85���*P@���`5���'P@���̌5���P@���ł5���P@���%5���@܂P@���5���9P@���Dd5���P@���@3S5���P@����YR5���P@���5���|P@���`Ya5���@/}P@���T��)������`Q@���@@���`9YX@���8A@���-���������$���,��������/1W@���\(@���Z0W@����&(@���0W@����(@���.W@���@'@���@/W@���'@���:0W@���&'@����1W@���'@���2W@����Z'@���0W@���j'@���@W+W@���`M'@���+W@���+9'@����.W@���\'@���l0W@���bI'@���.W@���'@���)+W@���'@���r'W@���7'@���@p)W@���G'@���@ $W@���@^m'@���#W@��� '@���$W@���'@���`'W@���Q'@���'W@��� '@����(W@����H(@���K-W@���w(@���� .W@���QX(@���/1W@���\(@���@guW@���@@���`sW@���@@���pW@���@���kW@���@x@���PiW@���`8@���jW@���@����esW@����~@���wW@����@���r{W@���3@���@guW@���@@��� W@���@; %@��� W@��� %@���W@��� ˍ%@����eW@���%@����!W@���%@����#W@��� ܍%@���`#W@��� 1U%@��� W@���@; %@���5uS@���@A@����-|S@���`6A@����=~S@��� ~A@���@ÈS@���A@���@S@���A@���zS@���KA@���լS@��� A@���@ͳS@���@A@���@ͻS@��� =A@���S@���8A@����S@��� NA@���BS@���@A@����-S@���~A@���SS@���@pA@���S@���A@���S@���A@��� S@��� ,A@���cS@��� NA@���{S@���A@����S@��� A@���S@���CA@����gT@���`A@���T@���A@���T@���A@��� T@���`A@���;T@���dA@��� T@���lA@���\T@���A@���T@����A@���T@���nA@���*T@��� A@���@T@���ǘA@��� 6 T@��� A@��� T@���jrA@���T@���8^A@���@T@���UTA@���S@���`TA@���S@���IA@���S@���FA@���AS@���BA@���S@���;A@����DS@���`8A@���S@����4A@���S@���d7A@���S@���4A@���S@���A@���S@���ZA@���kS@���A@���sS@���*A@���S@���@A@���*S@���1@@����S@��� @@��� >S@��� @@���S@���#@@����S@���@@���JS@���@@@���S@���N@@����S@���Ǩ@@���@S@���@ä@@����S@���@@��� WS@��� H@@���S@���@@@���@S@���`}@@���`S@���s@@���S@���m@@���S@����f@@����S@���`_@@���@ S@����V@@���S@��� F@@���S@���I?@@���:S@���A@@���@pS@���� >@@���@XS@���,0@@��� S@���`.@@���S@���K=@@���kS@���O@@���S@���Q@@����S@���I@@���S@����vH@@����US@���E@@���S@��� x&@@��� fS@���8@@���@ܢS@���@@���S@���@@��� >S@��� y?@����_S@���?@���S@���[?@���@ԵS@����?@���S@��� &?@���|S@���?@��� fS@����{?@���S@���u?@���S@���@P?@���@_S@���bI?@����5S@����L?@���@HS@���@(\?@���S@���@WS?@���0S@���@Pi?@���S@���lp?@����S@���@W?@���@`S@���@>?@���S@���@>@���`S@���]>@���8S@���@>@���bT@���>@���T@���[>@���@hT@���@κ>@��� T@���>@���T@���7>@��� T@��� >@��� T@���>@���|"T@���v>@���|&T@����y>@���AT@���@g4>@���`;T@���n.>@���`9T@���7>@����6T@���,>@���8T@���$>@���T@���=@���@T@���`=@���T@���@=@����=T@���;=@���@rT@��� p=@���T@���R=@���T@���@O=@���jT@���4=@���[T@���@6=@���T@���A&=@��� T@��� =@���T@���<@���T@���<@���@T@���@ <@���T@���`|<@���@T@����#<@����-T@���@<@��� T@����#<@���Z T@���`<@���z$T@���I<@���05T@���`Y<@����F:T@���` u<@���@LT@���@^<@���zTT@���G!<@��� XT@��� ,<@���^T@���@<@���w^T@��� U<@����VxT@���r;@���T@����;@���T@���r;@����%T@���;@���ެT@���@ ;@���@T@���`Y;@���IT@���r;@���T@���W;@���'T@���eV;@���@T@���e;@���@T@���y;@���@T@���x;@���T@��� +Z;@��� 6T@���@]^;@���KT@����pm;@���T@���s;@���U@���q;@���SU@���;@���@Q U@����y;@��� U@���ic;@����&U@���`W;@����w+U@���:<;@���+U@���` $;@���`9)U@���@;@���@0U@���;@��� ;U@���`:@���SBU@���:@���@JU@���:@���@qLU@���:@���KU@���:@���MU@��� V:@����gUU@���^:@����gU@���:@���wnU@���9:@����nU@����M:@����sU@���<:@����vU@���@:@����U@���:@���`9U@���:@��� ڔU@���9:@���sU@���k:@���U@���[:@���U@���d:@���@rU@����T:@���U@����i:@���U@���Y:@���U@���`*j:@���U@���@o:@���@U@����#a:@����U@���r:@���@6�V@���^:@����V@���@]n:@���U V@���;:@��� V@���:@���U@���<;@����V@���`S6;@����DV@���@o;@���V@���:|;@���� V@���d;@���` V@��� ;;@���`V@���;@���V@��� ;@��� /"V@����w<@����%'V@���<@���4V@���1<@����h8V@���`;@���1V@����p};@���!2V@����$p;@���:V@���/R;@����9V@���?H;@���@3V@���@;@���� 0V@���%;@���5V@���@;@����7V@���;@���7V@���@z:@����:V@���:@��� GV@���C:@���!NV@���:@��� WV@���@(:@���hV@���g:@���@gV@���:@����uV@���:@���[V@���`_:@���'V@���@:@���@V@���:@���V@���`R:@���`V@����0:@���`V@���@.:@���@V@���@:@���V@���:@����V@���:@���@V@���:@���@V@���:@���}V@���@:@���V@���@:@���V@���`:@����V@���:@���zW@��� :@����.W@���:@����UW@���@;@����W@���@;@�����W@���`+;@���RW@��� ,I;@�����W@����x;@���V@���j;@���V@����t;@����hV@���@P;@����FV@���`;@���sV@���@;@��� 6V@���@;@����V@���a;@���@?W@���@;@���lW@���;@���`W@���@;@���W@���`_;@���tW@����M;@���W@���@-;@���@HW@���;@����,W@���;@���@.W@���@P <@���`a*W@����$<@���@+W@��� &<@���[3W@����3<@���@4W@���-<@���GW@���7_<@���JW@���r<@���nNW@���@ڠ<@���`cW@���`�<@���;oW@���j<@����%W@����L<@���3W@���@Q<@���W@���<@���AW@���$=@��� &W@��� H=@���pW@����S=@����W@��� G=@���;W@���*=@���W@���(=@���@OW@���=@���W@���r =@���W@��� =@���W@���@{=@���W@���` $=@����W@����}"=@���W@����>=@���@X@���@.w=@��� X@���`^=@����X@���A=@���X@��� ==@���2X@���aJ=@���KX@���`YA=@����X@���`.=@����X@���B=@���� X@����<@��� X@��� ~<@���  X@����T<@���@X@���@<@���X@���Q=@����M X@���=@���*"X@��� y<@����%'X@���<@���r'X@���@<@���X@���`5<@����X@��� <@���X@���<@���@X@���`_|<@���X@��� Oj<@����X@���Y<@���@%X@��� w<@���@i/X@���@'m<@���`1X@����$`<@���`?X@���` U<@���`FX@���a<@����NX@���`YQ<@���SX@���`=<@����_VX@����9<@���:TX@���@<@���`9YX@���<@����WX@���;@����MTX@���@;@����%SX@���@;@��� OX@���@Q;@���@P9X@��� ;@���B=X@���@Xb;@���*JX@����|#;@��� >IX@���`;@���{?X@����}";@��� 8X@���-;@��� 7X@���@5;@���8X@���`5A;@���0X@���[;@��� 'X@���];@���!X@��� NK;@���l X@��� UE;@���JX@����G1;@����W@��� ;@���W@���:@���W@���1:@����W@��� 1:@��� W@����F:@��� >W@���`:@���W@���@.:@���YW@���` :@���:W@���:@��� ~W@���`:@���@_W@���=Y:@���9W@���a::@���[W@���!:@���W@��� �:@���`SW@���9@���@W@���H9@���:W@���`R9@���W@���`h9@���@W@����>9@����W@��� 09@����W@���"9@���W@���`9@���AW@���@8@���wW@���y8@���W@���`8@���W@���@z8@����W@��� %_8@����W@��� :8@���@ԉW@���7@��� 6W@���7@���@XW@����7@����hW@��� V8@���`aW@���@7@���@^W@���`7@���YW@���@8@��� NWW@����S8@���UW@���8@���TW@��� N7@��� XW@���7@���tYW@����v7@����YW@���y7@���jVW@���7@����RW@����F7@���IOW@���F7@���`9MW@����7@���kIW@��� 7@���GW@���`7@���`9IW@���6@���@OFW@���6@���`GW@���6@����KW@���`m6@���:LW@���?6@���@IW@���<6@����vJW@���16@���`CW@���@56@����BW@���`(6@���c@W@���@�6@���`?W@��� 5@����<W@����w6@���@9W@��� 5@���4W@���`6@���@-W@���(6@��� ,W@���&6@����+W@���6@���{&W@���o5@���#W@���@W#6@���&W@���@&6@��� W@����Ѹ6@���@W@���6@���kW@��� s6@��� >W@����6@���@OW@���>97@���W@���`H7@��� W@���7@���|W@���@47@����$W@��� 7@���@W@���7@��� > W@���`7@���) W@���|7@���@W@���`07@���`Q�W@����7@����V@���7@����V@���D7@���@V@���z7@����V@���i7@���V@���A7@���@V@���17@���V@���7@����EV@���k6@����V@����7@���@V@���%7@���DV@���C7@���"V@���iC7@���@(V@����47@���@V@���7@��� V@���7@���V@���_7@��� /V@���@.7@���V@���t7@���V@����7@���V@���`8@��� V@���8@���V@����M8@���@V@���@.8@���lV@���8@���V@���b98@���V@����&8@����VV@���`(8@����V@���9=8@���@V@���a:8@���*V@���n.8@���@V@���@-(8@���`V@���F8@���@V@����S8@���`V@���tY8@����V@����|S8@���`aV@���@`8@����FW@���@`8@���W@���`j8@���W@���8@���W@��� y8@���W@���?8@���@W@���8@���W@���8@���W@���`9@���@W@����p-9@���1�W@����.9@���sV@���#9@����V@���`059@���V@����T&9@���@V@���-9@��� fV@����&9@����V@���[/9@���uV@���@K9@���@tV@���_9@���@@wV@���9@����tV@��� ̼9@���@tV@���`t9@���vV@���`9@���@@wV@���@9@���@%wV@���9@����vV@���9@���kV@���s::@���@QhV@��� ,9:@���eV@���`R':@���@hV@���!:@���dcV@���`S9@����`V@����:@����[V@���9@���IV@��� V$:@���DV@���b:@���� =V@���@4r:@����:V@��� &^:@����?V@���U:@����CV@���>:@���@V@���`::@���@`;V@���`G:@���8V@���@G:@���\6V@��� N;:@���0V@���L:@����,V@����D:@����*V@���J:@���@r/V@���R:@���l,V@��� Vd:@����wV@���:@���V@���`:@���@V@���:@���kV@���|:@����V@����s:@���1V@���@K}:@����V@���@3s:@���@p!V@���[:@���@GV@���@^:@���`V@���M:@���� V@���@$:@��� V@����:@���cV@���99@���@V@���@9@���! V@���@9@���zV@���9@��� fV@��� N9@���Y!V@���@-9@���,V@��� w9@���@p1V@��� 29@���@5V@���Ct9@���4V@���@f9@���@z8V@���S9@���@_@V@��� &N9@���@h@V@���@.G9@���u<V@���j29@���@#V@���`.9@��� V@���09@���V@���9@���BV@���8@��� V@���8@���V@����8@���s V@���8@���`V@��� %8@���@V@��� 8@���V@���@48@����#V@���7O8@���:,V@���Q8@���2/V@���`6@8@���@/V@���`/8@����U-V@���+8@���K-V@��� 8@���@.V@��� 8@����.V@���s7@��� N'V@���[7@����F&V@���7@���Z$V@���7@���2V@���@u7@���-V@��� O7@���.V@���J>7@���86V@��� &>7@����%?V@���!27@���@7V@���`07@��� W7V@����6@���J>V@��� U6@���Q<V@���S6@���<V@���J6@����?V@���@.w6@����v@V@���F6@���*FV@���@ &6@���DV@���6@���`CV@���`H6@����DV@���@5@���@XBV@���5@���?V@���5@����]:V@���a5@����:V@��� 5@���@ AV@����5@���EV@���!5@���DV@���@5@���2?V@���5@���8V@���̬5@���7V@���@5@��� 6V@��� ~5@����6V@���@5@���4V@����5@����1V@���5@����2V@����w5@���@p1V@���5@���0-V@���j5@���,V@���5@��� 0V@���6@���b-V@���j6@����v0V@��� 6@��� +V@���6@����.V@���` 6@���@`+V@���@]5@���@ (V@���5@����(V@���6@���+V@���@06@���@O*V@���@W36@���(V@���C$6@���(V@���t 6@���$V@���5@����D$V@����|5@����&V@��� 5@���@?(V@���85@����=&V@��� ,5@���"V@����w5@���V@���B5@����V@���5@��� f"V@��� [5@����V@���D5@����V@���@^5@���@V@��� N5@���JV@���@P5@���@?V@���`5@���V@���`5@���:V@���@]5@���V@���5@���V@���5@���V@���5@���lV@���@5@���rV@����ɏ5@����DV@���q5@��� V@����*5@����, V@���'5@���@ V@���5@���@G V@����v5@���Y V@��� 6@��� V@���?6@���� V@���.6@����#V@���g56@���V@����8<6@��� &V@��� 86@���2U@���@XB6@����vU@���b6@����U@���Nk6@��� U@���4Q6@���U@���@z46@���@ V@���,6@����< V@��� 6@��� V@���6@���@V@���` 6@���V@���@-5@���`yU@���5@����$U@���5@���@.U@���!5@����U@���[5@����UU@���7/5@���U@���t5@��� fU@����M4@���U@���4@���@6U@����4@���@ U@���j4@���U@���@4@���߿U@���4@���@6U@���F4@���U@��� 4@���@øU@��� җ4@���|U@���s4@���@FU@���^4@���@gU@��� f4@����U@���@`4@����U@���@(,4@����U@����4@���U@���73@���@U@����4@����DU@����3@���U@���3@���@U@���?3@���}U@����}3@���\U@���@P3@���)[U@���@ 3@���dU@���`ݽ3@���@ dU@���3@���\U@���3@���OU@���3@��� fFU@���3@���zHU@��� ,y3@���'MU@��� V3@���HLU@���3@���XU@���m3@���AZU@���`3@����VXU@���q3@���@SU@���:3@���:TU@���@3@���1\U@���l3@���@U@���U3@���@O2U@����L3@����.U@����$3@���.U@���`3@���@x"U@���`02@����wU@��� 2@���`U@���2@����U@���TU2@���U@���J2@����T@���$2@���T@���1@���T@���`*1@����T@���@ۯ1@���)T@���`/1@����T@���a1@����T@���11@���@%T@���`1@���kT@����^1@���RT@����1@��� >T@���@0@���T@��� 0@���T@���O0@����ET@���@0@��� T@���0@���`T@���@ 0@���@nT@���O0@���|bT@���@_0@��� ~aT@���Y0@���YT@���!b0@���OT@���Q0@���7KT@����0@���@?T@���੫/@���@GAT@��� /@���@T@���`/@���t9T@���`/@���a:T@����L/@���8T@����0@���@p9T@����}/@����3T@����n/@���3T@���\/@����1T@��� /@����w#T@���@/@���T@���``k/@���T@���@J.@��� T@��� .@���`T@���-@���` T@����Z1-@���g T@���-@���� T@����#!-@���T@���E,@��� T@���`,@����T@���a,@���@?T@���+y,@����DT@��� D,@���T@���&+@���`T@���@XR+@���@6T@���@d*@��� T@���*+@����, T@���@Xr+@��� ~ T@��� bJ+@���T@����)<+@���@T@���`la+@���)T@���`L<+@���@gT@���+@���T@���@*@���aT@���`*@���@T@���`D*@���T@���`L)@��� T@���@)@���c�T@����u(@���IS@���@; (@���S@���F'@���8S@���&@���qS@���r&@����DS@���@&@���S@���@&@���S@��� &@���`S@���`&@���KS@��� &@���0S@���ࣰ&@����S@����%@���S@���`L$@����]S@����ш$@���S@���C$@����S@���$@���S@���@$@���S@���s$@���S@��� M$@���S@���$@���AS@��� }#@����=S@���"@���`žS@���@"@���AS@���2"@����S@���"@���S@����١"@���S@���`o"@���S@����"@���@S@��� ]"@���@6S@����K"@���qS@����,y"@���S@���͋"@���aS@���sZ"@����S@���@K"@���aS@���@A"@���`S@���)"@���`QS@���!@���@xS@���!!@���S@���@!@���"S@���{O!@����#S@����$!@���RS@���� @���wS@���� @���eS@����D @���bS@���@# @����eSS@���@%? @���@=S@��� @���14S@���-!@���@N#S@���@!@���q$S@���Q!@���$S@����!@���j*S@���!@���@(S@���@"@����!S@���!@���S@����>"@���S@���0U"@���@S@���@w"@��� S@���`o"@���S@���P#@���@S@����#@���(S@���#@���S@���#@��� S@����n#@���S@���@ۿ#@���S@���@6p#@���@S@���@F#@���rS@���e#@���@GS@���Y#@���jS@���z#@���S@����E#@����S@���"@��� S@���#@����]S@���#@��� S@���� U#@���S@����v#@���S@���#@���S@���?($@���@OS@���$@���@ S@���+Y$@���`S@����f$@����S@���`Rw$@���9 S@��� g$@���|R@���H%@���R@���%@���R@���&@���R@���`&@���`R@��� f'@����R@���S'@���RR@���'@����VR@���'@���YR@���'@���*R@���@ '@���R@���f(@���`QR@���(@����R@���H(@����VR@��� H )@���R@���)@���@۳R@���)@����R@���@*@���|R@���C+@���@ R@���@O+@����MR@���b+@���@R@���T+@���@R@���^+@����R@���@P+@���@R@���,@���R@���|,@���3R@���,@���R@���@ -@����R@���@,@���@R@���t-@���YR@��� -@����wR@���  -@����R@���`�-@���R@���>-@����UR@����]-@���JR@���@y-@���lR@��� m-@���R@���r-@���R@����)-@����<R@���`5-@���R@���`-@���R@���--@���zR@��� b*.@��� ~}R@���7O.@���ZxR@���@-.@���sR@���l.@����rR@��� .@����|R@���`.@����rR@���``.@���@WwR@����@/@���bqR@���.@���oR@����)/@����mR@����L=/@���hR@���ԥ/@���aR@���@/@���]R@���@W0@���\R@���)0@���\R@���0@���YR@���F0@���@NSR@���…0@���TR@���@0@����SR@���a0@���XR@���0@���QR@���0@���NR@���91@���@-HR@���1@���LR@����1@���@hHR@���1@���CR@����$1@���<R@����S72@���<R@���`G2@����CR@���`82@���CR@���o.2@���lDR@��� ?2@���=R@���9M2@���@8R@��� %o2@���@o:R@���2@����<R@���@[2@���=R@���}2@���`@R@���x2@��� &:R@����$2@���@o6R@���82@����n;R@���j2@���/>R@���`/2@���@?R@���2@���@R@���42@���:R@���2@����9R@���b2@���3BR@���@2@���?R@������3@���@=R@���3@���3R@���`2@���@G1R@���k2@����3R@����3@���3R@���B%3@���4R@���kA3@���@ 1R@���@;3@���@X2R@���P3@���S>R@���I3@���AR@���@43@���BR@���73@���?R@���K3@���J2R@���@U3@����/R@���y3@���@68R@���@Q3@���@F2R@���3@���1R@����G3@���`.R@���`3@���@ ,R@����3@���@.R@���3@����.R@���t3@���7+R@��� 3@���`y)R@����S3@���:0R@���K4@���6R@���`x4@���8R@���4@���`Q<R@����4@���8R@��� 4@���'9R@���@4@���@g5R@���4@���9R@���4@���1R@��� �5@���1R@���s 5@���`6R@���`5@����6R@���`Y5@����n3R@��� 5@���0R@���`5@���@-R@���`(5@��� +R@����%5@����*R@���`5@���@%'R@���5@���.R@����45@����&R@���B5@����&R@���R5@���($R@���]5@���$R@���ic5@���0R@���t5@���-R@����y5@���7'R@���l5@���`'R@���@{5@���c4R@���`5@����9R@��� 5@���`FR@����$5@���@"R@����5@���!R@���5@���`Q$R@���5@���� .R@���5@����"R@���`5@���!R@���`5@����^!R@���@6@���$R@���@16@���@(R@��� y56@���,R@����L-6@���4R@���=6@����U9R@����66@���;R@��� :6@����:R@����SG6@���10R@���;6@���A*R@���`0E6@���R@���`>6@����vR@���@E6@���R@���hT6@����MR@���\6@���@`R@���@6@����R@���M6@���� R@���E6@��� R@���m?6@���@R@���`H6@���[R@���@(<6@���@R@���@96@���R@��� y%6@���|R@��� N 6@���R@���5@����R@���5@��� R@����5@��� R@���5@����] R@���@5@���@pR@���@^5@���@R@���5@���Q@���<5@����Q@���t5@��� R@��� ,5@���{R@��� ~5@���R@���w5@���R@���M5@���R@���`35@���R@���/5@����mQ@���@f 5@���Q@���` 4@���Q@���`4@���ϵQ@���4@���@GQ@��� 4@���ীQ@���15@���HlQ@���`5@���WQ@���`5@����eSQ@���@5@���=Q@���n?6@���q<Q@���` T6@���@@Q@���@Ws6@���EQ@���>y6@���2CQ@���8n6@���DQ@���e6@���@JQ@����h6@���BMQ@���@f6@����JQ@���`M6@���@MQ@���bF6@���0YQ@���S6@���@aQ@���a6@���@aQ@���@Ws6@��� cQ@����Gq6@���cQ@���I_6@���[gQ@��� Z6@���oQ@���Py6@���@NsQ@���@i6@���zQ@���l6@���)Q@����6@���Q@���6@����Q@���@6@���@Q@���:6@���Q@���7@���jQ@��� 7@���Q@����|7@���@Q@���m6@���� Q@���6@���JQ@���D6@����Q@���6@����DQ@���6@���`QQ@����M6@���rQ@���`06@���@mQ@��� &6@����QQ@���6@����$HQ@���6@���)Q@���'7@���%Q@����?7@���@"Q@���@G7@���&Q@���gU7@��� Q@���%_7@���@o"Q@���`k7@��� ~Q@���`h7@���Q@���@-x7@���@Q@����G7@���)Q@��� |7@���Q@���47@���!Q@���ޜ7@����Q@���@.7@���@"Q@��� %7@���A+Q@���7@����.Q@���@7@���Q@���7@���`Q@���@7@���` Q@���7@���`Q@���7@����=Q@���7@��� Q@���@7@��� Q@���7@����Q@���7@���'Q@���`*7@���)Q@���@P7@����/Q@���@Q7@����/Q@���@P8@����0Q@���R8@���4Q@��� 1U8@���@5Q@���`0E8@���`7Q@���=8@���8Q@���J8@���R;Q@���@WS8@���?Q@���@A8@����#EQ@���L8@���@LQ@���B8@����NQ@���E8@���`[Q@����I8@���@OfQ@��� H8@����lQ@���18@���ƁQ@���:,8@���Q@���`|28@����Q@���N8@���cQ@��� &^8@���Q@���n8@���Q@����l8@���Q@���@I8@���`9Q@���\>8@����=Q@���=8@����Q@���AF8@���@7Q@���mO8@���CQ@���@^8@���@OQ@����h8@���`Q@���n8@���cQ@���Bu8@���Q@����8@���Q@����8@���Q@���`8@���Q@���8@���Q@���@(,9@���Q@���<9@���)Q@���j9@����Q@���ׂ9@���jQ@���9@���@Q@��� 9@���CQ@���9@���kQ@��� x9@���`Q@���@9@���Q@���J9@��� Q@���>:@���@Q@���ł:@���`ŊQ@���o:@���@pQ@���?:@���@@sQ@���:@���``Q@���:@��� _Q@����:@���_Q@����$:@����UeQ@����-;@���@jQ@���@'=;@��� fQ@���;@���@_Q@����s;@���1Q@���1;@���� Q@����<@���@Q@���` <@���@OQ@����p;@���@7Q@���;;@���ײQ@���@;@��� >Q@���`S;@��� WQ@���=;@���@Q@��� H;@���@gQ@���A;@����Q@���<@����Q@���@7<@���`9 R@��� g<@���@R@���<@���R@��� <@����<R@��� , =@���BQR@����ɏ=@���@pYR@���`Y=@���@eR@��� 1>@��� sR@���>@���3~R@���1>@���@{R@���lP>@����vR@���@^]>@���@zR@���@ f>@���`ݍR@���@{>@���cR@���l?@��� ?R@��� x?@���nR@���?@��� R@���b?@��� fR@���h$?@���R@���1?@���R@��� N{?@����R@���?@���R@���@?@���nR@���?@����R@���7?@���8R@���?@���R@���@@���R@���@@@��� fR@��� @@���R@���� @@����R@��� @@���uR@���@E#@@���R@��� '@@��� fR@���y=@@���R@��� ;@@���R@����$@@@���@ԩR@���K@@���R@��� `k@@���பR@���k@@����^R@���c@@���@OR@����#a@@���`R@��� Nc@@���OR@��� Zh@@���IR@���Io@@���bR@����@@���sR@���� @@���@ÀR@����@@���R@��� `@@���� R@���@@���`R@���`Y@@��� fR@���@@���R@���@@��� R@���@@����R@���@@���@R@���@@���R@���@@���zR@���V@@���@ܒR@���r@@���R@���sA@����,}R@���`A@���zR@��� A@���I{R@���A@���R@��� xA@���YR@���@A@���}R@����.'A@���@vR@���l(A@���sR@���9-A@����%sR@���`3A@���|R@��� KA@���K}R@���TA@���֏R@���``A@���R@���@dA@���{R@���"YA@���R@��� OA@���@R@����FA@���R@���@@A@���R@���@MA@����S@��� PA@����F S@��� JA@���@S@���NA@����S@��� YA@���S@���bA@���D/S@��� ^A@���I3S@���� VA@���`7S@���UTA@���:S@��� 7WA@���=S@���cxA@���AS@���}A@����-DS@���`A@���BS@���A@����=OS@��� ћA@���aS@���A@���YpS@���гA@���5uS@���@A@��� 8W@����h)@���0=W@��� N)@����w?W@���`)@���;W@��� 1(@���6W@���@'(@��� 7W@��� (@���|:W@���੫(@���9W@���ϛ(@���S2W@���ປ(@���.W@����#(@���-W@��� (@���@-W@����5)@��� &2W@���N)@���@/W@���` )@���@2W@���@)@���B5W@���@ )@���@g5W@���@?*@����8W@���*@���@xBW@���#+@���` DW@���+@���7CW@����*@���:@W@���=*@���BEW@���`*@���7?W@���\*@���<W@���#*@���;W@���*@���=W@���)@���@.;W@���)@���@h8W@���)@��� 8W@����h)@���U��Z������W@����)%����Da@���@H���? ��������� ���6���>���F���_���f���}������������������������������1��9��`��������������!��2��9�������������� ��,��7��C��[��g�� ����'��9��H��i����������������������~�������������{ �� �� �� �� �� �� ��$ �����`4a@���@ ����-4a@���^ ����28a@���@+ ���@?a@������`Da@���`���YMa@������Qa@���`����Wa@��� uy���Ya@���@��� ]a@���@,����$ba@���=J���9_a@���a���Z\a@������`\a@���d( ���Za@���* ���`Ya@����G ���Ua@����YR ���`Na@��� ���`Ja@��� ���*8a@��� ���`4a@���@ ���`^`@���/���X`@���`����V`@������V`@����De���`xT`@������@@U`@���l��� \`@����q���a`@���E#����Mb`@���`��� ``@���@z5���`^`@���/����eX@��� k���cX@������X@���`ff���X@���4���@˩X@���`!C���X@����F��� X@������`X@���/����MX@���@���X@��� ����X@���`����X@��� ?���aX@���@x���@xX@���^M���@X@���&���@X@��� ���@OX@���`c���@X@��� Y���`X@���r����VX@���A���X@���@B[����eX@��� k����M`[@���߼��� [[@���`h���`xZ[@���4����;\[@���A���`^[@���`!C���hp[@���o���q[@��� 7����M`[@���߼���Y@���M����Y@������X@���*;����X@���5���Y@���>����) Y@����yV��� Y@���@���Y@���M����\@���U!���\@����!��� \@����!���`\@����!��� \\@���@n!���\@���@8/!����\@���@B ���\@��� ���`\@��� ���\@���`k ��� \@���5 ���@\@����c. ���8\@���a ���@\@���@J_ ���\@���m ���`\@���u9 ���\@���� ���a\@���v ���\@��� ���`_\@��� ���}\@���;!���^\@���`Rx!��� \@���@!���k\@���!����\@���U!���X@���� ���zX@���`���X@���@0���@X@���l����X@���` �����X@��������X@���� ��� 8Z@���n ��� Z@���r����_Z@���۟���Z@���`���xZ@���H ���Z@���� ���@.Z@���`u ���`dZ@����Q��� sZ@���p���`�Z@���@���Z@���`:���Z@���ɯ���`VZ@���?u���`Z@���m���[@���@&���@[@�������[@���<+��� [@����P���`[@���`l���T [@��� ���8[@���@U ���[@����) ��� 8Z@���n ���`^@������Q^@���`|���^@���yu���^@���V4���^@������a^@��� ���z^@��� ��� ^@���T6��� H^@���`p���`^@������_@���@��� _@���3���}_@���`u9��� !w_@����Ϋ����#y_@��� ���@`}_@���@,���_@���` ����~_@���D���_@���@QY���_@���@���`8`@���L ���Z6`@���S ����2`@������`2`@���`cI���`94`@��� 1��� 9`@���@G���@w;`@������@r;`@����ݾ���`8`@���L ���`s_@���@c ���q_@���@c ����s_@���l���J~_@���`���`_@������Q_@���@f���`+_@���5��� _@������ʵ_@���@���Ǵ_@��� ���^_@���`!��� _@���D���`T_@������̄_@���;���py_@���`!���`s_@���@c ���a@���@���za@���@7���@`@����p^���@.`@���`W���`@���5���@``@���`���*`@���D���`@����N��� a@���O���@ a@������� a@������a@�������a@���@0���9a@��� ���@wa@���r���T a@���`���a@���@���^@����)%���^@����}%��� ^@���ē%���ж^@���`%���^@���E%���`^@���2%����;^@���n$���^@���x$���^@���`0%���^@��� 2%���`^@�����@%���^@����L]%���^@��� +Z%���G^@���Ȱ%���^@���%���ܽ^@��� %���^@����)%��� w^@���@ 7%���@o^@��� 6%����Ml^@���$%���@n^@��� %���Gy^@��� $���@^@��� n$��� ^@���%��� w^@���@ 7%���@_@����"�����_@���@*��� _@���`���@3_@���7���&_@���@*��� l@_@�������_D_@��� :���F_@�������G_@�������QL_@���`:m���@L_@���@ϊ���`N_@���A��� P_@���Q���sR_@���[���T_@�������C_@��� @���@_@���` ���@6_@���Q���@_@����"����^@���$���^@���&~$��� ^@���xv$���]@���@#���5]@��� #����v]@���#����]@���@0v#���`d]@���@e#��� ]@���@!#���@U]@���@"���`k]@���@"���`+]@���n"���]@���"���h]@���@Z"���^^@���@b"���`}^@����p"���^@���T#����^@���A#��� &^@���}#���`*^@���#���1^@���@j#����4^@���`C$���5^@���@G"$���-^@���ci$���^@���$���_@���H]"���x1_@����X"���E_@��� !���`F_@���a!����H_@���G!���N_@����.8!���p_@���@!��� J{_@��� ���҂_@���@ !���׎_@���@ ���@_@��� ���@_@���@ ���`x_@����H ���@_@��� ����_@��� ���`d_@��� ���@{_@��� ���_@���]!����K_@���[!���_@����!���ω_@����!��� _@���:-"���a_@���u"���$F_@���"���@?_@���#���s>_@���P#���@3_@���#���)_@���#����_@����)<$���_@���,Y$���@_@���`]$����_@���z$���@^@��� n$���`+^@���` $���^@����$��� ^@���v$����)^@��� n`$����^@���@^-$���z^@��� $���^^@���` $���O^@���@p$����^@����Z$���^@����#���^@���#���@.^@����GB#����O^@���\"��� _@���t"����) _@���D"���_@���H]"���u^@��� ���^@��� ����^@���@a ���@^@���@z ���^@���@ ���^@���`m ���$^@���] ���u^@��� ���@^@������^^@���@Z����O^@������@ ^@���g���`f^@���@���-^@���`���^@����|���Ү^@��������^@������@߳^@�������q^@������@W^@���$��� ^@���"��� Z^@�������$^@������^@���`\���^@���@����^@���@���8^@���`l���^@���]���^@���`!C����^@���}R���8^@��� ���`v^@������ ^@���@Q���`^@������^@������^@���@���`k^@���,���^@���`���.^@����|��� 8^@������@^@���@��� 6^@���@���`^@���`c ���8^@�������`^@���`1���#^@���V���@^@������Z@�������כZ@�������}Z@���G���yZ@����O���?|Z@���e���@{Z@���_����uZ@���`u9���@.sZ@���@]���`jZ@�������`kfZ@��������MdZ@���`�����SZ@������ OZ@��� ƒ�����HZ@���E����HZ@����P���@UXZ@���""���YZ@��� d���VZ@�������\Z@���`r���eZ@���`t���@fZ@���8���@hZ@���?����lZ@��� ���iZ@���i��� kZ@���@0���@sZ@������lZ@���؂���0yZ@���@���Z@��� >���Z@��� hE���`_Z@����a ���Z@���`B����`vZ@���؂���kZ@�������Z@������ Z@���@O���#Z@���@����Z@���M���@@Z@��� ���@EZ@����>���@Z@���@���`ʦZ@��� ��� Z@���@���Z@���`l���Z@��������Y@���4 ���uY@���h ���Y@���,��� Y@��� ���@ Y@���@(}��� Y@���%?���@UY@���@ W���Y@������sY@���|���uY@��� n ���Y@����� �����Y@���4 ��� ]@���t!���8]@���@3!���5]@����.!���`}]@���!�����]@���}!���\@���=!���\@����!���\@���@!���\@���t!���\@����!��� H]@���!���]@����&?!���`]@���@ ���]@����O{ ���]@���@o ���@]@���@o ���O*]@����X ���@.]@���w ���@E+]@���@J!��� ]@���@I!��� ]@��� !���`}&]@���!���$]@���:!���]@��� !��� 8]@���=!���]@����!��� ]@���t!���/Z`@��� ���L`@��� ���?`@��� ����>`@���# ���`:`@����A ����v0`@���$` ��� /`@���m ���1`@����W ��� 1`@���@ ���!0`@��� ���`@��� ���&`@��� ����`@���` ���=`@���` ����h`@��� ����`@��� ���/`@���Y ���@w`@���W ��� `@���@QY ���`�`@���@ ���@N`@���V ���B `@��� Yr ���`@���`l ���`@���4 ����V`@���`��� `@���`{���`@���`{���``@���6 ���k`@��� ���-_@���g ���`)_@���p ���_@���`L ���`_@��� ���a_@���@ W ���``@��� ��� `@���@���*`@���%���@`@������ `@������� `@���`:��� |!`@���`Ce����;"`@���@����"`@���b���%`@������O,`@��� kb��� 3`@����Pz���@`@����s����J`@���@Z���`L`@�������R`@��� ���`T`@���@ ���U`@���?H ���`X`@���DD ����hZ`@��� ' ���Y`@���\ ��� [`@����G ���[`@��� ����MZ`@��� 9���[`@������/Z`@��� ���`__@���@r!���@@_@����P!���_@��� ����_@��� ���`^@��� ���`^@��� ���^@���@ ���@_@��� ����_@��� ���`_@���E ����;_@����^ ����O_@���@n ���`_@���� ���`f _@���@9!���`__@���@r!���a^@���51!���s^@��� !����^@���@) ���^@����. ���}^@���E ���@E^@��� ���;^@���� ��� ^@���@ ���^@���� ��� ^@��� ���@^@����& ����^@����O{ ���`^@����r ����O^@���� ���^@���\ ���@^@���`Rx ���@^@���@A ���`^@��� ���D^@���m ���^@���~ ���^@���@} ���`^@����!���B^@���@$!���^@����%!���@^@���@9!���a^@���51!���[a@���V ����Ra@��� ���tQa@���3 ��� Qa@���E ���@Ua@����^ ���_Za@���aZ ���]a@��� ���[a@���V ���`__@���@ ���}_@���* ��� _@���@ ���`"_@����x ���`;_@���@z ���s_@���@8 ���+_@��� ����h_@����E ���$_@���@E ���%_@����Bf ���kE_@���@8O ����H_@���@{t ���H_@���� ���E_@���@+ ���!_@��� ���`_@��� ���`__@���@ ���`I`@��� ���_@���@g ���_@���@s; ��� _@���5 ���@7`@���F ���� `@���@N ���`I`@��� ��� D]@���S7"����;0]@���"���D0]@���D!����4]@����!���^1]@��� V!���Y5]@����!��� H<]@��� !���M]@���@ ���`_[]@���@ ���@U\]@��� ��� 1d]@��� ���d]@����!���Jf]@���@ ���Jf]@���# ����qh]@��� ����h]@���@!����;l]@����&!����p]@���51!���`r]@���@i!��� w]@���;l!���}]@���@J!����]@���@P!����;]@���3S!���`T]@���D!���3]@����70!���a]@���@9 ��� 8]@���2 ���Gm]@����q} ���n]@���2T ���`�{]@���@+ ���O]@���@7 ���8]@���@L ���@]@����? ��� ]@����ܿ ���]@����& ���0]@����Õ ��� ]@��� ���೩]@����!��� ]@���: !���`f]@���@ ���]@��� ���ܱ]@����' ��� ]@���@œ ���@Ϳ]@���� ���@E]@���@1 ���O]@���p=!��� ]@��� N!���]@����F!���`]@����!���z]@����GB!��� 8]@���`k!��� ]@���@A!���&]@���a!���]@���@(}!���s]@���@!���@]@����!����]@����̭!���=]@���U!���]@����!���`]@����@!���]@���!���]@����y!���z]@���@{!���?]@���@S!���O]@����`,!���̐]@���W!���]@���M!���ف]@���U!���@Ew]@���@!����Ku]@���!����W]@����."���@O]@����"��� D]@���S7"����ţ^@���M���3^@�������`^@��� W���^@���@(���`+^@���@Q���`d^@���@���Ǚ^@���j���^@��� I���a^@���`lA����^@���`͌���^@���;���}^@���J���k^@����aK����^@���`+Z����_^@��� ����ՠ^@������`^@���z��� ^@����(���^@���@���^@���`cI���E^@���p����^@���^���\^@���`1���ܩ^@��� ���B^@���ff����ţ^@���M���}A^@���@B!��� 7^@���!���p5^@���!���1^@���@ե!���0^@����&!���)^@����!����K%^@����/!����_^@����!���\ ^@���!����]@���!���@]@���L!���]@���!��� n]@���@I!���@ ]@����)!����M]@��� ���`R]@���` ���@{]@���@ ���`^@���g ���@^@��� ��� ^@��� ���^@��� ����^@��� ���@3^@���@0v ���^@����8 ����q(^@����~ ���.^@���Ѩ ���`T>^@����` ���EF^@��� ���uQ^@��� ���Y^@����`,!���@^^@���@$!���`^@����/7!���`g^@���@ ��� k^@���!���ǀ^@��� ��� ^@���: ���B^@���"!��� 6^@���eG!���^@��� 6!���^@����q!���@^@��� ���`ʦ^@��� ���0^@��� ���ټ^@��� l ���^@����] ���-^@����w ��� Z^@���@Ag ���`^@���@c) ���^@���@{4 ���^@���@bJ ���^@���� ��� \^@��� ���^@����` ���B^@��� ���೹^@��� ���^@���@9 ���@߳^@��� ���`ܲ^@���; ���^@����G"!���^@���@/!����^@���"!��� ^@���@ w!���r^@���!���@g^@���!���YY^@���!��� W^@����q!���W^@���!����dT^@���u!���L^@���!���}A^@���@B!��� Z@���@l���Z@���@��� Z@���\޿���8Z@���`Oֿ���Z@���ૉۿ���Z@����Gֿ��� Z@����Iֿ���k%Z@����hܿ���%Z@���#߿���@"Z@��� ų��� Z@��� ���Z@������ Z@���j���Z@���E#���zZ@���`33��� Z@���@l���X@���@���X@��� @���8W@����L@���`W@���`@���@hW@���<@����W@���`@���W@���>@��� W@��� @���W@���F@���W@���@e@���W@���޼@����EX@����@���`X@��� @@���� X@���@����X@���@���@X@��� @����X@���@���EX@���`@���X@���@���@;Z@���Yտ���x1Z@��� &п��� /Z@���`˿���`_+Z@����˿���W"Z@���`K~ѿ��� 6Z@���`^M̿��� Z@���@ƒǿ��� l Z@��� #���$Z@���?���@W'Z@��� v��� J+Z@���@R���-Z@���&���0Z@��� ǿ��� 14Z@���ɿ���5Z@���l��� @Z@���ѿ���>Z@���`ϊҿ��� :Z@���ѿ���@;Z@���Yտ���._@���@���@3_@���p=���`_@���ӿ����_@���~п���_@��� &ѿ���`_@���Fҿ���_@���[���._@���@���X@������X@���@���sX@����q=޿���X@���п���X@���п���X@���8ڿ���$X@���ݿ����X@���@Q���@X@����a ���X@�������X@���g���X@������Y@���@?���Y@���@x?���@ώY@��� /?���@ȏY@���z?���Y@���@Sv?���^Y@���`o?���‘Y@��� /?���`Y@���`L?��� Y@����F?���Y@���`?���Y@���@?���@_@���@���_@����@���@E_@����@���_@���@���@߫_@���@N@���`k_@���@@���`d_@��� *@���`_@��� @���`_@���@-@���`_@����@����׳_@���P@���@_@���@���?_@����o���_@������O_@��������_@������_@���2T��� _@����?����_@���`���!_@����b��� n_@������`x_@����p^ݿ����_@���aڿ��� Z_@����a ֿ���@_@���� տ��� _@���@Bڿ���#_@���ڿ���_@���ӿ���J_@��� ֿ���@_@���`ݿ���@_@���؂���_@�������=_@���@߼���^_@�������_@���@;L���?_@����o���~^@���>����$t^@���@%���ku^@������hx^@��� 0���`v^@���j���z^@���p=���@ {^@���`Ce����~^@���`R���E^@���ҧ���?^@���8���@^@������~^@���>���/Z@������Z@���ନ���`Z@���5���Z@�������Z@���@�����`TZ@���n���Z@�������[@���@_��� 1 [@���@U��� [@���`\���-[@���^ ���@"[@��� @���%[@���`��� Z([@������O2[@���E���5[@���,���@ ;[@��� d���`R?[@���`J_���@?[@���1���B[@��� -���H[@���`:m���@S[@��� @���\[@���`:m��� n_[@����P:���`vw[@���@Ϋ���[@���~��� [@���|s���[@������^[@��� ���@[@���O��� 1[@������@ [@����B���[@���`���}[@���@ ���-[@���  ���[@���`���E[@���`���[@���@���[@�������$[@���eG���8[@���!���@[@���].���\@������@\@������z\@��� ���@@#\@���<���+%\@���@(}���@&\@����8���%\@���@d���@3'\@��� /���`'\@���jb���`R+\@���>���`;+\@���`c��� &\@��� ���,\@���@��� 0\@����7���@2\@���m��� 5\@���@[0����q0\@���)���6\@����f��� sS\@���`+���@{[\@���`���r\@���@���\@���@s���Y\@���`��� \@��� ���ԝ\@���}R���a\@��� ���`ܖ\@���l ���ǘ\@����!���\@���@ ���\@���FB!��� \@���>!��� ҧ\@���k!���@ \@���!����\@���[!���@@\@���x!���O\@�����`!���@\@���]N!����K\@���w7!���E\@���H!���u\@����!���@is\@����!���`+n\@����!����vh\@��� ���a\@���n ���T\@����ܟ ����L\@��� ���E\@����Õ ���@:\@��� ��� n7\@���< ���`f*\@���D ���\@��� ��� \@���� ���[@���@ ���[@����? ���[@��� ���z[@����& ���`[@���� ���O[@��� ���[@��� ���#[@���@j ��� [@��� t ���­[@����d ���[@���@) ���y[@���@)\���n[@���@3���Z[@���@Q���X[@���`���aE[@���;���f9[@���@����7[@���q���1[@��� ����,[@������@i+[@������-([@����ݾ����![@���`���[@���6���`[@���`u9���`Z@���@A���@iZ@��� +���`Z@����&��� HZ@��� I���Z@���`uy����Z@���X���Z@���@s���^Z@���}���EZ@��� {T���`Z@���.���¡Z@���V���Z@���L���ࣔZ@���`l���`Z@����Pz���`~Z@���P���bZ@��� ~���@WSZ@���@jC���=RZ@���`b����PZ@���`J_���NZ@���`���QZ@���@; ���UZ@���`1���?XZ@���3���@i[Z@���`+���`�_Z@���C���@UhZ@���@s{��� lhZ@������sjZ@���@���!nZ@���@Z���@tZ@���@��� xZ@���S���Z@���@Q���لZ@������Z@���`���@EZ@������&Z@������Z@���� ���@Z@�������EZ@������@Z@���,���Z@���`\���൰Z@���@Ag��� 1Z@���^M���/Z@������^@���@8���p^@���`���^@���`��� n^@���@j���?^@������#^@���`D���`f^@���W���^@���`%���@#^@���@B��� H ^@������^@���@8���@`@����/7��� `@��� ���`@���%? ��� `@���`D ���@@_@���[0���Q_@����+���_@����y ���@_@���@ ���5`@����= ���`@���`l ���@`@���*; ���A `@���` ���@ `@��� q= ��� `@���, ��� `@���` ���<`@���` ��� `@���# ���@`@����/7���C`@���e���� e?`@��� ���� ;`@���[���+7`@���_���`6`@������ C`@������� SK`@��� ���@%K`@���t��� M`@������`)M`@���`���J`@��� ���tK`@������M`@���@z���HL`@���`{����` K`@������J`@���^M���*H`@���b����C`@���e���� [_@��� !C��� \_@����W��� HX_@���`I���V_@���2���pU_@������W_@���@n���Z_@��� ��� \_@�������h_@��� ���@n_@���`���@E_@��� J���O_@���`���n_@������kq_@���%��� [_@��� !C���@i`@��� ���i`@���`���qh`@���`S���g`@��� ���Ad`@��� ��� |c`@������b`@���q���@d`@���`u��� c`@�������c`@���=���`xd`@������e`@������g`@������e`@���@���@g`@��� ���Oj`@���ɯ���zl`@���`���l`@��� Ce���n`@������s`@����|���t`@��� w����t`@������`v`@������@w`@��� {���`t`@�������u`@���m`���u`@������Or`@���`���`�o`@������@m`@���`cI���l`@���t���`j`@���@ ���@i`@��� ��� _@���ɯ���$_@���` ��� n_@���` ���_@���@ ��� _@���`l ����_@��� ����M_@������@W_@���` ���_@���h ���_@���L���_@��� x���p_@���q���._@����A ���`v_@���@' ���@@_@���@"" ���@W_@����m ���_@��� ���h_@��� ����O_@���t ���_@��� A ���_@���W ���`�_@���@33��� _@���ɯ���Y@���n���WY@���Y���nY@���`r����_Y@���p}���Y@��� ���*Y@��� "���Y@���n����V`@������<`@��� R��� `@���}���T`@���+���``@������� `@������``@��� r���`@���[���`@��� z���`@����(����`@�������`@������z`@����i���q`@���`h����V`@������`@�������``@��� d����ו`@���5��� ғ`@���ww���a`@���@"b��� `@��� (���ݙ`@����P:���``@���DZ���`@��������v^@������`^@���?��� ^@���|���@ ^@��� ���@^@���@0���^@���a���^@��� ���@^@����;L����d^@���e����^@����P���^@���� ���p^@������ ^@���xV���@3^@���`:m���z^@���`���^@���`a����^@������|^@����)���^@�������`^@����S��� !^@��� :���^@������@^@���`���@U^@���`����v^@������ _@������}_@���S����M_@������`_@������u_@���@���@_@���@7���@._@���`h���O_@������`@�������``@���@Q���``@���@}���`@���`:m���_@����G��� _@������@E`@���%���<`@���^���j`@����H���`@����z5���``@����7���@`@������`@����]���``@������@E`@���%���`+]@���eG���@i]@���*����]@���@z���]@���@��� �]@��� ���`]@���` ��� ]@��� F ���]@��� ����]]@���H ��� l]@��� !C ��� l]@���^ ���`]@��� ����]@���)���`+]@���eG��� `@��� n��� `@��� ���`@��� x���]`@����2���8`@������` `@��� 1���*`@���>���@`@���@%��� ?`@���W���``@���]���0`@���`���`@��� ��� `@���@���|`@��� ���`@���@���`@���@A���`@���o^���`@���`\���=`@������ `@���`:-���`o`@���/V����;`@������@E`@������T`@������S`@������ `@���`>���`@���@m���@`@���`��� `@������@E`@���t��� `@��� U��� `@��� n���`@���`"�@���`@���@@����$`@���+@���� `@��� @����`@���`@��� `@���@����$`@����Q@���`@���@۟�@���` `@����Y�@��� `@��� A�@���`@���`"�@���/\@���9@����\@���W @���@\@���i @���\@��� @��� s\@����U@��� \@���`H@@��� \@��� @���\@���&@���\@���I_@���\@���x@���`v]@���@��� ]@���ـ@���a]@��� {@���]@���\.@���!]@���@E@���a!]@���@v@���$]@��� `@���)]@��� V@����q,]@���S@���`/]@���~@���&5]@���R@���`N]@���o@����_\]@��� g@���`e]@���X@����`]@���@Xr@���X]@����U@���]]@���3R@���]]@���!@���+a]@���0@����Ml]@���`%?@����h]@���@'@����c]@���r{@���Ya]@���`l@���#m]@���0@���r]@���O@���q]@���D#@���n]@���t9@���n]@���` @���t]@���: @���+u]@��� @���@p]@���  @���`g]@��� @���`c]@���@L @���^]@���O@���pa]@���`W @��� 1`]@���� @���`RK]@���7/ @���@@C]@���`W @���`A]@��� @���G]@���v @����KM]@���`f @���M]@����) @����P]@����2 @��� l\]@���q @��� 6\]@��� @���U]@��� @���P]@���` @���Q]@��� @���B]]@����UU @���#]]@���r@��� g]@��� y@����qh]@��� Ga@����vd]@���@���aj]@��� 5@���`k]@����@���@b]@���@\@���n]@���*@���`j]@����,@����g]@���x@��� o]@���G@���sr]@���v@���`r]@��� l@����K]@���ߛ@���x]@��� �@����x]@���@YQ�@���@io]@����^M�@���u]@���a?���@.w]@���?���@]@���l?���ࣈ]@���xV?����]@���`W?���]@���i?���@3]@���0u?���@W]@���`?���@ ]@���(?���@U]@���l?���]@���Y?���̴]@���z?���]@��� &?���@]@����= ?���@W]@���j?���@]@����?���@ ]@���@_,?���=y]@���a?���x]@���ׂ?����;|]@����Y?���=]@���@?����Հ]@���`?���5y]@���?����)p]@���?���.b]@����n?���a]@���@N?���]]@���A?����_]@���`(?���a]@����J���^]@���*����[]@���E#ѿ���@`]@���.׿��� C\]@������O^]@��� -���Qh]@���#ۿ��� Zh]@���ܿ���@b]@������8f]@��� H���d]@���@6���d]@���`!C����v`]@���V4���@i_]@���@l���`f]@������h]@���`a���@Eg]@���@S���\]@���� d���\]@������`)[]@����A����X]@���5���U]@������`R]@���@���P]@���ף���`d?]@������-4]@���[���@./]@���@���-]@���`���`k2]@��� -��� Z0]@���G���&]@��� ���!]@������ $]@���b���E"]@���� ���]@���?���]@������B]@���#���^]@���?���]@���@ϊ���f]@���`�����]@�������n]@���6����]@���\���Q]@���@*���]@������`&]@����Ԇ���8&]@����*���� ]@���t���a]@���'}���]@���@""���@]@���`1���`R]@���J���]@��� ���]@�������]@���D���]@���T���@]@������&]@���@��� ]@��� ����q]@��� 0���`�]@��� ���]@���@T����]@���' ���J ]@����S ���@ ]@���`I ���`v ]@���v ����]@���` 6 ��� ]@��� ���Q]@��� ���]@���C ���`R\@���S ���\@���@H ���-\@������x\@���@E���8\@��� 1��� \@���p��� !\@����y���\@���%? ���a\@���%? ���\@��� ���`ʞ\@���' ����\@���� ����\@��� K ���̐\@��� 0 ���`d\@���`I ���@ϖ\@���໻ ���k\@��� 0 ����Ň\@��� ���\\@��� ! ���@\@��� ���\@���`C ����t\@���� ���@j\@��� ���@f\@����| ���h\@���@} ���@f\@���` ���]\@���Oz ���8V\@���[0 ���F\@���-X���@B\@���`j����A\@���@}R���<\@�������<\@��� ���@>\@���`u9 ���)\@���@}R ���"\@���ʎ ���`f\@���6 ��� \@���@؂ ���W \@��� ���[@���`L ���[@��� S ��� s[@���`L ����[@��� I���[@��� '����[@������ [@���V4���@U[@������[@���_,���[@���@(}����[@���b���&[@���`��� [@���`l��� [@���_,���[@������`[@���DD���[@������O[@���@y���n[@���@��� [@���d���&[@������O[@��� ����v[@���� ���@3[@��� ���[@������@3[@���@���+[@���� 6��� [@���t���![@��� ���`[@������ [@���`Ce����[@���ww���ԑ[@���+���$[@��� f����)[@��� ���#[@���z���[@��� b��� [@���k����u[@���`X���y[@��� @���[@���@x����q[@���r���[@������� |[@��� -���@U|[@���@����t[@���b���`n[@������p[@���@}���$k[@�������i[@���#��� e[@���/���b[@����k���aZ[@���`r���Z[@�������@X[@���`P���OQ[@���y5����O[@��� ���P[@����p^���][@��� ���`[@���`!C���`V[@����@��� W[@������@J[@���,���`G[@���4���`+F[@���M<׿����H[@���ֿ���@B[@���zο���5E[@���ʿ���EN[@���`ο���I[@���I?���`�K[@���6?���`;S[@��� V4r?���}M[@���'}?��� !G[@���}?���OB[@���?��� ;[@���(\?���:[@���?���@;[@���y?���J6[@���@x?���`>[@��� ?���@>[@���y?���@ ;[@���`?��� ;[@����?���!F[@���b?���@N[@���-?����VN[@���?���H[@���%+?���>[@���b?���@>[@���?����C[@���?���@C[@��� ?���E[@���`?���`)O[@���i?���EV[@���`?���R[@���d?���.V[@���@E#?����d[@���?���@i[@����@���@c[@����d?���xe[@���@6?���@j[@��� ?���j[@��� j?���`kv[@����?��� {[@���@'}?��� Z[@���Œ?���`[@���@?���W[@���Z?��� [@���`?���B[@���t?���[@���@N?��� [@��� ?���ܹ[@���);?��� ![@���`a?���B[@���/?����)[@���g?���`+[@����%?���[@��� \?��� [@���?���[@��� gE?��� C[@���?����$\@���O?��� \@���@?��� \@����?���`�\@���`?���B\@��� ?���B\@����X?���>\@���?���`TF\@���i?��� [\@��� ?��� Jc\@���?���i\@���ͫ?���r\@���?���`;{\@���@*?����\@���|?��� l\@���@b?���\@���!"?���`ʢ\@���a?���\@���@33?���`\@���`?���}\@���1T?���h\@���D?���\@���[?���@\@����Y�@���`ڳ\@���E�@���\@���@_,@���@\@����@��� \@����2T@���Ǽ\@���j@���\@����Y@���x\@���@���\@���\@���@.\@����.@���k\@���n@���J\@���@���8\@���\@��� H\@����,@���\@���[@���\@���`g@���T\@����)\@����\@���`@���/\@���9@���@{Y@���@'?����œY@���?���̈Y@���;+?���Y@���`?���@Y@���?��� lY@���?����כY@���p?���Y@��� ?���@Y@��� ?���QY@���`a?���@{Y@���@'?����2^@���@k?���T^@��� ?����K^@���?���@.^@����?���^@����~?����^@���O?���`x_@���/?���@ _@���?���J"_@���\n?���$_@��� ?����O'_@����?���@W'_@���@*?���"_@���p?���!_@���&?���@ '_@��� /?���@0_@���{?���5_@���|?����_4_@���@_,?���`v?_@���?���`B_@���l?���\B_@���@?���@J_@���?���J_@��� gE?���@O_@���CD?���@#N_@���@c{?���`G_@���?���:_@���y?���*_@���@?����_@��� ?���^@��� ?����_^@���?����v^@���b?���k^@���{?��� ^@���q?���^@��� )\?���^@����?���D^@���?���$^@���@G?����Os^@���`W?���@f^@���l?���U^@���P?��� P^@���@G?���`RG^@���?����/^@���`-?���*^@���`?���Y!^@���`?����^@��� t?���+ ^@���?����$�^@��� Iǿ���0^@���M<׿���^@��������^@���`>���^@���@���^@������� ^@��� I���x%^@������ #^@��� ���@*^@���2T���@E/^@���u����4^@���|���5^@���&���`_C^@���-���`F^@������X^@���F���a]^@������ !g^@����Q���i^@����?����l^@���@ ���@ {^@������^@�������3^@���� ���^@���q��� H^@������^@���� ���^@���` ���@^@���_,���`�^@����ƒ���`ʮ^@����.���`^@����-���`T^@����b����^@���@B���`�^@��� w���5^@���b��� ^@��� w��� 6^@���;L����q^@�������K^@������ʵ^@���#��� ^@���*;���ϭ^@���G���^@���@z���@^@���h$�����^@������܁^@������y^@��� ����s^@���i����Km^@����Y���\j^@���@}���`b^@��� ���V^@���`q���@S^@���@n���@R^@���@ϊ���U^@������U^@������Y^@�������a^@���L]����@@c^@������3f^@���c���5m^@��� n���`z^@���ף���р^@��������^@���ʎ���^^@���`���s^@���` ��� ^@���Q����^@���_,���ј^@��� ���^@���@6 ����^@���@B ����^@��� ���`;^@���? ���@3^@���@ ��� ^@���� ����_^@���z ���^@��� > ���.^@���`C ��� ҏ^@��� ���^@���`r ���^@���D ��� ^@����s{ ���`Ŏ^@���`r ���ԕ^@���@} ���`^@���L ���`T^@������8^@����"����^@������ ^@������!^@�������`;^@���`l���a^@���@����0^@���`\���@^@���`m`���&^@���@s;���@@^@���@-���^@���,9���^@������^@������^@���K���&^@���p���^@�������^@���@���@ͫ^@���@���Ǩ^@������ԥ^@�������^@���@����O^@�������`^@���`���^@���@���`^@��� ����$^@����8���n^@���@e���Qx^@��� bj���@Up^@��� !C����Km^@��� Y���`^^@������@_^@������a^@���`��� c^@���D���fe^@������`g^@���$���)f^@���-���`)W^@�������`_S^@��� 0����$P^@���`���P^@������A^@���`J ��� 8^@���2T ���@i7^@��� ���`x>^@����* ���?D^@����8 ���8E^@��� ���`B^@��� \���D@^@������@>^@������ E^@��� ���A^@���`���f1^@���f���=%^@��� t���^@���r��� ^@��������K^@���D ���`)^@���  ���G^@��� 0 ���^@���� ���`^@���O���`)^@���`C����^@���4��� ^@����N��� 1^@���Ec���^@���`r���@@^@���<���^@���y���^@���yu���a^@����y���!^@���`+���`^@���`\��� s]@���%?���3]@���`��� 8]@�������]@���x���]@����Pz����d]@���`���]@��� :���}]@���C���]@���`f���@{]@���[��� ]@���M���]@��� h���]@��� ���]@���`ք���`v]@������`]@���C���$]@���,9���k]@�������E]@���^���]@������]@���� ���]@��� 0 ����]@��� Y ���`]@��� bj ���]@��� ����]@����& ��� ]@���` ���]@��� ����]@��� ���ࣰ]@��� ���`x]@�������f]@���`r���޸]@���_,���@߷]@���)���T]@������ϱ]@����j���D]@���n���D]@���`L����_]@���R���]@���v����]@���@����]@������E]@��� ���]@����S���x]@���S��� ]@���@���@]@���` ���$]@���@����)]@�������]@���@L]���]@�������O]@���`c���]@������]@���^M���`]@������@]@���` ��� Z]@���.׿��� J]@����H���`x]@���߼���]@����H���8]@���[����]@����'u����O]@��� %?���]@���@ ���]@��� ��� l]@����r?��� ]@���?���]@��� ?���`]@���\n?���`]@����?���B]@���c?���`+^@���?���^^@���?����$^@���H?���+ ^@���(\?���`^@���?���@^@���?���a^@���ͫ?���^^@���?���@^@��� ?���`^@���?���Q$^@���@?��� +^@���@.?���`.^@���*?���`R3^@���[?����_4^@����d?����4^@���/?���BE^@��� 7?��� O^@���`t?���X^@����?���\^@���`.?���]^@���@?��� [^@���?����Ka^@���K?����h^@���?���@W{^@��� ?���E~^@���xV?���ࣀ^@���1T?���^@����?���&^@���`?��� ^@����j?����2^@���@k?���Y`@���` ܿ���W`@���@Jܿ���U`@���`Fֿ��� V`@��� 9ӿ���R`@���ףԿ���Q`@��� ۿ����P`@���`^Mп���8J`@���`Pѿ���F`@����˿���3H`@��� \ʿ���`L`@���*;̿���M`@���ȿ���J`@���@a¿���`)K`@����-ȿ���H`@��� ߼¿���H`@���@_���J`@���UU���`N`@���l���`xT`@���<+��� cZ`@����x���d`@����a ���i`@���`Pɿ���@i`@����Ͽ���`j`@���ҿ��� h`@���Oؿ���"c`@����Կ��� _`@���i׿���` ]`@���ӿ���� \`@���` п���@Y`@���#Ͽ����V`@���㸿���S`@���򋵿��� W`@���@(}ҿ��� S]`@���:mԿ���]`@���ؿ���Y`@���` ܿ���@cY@���`?���O^Y@���@6?���8YY@���?���`ZY@���`Q8�@���?\Y@����@���hY@�����@���@UlY@����@���qY@���` ?���nY@����?��� hY@���vw?���@cY@���`?���1tX@��� ?���`lX@����a?���@.gX@��� h$?���^X@����?���`XX@���?����^YX@��� ?���@NX@���Be?����CX@����S?���`DX@���`H?���OX@���?���UX@����~?���kUX@���Œ?����^X@���?���@WkX@��� ?���@yX@���?���{X@���:L?��� szX@���?���xX@��� E#?���@xX@���q?���1tX@��� ?���<a@�������2a@���8 ����2a@��� ����2a@���Qx����2a@���@%����2a@������2a@���@U����qa@���p}��� Za@����K���`a@���b���`2a@���`w���Мa@���g���2a@����ݒ����2a@��� <���8a@����s ���8a@���!����Da@���@A"���`a@���"���a@�����`!��� a@���@) ���a@���@ ���~a@���`M ��� a@���33 ��� a@���, ����-a@���T ���a@���V��� a@������a@������`ʄa@���;���a@��� Y���Fa@��� ����h~a@���S7 ��� sa@�����@ ���ma@����g ���ja@���@h ��� ha@���@G ���`ga@���X���Kga@���( ���'_a@����p ���H^a@����œ ���@.]a@���� ���@Za@���XR ���Za@���@9 ���b]a@���* ���]a@���V����_a@���t���aa@������`ca@���UU����Vba@���(����^a@�������`\a@���z���Wa@�������Ua@���@A���9Ua@����a��� ]a@������`a@��� I���� ea@������@ga@��� k���fa@����Q���da@��� ���Yaa@��� ����VXa@����x���HRa@������ Qa@���`���"Sa@���@j���4]a@��� _��� ea@������ Wa@������� Va@������TUa@������`Va@���x���`Za@���U���`Na@����)���`La@�������zJa@������Ha@��� ����La@���dh��� Ka@���Y��� Ia@���l���Fa@����ZQ���Ea@��� ���@wKa@������]Ga@������Ba@���`1����2Ba@��� ���Aa@����f���XBa@�������`@a@���M���@.Aa@���`���z@a@���T���<a@���`͌���]=a@����7P���+;a@���`|���8a@���G��� 9a@��������8a@���`J���2a@��� ��� ?2a@���`v���0a@���พ���`(a@��� ���` )a@���@���@7'a@���`C���`�'a@���  ���@$a@���@8���`"a@������`)#a@���@2���| a@������ Qa@��� ���@Na@���n���`a@���`u��� a@������`2a@���Ga��� `@������`x`@��� !��� `@��� J���`@���;L���|`@��� ���`@���@ ����`@���`ք���``@���`k����`@���@���`@���h���`@���@���`@���m���``@���T��� `@��� ���0`@���@ ����`@�������P`@���[0��� `@�������@`@���`���``@����s��� (`@���@ ���A`@���4���3`@���ɯ���``@������� `@���@Tv���``@���`���@r`@���$`��� `@�������V`@��� ���κ`@���  ��� `@���t ���z`@��� ���S`@��� kb ���`@���$ ���`f`@��� ����m`@���3 ����D`@���b ���ж`@���ϊ ���``@��� ���'`@���V���@N`@����a ���` `@����8���@`@��� bj���`@��� ����d`@���b���`@���@0���g`@���g���`@��� ���+`@���` ���`@���@M ����ױ`@����j ���`o`@��� ���@`@���= ����ױ`@��� ���޲`@���`E ���`x`@��� ���`@���` ���`@���;L���z`@���@ ���� `@���eG���`@��� Rx���@`@���Ec���`@���%���0`@���;L ���`@���` ���˛`@���V4 ���@`@���# ��� `@���7 ���<`@���@Tv ���4`@����+ ���y`@���? ���Y`@���� ����`@��� ���"`@���] ���A`@��� ���``@����O���<`@���$`���ނ`@���%���`@���tZ���଀`@������k`@���`Ce���`~`@���@ W���`@������3`@��� ��� e`@��� ���<`@���5q��� |`@���S��� |`@���,��� `@���@���``@������F`@���/����`@������@`@���2T���`@���`����v`@��� :���@`@���@2����`@���e���`@���= ���`o`@���<+���@.`@������"`@���@-����`@���@z���F`@���L]���`@���พ��� `@��� ���`@����&���b`@���m ���˹`@��� >��� 6`@���`���`@�������`@���`���H`@���p���` `@������`@���@ W���`@���%?����m`@����A'���``@����a ���`@���@���ϻ`@��� *��� `@���'}���ࣾ`@���@��� ?`@��� b��� `@���_,���s`@���`i���9`@������`@���`{���Խ`@������`@���@H����@7`@��� b��� `@��� ���``@����j���`@���?H����D`@������`@��� x���`@�������``@��� !���`@���_,���}`@���#���J`@���`���@``@���3����`@���N����ـ`@���@-����}`@���@z5���~`@���^M���΀`@������@.}`@���`a���<|`@���F���|`@��� ���"`@��� ���z~`@���Y���@y`@���`u���@Ny`@����;L���By`@���V4���`y`@���@Q���Tw`@���Q����v`@��� ���`v`@��� :���`ot`@���@(}����Vp`@���@��� n`@������4i`@���h$����j`@���V4���4i`@����,���Ff`@��� G���e`@�������`�c`@���@`,���K_`@����P���J^`@���� ����V^`@������``@���� ���a`@���|���te`@��� 0��� h`@����De���g`@���@���`j`@��� ���p`@���@y���p`@���q���`fp`@���@��� {`@���xV���`܄`@��� ܿ���`@����/ֿ���`f`@���5ؿ���`@��� lݿ���@7`@���/ܿ���`@���4��� |`@���@b���@`@���Y���`@���?���@`@���7���`@���@���@`@����p^���`@���@}���`@���@ d����M`@���@ϊ���`@���@���``@��� ���=`@������� `@���y���@`@���`���`@����p^�����`@���|����@`@��� 9���`@���@���`@���`���`]`@�������`@���@<��� `@���m���`@����+���@7`@���`l���Z`@���q���`@��� I����M`@���`���`I`@��� ���`@���@����V`@���B���@N`@���`<��� S`@��� 0���`@��� ��� `@��� ��� `@���@ ���`@����Ϋ ����`@���@& ���`@���@ ���`@���p ���@E`@���h ���q`@���@T��� `@��� S���`@��� |��� `@���@؂���`@���K���a@���@2���ka@������� a@���@-���' a@���`{���@ a@��� ��� a@���`<��� a@��� q���@a@�������=a@�������a@���@B��� "a@��� k����`I'a@�������_&a@���@F���`[#a@���_���#a@���@Q���1a@����VU���;a@���S���=a@������Aa@������Qa@���[���`Ta@���8���Za@��� !C���da@���f����`Isa@���@-��� ya@���`��� a@��� k���`a@������a@���`+���؋a@������a@���:���ࣖa@������ a@����> ���˗a@��� kb���`fa@���@���@.a@���S���`]a@������<a@������` [@����. @��� [@���`ʎ @��� [@���@K@���5 [@���[@���[@���@ @����[@���r{@���[@���N@���`TZ@��� @���u [@���@���@W[@���@���D[@��� >@���+[@��� @���[@���q@���`[@����&@���[@���  @����[@����} @���` [@����. @����y_@���@ @��� u_@���@ @���@s_@���q @��� Zp_@��� h @���`do_@���* @��� o_@���� @���l_@��� @���+i_@���@K @���`i_@���@ɯ @���`n_@��� @����t_@��� @���t_@���@_ @���`z_@���F @����y_@���@ @���Y@���&?���.Y@����5?���@UY@���8?��� Y@���ij?���Y@���@?��� Y@���0u?��� Y@���`` ?���ܝY@���xV?��� !Y@���?���sY@���@E#?���@3Y@��� >?���@3Y@��� ?���pY@���Z?��� Y@���p=?���Y@���?���`MY@����=(?���@Y@���s?���Y@���&?����Y@���/?���nY@���k?���Y@��� \?����Y@���?���+Y@����d?���ԭY@���@ t?��� Y@���@n?���Y@��� ?���Y@��� ?���Y@��� T?����Y@���/?���@&Z@���h?���@.Z@���S?���5Z@����?���`Z@���p?���@Z@���?���0Z@���?��� HZ@���`?���@Z@���p=?���YZ@���@q?���� Z@���`H?���$Z@����?���*Z@���b?���@&Z@���h?����a@�������a@������``@���N���``@��� 7���`@���#��� `@���H���``@���`���`@���@ף���`@����|���`@���X��� `@���@`3���Z`@���` ���`@���x���@`@������9a@������`a@���`����V a@������`a@���&����a@������R�`@��� ?���&_@���`9m?���+_@����)\?���_@���Q?����;_@��� ?���_@��� ?���_@���?���_@���`o^?���_@����,?����2`@���{?����`@��� j?����`@���?���`@���`j?���`@���@6?���`@���` ?��� `@���`K]?��� `@���p=?���``@���&?���/`@���/?���`@���p?���`@���?���`@���?��� `@���I?���``@���?���@`@����ww?���`) `@��� ?��� `@����?��� `@���?���@`@���@b?��� `@��� f?���`�`@���!"?���y`@���h?���``@���P?���`@���@?����_@���O?���`_@���`_,?���@_@��� $?��� !_@��� F?����_@���`-ز?���&_@���[���``@���2���` `@���`��� `@�������``@���<+���]`@���@P���`@��������$`@���@s���4`@���@l����O_@���/ؿ���`k_@���W˿���_@���?���@@_@���̼?���_@���`o?���}_@���s?���_@���?���k_@���%?��� _@���]M?����_@��� ?����_@���'}?���@i_@���?���_@��� ?���p_@��� gE?���@_@���?���_@���O?���_@���;+?���Q_@���??���@ _@���@-�@���_@��� @��� `@���`@��� `@���@_,@���n_@��� ?���W_@��� 7?���@@_@���?����`@���?����_@���4?���9`@���`j?���R�`@��� ?���0W@���@F@����W@���v@���W@���@���W@���A@���W@���@���X@���#@����!X@��� @���)X@���I@���4X@���@��� CX@����^ @���`HX@���@���JX@���֣@����OX@��� o@���@_X@���`@���7gX@���Ί@���uX@���@ @���@yX@���s@����}X@���"@��� X@���)@���X@���@$@��� ~X@���@@���X@���@���X@��� @���X@���@���X@����^M@���@6X@���`W@���@NX@����@����X@���J~@���@X@���`_@���@pX@���[@���X@���@h$ @���`X@���`]n @���@X@��� @���@.X@����| @���2X@���@��� X@���঍@���`X@��� l@���@X@���``@���@�Y@����@����Y@���@���@OX@���@h@���Y@����@����$Y@��� p@���@Y@��� 7@����MY@��� 5q@��� 8Y@����@����qY@���vw@��� Y@����d@��� Y@��� @@���`}Y@���@6@���@E'Y@���J�@���`)+Y@���@@���4Y@���);�@����_<Y@���!?���=9Y@���+�@����4Y@����@���@2Y@���@����4Y@���@���`x:Y@���`_@���@CY@���J@����DY@��� @���QY@���`W�@���TY@���< �@��� WY@����?���YY@����ף?���bY@���0u?����lY@���@?��� 8wY@���?����vY@����?���=Y@���Be?���Y@����?����Y@���W?���`_Y@���@g?��� Y@���@p=?���&Y@����n?���Y@����Y?���#Y@����?����դY@���@?���Y@���`?����dY@���?���WY@��� j?���&Y@���?���hY@���?����Y@���G?���@WY@���`?���@Y@����zt?���Y@���Y���+Y@���@W���BY@���j⹿���^Y@����kп���`xY@���п���`Y@���r˿���Y@����p^Ϳ����Y@���Yտ���Y@����S׿���@Y@���`""ڿ���OY@���$ۿ���\Y@���߿��� !Y@���v���`Y@���@ܿ���Y@���@���Y@������Y@���`���Y@���Tv��� Y@��� O��� Y@�������`Y@�������Y@���<+����Y@��� >���@Y@���@33���Y@���@1u��� Z@��� @���&Z@���`j����Z@��� w���sZ@���@z5���BZ@���`q���#Z@������xZ@���@%���O"Z@��� k���Z@���H���� Z@���`���8"Z@������@$Z@���@Q���(Z@������G%Z@���@%�����(Z@���@���@+Z@����yV����1Z@����s���4Z@������� 7Z@���E�����;8Z@��� G���/Z@����/���@.'Z@���@*���O-Z@���@(���.Z@���@*��� ,Z@�������&%Z@����.���"Z@���@���"Z@���.���&Z@���L]���`}.Z@���2���1Z@����y����0Z@���`L���@6Z@���[����9Z@����Q���:Z@���@K����<Z@�������@GZ@��� \���@@OZ@������@bZ@���d���@fZ@���@%����MhZ@���-X���`fZ@���l���hZ@���`{���qZ@���@���@rZ@���@���`vZ@���@��� JZ@������$Z@����"���Z@���` ���\zZ@���`+ ����tZ@���. ���-tZ@���ų ��� |Z@���ww���+}Z@���@���htZ@�������sZ@���`.���yZ@�������uyZ@���@���`wZ@��� C���0uZ@���`��� oZ@�������mZ@��� Y���EfZ@���>���bZ@������GaZ@������@WZ@���`u9���\RZ@���@��� ZPZ@�������@OZ@���C���`�KZ@���@W���MZ@���@���JZ@������`+JZ@���K���MZ@������TIZ@���.���.Z@���6���@@'Z@������@"Z@���`���!Z@����*���-Z@���ף���-Z@��� u���@#Z@��� ���`f"Z@���[���`Z@��� ƒ����Z@���h�����Z@����p���Y@������Y@��� k���`}Y@��� ƒ���`TY@���!���Y@���v���@Y@������ Y@���@���Y@������ Y@���3���TY@���6���Y@���`����OY@��� ,���`Y@���@���@Y@�������`}Y@���ɯ��� nY@���x ���uY@���` ��� sY@����G ��� hY@��� �����XY@���@����TY@������`GY@��� !���9Y@��� 9���Y5Y@���_���8Y@���P���� s7Y@���@}����;(Y@���#���$Y@����S��� H$Y@���_���}Y@����S���aY@���`q����Y@���S���@Y@����W����VY@���`���`Y@������ Y@������GY@���v޿����DX@���ӿ���X@���`:m���rX@���?���`X@���` ?���`X@����ϊ?���X@���`?���`X@��� Q?���X@���?���@X@���?���!X@����Y?���X@���`?���X@���;+?����wX@����?���bX@���ͫ?���`X@���O?���X@���`?���X@��� ?���X@���{?���X@���@ ?���@X@���-?���@X@���&?����X@���@?���X@���`?���X@���x@���|X@���D#@���pX@���l @���iX@���<@����EgX@���Œ@���@eX@����@����w[X@���c@���UX@����~1@����PX@���) @���JX@��� @���Y9X@����) @����2X@���B @���0-X@���`` @��� #X@���  @��� X@���`` @���@OX@���[@���q X@��� .w@���cW@��� @���@W@���@@���3W@���࿷@����nW@���c@���@W@���!@���W@���`j"@��� W@���R@��� W@����@���0W@���@F@���V��z������`_F@���D9@���`īO@���C@��������������� K@��� O:@���2K@���:@����K@���:@����K@����:@���aK@���:@���`AK@���@:@���`HK@���`:@���K@���@:@���L@���:@����"L@����:@����$L@��� 7:@���@L@���:@��� L@���`:@���K@���l:@���lK@���`:@��� K@��� O:@��� eF@���HC@��� gF@����EC@���qF@���C@��� yF@���ȷC@���@ӎF@��� C@���`F@��� C@���;F@��� C@���F@���`C@���`F@��� pC@��� UG@���kC@���`G@���`lC@��� g-G@���tC@����MDG@����woC@���@EG@���`8pC@��� NkG@���ߓC@���DG@���>C@���@ÌG@���C@��� yG@���`C@���*G@���`C@���`G@���C@���@@G@���C@���G@��� C@��� `+H@��� xC@���� .H@��� >C@���;H@���@C@���[H@���C@���`GH@���C@���%H@��� fC@���t)H@��� `C@���V#H@���}C@���jH@����_tC@���H@���mC@���`0 H@����MdC@��� 7H@���@']C@���@.H@��� gUC@���`*H@���LC@��� 7H@���#PC@��� &NH@���3C@��� 0UH@���@1C@���$nH@��� Z8C@���`oH@����$C@����$H@����5B@���@H@���B@���)H@���`B@���KH@���B@���@ I@����B@����I@����#B@���Z(I@��� B@���@^I@���`NsB@���2I@���@]B@���8I@���` MB@���`I@��� =JB@���`NJ@���`ZB@���RJ@���lB@��� ~J@���@uB@���K@���byB@���`H�K@���sB@����5J@���9mB@���J@���iB@���J@���eB@���sK@���hB@��� K@���byB@���@J@����}B@���`K@���΂B@���gJ@���B@���K@����B@���FK@���B@����XK@���`ֻB@��� %gK@��� B@���`jK@���`B@���K@���`6�C@���`K@���` C@���8K@���`C@��� K@���`G C@���)L@���` C@���'-L@���@C@����(L@���`/C@���`Y1L@���C@����DL@���"C@���@XL@���*"C@����`L@���z$C@����mL@���C@���@L@���C@��� L@���#C@���L@��� #C@���L@��� C@���L@����B@���`L@��� B@����L@���1B@���`M@��� fB@���`YM@��� B@���M@���B@���9M@���`B@���?M@��� B@���EM@���B@���cM@��� B@��� vM@���B@���M@���B@���M@���B@���@PM@���KB@���M@��� B@����M@���`B@���M@���B@��� M@���B@���dM@��� B@��� M@���ِB@���`N@��� B@���.N@����RB@��� N@���2SB@��� HN@����GB@��� =N@����F2B@���N@���&B@���N@���B@���N@���CA@���[N@���A@���`N@���@pA@��� N@����A@���N@���A@���N@���`A@��� җN@��� A@����^N@��� A@���N@���ϙA@���ZN@���hA@���nN@��� IA@���]N@��� UEA@���`N@���`=A@��� rN@���C,A@���tN@��� (A@���UN@����$(A@���AN@��� NA@���@BN@��� @@���`FN@���@@���`@N@���@@���BN@���@@���`SN@���@@@���@isN@���@@���`vN@��� @@���`mN@��� 7@@���mN@���@@���KN@���ޔ@@���|JN@��� ,@@���`^N@���`J@@���`mN@���@ @@���gN@���@?@���lN@���?@���IN@���Te?@���@WN@���!b?@���`N@��� ~Q?@���`N@����>?@���`qN@���` ?@���@N@���@!>@���N@���>@���cN@���B>@���nN@���@=@��� yN@���ic=@���N@���*=@���kN@���=@��� N@����%<@��� `N@���<@���@O@����$<@���2O@���k<@���`KO@���@;<@���dO@��� VD<@���`O@����<@����5iO@����;@���{kO@���ty;@����aO@���E;@����uO@��� 7;@���`YO@���D;@���`O@���``+;@���`īO@���[;@���ਣO@���7;@���O@���;@��� O@���:@���jO@���:@���@.O@����F:@���`O@����:@���bO@����T:@���NO@���@z:@����/O@���:@��� "O@���m:@���i#O@���Z:@���bO@��� ~a:@��� O@��� ~Q:@���@N@����<:@���N@���-:@���|N@���I9@����N@���9@���N@���@]N9@���@4N@���`}19@���\N@�����@9@���N@���@].9@���`YN@���@%9@��� &N@���9@����$N@���D9@���N@����9@���@NN@���F9@���LN@����h9@����GN@���p9@��� x>N@���p9@���6N@���sj9@���a2N@���^9@���3N@��� yU9@��� 8N@���S9@����v8N@���@D9@���#N@���`9@���`6N@���@[9@���N@���@XR9@��� N@���V9@���` N@���`9@����v�N@����#a9@���jM@���@QX9@��� `M@��� ,i9@����M@���Be9@���M@���u9@���M@��� Oz9@���@M@���e9@��� rM@����09@��� gEM@���9@���`GM@���9@���M@���`9@��� L@���9@����wL@���D9@���|L@����9@��� L@���Ų9@��� L@���J9@���L@���@9@��� L@���9@���ơL@����9@���`YL@���`9@����^L@���`:@��� `L@���@(,:@��� ~L@����}r:@��� L@���%:@���@?L@����S:@���`{L@���<:@���|L@������;@���`AvL@��� :@��� kL@����;@���PqL@���!;@��� kL@���z;@���>gL@���#;@���8L@��� ,;@���L@���);@��� L@���;@��� K@���:@���)K@���:@���K@���@Q:@���K@���:@���7K@���:@��� kK@���1:@��� OK@���:@���RGK@���` :@���)3K@���:@���9%K@���:@��� K@����:@����<K@���ʾ:@���`NJ@����:@���ռJ@���@]:@���J@���:@���`AJ@���:@���@ۗJ@���p ;@���`~J@����$;@���`0MJ@����Y;@���`IJ@���e;@���UJ@���h;@���`UJ@���q;@��� g=J@���;@���/J@��� U;@���J@���;@���I@���b;@���` I@���@;@����vI@���`<@���@ӦI@��� &<@���I@���r'<@��� DI@����M<<@���3I@���@ f<@���[I@���@<@���`I@���<@���PqI@���i<@���@WkI@��� ~<@��� xfI@���<@���@FjI@���8<@���`rI@��� ~<@���vI@���i=@���� vI@���@=@���hI@����#=@���\VI@���J=@���`GQI@���'=@���UI@����h=@���`OI@���~=@���MI@���`w=@����?I@���=@���I@���=@��� OI@���@>@���`I@���2>@�����I@���8>@���'H@���D4>@��� H@���@%>@���H@���>@���@-H@��� >@��� fH@����%>@��� OH@����)>@���௝H@���c(>@��� H@���C>@���͓H@����9>@���`AvH@��� ~a>@����zH@���e>@���`H@����Z>@���`YH@���kq>@���ՌH@���>@���@yH@���>@����xH@���`z>@���`H@���@zt>@���`H@����h>@���uH@����vh>@���nH@���`X>@���uH@���@?>@���xH@����)>@��� guH@���� >@���`AnH@���` >@��� ~QH@��� >@���zTH@���@'=@���`6PH@���=@���@DH@���=@���EH@���`=@���@P9H@���8=@��� 0H@����#!>@���3H@���3>@���`#H@���CT>@���`YH@���`YQ>@���H@���k>@���`H@���`u>@��� DH@���>@��� H@���`>@���G@���H�?@���=G@���ch?@���G@����q?@���3G@��� @@���cG@����v @@���`G@���+@@���lG@���1@@��� fG@����<@@���@͓G@���:@@���:dG@���Z@@���@QG@���`h@@���`A6G@���`w@@����M$G@���{@@����G@���@y@@���9 G@���L|@@���@z G@���ീ@@����G@��� &@@���G@���`@@���JG@����@@���G@���@@@���`AG@���n@@���`kG@���u@@��� G@���@@@���`F@���m@@��� F@���`@@���`kF@���@@@@��� F@���` @@���@?F@��� `@@���nF@���@@���F@���L@@���F@��� A@���F@���&A@���F@��� ,A@���nF@��� *A@���F@���`k9A@���F@���?A@���F@���sJA@���@F@���LA@���{F@���RGA@���@F@����_TA@���VF@���� ]A@��� F@���hA@���F@���ClA@���F@���� uA@���dF@���`qtA@���F@���A@��� F@���:A@���(G@���dA@���G@����A@���G@���`A@���@@G@���IA@����G@���A@����F@���`A@����pF@���A@���G@���A@���sG@��� xA@����5G@���=A@���(G@���A@���,G@��� fA@���+G@���A@���`F@���QA@��� %F@���@A@���`GF@���A@���F@����B@��� >F@���A@���F@��� �B@���@@F@���@F B@���F@���`5B@����F@��� 4B@����F@���`DB@���`F@���`AVB@���*F@���_B@���`�oF@���`dB@��� kF@���@hB@��� tF@���qB@���`qtF@��� B@��� ObF@��� yB@���dF@���B@���eF@���B@��� bF@��� B@����5iF@���`B@���fF@��� ,B@���KF@���`B@���mGF@����B@��� 7OF@���B@���DF@���B@���5F@���`B@���(,F@���`B@���mF@���"B@���`qF@���B@���@'=F@���`Y)C@���l8F@���@X2C@��� )F@���c0C@���`&F@���7C@���`(F@��� xNC@���b!F@����_\C@��� 'F@���chC@���B%F@���� nC@��� F@���rC@���gF@���`HC@��� F@����C@���@X F@���IC@���`_F@���`C@���F@����C@���d'F@���C@���`B5F@���nC@���L<F@���tC@���MF@���C@��� eF@���HC@���W��������eC@���@=@���EH@����5B@�������������`/E@���@B@����.E@���`B@���LE@��� B@���]E@���B@���dE@����5B@���@yE@���`GB@���|E@���cB@��� 7E@���`B@���CE@���|B@���E@����pB@���E@����_B@��� �F@���QB@���F@��� B@���`F@��� `B@��� ~!F@���B@����F"F@���@pB@���@PF@���8B@���` F@���J~B@���`(F@���:|B@���,F@���`/B@��� CF@���dB@���@QF@���`B@���dF@���B@��� ObF@��� yB@���`qtF@��� B@��� tF@���qB@��� kF@���@hB@���`�oF@���`dB@���*F@���_B@���`F@���`AVB@����F@���`DB@����F@��� 4B@���F@���`5B@���@@F@���@F B@���F@��� �B@��� >F@���A@���F@����B@���`GF@���A@��� %F@���@A@���`F@���QA@���+G@���A@���,G@��� fA@���(G@���A@����5G@���=A@���sG@��� xA@���G@���A@����pF@���A@����F@���`A@����G@���A@���@@G@���IA@���G@���`A@���G@����A@���(G@���dA@��� F@���:A@���F@���A@���dF@���`qtA@���F@���� uA@���F@���ClA@��� F@���hA@���VF@���� ]A@���@F@����_TA@���{F@���RGA@���@F@���LA@���F@���sJA@���F@���?A@���F@���`k9A@���nF@��� *A@���F@��� ,A@���F@���&A@���F@��� A@���F@���L@@���nF@���@@���@?F@��� `@@��� F@���` @@���`kF@���@@@@��� F@���`@@���`F@���m@@��� G@���@@@���`kG@���u@@���`AG@���n@@���G@���@@@���JG@����@@���G@���`@@����G@��� &@@���@z G@���ീ@@���9 G@���L|@@����G@���@y@@����M$G@���{@@���`A6G@���`w@@���@QG@���`h@@���:dG@���Z@@���@͓G@���:@@��� fG@����<@@���lG@���1@@���`G@���+@@���cG@����v @@���3G@��� @@���G@����q?@���=G@���ch?@���G@���H�?@��� H@���`>@��� DH@���>@���`H@���`u>@���H@���k>@���`YH@���`YQ>@���`#H@���CT>@���3H@���3>@��� 0H@����#!>@���@P9H@���8=@���EH@���`=@���`6@H@���=@���@ H@��� >@����G@���@U>@���G@��� y>@���௭G@��� >@���G@���>@���~G@���=@���qG@���=@���GG@��� =@���SEG@���@=@���`F@���\^=@���F@���@ty=@���[F@���4=@��� E@���u=@����E@���=@���nE@��� O>@���CE@����#a>@���`E@��� +j>@��� }E@��� O>@���`A6E@���>@���`qD@����x?@���Q�D@��� @@���`˦C@��� a@@���`C@���r;@@���@C@����X@@���@-C@��� yu@@���)sC@���@@��� fC@���@@@���eC@��� I@@���#D@���` A@��� D@���5A@���TD@���dA@��� D@���A@���D@���mA@���"D@���A@���cD@���VA@���D@��� B@���'D@���-B@���D@���DCB@���D@���LB@���`/E@���@B@���X���X������[F@����T<@���SEG@���@ty=@�������������[F@���4=@���F@���@ty=@���`F@���\^=@���SEG@���@=@���@F@���``<@����#F@����T<@���^F@���0=@���[F@���4=@���Y�� ������@$���I@���`���`HK@���3��������� !���K@���#���K@���`K���ՄK@������ ~K@��� J���`HK@���@��� gK@��� ����eK@���N���`YK@���j"���֓K@���:���K@���@���ஆK@���@L���`K@���,���}K@���hd���`sK@���$���`jK@���&���9mK@�������DkK@��� ���cK@��� c���@_K@���`M|���`WK@���X����#QK@���o���@MK@���]���UK@���O���`VK@������CK@���`����:K@���%���|*K@���E���@1K@����(=���`BK@������`YIK@������UDK@���Ô��� ?K@��� \��� 3K@�������@h,K@��� *;���R/K@���"���(K@�������@K@���/��� K@���t��� K@��� ���`0 K@���gE���K@��� c���1 K@������@f K@���t��� ~K@����k����J@��� ���@oJ@���@`���K@����B��� gJ@����QY���`J@���`���J@����B���RJ@������J@����O���`NJ@��� i���@J@������ J@���@6����5J@���DD���JJ@������� ~J@������KJ@���O���ǘJ@���`���`{J@�������RJ@���^��� GJ@������`D-J@���Q���`A.J@���ԥ���$J@��� cI���J@����r����J@�������sJ@���W���J@���$���iJ@���].��� =J@���S��� J@��� Q��� J@���ܾ���mJ@���@��� `J@����A���@J@������1$J@���@���@J@��� U����J@����L���J@��� 15���� J@���@L]���� J@��� c���J@���~1���7J@���@tZ���`I@��� ?���`I@���@c���`0I@��� c���ZI@��� ���I@���@C ��� I@���6p ���`I@����1u ���@I@���\ ���kI@��� ���bI@���> ���I@���^ ���RI@���w ���I@��� ���aI@���@!����I@���~!���@I@���!!��� I@���@"!���3I@���@Ce!��� OI@���@="���I@���u"����I@���"���\I@���]"���`I@���@,#���`I@���N#���I@���#���JI@���=#����I@���Ѩ#���`I@���n#���mI@����R"���I@����Q#���`I@���@24#���I@��� V4$���`qI@���`L$����I@��� !$���I@���` 5$���I@���.#���`I@���#���I@���#���I@����s#���I@����(#���[I@���#���`I@��� A$���I@���r$���2I@��� +Z$���I@���f$��� DI@���$���NI@���`$���I@���$���`6I@���n$���rI@���?$���� I@���@}#��� U J@���@d#���sJ@���#��� `J@���#��� =J@���@y$���`J@���@$���` J@��� $���J@���V$���$J@���@U$����J@���$��� J@���$���@$J@���#��� xJ@���G#���J@���N{#���RJ@���@#��� 'J@���@#���@-0J@���� #���3J@���N#��� 6J@���@CE#���<J@����Z#���`EJ@���@;#���IJ@���@ "���cHJ@���@!���TJ@���|!���`UJ@����A!����WJ@���� !���cJ@���N;"���)SJ@���6"���`NKJ@���"��� DLJ@���@"���`PJ@���"���@pMJ@���h$#���TJ@���%?#���8NJ@���@lA#���JNJ@���#���@oFJ@���#���`GIJ@���@2T#���VJ@���@4#���\^J@���"��� bJ@���@2"����vJ@����"����vJ@���"���J@���"���`J@���@&"���J@����+"���J@���`m!���@J@����!��� J@���@ !��� J@���w!����ɟJ@���"���`ŢJ@���"���J@����#���'J@���#���@J@���W3#����J@���,9#���aJ@���p=#���`J@���@#����J@���2#���J@���8#���sJ@���L#���ϩJ@���F#���J@���ff#���`AJ@���@#��� J@���`#���լJ@���#���`J@���g#����vJ@��� +Z$���1J@���K$����ѸJ@���$���J@���$���J@���@E$���J@����fg$���9J@���@$���J@����$���` J@���f#��� DJ@���#����J@���@#���J@��� 6#���J@���F"#���tJ@���#���|J@����9#���`J@����#���[J@���W#���J@���۟#���`HJ@����#���K@���#��� K@����J#����K@���@ #���` K@���p#���`K@����J#���rK@���].$���IK@���j"$���@W K@���?$���U K@���/$���K@���)$���@ K@���$���@&K@���#���b!K@���,#���UK@���.#���|K@����Յ#���@$K@����8#��� 'K@����#���)K@���@)"���R'K@����Bf"���K@���o"���`K@���H"���K@��� "���@W#K@���@!����M$K@����!!���K@���p=!���@ K@��� !���#K@���!���(K@����1U!����<+K@���*!���2K@����1 ���@o6K@��� ��� ;K@����k ��� ?K@���ш ���`BK@���@J ���QK@���@ ���NK@����!��� TK@���@+!���`XK@���n?!���|bK@���@3 ����v`K@���@ !���@gK@���@!��� kK@��� ���!jK@��� ���BmK@���p ���oK@���� ���RoK@���˭ ��� sK@��� ���rK@���@ ���xK@��� ��� xK@��� ���`~K@����1 ���IK@��� ���`K@���• ���K@���@, ���@hK@���`���mK@���t���` K@���%���jK@����2���K@���>���஖K@���>��� gK@��� ��� K@������*K@���`���iK@���`��� K@��� ���K@���)���`K@���` ��� K@������ K@���`w��� K@���`K��� K@��� ����K@��� \���௅K@���@D��� &K@��� c���@K@�������@yK@��� \��� K@������@K@��� 0��� >K@��� ����MK@��� ���)K@���@���`HK@������rK@���#���`ܞK@������K@���E���@K@��� !���K@���Z���p������"���IK@���<���`_4K@��� ����������"���IK@���N���rK@���H���@K@���$ ���.K@���i���`_4K@���`l���-K@���r��� (K@���<��� x&K@��� ���@K@����ޝ��� K@���"���IK@���[��������/"A@����i~=@����A@���'@@���[����������lA@���@ʋ@@��� A@����@@����A@���@@���`A@��� @@���`A@���'@@���DA@��� ԟ@@����A@���`6@@���A@���\@@���A@����F@@���`A@���n~@@���`A@��� r@@���A@���@h@@���A@���_@@���A@��� [@@���A@���W@@����$A@��� rS@@���`A@���B@@���A@���u8@@���`A@���g2@@���RA@���B5@@����ôA@���@@@���`A@���F@@��� =A@���:<@@���`/~A@��� @@���A@����O?@���A@����F?@��� N{A@���@?@���L|A@���@ ?@��� A@����[?@���@(A@���?@���A@���m?@���A@����v?@���zA@���??@����5qA@��� g?@��� sA@���]?@���A@��� \?@���A@���lp?@���A@���`}?@���A@���}?@���`DA@���q?@����A@���ka?@���GA@���R?@��� A@���@D?@���fA@���`<?@���`)A@���A&?@���A@���`?@���3A@��� ~>@���;A@���>@���`qA@��� >@��� A@���`Y>@���`!A@���hj>@���IA@���]>@���@A@���]=>@����^A@���@&>@���`|A@���=@���{A@���`=@���@ {A@���=@���yA@���=@���esA@����i~=@���@nA@���=@���\nA@���`=@���@jA@���=@���eA@���` =@���``A@������>@���@W[A@���>@��� yUA@����9>@���`OA@���V>@���EA@���n>@����BA@���>@����$@A@���@.>@���@9A@���` >@���s2A@���@>@���@-A@���`>@���'A@���?@���/"A@���\7?@���m/A@���rK?@���.A@���^\?@���GA@����v?@���>A@���?@���EA@���`*?@���PQA@���@?@��� [A@���@.?@���dA@���`@@���DkA@���m'@@���qA@���S>@@���vA@���` U@@��� `{A@���@j@@���3A@���Zh@@����шA@���m@@���PA@��� v@@���lA@���@ʋ@@���\��>������`{@���`NSB@���ł2@���G@���$������=�����������..@���`NSB@���9-@���\B@���@i-@���`N[B@���@;,@���@-hB@���,@��� wB@����,@��� &B@���@-8,@���B@���+@���`B@���+@��� B@���*@���@B@���&>*@���@ӾB@��� *@���7B@���)@��� xB@��� )@���B@���@PY)@���`B@����(@��� ~B@���(@����B@���O)@���C@���9m)@���C@���5p)@���@.C@���)@���C@����T)@��� xC@���`)@��� C@���`*@��� , C@���%*@��� C@���?(*@���C@���n*@���C@���`#*@���`C@��� +*@���C@�����*@���1 C@����}+@��� C@���W+@��� C@���@;l+@���B@����+@���B@��� ,@���C@���1,@��� C@��� A-@����# C@���@z-@���`0C@���EC.@���C@���`ff.@��� xC@���t.@���@!C@���@.@���C@���.@���UC@��� /@���`%C@���n?/@���� C@���%/@���C@���.@���!C@���n.@����#B@���`)[.@���B@���..@����B@���/.@���@ìB@����7P.@���`˥B@���ԅ.@���@B@���@`.@��� B@���@dh.@���(B@��� N.@���@B@���@^.@���B@����ZQ.@���uB@���0.@����MdB@���E.@���7WB@���..@���`NSB@���@ !@���QpC@���@Uu!@���wC@���>!@���!rC@���@ !@���`C@��� @���@.C@��� @���|C@��� @��� C@���P @���`ˍC@����: @��� C@���@ @���`C@���@M @���C@���� @���`C@���@D @���`C@����\ @���C@��� @���C@���!@���`C@��� !@���C@���'!@���@C@���> !@���C@���@ @���C@��� @���`C@���ۿ @���D@��� @���@?D@����t @��� D@����; @��� D@���@x @���#D@��� @���+D@����K @���@=D@����+ @���iKD@���@Q @���HD@����I @���OD@���@e @���WD@����C @���@p]D@���@~q @���`pD@���[ @����wD@���@g @���:|D@���@] @���nD@���@= @����5iD@���@(!@���kD@����e!@���`ND@����M"@��� D@���n"@���`D@���@E"@��� %D@����#"@���`D@����"@���D@����""@���D@���#@����<D@���@!#@��� gD@���h#@���؁D@���@N#@���lD@��� #@���QxD@���@#@���uD@���@^M#@���cpD@���`#@���gD@���U#@��� fD@���o~#@���[WD@����ߜ#@���DD@����#@���`BD@����<#@���2D@���@P#@����w'D@���?#@���@D@���@b#@��� D@���@Uu#@��� D@���.W#@���C@���?#@���@ôC@���@W3#@���C@���@DD#@���8C@���.#@���{C@��� #@��� C@���x"@���C@���`&^"@���ߛC@����L"@����wC@����*"@��� C@���"@���*C@���` "@���~C@���@ !@���QpC@����Y$@���FoG@��� %%@���lG@���vX%@���`oG@���d%@���`jG@����x%@���8fG@���`&@���bG@���1T&@���`){G@���`&@���mG@��� &@���@z|G@���;'@���G@��� '@��� }G@���l(@���G@���`h(@���G@��� C(@���G@����I(@���9uG@���@ (@���nG@���`5(@���KeG@���`/(@���cG@��� (@���@XG@���@)@���nNG@���*@���IG@���p+@���DCG@���jb+@��� 9G@����T*@���I/G@��� *@���� &G@��� *@��� yG@���+@���G@���1T+@���mG@���@J+@��� =G@��� y*@���G@���+@���`F@���.+@��� %F@���E+@��� F@���I?+@���� F@���'+@��� UF@���32+@���F@���`դ+@���� F@��� +@���@F@���+@���2F@���]o+@��� F@���ߛ+@��� F@���`C+@���sF@���+@���@F@���@ +@���F@��� *@���@F@���`*@���F@��� C*@���F@����#*@���{F@���&*@���F@���L*@���F@���,*@���`YF@���)@���`_F@����(@����#F@��� V(@���IF@��� (@��� %F@����#!)@��� F@���(@���lF@���`f(@����5F@���`C(@���sF@����o(@���`F@���Q(@���@-F@����}R(@���ơF@���e(@���@FF@���@u(@���@F@���~(@���@XF@���(@���ԍF@����T(@���`F@���(@���`łF@���)@����uF@���(@���hF@���(@����rF@���@d(@���oF@���@(@���hF@���`f(@��� dF@���`(@��� hF@���}(@����[F@���ע(@���B-F@���)@���F@���`D&)@���@ F@���`)[)@��� %E@���`f&*@����5E@���*@���E@���2+@���`E@����+@���tE@���@d+@���vE@���`,@���ROE@���`),@���`5E@���?-@���@E@���]n-@��� E@���@r-@��� E@���-@���`E@���`}.@���`D@����/@���`/D@���0@��� >D@���9-0@���D@���00@���zD@���`/@���D@���@ /@���@.D@����v0@���D@��� p0@���!D@���0@���`D@���cH1@���|D@���@y1@���`iD@���` 1@���[WD@���`1@���RD@���2@���|RD@���`* 2@���`FD@���@\2@���+D@���ł2@���D@���N{2@���`AD@���rk2@����wC@���` d2@���@?C@���tY2@����^C@����p 2@���C@����1@���@C@���@2@���D@����1@���P!D@���I1@���@&D@����e1@���3*D@��� V41@���4D@���:1@����<D@����D1@��� &>D@���1@���@BD@����}0@��� D<D@���@40@��� !D@���@0@���D@���0@��� D@���0@���`�D@���0@����<C@���@0@���C@���}0@��� C@���`0@����<C@���0@���C@���@P)1@���`NC@���@1@��� =C@���`0%1@���C@���"1@���ൈC@���C41@��� C@��� 1@���rC@���@1@���`uC@���A0@���@puC@��� 0@����5iC@����0@���z\C@����0@���`_<C@���F0@���77C@���}0@���-C@���`S0@���%C@���a*0@���C@���`0@��� gB@���`0@���JB@������0@���B@���9/@����^B@���@Y/@����B@����C/@���C@���A/@���BC@��� /@���#C@���@^/@���);C@���@/@���KEC@���/@���mOC@����ô/@���`TC@���/@���`\C@���!0@��� [C@���@].0@���_C@���@Q80@���kC@����80@��� vC@����*0@���؁C@����0@���@oC@���5/@���@C@���/@���@?C@���z/@���`C@���B/@���D@��� /@���b D@��� y.@���C@���.@���D@���`.@���@D@���@J>.@����D@����-@���(D@���v-@���@mD@���-@���`-D@���`)-@���`3D@���7-@����UD@���@2-@���@PD@���-@���`MD@���,@��� %OD@���`ϩ,@���PID@��� ˭,@���@OD@���,@���YD@���,@��� _D@���3,@��� kD@���*,@���dD@���,@���@eD@���W,@���pD@���+@���̔D@���m+@���@-D@���`=+@���D@���@+@���� D@���+@����MD@��� h*@��� yD@���l*@���(D@���Z0*@���:D@���1*@���D@���d)@���`0D@���µ)@���zD@���@?)@����#D@���Q(@���`6D@��� Vt(@����D@���`Z(@���@D@���O'@���E@���'@���r E@��� BE'@���@p%E@���@ۿ&@���3E@���@;l&@���@5E@���L&@���.E@���+&@��� 6E@���`/V&@���`G9E@����#a&@����@E@��� )&@���@PE@���$%@���[gE@���%@���@qE@���@%@���@uE@���`X%@���byE@���@$@���RwE@���@$@���}E@��� %@����<E@���%@���`ēE@���� %@���ǠE@��� $@��� E@���m$@��� E@���@.$@���aF@���8#@��� F@���@#@���`G F@���@#@���F@����K"@���F@���w"@���U,F@���9m"@��� x&F@���o!@���@h4F@����!@���6F@���@ @���@&F@��� @���@F@���@~ @��� F@���P @���IE@���@> @���E@��� P@���`E@���`#@��� HE@���@���IE@���@��� > F@���@@���dF@���&@��� F@���J@���b)F@���``@���95F@���`p@���8F@���m@���@F@���`>i@���9EF@��� S@���~PF@���@���UF@���`�@���}YF@���F@��� 6XF@��� = @���lF@����,@���@PyF@����@���F@���`{@��� *F@��� @���F@����f@���kF@����}@���F@���@?@���F@���@����F@����n@���@XF@���@���F@��� K@���F@���X2@���F@���L<@���jF@���@'@���BF@���`e@���F@���Œ@���`BF@���P@���`F@���@��� F@���`>i@���F@���`(@���`F@��� @���`H�G@���YQ @���G@���8. @���`Y!G@����^ @��� a:G@���@ @���:G@��� @��� N+G@���� @��� G@���@Fb!@���� G@����Xl!@���` G@���@!@��� G@���H!@��� G@���{!@���`G G@���!@���F@����!@���@XF@���f!@���F@���x!@���`F@����!@����eF@���!@���eF@���@!@����F@���6"@���tF@���+"@���`F@���J!@���`F@���2"@���F@��� "@����G@���*"@���G@���@y"@���`Y)G@���`"@���=G@���"@���AG@���"@���`<G@���"@����5AG@���@f#@���|*G@���'=#@���%G@���j#@���`/&G@����y#@����-G@���@f#@����0G@���@&#@���(G@��� H $@���`G@��� Q$@���G@���Z$@���"G@���Q8$@���)G@���@{S$@��� 4G@���$@��� g=G@��� "$@��� GG@���@5$@���`ANG@����ww$@���QG@��� s$@��� %GG@���A$@���EG@���v$@���KG@���$@���QG@���$@���|RG@���`C$@���>XG@���$@���aG@����Y$@���FoG@���(@����E@��� (@����E@���(@���`E@��� (@��� E@���`2(@���@E@����(@���E@���@(@���@E@���@P(@���<E@���O(@����qE@���(@���@gE@���(@����)E@���`(@���@E@���(@���qE@���(@���E@���(@���@E@���@(@���`E@��� (@����E@���|(@���`E@���(@���E@���@(@���E@���R(@���jE@���@(@����E@���(@���@E@���/(@����ME@���@P(@���E@���p(@���E@����(@���E@��� ((@���.E@���@(@���E@���O(@���@.E@���`(@����E@���)@���E@���)@��� E@���`m)@���7E@���)@����E@���)@����4E@���`)@���E@���)@���)E@���`)@����E@���`)@���E@��� n)@��� E@���)@���<E@����)@���E@���@g)@���`VE@����F)@���`E@���)@���RE@����)@���E@��� (@���@E@���@P(@��� E@���@r(@���@E@���(@���E@����(@���`fE@���(@���RE@��� (@���.E@���(@��� E@��� (@���E@���e(@���`E@����(@���fE@����F(@���� E@���%(@���E@���F(@���2E@���(@���E@���`'(@���E@���i(@���`ME@���w(@����E@���(@����E@���(@���E@���Y(@���E@���Z(@��� uE@���`[(@���=E@����;(@���E@��� \(@���aE@���4(@���E@��� \(@���@>E@����(@���E@���(@���$E@����(@��� E@���4(@��� (E@����(@���E@���(@����E@���]���������6!���`d@������`Kx%@�������������`���eU%@��� SW���6%@���_���%@���`���\.%@���`]���A%@����ף���b%@���� ���`Kx%@��� l���B%@���@���@d%@���`S����%@���_���$@���@d���٠$@������W$@���@��� w$@�����@��� a$@������j$@������ $@���`ʎ���9$@��� !��� H$@������$@���'���$@��� C��� +$@���=J���+$@���` ���$@���@3���1$@������@$@��� ���r$@������#@������@#@������@q#@���p���#@���@���#@������+y#@���� ����$#@��� ���Y#@���h���@Yq#@���@I���_#@���!���J~#@������:l#@��� c ����O#@���`���P#@�������=*#@����K>���@X2#@���&���ka#@����|���@#@��� )���@P#@���`����M#@���$` ���9#@���l ���R#@���  ���3#@���@e ���#@���`o ����#@�������#@���@B���2s#@������t#@���`����^M#@����2T����"@�������"@���~���"@���-X���"@���`���@"@���L���ω"@����8/����M"@���`%?���"@���]���@$!@������Be @������F @���` ��� @����,y����f @��� ���k@���2���b@���?H���j@��� S��� `K@���~1���J@���Q���m?@��� ���"A@����} ���@���J ���`r@����[ ���@���` ���\n@���q���z@���`���*@����8����F@���H@���-w@���@6���@ t@������\@������`b@���/���ef@������{s@���m���e@���`Y7���&s@���໻���/@������@ܾ@���@D���w@���`C����@���v ���@x@��� ���l@���`< ����ww@���`4 ���RW@��� ��� ,@��� ���t@���7 ���/@��� 0 ���w@���D ����n@��� ����~@���, ���@�������`@������ @����> ���B%@���8/����w@���` ���`@����+���r{@����a��� v@���> ���@-@���@]��� @���` ����H@������@X2@���G���(@������@0@���<���@x@���*���@@���d���@O@���]���@���]��� >@���`:����@��� 0���s@���.���@_@���$���@�������`N@���@(��� @���%?���@������`@���� ���`(@����(��� @���@""���@��� p���L@��� 4����@���@P����@���`M<���Z@���$���ǐ@���`(���`z@���ܾ����@��������w@���6���@~@���  ���]@��� 6���n@���@T����@������I@������@۟@���C���# @���`���`8@��� ���`d@���,���g@���@���`@���/���@X@����tZ��� @����d(��� @���Q8����UU@���)���`g@������@P@���@��� $@���x���W@���$���0u@���ܾ���@���@,y���@I@������@���`��� Ga@���` ���}q@����Z��� ˭@����K���&@���� ����^@�������$@���a���@T@���=J���@���`��� @����% ����_,@��� j ���1@����2 ���@hd@���� ��� j@���@ ���2@���� ���@���@ ����@���W ���J@����6!���`@����!!���l`@���w ��� D@����| ���+@���� ���@0@���/ ����#@���� ���`O=@���_ ���`ty@���@l ����.@���_ ���]@��� ���Z @������� @���`m���@! @���V���!b @����C% ���S @��� ����# @���5q ����x @����| ���@ @����e ���J @���@���@ @�������N @���@}R����% @���L���� @��� \����- @������ @���`���o @���`���@=!@���-���!@���@d����ш!@���W���*!@���`%����!@���z��� "@������B%"@���� ���@3"@���@"���]"@��� ����o"@����[p���#"@���r���"@��� ����f"@���O ���"@���F ���"@���N; ���)#@����5 ����#@���4R ���@i#@���@DD ���f$@��� ���2$@���@%���T$@���`��� sZ$@������`$@��� #���$@���H����@;$@������@$@���@,���@$@���p����$@���@"b���`#$@����2����F$@���@ ���`H$@������X$@���`���m$@������ ف$@�������ô$@��� ���`F$@��������ӭ$@���^��� $@������@X2%@���`���eU%@���^�� ������ۗS���@X1@���  S���2@���!����������JS���@X1@����JSS���1@����bZS���1@����nS���`1@���@uuS���1@���`uS����2@���S���r2@���S���@/2@��� S���E32@���єS���62@���ۗS���DC2@���S���r2@���>}S���`6p2@����{S��� 2@����wS���2@���@TS��� Uu2@���y5S���U2@���(S���92@���S����T&2@���  S��� +1@���S���1@���%S���`_1@��� ,S���@1@���@5S���1@���8S���1@����:S��� 1@����BS���1@���DS���1@���@HS���1@���MS���g1@����HS���`1@���$HS��� ҷ1@���JS���@X1@���_���������p="����Q@���`���Q@��� ����������$"����Q@���p="����<Q@���!��� Q@����A ���Q@����(���Q@���`���� Q@���@���Q@���� ���Q@�������Q@����r| ��� ʾQ@���@=!���bQ@���O!���Q@���$"����Q@���`���������_@���1:@���/:b@���F@ �����������������}����J��[��f��n��u��������h`@����@@���`@��� =@@���0`@���@@���``@��� @@���`@���`@@��� ?`@���@-@@���`@���@@���`@���@@���`@����@@���``@���`0@@���`@����A@��� (`@���A@���O`@���A@��� `@���!A@����d`@��� y%A@���@E`@���Q8A@���`o`@���`EA@���`@���PA@���``@����<[A@����;`@���UA@���+`@���OA@���` `@���PA@���`f`@���`A@���``@���@aA@���``@��� ,aA@���@i`@���`_\A@��� `@���`6XA@����`@���JA@���`@��� JA@���@`@���`GA@��� `@���`{JA@��� |`@���IA@����-`@���*:A@���`@���77A@���@`@���@BA@���@``@���`;A@���@W`@���-A@����`@���`(A@����$`@��� f.A@���`x`@���� 6A@���˥`@���(,A@���``@���@.'A@���`ܢ`@��� A@����`@��� &&A@���`[`@���:,A@���ݣ`@���'A@���p`@���-A@���`@����v0A@���``@���`0A@����d`@���{+A@���K`@��� $A@����V`@���@'A@���`2`@���A@��� `@���cA@���``@���+A@���`@����.A@���`@���Q(A@���+`@��� xA@���`@���A@���`o`@����A@���ن`@���m@@���`@��� >@@��� `@��� @@���`@���@@���`@����^@@���@i`@���`@@���P`@���`@@���'{`@���@@���@<y`@����@@���@iy`@��� %@@���`oz`@���`A@���w`@���`A@���` q`@���@@@���n`@���Z�A@���l`@����@@���`l`@���UA@���}k`@���7@@���h`@���@@���3d`@���@@@���a`@���'A@���@E]`@���`@@����\`@���@@���\`@��� y@@���y[`@���� A@���@]`@���A@����d\`@���@)A@����d^`@���-A@����_``@���`.A@���_`@���!2A@���]`@���@1A@���@^`@���@o6A@���` e`@���`.A@���@re`@���3A@���4g`@��� %7A@���f`@���7/A@���l`@��� g5A@��� q`@���9MA@���`I`@��� gA@����v`@���A@���F`@���A@���``@���A@���q`@��� A@��� ɕ`@���@ӮA@���`@���zA@���˕`@���cA@��� |`@��� gA@���`@���@A@���˧`@���A@����_`@���`HA@��� `@���UA@����`@��� &A@���``@���ϹA@���@E`@����#A@���s`@���`A@���``@���!A@���@Ļ`@���A@���`@���A@���`@���3A@���`@���A@���@``@���QA@���@`@��� A@��� `@����vA@���``@���A@��� ?`@���`A@���`@���@hA@����d`@����#A@��� `@���@?A@���`@���A@���`@���)A@���=`@���`A@���``@���DA@���@.`@����A@����V`@���A@���'`@���A@���|`@���`ܾA@���`@����A@����`@���A@��� Q`@��� A@���@%`@���@A@��� `@���@XA@���@7`@���kA@���O`@���A@���`@���SA@���``@���aA@���`�a@����A@���@a@���`A@���a@���A@���Sa@���`A@���'a@��� A@����`@���A@���@%a@��� B@���@ a@���!*B@���< a@���R/B@���`a@���SB@��� a@���jjB@����a@���{B@���a@���tB@��� a@����5B@����Ma@��� үB@���X(a@���B@���*a@����B@���+a@���B@���`(a@����B@���'a@��� үB@���`(a@���jB@��� 'a@���B@���F$a@���UB@���`2!a@���IB@��� a@����B@��� a@���cB@���!a@��� B@���!a@���SvB@��� a@���mB@���<"a@��� DdB@���`(a@���_B@����V,a@���@eB@���-a@���BuB@���?a@����MB@����Pa@���`0B@���Ra@��� B@���Wa@���@FB@���Ya@���`B@��� e]a@���7B@���ga@���7B@���ma@���iC@��� qa@��� GC@����dxa@���`dC@���`|a@���`qC@���]}a@��� C@���a@���|C@���a@��� C@���a@��� C@��� a@���BC@��� }a@����C@���Xxa@���@C@���`fva@���C@���va@���@C@���@ya@���`C@���T{a@����C@��� n}a@���@D@���ീa@���*D@���`ʀa@����(D@��� ~a@���:4D@���<~a@���@@D@���}a@���`FD@���]{a@����JD@���}a@���DSD@���`ʀa@���`_D@���`�a@���`bD@����a@���@gD@���Oa@���kD@����a@���@p}D@���`oa@���sD@���qa@���D@����Da@��� >D@���`ӊa@���D@���ଌa@���KD@���`a@���7D@��� a@���:D@����Ma@���@ۗD@���@%a@��� xvD@���Oa@���` mD@���a@����#iD@���a@���@FjD@��� a@���@qD@���ϛa@���|D@���a@����}D@��� a@��� &nD@���a@���@oD@���ta@���`~D@���`a@���)D@��� Sa@���@pD@��� a@��� ~D@���a@���஖D@��� a@���`D@���˙a@���D@���`a@���D@���טa@���`ݝD@���a@���`D@���̢a@���:D@���a@���`D@���ଦa@���\D@��� a@���{D@���`a@��� %D@���a@���`qD@���`)a@���@D@���a@���@hD@���a@���LD@���Za@���{CD@���a@���CD@��� ?a@���3"D@���a@���(D@���˹a@��� D@��� a@���`D@���଺a@���`N D@���a@���`�D@��� Qa@���`C@��� Sa@���C@���`a@���`C@����a@���`C@����;a@���C@���a@���C@��� a@���C@���@Na@���'C@���9a@��� C@���Aa@���C@���a@��� C@���pa@���1C@���Ba@��� ҧC@���̼a@���@C@���za@���՜C@��� a@���`YC@���a@���C@���`a@���ΒC@���ba@����^C@���8a@���C@���@<a@���@C@���Ka@���փC@���ya@��� OzC@���a@���xC@��� a@��� %C@����Da@��� %C@���`)a@���lC@���@wa@���`YqC@���a@��� oC@���`a@���`hC@���`a@���)cC@���!a@���{[C@���̮a@���'UC@��� a@��� QC@���@%a@����PC@���ٮa@���HC@���`[a@��� CC@���Ba@���B=C@��� ɯa@���);C@���`2a@��� 3C@���ٰa@���-C@���`Ӱa@���"C@���a@���D+C@���a@���`0C@����$a@���@?0C@���@a@���@-(C@���a@���.C@���@ia@���`(C@���ৢa@���@o&C@���ta@���!C@���@a@����MC@����Va@���B@���`a@���2B@���@@a@���`B@���@7a@���@o~B@��� ɝa@��� wB@����va@����sB@����_a@���CB@���ba@���5B@��� a@���7/B@���a@���B@���a@��� B@��� na@���@-A@���˕a@��� fA@���ta@����MA@����ma@��� A@���`a@���PA@��� Sa@���A@���ൊa@����ѐA@����a@���`A@���~a@���tA@���{a@���@qA@����xa@���yA@���{a@���7A@���aza@��� A@���!|a@���rA@���`){a@���`A@���`�ya@���`AA@���`�}a@���`A@���}a@���`_A@���Ba@���@hA@��� a@���`HA@���Fa@���rA@���}a@���A@���|a@���RA@���xa@���A@����Vxa@���A@���'ya@���@A@���ta@���A@���!va@���A@���Zta@����A@��� ua@���A@���wa@����vA@��� ua@���ϑA@���sa@���`6A@���Ora@���΢A@���ana@���`A@���ia@���` A@���ea@����A@���`da@���A@���@ea@����#A@��� da@���`A@���`ba@���RA@���da@���vA@���`oda@���oA@��� `a@���\A@��� ]a@��� QA@���@N[a@���@LA@���yYa@���OA@���Wa@���`WA@���`Xa@���mA@����\a@����#A@���` ]a@���UA@���`Ya@��� A@���`Va@���A@���`]Ra@���A@��� Pa@���J~A@��� Qa@���}A@���Ka@���isA@���Ja@���mA@���@Ja@���@gA@����Fa@���BUA@���qFa@���`NA@���9Ga@���|JA@���p?a@���{SA@��� 5a@��� SA@���/a@���SA@���'!a@���`HHA@���� a@���`JA@���<"a@���@QA@���%a@���SA@���+a@���`ZA@���H*a@���`bA@���+'a@��� &fA@���@!a@���@`A@���@a@���IgA@���]a@���uA@���a@���`_lA@���@Wa@���2cA@���+a@���XA@���`xa@���i[A@���a@���_A@���a@��� gA@����da@��� ~qA@���a@���`xA@���`a@���وA@���a@����A@���a@���|A@���`xa@��� UmA@���0a@���`_A@���a@���XA@���@%a@���LA@���ta@����<A@���`[a@���@7A@���`a@��� 0A@���a@���`#A@���`Ia@���@A@���`a@��� A@���a@����"A@���a@����"A@���`[a@���`&A@���`a@���$A@���@<a@���)A@���a@���@*A@��� na@���` A@���a@���`"A@���Ja@���@A@���O a@���`A@���@N a@���A@����$ a@��� A@���@ a@��� A@����$a@���B A@���a@���A@���a@����@@���Ta@����w@@����`@���@@��� e`@���K@@����h`@����@@���@*`@����%A@���=+`@���-A@���'`@���`+A@����*`@��� CA@���@)`@���IGA@���`*`@����#QA@��� Q,`@����vPA@���"/`@���WA@���0`@���cPA@����h.`@���`NA@���/`@���!JA@���,`@����9A@���+`@��� 1A@����-,`@���`G)A@���@*`@����%A@���*`@���A@���T`@��� >!A@���@W`@��� &A@���@%`@��� =JA@���``@���@IA@����`@���CA@���``@���5A@���Y`@���)A@���``@���D#A@���J`@��� >A@���*`@���A@��� ,`@���`<@���(`@����-<@���`(`@����8<@��� %`@���@(<<@���''`@����GA<@���H(`@���><@���`I)`@���F<@��� n'`@��� NK<@���*`@���\<@���.`@���c<@����6`@���@g<@���`6`@���@o<@��� -`@���@?<@���`.`@����6<@��� ,`@���`<@���R`@����X@@���@@S`@���@e@@��� M`@����u@@���M`@���`ʆ@@���AL`@���9@@���F`@���@@@���@C`@��� @@���`F`@���y@@���C`@���l@@���*D`@��� j@@���@I`@����o@@����J`@���l@@��� L`@���b@@���J`@��� S@@���kE`@���K@@���3D`@���8V@@���BE`@��� %W@@����F`@���B]@@���bE`@���d@@����;>`@��� %_@@���<`@���Q@@����7`@��� G@@���`29`@����L@@���y;`@���`[@@���8`@���g@@���k7`@���@pe@@����M4`@��� {@@���5`@��� =@@���@@7`@���`@@���`8`@���ǀ@@����D:`@����^}@@���:`@���t@@���@r9`@���w@@��� 9`@����vp@@���A@`@��� Oj@@��� =`@��� @@���7`@��� O@@���S8`@��� ,@@���K5`@���U@@��� n5`@��� D@@��� 2`@���@@����d2`@���@ۧ@@���@E3`@���7@@���z6`@���@W@@���q8`@���@@���9`@���@@���`I;`@���֣@@���<`@���`Y@@���@9`@���@@��� :`@���@@@��� ;`@���@@��� ;`@����@@���`>`@����v@@���|>`@���Ļ@@���`@`@���P@@���@iE`@���@@���C`@���B@@���@%C`@��� =@@���`F`@���@@��� G`@��� @@���@K`@���@@@���`IM`@����@@���YM`@���`0@@���K`@���`@@���`J`@���`@@���`N`@��� g@@���`N`@���@@���`V`@���@@@���`\`@���`@@��� _`@���@@���|``@���@@���^`@��� @@���c`@��� f@@���g`@��� @@���@m`@���@@��� ?p`@���@@���q`@��� @@��� nu`@����@@��� w`@���@@@���qv`@����@@����r`@��� @@���`p`@��� y@@���o`@���s@@���p`@���t@@���`r`@���m@@���@|`@����$@@����-z`@���S@@���`)}`@����@@��� {`@���Q@@���a~`@���a@@���a`@���@p@@��� }`@���`q@@���`|`@���|@@����}`@���y@@���J`@���@v@@���q~`@���Pi@@���`@����vh@@���3~`@���d@@���w`@��� OJ@@��� Qv`@���|J@@���u`@���B@@���kw`@���\>@@����v`@����<;@@���t`@���:@@���]u`@��� y5@@���t`@���`G1@@����Mn`@���k?@���@o`@���r?@����n`@���8?@���Al`@����?@���l`@����L}?@����j`@���`]?@��� g`@���@a?@����hf`@����u?@����a`@���q?@���``@���Z?@���a`@���`W?@���c`@���N?@���*^`@����?@��� SU`@��� %>@���U`@���`?@���W`@���?@���Y`@��� ~Q?@���HV`@���a?@���BS`@���?@���@WS`@���d?@���}U`@����ʞ?@���`V`@��� ?@���V`@��� ?@���� X`@����?@���@wY`@���Κ?@���Y`@���`Y?@���yU`@����?@��� nS`@���߫?@���sP`@���Ct?@��� R`@��� R?@���FU`@����B?@����VT`@��� -?@���`R`@���(?@���YO`@���;?@���}G`@��� ??@���@NG`@���E?@���C`@���g?@���@EE`@���l?@���+G`@��� ~a?@���I`@����Tv?@���J`@���!?@��� E`@���` ?@���*F`@���<?@���F`@���@?@���`2E`@���`�@@���OF`@���@@���@E`@���` @@����F`@���@@����H`@���` @@����;R`@���8@@���<R`@���@G@@���`T`@����M@@���U`@���@R@@���@.O`@���@.O@@���`N`@���Q@@���R`@����X@@���za@����D@����;a@����D@��� a@���BD@��� (a@���D@���`a@���bD@���qa@���D@���@a@���� E@��� za@���{E@���`xa@���`%E@���{a@���;E@����za@���`_LE@��� {a@��� SE@���!a@��� _E@���@ͅa@���hE@���|a@���``E@���a@����bE@���ˋa@����pE@���a@���E@���}a@���DE@���a@���`HE@���Ha@��� &E@���@wa@����ѨE@���`2a@��� E@���ta@����$E@����da@���`E@���3a@���E@���a@��� E@���@a@���E@��� a@��� E@���@a@��� ,E@��� a@���ֳE@���@Na@����ME@���aa@���E@���`a@���E@��� a@���E@���@Na@����#E@���9a@���RE@���`Ӵa@����%F@���طa@��� g5F@��� a@��� yUF@���`a@���lF@����ma@���F@���a@��� F@���@a@���F@���Fa@���F@���մa@���QF@����׵a@��� ҷF@���a@���iF@��� a@��� UF@���a@���F@����2a@����5F@��� a@���@XF@���a@���`gF@���@<a@���@F@���a@��� F@���a@���F@��� a@���IF@����va@���`q F@����a@��� F@����a@���@F@���4b@��� fF@���}b@���( F@��� b@��� F@���bb@��� F@���b@����F@���b@���`F@��� ?b@���@F@��� b@����F@���F b@���E@���@b@��� yE@����b@���E@���b@���F@���*b@���`+F@��� +b@���#F@���*b@���F@���#b@���`E@��� ?"b@����#E@���@`+b@���E@��� ?,b@���@pE@���`(b@���ͫE@����2(b@���QE@���80b@���E@���`2b@���DE@���8b@���E@���/:b@��� үE@���5b@���@.E@����2b@���@FE@���0b@����E@���@w)b@���` E@����_$b@���`6E@���@#b@��� DE@���k#b@��� UE@���b@���|E@���@%b@���E@���`b@���E@���b@����E@���b@���@~E@���b@��� wE@��� Sb@���`vE@���! b@��� =zE@���] b@����wE@����b@���zE@����a@����lE@���a@���7E@����a@���%E@����$a@��� yE@���a@���@oD@��� a@��� E@���� a@����+E@���"a@����<KE@���a@���`NE@���Aa@���`GIE@��� ?a@���m/E@���Ɵa@���`%E@��� a@���m'E@��� a@��� =*E@���`ܜa@���`5E@���aa@����EE@���<a@���@IE@��� a@���@IE@���`Ŏa@���`HE@���يa@���k9E@���@a@���(,E@���`a@��� ="E@��� a@���\E@���a@���` E@���a@����$E@��� a@����D@����_a@����D@���ྖa@���D@���a@��� D@���@Na@���`D@���a@���D@��� Qa@����D@���`Ia@���D@����ha@����D@����׍a@���D@���8a@���@D@���za@����D@���`@���Z@@���&`@���!b@@����`@���_@@���`)`@���j@@���`Ŗ`@���p@@���`@���s@@��� `@���@q@@���@`@���v@@���`@���`@@���j`@���@@���`@���@@���`@���@@���F`@����e@@���|`@���`ݥ@@����;`@����@@���Y`@���`@@����$`@���a@@���``@���@ì@@��� `@���`@@����V`@���@@@����D`@���`H@@���``@���@@���H`@���`@@���ޘ`@���@o@@���@`@���2 A@����`@����$A@���'`@���{A@����`@���@X@@���``@���@@���`@���K@@���`Ű`@���@@���`@���`A@���``@���A@����h`@���`A@���`@����eA@���`�`@���@A@���t`@��� A@���@ͽ`@���0A@���`@���`+A@��� `@���P1A@���` `@��� 0A@���`@���`)A@����_`@����<+A@����M`@���$A@����$`@���@FA@���`@���A@���q`@���A@���`R`@���NA@���9`@���@@����-`@���@@���`]`@��� @@���`@���{@@���`@���@@���`@��� ,@@���`2`@���@@@���`@���@@@���`@����@@���@ͷ`@���*@@���`@���`@@����-`@���ة@@���@E`@���@F@@����D`@���)@@���``@���l@@���`ܞ`@���h@@���Р`@����_@@���`@���Z@@��� Ga@���B@���Fa@���`B@���|Ja@��� B@���Ja@����B@���@rIa@��� B@����Ha@���`B@���@`Ga@����C@��� Ia@���C@���Na@���@'C@����Pa@���&C@���@YPa@����#C@���`]Na@���C@���yQa@��� = C@���`Ra@���`C@����dPa@���B@��� La@���kB@��� Ga@���B@���@?`@���`@@����M@`@���m@@����>`@���@@@��� @`@���`$@@���`?`@���`-@@���@`@����?@@���D`@���E@@���JF`@���@>@@���F`@��� +@@���@`@���`@@���@?`@���`@@��� ?R`@���@'=>@����vN`@���[?>@���8L`@���7_>@���`)O`@���@zt>@���P`@���@cq>@���`)U`@����b>@���T`@���@I>@��� ?R`@���@'=>@���!\`@���@Z>@���[`@����$p>@����D``@���>@���_b`@���>@���sb`@���>@���_`@��� c>@���!\`@���@Z>@����`@���`K@@���`@���JN@@���`@���T@@���`@���`Y@@���`@���b@@���&`@���)c@@���``@���`c@@���@`@���\f@@���`@���R@@���`@���@FR@@����`@���`K@@���@_@���1:@���_@���B:@��� _@���@:@����_@���N:@���_@���m:@���^_@���``:@���_@���@-:@��� 6_@����:@��� _@���@:@����_@��� %:@���@3_@���1:@��� (`@���z:@����4 `@���:@���� `@���@:@���� `@���:@���`@���:@���8`@���:@���`@���@:@���a_@���o:@���_@���`j:@���_@��� \O:@���h_@��� O:@����_@���F2:@��� Z_@���/:@���_@����:@���@_@���1:@���a��8�������5qA@���Z0=@���`˦C@��� I@@���d����������A@����O?@���`/~A@��� @@��� =A@���:<@@���`A@���F@@����ôA@���@@@���RA@���B5@@���`A@���g2@@���A@���u8@@���`A@���B@@����$A@��� rS@@���A@���W@@���A@���@@_@@���@QA@��� ~Y@@���@F B@����D@@���@)B@���9@@���;3B@���`0@@���\VB@��� +@@���;kB@����$(@@���B@���1<@@��� B@���O@@���kB@���a@@���B@���@ht@@���C@���@@@��� 9C@����G@@���`\C@���@@���eC@��� I@@��� fC@���@@@���)sC@���@@���@-C@��� yu@@���@C@����X@@���`C@���r;@@���`˦C@��� a@@��� NC@��� @@���C@����@@���`/nC@����v?@���@LC@���?@���`*C@���?@���`C@���?@���`AB@��� ?@���UB@��� ?@���|B@���Œ?@���`B@���k?@���B@����i?@���ƩB@���@/?@���B@���@>@���rB@��� r>@���@-�C@���@>@��� %B@��� w>@���@pB@����V>@���[B@���`=>@���`YB@���>@��� B@���=@���ZB@���=@���@._B@���@^=@���`kYB@����M=@���JFB@���D=@���@)B@���`=@��� B@���Z0=@���A@���3=@���A@���>=@���`A@���@QH=@���A@���jR=@����{A@���@\=@��� zA@����p]=@���A@���=@���}A@����i=@����p}A@���͋=@���@ {A@���=@���{A@���`=@���`|A@���=@����^A@���@&>@���@A@���]=>@���IA@���]>@���`!A@���hj>@��� A@���`Y>@���`qA@��� >@���;A@���>@���3A@��� ~>@���A@���`?@���`)A@���A&?@���fA@���`<?@��� A@���@D?@���GA@���R?@����A@���ka?@���`DA@���q?@���A@���}?@���A@���`}?@���A@���lp?@���A@��� \?@��� sA@���]?@����5qA@��� g?@���zA@���??@���A@����v?@���A@���m?@���@(A@���?@��� A@����[?@���L|A@���@ ?@��� N{A@���@?@���A@����F?@���A@����O?@���b��)@������?G@��� KD@���U@���K@���%���������N@���F@l`8N@WvF@m[QnN@fF@���\N@���0F@���{N@���+F@NN@6L]MF@`,N@:E7#F@��� g}N@���`*F@���yN@��� >)F@���|N@���� &F@�"c|N@ )fs%F@cǒ}VM@(.F@jHM@~[:F@����#IM@���` F@QGM@BF@���@K@���eF@���@K@��� D@����K@���`D@��� K@���D@���LK@���fD@��� K@���3D@���K@���D@���{K@���D@���K@���D@���K@��� HD@���$K@��� D@���`vK@���<D@���`|K@���D@��� uzK@���@#D@��� uzK@���D@���kaK@����E@��� .K@���@E@���kK@���`*E@���oJ@���,E@���J@���%E@����=J@���@"E@���`BJ@���fE@���J@���E@����vJ@���` E@���8J@���KD@���7J@���D@����?J@���D@���@6J@���c�E@���5J@��� E@���LJ@��� *E@���@WJ@���7GE@��� SJ@���OE@��� LJ@���@WE@����[J@���sJE@���_J@���@WSE@���]J@���[E@���PJ@���sbE@���� FJ@����egE@���Q0J@���ajE@����"J@���dE@����5J@���pE@��� J@��� ,qE@��� I@����jE@����vI@���mE@���I@���E@���I@����^E@���I@���`_E@����I@���E@����I@���|E@��� I@���ޔE@���`/I@���kE@���lI@��� E@����I@����E@���`I@���RE@����I@���`E@���}I@����E@���lI@���@hF@���`AnI@���z F@���biI@���@F@���@TI@���@F"F@����4I@���`0%F@���I@���7/F@��� I@���bIF@���c(I@����MTF@���@UI@���NF@��� gI@���QF@���` uI@��� yMF@����eI@���CF@���@I@����^=F@����I@���8>F@���I@��� OBF@���QI@���FF@���I@���*BF@���I@���AF@���I@���`_DF@���ஶI@���MF@��� I@��� LF@���@FI@���SF@���@yI@���SnF@���|I@����xF@����{I@���`0}F@����eI@���F@���1I@���DF@���I@���JF@���@I@����5F@���I@���F@���I@���F@���I@���@F@���I@��� OF@���[/J@��� F@���`0uJ@���@ۧF@���`J@��� F@���@._J@����F@���_J@���F@���`J@���F@��� J@����KG@���J@���`(G@���`0J@���8G@��� =J@���AG@���J@���@=G@���`J@���CG@���J@���`RG@���٘J@���[G@���`J@���z\G@���J@����lG@���rJ@���@W{G@���`RJ@���yG@��� UEJ@��� ~G@���77J@���~G@��� y-J@���tqG@���@J@���@.oG@��� J@���sjG@����J@����fG@���@J@���tiG@���@?�J@��� sG@��� �J@���wG@���I@���pG@��� gI@���rG@���`I@���`wG@���`I@���rsG@���mI@���*zG@����vI@���`AG@��� I@���G@���`I@���@}G@���rI@��� G@���bI@���G@���`YI@���LjG@���DsI@��� G@��� kI@����MG@���aI@��� DtG@���@]I@���@uG@���``I@���|G@����MI@���@vG@���BMI@���`0mG@����eGI@���kiG@��� 7I@���@WsG@���I@��� [G@���`I@���``G@���`AI@���YG@���`NH@���PG@���H@���DG@���jH@���HG@���QH@���CG@��� H@���IG@���[H@���sBG@���սH@���GG@���ͻH@���`NKG@���@-H@��� ?G@���� H@��� =JG@��� OH@���@<G@��� H@���@FBG@���H@��� f6G@��� &H@���1G@���@oH@��� 7G@���H@���`;G@��� H@���1G@���H@���@4G@���,H@���`.G@����$H@���3G@���@uH@��� >G@���jkH@���`=G@��� ^H@���`vGG@���GH@���QHG@���aJH@���VLG@����fGH@���PG@���8=H@����]UG@���AH@���8^G@���qKH@���bG@����ZH@���=aG@���`aH@��� lXG@���xH@���@#ZG@���@{H@���@WcG@����M\H@��� G@��� FH@���fG@���8H@���`G@���8&H@����=G@���H@���\G@����M H@���@G@���G@����)G@���G@���G@���G@����<G@���`G@���G@���G@��� uG@���`G@��� G@���`G@���-G@���G@���G@����fG@���G@�����G@���@G@���`G@���aH@��� G@���� H@����G@���`) H@���@G@��� H@���೑G@���H@���VG@���@H@���QG@��� H@���ාG@��� "H@���?G@���p5H@����cG@���wH@���)zG@���@H@���(G@���H@��� G@���@GH@��� \G@���`H@���@WG@���8H@���$oG@���QH@���eG@���@{H@���vG@���H@���-G@���`MH@���@G@���H@���`G@���@I@���`G@���� I@���G@���`[I@���G@���`RI@���G@���I@���G@���%I@���BG@���{*I@���`%G@����/I@���G@����7I@����G@���:I@����4G@���3:I@���` G@���2I@���aG@��� 0I@���G@���@+I@���`G@���*I@���G@����#I@����4G@���oI@���)H@�����I@����qH@���I@��� (H@��� I@��� H@����vI@���H@���I@���`2H@��� H@����H@���VH@���`vH@���H@���*H@���H@���70H@���H@���24H@���@3H@���9H@��� H@���?H@����H@���jH@���WH@����]uH@���`I@����pH@��� I@���BeH@��� I@��� gH@���I@���_H@��� "I@���XH@��� (>I@���GYH@���`KI@���<LH@��� OI@���LH@���qSI@����QH@���SI@���^H@���MI@���@GjH@���`LI@���@H@���XI@��� CH@���zeI@���H@��� gI@���H@���lI@����H@��� \oI@��� lH@���@sI@���H@���f}I@���BH@���I@���`H@���׊I@���H@���I@���H@���I@����H@���@I@���H@���I@��� I@����=I@���.I@��� I@���/I@���I@����]-I@���eI@���2I@���`)I@���=1I@���@pI@���=I@����fI@���`R?I@���@I@���`BFI@��� I@���EI@����I@��� LI@���@{I@���(MI@���I@����[I@��� I@����fWI@���`[I@���2dI@���I@���gI@���I@����$hI@����I@���aI@��� I@��� bI@���DI@���nI@���-I@���-xI@���-I@����BI@��� I@���` I@���I@���`I@����I@���I@���I@���`I@���I@���`I@���I@���#I@����zI@���` I@��� I@����äI@���`I@����̦I@���fI@��� I@���I@���@3I@��� I@��� I@���I@���I@��� I@���@3I@��� I@���HI@���3I@���I@�����I@���I@���@I@���I@���8I@���I@��� I@����J@���I@��� J@���I@���J@���`I@���`J@���LI@����&J@���@I@���@(J@����I@���@g,J@��� I@����1J@���@ I@���2<J@����I@���-@J@���QI@����JJ@���qI@���RJ@���@ͻI@��� VJ@���`I@���bJ@���I@���=iJ@���I@���QqJ@���`fI@���@qJ@����I@���xJ@���kI@���.J@����I@���J@���½I@���J@���I@����J@���I@���஥J@���`BI@���`J@���I@���`ܶJ@����I@���VJ@���೹I@���J@��� QI@���J@��� I@��� CJ@��� (I@���`RJ@��� I@���J@���`BI@���J@���3I@���J@���I@���@.J@���I@���7J@���I@���J@���I@���@K@���I@����]K@���ාI@���` K@���I@���K@���༃I@���fK@���@I@���)K@���`{I@���@#"K@���` yI@���@&K@����)tI@���@5K@���qI@���@K@���mI@���@K@��� iI@���8K@���`aI@���78K@����ZI@���@2K@���PI@���8K@���@HI@��� BK@���CI@���@NK@���EI@��� YK@����zNI@��� CTK@���@g\I@���VK@���VdI@���RK@���hI@���`BVK@����oI@���QPK@����)tI@���{BK@��� 8wI@���HK@���zI@���`EK@���I@��� HHK@���=I@���RK@��� I@���=ZK@��� I@���`jK@���}I@���`[yK@��� sI@���K@����=sI@���`MK@���QqI@���`K@���jI@���K@���p]I@��� \K@���qSI@���ǸK@���`UI@���෿K@���TI@���K@���@MI@���K@���zLI@���K@���`RGI@���K@���2DI@���@K@����KI@��� 8K@���QI@���`L@��� ^I@����L@���LuI@���-)L@���qI@���-L@���jsI@���/L@����zI@���:L@���`2}I@���78L@���zI@��� l@L@��� uI@����CL@���I@����$PL@���.~I@���`V]L@���(}I@���`YL@��� 8I@���cL@���`I@���@oL@���`vI@����ÌL@���೉I@����ܗL@���I@���L@���`)I@���L@���рI@����L@����)tI@���஽L@���nI@���L@���@pI@���@L@���uI@���L@����zvI@����L@����sI@���L@���tI@���`[L@���j{I@��� L@���GI@���L@��� \I@���.L@���@gI@���.L@���@gI@���L@���I@���`[�M@���I@��� M@���@I@��� M@��� I@��� M@���I@��� M@��� I@����M@���ҎI@���@++M@����EI@���2M@��� ŽI@���2M@���)I@���EM@���GI@���LM@���@I@���`OM@���~I@���eHM@���(uI@���`LM@���`nI@���� UM@��� oI@���`2UM@���@ gI@��� CdM@���eI@���@gM@���$_I@���@GrM@���YI@���[xM@���oWI@��� M@���UI@���M@����fOI@���@gM@���QQI@���@ M@��� PI@���@{M@���VLI@��� M@���JI@���M@��� 8GI@��� M@���@GI@����M@����)DI@���pM@���8=I@���`MM@���VDI@���M@��� FI@����fM@���HOI@���#M@���7XI@����$M@���aI@����M@���`MkI@���N@���nI@���N@���nI@���(N@��� ClI@���`N@����=cI@��� N@���[I@��� 'N@���XI@���`[YN@���TI@����cN@���TI@���ѰN@����MdI@��� N@����fI@����N@���oI@��� LN@���I@����N@���@I@���`IN@���@XI@��� uN@����̦I@����ԿN@����߶I@���@N@����BI@���N@���@I@����̦N@����4I@���N@���஽I@���}N@��� I@���`wN@��� I@��� vN@���`)I@��� xN@��� \I@����CN@��� HI@���{BN@���@I@���`1N@���I@��� /N@���` I@����;N@���@pI@���q;N@���I@����?N@���I@���?N@���I@����v(N@���`kI@���pN@���@3I@���`kN@����I@����N@���@.I@����4N@���I@���@>N@��� I@��� H�N@���I@���N@���-�J@���N@���I@��� L>N@���@J@����[N@���@J@����)dN@���2J@���`tN@��� J@���`}N@���@'J@���`N@����+J@���B}N@���4J@��� C|N@��� \?J@���jN@����CJ@���jN@���aQJ@���.^N@���QJ@���]N@���SJ@���XN@���$WJ@���YN@���\J@���`]N@��� _J@���mN@���@dJ@���epN@��� hJ@��� QN@���`�wJ@���N@���L}J@���N@���`}J@���N@���͂J@���N@���$J@���@N@��� J@����=N@���@̓J@���oN@���`yJ@���N@���`}J@���`fN@��� L~J@���@N@�����xJ@���� O@���8}J@���O@����J@���f O@�����J@��� N@���$J@����zN@���࣠J@���N@���J@���`N@��� J@��� N@���༣J@���` N@���RJ@����N@���\J@��� N@���ױJ@���@pN@���WJ@���N@��� J@���`N@����J@���N@���J@���`N@����J@���@N@���\J@���N@���J@���N@���@J@���@N@���J@���N@���.J@����N@���J@���N@���J@���@WsN@���`J@���@{sN@���@J@���puN@���J@���}N@���J@���`[N@���@J@���@N@���WJ@���`N@���J@���=N@����qJ@���N@���J@���� N@���`J@���N@��� J@���@3N@����qJ@���@.N@����J@���N@���J@���`~N@���`J@���N@���@>J@���N@���@J@���`VN@���J@����ܗN@���8J@��� N@���J@���N@���J@���@?N@��� J@���N@���`MK@���ҦN@��� CK@���N@���K@���೹N@���QK@��� LN@��� K@���QN@���Q�K@��� N@��� uJ@���N@���J@���3N@���@>�K@��� N@����zJ@��� HN@����K@���<N@���@J@���zN@���@J@���`MO@��� HJ@���`)O@���@3K@����*O@��� K@���@:O@���K@���2<O@��� H�K@���j3O@���J@���4O@���-J@��� DO@����J@���`IO@���J@��� (FO@����J@���`MO@���J@���eHO@���<K@���RO@��� K@����MdO@���@ K@���@jO@��� K@���tO@��� K@���O@��� K@���O@���< K@��� O@��� K@���O@���K@��� O@���K@���೩O@��� \K@���O@���RK@����O@���`K@�����O@���`kK@���RO@���G!K@���@.O@����BK@���lO@���#K@���GP@���@pK@���pO@���#K@��� O@��� 'K@��� &P@��� (&K@���uP@����(K@��� P@���(K@����fP@���,K@���`TP@���+K@���P@���`v/K@���@ #P@����.K@��� &P@���s2K@���@*P@���-K@��� 8/P@��� +K@���9P@���3K@���L=P@���`4K@���@P@���`[1K@���`FP@���e(K@���MP@���(K@����fOP@���,K@���LP@��� ;K@���aNP@���z=K@���MP@����CK@��� VP@��� HK@���@p^P@��� HK@��� _P@���IK@���]P@��� NK@���`^P@���@QK@���zpP@���LK@���@rP@����NK@��� vP@���@WK@���}P@���@W[K@��� nP@���@ OK@���P@���`RK@����P@���\K@���`BP@���� ]K@����ųP@���@#bK@���P@���@bK@���P@���`eK@���P@����BgK@���P@���@ oK@���P@���lK@���sP@���nK@���5P@����]mK@��� P@���)rK@���BP@���`M{K@���`)P@���}K@���3Q@���`yK@���# Q@��� {K@��� Q@��� K@�����Q@����K@����Q@���`BK@���Q@���HK@���+Q@��� QK@���@Q@���fK@���u Q@���ǑK@���`Q@��� K@��� Q@���ҖK@���|Q@���@GK@��� Q@���eK@���@Q@�����K@���Q@���@#K@��� Q@���eK@����_$Q@���K@��� (Q@���יK@���)Q@���K@���(Q@���K@���-Q@���K@���,Q@���K@���a.Q@���ܮK@���`6Q@���K@���(9Q@���K@��� ;Q@���K@����)@Q@���̤K@����@Q@���BK@��� <Q@����fK@���`;Q@��� LK@���<Q@���K@���`JQ@���FK@���KQ@���K@���@NQ@���`K@���`}VQ@���{K@��� n_Q@���­K@��� kQ@����]K@���&vQ@���¥K@���|Q@���@#K@���@Q@���@K@��� JQ@���ǑK@���@pQ@��� K@���}Q@��� ǚK@���`�Q@���uK@���`Q@��� K@���Q@��� aK@����xQ@����$K@��� Q@���ѨK@���Q@���K@���@iQ@���@K@����ܿQ@��� CK@����ſQ@����K@���sQ@����|K@��� Q@��� QzK@���Q@��� QrK@���Q@��� lK@���Q@���fK@���@Q@���8^K@���`Q@���`]K@���Q@���[XK@���sQ@���-QK@���`BQ@���<LK@���`Q@���=K@����Q@���V<K@����Q@���5K@���`0Q@���4K@���Q@���)K@�����Q@���(K@���Q@���j+K@���@ͿQ@���j+K@����ܿQ@���#K@���Q@���"K@���Q@���@K@����Q@����K@���@WQ@��� 8K@���Q@���8 K@���Q@����$K@���Q@��� K@���`Q@����vK@���`Q@���K@����Q@���K@���`0Q@����K@���Q@���K@���Q@���`K@��� Q@���FK@���#Q@��� K@���Q@���` !K@���R@��� (K@��� R@���` K@���2 R@���`[K@��� R@���FK@���+ R@���K@���kR@���`VK@���`R@���$K@���R@���Q(K@���@R@����z.K@����OR@���`1K@���@ R@���70K@���� R@����/K@���sR@���@p&K@���@R@���#K@��� R@���!K@��� R@����BK@���R@��� K@��� R@���@GK@��� !R@���K@���[R@��� K@���R@��� \K@���R@���@WK@���YR@��� J@���R@���`J@���z$R@���`fJ@���`.R@����J@���*R@����$K@���!R@���~K@����=#R@���` K@���@@'R@���@K@����$4R@���@K@���@i7R@���K@���`k>R@��� lK@��� ?R@���`K@��� @R@���`K@���@CR@���K@����qDR@���@J@���kYR@���kJ@���=ZR@���J@���@^R@���J@���@_R@���J@���`bR@���J@���@bR@���`K@��� hR@���K@��� &gR@��� K@���-lR@��� K@���lR@���$K@���pR@���eK@���mR@�����J@���iR@��� J@��� `R@���` J@���[\R@���@J@���ZR@���J@���]R@����vJ@���@VR@���J@���UR@����J@���PR@���`vJ@���@EOR@���{J@��� RR@���@J@���?PR@���=J@���ZR@����J@����WR@���`ûJ@��� [R@��� ҷJ@���:eR@���J@���sfR@���`[J@���sjR@���J@���`RkR@���HJ@���`qR@���@ J@����sR@��� J@���`zR@���J@���5R@���J@���R@���uJ@���(R@���aJ@���3R@���J@���ɏR@���J@���R@����vJ@���`ʒR@���@J@���`+R@��� J@����R@���`J@����xR@���BJ@���@R@���J@����R@���J@���ٝR@����J@���fR@���@J@��� 8R@���J@����R@���)J@���aR@���@J@��� R@���@J@���R@���@WJ@���`+R@����BJ@���@R@��� CJ@���BR@����BJ@���R@����K@����R@��� K@���R@����q K@���UR@��� jK@���B S@���-!K@��� S@���@%K@��� JS@���`-K@��� 8S@���@)K@���$S@���.K@��� *S@��� /K@��� 8+S@���@ 7K@����,S@���8K@���3S@���Q9K@���@;S@���<K@���@3;S@�����8K@���1S@��� u2K@���`B2S@��� /K@���`6S@���`-K@��� \7S@���(K@���`6S@���%K@��� 3S@���a!K@��� \3S@���K@���`+.S@���`K@���)S@���K@���^!S@���K@���S@���VK@���S@���K@���@"S@��� J@���aS@���J@���@EsS@��� CJ@���@zS@���#J@���@S@����$J@���S@���`J@���S@����ZJ@���@S@���KJ@���@S@���J@���S@���`I@���`TS@���I@���`S@���iI@���T@���`I@���`�T@���aI@���=T@���@jI@���-T@���nI@���T@��� hI@���`� T@���jI@��� T@���`MkI@��� T@���`qI@��� T@���`krI@���`+T@���vI@���T@��� (vI@���`T@���{I@��� &T@���`vI@���`T@��� QI@���@T@���@.I@����T@���GI@���`�T@����I@����(T@���qI@���(T@����4I@���,T@���@>I@��� 7T@���#I@���9T@���I@��� ;T@���VI@���m<T@���`I@���-<T@����MI@���BT@��� 8I@���@pFT@��� I@���?HT@���@#I@��� KT@���I@���@JT@���I@���ET@��� QI@���DT@���QyI@���KT@���xI@��� JST@����)|I@���@.[T@����{I@���`�[T@��� vI@��� \_T@��� kI@��� 6\T@���GaI@���`]T@���`�_I@���\fT@���8^I@���snT@��� _I@���pT@���eI@���`rT@���eI@��� uT@���WbI@���@zT@��� dI@���ീT@���@bI@���`BT@���`\I@���T@����ZI@��� &T@���2\I@���T@��� `I@����MT@���@._I@���@ϖT@���=aI@����$T@����f_I@���VT@���` aI@����T@����M\I@���`T@���@gI@���`T@��� sI@���൰T@��� tI@���T@���qI@���T@���8vI@���T@���@>I@���5T@���QI@��� T@����{I@���`fT@��� \wI@���`T@���`[qI@���}T@����pI@���T@���-hI@���=T@��� fI@���T@���[I@���` U@���LI@��� U@��� \GI@���@GU@���AI@���� U@��� 9I@���U@����]-I@���U@����"I@���U@��� I@���U@���I@���`TU@��� I@��� !U@��� CI@����q$U@���I@���`)+U@����4I@��� !/U@���`I@���3U@��� uI@��� 7U@��� a I@���@:U@���`V I@���@U@��� I@��� CU@���I@���@>U@���H@���@>U@���H@���YEU@���H@���EU@���H@���LU@���H@���`MU@���H@���MU@���H@���QU@���@H@���YU@���@H@���@G^U@���@H@��� bU@����H@����_hU@���QH@���2lU@���@>H@���TqU@���=H@���uU@���H@���zU@���`H@���`~U@���H@���}U@���@H@��� ~U@���H@���U@���H@���@U@���@H@���U@���2H@����;U@���zH@��� U@���-H@���`ŒU@���qH@��� JU@����H@���`ŞU@���@WH@���ޠU@���@H@���@U@���kH@��� sU@��� H@���!U@��� H@���U@���H@��� 8U@���H@���2U@���.H@����U@���RH@���U@���H@���@U@���H@���U@����H@��� U@���H@���@ͯU@���-H@���3U@��� H@���U@���H@���U@���)H@����OU@���`2H@���@U@����äH@��� \U@���H@���U@���@H@���@.U@����H@���U@���?H@���U@���8H@����%U@���@pH@����U@���`q|H@���U@���tH@���`U@����_lH@���U@���r[H@���@GU@���NH@��� &U@���DH@���@U@���d?H@���`ŎU@���n6H@���bU@���`7H@���qU@���{3H@��� QcU@���G@���SbU@���`G@���@dU@���G@����fU@���`G@���'mU@����G@���kU@��� G@����5eU@���G@����aU@���mG@���� NU@���@G@���=U@���nG@����=2U@���iG@��� /U@��� kG@���2U@���@vG@���@ 0U@��� OzG@���S*U@���[G@���`U@���9}G@���(T@��� ҇G@��� fT@���G@���`T@���1G@���T@���}G@���T@��� zG@���`T@���aG@����T@���EG@����T@��� &G@���\T@��� F@���@ÔT@���F@����vT@���`F@����.T@���mF@���T@��� `F@���T@��� F@��� &T@���:F@���wT@���\F@���)T@���ȏF@���@ӞT@���@QF@����єT@���@ԝF@����UT@���`/F@���@|T@���(F@����wsT@���{F@��� sT@��� %F@���nT@���F@����gT@���3F@���7T@���ǐF@���`a2T@��� F@���T@���`)F@���[S@���`rF@���� S@����nF@���kT@���eF@���T@���iF@���`T@���_F@���!T@���ZF@���T@��� rSF@���T@���@MF@���ST@��� 9F@���T@���0F@���T@���nF@����.T@���,F@���@T@����E@��� W/T@����E@����=.T@���@ͳE@���@*T@��� E@����*T@���`E@���0T@���E@����1T@���ءE@���3T@���E@���@P1T@���ݍE@��� (T@���ϑE@���T@���;E@����T@���E@����$T@���LtE@���($T@���`pE@���`T@���uhE@���� T@���`PE@���@T@���E@���@ET@���WE@����O T@��� E@���@ET@���`&E@����T@���+E@���S@���7E@���2S@���9E@���S@���<E@����S@��� 9E@���hS@����q<E@��� S@���`ME@���GS@���PE@���S@����VE@����S@���]E@���kS@���@cE@����vS@���eE@���S@���=aE@���`TS@���2dE@���`S@���@3cE@����OS@���gE@���S@�����hE@���٩S@���kE@���ǠS@���QqE@���S@���`[qE@���S@���mE@���S@���pE@���S@���mE@���S@���`�oE@���pyS@����=sE@���uS@���`voE@���sS@��� sE@���`nS@���uE@���=jS@���(uE@���eS@���qE@���@GbS@���`uE@���k]S@��� wE@���`kVS@��� rE@���LMS@���fuE@���pIS@���{E@��� CS@���<|E@���>S@����E@���`6S@���}E@���3S@����4yE@���1S@���GyE@���@Y.S@���`VuE@���*S@���`uE@���@{'S@����=sE@��� S@���.vE@���?S@���)rE@���@GS@���BuE@���`S@���tE@����S@���`fvE@��� aS@���`wE@��� S@��� vE@���S@���xE@���#S@���8vE@���JR@���-yE@��� \R@���exE@��� R@���lE@���@ER@��� 8gE@����dR@��� jE@���pR@���8mE@���[R@���`}E@���R@���E@���hR@����vE@����;R@���E@���ޜR@���@{E@��� R@���E@���`ŒR@���༛E@���ތR@���aE@���`R@���E@���@ R@���E@���@̓R@���E@���@G~R@���E@���szR@���ාE@���=uR@���E@���^eR@���E@����cR@���{zE@���`R@���@rE@���aR@���`ffE@���}]R@����ZE@��� [R@���@OE@���\R@��� CDE@���&bR@���5E@����v`R@���@3E@���ZR@���`7E@���UR@����f7E@���UR@���AE@���cMR@���@BE@���`JR@��� GE@���`=R@���DE@���&:R@���.FE@���L5R@���IE@���2R@���@QE@����v0R@��� SE@���@Y&R@����XE@����M R@��� XE@���`�R@���`cE@��� R@���`cE@����R@���`E@��� Q@���kE@����Q@���kiE@���@pQ@���-iE@���8Q@���aE@���Q@���`aE@���`Q@���fE@���-Q@���eE@���@.Q@����fE@���@Q@���@._E@���Q@���-aE@���`Q@��� uZE@���Q@���`WE@���`Q@���`VME@���Q@���kIE@���`+Q@����qDE@���Q@���=E@���Q@���:E@����ſQ@��� L>E@���Q@���`6E@���Q@���1E@��� Q@���(E@��� Q@���)"E@��� Q@���[ E@���׶Q@���#E@���-Q@���E@���@ϪQ@��� E@��� Q@���E@���@Q@���E@���Q@���E@���@@Q@��� E@��� Q@���7E@���QQ@���� E@���@WQ@���D@���@pQ@���D@���Q@��� D@���Q@����D@���සQ@���D@���Q@���D@���@{Q@����D@���`vQ@���`kD@���iQ@���.D@���m`Q@���@D@���[\Q@���D@���YQ@����=D@���ZQ@���̼D@���`+VQ@���@D@���`RQ@���`D@����OQ@���<D@���`JQ@���D@���IQ@���jD@���GQ@��� CD@����CQ@��� D@���(EQ@����D@��� DQ@��� D@���@>Q@���D@���}9Q@���D@���@7Q@���@D@���1Q@���D@���\.Q@���L}D@����x'Q@���`wD@���`)'Q@���tD@���%Q@���uD@���%Q@����oD@���[$Q@���`BnD@���%Q@���z]D@����v(Q@����q\D@���)Q@���@UD@����'Q@���uQD@���})Q@����$PD@���m(Q@���MD@��� &Q@����LD@���`f"Q@���PD@���`�Q@��� KD@���#Q@���LD@���`Q@���XD@���Q@���fD@����Q@���-hD@���Q@���`fnD@���Q@���wD@���= Q@���D@����Q@���`D@��� Q@���@D@���5 Q@���@D@��� Q@���eD@���GQ@���D@���Q@���`܆D@���`Q@���D@���@P@��� \D@���@P@��� D@���@P@���֔D@���QP@���ࣘD@���+P@���`D@���P@���aD@��� P@���@3D@���P@���`fD@��� P@���`D@���P@���e�E@���`ށP@���e�E@���@YP@���.6E@����P@��� L6E@����P@���`E@����tP@��� HpE@���aP@����E@���+QP@��� \E@����;P@���@pE@���QP@��� (E@���@O@���` E@��� O@���uE@��� O@���8E@b>N@/F@���N@���F@���c�������� @@���F��� D@���}@�������������A@�������A@���S����A@������`@@������`@@��� Pܿ���@@���_,��� @@���`a?���@@���_~?����A@���U?���` A@���,?���@zA@���`:L?���b!A@����?���B%A@���@?���`4A@���]M?��� CA@���`?���IA@���@z?���MA@��� Ί?���@hA@���ó?���3jA@����I?��� geA@����;L?���A@���`H?���`A@���?���VA@���`.?���T}A@���a?���[A@����@���xA@��� V@���pA@���@M@���cxA@���@���wA@���8@���@ikA@���@@���_A@����@����TA@���@����KA@���@���@GA@���@���!:A@���t @���`3A@��� @ @��� O:A@����~1 @��� N;A@����_ @���@p-A@���` @���S&A@���@ @���!A@���J@��� A@��� V4@���`A@����&@����A@���t@���@iA@��� @��� A@���< @���`A@����@���`�A@���@���`@@����@��� 40A@���e@���@1A@���`p@���A@���Ut@���@)A@����ww@���A@���@(x@��� yA@����x@��� A@���x@���`\A@���}@���A@���z@���`B@���b@��� ?B@���b@���RB@���b@���`|B@���/@���B@���1 @���C@��� @���`Y9C@��� @����CC@���); @���tC@���@q @���C@���7 @����5C@����2 @���C@���@h @���C@���@-X @���C@��� @ @���1C@���`9m @���`C@���@���1D@���Be@���`GdD@���&@����D@���`ij@���٨D@��� 8@���@D@���@��� D@��� @��� D@���B@��� D@���x@��� D@��� W @���`?~D@����%@��� ~D@�����������̓D@���#���D@���y���`cD@���.���D@���?���ߣD@���@B��� D@������@D@��� ?���*D@������`D@���&���� D@���@}R����`}D@�������#D@���]n���@|D@����G��� |D@���� x����@.wD@��� ���� sD@���a���lD@����d��� &vD@���?���}D@���@����zD@���|s���kyD@����;L���PqD@�������`bD@���-X��� >iD@��� ���gD@���;���`ND@��� t���CD@���3����#!D@���@(���D@���@���` D@���&���D@���V��� D@���@ W ����C@���@ ���@oC@���ʎ ���C@���R8 ���8C@���� ���C@��� ���@C@��� ���mC@����" ��� C@���@ ����#C@��� ����wC@��� e���C@���@����eC@����/7���`C@��� ���C@������C@���f&����eC@����i$��� C@��� R���`AC@���K>���C@����p^���C@���`S���@C@���0��� C@��� ���C@���`\���@C@��� c���QC@���F���[C@��� p��� EB@���6 ���B@���@z5 ���`�B@���\ ���B@���`+ ��� xB@���. ���@(B@����~ ���nB@���>i���`B@���"���`%B@���;���B@��� ���B@���@U����A@������n~A@������'A@���[���A@�������d�� ������0Q@���@;H���cQ@���@SH�������������H4Q@���@;H���0Q@���`H���k1Q@���H����5Q@����H����$4Q@��� yH����:Q@���`H���@O6Q@����H����3Q@���`H���`4Q@��� H���;Q@���H���|:Q@��� ߤH���7Q@���ڨH���3Q@���H���@x6Q@��� H���1Q@���H���0Q@��� &H���s:Q@���`rH���3Q@���3H����5Q@���ӎH���(0Q@���ઊH���0Q@���H���b1Q@���H���4Q@���`H����3Q@���`|H����9Q@���`}H���4Q@���5qH����2Q@���@nH����2Q@���VlH��� <Q@���`H���1<Q@��� YH���AQ@���@SH���@ EQ@��� XH���>Q@��� +bH���@WGQ@���\H���=Q@���iH���S:Q@���@lH���@F:Q@����rH���@Q@��� bjH���IQ@��� aH���KQ@���@"bH����FQ@����7hH���@`KQ@��� hH���?Q@���ϊH���DQ@����AH���@CQ@���`H����EQ@���-H���`JQ@���H���@JQ@��� H���QQ@��� ލH���r[Q@���H���t]Q@���H����$\Q@���`*H���@^Q@���@H���cdQ@���`r|H����fQ@���H����=jQ@���-H���@ eQ@��� H����iQ@��� H���@VQ@��� H����RQ@���ۗH���`VQ@��� 8H���YQ@����ZH���`^Q@���H����w[Q@���`ƚH����=bQ@���%H���ZQ@��� aH���hQ@��� ߤH���KeQ@���@H���mQ@���H���@ Q@���\H���@Q@��� H����Q@����ˆH��� >Q@���@RH���@Q@���H���cQ@���H���|Q@���`CH����VQ@���H����Q@����OH���Q@���H���֗Q@��� H���@ Q@���`TH���bQ@���ڸH����ّQ@��� H����Q@����`H���Q@���hH����tQ@���H���`Q|Q@��� 8H���yQ@���H���3rQ@���H����rQ@���KH���`QlQ@����)H���@?tQ@���@(H���Q@����AH���@WQ@���`rH����Q@���?H���AQ@���MH���'Q@��� H���@?Q@���H���Q@���H���͓Q@���@H���aQ@���H���@pQ@���H���`Q@�����H����Q@���@H���HxQ@���`H���`qQ@���DH����]rQ@���DH����,mQ@���nH���`hQ@���#H��� &nQ@��� bH���@mQ@���EH���AjQ@����H���`\Q@���`H���{WQ@��� H���QQ@���H���OQ@���@dH���@GMQ@��� H����LQ@���H���NQ@���`H���MQ@���H���0IQ@����YH���@IQ@��� H���FQ@���H���SFQ@���pH��� DQ@���`CH���@hDQ@���`H���GQ@��� bH���KEQ@��� H���H4Q@���@;H���e���������-c��� G?���c���6�@�������������c��� G?���-c���Z?����c����I?���൮c���`?���`9c���[?��� c���n^?����ܫc��� M<?����c���?���`9c���6�@���c��� V4�@���� c��� v?��� /c���?����c���`h?���c���);?���`"c���vw?���c��� G?���f��������_@��� B@���;V`@���`}E@�������������` `@��� OC@��� `@���@JC@��� `@���`6@C@���`@���86C@���J`@���`*C@��� _@���J&C@���_@���@*C@���_@���`'C@���`d_@���C@����_@���B@���@_@���`YB@����_@���B@���a_@����B@���_@��� B@���ࣘ_@��� B@���0_@���kB@���ω_@���B@���_@��� B@���n~_@���`B@���@~_@���`GB@���`Tz_@��� `B@��� s_@���B@��� f_@��� `C@���`o_@���`AB@��� k_@���`B@����h_@��� yB@���i_@����B@���@f_@���B@���@c_@���B@���U_@��� B@���`)W_@���B@���a_@���B@��� __@���`B@��� J[_@��� B@��� \_@���B@���`�W_@����B@����S_@����B@���@EO_@���`YB@��� S_@���B@��� O_@���@B@���M_@���PB@���`fJ_@��� fB@��� H@_@����MB@���@@_@���`B@���J_@��� B@���@iK_@���B@���@F_@���B@���@G_@���C@��� 6P_@���`C@���@iO_@��� C@���z@_@���@-C@���8_@��� C@���`}2_@���1 C@��� !+_@���C@���*_@���`YC@��� 18_@���C@���`R;_@���@.C@���@i?_@����C@��� 7_@���C@���@7_@���` %C@���:_@���`2C@���`>_@���Z8C@���0A_@��� >AC@��� n?_@��� DC@���@_@���rKC@���E_@���`FC@���@UH_@���'UC@���@iK_@���mOC@���+U_@���UC@����c_@���@UC@����\_@���cC@��� [_@���`q\C@��� W_@���!ZC@���`;W_@���`]C@���8R_@���YC@��� JO_@���\C@���P_@���_C@��� N_@���eC@��� M_@���@o^C@���H_@���fC@���I_@���pC@��� S_@����C@���U_@���`C@���JZ_@���C@���@Z_@��� C@���U_@��� C@���`fV_@���rC@��� \_@���C@���D\_@���C@��� nW_@���C@���@<_@���C@���8_@���C@��� /_@���C@���?0_@���@C@���'_@���(C@���`#_@���C@���`x_@���bC@���_@��� yC@���_@��� ,C@���@U_@���@D@���_@���` D@���%_@���t!D@��� 9_@���`<D@����K=_@���`9D@��� =_@��� :D@���B_@���;D@����@_@���`GAD@���B_@���@CD@���R_@���QD@���@T_@����RD@���@U_@��� RD@���Y_@����wOD@���e_@���zdD@���@f_@���`D@���@k_@���bD@���ki_@���gD@����l_@���mD@���y_@���rD@���_@���xD@����Մ_@���`D@���0_@����D@���_@���@­D@��� _@���ID@���q_@���`D@���_@���dD@���`R_@���D@����_@���D@���u_@����D@���\_@���`D@���@i_@���D@���_@��� D@���_@��� `D@��� n_@���2D@���`_@���`D@���@_@���1D@���}_@���D@���`f_@���LD@���@_@���`D@��� _@����D@���f_@���`D@��� _@����5D@���@i`@���رD@���"`@���kD@��� `@���D@��� `@���D@���`@���CD@��� `@���D@���`@���l�E@���` `@���E@��� `@���E@���`@��� �E@����-`@���`E@��� `@��� E@���`@��� E@��� #`@���E@���`&`@���E@��� %`@��� E@���`&`@��� $E@���@i+`@���+9E@���@1`@���.E@���A2`@���3E@����q6`@���8E@���T7`@��� 0=E@���@7`@���`RE@���`8`@���RE@���� 8`@���3ZE@���;`@����{E@���@WA`@���zE@���@.C`@���`}E@���XD`@���`){E@���9C`@��� tE@���JH`@��� ,qE@���H`@���ZE@���M`@���IE@���N`@��� FE@���@iO`@����ME@���`xP`@���@ME@���`P`@����BE@��� SS`@���5E@����T`@���)3E@����T`@���,(E@���;V`@����$E@���S`@����v E@����R`@���@'E@���`L`@���(E@���M`@���`E@��� I`@���E@���@I`@���E@����F`@���E@���`xF`@��� E@��� A`@���E@���`>`@���D@���<`@���@D@��� <`@���`0D@����V8`@���D@���"5`@����<D@����6`@��� D@��� 9`@���@?D@���@N9`@���UD@���6`@���\D@���/8`@���IwD@���`6`@��� =jD@���@i-`@���baD@���)`@���UD@���X(`@���PYD@���&`@���@.WD@���%`@���9MD@����"`@��� `;D@���`2`@��� ~9D@���`]`@���`/D@���8`@���@)D@����_`@����#D@��� `@���3D@���`@���@D@���H `@���` D@��� ( `@���`D@���q`@��� D@���``@���D@����_@���KD@���_@���`C@���`)_@��� C@���?_@���C@����)_@���C@���_@���`_C@���_@���C@����_@���`C@���=_@���C@���_@���C@���`_@���`C@���O_@���3C@����_@���`AC@���_@���@C@���_@���C@���_@��� C@����$_@���'C@���_@���`HC@���`T_@���C@����_@���@C@���@_@����#C@���`@���\C@���``@���``C@��� `@���VC@���` `@��� OC@���g�� �������_@���Z@@���2`@��� OC@���?���������������``@���YA@���9`@��� OjA@���`@��� %gA@��� `@��� DlA@���0`@���@tA@����m`@��� ,qA@���@E`@���ZxA@���z`@���߃A@���`@���IA@���@N`@��� xA@���`@���dA@���=`@���abA@���`@���2[A@���``@���YA@���_@���Z@@���_@���@@@���!_@���`H@@�����_@���@@��� ү_@���@@���_@���@@���_@���@@���`x_@����v@@���@_@���U@@���&_@���'@@���_@���Z@@����_@���B@���@_@���`YB@����_@���B@���`d_@���C@���_@���`'C@���_@���@*C@��� _@���J&C@���J`@���`*C@���`@���86C@��� `@���`6@C@��� `@���@JC@���` `@��� OC@��� `@���7OC@��� `@���?C@����M`@���@C@��� "`@���B@��� "`@���B@��� )`@���B@���@w+`@���֓B@����-`@���`B@���=-`@���B@���`)/`@���@aB@���@W-`@���`NB@���j.`@���@B@��� ,`@���B@���-`@���2 B@���,`@��� B@���,`@��� B@���.`@���RA@���0`@���B@���Z2`@���@?B@���2`@���mA@���<0`@���A@���@./`@���@FA@���-`@��� DA@���+`@���A@��� +`@��� A@���*`@���3A@����2(`@���A@���`)`@���`_A@���`@���bA@���@i`@���iA@���`@���A@��� `@���ߋA@���`@���A@���`@����<A@���S`@���@•A@���F`@���!A@��� `@��� fA@��� Q`@���`ċA@���Z `@��� gA@��� `@���`A@���`@��� A@���`@����A@���b `@���}A@��� `@���@-xA@���`@���@.oA@��� `@���jA@��� `@���`nA@���/ `@���@qA@���@i `@���sA@���� `@���yA@��� `@���`sA@���z`@����wA@���``@���`vA@���``@���qA@���`@��� %wA@��� e`@��� A@���`�`@����^}A@���_@���`~A@���3_@���@FzA@���`_@���`xA@���_@���}A@���}_@���mwA@��� _@���isA@���_@���`xA@��� _@���(tA@���_@���gA@���_@���@lA@���=_@���@eA@���_@���@\A@���_@���]A@��� _@���XA@���_@����NA@��� _@���UA@���_@��� _A@���_@���qA@���`v_@���`jA@���$_@���`hA@��� _@���eA@���_@���bA@���_@����_A@���_@���YA@��� J_@���`OA@����M_@���IA@���_@���!JA@���8_@���cHA@��� _@���`qDA@���@_@���`YAA@����d_@���@7A@���_@���EA@���`_@���AA@��� _@���@DA@��� l_@���ZHA@���_@���`PA@���@U_@���`HA@���@_@���`HA@���_@���LA@���@_@����UA@���n_@���@XA@���@_@���rSA@���G_@���@TA@���u_@���^A@���_@���U\A@��� _@���`GaA@����_@���ZXA@���_@���JNA@��� l_@���@8A@���f_@��� ~9A@���_@���4A@���@ͳ_@��� 9A@���$_@���*JA@���±_@����JA@��� _@����#AA@����_@���9=A@���D_@���1A@���`k_@���@o&A@���B_@��� $A@���_@���i+A@���_@���1,A@���k_@���`q4A@���8_@���@7A@���`_@���Z@A@���`x_@���@A@���_@���HA@���_@��� CA@���u_@���QA@���`�_@����$`A@���_@���� ^A@���a_@����RA@����_@���@IA@���`f_@���@LA@���_@���`SA@���`_@��� XA@���_@��� RA@���١_@���NA@���`_@��� OA@���@ _@���`AVA@���@_@���]A@���5_@��� aA@���T_@��� _A@���@ͣ_@���SfA@���D_@���cA@���8_@���hA@���_@����#iA@����_@��� UmA@���_@���@cA@���`_@����dA@��� _@��� xfA@���_@���@lA@���_@���`uA@���0_@���}A@���@_@��� %wA@���Q_@��� wA@���!_@��� D|A@��� җ_@���UA@���`_@���A@��� _@���`݅A@����_@����MA@���ސ_@��� >A@���@_@���QA@���@_@��� OA@���B_@���A@���`T_@���@A@��� 1_@���A@����œ_@���@A@���8_@���A@���_@��� A@���`�_@��� A@���@͟_@���@A@�����_@���A@���&_@��� A@����_@���@A@���_@���A@���_@���@A@���8_@���@A@���\_@���tA@���&_@��� xA@��� _@���DA@���_@��� gA@���`k_@��� &A@���_@���A@����O_@���`A@����è_@���A@��� H_@���JA@���t_@���B@����׫_@����$�B@���`_@���B@���࣠_@���B@���O_@���`B@���`k_@���B@���=_@���\&B@���_@����#)B@���0_@���-B@��� _@���s2B@���_@����:B@���z_@���@7B@���_@���=B@���_@���iCB@���&_@���@DB@���W_@���DKB@���_@��� KB@���a_@���@pUB@���`_@���cXB@��� ҟ_@��� \B@���_@���^B@���`f_@���`SB@��� җ_@���`GQB@��� _@���`ZB@���=_@����^B@��� n_@���`XB@���_@��� NB@���_@���JB@���u_@���[B@���@ _@���[WB@���`_@���@oVB@���&_@���@YB@���_@��� ZB@����_@���c`B@����_@���`ZB@���@_@���gB@���T_@���2cB@���@͋_@���lpB@���@_@���sB@���@_@���`nB@���ԑ_@���nB@���E_@���`sB@���_@���dB@���Җ_@��� dB@���_@���`kB@��� \_@���`jB@���_@��� sB@���_@���szB@��� _@���~B@���_@���@wB@���f_@���PqB@���`_@���kB@��� _@���tB@���\_@���@.wB@���_@����<sB@���@{_@����$B@���_@���|B@����)_@���B@��� _@���B@����_@��� ,yB@���`_@���`GyB@���ೱ_@���{B@����մ_@���`_tB@���_@���l`B@��� _@���@peB@���`_@���UlB@��� _@���`oB@���-_@���BuB@���_@���~B@���`+_@���`vB@���_@���uB@���@_@��� B@���n_@���`B@�����_@��� B@���_@��� B@��� _@���B@���-_@���8B@���_@��� ҏB@��� _@���@B@���`ʶ_@���SB@���_@���`B@���@E_@����B@���_@���ൠB@���`v_@���`ʞB@���_@���rB@���_@����wB@���_@���B@���x_@���ƱB@���@ͧ_@���B@���`_@���B@���@_@���{B@���_@���B@���\_@���B@���_@���B@���@_@���rB@��� _@���@B@���@_@���`B@���_@���B@����_@���B@���h��������SEG@��� [<@���5H@��� y>@���0������� ������@H@���?=@���@H@���=@���H@��� =@���H@��� =@��� H@����$=@���H@���`=@���H@���=@���{H@���=@���H@���@=@���`,H@���?=@��� .H@���``=@����#H@���=@���@H@���?=@���SEG@���@=@���GG@��� =@���qG@���=@���~G@���=@���G@���>@���௭G@��� >@���G@��� y>@����G@���@U>@���`G@��� >@��� ,H@��� =@���| H@���`_=@��� gH@���=@���H@���=@��� �H@���=@���kG@����=@���G@��� ّ=@���`G@��� g=@���G@���`6`=@���3G@���d=@����vG@���@zT=@���`HG@���U=@���BG@���@e=@���` H@���aZ=@��� H@���@:=@���`H(H@���y<@���2H@���9<@���c0H@���<@���@)5H@����<@���5H@��� [<@���@G@���@ۏ<@��� G@���2<@���G@���`)<@��� G@���<@���`YYG@����=@���SEG@���@=@���i�� ������OQ@��� C@���@ET@���aE@������������ Q@���[ E@��� Q@���)"E@��� Q@���(E@���Q@���1E@���Q@���`6E@����ſQ@��� L>E@���Q@���:E@���Q@���=E@���`+Q@����qDE@���Q@���kIE@���`Q@���`VME@���Q@���`WE@���`Q@��� uZE@���Q@���-aE@���@Q@���@._E@���@.Q@����fE@���-Q@���eE@���`Q@���fE@���Q@���`aE@���8Q@���aE@���@pQ@���-iE@����Q@���kiE@��� Q@���kE@����R@���`E@��� R@���`cE@���`�R@���`cE@����M R@��� XE@���@Y&R@����XE@����v0R@��� SE@���2R@���@QE@���L5R@���IE@���&:R@���.FE@���`=R@���DE@���`JR@��� GE@���cMR@���@BE@���UR@���AE@���UR@����f7E@���ZR@���`7E@����v`R@���@3E@���&bR@���5E@���\R@��� CDE@��� [R@���@OE@���}]R@����ZE@���aR@���`ffE@���`R@���@rE@����cR@���{zE@���^eR@���E@���=uR@���E@���szR@���ාE@���@G~R@���E@���@̓R@���E@���@ R@���E@���`R@���E@���ތR@���aE@���`ŒR@���༛E@��� R@���E@���ޜR@���@{E@����;R@���E@���hR@����vE@���R@���E@���[R@���`}E@���pR@���8mE@����dR@��� jE@���@ER@��� 8gE@��� R@���lE@��� \R@���exE@���JR@���-yE@���#S@���8vE@���S@���xE@��� S@��� vE@��� aS@���`wE@����S@���`fvE@���`S@���tE@���@GS@���BuE@���?S@���)rE@��� S@���.vE@���@{'S@����=sE@���*S@���`uE@���@Y.S@���`VuE@���1S@���GyE@���3S@����4yE@���`6S@���}E@���>S@����E@��� CS@���<|E@���pIS@���{E@���LMS@���fuE@���`kVS@��� rE@���k]S@��� wE@���@GbS@���`uE@���eS@���qE@���=jS@���(uE@���`nS@���uE@���sS@��� sE@���uS@���`voE@���pyS@����=sE@���S@���`�oE@���S@���mE@���S@���pE@���S@���mE@���S@���`[qE@���ǠS@���QqE@���٩S@���kE@���S@�����hE@����OS@���gE@���`S@���@3cE@���`TS@���2dE@���S@���=aE@����vS@���eE@���kS@���@cE@����S@���]E@���S@����VE@���GS@���PE@��� S@���`ME@���hS@����q<E@����S@��� 9E@���S@���<E@���2S@���9E@���S@���7E@����T@���+E@���@ET@���`&E@����O T@��� E@���@ET@���WE@����T@���E@��� T@��� E@���@S@���`_E@���@S@���D@���IS@���D@���S@���D@����S@���D@���S@���D@���@S@���@ԽD@���@S@��� `D@���dS@���D@���S@���DD@���AS@����D@���@_`S@���8~D@���bAS@��� fD@���7S@���kD@���� 2S@���lxD@����2S@��� fnD@���@p)S@���^D@���@(S@���MD@���LS@���`3D@���S@��� U-D@���S@���9D@���BS@����9D@��� S@���0D@���@S@���1D@���R@���&D@���#R@���@'D@���SR@��� 2D@���`R@��� 8D@���� R@���QD@���� R@���jRD@��� R@���=D@���@R@���@P9D@���R@���@BD@���R@����v@D@���R@���@p5D@����ҷR@��� %/D@����-R@��� )D@���@XR@���`+D@����R@���D@���R@��� D@���@R@���D@���R@���D@���jvR@���C@���`uR@���@C@���0}R@���`C@����FvR@��� ̼C@���@ kR@����C@��� s_R@����)C@��� WR@��� C@��� WR@��� aC@���VR@���C@���IR@���8C@���OFR@���C@���AR@���C@���<R@���@C@���`6R@���`fC@���@*R@���qC@���`%R@���@C@���`x"R@��� C@����R@���C@���R@���C@����R@���C@���R@��� C@����R@���C@����R@��� C@���`R@����fC@��� R@���C@���@R@����C@���R@��� C@���@Q@���� C@���`Q@���C@���zQ@���C@���@Q@���@3C@���Q@���C@���mQ@���`)C@���`Q@���kC@���`Q@���`C@���Q@����ܿC@����fQ@����C@���`Q@����fC@����qQ@���C@���Q@���C@����;Q@��� HC@���Q@���)C@����Q@����MC@���8Q@���`[C@���`Q@��� C@����ܿQ@���@WC@���Q@���C@���`�Q@���෷C@���Q@���qC@���OQ@���C@���@EQ@���DZC@����ܯQ@���`C@���@Q@���`C@���\Q@���C@��� !Q@���C@���Q@���WC@��� !Q@���C@���@{Q@���C@���`Q@���`C@���Q@���C@���`ʖQ@���C@���:Q@���C@���`Q@���@WC@���`Q@��� C@���@pQ@���@C@��� \Q@���=C@����)Q@���VC@���[|Q@���@C@���`uQ@���C@���uqQ@���C@���QmQ@����=C@���eQ@���`C@���`bQ@���C@����\Q@���@C@����XQ@���C@���@3WQ@���@gC@���`UQ@���)C@��� SQ@���� C@����SQ@����BC@���OQ@��� C@���PQ@���@C@���UQ@����C@���zYQ@���C@���@3[Q@���qC@���aQ@���HC@���`Q@��� C@���@^Q@���D@���bQ@���D@���dQ@��� D@���`fQ@���RD@���Q@����D@��� Q@���)D@���OQ@���D@���OQ@���� D@���`Q@���D@����ܣQ@��� aD@���@WQ@����4D@��� Q@���C@���Q@����C@���Q@���@C@���ϡQ@���`C@���@Q@���C@���0Q@���C@���@YQ@��� D@���OQ@���B D@���`Q@���GD@����vQ@���`D@���YQ@����qD@��� !Q@���`�D@��� ºQ@���D@���\Q@���@.D@����ſQ@����D@���۾Q@��� QD@���Q@���@"D@���Q@��� #D@���Q@��� u"D@���Q@���{*D@����Q@���&D@���Q@���&D@���@Q@��� "D@���Q@����=#D@��� aQ@���`D@���Q@���aD@���Q@���`kD@���Q@��� D@���@Q@���k!D@��� Q@��� CD@�����Q@���D@���zQ@���D@���`Q@����D@���@@Q@���@!D@���BQ@���@D@��� Q@���[ D@���R@���`D@���`)R@���!D@���@Q@���p%D@���\Q@����(D@���JR@��� /D@��� R@���$7D@���@ R@��� :D@���R@���@3;D@���R@����9D@���@3R@��� H8D@����fR@���@6D@��� R@���@.7D@���@R@���1D@����R@���q;D@����dR@���`BD@���TR@��� GD@���@R@���LD@����R@���`ND@���OR@����fGD@���p!R@���`RGD@���8&R@���aBD@���)R@���)BD@���@ +R@���2DD@����),R@���JD@���(1R@���HD@���|3R@���\VD@���@:R@���YD@���&FR@���@bD@���@JR@����hD@���@JR@���jD@���QIR@���lD@���@CR@���kD@���`�CR@���oD@���AR@���pD@���L9R@���QiD@���9R@��� oD@����q8R@���7pD@���@p.R@����BoD@���m(R@���QqD@���D$R@���@{{D@���z R@���|D@����d R@���`D@���R@����MD@���`}R@���@D@���mR@��� D@���r R@���D@���` R@��� D@��� R@���ࣘD@���@R@���יD@��� aR@���VD@��� Q@���יD@���+Q@��� D@���Q@���D@���Q@����D@��� Q@��� 8D@���`kQ@��� QD@���zQ@���HD@���Q@���@D@���?Q@��� 8D@���YQ@��� 8D@���Q@���D@���=Q@���@D@���`Q@���ۨD@��� 8Q@���D@��� Q@���D@����)Q@���D@��� Q@���@.D@���`fQ@���8D@����Q@��� D@���`BQ@����BD@���^Q@����zD@���@Q@���#D@���Q@���`RD@���Q@����D@���Q@����D@���Q@���D@���@Q@���� D@���@Q@���D@���෻Q@����D@���8Q@���ѠD@���8Q@���$D@���@Q@���­D@���Q@��� CD@���תQ@���D@���@Q@����D@���@YQ@����ôD@��� Q@���D@���Q@���`D@���DQ@���@3D@��� Q@���D@���Q@���FD@���Q@���@D@����ܫQ@����D@���`Q@���@pD@���Q@���`E@��� Q@���E@���`)Q@���E@���cQ@��� E@���Q@���E@���Q@���`E@���Q@���@#E@����MQ@��� &E@���Q@���`%E@��� Q@���[ E@���j�� ������@Y@���@ +@��� ~Z@���`66@���5���������IY@���@5@��� IY@���#5@���^MY@��� 5@����dLY@���@i5@���PY@���H`5@���`�OY@���A5@��� RY@��� &.5@���`fY@���@(<5@���fY@���`.5@���mY@���%5@���8rY@���$5@���`xvY@���>5@���`doY@���HP5@���@.sY@���5@��� uY@���k5@����)pY@���t5@���8rY@���25@��� JgY@���d6@���zdY@����wG6@��� hY@��� &N6@��� lY@���cx6@���5qY@���`66@����tY@���w6@��� nwY@���c6@���ByY@���@Xb6@��� Y@���r6@���`ņY@���`o6@����Y@����Ye6@���Y@���76@���ךY@���`6@��� ZY@���`S5@����Y@���5@���@Y@����5@���@ͯY@���5@���QY@���@ͻ5@��� Y@��� 5@��� Y@���5@���`Y@���`5@��� !Y@���5@��� Y@���5@���½Y@���5@��� JY@����ʮ5@���Y@��� N5@�����Y@����n5@���@gY@���gt5@���Y@���`M5@����Y@���B5@���Y@���@<5@���Y@���5@���Y@��� \5@���@Y@����4@���Y@��� N4@���Y@���4@��� Y@���`4@���@@Y@���4@���Y@���b4@���Y@���@4@��� nY@���`4@���Z@���T4@���Z@���`*4@���EZ@���4@���u%Z@���`4@���0)Z@���4@���@E#Z@���14@���!Z@���@4@���@gZ@���u4@���Z@���Hp4@���� Z@����vh4@���`&Z@��� rk4@���=-Z@����vX4@���-Z@��� OJ4@���q+Z@��� G4@���@+Z@���84@����;Z@���@/4@���`>Z@����4@���p=Z@���3@���`6Z@���@3@���1Z@����3@���&6Z@��� s3@���5Z@���3@���W*Z@���;3@���G)Z@���3@���x!Z@���@Κ3@���`xZ@��� ~3@���Z@��� X3@��� Z@���@ۯ3@��� Z@���53@����Z@��� 3@���Z@���Ʊ3@���WZ@����q3@����Z@���I3@���wZ@���h3@���6Y@���`/f3@��� CY@���@K3@���Y@���@3@���`TZ@���!3@���Z@���`)2@���T!Z@���2@���`+Z@���A2@���G=Z@���@'2@����HZ@���`մ2@���@gLZ@���@z2@����$LZ@���<2@���IZ@���@2@���FZ@���w2@����qHZ@��� h2@��� CLZ@���@`2@����KZ@��� ~Q2@��� XZ@���)2@��� [Z@���`052@��� _Z@���.2@��� gZ@����1@��� \gZ@���1@��� !oZ@���`1@���=rZ@����Ѩ1@���@vZ@���`ܞ1@���`ʂZ@���g1@���Z@��� B1@����;Z@����>1@���`fZ@���`<K1@���xZ@���;1@��� !Z@���`"1@���&Z@���0@����Z@���70@���`Z@��� e0@��� Z@����0@��� Z@���0@���`)Z@���z0@���`Z@���8n0@���`0Z@���t0@���EZ@���@0@��� Z@���@Q0@���}Z@���2s0@���Z@���@zd0@���`MZ@���:L0@���Z@����LM0@���Z@���B0@���Z@����20@���aZ@���0@���xZ@��� 0@���Z@���F0@���}Z@���`/@���8Z@��� /@���@3Z@���@ /@���@Z@���`Մ/@����;Z@���`s/@����Z@���@L/@���aZ@���@/@��� Z@���.@��� ~Z@���@.@���Z@��� .@���`Z@���W.@���Z@����}-@���kZ@���`-@���`Z@���`-@���Z@���r-@����Z@���h-@���Z@��� c-@����Z@����-@���@ Z@���`R-@����Z@���6-@���@Z@����}2-@���Z@���-@���@Z@���@^,@���6Z@���,@����׿Z@���N,@���Z@�����,@���@Z@���`,@���@,Z@���,@���@Z@���2-@��� Z@��� -@��� Z@���,@����FZ@����,@����Z@���,@���@͏Z@���@,@���kZ@��� H,@���ρZ@���@u,@����Z@����ɯ,@���Z@���s,@���Z@���_,@���`)Z@���@,@���Z@���@ +@���@|Z@���+@��� vZ@����,@���@YvZ@���`,@���nZ@���@9,@���JfZ@���`M,@���aZ@���H,@���`MWZ@���8,@���pMZ@��� ,@���@wMZ@���,@��� H\Z@����L,@���`kbZ@���'-@���^aZ@���z-@���`gZ@���-@���^Z@�����@.@��� _Z@��� i.@���`+fZ@��� .@���eZ@���@ɫ.@���^Z@����.@���^Z@���@.@���`ffZ@���.@����hZ@��� 0/@���zhZ@���r[/@���`+fZ@����t/@���`R[Z@���9/@���aVZ@��� H/@��� ZZ@���@/@���\ZZ@����0@���@KZ@���0@���BZ@��� 0@���aAZ@���`<0@����$<Z@���R0@��� /Z@���0@���51Z@���0@��� 10Z@���E0@���@3Z@��� 11@���2Z@��� +j1@���@*Z@���1@����qZ@���^1@����Z@���1@��� Z@���2@��� Y@���`N2@���Y@���T2@��� Y@���`G2@���@@Y@���Z2@���kY@���[o2@���Y@���?h2@���$Y@���X2@���Y@���`L2@���Y@���m?2@���Y@��� O*2@���@Y@���@-#2@����MY@���e2@���0Y@��� 1@����Y@����2@���Y@��� 1@���Y@���p1@���೥Y@���Q1@���6Y@���`)1@���ǥY@���`01@���`ŒY@���@^ 2@��� JY@���22@���Y@���@52@���xY@��� 2@���8uY@��� 2@���pqY@��� 2@���nY@���1@��� gY@���1@���@cY@��� 1@���@cY@���`1@����XY@����G1@���`NY@���@ 1@���IY@��� v1@���WFY@���@1@���@:Y@���1@���@:Y@���`1@���=Y@���@Ϊ1@���>Y@����1@���`AY@���@ 1@��� 6LY@����2@���IY@���@A2@���@KY@���fU2@���EY@��� `2@��� CY@��� Vt2@���HY@��� 2@���5QY@���@ۯ2@���`NY@���@2@��� HPY@��� 2@���VY@���9 3@���aRY@��� 3@���LY@���` d3@���@RY@��� y3@���=QY@���C3@���NY@����v3@����)LY@���`3@���BY@���3@���B9Y@���`3@���1Y@���@|3@����(Y@���3@���$Y@���@]~3@���`�Y@���r3@���Y@���`3@���`Y@��� 3@���0%Y@���Y(4@���O!Y@��� %4@���Y@��� ~14@����Y@���X4@��� Y@����d4@�����Y@���a4@���8 Y@���@(<4@���8Y@���A4@���@Y@��� kY4@���.Y@���[4@���� Y@����@4@����Y@��� 4@���!Y@��� 4@��� $Y@���`Y4@���x)Y@���@4@���(Y@���14@���n"Y@���4@��� Y@���D4@���"Y@��� x5@���&Y@���� 5@���`.Y@���lP5@���k5Y@����pM5@���@U@Y@���f5@���WJY@��� ҇5@���IY@���@5@���k�������� 4@���K@���<<@���� M@�������������L8@����CL@���``K8@���L@���`_O8@���`wL@���k8@���`L@���`s8@����L@���8@���3L@���8@���@L@���@8@���@�M@����8@���pL@����8@����M@���`8@���M@���y9@���- M@��� +9@���� M@����49@���M@��� ;9@��� L@���]K9@����M@���L9@���M@���ZC9@���M@���@<M9@���� M@���@*Y9@���M@���k9@���M@��� v9@���HL@����9@���`L@���`Ó9@����L@���o9@���LL@���˿9@���@.L@���(9@���L@��� :@���L@��� :@����L@���`R:@���L@��� :@����qL@��� (.:@���@gL@���`L:@���`BL@���@u:@���` L@���@g:@���L@���@:@���L@���:@���qL@���`:@���$L@���*:@��� uL@���:@���L@���F:@���`L@���`I:@���@L@��� :@���#L@���:@����BL@����;@���`BL@���R;@��� L@���`>;@��� LL@���V;@��� L@���`�_;@���L@���@;@���L@���;@���zL@���;@����L@����Ή;@���$L@��� ;@���@L@���;@���`BL@���>;@���L@����;@����BL@���@ ;@��� lL@����;@���ۀL@���@p;@����]}L@���;@���uL@���;@���rL@����ף;@���lL@���;@���pL@���@P;@��� 8oL@���o;@���iL@���`�;@���fL@���;@���bL@���;@���@_L@���G<@���XL@���<@���`OL@���e<@���KL@���@ '<@���FL@��� <@���@L@��� 0<@���e8L@���4/<@��� /L@���<<@���`"L@���3<@���fL@���1<@���`L@���*<@���=L@���H<@���fL@���<@���uL@��� ;@���L@���@;@���eL@���;@����=L@���;@���@K@���஥;@��� LK@��� ;@���K@���`;@����]K@���`ff;@���@K@����Y;@���K@���@>H;@����K@��� ';@���VK@���p:@���K@���@y:@��� K@���:@���K@����̾:@���K@��� e:@���WK@���4:@���K@���Â:@����K@���V:@���K@���D:@���{K@���2:@���`fK@����:@���K@���@ 9@��� L@��� \9@���jL@��� 9@����L@���@͋9@���L@���~9@���L@����S9@���`L@���9@���L@���@ 9@���"L@������9@���@%L@���@8@���Q8L@���R8@���@9L@���H8@���8L@���`I8@���4L@���� 8@��� 2L@���>8@���.L@���8@����$L@���@*y8@��� u"L@���V8@���@'L@���@%8@���u!L@��� 7@���*L@��� 7@���*L@���7@���.L@���7@���@.L@���Θ7@���\.L@����z7@��� *L@���@K7@����0L@���@+7@���R.L@��� (.7@���<,L@����7@���$'L@��� 7@���*L@��� (6@��� Q2L@���6@���`B6L@���`6@���0L@���6@���`-L@���6@����1L@���@6@���`3L@���?6@���@2L@���'6@��� L6L@����46@���5L@���@5@���[(L@���`R5@���(L@�����5@���%L@���@m5@���L@����Z5@���`L@����>5@���L@���`75@��� L@���� 5@��� L@���� 5@���QL@��� 4@���PL@��� ~5@���`=L@����S5@���AL@���n5@��� ,1L@���`5@���3L@���5@���`YAL@���4@���DL@���@5@��� kL@���\5@���~L@���aj5@���`L@���k5@���` L@���5@���KL@���G5@���@L@��� 5@���`L@���}6@����L@���@^6@���L@���6@���L@���̜6@���`L@���@;6@���@L@��� #7@��� xL@���@XB7@���L@���7@���9}L@��� 7@���{L@����7@���mL@���gU8@���`GL@���@i8@��� L@���Ec8@���L@���Z`8@���mL@���L8@����CL@���l��������lA@���@@���`OB@��� 6XA@���.����������@A@��� #SA@���B@���QA@���'B@���UA@���'B@���dWA@���@,B@��� 6XA@���c0B@���QA@���`6B@���MA@��� `+B@���BA@���S6B@���`6@A@��� FB@��� 6A@���@GB@���k)A@���LB@���`'A@���{KB@��� xA@���`OB@���`A@���`5B@���A@��� D$B@��� y@@��� 0B@���@@���8B@���@@���LA@���@@���`A@���`@@���B@���@@���@B@���*@@���A@���{@@���A@���`/@@���DA@��� ԟ@@���`A@���'@@���`A@��� @@����A@���@@��� A@����@@���lA@���@ʋ@@���`0A@��� U@@���aA@���̜@@���[A@���@@@��� A@���@@����A@���2@@���` A@����@@���(A@��� @@���`A@���i@@����A@���K@@���jA@���[A@��� A@����#A@��� ~A@��� ,1A@���`A@���s:A@���A@����v@A@����A@���HA@���@A@��� #SA@���m��P������;@����>���t=@���Ǒ<���'����������;@���`H=����Y;@��� a{=���t;@��� J=���;;@���<����G;@���<���;@���t<���`;@���@<��� y%<@���<���<@���Ǒ<��� N<@���<���<@��� <���=@���w<���BU=@��� =���t=@���tZ=���`k=@���n=���r[=@���Ws=���K=@���G=����O=@����|=���*=@����)=����=@���� =���@Q(=@����=���=)=@���=���<@��� >���r<@���L>���`=<@���WC>���`7<@���@M>���A<@���S>��� %<@���Dt>��� (<@���>���`<@���t>���<@����>���@;@��� >���@ڰ;@���q>���j;@���Eg>���u;@����O>���a;@����P>���`0e;@���@ >��� S;@����#>���;@���`H=���n��������U&���g@���x���#!@���t����������@u$����7 @���n$��� @���S$����!@���$���j!@��� $��� @����/$��� @���#���@ @���@#��� @���##���#!@���@i#��� @���ic#��� @���@3S#���s @���GA#����> @���O#���@ @���)#��� @���� "���@Y @���#���L| @���@"���Y @���@"���D @���N"��� @����"��� @����J"����O@����ݵ"��� p@���"���@0@���"���bt@����R"���2@���@"���@���0"���`]@���h"���`@���ge"���?@����2"����@���@8"���@����s!���&@����!���`@���˭!���{3@��� j!���@���@4r!���@I@���QW!����b@���@L!���C@���!���`ty@���� ���`O=@���/ ����#@���� ���@0@����| ���+@���w ��� D@����!!���l`@����6!���`@���W ���J@���@ ����@���� ���@���@ ���2@���� ��� j@����2 ���@hd@��� j ���1@����% ����_,@���`��� @���=J���@���a���@T@�������$@���� ����^@����K���&@����Z��� ˭@���` ���}q@���`��� Ga@������@���@,y���@I@���ܾ���@���$���0u@���x���W@���@��� $@������@P@���)���`g@���Q8����UU@����d(��� @����tZ��� @���/���@X@���@���`@���,���g@������Zp@���N���9@���G ���:L@����0!���@����Q!����@���ô"���`@���#���̌@����0#���`@���*#���@�����@#��� @����#���@���`$���`p@���ࣰ$���#`@���G$����<@���$����@����$���@���@%��� @���%���@O:@���ੋ%��� @@���Ϋ%���@���`&���`˭@���@&��� @���r&����,9@���@&���`g@���U&���`@���&����_@���`/&���@x@���&��� @���2&���`@���`%���b @���^%����O@���l3%���@@���4%��� @���$���@E @��� $����J @���@-$���e @��� –$����N @���@u$����7 @���o���������"@���@m3@���\"9@���@8@@�������������e#@���`n<>@����#@��� X>@���7n$@����q>@����Ô$@���>@��� %?$@���@(l?@���dG$@���?@��� ߜ$@���?@���`$@���`?@���`$@���c?@��� +:%@���;?@���@?%@����v?@���%@����#@@����%@���@@����'@���g4@@���`"'@���`8@@���@*'@���@>@@���&@���ZP@@���&@���z@@���@ '@���@8@@���@I'@��� @@���K'@���`Ŋ@@����F(@���`j@@���:)@���`/f@@����q|*@����u@@���T*@���)s@@���p=+@���d@@���+@���8f@@��� f,@���Z@@����,@���B@@��� K.@���`3@@��� l.@���7/@@���p.@��� @@���-.@���?@��� .@���?@���h/@��� k?@���0@���F?@���DC0@����:?@���@0@���a:?@���`Y1@���@W#?@���^1@���?@����u1@���?@���1@���@(>@���y1@���@'>@��� 2@����>@��� yu2@���@>@���2@���@PI>@��� 3@���C>@���Y3@���K>@���`3@��� N{>@���@4@����>@���`'4@���`/?@���@$4@���@5?@���3@���|?@���``3@���?@����3@���@(?@���`4@��� @@���[4@��� ~A@@���@4@���`_@@���@`5@���c@@���15@��� w@@��� 5@���is@@���)6@���Zx@@���56@���`p@@���\6@���o@@���|6@���f@@���@z6@���1d@@���7@���O@@���`7@���H@@����$7@��� :@@����M7@���(4@@��� y7@���`*@@���!B7@��� @@����N7@��� @@���7@��� &@@��� 7@��� @@���87@���@ @@���{8@���`?@���8@���r@@���@8@���?@���> 9@��� ?@���@9@����?@��� 9@����?@���\"9@��� ?@��� 9@���?@���8@��� m?@����8@����Fb?@���n8@���t)?@����9@���`>@���8@���ׂ>@���8@���;>@���`մ8@��� '>@���`8@��� =@���48@���`/=@���8@����=@��� H8@���=@���m8@���?=@����9@����;@���@8@���:@���m8@���.9@���@8@���h7@���H�9@���`y6@����9@���@U�6@����9@���4@���`6�9@����3@���m_8@����3@���`6�8@��� �4@��� 7@���@m3@��� e5@���`*4@���]2@���@-X6@���`6�0@���@Ws7@���R�.@���@�7@���Qx,@���96@���0+@���#7@���*@���@67@����'@���7@���&'@����pM8@���7n%@���48@���@-$@���az8@����#$@���8@����o$@���H8@���$@���8@���` $@���eV9@����"@����@':@���@>"@����.:@���`("@��� ;:@���"@���[:@���F#@���aj:@���#@���d:@���@q#@����:@���X#@����:@���@Qx#@���R;@���#@���;@���#@���;@��� #@��� ;@���`#@���\;@���#@���BE<@���@%#@���<@���#@���n=@���!"#@���=@����"@���[>@���e#@���`n<>@���p��h�������"@���ZG@���*H#@���@,G@���*�����������"@���mG@����#@���LG@����"@���`G@���#@���@,G@���`#@���`G@���#@���G@����W #@��� G@���h&#@���G@���.%#@���oG@���^"#@���]G@���#@����֝G@���#@���G@���m #@����xG@����,%#@���eG@���(#@���G@���t*#@���@G@���_*#@��� yG@���`'(#@����G@���@S&#@���@G@���`%#@���G@���@&#@���`iG@���`v+#@���G@���#0#@���XG@���3#@����eG@���6#@���G@����;#@���`G@���@5?#@���uG@���@A#@���OG@���B#@���G@���wF#@����vG@���@E#@��� uG@���@)D#@���G@���F#@����G@���*H#@����pG@���AD#@���@G@���1B#@���G@���@>#@���@G@��� <#@���G@���8#@���GG@��� 5#@��� eG@���#4#@���ZG@����"@���mG@���q��������`3@���J@���:@���@9L@�������������e6@���.K@���6@��� .K@��� 6@���*K@���sZ5@���`*K@���C4@���`.K@����3@���@5K@����3@��� 9K@���l3@���`?K@���%3@���bIK@��� [4@���@FK@��� g4@����eWK@���@=4@��� XK@���4@���SK@���4@���1\K@���h3@���YK@���3@���`_TK@���@ 3@����5QK@���f3@���;K@���`3@����L<K@���@^3@���`PK@���@ 3@���rcK@���r3@���@oK@����3@���uK@���@;3@��� {K@���pm4@���yK@��� ز4@���3K@���4@��� K@���G5@���K@��� 5@��� K@���5@����hK@����u5@���K@���5@���K@���4@��� أK@���4@���`K@���r4@���@|K@���4@���xK@���`4@���`NsK@���85@���IwK@���7?5@��� =zK@���F25@����K@��� 05@���jK@���B5@���K@���AF5@���BK@���tE5@���K@���l@5@���K@���.5@���K@���n?5@���`źK@���5@��� K@���`55@���K@���� 5@��� L@���`75@��� L@����>5@���L@����Z5@���`L@���@m5@���L@�����5@���%L@���`R5@���(L@���@5@���[(L@����46@���5L@���'6@��� L6L@���?6@���@2L@���@6@���`3L@���6@����1L@���6@���`-L@���`6@���0L@���6@���`B6L@��� (6@��� Q2L@��� 7@���*L@����7@���$'L@��� (.7@���<,L@���@+7@���R.L@���@K7@����0L@����z7@��� *L@���Θ7@���\.L@���7@���@.L@���7@���.L@��� 7@���*L@��� 7@���*L@���@%8@���u!L@���V8@���@'L@���@*y8@��� u"L@���8@����$L@���>8@���.L@���� 8@��� 2L@���`I8@���4L@���H8@���8L@���R8@���@9L@���@8@���Q8L@������9@���@%L@���@ 9@���"L@���9@���L@����S9@���`L@���~9@���L@���@͋9@���L@��� 9@����L@��� \9@���jL@���@ 9@��� L@����:@���K@���2:@���`fK@���D:@���{K@���V:@���K@���Â:@����K@���4:@���K@���`o:@���K@��� :@���kK@���@đ:@���@K@��� :@���ѸK@���ࣀ:@���K@���@t:@����K@����:@���K@���`:@���aK@���S:@����$K@���:@��� K@����z:@���K@���:@���K@���`):@���K@���F:@��� lK@���F:@���=K@��� :@��� K@���P{:@����דK@���Fs:@���K@���`H:@����K@���@@:@��� ҏK@���?:@���K@���*8:@����׃K@���@*):@���}K@��� 9@���xK@���9@��� tK@���`9@����foK@���9@���-hK@���`9@���� eK@���˿9@���8]K@���)9@���`VUK@���9@���@#JK@���@9@���=BK@���9@���(=K@��� 9@���6K@���9@���`.K@����)9@���*K@����q9@����'K@���ն9@���a*K@���)9@���`2%K@���`29@���$K@����9@���K@����9@���K@���` 9@���K@���F9@���@K@���P9@���kK@���Έ9@���K@����49@���oK@���<9@���K@���@9@����K@���`Ó9@��� K@��� (~9@��� 'K@���s9@���\&K@���Fd9@���� K@���79@���!K@���@59@���pK@���@r)9@���K@����h9@���=K@��� ?9@���K@��� 8@����MK@���8@���3K@���8@���K@���8@��� K@���18@���@gK@���� 8@���J@��� Q8@��� J@���@8@���7�K@��� 8@���`�J@��� c8@���J@���U8@��� J@���G8@���`)J@����=;8@��� J@��� ,8@����J@���8@�����J@����q7@���-J@��� \7@���WJ@���f7@���J@���7@���J@���`7@���zJ@���Q7@��� J@���`7@���@J@���F7@��� J@���7@���<J@����y7@���dJ@���@7@���K@���@|7@���K@���`W7@��� %K@���7@���m'K@������7@���1K@���@6@���L4K@���e6@���.K@���r���������`@���bH@���`@���� I@�������������!@���}H@���(\@���H@����@���`H@���?H@��� H@����@���`H@���i@����H@���`@���sH@���`;@���`H@����eG@��� >I@��� @���� I@���m@��� yI@���@@���`I@���@@���@H@���N@���{H@���`@��� H@��� @���jH@���`p}@���H@����r@���H@���`>@���`H@����@���bH@����t@���@H@���!@���}H@���s��������a\@���y6@���@f\@���66@�������������a\@���w.6@���a\@����.6@���a\@��� /6@���a\@���/6@���a\@���06@���`a\@���|06@���a\@���06@���`b\@��� |16@���`b\@���26@���`b\@����26@���`b\@���@336@���b\@���36@��� b\@���246@���b\@���@46@���!b\@���56@���`0b\@���z56@���=b\@���56@���Ob\@����266@���`kb\@���R66@���b\@���66@���`b\@���66@��� b\@���66@���@b\@���66@���`c\@���66@���`)c\@���66@��� Jc\@���66@���@ic\@���66@����c\@���`f66@���@c\@��� ?66@����c\@���@66@���c\@����56@���c\@��� 56@��� c\@���56@����d\@��� 56@���-d\@��� S56@��� Hd\@���56@����dd\@����46@���zd\@���46@���d\@���@g46@���d\@��� 46@���d\@����36@����d\@���36@����d\@���36@���d\@���Z36@���d\@��� 26@���d\@����26@���e\@���@G26@���#e\@��� 16@���5e\@��� 16@���Ge\@���`[16@���Te\@���06@���ke\@���06@���ze\@���[06@���e\@�����06@���e\@���@/6@���e\@���H/6@���e\@���.6@���e\@����.6@���e\@��� (.6@���`e\@���`-6@���`e\@���p-6@���e\@���@-6@���`f\@���`,6@���f\@����),6@���@f\@���@+6@���&f\@���]+6@���3f\@����*6@���8f\@���*6@���`Bf\@���� *6@���Jf\@���@r)6@���`Tf\@���(6@���@Yf\@���`(6@���@Yf\@��� '6@���af\@���'6@���`kf\@���@ '6@���sf\@���&6@���`}f\@����2&6@���@f\@���@%6@���f\@���`2%6@���`f\@���@$6@���@f\@��� $6@���@f\@���#6@���`f\@���#6@���`f\@����"6@���@f\@���"6@���@f\@���!6@���`f\@��� 6@���`f\@���`o 6@���`f\@���6@���`f\@���H6@���@f\@���6@���@f\@���;6@���`f\@����6@���f\@���(6@���@f\@���`6@���`f\@����)6@���f\@���6@���`xf\@����=6@���`kf\@���@6@���af\@���q6@���Of\@���)6@���=f\@����6@���`+f\@���@r6@���`f\@���@*6@���f\@���6@���`e\@����6@���e\@���e6@���e\@���*6@���e\@��� 6@���}e\@���6@���^e\@���`6@���Be\@��� 6@���#e\@���`6@���d\@���`6@���d\@���6@���d\@���y6@����d\@���y6@����dd\@���y6@����;d\@���y6@����d\@���6@���c\@���`6@����c\@���6@��� c\@��� 6@���@c\@���*6@����c\@���`6@����xc\@���6@����fc\@��� 6@���`Rc\@���@r6@���@@c\@���6@���@3c\@��� 6@���`)c\@���6@��� !c\@����6@���`c\@���]6@���@ c\@���@6@���`�c\@���@P6@���`�c\@���6@���@b\@���`I6@���`b\@����6@���`b\@���H6@���`b\@���6@��� b\@��� \6@��� b\@����� 6@��� b\@��� 6@���@b\@���@!6@���`b\@���!6@���b\@���"6@��� b\@���`"6@���@b\@���"6@���`b\@���@{#6@���`b\@����#6@���b\@���S$6@���@b\@����$6@���@b\@���`2%6@���`b\@���%6@���b\@��� &6@���`xb\@���&6@���`kb\@���&6@���\b\@���`R'6@���Ob\@��� '6@���`Bb\@��� (6@���3b\@���e(6@���&b\@���`(6@���`b\@��� )6@���`b\@���@r)6@���a\@���)6@���a\@���=*6@���`a\@���@*6@���a\@���+6@���`a\@���q+6@���a\@���+6@���a\@���,6@���a\@���(-6@���a\@��� -6@���a\@��� (.6@���a\@���w.6@���t��������ev4@���mD@��� 7@���`B.E@���N���������� 4@����9D@��� 4@���D@��� 4@���`D@����׳4@���D@���4@���@D@���4@����zD@���Z4@���$D@����4@���` E@����5@���@WE@���5@���uE@���S$5@���`[E@���75@���@3E@���?5@���� E@���`'P5@��� E@��� T5@���@ E@���\N5@��� aE@��� Y5@���` E@���|p5@���fE@���u5@���!E@���`5@���!E@���5@���@.E@���@5@���@h E@���@5@���`fE@���5@���!E@��� 5@���&E@���@5@���W*E@���(5@����B'E@���5@���@)E@��� S6@����z&E@���`6@���(E@���16@���[(E@���86@���+E@��� ?6@���@{+E@��� S6@���`B.E@���@^6@���U)E@���]6@��� (E@���ch6@���`#E@���@6@���9 E@����6@���`E@���6@���D@���D7@���`D@��� 7@���:D@����M6@���D@��� 6@���|D@���`6@���@D@���@'6@��� D@����6@��� 6D@���46@���rD@���`6@���ϗD@����v6@����FD@���d6@���D@���6@���[D@���x6@���@D@���7?6@���@ԕD@���!6@���`D@���6@���CD@��� 5@���1D@���5@���@vD@���Ʊ5@���`xD@���@(5@��� rsD@���x5@���tD@��� W5@���`oD@����5@���@lnD@���@4@���mD@���4@���jrD@���4@����wwD@���`4@���;sD@���@`4@���`tD@���߻4@��� tD@���4@���DD@���4@����D@��� 4@��� D@���@J~4@���D@����4@����D@���ev4@���`D@��� &4@���D@����4@���@'D@��� 4@����9D@���u�� 0�������ME@����9���?I@���`C'���#���������@G@���-��� =G@���T-���G@����`l-���G@���Y-���̴G@����Z-���G@����}2.����$G@���S7.���`G@���x-���aG@���]-���G@���@$-���G@��� k-��� G@���YR-���G@���`CE-��� G@���K>-���mG@���@3S-��� fG@���-���@H@���@t-���3H@����fG-���IG@��� E$-���BG@���Y2-���[G@���-���G@���` 5-��� DG@���-��� `G@���,���G@���``k,���'G@���&~,���G@���,���G@���`^,���`G@���/,���kH@���F,����G@���,���@hH@���`,���@H@���@To,����H@����T6,��� G@���E,����H@���+���G@��� +���G@���+���sG@����m+���G@����Z1+��� G@��� ++���rG@���]+���@�H@����)+���`H@���+���H@���`+���@ H@���2+���@h H@���4+���aH@���`51+��� H@���"+���H@���+���@$H@����+����*H@���΋+���`*H@��� +���@./H@���,+����2H@����`,+���@X:H@���+���rCH@���@^ +��� OBH@���*���`LH@���*���^H@���*��� kH@���?*���`gH@��� he*���rH@���2)���zH@���`)����eoH@���5)���qH@���M)��� kH@���#)��� cH@��� n(���]H@���K(���bH@����`(���qH@���(���tH@���(���`YyH@����/(��� |H@����/(���@-H@���(���`H@���`(���tH@���`N(���@WH@���`2(���1H@���`2(���H@���(���՜H@���@5(����H@���(��� H@���`C'���`qH@���(���`H@����j(���H@����I(���@H@���@3s(���̤H@����x(��� H@���Q(���H@���Q(���� H@����x(���H@����/w(���`H@���(��� ҿH@����Z(���H@���(��� fH@���(���DH@���U(���`_H@���)���H@���z)���@H@���C)���`H@���b)����H@���)����H@���8)���H@���`O{)���H@���@)��� H@����)����$H@���*����^H@���~*���iI@���*��� I@����8+���` I@���GA+���`NI@����9-���@I@���@;l-���#I@���-����59I@���`^.���?I@���.���@7I@���@j#/���@I@���`/���`0I@���@/���@I@���K/���UI@���/���SH@��� b*/���{H@���@.���H@���t.���@-H@���`&.���H@���.��� H@���./���H@��� /����H@���` 0���H@��� 0���`H@���}20����^H@����`<0���@H@���N[0��� H@���0���SH@���D0��� H@���0���JH@���Q0���H@���@0���`H@���@@0����H@���`0���H@�����01���ԵH@���|S1��� >H@���1����H@���Sg2���H@���%/3���eH@����`3���`NH@���Wc4����w7H@��� 84���6H@��� 5���@FH@���`5����G@���@n6���@G@���Tv7��� G@���7���G@���7���G@����7���G@��� 87���G@���7����$G@���@E8���G@���D8���cG@���yu8���G@���8���PG@���`8���G@���`8��� gG@���`k8���G@���Q8���@|G@���� 9����5qG@���@39���`RG@���@19���c@G@���@c)9���`+G@���`r,9���F@��� Q9���F@���అ9���F@���`9���UF@����9����wgF@���@U9���[F@���M9���.F@���A9���� &F@����+9���(F@���@)9���1F@���;9��� 4F@����069���`F@��� 9���F@���#9���E@����8��� E@���j8���E@���@O8��� E@���D7���bE@���પ7���{E@���@7����wE@���`7����5E@��� v7����E@���@O7���@hE@���@c7���E@���`6��� E@���6����ME@���`I@6���E@����f76��� gE@���`<6��� E@���+6���E@����)6����5E@���D5���\E@���@q5���@ۧE@���5��� =E@���5���`ŪE@���45���`qE@����)5���̼E@���`h5���E@���`P5���`E@��� ?I5���@E@����95���E@���@4���F@���Q4���F@���#q4���@- F@���a4��� y%F@���@>4���<F@���@q3���<F@���3���@1F@���@3���[/F@���3���4F@���#3���8F@���3����=F@���3��� <F@����7p3���8F@���3���F@���@G2��� ~!F@��� b2���F@���S2���`0F@���Ml2���@F@���1���E@���1���7E@���$1���@.F@���n/1���[7F@��� 0��� ;F@���`~0���`3F@����_]0���`8F@���240���>F@����_-0���JnF@���90���`F@��� /���F@���`/��� UF@���M0���ةF@���@;0��� F@���@ 0���@ӮF@���@/���`GF@���/���F@���&0���F@��� /���@F@���`/���F@���`/��� >F@���A/���F@���΋/����F@����Z/���@XF@���ࣰ/����$G@���@p/��� G@���~/���tG@���ԥ/���G@����T/��� G@���|s/��� G@���?h/���@G@���m/��� &G@���/���`"G@���/���)G@���Y/���2G@���:/���@=G@����/���`6G@����/��� &&G@���آ/���`.G@���@y/���&G@���8o/���s*G@���D/��� ~IG@���.��� >yG@���e.���z|G@��� x.��� ~G@��� .���ƉG@����=.���){G@���@$/���G@���.��� G@���.���G@���@.���`AG@���@3.���G@����.���G@���`.���SG@���`r.���mG@��� he.���G@���=.��� G@���`5.��� G@���@3-���ٰG@���-���ԭG@���`5-��� fG@���$-���@G@���-���v�������� HX@@���"1���JA@���%"�������������@@@����Mf#��� @@���#��� @@���"���A@���-"���"A@���`k"#���@P9A@����#���mGA@���M\$���IA@����$��� VA@���`~%���LA@���@&���`UA@���@S&���aA@���ࣰ&���biA@��� 9&���`uA@���*&���K{A@���@!'��� #{A@��� S%'���zA@���T%'���#PA@���@&'���NA@���'����/A@���U(��� 8A@���)���`CA@���@)���HA@���`*���:TA@���&*����ZnA@���*���@nA@��� 3�+���1A@���I_+��� HA@���O-���A@���-���JA@��� h-���nA@����[.���A@���ڧ.���`A@���.���`�A@��� .��� A@�����0���`A@���!#0����A@����0���A@���@90���`6A@���gu0��� A@���0���`A@���0���@A@����}0���`A@���`0���`A@���E0���mA@���@1���`2A@���"1��� A@���@!1���A@���1���ϑA@����0���A@����S0���lA@���#0���SA@���0���� nA@���p0���aA@���0���@LA@���g0���IA@���R0���!:A@���`H0���4A@���z40���6A@���`I0���!A@��� 1/���P!A@���`/��� ~)A@���|/���@z4A@���`Z/���`8A@���Q/���n6A@���K.���{KA@���Ȑ.��� HA@���-���BA@���`-���BEA@���*;-���1A@���``,��� &A@����,���t A@��� ,���R@@���W,���@@����Z-���`A@@���,���@@���`I�-���`@@����}2-���D@@���`--���S@@����l,���K@@���4,����d@@���,����@@���@-+���`@@����,��� @@���,���`s@@����ף+���(d@@���@+����c@@���|+���j@@���``k+���d@@���G+��� HX@@���`>+���cX@@���G!+��� >i@@���|+��� @@���n*���@@��� *���`@@���@)���{@@���|)��� z@@���)���@@��� 15)��� @@���c))���� @@���:-)���ߣ@@��� )����@@���`/)���@@��� ߼(���@@���ҧ(���|@@���`(���@@���(���`@@���EC(��� =@@����L'���k@@����/7'���@h@@��� $'���`@@���A&'���@@��� &����_@@���@ W&���@@��� %��� @@���`)%���β@@���`%���`6@@���7%���@@���@)%���`@@���%���@P@@���$���`@@��� Vt$��� ~@@����"$���@@���#���`@@���@#���`A@@���#��� @@���xv#���T@@���D#���@@���_,#��� g@@����XS#��� %@@���@K>#��� ~@@���I"���`z@@���"���@hx@@���@"���Zx@@���@"���@@���%"���ਃ@@���@"��� @@���#���@@���"���j@@����|#���@@@����Q9#����#@@���o>#���`@@���`+#���@@����8#���@@���a*#���@@@����Mf#���w�� F������@gX@���@N?���]@���9m@���������������������E]@���`g@���@3C]@���@X@���E]@���`3@���JN]@���9m@���`}R]@���3R@���Q]@���@���N]@���ij@���E]@���`g@���@X@���`%@���@gX@���<@���@X@���@���@X@���@���`X@���&^@��� X@���(@���@X@���J>@���@X@���`%@����;Y@���`ѫ@���@ Y@���@����) Y@���@���Y Y@���@��� !Y@���@��� Y@���`0@���)Y@���@@����/Y@���`@���6Y@���@^M@���6Y@���@����<Y@���U@���@W?Y@���`(@���`dGY@���@���@GY@���@����EY@��� @���`GY@���S@��� ?Y@���`t9@���AY@���\@���aEY@���`N@���HY@���@����OY@���@��� RY@���7@���zdY@���@@���`+jY@���`5q@����kY@����U@����tY@���@0@���@g|Y@��� r@���|Y@���@���܅Y@��� 5q@��� Y@���@���@Y@���@��� Y@��� @���Y@���@���@Y@���|@���@Y@���K@���Y@���K]@����Y@���@X2@���8Y@��� W@���@Y@���@���Y@����d@���DY@��� 8@��� lY@���`p@���EY@���xV@���@Y@��� @���Y@���< @��� Y@���6 @��� JY@���# @��� Y@���9m@���@Y@����~@���Y@���J@���Y@���+@���Y@���Œ@���Y@��� v@���`+Y@��� @���BZ@���`@����Z@���`?���` Z@���`j?��� Z@���2?���Z@���@P?��� Z@���i?���Z@���?��� Z@���?��� Z@��� M<?�����Z@���?���`Z@����F?���OY@��� >?���Y@���CD?�����Z@���ߛ?����;�Z@��� ?���Y@���Z?��� 8Y@��� ?���Y@���@?���@Y@���`W?���Y@���^M?��� Y@��� /?���`Y@���@ϊ?���Y@����?���`xY@��� ?��� Y@��� ?���ɣY@���`O�@���5Y@��� 7@����{Y@���|R@���vY@���@_,@���qY@���@����M`Y@����Xr@���YY@����|@���=RY@���@��� RY@���:L@���@WY@����@��� WY@����L]@���RY@���& @����dPY@���{s @���AY@���  @���@3Y@���@L@���5Y@���@@���0Y@���`@���.Y@���S@����,Y@���U@���-Y@����O@���.2Y@���G@���@W7Y@���# @���1Y@���@���0Y@���h@���@'Y@���e@��� #Y@��� =J@���#)Y@��� 8@���.&Y@���D@���%Y@���q@���J*Y@���Ʊ@���`T&Y@���`j@���%Y@���@�@���D(Y@���@���$Y@��� ,@��� s#Y@���m@��� Y@��� G@���@Y@���7@���@Y@���@-X@���@Y@���@���Y@����@���Y@����~@���EY@���'@��� Y@���@U@����O Y@���q@����;Y@���`ѫ@����\@���E@���\@���l@���O\@����@���\@���@>@��� \@���Q@��� \@���@&@���`\@���e@���`V\@��� @���J\@���z@����\@���@���`v\@��� @���`\@���AF@���\@����@���`\@���`%?@��� l\@���@@����\@���b@���`\@��� @���`v\@���`z@���O\@����2@���&\@���/@���@3\@���@���Q\@���"@���`\@���`8N@���@\@���`p@���@E]@��� ]@���� ]@����eG@��� ]@���!b@���]@���r@���`]@���@X@���]@���`@���]@���7/@���]@���p@���5)]@���@���-]@����@���u1]@���/@���p5]@���-@���`k6]@����@���D4]@���`(@��� 3]@���m@���&6]@���l`@���6]@���@��� 3]@���`@���1]@���q\@���@33]@���@N@���@37]@���b@���@{C]@���`(\@���A]@���`%@���E]@��� @���@iK]@��� @��� 1P]@���@���WN]@���H@���@ S]@����@���\^]@���*@���a]@���i@��� c]@����E#@���i]@��� @���@Wo]@���@���`m]@���@��� j]@���`g@���af]@���F@���h]@���~@��� h]@����E#@���j]@��� @���@j]@���`@���]]@����ww@���x]@���@���z]@���`@����Հ]@���L<@��� ]@���`r@���#]@����=@����{]@����#A@��� z]@���`>)@���u}]@���@���]@���@����O]@��� .7@����]@����:@���@{]@��� @���=]@���@���̤]@���@����$]@���@���]@���@x@���]@���@���=]@���@��� һ]@���@���`_]@���[@���]@���@6@���O]@���඿@���x]@���@��� ]@���@ܾ@���]@���J@���]@��� Ga@���+]@���`N@����d]@���@~@���.]@���`-@��� s]@����,@���]@����#@��� ]@���$@���&]@��� @��� ]@���@g@���]@���`p=@���`]@���`_@���]@����t@���`d]@���@xV@���]@���`$@����v]@���@���`]@���@-@���]@���@@���൤]@���`@���]@���@g@���`T~]@���@���i]@���@���`xf]@���`g@���i]@���Y@���`e]@���X@����_\]@��� g@���`N]@���o@���&5]@���R@���`/]@���~@����q,]@���S@���)]@��� V@���$]@��� `@���a!]@���@v@���!]@���@E@���]@���\.@���a]@��� {@��� ]@���ـ@���`v]@���@���\@���x@���\@���I_@���\@���&@��� \@��� @��� \@���`H@@��� s\@����U@���\@��� @���@\@���i @����\@���W @���/\@���9@����\@���`@���T\@����)\@���\@���`g@���\@���[@��� H\@����,@���8\@���\@���J\@���@���k\@���n@���@.\@����.@���\@���\@���x\@���@���\@����Y@���Ǽ\@���j@��� \@����2T@���@\@����@���\@���@_,@���`ڳ\@���E�@���@\@����Y�@���\@���[?���h\@���D?���}\@���1T?���`\@���`?���\@���@33?���`ʢ\@���a?���\@���!"?��� l\@���@b?����\@���|?���`;{\@���@*?���r\@���?���i\@���ͫ?��� Jc\@���?��� [\@��� ?���`TF\@���i?���>\@���?���B\@����X?���B\@��� ?���`�\@���`?��� \@����?��� \@���@?����$\@���O?��� C[@���?���[@��� gE?��� [@���?���[@��� \?���`+[@����%?����)[@���g?���B[@���/?��� ![@���`a?���ܹ[@���);?��� [@��� ?���[@���@N?���B[@���t?��� [@���`?���W[@���Z?���`[@���@?��� Z[@���Œ?��� {[@���@'}?���`kv[@����?���j[@��� j?���@j[@��� ?���xe[@���@6?���@c[@����d?���@i[@����@���i[@��� ?���l[@���`?���`u[@��� ?����{[@���#?���@3[@���8?���[@���?���h[@���޼?���[@����ų?��� 8[@���l?���[@��� ?���@[@���?����[@���?���ٝ[@��� $?���=[@���?��� n[@���Q?�����[@���?�����[@���\n?���E[@���?���[@������?��� l[@���= ?��� 1[@��� M<?����q[@���1T?����M[@��� ?���[@���@?���[@����S?���`v[@���p?�����[@��� y5?���[@����8?���B[@���?���@E[@���i?���`}[@���?����[@����@���`T[@���@ �@���@[@���O@���@i[@���@ @���[@��� DD@���=[@���)@��� 8[@���޼@��� [@���` @���[@���O@����[@��� m@��� J[@��� @��� [@���|@���@[@���3@���[@���B@����[@���@���[@���n@����v[@��� @��� [@���@b@���[@���`` @���z\@���@���@W7\@����@���JB\@���v @���@J\@���� @���\\@���@���n\@����@���T}\@���);@��� \@���@6@���}\@���J@���@{\@���Be@����Ӆ\@���\@���`\@���` @���\@���`@���ൔ\@����@���@\@��� @����v\@���@6@���@ \@���@q@���@\@���n@���@\@���@���E\@��� @��� n\@���@����\@���@7o@���@\@���`)@���ϵ\@���@���DZ\@���!@���`T\@���� 4@���\@����S@��� \@���`@���5\@����@���@\@���M@����\@���E@���x��2,������ +R@�������;pR@���b@o���'���������&���2���<���E���P���[���l���z��������������������������������������� ����!��.��>��I��s������������������ ���� ��/��6��C��g��p��{��������������������������;��L��Y��d��k��v������������������������)��?��M��\��j������������������ ������%��.��8��?��J��Z��b��w������������������������ ������vXR@���@����;XR@��� @���2XR@����K@��� HXR@���w@���hXR@���@���XR@����h@���XR@���`@���XR@����$@���XR@���@����XR@���@���XR@���S@���XR@���@���YR@���@@���(YR@���@���(YR@���@���#YR@��� @���YR@���`f@���XR@����@���XR@���`@����XR@���`I@���XR@���6@���XR@���@����vXR@���@���:aR@���@@���`R@���@%@���`R@���@@���`R@���@���`R@���߾@���`R@���`@���`R@���`m@��� aR@���`K@���:aR@���=@���:aR@���`m@���0aR@���`@���#aR@���N@���aR@���@���+aR@���Q@���:aR@���@@���@ ?R@���`K@��� >R@���  @���`>R@��� @���@>R@���@���`>R@���Z@��� >R@���8@���`)?R@���L@���@E?R@���@����O?R@��� @��� s?R@���] @���@E?R@��� @���@ ?R@���`K@���fYR@���/{@���YR@���~{@���XR@���p}@���XR@���` @��� YR@��� a@���BYR@��� Є@���zYR@��� a@���YR@���` @���YR@���p}@���fYR@���/{@���]R@���4@���]R@���@6@���]R@���:@���]R@����"=@���^R@����"=@���@^R@���/;@���`^R@���6@���`]R@���@4@���]R@���4@���2R@��� @���@p2R@��� @���2R@���w @���@2R@���" @���@3R@���" @����O3R@��� @����x3R@����= @��� a3R@���  @���@3R@��� @���2R@���  @���2R@��� @��� [R@���`k@��� J[R@���@W@���@[R@���`I@���`[R@����@���`[R@���@��� 8[R@����@���@{[R@����F@����[R@����h@��� [R@����@���[R@���`ڛ@��� [R@���`k@���BYR@���@N@���YR@��� @���XR@���@���XR@���*@���XR@���@���XR@���w@��� HXR@���@��� HXR@���@����vXR@���`t@���XR@����@���XR@���`@���+YR@���@���GYR@���`I@���fYR@���6@���zYR@���@���}YR@��� :@���BYR@���@N@����;R@���|@���@i;R@���@��� J;R@���@����=;R@���@y@���`);R@���@@��� &;R@����v@���@E;R@���9@����x;R@���@���@;R@���@���@;R@����v@����;R@����)@��� ;R@����@����;R@���@����;R@���|@���\>R@��� @���`>R@���  @���=R@��� @���=R@��� ~ @���u=R@���@���k=R@��� @���`=R@��� @���=R@���@���`+>R@���@���s>R@���@���`>R@���@���@>R@��� @���\>R@��� @���`YR@����i@���`YR@���`j@���kYR@���`"l@���=YR@���m@���YR@���@Up@���0YR@���s@���uYR@���r@���`YR@���p@���YR@���4o@���`YR@��� l@���`YR@����i@���`)GR@���*@���`FR@���6+@���`FR@���-@��� FR@���0@����=GR@���@1@��� JGR@���-@���`)GR@���*@���QR@����m@���PR@���@y@���PR@���w@���PR@����v@���QR@���`@���=QR@���`@���QQR@���@���QQR@���`@���TQR@����)@���=QR@���@y@���QR@����m@���0QR@���@���QR@���_@���PR@���@r@���PR@���@@���PR@���` @���QR@����M@���GQR@����@���YQR@��� @���QQR@���@@���0QR@���@@���#QR@���1@���0QR@���@��� GR@���@��� GR@���G!@��� GR@���`t$@��� GR@����&@����;HR@��� %@����_HR@���`#@��� HHR@���`' @���HR@���i@��� GR@���@����OR@���X@���@WOR@���@���`)OR@���`@��� OR@���@w@���`OR@���@@���@3OR@���@���@{OR@���s@��� OR@���@@���OR@���a@���OR@���@w@��� OR@���`@����OR@���X@���LR@���@B@����LR@���C@���LR@���F@���hLR@���`_G@���-LR@���H@��� 6LR@��� ~L@����dLR@���N@���LR@��� O@���LR@���N@���LR@��� \O@���LR@��� \O@���MR@��� ~L@���MR@���kI@���MR@���E@���LR@���@B@���GR@��� I@��� GR@���I@��� GR@���;N@����GR@���@NQ@���GR@��� S@����$HR@��� :R@��� 6HR@���;N@����HR@���]K@���GR@��� I@��� KR@����]@����KR@����_@��� sKR@���`b@���@KR@���`ff@����KR@��� h@����KR@����i@�����LR@��� 8g@���KR@���`c@���KR@���_@��� KR@����]@��� +R@���@W@���+R@���@Ɯ@��� +R@����@���@+R@���@����+R@���@����,R@���d@��� H,R@����@����;,R@���@���2,R@���G@����,R@����@��� +R@���@W@���@ CR@���µ@���`BR@���@@���BR@���Q@���BR@����@���`BR@���߾@���@BR@���,@���@BR@���`@���@BR@���@��� &CR@����M@��� 8CR@�����@����=CR@����@��� 8CR@���@@���@ CR@���µ@���`B^R@���@���]R@����@���]R@���@���]R@���V@���]R@���@���]R@���@ı@���J^R@���u@���O^R@���@���a^R@���@���`B^R@���@���BR@���@t@���`fBR@���@w@���`fBR@���|@���`}BR@���b@���`BR@��� @���@BR@��� a@���`BR@���р@���@BR@���`|@���`BR@���y@���`BR@���@v@���BR@���@t@��� DR@���؟@����CR@���G@���CR@���@����CR@����@�����DR@��� @���DR@���@���[DR@���@����qDR@���@w@����vDR@���`"@���hDR@���X@���QDR@����F@���2DR@����h@��� DR@���؟@���`R@���\@����d`R@����]@���?`R@���_@��� `R@���b@����`R@���`ff@��� `R@���6k@���2`R@���@wm@���m`R@���Vl@����`R@��� j@����`R@��� 8g@���`R@���%d@���`R@���_@���`R@���\@���3FR@��� @���ER@���@���FR@��� j@���`+FR@���-@���=FR@���@���JFR@���@���aFR@���@���`FR@���@@���`FR@���`k@���`FR@���@���`FR@���@ @���`FR@���@���FR@���@���FR@��� @���`xFR@��� @���3FR@��� @��� 9R@���)u@���9R@����Dz@���9R@����"}@���@:R@����fw@���&:R@���`�o@���:R@��� h@���9R@���`c@���9R@���`c@���9R@���j@���9R@���@Gr@��� 9R@���)u@���HR@����@���[HR@���@���DHR@���`@���DHR@���@���[HR@���@���HR@���@����HR@���@@���HR@���@@���IR@���#@���GIR@���~@���kIR@��� @���IR@����@���IR@��� a@���IR@���`@���IR@��� @���`IR@���@���IR@���@���IR@���@ @���`IR@���@W@��� JR@���`@���8JR@����v @���\JR@���`#@���JR@���� @���@JR@���@@���sJR@���`@���`TJR@���L@���=JR@��� @���`0JR@��� \@���!JR@���] @���JR@��� @���`IR@���`@���`IR@���` @���IR@��� @���IR@���@���IR@���@���pIR@���@���TIR@���a@���5IR@���@���IR@���@���HR@���d@����HR@���`@���HR@����@���KR@��� ?F@���@KR@��� G@��� nKR@��� J@��� aKR@��� M@����OKR@���Q@��� aKR@���LU@����KR@���zT@���@KR@���R@��� KR@��� \O@����KR@��� jM@���2LR@��� M@����_LR@���O@���LR@���Q@���LR@��� S@���LR@��� P@���LR@��� M@���LR@���]K@���mLR@���I@���?LR@���`KH@��� LR@���`F@���KR@��� ?F@���`9R@��� @���9R@���@���9R@���@���9R@���`@���9R@���@���9R@���6@���:R@���X@���`:R@��� @���`9R@��� @���LR@���@���QLR@���@���DLR@��� @����;LR@��� :@��� HLR@���@���QLR@���6@����MLR@���i@���DLR@���@����MLR@����@����dLR@��� @���LR@��� @���LR@����F@���LR@���@���LR@���`@���LR@����@���LR@����m@���LR@��� :@����LR@���@���LR@���=@���LR@���@���LR@���`_@���LR@��� @���LR@���=@���LR@���ྎ@����LR@��� ː@���LR@���@��� MR@���z@���5MR@���X@���LMR@���6@���^MR@���`I@���pMR@����@���fMR@����F@���LMR@����$@���5MR@��� @���+MR@���@���BMR@���@3@���pMR@���@@���MR@���@���MR@���4@���MR@���@���MR@����$@���MR@���9@���MR@���U@���MR@���@���MR@���X@���`MR@��� @���MR@���-@���uMR@���@���QMR@��� @���#MR@���Έ@���LR@���`_@���(-R@���@���,R@���@���,R@���~@���,R@����@���,R@����@���-R@��� a@���L-R@���@���z-R@��� @���-R@���@���k-R@��� @���(-R@���@���`>R@��� @���`>R@��� @���@>R@���@���@>R@��� @���`}>R@���8@���@Y>R@���@���`B>R@���`@���`f>R@����@���`>R@���w@���`>R@���@��� >R@���@���@?R@���@���`)?R@���@���`?R@��� ~ @���`>R@��� @���@p:R@��� :R@���`B:R@���@,T@���!:R@���@ W@���:R@���Y@���9R@���w\@���9R@���U_@���`9R@���`a@���`+:R@���b@���\:R@���Ga@���@p:R@����_@���:R@���[@���:R@����W@���`:R@��� S@���@p:R@��� :R@���@>R@���@%5@���@G>R@���@6@���`+>R@���@8@���>R@���<@��� >R@���@@���`+>R@���,C@���@>R@���` A@���@>R@���<@���@>R@���@8@���@>R@���@%5@��� [R@���M@���@[R@��� O@���@[R@���@R@��� [R@���T@����[R@����mV@���\R@���@yX@���?\R@����Z@���[\R@����]@����q\R@���``@���\R@���d@���\R@���g@���\R@���e@���\R@���``@���\R@���\@���\R@����KY@���\R@����mV@���z\R@���@,T@���D\R@��� :R@����\R@��� P@����[R@��� O@��� [R@���M@��� J_R@���@���`_R@���@���@3_R@��� @���@E_R@���s@���`R_R@���`@��� _R@���Q@���@_R@���,@���@i_R@��� 6@��� J_R@���@��� HTR@���(@����TR@���@i@���SR@���@%@���SR@���@��� SR@���@{@����SR@��� @����)TR@��� @��� HTR@���@���hTR@���b@���TR@���=@����vTR@���@��� HTR@���(@����_R@����@���@_R@���@��� n_R@���ӫ@��� a_R@���@��� n_R@���@3@����_R@���@@���`R@���@@���V`R@���@���z`R@���@@���`R@���@U@���z`R@���@���h`R@���ǩ@����;`R@����$@��� _R@���@����_R@����@���UR@���`@���UR@���=@���UR@���@��� VR@���ג@���`VR@���ྎ@��� VR@���@Y@���UR@���`@���`]R@���p@���`]R@���@%u@���]R@���@z@���`^R@���@@���`+^R@���@���a^R@���@���`^R@��� @���@^R@���@Y@���@^R@���b@���`}^R@���@z@���`T^R@��� v@���@^R@��� t@���`]R@���p@��� aWR@��� @���`)WR@���@���@WR@���X@���@WR@���[ @���`WR@���`0*@���@WR@���1@���@WR@���/;@���`WR@���,C@���`WR@���L@���@VR@��� &S@��� VR@���Z@���`VR@���Ga@���`VR@���g@���VR@���(m@���@VR@���r@���aVR@���x@���`TVR@�����@���`kVR@��� †@���@VR@���@���VR@���b@���`VR@���x@���@VR@���@Gr@���`�WR@���l@��� &WR@���g@���@EWR@���@b@��� aWR@���[@��� nWR@���fU@��� WR@���@pN@��� WR@���G@����WR@���@>@��� WR@���@6@��� WR@���@w-@���@WR@���z%@���@WR@���`@����xWR@���@@@��� aWR@��� @���UR@���m@���UR@���@@���UR@��� @���UR@��� @���`VR@���@���=VR@��� @���JVR@��� 6@���3VR@���@���UR@���m@��� [R@���@��� [R@���s@���@[R@���p@����[R@���`m@��� [R@���`)@���[R@���@��� \R@���@@�����\R@��� @��� [R@���p@���[R@���`@��� [R@���@���#5R@���  @���4R@���  @���4R@��� @���5R@��� @���:5R@��� @���z5R@���z @���`5R@��� @���5R@���� @���c5R@���` @���#5R@���  @���:R@���`@���`B:R@���@���@:R@���`@���@:R@���@���3:R@��� @���`k:R@��� A@���`:R@���@@���:R@��� @���@:R@���@���:R@���`@���@i;R@�����@��� J;R@����@��� &;R@���=@���`�;R@���ྎ@���@:R@���z@��� :R@���@��� ;R@���`@��� J;R@���`@����x;R@���6@���@;R@���@@@����;R@���@���@;R@��� @���@i;R@�����@����<R@��� J@���m<R@���`N@����v<R@����mV@���<R@���W@���=R@��� O@���<R@���@K@����<R@��� J@���GR@���@{@����xGR@���`@��� JGR@����@��� &GR@���@��� GR@���@@@���@3GR@����_@����fGR@���`@����GR@���@@���@GR@���@@@��� GR@���ྎ@����GR@���@Y@���GR@���@{@����8R@���s@����7R@���s@��� 7R@���_v@��� s7R@���@z@��� \7R@����ނ@����f7R@���=@��� s7R@���@��� 7R@���z@����7R@���@��� 7R@���`_@����8R@���@@����)8R@����Dz@����8R@���s@���=R@���`c@���=R@����c@���=R@���g@���=R@���dj@���}=R@���m@���k=R@���uq@���f=R@���u@���=R@���x@���=R@���@%u@���=R@���r@���`=R@���n@���`=R@���j@���>R@��� 8g@���=R@���`c@��� 6pR@��� : @����oR@��� : @����oR@��� @����oR@���`ڛ @����pR@���` @����;pR@��� @��� 6pR@��� : @���^eR@��� c @���5eR@���` @���:eR@����D @���YeR@���` @���eR@���� @���eR@���  @���eR@���~ @���eR@��� @���eR@��� A @���^eR@��� c @���`FR@���(m@���`xFR@��� cn@���JFR@���`q@���3FR@���x@���JFR@���`~@���`}FR@���`@���@FR@���\~@���`FR@���u@���`FR@���(m@���OR@���(?���@{OR@���@w-?���@OR@���@>?����OR@���N?��� OR@��� X?����OR@���o_?����PR@���Y?��� PR@��� G?��� PR@���):?��� OR@����0?���OR@���(?��� KR@������`JR@������`JR@����x ���`TJR@���@���&JR@�������JR@���@���=JR@������sJR@���|���@JR@���@���`�KR@���|���@3KR@��� ���`RKR@������ JKR@������ KR@������uYR@���` @���+YR@���` @���XR@���N @���XR@���2 @���XR@��� @���XR@��� @���hXR@��� @���QXR@���c @��� HXR@���+ @��� HXR@��� c @���QXR@��� @����_XR@���b @���hXR@���  @����qXR@��� \ @����vXR@���X @����qXR@��� @���hXR@���X( @���hXR@���1 @����vXR@���9 @���XR@���`? @���XR@���2D @���XR@���G @���YR@���I @���YYR@���/L @���YR@���@pN @���YR@����P @���ZR@���@NQ @���`xZR@���fU @���`ZR@����S @���@ZR@���R @���@3[R@����P @��� n[R@���@pN @����[R@���@K @���[R@���I @��� \R@��� F @��� 6\R@���`B @����_\R@��� > @���z\R@���Q8 @���\R@���1 @����\R@���( @����\R@��� @����\R@���X @����q\R@��� @���V\R@��� @���2\R@���`_ @��� \R@���� @��� [R@���\ @���[R@����D @���@[R@��� @��� s[R@��� @���@W[R@���J @���@@[R@���% @��� ![R@���i @��� ZR@��� @���`ZR@���@, @���ZR@��� H @���ZR@��� @���@YZR@��� @���`+ZR@��� @���`YR@��� @���YR@���T @���uYR@���` @���QLR@���@��� LR@������� LR@��� ���2LR@���@���VLR@������LR@������LR@����~���LR@���k���LR@���Y���#MR@����g���MR@���y���#MR@������MR@������LR@��� ���LR@���@ ���LR@���@���QLR@���@���DHR@����g���HR@����g����GR@����P���@GR@���`5���GR@���*���@GR@���`����GR@���`��� GR@���`M��� GR@���`����HR@���*��� 6HR@���H.���QHR@���8E���DHR@����g���@VR@���&@���@VR@���`R'@���`TVR@���@*@���@GVR@���@33@���=VR@���@;@���\VR@���TA@���@VR@���@>@���`VR@���`9@���`VR@���m4@��� VR@����q,@���@VR@���&@����XR@���6�@���XR@���9�@���XR@���C�@���YR@���TA�@���YR@��� 6<�@���XR@���Q8�@����XR@���6�@��� JcR@����@���`)cR@���ג�@���`)cR@���`ڛ�@����=cR@���9�@��� JcR@���@�@����xcR@����@���@cR@����@��� cR@���`�@��� ncR@��� Ԛ�@��� acR@���@@�@��� JcR@����@����dR@���@ͻ�@���cR@���@�@���cR@��� �@���cR@���@�@���dR@��� H�@����$dR@���@ �@����;dR@����@���VdR@���G�@����dR@��� �@���dR@�����@���eR@����@���YeR@�����@���`eR@�����@���eR@��� �@���eR@����)�@���keR@����@���0eR@����K�@���dR@����@���dR@����@���dR@���@N�@����vdR@���@�@����_dR@��� �@���?dR@��� �@����dR@���@ͻ�@��� WR@��� (~?��� WR@���ׁ?��� JWR@���?���@WR@����?��� !WR@����?����OWR@���?��� aWR@���X?��� WR@���?����WR@���?��� WR@���?����$XR@���?��� HXR@���?���2XR@����_?����$XR@���ڊ?��� WR@���ׁ?��� WR@��� (~?���`bR@����&�@���bR@����)�@���sbR@���@U0�@���bR@���7�@���bR@���6�@���@bR@���.�@���`bR@����&�@���cR@���C@���@cR@���sF@����cR@��� HP@��� cR@����mV@���@cR@����S@���@cR@��� J@���cR@���C@���[TR@���?����$TR@���Q?����TR@���`K?���-TR@���`?���QTR@���@?����vTR@���?���TR@���@?���TR@���J?���TR@���@ ?���TR@���?���TR@���`?����TR@���?���[TR@���?���@EcR@���+e?���`cR@����]m?���`�cR@���|?��� bR@���ڊ?��� bR@���?���`cR@���?��� 8cR@���U?���@WcR@����?��� \cR@���ׁ?����fcR@���p?���@EcR@���+e?���`=R@��� ?���}=R@���#?���Q=R@���`L?���:=R@���@}?���=R@���`?����<R@���`?���0=R@���`o?���Y=R@���?���u=R@���?���=R@��� u?���=R@���`L?���`=R@��� ?���`R@����-?���m`R@���V?����M`R@���@ё?����M`R@���?����d`R@��� ?���`R@���`?���`R@���@?���`R@��� ?���`R@���?���`R@��� q?���`R@���@6?���`R@����-?���@NR@���W���`fNR@���߾���\NR@���`I���\NR@��� lx���`kNR@���`Z���`xNR@���p=���NR@������`NR@���@���`NR@��� ��� NR@��� ���@NR@���`����=OR@��� ���@OR@������@OR@���`��� OR@������ aOR@���@����=OR@������� OR@���j+���@NR@���p=���`NR@���V���@NR@����u���@NR@��� Ԛ���`NR@���@<���@NR@���W���@bR@���m4?���bR@���):?���`bR@���8E?���bR@����mV?���bR@���c?���`bR@���.n?���`bR@���`V}?��� bR@����?���@bR@���?���@ cR@���ͪ?���`cR@���?��� !cR@���@?��� &cR@���?��� &cR@���@?���@.cR@���`?���@icR@����D?���@icR@��� ?���@icR@���`?����xcR@���W?����xcR@���`?���@icR@���X?��� \cR@���?��� JcR@���ڊ?��� JcR@���`w?���@EcR@���`ff?���@3cR@���W?���`cR@���/L?���`�cR@���??���@bR@���m4?���m,R@���г @���?,R@��� @����$,R@���p @���,R@��� @���,R@���/ @���V,R@���� @���,R@��� @����,R@���`) @���,R@��� @����,R@��� 6 @���,R@��� @���m,R@���г @���@3?R@���h�?���`�?R@���X?���`>R@���=?���>R@����)\?���@>R@���@x?���@>R@����?��� >R@���@?���@>R@���� ?���@3?R@���@x?���@i?R@���@a?��� a?R@���-!?���@3?R@���h�?��� _R@���%?��� _R@���j+?��� _R@���):?����_R@���8E?��� _R@����P?��� `R@���Y?����M`R@����a?����q`R@���j?����`R@���s?���`R@���`V}?���`R@���@Y?���aR@���!?���+aR@���|?���aR@���.n?���aR@����a?���`R@���`2U?����`R@����J?���`R@��� A?����q`R@���):?���?`R@���1?����`R@���<,?��� _R@���%?���`RR@���?���`RR@���-!?���sRR@���(?���3RR@���j+?���!RR@���):?���3RR@���H?���aRR@���`vO?���RR@���H?���RR@���H?���`SR@���@?���`)SR@���7?���`)SR@���`t$?���`SR@���q?���`RR@���?���LYR@���?���YR@���?���0YR@���`Ӽ?���=YR@���?���TYR@���?���uYR@���?���`YR@���?���YR@���J?���`ZR@���?���`0ZR@���@ ?���@ZR@���`K?���`YR@���H?���YR@���?���YR@���г?���LYR@���?��� BR@���m?���BR@���?���aBR@���?���3BR@��� Ǻ?���@BR@���?���BR@����0?���@BR@��� u?���JBR@���@f?���\BR@��� G?���sBR@��� ?���@BR@��� ?��� BR@���?���@BR@���?��� BR@���m?���@GR@���`I���@EGR@������ &GR@���@z���`GR@��� |a���`�GR@���sF���@FR@���(��� FR@������`FR@���@r���@FR@������sFR@���� ���@YFR@��� ���`0FR@���@*��� FR@���$���`ER@���`4���ER@��� j���ER@����P���`ER@���`5���ER@������ER@���`M���ER@������ER@��� Ǻ���ER@����ף��� FR@��� Ԛ���@YFR@��� Ԛ���FR@���`���FR@������FR@������\FR@���4���FR@���4���8FR@���:���@YFR@��� C���@YFR@���@#J���sFR@���b���@FR@���y���FR@������@FR@������@FR@���@���`�GR@���@ ���`GR@������@.GR@����x ���@EGR@���&��� \GR@���?��� sGR@���@yX���@{GR@���@z���@GR@���`I��� OR@���@����OR@���� ���@iOR@����s���`ROR@���Y����=OR@���@>��� &OR@���-!���`OR@���@���`OR@���G���`OR@���@<���@.OR@���a��� \OR@���F����OR@��� ��� OR@���@z���OR@���@io��� PR@��� ���OR@��� Ԛ��� OR@���@ı���@OR@�������OR@���7���OR@���`����OR@��� 6<���OR@��� ^��� OR@���|��� OR@���@���@>R@��� H@���`f>R@���@���`B>R@����m@���`T>R@���c@���@>R@����@���@>R@��� @���@ ?R@���`@���@ ?R@���@���`>R@����@���@>R@��� H@����fWR@���6+@���@WR@���6+@���`VR@����O/@���`VR@���3@���`VR@���/;@���@VR@���`<@��� WR@���/;@���@@WR@���7@��� nWR@���3@����fWR@���6+@���\R@���ӿ����v\R@���ӿ���V\R@���.nӿ����;\R@���N@ӿ���\R@����ӿ�����\R@����2ҿ����[R@���&ҿ��� [R@��� Lҿ���@[R@���ҿ���@i[R@���`Tҿ���@[R@���j+ҿ����[R@���&ҿ���\R@���j+ҿ���Q\R@���ZBҿ���m\R@����;pҿ���\R@���6ҿ���\R@��� cҿ����\R@���^)ӿ���\R@���.nӿ���\R@���ӿ���@_R@���?���@_R@���5?��� s_R@���?����O_R@���?��� &_R@���&?��� 8_R@���ZB?���@_R@���ZB?��� _R@���1?��� _R@���?���_R@���?���@_R@���?���dR@��� @����dR@��� Ԛ@���dR@���`@���dR@��� @���eR@���@w@���+eR@���m@���BeR@���@���zeR@���p@���eR@���`@���eR@���@���peR@���@���YeR@���3@���=eR@���@���eR@���X@���dR@��� @���E<R@���@z?���Q<R@���� ?���[<R@���8E?����M<R@���= ?��� <R@����?���;R@���8E?��� ;R@���?��� ;R@���5?��� ;R@���?����$<R@���?���E<R@���@z?��� WR@����?����WR@��� ?���@WR@��� u?��� WR@����3?��� WR@���\?��� WR@���@?��� XR@���w?����MXR@���`}?����_XR@��� lx?��� HXR@���ZB?���-XR@��� e?��� XR@��� ?����WR@���y?��� WR@����?����@R@���@���@R@���@����_@R@���@@@���m@R@��� Ԛ@���@R@���[@���@R@���9@���@R@���`@���#AR@���@���#AR@���@@@���@R@���@����@R@���@���HR@���g?����dHR@���@<?����MHR@���?����dHR@���@?���HR@���7?����HR@���7?���HR@���G?���HR@���?���HR@���g?���JR@���.n?���JR@��� u?���@JR@���$?���@JR@���?���@KR@���$?��� KR@���y?���JR@���.n?�����dR@����x@����cR@���@����cR@����_@����cR@���[@��� dR@���9@���DdR@���}@���DdR@���@���-dR@���@�����dR@����x@���`VR@����B?���sVR@���?���\VR@���7?���OVR@���*?���`TVR@���8?���@VR@����0?���@VR@���-!?���@VR@���?���`VR@���?���`VR@����B?��� JcR@���@���@ cR@��� @���@bR@���`@���`cR@���9#@��� !cR@���`t$@��� JcR@���[ @��� JcR@���@���MR@���@f?���LMR@���ڊ?���:MR@���?���cMR@���Q?���MR@���`]?���MR@���`]?���`NR@����?���`NR@����$(?���MR@���@?���MR@���ڊ?���MR@���@f?���FR@��� S?���`kFR@��� jM?���`TFR@���@*?���3FR@���@?���FR@���``?���FR@���@?���@FR@���a2?���@YFR@���\?���FR@���`L?���`FR@����v?���@FR@���ൄ?���@FR@���<?��� FR@���@?���@FR@��� J{?���FR@����?���FR@��� S?��� mR@���@����lR@��� @���lR@��� @���lR@���|@���lR@���@����lR@���@���mR@���/@��� mR@���@���@Y:R@���@K @���@:R@��� jM @���&:R@���U @���`B:R@���[ @���`x:R@���@_ @���:R@��� b @��� :R@����g @���@:R@���(m @���`�;R@��� t @���@;R@���x @���@W;R@����Dz @����x;R@����t @��� n;R@���l @��� n;R@���Jj @���`R;R@���+e @���@3;R@���@_ @��� ;R@���Z @���@:R@���@ W @���`:R@��� &S @���:R@���O @���@Y:R@���@K @����[R@����)@����[R@���U@��� [R@���`@��� [R@���@����$\R@��� 8@���h\R@����$@���\R@���`@���\R@���@���\R@���`@���\R@���@���h\R@���G@���-\R@���`'@��� [R@����@����[R@����)@��� FR@���`"@���`FR@���V@���`}FR@���@w@���FR@��� A@���@FR@��� A@���`FR@���@���`)GR@���@ı@���@WGR@��� ү@��� 8GR@��� @��� FR@���`"@���lR@���µ@���lR@���#@���lR@���@P@���lR@���@.@���lR@���` @����lR@����"@���lR@���@����lR@���@���lR@���µ@����qdR@����m@���DdR@���@y@��� HdR@����)@���dR@���@���dR@���@���eR@���@���:eR@���@���feR@���`"@���eR@���%$@���eR@��� %@���eR@���`$@���fR@���`!@���`fR@���@���eR@���6@���eR@���*@���zeR@���@���5eR@���@���dR@����@���dR@���X@����qdR@����m@���hR@���r@���hR@���r@���hR@���t@���[hR@���@v@���[hR@���@z@����hR@����"}@���hR@���@P|@���hR@���~{@���hR@���@x@��� iR@���t@���hR@���r@���@ECR@�����@���`CR@���@@���@BR@���`@���BR@��� ?@���@ CR@��� @���`)CR@���@��� \CR@���@����CR@���@��� CR@���` @���@ECR@�����@���=R@���@@���`=R@���@���>R@���@���&>R@���ڊ@���@>R@��� @���>R@���@@���`>R@���@���=>R@����K@���`x>R@���6@���@>R@����@���`>R@����m@���>R@��� @���@>R@���@@���a>R@���@���J>R@���@���3>R@���@���&>R@��� ?@���>R@����ނ@���=R@���@@���AR@��� @���TAR@��� @���5AR@���+@���YAR@���J@���pAR@���`�@���AR@���@G@���AR@���_@���AR@���@@���=BR@���@@���3BR@���@G@���BR@���@���`AR@��� @���`AR@���`@���AR@��� @���DXR@���@@��� XR@���@��� WR@���`I@����WR@���`'@����WR@���9@����XR@���@��� XR@��� @����MXR@���9@���mXR@����v@����dXR@���@@���DXR@���@@���TR@���@q@����;TR@���@q@����)TR@���@v@���[TR@���w@����TR@���#y@���TR@���z@���0UR@���y@���YUR@���@w@���:UR@���@t@���TR@���s@���TR@���r@���TR@���@q@���`eR@����W@���eR@����W@���zeR@���@Y@���eR@���\@���eR@���i^@���fR@����_@���&fR@���i^@���fR@����Z@���`eR@����W@���`xVR@���`@���aVR@���=@���`kVR@��� @���@pVR@��� :@���`VR@��� @���`VR@���@���@VR@��� @���`VR@��� ~@���VR@���`K@���`xVR@���`@���hR@���`܆@����qhR@���@����dhR@���/@���[hR@���|@����dhR@���ɔ@����dhR@����K@���[hR@����@����MhR@���G@���2hR@���@���hR@���@���gR@���ǩ@���@gR@���`"@����gR@���@@���gR@��� c@����)hR@���B@����MhR@���@���hR@���6@����hR@���`D@���hR@����@���hR@����h@���hR@���i@���hR@����@����hR@���@���hR@���ݓ@���hR@��� @���hR@���ڊ@���hR@���`܆@���y�� ��������}(���`H$@���`@����9@������������ \O����8@����9����9@���^���`7@�������6@���`Zc���`5@��� 7?����5@��� ?���4@���?���4@��� :?���4@������?���@Q4@���`?����4@���ߛ?���>4@����?���4q4@��� ?���M4@���?���@'M4@��� Ί?���;;4@�����@���`84@��� l@���`G4@��� @����wG4@���`@���34@���`_@��� 4@��� g@���3@���G @���3@���`% @���?3@���@ @���@ 3@���- @���@_3@���`: @���93@���@@���"3@���@ҧ @����2@��� @���l%3@���r@���2@���`@����0@���`N@���\0@���@���`d0@���:L@����M0@����@���@0@��� �@���/@���Be@����/@���I@���@o/@��� @���@uX/@��� @���L/@����^M @���'.@���2 @���.@���B@���.@����,@���.@������?��� Œ.@����0?���` -@����?���Z-@���`p=?���j-@���d?���l�.@���@b?���@-@���y?���c�.@���7?���-@���Ͽ��� '.@���` ؿ���.@���hܿ���*.@���@33���*.@���@.���-@���`+���/u-@���s��� H�-@����~���@3,@��� 9���� H`,@��������M,@���@?���`,@������ 1,@���W���`F+@���;���`}q+@���@e���O+@������l@+@���`Ce���9+@���`���@XR+@��� ���[+@��� ���p+@���@<+ ����@g+@����) ���@{*@���h ���@<*@���b ���e*@���� ��� V*@����2T ���[*@���UU���+*@���F���*@���`���@;*@���Q8���`*@���@���@!+@������ +*@������� ߜ*@���@,���x*@���$��� \*@�����@��� 1U*@��� SW���P8*@���@}��� k)@���@2���@d)@������n)@���$����s)@�������P)@���v���)@������n(@����͌���I(@��� ���@-(@��� ���(@���G���f(@����d(���`G(@���R���(@���``���`# (@��� #���l�(@���ܾ���`(@������'@���hd���'@���`���'@���PY����'@���@ ���'@����d(���;'@���`��� ''@���``���x&@�������=&@��������L}&@����[0����i&@���0���`I&@���`4R���:&@���V���@'&@������&@������� %@���W���n~%@������J%@���'���$@������$@��� !��� H$@���`ʎ���9$@������ $@������j$@�����@��� a$@���@��� w$@������W$@���@d���٠$@���_���$@���`S����%@���@���@d%@��� l���B%@���� ���`Kx%@����ף���b%@���`]���A%@���`���\.%@���_���%@��� SW���6%@���`���eU%@������@X2%@���^��� $@��������ӭ$@��� ���`F$@�������ô$@������ ف$@���`���m$@������X$@���@ ���`H$@����2����F$@���@"b���`#$@���p����$@���@,���@$@������@$@���H����@;$@��� #���$@������`$@���`��� sZ$@���@%���T$@��� !���|$@������@$@���@0 ���w$@���> ���@$@���@]n ���$@��� ���@P%@���V ���`&@���ij ����L&@���O ���&&@����!���V%@��� 4!���`%@���@W!���%@����]!���%@���@!���`s&@��� ���` &@��� ���Z&@���� ��� B&@���� ���&@����$ ��� =&@����A!���`L&@���@~!��� &@���.7!����&@���g!����ZQ'@���@Щ!��� R'@���@ؗ!��� (@����!���(@����!���`)[(@���!��� r(@���!����ô(@����"���(@���c"����-)@����u"���(@���@;"���h(@���/"��� (@����ް"���(@���"���I(@���U#���`lA(@����RX#���"(@���#���\(@���P#���`=(@���΋$���;k(@����$��� r(@���@$���^(@���@%���r;(@���N%��� z'@����%���f(@����/&���j(@���`N&����(@���&��� '@���&���G(@���p&���@i(@����)&���(@��� &���`(@��� %&����-(@����w&���Z(@���d&���)@���Q&���I?)@���r&����m)@���C&��� t)@���&���` )@���`r&���)@��� &���)@���@ &���;)@���&���&*@��� 9'��� F*@���@2'���*@��� p'���W*@���'���`�*@���'���$*@���`C'�����*@���`r'���=*@���(���3R+@���@I*(���j+@���'���`ݝ+@���`'���+@��� (���`f,@���`/'���U,@���(���`Ɏ,@���@X2(���ߛ,@���2(���ົ,@��� g(���9,@���r[(���@ 7-@���K(���dG-@����}(���Y-@���`/v(����-@���@F(���7-@���`(���@{s-@���'���Ί-@��� '���-@����'���`.@���ࣰ'���@J.@���k'���v/@����H'���^ /@���A'����K/@����w&���E/@���QX&���@ۿ.@���Q%���@F.@��� 2%��� 6.@���`%���.@���`f%���`#.@��� "p%���S.@���2T$����.@���`r<$���۾.@���#���@m.@���d#����).@���"���E.@���@"��� 1/@���"����h/@���@"���D/@����Ϫ"���@.@���@#��� /@��� J���/@������ 6.@��� SW��� S0@��� h���@0@���&���@/2@������ 3@������@.5@��� 9m���a%7@��� M|���`*J7@��� \O����8@���z��"������\,@���`fA@����#-@��� B@����������;������,@���uB@���ൄ,@���`B@���,@���uB@���w|,@����B@���@ry,@���`B@���`+v,@���B@���@3s,@���@#B@���@Up,@���`kB@��� l,@����B@��� h,@���`B@��� d,@���B@���a,@���B@���N`,@��� B@��� !_,@��� CB@���`,@���B@���a,@���B@���`'`,@���B@��� (^,@���B@���\,@��� B@��� \,@���@B@����_,@���-B@���a,@���B@���d,@����B@���`g,@���B@����j,@���- B@��� cn,@���Q B@���@q,@���u B@���Yu,@��� B@���y,@���� B@���},@���` B@���,@���`[ B@���ൄ,@���� B@���,@���B@��� ,@���eB@��� ~,@�����B@���,@���B@���`T,@���oB@���Y,@���$B@���0,@���`�B@���p,@���B@���G,@���B@���%,@���B@���,@���B@���@>,@���B@���@,@���8B@���,@����B@���,@���VB@���`},@���@B@����,@���@{B@���@֥,@���@3B@���`,@���FB@����,@���@3B@���,@���B@����,@���B@���`2,@���WB@���,@���`B@���`,@���B@���̌,@���`B@���,@���uB@���  -@���`fA@����-@��� A@����-@���A@���,@��� A@���,@���@A@���0,@���@.A@���,@����fA@���Z,@���@A@���`,@�����A@���,@��� HA@���`D,@��� lA@���`,@���A@���` ,@����A@���,@���A@���` ,@���A@���`,@���-A@���@,@���`A@���{,@���`A@���,@��� uA@���,@���A@���@,@����=A@���@>,@��� A@����F,@���@A@����h,@���@A@�����,@���zA@���ٽ,@���A@���`ڻ,@���fA@����,@����A@���0,@���@A@���,@����A@���S,@���`RA@���@ı,@��� A@����ů,@����$A@���ŭ,@����A@���<,@���#A@���@,@���A@��� ,@���`A@���@,@���@WA@���,@���A@���`},@���A@���`,@���A@����;,@���@A@���,@���A@��� c,@���HA@����d,@��� A@���ӫ,@���A@��� ,@���QA@���],@���`A@���=,@���@A@��� ,@���FA@���,@���@A@���`f,@���A@���,@���LA@���=,@���A@���,@���A@���,@���A@���@,,@���.A@���,@����zA@���0,@���@A@���,@���@ A@�����,@���A@���N,@���8A@����,@���`A@���,@���A@����,@���`VA@���`2,@���� A@���@,,@���VA@���`+,@���A@���,@���`A@���O,@����A@���,@����A@���,@���A@���,@��� A@��� ,@���`MA@���@,@���A@���`,@��� uA@���Z,@���`kA@���@,@���@A@���0,@����A@����),@���@3A@�����,@����=A@���@,@��� A@���,@���aA@���,@���A@���@E,@���=A@���@,@���A@���@,@����vA@���,@���@>A@���`,@���7A@���,@���`A@���,@���`vA@��� Q,@����A@���@,@���`A@���`-@���@A@����F-@���@pA@���@-@���A@����-@����]A@���-@���A@���`-@���A@���-@����=A@��� -@��� A@��� -@����A@���@-@���@A@���`-@����A@���`+-@���@A@���-@���3A@��� Q-@���@A@��� -@���GA@���`-@���A@��� -@���[A@���@"-@��� A@����#-@���HA@���#-@��� A@���&"-@����A@���`!-@���8A@���!-@����qA@����h"-@���A@���`"-@����A@����"-@���)A@���!-@���`A@���-@���A@���-@���uA@���@P-@��� A@���-@���3A@���Q-@���A@����z-@���A@��� -@���A@���4-@���A@��� ~ -@���A@��� -@�����A@��� -@����fA@��� \-@���`A@��� -@���@pA@���  -@���`fA@���{���������^N���\,@���`gN����-@�������������ymN���\,@���>qN���O,@���mN���,@��� ƂN���,@��� \N��� b,@���N���-@���˅N���&-@����N���Q-@���4N���7-@���໋N���@{3-@���^N����)-@���`lN���`-@���N����-@���� }N���-@���wN��� -@���@dpN���-@��� mxN��� N{-@����oN��� V4-@���4jN���-@���`gN���9,@���ymN���\,@���|�������� 1���@{s-@����9��� G;@�������������@U!����:@���V!��� G;@������@zD:@������� x69@����9����9@��� \O����8@��� M|���`*J7@��� 9m���a%7@������@.5@������ 3@���&���@/2@��� h���@0@��� SW��� S0@������ 6.@��� J���/@���@#��� /@����Ϫ"���@.@���@"���D/@���"����h/@���@"��� 1/@���"���E.@���d#����).@���#���@m.@���`r<$���۾.@���2T$����.@��� "p%���S.@���`f%���`#.@���`%���.@��� 2%��� 6.@���Q%���@F.@���QX&���@ۿ.@����w&���E/@���A'����K/@����H'���^ /@���k'���v/@���ࣰ'���@J.@����'���`.@��� '���-@���'���Ί-@���`(���@{s-@���@F(���7-@���`/v(����-@����}(���Y-@���(��� -@��� 1(���@.@���)���&K.@����)���j.@���)���j.@���@)���@.@���`)��� b.@���)���.@���p)����q.@���)��� /@����*���T.@���W3*���@/@��� \/*���@*/@���M|*���F/@���*��� &0@���*���@Q0@���`*����T&0@���Z+���@P0@���l+���[/0@��� +���@J0@���$+���`20@����}+���<0@���+���@.G0@���@3s,���:0@���Ϋ,���`0@��� ,���0@���`l,���`֣0@���v-����i0@����T-���k0@���`.���`Y0@���@2.���ͫ0@���;.����0@���,.����L0@���S7.���@ 0@���tz.���0@���`.���h0@���/���20@���/����p}0@���g%0����L0@���L0���0@���@Wc0���@Q80@��� x0���8.0@��� ~0���@^ 0@���ǁ0���0@��� 0��� 0@���҇0���`0@���q0��� 0@���`D0��� 1@���@ 0���e1@���> 0����1@���@0����Fr2@���40���`*2@���DT0���`-3@���x0���C3@���@d0���c3@���`n0����$`3@���`N0���x3@���K0��� N3@���c0���v3@���@Y0���3@��� 9n0���@y3@���p0���`h3@���w0���i3@��� x0��� Vt3@����C0���;3@���@0���e3@���J0���` 3@����70��� 4@���`B0���!4@���`:0����$4@����}20���@:4@��� J0���`T4@���p0����4@���}0���k4@���w0��� 4@���0���@4@����ד0��� 4@���0���@4@���'0���)5@����1����* 5@��� \0���@Q4@���� 1��� U4@���@ 1��� N4@��� 1���@#4@��� 1���4@��� 0���V5@����/W.���AV5@���*���W5@������*���V5@����(*���`6@���L*���6@��� 6*���6@���I)����T7@����Z1)��� F7@���`I�(��� Vt7@���l�(������:@���ш!����9@���@U!����:@���}���������7L@���~4���L@���`I�4�������������`L@���~4���7L@���o4���@ӮL@���@dh4��� yL@����W4���L@���/4��� %L@���@&4���2L@���4���L@��� �4���\L@���`I�4���L@���@4���sL@���`r,4���L@���*K4��� =L@���`c4���`L@���[p4���{L@���|4���`L@���~4���~���������G]����-@���@U���[@@���z������ ���������'������OJ\���@=@���@GZ\���?8=@���@Gf\��� %o=@���e\���g=@���`0Z\���q|=@��� \W\���@g=@���X\���@ S=@���Q\���qL=@���K\��� NK=@���2L\����S'=@���G\���`=@���OJ\���@=@����U���kA4@���^U���iS4@���U���;k4@���@U���4@���ݵU���94@���@U���4@���_U��� J4@����U���kA4@���\���<@���\��� ~<@���z\���`<@���J\��� <@��� \���s:<@���\���` T<@���@i\���`^<@���`\���`[<@���(\���'<@���\���<@���\���E<@���@3#\���@^<@��� $\����F<@����\���<@�����\���2=@���0\���@=@��� \���?=@���\���<@���\���E<@����G]���D@@���a\��� W@@���\���[@@���@ͳ\��� @@@��� 7\���`?@���`[���BU?@���T [���BU?@���Y [���`?@���LZ��� ?@���}Z��� ?@���Z���@y?@����wZ���J?@����_Z���C>@���QZ���>@�����HZ���>@���@7Z���>@����3Z���@Y>@��� +Z���`/>@����+Z���=@���QZ���=@���Y���HP=@���Y���@9=@����Y���`(=@���`Y���`/&=@���Y���@P =@���`Y���;<@���`Y���@�=@���Y���`R=@���`BY���==@���Y���`R7=@���@3Y���b9=@���൸Y���@.W=@���rY���e=@���൰Y���=@���@Y��� &=@���ࣘY��� =@����$Y���!=@���YuY���=@���dY����=@���@bY���=@���bY����=@���YY���@=@���`VY���=@��� SY���`=@���`RSY���=@���@ OY���=@���IY���}=@���`0BY���`s=@���(AY���@{c=@���1Y��� ;=@���1Y��� ,=@���`*Y���@=@���2$Y���@<@��� Y���`<@����)Y���<@���Y���@X<@���:Y��� g<@��� Y���y5<@����Y���`<@���X���@;@���qX���;@���yX��� x;@��� X���`;@���@CX���b;@���X���^;@���@2X���@ڐ;@����X���@dH;@���6X���@;@����ZX���@ ;@���_X���@�;@���XX���:@����ZX����:@���@ X���H:@����X����~:@���X���@(l:@���@[X��� b:@���X���d:@���X����L=:@���7X���;:@���pX��� %:@���@UX��� :@���`DX���� :@���`xrX��� :@���@mX���@ :@���gX���@:@���^X���9@����WX���9@���@VX���9@��� VX����9@����HX���@9@���@LX���9@���@TZX����>9@���aX���@ 9@����iX���m8@����bnX��� 7@����oX���@-7@���@[tX���`7@���@mpX���@7@��� }nX���C7@����{pX���'7@���@oX���@6@���@qX��� 6@���@uX���6@���xX��� N6@���iwX���Ô6@���uX���@6@���`tX���@-6@���VtX���`eg6@���ymX����5@���eX���`65@���@lUX���@-5@���TX����5@���@+ZX���`/F5@���^X��� %o5@���WX����5@���gX���`5@���oX���h6@���fX��� 5@���@cX����*{5@���@*_X���@{5@��� `X���k5@���@ SX���`4@���rKX���4@���VLX��� O4@����bFX���A4@���0X���=4@����X���3@���X���f3@���X��� Q3@����X����M,3@���gX���`3@���X���m3@����bW����3@���@"W���42@���W���`2@���@W���@^2@����{W���2@���@W���2@��� W���2@���@*W���2@���W���2@���@W���2@����rW���@^2@����W���2@����W����$2@���@W��� 2@���W���@^2@����JW���12@���@W���@ 2@����JW���2@���W����$2@���ಳW����T2@���W���'2@����֘W���`'2@��� xW����H2@���@xW���A2@����pW��� G2@���pW���4Q2@���@"fW���W2@���dW���ch2@���\W���p2@��� IW���lp2@���@ KW���m_2@���EW���_2@���@EW����Sg2@���@IW���k2@����8GW���q2@���~=W����$p2@����4W���%2@���@-W���2@���@+W����S2@���Q,W����M2@����W���m2@���@V���s2@���V���2@����V��� y2@����W����2@����AW���r2@���@:V���2@���`4V���D2@����V���~2@���V���8n2@����)V���b2@���V���c2@����V���N{2@����V���mo2@����BV���u2@���QV���|2@���V���2@���V����$2@���hV���`2@���eV���`2@����bV���`2@���`V���72@���V���c2@���V���o2@���@V��� 2@����bV���c2@���@׿V���@]3@���@V���@_3@���V���o3@����V����3@���@+V���3@��� ՝V���4@����V���@^-4@���V���1t4@���nV��� U4@����ZV��� O4@���V���@4@���@2V���`4@���XV���5@���@φV���)5@��� dV���N5@���G=V���@zd5@���.V���q5@���V���5@����bV���@5@����BV����Й5@���U����Љ5@����U��� U5@���eU���'5@����U���@5@���U���`~5@���U���@.w5@���U���x5@���`U���~5@���DU��� 5@����U���`55@����(U���`5@���@U��� ~5@���U���``5@����U���h5@���U���ए5@���EU���5@���6U���` 5@���@"U���m5@���@U���@o5@���@U���_5@���� U��� [05@���yU���&5@���@"U���@Q5@����U���@4@����QU���74@���U���Af4@���U���*4@���@"U����3@���U���B3@���=U���3@��� U���3@���_U���3@���U���3@���U���` 3@���@uU���3@���U���̬3@���U���o3@���<U���3@����U����Z3@���@U���[3@���@2U���3@���]U���13@��� U��� Oz3@��� U���7o3@����U���ef3@����U���@4B3@���@U���t93@���U����53@���@U���ES3@��� U���4Q3@���NU���(3@���U���`52@���U���@(2@���U���q\2@���U���O2@����U���P92@���@U���^2@���V���{2@��� 1V���h2@���@;�V���޼2@���fV���2@���� V���2@����r V��� 2@��� V����ɯ2@���� V���6|2@����V���]}2@���V���w2@���@'V���[72@���@+V���@/2@���y-V���@2@���@1V���` 1@���O6V��� 1@����KBV���k2@���-IV���1@���IV����1@���@"NV���1@���dV���@1@���@{V���!1@���@ǑV���@41@���VV���1@���V���1@���V���`1@���V���`A1@���V���A1@���V���A1@����V����-1@���@V���@1@��� V��� 0@���V���@.0@���ڼV��� y0@���HV���0@����JV���`0@���rV���0@���UV���0@���=V����z0@���5V���+i0@��� ٙV���`*Z0@���V���:0@��� V���@30@����|V���@W0@���V���@W0@���HV����i0@���V���20@���@V����/@���@�W���5/@��� W���A.@���6W���'.@���@ W���@-@���@ W���-@���@ W���-@���@ W���9--@���W����-@����W���o-@���&W���d-@���0W���!.@���^2W����h/.@���4W���G.@��� 15W��� Y.@���@6W���&^.@���@IW���@.@���aW���`){/@��� |W���`0@���vW���0@��� zW����0@���`ЁW��� 0@���@W���:0@��� W����20@����֔W���@0@���W���``K0@��� W���=0@��� W��� x&0@���W���)0@���`ߔW���@.0@���W���(0@���@W���@0@���W���0@����W���00@���W���410@���@LW���@P90@����rW��� ?0@���@CW��� K0@���@"W����U0@���@TW���\0@���@+W���B0@���`W���@PI0@����ZW���S0@���^W���k0@���W���bi0@��� W��� ,I0@�����W���hD0@���W��� @0@���@W���e60@���@W��� 20@���@*W���@60@��� W���"0@����W���@J/@��� W��� \/@��� X���@!b/@����$X��� \O/@���EX���`)/@���HX���@;/@���@qX���9/@����wX��� y0@���yX���@0@����X���60@���X���N0@���@X���90@���X����0@����BX���q0@���@X���0@���@"X����0@���@ X���0@���@X���@W0@����X��� 0@���@Y����|1@���)Y���!1@���@CY��� VD1@����;DY��� Q1@���PY����t1@��� ZY����Ä1@����_Y���71@����gY���t1@����+sY���1@���|Y���<1@���`ށY���1@���Y���@1@��� uY���@2@���:Y���@@2@���Y���HP2@���`Y���l2@���Y���m2@���Y���@ԕ2@���Y���`2@���uY���2@��� Y����2@����Z����3@���5Z���3@����$Z���3@���Z���@3@����Z���@3@���@ /Z���@:3@��� s3Z���83@����3Z���I3@���8Z���G3@���pAZ���7_3@���`fFZ���@3@���@.SZ���?3@��� 1XZ���q3@���0aZ���4@���@ikZ���`k4@����cZ����p}4@��� VZ���@W4@���PZ���ǐ4@���@NZ���@4@��� SZ��� 4@���`0VZ����4@���`ZZ���@4@���@bZ���4@���m`Z���k4@���`+^Z���4@����SZ���A5@���PZ���a 5@���@^NZ���95@���@EOZ���Y5@���@KZ���Ds5@���`MZ���5@��� [Z���b5@���iZ���6@���uiZ���`T6@���@rZ���m6@���@~Z���6@���فZ���6@���Z���o.7@���@.Z���8.7@���@Z���@Z7@���Z���7@���Z����7@���Z���%8@���Z���@n8@���#Z���`|8@����$Z���@^8@���`kZ���d8@���kZ���8@���Z���@ 8@����=Z���8@���@Z���@t8@���`}Z���`8@��� aZ����}8@���@.Z���[8@���@Z��� 18@���Z��� 8@����[���@.8@����[���8@��� Z����8@���@3Z����8@��� [���8@���@[���8@���@^[���``8@���`[���8@���@[���@X8@���[���>9@���T[���`9@��� [���``8@����)[���8@��� [��� 9@����[���8@��� �[���19@���[���9@���[���/9@���[[���7?9@����=[���@WC9@���[���$9@���[���?9@����x'[��� W9@���@.[����Z9@��� u*[����p]9@���)[���@4b9@���`+[���@ f9@���0[��� `9@���/[��� Ue9@���@/[���o9@���=5[��� \9@���9[���9@���8[���i9@���@:[���t9@����<[���m9@���@[���`~9@���@[���u9@���@F[��� 9@����dD[���@ 9@���?[���Ƒ9@���@G:[����#9@���9[���9@���`F[���19@����H[��� 9@���aN[���9@����O[���?9@���I[��� 9@���@.K[��� ؒ9@���@N[���@9@���pY[���9@���@V[���@9@��� 8S[���`9@���R[���@Q9@��� nW[���@W9@���BY[���9@���m\[���@^9@���`}Z[���C9@����_\[���9@���Y[���@:@���@WS[���4:@���`BR[����S':@���@YN[���`fF:@��� N[���Q:@���#M[���X:@���@J[���DS:@���I[���>:@���`xF[���5:@���=E[���H:@���hH[����N:@����xK[����$`:@���O[���@zT:@��� nO[����r:@���Q[��� O:@���`[���@ :@��� c[���@]:@����_[���:@����k[����M:@����s[���`:@���|[����:@��� z[���:@���rx[���@:@���D|[���B;@���[��� ;@���@[���@d;@����$[���`';@���[����C;@���[���L;@���ࣜ[���8N;@���J[���_;@��� s[���^;@���[����ʎ;@����[��� ١;@���@[��� ;@���@[���;@���Y[���;@���=[����;@���`B[���`;@���[���;@���`Ŷ[���;@��� [��� ,;@���[���s;@���@[���;@����[���;@���^[��� U<@��� [���a<@���`[���s<@����[���<@���[��� <@���@Y[���<@��� [��� <@���`[���r<@���[���B<@���@Y \���=@��� \����vH=@���`\����S=@���\���T=@���G\���`K=@���\���hT=@���`B\����Za=@��� \���x=@����=\���=@����)(\��� =@���,\���r=@����O/\����=@���-0\���2>@����_4\���F>@���`7\����SG>@���`5\���W>@���7\���@n>@���D\���>@���@G\��� >@���5E\��� >@����G\���?@���=F\���q ?@���D\��� %>@���aB\���`0%?@���E\��� +:?@����G\���`1?@����)T\���A?@����h\���tY?@��� g\���Av?@���i\���?@���@~\���@4?@���|\���k?@���\���?@����_\����~?@��� \����}?@���@\���` ?@���`\���`5?@���\���?@���Q\��� ?@���@\���?@����\���8?@���\���?@���`\����ä?@���\��� ?@���[\���+?@����x\��� N?@���[\���[?@���L\����?@���\���`6>@��� 6\����>@���Q\���B>@���[\��� m>@���8\��� 2>@���^\���@=@��� u\��� N=@���Q\���@^=@���|\���@X=@���@\���@z=@���uu\��� r=@���`kj\����SG=@���`e\��� y%=@���`c\���:=@���@b\���i<@����M`\���1<@���\\���@z<@���]\���l<@���`fZ\��� <@���`U\����$<@���V\���<@���-P\��� <@���aN\���D<@��� aK\���`<@���@G\���@<@���B\���q<@����7\���@o<@����7\���G<@���`2\����2<@���1\���<@���@G.\���<@����;0\���;@���$\���k;@���\����;@���@ \���=;@���@^\����3;@���#[���;@���`\����;@���[���@ :@���[���:@���B[���@:@���@[���`:@����[��� [:@���@[����:@��� [���@:@��� [���@ۯ:@���[����ɿ:@����[���:@���[���@.:@��� [��� +:@���[���࣐:@����M[����|:@���@[���p:@����M[���^:@���B[���`T:@���`[���B%:@���r[���`:@����+[��� U9@���@[���Ô9@���h[����w9@���=[��� Nk9@���=[���k9@���+[��� 9@���@ [���@8@��� 8[���8@���`[���@8@���c[���~8@���[���8N8@���Ǚ[���148@��� [����#18@���•[���(8@���[���l08@���[���-8@����[���[8@���[����8@���=[���l08@���@3[���U8@��� J[����*[8@���@ϊ[���L8@���@[���88@���[���@+8@���}[���@( 8@���@z[���8@��� u[����8@���r[��� y8@���t[����#7@���ar[���@7@���l[����L7@���ml[��� 7@��� nk[���@7@���^[���@W7@���Y[���@.g7@����[[���;7@���`[����#!7@���@j[��� 7@���t[���`6@���@@{[����6@���Q[���6@���([���6@���`[���HP7@���`[���7@��� [����й7@���@[���48@���@W[���@?8@���@[����pm8@����[���Ɓ8@���@@[���8@���[���b8@���[���@z8@���`f[���a8@�����\��� 8@���@^\���`8@����\���@(8@���\���ि8@���`}\���`8@���@\���8@���\���`8@���&\���9@���\��� ,8@��� \���8@���@ \���D8@���\��� 9@���2\���@*9@���[\���@E9@���\��� %9@���`k\����*9@���\���:@���\���:@���\���h:@��� \���`6@:@��� !\���`*J:@���`T"\����*K:@���@^"\���iS:@���`*\���DT:@���`C\���:@���F\���:@���E\��� :@����xG\���:@���@N\���:@��� N\��� :@���2H\���k:@��� 6H\���y:@����+K\���>:@��� O\��� :@����\\���@X:@���@^\���:@���`b\���:@���=f\��� :@���zu\���b:@���!z\����$�;@��� \\���@:@����ׇ\���;@���=\���`);@���\���J.;@���`\��� >;@���\���`g;@���`ʪ\���;@���`ܮ\��� ҇;@����=\���H;@����׿\����w;@��� \����;@��� \���;@����\��� [;@���\����;@���\���;@���@\���;@���\���@;@���Q\���;@����;\��� ز;@��� \���`;@���@~\���@;@����Ä\���;@���\���;@���॓\����;@���\���`;@���\��� <@����܇\����<@����+\����-<@����\���@?<@���z\���w<@����Ń\���<@���@^\���<@���=\���G<@���`\���<@���@i\���H<@���`\���`<@���`ޭ\���@$=@���\�����@=@���Ѽ\��� `=@���e\��� Nn=@���0\���@3=@���\���@ڠ=@���h\���@=@���r\���=@����O\���4=@��� \��� V=@���`\���6>@���\���Z>@����\���jb>@���`\���e>@����x\���r>@��� \���%>@����=\���`>@���r�]����Ga>@���@]��� Uu>@���@]���>@��� ]����L>@���z]����S>@��� ]���` %?@���D]���U?@��� ]���Gq?@��� \+]��� &?@���(]���?@���,]���κ?@���(]���?@���@ ']����}?@���O&]���?@���`T6]��� ?@���8:]���9@@���@]���`#@@��� G]���X:@@����G]���D@@�����8������`:@���^F@���Z">@��� L>H@�������������`:@���H@���@:@��� (&H@���`4:@���'H@���`:@��� ,H@���`':@���R&H@��� :@��� &H@���:@����4)H@���@:@���0H@����:@���0H@���@:@����3H@��� :@���-H@��� ;@���`.H@��� ;@���@4H@���;;@��� /H@���`2E;@���0H@���`W;@���8H@���@gd;@���-8H@����=k;@���`V5H@��� S;@��� ;H@����;@��� L>H@���q;@���):H@���>;@���8H@��� S;@���Q9H@���`;@���2H@���s;@���X-H@���;@���)H@���<@��� \'H@���`<@���$H@���`<@���$H@���*<@����]H@��� <@���`H@���d*<@��� H@����.<@��� H@���`/<@���H@���8<@���@GH@��� K<@����zH@���P[<@���`H@���^<@���H@���P<@���H@���@yX<@���@>H@���@{c<@���H@���`)k<@���H@���`'p<@���H@���k<@���@.H@����u<@���# H@���=z<@���$H@���(<@���H@���z<@��� H@��� <@����H@����F<@��� H@����<@���` H@���@<@���H@���� <@���@H@���@<@���GH@����<@���G@����=@���oG@���@ =@���@>G@���@=@���`G@���S$=@���8G@����-=@���G@���1=@���`G@���A=@��� G@��� 1=@����G@���1=@���@G@���?=@����G@���B=@���G@����F5=@���G@���@4=@���G@���*=@����G@���`!=@���`G@���/=@���QG@���@=@���@GG@���@3C=@���HG@����N=@���� G@����R=@����vG@����Z=@���ࣰG@���`[a=@���`̭G@���` a=@����4G@���`g=@���¥G@���y=@���fG@��� |=@���VG@���4=@���G@���•=@���G@��� e=@���ೡG@���=@���@֝G@���@G=@���G@���4=@���$G@��� =@��� G@���ב=@���G@���=@���͊G@���@=@���G@���=@����=G@���Z=@���xG@���=@���tG@��� =@���@nG@���@p=@���`BnG@���=@���7hG@���@3=@���7hG@���@G=@���eG@���` =@����^G@���=@����QG@��� =@���`IG@��� S=@���FG@��� =@����CG@���=@���@G@���@y=@����z>G@���=@���@?G@����>@��� <G@���@>@��� u:G@���>@���@6G@���Z">@���`25G@���@>@��� 0G@���=@���1G@���{=@���,G@���@*=@��� ,G@���`=@��� L.G@���=@���@1G@���@<=@����z6G@���=@���`2=G@���=@���@>8G@����Ω=@���`6G@���<=@���`2G@���`o=@����B/G@���>=@����1G@���@{=@���5G@���`=@���`R7G@���=@���=G@���@{=@���`�?G@���fe=@���8G@���@d=@���B5G@���X=@���<G@��� R=@���<G@���@M=@���8G@���N=@���@{3G@����C=@���`3G@��� e9=@��� .G@���g3=@���0G@���`9=@����]5G@���q:=@��� >G@���*8=@���2DG@���z4=@���LEG@��� =@����f?G@���<@���6G@���@ <@���`'G@��� <@���"G@��� =@���G@���� <@���@ G@���<@���@G@���<@����G@��� |<@���@F@���o<@����F@���<@���F@����4<@���@WF@���[<@���F@���ױ<@���F@���<@����=F@���f<@���@F@���<@��� F@���<@���jF@���`I}<@���F@���><@���F@����<@���F@���\<@����F@��� <@���F@���<@���F@���@օ<@���@GF@���=z<@���F@���H<@����=F@��� <<@��� lF@���F6<@���^F@���=*<@����MF@���@<@���F@���@P)<@���F@���<@��� F@���`5!<@��� F@���<@��� ~G@���`"<@���G@��� @<@���>8G@���@5<@���Q@G@��� I?<@���`MG@���6<@���`WG@���@4<@���`~G@���;@���ਃG@���;@���G@����};@���G@��� V;@���3G@���>x;@��� G@���dw;@��� G@���jR;@���!G@���J;@���G@���@=;@���`G@���*;@���G@����$�;@���H@����:@���3H@���`0:@���l H@���`:@���H@�����P������@��� 0E@���F@����E@���'����������`@��� 0E@���-@���E@��� \@���.E@���@���@E@���@���E@���@���oE@���@��� E@���@���-E@���Z@���E@���@���E@���@@���E@���@Ɯ@���uE@���`'@���E@���`@���E@����@���WE@��� @����E@���@���@E@���@����E@���@���@E@���@@��� uE@���@���E@���`B@���@E@���@���QE@���F@���`�E@���@.@���E@���~@���E@���@��� HE@���µ@���E@���@���`vE@��� A@���@ E@���@��� E@���ӫ@���8E@���@���E@���@���E@���؟@���E@���`k@���E@���@@���@E@���@N@���LE@���`@��� 0E@����� ������ U@���jD@���`d]@���`-J@���v���������ϻX@���`-J@���`X@���UJ@���X@���I@���3X@��� OI@���@X@���`YI@���`TY@���@I@���*Y@���I@���UY@���I@���YY@���ƹI@���`bY@���SI@���@͋Y@���1I@���JY@���3I@���`fY@��� 7I@���܉Y@���[I@���Y@���@XrI@���`Y@��� lI@���#Y@���@dI@���Y@����_I@���`ŖY@���ZI@���`Y@����RI@���Y@���@HI@���WY@���AI@���`;Y@���4I@���@Y@���&I@��� Y@���I@���BY@���"I@���@Y@���`I@����Y@���I@���Y@��� =I@���Y@��� I@��� Z@���!I@���Z@���I@���Z@���$I@���u=Z@���b1I@����vHZ@��� 2I@��� SZ@��� =I@���`MZ@���4I@����Z@���Z0I@���Z@��� +I@���ѐZ@��� &I@���`�Z@���L,I@����;Z@����5)I@��� ZZ@���I@���Z@��� I@��� Z@����I@���Z@��� DH@���Z@����wH@���[@��� =H@��� #[@��� NH@��� W[@���`H@���xa[@���H@����d[@��� H@���G[@��� H@��� n[@��� H@���Ѭ[@���3H@����[@���,H@���[@���H@���\@���H@���`\@���'H@���`.\@���H@���E\@���H@��� K\@���H@���e\@���I@���f\@��� >!I@���@\@���`_$I@���\@��� %I@���\@����!I@���\@���9I@���\@���`0I@���O\@���@iH@���`\@���`H@���`]@��� I@���`]@���I@���@&]@����H@����]-]@��� H@���@ +]@���2H@����]@���@nH@���a]@���lhH@����\@����BH@���}\@���Q H@���`\@���bH@���\@���G@���\@��� G@���@\@��� G@���`d]@����5G@����]@���uG@���`]@���@iG@��� 7]@���@G@���@G]@����$G@���T]@���G@���X]@���G@��� `]@��� G@��� p]@���@G@���@s]@���H@���#}]@���@�H@���`]@���dG@���]@���G@�����]@���`G@���]@���UG@���`+]@���G@��� ]@���SG@���]@��� =G@���`M]@���G@��� ]@���G@��� J]@��� 7G@���`;]@���UtG@���`d]@��� ZG@���]@���uPG@���?]@���`LG@���]@���@QPG@���`;]@���NG@���@]@���VG@���`d]@���`G@���]@���:\G@����ø]@���bG@���]@���@aG@���}]@����WG@��� n]@���lXG@���`ړ]@���S^G@���`z]@���`NG@���v]@���@hDG@���m]@���AG@��� ~h]@��� FG@���`Tf]@���SNG@���@Z]@���`JG@��� W]@���.G@���E]@���.G@���5]@���a2G@���x%]@���`%G@���`;]@��� ` G@���]@��� F@���]@���bF@���k]@���� F@��� ]@���`F@���]@���F@���\@���`F@���@\@���@F@���@\@���`F@���\@���رF@���\@���`F@����\@���`xF@���z\@����vF@����h\@���d_F@����H\@���`fF@���@&\@���vF@���@W\@��� OF@���`[@��� F@���=[@���F@��� Z[@���`VF@����[@���`IF@���`R[@���`4F@��� J[@���*F@���p[@��� NF@��� H[@���,E@���[@���E@���T[@���`E@���`+[@��� E@���}[@���E@���@[@���E@���@W[@��� E@���`k[@���`E@���@[@���lE@���3[@���LlE@��� 1[@���cE@����[@���8VE@���@[@����RE@���`_{[@���`RE@��� l[@����wGE@���`b[@���<E@���@\[@���`:E@����T[@��� 7E@�����@[@���@:E@���6[@���23E@���![@���`8E@���Z@���`4E@���3Z@���;E@���Z@���4E@���Z@��� .E@���-Z@���(E@��� Z@���@%E@����ׇZ@��� E@���]Z@���jD@���NZ@���D@���@Z@���jD@���@;Z@��� rD@���!Z@���D@���!Z@��� HD@����Z@���D@���\Y@���D@���@Y@��� D@���Y@���E@���QY@���VE@���Y@���`E@����$tY@��� >AE@���x5Y@����VE@����)Y@���uXE@���QY@���RE@���8Y@��� RE@���X@���IE@���X@���~PE@����JX@��� fE@���X@���`]E@���X@���@tE@����hW@��� E@����W@���~E@���W@���E@���W@���@F@���jW@���F@��� W@����#F@���@OW@��� %F@���@PW@���` F@���\W@����,F@���\W@���@9F@����YW@���`BF@���ZW@���2KF@���#W@��� YF@���aW@���`){F@���FW@���PF@���`W@��� F@����W@���*F@���V@���LjF@���V@���:F@���V@����.F@����V@���VF@���V@���;F@���@V@���F@���@V@���F@���lV@���!F@���ײV@���F@����.V@���[F@���� V@��� &F@���YV@���G@���V@��� UG@����=V@���G@���V@���c(G@���V@���bIG@���3V@����_G@����hV@���`jG@����^V@���qG@���@ܶV@��� ~G@���V@���G@���[V@����5G@���ϝV@���G@���V@���G@���V@���@XG@���זV@���SG@���V@��� fG@����UV@��� G@���`݅V@���G@���`QV@���G@���@~V@���*G@���@|V@��� G@���� rV@���`G@���`jV@���G@���eV@���H@���@aV@���KH@���sNV@���`G@���@DV@���mG@��� ;V@���H@����^5V@���`H@���@&V@���H@���$V@���n.H@���JU@���IH@���� U@���@MH@����UV@���QH@���@V@���jZH@���@V@���_H@���@U@����bH@��� U@���pH@���U@���vH@���U@���yH@���U@���`HH@��� U@���H@���U@��� xH@���`a V@���עH@��� V@��� H@���@qV@��� %H@���` V@���H@���V@���H@���@h$V@���`H@���)V@���H@���36V@����H@���@:V@���H@���L8V@���`H@���8V@���H@���@r;V@���H@���R?V@��� H@���KV@���`H@��� OV@���`0H@��� LV@���8H@���@NV@���H@���*VV@���@hH@����WV@���3H@���@mV@���`H@���mV@���H@����iV@���`H@���@hV@���`H@���@lV@���`H@���~V@���@(H@���YV@���`H@���@ˁV@��� 6I@��� V@��� I@���V@���@I@���@V@���@z4I@����V@���<I@���V@���;I@���V@���rCI@���SV@���� VI@���V@���D[I@���� W@���`XI@���`W@���\I@���:W@���dI@���@W@���@pmI@����,W@��� oI@���(W@���XI@����,W@���mWI@���0W@���[I@���@2W@����dI@���@r;W@��� ffI@����%?W@���`dI@���?W@���@-`I@����>W@���UI@���>W@���`TI@��� ?W@���`QI@���BAW@��� xNI@��� TW@���BMI@����\W@���`OI@���nW@���3JI@���W@���`II@���ිW@���GI@���`W@����I@����ۧW@���`I@����W@���II@���:W@��� H@��� W@��� aH@����UW@���|H@����MW@���I@���W@���`I@����W@���H@����-X@����I@���X@���H@���CX@���aH@��� X@��� H@���@$X@��� UH@����%X@����H@���-X@���H@���?X@���sH@���JX@��� ~H@���@`SX@��� H@����^X@���H@���@eX@���`qH@���keX@���`H@���qX@���H@���IwX@���dH@���@܆X@���`AI@���@X@���%I@���@X@���`@I@���[X@���EI@���X@���dOI@����}X@����cI@����X@���lI@���@wX@���`wI@����tX@����$I@���Y}X@���`I@���`{X@���RI@���X@���I@���X@���ƹI@����ғX@���I@���X@��� I@���lX@���I@���wX@���I@���X@���J@��� 6X@��� J@���ϻX@���`-J@�����`������Z*���B;@���<+���'A@�������������`0���ÌA@���h���A@�������_A@���@���LA@����s����>A@�������l0A@���0u��� A@���m��� @@��� gE��� N@@��� ���I@@�������@@�������٠@@������m@@���@���T}@@����8���>x@@���@ ��� \@@���<+���A@@���?���~8@@���h$���@3@@���������)@@������{@@����8����_@@���-����^@@���-����@@���`h���{ @@���������@ @@��� !���2@@������ @@�������@@��� ����?@���@& ���:?@��� ���d?@������?@���@��� x?@����8���w?@����; ��� e?@��� n���@V?@���@_���8?@��� ����.?@���@B��� '?@���@ ��� H0?@���� ���@ ?@���Y ��� >@���_, ��� >@���`���>@�������>@������@ >@���&^���Z>@������~>@���z����/>@��� ���b=@���$`���=@���@���I=@������=@������B=@���` ���3=@���^M���@4=@������?=@�������@e=@���@}��� Vd=@��� ���=@���. ��� N<@���@ ���a<@���V!����<@���V!���9;@���&#���@;@���Z*���B;@��� *���e;@���@)���;@���")���;@���@_(���Z<@��� (���`<@����'���O<@��� &���f<@���&���`<@���p%���<@���j$���@@=@���@<$����ww=@����1#���`=@���G#���`+>@����Q9#���@i>@���@T#���̜>@���#���>@���#����p>@���@#���k>@���?#���>@���@#���W?@���@Ȱ#��� xf?@���.w#��� ?@���@[#���g?@���@2"���@@���@"���`@@����΋"���G@@����Q!���@q@@��� !����@@���W ���l@@���@ ���`q@@���M ���@@����) ���P@@�������@@���F���@@���,y��� O@@���V���@@���@���`!A@���@���U\A@��� \���SA@������A@���`K���@FA@��� \���'A@��� ���A@���h^���`A@���N[���`0A@��������� A@��� <���A@���E���DA@���X���`YA@���`u9���`_A@���`��� ~A@���q���A@��� ����A@���@ W ���A@���` ���A@��� ���`A@���@y���A@�������@۷A@���พ���A@���\w���A@����a���A@����/7���ޔA@���໻���@?A@���O���`ʎA@��� J���A@����Ϋ���ϙA@���@B���A@���E#���A@����[����A@���`0���ÌA@����� h������ x6>@���@;:���ikD@���$������������zA@���T%'��� #{A@��� S%'���`A@���$'���A@���42'���aA@���`-'��� A@����w&����wA@����&���  B@���� '���B@���''���B@����h'���@DB@���2t'���� VB@����n'���@iB@��� $'��� NB@����l"'���@ԍB@���2T'���B@����h'���`qB@���@_'���ZB@���|s'����^B@���I'��� B@���`'���B@���&����.B@���@A&���@ C@���&���$?C@��� &��� VC@���&���'mC@���j&��� rC@���@-X&���`C@����wW&���lC@��� h%���*C@���S%��� 0D@���`W%��� #D@����`,%���@5D@���%��� 7D@���$���`BD@��� $����5AD@���%%���`HD@���1%���bID@���L%���QD@��� W%���RD@���@e%���JD@���`%���\>D@���c%���R?D@��� %��� OD@���@%��� fND@���%����v@D@��� %����@D@���2&����HD@���@^ &��� GD@���!&���?D@���`I&���@D@���g&���`-D@����f&���@2D@���@3&���=D@��� 1&���@o6D@���`l!'���<D@���'���BD@���@ʯ'���B=D@���'���ED@���('����5AD@���@z(���9D@����l(���@D@���`(��� @D@��� (���`GD@��� (���U<D@���@)���HD@���� )���`HD@���M)���`JD@���l)���ND@���:m)���`RD@���@)��� ND@���@)���`GD@���)���7GD@���z)���2CD@���`)���=D@���)���4D@���)���5D@���@)���>D@���*���AD@����*���`>D@���`f)��� UED@��� b)���@hLD@���`)���GD@��� 9.*���HD@���Ȱ*���DCD@��� +���` MD@���`)+���DD@��� bJ+��� QD@���@A+���QD@����(,���`_LD@��� ,,���OD@���`I@,���CD@��� W,���'MD@���,���UD@���`la,���1\D@��� he,���`^D@���`5,���WD@����),���@QD@���,���ZPD@����#-���BUD@���@3-���QXD@���`&,���fD@���`,���iD@���,���@iD@���,��� ~aD@���� -���bD@��� +-��� gD@���� -��� =jD@���-���ikD@���-���@o^D@���"-���UD@���-���!RD@���-���RWD@��� -���_D@���`O-���`cD@���-���zTD@���t-���tYD@���+.���`qDD@���n?.���AD@���_.���@ID@���g.���`HPD@��� \O.���9UD@���@_.���`WD@���.���ED@���~/���?D@���`/���`.D@���Yr/����wD@���m�0���@D@���@�0���C@���<0���`C@��� =0���C@���O0���C@����i0����C@��� 9n0����C@���t0���SC@���&0��� =C@���`0���@C@���~0���`6C@���0���QC@����0��� C@��� 0���\C@���1���` UC@���w1��� GC@���1����@C@���@1���?C@���`$1��� C@���H1���7C@���-1���C@���@@1���`AC@���@O1���B@��� [`1���B@���y1���`GB@��� u1����^B@���1����MB@���1���}B@���E2����$pB@��� 1���hB@���`1���1|B@���`2���@qB@���12����jB@���`-2����MdB@����92���3jB@���`B62���`qLB@���`w2���`YAB@����f2���`_<B@���`2���`G1B@���2����3B@���2���3B@���N2���#B@���2���@pB@���F2���) B@���@(2���`B@����/2���B@���n2���B@���`2���`�B@���`s2���A@���3���A@����6a3���`A@���3���@pA@���@3��� kA@���@3��� gA@���3��� =ZA@���ҷ3��� OA@���R3���@GA@���`3��� DA@����ݞ3���@oNA@����)3���2cA@��� 3���bA@���3���ZA@���`3���rcA@���� &4���``A@����.4���TA@��� a+4���^A@����`<4���XA@���a4���RA@���`a4���TA@���`m4����ZA@����r4���2[A@���~4���UA@���=4���|rA@��� b4��� xnA@����04��� yA@���`4���@.A@����)4���`0A@���4���A@��� 94���@A@���4���rA@���@ 5��� ҇A@��� 5���A@���`5��� A@����=;5���ԅA@���`lA5���`ŊA@����YR5���`A@���@05���8A@����/W5���@A@���n5��� fA@���5���DA@��� a6���A@���UU6���`A@����k6���iA@���@;|6���رA@���J6���A@���`36���`GA@���K6���A@���,6���A@����/G6���`/A@���١6���`A@���E6���A@���@6���mA@���@7����A@���@7����MA@���@:7����5A@���n7����ѰA@���&7����A@���J7���@.A@���7��� A@���|7���tA@���S7���@WA@���7���A@��� 7���UA@���W7���޼A@���""8���A@���`8���`NA@��� 18���>A@���8���@@���9���k@@���`.9���@@���J9���� @@����T9���@@����`l9����wg@@���˝9���� ^@@���`9���*Z@@���@j9���@?X@@���}9���J@@����9��� B@@���`9���K=@@����9��� >A@@���`9���@oF@@���9����$P@@���E:���@b@@���`B6:���@g@@���@F:���cp@@���@AG:���o@@���@>:���s@@���:���z@@���@ :���Iw@@��� D:���Pr@@���@:���`*@@���@;:��� .@@���/:����@@���~:��� > @@���d:��� @@���B:���`0 @@���@):��� @@���`k:���?@���@K9���``?@���m9���@@���x9���?@���9��� a@@���9���@@���u8���?@���+8���Z?@���p7��� ?@���`<7���`�?@���@7���@?@����z7����ɏ?@���/7���1L?@��� j6���@d?@���Z6���`4@@���O5���`>@@���X5���`.@@���`"5���@B@@����4���=@@���@c4���`H@@@���>4���@F@@���4���9U@@���4���Vs@@���}"4���@y@@���P 4���@i@@���4���@@��� [3���`@@���`3���`|@@���`3���`B}@@����3���z@@���@ 3���`t@@���G3���:l@@��� \3���l@@���o~3���:d@@���`w3���`qd@@���]3���@m@@���@cI3���1l@@��� 3���[@@���3���}Y@@���2���1\@@���2���Y@@���`B2���`h@@���w2���2s@@��� 2����v@@��� i2��� y@@���@2���q@@���҇2���@@����w2��� /@@����g2���`Y@@���PY2��� {@@����`<2����$@@���.2���`|@@���2���y@@���1����|@@���q1���{@@���`1��� a@@���,1���@@���'1��� z@@���U1����@@���X1���{@@���%1���`k@@���@]0���x@@��� 10���}@@���g0���@^b@@����÷0���Z@@���%0���@Z@@���0���S@@����֔0���@@��� [p0���@@���r0����v?@���k0���`?@���p=0���`l?@���>)0���@M?@���S0���`?@���@0����>@���%0���>@��� �0���:l>@����Y0����i>@���hD/���[>@���@/���@Wc>@��� 1.��� [>@���.���@D>@��� n.��� x6>@����T-����v>@���-���a?@���=J-���@ԕ?@���@-���` @@���,����d@@���,���K@@���4,���S@@����l,���D@@���`--���`@@����}2-���@@���`I�-���`A@@���,���@@����Z-���R@@���W,���t A@��� ,��� &A@����,���1A@���``,���BEA@���*;-���BA@���`-��� HA@���-���{KA@���Ȑ.���n6A@���K.���`8A@���Q/���@z4A@���`Z/��� ~)A@���|/���P!A@���`/���!A@��� 1/���6A@���`I0���4A@���z40���!:A@���`H0���IA@���R0���@LA@���g0���aA@���0���� nA@���p0���SA@���0���lA@���#0���A@����S0���ϑA@����0���A@���1��� A@���@!1���`2A@���"1���mA@���@1���`A@���E0���`A@���`0���@A@����}0���`A@���0��� A@���0���`6A@���gu0���A@���@90����A@����0���`A@���!#0��� A@�����0���`�A@��� .���`A@���.���A@���ڧ.���nA@����[.���JA@��� h-���A@���-��� HA@���O-���1A@���I_+���@nA@��� 3�+����ZnA@���*���:TA@���&*���HA@���`*���`CA@���@)��� 8A@���)����/A@���U(���NA@���'���#PA@���@&'���zA@���T%'�����j�������_ W@���@#@���WJY@���@<@������������������$���*������AX@���^ '@���tX@���8'@����X@���`'@���@ˡX@���@'@���@`X@����'@���AX@���^ '@���kW@���@2@���bW@���g2@����_W@����2@��� iW@����{2@����jW@���2@���oW@���m2@���@_pW@���N2@���snW@���@]2@���kW@���@2@���ՔX@���`C(@����X@���(@��� >X@���@)@����eX@���,)@���͓X@���Z)@���@GX@���J)@��� X@���)@����MX@���6)@���X@������)@���X@���Ϊ(@���ՔX@���`C(@���@NsW@����D3@���nW@���@^]3@���`nW@���sj3@���jW@���lp3@����iW@��� ؂3@���lW@����S3@���}W@���m3@���@}W@���@'e3@���zW@���IO3@���@NsW@����D3@���/W@���/@���cW@��� /@���W@���_:0@���`W@���00@���JW@����0@���/W@���/@��� {W@���+3@���W@��� 2@���`{W@���t2@���qW@���2@����^W@���`eW3@���^W@���b3@���PaW@���@^m3@���`cW@���`l3@���@.oW@���7?3@���uW@���=3@���@wW@����B3@���@|W@���2S3@����EW@����u3@��� wW@���@3@���nW@���h3@���sW@���`63@���sW@���93@��� pW@���3@���/nW@���3@���@gmW@����Ѹ3@���oW@���3@���@XfW@���?3@���@xfW@���s3@���`kW@���j3@����oW@���3@����mW@���3@���dW@���@3@���aW@���3@���aW@���@]3@���\W@���3@����ZW@���`3@���XW@���A4@����<WW@����T4@���UW@���@4@���@hPW@��� 4@���@6HW@���4@����OW@���@z3@���@MW@���@3@���IW@���r3@���|FW@���s3@���GW@���3@���A>W@���@ 4@����FW@����&4@���@NGW@���74@���AW@���`$4@���@?W@����&4@��� ?W@����94@���aFW@���a4@���@gEW@���@(l4@���CW@���\4@���ABW@���I_4@���IBW@���`xj4@���kEW@��� ҇4@��� CW@���@4@���@W@���pM4@���@8W@���4@���6W@����4@���@1W@���84@����D<W@��� Q4@���)7W@���`*Z4@���@5W@����}4@���3W@���@4@����2W@���@Py4@���0W@��� s4@���.W@���4@���-W@���`Ք4@���@N/W@���@dH4@���@p-W@��� G4@��� W@���4@���W@���i4@���@W@��� 5@����_ W@���`-5@��� W@���`W5@���@W@���by5@����W@���Io5@���W@��� a5@����W@���@(\5@���m#W@���@_5@���t%W@���iC5@���&W@����$@5@���*W@���@L5@���@(W@��� d5@���{&W@���o5@����+W@���6@��� ,W@���&6@���@-W@���(6@���4W@���`6@���@9W@��� 5@����<W@����w6@���`?W@��� 5@���c@W@���@�6@����BW@���`(6@���`CW@���@56@����vJW@���16@���@IW@���<6@���:LW@���?6@����KW@���`m6@���`GW@���6@���@OFW@���6@���`9IW@���6@���GW@���`7@���kIW@��� 7@���`9MW@����7@���IOW@���F7@����RW@����F7@���jVW@���7@����YW@���y7@���tYW@����v7@��� XW@���7@���TW@��� N7@���UW@���8@��� NWW@����S8@���YW@���@8@���@^W@���`7@���`aW@���@7@����hW@��� V8@���@XW@����7@��� 6W@���7@���@ԉW@���7@����W@��� :8@����W@��� %_8@���W@���@z8@���W@���`8@���wW@���y8@���AW@���@8@���W@���`9@����W@���"9@����W@��� 09@���@W@����>9@���W@���`h9@���:W@���`R9@���@W@���H9@���`SW@���9@���W@��� �:@���[W@���!:@���9W@���a::@���@_W@���=Y:@��� ~W@���`:@���:W@���:@���YW@���` :@���W@���@.:@��� >W@���`:@��� W@����F:@����W@��� 1:@���W@���1:@���W@���:@����W@��� ;@���JX@����G1;@���l X@��� UE;@���!X@��� NK;@��� 'X@���];@���0X@���[;@���8X@���`5A;@��� 7X@���@5;@��� 8X@���-;@���{?X@����}";@��� >IX@���`;@���*JX@����|#;@���B=X@���@Xb;@���@P9X@��� ;@��� OX@���@Q;@����%SX@���@;@����MTX@���@;@����WX@���;@���`9YX@���<@���:TX@���@<@����_VX@����9<@����FZX@���J<@���@]X@���@J<@���cX@���<<@���dX@���@<@����hhX@���{<@��� lX@���g<@����sX@���bY<@���yX@��� a<@����5X@���@G<@���X@��� 7<@����_X@���)<@���X@����<@����_X@���;@����X@���8;@���BX@���`;@���ஊX@���3;@���@͓X@���̌;@���3X@���@;@���@pX@���ߋ;@���DX@���@;@���dX@���;@���DX@���;@���X@��� +;@����X@���;@���X@��� ;@���̬X@���ic;@���X@���\;@����,X@���;@���ৰX@���;@��� WX@���9:@���@ԱX@���:@���X@���`B:@���X@���@33:@���@pX@����}":@���X@��� ,:@���X@���2#:@���ZX@���@:@���X@���19@���ƭX@���9@���X@���9@���@qX@���9@���AX@���>9@���X@���9@����X@���`9@���X@���99@���X@���@۟9@���qX@��� P9@���:|X@���@69@���zX@����59@���wX@���@4B9@���*vX@���@D9@����FnX@��� 9@����%oX@���;8@���`sX@���8@����rX@���8@���gX@���`*8@���[cX@���88@���cdX@���``8@���@aX@���@p8@���@lX@���`b8@���`mX@��� OZ8@����jX@���xV8@���@jX@���@]N8@����woX@��� OJ8@���pX@���A8@���nX@����98@��� oX@���`)8@���@dX@���7@���SbX@���@W7@���@iX@���`7@����X@���`8@���X@���5 8@���!X@��� 8@���@X@���78@���X@���!)8@���X@����8@����X@���@7@���ZX@���77@����ҫX@���7@����gX@����#7@����X@���@7@���X@���`ݍ7@���`X@���|7@���@QX@���@{7@���@X@���j7@����ʺX@���@^]7@���@X@���fU7@���X@���kQ7@����hX@����$07@���@X@���@*7@���X@���!7@���@X@���<7@���X@���"7@���`X@���A7@���@?X@����$6@����X@��� O6@���@X@���@ 6@���X@���6@���X@����6@���X@���6@����X@���h6@���`X@���4Q6@���sX@��� O*6@���X@����L6@����X@��� 6@���@X@���"6@���@7X@���`6@���@X@���6@���lX@��� 6@���X@���D6@����=X@���@6@���X@��� 6@���X@���`5@��� X@���@5@���Y@���m5@��� Y@����5@���`Y@��� U5@���a Y@���w5@��� Y@���@n5@���Y@���@P5@����]Y@���|5@���`#Y@���s5@���.Y@���5@���8Y@����b5@��� GY@���` 5@��� IY@���#5@���IY@���@5@���WJY@��� ҇5@���@U@Y@���f5@���k5Y@����pM5@���`.Y@���lP5@���&Y@���� 5@���"Y@��� x5@��� Y@���D4@���n"Y@���4@���(Y@���14@���x)Y@���@4@��� $Y@���`Y4@���!Y@��� 4@����Y@��� 4@���� Y@����@4@���.Y@���[4@���@Y@��� kY4@���bX@���t4@��� X@���`T4@���X@���@O4@���0X@����|c4@���@X@���@ 34@���*X@���@%4@���lX@���4@���@X@��� 4@���HX@���@ 4@����X@���@W3@���*X@���@3@���X@���@3@����X@���@3@���@X@��� ̬3@���X@���e3@���:X@����M3@����,X@��� 3@���X@���`_3@����=X@���`դ3@����~X@���3@���@rX@���Te3@���@uX@����*K3@���srX@���F3@���uX@��� V43@����^uX@����3@���@ikX@���2@���`oX@���@2@���qX@���2@���sjX@���2@��� /bX@���]}2@���@Q\X@���I2@���)WX@��� y2@���!VX@��� N2@���l\X@���fe2@��� _X@��� NK2@���aX@����C2@���dX@���S2@���gX@�����P2@���tiX@���@ F2@����wgX@��� &>2@���@pX@���<1@����lX@���11@���rX@��� %1@���@XzX@����֔1@���؁X@���@v1@���X@���a1@��� &X@��� 1@���X@���� 1@���X@���0@���X@���0@����X@����0@���@rX@���0@���ஞX@���κ0@����X@���Ä0@���#X@��� H0@���ϭX@���F0@���[X@���`z0@���@iX@���a0@��� X@���+0@���(X@��� 0@���X@���0@���`X@���@ 0@���X@���/@����-X@���@r/@���@X@��� y.@���@ģX@���.@���:X@���A.@��� X@���P.@���@xX@���.@����ۓX@���`).@����ьX@���\n.@���X@���@'-@���X@���`/6-@���`X@���,@���@ܪX@���t,@���X@��� \o,@���X@��� V4,@���X@���l+@���X@���*@���YX@���i*@��� X@���`Z*@��� NX@���`*@���cX@���Z)@���X@���)@���@X@���h$)@���X@���`(@��� X@����(@���@X@����B(@����X@���E(@����X@���`'@���JX@��� '@���`X@���`lA'@���[X@���@!B'@���@X@���5'@���X@���&@���X@���@3&@���@X@���@%@���KX@���9%@���@6X@���?%@����X@����ш%@���� X@���TU%@���@X@����%@����X@���@_$@���X@���@#@���|X@����#@���X@����d$@����X@���$@����5X@����F$@���tX@���x%@����X@��� Vt%@���`ŦX@��� %@���@X@���@!%@��� ~X@���`/%@���X@��� +%@���X@���I%@���@X@���@&@���3X@���`#@&@��� X@���[&@����X@���Ί&@���@X@���`I&@����]X@��� &@���bX@���@&@���X@���@9'@���X@���M\'@���X@���j'@���X@���c'@���*X@��� %'@���X@��� '@���X@���'@���X@���Y'@����X@��� 1u'@���7X@����#'@���lX@���n'@���@X@���`I'@���X@���'@��� &X@���'@���X@���b (@���@©X@����#!(@���X@���2(@���bX@���q(@���X@���{(@����X@���Cd(@���@.X@��� k(@���X@����F(@���ģX@���(@���֫X@����F(@���X@����T(@���@X@��� (@���`X@��� (@���kX@���G)@���`X@���`))@����VX@���@3s)@����X@���;)@���@äX@���:*@����%X@��� &*@���@˝X@���`*@���X@���?(+@��� X@���`n+@����X@����`+@���ߋX@���K,@���qX@���+@���)X@����+@���@X@��� V+@����^X@���Q8+@���@GX@���ԅ+@���X@��� +@���@X@���`+@����X@���A,@���'X@���@,@����$xX@���X-@���SzX@���l-@���|X@���]n-@���X@���\N-@���X@����K-@���@h|X@��� y-@���yX@��� sz-@���@ xX@���l-@���� vX@����t-@���`rX@���`-@���sX@����ZQ.@���@pX@����}r.@����nX@���].@����rX@���@.@����$pX@��� .@���@onX@���/@���dX@��� 20@����gX@���@3#0@���gX@���[o0@��� &jX@���`Y0@���qlX@��� ّ0@���jX@���Q0@���``X@���@P0@���@WX@���q|0@����VX@���!0@���OX@���` 0@���@NKX@���>0@���LX@���80@���@IX@���`1@����KX@���1@���`OX@���@ 1@���OX@���:1@���GX@���@1@���@FX@���/1@���k9X@���`1@���@_8X@���@s1@���A6X@����c1@����9X@���iS1@���@5X@���411@���a:X@��� 1@���7X@���0@���K5X@���0@���/6X@���`e0@���@g1X@���@40@����%X@���@-0@����MX@���Z0@���X@���80@���*X@���k0@��� X@���@d0@���X@���l0@��� X@���` 0@���BX@���0@���X@���lp0@���X@����vh0@����X@���`5Q0@���l�X@���b0@���X@���O0@����X@�����@0@���@W@���60@��� W@���`YA0@���W@���z$0@���@6W@����$0@���JW@���@60@���W@����}/@���W@����/@���W@��� k/@���@XW@���zt/@���`W@��� /@���zW@���l/@���{W@���` 0@���`W@���0@���*W@����0@����W@���n/@����nW@���/@���RW@���/@����W@���Ȑ/@���@W@���/@���ZW@���@/@����nW@��� /@����W@���0@����W@���@ 0@���W@���d0@����W@���0@���@`W@���"0@���W@���@0@����W@���/@����W@���/@���`W@���`//@����W@���`f/@����ѸW@���@ /@���`W@���/@���W@����/@���ǸW@���h0@��� W@���k!0@���0W@���-0@���3W@��� x60@���`iW@��� %?0@���W@���`20@���W@��� !0@���@ӶW@��� V0@���W@���`/@���@W@���U/@���@hW@���/@���@oW@���!0@��� W@���#)0@���W@���10@���W@���p/@���W@���;/@���@W@����0@����W@����h0@���@ܮW@���@0@���תW@����T0@���W@���aZ0@���@NW@��� \?0@���@ W@����p=0@���@?W@���`R0@����W@���@.G0@���̠W@���I0@����#W@���@0@����W@����$ 0@���W@��� b/@���W@���@ 0@���'W@���t0@���`W@����S0@���2W@���k0@���W@���e0@���W@���@0@���zW@��� 0@����eW@���@^1@����W@���)1@����W@���@/1@���zW@����)1@���@xW@���/1@����DW@���81@���'W@��� J1@���W@���qL1@���W@��� 1@���W@���1@���W@���@(1@���lW@���1@���W@���2@���@W@���@42@���sW@���>2@���'W@���[?2@���KW@���M2@����W@����vH2@���AW@���4Q2@����W@���2@���ZW@���@ 2@����W@���2@���BW@��� 2@���kW@��� 2@���RW@����2@���W@���2@��� W@���` 3@����W@���`f3@����]W@���pb3@���W@���'3@���}W@����$3@��� {W@���+3@�����8�������ww'@����<���@D9@��� 0�������������,@���`&7��� -,@��� #7���3,@���`6���,@���`56��� \,@��� +6����}-@��� 6���-@���n6���@-@���@6���-@����6���7,@���@;6���@+@���-5����+@���-5���@P+@���j5��� +@���@5���*@��� 4���@|*@���@ g4���Q*@���`'4���@'*@���@j4��� *@���3����})@���`3���%)@���3���`(@���@3���9(@����2���v(@���@2���b (@���@u2��� y'@���@; 2����ww'@���z1���'@��� B1���1'@���`)1���`�?(@���%1���n~(@����:1��� N(@���41����@(@���@@1���h)@���'=1���)@���1���*@��� 0���n*@���@1���+@���"1���`/+@���l1���`#`,@���j1���*k,@����c1���@o,@��� c1���@/@���@c1���1@��� Vd1���`Gh2@����c1���{2@���@p1���>2@���1���@2@���1���u3@���`1����3@���T1���k3@���1��� O3@���1���@4@���`C1����d4@���@31���4@����2���4@���`f1��� &>5@����71���a5@����2����ql5@��� 2��� x6@���I1���`y7@���@1���T<8@���\{1���8@���}1���c9@���1���@J9@���ٱ1���@D9@���31���8@����/1���8@���`C2���`�8@��� 82���@v8@���@2���a8@����Y1���@'7@���`*2���7@����R2���7@���@;|2���!7@���w2���`7@����6Q2���Av7@���92���J7@���1���ev5@���`M2��� 4@���AQ2���\4@���L3���@J4@���@4���4@��� 85����3@���[�6��� %3@���6���3@���@:m7���`\�4@���@}8����4@���@:���@3@���x;���K3@���%m<���Ƒ3@���<���dw3@��� <���`/F3@��� a<���9=3@����<���K3@���<����#!3@����<���j3@����<���`02@��� 9<���`֣2@���<���`�/2@����<���f1@���m<��� ҧ1@���<���1@���<���c1@���~<����h1@���`e<���@(\1@���2<���jR1@���`w<���@Wc1@����Ml<���`/f1@��� Y<���@PY1@���`<<���B1@��� <<���81@����><��� %/1@����3<���11@���`<���@Q1@���P <���0@��� [<���0@���#<���@0@���L-<��� 0@����*+<���`0@����T6<����0@���7<���0@���B<���@ 0@���`kB<���d0@���!S<����0@���L]<��� O0@��� <���0@���@u<���@{0@��� <���r0@���&<���l0@��� <���0@���yU<����u/@����<���@ W/@��� ;���`}/@���q;��� /@���`I;���.@���GQ;���=.@���);���`m.@���&:���`L\.@���`:����(.@����g:����D.@���:���`H.@����:���W.@����:���-.@���f:����-@���V:���-@����#:����-@���m :���-@���`:���`-@���(9���E-@����9���$-@����)\9���µ-@��� 9����Ô-@���8���-@���,8��� t-@���వ8��� 2-@���Ȑ8��� N;-@����w8���@,@����`,8���l�-@���@7���n,@���j7���@,@���a7��� +,@����6a7���,@���`lQ7���,@���`&7�����������@T@���Y:@���� V@��� rk>@��������������6T@���,>@���`9T@���7>@���`;T@���n.>@���AT@���@g4>@���`GT@����T>@���@ONT@����>@���RST@���f>@���RT@���k!>@����VT@��� 1%>@����^YT@����vH>@���SZT@��� ~a>@���bT@���T>@���dgT@��� rk>@���nT@���W>@���T@���h>@����T@���`Y=@���@T@���;=@����T@����)=@���tT@���@ԕ=@����T@���=@���zT@���z=@���3T@���@ty=@��� &T@��� %=@���T@���s*=@��� WT@���t)=@����T@���:=@���U@����wG=@���I U@���6=@��� U@���=@���cU@��� =@���U@���<@����4U@����L<@���#<U@���=<@���CU@��� <@���@(LU@��� s<@���KU@��� <@���FU@���@Xr<@���FU@���@P<@���*RU@���@E<@���sbU@���J<@���`gU@���H@<@����,mU@���@.W<@���qU@����4<@���zU@����<@���zU@���`<@����~U@���];@����F~U@��� s;@���@U@���@;@���lU@���;@����U@��� <@���U@����)<@���ƍU@���J<@���U@���<@���@zU@����v;@����=U@���@z;@��� U@���<@���U@����q<@���U@���<@���U@���@<@���U@���@<@���U@���@W;@���U@���;@���UU@���`;@���`U@����M;@���0U@��� %;@����U@���`;@����U@���;@���`U@����T;@���U@��� +;@���` V@��� ;;@���� V@���d;@���V@���:|;@����DV@���@o;@����V@���`S6;@���U@���<;@��� V@���:@���U V@���;:@����V@���@]n:@���@6�V@���^:@����U@���r:@���@U@����#a:@���U@���@o:@���U@���`*j:@���U@���Y:@���U@����i:@���@rU@����T:@���U@���d:@���U@���[:@���sU@���k:@��� ڔU@���9:@���`9U@���:@����U@���:@����vU@���@:@����sU@���<:@����nU@����M:@���wnU@���9:@����gU@���:@����gUU@���^:@���MU@��� V:@���KU@���:@���@qLU@���:@���@JU@���:@���SBU@���:@��� ;U@���`:@���@0U@���;@���`9)U@���@;@���+U@���` $;@����w+U@���:<;@����&U@���`W;@��� U@���ic;@���@Q U@����y;@���SU@���;@���U@���q;@���T@���s;@���KT@����pm;@��� 6T@���@]^;@���T@��� +Z;@���@T@���x;@���@T@���y;@���@T@���e;@���'T@���eV;@���T@���W;@���IT@���r;@���@T@���`Y;@���ެT@���@ ;@����%T@���;@���T@���r;@���T@����;@����VxT@���r;@���w^T@��� U<@���^T@���@<@��� XT@��� ,<@���zTT@���G!<@���@LT@���@^<@����F:T@���` u<@���05T@���`Y<@���z$T@���I<@���Z T@���`<@��� T@����#<@����-T@���@<@���@T@����#<@���T@���`|<@���@T@���@ <@���T@���<@���T@���<@��� T@��� =@���T@���A&=@���[T@���@6=@���jT@���4=@���T@���@O=@���T@���R=@���@rT@��� p=@����=T@���;=@���T@���@=@���@T@���`=@���T@���=@���8T@���$>@����6T@���,>@�����������> @���`I@���x@����J@����������������@@���`I@���(@���@FI@����d@���ਛI@���{s@���`ěI@���@-X@���I@���2 @���I@����~1 @���I@���i @���II@���> @����$I@���@ @����I@��� @���@FI@���@ @���*I@���@��� I@���@���RI@���@���I@���@���I@���@@���`I@����k@���I@���@���I@����@��� I@����3@����wI@���`W@���ǨI@���@O@���I@���`j@���`I@���a*@���JI@���@��� `I@���@!@���I@����C@��� xI@���`@��� I@���M@����I@���@@���ZI@����ɯ@���I@���`*@���I@��� 2@��� ˽I@���@���|I@���/@����^I@���H@���I@���@���@ԭI@���0@��� I@��� @���3I@���`@���:I@���@C@���I@���o@���jI@��� 5q@���kI@��� @@���2I@���@ @���@I@���� @���`I@���@h @���ǸI@���` @���`I@���`4 @����^I@��� @���`qI@���`f@���@I@���`:@����I@��� q@���ǸI@��� @���I@���`,@���I@���Y@���I@���@���*I@���(@���I@��� @���I@��� @���I@���@���I@���~1@���PI@���@��� I@���` @��� I@��� @���@?I@��� @��� DI@���@>@���`I@���A@���@I@���@��� ,I@���`y5@���'I@��� @��� xI@��� q@��� &I@����K@���J@���Z@���>J@���@���`rJ@���@@��� OzJ@���?H@��� zJ@���<@���JvJ@���`p}@���rJ@���W@���@FzJ@���@��� J@���@��� J@��� @���@J@����@���+J@���`^@���J@���6@���@J@��� @����J@��� M|@���IJ@���N@���լJ@���K@���ޤJ@���b@���`J@���x@���J@���@@���{J@����eG@���QhJ@���8@��� rSJ@��� $@���@PJ@����m @��� SJ@����"@��� PJ@��� @���`HJ@���@���FJ@����}@���`/>J@����@���`7J@����3@���`;J@��� C@���b1J@���@5@���`/J@���Մ@���J@���`5q@���dJ@���<@��� J@���@@����J@���`3@���@�J@���R@���UI@���`>@��� I@���2@���@PI@���`g@��� =I@���@���I@���`@���@?I@���`˭@���`I@���@���@FI@��� $@���BI@���@@��� I@���(@���`I@���&@���`I@���v@��� rI@���I_@����I@����@���I@���@���JI@���K@���:I@���YQ@���@I@����<@���`ՔI@���@@����I@���~@���nI@���@Oz@���jI@���`@���9}I@���`@���}I@��� @���xI@���`V@��� oI@���9@���fI@���@���`I@��� `@���`I@���&@���pI@���b @���}yI@���`@���{I@���s@���`I@��� 6@���I@����k@���I@�����|������ d@���� e6���e@���T4���l������� ��������� e@���5���gd@��� 5���d@���a5��� d@���`X5���d@��� i5����e@��� v5���e@���`kr5��� e@����ݎ5��� e@���5��� d@���-5����2d@����"5���`d@���`C5��� d@���@q 5����d@���+4���d@��� a4���yd@���4���@d@����4���@7d@���4���Fd@��� 14���+d@���4���d@���4���`d@��� 4����hd@���4����d@���� 5���d@����5���Pd@���`(5��� d@���-5���|d@���� e6���`d@���Q6����d@����^6���d@���;6���`d@��� bJ6���`d@��� a;6���qd@����f76���`d@���`k26��� |d@���@d6���=d@����f6���qd@���5���`Id@���5���d@����5���@wd@��� 5���`d@���@5��� d@���@:5���Ʒd@��� 5���`od@���K5���d@���v5���td@���ڠ5���`d@���5���Td@��� h5���d@���@i5��� d@����d5���kd@���+Z5���gd@���N5���4d@��� Y5���d@���U5���@d@���`H5���d@��� 5�����d@��� h5���@`d@���� 5���}d@��� 4���`d@���`4���`d@���=4���d@���4��� Sd@����4���؃d@���`Ce4���@`d@���_4���Sd@���N4���`d@���@:M4���d@���L=4��� d@���`=4���d@����=+4���`d@��� $4��� d@��� '4���d@���T4���Ad@���@334���d@��� S4���@d@����=4��� d@����)<4����md@���QI4���d@���4��� 6d@���!4���4d@���4��� |d@���T4���`2d@���!4���`d@����75���Kd@���K.5���൲d@���v85���׶d@���@L5���`Id@��� ak5���Fd@���K^5���ad@��� t5���d@���`w5��� d@���~5���d@���yu5���@d@���Rh5���`]d@���@r5���d@���M5���kd@���@õ5���gd@���O5���d@���5���d@����5���d@��� ? 6���`d@��� a6��� d@���@)6���` d@��� <6���d@���@Q6���Sd@���Ga6���|d@���� e6����������� /f���^mI����Qf@��� 2A���S���������.����������f�����F��� |f��� F���f��� yF���f���vE���f��� IE���qf���`E����f���E���f���`E��� /f���E���f���E����Of��� E��� f���E��� Xf���`E���@f��� E���q f����`E���@3 f���E��� f���E���`]f���@E���#f���=E���f����E��� f���E���`f���@KE���`f���E��� f���`<F��� f���&F���f�����F���d@���^mI���d@���jI���d@��� dI����d@���`I���@Ŀd@��� !cI���d@���fI����d@��� kI���ৼd@��� lI����d@����cI���kd@��� bZI��� d@���OJI��� d@���DI���d@���^EI���@Wd@���HI��� d@���NI���d@���`UI���`d@���ZI����2d@��� YI���d@���`hI���d@���^mI��� e@��� C��� ne@��� C��� ee@���`C���`e@���B��� e@���@RB���Se@��� B���`)e@���B���=e@���B���e@���@B���e@���B���0e@���B���@e@���zB���e@���`fB���e@��� bB���e@���nB���`e@���`1B���ye@���.B���se@���ìB��� e@����YB����e@���`�B���`)e@���dB���e@���@(B��� e@��� \B���ye@���`B���e@��� B���e@���B���/e@���B���`)e@���3B���}e@��� |B���e@���`lyB���Je@���`IxB���e@���`}B��� e@���B����e@���@ՅB����ve@���`BvB���Te@���_dB���e@���`DB���`xe@���`=B��� e@���`8B���@we@���FB���qe@����)LB��� ee@���`PB���e@���`RB��� Qe@����SB���@e@����YBB��� e@���D4B���`e@���@R0B���e@����,B��� Qe@��� 3B���e@���2B���e@��� -B���Ye@���(B���` e@���`(B���e@��� !B���Ke@���B���`e@���&&B���e@���@$B��� e@���>!B��� e@��� $B��� e@���;B���`e@���$B���@e@���`*B���e@��� JB��� e@���B���`xe@���@RB��� e@���B��� e@���KB����Me@���"B���e@���` B��� e@���A��� e@���A���e@���"B���e@����)$B����Ve@����//B���@e@���4B���@e@��� C-B���e@��� #B��� e@���`0A����ìe@���@uA���e@���`A���e@���A���e@���઺A���e@����HA���"e@���@A���˱e@���A����$e@���`SA���Pe@���5A���`]e@��� A��� e@���4A���e@���A��� e@���ҧA���e@���#A��� ҧe@����ܯA���|e@��� A���e@��� aA���ze@���`TA���e@����śA���e@���`�A���e@����7A��� e@���XA���Ze@��� A���դe@���,yA���e@���e?A���e@���^=A����De@���5A���`oe@��� 8A���e@��� 2A���be@����GBA���<e@��� sCA���Ǟe@���;A���e@���EA��� 6e@��� HA���e@���HA���!e@���`SA���ྠe@���PQA���Oe@���UEA���e@���FA���ءe@���WA���e@���,iA���e@���`[hA��� e@��� cA���e@����HiA���e@���`tA��� Qe@���{A���e@���A��� |e@���`}A���e@���`woA��� Se@��� mA���e@���eA���e@��� nA���`ʬe@���`rA���!e@���`|A���`e@���"A����$e@���wA����Ve@���xA���@e@��� A���e@���`IA���&e@���`A���@e@���oA���ƹe@���A����de@���A���@<e@���A����e@���@A���`e@���4A���|e@��� ?A���@e@����A���`fe@���A���e@���`wA���@<e@����BA���`[e@���@A���e@����BA���@Ee@���`A���`e@���xA��� e@���A���je@���A���e@���@AA�����e@���@A���`e@���>A���Oe@���@;A���<e@���A���Te@���`+A����he@���A���e@���A���e@���A���e@���A���Fe@���@A��� e@���`A��� e@���`}A���He@���@A���!e@���`TA���`)e@��� 8A���e@����A����Ve@��� A���e@���`A���e@���A���@7e@���A���e@���@AA���@e@��� hB���e@���OB����de@���|#B���ge@���)B���e@���,B��� e@���.B���Se@���;,B���je@���V4B���e@����=B���`e@���4B���e@���DLB����e@���@OB��� Se@���MB���Te@���=RB���'e@���PB����-e@���vhB��� e@���@dhB����he@����HaB���e@���fB��� e@���SgB���e@���=jB���e@����tB����e@���DlB���e@���lB���e@����AoB���e@���uyB���e@��� {B���e@���`kB���e@��� wB���`e@���vB���e@���pB���e@���`pB���e@����OsB���ze@���zB��� e@��� |B���@e@��� xB���e@���\B���He@���oB��� 6e@��� B���Se@���B��� e@���nB����e@��� B���e@���B���e@����HqB����me@���UmB���e@���`gB���e@���bB���`)e@����O[B���8e@���`RB���e@���GB���Pe@���=B���!e@���L=B���e@���`DB���@7e@���AB���e@��� HB���=e@���LB���4e@���`OB���e@��� VB���e@����bB��� e@���`_B���e@���`[B���` e@���`I`B���ye@���%gB���e@���\oB���@e@���`krB��� e@���`jB���`e@���|kB��� ?e@���`}B���be@��� B����de@���@AB���e@���ȠB���'e@���zB���Hf@���@uB���kf@���eB����_f@����B��� f@���B����f@���B���He@���B���e@���`}B���e@���`B���8f@����B���Kf@��� B���Jf@���`B���!f@���B���f@����B���Sf@���B���@f@���B��� f@���`lB���!f@��� B���&"f@���B����h$f@���`C���`)'f@���eB����.f@���`B���J2f@���|B��� n7f@���\B�����@f@���B���?f@���B���`If@���B���@Mf@���B����$Pf@���3B����Qf@���uB����Pf@����OB���@7Kf@�����C��� Lf@��� C���Jf@���C���Kf@���7C���Bf@���@ZC���` ?f@���@WC���@=f@���tZC��� =f@���pC��� <f@����OC���`>f@���`C��� ?f@���@RC��� ;f@���C����_:f@���C���;f@���C���p-f@���@C���!f@���`+C���f@���`C����f@����ĴC����df@���|C���f@��� qC����f@���mC���#f@���C���"f@����qC����- f@���wC���f@���D���f@���%D���`]f@���%D���f@���`C=D���f@���AD���f@���6pD���f@���@AwD���f@���@|D���e@����)D���e@���@D����Ve@���D���be@���`wD����e@���`D���3e@��� D����e@���`ZD���e@���ڰD��� ee@���`ZD��� e@���D���`e@���D���e@���`1D���`xe@���D���`e@���`D���e@���D����_e@���D���qe@���@cD���e@���@{D���&e@���QD���e@��� D���e@���D���@We@��� hD���e@��� hD���@e@��� 'D���!e@���`|D����e@��� !sD���e@���� ]D���e@���4*D���@e@��� %D��� e@���$D���`2e@��� D���e@���`"D���e@����`$D���`e@���"D���e@���D���e@��� C���@Ne@��� hC��� e@���`C���"e@����C���`)e@���5C���e@���`C���e@��� yC���@re@���C���&e@���?C���`e@���C���`e@���઒C���@@e@���@{|C���e@���U}C���ye@���`oC���`e@���mhC���'e@���C����Ve@���]C��� ee@��� 8C��� e@��� C���d@���G���d@���4G���d@��� G���d@���`}G���d@���`G���@d@���yG���Td@���zG���@7d@���GyG��� d@���DtG���d@���@|[G���d@���XG���@^�e@���]G���e@���isG���`e@���MtG���`x�e@���@qG���d@���@|G���@e@���zG����;e@���`wG���@7e@���_|G����Me@��� mG��� ?e@���`TG��� e@���ԍG����v�e@���`SG���`d@���-G����-d@��� G��� d@���@G���@d@��� ƚG���d@���G���d@���G���_0e@����E���@/e@��� E����0e@���E���@9e@���4E���@;e@��� E���`2;e@���@E���K9e@���@E���&:e@��� E���=e@���E���`2?e@���E��� ;e@����E���`:e@��� E����;e@��� E���&Be@���SE���Ce@����rE���De@���E���`Be@���;E��� De@���E���Ge@���`E��� eIe@���E���aFe@���E���aHe@���GE���Je@���uE���aLe@��� ޕE���"Me@���E��� Me@���E���Ke@���E���`Ie@���E���`]Le@���E��� Oe@���E��� eUe@���zE��� We@���҇E����VVe@��� yE���3\e@���ngE���9_e@���`r\E����`e@���-`E���`e@���`�hE���@<_e@���@jkE���``e@��� }E���@Eae@��� 8wE���_e@���@)lE���]ae@���`}jE���pae@���`E���_e@����ZE���fe@����;E���sle@���`9E��� /oe@���/E��� ke@���?8E���Kge@���v8E���]ge@���V4E���ie@���'E���`je@���@E���Yme@��� �E���+oe@���D��� 6re@���@D���]{e@���pD���e@���D���e@���D���@e@���D���|e@���UD���`Ie@���@D���@e@���pD��� ?e@���bYD���Be@���`JD���e@���PD���e@���LD���e@���LED���"e@���@?D��� e@���VDD���@ie@���BD���e@���-HD���"e@���`rTD���e@���@:eD���e@���lD���e@���`cD���ৠe@���@gD����e@���h|D����e@��� \D���&e@���D���`e@��� D���e@���`D���ྡྷe@���D���`e@���D���@ie@���D���̴e@���@D��� e@��� D��� e@��� bD����Me@���MD���e@���فD���9e@���@vD���e@��� }D��� ҿe@��� rD���e@���xD���@e@���@yD���@e@���D���@e@���D���e@���ʆD����e@���D���e@���`TD���]e@���gD���e@���@jD���`[e@���~D���@e@���@cD���`ʼe@���GD���Xe@���D���@e@���mD���޾e@���ʎD��� ne@����YD���Be@���@D���e@���ςD���e@��� 8D����de@��� D���e@���{D���Oe@���@D���*e@���@}D���`e@���@քD���@e@��� D���@e@���5D���@<e@��� ǁD���Je@���OD���e@���ڐD���e@����D���`e@���GD��� Se@���D���*e@��� ͤD���e@��� mD����e@���`}D����ve@����D���ke@���D����e@���D���e@���D���e@���D���@.e@���`ID���9e@���D���e@���@D��� e@���@(D���e@���`[D���`fe@���`#D��� e@���~D���@we@���^D���Te@���D���e@���`D���e@���D���e@��� E����he@���@E���e@���@E���� e@���`E���e@���E��� e@���W+E���"e@���68E���@e@��� h5E��� ɳe@���`I8E���<e@���,YE���*e@���`TnE����me@���tE���@.e@���ۇE���@re@��� E���`�e@���@)E���e@���`lE��� e@���`E���@e@���@E���`�e@��� E����-e@���థE��� ee@���E���@e@���ڸE���e@���E���}e@����E����e@���`E���@e@���DE���`e@���E����de@��� E����_e@���fE���e@���=E����e@���`E���`e@���E��� e@��� E���e@���`SE���e@���@E���e@��� E���e@���hE���e@���E����e@���E���e@���GE���@`e@����E���e@���E���e@���`E���`e@���� E���`e@���E���e@��� E����2e@���^E���e@���yE���@re@��� sE���` e@��� E����e@���`E���@e@���E���|e@��� E���ae@���E����he@���#E���ue@���E����te@���E���oe@���2E���Yme@���@E���pe@���`כE���@@qe@����˖E���oe@���E����;pe@��� E����dne@���E���ke@����ŋE���3je@���`E���ke@���`E���me@��� bE���le@���ǡE���Xne@���E����de@���`śE���fe@���@E���ae@���ߤE���^e@���`E���ke@���@E����ne@���E���@Nue@��� E���� e@���E����e@����`E���{e@���`F���|ze@����/F��� Sye@���4E��� ye@���`�F����Vxe@���W F���Bqe@���F��� pe@���M F���le@���@(F���"ke@���DF����Vpe@���F���bke@���@|#F���`[ae@���\F���`]`e@���` F���_e@���@F���ce@���F���ae@����"F���@de@���`F���je@���@%F��� (he@���:=F���@ee@���`BFF���`fe@��� aF���ee@���dF���fe@����/gF���Zfe@���uF���ee@���mxF���'Ye@���oF���@NOe@��� 8_F��� nSe@���jF���@Eee@��� 2|F���`ee@��� ~F���^e@���F��� [e@���`F���`)]e@��� زF���`Ve@��� F���PUe@���@F��� Te@����0F���ZVe@��� F����VXe@���@3F���Qe@����F���ySe@����F���0We@���`F���@NYe@��� JF���Xe@���F���Te@���@F���Je@���F���Ie@����G���Ge@���G���@.;e@���1G��� ;e@����)<G���6e@���?G��� 7e@���BG��� (6e@���`GG���A2e@���HG��� n/e@���LG���}/e@��� QG��� (&e@��� TG���Y%e@����NG���$e@���TG���&"e@���GQG���!e@����VG����e@���TG���` e@���`$HG���`oe@���GG���e@���FG��� Qe@���EKG���e@��� NG���P e@���@:MG���&e@���IG���@Ee@���`KG��� e@��� IG���@.e@����AGG���@@ e@���.GG��� e@���mPG���@ e@���NG���e@���NCG���` e@���EG��� e@���>G���@ e@��� C5G��� S e@���`}:G��� e@���`=G���e@����O3G���e@���+G���d@���/G���Pd@����3G����;d@��� 1G���d@���vG��� |d@���G����vd@���G����vd@��� !G���d@��� G���@rd@���G���Yd@����AF���d@��� G���d@���  G���d@��� G��� d@���F���!d@���F����_d@���&F���@d@���G���d@���F���Bd@���F���`2d@����BF��� d@���6F���yd@���F����Vd@���@uF���d@��� F���bd@���F���Xd@���F���`d@����F����d@���F���` d@���`F�����d@���F��� d@���@{F���d@���F���d@���F���ad@���@F��� d@����F���jd@���۷F���bd@���vF���`d@���@|F���@d@���`CF���/d@���໣F���d@���F����Dd@���໫F��� d@���F���qd@���nF����Dd@��� F���`d@����HF���ad@����)F���gd@���zF���`d@��� F���d@���ЩF���d@����F��� ?d@��� F���Sd@���F���d@���@ȨF���0d@���ԥF��� d@����F��� d@���WF���d@���઒F���d@����F���` d@���F��� d@���`F���d@���F����d@��� F����dd@���@RF���d@���F���d@��� F���d@���~F���d@���F���Zd@��� bzF����Dd@����oF���d@���DlF���d@���`SF���Zd@���`T~F���ad@����)lF���d@���MdF���d@��� PbF��� d@���eF���Yd@��� JoF��� ?d@���$pF���Kd@���`eF���d@���`ZaF���d@���M\F���d@���aF���`d@���XF���*d@����RF��� d@��� LF���d@���,YF����$d@���%WF���d@���`QF���Fd@���:MF���d@���?F���d@���2F���e@��� (F���e@����q%F���4e@���u!F��� e@��� IF���A e@���hF���e@���F���e@���^E���"e@���F���Z"e@���`E���#e@��� E�����(e@���`E���b#e@���E���"e@���E���`.e@���E���_0e@����E�����������-U���``k%@��� `T��� .@�������������`%oU���?+@���nU��� b+@����aU���M,@���@]U���`R7,@����XU���=i,@����)TU���,@���wKU���`l,@���@IU���7,@���@KU����,@���`GU���""-@����EU���`/-@��� BU���@%-@���@AU���f-@���@d4U���ҧ-@���+U���`�_-@����U���`lA-@����U���`X-@���@U���zT-@���@#U����L}-@���.U���@ӆ-@��� U���`n-@����U���/u-@���@U���`}-@��� T���G-@����T���@P-@���@T���-@���@T���-@���T���A-@����rT��� .@���`T���r-@���T��� .@����ST���-@��� `T���-@���6T��� -@���@T���&-@���@T���-@���@uT���-@���]T��� -@����BT���`-@���`ST���-@����T���`f-@��� T���,@���T����`,@���yT���j",@���eT���+@����T���c+@���`"T���+@���-T���`f*@���@LT���)@���@lT��� )@���T���7/)@���T���(@���%T���``(@���@ T����L(@���T��� (@����BT���x(@���@[T���Z)@���?T���C$)@����T���@)@���@T���8)@���oT���)@���T��� )@���@T���`)@���QT���` 5)@����rT���)@���@T���@(@���T���(@���T���Ϊ(@���@T���@(@�����T���@ (@���WT��� (@���fT����i(@���wT���'@����BT���"(@���@mT���;(@����BT����wW(@����T���`)[(@���~T���L(@���T���Q(@����ZT���?(@����T���`l!(@���`ST����q(@���?T���`'@���T���'@���@:T���@ۿ'@����T���`'@����AT���O'@���T���v'@���T����Z'@���T����}2'@���vT��� '@���@T���&@���@T���@$&@���T���+%@���@MT���8%@���XT����F%@���WT���`%@����*T���``k%@���T��� %@���@ U���@X%@���aU���%@���@U��� s%@���U���%@���qU���;%@����*+U��� '&@���@9U���%@����2<U��� %@���/RU���.&@����SgU���@^m&@���@iU���`M&@���mU���&+&@���@+rU����8&@���i{U��� ߜ&@���@U���b&@����)U����3'@����ΟU���`Մ'@���@U���'@����ְU����X(@���U���`}(@���.U����F(@���XU���@(@���XU���(@����bU���@)@���@U���QX)@���NU���)@���-U���@)@���&U���t)@���U���**@���@*U���)@���U���@)@���5U���)@��� U���$�*@���U���U*@����9U���r{*@���U��� *@���@U���*@���U���*@��� U��� *@���U���*@���U��� +@���ܰU���@k+@���@U���`l+@���U���•+@���U��� +@���� U���@+@���@U���+@���@U���,@���U���!,@���pU���,@���/zU���Z+@����vU��� +@���@sU���`+@���`%oU���?+@�����������UU?���@%b'@���@J/@���7@��������������'@���7@���*@���@67@���0+@���#7@���Qx,@���96@���R�.@���@�7@���`c.@���5@��� g.@����~5@��� .@���@q5@����#A/@���4@���;+/@���4@���`/@���j4@��� #/@���4@���@J/@���aZ4@���/@���3@���Z//@���2@����O /@��� }U1@��� +.@��� x0@��� ߼,@��� w/@���+@���W.@����ш+@���3-@��� +@���-w-@���@XR+@���@J-@���@J^+@���%-@���T+@��� y-@���@{*@����,@��� *@���`),@���@+@����+@���@+@���@o+@���@*@���p+@���@*@���[+@���@*@���-+@���)@��� +@���)@��� *@���`RW)@���]*@���@!B)@���*@����(@���*@���I(@���%*@���p}(@���@u8*@���`:K(@��� 3*@���@'@���@*@���&@���@*@����&@���@u*@����%@���@*@���K$@����*@���`(#@��� D*@���BE#@���)@���Q!@���`})@���S!@��� )@���!@���""*@��� @���+*@��� @���*!*@���@> @���r*@���B@���*@���`Մ@���3*@���#@��� H@*@���\@����)@���`@���)@���9@���`R7*@���@w@���`*@���`5@����5+@���#@���&^+@��� @���`]+@��� @���=I+@���0@���`H+@���@u@���+@���$@����#+@���Ʊ@���y+@���Ί@���`+@���`G@���_+@���@@���w*@���@@���1*@���k@���%)@���I@���@m)@��� C @���`)@���`_ @���@{'@���` @���'@��� @���@'@��� @���@%b'@���@x @���'@���`H @���`/'@���@n @��� '@���� @����(@���~ @��� (@���{@���@a(@���@<+@���`F(@����}@���(@���)@���@(@���A@���{(@���@��� 1U(@���`@���^ (@���`@���@'@���I@���`'@���G@���'@���f6@���`'@���@ww�@���(@���I�@���@(@���`@���(@���M@��� B)@���`�@���@{s)@���@}?����Tv)@����X?��� 7)@��� @?���`B)@��� $?���@*@���@?���@-*@��� ?���@J*@���/?���۾*@����?���?*@���@z?��� +*@���@'?���*@���Z?���`#+@���`??���I+@���@?���l`+@���?���^+@����ף?���,,@���?���@!,@���??���,@���UU?���@ -@���?����#-@���@%?���-@����L]?���`f-@���7?���-@���y?���c�.@���@b?���@-@���d?���l�.@���`p=?���j-@����?���Z-@����0?���` -@������?��� Œ.@����,@���.@���B@���.@���2 @���.@����^M @���'.@��� @���L/@��� @���@uX/@���I@���@o/@���Be@����/@��� �@���/@����@���@0@���:L@����M0@���@���`d0@���`N@���\0@���`@����0@���r@���2@��� @���l%3@���?@���3r3@���e@���@%4@���!@���5@���$@���6@���Z'@����#q7@����'@���7@����� ��������u@��� @���+Y-@���`H+@���5���������@*@���p+@���@+@���@o+@���+@���� +@���m+@���I*@��� e&,@��� )*@����],@���_(@��� H`,@���E(@��� Y,@���(@��� N,@���(@���-@���v(@��� P-@���@_(@���+Y-@���9M(@���=-@���3(@���`L-@���z'@���`-@���7n'@���?H-@���;K'@���J-@���@&'@���`L<-@���'@���Cd,@���l&@���P,@���w&@���,@���&@���@+@���`RW&@���`fF+@��� %@���(+@���p]%@���*@���Nz$@���*@���@!b$@���@*@���`8$@���@d*@���,$@��� |*@���5$@��� *@���@Q#@���t*@���#@���@*@����Z#@���`5q*@����M#@���`P*@����#@����*@����D#@����)@���@\"@���)@���@"@����Z)@���ux"@���`ɮ)@���+"@���@)@����!@��� )@����!@���t)@���Մ!@�����`)@���@XR!@���E#)@���{3!@���'(@����A!@���(@���9!@���(@���� !@���(@����M @���@(@����N @���~(@��� @���r(@����@����T(@��� y@����T(@���O@���Q'@���ߛ@���@'@��� @���`'@���~@���@'@���`O@��� 1'@���� 4@���,'@��� @���@'@����H@���@,'@��� $@����� '@���@���`'@���@j@����&@����Ec@���&@���R@���7O&@��� @���;&@���@���%&@���K]@���*&@���@���` &@���K@��� %@���@@���`%@���O@���T%@��� @���p=%@���@6@���`51%@���b@���@%@��� @���E$@���ـ@���h$@���*@���U$@����@����ۿ#@���s@���R#@���`4@����;l#@���R@���t9#@���`/@���@@'#@��� @���@"@���@&@���"@���O@���"@���M@��� "@���@@���"@���d@����E"@���֣@����!@���;k@���@!@��� G@���!@���$@���Ϊ!@���@���.!@����n@���!@���@���@!@���`@����o>!@���1@���@E!@��� N@����T.!@���=@���|!@���*@����2!@���`@���@!@���:@���@ @���H�@����; @���`2@���� @��� ,@����e @���@��� @���H@����n @���W@���` @��� @���@���@���L<@��� o@����:@���3R@���@@���@���@&@���`jb@��� @���`A@���@���`@���[O@���@���`@���` @���X@���ͫ@��� =@���`@��� .@��� @���ͫ@���@h@���M@���@���-@���@ܾ@���@��� @���`(@���@@���L@��� @���@E@����<k@���P@���b@���@���z@���Sv@���`@���F@����H@���j@����i@����@���` U@���@E@���@O:@���k@����@���@X2@���s@��� {@���`>i@���I@���`Y@���@@���@j@���@&@���@@���@,@���G@���@���k@��� @���@@���@@���@Q@��� |s@���`8N@���`N[@���`(@���:L@���@N@���h@��� @@����@���`-@���r@���D@���`Q8@���`j@���`2@��� D@��� @���@6@���`@���t@���@@��� @���@���`]@���@��� @���-X@��� G!@����X@��� v@���);@���&@���r@���`A@���@���ϩ@���@��� vX@���t@���@\@����[@���@@���`yu@����z@���`@��� 5@��� @���b@���r@���`@���N@���`d@���i@���ء@��� v@���@���d@���@_l@��� @���Zp@���H�@����#@���~P@���@��� f&@���`ij@���@9@����@���`@����@��� @���~@����@���@��� @���.@���`@���Q@����@���A@���`@����}@��� @���L|@���'@���`8N@����#@���r{@���@��� @��� {@���`_@���`B@��� x@���U@���@���`'@���2s@��� |@����^M@���`vX@���@@���(\@���@@���5x@���/@���q@����@���@���`C@����@���l@����}@���@&@��� |3@���@���@���@@���@@���`@���/@����t@���(@���`@���h @���`ԥ@���) @����^@���U @���@���*@���[@���` @���@&^@����;@���`m@���`@���@Xr@���= @��� 51@���� @����$@���p @���`@��� @���e@���* @���@@��� @���<@���@���3u@���@���|@���`d@���"@����^@���Y@���`b@���@(@���r@���e@���`:@���`@��� \@���@@���0u@���;@���*@���`0@���@����@��� @����<@�����u@���@@����@���* @��� @����-!@���N@���@"@���`f@���I"@���@���\."@���\ @���"@���!" @���"@���`N @���E#@��� @����E#@���  @���@']#@��� @���@#@��� @���J#@���`3 @����6#@��� $ @����g#@���y @���@^M$@���@ҧ @���@$@��� @��� $@���ׂ @���A$@����P@���7$@���@ @��� +%@���@��� g%@����@���%@��� @���;&@���঍ @���E&@���@ @���@&@��� @���@%b'@��� @���@'@���` @���'@���`_ @���@{'@��� C @���`)@���I@���@m)@���k@���%)@���@@���1*@���@@���w*@���`G@���_+@���Ί@���`+@���Ʊ@���y+@���$@����#+@���@u@���+@���0@���`H+@��� @���=I+@��� @���`]+@���#@���&^+@���`5@����5+@���@w@���`*@���9@���`R7*@���`@���)@���\@����)@���#@��� H@*@���`Մ@���3*@���B@���*@���@> @���r*@��� @���*!*@��� @���+*@���!@���""*@���S!@��� )@���Q!@���`})@���BE#@���)@���`(#@��� D*@���K$@����*@����%@���@*@����&@���@u*@���&@���@*@���@'@���@*@���`:K(@��� 3*@���p}(@���@u8*@���I(@���%*@����(@���*@���@!B)@���*@���`RW)@���]*@���)@��� *@���)@��� +@���@*@���-+@���@*@���[+@���@*@���p+@������������b@���y*@���`b@����D+@��� ����������`b@���y*@���b@���n~*@���b@����*@���b@���n*@����db@���n*@���b@���+@���b@���D+@����Vb@����D+@���`b@���@.+@����b@���`*@���'b@���-*@���b@���`*@���`b@���y*@�����D������@���@L@���l?@���Q@���������������&���,���j���{������������������ ���� ��/��J����������N�����.@���@-8Q@����/.@���@O:Q@���v.@���>Q@����/@���FQ@���@'/@���NQ@���/@���QQ@��� 0@���@TQ@���`e'0@���QQ@��� 0@���JQ@���O/@���AQ@���n?/@����>Q@��� y/@���@Q@��� h%/@���=Q@���.@���@-8Q@���@3@���`iQ@���3@���@-Q@���J3@���ZQ@����3@���@hQ@���q3@���jQ@���3@���Q@���3@����Q@���83@���`yQ@��� 3@���(Q@��� 3@���Q@���`'4@���[Q@���@3@���`iQ@���`6@��� Q@���w6@���@XQ@��� \_6@���Q@���`c6@��� fQ@���6@���@ Q@��� ~6@����Q@���6@����^Q@���>6@���bQ@���@:6@���@Q@����$�7@���Q@���@X7@���Q@���`6@��� Q@���� @���`O@���@= @���O@���Œ!@��� O@���@!@���`O@���@!@���`O@���� @���`O@���s 1@���@@Q@��� "1@����vDQ@���0@����VDQ@����0@���@.CQ@���z0@���EQ@���'0@���rGQ@��� 1@���@?HQ@����,1@���`LQ@���B0@���`QLQ@���`60@���*NQ@���n1@���OQ@���0@���@.SQ@��� 1@���`QTQ@����1@���TQ@���1@���@VQ@���H0@��� VQ@���1@���tYQ@����}b1@���WQ@���`1@���cXQ@���I1@���JZQ@���{1@���@ZQ@���N{1@���@[Q@��� B1@���q\Q@���@/1@���`i_Q@���x61@���@`Q@���`5a1@���@O^Q@���@:M1@���aQ@���f1@���`yaQ@���@ 1@����#]Q@���`_1@���a^Q@���u1@����$dQ@���x1@���AfQ@���`1@����,eQ@����$1@���1`Q@���F1@����`Q@���1@���eQ@���k1@����fQ@���n1@���@xbQ@��� V1@���@eQ@����|1@��� cQ@���`1@���]Q@����v1@����v\Q@���1@���taQ@��� 2@���`i_Q@���k1@����E[Q@���@�2@���@YQ@���` 2@����D\Q@���2@���[Q@����2@����VQ@���@1@���TQ@���1@���@XRQ@���1@���lPQ@���`61@���@WOQ@���k2@���`LQ@���1@����JQ@���@;|1@���IQ@���1@���LQ@���@-x1@����LQ@���`_,1@����DDQ@���@/1@���@BQ@���@31@���AQ@���s 1@���@@Q@���*@��� Q@���A*@���`QQ@��� ,+@���� Q@���S*@���� Q@���CD+@��� Q@���d+@���`Q@���Q+@���SQ@����70,@���Q@���@'=,@����]Q@���+@���� Q@���+@���@ Q@���+@���Q@��� +@���Q@���_+@���Q@��� 0+@���Q@���M+@����UQ@���*@��� Q@���3@����EsQ@���@2@��� wQ@���2@���zQ@���2@���(|Q@���2@���@}Q@���@]2@���}Q@���s2@���~Q@���D2@���@Q@���3@����]Q@���F3@���̀Q@��� 3@���Q@���H3@���@_Q@���P3@��� >Q@���I3@���Q@���`d3@���IQ@��� |3@���Q@����ɏ3@���Q@���@X3@����Q@���3@���KQ@����#3@���`Q@���o3@���s~Q@���n3@���7wQ@���e3@����tQ@���3@����EsQ@��� 4@��� ʂQ@��� 4@���SQ@��� w4@����ɃQ@����e4@���Q@���f4@����^Q@���n4@����ɋQ@���4@��� ʎQ@���4@���`Q@��� 4@����^Q@���i4@����Q@��� U4@����nQ@���r4@����҃Q@��� 4@��� ʂQ@����L9@��� Q@���@j9@���@ܾQ@���9@����vQ@���xv9@���Q@����|S9@���lQ@���``K9@���Q@��� ߌ9@���3Q@���9@���Q@�����9@����Q@���@^9@����Q@���`9@���Q@���@9@��� ~Q@���@-9@���Q@����:@���Q@���?:@���@ Q@���@39@����Q@���@9@���@Q@����9@���HQ@���@]:@����ɿQ@���@*:@���Q@��� 8:@���@xQ@���E3:@����VQ@��� U9@����UQ@���@9@��� fQ@���`9@���ৼQ@����L9@��� Q@��� ,6@���`ݝQ@���i#6@���Q@���'=6@���`Q@���@T6@���Q@���6@���HQ@���@5@����Q@���5@���Q@���``;6@���zQ@����=6@����Q@���@i6@���Q@���@_6@���@6Q@����0f6@���Q@����*{6@��� Q@��� U6@���Q@���6@����Q@���`6@��� >Q@��� &6@���Q@��� 6@���0Q@���`6@��� Q@���86@���ৰQ@��� 6@���*Q@��� ,7@���Q@���@7@���rQ@���@)7@���৴Q@���@dH7@���@gQ@���Y7@���@Q@���lP7@���Q@���@n7@���0Q@���``{7@���லQ@���c7@���@Q@��� Vt7@���Q@���@@7@���:Q@���n7@���Q@���`7@����Q@���7@���Q@��� 6@����]Q@����}7@���Q@���6@���BQ@��� 6@���Q@���6@���@Q@����Z6@����١Q@���@.W6@���@`Q@���sJ6@��� Q@���O6@���@Q@����D6@���`ݡQ@��� ,6@���`ݝQ@��� (7@���Q@��� 17@���|Q@���@7@���ēQ@���"7@���Q@���7@���0Q@��� 7@���ϕQ@���6@���9Q@����06@���@Q@���z6@����MQ@����7@���Q@���97@���Q@���`-7@���@ܢQ@���@7@���JQ@���EC7@����=Q@���R7@���Q@���h7@���@Q@��� 7@���@oQ@���Ec7@���Q@���w7@����ɧQ@���`7@���PQ@���D7@���KQ@���@-7@����ٝQ@����֤7@���@ Q@��� (7@���Q@���p @���O@����Ȑ @��� ,O@����3 @���O@���' @���@O@���@o!@����O@���-!@���`O@���O!@���O@���@5!@��� O@����3!@��� O@���U"@���`O@���I"@���@O@���@!@���` O@���p @���O@���@ۿ7@���kQ@��� U7@���@Q@���7@��� fQ@���@7@���1Q@����7@���`Q@���@7@����Q@���7@����Q@���8@���Q@���`6 8@���@`Q@���`8@���Q@���7@���@pQ@���@ۿ7@���kQ@���/ @����O@���@@����<O@���`@���O@���@���`ĻO@���. @��� O@���@^ @���kO@���/ @����O@���`I (@���@pMP@���K>(@����VP@���@_(@���8VP@���I_(@���`QXP@���xV(@���tYP@���(@���_P@����m(@���^P@����L}(@���HdP@���࣐(@���@dP@���`l)@���@YP@���(@����eWP@���l(@���TP@��� yu(@����RP@���`I`(@���OP@���`I (@���@pMP@���@k,@��� Q@���dg,@���� Q@���,@����Q@���@ ,@���@Q@���j,@���@-Q@���S,@���Q@���,@���Q@���@,@���@Q@���`G-@����<Q@���Cd-@���Q@����i-@��� Q@���@-@���@.Q@��� -@���Q@����#-@���@Q@��� -@���Q@���@-@���rQ@���`5Q.@���`Q@���t:.@���@OQ@���Z-@���Q@����Zq-@���Q@��� +z-@���9Q@���`d-@���@?Q@����b-@���Q@���@?-@���Q@���V-@���Q@���h,@���@ Q@���@k,@��� Q@���Q-@���Q@������.@����eQ@��� yu.@���Q@���.@���Q@���].@���k!Q@���@r.@���#Q@���d.@���[#Q@���`I.@���`i'Q@���C/@���`&Q@���@.@���� *Q@���.@���@ -Q@���@A.@����.Q@���@^m/@���,Q@���J/@���@N/Q@���/@��� /Q@����.@���q0Q@���;.@��� 3Q@���F/@���Z4Q@���r/@���@5Q@���@j#/@���18Q@���@E/@���<Q@����/@���=Q@��� /@���@<Q@���l/@���2Q@���@ӆ/@���.Q@����#/@���@F2Q@���/@���/Q@���O/@���@g)Q@���/@���(Q@���z/@���!Q@��� /@���{#Q@�����/@���@&Q@���`/@���*Q@���0@���(Q@���B0@���[+Q@���� 0@���`,Q@���`50@���.Q@���40@����.Q@����40@���`Q0Q@����0@���2Q@����T0@���4Q@���-0@���@6Q@����J0@���@5Q@���8>0@���9Q@����0@���4Q@���~0@���j2Q@���J0@���1Q@����S0@��� &.Q@��� ؒ0@���,Q@���0@���#Q@���t0@���/"Q@���/@���@_Q@���C/@���@.Q@����L/@���Q@���/@���Q@��� /@���Q@����/@���Q@���3/@���Q@��� +.@���YQ@��� .@���Q@���@.@����Q@��� 9/@���JQ@���/@���z Q@���K/@���8Q@���Q-@���Q@����33@���77N@����T@����$8N@���@S@���DN@���@���SVN@���@���`<N@����33@���77N@���02@���@aQ@���@1@����UeQ@���@-2@���@-hQ@���D2@����gQ@���Q2@���`fQ@����Tf2@���hQ@���J2@����hQ@���02@���@lQ@��� ١2@����$lQ@����Z2@���JnQ@��� W2@���rQ@���z2@����qQ@���@|2@���oQ@���@2@����sQ@���`f2@���)sQ@���y2@���|nQ@���@2@����kQ@����2@���qQ@���t2@���wQ@���k2@��� xQ@���2@���tQ@���3@���arQ@���I3@��� pQ@���N2@����kQ@��� +2@���HhQ@����2@���fQ@��� 2@���@dQ@���02@���@aQ@���K.@���$Q@���-@���{'Q@���]-@���S*Q@���P.@���z,Q@���L.@��� /Q@���K-@���@0Q@��� !.@���/Q@���&-@����,Q@��� N[-@���@G-Q@���`=-@���@'Q@���@,@���@&Q@���`5,@���(Q@��� ,@����+Q@��� -@���.Q@���,@���@?0Q@���= -@���I3Q@���O-@���3Q@���$ -@���/Q@���I-@����=2Q@����/7-@���23Q@���K>-@����4Q@���tZ-@����4Q@���`X-@���0Q@���-@���H0Q@���-@����3Q@���-@����5Q@���@A-@���7Q@���@�.@���2Q@��� V.@����=6Q@���L.@���3Q@���=.@���6Q@���.@���@?<Q@���.@���!>Q@���,.@���@Q@����I.@���`@Q@��� +z.@���!:Q@��� .@���a:Q@���@y.@���@4Q@���$.@����]6Q@���x.@���r3Q@���@;.@���0Q@���.@���@`/Q@����.@����.Q@���@.@���@N+Q@���K.@���$Q@���<@���pQ@���@4"<@���@GQ@���r;<@����Q@����}2<@���Q@��� ?<@���aQ@���`R<@���Q@����T<@���@XQ@��� Vt<@���IQ@����Sw<@���@ Q@���@X<@���lQ@���@<@���`QQ@���e<@��� Q@���@X<@���7Q@���H<@���[Q@���@<@���!Q@��� <@���(Q@���<@���ZQ@���@=@���@Q@���f=@���@Q@���K=@����eQ@���zT=@���@GQ@���s=@���qQ@���@^=@���Q@���=@���@ӮQ@���@=@���@%Q@���'=@���@pQ@��� =@����EQ@���=@���Q@���=@����5Q@���>@���bQ@���3>@����Q@���t>@���Q@���V>@����Q@����wW>@����٥Q@���'>@���`ԡQ@���s>@���Q@���`>@���jQ@��� &>@���3Q@���>@���ǜQ@���l?@���@%Q@��� ?@���PQ@��� ?@���Q@���`6?@���Q@���>@����eQ@���Y>@����Q@����}b>@���@pQ@���W>@����ɇQ@���$>@���`yQ@���Q(>@���@?Q@��� =@���HQ@���``<@���[Q@���?<@���|Q@���<@����Q@���̜<@���Q@���o<@���AQ@���%=@����}Q@���g=@���wQ@���@;l=@���vQ@���P=@���3zQ@���r=@���8zQ@���@x=@���@PuQ@���=@���lQ@���…=@���`kQ@���=@���jQ@��� +=@���@nQ@���l>@���'qQ@��� y=@���mQ@���@=@��� kQ@����}>@���@NoQ@��� >@���lQ@��� [0>@���`QlQ@����L>@���`QpQ@����4>@���qQ@����4>@���JrQ@����v(>@���@sQ@���->@����$xQ@��� O>@���:xQ@���g>@���tQ@���k>@���lQ@���e>@����wkQ@���Pi>@����jQ@���s>@���lQ@���@Ws>@���`yqQ@���w>@���tQ@����T>@���sQ@���t>@���'qQ@���@>@���rQ@���>@���rQ@���h>@���@kQ@���D>@����fQ@���>@��� cQ@���@>@���aQ@���>@����%cQ@���`60>@���jQ@���y>@���jQ@����>@���chQ@���$>@��� 6hQ@���@'->@���:dQ@����w>@���@^Q@��� \O=@����-TQ@���@XO=@���)SQ@��� KO=@���OQ@���IO=@���@NQ@���`;=@���FQ@���`f=@���*BQ@��� =@���3BQ@��� <@���RCQ@���t<@���GQ@���<@���IQ@���`<@���;OQ@���I=@���]Q@���rK=@����_Q@���@P=@���@PmQ@���`5a<@���@tQ@���<@���|Q@���<@���pQ@���`%@���sO@��� &@���O@���`'&@���2O@���b%@��� O@���v$@���@O@���#@����O@����#@���O@��� $@���\O@���,$@���O@����2#@���O@���@#@���O@���ʎ#@���O@���x#@���O@���@=*#@���O@���@^M$@���@?O@���'#@��� xO@���#@���O@���;+$@���sO@���p=$@���`O@���o#@���aO@���'#@����P@���#@���@P@��� \$@���@%P@����4$@���P@���p$@���rP@���7$@����P@���@Y$@���@ P@���`r\$@��� P@���$@����D P@���$@����wP@���$@���`P@����$@���P@����%@���P@���` 5%@���P@��� M%@����P@���@$@���@P@���A%@���`iP@��� C%@���'P@���p=%@���P@���A%@���`QP@����ô%@���P@��� 1%@���P@���`]%@����P@���`/V%@���P@��� ˭%@���@P@���@%@���� P@���``%@����P@���%@���1 P@����%@���%P@���%@���|&P@���n_&@���@FP@���|S&@���ZP@����׃&@���`P@���&@���@P@��� &@��� ~P@����x&@���'P@���`5&@���P@���@O'@���JP@���&@���@P@���&@��� P@����"'@���!"P@���b'@���&P@���E'@���@G%P@���:'@����'P@���'@���S&P@���0'@����^%P@���`'@���$P@����'@���$P@���&@���+P@���\&@���@G-P@���`r<'@���`.P@���t'@���0P@���C'@���`y1P@���@^'@����3P@���W'@���k5P@���P'@����6P@���0(@����U=P@���a(@���;P@���bi(@���<P@���%(@���A>P@���@'@����$<P@���l&@��� /P@����x&@���`.P@��� 1&@���@0P@���@-&@���3P@���&@���@4P@���`&@���B5P@����`L'@���8P@���"b'@��� &:P@���&~&@���`6P@��� ߜ&@���8P@���$ '@���@9P@���Ϊ'@���@>P@����ݞ'@���@@P@���@3'@���@6DP@����O(@���ABP@���,Y(@���?P@���=j(@���1@P@����b(@���`CP@���@)@���GP@���`I)@���`QP@���`I`)@���LP@���@(@���`HP@���ົ(@���IP@���n(@���@_LP@���`5(@����NP@���`h)@���(PP@���`(@���kQP@���`(@���NP@���A(@���OP@���(@����MTP@����(@���@UP@���h)@���`iWP@����ZQ)@����TP@���@_)@���@GUP@��� bJ)@���`VP@����� )@���VP@����T(@���@_\P@���G!)@���@h\P@����")@����ZP@����ZQ)@���ZP@���@;L)@���l\P@��� )@����U]P@���-)@����^P@���!)@���`P@���`r<)@���aP@���")@���eP@���)@���@aP@���(@����aP@���@A(@���RcP@��� 1(@���eP@��� (@���eP@���@(@���jP@��� )@����nP@���@+)@���mP@����;)@���biP@����n)@���hP@���1)@����#iP@���R)@����]jP@���r)@���ZpP@���I?)@���sP@���@n)@���@XrP@��� a)@����uP@���`=)@���tP@��� 7)@���uP@���e)@���{P@���ʮ)@���`}P@���@D*@���`iwP@����[*@���`vP@���n>*@���@-|P@���@')@��� f~P@���)@���@NP@���*@���P@���t)@���@xP@��� Y)@���HP@����)@���P@����)@���P@���*@���!P@���%+@����P@���=)+@���P@���W+@���@P@���t+@���@oP@��� I+@���P@���+@���P@���E+@���P@���@\+@���׎P@���@'+@���P@���@J,@���`P@���@ 7,@���`yP@���9+@���@P@���+@���P@���Zp+@����$P@���W3+@����eP@���Z0+@���P@���'+@���� P@���@P*@���IP@���*@���`P@����n*@���@P@����+@���P@���+@����P@���@*@���͗P@���d*@���ZP@���jb*@���`ŒP@��� *@���P@���$�*@���|P@���`W*@���@P@���J*@����$P@���)@����,P@��� ,*@���@XP@���@^m*@����vP@��� Vt*@���̜P@����*@���P@���ԅ*@���@P@����Z*@����]P@���`/V+@���P@����T*@���rP@���=)+@���SP@���*@����P@��� g*@���ͣP@����~*@����P@���7*@���P@����d*@���P@���Cd*@���@oP@���*@���tP@��� *@����ѬP@���`*@��� &P@���*@���bP@��� +@���`yP@��� +@���P@���+@���@íP@��� V+@���)P@���`l!+@���ZP@����F+@���cP@��� "+@����^P@��� N+@����]P@���`/+@���ͳP@���b+@���ζP@���+@���9P@���+@���@P@��� h+@���@P@���+@���@ܾP@���+@��� ڼP@����+@���P@���@-,@���P@��� ,@���bP@��� !,@���rP@���`>,@���P@���EC,@����P@���1t,@����P@����׃,@���P@��� -@���P@���`)-@���P@���~1-@���JP@����&-@����nP@���,@���P@��� N,@����P@���h,@���@P@���,@����P@���,@����P@��� N,@���`P@���,@����P@���-@���P@���l-@���@oP@���`r-@���)P@���%-@����vP@���-@���@gP@���@d-@���YP@��� -@���P@���h.@����P@���`-@���@P@���&.@���tP@���=.@����P@���@j.@���P@���.@���@-P@���G.@����P@��� .@���JP@���`.@���@?P@��� .@���'P@���@.@���@P@���@ .@���P@����D.@���P@��� M.@���P@���Ȑ-@���`P@���G-@��� P@���<-@���P@���Ec-@���7P@���Ec-@���@P@����>-@���ZP@���?,@����eP@���;-@���P@��� h%-@���KP@����/W-@��� P@���`l-@���P@���?-@���P@���.@���@6P@���``-@���@-P@���zt-@���P@���Q-@����P@���.@���`P@��� D.@���@WP@��� G.@���P@���@P-@���)P@����.@���BP@���.@���@%P@���-@����=P@��� N-@���P@��� %_.@����5P@����c.@���@P@����ݞ.@����P@���.@���@P@��� G/@���@ P@���@Ag/@���P@����/@����<P@���/@���tP@��� 9./@���P@����/@���@ P@���@r/@��� P@���Z/@���`QP@���w.@���@P@���` u.@����P@���;.@���0P@����.@���@6P@���@;l.@���`P@���`r\.@���P@���b.@����P@���O/@���`iP@���?.@���'P@���1.@���[P@���`);/@����P@����Ѩ/@���P@���/@����P@���-/@���P@���@.@����P@���.@���KP@���.@����P@����/.@���@XP@���".@���`P@��� .@���cP@���-@���tP@���,y-@��� ~P@���z-@���aP@��� 7.@���@P@��� ˭-@���bP@���3-@����P@���ׂ-@���2P@���-@���@P@���.@���P@��� 2.@���P@���-@���� P@���@-@���'P@���Ws.@���@P@����n.@���@.P@���e.@���P@��� .@��� ~P@��� /@���@P@��� /@���(P@����F"/@���`P@����7/@���P@���,/@���P@��� 9/@���@WP@���@/@���[Q@���2/@���Q@���� /@����Q@���@X.@����Q@���`.@���@NP@���.@���P@���.@���@FQ@���`.@���'Q@���@�/@���lQ@���/@���Q@���2/@���Q@��� t/@���� Q@���x/@���Q@����)</@���@Q@���O/@���@Q@���Q/@���@_Q@���n/@��� Q@����/@��� Q@���/@����EQ@��� ~0@���Q@��� 0@���@xQ@���?0@��� Q@��� 0@���@ Q@��� 0@���ZQ@���s 0@���`Q@���h40@���P@���70@���P@���j0@����$P@����}0@���@WP@���l@0@���bP@���F0@���P@���50@�����Q@���F0@���@h�Q@���@j0@���@P@����ww0@����P@���S0@��� P@���PY0@���l�Q@���u0@���YP@���Bu0@��� P@����0@�����Q@��� \_0@���Q@���@]^0@���@Q@���Rv0@���fQ@��� \0@���2Q@���@0@����Q@���``K0@����UQ@���`6@0@���HQ@���`i0@���Q@���``k0@���� Q@����)0@��� Q@���@,0@���Q@���W0@���@XQ@���`T0@����$Q@���l@0@���@Q@���s0@����Q@���00@���@?Q@���`<0@���@WQ@���0@���Z Q@���@;0@����$Q@����$0@��� Q@��� 0@���Q@���>0@����#Q@���z0@���Q@���0@���@Q@���0@���ZQ@���&1@���IQ@��� VT1@���Q@���P1@���� Q@���]1@���� Q@���Z1@���@Q@���f1@����Q@����0f1@���`Q@���@D1@��� Q@���i31@���{Q@���@4B1@����Q@���r1@���@Q@��� 1@���2Q@���`^1@���@Q@���`6`1@����Q@���(1@����Q@���@E1@���Q@���@1@����5Q@���@ w1@��� Q@����1@���!Q@���`1@���!Q@���@91@���zQ@����1@���Q@���z1@��� >Q@���`1@���@Q@���`0@����D Q@���0@���Q@���@0@���Q@���@|0@��� Q@���`<{0@���k!Q@��� 0@����"Q@���l0@��� $Q@���0@���&Q@��� 0@���')Q@����0@����,Q@���`'1@����D(Q@��� \/1@��� >)Q@���Q1@���@+Q@���1@����,Q@���A1@���`.Q@���@ڠ1@���J*Q@���੫1@���|*Q@���w1@���-,Q@����l1@���/Q@���OJ1@���.Q@���8>1@���0Q@����y1@���3Q@���@1@����M0Q@���Qx1@����#5Q@���1@���`8Q@���` 1@����<7Q@��� ,1@���@8Q@���1@����w;Q@���@w1@���9Q@���@n1@���J:Q@���1@���@=Q@��� |1@���[?Q@��� &1@���@EQ@���@ 1@����FQ@���&2@���IQ@���k2@���JQ@���2@���NQ@����L1@���@NQ@��� 22@���rSQ@���,2@���@XQ@���@&2@����,]Q@���H2@���I_Q@���`<[2@����^]Q@���b2@����ZQ@���[2@���@XQ@���@]n2@����,YQ@���2@���WQ@���`2@���qPQ@���@2@���TQ@���@42@���`VQ@���2@����PQ@���` 2@����QQ@���Ϊ2@���SQ@���2@����MTQ@���2@���`QTQ@��� 2t2@���\Q@���x2@���@`Q@���`2@���@`cQ@��� &2@���@aQ@���`2@���`Q@��� 3@���VQ@���PY3@���kUQ@���`a3@��� SQ@���@dX3@��� &RQ@���03@���`yQQ@���DD3@���@PQ@���H@3@���)OQ@����O3@���*NQ@���Ɓ3@���SNQ@��� q3@���@_PQ@��� s3@��� TQ@���=Z3@���WQ@���@3@���@hXQ@���2@���]Q@���`3@���`Q@���B3@���aQ@��� 63@���@?dQ@����3@���3bQ@���@42@���@dQ@���`2@���gQ@���s3@���lQ@���`<3@���@WoQ@���h3@����EsQ@���`3@���`isQ@���3@���@qQ@���'3@���`jQ@���>3@���@iQ@���@Ӷ3@���fQ@��� 3@���0YQ@���@ۯ3@���[Q@���3@���fQ@���@3@���@gQ@���4@���0eQ@���`3@���@_hQ@���@43@���lQ@��� \3@���uQ@���3@���8rQ@���`f4@���@qQ@���@*4@���@{Q@���s*4@���xQ@��� 74@����vQ@���@W34@���zQ@���@-H4@���S~Q@��� ~Q4@���k}Q@���l4@���wQ@���FR4@���@xjQ@���@3c4@����gQ@���n_4@���keQ@���gE4@����cQ@���M4@��� fbQ@���04@���YQ@���``3@���`yUQ@���3@���PQ@��� 3@���PQ@���a 4@���@-TQ@���`I4@��� XQ@���@|4@���@dQ@���`4@���aQ@��� 4@���`_Q@���4@���aQ@���`<{4@���@hQ@���4@���kQ@���4@��� &nQ@���z4@���pQ@���4@����nsQ@����|4@���`yuQ@���4@���wQ@����)4@���SzQ@����w5@���@-|Q@���4@����]vQ@������5@���/rQ@���@: 5@���rQ@���4@���qtQ@���``5@���wQ@��� [05@���vQ@��� [ 5@���sQ@���)5@���sQ@���`95@���@XvQ@����065@���@yQ@��� S5@���yQ@���45@���|Q@���@@5@���1Q@���Q5@���kQ@����Zq5@���@Q@���`6@���nQ@����6@����pQ@���5@����UuQ@���I5@����UuQ@���h6@���vQ@����L5@���@_xQ@���O5@���|Q@����6@���@~Q@���G6@���@-|Q@���@ 6@����Q@���6@����فQ@���5@����5Q@����5@���Q@���6@����Q@���6@���@Q@����5@���@Q@���`<{5@���`Q@���n5@���Q@��� |5@���Q@���IO5@���SQ@���}55@���@EQ@���`6p5@���'Q@���@4r5@��� ʎQ@����5@���@pQ@���15@���rQ@���5@���cQ@���5@���Q@���@5@���2Q@���5@���Q@��� 5@���@%Q@���5@����nQ@���@45@���@Q@����6@���`Q@���@X6@��� Q@���%5@���@ˑQ@���6@���@Q@���6@���@Q@���``6@���`iQ@���y%6@���@`Q@���`e'6@���`Q@���nO6@���@Q@���L6@����$Q@���F6@���`Q@��� <6@���Q@���`6@����$Q@����S6@����Q@���`6@���Q@���6@���AQ@���=6@���lQ@���E6@����Q@���^6@����҃Q@���D7@���Q@���`6@����Q@���`7@���Q@��� 7@���Q@���%7@���~Q@���`7@���`|Q@���@4R7@���@Q@���R7@���@h|Q@���@d7@���bQ@���?7@���@`Q@���.7@���Q@����]7@���@ӆQ@����Sg7@���Q@��� &N7@���ΊQ@���rk7@���@ Q@����vH7@���Q@���@@7@���Q@����|7@���)Q@���@-h7@��� Q@���̜7@���Q@���@ w7@���Q@���Ä7@����EQ@���@7@��� Q@���`8@����vQ@���[8@���@ Q@����M8@���IQ@���88@���� Q@���N8@����Q@���48@���Q@����I8@��� fQ@���\8@���Q@��� 8@����Q@���?8@���@Q@��� ߼8@���@Q@���8@��� Q@���`>8@���Q@��� C8@���Q@���f8@����eQ@����}8@����Q@��� U8@���Q@���ਜ਼8@���ζQ@����Ѹ8@���@Q@��� U8@����Q@���`8@���@Q@���8@���@OQ@����$8@���lQ@���@;8@���@OQ@���8@����]Q@���`69@���Q@���9@���ĻQ@��� 8@���@Q@���`59@���Q@���9@���@Q@���>)9@���Q@���@@9@���Q@���@@9@���@OQ@����X9@����ɳQ@���@d9@����#Q@���W9@���Q@���`X9@���ϽQ@���d9@���@Q@����ш9@����Q@���Q9@����#Q@���r9@���2Q@���`w9@���Q@���@9@��� ڸQ@���`9@����5Q@���@d9@���Q@����9@����Q@���@9@���zQ@���`9@���Q@����Z9@���@Q@���$9@���@Q@���9@���ğQ@���FB9@���PQ@���` E9@���Q@���`9@���ஞQ@����H9@���@gQ@���A9@����јQ@���*9@���kQ@���`e9@���@oQ@��� 249@���Q@��� 39@���@ܒQ@���8@���Q@���`f8@���@ Q@��� 8@����UQ@���`9@����҃Q@����) 9@���@Q@���G9@���Q@��� 29@���lQ@��� 9@���kQ@��� U9@���@Q@���$9@���@Q@����C9@���Q@���@ G9@���Q@����|9@���Q@���9@����nQ@����l9@���Q@���u9@���஖Q@���@:@����Q@���`:@���`yQ@���ੋ:@���Q@��� :@���`Q@���:@���Q@���r:@���Q@���J:@���৴Q@���@:@���@Q@���k:@����Q@���Y:@���Q@���r:@��� &Q@����S:@��� Q@���G:@����<Q@���ए:@���@XQ@����L:@����Q@���`_:@���Q@����;@���Q@���x:@����Q@���;@���Q@���D;@���PQ@���;@���@Q@���";@����Q@���;@���HQ@���#;@���@Q@���W;@���1Q@��� G;@���0Q@���Q;@���@ôQ@��� [;@���)Q@����y;@���@ôQ@���P;@���Q@��� \;@���RQ@���!B;@���Q@��� ;@���Q@���';@���@Q@���bY;@���@_Q@���7;@���Q@���E;@���Q@���@y;@���@?Q@���r;@���Q@��� ؒ;@���Q@���`f;@����=Q@���;@��� >Q@���¥;@���`Q@���;@���Q@���`_;@���Q@���@4;@���Q@��� ;@���Q@���O*<@����Q@����M<<@����Q@���B<@���Q@����2<@���@Q@��� |<@����nQ@���@<@���Q@���`q<@���Q@���gE<@���Q@���@<@��� fQ@���E#<@���Q@���8;@��� Q@����;@����Q@���<@���7Q@���@3<@���Q@����$;@����Q@���;@����Q@���A;@���@`Q@���`f6<@���լQ@���@;L<@���PQ@���I<@���Q@���=<@���Q@����;@���Q@���;@����<Q@���`;@���rQ@����.<@���@۟Q@��� <@���ড়Q@���<@���ߛQ@���``;<@���@_Q@���U<@���ZQ@���`e'<@���Q@���'<@����Q@���/<@���3Q@����0&<@���Q@���<@���pQ@���@;@���@Q@���`;@���@-Q@���@J;@���|Q@���` ;@���!zQ@����:@���@|Q@���u:@���{Q@����^:@��� fvQ@���@'9@���`9mQ@���`59@���jQ@����9@����VhQ@���79@���@?dQ@���a9@����cQ@���9@��� 6XQ@���H9@���UQ@���g9@���`9MQ@��� %9@���@@Q@���9@����h8Q@����}b9@���Z8Q@���@*9@���J2Q@���`9@���C(Q@���@8@���&Q@���8@��� #Q@���8@���#Q@���@;8@����)Q@���8@���I+Q@���!8@����1Q@���r 8@���@4Q@���;7@���@G5Q@���7@���-Q@���C47@���:(Q@���Z7@���@,Q@����e6@���-Q@���>Y6@����5Q@���5@���8RQ@���!R5@���TQ@���5@����NQ@��� + 5@���`KQ@���5@���@HQ@���5@���FQ@���G5@���@BQ@���@4@���*FQ@���� 4@��� DQ@����4@���@BQ@���P4@���@i;Q@���@Y4@���@X2Q@����34@���`a*Q@���`3@���"Q@���@ 64@���@Q@���@-4@���@Q@���3@���@Q@���2@���@7Q@��� 2@���jQ@��� [2@���@"Q@���@2@���� Q@��� 2@���3Q@���'2@���� Q@���@X1@���@P@���@ F1@���@Q@���`601@���Q@���0@���P@���@0@���� P@���a0@���P@���`510@���P@����0@���@XP@���`/f0@���@`P@���Z0@���"P@���`0@����P@���l@/@���`ŦP@���@.@���ෞP@���@.@���*P@��� .@���@P@���`-@���@zP@����D-@���@tP@���-@���eP@����q,@���TP@��� ߼,@���OP@���,@���@QHP@���`d+@���@H(P@����L]+@���$P@���;,@����P@���7O,@���� P@���` ,@���!P@���`,@���P@��� +@����P@���u*@���@P@���^)@���`yP@���Y)@���O@���A(@���O@���dG(@���`O@����c(@����O@���n'@���עO@����TV(@���`O@���(@��� =rO@��� -(@���`_O@����(@����LO@��� k(@���1O@����w(@��� ~!O@���?(@���`BN@����7(@���bN@��� \)@���uN@����T)@��� fN@��� \O)@���`N@��� (@���`ăN@���Tu(@����~N@���,)@���@iCN@���`R7)@���;N@���-)@���`3N@���r(@���&N@���1(@��� N@���@{S(@���M@����'@���M@���`l'@���CM@���?'@����M@��� 9'@���M@���` U'@���CM@���@ '@���`M@���'@���ҦM@���'@���dM@���0'@���ࠜM@���z'@���uM@���'@���M@���@'@����_tM@���&@���qM@����&@��� OrM@���@0&@���|M@����T&@����M@���`W&@���`M@���`X&@���M@���L&@����M@���@2&@���`M@��� &@���`M@����F%@���@ۗM@���@%@����5M@���%@���M@����%@���M@���`f%@��� M@���࣐%@���M@���Uu%@��� &M@����ɏ%@���M@���U%@���٨M@���S%@��� M@���+%@���M@����N%@����wM@���OZ%@���M@���"b%@���M@���`%@���BM@���;+%@���`M@���G%@����M@���X%@���{M@����n%@���`/M@���`Մ%@���`M@����s%@���`M@���@$%@���tM@���~$@���M@���n$@���@hM@��� y5%@���`M@���6%@����M@���%@���M@���@$@���M@���$@��� M@��� N$@���UM@���@ۿ$@���`M@���` u$@���M@���xv$@��� M@�����$@���M@���`$@����M@��� $@��� M@����w$@����M@���$@���M@���n~$@���M@���Q$@���`qM@���A$@���M@���%@���8M@����$@���ஞM@���O$@���`M@���h$@���`_M@���$@����M@���A$@���UM@��� Vt$@���@oM@���q$@���*M@��� B$@���M@��� B$@���M@���|S$@���M@��� $@��� M@���9 $@���`_|M@���`&#@���zM@����m#@��� {M@���#@���M@���#@���@M@���Fb#@���M@����_#@���ԅM@���7O#@���ஆM@����D#@����vM@����#@���@pM@���@l#@���aM@���ij"@���@mM@����u"@���pM@���"@��� OjM@���"@���`kM@���"@����#iM@���@"@���`M@���j""@���`A^M@���r"@���i[M@���U"@���[WM@���@d"@���@TM@���@!@���!JM@���!@���� FM@���� !@���@.'M@���  @���M@���l @���`M@����|S @���3M@���q< @���1 M@����[ @���`M@����' @���M@���@^ @����MM@��� @���\M@���'@���* M@���Q@���`M@���o@���'M@��� |s@��� M@��� @��� M@���X2@���@L@��� @���l�M@����dh@���@F M@���@����M@���@��� M@����L@���M@��� 4@��� M@��� @���`YM@���@���JM@���@#A@����M@���`@���M@���@@���RM@���@n@���{ M@��� @���@M@���d@���M@���@���M@���e@���@"M@���`>@���M@��� @���$M@���@���@?(M@��� S@����(M@���`]n@���@oM@���N@��� #M@���@���3M@��� @���`_<M@���@e@���J>M@���`{@���GM@���:@���@`M@���`M@���@FrM@��� |3@����tM@���`51@���@yM@���@~q@���`sM@���@#@��� wM@���@@���`~M@���`@@��� M@��� @��� D|M@���@@���@nM@���@eG@���@wM@���@���|zM@���g@���jM@���@���`NkM@��� +Z@���@nM@���<@���sM@���~@����zM@���@���`M@���@���`~M@���(@���rsM@���@���){M@���-@���~M@���@���@M@���@���@M@���`.w@��� >M@���@���UM@����؂@���`M@��� @��� OM@���@e@���` M@���r@���BM@��� 4@���@M@���v@���bM@���q\@���`M@���`p@���@M@��� @���M@���r@���3M@���@.@���ٰM@����K@���@ӶM@���`5@���M@��� $@��� M@����@���`M@���'@���`0M@���� @���M@��� @��� M@���@���@M@���`@���M@��� V@���'M@���@���UM@���/@��� >M@���Q@��� M@���[@���� M@���@���9M@���8@���(M@��� +@��� M@����d(@���M@���r@���@?M@��� :m@���:M@���`p}@���@äM@���p@��� fM@���-@����M@���zT@���M@��� =J@���`M@���`` @���2M@���@#@���M@���@���M@���@���jM@���ൠ@���M@����@���M@��� +Z@���@pM@���N@���M@���{3@���{M@���@e@���@۷M@���� @���M@���@���`M@���@���M@���@@����M@���'@����M@��� 4@���M@��� @���M@���`@���M@���@���M@��� @���lM@���`@���M@���*@��� OM@����@��� M@���`8@��� M@��� $`@���@oM@���`` @���M@���@���`M@��� @���@WM@���g@���M@���`@���[M@���q\@���M@���`DD@���7M@���@@���'M@��� @���cM@���@@��� M@���@���M@���[@��� yM@��� :@���M@���F@���M@���˭@���M@���t@����M@���� @���M@���@@��� M@��� @���Z�N@���`"@��� N@���`@���`AN@��� @����MN@��� Vt@���@ N@���O@���N@���`Q@���N@���I@���N@��� @���%N@���%@����7N@���@���`4N@���`Q@��� +N@����@���N@���@���| N@���[O@���"N@���@@����<3N@���U@���<N@���/@���@<N@���`j@��� ?N@���@���@N@���� @���2KN@���[@���IN@��� ff@���>N@���r{@���6N@����L]@���*:N@���@���<N@���`%@���3BN@���@���`8N@��� @���`/N@���ty@���/N@���H@���`,N@���Œ@���@.'N@���@���#N@���|@���SN@���i@��� O"N@���z@���jN@���`>i@��� N@���@��� UN@���@���`/M@���`@���`�N@��� @��� N@���@���N@���-@��� ` N@���z@���@W N@���@���@N@���(@����N@���Q@���`N@���-@��� N@���z@���� N@���h@���!N@��� E@���`N@���˭@���:,N@��� Щ@���.N@���`WS@���$N@���N@���`N@���@C@����5N@���Z@���N@���@���N@���`p=@���!N@���@���{#N@���a@��� 'N@����@���(N@���-@���`+N@���z@���.N@����@���32N@��� 0@���1N@���`@���`6N@���@~@���@>N@���+@���2CN@���?H@���sBN@���O@���5N@���`ш@���'5N@���@���(<N@���@���`FN@���� @���SN@���ԥ@���`ZN@���O@���`N@���`^@���YN@����@��� XN@��� @���[ON@��� @���`FN@���``@���@IN@���_@���TN@���@���ON@���`@���:dN@���'@����gN@���`51@���`[N@���FB@���UN@���~@����5QN@����Tv@���SVN@���@���YN@���t@���aN@����K@���dN@���@U@���oN@���@���tN@���` @����egN@���h$@���mN@���@��� zN@���/V@���`xN@���@O@���PqN@���d@���oN@���aj@���JvN@���`WS@��� {N@���`@���N@����@��� fN@����Tv@���PN@���ԥ@���ׂN@����@���@N@���`W@��� N@���'}@���N@����dh@���N@���'}@���N@��� @���`YN@��� 0@���N@���7o@���`ݕN@��� k@���cN@���� x@����<N@��� @���`N@���@���\N@���`%@��� %N@���`{@���`wN@���@����|N@���i@����vN@���`t@���`nN@����@��� sN@��� @���xN@���I@���@|N@����@��� N@���z@���ތN@���@���JN@���7o@����N@���t@����5N@��� @���`N@���R@���@FN@��� |s@���`N@���`.7@���௥N@���t@����N@��� @��� N@���I_@���N@���`@@����N@��� @���9N@��� :@��� N@���`5q@���@ۗN@���@<+@���:N@���B@���@.N@���-@���@FN@���@���N@���`@����N@����@����N@���`@���mN@���'=@����^N@���b@��� DN@��� @��� `N@��� @����<N@���`@���PN@���&@���N@���-@���N@��� @��� `N@��� @���QN@���@���N@���`@���`N@���Ί@���(N@���?@����шN@���>@���N@���`V@���@-N@���@@���N@���@���`N@���@���N@��� @���N@��� M@��� N@���`5@���תN@����,@���[N@���>@���ൠN@���[@���`GN@���G@���൨N@���@���`īN@���`WS@���@ìN@���`ш@��� N@���@)@���`N@��� @���'N@��� @���`N@���,@���`N@���@���մN@���@���:N@���(@���`ܶN@���3@���N@���Q8@���`N@���@<@���@N@���-@���N@���@��� N@���̌@���N@���_l@���N@���@@���N@���@��� N@����_@���N@���@���`N@����m@���`HN@����t@���N@���@��� N@��� >@���@N@���`@���|N@���ݝ@����N@���`J@���N@��� k@���N@���`,@���N@����ף@��� N@����"b@���N@��� @���N@���r@���)N@��� l@���@N@���Ί@���N@���@��� N@���7@���N@���h@��� ON@��� @���`GN@���h@��� =N@����@���N@���@n?@��� ON@��� l@���@N@���@���@N@���`:X@����N@����"@���RN@���?@����MN@��� C@���N@���`@���N@���@@���N@��� @���`N@��� K@���N@��� S@���zN@��� @���N@���q@��� N@���@���@N@���@����N@���༚@���`O@���@@��� O@���@��� O@���``K@��� O@���`vX@��� O@���@���O@���@���`O@���@@��� O@��� @���O@��� @���t O@��� C@���`G O@���ࣰ@��� g O@���@���cO@���@���@O@���7@���O@���@��� O@���@���`O@���7o@���bO@���7@���� O@���@@���O@���f@���KO@���@���`O@���(@���O@���/@���( O@���u@���@O@���@d@���� O@��� |@���tO@���`5@���:O@���@���O@���@���� O@���4@���@'O@���K@���@.O@����tZ@��� O@���I@��� gO@���@��� 'O@���``@���.O@���@@��� 1O@��� @����2O@���gE@��� U-O@���6@���`q4O@����K@���8O@���?@��� 4O@����@���` O@��� .@���O@���@���@O@��� @���`N O@���@���` O@��� @��� O@����@���RO@���&@���"O@���8N@����"O@����@���'O@���@@��� L.O@���@���b1O@���`2@���:O@���@@���5O@���_,@����9O@���ij@���>O@����|@���@AO@���� @���`BO@���@��� IO@���@^M@����MO@��� C@���`MO@���`r@����GO@���'}@����OO@���@@���@WSO@���@���`IO@����@���RO@��� a@���@XRO@���%@��� &NO@���f@���MO@���@@���CO@��� @���QPO@���@���`EO@��� (@��� ?O@���@���`IO@���@����vHO@����@���:LO@���@���QPO@���`@���PO@��� @���MO@���@���`TO@���g@��� ~YO@����@���]O@���@: @���`GYO@���@G @���|ZO@��� @���_O@����m @���)cO@���?@���@WO@��� ١@��� `[O@���x@���\O@���@���:dO@���`ڀ@���`eO@��� =@���@-`O@���`@���\O@����@���SfO@���f@��� ~iO@���i@���@WkO@���`@���9uO@��� d@���S~O@���`51@���@?O@���``@���tO@���@U@���@puO@���`v@��� |O@��� @���|O@���`"@����zO@���`y@���@?xO@���0@��� DtO@���`>@���|O@���) @���xO@���@Y @���fO@����#!@��� VO@���@!@��� [O@���r[ @���(lO@���W @���`rO@��� j @���(tO@���@@���iO@����t@���RO@���`D@���`YO@��� @���`ݍO@���< @���`ċO@����F @���O@���@ @���{O@���@= @���oO@���@!@���`kO@���0!@����mO@���H�!@���oO@���f!@���`hO@����|S!@���lO@��� @���rO@���� @���azO@���6P!@���`{O@���N!@��� ~O@���� @����M|O@���h @����eO@����K @���O@���@ @���`O@����s @���O@���@~Q @����eO@���t @���O@���@5 @��� ~O@��� @���`NO@���@z @���`O@����* @���@O@���@D$!@���ϑO@���@EC!@���[O@���F!@���`ŚO@���@:!@��� O@��� @���O@����!@���1O@����E!@���`O@���8N!@���`_O@���@!@����O@���!@����O@���!@���O@���@"@���O@����J"@��� O@����33"@��� DO@���."@��� gO@���� "@���O@��� "@��� O@���@m"@��� O@���S"@���O@���`"@���IO@���("@���ٸO@����"@���`O@����׃"@���@O@��� "@���O@���@]n"@���`O@���L"@��� UO@���S"@���O@����C"@���O@���"@���O@���"@���O@���"@���O@���#@���`O@���@$#@����O@����#@���O@���p#@���tO@���_#@��� O@���#@��� OO@���@#@���O@���#@���O@���`$@����#O@��� $@���O@����׃$@���)O@���14$@���'O@���` $@���@O@���@ $@����O@���P$@���O@����Z$@���@O@���ߛ%@��� UO@��� V%@���`O@����7%@��� yO@��� ˍ%@���O@���1%@��� O@���` U%@���O@��� %@���O@���;+&@���tO@��� ف&@���@FO@���b&@���@O@���&@���O@���&@����MO@���@:&@��� O@���~1&@���O@���`&@��� O@��� %&@���9O@���M&@��� >P@����F&@����P@���`}&@����P@���&@���P@���&@���rP@���M\&@����P@���n>%@��� O@���-%@���O@���`%@���sO@�����Z������ I@����Ԥ0@���`M@���` 9@���h������� ������SM@���+4@��� >QM@���@(<4@���QM@����vX4@���`[M@��� o4@���`M@���8n4@���rsM@���G4@����yM@��� V4@���@.gM@���^4@���`0]M@��� 74@���SM@���+4@���`K@����I6@���`K@���7@���&L@����48@���&L@���` 9@���0L@���8@���LL@���@8@���(tL@��� #8@����L@���c7@��� ~L@���7@��� L@��� ҷ7@��� M@���7@���*M@���`ݝ7@���@X:M@��� \7@���@M@���@-7@��� NM@���7@���`YQM@���` 7@��� bM@���7@���\fM@��� l7@���`/nM@���`^7@���1M@���@]7@��� M@���6@���`˥M@���6@���M@���6@��� M@���6@���`0M@���[6@���`M@����$6@���M@���@~6@���M@���6@��� M@��� ,6@���`M@���@z6@����M@���@Z6@���UM@���`606@��� xM@��� V6@���:M@���5@����MM@���@q5@���zM@���Z5@��� rM@����5@��� yeM@����p4@���VM@���4@���@UM@���@44@���@ZM@����4@���LM@���e4@���CM@���@u4@����<M@���d4@��� #M@��� ]4@���PM@���<j4@����<M@���gu4@���@M@���`m4@���!M@���`4@���@XM@���:4@��� L@���@dh4@���@WL@����}R4@���L@���jB4@���L@����.4@���(L@���i#4@����JL@���@�4@���L@���3@���L@��� c3@���IL@���F3@��� L@����3@���L@���``2@���L@���`2@����5qL@����2@���*RL@���2@��� GL@��� 2@���;L@���2@���9-L@���%1@���bL@���11@���ZK@���1@��� K@���@X1@���K@���`ܮ1@��� K@���@(1@���KK@����y1@���`K@���`Yq1@���`ʦK@���`6`1@���!K@���q,1@���ZK@���b 1@���`eK@���0@���@WSK@���`f1@���� K@���1@���UJ@���@0@��� >J@����}0@���J@��� x0@���@J@���ि0@���J@����L0@��� J@����Ԥ0@��� ZJ@���1@���`_J@���AV1@���JNJ@���?1@��� I@���2@��� I@���2@���@uL@��� ;5@���@uL@����I6@���`K@����I6@�����H������nN@����$7@���5uS@���B@�������������VR@���`cB@��� 6R@���B@����R@���kB@���KR@����tB@���@`R@���{B@����hR@���@-B@���@R@���@puB@���R@���_B@���AR@���\B@����wR@���@bB@���SR@���_B@���R@���uPB@���`Q�S@���`:B@���H�S@���B@���R@���@@B@���@R@���B@�����S@���`6�B@���@S@����B@���@(S@���`A@��� S@���@A@���8S@���A@���!S@��� A@���$S@���`A@���k%S@���*A@���%S@���bA@���:S@���:A@���YaS@���A@���lS@���`A@���5uS@���@A@���YpS@���гA@���aS@���A@����=OS@��� ћA@���BS@���A@����-DS@���`A@���AS@���}A@���=S@���cxA@���:S@��� 7WA@���`7S@���UTA@���I3S@���� VA@���D/S@��� ^A@���S@���bA@����S@��� YA@���@S@���NA@����F S@��� JA@����S@��� PA@���R@���@MA@���R@���@@A@���@R@����FA@���R@��� OA@���{R@���"YA@���R@���@dA@���֏R@���``A@���K}R@���TA@���|R@��� KA@����%sR@���`3A@���sR@���9-A@���@vR@���l(A@���}R@����.'A@���YR@���@A@���R@��� xA@���I{R@���A@���zR@��� A@����,}R@���`A@���R@���sA@���@ܒR@���r@@���zR@���V@@���R@���@@���@R@���@@����R@���@@��� R@���@@���R@���@@��� fR@���@@���`R@���`Y@@���� R@���@@���R@��� `@@���@ÀR@����@@���sR@���� @@���bR@����@@���IR@���Io@@���OR@��� Zh@@���`R@��� Nc@@���@OR@����#a@@����^R@���c@@���பR@���k@@���R@��� `k@@���@ԩR@���K@@���R@����$@@@���R@��� ;@@��� fR@���y=@@���R@��� '@@���uR@���@E#@@����R@��� @@���R@���� @@��� fR@��� @@���R@���@@@���R@���@@���8R@���?@����R@���7?@���nR@���?@���R@���@?@����R@���?@���R@��� N{?@���R@���1?@��� fR@���h$?@��� R@���b?@���nR@���?@��� ?R@��� x?@���cR@���l?@���`ݍR@���@{>@���@zR@���@ f>@����vR@���@^]>@���@{R@���lP>@���3~R@���1>@��� sR@���>@���@eR@��� 1>@���@pYR@���`Y=@���BQR@����ɏ=@����<R@��� , =@���R@��� <@���@R@���<@���`9 R@��� g<@����Q@���@7<@����Q@���<@���@gQ@���A;@���@Q@��� H;@��� WQ@���=;@��� >Q@���`S;@���ײQ@���@;@���@7Q@���;;@���@OQ@����p;@���@Q@���` <@���� Q@����<@���1Q@���1;@���@_Q@����s;@��� fQ@���;@���@jQ@���@'=;@����UeQ@����-;@���_Q@����$:@��� _Q@����:@���``Q@���:@���@@sQ@���:@���@pQ@���?:@���`ŊQ@���o:@���@Q@���ł:@��� Q@���>:@���Q@���J9@���`Q@���@9@���kQ@��� x9@���CQ@���9@���@Q@��� 9@���jQ@���9@����Q@���ׂ9@���)Q@���j9@���Q@���<9@���Q@���@(,9@���Q@���8@���Q@���`8@���Q@����8@���Q@����8@���cQ@���Bu8@���`Q@���n8@���@OQ@����h8@���CQ@���@^8@���@7Q@���mO8@����Q@���AF8@����=Q@���=8@���`9Q@���\>8@���Q@���@I8@���Q@����l8@���Q@���n8@���cQ@��� &^8@����Q@���N8@���Q@���`|28@���ƁQ@���:,8@����lQ@���18@���@OfQ@��� H8@���`[Q@����I8@����NQ@���E8@���@LQ@���B8@����#EQ@���L8@���?Q@���@A8@���R;Q@���@WS8@���8Q@���J8@���`7Q@���=8@���@5Q@���`0E8@���4Q@��� 1U8@����0Q@���R8@����/Q@���@P8@����/Q@���@Q7@���)Q@���@P7@���'Q@���`*7@����Q@���7@��� Q@���7@���` Q@���7@���� Q@����$7@���7Q@���7@��� Q@���h7@���2Q@���@7@���@6Q@���7@����Q@���7@���2Q@���7@���'Q@���7@���P@��� U7@���@`P@���`*7@���@P@���7@���@P@���@7@��� P@���7@���bP@���7@���@P@���@7@���@pP@���`7@���P@����7@���`P@���7@���P@��� 7@���P@����7@���YP@��� 7@���@GP@���n7@���� P@���8@���1P@���`8@���@P@���8@����P@���``[8@����vP@���i8@���P@���@ԕ8@����P@���@Ӗ8@���@P@���8@���3P@��� O8@���@-P@����8@���@WP@���8@���P@���@8@���PP@���D8@���@%P@���`8@���@WP@���*9@����٭P@��� :9@����P@����Y9@��� P@���@`9@���P@���a9@���@P@���@k9@���ৠP@����F9@���P@���9@����P@��� N9@���@P@���`~9@����<P@���x9@����UP@��� 9@���[P@����z9@���kP@����s9@���[P@��� \o9@����ɟP@���e9@���@WP@���w9@���kP@���@4r9@���SjP@���`W9@���UP@���b9@���IP@���J9@����nCP@���O9@���@.P@���ZP9@����e+P@���G9@���J*P@���79@����,-P@���p-9@���&P@����M,9@���c(P@���g59@���R'P@���`>9@���`!P@��� UE9@���P@����*;9@���{P@���F9@���`P@���T9@����5P@���f9@����P@���`m9@���P@���`m9@���@ P@����s9@���8P@���is9@���O@���ti9@����nP@����h9@���P@���@']9@���P@����TV9@���`O@���@_9@���@O@���@`9@���(O@���G9@���`O@��� U59@���@O@���79@��� WO@���!B9@����^5O@���C49@��� +O@���`'9@���+O@��� 9@��� 1O@���>9@���`*O@���`9@���`#O@���9@����(O@���*9@���`0%O@���`39@��� O@����v89@��� O@���09@���`O@����v(9@����^ O@����9@���N@���`9@���`N@��� N9@����N@��� 9@���N@���@Q9@����N@���`9@����5N@����9@��� `N@����G19@���@4N@���`}19@���N@���@]N9@����N@���9@���|N@���I9@���N@���-:@���@N@����<:@��� O@��� ~Q:@���bO@��� ~a:@���i#O@���Z:@��� "O@���m:@����/O@���:@���NO@���@z:@���bO@����T:@���`O@����:@���@.O@����F:@���jO@���:@��� O@���:@���O@���;@���ਣO@���7;@���`īO@���[;@���`O@���``+;@���`YO@���D;@����uO@��� 7;@����aO@���E;@���{kO@���ty;@����5iO@����;@���`O@����<@���dO@��� VD<@���`KO@���@;<@���2O@���k<@���@O@����$<@��� `N@���<@��� N@����%<@���kN@���=@���N@���*=@��� yN@���ic=@���nN@���@=@��� 7N@���@{=@���@.N@����=@���>O@��� g=@��� dO@���o=@���`)O@���@=@����hP@���d=@���Z P@��� |=@���P@���=@���@,P@����=@��� /BP@���=@���ZP@��� =@���lP@���=@��� P@���`R=@���@@P@����F>@���P@���9>@���jP@���@Ws>@���� P@���D>@����P@���@4>@���@?P@��� O>@���ȫP@���@ ?@����FP@���`S6?@���P@���@K?@���\P@���`Q?@��� NP@���@;L?@���8P@����#A?@����vP@���9=?@���@hP@��� 8?@���nP@���6?@���P@���`RW?@���@.P@���a?@���@P@���=i?@����^P@��� h?@���0P@����?@���;P@���?@���P@���`֣?@����P@���Ţ?@���� Q@���B?@��� /Q@���?@���j"Q@���`?@���$Q@���?@���Q@���@?@���lQ@���r?@��� #Q@���C?@���@-Q@���d?@���.Q@���?@���P5Q@���?@���AQ@���B?@����^UQ@���?@��� fRQ@���@@���`RQ@���@@���OQ@���8@@��� fRQ@���``C@@���tYQ@���;K@@��� >]Q@���RW@@���@GYQ@��� c@@����`Q@���@o@@���_Q@���@@���cQ@���|@@���rQ@���?@@���cxQ@���@@��� &Q@���ؑ@@����VQ@��� =@@���@GQ@���@@@���@Q@����}@@���Q@���`@@���Q@���`/@@���`Q@���`@@���~Q@��� &@@���Q@���c@@����zQ@��� @@���yQ@��� A@���@rQ@���@@���@Q@���@@���@Q@���A@����ʾQ@����#A@���Q@���`BA@���Q@���`A.A@���Q@���s2A@����Q@���bAA@��� Q@���GA@����Q@���HA@���!Q@���VA@���nQ@���I_A@���@Q@���qA@���Q@���zA@���`Q@��� A@���Q@���АA@��� /Q@����A@���mQ@���A@����%Q@���`A@���kQ@���A@���Q@���௽A@���IQ@���`A@���Q@��� 6A@���@Q@���`A@���ZQ@���A@����Q@���A@���Q@���� B@���Q@���B@���KQ@��� *B@���Q@���`/B@���bQ@���;B@���1Q@���(4B@����VQ@��� U5B@���Q@���>B@���R@��� rKB@����R@���~PB@���C R@��� TB@���� R@���{[B@���R@���bB@���;GR@����oB@���qR@���VsB@���@}R@���;kB@���R@��� ,iB@���*R@��� tB@���R@��� sB@���R@���zB@���@ܞR@���kB@���`R@���{B@����VR@���`cB@�����B�������T���@����cIS����=#@���������� ������@[hT���`gE@���tT��� @���@xT��� ` @���@CoT���N@����jT���`N@���QlT����@���@hT���@���@eT���@xV@���@[hT���`gE@���`ST���@"@���@T���#@���@T����w7#@���@T���@&#@��� eT��� "@��� ,T����##@���� T���|"@���•T���"@���vT���@˭"@���ݕT���Q"@���T���"@���@T����d"@���@T���Fb"@����T���r["@����T���c"@����T���:L"@���ಏT���.W"@���@T����T6"@���WT����*"@���@T���@g"@���@T���!@����bvT���!@���orT���!@���@qT����!@���yqT���'!@���@{T���J>"@���@*wT���D"@����{tT���@p="@����{tT����"@���mT���@ "@��� IdT����!@���i[T���!@���JT���W!@���@9T���P!@���3T���@!@���G)T��� "@���@"T���@C"@���~ T���d"@����uT����"@���S���@ô"@���_S��� "@���@2S���)"@����2S���@"@���S���"@���@S��� "@���@S��� "@��� S���2#@���@"S����=#@���&S���"#@���@S���P#@���@S����#@���@S���4#@��� S���@%"@���S��� "@���@S���@-"@����JS��� "@���@S����["@��� 1S���"@���@S���q"@���ewS���"@���iwS���@5"@���oS���!@�����hS���!@��� bS���B!@���bS���@h!@���\S���@XR!@���nWS����3Z!@���^S��� @���ZS���� @���WS���� @����JWS���� @���/NS����V4 @����cIS���@���@RS����@���WS����$@����TS���!@����\S���}@���dS����@���fS���2@���ajS��� @���oS���@���QpS��� @���@pS����@���nS��� 51@��� oS���2@���@sS���@���xS����0@���S���S@���S���'@���S��� = @���@ S���@����bS���@���S���@���S���@@���@S���� @���oS���2 @���>S���� @���@S���@W3 @���@ S����O @���^S���� @���S����e @���5S���� @���@ S���v @���%wS���@`k @���@uS����T @���BoS���B @���tS���Z @����8wS���@yu @���S����m @���݅S����!@���S���R @���@S���1 @���@S��� @���S���j @���@;S���@ @���S��� @����BS���{!@���@S��� @���S���B @���@S��� @���S���@% @���S���@ @���@+S��� @���ಟS����< !@���ݡS���#!@���@;S���I?!@���S���` T!@���`SS���a!@����S���@f!@���S����!@���MS����!@��� }S���@!@���pS����[!@���@S���z!@����jS���.("@���%S����*"@���S��� "@����8S����!@����S���"@���@:S���9!@���@S���}!@���S���@!@���S���8!@���@S���@•!@����S����_!@���S���C!@���@S���7/!@���S����; @��� T���a @����AT���� @���T����o @���T����) @����XT���� � @��� T���3@���T��� ~@���@T���@���nS���/@����T���@@����b T���@@���@T���@���T��� @����ZT���`$@���@T����#@����8/T���K@���@7T���@����:T���`%@����8T���Z@����<T���0@����BT����ҧ@���� @T��� M@���gET���[@���@DT���6@����JCT��� @���ET���`(\@���@MT���y@���JT��� 51@���WKT���@@���rOT���@@���_LT���@���MT��� r@��� [T���µ@��� aT���z@���e_T���`@���obT���@���@eT����<+@���fT���A@���>iT���@x@���@kT���!" @���@oT���@` @����QqT����n? @���@[|T���q\ @���ڄT���l @���@T���@g @��� T���l @���@uT��� @���T��� @���@T���@Ѩ @���T���Ƒ @���@T���{ @���@T���7 @���T��� @���@T���j @���@ T���'} @���T���t9 @���NT���@ @����cT��� @���T���j @���ݽT���@ @����T��� @����(T���� @���T���@&!@����T���}!@����T����Ǒ!@���@T���A!@���T���k!@���ŶT����w"@���`|T���"@���@ɻT����"@���һT���}"@���`ST���@"@�����������`2a@���`='���8c@���@z5 ��������� ������/���F���P������������������ �����`b@��� #���b@����#���@b@���@"���b@���"���@Nb@����"��� b@���"��� b@����m"���b@���` "���b@���e"���`b@���@8"���b@����"���`b@��� #���b@���@o#��� Sb@���@3S#���� b@���G#���b@����:#���|b@���""#����Vb@����` #���@b@���"����b@����P"���b@���@"��� |b@���l"����Vb@���"���Xb@��� #���b@����:#����b@���K#���b@���@o#���Tb@���f$���@Nb@���<$���`b@���S7$���<b@���`$���b@���"$���Hb@���@#���b@���$�$���<b@����#��� Sb@����Ĵ#���Fb@���#���b@��� l#���b@���#���`b@���#���b@���$���b@���$���Ob@���N#���`Ib@���#���`�b@���#���@b@��� $���Tb@���f$����-Rb@������Pb@���`<���@<Qb@�������Sb@�������Sb@���b����jRb@���d(����bSb@���`+����`Vb@�������Xb@������` [b@���@z5����Mjb@���`I@����]mb@���g���� emb@��� ����lb@���_����Dnb@���W����nb@���@B����`)ib@���@ϊ����gb@���@����vfb@���@���Yb@���Y���`Vb@���`����9Wb@��� ?i����-Rb@������@b@���@K~���b@��� p���@b@����a ���b@���8/����b@���`u���b@����s{��� ?b@���@���/b@������b@���/���@b@���@K~���b@����aK���}b@����Q����hb@��� .���Ob@���@s;���`b@���O��� b@���`:���Hb@���-����Mb@���@_���Bb@��� ���b@���O���=b@����z��� b@����GB���b@���@)\���b@���g���Jb@���3���`b@���@(��� b@������� b@������ b@���51���`b@��� ���b@���/���`Şb@������൦b@���@I���b@���l���yb@�������b@���H���ൺb@���z���b@���`C%���Pb@��������]b@���h����b@���@؂����b@���:���b@�������b@���'���`b@��� @H��� Qb@��� O���b@���t��� b@������b@���:���Pb@��� @H���`2b@��� ����2b@���`f���b@���`u9����b@����a ���@<b@��� ���@b@������b@�������Fb@���`1���b@��������b@���١��� nb@���=���b@������� |b@���"���]b@���]���Ob@���N���@Nb@���`!���/b@���`��� b@������b@���#���b@�������`b@���`?���`2b@���`Y����c@������ b@���`���c@���@���c@���2���c@���@���c@��� r���@wc@��� ���c@���A���`[ c@��� U���F c@��� ��� c@���~q����v c@���`!���c@���`���c@���@��� b@������`b@������&c@��� *;���`c@���t���@c@���@2���b@��� c���b@����W���b@���@*���Bb@���#��� b@���R����b@���o���`b@���$���8b@���@]���`b@���^���b@���V���@%b@������ eb@���@)\���`b@���E���!b@��� r���b@������b@���,���@b@���@t����Db@������b@���=���`b@��� ���`�b@���,���@b@���� ���b@����aK���!4c@���`='���@i/c@���/'���/c@���*'���� ,c@����l"'����h,c@��� n�'���`(c@���&����&c@���&���4c@��� '���8c@���1'���!4c@���`='����$db@���^��� Q`b@��� k���H`b@������/db@���`���gb@���`k���0gb@���`����$db@���^���b@���l���|b@���@t���xb@����(}���axb@������@%{b@��� ���@Nb@���d����b@���&���0b@���H���b@���l���c@���L]���c@���5���@<c@���t���zc@���B���c@���`u9���` c@���@ ���Yc@����N ����vc@��� ���"b@���>i ���@b@��� ���b@��� ����-b@���@K��� b@����*��� Qb@���@-���Yb@������b@���@����db@���[����2b@������]b@��� ����Db@���@؂���3b@����/7��� b@��� kb���`ob@������@ib@���8/���0b@����S ���b@���@ ��� c@����s ��� c@���[ ���c@���� ��� c@���� ���� c@���Ga ���c@���[0 ���@c@����G���`]c@��� ƒ���`c@���3����;c@������c@����p���c@���M����$$c@������/$c@���6���K!c@�������"c@���N[���c@���L]���c@����.x"����c@���@1U"��� c@���p"����c@���@Z"���c@���@K"���c@���@ "���c@���� "���c@���2!��� c@���@[!���� c@���M<"����c@���X"���`fc@���@K"���`c@���@a"���c@����.x"���2a@���@U����2a@�������2a@���@%����2a@���Qx����2a@��� ����2a@���8 ���<a@������3a@������ Qa@����_���`a@��� ���a@����ף����va@���h$��� a@���`q���a@���@< ���a@����p ���*a@���K ���`a@���` ���a@��� ���`a@���p ���Ba@���� ����_a@���@ ���X�b@���0u���`b@����/���b@����s���@b@���Xr����_b@���`���b@��� ���gb@������@b@����B����-b@���O��� b@���Vt���9b@������ %b@���U���@)b@�������`o.b@������36b@������9b@���@W���9b@������@7b@���8���`)7b@���|����d8b@������@7Eb@���`$���@@Ib@���[���Kb@���`Y���Xb@���/��� (Zb@���jb���\b@���^M���`Icb@���@L���`nb@���@"��� ub@���@���@vb@������qzb@���@QY���y{b@���`4R���{b@������ zb@������9ib@������bb@�������^b@�������<^b@���@���`2ab@����-���Abb@����U���bb@��� ���db@�������fb@���5���Bkb@����t���rb@������`tb@��� 4���/vb@���`M���`vb@���ɯ���0yb@��� ���~b@������ b@���@ ���Zb@��� ���`b@���@9!���@`b@���x6!��� b@���-X!��� ҏb@���!����zb@���"����b@���@3"���b@���&"���`fb@���"���&b@��� "���Xb@���z!���b@����"���b@���@"���Sb@���V4"���b@���@U"���b@���5q"���+b@���@""���ϥb@���@Ʋ"���`b@���@"����b@���#����b@����*#���`b@���4#���Hb@���EC#��� b@����k#���b@���#���`b@��� #����b@����A#����db@���@#���ob@���#���@@b@��� $���Eb@���@*$���b@���E$���"b@���`Ce$���`b@���$���Sb@����ɏ$���@b@���@r$���Fb@���&~$���b@��� $���@Nb@���@$���@wb@����$���`b@���`f$���b@���|$����$b@����)%���Sb@����L=%���3b@����ZQ%���@b@���@_%���@.b@���P%���b@���f%��� b@���L%���b@���`>%���`b@���`-%���`Ib@���@%��� ҽb@���%���`b@���%���`b@���$���b@���$��� b@���@$���b@��� \$����b@����7$���@rb@���$��� b@���Ȑ$����vb@���$��� b@���r{$���`b@���`$���b@����)|$���`[b@���`h$���`ob@��� 9N$���ԕb@���S7$���`b@����]$���ൌb@���f$���`)b@���`f&$���Kb@����lB$���` b@���` U$��� yb@���O$���`vb@����3$���`xvb@��� $���Spb@���#���@nb@���@z#����Dhb@���#��� eb@��� #���`2cb@����B"���+cb@���@s"���A`b@���"���K_b@����"���\b@���~"���q\b@����BF"���@E_b@����&"���_b@���@"���\b@���u9"���Rb@���@�"���tQb@���!��� (Rb@����q!���Kb@����"!���@Hb@���@̻ ���`Db@���[p ���`)Cb@���+Z ���`[Cb@���. ��� 9b@���f ���@8b@��� c��� 7b@���5���`6b@������-b@������)b@���q���@'b@��� x����%b@���@A���`$b@��� kb���&b@���G!���b@���`���@b@���d����_b@�������b@������` b@���=J���`b@���@8o���@b@��� r���`b@���G���b@������`ob@��� 4���b@���@���Hb@������� e b@���@t��� b@���`b��� Sb@��� -���] b@������` b@���`��� | b@������ 6 b@���{���� b@������� b@������@ b@���໻���b@������`[b@������sb@������`b@���-����b@������ba@���G���`a@������a@��������a@���t���a@���@����a@��� 1���`a@������ a@������a@��� ���`a@��� ���*a@����  ���a@������ a@�������a@����i���a@����Q���@a@������a@������`a@���$� ���a@���5 ����-a@����e ��� a@���@Qy ���<a@���% ���`[a@���6 ���a@����c ����ha@���� ���/a@���_ ���a@���� ���Ha@���#a ���`a@���X ���Sa@����u ��� a@���n ��� a@���_ ���ya@���g ���<a@���@j ���a@���& ���a@��� ��� (a@���� ����a@���� ���a@��� ���`a@���^ ���`a@���$`!����a@���@b!���`a@��� !���a@���"����a@���@"��� a@���"���`a@����"���Ja@���@"��� a@���k"��� a@����Ha"���`]a@���r"���a@���p"���a@���q"����ma@���I"���a@���@9N"���@a@���w"���£a@����u"����Da@���@A"���8a@���!���8a@����s ����2a@��� <���2a@����ݒ���Мa@���g���`2a@���`w���`a@���b��� Za@����K����qa@���p}���2a@���@U�����������QO���� ;���K���K3������������� N���3��� NN��� u3���M���K3���` M���Y3���M���R3���iM���3���>M���`:+4����SM����|34���M���`<4���FM���`G4���� M���C4��� M���_4���L���p4����L���4����LL���@ 4����L���@4��� L���4����L���N4����BL���D4���@L���4���L���4���L���4���`NL���W35���` L���G5���L���T5���@"L���`Ƃ5���`+L���5��� tL���5���L��� 15���`L���6���L���`l!6���`L���@c6��� L���M,6��� +L���J/6���@L���36��� L���@A76��� L��� ;6���oL���>6���@pL���H6��� jL����`L6���@cL���@6����YL���@66���QL���EC6���`@>L���)6���2L���#6���@#1L����6���L���F6���@K���L6��� K����H6��� nK��� 1e6���K���`6���K���g6���K���6����|K���Q87���`xK��� Q7��� [K���`7���@K���ј7���K���@j7���@K���m7��� ƲK���`7��� +K���8��� \wK���7���QK����7���6K���7���K����_ 8��� +*K���%8���(K���<8���@d K����T8��� #K���Pi8��� t*K���&~8���'K���8���q3K���8���:K��� 9��� 6K��� #9��� OK���$p9���`MLK���*9���JK���9��� tRK���-9���MK���`9��� TK��� +9��� QK���E3:���fK���Ѩ:����qK���:���wK����7:���yK���`C:��� K���:���`$K���:���ۗK���x:���`$K���:���K���`:����K���@;��� ٹK���`e;��� K���`*;��� tK���LM;��� CK����X;���`K���:o;���K���yU;���pL����M;���L���@O;����*#L���ge;���"L���v;���8.L��� ;���42L���� ;���9L���;���AL���v;���JL����r;���/VL���v;���\L���@;��� wbL����;���`dL���` ~;���oL���k;��� \wL���Ml;���L���'};����ųL���`l;���&L���&N;���`lM��� 1E;���#MM���`OK;���VTM���o.;���`lQM���!#;���`$HM���`;���EM��� ;���>AM���;���@<M���:����(M���:���+M��� [:���M���`:��� M���T:���M���`:���M���ј:���`M��� b:��� M���~:���M���@m:���M���`W:��� M���E:���g M����=:���M��� 8:���@LL���`9���`NL����9���`�L���w9���`$L��� 9���@L����9���`eL���n9���L���`9���`<L���{T9��� nL���x9���L����9��� CM����78���@E+M��� \8���:M���=8���WM���@8����ZqM���8���`ѐM���P8����M���e8���M���PI8��� M���]?8��� N���}8���N��� 8���`(N��� 18����RN���`C7���N���@]7���N��� 7���ÜN���&7��� \N���,I7���N����6���@�O����66���b!O����6���`fO���#6��� !O����ք6����dPO����M6���OO����?6���QO���<6���,!O���@5���`}"O���@4��� N���{4��� N���3����� ������@VT���Y2�����,Q���@33������������WQ���9/���[Q���`r</����MQ��� (0���IQ���70����sFQ���@.70��� >Q���50���\=Q����+70���:Q���8>0����G8Q���@OE0���@Z5Q���pM0����4Q���Y0���i?Q���rk0���AQ���v0���fBQ���F0����kBQ��� b0����)@Q���� 0��� FQ���� 0���@JQ���v0���UQ��� 0���OZQ���`C1���XQ��� 1���@gQ���/1���iQ���,I1���eQ���K1��� `Q���`1���_Q����Z1���@kQ����1����)tQ���1���@KvQ���w1��� :qQ���`k1���uQ���@ 2���`}Q���`A2���iQ��� 2T2����ЙQ���Y2���yQ��� 12���Q���~1���`Q���@1���`Q��� i1����Q���@1���Q���Ƞ1���Q����0f1���@Q���� F1���@Q���01����r�R��� 1��� R���`C0���WR���"0���5!R���0���@.R���0���@KR����h0���@2PR���i0���TR���@U0����JcR���@0���@mR����=;0���@dxR���0���@R���/����R��� /���R����q/���@R���//���R���(.����R���.���R��� h.���fR����Tv.��� R���P.���R����=K.���FR��� n .���R���@^-���VR���-���R���@P-����8R��� \,���@ S��� ?,���iS���O,���@ S��� Y,���@S���X,���WS���@4,���S���$ ,���NS���`+���@S���4+���@LS���@G+����S���(+���`SS����+���vS���வ+���` S����C+���Q S���@*���@S���*���!S����})����8'S���)���@L)S���l)��� 3S���(���E3S��� (���@;S���ք(���@:AS���@s(���@DS���@4(���EKS��� E$(���>IS���@'����KS��� '���FRS����T'���@iS���`&���@jS��� ~&���hS���n&���gS����)\&���@kS���%����{S���� %���@S���Q8$���`S���@$!$���@S���#���`S����Õ#���?S���+:#���yS���K"���S���g"���S���2t"���S���uY"���@S���@Y"���@S���Sw"��� S���}R"���S���eG"���@CS���1"���yS���m "��� }S����!���`S���!��� S���@a!���gS���;,!���@S���� ���@S���`k ���@S��� ���@S���]. ���S�������-S���$`����S������S���T���S���ww����rS��������S�������T�������.T������KT���@e���6LT���`���@ET����z5���>T���`*{����J;T��� h���8T���)���7T�������;T������pMT��� h���@JT���`lA���XFT���@���GT�������@VT����P���iST����z5���TT��� k���@PT��� h���� LT���`\���>T���พ���7T���\��� 4T���` ���O&T��� ���!T����a ��� T��� ����T��� ���?T���@] ����ZT���D ���@ T���D ���T���@ ���@ T���`+���?T���^ ���T���@���aT���e���T���w���@T���E���yT����;���T����Q����T���`l��� :T���d���]T���@ ���S�������S��� ƒ���S���=��� S���@���`S��� *��� S���`!���@2S����BF���S���t���S�������*S���@j��� S���m`���źS������iS���a���ŪS���@<���@S���%���S���D���FS����z5����S���^M���™S���e���@S���`a ����9S���C ����S���g ���@dS���" ���&S���  ���S��� |s ���`ЍS��� ���`yS����/7���US���u���@T*S��� ��� : S���x���@R���t����R���e���@R���`M<���R���gE����R������ R������R���@߼����JR����ݿ���@R��� jͿ���R���`ƿ����2R��� ���@ R����mÿ���AR���~��� R���@����R���@33���@R����?飿����R����Ϳ���XR���@Ϋɿ���ŮR��� ѿ��� :R���ૉ׿��� }R���/ֿ���ڨR���Aڿ���R����ؿ����R���-���@ɓR��������JR����K~����R���z���ʒR�������*R���^M���R���-���PR������` |R����ų����kvR���`���vR���<+���@[pR�������JoR���Y���cR������@aR������\R���@ϊ����{`R����,���SR��������LR���@Q���@ER���[��� CR���m ���@ER������HR���X����QER������OBR������@uAR���`���q<R���@*���9R���@B���3R��� ���/R���y���-R������Q,R���@B����Z)R��� ���@"&R��� !C���@R���@y����R���x���^ R���@ ���^ R�������QR���@B����R�������@R���`���@�R�������Q���W���Q���@ W����Q����2����|Q���`���Q������yQ������Q����/7���Q������Q���!����JQ�������@Q���l���@Q��� f���@+Q������@Q���o^����bQ���@]���@Q���@Q����Q���`1���WQ���u����Q���>i���@Q���`��� Q�������3Q���@���@Q���`q���Q���m����*Q���`j���� Q���v���@Q���I���.Q������@]Q���<���Q���s����Q������͗Q����N���Q������|Q��������9~Q���@T6����BQ���-X���Q������Q��� ���@ Q��� L����ZQ����M���Q��� ���Q���ӆ���àQ���,���Q���ʎ���@uQ������ Q���@v����Q��� uy���ͫQ��� Y���Q���x���pQ���H���@mQ���_,����BQ���@����JQ���`]���HQ���v���Q���]n����Q���`C���Q���#����Q���ш���@Q�������Q���p���@Q���`c ����2Q���`C���Q���@���R��� ����R���` ����kR���ੋ��� "R�������(R���@<���r/R���`4���:R������9R��� {���:R���=J����<R����A���@NR��� .���MR������JR�������GR���`���HLR��� 6���OR���E���[R���?���MpR���z���@KsR��� x���@mR���@#���mR����F���yR���@�����B~R���"b���|R�������R���@#���@UuR��� ���ymR���@��� VlR���@<����mR���p}����rR���|���@qR���@2���iR����@ ��� "bR���` ��� VR��� ���@ SR���^M!���@JR���k!���=R���w!����<R���*"���o>R����8O"���@#MR���"����%R����@"��� nR���@S"���@R���\#����ZR���@K~#��� R����P#���@ R���#��� R���$����Q��� $���`%Q���&#��� Q���@m#���^Q���/#���gQ����I"���@+Q���@d"����rQ���##���/Q���@T6#���aQ���a#��� Q���^#����2Q���@Ϫ#���QQ���%���qQ��� &���Q����L%��� :Q��� +&���>Q��� &���Q���%���w{Q���2%���PdQ����%���@IQ���`C'���U1Q��� (�����,Q���` )���1Q���M<)���.Q���V)���w3Q���@u)���q8Q���@)���a>Q���O)����=Q����w*���@@Q���D+���EQ���@I+���yEQ���QY+���>Q���,+���@>Q����`+���7Q���Q8,����6Q���e,��� ?Q���@u,����r@Q���Ϊ,���>Q����),���IQ��� %-���@"NQ���#-��� OQ���;-���WOQ���Ws-���`%WQ����T-���@XQ���-���QQ���`8.����HQ���Ws.���HQ����l.���FRQ���.���@QQ���`.��� TQ���`r.���WQ���9/�����������`)K]@����4@���E_@���¥2@��������� ���)���=���K���^���g���"��Z������������!��5��<��F��U��\��m���������&]@����4@���?]@���@ӆ@���& ^@���d@��� l^@��� @���^@���@F@���` ^@����@���`^@����<@���+^@���@@���-�^@���*@���`]@���Y@���&]@����4@���@i^@���"@����^@���&"@���@E^@���@"@��� 1^@���"@����v^@���@k#@���^@���#@���@^@���X#@���̴^@����L$@���@i^@��� $@���`^@���%@���@{^@���%@���@@^@���fE%@����^@���p%@���^@��� %@���^@��� %@���B^@����%@���^@���%@���`T^@��� 1%@���@^@���`$@���^@���Oz$@���`v^@���l#@���=^@���F#@��� ^@���N#@���@^@���l@#@���`+^@���3#@���^@���@#@���^@����"@��� ^@���"@���5^@���@X2"@���@i^@���"@��� ^@���{"@��� l^@���@7#@���^@���$@���Y^@���@$@���G^@����$@���^@���+%@��� ^@���`%@��� ^@���@/&@���_@���&@��� _@���&@���`^@���`,&@���`_@����&@���a_@���$@���`^@���=$@���^@����TV$@��� !^@���@d($@���T^@���@*$@����^@���Y#@���`^@����U"@��� ^@���{"@���`_g_@���#@���d_@���A#@��� g_@���#@���d_@���3$@����c_@���#$@����;`_@���`l!$@��� `_@���zT$@���@`_@����i$@���i_@����$@��� k_@����ô$@���i_@���n$@���@k_@���@#@���-l_@���#@���`_g_@���#@���`d^@����EC#@���J^@���Ʊ#@���_@���@#@���^ _@���J$@����v_@���ZP$@���._@����.$@��� _@���``K$@���f_@���`# $@���!_@����q$@���#_@���#@���`"_@���P#@���%_@���W#@���!_@���[#@���`x&_@���@#@���T%_@���y#@���@_@����k#@���`d_@���@#@����$_@���@*#@���`d^@����EC#@��� ^@���$@���^@����$@���5^@��� +%@���3^@��� %%@��� ^@���w%@���@^@��� a%@���Ǭ^@���`R%@���`v^@���`$@��� ^@���$@���^@����@���O^@���b) @���`^@���Q @����^@���'= @���Q^@����,9 @���`^@���9M @���@Ϳ^@���r @���@^@��� @���^@���� @���@^@��� !@���`R^@���@WS!@���^@����g!@���@^@���@n!@��� ^@���41!@���`^@���@>I!@��� ^@����I!@��� Z^@���1 @���`R^@���@6P @���n^@��� @���@^@����@���^@���W @���@ _@���H` @���@@_@���z @���@_@���@ !@���_@���?!@���`+_@��� @�����0_@���!@���`;/_@����c!@���1_@���o!@���1_@���@ !@��� l8_@���c"@���.>_@���!@����D_@����!@���`G_@���!@��� K_@���@!@��� K_@����"@���M_@���@-"@���`R_@���*!@���a_@�����"@���`fb_@���@-"@���Y_@����L#@����d\_@���ԥ#@���@d_@���#@��� !g_@����B#@���`s_@���'#@���=}_@���@G"@���}y_@���"@���`z_@���"@���@i_@���@"@��� _@��� "@����$_@���@-x"@���@@_@���'"@���_@���@"@���_@���@1"@���&_@���>)"@���._@���"@����_@���j!@����Ô_@���!@����_@���c!@���_@���@?!@��� _@����(!@���ω_@��� !@���`d_@���1!@���5_@���� @���_@���4 @���z_@���P @���_@���  @���_@��� @���@͓_@���:l @���ೝ_@���x @���=_@����^- @���@3_@���`@�����_@���y@��� 8_@���@h@���E_@���@���ע_@����@���_@��� @���n_@���K]@����_@����3@����Ք_@��� M@���_@���ϩ@���!_@����i@���`+_@���Z0@���`_@���`:@���̐_@���`ij@��� _@����e@���@W_@���z@���_@��� �@���_@����@����_@���`(@���_@���D@����_@���@_@���@@_@���`@���y_@���k@���v_@���f@����s_@��� r@���i_@���@X@���`+j_@���w@���f_@��� ,@���@b_@��� :-@���`)__@���`@���sZ_@���@F@��� 1X_@���@���X_@���e@��� l\_@���`O@���a_@��� 6@���!j_@���`A@���xm_@���7o@����;h_@���`z@��� ^_@��� D@���.Z_@���iC@��� lT_@��� C@���`fR_@���|R@���@S_@���@?@���M_@���@@���J_@���-@���`O_@���@���ER_@���@���OQ_@���@xV@���`N_@��� Ga@���I_@����g@���E_@����}@���=_@����g@���@*_@���@��� _@���@����K_@���@���`d_@���|@���._@���@���`v^@���@-@���^@���`gE@���_@���7o@��� _@���@��� _@���j@����q_@���`d@��� _@���ء@����_@���@@���_@���"@���^@���@��� s^@���@����)^@����n?@���^@���@hd@���@^@����n?@���^@���@���`^@��� ]@���`T^@���K@���k^@���);@���8^@���@F@���^@���l@���^@���@���@^@���$@��� J^@����@���`^@���# @����v^@���J@��� l^@��� V@���@^@���@���^@���`%?@���f^@���c(@���^@���@���J^@���&@��� ^@���@����;^@���K@���@^@���`%@��� ^@���`@����ܳ^@���~P@���^@����e@��� ^@���@-@���O^@���@��� Z^@���)@��� ^@���R@��� Z^@���/V@���^@����$@���&^@���@@���^@���@@���=^@���[@���=^@���L<@��� ^@���W@����Ì^@����^ @���^@����@���`ʂ^@���@@���|^@��� @���ay^@���9m@���O~^@��� @��� ^@���`>)@���$^@���A@����d^@����^@��� ^@���`/@���^@����@���@n_@���@ &@���@j_@���hD&@���d_@���`/6&@����d_@��� bJ&@���^a_@���@dH&@���`_@���'&@��� \_@���4&@��� W_@���2&@���Q_@��� D&@��� JO_@����(&@��� K_@����Fb&@���&J_@���=&@���@>_@����ɏ&@���O>_@���j&@���5_@���&@���6_@���1'@��� \?_@���`8'@���8A_@��� p'@���`B_@���~'@���@_@���'@����K9_@���n~'@���@3_@���'@���`)/_@���'@���z,_@��� '@���G-_@���A(@���_@���`B(@���_@���(@��� _@����L)@���Y_@��� &)@����'_@���)@����7_@����)@���8_@���)@���OE_@���))@���N_@��� )@���QT_@����@(@���`R_@���`(@��� T_@���`R(@���YU_@���(@���Q\_@����(@����`_@���@\(@����\_@���A(@����\_@��� V4(@���a_@���(@��� [_@����'@���@^_@���'@����)\_@���r{'@���^_@���m'@���\^_@����'@���!f_@���d&@���h_@����&@���`+b_@���hd&@���`g_@���I_&@���Ef_@���Tu&@����)l_@���`L&@����p_@��� &@���@n_@���@ &@���z@_@���\$@���0_@���`M$@���2_@���`$@���._@���$@���1_@���`D%@��� !3_@���r%@���@,_@���`L%@���J&_@����&@���`"_@���Q%@���J"_@����@%@���`__@���%@���?_@��� s%@���_@��� &@���_@����F&@���`k_@����` '@���?_@����F"'@���J_@���@&@���s_@��� &@���!_@��� %&@��� \#_@���&@���(_@���`/&@���2_@���x&@����8_@���&@���>_@���@&@���=>_@���&@���B_@���bi&@���A_@���`F&@���`B_@���%@��� @_@��� H%@���F_@���@dh%@���?L_@����$@���=M_@���$@���OQ_@���$@����P_@���$@���M_@���@J~$@���=I_@���$@����dH_@���{$@����H_@���V$@���E_@���l$@��� @_@���j$@���@>_@���@!$@����A_@���-7$@���B_@����T$@���z@_@���\$@���-_@����n'@���`^@���'@���`}^@���'@���^@���l(@����^@���'@���8^@���n'@���D^@���@X(@���^@���=(@���`}^@���j(@���`^@���v(@���^@���(@���@^@���(@���`^@���S7)@���G^@���")@���\^@���Q(@���^@���I(@��� 1^@���)@���^@���)@���^@���@X(@���^@����#(@���^@��� Vt(@���^@����x(@���^@����T6(@���#_@���Qx'@���-_@����n'@����K]@���&@����]@����3&@���?]@���&@���`]@���&@��� Z]@����q\&@���]@����&@����]@���d&@���@]@����&@��� ]@���&@��� ]@���@!B&@����)]@����&@��� ]@���`&@���`d]@���`%@���]@���d%@���]@����%@���`x]@���%@���]@��� VT%@���z]@���9M%@����]@���%@��� Z]@���$@����_]@���@$@���]@���`ݽ$@���@]@���࣐$@����]@���`$@���]@���#@����]@���@#@���D]@���@O#@��� l]@���!#@���]@���Rw#@��� n]@���@ t#@���`]@���@#@����q]@����o#@���൰]@����]#@���`)]@���@"@���@]@���@6"@���]@����Z"@���D]@���L"@���@ ]@��� !@���`s]@����M|!@���m]@���)[!@��� c]@����V!@��� _]@����$�!@���`�W]@��� @���L]@��� @���`)K]@���޼ @���!V]@���m!@��� g]@���H�"@���j]@���'"@���`o]@���$"@���}u]@���ch"@���n~]@���"@���]@���`o~"@��� l]@����(#@����)]@���q#@����ף]@����e#@���`]@���#@��� ]@��� $@���`R]@���@$$@���ײ]@���` $@���]@���`3$@���@]@���` U$@����]@���$@���&]@����$@���$]@����$@���`]@���`5$@���z]@���`l$@��� ]@���$@���]@���$@����]@���C$@���@]@��� 1$@���]@���h%@���]@���@k%@����]@���%@���T]@����%@���]@���`%@���`]@���`%@���]@����F%@����]@��� r%@���f]@���t%@���@]@��� %@���Y]@���%@���@]@���G%@���@]@���`%@���`d]@���`&@��� ]@���&@����K]@���&@���}^@���`j@���@Ew^@���e&@���nv^@����UU@���`r^@���@_@���zt^@���@@���.~^@���`@���@^@��� @����^@���i@���@^@����@����^@���`@���0^@���ׂ@���^@��� @���-^@���`(@���}^@���`j@���Q^@���ty@���hL^@���@���E^@���@���A^@���@��� l8^@��� @���@7^@���@���$;^@���`@���I^@���M@���M^@���@����X^@���� @���`_[^@���`>@����X^@��� o@���TU^@���@-@���Q^@���ty@���&^@����70(@���}^@���Q(@���}^@��� w(@���`)^@���_(@���^@���Tu(@���@ {^@���W(@���?|^@���=(@���-^@���@j(@����^@����}2)@���@W^@���^)@���`T^@���U)@���`T^@���`fF)@����^@���`f&)@���@^@���7o(@����^@���@'](@���&^@����70(@���`R^@��� '@���` ^@���`(@���`v^@���`L'@��� s^@���� (@��� ^@���`'@����]@���b)(@���]@���@i(@���$]@���@U(@��� ]@����(@����]@���Ϊ(@����]@���@(@��� ]@���ੋ(@���-�^@����(@���^@����U(@���Q ^@���@:(@��� ^@����wW(@���p^@���`-(@���`^@���  (@���^@���@j(@���`R^@��� '@���^@���@f*@���}^@��� Vt*@����t^@��� 1*@���@w^@��� +@���J^@����+@���Y^@���@*@���^@���@f*@���^@���d(@���^@���(@���^@���@(@���ܡ^@���(@��� ^@����(@��� ^@���(@����O^@��� (@���ʩ^@���@(@���T^@��� (@���^@���d(@���|^@���"B-@���`z^@���`fF-@��� z^@���n-@��� |^@���@k-@���0u^@����-@����;t^@���x-@���w^@���`.@���y^@���.@���`^@���@ .@���@^@���Z-@���^@��� s-@��� ~^@����)-@���a^@���I-@���^@���9m-@���|^@���"B-@���B_@���&@���_@���\'@���@_@���j'@���"_@���@\'@���`'_@��� '@���&_@���`&@���B_@���&@���O _@���+@���z_@���`'+@��� 8_@���2+@���_@��� T+@���_@���r+@���@U_@��� ,@��� _@����/,@���`}_@����+@���\_@���`+@���_@���+@���&_@���@͋+@���`x_@���zT+@���`}_@���K+@���&_@���`,+@���`_@���`0+@���_@��� '+@���O _@���+@����$^@���*@���@^@��� +@����0^@���`*@���:^@���+@���>^@���`*@���M^@���*@���T^@��� ١*@��� [^@���`/v*@���\^@����I*@���Jb^@���`fF*@���@c^@���-*@���@W_^@���*@���@^^@����׃)@���`kb^@���fe)@���@c^@���2)@���\^@��� )@���@Z^@��� (@����X^@���U(@����KY^@����Z(@���U^@���@(@���@O^@���j(@���`RG^@���@(@���$G^@���(@����D^@���(@���@;^@����)@���?<^@���@%)@��� Z8^@����q\)@���`R3^@��� q)@���a2^@���@^)@���a2^@���d)@���z0^@��� *@���8)^@���b*@���!^@���@Xr*@���^@����*@��� n^@���*@����v^@���n*@��� ^@���*@����$^@���*@���`+~^@���`$@���@z^@��� $@���`k~^@���J%@����K}^@���`s%@���`�{^@���@%@���^@����L=&@���@^@���&@���a^@���&@���`T^@���`ff'@���^@���`z'@���sv^@���'@���5}^@���'@���@^@��� '@���-^@���z'@���@^@���""'@���@ȣ^@����$'@���^@���`'@���#^@���@'@���s^@��� 2'@���+^@���7'@���^@���&@��� 6^@���&@���`^@���d&@���^@����3'@���^@���'@���^@����ɯ&@���`^@���+y&@����;^@���@PY&@���h^@��� +Z&@���^@���Z&@���^@���z&@���^@���&@���`)^@��� %@���ް^@���%@����ׯ^@���@-%@���`^@���@;%@���Y^@���a%@���^@���fE%@���8^@���` $@���`+~^@���`$@��� l�^@���00@���`T^@���%0@���@^@���@X0@��� ^@���> 0@���a^@��� ~0@���`R^@���@(,0@��� ^@���0@��� J^@���t0@���^@����$0@���^@���C0@����^@���0@��� ^@���*1@���@W^@���K1@����)^@���y1@���.^@���J1@���`^@��� 1@����)^@���1@���.^@���1@���^@��� \1@���`k^@���1@��� ^@���@]2@����$^@����SG2@���s&^@���@T2@��� l$^@���@|2@��� (^@���@2@���@.^@���2@���2^@���@ۏ2@���1^@����2@���`6^@���¥2@���:^@���2@���@^@���`2@���uE^@���2@��� 8K^@��� 2@����g^@����M\2@���h^@���Z02@��� k^@���J2@���h^@��� \2@���|^@���`D2@���`k^@���\2@���&^@���2@���@^@���h2@���@^@���g2@����K^@���` E2@���@^@����2@���@^@����2@���`ʊ^@����1@���`^@���1@���5^@���``[1@����)^@���@Z1@��� !^@����SG1@���@^@��� !1@���@^@��� 1@���!^@���t1@���@^@���0@���`T^@���0@�����^@���`K0@���^@���G0@���#^@���; 0@��� 1^@���J0@���`^@���O*0@���Lj^@��� A0@���^@��� &>0@��� u^@���0@����qd^@���@/@���`c^@���@/@���d^@���ׂ/@���h^@���@/@���Dd^@��� 1/@���=^^@����.@���}Y^@���`l.@����X^@���G.@��� [^@���j.@���`;_^@���X.@���e^@���-@���n^@���`I`-@���@g^@���3R-@���@ g^@����=-@���@3o^@��� ,@���@n^@����wW,@���Gq^@���I?,@���@3{^@���@�,@���`^@���@+@���`^@���+@��� H^@���+@���D^@����+@��� \^@���+@����^@���,@���D^@���W3,@����^@���~Q,@���a^@����L},@���#^@����#A,@���.^@���:,@��� ^@��� 9,@���@^@���b,@���^@���l,@���D^@���Z,@���`^@���@;,@���`^@����L,@���`^@���`3,@���`)^@���,@���^@���+@���`)^@���+@����)^@����n+@���@{^@��� ˍ+@���^@���+@���^@���@+@���B^@����+@���`^@��� %+@��� ^@���@%,@���^@���!,@����^@���  ,@���@^@���+@��� ^@���t+@���^@��� +@��� !^@���@!+@���^@���@-+@��� ^@���@+@���^@���+@���.^@���j+@��� ^@���x+@��� ^@���@`+@���`}^@����}r+@���^@��� k+@��� ^@���&+@��� ^@��� h*@���z^@���*@����^@���@`*@����^@���`l!*@���`;^@���*@���`^@���AF*@��� ^@���@0*@���B_@��� *@����_@��� $*@���@ _@����$*@��� l _@���@ *@����_@����)@���& _@���`)@���_@����T)@�����_@���@3)@���?^@���Z0)@���`^@����b)@���`^@���߻)@���@.^@���&)@���_@���)@���`_@���v)@���_@���)@���B^@���@)@�����^@���`))@���^@���`)@��� 1^@���߻)@��� ^@���` )@���^@���@')@���^@���*@���^@���h*@���`^@���`R7*@���^@���c*@���^@���7*@���`k^@���O:+@���@E^@���J+@��� \^@���I_+@���ʱ^@���+@����^@���`+@���@^@���+@���J^@���`r+@���`_^@����F+@���^@��� N{+@��� J^@���Ws+@���-^@���J+@���^@���@*@���^@���v*@���@^@���`S*@���^@���{*@��� ҟ^@���@*@���Y^@���@)+@���T^@���14+@���^@���+@���@~^@����)+@���`{^@���+@���p^@����`+@���l^@���`+@����m^@���`R+@���?`^@���|+@����d\^@���z+@���z\^@���e+@��� \^@��� R+@���M^@���l@+@���`B^@���B+@���`�C^@���`+@��� ?^@��� +@��� 8^@���@3s+@���`_;^@���+@���`:^@��� +@���0^@���+@���-^@���@+@���,^@���=+@���a.^@���+@���8*^@���@P+@����O+^@��� +@����(^@����/+@���@&^@���Y,@���`&^@����s,@���)^@���,@���&1^@���`,@���9^@����Z,@���`:^@���?,@���`>^@���`,@��� n?^@���+-@���5^@����-@���)^@���@-@����O#^@���d-@���@.'^@���@�-@���a%^@���G,@���`^@���`5,@���^@���n,@���@^@����FB-@����K^@���V-@���?^@��� v-@���^@���`R-@��� ^@���۾-@���W ^@����{-@���^@���@-@����^@���@.@���]@���.@���]@��� B/@���]@���=/@����]@��� +Z/@���]@���&/@���s]@���/@���`;]@���/@�����]@����@/@���]@���T/@����]@���0@���3]@��� [P0@����]@����p]0@��� s]@���`b0@���]@���o>0@��� l�^@���00@������������CD,@��� ЀH@��� %8@���`kK@�������������f3@���;K@����3@��� 9K@����3@���@5K@���C4@���`.K@���sZ5@���`*K@��� 6@���*K@���6@��� .K@���e6@���.K@���@6@���L4K@������7@���1K@���7@���m'K@���`W7@��� %K@���@|7@���K@���@7@���K@����y7@���dJ@���7@���<J@���g7@���uJ@����v7@���J@���@7@��� J@���[7@���@qJ@���7@���`)[J@����F7@����VJ@���H7@���JJ@���@Xb7@���`@J@���;+7@��� $J@����67@���J@���;K7@���`J@���`_|7@���J@��� ,7@���J@���7@��� UJ@���7@���I@���Z7@��� I@���ˍ7@����wI@����7@���I@���7@���I@���߫7@���@I@��� ١7@���dI@���@ۿ7@����I@���7@���xI@��� %8@���@mI@���k!8@���jI@����7@���ajI@���h7@���@dI@���8@��� PI@���@!8@���EI@���`7@��� 4I@���`07@���0I@��� ~7@���`'I@���`H7@���j I@���6@���H@���J6@���`GH@��� 6@���H@���6@���@H@���6@���@(H@���D6@��� 0H@���@X6@���`܎H@���6@��� ЀH@���` 6@��� NH@���6@���H@���6@���਋H@��� َ6@���`*H@����y6@����H@���6@���H@����5@��� H@���ޜ5@���`H@���@W5@���KH@���dG5@���sH@���25@����H@���`6 5@���@H@��� 5@���߳H@���5@���H@��� ,4@���H@���4@���@pH@���`54@���ZH@���@p4@����_H@���@.4@���H@���t4@��� 0H@��� 4@���H@���`�4@���\H@���3@���`H@���``3@���"H@���3@���DH@���`3@���@H@���@3@���`ijH@���3@��� rH@���3@���@H@���@ԕ3@���H@���y3@��� yH@���c3@���@H@��� V3@���`H@���F3@���H@���j23@����H@���@#3@���{H@���`2@���`H@���2@���H@���@2@����H@���s2@���FH@����2@���� H@���@2@���@zH@���2@���`H@����}r2@����H@���)2@���H@����S2@���I@��� 2@���I@��� 2@���`YI@���E1@���H@����1@���I@�����1@���@ I@����$1@���@PI@���1@���CI@���21@��� OI@���1@���`'I@���31@����5)I@���a1@���`)#I@���OZ1@��� `#I@���Z1@���`G)I@���7?1@���`+I@���@1@���J6I@���0@���>8I@���0@���4I@���@.1@���� I@����F0@���`I@���@0@���@ I@���@.0@���I@���gu0@���`&I@���50@����5I@���O0@���`@I@���e0@���jBI@��� r0@���II@���Y0@���1TI@���<0@���@UI@���`80@���}QI@�����0@���@@OI@����}0@���`MI@���/@����WI@����w/@����wWI@���/@���UI@��� /@���_I@����q.@���dI@���.@���`mI@���@.@���uI@���.@���@(|I@���vX.@���jI@��� +.@���I@��� N-@���`I@��� .@���zI@����.@���`�oI@����_-@��� nI@���W-@���I@���@{.@��� OI@���@X-@���@ԽI@��� \o-@���I@����׃-@���gI@���14-@����$I@���r;-@���KI@���n-@���uI@���~-@��� 7J@���`-@���@ J@���b-@��� g J@���9m-@���J@����F"-@���@)J@��� -@���2J@���?H-@���`HJ@��� +-@���uPJ@����׃,@���`0eJ@���CD,@���@jJ@��� VT,@���|J@���7,@���@…J@���,@���!J@���`5,@����J@���`,@���@J@��� H,@��� &J@���,@���J@���`>,@���`J@���l�-@���J@���0-@���J@���,9-@���`NJ@���-@����J@���@'=-@���J@���"B-@��� J@���,-@���@J@���`-@����J@���t,@��� J@���,@���)J@���,@����$J@��� 1,@��� J@���,@���J@���Qo,@���@0J@���h,@���gJ@���s,@���J@���`5,@���@pJ@���n-@���J@���@d-@���K@����.@���`K@���@A/@���K@���0@���j"K@���0@���@? K@���`_,0@���`"K@����)<0@���(K@��� 1U0@��� ,K@���hT0@��� 2K@���0@��� CK@����M0@���LK@���E1@���VK@���%o1@���Z`K@���1@��� hK@���U2@���`kK@���Bu2@���dK@���@2@���@QK@���`2@���VK@���`n2@��� dK@���g2@��� ^K@���{2@��� PK@��� U2@���*RK@���ԕ2@����w7K@����Ѹ2@���@-0K@���3@���@+K@��� pp3@���2K@���@ݟ3@��� ;K@���`3@����L<K@���f3@���;K@�����������<���@Q@@���`���{E@���������� ���������'������`b9���)B@���`9���lB@���p9���B@��� 9���{B@���9���B@���K9��� B@����ד9����B@���R9���B@���h$9���B@���!9��� B@���)9���`B@���`b9���)B@���o<���s2C@��� ak<���4C@���<���9C@���<���{CC@����~<����GC@���Ga<���JFC@���@ <���5C@���o<���s2C@����T;����PC@����N;���:TC@���Ga;���`\C@���'];���dC@���F;���`fC@���@;���aC@���g;����vXC@����T;����PC@���0���@Q@@���`41��� f^@@���GA1���`6h@@��� 8/1���`o@@���O1���bi@@��� 80���`Gi@@����T0��� k@@���`0����^e@@���`0���@#a@@����Y0���|R@@���0���@Q@@���@!���D@���@>!���`E@���g ���{E@���%_ ��� HE@���. ����E@���a* ���;E@���@p ���D@���H ���@D@������D@�������D@���`���`/D@������'D@������`D@����]���`D@���r���D@��� ���D@��� ���D@���y���`D@���^���D@���`��� D@���Y���=D@���<���D@��� !���uD@���S���`D@���.��� D@����BF��� D@�������D@���H@���dD@����d(���D@������(D@���_l���D@���`���D@���@���`D@����ZQ���@'D@����BF��� D@��� M���`GD@���`d���@@D@�������D@���<���`0D@������D@��� ����|D@���`2���`mD@����ZQ���``D@���0���1TD@���N[���@ID@����*��� OBD@���`d���`8D@���`f&��� +D@������D@����B��� D@������`D@���`t���@D@������ fC@������ C@����""���C@������ C@���,���߻C@���@#A��� C@������ `C@���`���DC@��� \���`/C@����ޝ���C@���v��� UC@���)���C@���-���@@C@���@���rC@������'eC@������@ZC@��� D+���` IC@���V4���2CC@���Q���=9C@���p:����z6C@������"C@���Y���SC@������C@������`C@������C@��� ���`�C@��� ��� fB@���0���B@������bB@���3����1B@���`���`B@��� ���`B@��� @+���B@���h���B@���N{ ��� B@���!���`0B@���n?!���@ۏB@����!���mB@���@:!���`B@���@!��� UB@����!���ެB@����!���`B@����!���B@����R!���B@���@!���jB@���@!���)C@���n!���@1C@����!���`8C@���@Sw!���9C@���o~!���8FC@���!���` =C@����!���@=C@���@f"���`q4C@���@p"���`05C@���@["���@C@���@p"����OC@���ʎ"���UC@���%?"���1TC@���"����MTC@����8!���tYC@���."���lXC@���@+"���i[C@���!���`aC@���!���`vC@����A'"����jC@���O:"���[C@���"���VC@����"���@YC@���p"���`dC@���@2"���xC@���@"���C@���"��� C@����Q"���C@����"���cC@���o^"���C@���u"���ZC@����B&"����C@���!���)D@���@!���QD@���!���QD@���@x!���{SD@���` v!���2[D@���@J!���D@����e!���ID@����0!���KD@���@u!���`D@���@!���`D@���@"!���D@���@!���D@������������@P���1@��� hP���2@�������������@P���1@���P���@ 1@���P���`1@��� P���`_1@����ZP���@ 32@���@P����$`2@���NP��� xf2@���eP����y2@���@P���2@���੣P���@{2@���ÈP��� z2@����P���;k2@����P��� n2@���iP���v2@���vP��� p2@��� hP���b2@���UiP���42@��� pP���t)2@���`\{P���@d1@����8P���1@���yP����1@���P���1@���ǝP���1@����ְP��� 1@���@P���1@�����������Q`I@��� ;8@���JI@���':@���-����������ছI@���x8@���@I@��� ;8@���@|I@���8@��� iI@����8@���@mI@���H8@���eI@����8@���Q`I@���`6p9@���`qdI@����9@����egI@���`}9@���lI@���@v9@���@XjI@���9@���8fI@���`ݝ9@���`oI@���9@��� fnI@���9@��� rI@���@ӆ9@���|I@���` 9@���sI@����ף9@���qI@���9@��� xI@���`_9@���|I@���p9@���byI@���;9@���@pI@��� :@��� I@���':@���@I@��� O:@���@I@���s :@���ԵI@���@49@����I@��� 9@���`YI@���9@����<I@���9@����eI@����}9@���I@����9@���I@���`*9@���I@���l9@���@I@���9@���I@���9@���I@���p9@���I@���rK9@���I@���D9@���JI@���9@��� I@���8@���`I@���8@���sI@���`8@���`_I@��� آ8@��� UI@���g8@���ছI@���x8@������������UK@���_5����K@���`4��� ���������� xK@���_5����<K@���B5���UK@���5���K@��� ?4��� UK@���@d4���`K@���`4���`NK@���"4���K@���`4����K@���4����K@���"5���tK@���!S5���K@���Y5��� xK@���_5�����@������ B4@��� E@����|=@���l H@�������������@P:@����H@���`:@���H@���`0:@���l H@����:@���3H@����$�;@���H@���*;@���G@���@=;@���`G@���J;@���G@���jR;@���!G@���dw;@��� G@���>x;@��� G@��� V;@���3G@����};@���G@���;@���G@���;@���ਃG@���@4<@���`~G@���6<@���`WG@��� I?<@���`MG@���@5<@���Q@G@��� @<@���>8G@���`"<@���G@���<@��� ~G@���`5!<@��� F@���<@��� F@���@P)<@���F@���@<@���F@���=*<@����MF@���F6<@���^F@���F<@����wF@���Q<@���2F@��� <@���F@���@<@��� ̜F@���<@���nF@���<@���@F@����<@���F@����#=@���F@���lP=@���F@���@ۏ=@���F@���=@���լF@���=@���̤F@���i=@��� F@���@=@���DF@���e=@���F@����|=@���UF@���=@���@oF@���`_=@���lF@��� V$=@���cF@���<@���QXF@���<<@����w_F@���@4"=@���BeF@��� V$=@���3jF@���@=@��� jF@��� =@���:lF@���s =@���SvF@���=@���`_|F@���@ =@����vF@���<@���`{F@���<@���9uF@���@ <@��� iF@���<@���� fF@���`_<@���\F@���<@���UF@����<@���@QF@���`<@���`SF@����w<@����ZF@���o<@���VF@���j<@���ZPF@���<@���OF@��� ߼<@���PIF@���<@���i;F@���<@��� >F@���`0<@���j*F@���<@���  F@���;<@���BF@���2<@���@F@���<@���E@���v<@���E@����9<@����E@��� I;@���E@����;@���KE@���;;@����F@���@;@����E@���;@���{E@��� ;@���@pF@���ef;@���F@���aJ;@���D F@���F;@���F@���^:@���}F@���z:@���SF@���:@���E@���9@���E@���9@���E@���\9@��� E@���99@���`E@���9@���uE@���Z�9@���E@���l8@���tE@����TV8@��� E@��� 7@����E@���i7@���E@���H7@���E@���6@���9E@���6@���`E@���@-6@����E@����6@���F@���� 7@���@@F@���@ 7@��� F@���@6@���~F@���`"6@���F@���t6@��� +F@���u6@���=F@���@6@���FF@���6@���BF@����|6@��� FF@���6@���HF@���o6@���r[F@���HP6@���UF@���46@���2CF@��� y%6@���T=F@���6@���c@F@���@'5@���QF@���m5@���� VF@���@5@����v`F@���ǐ5@���`bF@��� xf5@���cF@��� i\5@���@KiF@���]5@���nF@���`5@���`rF@���'5@����vF@���@`5@��� [F@���D5@���ȏF@���:|5@��� %F@���@Q5@����wF@���4@���CF@����v4@���� F@���4@���@F@���h4@���F@��� 4@���@@F@���4@���sF@���4@����F@����w4@���sF@���`4@��� 0F@��� B4@��� G@���U4@���:G@���4@���`G@���@W4@���}G@���@4@���G@���h4@���{#G@���` 5@���G@���/5@��� =*G@���`|25@���`2G@���I5@���� 5G@���@K5@����G9G@��� B5@���S>G@����S5@���[OG@���5p5@���`SG@���5@����rG@���@!5@���G@���@Ӧ5@���DG@���n5@��� G@����)5@����^G@���46@���`G@���6@���G@��� Q6@����wG@���k6@��� 7G@���q6@���BG@���6@��� aG@���A6@��� G@��� U6@��� G@���6@���G@���6@���G@��� %6@����#H@���7@���G@���`R7@���`H@���7@��� N H@���,7@��� H@���`{7@��� G@���7@���@H@���17@���G@����7@���`G@���7@����G@���`!8@���`G@���(+8@����0G@���<8@���G@���8@���`G@���8@���G@���8@���`G@���8@���G@���8@���G@���9@���KG@���9@���G@����:9@���G@���w9@����G@���:@���]G@���(:@��� G@���@E:@��� H@���@P:@����H@����������f���D@�����f@����vT@R��� ���������$���-���A���K���W���`���n����������������������������������� ��+��5��L��\��s�������������� ��9����������������������#��7����������;��������(��7��F��S��Z������%��,��8��H��S��a��r �� �� �� �� �� �� �� �� ��> ��R ��d ��o ��~ �� ����� CJ@���`yQ@���@J@���`"Q@���J@���@_Q@���`KJ@����<Q@���@/J@���@`Q@���`J@���� Q@���J@���Q@���"J@����]Q@���IGJ@���Q@��� \J@����Q@���RWJ@����Q@����d`J@���tQ@���uJ@��� Q@��� J@���`Q@���(tJ@���Q@���rJ@����Q@���@EcJ@���Q@���?J@���Q@���aJ@����#Q@����J@���Q@����J@���8Q@���J@����,Q@���'J@���@Q@����J@���Q@��� CJ@���`yQ@���qM@���nT@��� VL@���nT@���M@���KqT@���@L@���`rT@���QPM@���uT@���`M@����vT@����M@���tT@���M@����DtT@���jM@���@FrT@����M@���pT@���qM@���nT@����V@����CT@���@g}V@���@FT@���0yV@��� JT@���YV@����]MT@���V@����NT@���V@���KT@���V@���`QHT@���@V@���DT@����V@����CT@���{f@���Q@���}f@���@Q@�����f@���Q@�����f@���Q@�����f@����bQ@�����f@��� 9Q@���q~f@���`_Q@���|f@���Q@����={f@����YQ@���� yf@����Q@����vf@���`ԹQ@��� of@���Q@����hf@���޸Q@����FYf@���@&Q@����Vf@����һQ@���@Sf@���2Q@���Uf@���Q@��� rf@���Q@���@{f@����<Q@���{f@���Q@�����f���|Q@���Xf���@GQ@���Jf���PQ@���@6f���@`Q@���?0f����Q@���`.f����Q@���`o0f���JQ@���7f���@gQ@���f����Q@�����f���|Q@���@%5a@���Q@����d0a@���|Q@���|(a@���2Q@���`,a@���Q@���*a@���Q@���a@���Q@��� a@���Q@���8a@���� Q@���|<a@����Q@���>a@����bQ@���K9a@����Q@���@%5a@���Q@���`c@��� FPI@���c@���`WI@���Bc@���B]I@���&c@���bI@���@Nc@���mI@���"c@���`nI@��� ۏc@���jI@���`܌c@���|PI@���`c@��� FPI@���@O>S@���R@���8S@��� R@���@7S@��� R@���7S@����R@��� 8S@���R@����OS@���tR@���{SS@���J"R@����#eS@���'R@���`sS@���`'R@���֋S@���$R@���ΖS@��� >!R@���'S@���@NR@���RsS@����<R@���@O>S@���R@���lc@���H@��� kc@��� H@���qlc@���I@���pkc@���`I@����Bgc@���I@��� hc@���`I@���`fc@����I@����;fc@���B%I@���nc@���.I@���`)uc@���P1I@���`]xc@���`:I@���`|c@���kYI@���&c@���`NcI@���c@���_I@����Äc@���jBI@��� ec@���<I@���0c@���`q4I@���"yc@���I@���sc@���@I@���@oc@��� I@���lc@���H@���B`@���R@���9`@����R@����h`@���! R@���@7`@���`i R@���`@���R@���E_@���|R@���_@���HR@����B_@���sR@���_@���@R@���`_@���R@���_@���&R@���_@���(R@���@W`@���R@��� ($`@����R@���(`@���R@��� '`@���@xR@��� /`@���R@���H*`@���3R@���1`@���R@���@1`@����R@���'`@���zR@��� /`@���R@���`2+`@���R@���B`@���R@���@`@���@!R@��� 8`@���r(R@���`@���`+R@���``@���(R@���@`@���%R@���@`@���@#R@���@`@���@!R@���_@���)R@��� l_@��� ,R@����;_@���@0R@��� `@���j2R@���`*`@���P-R@���@+`@���,R@���@N%`@���`)R@���`@���@G-R@���`x `@���`*R@���_@���)R@���`Vc@��� H@���@<Sc@���ɥH@���gSc@���`H@���SXc@���H@��� Wc@���`H@���Zc@��� H@���\c@��� H@���Zc@���H@���`fZc@���H@���`Vc@��� H@��� md@��� <M@���nld@��� GM@���`rd@���RM@��� wd@����hM@���@wd@���`pM@����zd@���szM@���`|d@���ZM@���H|d@���`YM@���Svd@���M@���`~d@���`M@����d@����M@���d@��� OM@���`od@����M@����d@���̄M@���"d@���`}M@���•d@���sM@���`fd@���lpM@���`xd@���mM@���`rd@���3JM@���pd@���@AM@��� md@��� <M@���`$`@���2R@��� `@���3R@���T `@����7R@���`@���@9R@���$`@���@O6R@��� '`@���4R@���`$`@���2R@���9M@����WT@���L@���0YT@���`xL@���`i[T@��� gL@����D\T@���cL@��� ~]T@���`_lL@���A^T@���@ڀL@��� _T@���@xL@���baT@���L@���cT@���@L@���@ObT@���`ML@���{_T@���?0M@���*^T@���SFM@���`[T@���HM@���@YT@���9M@����WT@���YS@���,R@���@S@���J2R@���S@����e3R@���S@���`6R@���@ES@���9R@���@%S@���`yER@����vS@���!FR@���@S@����AR@��� S@���8R@��� >S@���/R@���S@���@X.R@���YS@���,R@����0L@���@'T@���`w'L@���b)T@���K@���`y)T@���@K@���/*T@���`K@���q,T@��� K@���J.T@���2+L@���@1T@���[L@���/T@����lyL@����V,T@��� wL@��� f*T@����0L@���@'T@���)R@���6R@���*R@���@7R@���҆R@���BR@����ɋR@���@FR@���@WR@���qHR@����#R@���DR@���{R@���tER@���R@��� CR@���২R@���@h<R@���YR@���b9R@���)R@���6R@���`^@���BR@���@]@���BR@����]@���DR@����]@���GR@���@]@����JR@���^]@���JR@���@@^@��� ~IR@���^@���SFR@��� ^@���CR@���`^@���BR@�����f���6Q@���xf���6Q@���sf���@6Q@��� nf����4Q@��� Gif���`S1Q@�����`f����$1Q@���[f���@0Q@���`Xf���@*Q@��� Wf����"Q@����OAf����EQ@���X>f��� >Q@���`Bf����Q@��� /?f����Q@���`k>f����Q@��� 7f����Q@��� 7f��� fQ@���@.f���Q@���`4f���`iQ@���`+8f���@Q@���05f����=Q@���Y+f���Q@���z(f���0 Q@���'f���� Q@���@$f���(Q@���`"f���@ Q@���f���Q@��� \e����P@����e���@P@���?e����vP@���e��� P@���he���P@���@e���P@���`+e����P@���e���P@���e����P@��� ae���cP@����me����P@���e���2P@���e���@P@��� e���P@���e���@P@���e����eP@��� Xe���P@���@e���(P@���`e����P@���@e���jP@���,e���@P@��� ee����wP@���e���@˹P@���he���P@����de���P@���e���P@���e���@P@����e���aP@��� e����P@���ue���P@����e��� fP@���ze���PP@���e���ǘP@����e��� ʖP@���e���P@���be��� P@���e���P@����e���@P@����e���!P@����e���@P@��� e���P@���~e����P@���ue���@OP@���he����P@���e���@P@���e���`yP@���^e���lP@���`e����єP@����e���/P@��� e���P@���Fe���P@���>e����P@���He���@ܢP@���e���P@���`e���rP@���`e���P@���e���@NP@���e���P@���`0e���@ P@��� !e��� P@���`xe���aP@���@ e���`iP@���@e���P@���`e���@P@�����e����P@���`Be���1P@��� e���YP@���,e����<P@���ڮe���@P@���@e���`yP@��� je���@P@���$e���rP@���@ƨe���)P@���`e���@P@���=e���@hP@��� Je���8P@��� e���@XP@���`}e����P@���e���ƵP@���� e���@µP@���e���[P@���e���sP@��� e���@ӾP@����e����ɿP@���e���P@���e���`P@���Ǎe���ͻP@��� e���P@���0e����P@���Me���P@���@e���P@���@e���P@���@e��� P@���@<we����#P@���ve��� P@���we���:P@���ve���@ӶP@���re���@P@����me���P@���le���@P@���`me���KP@���ie���@_P@����)\e���@P@���Re����P@���^Me���cP@���@Ne���@P@���� Je���@P@���vDe���`P@���@Je���P@���@Fe���@P@��� J=e����UP@���5=e���@P@���`o6e���P@����d6e����P@���`:e���`iP@����)@e����]P@����2De���@gP@����Se���avP@��� aQe���@vP@���`Pe����MtP@���Re���pP@���@Pe����nP@��� SQe���@OjP@���Te���fP@���_\e���gP@��� sme����MtP@��� jqe���YuP@���pke���@OnP@���je���llP@��� ece����gP@���`e���ldP@���&be���`_P@���`Tde���@^P@���@le���jbP@����}e���@_P@���ze���aP@���e����dP@���e���AbP@���`e����EcP@���@<e���@eP@���ye���`hP@���5e���lP@���e����nkP@���e���iP@���ue���@gP@���e���@eP@���ˍe���bP@���e���^P@��� e���@]P@��� Se���2[P@���He���{[P@���`e���R_P@���&e���VP@����e����NP@��� e���@GQP@���`xe���OP@����ܕe���NP@���`xe���MP@���e���LP@���`e���@_HP@���e���`HP@���ଆe���EP@����me���jFP@���`Be���DP@���e����e;P@��� e���j6P@����)e���@-8P@���Ze��� 6P@���Me���1P@���� e����6P@���0e��� 2P@��� ae���@0P@���e����*P@���@e���!*P@���e���+P@��� e��� f*P@��� 8e���&P@���`Be���K%P@���˙e����$(P@���̎e���@#P@���e����<P@���`0e���P@���e���@.P@���Ze����P@���Úe���!P@���Le���RP@���e���P@���@e����P@���`"e����P@���`ܜe���@GP@���@e���@hP@���e���P@���0e���P@���`te���`QP@����e��� ~P@����e���@x"P@���e���@'P@���6e����E#P@���e���P@��� &e���P@���еe���8P@���`+e���P@���e����n#P@��� e���@$P@���-e���@ 4P@���=e���@7P@���e���7P@���@e����4P@����e����1P@���e����2P@���e����4P@���e���6P@���e���@P@�����e���CP@���e���JJP@���e��� fRP@���`e���TP@���@f���@`_P@���lf���eP@���@&f���`eP@���0f���_P@��� aMf���^P@���Rf���@ aP@���MRf���cP@���`tNf���@mP@���@ Of���{oP@���@Tf���@pP@���\f���jzP@���[f���@6|P@���=^f���0P@���@^f���P@���Yf���[P@���@3Uf���͇P@���`TRf���P@���`Pf���P@���`9Pf���kP@���Qf���P@���@Xf���PP@��� j]f���@ӊP@�����`f���-P@���df���jP@���@ef���ŔP@���gf��� P@���@Elf���ӓP@���kf���DP@��� ?kf��� ,P@���qf���P@���{uf���P@��� yf���P@��� }f���@P@���-|f��� LP@���{f���vP@���qf���lP@���jf���hP@���@if���`P@���@nf���`[P@���`of����TP@���Wyf���@IP@�����f���@fCP@�����f���6Q@���b@���bG@���`b@���fG@���b@���9mG@���@b@���nG@���c@���G@���c@���G@���Oc@���G@���@E c@���!G@���b@���iG@���b@���bG@��� =M@���@T@���FL@���T@���΢L@���@ T@���JL@���� T@��� DL@���`T@���@L@����T@���`L@���@T@���L@���T@���@#yL@����]T@���(L@���T@���pM@���@.T@���kM@����T@��� `M@���bT@��� `sM@���T@��� \7M@���@_T@��� M@���T@��� M@����T@���2;M@���@T@���9M@��� T@���@7M@��� T@����}M@���� T@��� L@���! T@��� =M@���@T@���1b@���E@���k1b@���E@���]1b@���@hE@����2.b@���@WE@���` -b@���*E@����8b@���`F@���"Eb@��� @F@���`Jb@��� x6F@��� Rb@���k9F@��� eQb@��� ~1F@����DPb@���-F@���`Nb@����$0F@���@<=b@���z F@���8b@���`E@���3b@���E@���1b@���E@��� f~T@���)R@���yT@���@R@���KyT@���@R@���@6tT@���R@���mT@���R@���hT@���JR@���_T@���R@����<cT@���R@����rT@���R@���@xnT@���aR@���qT@��� R@���0}T@���R@���wT@���ZR@���|T@����R@���zT@���R@���@T@���@R@���T@���@R@���̈T@���1R@���8T@���@R@����T@����R@���@T@���R@��� T@���@R@��� f~T@���)R@���Q@����UAR@���wQ@���:CR@���zQ@����HR@���� Q@���@LR@����DQ@����vPR@����#}Q@����XR@���Q@���(\R@���Q@���_R@���Q@���aR@���Q@���]R@��� Q@��� [R@����<Q@���\R@���@Q@���@[R@���BQ@���@YR@���Q@���2SR@���Q@���� RR@���BQ@���`PR@���`yQ@���'QR@���zQ@���SR@��� Q@���JVR@��� ~Q@���2OR@���@NQ@���RKR@���`QQ@��� GR@���@XQ@���@FBR@����nQ@���jBR@���ΆQ@���JFR@����$Q@���DR@���Q@����UAR@����b@���@XF@���&b@���9F@���`2b@����F@���Kb@���`F@����b@���@hF@���Fb@���`NG@���`[b@���G@����-b@���`G@���Bb@����G@��� 6b@���F@���� b@���F@����b@���@XF@��� J@���` T@����(J@���@ T@���7J@���@gT@���YJ@���T@���r[J@���T@��� WJ@���sT@���`NsJ@���T@���J@���8T@���J@����T@���`wJ@����#T@���`J@���T@���@ J@���T@���@J@���@ T@���`J@���rT@��� J@���` T@���_@���`R@���@͟_@���`R@���`__@���[R@���@W_@���z R@��� _@���'R@���_@����=.R@���ǜ_@���@2R@���_@���8R@���`)_@����:R@���@_@���?R@���_@����ER@���`_@����VHR@���Ѱ_@���KR@���n_@���zPR@���ܩ_@����wSR@����_@���@-XR@���3_@���XR@���3_@���ZR@���_@���q\R@���_@���@?XR@���_@���[R@���@_@���[[R@��� _@��� _R@��� ҷ_@���`R@���`x_@���!bR@��� 8_@����bR@���h_@���^R@���_@���^R@��� _@����U]R@���k_@���[R@���Z`@���YR@���}_@���`VR@��� `@���VR@���`@���@PR@���``@����PR@���``@��� KR@����V`@����UIR@���` `@���IR@���`@���GR@����`@���FR@���0`@���DR@���#`@���@_HR@��� #`@���FR@���!`@��� ~AR@���`@���`>R@���` `@����:R@���``@����e7R@��� `@���@4R@���@`@��� 3R@���}_@��� ~-R@����__@���(R@���T_@����!R@���=_@���SR@���_@���`R@���I@����Q@���I@���Q@���@I@���`R@���`I@��� & R@���J@���@_R@���`J@���HR@���J@���KR@���` -J@���R@����3J@���@R@���`.J@���� R@���g=J@���B R@���:J@��� R@����3J@���8R@���>J@���@NR@���q4J@���R@���IJ@���R@��� >IJ@����R@���`WJ@���R@���`VJ@���kR@���*JJ@���R@����LeJ@���R@���`fJ@���AR@���XJ@���{R@��� TJ@���@NR@��� iJ@����vR@���oVJ@���AR@���@]J@����M R@���`AvJ@���r#R@���zJ@���&R@����_J@���`i#R@���@_J@���%R@���@gJ@���@%'R@��� ^J@���@'R@���`/vJ@���*R@���J@���k)R@��� J@����*R@���xJ@��� +R@��� dJ@���R+R@����EJ@���@%+R@���@-0J@���a.R@���iKJ@���@o6R@���A~J@����:R@���`YJ@���`9R@���*J@���;R@���ךJ@���;R@���J@���@p=R@���`J@���@h@R@���@ڰJ@���`@R@���`J@���ER@����J@���IR@���`AJ@���2OR@���J@���NR@���PJ@���@ORR@���` J@���@WSR@���K@���QR@���3K@���SR@���{CK@���WR@���` uK@���`[R@����4L@���NR@���GL@���@FJR@����<KL@���@_HR@����TL@���`ER@���mK@����CR@���3"L@���`DR@���;L@���RCR@���0L@���l@R@��� [K@���@=R@���`K@����<R@���yL@���@o>R@��� L@���`<R@���L@���2R@���1L@���1R@��� K@���@3R@���K@���/2R@���3K@��� /R@���K@���@*R@���mK@��� ,R@����K@���`(R@���mK@���r'R@���.K@��� $R@���`K@���@O"R@���@K@���k%R@���/K@����^!R@����^K@���aR@���K@���R@���@-K@���@R@���K@��� R@���`/K@���lR@���K@���IR@���K@���� R@��� K@��� R@���K@����$R@���@K@����nR@��� K@���@oQ@��� ~K@����DQ@����K@���(Q@��� K@���aQ@���bK@���Q@���K@����=Q@��� fK@����Q@���L@���Q@���IL@����Q@����<#L@��� Q@���@.L@���@.Q@����#L@����DQ@���@L@���|Q@����ɷL@���@Q@����L@���Q@����L@���ǬQ@���L@���:Q@���ϹL@����Q@���jbL@����Q@���`L@���Q@����mL@���Q@���@L@���Q@���sL@���@Q@���@p]L@���`Q@���JNL@���Q@���OL@���ƩQ@��� WL@���Q@���`GAL@���பQ@���AL@���Q@���@JL@���Q@���`CL@���@Q@��� L@���Q@��� f&L@���@Q@���`ML@���� Q@���`/L@���0Q@����)L@���@NQ@���P9L@���Q@���rCL@���ǨQ@��� +:L@���@Q@���1TL@����Q@���`6HL@���`Q@���i3L@���rQ@���`N3L@��� Q@���@oFL@���Q@���`AFL@���Q@��� L@���@Q@���`L@���Q@��� &L@���ϥQ@��� K@���HQ@���1K@���@_Q@���9L@���@Q@����L@���Q@����K@���Q@��� fK@���ZQ@��� ~K@���`QQ@��� K@���Q@���`K@���kQ@���`K@���Q@���K@����Q@���`K@���ƭQ@���@K@���Q@���̼K@���@Q@���`ģK@����ҫQ@���K@���@OQ@��� K@���8Q@���sK@���rQ@���`K@��� ʦQ@���l`K@���[Q@����ZK@���2Q@���kAK@���@_Q@���`HK@���Q@��� %?K@����Q@��� U=K@���Q@���_K@���@Q@��� ^K@���@Q@���9EK@����Q@���@%K@���YQ@���@$K@���Q@��� xK@����eQ@���J@���@.Q@��� ~J@����Q@���J@���ϵQ@��� UJ@���@WQ@����J@����<Q@���`GJ@���@Q@���`6J@���Q@���J@����UQ@����J@���@Q@���`/J@���'Q@���`J@���!Q@����J@���zQ@���/J@���Q@���/J@��� Q@���J@���Q@����wJ@���`QQ@���`K@���ZQ@���K@���IQ@���[J@���@6Q@���`J@���JQ@��� K@��� Q@���K@���Q@���-�K@���Q@���K@����Q@����vK@���@Q@��� K@���@Q@���@K@��� Q@����J@���RQ@���`J@���@Q@���J@���`QQ@���J@��� &Q@���bJ@���Q@���J@���9Q@���J@���Q@���J@���@Q@���J@���Q@��� UJ@����Q@���J@���@Q@���@J@���Q@��� J@���Q@����dJ@���sQ@���J@����MQ@��� J@���`Q@���J@���Q@���்J@����Q@���J@���Q@���J@���)Q@��� J@���Q@���`rJ@���@Q@���KmJ@���Q@���[oJ@���`Q@����gJ@���� Q@���`hJ@���7Q@���NJ@���Q@����RJ@��� &Q@���DJ@����Q@��� %/J@���Q@��� g5J@���8Q@���"J@���'Q@��� ="J@����Q@���J@����Q@����#J@���3Q@���`I@���'Q@����I@���Q@���@oI@���Q@���iI@����Q@���I@����Q@���@WR@���9YR@���{R@���8ZR@���R@��� \R@����#R@���bR@���c�S@���@hdR@����S@���cR@����VR@���@G]R@����5R@���`\R@���R@��� _R@���ZR@���@_\R@���@WR@���9YR@���A\b@���2F@���`Zb@���`05F@���Zb@���{;F@���]b@���LF@����^b@���FF@���_b@���`GF@��� e_b@���`OF@����bb@���JNF@���`db@���8VF@���eb@���[F@���bb@��� _F@���bb@��� dF@��� eb@���)cF@���@wmb@���xF@���ob@���}F@���ob@���؉F@���Bqb@���iF@���`rb@���IF@���`�ub@��� F@��� wb@���@ӖF@���`f|b@���ߛF@��� e{b@���F@���}b@���F@���b@���@WF@���b@����F@���b@��� ,F@���b@���3F@����mb@���@F@��� b@���F@���gb@����F@���@`b@���F@��� b@���`ʮF@����hb@����F@����2b@���F@���b@����ѨF@���@b@���UF@���F~b@���`6F@���`fxb@���xF@���ub@���@|F@���sb@���{F@���rb@���uF@��� sb@���rF@���`onb@��� _F@���Pib@����^UF@���4gb@���GF@���`b@���AF@���^b@���` 5F@���A\b@���2F@����Db@����R@���ϕb@����R@���b@���@ R@���`�yb@����R@���`hb@���@OR@���`\b@����MR@���@7Qb@���ZR@���Bb@���R@���OBb@���R@��� Gb@���@FR@���`Hb@���R@���Lb@���R@���Jb@���`QR@���@.Kb@���`R@���sLb@���'R@���@,Pb@���R@���Xb@���R@��� Ub@���@R@����vTb@����R@���`b@���kR@��� ib@���JR@���`jb@���@.R@���gb@���@R@���mb@���@R@���kb@���R@���nb@���R@���؍b@����=R@��� Qb@���R@��� 6b@���R@���zb@���YR@���9b@���R@���`ob@���3R@���b@����R@���Fb@���ZR@���`b@���R@��� b@���@R@���`b@���!R@���`b@���@R@���Bb@���HR@���=b@����R@���`xb@��� &R@����b@���@R@����b@����R@��� b@���R@���Pb@��� R@���b@���R@����Db@����R@���@_@����<R@���Dl_@���@ R@��� ZL_@���7#R@���9_@���J&R@��� n/_@���@%+R@���_@���+R@����_@���01R@���=^@���:R@���^@���`*>R@���@^@���;>R@���ǝ^@����@R@���a^@���kAR@����^@���@@R@���@@^@���<R@���^^@��� ;R@���E^@���?R@���@^@����UAR@���^@���ER@���^@����VDR@���^@���`FR@���^@���@GR@���^@���JR@���^@���jJR@���`+^@����JR@���^@���@ LR@���^@����5MR@���Q^@����SR@���^@���UR@���`x^@���XR@���^@���YR@����^@����]R@���@@^@���@_\R@���O^@���l\R@���^@���`aR@���z^@���cR@���@^@��� cR@��� 6^@����eR@���@^@���dR@��� ^@��� fjR@���^@����$lR@���$^@���kmR@���-^@���`lR@���^@��� kR@���^@���@ hR@���@^@���jfR@���@i^@����DhR@���`;^@���tiR@���^@���kR@���`^@���7oR@���^^@����DpR@��� ^@���bqR@���`_@���JnR@����M�_@����lR@���@_@����kR@���\_@����nR@���a_@���pR@����q_@���@`sR@���`f:_@����kR@��� ?_@����gR@����C_@���iR@���@B_@���@WkR@��� H_@���@kR@���M_@���9iR@���@J_@����cR@����P_@���JbR@���U_@���cR@��� W_@���/fR@���xi_@���`yaR@��� a_@���@\R@���d_@����YR@����x_@���]R@����Mt_@����<_R@���y_@��� `R@���.z_@���3bR@���3~_@���aR@��� }_@���@G]R@���`+z_@���[R@���}}_@���)[R@���+_@����^]R@���_@���z`R@���`k_@���@cR@���_@����`R@���_@���@[R@���@_@���@g]R@���k_@���[R@���`Ŏ_@���ZR@��� _@���@YR@���_@���WR@���`_@��� &ZR@���`_@���VR@��� _@��� OR@���­_@���@gER@���@_@����<CR@��� J_@���<R@���@ϒ_@���9R@���W_@����6R@��� l_@��� 3R@��� 1_@���1R@���&_@���,R@����O_@���(R@���@ߏ_@���"R@��� 1_@���R@����_@��� &R@��� _@���R@���@_@����<R@���@gT@���|R@���0T@����R@����T@���R@���`ԩT@���R@���@T@���R@����]T@���rR@���@gT@���|R@���@oX@����=S@���W@���@ S@����W@���@?S@���@-W@���AS@���@XW@���IS@���AW@���S@���@?X@���S@����X@���)S@����X@���S@���9 X@���@XS@����X@���rS@��� >)X@����S@���$X@���� S@���%X@��� S@���@O"X@���/ S@��� ~!X@���c S@���@$X@��� S@���X@����#S@���@FX@���`iS@���*X@��� S@��� X@���@ S@���X@��� S@���2X@����S@���@X@���`S@���@oX@����=S@���a@����MR@���a@����RR@��� a@����EWR@���|a@���@\R@���<a@����e[R@���Ja@���VR@���za@���`VR@���ua@����eWR@���ta@���ZR@���Pwa@���@-\R@���� a@���`\R@���ǔa@���@hdR@���ൖa@��� hR@���`fa@���tR@���`Da@���@.xR@���ga@���wR@���a@��� ~yR@���a@���zR@���sa@����tR@��� a@���@paR@���a@���[R@��� a@���@YR@���ga@��� NR@���a@����MR@���T@���R@����T@���XR@���T@���߇R@����T@���`yR@���T@���@FR@���T@���R@����Z@���)S@���`�Z@���S@��� Z@���@-S@��� Z@���@S@���Z@����҇S@���TZ@���`QS@����Z@���)S@����L@����T@���WK@���@xT@���K@���"T@���L@���: T@���@4K@����vT@���K@���!T@���K@���@T@���HL@���aT@���HL@��� T@���\L@���@WT@���SL@���T@��� [L@���@-T@���L@���@XT@��� L@���� T@��� CL@���@ T@���`L@����T@��� L@���T@����L@����T@���@VU@���@R@��� LU@���R@���`yIU@���R@����OU@���R@����WU@���R@���@iU@���R@���gU@���1R@����_U@���R@���`^U@���YR@���@VU@���@R@���a@��� wR@����Da@���@gyR@���Ka@���{R@��� e`@���JR@���``@���@܆R@��� `@��� &R@���P`@���@-R@���@<`@���@R@���``@���@6R@����a@���~R@���a@���yR@���a@��� wR@���ൌb@���(S@��� b@��� /S@���b@���1S@���@7b@����.S@���b@��� ,S@���gb@���@)S@���ൌb@���(S@���{W@���9=S@��� W@���1@S@���@W@��� ~AS@����W@���@.?S@���`W@���c@S@���(W@���@CS@��� X@���HS@���@ X@����LS@���R!X@��� LS@���r"X@����LS@���@g%X@���HS@���'X@����MDS@���{W@���9=S@��� U@���@_R@��� ~U@���`R@���@%U@��� ڸR@���7U@���R@���@?U@���BR@���U@����=R@���1U@���rR@��� U@����R@���ߧU@���!R@���@hU@���`R@���U@���`R@���U@���R@��� >U@���R@����U@���R@��� U@���ƹR@���U@���@R@����$U@���R@���U@���R@���U@���@˵R@��� U@���@_R@���aa@���`yR@��� Ca@����R@���;a@���@ܶR@���`9a@��� ʾR@���`$a@����vR@���@%a@���@gR@��� a@��� R@���� a@��� R@���` 'a@���R@���,a@���R@��� -a@���@R@���,a@���JR@�����(a@����R@���%a@���@pR@����-$a@���R@��� &a@���`R@���@)a@���@R@���(a@���@R@����&a@���`R@���%a@����eR@���`I)a@���`R@���|$a@���R@���a@���@R@���@a@���R@����a@����R@���@$a@���R@���@7%a@���R@����M"a@���jR@���%a@���R@���)a@��� fR@���7a@���R@���6a@��� &R@���@-a@����$R@��� -a@���� R@���`f.a@���R@����6a@����S@����@a@��� >S@���@Ca@����S@���Ca@���@S@���SBa@����,S@���Ka@���@ S@���OLa@���S@����hNa@���S@���Pa@���` S@���STa@��� S@���[a@���@ S@���``a@���S@����fa@���S@����$za@����R@���`}a@���7R@���za@����ER@���Jza@���R@���*a@���R@���Xa@���|R@���χa@���R@���� a@���R@���ta@���R@���'a@���@WR@���׎a@���@pR@���<a@���@R@���`a@���R@���'a@����R@��� a@���KR@���a@���@.R@���`Ŝa@����R@��� a@����R@���a@����M�S@���`a@���@.S@���զa@���S@���a@���R@����׳a@���0S@����a@��� S@���@ia@��� S@���`a@���@S@��� a@���R@���`)a@����R@���@a@���@R@����Va@����R@���`a@���{R@���@a@����UR@��� )b@���HR@���,b@���@R@���!b@���`iR@���b@���aR@���b@���R@��� b@���R@���@b@���aR@���b@���@R@���`[b@���@R@���Ab@���JR@���@% b@���R@����da@����R@���a@����R@��� a@����MR@���a@���R@���@a@���{R@���a@���R@����Va@���R@���pa@���`R@����a@���R@���a@���R@���a@���`R@���@a@���R@��� a@���R@��� a@����R@��� a@���@GR@���/a@���@R@����-a@���{R@���`xa@���kR@��� Qa@���@R@����a@��� &R@��� na@���@R@���@@a@���`R@����_a@���@pR@��� Qa@���@R@����a@����$R@���`a@���R@��� |a@��� fR@����$a@��� R@��� a@���̸R@���a@���R@��� a@���R@���`a@����ٵR@���@a@���R@���9a@���R@���`a@��� R@��� Sa@���ռR@���*a@����R@���`xa@����R@���@ia@���ĻR@���3a@����DR@��� a@���R@��� a@���@R@���a@���ǴR@���+a@��� ~R@���`ta@���@R@���`na@����<R@���@Noa@����eR@��� ra@���ζR@���Jta@���@ R@����$la@���৬R@����fa@���@R@���aa@���`yR@���a@���`pK@���ta@���sK@���@`a@��� tK@����a@���{K@���`]$a@���K@��� %a@���K@���}%a@���K@���"a@���`K@���"a@���xK@���y!a@���@puK@���a@���ZxK@���a@���`pK@���S@���4T@���AS@���@5T@���@%S@���R7T@���S@����=T@����T@���;T@���8T@����D8T@���T@���A6T@��� >S@����$4T@���S@���4T@���JL@��� &6T@���`L@���9T@����L@���;T@��� OL@���<T@���@xL@����=T@���@htL@���@T@���_ L@����FT@��� VL@����FT@��� L@����^AT@���@L@���j>T@���@4"M@���2;T@���`L@���@6T@���JL@��� &6T@���G@���`QT@��� \G@���@T@���G@����=T@���G@��� T@���` H@����v T@���`G@���K T@���`NG@����T@���JG@���T@���G@���`T@���G@��� ~ T@���`GG@��� T@��� V|G@���I T@���rG@���B T@����sG@���T@���QG@���T@���QG@���T@����lG@���@T@���FG@���IT@���G@����T@��� [H@����T@���`H@����T@���@G@���T@���7G@����T@���H@���T@���H@���@T@���G@���`T@���G@���`T@���'H@����"T@���`wH@����!T@����}2H@���@?$T@���HH@����]"T@���`CH@��� T@���`H@����^!T@���`xH@���@W#T@���>H@����%T@���(H@���@%'T@���8H@���@-(T@���äH@���(T@���`MH@���(T@���H@���+T@���7H@���@-T@���H@���-T@���{H@���2/T@���@ H@���1T@���ࣀH@���@1T@���I@��� ;T@���`68I@���8:T@��� +I@���@W7T@���I@���/6T@���gI@���@:T@���I@���@6T@���jI@����U5T@���%I@���l0T@��� (I@���-T@���@4I@���A2T@��� nI@���@-T@����LI@���+T@��� yI@���A"T@���ZH@���2T@���@#H@���T@���bH@���@T@���H@���T@���`<H@���@%T@��� sH@����T@��� UeH@���T@���QhH@���3T@���@PH@���`T@���UH@���`T@���uH@���@T@��� H@���[T@����|H@���@G T@���` H@���q T@���H@��� T@���&fH@���@ T@��� HH@��� T@����}BH@���2 T@���AFH@���@ T@���H@H@���T@���/H@���T@���H@����T@���@H@����T@���:H@����T@���G@���`QT@���a@���J@���`a@���@-J@���a@���`NJ@���@a@���κJ@����a@���൰J@���@@a@���J@��� a@��� J@���`a@����$J@����-a@���J@���@a@���`GJ@���a@���\J@����-a@��� fJ@����a@���J@��� a@��� &J@���Ba@���J@��� a@���J@���a@���`J@���a@���`J@���`a@��� J@��� a@���J@���a@���`J@���Pa@���`GJ@���a@��� J@����a@���J@���a@���`&K@���`a@���"K@���|a@���#K@���` a@���K@���`a@���K@���@a@��� #K@���*a@��� K@���`a@���$K@���@a@���(K@���Ja@���\6K@��� a@���@p5K@���za@��� K@��� a@���K@���@7a@���mJ@���@a@���J@��� a@����J@���3a@���mJ@��� a@���J@��� |a@���J@���@.a@���J@��� Sa@��� J@����$a@���J@����$a@���ƹJ@���`a@���`6J@���a@���J@����a@���@ӮJ@���`[a@���`kJ@���`]a@���`fJ@���a@���`_<J@��� a@��� 1J@���&a@��� +J@���`a@���`GJ@���a@���+J@���`[a@���D+J@����da@���mJ@��� |a@���@J@���Fa@����I@���a@���` I@���a@���I@���&a@���3I@���Xa@���I@���`a@���`NI@���a@����$I@���` a@���kI@���`oa@��� xI@���a@���I@���a@���@pI@���a@��� I@��� a@����I@����a@���I@���a@����ѨI@���9a@���ஞI@���a@���I@���Sa@���@¥I@���`a@���!jI@���a@���,I@���` a@���I@���@Eb@���)H@����$b@���H@���!b@���H@���Kb@��� H@��� b@���փH@���<b@��� ymH@����$b@���`ZH@��� b@��� QH@���b@���`RH@���b@���3bH@���`2b@���tH@��� b@���H@���b@���`H@��� nb@���H@��� a@���DH@����da@���`H@���a@���IH@���a@��� H@��� a@���@H@���a@���H@���+a@��� H@����da@���H@����ma@��� ,H@���@a@���ބH@���a@���ztH@���`a@���1dH@���a@���tH@���a@���G@����-a@����wG@��� Qa@����$G@���a@���G@���a@���`ʞG@���`a@���`G@���a@���`pG@���a@���jG@���`a@���fG@���a@��� OZG@��� |a@��� %WG@���a@���@ZG@���a@���`^G@���a@���@peG@����a@���`NkG@��� a@���`eG@���pa@���9eG@���a@��� kG@���a@���`fG@���a@���>G@���a@��� %/G@���`�a@���@G@���`)a@��� G@���@a@���|G@���0a@���G@���a@��� G@���a@���@o>G@���a@���>G@����ma@���CG@���a@���`GG@���pa@��� GG@���"a@���`KG@���`a@���BMG@���a@���@_G@���a@����ZG@���a@���!RG@���a@���FG@���'a@��� G@��� a@����F@���a@���F@���za@���F@���a@���@G@��� a@���` G@����a@��� x6G@����a@���`LG@���` a@���ـG@���a@���G@���`a@���` G@���`oa@���G@���8a@���@G@���a@����G@��� a@���G@���a@���%H@���a@���mOH@���Ka@���baH@����a@���`{H@����2a@��� H@���@a@��� >H@���`a@��� xH@��� a@���H@���a@����H@���@a@��� I@���Ya@���`_DI@���` a@���hI@���@ia@����I@���Xa@���ϑI@����a@��� I@���a@���I@���@a@����vI@��� ۽a@���\I@���a@����I@���a@��� I@��� a@���I@���Xa@����I@���޸a@��� I@����da@����vI@���ta@���2#J@���ja@���l(J@���@%a@���1J@���@Na@����=J@���a@���RJ@���৺a@���K]J@���@a@����J@���0a@���`J@���a@���J@���மM@����S@���\fM@���l�T@��� ,aM@���tT@���@sM@���`T@��� CM@���@.T@���M@��� fT@��� M@���@ T@��� M@���|T@���JM@���@`S@���மM@����S@���XV@���JS@��� JV@���LS@����HV@���@MS@���IV@���@-PS@���PV@���RS@���a^V@���TS@����kV@���RS@����jV@���`yQS@���@bV@���� RS@����kV@���OS@���/fV@����#MS@���XV@���JS@���@#W@����=S@���I W@���@S@��� V@����S@����V@���S@���W@����S@���W@���`iS@���W@���S@��� V@���S@���`V@���@S@����DV@���S@���V@����S@���V@���2S@����5V@���`yS@���V@���@S@���V@���@-�T@���)V@��� T@���V@���T@����AW@����T@����rW@���� S@���@pW@���`S@���VW@���BS@���@#W@����=S@���$\@���HS@���@.\@����#S@���@{\@���`"S@���\@����e#S@�����\@���@'S@���`\@���@'S@���E\@���*S@���!\@���r'S@���@.\@���!&S@���!\@���#S@���@+\@����!S@����,\@���@? S@����$\@���S@���`;'\@���BS@���$\@���HS@����Va@���yR@���a@���zR@���@̓a@���R@���Xa@��� ~R@���`ӂa@���@NR@���`a@���@.R@��� ۏa@���`ԑR@���@Ea@���R@���@a@���@-R@��� a@����R@���Ha@���`R@��� a@���R@���a@����]~R@���@Ea@���`|R@����Va@���yR@���f3@���;K@���@ 3@����5QK@���3@���`_TK@���h3@���YK@���4@���1\K@���4@���SK@���@=4@��� XK@��� g4@����eWK@��� [4@���@FK@���%3@���bIK@���l3@���`?K@����3@��� 9K@���f3@���;K@��� Z@���`NS@����Z@���QS@���Z@���RS@���`Z@���@VS@���`Z@���TS@���Z@���PS@��� Z@���`NS@���pX@����nS@���5X@���HS@���6X@���S@����&X@��� S@���@X@���@S@���kX@���kS@���`W@����S@���`W@����DS@���W@��� S@��� &W@���@oS@��� &W@���1S@���`ԵW@����S@����DW@����S@���W@����VS@���@NW@���`S@����W@����VS@���@W@����$S@���W@���S@���W@��� S@���/W@���tS@���PW@���S@���2W@����S@����W@���S@���|W@���@WS@���@lW@���0S@���`y}W@����S@���`~W@��� S@���kW@���@S@���1xW@���|S@���@xnW@���S@���(\W@���S@���KaW@���`S@����]NW@���@S@����HW@���S@���IW@��� fS@���RSW@���@S@���@GQW@���@GS@���KAW@���@S@���@NSW@���2S@���@W@���0S@���W@��� S@���@OW@���S@���@oW@���@S@���W@����S@���W@���!S@��� W@���� S@���@_W@����DT@���@FW@��� &T@���qW@���jT@���W@���T@���W@���T@���0W@���T@����#W@��� T@���X@���@OT@���a&X@���@T@���.X@���IT@���@IX@��� T@���mX@��� T@��� X@���T@����MX@���T@���qX@���cS@���uX@����ES@����#qX@��� S@����^eX@���S@����jX@���S@����,aX@����wS@���gX@����S@��� OX@���@S@����5MX@��� S@���@%cX@���2S@���zX@���S@���xX@����S@����X@���S@���X@���rS@���X@���S@����қX@���`�T@���@ܞX@���T@����X@���RT@���X@����T@����Y@���S@��� Y@����#S@����MX@���7S@����vX@���@?S@���@gX@����S@���/X@���@S@����X@����S@���X@��� S@���@X@����S@����MX@���S@���`X@���S@���/X@���S@���.X@���S@���@X@���@S@���X@���`S@���X@���3S@���`X@���KS@���[X@���S@����$X@���SS@���X@����S@���bX@���ͻS@���@GX@���S@���pX@����nS@����eX@���(|S@���X@����%}S@����X@���}S@����X@���@S@���@GX@���jS@���`X@���ZS@���`X@���@S@���@pX@���`ŊS@���`RY@���3S@���@X@���S@���Y@���S@���WY@���`S@���@Y@���S@���+Y@���S@��� &Y@���@ӲS@���JJY@����$S@����HY@���'S@���5Y@���S@���`2Y@���S@���O2Y@���S@���59Y@���@S@���5EY@���`S@��� gY@���@ܾS@���`;?Y@����VS@���?DY@���`S@���PY@���S@����GY@���3S@���@OY@���aS@���@icY@���@ S@���aY@���S@���.fY@��� S@���uY@���S@��� ~Y@���`QS@���ѐY@���@ S@���@ Y@���@S@���#Y@����ES@���@Y@����S@���Y@����eS@���Y@��� S@���Y@��� &S@���Y@���`S@���@iY@����S@���`ܲY@���@_S@���@UY@���S@���Y@���S@���Y@���[S@���Y@���@S@��� Y@��� S@����;Y@���S@���Y@���HS@����Y@���� S@���#Z@���RS@����KZ@���S@���`kY@���S@��� Y@��� S@��� !Z@���*S@��� !Z@���S@���#!Z@���S@���@Z@��� fS@���z(Z@���S@���3*Z@���S@���k%Z@���S@���\.Z@��� fS@����q0Z@���@6S@���`f.Z@���S@���`:Z@���@S@���JZ@����ɳS@���@UPZ@���S@���`;OZ@���ϭS@���ZZ@���`S@����WZ@����S@���0Z@���S@��� Y@��� S@��� Y@���S@���OY@���@xS@���Y@���S@���`Y@���3S@���@.KY@��� S@���O:Y@���@ӆS@���@FX@���@|S@���)X@����}S@����eX@���(|S@���`'4\@���@R@���3 \@���R@���[@���`yR@���@@[@���R@���@[@��� ʒR@���[@���R@��� [@���jR@��� J[@���ߗR@���-[@���R@��� [@���BR@���&[@���@R@���\@���@OR@���-\@��� R@���M\@���)R@���8Y\@����R@��� [\@����5R@���P\@���PR@���&>\@���@_R@���`'4\@���@R@���SjU@���@­R@����FU@����R@���HU@���̰R@��� ^U@���@R@����#iU@���`R@����kU@����eR@���SjU@���@­R@��� 6Z@���(S@����Z@���S@���?Z@����S@����Z@����,S@����դZ@���S@���Z@����nS@����MZ@���@_S@���Z@����S@���Z@���qS@��� ҟZ@���S@���Z@���@`S@��� 6Z@���(S@���``@��� R@���X`@���8R@����2`@���@R@���@`@���@ R@���@E`@����R@����V`@���@R@���`@���R@���A`@���`R@���@`@���@.R@���a@����R@���a@���@xR@���``@���R@���`@����R@����a@���@_R@����h�a@���2R@���``@��� R@���oU@���lR@��� fjU@���@R@���{sU@���HR@���|U@����R@���9U@��� &R@���'U@���@hR@���@.U@���@R@���U@���`R@���@}U@����VR@��� ~U@���@R@���oU@���lR@����#)S@���S@���@ -S@���S@���@'S@���@S@��� S@���qS@����S@���(S@���S@���@gS@���S@���S@���S@���0S@���� S@���@S@���@S@���SS@����!S@���S@���gS@���9S@����cS@���@S@����#)S@���S@���|L@���R@����CJL@���ѬR@����5AL@���R@���.7L@����ER@���`5L@���qR@���=L@����R@���<L@���@ӲR@��� L@����R@���@4K@����R@����K@���R@��� OL@���`R@��� ,L@���ͻR@��� D<L@����R@���5L@����=R@���\K@���@NR@���� K@���R@���`K@���rR@��� VK@���bR@���` K@���R@���`K@���@R@��� L@���R@���IL@���R@���0L@����R@���<L@���AR@���P9L@���@ R@���FBL@���zR@���@uL@���R@���pL@����R@���@-`L@���/R@���`]L@���IR@���lL@����R@��� +L@���@R@����L@���R@���L@���R@��� mL@���R@����#L@���R@���@-M@���9R@��� M@���@R@���@ L@���@6R@���@-�M@���@%R@����&M@���cR@���]M@����R@���` eM@����R@���M@���R@���)+N@��� R@���*N@����S@���9N@����S@����MN@��� S@����eGN@����$S@���@XjN@���S@���9=N@���@pS@���>N@���`�S@���@N@���S@��� N@���@WS@����N@����S@���yN@���@S@���`NsN@���@ S@��� N@���@ S@���~N@���S@��� N@���S@���`5N@���S@���(4O@����VS@��� /O@����=S@���6O@���� S@���tQO@���@ S@���`0UO@���S@����jO@���S@����oO@���S@���2O@���@ S@���O@���`S@���`P@���S@����P@��� S@��� +P@���@6S@����*P@���S@���6P@���@S@���SJP@���S@���cP@���B%S@���P@���@!S@����vpP@���+S@���|P@���/S@���qP@���0S@���RP@����6S@���3P@���@S@��� Q@���<S@���AQ@����<;S@���3Q@���r7S@���0Q@���@5S@���0Q@����D4S@���;Q@���2S@���09Q@���z0S@���@9Q@���.S@���AQ@���P-S@���6Q@���*S@���82Q@���%S@���@5Q@��� $S@����<;Q@���#S@���Q@���PS@��� ~Q@���@NS@���@ Q@���S@���@Q@����<S@���@ Q@���!S@���{P@���ZS@���8P@���bS@���@rP@����ER@����O@��� R@���O@���R@���O@���PR@��� O@���R@��� O@���zR@���O@����UR@���փO@���R@���`O@��� R@���iO@���@hR@���`YN@����R@��� ,N@���@R@���`N@���|R@���N@���@FR@����ѰN@���qR@���ǰN@���'R@���`N@���`R@����N@���@FR@���`N@���@R@���`_N@���R@����gN@���R@���`N@���@R@���UN@����UR@����vHN@����<R@���(LN@���`R@����?N@����ER@���9N@���R@���B N@���@R@��� PN@��� ~R@���WN@����R@���zDN@����R@���N@���R@����N@���R@���,N@����<R@���.N@���`R@���!N@��� R@���`M@���@R@���M@����$R@��� \M@���R@��� M@���R@���@M@���`yR@���`qM@��� R@��� M@���@%R@���M@���R@���'M@���ըR@���M@��� fR@����M@���R@���M@���R@��� `M@���R@���גM@���R@���aM@���ϝR@���`[M@���R@���VM@���तR@��� ~QM@���சR@���`GIM@���R@���tQM@���R@���`SM@����R@���q\M@����eR@���\M@���R@���DM@���@%R@���SM@���ύR@���@)M@����ҋR@����'M@���*R@���` M@���@GR@���@"M@����R@��� =BM@���@ÈR@���\&M@���R@���`M@���R@��� ,M@���R@��� M@���SR@���1 M@���R@��� >M@���@܂R@���`M@���`R@����M@���~R@���`L@���@R@���UL@���R@���L@���RR@���L@���@ۇR@���`GL@���R@���`L@���ބR@���8L@���@ۃR@����L@����zR@���`L@���xR@���(L@��� wR@���L@���`isR@���@L@���rR@���`GL@���mR@��� L@���qR@���L@����uR@���[L@���@wR@���L@��� sR@���L@���ajR@���L@��� fR@���@pL@���cR@���z|L@���3fR@���`gL@���jR@���\L@���kR@���`L@��� hR@���\L@���c`R@����ɟL@���`^R@���@oL@���:\R@���JL@���@ZR@���@qL@���SR@���aL@���@NWR@����_L@���@UR@���I_L@���`PR@���@\L@���@OR@��� L@���`SR@���`_L@���UR@���L@����YR@����K@����n[R@��� K@���@[R@��� UK@���XR@���K@��� fVR@���mK@���SR@���@hK@���XR@���`_|K@����M\R@��� dK@���[R@����;K@���TR@���K@���7WR@����K@���XR@����4K@���|^R@���%K@����]R@���K@���@_R@���`e?K@���`fR@���`qK@���mR@��� iK@��� kR@���@oK@����nR@��� ymK@���nR@��� >K@���ZlR@���3K@���iR@���K@����]fR@���`J@���oR@���J@����,qR@���(J@���sR@���`J@����qR@��� 2J@���@qR@���K@���JzR@���LK@���|R@���fK@��� ~R@��� JK@���R@���`ʆK@���7R@���qK@���@XR@��� K@����eR@���K@���R@����K@���`R@����K@����5R@���hK@���R@���@EK@��� >R@���@K@���@R@��� yK@���R@���`0K@���:R@���"L@���R@���!L@���R@����ML@���R@���3L@���@۟R@��� t L@���@R@����L@���@R@��� UK@���R@���K@���R@���aK@���RR@��� K@���R@���`K@���R@���@K@���9R@��� ,K@���8R@���K@���R@���K@���R@���`&L@���tR@��� x6L@���R@���|L@���R@��� jH@���@.Q@��� KH@���@.Q@���`%H@����6Q@��� D$H@���@p9Q@���H@����8Q@���'H@���=Q@���!"H@���@x>Q@���H@���?Q@���[H@���`EQ@���@!H@���GQ@���`<#H@���NQ@���!2H@���tUQ@���`GQH@���l\Q@���xH@���q`Q@���@H@���Z`Q@��� U I@���@QQ@��� 'I@����]JQ@���a*I@���GQ@���I@���@@Q@���`HI@���@`?Q@����I@���!BQ@���I@���'IQ@���I@����IQ@���&H@����5AQ@���H@���z@Q@��� 2H@���{?Q@��� nH@���4Q@��� jH@���@.Q@����vN@���`T@��� N@���T@���M@���T@���@hM@���`T@���M@���"T@���M@��� #T@��� DM@����#)T@��� \M@����/T@��� >M@����1T@���@M@���[3T@���  N@���j6T@���` N@���k5T@���(M@���3T@���'N@��� 4T@���N@����8T@���O@���:8T@���` O@���2T@���`$O@���'1T@���@O@����.T@��� O@��� f*T@���`O@����(T@���`6N@���j&T@���!N@���@%T@���@N@����!T@����vN@���`T@���FL@���q,T@���7WL@���3T@���`K@���@8T@���`K@���:T@���K@���=T@��� ~K@���<T@���hK@���@6@T@���`_TK@���I?T@���6K@���`AT@����MK@���GT@��� [XK@���GT@���K@����@T@���JL@����BT@���LL@���>T@���`fVL@���@;T@���mL@����#9T@����L@���5T@���L@���3T@���!L@���1T@����L@���,T@���FL@���q,T@��� %e@���zdQ@���e@����dQ@���e@���`lQ@���e@���pQ@���d@���qQ@���d@���`tQ@����dd@���uQ@���`fd@���@?|Q@���e@���PQ@���y-e@����nwQ@���.e@���tQ@��� -e@���pQ@���(e@����pQ@���})e@���@iQ@��� %e@���zdQ@���2O@����+T@��� ,AO@���3T@���ZGO@���@6T@��� \O@���@O>T@��� O@���a>T@���y P@����$@T@���` P@���CT@���P@���ET@��� P@���8JT@���7#P@���`LT@���?P@���@JT@����EOP@���HT@���\P@���AT@���`iSP@����?T@����]P@���<T@����]P@���`;T@���``'P@���`0T@���2O@����+T@���@uN@���:T@���0 N@���a>T@���2N@����w?T@���`N@����(@T@���TN@���ET@��� N@����GT@���@N@���`FT@���N@���@FBT@���aN@���{;T@���@uN@���:T@���kK@���.T@���WK@���0T@���AVK@����1T@��� C K@���@1T@���J@���3T@���`�K@����4T@���`~!K@���6T@���>iK@����#5T@���{K@���8T@���K@���@9T@���K@���I3T@���K@����v0T@���kK@���.T@���M@����$lQ@��� M@���@oQ@���UM@���:pQ@���M@����rQ@���ϹM@���@ xQ@���`zM@���1|Q@���|M@���zQ@���M@����wQ@���@M@���@vQ@���){M@���ZxQ@��� wM@���yQ@���DKM@���փQ@���EM@���Q@���MM@���̈Q@����M4M@���@Q@���`_<M@���9Q@���1dM@����Q@���fM@���Q@���?M@���9Q@���:LM@���0Q@���`GYM@���@Q@����#aM@���ǘQ@���\M@���Q@���:M@���Q@����M@���Q@���`M@���ėQ@����^M@���(Q@���`M@����,Q@���M@���Q@��� M@���Q@���`N@����Q@��� )N@���|Q@���4N@���@}Q@���`=N@���@zQ@���9N@���@_xQ@���`FN@���sQ@���`H8N@���lpQ@����M<N@���`nQ@���M@����$lQ@��� G@���T@���`G@���`T@��� =G@���T@��� G@����E#T@��� G@���$T@���YF@����5!T@���{F@���"(T@���G@���@60T@���G@����2T@���G@���4T@����|G@���6T@���q$H@��� 4T@���QH@��� /T@���`?H@���r/T@���`<;H@���@-T@���`H@���*T@���>aH@����'T@���BH@����(T@��� G@���'-T@���G@���0T@���FG@����/T@���G@���@.T@��� G@���7+T@���HG@���+T@���@ɧG@���P)T@���൸G@���@&T@���8G@����%T@��� UG@���@ (T@����G@���@N#T@���SG@���#T@����SWG@���@!T@��� CG@���K!T@���`~AG@���[T@���CG@���3T@��� G@���T@��� tBL@���|JT@���1L@���KT@��� 1L@���@GMT@���pL@���@ONT@���*K@����LT@��� 7K@���@NT@���K@���bQT@���@K@���bQT@���K@���RT@���K@����vTT@���`ML@��� fRT@���` DL@���HPT@���*JL@����,QT@��� 1L@��� TT@���*L@����vXT@���`L@���XT@���L@����RT@���` L@���QT@��� L@���:PT@��� tBL@���|JT@���`6a@��� %OK@���`4a@���*RK@���@/a@���oK@���!.a@����eoK@���+a@���iK@���`'a@���WcK@����$2a@���@-K@����4a@���`K@���j6a@���K@���`>a@���K@��� ?a@���K@����$<a@��� K@���@?a@���K@���FEa@���ஆK@����Fa@��� K@��� Aa@���zK@���?a@���fK@���`6a@��� %OK@���`O@����^eT@���`\O@���gT@����#O@���kT@���[O@���nT@���i[O@���lT@����O@���`nT@���O@���lT@���(O@���jT@��� O@���iT@���O@���gT@���`O@����^eT@���A@���@=P@���`A@���BP@���8A@���CP@���A@���FP@���`A@���@IP@��� mA@����nKP@���@A@���@IP@���`A@����KP@���A@���@GP@���oA@���@-DP@��� A@���@FP@����A@���@CP@���7A@���� BP@��� A@���?P@���A@���@=P@���`ikW@����S@��� LW@���T@��� W@��� T@����, W@��� T@���1W@��� f T@���l8W@����< T@���@6W@��� ~T@���W@��� fT@���@hTW@���@pT@���@xFW@����$T@���`V@���@oT@���`V@���T@���V@���@%T@���V@���(T@���V@���T@���@W@���@GT@���cV@���cT@���@OV@���T@���!2W@���0!T@���H4W@���@ %T@���`1W@����&T@���TW@���3T@��� GW@���@p1T@���W@���@?0T@����W@���1T@���*W@����5T@���l,W@����8T@���IW@��� ;T@���@XJW@���<T@���ZDW@���/>T@���IW@����M@T@����ѴW@����$HT@���W@���@MT@��� W@���MT@����=W@���@OT@����W@����UQT@����W@���RT@���)#X@���@DT@���"X@���AT@���@.X@���@?@T@��� ~)X@����>T@���=X@���@9T@����rX@���@h4T@���oX@���2T@���tX@���32T@����wX@���z0T@����oX@����</T@���@W{X@��� .T@���}X@���@,T@���`lX@���@O*T@���jRX@���/*T@����<SX@���`*T@���IX@���)T@���[KX@���@?(T@���BX@���'%T@��� >AX@����^!T@���MX@����T@���@KX@���HT@����NX@���@T@���ZX@����T@��� ZX@����eT@���LX@���T@���W@��� T@���W@���@T@���W@���T@���W@����T@���`ikW@����S@����w>@���@^Q@���@'->@���:dQ@���$>@��� 6hQ@����>@���chQ@���y>@���jQ@���`60>@���jQ@���>@����%cQ@���@>@���aQ@���>@��� cQ@���D>@����fQ@���h>@���@kQ@���>@���rQ@����w>@���@rQ@���g?@���`mQ@���`eg?@���kQ@���@zT?@���hQ@���R?@���)gQ@����t?@����VlQ@���?@����kQ@���n?@���clQ@���?@���@nQ@���?@��� tQ@���?@���/vQ@���@?@���`uQ@���@@����,qQ@���! @@���@XrQ@��� @@���sQ@���P?@����{Q@���?@���@}Q@���`%@@���@g}Q@���B@@���@guQ@���B@@���@rQ@���@\@@���@rQ@����@@���snQ@���@@����kQ@���ԅ@@���gQ@���@l@@���@GeQ@���@@@����jQ@���`e@@���@pmQ@���@@���@oQ@���` @@���oQ@���`@@���@pmQ@���` @@���jjQ@����v?@���tiQ@����@@��� gQ@���@@���cQ@���`5@@����]fQ@���7@@����VdQ@���X2@@���@ObQ@��� ?@@���@`Q@���>@@���_Q@��� [@@���@`[Q@��� $@@���@N[Q@���`<;@@����e_Q@���rs@@��� ^Q@���@?h@@���@\Q@��� c@@���8ZQ@���Xr@@���b]Q@���@@����=^Q@���*@@���]Q@��� =j@@���`UQ@���l@@��� SQ@���z@@���XQ@��� ٩@@���@\Q@���@@����[Q@��� @@���WQ@���@4@@���UQ@���@@@����RQ@����S@@���QQ@���`@@����#QQ@���@@@����NQ@��� @@���`MQ@���b@@���rKQ@����}@@����CQ@���@#@@���=Q@���` @@���@G=Q@���@@���@BQ@���@@���CQ@����@@���@EQ@���@@���KQ@��� t@@���SQ@��� @@���TQ@���`/A@���@6TQ@���`UA@����OQ@���`A@���MQ@���ӖA@���rKQ@���A@���@MQ@���A@����VPQ@���ӖA@���QQ@���A@����MQ@���@4B@���ABQ@��� B@���!*Q@��� B@���@'Q@��� *C@���Q@���3C@���kQ@���abC@���*Q@���MC@���`Q@���@C@����Q@���QC@���@_Q@��� C@��� Q@��� C@���Q@����LC@���sQ@���@C@���{Q@����C@���a Q@��� UC@���� Q@���C@��� Q@���`ND@����P@���@/D@���tP@���4D@���P@���(D@���P@���1D@���`P@���`~AD@��� P@���GD@����P@���HD@���P@���&VD@����P@��� gD@���AP@���`6xD@���P@���bD@���P@���@D@���P@���D@���P@����D@���YP@���`D@���|P@���`ʎD@���P@���ƑD@���P@���D@���P@���D@����eP@���@WD@����5P@���AD@���@_P@���`D@���P@���D@��� ڼP@���D@���P@���\D@����P@���[D@���!P@����8D@����P@���``C@����P@��� ?C@���[P@���-B@���@P@���B@���P@���8A@����#P@����pA@���@FP@���@aA@���ΦP@���TA@����P@��� 2<A@��� &P@���g-A@���P@��� \/A@���qP@��� 7A@����P@���`N A@���P@���`A@���P@��� A@���@P@���@A@���KP@��� A@��� >P@���9@@���P@��� @@���P@���@@@����P@���@@���ǴP@���@@����P@���`%@@���aP@��� @@���*P@��� n@@����ɷP@���`wg@@���`QP@��� g@@����P@���`{@@����P@���b@@���@P@���h,@@���@P@���!@@����5P@���`?@���@XP@���?@���@P@��� @@���@P@���(@@���P@��� ?@@���*P@����H@@����P@���`%?@@���P@��� 5@@���ZP@��� Uu@@���P@��� v@@���P@���e@@����P@���`ʦ@@����P@����d@@��� P@���@ڐ@@���@P@���`M@@���P@���`M@@���@.P@��� @@���@P@���>@@����^P@���I@@���P@���{@@���SP@��� lj@@���`QP@��� @@���P@���`<@@���@ӞP@����@@���@P@��� @@���P@���'@@���ZP@���h@@���ΚP@���@@����P@��� @@���P@���@@���@XP@��� @@����5P@���@@���P@��� \@@���P@����@@���৐P@���@@@���@XP@��� C A@���P@���?A@���׆P@���@\A@���~P@���UA@���:|P@���'mA@����^yP@��� jA@���tP@��� sA@���`tP@��� noA@���qP@���W{A@���mP@���tA@���lP@��� mXA@���rsP@���VA@���@GqP@���`A@���@lP@���PYA@���kP@���dA@���fP@��� [A@���0aP@���@#QA@���@N_P@���VA@����=^P@���(TA@���@_\P@���`x>A@����\P@���@@A@���ZP@���.A@���jZP@��� 4A@���@WP@��� U=A@���@QP@���PA@����OP@����dXA@���KP@��� [PA@���JP@����dhA@���@AP@����YA@����>P@���eA@����U=P@��� wA@����5P@����d`A@���b1P@���fA@���/P@���mA@���32P@���(|A@���@1P@���@#A@���@1P@���PiA@��� f.P@��� hA@����-P@���uA@���@*P@���zA@���z(P@���dA@���#P@����*A@���@hP@���`6A@���P@���-A@����,P@��� A@����P@��� VA@���@FP@����A@���P@���A@���KP@��� A@����P@��� A@���P@���|B@���@h P@����B@���ZP@���@ B@���`P@���$B@���P@���B@���@xP@���@%B@����P@���@B@���`O@���B@���`HO@��� B@���O@���`~B@���`NO@���B@���8O@��� B@���lO@��� C@���@.P@����C@���� P@��� yB@���� P@��� VB@���{P@���``C@���P@���C@���P@���-B@���P@���pB@����P@���B@���P@���B@���@WP@����B@���P@���HB@���P@���YYB@���`.P@��� GB@���`/P@���`8B@���s:P@���`=B@���<P@���RB@����:P@���OjB@����<?P@��� oB@���@DP@���jB@���JJP@��� noB@����KP@���7B@����LP@���@B@����BP@���lB@���@@P@����B@���*>P@���B@����,=P@���@ C@���@6P@���q4C@���|6P@���.C@���3P@���`<3C@���@g1P@���'C@���@`3P@����C@���0P@���`_C@���/P@���`C@����+P@���C@���@F*P@����vC@����)P@���C@���*P@���@^C@���Y-P@���'-C@���@h0P@���;C@���@/P@���>C@���@0P@���5C@���2P@���@:C@���4P@����SwC@����/P@���C@��� #P@���C@����n#P@����C@����&P@���C@����&P@���C@���*P@���9D@���S"P@���CD@���"P@���CD@���$P@����;D@���(P@���4D@���/P@���!:D@����1P@���BD@����$0P@���`8D@���@2P@���h4D@���`7P@���@4*D@��� ~=P@���D@���`iCP@����C@���@6XP@��� C@���@`[P@���C@���`P@��� C@���`dP@���`C@���)gP@���4D@����qP@���@^]D@��� f~P@���D@���P@���aD@���@P@���E@���tP@���8E@���@¡P@����JE@����P@���8VE@���@P@��� &FE@���:P@���༂E@���`P@��� E@����P@���lE@���P@���`E@���̔P@���@E@���P@���E@���`ԍP@���'E@���P@��� E@��� &P@���`źE@���!P@��� E@���3~P@���`<E@���@gP@���E@���`P@���YE@���P@���!E@���PP@���E@���̈P@���'E@��� P@���`eF@���lP@���`F@���@ P@���ZF@���zP@���F@���xP@���F@���P@���F@���P@��� D F@���@hP@��� F@���ՌP@���`GF@���BP@��� F@��� ~P@���p-F@���P@���0F@���@.P@���`6F@���`P@����GF@���@P@���=F@���@%P@���-F@���AP@���>F@����P@���@p=F@���P@���(F@���@P@���@'F@���P@���0F@���P@��� F@���@`P@��� [E@���@xP@��� E@���P@���@E@����P@���E@���'P@���(F@���@P@���@ F@��� P@����F@���!P@���rF@���@P@���F@���9P@���cF@����<P@���@ F@����P@���B F@���P@���iF@���PP@����!F@���P@����F@���@P@���`NF@���H�Q@���`_4F@���Q@���@-F@���Q@���`F@����Q@���`eF@���ZQ@���`xF@��� Q@����}E@����&Q@����lE@���@*Q@���E@���+Q@��� \E@���I+Q@���` E@���k%Q@���@F@���/"Q@���LF@���#Q@���F@���$Q@���F@���aQ@���2G@��� Q@���F@���Q@����vF@����eQ@���G@���@Q@��� 6G@��� Q@���EG@���jQ@��� DG@���Q@��� =JG@���P@���`_\G@����P@����[G@���P@���@WG@���@P@���yF@���P@���@vF@���@P@���F@���P@��� CF@���@WP@��� F@���rP@����F@���@pP@��� F@����P@���F@���P@���@wF@���BP@��� tF@���@P@��� wF@���`P@���F@���@OP@���`F@��� ~P@����5G@���ִP@���`HG@���P@��� LG@���KP@���`Y1G@���@WP@���ِG@���@-P@���G@���P@��� >G@���BP@��� G@���P@���{G@���P@��� G@��� P@��� G@���|P@���G@���@P@��� G@���P@���9G@���1P@���G@����P@����#G@��� P@��� G@���@XP@���G@���P@���G@���tP@���H@����P@���` H@����P@��� H@����P@���8H@���@P@���,H@����P@���;H@���/P@���VH@���tP@���}H@���P@���cH@���P@���'H@���P@���H@���@P@���aH@���P@���7gH@���@gP@���eH@���PP@���9MH@����P@���`PH@���P@���xH@���3P@���H@���P@���H@���P@���`$PI@���@Q@���`NcI@���Q@���I@���@oQ@���!I@���Q@���� I@���@Q@���|I@��� Q@���J@����$Q@���`J@��� &"Q@��� &J@����v Q@���IJ@��� Q@���`J@����M Q@���-J@���@XQ@���$J@���@Q@���`&J@���Q@��� !J@���`Q@��� J@���@Q@���!J@����Q@���a"J@���Q@���@UJ@���@oQ@���']J@���Q@���B]J@���Q@���GJ@���@"Q@���@J@����E'Q@���OJ@���'Q@����<SJ@���)Q@���=J@���(Q@����^5J@���t%Q@��� #J@���&Q@���&J@����'Q@��� mJ@���@8Q@���@J@���@X>Q@���DK@���@-@Q@���2CK@���S>Q@���`J@����9Q@���J@���6Q@���PJ@���@8Q@���J@���@W7Q@���`NK@���5Q@���J@���0Q@���qJ@����.Q@���J@���`+Q@���J@����)Q@���` J@���@ (Q@���J@���%Q@���@ J@��� &Q@���`HJ@���Q@���`J@����Q@���8J@���`Q@��� J@���@gQ@��� J@���jQ@���J@���Q@���J@���Q@���J@���`Q@���`J@���Q@���J@���cQ@��� DJ@���Q@���J@����Q@���`J@��� Q@��� K@���Q@���`K@����Q@��� 2K@���@?Q@��� K@����Q@���ZK@���@ Q@���K@���@ Q@����^=K@���{Q@���FK@���`Q@��� gUK@���[ Q@���biK@��� Q@���pK@���` Q@���`AvK@���@Q@���@pmK@���`QQ@���`HxK@���@Q@���`K@���!Q@���*K@���$Q@���K@���3*Q@���rCL@����w'Q@���?L@���@7%Q@��� IL@���(Q@���`SL@��� (Q@����eoL@���$Q@���ԍL@����"Q@����L@����,%Q@���`L@���r/Q@���`L@���@ 0Q@���`L@���32Q@���L@���q4Q@���UL@���36Q@���'M@���8Q@���IM@���`7Q@���`GM@����U5Q@��� M@���@1Q@���/M@���@0Q@���`+M@���.Q@���7M@���@/Q@���`6M@���0Q@���z$M@���@2Q@����v M@���5Q@���` %M@���9Q@���LM@���=Q@���M@����?Q@����^M@����>Q@���qM@����;Q@���ߋM@���S:Q@���@WM@���Y5Q@���ஶM@��� /Q@����M@���@,Q@���M@���,Q@����eM@����n'Q@���`M@����$Q@���M@���!Q@���M@����Q@���bM@���Q@���`HM@���Q@���@.M@���@Q@��� M@���Q@��� M@���Q@���@M@��� ~!Q@���PM@���(Q@��� M@��� *Q@���`/M@���!.Q@���` N@��� +Q@���@.7N@���K-Q@���LN@���@ 0Q@���@ofN@���8Q@���ztN@���:Q@���xN@���>Q@��� vN@����]FQ@���\fN@����JQ@����M\N@����JQ@���]N@���FQ@���`qTN@���`FQ@��� JN@���@HQ@���3JN@���QQ@���/N@���ZQ@���#N@���`i_Q@���@N@���dQ@���`N@����hQ@��� $N@����jQ@���\6N@���@jQ@���`UN@���{kQ@���PN@���nQ@����M\N@����nQ@���XN@���pQ@���YN@���sQ@���`0eN@���@xvQ@���@wN@����<wQ@���1N@���sQ@���`O@���lQ@���` P@���abQ@���b=P@���zTQ@���?P@���JRQ@���4P@���/RQ@���0P@���@6LQ@���@1P@���@IQ@���3P@���'IQ@����V<P@���MQ@���:P@���OQ@����MDP@���kQQ@���@_xP@����GQ@���@ xP@���@oFQ@���@WkP@���GQ@����MP@���5Q@����P@���14Q@���@P@���2Q@���@pP@���@,Q@����P@���@6,Q@���P@���� "Q@���3 Q@���SQ@���Q@���kQ@���@ Q@���Q@���Q@���Q@���`Q@��� Q@���Q@���c Q@����Q@����^Q@���@)Q@���Q@����5%Q@���BQ@����$Q@���Q@���9Q@���R'Q@���FQ@���7Q@���>Q@���7Q@���@=Q@���@9Q@���NQ@���B=Q@���@Q@���q<Q@���bAQ@���=Q@���z4Q@����]:Q@���)Q@���`:Q@���Q@����>Q@���Q@��� >QQ@���Q@���jVQ@����Q@���@XQ@���Q@���_Q@���@pQ@����<cQ@���Q@����bQ@���Q@���@ `Q@���@%P@���^Q@���@OP@���aQ@����<P@���`eQ@���@ܾP@���lQ@����EP@����EkQ@���׾P@���0iQ@���@ܶP@���@_hQ@���@ P@���@FbQ@���P@����^aQ@���P@���bQ@���8P@���@eQ@���P@���zlQ@���@P@���Q@���P@����Q@����P@���@Q@����MP@���Q@���`ݽP@���@Q@���`P@����U}Q@���P@���Q@���P@���@Q@���P@����Q@���@P@��� &Q@����P@���Q@���@P@���Q@���@P@���Q@��� >P@���@gQ@���P@���@OQ@����^P@���Q@���P@���@Q@����P@����Q@���P@���մQ@���@P@���tQ@���P@���Q@���@gP@����Q@���`iP@���̸Q@���P@���`Q@���`P@����Q@���RP@����Q@���P@���@Q@����MP@����MQ@����wP@���Q@���rP@����Q@���@ P@��� Q@���*P@���Q@����P@���Q@����P@����$Q@���@P@���@.Q@���@Q@���@gQ@���Q@���Q@���K1Q@���@R@���36Q@����5R@����:Q@��� R@����w7Q@���!R@����9Q@���@%#R@���@>Q@����*R@���?Q@���`,R@����MQ@���1R@���SQ@���H8R@���SQ@���@;R@���WQ@���`y=R@���@aQ@���a>R@���@orQ@���=R@��� &rQ@����;R@���cQ@���:R@���cQ@���P9R@���Q@���:R@����Q@���7R@����# R@���@4R@����U5R@���Y-R@����=.R@����v,R@���3R@���)R@����.R@����'R@���@%/R@���%R@���6R@���@ R@���2R@����R@���q8R@����R@��� .R@��� R@����.R@���RR@���$R@���R@���#R@���`Q@��� R@����Q@����R@����Q@���R@����$Q@���)R@���tQ@����<R@���Q@���`Q R@���jQ@���@oQ@����Q@���[Q@����nQ@���Q@���Q@���Q@��� Q@���R@���Q@���`%R@���Q@���[+R@���@Q@����'R@����Q@����5R@���ķQ@���@g5R@���@µQ@����+R@���Q@���`y1R@����]Q@���@1R@����Q@���!R@���@Q@���[R@���`Q@���R@����$Q@����&R@���ċQ@��� 'R@���Q@���R@���Q@���1 R@���Q@���@(R@���JzQ@���+R@���avQ@���@)R@���@oQ@���� R@���YiQ@����#R@���fQ@���(R@���\Q@���&R@����ZQ@����R@���@FZQ@���$R@���@-XQ@���)R@���SRQ@��� R@���8NQ@���R@���`KQ@���R@���@HQ@���K%R@����;Q@���.R@����6Q@��� `R@���%Q@���iR@���@WQ@���gR@����Q@����eR@���@Q@���fR@���Q@���@cR@���`Q@���@\R@���@Q@��� &ZR@���IQ@���ER@���`y Q@���HR@���@X Q@���DR@����Q@���GR@����eQ@���'MR@���P@���LR@���*P@����UER@���P@����VDR@���RP@��� ~IR@���P@���HR@���P@���@XFR@���P@���@DR@����]P@���>R@����^P@���6R@����P@���8&R@���P@����"R@���@P@���"R@���'P@����5R@����P@���R@���`P@���R@����VP@����R@����P@���|R@���P@���@ R@���P@����R@���P@���R@���`P@��� R@���P@���@ R@���@?P@����eR@���P@���cR@����P@���*Q@����DP@����R@���P@����nQ@���/P@���SQ@���`QP@���/Q@���aP@���Q@���SP@���{Q@��� ڼP@����Q@���@۷P@���Q@���qP@���Q@���@˱P@����Q@���P@���@FQ@���� P@���`Q@����,P@���@Q@���@gP@��� Q@���īP@���`Q@��� P@����DQ@���P@���Q@��� fP@���Q@����P@���@6Q@���P@����Q@���@P@���`iQ@���P@����<Q@���P@���HQ@���@P@���|Q@��� P@���Q@���ৰP@����ٝQ@����P@���JQ@���P@���Q@���@WP@���@Q@���`yP@���yQ@���`P@���@wQ@���P@���3nQ@���P@���eQ@���bP@����fQ@���@P@���gQ@���@xP@��� fJQ@���'P@���=Q@����wP@��� >Q@����P@���?Q@���@OP@���EQ@����P@���GQ@����P@����=FQ@���P@���GQ@���@P@���XQ@���zP@���@oQ@����]P@���@`{Q@���P@���@.Q@���@P@���@`Q@���{P@���Q@���8P@���Q@���� P@���R@��� P@���`yR@���P@���R@���@-P@���R@���P@���@ =R@���@oP@���:@R@���P@���`R@���P@���2cR@����P@���8vR@��� ʾP@��� zR@���qP@���|R@���@.P@���@yR@���P@���@OR@����P@���R@���P@����VR@���P@����eR@���`P@���R@���SP@���R@���Q@���R@���`iQ@����R@���@Q@���R@���'Q@����ɛR@���@FQ@���@R@���@o"Q@���sR@���@.'Q@���cR@��� +Q@����R@���/Q@���1R@���1Q@���@R@���H<Q@���YS@����>Q@���['S@���0=Q@���,S@���@x6Q@����n'S@���2Q@���@+S@���/Q@����8S@����M,Q@���@%GS@���:$Q@���HS@���9%Q@����EGS@���S&Q@���LS@���@g%Q@���TS@��� Q@����OS@����UQ@���@SS@���@ Q@���SS@���Q@���KS@���Q@���JS@���@Q@����VS@���jQ@����MS@���!Q@����$PS@����Q@����DLS@���jP@����OS@���P@����ESS@����^P@���@MS@���P@��� ~ES@���@P@���DS@���`P@���IGS@���@ P@���TS@���@ P@���lS@���P@���@ lS@���P@���S@����MP@���{S@���P@����S@���P@���S@���@oP@����S@���ZP@���ǤS@���@ P@��� S@���/P@���)S@����P@���@pS@���P@����DS@���7P@���S@���@P@���@NS@����vP@���wS@���rP@����wS@���P@���@|S@���3P@����pS@����P@���oS@����EP@����iS@���AP@��� ^S@���P@����]S@���@P@��� ^S@���*P@��� ~eS@���ZP@���J^S@���|P@���1`S@����Q@���@eS@���s Q@���@oS@���/Q@���S@���Q@����S@���@Q@���}S@���@Q@���yS@����Q@���|S@���sQ@���`zS@��� >!Q@���qS@��� >!Q@���mS@���R'Q@���oS@���!.Q@����kS@���`8Q@����wgS@��� f:Q@���@O:S@���@Q@���@-S@����vHQ@���R@���PQ@���R@��� OQ@���@R@���zHQ@���R@���FQ@����R@���@FQ@���IR@����IQ@���~R@���DQ@����=zR@���@EQ@���oR@����JQ@����DpR@���LQ@���uR@���SQ@��� >yR@���@[Q@���!vR@���_Q@���@aR@���nQ@���@ aR@���ZpQ@���@iR@���uQ@����,qR@���Q@���kR@���@hQ@���@mR@���|Q@���:xR@���`Q@���@R@���Q@���PR@����]Q@���AR@���৬Q@���zR@���@Q@���@yR@����Q@���@xnR@����Q@���jR@���Q@���aR@���Q@���@UR@���0Q@��� BR@���tQ@����UAR@����eQ@���@6`R@���jQ@���aR@����Q@����]R@���Q@���^R@���@OQ@���@_dR@���@Q@���yR@����Q@���@R@���PQ@���PR@����R@���@R@���@R@����R@����%R@����R@��� f*R@���R@���3R@���@ R@���4R@���qR@����8R@���R@���@?0R@���`R@���/R@���R@���+R@���1R@���$R@���R@���@"R@���R@����"R@����wR@���R@��� R@���zR@����nR@���R@���R@���cR@���R@��� R@����R@���R@���R@���R@���@-R@��� Q@���@R@����Q@���/R@���Q@���AR@��� >Q@���tR@���`Q@���R@��� Q@���R@���9Q@���R@���Q@��� &R@����Q@���R@���Q@����R@���zQ@����R@���@NQ@���R@��� Q@���S@���Q@���S@���HQ@���@ S@���Q@���@F:S@���Q@���:S@����vQ@���l<S@���Q@���@`CS@��� Q@���srS@���Q@���@?xS@���`Q@���*zS@���@`Q@���}S@����ٽQ@���@S@���Q@���@.S@����$Q@���@.S@���Q@��� S@���9Q@���IS@���Q@����S@���Q@���@OS@���@NQ@���7S@���Q@���S@���@6Q@���S@���@Q@����S@���`ݽQ@���@S@����Q@���S@���Q@���@GS@��� Q@���S@���Q@���sS@���RQ@���S@���JQ@���S@���@Q@����S@���`iQ@���(S@���@pQ@���[S@����Q@��� ʎS@���Q@����{S@���ZQ@���� zS@����MQ@���@6S@���8Q@����=~S@���Q@���@nS@���@6Q@���1pS@���AQ@����jS@����=Q@���@MS@���)Q@���.S@���@pQ@���@S@���YQ@���YS@���`Q@����S@���@Q@���KS@���Z�R@���`:S@��� R@����VHS@��� Q@���_S@����Q@���JjS@���Q@���uS@���Q@���`S@���Q@���எS@���Q@����S@����R@���@O~S@���R@���vS@���@R@���@_S@���R@���XS@���R@���@ XS@��� R@���@^S@���` R@���@\S@��� R@���^S@���� R@����ekS@���1 R@���7{S@���@6R@���S@���@R@���@S@���@NR@���S@��� R@���4T@���R@���@6T@���@_R@���@h4T@���KR@����/T@���@.R@���3T@���@R@���*T@���ZR@���(T@���aR@���PT@����Q@���PT@���Q@����UT@���@Q@���oT@����Q@���T@���Q@���T@��� &Q@���T@���@WQ@���`T@���Q@���@T@����Q@���@%T@����Q@���T@��� Q@��� &T@���Q@����T@���@oQ@���qT@���:Q@���`yT@���Q@���T@���@Q@����vT@���Q@���)T@���޸Q@����T@��� &Q@���T@���`Q@���@pT@����wQ@����,T@���Q@���� T@����VQ@���T@���@Q@���ߓT@���SQ@���@oT@���@Q@���ஒT@���Q@���@T@���Q@����wT@����,Q@���AT@���Q@���T@����$Q@���T@���Q@���)T@����]Q@���IT@���ZQ@���BT@���Q@��� ~T@���@Q@���@hT@���@Q@���T@���sQ@���@T@����ѼQ@���T@���ֿQ@����ɻT@���̼Q@����MT@���cQ@���T@���@Q@���@T@����5Q@���T@���Q@���T@���@-Q@���T@���֟Q@���@T@���JQ@����,T@���@%Q@���@T@����Q@����vT@����,Q@���@T@����Q@���cT@���@Q@���JT@���@Q@��� &T@���͓Q@���`T@���@GQ@���T@���'Q@���YT@���Q@���@NT@���lQ@���T@����Q@���`T@���Q@����T@���Q@���T@���Q@���kT@���Q@���T@���Q@���T@���`iQ@���`T@���Q@���T@���Q@���@6T@���Q@���@-T@���@Q@���jT@����nQ@���@_T@���@-Q@���T@���@_Q@��� &T@���Q@����T@���{Q@���RT@��� >Q@���@T@���Q@���@OT@����DQ@���ޤT@���@Q@���`T@����R@���T@���@hR@����<T@��� R@���`QT@���`R@���lHT@����ER@���*.T@���!R@���b-T@����n#R@���73T@���a&R@����4T@���:(R@���*T@���)R@���@6(T@���.R@���@0T@���3R@���5T@���:R@��� 3T@���@.?R@����,T@����CR@���T@���ER@���cT@���@xFR@���� &T@���GR@���a"T@���PIR@���@gT@����eKR@���� T@���MR@���$T@���@NR@����"T@���KQR@���T@���SR@���T@����UR@���&T@���`Q\R@���`+T@���@_`R@���� T@���`_R@��� T@���dR@���$T@���eR@���@o6T@��� cR@���@aT@���iR@����T@���@iR@���32U@���`pR@����]NU@���lR@���_U@���anR@����=^U@���pR@����eU@����$tR@����]U@����yR@���U@����wR@���@oU@���uR@���U@���qR@����uU@���@-`R@���qU@���k]R@����rU@���VR@���`vU@���TR@���U@���OR@���U@���`QLR@���@oU@����GR@���@JU@���@r?R@���U@���ER@���U@���@OR@���zU@���@TR@���uU@���WR@���@vU@���^R@���@gU@���PaR@���RU@���{gR@���U@���lR@���U@���@mR@����#U@���buR@���U@���vR@��� U@����yR@���U@���@yR@���@U@���|vR@���@U@���HtR@����#U@���`vR@���@U@���@R@���U@���R@���@U@���R@���0U@����فR@���`U@���@NR@���޸U@����MR@���@U@���R@���[U@���rR@���U@���PR@���@%U@���R@���|U@���@ÐR@���H|U@����]R@���}U@����R@���SzU@���kR@���@XzU@���זR@���@ U@���@`R@���)U@���֓R@��� U@���R@���@.U@���@oR@����U@���R@���U@����MR@���U@���R@���@ܦU@���R@���(U@���R@���`U@���R@����U@���஖R@���@OU@���cR@���U@���`R@���@U@���R@���zU@���@GR@���`iU@���ஒR@���U@���@pR@����,U@���rR@���U@���R@���U@���R@���U@���R@����U@���@-R@��� fU@���`R@���@oU@���R@���@U@���{R@���U@���R@����zU@���R@���KqU@���R@����5U@���8R@���U@���@ðR@���U@���@_R@���@GU@���@۳R@����VU@����VR@���/U@���@6R@���U@���R@����=U@���AR@��� ڨU@���@?R@���@U@���பR@���HU@���@R@���`yU@����R@����,U@���R@���@ðU@����R@���tU@���R@���@U@����=R@���0U@����R@��� fU@���R@���U@����R@���`iU@����R@����U@����,R@���U@���`R@����wU@���R@����nU@���R@���U@��� &R@���U@���@R@����U@����һR@����U@���YR@���`U@���R@����<U@���AR@���U@����UR@���U@����$R@���AU@���`R@���U@���@FR@���@.U@��� fR@���@-V@���R@���9V@���`R@���@- V@���*R@���(V@���@R@����5%V@���R@����D$V@���R@���8V@���@R@���0EV@����R@���=V@����R@���@-PV@���1R@���ZV@���R@���nV@���R@���gV@���R@���JjV@���R@����wV@���@R@���@V@���@R@����$|V@���R@���|V@���@_R@���@GV@���R@���V@���[R@���@xV@���@OR@���V@���R@���kV@���tR@��� V@���R@���@vW@���R@����]W@����VR@���@ۃW@����eR@���hW@���R@����<cW@��� R@���@6\W@���@xR@����_W@���0R@���^W@���HR@���PYW@���R@���SW@����eR@���rSW@���@R@���ARW@���@xR@���=W@����wR@���@EW@���`R@���qDW@����R@���@8W@���'R@���`9W@���R@���4W@���R@����<;W@���`iR@����:W@���@NS@���)CW@���@-S@���`FW@����5S@���*NW@���S@���@XNW@���S@��� fJW@���S@���@HW@���S@����5YW@���@%S@���[W@���3S@����VW@���S@���qXW@��� S@���ZW@���S@����=ZW@����S@���@h|W@���S@����~W@���S@����5qW@���� S@����VW@���S@���W@���@%S@���׮W@���S@���)W@��� S@���AW@���� S@���7W@���S@����]W@���` S@���� X@���aS@��� X@����S@����wW@���S@����X@���`iS@���`W@����S@���H�X@����eR@���zW@����R@���W@����R@���W@���aR@���W@���R@���X@���@gR@���@X@���@`R@���@ X@����S@����*X@���!R@����&X@���cR@���X@���{R@����55X@���R@��� BX@���R@���PYX@���S@���(TX@���PS@���@?LX@����]R@���@OX@����#R@���MX@����nR@����vTX@���R@���WX@���`R@���uX@���`R@����sX@���kS@���@.cX@���[S@���pX@����S@���@yX@���`S@���@X@���@FS@���zX@���S@���@.X@���` S@��� X@���@% S@����EX@���aS@���`QX@���@S@��� X@���t S@���@WX@���` S@����X@��� S@���X@��� S@����X@���@F S@���X@���S@���X@���@ S@���@X@��� S@���X@���!S@���X@���`S@����X@���S@����X@��� >S@���X@���S@����X@���S@���X@���R@���X@���R@����5X@��� R@���`QX@���R@���X@���R@���X@���R@����X@���R@���/X@���bR@���8X@���aR@���1X@���@ R@����X@���@R@���@X@���!R@���@>X@���R@��� X@���lR@��� Y@����R@���� Y@���@R@���X@���R@���@X@���ZR@���X@���R@���bX@��� R@����X@���@R@���X@���@WR@���@X@���R@���� X@����<R@���X@���YR@���X@���R@���X@���`R@���aX@���`QR@���@6X@���R@����X@��� �S@���X@���aS@���X@����S@����,X@����$ S@���tX@���tS@����X@���@S@���`X@���`S@����5X@���@S@���'X@���bS@���X@���S@���@ܺX@��� >!S@���RX@����S@��� Y@���S@���5Y@��� &"S@��� <Y@���( S@���nY@��� S@���uY@���@S@���@Y@����$S@���?Y@���S@��� 68Y@���I#S@���FY@���'S@���@@GY@����w+S@���@ULY@���2/S@���aNY@���0S@���=Y@����=2S@���a6Y@���:8S@��� <Y@���`>S@���`NY@���@?S@���`)OY@���AS@���`JY@���CS@����LY@���FS@����$Y@���bYS@���EY@���1XS@���`Y@���@`S@���@ϺY@����EcS@��� nY@���eS@����Y@����jS@���@.Y@���hS@���Y@���gS@���`Z@��� nS@���TZ@����mS@���Z@���lS@���Z@���@kS@���@Z@���|jS@���p)Z@����lS@���1Z@����lS@��� 3Z@���gS@���>Z@���eS@���@wZ@���dS@���kuZ@���@XbS@���yZ@����#aS@��� !{Z@���@]S@���DZ@���@6XS@���@ȋZ@����VS@���@3oZ@��� WS@�����\Z@���kQS@���WbZ@���PS@��� [Z@����OS@����OZ@���@HS@��� HZ@����ES@���YZ@����UES@���`{Z@���HS@��� \{Z@����wGS@��� !oZ@��� CS@���+qZ@���BS@����`Z@���AS@����[Z@���@6@S@��� ]Z@����]>S@���mZ@����>S@��� lZ@��� CS@���@3Z@����BS@���Z@���@S@���BZ@����AS@���!Z@���7CS@���Z@���@AS@���Z@���'AS@���@@Z@����?S@���Z@���@;S@��� sZ@���!:S@����Z@���8S@���Z@���@%7S@��� Z@����=6S@����Z@���5S@���Z@����e3S@��� Z@����2S@���`Z@���/S@���`Z@���-S@���`Z@����*S@��� nZ@��� ~%S@���@Z@���)#S@���`Z@���@%S@���`vZ@����&S@���`dZ@���@%S@���Z@��� S@���൴Z@����S@���Z@���"S@���Z@���: S@��� Z@���A"S@������[@���(S@���@Z@���)S@���Z@���*S@���Z@���.S@��� [@����.S@���`R[@���,S@���D[@���/S@���@@s[@����U-S@���`[@���0S@���`)[@���@.S@���@{[@���0S@��� [@���/S@����$[@���-S@����[@����n+S@���n[@���B-S@��� \[@���+S@���[@���(S@���[@���2'S@���[@���&S@���z \@����S@����[@����S@���@.\@���@S@����\@���cS@��� /\@���S@���!*\@����$S@���`R/\@���3S@����K)\@���@ S@���� \@����ES@���`&\@���`Q S@���`2\@���`Q S@���@6\@���@ S@���`2\@���S@���@&\@���2S@���&\@���S@���5A\@���S@���OB\@���@S@���`R?\@���S@���BA\@���` S@����H\@���� S@���GQ\@����MS@���^=\@���SS@�����<\@����S@���M\@���S@���R\@����wS@���@O\@���@ S@���`_W\@��� S@���^\@���ZS@���@[\@����S@��� \\@����S@��� 8c\@��� >S@���_\@����R@���@b\@��� fR@���a\@���R@��� \\@���1R@��� c\@����R@���@i_\@���R@���i\@���@R@��� g\@����R@��� \s\@��� R@���v\@���R@����t\@���R@����x\@���`R@����x\@���R@���zp\@���R@���#m\@���AR@��� h\@���R@��� sc\@����]R@��� Z\@���|R@���e\@���@6R@���e\@����=R@���@UT\@���R@���B\@���R@����H\@��� R@��� \G\@���R@���&%\@���@R@���@\@���jR@��� \@����5R@���4\@����R@���6\@���@R@����/\@���R@��� l8\@���`R@���`2\@���qR@���&6\@����R@����@\@����R@���.B\@���R@���`>\@���8R@����$@\@���R@���P\@���R@���`;S\@���R@����_P\@���lR@���nV\@���R@���d\@����VR@��� lh\@���kR@���@k\@���R@���m\@��� &R@���d\@���!R@���a\@���R@���h\@���`R@���j\@��� R@���`f\@���*R@���`6\@���R@���\@��� R@���&\@���R@���[@���@XR@���[@���@ R@���`�[@���@R@���`R[@����R@���k[@���@FR@���3[@���rR@���[@���jR@���[@���cR@���@i[@���@R@����[@���`iR@���`c[@���`R@���zp[@���!R@���@z[@���R@���`~[@���R@��� l|[@���@܎R@���`v[@����<R@��� _[@���R@���0E[@���@XR@���![@���[sR@����[@���tR@��� s[@���KqR@����;[@���chR@���Z@���@WgR@���Z@���dR@���&Z@��� cR@���8Z@���@bR@��� HZ@����D\R@����Z@����VR@���@Z@���`iSR@���Z@���@SR@���@Z@���PR@���5Z@��� ~IR@���WvZ@���@FFR@���tZ@���`?R@����`Z@���7R@���DHZ@���S2R@���DZ@���0R@���8]Z@���0R@���jZ@���3R@����KZ@���<R@���nZ@���t=R@���kZ@����>R@��� Z@���@NCR@����_Z@���HR@���@Z@���@-LR@���Z@���`HR@���`Z@���KR@����q[@���OR@���[@���NR@���&[@��� OR@���`�[@���'QR@����K [@����,QR@���@[@���RR@���$[@���@.SR@���@{O[@���9YR@���P[@���ZR@���pM[@���[R@���M[@����]R@���@Z[@����]ZR@���@{[[@����v\R@���`RK[@���`R@����ML[@���bR@��� O[@����aR@���nf[@���\R@���[@���``R@���[@���@bR@���@[@����cR@��� [@���dR@���$[@���fR@���[@���(hR@���[@����^iR@��� [@����5iR@���`�[@��� lR@���[@���pR@���}[@��� frR@��� n[@����lR@���`s[@����lR@���n[@���ajR@����h[@���`lR@���a[@���rR@���\b[@���tR@���=u[@���xR@���y[@���`~R@���[@���R@���[@���tR@���x[@���yR@���`f[@���|R@��� [@���@~R@���@[@���BR@���[@���@xR@���+[@���R@���B[@���@R@���O[@���HR@���@[@���R@���[@���@}R@����_[@���vR@����[@���pR@��� \@��� >mR@���@&\@���nR@���6\@���@oR@���u=\@����sR@����M<\@����vR@����4\@����}R@���4\@����R@���8\@���@}R@���Y\@���@`kR@���Z\@����,eR@��� P\@���)cR@���BI\@���(\R@��� _\@���bUR@���`_\@���SRR@����Ka\@���@ER@���\\@���@_@R@��� !_\@����U=R@���`Z\@����n;R@���@G\@���7R@���E\@��� >5R@����K\@���-R@��� JS\@���`i+R@����Og\@���'R@���\@����&R@���@k\@���(R@����MT\@��� ,R@���I\@���4R@���`J\@���6R@���@W\@���8R@���sb\@����]>R@���`\@���@AR@���`f\@���@GR@���b\@��� fJR@���a\@���BMR@��� c\@���@PR@���m\@���1TR@���}\@���TR@���f\@���3VR@���Gq\@���@VR@���e\@���sZR@���]\@���@_R@����Oc\@���`R@���?\@����fR@���\@���kR@���$]@���@ojR@���@O]@���@eR@���Y]@���@peR@���B]@���@bR@����]@���@N_R@���]@���@]R@���O]@���\R@���@]@����^R@���@{]@���@`[R@���`k]@���0YR@����O]@���@.WR@���@]@���@UR@���`]@����^QR@��� ]@���`LR@���@]@����CR@���]@���?R@��� ]@��� >R@��� 1 ^@���(8R@����$^@���8R@���@]@���`4>R@���z]@���@_@R@���^]@���AR@���B^@���@;R@���@_^@���>R@���}^@��� >=R@���${^@���@:R@���@i^@���@9R@���@^@���A.R@���@^@����v0R@���`^@���/R@���_@����)R@���`._@���(R@���I_@���!R@���@R_@���HR@���̈_@���'R@����ח_@���R@���@ȣ_@���R@���ԥ_@���1 R@���ϭ_@���� R@���±_@���`R@��� _@����R@��� _@����Q@���_@����Q@���0_@���`Q@���_@���@Q@��� s_@���`Q@��� _@����Q@���`_@���@%Q@��� _@���Q@���_@���@Q@����_@���@Q@���`ʾ_@����R@��� һ_@���R@���u_@����]R@����$_@��� >R@���E_@���PR@���_@���@R@���&_@����=R@���O_@���R@���`)_@���R@����K_@���8R@��� `@���R@����`@���@Q@���`@���Q@���``@���@OQ@���`@����Q@���%`@���7Q@����%`@���9Q@���` `@���Q@��� !`@����R@���)`@����EQ@����)`@���@NQ@���,`@���Q@���`�1`@���@Q@��� `@����UQ@���``@����<Q@���!`@���0Q@���`@���@Q@���`2%`@���Q@����$(`@���� Q@��� '`@���Q@���p-`@���Q@���@%5`@���ZQ@���F8`@���@gQ@���@7`@����Q@��� 5`@���Q@���4`@����,Q@���B`@���Q@���0G`@���)Q@���@rE`@���Q@���S`@����nQ@���`fV`@���@Q@���"W`@����5Q@���@`Y`@���8Q@���!Z`@���@Q@����\`@����vQ@���^`@����wQ@��� e`@���`Q@���`2k`@���Q@���Fr`@����Q@���w`@���@GQ@����{`@���3Q@��� Qz`@����Q@���O|`@���Q@���@`@���@Q@���`x`@���@Q@���~`@���@Q@���J~`@���@Q@���`@���PQ@���``@���Q@���`@���@-Q@���*`@���Q@��� ?`@����Q@���Ζ`@���Q@���``@���Q@���@w`@���@Q@���B`@����vQ@���a`@���Q@���@`@���`iQ@���`@���`yQ@���`@���Q@���`@���`Q@���]`@���Q@���`@���Q@���H`@���Q@���`@���@Q@���@`@���Q@���t`@���Q@���@`@���3Q@���@r`@��� Q@���`@���Q@���`@����Q@��� a@����$Q@���a@����Q@���a@���rQ@����ha@���@XQ@���a@����,Q@���`a@����Q@���@(a@���Q@���(a@���@Q@��� n+a@���rQ@���/a@���Q@���@.a@���Q@��� 7a@���RQ@���`5a@���@pQ@��� 1a@���aQ@���`)1a@����,Q@����6a@���Q@���9a@���`iQ@��� Aa@���(Q@���Aa@���Q@���8:a@����#Q@���JBa@���3Q@���Ga@���Q@��� ?a@���`Q@���@rKa@���Q@���zBa@���Q@���>a@���Q@���<a@���@Q@���`x:a@���`Q@���@@=a@���!Q@���@a@���Q@���@a@���Q@���@WCa@���@ Q@���Oa@���`Q@���Ma@���tQ@���`La@���@Q@���Na@���*Q@���=Sa@����Q@���Qa@���jQ@���"Wa@���0Q@���Yaa@���qQ@��� ba@���KQ@���da@���Q@��� ca@���@`Q@���fa@���@OQ@���@ka@���)Q@��� ka@����#Q@���na@����Q@���@%wa@���@Q@���`{a@���`iQ@���׀a@���Q@���`a@���Q@���ya@���Q@����va@���@XQ@��� ya@��� Q@���ja@���Q@���`ta@���PQ@���` wa@���z�R@���8va@���sR@���@wa@��� fR@���|a@���) R@���`a@����R@���`�a@��� R@����$a@���/R@���3ra@���`R@��� ma@���� R@���oa@��� R@�����ha@��� R@����-ha@��� R@����dja@���0 R@���jja@���@-R@���`fa@��� R@����ba@���R@���fa@���R@��� Sqa@���R@��� a@���@%R@���ba@��� >%R@��� a@���3&R@����a@���I+R@��� a@���,R@���`]a@���.R@���a@����w7R@���൒a@���8R@���@<a@���09R@����a@���A6R@���a@���Y1R@���+a@���|.R@���a@����,R@���@!b@���`$R@��� Zb@���R@���`Zb@���`yR@����<b@���@R@���Y+b@����R@��� b@����R@����Vb@����eR@���b@���R@���sb@���@XR@��� b@���@OR@���`Ib@���R@����b@���!R@���`b@��� R@���b@����ER@���@]b@���R@���]b@��� R@���Ub@���S R@���>b@���3Q@��� =b@���Q@���@b@����R@���`]@b@��� fR@���gCb@���R@���@Jb@���1R@���<Fb@���2 R@���kAb@��� R@��� Bb@���@`R@���>b@���@6R@���`:b@����< R@���<b@���0 R@��� 6b@���@-R@��� 3b@���@.R@���7b@���B R@���3b@���@R@��� 5b@���R@���z8b@���SR@��� 9b@���@_�R@��� 9b@����<Q@����7b@���3Q@���`*b@���Q@���4b@���Q@���`b@���(Q@��� Sb@��� &Q@���#b@����Q@���&b@���Q@���`$b@���7Q@����vb@����Q@���b@��� &Q@���sb@���Q@���*b@����=Q@���S2b@���7Q@��� 7b@���jQ@���@@Cb@���@.Q@����;`b@����DR@���@.gb@����R@����;~b@���R@��� b@���@?R@��� b@����nR@���b@����Q@���b@���Q@���ାb@���Q@���|b@����Q@���`b@���Q@���Ъb@���Q@���b@����Q@���@`b@���`Q@���&b@���Q@���@<b@���@hQ@��� b@���`Q@���` b@����VQ@���b@���@Q@���b@����vQ@���kb@����Q@���` b@���3Q@���bb@��� &Q@���`b@����^Q@���b@���HQ@���ab@����=Q@����b@���8Q@��� ۽b@���Q@���`b@���Q@��� ۻb@���Q@���b@���Q@��� Qb@����5Q@���`b@���1Q@���b@���Q@���|b@����Q@���4b@����Q@���`b@���@GQ@���` b@���@Q@���<b@����VQ@��� |b@���Q@��� b@����UQ@����mb@����$Q@���b@���'Q@���b@���Q@���`Ic@���@6Q@���c@���ֿQ@���c@���2Q@���bb@���Q@���@b@����2Q@���c@���Q@���Tc@����}Q@���z.c@���(Q@���5c@���ஶQ@���Gc@���Q@���@mc@���@`Q@���`pc@���@Q@���@oc@����$Q@���'qc@����]Q@���0sc@����Q@����zc@���Q@���c@���@Q@���@Nc@���Q@���c@����Q@����hc@��� &Q@���@7d@���@Q@���bd@���Q@���d@����EQ@����D�d@���ތQ@���`c@���͇Q@���� c@���Q@���`)c@���@Q@���kc@���փQ@���@c@���Q@���@7c@���{Q@��� c@���xQ@���c@����sQ@���Yc@���@NoQ@����c@����rQ@���d@���@pmQ@���d@����nQ@����- d@��� lQ@���  d@���iQ@���@7d@���@ iQ@���/ d@���dQ@���d@���`Q@���@d@���@\Q@���d@���)WQ@��� S!d@����KJQ@���d@���@FQ@���(d@���BQ@���+-d@���>Q@���!,d@���@%;Q@���@&d@����2Q@��� 'd@���)/Q@���"d@���%Q@���`f d@���@#Q@����-d@��� #Q@����d@���@F"Q@���`d@���@G!Q@��� $d@���@#Q@���`*d@���,Q@���K)d@���@%/Q@���|*d@���3Q@���2d@����:Q@��� 1d@���SBQ@���/d@���qDQ@���b/d@����wGQ@���`,d@���MQ@���.d@���@RQ@���T-d@���TQ@��� /d@���� VQ@����-d@���WQ@���`.d@����XQ@���@d@���bQ@���@d@���KeQ@���XJd@���ajQ@���|Jd@���lQ@���Xd@���`yiQ@���@fd@���mQ@���`2sd@���kQ@���{d@���nQ@���`d@���pQ@���`Id@���PmQ@���` d@����]fQ@���൜d@����UeQ@��� 6d@��� `Q@���d@���@_Q@��� d@���@ `Q@���d@���`pQ@���@.d@���qQ@���`e@���lQ@���`fd@���8jQ@����Vd@���hQ@���9e@���fQ@���Ae@����bQ@���e@����`Q@���@`e@���RQ@���] e@���*NQ@��� |+e@���KEQ@����,e@���@CQ@���.e@���@<7Q@���Y/e@���z4Q@��� 3e@���1Q@���Ke@����v4Q@��� Se@���@_0Q@���!Ne@���t5Q@���qNe@��� 7Q@���Ue@���S:Q@���Te@��� 8Q@���We@���@h4Q@���� Ve@���(<Q@����\e@���@N?Q@���_e@����ECQ@���ae@���@GAQ@���@%ee@���BQ@��� ?`e@���1DQ@���`e@���[GQ@���s\e@���@`KQ@��� ]e@���[OQ@���` ]e@����SQ@��� We@���@XQ@���KUe@���bQ@���`[Qe@���fQ@���4Ee@���� fQ@����Ce@���@gQ@���De@����=jQ@���@Ie@����oQ@���`Ne@���@WoQ@���&Re@���@qQ@���"Qe@���`QtQ@��� Qe@���Q@���Le@���)Q@����_Ne@���qQ@����Re@���߇Q@���e@���`~Q@���e@���@~Q@���pe@���:tQ@���e@���`isQ@����$e@���qQ@����׫e@���ArQ@���@Ee@���tQ@���`e@����vQ@���e@����=zQ@���@.e@���yQ@���̦e@���@N{Q@���=e@��� |Q@����e@����*vQ@����e@��� vQ@���`e@����xQ@���@e@���vQ@���@e@���qxQ@��� e@���wQ@���e@��� wQ@���`e@���@FvQ@��� e@���@vQ@���e@���0yQ@���� f@���@xQ@���`� f@���@sQ@��� |f@���@qQ@���p f@����pQ@��� f@����kQ@��� 6Df@��� ~]Q@���@@If@���']Q@���Gf@���@O^Q@���YOf@���]Q@���`o\f@���HXQ@���bf@���`TQ@����d\f@���@SQ@���0Uf@���@_XQ@���Uf@���kUQ@���Vf@���@QQ@���gf@���QQ@��� }f@���@Q@���]}f@����e?Q@��� qf@����GQ@���rf@����DQ@����2xf@���@N?Q@�����f@��� >Q@�����f@����7Q@�����f@��� e+Q@�����f@���@<Q@�����f@���@Q@�����f@���@Q@�����f@���`P@�����f@���@P@�����f@���@oP@�����f@���FP@�����f@���P@�����f@���P@�����f@���˱P@�����f@���yP@�����f@���PP@�����f@���'P@�����f@���tP@�����f@���hP@�����f@���\P@�����f@���PP@�����f@���ZDP@���F~f@����ECP@���|f@���ABP@���dzf@���AP@���yf@���@AP@���nf@����4P@���df@���A2P@���`xRf@����&P@���@rOf@���@&P@����Wf@���a*P@��� Xf@����,P@����Vf@���,P@���Qf@����*+P@���@3f@���@-P@����v,f@���k5P@���@E/f@���@7P@���`'f@���<P@���T%f@���@AP@����-f@���BEP@���f@���AP@����2 f@���KEP@���` f@���`CP@���� f@���CP@���X f@���@BP@���`[f@���@?P@���f@����BP@���f@���SBP@���)f@����4P@���(f@���@3P@���@%!f@���P1P@���f@���A6P@��� f@���3P@���f@���`:P@���8�f@����;P@���e@���*6P@���@`e@��� &2P@����e@���@?0P@���Fe@���@1P@����;e@����e+P@���@e@���@+P@���`e@����<+P@��� |e@����*P@��� e@���/P@��� e@���`.P@���`e@���@F2P@���z�f@���9P@���`f@���8P@���] f@��� /P@���k f@���,P@���f@���q(P@���f@����%P@���@wf@����="P@���` f@���'P@���` f@���'P@��� ?f@���+P@���`f@���@,P@����2f@����$P@���� f@���@g-P@���`*f@���1P@���/f@���c0P@��� +f@���#P@��� +f@����!P@���.f@���@WP@���@5f@���)P@���?f@���g P@����Ef@���9 P@���Cf@���`P@���sBf@���P@��� Gf@���P@���Hf@���7P@���Rf@���P@���`Nf@��� P@���&Lf@���O@���sTf@��� O@���Tf@��� gO@��� Wf@���O@���8Xf@���O@����Vf@���@WO@���Rf@���O@���`Tf@���`O@����Vf@���O@���@`Wf@���O@��� (Tf@��� O@���`Qf@���!O@���@Pf@���O@���tOf@���`O@��� ?Nf@���`O@���JJf@��� fO@���Hf@���IO@����mLf@��� =O@���Of@���O@���`Vf@��� >O@���@Wf@���िO@���Uf@����O@���4Sf@���߳O@���@Wf@���@O@���`Zf@���7O@���Wf@���`O@���Yf@���rO@���Zf@���O@��� _f@��� O@���@@_f@���O@���@<[f@���rO@���Yf@���tO@��� Yf@���O@���[f@���ƩO@���if@���!O@���@Emf@���`GO@���` mf@���O@���`if@���`AO@���@gf@���`HO@���hf@���xO@���jf@���@qO@���� pf@���[oO@���`�sf@��� _O@���rf@���WO@��� mf@���@MO@���@lf@���DO@���kf@����$@O@���ef@���?O@���`)cf@��� 9O@���`df@���*O@��� af@���`q$O@���^f@����-O@���Kf@���;O@���*f@���rKO@���`(f@���JNO@����V*f@�����`O@����.f@��� gO@���� .f@���iO@���3*f@���`eO@���g'f@���`YO@����h$f@��� [O@���`$f@���`cO@���@#f@���hO@���:f@��� nO@���`I!f@���``O@���f@���3ZO@���@f@���UO@���@%f@���cPO@��� 'f@���JO@���@'f@���HO@���f@���`6@O@����-f@���'EO@���&f@��� AO@����2f@����;O@���f@���`05O@����e@���`O@��� e@���O@���e@���O@���Be@���O@���4e@���N@���e@���N@���0e@���N@���`e@��� N@���3e@���N@���`e@���N@���8e@���`N@���e@����}N@���pe@���N@���ƹe@��� N@���޸e@����5N@���e@���N@����ðe@���N@���e@���@.N@��� ɩe@��� N@���e@��� =N@����_e@���N@��� e@��� N@���te@��� 2N@���e@���SN@��� e@���N@���e@���`N@���e@����<N@���4e@���@N@���ǘe@���N@���e@���N@���e@��� N@���@.e@���9N@���׊e@���`ŚN@��� e@���kN@���je@���QN@���ൎe@����#N@���Ke@���IN@���@Ne@���`N@��� Qe@���zN@��� e@���`qN@���je@��� {N@���*e@����5yN@���@ăe@���QxN@���`e@����rN@��� Qe@��� lN@���Be@��� >yN@����d~e@���xN@���O~e@���(lN@���+qe@���@fN@���<te@���@._N@���@se@���]N@���ne@���`\N@���ne@����$`N@���`le@���)cN@���@rke@���`ON@���0ee@���FN@���yWe@���!BN@����$Xe@���>N@���Ye@��� ?N@���` Ye@��� 8N@���Te@���@p5N@���`�Se@��� ,9N@���`fPe@��� 7N@���Te@���`-N@��� Ue@���)N@����Oe@���`G!N@���Ne@���N@���zLe@���@XM@��� Ge@���@hM@���Fe@���M@���qBe@���(N@��� =e@���cN@���`;e@��� fN@���0;e@���`N@���`?e@���N@���<e@���`6 N@����d:e@���N@���7e@���$N@���`6e@��� 3N@��� 5e@���`5N@���`0e@���i;N@��� 'e@���GN@��� +e@����vHN@���*e@���LN@����&e@���ON@����$e@���GN@����me@��� GN@��� e@��� LN@���`]d@��� >AN@��� d@��� gEN@���Jd@���`A>N@���gd@����$8N@���`d@���;N@���d@����6N@���Kd@���86N@���d@���1<N@����d@����<3N@��� d@���@1N@���d@��� x.N@��� d@���9-N@����$d@����M4N@���Xd@���@5N@���d@���5N@���`[d@����0N@���@id@���Q�N@����d@��� OM@���@Nd@��� M@���`d@���`M@����d@���PN@���Bd@���@FN@����d@���t)N@���yd@���@F2N@���d@����1N@���Pd@���J6N@���@d@���`>N@���� d@���`7N@����;d@���`0N@����d@���N@���@d@���@WN@���d@��� N@��� d@���N@���@@d@��� N@��� d@��� N@���d@���@N@���`)d@���` N@����d@��� N@����d@���@N@���d@���ZN@��� d@��� N@���ଦd@����M@��� d@��� M@���Ad@���M@���@`d@���JM@���d@���M@���@d@���`M@���d@���`AN@���Hd@��� N@��� d@���@?N@���d@��� `N@���ފd@���`M@���d@���IM@���d@���zM@���d@���@XM@��� d@���9M@��� ҁd@���@.M@���@Nd@���`M@���|d@���`M@���4d@���@N@����Vtd@���N@���sd@���N@���ud@��� DM@��� xd@����^M@��� vd@���`M@���&pd@���`M@���kd@���tM@��� ekd@��� fM@���`ld@���PM@���|jd@���M@����ed@���M@���@@ed@���M@��� Sgd@���M@����jd@����M@��� id@���`˥M@����2hd@���8M@���@7gd@��� M@���`hd@���`AM@���bd@���`M@��� ad@���bM@��� ed@���|M@����mfd@��� M@���ed@���M@���@dd@���M@���Ked@��� M@����_`d@���M@���&\d@����wM@���@7ad@���`HM@���`[_d@���zM@���`2]d@���yM@���\d@���@}M@��� [d@���`GyM@���`�Wd@���qM@���@Ud@���9mM@���+Wd@����MlM@���9Md@���WM@���|Dd@��� 9M@��� >d@��� M@���`>d@����#M@���gCd@���KL@���Md@���L@���`Jd@���`6L@���SLd@���cL@���pOd@���@L@���`Od@���L@���@Qd@���bL@���`Vd@���@WL@����`d@��� DL@����fd@���L@���id@��� L@���8fd@���1L@���Wd@���`˭L@��� Xd@��� L@���|Zd@���@…L@���`Yd@���qL@��� SYd@���BeL@���`[d@���\^L@��� n]d@��� =ZL@���fd@���_L@����hd@����#YL@��� |gd@��� DL@���&jd@���2L@���'kd@���`L@���@`d@���@FL@���@[d@���`L@���`Rd@���zL@���`Pd@���zL@���Td@���@.L@���HVd@����'L@����mbd@���K=L@���bd@���`_DL@���^d@���UDL@����\d@��� 7L@���Wd@���>L@���KUd@���@>L@���`IMd@���2L@���`Ld@����d0L@��� Od@��� +L@���ORd@���3"L@���zPd@���JL@���`Fd@���UL@���`�Ad@��� %L@���Ad@���aL@���7d@���QK@����6d@���K@����9d@���ِK@���@Dd@���mK@��� Cd@���aK@���@r7d@���@K@���K+d@���`>K@���@'d@���AK@���&d@���3JK@���@@#d@���{KK@���+d@��� CK@���/�d@���K@���Jc@���`0K@���@Ec@���@J@���@c@���`6J@��� (c@����MJ@��� nc@��� J@��� c@���`0J@���c@���J@���@c@���J@���Sc@���UJ@��� ec@���zJ@���@ic@��� >J@���Tc@����J@���c@���QJ@���`)c@���`J@���c@���`J@���c@���J@�����d@���|J@���@.d@���@J@���td@���`_J@���c@��� J@���Sc@��� J@���`c@���J@���c@����5J@���c@���`qJ@����Mc@��� J@���`c@���௕J@����-c@���J@��� |c@���*rJ@���`xc@���`rJ@���@Nc@���`J@���c@���`J@���9c@���J@���c@���`{J@���@c@���@?xJ@���Fc@���sJ@���c@���sJ@��� c@���xJ@����c@���@.wJ@���`c@���rJ@���c@���` eJ@���c@���`bJ@��� c@��� _J@���<c@���� ^J@���`Ic@���XJ@���`c@���@OJ@����oc@���SJ@���@c@���JJ@���`c@����AJ@���c@��� `;J@��� c@���r3J@���c@���6J@����-c@���@1J@���c@���,J@���`c@���j*J@���c@���#J@��� c@���@WJ@��� nc@���J@��� c@���J@����c@��� %I@���c@��� I@��� Qc@���I@���@.c@���SI@���@wc@���I@���Xc@��� OI@���c@���I@���ƕc@���tqI@���Δc@���isI@��� ۗc@���@o~I@��� җc@���jI@���sc@���I@����c@��� I@���c@��� I@��� c@���aI@���`c@���@I@����hc@���I@���bc@����I@���c@����MI@��� c@���BJ@���@c@���`CJ@����c@����#AJ@��� c@���`8J@����$c@���7?J@����c@���rCJ@���` c@���BJ@���&c@��� IJ@���=c@���mJ@����c@���@.J@��� }c@���J@���`)yc@���`K@���9sc@��� UuK@���pqc@���@FK@����;rc@����K@���tc@��� K@���`vc@��� L@��� Qxc@��� L@��� wc@���L@���` c@���lXL@���ބc@���kL@���gc@��� jL@���yc@���eL@���c@���{[L@���=c@���@|L@��� ґc@���@L@���c@���@pL@����;c@���L@���c@���`L@���˝c@��� L@��� c@��� ~L@���`c@���L@���@.c@���L@��� c@���BL@���c@���L@��� c@���`0L@���c@���1L@���`Ӵc@���M@���/c@���M@����c@��� >L@���c@���L@���gc@���KM@��� 6c@���`0M@����c@���CM@���c@���SVM@��� c@���XM@��� c@���\M@���c@���@mM@��� ?c@���@xM@���Pc@���M@��� c@���@ÄM@����d@���ϩM@��� d@����M@���  d@���M@���@d@���M@���d@���`M@���|d@����M@���@$d@���@M@���@+d@���@M@���:d@���`N@���=d@��� #N@���==d@��� O*N@��� ;d@���`6(N@���<d@���.N@���Fd@���@DN@���� Vd@���QPN@���\d@���bN@���bcd@���bN@���` cd@��� fN@��� id@���QhN@���id@���eN@����Mhd@���`_N@���Ojd@��� [N@���id@���@-`N@���`ld@���|jN@��� od@���mN@����dvd@���oN@���� xd@���vN@���nd@���|N@���`]td@���N@���}d@���N@���̀d@���N@���d@��� fN@���0}d@���`N@���xd@���8N@���wd@����N@��� {d@���@WN@���`]d@���`N@���@rd@��� gN@���3d@���N@���d@��� O@���d@���O@��� d@���1$O@���`d@���,O@���d@���4O@���d@��� <O@���`d@���`.O@���d@��� >)O@���`d@���l(O@���d@���@9O@���` d@���;O@���3d@���'=O@���װd@���8O@����ôd@����9O@���qd@���JO@���!d@���lXO@���ajd@���@.GO@���@.gd@���CO@���'gd@���<O@���Bed@���@8O@���4kd@���/O@���` kd@���@-O@���3dd@���`%O@���zbd@���@XO@���jdd@���@.O@���`bd@���` O@���@Wed@��� O@���`2ad@���N@��� ad@���N@���`^d@��� N@��� S_d@���@N@���id@��� N@���id@���N@���@hd@���`_N@���bd@����N@���bd@���N@����-`d@���@XN@����\d@���N@��� ]d@���`/N@���Zd@���:N@���@Ud@���N@��� QTd@���� N@���}Ud@���`N@��� Wd@���N@��� QXd@���KN@���`)Wd@����N@���'Qd@����N@���Ld@��� N@���`2Id@���rN@��� =d@���ZN@���A<d@���N@���a<d@���N@���=;d@���̬N@���9d@���N@��� 7d@���mN@���2d@���*N@���@3d@���JN@���)d@���؉N@���@&d@���cN@���@N%d@���N@���d@��� sN@���@d@��� ^N@���td@��� `cN@��� d@��� [N@���` d@���@_N@���d@���[ON@���Ad@���{KN@���d@���WN@��� d@���@-XN@���0d@���@hdN@���d@���jjN@���d@���@FrN@���B d@���� vN@��� d@���@N@���k d@���N@���@@d@���@N@���@rc@��� wN@���c@���@yN@���Bc@���@N@���`c@��� yN@����c@����N@��� c@���N@���@c@���N@���`fc@��� N@���0c@����wN@����c@���N@���c@���`N@����d@���N@���Od@���aN@����D�d@��� N@���Jd@���KN@���d@���N@��� d@���N@��� d@���@N@��� d@��� N@��� d@����MN@���! d@���@N@���d@���`N@���c@���)N@���c@���N@���c@���N@��� c@��� N@���c@���`GN@����Dc@��� N@���`c@���|N@���qc@���N@���yc@��� ON@���0c@���� N@��� (c@���bN@���@c@���`N@���c@���`N@����c@��� UN@���c@���N@���c@��� ,N@���@<c@����N@���`�c@���N@����c@���@N@���c@����5N@��� ҫc@���jN@���ac@��� N@���ଠc@���N@���0c@����N@���`c@���N@����-c@���@N@���<c@���N@���4c@���`N@���Tc@���IN@���c@���@N@���=}c@��� qN@���|c@���@h\N@���@oc@��� KN@���@Noc@���DN@���@jc@���CN@���]c@���`-N@���`Pc@���N@���Nc@���M@���Lc@���`qM@���Mc@���M@���]Gc@���M@��� SGc@���`M@��� Kc@���M@���0Gc@���M@��� Bc@��� >M@���Dc@���3M@���TIc@���ٸM@���8Lc@���`M@���`Lc@���cM@��� Lc@��� M@��� Mc@���M@���8Pc@��� M@��� Mc@��� M@���Mc@���@XM@��� 6Nc@���`M@���YYc@���`M@����^c@���mM@���4ac@���M@���`dc@��� ,M@���fc@���M@���&dc@���M@��� ec@���[M@���Adc@���M@���ec@���M@���`Xc@���bM@��� Wc@���M@����vXc@���@M@����;Nc@���(M@���Jc@���M@���`Kc@���M@���`]Hc@���3M@���Dc@���`qM@���PAc@���ԅM@���?c@���M@����$:c@���ޔM@���`5c@����5M@����7c@��� NM@���2c@���`M@���0c@���̜M@���*c@���M@���`(c@���`M@���c@���kM@���@c@���@M@���c@���3rM@���`c@���`zM@��� c@���M@��� c@���M@���] c@���*M@���`]c@���M@���c@����}M@��� c@��� vM@���c@���isM@��� (b@���mM@���b@���pM@���b@��� kM@���Zb@��� &M@���@rb@��� M@���b@���ԕM@���"b@���bM@���` c@����M@���4 c@���` M@����c@���M@���@b@���� M@���@b@����5M@���b@���@M@���=b@��� &M@���b@���M@���b@���`M@���b@��� M@���b@��� M@���b@���`M@���b@���M@���pb@���M@���`b@���M@���`b@���M@���b@���SM@���@7b@���PM@���b@���M@���"b@��� M@��� b@���`M@���Zb@����vM@���`b@���M@���`2b@���M@���٦b@���M@���`b@��� M@���@Eb@���@M@���b@���`YM@���+b@���`˽M@���`b@��� fM@���@b@��� &M@��� b@��� &M@���b@����$M@���|b@���M@����b@���`M@����כb@���M@��� b@���@XM@���@b@���M@���b@��� M@����mb@���`M@���`b@���M@���ƙb@���@M@��� b@��� M@���`b@��� =M@���ތb@����M@���b@���`M@��� b@��� yM@����Vzb@���`6M@���xb@����MM@���zb@���`qM@���xb@���M@���sb@��� fM@���pqb@���M@���qb@���IM@���ob@���ஞM@���Pib@���ϩM@���Wb@���M@���Ub@���M@���Ob@���κM@���Jb@���βM@���*Jb@���`M@��� Kb@����M@���Ib@���7M@���ZFb@���PM@���@wCb@���M@���/>b@���M@���>b@���ΚM@���z:b@���� M@���@9b@���@XM@���@<=b@���`M@���@<b@���`0M@����db@���cM@���a@���M@��� a@���2M@���a@���ǰM@���Ya@���ޜM@���a@��� M@���]a@���)cM@���¯a@��� JM@���a@��� U5M@���˕a@���@M@����a@���`L@����2a@���3L@���ൎa@��� L@����_a@��� L@���@a@���L@���zza@���ZL@���ua@���L@���@Eoa@���`L@���ga@���L@���� da@���BL@����dba@���L@��� _a@��� L@���`^a@���L@���^a@���@ۇL@���`]a@���`L@���Ta@��� &~L@���Sa@��� >yL@���Ra@���@.oL@���yOa@���lL@���`Na@��� gL@���jDa@��� KL@���Ca@���FL@���`)Ea@���>L@���Ga@���9=L@���@Ga@���@7L@����_Ba@���9L@���Aa@���`3L@���g=a@���c0L@���g;a@���`"L@���.a@���L@���@-a@���K@���`*a@���K@���@%a@���`K@���!a@��� gK@���@W a@���K@����Va@���K@����a@���K@���@`@���`K@��� `@���K@���``@���K@���``@���`nK@��� S`@���iK@���`)`@���aK@��� `@���@YK@���@@`@���`0UK@���`@���IK@���b`@����HK@���a@���`KK@���a@���KK@���Ya@���@WK@���`[a@���`RK@���`a@���MK@���a@��� `SK@����Da@���sJK@���a@���EK@���a@���6K@���@a@���5K@���a@���i3K@���Aa@���7'K@��� a@��� #K@���a@����wK@���Fa@���K@���a@���`AK@��� a@���lK@���&a@���@K@���`a@���J@���|a@��� &J@���a@����<J@���a@���J@���a@���` J@���#a@���`J@��� %a@���`J@���(a@��� fJ@���(a@���K@���%a@���K@��� !a@���`K@���-a@���@'K@���@1a@���B%K@��� (6a@���b)K@���7a@���`&K@����d0a@���@WK@���/a@���j K@���F.a@���� K@���.a@����K@��� -a@���K@��� )a@���K@���)a@���JK@���@%3a@���@J@���};a@���J@���86a@���ZJ@���`2a@���J@��� 2a@���J@���0a@���J@���@*a@���J@���`&a@���`NJ@���@'a@���IJ@���s,a@���2J@���<a@���`YJ@���@Ia@���@J@���@%Ka@���J@���Ra@���[J@���`Ra@��� J@���@Ra@���8J@���HRa@���QJ@���`Ka@���`J@���KKa@���`J@��� Ga@���`J@���Ga@���`J@���Na@���`J@��� Qa@���J@���Xa@��� K@���Xa@��� K@���Ua@���`K@���`)Ua@��� K@��� Wa@����K@���Wa@���P!K@���Ta@���`%K@���9Wa@��� (K@���`\a@���K@���ja@����wK@��� wa@���@'K@��� ya@���%K@���pya@��� K@��� }a@��� K@���ԇa@��� &K@���4a@���`H�K@����Êa@���@J@���a@��� J@���4a@����J@���`2a@����<J@���ǐa@��� J@���`Ӓa@��� J@���a@���J@���˝a@���J@��� ɝa@���J@���a@����J@���ϣa@����J@���@ia@���'J@���a@����vJ@���a@��� `J@���@ia@���@J@����a@����J@���a@���J@���a@���@J@���Xa@��� J@����a@���'J@���/a@���2J@���`fa@���`A~J@���ϣa@���@o~J@���a@���7J@�����a@���`J@���ࣖa@���`ݍJ@���Sa@���2J@���`a@���wJ@���`oa@��� kJ@���Za@���2cJ@���a@���:TJ@���a@���`0EJ@���Ha@���:<J@���a@���8J@���a@����^-J@��� a@���rJ@���@@a@���J@��� a@���DJ@���`a@���`0 J@��� ɩa@�����J@���@ĭa@���I@���'a@���I@���`a@���I@��� a@���� I@���@a@��� %I@���a@���`˽I@���@wa@���|I@���a@����$I@���za@����I@���™a@���sI@����Da@��� I@���a@���`I@���`ܖa@���I@���a@���I@���ྖa@���`AI@��� a@��� xI@���@a@���`nI@���}a@���@-hI@���`)a@���]I@���a@���7OI@���a@���@DI@����Va@���@?8I@���a@���@hI@���`ܒa@��� I@���a@���z I@���ْa@���`NI@��� a@���H@��� a@���zH@���@7a@��� H@��� a@���`H@����a@���עH@���0a@���ԝH@��� a@���kH@���a@���@?H@���a@���:H@���`a@���H@���`xa@���`_|H@����a@���mH@��� a@���PH@���`fa@����<{H@���3a@���lH@���نa@���sbH@��� a@���`OH@��� ea@���@HH@����-a@���tAH@��� |a@���8H@���`za@��� H@���@Eua@��� H@���ka@���kG@���`da@��� G@���@Waa@����<G@���@ESa@���tG@���HLa@���� ^G@���`Ja@���DG@����VFa@����8G@���`Ba@��� G@���<>a@���@p G@���`5a@���F@���+a@���F@���� (a@���`_F@���<a@���ơF@���a@��� pF@��� a@���*bF@��� a@���'eF@���� a@���@o^F@��� a@���ZF@���`fa@���WF@���Ya@���PQF@���Ba@����HF@���a@���z<F@����-`@���a2F@���`@���`&F@���`@����F@��� `@���F@���`@���`�F@���`@��� =E@���``@���E@���`@���sE@����`@���`GE@���`@���E@���``@���@E@��� `@���E@���`@��� OE@���9`@���E@���@`@���@oE@���`@���� E@���`@��� E@����`@���ƑE@���ټ`@���`oE@��� S`@���isE@���``@���hE@����`@��� UmE@���F`@��� geE@���}`@���`YaE@���`@��� >YE@���``@���WE@���`@���`q\E@���j`@����w_E@��� `@���iE@���`@���@gE@���``@���1dE@���K`@���^E@���}`@���@aE@���``@���rE@���ԗ`@���sE@���`o`@��� `kE@���`@���moE@����`@���KuE@���``@���xE@����`@���zlE@���@%`@����5qE@���J`@���@E@����`@���`E@��� `@����E@���@ĉ`@����E@���@``@���E@���k`@��� ,E@���~`@����$E@���`z`@���@WE@���@E}`@���E@���`@���`AE@���@́`@���E@���@`@���PE@���`I`@���ϡE@���`|`@����$E@���`oz`@���E@���z`@���`E@���w`@���DE@���}u`@��� җE@���u`@���E@���`r`@���@pE@���Xl`@��� wE@���n`@���nE@���h`@���@FbE@���g`@����MTE@���@ig`@���rKE@��� f`@���`GE@��� ec`@���TE@���@Ec`@���OE@��� \`@���LE@��� QZ`@���PE@���8^`@���OE@���<^`@����RE@���'Y`@���@FRE@���@Y`@���XE@��� U`@����MTE@���U`@���QE@���X`@���ULE@����[`@��� BE@���`Z`@���;E@���X`@���9E@���X`@��� +E@���;V`@����$E@����T`@���,(E@����T`@���)3E@��� SS`@���5E@��� R`@���DE@���S`@���*JE@���]S`@���ROE@���Q`@���`WE@���N`@��� WE@���`L`@���[E@��� 1Z`@���#pE@���\`@����lE@��� c`@���`tE@����_d`@���`wE@���@`c`@��� |E@���@rc`@��� UE@���`f`@���@E@���f`@���+E@���h`@���VE@���`h`@���@E@��� i`@���3E@���i`@���E@��� f`@����E@����f`@���E@����g`@���F@���@i`@���F@���` c`@��� XF@��� _`@���UdF@���^`@���LlF@��� 1d`@���@vF@���@7g`@���tF@���`2k`@����|F@���`n`@���@{F@���@t`@���`F@��� ?t`@���F@���@Wu`@���;F@���x`@���DF@���{`@����F@���|`@��� `F@���|~`@���bF@���`@��� rF@���ǚ`@��� F@��� `@���F@���``@����ۇF@��� `@���F@���K`@��� fF@���`@���`F@���``@���@?F@���`D`@���F@���@%`@���@F@���@.`@���QG@��� `@��� OG@���`@���G@���w`@���`G@���`@���!G@��� `@���;+G@���`@��� 60G@���@7`@���4G@���`2`@���>8G@���` `@���=G@���`@��� UUG@���@r`@����aG@���X`@��� gG@���@@`@��� nG@���`@��� |G@����V`@���`G@���``@���ߋG@���` `@��� HG@���`�`@���!G@���`@���`ݵG@���`@��� 7G@��� `@��� ,G@���`@���� G@���`@���IG@���`@���`H@���@E`@���K H@���`@���H@���`@���G"H@���`;`@���,(H@���@G`@���.H@���`@���@z,H@����]`@��� 1H@���@W`@���@p-H@����`@��� H@���@N`@��� H@���`@���H@���`@���@H@����M`@���H@���`@��� G@����`@���@XG@���`@���G@���`@����FG@���`@���`G@����`@���G@����q`@���G@����p`@���G@����l`@���`AG@���Gc`@���G@���@_`@���G@��� ]`@��� yG@���A^`@��� xG@���S\`@���`G@���@U`@���SH@���4U`@���H@���Z`@���&H@��� W`@��� &6H@���`oX`@���K=H@��� W`@��� 7?H@���@T`@���=H@����P`@���NH@���tU`@���nH@��� ?T`@��� 6pH@���`G`@���nH@���<`@����H@���@.=`@���sH@���k7`@���`H@���@{7`@���H@���6`@��� NH@���2`@����H@���`1`@���`�H@���`0`@���H@���+-`@���@H@���+`@���`H@���+`@���BH@���`*`@���@iH@����&`@���رH@���@#`@���UH@���!`@���H@��� `@���~H@��� `@���`ֻH@���`@���\H@��� `@���H@���j`@���H@����`@���H@���/ `@���H@��� _@����H@���@_@���`H@���_@���`HH@���_@���H@���?_@���H@���_@���H@��� _@��� H@���`__@���8I@���_@����I@����_@���I@���#_@����(I@���`x_@���@p5I@���`x_@���:I@���`d_@���jJI@���_@���WI@���`k_@���d_I@����_@���`I@���_@��� =I@���_@���I@���ٽ_@���I@���_@���I@���Ҷ_@����I@���_@���tI@���+_@��� I@���_@���@.I@���`_@���ͣI@��� _@���@FI@���_@����I@���W_@���I@���`+_@���#I@����ô_@����$I@���@W_@��� I@���_@���`I@���Ҫ_@���I@���`x_@����I@���_@���@I@���_@���J@���O_@��� > J@���`ܢ_@���kJ@���_@���J@��� ғ_@���LJ@���@_@���@h$J@���?_@��� 'J@���_@���@Q0J@���_@���`:J@����_@��� `;J@��� ~_@���:DJ@���DŽ_@���KJ@���a_@���`GJ@���`;_@���|JJ@���~_@���RJ@����;_@���RWJ@���W_@���\J@���&_@���I_J@���`ڃ_@���`_dJ@���}_@��� cJ@���v_@��� sJ@���#i_@���qJ@���i_@��� yuJ@���En_@���"yJ@���`fn_@���`}J@���f_@���`�J@����d`_@���ބJ@���J_@���J@���`B_@���ǘJ@����d8_@���`֓J@���@,8_@���;J@���-_@���ǐJ@���`M+_@���`ܖJ@���_@����J@��� \_@���8J@���_@���J@���`^@���J@��� 6^@���@J@���Ѽ^@��� fJ@��� ^@���jJ@���Z^@���ZJ@���@6^@���rJ@���`;#^@���J@���^@��� OrJ@���^@����FbJ@���^@���ZPJ@���^@��� rKJ@���� ^@���`JJ@����$^@���}QJ@���.^@���DJ@��� C(^@���)J@���0-^@��� ="J@���1^@���`J@��� H,^@��� yJ@���-^@���I@���)^@���I@���?$^@���I@���^@���@@I@���&^@���`I@���\]@���`ռI@��� ]@���`I@���@]@���I@����M]@���|I@���]@���`I@����]@��� yI@��� ]@���^I@���`T]@��� KI@����]@���<I@���a]@���3I@��� ]@���/I@���`]@���`+I@���]@��� I@���]@����5I@���3]@���H@���E]@���� H@����$]@��� yH@���`f]@��� OH@���]@��� H@��� \]@���H@���x]@��� gH@���@w]@���H@���Qp]@���H@���pM]@���*H@����]-]@��� H@���@&]@����H@���`]@���I@���`]@��� I@���`\@���`H@���O\@���@iH@���\@���`0I@���\@���9I@���\@����!I@���\@��� %I@���@\@���`_$I@���f\@��� >!I@���e\@���I@��� K\@���H@���E\@���H@���`.\@���H@���`\@���'H@���\@���H@���[@���H@����[@���,H@���Ѭ[@���3H@��� n[@��� H@���G[@��� H@����d[@��� H@���xa[@���H@��� W[@���`H@��� #[@��� NH@���[@��� =H@���Z@����wH@���Z@��� DH@��� Z@����I@���Z@��� I@��� ZZ@���I@����;Z@����5)I@���`�Z@���L,I@���ѐZ@��� &I@���Z@��� +I@����Z@���Z0I@���`MZ@���4I@��� SZ@��� =I@����vHZ@��� 2I@���u=Z@���b1I@���Z@���$I@���Z@���I@��� Z@���!I@���Y@��� I@���Y@��� =I@����Y@���I@���@Y@���`I@���BY@���"I@��� Y@���I@���@Y@���&I@���`;Y@���4I@���WY@���AI@���Y@���@HI@���`Y@����RI@���`ŖY@���ZI@���Y@����_I@���#Y@���@dI@���`Y@��� lI@���Y@���@XrI@���܉Y@���[I@���`fY@��� 7I@���JY@���3I@���@͋Y@���1I@���`bY@���SI@���YY@���ƹI@���UY@���I@���*Y@���I@���`TY@���@I@���@X@���`YI@���3X@��� OI@���X@���I@���`X@���UJ@���ϻX@���`-J@��� 6X@��� J@���X@���J@���wX@���I@���lX@���I@���X@��� I@����ғX@���I@���X@���ƹI@���X@���I@���`{X@���RI@���Y}X@���`I@����tX@����$I@���@wX@���`wI@����X@���lI@����}X@����cI@���X@���dOI@���[X@���EI@���@X@���`@I@���@X@���%I@���@܆X@���`AI@���IwX@���dH@���qX@���H@���keX@���`H@���@eX@���`qH@����^X@���H@���@`SX@��� H@���JX@��� ~H@���?X@���sH@���-X@���H@����%X@����H@���@$X@��� UH@��� X@��� H@���CX@���aH@���X@���H@����-X@����I@����W@���H@���W@���`I@����MW@���I@����UW@���|H@��� W@��� aH@���:W@��� H@����W@���II@����ۧW@���`I@���`W@����I@���ිW@���GI@���W@���`II@���nW@���3JI@����\W@���`OI@��� TW@���BMI@���BAW@��� xNI@��� ?W@���`QI@���>W@���`TI@����>W@���UI@���?W@���@-`I@����%?W@���`dI@���@r;W@��� ffI@���@2W@����dI@���0W@���[I@����,W@���mWI@���(W@���XI@����,W@��� oI@���@W@���@pmI@���:W@���dI@���`W@���\I@���� W@���`XI@���V@���D[I@���SV@���� VI@���V@���rCI@���V@���;I@����V@���<I@���@V@���@z4I@���V@���@I@��� V@��� I@���@ˁV@��� 6I@���YV@���`H@���~V@���@(H@���@lV@���`H@���@hV@���`H@����iV@���`H@���mV@���H@���@mV@���`H@����WV@���3H@���*VV@���@hH@���@NV@���H@��� LV@���8H@��� OV@���`0H@���KV@���`H@���R?V@��� H@���@r;V@���H@���8V@���H@���L8V@���`H@���@:V@���H@���36V@����H@���)V@���H@���@h$V@���`H@���V@���H@���` V@���H@���@qV@��� %H@��� V@��� H@���`a V@���עH@���U@��� xH@��� U@���H@���`U@���H@���U@���?H@���@.U@����H@���U@���@H@��� \U@���H@���@U@����äH@����OU@���`2H@���U@���)H@���U@���H@���3U@��� H@���@ͯU@���-H@��� U@���H@���U@����H@���@U@���H@���U@���H@����U@���RH@���2U@���.H@��� 8U@���H@���U@���H@���!U@��� H@��� sU@��� H@���@U@���kH@���ޠU@���@H@���`ŞU@���@WH@��� JU@����H@���`ŒU@���qH@��� U@���-H@����;U@���zH@���U@���2H@���@U@���@H@���U@���H@��� ~U@���H@���}U@���@H@���`~U@���H@���zU@���`H@���uU@���H@���TqU@���=H@���2lU@���@>H@����_hU@���QH@��� bU@����H@���@G^U@���@H@���YU@���@H@���QU@���@H@���MU@���H@���`MU@���H@���LU@���H@���EU@���H@���YEU@���H@���@>U@���H@���@>U@���H@��� CU@���I@���@U@��� I@���@:U@���`V I@��� 7U@��� a I@���3U@��� uI@��� !/U@���`I@���`)+U@����4I@����q$U@���I@��� !U@��� CI@���`TU@��� I@���U@���I@���U@��� I@���U@����"I@���U@����]-I@���� U@��� 9I@���@GU@���AI@��� U@��� \GI@���` U@���LI@���T@���[I@���=T@��� fI@���T@���-hI@���}T@����pI@���`T@���`[qI@���`fT@��� \wI@��� T@����{I@���5T@���QI@���T@���@>I@���T@���8vI@���T@���qI@���൰T@��� tI@���`T@��� sI@���`T@���@gI@����T@����M\I@���VT@���` aI@����$T@����f_I@���@ϖT@���=aI@����MT@���@._I@���T@��� `I@��� &T@���2\I@���T@����ZI@���`BT@���`\I@���ീT@���@bI@���@zT@��� dI@��� uT@���WbI@���`rT@���eI@���pT@���eI@���snT@��� _I@���\fT@���8^I@���`]T@���`�_I@��� 6\T@���GaI@��� \_T@��� kI@���`�[T@��� vI@���@.[T@����{I@��� JST@����)|I@���KT@���xI@���DT@���QyI@���ET@��� QI@���@JT@���I@��� KT@���I@���?HT@���@#I@���@pFT@��� I@���BT@��� 8I@���-<T@����MI@���m<T@���`I@��� ;T@���VI@���9T@���I@��� 7T@���#I@���,T@���@>I@���(T@����4I@����(T@���qI@���`�T@����I@����T@���GI@���@T@���@.I@���`T@��� QI@��� &T@���`vI@���`T@���{I@���T@��� (vI@���`+T@���vI@��� T@���`krI@��� T@���`qI@��� T@���`MkI@���`� T@���jI@���T@��� hI@���-T@���nI@���=T@���@jI@���`�T@���aI@���T@���`I@���`S@���iI@���`TS@���I@���S@���`I@���@S@���J@���@S@���KJ@���S@����ZJ@���S@���`J@���@S@����$J@���@zS@���#J@���@EsS@��� CJ@���aS@���J@���@"S@��� J@���S@���K@���S@���VK@���^!S@���K@���)S@���K@���`+.S@���`K@��� \3S@���K@��� 3S@���a!K@���`6S@���%K@��� \7S@���(K@���`6S@���`-K@���`B2S@��� /K@���1S@��� u2K@���@3;S@�����8K@���@;S@���<K@���3S@���Q9K@����,S@���8K@��� 8+S@���@ 7K@��� *S@��� /K@���$S@���.K@��� 8S@���@)K@��� JS@���`-K@��� S@���@%K@���B S@���-!K@���UR@��� jK@���R@����q K@����R@��� K@���R@����K@���BR@����BJ@���@R@��� CJ@���`+R@����BJ@���R@���@WJ@��� R@���@J@���aR@���@J@����R@���)J@��� 8R@���J@���fR@���@J@���ٝR@����J@����R@���J@���@R@���J@����xR@���BJ@����R@���`J@���`+R@��� J@���`ʒR@���@J@���R@����vJ@���ɏR@���J@���3R@���J@���(R@���aJ@���R@���uJ@���5R@���J@���`zR@���J@����sR@��� J@���`qR@���@ J@���`RkR@���HJ@���sjR@���J@���sfR@���`[J@���:eR@���J@��� [R@��� ҷJ@����WR@���`ûJ@���ZR@����J@���?PR@���=J@��� RR@���@J@���@EOR@���{J@���PR@���`vJ@���UR@����J@���@VR@���J@���]R@����vJ@���ZR@���J@���[\R@���@J@��� `R@���` J@���iR@��� J@���mR@�����J@���pR@���eK@���lR@���$K@���-lR@��� K@��� &gR@��� K@��� hR@���K@���@bR@���`K@���`bR@���J@���@_R@���J@���@^R@���J@���=ZR@���J@���kYR@���kJ@����qDR@���@J@���@CR@���K@��� @R@���`K@��� ?R@���`K@���`k>R@��� lK@���@i7R@���K@����$4R@���@K@���@@'R@���@K@����=#R@���` K@���!R@���~K@���*R@����$K@���`.R@����J@���z$R@���`fJ@���R@���`J@���YR@��� J@���R@���@WK@���R@��� \K@���[R@��� K@��� !R@���K@��� R@���@GK@���R@��� K@��� R@����BK@��� R@���!K@���@R@���#K@���sR@���@p&K@���� R@����/K@���@ R@���70K@����OR@���`1K@���@R@����z.K@���R@���Q(K@���`R@���$K@���kR@���`VK@���+ R@���K@��� R@���FK@���2 R@���`[K@��� R@���` K@���R@��� (K@���Q@���` !K@���#Q@��� K@��� Q@���FK@���Q@���`K@���Q@���K@���`0Q@����K@����Q@���K@���`Q@���K@���`Q@����vK@���Q@��� K@���Q@����$K@���Q@���8 K@���@WQ@��� 8K@����Q@����K@���Q@���@K@���Q@���"K@����ܿQ@���#K@���@ͿQ@���j+K@���Q@���j+K@�����Q@���(K@���Q@���)K@���`0Q@���4K@����Q@���5K@����Q@���V<K@���`Q@���=K@���`BQ@���<LK@���sQ@���-QK@���Q@���[XK@���`Q@���`]K@���@Q@���8^K@���Q@���fK@���Q@��� lK@���Q@��� QrK@��� Q@��� QzK@���sQ@����|K@����ſQ@����K@����ܿQ@��� CK@���@iQ@���@K@���Q@���K@��� Q@���ѨK@����xQ@����$K@���Q@��� aK@���`Q@��� K@���`�Q@���uK@���}Q@��� ǚK@���@pQ@��� K@��� JQ@���ǑK@���@Q@���@K@���|Q@���@#K@���&vQ@���¥K@��� kQ@����]K@��� n_Q@���­K@���`}VQ@���{K@���@NQ@���`K@���KQ@���K@���`JQ@���FK@���<Q@���K@���`;Q@��� LK@��� <Q@����fK@����@Q@���BK@����)@Q@���̤K@��� ;Q@���K@���(9Q@���K@���`6Q@���K@���a.Q@���ܮK@���,Q@���K@���-Q@���K@���(Q@���K@���)Q@���K@��� (Q@���יK@����_$Q@���K@��� Q@���eK@���Q@���@#K@���@Q@�����K@��� Q@���eK@���|Q@���@GK@��� Q@���ҖK@���`Q@��� K@���u Q@���ǑK@���@Q@���fK@���+Q@��� QK@���Q@���HK@����Q@���`BK@�����Q@����K@��� Q@��� K@���# Q@��� {K@���3Q@���`yK@���`)P@���}K@���BP@���`M{K@��� P@���)rK@���5P@����]mK@���sP@���nK@���P@���lK@���P@���@ oK@���P@����BgK@���P@���`eK@���P@���@bK@����ųP@���@#bK@���`BP@���� ]K@����P@���\K@���P@���`RK@��� nP@���@ OK@���}P@���@W[K@��� vP@���@WK@���@rP@����NK@���zpP@���LK@���`^P@���@QK@���]P@��� NK@��� _P@���IK@���@p^P@��� HK@��� VP@��� HK@���MP@����CK@���aNP@���z=K@���LP@��� ;K@����fOP@���,K@���MP@���(K@���`FP@���e(K@���@P@���`[1K@���L=P@���`4K@���9P@���3K@��� 8/P@��� +K@���@*P@���-K@��� &P@���s2K@���@ #P@����.K@���P@���`v/K@���`TP@���+K@����fP@���,K@��� P@���(K@���uP@����(K@��� &P@��� (&K@��� O@��� 'K@���pO@���#K@���GP@���@pK@���lO@���#K@���@.O@����BK@���RO@���G!K@�����O@���`kK@����O@���`K@���O@���RK@���೩O@��� \K@��� O@���K@���O@���K@��� O@��� K@���O@���< K@���O@��� K@���tO@��� K@���@jO@��� K@����MdO@���@ K@���RO@��� K@���eHO@���<K@���`MO@���J@��� (FO@����J@���`IO@���J@��� DO@����J@���4O@���-J@���j3O@���J@���2<O@��� H�K@���@:O@���K@����*O@��� K@���`)O@���@3K@���`MO@��� HJ@���zN@���@J@���<N@���@J@��� HN@����K@��� N@����zJ@���3N@���@>�K@���N@���J@��� N@��� uJ@���QN@���Q�K@��� LN@��� K@���೹N@���QK@���N@���K@���ҦN@��� CK@���N@���`MK@���@?N@��� J@���N@���J@��� N@���J@����ܗN@���8J@���`VN@���J@���N@���@J@���N@���@>J@���`~N@���`J@���N@���J@���@.N@����J@���@3N@����qJ@���N@��� J@���� N@���`J@���N@���J@���=N@����qJ@���`N@���J@���@N@���WJ@���`[N@���@J@���}N@���J@���puN@���J@���@{sN@���@J@���@WsN@���`J@���N@���J@����N@���J@���N@���.J@���@N@���J@���N@���@J@���N@���J@���@N@���\J@���`N@����J@���N@���J@���`N@����J@���N@��� J@���@pN@���WJ@��� N@���ױJ@����N@���\J@���` N@���RJ@��� N@���༣J@���`N@��� J@���N@���J@����zN@���࣠J@��� N@���$J@���f O@�����J@���O@����J@���� O@���8}J@���@N@�����xJ@���`fN@��� L~J@���N@���`}J@���oN@���`yJ@����=N@���@̓J@���@N@��� J@���N@���$J@���N@���͂J@���N@���`}J@���N@���L}J@��� QN@���`�wJ@���epN@��� hJ@���mN@���@dJ@���`]N@��� _J@���YN@���\J@���XN@���$WJ@���]N@���SJ@���.^N@���QJ@���jN@���aQJ@���jN@����CJ@��� C|N@��� \?J@���B}N@���4J@���`N@����+J@���`}N@���@'J@���`tN@��� J@����)dN@���2J@����[N@���@J@��� L>N@���@J@���N@���I@���N@���-�J@��� H�N@���I@���@>N@��� I@����4N@���I@����N@���@.I@���`kN@����I@���pN@���@3I@����v(N@���`kI@���?N@���I@����?N@���I@���q;N@���I@����;N@���@pI@��� /N@���` I@���`1N@���I@���{BN@���@I@����CN@��� HI@��� xN@��� \I@��� vN@���`)I@���`wN@��� I@���}N@��� I@���N@���஽I@����̦N@����4I@���N@���@I@���@N@����BI@����ԿN@����߶I@��� uN@����̦I@���`IN@���@XI@����N@���@I@��� LN@���I@����N@���oI@��� N@����fI@���ѰN@����MdI@����cN@���TI@���`[YN@���TI@��� 'N@���XI@��� N@���[I@���`N@����=cI@���(N@��� ClI@���N@���nI@���N@���nI@����M@���`MkI@����$M@���aI@���#M@���7XI@����fM@���HOI@���M@��� FI@���`MM@���VDI@���pM@���8=I@����M@����)DI@��� M@���@GI@���M@��� 8GI@��� M@���JI@���@{M@���VLI@���@ M@��� PI@���@gM@���QQI@���M@����fOI@��� M@���UI@���[xM@���oWI@���@GrM@���YI@���@gM@���$_I@��� CdM@���eI@���`2UM@���@ gI@���� UM@��� oI@���`LM@���`nI@���eHM@���(uI@���`OM@���~I@���LM@���@I@���EM@���GI@���2M@���)I@���2M@��� ŽI@���@++M@����EI@����M@���ҎI@��� M@��� I@��� M@���I@��� M@��� I@��� M@���@I@���`[�M@���I@���L@���I@���.L@���@gI@���.L@���@gI@���L@��� \I@��� L@���GI@���`[L@���j{I@���L@���tI@����L@����sI@���L@����zvI@���@L@���uI@���L@���@pI@���஽L@���nI@����L@����)tI@���L@���рI@���L@���`)I@����ܗL@���I@����ÌL@���೉I@���@oL@���`vI@���cL@���`I@���`YL@��� 8I@���`V]L@���(}I@����$PL@���.~I@����CL@���I@��� l@L@��� uI@���78L@���zI@���:L@���`2}I@���/L@����zI@���-L@���jsI@���-)L@���qI@����L@���LuI@���`L@��� ^I@��� 8K@���QI@���@K@����KI@���K@���2DI@���K@���`RGI@���K@���zLI@���K@���@MI@���෿K@���TI@���ǸK@���`UI@��� \K@���qSI@���K@���p]I@���`K@���jI@���`MK@���QqI@���K@����=sI@���`[yK@��� sI@���`jK@���}I@���=ZK@��� I@���RK@��� I@��� HHK@���=I@���`EK@���I@���HK@���zI@���{BK@��� 8wI@���QPK@����)tI@���`BVK@����oI@���RK@���hI@���VK@���VdI@��� CTK@���@g\I@��� YK@����zNI@���@NK@���EI@��� BK@���CI@���8K@���@HI@���@2K@���PI@���78K@����ZI@���8K@���`aI@���@K@��� iI@���@K@���mI@���@5K@���qI@���@&K@����)tI@���@#"K@���` yI@���)K@���`{I@���fK@���@I@���K@���༃I@���` K@���I@����]K@���ාI@���@K@���I@���J@���I@���7J@���I@���@.J@���I@���J@���I@���J@���3I@���J@���`BI@���`RJ@��� I@��� CJ@��� (I@���J@��� I@���J@��� QI@���VJ@���೹I@���`ܶJ@����I@���`J@���I@���஥J@���`BI@����J@���I@���J@���I@���J@���½I@���.J@����I@���xJ@���kI@���@qJ@����I@���QqJ@���`fI@���=iJ@���I@���bJ@���I@��� VJ@���`I@���RJ@���@ͻI@����JJ@���qI@���-@J@���QI@���2<J@����I@����1J@���@ I@���@g,J@��� I@���@(J@����I@����&J@���@I@���`J@���LI@���J@���`I@��� J@���I@����J@���I@���I@��� I@���I@���8I@���I@���@I@���I@�����I@���HI@���3I@���@3I@��� I@���I@��� I@��� I@���I@���@3I@��� I@��� I@���I@����̦I@���fI@����äI@���`I@���` I@��� I@���#I@����zI@���`I@���I@���`I@���I@���I@���I@���`I@����I@���` I@���I@����BI@��� I@���-xI@���-I@���nI@���-I@��� bI@���DI@���aI@��� I@����$hI@����I@���gI@���I@���2dI@���I@����fWI@���`[I@����[I@��� I@���(MI@���I@��� LI@���@{I@���EI@����I@���`BFI@��� I@���`R?I@���@I@���=I@����fI@���=1I@���@pI@���2I@���`)I@����]-I@���eI@���/I@���I@���.I@��� I@��� I@����=I@���H@���I@����H@���@I@���H@���I@���H@���I@���`H@���׊I@���BH@���I@���H@���f}I@��� lH@���@sI@����H@��� \oI@���H@���lI@���H@��� gI@��� CH@���zeI@���@H@���XI@���@GjH@���`LI@���^H@���MI@����QH@���SI@���LH@���qSI@���<LH@��� OI@���GYH@���`KI@���XH@��� (>I@���_H@��� "I@��� gH@���I@���BeH@��� I@����pH@��� I@����]uH@���`I@���jH@���WH@���?H@����H@���9H@��� H@���24H@���@3H@���70H@���H@���*H@���H@���`vH@���H@����H@���VH@���`2H@��� H@���H@���I@��� H@����vI@��� (H@��� I@����qH@���I@���)H@�����I@����4G@���oI@���G@����#I@���`G@���*I@���G@���@+I@���aG@��� 0I@���` G@���2I@����4G@���3:I@����G@���:I@���G@����7I@���`%G@����/I@���BG@���{*I@���G@���%I@���G@���I@���G@���`RI@���G@���`[I@���`G@���� I@���`G@���@I@���@G@���H@���-G@���`MH@���vG@���H@���eG@���@{H@���$oG@���QH@���@WG@���8H@��� \G@���`H@��� G@���@GH@���(G@���H@���)zG@���@H@����cG@���wH@���?G@���p5H@���ාG@��� "H@���QG@��� H@���VG@���@H@���೑G@���H@���@G@��� H@����G@���`) H@��� G@���� H@���`G@���aH@�����G@���@G@����fG@���G@���G@���G@���`G@���-G@���`G@��� G@���G@��� uG@���`G@���G@���G@����<G@���G@���G@���G@����)G@����M H@���@G@���H@���\G@���8&H@����=G@���8H@���`G@��� FH@���fG@����M\H@��� G@���@{H@���@WcG@���xH@���@#ZG@���`aH@��� lXG@����ZH@���=aG@���qKH@���bG@���AH@���8^G@���8=H@����]UG@����fGH@���PG@���aJH@���VLG@���GH@���QHG@��� ^H@���`vGG@���jkH@���`=G@���@uH@��� >G@����$H@���3G@���,H@���`.G@���`˝H@����e'G@���H@���!G@���̤H@��� G@���`H@���`%G@���`H@���s*G@���RH@���G@���H@���G@���JH@���G@���H@���G@���|zH@��� G@���xH@���@G@���wH@���| G@���@-pH@���2G@���pH@���@ G@���iH@���` G@��� hH@���SG@���jZH@���`G@���ZPH@��� G@���`YH@���G@���@]H@��� F@���aH@��� F@��� ~aH@��� gF@���@ZH@����F@���KH@���F@���FH@���`NF@���-H@���`F@���14H@����F@���`$H@���`F@���` H@��� OF@���`G@���`<F@���G@����vF@���@G@���F@���G@���F@��� yG@���`F@���G@���JF@���G@���|F@���G@���`F@���G@���F@��� UG@���F@���G@����wF@���G@����F@���[G@��� %F@���`G@���`F@��� G@���`nF@���`0G@��� gF@����G@���`qF@���G@���F@���G@���`6F@���G@���`NF@���\G@��� F@���G@���`F@���8G@���F@���cG@��� F@����<G@���F@���G@��� xF@���G@���@ӖF@����^G@��� %F@��� ~G@��� {F@���`qG@��� yF@���`G@���\nF@���G@����MdF@���:G@��� =jF@����#G@���:tF@���\~G@���uF@����5G@���iF@���qG@���_F@���aG@���`WF@���@\G@���NF@����WG@����BF@��� XG@��� y=F@����]G@���5F@���`0G@����M,F@���`NG@���@F@����MG@���F@���G@����MF@��� fG@���`E@���`G@����E@���`6G@���E@��� G@���E@��� G@���E@���G@���E@���ƹG@���@.E@���@oG@���`E@���@WG@��� >E@���`G@����E@��� G@����$E@���tG@���@WE@���bG@���7E@��� xG@��� E@���G@��� ҷE@���`G@���E@���`GG@��� OE@���`NG@��� E@���G@���`YE@���G@���`E@����G@���ZE@���`G@���@mE@���@G@����#QE@���`G@����JE@���`0G@���@E@���@W#H@��� E@��� )H@���E@���`_4H@���`_D@���\FH@���`HD@���eKH@���D@���DH@���3D@���V<H@���D@���`)3H@���jD@���H@���QD@���� H@���D@��� H@���RD@���@3G@����D@���`G@����D@��� CG@���8D@���G@���D@���)G@���D@����qG@��� (D@���-G@���`D@���G@���D@���@G@���͢D@���G@��� D@���G@���aD@���#G@���\D@����=G@���D@����̖G@���`[D@���G@��� D@���[G@��� D@���@G@���`vD@��� G@��� HD@��� \wG@���D@����zvG@���D@���oG@���LD@���bG@���@D@���aaG@���@D@���\G@����D@���KG@���fD@���HG@����fD@����HG@���D@����9G@���D@��� u2G@���eD@���(G@���-D@���`G@���-�E@���L G@����BD@��� G@���`E@���G@���E@���aG@���@E@����F@��� E@���F@���p E@���F@����E@���@F@���8E@���@F@���3E@���F@���LE@��� F@���=E@���@F@���BE@��� F@���@pFE@���F@���`CE@���F@���`MSE@���VF@���WZE@���෇F@���XE@����vxF@���`E@���`qF@���QaE@���pmF@���$_E@���`vgF@���(UE@��� fF@���NE@����`F@���-XE@��� HXF@���`B^E@���\FF@����4aE@���@>0F@���@ZE@���$F@����=[E@��� CF@����QE@���`F@���`ROE@���`F@���OE@���@E@���oGE@���@ E@���LE@���`E@���`2ME@���@E@���@RE@���`E@���(]E@���`E@���@_E@���E@���BeE@���E@���.nE@���WE@����sE@���@WE@����BwE@���E@��� a{E@���aE@����BE@���`E@����]E@����wE@����$E@���lE@����E@���YE@��� \E@���@PE@��� QE@���@gDE@���@.E@���B=E@���E@���(5E@��� E@���@.E@��� (E@����fE@���`E@����fE@��� җE@��� HD@����כE@���GD@���@#E@���@D@���(E@���zD@���2E@���QD@���E@����D@���{E@���D@���E@���WD@����ME@���@֥D@���`E@���@D@���E@���`D@�����E@���pD@����)E@��� _D@��� E@����XD@���`E@���=RD@���E@���@ED@���E@����!D@���=E@���`D@���`E@���@ D@���@ E@���`�D@��� E@���!C@���E@��� C@���E@���|C@���F@���_C@��� `#F@���EC@����*F@���`C@��� 3F@����C@���[GF@���@B@���EF@���SB@���YF@���DB@����M\F@���tB@���TF@���@-B@���kQF@���B@���PF@���B@���`VF@���@B@����#iF@���`B@��� sF@���B@���yF@���@ӆB@���F@���YB@��� gF@���MB@���`F@����yB@���עF@��� OzB@���F@���`cB@����F@���`B@���F@���cB@���@­F@��� gB@���F@����MlB@��� xF@���PaB@���`F@����WB@���ϩF@��� gUB@����MF@����e_B@����F@���`kB@��� ҷF@��� ~B@���ةF@���LjB@���F@���mB@��� F@���@?B@���ߣF@���B@����F@���@•B@���ةF@���{B@���F@���`B@���`NF@���@pB@���F@��� ,B@��� gF@��� B@���7F@��� xB@���@ӦF@���tB@���iF@���`GB@��� F@����wB@���\F@���B@���@F@���`B@���aF@���`B@��� F@��� B@��� ,F@���@B@���` F@���B@��� xF@���2B@���`HF@��� %B@��� >F@���B@��� F@���B@����F@���B@���F@����^B@����F@���8B@����G@���B@���G@���`_ C@���@G@���@C@���*F@���@F C@���F@����vC@���F@���l�C@��� F@���@?�C@���F@���C@���@-F@��� C@���F@��� C@���K G@����C@���`G@���!C@���G@���|:C@����<G@���HC@���@hG@���IC@���{ G@���[GC@��� G@���%C@��� G@��� >!C@���#G@���`Y C@���`2G@���@B@��� O2G@���B@���,G@���@B@��� 8G@���dB@���� VG@���(B@����OG@���#C@��� \G@���(C@���`VG@���sJC@���`NSG@���KC@���`VG@���@FC@��� [G@���@p5C@���_G@��� ~1C@���`0]G@���4C@���@iG@���<C@���`AnG@���`XC@���`/nG@���C@���`G@���rC@��� G@����wC@���`G@��� C@���@G@���*C@���G@���{C@��� G@��� >C@��� G@���עC@����wG@���`C@���`G@��� ~yC@���`6G@���wC@���G@���`EC@���@G@���@p=C@���G@���lHC@���G@��� ,YC@��� xG@���`HC@��� yG@����:C@���@WG@���`pC@��� G@��� C@���G@���(C@����G@���(C@���`G@����f'C@���`fG@���(C@����G@����C@���ۨG@���$C@���`G@���@#C@���G@���q+C@���G@���u9C@��� lG@���MC@���@G@���XC@���G@���`C@����G@����)dC@��� QG@���`MkC@���(G@���rC@���$G@���@;C@����G@���uC@���@G@���2C@���`2G@���C@���3G@���C@���qG@���C@����G@��� QC@���`kG@���$C@��� G@���C@���`VG@���C@��� G@���@WC@��� aH@���@.C@���8H@��� C@����zH@���uC@���H@����fC@���`MH@���@ C@���H@���QD@���-!H@����C@��� &H@���C@����#H@���C@���[(H@���aC@����=+H@���`C@���@ /H@���C@���8H@���`MC@���`=H@���C@��� @H@����C@��� \GH@���`BC@����JH@���C@���FKH@���@C@����NH@���@C@���VH@���C@���j[H@���C@���aH@���C@���`bH@���@C@���hH@���C@���GiH@����C@���� eH@���D@���hH@���@ D@��� nH@���` D@���#qH@����]D@���rH@���<C@���nH@���8C@���qH@���3C@����sH@���@C@���xH@��� C@���|H@���C@���H@���-C@���@ H@���eC@���H@����C@����܏H@���{ D@����H@����BD@���`H@����]D@��� ҟH@���D@����MH@���`�D@���שH@���D@���pH@��� a D@���\H@����D@���8H@���D@��� H@��� D@���H@���DD@���`kH@����D@���H@���7C@���-H@���-C@���RH@���kC@���H@���C@����H@���WC@���H@����C@����H@���jC@����H@��� ®C@���@H@���`C@���@>H@���C@���[H@���`C@����$H@���ۈC@���H@���xC@��� \H@���@qC@���H@���-aC@���H@���YC@���`H@���WC@���LH@���=RC@���{H@���2LC@���`H@����?C@���H@���@#:C@���@H@����$0C@���`fH@���`)+C@���I@���7(C@���`[ I@���C@���eI@���#C@���H@���C@���H@����C@����H@���B C@����$H@����C@���`H@���=C@����H@���C@���`H@���@pB@���`)I@���@B@����= I@���3B@���I@���zB@���I@��� B@��� 'I@���HB@���,I@���FB@���@33I@���`B@��� H8I@��� lB@����6I@���B@���@>0I@���B@��� ,I@��� †B@���+I@��� |B@���,I@���8eB@���`&I@���YB@���)"I@���@3SB@���@{I@���PB@���`)I@���GB@���I@���@EB@���I@���@HB@��� a#I@���`AB@��� #I@���4B@���-)I@��� (.B@���� %I@���&B@���@g$I@���@GB@���`.I@���@B@���@W3I@���B@����=3I@���@B@���@p6I@����B@���78I@���A@���`6I@���`A@��� u2I@��� A@����1I@���LA@���8-I@�����A@���`,I@���jA@���[0I@����A@��� 9I@���@ͻA@���z=I@����ܷA@���@BI@���aA@���@QI@���A@���VI@���A@���XI@��� uA@��� bI@��� A@����fI@���@A@����)lI@��� (A@���@oI@���`BA@���vI@���A@��� xI@���$A@���zI@��� A@��� I@���A@���aI@��� A@���I@���A@���I@���ܕA@���`�I@���`A@���I@���oA@���@љI@���uA@���VI@���qA@���I@����zA@����qI@���zuA@���=I@���^A@���I@���UA@���I@���QA@���`�I@���DA@���@I@���0A@���I@��� 'A@���I@���A@����4I@���@#A@����]I@���@>(A@����qI@���8&A@��� 8I@��� A@��� I@���A@���I@��� A@��� ¶I@���@A@���@I@���RA@���`MI@����qA@����vI@���`V A@���I@��� A@���BI@���A@���$I@���2A@��� I@���`v7A@���`I@���e8A@���3I@���&1A@���I@���@*A@���`I@��� &A@���I@��� A@��� I@���A@���I@���A@���@I@����A@���I@���eA@���I@���`[ A@���J@��� A@���J@��� A@���qJ@����BA@���J@���@@@���J@���8@@���`%J@���@@@���(J@���@@���@+J@���#@@��� L.J@���@@���%J@���@@��� 'J@���@{@@���z,J@���෿@@����.J@���u@@��� +J@��� Dz@@���`.J@��� @@���-J@���3@@����0J@��� C@@��� 'J@���@@���(J@���8v@@���@J@���n@@���@"J@���`]@@���u!J@���`F@@���(J@���[@@@���7(J@��� u2@@��� *J@���-@@��� 'J@���u1@@���� J@���+@@���VJ@����*@@��� J@��� L&@@����J@���@@���) J@���`@@���J@���a@@���`RJ@���(?@���J@���y?@���@J@���@?@����M J@���?@���@ J@���Q?@���8J@���2?@���kJ@���`ó?@����fJ@���?@���`!J@���@?@���"J@����2?@���(J@����4?@���o/J@���?@����2J@���� ?@��� 3J@���?@���@>J@��� ?@���BJ@���e?@��� DJ@���@?@���FJ@���>?@����FJ@���f?@��� LJ@�����?@���QXJ@���?@���YJ@���Q?@����z^J@���@?@����fJ@���=?@����4iJ@���@r?@���mJ@����y?@���nJ@��� Qj?@��� QrJ@���� b?@���uJ@����=[?@���`2}J@���2D?@���͂J@���`[Q?@���J@���`S?@���J@��� b?@���J@���[`?@���@J@���`2e?@��� 8J@����)l?@���@J@���`?@���`J@���?@���@J@���?@���ۘJ@���?@���@J@��� ?@���`vJ@���;?@���<J@���@@���J@���@.@@���`)J@����@@���@J@��� @@���@J@���@@����J@���`B&@@��� J@���`2-@@���HJ@���7@@���aJ@���@?@@���`J@����M<@@���J@���@3;@@���`vJ@���J@@���HJ@��� N@@��� lJ@����]M@@���J@���R^@@����׫J@���\@@��� J@���`B^@@����$J@����z^@@���`J@���2T@@���J@���@U@@���@J@���zL@@���`ܾJ@���` I@@��� J@���8@@����4J@���5@@���@J@���`[A@@���@J@����;@@���J@���@>0@@���J@���)*@@���J@���`[@@���zJ@���`R@@���J@��� S?@��� J@����4?@���@J@���`?@���@J@���2?@���uJ@����?@��� H�K@���?@���@>K@���?@����K@���?@���8 K@���෯?@���`2 K@���?@���K@���P?@���WK@���@T?@���`fK@���O?@���@%K@���O?@����,K@����C?@���`1K@���];?@��� u:K@���2?@���:K@��� 1?@���z=K@����o!?@���B=K@���?@���@K@��� !?@���` IK@���/?@����NK@���o/?@���3RK@���R?@���@{SK@���G?@����[K@��� >@����fK@���>@���pmK@���Q>@���pK@���z>@���xK@���`>@���|K@���@>@���`�K@���>@��� CK@��� ?@���jK@���`?@���K@��� >@��� LK@����4?@���WK@����>@��� K@���>@���QK@��� H>@���K@���>@���BK@���|>@���K@���>@��� ǺK@��� >@���`VK@���|>@����K@���`)>@��� K@��� \>@���@K@��� >@���`2K@���|>@����BK@��� >@���`K@��� >@���K@���஥>@���K@���>@��� 8K@���P>@���K@���~>@���K@����]}>@���`fK@���`L>@���`K@���9>@���`K@���`#>@��� K@���`>@����]K@��� =@���K@���=@���GK@���=@����=K@���=@����)K@���H=@���7K@��� †=@���K@���@p~=@���-K@���b=@���K@���[=@���� K@���*h=@���K@���v=@���K@����i=@���@K@���4=@���2L@���<@���<K@���<@���K@���@<@���FK@���`ó<@��� L@���f<@��� L@��� S<@���z L@���@3c<@����M L@���Z<@���HL@�����P<@���`fL@���*<@���=L@���1<@���`L@���3<@���fL@���<<@���`"L@���4/<@��� /L@��� 0<@���e8L@��� <@���@L@���@ '<@���FL@���e<@���KL@���<@���`OL@���G<@���XL@���;@���@_L@���;@���bL@���`�;@���fL@���o;@���iL@���@P;@��� 8oL@���;@���pL@����ף;@���lL@���;@���rL@���;@���uL@���@p;@����]}L@����;@���ۀL@���@ ;@��� lL@����;@����BL@���>;@���L@���;@���`BL@��� ;@���@L@����Ή;@���$L@���;@����L@���;@���zL@���@;@���L@���`�_;@���L@��� Y;@���<L@���g;@���L@���=j;@���uL@��� d;@���VL@���i;@���eL@���Ն;@���L@���2;@���L@����;@��� L@���;@���L@����);@����L@���3;@���L@��� (;@���L@��� ;@���@L@���ò;@���`L@��� ;@���=M@���z;@����M@���@<;@���M@���`];@���` M@����;@���M@��� ey;@��� aM@���v;@���@&M@���� ;@��� L.M@���@;@���4M@���@Pl;@���@fM@���\~;@��� pM@���;@���@p~M@���;@���@M@���;@����qM@���@;@���LM@���;@���M@����o;@���@WM@���@;@���M@��� <@���oM@���<@���`M@���`o0<@���M@���`1<@���@M@���+<@��� M@���<@���`M@���<@���M@���m<@���`M@���@];@��� M@���@4<@����#M@���`<@���`M@���/<@���M@���9<@����M@����_<@���M@���j<@���M@���=j<@���M@���!r<@��� =M@���@ӆ<@��� &M@���q<@���@M@����T<@���M@���`=@���RM@���` =@���rM@���r<@���M@���/=@���`�N@���`c=@���@M@����=@���M@���.>@���IM@���8>@��� M@���@9>@���`M@���Q8>@���M@����=@��� ON@���[=@����N@���@X=@���@FN@����=@���N@���z=@���kN@���`W=@���N@���@�=@���`GN@���<@���.N@���<@���`*N@���<@����51N@���zt<@���DN@����<@���@GN@��� [<@���@9N@���y<@���1<N@����v<@���DN@����*<@���IN@���@<@���LN@���@d<@���IN@���<@����^MN@���<@���`RN@���ʮ<@���NN@���y<@���@oVN@���r<@���8VN@���s<@���\N@���<@��� x^N@����֔<@����eWN@���`eg<@����TN@���ka<@���@ON@���H<@���@hLN@����S7<@����DN@���;@���`NCN@���;@���GN@���@;@��� BN@����v;@���FN@���m<@���sN@���<@���{N@����T<@��� UN@����=@���஖N@���@=@���ZN@���=@���(N@���- >@���yN@���)'>@��� N@���>@���@ O@���C?@��� AO@���n?@����#aO@���@Y?@���`tO@���`fF?@���O@����$@?@����O@���@42?@���O@���e>@���O@����w>@���@­O@��� N{>@���`BO@���@ >@���O@���`5>@���ZO@��� ~A>@���`O@���@d>@����P@����L>@���P@���7>@���@ P@���`܎>@���� P@���>@���P@���@\>@����vP@���'>@���@P@���9 >@���@P@����T>@����P@����>@���"!P@���=@���}%P@��� ->@���l(P@���5>@��� +P@���!>@��� /.P@����Z!>@���10P@���x>@���@2P@��� N=@���`3P@���=@���|:P@���;=@����v@P@��� =@���@_DP@���@=@���� HP@���=@���IP@���=@���;KP@��� =@����NP@���@=@��� OP@���@P=@���PP@���@ۿ=@���AVP@��� =@���@`P@����v=@����wcP@����=@���dP@���=@���gP@���=@���iP@���A>@���:lP@���@>@����jP@���@X">@���@nP@���=@���@.P@���J=@���!P@���`_=@���`P@����c=@���P@���@Y=@���`P@����(=@����%P@���@3=@���@QP@���x=@����P@���@X"=@���P@���g=@���bP@����=@���@P@��� O=@���P@���`=@���@`P@����S>@���uP@���=@����-P@���``[=@���@GQ@���@X<@����_ Q@���gu<@���8"Q@���@X<@���0Q@���J<@���`4Q@���޼<@���� 8Q@����n<@���@8Q@����t<@���`:Q@��� <@���RCQ@��� =@���3BQ@���`f=@���*BQ@���`;=@���FQ@���IO=@���@NQ@��� KO=@���OQ@���@XO=@���)SQ@��� \O=@����-TQ@����w>@���@^Q@������������ s<@������Z>@���`g���=����������x{>@���`g���@ԅ>@����ף���>@��� ���9>@�������>@������>@������Z>@���$`����C>@���@���2>@��� ���@>@��� 1���a>@���`Ce���,[>@���`w���@Z>@���࡯���`K>@��� 9����9>@���@z���`R'>@���`q���!>@���f���>@����a ���`>@���y���3>@���৵���>@������=@���p���j=@��� ���g=@������A=@������j=@���@.���==@��� 8g��� =@������ q=@���@]����#a=@��� ���@Y=@��� v���1T=@���:��� #=@���@���=@���x���.=@�������<@��� *;��� s<@��� ����F<@����2���n<@���`���<@���?H����<@������`0<@��� ���@J<@���H���`=@����8/���@=@���U��� +=@�������=@���`x��� $=@������;=@���z���<=@��������q\=@���@*���=@���)���C=@���N���!=@��� k���=@���K����=@���\n��� +>@���`o���I/>@���`ff���G>@���]n���`)[>@���= ���x{>@���`g�����������(@����E@���)@��� E@���P����������(@����E@����(@���E@���4(@��� (E@����(@��� E@���(@���$E@����(@���E@��� \(@���@>E@���4(@���E@��� \(@���aE@����;(@���E@���`[(@���=E@���Z(@��� uE@���Y(@���E@���(@���E@���(@����E@���w(@����E@���i(@���`ME@���`'(@���E@���(@���E@���F(@���2E@���%(@���E@����F(@���� E@����(@���fE@���e(@���`E@��� (@���E@���(@��� E@��� (@���.E@���(@���RE@����(@���`fE@���(@���E@���@r(@���@E@���@P(@��� E@��� (@���@E@����)@���E@���)@���RE@����F)@���`E@���@g)@���`VE@����)@���E@���)@���<E@��� n)@��� E@���`)@���E@���`)@����E@���)@���)E@���`)@���E@���)@����4E@���)@����E@���`m)@���7E@���)@��� E@���)@���E@���`(@����E@���O(@���@.E@���@(@���E@��� ((@���.E@����(@���E@���p(@���E@���@P(@���E@���/(@����ME@���(@���@E@���@(@����E@���R(@���jE@���@(@���E@���(@���E@���|(@���`E@��� (@����E@���@(@���`E@���(@���@E@���(@���E@���(@���qE@���`(@���@E@���(@����)E@���(@���@gE@���O(@����qE@���@P(@���<E@���@(@���@E@����(@���E@���`2(@���@E@��� (@��� E@���(@���`E@��� (@����E@���(@����E@�����Z������(@���@z?���@W@���:?���������� ������&@���@z?���(@���h?���S@���@?���x@���@?���r@���?��� @���?���/@���?���@g@���?���&@���@z?���ǘ@���`V}?����m@���e?���@���a?��� @���?���;@���?��� @���a?���@���$?���@���?���@@��� ?����~@���@?���#y@���@N?���s@���@ ?���4o@���@?���Bm@���?����i@���`?���%d@���= ?���Ga@���` ?����_@��� ?���6Z@���@>?���XW@���` ?���XW@���?���X@���%?���6Z@��� 6<?���*X@���`vO?���V@���`ff?���U@���b?���S@����?���Q@����ף?��� O@���`?���|P@���`?���LU@���@ ?���[@���`?���i^@���`?���Ga@���?���f@���@ ?����i@���`K?���n@���@?���r@���@?���su@���@ ?���w@���J?���w@���?���_v@��� C?���_v@���@33?���w@���@#J?���/{@���W?���p}@���j?���#y@���_v?���su@���?���v@��� Ԛ?���#y@���?���Qx@���`K?���|@���?���|@���?��� ~@������?���@����?���@���?���̌@���{?���@����?���@����x ?��� @���`?����K@���`t$?����)@���`5?����v@���:?���9@���`0*?���@���`?���@����x ?���@��� ?����@������?��� @���?����@����x ?��� @����?��� @����?���-@��� u?��� @���{?���@y@���?���@W@���?���@W@���H?����m@���`Ӽ?��� @���W?��� \@���`?���-@����?��� @����ף?��� a@����ף?���@.@����_?���@@���ׁ?����D@���s?���@@���h?���Q@���`Z?����"@���c]?����@���c]?���@���Q?��� ~@���/L?��� \@���:?��� \@���j+?��� @���`5?���@@���@8?���@@��� '?����m@���6?��� @��� ?���-@���7?��� @���?����@���?����o@���J?����"@���?���@���@N?���s@���@?���@@���?���@����?���@���!?���/@���`w?����D@��� ^?���Q@���@#J?���@���m4?���@@���6?���@���:?���@@���@>?��� A@��� ?���V@���@?���@���?����@��� ?����@��� Q?����@����?���@���ܵ?����@���a?����@���@ё?����@���?���ǘ@���`V}?����� j������`0MA@��� 6.@���AL@��� a@@���J������ ������"L@���9@���{L@���`9@���aL@���9@���L@���:@���UL@���f:@��� e L@���@:@��� L@���@:@����L@��� C:@��� L@��� 7:@��� &L@���1:@���3L@���`8:@���R'L@���::@���`.L@���a:@��� D4L@���W:@���l@L@���`Y:@���AL@����#Q:@���`;L@���Q:@��� 3L@���`G:@���=L@���9=:@���`N;L@��� V$:@���/L@���4:@���)L@���`*:@���.L@���$:@���1L@���@:@���`;L@��� 1:@���`Y1L@��� :@���@6L@���:@���`3L@���`9@���k9L@���9@���`/L@���@.9@���&L@���I9@���"L@���9@���`˦C@��� a@@���Q�D@��� @@���`qD@����x?@���`A6E@���>@��� }E@��� O>@���`E@��� +j>@���CE@����#a>@���nE@��� O>@����E@���=@��� E@���u=@���[F@���4=@���^F@���0=@����#F@����T<@���@F@���``<@���SEG@���@=@���`YYG@����=@��� G@���<@���G@���`)<@��� G@���2<@���@G@���@ۏ<@���5H@��� [<@����DH@���Qh<@��� DH@���qL<@���OH@���g5<@����LH@���H <@���@TH@����v<@���`H@���h<@����bH@���@;@��� _H@���;@���iH@���;@���@?pH@���` ;@���`qlH@��� ;@���`6hH@��� O;@���)cH@���;@��� hH@���@;@���UlH@���@3;@���mH@���@;@��� sH@���@;@��� {H@���;@���H@���`Y;@���H@���t;@����eH@���4q;@���`H@���`Yq;@��� H@���e;@��� H@����wg;@���H@���S;@���RH@���@-X;@��� OH@���!2;@��� H@���@-8;@���` H@���3;@���`H@���`';@���@H@��� !;@���IH@���@^-;@���`H@���8.;@����H@����;@��� %H@���@:@���)H@���Q:@���`NI@���``:@��� &I@��� &:@���I@���@:@���I@���:@���H@���:@����I@���࣐:@���I@��� xv:@���`I@���@i:@���@I@���K:@���`6I@���(:@���9I@����-:@���`I@���":@���`I@���@ :@���@?I@���`-:@��� I@���@42:@����^H@���D#:@��� H@��� %9@���tI@��� 9@���I@���`:@���I@����9@��� I@���@9@���`NI@���9@���` I@��� 9@���`I@���@W9@����/I@����t9@���0I@���i9@���� >I@����h9@���`BI@���s:9@���`JI@���9@���{SI@���;8@����]I@���8@���rcI@���?8@���iI@���\8@���ulI@����@8@���fI@���@7@��� J@���`6@����JK@����6@���`K@����I6@���@uL@����I6@���@uL@��� ;5@��� I@���2@��� G@���1@����F@��� 6.@����?F@���Te1@���+F@����i1@���`/F@���ti1@���F@��� W1@��� F@���`_1@���|E@���`N1@���`qE@���`6P1@���`qE@���[1@��� gE@����X1@���E@��� e1@��� `E@���D1@���}E@���@ 1@���@E@���l1@���E@���U1@���ǠE@����N1@��� E@����|C1@��� &E@��� 61@���ਓE@���=0@��� 0E@���I0@���`E@���@0@���E@���0@��� aE@����0@���`E@���0@���`E@��� 0@���'eE@���`0@���1\E@���40@���^E@��� N0@���@ZE@���10@���EE@���`0@��� &FE@���@�1@��� 7E@���1@����4E@���@Q(1@���-E@���-1@���.E@���1@���(E@����vh1@���r#E@���t1@���D@����1@���`D@���` 1@���D@����|2@���`D@��� 2@����eD@���82@���D@��� E2@���(D@���`G2@���ٸD@���e2@��� UD@����#2@����^D@���2@��� OD@���D2@���D@����2@���͛D@��� ,2@���D@���2@���SD@����}3@���D@���@$3@����MD@���@ C3@���@yD@��� U3@���xD@���ǀ3@����#aD@���@͛3@��� &fD@���@3@���` eD@��� x3@���`0]D@���3@���SD@����*3@���aRD@����3@���BD@���?3@����*D@���4@��� D@���E4@���tD@���E4@����C@���`X4@���C@���Ɛ4@���jC@���4@���`C@����4@���@C@����4@���@C@���4@���ΪC@���94@���|C@����$P5@���`˕C@����wg5@���`qC@����#5@��� C@���@5@��� C@���`5@���C@����5@���`C@���@P5@���`xC@���@P5@��� C@���?5@���C@��� &5@���UC@��� x5@���sC@���j"6@����C@����Sg6@���@WC@���@_6@���C@���@6@���K}C@����6@��� =C@���26@���{{C@���6@��� {C@���@6@���`mC@��� O6@���@WsC@��� 6@���kyC@���c6@���{C@���J6@��� OrC@���e6@���gC@��� 6@��� cC@���� 7@����fC@���P7@���@bC@���,7@��� LC@���7@���GC@��� 7@���8C@����*7@���7'C@���7@���@pB@���)8@���@B@���@d88@���`B@���48@���`B@���r+8@���B@���,8@���B@���L8@��� B@�����@8@���`B@����I8@���B@���I8@����^B@���O8@����B@���@8@���@ۗB@���8@��� `B@���8@���2B@���@8@���ൠB@���8@��� B@����8@��� &B@���`.9@����eB@���@^M9@���@B@���@p9@���biB@���9@���9eB@����Z9@���@ofB@���`9@���@\B@��� 9@����SB@���9@���@YB@��� 9@���aZB@���`6�:@���`UB@���@ :@���`KB@���@:@���?B@���@:@��� 'B@����$:@���B@���`ܮ:@��� B@���:@��� ,A@����v;@���A@���@O;@���A@����p];@���A@����;@���`A@���<;@���A@���<;@��� A@���@;@���@A@���@;@���ޔA@����<@���A@���<@���A@���` <@���A@���<@���@nA@���<@���kA@����M<@���@eA@���@<@���@\ZA@���#<@���VA@��� <@���UA@���@<@���NA@���d<@���`0MA@����w<@����PA@���,<@���\VA@���?<@��� ^A@���a<@����egA@���P<@���BeA@��� 2<@���`HhA@���<@���jA@���<@��� oA@��� ~=@���tA@���;=@���`{A@���@(\=@����{A@���@\=@���A@���jR=@���`A@���@QH=@���A@���>=@���A@���3=@��� B@���Z0=@���@)B@���`=@���JFB@���D=@���`kYB@����M=@���@._B@���@^=@���ZB@���=@��� B@���=@���`YB@���>@���[B@���`=>@���@pB@����V>@��� %B@��� w>@���@-�C@���@>@���rB@��� r>@���B@���@>@���ƩB@���@/?@���B@����i?@���`B@���k?@���|B@���Œ?@���UB@��� ?@���`AB@��� ?@���`C@���?@���`*C@���?@���@LC@���?@���`/nC@����v?@���C@����@@��� NC@��� @@���`˦C@��� a@@�����������1���O(@����w&���k0@������������� 0��� 0@���ǁ0���0@��� ~0���@^ 0@��� x0���8.0@���@Wc0���@Q80@���L0���0@���g%0����L0@���/����p}0@���/���20@���`.���h0@���tz.���0@���S7.���@ 0@���,.����L0@���;.����0@���@2.���ͫ0@���`.���`Y0@����T-���k0@���v-����i0@���`l,���`֣0@��� ,���0@���Ϋ,���`0@���@3s,���:0@���+���@.G0@����}+���<0@���$+���`20@��� +���@J0@���l+���[/0@���Z+���@P0@���`*����T&0@���*���@Q0@���*��� &0@���M|*���F/@��� \/*���@*/@���W3*���@/@����*���T.@���)��� /@���p)����q.@���)���.@���`)��� b.@���@)���@.@���)���j.@����)���j.@���)���&K.@��� 1(���@.@���(��� -@����}(���Y-@���K(���dG-@���r[(���@ 7-@��� g(���9,@���2(���ົ,@���@X2(���ߛ,@���(���`Ɏ,@���`/'���U,@��� (���`f,@���`'���+@���'���`ݝ+@���@I*(���j+@���(���3R+@���`r'���=*@���`C'�����*@���'���$*@���'���`�*@��� p'���W*@���@2'���*@��� 9'��� F*@���&���&*@���@ &���;)@��� &���)@���`r&���)@���&���` )@���C&��� t)@���r&����m)@���Q&���I?)@���d&���)@����w&���Z(@��� %&����-(@��� &���(@���`'���(@���'���(@���`'���@d(@���2(���@(@���Ȱ(���O(@���n(���`(@���n(���`(@���`C%)���(@���CD)�����(@���ʮ)���(@����)��� )@���)���` )@���)���`(@���W*���3(@���E#*��� )@���U*���.)@���n*���`G)@���`l+���U)@��� N+��� sZ)@����o.���^)@��� .���@')@���_/����)(@���50���(@���v0���`(@����0��� N(@���v0���f(@��� +0���(@���0���t(@���D0���@)@���@0����C)@���@A0���+)@���~0���0)@���_0���)@����0��� B)@����/��� +)@����ш/���-)@����#A/���)@��� /����D)@���` /���S)@���]/���`5)@���=.���)@��� .����)@���.���?)@���`r/���@)@���Q/����h)@���/���`lA)@���`P/���)@���tY/����w7)@���`//����}2)@����T0���t)@���h0����iC)@����SW0���@2)@���rk0���&)@��� x0���@'=)@���W0���?)@���"0���`I`)@���H0����O)@���0���`ff)@���0���p})@���0���T)@���x0���`p)@��� 10���D)@��� 0���@d()@���A0����&)@����*0��� l)@���0���&)@���Z0���*@���@W0���R*@���n/���Q*@���&/���*@���`"/���`*@����/���*@���Q.���@*@���ք.��� h*@���l.���@*@���d.���+@��� 9.���1+@���`-���*@���|-����c*@���@t-��� ߼*@���K-���Z*@���@%-���*@���,���p}*@���Q,���r{*@���+���Ϊ*@���`+���@*@���`ݝ+��� *@���`+���X+@��� +���""+@���@+���=*+@���,����c*@����,����+@���@-���`D+@���`2-���-W+@����`L-���S+@���`p-���@P9+@���z-���@N+@���-���r{+@���O-���`}+@��� $.���@+@���ڀ.����L}+@���G.����/+@���.���`+@���.���`h+@���O.��� -+@���0����.+@���Œ0���J+@���`k0���`]+@���0���@n+@���@0���K+@���`C0���dg+@���0���+@���#0���+@���}0���x+@���Ȁ0���+@���͋0���+@���`C0���=+@���0���+@����0���7+@����Y0���`L+@��� ؒ0���,+@���•0����,@���k0���@^M,@��� x0���@`,@���v0���J,@���0����N,@���0���j,@���0����,@����0����/,@���P0����#!,@���0���+@��� 0���\,@���0���[,@����0��� H,@���@1���,@���@-1���O-@���U1��� v-@���m1���t-@���Ml1���e-@����t1���R-@���1��� B-@���g%1��� -@����*0���1.@���0���.@���P0���`/@���`0���`x0@��� 0��� 0@����������� K@����$(���zK@���`����������:������@K@���f���K@���d���GK@���b��� K@���Ga����K@���_��� K@���U_���\K@���]���K@���w\���8K@���X���8K@���ZS���`VK@���M���K@���=J���K@���kI����=K@���H���`kK@���`KH���@K@���`E���aK@���`B���K@���>���K@���:��� lK@���@%5��� K@���@1���@K@���`",��� K@���`f&���K@��� %���GK@���`#���K@�������K@���`��� K@���`!����=K@���`' ��� K@���`#���K@���`'��� CK@���,���K@���0���� K@���S4���K@���@6���K@���@%5���`�K@���@1��� K@���@1���QK@���3����K@���@7���-K@���@:���`K@���`B>���@#K@���` A��� K@���,C����K@���`C���VK@���`D���� K@���`E���zK@���kI���LK@���M����qK@���M���K@���/L���K@���N��� K@���R���K@���X���@3K@���\���`K@���``���`MK@���d���@K@���f����)K@����$(��� aK@��� 8'���K@���`t$���aK@���� ���`K@���`I���kK@�������K@���@ ��� K@��� ���7K@������ K@���  ���K@����M����BK@����o��� K@���b����K@����"���K@������K@���_���� K@������fK@������.K@�������̾K@���d���@K@������ K@����v���@pK@������ K@���L����̾K@�������̾K@������`BK@���`���zK@���`m���K@���`���K@���`B����)K@���@���@ͻK@���@��� aK@���@3���`K@���@���{K@���`"���K@��� ����K@��� ɥ���K@���`���K@���`'����ܷK@��������BK@����)���K@�������µK@���@���K@����K���@K@����K���`MK@���ǘ���@K@��� ���@K@��� \���`K@������)K@������aK@��� ?���K@��� Є����$K@���@��� K@��� ~���K@���/{���` K@���y���@ѱK@���#y���WK@���_v���@K@���uq���`K@���6k���K@���g���༳K@���e����qK@���%d���`VK@���%d���`K@���f���K@���g����BK@���e����K@���``��� K@���[����ܷK@���LU����$K@���|P���7K@���=J���K@���`mE����K@���N@���K@���~;����K@���@8���)K@���@6��� ǺK@���@4��� aK@���@4��� K@���@%5����qK@���@8���̼K@���`<���̼K@���`B���K@���`_G��� CK@���/L��� CK@���Q���K@���V���K@���w\��� CK@���Ga����)K@���g��� K@���Bm����)K@���r���K@���v���K@���/{���LK@����~���½K@���@���`BK@��� Є����̾K@������oK@������ K@��� ��� K@���ྎ����K@������K@���z���@#K@���X���K@���@��� aK@���@W���K@�������VK@���`����K@����F���K@��� ���K@���@U���`2K@���@���`2K@���@P���K@���`���K@���`K���K@�������K@������K@������K@���`���K@������@gK@������VK@���S���<K@������<K@����o���VK@��� ���K@��� j ���K@������K@����m���zK@�������K@�������.K@���`#���K@����&���K@��� 8'����)K@����$(�����������˘*���`@���@u$���#@���s������� ������)���@@���`f&)���`@���p})���@���)���:L@���`C)���t@���1)���<@���@p(��� `K@��� )���@@���)���@@��� D)���z"@����7)����"@���|)���@"@����h)���@_"@���*)���@S#@���` )���k#@���)���t#@���`x(���#@���C(���#@���b'���#@���='���#@���m&���#@���n%���Q#@���?%���"@��� %%���"@����7P%��� "@���1t%���@\"@���`w%���@("@���z$%���/"@���0%���d!@���%���!@���7$���J^!@���$�%���?!@���-%����$!@���L%��� @��� g%���/ @���M%���� @���@P%���@ܞ @���$����µ @���@$����p @���@u$����7 @��� –$����N @���@-$���e @��� $����J @���$���@E @���4%��� @���l3%���@@���^%����O@���`%���b @���2&���`@���&��� @���`/&���@x@���&����_@���U&���`@���`'���`e@���h'���`%@���*(���q@���(��� @���@(����@���`O(����@���((����@���`O(����@���(���@@���_(����d@����/(����E@���@^(���t9@���`)����ш@���)���@���`(���z@��� 1)���@���x6)���)@���Q)����n?@���)���!@���)���@���)���@���@)��� @��� )���@ 4 @����/)���` @���2)����# @���`` *���Py @���Q*���� V @���S*���K} @���s*���7 @���@*����n @��� he*���@ @���E#*���@& @���@*���� @���42*���Q @���l@*���� @���`*���!@���@)���*!@���&)���j"!@���)���.!@���,*����/!@���*���K!@���S*���@O!@���24*����(!@��� bJ*����e!@���@T*���� !@���`O{*����T!@���Qy*���!@���@e*����v!@���@-X*����!@���@j#*���@x!@���S*���!@���O:*����!@���`+*����!@���@jc*���@ !@���*����!@���˘*����"@�����`*���,"@���1*����w"@����*���� 5"@���)���x"@���`r)���"@��� D)���z"@������`������xY@���@'?���@Y@���?��� ����������@{Y@���@'?���xY@���@ ?���@Y@��� @?���`Y@���?���.Y@���|?���tY@���J?���@Y@���@P?���pY@���!"?���@{Y@���@'?�����������@0@���@G@��� َ6@��� yH@�������������`0@���NH@���0@���ePH@���e0@����4QH@����0@���QH@��� 0@��� 8WH@���\0@��� XH@����1@���XH@����o1@���`[YH@��� �1@���@ZH@����41@���[H@���1@���@g\H@���1@�����`H@��� 1@���` aH@���� 1@���aH@����= 1@���`bH@��� (1@���qcH@���1@���dH@���`1@���zeH@���1@����fH@���1@���iH@���(1@����jH@���[ 1@����=kH@���f%1@���@kH@���@)1@���lH@���[01@����BoH@���@41@���`RoH@����:1@���oH@���@1@���`voH@����N1@���mH@��� W1@���lH@���[`1@���iH@���c1@���QiH@����fg1@���QiH@���`)k1@���@iH@���n1@���`jH@��� q1@��� kH@��� u1@���� mH@���� z1@���mH@���H~1@����MlH@���Z1@���@jH@���…1@���hH@���1@���[hH@���̌1@���hH@���Ò1@���3jH@��� 1@���@jH@���P1@���`kH@���1@���VlH@����F1@���� mH@����q1@���lH@���@1@���`mH@��� 1@���`mH@���R1@���mH@����q1@����oH@����41@���@pH@���Z1@����pH@���z1@���-qH@���1@���FsH@���@>1@���tH@���1@����tH@���1@���@vH@���@p1@���@vH@��� H1@��� vH@����1@����vH@���Z1@���RvH@���1@���vH@���z1@���`wH@���1@���GyH@���`f1@���`yH@��� 1@���@W{H@����1@��� |H@���=1@���~H@��� 1@���)H@���1@��� H@��� 1@��� H@���p1@����H@���z2@���`)H@���2@���FH@���2@��� H@���F2@����]H@����2@��� H@���42@���@H@���`[!2@���(H@���@%2@����̎H@��� &2@���`H@���&2@���࣐H@���%2@���H@���`2%2@���`H@���(2@���(H@���@*2@���#H@���`,2@��� H@��� \/2@����MH@���`'02@���H@���`'02@����]H@��� \/2@���@H@��� ,2@����H@����F52@���`H@����z62@���H@���@>82@���H@��� @2@���஥H@��� H2@���H@���N2@���@H@���`[Q2@��� \H@��� SU2@���H@����Y2@���`[H@���]2@���@H@���` a2@���@GH@��� c2@���H@���`h2@���8H@���k2@���@H@���k2@���H@���j2@��� lH@��� h2@���@ѱH@���`g2@��� uH@���g2@���ͲH@��� j2@���`H@����m2@���H@���o2@��� H@���q2@���@GH@���x2@��� H@���y2@���H@��� {2@��� (H@��� 2@���@H@���@g2@���۸H@���` 2@���`H@���@͋2@���`H@���`]2@���@WH@���`]2@���`H@���(2@���RH@���`2@��� 8H@����Ô2@���෿H@���@2@��� H@����2@����H@���2@���`�H@���`[2@����BH@���2@��� lH@���`է2@���H@���2@���`vH@���z2@���H@���2@���@H@���2@���@ֽH@���Z2@���@H@���2@���H@����q2@���H@���|2@���`kH@���@>2@���H@���s2@���FH@���@2@����H@���2@���H@���`2@���`H@���@#3@���{H@���j23@����H@���F3@���H@��� V3@���`H@���c3@���@H@���y3@��� yH@���@ԕ3@���H@���3@���@H@���3@��� rH@���@3@���`ijH@���`3@���@H@���3@���DH@���``3@���"H@���3@���`H@���`�4@���\H@��� 4@���H@���t4@��� 0H@���@.4@���H@���@p4@����_H@���`54@���ZH@���4@���@pH@��� ,4@���H@���5@���H@��� 5@���߳H@���`6 5@���@H@���25@����H@���dG5@���sH@���@W5@���KH@���ޜ5@���`H@����5@��� H@���6@���H@����y6@����H@��� َ6@���`*H@���@(6@��� H@���w6@���|H@���@S6@����WH@���?(6@���IH@���`&6@���`4H@���`6@��� H0H@���5@����.H@���@5@���,H@���Ǡ5@���9H@���95@����?H@���`Yq5@��� IH@����$ 5@��� ?H@���@ 4@���IH@���4@���DH@���@^]4@��� %'H@���J4@���` H@��� x&4@���P!H@���4@��� H@���`)3@��� H@���3@���H@���3@���`)H@����y3@���@i H@���Q�3@���H@����2@���H@���2@��� 7G@��� 12@��� aG@��� V2@���ZG@���r2@���G@�����2@���`G@���`fV2@���@G@���1@���`G@���s1@���@G@���l@1@���2H@��� .1@���;�H@���@1@��� = H@����o1@���sH@���0@���KH@��� 0@���#H@���@0@����./H@����*0@���5H@���y0@���\>H@���`0@���NH@����������� *@����zF@���0@���`oG@���x����������0@���TG@���/@���\^G@���/@���jG@���P0@���`lG@���H0@���`oG@���Y0@���kG@��� ~Q0@���cG@���9m0@���XG@���Cd0@���tQG@���0@���<G@���`Ó0@���@<G@���@e0@���8EG@���L0@����DG@���[@0@���@?G@���D0@��� 4G@���`M0@���a1G@����=K0@���`/G@���ZC0@���1G@���G10@���=1G@���� %0@��� 3G@��� 0@����0G@����0@���a*G@���@g0@��� (&G@���൤/@����!G@���`/@���@3G@���`xZ/@���G@���M/@���G@��� 3/@���=G@���@B/@��� G@����o/@��� G@���`ff/@���`G@���{r/@���@F@���`a/@����F@���`[/@���RF@����Fe/@���F@����;P/@���aF@���@8/@���F@����/@���F@���`.@���F@���.@���F@���.@��� lF@���.@���uF@���s.@���F@��� .@���F@���.@��� lF@����.@���@F@����.@���GF@���`.@���qF@���w.@���`F@���@ı.@���`fF@��� .@��� F@��� :.@����F@���.@���@F@���.@���F@���@.@���QF@���.@���F@���.@���`kF@���].@����F@���`r.@���@.F@���N`.@���@>F@���RV.@����zF@���]+.@���8F@��� .@���F@��� -@���F@���|-@���F@���-@���`F@���*-@���-F@���g-@���2F@���`_-@���F@���^-@���`F@���):-@��� \F@���3-@���@pF@���G!-@���F@���`-@���F@���`-@���F@���,@���@F@��� ,@���8F@���%,@���@F@���z,@���F@���FC,@��� F@���+@���F@���+@���F@����+@���pF@���0+@���@F@���@U+@���F@���`+@���`2F@��� a+@��� F@���;+@���qF@���`#+@���F@���+@��� F@���]o+@��� F@���+@���2F@��� +@���@F@���`դ+@���� F@���32+@���F@���'+@��� UF@���I?+@���� F@���E+@��� F@���.+@��� %F@���+@���`F@��� y*@���G@���@J+@��� =G@���1T+@���mG@���+@���G@��� *@��� yG@��� *@���� &G@����T*@���I/G@���jb+@��� 9G@���p+@���DCG@���``+,@��� >G@��� Q,@���l8G@��� N,@���"9G@����&-@���@1G@���50-@���`7G@����#-@��� AG@���-@���@NG@����5.@��� TG@���l�/@���OG@���`L/@���ZG@���0@���TG@�����������@Qc@����'����_Ld@���@ ���������� ���!���>���L���]���h���t���������������������@Wc@���H ���@c@���lA ���`c@��� ���<c@���>���}c@���}���@c@��� h���tc@��� ե����c@����p ���@Wc@���H ���3,d@���EC#���<(d@����@#���@<%d@���n"��� d@���P"��� d@���j!���`d@����7!���`�d@���@ !���d@���$ ����vd@���@ ���@d@���� ���`d@���@r ��� d@����ݞ ����d@���� ���d@���!���d@���@Z1!���X d@��� N!���d@���!���@d@����7!���B!d@����!��� %d@����"���`(d@���S"���*d@����"��� 6,d@���0#���3,d@���EC#���vc@������mc@���`0��� ec@���,���@fc@������@`gc@����s���fc@����<���_c@���v��� [c@���@6���Xc@���`���Vc@���V���Xc@���;���JVc@��� ���Wc@��� *���"]c@���/����ac@���51���@ic@���`���lc@���n���mc@���{���rc@������ sc@���G��� wc@���H���@}c@��� ���`~c@����p���F}c@���*���}c@���5���@}c@����`����$|c@���@T6���<zc@���o���vc@������ٖc@������c@�������ྔc@���@���@ic@���}���c@������� Qc@������c@���;��� ?c@����M��� c@�������c@������ əc@��� ��� |c@���G!���'c@��� kb���ٖc@������tKd@��� %����h<d@���=%���2d@���`+%���`0d@���@ %��� 1d@��� $��� /d@����/$���`o0d@���$���@.)d@���Ϋ$���T)d@����n$��� *d@���ci$��� .d@���[p$���;d@���@$���@WCd@���@$���BId@���`%����;Hd@���&%����_Ld@��� h%���tKd@��� %���c@���@ϊ!���଼c@���h!��� c@���`R8!���˿c@���!����Vc@���`R!���@c@���; !���`c@����"!��� c@����Q9!��� Sc@����Q!���qc@���2t!���c@���@ϊ!��� 6Tc@��� ���Qc@��� u���Rc@���w���@Qc@��� ���Sc@���#��� Sc@���@���Uc@���v����;Vc@���<k���Uc@����i���BWc@������@`Uc@���`��� 6Tc@��� ���`d@����#���Sd@���l#����vc@���#���`c@����y#���@c@���`-#���]c@���"���@7c@����"����c@����G"���c@���@"���c@���T"���c@�����"���k d@���"����vd@���1#���Td@���@l#���@d@���_#���d@����/#���`d@����#����2c@����*!���c@���@(!���ྲc@��� ����vc@����& ���Ƴc@���U ����c@���f ���@@c@���@ ���c@���� ���`c@���� ���c@���@ ���@rc@���@Bf ���c@���@e ���` c@��� ���Hc@��� k���@wc@���* ��� 6c@���@y ���c@���| ���`c@��� ����2c@����*!���g1d@���#���/d@���_#���O.d@����.x#���,d@���V#���+d@���@ų"��� 1d@����C#����M2d@����`#���g1d@���#���d@����'����d d@���`ƒ'���@ d@���@o'����d@���D'��� Qd@���`I'���c@���`'���`c@���@'����v�d@���`&���*d@���^'���`d@���2'���@@d@����ݞ'���d@����'���3c@���M���@c@���h��� ec@��� d���c@��� ���c@���m���c@����|���`oc@���_���� c@���@���c@����j����c@�������jc@���@W���@ic@��� '���c@���@���c@���;L����Dc@���4���c@���f���3c@���M���`c@���`R!��� |c@���6 ���`oc@���eG ���c@���@A��� c@���:���`c@�������sc@��� bj���c@���@(=���`c@��� $���@c@���]���c@���`D����c@���5q���c@���`J_��� c@����P���@ic@���1��� c@���c���c@������c@���6 ���`2c@���@ ���c@��� ��� 6c@����? ���c@���@!���`c@���`R!�����������`?~D@���.����MDK@���l)@���������������� ,J@���`ݝ(@���J@��� (@���`J@��� )@���@J@���I)@���ֳJ@���P)@����^J@���l)@����J@���bi)@���)J@���;)@���J@���6)@����MJ@���ZP)@���`K@���@\)@��� DK@���M)@����MDK@���!)@���@.?K@���`/)@���` K@���|(@��� ,J@���`ݝ(@���`xE@����&@���ҟE@���`&@���E@���@^&@���̤E@���&@���E@���`)&@���`E@��� &@��� E@��� N&@���@ۿE@���]n&@���E@����%@����#F@��� B$@��� >1F@���$@���zF@��� s$@����F@���@%@���JF@��� 1%@��� G@����}%@���z,G@���`d%@���`Y9G@���@`%@���SG@��� %%@���`G@���@ &@���G@����)\&@����G@���]&@���`G@��� 2&@���H@���J&@���z,H@����&@���`SH@����&@����FvH@���}&@���`H@���&@���H@���`&@���cI@��� '@���#I@����-'@���@?I@�����'@���II@���@X'@���bI@���`)'@���`I@���Щ'@���`I@���࣐'@���ƉI@��� &@���*I@���^&@���`˕I@���H&@���I@���%@���`_I@���*%@��� >I@����$@���{I@���@{$@���I@��� B$@���SI@���%@���bI@���`#�%@��� I@��� +$@���ٴI@���$@���@ӮI@���$@����wI@���@P$@���)I@���$@���*zI@����w$@���@XrI@���@J$@���isI@���@`$@���iI@���@.W#@����kI@���"@���bI@���H"@���YI@����^"@���sRI@����Ec"@���aRI@����*"@���<I@���!@����5)I@���<!@���)I@����!@���` %I@���r @��� I@���@Y @���|H@��� @���7H@���`@���H@���< @����<H@���H@@���H@���@*@���BH@���@���tH@���@h@���H@����@���2sH@���I@���3RH@���@���+H@����g@��� H@���0@����G@���@X2@���@ӾG@���J~@���@ӶG@���j@���G@���. @���@WcG@����Y @��� 7G@����@���9 G@���@���@hF@���@���RF@����Ϋ�@���`F@���?���MF@���d?����F@���?���`E@���@?���E@���?���DE@���F?���IrE@���:VA?����_E@����b¿���9E@���`ݿ���`NE@���p=��� E@������UD@���`h���`D@���@(}���D@����ų���tD@���ww���`cD@���.���D@���y���̓D@���#��� ~D@�����������`?~D@����%@��� D@��� W @��� D@���x@��� D@���B@���D@��� @���@XD@���RW@��� E@���{@���E@���@���AE@���@7@���sjE@���\.@���uE@���l@���U|E@����@���E@���@��� E@��� z@���E@���*@���yF@���`(@���`5G@���@���G@���� @���G@���� @���F@���� !@���`YF@���@"@��� HE@���@y"@���`E@���@"@��� %E@���*"@���ਫE@���R7#@���E@���cH#@���ਛE@���D#@��� E@���@/#@��� hE@���ഠ$@���dE@���=$@���`)[E@���Z%@��� 0UE@���%>%@���`xE@����&@����� "������?x0@���QhA���Pr@@��� "6���a������:������^=@���@06����is=@���)6���@z=@��� "6���">@���L6���`);>@���J6���K>@��� W6���>@���K6���'?@����YR6���1L?@��� j6����ɏ?@���/7���@?@����z7���`�?@���@7��� ?@���`<7���Z?@���p7���?@���+8���@@���u8��� a@@���9���?@���9���@@���x9���``?@���m9���?@���@K9���?@����9���k?@���t9���R?@����Z9���@ ?@���9���Z?@���`e:���@^>@����Tv:���>@����׳:��� >@���:���A>@���:��� >@����;���b)?@��� 3;���@z?@���$P;���@?@���@Q;���f?@��� ;���`�@@���:��� .@@���/:���`*@@���@;:���Pr@@���@:���i@@���$;���@XR@@����;���`E@@���%/<����:@@���$P<���J6@@���p<���/@@���]<���` @@����`<���?@���N<���?@���<���(@@���`<����@@����Z<��� %?@���<���`?@���<���@z?@����<���?@����6!=���>?@��� }=���� ?@���@=���8?@���@p=���2?@��� 9=����?@���S=���`?@���@=���q>@���>��� O>@���`>���`N>@���`l>���@=@���`Q?���` =@���q?���=@��� ?��� g=@���`I?���@e=@��� a?��� =@��� @����w<@���`+@���@<@���~I@��� %<@��� h@����w<@���~q@���;@���@����ww;@���@ե@���:@���@���`r:@��� !@���@5:@���@����9@��� !@���@Q9@���`@���9@���@���9@���@��� 9@���@gA���`9@����A���<9@���@���@9@���3@���8@���`[�A���A8@���`A���B8@���XA���8@���A���7@���A���`7@���@@���m_7@���A����]7@���@ A���g7@����BA���7@��� A���� 7@���gA���@ 7@��� A���6@���&A���`6@���`lA���@6@����@��� 6@��� @��� 6@���@A���@ڐ6@���`w@����x6@��� JA���K6@���@A���#6@��� A���6@���`A���`/&6@���A���5@���:A���@z5@���`+A���`5@���2A���@5@����-A���@I5@���w7A���5@����.A���`4@���e/A���@4@��� 4A���@^4@���":A���4@���;A���@4@���m8A���@u4@���`=A���2c4@���`GA���`_,4@���@ WA���4@���Q`A���@^ 4@���egA���@ 3@���QhA���3@���Q`A���3@���>aA����}R3@���KA��� [3@��� @A���@-H3@����r4A���@03@����B6A��� U3@����0.A���3@���`+A���!3@���&A��� U3@���V,A���� 3@���,A���2@���`Z1A��� 2@���`-A���c2@��� \A���2@���A����2@���`A���`62@���h A���2@���` A���2@���`l A���|2@���` A���p2@��� A����x2@��� A���@}2@���@,A���IO2@����A���m_2@���`@��� {2@���@���|2@����@���rK2@��� @���%2@���`@���2@���@@���1@���>@����S1@���@���i2@���@@����2@��� +@��� 2@���@���@ 2@��� @���@ 2@���Ä@���71@���@R@���`01@���`@����1@���&@���1@���@���c1@���@h@���x1@���`e@��� 1@���`]@���b1@���Y@��� 2@���c@���!2@���c@���J2@���@O@���gU2@����>@����wW2@���@@���62@���+?��� y2@��� 8?���s1@���@?���1@����>��� P1@���g>���a*1@���V>���@0@���׃=���@40@���@:M=���0@���@=���0@���@ =���0@���<���0@��� <��� ~0@���Q<���?x0@����Z<���@{0@��� <���0@���@u<��� O0@��� <����0@���L]<���d0@���!S<���@ 0@���`kB<���0@���B<����0@���7<���`0@����T6<��� 0@����*+<���@0@���L-<���0@���#<���0@��� [<���@Q1@���P <���11@���`<��� %/1@����3<���81@����><���B1@��� <<���@PY1@���`<<���`/f1@��� Y<���@Wc1@����Ml<���jR1@���`w<���@(\1@���2<����h1@���`e<���c1@���~<���1@���<��� ҧ1@���<���f1@���m<���`�/2@����<���`֣2@���<���`02@��� 9<���j3@����<����#!3@����<���K3@���<���9=3@����<���`/F3@��� a<���dw3@��� <���Ƒ3@���<���K3@���%m<���@3@���x;����4@���@:���`\�4@���@}8��� ,4@��� i8���`c4@���u 9���84@���Ga9���^4@���u9���ơ4@����ք9���4@��� 29���4@���`9���4@���-9���^4@���@4":��� ~4@���b:���`4@���r:���4@���`:���@=4@��� :���4@���`s:���$5@��� :���=Y5@����:���@ 5@���t:���k5@���a:����S5@���U:���5@���#:���5@���:����5@���:���46@����_:���-6@����m:���Av6@���@ 7:��� x6@����9��� 6@���@9���6@����9����6@���9��� 6@����9����$6@��� [9���@'6@���Fb9���@7@��� L9���Tu7@���@AG9���7@���yU9���@7@����Tv9���7@���9��� 8@���\9����8@����9��� x&8@���%9���D8@����Y9���@d8@���E9���3r8@���M9����#8@���W9����8@���9���t 9@��� 9���@&9@��� 9���b9@���`9���K9@���9��� 9@����/9���9@���8���@(\:@���o8��� #g:@���d8���@v:@���8���:@���@o8���c:@����C8���@:@���@7����:@���@ 7���@Q;@���7���4;@��� ,7��� O;@���7���Te;@��� d7���B;@���@4b7����;@���`J7����;@���@d87���;@���@:7���>;@���O*7����G;@���7����;@����7��� H;@���6���A<@���6���@^ <@���6���� <@����S6���`/&<@��� 6��� %/<@���J6���p<@���ؒ6���j<@����76����<@���Uu6����@<@���b6���<@����7P6���e=@���@c96����^=@���@06��� N<@���<���<@���Ǒ<��� y%<@���<���`;@���@<���;@���t<����G;@���<���;;@���<���t;@��� J=����Y;@��� a{=���;@���`H=��� S;@����#>���`0e;@���@ >���a;@����P>���u;@����O>���j;@���Eg>���@ڰ;@���q>���@;@��� >���<@����>���`<@���t>��� (<@���>��� %<@���Dt>���A<@���S>���`7<@���@M>���`=<@���WC>���r<@���L>���<@��� >���=)=@���=���@Q(=@����=����=@���� =���*=@����)=����O=@����|=���K=@���G=���r[=@���Ws=���`k=@���n=���t=@���tZ=���BU=@��� =���=@���w<���<@��� <��� N<@���<����� �������1���;@����X@��� E@ ������������(���1���=���H���S���^���k������,���`` <@���,���`<@���(,���@<@���K,���$<@���``k,���a:<@��� g,���rK<@���,,���<@���,���@<@���+���κ<@���`O+���m<@��� +���ē<@���`/+��� z<@����7+���f<@��� +���@9<@���G,��� /<@���,���`` <@���F@���C@��� 7@���� C@���-X@��� fC@���U@���߻C@��� @���C@��� |@���@oC@����[0@���@C@����L@���[C@���@@���`/C@���bI@��� C@���ӆ@���JC@��� @���@pC@��� M@��� `C@���B@���C@���@h @��� C@��� M< @���C@����@���`GC@���- @���`C@���r @���� C@���I @���C@���y @��� C@���U @���zC@���` @���C@���F@���C@���@./���;@���@/���e;@���`/���H;@���@j/���2<@���h/���s*<@���.���l <@���M.����T&<@���@p.���;@���@./���;@���`0��� ;@��� 0����G!<@���w0����Y<@���0����d<@���H`0���t<@���`<0���<@��� 80���`<@���@]0���1<@���`Y0���[<@���uY0���`L<@��� [0��� <@���`0��� ;@���@ ?���`kC@���`o?���`pC@��� \?��� oC@���G?���{C@����?���`C@���`.?���@C@����P?��� %C@���ߛ?����MC@����)\?���ZC@���?���@qC@���@ ?���`kC@���΋+��� x<@���O+���<@��� V+���<@����T+���@ =@���`0+���@W#=@���O+����=@���`*���==@���Q*���B5=@��� ?*���$=@���*���7<@���΋+��� x<@���q1���`z<@���v1����w<@����1���@.<@����1���t<@��� 1���<@���w1���<@���1���`_<@���@:1���<@����1����w<@���1���`{<@���q1���`z<@���`].@��� C@���`.w@��� %C@���t@���@C@��� @��� C@���t@����wC@���aj@���`H�D@���@���D@��� @����$D@���@,@���`D@���`>@���@C@��� f&@��� ,C@����X@���C@���`].@��� C@���?���`oLE@���g$?��� >IE@���@_,?���9E@��� ?��� 7E@���`?���<E@���?���>E@���??��� 7E@���l?��� /E@����@���@.E@���@���7E@���@6@���-E@���o^@��� N+E@���9m@���@i3E@���N@��� <E@���4 @����w7E@����kj @���8E@����� @���,E@��� @���@)E@���` @��� E@���D @���@!E@���`@��� ,E@���`4 @��� %E@���` @��� E@���`o @��� D@���8@����D@���S@���8D@���@n@���`YD@���@@���ԥD@����?��� D@���i?��� gD@���l?���D@���`?��� &D@���?���hD@���@E#?���`NcD@����ף?���9]D@���`@?���VD@���xV?���@OD@���|?���kID@��� ?���@D@���`?���'D@���?��� D@���?���D@���.���@C@��� ƿ���8C@���տ���cC@���ѿ���`C@��� ���yC@���@V4?���\nC@����-?���@gC@���8?���I_C@���`y5?��� PC@��� k⩿���:LC@��� ���`EC@���ٿ����M4C@���'}޿���D+C@��� \���%C@����K���`C@���@S���C@������C@����k���@B@���^M���SB@���>���'B@���@33���B@������ B@���@���`B@���  ���rB@��������B@���@""���bB@����N��� B@���&���`NB@����N����eB@���`J$���EB@����D����B@���[���yB@����s��� ,qB@���@33����jB@���`Ce���1\B@���d���*jB@���`q���`HhB@���W���@.WB@������XB@���`]n���_B@���M< ����[B@���` ����]B@��� ?���`^B@������`q\B@���y���`6@B@������'5B@���>���B@��� `���2B@���ӆ���@B@��� *���JB@���@[��� B@���l���A@������� B@���N��� &B@���^ ����=B@��� ���;B@������ AB@���H����AB@���_���@IB@������@-PB@��� ���@\B@���l���dB@���`[���qB@���@n����eB@���@����mB@���K���`B@���o���`0B@���������јB@��� ���`B@���@���� B@������`B@��� c����B@���3����1B@������bB@���0���B@��� ��� fB@��� ���`�C@������C@������`C@������C@���Y���SC@������"C@���p:����z6C@���Q���=9C@���V4���2CC@��� D+���` IC@������@ZC@������'eC@���@���rC@���-���@@C@���)���C@���v��� UC@����ޝ���C@��� \���`/C@���`���DC@������ `C@���@#A��� C@���,���߻C@������ C@����""���C@������ C@������ fC@���`t���@D@������`D@����B��� D@������D@���`f&��� +D@���`d���`8D@����*��� OBD@���N[���@ID@���0���1TD@����ZQ���``D@���`2���`mD@��� ����|D@������D@���<���`0D@�������D@���`d���@@D@��� M���`GD@����BF��� D@����ZQ���@'D@���@���`D@���`���D@���_l���D@������(D@����d(���D@���H@���dD@�������D@����BF��� D@���.��� D@���S���`D@��� !���uD@���<���D@���Y���=D@���`��� D@���^���D@���y���`D@��� ���D@��� ���D@���r���D@����]���`D@������`D@������'D@���`���`/D@�������D@������D@���H ���@D@���@p ���D@���a* ���;E@���. ����E@���%_ ��� HE@���g ���{E@���@>!���`E@���@!���D@���o!���D@����!��� E@���!���E@���@9!���c(E@���$@!���B-E@���&^!���#E@���@ !���E@����1!����e'E@���!���#E@����c!���+E@���ш!���+E@���@P!���6E@���@!���2E@����k!���`;E@���o!���@E@���@L!���:E@���p!���`@E@���ҧ!��� IE@����0v!���TE@���f!���9UE@���@T!���`ME@����!���@QE@���"���BE@����"���HE@���@+"���IE@���!��� bE@���@T!���`hE@���!���`jE@���@d!���`NcE@����!#"���``E@����E"���BeE@��� 4"���biE@����H"���JnE@���^"���@yE@���@\"���`0uE@���@}"��� vE@����0"��� vE@���_"���)E@���J"���൘E@���@ "���DE@����!��� gE@���!���@WE@����ͬ!���1E@���r!���BE@���@2!���E@��� ��� >E@��� ���rE@����Ϋ ����ɯE@���Ѩ ���`E@���n ��� OE@����n ����E@���� ����eE@����s{ ���E@���@ ���|E@���@ ���E@���ف ���mE@���- ��� E@���@v���E@����Ag���{E@���@���`E@���j���E@��� )���E@���@K��� E@���@B���E@���l���`NE@���?H���`E@������'E@������!E@���'���[E@���].����E@����B���`E@���f���@E@������ >E@������ OE@���@dh���E@�������8E@��������E@��� ���@WE@���'���UE@���`��� gE@��� ���@pE@���&���jE@���4���E@���`���tE@���`���@ôE@���; ���`E@��� ���@ӾE@���`q ���rE@����8 ���`E@��� p ���E@��� ��� E@���`���E@��� ���ǰE@������ E@���@���@E@���L]���E@���z���(E@���@���dE@���J~���`E@��� ����ѠE@�������E@���`r���+E@������਋E@��� ���`/E@������ E@��� ���`E@������ ,E@���V4���yE@�������{E@������nE@������9eE@������ >iE@��� +ٿ���eE@���`mӿ����lE@���` ȿ���dE@���.���``E@���p���XE@���?���`[E@���?���@VE@���`ff?���@XE@���?��� 6XE@���`?���_E@���`o^?���@ikE@����N?���kE@���@E#?��� HXE@���?���`oLE@������������S@���A@���xT@���#@���Z����������S@���e@���ZS@���v@����S@���@e @���`S@��� @���@S@���@ @����S@���`@���HS@��� 5@����#S@��� @���)S@���� @���9S@���I @����VS@���H!@���S@����$!@���7T@��� "@���@T@���!"@���@T@���"@����nT@����<"@���z T@���"@���@N T@����$�#@���T@���$#@����T@���-#@���T@���@"@���@T@���"@���T@����"@���T@���@"@���� T@���@_L#@���� T@���;#@���� T@���*#@��� S@���I_#@����S@���#@����T@���@#@��� T@���;#@���cT@���'#@���T@���4Q#@����T@���@#@��� > T@���#@���T@���@N#@���� T@���@y#@���R3T@���ē"@��� /T@����"@���1T@����"@���@3T@���!"@���@9T@���9"@����,=T@���l�"@���7T@���@6"@���@;T@����M!@���>T@���|!@����UET@���Q!@���PT@���`o!@����OT@����!@����UMT@����D$!@���MT@���@!@����wKT@���9 !@���ZHT@��� @���NT@��� @���!RT@���9 @���RT@����!@���kUT@���@?!@���ZT@��� @���@_\T@���@yU @���`[T@���@E @����5YT@���r[ @���r[T@���@- @����=^T@����3 @���/fT@���W@���hT@���M@���@mT@����@���kT@���`@����gT@���`8@���eT@���@����jT@����@���mT@���~@���@gqT@��� @���`tT@���@h@���vT@����@���xT@���@�@���qT@��� v@���@OjT@��� @���H`T@���X@���GT@���2s@���(T@���A@���YT@���@��� T@���`gE@����S@���@@���8S@���@@��� S@��� @���S@���@���@OS@��� ~@���`S@����<@���@S@���@@���S@���e@�����������@nO���y1@���`DO���@*i1@����������=������@JO���y1@����KO���1@����qLO���1@���8MO���1@��� (NO���e1@��� NO���=1@���`�OO���=1@���`ROO���]1@���`OO���1@����OO��� 1@��� PO���1@����$PO���`o 1@���@PO��� !1@���PO���#1@���`OO��� S%1@��� OO���&1@���`OO���@>(1@����fOO����)1@���OO���`)+1@���NO���,1@���NO���`-1@���`BNO���'/1@���NO���01@���NO���{21@���MO���31@���LO���g31@����LO���{21@���KO���321@���@3KO���`21@���@JO���31@���IO��� 31@����IO���{21@����vHO���@11@����GO���@11@��� GO���01@���8FO���01@���EO���/1@���pEO���.1@���LEO���`I-1@���`2EO���+1@���EO���q*1@���� EO���` )1@���DO��� '1@���DO���`f&1@���DO���%1@����qDO���#1@���`DO���3"1@���@gDO��� 1@���DO���1@����DO����]1@���DO���@1@���LEO���1@���EO����1@���@FO����1@��� FO���1@���`vGO���@>1@����$HO���1@���HO��� 1@���@IO���`1@���@GJO��� 1@���@JO���y1@����SO���z51@���@gTO��� 61@���TO���171@����TO����81@���TO��� :1@���TO���;1@����TO���@<=1@���� UO���\>1@���`VUO���?1@���UO���@1@���UO���A1@��� LVO���B1@���VO����C1@���@.WO���@D1@���@WO��� E1@����$XO���`fF1@���XO���>G1@���=YO���G1@���YO����H1@���`ZO���@*I1@��� a[O���=I1@��� \O��� I1@���\O���`H1@���`]O���H1@����z^O��� H1@��� \_O��� I1@���Q`O��� eI1@����4aO���I1@���bO���� J1@���bO���qJ1@���`cO���J1@���<dO��� K1@���dO���@L1@���eO���L1@��� fO��� M1@���`ffO���N1@����fO���@O1@���gO��� P1@��� gO��� |Q1@���hO���Q1@���kiO���� R1@��� QjO����hR1@��� jO��� S1@���jkO���S1@����kO���U1@���lO���@V1@��� ClO����fW1@����qlO���X1@��� lO���`Y1@����lO����=[1@���LmO���@\1@���`mO��� \1@��� LnO���`]1@���@nO���^1@���.nO���`1@���mO���`1@���mO���b1@���(mO���c1@��� lO���@d1@���2lO���fe1@����kO���@f1@���@WkO���f1@����jO���`ff1@���jO���f1@����iO���`Rg1@���iO���@>h1@���hO���@*i1@��� hO���h1@���@gO���`g1@���$gO���f1@���fO����2f1@���`eO���@e1@���BeO���� e1@����qdO���@d1@����cO���c1@���cO���gc1@���bO���b1@���aO���� b1@���=aO����oa1@���`O���`1@����$`O���_1@���o_O��� \_1@��� ^O����^1@��� ^O���;^1@���p]O���@]1@���\O���\1@���\O���[1@��� C\O���Z1@���@\O���=Y1@���[O���@>X1@���ZO��� W1@���`kZO���V1@���@YO��� ?V1@���kYO����FU1@���=YO���`S1@���-YO���`R1@���XO���GQ1@���XO�����P1@���XO���N1@���[XO���@M1@���XO���`]L1@���@WO����=K1@����fWO���=J1@���`�WO���=I1@���VO���eH1@��� VO���G1@���pUO���F1@���TO���@F1@���VTO��� SE1@����SO���zD1@���@{SO���@{C1@��� SO����hB1@���`RO���`A1@���`RO��� @1@���@QO���?1@���PO���4?1@���-PO����>1@��� OO��� =1@����OO���<1@���oOO����=;1@���OO���@r91@��� PO���`81@���PO��� 81@���aQO���`71@���`QO���`R71@���{RO���61@����SO��� 61@����SO���z51@������P������4N���o+@���4rN���5,@�������������$xN���o+@���N���+@���4N��� %+@��� yN���5,@���4rN����L,@����sN��� +@���$xN���o+@�����j������ʺN����s')@����fN���*@ ������������'���;���G���P���a���m������������pN���`)@���@XN���@6)@���N��� )@���`N���})@���=N���)@���`N����)@���`ɣN���B)@���ȣN���)@���N���`)@���;N���)@���_N���`~)@���@;N��� �*@����:N���*@���/N���@ *@���؟N��� t*@���{N���*@���mN���  *@��� N��� *@����VN�����*@���ښN����a*@���`_N���*@����N���*@���#N���@*@���`N��� *@���gN���`*@���N���*@���@N���`*@���N���)@���pN���`)@����N���)@��� ɏN���@)@���@N����)@���cN���9)@����N����)@��� QN���@)@���HN���))@���@N���)@���N��� )@����N���)@���gN��� s)@���N���x)@���`N���))@���N���)@����sN���)@���`N���>)@���`_N���)@���@N���H)@���N���)@���`-N���R)@���TN���`)@���BN���@)@���`8N���)@���@ږN���)@���7N��� o)@���їN���)@���@N���4)@���@N���l)@���@N���`)@���gN��� s)@���HN���)@���N���)@���MN���`)@����4N���)@���0N��� )@���`N���@*)@���`2N���)@����N���@)@���@NN���`)@����N���z)@���fN��� b)@���HN���)@���xN����s')@��� N����()@���|N���))@���lN��� c+)@���N���@,)@���`"N��� -)@����cN���@+)@��� \N���X))@���xN����s')@���N���{9)@���N���y9)@���N���7)@��� N���4)@���@N���`3)@���۴N���@/)@���5N���1-)@���`ԷN���.+)@���N���� ))@���N���R+)@���ʺN���k.)@����_N���^/)@���@ŹN��� 0)@���N���`3)@���UN���S5)@���N����7)@���N���{9)@���$N���`H)@���N��� E)@���}N���@C)@���`N��� A)@���@ȱN���8@)@����ݲN����S>)@���}N���f?)@���`mN���B)@���N���@G)@���fN��� I)@���N���`:J)@���$N���`H)@���@N���r)@��� N���`k)@���N����g)@���`KN����(a)@���@N���_)@����N����^)@���3N��� `)@���`]N��� e)@����N��� g)@���N���g)@����N���g)@���sN���j)@���N���m)@���nN���r)@��� N���`v)@���N���w)@��� N���`�v)@���`8N���/w)@���`pN���x)@���qN���` u)@���@N���r)@��� FN���)@��� sN���)@���KN����|)@���N���`c)@����tN���)@��� N���`)@���`ՑN���)@���N���)@��� N���;)@���N���)@��� FN���)@���`N���B*@���eN���C*@���N���D*@���`[N���F*@���`N��� G*@���{N��� I*@����=N���I*@���@N���=J*@���N���K*@���� N���@M*@���N���@N*@��� LN����O*@���@.N���`O*@����N��� :R*@���N���@T*@���@N���V*@��� lN���` Y*@����N���)Z*@���@N��� J[*@��� N���p]*@���)N���N`*@���aN���b*@���`N���`d*@���`)N���@f*@����N���@>h*@���N���dj*@���N���@m*@���༣N���p*@���`N���`s*@���@{N���v*@����N���)z*@���`N���`I}*@���N���`'*@���@3N���&*@���͢N���%*@���{N���*@���3N���*@��� N���Ӌ*@���N���@*@���N���`T*@���aN���Z*@���࣠N���@3*@����ܟN���*@���HN���ɔ*@���@N���*@���N���*@���RN���*@����N����*@���`̝N���*@���N���`*@���LN���*@����N���*@��� N���d*@���`N���*@��� CN����;*@��� N����*@���༛N���s*@��� aN��� s*@��� N���@*@���@N���@P*@���@GN���ٽ*@���@N���߾*@���N���`'*@���N����o*@���N����h*@��� \N���*@���N���*@���N���%*@���N���*@���� N���` *@���<N���*@���@{N��� *@���@N���`*@���`kN���*@���N��� *@���בN����"*@���N���*@����N��� s*@���kN���@*@���-N���*@���N���@U*@���eN���*@���N����*@��� ҏN����*@���@N����*@���`N��� n*@���`vN���*@����fN���p*@���`vN���*@���@N����z*@���`N���Z*@���@N����ŏ*@���@ȏN���*@����܏N���`D*@����܏N���அ*@��� ҏN���`*@���@ȏN���o*@���N���@P|*@����$N���@ry*@���@>N���Rv*@��� lN����s*@���࣐N��� p*@���N��� cn*@���-N���k*@���aN���h*@���@N���`ff*@���N���c*@���@#N����`*@��� QN��� (^*@���N���q[*@���@N���X*@����N���U*@��� N���`R*@����=N���@UP*@����דN��� \O*@���@gN���N*@���N���K*@����N����I*@���N���@F*@���@N��� D*@��� (N����C*@���`ܖN���FC*@���`N���B*@�����������@5@��� @���`OC@��� 7@���8���������@)A@����ww@���A@���Ut@���@1A@���`p@��� 40A@���e@���`@@����@���*@@����@����@@���@ @���!@@���@��� [@@��� @���`3@@��� @���@@@���B @���`@@���R @��� @@���B @���,@@��� @���D?@��� @���8?@���` @���r?@���/@���?@��� V @���t?@��� @���s?@���: @���I?@���@[@���9-?@���@\@���g>@���n^ @���`W>@��� @����>@���`z @���@W>@���Sv @���@^>@��� @���>@��� > @����>@��� @���``>@����@���4>@���2@���#>@��� o@���>@��� @���@>@���3@���@=@���@���=@��� y5@����T=@��� b@���`/=@���@b@���=@���<@���=@����=@���=@����F@���z=@���0@���@XR=@���@����#A=@���̌@���@=@���`g@���@z4=@���@_@���=@����-@���@<@���;@����<@���9@���<@���Ʊ@��� ~<@���~@����Gq<@���&@���@^<@����!@����U<@���`g@����i3<@���c@���*<@��� @���l<@���t@���c<@���>@���;@���U4@���>;@���@m@���?;@���� @���1;@��� ,@���;@���U@����;@���@��� ;@���z@���@t;@���@���Bu;@���U@��� K;@���}@���<;@���k@���@-H;@���`2@���$;@���@x@��� V:@���@��� :@���@���:@��� @����:@���Zp@���`o:@���O@����is:@���@v@���@ :@���Ʊ@���@ :@���`j@���@'M:@����@���\N:@���:@���b:@��� N[@���e:@����@���@-:@���f@���`_ :@���J@����_9@���[@����T9@���{@����49@��� p@��� 09@����_@���@K9@���`@���@PI9@���!"@���99@���}@����&9@���|@��� 9@���@7@���@Q8@���� @���8@���@V @���8@���b @��� 8@���j @���u8@���� @����Y8@���@ @���@^-8@���ء @���#8@���l @��� s*8@��� @���D8@���*!@���@@8@���a!@����;8@���d!@���7@����m!@���7@���@O!@���7@���@!@���B7@���*!@���7@���"@����S7@����=!@���:|7@���!@���r7@��� "@��� &~7@����,Y"@���@7@���["@��� H7@���#@���ر7@���@W#@��� N7@���߻#@��� M7@����$@���j7@���@e%@���6@��� %@���@6@���@n&@���@J6@���&@���6@���`&@����$6@��� '@���`6@����T'@����$6@���*(@���`z6@���`}(@���m6@���_(@����Fb6@���7(@���w6@���@J>)@���+96@���~)@��� 6@���L)@���`5@���`G)@���5@��� sZ)@���@5@���)@��� 5@���,*@���@z6@���@N*@���:6@����*@���K6@���`l*@��� 76@���``++@���`R'6@���`D+@���@{#6@����t+@���6@����+@���;6@���@+@���z6@����3,@����p6@���`=,@����#6@��� T,@��� &6@���v,@���t6@����#,@���p6@��� ,@����#q6@���,@��� a6@���@ -@���@Xb6@���-@���j6@���V3-@���`ֳ6@���a-@���;6@���T-@���@6@���1-@���@J6@���Z0.@���6@���r;.@����6@����Tv.@����6@���.@���``6@����/@���6@����� /@���@J7@���@k/@��� a7@���^/@���@z7@���s/@���m7@��� /@����7@����f/@���@7@���d2@��� 7@���@m3@���`6�8@��� �4@���m_8@����3@���`6�9@����3@����9@���4@����9@���@U�6@���9@����5@���F:@���5@���:@��� %5@����L;@���m5@����-<@��� �6@���<@������6@��� �=@���@U�6@���@ڰ=@���@5@���b>@����6@���?@���@5@��� G?@����5@����c?@���46@���p?@��� r;6@����M|?@���d76@���` ?@��� +6@���1t?@���5@���|@@���@�6@���aj@@���`6�6@���|@@���@U�6@���@@���@5@��� A@���@~5@���A@���@X26@��� `[A@����I6@��� |A@���=6@���� A@��� U6@���A@��� 7@���A@���6@���`A@���6@���A@���P6@���`_B@���6@���@B@���i6@��� ;B@��� ~Q6@���`HB@���H6@����qB@���q 6@���@XrB@����6@���qB@���B�6@��� kB@���5@��� pB@���I5@���qB@���g5@���cB@���9m5@����^B@���@+5@���B@��� 5@���� B@����}5@���BB@���g5@���B@���5@���΢B@���9 5@���`B@���i#5@���B@����T&5@��� B@���@45@���B@���85@��� B@���q,5@����wB@��� "5@���B@���@ 5@���@B@��� 4@����B@���Qx4@���B@���Hp4@���B@���@ 4@���B@���&3@���B@���t2@��� OB@���@2@���`GB@����$2@���*B@���@2@���C@���@]2@��� C@���M2@���C@���@@2@���C@���<2@����%C@���J2@���C@���62@���z4C@���`42@���6C@����)2@���@?C@���!"2@����AC@���k2@����DC@���@W2@���DC@��� 2@���`OC@���@G2@aYIC@"1@���oIC@���1@���IGC@��� 1@���CC@���%1@��� @C@���@1@��� =C@���@D1@G6t:C@;l 1@���`:C@��� 1@#H:C@y!1@���`~9C@���1@���8C@����1@���@7C@���G1@Ύ7C@!m1@.#6C@ğ1@���5C@���1@bM4C@Py1@h!�<2C@*1@��� 2C@���w1@޼1C@8sq1@���/C@���@1@onn/C@y]1@���.C@����1@vՂg.C@Ǩ1@&C@0X1@��� T&C@���`1@���@%C@���81@���%C@��� 1@��� $C@����ߜ1@��� #C@���@;1@���i#C@���`1@���#C@���a1@3 #C@եa1@���`#C@���a1@qZC#C@3Y\1@���`"C@���`ј1@���@"C@���@ 1@<Zr"C@.1@���`"C@���:1@!C@#9D 1@kwC@wg 1@v&7C@{gj1@���C@���`1@���C@���`1@����RC@���%1@���`C@���1@���C@���`ɏ1@��� KC@���ए1@���C@���1@@YC@=zs1@����C@���1@S窵C@$1@���^C@����1@����C@���1@���VC@���q1@���iC@����1@���C@����ߌ1@���`C@���̌1@���@C@���q1@���@C@���@<1@���C@���`1@���`#C@���@v1@����cC@���.1@���C@��� 1@����C@���h1@���C@���1@GxC@+Oށ1@(jƶC@M{1@KC@Z{1@|̌&` C@Z!|1@���_ C@����|1@ Zt^ C@G|1@u'. C@ ^1@��� C@���ӆ1@���@D C@���?1@���h C@��� Љ1@��� ; C@���@<1@��� C@���1@����* C@���`1@���X C@����ߌ1@��� C@��� L1@���`C@���1@���C@����1@���%C@��� L1@���C@���̌1@���C@���`M1@y\C@XL1@���`C@����M1@noC@;TL1@���@LC@���1@���C@���1@����)C@���O1@���`C@���1@���C@���1@���`C@���@1@���C@���w1@���@uC@���ӆ1@����C@���1@���Q�C@���y1@���`B@���Մ1@����JB@���V1@���`B@���`1@���/B@���1@��� B@���X1@��� B@���1@����B@���1@���`B@����[1@����|B@���1@���B@���o~1@���B@���p}1@���OB@���q|1@���B@���`{1@���B@���az1@���`,B@���Py1@���@B@����Rx1@����RB@���ww1@'B@"4Jv1@HgB@Nr1@H>fB@M ^r1@pSB@0kq1@����SB@���q1@QB@5q1@=z{yB@e}v1@���B@��� Sw1@���hB@���x1@���B@���y1@���`B@���@z1@���B@���`<{1@���aB@���{1@���`B@��� {1@���NB@���n{1@���`B@���`<{1@���`$B@���z1@���B@���=z1@���@ B@����y1@���xB@���@y1@���B@���x1@��� CB@���w1@���B@���w1@���hB@���` v1@���B@����t1@���@B@��� |s1@dB@a&ws1@3+B@̬m1@���B@���'m1@���>B@���`Ml1@���5B@���@j1@|4B@ʻxj1@t/B@m`1@{.B@χJl`1@BmB@-_1@���B@��� \_1@,B@%_1@/mEB@l^1@���B@���^1@���B@���8^1@���@#B@���^1@��� dB@���]1@����B@���]1@����B@����:]1@���B@���]1@��� CB@���@\1@����B@���`\1@���B@����\1@���B@���@;\1@���@"B@���\1@����cB@����[1@���B@���[1@���@B@��� [1@��� B@���`<[1@����KB@���Z1@���B@���Z1@���B@���OZ1@��� B@���Z1@���iB@���`Y1@���B@���>Y1@���B@���@X1@����cB@���?X1@���`B@���W1@���-B@���W1@���B@���fV1@���@ B@���U1@���B@���U1@����B@���hT1@���@LB@���@S1@���@B@��� |S1@���B@���S1@���`B@���S1@��� YB@���`{S1@���@+B@���iS1@���B@����R1@���@#B@���Q1@���B@����P1@dBRB@oڵP1@���B@���P1@���!B@����/1@eB@F /1@����B@���@.1@{VĴB@N.1@UB@,1@���@B@���+1@���`B@���*1@���@B@��� u)1@���@B@��� d(1@��� \B@���.'1@72GB@&1@JB@���` 1@����B@���` 1@���@B@���` 1@���B@��� 1@���@B@��� 1@���@3B@���@+ 1@���aB@����t 1@���B@���� 1@���@ѰB@��� 1@���-B@���@ 1@���`wB@��� 1@���`B@���_ 1@���@B@��� 1@���`^B@��� L 1@���ìB@��� 1@���B@���o1@���`B@���1@���`B@���@1@���@٩B@���`n1@���B@���1@���@B@��� 1@���IB@���1@��� B@���%1@���@B@��� 1@���pB@���� 1@���@B@��� 1@����B@��� ; 1@���B@���r 1@���@B@���` 1@���B@���� 1@���B@���1@��� "B@��� 1@���B@���@e1@���B@���1@���HB@���`f1@���wB@����B1@���B@��� T1@���B@���1@��� B@���`1@��� 2B@���`1@���@B@��� 1@���@ؚB@���@1@���B@���Q1@���`,B@���-1@����[B@��� 1@���@B@���1@���%B@���1@����B@����B1@��� B@���1@���gB@���1@UDB@�<1@G❢B@11@���B@����21@WeB@31@\ 6B@>6M1@���B@���1@���%B@��� 1@���@B@��� 1@���@]B@���r 1@���B@���`M 1@���`^B@��� 1@���`B@���p 1@����׋B@���@ 1@MUB@yǞ 1@kkMB@p?1@��� KB@���1@���ԅB@��� 1@���gB@���1@��� B@����1@��� B@���1@���B@���@31@���WB@���1@���wB@���1@���.B@����1@���~B@���`1@K~B@TK~1@���@~B@��� 1@렶~B@}1@���~B@���1@����~B@��� 1@���.B@���`M 1@����B@���` 1@�����B@���O 1@���@mB@����c 1@HrB@/8`& 1@��� OB@����1@tB@GE#0@���B@���g0@���`~B@���V0@���~B@���0@ET~B@Cϝo0@���S~B@���k0@q?U~B@sDd0@���~B@�����0@h*߫~B@[0@O)]B@Ìe0@���`,B@���0@���@#B@���`0@��� lB@���p0@���`فB@���@0@���aB@��� 0@뒂B@o}0@���B@���0@Q'B@_0@���@B@����0@��� "B@��� 0@��� ǁB@����0@����cB@���@0@��� B@���h0@���B@���0@ dˀB@8,0@@EvB@ɿ?z\0@���uB@���0@���`UuB@���0@��� uB@���`U0@���tB@���0@'v1tB@:_0@���tB@���`0@sB@`# #ʏ0@����sB@��� 0@���`sB@����0@���isB@��� ;0@���@3sB@����ϊ0@���rB@��� u0@���`rB@���0@����rB@��� T0@���rB@��� 0@��� rB@���0@���rB@���0@����!sB@���`$0@7`sB@ "~0@��� `sB@���~0@�csB@c~0@���sB@���}0@���sB@���@|0@���VtB@��� {0@���tB@���z0@���uB@���y0@��� uB@���`vx0@���`vB@���w0@���ovB@���@v0@���vB@���@u0@���@wB@���t0@��� wB@��� s0@���$xB@���`r0@^xB@$R[r0@BlzB@ Zn0@���=zB@���n0@C zz@zB@5;n0@<+iuzB@ 1i0@��� tzB@����i0@���XzB@���@h0@���`4zB@���f0@���zB@���0e0@���yB@���`c0@���yB@���`4b0@���`~yB@���`0@����cyB@����J_0@���YyB@���]0@���PyB@���[0@���`~yB@���aZ0@���yB@���X0@���yB@��� W0@���@+zB@���xV0@���@zB@���gU0@����zB@���T0@����!{B@���S0@���`{B@���`Q0@���{B@���P0@x{B@Ø*P0@���U|B@����C0@ &yB@(?0@��� lyB@���`>0@���xB@���@>0@����RxB@���^=0@���`wB@���`<0@���7wB@���<0@���vB@��� *;0@����BvB@���O:0@���uB@���@u90@���uB@���?80@ ::uB@W 70@���9uB@��� 70@o tY2uB@fEc60@���uB@���@50@���VtB@���@20@>OwsB@hi</0@ԈrB@6(0@���`qB@����%0@��� qB@���5!0@5pB@4j߇ 0@x?aB@/@���Q`B@����/@��� ]B@���5/@���[B@����c/@���PYB@���/@���XB@���}/@���@mXB@���@Vt/@���`WB@���k/@���.WB@���b/@����VB@���OZ/@���@UB@���@~Q/@���pUB@���`H/@����TB@���$@/@���@;TB@���w7/@���SB@���./@���SB@���&/@���@}RB@���p/@���QB@���`/@���`QB@���/@���GQB@���` /@���PB@���`E/@���`$PB@���.@���`PB@��� .@yl+QB@o>` .@{pOB@.@���&NB@���.@���pMB@���`.@���`LB@���@.@���@KB@���`f.@���`EKB@���.@���`JB@��� .@��� IB@���_.@����IB@���.@��� dHB@���.@���GB@���X.@���FB@���.@���/FB@���.@;ݺ}EB@ZVx.@��� yEB@���@-x.@\S9B@rO.@��� 8B@���M.@���8B@���`fF.@���`,9B@��� =.@����c9B@���4.@���9B@���@+.@���9B@����!#.@����:B@��� t.@���O:B@���.@���@:B@���`.@���:B@������.@���:B@���.-@���`<;B@���@]-@����s;B@���`-@���;B@����-@��� ;B@��� -@���<B@���@<-@���`M<B@����k-@���@<B@���-@���<B@���-@���`=B@���@-@����:=B@����J-@���p=B@���x-@���@=B@���@-@��� =B@���Մ-@���&>B@����)|-@���@]>B@���Ws-@���>B@��� j-@���>B@���a-@��� ?B@���X-@����J?B@��� P-@���?B@���@eG-@���`?B@���=C-@���@?B@���>-@���?B@���5-@���`$@B@��� ,-@����[@B@���$-@���@B@���N-@���@B@���@}-@��� AB@��� -@���GAB@����-@���@~AB@���-,@���AB@��� \,@���AB@���,@���AB@���,@���`4BB@���,@����kBB@��� ,@���BB@���,@��� BB@���i,@���CB@���,@��� CB@��� DZ,@���CB@���,@���_DB@���$,@����DB@���.,@���`UEB@���@],@���EB@��� ,@?EB@LUu ,@����EB@���,@���"9B@����+@���S>B@��� ˭+@���2B@����"+@��� B@����q*@���B@���` *@���� B@���i)@���B@���r)@���A@���T)@���`A@���`I(@���[A@���f(@���kA@���@ W(@���{A@��� (@���@hA@���d'@���A@���@z'@���2A@���@X'@��� `{A@���&@���`}A@���q&@���ീA@���@PY&@����wwA@���`%@���`|A@���%@��� bA@���_%@���bA@���%@���@LA@��� %@��� H8A@��� %@���$A@���%@���,A@���p}$@��� +A@����L]$@���A@���$@��� A@���)#@���`GA@���!@���SA@���k!!@����@@��� @���`Y@@���@ @���@2@@���U @���@@��� @���@@��� @���*@@���@& @���@@����d @���@@����A @���@p@@���/ @���~@@��� ij@���@@����Ec@���@@���@(@���@@��� /@���2@@���`@���~@@��� @����ɿ@@���@���@@���@r@���rA@���@���`A@���`@���A@���@���sA@���@X2@���<A@���B@���`@A@���{3@���`WA@���@���`GaA@���Zp@���moA@���2@���}A@���`>@���|A@��� @���A@��� g@���KA@���@���`A@���`@���`A@���@���`A@��� 5q@���8A@���h@����A@���@��� DA@���{@���@pA@���~@��� HA@���[@��� A@����@@���`A@���2@���@XA@���@��� A@��� M@��� A@���1@���`\A@���}@��� A@���x@��� yA@����x@���A@���@(x@���@)A@����ww@�����h������, M���R?��� J���`p@���j����������4L���� @���^L���* @���L���Z @���L��� @���L����Q @����L���`@��� 1M���@0@���, M���ߛ@���@"L���&@���L���<@���WL���n@����L���1@���`CL���@���@L���� @���@L���A@���L���@��� L���`@���L��� @����LL���@6@����dL���@���`<L���@���QL����@���`lL���@���L��� @���L��� @@����ßL��� x@���@LL����<+@�����L���`@���{L���`p@���@LEL����@����L���`C@��� [K���@���]K���@���zK���@���gK����@��� [K���@���ੋK���`g@����|K���q@���@K���`ݝ@���ÔK���` @����kK���@@���}K���U@���`4K���a@����K���`C@��� J���)@����BK���v@���K���b@��� 1%K���@���X:K���@���<K���@X@���7K���@����|3K���@��� t*K��� @���.K���#@���h$K��� >i@���K����H@���K���P @���,K���R @��� J��� @���@d�K���Ί @��� K���`(\ @���K���\n @���K���@���K���:@���K��� @��� 6K���j@���=K��� m@����CK���Z@���@uIK���x@��� NK���@@���VK��� @��� ,YK���@���`6XK����@���GaK���`@���@gK���@|@��� oK����@���z|K���p@���azK���@��� zK��� @���`TK���7@���`<K���`z@���#K����O@���K���@_,@���XK���R@���ࣰK��� l@����LK��� y5@���>K���`kA@���`K����.@��� K��� @���L���@@��� L���`H@���`L����@���iK���@\�@���iK���[?��� tK���R?���F<L���@?���`eGL����,�@���XL���>7�@���L���m@���`L��� @��� [L����UU@���`L���@���L���@?H@���L���@q @���`TL���v @���4L���� @�����������[%@���R@���@@��� T@ ������������������L���T���i���q���$����� 9@����S@���8@���@hS@���@9@���@!S@���i9@����+S@���9@���`y-S@���` 9@���9-S@��� 9@����S@���g:@���S@��� [:@���S@��� x:@���S@���ye:@����US@��� r:@���@S@���:@���rS@���:@���S@���E;@����S@��� :@���bS@���g:@���S@����v<@��� S@����;@���S@��� 1%<@���@XS@����\<@���஺S@���l<@���ͻS@���sj<@���S@���`e<@���tS@���D<@���̼S@���=@��� ~S@���@d=@���@oS@���`=@���@ S@���P=@����S@���`<@���ոS@����v<@��� S@����6@���HPS@���ql6@����vPS@���`b6@���{SS@����~6@���TS@���J~6@���WS@���h6@���ZS@���I6@���aS@����6@���RcS@��� _6@���(dS@���G16@���1`S@���`4@���@6\S@���o4@���@\S@���o4@���@o^S@���I4@����_S@����4@���abS@���E35@���fS@���;5@���biS@���`5A5@����nS@���5@���vS@����5@����5yS@���@d5@���zS@���5@���@|S@���@.4@����VS@���4@���S@���@.4@���[S@����05@����S@���6@���ߏS@���@u7@���S@���`_\7@���S@���7@���υS@���' 7@����S@���@37@���S@���7@���@`wS@���7@����=vS@���OJ8@���@yS@���8@����VpS@���@W8@���RoS@����|C8@���kS@���@�8@����fS@��� 7@���1`S@���c7@���WS@��� 247@����,YS@���B6@���@VS@����T6@����RS@����6@���HPS@���?@���T@���s?@��� ~T@���@]~?@���T@���@@���!T@���`@@���T@���@@��� T@���@@��� > T@���?@���T@���4@��� S@��� 4@���@S@���4@���*S@����04@���cS@���@4@���`ŒS@����x4@���lS@����4@���/S@���4@���ǘS@���4@���8S@���5@����DS@���a5@���@S@���B55@����S@���gu5@����S@���l5@���1S@���@.6@����S@��� &>6@���S@����M<6@���@S@���E6@���ސS@���5@���@S@����4@����S@���4@��� S@���@: 3@���R@���O2@���@xR@����T2@���@6R@���2@���@àR@���C3@���R@���L3@��� fR@���03@���RR@���@: 3@���R@���` 7@����nS@���@7@����DS@���@:6@���S@���6@���S@���6@���RS@���6@��� S@��� 6@��� fS@��� 4@���@WS@��� 4@���S@���`4@���S@���J4@���@gS@����E4@���@S@���य3@���S@��� آ3@���AS@���3@���IS@���&4@����#S@���l4@����S@����v5@���S@����#5@����S@���~4@���S@����}4@���S@��� VD6@���9S@���@-X6@���`S@���@?6@���@S@���5@����S@���@.5@����eS@���5@���HS@���5@����^S@��� Vd4@���@S@���Ί3@���tS@���@2@����S@���y2@���@S@����2@����S@���Q2@���S@���@;<2@����S@���2@���`S@���82@���3T@���@^=2@���T@���'2@���@T@��� +Z2@���T@��� ?2@���`T@����)1@���T@���@1@��� T@���@*2@���@ T@���Ե2@���� T@���2@���� T@���D2@���@ T@���7/3@���@T@���iC3@���bT@���@3c3@���@T@���@3@���B T@���`{3@���` T@���P93@���c T@���@2@���T@���3@���@oT@���@T3@����T@���@^3@���`T@���x3@���� T@����3@��� T@���`3@����T@���3@���T@���3@���T@���g3@����T@���3@���@T@���|3@���T@���v3@���T@����3@���`T@���@ڰ3@���T@���`3@���T@���`3@���T@���4@���T@���@4@���T@���@4@���`QT@����#4@���T@��� +4@���JT@����]4@���@T@����)4@���sT@���4@���@T@���n4@���@T@���4@���T@��� [4@����T@���@4@���YT@���H4@��� T@��� 05@���T@���ES5@���lT@���@XR5@����]T@���V5@���P T@���{5@���@ T@���5@���YT@���G5@����T@���h5@���@ T@���@5@���HT@���``5@���@T@����M5@���@g T@���6@����5T@���86@����D�T@���z46@����S@���@V6@���`iS@���p]6@���z�T@���@4R6@���T@���@y6@����T@���=Z6@���T@�����`6@���@_T@����s6@���@T@����Sw6@����DT@���H`6@���@T@���@t6@���`T@���6@���@T@���̌6@���T@���@Y6@���JT@����U6@��� T@���`b6@���T@���6@���T@���`6@���sT@���`6@���T@���?6@���T@���6@���T@���n6@���@6 T@��� 6@��� T@����ZQ7@����T@���"7@����T@���27@���|T@���X7@����T@���N7@���!T@����) 7@���T@���6@���@ T@���z7@��� T@���@77@����ET@��� (7@����U T@���7@��� T@���ge7@����T@��� h7@��� T@���c7@����M T@����z7@����, T@���@:}7@��� T@���`7@���:T@���7@���@ T@���@7@���T@���7@���T@���`6`8@���T@���e8@���@T@����.8@���T@���,8@���`T@���Y8@���@T@���8@���T@����u8@����#T@���Q8@���:T@����8@����T@���D8@���@_T@���8@����T@����Z9@���@T@���@99@���@T@���@D9@���JT@����*9@����T@����T9@���� T@���z9@��� T@���:@���� T@���:@����$T@���<;@���!T@���`;@���@S@���'=;@���S@����=;@���S@���h$;@���@S@���:@���@S@����|:@���S@���9@���S@����|9@��� &S@���`59@���S@���9@����S@���9@����=S@����,9@����S@���x8@���`yS@���`8@���S@���q8@���S@���H8@���S@���@D8@���@ S@���E8@���S@���8@��� S@���` 7@����nS@��� \0@���@ $S@���N0@���$S@����0V0@���@)S@���.@���`Q8S@��� ,/@����:S@���@$0@���s>S@���<0@����,=S@����:0@���R;S@����S0@���@h<S@���`5Q0@���|>S@���~0@���>S@���` 0@���?S@���@30@����AS@���0@���lDS@���/@���@ES@��� Ų/@����nCS@���7/@��� @S@���t/@���?S@���@ w.@���0AS@����L.@���GS@�����,@����MLS@���ࣰ,@���jNS@���]N,@���RS@����D,@���@hTS@���|S,@���!VS@����.,@���@NWS@��� +@���@%[S@���,@��� \S@���+@���{_S@��� +@���aS@���p,@����cS@���,@����^eS@���S-@���@6dS@���.-@���kaS@��� -@���`S@��� -@���`i_S@���@ w-@����n_S@���z-@���bS@��� /@����aS@���90@���[S@���8N0@���*^S@����M 0@���Z`S@���`/@���(dS@���9M/@���dS@���Oz-@���@iS@���`-@����jS@��� \/@����oS@���@]0@���IsS@����0@���arS@����1@���rS@���@0@����VtS@���@^0@����vS@��� 0@����xS@��� 0@���wS@���0@���@yS@���`1@���{S@���`0@���zS@��� +0@���@vS@����#/@����#uS@���%/@���xS@���`.@���@orS@���@+@����nS@���~q+@���pS@���G+@���@xrS@���`ݝ+@���@ tS@���@^M+@���SvS@���A+@���@G}S@���OZ+@���S@���9+@����S@���@P9+@��� S@���+@���υS@���@-8,@����S@���,@����}S@���`/,@���}S@���@,@���`~S@���@ w,@���:S@���@,@���3S@���`5.@���RS@���p-@���`S@���.@���S@���@.@����<S@����}R/@���S@���@Py/@���@S@����3/@���BS@���`3/@���@%S@���`//@���S@���0@����^S@���E1@���|S@���`71@���S@���0@���S@��� 2T0@���S@���0@���S@��� 20@���`yS@���0@����S@���@X0@���பS@���@40@����S@���~0@���BS@���@Z0@���*S@���@^-0@���S@��� 0@���@S@���/@����S@���.@���S@���|.@����S@��� b.@���@S@���.@����S@���@�/@���S@���.@���S@���.@���S@���`.@���S@���S.@����vS@���e.@���S@���E.@���S@���� .@����S@���.@���@xS@���`-@��� fS@����)-@���S@����Z-@���S@����#-@���`ŮS@���@e-@���|S@���E,@��� S@���Q-@����^S@���Q-@���S@���@%-@���S@���`,@����S@���Q,@���!S@���R-@���ZS@��� \o-@����S@���l`-@���@-S@����,@���৘S@��� %,@���ΖS@��� ,@����S@���`Z,@���@GS@����,@��� S@���h$,@���SS@���h+@���S@���+@���@XS@���`+@����S@���|+@����S@��� +@���@gS@����o+@���`S@���M*@���KS@���@j*@���S@���)@����eS@����)@���S@����)@���`S@��� )@���஖S@���`ff)@���@S@���@A(@���8S@��� (@���@%S@���O:*@����#S@���\*@���@ӢS@���3)@���@S@���'@����$S@���'@���@OS@��� 1'@����vS@���"'@���S@���;K'@����ɯS@��� 1'@���zS@���U'@���S@���@ '@���@GS@���&@����<S@���@ͫ&@���`ݽS@���z4'@���|S@���%(@���S@���(@���ϹS@���l�)@���`źS@���(@���߿S@���@ (@���@S@���'@���S@���=)(@���S@��� '(@���S@���]'@���S@��� 1'@���kS@���`fF(@����S@����L(@��� S@��� N;(@���S@���@+(@���{S@����`'@���S@���'@���S@���``'@���sS@���ē'@���@%S@���I_'@���S@����70'@���RS@���q'@����DS@���h'@���SS@��� y&@���@S@���]&@���@S@���@dH&@���7S@���%@���BS@���%@��� S@��� %@���@6S@���1%@���S@��� 9%@���S@���@X%@���0S@��� 9%@���S@���`Ce%@���S@���[%@���@oS@���M\&@���S@��� 1%@���aS@���`%@����,S@���r&@���S@���&@���YS@���=i&@���bS@���o&@����S@���e&@���S@����'@���kS@���`'@���S@���'@���S@���`(@���kS@���`(@���sS@���Ȱ(@����S@���@e(@��� S@���S(@����S@���s(@���S@���7(@���@ S@���x)@���@S@���)@���S@���1*@��� S@���M+@���S@���=+@���@S@���]+@���@S@����+@���|S@���A+@���S@����L}*@����S@���*@���S@���')@���`yS@����*@���S@���M*@���@_S@���*@���`yS@���҇*@���@S@��� *@���S@���*@���S@���`C*@���S@���Z0+@���`S@���I+@���@S@���+@���`S@���``+,@���9S@����O,@����S@���r+@���S@���@+@����S@���v8,@���S@��� 9,@���S@���L,@���`S@���@j,@���S@���`-@����S@���v-@���@S@���U.@���@oS@���O.@���S@���/@���@XS@���M/@���S@���j/@���AS@���l/@���@XS@���/@���S@��� !0@���rS@���%0@���@%S@���d0@����S@���`~0@���S@��� &~0@���@ۻS@���@:-0@���S@����|#0@���@NS@���;/@���S@���U/@���@FS@����T/@��� S@���W/@����S@��� yu/@���S@���?H/@���S@����Tv/@���S@���#0@����S@���`f/@���S@���/@���@OS@���N0@���@T@���a0@����T@���0@���qS@���j0@���@XS@���`0@���S@���@-0@���@6S@���`0@���@S@��� +0@���tS@���^1@���@%S@��� U2@���`S@���2@����S@���O1@���`S@��� 1@��� S@���1@����5S@���1@���8S@���D1@����S@����1@���@S@���1@���0S@���z2@���S@��� 2@���/S@���`12@��� S@���``[2@���@6S@����2@���S@���ि2@���@pS@���2@���HS@���`2@���@S@���>2@���`S@���2@����S@���@.2@���S@��� 2@����S@���`_2@����S@���I2@���S@����2@���@NS@���2@���@S@���@32@���@S@���=2@���@S@���2@���AS@����/3@���KS@���Y3@����S@���3@���@gS@���3@���`iS@����v3@����S@���3@���@S@���͋5@����S@���r5@����S@���[5@��� S@���b5@���ϩS@���@:4@��� S@��� 4@���S@���H3@���7S@���3@���S@���@;3@���עS@���`<3@���zS@���x2@���S@����3@���S@���@3@����S@���2@���ƑS@���3@���S@���h3@���S@��� 2@��� S@���Q3@����S@���@43@���`yS@���`2@���S@���p2@���@S@���`h2@���S@���%2@���`}S@���yU2@��� ~yS@����}r2@���JvS@���r2@����pS@���W2@���jS@���\2@���hS@����I2@���eS@���@]N2@����bS@���<2@���`i_S@���1@���@N_S@���`<1@����U]S@�����1@���@-\S@���j1@���KS@���q1@���9IS@���iS1@���BS@���`1@���@BS@���'-1@���bAS@���`Q1@���@=S@����81@���:S@���`0@���@-4S@���@^0@���2S@���%/1@���@F.S@���21@����v,S@���`6�1@���(S@���I0@���&S@���j0@���$S@���0@���&S@���@j0@���@'S@��� \0@���@ $S@������������@^>@���@Q;��� .@@���t9�������������?@���@K9��� @@���`k:���`0 @@���@):��� @@���B:��� > @@���d:����@@���~:��� .@@���/:���`�@@���:���f?@��� ;���@?@���@Q;���@z?@���$P;���b)?@��� 3;��� >@����;���A>@���:��� >@���:���>@����׳:���@^>@����Tv:���Z?@���`e:���@ ?@���9���R?@����Z9���k?@���t9���?@����9���?@���@K9�����������6&@���{K@��� *8@��� DQ@��������� ������?������&@����vM@���@^&@���`M@���&'@���M@���O'@���M@���@W'@���Z#M@���,y'@��� $M@����#'@����M@��� ߜ'@���mM@���&@����vM@���o0@���L@���@g0@���`#L@���@d0@��� CL@��� 0@��� %oL@���O0@���*rL@��� ,0@��� L@���@1@���L@���@;1@���DL@���0@���rL@���o0@����hL@���0@���`SL@���0@���!L@���o0@���L@���%2@��� tL@���32@���`L@���@3C2@��� L@���J2@����L@��� 72@����eL@���(2@���`0L@���P2@���cL@���2@���L@����L-2@���L@����2@���L@����2@���|L@���v2@����eL@����S2@���L@���2@���L@���@2@���@XL@���b2@��� L@���@2@���UL@����2@���@pL@����T2@���L@����3@���L@��� 13@���@FL@���2@��� L@����T2@���`NL@��� 2@���� L@��� 2@���L@���`2@���L@���2@���`0L@���`2@���`6L@���2@��� L@���`2@���L@���Q2@���൰L@���2@���mL@���@2@���஦L@���2@���`L@���2@���`L@���j2@���sL@���@i2@���L@���U2@��� L@���[2@���@o~L@���`;2@���uL@���%2@��� tL@���� 4@��� DQ@���`4@���`Q@Q@���@]4@����<Q@���14@���Q;Q@��� 14@���09Q@���`055@����v4Q@����*5@����_(Q@���5@���@$Q@���@5@���z$Q@��� 6@���@Q@����6@���Q@����7@���{Q@����(7@���@r Q@���@%7@���@(Q@���``K7@��� Q@���Ί7@����P@���@-7@��� P@���a7@���P@���~7@���� P@��� +z7@���@P@���`7@���@P@���Zp7@���P@���@]n7@���@P@����$7@���`P@���7@����P@���7@���@P@���@-7@���@P@���`ݽ7@���8P@����L7@��� P@���7@���SP@����7@���BP@���7@���@P@����й7@����P@���7@���P@���@8@���;P@���`f7@����MP@���@37@���zP@����7@���`yP@���c7@���� P@���7@���@P@���G8@���@`P@��� *8@���tP@���@38@���@orP@���F7@��� tP@���A7@����EsP@���@u7@���@tP@���Io7@���pP@��� [07@����vtP@���@<7@���pP@���7@���@lP@���7@���@WoP@����7@���@-pP@���@d6@���wP@��� 6@���yP@���h6@���sP@���@ 6@���pP@���͛6@����sP@���6@���qP@���6@���@sP@���}6@����,uP@���']6@���`vP@���@4R6@���sP@���`<[6@����$pP@���P6@���@nP@����=6@����MpP@���'=6@��� nP@���_6@���mP@���b6@����jP@����wW6@���@ojP@����N6@���lP@���@A6@���:lP@��� F6@���gP@����/6@����gP@���7O6@���@gP@���@Q6@���hP@���'m6@���cP@���g6@���AbP@���z5@����UiP@���@)6@���@%cP@����*6@���`bP@���=5@���@aP@���6@���B]P@���@5@���[P@���k5@���\P@���5@���`yYP@��� 5@���bYP@���A5@���ZP@����x5@���XP@���5@���SP@���5@���PP@���`5@���`OP@����L}5@����SP@���S5@���WP@���D5@����UUP@���f5@���TP@���`ܞ5@���@IP@���@5@���HP@���5@���@HP@���5@����EP@���w5@����<CP@���@5@���BAP@���l5@��� @P@���c5@����^=P@���o>5@���<P@���`.5@���@5P@���5@����4P@����5@���6P@���t 5@��� ~5P@��� 5@���3P@���!B5@���@1P@���O5@���@ 0P@���:5@���/P@���M5@���+P@���55@����,P@���@5@���A.P@���o5@���+P@��� \5@���@?$P@���_5@���&P@����5@���@!P@��� [`5@����!P@���``{5@��� P@���N{5@���P@���@W5@����P@���zT5@����P@��� F5@���P@��� &>5@���@P@���D4@���P@��� ,4@���0P@���@4@��� ,O@���4@����O@���@:4@��� O@���4@���aO@���4@���PO@���gu4@���DO@���`i4@����vO@��� \4@���O@��� W4@���@O@���P4@���JO@���@WS4@���@O@���J4@���)O@����#A4@���3O@����=4@���O@����4@���@hO@���4@���bO@����v4@���O@���3@���`O@���x3@��� DO@���3@����O@��� ,3@���O@���ģ3@���@üO@��� v3@��� O@���@;l3@���`O@���r{3@���ֻO@���>y3@���@O@����3@��� DO@���V3@���@½O@����]3@���O@���K3@���@WO@���AF3@��� O@���C3@���O@����#3@���O@���`3@���`˝O@��� 3@���IO@��� 3@���O@���@;3@���@O@���t 3@���O@���@X2@��� ҟO@���2@���`O@���@^2@����O@��� O2@���sO@���2@��� yO@��� 2@���ϙO@���2@����O@��� 22@���:O@���2@���͓O@���2@���`ŒO@���` 2@����^O@���`2@���O@���N{2@���@XO@���`2@���� O@���ql2@����5O@���QX2@���@hO@���@4B2@����~O@��� +2@��� ~O@����2@����{O@���࣐2@��� yO@���`j2@��� {O@���f2@���xO@���2@���`/vO@���>y2@��� pO@���`w2@���`mO@���\2@���jO@���IO2@���mO@���52@���JnO@���`G2@����kO@���C2@���@gO@���32@���@WcO@���/2@���gO@���%2@���bO@���2@���`fO@���%2@���`hO@���@; 2@���lO@���P1@���@fO@����s1@���hO@����M1@���nO@���` 1@���|O@���@X1@���~O@���1@����5yO@���1@���nO@����1@���]O@���1@��� SO@����1@���'UO@���1@��� SO@��� 2@��� OO@���J2@���KO@���i1@���`GO@��� V1@���MO@���@]1@���`/NO@��� ,1@����EO@���1@���=O@��� ~1@���@.?O@����w1@���;O@��� ز1@���7O@���l1@���Z8O@���h1@���DO@���@WS1@��� y=O@���@a1@���'5O@����SW1@���j2O@���`ew1@����'O@���w1@���@!O@���1@���O@���1@���O@���`1@���`O@���{1@��� O@��� v1@�����O@���@Y1@���N@���`W1@���@-N@���?h1@����vN@���d1@���`N@����~1@���`0N@���@ 1@���N@��� +z1@���N@���@A1@��� N@���#1@���N@���c81@���`N@���@WC1@���N@��� [ 1@���N@���` %1@��� N@���1@���`AN@���`-1@��� fN@���@d(1@���`N@���#1@���@N@���@;1@���@N@���^F1@���`N@��� 1@���N@���61@���N@���&1@���`ŚN@���o.1@���@XN@���`601@���1N@���s*1@���@.N@���&1@���`xN@���U1@����`N@���H01@���XN@���U1@����SN@���` 1@���@QN@���@-1@���` MN@���=1@���@IN@����}1@���@XBN@���1@���@.?N@���@1@���`qDN@���1@���IN@��� 1@���`qLN@����1@���IN@���a:2@���@/N@���@<2@���)N@���@p2@����+N@���@q2@���'N@���2@���`N@���z2@��� N@���r2@���N@���@W2@��� &&N@���`5Q2@��� &N@���r2@���N@���k2@���N@���Ί2@���rN@����T2@���b N@���D2@��� N@���H2@���@N@����2@���@.N@����2@���� N@���2@���a N@���2@���@p N@���`2@���N@���2@���t N@���`2@����M@���3@����M@��� 3@���PM@��� 2@���M@���@]2@����M@���r2@����M@���` 2@����M@���92@���M@����2@���M@���3@���`M@���3@���`/M@���2@���(M@���@2@���M@���Ʊ2@���M@����2@��� =M@���`2@����eM@���B2@��� OM@�����@2@���ǸM@���P2@��� M@����}R2@���`M@���=*2@���:M@��� U52@���ԵM@���!22@���@FM@���2@���@M@���`2@���`M@��� 2@���M@���"2@����M@���1@���@M@���@1@���zM@���1@���M@���@d1@���:M@���1@��� ~M@���1@���7M@���1@��� M@���@1@���8M@��� آ1@���`M@���x1@����M@��� 1@���@pM@��� q1@���M@��� |1@���@M@���y1@���M@���@ 1@���DM@���1@����M@���ʞ1@����M@���1@����^M@����01@���@M@��� 1@���M@���1@���`M@���Q1@���`M@��� 11@���@M@���@1@���[M@����}1@���@pM@���`^1@���RM@���Qh1@���M@���f1@��� M@���@;1@���M@��� \1@����^M@���1@���@WM@���� 1@��� M@��� 1@��� M@���@0@��� M@����v0@���M@����0@���`NM@���¥0@����M@���0@��� M@��� \0@��� M@����)0@���IM@����Љ0@����M@���@ w0@���`M@���x0@���M@���`c0@���bM@���PY0@���@pM@���@0@���ாM@���0@���*M@���o.0@���@?M@��� 0@���M@���`0@���M@��� ~0@���M@��� 20@���M@��� 0@���`M@���= 1@��� M@���@O1@��� M@���@O1@���@M@���@]>1@����$M@��� G1@���`M@���61@���@M@���e1@���M@���@Z1@���� M@��� \1@��� M@���1@���`_M@���Q1@���M@��� 1@���`qM@���`1@���ءM@���@W1@���` M@���1@���`qM@���@1@���M@���)2@���M@���@E2@���M@����)\2@���`M@���ht2@���aM@���sz2@��� DM@���p2@���մM@���7o2@���@M@���2@���@pM@���x2@���٨M@���k2@���[M@��� Z2@���M@���V2@���`M@���F2@���RM@���V2@��� gM@��� \O2@���M@���@g2@���M@���r 2@���M@���1@���M@����w1@���`uM@��� U1@���`qtM@���` 1@���mM@���x1@��� &vM@��� 1@���@tM@���@-1@���pM@���1@���IwM@���1@���M@���@X1@���`6M@���`1@��� xM@���@1@���@M@���ǰ1@���M@���1@���M@���1@���@|M@���'1@���@puM@���1@���|rM@���1@���rM@���1@����mM@���jr1@��� =rM@���`{1@���@eM@���@ W1@���`fM@���`_1@���m_M@���GA1@���@\M@��� U1@���aM@���`/1@���]M@��� \1@���@YM@���B%1@��� YM@���?1@���@WSM@����1@���`AVM@���E1@���@TM@����T1@���kQM@����0@���QM@���``;0@���UTM@���f0@���KM@����o0@���RM@���0@���'MM@���>0@���`HM@���H0@���=M@��� &0@���S6M@���a0@���;M@���µ0@��� 3M@���ͻ0@��� x.M@���`0@����<+M@��� ~0@���,M@����*0@���c(M@����0@���'M@���0@���j"M@���@:0@��� %M@���@^0@���M@���@0@���M@���`0@���M@���80@���`M@���0@��� ~M@���a0@��� M@���0@��� M@���0@��� M@���0@��� =M@���@0@��� L@���0@���@M@���@W0@��� �M@���p0@��� L@���B0@����5L@���@0@���L@���G0@��� UL@���0@���L@���0@���` L@���~0@����^L@���0@���L@���Av0@��� =L@���@ͳ0@���`L@���o0@���L@���`f0@���@L@���0@���`L@����$0@���RL@����0@���iL@���`0@���L@���@0@���L@���0@���L@��� ~0@��� L@���@0@���@۷L@��� +0@���(L@���0@���L@����0@���L@���0@���תL@���`x0@���'L@���u0@���@pL@��� 0@���sL@����#q0@���@…L@���j0@���dL@���`s0@���'eL@���w0@���@aL@���`<[0@���`L@���`0@���`GYL@���`_\0@����SL@���E0@��� TL@����S70@����ML@���@ 70@����EL@���+0@���CL@���0@����1L@����ô/@��� L@���3/@��� L@���/@���L@���y/@���L@���,/@���`L@����)/@���L@���.@���tL@���a-@���1L@���@']-@���`L@���l-@���L@��� h-@���iL@��� V-@���Z�L@���`=-@���`L@���-@����L@���,@���K@��� bj,@���`K@���hd,@����K@���1,@���QK@���`),@���iK@���`d,@���K@����8,@���K@��� %+@���7K@���࣐+@���K@���`+@���K@���*@���{K@���t*@���K@��� )@��� K@����))@����$K@���)@���`0K@���)@���`K@��� 1)@����K@���@)@����K@���@ *@���`K@���@*@���PK@���)@���K@���)@���K@���)@���L@���x(@���@$L@���(@���� &L@���j)@��� L@���l)@���`L@���)@���s"L@����>)@���23L@���C)@���7L@���@\)@���`;L@���)@��� 8L@���@X)@���`;L@���)@���(DL@���)@���SL@���Ws)@����QL@���`CE)@���\L@����/)@���hL@���W(@���` uL@���;(@���L@���@y(@���L@���d(@���RL@���3(@���@L@���@P9(@����5L@���`H(@����$L@���x(@��� L@���0(@���L@���x(@���׺L@���(@���L@���`'@���`L@���@''@��� gL@���`'@����L@���'@���'L@���Щ'@���@L@���'@��� ,L@���{'@����$L@���Af'@����L@���@'@���L@���S'@��� L@���`'@���L@���O'@���(M@���'@���`M@���@'@��� M@���@''@���D#M@���@ '@���`+M@����$'@���`M@��� N&@���`M@���'@���\&M@���&>'@���b1M@���`r'@���4M@���@&@���&M@���&@��� ,!M@���@&@���&M@���&@���@F*M@���`C&@���*M@���&@���P1M@���&@���B-M@���Ȱ&@���,M@��� +&@���8M@���t&@���`+M@���@i&@��� 3M@���&@���@5M@���I&@��� y=M@���@j&@����BM@����#&@��� SM@���`)[&@��� `[M@���k&@���`M@���@jc&@���@puM@���6&@���@yM@���@:&@���~M@���=&@���`M@���[&@����5M@���G&@����M@���@3&@���ΊM@���@0&@���|M@����&@��� OrM@���&@���qM@���@'@����_tM@���'@���M@���z'@���uM@���0'@���ࠜM@���'@���dM@���'@���ҦM@���@ '@���`M@���` U'@���CM@��� 9'@���M@���?'@����M@���`l'@���CM@����'@���M@���@{S(@���M@���1(@��� N@���r(@���&N@���-)@���`3N@���`R7)@���;N@���,)@���@iCN@���Tu(@����~N@��� (@���`ăN@��� \O)@���`N@����T)@��� fN@��� \)@���uN@����7(@���bN@���?(@���`BN@����w(@��� ~!O@��� k(@���1O@����(@����LO@��� -(@���`_O@���(@��� =rO@����TV(@���`O@���n'@���עO@����c(@����O@���dG(@���`O@���A(@���O@���Y)@���O@���^)@���`yP@���u*@���@P@��� +@����P@���`,@���P@���` ,@���!P@���7O,@���� P@���;,@����P@����L]+@���$P@���`d+@���@H(P@���,@���@QHP@��� ߼,@���OP@����q,@���TP@���-@���eP@����D-@���@tP@���`-@���@zP@��� .@���@P@���@.@���*P@���@.@���ෞP@���l@/@���`ŦP@���`0@����P@���Z0@���"P@���`/f0@���@`P@����0@���@XP@���`510@���P@���a0@���P@���@0@���� P@���0@���P@���`601@���Q@���@ F1@���@Q@���@X1@���@P@���'2@���� Q@��� 2@���3Q@���@2@���� Q@��� [2@���@"Q@��� 2@���jQ@���2@���@7Q@���3@���@Q@���@-4@���@Q@���@ 64@���@Q@���`3@���"Q@����34@���`a*Q@���@Y4@���@X2Q@���P4@���@i;Q@����4@���@BQ@���� 4@��� DQ@�����������`@���tF@��� +$@��� 7G@�������������#@���@,G@����"@���`G@����#@���LG@����"@���mG@���#4#@���ZG@���@H#@���G@���I#@���`zG@���l $@����nG@���@Y$@���mG@��� %$@���@yG@���9$@����$G@��� +$@���`wG@����$@���UqG@����Y$@���FoG@���$@���aG@���`C$@���>XG@���$@���|RG@���$@���QG@���v$@���KG@���A$@���EG@��� s$@��� %GG@����ww$@���QG@���@5$@���`ANG@��� "$@��� GG@���$@��� g=G@���@{S$@��� 4G@���Q8$@���)G@���Z$@���"G@��� Q$@���G@��� H $@���`G@���@&#@���(G@���@f#@����0G@����y#@����-G@���j#@���`/&G@���'=#@���%G@���@f#@���|*G@���"@����5AG@���"@���`<G@���"@���AG@���`"@���=G@���@y"@���`Y)G@���*"@���G@��� "@����G@���2"@���F@���J!@���`F@���+"@���`F@���6"@���tF@���@!@����F@���!@���eF@����!@����eF@���x!@���`F@���f!@���F@����!@���@XF@���!@���F@���{!@���`G G@���H!@��� G@���@!@��� G@����Xl!@���` G@���@Fb!@���� G@���� @��� G@��� @��� N+G@���@ @���:G@����^ @��� a:G@���8. @���`Y!G@���YQ @���G@��� @���`H�G@���`(@���`F@���`>i@���F@���@��� F@���P@���`F@���Œ@���`BF@���`e@���F@���@'@���BF@���@w@���ZG@���L|@���G@���@���#G@���&@���3G@��� ].@���G@���`@���@"G@���@@���`-G@���`A8@���`3G@���L<@���4G@���7/@���[7G@���`ш@���@i;G@���6P@���@4G@���L@���`-G@����@��� D)G@���@���`&G@��� 8@���Q G@��� @���G@���`@���`G@������@���JG@����L@����FG@���J>@��� G@���0u@��� G@����n@��� r3G@���O@��� :G@���@���KG@���L@���`,ZG@���@��� cG@���'@���vG@���PY@���n~G@���@���G@��� @���G@���@����^G@��� @���G@��� %?@���:G@���@���@G@���A@���௭G@��� @���ٸG@���@��� =G@����T@���G@���@���dG@���@���G@���@��� GG@���@���@(G@���@��� NG@��� Z@���G@��� @���G@����,y@��� G@���@@���G@���`G@��� NG@���@���`G@���@>i @���@G@����] @��� ~G@���n @���G@���@D!@���lG@���<!@����G@���J>!@���`G@���@ @���G@���6 @���`G@���!@��� 7G@���1t!@���@G@����3s!@���@PG@���Q!@���mG@���!@����G@����!@���G@����"@���G@����"#@��� G@���#@���`G@����N#@��� OG@���zT#@���аG@���5#@��� G@���#@���@,G@�����������A@����$(@@���`/E@���@=B@���t�����������.E@���`B@���`/E@���@B@���D@���LB@���D@���DCB@���'D@���-B@���D@��� B@���cD@���VA@���"D@���A@���D@���mA@��� D@���A@���TD@���dA@��� D@���5A@���#D@���` A@���eC@��� I@@���`\C@���@@��� 9C@����G@@���C@���@@@���B@���@ht@@���kB@���a@@��� B@���O@@���B@���1<@@���;kB@����$(@@���\VB@��� +@@���;3B@���`0@@���@)B@���9@@���@F B@����D@@���@QA@��� ~Y@@���A@���@@_@@���A@���W@@���A@��� [@@���A@���_@@���A@���@h@@���`A@��� r@@���`A@���n~@@���A@����F@@���A@���\@@����A@���`6@@���DA@��� ԟ@@���A@���`/@@���A@���{@@���@B@���*@@���B@���@@���`A@���`@@���LA@���@@���8B@���@@��� 0B@���@@��� D$B@��� y@@���`5B@���A@���`OB@���`A@���{KB@��� xA@���LB@���`'A@���@GB@���k)A@��� FB@��� 6A@���S6B@���`6@A@��� `+B@���BA@���`6B@���MA@���c0B@���QA@���@,B@��� 6XA@���'B@���dWA@���'B@���UA@���B@���QA@���@A@��� #SA@���mA@��� &^A@���A@��� DtA@���A@���A@��� fA@���A@���A@���bA@���@A@���A@���A@���kA@���:A@���A@���A@���IA@���:A@���`A@���JA@���@A@����A@���A@���,A@���`A@����B@���A@���3B@���lA@���JB@��� ,A@��� B@��� A@���/B@���B@��� 0B@���B@���l8B@���jB@���@.?B@��� B@��� GB@���B@���`XB@���B@���ZXB@��� $B@����.OB@���@-B@���@XJB@���D3B@���`FB@��� ?B@���`TB@���`jB@��� OzB@���`bB@���B@���r[B@��� B@���:TB@���؉B@���@OB@���@QB@����_TB@��� B@���QB@���B@���`qTB@���B@���baB@���@.C@���sB@���`2C@���`rB@���\C@����YB@��� &nC@���@PYB@���@XC@��� 0UB@���8C@���sYB@���`C@���@-`B@���`/D@����jB@���;3D@���~B@���DcD@��� %B@���D@���@B@���DD@���؉B@���D@��� B@����$E@���+B@���E@���@=B@���E@����B@���1,E@��� B@����.E@���`B@�����������@i^@���@.5@���^@���H9@���.����������5^@���@.5@����0^@��� y5@���@.^@���`5@���@.+^@���`/6@���@+^@��� #6@���$^@���\6@���5^@���6@���`R ^@��� 6@���@ ^@���7@��� ^@���@ 7@���@i^@���j7@���W^@���7@���^@���` 57@���a ^@���b7@���@^@���@'7@���^@���@8@���.*^@���18@����0^@���¥8@���@7^@���p8@����?^@���I8@���ON^@���9@���HR^@���`99@��� [^@���l 9@���Y^@���`_,9@���`x^^@���`D9@���@c^@���H9@���`g^@���A9@���`)k^@���,9@���y^@����9@���`z^@���` 9@���^@���9@���u^@���8@���@.s^@���8@���zt^@��� 8@���@v^@����w8@��� q^@���@(\8@����l^@���68@���@f^@����8@���`+f^@���e7@���]^@���BU7@���`N^@���6@��� ;^@���sz6@��� 7^@���56@���z8^@��� 6@���p5^@���@(5@���5^@���@.5@����� �������xP@���� VB@���R@���@pD@���W���������۾Q@��� QD@����ſQ@����D@���\Q@���@.D@��� ºQ@���D@��� !Q@���`�D@���YQ@����qD@����vQ@���`D@���`Q@���GD@���OQ@���B D@���@YQ@��� D@���0Q@���C@���@Q@���C@���ϡQ@���`C@���Q@���@C@���Q@����C@��� Q@���C@���@WQ@����4D@����ܣQ@��� aD@���`Q@���D@���OQ@���� D@���OQ@���D@��� Q@���)D@���Q@����D@���`fQ@���RD@���dQ@��� D@���bQ@���D@���@^Q@���D@���`Q@��� C@���aQ@���HC@���@3[Q@���qC@���zYQ@���C@���UQ@����C@���PQ@���@C@���OQ@��� C@����SQ@����BC@��� SQ@���� C@���`UQ@���)C@���@3WQ@���@gC@����XQ@���C@����\Q@���@C@���`bQ@���C@���eQ@���`C@���QmQ@����=C@���uqQ@���C@���`uQ@���C@���[|Q@���@C@����)Q@���VC@��� \Q@���=C@���@pQ@���@C@���`Q@��� C@���`Q@���@WC@���:Q@���C@���`ʖQ@���C@���Q@���C@���`Q@���`C@���@{Q@���C@��� !Q@���C@���Q@���WC@��� !Q@���C@���\Q@���C@���@Q@���`C@����ܯQ@���`C@���@EQ@���DZC@���OQ@���C@���Q@���qC@���`�Q@���෷C@���Q@���C@����ܿQ@���@WC@���`Q@��� C@���8Q@���`[C@����Q@����MC@���Q@���)C@����;Q@��� HC@���Q@���C@����qQ@���C@���`Q@����fC@����fQ@����C@���Q@����ܿC@���`Q@���`C@���`Q@���kC@���mQ@���`)C@���Q@���C@���@Q@���@3C@���zQ@���C@���`Q@���C@���@Q@���� C@���R@��� C@���@R@����C@��� R@���C@���`R@����fC@����R@��� C@����R@���C@���R@��� C@����R@���C@���R@���C@����R@���C@���`x"R@��� C@���`%R@���@C@���@*R@���qC@���`6R@���`fC@���<R@���@C@���AR@���C@���OFR@���C@���IR@���8C@���VR@���C@��� WR@��� aC@��� WR@��� C@��� s_R@����)C@���@ kR@����C@����jR@���C@���iR@���`C@���`gR@���:C@���|vR@���|C@���@vR@���@xC@���JnR@��� tC@���"mR@���nC@���rR@���TC@���8vR@���DKC@���@X~R@����MDC@���PR@��� FC@���@ÄR@��� NC@���@R@���SVC@���dR@���LC@����ӶR@���:<C@���@7R@��� ,1C@���ײR@����.'C@���R@���C@���@xR@����FC@���R@���,B@���ƹR@���`qB@���@`R@���B@���ƹR@���B@����üR@���B@���R@��� B@���R@���B@��� /R@����5B@���`R@��� žB@���ǬR@���*B@���R@��� B@���IR@���`ܶB@���rR@���]B@��� hR@���B@���`gR@��� B@���iR@���B@���@-pR@���jB@���qR@���`B@���@TR@��� NB@���@IR@��� NB@����5ER@���B@��� 3R@����pB@���@x*R@���VB@��� /R@���~B@���@�R@��� gB@���Q@��� XB@���~Q@���� VB@���@_Q@���@^B@����Q@���B@��� Q@���B@���@`Q@���`_B@���Q@���B@���@Q@���uB@����Q@���B@���Q@��� B@���Q@���B@���Q@���B@���8Q@���C@���IQ@���`C@���;Q@����C@���Q@���3C@���ZQ@���@9C@���`Q@���� 5C@���߫Q@���0C@���*Q@���`*C@����gQ@���#C@���{Q@��� gC@��� 6Q@���dC@���� Q@���@B@���@Q@����B@����Q@���B@����Q@���@B@���ZQ@���B@���Q@��� B@���Y}Q@���QB@����zQ@���SB@����aQ@���@XB@���~XQ@���@XB@����hXQ@��� B@���@\Q@����pB@���PUQ@���`B@���OQ@��� B@���?Q@���dB@���9Q@���B@���);Q@���`qB@����9Q@���עB@���j6Q@��� B@���@3Q@���`GB@��� 4Q@���B@���)Q@���`B@���@!Q@��� B@���`aQ@����B@���nQ@����^B@��� NQ@���8B@���Q@��� B@���!Q@���B@����FQ@���\vB@����FP@���؁B@���P@����ۇB@���@P@��� NB@���P@���@ȗB@���`P@����B@���P@��� QB@���QP@���B@���@P@���B@���`P@���`�B@���Q@���`B@���` Q@����B@���Q@���)B@���@Q@��� QC@��� Q@���\C@���Q@���` C@���5Q@���"C@���` Q@���*C@��� Q@���`2C@����$Q@���R6C@���@Q@���@?C@����Q@���LEC@���(Q@���@MC@����Q@����4YC@���sQ@��� ^C@���QQ@���eC@��� Q@���@gC@��� Q@����]mC@���� Q@���`MsC@���@@Q@��� C@���\Q@���@}C@���P@���#C@���@@P@���}C@���fP@���C@��� P@���RC@����vP@���=C@���P@���C@��� P@����C@���#P@���zC@����qP@���ךC@��� P@���֜C@����xP@���`C@���@GP@��� LC@���QP@��� (C@���P@���oC@���P@���`�C@���`P@���C@���kP@���@C@���P@����C@���GQ@����C@���Q@���C@���JQ@���C@���@"Q@���`�C@���@Y"Q@���`)C@���%Q@���C@���Q(Q@��� C@���(Q@���C@��� !+Q@���C@���8.Q@����C@����0Q@���C@���1Q@��� aC@���1Q@���RC@�����4Q@��� lC@���24Q@����=C@���1Q@���RC@���@3Q@���`C@���6Q@���C@���`0:Q@���`C@���-4Q@��� 8C@��� 3Q@���D@���`B2Q@���` D@��� 3Q@���� D@���5Q@���8D@���`9Q@��� D@����?Q@���D@����@Q@��� D@���@.?Q@����D@���@E7Q@���@#D@���+-Q@���D@���`}&Q@���D@���s&Q@���D@���>)Q@���uD@���+1Q@����D@���}5Q@���D@����8Q@��� D@���BQ@���D@���`BFQ@��� D@��� OQ@��� HD@���TQ@���D@��� NQ@���$D@��� \OQ@���'D@��� SQ@���$D@���UQ@���`)D@���PQ@���[@D@���zMQ@����GD@����PQ@���@{KD@���BUQ@���MD@���pUQ@����z^D@���@VQ@���`kbD@���YQ@���@pfD@���c]Q@��� gD@����O_Q@���dD@���3bQ@��� dD@����kQ@��� RD@���@nQ@���QD@���tQ@���[D@��� 8Q@���`bD@��� ҇Q@���@iD@���Q@���mD@���DQ@��� urD@��� Q@���zD@���mQ@����D@���@Q@���@pD@���3Q@����ÄD@��� ԢQ@���}D@���@Q@���-hD@���@Q@����zfD@���ެQ@��� (fD@���`Q@���iD@���TQ@���GiD@���Q@���dD@����MQ@���bD@���Q@���`D@���Q@���\D@���Q@���ID@���Q@���\FD@���@ Q@���@D@���sQ@����;D@���`+Q@���`�7D@��� 6Q@���@{3D@�����Q@���70D@���:Q@���,D@���Q@���@.D@���෣Q@����+D@���Q@��� D@��� Q@��� D@���ԭQ@���`D@���෷Q@��� D@���۾Q@��� QD@����� ������dW=@���2t'���`:D@���@/��� ������������3������C@��� ���C@����.��� C@��� n���`ŲC@������ C@���J���`C@���@(���rC@���G���@C@���@���`6C@�������C@����i���֫C@������ UC@���w���{C@���""���C@�������vC@���`���C@������(C@���@��� ~C@������C@�������C@��� ��� C@���`���C@���@����C@���#A����C@���#��� C@�������zC@���` ���C@��� ����C@������`_C@���>��� C@���`���8C@���@j���C@���������C@������C@���$`����5C@���N[���'C@����8/���C@���K���C@���}���C@����y���mC@��� ���lC@���r���bC@��� ���C@���|���@C@���`���C@������C@��� ����wC@��� ����C@���؂���C@���`���`qC@���`���8C@���@j���`pl=@���`B���3=@���`���A=@������ =@�������=@���p���=@���f���`` >@���`M����>@������`05>@��� ��� ~A>@���v����U>@���~1���f>@���I��� s>@���Mb ���>@��� ���>@��� ����ɟ>@��� ����>@��� ���@z>@���`ff ���>@��� 9 ���>@���`B ����>@���`���>@��� ��� &>@�������>@���@&���3|>@��� o���j>@���`C��� u>@�������>@���t2���9}>@���@]���`�o>@��� f���mo>@���$���@>@��� 1���2>@��� ���C>@���@���Z>@���$`����>@������>@������9>@�������>@��� ���@ԅ>@����ף���x{>@���`g���1>@���@'���`M>@���@/����ql?@���@,���?@���`U���?@���`��� ?@�������@ @@����s���!b@@���@����w@@���#���`@@�������A@������A@���S���A@�������'A@���[���n~A@������A@������B@���@U����B@��� ���`%B@���;���`B@���"���nB@���>i���@(B@����~ ��� xB@���. ���B@���`+ ���`�B@���\ ���B@���@z5 ��� EB@���6 ���[C@��� p���QC@���F��� C@���e���C@����i$��� DC@��� hE���` C@������ C@���`ք���ǐC@���"���C@���`S���`C@���DD���@?C@���4���C@��� Yr���`C@���`���jC@���2T���cC@���,9��� xnC@�������kC@���4���@oC@�������*C@����z��� C@���N���ߛC@���`���`C@���>i���@C@���@3s��� fC@���@���ZC@���`*���C@���@���!C@��� ���KC@��� ~���\C@��� 0���'C@���`cI���@C@������ ,C@���@A����eC@������� C@��� ���`˥C@��� ���`ܦC@���!���:C@���!���C@���o!���C@����!���`YC@���!���߳C@���@!��� =C@����!����wC@���E!���C@���@"B"���bC@����2"���C@���@e"���@C@���"��� C@���"���cC@����"��� `C@���@"���@.C@���` X#��� ~C@���@I#��� C@����H#���C@���L#���`C@���`#���`YC@���@$���C@���#��� C@����$���@.C@����7p$���`C@�����@$���D@���\$��� %D@���$���`D@��� h$���D@���.$���3"D@���Љ$���tD@����L}$���`D@��� g$���-D@���$���[7D@��� $���s2D@����$���`:D@���$��� 7D@���$���@5D@���%��� #D@����`,%��� 0D@���`W%���*C@���S%���lC@��� h%���`C@����wW&��� rC@���@-X&���'mC@���j&��� VC@���&���$?C@��� &���@ C@���&����.B@���@A&���B@���&��� B@���`'����^B@���I'���ZB@���|s'���`qB@���@_'���B@����h'���@ԍB@���2T'��� NB@����l"'���@iB@��� $'���� VB@����n'���@DB@���2t'���B@����h'���B@���''���  B@���� '����wA@����&��� A@����w&���aA@���`-'���A@���42'���`A@���$'��� #{A@��� S%'���K{A@���@!'���`uA@���*&���biA@��� 9&���aA@���ࣰ&���`UA@���@S&���LA@���@&��� VA@���`~%���IA@����$���mGA@���M\$���@P9A@����#���"A@���`k"#���A@���-"��� @@���"��� @@���#���@@@����Mf#���@@���a*#���@@����8#���`@@���`+#����#@@���o>#���@@@����Q9#���j@@����|#���@@���"��� @@���#���ਃ@@���@"���@@���%"���Zx@@���@"���@hx@@���@"���@Xj@@���"���^@@����7"��� D@@���"���C<@@���4R"��� g@@���"���@?@���g%"���`?@���@"���n?@���!����?@���!���?@����!���`�?@���@Z!���`?@����!!���9?@���`!���e?@���FB!����$`?@���@*!���E?@���o>!����v8?@���@'!���+?@����0!����+?@���81!���5 ?@���@*;!��� ?@����9.!��� >@����c ��� >@����a ���f>@���$� ���@t>@���4R���a>@����"��� 5>@���Q���`=@������ތ=@���].��� %=@���@,���4=@������ơ=@���@K��� %=@���`:����ш=@���@����Y=@���8���dW=@���0���@Jn=@���@*���`pl=@���`B�����������!VX@���@����hZ@���t4@��������� ������@X@���@���`X@��� @����X@����n_ @���KX@���S @��� X@���1 @���X@����/ @���X@���`%?@���X@���U@���@X@���@���0X@����|c4@���X@���@O4@��� X@���`T4@���bX@���t4@���@Y@��� kY4@���8Y@���A4@���8 Y@���@(<4@�����Y@���a4@��� Y@����d4@����Y@���X4@���Y@��� ~14@���O!Y@��� %4@���0%Y@���Y(4@���`Y@��� 3@���Y@���`3@���`�Y@���r3@���$Y@���@]~3@����(Y@���3@���1Y@���@|3@���B9Y@���`3@���BY@���3@����)LY@���`3@���NY@����v3@���=QY@���C3@���@RY@��� y3@���LY@���` d3@���aRY@��� 3@���VY@���9 3@��� HPY@��� 2@���`NY@���@2@���5QY@���@ۯ2@���HY@��� 2@��� CY@��� Vt2@���EY@��� `2@���@KY@���fU2@���IY@���@A2@��� 6LY@����2@���`AY@���@ 1@���>Y@����1@���=Y@���@Ϊ1@���@:Y@���`1@���@:Y@���1@���WFY@���@1@���IY@��� v1@���`NY@���@ 1@����XY@����G1@���@cY@���`1@���@cY@��� 1@��� gY@���1@���nY@���1@���pqY@��� 2@���8uY@��� 2@���xY@��� 2@���Y@���@52@��� JY@���22@���`ŒY@���@^ 2@���ǥY@���`01@���6Y@���`)1@���೥Y@���Q1@���Y@���p1@���Y@��� 1@����Y@����2@���0Y@��� 1@����MY@���e2@���@Y@���@-#2@���Y@��� O*2@���Y@���m?2@���Y@���`L2@���$Y@���X2@���Y@���?h2@���kY@���[o2@���@@Y@���Z2@��� Y@���`G2@���Y@���T2@��� Y@���`N2@��� Z@���2@����Z@���1@����qZ@���^1@���@*Z@���1@���2Z@��� +j1@���@3Z@��� 11@��� 10Z@���E0@���51Z@���0@��� /Z@���0@����$<Z@���R0@���aAZ@���`<0@���BZ@��� 0@���@KZ@���0@���\ZZ@����0@��� ZZ@���@/@���aVZ@��� H/@���`R[Z@���9/@���`+fZ@����t/@���zhZ@���r[/@����hZ@��� 0/@���`ffZ@���.@���^Z@���@.@���^Z@����.@���eZ@���@ɫ.@���`+fZ@��� .@��� _Z@��� i.@���^Z@�����@.@���`gZ@���-@���^aZ@���z-@���`kbZ@���'-@��� H\Z@����L,@���@wMZ@���,@���HZ@���z,@����qDZ@����o,@���BZ@���~,@��� @Z@���C,@��� Z8Z@���Q,@���2Z@����q,@���-Z@���`#,@��� $Z@���,@����_Z@���,@����� Z@���,@���OY@���,@���Y@��� ,@����Y@���G,@���.Y@���`C,@���Y@����,@���`Y@��� b,@���OY@��� g,@���`ܺY@���5,@���`Y@���n+@���8Y@���+@��� Y@��� \+@���@ߣY@���N+@���`ڧY@���6+@���Y@����"+@��� Y@���$+@���`}Y@����ш*@��� Y@����*@���Y@���`)@���ǠY@���zT)@���Y@���@)@���`xY@���t(@���`)Y@���r(@��� Y@���@'@���@Y@���`L|'@���@Y@���OD'@���೹Y@���`}'@���OY@���'@���ǰY@���(@��� ZY@���].(@���`Y@���q(@���`vY@���@e(@���TY@���`(@��� Y@���@(@���`TY@����}2(@���Y@���e(@����Y@���|(@���@EY@���`(@���Y@���µ(@���`Y@���`(@���WY@��� (@���Y@���(@��� sY@���(@���Y@����(@��� 1Y@���(@���@Y@���@)@���@Y@���~)@���Y@���`C)@���}Y@��� V)@����v|Y@��� )@���vY@����M)@���pY@���`i)@����kY@���c)@���BiY@���J)@����_Y@���EC)@���@ZY@���,)@���@OY@���ZP)@���DY@���+Y)@��� <Y@��� 6)@���@E;Y@��� P)@���`7Y@���;K)@���5Y@���g)@���n6Y@���@)@���9Y@���Љ)@���@:Y@���ע)@���@@7Y@��� )@��� ;Y@���� *@����M8Y@��� 9.*@����d<Y@���Af*@���:Y@����)*@���`?Y@���*@���`d?Y@��� *@���@ ;Y@���*@���T1Y@���O*@����%Y@���`0+@���%Y@����T6+@���+%Y@��� +@���Y@���`)*@���Y@��� *@���@GX@���*@���@X@���v*@���`Y@��� *@���@X@���@i)@���Y@���&^(@���X@���1'@���X@���?'@���X@���]'@���`X@���_'@���X@��� &@����UX@��� H`&@���@X@��� Be&@���{X@���`);&@����DX@���%@���!X@���%@���@X@���%@����<X@���@%@���@`X@����$@���|X@���@;$@����X@���T$@���X@���`)$@���!X@���+$@���@ X@���q$@���`X@����h$@���X@���v8$@����UX@���̌#@���@FX@���S#@���`X@���"@���PX@���޼"@���@X@���"@����X@���Ws"@����X@���@`"@��� X@����k"@���@XX@���"@���@X@����"@����X@���Q"@���X@���%"@���X@���-"@���X@����!@���X@���5!@��� Y@���@ @���`� Y@���B @���@@ Y@���!@���`;Y@���@6 @����Y@���@���Y@����#@���=%Y@���@���Q$Y@���@��� !Y@����@���Y@���@-@��� Y@��� B@���Y@���@E@���`dY@����@����Y@����)@���Y@���@x@���JY@���e&@���?Y@���c(@���u Y@���@��� Y@���Sv@���Y@���i@���Y@���A@���&Y@���|@���aY@���@���@W#Y@���@��� &Y@���@@���`2Y@���` @���EBY@���_@���NY@��� .w@����SY@���`p}@���`�WY@���@@���RY@���H@����`Y@����t@���`rY@���`G@��� Y@���@���܅Y@��� 5q@���|Y@���@���@g|Y@��� r@����tY@���@0@����kY@����U@���`+jY@���`5q@���zdY@���@@��� RY@���7@����OY@���@���HY@���@���aEY@���`N@���AY@���\@��� ?Y@���`t9@���`GY@���S@����EY@��� @���@GY@���@���`dGY@���@���@W?Y@���`(@����<Y@���U@���6Y@���@���6Y@���@^M@����/Y@���`@���)Y@���@@��� Y@���`0@��� !Y@���@���Y Y@���@����) Y@���@���@ Y@���@����;Y@���`ѫ@���Y@���B%@���`Y@���@����5X@���ء@���X@���@@���X@���`@���X@���@@���X@���`z@���`X@���@���7X@���@����=X@��� .@���X@���@|@����X@����*@����^X@���@j@���X@��� x@����X@���`@���`iX@���.@���@X@���|@��� X@���#@���@X@����@����MX@��� @���X@���@���@oX@���`@���X@����@����X@���ͫ@����X@��� @���@oX@���� @���'X@���� @����#X@���@ @���֫X@���`( @���YX@���� @����X@��� @���@X@���� @���X@���J @���X@���@o @���@ܚX@���bI @���X@��� r @���@_X@���'!@����5X@���:,!@���͏X@����!@���@ X@���@!@���� X@���zt!@����EX@���� "@���৔X@���@X"@���`X@����<+"@���X@����#A"@���PX@����M#@���{X@���#@����]X@���%#@���X@���$#@���@X@���?#@����=X@���@g#@���ģX@���K}#@���:X@���@|#@���X@���'#@����X@���@ʮ#@���@FX@���H#@���X@���@#@��� &X@���@#@��� X@����q<$@����X@���@_$@���@X@����%@���� X@���TU%@����X@����ш%@���@6X@���?%@���KX@���9%@���@X@���@%@���X@���@3&@���X@���&@���@X@���5'@���[X@���@!B'@���`X@���`lA'@���JX@��� '@����X@���`'@����X@���E(@���@X@����B(@��� X@����(@���X@���`(@���@X@���h$)@���X@���)@���cX@���Z)@��� NX@���`*@��� X@���`Z*@���YX@���i*@���X@���*@���X@���l+@���X@��� V4,@���X@��� \o,@���@ܪX@���t,@���`X@���,@���X@���`/6-@���X@���@'-@����ьX@���\n.@����ۓX@���`).@���@xX@���.@��� X@���P.@���:X@���A.@���@ģX@���.@���@X@��� y.@����-X@���@r/@���X@���/@���`X@���@ 0@���X@���0@���(X@��� 0@��� X@���+0@���@iX@���a0@���[X@���`z0@���ϭX@���F0@���#X@��� H0@����X@���Ä0@���ஞX@���κ0@���@rX@���0@����X@����0@���X@���0@���X@���0@���X@���� 1@��� &X@��� 1@���X@���a1@���؁X@���@v1@���@XzX@����֔1@���rX@��� %1@����lX@���11@���@pX@���<1@����wgX@��� &>2@���tiX@���@ F2@���gX@�����P2@���dX@���S2@���aX@����C2@��� _X@��� NK2@���l\X@���fe2@���!VX@��� N2@���)WX@��� y2@���@Q\X@���I2@��� /bX@���]}2@���sjX@���2@���qX@���2@���`oX@���@2@���@ikX@���2@����^uX@����3@���uX@��� V43@���srX@���F3@���@uX@����*K3@���@rX@���Te3@����~X@���3@����=X@���`դ3@���X@���`_3@����,X@��� 3@���:X@����M3@���X@���e3@���@X@��� ̬3@����X@���@3@���X@���@3@���*X@���@3@����X@���@W3@���HX@���@ 4@���@X@��� 4@���lX@���4@���*X@���@%4@���@X@���@ 34@���0X@����|c4@����������� Rÿ����{e@���?���`NG&@���[���������� Rÿ���`NG&@���8?���G&@����""?���%@����K~?���@J%@���[?���@%@��� ?���` %@���s?���$@���?���#@��� ?���}1#@���`ff?����#@��� ?����E"@���@ϊ?���;"@���_ ?��� !@���?���@!@���Œ?����o @���?����ۿ @���@'?����. @���O?���`@��� G?���@r@���`?���`)@���?���`@���V4?���@����W?����@���?���@���%?���@@���@B?����{e@��� 7?���֣@���?���@h@���#?���O@���{?���YQ@���y?���`@���@?���@lY@���F?��� @@���?���M@���`` ?���@���q?���!@���0u?��� @���`N?���@6@��� ~?���`@����??���@���xV?���@����?���`W@���I?��� {@����?���@���?����@���`-?���@e @��� C?���� @���Œ?��� @��� H?���@ @���@p=?����/!@���?���A!@���?���2!@���G?����U!@���Sv?����!@���?����= "@���@?����"@���@?���z"@���`&?���@"@���S?��� "@��� j?���"@���`VP?���S"@���]M?���@"@���?��� "@���?����#@��� ?���#@���@?���$#@���O?��� #@����?���\.#@���X?���+9#@���`A?���.#@���2?���N#@���`&?���`(\#@����K~?����L#@���K]?���jb#@����ף?���Tu#@���8?���$@���@?���I$@���a?���;$@��� ?���@$@���`_,?���`ݝ$@���`?���=$@���1T?���`$@���D#?���$@���`ww?���,%@���@K~���@D%@���F����y%@����ף?���%@���?���`f&&@���&���` 5&@���E#��� 9&@��� Rÿ���`NG&@�����f�������e���Ft5���e����o2���(������"�����������>��_�������`e���2���@e���2��� e��� 2��� e���2���Pe����2���@We���g2���Ue��� 2��� ee���� 2���ye���2����e���2���e���`�2���e��� 2��� e���@2����e���P2���@we��� Q2��� Je����2��� !e���@*2���e���2���`e���@y2���e��� 2���e����2���`e����2���`te���2���Oe���2���`"e���@2���e���2���`e���42���e���`o2���`e����o2���`+e���2���Oe���g2���`oe����2���e��� 2���`e���2���@e���@D5���`e���D5��� e���D5���@Ne���2D5��� e����C5���e���C5����e���B5����e���@5��� e���H?5��� e���@=5���e���@P<5����e���@:5���-e��� e95���Oe���@>85����ve���>75���`e���65���e���55���e���f55���@`e���� 55��� e���@g45���e���35����e��� 35����2e���25���`oe��� 25���e���25���e���25���e���`[15���Le��� 05����e���/5��� e���4/5���e���`.5���`e���.5���8e���`I-5���Ze���,5���ze��� +5���`e���d*5���e��� e)5���e��� (5���`e���&5���@e���@%5���>e���@$5���@We���Z#5���ke���@G"5���ue���` !5��� ne���5��� je����]5���pe���@5����e���]5����e���=5����e��� e5���pe����5��� \e����f5���>e��� 5��� e����5���e���5���e���5���e���� 5���`ke���5���?e��� |5���e��� 5�����e��� H5����e���5��� e����o5���e���@G5��� e��� 5����e����5����$e���25���Ve����5���e��� 5���e���R5���e���`R5���`e���=5���`e���`)5���e���<5���@e���@5���e���5���`fe���o5����2e���`5���`e���`5��� e���5���e���`�5��� Je���5���e���5���e����� 5���e���o5���`}e���5���Oe��� 5����$e����]5��� e���5���e���p5���e���H5���ge��� 5���9e���`5��� e��� 5���e���!5���e���{"5���e���#5���e���@$5���`e���%5���0e���`f&5���Ye����f'5��� ne��� (5��� ne���*5���Ue���+5���@3e���`,5���`e���,5���e����),5���e���P+5���e���d*5���`]e���@)5���/e��� (5�����e���(5���e���` )5��� e���@r)5��� \e���)*5���@.e���+5���`e���+5���e��� ,5���`e����-5���e���-5����me���-5���Qe���@P,5���He���+5���He����*5���8e���)5���8e���'5���-e���`f&5����$e���� %5��� e����#5���e��� #5��� e���`"5��� e���!5��� e���`[!5��� ne��� 5���5e��� 5���0e���`o 5���e����� 5���e����� 5���`e���5���Ve���5����$e���`5��� e��� 5����e����o!5����e����h"5���e���#5���ue��� S%5��� |e���@ '5���e���@>(5���e��� e)5��� e���� *5���e���� *5���e���)*5���e����*5���� e���+5����;e���,5���`xe���,5���@e���-5���@e��� -5���`e���@p.5���e���/5��� Ae���05��� ae���15���e���25��� e���S45���e��� 65��� e���75���e����95���e���`);5��� e���<5��� e���;>5����e���?5���e���GA5���e����B5���e����C5���&e��� D5���Qe���D5���@e���@D5���`"e���ִ2����De���2���`fe��� 2���e���`ó2���e���`2���@e���@{2��� !e���@G2���e���2���e���`2���e���'2���e���@p2���Ze���\2���`4e���2���`e���`2��� e����42���e���ײ2����e���@g2���`"e���ִ2���e���@>3����Me���3���Xe���3���ze���@3���@e��� 3���e���@3���e����3���`e����h3���e���` 3���@3e���@3���Le���\3���Ye��� 3���ge���q3���ge���3���@We���*3���@*e����f3���e���3���@e���Θ3���e��� 3���@e���]3���e���@3���e���H3���e���3���`ke���@3���`Ke���3����e���3���e����3����e���3���e���@3��� e���3����e���3��� e��� 3���e���@>3���e�����3���e���=3���@e���=3���@e���Q3���e���3���e��� 3���e���@3���@e���g3���e���@G3���@e���@3���'e���`3��� !e���`̽3���e���@P3���e���3���e���@3���@e���`շ3���`e���3���e��� ?3���e����F3���@e���`3���@e���ִ3���`e����F3���`fe��� ?3����De���@ 3���`"e���y3�����e���3���e���`շ3��� e���θ3���e���`3����e���q3����e���଺3���e���]3����e���̼3���~e���;3��� |e���H3���ye���`43���pe���G3���ge���Z3���pe����3���~e���F3��� e����F3����e���3��� je���3��� \e��� 3���Ye���3��� je���3��� e���@3��� e���`3���e���@3���e��� 3���e���@3����;e���3���Ve���3���`xe���`)3���e���3���e�����3���@e���3���@*e���3���^e��� H3����e���@3��� e���3���e��� 3����e���3����e���<3���e���@3����e���@ͻ3���@Ne����=3���'e���=3���@e���Q3���e���*3���e���@ 3���`e��� 3���e����׳3���`e���3���_e���3����2e���`'3���e����43���e���{3����e���Z3���e���� 3����e��� ?3���&e��� 3���=e���@3���Oe���]3���Ze���3���`ke���3���`e�����3���`e���3���@e���3���Ye���Ft5���e���`s5���e���gs5���e���3r5����e���p5���e���4o5���`+e��� (n5���`Ke���l5����e���@Pl5���e���@k5���e����j5���e��� ei5���`e���g5���@*e���g5���^e��� ?f5���@Ne���e5���'e���2d5���e����b5���e���@`5���#e���4_5���0e��� ]5���@*e���[5��� e���@Z5���e���Y5���`e���X5���@e���W5����me���V5���?e����2V5���`e����FU5����e���FT5����e���S5���`e���Q5��� e���P5���e���4O5���e���`M5���e���@PL5����e����J5���e���)J5��� ee��� QJ5���@Ne����J5���@3e���K5���@%e��� L5���@*e���\N5���9e���O5���Ke���GQ5��� Je���R5���5e���`S5��� !e���� U5���`e���@U5���@e���V5���e���`RW5���e���@>X5���e����Y5���`e����Z5���e���<\5���0e���`]5��� 8e���_5���@.e���Ga5���'e���Zb5���#e���gc5���,e��� d5���@.e���e5���>e����e5���Ge���1g5��� Ae���h5���@<e����j5���@3e���k5���@%e���@<m5���#e���n5���e���o5��� e���`op5���@e��� |q5���e���3r5���,e����s5���Ge���2t5���Ye���Ft5���Կe���@2���ٿe���@g2����e���@g2���e���22���`e����2����2e���@G2���?e���2���=e���˯2���-e���`2����2e���;2���`Be��� 2���Xe���@<2���`]e���@2���Xe���2���ae���2����me���@ͫ2���`ke���q2���_e���2���Qe���ͪ2���&e���2���e����Ω2���пe���` 2��� ҿe���Q2���`e���2�����e���2���e���`f2���� e���@2����$e����ף2����$e���2���6e���@{2���`]e���{2���e���{2���`e���â2���e���F2���@e���@2���e��� 2���e���զ2���`e���@y2���e���`2���e���2���,e���� 2���Ue���2���ue���@2���e���q2���e���q2���e���ପ2���e���ପ2���e����2��� e��� 2����e���`f2����)e���2���=e���2���`Be���2���-e���[2�����e���@2���e���`�2���e���`�2��� Se���`�2���e���`�2���e���@p2���e���`I2���`e���2���e���d2���ze���2���`ke���2���He���@2���-e���z2���e����2����ܿe���Ò2��� e���32��� ne��� 2���0e���@đ2���e����o2���e���@đ2���`te���2����De��� 2��� e���`2���`e���� 2���нe���F2����Že���֔2��� e����2���e���2��� ae���`2���@Ee���`2���Ue����2���^e���2���>e���<2���@%e����2���@ e���ߞ2���e���|2���e���2���#e���Z2���@Ne���`ã2��� |e���Z2���e���32���e���@2����׽e���ෟ2���e����2����e��� 2����$e���`̝2���-e���H2���=e���@2����me���`42���e��� ˠ2���ࣾe���`2���e���2���Ve���2���Oe���@2���je���`R2���`e���2���`e���` 2���@ƾe���� 2���e���2���#e���@r2���@<e���2���@We����2��� ne���<2���@we���p2��� e��� (2���e���'2����e���[2����e���`2��� e���2���e���S2���Կe���@2������������`TN���@{$@���vN���@^%@�������������@N���@{$@���`TN���`L$@���DN���@dH$@���@N��� yU$@���N����)|$@���N���v$@���@|N��� b$@����N���$@��� N��� B%@����rN���M\%@����N���`/v%@���N����T%@���4N���@%@���vN���@^%@���xN���A%@���N���`^%@���N���@$@��� \N���$@����N���E$@���@|N���@ $@���N���`)$@���@N���@{$@�����������@w@���`n<>@���@*'@���DB@���������� ������@%@���@@���@%@����<@@����%@���@@���ty%@���s@@��� m%@���`@@���s%@���@@���`%@���`@@����L&@��� &@@���@%@���@@���@ '@���@8@@���&@���z@@���&@���ZP@@���@*'@���@>@@���`"'@���`8@@����'@���g4@@����%@���@@���%@����#@@���@?%@����v?@��� +:%@���;?@���`$@���c?@���`$@���`?@��� ߜ$@���?@���dG$@���?@��� %?$@���@(l?@����Ô$@���>@���7n$@����q>@����#@��� X>@���e#@���`n<>@���d"@���?@���J"@��� @@���ij @��� C@@���� @���`j@@���8. @���@@���@ @���n@@���[@���`@@���@����ɟ@@���@���>@@���� @���@@���@w@���)@@��� @���� A@���@���2A@���@@���`AA@��� [@��� 4A@����~ @���RA@���@ t @��� YA@���ē @���Z`A@���ԅ @���`tA@���@^ @���`A@���@ @���A@��� @��� =A@��� @���@äA@���ݝ @���@iA@���`o @���ஶA@���t @���A@���@8 @���A@��� @���A@��� @���VA@���I @���8B@���a @���`>B@����^ @���`CB@���@xv @���`HB@���� @���@SB@���@W @���@[B@���} @���c`B@��� @���aB@��� @���`0eB@���L!@���jB@���@P!@��� oB@����;!@����rB@���B!@���xB@����!@���@}B@���!@���B@���@!@���B@���@L"@���7B@���@d"@���௝B@���`"@����^B@���QX#@���DB@���#@��� B@���y#@���ǠB@���#@���1B@���@#@���B@��� #@���ϑB@���#@���@B@����#@���@WB@���ij#@���9B@��� $@���kB@���`$@���SB@���bI$@����^B@���`I@$@���!B@���Sw$@���B@��� V$@���`B@���$@��� oB@���1$@���hB@���``$@���lB@��� he$@���@iB@��� b$@���9eB@����t$@���eB@���@$@���\^B@���z$@���\B@���]%@���cB@����#%@���`AnB@���`%@���tyB@���@%@���B@���&@���sB@���>&@����eoB@���z%@����`B@���@ %@���D;B@���%@��� =2B@���`$@���`*B@���$@���B@����T$@���B@���@-8%@���A@���s%@���A@����%@���(A@���ڠ%@���@A@��� %@���tA@���]&@����A@��� &@���`NA@����L&@����5A@��� \&@��� ҷA@���&@���jA@���3&@���@A@���@K&@����A@����4&@��� A@���`%@���SnA@���`/6%@��� KA@���@$@����e?A@�����$@����7A@��� 9$@���`H(A@��� $@����vA@��� $@���@F A@����Z1$@���` @@����T$@��� @@���,$@���@@���V%@���|@@����o%@���!@@���q%@����@@���@-X%@���1@@���"%@���`@@����%@��� @@����L%@���`@@���%@����@@��� %@���@@���`&@���@@����-&@���s@@���@:&@���@@���@5&@��� %@@��� 1&@���֣@@���@jC&@����ɧ@@���<&@����@@���`Z&@���`@@��� 9n&@���2@@���@ '@���@8@@������������:@��� ,A@����5iF@���� E@���������B������ \:@���`D@���`0U:@���cD@��� `:@����5D@���:@���@XD@���:@���`D@���:@���`qD@���@;@��� E@����3;@���E@���\>;@���� E@���;@���1D@���h;@���`D@���@X;@��� D@���@;@���@?�E@���@W<@���D@���2<@���D@���@( <@���D@���;@���D@���;@����D@��� <@��� D@���@ 3<@���`D@���`<@���@pD@��� =@���@oD@���`=@���D@���� =@���D@���@=@���`D@���<@��� g}D@���<@����zD@���<@��� |D@����F<@���@?D@���e<@���!D@���`Y<@����D@���`<@���\~D@���-<@���ƉD@���<@���D@���B;@���@h|D@����};@���}D@���@ F;@���`XD@���:@���ED@���[:@��� =2D@���@:@���7'D@����Y:@���@XD@���jR:@��� D@���@].:@���`D@���?(:@��� D@��� UE:@���`D@��� U5:@���(D@���@:@���� >D@���:@���`JD@��� &:@���@QD@����w:@���@hTD@���Y:@����MD@���i#:@���KD@���B:@����MD@����:@���^D@����:@���_D@���@X":@���dD@���23:@���`jD@��� 4:@���nnD@���S:@��� xD@���!R:@���D@���s:@���`D@��� &:@��� D@���@ :@���uD@���:@���8D@����~:@���� D@��� \:@���`D@���`D@���`D@���@D@���@ӶD@��� =D@���D@���.E@��� D@���@E@��� D@���DKE@���D@���\E@���D@���|jE@���@D@��� dE@���PD@���`qlE@���D@���qE@���D@���`E@���D@���E@���ID@��� ҏE@���`D@���E@���`D@���@ԝE@���@ӖD@���E@����D@���E@��� OD@��� E@���`D@���E@����^D@���`E@���D@���E@���@~D@���`/E@���(dD@���sE@���VD@���E@���Z8D@���E@����2D@���@E@���2+D@���LE@��� gD@���E@��� ,D@���1E@��� D@���*F@���D@���#F@���D@���'EF@���C@���PF@���QC@���cF@���sC@���`eF@���`kC@��� gF@����EC@��� eF@���HC@���MF@���C@���L<F@���tC@���`B5F@���nC@���d'F@���C@���F@����C@���`_F@���`C@���@X F@���IC@��� F@����C@���gF@���`HC@��� F@���rC@���B%F@���� nC@��� 'F@���chC@���b!F@����_\C@���`(F@��� xNC@���`&F@���7C@��� )F@���c0C@���l8F@���@X2C@���@'=F@���`Y)C@���`qF@���B@���mF@���"B@���(,F@���`B@���5F@���`B@���DF@���B@��� 7OF@���B@���mGF@����B@���KF@���`B@���fF@��� ,B@����5iF@���`B@��� bF@��� B@���eF@���B@���dF@���B@���@QF@���`B@��� CF@���dB@���,F@���`/B@���`(F@���:|B@���` F@���J~B@���@PF@���8B@����F"F@���@pB@��� ~!F@���B@���`F@��� `B@���F@��� B@��� �F@���QB@���E@����_B@���E@����pB@���CE@���|B@��� 7E@���`B@���|E@���cB@���@yE@���`GB@���dE@����5B@���]E@���B@���LE@��� B@����.E@���`B@���1,E@��� B@���E@����B@���E@���@=B@����$E@���+B@���D@��� B@���DD@���؉B@���D@���@B@���DcD@��� %B@���;3D@���~B@���`/D@����jB@���`C@���@-`B@���8C@���sYB@���@XC@��� 0UB@��� &nC@���@PYB@���\C@����YB@���`2C@���`rB@���@.C@���sB@���B@���baB@���B@���`qTB@��� B@���QB@���@QB@����_TB@���؉B@���@OB@��� B@���:TB@���B@���r[B@��� OzB@���`bB@���`TB@���`jB@���`FB@��� ?B@���@XJB@���D3B@����.OB@���@-B@���ZXB@��� $B@���`XB@���B@��� GB@���B@���@.?B@��� B@���l8B@���jB@��� 0B@���B@���/B@���B@��� B@��� A@���JB@��� ,A@���3B@���lA@����B@���A@���,A@���`A@��� yA@���mA@���@A@����eB@��� DA@���%B@����A@���@p-B@���`B@���`HHB@���`B@���`RB@���@XB@���@bB@����# B@���:tB@���*B@���vB@���`A@��� =bB@���A@��� ZB@���A@���XB@��� A@��� \B@���bA@����$PB@���� A@���KB@���@A@���!JB@���@ۿA@���SNB@���`A@����<KB@���A@���EB@���@~A@��� [B@���{cA@���@gB@���KMA@���dB@���@%A@��� KB@��� O A@����M4B@��� A@���`(B@����A@���`%B@���{@@���B@����v@@��� !B@���@@���`'B@���@F@@���B@���Q@@���B@���`@@���`B@���@@���@.B@��� y@@���B@���j@@���B@��� @@��� B@���@-x@@���`q B@���g@@���`B@���`6@@��� OB@���@"@@���`%B@���@@���` EB@���c?@���SB@���O?@��� gB@���>@���@lB@����ʮ>@���PqB@���@ԕ>@����fB@���>@���@NB@����>@���IB@���<z>@���3B@���@|>@���@$B@���@-h>@���B@���r[>@���"B@���`8>@���`&B@��� U%>@���@%B@���`>@���SB@���@=@���@B@��� =@����B@���@]=@���@B@���aj=@���BB@���` e=@���!B@���@Q=@���`B@���@=@���` 5B@���=@���`AFB@��� =@���KEB@���@ =@���QB@���=@���lPB@��� =@���WB@���`<@���Q`B@��� [<@���QB@���J<@���LB@���@<@���`KB@���<@����UB@����<@��� \B@���`R<@���qYB@���<@���`YiB@���dw<@����gB@���gu<@���`pB@���Z`<@���`qlB@���`k<@���chB@���@ f<@��� dB@��� M<@���jB@���@zD<@���zlB@���;<@���@ofB@����H<@���`\B@��� ,9<@���YB@���`<@��� xNB@���;@���`FB@��� y;@���@hLB@���@ <@���`LB@���`/<@���QB@���r <@���XB@��� N;@����WB@���7<@���\B@���<@���`bB@���<@���@eB@����<@���dB@���;@���`_B@���``;@���``B@��� ;@���YB@���@;@��� DTB@���;@���SVB@���g;@����TB@���@[;@���`ZB@���:;@���@eB@���@X;@��� cB@����;@���`gB@��� <@��� ffB@���`0<@���mB@���� <@���qB@���@ <@����wwB@��� %/<@���`wB@���hD<@���؁B@����S<@���DB@���R<@���@…B@���;@���2B@���;@���~B@���V;@����eB@���@E;@���@XzB@���9;@���B@���iS;@��� B@���x;@���`B@����*;@���` B@���Z;@���3B@���;@���B@���Z;@���`B@���w;@���@۟B@���;@���@B@���j;@���@B@���`b;@���rB@���7o;@���@B@���j;@���B@���@ S;@���IB@���`3;@��� B@���3;@���B@��� 1;@���B@��� ~;@���B@���` ;@���@B@���6;@���`B@���@?;@����B@����D;@���`GB@����06;@��� B@��� ;@���`YC@���::@���ZC@��� :@���C@���@:@���C@���@:@���`C@���`_:@���9 C@����:@���:C@����LM:@���@C@���;:@���3"C@��� Q:@���+C@���^:@���@.'C@���Py:@���@.C@���ł:@���`6C@���`m:@���1<C@���@^:@��� FC@���`X:@���PC@���ch:@���`/VC@���e:@���sRC@���@X:@���@C@���@:@����;C@����:@���2+C@����:@���['C@���:@���(4C@���:@��� U5C@���`:@���@p-C@���t);@����8C@����:@��� :C@����:@���`q<C@���:@���FC@����:@���1LC@��� ,:@���SC@���r:@��� y]C@���:@��� `C@����:@���`6hC@���I;@���7oC@���J;@���vC@���`:@���*zC@���@(:@���`C@���:@���`C@���:@���@WC@���;:@���C@���`:@���C@���:@��� OC@���ע:@���`AC@��� :@���`C@���@:@���:C@����:@���@½C@����:@���C@���`:@���aC@���@^}:@���C@����F":@���@C@���`:@���1C@����:@���sC@���`':@���@C@���r+:@���C@���E3:@����D@����#Q:@���D@���`eg:@���`D@���h:@���D@���ł:@���iD@���`*:@���3D@���@;@���2D@���@;@����59D@���F;@���z<D@���`S;@���@4D@��� &N;@���t1D@����F;@��� %'D@��� ;@���@-(D@���G;@����/D@��� [;@����=D@���`;@���`BD@���@;@���CD@����<@���`>D@���<@���;D@����;@���@2D@���@;@���.D@���@Wc<@���@F2D@���I<@���1D@���O =@���.D@���%=@���6D@���=@����<D@���r<@���!BD@���<@���FD@���`<@���*RD@���@i=@���WD@���`=@���`]D@���=@��� WD@����M=@���taD@���`w=@���`cD@����*[=@����#aD@���T=@����$hD@����}=@���2{D@���=@���@D@����=@���D@���>=@���`/D@���c=@���UD@���`2>@��� D@��� G>@��� D@���>@����D@���4>@���؉D@���F?@���`ݍD@���g?@��� ,D@��� Ue?@���@.D@���`?@���aD@��� @@��� gD@���$@@���`D@��� S@@����D@���@@����$D@���@F@@���`�E@���7A@���`D@���@<A@���)D@��� [A@���D@����jA@���D@���`A@���I E@��� A@��� E@���A@���`E@���A@���`D@���A@��� &D@���`A@���D@���A@���`HD@���`A@��� D@���A@����D@���B@����D@���B@���D@���`#B@��� `D@���`6B@��� D@���`>B@���ID@��� fNB@���zD@���@dB@���௭D@���uB@���D@��� B@��� =D@���9B@���`ʖD@����B@���!D@���zB@���`D@��� B@���`D@���B@��� D@���mB@���kD@���`B@���D@����5 C@���{D@���>C@���uD@���@nC@���ƁD@���ޔC@����D@���C@���JD@���C@��� D@���`C@���� ~D@����^C@���`zD@���`C@���@|D@��� &D@��� UuD@���`D@���IwD@��� 2D@���`D@���ED@��� D@��� cD@���D@���@.wD@���`D@����D@���)D@���*D@���@-D@���`D@���`D@����� ������8J@����A@���@P@���fE@���t���������8J@���KD@����vJ@���` E@���J@���E@���`BJ@���fE@����=J@���@"E@���J@���%E@���oJ@���,E@���kK@���`*E@��� .K@���@E@���kaK@����E@��� uzK@���D@��� uzK@���@#D@���`|K@���D@���`vK@���<D@���$K@��� D@���K@��� HD@���K@���D@���{K@���D@���K@���D@��� K@���3D@���LK@���fD@��� K@���D@����K@���`D@���@K@��� D@����]UL@���D@���iL@���RD@���`fL@���`D@���@͋L@����4D@���@L@���@D@��� CL@��� aD@���zL@���`ûD@��� L@���D@���|L@���D@���`RL@��� D@���@|L@���@D@���8}L@���GD@���`RL@���D@���`vL@���2 E@����L@���E@���L@���@pE@���� L@��� E@��� HL@���E@����BL@���eE@�����L@���`kE@���L@���@pE@���@L@���`[!E@���@WL@���`�/E@���`BL@��� 8E@����)L@���9E@����MM@���@E@��� M@���@E@��� M@���`);E@���M@���<E@���F+M@���8E@���4M@���1E@��� 4M@���@%E@���`[AM@���&E@���@AM@���(E@����49M@���[0E@���Q(M@���.FE@���M@���LE@��� QM@����PE@���� M@���qSE@���%M@���GYE@���6M@��� TE@��� HM@���TE@���LM@���`dE@���@ OM@���fE@���fM@���QE@���@yM@���8EE@��� M@��� CE@���@M@���BEE@���M@���@9E@���ǡM@���@/E@����qM@���,E@����M@���F+E@���M@���z%E@���.M@���G)E@���M@���Q(E@���BM@���@&E@��� uM@���$E@���@>N@���@E@���`�M@��� E@���`)N@���E@��� M@���`RD@����zM@���zD@���M@���`)D@���N@���@D@��� N@���\D@��� N@���QD@���@3#N@���@D@��� N@���@D@��� N@���@ D@���N@���D@���@G N@���D@����N@���@D@��� N@���D@��� N@���ࣸD@��� N@���D@���@W+N@���@D@���>N@���@D@���=ZN@���` D@���`gN@���D@���WzN@��� ҟD@���7N@���D@���<N@���`vD@����N@���VD@���N@���\D@���)N@���஝D@���fN@���uD@���N@���D@���zN@��� D@��� RN@��� D@���`N@���fD@���\N@���`D@���`BN@���=D@���WN@��� LD@���N@��� D@���`vN@���lD@���pO@���\D@����q O@����SD@���O@��� JD@���O@���8>D@���@3#O@���<D@���z-O@���`5D@���8-O@��� /D@���`k2O@���`)D@���4O@���`VD@��� l8O@����D@���@5O@���f D@����v8O@��� D@���JO@����qC@��� hO@���@gC@���O@���{C@��� aO@���aC@����=O@���aC@��� ! P@���=zC@��� P@���zC@���P@���`~C@��� P@���`VmC@���@*P@���^C@���@.?P@���7PC@���`RP@��� 4C@���8fP@��� C@����oP@���C@���uP@���`#C@���LyP@���@#C@��� \P@��� C@���P@���8C@���`kP@���`BC@����;P@����C@����qP@��� C@��� !P@���C@����P@����C@���5P@���e�C@���@P@��� B@���@P@���B@����P@���uB@���sP@��� B@��� P@���B@���P@��� B@���P@��� B@���P@���@ͳB@��� {P@���@%B@���@`P@���kB@����FrP@����B@���qP@���`_B@���@lP@��� B@���@giP@���B@���%hP@���@B@���aP@��� ҟB@���DP@���IB@���3P@���`B@���`1P@���CB@���@2P@��� &vB@���@`'P@��� PB@����-(P@���:B@���$P@���-B@����^P@���B@���P@���`B@����P@��� rB@��� P@���@pB@����P@���D B@���@P@����B@����O@���B@���:O@���`)A@����O@���`qA@���`O@���@A@���IO@���SA@��� UO@���A@���O@��� A@���1O@���#A@��� &O@���A@���OO@��� ̜A@���:O@��� A@���'O@����A@��� ,!O@���`A@��� O@���A@���`qN@���A@���N@���A@���N@���A@���N@���{A@���@ӮN@����A@��� N@����A@���`N@���@pA@���[N@���A@���N@���CA@���N@���B@���N@���&B@��� =N@����F2B@��� HN@����GB@��� N@���2SB@���.N@����RB@���`N@��� B@��� M@���ِB@���dM@��� B@��� M@���B@���M@���B@����M@���`B@���M@��� B@���@PM@���KB@���M@���B@���M@���B@��� vM@���B@���cM@��� B@���EM@���B@���?M@��� B@���9M@���`B@���M@���B@���`YM@��� B@���`M@��� fB@����L@���1B@���`L@��� B@���L@����B@���L@��� C@���L@��� #C@��� L@���#C@���@L@���C@����mL@���C@����`L@���z$C@���@XL@���*"C@����DL@���"C@���`Y1L@���C@����(L@���`/C@���'-L@���@C@���)L@���` C@��� K@���`G C@���8K@���`C@���`K@���` C@���K@���`6�C@���`jK@���`B@��� %gK@��� B@����XK@���`ֻB@���FK@���B@���K@����B@���gJ@���B@���`J@����B@��� %J@���B@���{J@���7C@���J@���BC@����^J@���KUC@����^J@��� rC@��� J@���`6xC@���J@���@vC@���`J@��� C@����J@���{C@���J@���`C@���J@����C@���J@���C@���IJ@���!C@���@J@���C@����5J@��� C@���J@���@?C@���J@���UC@���{J@���C@���J@���PC@���@.J@����C@���ΊJ@���rC@���J@���`C@���J@���1C@���֛J@���\C@���'J@���`C@���8J@���`C@���`J@��� `C@��� OJ@���DC@��� ,J@���@C@��� J@���C@���J@���@?C@���J@���(C@���`J@����C@���J@���`C@���J@���C@���J@���`C@���� J@���C@���J@��� C@���βJ@���`6�D@���J@����$C@����MJ@���@C@���`~J@���`qC@���uJ@���D@��� rJ@���RC@���@J@��� C@��� f^J@���7D@���3bJ@���D@���ZXJ@���"D@���`ZJ@���`+D@��� %oJ@���WD@���iJ@��� [D@���@?pJ@���iD@���uJ@���sD@����{J@���@oD@���@zJ@���ǀD@���J@���ZpD@���@ۇJ@���jD@���JJ@���@FbD@���J@��� aD@���٠J@���@-hD@��� J@��� >aD@���`ŪJ@����bD@���J@��� iD@��� ,J@���iD@���`J@���@WcD@���J@���K]D@����eJ@���`bD@���@J@���lD@���`_J@���|rD@���J@����mD@���`J@���`GQD@���cJ@���`ND@��� J@���@pUD@��� K@���`SD@���1 K@���lXD@���K@���D[D@���SK@���\D@���K@����WD@����2K@����UD@���6K@��� \D@��� 'K@���(\D@���@X"K@���` mD@���(K@���vD@���@<K@����mD@���Z8K@���`6hD@���S>K@���SfD@���`[K@���lpD@���`GaK@���|D@���@VK@���ൈD@���bK@���D@��� LK@���@-D@���`HK@���D@���J@���@D@���J@���)D@��� UJ@���`6�E@��� =J@��� E@���J@���@E@���J@���`E@��� J@��� E@���`NJ@���: E@���J@����$E@���@WcJ@���D@��� bJ@���`qD@���`pJ@���tD@���`0uJ@���`qD@���biJ@���D@����#iJ@���D@���tJ@���D@���qJ@���`YD@���`qlJ@���D@��� dJ@���`D@���@GJ@���@D@���`NKJ@����<D@���@JJ@����D@���8J@���KD@������������ 1mR��� O4@���-@R��� U5@��������������kjR��� O4@��� 1mR���5@����BjR���s 5@���iR���`5@��� fR���[5@��� 1YR���@:5@���gQR���i#5@����ZIR���@].5@���DR���Q5@��� AR��� U5@���-@R����O5@����9BR���`$5@���yIR���4@���\R���4@����kjR��� O4@����� ������` =@���\n���VA@����@�������������@@���_~?��� @@���`a?���@@���_,���`@@��� Pܿ���`@@�������w@@���#���!b@@���@���@ @@����s��� ?@�������?@���`���?@���`U����ql?@���@,���`M>@���@/���1>@���@'���x{>@���`g���`)[>@���= ���G>@���]n���I/>@���`ff��� +>@���`o����=@���\n���=@���K���!=@��� k���C=@���N���=@���)���` =@������@ڠ=@���q���@=@��� ���@=@���O���`=@����x޿����+=@���V޿���`=@���Gh���@=@�������w=@���'}?���=@���o?���Z=@���]M?���=@��� ww?���e=@���.?���=@��� Q?���`>=@��� J?���`R7>@���?��� N;>@������?���@.G>@���ó?��� U>@���l?���=Y>@���@D#?���x>@��� ?���@y>@���`r?��� ~>@����r?���b ?@���??���`M?@���@�@���G?@���i@����G?@���l@���`3?@����U@���j2?@����Xr@��� ?@���\n@���@?@����@���>@���CD@����F>@��� gE@���>@���@���>@����2@����>@��� @���@>@��� @���t>@��� e@���;>@���@S@���>@���-@���2>@���`@����|>@���@���@>@��� e @���>@���`4 @���`W>@��� @���g>@���n^ @���9-?@���@\@���I?@���@[@���s?@���: @���t?@��� @���?@��� V @���r?@���/@���8?@���` @���D?@��� @���,@@��� @��� @@���B @���`@@���R @���@@@���B @���`3@@��� @��� [@@��� @���!@@���@����@@���@ @���*@@����@���`@@����@���`�A@���@���`A@����@��� A@���< @���@iA@��� @����A@���t@���`A@����&@��� A@��� V4@���!A@���J@���S&A@���@ @���@p-A@���` @��� N;A@����_ @��� O:A@����~1 @���`3A@��� @ @���!:A@���t @���@GA@���@����KA@���@����TA@���@���_A@����@���@ikA@���@@���wA@���8@���cxA@���@���pA@���@M@���xA@��� V@���[A@����@���T}A@���a?���VA@���`.?���`A@���?���A@���`H?��� geA@����;L?���3jA@����I?���@hA@���ó?���MA@��� Ί?���IA@���@z?��� CA@���`?���`4A@���]M?���B%A@���@?���b!A@����?���@zA@���`:L?���` A@���,?����A@���U?���@@���_~?�����������`&6@���2F@���`�D@����0J@���>���������7@���I@���f7@���I@���@͛7@���@I@���ପ7@��� I@���7@��� I@��� 7@���aI@���27@���@I@��� 8@���@I@���G8@���@pI@���`4P8@���GI@��� e8@���`I@����8@���I@��� -9@���I@���>9@���I@����q\9@���I@���9@���,I@���� 9@���@I@���9@���7I@���� 9@����I@���`:@���pI@���H.:@���`BI@���o:@���I@���`op:@���` I@���� u:@��� I@���R:@���I@���:@��� I@���y;@���{I@����.;@���`I@���@4;@���I@���@33;@���`I@���L;@���`I@���G;@���I@���r;@���I@���`x;@��� I@���@3;@���I@���@>;@����I@����;@���@>I@���@ͫ;@���I@���4;@���I@���G;@���I@���;@���@WI@���`;@����fI@���{;@��� \I@���@;@���I@���<@���QI@���`"<@���@GI@��� H0<@��� QI@���3B<@���I@���B<@��� I@��� V<@���I@���[<@���I@���y<@���3I@��� <@���I@��� <@���׹I@���`�<@����$I@���<@���I@����<@���ܵI@���<@���I@����<@����]I@��� <@��� I@���e<@����I@���`<@���@I@����<@���I@���>=@��� CI@���= =@��� I@��� S=@���I@���@/=@���\I@���z4=@����I@���H>=@���I@���`4@=@����I@����q<=@����I@���*H=@����I@���`'P=@���GI@���@Z=@�����I@��� h=@����I@���{=@���`I@���@=@���I@���*=@��� I@���'=@���`I@���q=@����ܿI@���=@���HI@���Z=@����vI@���`=@��� ҷI@��� S=@���@I@��� =@���I@���=@���`BI@���(->@���I@��� Y>@���I@���@Y>@���ܭI@���U>@����)I@���@Gb>@���`RI@���u>@����I@���z>@���`I@���>@���[I@���Z>@���I@���� >@���I@���@>@���@I@���@ġ>@���zI@����ä>@���`vI@���>@���BI@���@>@��� I@���>@���@#I@����>@���I@���@ؐ>@���I@���� >@���I@���>@���I@���அ>@��� I@����>@���I@���z>@���I@���>@�����I@��� >@���GI@���@ؠ>@��� I@����F>@��� I@���>@���@I@���*>@���I@��� >@���`I@����>@���uI@���4>@���@I@���>@����I@���@>@��� I@���>@���I@���@>@���I@���`>@����J@���>@���@3J@���@p>@��� CJ@���`>@��� LJ@���>@���-J@���>@���a J@��� e)?@��� J@���`o@?@���@J@���`G?@���`�J@���M?@��� J@���\?@����J@���?@���@ J@���@?@����M J@���y?@���@J@���(?@���J@���a@@���`RJ@���`@@���J@���@@���) J@��� L&@@����J@����*@@��� J@���+@@���VJ@���u1@@���� J@���-@@��� 'J@��� u2@@��� *J@���[@@@���7(J@���`F@@���(J@���`]@@���u!J@���n@@���@"J@���8v@@���@J@���@@���(J@��� C@@��� 'J@���3@@����0J@��� @@���-J@��� Dz@@���`.J@���u@@��� +J@���෿@@����.J@���@{@@���z,J@���@@��� 'J@���@@���%J@���#@@��� L.J@���@@���@+J@���@@@���(J@���8@@���`%J@���@@@���J@����BA@���J@��� A@���qJ@��� A@���J@���`[ A@���J@���eA@���I@����A@���I@���A@���@I@���A@���I@��� A@��� I@��� &A@���I@���@*A@���`I@���&1A@���I@���e8A@���3I@���`v7A@���`I@���2A@��� I@���A@���$I@��� A@���BI@���`V A@���I@����qA@����vI@���RA@���`MI@���@A@���@I@��� A@��� ¶I@���A@���I@��� A@��� I@���8&A@��� 8I@���@>(A@����qI@���@#A@����]I@���A@����4I@��� 'A@���I@���0A@���I@���DA@���@I@���QA@���`�I@���UA@���I@���^A@���I@���zuA@���=I@����zA@����qI@���qA@���I@���uA@���VI@���oA@���@љI@���`A@���I@���ܕA@���`�I@���A@���I@��� A@���I@���A@���aI@��� A@��� I@���$A@���zI@���A@��� xI@���`BA@���vI@��� (A@���@oI@���@A@����)lI@��� A@����fI@��� uA@��� bI@���A@���XI@���A@���VI@���aA@���@QI@����ܷA@���@BI@���@ͻA@���z=I@����A@��� 9I@���jA@���[0I@�����A@���`,I@���LA@���8-I@��� A@����1I@���`A@��� u2I@���A@���`6I@����B@���78I@���@B@���@p6I@���B@����=3I@���@B@���@W3I@���@GB@���`.I@���&B@���@g$I@��� (.B@���� %I@���4B@���-)I@���`AB@��� #I@���@HB@��� a#I@���@EB@���I@���GB@���I@���PB@���`)I@���@3SB@���@{I@���YB@���)"I@���8eB@���`&I@��� |B@���,I@��� †B@���+I@���B@��� ,I@���B@���@>0I@��� lB@����6I@���`B@��� H8I@���FB@���@33I@���HB@���,I@��� B@��� 'I@���zB@���I@���3B@���I@���@B@����= I@���@pB@���`)I@���C@���`H@���=C@����H@����C@���`H@���B C@����$H@����C@����H@���C@���H@���#C@���H@���C@���eI@���7(C@���`[ I@���`)+C@���I@����$0C@���`fH@���@#:C@���@H@����?C@���H@���2LC@���`H@���=RC@���{H@���WC@���LH@���YC@���`H@���-aC@���H@���@qC@���H@���xC@��� \H@���ۈC@���H@���`C@����$H@���C@���[H@���`C@���@>H@��� ®C@���@H@���jC@����H@����C@����H@���WC@���H@���C@����H@���kC@���H@���-C@���RH@���7C@���-H@����D@���H@���DD@���`kH@��� D@���H@���D@��� H@����D@���8H@��� a D@���\H@���D@���pH@���`�D@���שH@���D@����MH@����]D@��� ҟH@����BD@���`H@���{ D@����H@����C@����܏H@���eC@���H@���-C@���@ H@���C@���H@��� C@���|H@���@C@���xH@���3C@����sH@���8C@���qH@���<C@���nH@����]D@���rH@���` D@���#qH@���@ D@��� nH@���D@���hH@����C@���� eH@���C@���GiH@���@C@���hH@���C@���`bH@���C@���aH@���C@���j[H@���@C@���VH@���@C@����NH@���C@���FKH@���`BC@����JH@����C@��� \GH@���C@��� @H@���`MC@���`=H@���C@���8H@���`C@���@ /H@���aC@����=+H@���C@���[(H@���C@����#H@����C@��� &H@���QD@���-!H@���@ C@���H@����fC@���`MH@���uC@���H@��� C@����zH@���@.C@���8H@���@WC@��� aH@���C@��� G@���C@���`VG@���$C@��� G@��� QC@���`kG@���C@����G@���C@���qG@���C@���3G@���2C@���`2G@���uC@���@G@���@;C@����G@���rC@���$G@���`MkC@���(G@����)dC@��� QG@���`C@����G@���XC@���G@���MC@���@G@���u9C@��� lG@���q+C@���G@���@#C@���G@���$C@���`G@����C@���ۨG@���(C@����G@����f'C@���`fG@���(C@���`G@���(C@����G@��� C@���G@���`pC@��� G@���kC@���`G@��� C@���G@���C@���@FG@����B@���G@���tB@���oG@���`B@���`sG@���@FB@���`vG@���`sB@���QhG@���`cB@���`QG@����fB@���[G@���`_B@���aG@���NB@����<cG@���`-B@���PYG@��� O"B@���KMG@���B@���TG@���B@���`UG@��� %A@���`NG@���A@���?G@���\A@���`8G@��� DA@��� G@���`ݕA@����#G@���`6A@���`G G@���@o~A@���@ G@����vA@��� fG@���A@���G@���[A@���s*G@���ءA@���@p-G@���UA@���7G@���A@���@p=G@���A@��� f>G@��� A@���@X2G@��� xA@���@%G@����vA@���G@���rA@���` G@��� gA@���G@���iA@���B G@���yA@��� F@���A@���2F@��� ~A@���`F@��� =A@���F@����MA@���DF@���`A@��� F@���A@����F@����A@���`_F@����5A@���F@���`B@���SF@����B@����F@���'B@���`ĻF@���&B@��� F@���LB@���8F@��� QB@����$F@���PB@���`F@���>B@���DF@���`6B@��� ,F@���9B@���F@���@.B@���`F@���B@��� F@���`A@����eF@���A@���`~F@���A@���`ʆF@���tA@��� fF@���A@��� %F@���A@���ൈF@���sA@��� `F@���7A@���@F@���SA@���`/~F@��� xA@��� xF@���`A@���i{F@���@WA@��� OrF@���A@���fF@��� A@��� dF@���*zA@���`NkF@���`qDA@���`F@��� 7A@��� ~YF@���|*A@���EF@���@F"A@��� gEF@����A@����w?F@���`�A@���2F@���@h@@����2F@���@@���`BF@��� %@@���iKF@���@@���NF@���@@���`RF@���`/@@��� YF@���|@@��� cF@���@@@����jF@���@@���@oF@��� &@@���|F@��� x@@���@pF@��� @@��� F@���\@@���F@���Rw@@��� F@����$h@@���`ݭF@���jR@@���F@����$@@@���`qF@���>@@���F@���tI@@���@½F@��� i@@���`F@���j@@���@pF@��� `@@���@F@���@@���F@���@@����F@���`@@���`/F@���Q@@���(F@���@-@@���F@���[@@���F@���`@@���F@���@@��� G@���@@���G@���[@@���G@����5@@���[G@���s@@���!G@���@@���ZG@���Κ@@���G@��� f@@���`G@����@@����G@��� @@����G@���`n@@���`G@����5A@@���@ G@���!@@���`HG@��� %@@��� &G@��� ?@���@?(G@��� ?@���#G@���9?@���#G@���j?@����'G@���?@��� )G@���?@���'-G@���@@���@2G@��� �@@���9G@���I?@��� >G@���` ?@���>G@��� &?@��� %7G@���ł?@���jJG@���`?@���`CG@����-@@���:G@��� 6@@���>G@���5@@��� DG@���F@@���LG@���)@@���@.GG@���J@@���`0MG@���@@���GG@����L?@���:TG@���?@���gG@����M?@���BmG@���@@����ewG@����?@��� ~yG@���a?@���`GG@��� &?@���G@����?@���G@���?@���`G@���%?@���aG@����?@���G@���?@���~G@���?@���G@���?@���@yG@���?@���\vG@���t?@����uG@���?@���mG@���?@���!jG@���?@���dG@���`?@���B]G@���?@���sRG@��� %?@���`NG@���?@����<SG@����?@���`NG@����y?@���RG@���`?@���UdG@����?@��� iG@���` ?@���^G@���@-x?@���aG@��� ?@���:\G@���Av?@���TG@���U?@���LG@��� 0?@���`OG@���@>@����FG@���@>@���@G@���`>@���Q8G@���Z>@��� (G@���;>@���"G@��� q>@��� &G@���i>@��� 5G@����T>@���F@���+P>@���@F@���o#>@���F@���@ >@���`F@��� >@���F@���@>@���`NF@���=@����F@���`0=@���(F@���7=@���F@����=@���F@���=@���SF@���@(=@��� F@���=@����F@���U=@����F@���=@���`YF@����}=@��� F@���@ =@���PF@����0=@���(F@����ј=@���F@���c=@���F@���=@���yF@����Й=@���̼F@��� V=@��� F@���@=@���`_F@����Z=@���F@���`=@���@ÜF@���i=@��� F@���=@���̤F@���=@���լF@���@ۏ=@���F@���lP=@���F@����#=@���F@����<@���F@���<@���@F@���<@���nF@���@<@��� ̜F@��� <@���F@���Q<@���2F@���F<@����wF@���F6<@���^F@��� <<@��� lF@���H<@����=F@���=z<@���F@���@օ<@���@GF@���<@���F@��� <@���F@���\<@����F@����<@���F@���><@���F@���`I}<@���F@���<@���jF@���<@��� F@���f<@���@F@���<@����=F@���ױ<@���F@���[<@���F@����4<@���@WF@���<@���F@���o<@����F@��� |<@���@F@���<@����G@���<@���@G@���� <@���@ G@��� =@���G@��� <@���"G@���@ <@���`'G@���<@���6G@��� =@����f?G@���z4=@���LEG@���*8=@���2DG@���q:=@��� >G@���`9=@����]5G@���g3=@���0G@��� e9=@��� .G@����C=@���`3G@���N=@���@{3G@���@M=@���8G@��� R=@���<G@���X=@���<G@���@d=@���B5G@���fe=@���8G@���@{=@���`�?G@���=@���=G@���`=@���`R7G@���@{=@���5G@���>=@����1G@���`o=@����B/G@���<=@���`2G@����Ω=@���`6G@���=@���@>8G@���=@���`2=G@���@<=@����z6G@���=@���@1G@���`=@��� L.G@���@*=@��� ,G@���{=@���,G@���=@���1G@���@>@��� 0G@���Z">@���`25G@���>@���@6G@���@>@��� u:G@����>@��� <G@���=@���@?G@���@y=@����z>G@���=@���@G@��� =@����CG@��� S=@���FG@��� =@���`IG@���=@����QG@���` =@����^G@���@G=@���eG@���@3=@���7hG@���=@���7hG@���@p=@���`BnG@��� =@���@nG@���=@���tG@���Z=@���xG@���=@����=G@���@=@���G@���=@���͊G@���ב=@���G@��� =@��� G@���4=@���$G@���@G=@���G@���=@���@֝G@��� e=@���ೡG@���•=@���G@���4=@���G@��� |=@���VG@���y=@���fG@���`g=@���¥G@���` a=@����4G@���`[a=@���`̭G@����Z=@���ࣰG@����R=@����vG@����N=@���� G@���@3C=@���HG@���@=@���@GG@���/=@���QG@���`!=@���`G@���*=@����G@���@4=@���G@����F5=@���G@���B=@���G@���?=@����G@���1=@���@G@��� 1=@����G@���A=@��� G@���1=@���`G@����-=@���G@���S$=@���8G@���@=@���`G@���@ =@���@>G@����=@���oG@����<@���G@���@<@���GH@���� <@���@H@���@<@���H@����<@���` H@����F<@��� H@��� <@����H@���z<@��� H@���(<@���H@���=z<@���$H@����u<@���# H@���k<@���@.H@���`'p<@���H@���`)k<@���H@���@{c<@���H@���@yX<@���@>H@���P<@���H@���^<@���H@���P[<@���`H@��� K<@����zH@���8<@���@GH@���`/<@���H@����.<@��� H@���d*<@��� H@��� <@���`H@���*<@����]H@���`<@���$H@���`<@���$H@���<@��� \'H@���;@���)H@���s;@���X-H@���`;@���2H@��� S;@���Q9H@���>;@���8H@���q;@���):H@����;@��� L>H@��� S;@��� ;H@����=k;@���`V5H@���@gd;@���-8H@���`W;@���8H@���`2E;@���0H@���;;@��� /H@��� ;@���@4H@��� ;@���`.H@��� :@���-H@���@:@����3H@����:@���0H@���@:@���0H@���:@����4)H@��� :@��� &H@���`':@���R&H@���`:@��� ,H@���`4:@���'H@���@:@��� (&H@���`:@���H@���@P:@����H@���@E:@��� H@���(:@��� G@���:@���]G@���w9@����G@����:9@���G@���9@���G@���9@���KG@���8@���G@���8@���G@���8@���`G@���8@���G@���8@���`G@���<8@���G@���(+8@����0G@���`!8@���`G@���7@����G@����7@���`G@���17@���G@���7@���@H@���`{7@��� G@���,7@��� H@���7@��� N H@���`R7@���`H@���7@���G@��� %6@����#H@���6@���G@���6@���G@���`6@���`YH@���6@����H@���H6@���@ H@���@6@���H@���֞6@���  H@���@6@���dH@���!b6@���@@H@���@P6@���)H@���Q6@���J.H@����B6@���`/.H@��� yE6@��� 3H@���`&6@���`4H@���?(6@���IH@���@S6@����WH@���w6@���|H@���@(6@��� H@��� َ6@���`*H@���6@���਋H@���6@���H@���` 6@��� NH@���6@��� ЀH@���@X6@���`܎H@���D6@��� 0H@���6@���@(H@���6@���@H@��� 6@���H@���J6@���`GH@���6@���H@���`H7@���j I@��� ~7@���`'I@���`07@���0I@���`7@��� 4I@���@!8@���EI@���8@��� PI@���h7@���@dI@����7@���ajI@���k!8@���jI@��� %8@���@mI@���7@���xI@���@ۿ7@����I@��� ١7@���dI@���߫7@���@I@���7@���I@�����������iI@����6@���0L@���f:@���X���������� e L@���@:@���UL@���f:@���L@���:@���aL@���9@���{L@���`9@���"L@���9@��� D,L@����ј9@���@/L@���@W9@���.L@����69@���0L@���8@���&L@���` 9@���&L@����48@���`K@���7@���`K@����I6@����JK@����6@��� J@���`6@���fI@���@7@���ulI@����@8@���iI@���\8@��� iI@����8@���@|I@���8@���@I@��� ;8@���ছI@���x8@���DI@��� ˝8@��� I@���8@���֫I@����8@���༲I@���E8@��� I@���j8@���`6I@���``k8@���KI@��� W8@����^I@��� O8@���I@��� @8@���I@���D8@���`I@���@`8@���I@���?X8@���`YI@���@58@��� DI@���78@���7I@���PI8@���I@���DD8@���`I@��� #8@����eI@����8@��� UI@���7@���|I@���@]7@��� O J@���7@��� J@���@7@���>J@���@8@���sJJ@���18@���PJ@����F28@���IWJ@���"8@��� J@���@8@���@J@���b)8@���'J@���*8@���`J@���8@��� J@��� +8@���J@����8@���J@���J8@��� K@���`$8@���K@���i38@���a K@���E8@���` K@���L8@���rK@���T8@���@K@���@'=8@����wK@���78@���`%K@���@?8@���`0K@���@8@���I?K@���@o8@���HK@����$p8@���JK@���v8@���iCK@����}8@���LK@����8@���@RK@���@8@��� SK@��� y8@���ZK@���@'8@��� =bK@���8@���@aK@����8@���*K@��� 8@��� K@���A9@���3K@���I?9@���K@���E9@��� K@����pM9@���K@���9@��� fK@����9@���lK@���@d9@���K@���@Ӗ9@��� %K@���@49@���3K@���`9@���PK@��� 9@��� e L@���@:@�����0���������@FH@���G?���PN@ ���`���������%���0���c����������������������������� \����#!L@����r���&L@���t��� =*L@��� )���+L@������a*L@���W���R/L@���@"b���`.L@�������-L@������c0L@���= ���1<L@��� ��� ?L@���`l��� <L@���gE��� JL@������JNL@���`w����<SL@����B��� KL@������ BL@���h���`=L@������9L@����A���`2L@���&��� /L@���6���0L@������-L@���\���`'L@���p���` -L@��� \����#!L@���`���J@�������eJ@���@��� fJ@���J���@J@��� D���J@���a��� fJ@����+���(J@��� ����^J@���@6����J@����)\���J@���`���J@���&����eK@��������ѸK@���n���`K@���`h���K@������K@��� ���K@������K@���_���K@��� ք���@K@����L���`NK@���&����eK@������L@���z���`6L@�������<L@��� c ���{L@���]���@oL@���#A����M@������M@���`K���@M@�������M@���o���M@��� ��� M@����s;���M@��� )���`M@���@"����<M@���r���`AM@���~���@M@���#A���M@���a���M@���e���M@����s;��� >!M@���0���&M@���R���`_<M@���`���AM@���a���@o6M@�������.M@���_���+M@���@v���M@���&���3M@������`Y!M@���@"���M@������ M@������M@��������`YM@��� *{���| M@����)��� M@���@ x���M@���`4��� �M@���@6��� ,M@������8L@�������ZL@��� \O���L@���#���@FL@��� ���@L@���E���M@��� ����L@���h��� >L@���@6���lL@���  ��� ~L@��� !C���L@������L@������L@��� ���ׂL@���@#����L@���e���גL@���@""���@ÜL@���`K���@-L@���`q���`ݕL@�������`/L@���FB���(L@�������bL@���aj���@?L@���aj���՜L@������� L@���`���תL@���]��� L@����G���kL@���E���2L@������L@���$���L@������L@���r���L@��� ք���L@���%?���L@���~����L@���@Ȑ���`L@���@X���@WL@��� ����#L@�������L@��� ���L@���]n���`L@���]��� >L@���@J���`L@����A���`qL@�������L@������L@��� !���@WL@���g����#L@���(��� %L@��� ���L@����ޝ��� ~L@���`��� =L@���@���L@��� ���ׂL@���I���qM@���@U���@wM@����G ���ztM@���> ���{M@���D ���)M@���@<+ ���\~M@���@S ����5yM@��� ����M@���`4 ���@-M@���H ���`M@���`���؉M@����A'��� yM@���  ���M@��� !C���~M@���Oz���D{M@��� S���`vM@��� *;���JvM@���X���yM@���@<���@|M@������ guM@���I���qM@���B���`L@������bL@������aL@���H����L@��� ���L@���#A����L@����(���`L@���%��� L@���^M���3L@���@"b���L@������L@���Q���L@����m���L@���^���@.L@����ޝ����5L@���B���`L@������`YK@���J���`/K@������ K@���@M��� K@���#���3K@���^M���@K@������`AK@���`l���`/K@��� *���K@����Z���!K@�������K@���=J���K@���E���K@���@���`K@���Oz��� gK@���d���K@��� ���K@��� \���`6K@������`YK@��� ���K@���@���K@���@tZ���QK@���`S���K@��� \��� K@������`K@�������`L@���@���3L@���ܾ��� xL@���^����K@��� ���K@���@B���JI@���`r���(TI@��� ����\I@���g���abI@���-���VI@���@ t���SI@�������` MI@���@B���JI@���f��� L@���@;���எL@�������L@����Z���L@���`|���@L@���f��� L@������ L@������ϩL@��� c���L@���@j����L@���^���L@��� c ���L@��� c ���L@���`���L@���f��� L@���^M���M@��� ���@M@���@z5��� N@���`���`N@����N���N@��� ��� %N@����;L��� %N@���`���N@��� !C���N@���]n���`N@���@����N@���`+���rN@���`���$N@���� ���R'N@������ $N@������)N@���`c��� D$N@���@���+N@���@%���,N@��� Y���`/6N@���`+���� >N@���`����<N@������� ?N@���-���`FN@�������Z@N@���@0���`GAN@��� J���KEN@���F���NN@���� ���PN@���`W���CN@������4N@������`68N@���� ���;N@���`���@.?N@��� ��� ;N@���y���5N@���� ���3N@���@���K5N@��� Y����51N@���O���b1N@���p����M,N@������z,N@���@ t����'N@����a ���"N@���@z5���!N@������`0N@���`��� xN@���DD����N@���`��� ,N@���p=����^M@����,���M@���^M���M@���^ ����ML@������@?M@������@ M@���>���@-M@���@""��� M@���@33����M@������� M@���`���k!M@���@��� M@���@Tv����"M@���@���M@���`��� ~!M@���@|���$M@���_���8.M@��� ���`q4M@���`[���5M@��� K���9M@���@[p���AM@���@L���DM@�������OM@���Q���LM@���E���BM@������`JM@���@ף���FM@������8M@����r��� OBM@���[���IM@����j���FM@���@���BM@������8M@��� p���UDM@���@*��� `KM@����)��� GM@��� ���OM@��� ���1LM@���?H ��� SM@���@K ��� VM@���x ���|RM@���V4����RM@���p=���LM@���@ ����BM@��������=M@���`q���'=M@���@���I/M@���@ ���#M@���g ���M@���7���L@���@����L@���`:���`YL@���` ���8L@���@[���'L@���}���L@���@O���8L@���`Ce���L@���H���@L@�������L@��� ���`0L@����ZQ���L@������L@�������PL@���n���@hL@���` ���RL@���z���1L@�������eL@���x��� =L@���'���RL@��� S���3L@���� ��� L@���7 ���L@����P ��� L@���` ���@L@���@U���@L@���@S���@L@���`����L@������L@���G���L@������L@���@z5��� L@���L]���� UL@���`+���� `L@���`Ce����@L@���@y����gL@����S���aL@����2���aJL@�������`:L@���?H��� `;L@������k9L@���`+ ��� .L@���` ����M,L@������@?8L@���`Ce���5L@���V���.L@���ɯ���U$L@���@��� O"L@���N���`L@��� \���!L@��� 0 ���L@���DD ���L@����8/ ����ML@������`AL@���|���`q L@���T ���@�L@���`:m���K@��� ����L@����[���L@����3���@L@���`4���sL@���6P���@K@��� >����`K@������ ,K@�������`HK@���z���`K@���@.���8K@���^M���UK@���` ���ԅK@������`fK@���`r���@]K@���`��� dVK@������QK@���@���7GK@���޿����3K@���`qؿ��� K@������`K@���ɿ����K@���˿����K@���`y5��� J@��� ?���J@���vʿ���J@���@ѿ��� J@������`J@���@п���J@���z���|J@���&?��� J@���x?����јJ@���?��� DJ@����/?���!rJ@���?���eJ@���`0?���2{J@��� [?���yJ@���Be?���`vJ@����S?���`bJ@���G?���PJ@���?��� O2J@��� M<?��� `#J@���`j?���� J@����W?���`I@���?���J@���?���J@��� f(?���~I@����,?���@XI@��� :?���I@���?���`HI@���@?���`6I@��� 7?���I@���?���QI@��� ?���`I@���@b?��� I@���3?���I@���@,?����eI@����33?��� fI@���?���`qI@���F?��� I@���g?���`I@���@n?���I@���A?��� I@����u?����I@���`?���cI@���n?���I@���j?���`I@���y5?���@FI@���?���I@���@?���I@���Œ?����vI@���i?���BI@���?����I@���@?����$I@���@b?���3I@����N?��� nI@����?���`I@��� ?���I@��� ?���bI@���e?��� >I@����}?���I@���?���z|I@����P?���@puI@���@#?��� wI@���`^M?����lI@���?���dI@���??���^I@���= ӿ����hI@���`���`]I@�������bI@������@fI@��� Ϋ���rkI@���`ff���kI@���m���KeI@���g����cI@���0u��� >iI@����p^���lI@���t��� gI@���2���`cI@���`���@mI@����G���`hI@����N���KeI@���`o��� `I@���O��� ZI@���@Q���^I@��� ��� `[I@���}����[I@����G��� ORI@���xV���LI@����)\���IOI@����A'���!RI@������LI@���b���FI@���@��� BI@���x���JI@������ OZI@���A���`]I@��� 9 ���@oNI@���@ ��� xVI@����� ���@pMI@��� ����DI@���`:m ��� x6I@��� ��� ~1I@���  ���&I@���/ ��� I@����P���)I@����Ԇ���`'I@���^���P)I@������3I@�������:I@��� ���7I@���`���4I@���?��� ,)I@���Y���`.I@������� $I@���%���`I@������ OI@���#��� >I@��� !C���`qI@���=J����5I@���@K~��� D I@���Q8���I@���`m`��� ,I@������H@������@FH@������ yI@������`0 I@��� 1���`HI@���`f&���@I@��� 15���`I@���@ף���I@������`I@������ I@���`l���`I@��� *���`I@����ޝ���+I@���Vt���4I@���y5���� 6I@������7GI@���f���@AI@���`����JI@���`$���KI@���o����`I@��� 6���`dI@���`���`GI@������ρI@���g���~I@��� ���I@��� ���@ۗI@���7���I@���> ���I@����3���lI@��� ���I@���`���UI@���-X���I@��� |s����I@������@hI@������I@����A����I@���v���I@���T���I@����P ���3I@���6P ���`qI@���_ ���`I@����W ��� I@��� ��� DI@����|��� fI@��� ���@hI@������I@���r���QI@���@��� I@���].���II@������ I@���O���`I@���l���`I@��� t���:I@��� c���'I@����j���`I@���@""���`I@���`:m���*I@���@����I@���@v���`/I@���$`���|I@���`����$I@���o���I@������I@���j���@I@���z���:I@������RI@��� <���JI@���a���8I@���N���@I@���8N���`J@���Y���J@������ xJ@������@J@������Z(J@���>���=J@���:���CJ@���໻��� DJ@����;���FJ@���8���9EJ@���`l���MJ@��� <��� YJ@���`����]J@���`d���`J@������`/fJ@��� !C���`0uJ@���z���@qJ@�������*jJ@������eJ@������`cJ@���&^���ZhJ@���@* ���dJ@���u���KuJ@���`~���ׂJ@��� c���aJ@����Ϋ���(J@������aJ@��� ��� J@����G ���(J@��� ���`_J@���@3��� yJ@������cJ@���@B ���ǰJ@��� ���@oJ@���7���`/J@���=��� J@���`J���`J@���`���UJ@��� J��� J@���@<���J@���@"���`J@������J@������aJ@���@.���J@���_,���J@��� v���J@��� k���@hJ@������@J@���\����<K@���`Ce���K@������ K@���m���@.K@���`i���K@���G���`K@���L��� K@���  ���`K@��� ��� K@��� ���`K@���@< ��� K@���@< ���k!K@��� ���K@��� ��� K@��� F ���i#K@����;L ��� +K@��� ���Z@K@���  ����<[K@����G ��� ,aK@����" ���@-pK@��� ���isK@���xV ��� oK@���  ���sK@��� ���tK@���@< ���yK@����ų���yK@���T���K}K@��� ���9}K@��� 9 ���rK@�������� lK@������ =bK@���@:,���_bK@���C���ajK@���N[���@XbK@��� c����gK@������ xnK@���@; ���kK@���#���`pK@���Œ���:tK@���`���oK@��� C���iK@��� r\���@fK@���hd��� ~YK@���#���VK@���2���@]K@���?���gK@���h���@.oK@���`4���@gK@������YK@����m����5QK@��� ���@QK@��� ��� WK@���g���*bK@���d���`GqK@��� ���� ~K@����k���K@���:���uK@���@ ���sK@���.��� xvK@���4����K@���@ ���ِK@����]����<K@���eG��� OK@���t���`AK@��� ���@hK@���`����^K@���@"��� K@���<���3K@���`p���`K@��� ���RK@����%���K@������ K@��� \���@�L@���UU���@X L@���M���L@���@t��� gK@��� Ce���@K@���~���SL@������ L@���G���L@���o���@ L@���`���L@���`����L@���_���` L@���U���8K@���a���`K@��� )���`K@�������6K@��� \O���K@����]��� K@��� ߼��� K@������ OK@�������`K@���@6���K@���`SW���K@��������L@����A����eL@���$���� L@����G����L@���?��� L@������K@����BF����K@���@���K@���X��� OK@��� ���� K@����QY���@pK@���W���K@��� D���`K@���@����^K@���$���K@���].���kK@���j��� K@������ &K@����%���K@�������K@������ `K@���K���@K@���@���K@����j���JK@���H���@L@�������K@�������wK@������� K@���xV���2 L@���@; ���@L@���`7��� L@���`:���L@������  L@���'���`G!L@���$`���L@���G���|*L@��� c����#9L@���@"����7L@���F���`NGL@������!:L@���/���@F:L@���@d���@L@��� ���;L@���@��� CL@���G!����EL@��� C���EL@���@T6���` UL@���O��� ZL@�������YL@������@]L@��� |���hL@�������`/NL@���`+���Z@L@������DL@������@HL@���� ���`OL@�������RL@���E���XL@������ %WL@���/���WL@��� ��� ZL@���`���`L@���h$���9eL@���`:m���hL@���,���DkL@������qL@���#���tL@���Q���L@���]���|L@���@���`|L@��� ���L@���E#���SL@���$ ���@L@����ޝ��� L@������L@��� ���@FL@����ų���L@������IL@���%����L@�������UL@����A���L@������ L@���z���@L@��� \���L@��� !��� L@���U���L@�������`L@��� ���L@��� 6���`˭L@���`���IL@���`:m���L@��� *{���`L@���@���`_L@���j"���`īL@���M���L@���@dh����L@���`[���PL@������`L@��� ���`NL@���@; ��� L@���/���SL@����)���L@���`>��� L@���$���L@������`L@��� ���`0L@���8��� %L@���8���L@���&���IL@���@���L@���ԥ���L@���`SW��� L@���R��� =L@���`+���L@����r���8L@������L@���`|���L@��� ���@L@���[���`L@��� \O���L@���@ϊ���PL@���G����L@���ܾ����vL@���^ ����ML@�����8������Ff���2@���`lf@���Q@1���X������F��������������a��n��u����������������x������������������%��3��t���������������� ����/��I��{�� ��I ��y �� �� �� �� ��� ��: �����`���@oL@���h`���`ʶL@���V�a���L@��� n`���L@���>`���7L@��� `��� L@���a��� L@���@a���8L@���@`���L@���ha���L@���~a���L@���`a���@L@���a����eL@���0 a���lL@���` a���)L@��� a���\L@���a���(L@���`x a���`HM@���` a���` M@���`B a���PM@���a��� g M@��� X a���M@���a���@M@���a���� M@���a���M@���`9a���@hM@���`���zM@���`���M@��� `��� `#M@����`��� M@����;`���@M@���p`���M@��� S`���M@���`���`M@��� `����M@���`+`��� M@���@b`��� %L@���`���` L@����`��� yL@����`���� M@���`���7M@���@`���M@���`���@M@���`����eL@��� `���`L@���@ `���PL@���@`���@L@���Q`���L@���``���jL@���`��� L@���`���L@��� &`��� L@��� `���� L@���G`���`L@���@`���bL@���``���kL@��� J`���lL@���`���8L@��� `���L@���Y`���L@��� a`���L@��� `��� L@���`���JL@���`���L@���`���[L@���``���L@���`���L@���`���`L@��� `���`_L@���`���@oL@���ZDc���^L@���Dc���@_L@���HBc���@lL@���:c���@|L@���`x:c���PL@���Y;c���L@���`9<c���{L@���>c���szL@���_>c��� ,L@���9c���@L@��� 9c����L@���=@c���`L@���6Bc���{L@���FDc���~L@���@Bc���`6L@���@>c��� L@��� /Gc���͓L@���Nc���@?L@��� Oc���BL@���`Nc����wL@���Lc���L@���Ic���\L@���Cc���`L@��� 8Cc��� L@���'Ec���|zL@����2Hc���ZpL@���Ic��� lL@��� Ic���tL@��� Oc���~L@���Pc���`~L@���Pc���L@���'Sc���@-L@��� Yc��� L@��� Yc���L@���Vc����L@��� JWc���� L@����OSc����<L@���gKc���L@���Gc����^L@���@c��� `L@����?c���PL@��� /?c���@L@���`<c���` L@���`7c���L@���8c���@ۯL@����9c���DL@���>;c���L@���:c���sL@���Z8c���L@���5c����L@���@:c���L@���`+<c��� OL@���@ 9c���`NL@���2c����L@���3c���L@���`x:c���`GL@��� =c���L@����=c���L@����8c���L@���4c���@L@���M0c���` L@���0c���@L@���.c���@?L@��� .c���*L@���M0c����L@���`/c���@FL@���@w-c���3L@���,c���DL@���*c���2L@���&*c����L@���.c��� L@���.c���`L@���&c���L@���-%c���L@���'c���L@��� !c��� L@���_$c���L@���Z(c���Q�M@���`] c���L@���`fc��� >L@���$c����^L@���vc���`L@���c���L@��� c���jL@���Vc���KL@��� sc��� L@���uc����L@���`c���L@���bc���`GL@���`"c���L@���c���L@���`c���L@��� c��� L@���~ c���`L@��� c���@L@��� c���@L@���gc���`L@���c���L@���Fc���zL@���c���rL@���` c����L@��� c��� L@���c���lL@���c��� &L@���@ c����L@��� sc���JL@���vc���3L@���`c���`ĻL@���`xc���L@��� c���L@���c���`0L@��� Xc���L@���`]c���`L@��� !c���L@��� c���L@���b!c���7L@��� c���`qL@���c��� L@���Hc���`L@���c���L@���c��� L@���@bc��� UL@���c���L@��� /%c���L@��� J%c���`L@���@c���L@����!c��� L@���q,c���L@����+c��� fL@���@.c��� fL@����/c���L@���0c����5L@����/c���ൈL@���#3c��� &L@���`2c��� L@����O3c���xL@���l5c���[wL@���8c���`qL@���q8c���SnL@���`96c���pL@���6c���mL@���`<c���@hdL@���>c��� _L@���ZDc���^L@���v`���`/~L@���`t`���ωL@���@`��� L@���`����L@���`���`L@���h`��� L@���`���L@���`����L@���`����L@��� |`���`GL@���`���L@���v`���`/~L@���`*c���~L@��� !+c���9L@���@ -c���PL@���(c���kL@����%c���L@���`&c���L@��� c���SL@���`c���bL@���`"&c����L@���`'c���L@���`*c���~L@���=`���7L@��� &`��� OBL@���ࣴ`����$HL@��� `���PL@���`���VL@��� |`���lL@���ø`����#iL@���&`���cpL@����`��� rL@���`4`���@oL@���@`����L@���?`���[L@���D`���`L@���h`���`L@���@`���vL@���`���yL@����`���@.L@���0`���`L@���`���`}L@���`���`nL@����`���hL@��� `���zTL@����`���`OL@���`]`���@LL@�����`��� [L@���`���dL@���`���rkL@����`���`/^L@��� |`���@^L@���@Ʀ`���ZL@���`���tQL@��� \`���7OL@��� `���LL@���``��� CL@���`"`���`CL@��� ң`���@>L@���``���`:L@���൪`��� D<L@����`���@?@L@���g`���3:L@���=`���7L@��� j`��� K@��� /`���L@���`��� fL@���&`���L@���`���9L@���`���L@���`���%L@���@b`���(L@���`���K%L@��� j`����5L@����`���4L@���@`���.L@���u`���3L@���`��� .L@��� `���`5L@���6`���{;L@���@`���z<L@���`0`��� GL@���`����T>L@���C`���[GL@����`���GL@���`���PL@���`���)SL@���`���*RL@���`���`UL@��� &`���XL@���``���(TL@���`���XL@���`���*jL@���`���mL@���C`���mL@���U`���dL@���@`���fL@���`���oL@����`���rL@���`���`kL@���@`���@qL@���`o`���wL@���`���sL@���`����woL@��� n`���@]L@���`���SL@���D`���RL@��� `���\L@���`���`fL@����O`��� cL@���@<`���ZPL@���� `���@LL@����`����GL@���M`���`ML@���u`���NL@���@ `����IL@��� j`����@L@���`���c8L@���@`����2L@���@E`���m/L@��� `��� ,L@���,`���`_$L@���g`���)L@���`���8.L@���~`���j"L@��� `���`#L@���``���L@���`T`��� L@����`���`L@���``���@ L@���@`���� L@���`���@$L@��� `���`'L@��� `����L@����`���mL@���`���L@��� a`��� =L@���``���a L@��� j`��� K@���@`���R?L@���`���Z@L@���`��� LL@���D`���PL@���@؞`���eL@���u`���hL@����`��� dL@���`��� LL@��� `���`IL@����`���BL@���—`��� GL@��� `����BL@���@`���R?L@���"d����GM@���`"d���PM@����d"d���@WM@���`Td���^M@���d��� geM@���,d���@HM@���"d����GM@���`���L@���`���*L@���١`���z,L@����`���P9L@���`���a:L@���`���2L@���:`���,L@���O`���`/&L@���0`���`"L@���`���L@���ˁ`���`AL@���``���� L@��� &`���.L@���`o`���`3L@���``���z<L@���``���@p=L@���M`��� +L@��� s}`����L@���ˁ`���`AL@���>c��� V5@���`c��� O5@���Gc���c6@���c���'6@��� c���@96@���zc����36@���`+c���.6@���>c���  6@����mc���@5@���>c��� V5@���`���K@���`���aK@���`���L@���`���j L@���`���`L@���D`���` L@���D`���`L@���`9`���`qL@����O`���L@���@`���|*L@���`}`���`+L@���@b`���L@����O`���QL@���`���L@����`��� L@���`���QL@���`���� L@��� `���BL@����`��� OK@����`���@K@���U`���7K@���…`��� K@���`���K@���?`���K@���#`����^K@��� a`���bK@���``���L@���`���a L@���``��� L@���ٳ`���L@���`���L@���`���@L@���``���`L@���#`��� L@��� `���j L@���5`���UL@���`����L@���@E`��� L@���@`���K@���`���K@���`���K@���?`���K@���4f��� I@���@6f���I@��� 'f���I@����d&f���I@���`B&f���I@���@$f���I@���@w!f���I@���H$f���I@���`+$f���@I@���*f���RI@���+f����I@���3f���I@���4f��� I@���`f`���K@���i`��� K@���Ff`����K@���Ff`���@XK@���Zh`���K@���`h`��� K@���� h`��� ,K@��� ai`���K@���ql`���K@���`n`���{K@���n`���`ʦK@����Oi`���K@���@i`���K@���j`���!K@���k`���K@����j`���)K@���l`���'K@���@n`���K@��� jm`���K@���@ o`���K@���gm`���K@����o`���@K@���p`����K@���@n`��� K@���`}p`���K@���u`����K@���`0z`���K@���=z`���ֻK@����s`���`K@���`fv`���`K@���hv`���'K@���`kp`����K@���$t`���K@���Fv`���kK@���@v`���1K@���s`���`K@���o`��� K@���@p`���K@��� u`���KK@���u`���@K@���`n`��� ~K@���n`���(K@��� |q`��� yK@���`xr`��� `K@��� jg`���K@���@^`���bK@���]`���!K@��� n_`���@üK@���`^`����K@���``���K@���^a`���{K@���d`����5K@���`f`���K@���� `���cXK@��� `��� [K@��� `���`K@���Ն`���dK@��� e`��� hK@����O`���SfK@���`���rkK@���`f`���r{K@���࣌`���jK@��� e`���uK@���5`���`NsK@����`���uK@����m`���xK@���?`���'}K@��� `��� K@���`4`���`GyK@��� J`����ewK@���`��� {K@���`���K@���`T`���@ÄK@���଎`���K@��� X`����ɇK@���@b`���K@���Б`���`K@���`����wK@���`Փ`���2K@����`���`0K@���``���K@���ൔ`���@XK@���~`���K@���``���ؑK@���`���@oK@����י`��� K@���̚`���`ŢK@����`����K@���@Ơ`���3K@���-`���K@���@`���ϡK@���ќ`���ͣK@���@b`���K@����d`����K@���`���`K@���`���K@���``���`K@���`���RK@���_`��� yK@���@3`���K@���``���K@���`���kK@����ū`���K@���Q`���K@���``��� %K@���`���`K@���`���K@���@`���K@���`���K@���`��� &K@���`9`���K@��� ɧ`��� L@���@`���) L@���`+`��� L@���`��� L@���6`����L@���?`���`"L@����`��� &L@���@`���@,L@���`]`���)L@���`����$L@���@`���)L@����`���@)L@���à`���L@���`���L@���`k`���L@���`����L@���ǚ`���(L@���`���`K@���`}`����^K@���`����K@���@ƌ`���`K@���@3`���`K@���p`���9K@���`Յ`���@K@���`f`����K@��� `���`K@���``��� %K@���``���`YK@���M`���@.K@���`��� xK@���p`���)K@���@`���K@���$`���tK@���@`���K@���`���`K@����;`���K@���u`���@WK@���``���`K@���`����MK@���`���@K@���``��� OK@���`0`����K@����`���`K@���`���ƙK@��� !`���K@���@`���@hK@���`���K@���V`��� K@���~`����K@��� `���K@��� `���ωK@����܃`���lK@���`T`���K@���`��� K@���@؂`���@|K@���P`���K@���@3`���@~K@���`����rK@���>`���`sK@��� `���`GqK@���~`����5iK@���@b~`���dK@���`4`���cK@���� `���cXK@����hf@���zI@���\f@���I@���TUf@���`I@���@%Uf@���``I@��� 6Vf@���I@���g_f@���jI@���cf@���½I@���`lf@���I@����hf@���zI@���c���D5@���øc���BE5@����λc���@L5@���@c���AV5@���_c��� Q5@���c���@-X5@���� c��� ]5@���^c���@zd5@���c���_5@���Lc���W5@��� \c���@'M5@���Pc���K5@��� c���q5@��� c���z5@���c���5@���c���A5@��� sc���`05@���c���@X5@���Cc���`5@��� ɹc���o5@���c���v5@���`c���@]^5@���`xc���ZP5@���c���D5@����d��� K@��� &d���@FK@���gd���@K@���`Bd���2K@���@*d��� K@���d���K@���`Kd���`K@��� ed���� K@���`fd���@K@���gd���`YK@���d���լK@���@d��� K@���Qd���9K@���`d���K@���d���DK@����d����K@���d���`K@����d��� K@���@7d@���JVK@��� d@���` ]K@���@d@���jK@���pd@���!jK@���Ad@���`K@���d@���K@����d@���\K@���@ķd@���`0K@����;d@���@oK@���`Id@����K@����d@���K@���d@����K@���` d@���`˝K@���`xd@���QK@���`d@���kK@���@7d@���JVK@���@d���oK@��� 8d���pK@���d����uK@���0d��� K@���d���K@��� |d����K@���d���K@���6d���\K@���bd��� K@����m�d����^K@����d���rK@�����d���@-K@���@<d��� ~K@���c����K@���@bc���K@����c��� K@���gc��� K@���@c���K@���@*c����K@���`c���mK@���`c���K@���Fc���`qK@���>c���K@���Oc���kK@���bd���wK@���@d���oK@���Xr`���mK@����s`���@K@���@r`��� K@���@p`���`K@���p`���ƑK@���vr`���`YK@���r`���@?K@���o`��� K@���@n`���`/K@���?l`����K@���@j`���`K@����k`���K@���5o`���@K@���@p`���iK@���Xr`���mK@���=`���`UK@����`���YK@��� `���\K@���@`���`kK@���`Ӡ`���@oK@���'`���uK@���զ`���rK@���ˣ`���K@���ڦ`���@•K@���`���K@���Q`����<K@���`���@۟K@���@E`���mK@����`���|K@���g`���)K@���V`���ՌK@���`��� K@���p`���@pK@����;`���!K@���``���tK@���#`���`qdK@����;`���^K@���^`���`VK@���=`���`UK@���Fd����2K@���@d���5K@���Zd���`HK@���d����LK@���� d���@QK@���`4d���`_K@���pd���pK@���ٍd���wK@��� d���@qK@���d���){K@���d���`~K@���@*yd����K@���@wqd��� fK@��� od���~K@��� md���� vK@����ld���eK@���Djd���aK@���`fd���cK@���cd���@._K@��� ad���UK@���@ed���UTK@���cd���WK@��� !kd���`K@����md���`ZK@����md��� DTK@���@3sd���`/NK@���Dd���PK@���@؆d���KK@���Fd���@hDK@���Êd���<K@���d���5K@���Fd����2K@���e@���@?K@���`x�e@���DK@���d@���TK@��� d@����iK@���d@����hnK@���d@���nK@���`Id@���@dK@���@e@���@BK@���e@���@?K@���zd���K@���'d���cK@���>d���K@���`d���K@��� d��� K@����d���`K@��� ɻd��� yK@���`Td��� K@���`d���K@���@d��� %K@���d���`K@����md���@?K@���@d��� O K@���zd���K@���^d���`ŢJ@���d���`J@���d��� үJ@���Yd���J@��� &d��� J@���`d���J@���d���J@��� nd���@J@���Dd���iJ@���@d���J@���d��� J@���#d����J@����d���`J@���� d���SJ@���`d���!J@��� d����J@��� d���J@���`kd���J@���@d��� J@���@d����J@���@d���J@���@d���J@���@d��� OJ@��� d���bK@���d���`J@���@d����J@����d���`J@���`]d���`J@���`d���`6J@���pd���3J@���pd��� J@���`+d���J@���d���bJ@���`Bd���J@���d���kJ@���d���J@���d��� >J@���`0d��� J@��� nd���@J@���d��� J@���Od���J@��� |d���`HJ@���Hd��� J@���hd���8J@��� 8d���J@���$d���3J@���`d���`J@��� d���J@���d���@J@���d���J@���d���`J@���>d���J@����;d��� J@���@d���`˽J@��� Ad����$J@���>d���`J@���d��� J@���`Td���ٸJ@���Vd���`J@���:d���J@����)d���`J@���@3d����J@���d���kJ@���d���@oJ@���^d���`ŢJ@���`+ e����oJ@���@e���J@���ze��� J@��� |e���'J@���`te���J@���e���עJ@���� e���cJ@��� e����J@��� e���@J@��� e���J@���# e���`qJ@���e���DJ@���-�e����$J@�����d���J@��� sd���mJ@���@*d���J@����d e���`J@���e���@J@���_e��� zJ@���6e��� xvJ@���`+ e����oJ@���›c��� 5@���hc����5@��� nc���5@���pc���` $5@���`9c���<:5@��� c���` 45@���ࣖc���`(5@���`c���5@���›c��� 5@���� e@���m_J@���Xe@���eJ@���� e@��� mpJ@����$e@����$pJ@����e@���JnJ@���` e@���uJ@���Ϗe@���` uJ@���`]e@���`xJ@���"e@����dJ@���e@��� J@���˥e@���`{J@���Fe@���BuJ@���@e@���@vJ@���Se@���:tJ@����me@���IoJ@��� e@���` mJ@���e@��� iJ@���e@���`hJ@���ྤe@���`cJ@���ൢe@���jJ@���� e@���m_J@��� e���rJ@���e���J@���ze���`J@���Ye���QJ@���`]e���J@���e���` J@���`ܞe���) J@���e��� J@��� e��� J@��� e���rJ@���e����J@���`e���jJ@���e���P J@��� e���@ J@���`e��� J@���@e���J@��� se���UJ@���^e����<J@���@e����J@���5e���Q J@���@e���'J@���Ue���{#J@���e���@%J@���e���(J@����e���`H(J@���e���5J@���¿e���)J@���ٿe���B%J@���e���J@���e���J@���`9e���`J@���e���J@���'e���K J@���e����wJ@���=e��� J@����e���` J@���e��� J@���e���KJ@���6e����^J@���e��� J@���e���zJ@��� e���@J@����e���2J@���e����J@���`*f@����I@���@@'f@���cI@��� +f@���(I@��� /f@���I@���2f@���`J@���`o4f@���.J@��� 5f@��� J@���1f@��� I@���`2f@��� ,I@��� 2f@����I@���.f@���I@���@<+f@���|I@���`*f@����I@���f��� I@���@3f��� DI@���@f���1I@����)f���I@����Of���@I@����f���I@���@f���I@���zf��� DI@���@f��� I@���@f���I@���f���`I@���@f���iI@���@f���I@��� /f���I@����f���@hI@���yf���zI@���f����I@��� f���I@���U f���I@���f��� I@���f���ZI@���f���`I@���Zf���I@����f��� UI@���Df���)I@���f��� I@���<f���@hI@���`B>f���@I@���@f���I@���:Cf���@I@���@Bf���tI@���>f���`I@���X>f���I@���`>f���jI@���Ff���JI@����Ff���I@���`>f���I@��� =f���`_I@���:f���I@��� 3f���@I@���`4f���I@���9f����I@����9f���kI@���'=f���@hI@���<f���@hI@���c���@4@���-c���@4@��� c��� ,4@����c���`Y4@���`xc��� 4@���hc���5@���c��� 5@���Pc���4@���ࣈc��� 4@���`ʀc���[4@���c���@z4@��� c���4@���=c���4@���c���@4@��� җ^���G@��� Ԧ^���2 H@���@^^���`H@��� s^����H@���^���H@���8^���@1H@���^���32H@����M^���'H@���@^����M$H@���^��� U%H@���ԩ^���@- H@���@ ^���KH@���^���H@���^���H@��� ɡ^��� H@���m^���)H@���^��� H@��� a^���H@���h^���:G@��� җ^���G@��� !uc���2@��� Syc����w3@���{c���@P 3@���`|c���3@���@E}c��� |3@���`~c���`63@���c���`_3@���,c����3@����;zc���`3@���`"zc��� 4@���{c���a4@���|c���+4@����2|c���J>4@���Xzc���E4@���`jc���[4@���`bc���j3@���`kbc���3@���_c����ʾ3@����]c���3@��� |Yc���Ί3@��� Zc���@z3@���-`c���1T3@����lc���A63@��� qc���q3@���`rc���@^2@��� !uc���2@���zR���HD@���@yR��� ID@���pR���@ND@���qR���!RD@���vR���`qTD@���yR���bQD@����wR���MD@���R���@FJD@���?R����vXD@���@ {R���@eD@���pmR���gD@���mR��� kD@���@"nR���moD@���kR��� oD@��� iR���`hD@���,iR���@XrD@���@eR���uD@���@"^R���`rD@���_R���yD@���i[R����$xD@���@*WR����sD@���VR��� wD@���gYR���`zD@���NR���tD@���@IR���wD@����GR���|D@���p)R��� g}D@����BR��� D@���WR���D@����R���D@����{R����#D@���OR���`HD@���N#R���zD@����'R���uD@���R��� sD@���R��� D@����R���� D@���@2R��� D@���%Q���|D@���@Q���kD@����bQ��� &D@���@R��� %oD@���R��� qD@���R���`_lD@���@,R���@eD@���@"*R���`HhD@���MR���[D@���@kR���QD@���ekR���KMD@���zR���HD@���S��� g F@���iS����_,F@���QR���@X2F@����R���`<F@���@ R����\F@���`R���`uF@����kR���!F@��� eR���`F@���@vlR���`F@���VR��� >F@���tUR���`HF@���1MR���F@���@ER���F@���,R���|F@���UQ���F@��� Q���ଂF@���@Q����шF@���`Q���F@���@2Q��� F@��� eQ����ʦF@���Q��� F@��� Q��� yF@����Q���KF@���@Q��� xF@����ִQ���`F@���@Q���`BF@��� :Q��� F@���ΪQ���*F@���Q���`ֳF@���@Q���@ӶF@���@Q���`/F@��� Q���ZF@���ݝQ��� F@���@Q���F@���Q���ZF@���@TQ���F@���@Q���lF@���Q���{F@���ғQ��� F@����BQ���G@��� Q��� NG@���aQ���@PG@���`Q���0G@����FQ���68G@���Q���`YYG@���[Q���`ŢG@����NQ��� FG@���@CQ���#G@���@ CQ���G@���@8Q���`G@��� I Q���`G@���Q���G@���@Q���G@���Q���@ӮG@���Q���@G@���@P���� G@���@P���`+G@���vP���@F@���P����YF@����|P���F@���P���F@���@P���`F@���P���@F@���#P���F@����KP���`F@����P���F@���P���F@���P��� F@���@P���F@���@mP���`F@���@P����5F@���@P���`F@����9P��� ~F@���6P���`xF@���@P��� `{F@����P���9uF@����{P���@vF@��� 1P��� jF@���P��� sF@���@P���`kF@���P���tqF@���P���ajF@����P��� TF@���P���UF@����P���\F@����rP����[F@����ZP���mOF@���@P��� WF@���@P���`OF@���yP��� >QF@����P���UF@���P����GF@���@2P���BEF@���`CP���|JF@���P���aBF@���@ P���@oNF@���P���EF@����zP���LF@���wP���`GF@���@P��� ?F@���P���@?F@���5P��� U5F@���@P���Q8F@���P���`7F@���5P���`GAF@����(Q���S>F@���@P���`5F@����]Q���F,F@���Q���AF@��� Q���<F@���� Q����DF@���@ Q���zDF@��� Q���=F@����0Q���BF@���Q���(<F@���MQ���8F@���Q���4F@���Q���@?F@���@+Q����@F@����Q��� 3F@����#Q���6F@���@ Q���!F@���!Q���F@���w/Q���-F@����3Q���`*F@����b2Q���1F@��� I,Q���5F@���-Q����:F@���.3Q���@4F@���3Q��� 8F@���@.Q��� GF@���}2Q���@XJF@���e3Q���=F@���6Q��� >F@���>Q���`8F@���;Q����,F@���@LEQ���F@���EQ��� F@��� DQ����F@���@OQ���E@���.OQ���E@���@NQ���iF@���VQ���� E@���UQ���F@���@uYQ���F@���_Q���` E@���@aQ���zE@���cQ���bE@����QeQ����wE@���fQ���`E@���kQ����$E@���@fQ���zF@���@[hQ���F@����oQ���E@���@lQ���E@���`tnQ���E@���@;pQ���@E@���@3sQ���E@���pQ���`F@���@sQ���F@����wQ����F@���XvQ���zE@���QtQ��� fE@���@qQ����$E@���5uQ���iE@���wQ����^E@���@2xQ���@E@���@~Q���E@����zQ���� E@���}Q��� %E@���Q���E@���vQ����<E@���@d|Q���� E@���~Q��� =E@���Q��� E@����Q���E@���� Q���@XE@���ڔQ���@-E@���wQ���E@���@Q���`E@��� Q���`_E@���yQ���E@����QQ���`E@���`Q��� E@���Q���E@����9Q���@ۏE@��� Q����wE@��� Q��� E@���Q��� ,iE@���Q��� cE@����ְQ���[E@���VQ���@hTE@���ӪQ���PE@���ѨQ���`WE@���#Q���TE@��� Q���`qLE@���&Q���NE@���`Q����vHE@���Q����^EE@���@uQ���Z@E@���5Q����#9E@����Q���/E@���Q���[/E@����bQ���&E@���`Q���E@���@*Q���@!E@���Q���`&E@���Q���E@���@Q���E@���MQ��� �E@���Q���E@����rQ���E@���Q���*D@���Q����eD@����BQ���lD@���GQ���@D@���ʒQ���D@����cQ���`D@����JQ���D@���Q���`D@��� Q���D@���Q���E@���@2Q���mE@����Q����wE@���ɋQ��� E@����ŏQ���@?E@����Q���@W E@���@:Q���2 E@���Q��� E@���{Q����D@����{Q���`D@���V|Q���@D@���GQ���`D@���Q���iD@����zQ����MD@���yQ���@D@���Q���D@���oQ���D@���Q���`D@��� Q���D@���Q����D@���@Q���D@���Q��� gD@���@Q��� D@���@CQ���@D@��� !Q���@D@����Q��� DD@����Q��� D@���`Q���`D@���Q���`D@���`SQ����<D@���`Q���`/D@���@Q���`D@����JQ���`D@���Q��� D@���@*Q���@FD@���@Q���D@����R���*D@���yR���D@���R��� D@����R���D@���R���@D@���nR��� D@���fR���`_D@���@28R���D@���@9R���஦D@���@FR��� UD@���@YR���ߋD@���@|oR���@.wD@���@*sR���biD@���@zR���gD@���`yR��� }]D@���R����`D@���yR���xD@���wR���@WD@���h|R���஦D@���~R���֣D@���@~R��� D@���zR���`0D@���yR���zD@���GR���JVD@���@*R���[D@���R���`ID@���iR���`EAD@���@:R���@<D@����rR����7D@���ɇR��� ,9D@���~R���3D@���@:}R���`N3D@���R���`D@���R����D@���@R���7C@���R����C@���eR���PC@���R���C@��� IR���lC@���oR���@C@���@R���C@���@R����ѸC@���R���@C@���@R���βC@���R���aC@��� }R��� &C@���yR���mC@���@R��� fC@���@*R���DC@���QR��� %C@���>R��� C@���@2R��� DC@���R����C@����AR���@ӎC@���~R��� C@����R���xC@���R��� &vC@���^R���}C@���R���`C@���#R��� yC@���@R���`C@����R���@.C@���@R���rC@���oR����$C@����R���RC@���R���`C@���@R���C@����ZR���C@���@R����C@���R���C@���R���C@���@R���C@���R���@pC@���@R���C@���@ R���7C@���R���ռC@���R���C@���R��� =C@��� R���`hC@��� R���eC@���@R���UC@���R��� ~YC@���R���`XC@���R���PC@���@R���`HC@���$R���`NC@���@R����9C@���@R���'5C@���_R���j:C@���WR��� 8C@���@"R��� 3C@���_R���`0C@���@R���`+C@���@"R���@oC@����R���C@���@2R���`Y!C@���R���C@���iR���@.B@����JR���B@���R���@-B@����9R���mB@���R��� B@����JR���{B@���R���B@���@"R����^B@���R��� B@����!R��� xB@���5R���B@���`R���B@���,S���3B@���5R��� B@����rR���)B@���gR��� ~B@���R���B@���R���rB@����{R���B@���@R��� gB@���@R��� B@����R���'B@���R���`_B@����kR���B@���vR���`B@���@R��� &C@���@R���U C@����R���( C@���@"R���` C@���MR���PC@���R���{C@���`\R���C@����)R��� C@���`SR��� ,C@���@R���C@����ZR��� C@���XR���0C@���R����"C@���R���)C@���yR���@*C@���@R���@/C@���@"S���`6(C@���gS���7C@���S���9C@���^ S���t1C@���FS���1C@���@ S���`H(C@���S���`=C@���@S���@C@����ZS���s:C@���@ S���@?HC@��� S���@XJC@����S���\FC@���]S��� IC@��� S���PC@��� S���IC@���R��� KC@���@:R���`SC@�����S���BMC@���S���`PC@���y S���`SC@��� S���U\C@��� S���[WC@��� }S��� [C@��� S���@XbC@����(S���U\C@���@lS���bC@���wS���c`C@���S���WC@���S���WC@���ES���hC@����rS���@lC@��� S���aC@����S���9eC@��� S���dC@����J S���2kC@���@ S����rC@���M S���`NsC@��� S���`N{C@���`S���9uC@���S���ZpC@���@S���mC@���S���@zC@���@S���C@����S����}C@��� S���`łC@���@S���C@���S���@FC@���� S���\C@���@ S���ՄC@���XS���C@���S���`NC@���@ S���@C@���R��� C@����BR����ѰC@�����S���C@���R���@üC@���R���|C@����ZR����$C@���R����eC@���R���aC@����8R��� C@���NR���C@����R���C@���@S���@.C@���@S���ாC@����S���`C@���@ S���C@���@ S����C@���S���`ŲC@���@ S��� C@���S���C@����(S��� C@���@S��� DC@��� S���C@���ES���C@���S��� C@��� S���C@����ZS���C@���<S���@C@���S���C@���@S���IC@���S���`C@����BS����C@���`S���C@���@S���'C@���@S���)C@���@+&S���`YC@���S���C@��� S��� C@���S���C@����BS���KC@���S���bC@��� S���~C@���#S���C@���i#S���ՄC@���S���yC@���S���tC@���`!S����<{C@���!S���`vC@����S���`YqC@���O"S��� `kC@���.S���kC@����!S���hC@���"S���`]C@���V S���bQC@���Q S��� CC@���vS���1C@���VS���-C@���S����*C@����r(S���=C@���W+S���@oVC@���@*S���=C@���>%S���`2C@���S���@o&C@���,S���@.C@���QS��� C@���QS���`C@���S���@C@���<S���C@���S���C@���yS��� >C@���@[$S���C@���Q(S���C@���@1S���C@���3S���@%C@���4S���@./C@���8S���*2C@���G5S���B%C@���6S���"C@���>S���-C@���pAS���=C@����DS���95C@���@+FS���5C@���@2LS���`.C@���OS��� 2C@���PS���@XBC@����CS����#YC@����cAS���YC@���&BS��� >qC@���@CS���[C@���IS���UC@���QLS���`HPC@���@LS��� DTC@���NS���zTC@���@:US���7C@���@"RS���`A.C@���OS���`x*C@����AS���`3C@���@?S����-C@���@BS���`(C@���#=S���!C@���@<S���!C@���@#S��� C@���G!S���C@���!S���@C@���@S���B@���@S���kB@����S���kB@���S���B@��� IS���`B@����S���`6B@���oS���@B@���S���@B@���iS���B@���6$S���B@���)S���B@����r8S���`H�C@���~=S��� C@���DS���C@����3S���`B@���@*#S���|B@���oS���B@���@S���B@���S���`_B@���S��� xB@���S��� B@���S����eB@���S���)B@���%S����B@���`S����B@����bS���zB@����rS���`B@����S���9B@���hS���B@���@S���@XB@���,S���B@���@1S���`B@���3S���B@���@%S���@¥B@���GS���B@����)S���`ݝB@���@2S���@pB@���@S���@FB@���@S���zB@���S���B@����bS��� >B@���fS��� {B@���)S����B@���G5S���@.B@���7S���lB@���:S��� xB@��� <S���RB@���?S���`HB@���@NS���`YB@����OS���B@���QS���ǨB@���NKS���B@���Q@S���@B@���@:S��� B@���2S���@B@���.S����B@���E+S��� B@���#%S���@-B@��� S���`{B@���y!S��� xnB@����S���`YqB@����S���@qB@����rS���qB@���6S���xB@���NS���uB@��� }R���rB@���hR���`EB@���@R���` B@���yR���`A@���R���@hA@����bR���`A@���@LR��� ~B@���`SR���(B@���R���RB@���R���5B@���R���jZB@���R���r[B@���R���IB@���@lR����DB@��� }R���IB@���`R���>B@����R��� CB@��� }S���`BB@���R���0B@���@R���6B@���@+R���@F B@���@R���B@���R���` B@���@R���`&B@����R���@B@���@R��� gB@���@CS��� xB@����) S����(B@����bS���%B@���S���B@���QS����$B@���@ S���`B@���S����B@���S����B@���� S��� B@���S��� B@����ZS���`B@���S��� B@���@S��� ` B@���S���B@��� %S���B@���~-S���B@����b.S����$B@����*S����M$B@���@.S���`(B@���@,S���#B@����r0S���B@���.S���lB@���+S��� �B@����.S���`6A@���@2S��� A@���� S���RA@���@S���A@����S���@A@����rS���\A@���@CS���A@���S����A@���nS���:A@���S���A@����S���<A@���oS���`_A@���S���)A@����JR���A@����!R��� ~A@����R���� A@���R��� A@����R����MA@���R���A@����0R���A@���&R���ZA@���@:R��� A@���@R��� =A@���R���`A@���@R����A@���S����^A@����S���A@���5 S���@WA@����bS���ެA@��� S���@ôA@����S���`NA@����S���`A@���6S���`A@���S���@FA@����S���A@����ZS���A@���@u!S��� A@���$S���A@���S����MA@���@:)S���sA@����&S����vA@���@:%S��� OA@���`(S���A@���@,S��� A@����:S���DA@���ECS���A@���@>S���`A@���@7S���ஶA@���&"S����A@���`4S���`NA@����AS���`qA@���#S���JA@���@'S���A@���@+S���A@���Q$S���A@����J#S���jA@���)S���A@���`1S���}A@���o6S���`~A@���DS��� A@���@*CS���A@���`<S��� y}A@���@20S���sA@���@(S����}A@����"S��� xvA@����{$S���}A@���@""S���`A@����S���:|A@���S���`A@���QS���A@���@S���}A@���S���@FzA@����ZS���`wA@���S���{A@���@S��� A@���S���(|A@���S���@wA@����S��� wA@���US���@qA@���S����bA@����S���`A^A@����r$S���K]A@���&S���ZhA@���'S����ZA@���@"*S���Z`A@����+S���SfA@���0S���_A@���o.S����5aA@���,S���\A@���ES���@oVA@����GS��� \A@���@HS���RWA@���TS���[GA@���@:YS����JA@���US����QA@���[S���*`A@����WS��� ~QA@���YS���SNA@���@2\S���7OA@���@2\S���KA@���@WS���`CA@���@hS����2A@��� vS���`A@���|S���@@���`߀S���*@@���ٝS���@@���@S��� ~@@����οS���Y@@���S��� @@���@S���@@���>S����ɧ@@�����S���ष@@���^S����ɯ@@���@S���ߣ@@��� S���J@@���S���V@@���S���@-@@���%S���`H@@���S���@@����S���@@��� S���@@���ES���u@@���@*S���of@@����bS���`@@���@S���`0e@@���%S���l@@���S���@^e@@����S���B]@@���S��� =Z@@����S���@XR@@��� T���Q@@����8S���`%O@@��� T����wG@@���T���(D@@���T��� y=@@���%T���rC@@���@T���B=@@���@ T���`6@@@���"T���RG@@���@+"T���!B@@���i+T���@?@@���>!T���>@@���@ T���i;@@����(T��� 6@@���T���`0@@���iT���3@@���gT���b)@@���@m(T���` @@��� )T��� +@@���*T���1@@���y)T���`:@@����J+T���6@@���`t*T��� '@@���>-T��� (@@���@3T���s:@@���@1T����?@@���@5T����D@@����Z5T���`@@@���~1T��� &@@���*T���9@@���.T��� D@@���v4T���` @@����k2T���`@@���@C9T���@@���6T���@@����6T����?@���9T���@ ?@���-<T���@?@���=T���`?@���<;T���`?@����>T���?@���GT����?@���@ CT����?@����GT��� ?@��� 1QT���g?@���OT��� ˽?@���� LT���1?@���OT���@?@��� IHT��� ز?@����HT���@͛?@���JT����$?@����LT���@?@����bNT���?@���TT���?@���ST��� ?@���RT����}?@����KT����?@���LT���{?@���@QT���@Xb?@���@UT����o?@���nST���a?@���QT���`W?@���RT���`R?@��� k_T���`\?@���@QT����H?@���@QT����}B?@���`XT���#?@���ZT����$?@���@"ZT���4?@���v\T��� y5?@����_T����$ ?@���[T���?@���YT���?@���ZT���`/?@����r`T���`?@���@\T����?@���@aT���>@���@]T���@.>@���`T���k>@���@d`T���@Ե>@��� \T���@X>@���[T����w>@����]T���̌>@����k^T���9>@���_T���`>@���6`T���>@��� }ZT���@-x>@���_TT���@>@���KT���@=@���>T���@1=@���0T���<@���#T���<@���!T���t<@����9&T���f<@���#T����(<@����T����L;@���5%T����T<@���'T���JN<@���t'T���B<@����(T���@<@���@/T����<@����92T��� <@���/T���<@���5T����<@���@0T���l<@���`$T����<@����T��� ١;@���@ T���@9;@���T���5;@���@T���k;@���@T���:@����T��� V:@���T���:@���?T���9@����J T����9@����) T���`9@���iT���9@���T���@g9@���@2T���%_9@���ET���=9@���T���`/9@���@KT���@.79@���  T���29@����#T���=9@���-T���`"9@����6T���-9@���ET���9@����JKT��� :9@����{HT���CT9@���6@T���@ 69@���@<T���A69@���:T���;;9@���>T����#Q9@����HT���@`9@���@QT���!9@���OVT��� 9@���TT��� 9@���?XT���`/9@����gT����G9@����9nT���@9@���@*oT���9@��� lT���9@���jT���`9@���@mT����9@���sT���:@���nxT���`er:@���T���z:@���y}T���:@���yT���ǐ:@���uT���Ҭ:@���@zT���:@���@|T���Ί:@����΃T���=:@���FT���@:@���҃T���:@���ىT���:@��� T���:@���ŊT���!:@���OT��� :@���xT���` :@����ZT���;@���MT����#a;@���fT��� s;@���?T���!r;@����T���@ӆ;@���@ϪT���i;@���T���A;@���@ T��� ;@���@T���I;@����T���@;@���@T���`;@���T���@;@���T���;@���T���i;@����T���`;@���T���?<@���@;T���;@����T���;@���@T���;@����ΫT���@-;@���@T���;@���T���`;@���@:T����<@���ܲT���@.<@���@T���:\<@���T���ē<@���hT���`<@���ݭT����G<@����8T���+=@���VT���*=@���@[T���`4=@���T���jB=@���T���M=@���T���aj=@���@CT��� U=@����ZT��� x=@���T���=@��� T���=@���T���>@���.U����w>@���U���!>@����U����=@���@U���@=@��� U��� 2=@���^U���=@���U��� y=@���@ U���O=@����)8U����й=@���7U���=@���i7U���=@���@U��� V=@���LU���2=@���VU���9=@���YU���l=@���]ZU���`=@���@WU��� ~=@���TU���=@���SU����=@��� YU��� =@���@hU��� >@��� jU���@!>@��� \U���>@���5YU���@ >@���e[U���!>@���p]U���>@���^U���`_ >@���@_U���">@���@iU���#>@���&nU���@/>@���gU���`G>@���@*oU��� G>@���UuU��� J>@���FvU�����@>@����ZuU����:>@����pU����=>@����BnU���`Y!>@��� 1U���V>@����U����d>@���U���`n>@���U�����`>@���ಇU���k>@����rU���`~>@���FU��� u>@���eU���>@���U���>@����!U��� U>@���@ U���z>@���٥U���sj>@���U���[>@����U���d>@���U���o>@���U���@u>@����U���@>@���@U���>@����οU���@>@���U��� N>@���@U���is>@���XU���is>@����bU��� y>@���@"U��� V>@����U���>@���`U���{>@���U���i>@���U���FR>@���@ U���M>@���U��� yU>@���FU���e>@���U���`m>@���@U����t>@���@U���;{>@���@:U���q>@���@U���`S>@���U���P>@���hU���`G>@���U���r;>@���@"U���B>@���vU���`G>@���U���i>@����bU���l`>@����BU���i>@���QU���{>@���FU���>@���U���9>@����BV���Ʊ>@���QV��� ~Q>@���V����Sg>@���V���b>@���@V����R>@���$V���Y>@���&V���zd>@���+V���Y>@���1V���I_>@���6V���`g>@��� PV����GQ>@����!SV���[_>@���=VV���`\>@���@TV���L>@���@[V���`7>@���E_V��� />@���@umV���'->@���|V����C>@���ಃV���``[>@���@V����c>@���rV���`|M>@���V���2>@���NV���4!>@���nV���>@����{V���>@���O~V���7>@���wV���`'>@���rV���`>@����)pV���>@����9jV���@.'>@���kV���>@���`tV���>@���vV���F>@����rtV���=@���@lmV����=@���@nV���=@���MlV���@=@����gV���n=@���_dV���@=@���@dV���`=@����^V���@>@���`WV���@^ >@���>YV���>@��� \V���C>@���@m\V���=@��� XV���=@���WV���=@���ZV���@=@���iWV����=@����VV����=@��� XV����=@���=VV���==@���@[V���>=@���@"^V��� =@���FfV���;=@���=fV���=@���`V���@P=@����gV����Щ=@���@lV����ô=@���igV���o=@���nV���=@���@fV���~=@���@LaV���w=@����bV���@e=@���QV���Z=@����OV���@O=@���@*KV���Q=@���%GV��� A=@���@TFV���6=@���@@V���J.=@���@*CV���)=@����JCV���=@���GIV���@ =@���HV���@<@���EOV���=@����BZV����L<@����RV��� =@���VV���@=@���`YV����=@���y]V���@=@���_`V���@=@���XfV���I?=@���@hV���K=@���gV��� VT=@����sV���Q=@���6pV���Z=@���^qV����i=@���uV���@'m=@��� tV���x=@���|V���@u=@���iV���=@���V���`=@���шV���@-x=@���ɃV����u=@���V��� l=@���V���@f=@���@V���:L=@���V���H=@����QV���8=@���@V���a*=@���@*V���@.=@���@ V���@=@���@V���%O=@���#V��� >=@���@*V���Z=@���@:V���J=@����BV���oN=@���V����#=@���@"V���)=@���V���`_=@���nV���!=@���`V���t)=@���øV���"=@����οV��� 8=@���vV���:=@���yV���@=@���@V���U=@���QV���HP=@����V���`=@���V���!R=@���V���U=@���V����$@=@���@V���B=@���iV���T=@���@V���s=@��� IV���`=@���V��� ~=@���=V��� O=@���$V���`=@����V���j=@����!V���{=@����V����ʎ=@����V���d=@���V���`=@���@:V���ơ=@��� V��� =@���@2V����$=@���V���=@���QV���=@���@V����L=@����0V���=@���yW���s=@���� W���=@���@ W��� =@����W���=@���W���`ݭ=@����kW���`ܞ=@���@W���=@���@W���A=@����0"W���j=@��� 4W����֤=@����bFW���=@���RW���b=@���GuW��� V=@���@xW����=@����yW���@=@����0rW���!=@����pW���`=@����krW���=@���vW���=@���^}W��� =@���@vW���ǰ=@���@yW��� =@���XW���`ݭ=@���NW���@;|=@���W���n=@����ͤW����S=@���@2W���D=@���`tW���@=@���@"W���=@����bW���=@����ZW����$=@���@;W���@=@���W���=@���QW���=@���NW���@-=@���@W���=@���@W����ј=@����ZW���@]=@���@2W���@ԅ=@���W��� =@���@W���l=@���@W��� \_=@���@W���@_=@���@ǹW��� P=@���W����$@=@���W���8.=@���W���4=@���W���=@����JW���<@���@W���@<@����8W���!<@���@W���ơ<@���@W���k<@���W����<@���W���<@���@X���<@���@ X���<@���@ X���4<@���X���य<@����bX���࣠<@��� X���<@���nX���B<@���@X���<@���@X���t<@���@X���j<@���@"X���h<@���#%X���<@��� )X���<@����B&X���@<@���G!X����<@���`X���j<@����J#X���q|<@���@!X���w<@���X���@]~<@���@+X���u<@���~X���o<@���)X���P<@����,X����T<@���]2X���@Py<@���.3X����y<@����0X����h<@���@1X��� ye<@���@5X����Ml<@��� 6X���f<@���2X���X<@���@1X���;<@���8X���#<@����;X����w'<@���:X���@@<@����=X��� 7<@���=X���!<@���^AX���"<@��� @X���0<@����CX���,<@����ZMX����T<@���IX����<@����bBX���<@���@uAX��� <@���MX���` ;@���OX���;@���_X���;@���_X���Q;@���ZX���;@����TX���Q;@���MPX����;@���@*[X���R;@���aX���F;@���`X���`L;@���@:]X���`fV;@���<_X���ye;@����fX���K;@����jX���>Y;@���`pX��� v;@���`mX���jR;@���jX���P;@���kX���NK;@���hX���`5A;@����BbX���@<;@����[X��� E;@���@m\X���/;@���X^X���`;@���@cX���@4;@���@cX����|:@���^X���:@���@aX��� :@���@bX����T:@����cX���:@���<_X��� :@��� ZX����:@���@\X��� Vt:@���\X����vh:@���YX���c:@���VX���`X:@����VX���QH:@���� TX���kA:@���QTX���P):@���RX��� :@����MX��� x:@���@QX���A:@���@2PX���9@��� LX���@X:@���JX��� :@����HX���@9@��� VX����9@���@VX���9@����WX���9@���^X���9@���gX���@:@���@mX���@ :@���`xrX��� :@���`DX���� :@���@UX��� :@���pX��� %:@���7X���;:@���X����L=:@���X���d:@���@[X��� b:@���X���@(l:@����X����~:@���@ X���H:@����ZX����:@���XX���:@���_X���@�;@����ZX���@ ;@���6X���@;@����X���@dH;@���@2X���@ڐ;@���X���^;@���@CX���b;@��� X���`;@���yX��� x;@���qX���;@���X���@;@����Y���`<@��� Y���y5<@���:Y��� g<@���Y���@X<@����)Y���<@��� Y���`<@���2$Y���@<@���`*Y���@=@���1Y��� ,=@���1Y��� ;=@���(AY���@{c=@���`0BY���`s=@���IY���}=@���@ OY���=@���`RSY���=@��� SY���`=@���`VY���=@���YY���@=@���bY����=@���@bY���=@���dY����=@���YuY���=@����$Y���!=@���ࣘY��� =@���@Y��� &=@���൰Y���=@���rY���e=@���൸Y���@.W=@���@3Y���b9=@���Y���`R7=@���`BY���==@���Y���`R=@���`Y���@�=@���`Y���;<@���Y���@P =@���`Y���`/&=@����Y���`(=@���Y���@9=@���Y���HP=@���QZ���=@����+Z���=@��� +Z���`/>@����3Z���@Y>@���@7Z���>@�����HZ���>@���QZ���>@����_Z���C>@����wZ���J?@���Z���@y?@���}Z��� ?@���LZ��� ?@���Y [���`?@���T [���BU?@���`[���BU?@��� 7\���`?@���@ͳ\��� @@@���\���[@@���a\��� W@@����G]���D@@���M]���X@@��� J]���@ V@@���I]���@O@@���@WG]���N@@���zH]���@U@@���L]���0]@@��� N]����<[@@��� O]���`_T@@���+Q]���@?X@@����Q]���`@@���Y]���@@���zi]���a@@���`ņ]���@@���]���q@@���L]���`@@���B]���@@@����]���@@���]���@@���@]��� @@���ࣘ]���|@@���@]���@@���]���A@���c]���\A@��� J]���tA@���]���A@���]���I'A@���@]���5A@���]���`/6A@���h]���|2A@��� ^���K=A@���^���:A@���@W^��� `CA@��� &^���`GA@��� 6(^��� OA@���%^���kYA@���`)^��� wA@��� &^���7A@����+'^���ǐA@���-^��� %A@���@/^���` A@���`x6^���UA@��� 7^���PA@���5^��� yA@���@^6^����A@��� B^���`A@����=G^����wA@���@R^���@A@���X^��� UA@����v\^���@A@���`^^���l�B@���Qd^���`/B@���ui^����^B@��� v^���`&B@��� {^���`CB@���+y^���`0EB@���|^��� =JB@���`+z^���QB@���`v^��� xNB@��� t^���!RB@��� o^���]B@���q^��� ,aB@���p^����5iB@���v^���*zB@���`z^���}B@���`0^���@yB@��� 8^���ρB@���^���B@���B^���@۟B@����ח^����B@���`^���`B@��� ^���B@��� 8^���`B@���5^���mB@���Q^���ZB@���k^���B@����=^���\B@��� Ԗ^���@B@���^����^B@���^���`B@����T^���`B@���`Œ^���!B@���^���`B@���@^���3C@���^���cC@��� k^��� C@���ki^���C@���d^��� C@����x[^���l�C@����\^���@C@���@c^���SC@���i^���B C@����=k^���`6C@��� n^���DC@���p^���QC@���u^���` C@���@{^��� C@���~^��� C@���`}^���3C@��� ^���C@���^��� C@���^���C@���ٙ^��� C@���@Ϟ^���@.C@���^���`_B@���@p^���B@���Ǩ^���@B@��� s^���iB@���`+^��� C@���^���@B@���`ž^��� C@����O^���jC@���Խ^���`C@���p^���|*C@���3^���Z'C@���O^���`9C@���Q^���|RC@���^���[wC@���^��� {C@���@^���sC@���@^���`0C@���^��� xC@��� !^���`C@���^���C@���@E _���`qD@���_���!D@���@_���`BD@���@_���@h\D@��� _���XD@���`T _���`/fD@���h_���@WkD@����)_���`mD@�����_���`AnD@��� _���`cD@���`T_���~D@���_���@FD@���`_���|D@���_���D@��� _���D@���b_���xD@���z _���`0D@��� _���\D@�����_���E@���_���` E@��� n_����+E@����v_��� PE@���_���_E@���@"_��� DlE@���+_��� E@��� &_���`E@����;_��� &E@����_���`AE@���G_���'E@���D_���E@��� _��� E@��� _���bE@���h _���E@���� _��� E@���� _���9E@���_���E@����_���@E@���` _����5E@���@ _���`E@���_���`0F@����__���\6F@����_����MF@����_����OF@��� _���WF@���^���`uF@��� ^���@ۇF@���@W^���zF@���^���9F@���^���F@���^���`˵F@���^����F@���h^���@F@���^���`/F@��� ^��� `F@��� ^���`F@���Y^��� F@���`f^���@WF@��� ^���@F@���`k^���sF@���@^���F@���@G^���G@���^���@pG@���^���G@���^���G@���@ ^���@?G@����^���G@����d^��� G@����^���G@���^��� fG@���^���|G@���`x^���G@���^���G@���^���`G@���^���#G@���^���`&G@���@^���`G!G@���_����$G@���_��� $G@���@p_���@G@���@_���QG@��� \^��� 2G@���D^���2G@���`0^���|:G@���:^���` 5G@���B^����7G@���@^����?G@����M^��� GG@���@^���1TG@���:^���`GYG@���T^���`[G@���^���\G@���+^���R_G@��� _���]G@���_���`_G@���_���@rG@���_���lG@���`_���rG@��� ^���|G@���^���~G@���@_���G@���@_���G@���_���` G@���@_����|G@��� _���@-xG@���`+_��� G@���@@_���@G@���u_��� G@����x'_���� G@���-_���H@��� *_���D#H@���)_���+H@��� |-_����e3H@����;$_���`0H@���@_���H@���`^���@H@���@G^��� >H@���^��� H@���^����<H@��� ^���8H@��� ^��� H@���^���`AH@��� 8^���H@����+^���H@���^����H@���D^���7H@���@ͷ^��� H@���@ ^���@H@���^���H@��� \^���PH@���^���` H@���^��� G@���٭^��� G@���Ѱ^���G@���|^����5G@��� ²^��� gG@���@^^���G@���ɷ^���`G@���^���G@���`^���G@����^����G@���^���`G@���B^���G@���+^���*G@���!^���@G@���c^���൸G@���3^���G@��� ^���G@���`f^���G@��� s^���G@����^���`G@���^���G@���^���@.G@��� ^���bG@���^��� G@���`Ş^���G@���^���G@���z^���DG@���Q^���G@���Y^���[G@��� ^���G@���`ܪ^���G@��� ^���`G@��� ^���2G@���^���G@���^���'G@���@3^���G@���^����G@���@^���`G@��� ^���G@��� &^��� G@��� 8^��� G@���@@^���QG@��� ^��� fG@���`^���G@���९^���G@���`f^���ߛG@���^��� G@���^���JG@���@ϲ^����G@���^���@XG@�����^���G@���`^��� G@����+^���G@���ּ^����ɏG@���`x^���(G@����;^���`6G@���Ѹ^��� G@���=^���`G@����^���`G@���z^��� UG@����^���G@���z^��� OG@���@^��� `G@���൘^����G@���@^���@G@���^���[G@���^���G@���`f^��� G@���ޔ^��� &G@���`Ś^���� G@���@^^���KG@����$^���`G@��� ^����G@���ɋ^���9H@���^����< H@��� ^���@H@���I^���'H@���3^��� gH@���@Y^���[H@���:^��� H@���T^���'H@���^���H@����^���H@��� ^���'H@���D^��� U%H@����ן^���/H@����^��� D4H@���^���`6H@����v^���r3H@��� a^���B5H@���^���R?H@����f^���bAH@���`^���3:H@���m^���>H@����ן^��� ~9H@���a^���;H@���z^��� xFH@���Q^���`HH@����)^���`0MH@���^���XH@��� ^���`A^H@��� ^���`cH@���^���@W[H@���^���PiH@���^���`nH@���ް^���`wH@����׳^����ewH@���`^���D{H@���׮^���zH@���w^��� H@���V^���H@���@@3]���`H@���3b\���`H@���+[���H@����Z���H@��� Y���`H@���Y���H@���LX���H@���W���H@���W���`H@���@W���@ H@���@W��� 6H@����lW���0H@���@:W���uH@����֬W���)sH@��� W���mnH@����W����GnH@���-W���`)cH@���W��� YH@��� ّW���YH@��� W���UH@����xW���`PH@���rW����FBH@���iW���BH@���]W���GH@��� :]W���(LH@���`%WW���MH@���VW��� NH@��� OW���@QH@����(W��� DH@���'W���?H@���,W���=H@����2,W��� 8H@���@W���+9H@���@W���-H@����JW���H@����W���@H@���@<W��� 'H@���@W���1,H@����SW���K-H@���5V���`/H@��� V���cH@��� V��� H@���@4V���H@���aV��� HH@���qV���\H@���V���`H@���ԱV���@ H@���iV���� H@���V���`r H@���@V���`H@���-V���` H@���@V���H@���yV���G@����*kV���@H@���@eV����H@���@UeV���l�H@���VV��� gG@����,V���` H@���@V��� 'H@���@vU���@XG@����U���G@���?hU���`՜G@���E7U���sG@���@1U���SG@���-$U���`;G@���`U��� :G@��� U����B>G@��� U���`DG@���U��� OBG@����B U��� f6G@���@]U��� G@���^T��� , G@����T����G@���@T���@@G@���T���G@���AT��� F@���@ T���F@���ŢT���F@���@T����FRF@���gT��� E@���VT���E@����T���`xE@���T����́E@����tT���{{E@���ʞT���*jE@���aT���`6`E@���^T��� 7OE@���T���GE@��� WT����GE@���T��� GE@���@T����.E@���T���`'E@���T���&E@����T��� g%E@����JT���#E@���`?T���* E@���T��� aE@���T���E@���T���� D@��� T����D@���7T��� xD@���@+VT���E@���@OT��� E@���@T����./E@����9T���2E@���S��� gE@���QS���`mE@���@S���DuE@���S����|E@���RS��� ւE@���@S����.E@���jS��� ŊE@���@2S���ÌE@���@S���@E@���S���ڢE@���S���E@���S���@E@����\oS��� E@���2S���`E@���S��� g F@��� j`���L@���V`���ΚL@���`���̜L@���`���DL@���`���`AL@���``���ൠL@���`t`���`NL@���z`���`L@���`����L@��� `���!L@���@`���`L@���@`���̬L@���`���`L@���M`���@.L@���Q`���ாL@���`���L@���`���JL@���`���L@���`���L@��� `����M@���>`���M@����`���M@���@`��� M@���@3`���@FM@����)`��� M@����`���  M@���`���.M@���@`���14M@����`���@o.M@���Q`���M@���`���M@���v`����M@��� j`���`qM@��� &`���M@���`���` M@���`��� L@���`���`L@���`���L@���=`��� L@���@ `���L@���@`���DL@����`���1 M@���_`����M@���'`���L@�����`��� L@���>`���sL@���`���L@��� e`���@L@���`��� L@���_`���lL@���`����L@���`����ML@���ٿ`���:L@���#`����wL@��� `���@-L@��� `���L@���H`���L@��� X`���`GL@���``���@oL@���`t`���DL@���`���`L@���`"`���`YL@���``���@L@��� j`���L@���c����L@���@c���@�M@���@ !c���\M@���!c��� &M@���`$c���@ M@��� X'c���M@��� 'c���M@���%c��� M@���@c���'M@��� J#c����#!M@���!c���&M@���zc��� M@���`Kc���3*M@���c���.M@���`c����2M@���@Ec���@F:M@���$c��� 6M@��� c���@=M@���c����<;M@���@c���4M@���c���3M@���0c���` -M@��� c���0M@���@ c���l(M@���� c���J6M@��� c��� 1M@���c���9-M@���@c���`.M@���c���@!M@���`+c���`M@��� /c���@&M@���`4c���Q(M@��� c����<#M@����b���z,M@���@b���@)M@��� !b���M@���c���@M@���`"c���SM@���@c���!M@���z c���M@��� c���(M@���c���ZM@���^c��� M@����c���@M@���@<c���M@��� c��� M@��� c���M@���c����L@���`Rb���N@��� XUb���@F"N@��� Ub���$N@��� Ob���.N@���@Rb��� /N@���`tTb��� *N@���Vb���-N@���@Vb���{3N@���Sb���<N@���`]Lb���@=N@���pKb���@o6N@���@Jb���4N@���@Db��� 7N@���XDb��� U5N@���Cb���@F2N@���`Rb���N@���e���&N@���@e���r+N@���,e���@)N@���e���I?N@���@ e���GN@��� Ae����JN@����e���@GN@���e����w?N@���`e��� 2N@���ൌe���`2N@���e���`(N@���e���&N@���-d��� M@���d���`GM@���d���3M@���6d���`N@���d����wM@���d��� , N@���`d���QN@����md����N@���`d����N@���d���3N@���Yd��� xN@����d���#N@��� d���)N@���@d����'N@���d����51N@���@d���/N@���@d����+N@���� d���s2N@���`d���0N@���~d���`4N@���`Kd���s*N@���d���(N@���`+d��� +N@���d���`/&N@��� jd���@pN@����d���M@���Dd���`M@���d����<M@����d���@M@���`d���`NM@���Gd���M@���-d��� M@���{b���`NM@���|b���7M@���|b���`M@��� wb���jM@���yb���`_M@���`Bxb���`YM@��� \ub���1M@���`fvb���RM@���@lb���`AN@����ib���N@���`fb���@N@���@bfb��� ,N@��� cb���0N@���cb��� ,N@���`}`b����M,N@��� \cb��� #N@���^b��� $N@���_b���`N@���ib��� N@����kb���iN@���Ckb���M@���`"nb���M@����ob���@M@���=nb���M@��� |ob���SM@���{b���`NM@���P5e���xO@���7e��� zO@���`B8e����#O@���6e���`O@���@6e��� O@����m<e���DO@����=e���O@���Be���tO@���� He����јO@���@Fe���O@��� Ge���(O@���[e����O@���be���O@���be���RO@���>qe���ϩO@��� ye���O@���:{e���O@���ye���bO@���we���@O@���we���@O@��� Sue���@pO@���se���O@���zte���tO@���le��� OO@���pe���[O@���ke��� gO@���ke���`O@���&be��� O@���be����O@���pYe���8O@���Oe���`O@��� Ge��� UO@��� /Ae���9O@���5Ae���O@���X8e��� >O@���� 0e���@O@���(e���O@���h&e���O@���#e���JO@���?"e���ZO@��� &e���O@����e���`ʦO@���@e���O@���@3e���ߓO@���M&e���O@���@,e����<O@���`02e���@ӆO@��� 1e���O@���P5e���xO@���`���@.L@����`���@WL@���`���`Y!L@���>`��� GL@���`���@WL@����d`����wWL@���``��� OL@���p`���bQL@���`����ZL@���`���XL@����O`���NL@��� /`���@LL@���`���:TL@��� \`���`L@���@*`���`VL@����;`����5YL@����`���@iL@���``���hL@��� `���@iL@��� `���`pL@��� J`���pL@���`���tL@��� `���ZxL@���`���L@���_`����L@���`���L@���``���ஆL@���``���L@����`���L@���z`���`_L@���`���L@����`���`L@���`���)L@���`���IL@���`��� gL@��� `���UL@���`���L@���:`���zL@���X`���[L@���P`���ٰL@���`t`���@L@���@ `���@L@���6`��� L@��� `����5L@��� `���`GL@���`���`ݽL@���@`���kL@���Y`���7L@���l`����L@��� `���3L@���>`��� L@���6`���`L@����`���L@��� X`���L@���6`���L@��� `���IL@���@`���@FJL@���`���@.L@���a���@iQ@���`a���@GP@��� a��� O@���a��� _'N@���@a���`qN@����ma���'N@���@Wa���N@���ua���+N@���-ba���@-N@����ba��� (N@��� fa��� ` N@���aa���`M@����Va���@M@���@Ta��� HM@���`Ra���M@��� ?a���`͹M@���@?a��� M@���2a��� M@���Y/a���M@����;0a���xM@���/a��� tM@��� -a���tM@���a���@'M@���@a���`M@���ba���M@���a��� M@��� a���LM@��� |a��� NM@���a����M@���@ a���'M@���'`���M@���v`���M@���`���LM@���@`���M@���`���M@���`���`M@���Q`����M@��� `��� %M@���� `���M@���`��� 6M@���`���M@���@`���@}M@����`���r{M@���``����wM@��� `���mM@����v`���\M@���ݵ`���:LM@���`���J6M@���O`��� H0M@���@b`���bM@���``���`M@���Ô`���@@L@��� A`���3L@���NJ`��� NL@���@`��� L@���L`���`nL@���{`���\fL@���z`���(LL@���Cq`����_LL@���d`���J6L@���X`���`.L@����T`���!L@���N`����L@��� AM`���~L@���UG`��� L@���B`���L@���`t@`��� L@���@`���K@����E`���`GK@���`D`���mK@���?`��� K@���F`���|K@��� /K`��� yuK@���@R`���eK@��� XS`��� xfK@����mR`���`mK@���U`���3bK@���@V`���@FbK@����OW`���`0eK@���U`��� fK@���,W`���xK@����W`���`N{K@��� /Y`����eK@���6Z`���@FbK@���\`���cK@����]`���`oK@���_`���`݅K@���`Z`���`0K@��� JW`���K@���� X`���ߋK@���� Z`���@FK@���0]`��� K@����d``���`K@���=b`���8K@���a`��� =K@���]`���:K@���`BT`���դK@���@bT`���஦K@���@T`���`K@���Z`���@K@����[`���K@���X\`���@FK@���^`���rK@���Xf`��� K@��� c`���L@���`T``��� L@���Qj`���K@���k`���2K@���@m`����L@��� J{`����K@���L}`���`K@���x`���K@��� /y`���@.K@���{`���K@����z`���K@���$|`���K@���`���`K@���}`���K@���`~`����$K@���@`���K@���`���@K@���``���K@���``���JK@���b`���@hK@���݅`���` K@���`��� %K@���@`���K@���`���`K@���`���K@����2~`���mK@���~`���`L@���`x`����5L@���s`����L@���o`��� DL@���|`���BL@��� `����-L@��� `��� >L@���`���@AL@���>`���@pEL@���‰`����#QL@���Q`���BML@���`���ZPL@��� A`��� DTL@���``��� VL@���Ր`���`ZL@����׏`���`L@���`���`jL@���`���` }L@���@Ƙ`���@zL@���``���~L@��� S`���DL@���@`���L@���C`���L@����`���|L@���`���` L@���`���tL@����`���\L@���X`���`AL@��� |`���`_L@����`��� xL@���`���`ģL@���`���`L@���`���L@���`���`L@���`խ`���@hL@���v`���L@���`���@L@��� e`����L@���`����L@���ٯ`����<L@����`���L@���F`���`L@���F`���3L@���p`���`L@����`���lL@���ྴ`��� L@���``���L@���`���L@���@Ϭ`���{L@���`����wL@��� `���`L@��� ұ`���L@���?`���L@��� S`���L@����`���SL@���Ѳ`���L@���`ܲ`���� L@���q`���lL@����`��� L@���@`���L@���`k`���'L@���b`���L@���@`���`L@����d`��� L@���`f`���UL@��� j`���M@��� 8`���@�M@���``��� xM@���@w`���*M@���`���bM@���`��� >M@���ྼ`����L@����`���`M@���`9`��� M@���� `���r#M@��� \`���'M@���`]`���2M@���@w`���?M@���`��� =BM@���`���`@M@���@`����%M@���@`���M@���@`���PM@���`���`M@���l`���.M@���`B`���+M@���`���0M@���`���/M@���z`��� ~1M@���``���`>M@���``���@MM@��� `��� xVM@��� J`���SM@���O`���`HhM@���`���dM@���`���S^M@���`���|jM@��� `���`}M@���`���M@���`T`��� M@���`���M@���@`��� M@��� `����#M@���`����eM@��� `���`M@���@`���ߗM@���u`���M@���U`���{M@���`���aM@���`���i{M@���`���cM@���q`��� %WM@���5`��� ~QM@���'`���MM@���`��� +M@���`���%M@���@`���s"M@���@`���M@���``���sM@���`���Z M@���`���5M@���@`���0M@���``���/M@���`���`5M@���#`���`0M@����`����:M@��� `����>M@���``���(DM@���v`����5IM@���?`���@LM@���p`����RM@���`9a��� gM@����`���oM@����`���mM@���H`���qM@���`����<sM@���`���KuM@���@`���@-pM@���a���mM@���a���`M@���a���@hM@���`Ta���yM@��� a���@.oM@���a���taM@���a���_M@���D a���fM@���@a���`iM@���`Ba���sM@��� a��� {M@���Ga���D{M@���Da���tM@���@ba���M@���@wa���1tM@���@a���`qM@���& a���M@���5a���@yM@���a���uM@���@*#a���mM@���#a���@hM@���Ca���`pM@���`Ta���`gM@���`a���@._M@���`9 a��� D\M@��� a���`WM@���`0a���@MM@���`] a���OM@���@E a���PM@���� a���TM@����)a���`NM@���@a���`CM@����a���;M@���@�a��� 1M@���`a���`N+M@���$a����e'M@��� a���(M@���`Ta��� ,M@���Z a���i3M@���` a��� /M@���@a���U4M@���a���@-0M@���@*a���`0M@���` a���J.M@���Y a���+M@��� a���8&M@���a���-M@���?a���(M@���a��� "M@���a���M@���@a���M@���`a��� xM@���`a���!M@��� na����w'M@���@a���@%M@���@a���*M@���a���(M@���@a���K-M@��� a���0M@���a����+M@��� a���1M@���(a���:M@��� 4a��� LM@��� 5a���OM@���7a���`ZM@���#=a���zdM@���@>a���sM@���5Ia���kM@���@ Sa���M@���Ra����$M@���Oa���RM@���Ma���[M@����mPa��� M@���`Ta���ؑM@���P_a���|M@���@Ega��� M@���5ga���ZM@��� ia���@M@��� ka���M@��� ka���M@���xa��� M@����F{a���M@���ra���KM@���@3qa��� M@���#oa���M@��� esa���`M@����sa���`M@����oa����M@���-na���` M@���^ia���@pM@���ja���@?M@���`ja��� M@����dha���M@���ja���`/M@���`Tja���2M@���`}ha���M@��� /ga���`M@���lia���M@���@ha���jM@����aa��� DM@���gca���SM@���ga���`M@���$pa���SN@���ra���l�N@���`ra���`M@��� ua���@M@���@za���bM@����a���`M@���`Ӕa���M@��� ɭa����$M@���@a���M@���@ a���@M@����;a���M@���@a��� , N@���� a��� N@���a���N@���@Ʈa���` N@���?a���N@���a��� N@���@a���M@���`a���@N@��� a��� &N@���,a��� =N@���@ba���`M@���F�b���(N@���$�b���`N@���b���`N@����b���kN@���_b����N@���`b��� x&N@���@3b��� $N@����b���&N@���Pb���=N@���_b���<N@����b���{;N@��� b���?N@���`"b���SFN@���_b���TN@���Fb���9UN@���b��� [N@���� b���`VN@���'b���S.N@��� /+b���@-N@���@4b���;N@���_<b���`A>N@���`o8b���BEN@��� 3b���:TN@���@b4b���`AVN@���@:b���ON@���@;b���bQN@���`:b���`XN@���`x>b���PN@���g?b���`SN@���u=b���XN@����=b���jZN@����Eb���PQN@���Hb���QN@���ZHb���:TN@���@b��� %_N@��� Ab���`eN@����)Hb���\N@���Ib���\N@��� Ib���)cN@���Ob���`VN@���`Rb���YN@���DTb���`6XN@���Vb����_N@���_Fb����vhN@��� Gb���`jN@���@Fb���lN@���Bb���`jN@��� eGb���@FrN@����Ib����jN@���`Pb��� hN@��� !Wb����tN@���6Xb���@FzN@���`Rb���`wN@���`xVb���|N@���^Ub���:N@���ZRb���`NN@���@Sb���N@���Tb���`N@���Pb���@N@���Gb����N@���Hb���N@���Mb���@N@���`Rb����ѐN@����]b��� >yN@���`b���yN@���0_b���[N@����d`b���lN@���@db���� ~N@���`db����yN@����eb���yN@���`hb���@?N@���gb��� wN@���@wmb���@WsN@���`mb���vN@���lb���}N@���@nb��� OzN@����mb��� >N@���ob���N@���Fpb���` uN@���@Eqb��� wN@���`pb��� %N@���Uob��� ~N@���@qb��� N@����qb���rN@���@ sb���`N@���Otb���{N@���Lsb���@uN@��� &sb����nN@��� aub���`0mN@��� Sub����rN@���Uwb���@qN@���vb���PyN@��� &yb���`AvN@���wb���kN@���0yb��� ,iN@���{b����jN@���b���`xN@���Uyb��� UN@���@bvb���!N@����wb���)N@��� 8wb���N@���@b��� N@���qb���jN@���`ob���`N@���b���N@��� jb���`݅N@����db���[N@���^b���}N@���‡b���N@��� Jb���N@���Їb���yN@���hb���{N@��� b���moN@���b���`kN@���@ώb��� gN@���@b���dN@����2b���`N@���`fb���VN@���@3b���YN@���@Ɛb���aN@���@b���cN@��� sb���_N@���`0b���UTN@���yb���PN@���`ӈb���`N@����b���`^N@��� b���@.WN@���Qb����$PN@���Qb��� DN@���b���JN@���b���@EN@���b���`=N@����b���b9N@���юb���`EN@���@ϊb����@N@���b���8N@���0b���;N@���Hb���@EN@���مb��� ?N@���b����LN@���Ub���HN@���~b���`@N@���b���<N@���}b���);N@���`}~b����7N@���…b���` 5N@���b��� /N@���@b��� ,N@���b���`q,N@���`ӆb���@W+N@��� nb���S&N@���� b���@? N@���b���` %N@���&b���` N@���yb���N@����b���N@��� b���N@���~b��� xN@����b���1N@����b���N@���b��� N@��� b���N@���:b��� ON@���Qb���N@���gb���@?N@���?b���SN@���@b����N@���b���tM@���Ðb����N@���b��� OM@���`b���M@����b���`M@����b���IM@����b���M@���`Bb���`M@���@<b���M@���Cb���@pN@���zb���7N@���6b���`�N@���`]b��� M@��� Sb��� M@���^b���`GN@���5b���` N@����Ϋb���@N@��� Xb��� %N@����b���`N@���-b���M@���îb���M@���b���M@���`b��� M@���b���SM@���`Ӱb��� M@���b���M@���@b���M@���@<b���`M@���`b��� >M@���`b���!M@���lb����M@���&b��� M@���b���M@�����b���`M@���˷b����MM@��� \b����M@����Ob��� M@���`b���8M@���@b���@FM@���pb���M@���@b����^M@���`ob���QM@��� |b���M@����b���@M@���b���DM@���b���@WM@��� b���M@���b��� M@���b���:M@���b��� =M@���pb���M@���'b���rM@���@wb���kM@���b���:M@����b��� M@���b���M@���@b���M@���Fb���M@���gb���M@���@Eb���M@���&b���M@���`b����M@���`b���` M@���b���|M@��� b���`6M@���b���`/M@���b��� M@���Yb���֛M@���b���`ěM@���@b����5M@���`ob���` M@���>b����M@��� &b���M@���Fb���@•M@���Fb���`_M@���b����M@���`Kb���ஞM@���b���`M@���@wb��� %M@���b���zM@�����b���9M@���b���βM@����b���ԵM@��� b��� UM@���`xb���M@���Vb���M@���Hb���M@����2b���`M@����b��� M@���`fb���bM@����b���M@���`Bb���`0M@��� b���)M@���&b��� M@���b���M@��� b���M@���b���7M@���`0b���M@���ub���ZN@���`b���QN@���`]b���`A&N@���b���`.N@���b���`Y1N@���b���(DN@��� Sb��� OZN@���b���`]N@����b���dN@���lb��� `{N@��� b��� N@���b���N@���b���@XzN@��� b���sN@���úb���|N@��� eb���lN@��� \b���`pN@���@b���`6xN@���b���~N@��� b���`NN@���@b���kN@���@b��� N@���`ob��� N@���`b���DN@����b��� xN@���?b��� N@���lb���@ӾN@����db���`N@��� b���KN@����ܽb����N@���ݿb���N@���Gb���N@��� |b���`qN@��� Ab����N@���qb���`/N@���`b���N@���� b��� N@���Mb���N@���b���IN@���b���)uN@���b���`0mN@���b���fN@���b��� ^N@���5b���`[N@���@wb���B]N@���M c���@?N@��� c���`;N@��� c��� g5N@���c���`3N@���Dc��� gN@���Lc����wN@����2c���@!N@���`]c��� N@���@c���`&N@���6 c���@'N@���`"c��� #N@���c���%N@���c���@h$N@���c���N@���@c��� N@���`fc���N@���`c���M@���c��� M@���&c���M@��� )c���M@���`}$c���@?M@���@ c���aM@����c���M@���l!c���|M@���@<'c���jM@���)c���@M@���)c����5M@���-c��� M@���V*c��� M@����2.c���` M@���`.c���@M@��� 1c����vM@���2c����M@���`x6c��� M@���2c���M@���@2c���@.M@���';c���`M@���`:c���@pM@��� 7c���@M@����7c����$M@���`Dc���QM@���@3Cc��� M@����m>c���@oM@���Cc���M@���Dc��� %M@��� Dc���@M@���XHc���3M@���Ec���{M@���`kFc��� %M@����Ec���@WM@���LAc���*M@���`6c���M@���2c����wM@���*c���`vM@���L)c��� pM@����;(c���@nM@����O)c���kM@���@*+c���lM@���D0c���bYM@���`4c���QPM@���@<c��� =JM@���=c���`@M@���Cc��� &>M@���`"Bc���4M@���@c���`2M@����Ac���`/.M@��� XKc���$M@���YKc��� M@���&Fc���`(M@���Cc��� $M@���FDc���`"M@��� Gc��� M@���Dc����^M@��� Fc���`M@���Ic���`6M@���@<Gc���@M@���Gc���lM@���@Jc���M@���`xJc���@X M@���Mc���M@���Oc���M@���`Nc���B M@��� Oc��� M@��� 8Sc���M@���LQc���@-M@���-Rc����<M@���FTc��� M@���Uc���M@���@Vc��� M@���Wc���@M@���@`c����<M@����cc���L@���bc����L@��� ec��� fL@���gc���lL@���gc���@L@���@wkc���`AL@��� sic���L@���kc���L@���qc���L@���sc���L@���Mtc����<L@���@rc���L@���@rc����L@���`txc���L@���}wc���L@���yc���KL@���=zc���@FL@���y}c���rL@����mc���:L@���рc���@FL@���pc���`L@���Xc����wL@���@wc���lL@����ܑc���L@����΋c��� L@��� c���@L@���Hc���̜L@���c����L@��� ɋc���*L@��� &c���`L@��� c���L@���c���L@���`}c���IL@���uc���@}L@����c���`L@���`Tc��� yL@���pc��� DL@���`Kc���L@���c���@htL@���@c���@XrL@���Oc���}L@���c���tL@���@c���srL@���̢c���kiL@���c���lL@���c���gL@��� ac����cL@���@c��� UeL@���c���mL@���hc��� lL@���c����hL@���@c���`aL@���_c���aL@���5c���@\L@���ྮc��� `SL@��� ec���@NL@���c���ML@����c���SVL@���@c���`NSL@���c���HL@��� c���@WCL@����c��� ~IL@���@*c���RGL@���c���bAL@���`c���;L@���c��� ?L@���`Kc���2;L@���Gc��� ,9L@���@c��� $L@����c��� L@���5c���L@����c���@h$L@���� c���*L@���`Tc���+L@���@c����%L@���Xc���@o&L@���`c���$L@���c����#!L@���`fc���`L@���`Bc���@L@���@c���`L@���`Kc���L@���c���`L@���pc���`L@���@c���L@���`c���`6L@���@c���`N L@���Pc���L@���c��� L@����c���L@���c���`L@���pc����5L@���c���@.K@����c��� L@���c���K@���� c���L@���Yc���`L@��� c���aL@���c���L@���c���@L@���`c���@L@���c���8L@����c���`L@���`Tc����^ L@��� c����vL@��� c��� L@���c���aL@���c���K@���c���@K@���c���`H�L@���Yc���bL@��� c���` K@���@c����eK@���@c���`K@���c���K@��� Sc���K@���@*c���K@���$c���K@���:c���K@���#c���2K@���c����K@���� c���@K@���c���bK@���c���ZK@���Hc���K@��� c���`GK@���c����K@���6c���`K@��� c��� xK@����c���`K@���c��� K@���@c���K@��� 8c���'K@���@c���@K@���c��� K@��� /c���DK@��� d���KK@����d���@K@���@�d���@K@����md����#K@���@d���K@���`Kd���K@���@E d��� >K@��� a d���iK@���5 d���cK@��� d����K@���`d���K@���#d���7K@���@d����K@���`d���K@���@d���`K@���`d���BK@���d���@K@���d����5K@���Ud����K@���#d����#K@���d���K@���d���K@���ud���@K@���'d��� K@���`0d��� K@����/d���K@����+d���PK@���%d��� OK@���$d���K@���$d���@pK@���5-d���`K@�����2d���K@���6d���K@���_6d���K@��� e=d��� K@���V@d���JK@��� jAd���`K@���>d����wK@���yAd���K@���Cd��� DK@���Cd���@ÔK@���yEd��� K@��� AGd����K@����2Fd���K@���,Gd���)K@���Hd��� =K@���DJd���ൈK@��� \Kd���K@���Nd���K@���Pd��� K@���`oPd���K@��� Kd��� K@���Qd���K@���@bTd��� K@���@Vd��� K@��� Wd���K@���Sd���K@���@Td��� >K@���@Sd���@…K@���Qd���zK@���Ud���ീK@���Sd���tK@���`Td���SK@���Vd��� &~K@���Wd���`xK@����[d��� wK@���0_d���[K@���U]d���K@���bd���K@���ed����K@��� gd����K@���`fd���kK@����ad���{K@���^ad���xK@���`kjd���gK@���6ld����lK@���`hd���tK@���@Ekd����uK@���`jd����<{K@���Dhd��� xK@����gd��� `{K@���@<id���K@���mjd���K@���@Ead���rK@���bd����eK@���@^d���K@���`Zd���K@��� [d��� K@���O\d���K@���`}\d���K@���>Ud���K@���Od���@K@���Od���@-K@���Sd��� K@���`KLd���K@���Bd��� >K@���4d���K@���`0*d���K@���`0"d���K@���vd����eK@����d���K@���d��� K@��� d���K@���@ d��� K@���Qd��� >K@��� !d���K@��� d���K@���gd���@K@���@d���K@���d���`K@���� d��� >K@���yd��� K@���@d����K@���`9d����K@���d���@K@���hd��� K@��� d����"L@���c���HL@����c���\L@���@c���7gL@��� ec��� cL@���`c���jL@���c���kaL@���`fc���@}L@����Oc���aL@��� !c��� ~L@���bc���L@���c���L@��� c���L@���c����L@���c���@üL@��� /c��� L@���@c���L@���qc���L@����;c���SL@���`c���`sL@���c���SL@���c��� %L@���`յc���@L@���@c���@XL@���`c���@L@���'c��� M@���Pc����M@����c����M@��� c��� EM@���`oc���M@��� sc���`NM@���c����M@���c���`&M@���c���;M@��� jc���`ZM@���¡c���z\M@����dc���`^M@��� |c���`HxM@��� c���@M@���@c��� \M@���c���ԍM@���� c���ƁM@����c���`mM@���c���`OM@���`]c���MM@���`0c���@RM@���:c��� ^M@���`c����jM@���c��� gmM@���`c��� ~yM@���pc���@h|M@���c���@o~M@��� c���@M@��� c���̄M@���c���M@����c���yM@���`xc���uM@���`c����woM@����ſc���sM@��� ec���tM@����c��� U}M@���$c����M@���c���؉M@���-c���M@����)c����5qM@���c���rM@��� ac���`vM@���@<c���`{M@����Oc���@-xM@���@c���8nM@���@*c��� ~aM@���c���@]M@���Mc���]M@���@bc���aM@���c����dM@���`"c��� gM@���6c��� gM@���0c���jbM@����c����IM@���c����?M@���@wc���95M@���`c���`2M@���c��� f6M@��� c���\M@��� \c���`kM@���c���kM@��� Jc���`sM@���c���yM@���`c���`wM@���c���BuM@���0c����dM@���c���bM@���c���`6pM@���@d���@qM@��� ad���@onM@��� 8d���`oM@���,d��� tM@���= d���yM@���`d����}M@���`4 d���IM@���V d���`M@��� Xd��� vM@���d���`GiM@���vd���'mM@��� d���pM@���"d���|jM@���`(d���`0eM@���(d���ZhM@��� *d��� &fM@��� (d���DcM@���+d���[M@���Q,d���`UM@���-6d���`GM@���`k8d����FM@���@6d���@NM@����7d���jRM@���`B8d���`NKM@���:d����$PM@���`oBd���IOM@��� |Ed���)SM@���`?d���WM@���=d���@RM@��� S;d���UM@���g9d���``M@���@6d����5aM@���4d��� xfM@���`]6d���iM@���8d���:dM@���`8d���hM@��� n9d���rM@���:9d��� |M@���U;d��� M@���:d����M@��� 9d���M@���`92d����M@���3d���ƑM@���`4>d���BM@����Ad���M@���O@d���� M@���>d��� M@���`>d���M@���`6d���@oM@��� |9d���@M@����d<d���@M@����Ad��� M@��� Gd��� N@���OFd����N@��� Hd���PN@��� /Ed���N@���@Dd���mN@���LId���cN@���`Hd��� N@���`fJd���N@���Kd���N@���Jd���`N@���@Od���`&N@���Kd����+N@���Gd���sJN@���$<d����YN@���Bd����MTN@����2Dd���D[N@���Cd���2SN@���@Hd���@oNN@����2Ld���7N@���Md��� %7N@��� XMd����0N@���Nd���.N@��� 8Qd���`,N@���Sd��� f&N@���Qd����M$N@����Qd���@ N@���`fVd���k!N@��� !Od���3N@���MNd��� %N@����Od���N@���@Od���N@���`KPd����N@��� \Sd���M@��� Xd���Z�N@���@Xd���M@���id���M@���zd���\M@���@d���@FM@���@ d���� M@���d���M@���d��� M@��� !d��� N@����d���`%N@���֔d���)N@���d���B%N@���,d����*N@���d���@?8N@���d���AN@���yd����EN@���@3d����#AN@��� sd����EN@���`d��� =JN@���`xd���`ON@���$d���YN@���pd���`_\N@���d���cN@���`0d���*jN@���`՛d��� lN@���d��� sN@���Dd���SvN@���ښd���nN@���`d���`qtN@���Vd���tN@���Qd���zlN@��� ɕd���`iN@��� !d���`eN@��� d���@-XN@���`d����vHN@���d���`FN@���`d���RN@���&d���TN@��� Xd����`N@����{d���)cN@���yd���_N@���zd����PN@���yd���jJN@���lud���)KN@���qnd���`VN@����md����ZN@���od���@-`N@���@md���`N@���@*wd��� kN@���C}d���1lN@���{d��� oN@��� eud���`nN@���hrd���tN@���`0xd���`wN@���Xvd���i{N@���gud���~N@���yd����M|N@���@~d���mN@����בd���lN@���@d���rN@����d���`vN@���Ld���RwN@���d����rN@���@<d���`xN@���Zd���yN@���d���:tN@���`Td���uN@����;d���`{N@���6d��� N@���Qd���N@���`d����N@���d��� N@���d���IN@��� ɟd���@oN@����dd���mN@���bd����N@���d��� ҏN@�����d���N@���d��� =N@���@d���`qN@���Ǧd���`N@���d���N@���d���@ǜN@���d���ൠN@���Od���N@���`9d���`N@���@d���N@���d���`N@���Dd���:N@���@d���N@���d���N@���=d����MN@���Cd���N@���d���)N@���`d���͛N@���d���`GN@���d���N@��� nd���؉N@���˯d��� N@���d���N@����md��� &N@��� |d���N@���d��� N@��� ed���@N@���`d���N@���,d���N@���Xd���@pN@���d���\N@���d���`_N@���`d���@ۿN@����d���N@���Fd���N@���@3d��� `N@���`d���N@���d���N@���>d���`N@���d���@N@��� d���N@���,d���@XN@���d���zN@��� d���N@����׷d���N@����2d���`O@��� d���PO@���@d���`.O@����d��� 3O@���d���CO@����d���DO@���yd���@<O@���@wd���@7O@���Zd���@o6O@���d���j:O@���d���`:O@����d���>O@���`d����=O@���@Ed���zDO@���@Ed���GO@���@d���@IO@���Dd����eWO@���Ud����w_O@���d���SVO@���@d����NO@����ܙd��� %OO@���`fd���@dO@���`td���` eO@���d���kiO@���`d��� |O@���`od���aO@���5d���(O@����md���lO@��� d���*O@���d����vO@���d��� O@���#d��� O@���@d����#O@����wd���O@���Ztd���`O@��� /ud���SO@���qd���`YO@����qd���JO@���qd���BO@���@ld���LjO@���@jd���΂O@���]d���IO@���Yd���~O@����Ud���O@���@Hd���O@���-Jd��� O@���Bd����O@���v@d����O@���:Ed��� O@���Dd���@oO@���#d���@O@���ld���@O@���`td���JO@���@d���@.O@���@d����# P@���Dd����=P@���(d����#P@���,d���`iP@���:1d���@P@���@.d���z P@����m,d����]"P@���%d��� P@��� d��� P@��� d���"P@��� d���I#P@���@d���&P@���d����#-P@����;d���3P@���q$d����=:P@���#d���:P@���`B"d���J:P@���d���<P@����%d���;P@���0-d���@1P@���1d���/P@���6d����D4P@���9d��� 4P@���6d���s2P@���<d���/P@���$<d���-P@���gEd���,P@���qRd����U!P@���Td���P@���6Td���P@��� JYd���P@����[d����P@���`4^d���"P@���@bdd����e'P@���dd���*P@���`kld���@%P@���@dd���@ P@���gad���P!P@��� ead���rP@���Odd���@oP@���Mfd���@OP@���@ld���!P@��� jwd����$P@���d���@g%P@���zd���P@���d���*"P@���`ʞd����P@���@d����,P@��� !d���P@���@d��� $P@��� &d����D(P@���d���@.P@���@Ed����3P@���Vd���4P@���d���@:P@���d���@<P@���`Td���?P@���@d���ICP@��� \d���`EP@���-d���IP@���d���`yMP@���@d����PP@���bd���*RP@���d���9QP@���pd���@NP@��� d����JP@���d����GP@����d����GP@���Pd���KP@����d���`OP@���Xd���PP@����d���)OP@��� d���PP@���`Bd���[SP@���qd����UP@���d���@\P@��� d���2cP@����e����#eP@���$e���'iP@����e���)kP@���d���@pP@����e���IkP@���Ue���hP@���d����lP@���&d���@mP@���`xd����mP@���`Bd����nP@���d���9qP@���Fd���ArP@����d���{sP@���d���@yP@���`d���wP@���d���wP@����d���{P@���d����~P@���Ud���P@���`d����P@���d����P@���d���@P@���@d���P@���`d���@GP@���`4d���(P@��� d���P@���ǻd����P@���@d���P@���'d���@_P@���@bd���@ۛP@���d���P@���:d����P@���d���)P@���d��� ʦP@���vd����P@�����td����MP@���zd����VP@���xd���SP@����2xd���P@���@|d���@P@��� S{d����P@���~d���P@��� d���njP@���Md���P@���|d���ތP@���{d����ɇP@���@vd���@ P@���`+\d����P@���=Xd���@܆P@����Ud���HP@���COd���P@���VLd����P@�����Bd���@hP@���P=d���@xP@��� e=d���~P@���� :d��� f~P@���:d���`P@���`:d���ՀP@���`2d���P@���+d���@GP@���*d����P@���`"d����wP@���@E#d���P@��� s#d���P@���@"d���ևP@��� d���ċP@���d����EP@��� #d���tP@���=0d����P@���`]<d����ɗP@���=d���kP@��� |;d���aP@���O<d���kP@���>d���KP@���;d���P@����;d��� P@���@b>d���P@���@*Gd���`yP@���� Pd����<P@���ZTd���P@���FTd���ϹP@���Jd����UP@���`x@d����P@���`xBd���`P@���hBd���`P@���Q<d���@oP@��� 83d���ড়P@���*d���P@���L'd����=P@��� /d����P@���d���9P@���d���@%P@���d���P@���& d���@P@���d���9P@��� d���P@���Yd���P@���d���jP@���`}$d���@pP@����'d���`ԥP@���P'd���@P@���)d���AP@���60d���*P@���`<d���9P@����m<d���2P@���9d��� &P@����9d���P@���@4d����P@���`90d���`P@���� 0d���@P@���@:d���7P@����Gd����vP@���@Hd���@6P@���&Jd����P@��� |Id���@6P@���`xNd���IP@���Nd���HP@���@Jd���BP@��� 8Kd���SP@���Sd���P@����]d���P@��� [d����P@���wd���P@���`kxd���@_P@���byd���@P@����d���bP@���d��� P@���@5d����P@���d���Q@��� jd���@_Q@���d���BQ@���`9d���/Q@���`9d���@Q@���d���jQ@����2d���KQ@����d����Q@���d����Q@���d���k!Q@���:d���$Q@���d��� 7Q@���_d���`8Q@���ڢd����M8Q@���@d���;Q@���`}vd���`yEQ@����gd����^UQ@����ed���ZQ@���ed���YQ@���hd���SQ@����gd���`SQ@���cd���XQ@���cd���@N_Q@���=bd���@_Q@����bd���ZdQ@���dd���*fQ@���@ ad����iQ@���]d���lQ@���6^d���� nQ@���`d���@nQ@���Zd���uQ@���hRd���|Q@���Od���Q@���Od���`Q@���Jd����Q@��� \Kd���Q@��� j;d����Q@���q6d���@ Q@���U9d���@Q@���<d���@hQ@���:d����ӍQ@����<d����Q@���`@d���@-Q@���Cd���@Q@���h6d���ZQ@���4d���͏Q@���_d����Q@��� jd����vQ@��� d���@`Q@���`0d���Q@���d���@_Q@���@d���Q@���Od���Q@�����c���Q@���c���7Q@����c����5Q@���Zd���/Q@���@d���Q@���c���IQ@���`d����#Q@���`4d���Q@��� jc���Q@����c���`Q@���`c����MQ@���c����Q@���c����ɓQ@���_c���Q@���?c���`iQ@����c���`ݝQ@��� jc���Q@����c���Q@��� c���Q@��� jc����Q@���gc���@Q@����c���২Q@����d����Q@���d���ըQ@���`c���`Q@��� ec���@Q@���@c����DQ@���=c���Q@���@c���@Q@���@c���Q@���c���'Q@���c���PQ@��� c���aQ@���zc���Q@��� c���Q@���@c���`QQ@���`oc���tQ@��� ac����Q@��� c���ǴQ@���ٿc���`yQ@���`c���@hQ@���c����eQ@���� c���7Q@��� nc���Q@��� !c����UQ@���>c��� fQ@���Mc���Q@���`tc���Q@��� ac���kQ@����c����Q@��� yc���@Q@���6tc��� Q@����qc���@Q@���qc����Q@���Zzc���ξQ@��� c���Q@���`oc����Q@���c����wQ@���c���Q@���~c���rQ@���~c����]Q@��� sc���Q@��� ec���Q@���@|c���Q@��� }c���߳Q@���@ wc���Q@���@tc���Q@���5uc���@NQ@���@ sc���@Q@���@qc���Q@��� !qc���@Q@��� ic����Q@��� gc���@`Q@���ec���Q@���fc���@FQ@���Gic���@Q@���ec���Q@���@ cc���@gQ@����cc���Q@���bc����Q@���@Eac���@hQ@���@bc���Q@���`c���9Q@���z`c���IQ@���@ [c���@oQ@���Sc��� >Q@���@Rc���ֿQ@���Tc����Q@���LWc���:Q@���@Tc����wQ@����Sc���`Q@���@<Kc����#Q@���@Fc���Q@����)Dc����Q@���G=c���Q@���=c���Q@���pc���Q@���^c���Q@����c���Q@���@c���@ Q@��� /c����Q@����c���{Q@���c���qQ@���� c���Q@����c����Q@���� c���RQ@���  c���Q@���=c���@hQ@���c���Q@���c���JQ@���`c����UQ@��� |c���Q@����c���7Q@���b���֣Q@��� b���@GQ@���@b���Q@���Xb���qQ@���5b���1Q@��� b����Q@���Qb���@GQ@���b���@.Q@���`ob���`ݝQ@���gb���Q@���b����VQ@����b���Q@��� \b���SQ@��� b���@Q@���`kb���`Q@���b����MQ@��� Jb����eQ@���b���@Q@���Ob���@OQ@��� nb���Q@���_b���@.Q@����)b���Q@���`b����Q@��� b���Q@���zb���`Q@��� yb����Q@���Peb���|Q@���Fb���2Q@���`:b����Q@��� s3b���(Q@���1b���Q@����-b���@Q@���)b���Q@���b���8~Q@���b���Q@���b���@ Q@���@�b����Q@���b���Q@���'a���Q@���a����Q@��� na���Q@����a��� Q@���a��� xQ@����a���H|Q@���@a���@OvQ@���a���jvQ@��� a���rQ@���a���nQ@����ma���iQ@���`Ta��� hQ@���a����jQ@���a���@iQ@�����������$8M���'}A����)J���@>���s����������aM���`:@���` M���)@��� M���,!@���M���`@���M����?���`M���?���M���?���M���P?��� UL���@;?���`TL���@q?��� M���{?���� M���`t?����L���f?���L���@ ?���`L���%>���`$L���@>��� L���>���L���@>���L���`>���L���#>��� L���m>���`$L���,I>���L���0>��� L��� .>���L���4>���@L���@@>��� L���xF>���iL���J>���@EL���K>>���`L��� \/>���,L���>����|L���@>���eL��� >��� JOL��� @>���PL���`sK>����#L���`e>���`L���`C>���?�L���@>���@K���@;>����L���>���`�L���� ?���`K���4?���K����6>���4K���#>���K���>>���`K���>>���0K����>���/K���>?��� [K����S?���`K���`CE?���DtK���m`?���@EKK���xv?��� 2<K����֔?���`;K����)?��� K��� b?���K�����?����)J���?����J���~@����J���@���J���F@���J����.@���`<J��� I@����J���@(M@���J���AU@����)J���\@���@KJ���`_@���J���@@���`J���@���`$J����;@����J����Y@���`J���@@���J��� 8@���J���@���J���@@���J���vA���@dJ���!A���J����2A���J��� 9A����K���@cQA���K��� UA��� K���?XA���v K���`IA��� $K���`KA���D,K��� bRA���@#K���`BVA���@;$K��� QYA���U5K���`A���yK���'}A����kzK���`[xA����K���@cqA���K��� tA���`K���eoA���bK����/gA���K���`cA���`*L����rA���`#L���`tA����6L���EkA��� /L���eA��� brL��� TA���L���`*;A���L���@8A���@L���`S?A���� M���@A����M����`A����4M���`r@���$8M���@���V,M���`@����.M����O@���V,M����/@���UM���`T@���`< M��� @���M���@w@���`M���dp@���M��� 9f@���aM���`:@�����8������@K@���B@���@JR@���` F@���������QGM@BF@����#IM@���` F@jHM@~[:F@cǒ}VM@(.F@�"c|N@ )fs%F@���|N@���� &F@���yN@��� >)F@��� g}N@���`*F@`,N@:E7#F@NN@6L]MF@���{N@���+F@���\N@���0F@m[QnN@fF@l`8N@WvF@���N@���F@b>N@/F@��� O@���8E@��� O@���uE@���@O@���` E@���QP@��� (E@����;P@���@pE@���+QP@��� \E@���aP@����E@����tP@��� HpE@����P@���`E@����P@��� L6E@���@YP@���.6E@���`ށP@���e�E@���P@���e�E@��� P@���`D@���P@���`fD@��� P@���@3D@���P@���aD@���+P@���`D@���QP@���ࣘD@���@P@���֔D@���@P@��� D@���@P@��� \D@���`Q@���D@���Q@���`܆D@���GQ@���D@��� Q@���eD@���5 Q@���@D@��� Q@���@D@����Q@���`D@���= Q@���D@���Q@���wD@���Q@���`fnD@����Q@���-hD@���Q@���fD@���`Q@���XD@���#Q@���LD@���`�Q@��� KD@���`f"Q@���PD@��� &Q@����LD@���m(Q@���MD@���})Q@����$PD@����'Q@���uQD@���)Q@���@UD@����v(Q@����q\D@���%Q@���z]D@���[$Q@���`BnD@���%Q@����oD@���%Q@���uD@���`)'Q@���tD@����x'Q@���`wD@���\.Q@���L}D@���1Q@���D@���@7Q@���@D@���}9Q@���D@���@>Q@���D@��� DQ@��� D@���(EQ@����D@����CQ@��� D@���GQ@��� CD@���IQ@���jD@���`JQ@���D@����OQ@���<D@���`RQ@���`D@���`+VQ@���@D@���ZQ@���̼D@���YQ@����=D@���[\Q@���D@���m`Q@���@D@���iQ@���.D@���`vQ@���`kD@���@{Q@����D@���Q@���D@���සQ@���D@���Q@����D@���Q@��� D@���@pQ@���D@���@WQ@���D@���QQ@���� E@��� Q@���7E@���@@Q@��� E@���Q@���E@���@Q@���E@��� Q@���E@���@ϪQ@��� E@���-Q@���E@���׶Q@���#E@��� Q@���[ E@���Q@���`%E@����MQ@��� &E@���Q@���@#E@���Q@���`E@���Q@���E@���cQ@��� E@���`)Q@���E@��� Q@���E@���Q@���`E@���`Q@���@pD@����ܫQ@����D@���Q@���@D@���Q@���FD@��� Q@���D@���DQ@���@3D@���Q@���`D@��� Q@���D@���@YQ@����ôD@���@Q@����D@���תQ@���D@���Q@��� CD@���@Q@���­D@���8Q@���$D@���8Q@���ѠD@���෻Q@����D@���@Q@���D@���@Q@���� D@���Q@���D@���Q@����D@���Q@����D@���Q@���`RD@���@Q@���#D@���^Q@����zD@���`BQ@����BD@����Q@��� D@���`fQ@���8D@��� Q@���@.D@����)Q@���D@��� Q@���D@��� 8Q@���D@���`Q@���ۨD@���=Q@���@D@���Q@���D@���YQ@��� 8D@���?Q@��� 8D@���Q@���@D@���zQ@���HD@���`kQ@��� QD@��� Q@��� 8D@���Q@����D@���Q@���D@���+Q@��� D@��� Q@���יD@��� aR@���VD@���@R@���יD@��� R@���ࣘD@���` R@��� D@���r R@���D@���mR@��� D@���`}R@���@D@���R@����MD@����d R@���`D@���z R@���|D@���D$R@���@{{D@���m(R@���QqD@���@p.R@����BoD@����q8R@���7pD@���9R@��� oD@���L9R@���QiD@���AR@���pD@���`�CR@���oD@���@CR@���kD@���QIR@���lD@���@JR@���jD@���@JR@����hD@���&FR@���@bD@���@:R@���YD@���|3R@���\VD@���(1R@���HD@����),R@���JD@���@ +R@���2DD@���)R@���)BD@���8&R@���aBD@���p!R@���`RGD@���OR@����fGD@����R@���`ND@���@R@���LD@���TR@��� GD@����dR@���`BD@����R@���q;D@���@R@���1D@��� R@���@.7D@����fR@���@6D@���@3R@��� H8D@���R@����9D@���R@���@3;D@���@ R@��� :D@��� R@���$7D@���JR@��� /D@���\Q@����(D@���@Q@���p%D@���`)R@���!D@���R@���`D@��� Q@���[ D@���BQ@���@D@���@@Q@���@!D@���`Q@����D@���zQ@���D@�����Q@���D@��� Q@��� CD@���@Q@���k!D@���Q@��� D@���Q@���`kD@���Q@���aD@��� aQ@���`D@���Q@����=#D@���@Q@��� "D@���Q@���&D@����Q@���&D@���Q@���{*D@���Q@��� u"D@���Q@��� #D@���Q@���@"D@���۾Q@��� QD@���෷Q@��� D@���ԭQ@���`D@��� Q@��� D@���Q@��� D@���෣Q@����+D@���Q@���@.D@���:Q@���,D@�����Q@���70D@��� 6Q@���@{3D@���`+Q@���`�7D@���sQ@����;D@���@ Q@���@D@���Q@���\FD@���Q@���ID@���Q@���\D@���Q@���`D@����MQ@���bD@���Q@���dD@���TQ@���GiD@���`Q@���iD@���ެQ@��� (fD@���@Q@����zfD@���@Q@���-hD@��� ԢQ@���}D@���3Q@����ÄD@���@Q@���@pD@���mQ@����D@��� Q@���zD@���DQ@��� urD@���Q@���mD@��� ҇Q@���@iD@��� 8Q@���`bD@���tQ@���[D@���@nQ@���QD@����kQ@��� RD@���3bQ@��� dD@����O_Q@���dD@���c]Q@��� gD@���YQ@���@pfD@���@VQ@���`kbD@���pUQ@����z^D@���BUQ@���MD@����PQ@���@{KD@���zMQ@����GD@���PQ@���[@D@���UQ@���`)D@��� SQ@���$D@��� \OQ@���'D@��� NQ@���$D@���TQ@���D@��� OQ@��� HD@���`BFQ@��� D@���BQ@���D@����8Q@��� D@���}5Q@���D@���+1Q@����D@���>)Q@���uD@���s&Q@���D@���`}&Q@���D@���+-Q@���D@���@E7Q@���@#D@���@.?Q@����D@����@Q@��� D@����?Q@���D@���`9Q@��� D@���5Q@���8D@��� 3Q@���� D@���`B2Q@���` D@��� 3Q@���D@���-4Q@��� 8C@���`0:Q@���`C@���6Q@���C@���@3Q@���`C@���1Q@���RC@���24Q@����=C@�����4Q@��� lC@���1Q@���RC@���1Q@��� aC@����0Q@���C@���8.Q@����C@��� !+Q@���C@���(Q@���C@���Q(Q@��� C@���%Q@���C@���@Y"Q@���`)C@���@"Q@���`�C@���JQ@���C@���Q@���C@���GQ@����C@���P@����C@���kP@���@C@���`P@���C@���P@���`�C@���P@���oC@���QP@��� (C@���@GP@��� LC@����xP@���`C@��� P@���֜C@����qP@���ךC@���#P@���zC@��� P@����C@���P@���C@����vP@���=C@��� P@���RC@���fP@���C@���@@P@���}C@���P@���#C@���\Q@���@}C@���@@Q@��� C@���� Q@���`MsC@��� Q@����]mC@��� Q@���@gC@���QQ@���eC@���sQ@��� ^C@����Q@����4YC@���(Q@���@MC@����Q@���LEC@���@Q@���@?C@����$Q@���R6C@��� Q@���`2C@���` Q@���*C@���5Q@���"C@���Q@���` C@��� Q@���\C@���@Q@��� QC@���Q@���)B@���` Q@����B@���Q@���`B@���`P@���`�B@���@P@���B@���QP@���B@���P@��� QB@���`P@����B@���P@���@ȗB@���P@��� aB@���P@���B@���`P@���B@���bP@���B@���)P@��� B@���@ P@���B@���P@��� B@����P@���@B@���bP@��� HB@���P@���`AB@���P@��� NB@���P@���B@��� {P@���@%B@���P@���@ͳB@���P@��� B@���P@��� B@��� P@���B@���sP@��� B@����P@���uB@���@P@���B@���@P@��� B@���5P@���e�C@����P@����C@��� !P@���C@����qP@��� C@����;P@����C@���`kP@���`BC@���P@���8C@��� \P@��� C@���LyP@���@#C@���uP@���`#C@����oP@���C@���8fP@��� C@���`RP@��� 4C@���@.?P@���7PC@���@*P@���^C@��� P@���`VmC@���P@���`~C@��� P@���zC@��� ! P@���=zC@����=O@���aC@��� aO@���aC@���O@���{C@��� hO@���@gC@���JO@����qC@����v8O@��� D@���@5O@���f D@��� l8O@����D@���4O@���`VD@���`k2O@���`)D@���8-O@��� /D@���z-O@���`5D@���@3#O@���<D@���O@���8>D@���O@��� JD@����q O@����SD@���pO@���\D@���`vN@���lD@���N@��� D@���WN@��� LD@���`BN@���=D@���\N@���`D@���`N@���fD@��� RN@��� D@���zN@��� D@���N@���D@���fN@���uD@���)N@���஝D@���N@���\D@����N@���VD@���<N@���`vD@���7N@���D@���WzN@��� ҟD@���`gN@���D@���=ZN@���` D@���>N@���@D@���@W+N@���@D@��� N@���D@��� N@���ࣸD@��� N@���D@����N@���@D@���@G N@���D@���N@���D@��� N@���@ D@��� N@���@D@���@3#N@���@D@��� N@���QD@��� N@���\D@���N@���@D@���M@���`)D@����zM@���zD@��� M@���`RD@���`)N@���E@���`�M@��� E@���@>N@���@E@��� uM@���$E@���BM@���@&E@���M@���Q(E@���.M@���G)E@���M@���z%E@����M@���F+E@����qM@���,E@���ǡM@���@/E@���M@���@9E@���@M@���BEE@��� M@��� CE@���@yM@���8EE@���fM@���QE@���@ OM@���fE@���LM@���`dE@��� HM@���TE@���6M@��� TE@���%M@���GYE@���� M@���qSE@��� QM@����PE@���M@���LE@���Q(M@���.FE@����49M@���[0E@���@AM@���(E@���`[AM@���&E@��� 4M@���@%E@���4M@���1E@���F+M@���8E@���M@���<E@��� M@���`);E@��� M@���@E@����MM@���@E@����)L@���9E@���`BL@��� 8E@���@WL@���`�/E@���@L@���`[!E@���L@���@pE@�����L@���`kE@����BL@���eE@��� HL@���E@���� L@��� E@���L@���@pE@����L@���E@���`vL@���2 E@���`RL@���D@���8}L@���GD@���@|L@���@D@���`RL@��� D@���|L@���D@��� L@���D@���zL@���`ûD@��� CL@��� aD@���@L@���@D@���@͋L@����4D@���`fL@���`D@���iL@���RD@����]UL@���D@���@K@��� D@���@K@���eF@QGM@BF@�����Z������@d@���`3��� |/e@��� W% ���������� ������*���5���?���H���[���c���p������e@���@\0��� nd@���`C0���yd@���w70����e@���,0���e@���0���e@���0���@%e@����20��� e@���F0����d e@���JO0��� e@���SW0���e@���@\0��� e@���1��� e@���1��� e@���1��� e@���1���`e@���� 1���+e@����1���@we@���[1���e@���y1��� e@��� 1����2e@����1���`e@��� 1���`e@����1���@e@���@1��� e@���1���(e@������3���"e@���2���Ye@����=2��� e@���2���@`e@���|2���` e@���ף2���`#e@���2���`$e@���2���@%e@���@2���@'e@����2���s(e@���2����&e@���`2���Z&e@���@2���(e@���2���*e@���2���a*e@����g2���(e@������3���@.e@���0���@ e@���@0��� e@���G0���@e@���T0���e@���V0��� e@���|0���ke@���0��� e@���0���@ e@���0���`e@��� 0���@.e@���0���S.e@���`3���0+e@��� 3���|&e@����0v3���p'e@����Y3���(e@���`S3���P+e@����T3���+e@��� q3��� |/e@���@3���`.e@����g3���S.e@���`3���ae@���/���e@��� /���@`e@���/��� e@���/���e@���M/���e@���.���e@��� .���e@���/���ae@���/����d@��� 0���`[d@���@@0����vd@��� i0���@d@���!s0���� d@����90���sd@���` 0���d@���%0���d@��� 0���@d@���/���@d@���/���zd@���`/���@7d@����=0���d@���`#0���`od@���U0���Fd@���i0���`d@���u0���d@����`0���4d@���n0����d@��� 0��� d@���z.���d@���U.��� d@���:.���@Nd@���.���`d@���0.���0d@���@ʏ.���&�e@��� –.��� d@���z.���Ad@���I%��� d@���h%����d@���U%���@d@����)%���gd@���%����úd@���@;%���kd@���i%���`fd@��� W%���@d@���Y%���@Nd@���e%��� d@���%���@d@���%���Ad@���I%����d@���|S/���|d@���J/���Od@���r.���`xd@���.����d@���@-��� d@���N-���Fd@���`lA-���d@���@-���d@���ڠ-����d@���n-���d@����Q.���d@����=K.���d@���@-���&d@���Q-���`d@��� -���@rd@��� -���d@����I.���d@���`&?.���d@��� /���Jd@���42/���d@��� b*/����d@���|S/�����z������XR���?����M���c(@��������� ������@*P���%@���@ P��� %@���@P��� %@���P��� \%@���@rP���r&@���,P���`# &@��� P���@^-&@���P����%@����P���+%@����O����X&@���DO����FB&@���O��� %@���@*P���%@���`TR���`X"@���WR���@yU"@���XR����#a"@���@"FR���)#@���=R���#@����>R����O#@����96R���@ %@���g%R���@%@���@R��� >&@��� R���zT&@���R���N&@���Q���zT'@���Q���$'@���Q���@'@���@;Q���'@���@+Q����w7'@���@:Q����70'@���@Q��� '@���Q���&@���MQ���@;,&@����rQ���� &@����bQ���%@���@ Q���&@���Q���f&@��� Q��� m%@����Q��� $@����)Q���`�$@���R����#@���-R��� #@����Q���@1#@�����R���%#@��� Q���#@����Q���"@���R���@#@���rQ���"@���@Q���"@��� Q���"@���`Q���!"@����Q���"@����rQ���"@���`Q����"@���oQ���"@���@*Q���"@���@ Q���x"@����Q���@?h"@���`Q����L="@���QQ���"@���@[Q���@"@����)Q���@J"@���@"Q���"@���@Q���@%"@���Q���@X"@���Q���Z#@���Q���q#@���Q���@h#@��� IQ���`$@����Q���!%@����Q���1t%@���@:Q��� s%@���@Q���`R%@���Q���@%@���Q���%@���@Q����%@���^Q���&&@��� Q���5p&@���Q���&@����ZQ��� V&@����Q��� &@���Q���$&@����Q���`'@����xQ����)&@��� !sQ���&@���woQ���&@���$tQ���a'@���ಋQ����4'@���Q���`);'@����Q���@'@���EQ���'@���:Q���8(@���Q���jB(@���@Q���c(@���{Q���V(@���tQ��� N'@���oQ���A'@����bjQ���&&@���fQ���&@����aQ��� '@���WQ���`)&@���`tRQ����Z'@����2Q���&@����ZQ���WS&@���@Q���t%@����Q���%@���Q���%@����Q����Z%@���Q���``%@��� Q���@%@���@dQ���ij%@����Q��� %@���@;Q����-%@���� Q���l�%@���P���$@���P���@-%@����cP����L=%@����P���x6%@���@*P����(%@����bP���7%@����P���n$@���uP���@$@���@+rP��� p$@����nP���@o$@���@]P���`M$@����GP��� +$@����@P���G!$@���Q<P���1$@���@5P����($@����.P���9$@���V,P���`d$@���)P���`l$@���@%P���E$@���P��� ˍ$@���$P���۞$@����{P���ԥ$@����P���@^$@���yP���$@���@P���$@���iP��� $@���Q P���W$@���@dO���$@���@O���$@���`fO���%@���WO���(%@��� P��� %@���P���%@���@*P���`=%@���P���F%@���P���xV%@��� P���@%@��� O���?H%@���O���;k%@����O���bI%@���ࣸO��� \O%@���'O���@^m%@���@LeO����Tv%@���FO��� y%@���  O���g%@���UN���`}%@����N���zT%@��� O��� D%@���(O��� %@���QpO����}%@���pO���@; %@��� kO����)$@���OjO���$@���guO��� $@����~O���@$@����zO����ô$@���@dO���9$@���wO���\$@���4zO���=$@���%wO���`$@���`*kO����i$@���@LeO���@$@���UO���$@���OO����q<$@���UO���%$@���>qO���n$@���sO��� V4$@���E{O���@^-$@��� vO���I#@��� vO���@%$@���ngO���@O#@��� dO���3$@���\O���$@����TO���@J$@���@NO���/$@����OO���k$@���LO���u$@��� m@O��� N[$@���?8O����#@���@(O���h#@���@|#O����~#@���O����#@���`$ O���4#@���`O����#@��� O���D#@��� O���]#@���VO����V#@���vO���r#@���O����v#@���O���#@��� tO���k#@���O���9#@���O���`$@����AO���@ #@���iN���@O#@����N���Py#@���N���ch#@���N���#@���N���#@��� N���>#@����N���7#@���WN���դ#@���`<N����#@���`N���#@���N���@y#@���`*N���F#@���`<N����$#@���@uN���5#@���`{N����#@���`{N���@-"@����tN����"@���`TfN����E"@���@;dN���I"@���`TN���@F"@���N���R"@��� 2N���"@���~N���0U"@���@cyN���PY"@���N��� !@����N����eg!@���@N���J>!@���N���.!@���iN���8.!@���N���@!@����N���@-!@���ӞN���@ @���oN���  @���|N����!@���N���� @���DN���@ @���}N��� #!@��� \N����5!@���<N��� !@���6N����'!@��� 4N���@!@����BN���@GA!@���`<N���@!@���@M���3!@����M���̌ @���`}M���@0u @���M����k @���N���0 @���`N���@���+N���Xb@����DN��� y5@���PN���`g@���@XN��� C@��� \N���@���@vXN���@���RN��� %@���@EKN���C@���5QN���@?@��� ON���@���@DN���@~@���`e?N���t@���-N��� ij@���#N����3s@����k*N���@���/N���@@��� D4N���<@���E[N���@?@���htN���<@���rN���@ @���N���@���@4N���:L@���N���@���` N���P@����N��� @���xN���@���` N���@���ຣN���\D@���N���@���]N���3@���TN���@���4JN��� @���@"RN���`l@���@vhN���;@���GqN���@���`%wN��� V@���~N��� @���`N���1@���ۧN���@@���N���1@���ͫN���@��� tN���@7@���N���@Ô@���N��� 51@���N��� %@��� nN���m@���=N���s@���O���@���O���@@g@���O��� p}@���`<3O����O@���DO���k@���^EO���@*@����]O���&@���`O���@��� aO���@@���`]O���P @���&^O���n^ @���`<cO��� @�����pO���r{ @���]~O���� @���HO���Œ@���O���C@���/O���@��� tO���@���`$O���`(@��� O���`@���zO���@@���O���~@���P����)@����|P���d@���P���@���@C%P���|@���)P��� G@���Z,P���`@��� :1P���(@���@3P���@���@E3P���@���+P���@?H@����P���ͫ@���� P��� G @���@ P���n^ @���P����v @��� P����@�����P���j@���O���~@���@ P���`N@���@]P���@���`TO���`g@���ӮO����_@���˭O���c(@���OO��� 6@���WO����@��� O���6?��� DO���y?���P���?���P���g?���VP���Z?���@P����?����|P���@?���P���8?���@fP���$?���P���@.?���@~!P������?���,P���U4?��� 0P���?����24P���@?���@AP���g$?���OFP����S?���HP���?���@KP����?��� LP���`Œ?���NSP���@?���XP���/?���@[P���@_?��� :aP���?��� dP���J~?����ZeP���`:?���@`P���"?���@`P���{?����cP����W?����mP���?���.wP���:?���&~P���t?���HP���r?���QP��� 4?���P���͛?���wP���!"?���P���@?����*P����@���@ P���7/@���P���`3@���%P���@���QP���#@���@P���ׂ@����P���@T@���VP���vw@���P����L]@����rP��� @���`*P����V@���P����X@��� P��� @���@P��� @����P����. @���rP���@ @���P���@ @���@JP���> @���@"P��� @���@2P���;@���P���`Y@���@P���@@���� P���@q@���`P����@���P���23@��� P���r@����bP���`);@���P���@���@P���(@����P����@���P���e&@��� P���@����|P���`ty@���@P���@���@P���~@���yP���`;@��� �Q����@���� Q���@��� Q��� @���@Q��� @��� :)Q���b@���&>Q���_@���FQ���@���zLQ���ef@����rPQ���U@���5UQ���๜@���[Q���`ty@���`Q���@@@��� Q����F@����֠Q���@����rQ���q\@���@Q��� W@���Q���@���@vQ���`)@��� eQ���`-@���_Q���@����2R��� %?@���P R���_@��� R��� @����R����۟@���/R���@���R����@���R���@y @����ZR���@P @���yR����J @���@R��� @��� *R���@?H!@���@l1R���9"@��� 6R����G"@����S;R���@X2"@���O>R���@H"@���>R���"@����@R���"@���`TR���`X"@�����@�������Y@���%!@���a][@���5`7@���%���������Z@���Ʊ3@����Z@��� 3@��� Z@���53@��� Z@���@ۯ3@���Z@��� X3@���`xZ@��� ~3@���x!Z@���@Κ3@���G)Z@���3@���W*Z@���;3@���5Z@���3@���&6Z@��� s3@���1Z@����3@���`6Z@���@3@���p=Z@���3@���`>Z@����4@����;Z@���@/4@���@+Z@���84@���q+Z@��� G4@���-Z@��� OJ4@���=-Z@����vX4@���`&Z@��� rk4@���� Z@����vh4@���Z@���Hp4@���@gZ@���u4@���!Z@���@4@���@E#Z@���14@���0)Z@���4@���u%Z@���`4@���EZ@���4@���Z@���`*4@���Z@���T4@��� nY@���`4@���Y@���@4@���Y@���b4@���@@Y@���4@��� Y@���`4@���Y@���4@���Y@��� N4@���@Y@����4@���Y@��� \5@���Y@���5@���Y@���@<5@����Y@���B5@���Y@���`M5@���@gY@���gt5@�����Y@����n5@���Y@��� N5@��� JY@����ʮ5@���½Y@���5@��� Y@���5@��� !Y@���5@���`Y@���`5@��� Y@���5@��� Y@��� 5@���QY@���@ͻ5@���@ͯY@���5@���@Y@����5@����Y@���5@��� ZY@���`S5@���ךY@���`6@���Y@���76@����Y@����Ye6@���@Y@����m6@��� Y@���i6@���Y@���{6@���`Y@���@6@��� lY@���6@��� Y@��� y6@���^Y@����6@���`ڣY@���6@��� Y@���@ڰ6@���`Y@���6@��� nY@���_{6@���Y@���@o6@����Y@���@q6@����qY@��� &~6@���nY@���6@��� Y@���@۟6@���Y@��� N6@���Y@���`6@����_Y@���@-6@���`)Y@��� s6@���pY@���6@���@Y@���`6@���Y@���@6@���Y@����Ô6@���Y@���`6@���Z@����6@���@Z@���6@���`Z@���6@��� ZZ@����6@����Z@���޼6@���@.Z@����ɯ6@���%Z@���@X6@���W.Z@��� 6@���@7Z@����6@����4Z@���@7@��� DZ@����:7@���`dOZ@���`B7@����TZ@���5`7@���aZ@����/7@���@{cZ@���)7@���dZ@��� 7@����pZ@����7@����wZ@���6@���^Z@���6@���Z@���`6@���@Z@���76@���Z@��� s6@���`ʦZ@���@6@���Z@���`)6@���@{Z@����$6@��� Z@���6@����Z@����6@����Z@���6@���`ܦZ@���``6@����Z@���9]6@����Z@���`fV6@���ԩZ@���T6@��� ~Z@����6@���6Z@���^5@����MZ@����@5@���@ȯZ@���6@���uZ@��� H5@���`Z@���5@����Z@���5@���Z@���A5@��� JZ@���`)5@���@@Z@���5@���Z@��� &5@��� Z@����v5@���@.Z@���C5@���`Z@���5@��� Z@���`5@���`Z@���ɪ5@���Z@���5@���@Z@���5@���[@��� N{5@���Z@���Jn5@���Z@���by5@���`Z@���q5@���Z@���@ԅ5@���Z@���@ 5@���Z@���`*z5@����Z@���o5@��� Z@���`R5@���@Z@���J5@���@Z@���@WS5@���zZ@���>I5@����Z@��� yE5@���`�Z@���<:5@����Z@���,5@���sZ@���@5@���Z@���4@���zZ@���o4@��� lZ@���`4@���Z@����F5@���Z@����L4@����vZ@����4@����Z@���s4@����;Z@���4@���`Z@��� %4@���`fZ@���@4@���Z@���4@���Z@���`4@���Z@����4@���@Z@��� 5@���`Z@����5@���Z@���`4@���ѬZ@���@]4@���@Z@��� 4@��� 6Z@���4@���5Z@���@4@���-Z@���94@���#Z@����*4@��� Z@��� Uu4@���`Z@���p4@���DZ@���`H4@���Z@���WM4@���@Z@���hD4@���0Z@���` 54@���#Z@���64@���Z@���$4@���`܊Z@��� 3@����Z@���3@���ԁZ@���3@����}Z@���3@��� {Z@���@ 3@��� {Z@���z3@���@.wZ@���@3@���tZ@���3@���@sZ@���k3@���qZ@���dg3@�����tZ@���:L3@���nZ@���s:3@���`nZ@���@3@���@fZ@���3@����MhZ@���2@���@UpZ@���2@���`oZ@���`2@���pZ@��� 2@����MtZ@���̜2@���yZ@���sz2@���Z@���sJ2@���^Z@����C2@����Z@���=2@���`xZ@���2@����כZ@����2@���@Z@���@2@����Z@���` 1@���@Z@����*1@���Z@���`1@���`Z@����T1@���&Z@���i1@����כZ@����*1@����Z@���t1@���`Z@���ij1@���ʙZ@����1@���`�Z@���1@����Z@��� O1@���@3Z@���m1@���Z@����=1@��� Z@���1@���@Z@���1@���QZ@���1@���`Z@��� 0@���Z@���0@��� Z@���G0@���8Z@���0@���Z@����0@���Z@���0@���kZ@���ă0@���Z@���i0@���Z@����]0@���Z@��� [0@���3Z@���J0@��� sZ@���K0@���@Z@����Z0@����Z@���Q0@���[@���@W0@���@[@���H0@��� [@���` 40@���[@���%0@��� [@���s0@���[@���Q0@����[@���'0@��� 6[@��� !0@��� [@���0@���T[@���E0@���[@���=/@���@[@���p]/@���5)[@���h/@���`v+[@���`/@���@([@���@-.@��� 1([@���`.@���*[@���G.@���?,[@���`.@���`k2[@��� +.@��� 3[@���`.@���8[@���.@���<[@����L}.@���9[@��� \O.@���@.7[@��� \O.@���=[@���-@���OE[@���``k-@���&E[@���E#-@����_H[@����,@���`N[@���@!B,@���`J[@���@XR,@���uQ[@��� +@����S[@���h+@���`S[@���`}+@���Q[@���@+@��� \O[@���@+@���`_O[@���`B+@���`}R[@��� h%+@���M[@���AF+@���U[@���*@��� nS[@���`}*@���R[@���@*@����O[@��� N*@���`N[@���*@���`fR[@����Ѩ*@���R[@��� *@���T[@���•*@����S[@��� N{*@���T[@���'*@���-\[@����)@���a][@����ô)@���@W[@���@)@���@3[[@����b)@���?\[@���/)@���`xZ[@��� yU)@���@X[@���S)@����X[@���@o)@���V[@���` )@���L[@���jB)@��� O[@��� )@���3V[@��� (@���`R[@���`}(@���+M[@���`l(@���.J[@���`(@���8M[@��� (@���8M[@����L}(@���8N[@���(@���`R[@���@'@���Q[@���`'@���M[@����'@��� 1L[@���0(@���L[@����(@���@L[@���'@���H[@���b'@���@H[@����`'@���I[@��� '@���L[@���@''@���@O[@���s'@��� H[@����F"'@���=A[@��� N;'@���A[@����/&@���G=[@���&@���:[@���&@��� 3[@���ڠ&@���-[@��� yU&@���([@���@J^&@���� [@���`C&@���`[@��� &@���@[@��� &@���[@���@%@���[@���@%@���& [@����F%@���[@���%@����Z@���@e%@���Z@���@dh%@��� Z@����L=%@���Z@���l�%@���-Z@���$@���Z@���Q$@���@Z@���1$@���Z@���$@���`kZ@���%@���Z@���;%@���aZ@���`R%@���ٽZ@����$@���@Z@���W3%@���^Z@���n^%@���QZ@���`X%@��� Z@���@%@���Z@���$@���೥Z@����#$@��� Z@���$@���Z@���|$@���Z@���$@���@EZ@���Z$@���`ʲZ@���j$@���Z@���ੋ$@���`xZ@���`$@��� Z@���@$@���&Z@��� d$@��� sZ@���A$@���Z@���($@���٨Z@���@#@���`TZ@���`$@���@EZ@���k$@����Z@���Qx$@���@iZ@���`$@��� HZ@���#@����vZ@���#@���`Z@���Ų#@���@.Z@���`&#@���GZ@���դ#@��� JZ@���@%#@��� Z@���f$@����OZ@��� yu$@����Z@��� H@$@���൘Z@����M#@���Z@����t#@����Z@���@E#@��� Z@���@#@���Z@����#@���`TZ@���k#@���`+~Z@���@#@����tZ@���$@���`dwZ@���#@��� ҃Z@���#@���kZ@����e#@���8Z@���@"@���Z@���"@���@UZ@���"@����OZ@���S"@��� xZ@����D"@���3fZ@���@]N"@���]Z@���@"@���5UZ@���q!@��� GZ@���l@!@����_<Z@���%!@���s.Z@���@1!@���!.Z@���@O:!@���4Z@����M!@��� s7Z@���@Dd!@���86Z@����4r!@���9Z@���zt!@���@;Z@���h!@���Q4Z@���!@���`3Z@���R!@����4Z@���@ۿ!@���4Z@���_"@���?4Z@����h"@���5Z@����#@���9Z@����#@���@BZ@���#@���pEZ@���`o#@���aFZ@���#@����DZ@���@$@���>Z@����w7$@����8Z@��� 2$@���@2Z@��� m$@���-Z@���Tu$@���`�+Z@���W$@���&Z@����K$@���$Z@���$@���n"Z@���$@���  Z@��� H$@����Z@����$@���Z@���Q$@���O&Z@���`}%@���4Z@���= %@����8Z@���z%@���aFZ@���`s%@���?DZ@���`%@���`BZ@����%@���FZ@���=%@���VZ@���`}%@���@[Z@����%@���]Z@���%@����pZ@��� &@���rZ@���`&@���`wZ@��� %@���@{Z@���Ϊ%@���G}Z@���%@���Z@���%@���TZ@����%@���Z@����%@���Z@���@{%@���.Z@���`0&@���DŽZ@��� 6&@��� wZ@���&@����xZ@���&@���yZ@���f&@���`]tZ@���`1'@���tZ@���`='@���}Z@���J'@���Z@����'@����)Z@���'@��� XZ@���@AT'@���@Z@���'@���)Z@���)'@���Z@����}'@���Z@���'@���@Z@����'@��� Z@���!(@���@Z@���;+(@���Z@��� 9(@���hZ@���`(@��� 6Z@��� ف(@��� !Z@���x(@���OZ@������)@���@UZ@���)@���Z@����)@��� Z@���*@���Z@����i*@���?Z@���@+@����Z@���ਗ+@���ZZ@���@*+@��� Z@���`,@��� Z@���`l,@���@Z@����Z,@���Z@���,@���`Z@���,@���Z@���,@���EZ@���@'-@����Z@���h-@���Z@���r-@���`Z@���`-@���kZ@���`-@���Z@����}-@���`Z@���W.@���Z@��� .@��� ~Z@���@.@��� Z@���.@���aZ@���@/@����Z@���@L/@����;Z@���`s/@���@Z@���`Մ/@���@3Z@���@ /@���8Z@��� /@���}Z@���`/@���Z@���F0@���xZ@��� 0@���aZ@���0@���Z@����20@���Z@���B0@���Z@����LM0@���`MZ@���:L0@���Z@���@zd0@���}Z@���2s0@��� Z@���@Q0@���EZ@���@0@���`0Z@���t0@���`Z@���8n0@���`)Z@���z0@��� Z@���0@��� Z@����0@���`Z@��� e0@����Z@���70@���&Z@���0@��� !Z@���`"1@���xZ@���;1@���`fZ@���`<K1@����;Z@����>1@���Z@��� B1@���`ʂZ@���g1@���@vZ@���`ܞ1@���=rZ@����Ѩ1@��� !oZ@���`1@��� \gZ@���1@��� gZ@����1@��� _Z@���.2@��� [Z@���`052@��� XZ@���)2@����KZ@��� ~Q2@��� CLZ@���@`2@����qHZ@��� h2@���FZ@���w2@���IZ@���@2@����$LZ@���<2@���@gLZ@���@z2@����HZ@���`մ2@���G=Z@���@'2@���`+Z@���A2@���T!Z@���2@���Z@���`)2@���`TZ@���!3@���Y@���@3@��� CY@���@K3@���6Y@���`/f3@���wZ@���h3@����Z@���I3@���WZ@����q3@���Z@���Ʊ3@����������� 1���@#4@���@U!���9;@���9����������Z*���B;@���&#���@;@���V!���9;@���V!��� G;@���@U!����:@���ш!����9@���l�(������:@���`I�(��� Vt7@����Z1)��� F7@���I)����T7@��� 6*���6@���L*���6@����(*���`6@������*���V5@���*���W5@����/W.���AV5@��� 0���V5@��� 1���4@��� 1���@#4@��� 1���`4@��� 1���9M5@���0��� U5@����0���@W6@���`<0���K6@��� 80����TF6@��� 80���iS6@����s0����$p6@���@I0���6@���40���6@���(0����$�7@���@&0��� 7@���`e70��� y7@���0���`7@���/���7@����7/���7@���@3/����Щ7@����/���`07@����Y/����8@���.���`=8@��� t.��� ~q8@���`.���@8@��� ?-��� U8@���`-���o9@���`C-���Q9@����`l-���9@���`]-���9@����-��� &9@���,,��� ':@���~,���jB:@��� 1,����LM:@���@Z,���`m:@���(,���o:@���`r<+���:@����w+���`:@��� *���;@���@d*���`J;@���Z*���B;@������������̘e���*,���me���*����������������@e���M+���e���M+���e���+���̘e���` +���e���*���e���`*���ye��� W+���@e���M+��� we���*,���Vze���,���'}e���`f,��� ҁe���+����e���෿+���@3}e���&+���@bxe���ҧ+���zre���@d+���me���t,��� we���*,�����������NE@���3)@��� J@���2@���z���������� I@���2@��� I@���2@���JNJ@���?1@���`_J@���AV1@��� ZJ@���1@��� J@����Ԥ0@���WJ@����$0@���9J@����d0@���3"J@���@90@���@J@���/@���\J@���` U/@���@WI@���.@��� I@���.@���@oI@���.@���I@���@'.@���`_I@���@d.@���|I@���A.@���9I@����.@���:,I@���-@���I@��� ١-@����I@���-@���H@���`#-@��� H@����-@��� H@���f-@���H@���-@���@H@���@�-@���H@���G,@���`YYH@���z,@���SFH@���,@���?H@���l�,@���9H@����,@���|"H@���+@���@H@����` ,@��� G@���S,@���G@���+@��� G@���@I+@���G@���@*+@���@jG@���-*@���@IG@����)*@���G@����7*@���F@���ԥ*@���@FF@����L*@���F@���M)@��� >F@���)@���@ۇF@���E)@���@hF@����#)@���}F@���)@��� yF@���G)@����рF@���` )@���qF@���Ȑ)@���9uF@���|)@���`cF@���)@���9]F@���@|)@��� >YF@���S)@��� yMF@��� )@���EF@��� )@���:F@���@o)@����$F@����D)@��� F@���jB)@����F@���N)@���F@���`/6)@���E@���3)@��� E@���M)@��� E@�����)@���@hE@���a)@���E@��� a)@����E@���n^)@���E@���j)@���|E@���@)@���`0E@���7*@���@E@��� *@���E@����.+@���@oE@���+@���`E@���+@���@E@���OZ,@���@~E@���E,@���΂E@��� ,@���{E@����q-@����zE@���@f-@��� wE@���I-@���byE@���-@���`pE@���.@���9mE@���=I.@���\E@���k.@���PE@���K^.@���NE@���`~.@���`WE@���Oz.@����ZE@��� .@���@dE@���`}.@���`dE@���.@���{[E@���@/@���YE@��� q/@���kE@���/@���gE@���GQ0@���'eE@���`0@���`E@��� 0@���`E@���0@��� aE@����0@���E@���0@���`E@���@0@��� 0E@���I0@���ਓE@���=0@��� &E@��� 61@��� E@����|C1@���ǠE@����N1@���E@���U1@���@E@���l1@���}E@���@ 1@��� `E@���D1@���E@��� e1@��� gE@����X1@���`qE@���[1@���`qE@���`6P1@���|E@���`N1@��� F@���`_1@���F@��� W1@���`/F@���ti1@���+F@����i1@����?F@���Te1@����F@��� 6.@��� G@���1@��� I@���2@�����8������@gt2@���D@���7@��� fG@������������ 3@���`F@���y3@���|G@���3@���`G@���'3@���\F@����?3@��� %F@���3@���8G@���@3@��� fG@����3@���cG@���@J4@����^G@��� B4@��� G@���`4@��� 0F@����w4@���sF@���4@����F@���4@���sF@��� 4@���@@F@���h4@���F@���4@���@F@����v4@���� F@���4@���CF@���@Q5@����wF@���:|5@��� %F@���D5@���ȏF@���@`5@��� [F@���'5@����vF@���`5@���`rF@���]5@���nF@��� i\5@���@KiF@��� xf5@���cF@���ǐ5@���`bF@���@5@����v`F@���m5@���� VF@���@'5@���QF@���6@���c@F@��� y%6@���T=F@���46@���2CF@���HP6@���UF@���o6@���r[F@���6@���HF@����|6@��� FF@���6@���BF@���@6@���FF@���u6@���=F@���t6@��� +F@���`"6@���F@���`ݝ6@����F@��� \6@��� F@���j6@���`�F@���@\6@��� E@���}6@���E@���@6@���1E@��� 6@���E@���@6@��� E@���7@���@E@���J6@���E@���6@����qE@����6@����FrE@���@p6@���hE@���Av6@���eE@��� Hp6@��� IE@���@(|6@��� %GE@���`܎6@���T=E@����6@���`3E@���@^6@���U)E@��� S6@���`B.E@��� ?6@���@{+E@���86@���+E@���16@���[(E@���`6@���(E@��� S6@����z&E@���5@���@)E@���(5@����B'E@���@5@���W*E@��� 5@���&E@���5@���!E@���@5@���`fE@���@5@���@h E@���5@���@.E@���`5@���!E@���u5@���!E@���|p5@���fE@��� Y5@���` E@���\N5@��� aE@��� T5@���@ E@���`'P5@��� E@���?5@���� E@���75@���@3E@���S$5@���`[E@���5@���uE@����5@���@WE@����4@���` E@���Z4@���$D@���4@����zD@���4@���@D@����׳4@���D@��� 4@���`D@��� 4@���D@��� 4@����9D@���4@��� D@���4@���`E@���`Z4@���)E@���@4@���)E@���`)+4@���`@E@����4@����{GE@���l4@���HE@���3@��� <E@��� %3@���EE@��� ~3@����QE@���`3@���TE@���Ţ3@���`ME@���>x3@���23E@���e3@���(E@���@QH3@���E@����e3@���` E@���$e3@����@ E@���a3@���`D@���`S^3@���D@���#3@���@.D@����|#3@���E@���C2@��� !E@���2@���@$E@����G2@���,E@��� %2@���0E@���@ڐ2@���3E@���@]2@���77E@����׳2@���@X2E@���Z2@���9=E@���2@���8E@���@42@���3:E@��� 2@����9E@���@u2@���R>E@���t2@���@BHE@���`̍2@���@OE@����ד2@����SE@���o2@���`)[E@��� 2@���]E@���@gt2@���jE@��� }2@��� LnE@���{2@���@g|E@��� 2@���3E@���`f2@���`E@���`2@���@GE@���֤2@���@ёE@���2@���qE@����2@���QE@���2@���@E@���2@���E@���]2@���஭E@���@2@���QE@���F2@���E@����=2@���`E@���F3@��� E@���@P 3@���E@���{3@���E@���`R3@���E@����F3@���)E@���3@���E@���@2@���)E@��� 2@����4E@���2@���E@���3@���@.E@���` 3@���E@���3@���E@���@<-3@���`E@���:3@���E@���I3@���`E@���@P3@���@E@���'_3@���@E@����h3@���E@���ׂ3@���aE@����}3@���`E@���Â3@���`�E@���|3@���E@���`'@3@���`)E@���=3@���F@���@_3@���E@���3@����E@���3@���aF@���3@���F@���`3@���F@���`[3@���@F@���3@���F@���3@���q F@���@>x3@���eF@���� z3@���qF@���Gq3@���3F@���[3@���`F@���`Q3@���@"F@���`I=3@���!F@���33@���p%F@��� Q*3@���@g$F@���3@���-F@����)3@����3F@����#3@���4F@��� %3@���@8F@��� 3@���WBF@���@03@���.FF@���@/3@���IF@���`73@��� KF@���`2E3@���@ WF@��� HP3@���)ZF@���`X3@��� ubF@���@U3@���@cF@���`]\3@���`kjF@����Z3@���(mF@���a3@���@pnF@��� Z3@��� ^rF@���@3@���8uF@���f53@��� asF@���@<-3@���.vF@��� 3@��� (nF@����43@����=sF@���@{3@���`VuF@��� e 3@��� \wF@���@{3@���@gtF@���`2%3@���yF@���$3@���}F@����3@���`}F@���@3@���F@���3@���`F@���@3@����$F@���Z#3@���F@��� )3@���F@���H.3@���8F@���)3@���`)F@��� 93@���`F@���B3@��� F@����qL3@���F@���`Q3@���F@��� T3@���F@���=i3@���`fF@���l3@���`F@����j3@��� (F@����B3@���@F@���@3@��� F@���13@���aF@��� 3@���`2F@����3@���oF@���@3@���F@��� 3@���F@��� 2@���@F@����=2@���@F@���@* 3@���F@����2@���@ѹF@���`2@���ҾF@����F3@���@pF@���3@���F@���3@���fF@��� ?3@���@F@���2@���F@���2@���F@���@y2@����F@��� 2@���fF@���`2@���`MF@����2@���8F@���f2@���F@���2@����)F@���2@���`F@���2@����qF@���`2@���@F@��� 3@���`F@�����������Xk(@����f*���`M?@���c@�������������G?@���l@���G?@���i@���`M?@���@�@���b ?@���??��� ~>@����r?���@y>@���`r?���x>@��� ?���=Y>@���@D#?��� U>@���l?���@.G>@���ó?��� N;>@������?���`R7>@���?���`>=@��� J?���=@��� Q?���e=@���.?���=@��� ww?���Z=@���]M?���=@���o?����w=@���'}?���@=@������`=@���Gh����+=@���V޿���`=@����x޿���@=@���O���@=@��� ���@ڠ=@���q���` =@������=@���)����q\=@���@*���<=@�������;=@���z��� $=@������=@���`x��� +=@�������@=@���U���`=@����8/���@J<@���H���`0<@��� ����<@������<@���?H���n<@���`����F<@����2��� s<@��� ����<@��� *;���.=@������<@���(��� <@���|���=@���@n��� &=@���� ���8=@���@<+���==@������5=@��� ���@7=@���`f ���+7=@���@ ���7?=@���k ���;=@���z���`b=@���@ޝ���`pl=@���`B���@Jn=@���@*���dW=@���0����Y=@���8����ш=@���@��� %=@���`:���ơ=@���@K���4=@������ %=@���@,���ތ=@���].���`=@������ 5>@���Q���a>@����"���@t>@���4R���f>@���$� ��� >@����a ���>@��� q ���>@���@ ���`h=@���^ ��� <@����9 ��� <@���` ���@<@���@5!���`/<@���@U!���<@���@!��� x<@���3S"���@Wc<@���vx"��� _<@���"���@f<@����"���@<@���"���<@����o"����T<@���@##����F<@���#���`)<@���#���`<@���H$���@<@���q$���k<@���zU%���@J<@���~q%��� ف<@���(%���{<@���� V&���Be<@���&��� [<@���~'���v<@��� '����<@���$(���t =@���(���@5=@���(���_{=@���(���@=@���(���=@����(���`{=@��� h(���@u=@���(����=@���zu(���==@���*Q(��� =@���@d)����L=@����f*����=@���$*���4=@���`*���=@���@p*����ʮ=@���*���`�=@��� *���=@��� q*���+=@��� *���@=@���@*���` =@���*���`/<@���@*���<@���@R*���@Q<@���.*����}<@���t)��� ˭<@���7)���<@���)���<@����)���<@��� )���\~<@���{)���`<@���`W)���]<@���=(���@5<@����(���@&<@���(���r <@���@(���`);@����(���;@���t(���@;@���(���@;@���`(���;@����(����;@����#a(���z;@���`'���=;@����T'���6;@���=*'���@;@���*'���?;@���`51'����q:@���K'���@:@���'���:@���� (��� v:@���'���h:@����'����9@���2'���?9@���@'���m9@���'���@9@���'���8~9@���A'��� 9@���[p'����\9@����H'���I9@���@&���`X9@����m&��� U9@��� b&���@8@���@&���ײ8@���@^&���8@���``&���r8@���@^&���1d8@���`&���P8@��� &���M8@���`I&����q\8@���@&���i8@���&����Tf8@���t:&���`R8@���@&���$8@���W&���!8@��� V%���7@��� @%���7@���`&���7@��� 9&���ǀ7@���``%���e7@���%��� 7@��� /&���`Y6@���0&���@6@����&���=6@����/&���@6@���`&��� 6@���z&���@{6@���`B&���>6@���S&���`�?6@��� h%&���a*6@��� %%����/6@����%����$P6@����ш%����M6@���W%����C6@���`I�%��� P6@���$���%6@����#���e6@���#���5@���5#���a5@����"���@5@���yu"���:5@���@!����5@��� ��� %5@��� ���@ۿ5@���`����5@���`\���5@���^M����5@���m ���a5@���!���໊4@����#���<4@���࢑���4@���@d��� U4@���@d���O4@������`3@������Ί3@����(���@3@���@T6���43@���W���@3@���`h��� ,3@���@ ���`x3@����BF��� `3@���`cI���[3@���@n���@_3@������2@������2@���`���2@�������2@����s����"2@��� ��� 2@���@' ���82@���@6 ��� 2@���@S7 ����1@���� ���\1@���w ���1@���@;, ���1@��� ���@W1@���@42 ���@1@���' ���1@��� ����o1@������rk1@����id���H1@����;���@I1@���`l���61@���`Z���%1@���@���\.1@���` ���`1@���@[��� x1@���;���@!0@���U���@0@���'���0@������@^0@��� ���t0@���@Tv����S0@���2���10@������`0@����z���0@���� ���h0@����t���@J^0@���i��� i/@����8o���].@���`|s���@ͫ,@������@+@���W���l�+@����k���*@���aj���ʮ*@������`%[*@���`=p���)@���gE���=)@���aj���l)@������� %(@��� ���(@������`(@��� ��� (@����zu���Xk(@��� h����Z(@������` )@�������`)@���{���(@���^���j)@���`���)@���5���=**@������ .*@����D����3*@���=J��� bJ*@���N[���`c*@������ H*@���@%���@*@���?���*@���.7���f+@������ sz+@���`D���?+@���V���+@���@[���+@������r+@���q���,@���@���^,@���`]���,@��� 1��� ,@���W���,@��� *;���C,@���e���`,@������`,@���]��� \O-@���@ף���`p-@���=���`5-@����*��� M.@������.@���:���r.@���,���@X.@�������.@��� ���@a.@�������/@��� c���#/@���&����ɯ/@�������}/@���@[����w/@��� 9��� O:0@��� ���Z00@���J~���@!20@���z���/0@���@w����40@���gE���j0@������ y0@���DD����0@������ 0@���@Tv���N1@��� >���`1@���`ww���1@���dܿ����1@���T?Կ���1@��� Kƿ���1@���@?����1@��� >?���1@���`c?���@1@���`?��� 2@���@ ?���` 2@���|?���2@���@@���@Q82@���j@���W2@���@���g2@����@���2@��� @���2@��� 8 @���h2@���7 @���A2@��� @���@Q2@���@'@����2@��� @���d2@��� @���@2@���@X2@���2@���W@��� 2@���@r{@���@2@���`){@���@2@���}@���2@���@@���3@���`@���`H3@���z@����e3@���z@���@3@����@���3@���sZ@����3@���@*@���G4@���;+@����^4@���@@@���`t4@����@���@{4@���@���@^4@���ء@���4@���@���@4@���`@����,5@���-7@���cH5@���`/V@����Z5@����@����L5@��� @����5@���@X2@���5@���@����}B6@���b@���1d6@��� @��� w6@����@���6@��� z@����T6@���@����6@���@���6@���@���`6@���}@����6@���@���6@���@���` 6@���@F@���@6@���~P@���7@���@����/7@��� @���@E7@���@���@'m7@���@&^@���2s7@���@@���7@���s@���`8@����@���&8@���`@���f8@��� $@���Z8@��� p=@���d8@���Sv@���@n8@���B@��� t8@���l@���8@����O@���:8@���`@���`*8@���{@����i9@����@���9@���@��� O:9@��� @���R9@���:@���@O9@��� @��� \9@����FB@��� U9@���c@���9@��� @���59@���@���9@���ϩ@���+9@���9@���:@��� @���:@���S@���):@���@����$:@���`-@��� y:@���S@���[:@���# @���@:@���@���`;@���@���``k;@���`L@���@t;@���@��� ;@���z@����;@���@���;@���U@���1;@��� ,@���?;@���� @���>;@���@m@���;@���U4@���c<@���>@���l<@���t@���*<@��� @����i3<@���c@����U<@���`g@���@^<@����!@����Gq<@���&@��� ~<@���~@���<@���Ʊ@����<@���9@���@<@���;@���=@����-@���@z4=@���@_@���@=@���`g@����#A=@���̌@���@XR=@���@���z=@���0@���=@����F@���=@����=@���=@���<@���`/=@���@b@����T=@��� b@���=@��� y5@���@=@���@���@>@���3@���>@��� @���#>@��� o@���4>@���2@���``>@����@����>@��� @���>@��� > @���@^>@��� @���@W>@���Sv @����>@���`z @���`W>@��� @���>@���`4 @���@>@��� e @����|>@���@���2>@���`@���>@���-@���;>@���@S@���t>@��� e@���@>@��� @����>@��� @���>@����2@���>@���@����F>@��� gE@���>@���CD@���@?@����@��� ?@���\n@���j2?@����Xr@���`3?@����U@����G?@���l@�����������5@���E2���@@����a ������������� <@���Έ0���<@���0���B<@���@c0���@{#<@���0���D;@��� 0���;@���@91���@;@���TV1���T%;@���`1���n%;@���@d1���W;@���y1��� ;@���`1��� Q;@���1���l:@���E2��� xv:@���1���P:@���@1��� 7:@����Y1���9@���2����9@���,1���@9@���`1���@Q9@���1���@9@���`e1��� Vd9@���1���@D9@���31���@J9@���ٱ1���c9@���1���8@���}1���T<8@���\{1���`y7@���@1����37@���z1���?6@���0���#6@���~0���!6@���@:=0���3�6@���+0���@5@��� -���5@���ʁ*���5@���"*���6@����*���T7@���*���B8@���E*��� V8@���t)���7@���@)���<7@���V)���@^ 8@���`C(��� 8@���@A(����7@���`ff(���7@���`'����S8@��� b&����8@��� &���7@��� @%���!8@��� V%���$8@���W&���`R8@���@&����Tf8@���t:&���i8@���&����q\8@���@&���M8@���`I&���P8@��� &���1d8@���`&���r8@���@^&���8@���``&���ײ8@���@^&���@8@���@&��� U9@��� b&���`X9@����m&���I9@���@&����\9@����H'��� 9@���[p'���8~9@���A'���@9@���'���m9@���'���?9@���@'����9@���2'���h:@����'��� v:@���'���:@���� (���@:@���'����q:@���K'���?;@���`51'���@;@���*'���6;@���=*'���=;@����T'���z;@���`'����;@����#a(���;@����(���@;@���`(���@;@���(���;@���t(���`);@����(���r <@���@(���@&<@���(���@5<@����(���]<@���=(���`<@���`W)���\~<@���{)���<@��� )���<@����)���<@���)��� ˭<@���7)����}<@���t)���@Q<@���.*���<@���@R*���`/<@���@*���` =@���*���@=@���@*���+=@��� *���=@��� q*���`�=@��� *����ʮ=@���*���=@���@p*���4=@���`*����=@���$*����L=@����f*��� =@���@d)���==@���*Q(����=@���zu(���@u=@���(���`{=@��� h(���=@����(���@=@���(���_{=@���(���@5=@���(���t =@���(����<@���$(���v<@��� '��� [<@���~'���Be<@���&���{<@���� V&��� ف<@���(%���@J<@���~q%���k<@���zU%���@<@���q$���`<@���H$���`)<@���#����F<@���#����T<@���@##���<@����o"���@<@���"���@f<@����"��� _<@���"���@Wc<@���vx"��� x<@���3S"���<@���@!���`/<@���@U!���@<@���@5!��� <@���` ��� <@����9 ���`h=@���^ ���>@���@ ���>@��� q ��� >@����a ��� >@����c ��� ?@����9.!���5 ?@���@*;!����+?@���81!���+?@����0!����v8?@���@'!���E?@���o>!����$`?@���@*!���e?@���FB!���9?@���`!���`?@����!!���`�?@���@Z!���?@����!����?@���!���n?@���!���`?@���@"���@?@���g%"��� g@@���"���C<@@���4R"��� D@@���"���^@@����7"���@Xj@@���"���@hx@@���@"���`z@@���"��� ~@@���I"��� %@@���@K>#��� g@@����XS#���@@���_,#���T@@���D#��� @@���xv#���`A@@���#���`@@���@#���@@���#��� ~@@����"$���`@@��� Vt$���@P@@���$���`@@���%���@@���@)%���`6@@���7%���β@@���`%��� @@���`)%���@@��� %����_@@���@ W&���@@��� &���`@@���A&'���@h@@��� $'���k@@����/7'��� =@@����L'���`@@���EC(���@@���(���|@@���`(���@@���ҧ(���@@��� ߼(����@@���`/)���ߣ@@��� )���� @@���:-)��� @@���c))���@@��� 15)��� z@@���)���{@@���|)���`@@���@)���@@��� *��� @@���n*��� >i@@���|+���cX@@���G!+��� HX@@���`>+���d@@���G+���j@@���``k+����c@@���|+���(d@@���@+���`s@@����ף+��� @@���,���`@@����,����@@���@-+����d@@���,���` @@���,���@ԕ?@���@-���a?@���=J-����v>@���-��� x6>@����T-���@D>@��� n.��� [>@���.���@Wc>@��� 1.���[>@���@/����i>@���hD/���`>@���@M/���`=@���r;/���Q=@���I/���@W#=@���Q/���@^<@���/���<@�����0���<@���Tf0��� <@���Έ0�����������<9@��� j6���`Y@@���r;/�������������<@���0��� <@���Έ0���<@���Tf0���<@�����0���@^<@���/���@W#=@���Q/���Q=@���I/���`=@���r;/���`>@���@M/����i>@���hD/���:l>@����Y0���>@��� �0����>@���%0���`?@���@0���@M?@���S0���`l?@���>)0���`?@���p=0����v?@���k0���@@���r0���@@��� [p0���S@@����֔0���@Z@@���0���Z@@���%0���@^b@@����÷0���}@@���g0���x@@��� 10���`k@@���@]0���{@@���%1����@@���X1��� z@@���U1���@@���'1��� a@@���,1���{@@���`1����|@@���q1���y@@���1���`|@@���2����$@@���.2��� {@@����`<2���`Y@@���PY2��� /@@����g2���@@����w2���q@@���҇2��� y@@���@2����v@@��� i2���2s@@��� 2���`h@@���w2���Y@@���`B2���1\@@���2���}Y@@���2���[@@���3���1l@@��� 3���@m@@���@cI3���`qd@@���]3���:d@@���`w3���l@@���o~3���:l@@��� \3���`t@@���G3���z@@���@ 3���`B}@@����3���`|@@���`3���`@@���`3���@@��� [3���@i@@���4���@y@@���P 4���Vs@@���}"4���9U@@���4���@F@@���4���`H@@@���>4���=@@���@c4���@B@@����4���`.@@���`"5���`>@@���X5���`4@@���O5���@d?@���Z6���1L?@��� j6���'?@����YR6���>@���K6���K>@��� W6���`);>@���J6���">@���L6���@z=@��� "6����is=@���)6����^=@���@06��� B=@���6���(=@����6���=@���� 6���@ =@���@c5���@ =@���� 5���U=@��� ;5���@=@���"5���k<@���`5���}<@��� ,5���r[<@��� b5���3<@���`5���D<@����܏5����;@��� [P5���@K;@���`C%5���m;@���`I5���@-;@����4����i;@���N4���;@���G4���ƶ;@��� 4���r[;@���@ w4����I;@����~4����L;@���@qM4���@Q8;@���w4���@;@���`�4���>:@���}4���^:@���@3���:@���`3���p:@����*3���`g:@���@3����iS:@����3���Y:@��� 3����#1:@���`s3���A9@����3���+9@���@2���9@���@2���@(9@���2����Ѩ9@���2���@d9@���\2��� %O9@���2���<9@���1���@D9@���31��� Vd9@���1���@9@���`e1���@Q9@���1���@9@���`1����9@���,1���9@���2��� 7:@����Y1���P:@���@1��� xv:@���1���l:@���E2��� Q;@���1��� ;@���`1���W;@���y1���n%;@���@d1���T%;@���`1���@;@���TV1���;@���@91���D;@��� 0���@{#<@���0���B<@���@c0���<@���0��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/share/world_shp/world_adm0.shx����������������������������������������������������0000664�0000000�0000000�00000003354�11770671653�0021651�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000��������������������������������������������������������������������������������������������������������������������������������������������������������������������������' ����������������������v��������f�����V�����f@���T@����p���������������������������2�� 0�� f���� b�������X��B�������7��S�� ��]����yR����}��B������(��j��ϖ��v�����X��l�� B��߲���h����@��b��������:����.����*��������Z������3�4��:�6 ��8�:H���@��H�B`�� �O���T���]~�{�B��V�ڜ������T��W�?��H^�\��p�������h� ����� ~��� �&��H�r����� &�0��`�є���`���������@��� �4������+������ �3 ���:���;��$�>���M��2�^���aj����a��H�iJ���kV���h�k���qv��|���������V�*������������ J�(���,�� �1��"�4���:����;�� �?8���O��)�x��Z�2��z�������X��� ����p������>�>��� "�� �F��������+��8�/ ��)@�XN���]Z�� �a~����b���i�� �s���u�� �8�� �������L��P����\�����h�L���h����4������T�� 0����,�� F�v��2,��� ����"� ���� ����������+��8�1��P�38�� �?��`�Ch�� h�P��j�fB��8�k~���p���u8��|�x���t���X���$�� �����l��D�R��Z���H���B�B���\����� �)t���F����N����S����T���V,����V��@�\�� ez���� g~��� j��Z� nx�� j� x��� ��� ��� ���`� :��� V��� 2��� ��� �� "� �� � ��� ��� ˜���P� ��j� Z��� 6��h� ��� N���� "��� ��� ��� l��� �� � *�� � 3��� B��� E��f� V���� W��� \��� l:�� � w���� x�� � |��� ��� ��0� ��8� X��� [��8� k��Z� pT��z� ~��@� ��� ���� ��� ��8� ��� ��� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/������������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0014554�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/����������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016103�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/Backend.pri�����������������������������������������������������������0000664�0000000�0000000�00000000520�11770671653�0020143�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Backend DEPENDPATH += $$MERKAARTOR_SRC_DIR/Backend HEADERS += \ MemoryBackend.h SOURCES += \ MemoryBackend.cpp contains (SPATIALITE, 1) { HEADERS += \ SpatialiteBase.h \ SpatialiteBackend.h SOURCES += \ SpatialiteBase.cpp \ SpatialiteBackend.cpp } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/MemoryBackend.cpp�����������������������������������������������������0000664�0000000�0000000�00000023536�11770671653�0021340�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MemoryBackend.h" #include "RTree.h" RenderPriority NodePri(RenderPriority::IsSingular,0., 0); RenderPriority SegmentPri(RenderPriority::IsLinear,0.,99); inline void* operator new (std::size_t sz) throw(std::bad_alloc) { // fixme: throw bad_alloc on error void *p = (void *) malloc(sz); if (!p) qDebug() << "Alloc error"; return p; } void operator delete (void *p) throw() { free(p); } typedef RTree<Feature*, qreal, 2, qreal, 32> CoordTree; class MemoryBackendPrivate { public: QHash<Feature*, CoordBox> AllocFeatures; QHash<ILayer*, CoordTree*> theRTree; QList<Feature*> findResult; }; bool __cdecl indexFindCallbackList(Feature* F, void* ctxt) { ((QList<Feature*>*)(ctxt))->append(F); return true; } bool __cdecl indexFindCallback(Feature* F, void* ctxt) { IndexFindContext* pCtxt = (IndexFindContext*)ctxt; if (!F->isVisible()) return true; if (CHECK_WAY(F)) { Way * R = STATIC_CAST_WAY(F); if (pCtxt->theFeatures->value(R->renderPriority()).contains(F)) return true; R->buildPath(*(pCtxt->theProjection)); if (M_PREFS->getTrackPointsVisible()) { for (int i=0; i<R->size(); ++i) { if (pCtxt->bbox.contains(R->getNode(i)->boundingBox())) if (!pCtxt->theFeatures->value(NodePri).contains(R->getNode(i))) (*(pCtxt->theFeatures))[NodePri].insert(R->getNode(i)); } } (*(pCtxt->theFeatures))[R->renderPriority()].insert(F); } else if (CHECK_RELATION(F)) { Relation * RR = STATIC_CAST_RELATION(F); if (pCtxt->theFeatures->value(RR->renderPriority()).contains(F)) return true; RR->buildPath(*(pCtxt->theProjection)); (*(pCtxt->theFeatures))[RR->renderPriority()].insert(F); } else if (CHECK_NODE(F)) { if (pCtxt->theFeatures->value(NodePri).contains(F)) return true; if (!(F->isVirtual() && !M_PREFS->getVirtualNodesVisible())) { Node * N = STATIC_CAST_NODE(F); N->buildPath(*(pCtxt->theProjection)); (*(pCtxt->theFeatures))[NodePri].insert(F); } } else { if (pCtxt->theFeatures->value(SegmentPri).contains(F)) return true; (*(pCtxt->theFeatures))[SegmentPri].insert(F); } return true; } void MemoryBackend::indexAdd(ILayer* l, const QRectF& bb, Feature* aFeat) { if (!l) return; if (!p->theRTree.contains(l)) p->theRTree[l] = new CoordTree(); p->AllocFeatures[aFeat] = bb; qreal min[] = {bb.bottomLeft().x(), bb.bottomLeft().y()}; qreal max[] = {bb.topRight().x(), bb.topRight().y()}; p->theRTree[l]->Insert(min, max, aFeat); } void MemoryBackend::indexRemove(ILayer* l, const QRectF& bb, Feature* aFeat) { if (!l) return; if (!p->theRTree.contains(l)) return; qreal min[] = {bb.bottomLeft().x(), bb.bottomLeft().y()}; qreal max[] = {bb.topRight().x(), bb.topRight().y()}; p->theRTree[l]->Remove(min, max, aFeat); } const QList<Feature*>& MemoryBackend::indexFind(ILayer* l, const QRectF& bb) { p->findResult.clear(); if (p->theRTree.contains(l)) { qreal min[] = {bb.bottomLeft().x(), bb.bottomLeft().y()}; qreal max[] = {bb.topRight().x(), bb.topRight().y()}; p->theRTree[l]->Search(min, max, &indexFindCallbackList, (void*)&p->findResult); } return p->findResult; } void MemoryBackend::indexFind(ILayer* l, const QRectF& bb, const IndexFindContext& ctxt) { if (!p->theRTree.contains(l)) return; qreal min[] = {bb.bottomLeft().x(), bb.bottomLeft().y()}; qreal max[] = {bb.topRight().x(), bb.topRight().y()}; p->theRTree[l]->Search(min, max, &indexFindCallback, (void*)&ctxt); } void MemoryBackend::get(ILayer* l, const QRectF& bb, QList<Feature*>& theFeatures) { if (!p->theRTree.contains(l)) return; qreal min[] = {bb.bottomLeft().x(), bb.bottomLeft().y()}; qreal max[] = {bb.topRight().x(), bb.topRight().y()}; p->theRTree[l]->Search(min, max, &indexFindCallback, (void*)(&theFeatures)); } void MemoryBackend::getFeatureSet(ILayer* l, QMap<RenderPriority, QSet <Feature*> >& theFeatures, const QList<CoordBox>& invalidRects, Projection& theProjection) { IndexFindContext ctxt; ctxt.theFeatures = &theFeatures; ctxt.theProjection = &theProjection; for (int i=0; i < invalidRects.size(); ++i) { ctxt.bbox = invalidRects[i]; indexFind(l, invalidRects[i], ctxt); } } void MemoryBackend::getFeatureSet(ILayer* l, QMap<RenderPriority, QSet <Feature*> >& theFeatures, const CoordBox& invalidRect, Projection& theProjection) { IndexFindContext ctxt; ctxt.theFeatures = &theFeatures; ctxt.theProjection = &theProjection; ctxt.bbox = invalidRect; indexFind(l, invalidRect, ctxt); } /******************************/ MemoryBackend::MemoryBackend() { p = new MemoryBackendPrivate; } MemoryBackend::~MemoryBackend() { // CoordTree::Iterator it; // p->theRTree.GetFirst(it); // while (!p->theRTree.IsNull(it)) { // delete *it; // p->theRTree.GetNext(it); // } QHash<Feature *, CoordBox>::const_iterator i = p->AllocFeatures.constBegin(); while (i != p->AllocFeatures.constEnd()) { delete i.key(); ++i; } delete p; } Node * MemoryBackend::allocNode(ILayer* l, const Node& other) { Node* f; try { f = new Node(other); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = f->BBox; if (!f->BBox.isNull()) { indexAdd(l, f->BBox, f); } return f; } Node * MemoryBackend::allocNode(ILayer* l, const QPointF& aCoord) { Node* f; try { f = new Node(aCoord); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = f->BBox; if (!f->BBox.isNull()) { indexAdd(l, f->BBox, f); } return f; } TrackNode * MemoryBackend::allocTrackNode(ILayer* l, const QPointF& aCoord) { TrackNode* f; try { f = new TrackNode(aCoord); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = f->BBox; if (!f->BBox.isNull()) { indexAdd(l, f->BBox, f); } return f; } PhotoNode * MemoryBackend::allocPhotoNode(ILayer* l, const QPointF& aCoord) { PhotoNode* f; try { f = new PhotoNode(aCoord); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = f->BBox; if (!f->BBox.isNull()) { indexAdd(l, f->BBox, f); } return f; } PhotoNode * MemoryBackend::allocPhotoNode(ILayer* l, const Node& other) { PhotoNode* f; try { f = new PhotoNode(other); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = f->BBox; if (!f->BBox.isNull()) { indexAdd(l, f->BBox, f); } return f; } PhotoNode * MemoryBackend::allocPhotoNode(ILayer* l, const TrackNode& other) { PhotoNode* f; try { f = new PhotoNode(other); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = f->BBox; if (!f->BBox.isNull()) { indexAdd(l, f->BBox, f); } return f; } Node * MemoryBackend::allocVirtualNode(const QPointF& aCoord) { Node* f; try { f = new Node(aCoord); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } return f; } Way * MemoryBackend::allocWay(ILayer* /*l*/) { Way* f; try { f = new Way(); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = CoordBox(); return f; } Way * MemoryBackend::allocWay(ILayer* /*l*/, const Way& other) { Way* f; try { f = new Way(other); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = CoordBox(); return f; } Relation * MemoryBackend::allocRelation(ILayer* /*l*/) { Relation* f; try { f = new Relation(); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = CoordBox(); return f; } Relation * MemoryBackend::allocRelation(ILayer* /*l*/, const Relation& other) { Relation* f; try { f = new Relation(other); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = CoordBox(); return f; } TrackSegment * MemoryBackend::allocSegment(ILayer* /*l*/) { TrackSegment* f; try { f = new TrackSegment(); if (!f) return NULL; } catch (...) { // Out-of-memory? return NULL; } p->AllocFeatures[f] = CoordBox(); return f; } void MemoryBackend::deallocFeature(ILayer* l, Feature *f) { if (p->AllocFeatures.contains(f)) { indexRemove(l, p->AllocFeatures[f], f); p->AllocFeatures.remove(f); } } void MemoryBackend::deallocVirtualNode(Feature *f) { delete f; } void MemoryBackend::sync(Feature *f) { if (p->AllocFeatures.contains(f) && !p->AllocFeatures[f].isNull()) indexRemove(f->layer(), p->AllocFeatures[f], f); if (CHECK_NODE(f)) { Node* N = STATIC_CAST_NODE(f); if (!N->tagSize()) for (int i=0; i<N->sizeParents(); ++i) if (CHECK_WAY(N->getParent(i))) return; } if (!f->isDeleted() && f->layer()) { CoordBox bb = f->boundingBox(); if (!bb.isNull()) { indexAdd(f->layer(), bb, f); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/MemoryBackend.h�������������������������������������������������������0000664�0000000�0000000�00000004056�11770671653�0021001�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MEMORYBACKEND_H #define MEMORYBACKEND_H #include "Features.h" struct IndexFindContext { QMap<RenderPriority, QSet <Feature*> >* theFeatures; QRectF* clipRect; Projection* theProjection; QTransform* theTransform; CoordBox bbox; }; class MemoryBackendPrivate; class MemoryBackend { public: MemoryBackend(); ~MemoryBackend(); private: MemoryBackendPrivate* p; public: virtual Node* allocNode(ILayer* l, const Node& other); virtual Node* allocNode(ILayer* l, const QPointF& aCoord); virtual TrackNode* allocTrackNode(ILayer* l, const QPointF& aCoord); virtual PhotoNode * allocPhotoNode(ILayer* l, const QPointF& aCoord); virtual PhotoNode * allocPhotoNode(ILayer* l, const Node& other); virtual PhotoNode * allocPhotoNode(ILayer* l, const TrackNode& other); virtual Node* allocVirtualNode(const QPointF& aCoord); virtual Way* allocWay(ILayer* l); virtual Way* allocWay(ILayer* l, const Way& other); virtual Relation* allocRelation(ILayer* l); virtual Relation* allocRelation(ILayer* l, const Relation& other); virtual TrackSegment* allocSegment(ILayer* l); virtual void deallocFeature(ILayer* l, Feature* f); virtual void deallocVirtualNode(Feature* f); virtual void sync(Feature* f); virtual const QList<Feature*>& indexFind(ILayer* l, const QRectF& vp); virtual void indexFind(ILayer* l, const QRectF& bb, const IndexFindContext& findResult); virtual void get(ILayer* l, const QRectF& bb, QList<Feature*>& theFeatures); virtual void getFeatureSet(ILayer* l, QMap<RenderPriority, QSet <Feature*> >& theFeatures, const QList<CoordBox>& invalidRects, Projection& theProjection); virtual void getFeatureSet(ILayer* l, QMap<RenderPriority, QSet <Feature*> >& theFeatures, const CoordBox& invalidRect, Projection& theProjection); virtual void indexAdd(ILayer* l, const QRectF& bb, Feature* aFeat); virtual void indexRemove(ILayer* l, const QRectF& bb, Feature* aFeat); }; #endif // MEMORYBACKEND_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/SpatialiteBackend.cpp�������������������������������������������������0000664�0000000�0000000�00000017573�11770671653�0022173�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: SpatialiteBackend // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "Global.h" #include "SpatialiteBackend.h" #include <QFile> #include "Features.h" #include "MerkaartorPreferences.h" class SpatialBackendPrivate { public: QHash<Feature*, qint64> AllocFeatures; QList<Feature*> findResult; }; SpatialiteBackend::SpatialiteBackend() : SpatialiteBase(), p(new SpatialBackendPrivate) { /* VERY IMPORTANT: you must initialize the SpatiaLite extension [and related] BEFORE attempting to perform any other SQLite call */ spatialite_init (0); /* showing the SQLite version */ qDebug ("SQLite version: %s", sqlite3_libversion ()); /* showing the SpatiaLite version */ qDebug ("SpatiaLite version: %s", spatialite_version ()); isTemp = true; theFilename = HOMEDIR + "/" + QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz") + ".spatialite"; open(HOMEDIR + "/temDb.spatialite", SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE); InitializeNew(); } SpatialiteBackend::SpatialiteBackend(const QString& filename) : SpatialiteBase(), p(new SpatialBackendPrivate) { /* VERY IMPORTANT: you must initialize the SpatiaLite extension [and related] BEFORE attempting to perform any other SQLite call */ spatialite_init (0); /* showing the SQLite version */ qDebug ("SQLite version: %s", sqlite3_libversion ()); /* showing the SpatiaLite version */ qDebug ("SpatiaLite version: %s", spatialite_version ()); isTemp = false; theFilename = filename; open(theFilename, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE); InitializeNew(); } SpatialiteBackend::~SpatialiteBackend() { if (isTemp) QFile::remove(theFilename); } void SpatialiteBackend::InitializeNew() { execFile(":/Utils/Spatialite/init_spatialite-2.3.sql"); // // Tables pour gérer les features. // exec( "CREATE TABLE IF NOT EXISTS feature (" " type UNSIGNED CHAR," " id INTEGER," " version INTEGER," " timestamp TIMESTAMP," " user TEXT DEFAULT NULL," " PRIMARY KEY (type, id)" " );" "SELECT AddGeometryColumn('feature', 'GEOMETRY', 4326, 'GEOMETRY', 2);" "SELECT CreateSpatialIndex('feature','GEOMETRY');" "CREATE TABLE IF NOT EXISTS feature_tags (" " id_feature INTEGER NOT NULL REFERENCES feature," " id_tag INTEGER NOT NULL REFERENCES tag," " PRIMARY KEY (id_feature, id_tag))" ); // // Table pour stocker les tags (pour tous les éléments). // exec("CREATE TABLE IF NOT EXISTS tag (" "id INTEGER PRIMARY KEY AUTOINCREMENT," "key TEXT," "value TEXT," "UNIQUE (key, value))"); // // Tables pour gérer les way. // exec( "CREATE TABLE IF NOT EXISTS way_nodes (" " id_way INTEGER REFERENCES feature," " rang INTEGER(5)," " id_node INTEGER REFERENCES feature," " PRIMARY KEY (id_way, rang));" ); // // Tables pour gérer les relations. // exec( "CREATE TABLE IF NOT EXISTS relation_members (" " id_relation INTEGER NOT NULL REFERENCES feature," " rang INTEGER(5)," " type INTEGER(1) NOT NULL," " id_member INTEGER NOT NULL," " role TEXT NULL," " PRIMARY KEY (id_relation, rang, type, id_member))"); fSelectFeature = SpatialStatement(this, "SELECT ROWID from feature where (type = ? AND id = ?)"); fSelectFeatureBbox = SpatialStatement(this, "SELECT * from feature where ROWID IN " "(Select rowid from idx_feature_Geometry WHERE xmax > ? and ymax > ? and xmin < ? and ymin < ?);"); fSelectTag = SpatialStatement(this, "SELECT id FROM tag WHERE (key=? AND value=?)"); fInsertTag = SpatialStatement(this, "INSERT INTO tag (key, value) VALUES (?,?)"); fCreateFeature = SpatialStatement(this, "INSERT INTO feature (type) VALUES (?)"); fUpdateFeature = SpatialStatement(this, "UPDATE feature set version=?,uid=?,actor=?,virtual=?,deleted=?,special=?,uploaded=?,dirtylevel=?,timestamp=?,bbox=?) WHERE ROWID=?"); fInsertFeatureTags = SpatialStatement(this, "INSERT INTO feature_tags (id_feature, id_tag) VALUES (?,?)"); fInsertWayNodes = SpatialStatement(this, "INSERT INTO way_nodes (id_way, id_node, rang) VALUES (?,?,?)"); fInsertRelationMembers = SpatialStatement(this, "INSERT INTO relation_members (id_relation, type, id_member, role, rang) VALUES (?,?,?,?,?)"); exec("PRAGMA cache_size = 10000"); exec("PRAGMA synchronous = OFF"); // exec("PRAGMA journal_mode = OFF"); exec("PRAGMA temp_store = MEMORY"); exec("PRAGMA locking_mode = EXCLUSIVE"); } void SpatialiteBackend::updateFeature(Feature *F) { qint64 rowid; fSelectFeature.bind_int(1, F->id().type); fSelectFeature.bind_int64(2, F->id().numId); if (fSelectFeature.step()) { rowid = fSelectFeature.col_int64(1); fUpdateFeature.bind_int(1, F->versionNumber()); } } void SpatialiteBackend::deleteFeature(Feature *F) { } /*******/ Node * SpatialiteBackend::allocNode(const Node& other) { fCreateFeature.bind_int(1, 'N'); if (fCreateFeature.step()) { Node* f = new Node(other); f->internal_id = lastRowId(); p->AllocFeatures[f] = f->internal_id; return f; } return NULL; } Node * SpatialiteBackend::allocNode(const QPointF& aCoord) { fCreateFeature.bind_int(1, 'N'); if (fCreateFeature.step()) { Node* f = new Node(aCoord); f->internal_id = lastRowId(); p->AllocFeatures[f] = f->internal_id; return f; } return NULL; } Way * SpatialiteBackend::allocWay() { fCreateFeature.bind_int(1, 'W'); if (fCreateFeature.step()) { Way* f = new Way(); f->internal_id = lastRowId(); p->AllocFeatures[f] = f->internal_id; return f; } return NULL; } Way * SpatialiteBackend::allocWay(const Way& other) { fCreateFeature.bind_int(1, 'W'); if (fCreateFeature.step()) { Way* f = new Way(other); f->internal_id = lastRowId(); p->AllocFeatures[f] = f->internal_id; return f; } return NULL; } Relation * SpatialiteBackend::allocRelation() { fCreateFeature.bind_int(1, 'R'); if (fCreateFeature.step()) { Relation* f = new Relation(); f->internal_id = lastRowId(); p->AllocFeatures[f] = f->internal_id; return f; } return NULL; } Relation * SpatialiteBackend::allocRelation(const Relation& other) { fCreateFeature.bind_int(1, 'R'); if (fCreateFeature.step()) { Relation* f = new Relation(other); f->internal_id = lastRowId(); p->AllocFeatures[f] = f->internal_id; return f; } return NULL; } TrackSegment * SpatialiteBackend::allocSegment() { TrackSegment* f = new TrackSegment(); p->AllocFeatures[f] = -1; return f; } void SpatialiteBackend::deallocFeature(Feature *f) { } void SpatialiteBackend::sync(Feature *f) { // CoordBox bb = f->boundingBox(); // if (!bb.isNull()) { // qreal min[] = {bb.bottomLeft().x(), bb.bottomLeft().y()}; // qreal max[] = {bb.topRight().x(), bb.topRight().y()}; // p->theRTree.Insert(min, max, f); // } } void SpatialiteBackend::getFeatureSet(QMap<RenderPriority, QSet<Feature *> > &theFeatures, QList<QRectF> &invalidRects, QRectF &clipRect, Projection &theProjection, QTransform &theTransform) { } const QList<Feature *> & SpatialiteBackend::indexFind(const QRectF &vp) { } void SpatialiteBackend::get(const QRectF &bb, QList<Feature *> &theFeatures) { } �������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/SpatialiteBackend.h���������������������������������������������������0000664�0000000�0000000�00000004076�11770671653�0021632�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: SpatialiteBackend // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING QString file that comes with this distribution // //****************************************************************** #ifndef SPATIALITEBACKEND_H #define SPATIALITEBACKEND_H #include <QtCore> #include "SpatialiteBase.h" #include "IBackend.h" #include "Features.h" class SpatialBackendPrivate; class SpatialiteBackend : public SpatialiteBase, public IBackend { public: SpatialiteBackend(); SpatialiteBackend(const QString& filename); virtual ~SpatialiteBackend(); private: SpatialBackendPrivate* p; public: virtual Node* allocNode(const Node& other); virtual Node* allocNode(const QPointF& aCoord); virtual Way* allocWay(); virtual Way* allocWay(const Way& other); virtual Relation* allocRelation(); virtual Relation* allocRelation(const Relation& other); virtual TrackSegment* allocSegment(); virtual void deallocFeature(Feature* f); virtual void sync(Feature* f); virtual const QList<Feature*>& indexFind(const QRectF& vp); virtual void get(const QRectF& bb, QList<Feature*>& theFeatures); virtual void getFeatureSet(QMap<RenderPriority, QSet <Feature*> >& theFeatures, QList<QRectF>& invalidRects, QRectF& clipRect, Projection& theProjection, QTransform& theTransform); protected: void InitializeNew(); SpatialStatement fSelectFeature; SpatialStatement fSelectFeatureBbox; SpatialStatement fSelectTag; SpatialStatement fInsertTag; SpatialStatement fCreateFeature; SpatialStatement fUpdateFeature; SpatialStatement fInsertFeatureTags; SpatialStatement fInsertWayTags; SpatialStatement fInsertWayNodes; SpatialStatement fInsertRelationTags; SpatialStatement fInsertRelationMembers; public slots: void updateFeature(Feature* F); void deleteFeature(Feature* F); protected: bool isTemp; QString theFilename; }; #endif // SPATIALITEBACKEND_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/SpatialiteBase.cpp����������������������������������������������������0000664�0000000�0000000�00000005510�11770671653�0021502�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: SpatialiteBase // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "SpatialiteBase.h" #include <QFile> SpatialiteBase::SpatialiteBase() { } sqlite3* SpatialiteBase::open(const QString& aNom, const int aFlags) { const int err = sqlite3_open_v2 (aNom.toUtf8().data(), &m_handle, aFlags, NULL); if (err != SQLITE_OK) { qDebug() << QString(sqlite3_errmsg(m_handle)) + " while opening: " + aNom; sqlite3_close (m_handle); return NULL; } return m_handle; } bool SpatialiteBase::exec(const QString& aSql) { const int err = sqlite3_exec(m_handle, aSql.toUtf8().data(), 0, 0, 0); if (err != SQLITE_OK) { qDebug() << QString(sqlite3_errmsg(m_handle)) + " in request: " + aSql; return false; } return true; } bool SpatialiteBase::execFile(const QString& aPath) { QFile f(aPath); if (!f.open(QIODevice::Text | QIODevice::ReadOnly)) return false; QString s = f.readAll(); f.close(); return exec(s); } qint64 SpatialiteBase::lastRowId() { return sqlite3_last_insert_rowid(m_handle); } /************************************/ void SpatialStatement::bind_double(int idx, qreal val) { sqlite3_bind_double(statement(), idx, val); } void SpatialStatement::bind_int(int idx, int val) { sqlite3_bind_int(statement(), idx, val); } void SpatialStatement::bind_int64(int idx, qint64 val) { sqlite3_bind_int64(statement(), idx, val); } void SpatialStatement::bind_string(int idx, const QString& val) { sqlite3_bind_text(statement(), idx, val.toUtf8().data(), val.size(), SQLITE_STATIC); } qreal SpatialStatement::col_double(int idx) { return sqlite3_column_double(statement(), idx); } int SpatialStatement::col_int(int idx) { return sqlite3_column_int(statement(), idx); } qint64 SpatialStatement::col_int64(int idx) { return sqlite3_column_int64(statement(), idx); } QString SpatialStatement::col_string(int idx) { return QString ((const char*)sqlite3_column_text(statement(), idx)); } bool SpatialStatement::step() { return ((sqlite3_step(statement()) == SQLITE_ROW)); } void SpatialStatement::reset() { sqlite3_reset(statement()); sqlite3_clear_bindings(statement()); } sqlite3_stmt* SpatialStatement::statement() { if (isPrepared) return pStmt; const int ret = sqlite3_prepare_v2(theBackend->m_handle, theQuery.toUtf8().data(), theQuery.size(), &pStmt, NULL); if (ret != SQLITE_OK) { qDebug() << QString(sqlite3_errmsg(theBackend->m_handle)) + " in prepare statement: " + theQuery; return NULL; } return pStmt; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Backend/SpatialiteBase.h������������������������������������������������������0000664�0000000�0000000�00000003171�11770671653�0021150�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: SpatialiteBackend // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING QString file that comes with this distribution // //****************************************************************** #include <QtCore> /* these headers are required in order to support SQLite/SpatiaLite */ #include <spatialite/sqlite3.h> #include <spatialite/gaiageo.h> #include <spatialite.h> #ifndef SPATIALITEBASE_H #define SPATIALITEBASE_H class SpatialiteBase { friend class SpatialStatement; public: SpatialiteBase(); sqlite3 * open(const QString &aNom, const int aFlags); bool exec(const QString &aSql); bool execFile(const QString &aPath); qint64 lastRowId(); protected: QString m_dbName; sqlite3 *m_handle; }; class SpatialStatement { friend class SpatialiteBase; public: SpatialStatement() :theBackend(0), isPrepared(false) { } SpatialStatement(SpatialiteBase* backend, const QString& query) : theBackend(backend), theQuery(query), isPrepared(false) { } void bind_double(int idx, qreal val); void bind_int(int idx, int val); void bind_int64(int idx, qint64 val); void bind_string(int idx, const QString& val); qreal col_double(int idx); int col_int(int idx); qint64 col_int64(int idx); QString col_string(int idx); sqlite3_stmt* statement(); bool step(); void reset(); protected: SpatialiteBase* theBackend; QString theQuery; bool isPrepared; sqlite3_stmt *pStmt; }; #endif // SPATIALITEBASE_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/���������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016315�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/Command.cpp����������������������������������������������������������0000664�0000000�0000000�00000037401�11770671653�0020404�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Command.h" #include "Document.h" #include "Layer.h" #include "Feature.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "TrackSegmentCommands.h" #include "RelationCommands.h" #include "NodeCommands.h" #include "FeatureCommands.h" #include <QApplication> #include <QAction> #include <QListWidget> #include <QUuid> #include <QProgressDialog> #include <algorithm> #include <utility> #include <QList> Command::Command(Feature* aF) : mainFeature(aF), commandDirtyLevel(0), oldCreated(""), isUndone(false) { description = QApplication::translate("Command", "No description"); } Command::~Command() { } void Command::setId(const QString& id) { Id = id; } const QString& Command::id() const { if (Id == "") Id = QUuid::createUuid().toString(); return Id; } QString Command::getDescription() { return description; } void Command::setDescription(QString desc) { description = desc; } Feature* Command::getFeature() { return mainFeature; } void Command::setFeature(Feature* feat) { mainFeature = feat; } bool Command::buildUndoList(QListWidget* theListWidget) { QListWidgetItem* it = new QListWidgetItem(getDescription(), theListWidget); if (getFeature()) it->setData(Qt::UserRole, QVariant::fromValue(getFeature()->id())); return true; } int Command::incDirtyLevel(Layer* aLayer, Feature* F) { F->incDirtyLevel(); aLayer->incDirtyLevel(); return ++commandDirtyLevel; } int Command::decDirtyLevel(Layer* aLayer, Feature* F) { F->decDirtyLevel(); aLayer->decDirtyLevel(); return commandDirtyLevel; } int Command::getDirtyLevel() { return commandDirtyLevel; } void Command::undo() { if (mainFeature) { isUndone = true; mainFeature->notifyChanges(); } } void Command::redo() { if (mainFeature) { isUndone = false; mainFeature->notifyChanges(); } } bool Command::toXML(QXmlStreamWriter& stream) const { bool OK = true; if (mainFeature) { stream.writeStartElement("Command"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("feature", mainFeature->xmlId()); stream.writeAttribute("oldCreated", oldCreated); if (isUndone) stream.writeAttribute("undone", "true"); // stream.writeAttribute("description", description); stream.writeEndElement(); } return OK; } void Command::fromXML(Document* d, QXmlStreamReader& stream, Command* C) { Feature* F; if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return; C->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("oldCreated")) C->oldCreated = stream.attributes().value("oldCreated").toString(); if (stream.attributes().hasAttribute("undone")) C->isUndone = (stream.attributes().value("undone") == "true" ? true : false); if (stream.attributes().hasAttribute("description")) C->description = stream.attributes().value("description").toString(); C->mainFeature = F; stream.readNext(); } // COMMANDLIST CommandList::CommandList() : Command(0), Size(0), isReversed(false) { } CommandList::CommandList(QString aDesc, Feature* aFeat) : Command(0), Size(0), isReversed(false) { description = aDesc; mainFeature = aFeat; } CommandList::~CommandList(void) { for (int i=0; i<Subs.size(); ++i) delete Subs[i]; } void CommandList::setReversed(bool val) { isReversed = val; } void CommandList::add(Command* aCommand) { Subs.push_back(aCommand); Size++; } bool CommandList::empty() const { return Size == 0; } int CommandList::size() { return Size; } void CommandList::redo() { if (!isReversed) { for (int i=0; i<Size; ++i) Subs[i]->redo(); } else { for (int i=Size; i; --i) Subs[i-1]->undo(); } } void CommandList::undo() { if (!isReversed) { for (int i=Size; i; --i) Subs[i-1]->undo(); } else { for (int i=0; i<Size; ++i) Subs[i]->redo(); } } bool CommandList::buildDirtyList(DirtyList& theList) { for (int i=0; i<Size;) { if (Subs[i]->buildDirtyList(theList)) { //delete Subs[i]; //Subs.erase(Subs.begin()+i); std::rotate(Subs.begin()+i,Subs.begin()+i+1,Subs.end()); --Size; } else ++i; } return Size == 0; } bool CommandList::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("CommandList"); stream.writeAttribute("xml:id", id()); if (isReversed) stream.writeAttribute("reversed", "true"); stream.writeAttribute("description", description); if (mainFeature) { stream.writeAttribute("feature",QString::number(mainFeature->id().numId)); stream.writeAttribute("featureclass", mainFeature->getClass()); } for (int i=0; i<Size; ++i) { OK = Subs[i]->toXML(stream); } stream.writeEndElement(); return OK; } CommandList* CommandList::fromXML(Document* d, QXmlStreamReader& stream) { CommandList* l = new CommandList(); l->setId(stream.attributes().value("xml:id").toString()); l->isReversed = (stream.attributes().value("reversed") == "true"); if (stream.attributes().hasAttribute("description")) l->description = stream.attributes().value("description").toString(); if (stream.attributes().hasAttribute("feature")) { if (stream.attributes().value("featureclass") == "Node") { l->mainFeature = (Feature*) Feature::getNodeOrCreatePlaceHolder(d, (Layer *) d->getDirtyOrOriginLayer(), IFeature::FId(IFeature::Point, stream.attributes().value("feature").toString().toLongLong())); } else if (stream.attributes().value("featureclass") == "Way") { l->mainFeature = (Feature*) Feature::getWayOrCreatePlaceHolder(d, (Layer *) d->getDirtyOrOriginLayer(), IFeature::FId(IFeature::LineString, stream.attributes().value("feature").toString().toLongLong())); } else if (stream.attributes().value("featureclass") == "Relation") { l->mainFeature = (Feature*) Feature::getRelationOrCreatePlaceHolder(d, (Layer *) d->getDirtyOrOriginLayer(), IFeature::FId(IFeature::OsmRelation, stream.attributes().value("feature").toString().toLongLong())); } } stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "AddFeatureCommand") { AddFeatureCommand* C = AddFeatureCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "MoveTrackPointCommand") { MoveNodeCommand* C = MoveNodeCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "RelationAddFeatureCommand") { RelationAddFeatureCommand* C = RelationAddFeatureCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "RelationRemoveFeatureCommand") { RelationRemoveFeatureCommand* C = RelationRemoveFeatureCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "RemoveFeatureCommand") { RemoveFeatureCommand* C = RemoveFeatureCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "RoadAddTrackPointCommand") { WayAddNodeCommand* C = WayAddNodeCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "RoadRemoveTrackPointCommand") { WayRemoveNodeCommand* C = WayRemoveNodeCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "TrackSegmentAddTrackPointCommand") { TrackSegmentAddNodeCommand* C = TrackSegmentAddNodeCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "TrackSegmentRemoveTrackPointCommand") { TrackSegmentRemoveNodeCommand* C = TrackSegmentRemoveNodeCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "ClearTagCommand") { ClearTagCommand* C = ClearTagCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "ClearTagsCommand") { ClearTagsCommand* C = ClearTagsCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "SetTagCommand") { SetTagCommand* C = SetTagCommand::fromXML(d, stream); if (C) l->add(C); } else if (stream.name() == "CommandList") { l->add(CommandList::fromXML(d, stream)); } else if (!stream.isWhitespace()) { qDebug() << "CList: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; QString el = stream.readElementText(QXmlStreamReader::IncludeChildElements); } stream.readNext(); } if (l->Size == 0) { qDebug() << "!! Corrupted (empty) command list. Deleting..."; delete l; return NULL; } return l; } // COMMANDHISTORY CommandHistory::CommandHistory() : Index(0), Size(0), UndoAction(0), RedoAction(0), UploadAction(0) { } CommandHistory::~CommandHistory() { cleanup(); } void CommandHistory::cleanup() { //FIXME Is there a point to this? //for (int i=Index; i<Subs.size(); ++i) // Subs[i]->redo(); for (int i=0; i<Subs.size(); ++i) delete Subs[i]; Subs.clear(); Index = 0; Size = 0; } void CommandHistory::undo() { if (Index) { Subs[--Index]->undo(); updateActions(); } } void CommandHistory::redo() { if (Index < Size) { Subs[Index++]->redo(); updateActions(); } } void CommandHistory::add(Command* aCommand) { //for (int i=Index; i<Subs.size(); ++i) // delete Subs[i]; //Subs.erase(Subs.begin()+Index,Subs.end()); //Subs.push_back(aCommand); //Index = Subs.size(); Subs.insert(Subs.begin()+Index, aCommand); Index++; Size = Index; updateActions(); } void CommandHistory::setActions(QAction* anUndo, QAction* aRedo, QAction* anUploadAction) { UndoAction = anUndo; RedoAction = aRedo; UploadAction = anUploadAction; updateActions(); } void CommandHistory::updateActions() { if (UndoAction) UndoAction->setEnabled(Index>0); if (RedoAction) RedoAction->setEnabled(Index<Size); if (UploadAction && !M_PREFS->getOfflineMode()) UploadAction->setEnabled(Subs.size()); } int CommandHistory::index() const { return Index; } int CommandHistory::size() const { return Size; } int CommandHistory::buildDirtyList(DirtyList& theList) { for (int i=0; i<Subs.size();) if (Subs[i]->buildDirtyList(theList)) { //delete Subs[i]; //Subs.erase(Subs.begin()+i); std::rotate(Subs.begin()+i,Subs.begin()+i+1,Subs.end()); --Index; --Size; if (!Size) cleanup(); } else ++i; return Index; } int CommandHistory::buildUndoList(QListWidget* theList) { for (int i=0; i<Index; ++i) if (!(i < Subs.size())) qDebug() << "!!! Error: Undo Index > list size"; else Subs[i]->buildUndoList(theList); return Index; } bool CommandHistory::toXML(QXmlStreamWriter& stream, QProgressDialog * /*progress*/) const { bool OK = true; stream.writeStartElement("CommandHistory"); stream.writeAttribute("index", QString::number(Index)); for (int i=0; i<Size; ++i) { OK = Subs[i]->toXML(stream); } stream.writeEndElement(); return OK; } CommandHistory* CommandHistory::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { bool OK = true; CommandHistory* h = new CommandHistory(); int index = stream.attributes().value("index").toString().toUInt(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "CommandList") { CommandList* l = CommandList::fromXML(d, stream); if (l) h->add(l); else OK = false; } else if (stream.name() == "AddFeatureCommand") { AddFeatureCommand* C = AddFeatureCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "MoveTrackPointCommand") { MoveNodeCommand* C = MoveNodeCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "RelationAddFeatureCommand") { RelationAddFeatureCommand* C = RelationAddFeatureCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "RelationRemoveFeatureCommand") { RelationRemoveFeatureCommand* C = RelationRemoveFeatureCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "RemoveFeatureCommand") { RemoveFeatureCommand* C = RemoveFeatureCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "RoadAddTrackPointCommand") { WayAddNodeCommand* C = WayAddNodeCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "RoadRemoveTrackPointCommand") { WayRemoveNodeCommand* C = WayRemoveNodeCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "TrackSegmentAddTrackPointCommand") { TrackSegmentAddNodeCommand* C = TrackSegmentAddNodeCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "TrackSegmentRemoveTrackPointCommand") { TrackSegmentRemoveNodeCommand* C = TrackSegmentRemoveNodeCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "ClearTagCommand") { ClearTagCommand* C = ClearTagCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "ClearTagsCommand") { ClearTagsCommand* C = ClearTagsCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (stream.name() == "SetTagCommand") { SetTagCommand* C = SetTagCommand::fromXML(d, stream); if (C) h->add(C); else OK = false; } else if (!stream.isWhitespace()) { qDebug() << "CHist: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; QString el = stream.readElementText(QXmlStreamReader::IncludeChildElements); } progress->setValue(stream.characterOffset()); if (progress && progress->wasCanceled()) break; stream.readNext(); } if (!OK) { qDebug() << "!! File history is corrupted. Reseting..."; qDebug() << "-- Size: " << h->Size; qDebug() << "-- Index: " << h->Index; delete h; h = new CommandHistory(); } else h->Index = index; return h; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/Command.h������������������������������������������������������������0000664�0000000�0000000�00000005341�11770671653�0020047�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_COMMAND_H_ #define MERKATOR_COMMAND_H_ #include <QList> #include <QtXml> #define KEY_UNDEF_VALUE "%%%%%" #define TAG_UNDEF_VALUE "%%%%%" class Document; class Layer; class Feature; class DirtyList; class CommandList; class QAction; class QListWidget; class QProgressDialog; class Command { public: Command(Feature* aF); virtual ~Command(void) = 0; virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList) = 0; virtual bool buildUndoList(QListWidget* theList); void setId(const QString& id); const QString& id() const; virtual bool toXML(QXmlStreamWriter& stream) const; static void fromXML(Document* d, QXmlStreamReader& stream, Command* C); virtual QString getDescription(); virtual void setDescription(QString desc); virtual Feature* getFeature(); virtual void setFeature(Feature* feat); int incDirtyLevel(Layer* aLayer, Feature* F); int decDirtyLevel(Layer* aLayer, Feature* F); int getDirtyLevel(); protected: mutable QString Id; QString description; Feature* mainFeature; int commandDirtyLevel; QString oldCreated; bool isUndone; bool wasUploaded; }; class CommandList : public Command { public: CommandList(); CommandList(QString aDesc, Feature* aFeat=NULL); virtual ~CommandList(); virtual void undo(); virtual void redo(); bool empty() const; int size(); void add(Command* aCommand); virtual bool buildDirtyList(DirtyList& theList); void setReversed(bool val); virtual bool toXML(QXmlStreamWriter& stream) const; static CommandList* fromXML(Document* d, QXmlStreamReader& stream); private: QList<Command*> Subs; int Size; bool isReversed; }; class CommandHistory { public: CommandHistory(); virtual ~CommandHistory(); void cleanup(); void undo(); void redo(); void add(Command* aCommand); void setActions(QAction* anUndo, QAction* aRedo, QAction* anUploadAction); void updateActions(); int buildDirtyList(DirtyList& theList); int buildUndoList(QListWidget* theList); int index() const; int size() const; virtual bool toXML(QXmlStreamWriter& stream, QProgressDialog * progress) const; static CommandHistory* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); private: QList<Command*> Subs; int Index; int Size; QAction* UndoAction; QAction* RedoAction; QAction* UploadAction; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/Commands.pri���������������������������������������������������������0000664�0000000�0000000�00000000703�11770671653�0020572�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Commands DEPENDPATH += $$MERKAARTOR_SRC_DIR/Commands HEADERS += \ Command.h \ DocumentCommands.h \ FeatureCommands.h \ RelationCommands.h \ WayCommands.h \ TrackSegmentCommands.h \ NodeCommands.h \ SOURCES += \ Command.cpp \ DocumentCommands.cpp \ FeatureCommands.cpp \ NodeCommands.cpp \ RelationCommands.cpp \ WayCommands.cpp \ TrackSegmentCommands.cpp \ �������������������������������������������������������������merkaartor-0.18.1/src/Commands/DocumentCommands.cpp�������������������������������������������������0000664�0000000�0000000�00000017420�11770671653�0022265�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "DocumentCommands.h" #include "Document.h" #include "Layer.h" #include "Features.h" #include "DirtyList.h" AddFeatureCommand::AddFeatureCommand(Feature* aFeature) : Command(aFeature), theLayer(0), theFeature(0), UserAdded(false) { } AddFeatureCommand::AddFeatureCommand(Layer* aLayer, Feature* aFeature, bool aUserAdded) : Command(aFeature), theLayer(aLayer), theFeature(aFeature), UserAdded(aUserAdded) { redo(); } AddFeatureCommand::~AddFeatureCommand() { if (theLayer) theLayer->decDirtyLevel(commandDirtyLevel); } void AddFeatureCommand::undo() { Command::undo(); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theFeature); oldLayer->add(theFeature); } else theFeature->setDeleted(true); decDirtyLevel(theLayer, theFeature); } void AddFeatureCommand::redo() { oldLayer = theFeature->layer(); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theFeature); theLayer->add(theFeature); } else { if (!oldLayer) theLayer->add(theFeature); else { theFeature->setDeleted(false); oldLayer = NULL; } incDirtyLevel(theLayer, theFeature); } Command::redo(); } bool AddFeatureCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (UserAdded) if (theFeature->isUploadable()) return theList.add(theFeature); return false; } bool AddFeatureCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("AddFeatureCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); stream.writeAttribute("feature", theFeature->xmlId()); stream.writeAttribute("useradded", QString(UserAdded ? "true" : "false")); Command::toXML(stream); stream.writeEndElement(); return OK; } AddFeatureCommand * AddFeatureCommand::fromXML(Document* d, QXmlStreamReader& stream) { AddFeatureCommand* a = new AddFeatureCommand(); a->setId(stream.attributes().value("xml:id").toString()); a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; Feature* F; if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return NULL; a->theFeature = F; a->UserAdded = (stream.attributes().value("useradded") == "true" ? true : false); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } /* REMOVEFEATURECOMMAND */ RemoveFeatureCommand::RemoveFeatureCommand(Feature *aFeature) : Command(aFeature), theLayer(0), theFeature(aFeature), CascadedCleanUp(0), RemoveExecuted(false) { } RemoveFeatureCommand::RemoveFeatureCommand(Document *theDocument, Feature *aFeature) : Command(aFeature), theLayer(0), theFeature(aFeature), CascadedCleanUp(0), RemoveExecuted(false) { theLayer = theDocument->getDirtyOrOriginLayer(aFeature->layer()); redo(); } RemoveFeatureCommand::RemoveFeatureCommand(Document *theDocument, Feature *aFeature, const QList<Feature*>& Alternatives) : Command(aFeature), theLayer(0), theFeature(aFeature), CascadedCleanUp(0), RemoveExecuted(false), theAlternatives(Alternatives) { CascadedCleanUp = new CommandList(QApplication::tr("Cascaded cleanup"), NULL); while (aFeature->sizeParents()) { Feature* f = CAST_FEATURE(aFeature->getParent(0)); if (f) f->cascadedRemoveIfUsing(theDocument, aFeature, CascadedCleanUp, Alternatives); } if (CascadedCleanUp->empty()) { SAFE_DELETE(CascadedCleanUp); CascadedCleanUp = 0; } else CascadedCleanUp->undo(); theLayer = theDocument->getDirtyOrOriginLayer(aFeature->layer()); redo(); } RemoveFeatureCommand::~RemoveFeatureCommand() { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); SAFE_DELETE(CascadedCleanUp); if (theLayer->getDocument()->exists(theFeature) && theFeature->isDeleted()) { theLayer->getDocument()->deleteFeature(theFeature); } } void RemoveFeatureCommand::redo() { if (!theFeature) return; if (CascadedCleanUp) CascadedCleanUp->redo(); oldLayer = theFeature->layer(); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theFeature); theLayer->add(theFeature); } theFeature->setDeleted(true); incDirtyLevel(oldLayer, theFeature); Command::redo(); } void RemoveFeatureCommand::undo() { if (!theFeature) return; Command::undo(); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theFeature); oldLayer->add(theFeature); } theFeature->setDeleted(false); decDirtyLevel(oldLayer, theFeature); if (CascadedCleanUp) CascadedCleanUp->undo(); } bool RemoveFeatureCommand::buildDirtyList(DirtyList &theList) { if (!theFeature) return false; if (isUndone) return false; if (!oldLayer->isUploadable()) return false; if (theFeature->lastUpdated() == Feature::OSMServerConflict) return false; //if (!theFeature->hasOSMId()) // return false; bool CascadedResult = true; if (CascadedCleanUp) CascadedResult = CascadedCleanUp->buildDirtyList(theList); if (!RemoveExecuted) RemoveExecuted = theList.erase(theFeature); return RemoveExecuted && CascadedResult; } bool RemoveFeatureCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("RemoveFeatureCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("layer", oldLayer->id()); stream.writeAttribute("newlayer", theLayer->id()); stream.writeAttribute("feature", theFeature->xmlId()); if (CascadedCleanUp) { stream.writeStartElement("Cascaded"); CascadedCleanUp->toXML(stream); stream.writeEndElement(); } // if (theAlternatives.size() > 0) { // QList<MapFeature*>::const_iterator myFeatIter; // for(myFeatIter = theAlternatives.begin(); // myFeatIter != theAlternatives.end(); // myFeatIter++) // { // QDomElement alt = xParent.ownerDocument().createElement("Alternative"); // e.appendChild(alt); // // alt.setAttribute("xml:id", id()); // } // } Command::toXML(stream); stream.writeEndElement(); return OK; } RemoveFeatureCommand * RemoveFeatureCommand::fromXML(Document* d, QXmlStreamReader& stream) { RemoveFeatureCommand* a = new RemoveFeatureCommand(); a->setId(stream.attributes().value("xml:id").toString()); a->oldLayer = d->getLayer(stream.attributes().value("layer").toString()); if (stream.attributes().hasAttribute("newlayer")) a->theLayer = d->getLayer(stream.attributes().value("newlayer").toString()); else a->theLayer = d->getDirtyOrOriginLayer(); if (!a->theLayer) return NULL; Feature* F; if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return NULL; a->theFeature = F; stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Cascaded") { a->CascadedCleanUp = CommandList::fromXML(d, stream); } else if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/DocumentCommands.h���������������������������������������������������0000664�0000000�0000000�00000002773�11770671653�0021737�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_DOCUMENTCOMMANDS_H_ #define MERKATOR_DOCUMENTCOMMANDS_H_ #include "Command.h" #include <QList> class Document; class Layer; class Feature; class AddFeatureCommand : public Command { public: AddFeatureCommand(Feature* aFeature = NULL); AddFeatureCommand(Layer* aDocument, Feature* aFeature, bool aUserAdded); virtual ~AddFeatureCommand(); void undo(); void redo(); bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static AddFeatureCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; Feature* theFeature; bool UserAdded; }; class RemoveFeatureCommand : public Command { public: RemoveFeatureCommand(Feature* aFeature = NULL); RemoveFeatureCommand(Document* theDocument, Feature* aFeature); RemoveFeatureCommand(Document* theDocument, Feature* aFeature, const QList<Feature*>& Alternatives); virtual ~RemoveFeatureCommand(); void undo(); void redo(); bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static RemoveFeatureCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; Feature* theFeature; CommandList* CascadedCleanUp; bool RemoveExecuted; QList<Feature*> theAlternatives; }; #endif �����merkaartor-0.18.1/src/Commands/FeatureCommands.cpp��������������������������������������������������0000664�0000000�0000000�00000030030�11770671653�0022072�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "FeatureCommands.h" #include "Document.h" #include "Feature.h" #include "Layer.h" #include "DirtyList.h" TagCommand::TagCommand(Feature* aF, Layer* aLayer) : Command(aF), theFeature(aF), FirstRun(true), theLayer(aLayer), oldLayer(0) { } TagCommand::TagCommand(Feature* aF) : Command(aF), theLayer(0), oldLayer(0) { } TagCommand::~TagCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } //void TagCommand::undo() //{ // theFeature->clearTags(); // for (int i=0; i<Before.size(); ++i) // theFeature->setTag(Before[i].first,Before[i].second); //} // //void TagCommand::redo() //{ // if (FirstRun) // for (int i=0; i<theFeature->tagSize(); ++i) // After.push_back(qMakePair(theFeature->tagKey(i),theFeature->tagValue(i))); // else // { // theFeature->clearTags(); // for (int i=0; i<After.size(); ++i) // theFeature->setTag(After[i].first,After[i].second); // } // FirstRun = false; //} // bool TagCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theFeature->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theFeature); if (theLayer->isUploadable()) return theList.update(theFeature); return theList.noop(theFeature); } SetTagCommand::SetTagCommand(Feature* aF) : TagCommand(aF, 0), theIdx(0), theK(""), theV("") { oldLayer = theFeature->layer(); } SetTagCommand::SetTagCommand(Feature* aF, int idx, const QString& k, const QString& v, Layer* aLayer) : TagCommand(aF, aLayer), theIdx(idx), theK(k), theV(v) { description = QApplication::tr("Set Tag '%1=%2' on %3").arg(k).arg(v).arg(aF->description()); oldLayer = theFeature->layer(); redo(); } SetTagCommand::SetTagCommand(Feature* aF, const QString& k, const QString& v, Layer* aLayer) : TagCommand(aF, aLayer), theIdx(-1), theK(k), theV(v) { description = QApplication::tr("Set Tag '%1=%2' on %3").arg(k).arg(v).arg(aF->description()); oldLayer = theFeature->layer(); redo(); } void SetTagCommand::undo() { Command::undo(); if (theFeature->isUploaded()) { theLayer = theLayer->getDocument()->getUploadedLayer(); oldLayer = theLayer->getDocument()->getDirtyOrOriginLayer(); } if (oldV != TAG_UNDEF_VALUE && oldK != KEY_UNDEF_VALUE) { if(oldK!=theK) theFeature->clearTag(theK); theFeature->setTag(theIdx,oldK,oldV); } else theFeature->clearTag(theK); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theFeature); oldLayer->add(theFeature); } decDirtyLevel(oldLayer, theFeature); } void SetTagCommand::redo() { oldV = TAG_UNDEF_VALUE; oldK = KEY_UNDEF_VALUE; if (theIdx < 0) { oldK = theK; oldV = theFeature->tagValue(theK, TAG_UNDEF_VALUE); theFeature->setTag(theK,theV); } else { oldV = theFeature->tagValue(theIdx); oldK = theFeature->tagKey(theIdx); if(oldK!=theK) theFeature->clearTag(oldK); theFeature->setTag(theIdx,theK,theV); } if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theFeature); theLayer->add(theFeature); } incDirtyLevel(oldLayer, theFeature); Command::redo(); } bool SetTagCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theFeature->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theFeature); if (theK.startsWith('_') && (theK.endsWith('_'))) return theList.noop(theFeature); if (!theFeature->isUploadable()) return theList.noop(theFeature); return theList.update(theFeature); } bool SetTagCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("SetTagCommand"); stream.writeAttribute("oldkey", oldK); stream.writeAttribute("xml:id", id()); stream.writeAttribute("feature", theFeature->xmlId()); stream.writeAttribute("idx", QString::number(theIdx)); stream.writeAttribute("key", theK); stream.writeAttribute("value", theV); stream.writeAttribute("oldvalue", oldV); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); Command::toXML(stream); stream.writeEndElement(); return OK; } SetTagCommand * SetTagCommand::fromXML(Document * d, QXmlStreamReader& stream) { Feature* F; if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) { qDebug() << "SetTagCommand::fromXML: Undefined feature: " << stream.attributes().value("feature").toString(); return NULL; } SetTagCommand* a = new SetTagCommand(F); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("oldkey")) a->oldK = stream.attributes().value("oldkey").toString(); a->theFeature = F; a->theIdx = stream.attributes().value("idx").toString().toInt(); a->theK = stream.attributes().value("key").toString(); a->theV = stream.attributes().value("value").toString(); if (stream.attributes().hasAttribute("oldvalue")) a->oldV = stream.attributes().value("oldvalue").toString(); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = NULL; if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; a->description = QApplication::tr("Set Tag '%1=%2' on %3").arg(a->theK).arg(a->theV).arg(a->theFeature->description()); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } /* CLEARTAGSCOMMAND */ ClearTagsCommand::ClearTagsCommand(Feature* F, Layer* aLayer) : TagCommand(F, aLayer) { for (int i=0; i<theFeature->tagSize(); ++i) Before.push_back(qMakePair(theFeature->tagKey(i),theFeature->tagValue(i))); oldLayer = theFeature->layer(); redo(); } void ClearTagsCommand::undo() { Command::undo(); if (theFeature->isUploaded()) { theLayer = theLayer->getDocument()->getUploadedLayer(); oldLayer = theLayer->getDocument()->getDirtyOrOriginLayer(); } theFeature->clearTags(); for (int i=0; i<Before.size(); ++i) theFeature->setTag(Before[i].first,Before[i].second); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theFeature); oldLayer->add(theFeature); } decDirtyLevel(oldLayer, theFeature); } void ClearTagsCommand::redo() { theFeature->clearTags(); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theFeature); theLayer->add(theFeature); } incDirtyLevel(oldLayer, theFeature); Command::redo(); } bool ClearTagsCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("ClearTagsCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("feature", theFeature->xmlId()); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); for (int i=0; i<Before.size(); ++i) { stream.writeStartElement("tag"); stream.writeAttribute("k", Before[i].first); stream.writeAttribute("v", Before[i].second); stream.writeEndElement(); } Command::toXML(stream); stream.writeEndElement(); return OK; } ClearTagsCommand * ClearTagsCommand::fromXML(Document * d, QXmlStreamReader& stream) { Feature* F; if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return NULL; ClearTagsCommand* a = new ClearTagsCommand(F); a->setId(stream.attributes().value("xml:id").toString()); a->theFeature = F; if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = NULL; if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "tag") { a->Before.push_back(qMakePair(stream.attributes().value("k").toString(),stream.attributes().value("v").toString())); } else if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } Command::fromXML(d, stream, a); return a; } /* CLEARTAGCOMMAND */ ClearTagCommand::ClearTagCommand(Feature* F) : TagCommand(F, 0), theIdx(0), theK(""), theV("") { oldLayer = theFeature->layer(); } ClearTagCommand::ClearTagCommand(Feature* F, const QString& k, Layer* aLayer) : TagCommand(F, aLayer), theIdx(F->findKey(k)), theK(k), theV(F->tagValue(k, "")) { description = QApplication::tr("Clear Tag '%1' on %2").arg(k).arg(F->description()); oldLayer = theFeature->layer(); redo(); } void ClearTagCommand::undo() { Command::undo(); if (theFeature->isUploaded()) { theLayer = theLayer->getDocument()->getUploadedLayer(); oldLayer = theLayer->getDocument()->getDirtyOrOriginLayer(); } theFeature->setTag(theIdx,theK,theV); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theFeature); oldLayer->add(theFeature); } decDirtyLevel(oldLayer, theFeature); } void ClearTagCommand::redo() { theFeature->clearTag(theK); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theFeature); theLayer->add(theFeature); } incDirtyLevel(oldLayer, theFeature); Command::redo(); } bool ClearTagCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theFeature->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theFeature); if (!theFeature->isUploadable()) return theList.noop(theFeature); return theList.update(theFeature); } bool ClearTagCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("ClearTagCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("feature", theFeature->xmlId()); stream.writeAttribute("idx", QString::number(theIdx)); stream.writeAttribute("key", theK); stream.writeAttribute("value", theV); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); Command::toXML(stream); stream.writeEndElement(); return OK; } ClearTagCommand * ClearTagCommand::fromXML(Document * d, QXmlStreamReader& stream) { Feature* F; if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return NULL; ClearTagCommand* a = new ClearTagCommand(F); a->setId(stream.attributes().value("xml:id").toString()); a->theFeature = F; a->theIdx = stream.attributes().value("idx").toString().toInt(); a->theK = stream.attributes().value("key").toString(); a->theV = stream.attributes().value("value").toString(); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = NULL; if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; a->description = QApplication::tr("Clear Tag '%1' on %2").arg(a->theK).arg(a->theFeature->description()); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/FeatureCommands.h����������������������������������������������������0000664�0000000�0000000�00000004172�11770671653�0021547�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_FEATURECOMMANDS_H_ #define MERKAARTOR_FEATURECOMMANDS_H_ #include "Command.h" #include <QtCore/QString> #include <utility> #include <QList> class Feature; class Document; class Layer; class TagCommand : public Command { public: TagCommand(Feature* aF, Layer* aLayer); TagCommand(Feature* aF); ~TagCommand(void); virtual void undo() = 0; virtual void redo() = 0; virtual bool buildDirtyList(DirtyList& theList); protected: Feature* theFeature; QList<QPair<QString, QString> > Before, After; bool FirstRun; Layer* theLayer; Layer* oldLayer; }; class SetTagCommand : public TagCommand { public: SetTagCommand(Feature* aF); SetTagCommand(Feature* aF, int idx, const QString& k, const QString& v, Layer* aLayer=NULL); SetTagCommand(Feature* aF, const QString& k, const QString& v, Layer* aLayer=NULL); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static SetTagCommand* fromXML(Document* d, QXmlStreamReader& stream); private: int theIdx; QString theK; QString theV; QString oldK; QString oldV; }; class ClearTagsCommand : public TagCommand { public: ClearTagsCommand(Feature* aF, Layer* aLayer=NULL); virtual void undo(); virtual void redo(); virtual bool toXML(QXmlStreamWriter& stream) const; static ClearTagsCommand* fromXML(Document* d, QXmlStreamReader& stream); }; class ClearTagCommand : public TagCommand { public: ClearTagCommand(Feature* aF); ClearTagCommand(Feature* aF, const QString& k, Layer* aLayer=NULL); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static ClearTagCommand* fromXML(Document* d, QXmlStreamReader& stream); private: int theIdx; QString theK; QString theV; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/NodeCommands.cpp�����������������������������������������������������0000664�0000000�0000000�00000007157�11770671653�0021402�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "NodeCommands.h" #include "Node.h" #include "Layer.h" #include "DirtyList.h" MoveNodeCommand::MoveNodeCommand() : Command(0), theLayer(0), oldLayer(0), OldPos(Coord(0, 0)), NewPos(Coord(0, 0)) { } MoveNodeCommand::MoveNodeCommand(Node* aPt) : Command(aPt), theLayer(0), oldLayer(0), OldPos(Coord(0, 0)), NewPos(Coord(0, 0)) { if (!theLayer) theLayer = thePoint->layer(); description = QApplication::tr("Move node %1").arg(aPt->description()); } MoveNodeCommand::MoveNodeCommand(Node* aPt, const Coord& aPos, Layer* aLayer) : Command(aPt), theLayer(aLayer), oldLayer(0), thePoint(aPt), OldPos(aPt->position()), NewPos(aPos) { if (!theLayer) theLayer = thePoint->layer(); description = QApplication::tr("Move node %1").arg(aPt->description()); redo(); } MoveNodeCommand::~MoveNodeCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } void MoveNodeCommand::undo() { Command::undo(); thePoint->setPosition(OldPos); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(thePoint); oldLayer->add(thePoint); } decDirtyLevel(oldLayer, thePoint); } void MoveNodeCommand::redo() { oldLayer = thePoint->layer(); thePoint->setPosition(NewPos); thePoint->setVirtual(false); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(thePoint); theLayer->add(thePoint); } incDirtyLevel(oldLayer, thePoint); Command::redo(); } bool MoveNodeCommand::buildDirtyList(DirtyList &theList) { if (isUndone) return false; if (thePoint->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(thePoint); if (!thePoint->layer()) return theList.update(thePoint); if (thePoint->isUploadable()) return theList.update(thePoint); return theList.noop(thePoint); } bool MoveNodeCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("MoveTrackPointCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("trackpoint", thePoint->xmlId()); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); OldPos.toXML("oldpos", stream); NewPos.toXML("newpos", stream); Command::toXML(stream); stream.writeEndElement(); return OK; } MoveNodeCommand * MoveNodeCommand::fromXML(Document * d, QXmlStreamReader& stream) { MoveNodeCommand* a = new MoveNodeCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = NULL; if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->thePoint = Feature::getNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("trackpoint").toString().toLongLong())); a->description = QApplication::tr("Move node %1").arg(a->thePoint->description()); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "oldpos") { a->OldPos = Coord::fromXML(stream); } else if (stream.name() == "newpos") { a->NewPos = Coord::fromXML(stream); } else if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/NodeCommands.h�������������������������������������������������������0000664�0000000�0000000�00000001324�11770671653�0021035�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_NODECOMMANDS_H_ #define MERKATOR_NODECOMMANDS_H_ #include "Command.h" #include "Coord.h" class Node; class Layer; class MoveNodeCommand : public Command { public: MoveNodeCommand(); MoveNodeCommand(Node* aPt); MoveNodeCommand(Node* aPt, const Coord& aPos, Layer* aLayer=NULL); virtual ~MoveNodeCommand(); void undo(); void redo(); bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static MoveNodeCommand* fromXML(Document* d,QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; Node* thePoint; Coord OldPos, NewPos; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/RelationCommands.cpp�������������������������������������������������0000664�0000000�0000000�00000022720�11770671653�0022263�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "RelationCommands.h" #include "Relation.h" #include "Feature.h" #include "Layer.h" #include "DirtyList.h" RelationAddFeatureCommand::RelationAddFeatureCommand(Relation* R) : Command(R), theLayer(0), oldLayer(0), theRelation(R), Role(""), theMapFeature(0), Position(0) { } RelationAddFeatureCommand::RelationAddFeatureCommand(Relation* R, const QString& aRole, Feature* W, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), theRelation(R), Role(aRole), theMapFeature(W), Position(theRelation->size()) { if (!theLayer) theLayer = theRelation->layer(); redo(); } RelationAddFeatureCommand::RelationAddFeatureCommand(Relation* R, const QString& aRole, Feature* W, int aPos, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), theRelation(R), Role(aRole), theMapFeature(W), Position(aPos) { if (!theLayer) theLayer = theRelation->layer(); redo(); } RelationAddFeatureCommand::~RelationAddFeatureCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } void RelationAddFeatureCommand::undo() { Command::undo(); theRelation->remove(Position); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theRelation); oldLayer->add(theRelation); } decDirtyLevel(oldLayer, theRelation); } void RelationAddFeatureCommand::redo() { oldLayer = theRelation->layer(); theRelation->add(Role, theMapFeature, Position); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theRelation); theLayer->add(theRelation); } incDirtyLevel(oldLayer, theRelation); Command::redo(); } bool RelationAddFeatureCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theRelation->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theRelation); if (!theRelation->layer()) return theList.update(theRelation); if (theRelation->isUploadable()) return theList.update(theRelation); return theList.noop(theRelation); } bool RelationAddFeatureCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("RelationAddFeatureCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("relation", theRelation->xmlId()); stream.writeAttribute("role", Role); stream.writeAttribute("feature", theMapFeature->xmlId()); stream.writeAttribute("pos", QString::number(Position)); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); Command::toXML(stream); stream.writeEndElement(); return OK; } RelationAddFeatureCommand * RelationAddFeatureCommand::fromXML(Document * d, QXmlStreamReader& stream) { RelationAddFeatureCommand* a = new RelationAddFeatureCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = d->getDirtyOrOriginLayer(); if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->theRelation = Feature::getRelationOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::OsmRelation, stream.attributes().value("relation").toString().toLongLong())); Feature* F; if (stream.attributes().value("featureclass") == "TrackPoint") { F = (Feature*) Feature::getNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("trackpoint").toString().toLongLong())); } else if (stream.attributes().value("featureclass") == "Road") { F = (Feature*) Feature::getWayOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::LineString, stream.attributes().value("road").toString().toLongLong())); } else if (stream.attributes().value("featureclass") == "Relation") { F = (Feature*) Feature::getRelationOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::OsmRelation, stream.attributes().value("road").toString().toLongLong())); } else { if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return NULL; } a->Role = stream.attributes().value("role").toString(); a->theMapFeature = F; a->Position = stream.attributes().value("pos").toString().toUInt(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } /* RelationRemoveFeatureCommand */ RelationRemoveFeatureCommand::RelationRemoveFeatureCommand(Relation* R) : Command(R), theLayer(0), oldLayer(0), Idx(0), theRelation(R), theMapFeature(0) { } RelationRemoveFeatureCommand::RelationRemoveFeatureCommand(Relation* R, Feature* W, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), Idx(R->find(W)), theRelation(R), theMapFeature(W) { if (!theLayer) theLayer = theRelation->layer(); Role = R->getRole(Idx); redo(); } RelationRemoveFeatureCommand::RelationRemoveFeatureCommand(Relation* R, int anIdx, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), Idx(anIdx), theRelation(R), Role(R->getRole(anIdx)), theMapFeature(R->get(anIdx)) { if (!theLayer) theLayer = theRelation->layer(); redo(); } RelationRemoveFeatureCommand::~RelationRemoveFeatureCommand(void) { oldLayer->decDirtyLevel(commandDirtyLevel); } void RelationRemoveFeatureCommand::undo() { Command::undo(); theRelation->add(Role,theMapFeature,Idx); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theRelation); oldLayer->add(theRelation); } decDirtyLevel(oldLayer, theRelation); } void RelationRemoveFeatureCommand::redo() { oldLayer = theRelation->layer(); theRelation->remove(Idx); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theRelation); theLayer->add(theRelation); } incDirtyLevel(oldLayer, theRelation); Command::redo(); } bool RelationRemoveFeatureCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theRelation->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theRelation); if (!theRelation->layer()) return theList.update(theRelation); if (theRelation->isUploadable()) return theList.update(theRelation); return theList.noop(theRelation); } bool RelationRemoveFeatureCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("RelationRemoveFeatureCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("relation", theRelation->xmlId()); stream.writeAttribute("feature", theMapFeature->xmlId()); stream.writeAttribute("featureclass", theMapFeature->getClass()); stream.writeAttribute("index", QString::number(Idx)); stream.writeAttribute("role", Role); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); Command::toXML(stream); stream.writeEndElement(); return OK; } RelationRemoveFeatureCommand * RelationRemoveFeatureCommand::fromXML(Document * d, QXmlStreamReader& stream) { RelationRemoveFeatureCommand* a = new RelationRemoveFeatureCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = d->getDirtyOrOriginLayer(); if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->theRelation = Feature::getRelationOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::OsmRelation, stream.attributes().value("relation").toString().toLongLong())); Feature* F = NULL; if (stream.attributes().value("featureclass") == "Node") { F = (Feature*) Feature::getNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("feature").toString().toLongLong())); } else if (stream.attributes().value("featureclass") == "Way") { F = (Feature*) Feature::getWayOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::LineString, stream.attributes().value("feature").toString().toLongLong())); } else if (stream.attributes().value("featureclass") == "Relation") { F = (Feature*) Feature::getRelationOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::OsmRelation, stream.attributes().value("feature").toString().toLongLong())); } else { if (!(F = d->getFeature(IFeature::FId(IFeature::All, stream.attributes().value("feature").toString().toLongLong())))) return NULL; } a->theMapFeature = F; a->Idx = stream.attributes().value("index").toString().toInt(); a->Role = stream.attributes().value("role").toString(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } ������������������������������������������������merkaartor-0.18.1/src/Commands/RelationCommands.h���������������������������������������������������0000664�0000000�0000000�00000003351�11770671653�0021727�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_RELATIONCOMMANDS_H_ #define MERKAARTOR_RELATIONCOMMANDS_H_ #include "Command.h" #include <QString> class Relation; class Feature; class Layer; class RelationAddFeatureCommand : public Command { public: RelationAddFeatureCommand(Relation* R = NULL); RelationAddFeatureCommand(Relation* R, const QString& Role, Feature* W, Layer* aLayer=NULL); RelationAddFeatureCommand(Relation* R, const QString& Role, Feature* W, int Position, Layer* aLayer=NULL); ~RelationAddFeatureCommand(void); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static RelationAddFeatureCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; Relation* theRelation; QString Role; Feature* theMapFeature; int Position; }; class RelationRemoveFeatureCommand : public Command { public: RelationRemoveFeatureCommand(Relation* R = NULL); RelationRemoveFeatureCommand(Relation* R, Feature* W, Layer* aLayer=NULL); RelationRemoveFeatureCommand(Relation* R, int anIdx, Layer* aLayer=NULL); ~RelationRemoveFeatureCommand(void); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static RelationRemoveFeatureCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; int Idx; Relation* theRelation; QString Role; Feature* theMapFeature; }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/TrackSegmentCommands.cpp���������������������������������������������0000664�0000000�0000000�00000014563�11770671653�0023103�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "TrackSegmentCommands.h" #include "TrackSegment.h" #include "Node.h" #include "Layer.h" #include "DirtyList.h" TrackSegmentAddNodeCommand::TrackSegmentAddNodeCommand(TrackSegment* R) : Command(R), theLayer(0), oldLayer(0), theTrackSegment(R), theNode(0), Position(0) { } TrackSegmentAddNodeCommand::TrackSegmentAddNodeCommand(TrackSegment* R, TrackNode* W, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), theTrackSegment(R), theNode(W), Position(theTrackSegment->size()) { redo(); } TrackSegmentAddNodeCommand::TrackSegmentAddNodeCommand(TrackSegment* R, TrackNode* W, int aPos, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), theTrackSegment(R), theNode(W), Position(aPos) { redo(); } TrackSegmentAddNodeCommand::~TrackSegmentAddNodeCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } void TrackSegmentAddNodeCommand::undo() { Command::undo(); theTrackSegment->remove(Position); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theTrackSegment); oldLayer->add(theTrackSegment); } decDirtyLevel(oldLayer, theTrackSegment); } void TrackSegmentAddNodeCommand::redo() { theTrackSegment->add(theNode, Position); oldLayer = theTrackSegment->layer(); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theTrackSegment); theLayer->add(theTrackSegment); } incDirtyLevel(oldLayer, theTrackSegment); Command::redo(); } bool TrackSegmentAddNodeCommand::buildDirtyList(DirtyList& /* theList */) { return false; } bool TrackSegmentAddNodeCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("TrackSegmentAddTrackPointCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("tracksegment", theTrackSegment->xmlId()); stream.writeAttribute("trackpoint", theNode->xmlId()); stream.writeAttribute("pos", QString::number(Position)); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); stream.writeEndElement(); return OK; } TrackSegmentAddNodeCommand * TrackSegmentAddNodeCommand::fromXML(Document * d, QXmlStreamReader& stream) { TrackSegmentAddNodeCommand* a = new TrackSegmentAddNodeCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = NULL; if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->theTrackSegment = dynamic_cast<TrackSegment*>(d->getFeature(IFeature::FId(IFeature::GpxSegment, stream.attributes().value("tracksegment").toString().toLongLong()))); a->theNode = Feature::getTrackNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("trackpoint").toString().toLongLong())); a->Position = stream.attributes().value("pos").toString().toUInt(); return a; } /* TRACKSEGMENTREMOVETRACKPOINTCOMMAND */ TrackSegmentRemoveNodeCommand::TrackSegmentRemoveNodeCommand(TrackSegment* R) : Command(R), theLayer(0), oldLayer(0), Idx(0), theTrackSegment(R), theTrackPoint(0) { }; TrackSegmentRemoveNodeCommand::TrackSegmentRemoveNodeCommand(TrackSegment* R, TrackNode* W, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), Idx(R->find(W)), theTrackSegment(R), theTrackPoint(W) { redo(); } TrackSegmentRemoveNodeCommand::TrackSegmentRemoveNodeCommand(TrackSegment* R, int anIdx, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), Idx(anIdx), theTrackSegment(R), theTrackPoint(CAST_TRACKNODE(R->get(anIdx))) { redo(); } TrackSegmentRemoveNodeCommand::~TrackSegmentRemoveNodeCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } void TrackSegmentRemoveNodeCommand::undo() { Command::undo(); theTrackSegment->add(theTrackPoint,Idx); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theTrackSegment); oldLayer->add(theTrackSegment); } decDirtyLevel(oldLayer, theTrackSegment); } void TrackSegmentRemoveNodeCommand::redo() { theTrackSegment->remove(Idx); oldLayer = theTrackSegment->layer(); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theTrackSegment); theLayer->add(theTrackSegment); } incDirtyLevel(oldLayer, theTrackSegment); Command::redo(); } bool TrackSegmentRemoveNodeCommand::buildDirtyList(DirtyList& /* theList */) { return false; } bool TrackSegmentRemoveNodeCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("TrackSegmentRemoveTrackPointCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("tracksegment", theTrackSegment->xmlId()); stream.writeAttribute("trackpoint", theTrackPoint->xmlId()); stream.writeAttribute("index", QString::number(Idx)); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); stream.writeEndElement(); return OK; } TrackSegmentRemoveNodeCommand * TrackSegmentRemoveNodeCommand::fromXML(Document * d, QXmlStreamReader& stream) { TrackSegmentRemoveNodeCommand* a = new TrackSegmentRemoveNodeCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = NULL; if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->theTrackSegment = dynamic_cast<TrackSegment*>(d->getFeature(IFeature::FId(IFeature::GpxSegment, stream.attributes().value("tracksegment").toString().toLongLong()))); a->theTrackPoint = Feature::getTrackNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("trackpoint").toString().toLongLong())); a->Idx = stream.attributes().value("index").toString().toUInt(); return a; } ���������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/TrackSegmentCommands.h�����������������������������������������������0000664�0000000�0000000�00000003303�11770671653�0022536�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_TRACKSEGMENTCOMMANDS_H_ #define MERKAARTOR_TRACKSEGMENTCOMMANDS_H_ #include "Command.h" class TrackSegment; class TrackNode; class Layer; class TrackSegmentAddNodeCommand : public Command { public: TrackSegmentAddNodeCommand(TrackSegment* R = NULL); TrackSegmentAddNodeCommand(TrackSegment* R, TrackNode* W, Layer* aLayer=NULL); TrackSegmentAddNodeCommand(TrackSegment* R, TrackNode* W, int Position, Layer* aLayer=NULL); ~TrackSegmentAddNodeCommand(void); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static TrackSegmentAddNodeCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; TrackSegment* theTrackSegment; TrackNode* theNode; int Position; }; class TrackSegmentRemoveNodeCommand : public Command { public: TrackSegmentRemoveNodeCommand(TrackSegment* R = NULL); TrackSegmentRemoveNodeCommand(TrackSegment* R, TrackNode* W, Layer* aLayer=NULL); TrackSegmentRemoveNodeCommand(TrackSegment* R, int anIdx, Layer* aLayer=NULL); ~TrackSegmentRemoveNodeCommand(void); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static TrackSegmentRemoveNodeCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; int Idx; TrackSegment* theTrackSegment; TrackNode* theTrackPoint; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/WayCommands.cpp������������������������������������������������������0000664�0000000�0000000�00000017160�11770671653�0021250�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "WayCommands.h" #include "Way.h" #include "Node.h" #include "Layer.h" #include "DirtyList.h" WayAddNodeCommand::WayAddNodeCommand(Way* R) : Command (R), theLayer(0), oldLayer(0), theRoad(R), theTrackPoint(0), Position(0) { } WayAddNodeCommand::WayAddNodeCommand(Way* R, Node* W, Layer* aLayer) : Command (R), theLayer(aLayer), oldLayer(0), theRoad(R), theTrackPoint(W), Position(theRoad->size()) { if (!theLayer) theLayer = theRoad->layer(); redo(); } WayAddNodeCommand::WayAddNodeCommand(Way* R, Node* W, int aPos, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), theRoad(R), theTrackPoint(W), Position(aPos) { if (!theLayer) theLayer = theRoad->layer(); redo(); } WayAddNodeCommand::~WayAddNodeCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } void WayAddNodeCommand::undo() { Command::undo(); theRoad->remove(Position); if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theRoad); oldLayer->add(theRoad); } decDirtyLevel(oldLayer, theRoad); } void WayAddNodeCommand::redo() { oldLayer = theRoad->layer(); theRoad->add(theTrackPoint, Position); if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theRoad); theLayer->add(theRoad); } incDirtyLevel(oldLayer, theRoad); Command::redo(); } bool WayAddNodeCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theRoad->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theRoad); if (!theRoad->layer()) return theList.update(theRoad); if (theRoad->isUploadable() && theTrackPoint->isUploadable()) return theList.update(theRoad); return theList.noop(theRoad); } bool WayAddNodeCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("RoadAddTrackPointCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("road", theRoad->xmlId()); stream.writeAttribute("trackpoint", theTrackPoint->xmlId()); stream.writeAttribute("pos", QString::number(Position)); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); Command::toXML(stream); stream.writeEndElement(); return OK; } WayAddNodeCommand * WayAddNodeCommand::fromXML(Document * d, QXmlStreamReader& stream) { WayAddNodeCommand* a = new WayAddNodeCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = d->getDirtyOrOriginLayer(); if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->theRoad = Feature::getWayOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::LineString, stream.attributes().value("road").toString().toLongLong())); a->theTrackPoint = Feature::getNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("trackpoint").toString().toLongLong())); a->Position = stream.attributes().value("pos").toString().toUInt(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } /* ROADREMOVETRACKPOINTCOMMAND */ WayRemoveNodeCommand::WayRemoveNodeCommand(Way* R) : Command(R), theLayer(0), oldLayer(0), Idx(0), wasClosed(R ? R->isClosed() : false), theRoad(R), theNode(0) { } WayRemoveNodeCommand::WayRemoveNodeCommand(Way* R, Node* W, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), Idx(R->find(W)), wasClosed(R ? R->isClosed() : false), theRoad(R), theNode(W) { if (!theLayer) theLayer = theRoad->layer(); redo(); } WayRemoveNodeCommand::WayRemoveNodeCommand(Way* R, int anIdx, Layer* aLayer) : Command(R), theLayer(aLayer), oldLayer(0), Idx(anIdx), wasClosed(R ? R->isClosed() : false), theRoad(R), theNode(R->getNode(anIdx)) { if (!theLayer) theLayer = theRoad->layer(); redo(); } WayRemoveNodeCommand::~WayRemoveNodeCommand(void) { if (oldLayer) oldLayer->decDirtyLevel(commandDirtyLevel); } void WayRemoveNodeCommand::undo() { Command::undo(); theRoad->add(theNode,Idx); if (wasClosed && Idx == 0) { theRoad->remove(theRoad->size()-1); theRoad->add(theNode); } if (theLayer && oldLayer && (theLayer != oldLayer)) { theLayer->remove(theRoad); oldLayer->add(theRoad); } decDirtyLevel(oldLayer, theRoad); } void WayRemoveNodeCommand::redo() { oldLayer = theRoad->layer(); theRoad->remove(Idx); if (wasClosed && Idx == 0) { theRoad->remove(theRoad->size()-1); theRoad->add(theRoad->getNode(0)); } if (theLayer && oldLayer && (theLayer != oldLayer)) { oldLayer->remove(theRoad); theLayer->add(theRoad); } incDirtyLevel(oldLayer, theRoad); Command::redo(); } bool WayRemoveNodeCommand::buildDirtyList(DirtyList& theList) { if (isUndone) return false; if (theRoad->lastUpdated() == Feature::NotYetDownloaded) return theList.noop(theRoad); if (!theRoad->layer()) return theList.update(theRoad); if (theRoad->isUploadable() && (theNode->isUploadable() || theNode->hasOSMId())) return theList.update(theRoad); return theList.noop(theRoad); } bool WayRemoveNodeCommand::toXML(QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement("RoadRemoveTrackPointCommand"); stream.writeAttribute("xml:id", id()); stream.writeAttribute("road", theRoad->xmlId()); stream.writeAttribute("trackpoint", theNode->xmlId()); stream.writeAttribute("index", QString::number(Idx)); if (wasClosed) stream.writeAttribute("closed", "true"); if (theLayer) stream.writeAttribute("layer", theLayer->id()); if (oldLayer) stream.writeAttribute("oldlayer", oldLayer->id()); Command::toXML(stream); stream.writeEndElement(); return OK; } WayRemoveNodeCommand * WayRemoveNodeCommand::fromXML(Document * d, QXmlStreamReader& stream) { WayRemoveNodeCommand* a = new WayRemoveNodeCommand(); a->setId(stream.attributes().value("xml:id").toString()); if (stream.attributes().hasAttribute("layer")) a->theLayer = d->getLayer(stream.attributes().value("layer").toString()); else a->theLayer = d->getDirtyOrOriginLayer(); if (stream.attributes().hasAttribute("oldlayer")) a->oldLayer = d->getLayer(stream.attributes().value("oldlayer").toString()); else a->oldLayer = NULL; if (!a->theLayer) return NULL; a->wasClosed = (stream.attributes().hasAttribute("closed") && stream.attributes().value("closed") == "true"); a->theRoad = Feature::getWayOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::LineString, stream.attributes().value("road").toString().toLongLong())); a->theNode = Feature::getNodeOrCreatePlaceHolder(d, a->theLayer, IFeature::FId(IFeature::Point, stream.attributes().value("trackpoint").toString().toLongLong())); a->Idx = stream.attributes().value("index").toString().toUInt(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Command") { Command::fromXML(d, stream, a); } stream.readNext(); } return a; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Commands/WayCommands.h��������������������������������������������������������0000664�0000000�0000000�00000002734�11770671653�0020716�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_WAYOMMANDS_H_ #define MERKAARTOR_WAYOMMANDS_H_ #include "Command.h" class Way; class Node; class Layer; class WayAddNodeCommand : public Command { public: WayAddNodeCommand(Way* R = NULL); WayAddNodeCommand(Way* R, Node* W, Layer* aLayer=NULL); WayAddNodeCommand(Way* R, Node* W, int Position, Layer* aLayer=NULL); ~WayAddNodeCommand(void); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static WayAddNodeCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; Way* theRoad; Node* theTrackPoint; int Position; }; class WayRemoveNodeCommand : public Command { public: WayRemoveNodeCommand(Way* R = NULL); WayRemoveNodeCommand(Way* R, Node* W, Layer* aLayer=NULL); WayRemoveNodeCommand(Way* R, int anIdx, Layer* aLayer=NULL); ~WayRemoveNodeCommand(void); virtual void undo(); virtual void redo(); virtual bool buildDirtyList(DirtyList& theList); virtual bool toXML(QXmlStreamWriter& stream) const; static WayRemoveNodeCommand* fromXML(Document* d, QXmlStreamReader& stream); private: Layer* theLayer; Layer* oldLayer; int Idx; bool wasClosed; Way* theRoad; Node* theNode; }; #endif ������������������������������������merkaartor-0.18.1/src/Config.pri��������������������������������������������������������������������0000664�0000000�0000000�00000000776�11770671653�0016507�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# see http://merkaartor.be/wiki/merkaartor/Compiling isEmpty(VERSION): VERSION="0.18" contains(RELEASE,1) { DEFINES += RELEASE SVNREV="release" } else { isEmpty(SVNREV) { SVNREV = $$system(git describe --tags) REVISION="-git" } else { REVISION= } } win32|macx { system(echo $${LITERAL_HASH}define SVNREV $${SVNREV} > revision.h ) } else { system('echo -n "$${LITERAL_HASH}define SVNREV $${SVNREV}" > revision.h') } QMAKE_CXXFLAGS_WARN_ON += -Wno-reorder ��merkaartor-0.18.1/src/Custom.pri��������������������������������������������������������������������0000664�0000000�0000000�00000000000�11770671653�0016530�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015617�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/DirtyDock.cpp�����������������������������������������������������������0000664�0000000�0000000�00000012740�11770671653�0020223�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: DirtyDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "DirtyDock.h" #include "PropertiesDock.h" #include "MainWindow.h" #include "MapView.h" #include "MerkaartorPreferences.h" #include "Document.h" #include "Layer.h" #include "Feature.h" #include "Command.h" #include "DirtyList.h" #include <QMenu> DirtyDock::DirtyDock(MainWindow* aParent) : MDockAncestor(aParent), Main(aParent) { setMinimumSize(220,100); setObjectName("dirtyDock"); ui.setupUi(getWidget()); centerAction = new QAction(NULL, this); connect(centerAction, SIGNAL(triggered()), this, SLOT(on_centerAction_triggered())); centerZoomAction = new QAction(NULL, this); connect(centerZoomAction, SIGNAL(triggered()), this, SLOT(on_centerZoomAction_triggered())); connect(ui.ChangesList, SIGNAL(itemSelectionChanged()), this, SLOT(on_ChangesList_itemSelectionChanged())); connect(ui.ChangesList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(on_ChangesList_itemDoubleClicked(QListWidgetItem*))); connect(ui.ChangesList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_ChangesList_customContextMenuRequested(const QPoint &))); if (M_PREFS->getAutoHistoryCleanup()) ui.pbCleanupHistory->setVisible(false); else connect(ui.pbCleanupHistory, SIGNAL(clicked()), this, SLOT(on_pbCleanupHistory_clicked())); retranslateUi(); } DirtyDock::~DirtyDock() { } void DirtyDock::updateList() { ui.ChangesList->clear(); if (!Main->document()) return; int dirtyObjects = Main->document()->getDirtySize(); switch (dirtyObjects) { case 0: ui.label->setText(tr("There is <b>no</b> dirty object")); break; case 1: ui.label->setText(tr("There is <b>one</b> dirty object")); break; default: ui.label->setText(tr("There are <b>%n</b> dirty objects", "", dirtyObjects)); break; } Main->document()->history().buildUndoList(ui.ChangesList); if (!M_PREFS->getAutoHistoryCleanup()) { if (!dirtyObjects) ui.pbCleanupHistory->setEnabled(true); else ui.pbCleanupHistory->setEnabled(false); } } void DirtyDock::on_ChangesList_itemSelectionChanged() { Feature* F; if (ui.ChangesList->selectedItems().count() != 0) { if (ui.ChangesList->selectedItems().count() == 1) { F = Main->document()->getFeature(ui.ChangesList->selectedItems()[0]->data(Qt::UserRole).value<IFeature::FId>()); if (F) Main->properties()->setSelection(F); } else { Selection.clear(); for (int i=0; i < ui.ChangesList->selectedItems().count(); ++i) { F = Main->document()->getFeature(ui.ChangesList->selectedItems()[i]->data(Qt::UserRole).value<IFeature::FId>()); if (F) Selection.push_back(F); } Main->properties()->setMultiSelection(Selection); } } Main->view()->update(); } void DirtyDock::on_ChangesList_itemDoubleClicked(QListWidgetItem* /* item */) { on_centerAction_triggered(); } void DirtyDock::on_ChangesList_customContextMenuRequested(const QPoint & pos) { QListWidgetItem *it = ui.ChangesList->itemAt(pos); if (it) { QMenu menu(ui.ChangesList); menu.addAction(centerAction); menu.addAction(centerZoomAction); menu.exec(ui.ChangesList->mapToGlobal(pos)); } } void DirtyDock::on_centerAction_triggered() { Feature* F; CoordBox cb; Main->setUpdatesEnabled(false); for (int i=0; i < ui.ChangesList->selectedItems().count(); ++i) { F = Main->document()->getFeature(ui.ChangesList->selectedItems()[i]->data(Qt::UserRole).value<IFeature::FId>()); if (F) { if (cb.isNull()) cb = F->boundingBox(); else cb.merge(F->boundingBox()); } } if (!cb.isNull()) { Coord c = cb.center(); Main->view()->setCenter(c, Main->view()->rect()); Main->invalidateView(); } Main->setUpdatesEnabled(true); } void DirtyDock::on_centerZoomAction_triggered() { Feature* F; CoordBox cb; Main->setUpdatesEnabled(false); for (int i=0; i < ui.ChangesList->selectedItems().count(); ++i) { F = Main->document()->getFeature(ui.ChangesList->selectedItems()[i]->data(Qt::UserRole).value<IFeature::FId>()); if (F) { if (cb.isNull()) cb = F->boundingBox(); else cb.merge(F->boundingBox()); } } if (!cb.isNull()) { CoordBox mini(cb.center()-COORD_ENLARGE, cb.center()+COORD_ENLARGE); cb.merge(mini); cb = cb.zoomed(1.1); Main->view()->setViewport(cb, Main->view()->rect()); Main->invalidateView(); } Main->setUpdatesEnabled(true); } void DirtyDock::on_pbCleanupHistory_clicked() { Main->document()->history().cleanup(); Main->document()->history().updateActions(); updateList(); } void DirtyDock::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void DirtyDock::retranslateUi() { ui.retranslateUi(getWidget()); setWindowTitle(tr("Undo")); centerAction->setText(tr("Center map")); centerZoomAction->setText(tr("Center && Zoom map")); updateList(); } ��������������������������������merkaartor-0.18.1/src/Docks/DirtyDock.h�������������������������������������������������������������0000664�0000000�0000000�00000002011�11770671653�0017656�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: DirtyDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef DIRTYDOCK_H #define DIRTYDOCK_H #include "MDockAncestor.h" #include <QTextBrowser> #include "ui_DirtyDock.h" #include <QList> class MainWindow; class Feature; /** @author cbro <cbro@semperpax.com> */ class DirtyDock : public MDockAncestor { Q_OBJECT public: DirtyDock(MainWindow* aParent); ~DirtyDock(); public slots: void updateList(); void on_ChangesList_itemSelectionChanged(); void on_ChangesList_itemDoubleClicked(QListWidgetItem* item); void on_ChangesList_customContextMenuRequested(const QPoint & pos); void on_centerAction_triggered(); void on_centerZoomAction_triggered(); void on_pbCleanupHistory_clicked(); private: MainWindow* Main; Ui::DirtyDockWidget ui; QAction* centerAction; QAction* centerZoomAction; QList<Feature*> Selection; public: void changeEvent(QEvent*); void retranslateUi(); }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/DirtyDock.ui������������������������������������������������������������0000664�0000000�0000000�00000005301�11770671653�0020051�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>DirtyDockWidget</class> <widget class="QWidget" name="DirtyDockWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>302</width> <height>459</height> </rect> </property> <property name="windowTitle"> <string>Undo</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLabel" name="label"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></string> </property> <property name="wordWrap"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="pbCleanupHistory"> <property name="enabled"> <bool>false</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>Cleanup</string> </property> </widget> </item> </layout> </item> <item> <widget class="QListWidget" name="ChangesList"> <property name="contextMenuPolicy"> <enum>Qt::CustomContextMenu</enum> </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> </property> </widget> </item> </layout> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/Docks.pri���������������������������������������������������������������0000664�0000000�0000000�00000001044�11770671653�0017375�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Docks DEPENDPATH += $$MERKAARTOR_SRC_DIR/Docks HEADERS += MDockAncestor.h \ LayerDock.h \ PropertiesDock.h \ InfoDock.h \ StyleDock.h \ DirtyDock.h \ FeaturesDock.h SOURCES += MDockAncestor.cpp \ PropertiesDock.cpp \ InfoDock.cpp \ LayerDock.cpp \ DirtyDock.cpp \ StyleDock.cpp \ FeaturesDock.cpp FORMS += DirtyDock.ui \ StyleDock.ui \ MinimumRelationProperties.ui \ MinimumTrackPointProperties.ui \ MinimumRoadProperties.ui \ FeaturesDock.ui ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/FeaturesDock.cpp��������������������������������������������������������0000664�0000000�0000000�00000030522�11770671653�0020704�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: FeaturesDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "FeaturesDock.h" #include "MainWindow.h" #include "MapView.h" #include "Document.h" #include "ImageMapLayer.h" #include "PropertiesDock.h" #include "Global.h" #include "Features.h" #include "SelectionDialog.h" #include "TagSelector.h" #include <QAction> #include <QTimer> #include <QMenu> #define MAX_FEATS 100 FeaturesDock::FeaturesDock(MainWindow* aParent) : MDockAncestor(aParent), Main(aParent), curFeatType(IFeature::OsmRelation), findMode(false) { // setMinimumSize(220,100); setObjectName("FeaturesDock"); ui.setupUi(getWidget()); #ifdef Q_OS_MAC ui.cbWithin->setMinimumWidth(30); #endif ui.cbWithin->setChecked(M_PREFS->getFeaturesWithin()); ui.FeaturesList->sortItems(); connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(on_Viewport_changed())); deleteAction = new QAction(NULL, this); // deleteAction->setShortcut(QKeySequence::Delete); ui.FeaturesList->addAction(deleteAction); connect(deleteAction, SIGNAL(triggered()), SLOT(on_FeaturesList_delete())); connect(ui.FeaturesList, SIGNAL(itemSelectionChanged()), this, SLOT(on_FeaturesList_itemSelectionChanged())); connect(ui.FeaturesList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(on_FeaturesList_itemDoubleClicked(QListWidgetItem*))); connect(ui.FeaturesList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_FeaturesList_customContextMenuRequested(const QPoint &))); connect(ui.cbWithin, SIGNAL(stateChanged(int)), this, SLOT(on_rbWithin_stateChanged(int))); connect(ui.btFind, SIGNAL(clicked(bool)), SLOT(on_btFind_clicked(bool))); connect(ui.btReset, SIGNAL(clicked(bool)), SLOT(on_btReset_clicked(bool))); centerAction = new QAction(NULL, this); connect(centerAction, SIGNAL(triggered()), this, SLOT(on_centerAction_triggered())); centerZoomAction = new QAction(NULL, this); connect(centerZoomAction, SIGNAL(triggered()), this, SLOT(on_centerZoomAction_triggered())); downloadAction = new QAction(NULL, this); connect(downloadAction, SIGNAL(triggered()), this, SLOT(on_downloadAction_triggered())); addSelectAction = new QAction(NULL, this); connect(addSelectAction, SIGNAL(triggered()), this, SLOT(on_addSelectAction_triggered())); int t; t = ui.tabBar->addTab(NULL); ui.tabBar->setTabData(t, IFeature::OsmRelation); t = ui.tabBar->addTab(NULL); ui.tabBar->setTabData(t, IFeature::LineString); t = ui.tabBar->addTab(NULL); ui.tabBar->setTabData(t, IFeature::Point); t = ui.tabBar->addTab(NULL); ui.tabBar->setTabData(t, IFeature::All); ui.tabBar->setElideMode(Qt::ElideRight); ui.tabBar->setUsesScrollButtons(true); retranslateTabBar(); connect(ui.tabBar, SIGNAL(currentChanged (int)), this, SLOT(tabChanged(int))); //connect(ui.tabBar, SIGNAL(customContextMenuRequested (const QPoint&)), this, SLOT(tabContextMenuRequested(const QPoint&))); retranslateUi(); } FeaturesDock::~FeaturesDock() { } void FeaturesDock::on_FeaturesList_itemSelectionChanged() { Highlighted.clear(); for (int i=0; i<ui.FeaturesList->selectedItems().count(); ++i) { QListWidgetItem* item = ui.FeaturesList->selectedItems()[i]; Feature * F = item->data(Qt::UserRole).value<Feature*>(); Highlighted.push_back(F); } Main->view()->update(); } void FeaturesDock::on_FeaturesList_itemDoubleClicked(QListWidgetItem* item) { Feature * F = item->data(Qt::UserRole).value<Feature*>(); Main->properties()->setSelection(F); Main->view()->update(); } void FeaturesDock::on_FeaturesList_customContextMenuRequested(const QPoint & pos) { QListWidgetItem *it = ui.FeaturesList->itemAt(pos); if (!it) return; QMenu menu(ui.FeaturesList); menu.addAction(addSelectAction); menu.addAction(deleteAction); menu.addSeparator(); menu.addAction(centerAction); menu.addAction(centerZoomAction); menu.addSeparator(); downloadAction->setEnabled(false); Feature* F; for (int i=0; i < ui.FeaturesList->selectedItems().count(); ++i) { F = ui.FeaturesList->selectedItems()[i]->data(Qt::UserRole).value<Feature*>(); if (F->notEverythingDownloaded()) { downloadAction->setEnabled(true); break; } } menu.addAction(downloadAction); menu.exec(ui.FeaturesList->mapToGlobal(pos)); } void FeaturesDock::on_FeaturesList_delete() { if (!ui.FeaturesList->selectedItems().count()) return; Feature* F; Main->view()->blockSignals(true); Highlighted.clear(); Main->properties()->setSelection(0); for (int i=0; i < ui.FeaturesList->selectedItems().count(); ++i) { F = ui.FeaturesList->selectedItems()[i]->data(Qt::UserRole).value<Feature*>(); if (F) { Main->properties()->addSelection(F); } } Main->view()->blockSignals(false); #ifndef _MOBILE Main->on_editRemoveAction_triggered(); #endif } void FeaturesDock::on_rbWithin_stateChanged ( int state ) { M_PREFS->setFeaturesWithin((state == Qt::Checked)); updateList(); } void FeaturesDock::on_centerAction_triggered() { Feature* F; CoordBox cb; Main->view()->blockSignals(true); for (int i=0; i < ui.FeaturesList->selectedItems().count(); ++i) { F = ui.FeaturesList->selectedItems()[i]->data(Qt::UserRole).value<Feature*>(); if (F) { if (cb.isNull()) cb = F->boundingBox(); else cb.merge(F->boundingBox()); } } if (!cb.isNull()) { Coord c = cb.center(); Main->view()->setCenter(c, Main->view()->rect()); Main->invalidateView(); } Main->view()->blockSignals(false); QTimer::singleShot(10, this, SLOT(on_Viewport_changed())); } void FeaturesDock::on_centerZoomAction_triggered() { Feature* F; CoordBox cb; Main->view()->blockSignals(true); for (int i=0; i < ui.FeaturesList->selectedItems().count(); ++i) { F = ui.FeaturesList->selectedItems()[i]->data(Qt::UserRole).value<Feature*>(); if (F) { if (cb.isNull()) cb = F->boundingBox(); else cb.merge(F->boundingBox()); } } if (!cb.isNull()) { CoordBox mini(cb.center()-COORD_ENLARGE, cb.center()+COORD_ENLARGE); cb.merge(mini); cb = cb.zoomed(1.1); Main->view()->setViewport(cb, Main->view()->rect()); Main->invalidateView(); } Main->view()->blockSignals(false); QTimer::singleShot(10, this, SLOT(on_Viewport_changed())); } void FeaturesDock::on_downloadAction_triggered() { #ifndef _MOBILE Feature* F; QList<Feature*> toResolve; for (int i=0; i < ui.FeaturesList->selectedItems().count(); ++i) { F = ui.FeaturesList->selectedItems()[i]->data(Qt::UserRole).value<Feature*>(); if (F->notEverythingDownloaded()) { toResolve.push_back(F); } } Main->downloadFeatures(toResolve); #endif } void FeaturesDock::on_addSelectAction_triggered() { Feature* F; Main->view()->blockSignals(true); for (int i=0; i < ui.FeaturesList->selectedItems().count(); ++i) { F = ui.FeaturesList->selectedItems()[i]->data(Qt::UserRole).value<Feature*>(); if (F) { Main->properties()->addSelection(F); } } Main->view()->blockSignals(false); } void FeaturesDock::on_btFind_clicked(bool) { SelectionDialog* dlg = new SelectionDialog(Main); if (!dlg->exec()) return; TagSelector* tsel = TagSelector::parse(dlg->edTagQuery->text()); if (!tsel) return; Found.clear(); int added = 0; for (VisibleFeatureIterator i(Main->document()); !i.isEnd() && (!dlg->sbMaxResult->value() || added < dlg->sbMaxResult->value()); ++i) { if (tsel->matches(i.get(), Main->view()->pixelPerM())) { Found << i.get(); } } findMode = true; ui.tabBar->blockSignals(true); ui.tabBar->setCurrentIndex(3); ui.tabBar->blockSignals(false); tabChanged(3); } void FeaturesDock::on_btReset_clicked(bool) { findMode = false; updateList(); } void FeaturesDock::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void FeaturesDock::tabChanged(int idx) { curFeatType = (IFeature::FeatureType)ui.tabBar->tabData(idx).toInt(); ui.FeaturesList->clear(); Highlighted.clear(); updateList(); } void FeaturesDock::on_Viewport_changed() { theViewport = Main->view()->viewport(); updateList(); } void FeaturesDock::addItem(MapFeaturePtr F) { if (ui.FeaturesList->count() > MAX_FEATS) return; if (Highlighted.contains(F)) return; if (curFeatType == IFeature::OsmRelation || curFeatType == Feature::All) { if (Relation* L = CAST_RELATION(F)) { QListWidgetItem* anItem = new QListWidgetItem(L->description(), ui.FeaturesList); anItem->setData(Qt::UserRole, QVariant::fromValue(F)); } } if (curFeatType == IFeature::LineString || curFeatType == IFeature::Polygon || curFeatType == Feature::All) { if (Way* R = CAST_WAY(F)) { QListWidgetItem* anItem = new QListWidgetItem(R->description(), ui.FeaturesList); anItem->setData(Qt::UserRole, QVariant::fromValue(F)); } } if (curFeatType == IFeature::Point || curFeatType == Feature::All) { if (Node* N = CAST_NODE(F)) { QListWidgetItem* anItem = new QListWidgetItem(N->description(), ui.FeaturesList); anItem->setData(Qt::UserRole, QVariant::fromValue(F)); } } } void FeaturesDock::invalidate() { ui.FeaturesList->clear(); Highlighted.clear(); Found.clear(); } void FeaturesDock::clearItems() { for(int i=ui.FeaturesList->count()-1; i>=0; --i) { QListWidgetItem* item = ui.FeaturesList->item(i); if (item->isSelected()) { Feature * F = item->data(Qt::UserRole).value<Feature*>(); if (F->isDeleted()) { item->setSelected(false); Highlighted.removeOne(F); } } if (!item->isSelected()) delete item; } } void FeaturesDock::updateList() { setUpdatesEnabled(false); ui.FeaturesList->blockSignals(true); clearItems(); if (!isVisible() || !Main->document()) return; if (findMode) { foreach (MapFeaturePtr F, Found) { if (ui.cbWithin->isChecked()) { if (Main->view()->viewport().contains(F->boundingBox())) addItem(F); } else addItem(F); } } else { for (int j=0; j<Main->document()->layerSize(); ++j) { if (!Main->document()->getLayer(j)->size()) continue; QList < Feature* > ret = g_backend.indexFind(Main->document()->getLayer(j), theViewport); foreach (Feature* F, ret) { if (F->isHidden()) continue; if (ui.cbWithin->isChecked()) { if (Main->view()->viewport().contains(F->boundingBox())) addItem(F); } else addItem(F); } } } ui.FeaturesList->sortItems(); ui.FeaturesList->blockSignals(false); setUpdatesEnabled(true); } int FeaturesDock::highlightedSize() const { if (!isVisible()) return 0; return Highlighted.size(); } Feature* FeaturesDock::highlighted(int idx) { if (idx < Highlighted.size()) return Highlighted[idx]; return 0; } QList<Feature*> FeaturesDock::highlighted() { return Highlighted; } void FeaturesDock::retranslateUi() { ui.retranslateUi(getWidget()); setWindowTitle(tr("Features")); centerAction->setText(tr("Center map")); centerZoomAction->setText(tr("Center && Zoom map")); downloadAction->setText(tr("Download missing children")); addSelectAction->setText(tr("Add to selection")); deleteAction->setText(tr("Delete")); retranslateTabBar(); } void FeaturesDock::retranslateTabBar() { ui.tabBar->setTabText(0, tr("Relations")); ui.tabBar->setTabText(1, tr("Roads")); ui.tabBar->setTabText(2, tr("POI's")); ui.tabBar->setTabText(3, tr("All")); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/FeaturesDock.h����������������������������������������������������������0000664�0000000�0000000�00000003364�11770671653�0020355�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: FeaturesDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef FEATURESDOCK_H #define FEATURESDOCK_H #include "MDockAncestor.h" #include "Coord.h" #include "Feature.h" #include "MapTypedef.h" #include "ui_FeaturesDock.h" class MainWindow; class QAction; class FeaturesDock : public MDockAncestor { Q_OBJECT public: FeaturesDock(MainWindow* aParent); ~FeaturesDock(); void updateList(); Feature* highlighted(int idx); QList<Feature*> highlighted(); int highlightedSize() const; public slots: void on_FeaturesList_itemSelectionChanged(); void on_FeaturesList_itemDoubleClicked(QListWidgetItem* item); void on_FeaturesList_customContextMenuRequested(const QPoint & pos); void on_FeaturesList_delete(); void on_rbWithin_stateChanged ( int state ); void on_centerAction_triggered(); void on_centerZoomAction_triggered(); void on_downloadAction_triggered(); void on_addSelectAction_triggered(); void on_btFind_clicked(bool); void on_btReset_clicked(bool); void on_Viewport_changed(); void tabChanged(int idx); void invalidate(); private: QList<Feature*> Highlighted; QList<Feature*> Found; MainWindow* Main; Ui::FeaturesDockWidget ui; QAction* centerAction; QAction* centerZoomAction; QAction* downloadAction; QAction* addSelectAction; QAction* deleteAction; CoordBox theViewport; IFeature::FeatureType curFeatType; void clearItems(); void addItem(MapFeaturePtr F); bool findMode; public: void changeEvent(QEvent*); void retranslateUi(); void retranslateTabBar(); }; #endif // FEATURESDOCK_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/FeaturesDock.ui���������������������������������������������������������0000664�0000000�0000000�00000006634�11770671653�0020546�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>FeaturesDockWidget</class> <widget class="QWidget" name="FeaturesDockWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>288</width> <height>459</height> </rect> </property> <property name="windowTitle"> <string>Features</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>2</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>2</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QTabBar" name="tabBar" native="true"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>1</width> <height>0</height> </size> </property> </widget> </item> <item> <widget class="QListWidget" name="FeaturesList"> <property name="contextMenuPolicy"> <enum>Qt::CustomContextMenu</enum> </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QCheckBox" name="cbWithin"/> </item> <item> <widget class="QLabel" name="lblOnlyViewport"> <property name="text"> <string>Only features fully within the viewport</string> </property> <property name="wordWrap"> <bool>true</bool> </property> <property name="buddy"> <cstring>cbWithin</cstring> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Expanding</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="btFind"> <property name="text"> <string>Find...</string> </property> </widget> </item> <item> <widget class="QToolButton" name="btReset"> <property name="text"> <string>Reset</string> </property> </widget> </item> </layout> </item> </layout> </widget> </item> </layout> </widget> <customwidgets> <customwidget> <class>QTabBar</class> <extends>QWidget</extends> <header location="global">qtabbar.h</header> <container>1</container> </customwidget> </customwidgets> <resources/> <connections/> </ui> ����������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/GeoImage.pri������������������������������������������������������������0000664�0000000�0000000�00000000336�11770671653�0020012�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������DEFINES += GEOIMAGE # Header files HEADERS += GeoImageDock.h # Source files SOURCES += GeoImageDock.cpp LIBS += -lexiv2 FORMS += PhotoLoadErrorDialog.ui contains(ZBAR, 1) { DEFINES += USE_ZBAR LIBS += -lzbar } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/GeoImageDock.cpp��������������������������������������������������������0000664�0000000�0000000�00000114140�11770671653�0020602�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "GeoImageDock.h" #include "Node.h" #include "Layer.h" #include "DocumentCommands.h" #include "LayerWidget.h" #include "PropertiesDock.h" #include "Global.h" #ifdef USE_ZBAR #include <zbar.h> #include <zbar/QZBarImage.h> #endif #include <QtGui/QInputDialog> #include <QtGui/QMessageBox> #include <QtGui/QProgressDialog> #include <QtGui/QClipboard> #include <QtGui/QRadioButton> #include <QtGui/QTimeEdit> #include <QtGui/QDialogButtonBox> #include <QFileDialog> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include "ui_PhotoLoadErrorDialog.h" bool GeoImageDock::getWalkingPapersDetails(const QUrl& reqUrl, double &lat, double &lon, bool& positionValid) const { QNetworkAccessManager manager; QEventLoop q; QTimer tT; if (!reqUrl.host().contains("walking-papers.org")) return false; tT.setSingleShot(true); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); connect(&manager, SIGNAL(finished(QNetworkReply*)), &q, SLOT(quit())); QNetworkReply *reply = manager.get(QNetworkRequest(reqUrl)); tT.start(M_PREFS->getNetworkTimeout()); q.exec(); if(tT.isActive()) { // download complete tT.stop(); } else { QMessageBox::warning(0, tr("Network timeout"), tr("Cannot read the photo's details from the Walking Papers server."), QMessageBox::Ok); return false; } QString center = QString::fromAscii(reply->rawHeader("X-Print-Center")); QStringList sl = center.split(" "); if (!sl.size() == 3) return false; //int z = sl[2].toInt(); lat = sl[0].toDouble(); lon = sl[1].toDouble(); positionValid = true; return true; } bool GeoImageDock::askAndgetWalkingPapersDetails(double &lat, double &lon, bool& positionValid) const { bool ok; QString text = QInputDialog::getText(0, tr("Please specify Walking Papers URL"), tr("URL:"), QLineEdit::Normal, "", &ok); if (ok && !text.isEmpty()) { QUrl url(text); return getWalkingPapersDetails(url, lat, lon, positionValid); } else return false; } GeoImageDock::GeoImageDock(MainWindow *aMain) : MDockAncestor(aMain), Main(aMain) , photoLayer(0) { curImage = lastImage = -1; updateByMe = false; setWindowTitle(tr("Geo Images")); Image = new ImageView(this); setWidget(Image); setObjectName("geoImageDock"); setFocusPolicy(Qt::StrongFocus); setContextMenuPolicy(Qt::ActionsContextMenu); centerAction = new QAction(tr("Center map"), this); centerAction->setShortcut(tr("c")); remImagesAction = new QAction(tr("Remove Images"), this); toClipboardAction = new QAction(tr("Copy filename to clipboard"), this); nextImageAction = new QAction(tr("Select next image"), this); nextImageAction->setShortcut(tr("PgDown")); nextImageAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); previousImageAction = new QAction(tr("Select previous image"), this); previousImageAction->setShortcut(tr("PgUp")); previousImageAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); saveImageAction = new QAction(tr("Save geotagged image..."), this); QAction* sep = new QAction(this); sep->setSeparator(true); addAction(centerAction); addAction(nextImageAction); addAction(previousImageAction); addAction(toClipboardAction); addAction(saveImageAction); addAction(sep); addAction(remImagesAction); connect(centerAction, SIGNAL(triggered()), this, SLOT(centerMap())); connect(remImagesAction, SIGNAL(triggered()), this, SLOT(removeImages())); connect(toClipboardAction, SIGNAL(triggered()), this, SLOT(toClipboard())); connect(nextImageAction, SIGNAL(triggered()), this, SLOT(selectNext())); connect(previousImageAction, SIGNAL(triggered()), this, SLOT(selectPrevious())); connect(saveImageAction, SIGNAL(triggered()), this, SLOT(saveImage())); } GeoImageDock::~GeoImageDock(void) { delete widget(); } void GeoImageDock::clear() { usedTrackPoints.clear(); curImage = lastImage = -1; Image->setImage(""); } void GeoImageDock::setImage(Node *Pt) { if (curImage != -1) // save last imageId to start iteration there again lastImage = curImage; if (updateByMe) return; if (!Pt) { Image->setImage(""); curImage = -1; return; } int ImageId; for (ImageId = 0; ImageId < usedTrackPoints.size(); ImageId++) // search for an entry in our list if (usedTrackPoints.at(ImageId).node == Pt) break; if (ImageId == curImage) return; if (ImageId == usedTrackPoints.size()) { // haven't found it Image->setImage(""); curImage = -1; return; } Image->setImage(usedTrackPoints.at(ImageId).filename, (Pt ? true : false)); curImage = ImageId; } void GeoImageDock::setImage(int ImageId) { if (curImage != -1) // save last imageid to start iteration there again lastImage = curImage; if (ImageId < 0 || ImageId >= usedTrackPoints.size()) { // invalid ImageId Image->setImage(""); curImage = -1; return; } int lookImage = ImageId; if (usedTrackPoints.at(lookImage).node) { bool ok = false; Feature* theFeature; while (!ok) { FeatureIterator it(Main->document()); for (; !it.isEnd(); ++it) // find TrackPoint if (usedTrackPoints.at(lookImage).node == it.get()) { break; } if (it.isEnd()) usedTrackPoints.removeAt(ImageId); if (it.isEnd() || !it.get()->isVisible()) { if (usedTrackPoints.size()) { if (++lookImage >= usedTrackPoints.size()) lookImage = 0; if (lookImage == ImageId) { Image->setImage(""); curImage = -1; return; } } else break; } else { theFeature = it.get(); ok = true; } } // if (!ok) { // haven't found one // Image->setImage(""); // curImage = -1; // return; // } updateByMe = true; if (!Main->properties()->isSelected(theFeature)) { Main->properties()->setSelection(theFeature); Main->view()->invalidate(true, true, false); } updateByMe = false; } Image->setImage(usedTrackPoints.at(lookImage).filename, (usedTrackPoints.at(lookImage).node ? true : false)); curImage = lookImage; } void GeoImageDock::removeImages(void) { int i; for (i = 0; i < usedTrackPoints.size(); i++) { Node *Pt = usedTrackPoints.at(i).node; if (!Pt) { continue; } if (usedTrackPoints.at(i).inserted) { Pt->layer()->remove(Pt); g_backend.deallocFeature(Pt->layer(), Pt); } else Pt->clearTag("Picture"); } usedTrackPoints.clear(); curImage = -1; Image->setImage(""); Main->view()->invalidate(true, true, false); } void GeoImageDock::toClipboard(void) { if (curImage != -1) { QClipboard *clipboard = QApplication::clipboard(); clipboard->setText(usedTrackPoints.at(curImage).filename); } } void GeoImageDock::selectNext(void) { if (curImage == -1) // restart iteration at last selected image curImage = lastImage; if (++curImage >= usedTrackPoints.size()) curImage = 0; setImage(curImage); } void GeoImageDock::selectPrevious(void) { if (curImage == -1) // restart iteration at last selected image curImage = lastImage; if (--curImage < 0) curImage = usedTrackPoints.size() - 1; setImage(curImage); } void GeoImageDock::centerMap(void) { int index = curImage; if (index == -1) index = lastImage; if (index < 0 || index >= usedTrackPoints.size()) { // invalid ImageId return; } Feature* f = usedTrackPoints.at(index).node; if (f && !f->isNull()) { Coord c = f->boundingBox().center(); Main->view()->setCenter(c, Main->view()->rect()); Main->invalidateView(); } } void GeoImageDock::addUsedTrackpoint(NodeData data) { for(int i=0; i<usedTrackPoints.size(); ++i) { if (usedTrackPoints[i].filename == data.filename) { usedTrackPoints[i] = data; return; } } usedTrackPoints << data; } void GeoImageDock::loadImage(QString file, Coord pos) { Document *theDocument = Main->document(); //MapView *theView = Main->view(); Layer *theLayer; if (photoLayer == NULL) { photoLayer = new TrackLayer(tr("Photo layer")); photoLayer->setReadonly(false); theDocument->add(photoLayer); } { // retrieve the target layer from the user QStringList layers; QList<int> layerId; int i; Layer *layer; Layer *singleLayer = NULL; Layer *singleTrackLayer = NULL; int trackLayersCount = 0; for (i=0;i<theDocument->layerSize();i++) { layer = theDocument->getLayer(i); if (!layer->isEnabled()) continue; if (layer->classType() == Layer::TrackLayerType) { trackLayersCount++; if (!singleTrackLayer) singleTrackLayer = layer; } if (layer->classType() == Layer::TrackLayerType || layer->classType() == Layer::DrawingLayerType) { if (!singleLayer) singleLayer = layer; layers.append(theDocument->getLayer(i)->name()); layerId.append(i); } } // Select single layer if there is only one if (layers.size() == 1) { theLayer = singleLayer; } // Select single track layer if there is only one else if (trackLayersCount == 1) { theLayer = singleTrackLayer; } // Now ask the user what layer to add the photos to else { bool ok; QString name = QInputDialog::getItem(NULL, tr("Load geotagged Images"), tr("Select the layer to which the images belong:"), layers, 0, false, &ok); if (ok && !name.isEmpty()) theLayer = theDocument->getLayer(layerId.at(layers.indexOf(name))); else return; } if (theLayer != photoLayer && !photoLayer->size()) { theDocument->remove(photoLayer); SAFE_DELETE(photoLayer); } } if (theLayer->isReadonly()) { // nodes from readonly layers can not be selected and therefore associated images can not be displayed if (QMessageBox::question(this, tr("Layer is read-only"), tr("The used layer is not writeable. Should it be made writeable?\nIf not, you can't load images that belong to it."), QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Yes) == QMessageBox::Yes) theLayer->getWidget()->setLayerReadonly(false); // this makes/updates both the widget and the layer with readonly = false else return; } Node *Pt = 0; int i = 0; for (; i<theLayer->size(); ++i) // use existing TrackPoint if there is one in small distance if ((Pt = CAST_NODE(theLayer->get(i))) && Pt->position().distanceFrom(pos) <= .002) break; else Pt = 0; PhotoNode* phNode; if (!Pt) { phNode = g_backend.allocPhotoNode(theLayer, pos); theLayer->add(Pt); g_backend.sync(Pt); } else { if (CAST_TRACKNODE(Pt)) phNode = g_backend.allocPhotoNode(theLayer, *CAST_TRACKNODE(Pt)); else phNode = g_backend.allocPhotoNode(theLayer, *Pt); theLayer->add(phNode); for (int i=0; i<Pt->sizeParents(); ++i) { Feature *P = CAST_FEATURE(Pt->getParent(i)); int idx = P->find(Pt); if (Way* W = CAST_WAY(P)) { W->add(phNode, idx); } else if (Relation* R = CAST_RELATION(P)) { R->add(R->getRole(idx), phNode, idx); } else if (TrackSegment* S = CAST_SEGMENT(P)) { S->add(phNode, idx); } P->remove(idx+1); g_backend.deallocFeature(theLayer, Pt); } } QDateTime time = QFileInfo(file).created(); //Pt->setTag("_waypoint_", "true"); phNode->setTag("_picture_", "GeoTagged"); phNode->setPhoto(QPixmap(file)); addUsedTrackpoint(NodeData(phNode, file, time, i == theLayer->size())); } void GeoImageDock::loadImages(QStringList fileNames) { QString file; QDateTime time; int offset = -1, noMatchQuestion = 0; Document *theDocument = Main->document(); MapView *theView = Main->view(); Exiv2::Image::AutoPtr image; Exiv2::ExifData exifData; bool positionValid = FALSE; Layer *theLayer; if (photoLayer == NULL) { photoLayer = new TrackLayer(tr("Photo layer")); photoLayer->setReadonly(false); theDocument->add(photoLayer); } { // retrieve the target layer from the user QStringList layers; QList<int> layerId; int i; Layer *layer; Layer *singleLayer = NULL; Layer *singleTrackLayer = NULL; int trackLayersCount = 0; for (i=0;i<theDocument->layerSize();i++) { layer = theDocument->getLayer(i); if (!layer->isEnabled()) continue; if (layer->classType() == Layer::TrackLayerType) { trackLayersCount++; if (!singleTrackLayer) singleTrackLayer = layer; } if (layer->classType() == Layer::TrackLayerType || layer->classType() == Layer::DrawingLayerType) { if (!singleLayer) singleLayer = layer; layers.append(theDocument->getLayer(i)->name()); layerId.append(i); } } // Select single layer if there is only one if (layers.size() == 1) { theLayer = singleLayer; } // Select single track layer if there is only one else if (trackLayersCount == 1) { theLayer = singleTrackLayer; } // Now ask the user what layer to add the photos to else { bool ok; QString name = QInputDialog::getItem(NULL, tr("Load geotagged Images"), tr("Select the layer to which the images belong:"), layers, 0, false, &ok); if (ok && !name.isEmpty()) theLayer = theDocument->getLayer(layerId.at(layers.indexOf(name))); else return; } if (theLayer != photoLayer && !photoLayer->size()) { theDocument->remove(photoLayer); SAFE_DELETE(photoLayer); } } if (theLayer->isReadonly()) { // nodes from readonly layers can not be selected and therefore associated images can not be displayed if (QMessageBox::question(this, tr("Layer is read-only"), tr("The used layer is not writeable. Should it be made writeable?\nIf not, you can't load images that belong to it."), QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Yes) == QMessageBox::Yes) theLayer->getWidget()->setLayerReadonly(false); // this makes/updates both the widget and the layer with readonly = false else return; } QProgressDialog progress(tr("Loading Images ..."), tr("Abort loading"), 0, fileNames.size()); progress.setWindowFlags(progress.windowFlags() & ~Qt::WindowContextHelpButtonHint); progress.setWindowFlags(progress.windowFlags() | Qt::MSWindowsFixedSizeDialogHint); progress.setWindowModality(Qt::WindowModal); progress.show(); int photoDlgRes = -1; foreach(file, fileNames) { progress.setValue(fileNames.indexOf(file)); double lat = 0.0, lon = 0.0; if (!QFile::exists(file)) { WARNING(tr("No such file"), tr("Can't find image \"%1\".").arg(file)); continue; } try { image = Exiv2::ImageFactory::open(file.toStdString()); } catch (Exiv2::Error error) WARNING(tr("Exiv2"), tr("Error while opening \"%2\":\n%1").arg(error.what()).arg(file)); if (image.get() == 0) WARNING(tr("Exiv2"), tr("Error while loading EXIF-data from \"%1\".").arg(file)); image->readMetadata(); exifData = image->exifData(); time = QDateTime(); if (!exifData.empty()) { Exiv2::Exifdatum &latV = exifData["Exif.GPSInfo.GPSLatitude"]; Exiv2::Exifdatum &lonV = exifData["Exif.GPSInfo.GPSLongitude"]; positionValid = latV.count()==3 && lonV.count()==3; if (positionValid) { lat = latV.toFloat(0) + latV.toFloat(1) / 60.0 + latV.toFloat(2) / 3600.0; lon = lonV.toFloat(0) + lonV.toFloat(1) / 60.0 + lonV.toFloat(2) / 3600.0; if (exifData["Exif.GPSInfo.GPSLatitudeRef"].toString() == "S") lat *= -1.0; if (exifData["Exif.GPSInfo.GPSLongitudeRef"].toString() == "W") lon *= -1.0; } QString timeStamp = QString::fromStdString(exifData["Exif.Image.DateTime"].toString()); if (timeStamp.isEmpty()) timeStamp = QString::fromStdString(exifData["Exif.Photo.DateTimeOriginal"].toString()); if (!timeStamp.isEmpty()) time = QDateTime::fromString(timeStamp, "yyyy:MM:dd hh:mm:ss"); } // if (exifData.empty() || (!positionValid && time.isNull()) ) { // // this question is asked when the file timestamp is used to find out to which node the image belongs // QUESTION(tr("No EXIF"), tr("No EXIF header found in image \"%1\".\nDo you want to revert to improper file timestamp?").arg(file), timeQuestion); // time = QFileInfo(file).created(); // } if (time.isNull()) // if time is still null, we use the file date as reference for image sorting (and not for finding out to which node the image belongs) // so we don't have to ask a question here time = QFileInfo(file).created(); int res = photoDlgRes; if (!positionValid && res == -1) { QDialog* dlg = new QDialog; Ui::PhotoLoadErrorDialog* ui = new Ui::PhotoLoadErrorDialog; ui->setupUi(dlg); ui->photo->setPixmap(QPixmap(file).scaledToWidth(320)); if (M_PREFS->getOfflineMode()) ui->pbBarcode->setVisible(false); dlg->exec(); if (ui->pbIgnore->isChecked()) res = 0; else if (ui->pbLoad->isChecked()) res = 1; else if (ui->pbMatch->isChecked()) res = 2; else if (ui->pbBarcode->isChecked()) res = 3; if (ui->cbRemember->isChecked()) photoDlgRes = res; } if (res == 3) { // Barcode QImage img(file); #ifdef USE_ZBAR zbar::QZBarImage image(img); // create a reader zbar::ImageScanner scanner; // configure the reader scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1); // scan the image for barcodes scanner.recycle_image(image); zbar::Image tmp = image.convert(*(long*)"Y800"); int n = scanner.scan(tmp); image.set_symbols(tmp.get_symbols()); if (n <= 0) { if (!askAndgetWalkingPapersDetails(lat, lon, positionValid)) continue; } else { QUrl url; // extract results for(zbar::Image::SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol) { // do something useful with results qDebug() << "decoded " << QString::fromStdString(symbol->get_type_name()) << " symbol \"" << QString::fromStdString(symbol->get_data()) << '"'; qDebug() << "x;y: " << symbol->get_location_x(0) << ", " << symbol->get_location_y(0); url = QUrl(QString::fromStdString(symbol->get_data())); if (url.host().contains("walking-papers.org")) { int x = symbol->get_location_x(0); int y = symbol->get_location_y(0); QPoint mid = QPoint(img.width()/2, img.height()/2); if (x < mid.x() || y < mid.y()) { if (QMessageBox::warning(this, "Wrong image orientation", "Image appear to be wrognly oriented.\nDo you want to rotate it?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) { QMatrix mat; if (x < mid.x() && y < mid.y()) mat.rotate(180); else if (x > mid.x() && y < mid.y()) mat.rotate(90); else if (x < mid.x() && y > mid.y()) mat.rotate(-90); img = img.transformed(mat); img.save(file); } } getWalkingPapersDetails(url, lat, lon, positionValid); } else { if (!askAndgetWalkingPapersDetails(lat, lon, positionValid)) continue; } } } // clean up image.set_data(NULL, 0); #else if (!askAndgetWalkingPapersDetails(lat, lon, positionValid)) continue; #endif } if (positionValid) { Coord newPos(lon, lat); Node *Pt = 0; int i = 0; for (; i<theLayer->size(); ++i) { // use existing TrackPoint if there is one in small distance if ((Pt = CAST_NODE(theLayer->get(i))) && Pt->position().distanceFrom(newPos) <= .002) break; else Pt = 0; } PhotoNode* phNode; if (!Pt) { phNode = g_backend.allocPhotoNode(theLayer, newPos); theLayer->add(phNode); g_backend.sync(phNode); } else { if (CAST_TRACKNODE(Pt)) phNode = g_backend.allocPhotoNode(theLayer, *CAST_TRACKNODE(Pt)); else phNode = g_backend.allocPhotoNode(theLayer, *Pt); theLayer->add(phNode); for (int i=0; i<Pt->sizeParents(); ++i) { Feature *P = CAST_FEATURE(Pt->getParent(i)); int idx = P->find(Pt); if (Way* W = CAST_WAY(P)) { W->add(phNode, idx); } else if (Relation* R = CAST_RELATION(P)) { R->add(R->getRole(idx), phNode, idx); } else if (TrackSegment* S = CAST_SEGMENT(P)) { S->add(phNode, idx); } P->remove(idx+1); g_backend.deallocFeature(theLayer, Pt); } } //Pt->setTag("_waypoint_", "true"); phNode->setTag("_picture_", "GeoTagged"); phNode->setPhoto(QPixmap(file)); addUsedTrackpoint(NodeData(phNode, file, time, i == theLayer->size())); } else if (!time.isNull() && res == 2) { if (offset == -1) { // ask the user to specify an offset for the images QDialog dialog(this); dialog.setWindowTitle(tr("Specify offset")); QLabel position(tr("Position images more to the:"), &dialog); QRadioButton positive(tr("end of the track"), &dialog); QRadioButton negative(tr("beginning of the track"), &dialog); QTimeEdit timeEdit(&dialog); QDialogButtonBox buttons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &dialog); timeEdit.setDisplayFormat(tr("hh:mm:ss")); connect(&buttons, SIGNAL(accepted()), &dialog, SLOT(accept())); connect(&buttons, SIGNAL(rejected()), &dialog, SLOT(reject())); QVBoxLayout layout(&dialog); // very important to first declare the QVBoxLayout. QHBoxLayout radioLayout; // otherwise there would be a segmentation fault when return; QHBoxLayout timeLayout; radioLayout.addWidget(&positive); radioLayout.addWidget(&negative); timeLayout.addStretch(); timeLayout.addWidget(&timeEdit); // center and make as small as possible timeLayout.addStretch(); layout.addWidget(&position); layout.addLayout(&radioLayout); layout.addLayout(&timeLayout); layout.addWidget(&buttons); dialog.setLayout(&layout); if (dialog.exec()) { // we have to change the sign here because secsTo returns negative value if (positive.isChecked()) offset = - timeEdit.time().secsTo(QTime(0, 0, 0)); else if (negative.isChecked()) offset = timeEdit.time().secsTo(QTime(0, 0, 0)); else offset = 0; } else { theView->invalidate(true, true, false); if (photoLayer && !photoLayer->size()) { theDocument->remove(photoLayer); SAFE_DELETE(photoLayer); } return; } } time = time.addSecs(offset); Feature *feature = NULL; TrackNode *Pt, *bestPt = NULL; int a, secondsTo = INT_MAX; int u; for (u=0; u<theLayer->size(); u++) { feature = theLayer->get(u); if ((Pt = dynamic_cast<TrackNode*>(feature))) { a = time.secsTo(Pt->time().toLocalTime()); if (abs(a) < abs(secondsTo)) { secondsTo = a; bestPt = Pt; } } } if (!bestPt) WARNING(tr("No TrackPoints"), tr("No TrackPoints found for image \"%1\"")); if (abs(secondsTo) >= 15) { QTime difference = QTime().addSecs(abs(secondsTo)); QString display; if (difference.hour() == 0) if (difference.minute() == 0) display = difference.toString(tr("ss 'seconds'")); else display = difference.toString(tr("mm 'minutes and' ss 'seconds'")); else display = difference.toString(tr("hh 'hours,' mm 'minutes and' ss 'seconds'")); QUESTION(tr("Wrong image?"), secondsTo > 0 ? tr("Image \"%1\" was taken %2 before the next trackpoint was recorded.\nDo you still want to use it?").arg(file).arg(display) : tr("Image \"%1\" was taken %2 after the last trackpoint was recorded.\nDo you still want to use it?").arg(file).arg(display), noMatchQuestion); } addUsedTrackpoint(NodeData(bestPt, file, time, false)); //bestPt->setTag("_waypoint_", "true"); bestPt->setTag("_picture_", "GeoTagged"); time = QDateTime(); // empty time to be null for the next image } else if (res == 1) { Coord newPos; addUsedTrackpoint(NodeData(0, file, time, true)); } if (progress.wasCanceled()) { theView->invalidate(true, true, false); if (photoLayer && !photoLayer->size()) { theDocument->remove(photoLayer); SAFE_DELETE(photoLayer); } return; } qApp->processEvents(); } progress.setValue(fileNames.size()); qSort(usedTrackPoints); // sort them chronological curImage = -1; // the sorting invalidates curImage if (photoLayer && !photoLayer->size()) { theDocument->remove(photoLayer); SAFE_DELETE(photoLayer); } theView->invalidate(true, true, false); } void GeoImageDock::saveImage() { int index = curImage; if (index == -1) index = lastImage; if (index < 0 || index >= usedTrackPoints.size()) { // invalid ImageId return; } Node* n = usedTrackPoints.at(index).node; if (!n) return; QFileInfo fi(usedTrackPoints.at(index).filename); QString fn = fi.absoluteFilePath() + "/" + fi.completeBaseName() + ".jpg"; QFileDialog dlg(0, tr("Specify output filename"), fn, tr("JPEG Images (*.jpg)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("jpg"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fn = dlg.selectedFiles()[0]; } // fn = QFileDialog::getSaveFileName(0, "Specify output filename", fn, tr("JPEG Images (*.jpg)")); qDebug() << fn; if (!fn.isEmpty()) { Exiv2::Image::AutoPtr imageIn, imageOut; Exiv2::ExifData exifData; try { imageIn = Exiv2::ImageFactory::open(usedTrackPoints.at(index).filename.toStdString()); imageIn->readMetadata(); exifData = imageIn->exifData(); } catch (Exiv2::Error error) {} QPixmap px(usedTrackPoints.at(index).filename); px.save(fn); try { imageOut = Exiv2::ImageFactory::open(fn.toStdString()); imageOut->setExifData(exifData); imageOut->writeMetadata(); } catch (Exiv2::Error error) {} addGeoDataToImage(n->position(), fn); } } Coord GeoImageDock::getGeoDataFromImage(const QString & file) { Coord pos; double lat = 0.0, lon = 0.0; Exiv2::Image::AutoPtr image; Exiv2::ExifData exifData; bool positionValid = FALSE; if (!QFile::exists(file)) { return pos; } try { image = Exiv2::ImageFactory::open(file.toStdString()); } catch (Exiv2::Error error) { return pos; } if (image.get() == 0) return pos; image->readMetadata(); exifData = image->exifData(); if (!exifData.empty()) { Exiv2::Exifdatum &latV = exifData["Exif.GPSInfo.GPSLatitude"]; Exiv2::Exifdatum &lonV = exifData["Exif.GPSInfo.GPSLongitude"]; positionValid = latV.count()==3 && lonV.count()==3; if (!positionValid) return pos; lat = latV.toFloat(0) + latV.toFloat(1) / 60.0 + latV.toFloat(2) / 3600.0; lon = lonV.toFloat(0) + lonV.toFloat(1) / 60.0 + lonV.toFloat(2) / 3600.0; if (exifData["Exif.GPSInfo.GPSLatitudeRef"].toString() == "S") lat *= -1.0; if (exifData["Exif.GPSInfo.GPSLongitudeRef"].toString() == "W") lon *= -1.0; } pos = Coord(lon, lat); return pos; } void GeoImageDock::addGeoDataToImage(Coord position, const QString & file) { Exiv2::Image::AutoPtr image; try { image = Exiv2::ImageFactory::open(file.toStdString()); } catch (Exiv2::Error error) { QMessageBox::warning(0, tr("Exiv2"), tr("Error while opening \"%1\":\n%2").arg(file).arg(error.what()), QMessageBox::Ok); return; } if (image.get() == 0) { QMessageBox::warning(0, tr("Exiv2"), tr("Error while loading EXIF-data from \"%1\".").arg(file), QMessageBox::Ok); return; } image->readMetadata(); Exiv2::ExifData &exifData = image->exifData(); double lat = fabs(position.y()); double lon = fabs(position.x()); int h, m, s; QString hourFormat("%1/1 %2/1 %3/100"); h = int(lon / 1); // translate angle to hours, minutes and seconds m = int((lon - h) * 60 / 1); s = int((lon - h - m/60.0) * 60 * 60 * 100 / 1); // multiply with 100 because of divider in hourFormat Exiv2::ValueType<Exiv2::URational> vlon; vlon.read(hourFormat.arg(h).arg(m).arg(s).toStdString()); // fil vlon with string h = int(lat / 1); // translate angle to hours, minutes and seconds m = int((lat - h) * 60 / 1); s = int((lat - h - m/60.0) * 60 * 60 * 100 / 1); // multiply with 100 because of divider in hourFormat Exiv2::ValueType<Exiv2::URational> vlat; vlat.read(hourFormat.arg(h).arg(m).arg(s).toStdString()); // fill vlat with string exifData["Exif.GPSInfo.GPSVersionID"] = "2 0 0 0"; exifData["Exif.GPSInfo.GPSLatitude"] = vlat; if (position.y() < 0) exifData["Exif.GPSInfo.GPSLatitudeRef"] = "S"; else exifData["Exif.GPSInfo.GPSLatitudeRef"] = "N"; exifData["Exif.GPSInfo.GPSLongitude"] = vlon; if (position.x() < 0) exifData["Exif.GPSInfo.GPSLongitudeRef"] = "W"; else exifData["Exif.GPSInfo.GPSLongitudeRef"] = "E"; image->writeMetadata(); // store it return; } void GeoImageDock::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void GeoImageDock::retranslateUi() { setWindowTitle(tr("Geo Images")); centerAction->setText(tr("Center map")); remImagesAction->setText(tr("Remove Images")); toClipboardAction->setText(tr("Copy filename to clipboard")); nextImageAction->setText(tr("Select next image")); previousImageAction->setText(tr("Select previous image")); saveImageAction->setText(tr("Save geotagged image...")); } // *** ImageView *** // ImageView::ImageView(QWidget *parent) : QWidget(parent) { zoomLevel = 1.0; } ImageView::~ImageView() { } void ImageView::setImage(QString filename, bool movable) { name = filename; Movable = movable; if (!name.isEmpty()) image.load(name); else image = QImage(); area = QRectF(QPoint(0, 0), image.size()); zoomLevel = 1.0; resizeEvent(NULL); update(); } void ImageView::setMovable(bool movable) { Movable = movable; } void ImageView::paintEvent(QPaintEvent * /* e */) { QPainter P(this); // P.setRenderHint(QPainter::SmoothPixmapTransform); P.drawImage(rect, image, area, Qt::OrderedDither); // draw the image QRect text = QFontMetrics(P.font()).boundingRect(name); // calculate size of filename text.translate(-text.topLeft()); // move topLeft to (0, 0) if (text.width() > width()) text.setWidth(width()); // max size is width() P.fillRect(text, QColor(255, 255, 255, 192)); // draw the text background if (text.width() == width()) { // draw a cutting text ("...") in front of the cutted filename QRect cutting = QFontMetrics(P.font()).boundingRect("..."); cutting.translate(-cutting.topLeft()); // move topLeft to (0, 0) text.setWidth(width() - cutting.width()); text.translate(QPoint(cutting.width(), 0)); P.drawText(cutting, "..."); } P.drawText(text, Qt::AlignRight, name); if (!Movable) { P.setPen(QPen(Qt::red, 2)); P.drawRect(rect); } } void ImageView::resizeEvent(QResizeEvent * /* e */) { if (image.height() == 0 || image.width() == 0) return; rect = geometry(); rect.translate(-rect.topLeft()); zoom(0); // update zoom } void ImageView::mouseDoubleClickEvent(QMouseEvent * /* e */) { if (QApplication::keyboardModifiers() == Qt::ControlModifier) zoom(-1); else zoom(1); } void ImageView::mousePressEvent(QMouseEvent * e) { if ((e->button() & Qt::LeftButton) && !Movable) { QDrag *drag = new QDrag(this); QMimeData *mimeData = new QMimeData; QList<QUrl> urls; urls << QUrl::fromLocalFile(name); mimeData->setUrls(urls); drag->setMimeData(mimeData); drag->setPixmap(QPixmap::fromImage(image).scaledToWidth(64)); /* Qt::DropAction dropAction = */ drag->exec(); return; } if (e->button() & Qt::RightButton) return QWidget::mousePressEvent(e); mousePos = e->pos(); } void ImageView::mouseMoveEvent(QMouseEvent * e) { if (!Movable) return QWidget::mouseMoveEvent(e); if (geometry().width() == 0 || geometry().height() == 0) return; area.translate((double)(mousePos.x() - e->pos().x()) / (double)rect.width() * area.width(), (double)(mousePos.y() - e->pos().y()) / (double)rect.height() * area.height()); mousePos = e->pos(); update(); } void ImageView::wheelEvent(QWheelEvent *e) { zoom(e->delta() / 8.0 / 360.0 * 10.0); // one wheel rotation is about 10 steps } void ImageView::zoom(double levelStep) { if (name.isEmpty() || !rect.isValid()) return; // zoomValue (in percent) increases/decreases following this function: 100 * sqrt(2)^x // round about it results in -> 100% 150% 200% 300% 400% 550% 800% (see zooming values e.g. in gimp) double newZoom = zoomLevel * pow(sqrt(2.0), levelStep); if (newZoom > 256 || newZoom < 0.8) // only zoom up to 25600 % or down to 80% return; QRectF oldArea = area; QPointF center = area.center(); area.setWidth(1 / newZoom * image.width()); area.setHeight(1 / newZoom * image.height()); double rAspect = (double)rect.height() / (double)rect.width(); // ensure that area has the same aspect as rect has double aAspect = (double)area.height() / (double)area.width(); if (rAspect > aAspect) area.setHeight(area.width() * rAspect); else if (rAspect < aAspect) area.setWidth(area.height() / rAspect); area.moveCenter(center); if (levelStep > 0 ) { QPointF cursor = mapFromGlobal(QCursor::pos()); QPointF old = cursor / (double)rect.width() * oldArea.width() + oldArea.topLeft(); // map to image coordinates QPointF neu = cursor / (double)rect.width() * area.width() + area.topLeft(); // map to image coordinates area.translate(old - neu); // ensure that the point under cursor doesn't move } zoomLevel = newZoom; update(); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/GeoImageDock.h����������������������������������������������������������0000664�0000000�0000000�00000007033�11770671653�0020251�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "MapView.h" #include "MainWindow.h" #include "Document.h" #include <QtGui/QPainter> #include <QtGui/QDockWidget> #include <QtGui/QMouseEvent> #include <QtGui/QShortcut> #include <exiv2/image.hpp> #include <exiv2/exif.hpp> #define WARNING(title, message) { \ if (QMessageBox::warning(this, title, message.arg(file), \ QMessageBox::Ignore | QMessageBox::Cancel, QMessageBox::Ignore) == QMessageBox::Ignore) \ continue; \ else { \ theView->invalidate(true, true, false); \ return; \ } \ } #define QUESTION(title, message, always) { \ if (always == 0) { \ int replyButton = QMessageBox::question(this, title, message, \ QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::No | QMessageBox::NoToAll | QMessageBox::Abort, QMessageBox::Yes ); \ if (replyButton == QMessageBox::No) \ continue; \ else if (replyButton == QMessageBox::Abort) { \ theView->invalidate(true, true, false); \ return; \ } \ else if (replyButton != QMessageBox::Yes) \ always = replyButton; \ } \ if (always == QMessageBox::NoToAll) \ continue; \ } class ImageView; class GeoImageDock : public MDockAncestor { Q_OBJECT public: GeoImageDock(MainWindow *aMain); ~GeoImageDock(void); void clear(); void loadImage(QString fileName, Coord pos); void loadImages(QStringList fileNames); void setImage(Node *Pt); void setImage(int ImageId); static void addGeoDataToImage(Coord pos, const QString & file); static Coord getGeoDataFromImage(const QString & file); private slots: void removeImages(void); void toClipboard(void); void selectNext(void); void selectPrevious(void); void centerMap(void); void saveImage(void); private: MainWindow *Main; QAction *centerAction; QAction *remImagesAction; QAction *toClipboardAction; QAction *nextImageAction; QAction *previousImageAction; QAction *saveImageAction; QStringList Images; int curImage, lastImage; bool updateByMe; QPointer<TrackLayer> photoLayer; ImageView *Image; struct NodeData { NodeData(Node* mNode, const QString & mFilename, const QDateTime & mTimestamp, bool mInserted) : node(mNode), filename(mFilename), inserted(mInserted), timestamp(mTimestamp) { } bool operator<(const NodeData & other) const { return timestamp < other.timestamp; } Node* node; QString filename; bool inserted; QDateTime timestamp; }; QList<NodeData> usedTrackPoints; void addUsedTrackpoint(NodeData data); bool getWalkingPapersDetails(const QUrl& reqUrl, double &lat, double &lon, bool& positionValid) const; bool askAndgetWalkingPapersDetails(double &lat, double &lon, bool& positionValid) const; public: void changeEvent(QEvent*); void retranslateUi(); }; class ImageView : public QWidget { public: ImageView(QWidget *parent); ~ImageView(); void setImage(QString filename, bool movable=true); void setMovable(bool movable=true); protected: void paintEvent(QPaintEvent *e); void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void wheelEvent(QWheelEvent *e); void mouseDoubleClickEvent(QMouseEvent *e); void resizeEvent(QResizeEvent *e); private: bool Movable; QImage image; QString name; QPoint mousePos; QRect rect; QRectF area; double zoomLevel; // zoom in percent void zoom(double levelStep); // zoom levelStep steps }; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/InfoDock.cpp������������������������������������������������������������0000664�0000000�0000000�00000004422�11770671653�0020021�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: InfoDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "InfoDock.h" #include "MainWindow.h" #include "MerkaartorPreferences.h" #include "DownloadOSM.h" #include <QApplication> #include <QDesktopServices> InfoDock::InfoDock(MainWindow* aParent) : MDockAncestor(aParent), Main(aParent), theText(new QTextBrowser(this)) { setMinimumSize(220,100); setWindowTitle(tr("Info")); setObjectName("infoDock"); theText->setReadOnly(true); theText->setOpenLinks(false); setWidget(theText); connect(theText, SIGNAL(anchorClicked(const QUrl &)), this, SLOT(on_anchorClicked(const QUrl &))); retranslateUi(); } InfoDock::~InfoDock() { } void InfoDock::setHtml(QString html) { currentHtml = html; theText->setHtml(html); } void InfoDock::setHoverHtml(QString html) { theText->setHtml(html); } void InfoDock::unsetHoverHtml() { theText->setHtml(currentHtml); } QString InfoDock::getHtml() { return theText->toHtml(); } void InfoDock::on_anchorClicked(const QUrl & link) { // QString data; // QString osmWebsite = M_PREFS->getOsmApiUrl(); // QString osmUser = M_PREFS->getOsmUser(); // QString osmPwd = M_PREFS->getOsmPassword(); // Downloader theDownloader(osmUser, osmPwd); // QUrl theUrl(osmWebsite+link.path()); // if (theDownloader.request("GET", theUrl, data)) { // QTextBrowser* b = new QTextBrowser; // QString s = QString::fromUtf8(theDownloader.content().constData()); // b->setPlainText(s); // b->setAttribute(Qt::WA_DeleteOnClose,true); // b->resize(640, 480); // b->show(); // b->raise(); // } else { // QMessageBox::warning(Main,QApplication::translate("Downloader","Download failed"),QApplication::translate("Downloader","Unexpected http status code (%1)").arg(theDownloader.resultCode())); // } QUrl theUrl(M_PREFS->getOsmWebsite()+link.path()); QDesktopServices::openUrl(theUrl); } void InfoDock::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void InfoDock::retranslateUi() { setWindowTitle(tr("Info")); setHtml(""); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/InfoDock.h��������������������������������������������������������������0000664�0000000�0000000�00000001414�11770671653�0017464�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: InfoDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef INFODOCK_H #define INFODOCK_H #include "MDockAncestor.h" #include <QTextBrowser> class MainWindow; class Feature; /** @author cbro <cbro@semperpax.com> */ class InfoDock : public MDockAncestor { Q_OBJECT public: InfoDock(MainWindow* aParent); ~InfoDock(); public: void setHtml(QString html); QString getHtml(); void setHoverHtml(QString html); void unsetHoverHtml(); void changeEvent(QEvent *); void retranslateUi(); private slots: void on_anchorClicked(const QUrl & link); private: MainWindow* Main; QTextBrowser* theText; QString currentHtml; }; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/LayerDock.cpp�����������������������������������������������������������0000664�0000000�0000000�00000037134�11770671653�0020210�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "LayerDock.h" #include "LayerWidget.h" #include "MainWindow.h" #ifndef _MOBILE #include "ui_MainWindow.h" #endif #include "MapView.h" #include "Document.h" #include "Layer.h" #include "PropertiesDock.h" #include "Command.h" #include "InfoDock.h" #include <QPushButton> #include <QDragEnterEvent> #include <QMenu> #define LINEHEIGHT 25 #define CHILD_WIDGETS (p->Content->children()) #define CHILD_WIDGET(x) (dynamic_cast<LayerWidget*>(p->Content->children().at(x))) #define CHILD_LAYER(x) (dynamic_cast<LayerWidget*>(p->Content->children().at(x))->getLayer()) class LayerDockPrivate { public: LayerDockPrivate(MainWindow* aMain) : Main(aMain), Scroller(0), Content(0), Layout(0), theDropWidget(0), lastSelWidget(0) {} public: MainWindow* Main; QScrollArea* Scroller; QWidget* Content; QVBoxLayout* Layout; QVBoxLayout* frameLayout; QTabBar* tab; LayerWidget* theDropWidget; LayerWidget* lastSelWidget; QMenu* ctxMenu; QList<LayerWidget*> selWidgets; }; LayerDock::LayerDock(MainWindow* aMain) : MDockAncestor(aMain) { p = new LayerDockPrivate(aMain); setMinimumSize(1,1); setObjectName("layersDock"); setAcceptDrops(true); createContent(); retranslateUi(); } LayerDock::~LayerDock() { delete p; } void LayerDock::dragEnterEvent(QDragEnterEvent *event) { p->theDropWidget = NULL; if (event->mimeData()->hasFormat("application/x-layer")) if ((p->theDropWidget = dynamic_cast<LayerWidget*>(event->source()))) event->acceptProposedAction(); } void LayerDock::dragMoveEvent(QDragMoveEvent *event) { if (event->mimeData()->hasFormat("application/x-layer")) event->accept(); else { event->ignore(); return; } LayerWidget* aW = dynamic_cast<LayerWidget*>(childAt(event->pos())); if (aW != p->theDropWidget) { if (!aW) { p->Layout->removeWidget(p->theDropWidget); p->Layout->addWidget(p->theDropWidget); } else { p->Layout->removeWidget(p->theDropWidget); p->Layout->insertWidget(p->Layout->indexOf(aW), p->theDropWidget); } update(); } } void LayerDock::dragLeaveEvent(QDragLeaveEvent * /*event*/) { // if (p->theDropWidget) { // p->Layout->removeWidget(p->theDropWidget); // SAFE_DELETE(p->theDropWidget); // } } void LayerDock::dropEvent(QDropEvent *event) { if (event->mimeData()->hasFormat("application/x-layer")) event->accept(); else { event->ignore(); return; } p->Main->document()->moveLayer(p->theDropWidget->getLayer(), p->Layout->indexOf(p->theDropWidget)); emit(layersChanged(false)); update(); } void LayerDock::clearLayers() { for (int i=CHILD_WIDGETS.size()-1; i >= 0; i--) { if (!CHILD_WIDGET(i)) continue; CHILD_WIDGET(i)->deleteLater(); } } void LayerDock::addLayer(Layer* aLayer) { LayerWidget* w = aLayer->newWidget(); if (w) { p->Layout->addWidget(w); connect(w, SIGNAL(layerChanged(LayerWidget*,bool)), this, SLOT(layerChanged(LayerWidget*,bool))); connect(w, SIGNAL(layerClosed(Layer*)), this, SLOT(layerClosed(Layer*))); connect(w, SIGNAL(layerCleared(Layer*)), this, SLOT(layerCleared(Layer*))); connect(w, SIGNAL(layerZoom(Layer*)), this, SLOT(layerZoom(Layer*))); connect(w, SIGNAL(layerProjection(const QString&)), this, SLOT(layerProjection(const QString&))); #ifndef _MOBILE p->Main->ui->menuLayers->addMenu(w->getAssociatedMenu()); #endif //w->setChecked(aLayer->isSelected()); w->setVisible(aLayer->isEnabled()); w->setEnabled(aLayer->isEnabled()); w->setChecked(aLayer->isSelected()); w->getAssociatedMenu()->menuAction()->setVisible(aLayer->isEnabled()); update(); } } void LayerDock::deleteLayer(Layer* aLayer) { for (int i=CHILD_WIDGETS.size()-1; i >= 0; i--) { if (!CHILD_WIDGET(i)) continue; if (CHILD_LAYER(i) == aLayer) { #ifndef _MOBILE p->Main->ui->menuLayers->removeAction(CHILD_WIDGET(i)->getAssociatedMenu()->menuAction()); #endif LayerWidget* curW = CHILD_WIDGET(i); curW->deleteLater(); break; } } update(); } Layer* LayerDock::getSelectedLayer() { for (int i=CHILD_WIDGETS.size()-1; i >= 0; i--) { if (!CHILD_WIDGET(i)) continue; if (CHILD_WIDGET(i)->isChecked()) { return CHILD_LAYER(i); } } return NULL; } void LayerDock::createContent() { delete p->Scroller; QWidget* frame = new QWidget(); p->frameLayout = new QVBoxLayout(frame); p->frameLayout->setMargin(0); p->frameLayout->setSpacing(0); p->tab = new QTabBar(frame); p->tab->setShape(QTabBar::RoundedNorth); p->tab->setContextMenuPolicy(Qt::CustomContextMenu); p->tab->setUsesScrollButtons(true); p->tab->setElideMode(Qt::ElideRight); int t; t = p->tab->addTab(NULL); p->tab->setTabData(t, Layer::All); t = p->tab->addTab(NULL); p->tab->setTabData(t, Layer::Map); t = p->tab->addTab(NULL); p->tab->setTabData(t, Layer::Draw); t = p->tab->addTab(NULL); p->tab->setTabData(t, Layer::Tracks); retranslateTabBar(); connect(p->tab, SIGNAL(currentChanged (int)), this, SLOT(tabChanged(int))); connect(p->tab, SIGNAL(customContextMenuRequested (const QPoint&)), this, SLOT(tabContextMenuRequested(const QPoint&))); QVBoxLayout* tabLayout = new QVBoxLayout(); tabLayout->addWidget(p->tab); // QSpacerItem* tabSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); // tabLayout->addItem(tabSpacer); p->frameLayout->addLayout(tabLayout); p->Scroller = new QScrollArea(frame); p->Scroller->setBackgroundRole(QPalette::Base); p->Scroller->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); p->Scroller->setWidgetResizable(true); QWidget* aWidget = new QWidget(); QVBoxLayout* aLayout = new QVBoxLayout(aWidget); aLayout->setSpacing(0); aLayout->setMargin(0); p->Content = new QWidget(); p->Layout = new QVBoxLayout(p->Content); p->Layout->setSpacing(0); p->Layout->setMargin(0); aLayout->addWidget(p->Content); aLayout->addStretch(); p->Scroller->setWidget(aWidget); p->frameLayout->addWidget(p->Scroller); setWidget(frame); update(); //Contextual Menu p->ctxMenu = new QMenu(this); QAction* actShowAll = new QAction(tr("Show All"), p->ctxMenu); actShowAll->setCheckable(false); p->ctxMenu->addAction(actShowAll); connect(actShowAll, SIGNAL(triggered(bool)), this, SLOT(showAllLayers(bool))); QAction* actHideAll = new QAction(tr("Hide All"), p->ctxMenu); actHideAll->setCheckable(false); p->ctxMenu->addAction(actHideAll); connect(actHideAll, SIGNAL(triggered(bool)), this, SLOT(hideAllLayers(bool))); p->ctxMenu->addSeparator(); QAction* actReadonlyAll = new QAction(tr("Readonly All"), p->ctxMenu); actReadonlyAll->setCheckable(false); p->ctxMenu->addAction(actReadonlyAll); connect(actReadonlyAll, SIGNAL(triggered(bool)), this, SLOT(readonlyAllLayers(bool))); QAction* actReadonlyNone = new QAction(tr("Readonly None"), p->ctxMenu); actReadonlyNone->setCheckable(false); p->ctxMenu->addAction(actReadonlyNone); connect(actReadonlyNone, SIGNAL(triggered(bool)), this, SLOT(readonlyNoneLayers(bool))); p->ctxMenu->addSeparator(); QAction* actClose = new QAction(tr("Close"), p->ctxMenu); actClose->setCheckable(false); p->ctxMenu->addAction(actClose); connect(actClose, SIGNAL(triggered(bool)), this, SLOT(closeLayers(bool))); } void LayerDock::resizeEvent(QResizeEvent* ) { } void LayerDock::layerChanged(LayerWidget* l, bool adjustViewport) { l->getAssociatedMenu()->setTitle(l->getLayer()->name()); emit(layersChanged(adjustViewport)); } void LayerDock::layerClosed(Layer* l) { // Main->document()->getUploadedLayer()->clear(); //Main->document()->remove(l); //delete l; l->clear(); l->setEnabled(false); l->setVisible(false); l->getWidget()->setVisible(false); l->getWidget()->getAssociatedMenu()->setVisible(false); #ifndef _MOBILE p->Main->on_editPropertiesAction_triggered(); #endif p->Main->document()->removeDownloadBox(l); if (p->Main->document()->getLastDownloadLayer() == l) p->Main->document()->setLastDownloadLayer(NULL); emit layersClosed(); update(); } void LayerDock::layerCleared(Layer* l) { l->clear(); #ifndef _MOBILE p->Main->on_editPropertiesAction_triggered(); #endif emit layersCleared(); } void LayerDock::layerZoom(Layer * l) { CoordBox bb = l->boundingBox(); qDebug() << "layerZoom: " << bb.topLeft().y() << ";" << bb.topLeft().x() << ";" << bb.bottomRight().y() << ";" << bb.bottomRight().x(); if (bb.isNull()) return; CoordBox mini(bb.center()-COORD_ENLARGE, bb.center()+COORD_ENLARGE); bb.merge(mini); // bb = bb.zoomed(1.1); p->Main->view()->setViewport(bb, p->Main->view()->rect()); emit(layersChanged(false)); } void LayerDock::layerProjection(const QString &prj) { emit layersProjection(prj); } void LayerDock::tabChanged(int idx) { for (int i=CHILD_WIDGETS.size()-1; i >= 0; i--) { if (!CHILD_WIDGET(i)) continue; if ((CHILD_LAYER(i)->isEnabled()) && (CHILD_LAYER(i)->classGroups() & (p->tab->tabData(idx).toUInt()))) CHILD_WIDGET(i)->setVisible(true); else CHILD_WIDGET(i)->setVisible(false); } } void LayerDock::tabContextMenuRequested(const QPoint& pos) { int idx = p->tab->tabAt(pos); p->tab->setCurrentIndex(idx); QMenu* ctxMenu = new QMenu(this); QAction* actTabShow = new QAction(tr("Show All"), ctxMenu); ctxMenu->addAction(actTabShow); connect(actTabShow, SIGNAL(triggered(bool)), this, SLOT(TabShowAll(bool))); QAction* actTabHide = new QAction(tr("Hide All"), ctxMenu); ctxMenu->addAction(actTabHide); connect(actTabHide, SIGNAL(triggered(bool)), this, SLOT(TabHideAll(bool))); ctxMenu->exec(mapToGlobal(pos)); } void LayerDock::TabShowAll(bool) { for (int i=CHILD_WIDGETS.size()-1; i >= 0; i--) { if (!CHILD_WIDGET(i)) continue; if (CHILD_LAYER(i)->classGroups() & p->tab->tabData(p->tab->currentIndex()).toInt()) { CHILD_WIDGET(i)->setLayerVisible(true); } } } void LayerDock::TabHideAll(bool) { for (int i=CHILD_WIDGETS.size()-1; i >= 0; i--) { if (!CHILD_WIDGET(i)) continue; if (CHILD_LAYER(i)->classGroups() & p->tab->tabData(p->tab->currentIndex()).toInt()) { CHILD_WIDGET(i)->setLayerVisible(false); } } } void LayerDock::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void LayerDock::retranslateUi() { setWindowTitle(tr("Layers")); retranslateTabBar(); } void LayerDock::retranslateTabBar() { p->tab->setTabText(0, tr("All")); p->tab->setTabText(1, tr("Map")); p->tab->setTabText(2, tr("Draw")); p->tab->setTabText(3, tr("Tracks")); } void LayerDock::showAllLayers(bool) { for (int i=0; i<p->selWidgets.size(); ++i) { p->selWidgets[i]->setLayerVisible(true); } } void LayerDock::hideAllLayers(bool) { for (int i=0; i<p->selWidgets.size(); ++i) { p->selWidgets[i]->setLayerVisible(false); } } void LayerDock::readonlyAllLayers(bool) { for (int i=0; i<p->selWidgets.size(); ++i) { p->selWidgets[i]->setLayerReadonly(true); } } void LayerDock::readonlyNoneLayers(bool) { for (int i=0; i<p->selWidgets.size(); ++i) { p->selWidgets[i]->setLayerReadonly(false); } } void LayerDock::closeLayers(bool) { for (int i=0; i<p->selWidgets.size(); ++i) { if (p->selWidgets[i]->getLayer()->canDelete()) layerClosed(p->selWidgets[i]->getLayer()); } } void LayerDock::resetLayers() { QList<Layer*> toDelete; for (int i=0; i < CHILD_WIDGETS.size(); ++i) { if (CHILD_WIDGET(i)) { if (CHILD_LAYER(i)->classType() == Layer::FilterLayerType) toDelete << CHILD_LAYER(i); else if ((CHILD_LAYER(i)->classType() == Layer::DirtyLayerType || CHILD_LAYER(i)->classType() == Layer::UploadedLayerType) && CHILD_LAYER(i)->size() == 0) toDelete << CHILD_LAYER(i); else { CHILD_WIDGET(i)->setLayerVisible(true); CHILD_LAYER(i)->setReadonly(false); CHILD_LAYER(i)->setAlpha(1.0); } } } foreach (Layer* f, toDelete) layerClosed(f); p->Main->document()->addFilterLayers(); } void LayerDock::contextMenuEvent(QContextMenuEvent* anEvent) { LayerWidget* aWidget = dynamic_cast<LayerWidget*>(childAt(anEvent->pos())); if (aWidget) { p->selWidgets.clear(); for (int i=0; i < CHILD_WIDGETS.size(); ++i) { if (CHILD_WIDGET(i) && CHILD_WIDGET(i)->isChecked()) p->selWidgets.push_back(CHILD_WIDGET(i)); } if (p->selWidgets.size() == 0 || p->selWidgets.size() == 1) { for (int i=0; i < CHILD_WIDGETS.size(); ++i) { if (CHILD_WIDGET(i)) CHILD_WIDGET(i)->setChecked(false); } aWidget->setChecked(true); p->lastSelWidget = aWidget; aWidget->showContextMenu(anEvent); } else if (p->selWidgets.size()) { p->ctxMenu->exec(anEvent->globalPos()); } } else { //Contextual Menu QMenu* ctxMenu = new QMenu(this); QAction* actResetLayers = new QAction(tr("Reset Layers to default"), ctxMenu); ctxMenu->addAction(actResetLayers); connect(actResetLayers, SIGNAL(triggered(bool)), this, SLOT(resetLayers())); ctxMenu->exec(anEvent->globalPos()); } } #if QT_VERSION < 0x040500 bool LayerDock::event (QEvent* ev) { switch (ev->type()) { case QEvent::MouseButtonPress: mousePressEvent(static_cast<QMouseEvent *>(ev)); break; default: break; } return MDockAncestor::event(ev); } #endif void LayerDock::mousePressEvent ( QMouseEvent * ev ) { if (ev->button() != Qt::LeftButton) { ev->ignore(); return; } LayerWidget* aWidget = dynamic_cast<LayerWidget*>(childAt(ev->pos())); if (!aWidget) { for (int i=0; i < CHILD_WIDGETS.size(); ++i) { if (CHILD_WIDGET(i)) CHILD_WIDGET(i)->setChecked(false); } p->lastSelWidget = NULL; ev->ignore(); return; } if (ev->modifiers() & Qt::ControlModifier) { bool toSelect = !aWidget->isChecked(); aWidget->setChecked(toSelect); if (toSelect) p->lastSelWidget = aWidget; else p->lastSelWidget = NULL; } else if (ev->modifiers() & Qt::ShiftModifier) { bool toSelect = false; for (int i=0; i < CHILD_WIDGETS.size(); ++i) { if (CHILD_WIDGET(i)) { if (CHILD_WIDGET(i) == aWidget || CHILD_WIDGET(i) == p->lastSelWidget) toSelect = !toSelect; if (toSelect) CHILD_WIDGET(i)->setChecked(true); } } aWidget->setChecked(true); } else { for (int i=0; i < CHILD_WIDGETS.size(); ++i) { if (CHILD_WIDGET(i)) CHILD_WIDGET(i)->setChecked(false); } aWidget->setChecked(true); p->lastSelWidget = aWidget; if (p->Main->info()) p->Main->info()->setHtml(aWidget->getLayer()->toHtml()); } ev->accept(); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/LayerDock.h�������������������������������������������������������������0000664�0000000�0000000�00000003737�11770671653�0017657�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_LAYERDOCK_H_ #define MERKATOR_LAYERDOCK_H_ #include "MDockAncestor.h" #include <QtGui/QScrollArea> #include <QVBoxLayout> #include <QGroupBox> #include <QButtonGroup> #include <QTabBar> class MainWindow; class Layer; class LayerWidget; class LayerDockPrivate; class LayerDock : public MDockAncestor { Q_OBJECT public: LayerDock(MainWindow* aParent); public: ~LayerDock(void); void createContent(); //void updateContent(); void resizeEvent(QResizeEvent* anEvent); void clearLayers(); void addLayer(Layer* aLayer); void deleteLayer(Layer* aLayer); Layer* getSelectedLayer(); private slots: void layerChanged(LayerWidget*, bool adjustViewport); void layerClosed(Layer*); void layerCleared(Layer*); void layerZoom(Layer*); void layerProjection(const QString&); void tabChanged(int idx); void tabContextMenuRequested(const QPoint& pos); void TabShowAll(bool); void TabHideAll(bool); void showAllLayers(bool); void hideAllLayers(bool); void readonlyAllLayers(bool); void readonlyNoneLayers(bool); void closeLayers(bool); void resetLayers(); signals: void layersChanged(bool adjustViewport); void layersClosed(); void layersCleared(); void layersProjection(const QString&); protected: LayerDockPrivate* p; #if QT_VERSION < 0x040500 virtual bool event (QEvent* ev); #endif virtual void contextMenuEvent(QContextMenuEvent* anEvent); virtual void mousePressEvent ( QMouseEvent * event ); void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent *event); void dragLeaveEvent(QDragLeaveEvent *event); void dropEvent(QDropEvent *event); private: void changeEvent(QEvent*); void retranslateUi(); void retranslateTabBar(); }; #endif ���������������������������������merkaartor-0.18.1/src/Docks/MDockAncestor.cpp�������������������������������������������������������0000664�0000000�0000000�00000001362�11770671653�0021021�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MDockAncestor.h" #include <QVBoxLayout> #include <QApplication> #include <QDialogButtonBox> #ifdef _MOBILE MDockAncestor::MDockAncestor(QWidget *parent) : QWidget(parent), mainWidget(0) { theLayout = new QVBoxLayout(this); theLayout->setSpacing(4); theLayout->setMargin(4); } void MDockAncestor::setWidget ( QWidget * widget ) { mainWidget = widget; mainWidget->setParent(this); theLayout->insertWidget(0, mainWidget); } #endif QWidget* MDockAncestor::getWidget() { if (!mainWidget) { mainWidget = new QWidget(); mainWidget->setParent(this); #ifndef _MOBILE QDockWidget::setWidget(mainWidget); #else theLayout->addWidget(mainWidget); #endif } return mainWidget; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/MDockAncestor.h���������������������������������������������������������0000664�0000000�0000000�00000001705�11770671653�0020467�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MDOCKANCESTOR_H #define MDOCKANCESTOR_H #ifndef _MOBILE #include <QDockWidget> class MDockAncestor : public QDockWidget { public: MDockAncestor(QWidget *parent = 0) : QDockWidget(parent), mainWidget(0) {} void setWidget ( QWidget * widget ) { QDockWidget::setWidget(widget); } QWidget* getWidget(); void setAllowedAreas ( Qt::DockWidgetAreas areas ) { QDockWidget::setAllowedAreas(areas); } protected: QWidget* mainWidget; virtual void retranslateUi() = 0; }; #else #include <QDialog> class QVBoxLayout; class MDockAncestor : public QWidget { public: MDockAncestor(QWidget *parent = 0); void setWidget ( QWidget * widget ); QWidget* getWidget(); void setAllowedAreas ( Qt::DockWidgetAreas ) { }; protected: QVBoxLayout* theLayout; QWidget* mainWidget; virtual void retranslateUi() = 0; }; #endif #endif //MDOCKANCESTOR_H �����������������������������������������������������������merkaartor-0.18.1/src/Docks/MinimumRelationProperties.ui��������������������������������������������0000664�0000000�0000000�00000011656�11770671653�0023355�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>RelationProperties</class> <widget class="QWidget" name="RelationProperties"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>228</width> <height>495</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <layout class="QGridLayout" name="variableLayout"/> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLabel" name="MembersLabel"> <property name="text"> <string>Members</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="RemoveMemberButton"> <property name="toolTip"> <string>Remove selected member(s)</string> </property> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/small-remove.xpm</normaloff>:/Icons/small-remove.xpm</iconset> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QTableView" name="MembersView"> <property name="tabKeyNavigation"> <bool>false</bool> </property> </widget> </item> <item> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QToolButton" name="btMemberUp"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>...</string> </property> <property name="arrowType"> <enum>Qt::UpArrow</enum> </property> </widget> </item> <item> <widget class="QToolButton" name="btMemberDown"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>...</string> </property> <property name="arrowType"> <enum>Qt::DownArrow</enum> </property> </widget> </item> </layout> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QLabel" name="label_4"> <property name="text"> <string>Tags</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="SourceTagButton"> <property name="minimumSize"> <size> <width>23</width> <height>23</height> </size> </property> <property name="toolTip"> <string>Add "source" tag</string> </property> <property name="text"> <string>S</string> </property> </widget> </item> <item> <widget class="QToolButton" name="RemoveTagButton"> <property name="minimumSize"> <size> <width>23</width> <height>23</height> </size> </property> <property name="toolTip"> <string>Remove selected tag(s)</string> </property> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/small-remove.xpm</normaloff>:/Icons/small-remove.xpm</iconset> </property> </widget> </item> </layout> </item> <item> <widget class="QTableView" name="TagView"> <property name="tabKeyNavigation"> <bool>false</bool> </property> </widget> </item> </layout> </widget> <resources> <include location="../../Icons/AllIcons.qrc"/> </resources> <connections/> </ui> ����������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/MinimumRoadProperties.ui������������������������������������������������0000664�0000000�0000000�00000006301�11770671653�0022454�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>RoadProperties</class> <widget class="QWidget" name="RoadProperties"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>220</width> <height>362</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <layout class="QGridLayout" name="mainMayout"> <property name="margin"> <number>0</number> </property> <property name="spacing"> <number>6</number> </property> <item row="0" column="1"> <widget class="QLabel" name="Id"> <property name="text"> <string>xxx</string> </property> </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Id</string> </property> </widget> </item> </layout> </item> <item> <layout class="QVBoxLayout" name="variableLayout"/> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QLabel" name="label_4"> <property name="text"> <string>Tags</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="SourceTagButton"> <property name="minimumSize"> <size> <width>23</width> <height>23</height> </size> </property> <property name="toolTip"> <string>Add "source" tag</string> </property> <property name="text"> <string>S</string> </property> </widget> </item> <item> <widget class="QToolButton" name="RemoveTagButton"> <property name="minimumSize"> <size> <width>23</width> <height>23</height> </size> </property> <property name="toolTip"> <string>Remove selected tag(s)</string> </property> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/small-remove.xpm</normaloff>:/Icons/small-remove.xpm</iconset> </property> </widget> </item> </layout> </item> <item> <widget class="QTableView" name="TagView"> <property name="tabKeyNavigation"> <bool>false</bool> </property> </widget> </item> </layout> </widget> <tabstops> <tabstop>RemoveTagButton</tabstop> <tabstop>TagView</tabstop> </tabstops> <resources> <include location="../../Icons/AllIcons.qrc"/> </resources> <connections/> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/MinimumTrackPointProperties.ui������������������������������������������0000664�0000000�0000000�00000007256�11770671653�0023657�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>TrackPointProperties</class> <widget class="QWidget" name="TrackPointProperties"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>219</width> <height>385</height> </rect> </property> <property name="windowTitle"> <string>Trackpoint</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <layout class="QGridLayout" name="mainLayout"> <property name="margin"> <number>0</number> </property> <property name="spacing"> <number>6</number> </property> <item row="1" column="0"> <widget class="QLabel" name="label_3"> <property name="text"> <string>Latitude</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QLineEdit" name="Latitude"/> </item> <item row="2" column="0"> <widget class="QLabel" name="label_4"> <property name="text"> <string>Longitude</string> </property> </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Id</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QLabel" name="Id"> <property name="text"> <string>xxx</string> </property> </widget> </item> <item row="2" column="1"> <widget class="QLineEdit" name="Longitude"/> </item> </layout> </item> <item> <layout class="QVBoxLayout" name="variableLayout"/> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>Tags</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="SourceTagButton"> <property name="minimumSize"> <size> <width>23</width> <height>23</height> </size> </property> <property name="toolTip"> <string>Add "source" tag</string> </property> <property name="text"> <string>S</string> </property> </widget> </item> <item> <widget class="QToolButton" name="RemoveTagButton"> <property name="minimumSize"> <size> <width>23</width> <height>23</height> </size> </property> <property name="toolTip"> <string>Remove selected tag(s)</string> </property> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/small-remove.xpm</normaloff>:/Icons/small-remove.xpm</iconset> </property> </widget> </item> </layout> </item> <item> <widget class="QTableView" name="TagView"> <property name="tabKeyNavigation"> <bool>false</bool> </property> </widget> </item> </layout> </widget> <resources> <include location="../../Icons/AllIcons.qrc"/> </resources> <connections/> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/PhotoLoadErrorDialog.ui�������������������������������������������������0000664�0000000�0000000�00000010100�11770671653�0022171�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>PhotoLoadErrorDialog</class> <widget class="QDialog" name="PhotoLoadErrorDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>328</width> <height>202</height> </rect> </property> <property name="windowTitle"> <string>No Valid geotag</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="photo"> <property name="text"> <string>TextLabel</string> </property> </widget> </item> <item> <widget class="QLabel" name="label"> <property name="text"> <string>This photo does not contain geo-tagging EXIF data. What do you want to do next?</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> <item> <widget class="QPushButton" name="pbMatch"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>Try to match with a track node</string> </property> <property name="checkable"> <bool>true</bool> </property> <property name="checked"> <bool>false</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="pbLoad"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>Load without associated node</string> </property> <property name="checkable"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="pbBarcode"> <property name="text"> <string>Extract info from barcode (Walking Papers)</string> </property> <property name="checkable"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="pbIgnore"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>Ignore it</string> </property> <property name="checkable"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QCheckBox" name="cbRemember"> <property name="text"> <string>Do this for all current photos.</string> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>pbMatch</sender> <signal>clicked()</signal> <receiver>PhotoLoadErrorDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>272</x> <y>82</y> </hint> <hint type="destinationlabel"> <x>300</x> <y>68</y> </hint> </hints> </connection> <connection> <sender>pbLoad</sender> <signal>clicked()</signal> <receiver>PhotoLoadErrorDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>188</x> <y>111</y> </hint> <hint type="destinationlabel"> <x>300</x> <y>160</y> </hint> </hints> </connection> <connection> <sender>pbIgnore</sender> <signal>clicked()</signal> <receiver>PhotoLoadErrorDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>123</x> <y>158</y> </hint> <hint type="destinationlabel"> <x>300</x> <y>35</y> </hint> </hints> </connection> <connection> <sender>pbBarcode</sender> <signal>clicked()</signal> <receiver>PhotoLoadErrorDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>162</x> <y>126</y> </hint> <hint type="destinationlabel"> <x>251</x> <y>3</y> </hint> </hints> </connection> </connections> </ui> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/PropertiesDock.cpp������������������������������������������������������0000664�0000000�0000000�00000117422�11770671653�0021267�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "PropertiesDock.h" #include "InfoDock.h" #include "MainWindow.h" #ifndef _MOBILE #include "ui_MainWindow.h" #endif #include "MapView.h" #include "Interaction.h" #include "TagModel.h" #include "EditCompleterDelegate.h" #include "ShortcutOverrideFilter.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "NodeCommands.h" #include "RelationCommands.h" #include "Coord.h" #include "Document.h" #include "Features.h" #include "FeatureManipulations.h" #include "TagTemplate.h" #ifdef GEOIMAGE #include "GeoImageDock.h" #endif #include <QtCore/QTimer> #include <QtGui/QHeaderView> #include <QtGui/QLineEdit> #include <QtGui/QListWidget> #include <QtGui/QTableView> #include <QClipboard> #include <QMessageBox> #include <QMenu> #include <algorithm> PropertiesDock::PropertiesDock(MainWindow* aParent) : MDockAncestor(aParent), Main(aParent), CurrentUi(0), theTemplates(0), CurrentTagView(0), CurrentMembersView(0), NowShowing(NoUiShowing) { setMinimumSize(220,100); switchToNoUi(); setObjectName("propertiesDock"); theModel = new TagModel(aParent); delegate = new EditCompleterDelegate(aParent); // Set up the shortcut event filter for the tableviews // This allows them to react to keys already bound to // application wide shortcuts shortcutFilter = new ShortcutOverrideFilter(); shortcutFilter->addOverride(Qt::Key_Up); shortcutFilter->addOverride(Qt::Key_Down); shortcutFilter->addOverride(Qt::Key_Left); shortcutFilter->addOverride(Qt::Key_Right); shortcutFilter->addOverride(Qt::Key_F2); shortcutFilter->addOverride(Qt::Key_Delete); centerAction = new QAction(NULL, this); connect(centerAction, SIGNAL(triggered()), this, SLOT(on_centerAction_triggered())); centerZoomAction = new QAction(NULL, this); connect(centerZoomAction, SIGNAL(triggered()), this, SLOT(on_centerZoomAction_triggered())); selectAction = new QAction(NULL, this); connect(selectAction, SIGNAL(triggered()), this, SLOT(on_Member_selected())); loadTemplates(); retranslateUi(); } PropertiesDock::~PropertiesDock(void) { delete theModel; delete theTemplates; delete shortcutFilter; } static bool isChildOfSingleRoadInner(Feature *mapFeature) { return Way::GetSingleParentRoadInner(mapFeature) != NULL; } static bool isChildOfArea(Feature *mapFeature) { Way* R = Way::GetSingleParentRoadInner(mapFeature); if (R) return (R->area() > 0.0); return false; } static bool isChildOfSingleRoad(Feature *mapFeature) { return Way::GetSingleParentRoad(mapFeature) != NULL; } static bool isChildOfSingleRelation(Feature *mapFeature) { int parentRelations = 0; for (int i=0; i<mapFeature->sizeParents(); i++) { Feature * parent = CAST_FEATURE(mapFeature->getParent(i)); if (!parent || parent->isDeleted()) continue; bool isParentRelation = dynamic_cast<Relation*>(parent) != 0; if (isParentRelation) parentRelations++; if (parentRelations > 1) return false; } return (parentRelations == 1); } static bool isChildOfRelation(Feature *mapFeature) { for (int i=0; i<mapFeature->sizeParents(); i++) { Relation * rel = CAST_RELATION(mapFeature->getParent(i)); if (rel && !rel->isDeleted()) return true; } return false; } void PropertiesDock::checkMenuStatus() { bool IsPoint = false; bool IsRoad = false; bool IsRelation = false; bool IsParentRoad = false; bool IsParentRoadInner = false; bool IsParentRelation = false; bool IsParentArea = false; bool IsOpenStreetBug = false; int NumRoads = 0; int NumCommitableFeature = 0; int NumPoints = 0; int NumRelation = 0; int NumRelationChild = 0; int NumAreas = 0; int NumParents = 0; int NumChildren = 0; int NumIncomplete = 0; if (Selection.size() == 1) { IsPoint = CAST_NODE(Selection[0]) != 0; IsRoad = CAST_WAY(Selection[0]) != 0; IsRelation = CAST_RELATION(Selection[0]) != 0; IsParentRoad = IsPoint && isChildOfSingleRoad(Selection[0]); IsParentRoadInner = IsPoint && isChildOfSingleRoadInner(Selection[0]); IsParentRelation = isChildOfSingleRelation(Selection[0]); IsParentArea = isChildOfArea(Selection[0]); IsOpenStreetBug = isChildOfArea(Selection[0]); IsOpenStreetBug = IsPoint && (Selection[0]->id().type & IFeature::Special); } for (int i=0; i<Selection.size(); ++i) { if (Selection[i]->sizeParents()) ++NumParents; if (Selection[i]->size()) ++NumChildren; if (Selection[i]->notEverythingDownloaded()) ++NumIncomplete; if (CAST_NODE(Selection[i])) ++NumPoints; if (Way* R = dynamic_cast<Way*>(Selection[i])) { if (R->area() > 0.0) { ++NumAreas; } else { ++NumRoads; } } if (CAST_RELATION(Selection[i])) ++NumRelation; if (isChildOfRelation(Selection[i])) ++NumRelationChild; if (!Selection[i]->isUploadable() && !Selection[i]->isSpecial()) ++NumCommitableFeature; } #ifndef _MOBILE Main->ui->createRelationAction->setEnabled(Selection.size()); Main->ui->editRemoveAction->setEnabled(Selection.size()); Main->ui->editMoveAction->setEnabled(true); Main->ui->editReverseAction->setEnabled(IsRoad || NumAreas + NumRoads > 0); Main->ui->roadAddStreetNumbersAction->setEnabled(NumRoads >= 1); Main->ui->roadJoinAction->setEnabled(NumRoads >= 1 && canJoinRoads(this)); Main->ui->roadCreateJunctionAction->setEnabled(NumRoads > 1 && canCreateJunction(this)); Main->ui->roadSplitAction->setEnabled((IsParentRoadInner && !IsParentArea) || (NumRoads && NumPoints) || (NumAreas && NumPoints > 1)); Main->ui->roadBreakAction->setEnabled(IsParentRoadInner || ((NumRoads == 1 || NumAreas == 1) && NumPoints) || (NumRoads > 1 && canBreakRoads(this))); Main->ui->roadSimplifyAction->setEnabled(IsRoad || NumRoads > 0 || NumAreas > 0); Main->ui->roadSubdivideAction->setEnabled((NumRoads + NumAreas) == 1 && (!NumPoints || NumPoints == 2) && canSubdivideRoad(this)); Main->ui->roadAxisAlignAction->setEnabled((NumRoads + NumAreas) > 0 || (NumRelation > 0 && canAxisAlignRoads(this))); Main->ui->areaJoinAction->setEnabled(NumAreas > 1); Main->ui->areaSplitAction->setEnabled(NumAreas == 1 && NumPoints == 2 && canSplitArea(this)); Main->ui->areaTerraceAction->setEnabled(NumAreas == 1 && NumRoads == 0 && canTerraceArea(this)); Main->ui->featureSelectChildrenAction->setEnabled(NumChildren); Main->ui->featureSelectParentsAction->setEnabled(NumParents); Main->ui->featureDownloadMissingChildrenAction->setEnabled(NumIncomplete); Main->ui->featureDeleteAction->setEnabled((IsPoint || IsRoad || IsRelation) && !Selection[0]->isDirty()); Main->ui->featureCommitAction->setEnabled(NumCommitableFeature); Main->ui->nodeMergeAction->setEnabled(NumPoints > 1); Main->ui->nodeAlignAction->setEnabled(NumPoints > 2); Main->ui->nodeSpreadAction->setEnabled(NumPoints > 2); Main->ui->nodeDetachAction->setEnabled(NumPoints && canDetachNodes(this)); Main->ui->relationAddMemberAction->setEnabled(NumRelation && Selection.size() > 1); Main->ui->relationRemoveMemberAction->setEnabled((NumRelation && Selection.size() > 1 && NumRelationChild) || IsParentRelation); Main->ui->relationAddToMultipolygonAction->setEnabled((NumAreas > 1) || (NumAreas >0 && NumRelation == 1)); Main->ui->menuOpenStreetBugs->setEnabled(IsOpenStreetBug); Main->ui->editCopyAction->setEnabled(Selection.size()); Main->clipboardChanged(); #endif } int PropertiesDock::selectionSize() const { return Selection.size(); } Feature* PropertiesDock::selection(int idx) { if (idx < Selection.size()) return Selection[idx]; return 0; } QList<Feature*> PropertiesDock::selection() { return Selection; } void PropertiesDock::setSelection(Feature*aFeature) { cleanUpUi(); Selection.clear(); if (aFeature) Selection.push_back(aFeature); FullSelection = Selection; switchUi(); fillMultiUiSelectionBox(); } void PropertiesDock::setMultiSelection(const QList<Feature*>& aFeatureList) { cleanUpUi(); Selection.clear(); for (int i=0; i<aFeatureList.size(); ++i) Selection.push_back(aFeatureList[i]); FullSelection = Selection; switchToMultiUi(); // to prevent slots to change the values also QList<Feature*> Current = Selection; Selection.clear(); MultiUi.TagView->setModel(theModel); MultiUi.TagView->setItemDelegate(delegate); Main->info()->setHtml(""); #ifdef GEOIMAGE Main->geoImage()->setImage((Node *)NULL); #endif CurrentTagView = MultiUi.TagView; theModel->setFeature(Current); Selection = Current; fillMultiUiSelectionBox(); } void PropertiesDock::toggleSelection(Feature* S) { cleanUpUi(); QList<Feature*>::iterator i = std::find(Selection.begin(),Selection.end(),S); if (i == Selection.end()) Selection.push_back(S); else Selection.erase(i); FullSelection = Selection; switchUi(); fillMultiUiSelectionBox(); } void PropertiesDock::addSelection(Feature* S) { cleanUpUi(); QList<Feature*>::iterator i = std::find(Selection.begin(),Selection.end(),S); if (i == Selection.end()) Selection.push_back(S); FullSelection = Selection; switchUi(); fillMultiUiSelectionBox(); } void PropertiesDock::adjustSelection() { QList<Feature*> aSelection; int cnt = Selection.size(); for (int i=0; i<FullSelection.size(); ++i) { if (Main->document()->exists(FullSelection[i]) && FullSelection[i] && !FullSelection[i]->isDeleted()) { aSelection.push_back(FullSelection[i]); } else { QList<Feature*>::iterator it = std::find(Selection.begin(),Selection.end(),FullSelection[i]); if (it != Selection.end()) Selection.erase(it); } } FullSelection = aSelection; if (Selection.size() != cnt) switchUi(); } bool PropertiesDock::isSelected(Feature *aFeature) { QList<Feature*>::iterator i = std::find(Selection.begin(),Selection.end(),aFeature); if (i == Selection.end()) return false; else return true; } void PropertiesDock::fillMultiUiSelectionBox() { if (NowShowing == MultiShowing) { // to prevent on_SelectionList_itemSelectionChanged to kick in NowShowing = NoUiShowing; Main->setUpdatesEnabled(false); MultiUi.SelectionList->clear(); for (int i=0; i<FullSelection.size(); ++i) { QListWidgetItem* it = new QListWidgetItem(FullSelection[i]->description(),MultiUi.SelectionList); it->setData(Qt::UserRole,QVariant(i)); it->setSelected(true); } MultiUi.lbStatus->setText(tr("%1/%1 selected item(s)").arg(FullSelection.size())); Main->setUpdatesEnabled(true); NowShowing = MultiShowing; } } void PropertiesDock::on_SelectionList_itemSelectionChanged() { if (NowShowing == MultiShowing) { Selection.clear(); for (int i=0; i<FullSelection.size(); ++i) if (MultiUi.SelectionList->item(i)->isSelected()) Selection.push_back(FullSelection[i]); if (Selection.size() == 1) { Main->info()->setHtml(Selection[0]->toHtml()); #ifdef GEOIMAGE Node *Pt; if ((Pt = dynamic_cast<Node*>(Selection[0]))) Main->geoImage()->setImage(Pt); #endif } theModel->setFeature(Selection); MultiUi.lbStatus->setText(tr("%1/%2 selected item(s)").arg(Selection.size()).arg(FullSelection.size())); Main->view()->update(); } } void PropertiesDock::on_SelectionList_itemDoubleClicked(QListWidgetItem* item) { int i=item->data(Qt::UserRole).toUInt(); PendingSelectionChange = i; // changing directly from this method would delete the current Ui from // which this slot is called QTimer::singleShot(0,this,SLOT(executePendingSelectionChange())); } void PropertiesDock::executePendingSelectionChange() { if (PendingSelectionChange < FullSelection.size()) setSelection(FullSelection[PendingSelectionChange]); } void PropertiesDock::cleanUpUi() { if (NowShowing == RelationUiShowing) { RelationUi.MembersView->setModel(0); Relation* R = dynamic_cast<Relation*>(FullSelection[0]); R->releaseMemberModel(); } } void PropertiesDock::switchUi() { if (CurrentTagView) M_PREFS->setTagListFirstColumnWidth(qMax(CurrentTagView->columnWidth(0), 20)); if (FullSelection.size() == 0) switchToNoUi(); else if (FullSelection.size() == 1) { if (FullSelection[0]->isVirtual()) switchToNoUi(); else if (CAST_NODE(FullSelection[0])) switchToNodeUi(); else if (CAST_WAY(FullSelection[0])) switchToWayUi(); else if (CAST_RELATION(FullSelection[0])) switchToRelationUi(); else switchToNoUi(); } else switchToMultiUi(); resetValues(); } void PropertiesDock::switchToMultiUi() { if (NowShowing == MultiShowing) return; NowShowing = MultiShowing; QWidget* NewUi = new QWidget(this); MultiUi.setupUi(NewUi); MultiUi.TagView->verticalHeader()->hide(); MultiUi.SelectionList->setContextMenuPolicy(Qt::CustomContextMenu); MultiUi.lbStatus->setText(tr("Selected items")); setWidget(NewUi); if (CurrentUi) CurrentUi->deleteLater(); CurrentUi = NewUi; connect(MultiUi.RemoveTagButton,SIGNAL(clicked()),this, SLOT(on_RemoveTagButton_clicked())); connect(MultiUi.SelectionList,SIGNAL(itemSelectionChanged()),this,SLOT(on_SelectionList_itemSelectionChanged())); connect(MultiUi.SelectionList,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(on_SelectionList_itemDoubleClicked(QListWidgetItem*))); connect(MultiUi.SelectionList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_SelectionList_customContextMenuRequested(const QPoint &))); setWindowTitle(tr("Properties - Multiple elements")); } void PropertiesDock::switchToNodeUi() { NowShowing = TrackPointUiShowing; QWidget* NewUi = new QWidget(this); TrackPointUi.setupUi(NewUi); TrackPointUi.TagView->verticalHeader()->hide(); setWidget(NewUi); if (CurrentUi) CurrentUi->deleteLater(); CurrentUi = NewUi; connect(TrackPointUi.Longitude,SIGNAL(editingFinished()),this, SLOT(on_TrackPointLon_editingFinished())); connect(TrackPointUi.Latitude,SIGNAL(editingFinished()),this, SLOT(on_TrackPointLat_editingFinished())); connect(TrackPointUi.RemoveTagButton,SIGNAL(clicked()),this, SLOT(on_RemoveTagButton_clicked())); connect(TrackPointUi.SourceTagButton,SIGNAL(clicked()),this, SLOT(on_SourceTagButton_clicked())); setWindowTitle(tr("Properties - Node")); } void PropertiesDock::switchToWayUi() { NowShowing = RoadUiShowing; QWidget* NewUi = new QWidget(this); RoadUi.setupUi(NewUi); RoadUi.TagView->verticalHeader()->hide(); setWidget(NewUi); if (CurrentUi) CurrentUi->deleteLater(); CurrentUi = NewUi; connect(RoadUi.RemoveTagButton,SIGNAL(clicked()),this, SLOT(on_RemoveTagButton_clicked())); connect(RoadUi.SourceTagButton,SIGNAL(clicked()),this, SLOT(on_SourceTagButton_clicked())); setWindowTitle(tr("Properties - Road")); } void PropertiesDock::switchToRelationUi() { NowShowing = RelationUiShowing; QWidget* NewUi = new QWidget(this); RelationUi.setupUi(NewUi); RelationUi.TagView->verticalHeader()->hide(); setWidget(NewUi); if (CurrentUi) CurrentUi->deleteLater(); CurrentUi = NewUi; RelationUi.MembersView->setContextMenuPolicy(Qt::CustomContextMenu); connect(RelationUi.MembersView, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_Member_customContextMenuRequested(const QPoint &))); connect(RelationUi.MembersView, SIGNAL(clicked(QModelIndex)), this, SLOT(on_Member_clicked(QModelIndex))); connect(RelationUi.RemoveMemberButton,SIGNAL(clicked()),this, SLOT(on_RemoveMemberButton_clicked())); connect(RelationUi.RemoveTagButton,SIGNAL(clicked()),this, SLOT(on_RemoveTagButton_clicked())); connect(RelationUi.SourceTagButton,SIGNAL(clicked()),this, SLOT(on_SourceTagButton_clicked())); connect(RelationUi.btMemberUp, SIGNAL(clicked()), SLOT(on_btMemberUp_clicked())); connect(RelationUi.btMemberDown, SIGNAL(clicked()), SLOT(on_btMemberDown_clicked())); setWindowTitle(tr("Properties - Relation")); } void PropertiesDock::switchToNoUi() { if (NowShowing == NoUiShowing) return; NowShowing = NoUiShowing; QWidget* NewUi = new QWidget(this); setWidget(NewUi); if (CurrentUi) CurrentUi->deleteLater(); CurrentUi = NewUi; setWindowTitle(tr("Properties")); } void PropertiesDock::resetValues() { Highlighted.clear(); // Tables that might need column sizing CurrentTagView = NULL; CurrentMembersView = NULL; // to prevent slots to change the values also QList<Feature*> Current = Selection; Selection.clear(); if (FullSelection.size() == 1) { Main->info()->setHtml(FullSelection[0]->toHtml()); Node* Pt = dynamic_cast<Node*>(FullSelection[0]); Way* R = dynamic_cast<Way*>(FullSelection[0]); Relation* L = dynamic_cast<Relation*>(FullSelection[0]); if ((Pt) && (NowShowing == TrackPointUiShowing)) { TrackPointUi.Id->setText(QString::number(Pt->id().numId)); TrackPointUi.Latitude->setText(COORD2STRING(Pt->position().y())); TrackPointUi.Longitude->setText(COORD2STRING(Pt->position().x())); TrackPointUi.TagView->setModel(theModel); TrackPointUi.TagView->setItemDelegate(delegate); QWidget* w; for (int i=0; i<TrackPointUi.variableLayout->count(); ++i) { w = TrackPointUi.variableLayout->itemAt(i)->widget(); if (w) { w->hide(); w->deleteLater(); } } if (theTemplates) { w = theTemplates->getWidget(Pt, Main->view()); w->installEventFilter(shortcutFilter); TrackPointUi.variableLayout->addWidget(w); } CurrentTagView = TrackPointUi.TagView; #ifdef GEOIMAGE Main->geoImage()->setImage(Pt); #endif } else if ((R) && (NowShowing == RoadUiShowing)) { RoadUi.Id->setText(QString::number(R->id().numId)); //RoadUi.Name->setText(R->tagValue("name","")); RoadUi.TagView->setModel(theModel); RoadUi.TagView->setItemDelegate(delegate); QWidget* w; for (int i=0; i<RoadUi.variableLayout->count(); ++i) { w = RoadUi.variableLayout->itemAt(i)->widget(); if (w) { w->hide(); w->deleteLater(); } } if (theTemplates) { w = theTemplates->getWidget(R, Main->view()); w->installEventFilter(shortcutFilter); RoadUi.variableLayout->addWidget(w); } CurrentTagView = RoadUi.TagView; } else if ((L) && (NowShowing == RelationUiShowing)) { RelationUi.MembersView->setModel(L->referenceMemberModel(Main)); RelationUi.TagView->setModel(theModel); RelationUi.TagView->setItemDelegate(delegate); QWidget* w; for (int i=0; i<RelationUi.variableLayout->count(); ++i) { w = RelationUi.variableLayout->itemAt(i)->widget(); if (w) { w->hide(); w->deleteLater(); } } if (theTemplates) { w = theTemplates->getWidget(L, Main->view()); w->installEventFilter(shortcutFilter); RelationUi.variableLayout->addWidget(w); } CurrentTagView = RelationUi.TagView; CurrentMembersView = RelationUi.MembersView; } if (theTemplates) theTemplates->apply(FullSelection[0]); } else if ((FullSelection.size() > 1) && (NowShowing == MultiShowing)) { Main->info()->setHtml(""); #ifdef GEOIMAGE Main->geoImage()->setImage((Node *)NULL); #endif MultiUi.TagView->setModel(theModel); MultiUi.TagView->setItemDelegate(delegate); CurrentTagView = MultiUi.TagView; } theModel->setFeature(Current); Selection = Current; checkMenuStatus(); /* If we have standard TableViews in the current UI, set it so that the */ /* first column is the width of the default text (Edit this to add...) */ /* And the rest of the space is assigned to the second column */ if (CurrentTagView) { if (M_PREFS->getTagListFirstColumnWidth() > 20 && M_PREFS->getTagListFirstColumnWidth() < CurrentTagView->width()) CurrentTagView->setColumnWidth( 0, M_PREFS->getTagListFirstColumnWidth() ); else CurrentTagView->setColumnWidth( 0, CurrentTagView->fontMetrics().width(theModel->newKeyText())+10 ); CurrentTagView->horizontalHeader()->setStretchLastSection(true); CurrentTagView->installEventFilter(shortcutFilter); } if (CurrentMembersView) { CurrentMembersView->setColumnWidth( 0, CurrentMembersView->fontMetrics().width(theModel->newKeyText())+10 ); CurrentMembersView->horizontalHeader()->setStretchLastSection(true); CurrentMembersView->installEventFilter(shortcutFilter); } } void PropertiesDock::on_TrackPointLat_editingFinished() { if (TrackPointUi.Latitude->text().isEmpty()) return; Node* Pt = dynamic_cast<Node*>(selection(0)); if (Pt) { Main->document()->addHistory( new MoveNodeCommand(Pt, Coord(Pt->position().x(), TrackPointUi.Latitude->text().toDouble()), Main->document()->getDirtyOrOriginLayer(Pt->layer()) )); Main->invalidateView(false); } } void PropertiesDock::on_TrackPointLon_editingFinished() { if (TrackPointUi.Longitude->text().isEmpty()) return; Node* Pt = dynamic_cast<Node*>(selection(0)); if (Pt) { Main->document()->addHistory( new MoveNodeCommand(Pt, Coord(TrackPointUi.Longitude->text().toDouble(), Pt->position().y()), Main->document()->getDirtyOrOriginLayer(Pt->layer()) )); Main->invalidateView(false); } } void PropertiesDock::on_tag_changed(QString k, QString v) { if (!FullSelection.size()) return; Feature* F = FullSelection[0]; if (F->tagValue(k, "__NULL__") != v) { Main->document()->addHistory(new SetTagCommand(F,k,v,Main->document()->getDirtyOrOriginLayer(F->layer()))); Main->invalidateView(); } } void PropertiesDock::on_tag_cleared(QString k) { if (!FullSelection.size()) return; Feature* F = FullSelection[0]; Main->document()->addHistory(new ClearTagCommand(F,k,Main->document()->getDirtyOrOriginLayer(F->layer()))); Main->invalidateView(); } void PropertiesDock::on_RemoveTagButton_clicked() { QTableView* TagTable = 0; switch (NowShowing) { case TrackPointUiShowing: TagTable = TrackPointUi.TagView; break; case RoadUiShowing: TagTable = RoadUi.TagView; break; case MultiShowing: TagTable = MultiUi.TagView; break; case RelationUiShowing: TagTable = RelationUi.TagView; break; default: break; } if (!TagTable) return; QModelIndexList indexes = TagTable->selectionModel()->selectedIndexes(); if (indexes.isEmpty()) return; CommandList *L = 0; if (indexes.count()==1) { QModelIndex index = indexes.at(0); QModelIndex idx = index.sibling(index.row(),0); QVariant Content(theModel->data(idx,Qt::DisplayRole)); if (Content.isValid()) { QString KeyName = Content.toString(); L = new CommandList(MainWindow::tr("Clear Tag '%1' on %2").arg(KeyName).arg(Selection[0]->id().numId), Selection[0]); for (int i=0; i<Selection.size(); ++i) if (Selection[i]->findKey(KeyName) != -1) L->add(new ClearTagCommand(Selection[i],KeyName,Main->document()->getDirtyOrOriginLayer(Selection[i]->layer()))); } } else { L = new CommandList(MainWindow::tr("Clear %1 tags on %2").arg(indexes.count()).arg(Selection[0]->id().numId), Selection[0]); while (!indexes.isEmpty()) { QModelIndex index = indexes.takeLast(); QModelIndex idx = index.sibling(index.row(),0); QVariant Content(theModel->data(idx,Qt::DisplayRole)); if (Content.isValid()) { QString KeyName = Content.toString(); for (int i=0; i<Selection.size(); ++i) if (Selection[i]->findKey(KeyName) != -1) L->add(new ClearTagCommand(Selection[i],KeyName,Main->document()->getDirtyOrOriginLayer(Selection[i]->layer()))); } } } if (!L) return; if (L->empty()) { delete L; } else { Main->document()->addHistory(L); Main->invalidateView(); } } void PropertiesDock::on_SourceTagButton_clicked() { QStringList sl = Main->document()->getCurrentSourceTags(); if (!sl.size()) return; QString src = Selection[0]->tagValue("source", ""); if (!src.isEmpty()) sl.prepend(src); CommandList* L = new CommandList(MainWindow::tr("Set \"source\" tag on %1").arg(Selection[0]->id().numId), Selection[0]); L->add(new SetTagCommand(Selection[0], "source", sl.join(";"))); Main->document()->addHistory(L); Main->invalidateView(); } void PropertiesDock::on_RemoveMemberButton_clicked() { if (CurrentMembersView) { Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { QModelIndexList indexes = CurrentMembersView->selectionModel()->selectedIndexes(); QModelIndex index; foreach(index, indexes) { QModelIndex idx = index.sibling(index.row(),0); QVariant Content(R->referenceMemberModel(Main)->data(idx,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) { CommandList* L = new CommandList(MainWindow::tr("Remove member '%1' on %2").arg(F->description()).arg(R->description()), R); if (R->find(F) < R->size()) L->add(new RelationRemoveFeatureCommand(R,F,Main->document()->getDirtyOrOriginLayer(R->layer()))); if (L->empty()) delete L; else { Main->document()->addHistory(L); Main->invalidateView(); return; } } } } } } } void PropertiesDock::on_Member_customContextMenuRequested(const QPoint & pos) { QModelIndex ix = CurrentMembersView->indexAt(pos); if (ix.isValid()) { QMenu menu(CurrentMembersView); menu.addAction(centerAction); menu.addAction(centerZoomAction); menu.addAction(selectAction); menu.exec(CurrentMembersView->mapToGlobal(pos)); } } void PropertiesDock::on_Member_clicked(const QModelIndex & index) { Highlighted.clear(); Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { QVariant Content(R->referenceMemberModel(Main)->data(index,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) Highlighted.push_back(F); } } Main->view()->update(); } void PropertiesDock::on_Member_selected() { QList<Feature*> Features; Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { QModelIndexList indexes = CurrentMembersView->selectionModel()->selectedIndexes(); QModelIndex index; foreach(index, indexes) { QModelIndex idx = index.sibling(index.row(),0); QVariant Content(R->referenceMemberModel(Main)->data(idx,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) { Features.append(F); } } } if (!Features.isEmpty()) setMultiSelection(Features); } Main->invalidateView(false); } void PropertiesDock::on_btMemberUp_clicked() { Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { CommandList* theList = new CommandList(MainWindow::tr("Reorder members in relation %1").arg(R->id().numId), R); QModelIndex index; foreach(index, CurrentMembersView->selectionModel()->selectedIndexes()) { CurrentMembersView->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); } QModelIndexList indexes = CurrentMembersView->selectionModel()->selectedRows(0); QModelIndexList newSel; foreach(index, indexes) { QVariant Content(R->referenceMemberModel(Main)->data(index,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) { int pos = R->find(F); if (!pos) break; QString role = R->getRole(pos); theList->add(new RelationRemoveFeatureCommand(R, pos, Main->document()->getDirtyOrOriginLayer(R->layer()))); theList->add(new RelationAddFeatureCommand(R, role, F, pos-1, Main->document()->getDirtyOrOriginLayer(R->layer()))); newSel.append(CurrentMembersView->model()->index(pos-1, 0)); } } } CurrentMembersView->selectionModel()->clearSelection(); foreach(index, newSel) { CurrentMembersView->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); } if (theList->empty()) delete theList; else { Main->document()->addHistory(theList); Main->invalidateView(); } } } void PropertiesDock::on_btMemberDown_clicked() { Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { CommandList* theList = new CommandList(MainWindow::tr("Reorder members in relation %1").arg(R->id().numId), R); QModelIndex index; foreach(index, CurrentMembersView->selectionModel()->selectedIndexes()) { CurrentMembersView->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); } QModelIndexList indexes = CurrentMembersView->selectionModel()->selectedRows(0); QModelIndexList newSel; // We need to iterate backwards so that earlier moves don't corrupt the inputs to later ones for (int i = indexes.count()-1; i >= 0; i--) { index = indexes[i]; QVariant Content(R->referenceMemberModel(Main)->data(index,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) { int pos = R->find(F); if (pos >= R->size()-1) break; QString role = R->getRole(pos); theList->add(new RelationRemoveFeatureCommand(R, pos, Main->document()->getDirtyOrOriginLayer(R->layer()))); theList->add(new RelationAddFeatureCommand(R, role, F, pos+1, Main->document()->getDirtyOrOriginLayer(R->layer()))); newSel.append(CurrentMembersView->model()->index(pos+1, 0)); } } } CurrentMembersView->selectionModel()->clearSelection(); foreach(index, newSel) { CurrentMembersView->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); } if (theList->empty()) delete theList; else { Main->document()->addHistory(theList); Main->invalidateView(); } } } void PropertiesDock::on_SelectionList_customContextMenuRequested(const QPoint & pos) { QListWidgetItem *it = MultiUi.SelectionList->itemAt(pos); if (it) { QMenu menu(MultiUi.SelectionList); menu.addAction(centerAction); menu.addAction(centerZoomAction); menu.exec(MultiUi.SelectionList->mapToGlobal(pos)); } } void PropertiesDock::on_centerAction_triggered() { CoordBox cb; if (CurrentMembersView) { Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { QModelIndexList indexes = CurrentMembersView->selectionModel()->selectedIndexes(); QModelIndex index; foreach(index, indexes) { QModelIndex idx = index.sibling(index.row(),0); QVariant Content(R->referenceMemberModel(Main)->data(idx,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) { //setSelection(F); cb = F->boundingBox(); } } } } } else if (CurrentTagView) { Main->setUpdatesEnabled(false); int idx = MultiUi.SelectionList->selectedItems()[0]->data(Qt::UserRole).toUInt(); cb = FullSelection[idx]->boundingBox(); for (int i=1; i < MultiUi.SelectionList->selectedItems().size(); i++) { idx = MultiUi.SelectionList->selectedItems()[i]->data(Qt::UserRole).toUInt(); cb.merge(FullSelection[idx]->boundingBox()); } } Coord c = cb.center(); Main->view()->setCenter(c, Main->view()->rect()); Main->setUpdatesEnabled(true); Main->invalidateView(false); } void PropertiesDock::on_centerZoomAction_triggered() { CoordBox cb; if (CurrentMembersView) { Relation* R = dynamic_cast<Relation*>(Selection[0]); if (R) { QModelIndexList indexes = CurrentMembersView->selectionModel()->selectedIndexes(); QModelIndex index; foreach(index, indexes) { QModelIndex idx = index.sibling(index.row(),0); QVariant Content(R->referenceMemberModel(Main)->data(idx,Qt::UserRole)); if (Content.isValid()) { Feature* F = Content.value<Feature*>(); if (F) { //setSelection(F); cb = F->boundingBox(); CoordBox mini(cb.center()-COORD_ENLARGE, cb.center()+COORD_ENLARGE); cb.merge(mini); cb = cb.zoomed(1.1); } } } } } else if (CurrentTagView) { Main->setUpdatesEnabled(false); int idx = MultiUi.SelectionList->selectedItems()[0]->data(Qt::UserRole).toUInt(); cb = FullSelection[idx]->boundingBox(); for (int i=1; i < MultiUi.SelectionList->selectedItems().size(); i++) { idx = MultiUi.SelectionList->selectedItems()[i]->data(Qt::UserRole).toUInt(); cb.merge(FullSelection[idx]->boundingBox()); } CoordBox mini(cb.center()-COORD_ENLARGE, cb.center()+COORD_ENLARGE); cb.merge(mini); cb = cb.zoomed(1.1); } Main->view()->setViewport(cb, Main->view()->rect()); Main->setUpdatesEnabled(true); Main->invalidateView(false); } bool PropertiesDock::loadTemplates(const QString& filename) { SAFE_DELETE(theTemplates); QFile File; if (!filename.isEmpty()) File.setFileName(filename); else File.setFileName(M_PREFS->getDefaultTemplate()); if (!File.open(QIODevice::ReadOnly)) { qDebug() << tr("Error reading template file"); return false; } QDomDocument DomDoc; QString ErrorStr; int ErrorLine; int ErrorColumn; if (!DomDoc.setContent(&File, true, &ErrorStr, &ErrorLine,&ErrorColumn)) { File.close(); QMessageBox::warning(Main,"Parse error", QString("Parse error at line %1, column %2:\n%3") .arg(ErrorLine) .arg(ErrorColumn) .arg(ErrorStr)); return false; } QDomElement root = DomDoc.documentElement(); theTemplates = TagTemplates::fromXml(root); if (theTemplates) { connect(theTemplates, SIGNAL(tagChanged(QString, QString)), this, SLOT(on_tag_changed(QString, QString))); connect(theTemplates, SIGNAL(tagCleared(QString)), this, SLOT(on_tag_cleared(QString))); connect(theTemplates, SIGNAL(templateChanged(TagTemplate*)), this, SLOT(on_template_changed(TagTemplate*))); } else { QMessageBox::warning(Main,"Template read error", "Error parsing template file"); return false; } return true; } bool PropertiesDock::mergeTemplates(const QString& filename) { QFile File; if (!filename.isEmpty()) File.setFileName(filename); else return false; if (!File.open(QIODevice::ReadOnly)) { QMessageBox::warning(Main,"Template read error", "Error reading template file"); return false; } QDomDocument DomDoc; QString ErrorStr; int ErrorLine; int ErrorColumn; if (!DomDoc.setContent(&File, true, &ErrorStr, &ErrorLine,&ErrorColumn)) { File.close(); QMessageBox::warning(Main,"Parse error", QString("Parse error at line %1, column %2:\n%3") .arg(ErrorLine) .arg(ErrorColumn) .arg(ErrorStr)); return false; } QDomElement root = DomDoc.documentElement(); if (!theTemplates->mergeXml(root)) { QMessageBox::warning(Main,"Template read error", "Error parsing template file"); return false; } return true; } bool PropertiesDock::saveTemplates(const QString& filename) { if (!theTemplates) return false; QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); if (!theTemplates->toXML(theXmlDoc)) { QMessageBox::warning(Main,"Tag templates write error", "Unable to generate XML document"); return false; } QFile File(filename); if (!File.open(QIODevice::WriteOnly)) { QMessageBox::warning(Main,"Tag templates write error", "Error opening template file for writing"); return false; } File.write(theXmlDoc.toString().toUtf8()); return true; } void PropertiesDock::on_template_changed(TagTemplate* /* aNewTemplate */) { resetValues(); } void PropertiesDock::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void PropertiesDock::retranslateUi() { setWindowTitle(tr("Properties")); centerAction->setText(tr("Center map")); centerZoomAction->setText(tr("Center && Zoom map")); selectAction->setText(tr("Select member")); } int PropertiesDock::highlightedSize() const { if (!isVisible()) return 0; return Highlighted.size(); } Feature* PropertiesDock::highlighted(int idx) { if (idx < Highlighted.size()) return Highlighted[idx]; return 0; } QList<Feature*> PropertiesDock::highlighted() { return Highlighted; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/PropertiesDock.h��������������������������������������������������������0000664�0000000�0000000�00000007526�11770671653�0020737�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_PROPERTIESDOCK_H_ #define MERKATOR_PROPERTIESDOCK_H_ #include <ui_MinimumTrackPointProperties.h> #include <ui_MinimumRelationProperties.h> #include <ui_MinimumRoadProperties.h> #include <ui_MultiProperties.h> #include <QList> #include "MDockAncestor.h" #include "ShortcutOverrideFilter.h" class MainWindow; class Feature; class TagModel; class EditCompleterDelegate; class TagTemplates; class TagTemplate; class CommandList; class PropertiesDock : public MDockAncestor { Q_OBJECT public: PropertiesDock(MainWindow* aParent); public: ~PropertiesDock(void); void setSelection(Feature* aFeature); void setMultiSelection(Feature* aFeature); template<class T> void setSelection(const QList<T*>& aFeatureList); void setMultiSelection(const QList<Feature*>& aFeatureList); void toggleSelection(Feature* aFeature); void addSelection(Feature* aFeature); Feature* selection(int idx); QList<Feature*> selection(); bool isSelected(Feature *aFeature); int selectionSize() const; void resetValues(); void checkMenuStatus(); bool loadTemplates(const QString& filename = ""); bool mergeTemplates(const QString& filename = ""); bool saveTemplates(const QString& filename); Feature* highlighted(int idx); QList<Feature*> highlighted(); int highlightedSize() const; public slots: void on_TrackPointLat_editingFinished(); void on_TrackPointLon_editingFinished(); void on_Member_customContextMenuRequested(const QPoint & pos); void on_Member_clicked(const QModelIndex & index); void on_Member_selected(); void on_btMemberUp_clicked(); void on_btMemberDown_clicked(); void on_RemoveMemberButton_clicked(); void on_RemoveTagButton_clicked(); void on_SourceTagButton_clicked(); void on_SelectionList_itemSelectionChanged(); void on_SelectionList_itemDoubleClicked(QListWidgetItem* item); void executePendingSelectionChange(); void on_SelectionList_customContextMenuRequested(const QPoint & pos); void on_centerAction_triggered(); void on_centerZoomAction_triggered(); void on_tag_changed(QString k, QString v); void on_tag_cleared(QString k); void on_template_changed(TagTemplate* aNewTemplate); void adjustSelection(); private: void cleanUpUi(); void switchUi(); void switchToNoUi(); void switchToNodeUi(); void switchToWayUi(); void switchToMultiUi(); void switchToRelationUi(); void fillMultiUiSelectionBox(); void changeEvent(QEvent*); void retranslateUi(); MainWindow* Main; QWidget* CurrentUi; QList<Feature*> Selection; QList<Feature*> FullSelection; Ui::TrackPointProperties TrackPointUi; Ui::RoadProperties RoadUi; Ui::MultiProperties MultiUi; Ui::RelationProperties RelationUi; TagModel* theModel; int PendingSelectionChange; EditCompleterDelegate* delegate; QAction* centerAction; QAction* centerZoomAction; QAction* selectAction; ShortcutOverrideFilter* shortcutFilter; TagTemplates* theTemplates; QList<Feature*> Highlighted; QTableView *CurrentTagView; QTableView *CurrentMembersView; enum { NoUiShowing, TrackPointUiShowing, RoadUiShowing, RelationUiShowing, MultiShowing } NowShowing ; }; template<class T> void PropertiesDock::setSelection(const QList<T*>& aFeatureList) { cleanUpUi(); Selection.clear(); for (int i=0; i<aFeatureList.size(); ++i) Selection.push_back(aFeatureList[i]); FullSelection = Selection; switchUi(); fillMultiUiSelectionBox(); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/StyleDock.cpp�����������������������������������������������������������0000664�0000000�0000000�00000004616�11770671653�0020233�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: StyleDock // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "StyleDock.h" #include "MainWindow.h" #include "MapView.h" #include "Document.h" #include "Feature.h" #include <QAction> StyleDock::StyleDock(MainWindow* aParent) : MDockAncestor(aParent), Main(aParent) { setMinimumSize(220,100); setObjectName("StyleDock"); ui.setupUi(getWidget()); connect(ui.StyleList, SIGNAL(itemSelectionChanged()), this, SLOT(on_StyleList_itemSelectionChanged())); connect(ui.StyleList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(on_StyleList_itemDoubleClicked(QListWidgetItem*))); connect(ui.StyleList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_StyleList_customContextMenuRequested(const QPoint &))); retranslateUi(); } StyleDock::~StyleDock() { } void StyleDock::clearItems() { ui.StyleList->blockSignals(true); ui.StyleList->clear(); ui.StyleList->blockSignals(false); } void StyleDock::addItem(QAction* a) { ui.StyleList->blockSignals(true); QListWidgetItem* it = new QListWidgetItem(a->text()); it->setData(Qt::UserRole, qVariantFromValue((void *)a)); ui.StyleList->addItem(it); if (a->data().toString() == M_PREFS->getDefaultStyle()) ui.StyleList->setCurrentItem(it); ui.StyleList->blockSignals(false); } void StyleDock::setCurrent(QAction* a) { ui.StyleList->blockSignals(true); for (int i=0; i < ui.StyleList->count(); i++) { if (ui.StyleList->item(i)->data(Qt::UserRole).value<void *>() == a) { ui.StyleList->setCurrentRow(i); break; } } ui.StyleList->blockSignals(false); } void StyleDock::on_StyleList_itemSelectionChanged() { QListWidgetItem* item = ui.StyleList->currentItem(); QAction * a = (QAction *)item->data(Qt::UserRole).value<void *>(); a->trigger(); } void StyleDock::on_StyleList_itemDoubleClicked(QListWidgetItem* item) { Q_UNUSED(item) } void StyleDock::on_StyleList_customContextMenuRequested(const QPoint & pos) { Q_UNUSED(pos) } void StyleDock::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void StyleDock::retranslateUi() { ui.retranslateUi(getWidget()); setWindowTitle(tr("Styles")); } ������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/StyleDock.h�������������������������������������������������������������0000664�0000000�0000000�00000001544�11770671653�0017675�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: StyleList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef STYLEDOCK_H #define STYLEDOCK_H #include "MDockAncestor.h" #include "ui_StyleDock.h" class MainWindow; class QAction; class StyleDock : public MDockAncestor { Q_OBJECT public: StyleDock(MainWindow* aParent); ~StyleDock(); void setCurrent(QAction * a); //void updateList(); void clearItems(); void addItem(QAction* a); public slots: void on_StyleList_itemSelectionChanged(); void on_StyleList_itemDoubleClicked(QListWidgetItem* item); void on_StyleList_customContextMenuRequested(const QPoint & pos); private: MainWindow* Main; Ui::StyleDockWidget ui; public: void changeEvent(QEvent*); void retranslateUi(); }; #endif // STYLEDOCK_H ������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Docks/StyleDock.ui������������������������������������������������������������0000664�0000000�0000000�00000002256�11770671653�0020064�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>StyleDockWidget</class> <widget class="QWidget" name="StyleDockWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>459</height> </rect> </property> <property name="windowTitle"> <string>Styles</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <item> <widget class="QListWidget" name="StyleList"> <property name="contextMenuPolicy"> <enum>Qt::CustomContextMenu</enum> </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> </property> </widget> </item> </layout> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/���������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016332�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Feature.cpp����������������������������������������������������������0000664�0000000�0000000�00000066546�11770671653�0020452�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "MainWindow.h" #include "Features.h" #include "Command.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "RelationCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Document.h" #include "Layer.h" #include "MasPaintStyle.h" #include "TagSelector.h" #include "MapView.h" #include "PropertiesDock.h" #include "Utils.h" #include <QApplication> #include <QUuid> #include <QProgressDialog> #include <QPainter> #include <QPainterPath> #include <algorithm> qint64 g_feat_rndId = 0; QStringList TechnicalTags = QString(TECHNICAL_TAGS).split("#"); IFeature::FId Feature::newId(IFeature::FeatureType type) const { IFeature::FId id = IFeature::FId(type, --g_feat_rndId); return id; } //static QString randomId() //{ // QUuid uuid = QUuid::createUuid(); //#ifdef _MOBILE // return uuid.toString(); //#else // // This is fairly horrible, but it's also around 10 times faster than QUuid::toString() // // and randomId() is called a lot during large imports // // // Lookup table of hex value-pairs representing a byte // static char hex[(2*256)+1] = "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"; // // char buffer[39] = "{________-____-____-____-____________}"; // // // // // {__%08x__-____-____-____-____________} // memcpy(&buffer[ 1], &hex[((uuid.data1 >> 24) & 0xFF)], 2); // memcpy(&buffer[ 3], &hex[((uuid.data1 >> 16) & 0xFF)], 2); // memcpy(&buffer[ 5], &hex[((uuid.data1 >> 8) & 0xFF)], 2); // memcpy(&buffer[ 7], &hex[((uuid.data1 >> 0) & 0xFF)], 2); // // // {________-%04x-____-____-____________} // memcpy(&buffer[10], &hex[((uuid.data2 >> 8) & 0xFF)], 2); // memcpy(&buffer[12], &hex[((uuid.data2 >> 0) & 0xFF)], 2); // // // {________-____-%04x-____-____________} // memcpy(&buffer[15], &hex[((uuid.data3 >> 8) & 0xFF)], 2); // memcpy(&buffer[17], &hex[((uuid.data3 >> 0) & 0xFF)], 2); // // // {________-____-____-%04x-____________} // memcpy(&buffer[20], &hex[uuid.data4[0]], 2); // memcpy(&buffer[22], &hex[uuid.data4[1]], 2); // // // {________-____-____-____-___%012x____} // for (int i=0; i<6; i++) { // memcpy(&buffer[25+(i*2)], &hex[uuid.data4[i+2]], 2); // } // // return QString::fromAscii(buffer,38); //#endif //} namespace boost { void intrusive_ptr_add_ref(Feature * p) { ++(p->m_references); } void intrusive_ptr_release(Feature * p) { if (--(p->m_references) == 0) { if (p->layer()) p->layer()->deleteFeature(p); else delete p; } } } // namespace boost void copyTags(Feature* Dest, Feature* Src) { for (int i=0; i<Src->tagSize(); ++i) Dest->setTag(Src->tagKey(i),Src->tagValue(i)); } class FeaturePrivate { public: FeaturePrivate(Feature* aFeature) : LastActor(Feature::User) , PossiblePaintersUpToDate(false) , PixelPerMForPainter(-1), CurrentPainter(0), HasPainter(false) , theFeature(aFeature), LastPartNotification(0) , Deleted(false), Visible(true), Uploaded(false), FilterRevision(-1) , Virtual(false), Special(false), DirtyLevel(0) , parentLayer(0) #ifndef FRISIUS_BUILD , Time(QDateTime::currentDateTime().toTime_t()), User(0xffffffff) #endif { #ifndef FRISIUS_BUILD initVersionNumber(); // qDebug() << "MapFeaturePrivate size: " << sizeof(FeaturePrivate) << sizeof(IFeature::FId) << sizeof(RenderPriority); #endif } FeaturePrivate(const FeaturePrivate& other) : Tags(other.Tags), LastActor(other.LastActor) , PossiblePaintersUpToDate(false) , PixelPerMForPainter(-1), CurrentPainter(0), HasPainter(false) , theFeature(NULL), LastPartNotification(0) , Deleted(false), Visible(true), Uploaded(false), FilterRevision(-1) , Virtual(other.Virtual), Special(other.Special), DirtyLevel(0) , parentLayer(0) #ifndef FRISIUS_BUILD , Time(other.Time), User(other.User) #endif { #ifndef FRISIUS_BUILD initVersionNumber(); #endif } void updatePossiblePainters(); void blankPainters(); void updatePainters(qreal PixelPerM); #ifndef FRISIUS_BUILD void initVersionNumber() { // static int VN = -1; // VersionNumber = VN--; VersionNumber = 0; } #endif mutable IFeature::FId Id; // 9 (16) QList<QPair<quint32, quint32> > Tags; // 4 Feature::ActorType LastActor; // 4 QList<const FeaturePainter*> PossiblePainters; // 4 bool PossiblePaintersUpToDate; // 1 qreal PixelPerMForPainter; // 8 const FeaturePainter* CurrentPainter; // 4 bool HasPainter; // 1 Feature* theFeature; // 4 QList<Feature*> Parents; // 4 int LastPartNotification; // 4 #ifndef FRISIUS_BUILD uint Time; // 4 quint32 User; // 4 int VersionNumber; // 4 #endif bool Deleted; // 1 bool Visible; // 1 bool Uploaded; // 1 int FilterRevision; // 4 bool Virtual; // 1 bool Special; // 1 int DirtyLevel; // 4 QList<FilterLayer*> FilterLayers; // 4 qreal Alpha; // 8 Layer* parentLayer; // 4 }; Feature::Feature() : p(0), MetaUpToDate(false), m_references(0), ReadOnly(false) { p = new FeaturePrivate(this); p->Id = IFeature::FId(IFeature::Uninitialized, 0); // qDebug() << "Feature size: " << sizeof(Feature); } Feature::Feature(const Feature& other) : IFeature(other), MetaUpToDate(false), m_references(0), ReadOnly(other.ReadOnly) { p = new FeaturePrivate(*other.p); p->Id = IFeature::FId(IFeature::Uninitialized, 0); p->theFeature = this; } Feature::~Feature(void) { // TODO Those cleanup shouldn't be necessary and lead to crashes // Check for side effect of supressing them. // while (sizeParents()) // getParent(0)->remove(this); delete p; } void Feature::setLayer(Layer* aLayer) { p->parentLayer = aLayer; } Layer* Feature::layer() const { return p->parentLayer; } void Feature::setLastUpdated(Feature::ActorType A) { p->LastActor = A; } Feature::ActorType Feature::lastUpdated() const { Layer* L = p->parentLayer; if (L && L->classType() == Layer::DirtyLayerType) return Feature::User; else return p->LastActor; } QString Feature::stripToOSMId(const IFeature::FId& id) { return QString::number(id.numId); } void Feature::setId(const IFeature::FId& id) { if (id == p->Id) return; if (p->parentLayer) { if (p->Id.type != IFeature::Uninitialized) p->parentLayer->notifyIdUpdate(p->Id,0); if (id.type != IFeature::Uninitialized) p->parentLayer->notifyIdUpdate(id,this); } p->Id = id; // Make sure any new id is unique if (id.numId < g_feat_rndId) g_feat_rndId = id.numId; } const IFeature::FId& Feature::resetId() const { p->Id = newId((IFeature::FeatureType)getType()); return p->Id; } const IFeature::FId& Feature::id() const { if (p->Id.type == IFeature::Uninitialized) resetId(); return p->Id; } QString Feature::xmlId() const { return stripToOSMId(id()); } bool Feature::hasOSMId() const { return (p->Id.numId >= 0); } #ifndef FRISIUS_BUILD const QDateTime Feature::time() const { return QDateTime::fromTime_t(p->Time); } void Feature::setTime(const QDateTime& time) { p->Time = time.toTime_t(); } void Feature::setTime(uint epoch) { p->Time = epoch; } const QString& Feature::user() const { return g_getUser(p->User); } void Feature::setUser(const QString& user) { p->User = g_setUser(user); } void Feature::setVersionNumber(int vn) { p->VersionNumber = vn; } int Feature::versionNumber() const { return p->VersionNumber; } #endif int Feature::incDirtyLevel(int inc) { return p->DirtyLevel += inc; } int Feature::decDirtyLevel(int inc) { return p->DirtyLevel -= inc; } int Feature::setDirtyLevel(int newLevel) { return (p->DirtyLevel = newLevel); } int Feature::getDirtyLevel() const { return p->DirtyLevel; } qreal Feature::getAlpha() { if (!MetaUpToDate) updateMeta(); return p->Alpha; } bool Feature::isDirty() const { if (g_Merk_Frisius) return (p->DirtyLevel > 0); if (p->parentLayer) return (p->parentLayer->classType() == Layer::DirtyLayerType); else return false; } void Feature::setUploaded(bool state) { p->Uploaded = state; } bool Feature::isUploaded() const { return p->Uploaded; } bool Feature::isUploadable() const { if (p->parentLayer) return (p->parentLayer->isUploadable()); else return false; } void Feature::setReadonly(bool val) { ReadOnly = val; } bool Feature::isReadonly() { if (!MetaUpToDate) updateMeta(); return ReadOnly; } void Feature::setDeleted(bool delState) { if (delState == p->Deleted) return; p->Deleted = delState; g_backend.sync(this); } bool Feature::isDeleted() const { return p->Deleted; } void Feature::setVisible(bool state) { if (state == p->Visible) return; p->Visible = state; } bool Feature::isVisible() { if (!MetaUpToDate) updateMeta(); return p->Visible; } bool Feature::isHidden() { if (!MetaUpToDate) updateMeta(); return !p->Visible; } void Feature::setVirtual(bool val) { if (val == p->Virtual) return; p->Virtual = val; if (!p->Virtual) { resetId(); } g_backend.sync(this); } bool Feature::isVirtual() const { return p->Virtual; } void Feature::setSpecial(bool val) { p->Special = val; } void Feature::buildPath(const Projection &) { } bool Feature::isSpecial() const { return p->Special; } void Feature::setTag(int index, const QString& key, const QString& value) { if (key.toLower() == "created_by") return; QPair<quint32, quint32> pi = g_addToTagList(key, value); int i = 0; for (; i<p->Tags.size(); ++i) if (p->Tags[i].first == pi.first) { if (p->Tags[i].second == pi.second) return; g_removeFromTagList(p->Tags[i].first, p->Tags[i].second); p->Tags[i].second = pi.second; break; } if (i == p->Tags.size()) { p->Tags.insert(p->Tags.begin() + index, pi); } invalidatePainter(); invalidateMeta(); } void Feature::setTag(const QString& key, const QString& value) { if (key.toLower() == "created_by") return; QPair<quint32, quint32> pi = g_addToTagList(key, value); int i = 0; for (; i<p->Tags.size(); ++i) if (p->Tags[i].first == pi.first) { if (p->Tags[i].second == pi.second) return; g_removeFromTagList(p->Tags[i].first, p->Tags[i].second); p->Tags[i].second = pi.second; break; } if (i == p->Tags.size()) { p->Tags.push_back(pi); } invalidateMeta(); invalidatePainter(); } void Feature::clearTags() { while (p->Tags.size()) { g_removeFromTagList(p->Tags[0].first, p->Tags[0].second); p->Tags.erase(p->Tags.begin()); } invalidateMeta(); invalidatePainter(); } void Feature::clearTag(const QString& k) { quint32 ik = g_getTagKeyIndex(k); for (int i=0; i<p->Tags.size(); ++i) if (p->Tags[i].first == ik) { g_removeFromTagList(p->Tags[i].first, p->Tags[i].second); p->Tags.erase(p->Tags.begin()+i); break; } invalidateMeta(); invalidatePainter(); } void Feature::removeTag(int idx) { g_removeFromTagList(p->Tags[idx].first, p->Tags[idx].second); p->Tags.erase(p->Tags.begin()+idx); invalidateMeta(); invalidatePainter(); } int Feature::tagSize() const { return p->Tags.size(); } QString Feature::tagValue(int i) const { return g_getTagValue(p->Tags[i].second); } QString Feature::tagKey(int i) const { return g_getTagKey(p->Tags[i].first); } int Feature::findKey(const QString &k) const { for (int i=0; i<p->Tags.size(); ++i) if (tagKey(i) == k) return i; return -1; } QString Feature::tagValue(const QString& k, const QString& Default) const { for (int i=0; i<p->Tags.size(); ++i) if (tagKey(i) == k) return tagValue(i); return Default; } void Feature::invalidateMeta() { MetaUpToDate = false; } void Feature::invalidatePainter() { p->PossiblePaintersUpToDate = false; p->PixelPerMForPainter = -1; } static QPainterPath painterPath; const QPainterPath& Feature::getPath() const { return painterPath; } void FeaturePrivate::updatePossiblePainters() { QMutexLocker mutlock(&theFeature->featMutex); //still match features with no tags and no parent, i.e. "lost" trackpoints if ( (theFeature->layer()->isTrack()) && M_PREFS->getDisableStyleForTracks() ) return blankPainters(); if ( (theFeature->layer()->isTrack()) || theFeature->sizeParents() ) { if (CHECK_NODE(theFeature) && !STATIC_CAST_NODE(theFeature)->isPOI()) return blankPainters(); if (!theFeature->tagSize()) return blankPainters(); } PossiblePainters.clear(); QList<const FeaturePainter*> DefaultPainters; for (int i=0; i<theFeature->layer()->getDocument()->getPaintersSize(); ++i) { const FeaturePainter* Current = dynamic_cast<const FeaturePainter*>(theFeature->layer()->getDocument()->getPainter(i)); switch (Current->matchesTag(theFeature,NULL)) { case TagSelect_Match: PossiblePainters.push_back(Current); break; case TagSelect_DefaultMatch: DefaultPainters.push_back(Current); break; default: break; } } if (!PossiblePainters.size()) PossiblePainters = DefaultPainters; PossiblePaintersUpToDate = true; HasPainter = (PossiblePainters.size() > 0); } void FeaturePrivate::updatePainters(qreal PixelPerM) { if (!PossiblePaintersUpToDate) updatePossiblePainters(); CurrentPainter = NULL; PixelPerMForPainter = PixelPerM; for (int i=0; i<PossiblePainters.size(); ++i) if (PossiblePainters[i]->matchesZoom(PixelPerM)) { CurrentPainter = PossiblePainters[i]; return; } } void FeaturePrivate::blankPainters() { CurrentPainter = NULL; PossiblePainters.clear(); PossiblePaintersUpToDate = true; HasPainter = false; } const FeaturePainter* Feature::getPainter(qreal PixelPerM) const { if (p->PixelPerMForPainter != PixelPerM) p->updatePainters(PixelPerM); return p->CurrentPainter; } const FeaturePainter* Feature::getCurrentPainter() const { if (p->CurrentPainter) return p->CurrentPainter; else { if (p->PossiblePainters.size()) return p->PossiblePainters[0]; else return NULL; } } bool Feature::hasPainter() const { if (!p->PossiblePaintersUpToDate) p->updatePossiblePainters(); return p->HasPainter; } bool Feature::hasPainter(qreal PixelPerM) const { if (!layer()) return false; if (p->PixelPerMForPainter != PixelPerM) p->updatePainters(PixelPerM); return (p->CurrentPainter != NULL); } void Feature::setParentFeature(Feature* F) { if (std::find(p->Parents.begin(),p->Parents.end(),F) == p->Parents.end()) p->Parents.push_back(F); } void Feature::unsetParentFeature(Feature* F) { for (int i=0; i<p->Parents.size(); ++i) if (p->Parents[i] == F) { p->Parents.erase(p->Parents.begin()+i); return; } } void Feature::updateFilters() { p->FilterLayers.clear(); Layer* L = layer(); if (!L) return; Document* D = L->getDocument(); if (!D) return; for (int i=0; i<D->layerSize(); ++i) { if (D->getLayer(i)->classType() == Layer::FilterLayerType) { FilterLayer* Fl = dynamic_cast<FilterLayer*>(D->getLayer(i)); if (!Fl->isEnabled() || !Fl->selector()) continue; if (Fl->selector()->matches(this, 0) != TagSelect_NoMatch) p->FilterLayers << Fl; } } invalidateMeta(); } void Feature::updateMeta() { updateFilters(); Layer* L = layer(); if (!L) return; if (!L->isVisible()) p->Visible = false; else { p->Visible = true; foreach(FilterLayer* Fl, p->FilterLayers) { if (!Fl->isVisible()) { p->Visible = false; break; } } } if (L->getAlpha() != 1.0) p->Alpha = L->getAlpha(); else { p->Alpha = 1.0; foreach(FilterLayer* Fl, p->FilterLayers) { if (Fl->getAlpha() != 1) { p->Alpha = Fl->getAlpha(); break; } } } if (L->isReadonly()) ReadOnly = true; else { ReadOnly = false; foreach(FilterLayer* Fl, p->FilterLayers) { if (Fl->isReadonly()) { ReadOnly = true; break; } } } } int Feature::sizeParents() const { return p->Parents.size(); } IFeature* Feature::getParent(int i) { return p->Parents[i]; } const IFeature* Feature::getParent(int i) const { return p->Parents[i]; } void Feature::notifyChanges() { static int Id = 0; notifyParents(++Id); } void Feature::notifyParents(int Id) { if (Id != p->LastPartNotification) { p->LastPartNotification = Id; for (int i=0; i<p->Parents.size(); ++i) p->Parents[i]->partChanged(this, Id); } } void Feature::drawHover(QPainter& thePainter, MapView* theView) { QPen TP(M_PREFS->getHoverColor(),M_PREFS->getHoverWidth(),Qt::SolidLine); thePainter.setPen(TP); drawSpecial(thePainter, TP, theView); drawChildrenSpecial(thePainter, TP, theView, 1); if (M_PREFS->getShowParents()) { TP.setDashPattern(M_PREFS->getParentDashes()); thePainter.setPen(TP); drawParentsSpecial(thePainter, TP, theView); } } void Feature::drawFocus(QPainter& thePainter, MapView* theView) { QPen TP(M_PREFS->getFocusColor(),M_PREFS->getFocusWidth(),Qt::SolidLine); thePainter.setPen(TP); drawSpecial(thePainter, TP, theView); drawChildrenSpecial(thePainter, TP, theView, 1); if (M_PREFS->getShowParents()) { TP.setDashPattern(M_PREFS->getParentDashes()); thePainter.setPen(TP); drawParentsSpecial(thePainter, TP, theView); } } void Feature::drawHighlight(QPainter& thePainter, MapView* theView) { QPen TP(M_PREFS->getHighlightColor(),M_PREFS->getHighlightWidth(),Qt::SolidLine); thePainter.setPen(TP); drawSpecial(thePainter, TP, theView); drawChildrenSpecial(thePainter, TP, theView, 1); if (M_PREFS->getShowParents()) { TP.setDashPattern(M_PREFS->getParentDashes()); thePainter.setPen(TP); drawParentsSpecial(thePainter, TP, theView); } } QString Feature::toXML(int lvl, QProgressDialog * progress) { QString xml; QXmlStreamWriter stream(&xml); stream.setAutoFormatting(true); stream.setAutoFormattingIndent(lvl*2); stream.writeStartDocument(); stream.writeStartElement("root"); if (toXML(stream, progress)) { stream.writeEndElement(); stream.writeEndDocument(); return xml; } else return ""; } void Feature::fromXML(QXmlStreamReader& stream, Feature* F) { bool Deleted = (stream.attributes().value("deleted") == "true"); int Dirty = (stream.attributes().hasAttribute("dirtylevel") ? stream.attributes().value("dirtylevel").toString().toInt() : 0); bool Uploaded = (stream.attributes().value("uploaded") == "true"); bool Special = (stream.attributes().value("special") == "true"); // bool Selected = (stream.attributes().value("selected") == "true"); QDateTime time; time = QDateTime::fromString(stream.attributes().value("timestamp").toString().left(19), Qt::ISODate); QString user = stream.attributes().value("user").toString(); int Version = stream.attributes().value("version").toString().toInt(); if (Version < 1) Version = 0; Feature::ActorType A = (Feature::ActorType)(stream.attributes().hasAttribute("actor") ? stream.attributes().value("actor").toString().toInt() : 2); F->setLastUpdated(A); F->setDeleted(Deleted); F->setDirtyLevel(Dirty); F->setUploaded(Uploaded); F->setSpecial(Special); #ifndef FRISIUS_BUILD F->setTime(time); F->setUser(user); F->setVersionNumber(Version); #endif // TODO Manage selection at document level // if(Selected) // g_Merk_MainWindow->properties()->addSelection(F); } void Feature::toXML(QXmlStreamWriter& stream, bool strict, QString changetsetid) { stream.writeAttribute("id", xmlId()); #ifndef FRISIUS_BUILD stream.writeAttribute("timestamp", time().toString(Qt::ISODate)+"Z"); stream.writeAttribute("version", QString::number(versionNumber())); stream.writeAttribute("user", user()); #endif if (!changetsetid.isEmpty()) stream.writeAttribute("changeset", changetsetid); if (!strict) { stream.writeAttribute("actor", QString::number((int)lastUpdated())); if (isDeleted()) stream.writeAttribute("deleted","true"); if (getDirtyLevel()) stream.writeAttribute("dirtylevel", QString::number(getDirtyLevel())); if (isUploaded()) stream.writeAttribute("uploaded","true"); if (isSpecial()) stream.writeAttribute("special","true"); // TODO Manage selection at document level #ifndef _MOBILE if (g_Merk_MainWindow && g_Merk_MainWindow->properties()->isSelected(this)) stream.writeAttribute("selected","true"); #endif } } bool Feature::tagsToXML(QXmlStreamWriter& stream, bool strict) { bool OK = true; for (int i=0; i<tagSize(); ++i) { if (strict) { if (tagKey(i).startsWith('_') && (tagKey(i).endsWith('_'))) continue; } stream.writeStartElement("tag"); stream.writeAttribute("k", tagKey(i)); stream.writeAttribute("v", tagValue(i)); stream.writeEndElement(); } return OK; } void Feature::tagsFromXML(Document* d, Feature * f, QXmlStreamReader& stream) { Q_UNUSED(d) while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "tag") { f->setTag(stream.attributes().value("k").toString(), stream.attributes().value("v").toString()); stream.readNext(); } stream.readNext(); } } Relation * Feature::GetSingleParentRelation(Feature * mapFeature) { int parents = mapFeature->sizeParents(); if (parents == 0) return NULL; Relation * parentRelation = NULL; int i; for (i=0; i<parents; i++) { Relation * rel = dynamic_cast<Relation*>(mapFeature->getParent(i)); if (!rel || rel->isDeleted()) continue; if (parentRelation) return NULL; if (rel->layer()->isEnabled()) parentRelation = rel; } return parentRelation; } //Static Node* Feature::getNodeOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id) { Node* Part = CAST_NODE(theDocument->getFeature(Id)); if (!Part) { if (!theLayer) theLayer = theDocument->getDirtyOrOriginLayer(); Part = g_backend.allocNode(theLayer, Coord(0,0)); Part->setId(Id); Part->setLastUpdated(Feature::NotYetDownloaded); theLayer->add(Part); } return Part; } TrackNode* Feature::getTrackNodeOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id) { TrackNode* Part = CAST_TRACKNODE(theDocument->getFeature(Id)); if (!Part) { if (!theLayer) theLayer = theDocument->getDirtyOrOriginLayer(); Part = g_backend.allocTrackNode(theLayer, Coord(0,0)); Part->setId(Id); Part->setLastUpdated(Feature::NotYetDownloaded); theLayer->add(Part); } return Part; } Way* Feature::getWayOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id) { Way* Part = CAST_WAY(theDocument->getFeature(Id)); if (!Part) { if (!theLayer) theLayer = theDocument->getDirtyOrOriginLayer(); Part = g_backend.allocWay(theLayer); Part->setId(Id); Part->setLastUpdated(Feature::NotYetDownloaded); theLayer->add(Part); } return Part; } Relation* Feature::getRelationOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id) { Relation* Part = CAST_RELATION(theDocument->getFeature(Id)); if (!Part) { if (!theLayer) theLayer = theDocument->getDirtyOrOriginLayer(); Part = g_backend.allocRelation(theLayer); Part->setId(Id); Part->setLastUpdated(Feature::NotYetDownloaded); theLayer->add(Part); } return Part; } void Feature::mergeTags(Document* theDocument, CommandList* L, Feature* Dest, Feature* Src) { for (int i=0; i<Src->tagSize(); ++i) { QString k = Src->tagKey(i); QString v1 = Src->tagValue(i); int j = Dest->findKey(k); if (j == -1) L->add(new SetTagCommand(Dest,k,v1, theDocument->getDirtyOrOriginLayer(Dest->layer()))); else { QString v2 = Dest->tagValue(j); if (v1 != v2) { L->add(new SetTagCommand(Dest,k,QString("%1;%2").arg(v2).arg(v1), theDocument->getDirtyOrOriginLayer(Dest->layer()))); } } } } QString Feature::toMainHtml(QString type, QString systemtype) { QString desc; QString name(tagValue("name","")); if (!name.isEmpty()) desc = QString("<big><b>%1</b></big><br/><small>(%2)</small>").arg(name).arg(id().numId); else desc = QString("<big><b>%1</b></big>").arg(id().numId); QString S = "<html><head/><body>" "<small><i>" + type + "</i></small><br/>" + desc + "<br/>" "<i>" "<small>"; #ifndef FRISIUS_BUILD S += QApplication::translate("MapFeature", "<i>V: </i><b>%1</b> ").arg(QString::number(versionNumber())); if (!user().isEmpty()) S += QApplication::translate("MapFeature", "<i>last: </i><b>%1</b> by <b>%2</b>").arg(time().toString(Qt::SystemLocaleDate)).arg(user()); else S += QApplication::translate("MapFeature", "<i>last: </i><b>%1</b>").arg(time().toString(Qt::SystemLocaleDate)); #endif if (layer()) S += QApplication::translate("MapFeature", "<br/><i>layer: </i><b>%1</b> ").arg(layer()->name()); S += "</small>" "<hr/>" "%1"; if (tagSize()) { QStringList sTags; int t=0; for (int i=0; i<tagSize(); ++i) { if (tagKey(i) != "_description_" && tagKey(i) != "_comment_") { ++t; sTags << tagKey(i) + " = " + "<b>" + tagValue(i) + "</b>"; } } if (t) { S += "<hr/><small>"; S += sTags.join("<br/>"); S += "</small>"; } } if (hasOSMId()) { S += "<hr/>" "<a href='/browse/" + systemtype + "/" + xmlId() + "'>"+QApplication::translate("MapFeature", "Browse")+"</a>"; } S += "</body></html>"; return S; } ����������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Feature.h������������������������������������������������������������0000664�0000000�0000000�00000030222�11770671653�0020075�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_MAPFEATURE_H_ #define MERKATOR_MAPFEATURE_H_ #include "IFeature.h" #include "Coord.h" #include "MapView.h" #include "FeaturePainter.h" #include <QtCore/QString> #include <QList> #define CAST_FEATURE(x) (dynamic_cast<Feature*>(x)) #define CAST_NODE(x) (dynamic_cast<Node*>(x)) #define CAST_TRACKNODE(x) (dynamic_cast<TrackNode*>(x)) #define CAST_WAY(x) (dynamic_cast<Way*>(x)) #define CAST_RELATION(x) (dynamic_cast<Relation*>(x)) #define CAST_SEGMENT(x) (dynamic_cast<TrackSegment*>(x)) #define STATIC_CAST_FEATURE(x) (static_cast<Feature*>(x)) #define STATIC_CAST_NODE(x) (static_cast<Node*>(x)) #define STATIC_CAST_TRACKNODE(x) (static_cast<TrackNode*>(x)) #define STATIC_CAST_WAY(x) (static_cast<Way*>(x)) #define STATIC_CAST_RELATION(x) (static_cast<Relation*>(x)) #define STATIC_CAST_SEGMENT(x) (static_cast<TrackSegment*>(x)) #define CHECK_NODE(x) ((x)->getType() & IFeature::Point) #define CHECK_WAY(x) ((x)->getType() & IFeature::LineString) #define CHECK_RELATION(x) ((x)->getType() & IFeature::OsmRelation) #define CHECK_SEGMENT(x) ((x)->getType() & IFeature::GpxSegment) class CommandList; class Document; class Layer; class Projection; class TrackNode; class QPointF; class QPainter; class QPen; class QProgressDialog; class FeaturePrivate; class RenderPriority { public: typedef enum { IsArea, IsLinear, IsSingular } Class; RenderPriority() : theClass(IsLinear), InClassPriority(0.0), theLayer(0) { } RenderPriority(Class C, qreal IC, int L) : theClass(C), InClassPriority(IC), theLayer(L) { } RenderPriority(const RenderPriority& other) : theClass(other.theClass), InClassPriority(other.InClassPriority), theLayer(other.theLayer) { } bool operator<(const RenderPriority& R) const { return (theClass < R.theClass) || ( (theClass == R.theClass) && (InClassPriority < R.InClassPriority) ); } bool operator==(const RenderPriority& R) const { return ((theClass == R.theClass) && (InClassPriority == R.InClassPriority)); } RenderPriority &operator=(const RenderPriority &other) { if (this != &other) { theClass = other.theClass; InClassPriority = other.InClassPriority; theLayer = other.theLayer; } return *this; } int layer() const { return theLayer; } private: Class theClass; qreal InClassPriority; int theLayer; }; namespace boost { void intrusive_ptr_add_ref(Feature * p); void intrusive_ptr_release(Feature * p); } /// Used to store objects of the map class Feature : public IFeature { friend class FeaturePrivate; friend class MemoryBackend; friend class SpatialiteBackend; public: typedef enum { User, UserResolved, OSMServer, OSMServerConflict, NotYetDownloaded, Log } ActorType; typedef enum { UnknownDirection, BothWays, OneWay, OtherWay } TrafficDirectionType; public: /// Constructor for an empty map feature Feature(); /// Copy constructor /// @param other the MapFeature Feature(const Feature& other); /// Destructor virtual ~Feature() = 0; /** Return the smalest box contening all the MapFeature * @return A coord box */ virtual const CoordBox& boundingBox(bool update=true) const = 0; /** Draw the feature using the given QPainter an Projection * @param P The QPainter used to draw * @param theProjection the Projection used to convert real coordinates to screen coordinates */ virtual void drawSimple(QPainter& P, MapView* theView) = 0; virtual void drawTouchup(QPainter& P, MapView* theView) = 0; virtual void drawSpecial(QPainter& P, QPen& Pen, MapView* theView) = 0; virtual void drawParentsSpecial(QPainter& P, QPen& Pen, MapView* theView) = 0; virtual void drawChildrenSpecial(QPainter & P, QPen& Pen, MapView* theView, int depth) = 0; virtual void drawHover(QPainter& P, MapView* theView); virtual void drawHighlight(QPainter& P, MapView* theView); virtual void drawFocus(QPainter& P, MapView* theView); virtual qreal pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const = 0; virtual void cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Alternatives) = 0; virtual bool notEverythingDownloaded() = 0; /** Set the id for the current feature. */ void setId(const IFeature::FId& id); /** Reset the id for the current feature to a random one. */ const IFeature::FId& resetId() const; /** Give the id of the feature. * If the feature has no id, a random id is generated * @return the id of the current feature */ const IFeature::FId& id() const; QString xmlId() const; bool hasOSMId() const; ActorType lastUpdated() const; void setLastUpdated(ActorType A); #ifndef FRISIUS_BUILD const QDateTime time() const; void setTime(const QDateTime& aTime); void setTime(uint epoch); const QString& user() const; void setUser(const QString& aUser); int versionNumber() const; void setVersionNumber(int vn); #endif virtual void setLayer(Layer* aLayer); virtual Layer* layer() const; virtual QString description() const = 0; /** Set the tag "key=value" to the current object * If a tag with the same key exist, it is replaced * Otherwise the tag is added at the end * @param key the key of the tag * @param value the value corresponding to the key */ virtual void setTag(const QString& key, const QString& value); /** Set the tag "key=value" at the position index * If a tag with the same key exist, it is replaced * Otherwise the tag is added at the index position * @param index the place for the given tag. Start at 0. * @param key the key of the tag * @param value the value corresponding to the key */ virtual void setTag(int index, const QString& key, const QString& value); /** remove all the tags for the curent feature */ virtual void clearTags(); /** remove the tag with the key "k". * if no corresponding tag, don't do anything */ virtual void clearTag(const QString& k); /** @return the number of tags for the current object */ virtual int tagSize() const; /** if a tag with the key "k" exists, return its index. * if the key doesn't exist, return the number of tags * @return index of tag */ virtual int findKey(const QString& k) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagValue(int i) const; /** return the value of the tag with the key "k". * if such a tag doesn't exists, return Default. * @return value or Default */ virtual QString tagValue(const QString& k, const QString& Default) const; /** return the value of the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. * @return the value */ virtual QString tagKey(int i) const; /** remove the tag at the position "i". * position start at 0. * Be carefull: no verification is made on i. */ virtual void removeTag(int i); /** check if the dirty status of the feature * @return true if the feature is dirty */ virtual bool isDirty() const; virtual int incDirtyLevel(int inc=1); virtual int decDirtyLevel(int inc=1); virtual int getDirtyLevel() const; virtual int setDirtyLevel(int newLevel); /** check if the feature is on an uploadable layer * @return true if on an uploadable layer */ virtual bool isUploadable() const; /** check if the feature is read-only * @return true if is read-only */ virtual bool isReadonly(); virtual void setReadonly(bool val); /** set the logical delete state of the feature */ virtual void setDeleted(bool delState); /** check if the feature is logically deleted * @return true if logically deleted */ virtual bool isDeleted() const; /** set the visibility state of the feature */ virtual void setVisible(bool val); /** check if the feature is visible * @return true if visible */ virtual bool isVisible(); /** check if the feature is hidden * @return true if hidden */ virtual bool isHidden(); /** check if the feature has been uploaded * @return true if uploaded */ virtual bool isUploaded() const; virtual void setUploaded(bool state); /** check if the feature is virtual * @return true if virtual */ virtual bool isVirtual() const; virtual void setVirtual(bool val); /** check if the feature is a special one (cannot be uploaded) * @return true if special */ virtual bool isSpecial() const; virtual void setSpecial(bool val); virtual void buildPath(const Projection& aProjection); virtual const QPainterPath& getPath() const; const FeaturePainter* getPainter(qreal PixelPerM) const; const FeaturePainter* getCurrentPainter() const; bool hasPainter() const; bool hasPainter(qreal PixelPerM) const; void invalidatePainter(); QVector<qreal> getParentDashes() const; virtual qreal getAlpha(); virtual void remove(int Idx) = 0; virtual void remove(Feature* F) = 0; virtual int size() const = 0; virtual int find(Feature* Pt) const = 0; virtual Feature* get(int idx) = 0; virtual const Feature* get(int Idx) const = 0; virtual bool isNull() const = 0; int sizeParents() const; IFeature* getParent(int i); const IFeature* getParent(int i) const; void setParentFeature(Feature* F); void unsetParentFeature(Feature* F); virtual void partChanged(Feature* F, int ChangeId) = 0; void notifyChanges(); void notifyParents(int Id); static void fromXML(QXmlStreamReader& stream, Feature* F); virtual void toXML(QXmlStreamWriter& stream, bool strict, QString changetsetid=""); virtual QString toXML(int lvl=0, QProgressDialog * progress=NULL); virtual bool toXML(QXmlStreamWriter& stream, QProgressDialog * progress=NULL, bool strict=false, QString changetsetid="") = 0; QString toMainHtml(QString type, QString systemtype); virtual QString toHtml() { return ""; } virtual QString getClass() const = 0; virtual char getType() const = 0; virtual void updateMeta(); virtual void updateFilters(); virtual void invalidateMeta(); virtual bool deleteChildren(Document* , CommandList* ) { return true; } static Relation * GetSingleParentRelation(Feature * mapFeature); static Node* getNodeOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id); static TrackNode* getTrackNodeOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id); static Way* getWayOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id); static Relation* getRelationOrCreatePlaceHolder(Document *theDocument, Layer *theLayer, const IFeature::FId& Id); static void mergeTags(Document* theDocument, CommandList* L, Feature* Dest, Feature* Src); static QString stripToOSMId(const IFeature::FId& id); public: quint32 internal_id; private: FeaturePrivate* p; protected: mutable CoordBox BBox; bool ReadOnly; // 1 bool MetaUpToDate; IFeature::FId newId(IFeature::FeatureType type) const; QMutex featMutex; bool tagsToXML(QXmlStreamWriter& stream, bool strict); static void tagsFromXML(Document* d, Feature* f, QXmlStreamReader& stream); long m_references; friend void ::boost::intrusive_ptr_add_ref(Feature * p); friend void ::boost::intrusive_ptr_release(Feature * p); QPainterPath thePath; }; Q_DECLARE_METATYPE( Feature * ); extern qint64 g_feat_rndId; void copyTags(Feature* Dest, Feature* Src); bool hasOSMId(const Feature* aFeature); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Features.h�����������������������������������������������������������0000664�0000000�0000000�00000000176�11770671653�0020265�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "IFeature.h" #include "Feature.h" #include "Node.h" #include "Way.h" #include "Relation.h" #include "TrackSegment.h" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Features.pri���������������������������������������������������������0000664�0000000�0000000�00000000454�11770671653�0020627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Features DEPENDPATH += $$MERKAARTOR_SRC_DIR/Features HEADERS += \ Feature.h \ Relation.h \ Way.h \ Node.h \ TrackSegment.h \ IFeature.h SOURCES += \ Feature.cpp \ Relation.cpp \ Way.cpp \ Node.cpp \ TrackSegment.cpp \ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Node.cpp�������������������������������������������������������������0000664�0000000�0000000�00000051371�11770671653�0017732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Node.h" #include "MapView.h" #include "MapRenderer.h" #include "LineF.h" #include "Global.h" #include <QApplication> #include <QtGui/QPainter> #include <QProgressDialog> #define TEST_RFLAGS(x) theView->renderOptions().options.testFlag(x) Node::Node(const Coord& aCoord) : Feature() , ProjectionRevision(0) { BBox = CoordBox(aCoord, aCoord); // qDebug() << "Node size: " << sizeof(Node) << sizeof(PhotoNode); } Node::Node(const Node& other) : Feature(other) { BBox = other.BBox; Projected = other.Projected; } Node::~Node(void) { } const QPointF& Node::projected() const { return Projected; } const QPointF& Node::projected(const Projection& aProjection) { buildPath(aProjection); return Projected; } void Node::buildPath(const Projection& aProjection) { if (ProjectionRevision != aProjection.projectionRevision()) { Projected = aProjection.project(BBox.topLeft()); ProjectionRevision = aProjection.projectionRevision(); } } Coord Node::position() const { return BBox.topLeft(); } void Node::setPosition(const Coord& aCoord) { BBox = CoordBox(aCoord, aCoord); ProjectionRevision = 0; g_backend.sync(this); notifyChanges(); } void Node::remove(int ) { } void Node::remove(Feature*) { } int Node::size() const { return 0; } int Node::find(Feature* ) const { return 0; } Feature* Node::get(int ) { return NULL; } const Feature* Node::get(int ) const { return NULL; } bool Node::isNull() const { return BBox.isNull(); } bool Node::isInteresting() const { // does its id look like one from osm if (hasOSMId()) return true; // if the user has added special tags, that's fine also if (tagSize()) return true; // if it is part of a road, then too if (sizeParents()) return true; return false; } bool Node::isPOI() { if (!MetaUpToDate) updateMeta(); return IsPOI; } bool Node::isWaypoint() { if (!MetaUpToDate) updateMeta(); return IsWaypoint; } bool Node::isSelectable(qreal PixelPerM, RendererOptions options) { // If Node has non-default tags -> POI -> always selectable if (isPOI()) return true; bool Draw = false; if (options.options.testFlag(RendererOptions::NodesVisible) || (lastUpdated() == Feature::Log && !options.options.testFlag(RendererOptions::TrackSegmentVisible))) { Draw = (PixelPerM * M_PREFS->getNodeSize() >= 1); // Do not draw GPX nodes when simple GPX track appearance is enabled if (M_PREFS->getSimpleGpxTrack() && layer()->isTrack()) Draw = false; if (!Draw) { if (!sizeParents()) Draw = true; else if (lastUpdated() == Feature::Log && !options.options.testFlag(RendererOptions::TrackSegmentVisible)) Draw = true; } } return Draw; } bool Node::notEverythingDownloaded() { return lastUpdated() == Feature::NotYetDownloaded; } const CoordBox& Node::boundingBox(bool) const { return BBox; } void Node::drawSimple(QPainter &P, MapView *theView) { // if (!M_PREFS->getWireframeView() && !TEST_RFLAGS(RendererOptions::Interacting)) // return; if (! ((isReadonly() || !isSelectable(theView->pixelPerM(), theView->renderOptions())) && (!isPOI() && !isWaypoint()))) // if (!Pt->isReadonly() && Pt->isSelectable(r)) { qreal WW = theView->nodeWidth(); if (WW >= 1) { QColor theColor = QColor(0,0,0,128); if (M_PREFS->getUseStyledWireframe() && hasPainter()) { const FeaturePainter* thePainter = getCurrentPainter(); if (thePainter->DrawForeground) theColor = thePainter->ForegroundColor; else if (thePainter->DrawBackground) theColor = thePainter->BackgroundColor; } QPointF Pp(theView->toView(this)); if (layer()->classGroups() & Layer::Special) { QRect R2(Pp.x()-(WW+4)/2, Pp.y()-(WW+4)/2, WW+4, WW+4); P.fillRect(R2,QColor(255,0,255,192)); } else if (isWaypoint()) { QRect R2(Pp.x()-(WW+4)/2, Pp.y()-(WW+4)/2, WW+4, WW+4); P.fillRect(R2,QColor(255,0,0,192)); } QRect R(Pp.x()-WW/2, Pp.y()-WW/2, WW, WW); P.fillRect(R,theColor); } } } void Node::drawTouchup(QPainter& thePainter, MapView* theView) { if (isDirty() && isUploadable() && M_PREFS->getDirtyVisible()) { QPoint P = theView->toView(this); qreal theWidth = theView->nodeWidth(); if (theWidth >= 1) { QRect R(P-QPoint(theWidth/2,theWidth/2),QSize(theWidth,theWidth)); thePainter.fillRect(R,M_PREFS->getDirtyColor()); } } } void Node::drawSpecial(QPainter& thePainter, QPen& Pen, MapView* theView) { QPen TP(Pen); TP.setWidth(TP.width() / 2); buildPath(theView->projection()); QPoint me(theView->toView(this)); QRect R(me-QPoint(3,3),QSize(6,6)); thePainter.setPen(TP); thePainter.drawRect(R); R.adjust(-7, -7, 7, 7); thePainter.drawEllipse(R); } void Node::drawParentsSpecial(QPainter& thePainter, QPen& Pen, MapView* theView) { for (int i=0; i<sizeParents(); ++i) { if (!getParent(i)->isDeleted()) { Feature* f = CAST_FEATURE(getParent(i)); if (f) f->drawSpecial(thePainter, Pen, theView); } } } void Node::drawChildrenSpecial(QPainter& thePainter, QPen& Pen, MapView* theView, int depth) { Q_UNUSED(thePainter); Q_UNUSED(Pen); Q_UNUSED(theView); Q_UNUSED(depth); // Node has no children } qreal Node::pixelDistance(const QPointF& Target, qreal, const QList<Feature*>& /* NoSnap */, MapView* theView) const { qreal Best = 1000000; QPoint me = theView->toView(const_cast<Node*>(this)); Best = distance(Target, me); return Best; } void Node::cascadedRemoveIfUsing(Document*, Feature*, CommandList*, const QList<Feature*>&) { } QString Node::description() const { QString s(tagValue("name","")); if (!s.isEmpty()) return QString("%1 (%2)").arg(s).arg(id().numId); return QString("%1").arg(id().numId); } void Node::partChanged(Feature*, int) { } void Node::updateMeta() { QMutexLocker mutlock(&featMutex); if (MetaUpToDate) return; Feature::updateMeta(); IsWaypoint = (findKey("_waypoint_") != -1); IsPOI = false; for (int i=0; i<tagSize(); ++i) { if (!M_PREFS->getTechnicalTags().contains(tagKey(i))) { IsPOI = true; break; } } if (!IsPOI && !IsWaypoint) { int i=0; int prtReadonly=0, prtWritable=0; for (; i<sizeParents(); ++i) { if (getParent(i)->isReadonly()) ++prtReadonly; else ++prtWritable; } if (!ReadOnly) { if (prtReadonly && !prtWritable) setReadonly(true); } } MetaUpToDate = true; } bool Node::toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict, QString changesetid) { bool OK = true; if (isVirtual()) return OK; stream.writeStartElement("node"); Feature::toXML(stream, strict, changesetid); stream.writeAttribute("lon",COORD2STRING(BBox.topRight().x())); stream.writeAttribute("lat", COORD2STRING(BBox.topRight().y())); tagsToXML(stream, strict); stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } Node * Node::fromXML(Document* d, Layer* L, QXmlStreamReader& stream) { qreal Lat = stream.attributes().value("lat").toString().toDouble(); qreal Lon = stream.attributes().value("lon").toString().toDouble(); QString sid = (stream.attributes().hasAttribute("id") ? stream.attributes().value("id").toString() : stream.attributes().value("xml:id").toString()); IFeature::FId id(IFeature::Point, sid.toLongLong()); Node* Pt = CAST_NODE(d->getFeature(id)); if (!Pt) { Pt = g_backend.allocNode(L, Coord(Lon,Lat)); Pt->setId(id); L->add(Pt); Feature::fromXML(stream, Pt); } else { Feature::fromXML(stream, Pt); if (Pt->layer() != L) { Pt->layer()->remove(Pt); L->add(Pt); } Pt->setPosition(Coord(Lon, Lat)); } stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "tag") { Pt->setTag(stream.attributes().value("k").toString(), stream.attributes().value("v").toString()); stream.readNext(); } stream.readNext(); } return Pt; } QString Node::toHtml() { QString D; int i; if ((i = findKey("_waypoint_")) != -1) D += "<p><b>"+QApplication::translate("MapFeature", "Waypoint")+"</b><br/>"; D += "<i>"+QApplication::translate("MapFeature", "coord")+": </i>" + COORD2STRING(position().y()) + " (" + Coord2Sexa(position().y()) + ") / " + COORD2STRING(position().x()) + " (" + Coord2Sexa(position().x()) + ")"; if ((i = findKey("_description_")) != -1) D += "<br/><i>"+QApplication::translate("MapFeature", "description")+": </i>" + tagValue(i); if ((i = findKey("_comment_")) != -1) D += "<br/><i>"+QApplication::translate("MapFeature", "comment")+": </i>" + tagValue(i); return Feature::toMainHtml(QApplication::translate("MapFeature", "Node"), "node").arg(D); } bool Node::toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, QString element, bool forExport) { bool OK = true; if (isVirtual()) return OK; if (!tagValue("_waypoint_","").isEmpty() ||!sizeParents()) stream.writeStartElement("wpt"); else stream.writeStartElement(element); if (!forExport) stream.writeAttribute("xml:id", xmlId()); stream.writeAttribute("lon",COORD2STRING(BBox.topRight().x())); stream.writeAttribute("lat", COORD2STRING(BBox.topRight().y())); #ifndef FRISIUS_BUILD stream.writeTextElement("time", time().toString(Qt::ISODate)+"Z"); #else stream.writeTextElement("time", QDateTime::currentDateTime().toString(Qt::ISODate)+"Z"); #endif QString s = tagValue("name",""); if (!s.isEmpty()) { stream.writeTextElement("name", s); } s = tagValue("_comment_",""); if (!s.isEmpty()) { stream.writeTextElement("cmt", s); } s = tagValue("_description_",""); if (!s.isEmpty()) { stream.writeTextElement("desc", s); } // OpenStreetBug s = tagValue("_special_",""); if (!s.isEmpty() && id().type & IFeature::Special) { stream.writeStartElement("extensions"); QString sid = stripToOSMId(id()); stream.writeTextElement("id", sid); stream.writeEndElement(); } stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } /*********************************************/ TrackNode::TrackNode(const Coord &aCoord) : Node(aCoord) , Elevation(0.0) , Speed(0.0) { } TrackNode::TrackNode(const Node& other) : Node(other) , Elevation(0.0) , Speed(0.0) { } TrackNode::TrackNode(const TrackNode& other) : Node(other) , Elevation(other.Elevation) , Speed(other.Speed) { } qreal TrackNode::speed() const { return Speed; } void TrackNode::setSpeed(qreal aSpeed) { Speed = aSpeed; } qreal TrackNode::elevation() const { return Elevation; } void TrackNode::setElevation(qreal aElevation) { Elevation = aElevation; } #ifdef FRISIUS_BUILD const QDateTime& TrackNode::time() const { return QDateTime::fromTime_t(Time); } void TrackNode::setTime(const QDateTime& time) { Time = time.toTime_t(); } void TrackNode::setTime(uint epoch) { Time = epoch; } #endif TrackNode * TrackNode::fromGPX(Document* d, Layer* L, QXmlStreamReader& stream) { qreal Lat = stream.attributes().value("lat").toString().toDouble(); qreal Lon = stream.attributes().value("lon").toString().toDouble(); QString sid = (stream.attributes().hasAttribute("id") ? stream.attributes().value("id").toString() : stream.attributes().value("xml:id").toString()); IFeature::FId id(IFeature::Point, sid.toLongLong()); TrackNode* Pt = CAST_TRACKNODE(d->getFeature(id)); if (!Pt) { Pt = g_backend.allocTrackNode(L, Coord(Lon,Lat)); Pt->setId(id); Pt->setLastUpdated(Feature::Log); L->add(Pt); } else { Pt->setPosition(Coord(Lon,Lat)); if (Pt->lastUpdated() == Feature::NotYetDownloaded) Pt->setLastUpdated(Feature::OSMServer); } if (stream.name() == "wpt") Pt->setTag("_waypoint_", "yes"); QDateTime time = QDateTime::currentDateTime(); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "time") { stream.readNext(); QString dtm = stream.text().toString(); time = QDateTime::fromString(dtm.left(19), Qt::ISODate); stream.readNext(); } else if (stream.name() == "ele") { stream.readNext(); Pt->setElevation(stream.text().toString().toFloat()); stream.readNext(); } else if (stream.name() == "speed") { stream.readNext(); Pt->setSpeed(stream.text().toString().toFloat()); stream.readNext(); } else if (stream.name() == "name") { stream.readNext(); Pt->setTag("name", stream.text().toString()); stream.readNext(); } else if (stream.name() == "cmt") { stream.readNext(); Pt->setTag("_comment_", stream.text().toString()); stream.readNext(); } else if (stream.name() == "desc") { stream.readNext(); Pt->setTag("_description_", stream.text().toString()); stream.readNext(); } else if (stream.name() == "cmt") { stream.readNext(); Pt->setTag("_comment_", stream.text().toString()); stream.readNext(); } else if (stream.name() == "extensions") // for OpenStreetBugs { QString str = stream.readElementText(QXmlStreamReader::IncludeChildElements); QDomDocument doc; doc.setContent(str); QDomNodeList li = doc.elementsByTagName("id"); if (li.size()) { QString id = li.at(0).toElement().text(); Pt->setId(IFeature::FId(IFeature::Point | IFeature::Special, id.toLongLong())); Pt->setTag("_special_", "yes"); // Assumed to be OpenstreetBugs as they don't use their own namesoace Pt->setSpecial(true); } } stream.readNext(); } Pt->setTime(time); return Pt; } bool TrackNode::toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, QString element, bool forExport) { bool OK = true; if (isVirtual()) return OK; if (!tagValue("_waypoint_","").isEmpty() ||!sizeParents()) stream.writeStartElement("wpt"); else stream.writeStartElement(element); if (!forExport) stream.writeAttribute("xml:id", xmlId()); stream.writeAttribute("lon",COORD2STRING(BBox.topRight().x())); stream.writeAttribute("lat", COORD2STRING(BBox.topRight().y())); stream.writeTextElement("time", time().toString(Qt::ISODate)+"Z"); QString s = tagValue("name",""); if (!s.isEmpty()) { stream.writeTextElement("name", s); } if (elevation()) { stream.writeTextElement("ele", QString::number(elevation(),'f',6)); } if (speed()) { stream.writeTextElement("speed", QString::number(speed(),'f',6)); } s = tagValue("_comment_",""); if (!s.isEmpty()) { stream.writeTextElement("cmt", s); } s = tagValue("_description_",""); if (!s.isEmpty()) { stream.writeTextElement("desc", s); } // OpenStreetBug s = tagValue("_special_",""); if (!s.isEmpty() && id().type & IFeature::Special) { stream.writeStartElement("extensions"); QString sid = stripToOSMId(id()); stream.writeTextElement("id", sid); stream.writeEndElement(); } stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } QString TrackNode::toHtml() { QString D; int i; if ((i = findKey("_waypoint_")) != -1) D += "<p><b>"+QApplication::translate("MapFeature", "Waypoint")+"</b><br/>"; D += "<i>"+QApplication::translate("MapFeature", "coord")+": </i>" + COORD2STRING(position().y()) + " (" + Coord2Sexa(position().y()) + ") / " + COORD2STRING(position().x()) + " (" + Coord2Sexa(position().x()) + ")"; if (elevation()) D += "<br/><i>"+QApplication::translate("MapFeature", "elevation")+": </i>" + QString::number(elevation(), 'f', 4); if (speed()) D += "<br/><i>"+QApplication::translate("MapFeature", "speed")+": </i>" + QString::number(speed(), 'f', 4); if ((i = findKey("_description_")) != -1) D += "<br/><i>"+QApplication::translate("MapFeature", "description")+": </i>" + tagValue(i); if ((i = findKey("_comment_")) != -1) D += "<br/><i>"+QApplication::translate("MapFeature", "comment")+": </i>" + tagValue(i); return Feature::toMainHtml(QApplication::translate("MapFeature", "Node"), "node").arg(D); } /*********************************/ PhotoNode::PhotoNode(const Coord& aCoord) : TrackNode(aCoord) , Photo(0) , photoLocationBR(true) { } PhotoNode::PhotoNode(const Node& other) : TrackNode(other) , Photo(0) , photoLocationBR(true) { } PhotoNode::PhotoNode(const TrackNode& other) : TrackNode(other) , Photo(0) , photoLocationBR(true) { } PhotoNode::~PhotoNode(void) { SAFE_DELETE(Photo) } QPixmap PhotoNode::photo() const { if (Photo) return *(Photo); else return QPixmap(); } void PhotoNode::setPhoto(QPixmap thePhoto) { SAFE_DELETE(Photo) Photo = new QPixmap(thePhoto.scaled(M_PREFS->getMaxGeoPicWidth(), M_PREFS->getMaxGeoPicWidth(), Qt::KeepAspectRatio)); } void PhotoNode::drawTouchup(QPainter& thePainter , MapView* theView) { #ifdef GEOIMAGE QPoint me = theView->toView(this); thePainter.setPen(QPen(QColor(0, 0, 0), 2)); QRect box(me - QPoint(5, 3), QSize(10, 6)); thePainter.drawRect(box); if (theView->renderOptions().options.testFlag(RendererOptions::PhotosVisible) && theView->pixelPerM() > M_PREFS->getRegionalZoom()) { qreal rt = qBound(0.2, theView->pixelPerM(), 1.0); QPoint phPt; if (photoLocationBR) { phPt = me + QPoint(10*rt, 10*rt); } else { qreal rt = qBound(0.2, theView->pixelPerM(), 1.0); qreal phRt = 1. * Photo->width() / Photo->height(); phPt = me - QPoint(10*rt, 10*rt) - QPoint(M_PREFS->getMaxGeoPicWidth()*rt, M_PREFS->getMaxGeoPicWidth()*rt/phRt); } thePainter.drawPixmap(phPt, Photo->scaledToWidth(M_PREFS->getMaxGeoPicWidth()*rt)); } #endif Node::drawTouchup(thePainter, theView); } #ifdef GEOIMAGE void PhotoNode::drawHover(QPainter& thePainter, MapView* theView) { /* call the parent function */ Feature::drawHover(thePainter, theView); /* and then the image */ if (TEST_RFLAGS(RendererOptions::PhotosVisible) && theView->pixelPerM() > M_PREFS->getRegionalZoom()) { QPoint me(theView->toView(this)); qreal rt = qBound(0.2, theView->pixelPerM(), 1.0); qreal phRt = 1. * Photo->width() / Photo->height(); QPoint phPt; if (photoLocationBR) { phPt = me + QPoint(10*rt, 10*rt); } else { phPt = me - QPoint(10*rt, 10*rt) - QPoint(M_PREFS->getMaxGeoPicWidth()*rt, M_PREFS->getMaxGeoPicWidth()*rt/phRt); } QRect box(phPt, QSize(M_PREFS->getMaxGeoPicWidth()*rt, M_PREFS->getMaxGeoPicWidth()*rt/phRt)); thePainter.drawRect(box); } } #endif qreal PhotoNode::pixelDistance(const QPointF& Target, qreal ClearDistance, const QList<Feature*>& NoSnap, MapView* theView) const { QPoint me = theView->toView(const_cast<PhotoNode*>(this)); #ifdef GEOIMAGE if (TEST_RFLAGS(RendererOptions::PhotosVisible) && theView->pixelPerM() > M_PREFS->getRegionalZoom()) { qreal rt = qBound(0.2, theView->pixelPerM(), 1.0); qreal phRt = 1. * Photo->width() / Photo->height(); QPoint phPt; if (photoLocationBR) { phPt = me + QPoint(10*rt, 10*rt); } else { phPt = me - QPoint(10*rt, 10*rt) - QPoint(M_PREFS->getMaxGeoPicWidth()*rt, M_PREFS->getMaxGeoPicWidth()*rt/phRt); } QRect box(phPt, QSize(M_PREFS->getMaxGeoPicWidth()*rt, M_PREFS->getMaxGeoPicWidth()*rt/phRt)); if (box.contains(Target.toPoint())) { photoLocationBR = !photoLocationBR; theView->invalidate(true, false, false); } } #endif return Node::pixelDistance(Target, ClearDistance, NoSnap, theView ); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Node.h���������������������������������������������������������������0000664�0000000�0000000�00000012530�11770671653�0017371�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_TRACKPOINT_H_ #define MERKATOR_TRACKPOINT_H_ #include "MerkaartorPreferences.h" #include "Coord.h" #include "Feature.h" #include "Document.h" #include "Layer.h" #include <QtCore/QDateTime> #include <QtXml> #ifndef _MOBILE #if QT_VERSION < 0x040700 || defined(FORCE_46) #include <ggl/ggl.hpp> #include <ggl/geometries/register/point.hpp> #endif #endif class QProgressDialog; class Node : public Feature { friend class MemoryBackend; friend class SpatialiteBackend; public: Node() : ProjectionRevision(0) { } Node(const Coord& aCoord); Node(const Node& other); virtual ~Node(); quint16 ProjectionRevision; QPointF Projected; bool IsWaypoint; bool IsPOI; public: virtual QString getClass() const {return "Node";} virtual char getType() const {return IFeature::Point;} virtual void updateMeta(); virtual const CoordBox& boundingBox(bool update=true) const; virtual void drawSimple(QPainter& P, MapView* theView); virtual void drawTouchup(QPainter& P, MapView* theView); virtual void drawSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawParentsSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawChildrenSpecial(QPainter& P, QPen& Pen, MapView* theView, int depth); virtual qreal pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const; virtual void cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Alternatives); virtual bool notEverythingDownloaded(); virtual QString description() const; virtual int find(Feature* Pt) const; virtual void remove(int idx); virtual void remove(Feature* F); virtual int size() const; virtual Feature* get(int idx); virtual const Feature* get(int Idx) const; virtual bool isNull() const; virtual bool isInteresting() const; virtual bool isPOI(); virtual bool isWaypoint(); /** check if the feature is drawable * @return true if to be drawn */ virtual bool isSelectable(qreal PixelPerM, RendererOptions options); virtual void partChanged(Feature* F, int ChangeId); public: const QPointF& projected() const; const QPointF &projected(const Projection &aProjection); void buildPath(const Projection& aProjection); Coord position() const; void setPosition(const Coord& aCoord); bool toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict=false, QString changetsetid=""); static Node* fromXML(Document* d, Layer* L, QXmlStreamReader& stream); bool toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, QString element, bool forExport=false); QString toHtml(); }; class TrackNode : public Node { friend class MemoryBackend; friend class SpatialiteBackend; protected: TrackNode(const Coord& aCoord); TrackNode(const Node& other); TrackNode(const TrackNode& other); public: qreal speed() const; void setSpeed(qreal aSpeed); qreal elevation() const; void setElevation(qreal aElevation); #ifdef FRISIUS_BUILD const QDateTime& time() const; void setTime(const QDateTime& aTime); void setTime(uint epoch); #endif virtual bool toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, QString element, bool forExport=false); static TrackNode* fromGPX(Document* d, Layer* L, QXmlStreamReader& stream); virtual QString toHtml(); private: #ifdef FRISIUS_BUILD uint Time; #endif qreal Elevation; qreal Speed; }; class PhotoNode : public TrackNode { friend class MemoryBackend; friend class SpatialiteBackend; protected: PhotoNode(const Coord& aCoord); PhotoNode(const Node& other); PhotoNode(const TrackNode& other); virtual ~PhotoNode(); public: virtual void drawTouchup(QPainter &thePainter, MapView* theView); #ifdef GEOIMAGE virtual void drawHover(QPainter& P, MapView* theView); #endif virtual qreal pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const; QPixmap photo() const; void setPhoto(QPixmap thePhoto); protected: QPixmap* Photo; mutable bool photoLocationBR; }; Q_DECLARE_METATYPE( Node * ); #ifndef _MOBILE #if QT_VERSION < 0x040700 || defined(FORCE_46) // Register this point as being a recognizable point by the GGL //GEOMETRY_REGISTER_POINT_2D_CONST(TrackPoint, qreal, cs::cartesian, projection().x(), projection().y()) namespace ggl { namespace traits { template<> struct tag<NodePtr> { typedef point_tag type; }; template<> struct coordinate_type<NodePtr> { typedef qreal type; }; template<> struct coordinate_system<NodePtr> { typedef cs::cartesian type; }; template<> struct dimension<NodePtr> : boost::mpl::int_<2> {}; template<> struct access<NodePtr> { template <std::size_t I> static inline qreal get(const NodePtr& p) { return I == 0 ? p->projected().x() : p->projected().y(); } // template <std::size_t I> // static inline void set(TrackPointPtr& p, const qreal& value) // { // // Or (better) implement an accessor with specializations // if (I == 0) p->position().setLon(value); // else if (I == 1) p->position().setLat(value); // } }; }} // namespace ggl::traits #endif #endif #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Relation.cpp���������������������������������������������������������0000664�0000000�0000000�00000061553�11770671653�0020625�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Features.h" #include "MapView.h" #include "MapRenderer.h" #include "MainWindow.h" #include "DocumentCommands.h" #include "RelationCommands.h" #include "Document.h" #include "LineF.h" #include "Global.h" #include <QApplication> #include <QAbstractTableModel> #include <QProgressDialog> #include <QPainter> #include <algorithm> #include <utility> #include <QList> #define TEST_RFLAGS(x) theView->renderOptions().options.testFlag(x) class RelationMemberModel : public QAbstractTableModel { public: RelationMemberModel(RelationPrivate* aParent, MainWindow* aMain); int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); RelationPrivate* Parent; MainWindow* Main; }; class RelationPrivate { public: RelationPrivate(Relation* R) : theRelation(R), theModel(0), ModelReferences(0) , PathUpToDate(false) , ProjectionRevision(0) , BBoxUpToDate(false) , Width(0) { } ~RelationPrivate() { delete theModel; } void CalculateWidth(); Relation* theRelation; QList<QPair<QString, MapFeaturePtr> > Members; RelationMemberModel* theModel; int ModelReferences; QPainterPath thePath; QPainterPath theBoundingPath; bool PathUpToDate; int ProjectionRevision; bool BBoxUpToDate; RenderPriority theRenderPriority; qreal Width; }; #define DEFAULTWIDTH 6 #define LANEWIDTH 4 void RelationPrivate::CalculateWidth() { QString s(theRelation->tagValue("width",QString())); if (!s.isNull()) { Width = s.toDouble(); return; } QString h = theRelation->tagValue("highway",QString()); if (s.isNull()) { Width = DEFAULTWIDTH; return; } if ( (h == "motorway") || (h=="motorway_link") ) Width = 4*LANEWIDTH; // 3 lanes plus emergency else if ( (h == "trunk") || (h=="trunk_link") ) Width = 3*LANEWIDTH; // 2 lanes plus emergency else if ( (h == "primary") || (h=="primary_link") ) Width = 2*LANEWIDTH; // 2 lanes else if (h == "secondary") Width = 2*LANEWIDTH; // 2 lanes else if (h == "tertiary") Width = 1.5*LANEWIDTH; // shared middle lane else if (h == "cycleway") Width = 1.5; Width = DEFAULTWIDTH; } Relation::Relation() : Feature() { p = new RelationPrivate(this); } Relation::Relation(const Relation& other) : Feature(other) { p = new RelationPrivate(this); } Relation::~Relation() { // TODO Those cleanup shouldn't be necessary and lead to crashes // Check for side effect of supressing them. // for (int i=0; i<p->Members.size(); ++i) // if (p->Members[i].second) // p->Members[i].second->unsetParentFeature(this); delete p; } void Relation::setLayer(Layer* L) { if (L) { for (int i=0; i<p->Members.size(); ++i) if (p->Members[i].second) p->Members[i].second->setParentFeature(this); } else { for (int i=0; i<p->Members.size(); ++i) if (p->Members[i].second) p->Members[i].second->unsetParentFeature(this); } Feature::setLayer(L); } void Relation::partChanged(Feature*, int ChangeId) { if (isDeleted()) return; p->PathUpToDate = false; p->BBoxUpToDate = false; MetaUpToDate = false; g_backend.sync(this); notifyParents(ChangeId); } QString Relation::description() const { QString s(tagValue("name","")); if (!s.isEmpty()) return QString("%1 (%2)").arg(s).arg(id().numId); return QString("%1").arg(id().numId); } const CoordBox& Relation::boundingBox(bool update) const { if (!p->BBoxUpToDate && update) { if (p->Members.size() == 0) BBox = CoordBox(Coord(0,0),Coord(0,0)); else { CoordBox Clip; bool haveFirst = false; for (int i=0; i<p->Members.size(); ++i) { if (p->Members[i].second && !p->Members[i].second->boundingBox().isNull()/* && !CAST_RELATION(p->Members[i].second)*/) { if (!haveFirst) { Clip = p->Members[i].second->boundingBox(); haveFirst = true; } else Clip.merge(p->Members[i].second->boundingBox()); } } BBox = Clip; p->BBoxUpToDate = true; } } return BBox; } void Relation::drawSimple(QPainter &P, MapView *theView) { Q_UNUSED(P) Q_UNUSED(theView) } void Relation::drawTouchup(QPainter& P, MapView* theView) { if (!theView->renderOptions().options.testFlag(RendererOptions::RelationsVisible)) return; if (notEverythingDownloaded()) P.setPen(QPen(Qt::red,M_PREFS->getRelationsWidth(),Qt::DashLine)); else { if (isDirty() && isUploadable() && M_PREFS->getDirtyVisible()) P.setPen(QPen(M_PREFS->getDirtyColor(),M_PREFS->getDirtyWidth())); else P.setPen(QPen(M_PREFS->getRelationsColor(),M_PREFS->getRelationsWidth(),Qt::DashLine)); } P.drawPath(theView->transform().map(p->theBoundingPath)); } void Relation::drawSpecial(QPainter& thePainter, QPen& Pen, MapView* theView) { QPen TP(Pen); /* draw relation itself now solid if (Pen.style() == Qt::SolidLine) { TP.setStyle(Qt::DashLine); } */ thePainter.setPen(TP); buildPath(theView->projection()); thePainter.drawPath(theView->transform().map(p->theBoundingPath)); } void Relation::drawParentsSpecial(QPainter& thePainter, QPen& Pen, MapView* theView) { for (int i=0; i<sizeParents(); ++i) { if (!getParent(i)->isDeleted()) { Feature* f = CAST_FEATURE(getParent(i)); if (f) f->drawSpecial(thePainter, Pen, theView); } } } void Relation::drawChildrenSpecial(QPainter& thePainter, QPen& Pen, MapView* theView, int depth) { QPen TP(Pen); TP.setStyle(Qt::DashLine); for (int i=0; i<p->Members.size(); ++i) if (p->Members[i].second && !p->Members[i].second->isDeleted()) if (p->Members[i].second->boundingBox().intersects(theView->viewport())) { p->Members[i].second->drawSpecial(thePainter, TP, theView); if (--depth > 0) p->Members[i].second->drawChildrenSpecial(thePainter, TP, theView, depth); } } qreal Relation::pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const { Q_UNUSED(NoSnap) qreal Best = 1000000; if (!TEST_RFLAGS(RendererOptions::RelationsVisible) && !M_PREFS->getRelationsSelectableWhenHidden()) return Best; //for (int i=0; i<p->Members.size(); ++i) //{ // if (p->Members[i].second) { // qreal Dist = p->Members[i].second->pixelDistance(Target, ClearEndDistance, theProjection); // if (Dist < Best) // Best = Dist; // } //} qreal D; //QRectF bb = QRectF(theView->toView(boundingBox().bottomLeft()),theView->toView(boundingBox().topRight())); //bb.adjust(-10, -10, 10, 10); LineF F(theView->toView(boundingBox().topLeft()), theView->toView(boundingBox().topRight())); D = F.capDistance(Target); if ((D < ClearEndDistance) && (D<Best)) Best = D; F = LineF(theView->toView(boundingBox().topLeft()), theView->toView(boundingBox().bottomLeft())); D = F.capDistance(Target); if ((D < ClearEndDistance) && (D<Best)) Best = D; F = LineF(theView->toView(boundingBox().bottomRight()), theView->toView(boundingBox().bottomLeft())); D = F.capDistance(Target); if ((D < ClearEndDistance) && (D<Best)) Best = D; F = LineF(theView->toView(boundingBox().bottomRight()), theView->toView(boundingBox().topRight())); D = F.capDistance(Target); if ((D < ClearEndDistance) && (D<Best)) Best = D; return Best + 0.1; // Make sure we select simple elements first } void Relation::cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Alternatives) { for (int i=0; i<p->Members.size();) { if (p->Members[i].second && p->Members[i].second == aFeature) { QString Role = p->Members[i].first; theList->add(new RelationRemoveFeatureCommand(this, i, theDocument->getDirtyOrOriginLayer(layer()))); for (int j=0; j<Alternatives.size(); ++j) if (i+j >= p->Members.size() || p->Members[i+j].second != Alternatives[j]) { if ((i+j) == 0) theList->add(new RelationAddFeatureCommand(this, Role, Alternatives[j], 0, theDocument->getDirtyOrOriginLayer(Alternatives[j]->layer()))); else if (p->Members[i+j-1].second != Alternatives[j]) theList->add(new RelationAddFeatureCommand(this, Role, Alternatives[j], i+j, theDocument->getDirtyOrOriginLayer(Alternatives[j]->layer()))); } continue; } ++i; } if (p->Members.size() == 0) { if (!isDeleted()) { QList<Feature*> alt; theList->add(new RemoveFeatureCommand(theDocument,this,alt)); } } } bool Relation::notEverythingDownloaded() { if (lastUpdated() == Feature::NotYetDownloaded) return true; for (int i=0; i<p->Members.size(); ++i) if (p->Members.at(i).second && !CAST_RELATION(p->Members[i].second)) if (p->Members.at(i).second->notEverythingDownloaded()) return true; return false; } void Relation::add(const QString& Role, Feature* F) { p->Members.push_back(qMakePair(Role,F)); F->setParentFeature(this); p->PathUpToDate = false; p->BBoxUpToDate = false; MetaUpToDate = false; g_backend.sync(this); notifyChanges(); } void Relation::add(const QString& Role, Feature* F, int Idx) { p->Members.push_back(qMakePair(Role,F)); std::rotate(p->Members.begin()+Idx,p->Members.end()-1,p->Members.end()); F->setParentFeature(this); p->PathUpToDate = false; p->BBoxUpToDate = false; MetaUpToDate = false; g_backend.sync(this); notifyChanges(); } void Relation::remove(int Idx) { Feature* F = p->Members[Idx].second; // only remove as parent if the feature is only a member once p->Members.erase(p->Members.begin()+Idx); if (F && find(F) == p->Members.size()) F->unsetParentFeature(this); p->PathUpToDate = false; p->BBoxUpToDate = false; MetaUpToDate = false; g_backend.sync(this); notifyChanges(); } void Relation::remove(Feature* F) { for (int i=p->Members.size(); i; --i) if (F == p->Members[i-1].second) remove(i-1); } int Relation::size() const { return p->Members.size(); } int Relation::find(Feature* Pt) const { for (int i=0; i<p->Members.size(); ++i) if (Pt == p->Members[i].second) return i; return p->Members.size(); } Feature* Relation::get(int idx) { return p->Members[idx].second; } const Feature* Relation::get(int idx) const { return p->Members[idx].second; } bool Relation::isNull() const { return (p->Members.size() == 0); } const QString& Relation::getRole(int idx) const { return p->Members[idx].first; } QAbstractTableModel* Relation::referenceMemberModel(MainWindow* aMain) { ++p->ModelReferences; if (!p->theModel) p->theModel = new RelationMemberModel(p, aMain); return p->theModel; } void Relation::releaseMemberModel() { --p->ModelReferences; if (p->ModelReferences == 0) { delete p->theModel; p->theModel = 0; } } void Relation::buildPath(Projection const &theProjection) { // QPainterPath clipPath; // clipPath.addRect(cr); QMutexLocker mutlock(&featMutex); p->theBoundingPath = QPainterPath(); if (!p->Members.size()) return; QPolygonF theVector; theVector.append(theProjection.project(boundingBox().bottomLeft())); theVector.append(theProjection.project(boundingBox().topLeft())); theVector.append(theProjection.project(boundingBox().topRight())); theVector.append(theProjection.project(boundingBox().bottomRight())); theVector.append(theProjection.project(boundingBox().bottomLeft())); //QRectF bb = QPolygonF(theVector).boundingRect(); //p->theBoundingPath.addRect(bb); p->theBoundingPath.addPolygon(theVector); // p->theBoundingPath = p->theBoundingPath.intersected(clipPath); if (!p->PathUpToDate || p->ProjectionRevision != theProjection.projectionRevision()) { p->thePath = QPainterPath(); Way* outerWay = NULL; int numOuter = 0; bool isMultipolygon = false; if (tagValue("type", "") == "multipolygon") isMultipolygon = true; // Handle polygons made of scattered ways QList< QPair<QString,QPainterPath> > memberPaths; for (int i=0; i<size(); ++i) { if (CHECK_WAY(p->Members[i].second)) { Way* M = STATIC_CAST_WAY(p->Members[i].second); M->buildPath(theProjection); if (M->getPath().elementCount() > 1) { memberPaths << qMakePair(p->Members[i].first, M->getPath()); if (isMultipolygon && (p->Members[i].first == "outer" || p->Members[i].first.isEmpty())) { if (!numOuter) outerWay = M; else outerWay = NULL; ++numOuter; } } } } QList<QPainterPath> innerPaths; QList<QPainterPath> outerPaths; while (memberPaths.size()) { // handle the start... QPointF curPoint; QPainterPath curPath; QString curRole; curRole = memberPaths[0].first; curPath.moveTo(memberPaths[0].second.elementAt(0)); for (int j=1; j<memberPaths[0].second.elementCount(); ++j) { curPoint = memberPaths[0].second.elementAt(j); curPath.lineTo(curPoint); } // ... and remove it memberPaths.removeAt(0); // Check if any remaining path starts or ends at the current point for (int k=0; k<memberPaths.size(); ++k) { if (memberPaths[k].second.elementAt(0) == curPoint && memberPaths[k].first == curRole) { // Check start for (int l=1; l<memberPaths[k].second.elementCount(); ++l) { curPoint = memberPaths[k].second.elementAt(l); curPath.lineTo(curPoint); } memberPaths.removeAt(k); k=0; } else if (memberPaths[k].second.elementAt(memberPaths[k].second.elementCount()-1) == curPoint && memberPaths[k].first == curRole) { // Check end for (int l=memberPaths[k].second.elementCount()-2; l>=0; --l) { curPoint = memberPaths[k].second.elementAt(l); curPath.lineTo(curPoint); } memberPaths.removeAt(k); k=0; } } if (curRole == "inner" and isMultipolygon) innerPaths << curPath; else outerPaths << curPath; } if (outerWay && tagSize() == 1) { outerWay->rebuildPath(theProjection); for (int i=0; i<innerPaths.size(); ++i) { outerWay->addPathHole(innerPaths[i]); } } else { for (int i=0; i<outerPaths.size(); ++i) { p->thePath.addPath(outerPaths[i]); } for (int i=0; i<innerPaths.size(); ++i) { p->thePath = p->thePath.subtracted(innerPaths[i]); } } p->ProjectionRevision = theProjection.projectionRevision(); p->PathUpToDate = true; } } const QPainterPath& Relation::getPath() const { return p->thePath; } const RenderPriority& Relation::renderPriority() { if (!MetaUpToDate) updateMeta(); return p->theRenderPriority; } void Relation::updateMeta() { QMutexLocker mutlock(&featMutex); if (MetaUpToDate) return; Feature::updateMeta(); p->PathUpToDate = false; p->CalculateWidth(); p->theRenderPriority = RenderPriority(RenderPriority::IsSingular, 0., 0); for (int i=0; i<p->Members.size(); ++i) { if (Way* W = CAST_WAY(p->Members.at(i).second)) { if (W->renderPriority() < p->theRenderPriority) p->theRenderPriority = W->renderPriority(); } else if (Relation* R = CAST_RELATION(p->Members.at(i).second)) { if (R->renderPriority() < p->theRenderPriority) p->theRenderPriority = R->renderPriority(); } } MetaUpToDate = true; } bool Relation::toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict, QString changetsetid) { bool OK = true; stream.writeStartElement("relation"); Feature::toXML(stream, strict, changetsetid); // Has to be first to be picked up when reading back if (!strict) boundingBox().toXML("BoundingBox", stream); for (int i=0; i<size(); ++i) { QString Type("node"); if (CHECK_WAY(get(i))) Type="way"; else if (CHECK_RELATION(get(i))) Type="relation"; stream.writeStartElement("member"); stream.writeAttribute("type", Type); stream.writeAttribute("ref", get(i)->xmlId()); stream.writeAttribute("role", getRole(i)); stream.writeEndElement(); } tagsToXML(stream, strict); stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } Relation * Relation::fromXML(Document * d, Layer * L, QXmlStreamReader& stream) { bool hasBbox = false; QString sid = (stream.attributes().hasAttribute("id") ? stream.attributes().value("id").toString() : stream.attributes().value("xml:id").toString()); IFeature::FId id; id.type = IFeature::OsmRelation; id.numId = sid.toLongLong(); Relation* R = CAST_RELATION(d->getFeature(id)); if (!R) { R = g_backend.allocRelation(L); R->setId(id); L->add(R); Feature::fromXML(stream, R); } else { Feature::fromXML(stream, R); if (R->layer() != L) { R->layer()->remove(R); L->add(R); } while (R->p->Members.size()) R->remove(0); } stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "member") { QString Type = stream.attributes().value("type").toString(); QString sId = stream.attributes().value("ref").toString(); QString role = stream.attributes().value("role").toString(); Feature* F = 0; if (Type == "node") { IFeature::FId nId(IFeature::Point, sId.toLongLong()); Node* Part = CAST_NODE(d->getFeature(nId)); if (!Part) { Part = g_backend.allocNode(L, Coord(0,0)); Part->setId(nId); Part->setLastUpdated(Feature::NotYetDownloaded); L->add(Part); } F = Part; } else if (Type == "way") { IFeature::FId rId(IFeature::LineString, sId.toLongLong()); Way* Part = CAST_WAY(d->getFeature(rId)); if (!Part) { Part = g_backend.allocWay(L); Part->setId(rId); Part->setLastUpdated(Feature::NotYetDownloaded); L->add(Part); } F = Part; } else if (Type == "relation") { IFeature::FId RId(IFeature::OsmRelation, sId.toLongLong()); Relation* Part = dynamic_cast<Relation*>(d->getFeature(RId)); if (!Part) { Part = g_backend.allocRelation(L); Part->setId(RId); Part->setLastUpdated(Feature::NotYetDownloaded); L->add(Part); } F = Part; } if (F) { if (!hasBbox) { R->add(role, F); } else { R->p->Members.push_back(qMakePair(role,F)); F->setParentFeature(R); } } stream.readNext(); } else if (stream.name() == "tag") { R->setTag(stream.attributes().value("k").toString(), stream.attributes().value("v").toString()); stream.readNext(); } else if (stream.name() == "BoundingBox") { R->BBox = CoordBox::fromXML(stream); R->p->BBoxUpToDate = true; hasBbox = true; stream.readNext(); } else if (!stream.isWhitespace()) { qDebug() << "Relation: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } if (hasBbox && !R->isDeleted()) g_backend.indexAdd(L, R->BBox, R); return R; } QString Relation::toHtml() { QString D; D += "<i>"+QApplication::translate("MapFeature", "size")+": </i>" + QString::number(size()) + " " + QApplication::translate("MapFeature", "members"); CoordBox bb = boundingBox(); D += "<br/>"; D += "<i>"+QApplication::translate("MapFeature", "Topleft")+": </i>" + COORD2STRING(bb.topLeft().y()) + " / " + COORD2STRING(bb.topLeft().x()); D += "<br/>"; D += "<i>"+QApplication::translate("MapFeature", "Botright")+": </i>" + COORD2STRING(bb.bottomRight().y()) + " / " + COORD2STRING(bb.bottomRight().x()); return Feature::toMainHtml(QApplication::translate("MapFeature", "Relation"),"relation").arg(D); } qreal Relation::widthOf() { if (MetaUpToDate == false) updateMeta(); return p->Width; } /* RELATIONMODEL */ RelationMemberModel::RelationMemberModel(RelationPrivate *aParent, MainWindow* aMain) : Parent(aParent), Main(aMain) { } int RelationMemberModel::rowCount(const QModelIndex &) const { return Parent->Members.size(); } int RelationMemberModel::columnCount(const QModelIndex &) const { return 2; } QVariant RelationMemberModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (index.row() >= (int)Parent->Members.size()) return QVariant(); if (role == Qt::DisplayRole) { if (index.column() == 0) return Parent->Members[index.row()].first; else return Parent->Members[index.row()].second->description(); } else if (role == Qt::EditRole) { if ( (index.column() == 0) ) return Parent->Members[index.row()].first; } else if (role == Qt::UserRole) { QVariant v; v.setValue((Feature *)(Parent->Members[index.row()].second)); return v; } return QVariant(); } QVariant RelationMemberModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) { if (section == 0) return QApplication::translate("MapFeature", "Role"); else return QApplication::translate("MapFeature", "Member"); } return QVariant(); } Qt::ItemFlags RelationMemberModel::flags(const QModelIndex &index) const { if (!index.isValid()) return Qt::ItemIsEnabled; if (index.column() == 0) return QAbstractTableModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable; return QAbstractTableModel::flags(index) | Qt::ItemIsEnabled | Qt::ItemIsSelectable; } bool RelationMemberModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (index.isValid() && role == Qt::EditRole) { Feature* Tmp = Parent->Members[index.row()].second; CommandList* L = new CommandList(MainWindow::tr("Relation Modified %1").arg(Parent->theRelation->id().numId), Parent->theRelation); L->add(new RelationRemoveFeatureCommand(Parent->theRelation, index.row(), Main->document()->getDirtyOrOriginLayer(Parent->theRelation->layer()))); L->add(new RelationAddFeatureCommand(Parent->theRelation,value.toString(),Tmp,index.row(), Main->document()->getDirtyOrOriginLayer(Parent->theRelation->layer()))); Main->document()->addHistory(L); emit dataChanged(index, index); return true; } return false; } �����������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Relation.h�����������������������������������������������������������0000664�0000000�0000000�00000004572�11770671653�0020270�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_RELATIONS_H_ #define MERKAARTOR_RELATIONS_H_ #include "Document.h" #include "Feature.h" class MainWindow; class RelationPrivate; class QAbstractTableModel; class QProgressDialog; class Relation : public Feature { friend class MemoryBackend; friend class SpatialiteBackend; protected: Relation(void); Relation(const Relation&); virtual ~Relation(void); public: virtual QString getClass() const {return "Relation";} virtual char getType() const {return IFeature::OsmRelation;} virtual void updateMeta(); virtual const CoordBox& boundingBox(bool update=true) const; virtual void drawSimple(QPainter& P, MapView* theView); virtual void drawTouchup(QPainter& P, MapView* theView); virtual void drawSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawParentsSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawChildrenSpecial(QPainter& P, QPen& Pen, MapView* theView, int depth); virtual qreal pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const; virtual void cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Alternatives); virtual bool notEverythingDownloaded(); virtual const RenderPriority& renderPriority(); void add(const QString& Role, Feature* Pt); void add(const QString& Role, Feature* Pt, int Idx); virtual void remove(int Idx); virtual void remove(Feature* F); virtual int size() const; virtual int find(Feature* Pt) const; virtual Feature* get(int idx); virtual const Feature* get(int Idx) const; virtual bool isNull() const; const QString& getRole(int Idx) const; QAbstractTableModel* referenceMemberModel(MainWindow* aMain); void releaseMemberModel(); QString description() const; virtual void setLayer(Layer* aLayer); virtual void partChanged(Feature* F, int ChangeId); const QPainterPath& getPath() const; void buildPath(Projection const &theProjection); virtual bool toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict=false, QString changetsetid=""); static Relation* fromXML(Document* d, Layer* L, QXmlStreamReader& stream); virtual QString toHtml(); qreal widthOf(); private: RelationPrivate* p; }; Q_DECLARE_METATYPE( Relation * ); #endif ��������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/TrackSegment.cpp�����������������������������������������������������0000664�0000000�0000000�00000024202�11770671653�0021425�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "TrackSegment.h" #include "Global.h" #include "DocumentCommands.h" #include "TrackSegmentCommands.h" #include "MapView.h" #include "MapRenderer.h" #include "Node.h" #include "LineF.h" #include <QtGui/QPainter> #include <QProgressDialog> #include <algorithm> #include <QList> #define TEST_RFLAGS(x) theView->renderOptions().options.testFlag(x) class TrackSegmentPrivate { public: TrackSegmentPrivate() : Distance(0) { } QList<TrackNode*> Nodes; qreal Distance; CoordBox BBox; }; TrackSegment::TrackSegment(void) : Feature() { p = new TrackSegmentPrivate; } TrackSegment::TrackSegment(const TrackSegment& other) : Feature(other) { p = new TrackSegmentPrivate; } TrackSegment::~TrackSegment(void) { // TODO Those cleanup shouldn't be necessary and lead to crashes // Check for side effect of supressing them. // for (int i=0; i<p->Nodes.size(); ++i) // p->Nodes[i]->unsetParentFeature(this); delete p; } void TrackSegment::sortByTime() { for (int i=0; i<p->Nodes.size(); ++i) { for (int j=i+1; j<p->Nodes.size(); ++j) { if (p->Nodes[i]->time() > p->Nodes[j]->time()) { QDateTime dt(p->Nodes[i]->time()); p->Nodes[i]->setTime(p->Nodes[j]->time()); p->Nodes[j]->setTime(dt); } } } } QString TrackSegment::description() const { return "tracksegment"; } void TrackSegment::add(TrackNode* aPoint) { p->Nodes.push_back(aPoint); aPoint->setParentFeature(this); g_backend.sync(this); } void TrackSegment::add(TrackNode* Pt, int Idx) { p->Nodes.push_back(Pt); std::rotate(p->Nodes.begin()+Idx,p->Nodes.end()-1,p->Nodes.end()); g_backend.sync(this); } int TrackSegment::find(Feature* Pt) const { for (int i=0; i<p->Nodes.size(); ++i) if (p->Nodes[i] == Pt) return i; return p->Nodes.size(); } void TrackSegment::remove(int idx) { Node* Pt = p->Nodes[idx]; p->Nodes.erase(p->Nodes.begin()+idx); Pt->unsetParentFeature(this); g_backend.sync(this); } void TrackSegment::remove(Feature* F) { for (int i=p->Nodes.size(); i; --i) if (p->Nodes[i-1] == F) remove(i-1); } int TrackSegment::size() const { return p->Nodes.size(); } Feature* TrackSegment::get(int i) { return p->Nodes[i]; } TrackNode* TrackSegment::getNode(int i) { return p->Nodes[i]; } const Feature* TrackSegment::get(int Idx) const { return p->Nodes[Idx]; } bool TrackSegment::isNull() const { return (p->Nodes.size() == 0); } void TrackSegment::drawDirectionMarkers(QPainter &P, QPen &pen, const QPointF & FromF, const QPointF & ToF) { if (::distance(FromF,ToF) <= 30.0) return; const qreal DistFromCenter=10.0; const qreal theWidth = !M_PREFS->getSimpleGpxTrack() ? 5.0 : 8.0; const qreal A = angle(FromF-ToF); QPointF T(DistFromCenter*cos(A), DistFromCenter*sin(A)); QPointF V1(theWidth*cos(A+M_PI/6),theWidth*sin(A+M_PI/6)); QPointF V2(theWidth*cos(A-M_PI/6),theWidth*sin(A-M_PI/6)); pen.setStyle(Qt::SolidLine); P.setPen(pen); QPointF H(FromF+ToF); H /= 2.0; P.drawLine(H-T,H-T+V1); P.drawLine(H-T,H-T+V2); } void TrackSegment::drawSimple(QPainter &P, MapView *theView) { Q_UNUSED(P) Q_UNUSED(theView) } void TrackSegment::drawTouchup(QPainter &P, MapView* theView) { QPen pen; if (!TEST_RFLAGS(RendererOptions::TrackSegmentVisible)) return; for (int i=1; i<p->Nodes.size(); ++i) { if (!theView->viewport().contains(p->Nodes[i-1]->position()) && !theView->viewport().contains(p->Nodes[i]->position())) continue; QPointF FromF = theView->toView(p->Nodes[i-1]); QPointF ToF = theView->toView(p->Nodes[i]); if (!M_PREFS->getSimpleGpxTrack()) { qreal distance = p->Nodes[i-1]->position().distanceFrom(p->Nodes[i]->position()); qreal slope = (p->Nodes[i]->elevation() - p->Nodes[i-1]->elevation()) / (distance * 10.0); qreal speed = p->Nodes[i]->speed(); int width = M_PREFS->getGpxTrackWidth(); // Dynamic track line width adaption to zoom level if (theView->pixelPerM() > 2) width++; else if (theView->pixelPerM() < 1) width--; // Encode speed in width of path ... qreal penWidth = 1.0; if (speed > 10.0) penWidth = qMin(1.0+speed*0.02, 5.0); penWidth *= width; // ... and slope in the color int green = 0; int red = 0; if (slope > 2.0) { slope = qMin(slope, (qreal)20.0); green = 48 + int(slope*79.0 / 20.0); } else if (slope < -2.0) { slope = qMax(slope, (qreal)-20.0); red = 48 + int(-slope*79.0 / 20.0); } pen.setColor(QColor(128 + red, 128 + green, 128)); pen.setStyle(Qt::DotLine); pen.setWidthF(penWidth); } else { int width = M_PREFS->getGpxTrackWidth(); // Dynamic track line width adaption to zoom level if (theView->pixelPerM() > 2) width++; else if (theView->pixelPerM() < 1) width--; pen.setWidthF(width); pen.setColor(M_PREFS->getGpxTrackColor()); } P.setPen(pen); P.drawLine(FromF,ToF); drawDirectionMarkers(P, pen, FromF, ToF); } } bool TrackSegment::notEverythingDownloaded() { return false; } void TrackSegment::drawSpecial(QPainter&, QPen&, MapView*) { // not implemented } void TrackSegment::drawParentsSpecial(QPainter&, QPen&, MapView*) { // not implemented } void TrackSegment::drawChildrenSpecial(QPainter&, QPen&, MapView*, int) { // not implemented } const CoordBox& TrackSegment::boundingBox(bool) const { if (p->Nodes.size()) { p->BBox = CoordBox(p->Nodes[0]->position(),p->Nodes[0]->position()); for (int i=1; i<p->Nodes.size(); ++i) p->BBox.merge(p->Nodes[i]->position()); } else p->BBox = CoordBox(); return p->BBox; } qreal TrackSegment::pixelDistance(const QPointF& , qreal , const QList<Feature*>& , MapView*) const { // unable to select that one return 1000000; } void TrackSegment::cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Proposals) { for (int i=0; i<p->Nodes.size();) { if (p->Nodes[i] == aFeature) { QList<TrackNode*> Alternatives; for (int j=0; j<Proposals.size(); ++j) { TrackNode* Pt = CAST_TRACKNODE(Proposals[j]); if (Pt) Alternatives.push_back(Pt); } if ( (p->Nodes.size() == 1) && (Alternatives.size() == 0) ) theList->add(new RemoveFeatureCommand(theDocument,this)); else { for (int j=0; j<Alternatives.size(); ++j) { if (i < p->Nodes.size()) { if (p->Nodes[i+j] != Alternatives[j]) { if ((i+j) == 0) theList->add(new TrackSegmentAddNodeCommand(this, Alternatives[j], i+j,Alternatives[j]->layer())); else if (p->Nodes[i+j-1] != Alternatives[j]) theList->add(new TrackSegmentAddNodeCommand(this, Alternatives[j], i+j,Alternatives[j]->layer())); } } } theList->add(new TrackSegmentRemoveNodeCommand(this, (TrackNode*)aFeature,aFeature->layer())); } } ++i; } } void TrackSegment::partChanged(Feature*, int) { } void TrackSegment::updateMeta() { QMutexLocker mutlock(&featMutex); if (MetaUpToDate) return; Feature::updateMeta(); p->Distance = 0; if (p->Nodes.size() == 0) { MetaUpToDate = true; return; } for (int i=0; (i+1)<p->Nodes.size(); ++i) { if (p->Nodes[i] && p->Nodes[i+1]) { const Coord & here = p->Nodes[i]->position(); const Coord & next = p->Nodes[i+1]->position(); p->Distance += next.distanceFrom(here); } } MetaUpToDate = true; } qreal TrackSegment::distance() { if (MetaUpToDate == false) updateMeta(); return p->Distance; } int TrackSegment::duration() const { return p->Nodes[0]->time().secsTo(p->Nodes[p->Nodes.size() - 1]->time()); } bool TrackSegment::toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, bool forExport) { bool OK = true; stream.writeStartElement("trkseg"); if (!forExport) stream.writeAttribute("xml:id", xmlId()); for (int i=0; i<size(); ++i) { dynamic_cast <Node*> (get(i))->toGPX(stream, progress, "trkpt", forExport); } stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } bool TrackSegment::toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool, QString) { return toGPX(stream, progress, false); } TrackSegment* TrackSegment::fromGPX(Document* d, Layer* L, QXmlStreamReader& stream, QProgressDialog * progress) { TrackSegment* ts = g_backend.allocSegment(L); L->add(ts); if (stream.attributes().hasAttribute("xml:id")) ts->setId(IFeature::FId(IFeature::GpxSegment, stream.attributes().value("xml:id").toString().toLongLong())); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "trkpt") { TrackNode* N = TrackNode::fromGPX(d, L, stream); ts->add(N); progress->setValue(stream.characterOffset()); } if (progress->wasCanceled()) break; stream.readNext(); } return ts; } TrackSegment* TrackSegment::fromXML(Document* d, Layer* L, QXmlStreamReader& stream, QProgressDialog * progress) { return TrackSegment::fromGPX(d, L, stream, progress); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/TrackSegment.h�������������������������������������������������������0000664�0000000�0000000�00000004633�11770671653�0021100�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_TRACKSEGMENT_H_ #define MERKATOR_TRACKSEGMENT_H_ #include "Feature.h" class TrackSegmentPrivate; class TrackNode; class QProgressDialog; class TrackSegment : public Feature { friend class MemoryBackend; friend class SpatialiteBackend; protected: TrackSegment(void); ~TrackSegment(void); TrackSegment(const TrackSegment& other); private: void drawDirectionMarkers(QPainter & P, QPen & pen, const QPointF & FromF, const QPointF & ToF); public: virtual QString getClass() const {return "TrackSegment";} virtual char getType() const {return IFeature::GpxSegment;} virtual void updateMeta(); virtual const CoordBox& boundingBox(bool update=true) const; virtual void drawSimple(QPainter& P, MapView* theView); virtual void drawTouchup(QPainter& P, MapView* theView); virtual void drawSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawParentsSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawChildrenSpecial(QPainter& P, QPen& Pen, MapView* theView, int depth); virtual qreal pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const; void cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Alternatives); virtual bool notEverythingDownloaded(); virtual QString description() const; void add(TrackNode* aPoint); void add(TrackNode* Pt, int Idx); virtual int find(Feature* Pt) const; virtual void remove(int idx); virtual void remove(Feature* F); virtual Feature* get(int idx); virtual int size() const; TrackNode* getNode(int idx); virtual const Feature* get(int Idx) const; virtual bool isNull() const; void sortByTime(); virtual void partChanged(Feature* F, int ChangeId); qreal distance(); int duration() const; virtual bool toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, bool forExport=false); static TrackSegment* fromGPX(Document* d, Layer* L, QXmlStreamReader& stream, QProgressDialog * progress); virtual bool toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict=false,QString changetsetid=""); static TrackSegment* fromXML(Document* d, Layer* L, QXmlStreamReader& stream, QProgressDialog * progress); virtual QString toHtml() {return "";} private: TrackSegmentPrivate* p; }; #endif �����������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Way.cpp��������������������������������������������������������������0000664�0000000�0000000�00000071345�11770671653�0017610�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "Way.h" #include "Node.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "Coord.h" #include "Painting.h" #include "MapView.h" #include "MapRenderer.h" #include "LineF.h" #include "MDiscardableDialog.h" #include "Utils.h" #include <QApplication> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QProgressDialog> #include <algorithm> #include <QList> #if (QT_VERSION < 0x040700 || defined(FORCE_46)) && !defined(_MOBILE) #include <ggl/ggl.hpp> #include <ggl/geometries/cartesian2d.hpp> #include <ggl/geometries/adapted/std_as_linestring.hpp> #include <ggl/algorithms/intersects.hpp> #endif #define TEST_RFLAGS(x) theView->renderOptions().options.testFlag(x) class WayPrivate { public: WayPrivate(Way* aWay) : theWay(aWay), BBoxUpToDate(false) , Area(0), Distance(0) , PathUpToDate(false), VirtualsUptodate(false) , ProjectionRevision(0) , BestSegment(-1) , SimpleWidth(0) { } Way* theWay; QList<Node*> Nodes; QList<Node*> virtualNodes; bool BBoxUpToDate; qreal Area; qreal Distance; bool NotEverythingDownloaded; bool PathUpToDate; bool VirtualsUptodate; QPainterPath thePath; int ProjectionRevision; int BestSegment; qreal SimpleWidth; QColor SimpleColor; RenderPriority theRenderPriority; // 10 (24) void CalculateWidth(); void doUpdateVirtuals(); void removeVirtuals(); void addVirtuals(); }; #define DEFAULTWIDTH 6 #define LANEWIDTH 4 void WayPrivate::CalculateWidth() { QString h = theWay->tagValue("highway",QString()); if (h.isEmpty()) { SimpleWidth = LANEWIDTH; SimpleColor = QColor(128, 128, 128); return; } SimpleWidth = LANEWIDTH; SimpleColor = QColor(0, 0, 0); if ( (h == "motorway") || (h=="motorway_link") ) { SimpleWidth = 4*LANEWIDTH; // 3 lanes plus emergency SimpleColor = QColor(128, 155, 192); } else if ( (h == "trunk") || (h=="trunk_link") ) { SimpleWidth = 3*LANEWIDTH; // 2 lanes plus emergency SimpleColor = QColor(127, 201, 127); } else if ( (h == "primary") || (h=="primary_link") ) { SimpleWidth = 2*LANEWIDTH; // 2 lanes SimpleColor = QColor(228, 109, 113); } else if (h == "secondary") { SimpleWidth = 2*LANEWIDTH; // 2 lanes SimpleColor = QColor(253, 191, 252); } else if (h == "tertiary") { SimpleWidth = 1.5*LANEWIDTH; // shared middle lane SimpleColor = QColor(255, 229, 33); } else if (h == "cycleway") { SimpleWidth = LANEWIDTH; SimpleColor = QColor(0, 0, 255); } QString s(theWay->tagValue("width",QString())); if (!s.isNull()) SimpleWidth = s.toDouble(); } void WayPrivate::removeVirtuals() { while (virtualNodes.size()) { virtualNodes[0]->unsetParentFeature(theWay); g_backend.deallocVirtualNode(virtualNodes[0]); // if (virtualNodes[0]->layer()) // virtualNodes[0]->layer()->deleteFeature(virtualNodes[0]); // delete p->virtualNodes[0]; virtualNodes.erase(virtualNodes.begin()); } } void WayPrivate::addVirtuals() { for (int i=1; i<Nodes.size(); ++i) { QLineF l(Nodes[i-1]->position(), Nodes[i]->position()); l.setLength(l.length()/2); Node* v = g_backend.allocVirtualNode(l.p2()); v->setVirtual(true); v->setParentFeature(theWay); // theWay->layer()->add(v); virtualNodes.push_back(v); } } void WayPrivate::doUpdateVirtuals() { // Q_ASSERT(!(theWay->layer()->isIndexingBlocked())); if (VirtualsUptodate) return; removeVirtuals(); if (theWay->canAddVirtualNodes()) addVirtuals(); VirtualsUptodate = true; } /**************************/ Way::Way(void) : Feature() { p = new WayPrivate(this); } Way::Way(const Way& other) : Feature(other) { p = new WayPrivate(this); } Way::~Way(void) { // TODO Those cleanup shouldn't be necessary and lead to crashes // Check for side effect of supressing them. // while (p->virtualNodes.size()) { // p->virtualNodes[0]->unsetParentFeature(this); // delete p->virtualNodes[0]; // p->virtualNodes.erase(p->virtualNodes.begin()); // } // for (unsigned int i=0; i<p->Nodes.size(); ++i) // if (p->Nodes[i]) // p->Nodes[i]->unsetParentFeature(this); delete p; } char Way::getType() const { if (isClosed()) return (IFeature::LineString | IFeature::Polygon); else return IFeature::LineString; } void Way::setDeleted(bool delState) { Feature::setDeleted(delState); p->VirtualsUptodate = false; if (p->Nodes.size()) p->doUpdateVirtuals(); } void Way::setLayer(Layer* L) { if (L) { for (int i=0; i<p->Nodes.size(); ++i) { if (p->Nodes[i]) p->Nodes[i]->setParentFeature(this); } } else { for (int i=0; i<p->Nodes.size(); ++i) { if (p->Nodes[i]) p->Nodes[i]->unsetParentFeature(this); } } Feature::setLayer(L); p->VirtualsUptodate = false; } void Way::partChanged(Feature* /*F*/, int ChangeId) { if (isDeleted()) return; p->BBoxUpToDate = false; p->PathUpToDate = false; MetaUpToDate = false; p->VirtualsUptodate = false; g_backend.sync(this); notifyParents(ChangeId); } QString Way::description() const { QString s(tagValue("name","")); if (!s.isEmpty()) return QString("%1 (%2)").arg(s).arg(id().numId); return QString("%1").arg(id().numId); } void Way::add(Node* Pt) { add(Pt, p->Nodes.size()); } void Way::add(Node* Pt, int Idx) { p->Nodes.insert(p->Nodes.begin() + Idx, Pt); // p->Nodes.push_back(Pt); // std::rotate(p->Nodes.begin()+Idx,p->Nodes.end()-1,p->Nodes.end()); Pt->setParentFeature(this); g_backend.sync(Pt); p->BBoxUpToDate = false; p->PathUpToDate = false; MetaUpToDate = false; p->VirtualsUptodate = false; g_backend.sync(this); notifyChanges(); } int Way::find(Feature* Pt) const { for (int i=0; i<p->Nodes.size(); ++i) if (p->Nodes[i] == Pt) return i; return p->Nodes.size(); } int Way::findVirtual(Feature* Pt) const { for (int i=0; i<p->virtualNodes.size(); ++i) if (p->virtualNodes[i] == Pt) return i; return p->virtualNodes.size(); } void Way::remove(int idx) { Node* Pt = p->Nodes[idx]; // only remove as parent if the node is only included once p->Nodes.erase(p->Nodes.begin()+idx); if (Pt && (find(Pt) >= size())) Pt->unsetParentFeature(this); g_backend.sync(Pt); p->BBoxUpToDate = false; p->PathUpToDate = false; MetaUpToDate = false; p->VirtualsUptodate = false; g_backend.sync(this); notifyChanges(); } void Way::remove(Feature* F) { for (int i=p->Nodes.size(); i; --i) if (p->Nodes[i-1] == F) remove(i-1); } int Way::size() const { return p->Nodes.size(); } Node* Way::getNode(int idx) { return p->Nodes.at(idx); } const Node* Way::getNode(int idx) const { return p->Nodes.at(idx); } const QList<NodePtr>& Way::getNodes() const { return p->Nodes; } const QList<NodePtr>& Way::getVirtuals() const { return p->virtualNodes; } Feature* Way::get(int idx) { return p->Nodes.at(idx); } const Feature* Way::get(int idx) const { return p->Nodes.at(idx); } bool Way::isNull() const { return (p->Nodes.size() == 0); } bool Way::notEverythingDownloaded() { if (MetaUpToDate == false) updateMeta(); return p->NotEverythingDownloaded; } const CoordBox& Way::boundingBox(bool update) const { if (!p->BBoxUpToDate && update) { if (p->Nodes.size()) { bool haveFirst = false; for (int i=0; i<p->Nodes.size(); ++i) if (!haveFirst && !p->Nodes[i]->position().isNull()) { BBox = p->Nodes[i]->boundingBox(); haveFirst = true; } else BBox.merge(p->Nodes[i]->position()); } else BBox = CoordBox(Coord(0,0),Coord(0,0)); p->BBoxUpToDate = true; } return BBox; } void Way::drawSimple(QPainter &P, MapView *theView) { QBrush theBrush(Qt::NoBrush); QPen thePen(Qt::NoPen); if (!M_PREFS->getUseStyledWireframe() || !hasPainter()) { // if (p->Area > 0.0) { // theBrush = QBrush(QColor(240, 240, 240, 127)); // } thePen = QPen(p->SimpleColor,(qreal)p->SimpleWidth/LANEWIDTH); } else { const FeaturePainter* thePainter = getCurrentPainter(); if (thePainter->ForegroundFill && p->Area > 0.0) { theBrush = thePainter->ForegroundFillFillColor; if (thePainter->DrawForeground) thePen = QPen(thePainter->ForegroundColor,thePainter->ForegroundOffset); else if (thePainter->DrawBackground) thePen = QPen(thePainter->BackgroundColor,thePainter->BackgroundOffset); else thePen = QPen(p->SimpleColor,(qreal)p->SimpleWidth/LANEWIDTH); } else if (thePainter->DrawForeground) thePen = QPen(thePainter->ForegroundColor,thePainter->ForegroundOffset); else thePen = QPen(p->SimpleColor,(qreal)p->SimpleWidth/LANEWIDTH); } P.setBrush(theBrush); P.setPen(thePen); P.drawPath(theView->transform().map(p->thePath)); } void Way::updateMeta() { QMutexLocker mutlock(&featMutex); if (MetaUpToDate) return; Feature::updateMeta(); p->Area = 0; p->Distance = 0; p->CalculateWidth(); p->NotEverythingDownloaded = false; if (lastUpdated() == Feature::NotYetDownloaded) p->NotEverythingDownloaded = true; else for (int i=0; i<p->Nodes.size(); ++i) if (p->Nodes.at(i) && p->Nodes.at(i)->notEverythingDownloaded()) { p->NotEverythingDownloaded = true; break; } if (p->Nodes.size() == 0) return; bool isArea = false; if (tagValue("highway", "") == "" || tagValue("area", "") != "") isArea = (p->Nodes[0] == p->Nodes[p->Nodes.size()-1]); for (int i=0; (i+1)<p->Nodes.size(); ++i) { if (p->Nodes[i] && p->Nodes[i+1]) { const Coord & here = p->Nodes[i]->position(); const Coord & next = p->Nodes[i+1]->position(); p->Distance += next.distanceFrom(here); } } if (isArea) { p->Area = p->Distance; p->theRenderPriority = RenderPriority(RenderPriority::IsArea,-fabs(p->Area), 0); } else { qreal Priority = tagValue("layer","0").toInt(); if (Priority >= 0) Priority++; int layer = Priority; // dummy number to get a deterministic feature sort // Priority += sin(intToRad(boundingBox().lonDiff())); Priority += p->Distance / INT_MAX; p->theRenderPriority = RenderPriority(RenderPriority::IsLinear,Priority, layer); } p->doUpdateVirtuals(); MetaUpToDate = true; } qreal Way::distance() { if (MetaUpToDate == false) updateMeta(); return p->Distance; } bool Way::isClosed() const { // minimal closed way is a triangle, with 4 nodes (3 distinct) return (p->Nodes.size() > 3 && p->Nodes[0] == p->Nodes[p->Nodes.size()-1]); } qreal Way::area() { if (MetaUpToDate == false) updateMeta(); return p->Area; } qreal Way::widthOf() { if (MetaUpToDate == false) updateMeta(); return p->SimpleWidth; } void Way::drawTouchup(QPainter& P, MapView* theView) { if (isDirty() && isUploadable() && M_PREFS->getDirtyVisible()) { QPen thePen(M_PREFS->getDirtyColor(),M_PREFS->getDirtyWidth()); P.setPen(thePen); P.drawPath(theView->transform().map(getPath())); } qreal theWidth = theView->nodeWidth(); bool Draw = (theWidth >= 1); if (!Draw || !theView->renderOptions().options.testFlag(RendererOptions::VirtualNodesVisible) || !theView->renderOptions().options.testFlag(RendererOptions::NodesVisible) || isReadonly()) return; theWidth /= 2; P.setPen(QColor(0,0,0)); foreach (NodePtr N, p->virtualNodes) { if (theView->viewport().contains(N->position())) { QPoint p = theView->toView(N); P.drawLine(p+QPoint(-theWidth, -theWidth), p+QPoint(theWidth, theWidth)); P.drawLine(p+QPoint(theWidth, -theWidth), p+QPoint(-theWidth, theWidth)); } } } void Way::drawSpecial(QPainter& thePainter, QPen& Pen, MapView* theView) { thePainter.setPen(Pen); if (p->BestSegment != -1) thePainter.drawLine(theView->transform().map(theView->projection().project(getSegment(p->BestSegment)))); else { buildPath(theView->projection()); thePainter.drawPath(theView->transform().map(p->thePath)); } } void Way::drawParentsSpecial(QPainter& thePainter, QPen& Pen, MapView* theView) { for (int i=0; i<sizeParents(); ++i) { if (!getParent(i)->isDeleted()) { Feature* f = CAST_FEATURE(getParent(i)); if (f) f->drawSpecial(thePainter, Pen, theView); } } } void Way::drawChildrenSpecial(QPainter& thePainter, QPen& Pen, MapView* theView, int depth) { Q_UNUSED(depth); QPen TP(Pen); TP.setWidth(TP.width()*3); TP.setCapStyle(Qt::RoundCap); thePainter.setPen(TP); QPolygonF Pl; if (p->BestSegment != -1) { for (int i=p->BestSegment; i<=p->BestSegment+1; ++i) if (getNode(i)->isVisible() && !getNode(i)->isVirtual()) Pl.append(getNode(i)->projected()); } else buildPolygonFromRoad(this,theView->projection(),Pl); thePainter.drawPoints(theView->transform().map(Pl)); } qreal Way::pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const { qreal Best = 1000000; p->BestSegment = -1; // if (selectNodes) { // for (unsigned int i=0; i<p->Nodes.size(); ++i) // { // if (p->Nodes.at(i)) { // qreal x = ::distance(Target, theView->toView(p->Nodes.at(i))); // if (x<ClearEndDistance) // return Best; // } // } // } for (int i=0; i<p->Nodes.size()-1; ++i) { if (NoSnap.contains(p->Nodes.at(i)) || NoSnap.contains(p->Nodes.at(i+1))) continue; if (p->Nodes.at(i) && p->Nodes.at(i+1)) { LineF F(theView->toView(p->Nodes.at(i)),theView->toView(p->Nodes.at(i+1))); qreal D = F.capDistance(Target); if (D < ClearEndDistance && D < Best) { Best = D; if (g_Merk_Segment_Mode) p->BestSegment = i; } } } return Best; } Node* Way::pixelDistanceNode(const QPointF& Target, qreal ClearEndDistance, MapView* theView, const QList<Feature*>& NoSnap, bool NoSelectVirtuals) const { qreal Best = 1000000; Node* ret = NULL; for (int i=0; i<p->Nodes.size(); ++i) { if (p->Nodes.at(i) && !NoSnap.contains(p->Nodes.at(i))) { qreal D = ::distance(Target,theView->toView(p->Nodes.at(i))); if (D < ClearEndDistance && D < Best) { Best = D; ret = p->Nodes.at(i); } } } if (!NoSelectVirtuals && M_PREFS->getVirtualNodesVisible()) { for (int i=0; i<p->virtualNodes.size(); ++i) { if (p->virtualNodes.at(i)) { p->virtualNodes.at(i)->buildPath(theView->projection()); qreal D = ::distance(Target,theView->toView(p->virtualNodes.at(i))); if (D < ClearEndDistance && D < Best) { Best = D; return p->virtualNodes.at(i); } } } } return ret; } void Way::cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Proposals) { for (int i=0; i<p->Nodes.size();) { if (p->Nodes[i] == aFeature) { QList<Node*> Alternatives; for (int j=0; j<Proposals.size(); ++j) { Node* Pt = dynamic_cast<Node*>(Proposals[j]); if (Pt) Alternatives.push_back(Pt); } for (int j=0; j<Alternatives.size(); ++j) { if (p->Nodes[i+j] != Alternatives[j]) { if ((i+j) == 0) theList->add(new WayAddNodeCommand(this, Alternatives[j], 0,theDocument->getDirtyOrOriginLayer(layer()))); else if (p->Nodes[i+j-1] != Alternatives[j] && (i+j+1 >= p->Nodes.size() || p->Nodes[i+j+1] != Alternatives[j])) theList->add(new WayAddNodeCommand(this, Alternatives[j], i+j,theDocument->getDirtyOrOriginLayer(layer()))); } } theList->add(new WayRemoveNodeCommand(this, (Node*)aFeature,theDocument->getDirtyOrOriginLayer(layer()))); } ++i; } if (p->Nodes.size() == 1) { if (!isDeleted()) { QList<Feature*> alt; theList->add(new WayRemoveNodeCommand(this, p->Nodes[0], theDocument->getDirtyOrOriginLayer(layer()))); theList->add(new RemoveFeatureCommand(theDocument,this,alt)); } } } const QPainterPath& Way::getPath() const { return p->thePath; } void Way::addPathHole(const QPainterPath& pth) { if (!p->PathUpToDate) return; p->thePath = p->thePath.subtracted(pth); } void Way::rebuildPath(const Projection &theProjection) { p->PathUpToDate = false; buildPath(theProjection); } void Way::buildPath(const Projection &theProjection) { QMutexLocker mutlock(&featMutex); if (p->PathUpToDate && p->ProjectionRevision == theProjection.projectionRevision()) return; else { p->thePath = QPainterPath(); if (p->Nodes.size() < 2) { p->PathUpToDate = true; return; } p->thePath.moveTo(p->Nodes.at(0)->projected(theProjection)); for (int i=1; i<p->Nodes.size(); ++i) { p->thePath.lineTo((p->Nodes.at(i)->projected(theProjection))); } for (int i=0; i<p->virtualNodes.size(); ++i) { p->virtualNodes[i]->buildPath(theProjection); } p->ProjectionRevision = theProjection.projectionRevision(); p->PathUpToDate = true; } } bool Way::deleteChildren(Document* theDocument, CommandList* theList) { if (lastUpdated() == Feature::OSMServerConflict) return true; QList<Feature*> Alternatives; QMap<Feature*, int> ToDelete; for (int i=(int)p->Nodes.size()-1; i>=0; --i) { Node* N = p->Nodes[i]; if (!theDocument->isDownloadedSafe(N->boundingBox()) && N->hasOSMId()) continue; int sizeValidParents = 0; for (int j=0; j<N->sizeParents(); ++j) if (!N->getParent(j)->isDeleted()) sizeValidParents++; if (sizeValidParents == 1) { ToDelete[N] = i; } } QList<Feature*> ToDeleteKeys = ToDelete.uniqueKeys(); for (int i=0; i<ToDeleteKeys.size(); ++i) { if (!ToDeleteKeys[i]->isDeleted()) theList->add(new RemoveFeatureCommand(theDocument, ToDeleteKeys[i], Alternatives)); } return true; } bool Way::toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, bool forExport) { bool OK = true; stream.writeStartElement("rte"); if (!forExport) stream.writeAttribute("xml:id", xmlId()); QString s = tagValue("name",""); if (!s.isEmpty()) { stream.writeTextElement("name", s); } s = tagValue("_comment_",""); if (!s.isEmpty()) { stream.writeTextElement("cmt", s); } s = tagValue("_description_",""); if (!s.isEmpty()) { stream.writeTextElement("desc", s); } for (int i=0; i<size(); ++i) { if (!getNode(i)->isVirtual()) getNode(i)->toGPX(stream, progress, "rtept", forExport); } stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } bool Way::toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict, QString changetsetid) { bool OK = true; stream.writeStartElement("way"); Feature::toXML(stream, strict, changetsetid); // Has to be first to be picked up when reading back if (!strict) boundingBox().toXML("BoundingBox", stream); if (size()) { stream.writeStartElement("nd"); stream.writeAttribute("ref", get(0)->xmlId()); stream.writeEndElement(); for (int i=1; i<size(); ++i) { if (!getNode(i)->isVirtual()) if (get(i)->xmlId() != get(i-1)->xmlId()) { stream.writeStartElement("nd"); stream.writeAttribute("ref", get(i)->xmlId()); stream.writeEndElement(); } } } tagsToXML(stream, strict); stream.writeEndElement(); if (progress) progress->setValue(progress->value()+1); return OK; } Way * Way::fromXML(Document* d, Layer * L, QXmlStreamReader& stream) { bool hasBbox = false; QString sid = (stream.attributes().hasAttribute("id") ? stream.attributes().value("id").toString() : stream.attributes().value("xml:id").toString()); IFeature::FId id(IFeature::LineString, sid.toLongLong()); Way* R = CAST_WAY(d->getFeature(id)); if (!R) { R = g_backend.allocWay(L); R->setId(id); L->add(R); Feature::fromXML(stream, R); } else { Feature::fromXML(stream, R); if (R->layer() != L) { R->layer()->remove(R); L->add(R); } while (R->p->Nodes.size()) R->remove(0); } stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "nd") { QString sId = stream.attributes().value("ref").toString(); IFeature::FId nId(IFeature::Point, sId.toLongLong()); Node* Part = CAST_NODE(d->getFeature(nId)); if (!Part) { Part = g_backend.allocNode(L, Coord(0,0)); Part->setId(nId); Part->setLastUpdated(Feature::NotYetDownloaded); L->add(Part); } if (!hasBbox) { R->add(Part); } else { R->p->Nodes.push_back(Part); Part->setParentFeature(R); } stream.readNext(); } else if (stream.name() == "tag") { R->setTag(stream.attributes().value("k").toString(), stream.attributes().value("v").toString()); stream.readNext(); } else if (stream.name() == "BoundingBox") { R->BBox = CoordBox::fromXML(stream); R->p->BBoxUpToDate = true; hasBbox = true; stream.readNext(); } else if (!stream.isWhitespace()) { qDebug() << "Way: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } if (hasBbox && !R->isDeleted()) g_backend.indexAdd(L, R->BBox, R); return R; } Feature::TrafficDirectionType trafficDirection(const Way* R) { // TODO some duplication with Way trafficDirection QString d; int idx=R->findKey("oneway"); if (idx != -1) { d = R->tagValue(idx); if ( (d == "yes") || (d == "1") || (d == "true")) return Feature::OneWay; if (d == "-1") return Feature::OtherWay; if ((d == "no") || (d == "false") || (d == "0")) return Feature::BothWays; } idx=R->findKey("junction"); if (idx != -1) { d = R->tagValue(idx); if(d=="roundabout") return Feature::OneWay; //TODO For motorway and motorway_link, this is still discussed on the wiki. } return Feature::UnknownDirection; } int findSnapPointIndex(const Way* R, Coord& P) { LineF L(R->getNode(0)->position(),R->getNode(1)->position()); int BestIdx = 1; qreal BestDistance = L.capDistance(P); for (int i = 2; i<R->size(); ++i) { LineF L(R->getNode(i-1)->position(),R->getNode(i)->position()); qreal Distance = L.capDistance(P); if (Distance < BestDistance) { BestIdx = i; BestDistance = Distance; } } LineF F(R->getNode(BestIdx-1)->position(),R->getNode(BestIdx)->position()); P = F.project(P); return BestIdx; } QString Way::toHtml() { QString distanceLabel; if (distance() < 1.0) distanceLabel = QString("%1 m").arg(int(distance() * 1000)); else distanceLabel = QString("%1 km").arg(distance(), 0, 'f', 3); QString D; if (isClosed()) { D += "<i>"+QApplication::translate("MapFeature", "Closed way")+"</i>"; D += "<br/>"; } D += "<i>"+QApplication::translate("MapFeature", "Length")+": </i>" + distanceLabel; D += "<br/>"; D += "<i>"+QApplication::translate("MapFeature", "Size")+": </i>" + QApplication::translate("MapFeature", "%1 nodes").arg(size()); CoordBox bb = boundingBox(); D += "<br/>"; D += "<i>"+QApplication::translate("MapFeature", "Topleft")+": </i>" + COORD2STRING(bb.topLeft().y()) + " / " + COORD2STRING(bb.topLeft().x()); D += "<br/>"; D += "<i>"+QApplication::translate("MapFeature", "Botright")+": </i>" + COORD2STRING(bb.bottomRight().y()) + " / " + COORD2STRING(bb.bottomRight().x()); QString type = isClosed() ? QApplication::translate("MapFeature", "Area") : QApplication::translate("MapFeature", "Way"); return Feature::toMainHtml(type, "way").arg(D); } bool Way::isExtrimity(Node* node) { if (p->Nodes[0] == node) return true; if (p->Nodes[p->Nodes.size()-1] == node) return true; return false; } Way * Way::GetSingleParentRoad(Feature * mapFeature) { Way * parentRoad = NULL; for (int i=0; i<mapFeature->sizeParents(); i++) { Way * road = CAST_WAY(mapFeature->getParent(i)); if (!road || road->isDeleted()) continue; if (parentRoad && road != parentRoad) return NULL; //FIXME This test shouldn't be necessary, but there is at least a case where the road has a NULL layer. The root cause must be found. if (!(road->isDeleted()) && road->layer() && road->layer()->isEnabled()) parentRoad = road; } return parentRoad; } Way * Way::GetSingleParentRoadInner(Feature * mapFeature) { Way * parentRoad = NULL; Node* trackPoint = CAST_NODE(mapFeature); for (int i=0; i<mapFeature->sizeParents(); i++) { Way * road = CAST_WAY(mapFeature->getParent(i)); if (!road || road->isDeleted()) continue; if (road->isExtrimity(trackPoint) && !road->isClosed()) continue; if (parentRoad && road != parentRoad) return NULL; //FIXME This test shouldn't be necessary, but there is at least a case where the road has a NULL layer. The root cause must be found. if (!(road->isDeleted()) && road->layer() && road->layer()->isEnabled()) parentRoad = road; } return parentRoad; } int Way::createJunction(Document* theDocument, CommandList* theList, Way* R1, Way* R2, bool doIt) { int numInter = 0; //TODO test that the junction do not already exists! for (int i=0; i<R1->size()-1; ++i) { QLineF S1(R1->getNode(i)->position(), R1->getNode(i+1)->position()); for (int j=0; j<R2->size()-1; ++j) { QLineF S2(R2->getNode(j)->position(), R2->getNode(j+1)->position()); QPointF intPoint; if (S1.intersect(S2, &intPoint) == QLineF::BoundedIntersection) { numInter++; if (doIt) { Node* pt = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(R1->layer()), intPoint); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(R1->layer()),pt,true)); theList->add(new WayAddNodeCommand(R1,pt,i+1,theDocument->getDirtyOrOriginLayer(R1->layer()))); theList->add(new WayAddNodeCommand(R2,pt,j+1,theDocument->getDirtyOrOriginLayer(R2->layer()))); } ++i; ++j; } } } return numInter; } bool Way::canAddVirtualNodes() { if (M_PREFS->getUseVirtualNodes() && layer() && !ReadOnly && !isDeleted()) return true; return false; } int Way::segmentCount() { return p->Nodes.size()-1; } QLineF Way::getSegment(int i) { return QLineF(p->Nodes[i]->position(), p->Nodes[i+1]->position()); } int Way::bestSegment() { return p->BestSegment; } const RenderPriority& Way::renderPriority() { if (!MetaUpToDate) updateMeta(); return p->theRenderPriority; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Features/Way.h����������������������������������������������������������������0000664�0000000�0000000�00000007016�11770671653�0017247�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_ROAD_H_ #define MERKAARTOR_ROAD_H_ #include <QList> #include "Document.h" #include "Feature.h" #include "Layer.h" #ifndef _MOBILE #if QT_VERSION < 0x040700 || defined(FORCE_46) #include <ggl/ggl.hpp> #endif #endif class WayPrivate; class Node; class QProgressDialog; class MapRenderer; class Way : public Feature { friend class WayPrivate; friend class MemoryBackend; friend class SpatialiteBackend; protected: Way(void); Way(const Way& other); virtual ~Way(); public: virtual QString getClass() const {return "Way";} virtual char getType() const; virtual void updateMeta(); virtual const CoordBox& boundingBox(bool update=true) const; virtual void drawSimple(QPainter& P, MapView* theView); virtual void drawTouchup(QPainter& P, MapView* theView); virtual void drawSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawParentsSpecial(QPainter& P, QPen& Pen, MapView* theView); virtual void drawChildrenSpecial(QPainter& P, QPen& Pen, MapView* theView, int depth); virtual qreal pixelDistance(const QPointF& Target, qreal ClearEndDistance, const QList<Feature*>& NoSnap, MapView* theView) const; Node* pixelDistanceNode(const QPointF& Target, qreal ClearEndDistance, MapView* theView, const QList<Feature*>& NoSnap, bool NoSelectVirtuals) const; virtual void cascadedRemoveIfUsing(Document* theDocument, Feature* aFeature, CommandList* theList, const QList<Feature*>& Alternatives); virtual bool notEverythingDownloaded(); virtual QString description() const; virtual void add(Node* Pt); virtual void add(Node* Pt, int Idx); virtual void remove(int Idx); virtual void remove(Feature* F); virtual int size() const; virtual int find(Feature* Pt) const; virtual int findVirtual(Feature* Pt) const; virtual Feature* get(int idx); virtual const Feature* get(int Idx) const; virtual bool isNull() const; virtual void setDeleted(bool delState); Node* getNode(int idx); const Node* getNode(int idx) const; const QList<NodePtr>& getNodes() const; const QList<NodePtr>& getVirtuals() const; int segmentCount(); QLineF getSegment(int i); int bestSegment(); const RenderPriority& renderPriority(); bool isNodeAtEnd(Node* node); virtual void partChanged(Feature* F, int ChangeId); virtual void setLayer(Layer* aLayer); qreal area(); bool isClosed() const; qreal distance(); qreal widthOf(); virtual bool deleteChildren(Document* theDocument, CommandList* theList); const QPainterPath& getPath() const; void addPathHole(const QPainterPath &pth); void rebuildPath(const Projection &theProjection); void buildPath(Projection const &theProjection); virtual bool toGPX(QXmlStreamWriter& stream, QProgressDialog * progress, bool forExport=false); virtual bool toXML(QXmlStreamWriter& stream, QProgressDialog * progress, bool strict=false, QString changetsetid=""); static Way* fromXML(Document* d, Layer* L, QXmlStreamReader& stream); virtual QString toHtml(); bool isExtrimity(Node* node); static Way * GetSingleParentRoad(Feature * mapFeature); static Way * GetSingleParentRoadInner(Feature * mapFeature); static int createJunction(Document* theDocument, CommandList* theList, Way* R1, Way* R2, bool doIt); protected: bool canAddVirtualNodes(); WayPrivate* p; }; Q_DECLARE_METATYPE( Way * ); Feature::TrafficDirectionType trafficDirection(const Way* R); int findSnapPointIndex(const Way* R, Coord& P); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/��������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015205�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/GPS.pri�������������������������������������������������������������������0000664�0000000�0000000�00000001274�11770671653�0016356�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/GPS DEPENDPATH += $$MERKAARTOR_SRC_DIR/GPS FORMS += \ qgpsmainwindowui.ui HEADERS += qgps.h \ qgpssatellitetracker.h \ qgpsdevice.h \ SatelliteStrengthView.h SOURCES += qgps.cpp \ qgpssatellitetracker.cpp \ qgpsdevice.cpp \ SatelliteStrengthView.cpp \ DEFINES += USE_GPS contains(GPSDLIB,1) { DEFINES += USE_GPSD_LIB win32 { LIBS += -lQgpsmm } unix|macx { LIBS += -lgps } } !isEmpty(MOBILE) { CONFIG += mobility MOBILITY += location # HEADERS += \ # GpsFix.h # SOURCES += \ # GpsFix.cpp } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/GpsFix.cpp����������������������������������������������������������������0000664�0000000�0000000�00000004165�11770671653�0017117�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "GpsFix.h" #ifndef _MOBILE #include <QFile> #include <QTimer> #endif GpsFix::GpsFix(QObject *parent) : QObject(parent) , m_accuracy(999) { #ifdef _MOBILE src = QGeoPositionInfoSource::createDefaultSource(this); #else src = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::SimulationMode, this); src->setDevice(new QFile("D:/srcS60/MerkLog/qml/MerkLog/nmealog.txt")); QTimer::singleShot(5000, this, SLOT(onUpdateTimeout())); #endif if (src) { src->setUpdateInterval(1000); src->startUpdates(); connect(src, SIGNAL(updateTimeout()), SLOT(onUpdateTimeout())); connect(src, SIGNAL(positionUpdated(QGeoPositionInfo)), SLOT(onPositionUpdated(QGeoPositionInfo))); } } void GpsFix::onUpdateTimeout() { #ifdef _MOBILE m_accuracy = 999; #else m_accuracy = 100; #endif emit accuracyChanged(m_accuracy); } void GpsFix::onPositionUpdated(const QtMobility::QGeoPositionInfo &update) { m_timestamp = update.timestamp().toTime_t(); emit timestampChanged(m_timestamp); m_latitude = update.coordinate().latitude(); emit latitudeChanged(m_latitude); m_longitude = update.coordinate().longitude(); emit longitudeChanged(m_longitude); m_altitude = update.coordinate().altitude(); emit altitudeChanged(m_altitude); if (update.hasAttribute(QGeoPositionInfo::GroundSpeed)) { m_speed = update.attribute(QGeoPositionInfo::GroundSpeed); emit speedChanged(m_speed); } if (update.hasAttribute(QGeoPositionInfo::HorizontalAccuracy)) { m_accuracy = qRound(update.attribute(QGeoPositionInfo::HorizontalAccuracy)); emit accuracyChanged(m_accuracy); } if (update.hasAttribute(QGeoPositionInfo::Direction)) { m_heading = qRound(update.attribute(QGeoPositionInfo::Direction)); emit headingChanged(m_heading); } } int GpsFix::getUpdateInterval() const { if (src) return src->updateInterval(); else return 0; } void GpsFix::setUpdateInterval(int arg) { if (src) src->setUpdateInterval(arg); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/GpsFix.h������������������������������������������������������������������0000664�0000000�0000000�00000004125�11770671653�0016560�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef GPSFIX_H #define GPSFIX_H #include <qmobilityglobal.h> #include <qgeopositioninfosource.h> #include <qgeosatelliteinfosource.h> #include <qnmeapositioninfosource.h> #include <QGeoPositionInfo> // Use the QtMobility namespace QTM_USE_NAMESPACE class GpsFix : public QObject { Q_OBJECT Q_PROPERTY(int updateInterval READ getUpdateInterval WRITE setUpdateInterval) Q_PROPERTY(int timestamp READ getTimtstamp NOTIFY timestampChanged) Q_PROPERTY(qreal latitude READ getLatitude NOTIFY latitudeChanged) Q_PROPERTY(qreal longitude READ getLongitude NOTIFY longitudeChanged) Q_PROPERTY(qreal speed READ getSpeed NOTIFY speedChanged) Q_PROPERTY(qreal altitude READ getAltitude NOTIFY altitudeChanged) Q_PROPERTY(int accuracy READ getAccuracy NOTIFY accuracyChanged) Q_PROPERTY(int heading READ getHeading NOTIFY headingChanged) public: explicit GpsFix(QObject *parent = 0); int getUpdateInterval() const; qreal getLatitude() const { return m_latitude; } qreal getLongitude() const { return m_longitude; } qreal getSpeed() const { return m_speed; } qreal getAltitude() const { return m_altitude; } int getAccuracy() const { return m_accuracy; } int getHeading() const { return m_heading; } int getTimtstamp() const { return m_timestamp; } signals: void latitudeChanged(qreal arg); void longitudeChanged(qreal arg); void speedChanged(qreal arg); void altitudeChanged(qreal arg); void accuracyChanged(int arg); void headingChanged(int arg); void timestampChanged(int arg); public slots: void onUpdateTimeout(); void onPositionUpdated ( const QGeoPositionInfo & update ) ; void setUpdateInterval(int arg); private: #ifdef _MOBILE QGeoPositionInfoSource* src; #else QNmeaPositionInfoSource* src; #endif int m_accuracy; int m_heading; qreal m_latitude; qreal m_longitude; qreal m_speed; qreal m_altitude; int m_timestamp; }; #endif // GPSFIX_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/SatelliteStrengthView.cpp�������������������������������������������������0000664�0000000�0000000�00000002500�11770671653�0022206�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "SatelliteStrengthView.h" #include <QtGui/QPainter> void sortSatellitesById(QList<Satellite>& List) { for (int i=0; i<List.size(); ++i) for (int j=i+1; j<List.size(); ++j) if (List[i].Id>List[j].Id) List.swap(i, j); } SatelliteStrengthView::SatelliteStrengthView(QWidget* aParent) : QWidget(aParent) { } void SatelliteStrengthView::setSatellites(const QList<Satellite>& aList) { List = aList; update(); } void SatelliteStrengthView::paintEvent(QPaintEvent* ev) { Q_UNUSED(ev); QPainter p(this); p.drawLine(0,height()-1,width()-1,height()-1); if (List.size()) { int w=width()/List.size(); p.setBrush(Qt::darkCyan); for (int i=0; i<List.size(); ++i) { // typical s/r values seem to be 0-50? // this may turn out higher, I tested it on a // very rainy day... int x = List[i].SignalStrength*height()/50; x = height()-x; if (x<0) x = 0; p.setPen(QColor(0,0,0)); p.drawRect(w*i,x,w,height()-x); p.setPen(QColor(127,127,127)); p.drawText(QRect(w*i,0,w,height()), Qt::AlignCenter,QString::number(List[i].Id)); } } else p.drawText(rect(),Qt::AlignCenter,tr("No satellites")); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/SatelliteStrengthView.h���������������������������������������������������0000664�0000000�0000000�00000000776�11770671653�0021670�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_SATELLITEVIEW_H_ #define MERKAARTOR_SATELLITEVIEW_H_ #include <QtGui/QWidget> #include <QList> class Satellite { public: int Id; int Azimuth; int Elevation; int SignalStrength; }; void sortSatellitesById(QList<Satellite>& List); class SatelliteStrengthView : public QWidget { Q_OBJECT public: SatelliteStrengthView(QWidget* aParent); void setSatellites(const QList<Satellite>& List); protected: void paintEvent(QPaintEvent* ev); QList<Satellite> List; }; #endif ��merkaartor-0.18.1/src/GPS/qgps.cpp������������������������������������������������������������������0000664�0000000�0000000�00000016241�11770671653�0016667�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2005 by Robin Gingras * * neozenkai@cox.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <Qt> #include <QStatusBar> #include <QDateTime> #include "qgps.h" #include "qgpsdevice.h" #include "qgpssatellitetracker.h" #include "SatelliteStrengthView.h" //#include "MerkaartorPreferences.h" QGPS::QGPS(QWidget *parent) : MDockAncestor(parent), gpsDevice(0) { setupUi(getWidget()); setObjectName("GPSMainWindow"); int w = fontMetrics().width("360N 60'60\" W"); txtLatitude->setFixedWidth(w); txtLongitude->setFixedWidth(w); txtAltitude->setFixedWidth(w); txtSpeed->setFixedWidth(w); txtNumSats->setFixedWidth(w); txtFixType->setFixedWidth(w); resetGpsStatus(); retranslateUi(); //loadSettings(); // gpsDevice = new QGPSDevice(serialPort); //connect(actStartGps, SIGNAL(activated()), gpsDevice, SLOT(startDevice())); //connect(actStopGps, SIGNAL(activated()), gpsDevice, SLOT(stopDevice())); // The Qt documentation says that using signals and slots between // threaded classes is not recommended! TODO: find a better way! } void QGPS::setGpsDevice(QGPSDevice * aDevice) { if (gpsDevice) disconnect(gpsDevice, SIGNAL(updateStatus()), this, SLOT(updateGpsStatus())); gpsDevice = aDevice; } void QGPS::startGps() { if (gpsDevice) { if (isVisible()) connect(gpsDevice, SIGNAL(updateStatus()), this, SLOT(updateGpsStatus())); gpsDevice->startDevice(); } } void QGPS::stopGps() { if (gpsDevice) { gpsDevice->stopDevice(); disconnect(gpsDevice, SIGNAL(updateStatus()), this, SLOT(updateGpsStatus())); } } void QGPS::resetGpsStatus() { txtLatitude->setText(""); txtLongitude->setText(""); txtAltitude->setText(""); txtSpeed->setText(""); txtNumSats->setText(""); txtFixType->setText(tr("Invalid")); lblFixStatus->setText(tr("No Fix")); lblFixTime->setText(tr("No Time")); satTracker->setSatellites(QList<Satellite>()); } void QGPS::updateGpsStatus() { QString latCardinal, longCardinal, varCardinal; if(gpsDevice->latCardinal() == QGPSDevice::CardinalNorth) latCardinal = "N"; else latCardinal = "S"; if(gpsDevice->longCardinal() == QGPSDevice::CardinalEast) longCardinal = "E"; else longCardinal = "W"; if(gpsDevice->varCardinal() == QGPSDevice::CardinalEast) varCardinal = "E"; else varCardinal = "W"; txtLatitude->setText( QString("%1 %2\' %3\" %4") .arg(gpsDevice->latDegrees()) .arg(gpsDevice->latMinutes()) .arg(gpsDevice->latSeconds()) .arg(latCardinal)); txtLongitude->setText( QString("%1 %2\' %3\" %4") .arg(gpsDevice->longDegrees()) .arg(gpsDevice->longMinutes()) .arg(gpsDevice->longSeconds()) .arg(longCardinal)); txtAltitude->setText( QString("%1 %2") .arg(gpsDevice->altitude()) .arg(tr("Meters"))); txtSpeed->setText( QString("%1 %2") .arg(gpsDevice->speed()) .arg(tr("km/h"))); txtNumSats->setText( QString("%1").arg(gpsDevice->numSatellites())); switch (gpsDevice->fixType()) { case QGPSDevice::FixUnavailable: txtFixType->setText(tr("Unavailable")); break; case QGPSDevice::FixInvalid: txtFixType->setText(tr("Invalid")); break; case QGPSDevice::Fix2D: txtFixType->setText(tr("2D")); break; case QGPSDevice::Fix3D: txtFixType->setText(tr("3D")); break; } switch (gpsDevice->fixStatus()) { case QGPSDevice::StatusActive: lblFixStatus->setText(tr("Fix OK")); break; case QGPSDevice::StatusVoid: lblFixStatus->setText(tr("No Fix")); break; } if (!gpsDevice->dateTime().isValid()) lblFixTime->setText(tr("No Time")); else lblFixTime->setText(gpsDevice->dateTime().toString() + " UTC"); QList<Satellite> List; for(int i = 1; i < 50; i ++) { int b, x, y; gpsDevice->satInfo(i, b, x, y); if (y || b || x) { Satellite S; S.Azimuth = x; S.Elevation = b; S.SignalStrength = y; S.Id = i; List.push_back(S); } } StrengthView->setSatellites(List); satTracker->setSatellites(List); satTracker->setHeading((int)gpsDevice->heading()); } void QGPS::showEvent ( QShowEvent * anEvent ) { QWidget::showEvent(anEvent); if (gpsDevice) connect(gpsDevice, SIGNAL(updateStatus()), this, SLOT(updateGpsStatus())); } void QGPS::hideEvent ( QHideEvent * anEvent ) { QWidget::hideEvent(anEvent); if (gpsDevice) disconnect(gpsDevice, SIGNAL(updateStatus()), this, SLOT(updateGpsStatus())); } void QGPS::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(); MDockAncestor::changeEvent(event); } void QGPS::retranslateUi() { Ui_QGPSMainWindowUI::retranslateUi(getWidget()); setWindowTitle(tr("GPS")); lblFixStatus->setText(tr("No Fix")); lblFixTime->setText(tr("No Time")); } void QGPS::resizeEvent(QResizeEvent */*anEvent*/) { if (width() > height()) { if (satLayoutH->indexOf(satTracker) == -1) { satLayoutV->removeWidget(satTracker); satLayoutH->insertWidget(0, satTracker); // verticalSpacer->changeSize(20, 40, QSizePolicy::Minimum, QSizePolicy::Ignored); } } else { if (satLayoutV->indexOf(satTracker) == -1) { satLayoutH->removeWidget(satTracker); satLayoutV->insertWidget(2, satTracker); // verticalSpacer->changeSize(20, 40, QSizePolicy::Minimum, QSizePolicy::Ignored); } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/qgps.h��������������������������������������������������������������������0000664�0000000�0000000�00000004345�11770671653�0016336�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2005 by Robin Gingras * * neozenkai@cox.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef QGPS_H #define QGPS_H #include "MDockAncestor.h" #include "ui_qgpsmainwindowui.h" class QGPSDevice; class QLabel; class QString; class QGPS : public MDockAncestor, public Ui_QGPSMainWindowUI { Q_OBJECT public: QGPS(QWidget *parent = 0); void setGpsDevice(QGPSDevice * aDevice); QGPSDevice* getGpsDevice() { return gpsDevice; } void resetGpsStatus(); private: QGPSDevice *gpsDevice; QString serialPort; void changeEvent(QEvent*); void retranslateUi(); public slots: void updateGpsStatus(); void startGps(); void stopGps(); protected: virtual void showEvent ( QShowEvent * anEvent ); virtual void hideEvent ( QHideEvent * anEvent ); virtual void resizeEvent(QResizeEvent *anEvent); }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/qgpsdevice.cpp������������������������������������������������������������0000664�0000000�0000000�00000107132�11770671653�0020047�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2005 by Robin Gingras * * neozenkai@cox.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <QThread> #include <QObject> #include <QString> #include <QMutex> #include <QFile> #include <QStringList> #include <QMessageBox> #include <QTcpSocket> #include <QTimer> #include <QHostAddress> #include "qgpsdevice.h" #ifndef _MOBILE #include "qextserialport.h" #endif #include <math.h> #ifdef USE_GPSD_LIB #include <cerrno> #include <cstring> // strerror() #endif #include "MerkaartorPreferences.h" /* GPSSLOTFORWARDER */ GPSSlotForwarder::GPSSlotForwarder(QGPSDevice* aTarget) : Target(aTarget) { } void GPSSlotForwarder::onLinkReady() { Target->onLinkReady(); } void GPSSlotForwarder::onDataAvailable() { Target->onDataAvailable(); } void GPSSlotForwarder::onStop() { Target->onStop(); } void GPSSlotForwarder::checkDataAvailable() { Target->checkDataAvailable(); } /** * QGPSDevice::QGPSDevice() * * Takes in an optional serialPort string and sets the serialPort property * accordingly. * * @param char serialPort Serial port to listen to for GPS dat */ QGPSDevice::QGPSDevice() :LogFile(0) { mutex = new QMutex(QMutex::Recursive); setLatitude(0); setLongitude(0); setAltitude(0); setHeading(0); setSpeed(0); setVariation(0); setFixMode(QGPSDevice::FixAuto); setFixType(QGPSDevice::FixUnavailable); setFixStatus(QGPSDevice::StatusVoid); stopLoop = false; cur_numSatellites = 0; for(int i = 0; i < 50; i ++) { satArray[i][0] = satArray[i][1] = satArray[i][2] = 0; } } /** * Accessor functions */ int QGPSDevice::latDegrees() { return (int) (fabs(latitude())); } int QGPSDevice::latMinutes() { qreal m = fabs(latitude()) - latDegrees(); return int(m * 60); } int QGPSDevice::latSeconds() { qreal m = fabs(latitude()) - latDegrees(); qreal s = (m * 60) - int(m * 60); return int(s * 60); } int QGPSDevice::longDegrees() { return (int) (fabs(longitude())); } int QGPSDevice::longMinutes() { qreal m = fabs(longitude()) - longDegrees(); return int(m * 60); } int QGPSDevice::longSeconds() { qreal m = fabs(longitude()) - longDegrees(); qreal s = (m * 60) - int(m * 60); return int(s * 60); } bool QGPSDevice::isActiveSat(int prn) { for (int i=0; i<12; i++) { if (activeSats[i] == prn) return true; } return false; } void QGPSDevice::satInfo(int index, int &elev, int &azim, int &snr) { mutex->lock(); elev = satArray[index][0]; azim = satArray[index][1]; snr = satArray[index][2]; mutex->unlock(); } /** * QGPSDevice::run() * * Begins the thread loop, reading data from the GPS and parsing * full strings. */ /** * QGPSDevice::parseGGA() * * Parses a GPGGA string that contains fix information, such as * latitude, longitude, etc. * * The format of the GPGGA String is as follows: * * $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47 * ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| * 01234567890123456789012345678901234567890123456789012345678901234 * | | | | | | | * 0 10 20 30 40 50 60 * * GPGGA - Global Positioning System Fix Data * 123519 - Fix taken at 12:35:19 UTC * 4807.038,N - Latitude 48 deg 07.038' N * 01131.000,E - Longitude 11 deg 31.000' E * 1 - Fix quality: * 0 = Invalid * 1 = GPS fix (SPS) * 2 = DGPS fix * 3 = PPS fix * 4 = Real time kinematic * 5 = Float RTK * 6 = Estimated (dead reckoning) * 7 = Manual input mode * 8 = Simulation mode * 08 - Number of satellites being tracked * 0.9 - Horizontal dissolution of precision * 545.4,M - Altitude (meters) above sea level * 46.9,M - Height of geoid (sea level) above WGS84 ellipsoid * (empty) - Seconds since last DGPS update * (empty) - DGPS station ID number * *47 - Checksum, begins with * * * @param char ggaString The full NMEA GPGGA string, starting with * the $ and ending with the checksum */ void QGPSDevice::parseNMEA(const QByteArray& bufferString) { if (bufferString.length() < 6) return; if(bufferString[3] == 'G' && bufferString[4] == 'G' && bufferString[5] == 'A') { //strcpy(nmeastr_gga, bufferString); parseGGA(bufferString.data()); } else if(bufferString[3] == 'G' && bufferString[4] == 'L' && bufferString[5] == 'L') { //strcpy(nmeastr_gga, bufferString); parseGLL(bufferString.data()); } else if(bufferString[3] == 'G' && bufferString[4] == 'S' && bufferString[5] == 'V') { //strcpy(nmeastr_gsv, bufferString); parseGSV(bufferString.data()); } else if(bufferString[3] == 'G' && bufferString[4] == 'S' && bufferString[5] == 'A') { //strcpy(nmeastr_gsa, bufferString); parseGSA(bufferString.data()); } else if(bufferString[3] == 'R' && bufferString[4] == 'M' && bufferString[5] == 'C') { //strcpy(nmeastr_rmc, bufferString); if (parseRMC(bufferString.data())) if (fixStatus() == QGPSDevice::StatusActive && (fixType() == QGPSDevice::Fix3D || fixType() == QGPSDevice::FixUnavailable)) emit updatePosition(latitude(), longitude(), dateTime(), altitude(), speed(), heading()); } emit updateStatus(); } bool QGPSDevice::parseGGA(const char *ggaString) { mutex->lock(); QString line(ggaString); if (line.count('$') > 1) return false; QStringList tokens = line.split(","); qreal lat = tokens[2].left(2).toDouble(); qreal latmin = tokens[2].mid(2).toDouble(); lat += latmin / 60.0; if (tokens[3] != "N") lat = -lat; //cur_latitude = lat; if (!tokens[3].isEmpty()) { if (tokens[3].at(0) == 'N') setLatCardinal(CardinalNorth); else if (tokens[3].at(0) == 'S') setLatCardinal(CardinalSouth); else setLatCardinal(CardinalNone); } qreal lon = tokens[4].left(3).toDouble(); qreal lonmin = tokens[4].mid(3).toDouble(); lon += lonmin / 60.0; if (tokens[5] != "E") lon = -lon; //cur_longitude = lon; if (!tokens[5].isEmpty()) { if (tokens[5].at(0) == 'E') setLatCardinal(CardinalEast); else if (tokens[5].at(0) == 'W') setLatCardinal(CardinalWest); else setLatCardinal(CardinalNone); } int fix = tokens[6].toInt(); setFixQuality(fix); int numSat = tokens[7].toInt(); setNumSatellites(numSat); qreal dilut = tokens[8].toFloat(); setDillution(dilut); qreal altitude = tokens[9].toFloat(); setAltitude(altitude); mutex->unlock(); return true; } // parseGGA() bool QGPSDevice::parseGLL(const char *ggaString) { mutex->lock(); QString line(ggaString); if (line.count('$') > 1) return false; QStringList tokens = line.split(","); qreal lat = tokens[1].left(2).toDouble(); qreal latmin = tokens[1].mid(2).toDouble(); lat += latmin / 60.0; if (tokens[2] != "N") lat = -lat; //cur_latitude = lat; if (!tokens[2].isEmpty()) { if (tokens[2].at(0) == 'N') setLatCardinal(CardinalNorth); else if (tokens[2].at(0) == 'S') setLatCardinal(CardinalSouth); else setLatCardinal(CardinalNone); } qreal lon = tokens[3].left(3).toDouble(); qreal lonmin = tokens[3].mid(3).toDouble(); lon += lonmin / 60.0; if (tokens[4] != "E") lon = -lon; //cur_longitude = lon; if (!tokens[4].isEmpty()) { if (tokens[4].at(0) == 'E') setLatCardinal(CardinalEast); else if (tokens[4].at(0) == 'W') setLatCardinal(CardinalWest); else setLatCardinal(CardinalNone); } if (tokens[6] == "A") { setFixStatus(StatusActive); } else { setFixStatus(StatusVoid); } mutex->unlock(); return true; } // parseGGA() /** * QGPSDevice::parseGSA() * * Parses a GPGSA string that contains information about the nature * of the fix, such as DOP (dillution of precision) and active satellites * based on the viewing mask and almanac data of the reciever. * * The format of the GPGSA String is as follows: * * $GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39 * ||||||||||||||||||||||||||||||||||||||||||||||| * 01234567890123456789012345678901234567890123456 * | | | | | * 0 10 20 30 40 * * GPGSA - Information about satellite status * A - Fix mode, (A)utomatic or (M)anual * 3 - Fix type: * 1 = Invalid * 2 = 2D * 3 = 3D (4 or more satellites) * 04,05,... - Satellites used in the solution (up to 12) * 2.5 - DOP (dillution of precision) * 1.3 - Horizontal DOP * 2.1 - Vertical DOP * *39 - Checksum * * @param char The full NMEA GPGSA string, from $ to checksum */ bool QGPSDevice::parseGSA(const char *gsaString) { mutex->lock(); QString line(gsaString); if (line.count('$') > 1) return false; QStringList tokens = line.split(","); QString autoSelectFix = tokens[1]; if(autoSelectFix == "A") setFixMode(FixAuto); else setFixMode(FixManual); int fix = tokens[2].toInt(); if(fix == 1) setFixType(FixInvalid); else if(fix == 2) setFixType(Fix2D); else setFixType(Fix3D); for(int index = 0; index < 12; index ++) { activeSats[index] = tokens[index+3].toInt(); } mutex->unlock(); return true; } // parseGSA() /** * QGPSDevice::parseRMC() * * Parses an RMC string, which contains the recommended minimum fix * data, such as latitude, longitude, altitude, speed, track angle, * date, and magnetic variation. Saves us some calculating :) * * The format of the GPRMC string is as follows: * * $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| * 01234567890123456789012345678901234567890123456789012345678901234567 * | | | | | | | * 0 10 20 30 40 50 60 * * GPRMC - Recommended minimum fix data * 123519 - Fix taken at 12:35:19 UTC * A - Fix status, (A)ctive or (V)oid * 4807.038,N - Latitude 48 degrees 07.038' N * 01131.000,E - Longitude 11 degrees, 31.000' E * 022.4 - Ground speed in knots * 084.4 - Track angle in degrees (true north) * 230394 - Date: 23 March 1994 * 003.1,W - Magnetic Variation * *6A - Checksum * * @param char Full RMC string, from $ to checksum */ bool QGPSDevice::parseRMC(const char *rmcString) { mutex->lock(); // Fix time QString line(rmcString); if (line.count('$') > 1) return false; QStringList tokens = line.split(","); QString strDate = tokens[9] + tokens[1]; cur_datetime = QDateTime::fromString(strDate, "ddMMyyHHmmss.zzz"); if (cur_datetime.date().year() < 1970) cur_datetime = cur_datetime.addYears(100); // Fix status if (tokens[2] == "A") { setFixStatus(StatusActive); } else { setFixStatus(StatusVoid); } // Latitude qreal lat = tokens[3].left(2).toDouble(); qreal latmin = tokens[3].mid(2).toDouble(); lat += latmin / 60.0; if (tokens[4] != "N") lat = -lat; cur_latitude = lat; if (!tokens[4].isEmpty()) { if (tokens[4].at(0) == 'N') setLatCardinal(CardinalNorth); else if (tokens[4].at(0) == 'S') setLatCardinal(CardinalSouth); else setLatCardinal(CardinalNone); } qreal lon = tokens[5].left(3).toDouble(); qreal lonmin = tokens[5].mid(3).toDouble(); lon += lonmin / 60.0; if (tokens[6] != "E") lon = -lon; cur_longitude = lon; if (!tokens[6].isEmpty()) { if (tokens[6].at(0) == 'E') setLatCardinal(CardinalEast); else if (tokens[6].at(0) == 'W') setLatCardinal(CardinalWest); else setLatCardinal(CardinalNone); } // Ground speed in km/h qreal speed = QString::number(tokens[7].toDouble() * 1.852, 'f', 1).toDouble(); setSpeed(speed); // Heading qreal heading = tokens[8].toDouble(); setHeading(heading); // Magnetic variation qreal magvar = tokens[10].toDouble(); setVariation(magvar); if (!tokens[11].isEmpty()) { if (tokens[11].at(0) == 'E') setVarCardinal(CardinalEast); else if (tokens[11].at(0) == 'W') setVarCardinal(CardinalWest); else setVarCardinal(CardinalNone); } mutex->unlock(); return true; } // parseRMC() /** * QGPSDevice::parseGSV() * * Parses a GPGSV string, which contains satellite position and signal * strenght information. parseGSV() fills the satArray array with the * PRNs, elevations, azimuths, and SNRs of the visible satellites. This * array is based on the position of the satellite in the strings, not * the order of the PRNs! (see README for info) * * The format of the GPGSV string is as follows: * * $GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75 * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| * 01234567890123456789012345678901234567890123456789012345678901234567 * | | | | | | | * 0 10 20 30 40 50 60 * * GPGSV - Satellite status * 2 - Number of GPGSV sentences for full data * 1 - Current sentence (1 of 2, etc) * 08 - Number of satellites in view * * 01 - Satellite PRN * 40 - Elevation, degrees * 083 - Azimuth, degrees * 46 - SNR (signal to noise ratio) * (for up to four satellites per sentence) * *75 - Checksum */ bool QGPSDevice::parseGSV(const char *gsvString) { mutex->lock(); int totalSentences; int currentSentence; int totalSatellites; int prn, elev, azim, snr; QString line(gsvString); if (line.count('$') > 1) return false; QStringList tokens = line.split(","); totalSentences = tokens[1].toInt(); currentSentence = tokens[2].toInt(); totalSatellites = tokens[3].toInt(); for(int i = 0; (i < 4) && ((i*4)+4+3 < tokens.size()); i ++) { prn = tokens[(i*4)+4].toInt(); elev = tokens[(i*4)+4+1].toInt(); azim = tokens[(i*4)+4+2].toInt(); if (tokens[(i*4)+4+3].contains('*')) { QStringList tok2 = tokens[(i*4)+4+3].split("*"); snr = tok2[0].toInt(); } else snr = tokens[(i*4)+4+3].toInt(); satArray[prn][0] = elev; satArray[prn][1] = azim; satArray[prn][2] = snr; } mutex->unlock(); return true; } /** * QGPSDevice::startDevice() * * Calls start() to begin thread execution */ void QGPSDevice::startDevice() { mutex->lock(); stopLoop = false; mutex->unlock(); //printf("We're starting...\n"); start(); } /** * QGPSDevice::stopDevice() * * Stops execution of run() and ends thread execution * This function will be called outside this thread */ void QGPSDevice::stopDevice() { // this is through a queued connection emit doStopDevice(); } #ifndef _MOBILE /*** QGPSComDevice ***/ QGPSComDevice::QGPSComDevice(const QString &device) : QGPSDevice() { #ifdef Q_OS_WIN if (!device.isNull() && !device.startsWith("\\\\.\\")) setDevice("\\\\.\\" + device); else #endif if(!device.isNull()) { setDevice(device); } } QGPSComDevice::~QGPSComDevice() { if (LogFile) { if (LogFile->isOpen()) LogFile->close(); delete LogFile; } } /** * QGPSComDevice::openDevice() * * Opens the serial port and sets the parameters for data transfer: parity, * stop bits, blocking, etc. */ bool QGPSComDevice::openDevice() { port = new QextSerialPort(device()); port->setBaudRate(BAUD4800); port->setFlowControl(FLOW_OFF); port->setParity(PAR_NONE); port->setDataBits(DATA_8); port->setStopBits(STOP_2); if (port->open(QIODevice::ReadOnly)) { if (M_PREFS->getGpsSaveLog()) { QString fn = "log-" + QDateTime::currentDateTime().toString(Qt::ISODate) + ".nmea"; fn.replace(':', '-'); LogFile = new QFile(M_PREFS->getGpsLogDir() + "/"+fn); if (!LogFile->open(QIODevice::WriteOnly)) { QMessageBox::critical(NULL, tr("GPS log error"), tr("Unable to create GPS log file: %1.").arg(M_PREFS->getGpsLogDir() + "/"+fn), QMessageBox::Ok); delete LogFile; LogFile = NULL; } } return true; } return false; } /** * QGPSComDevice::closeDevice() * * Closes the serial port */ bool QGPSComDevice::closeDevice() { port->close(); if (LogFile && LogFile->isOpen()) { LogFile->close(); delete LogFile; } LogFile = NULL; return true; } void QGPSComDevice::onLinkReady() { } void QGPSComDevice::onStop() { quit(); } void QGPSComDevice::run() { GPSSlotForwarder Forward(this); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), &Forward, SLOT(checkDataAvailable())); timer->start(150); // connect(port,SIGNAL(readyRead()),&Forward,SLOT(onDataAvailable())); connect(this,SIGNAL(doStopDevice()),&Forward,SLOT(onStop())); exec(); closeDevice(); } void QGPSComDevice::checkDataAvailable() { if (port->bytesAvailable() > 0) onDataAvailable(); } void QGPSComDevice::onDataAvailable() { QByteArray ba(port->readAll()); // filter out unwanted characters for (int i=ba.count(); i; --i) if(ba[i-1] == '\0' || (!isalnum((quint8)ba[i-1]) && !isspace((quint8)ba[i-1]) && !ispunct((quint8)ba[i-1]))) { ba.remove(i-1,1); } if (LogFile) LogFile->write(ba); Buffer.append(ba); if (Buffer.length() > 4096) // safety valve Buffer.remove(0,Buffer.length()-4096); while (Buffer.count()) { // look for begin of sentence marker int i = Buffer.indexOf('$'); if (i<0) { Buffer.clear(); return; } Buffer.remove(0,i); // look for end of sentence marker for (i=0; i<Buffer.count(); ++i) if ( (Buffer[i] == (char)(0x0a)) || (Buffer[i] == (char)(0x0d)) ) break; if (i == Buffer.count()) return; parseNMEA(Buffer.mid(0,i-2)); Buffer.remove(0,i); } } #endif /*** QGPSFileDevice ***/ QGPSFileDevice::QGPSFileDevice(const QString &device) : QGPSDevice() { if(!device.isNull()) { setDevice(device); } } /** * QGPSFileDevice::openDevice() * * Opens the serial port and sets the parameters for data transfer: parity, * stop bits, blocking, etc. */ bool QGPSFileDevice::openDevice() { theFile = new QFile(device()); if (!theFile->open(QIODevice::ReadOnly | QIODevice::Text)) { delete theFile; theFile = NULL; return false; } return true; } void QGPSFileDevice::onLinkReady() { } void QGPSFileDevice::onStop() { quit(); } /** * QGPSFileDevice::closeDevice() * * Closes the serial port */ bool QGPSFileDevice::closeDevice() { if (theFile) theFile->close(); return true; } void QGPSFileDevice::run() { GPSSlotForwarder Forward(this); QTimer* t = new QTimer; connect(t,SIGNAL(timeout()),&Forward,SLOT(onDataAvailable())); connect(this,SIGNAL(doStopDevice()),&Forward,SLOT(onStop())); t->start(100); exec(); closeDevice(); } void QGPSFileDevice::onDataAvailable() { int index = 0; char bufferChar; char bufferString[100]; while (theFile->read(&bufferChar, 1) && bufferChar != '$') {} if(bufferChar == '$') { index = 0; bufferString[index] = bufferChar; do { theFile->read(&bufferChar, 1); if(bufferChar != '\0' && (isalnum(bufferChar) || isspace(bufferChar) || ispunct(bufferChar))) { index ++; bufferString[index] = bufferChar; } } while(bufferChar != 0x0a && bufferChar != 0x0d); bufferString[index + 1] = '\0'; mutex->lock(); if(bufferString[3] == 'G' && bufferString[4] == 'G' && bufferString[5] == 'A') { //strcpy(nmeastr_gga, bufferString); parseGGA(bufferString); } else if(bufferString[3] == 'G' && bufferString[4] == 'L' && bufferString[5] == 'L') { //strcpy(nmeastr_gga, bufferString); parseGLL(bufferString); } else if(bufferString[3] == 'G' && bufferString[4] == 'S' && bufferString[5] == 'V') { //strcpy(nmeastr_gsv, bufferString); parseGSV(bufferString); } else if(bufferString[3] == 'G' && bufferString[4] == 'S' && bufferString[5] == 'A') { //strcpy(nmeastr_gsa, bufferString); parseGSA(bufferString); } else if(bufferString[3] == 'R' && bufferString[4] == 'M' && bufferString[5] == 'C') { //strcpy(nmeastr_rmc, bufferString); if (parseRMC(bufferString)) if (fixStatus() == QGPSDevice::StatusActive && (fixType() == QGPSDevice::Fix3D || fixType() == QGPSDevice::FixUnavailable)) emit updatePosition(latitude(), longitude(), dateTime(), altitude(), speed(), heading()); } mutex->unlock(); emit updateStatus(); } } #ifndef _MOBILE /* GPSSDEVICE */ #ifdef USE_GPSD_LIB QGPSDDevice::QGPSDDevice(const QString& device) { setDevice(device); } bool QGPSDDevice::openDevice() { // if (M_PREFS->getGpsSaveLog()) { // QString fn = "log-" + QDateTime::currentDateTime().toString(Qt::ISODate) + ".nmea"; // fn.replace(':', '-'); // LogFile = new QFile(M_PREFS->getGpsLogDir() + "/"+fn); // if (!LogFile->open(QIODevice::WriteOnly)) { // QMessageBox::critical(NULL, tr("GPS log error"), // tr("Unable to create GPS log file: %1.").arg(M_PREFS->getGpsLogDir() + "/"+fn), QMessageBox::Ok); // delete LogFile; // LogFile = NULL; // } // } return true; } bool QGPSDDevice::closeDevice() { delete Server; return true; } // this function will be called within this thread void QGPSDDevice::onStop() { quit(); } void QGPSDDevice::run() { GPSSlotForwarder Forward(this); // QTcpSocket Link; // Server = &Link; // Link.connectToHost(M_PREFS->getGpsdHost(),M_PREFS->getGpsdPort()); // connect(Server,SIGNAL(connected()),&Forward,SLOT(onLinkReady())); // connect(Server,SIGNAL(readyRead()),&Forward,SLOT(onDataAvailable())); connect(this,SIGNAL(doStopDevice()),&Forward,SLOT(onStop())); // exec(); QEventLoop l; Server = new gpsmm(); errno = 0; gpsdata = Server->open(M_PREFS->getGpsdHost().toAscii().data(),QString::number(M_PREFS->getGpsdPort()).toAscii().data()); if (!gpsdata) { #ifndef Q_OS_WIN32 QString msg( (errno<0) ? gps_errstr(errno) : strerror(errno) ); #else QString msg( (errno<0) ? "" : strerror(errno) ); #endif qDebug() << tr("Unable to connect to %1:%2").arg(M_PREFS->getGpsdHost()).arg(QString::number(M_PREFS->getGpsdPort())) << ": " << msg; return; } onLinkReady(); l.processEvents(); forever { #if GPSD_API_MAJOR_VERSION > 3 if (Server->waiting()) #endif onDataAvailable(); l.processEvents(); } delete Server; } void QGPSDDevice::onDataAvailable() { #if GPSD_API_MAJOR_VERSION < 5 gpsdata = Server->poll(); if (!gpsdata) return; #else if ( Server->waiting() ) { errno = 0; gpsdata = Server->read(); if ( gpsdata == 0 ) { QString msg( (errno==0) ? "socket to gpsd was closed" : strerror(errno) ); qDebug() << "gpsmm::read() failed: " << msg; return; } } #endif setFixStatus(StatusVoid); switch (gpsdata->fix.mode) { case MODE_NOT_SEEN: setFixType(FixUnavailable); return; case MODE_NO_FIX: setFixType(FixInvalid); return; case MODE_2D: setFixType(Fix2D); break; case MODE_3D: setFixType(Fix3D); break; } setFixStatus(StatusActive); setLatitude(gpsdata->fix.latitude); setLongitude(gpsdata->fix.longitude); qreal Alt = gpsdata->fix.altitude; if (!__isnan(Alt)) setAltitude(Alt); qreal Speed = gpsdata->fix.speed; if (!__isnan(Speed)) setSpeed(Speed); qreal Heading = gpsdata->fix.track; if (!__isnan(Heading)) setHeading(Heading); if (gpsdata->fix.time) cur_datetime = QDateTime::fromTime_t(gpsdata->fix.time); emit updatePosition(gpsdata->fix.latitude, gpsdata->fix.longitude, cur_datetime, cur_altitude, cur_speed, cur_heading); #if GPSD_API_MAJOR_VERSION > 3 int num_sat = gpsdata->satellites_visible; #else int num_sat = gpsdata->satellites; #endif for(int i = 0; i < 50; i ++) satArray[i][0] = satArray[i][1] = satArray[i][2] = 0; for (int i=0; i<num_sat; ++i) { int id = gpsdata->PRN[i]; satArray[id][0] = gpsdata->elevation[i]; satArray[id][1] = gpsdata->azimuth[i]; satArray[id][2] = gpsdata->ss[i]; } setNumSatellites(num_sat); emit updateStatus(); } void QGPSDDevice::onLinkReady() { if (!Server) return; #if GPSD_API_MAJOR_VERSION > 3 gpsdata = Server->stream(WATCH_ENABLE); #ifndef Q_OS_WIN32 if ( gpsdata == 0 ) qDebug() << "gpsmm::stream() failed: " << gps_errstr(errno) << '\n'; #endif #else gpsdata = Server->query("w+x\n"); #endif } #else /*USE_GPSD_LIB*/ QGPSDDevice::QGPSDDevice(const QString& device) { setDevice(device); } bool QGPSDDevice::openDevice() { if (M_PREFS->getGpsSaveLog()) { QString fn = "log-" + QDateTime::currentDateTime().toString(Qt::ISODate) + ".nmea"; fn.replace(':', '-'); LogFile = new QFile(M_PREFS->getGpsLogDir() + "/"+fn); if (!LogFile->open(QIODevice::WriteOnly)) { QMessageBox::critical(NULL, tr("GPS log error"), tr("Unable to create GPS log file: %1.").arg(M_PREFS->getGpsLogDir() + "/"+fn), QMessageBox::Ok); delete LogFile; LogFile = NULL; } } return true; } bool QGPSDDevice::closeDevice() { return true; } // this function will be called within this thread void QGPSDDevice::onStop() { quit(); } void QGPSDDevice::run() { GPSSlotForwarder Forward(this); QTcpSocket Link; Server = &Link; Link.connectToHost(M_PREFS->getGpsdHost(),M_PREFS->getGpsdPort()); connect(Server,SIGNAL(connected()),&Forward,SLOT(onLinkReady())); connect(Server,SIGNAL(readyRead()),&Forward,SLOT(onDataAvailable())); connect(this,SIGNAL(doStopDevice()),&Forward,SLOT(onStop())); exec(); } void QGPSDDevice::onDataAvailable() { QByteArray ba(Server->readAll()); // filter out unwanted characters for (int i=ba.count(); i; --i) if(ba[i-1] == '\0' || (!isalnum((quint8)ba[i-1]) && !isspace((quint8)ba[i-1]) && !ispunct((quint8)ba[i-1]))) { ba.remove(i-1,1); } if (LogFile) LogFile->write(ba); Buffer.append(ba); if (Buffer.length() > 4096) // safety valve Buffer.remove(0,Buffer.length()-4096); while (Buffer.count()) { // look for begin of sentence marker int i = Buffer.indexOf('$'); if (i<0) { Buffer.clear(); return; } Buffer.remove(0,i); // look for end of sentence marker for (i=0; i<Buffer.count(); ++i) if ( (Buffer[i] == (char)(0x0a)) || (Buffer[i] == (char)(0x0d)) ) break; if (i == Buffer.count()) return; parseNMEA(Buffer.mid(0,i-2)); Buffer.remove(0,i); } } void QGPSDDevice::parse(const QString& s) { qDebug() << "parsing " << s.toUtf8().data() << "*"; QStringList Args(s.split(',',QString::SkipEmptyParts)); for (int i=0; i<Args.count(); ++i) { QString Left(Args[i].left(2)); if (Left == "O=") parseO(Args[i].right(Args[i].length()-2)); if (Left == "Y=") parseY(Args[i].right(Args[i].length()-2)); } } void QGPSDDevice::parseY(const QString& s) { for(int i = 0; i < 50; i ++) satArray[i][0] = satArray[i][1] = satArray[i][2] = 0; QStringList Sats(s.split(':',QString::SkipEmptyParts)); for (int i=1; i<Sats.size(); ++i) { QStringList Items(Sats[i].split(' ',QString::SkipEmptyParts)); if (Items.count() < 5) continue; int id = Items[0].toInt(); if ( (id >= 0) && (id<50) ) { satArray[id][0] = int(Items[1].toDouble()); satArray[id][1] = int(Items[2].toDouble()); satArray[id][2] = int(Items[3].toDouble()); } } setNumSatellites(Sats.size()); emit updateStatus(); } void QGPSDDevice::parseO(const QString& s) { if (s.isEmpty()) return; setFixType(FixInvalid); if (s[0] == '?') return; QStringList Args(s.split(' ',QString::SkipEmptyParts)); if (Args.count() < 5) return; setFixType(Fix3D); setFixStatus(StatusActive); setLatitude(Args[3].toDouble()); setLongitude(Args[4].toDouble()); qreal Alt = 0; if (Args.count() > 5) Alt = Args[5].toDouble(); qreal Speed = 0; if (Args.count() > 9) Speed = Args[9].toDouble(); qreal Heading = 0; if (Args.count() > 7) Heading = Args[7].toDouble(); emit updatePosition(Args[3].toDouble(), Args[4].toDouble(), QDateTime::currentDateTime(), Alt, Speed, Heading); setHeading(Heading); setAltitude(Alt); setSpeed(Speed); emit updateStatus(); } void QGPSDDevice::onLinkReady() { if (!Server) return; Server->write("w+"); Server->write("r+"); Server->write("j=1"); } #endif /*USE_GPSD_LIB*/ #endif #if defined Q_OS_SYMBIAN || defined(Q_WS_SIMULATOR) /* QtMobility */ // Use the QtMobility namespace QTM_USE_NAMESPACE QGPSMobileDevice::QGPSMobileDevice() { } bool QGPSMobileDevice::openDevice() { src = QGeoPositionInfoSource::createDefaultSource(this); if (!src) { return false; } src->setUpdateInterval(1000); src->startUpdates(); connect(src, SIGNAL(updateTimeout()), SLOT(onUpdateTimeout())); connect(src, SIGNAL(positionUpdated(const QGeoPositionInfo&)), SLOT(onPositionUpdated(const QGeoPositionInfo&))); satsrc = QGeoSatelliteInfoSource::createDefaultSource(this); if (satsrc) { connect(satsrc, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>)), SLOT(on_satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); connect(satsrc, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>)), SLOT(on_satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); connect(satsrc, SIGNAL(requestTimeout()), SLOT(on_satRequestTimeout())); satsrc->startUpdates(); } return true; } bool QGPSMobileDevice::closeDevice() { return true; } // this function will be called within this thread void QGPSMobileDevice::onStop() { quit(); } void QGPSMobileDevice::run() { GPSSlotForwarder Forward(this); connect(this,SIGNAL(doStopDevice()),&Forward,SLOT(onStop())); exec(); src->stopUpdates(); } void QGPSMobileDevice::onUpdateTimeout() { setFixType(FixUnavailable); } void QGPSMobileDevice::onPositionUpdated(const QGeoPositionInfo &update) { cur_datetime = update.timestamp(); cur_latitude = update.coordinate().latitude(); cur_longitude = update.coordinate().longitude(); cur_altitude = update.coordinate().altitude(); if (update.hasAttribute(QGeoPositionInfo::GroundSpeed)) { cur_speed = update.attribute(QGeoPositionInfo::GroundSpeed); } if (update.hasAttribute(QGeoPositionInfo::HorizontalAccuracy)) { m_accuracy = qRound(update.attribute(QGeoPositionInfo::HorizontalAccuracy)); } if (update.hasAttribute(QGeoPositionInfo::Direction)) { cur_heading = qRound(update.attribute(QGeoPositionInfo::Direction)); } if (m_accuracy > 500) { setFixStatus(StatusVoid); setFixType(FixUnavailable); } else if (m_accuracy < 100) { setFixStatus(StatusActive); setFixType(Fix3D); } else { setFixStatus(StatusActive); setFixType(Fix2D); } emit updatePosition(latitude(), longitude(), dateTime(), altitude(), speed(), heading()); emit updateStatus(); } //int QGPSMobileDevice::getUpdateInterval() const //{ // if (src) // return src->updateInterval(); // else // return 0; //} //void QGPSMobileDevice::setUpdateInterval(int arg) //{ // if (src) // src->setUpdateInterval(arg); //} void QGPSMobileDevice::on_satellitesInViewUpdated(QList<QGeoSatelliteInfo> satList) { qDebug() << "Sat updated"; m_List = satList; emit updateStatus(); } void QGPSMobileDevice::on_satellitesInUseUpdated(QList<QGeoSatelliteInfo> satList) { m_UseList = satList; emit updateStatus(); } void QGPSMobileDevice::on_satRequestTimeout() { m_List.clear(); m_UseList.clear(); emit updateStatus(); } void QGPSMobileDevice::satInfo(int index, int &elev, int &azim, int &snr) { elev = 0; azim = 0; snr = 0; foreach (QGeoSatelliteInfo gi, m_List) { if (gi.prnNumber() == index) { elev = gi.attribute(QGeoSatelliteInfo::Elevation); azim = gi.attribute(QGeoSatelliteInfo::Azimuth); snr = gi.signalStrength(); return; } } } void QGPSMobileDevice::onLinkReady() { } void QGPSMobileDevice::onDataAvailable() { } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/qgpsdevice.h��������������������������������������������������������������0000664�0000000�0000000�00000023270�11770671653�0017514�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2005 by Robin Gingras * * neozenkai@cox.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef QGPS_DEVICE_H #define QGPS_DEVICE_H #include <QObject> #include <QThread> #include <QDateTime> #include <QFile> class QString; class QMutex; class QextSerialPort; class QFile; class QGPSDevice; // We want these slots to be executed within the thread represented by // QGPSDDevice. Since that class itself lives in the main thread, we need // a forwarder that does live there as the receiver. class GPSSlotForwarder : public QObject { Q_OBJECT public: GPSSlotForwarder(QGPSDevice* Target); public slots: void onLinkReady(); void onDataAvailable(); void onStop(); void checkDataAvailable(); private: QGPSDevice* Target; }; class QGPSDevice : public QThread { Q_OBJECT public: QGPSDevice(); virtual bool openDevice() = 0; virtual bool closeDevice() = 0; enum FixMode { FixAuto, FixManual }; enum FixStatus { StatusActive, StatusVoid }; enum FixType { FixUnavailable, FixInvalid, Fix2D, Fix3D }; enum CardinalDirection { CardinalNorth, CardinalSouth, CardinalEast, CardinalWest, CardinalNone }; void setDevice(QString new_device) { cur_device = new_device; } QString device() { return cur_device; } QDateTime dateTime() { return cur_datetime; } int fixQuality() { return cur_fixQuality; } int numSatellites() { return cur_numSatellites; } FixType fixType() { return cur_fixType; } FixMode fixMode() { return cur_fixMode; } FixStatus fixStatus() { return cur_fixStatus; } qreal latitude() { return cur_latitude; } qreal longitude() { return cur_longitude; } qreal altitude() { return cur_altitude; } qreal heading() { return cur_heading; } qreal speed() { return cur_speed; } qreal variation() { return cur_variation; } qreal dillution() { return cur_dillution; } CardinalDirection latCardinal() { return cur_latCardinal; } CardinalDirection longCardinal() { return cur_longCardinal; } CardinalDirection varCardinal() { return cur_varCardinal; } bool isActiveSat(int prn); void satInfo(int index, int &elev, int &azim, int &snr); // some convinience functions int latDegrees(); int latMinutes(); int latSeconds(); int longDegrees(); int longMinutes(); int longSeconds(); public slots: virtual void startDevice(); virtual void stopDevice(); signals: void updatePosition(qreal latitude, qreal longitude, QDateTime time, qreal altitude, qreal speed, qreal heading); void updateStatus(); void doStopDevice(); protected: virtual void checkDataAvailable() {}; virtual void run() = 0; int fd; bool stopLoop; QMutex *mutex; // functions to set various properties - private void setLatitude(qreal new_latitude) { cur_latitude = new_latitude; } void setLongitude(qreal new_longitude) { cur_longitude = new_longitude; } void setAltitude(qreal new_altitude) { cur_altitude = new_altitude; } void setHeading(qreal new_heading) { cur_heading = new_heading; } void setSpeed(qreal new_speed) { cur_speed = new_speed; } void setVariation(qreal new_variation) { cur_variation = new_variation; } void setLatCardinal(CardinalDirection new_direction) { cur_latCardinal = new_direction; } void setLongCardinal(CardinalDirection new_direction) { cur_longCardinal = new_direction; } void setVarCardinal(CardinalDirection new_direction) { cur_varCardinal = new_direction; } void setFixQuality(int new_fixQuality) { cur_fixQuality = new_fixQuality; } void setDillution(qreal new_dillution) { cur_dillution = new_dillution; } void setNumSatellites(int new_numSatellites) { cur_numSatellites = new_numSatellites;} void setFixType(FixType new_fixType) { cur_fixType = new_fixType; } void setFixMode(FixMode new_fixMode) { cur_fixMode = new_fixMode; } void setFixStatus(FixStatus new_fixStatus) { cur_fixStatus = new_fixStatus; } QString cur_device; QDateTime cur_datetime; qreal cur_latitude; qreal cur_longitude; qreal cur_altitude; qreal cur_heading; qreal cur_speed; qreal cur_variation; qreal cur_dillution; CardinalDirection cur_latCardinal; CardinalDirection cur_longCardinal; CardinalDirection cur_varCardinal; int cur_fixQuality; int cur_numSatellites; int satArray[50][3]; int activeSats[12]; FixType cur_fixType; FixMode cur_fixMode; FixStatus cur_fixStatus; QFile* LogFile; void parseNMEA(const QByteArray& array); bool parseGGA(const char *ggaString = 0); bool parseGLL(const char *ggaString = 0); bool parseGSA(const char *gsaString = 0); bool parseGSV(const char *gsvString = 0); bool parseRMC(const char *gsvString = 0); private: virtual void onLinkReady() = 0; virtual void onDataAvailable() = 0; virtual void onStop() = 0; friend class GPSSlotForwarder; }; #ifndef _MOBILE class QGPSComDevice : public QGPSDevice { Q_OBJECT public: QGPSComDevice(const QString &device); virtual ~QGPSComDevice(); virtual bool openDevice(); virtual bool closeDevice(); private: virtual void onLinkReady(); virtual void onDataAvailable(); virtual void onStop(); QextSerialPort *port; QByteArray Buffer; virtual void run(); protected: virtual void checkDataAvailable(); }; #endif class QGPSFileDevice : public QGPSDevice { Q_OBJECT public: QGPSFileDevice(const QString &device); virtual bool openDevice(); virtual bool closeDevice(); private: virtual void onLinkReady(); virtual void onDataAvailable(); virtual void onStop(); QFile* theFile; virtual void run(); }; #ifndef _MOBILE #ifdef USE_GPSD_LIB #include "libgpsmm.h" class QGPSDDevice; class QGPSDDevice : public QGPSDevice { Q_OBJECT public: QGPSDDevice(const QString& device); virtual bool openDevice(); virtual bool closeDevice(); protected: virtual void run(); private: void onLinkReady(); void onDataAvailable(); void onStop(); gpsmm* Server; struct gps_data_t* gpsdata; QByteArray Buffer; friend class GPSSlotForwarder; }; #else /*USE_GPSD_LIB*/ class QTcpSocket; class QGPSDDevice; class QGPSDDevice : public QGPSDevice { Q_OBJECT public: QGPSDDevice(const QString& device); virtual bool openDevice(); virtual bool closeDevice(); protected: virtual void run(); private: void onLinkReady(); void onDataAvailable(); void onStop(); void parse(const QString& s); void parseO(const QString& s); void parseY(const QString& s); QTcpSocket* Server; QByteArray Buffer; friend class GPSSlotForwarder; }; #endif /*USE_GPSD_LIB*/ #endif #if defined Q_OS_SYMBIAN || defined(Q_WS_SIMULATOR) #include <QGeoPositionInfo> #include <QGeoPositionInfoSource> #include <QGeoSatelliteInfo> #include <QGeoSatelliteInfoSource> // Use the QtMobility namespace QTM_USE_NAMESPACE class QGPSMobileDevice : public QGPSDevice { Q_OBJECT public: QGPSMobileDevice(); virtual bool openDevice(); virtual bool closeDevice(); void satInfo(int index, int &elev, int &azim, int &snr); protected: virtual void run(); private slots: void onUpdateTimeout(); void onPositionUpdated ( const QGeoPositionInfo & update ) ; // void setUpdateInterval(int arg); void on_satRequestTimeout(); void on_satellitesInViewUpdated(QList<QGeoSatelliteInfo>); void on_satellitesInUseUpdated(QList<QGeoSatelliteInfo>); private: void onLinkReady(); void onDataAvailable(); void onStop(); friend class GPSSlotForwarder; private: QGeoPositionInfoSource* src; QGeoSatelliteInfoSource* satsrc; QList<QGeoSatelliteInfo> m_List; QList<QGeoSatelliteInfo> m_UseList; int m_accuracy; }; #endif #endif // QGPS_DEVICE_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/qgpsmainwindowui.ui�������������������������������������������������������0000664�0000000�0000000�00000013455�11770671653�0021161�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>QGPSMainWindowUI</class> <widget class="QWidget" name="QGPSMainWindowUI"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>350</width> <height>268</height> </rect> </property> <property name="windowTitle"> <string>GPS</string> </property> <layout class="QVBoxLayout" name="satLayoutV"> <item> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QLabel" name="lblFixStatus"> <property name="text"> <string>TextLabel</string> </property> </widget> </item> <item> <widget class="QLabel" name="lblFixTime"> <property name="text"> <string>TextLabel</string> </property> <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="satLayoutH"> <item> <widget class="QGPSSatelliteTracker" name="satTracker" native="true"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>50</width> <height>50</height> </size> </property> </widget> </item> <item> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="1"> <widget class="QLabel" name="txtLatitude"> <property name="text"> <string>99 99' 99"</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="textLabel2"> <property name="text"> <string>Longitude</string> </property> <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item row="1" column="1"> <widget class="QLabel" name="txtLongitude"> <property name="text"> <string>99 99' 99"</string> </property> </widget> </item> <item row="2" column="0"> <widget class="QLabel" name="textLabel3"> <property name="text"> <string>Altitude</string> </property> <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item row="2" column="1"> <widget class="QLabel" name="txtAltitude"> <property name="text"> <string>1000 meter</string> </property> </widget> </item> <item row="3" column="0"> <widget class="QLabel" name="textLabel1_2"> <property name="text"> <string># Satellites</string> </property> <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item row="3" column="1"> <widget class="QLabel" name="txtNumSats"> <property name="text"> <string>00</string> </property> </widget> </item> <item row="4" column="0"> <widget class="QLabel" name="textLabel2_2"> <property name="text"> <string>Fix Type</string> </property> <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item row="4" column="1"> <widget class="QLabel" name="txtFixType"> <property name="text"> <string>Invalid</string> </property> </widget> </item> <item row="5" column="0"> <widget class="QLabel" name="textLabel4"> <property name="text"> <string>Speed</string> </property> <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> <item row="5" column="1"> <widget class="QLabel" name="txtSpeed"> <property name="text"> <string>000 km/h</string> </property> </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="textLabel1"> <property name="text"> <string>Latitude</string> </property> <property name="wordWrap"> <bool>false</bool> </property> </widget> </item> </layout> </item> </layout> </item> </layout> </item> <item> <widget class="SatelliteStrengthView" name="StrengthView" native="true"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>0</width> <height>40</height> </size> </property> <property name="maximumSize"> <size> <width>16777215</width> <height>60</height> </size> </property> </widget> </item> </layout> </widget> <customwidgets> <customwidget> <class>QGPSSatelliteTracker</class> <extends>QWidget</extends> <header>qgpssatellitetracker.h</header> </customwidget> <customwidget> <class>SatelliteStrengthView</class> <extends>QWidget</extends> <header>SatelliteStrengthView.h</header> <container>1</container> </customwidget> </customwidgets> <resources/> <connections/> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/qgpssatellitetracker.cpp��������������������������������������������������0000664�0000000�0000000�00000011635�11770671653�0022154�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2005 by Robin Gingras * * neozenkai@cox.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <math.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #include <QPainter> #include <QPen> #include <QBrush> #include "qgpssatellitetracker.h" QGPSSatelliteTracker::QGPSSatelliteTracker(QWidget *parent) : QWidget(parent), Heading(0) { } void QGPSSatelliteTracker::setSatellites(const QList<Satellite>& aList) { List = aList; update(); } void QGPSSatelliteTracker::setHeading(int x) { Heading = x; update(); } /** * private void QGPSSatelliteTracker::paintEvent() * * Does the actual drawing of the widget. Reads the satArray array to * get satellite positions and PRNs. Reads the satActive array to get * which satellites are being used. * * @param QPaintEvent * Ignored by this function */ void QGPSSatelliteTracker::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.translate(width()/2,height()/2); int rad = width(); if (height() < rad) rad = height(); rad /= 2; rad -= 2; painter.setPen(QPen(palette().text(), 1, Qt::SolidLine)); painter.setBrush(Qt::NoBrush); // first paint the two reference circles, one at 0 degrees, and // the other at 45 degrees painter.drawEllipse(-rad,-rad, rad*2,rad*2); painter.drawEllipse(-rad/2,-rad/2,rad,rad); // now the reference lines, one vertical and the other horizontal painter.drawLine(-rad,0,rad,0); painter.drawLine(0,-rad,0,rad); // plot heading if (List.size()) { painter.setPen(QPen(QColor(240,32,32),3,Qt::SolidLine,Qt::RoundCap)); qreal Alfa = Heading-90; Alfa = Alfa*3.141592/180; qreal fx = cos(Alfa)*rad*3/4; qreal fy = sin(Alfa)*rad*3/4; painter.drawLine(0,0,int(fx),int(fy)); painter.drawLine(int(fx),int(fy), int(fx+cos(Alfa+3.1415*5/6)*8),int(fy+sin(Alfa+3.1415*5/6)*8)); painter.drawLine(int(fx),int(fy), int(fx+cos(Alfa-3.1415*5/6)*8),int(fy+sin(Alfa-3.1415*5/6)*8)); } // now plot the satellites painter.setPen(QPen(palette().foreground(), 2, Qt::SolidLine)); painter.setBrush(QBrush(palette().foreground())); int x,y; for (int i=0; i<List.size(); ++i) { if(List[i].SignalStrength > 0) { getCoordsFromPos(rad,List[i].Elevation,List[i].Azimuth, x, y); painter.drawEllipse(x - 2, y - 2, 4, 4); painter.drawText(x + 5, y - 1, QString("%1").arg(List[i].Id)); } } } /** * private void QGPSSatelliteTracker::getCoordsFromPos() * * Inputs and elevation and azimuth, and translates them to coordinates * that QPainter can use. This one took some thought, but I think it's * correct. Satellites jump around, maybe a problem? * * @param int elevation Elevation of the satellite in degrees, 0 - 90 * @param int azimuth Azimuth of the satellite in degrees, 0 - 360 * @param int &x Pointer to x-coordinate * @param int &y Pointer to y-coordinate */ void QGPSSatelliteTracker::getCoordsFromPos(int rad, int elevation, int azimuth, int &x, int &y) { int theta = azimuth-90; // since the "origin" of the sky is 90 (directly overhead), reverse // elevation to make the origin 0 (an elevation of 90 becomes 0, etc) elevation = 90 - elevation; // you should know this (slept too much in trig) x = int(cos(theta*M_PI/180) * elevation * rad / 90); y = int(sin(theta*M_PI/180) * elevation * rad / 90); } ���������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/GPS/qgpssatellitetracker.h����������������������������������������������������0000664�0000000�0000000�00000003755�11770671653�0021625�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2005 by Robin Gingras * * neozenkai@cox.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef QGPSSATELLITETRACKER_H #define QGPSSATELLITETRACKER_H #include <QWidget> #include <QVector> #include "SatelliteStrengthView.h" class QGPSSatelliteTracker : public QWidget { Q_OBJECT public: QGPSSatelliteTracker(QWidget *parent = 0); void paintEvent(QPaintEvent *); void setSatellites(const QList<Satellite>& aList); void setHeading(int x); private: void getCoordsFromPos(int rad, int elevation, int azimuth, int &x, int &y); QList<Satellite> List; int Heading; }; #endif �������������������merkaartor-0.18.1/src/ImportExport/�����������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0017230�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ExportDialog.ui��������������������������������������������������0000664�0000000�0000000�00000004633�11770671653�0022176�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>ExportDialog</class> <widget class="QDialog" name="ExportDialog" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>191</width> <height>139</height> </rect> </property> <property name="windowTitle" > <string>Export</string> </property> <layout class="QVBoxLayout" > <property name="spacing" > <number>4</number> </property> <property name="margin" > <number>3</number> </property> <item> <widget class="QLabel" name="label" > <property name="text" > <string>What do you want to export?</string> </property> </widget> </item> <item> <widget class="QGroupBox" name="groupBox" > <property name="title" > <string/> </property> <layout class="QVBoxLayout" > <item> <widget class="QRadioButton" name="rbAll" > <property name="text" > <string>All visible (i.e. not hidden)</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbViewport" > <property name="text" > <string>Viewport</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbSelected" > <property name="text" > <string>Selected</string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox" > <property name="orientation" > <enum>Qt::Horizontal</enum> </property> <property name="standardButtons" > <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>ExportDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel" > <x>248</x> <y>254</y> </hint> <hint type="destinationlabel" > <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>ExportDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel" > <x>316</x> <y>260</y> </hint> <hint type="destinationlabel" > <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> �����������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ExportGPX.cpp����������������������������������������������������0000664�0000000�0000000�00000005140�11770671653�0021574�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ExportGPX // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include <QtGui> #include "../ImportExport/ExportGPX.h" ExportGPX::ExportGPX(Document* doc) : IImportExport(doc) { } ExportGPX::~ExportGPX() { } // export bool ExportGPX::export_(const QList<Feature *>& featList) { QList<Node*> waypoints; QList<TrackSegment*> segments; QList<Layer*> tracks; QList<Way*> routes; if(! IImportExport::export_(featList) ) return false; bool OK = true; QXmlStreamWriter stream(Device); stream.setAutoFormatting(true); stream.setAutoFormattingIndent(2); stream.writeStartDocument(); QProgressDialog progress(QApplication::tr("Exporting GPX..."), QApplication::tr("Cancel"), 0, 0); progress.setWindowModality(Qt::WindowModal); progress.setMaximum(progress.maximum() + featList.count()); stream.writeStartElement("gpx"); stream.writeAttribute("version", "1.1"); stream.writeAttribute("creator", QString("%1 v%2%3").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); stream.writeAttribute("xmlns", "http://www.topografix.com/GPX/1/1"); for (int i=0; i<theFeatures.size(); ++i) { if (TrackSegment* S = dynamic_cast<TrackSegment*>(theFeatures[i])) { segments.push_back(S); if (!tracks.contains(S->layer())) tracks.push_back(S->layer()); } else if (Node* P = CAST_NODE(theFeatures[i])) { if (!P->tagValue("_waypoint_","").isEmpty()) waypoints.push_back(P); if (!P->tagValue("name","").isEmpty() && !P->sizeParents()) waypoints.push_back(P); } else if (Way* R = CAST_WAY(theFeatures[i])) { if (R->size()) routes.push_back(R); } } for (int i=0; i < waypoints.size(); ++i) { waypoints[i]->toGPX(stream, &progress, "wpt", true); } for (int i=0; i < routes.size(); ++i) { routes[i]->toGPX(stream, &progress, true); } for (int i=0; i<tracks.size(); ++i) { stream.writeStartElement("trk"); stream.writeTextElement("name", tracks[i]->name()); for (int j=0; j < segments.size(); ++j) if (tracks[i]->exists(segments[j])) segments[j]->toGPX(stream, &progress, true); stream.writeEndElement(); } stream.writeEndElement(); stream.writeEndDocument(); progress.setValue(progress.maximum()); if (progress.wasCanceled()) return false; return OK; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ExportGPX.h������������������������������������������������������0000664�0000000�0000000�00000000722�11770671653�0021242�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ExportGPX // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ExportGPX_H #define ExportGPX_H #include "IImportExport.h" /** @author cbro <cbro@semperpax.com> */ class ExportGPX : public IImportExport { public: ExportGPX(Document* doc); ~ExportGPX(); //export virtual bool export_(const QList<Feature *>& featList); }; #endif ����������������������������������������������merkaartor-0.18.1/src/ImportExport/ExportOSM.cpp����������������������������������������������������0000664�0000000�0000000�00000006300�11770671653�0021573�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ExportOSM.h" #include "Utils.h" #include "Features.h" #include "MerkaartorPreferences.h" static QString stripToOSMId(const IFeature::FId& id) { return QString::number(id.numId); } static QString tagOSM(const Feature& F) { QString S; for (int i=0; i<F.tagSize(); ++i) { if (F.tagKey(i).startsWith('_') && (F.tagKey(i).endsWith('_'))) continue; const QString & tagKey = Utils::encodeAttributes( F.tagKey(i) ); const QString & tagValue = Utils::encodeAttributes( F.tagValue(i) ); S += QString("<tag k=\"%1\" v=\"%2\"/>").arg( tagKey ).arg( tagValue ); } return S; } QString versionAttribute(const Feature& F) { #ifndef FRISIUS_BUILD return QString(" version=\"%1\"").arg(F.versionNumber()); #endif } QString exportOSM(const Node& Pt, const QString& ChangesetId) { if (Pt.isVirtual()) return QString(); QString S; if (ChangesetId.isEmpty()) S += QString("<node id=\"%1\" lat=\"%2\" lon=\"%3\"%4>") .arg(stripToOSMId(Pt.id())).arg(Pt.position().y(),0,'f',8).arg(Pt.position().x(),0,'f',8).arg(versionAttribute(Pt)); else S += QString("<node id=\"%1\" lat=\"%2\" lon=\"%3\"%4 changeset=\"%5\">") .arg(stripToOSMId(Pt.id())).arg(Pt.position().y(),0,'f',8).arg(Pt.position().x(),0,'f',8).arg(versionAttribute(Pt)) .arg(ChangesetId); S+=tagOSM(Pt); S+="</node>"; return S; } QString exportOSM(const Way& R, const QString& ChangesetId) { QString S; if (ChangesetId.isEmpty()) S += QString("<way id=\"%1\"%2>").arg(stripToOSMId(R.id())).arg(versionAttribute(R)); else S += QString("<way id=\"%1\"%2 changeset=\"%3\">").arg(stripToOSMId(R.id())).arg(versionAttribute(R)).arg(ChangesetId); if (R.size()) { S+=QString("<nd ref=\"%1\"/>").arg(stripToOSMId(R.get(0)->id())); for (int i=1; i<R.size(); ++i) if (!R.getNode(i)->isVirtual()) if (R.get(i)->id().numId != R.get(i-1)->id().numId) S+=QString("<nd ref=\"%1\"/>").arg(stripToOSMId(R.get(i)->id())); } S += tagOSM(R); S += "</way>"; return S; } QString exportOSM(const Relation& R, const QString& ChangesetId) { QString S; if (ChangesetId.isEmpty()) S += QString("<relation id=\"%1\"%2>").arg(stripToOSMId(R.id())).arg(versionAttribute(R)); else S += QString("<relation id=\"%1\"%2 changeset=\"%3\">").arg(stripToOSMId(R.id())).arg(versionAttribute(R)).arg(ChangesetId); for (int i=0; i<R.size(); ++i) { QString Type("node"); if (dynamic_cast<const Way*>(R.get(i))) Type="way"; else if (dynamic_cast<const Relation*>(R.get(i))) Type="relation"; S+=QString("<member type=\"%1\" ref=\"%2\" role=\"%3\"/>").arg(Type).arg(stripToOSMId(R.get(i)->id())).arg(R.getRole(i)); } S += tagOSM(R); S += "</relation>"; return S; } QString wrapOSM(const QString& S, const QString& ChangeSetId) { if (ChangeSetId.isEmpty()) return "<osm version=\"0.5\">"+S+"</osm>"+QChar(0); else return "<osm>"+S+"</osm>"+QChar(0); //return "<osm version=\"0.6\" changeset=\""+ChangeSetId+"\">"+S+"</osm>"+QChar(0); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ExportOSM.h������������������������������������������������������0000664�0000000�0000000�00000000616�11770671653�0021244�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_EXPORTOSM_H_ #define MERKAARTOR_EXPORTOSM_H_ class Relation; class Way; class Node; #include <QtCore/QString> QString exportOSM(const Node& Pt, const QString& ChangesetId); QString exportOSM(const Way& R, const QString& ChangesetId); QString exportOSM(const Relation& R, const QString& ChangesetId); QString wrapOSM(const QString& S, const QString& ChangeSetId); #endif ������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/IImportExport.cpp������������������������������������������������0000664�0000000�0000000�00000002432�11770671653�0022522�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: IImportExport // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include <QtGui> #include "../ImportExport/IImportExport.h" IImportExport::IImportExport(Document* doc) : theDoc(doc), Device(0), ownDevice(false) { } IImportExport::~IImportExport() { if (ownDevice) { if (Device && Device->isOpen()) Device->close(); delete Device; } } // Specify the input as a QIODevice bool IImportExport::setDevice(QIODevice* aDevice) { Device = aDevice; return true; } // Specify the input as a QFile bool IImportExport::loadFile(QString filename) { FileName = filename; Device = new QFile(filename); ownDevice = true; return Device->open(QIODevice::ReadOnly); } bool IImportExport::saveFile(QString filename) { FileName = filename; Device = new QFile(filename); ownDevice = true; return Device->open(QIODevice::WriteOnly | QIODevice::Truncate); } bool IImportExport::export_(const QList<Feature *>& featList) { theFeatures = featList; return true; } CommandList* IImportExport::getCommandList() { return theList; } const QString& IImportExport::getFilename() const { return FileName; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/IImportExport.h��������������������������������������������������0000664�0000000�0000000�00000002337�11770671653�0022173�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: IImportExport // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef IIMPORTEXPORT_H #define IIMPORTEXPORT_H class QString; class QIODevice; #include "Features.h" #include "Layer.h" #include "Command.h" #include "DocumentCommands.h" /** Interface for Import/Export @author cbro <cbro@semperpax.com> */ class IImportExport{ public: IImportExport(Document* doc); virtual ~IImportExport(); public: // Specify the input as a QIODevice virtual bool setDevice(QIODevice* aDevice); // Specify the input as a QFile virtual bool loadFile(QString filename); // Specify the output as a QFile virtual bool saveFile(QString filename); // import the input virtual bool import(Layer* /* aLayer */) { return false; } // export virtual bool export_(const QList<Feature *>& featList = QList<Feature *>()); // Return the filename const QString& getFilename() const; virtual CommandList* getCommandList(); protected: Document* theDoc; QIODevice* Device; CommandList* theList; QList<Feature*> theFeatures; QString FileName; bool ownDevice; }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportCSVDialog.cpp����������������������������������������������0000664�0000000�0000000�00000035240�11770671653�0022706�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: %CLASS% // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "ImportCSVDialog.h" #include "ui_ImportCSVDialog.h" #include "Features.h" #include "Layer.h" #include "Global.h" #include <QTimer> #include <QMessageBox> #include <QDomDocument> #include <QFileDialog> ImportCSVDialog::ImportCSVDialog(QIODevice* aDev, QWidget *parent) : QDialog(parent), ui(new Ui::ImportCSVDialog) , m_dev(aDev) , m_selField(-1) { ui->setupUi(this); ui->edCustomDelim->setEnabled(false); ui->cbFieldType->addItem(tr("String"), CSVString); ui->cbFieldType->addItem(tr("Integer"), CSVInt); ui->cbFieldType->addItem(tr("Float"), CSVFloat); ui->cbFieldType->addItem(tr("Longitude"), CSVLongitude); ui->cbFieldType->addItem(tr("Latitude"), CSVLatitude); CSVProjection.setProjectionType("EPSG:4326"); QTimer::singleShot(0, this, SLOT(initialize())); } ImportCSVDialog::~ImportCSVDialog() { delete ui; } void ImportCSVDialog::initialize() { m_dev->seek(0); int l=0; QString previewText; while (l<4 && !m_dev->atEnd()) { QString line = m_dev->readLine(); previewText += line; ++l; } ui->txInput->setText(previewText); analyze(); generatePreview(); } void ImportCSVDialog::analyze() { m_dev->seek(0); QString l; QStringList hdr; bool ok; l = m_dev->readLine(); QStringList slc = l.split(","); int best = slc.size(); ui->rbColonDelim->setChecked(true); m_delim = ","; QStringList sls = l.split(";"); if (sls.size() > best) { best = sls.size(); ui->rbSemiDelim->setChecked(true); m_delim = ";"; } QStringList slt = l.split("\t"); if (slt.size() > best) { best = slt.size(); ui->rbTabDelim->setChecked(true); m_delim = "\t"; } ui->cbHasHeader->setChecked(true); QStringList sl = l.split(m_delim); for (int i=0; i<sl.size(); ++i) { sl[i].toDouble(&ok); if (ok) { ui->cbHasHeader->setChecked(false); break; } } QRegExp rx(QString("%1\\s*\".*\"\\s*%1").arg(m_delim)); if (rx.indexIn(l)) { m_quote = "\""; ui->rbStringDouble->setChecked(true); } else { rx = QRegExp(QString("%1\\s*'.*'\\s*%1").arg(m_delim)); if (rx.indexIn(l)) { m_quote = "'"; ui->rbStringSingle->setChecked(true); } else { m_quote = ""; ui->rbStringNone->setChecked(true); } } m_dev->seek(0); if (ui->cbHasHeader->isChecked()) { l = m_dev->readLine(); hdr = l.split(m_delim); } l = m_dev->readLine(); QStringList flds = l.split(m_delim); Fields.clear(); int hdrIdx = 0; for (int i=0; i<flds.size(); ++i) { CSVField f; QString fld = flds[i]; if (!m_quote.isEmpty()) { if (flds[i].trimmed().startsWith(m_quote)) { while (i<flds.size()-1 && !flds[i].trimmed().endsWith(m_quote)) { ++i; fld += m_delim + flds[i]; } fld.remove(0, 1); fld.chop(1); } } if (ui->cbHasHeader->isChecked()) { if (hdrIdx<hdr.size()) f.name = hdr[hdrIdx].simplified(); } else f.name = "field_" + QString::number(i); flds[i].toDouble(&ok); if (ok) { if (f.name.startsWith("lat", Qt::CaseInsensitive)) { f.type = CSVLatitude; } else if (f.name.startsWith("lon", Qt::CaseInsensitive)) { f.type = CSVLongitude; } else f.type = CSVFloat; } else { flds[i].toInt(&ok); if (ok) f.type = CSVInt; else f.type = CSVString; } f.import = true; Fields << f; hdrIdx++; } ui->lvFields->clear(); for (int i=0; i< Fields.size(); ++i) { QListWidgetItem* item = new QListWidgetItem(Fields[i].name); item->setData(Qt::UserRole, i); ui->lvFields->addItem(item); } } Feature* ImportCSVDialog::generateOSM(Layer* l, QString line) { bool ok; QPointF p; qreal t; bool hasLat = false, hasLon = false; QStringList flds = line.split(m_delim); if (flds.size() < 2) return NULL; Node *N = g_backend.allocNode(l, Coord(0, 0)); int lidx=0; for (int i=0; i<Fields.size(); ++i) { CSVField f = Fields[i]; switch (f.type) { case CSVLatitude: if (f.import) { t = flds[lidx].toDouble(&ok); if (ok) { p.setY(t); hasLat = true; } } break; case CSVLongitude: if (f.import) { t = flds[lidx].toDouble(&ok); if (ok) { p.setX(t); hasLon = true; } } break; case CSVString: { QString fld = flds[lidx]; if (!m_quote.isEmpty()) { if (flds[lidx].trimmed().startsWith(m_quote)) { while (lidx<flds.size()-1 && !flds[lidx].trimmed().endsWith(m_quote)) { ++lidx; fld += m_delim + flds[lidx]; } fld.remove(0, 1); fld.chop(1); } } if (f.import) N->setTag(f.name, fld); break; } default: if (f.import) N->setTag(f.name, flds[lidx].trimmed()); break; } ++lidx; } if (!hasLat || !hasLon) { g_backend.deallocFeature(l, N); return NULL; } if (CSVProjection.projIsLatLong()) N->setPosition(p); else N->setPosition(CSVProjection.inverse2Coord(p)); return N; } void ImportCSVDialog::generatePreview(int /*sel*/) { m_dev->seek(0); QString line; QString previewText; if (ui->cbHasHeader) line = m_dev->readLine(); int l=0; while (l<4 && !m_dev->atEnd()) { line = m_dev->readLine().trimmed(); Feature* F = generateOSM(NULL, line); if (F) { previewText += F->toXML(2); delete F; } ++l; } ui->txPreview->setText(previewText); } void ImportCSVDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void ImportCSVDialog::on_lvFields_itemSelectionChanged() { QListWidgetItem* it = ui->lvFields->item(ui->lvFields->currentRow()); m_selField = -1; int idx = it->data(Qt::UserRole).toInt(); if (idx >= Fields.size()) { return; } CSVField f(Fields[idx]); ui->edFieldName->setText(f.name); ui->cbFieldType->setCurrentIndex(f.type); ui->cbFieldImport->setChecked(f.import); m_selField = idx; } void ImportCSVDialog::on_rbColonDelim_clicked() { m_delim = ","; generatePreview(); } void ImportCSVDialog::on_rbSemiDelim_clicked() { m_delim = ";"; generatePreview(); } void ImportCSVDialog::on_rbTabDelim_clicked() { m_delim = "\t"; generatePreview(); } void ImportCSVDialog::on_edCustomDelim_textEdited() { m_delim = ui->edCustomDelim->text(); generatePreview(); } void ImportCSVDialog::on_rbStringNone_clicked() { m_quote = ""; generatePreview(); } void ImportCSVDialog::on_rbStringSingle_clicked() { m_quote = "'"; generatePreview(); } void ImportCSVDialog::on_rbStringDouble_clicked() { m_quote = "\""; generatePreview(); } void ImportCSVDialog::on_edFieldName_textEdited() { if (m_selField == -1) return; Fields[m_selField].name = ui->edFieldName->text(); QListWidgetItem* it = ui->lvFields->item(ui->lvFields->currentRow()); it->setText(ui->edFieldName->text()); generatePreview(); } void ImportCSVDialog::on_cbFieldType_currentIndexChanged(int index) { if (m_selField == -1) return; Fields[m_selField].type = (CSVFieldType)index; generatePreview(); } void ImportCSVDialog::on_cbFieldImport_clicked(bool b) { if (m_selField == -1) return; Fields[m_selField].import = b; generatePreview(); } void ImportCSVDialog::on_edProjection_editingFinished() { if (ui->edProjection->text().isEmpty()) CSVProjection.setProjectionType("EPSG:4326"); else if (!CSVProjection.setProjectionType(ui->edProjection->text())) { QMessageBox::critical(0, tr("Invalid projection"), tr("Unable to set projection.")); CSVProjection.setProjectionType("EPSG:4326"); } generatePreview(); } void ImportCSVDialog::on_buttonBox_accepted() { bool hasLat = false; bool hasLon = false; foreach (CSVField f, Fields) { if (f.type == CSVLatitude) hasLat = true; if (f.type == CSVLongitude) hasLon = true; } if (!hasLat || !hasLon) { if (QMessageBox::critical(this, tr("No coordinates"), tr("Latitude or Longitude field missing. It will be impossible to import the file.\nDo you really want to exit?") , QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) return; else reject(); } accept(); } bool ImportCSVDialog::import(Layer *aLayer) { QString line; m_dev->seek(0); if (ui->cbHasHeader->isChecked()) m_dev->readLine(); int l = 0; while (l < ui->sbFrom->value() && !m_dev->atEnd()) { m_dev->readLine(); ++l; } while ((l < ui->sbTo->value() || ui->sbTo->value() == 0) && !m_dev->atEnd()) { line = m_dev->readLine().trimmed(); Feature* F = generateOSM(aLayer, line); if (F) aLayer->add(F); ++l; } return true; } void ImportCSVDialog::on_btLoad_clicked() { QString f = QFileDialog::getOpenFileName(this, tr("Load CSV import settings"), "", tr("Merkaartor import settings (*.mis)")); if (f.isEmpty()) return; QFile file(f); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::critical(this, tr("Invalid file"), tr("%1 could not be opened.").arg(f)); return; } QDomDocument theXmlDoc; if (!theXmlDoc.setContent(&file)) { file.close(); return; } file.close(); QDomElement docElem = theXmlDoc.documentElement(); if (docElem.tagName() != "CSVImportSettings") { QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a CSV import settings file").arg(f)); return; } m_delim = docElem.attribute("delimiter"); if (m_delim == ",") ui->rbColonDelim->setChecked(true); else if (m_delim == ";") ui->rbSemiDelim->setChecked(true); else if (m_delim == "tab") { m_delim = "\t"; ui->rbTabDelim->setChecked(true); } else { ui->rbCustomDelim->setChecked(true); ui->edCustomDelim->setText(m_delim); } ui->cbHasHeader->setChecked(docElem.attribute("header") == "true" ? true : false); ui->sbFrom->setValue(docElem.attribute("from").toInt()); ui->sbTo->setValue(docElem.attribute("to").toInt()); Fields.clear(); QDomElement e = docElem.firstChildElement(); while(!e.isNull()) { if (e.tagName() == "Fields") { QDomElement c = e.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Field") { CSVField f; f.name = c.attribute("name"); f.type = (CSVFieldType)c.attribute("type").toInt(); f.import = c.attribute("import") == "false" ? false : true; Fields << f; } c = c.nextSiblingElement(); } } else if (e.tagName() == "Projection") { ui->edProjection->setText(e.text().trimmed()); } e = e.nextSiblingElement(); } ui->lvFields->clear(); for (int i=0; i< Fields.size(); ++i) { QListWidgetItem* item = new QListWidgetItem(Fields[i].name); item->setData(Qt::UserRole, i); ui->lvFields->addItem(item); } ui->edFieldName->setText(""); on_edProjection_editingFinished(); } void ImportCSVDialog::on_btSave_clicked() { QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("CSVImportSettings"); theXmlDoc.appendChild(root); root.setAttribute("creator", QString("%1 v%2%3").arg(qApp->applicationName()).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); QString tDelim = m_delim; if (tDelim == "\t") tDelim = "tab"; root.setAttribute("delimiter", tDelim); root.setAttribute("header", ui->cbHasHeader->isChecked() ? "true" : false); root.setAttribute("from", QString::number(ui->sbFrom->value())); root.setAttribute("to", QString::number(ui->sbTo->value())); QDomElement p = theXmlDoc.createElement("Projection"); root.appendChild(p); QDomText t = theXmlDoc.createTextNode(ui->edProjection->text()); p.appendChild(t); QDomElement flds = theXmlDoc.createElement("Fields"); root.appendChild(flds); foreach(CSVField f, Fields) { QDomElement fld = theXmlDoc.createElement("Field"); flds.appendChild(fld); fld.setAttribute("name", f.name); fld.setAttribute("type", QString::number(f.type)); fld.setAttribute("import", f.import ? "true" : "false"); } QString f; QFileDialog dlg(this, tr("Save CSV import settings"), QString("%1/%2.mis").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor import settings (*.mis)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("mis"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) f = dlg.selectedFiles()[0]; } // f = QFileDialog::getSaveFileName(this, tr("Save CSV import settings"), "", tr("Merkaartor import settings (*.mis)")); if (f.isEmpty()) return; QFile file(f); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Unable to open save import settings"), tr("%1 could not be opened for writing.").arg(f)); return; } file.write(theXmlDoc.toString().toUtf8()); file.close(); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportCSVDialog.h������������������������������������������������0000664�0000000�0000000�00000003546�11770671653�0022357�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: %CLASS% // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef IMPORTCSVDIALOG_H #define IMPORTCSVDIALOG_H #include <QDialog> #include <QIODevice> #include "Projection.h" class Feature; class Layer; namespace Ui { class ImportCSVDialog; } enum CSVFieldType { CSVString, CSVInt, CSVFloat, CSVLongitude, CSVLatitude }; struct CSVField { QString name; CSVFieldType type; bool import; }; typedef QList<CSVField> CSVFields; class ImportCSVDialog : public QDialog { Q_OBJECT public: explicit ImportCSVDialog(QIODevice* aDev, QWidget *parent = 0); ~ImportCSVDialog(); bool import(Layer* aLayer); protected slots: void initialize(); void on_rbColonDelim_clicked(); void on_rbSemiDelim_clicked(); void on_rbTabDelim_clicked(); void on_edCustomDelim_textEdited(); void on_rbStringNone_clicked(); void on_rbStringSingle_clicked(); void on_rbStringDouble_clicked(); void on_lvFields_itemSelectionChanged(); void on_edFieldName_textEdited(); void on_cbFieldType_currentIndexChanged (int index); void on_cbFieldImport_clicked(bool b); void on_edProjection_editingFinished(); void on_btLoad_clicked(); void on_btSave_clicked(); void on_buttonBox_accepted(); protected: void changeEvent(QEvent *e); void analyze(); void generatePreview(int sel=-1); Feature* generateOSM(Layer* l, QString line); private: Ui::ImportCSVDialog *ui; QIODevice* m_dev; QString m_delim; QString m_quote; int m_selField; public: CSVFields Fields; Projection CSVProjection; }; #endif // IMPORTCSVDIALOG_H ����������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportCSVDialog.ui�����������������������������������������������0000664�0000000�0000000�00000031055�11770671653�0022541�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>ImportCSVDialog</class> <widget class="QDialog" name="ImportCSVDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>480</width> <height>723</height> </rect> </property> <property name="windowTitle"> <string>Dialog</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>Input</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QTextEdit" name="txInput"> <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="font"> <font> <family>Courier New</family> </font> </property> <property name="lineWrapMode"> <enum>QTextEdit::NoWrap</enum> </property> <property name="readOnly"> <bool>true</bool> </property> <property name="html"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_5"> <property name="title"> <string>OSM Preview</string> </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QTextEdit" name="txPreview"/> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_2"> <property name="title"> <string>Specifications</string> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QCheckBox" name="cbHasHeader"> <property name="text"> <string>First line contains headers</string> </property> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_3"> <property name="title"> <string>Delimiter</string> </property> <layout class="QHBoxLayout" name="horizontalLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QRadioButton" name="rbColonDelim"> <property name="text"> <string>Colon (,)</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbSemiDelim"> <property name="text"> <string>Semicolon (;)</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbTabDelim"> <property name="text"> <string>Tab</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbCustomDelim"> <property name="text"> <string>Other:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edCustomDelim"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="maximumSize"> <size> <width>40</width> <height>16777215</height> </size> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_6"> <property name="title"> <string>String Quote</string> </property> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QRadioButton" name="rbStringNone"> <property name="text"> <string>None</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbStringSingle"> <property name="text"> <string>Single quote (')</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbStringDouble"> <property name="text"> <string>Double quote (")</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </widget> </item> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Projection (in PROJ4 format; leave blank for latitude/longitude)</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edProjection"/> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="grpWmsServers"> <property name="title"> <string>Fields</string> </property> <layout class="QHBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QFrame" name="frame_2"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="_2"> <property name="spacing"> <number>5</number> </property> <property name="margin"> <number>5</number> </property> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Field list:</string> </property> </widget> </item> <item> <widget class="QListWidget" name="lvFields"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="_3"> <item> <widget class="QLabel" name="label_11"> <property name="text"> <string>Field Name (= tag key) :</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edFieldName"> <property name="minimumSize"> <size> <width>100</width> <height>0</height> </size> </property> </widget> </item> <item> <widget class="QLabel" name="label_5"> <property name="text"> <string>Field Type:</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbFieldType"/> </item> <item> <widget class="QCheckBox" name="cbFieldImport"> <property name="text"> <string>Import</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>1</height> </size> </property> </spacer> </item> </layout> </widget> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_4"> <property name="title"> <string>Import range</string> </property> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>From (0 from start):</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbFrom"/> </item> <item> <widget class="QLabel" name="label_3"> <property name="text"> <string>To (0 to End):</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbTo"/> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QPushButton" name="btLoad"> <property name="text"> <string>Load settings...</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btSave"> <property name="text"> <string>Save settings...</string> </property> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>ImportCSVDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>469</x> <y>585</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>rbCustomDelim</sender> <signal>clicked(bool)</signal> <receiver>edCustomDelim</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>331</x> <y>278</y> </hint> <hint type="destinationlabel"> <x>447</x> <y>278</y> </hint> </hints> </connection> </connections> </ui> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExport.pri�������������������������������������������������0000664�0000000�0000000�00000002103�11770671653�0022414�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/ImportExport DEPENDPATH += $$MERKAARTOR_SRC_DIR/ImportExport #Header files HEADERS += \ ExportOSM.h \ ImportGPX.h \ ImportNGT.h \ ImportOSM.h \ ImportNGT.h \ IImportExport.h \ ImportNMEA.h \ ExportGPX.h \ ImportExportKML.h \ ImportExportCSV.h \ ImportCSVDialog.h #Source files SOURCES += \ ExportOSM.cpp \ ImportGPX.cpp \ ImportOSM.cpp \ ImportNGT.cpp \ IImportExport.cpp \ ImportNMEA.cpp \ ExportGPX.cpp \ ImportExportKML.cpp \ ImportExportCSV.cpp \ ImportCSVDialog.cpp FORMS += \ ExportDialog.ui \ ImportCSVDialog.ui isEmpty(MOBILE) { HEADERS += \ ImportExportGdal.h SOURCES += \ ImportExportGdal.cpp } contains (PROTOBUF, 1) { #PBF HEADERS += \ ImportExportPBF.h \ fileformat.pb.h \ osmformat.pb.h SOURCES += \ ImportExportPBF.cpp \ fileformat.pb.cc \ osmformat.pb.cc LIBS += -lz -lbz2 -lprotobuf } !contains(FRISIUS,1) { HEADERS += \ ImportExportOSC.h SOURCES += \ ImportExportOSC.cpp } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportCSV.cpp����������������������������������������������0000664�0000000�0000000�00000001534�11770671653�0022767�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ImportExportCSV // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #include <QtGui> #include <QMessageBox> #include "../ImportExport/ImportExportCSV.h" #include "ImportCSVDialog.h" #include "Projection.h" bool parseContainer(QDomElement& e, Layer* aLayer); ImportExportCSV::ImportExportCSV(Document* doc) : IImportExport(doc) { } ImportExportCSV::~ImportExportCSV() { } // export bool ImportExportCSV::export_(const QList<Feature *>& /*featList*/) { return false; } // import the input bool ImportExportCSV::import(Layer* aLayer) { ImportCSVDialog* dlg = new ImportCSVDialog(Device); if (dlg->exec() == QDialog::Rejected) return false; bool ret = dlg->import(aLayer); delete dlg; return ret; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportCSV.h������������������������������������������������0000664�0000000�0000000�00000001124�11770671653�0022427�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ImportExportKML // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ImportExportCSV_H #define ImportExportCSV_H #include "IImportExport.h" class QDomDocument; /** @author cbro <cbro@semperpax.com> */ class ImportExportCSV : public IImportExport { public: ImportExportCSV(Document* doc); ~ImportExportCSV(); // import the input virtual bool import(Layer* aLayer); //export virtual bool export_(const QList<Feature *>& featList); }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportGdal.cpp���������������������������������������������0000664�0000000�0000000�00000032277�11770671653�0023213�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ImportExportGdal // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include <QtGui> #include "../ImportExport/ImportExportGdal.h" #include "Projection.h" #include "Features.h" #include "ProjectionChooser.h" #include "Global.h" #include "cpl_vsi.h" #include <QDir> bool parseContainer(QDomElement& e, Layer* aLayer); ImportExportGdal::ImportExportGdal(Document* doc) : IImportExport(doc) { } ImportExportGdal::~ImportExportGdal() { } // Specify the input as a QFile bool ImportExportGdal::loadFile(QString filename) { FileName = filename; return true; } bool ImportExportGdal::saveFile(QString) { return false; } // export bool ImportExportGdal::export_(const QList<Feature *>& featList) { const char *pszDriverName = "SQLite"; OGRSFDriver *poDriver; OGRRegisterAll(); poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName); if( poDriver == NULL ) { qDebug( "%s driver not available.", pszDriverName ); return false; } OGRDataSource *poDS; QFile::remove(QString(HOMEDIR + "/test.sqlite")); poDS = poDriver->CreateDataSource( QString(HOMEDIR + "/test.sqlite").toUtf8().constData(), NULL ); if( poDS == NULL ) { qDebug( "Creation of output file failed." ); return false; } poDS->ExecuteSQL("PRAGMA synchronous = OFF", NULL, NULL); OGRSpatialReference *poSRS; poSRS = new OGRSpatialReference(); poSRS->importFromEPSG(4326); char **papszOptions = NULL; papszOptions = CSLSetNameValue( papszOptions, "SPATIALITE", "YES" ); papszOptions = CSLSetNameValue( papszOptions, "FORMAT", "SPATIALITE" ); papszOptions = CSLSetNameValue( papszOptions, "SPATIAL_INDEX", "YES" ); OGRLayer *poLayer; poLayer = poDS->CreateLayer( "osm", poSRS, wkbUnknown, papszOptions); CSLDestroy( papszOptions ); if( poLayer == NULL ) { qDebug( "Layer creation failed." ); return false; } OGRFieldDefn oField("osm_id", OFTReal); if( poLayer->CreateField( &oField ) != OGRERR_NONE ) { qDebug( "Creating field failed." ); return false; } oField.Set("osm_version", OFTInteger ); poLayer->CreateField( &oField ); oField.Set("osm_timestamp", OFTInteger ); poLayer->CreateField( &oField ); OGRFeature *poFeature; foreach (Feature* F, featList) { poFeature = OGRFeature::CreateFeature( poLayer->GetLayerDefn() ); poFeature->SetField( "osm_id", (qreal)(F->id().numId)); #ifndef FRISIUS_BUILD poFeature->SetField( "osm_version", F->versionNumber()); poFeature->SetField( "osm_timestamp", (int)F->time().toTime_t()); #endif if (CHECK_NODE(F)) { Node* N = STATIC_CAST_NODE(F); OGRPoint pt; pt.setX(N->position().x()); pt.setY(N->position().y()); poFeature->SetGeometry( &pt ); } else if (CHECK_WAY(F)) { Way* W = STATIC_CAST_WAY(F); OGRLineString ls; ls.setNumPoints(W->size()); for (int i=0; i<W->size(); ++i) { ls.setPoint(i, W->getNode(i)->position().x(), W->getNode(i)->position().y(), 0); } poFeature->SetGeometry( &ls ); } if( poLayer->CreateFeature( poFeature ) != OGRERR_NONE ) { qDebug( "Failed to create feature in output." ); return false; } OGRFeature::DestroyFeature( poFeature ); } OGRDataSource::DestroyDataSource( poDS ); return true; } /***************/ // Make OGRPoint usable in a QHash<> static bool operator==(const OGRPoint a, const OGRPoint b) { return a.getX() == b.getX() && a.getY() == b.getY() && a.getDimension() == b.getDimension() && (a.getDimension() < 3 || a.getZ() == b.getZ()); } static uint qHash(const OGRPoint o) { // A good algorithm depends strongly on the data. In particular, // on the projection and extent of the map. This is written for // EPSG:27700 10kmx10km at 1m resolution (i.e. OS OpenData tiles). return (uint)(o.getX() * 100000 + o.getY() * 1000000000); } Node *ImportExportGdal::nodeFor(Layer* aLayer, const OGRPoint p) { if (pointHash.contains(p)) { return pointHash[p]; } pointHash[p] = g_backend.allocNode(aLayer, Coord(p.getX(), p.getY())); aLayer->add(pointHash[p]); return pointHash[p]; } // IMPORT Way *ImportExportGdal::readWay(Layer* aLayer, OGRLineString *poRing) { int numNode = poRing->getNumPoints(); if (!numNode) return NULL; OGRPoint p; Way* w = g_backend.allocWay(aLayer); aLayer->add(w); for(int i = 0; i < numNode; i++) { poRing->getPoint(i, &p); Node *n = nodeFor(aLayer, p); w->add(n); } return w; } Feature* ImportExportGdal::parseGeometry(Layer* aLayer, OGRGeometry *poGeometry) { OGRwkbGeometryType type = wkbFlatten(poGeometry->getGeometryType()); switch(type) { case wkbPoint: { OGRPoint *p = (OGRPoint*)(poGeometry); if (p->getDimension() > 2) return nodeFor(aLayer, OGRPoint(p->getX(), p->getY(), p->getZ())); else return nodeFor(aLayer, OGRPoint(p->getX(), p->getY())); } case wkbPolygon: { OGRPolygon *poPoly = (OGRPolygon*)poGeometry; OGRLinearRing *poRing = poPoly->getExteriorRing(); Way *outer = readWay(aLayer, poRing); if (outer) { if (int numHoles = poPoly->getNumInteriorRings()) { Relation* rel = g_backend.allocRelation(aLayer); aLayer->add(rel); rel->setTag("type", "multipolygon"); rel->add("outer", outer); for (int i=0; i<numHoles; i++) { poRing = poPoly->getInteriorRing(i); Way *inner = readWay(aLayer, poRing); if (inner) { rel->add("inner", inner); } } return rel; } } return outer; } case wkbLineString: { return readWay(aLayer, (OGRLineString*)poGeometry); } case wkbMultiPolygon: // TODO - merge multipolygon relations if members have holes; for now, fallthrough case wkbMultiLineString: case wkbMultiPoint: { OGRGeometryCollection *poCol = (OGRGeometryCollection*) poGeometry; if(int numCol = poCol->getNumGeometries()) { Relation* R = g_backend.allocRelation(aLayer); aLayer->add(R); for(int i=0; i<numCol; i++) { Feature* F = parseGeometry(aLayer, poCol->getGeometryRef(i)); if (F ) { R->add("", F); } } return R; } else { return NULL; } } default: qWarning("SHP: Unrecognised Geometry type %d, ignored", type); return NULL; } } // import the input bool ImportExportGdal::importGDALDataset(OGRDataSource* poDS, Layer* aLayer, bool confirmProjection) { int ogrError; OGRSpatialReference wgs84srs; if (wgs84srs.SetWellKnownGeogCS("WGS84") != OGRERR_NONE) { qDebug("GDAL: couldn't initialise WGS84: %s", CPLGetLastErrorMsg()); return false; } qDebug() << "Layers #" << poDS->GetLayerCount(); OGRLayer *poLayer = poDS->GetLayer(0); OGRSpatialReference * theSrs = poLayer->GetSpatialRef(); toWGS84 = NULL; if (theSrs) { // Workaround for OSGB - otherwise its datum is ignored (TODO: why?) QString gcs = theSrs->GetAttrValue("GEOGCS"); if (gcs == "GCS_OSGB_1936" || gcs == "OSGB 1936") { qDebug() << "GDAL: substituting GCS_OSGB_1936 with EPSG:27700"; OGRSpatialReference * the27700Srs = new OGRSpatialReference(); if ((ogrError = the27700Srs->importFromEPSG(27700)) != OGRERR_NONE) { qDebug("GDAL: couldn't initialise EPSG:27700: %d: %s", ogrError, CPLGetLastErrorMsg()); the27700Srs->Release(); } else { theSrs->Release(); theSrs = the27700Srs; } } } QString sPrj; QString projTitle; if (theSrs) { theSrs->morphFromESRI(); char* cTheProj; if (theSrs->exportToProj4(&cTheProj) == OGRERR_NONE) { sPrj = QString(cTheProj); OGRFree(cTheProj); } else { if (theSrs->exportToWkt(&cTheProj) == OGRERR_NONE) { sPrj = QString(cTheProj); OGRFree(cTheProj); } } projTitle = QCoreApplication::translate("ImportExportGdal", "Confirm projection"); } else { projTitle = QCoreApplication::translate("ImportExportGdal", "Unable to set projection; please specify one"); } if (!theSrs || confirmProjection) { #ifndef _MOBILE QApplication::restoreOverrideCursor(); #endif sPrj = ProjectionChooser::getProjection(projTitle, true, sPrj); qDebug() << sPrj; #ifndef _MOBILE QApplication::setOverrideCursor(Qt::BusyCursor); #endif if (sPrj.isEmpty()) { return false; } } theSrs->Release(); theSrs = new OGRSpatialReference(); theSrs->importFromProj4(sPrj.toLatin1().data()); toWGS84 = OGRCreateCoordinateTransformation(theSrs, &wgs84srs); if (!toWGS84) return false; QProgressDialog progress(QApplication::tr("Importing..."), QApplication::tr("Cancel"), 0, 0); progress.setWindowModality(Qt::WindowModal); progress.setRange(0, 0); progress.show(); int totimported = 0; OGRFeature *poFeature; for (int l=0; l<poDS->GetLayerCount() && !progress.wasCanceled(); ++l) { poLayer = poDS->GetLayer(l); int sz = poLayer->GetFeatureCount(FALSE); if (sz != -1) progress.setMaximum(progress.maximum()+sz); int curImported = 0; // poLayer->ResetReading(); while( (poFeature = poLayer->GetNextFeature()) != NULL && !progress.wasCanceled()) { OGRGeometry *poGeometry; poGeometry = poFeature->GetGeometryRef(); if( poGeometry != NULL) { // qDebug( "GeometryType : %d,", poGeometry->getGeometryType() ); poGeometry->transform(toWGS84); Feature* F = parseGeometry(aLayer, poGeometry); if (F) { for (int i=0; i<poFeature->GetFieldCount(); ++i) { OGRFieldDefn *fd = poFeature->GetFieldDefnRef(i); QString k = QString::fromUtf8(fd->GetNameRef()); if (k == "osm_id") { F->setId(IFeature::FId(F->getType(), (qint64)poFeature->GetFieldAsDouble(i))); #ifndef FRISIUS_BUILD } else if (k == "osm_version") { F->setVersionNumber(poFeature->GetFieldAsInteger(i)); } else if (k == "osm_timestamp") { F->setTime(QDateTime::fromTime_t(poFeature->GetFieldAsInteger(i))); #endif } else { if (!g_Merk_NoGuardedTagsImport) { k.prepend("_"); k.append("_"); } F->setTag(k, QString::fromUtf8(poFeature->GetFieldAsString(i))); } } } ++curImported; ++totimported; progress.setLabelText(QApplication::tr("Imported: %1").arg(totimported)); if (progress.maximum() > 0) progress.setValue(totimported); qApp->processEvents(); } else { qDebug( "no geometry\n" ); } // if (progress.maximum() != 0) // progress.setValue(progress.value()+1); } qDebug() << "Layer #" << l << " Features#: " << curImported; } pointHash.clear(); #ifndef _MOBILE QApplication::restoreOverrideCursor(); #endif if (toWGS84) delete toWGS84; if (progress.wasCanceled()) return false; else return true; } bool ImportExportGdal::import(Layer* aLayer) { OGRRegisterAll(); OGRDataSource *poDS; poDS = OGRSFDriverRegistrar::Open( FileName.toUtf8().constData(), FALSE ); if( poDS == NULL ) { qDebug( "GDAL Open failed.\n" ); return false; } importGDALDataset(poDS, aLayer, M_PREFS->getGdalConfirmProjection()); OGRDataSource::DestroyDataSource( poDS ); return true; } bool ImportExportGdal::import(Layer* aLayer, const QByteArray& ba, bool confirmProjection) { OGRRegisterAll(); OGRDataSource *poDS; // int ogrError; GByte* content = (GByte*)(ba.constData()); /*FILE* f = */VSIFileFromMemBuffer("/vsimem/temp", content, ba.size(), FALSE); poDS = OGRSFDriverRegistrar::Open( "/vsimem/temp", FALSE ); if( poDS == NULL ) { qDebug( "GDAL Open failed.\n" ); return false; } importGDALDataset(poDS, aLayer, confirmProjection); OGRDataSource::DestroyDataSource( poDS ); return true; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportGdal.h�����������������������������������������������0000664�0000000�0000000�00000002473�11770671653�0022653�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ImportExportGdal // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ImportExportGDAL_H #define ImportExportGDAL_H #include "IImportExport.h" #include "ogrsf_frmts.h" class Projection; class Layer; class OGRGeometry; class OGRLineString; class OGRPoint; class OGRCoordinateTransformation; /** @author cbro <cbro@semperpax.com> */ class ImportExportGdal : public IImportExport { public: ImportExportGdal(Document* doc); ~ImportExportGdal(); // Specify the input as a QFile virtual bool loadFile(QString filename); // Specify the output as a QFile virtual bool saveFile(QString filename); // import the input virtual bool import(Layer* aLayer); bool import(Layer *aLayer, const QByteArray &ba, bool confirmProjection); //export virtual bool export_(const QList<Feature *>& featList); protected: OGRCoordinateTransformation *toWGS84; Feature* parseGeometry(Layer* aLayer, OGRGeometry *poGeometry); Node *nodeFor(Layer* aLayer, OGRPoint point); Way *readWay(Layer* aLayer, OGRLineString *poRing); bool importGDALDataset(OGRDataSource *poDs, Layer *aLayer, bool confirmProjection); private: QHash<OGRPoint, Node*> pointHash; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportKML.cpp����������������������������������������������0000664�0000000�0000000�00000021557�11770671653�0022766�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ImportExportKML // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include <QtGui> #include "../ImportExport/ImportExportKML.h" #include "Global.h" bool parseContainer(QDomElement& e, Layer* aLayer); ImportExportKML::ImportExportKML(Document* doc) : IImportExport(doc) { } ImportExportKML::~ImportExportKML() { } // export bool ImportExportKML::export_(const QList<Feature *>& featList) { QList<Node*> waypoints; QList<TrackSegment*> segments; QDomElement k; QDomText v; if(! IImportExport::export_(featList) ) return false; bool OK = true; QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement kml = theXmlDoc.createElement("kml"); theXmlDoc.appendChild(kml); kml.setAttribute("xmlns", "http://earth.google.com/kml/2.2"); QDomElement d = theXmlDoc.createElement("Document"); kml.appendChild(d); //QDomElement g = theXmlDoc.createElement("MultiGeometry"); //p.appendChild(g); for (int i=0; i<theFeatures.size(); ++i) { if (Way* R = dynamic_cast<Way*>(theFeatures[i])) { QDomElement p = theXmlDoc.createElement("Placemark"); d.appendChild(p); k = theXmlDoc.createElement("name"); p.appendChild(k); v = theXmlDoc.createTextNode(R->description()); k.appendChild(v); k = theXmlDoc.createElement("description"); p.appendChild(k); QString desc; for (int j=0; j<R->tagSize(); ++j) { desc += R->tagKey(j); desc += "="; desc += R->tagValue(j); desc += "<br/>"; } v = theXmlDoc.createTextNode(desc); k.appendChild(v); k = theXmlDoc.createElement("Style"); p.appendChild(k); QDomElement ls = theXmlDoc.createElement("LineStyle"); k.appendChild(ls); const FeaturePainter* fp = R->getCurrentPainter(); if (fp) { QDomElement color = theXmlDoc.createElement("color"); ls.appendChild(color); QRgb kcolor = fp->ForegroundColor.rgba(); v = theXmlDoc.createTextNode(QString::number(qRgba(qBlue(kcolor), qGreen(kcolor), qRed(kcolor), /*qAlpha(kcolor)*/ 192), 16)); color.appendChild(v); } QDomElement width = theXmlDoc.createElement("width"); ls.appendChild(width); v = theXmlDoc.createTextNode(QString::number(R->widthOf())); width.appendChild(v); QDomElement l = theXmlDoc.createElement("LineString"); p.appendChild(l); QDomElement c = theXmlDoc.createElement("coordinates"); l.appendChild(c); QString s; for (int j=0; j<R->size(); ++j) { Node* N = dynamic_cast<Node*>(R->get(j)); s += QString(" %1,%2").arg(COORD2STRING(N->position().x())).arg(COORD2STRING(N->position().y())); } QDomText v = theXmlDoc.createTextNode(s); c.appendChild(v); } else if (Node* N = dynamic_cast<Node*>(theFeatures[i])) { if (N->sizeParents()) continue; QDomElement p = theXmlDoc.createElement("Placemark"); d.appendChild(p); k = theXmlDoc.createElement("name"); p.appendChild(k); v = theXmlDoc.createTextNode(N->description()); k.appendChild(v); k = theXmlDoc.createElement("description"); p.appendChild(k); QString desc; for (int j=0; j<N->tagSize(); ++j) { desc += N->tagKey(j); desc += "="; desc += N->tagValue(j); desc += "<br/>"; } v = theXmlDoc.createTextNode(desc); k.appendChild(v); //k = theXmlDoc.createElement("Style"); //p.appendChild(k); //QDomElement ls = theXmlDoc.createElement("LineStyle"); //k.appendChild(ls); //FeaturePainter* fp = R->getCurrentEditPainter(); //if (fp) { // QDomElement color = theXmlDoc.createElement("color"); // ls.appendChild(color); // QRgb kcolor = fp->ForegroundColor.rgba(); // v = theXmlDoc.createTextNode(QString::number(qRgba(qBlue(kcolor), qGreen(kcolor), qRed(kcolor), /*qAlpha(kcolor)*/ 164), 16)); // color.appendChild(v); //} //QDomElement width = theXmlDoc.createElement("width"); //ls.appendChild(width); //v = theXmlDoc.createTextNode(QString::number(widthOf(R))); //width.appendChild(v); QDomElement l = theXmlDoc.createElement("Point"); p.appendChild(l); QDomElement c = theXmlDoc.createElement("coordinates"); l.appendChild(c); QString s; s += QString(" %1,%2").arg(COORD2STRING(N->position().x())).arg(COORD2STRING(N->position().y())); QDomText v = theXmlDoc.createTextNode(s); c.appendChild(v); } } Device->write(theXmlDoc.toString().toUtf8()); return OK; } // IMPORT QString kmlId; Feature* parsePoint(QDomElement& e, Layer* aLayer) { Node* P = NULL; QDomElement c = e.firstChildElement(); while(!c.isNull() && !P) { if (c.tagName() == "coordinates") { QDomText t = c.firstChild().toText(); QString s = t.nodeValue(); QStringList tokens = s.split(","); qreal lon = tokens[0].toDouble(); qreal lat = tokens[1].toDouble(); Coord p(lon,lat); P = g_backend.allocNode(aLayer, p); aLayer->add(P); P->setTag("%kml:guid", kmlId); } c = c.nextSiblingElement(); } return P; } Feature* parseGeometry(QDomElement& e, Layer* aLayer) { Feature* F = NULL; if (e.tagName() == "Point") { F = parsePoint(e, aLayer); } return F; } bool parsePlacemark(QDomElement& e, Layer* aLayer) { Feature* F = NULL; QDomElement c = e.firstChildElement(); QString name; QString address; QString description; QString phone; while(!c.isNull()) { if (c.tagName() == "name") name = c.firstChild().toText().nodeValue(); else if (c.tagName() == "address") address = c.firstChild().toText().nodeValue(); else if (c.tagName() == "description") description = c.firstChild().toText().nodeValue(); else if (c.tagName() == "phoneNumber") phone = c.firstChild().toText().nodeValue(); else F = parseGeometry(c, aLayer); c = c.nextSiblingElement(); } if (F) { if (!name.isEmpty()) F->setTag("name", name); if (!address.isEmpty()) F->setTag("addr:full", address); if (!phone.isEmpty()) F->setTag("addr:phone_number", phone); if (!description.isEmpty()) F->setTag("description", description); return true; } else return false; } bool parseFeature(QDomElement& e, Layer* aLayer) { bool ret= false; QDomElement c = e.cloneNode().toElement(); while(!c.isNull()) { if (c.tagName() == "Placemark") ret = parsePlacemark(c, aLayer); else ret = parseContainer(c, aLayer); c = c.nextSiblingElement(); } return ret; } bool parseContainer(QDomElement& e, Layer* aLayer) { if ((e.tagName() != "Document") && (e.tagName() != "Folder")) return false; bool ret= false; QDomElement c = e.firstChildElement(); while(!c.isNull()) { ret = parseFeature(c, aLayer); c = c.nextSiblingElement(); } return ret; } bool parseKML(QDomElement& e, Layer* aLayer) { bool ret= false; QDomElement c = e.firstChildElement(); while(!c.isNull()) { ret = parseFeature(c, aLayer); if (!ret) ret = parseGeometry(c, aLayer); c = c.nextSiblingElement(); } return ret; } // import the input bool ImportExportKML::import(Layer* aLayer) { QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(Device)) { //QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid XML file.").arg(fn)); Device->close(); delete theXmlDoc; theXmlDoc = NULL; return false; } Device->close(); QDomElement docElem = theXmlDoc->documentElement(); if (docElem.tagName() != "kml") { //QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid KML document.").arg(fn)); return false; } kmlId = QUuid::createUuid().toString(); return parseKML(docElem, aLayer); } �������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportKML.h������������������������������������������������0000664�0000000�0000000�00000001124�11770671653�0022417�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ImportExportKML // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ImportExportKML_H #define ImportExportKML_H #include "IImportExport.h" class QDomDocument; /** @author cbro <cbro@semperpax.com> */ class ImportExportKML : public IImportExport { public: ImportExportKML(Document* doc); ~ImportExportKML(); // import the input virtual bool import(Layer* aLayer); //export virtual bool export_(const QList<Feature *>& featList); }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportOSC.cpp����������������������������������������������0000664�0000000�0000000�00000014637�11770671653�0022770�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ImportExportKML // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #include <QtGui> #include "../ImportExport/ImportExportOSC.h" #include "DirtyListExecutorOSC.h" #include "DownloadOSM.h" ImportExportOSC::ImportExportOSC(Document* doc) : IImportExport(doc) { } ImportExportOSC::~ImportExportOSC() { } // export bool ImportExportOSC::export_(const QList<Feature *>&) { DirtyListBuild Future; theDoc->history().buildDirtyList(Future); Future.resetUpdates(); DirtyListExecutorOSC Exec(theDoc, Future); QByteArray doc = Exec.getChanges(); return (Device->write(doc) != -1); } // IMPORT // import the input bool ImportExportOSC::import(Layer* aLayer) { QXmlStreamReader stream(Device); while (stream.readNext() && stream.tokenType() != QXmlStreamReader::Invalid && stream.tokenType() != QXmlStreamReader::StartElement) ; if (stream.name() != "osmChange" && stream.name() != "osmchange") { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid osmChange file.").arg(fn)); return false; } CommandList* theList = new CommandList(QApplication::tr("Import osmChange"), NULL); Layer* dLayer = theDoc->getLastDownloadLayer(); if (!dLayer) { dLayer = new DrawingLayer(QApplication::translate("Downloader","%1 download").arg(QDateTime::currentDateTime().toString(Qt::ISODate))); theDoc->add(dLayer); } QList<IFeature::FId> featIdList; Feature* F; stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "create") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "node") { F = Node::fromXML(theDoc, aLayer, stream); theList->add(new AddFeatureCommand(aLayer, F, true)); } else if (stream.name() == "way") { F = Way::fromXML(theDoc, aLayer, stream); theList->add(new AddFeatureCommand(aLayer, F, true)); } else if (stream.name() == "relation") { F = Relation::fromXML(theDoc, aLayer, stream); theList->add(new AddFeatureCommand(aLayer, F, true)); } else if (!stream.isWhitespace()) { qDebug() << "OSC: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } if (F) { for (int i=0; i<F->size(); ++i) { if (F->get(i)->notEverythingDownloaded() && F->get(i)->hasOSMId()) featIdList << F->get(i)->id(); } } stream.readNext(); } } else if (stream.name() == "modify") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { QString sid = (stream.attributes().hasAttribute("id") ? stream.attributes().value("id").toString() : stream.attributes().value("xml:id").toString()); if (stream.name() == "node") { IFeature::FId id(Feature::Point, sid.toLongLong()); F = theDoc->getFeature(id); if (!F || F->notEverythingDownloaded()) downloadFeature(0, id, theDoc, dLayer); F = Node::fromXML(theDoc, aLayer, stream); theList->add(new AddFeatureCommand(aLayer, F, true)); } else if (stream.name() == "way") { IFeature::FId id(Feature::LineString, sid.toLongLong()); F = theDoc->getFeature(id); if (!F || F->notEverythingDownloaded()) downloadFeature(0, id, theDoc, dLayer); F = Way::fromXML(theDoc, aLayer, stream); theList->add(new AddFeatureCommand(aLayer, F, true)); } else if (stream.name() == "relation") { IFeature::FId id(Feature::OsmRelation, sid.toLongLong()); F = theDoc->getFeature(id); if (!F || F->notEverythingDownloaded()) downloadFeature(0, id, theDoc, dLayer); F = Relation::fromXML(theDoc, aLayer, stream); theList->add(new AddFeatureCommand(aLayer, F, true)); } else if (!stream.isWhitespace()) { qDebug() << "OSC: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } if (F) { for (int i=0; i<F->size(); ++i) { if (F->get(i)->notEverythingDownloaded() && F->get(i)->hasOSMId()) featIdList << F->get(i)->id(); } } stream.readNext(); } } else if (stream.name() == "delete") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "node") { Node* N = Node::fromXML(theDoc, aLayer, stream); theList->add(new RemoveFeatureCommand(theDoc, N)); } else if (stream.name() == "way") { Way* W = Way::fromXML(theDoc, aLayer, stream); theList->add(new RemoveFeatureCommand(theDoc, W)); } else if (stream.name() == "relation") { Relation* R = Relation::fromXML(theDoc, aLayer, stream); theList->add(new RemoveFeatureCommand(theDoc, R)); } else if (!stream.isWhitespace()) { qDebug() << "OSC: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } stream.readNext(); } downloadFeatures(0, featIdList, theDoc, dLayer); if (dLayer->size() == 0 && dLayer != theDoc->getLastDownloadLayer()) { theDoc->remove(dLayer); delete dLayer; } if (theList->empty()) { delete theList; } else { theDoc->addHistory(theList); } return true; } �������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportOSC.h������������������������������������������������0000664�0000000�0000000�00000001151�11770671653�0022420�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ImportExportKML // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ImportExportOSC_H #define ImportExportOSC_H #include "IImportExport.h" class QDomDocument; /** @author cbro <cbro@semperpax.com> */ class ImportExportOSC : public IImportExport { public: ImportExportOSC(Document* doc); ~ImportExportOSC(); // import the input virtual bool import(Layer* aLayer); //export virtual bool export_(const QList<Feature *>& featList = QList<Feature *>()); }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportPBF.cpp����������������������������������������������0000664�0000000�0000000�00000046627�11770671653�0022757�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ImportExportPBF // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // Stefan de Konink <stefan at konink dot de> // Roeland Douma <contact at rullzer dot com> // // Copyright: See COPYING file that comes with this distribution // // #include <QApplication> #include <QMessageBox> #include <QDateTime> #include "ImportExportPBF.h" #include "Global.h" #include "zlib.h" //#include "bzlib.h" #define NANO ( 1000.0 * 1000.0 * 1000.0 ) #define MAX_BLOCK_HEADER_SIZE ( 64 * 1024 ) #define MAX_BLOB_SIZE ( 32 * 1024 * 1024 ) ImportExportPBF::ImportExportPBF(Document* doc) : IImportExport(doc) { GOOGLE_PROTOBUF_VERIFY_VERSION; } ImportExportPBF::~ImportExportPBF() { } // export bool ImportExportPBF::export_(const QList<Feature *>& /*featList*/) { return false; } /***************************************************/ /* Copyright 2010 Christian Vetter veaac.fdirct@gmail.com This ripped code is part of MoNav. */ int convertNetworkByteOrder( char data[4] ) { return ( ( ( unsigned ) data[0] ) << 24 ) | ( ( ( unsigned ) data[1] ) << 16 ) | ( ( ( unsigned ) data[2] ) << 8 ) | ( unsigned ) data[3]; } static void *SzAlloc( void *p, size_t size) { p = p; return malloc( size ); } static void SzFree( void *p, void *address) { p = p; free( address ); } void ImportExportPBF::loadGroup() { const OSMPBF::PrimitiveGroup& group = m_primitiveBlock.primitivegroup( m_currentGroup ); if ( group.nodes_size() != 0 ) { m_mode = ModeNode; } else if ( group.ways_size() != 0 ) { m_mode = ModeWay; } else if ( group.relations_size() != 0 ) { m_mode = ModeRelation; } else if ( group.has_dense() ) { m_mode = ModeDense; m_lastDenseID = 0; m_lastDenseTag = 0; m_lastDenseLatitude = 0; m_lastDenseLongitude = 0; m_lastDenseTimestamp = 0; m_lastDenseChangeset = 0; m_lastDenseUId = 0; m_lastDenseUserSid = 0; assert( group.dense().id_size() != 0 ); } else assert( false ); } void ImportExportPBF::loadBlock() { m_loadBlock = false; m_currentGroup = 0; m_currentEntity = 0; int stringCount = m_primitiveBlock.stringtable().s_size(); // precompute all strings that match a necessary tag m_nodeTagIDs.resize( m_primitiveBlock.stringtable().s_size() ); for ( int i = 1; i < stringCount; i++ ) m_nodeTagIDs[i] = m_nodeTags.value( m_primitiveBlock.stringtable().s( i ).data(), -1 ); m_wayTagIDs.resize( m_primitiveBlock.stringtable().s_size() ); for ( int i = 1; i < stringCount; i++ ) m_wayTagIDs[i] = m_wayTags.value( m_primitiveBlock.stringtable().s( i ).data(), -1 ); m_relationTagIDs.resize( m_primitiveBlock.stringtable().s_size() ); for ( int i = 1; i < stringCount; i++ ) m_relationTagIDs[i] = m_relationTags.value( m_primitiveBlock.stringtable().s( i ).data(), -1 ); } bool ImportExportPBF::readNextBlock() { if ( !readBlockHeader() ) return false; if ( m_blockHeader.type() != "OSMData" ) { qCritical() << "invalid block type, found" << m_blockHeader.type().data() << "instead of OSMData"; return false; } if ( !readBlob() ) return false; if ( !m_primitiveBlock.ParseFromArray( m_buffer.data(), m_buffer.size() ) ) { qCritical() << "failed to parse PrimitiveBlock"; return false; } return true; } bool ImportExportPBF::readBlockHeader() { char sizeData[4]; if ( m_file.read( sizeData, 4 * sizeof( char ) ) != 4 * sizeof( char ) ) return false; // end of stream? int size = convertNetworkByteOrder( sizeData ); if ( size > MAX_BLOCK_HEADER_SIZE || size < 0 ) { qCritical() << "BlockHeader size invalid:" << size; return false; } m_buffer.resize( size ); int readBytes = m_file.read( m_buffer.data(), size ); if ( readBytes != size ) { qCritical() << "failed to read BlockHeader"; return false; } if ( !m_blockHeader.ParseFromArray( m_buffer.constData(), size ) ) { qCritical() << "failed to parse BlockHeader"; return false; } return true; } bool ImportExportPBF::readBlob() { int size = m_blockHeader.datasize(); if ( size < 0 || size > MAX_BLOB_SIZE ) { qCritical() << "invalid Blob size:" << size; return false; } m_buffer.resize( size ); int readBytes = m_file.read( m_buffer.data(), size ); if ( readBytes != size ) { qCritical() << "failed to read Blob"; return false; } if ( !m_blob.ParseFromArray( m_buffer.constData(), size ) ) { qCritical() << "failed to parse blob"; return false; } if ( m_blob.has_raw() ) { const std::string& data = m_blob.raw(); m_buffer.resize( data.size() ); for ( unsigned i = 0; i < data.size(); i++ ) m_buffer[i] = data[i]; } else if ( m_blob.has_zlib_data() ) { if ( !unpackZlib() ) return false; // } else if ( m_blob.has_bzip2_data() ) { // if ( !unpackBzip2() ) // return false; } else if ( m_blob.has_lzma_data() ) { if ( !unpackLzma() ) return false; } else { qCritical() << "Blob contains no data"; return false; } return true; } bool ImportExportPBF::unpackZlib() { m_buffer.resize( m_blob.raw_size() ); z_stream compressedStream; compressedStream.next_in = ( unsigned char* ) m_blob.zlib_data().data(); compressedStream.avail_in = m_blob.zlib_data().size(); compressedStream.next_out = ( unsigned char* ) m_buffer.data(); compressedStream.avail_out = m_blob.raw_size(); compressedStream.zalloc = Z_NULL; compressedStream.zfree = Z_NULL; compressedStream.opaque = Z_NULL; int ret = inflateInit( &compressedStream ); if ( ret != Z_OK ) { qCritical() << "failed to init zlib stream"; return false; } ret = inflate( &compressedStream, Z_FINISH ); if ( ret != Z_STREAM_END ) { qCritical() << "failed to inflate zlib stream"; return false; } ret = inflateEnd( &compressedStream ); if ( ret != Z_OK ) { qCritical() << "failed to deinit zlib stream"; return false; } return true; } bool ImportExportPBF::unpackBzip2() { // unsigned size = m_blob.raw_size(); // m_buffer.resize( size ); // m_bzip2Buffer.resize( m_blob.bzip2_data().size() ); // for ( unsigned i = 0; i < m_blob.bzip2_data().size(); i++ ) // m_bzip2Buffer[i] = m_blob.bzip2_data()[i]; // int ret = BZ2_bzBuffToBuffDecompress( m_buffer.data(), &size, m_bzip2Buffer.data(), m_bzip2Buffer.size(), 0, 0 ); // if ( ret != BZ_OK ) { // qCritical() << "failed to unpack bzip2 stream"; // return false; // } return true; } bool ImportExportPBF::unpackLzma() { // ISzAlloc alloc = { SzAlloc, SzFree }; // ELzmaStatus status; // SizeT destinationLength = m_blob.raw_size(); // SizeT sourceLength = m_blob.lzma_data().size() - LZMA_PROPS_SIZE + 8; // int ret = LzmaDecode( // ( unsigned char* ) m_buffer.data(), // &destinationLength, // ( const unsigned char* ) m_blob.lzma_data().data() + LZMA_PROPS_SIZE + 8, // &sourceLength, // ( const unsigned char* ) m_blob.lzma_data().data(), // LZMA_PROPS_SIZE + 8, // LZMA_FINISH_END, // &status, // &alloc ); // if ( ret != SZ_OK ) // return false; return true; } void ImportExportPBF::parseNode( Layer* aLayer ) { const OSMPBF::Node& inputNode = m_primitiveBlock.primitivegroup( m_currentGroup ).nodes( m_currentEntity ); Node* N = STATIC_CAST_NODE(theDoc->getFeature(IFeature::FId(IFeature::Point, inputNode.id()))); if (!N) { N = g_backend.allocNode(aLayer, Coord( ( ( qreal ) inputNode.lon() * m_primitiveBlock.granularity() + m_primitiveBlock.lon_offset() ) / NANO, ( ( qreal ) inputNode.lat() * m_primitiveBlock.granularity() + m_primitiveBlock.lat_offset() ) / NANO )); N->setId(IFeature::FId(IFeature::Point, inputNode.id())); aLayer->add(N); } else { N->setPosition(Coord( ( ( qreal ) inputNode.lon() * m_primitiveBlock.granularity() + m_primitiveBlock.lon_offset() ) / NANO, ( ( qreal ) inputNode.lat() * m_primitiveBlock.granularity() + m_primitiveBlock.lat_offset() ) / NANO )); N->setLastUpdated(Feature::OSMServer); } #ifndef FRISIUS_BUILD if (inputNode.has_info()) { OSMPBF::Info info = inputNode.info(); if (info.has_version()) N->setVersionNumber(info.version()); if (info.has_timestamp()) N->setTime(QDateTime::fromTime_t(info.timestamp())); if (info.has_user_sid()) N->setUser(m_primitiveBlock.stringtable().s(info.user_sid()).data()); } #endif for ( int tag = 0; tag < inputNode.keys_size(); tag++ ) { QString key = QString::fromUtf8( m_primitiveBlock.stringtable().s( inputNode.keys( tag ) ).data() ); QString value = QString::fromUtf8( m_primitiveBlock.stringtable().s( inputNode.vals( tag ) ).data() ); N->setTag(key, value); } m_currentEntity++; if ( m_currentEntity >= m_primitiveBlock.primitivegroup( m_currentGroup ).nodes_size() ) { m_currentEntity = 0; m_currentGroup++; if ( m_currentGroup >= m_primitiveBlock.primitivegroup_size() ) m_loadBlock = true; else loadGroup(); } } void ImportExportPBF::parseWay( Layer* aLayer ) { const OSMPBF::Way& inputWay = m_primitiveBlock.primitivegroup( m_currentGroup ).ways( m_currentEntity ); Way* W = STATIC_CAST_WAY(theDoc->getFeature(IFeature::FId(IFeature::LineString, inputWay.id()))); if (!W) { W = g_backend.allocWay(aLayer); W->setId(IFeature::FId(IFeature::LineString, inputWay.id())); aLayer->add(W); } else { W->setLastUpdated(Feature::OSMServer); } #ifndef FRISIUS_BUILD if (inputWay.has_info()) { OSMPBF::Info info = inputWay.info(); if (info.has_version()) W->setVersionNumber(info.version()); if (info.has_timestamp()) W->setTime(QDateTime::fromTime_t(info.timestamp())); if (info.has_user_sid()) W->setUser(m_primitiveBlock.stringtable().s(info.user_sid()).data()); } #endif for ( int tag = 0; tag < inputWay.keys_size(); tag++ ) { QString key = QString::fromUtf8( m_primitiveBlock.stringtable().s( inputWay.keys( tag ) ).data() ); QString value = QString::fromUtf8( m_primitiveBlock.stringtable().s( inputWay.vals( tag ) ).data() ); W->setTag(key, value); } long long lastRef = 0; for ( int i = 0; i < inputWay.refs_size(); i++ ) { lastRef += inputWay.refs( i ); Node* N = STATIC_CAST_NODE(theDoc->getFeature(IFeature::FId(IFeature::Point, lastRef))); if (!N) { N = g_backend.allocNode(aLayer, Coord(0, 0)); N->setId(IFeature::FId(IFeature::Point, lastRef)); N->setLastUpdated(Feature::NotYetDownloaded); aLayer->add(N); } W->add(N); } m_currentEntity++; if ( m_currentEntity >= m_primitiveBlock.primitivegroup( m_currentGroup ).ways_size() ) { m_currentEntity = 0; m_currentGroup++; if ( m_currentGroup >= m_primitiveBlock.primitivegroup_size() ) m_loadBlock = true; else loadGroup(); } } void ImportExportPBF::parseRelation( Layer* aLayer ) { const OSMPBF::Relation& inputRelation = m_primitiveBlock.primitivegroup( m_currentGroup ).relations( m_currentEntity ); Relation* R = STATIC_CAST_RELATION(theDoc->getFeature(IFeature::FId(IFeature::OsmRelation, inputRelation.id()))); if (!R) { R = g_backend.allocRelation(aLayer); R->setId(IFeature::FId(IFeature::OsmRelation, inputRelation.id())); aLayer->add(R); } else { R->setLastUpdated(Feature::OSMServer); } #ifndef FRISIUS_BUILD if (inputRelation.has_info()) { OSMPBF::Info info = inputRelation.info(); if (info.has_version()) R->setVersionNumber(info.version()); if (info.has_timestamp()) R->setTime(QDateTime::fromTime_t(info.timestamp())); if (info.has_user_sid()) R->setUser(m_primitiveBlock.stringtable().s(info.user_sid()).data()); } #endif for ( int tag = 0; tag < inputRelation.keys_size(); tag++ ) { QString key = QString::fromUtf8( m_primitiveBlock.stringtable().s( inputRelation.keys( tag ) ).data() ); QString value = QString::fromUtf8( m_primitiveBlock.stringtable().s( inputRelation.vals( tag ) ).data() ); R->setTag(key, value); } long long lastRef = 0; for ( int i = 0; i < inputRelation.types_size(); i++ ) { lastRef += inputRelation.memids( i ); QString role = QString::fromUtf8(m_primitiveBlock.stringtable().s( inputRelation.roles_sid( i ) ).data()); switch (inputRelation.types( i )) { case OSMPBF::Relation::NODE: { Node* N = STATIC_CAST_NODE(theDoc->getFeature(IFeature::FId(IFeature::Point, lastRef))); if (!N) { N = g_backend.allocNode(aLayer, Coord(0, 0)); N->setId(IFeature::FId(IFeature::Point, lastRef)); N->setLastUpdated(Feature::NotYetDownloaded); aLayer->add(N); } R->add(role, N); break; } case OSMPBF::Relation::WAY: { Way* W = STATIC_CAST_WAY(theDoc->getFeature(IFeature::FId(IFeature::LineString, lastRef))); if (!W) { W = g_backend.allocWay(aLayer); W->setId(IFeature::FId(IFeature::LineString, lastRef)); W->setLastUpdated(Feature::NotYetDownloaded); aLayer->add(W); } R->add(role, W); break; } case OSMPBF::Relation::RELATION: { Relation* Rl = STATIC_CAST_RELATION(theDoc->getFeature(IFeature::FId(IFeature::OsmRelation, lastRef))); if (!Rl) { Rl = g_backend.allocRelation(aLayer); Rl->setId(IFeature::FId(IFeature::OsmRelation, lastRef)); Rl->setLastUpdated(Feature::NotYetDownloaded); aLayer->add(Rl); } R->add(role, Rl); break; } } } m_currentEntity++; if ( m_currentEntity >= m_primitiveBlock.primitivegroup( m_currentGroup ).relations_size() ) { m_currentEntity = 0; m_currentGroup++; if ( m_currentGroup >= m_primitiveBlock.primitivegroup_size() ) m_loadBlock = true; else loadGroup(); } } void ImportExportPBF::parseDense( Layer* aLayer ) { const OSMPBF::DenseNodes& dense = m_primitiveBlock.primitivegroup( m_currentGroup ).dense(); m_lastDenseID += dense.id( m_currentEntity ); m_lastDenseLatitude += dense.lat( m_currentEntity ); m_lastDenseLongitude += dense.lon( m_currentEntity ); Node* N = STATIC_CAST_NODE(theDoc->getFeature(IFeature::FId(IFeature::Point, m_lastDenseID))); if (!N) { N = g_backend.allocNode(aLayer, Coord( ( ( qreal ) m_lastDenseLongitude * m_primitiveBlock.granularity() + m_primitiveBlock.lon_offset() ) / NANO, ( ( qreal ) m_lastDenseLatitude * m_primitiveBlock.granularity() + m_primitiveBlock.lat_offset() ) / NANO )); N->setId(IFeature::FId(IFeature::Point, m_lastDenseID)); aLayer->add(N); } else { N->setPosition(Coord( ( ( qreal ) m_lastDenseLongitude * m_primitiveBlock.granularity() + m_primitiveBlock.lon_offset() ) / NANO, ( ( qreal ) m_lastDenseLatitude * m_primitiveBlock.granularity() + m_primitiveBlock.lat_offset() ) / NANO )); N->setLastUpdated(Feature::OSMServer); } if (dense.has_denseinfo()) { m_lastDenseTimestamp += dense.denseinfo().timestamp(m_currentEntity); m_lastDenseChangeset += dense.denseinfo().changeset(m_currentEntity); m_lastDenseUId += dense.denseinfo().uid(m_currentEntity); m_lastDenseUserSid += dense.denseinfo().user_sid(m_currentEntity); #ifndef FRISIUS_BUILD N->setVersionNumber(dense.denseinfo().version(m_currentEntity)); N->setTime(m_lastDenseTimestamp); N->setUser(m_primitiveBlock.stringtable().s(m_lastDenseUserSid).data()); #endif } while ( true ){ if ( m_lastDenseTag >= dense.keys_vals_size() ) break; int tagValue = dense.keys_vals( m_lastDenseTag ); if ( tagValue == 0 ) { m_lastDenseTag++; break; } QString key = QString::fromUtf8( m_primitiveBlock.stringtable().s( dense.keys_vals( m_lastDenseTag ) ).data() ); QString value = QString::fromUtf8( m_primitiveBlock.stringtable().s( dense.keys_vals( m_lastDenseTag + 1 ) ).data() ); N->setTag(key, value); m_lastDenseTag += 2; } m_currentEntity++; if ( m_currentEntity >= dense.id_size() ) { m_currentEntity = 0; m_currentGroup++; if ( m_currentGroup >= m_primitiveBlock.primitivegroup_size() ) m_loadBlock = true; else loadGroup(); } } /* End of MoNav rip */ /***************************************************/ // Specify the input as a QFile bool ImportExportPBF::loadFile(QString filename) { FileName = filename; ownDevice = true; m_file.setFileName( FileName ); if ( !m_file.open(QIODevice::ReadOnly)) return false; if ( !readBlockHeader() ) return false; if ( m_blockHeader.type() != "OSMHeader" ) { qCritical() << "OSMHeader missing, found" << m_blockHeader.type().data() << "instead"; return false; } if ( !readBlob() ) return false; if ( !m_headerBlock.ParseFromArray( m_buffer.data(), m_buffer.size() ) ) { qCritical() << "failed to parse HeaderBlock"; return false; } for ( int i = 0; i < m_headerBlock.required_features_size(); i++ ) { const std::string& feature = m_headerBlock.required_features( i ); bool supported = false; if ( feature == "OsmSchema-V0.6" ) supported = true; else if ( feature == "DenseNodes" ) supported = true; if ( !supported ) { qCritical() << "required feature not supported:" << feature.data(); return false; } } m_loadBlock = true; return true; } // import the input bool ImportExportPBF::import(Layer* aLayer) { QProgressDialog progress(QApplication::tr("Importing..."), QApplication::tr("Cancel"), 0, 0); progress.setWindowModality(Qt::WindowModal); progress.setRange(0, m_file.size()); progress.show(); while (true && !progress.wasCanceled()) { if ( m_loadBlock ) { if ( !readNextBlock() ) break; loadBlock(); loadGroup(); } switch ( m_mode ) { case ModeNode: parseNode( aLayer ); break; case ModeWay: parseWay( aLayer ); break; case ModeRelation: parseRelation( aLayer ); break; case ModeDense: parseDense( aLayer ); break; } progress.setValue(m_file.pos()); qApp->processEvents(); //#ifndef NDEBUG // if (aLayer->size() > 1000000) // break; //#endif } progress.reset(); return true; } ���������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportExportPBF.h������������������������������������������������0000664�0000000�0000000�00000003672�11770671653�0022415�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ImportExportPBF // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ImportExportPBF_H #define ImportExportPBF_H #include "IImportExport.h" #include "fileformat.pb.h" #include "osmformat.pb.h" class QDomDocument; /** @author cbro <cbro@semperpax.com> */ class ImportExportPBF : public IImportExport { protected: enum Mode { ModeNode, ModeWay, ModeRelation, ModeDense }; public: ImportExportPBF(Document* doc); ~ImportExportPBF(); // Specify the input virtual bool loadFile(QString filename); // import the input virtual bool import(Layer* aLayer); //export virtual bool export_(const QList<Feature *>& featList); protected: OSMPBF::BlobHeader m_blockHeader; OSMPBF::Blob m_blob; OSMPBF::HeaderBlock m_headerBlock; OSMPBF::PrimitiveBlock m_primitiveBlock; int m_currentGroup; int m_currentEntity; bool m_loadBlock; Mode m_mode; QHash< QString, int > m_nodeTags; QHash< QString, int > m_wayTags; QHash< QString, int > m_relationTags; std::vector< int > m_nodeTagIDs; std::vector< int > m_wayTagIDs; std::vector< int > m_relationTagIDs; long long m_lastDenseID; long long m_lastDenseLatitude; long long m_lastDenseLongitude; long long m_lastDenseTimestamp; long long m_lastDenseChangeset; long long m_lastDenseUId; long long m_lastDenseUserSid; int m_lastDenseTag; QFile m_file; QByteArray m_buffer; QByteArray m_bzip2Buffer; protected: void loadGroup(); void loadBlock(); bool readNextBlock(); bool readBlockHeader(); bool readBlob(); bool unpackZlib(); bool unpackBzip2(); bool unpackLzma(); void parseNode( Layer* aLayer ); void parseWay( Layer* aLayer ); void parseRelation( Layer* aLayer ); void parseDense( Layer* aLayer ); }; #endif ����������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportGPX.cpp����������������������������������������������������0000664�0000000�0000000�00000022464�11770671653�0021575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ImportGPX.h" #include "Command.h" #include "DocumentCommands.h" #include "Document.h" #include "Node.h" #include "TrackSegment.h" #include "Global.h" #include <QtCore/QBuffer> #include <QtCore/QDateTime> #include <QtCore/QFile> #include <QtGui/QMessageBox> #include <QtXml/QDomDocument> #include <QProgressDialog> static TrackNode* importTrkPt(const QDomElement& Root, Document* /* theDocument */, Layer* theLayer) { qreal Lat = Root.attribute("lat").toDouble(); qreal Lon = Root.attribute("lon").toDouble(); TrackNode* Pt = g_backend.allocTrackNode(theLayer, Coord(Lon,Lat)); Pt->setLastUpdated(Feature::Log); if (Root.hasAttribute("xml:id")) Pt->setId(IFeature::FId(IFeature::Point, Root.attribute("xml:id").toLongLong())); theLayer->add(Pt); if (Root.tagName() == "wpt") Pt->setTag("_waypoint_", "yes"); for(QDomNode n = Root.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; if (t.tagName() == "time") { QString Value; for (QDomNode s = t.firstChild(); !s.isNull(); s = s.nextSibling()) { QDomText ss = s.toText(); if (!ss.isNull()) Value += ss.data(); } if (!Value.isEmpty()) { QDateTime dt(QDateTime::fromString(Value.left(19), Qt::ISODate)); dt.setTimeSpec(Qt::UTC); Pt->setTime(dt); } } else if (t.tagName() == "ele") { Pt->setElevation( t.text().toDouble() ); } else if (t.tagName() == "speed") { Pt->setSpeed( t.text().toDouble() ); } else if (t.tagName() == "name") { Pt->setTag("name", t.text()); } else if (t.tagName() == "desc") { Pt->setTag("_description_", t.text()); } else if (t.tagName() == "cmt") { Pt->setTag("_comment_", t.text()); } else if (t.tagName() == "extensions") // for OpenStreetBugs { QDomNodeList li = t.elementsByTagName("id"); if (li.size()) { QString id = li.at(0).toElement().text(); Pt->setId(IFeature::FId(IFeature::Point | IFeature::Special, id.toLongLong())); Pt->setTag("_special_", "yes"); // Assumed to be OpenstreetBugs as they don't use their own namesoace Pt->setSpecial(true); } } } return Pt; } static void importTrkSeg(const QDomElement& Root, Document* theDocument, Layer* theLayer, bool MakeSegment, QProgressDialog & progress) { TrackSegment* S = g_backend.allocSegment(theLayer); theLayer->add(S); if (Root.hasAttribute("xml:id")) S->setId(IFeature::FId(IFeature::GpxSegment, Root.attribute("xml:id").toLongLong())); Node* lastPoint = NULL; for(QDomNode n = Root.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull() || t.tagName() != "trkpt") continue; progress.setValue(progress.value()+1); if (progress.wasCanceled()) return; TrackNode* Pt = importTrkPt(t,theDocument, theLayer); if (MakeSegment == false) continue; if (lastPoint) { qreal kilometer = Pt->position().distanceFrom( lastPoint->position() ); if (M_PREFS->getMaxDistNodes() != 0.0 && kilometer > M_PREFS->getMaxDistNodes()) { if (!S->size()) g_backend.deallocFeature(theLayer, S); S = g_backend.allocSegment(theLayer); theLayer->add(S); } } S->add(Pt); lastPoint = Pt; } if (!S->size()) g_backend.deallocFeature(theLayer, S); } static void importRte(const QDomElement& Root, Document* theDocument, Layer* theLayer, bool MakeSegment, QProgressDialog & progress) { TrackSegment* S = g_backend.allocSegment(theLayer); theLayer->add(S); if (Root.hasAttribute("xml:id")) S->setId(IFeature::FId(IFeature::GpxSegment, Root.attribute("xml:id").toLongLong())); TrackNode* lastPoint = NULL; for(QDomNode n = Root.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (!t.isNull() && t.tagName() == "name") { theLayer->setName(t.text()); } else if (!t.isNull() && t.tagName() == "desc") { theLayer->setDescription(t.text()); } else if (!t.isNull() && t.tagName() == "rtept") { progress.setValue(progress.value()+1); if (progress.wasCanceled()) return; TrackNode* Pt = importTrkPt(t,theDocument, theLayer); if (MakeSegment == false) continue; if (lastPoint) { qreal kilometer = Pt->position().distanceFrom( lastPoint->position() ); if (M_PREFS->getMaxDistNodes() != 0.0 && kilometer > M_PREFS->getMaxDistNodes()) { if (!S->size()) g_backend.deallocFeature(theLayer, S); S = g_backend.allocSegment(theLayer); } } S->add(Pt); lastPoint = Pt; } } if (!S->size()) g_backend.deallocFeature(theLayer, S); } static void importTrk(const QDomElement& Root, Document* theDocument, Layer* theLayer, bool MakeSegment, QProgressDialog & progress) { for(QDomNode n = Root.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (!t.isNull() && t.tagName() == "trkseg") { importTrkSeg(t,theDocument, theLayer, MakeSegment, progress); if (progress.wasCanceled()) return; } else if (!t.isNull() && t.tagName() == "name") { theLayer->setName(t.text()); } else if (!t.isNull() && t.tagName() == "desc") { theLayer->setDescription(t.text()); } } } static void importGPX(const QDomElement& Root, Document* theDocument, QList<TrackLayer*>& theTracklayers, bool MakeSegment, QProgressDialog & progress) { for(QDomNode n = Root.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; if (t.tagName() == "trk") { TrackLayer* newLayer = new TrackLayer(); theDocument->add(newLayer); importTrk(t,theDocument, newLayer, MakeSegment, progress); if (!newLayer->size()) { theDocument->remove(newLayer); delete newLayer; } else { theTracklayers.append(newLayer); } } else if (t.tagName() == "rte") { TrackLayer* newLayer = new TrackLayer(); theDocument->add(newLayer); importRte(t,theDocument, newLayer, MakeSegment, progress); if (!newLayer->size()) { theDocument->remove(newLayer); delete newLayer; } else { theTracklayers.append(newLayer); } } else if (t.tagName() == "wpt") { importTrkPt(t,theDocument, theTracklayers[0]); progress.setValue(progress.value()+1); } if (progress.wasCanceled()) return; } } bool importGPX(QWidget* aParent, QIODevice& File, Document* theDocument, QList<TrackLayer*>& theTracklayers, bool MakeSegment) { // TODO remove debug messageboxes QDomDocument DomDoc; QString ErrorStr; int ErrorLine; int ErrorColumn; if (!DomDoc.setContent(&File, true, &ErrorStr, &ErrorLine,&ErrorColumn)) { File.close(); QMessageBox::warning(aParent,"Parse error", QString("Parse error at line %1, column %2:\n%3") .arg(ErrorLine) .arg(ErrorColumn) .arg(ErrorStr)); return false; } QDomElement root = DomDoc.documentElement(); if (root.tagName() != "gpx") { QMessageBox::information(aParent, "Parse error","Root is not a gpx node"); return false; } QProgressDialog progress("Importing GPX...", "Cancel", 0, 0); progress.setWindowModality(Qt::WindowModal); progress.setMaximum(progress.maximum() + DomDoc.elementsByTagName("trkpt").count()); progress.setMaximum(progress.maximum() + DomDoc.elementsByTagName("wpt").count()); importGPX(root, theDocument, theTracklayers, MakeSegment, progress); progress.setValue(progress.maximum()); if (progress.wasCanceled()) return false; return true; } bool importGPX(QWidget* aParent, const QString& aFilename, Document* theDocument, QList<TrackLayer*>& theTracklayers) { QFile File(aFilename); if (!File.open(QIODevice::ReadOnly)) { return false; } return importGPX(aParent, File, theDocument, theTracklayers, true); } bool importGPX(QWidget* aParent, QByteArray& aFile, Document* theDocument, QList<TrackLayer*>& theTracklayers, bool MakeSegment) { QBuffer buf(&aFile); return importGPX(aParent,buf, theDocument, theTracklayers, MakeSegment); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportGPX.h������������������������������������������������������0000664�0000000�0000000�00000000646�11770671653�0021240�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_IMPORTGPX_H_ #define MERKATOR_IMPORTGPX_H_ #include <QList> class Document; class TrackLayer; class QByteArray; class QString; class QWidget; bool importGPX(QWidget* aParent, const QString& aFilename, Document* theDocument, QList<TrackLayer*>& theTracklayers); bool importGPX(QWidget* aParent, QByteArray& aFile, Document* theDocument, QList<TrackLayer*>& theTracklayers, bool MakeSegment); #endif ������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportNGT.cpp����������������������������������������������������0000664�0000000�0000000�00000002663�11770671653�0021566�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ImportNGT.h" #include "DocumentCommands.h" #include "Document.h" #include "Node.h" #include "TrackSegment.h" #include "Global.h" #include <QApplication> #include <QtCore/QFile> #include <QtCore/QStringList> #include <QtCore/QTextStream> #include <math.h> bool importNGT(QWidget* /* aParent */, const QString& aFilename, Document* theDocument, Layer* theLayer) { QFile f(aFilename); if (f.open(QIODevice::ReadOnly)) { QTextStream s(&f); CommandList* theList = new CommandList(QApplication::tr("Import NGT"), NULL); TrackSegment* theSegment = g_backend.allocSegment(theLayer); while (!f.atEnd()) { QString Line(f.readLine()); QStringList Items(Line.split('|')); if (Items.count() >= 5) { TrackNode* Pt = g_backend.allocTrackNode(theLayer, Coord(Items[3].toDouble()*COORD_MAX, Items[4].toDouble()*COORD_MAX)); Pt->setLastUpdated(Feature::Log); theList->add(new AddFeatureCommand(theLayer,Pt, true)); theSegment->add(Pt); } } if (theList->empty()) { delete theList; g_backend.deallocFeature(theLayer, theSegment); } else { theList->add(new AddFeatureCommand(theLayer,theSegment,true)); theDocument->addHistory(theList); } return true; } return false; } �����������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportNGT.h������������������������������������������������������0000664�0000000�0000000�00000000352�11770671653�0021224�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_IMPORTNGT_H_ #define MERKAARTOR_IMPORTNGT_H_ class Layer; class Document; class QString; class QWidget; bool importNGT(QWidget* aParent, const QString& aFilename, Document* theDocument, Layer* theLayer); #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportNMEA.cpp���������������������������������������������������0000664�0000000�0000000�00000012242�11770671653�0021650�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ImportNMEA // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include <QtGui> #include "../ImportExport/ImportNMEA.h" #include "Global.h" ImportNMEA::ImportNMEA(Document* doc) : IImportExport(doc), curAltitude(0.0) { } ImportNMEA::~ImportNMEA() { } // no export bool ImportNMEA::export_(const QList<Feature *>& featList) { IImportExport::export_(featList); return false; } // import the input bool ImportNMEA::import(Layer* aLayer) { bool goodFix = false; bool goodFix3D = true; QTextStream in(Device); theLayer = dynamic_cast <TrackLayer *> (aLayer); theList = new CommandList(QApplication::tr("Import NMEA"), NULL); TrackSegment* TS = g_backend.allocSegment(aLayer); while (!in.atEnd()) { QString line = in.readLine(); if (line.left(3) != "$GP") continue; QString command = line.mid(3, 3); if (command == "GSA") { bool prevGoodFix = goodFix3D; goodFix3D = importGSA(line); if (!goodFix3D && prevGoodFix) { if (TS->size()) theLayer->add(TS); else g_backend.deallocFeature(aLayer, TS); TS = g_backend.allocSegment(aLayer); } } else if (command == "GSV") { if (goodFix && goodFix3D) importGSV(line); } else if (command == "GGA") { bool prevGoodFix = goodFix; goodFix = importGGA(line); if (!goodFix && prevGoodFix) { if (TS->size()) theLayer->add(TS); else g_backend.deallocFeature(aLayer, TS); TS = g_backend.allocSegment(aLayer); } } else if (command == "GLL") { bool prevGoodFix = goodFix; goodFix = importGLL(line); if (!goodFix && prevGoodFix) { if (TS->size()) theLayer->add(TS); else g_backend.deallocFeature(aLayer, TS); TS = g_backend.allocSegment(aLayer); } } else if (command == "RMC") { if (goodFix && goodFix3D) { TrackNode* p = importRMC(line); if (p) TS->add(p); } } else {/* Not handled */} } if (TS->size()) theLayer->add(TS); else g_backend.deallocFeature(aLayer, TS); delete theList; return true; } bool ImportNMEA::importGSA (QString line) { if (line.count('$') > 1) return false; QStringList tokens = line.split(","); if (tokens.size() < 3) return false; QString autoSelectFix = tokens[1]; int Fix3D = tokens[2].toInt(); // qreal PDOP = tokens[15].toDouble(); // qreal HDOP = tokens[16].toDouble(); // qreal VDOP = tokens[17].toDouble(); return (Fix3D == 1 ? false: true); } bool ImportNMEA::importGSV (QString /* line */) { return true; } bool ImportNMEA::importGGA (QString line) { if (line.count('$') > 1) return false; QStringList tokens = line.split(","); if (tokens.size() < 10) return false; //qreal lat = tokens[2].left(2).toDouble(); //qreal lon = tokens[4].left(3).toDouble(); //qreal latmin = tokens[2].mid(2).toDouble(); //lat += latmin / 60.0; //if (tokens[3] != "N") // lat = -lat; //qreal lonmin = tokens[4].mid(3).toDouble(); //lon += lonmin / 60.0; //if (tokens[5] != "E") // lon = -lon; int fix = tokens[6].toInt(); if (fix == 0) return false; curAltitude = tokens[9].toDouble(); return true; } bool ImportNMEA::importGLL (QString line) { if (line.count('$') > 1) return false; QStringList tokens = line.split(","); if (tokens.size() < 7) return false; if (tokens[6] != "A") return false; return true; } TrackNode* ImportNMEA::importRMC (QString line) { if (line.count('$') > 1) return NULL; QStringList tokens = line.split(","); if (tokens.size() < 10) return NULL; //int time = tokens[1]; if (tokens[2] != "A") return NULL; qreal lat = tokens[3].left(2).toDouble(); qreal latmin = tokens[3].mid(2).toDouble(); lat += latmin / 60.0; if (tokens[4] != "N") lat = -lat; qreal lon = tokens[5].left(3).toDouble(); qreal lonmin = tokens[5].mid(3).toDouble(); lon += lonmin / 60.0; if (tokens[6] != "E") lon = -lon; qreal speed = tokens[7].toDouble() * 1.852; //int date = token[9]; QString strDate = tokens[9] + tokens[1]; QDateTime date = QDateTime::fromString(strDate, "ddMMyyHHmmss.zzz"); if (!date.isValid()) return NULL; if (date.date().year() < 1970) date = date.addYears(100); //date.setTimeSpec(Qt::UTC); TrackNode* Pt = g_backend.allocTrackNode(theLayer, Coord(lon,lat)); theLayer->add(Pt); Pt->setLastUpdated(Feature::Log); Pt->setElevation(curAltitude); Pt->setSpeed(speed); Pt->setTime(date); return Pt; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportNMEA.h�����������������������������������������������������0000664�0000000�0000000�00000001425�11770671653�0021316�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ImportNMEA // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef IMPORTNMEA_H #define IMPORTNMEA_H #include "IImportExport.h" /** @author cbro <cbro@semperpax.com> */ class ImportNMEA : public IImportExport { public: ImportNMEA(Document* doc); ~ImportNMEA(); // import the input virtual bool import(Layer* aLayer); // export virtual bool export_(const QList<Feature *>& featList); private: TrackLayer* theLayer; bool importGSA (QString line); bool importGSV (QString line); bool importGGA (QString line); bool importGLL (QString line); TrackNode* importRMC (QString line); qreal curAltitude; }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/ImportOSM.cpp����������������������������������������������������0000664�0000000�0000000�00000047757�11770671653�0021611�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ImportOSM.h" #include "Command.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "RelationCommands.h" #include "DownloadOSM.h" #include "Document.h" #include "Layer.h" #include "Features.h" #include "Global.h" #include "IProgressWindow.h" #include <QApplication> #include <QtCore/QBuffer> #include <QtCore/QDateTime> #include <QtCore/QEventLoop> #include <QtCore/QFile> #include <QtGui/QMessageBox> #include <QtGui/QProgressBar> #include <QtGui/QProgressDialog> #include <QtXml/QDomDocument> #include <QtXml/QXmlAttributes> OSMHandler::OSMHandler(Document* aDoc, Layer* aLayer, Layer* aConflict) : theDocument(aDoc), theLayer(aLayer), conflictLayer(aConflict), Current(0) { } void OSMHandler::parseTag(const QXmlAttributes &atts) { if (!Current) return; Current->setTag(atts.value("k"),atts.value("v")); } void parseStandardAttributes(const QXmlAttributes& atts, Feature* F) { #ifndef FRISIUS_BUILD QString ts = atts.value("timestamp"); QDateTime time = QDateTime::fromString(ts.left(19), Qt::ISODate); if (!time.isValid()) time = QDateTime::currentDateTime(); QString user = atts.value("user"); F->setTime(time); F->setUser(user); QString version = atts.value("version"); if (!version.isEmpty()) F->setVersionNumber(version.toInt()); #endif } void OSMHandler::parseNode(const QXmlAttributes& atts) { qreal Lat = atts.value("lat").toDouble(); qreal Lon = atts.value("lon").toDouble(); QString id = atts.value("id"); Node* Pt = CAST_NODE(theDocument->getFeature(IFeature::FId(IFeature::Point, id.toLongLong()))); if (Pt) { Node* userPt = Pt; Pt = g_backend.allocNode(theLayer, Coord(Lon,Lat)); Pt->setId(IFeature::FId(IFeature::Point | IFeature::Conflict, id.toLongLong())); Pt->setLastUpdated(Feature::OSMServerConflict); parseStandardAttributes(atts,Pt); if (userPt->lastUpdated() == Feature::User) { // conflict userPt->setLastUpdated(Feature::UserResolved); #ifndef FRISIUS_BUILD if (Pt->time() > userPt->time() || Pt->versionNumber() != userPt->versionNumber()) { if (conflictLayer) conflictLayer->add(Pt); userPt->setVersionNumber(Pt->versionNumber()); NewFeature = true; } else #endif { g_backend.deallocFeature(theLayer, Pt); Pt = userPt; NewFeature = false; } } else if (userPt->lastUpdated() != Feature::UserResolved) { #ifndef FRISIUS_BUILD if (userPt->lastUpdated() == Feature::NotYetDownloaded || (Pt->time() > userPt->time() || Pt->versionNumber() != userPt->versionNumber())) { #else if (userPt->lastUpdated() == Feature::NotYetDownloaded) { #endif g_backend.deallocFeature(theLayer, Pt); Pt = userPt; Pt->layer()->remove(Pt); theLayer->add(Pt); Pt->setPosition(Coord(Lon,Lat)); Pt->clearTags(); NewFeature = true; if (Pt->lastUpdated() == Feature::NotYetDownloaded) Pt->setLastUpdated(Feature::OSMServer); } else { g_backend.deallocFeature(theLayer, Pt); Pt = userPt; NewFeature = false; } } } else { Pt = g_backend.allocNode(theLayer, Coord(Lon,Lat)); Pt->setId(IFeature::FId(IFeature::Point, id.toLongLong())); Pt->setLastUpdated(Feature::OSMServer); theLayer->add(Pt); NewFeature = true; } if (NewFeature) { parseStandardAttributes(atts,Pt); Current = Pt; for (int i=0; i<Pt->sizeParents(); ++i) { if (Pt->getParent(i)->isDeleted()) continue; if (Way* w = CAST_WAY(Pt->getParent(i))) touchedWays << w; } } else Current = NULL; } void OSMHandler::parseNd(const QXmlAttributes& atts) { Way* R = dynamic_cast<Way*>(Current); if (!R) return; Node *Part = Feature::getNodeOrCreatePlaceHolder(theDocument, theLayer, IFeature::FId(IFeature::Point, atts.value("ref").toLongLong())); if (NewFeature) R->add(Part); } void OSMHandler::parseWay(const QXmlAttributes& atts) { QString id = atts.value("id"); QString ts = atts.value("timestamp"); ts.truncate(19); Way* R = CAST_WAY(theDocument->getFeature(IFeature::FId(IFeature::LineString, id.toLongLong()))); if (R) { Way* userRd = R; R = g_backend.allocWay(theLayer); R->setId(IFeature::FId(IFeature::LineString | IFeature::Conflict, id.toLongLong())); R->setLastUpdated(Feature::OSMServerConflict); parseStandardAttributes(atts,R); if (userRd->lastUpdated() == Feature::User) { userRd->setLastUpdated(Feature::UserResolved); NewFeature = false; // conflict #ifndef FRISIUS_BUILD if (R->time() > userRd->time() || R->versionNumber() != userRd->versionNumber()) { if (conflictLayer) conflictLayer->add(R); userRd->setVersionNumber(R->versionNumber()); NewFeature = true; } else #endif { g_backend.deallocFeature(theLayer, R); R = userRd; NewFeature = false; } } else if (R->lastUpdated() != Feature::UserResolved) { #ifndef FRISIUS_BUILD if (userRd->lastUpdated() == Feature::NotYetDownloaded || (R->time() > userRd->time() || R->versionNumber() != userRd->versionNumber())) { #else if (userRd->lastUpdated() == Feature::NotYetDownloaded) { #endif g_backend.deallocFeature(theLayer, R); R = userRd; R->layer()->remove(R); theLayer->add(R); while (R->size()) R->remove((int)0); R->clearTags(); NewFeature = true; if (R->lastUpdated() == Feature::NotYetDownloaded) R->setLastUpdated(Feature::OSMServer); } else { g_backend.deallocFeature(theLayer, R); R = userRd; NewFeature = false; } } } else { R = g_backend.allocWay(theLayer); R->setId(IFeature::FId(IFeature::LineString, id.toLongLong())); R->setLastUpdated(Feature::OSMServer); theLayer->add(R); NewFeature = true; } if (NewFeature) { parseStandardAttributes(atts,R); Current = R; touchedWays << R; } else Current = NULL; } void OSMHandler::parseMember(const QXmlAttributes& atts) { Relation* R = dynamic_cast<Relation*>(Current); if (!R) return; QString Type = atts.value("type"); Feature* F = 0; if (Type == "node") F = Feature::getNodeOrCreatePlaceHolder(theDocument, theLayer, IFeature::FId(IFeature::Point, atts.value("ref").toLongLong())); else if (Type == "way") F = Feature::getWayOrCreatePlaceHolder(theDocument, theLayer, IFeature::FId(IFeature::LineString, atts.value("ref").toLongLong())); else if (Type == "relation") F = Feature::getRelationOrCreatePlaceHolder(theDocument, theLayer, IFeature::FId(IFeature::OsmRelation, atts.value("ref").toLongLong())); if (F && F != R) R->add(atts.value("role"),F); } void OSMHandler::parseRelation(const QXmlAttributes& atts) { QString id = atts.value("id"); QString ts = atts.value("timestamp"); ts.truncate(19); Relation* R = CAST_RELATION(theDocument->getFeature(IFeature::FId(IFeature::OsmRelation, id.toLongLong()))); if (R) { Relation* userR = R; R = g_backend.allocRelation(theLayer); R->setId(IFeature::FId(IFeature::OsmRelation | IFeature::Conflict, id.toLongLong())); R->setLastUpdated(Feature::OSMServerConflict); parseStandardAttributes(atts,R); if (R->lastUpdated() == Feature::User) { R->setLastUpdated(Feature::UserResolved); NewFeature = false; // conflict #ifndef FRISIUS_BUILD if (R->time() > userR->time() || R->versionNumber() != userR->versionNumber()) { if (conflictLayer) conflictLayer->add(R); userR->setVersionNumber(R->versionNumber()); NewFeature = true; } else #endif { g_backend.deallocFeature(theLayer, R); R = userR; NewFeature = false; } } else if (R->lastUpdated() != Feature::UserResolved) { #ifndef FRISIUS_BUILD if (userR->lastUpdated() == Feature::NotYetDownloaded || (R->time() > userR->time() || R->versionNumber() != userR->versionNumber())) { #else if (userR->lastUpdated() == Feature::NotYetDownloaded) { #endif g_backend.deallocFeature(theLayer, R); R = userR; R->layer()->remove(R); theLayer->add(R); while (R->size()) R->remove((int)0); R->clearTags(); NewFeature = true; if (R->lastUpdated() == Feature::NotYetDownloaded) R->setLastUpdated(Feature::OSMServer); } else { g_backend.deallocFeature(theLayer, R); R = userR; NewFeature = false; } } } else { R = g_backend.allocRelation(theLayer); R->setId(IFeature::FId(IFeature::OsmRelation, id.toLongLong())); R->setLastUpdated(Feature::OSMServer); NewFeature = true; theLayer->add(R); } if (NewFeature) { parseStandardAttributes(atts,R); Current = R; touchedRelations << R; } else Current = NULL; } bool OSMHandler::startElement ( const QString &, const QString & /* localName */, const QString & qName, const QXmlAttributes & atts ) { if (qName == "tag") parseTag(atts); else if (qName == "node") parseNode(atts); else if (qName == "nd") parseNd(atts); else if (qName == "way") parseWay(atts); else if (qName == "member") parseMember(atts); else if (qName == "relation") parseRelation(atts); return true; } bool OSMHandler::endElement ( const QString &, const QString & /* localName */, const QString & qName ) { if (qName == "node") Current = 0; return true; } static bool downloadToResolve(const QList<Feature*>& Resolution, QWidget* aParent, Document* theDocument, Layer* theLayer, Downloader* theDownloader) { IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(aParent); if (!aProgressWindow) return false; QProgressDialog* dlg = aProgressWindow->getProgressDialog(); dlg->setWindowTitle(QApplication::translate("Downloader", "Downloading unresolved...")); QProgressBar* Bar = aProgressWindow->getProgressBar(); QLabel* Lbl = aProgressWindow->getProgressLabel(); for (int i=0; i<Resolution.size(); i++ ) { QUrl URL = M_PREFS->getOsmApiUrl()+theDownloader->getURLToFetchFull(Resolution[i]); Lbl->setText(QApplication::translate("Downloader","Downloading unresolved %1 of %2").arg(i+1).arg(Resolution.size())); if (theDownloader->go(URL)) { if (theDownloader->resultCode() == 410) { theLayer->remove(Resolution[i]); delete Resolution[i]; } else { Lbl->setText(QApplication::translate("Downloader","Parsing unresolved %1 of %2").arg(i+1).arg(Resolution.size())); QByteArray ba(theDownloader->content()); QBuffer File(&ba); File.open(QIODevice::ReadOnly); OSMHandler theHandler(theDocument,theLayer,NULL); QXmlSimpleReader xmlReader; xmlReader.setContentHandler(&theHandler); QXmlInputSource source; QByteArray buf(File.read(10240)); source.setData(buf); xmlReader.parse(&source,true); while (!File.atEnd()) { QByteArray buf(File.read(20480)); source.setData(buf); xmlReader.parseContinue(); qApp->processEvents(); if (dlg && dlg->wasCanceled()) break; } } Resolution[i]->setLastUpdated(Feature::OSMServer); } else return false; Bar->setValue(i); } return true; } static void recurseDelete (Feature* F, QList<Feature*>& MustDelete) { for (int i=0; i<F->sizeParents(); i++) { recurseDelete(CAST_FEATURE(F->getParent(i)), MustDelete); } if (!MustDelete.contains(F)) MustDelete.push_back(F); } static bool resolveNotYetDownloaded(QWidget* aParent, Document* theDocument, Layer* theLayer, Downloader* theDownloader) { // resolving nodes and roads makes no sense since the OSM api guarantees that they will be all downloaded, // so only resolve for relations if the ResolveRelations pref is set if (theDownloader) { IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(aParent); if (!aProgressWindow) return false; QProgressBar* Bar = aProgressWindow->getProgressBar(); //QLabel* Lbl = aProgressWindow->getProgressLabel(); QList<Feature*> MustResolve; MustResolve.clear(); for (FeatureIterator it(theDocument); !it.isEnd(); ++it) { Relation* RR = CAST_RELATION(it.get()); if (RR && RR->notEverythingDownloaded()) MustResolve.push_back(RR); } if (MustResolve.size()) { Bar->setMaximum(MustResolve.size()); Bar->setValue(0); if (!downloadToResolve(MustResolve,aParent,theDocument,theLayer, theDownloader)) return false; } } return true; } static bool deleteIncompleteRelations(QWidget* /*aParent*/, Document* /*theDocument*/, Layer* theLayer, Downloader* /*theDownloader*/) { QList<Feature*> MustDelete; for (int i=0; i<theLayer->size(); i++) { if (theLayer->get(i)->notEverythingDownloaded()) { recurseDelete(theLayer->get(i), MustDelete); } } for (int i=0; i<MustDelete.size(); i++) { MustDelete[i]->layer()->remove(MustDelete[i]); delete MustDelete[i]; } return true; } bool importOSM(QWidget* aParent, QIODevice& File, Document* theDocument, Layer* theLayer, Downloader* theDownloader) { QDomDocument DomDoc; QString ErrorStr; /* int ErrorLine; */ /* int ErrorColumn; */ QProgressDialog* dlg = NULL; QProgressBar* Bar = NULL; QLabel* Lbl = NULL; IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(aParent); if (aProgressWindow) { dlg = aProgressWindow->getProgressDialog(); if (dlg) { dlg->setWindowTitle(QApplication::translate("Downloader", "Parsing...")); Bar = aProgressWindow->getProgressBar(); Bar->setTextVisible(false); Lbl = aProgressWindow->getProgressLabel(); Lbl->setText(QApplication::translate("Downloader","Parsing XML")); dlg->show(); } } if (theDownloader) theDownloader->setAnimator(dlg,Lbl,Bar,false); Layer* conflictLayer = new DrawingLayer(QApplication::translate("Downloader","Conflicts from %1").arg(theLayer->name())); theDocument->add(conflictLayer); OSMHandler theHandler(theDocument,theLayer,conflictLayer); QXmlSimpleReader xmlReader; xmlReader.setContentHandler(&theHandler); QXmlInputSource source; QByteArray buf(File.read(10240)); source.setData(buf); xmlReader.parse(&source,true); if (Bar) { Bar->setMaximum(File.size()); Bar->setValue(Bar->value()+buf.size()); } while (!File.atEnd()) { QByteArray buf(File.read(20480)); source.setData(buf); xmlReader.parseContinue(); if (Bar) Bar->setValue(Bar->value()+buf.size()); qApp->processEvents(); if (dlg && dlg->wasCanceled()) break; } bool WasCanceled = false; if (dlg) WasCanceled = dlg->wasCanceled(); if (!WasCanceled && M_PREFS->getResolveRelations()) WasCanceled = !resolveNotYetDownloaded(aParent,theDocument,theLayer,theDownloader); if (!WasCanceled && M_PREFS->getDeleteIncompleteRelations()) WasCanceled = !deleteIncompleteRelations(aParent,theDocument,theLayer,theDownloader); if (WasCanceled) { theDocument->remove(conflictLayer); delete conflictLayer; return false; } else { // if (M_PREFS->getUseVirtualNodes()) { // if (dlg) { // Lbl->setText(QApplication::translate("Downloader","Update virtuals")); // Bar->setMaximum(theHandler.touchedWays.size()); // Bar->setValue(0); // } // foreach (Way* w, theHandler.touchedWays) { // w->updateVirtuals(); // if (Bar) // Bar->setValue(Bar->value()+1); // qApp->processEvents(); // } // } // Check for empty Roads/Relations and update virtual nodes QList<Feature*> EmptyFeature; foreach (Way* w, theHandler.touchedWays) { if (!w->size()) EmptyFeature.push_back(w); } foreach (Relation* r, theHandler.touchedRelations) { if (!r->size()) EmptyFeature.push_back(r); } if (EmptyFeature.size()) { if (QMessageBox::warning(aParent,QApplication::translate("Downloader","Empty roads/relations detected"), QApplication::translate("Downloader", "Empty roads/relations are probably errors.\n" "Do you want to mark them for deletion?"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel ) == QMessageBox::Ok) { for (int i=0; i<EmptyFeature.size(); i++ ) { CommandList* emptyFeatureList = new CommandList(); emptyFeatureList->setDescription(QApplication::translate("Downloader","Remove empty feature %1").arg(EmptyFeature[i]->description())); emptyFeatureList->setFeature(EmptyFeature[i]); emptyFeatureList->add(new RemoveFeatureCommand(theDocument, EmptyFeature[i])); theDocument->addHistory(emptyFeatureList); } } } if (!conflictLayer->size()) { theDocument->remove(conflictLayer); delete conflictLayer; } else { QMessageBox::warning(aParent,QApplication::translate("Downloader","Conflicts have been detected"), QApplication::translate("Downloader", "This means that some of the feature you modified" " since your last download have since been modified by someone else on the server.\n" "The features have been duplicated as \"conflict_...\" on the \"Conflicts...\" layer.\n" "Before being able to upload your changes, you will have to manually merge the two versions" " and remove the one from the \"Conflicts...\" layer." )); } } return true; } bool importOSM(QWidget* aParent, const QString& aFilename, Document* theDocument, Layer* theLayer) { QFile File(aFilename); if (!File.open(QIODevice::ReadOnly)) return false; return importOSM(aParent, File, theDocument, theLayer, 0 ); } bool importOSM(QWidget* aParent, QByteArray& Content, Document* theDocument, Layer* theLayer, Downloader* theDownloader) { QBuffer File(&Content); File.open(QIODevice::ReadOnly); return importOSM(aParent, File, theDocument, theLayer, theDownloader); } �����������������merkaartor-0.18.1/src/ImportExport/ImportOSM.h������������������������������������������������������0000664�0000000�0000000�00000002546�11770671653�0021241�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_IMPORTOSM_H_ #define MERKATOR_IMPORTOSM_H_ class CommandList; class Downloader; class Document; class Feature; class Layer; class Way; class Relation; class QByteArray; class QString; class QWidget; #include <QXmlDefaultHandler> #include <QSet> class OSMHandler : public QXmlDefaultHandler { public: OSMHandler(Document* aDoc, Layer* aLayer, Layer* aConflict); virtual bool startElement ( const QString & namespaceURI, const QString & localName, const QString & qName, const QXmlAttributes & atts ); virtual bool endElement ( const QString & namespaceURI, const QString & localName, const QString & qName ); private: void parseNode(const QXmlAttributes & atts); void parseTag(const QXmlAttributes & atts); void parseWay(const QXmlAttributes & atts); void parseNd(const QXmlAttributes & atts); void parseMember(const QXmlAttributes & atts); void parseRelation(const QXmlAttributes& atts); Document* theDocument; Layer* theLayer; Layer* conflictLayer; Feature* Current; bool NewFeature; public: QSet<Way*> touchedWays; QSet<Relation*> touchedRelations; }; bool importOSM(QWidget* aParent, const QString& aFilename, Document* theDocument, Layer* theLayer); bool importOSM(QWidget* aParent, QByteArray& Content, Document* theDocument, Layer* theLayer, Downloader* theDownloader); #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/fileformat.pb.cc�������������������������������������������������0000664�0000000�0000000�00000042026�11770671653�0022273�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Generated by the protocol buffer compiler. DO NOT EDIT! #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "fileformat.pb.h" #include <google/protobuf/stubs/once.h> #include <google/protobuf/io/coded_stream.h> #include <google/protobuf/wire_format_lite_inl.h> // @@protoc_insertion_point(includes) namespace OSMPBF { void protobuf_ShutdownFile_fileformat_2eproto() { delete Blob::default_instance_; delete BlobHeader::default_instance_; } void protobuf_AddDesc_fileformat_2eproto() { static bool already_here = false; if (already_here) return; already_here = true; GOOGLE_PROTOBUF_VERIFY_VERSION; Blob::default_instance_ = new Blob(); BlobHeader::default_instance_ = new BlobHeader(); Blob::default_instance_->InitAsDefaultInstance(); BlobHeader::default_instance_->InitAsDefaultInstance(); ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_fileformat_2eproto); } // Force AddDescriptors() to be called at static initialization time. struct StaticDescriptorInitializer_fileformat_2eproto { StaticDescriptorInitializer_fileformat_2eproto() { protobuf_AddDesc_fileformat_2eproto(); } } static_descriptor_initializer_fileformat_2eproto_; // =================================================================== const ::std::string Blob::_default_raw_; const ::std::string Blob::_default_zlib_data_; const ::std::string Blob::_default_lzma_data_; const ::std::string Blob::_default_obsolete_bzip2_data_; #ifndef _MSC_VER const int Blob::kRawFieldNumber; const int Blob::kRawSizeFieldNumber; const int Blob::kZlibDataFieldNumber; const int Blob::kLzmaDataFieldNumber; const int Blob::kOBSOLETEBzip2DataFieldNumber; #endif // !_MSC_VER Blob::Blob() : ::google::protobuf::MessageLite() { SharedCtor(); } void Blob::InitAsDefaultInstance() { } Blob::Blob(const Blob& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void Blob::SharedCtor() { _cached_size_ = 0; raw_ = const_cast< ::std::string*>(&_default_raw_); raw_size_ = 0; zlib_data_ = const_cast< ::std::string*>(&_default_zlib_data_); lzma_data_ = const_cast< ::std::string*>(&_default_lzma_data_); obsolete_bzip2_data_ = const_cast< ::std::string*>(&_default_obsolete_bzip2_data_); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } Blob::~Blob() { SharedDtor(); } void Blob::SharedDtor() { if (raw_ != &_default_raw_) { delete raw_; } if (zlib_data_ != &_default_zlib_data_) { delete zlib_data_; } if (lzma_data_ != &_default_lzma_data_) { delete lzma_data_; } if (obsolete_bzip2_data_ != &_default_obsolete_bzip2_data_) { delete obsolete_bzip2_data_; } if (this != default_instance_) { } } void Blob::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const Blob& Blob::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_fileformat_2eproto(); return *default_instance_; } Blob* Blob::default_instance_ = NULL; Blob* Blob::New() const { return new Blob; } void Blob::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (_has_bit(0)) { if (raw_ != &_default_raw_) { raw_->clear(); } } raw_size_ = 0; if (_has_bit(2)) { if (zlib_data_ != &_default_zlib_data_) { zlib_data_->clear(); } } if (_has_bit(3)) { if (lzma_data_ != &_default_lzma_data_) { lzma_data_->clear(); } } if (_has_bit(4)) { if (obsolete_bzip2_data_ != &_default_obsolete_bzip2_data_) { obsolete_bzip2_data_->clear(); } } } ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool Blob::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // optional bytes raw = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( input, this->mutable_raw())); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_raw_size; break; } // optional int32 raw_size = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_raw_size: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &raw_size_))); _set_bit(1); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_zlib_data; break; } // optional bytes zlib_data = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_zlib_data: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( input, this->mutable_zlib_data())); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_lzma_data; break; } // optional bytes lzma_data = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_lzma_data: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( input, this->mutable_lzma_data())); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_OBSOLETE_bzip2_data; break; } // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true]; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_OBSOLETE_bzip2_data: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( input, this->mutable_obsolete_bzip2_data())); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void Blob::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional bytes raw = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->raw(), output); } // optional int32 raw_size = 2; if (_has_bit(1)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->raw_size(), output); } // optional bytes zlib_data = 3; if (_has_bit(2)) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 3, this->zlib_data(), output); } // optional bytes lzma_data = 4; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 4, this->lzma_data(), output); } // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true]; if (_has_bit(4)) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 5, this->obsolete_bzip2_data(), output); } } int Blob::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional bytes raw = 1; if (has_raw()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->raw()); } // optional int32 raw_size = 2; if (has_raw_size()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->raw_size()); } // optional bytes zlib_data = 3; if (has_zlib_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->zlib_data()); } // optional bytes lzma_data = 4; if (has_lzma_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->lzma_data()); } // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true]; if (has_obsolete_bzip2_data()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->obsolete_bzip2_data()); } } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void Blob::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const Blob*>(&from)); } void Blob::MergeFrom(const Blob& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_raw(from.raw()); } if (from._has_bit(1)) { set_raw_size(from.raw_size()); } if (from._has_bit(2)) { set_zlib_data(from.zlib_data()); } if (from._has_bit(3)) { set_lzma_data(from.lzma_data()); } if (from._has_bit(4)) { set_obsolete_bzip2_data(from.obsolete_bzip2_data()); } } } void Blob::CopyFrom(const Blob& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool Blob::IsInitialized() const { return true; } void Blob::Swap(Blob* other) { if (other != this) { std::swap(raw_, other->raw_); std::swap(raw_size_, other->raw_size_); std::swap(zlib_data_, other->zlib_data_); std::swap(lzma_data_, other->lzma_data_); std::swap(obsolete_bzip2_data_, other->obsolete_bzip2_data_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string Blob::GetTypeName() const { return "OSMPBF.Blob"; } // =================================================================== const ::std::string BlobHeader::_default_type_; const ::std::string BlobHeader::_default_indexdata_; #ifndef _MSC_VER const int BlobHeader::kTypeFieldNumber; const int BlobHeader::kIndexdataFieldNumber; const int BlobHeader::kDatasizeFieldNumber; #endif // !_MSC_VER BlobHeader::BlobHeader() : ::google::protobuf::MessageLite() { SharedCtor(); } void BlobHeader::InitAsDefaultInstance() { } BlobHeader::BlobHeader(const BlobHeader& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void BlobHeader::SharedCtor() { _cached_size_ = 0; type_ = const_cast< ::std::string*>(&_default_type_); indexdata_ = const_cast< ::std::string*>(&_default_indexdata_); datasize_ = 0; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } BlobHeader::~BlobHeader() { SharedDtor(); } void BlobHeader::SharedDtor() { if (type_ != &_default_type_) { delete type_; } if (indexdata_ != &_default_indexdata_) { delete indexdata_; } if (this != default_instance_) { } } void BlobHeader::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const BlobHeader& BlobHeader::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_fileformat_2eproto(); return *default_instance_; } BlobHeader* BlobHeader::default_instance_ = NULL; BlobHeader* BlobHeader::New() const { return new BlobHeader; } void BlobHeader::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (_has_bit(0)) { if (type_ != &_default_type_) { type_->clear(); } } if (_has_bit(1)) { if (indexdata_ != &_default_indexdata_) { indexdata_->clear(); } } datasize_ = 0; } ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool BlobHeader::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required string type = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->mutable_type())); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_indexdata; break; } // optional bytes indexdata = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_indexdata: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( input, this->mutable_indexdata())); } else { goto handle_uninterpreted; } if (input->ExpectTag(24)) goto parse_datasize; break; } // required int32 datasize = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_datasize: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &datasize_))); _set_bit(2); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void BlobHeader::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required string type = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->type(), output); } // optional bytes indexdata = 2; if (_has_bit(1)) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 2, this->indexdata(), output); } // required int32 datasize = 3; if (_has_bit(2)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->datasize(), output); } } int BlobHeader::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string type = 1; if (has_type()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->type()); } // optional bytes indexdata = 2; if (has_indexdata()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->indexdata()); } // required int32 datasize = 3; if (has_datasize()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->datasize()); } } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void BlobHeader::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const BlobHeader*>(&from)); } void BlobHeader::MergeFrom(const BlobHeader& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_type(from.type()); } if (from._has_bit(1)) { set_indexdata(from.indexdata()); } if (from._has_bit(2)) { set_datasize(from.datasize()); } } } void BlobHeader::CopyFrom(const BlobHeader& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool BlobHeader::IsInitialized() const { if ((_has_bits_[0] & 0x00000005) != 0x00000005) return false; return true; } void BlobHeader::Swap(BlobHeader* other) { if (other != this) { std::swap(type_, other->type_); std::swap(indexdata_, other->indexdata_); std::swap(datasize_, other->datasize_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string BlobHeader::GetTypeName() const { return "OSMPBF.BlobHeader"; } // @@protoc_insertion_point(namespace_scope) } // namespace OSMPBF // @@protoc_insertion_point(global_scope) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/fileformat.pb.h��������������������������������������������������0000664�0000000�0000000�00000040272�11770671653�0022136�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Generated by the protocol buffer compiler. DO NOT EDIT! // source: fileformat.proto #ifndef PROTOBUF_fileformat_2eproto__INCLUDED #define PROTOBUF_fileformat_2eproto__INCLUDED #include <string> #include <google/protobuf/stubs/common.h> #if GOOGLE_PROTOBUF_VERSION < 2003000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif #if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include <google/protobuf/generated_message_util.h> #include <google/protobuf/repeated_field.h> #include <google/protobuf/extension_set.h> // @@protoc_insertion_point(includes) namespace OSMPBF { // Internal implementation detail -- do not call these. void protobuf_AddDesc_fileformat_2eproto(); void protobuf_AssignDesc_fileformat_2eproto(); void protobuf_ShutdownFile_fileformat_2eproto(); class Blob; class BlobHeader; // =================================================================== class Blob : public ::google::protobuf::MessageLite { public: Blob(); virtual ~Blob(); Blob(const Blob& from); inline Blob& operator=(const Blob& from) { CopyFrom(from); return *this; } static const Blob& default_instance(); void Swap(Blob* other); // implements Message ---------------------------------------------- Blob* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const Blob& from); void MergeFrom(const Blob& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // optional bytes raw = 1; inline bool has_raw() const; inline void clear_raw(); static const int kRawFieldNumber = 1; inline const ::std::string& raw() const; inline void set_raw(const ::std::string& value); inline void set_raw(const char* value); inline void set_raw(const void* value, size_t size); inline ::std::string* mutable_raw(); // optional int32 raw_size = 2; inline bool has_raw_size() const; inline void clear_raw_size(); static const int kRawSizeFieldNumber = 2; inline ::google::protobuf::int32 raw_size() const; inline void set_raw_size(::google::protobuf::int32 value); // optional bytes zlib_data = 3; inline bool has_zlib_data() const; inline void clear_zlib_data(); static const int kZlibDataFieldNumber = 3; inline const ::std::string& zlib_data() const; inline void set_zlib_data(const ::std::string& value); inline void set_zlib_data(const char* value); inline void set_zlib_data(const void* value, size_t size); inline ::std::string* mutable_zlib_data(); // optional bytes lzma_data = 4; inline bool has_lzma_data() const; inline void clear_lzma_data(); static const int kLzmaDataFieldNumber = 4; inline const ::std::string& lzma_data() const; inline void set_lzma_data(const ::std::string& value); inline void set_lzma_data(const char* value); inline void set_lzma_data(const void* value, size_t size); inline ::std::string* mutable_lzma_data(); // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true]; inline bool has_obsolete_bzip2_data() const PROTOBUF_DEPRECATED; inline void clear_obsolete_bzip2_data() PROTOBUF_DEPRECATED; static const int kOBSOLETEBzip2DataFieldNumber = 5; inline const ::std::string& obsolete_bzip2_data() const PROTOBUF_DEPRECATED; inline void set_obsolete_bzip2_data(const ::std::string& value) PROTOBUF_DEPRECATED; inline void set_obsolete_bzip2_data(const char* value) PROTOBUF_DEPRECATED; inline void set_obsolete_bzip2_data(const void* value, size_t size) PROTOBUF_DEPRECATED; inline ::std::string* mutable_obsolete_bzip2_data() PROTOBUF_DEPRECATED; // @@protoc_insertion_point(class_scope:OSMPBF.Blob) private: mutable int _cached_size_; ::std::string* raw_; static const ::std::string _default_raw_; ::google::protobuf::int32 raw_size_; ::std::string* zlib_data_; static const ::std::string _default_zlib_data_; ::std::string* lzma_data_; static const ::std::string _default_lzma_data_; ::std::string* obsolete_bzip2_data_; static const ::std::string _default_obsolete_bzip2_data_; friend void protobuf_AddDesc_fileformat_2eproto(); friend void protobuf_AssignDesc_fileformat_2eproto(); friend void protobuf_ShutdownFile_fileformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static Blob* default_instance_; }; // ------------------------------------------------------------------- class BlobHeader : public ::google::protobuf::MessageLite { public: BlobHeader(); virtual ~BlobHeader(); BlobHeader(const BlobHeader& from); inline BlobHeader& operator=(const BlobHeader& from) { CopyFrom(from); return *this; } static const BlobHeader& default_instance(); void Swap(BlobHeader* other); // implements Message ---------------------------------------------- BlobHeader* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const BlobHeader& from); void MergeFrom(const BlobHeader& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // required string type = 1; inline bool has_type() const; inline void clear_type(); static const int kTypeFieldNumber = 1; inline const ::std::string& type() const; inline void set_type(const ::std::string& value); inline void set_type(const char* value); inline void set_type(const char* value, size_t size); inline ::std::string* mutable_type(); // optional bytes indexdata = 2; inline bool has_indexdata() const; inline void clear_indexdata(); static const int kIndexdataFieldNumber = 2; inline const ::std::string& indexdata() const; inline void set_indexdata(const ::std::string& value); inline void set_indexdata(const char* value); inline void set_indexdata(const void* value, size_t size); inline ::std::string* mutable_indexdata(); // required int32 datasize = 3; inline bool has_datasize() const; inline void clear_datasize(); static const int kDatasizeFieldNumber = 3; inline ::google::protobuf::int32 datasize() const; inline void set_datasize(::google::protobuf::int32 value); // @@protoc_insertion_point(class_scope:OSMPBF.BlobHeader) private: mutable int _cached_size_; ::std::string* type_; static const ::std::string _default_type_; ::std::string* indexdata_; static const ::std::string _default_indexdata_; ::google::protobuf::int32 datasize_; friend void protobuf_AddDesc_fileformat_2eproto(); friend void protobuf_AssignDesc_fileformat_2eproto(); friend void protobuf_ShutdownFile_fileformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static BlobHeader* default_instance_; }; // =================================================================== // =================================================================== // Blob // optional bytes raw = 1; inline bool Blob::has_raw() const { return _has_bit(0); } inline void Blob::clear_raw() { if (raw_ != &_default_raw_) { raw_->clear(); } _clear_bit(0); } inline const ::std::string& Blob::raw() const { return *raw_; } inline void Blob::set_raw(const ::std::string& value) { _set_bit(0); if (raw_ == &_default_raw_) { raw_ = new ::std::string; } raw_->assign(value); } inline void Blob::set_raw(const char* value) { _set_bit(0); if (raw_ == &_default_raw_) { raw_ = new ::std::string; } raw_->assign(value); } inline void Blob::set_raw(const void* value, size_t size) { _set_bit(0); if (raw_ == &_default_raw_) { raw_ = new ::std::string; } raw_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* Blob::mutable_raw() { _set_bit(0); if (raw_ == &_default_raw_) { raw_ = new ::std::string; } return raw_; } // optional int32 raw_size = 2; inline bool Blob::has_raw_size() const { return _has_bit(1); } inline void Blob::clear_raw_size() { raw_size_ = 0; _clear_bit(1); } inline ::google::protobuf::int32 Blob::raw_size() const { return raw_size_; } inline void Blob::set_raw_size(::google::protobuf::int32 value) { _set_bit(1); raw_size_ = value; } // optional bytes zlib_data = 3; inline bool Blob::has_zlib_data() const { return _has_bit(2); } inline void Blob::clear_zlib_data() { if (zlib_data_ != &_default_zlib_data_) { zlib_data_->clear(); } _clear_bit(2); } inline const ::std::string& Blob::zlib_data() const { return *zlib_data_; } inline void Blob::set_zlib_data(const ::std::string& value) { _set_bit(2); if (zlib_data_ == &_default_zlib_data_) { zlib_data_ = new ::std::string; } zlib_data_->assign(value); } inline void Blob::set_zlib_data(const char* value) { _set_bit(2); if (zlib_data_ == &_default_zlib_data_) { zlib_data_ = new ::std::string; } zlib_data_->assign(value); } inline void Blob::set_zlib_data(const void* value, size_t size) { _set_bit(2); if (zlib_data_ == &_default_zlib_data_) { zlib_data_ = new ::std::string; } zlib_data_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* Blob::mutable_zlib_data() { _set_bit(2); if (zlib_data_ == &_default_zlib_data_) { zlib_data_ = new ::std::string; } return zlib_data_; } // optional bytes lzma_data = 4; inline bool Blob::has_lzma_data() const { return _has_bit(3); } inline void Blob::clear_lzma_data() { if (lzma_data_ != &_default_lzma_data_) { lzma_data_->clear(); } _clear_bit(3); } inline const ::std::string& Blob::lzma_data() const { return *lzma_data_; } inline void Blob::set_lzma_data(const ::std::string& value) { _set_bit(3); if (lzma_data_ == &_default_lzma_data_) { lzma_data_ = new ::std::string; } lzma_data_->assign(value); } inline void Blob::set_lzma_data(const char* value) { _set_bit(3); if (lzma_data_ == &_default_lzma_data_) { lzma_data_ = new ::std::string; } lzma_data_->assign(value); } inline void Blob::set_lzma_data(const void* value, size_t size) { _set_bit(3); if (lzma_data_ == &_default_lzma_data_) { lzma_data_ = new ::std::string; } lzma_data_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* Blob::mutable_lzma_data() { _set_bit(3); if (lzma_data_ == &_default_lzma_data_) { lzma_data_ = new ::std::string; } return lzma_data_; } // optional bytes OBSOLETE_bzip2_data = 5 [deprecated = true]; inline bool Blob::has_obsolete_bzip2_data() const { return _has_bit(4); } inline void Blob::clear_obsolete_bzip2_data() { if (obsolete_bzip2_data_ != &_default_obsolete_bzip2_data_) { obsolete_bzip2_data_->clear(); } _clear_bit(4); } inline const ::std::string& Blob::obsolete_bzip2_data() const { return *obsolete_bzip2_data_; } inline void Blob::set_obsolete_bzip2_data(const ::std::string& value) { _set_bit(4); if (obsolete_bzip2_data_ == &_default_obsolete_bzip2_data_) { obsolete_bzip2_data_ = new ::std::string; } obsolete_bzip2_data_->assign(value); } inline void Blob::set_obsolete_bzip2_data(const char* value) { _set_bit(4); if (obsolete_bzip2_data_ == &_default_obsolete_bzip2_data_) { obsolete_bzip2_data_ = new ::std::string; } obsolete_bzip2_data_->assign(value); } inline void Blob::set_obsolete_bzip2_data(const void* value, size_t size) { _set_bit(4); if (obsolete_bzip2_data_ == &_default_obsolete_bzip2_data_) { obsolete_bzip2_data_ = new ::std::string; } obsolete_bzip2_data_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* Blob::mutable_obsolete_bzip2_data() { _set_bit(4); if (obsolete_bzip2_data_ == &_default_obsolete_bzip2_data_) { obsolete_bzip2_data_ = new ::std::string; } return obsolete_bzip2_data_; } // ------------------------------------------------------------------- // BlobHeader // required string type = 1; inline bool BlobHeader::has_type() const { return _has_bit(0); } inline void BlobHeader::clear_type() { if (type_ != &_default_type_) { type_->clear(); } _clear_bit(0); } inline const ::std::string& BlobHeader::type() const { return *type_; } inline void BlobHeader::set_type(const ::std::string& value) { _set_bit(0); if (type_ == &_default_type_) { type_ = new ::std::string; } type_->assign(value); } inline void BlobHeader::set_type(const char* value) { _set_bit(0); if (type_ == &_default_type_) { type_ = new ::std::string; } type_->assign(value); } inline void BlobHeader::set_type(const char* value, size_t size) { _set_bit(0); if (type_ == &_default_type_) { type_ = new ::std::string; } type_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* BlobHeader::mutable_type() { _set_bit(0); if (type_ == &_default_type_) { type_ = new ::std::string; } return type_; } // optional bytes indexdata = 2; inline bool BlobHeader::has_indexdata() const { return _has_bit(1); } inline void BlobHeader::clear_indexdata() { if (indexdata_ != &_default_indexdata_) { indexdata_->clear(); } _clear_bit(1); } inline const ::std::string& BlobHeader::indexdata() const { return *indexdata_; } inline void BlobHeader::set_indexdata(const ::std::string& value) { _set_bit(1); if (indexdata_ == &_default_indexdata_) { indexdata_ = new ::std::string; } indexdata_->assign(value); } inline void BlobHeader::set_indexdata(const char* value) { _set_bit(1); if (indexdata_ == &_default_indexdata_) { indexdata_ = new ::std::string; } indexdata_->assign(value); } inline void BlobHeader::set_indexdata(const void* value, size_t size) { _set_bit(1); if (indexdata_ == &_default_indexdata_) { indexdata_ = new ::std::string; } indexdata_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* BlobHeader::mutable_indexdata() { _set_bit(1); if (indexdata_ == &_default_indexdata_) { indexdata_ = new ::std::string; } return indexdata_; } // required int32 datasize = 3; inline bool BlobHeader::has_datasize() const { return _has_bit(2); } inline void BlobHeader::clear_datasize() { datasize_ = 0; _clear_bit(2); } inline ::google::protobuf::int32 BlobHeader::datasize() const { return datasize_; } inline void BlobHeader::set_datasize(::google::protobuf::int32 value) { _set_bit(2); datasize_ = value; } // @@protoc_insertion_point(namespace_scope) } // namespace OSMPBF // @@protoc_insertion_point(global_scope) #endif // PROTOBUF_fileformat_2eproto__INCLUDED ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/fileformat.proto�������������������������������������������������0000664�0000000�0000000�00000003262�11770671653�0022450�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** Copyright (c) 2010 Scott A. Crosby. <scott@sacrosby.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ option optimize_for = LITE_RUNTIME; option java_package = "crosby.binary"; package OSMPBF; //protoc --java_out=../.. fileformat.proto // // STORAGE LAYER: Storing primitives. // message Blob { optional bytes raw = 1; // No compression optional int32 raw_size = 2; // When compressed, the uncompressed size // Possible compressed versions of the data. optional bytes zlib_data = 3; // PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED. optional bytes lzma_data = 4; // Formerly used for bzip2 compressed data. Depreciated in 2010. optional bytes OBSOLETE_bzip2_data = 5 [deprecated=true]; // Don't reuse this tag number. } /* A file contains an sequence of fileblock headers, each prefixed by their length in network byte order, followed by a data block containing the actual data. types staring with a "_" are reserved. */ message BlobHeader { required string type = 1; optional bytes indexdata = 2; required int32 datasize = 3; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/osmformat.pb.cc��������������������������������������������������0000664�0000000�0000000�00000360177�11770671653�0022164�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Generated by the protocol buffer compiler. DO NOT EDIT! #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "osmformat.pb.h" #include <google/protobuf/stubs/once.h> #include <google/protobuf/io/coded_stream.h> #include <google/protobuf/wire_format_lite_inl.h> // @@protoc_insertion_point(includes) namespace OSMPBF { void protobuf_ShutdownFile_osmformat_2eproto() { delete HeaderBlock::default_instance_; delete HeaderBBox::default_instance_; delete PrimitiveBlock::default_instance_; delete PrimitiveGroup::default_instance_; delete StringTable::default_instance_; delete Info::default_instance_; delete DenseInfo::default_instance_; delete ChangeSet::default_instance_; delete Node::default_instance_; delete DenseNodes::default_instance_; delete Way::default_instance_; delete Relation::default_instance_; } void protobuf_AddDesc_osmformat_2eproto() { static bool already_here = false; if (already_here) return; already_here = true; GOOGLE_PROTOBUF_VERIFY_VERSION; HeaderBlock::default_instance_ = new HeaderBlock(); HeaderBBox::default_instance_ = new HeaderBBox(); PrimitiveBlock::default_instance_ = new PrimitiveBlock(); PrimitiveGroup::default_instance_ = new PrimitiveGroup(); StringTable::default_instance_ = new StringTable(); Info::default_instance_ = new Info(); DenseInfo::default_instance_ = new DenseInfo(); ChangeSet::default_instance_ = new ChangeSet(); Node::default_instance_ = new Node(); DenseNodes::default_instance_ = new DenseNodes(); Way::default_instance_ = new Way(); Relation::default_instance_ = new Relation(); HeaderBlock::default_instance_->InitAsDefaultInstance(); HeaderBBox::default_instance_->InitAsDefaultInstance(); PrimitiveBlock::default_instance_->InitAsDefaultInstance(); PrimitiveGroup::default_instance_->InitAsDefaultInstance(); StringTable::default_instance_->InitAsDefaultInstance(); Info::default_instance_->InitAsDefaultInstance(); DenseInfo::default_instance_->InitAsDefaultInstance(); ChangeSet::default_instance_->InitAsDefaultInstance(); Node::default_instance_->InitAsDefaultInstance(); DenseNodes::default_instance_->InitAsDefaultInstance(); Way::default_instance_->InitAsDefaultInstance(); Relation::default_instance_->InitAsDefaultInstance(); ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_osmformat_2eproto); } // Force AddDescriptors() to be called at static initialization time. struct StaticDescriptorInitializer_osmformat_2eproto { StaticDescriptorInitializer_osmformat_2eproto() { protobuf_AddDesc_osmformat_2eproto(); } } static_descriptor_initializer_osmformat_2eproto_; // =================================================================== const ::std::string HeaderBlock::_default_writingprogram_; const ::std::string HeaderBlock::_default_source_; #ifndef _MSC_VER const int HeaderBlock::kBboxFieldNumber; const int HeaderBlock::kRequiredFeaturesFieldNumber; const int HeaderBlock::kOptionalFeaturesFieldNumber; const int HeaderBlock::kWritingprogramFieldNumber; const int HeaderBlock::kSourceFieldNumber; #endif // !_MSC_VER HeaderBlock::HeaderBlock() : ::google::protobuf::MessageLite() { SharedCtor(); } void HeaderBlock::InitAsDefaultInstance() { bbox_ = const_cast< ::OSMPBF::HeaderBBox*>(&::OSMPBF::HeaderBBox::default_instance()); } HeaderBlock::HeaderBlock(const HeaderBlock& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void HeaderBlock::SharedCtor() { _cached_size_ = 0; bbox_ = NULL; writingprogram_ = const_cast< ::std::string*>(&_default_writingprogram_); source_ = const_cast< ::std::string*>(&_default_source_); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } HeaderBlock::~HeaderBlock() { SharedDtor(); } void HeaderBlock::SharedDtor() { if (writingprogram_ != &_default_writingprogram_) { delete writingprogram_; } if (source_ != &_default_source_) { delete source_; } if (this != default_instance_) { delete bbox_; } } void HeaderBlock::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const HeaderBlock& HeaderBlock::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } HeaderBlock* HeaderBlock::default_instance_ = NULL; HeaderBlock* HeaderBlock::New() const { return new HeaderBlock; } void HeaderBlock::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (_has_bit(0)) { if (bbox_ != NULL) bbox_->::OSMPBF::HeaderBBox::Clear(); } if (_has_bit(3)) { if (writingprogram_ != &_default_writingprogram_) { writingprogram_->clear(); } } if (_has_bit(4)) { if (source_ != &_default_source_) { source_->clear(); } } } required_features_.Clear(); optional_features_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool HeaderBlock::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // optional .OSMPBF.HeaderBBox bbox = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_bbox())); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_required_features; break; } // repeated string required_features = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_required_features: DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_required_features())); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_required_features; if (input->ExpectTag(42)) goto parse_optional_features; break; } // repeated string optional_features = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_optional_features: DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->add_optional_features())); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_optional_features; if (input->ExpectTag(130)) goto parse_writingprogram; break; } // optional string writingprogram = 16; case 16: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_writingprogram: DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->mutable_writingprogram())); } else { goto handle_uninterpreted; } if (input->ExpectTag(138)) goto parse_source; break; } // optional string source = 17; case 17: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_source: DO_(::google::protobuf::internal::WireFormatLite::ReadString( input, this->mutable_source())); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void HeaderBlock::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional .OSMPBF.HeaderBBox bbox = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->bbox(), output); } // repeated string required_features = 4; for (int i = 0; i < this->required_features_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->required_features(i), output); } // repeated string optional_features = 5; for (int i = 0; i < this->optional_features_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteString( 5, this->optional_features(i), output); } // optional string writingprogram = 16; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteString( 16, this->writingprogram(), output); } // optional string source = 17; if (_has_bit(4)) { ::google::protobuf::internal::WireFormatLite::WriteString( 17, this->source(), output); } } int HeaderBlock::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional .OSMPBF.HeaderBBox bbox = 1; if (has_bbox()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->bbox()); } // optional string writingprogram = 16; if (has_writingprogram()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->writingprogram()); } // optional string source = 17; if (has_source()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize( this->source()); } } // repeated string required_features = 4; total_size += 1 * this->required_features_size(); for (int i = 0; i < this->required_features_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->required_features(i)); } // repeated string optional_features = 5; total_size += 1 * this->optional_features_size(); for (int i = 0; i < this->optional_features_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::StringSize( this->optional_features(i)); } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void HeaderBlock::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const HeaderBlock*>(&from)); } void HeaderBlock::MergeFrom(const HeaderBlock& from) { GOOGLE_CHECK_NE(&from, this); required_features_.MergeFrom(from.required_features_); optional_features_.MergeFrom(from.optional_features_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { mutable_bbox()->::OSMPBF::HeaderBBox::MergeFrom(from.bbox()); } if (from._has_bit(3)) { set_writingprogram(from.writingprogram()); } if (from._has_bit(4)) { set_source(from.source()); } } } void HeaderBlock::CopyFrom(const HeaderBlock& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool HeaderBlock::IsInitialized() const { if (has_bbox()) { if (!this->bbox().IsInitialized()) return false; } return true; } void HeaderBlock::Swap(HeaderBlock* other) { if (other != this) { std::swap(bbox_, other->bbox_); required_features_.Swap(&other->required_features_); optional_features_.Swap(&other->optional_features_); std::swap(writingprogram_, other->writingprogram_); std::swap(source_, other->source_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string HeaderBlock::GetTypeName() const { return "OSMPBF.HeaderBlock"; } // =================================================================== #ifndef _MSC_VER const int HeaderBBox::kLeftFieldNumber; const int HeaderBBox::kRightFieldNumber; const int HeaderBBox::kTopFieldNumber; const int HeaderBBox::kBottomFieldNumber; #endif // !_MSC_VER HeaderBBox::HeaderBBox() : ::google::protobuf::MessageLite() { SharedCtor(); } void HeaderBBox::InitAsDefaultInstance() { } HeaderBBox::HeaderBBox(const HeaderBBox& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void HeaderBBox::SharedCtor() { _cached_size_ = 0; left_ = GOOGLE_LONGLONG(0); right_ = GOOGLE_LONGLONG(0); top_ = GOOGLE_LONGLONG(0); bottom_ = GOOGLE_LONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } HeaderBBox::~HeaderBBox() { SharedDtor(); } void HeaderBBox::SharedDtor() { if (this != default_instance_) { } } void HeaderBBox::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const HeaderBBox& HeaderBBox::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } HeaderBBox* HeaderBBox::default_instance_ = NULL; HeaderBBox* HeaderBBox::New() const { return new HeaderBBox; } void HeaderBBox::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { left_ = GOOGLE_LONGLONG(0); right_ = GOOGLE_LONGLONG(0); top_ = GOOGLE_LONGLONG(0); bottom_ = GOOGLE_LONGLONG(0); } ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool HeaderBBox::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required sint64 left = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &left_))); _set_bit(0); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_right; break; } // required sint64 right = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_right: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &right_))); _set_bit(1); } else { goto handle_uninterpreted; } if (input->ExpectTag(24)) goto parse_top; break; } // required sint64 top = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_top: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &top_))); _set_bit(2); } else { goto handle_uninterpreted; } if (input->ExpectTag(32)) goto parse_bottom; break; } // required sint64 bottom = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_bottom: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &bottom_))); _set_bit(3); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void HeaderBBox::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required sint64 left = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(1, this->left(), output); } // required sint64 right = 2; if (_has_bit(1)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(2, this->right(), output); } // required sint64 top = 3; if (_has_bit(2)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(3, this->top(), output); } // required sint64 bottom = 4; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(4, this->bottom(), output); } } int HeaderBBox::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required sint64 left = 1; if (has_left()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->left()); } // required sint64 right = 2; if (has_right()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->right()); } // required sint64 top = 3; if (has_top()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->top()); } // required sint64 bottom = 4; if (has_bottom()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->bottom()); } } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void HeaderBBox::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const HeaderBBox*>(&from)); } void HeaderBBox::MergeFrom(const HeaderBBox& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_left(from.left()); } if (from._has_bit(1)) { set_right(from.right()); } if (from._has_bit(2)) { set_top(from.top()); } if (from._has_bit(3)) { set_bottom(from.bottom()); } } } void HeaderBBox::CopyFrom(const HeaderBBox& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool HeaderBBox::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; return true; } void HeaderBBox::Swap(HeaderBBox* other) { if (other != this) { std::swap(left_, other->left_); std::swap(right_, other->right_); std::swap(top_, other->top_); std::swap(bottom_, other->bottom_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string HeaderBBox::GetTypeName() const { return "OSMPBF.HeaderBBox"; } // =================================================================== #ifndef _MSC_VER const int PrimitiveBlock::kStringtableFieldNumber; const int PrimitiveBlock::kPrimitivegroupFieldNumber; const int PrimitiveBlock::kGranularityFieldNumber; const int PrimitiveBlock::kLatOffsetFieldNumber; const int PrimitiveBlock::kLonOffsetFieldNumber; const int PrimitiveBlock::kDateGranularityFieldNumber; #endif // !_MSC_VER PrimitiveBlock::PrimitiveBlock() : ::google::protobuf::MessageLite() { SharedCtor(); } void PrimitiveBlock::InitAsDefaultInstance() { stringtable_ = const_cast< ::OSMPBF::StringTable*>(&::OSMPBF::StringTable::default_instance()); } PrimitiveBlock::PrimitiveBlock(const PrimitiveBlock& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void PrimitiveBlock::SharedCtor() { _cached_size_ = 0; stringtable_ = NULL; granularity_ = 100; lat_offset_ = GOOGLE_LONGLONG(0); lon_offset_ = GOOGLE_LONGLONG(0); date_granularity_ = 1000; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } PrimitiveBlock::~PrimitiveBlock() { SharedDtor(); } void PrimitiveBlock::SharedDtor() { if (this != default_instance_) { delete stringtable_; } } void PrimitiveBlock::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PrimitiveBlock& PrimitiveBlock::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } PrimitiveBlock* PrimitiveBlock::default_instance_ = NULL; PrimitiveBlock* PrimitiveBlock::New() const { return new PrimitiveBlock; } void PrimitiveBlock::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (_has_bit(0)) { if (stringtable_ != NULL) stringtable_->::OSMPBF::StringTable::Clear(); } granularity_ = 100; lat_offset_ = GOOGLE_LONGLONG(0); lon_offset_ = GOOGLE_LONGLONG(0); date_granularity_ = 1000; } primitivegroup_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool PrimitiveBlock::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required .OSMPBF.StringTable stringtable = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_stringtable())); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_primitivegroup; break; } // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_primitivegroup: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, add_primitivegroup())); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_primitivegroup; if (input->ExpectTag(136)) goto parse_granularity; break; } // optional int32 granularity = 17 [default = 100]; case 17: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_granularity: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &granularity_))); _set_bit(2); } else { goto handle_uninterpreted; } if (input->ExpectTag(144)) goto parse_date_granularity; break; } // optional int32 date_granularity = 18 [default = 1000]; case 18: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_date_granularity: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &date_granularity_))); _set_bit(5); } else { goto handle_uninterpreted; } if (input->ExpectTag(152)) goto parse_lat_offset; break; } // optional int64 lat_offset = 19 [default = 0]; case 19: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_lat_offset: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &lat_offset_))); _set_bit(3); } else { goto handle_uninterpreted; } if (input->ExpectTag(160)) goto parse_lon_offset; break; } // optional int64 lon_offset = 20 [default = 0]; case 20: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_lon_offset: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &lon_offset_))); _set_bit(4); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void PrimitiveBlock::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required .OSMPBF.StringTable stringtable = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->stringtable(), output); } // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2; for (int i = 0; i < this->primitivegroup_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->primitivegroup(i), output); } // optional int32 granularity = 17 [default = 100]; if (_has_bit(2)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(17, this->granularity(), output); } // optional int32 date_granularity = 18 [default = 1000]; if (_has_bit(5)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(18, this->date_granularity(), output); } // optional int64 lat_offset = 19 [default = 0]; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(19, this->lat_offset(), output); } // optional int64 lon_offset = 20 [default = 0]; if (_has_bit(4)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(20, this->lon_offset(), output); } } int PrimitiveBlock::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .OSMPBF.StringTable stringtable = 1; if (has_stringtable()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->stringtable()); } // optional int32 granularity = 17 [default = 100]; if (has_granularity()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->granularity()); } // optional int64 lat_offset = 19 [default = 0]; if (has_lat_offset()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->lat_offset()); } // optional int64 lon_offset = 20 [default = 0]; if (has_lon_offset()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->lon_offset()); } // optional int32 date_granularity = 18 [default = 1000]; if (has_date_granularity()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->date_granularity()); } } // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2; total_size += 1 * this->primitivegroup_size(); for (int i = 0; i < this->primitivegroup_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->primitivegroup(i)); } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void PrimitiveBlock::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const PrimitiveBlock*>(&from)); } void PrimitiveBlock::MergeFrom(const PrimitiveBlock& from) { GOOGLE_CHECK_NE(&from, this); primitivegroup_.MergeFrom(from.primitivegroup_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { mutable_stringtable()->::OSMPBF::StringTable::MergeFrom(from.stringtable()); } if (from._has_bit(2)) { set_granularity(from.granularity()); } if (from._has_bit(3)) { set_lat_offset(from.lat_offset()); } if (from._has_bit(4)) { set_lon_offset(from.lon_offset()); } if (from._has_bit(5)) { set_date_granularity(from.date_granularity()); } } } void PrimitiveBlock::CopyFrom(const PrimitiveBlock& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool PrimitiveBlock::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; for (int i = 0; i < primitivegroup_size(); i++) { if (!this->primitivegroup(i).IsInitialized()) return false; } return true; } void PrimitiveBlock::Swap(PrimitiveBlock* other) { if (other != this) { std::swap(stringtable_, other->stringtable_); primitivegroup_.Swap(&other->primitivegroup_); std::swap(granularity_, other->granularity_); std::swap(lat_offset_, other->lat_offset_); std::swap(lon_offset_, other->lon_offset_); std::swap(date_granularity_, other->date_granularity_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string PrimitiveBlock::GetTypeName() const { return "OSMPBF.PrimitiveBlock"; } // =================================================================== #ifndef _MSC_VER const int PrimitiveGroup::kNodesFieldNumber; const int PrimitiveGroup::kDenseFieldNumber; const int PrimitiveGroup::kWaysFieldNumber; const int PrimitiveGroup::kRelationsFieldNumber; const int PrimitiveGroup::kChangesetsFieldNumber; #endif // !_MSC_VER PrimitiveGroup::PrimitiveGroup() : ::google::protobuf::MessageLite() { SharedCtor(); } void PrimitiveGroup::InitAsDefaultInstance() { dense_ = const_cast< ::OSMPBF::DenseNodes*>(&::OSMPBF::DenseNodes::default_instance()); } PrimitiveGroup::PrimitiveGroup(const PrimitiveGroup& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void PrimitiveGroup::SharedCtor() { _cached_size_ = 0; dense_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } PrimitiveGroup::~PrimitiveGroup() { SharedDtor(); } void PrimitiveGroup::SharedDtor() { if (this != default_instance_) { delete dense_; } } void PrimitiveGroup::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PrimitiveGroup& PrimitiveGroup::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } PrimitiveGroup* PrimitiveGroup::default_instance_ = NULL; PrimitiveGroup* PrimitiveGroup::New() const { return new PrimitiveGroup; } void PrimitiveGroup::Clear() { if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { if (_has_bit(1)) { if (dense_ != NULL) dense_->::OSMPBF::DenseNodes::Clear(); } } nodes_.Clear(); ways_.Clear(); relations_.Clear(); changesets_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool PrimitiveGroup::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // repeated .OSMPBF.Node nodes = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_nodes: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, add_nodes())); } else { goto handle_uninterpreted; } if (input->ExpectTag(10)) goto parse_nodes; if (input->ExpectTag(18)) goto parse_dense; break; } // optional .OSMPBF.DenseNodes dense = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_dense: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_dense())); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_ways; break; } // repeated .OSMPBF.Way ways = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_ways: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, add_ways())); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_ways; if (input->ExpectTag(34)) goto parse_relations; break; } // repeated .OSMPBF.Relation relations = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_relations: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, add_relations())); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_relations; if (input->ExpectTag(42)) goto parse_changesets; break; } // repeated .OSMPBF.ChangeSet changesets = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_changesets: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, add_changesets())); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_changesets; if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void PrimitiveGroup::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // repeated .OSMPBF.Node nodes = 1; for (int i = 0; i < this->nodes_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->nodes(i), output); } // optional .OSMPBF.DenseNodes dense = 2; if (_has_bit(1)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->dense(), output); } // repeated .OSMPBF.Way ways = 3; for (int i = 0; i < this->ways_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 3, this->ways(i), output); } // repeated .OSMPBF.Relation relations = 4; for (int i = 0; i < this->relations_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 4, this->relations(i), output); } // repeated .OSMPBF.ChangeSet changesets = 5; for (int i = 0; i < this->changesets_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 5, this->changesets(i), output); } } int PrimitiveGroup::ByteSize() const { int total_size = 0; if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { // optional .OSMPBF.DenseNodes dense = 2; if (has_dense()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->dense()); } } // repeated .OSMPBF.Node nodes = 1; total_size += 1 * this->nodes_size(); for (int i = 0; i < this->nodes_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->nodes(i)); } // repeated .OSMPBF.Way ways = 3; total_size += 1 * this->ways_size(); for (int i = 0; i < this->ways_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->ways(i)); } // repeated .OSMPBF.Relation relations = 4; total_size += 1 * this->relations_size(); for (int i = 0; i < this->relations_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->relations(i)); } // repeated .OSMPBF.ChangeSet changesets = 5; total_size += 1 * this->changesets_size(); for (int i = 0; i < this->changesets_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->changesets(i)); } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void PrimitiveGroup::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const PrimitiveGroup*>(&from)); } void PrimitiveGroup::MergeFrom(const PrimitiveGroup& from) { GOOGLE_CHECK_NE(&from, this); nodes_.MergeFrom(from.nodes_); ways_.MergeFrom(from.ways_); relations_.MergeFrom(from.relations_); changesets_.MergeFrom(from.changesets_); if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) { if (from._has_bit(1)) { mutable_dense()->::OSMPBF::DenseNodes::MergeFrom(from.dense()); } } } void PrimitiveGroup::CopyFrom(const PrimitiveGroup& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool PrimitiveGroup::IsInitialized() const { for (int i = 0; i < nodes_size(); i++) { if (!this->nodes(i).IsInitialized()) return false; } for (int i = 0; i < ways_size(); i++) { if (!this->ways(i).IsInitialized()) return false; } for (int i = 0; i < relations_size(); i++) { if (!this->relations(i).IsInitialized()) return false; } for (int i = 0; i < changesets_size(); i++) { if (!this->changesets(i).IsInitialized()) return false; } return true; } void PrimitiveGroup::Swap(PrimitiveGroup* other) { if (other != this) { nodes_.Swap(&other->nodes_); std::swap(dense_, other->dense_); ways_.Swap(&other->ways_); relations_.Swap(&other->relations_); changesets_.Swap(&other->changesets_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string PrimitiveGroup::GetTypeName() const { return "OSMPBF.PrimitiveGroup"; } // =================================================================== #ifndef _MSC_VER const int StringTable::kSFieldNumber; #endif // !_MSC_VER StringTable::StringTable() : ::google::protobuf::MessageLite() { SharedCtor(); } void StringTable::InitAsDefaultInstance() { } StringTable::StringTable(const StringTable& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void StringTable::SharedCtor() { _cached_size_ = 0; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } StringTable::~StringTable() { SharedDtor(); } void StringTable::SharedDtor() { if (this != default_instance_) { } } void StringTable::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const StringTable& StringTable::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } StringTable* StringTable::default_instance_ = NULL; StringTable* StringTable::New() const { return new StringTable; } void StringTable::Clear() { s_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool StringTable::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // repeated bytes s = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_s: DO_(::google::protobuf::internal::WireFormatLite::ReadBytes( input, this->add_s())); } else { goto handle_uninterpreted; } if (input->ExpectTag(10)) goto parse_s; if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void StringTable::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // repeated bytes s = 1; for (int i = 0; i < this->s_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->s(i), output); } } int StringTable::ByteSize() const { int total_size = 0; // repeated bytes s = 1; total_size += 1 * this->s_size(); for (int i = 0; i < this->s_size(); i++) { total_size += ::google::protobuf::internal::WireFormatLite::BytesSize( this->s(i)); } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void StringTable::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const StringTable*>(&from)); } void StringTable::MergeFrom(const StringTable& from) { GOOGLE_CHECK_NE(&from, this); s_.MergeFrom(from.s_); } void StringTable::CopyFrom(const StringTable& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool StringTable::IsInitialized() const { return true; } void StringTable::Swap(StringTable* other) { if (other != this) { s_.Swap(&other->s_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string StringTable::GetTypeName() const { return "OSMPBF.StringTable"; } // =================================================================== #ifndef _MSC_VER const int Info::kVersionFieldNumber; const int Info::kTimestampFieldNumber; const int Info::kChangesetFieldNumber; const int Info::kUidFieldNumber; const int Info::kUserSidFieldNumber; #endif // !_MSC_VER Info::Info() : ::google::protobuf::MessageLite() { SharedCtor(); } void Info::InitAsDefaultInstance() { } Info::Info(const Info& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void Info::SharedCtor() { _cached_size_ = 0; version_ = -1; timestamp_ = GOOGLE_LONGLONG(0); changeset_ = GOOGLE_LONGLONG(0); uid_ = 0; user_sid_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } Info::~Info() { SharedDtor(); } void Info::SharedDtor() { if (this != default_instance_) { } } void Info::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const Info& Info::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } Info* Info::default_instance_ = NULL; Info* Info::New() const { return new Info; } void Info::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { version_ = -1; timestamp_ = GOOGLE_LONGLONG(0); changeset_ = GOOGLE_LONGLONG(0); uid_ = 0; user_sid_ = 0u; } ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool Info::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // optional int32 version = 1 [default = -1]; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &version_))); _set_bit(0); } else { goto handle_uninterpreted; } if (input->ExpectTag(16)) goto parse_timestamp; break; } // optional int64 timestamp = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_timestamp: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, ×tamp_))); _set_bit(1); } else { goto handle_uninterpreted; } if (input->ExpectTag(24)) goto parse_changeset; break; } // optional int64 changeset = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_changeset: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &changeset_))); _set_bit(2); } else { goto handle_uninterpreted; } if (input->ExpectTag(32)) goto parse_uid; break; } // optional int32 uid = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_uid: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &uid_))); _set_bit(3); } else { goto handle_uninterpreted; } if (input->ExpectTag(40)) goto parse_user_sid; break; } // optional uint32 user_sid = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_user_sid: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, &user_sid_))); _set_bit(4); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void Info::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // optional int32 version = 1 [default = -1]; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->version(), output); } // optional int64 timestamp = 2; if (_has_bit(1)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->timestamp(), output); } // optional int64 changeset = 3; if (_has_bit(2)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->changeset(), output); } // optional int32 uid = 4; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->uid(), output); } // optional uint32 user_sid = 5; if (_has_bit(4)) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->user_sid(), output); } } int Info::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional int32 version = 1 [default = -1]; if (has_version()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->version()); } // optional int64 timestamp = 2; if (has_timestamp()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->timestamp()); } // optional int64 changeset = 3; if (has_changeset()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->changeset()); } // optional int32 uid = 4; if (has_uid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->uid()); } // optional uint32 user_sid = 5; if (has_user_sid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->user_sid()); } } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void Info::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const Info*>(&from)); } void Info::MergeFrom(const Info& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_version(from.version()); } if (from._has_bit(1)) { set_timestamp(from.timestamp()); } if (from._has_bit(2)) { set_changeset(from.changeset()); } if (from._has_bit(3)) { set_uid(from.uid()); } if (from._has_bit(4)) { set_user_sid(from.user_sid()); } } } void Info::CopyFrom(const Info& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool Info::IsInitialized() const { return true; } void Info::Swap(Info* other) { if (other != this) { std::swap(version_, other->version_); std::swap(timestamp_, other->timestamp_); std::swap(changeset_, other->changeset_); std::swap(uid_, other->uid_); std::swap(user_sid_, other->user_sid_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string Info::GetTypeName() const { return "OSMPBF.Info"; } // =================================================================== #ifndef _MSC_VER const int DenseInfo::kVersionFieldNumber; const int DenseInfo::kTimestampFieldNumber; const int DenseInfo::kChangesetFieldNumber; const int DenseInfo::kUidFieldNumber; const int DenseInfo::kUserSidFieldNumber; #endif // !_MSC_VER DenseInfo::DenseInfo() : ::google::protobuf::MessageLite() { SharedCtor(); } void DenseInfo::InitAsDefaultInstance() { } DenseInfo::DenseInfo(const DenseInfo& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void DenseInfo::SharedCtor() { _cached_size_ = 0; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } DenseInfo::~DenseInfo() { SharedDtor(); } void DenseInfo::SharedDtor() { if (this != default_instance_) { } } void DenseInfo::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const DenseInfo& DenseInfo::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } DenseInfo* DenseInfo::default_instance_ = NULL; DenseInfo* DenseInfo::New() const { return new DenseInfo; } void DenseInfo::Clear() { version_.Clear(); timestamp_.Clear(); changeset_.Clear(); uid_.Clear(); user_sid_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool DenseInfo::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // repeated int32 version = 1 [packed = true]; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, this->mutable_version()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( 1, 10, input, this->mutable_version()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_timestamp; break; } // repeated sint64 timestamp = 2 [packed = true]; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_timestamp: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_timestamp()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 18, input, this->mutable_timestamp()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_changeset; break; } // repeated sint64 changeset = 3 [packed = true]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_changeset: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_changeset()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 26, input, this->mutable_changeset()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_uid; break; } // repeated sint32 uid = 4 [packed = true]; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_uid: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>( input, this->mutable_uid()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>( 1, 34, input, this->mutable_uid()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_user_sid; break; } // repeated sint32 user_sid = 5 [packed = true]; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_user_sid: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>( input, this->mutable_user_sid()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>( 1, 42, input, this->mutable_user_sid()))); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void DenseInfo::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // repeated int32 version = 1 [packed = true]; if (this->version_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_version_cached_byte_size_); } for (int i = 0; i < this->version_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag( this->version(i), output); } // repeated sint64 timestamp = 2 [packed = true]; if (this->timestamp_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_timestamp_cached_byte_size_); } for (int i = 0; i < this->timestamp_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->timestamp(i), output); } // repeated sint64 changeset = 3 [packed = true]; if (this->changeset_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_changeset_cached_byte_size_); } for (int i = 0; i < this->changeset_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->changeset(i), output); } // repeated sint32 uid = 4 [packed = true]; if (this->uid_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_uid_cached_byte_size_); } for (int i = 0; i < this->uid_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag( this->uid(i), output); } // repeated sint32 user_sid = 5 [packed = true]; if (this->user_sid_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(5, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_user_sid_cached_byte_size_); } for (int i = 0; i < this->user_sid_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag( this->user_sid(i), output); } } int DenseInfo::ByteSize() const { int total_size = 0; // repeated int32 version = 1 [packed = true]; { int data_size = 0; for (int i = 0; i < this->version_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: Int32Size(this->version(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _version_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint64 timestamp = 2 [packed = true]; { int data_size = 0; for (int i = 0; i < this->timestamp_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->timestamp(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _timestamp_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint64 changeset = 3 [packed = true]; { int data_size = 0; for (int i = 0; i < this->changeset_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->changeset(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _changeset_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint32 uid = 4 [packed = true]; { int data_size = 0; for (int i = 0; i < this->uid_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt32Size(this->uid(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _uid_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint32 user_sid = 5 [packed = true]; { int data_size = 0; for (int i = 0; i < this->user_sid_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt32Size(this->user_sid(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _user_sid_cached_byte_size_ = data_size; total_size += data_size; } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void DenseInfo::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const DenseInfo*>(&from)); } void DenseInfo::MergeFrom(const DenseInfo& from) { GOOGLE_CHECK_NE(&from, this); version_.MergeFrom(from.version_); timestamp_.MergeFrom(from.timestamp_); changeset_.MergeFrom(from.changeset_); uid_.MergeFrom(from.uid_); user_sid_.MergeFrom(from.user_sid_); } void DenseInfo::CopyFrom(const DenseInfo& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool DenseInfo::IsInitialized() const { return true; } void DenseInfo::Swap(DenseInfo* other) { if (other != this) { version_.Swap(&other->version_); timestamp_.Swap(&other->timestamp_); changeset_.Swap(&other->changeset_); uid_.Swap(&other->uid_); user_sid_.Swap(&other->user_sid_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string DenseInfo::GetTypeName() const { return "OSMPBF.DenseInfo"; } // =================================================================== #ifndef _MSC_VER const int ChangeSet::kIdFieldNumber; #endif // !_MSC_VER ChangeSet::ChangeSet() : ::google::protobuf::MessageLite() { SharedCtor(); } void ChangeSet::InitAsDefaultInstance() { } ChangeSet::ChangeSet(const ChangeSet& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void ChangeSet::SharedCtor() { _cached_size_ = 0; id_ = GOOGLE_LONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } ChangeSet::~ChangeSet() { SharedDtor(); } void ChangeSet::SharedDtor() { if (this != default_instance_) { } } void ChangeSet::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ChangeSet& ChangeSet::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } ChangeSet* ChangeSet::default_instance_ = NULL; ChangeSet* ChangeSet::New() const { return new ChangeSet; } void ChangeSet::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { id_ = GOOGLE_LONGLONG(0); } ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool ChangeSet::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required int64 id = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &id_))); _set_bit(0); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void ChangeSet::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required int64 id = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->id(), output); } } int ChangeSet::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required int64 id = 1; if (has_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->id()); } } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void ChangeSet::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const ChangeSet*>(&from)); } void ChangeSet::MergeFrom(const ChangeSet& from) { GOOGLE_CHECK_NE(&from, this); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_id(from.id()); } } } void ChangeSet::CopyFrom(const ChangeSet& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool ChangeSet::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; return true; } void ChangeSet::Swap(ChangeSet* other) { if (other != this) { std::swap(id_, other->id_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string ChangeSet::GetTypeName() const { return "OSMPBF.ChangeSet"; } // =================================================================== #ifndef _MSC_VER const int Node::kIdFieldNumber; const int Node::kKeysFieldNumber; const int Node::kValsFieldNumber; const int Node::kInfoFieldNumber; const int Node::kLatFieldNumber; const int Node::kLonFieldNumber; #endif // !_MSC_VER Node::Node() : ::google::protobuf::MessageLite() { SharedCtor(); } void Node::InitAsDefaultInstance() { info_ = const_cast< ::OSMPBF::Info*>(&::OSMPBF::Info::default_instance()); } Node::Node(const Node& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void Node::SharedCtor() { _cached_size_ = 0; id_ = GOOGLE_LONGLONG(0); info_ = NULL; lat_ = GOOGLE_LONGLONG(0); lon_ = GOOGLE_LONGLONG(0); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } Node::~Node() { SharedDtor(); } void Node::SharedDtor() { if (this != default_instance_) { delete info_; } } void Node::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const Node& Node::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } Node* Node::default_instance_ = NULL; Node* Node::New() const { return new Node; } void Node::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { id_ = GOOGLE_LONGLONG(0); if (_has_bit(3)) { if (info_ != NULL) info_->::OSMPBF::Info::Clear(); } lat_ = GOOGLE_LONGLONG(0); lon_ = GOOGLE_LONGLONG(0); } keys_.Clear(); vals_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool Node::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required sint64 id = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &id_))); _set_bit(0); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_keys; break; } // repeated uint32 keys = 2 [packed = true]; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_keys: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, this->mutable_keys()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( 1, 18, input, this->mutable_keys()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_vals; break; } // repeated uint32 vals = 3 [packed = true]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_vals: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, this->mutable_vals()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( 1, 26, input, this->mutable_vals()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_info; break; } // optional .OSMPBF.Info info = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_info: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_info())); } else { goto handle_uninterpreted; } if (input->ExpectTag(64)) goto parse_lat; break; } // required sint64 lat = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_lat: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &lat_))); _set_bit(4); } else { goto handle_uninterpreted; } if (input->ExpectTag(72)) goto parse_lon; break; } // required sint64 lon = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_lon: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, &lon_))); _set_bit(5); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void Node::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required sint64 id = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(1, this->id(), output); } // repeated uint32 keys = 2 [packed = true]; if (this->keys_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_keys_cached_byte_size_); } for (int i = 0; i < this->keys_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->keys(i), output); } // repeated uint32 vals = 3 [packed = true]; if (this->vals_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_vals_cached_byte_size_); } for (int i = 0; i < this->vals_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->vals(i), output); } // optional .OSMPBF.Info info = 4; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 4, this->info(), output); } // required sint64 lat = 8; if (_has_bit(4)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(8, this->lat(), output); } // required sint64 lon = 9; if (_has_bit(5)) { ::google::protobuf::internal::WireFormatLite::WriteSInt64(9, this->lon(), output); } } int Node::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required sint64 id = 1; if (has_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->id()); } // optional .OSMPBF.Info info = 4; if (has_info()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->info()); } // required sint64 lat = 8; if (has_lat()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->lat()); } // required sint64 lon = 9; if (has_lon()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::SInt64Size( this->lon()); } } // repeated uint32 keys = 2 [packed = true]; { int data_size = 0; for (int i = 0; i < this->keys_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: UInt32Size(this->keys(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _keys_cached_byte_size_ = data_size; total_size += data_size; } // repeated uint32 vals = 3 [packed = true]; { int data_size = 0; for (int i = 0; i < this->vals_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: UInt32Size(this->vals(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _vals_cached_byte_size_ = data_size; total_size += data_size; } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void Node::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const Node*>(&from)); } void Node::MergeFrom(const Node& from) { GOOGLE_CHECK_NE(&from, this); keys_.MergeFrom(from.keys_); vals_.MergeFrom(from.vals_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_id(from.id()); } if (from._has_bit(3)) { mutable_info()->::OSMPBF::Info::MergeFrom(from.info()); } if (from._has_bit(4)) { set_lat(from.lat()); } if (from._has_bit(5)) { set_lon(from.lon()); } } } void Node::CopyFrom(const Node& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool Node::IsInitialized() const { if ((_has_bits_[0] & 0x00000031) != 0x00000031) return false; return true; } void Node::Swap(Node* other) { if (other != this) { std::swap(id_, other->id_); keys_.Swap(&other->keys_); vals_.Swap(&other->vals_); std::swap(info_, other->info_); std::swap(lat_, other->lat_); std::swap(lon_, other->lon_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string Node::GetTypeName() const { return "OSMPBF.Node"; } // =================================================================== #ifndef _MSC_VER const int DenseNodes::kIdFieldNumber; const int DenseNodes::kDenseinfoFieldNumber; const int DenseNodes::kLatFieldNumber; const int DenseNodes::kLonFieldNumber; const int DenseNodes::kKeysValsFieldNumber; #endif // !_MSC_VER DenseNodes::DenseNodes() : ::google::protobuf::MessageLite() { SharedCtor(); } void DenseNodes::InitAsDefaultInstance() { denseinfo_ = const_cast< ::OSMPBF::DenseInfo*>(&::OSMPBF::DenseInfo::default_instance()); } DenseNodes::DenseNodes(const DenseNodes& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void DenseNodes::SharedCtor() { _cached_size_ = 0; denseinfo_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } DenseNodes::~DenseNodes() { SharedDtor(); } void DenseNodes::SharedDtor() { if (this != default_instance_) { delete denseinfo_; } } void DenseNodes::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const DenseNodes& DenseNodes::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } DenseNodes* DenseNodes::default_instance_ = NULL; DenseNodes* DenseNodes::New() const { return new DenseNodes; } void DenseNodes::Clear() { if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { if (_has_bit(1)) { if (denseinfo_ != NULL) denseinfo_->::OSMPBF::DenseInfo::Clear(); } } id_.Clear(); lat_.Clear(); lon_.Clear(); keys_vals_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool DenseNodes::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // repeated sint64 id = 1 [packed = true]; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_id()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 10, input, this->mutable_id()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(42)) goto parse_denseinfo; break; } // optional .OSMPBF.DenseInfo denseinfo = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_denseinfo: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_denseinfo())); } else { goto handle_uninterpreted; } if (input->ExpectTag(66)) goto parse_lat; break; } // repeated sint64 lat = 8 [packed = true]; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_lat: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_lat()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 66, input, this->mutable_lat()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(74)) goto parse_lon; break; } // repeated sint64 lon = 9 [packed = true]; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_lon: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_lon()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 74, input, this->mutable_lon()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(82)) goto parse_keys_vals; break; } // repeated int32 keys_vals = 10 [packed = true]; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_keys_vals: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, this->mutable_keys_vals()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( 1, 82, input, this->mutable_keys_vals()))); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void DenseNodes::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // repeated sint64 id = 1 [packed = true]; if (this->id_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_id_cached_byte_size_); } for (int i = 0; i < this->id_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->id(i), output); } // optional .OSMPBF.DenseInfo denseinfo = 5; if (_has_bit(1)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 5, this->denseinfo(), output); } // repeated sint64 lat = 8 [packed = true]; if (this->lat_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_lat_cached_byte_size_); } for (int i = 0; i < this->lat_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->lat(i), output); } // repeated sint64 lon = 9 [packed = true]; if (this->lon_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(9, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_lon_cached_byte_size_); } for (int i = 0; i < this->lon_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->lon(i), output); } // repeated int32 keys_vals = 10 [packed = true]; if (this->keys_vals_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(10, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_keys_vals_cached_byte_size_); } for (int i = 0; i < this->keys_vals_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag( this->keys_vals(i), output); } } int DenseNodes::ByteSize() const { int total_size = 0; if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) { // optional .OSMPBF.DenseInfo denseinfo = 5; if (has_denseinfo()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->denseinfo()); } } // repeated sint64 id = 1 [packed = true]; { int data_size = 0; for (int i = 0; i < this->id_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->id(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _id_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint64 lat = 8 [packed = true]; { int data_size = 0; for (int i = 0; i < this->lat_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->lat(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _lat_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint64 lon = 9 [packed = true]; { int data_size = 0; for (int i = 0; i < this->lon_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->lon(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _lon_cached_byte_size_ = data_size; total_size += data_size; } // repeated int32 keys_vals = 10 [packed = true]; { int data_size = 0; for (int i = 0; i < this->keys_vals_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: Int32Size(this->keys_vals(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _keys_vals_cached_byte_size_ = data_size; total_size += data_size; } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void DenseNodes::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const DenseNodes*>(&from)); } void DenseNodes::MergeFrom(const DenseNodes& from) { GOOGLE_CHECK_NE(&from, this); id_.MergeFrom(from.id_); lat_.MergeFrom(from.lat_); lon_.MergeFrom(from.lon_); keys_vals_.MergeFrom(from.keys_vals_); if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) { if (from._has_bit(1)) { mutable_denseinfo()->::OSMPBF::DenseInfo::MergeFrom(from.denseinfo()); } } } void DenseNodes::CopyFrom(const DenseNodes& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool DenseNodes::IsInitialized() const { return true; } void DenseNodes::Swap(DenseNodes* other) { if (other != this) { id_.Swap(&other->id_); std::swap(denseinfo_, other->denseinfo_); lat_.Swap(&other->lat_); lon_.Swap(&other->lon_); keys_vals_.Swap(&other->keys_vals_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string DenseNodes::GetTypeName() const { return "OSMPBF.DenseNodes"; } // =================================================================== #ifndef _MSC_VER const int Way::kIdFieldNumber; const int Way::kKeysFieldNumber; const int Way::kValsFieldNumber; const int Way::kInfoFieldNumber; const int Way::kRefsFieldNumber; #endif // !_MSC_VER Way::Way() : ::google::protobuf::MessageLite() { SharedCtor(); } void Way::InitAsDefaultInstance() { info_ = const_cast< ::OSMPBF::Info*>(&::OSMPBF::Info::default_instance()); } Way::Way(const Way& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void Way::SharedCtor() { _cached_size_ = 0; id_ = GOOGLE_LONGLONG(0); info_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } Way::~Way() { SharedDtor(); } void Way::SharedDtor() { if (this != default_instance_) { delete info_; } } void Way::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const Way& Way::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } Way* Way::default_instance_ = NULL; Way* Way::New() const { return new Way; } void Way::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { id_ = GOOGLE_LONGLONG(0); if (_has_bit(3)) { if (info_ != NULL) info_->::OSMPBF::Info::Clear(); } } keys_.Clear(); vals_.Clear(); refs_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool Way::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required int64 id = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &id_))); _set_bit(0); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_keys; break; } // repeated uint32 keys = 2 [packed = true]; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_keys: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, this->mutable_keys()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( 1, 18, input, this->mutable_keys()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_vals; break; } // repeated uint32 vals = 3 [packed = true]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_vals: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, this->mutable_vals()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( 1, 26, input, this->mutable_vals()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_info; break; } // optional .OSMPBF.Info info = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_info: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_info())); } else { goto handle_uninterpreted; } if (input->ExpectTag(66)) goto parse_refs; break; } // repeated sint64 refs = 8 [packed = true]; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_refs: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_refs()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 66, input, this->mutable_refs()))); } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void Way::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required int64 id = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->id(), output); } // repeated uint32 keys = 2 [packed = true]; if (this->keys_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_keys_cached_byte_size_); } for (int i = 0; i < this->keys_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->keys(i), output); } // repeated uint32 vals = 3 [packed = true]; if (this->vals_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_vals_cached_byte_size_); } for (int i = 0; i < this->vals_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->vals(i), output); } // optional .OSMPBF.Info info = 4; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 4, this->info(), output); } // repeated sint64 refs = 8 [packed = true]; if (this->refs_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_refs_cached_byte_size_); } for (int i = 0; i < this->refs_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->refs(i), output); } } int Way::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required int64 id = 1; if (has_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->id()); } // optional .OSMPBF.Info info = 4; if (has_info()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->info()); } } // repeated uint32 keys = 2 [packed = true]; { int data_size = 0; for (int i = 0; i < this->keys_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: UInt32Size(this->keys(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _keys_cached_byte_size_ = data_size; total_size += data_size; } // repeated uint32 vals = 3 [packed = true]; { int data_size = 0; for (int i = 0; i < this->vals_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: UInt32Size(this->vals(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _vals_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint64 refs = 8 [packed = true]; { int data_size = 0; for (int i = 0; i < this->refs_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->refs(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _refs_cached_byte_size_ = data_size; total_size += data_size; } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void Way::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const Way*>(&from)); } void Way::MergeFrom(const Way& from) { GOOGLE_CHECK_NE(&from, this); keys_.MergeFrom(from.keys_); vals_.MergeFrom(from.vals_); refs_.MergeFrom(from.refs_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_id(from.id()); } if (from._has_bit(3)) { mutable_info()->::OSMPBF::Info::MergeFrom(from.info()); } } } void Way::CopyFrom(const Way& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool Way::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; return true; } void Way::Swap(Way* other) { if (other != this) { std::swap(id_, other->id_); keys_.Swap(&other->keys_); vals_.Swap(&other->vals_); std::swap(info_, other->info_); refs_.Swap(&other->refs_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string Way::GetTypeName() const { return "OSMPBF.Way"; } // =================================================================== bool Relation_MemberType_IsValid(int value) { switch(value) { case 0: case 1: case 2: return true; default: return false; } } #ifndef _MSC_VER const Relation_MemberType Relation::NODE; const Relation_MemberType Relation::WAY; const Relation_MemberType Relation::RELATION; const Relation_MemberType Relation::MemberType_MIN; const Relation_MemberType Relation::MemberType_MAX; const int Relation::MemberType_ARRAYSIZE; #endif // _MSC_VER #ifndef _MSC_VER const int Relation::kIdFieldNumber; const int Relation::kKeysFieldNumber; const int Relation::kValsFieldNumber; const int Relation::kInfoFieldNumber; const int Relation::kRolesSidFieldNumber; const int Relation::kMemidsFieldNumber; const int Relation::kTypesFieldNumber; #endif // !_MSC_VER Relation::Relation() : ::google::protobuf::MessageLite() { SharedCtor(); } void Relation::InitAsDefaultInstance() { info_ = const_cast< ::OSMPBF::Info*>(&::OSMPBF::Info::default_instance()); } Relation::Relation(const Relation& from) : ::google::protobuf::MessageLite() { SharedCtor(); MergeFrom(from); } void Relation::SharedCtor() { _cached_size_ = 0; id_ = GOOGLE_LONGLONG(0); info_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } Relation::~Relation() { SharedDtor(); } void Relation::SharedDtor() { if (this != default_instance_) { delete info_; } } void Relation::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const Relation& Relation::default_instance() { if (default_instance_ == NULL) protobuf_AddDesc_osmformat_2eproto(); return *default_instance_; } Relation* Relation::default_instance_ = NULL; Relation* Relation::New() const { return new Relation; } void Relation::Clear() { if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { id_ = GOOGLE_LONGLONG(0); if (_has_bit(3)) { if (info_ != NULL) info_->::OSMPBF::Info::Clear(); } } keys_.Clear(); vals_.Clear(); roles_sid_.Clear(); memids_.Clear(); types_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } bool Relation::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!(EXPRESSION)) return false ::google::protobuf::uint32 tag; while ((tag = input->ReadTag()) != 0) { switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { // required int64 id = 1; case 1: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( input, &id_))); _set_bit(0); } else { goto handle_uninterpreted; } if (input->ExpectTag(18)) goto parse_keys; break; } // repeated uint32 keys = 2 [packed = true]; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_keys: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, this->mutable_keys()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( 1, 18, input, this->mutable_keys()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(26)) goto parse_vals; break; } // repeated uint32 vals = 3 [packed = true]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_vals: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( input, this->mutable_vals()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( 1, 26, input, this->mutable_vals()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(34)) goto parse_info; break; } // optional .OSMPBF.Info info = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_info: DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( input, mutable_info())); } else { goto handle_uninterpreted; } if (input->ExpectTag(66)) goto parse_roles_sid; break; } // repeated int32 roles_sid = 8 [packed = true]; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_roles_sid: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, this->mutable_roles_sid()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( 1, 66, input, this->mutable_roles_sid()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(74)) goto parse_memids; break; } // repeated sint64 memids = 9 [packed = true]; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_memids: DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( input, this->mutable_memids()))); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>( 1, 74, input, this->mutable_memids()))); } else { goto handle_uninterpreted; } if (input->ExpectTag(82)) goto parse_types; break; } // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true]; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { parse_types: ::google::protobuf::uint32 length; DO_(input->ReadVarint32(&length)); ::google::protobuf::io::CodedInputStream::Limit limit = input->PushLimit(length); while (input->BytesUntilLimit() > 0) { int value; DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); if (::OSMPBF::Relation_MemberType_IsValid(value)) { add_types(static_cast< ::OSMPBF::Relation_MemberType >(value)); } } input->PopLimit(limit); } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_VARINT) { int value; DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); if (::OSMPBF::Relation_MemberType_IsValid(value)) { add_types(static_cast< ::OSMPBF::Relation_MemberType >(value)); } } else { goto handle_uninterpreted; } if (input->ExpectAtEnd()) return true; break; } default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { return true; } DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); break; } } } return true; #undef DO_ } void Relation::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { // required int64 id = 1; if (_has_bit(0)) { ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->id(), output); } // repeated uint32 keys = 2 [packed = true]; if (this->keys_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_keys_cached_byte_size_); } for (int i = 0; i < this->keys_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->keys(i), output); } // repeated uint32 vals = 3 [packed = true]; if (this->vals_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_vals_cached_byte_size_); } for (int i = 0; i < this->vals_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->vals(i), output); } // optional .OSMPBF.Info info = 4; if (_has_bit(3)) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 4, this->info(), output); } // repeated int32 roles_sid = 8 [packed = true]; if (this->roles_sid_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_roles_sid_cached_byte_size_); } for (int i = 0; i < this->roles_sid_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag( this->roles_sid(i), output); } // repeated sint64 memids = 9 [packed = true]; if (this->memids_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(9, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_memids_cached_byte_size_); } for (int i = 0; i < this->memids_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag( this->memids(i), output); } // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true]; if (this->types_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag( 10, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); output->WriteVarint32(_types_cached_byte_size_); } for (int i = 0; i < this->types_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteEnumNoTag( this->types(i), output); } } int Relation::ByteSize() const { int total_size = 0; if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required int64 id = 1; if (has_id()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int64Size( this->id()); } // optional .OSMPBF.Info info = 4; if (has_info()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->info()); } } // repeated uint32 keys = 2 [packed = true]; { int data_size = 0; for (int i = 0; i < this->keys_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: UInt32Size(this->keys(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _keys_cached_byte_size_ = data_size; total_size += data_size; } // repeated uint32 vals = 3 [packed = true]; { int data_size = 0; for (int i = 0; i < this->vals_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: UInt32Size(this->vals(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _vals_cached_byte_size_ = data_size; total_size += data_size; } // repeated int32 roles_sid = 8 [packed = true]; { int data_size = 0; for (int i = 0; i < this->roles_sid_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: Int32Size(this->roles_sid(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _roles_sid_cached_byte_size_ = data_size; total_size += data_size; } // repeated sint64 memids = 9 [packed = true]; { int data_size = 0; for (int i = 0; i < this->memids_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite:: SInt64Size(this->memids(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _memids_cached_byte_size_ = data_size; total_size += data_size; } // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true]; { int data_size = 0; for (int i = 0; i < this->types_size(); i++) { data_size += ::google::protobuf::internal::WireFormatLite::EnumSize( this->types(i)); } if (data_size > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } _types_cached_byte_size_ = data_size; total_size += data_size; } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); return total_size; } void Relation::CheckTypeAndMergeFrom( const ::google::protobuf::MessageLite& from) { MergeFrom(*::google::protobuf::down_cast<const Relation*>(&from)); } void Relation::MergeFrom(const Relation& from) { GOOGLE_CHECK_NE(&from, this); keys_.MergeFrom(from.keys_); vals_.MergeFrom(from.vals_); roles_sid_.MergeFrom(from.roles_sid_); memids_.MergeFrom(from.memids_); types_.MergeFrom(from.types_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_id(from.id()); } if (from._has_bit(3)) { mutable_info()->::OSMPBF::Info::MergeFrom(from.info()); } } } void Relation::CopyFrom(const Relation& from) { if (&from == this) return; Clear(); MergeFrom(from); } bool Relation::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; return true; } void Relation::Swap(Relation* other) { if (other != this) { std::swap(id_, other->id_); keys_.Swap(&other->keys_); vals_.Swap(&other->vals_); std::swap(info_, other->info_); roles_sid_.Swap(&other->roles_sid_); memids_.Swap(&other->memids_); types_.Swap(&other->types_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } } ::std::string Relation::GetTypeName() const { return "OSMPBF.Relation"; } // @@protoc_insertion_point(namespace_scope) } // namespace OSMPBF // @@protoc_insertion_point(global_scope) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/osmformat.pb.h���������������������������������������������������0000664�0000000�0000000�00000257167�11770671653�0022032�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Generated by the protocol buffer compiler. DO NOT EDIT! // source: osmformat.proto #ifndef PROTOBUF_osmformat_2eproto__INCLUDED #define PROTOBUF_osmformat_2eproto__INCLUDED #include <string> #include <google/protobuf/stubs/common.h> #if GOOGLE_PROTOBUF_VERSION < 2003000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif #if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include <google/protobuf/generated_message_util.h> #include <google/protobuf/repeated_field.h> #include <google/protobuf/extension_set.h> // @@protoc_insertion_point(includes) namespace OSMPBF { // Internal implementation detail -- do not call these. void protobuf_AddDesc_osmformat_2eproto(); void protobuf_AssignDesc_osmformat_2eproto(); void protobuf_ShutdownFile_osmformat_2eproto(); class HeaderBlock; class HeaderBBox; class PrimitiveBlock; class PrimitiveGroup; class StringTable; class Info; class DenseInfo; class ChangeSet; class Node; class DenseNodes; class Way; class Relation; enum Relation_MemberType { Relation_MemberType_NODE = 0, Relation_MemberType_WAY = 1, Relation_MemberType_RELATION = 2 }; bool Relation_MemberType_IsValid(int value); const Relation_MemberType Relation_MemberType_MemberType_MIN = Relation_MemberType_NODE; const Relation_MemberType Relation_MemberType_MemberType_MAX = Relation_MemberType_RELATION; const int Relation_MemberType_MemberType_ARRAYSIZE = Relation_MemberType_MemberType_MAX + 1; // =================================================================== class HeaderBlock : public ::google::protobuf::MessageLite { public: HeaderBlock(); virtual ~HeaderBlock(); HeaderBlock(const HeaderBlock& from); inline HeaderBlock& operator=(const HeaderBlock& from) { CopyFrom(from); return *this; } static const HeaderBlock& default_instance(); void Swap(HeaderBlock* other); // implements Message ---------------------------------------------- HeaderBlock* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const HeaderBlock& from); void MergeFrom(const HeaderBlock& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // optional .OSMPBF.HeaderBBox bbox = 1; inline bool has_bbox() const; inline void clear_bbox(); static const int kBboxFieldNumber = 1; inline const ::OSMPBF::HeaderBBox& bbox() const; inline ::OSMPBF::HeaderBBox* mutable_bbox(); // repeated string required_features = 4; inline int required_features_size() const; inline void clear_required_features(); static const int kRequiredFeaturesFieldNumber = 4; inline const ::std::string& required_features(int index) const; inline ::std::string* mutable_required_features(int index); inline void set_required_features(int index, const ::std::string& value); inline void set_required_features(int index, const char* value); inline void set_required_features(int index, const char* value, size_t size); inline ::std::string* add_required_features(); inline void add_required_features(const ::std::string& value); inline void add_required_features(const char* value); inline void add_required_features(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& required_features() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_required_features(); // repeated string optional_features = 5; inline int optional_features_size() const; inline void clear_optional_features(); static const int kOptionalFeaturesFieldNumber = 5; inline const ::std::string& optional_features(int index) const; inline ::std::string* mutable_optional_features(int index); inline void set_optional_features(int index, const ::std::string& value); inline void set_optional_features(int index, const char* value); inline void set_optional_features(int index, const char* value, size_t size); inline ::std::string* add_optional_features(); inline void add_optional_features(const ::std::string& value); inline void add_optional_features(const char* value); inline void add_optional_features(const char* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& optional_features() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_optional_features(); // optional string writingprogram = 16; inline bool has_writingprogram() const; inline void clear_writingprogram(); static const int kWritingprogramFieldNumber = 16; inline const ::std::string& writingprogram() const; inline void set_writingprogram(const ::std::string& value); inline void set_writingprogram(const char* value); inline void set_writingprogram(const char* value, size_t size); inline ::std::string* mutable_writingprogram(); // optional string source = 17; inline bool has_source() const; inline void clear_source(); static const int kSourceFieldNumber = 17; inline const ::std::string& source() const; inline void set_source(const ::std::string& value); inline void set_source(const char* value); inline void set_source(const char* value, size_t size); inline ::std::string* mutable_source(); // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBlock) private: mutable int _cached_size_; ::OSMPBF::HeaderBBox* bbox_; ::google::protobuf::RepeatedPtrField< ::std::string> required_features_; ::google::protobuf::RepeatedPtrField< ::std::string> optional_features_; ::std::string* writingprogram_; static const ::std::string _default_writingprogram_; ::std::string* source_; static const ::std::string _default_source_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static HeaderBlock* default_instance_; }; // ------------------------------------------------------------------- class HeaderBBox : public ::google::protobuf::MessageLite { public: HeaderBBox(); virtual ~HeaderBBox(); HeaderBBox(const HeaderBBox& from); inline HeaderBBox& operator=(const HeaderBBox& from) { CopyFrom(from); return *this; } static const HeaderBBox& default_instance(); void Swap(HeaderBBox* other); // implements Message ---------------------------------------------- HeaderBBox* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const HeaderBBox& from); void MergeFrom(const HeaderBBox& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // required sint64 left = 1; inline bool has_left() const; inline void clear_left(); static const int kLeftFieldNumber = 1; inline ::google::protobuf::int64 left() const; inline void set_left(::google::protobuf::int64 value); // required sint64 right = 2; inline bool has_right() const; inline void clear_right(); static const int kRightFieldNumber = 2; inline ::google::protobuf::int64 right() const; inline void set_right(::google::protobuf::int64 value); // required sint64 top = 3; inline bool has_top() const; inline void clear_top(); static const int kTopFieldNumber = 3; inline ::google::protobuf::int64 top() const; inline void set_top(::google::protobuf::int64 value); // required sint64 bottom = 4; inline bool has_bottom() const; inline void clear_bottom(); static const int kBottomFieldNumber = 4; inline ::google::protobuf::int64 bottom() const; inline void set_bottom(::google::protobuf::int64 value); // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBBox) private: mutable int _cached_size_; ::google::protobuf::int64 left_; ::google::protobuf::int64 right_; ::google::protobuf::int64 top_; ::google::protobuf::int64 bottom_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static HeaderBBox* default_instance_; }; // ------------------------------------------------------------------- class PrimitiveBlock : public ::google::protobuf::MessageLite { public: PrimitiveBlock(); virtual ~PrimitiveBlock(); PrimitiveBlock(const PrimitiveBlock& from); inline PrimitiveBlock& operator=(const PrimitiveBlock& from) { CopyFrom(from); return *this; } static const PrimitiveBlock& default_instance(); void Swap(PrimitiveBlock* other); // implements Message ---------------------------------------------- PrimitiveBlock* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PrimitiveBlock& from); void MergeFrom(const PrimitiveBlock& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // required .OSMPBF.StringTable stringtable = 1; inline bool has_stringtable() const; inline void clear_stringtable(); static const int kStringtableFieldNumber = 1; inline const ::OSMPBF::StringTable& stringtable() const; inline ::OSMPBF::StringTable* mutable_stringtable(); // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2; inline int primitivegroup_size() const; inline void clear_primitivegroup(); static const int kPrimitivegroupFieldNumber = 2; inline const ::OSMPBF::PrimitiveGroup& primitivegroup(int index) const; inline ::OSMPBF::PrimitiveGroup* mutable_primitivegroup(int index); inline ::OSMPBF::PrimitiveGroup* add_primitivegroup(); inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >& primitivegroup() const; inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >* mutable_primitivegroup(); // optional int32 granularity = 17 [default = 100]; inline bool has_granularity() const; inline void clear_granularity(); static const int kGranularityFieldNumber = 17; inline ::google::protobuf::int32 granularity() const; inline void set_granularity(::google::protobuf::int32 value); // optional int64 lat_offset = 19 [default = 0]; inline bool has_lat_offset() const; inline void clear_lat_offset(); static const int kLatOffsetFieldNumber = 19; inline ::google::protobuf::int64 lat_offset() const; inline void set_lat_offset(::google::protobuf::int64 value); // optional int64 lon_offset = 20 [default = 0]; inline bool has_lon_offset() const; inline void clear_lon_offset(); static const int kLonOffsetFieldNumber = 20; inline ::google::protobuf::int64 lon_offset() const; inline void set_lon_offset(::google::protobuf::int64 value); // optional int32 date_granularity = 18 [default = 1000]; inline bool has_date_granularity() const; inline void clear_date_granularity(); static const int kDateGranularityFieldNumber = 18; inline ::google::protobuf::int32 date_granularity() const; inline void set_date_granularity(::google::protobuf::int32 value); // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveBlock) private: mutable int _cached_size_; ::OSMPBF::StringTable* stringtable_; ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup > primitivegroup_; ::google::protobuf::int32 granularity_; ::google::protobuf::int64 lat_offset_; ::google::protobuf::int64 lon_offset_; ::google::protobuf::int32 date_granularity_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static PrimitiveBlock* default_instance_; }; // ------------------------------------------------------------------- class PrimitiveGroup : public ::google::protobuf::MessageLite { public: PrimitiveGroup(); virtual ~PrimitiveGroup(); PrimitiveGroup(const PrimitiveGroup& from); inline PrimitiveGroup& operator=(const PrimitiveGroup& from) { CopyFrom(from); return *this; } static const PrimitiveGroup& default_instance(); void Swap(PrimitiveGroup* other); // implements Message ---------------------------------------------- PrimitiveGroup* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PrimitiveGroup& from); void MergeFrom(const PrimitiveGroup& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // repeated .OSMPBF.Node nodes = 1; inline int nodes_size() const; inline void clear_nodes(); static const int kNodesFieldNumber = 1; inline const ::OSMPBF::Node& nodes(int index) const; inline ::OSMPBF::Node* mutable_nodes(int index); inline ::OSMPBF::Node* add_nodes(); inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >& nodes() const; inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >* mutable_nodes(); // optional .OSMPBF.DenseNodes dense = 2; inline bool has_dense() const; inline void clear_dense(); static const int kDenseFieldNumber = 2; inline const ::OSMPBF::DenseNodes& dense() const; inline ::OSMPBF::DenseNodes* mutable_dense(); // repeated .OSMPBF.Way ways = 3; inline int ways_size() const; inline void clear_ways(); static const int kWaysFieldNumber = 3; inline const ::OSMPBF::Way& ways(int index) const; inline ::OSMPBF::Way* mutable_ways(int index); inline ::OSMPBF::Way* add_ways(); inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >& ways() const; inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >* mutable_ways(); // repeated .OSMPBF.Relation relations = 4; inline int relations_size() const; inline void clear_relations(); static const int kRelationsFieldNumber = 4; inline const ::OSMPBF::Relation& relations(int index) const; inline ::OSMPBF::Relation* mutable_relations(int index); inline ::OSMPBF::Relation* add_relations(); inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >& relations() const; inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >* mutable_relations(); // repeated .OSMPBF.ChangeSet changesets = 5; inline int changesets_size() const; inline void clear_changesets(); static const int kChangesetsFieldNumber = 5; inline const ::OSMPBF::ChangeSet& changesets(int index) const; inline ::OSMPBF::ChangeSet* mutable_changesets(int index); inline ::OSMPBF::ChangeSet* add_changesets(); inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >& changesets() const; inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >* mutable_changesets(); // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveGroup) private: mutable int _cached_size_; ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node > nodes_; ::OSMPBF::DenseNodes* dense_; ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way > ways_; ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation > relations_; ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet > changesets_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static PrimitiveGroup* default_instance_; }; // ------------------------------------------------------------------- class StringTable : public ::google::protobuf::MessageLite { public: StringTable(); virtual ~StringTable(); StringTable(const StringTable& from); inline StringTable& operator=(const StringTable& from) { CopyFrom(from); return *this; } static const StringTable& default_instance(); void Swap(StringTable* other); // implements Message ---------------------------------------------- StringTable* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const StringTable& from); void MergeFrom(const StringTable& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // repeated bytes s = 1; inline int s_size() const; inline void clear_s(); static const int kSFieldNumber = 1; inline const ::std::string& s(int index) const; inline ::std::string* mutable_s(int index); inline void set_s(int index, const ::std::string& value); inline void set_s(int index, const char* value); inline void set_s(int index, const void* value, size_t size); inline ::std::string* add_s(); inline void add_s(const ::std::string& value); inline void add_s(const char* value); inline void add_s(const void* value, size_t size); inline const ::google::protobuf::RepeatedPtrField< ::std::string>& s() const; inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_s(); // @@protoc_insertion_point(class_scope:OSMPBF.StringTable) private: mutable int _cached_size_; ::google::protobuf::RepeatedPtrField< ::std::string> s_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static StringTable* default_instance_; }; // ------------------------------------------------------------------- class Info : public ::google::protobuf::MessageLite { public: Info(); virtual ~Info(); Info(const Info& from); inline Info& operator=(const Info& from) { CopyFrom(from); return *this; } static const Info& default_instance(); void Swap(Info* other); // implements Message ---------------------------------------------- Info* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const Info& from); void MergeFrom(const Info& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // optional int32 version = 1 [default = -1]; inline bool has_version() const; inline void clear_version(); static const int kVersionFieldNumber = 1; inline ::google::protobuf::int32 version() const; inline void set_version(::google::protobuf::int32 value); // optional int64 timestamp = 2; inline bool has_timestamp() const; inline void clear_timestamp(); static const int kTimestampFieldNumber = 2; inline ::google::protobuf::int64 timestamp() const; inline void set_timestamp(::google::protobuf::int64 value); // optional int64 changeset = 3; inline bool has_changeset() const; inline void clear_changeset(); static const int kChangesetFieldNumber = 3; inline ::google::protobuf::int64 changeset() const; inline void set_changeset(::google::protobuf::int64 value); // optional int32 uid = 4; inline bool has_uid() const; inline void clear_uid(); static const int kUidFieldNumber = 4; inline ::google::protobuf::int32 uid() const; inline void set_uid(::google::protobuf::int32 value); // optional uint32 user_sid = 5; inline bool has_user_sid() const; inline void clear_user_sid(); static const int kUserSidFieldNumber = 5; inline ::google::protobuf::uint32 user_sid() const; inline void set_user_sid(::google::protobuf::uint32 value); // @@protoc_insertion_point(class_scope:OSMPBF.Info) private: mutable int _cached_size_; ::google::protobuf::int32 version_; ::google::protobuf::int64 timestamp_; ::google::protobuf::int64 changeset_; ::google::protobuf::int32 uid_; ::google::protobuf::uint32 user_sid_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static Info* default_instance_; }; // ------------------------------------------------------------------- class DenseInfo : public ::google::protobuf::MessageLite { public: DenseInfo(); virtual ~DenseInfo(); DenseInfo(const DenseInfo& from); inline DenseInfo& operator=(const DenseInfo& from) { CopyFrom(from); return *this; } static const DenseInfo& default_instance(); void Swap(DenseInfo* other); // implements Message ---------------------------------------------- DenseInfo* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const DenseInfo& from); void MergeFrom(const DenseInfo& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // repeated int32 version = 1 [packed = true]; inline int version_size() const; inline void clear_version(); static const int kVersionFieldNumber = 1; inline ::google::protobuf::int32 version(int index) const; inline void set_version(int index, ::google::protobuf::int32 value); inline void add_version(::google::protobuf::int32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& version() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* mutable_version(); // repeated sint64 timestamp = 2 [packed = true]; inline int timestamp_size() const; inline void clear_timestamp(); static const int kTimestampFieldNumber = 2; inline ::google::protobuf::int64 timestamp(int index) const; inline void set_timestamp(int index, ::google::protobuf::int64 value); inline void add_timestamp(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& timestamp() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_timestamp(); // repeated sint64 changeset = 3 [packed = true]; inline int changeset_size() const; inline void clear_changeset(); static const int kChangesetFieldNumber = 3; inline ::google::protobuf::int64 changeset(int index) const; inline void set_changeset(int index, ::google::protobuf::int64 value); inline void add_changeset(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& changeset() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_changeset(); // repeated sint32 uid = 4 [packed = true]; inline int uid_size() const; inline void clear_uid(); static const int kUidFieldNumber = 4; inline ::google::protobuf::int32 uid(int index) const; inline void set_uid(int index, ::google::protobuf::int32 value); inline void add_uid(::google::protobuf::int32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& uid() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* mutable_uid(); // repeated sint32 user_sid = 5 [packed = true]; inline int user_sid_size() const; inline void clear_user_sid(); static const int kUserSidFieldNumber = 5; inline ::google::protobuf::int32 user_sid(int index) const; inline void set_user_sid(int index, ::google::protobuf::int32 value); inline void add_user_sid(::google::protobuf::int32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& user_sid() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* mutable_user_sid(); // @@protoc_insertion_point(class_scope:OSMPBF.DenseInfo) private: mutable int _cached_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int32 > version_; mutable int _version_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > timestamp_; mutable int _timestamp_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > changeset_; mutable int _changeset_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int32 > uid_; mutable int _uid_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int32 > user_sid_; mutable int _user_sid_cached_byte_size_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static DenseInfo* default_instance_; }; // ------------------------------------------------------------------- class ChangeSet : public ::google::protobuf::MessageLite { public: ChangeSet(); virtual ~ChangeSet(); ChangeSet(const ChangeSet& from); inline ChangeSet& operator=(const ChangeSet& from) { CopyFrom(from); return *this; } static const ChangeSet& default_instance(); void Swap(ChangeSet* other); // implements Message ---------------------------------------------- ChangeSet* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ChangeSet& from); void MergeFrom(const ChangeSet& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // required int64 id = 1; inline bool has_id() const; inline void clear_id(); static const int kIdFieldNumber = 1; inline ::google::protobuf::int64 id() const; inline void set_id(::google::protobuf::int64 value); // @@protoc_insertion_point(class_scope:OSMPBF.ChangeSet) private: mutable int _cached_size_; ::google::protobuf::int64 id_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static ChangeSet* default_instance_; }; // ------------------------------------------------------------------- class Node : public ::google::protobuf::MessageLite { public: Node(); virtual ~Node(); Node(const Node& from); inline Node& operator=(const Node& from) { CopyFrom(from); return *this; } static const Node& default_instance(); void Swap(Node* other); // implements Message ---------------------------------------------- Node* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const Node& from); void MergeFrom(const Node& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // required sint64 id = 1; inline bool has_id() const; inline void clear_id(); static const int kIdFieldNumber = 1; inline ::google::protobuf::int64 id() const; inline void set_id(::google::protobuf::int64 value); // repeated uint32 keys = 2 [packed = true]; inline int keys_size() const; inline void clear_keys(); static const int kKeysFieldNumber = 2; inline ::google::protobuf::uint32 keys(int index) const; inline void set_keys(int index, ::google::protobuf::uint32 value); inline void add_keys(::google::protobuf::uint32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& keys() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_keys(); // repeated uint32 vals = 3 [packed = true]; inline int vals_size() const; inline void clear_vals(); static const int kValsFieldNumber = 3; inline ::google::protobuf::uint32 vals(int index) const; inline void set_vals(int index, ::google::protobuf::uint32 value); inline void add_vals(::google::protobuf::uint32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& vals() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_vals(); // optional .OSMPBF.Info info = 4; inline bool has_info() const; inline void clear_info(); static const int kInfoFieldNumber = 4; inline const ::OSMPBF::Info& info() const; inline ::OSMPBF::Info* mutable_info(); // required sint64 lat = 8; inline bool has_lat() const; inline void clear_lat(); static const int kLatFieldNumber = 8; inline ::google::protobuf::int64 lat() const; inline void set_lat(::google::protobuf::int64 value); // required sint64 lon = 9; inline bool has_lon() const; inline void clear_lon(); static const int kLonFieldNumber = 9; inline ::google::protobuf::int64 lon() const; inline void set_lon(::google::protobuf::int64 value); // @@protoc_insertion_point(class_scope:OSMPBF.Node) private: mutable int _cached_size_; ::google::protobuf::int64 id_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_; mutable int _keys_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vals_; mutable int _vals_cached_byte_size_; ::OSMPBF::Info* info_; ::google::protobuf::int64 lat_; ::google::protobuf::int64 lon_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static Node* default_instance_; }; // ------------------------------------------------------------------- class DenseNodes : public ::google::protobuf::MessageLite { public: DenseNodes(); virtual ~DenseNodes(); DenseNodes(const DenseNodes& from); inline DenseNodes& operator=(const DenseNodes& from) { CopyFrom(from); return *this; } static const DenseNodes& default_instance(); void Swap(DenseNodes* other); // implements Message ---------------------------------------------- DenseNodes* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const DenseNodes& from); void MergeFrom(const DenseNodes& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // repeated sint64 id = 1 [packed = true]; inline int id_size() const; inline void clear_id(); static const int kIdFieldNumber = 1; inline ::google::protobuf::int64 id(int index) const; inline void set_id(int index, ::google::protobuf::int64 value); inline void add_id(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& id() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_id(); // optional .OSMPBF.DenseInfo denseinfo = 5; inline bool has_denseinfo() const; inline void clear_denseinfo(); static const int kDenseinfoFieldNumber = 5; inline const ::OSMPBF::DenseInfo& denseinfo() const; inline ::OSMPBF::DenseInfo* mutable_denseinfo(); // repeated sint64 lat = 8 [packed = true]; inline int lat_size() const; inline void clear_lat(); static const int kLatFieldNumber = 8; inline ::google::protobuf::int64 lat(int index) const; inline void set_lat(int index, ::google::protobuf::int64 value); inline void add_lat(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& lat() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_lat(); // repeated sint64 lon = 9 [packed = true]; inline int lon_size() const; inline void clear_lon(); static const int kLonFieldNumber = 9; inline ::google::protobuf::int64 lon(int index) const; inline void set_lon(int index, ::google::protobuf::int64 value); inline void add_lon(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& lon() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_lon(); // repeated int32 keys_vals = 10 [packed = true]; inline int keys_vals_size() const; inline void clear_keys_vals(); static const int kKeysValsFieldNumber = 10; inline ::google::protobuf::int32 keys_vals(int index) const; inline void set_keys_vals(int index, ::google::protobuf::int32 value); inline void add_keys_vals(::google::protobuf::int32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& keys_vals() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* mutable_keys_vals(); // @@protoc_insertion_point(class_scope:OSMPBF.DenseNodes) private: mutable int _cached_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > id_; mutable int _id_cached_byte_size_; ::OSMPBF::DenseInfo* denseinfo_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > lat_; mutable int _lat_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > lon_; mutable int _lon_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int32 > keys_vals_; mutable int _keys_vals_cached_byte_size_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static DenseNodes* default_instance_; }; // ------------------------------------------------------------------- class Way : public ::google::protobuf::MessageLite { public: Way(); virtual ~Way(); Way(const Way& from); inline Way& operator=(const Way& from) { CopyFrom(from); return *this; } static const Way& default_instance(); void Swap(Way* other); // implements Message ---------------------------------------------- Way* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const Way& from); void MergeFrom(const Way& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // required int64 id = 1; inline bool has_id() const; inline void clear_id(); static const int kIdFieldNumber = 1; inline ::google::protobuf::int64 id() const; inline void set_id(::google::protobuf::int64 value); // repeated uint32 keys = 2 [packed = true]; inline int keys_size() const; inline void clear_keys(); static const int kKeysFieldNumber = 2; inline ::google::protobuf::uint32 keys(int index) const; inline void set_keys(int index, ::google::protobuf::uint32 value); inline void add_keys(::google::protobuf::uint32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& keys() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_keys(); // repeated uint32 vals = 3 [packed = true]; inline int vals_size() const; inline void clear_vals(); static const int kValsFieldNumber = 3; inline ::google::protobuf::uint32 vals(int index) const; inline void set_vals(int index, ::google::protobuf::uint32 value); inline void add_vals(::google::protobuf::uint32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& vals() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_vals(); // optional .OSMPBF.Info info = 4; inline bool has_info() const; inline void clear_info(); static const int kInfoFieldNumber = 4; inline const ::OSMPBF::Info& info() const; inline ::OSMPBF::Info* mutable_info(); // repeated sint64 refs = 8 [packed = true]; inline int refs_size() const; inline void clear_refs(); static const int kRefsFieldNumber = 8; inline ::google::protobuf::int64 refs(int index) const; inline void set_refs(int index, ::google::protobuf::int64 value); inline void add_refs(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& refs() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_refs(); // @@protoc_insertion_point(class_scope:OSMPBF.Way) private: mutable int _cached_size_; ::google::protobuf::int64 id_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_; mutable int _keys_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vals_; mutable int _vals_cached_byte_size_; ::OSMPBF::Info* info_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > refs_; mutable int _refs_cached_byte_size_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static Way* default_instance_; }; // ------------------------------------------------------------------- class Relation : public ::google::protobuf::MessageLite { public: Relation(); virtual ~Relation(); Relation(const Relation& from); inline Relation& operator=(const Relation& from) { CopyFrom(from); return *this; } static const Relation& default_instance(); void Swap(Relation* other); // implements Message ---------------------------------------------- Relation* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const Relation& from); void MergeFrom(const Relation& from); void Clear(); bool IsInitialized() const; int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const; int GetCachedSize() const { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const; public: ::std::string GetTypeName() const; // nested types ---------------------------------------------------- typedef Relation_MemberType MemberType; static const MemberType NODE = Relation_MemberType_NODE; static const MemberType WAY = Relation_MemberType_WAY; static const MemberType RELATION = Relation_MemberType_RELATION; static inline bool MemberType_IsValid(int value) { return Relation_MemberType_IsValid(value); } static const MemberType MemberType_MIN = Relation_MemberType_MemberType_MIN; static const MemberType MemberType_MAX = Relation_MemberType_MemberType_MAX; static const int MemberType_ARRAYSIZE = Relation_MemberType_MemberType_ARRAYSIZE; // accessors ------------------------------------------------------- // required int64 id = 1; inline bool has_id() const; inline void clear_id(); static const int kIdFieldNumber = 1; inline ::google::protobuf::int64 id() const; inline void set_id(::google::protobuf::int64 value); // repeated uint32 keys = 2 [packed = true]; inline int keys_size() const; inline void clear_keys(); static const int kKeysFieldNumber = 2; inline ::google::protobuf::uint32 keys(int index) const; inline void set_keys(int index, ::google::protobuf::uint32 value); inline void add_keys(::google::protobuf::uint32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& keys() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_keys(); // repeated uint32 vals = 3 [packed = true]; inline int vals_size() const; inline void clear_vals(); static const int kValsFieldNumber = 3; inline ::google::protobuf::uint32 vals(int index) const; inline void set_vals(int index, ::google::protobuf::uint32 value); inline void add_vals(::google::protobuf::uint32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& vals() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_vals(); // optional .OSMPBF.Info info = 4; inline bool has_info() const; inline void clear_info(); static const int kInfoFieldNumber = 4; inline const ::OSMPBF::Info& info() const; inline ::OSMPBF::Info* mutable_info(); // repeated int32 roles_sid = 8 [packed = true]; inline int roles_sid_size() const; inline void clear_roles_sid(); static const int kRolesSidFieldNumber = 8; inline ::google::protobuf::int32 roles_sid(int index) const; inline void set_roles_sid(int index, ::google::protobuf::int32 value); inline void add_roles_sid(::google::protobuf::int32 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& roles_sid() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* mutable_roles_sid(); // repeated sint64 memids = 9 [packed = true]; inline int memids_size() const; inline void clear_memids(); static const int kMemidsFieldNumber = 9; inline ::google::protobuf::int64 memids(int index) const; inline void set_memids(int index, ::google::protobuf::int64 value); inline void add_memids(::google::protobuf::int64 value); inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& memids() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* mutable_memids(); // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true]; inline int types_size() const; inline void clear_types(); static const int kTypesFieldNumber = 10; inline ::OSMPBF::Relation_MemberType types(int index) const; inline void set_types(int index, ::OSMPBF::Relation_MemberType value); inline void add_types(::OSMPBF::Relation_MemberType value); inline const ::google::protobuf::RepeatedField<int>& types() const; inline ::google::protobuf::RepeatedField<int>* mutable_types(); // @@protoc_insertion_point(class_scope:OSMPBF.Relation) private: mutable int _cached_size_; ::google::protobuf::int64 id_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_; mutable int _keys_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vals_; mutable int _vals_cached_byte_size_; ::OSMPBF::Info* info_; ::google::protobuf::RepeatedField< ::google::protobuf::int32 > roles_sid_; mutable int _roles_sid_cached_byte_size_; ::google::protobuf::RepeatedField< ::google::protobuf::int64 > memids_; mutable int _memids_cached_byte_size_; ::google::protobuf::RepeatedField<int> types_; mutable int _types_cached_byte_size_; friend void protobuf_AddDesc_osmformat_2eproto(); friend void protobuf_AssignDesc_osmformat_2eproto(); friend void protobuf_ShutdownFile_osmformat_2eproto(); ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { return (_has_bits_[index / 32] & (1u << (index % 32))) != 0; } inline void _set_bit(int index) { _has_bits_[index / 32] |= (1u << (index % 32)); } inline void _clear_bit(int index) { _has_bits_[index / 32] &= ~(1u << (index % 32)); } void InitAsDefaultInstance(); static Relation* default_instance_; }; // =================================================================== // =================================================================== // HeaderBlock // optional .OSMPBF.HeaderBBox bbox = 1; inline bool HeaderBlock::has_bbox() const { return _has_bit(0); } inline void HeaderBlock::clear_bbox() { if (bbox_ != NULL) bbox_->::OSMPBF::HeaderBBox::Clear(); _clear_bit(0); } inline const ::OSMPBF::HeaderBBox& HeaderBlock::bbox() const { return bbox_ != NULL ? *bbox_ : *default_instance_->bbox_; } inline ::OSMPBF::HeaderBBox* HeaderBlock::mutable_bbox() { _set_bit(0); if (bbox_ == NULL) bbox_ = new ::OSMPBF::HeaderBBox; return bbox_; } // repeated string required_features = 4; inline int HeaderBlock::required_features_size() const { return required_features_.size(); } inline void HeaderBlock::clear_required_features() { required_features_.Clear(); } inline const ::std::string& HeaderBlock::required_features(int index) const { return required_features_.Get(index); } inline ::std::string* HeaderBlock::mutable_required_features(int index) { return required_features_.Mutable(index); } inline void HeaderBlock::set_required_features(int index, const ::std::string& value) { required_features_.Mutable(index)->assign(value); } inline void HeaderBlock::set_required_features(int index, const char* value) { required_features_.Mutable(index)->assign(value); } inline void HeaderBlock::set_required_features(int index, const char* value, size_t size) { required_features_.Mutable(index)->assign( reinterpret_cast<const char*>(value), size); } inline ::std::string* HeaderBlock::add_required_features() { return required_features_.Add(); } inline void HeaderBlock::add_required_features(const ::std::string& value) { required_features_.Add()->assign(value); } inline void HeaderBlock::add_required_features(const char* value) { required_features_.Add()->assign(value); } inline void HeaderBlock::add_required_features(const char* value, size_t size) { required_features_.Add()->assign(reinterpret_cast<const char*>(value), size); } inline const ::google::protobuf::RepeatedPtrField< ::std::string>& HeaderBlock::required_features() const { return required_features_; } inline ::google::protobuf::RepeatedPtrField< ::std::string>* HeaderBlock::mutable_required_features() { return &required_features_; } // repeated string optional_features = 5; inline int HeaderBlock::optional_features_size() const { return optional_features_.size(); } inline void HeaderBlock::clear_optional_features() { optional_features_.Clear(); } inline const ::std::string& HeaderBlock::optional_features(int index) const { return optional_features_.Get(index); } inline ::std::string* HeaderBlock::mutable_optional_features(int index) { return optional_features_.Mutable(index); } inline void HeaderBlock::set_optional_features(int index, const ::std::string& value) { optional_features_.Mutable(index)->assign(value); } inline void HeaderBlock::set_optional_features(int index, const char* value) { optional_features_.Mutable(index)->assign(value); } inline void HeaderBlock::set_optional_features(int index, const char* value, size_t size) { optional_features_.Mutable(index)->assign( reinterpret_cast<const char*>(value), size); } inline ::std::string* HeaderBlock::add_optional_features() { return optional_features_.Add(); } inline void HeaderBlock::add_optional_features(const ::std::string& value) { optional_features_.Add()->assign(value); } inline void HeaderBlock::add_optional_features(const char* value) { optional_features_.Add()->assign(value); } inline void HeaderBlock::add_optional_features(const char* value, size_t size) { optional_features_.Add()->assign(reinterpret_cast<const char*>(value), size); } inline const ::google::protobuf::RepeatedPtrField< ::std::string>& HeaderBlock::optional_features() const { return optional_features_; } inline ::google::protobuf::RepeatedPtrField< ::std::string>* HeaderBlock::mutable_optional_features() { return &optional_features_; } // optional string writingprogram = 16; inline bool HeaderBlock::has_writingprogram() const { return _has_bit(3); } inline void HeaderBlock::clear_writingprogram() { if (writingprogram_ != &_default_writingprogram_) { writingprogram_->clear(); } _clear_bit(3); } inline const ::std::string& HeaderBlock::writingprogram() const { return *writingprogram_; } inline void HeaderBlock::set_writingprogram(const ::std::string& value) { _set_bit(3); if (writingprogram_ == &_default_writingprogram_) { writingprogram_ = new ::std::string; } writingprogram_->assign(value); } inline void HeaderBlock::set_writingprogram(const char* value) { _set_bit(3); if (writingprogram_ == &_default_writingprogram_) { writingprogram_ = new ::std::string; } writingprogram_->assign(value); } inline void HeaderBlock::set_writingprogram(const char* value, size_t size) { _set_bit(3); if (writingprogram_ == &_default_writingprogram_) { writingprogram_ = new ::std::string; } writingprogram_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* HeaderBlock::mutable_writingprogram() { _set_bit(3); if (writingprogram_ == &_default_writingprogram_) { writingprogram_ = new ::std::string; } return writingprogram_; } // optional string source = 17; inline bool HeaderBlock::has_source() const { return _has_bit(4); } inline void HeaderBlock::clear_source() { if (source_ != &_default_source_) { source_->clear(); } _clear_bit(4); } inline const ::std::string& HeaderBlock::source() const { return *source_; } inline void HeaderBlock::set_source(const ::std::string& value) { _set_bit(4); if (source_ == &_default_source_) { source_ = new ::std::string; } source_->assign(value); } inline void HeaderBlock::set_source(const char* value) { _set_bit(4); if (source_ == &_default_source_) { source_ = new ::std::string; } source_->assign(value); } inline void HeaderBlock::set_source(const char* value, size_t size) { _set_bit(4); if (source_ == &_default_source_) { source_ = new ::std::string; } source_->assign(reinterpret_cast<const char*>(value), size); } inline ::std::string* HeaderBlock::mutable_source() { _set_bit(4); if (source_ == &_default_source_) { source_ = new ::std::string; } return source_; } // ------------------------------------------------------------------- // HeaderBBox // required sint64 left = 1; inline bool HeaderBBox::has_left() const { return _has_bit(0); } inline void HeaderBBox::clear_left() { left_ = GOOGLE_LONGLONG(0); _clear_bit(0); } inline ::google::protobuf::int64 HeaderBBox::left() const { return left_; } inline void HeaderBBox::set_left(::google::protobuf::int64 value) { _set_bit(0); left_ = value; } // required sint64 right = 2; inline bool HeaderBBox::has_right() const { return _has_bit(1); } inline void HeaderBBox::clear_right() { right_ = GOOGLE_LONGLONG(0); _clear_bit(1); } inline ::google::protobuf::int64 HeaderBBox::right() const { return right_; } inline void HeaderBBox::set_right(::google::protobuf::int64 value) { _set_bit(1); right_ = value; } // required sint64 top = 3; inline bool HeaderBBox::has_top() const { return _has_bit(2); } inline void HeaderBBox::clear_top() { top_ = GOOGLE_LONGLONG(0); _clear_bit(2); } inline ::google::protobuf::int64 HeaderBBox::top() const { return top_; } inline void HeaderBBox::set_top(::google::protobuf::int64 value) { _set_bit(2); top_ = value; } // required sint64 bottom = 4; inline bool HeaderBBox::has_bottom() const { return _has_bit(3); } inline void HeaderBBox::clear_bottom() { bottom_ = GOOGLE_LONGLONG(0); _clear_bit(3); } inline ::google::protobuf::int64 HeaderBBox::bottom() const { return bottom_; } inline void HeaderBBox::set_bottom(::google::protobuf::int64 value) { _set_bit(3); bottom_ = value; } // ------------------------------------------------------------------- // PrimitiveBlock // required .OSMPBF.StringTable stringtable = 1; inline bool PrimitiveBlock::has_stringtable() const { return _has_bit(0); } inline void PrimitiveBlock::clear_stringtable() { if (stringtable_ != NULL) stringtable_->::OSMPBF::StringTable::Clear(); _clear_bit(0); } inline const ::OSMPBF::StringTable& PrimitiveBlock::stringtable() const { return stringtable_ != NULL ? *stringtable_ : *default_instance_->stringtable_; } inline ::OSMPBF::StringTable* PrimitiveBlock::mutable_stringtable() { _set_bit(0); if (stringtable_ == NULL) stringtable_ = new ::OSMPBF::StringTable; return stringtable_; } // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2; inline int PrimitiveBlock::primitivegroup_size() const { return primitivegroup_.size(); } inline void PrimitiveBlock::clear_primitivegroup() { primitivegroup_.Clear(); } inline const ::OSMPBF::PrimitiveGroup& PrimitiveBlock::primitivegroup(int index) const { return primitivegroup_.Get(index); } inline ::OSMPBF::PrimitiveGroup* PrimitiveBlock::mutable_primitivegroup(int index) { return primitivegroup_.Mutable(index); } inline ::OSMPBF::PrimitiveGroup* PrimitiveBlock::add_primitivegroup() { return primitivegroup_.Add(); } inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >& PrimitiveBlock::primitivegroup() const { return primitivegroup_; } inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >* PrimitiveBlock::mutable_primitivegroup() { return &primitivegroup_; } // optional int32 granularity = 17 [default = 100]; inline bool PrimitiveBlock::has_granularity() const { return _has_bit(2); } inline void PrimitiveBlock::clear_granularity() { granularity_ = 100; _clear_bit(2); } inline ::google::protobuf::int32 PrimitiveBlock::granularity() const { return granularity_; } inline void PrimitiveBlock::set_granularity(::google::protobuf::int32 value) { _set_bit(2); granularity_ = value; } // optional int64 lat_offset = 19 [default = 0]; inline bool PrimitiveBlock::has_lat_offset() const { return _has_bit(3); } inline void PrimitiveBlock::clear_lat_offset() { lat_offset_ = GOOGLE_LONGLONG(0); _clear_bit(3); } inline ::google::protobuf::int64 PrimitiveBlock::lat_offset() const { return lat_offset_; } inline void PrimitiveBlock::set_lat_offset(::google::protobuf::int64 value) { _set_bit(3); lat_offset_ = value; } // optional int64 lon_offset = 20 [default = 0]; inline bool PrimitiveBlock::has_lon_offset() const { return _has_bit(4); } inline void PrimitiveBlock::clear_lon_offset() { lon_offset_ = GOOGLE_LONGLONG(0); _clear_bit(4); } inline ::google::protobuf::int64 PrimitiveBlock::lon_offset() const { return lon_offset_; } inline void PrimitiveBlock::set_lon_offset(::google::protobuf::int64 value) { _set_bit(4); lon_offset_ = value; } // optional int32 date_granularity = 18 [default = 1000]; inline bool PrimitiveBlock::has_date_granularity() const { return _has_bit(5); } inline void PrimitiveBlock::clear_date_granularity() { date_granularity_ = 1000; _clear_bit(5); } inline ::google::protobuf::int32 PrimitiveBlock::date_granularity() const { return date_granularity_; } inline void PrimitiveBlock::set_date_granularity(::google::protobuf::int32 value) { _set_bit(5); date_granularity_ = value; } // ------------------------------------------------------------------- // PrimitiveGroup // repeated .OSMPBF.Node nodes = 1; inline int PrimitiveGroup::nodes_size() const { return nodes_.size(); } inline void PrimitiveGroup::clear_nodes() { nodes_.Clear(); } inline const ::OSMPBF::Node& PrimitiveGroup::nodes(int index) const { return nodes_.Get(index); } inline ::OSMPBF::Node* PrimitiveGroup::mutable_nodes(int index) { return nodes_.Mutable(index); } inline ::OSMPBF::Node* PrimitiveGroup::add_nodes() { return nodes_.Add(); } inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >& PrimitiveGroup::nodes() const { return nodes_; } inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >* PrimitiveGroup::mutable_nodes() { return &nodes_; } // optional .OSMPBF.DenseNodes dense = 2; inline bool PrimitiveGroup::has_dense() const { return _has_bit(1); } inline void PrimitiveGroup::clear_dense() { if (dense_ != NULL) dense_->::OSMPBF::DenseNodes::Clear(); _clear_bit(1); } inline const ::OSMPBF::DenseNodes& PrimitiveGroup::dense() const { return dense_ != NULL ? *dense_ : *default_instance_->dense_; } inline ::OSMPBF::DenseNodes* PrimitiveGroup::mutable_dense() { _set_bit(1); if (dense_ == NULL) dense_ = new ::OSMPBF::DenseNodes; return dense_; } // repeated .OSMPBF.Way ways = 3; inline int PrimitiveGroup::ways_size() const { return ways_.size(); } inline void PrimitiveGroup::clear_ways() { ways_.Clear(); } inline const ::OSMPBF::Way& PrimitiveGroup::ways(int index) const { return ways_.Get(index); } inline ::OSMPBF::Way* PrimitiveGroup::mutable_ways(int index) { return ways_.Mutable(index); } inline ::OSMPBF::Way* PrimitiveGroup::add_ways() { return ways_.Add(); } inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >& PrimitiveGroup::ways() const { return ways_; } inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >* PrimitiveGroup::mutable_ways() { return &ways_; } // repeated .OSMPBF.Relation relations = 4; inline int PrimitiveGroup::relations_size() const { return relations_.size(); } inline void PrimitiveGroup::clear_relations() { relations_.Clear(); } inline const ::OSMPBF::Relation& PrimitiveGroup::relations(int index) const { return relations_.Get(index); } inline ::OSMPBF::Relation* PrimitiveGroup::mutable_relations(int index) { return relations_.Mutable(index); } inline ::OSMPBF::Relation* PrimitiveGroup::add_relations() { return relations_.Add(); } inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >& PrimitiveGroup::relations() const { return relations_; } inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >* PrimitiveGroup::mutable_relations() { return &relations_; } // repeated .OSMPBF.ChangeSet changesets = 5; inline int PrimitiveGroup::changesets_size() const { return changesets_.size(); } inline void PrimitiveGroup::clear_changesets() { changesets_.Clear(); } inline const ::OSMPBF::ChangeSet& PrimitiveGroup::changesets(int index) const { return changesets_.Get(index); } inline ::OSMPBF::ChangeSet* PrimitiveGroup::mutable_changesets(int index) { return changesets_.Mutable(index); } inline ::OSMPBF::ChangeSet* PrimitiveGroup::add_changesets() { return changesets_.Add(); } inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >& PrimitiveGroup::changesets() const { return changesets_; } inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >* PrimitiveGroup::mutable_changesets() { return &changesets_; } // ------------------------------------------------------------------- // StringTable // repeated bytes s = 1; inline int StringTable::s_size() const { return s_.size(); } inline void StringTable::clear_s() { s_.Clear(); } inline const ::std::string& StringTable::s(int index) const { return s_.Get(index); } inline ::std::string* StringTable::mutable_s(int index) { return s_.Mutable(index); } inline void StringTable::set_s(int index, const ::std::string& value) { s_.Mutable(index)->assign(value); } inline void StringTable::set_s(int index, const char* value) { s_.Mutable(index)->assign(value); } inline void StringTable::set_s(int index, const void* value, size_t size) { s_.Mutable(index)->assign( reinterpret_cast<const char*>(value), size); } inline ::std::string* StringTable::add_s() { return s_.Add(); } inline void StringTable::add_s(const ::std::string& value) { s_.Add()->assign(value); } inline void StringTable::add_s(const char* value) { s_.Add()->assign(value); } inline void StringTable::add_s(const void* value, size_t size) { s_.Add()->assign(reinterpret_cast<const char*>(value), size); } inline const ::google::protobuf::RepeatedPtrField< ::std::string>& StringTable::s() const { return s_; } inline ::google::protobuf::RepeatedPtrField< ::std::string>* StringTable::mutable_s() { return &s_; } // ------------------------------------------------------------------- // Info // optional int32 version = 1 [default = -1]; inline bool Info::has_version() const { return _has_bit(0); } inline void Info::clear_version() { version_ = -1; _clear_bit(0); } inline ::google::protobuf::int32 Info::version() const { return version_; } inline void Info::set_version(::google::protobuf::int32 value) { _set_bit(0); version_ = value; } // optional int64 timestamp = 2; inline bool Info::has_timestamp() const { return _has_bit(1); } inline void Info::clear_timestamp() { timestamp_ = GOOGLE_LONGLONG(0); _clear_bit(1); } inline ::google::protobuf::int64 Info::timestamp() const { return timestamp_; } inline void Info::set_timestamp(::google::protobuf::int64 value) { _set_bit(1); timestamp_ = value; } // optional int64 changeset = 3; inline bool Info::has_changeset() const { return _has_bit(2); } inline void Info::clear_changeset() { changeset_ = GOOGLE_LONGLONG(0); _clear_bit(2); } inline ::google::protobuf::int64 Info::changeset() const { return changeset_; } inline void Info::set_changeset(::google::protobuf::int64 value) { _set_bit(2); changeset_ = value; } // optional int32 uid = 4; inline bool Info::has_uid() const { return _has_bit(3); } inline void Info::clear_uid() { uid_ = 0; _clear_bit(3); } inline ::google::protobuf::int32 Info::uid() const { return uid_; } inline void Info::set_uid(::google::protobuf::int32 value) { _set_bit(3); uid_ = value; } // optional uint32 user_sid = 5; inline bool Info::has_user_sid() const { return _has_bit(4); } inline void Info::clear_user_sid() { user_sid_ = 0u; _clear_bit(4); } inline ::google::protobuf::uint32 Info::user_sid() const { return user_sid_; } inline void Info::set_user_sid(::google::protobuf::uint32 value) { _set_bit(4); user_sid_ = value; } // ------------------------------------------------------------------- // DenseInfo // repeated int32 version = 1 [packed = true]; inline int DenseInfo::version_size() const { return version_.size(); } inline void DenseInfo::clear_version() { version_.Clear(); } inline ::google::protobuf::int32 DenseInfo::version(int index) const { return version_.Get(index); } inline void DenseInfo::set_version(int index, ::google::protobuf::int32 value) { version_.Set(index, value); } inline void DenseInfo::add_version(::google::protobuf::int32 value) { version_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& DenseInfo::version() const { return version_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* DenseInfo::mutable_version() { return &version_; } // repeated sint64 timestamp = 2 [packed = true]; inline int DenseInfo::timestamp_size() const { return timestamp_.size(); } inline void DenseInfo::clear_timestamp() { timestamp_.Clear(); } inline ::google::protobuf::int64 DenseInfo::timestamp(int index) const { return timestamp_.Get(index); } inline void DenseInfo::set_timestamp(int index, ::google::protobuf::int64 value) { timestamp_.Set(index, value); } inline void DenseInfo::add_timestamp(::google::protobuf::int64 value) { timestamp_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& DenseInfo::timestamp() const { return timestamp_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* DenseInfo::mutable_timestamp() { return ×tamp_; } // repeated sint64 changeset = 3 [packed = true]; inline int DenseInfo::changeset_size() const { return changeset_.size(); } inline void DenseInfo::clear_changeset() { changeset_.Clear(); } inline ::google::protobuf::int64 DenseInfo::changeset(int index) const { return changeset_.Get(index); } inline void DenseInfo::set_changeset(int index, ::google::protobuf::int64 value) { changeset_.Set(index, value); } inline void DenseInfo::add_changeset(::google::protobuf::int64 value) { changeset_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& DenseInfo::changeset() const { return changeset_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* DenseInfo::mutable_changeset() { return &changeset_; } // repeated sint32 uid = 4 [packed = true]; inline int DenseInfo::uid_size() const { return uid_.size(); } inline void DenseInfo::clear_uid() { uid_.Clear(); } inline ::google::protobuf::int32 DenseInfo::uid(int index) const { return uid_.Get(index); } inline void DenseInfo::set_uid(int index, ::google::protobuf::int32 value) { uid_.Set(index, value); } inline void DenseInfo::add_uid(::google::protobuf::int32 value) { uid_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& DenseInfo::uid() const { return uid_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* DenseInfo::mutable_uid() { return &uid_; } // repeated sint32 user_sid = 5 [packed = true]; inline int DenseInfo::user_sid_size() const { return user_sid_.size(); } inline void DenseInfo::clear_user_sid() { user_sid_.Clear(); } inline ::google::protobuf::int32 DenseInfo::user_sid(int index) const { return user_sid_.Get(index); } inline void DenseInfo::set_user_sid(int index, ::google::protobuf::int32 value) { user_sid_.Set(index, value); } inline void DenseInfo::add_user_sid(::google::protobuf::int32 value) { user_sid_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& DenseInfo::user_sid() const { return user_sid_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* DenseInfo::mutable_user_sid() { return &user_sid_; } // ------------------------------------------------------------------- // ChangeSet // required int64 id = 1; inline bool ChangeSet::has_id() const { return _has_bit(0); } inline void ChangeSet::clear_id() { id_ = GOOGLE_LONGLONG(0); _clear_bit(0); } inline ::google::protobuf::int64 ChangeSet::id() const { return id_; } inline void ChangeSet::set_id(::google::protobuf::int64 value) { _set_bit(0); id_ = value; } // ------------------------------------------------------------------- // Node // required sint64 id = 1; inline bool Node::has_id() const { return _has_bit(0); } inline void Node::clear_id() { id_ = GOOGLE_LONGLONG(0); _clear_bit(0); } inline ::google::protobuf::int64 Node::id() const { return id_; } inline void Node::set_id(::google::protobuf::int64 value) { _set_bit(0); id_ = value; } // repeated uint32 keys = 2 [packed = true]; inline int Node::keys_size() const { return keys_.size(); } inline void Node::clear_keys() { keys_.Clear(); } inline ::google::protobuf::uint32 Node::keys(int index) const { return keys_.Get(index); } inline void Node::set_keys(int index, ::google::protobuf::uint32 value) { keys_.Set(index, value); } inline void Node::add_keys(::google::protobuf::uint32 value) { keys_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& Node::keys() const { return keys_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* Node::mutable_keys() { return &keys_; } // repeated uint32 vals = 3 [packed = true]; inline int Node::vals_size() const { return vals_.size(); } inline void Node::clear_vals() { vals_.Clear(); } inline ::google::protobuf::uint32 Node::vals(int index) const { return vals_.Get(index); } inline void Node::set_vals(int index, ::google::protobuf::uint32 value) { vals_.Set(index, value); } inline void Node::add_vals(::google::protobuf::uint32 value) { vals_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& Node::vals() const { return vals_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* Node::mutable_vals() { return &vals_; } // optional .OSMPBF.Info info = 4; inline bool Node::has_info() const { return _has_bit(3); } inline void Node::clear_info() { if (info_ != NULL) info_->::OSMPBF::Info::Clear(); _clear_bit(3); } inline const ::OSMPBF::Info& Node::info() const { return info_ != NULL ? *info_ : *default_instance_->info_; } inline ::OSMPBF::Info* Node::mutable_info() { _set_bit(3); if (info_ == NULL) info_ = new ::OSMPBF::Info; return info_; } // required sint64 lat = 8; inline bool Node::has_lat() const { return _has_bit(4); } inline void Node::clear_lat() { lat_ = GOOGLE_LONGLONG(0); _clear_bit(4); } inline ::google::protobuf::int64 Node::lat() const { return lat_; } inline void Node::set_lat(::google::protobuf::int64 value) { _set_bit(4); lat_ = value; } // required sint64 lon = 9; inline bool Node::has_lon() const { return _has_bit(5); } inline void Node::clear_lon() { lon_ = GOOGLE_LONGLONG(0); _clear_bit(5); } inline ::google::protobuf::int64 Node::lon() const { return lon_; } inline void Node::set_lon(::google::protobuf::int64 value) { _set_bit(5); lon_ = value; } // ------------------------------------------------------------------- // DenseNodes // repeated sint64 id = 1 [packed = true]; inline int DenseNodes::id_size() const { return id_.size(); } inline void DenseNodes::clear_id() { id_.Clear(); } inline ::google::protobuf::int64 DenseNodes::id(int index) const { return id_.Get(index); } inline void DenseNodes::set_id(int index, ::google::protobuf::int64 value) { id_.Set(index, value); } inline void DenseNodes::add_id(::google::protobuf::int64 value) { id_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& DenseNodes::id() const { return id_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* DenseNodes::mutable_id() { return &id_; } // optional .OSMPBF.DenseInfo denseinfo = 5; inline bool DenseNodes::has_denseinfo() const { return _has_bit(1); } inline void DenseNodes::clear_denseinfo() { if (denseinfo_ != NULL) denseinfo_->::OSMPBF::DenseInfo::Clear(); _clear_bit(1); } inline const ::OSMPBF::DenseInfo& DenseNodes::denseinfo() const { return denseinfo_ != NULL ? *denseinfo_ : *default_instance_->denseinfo_; } inline ::OSMPBF::DenseInfo* DenseNodes::mutable_denseinfo() { _set_bit(1); if (denseinfo_ == NULL) denseinfo_ = new ::OSMPBF::DenseInfo; return denseinfo_; } // repeated sint64 lat = 8 [packed = true]; inline int DenseNodes::lat_size() const { return lat_.size(); } inline void DenseNodes::clear_lat() { lat_.Clear(); } inline ::google::protobuf::int64 DenseNodes::lat(int index) const { return lat_.Get(index); } inline void DenseNodes::set_lat(int index, ::google::protobuf::int64 value) { lat_.Set(index, value); } inline void DenseNodes::add_lat(::google::protobuf::int64 value) { lat_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& DenseNodes::lat() const { return lat_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* DenseNodes::mutable_lat() { return &lat_; } // repeated sint64 lon = 9 [packed = true]; inline int DenseNodes::lon_size() const { return lon_.size(); } inline void DenseNodes::clear_lon() { lon_.Clear(); } inline ::google::protobuf::int64 DenseNodes::lon(int index) const { return lon_.Get(index); } inline void DenseNodes::set_lon(int index, ::google::protobuf::int64 value) { lon_.Set(index, value); } inline void DenseNodes::add_lon(::google::protobuf::int64 value) { lon_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& DenseNodes::lon() const { return lon_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* DenseNodes::mutable_lon() { return &lon_; } // repeated int32 keys_vals = 10 [packed = true]; inline int DenseNodes::keys_vals_size() const { return keys_vals_.size(); } inline void DenseNodes::clear_keys_vals() { keys_vals_.Clear(); } inline ::google::protobuf::int32 DenseNodes::keys_vals(int index) const { return keys_vals_.Get(index); } inline void DenseNodes::set_keys_vals(int index, ::google::protobuf::int32 value) { keys_vals_.Set(index, value); } inline void DenseNodes::add_keys_vals(::google::protobuf::int32 value) { keys_vals_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& DenseNodes::keys_vals() const { return keys_vals_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* DenseNodes::mutable_keys_vals() { return &keys_vals_; } // ------------------------------------------------------------------- // Way // required int64 id = 1; inline bool Way::has_id() const { return _has_bit(0); } inline void Way::clear_id() { id_ = GOOGLE_LONGLONG(0); _clear_bit(0); } inline ::google::protobuf::int64 Way::id() const { return id_; } inline void Way::set_id(::google::protobuf::int64 value) { _set_bit(0); id_ = value; } // repeated uint32 keys = 2 [packed = true]; inline int Way::keys_size() const { return keys_.size(); } inline void Way::clear_keys() { keys_.Clear(); } inline ::google::protobuf::uint32 Way::keys(int index) const { return keys_.Get(index); } inline void Way::set_keys(int index, ::google::protobuf::uint32 value) { keys_.Set(index, value); } inline void Way::add_keys(::google::protobuf::uint32 value) { keys_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& Way::keys() const { return keys_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* Way::mutable_keys() { return &keys_; } // repeated uint32 vals = 3 [packed = true]; inline int Way::vals_size() const { return vals_.size(); } inline void Way::clear_vals() { vals_.Clear(); } inline ::google::protobuf::uint32 Way::vals(int index) const { return vals_.Get(index); } inline void Way::set_vals(int index, ::google::protobuf::uint32 value) { vals_.Set(index, value); } inline void Way::add_vals(::google::protobuf::uint32 value) { vals_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& Way::vals() const { return vals_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* Way::mutable_vals() { return &vals_; } // optional .OSMPBF.Info info = 4; inline bool Way::has_info() const { return _has_bit(3); } inline void Way::clear_info() { if (info_ != NULL) info_->::OSMPBF::Info::Clear(); _clear_bit(3); } inline const ::OSMPBF::Info& Way::info() const { return info_ != NULL ? *info_ : *default_instance_->info_; } inline ::OSMPBF::Info* Way::mutable_info() { _set_bit(3); if (info_ == NULL) info_ = new ::OSMPBF::Info; return info_; } // repeated sint64 refs = 8 [packed = true]; inline int Way::refs_size() const { return refs_.size(); } inline void Way::clear_refs() { refs_.Clear(); } inline ::google::protobuf::int64 Way::refs(int index) const { return refs_.Get(index); } inline void Way::set_refs(int index, ::google::protobuf::int64 value) { refs_.Set(index, value); } inline void Way::add_refs(::google::protobuf::int64 value) { refs_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& Way::refs() const { return refs_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* Way::mutable_refs() { return &refs_; } // ------------------------------------------------------------------- // Relation // required int64 id = 1; inline bool Relation::has_id() const { return _has_bit(0); } inline void Relation::clear_id() { id_ = GOOGLE_LONGLONG(0); _clear_bit(0); } inline ::google::protobuf::int64 Relation::id() const { return id_; } inline void Relation::set_id(::google::protobuf::int64 value) { _set_bit(0); id_ = value; } // repeated uint32 keys = 2 [packed = true]; inline int Relation::keys_size() const { return keys_.size(); } inline void Relation::clear_keys() { keys_.Clear(); } inline ::google::protobuf::uint32 Relation::keys(int index) const { return keys_.Get(index); } inline void Relation::set_keys(int index, ::google::protobuf::uint32 value) { keys_.Set(index, value); } inline void Relation::add_keys(::google::protobuf::uint32 value) { keys_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& Relation::keys() const { return keys_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* Relation::mutable_keys() { return &keys_; } // repeated uint32 vals = 3 [packed = true]; inline int Relation::vals_size() const { return vals_.size(); } inline void Relation::clear_vals() { vals_.Clear(); } inline ::google::protobuf::uint32 Relation::vals(int index) const { return vals_.Get(index); } inline void Relation::set_vals(int index, ::google::protobuf::uint32 value) { vals_.Set(index, value); } inline void Relation::add_vals(::google::protobuf::uint32 value) { vals_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& Relation::vals() const { return vals_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* Relation::mutable_vals() { return &vals_; } // optional .OSMPBF.Info info = 4; inline bool Relation::has_info() const { return _has_bit(3); } inline void Relation::clear_info() { if (info_ != NULL) info_->::OSMPBF::Info::Clear(); _clear_bit(3); } inline const ::OSMPBF::Info& Relation::info() const { return info_ != NULL ? *info_ : *default_instance_->info_; } inline ::OSMPBF::Info* Relation::mutable_info() { _set_bit(3); if (info_ == NULL) info_ = new ::OSMPBF::Info; return info_; } // repeated int32 roles_sid = 8 [packed = true]; inline int Relation::roles_sid_size() const { return roles_sid_.size(); } inline void Relation::clear_roles_sid() { roles_sid_.Clear(); } inline ::google::protobuf::int32 Relation::roles_sid(int index) const { return roles_sid_.Get(index); } inline void Relation::set_roles_sid(int index, ::google::protobuf::int32 value) { roles_sid_.Set(index, value); } inline void Relation::add_roles_sid(::google::protobuf::int32 value) { roles_sid_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >& Relation::roles_sid() const { return roles_sid_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >* Relation::mutable_roles_sid() { return &roles_sid_; } // repeated sint64 memids = 9 [packed = true]; inline int Relation::memids_size() const { return memids_.size(); } inline void Relation::clear_memids() { memids_.Clear(); } inline ::google::protobuf::int64 Relation::memids(int index) const { return memids_.Get(index); } inline void Relation::set_memids(int index, ::google::protobuf::int64 value) { memids_.Set(index, value); } inline void Relation::add_memids(::google::protobuf::int64 value) { memids_.Add(value); } inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& Relation::memids() const { return memids_; } inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* Relation::mutable_memids() { return &memids_; } // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true]; inline int Relation::types_size() const { return types_.size(); } inline void Relation::clear_types() { types_.Clear(); } inline ::OSMPBF::Relation_MemberType Relation::types(int index) const { return static_cast< ::OSMPBF::Relation_MemberType >(types_.Get(index)); } inline void Relation::set_types(int index, ::OSMPBF::Relation_MemberType value) { GOOGLE_DCHECK(::OSMPBF::Relation_MemberType_IsValid(value)); types_.Set(index, value); } inline void Relation::add_types(::OSMPBF::Relation_MemberType value) { GOOGLE_DCHECK(::OSMPBF::Relation_MemberType_IsValid(value)); types_.Add(value); } inline const ::google::protobuf::RepeatedField<int>& Relation::types() const { return types_; } inline ::google::protobuf::RepeatedField<int>* Relation::mutable_types() { return &types_; } // @@protoc_insertion_point(namespace_scope) } // namespace OSMPBF // @@protoc_insertion_point(global_scope) #endif // PROTOBUF_osmformat_2eproto__INCLUDED ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/ImportExport/osmformat.proto��������������������������������������������������0000664�0000000�0000000�00000015766�11770671653�0022343�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** Copyright (c) 2010 Scott A. Crosby. <scott@sacrosby.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ option optimize_for = LITE_RUNTIME; option java_package = "crosby.binary"; package OSMPBF; /* OSM Binary file format This is the master schema file of the OSM binary file format. This file is designed to support limited random-access and future extendability. A binary OSM file consists of a sequence of FileBlocks (please see fileformat.proto). The first fileblock contains a serialized instance of HeaderBlock, followed by a sequence of PrimitiveBlock blocks that contain the primitives. Each primitiveblock is designed to be independently parsable. It contains a string table storing all strings in that block (keys and values in tags, roles in relations, usernames, etc.) as well as metadata containing the precision of coordinates or timestamps in that block. A primitiveblock contains a sequence of primitive groups, each containing primitives of the same type (nodes, densenodes, ways, relations). Coordinates are stored in signed 64-bit integers. Lat&lon are measured in units <granularity> nanodegrees. The default of granularity of 100 nanodegrees corresponds to about 1cm on the ground, and a full lat or lon fits into 32 bits. Converting an integer to a lattitude or longitude uses the formula: $OUT = IN * granularity / 10**9$. Many encoding schemes use delta coding when representing nodes and relations. */ ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// /* Contains the file header. */ message HeaderBlock { optional HeaderBBox bbox = 1; /* Additional tags to aid in parsing this dataset */ repeated string required_features = 4; repeated string optional_features = 5; optional string writingprogram = 16; optional string source = 17; // From the bbox field. } /** The bounding box field in the OSM header. BBOX, as used in the OSM header. Units are always in nanodegrees -- they do not obey granularity rules. */ message HeaderBBox { required sint64 left = 1; required sint64 right = 2; required sint64 top = 3; required sint64 bottom = 4; } /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// message PrimitiveBlock { required StringTable stringtable = 1; repeated PrimitiveGroup primitivegroup = 2; // Granularity, units of nanodegrees, used to store coordinates in this block optional int32 granularity = 17 [default=100]; // Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees. optional int64 lat_offset = 19 [default=0]; optional int64 lon_offset = 20 [default=0]; // Granularity of dates, normally represented in units of milliseconds since the 1970 epoch. optional int32 date_granularity = 18 [default=1000]; // Proposed extension: //optional BBox bbox = XX; } // Group of OSMPrimitives. All primitives in a group must be the same type. message PrimitiveGroup { repeated Node nodes = 1; optional DenseNodes dense = 2; repeated Way ways = 3; repeated Relation relations = 4; repeated ChangeSet changesets = 5; } /** String table, contains the common strings in each block. Note that we reserve index '0' as a delimiter, so the entry at that index in the table is ALWAYS blank and unused. */ message StringTable { repeated bytes s = 1; } /* Optional metadata that may be included into each primitive. */ message Info { optional int32 version = 1 [default = -1]; optional int64 timestamp = 2; optional int64 changeset = 3; optional int32 uid = 4; optional uint32 user_sid = 5; // String IDs } /** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes. */ message DenseInfo { repeated int32 version = 1 [packed = true]; repeated sint64 timestamp = 2 [packed = true]; // DELTA coded repeated sint64 changeset = 3 [packed = true]; // DELTA coded repeated sint32 uid = 4 [packed = true]; // DELTA coded repeated sint32 user_sid = 5 [packed = true]; // String IDs for usernames. DELTA coded } // THIS IS STUB DESIGN FOR CHANGESETS. NOT USED RIGHT NOW. // TODO: REMOVE THIS? message ChangeSet { required int64 id = 1; // // // Parallel arrays. // repeated uint32 keys = 2 [packed = true]; // String IDs. // repeated uint32 vals = 3 [packed = true]; // String IDs. // // optional Info info = 4; // optional int64 created_at = 8; // optional int64 closetime_delta = 9; // optional bool open = 10; // optional HeaderBBox bbox = 11; } message Node { required sint64 id = 1; // Parallel arrays. repeated uint32 keys = 2 [packed = true]; // String IDs. repeated uint32 vals = 3 [packed = true]; // String IDs. optional Info info = 4; // May be omitted in omitmeta required sint64 lat = 8; required sint64 lon = 9; } /* Used to densly represent a sequence of nodes that do not have any tags. We represent these nodes columnwise as five columns: ID's, lats, and lons, all delta coded. When metadata is not omitted, We encode keys & vals for all nodes as a single array of integers containing key-stringid and val-stringid, using a stringid of 0 as a delimiter between nodes. ( (<keyid> <valid>)* '0' )* */ message DenseNodes { repeated sint64 id = 1 [packed = true]; // DELTA coded //repeated Info info = 4; optional DenseInfo denseinfo = 5; repeated sint64 lat = 8 [packed = true]; // DELTA coded repeated sint64 lon = 9 [packed = true]; // DELTA coded // Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless. repeated int32 keys_vals = 10 [packed = true]; } message Way { required int64 id = 1; // Parallel arrays. repeated uint32 keys = 2 [packed = true]; repeated uint32 vals = 3 [packed = true]; optional Info info = 4; repeated sint64 refs = 8 [packed = true]; // DELTA coded } message Relation { enum MemberType { NODE = 0; WAY = 1; RELATION = 2; } required int64 id = 1; // Parallel arrays. repeated uint32 keys = 2 [packed = true]; repeated uint32 vals = 3 [packed = true]; optional Info info = 4; // Parallel arrays repeated int32 roles_sid = 8 [packed = true]; repeated sint64 memids = 9 [packed = true]; // DELTA encoded repeated MemberType types = 10 [packed = true]; } ����������merkaartor-0.18.1/src/Interactions/�����������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0017216�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateAreaInteraction.cpp����������������������������������������0000664�0000000�0000000�00000022372�11770671653�0024124�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "CreateAreaInteraction.h" #include "DocumentCommands.h" #include "RelationCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Painting.h" #include "Relation.h" #include "Way.h" #include "Node.h" #include "LineF.h" #include "MainWindow.h" #include "PropertiesDock.h" #include "MDiscardableDialog.h" #include "Global.h" #include <QtGui/QDockWidget> #include <QtGui/QMessageBox> #include <QtGui/QPainter> CreateAreaInteraction::CreateAreaInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain), theRelation(0), theRoad(0), LastRoad(0), FirstPoint(0,0), FirstNode(0), HaveFirst(false), EndNow(false) { } CreateAreaInteraction::~CreateAreaInteraction() { } QString CreateAreaInteraction::toHtml() { QString help; //help = (MainWindow::tr("LEFT-CLICK to select; LEFT-DRAG to move")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Create Area Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void CreateAreaInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { if (theRoad && (!theRoad->layer() || theRoad->isDeleted())) { // The road was begon and then undoed. Restarting.... HaveFirst = false; theRoad = NULL; view()->setInteracting(false); } if (HaveFirst) { QPointF PreviousPoint; if (theRoad && theRoad->size()) PreviousPoint = COORD_TO_XY(CAST_NODE(theRoad->get(theRoad->size()-1))->position()); else PreviousPoint = COORD_TO_XY(FirstPoint); QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,view()->pixelPerM()*4+2); ::draw(thePainter,TP,Feature::UnknownDirection, PreviousPoint,LastCursor ,4 ,view()->projection()); Coord NewPoint = XY_TO_COORD(LastCursor); const qreal distance = FirstPoint.distanceFrom(NewPoint); QString distanceTag; if (distance < 1.0) distanceTag = QString("%1 m").arg(int(distance * 1000)); else distanceTag = QString("%1 km").arg(distance, 0, 'f', 3); thePainter.drawText(LastCursor + QPointF(10,-10), distanceTag); } FeatureSnapInteraction::paintEvent(anEvent,thePainter); } void CreateAreaInteraction::snapMouseMoveEvent(QMouseEvent* ev, Feature* aFeature) { if (Node* Pt = dynamic_cast<Node*>(aFeature)) LastCursor = COORD_TO_XY(Pt); else if (Way* R = dynamic_cast<Way*>(aFeature)) { Coord P(XY_TO_COORD(ev->pos())); findSnapPointIndex(R, P); LastCursor = COORD_TO_XY(P); } else LastCursor = ev->pos(); view()->update(); } void CreateAreaInteraction::startNewRoad(QMouseEvent* anEvent, Feature* aFeature) { if (Node* Pt = CAST_NODE(aFeature)) FirstNode = Pt; else if (Way* aRoad = CAST_WAY(aFeature)) { Coord P(XY_TO_COORD(anEvent->pos())); CommandList* theList = new CommandList(MainWindow::tr("Create Area %1").arg(aRoad->description()), aRoad); int SnapIdx = findSnapPointIndex(aRoad, P); Node* N = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), P); theList->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(aRoad,N,SnapIdx)); document()->addHistory(theList); view()->invalidate(true, true, false); FirstNode = N; } view()->setInteracting(true); } void CreateAreaInteraction::createNewRoad(CommandList* L) { Node* From = 0; theRoad = g_backend.allocWay(theMain->document()->getDirtyOrOriginLayer()); if (FirstNode) { From = FirstNode; FirstNode = 0; if (!From->isDirty() && !From->hasOSMId() && From->isUploadable()) L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),From,true)); } else { From = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), FirstPoint); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),From,true)); } L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),theRoad,true)); if (M_PREFS->getAutoSourceTag()) { QStringList sl = theMain->document()->getCurrentSourceTags(); if (sl.size()) theRoad->setTag("source", sl.join(";")); } L->add(new WayAddNodeCommand(theRoad,From)); L->setDescription(MainWindow::tr("Area: Create Road %1").arg(theRoad->description())); L->setFeature(theRoad); } void CreateAreaInteraction::finishRoad(CommandList* L) { if (theRelation) L->add(new RelationAddFeatureCommand(theRelation,"inner",theRoad)); else if (LastRoad) { theRelation = g_backend.allocRelation(theMain->document()->getDirtyOrOriginLayer()); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),theRelation,true)); if (M_PREFS->getAutoSourceTag()) { QStringList sl = theMain->document()->getCurrentSourceTags(); if (sl.size()) theRelation->setTag("source", sl.join(";")); } theRelation->setTag("type","multipolygon"); theRelation->add("outer",LastRoad); theRelation->add("inner",theRoad); LastRoad = 0; } HaveFirst = false; LastRoad = theRoad; theRoad = 0; view()->setInteracting(false); MDiscardableMessage dlg(NULL, MainWindow::tr("Add a hole."), MainWindow::tr("Do you want to add a(nother) hole to this area?")); if (dlg.check() == QDialog::Rejected) { EndNow = true; } L->setDescription(MainWindow::tr("Area: Finish Road %1").arg(LastRoad->description())); L->setFeature(LastRoad); } void CreateAreaInteraction::addToRoad(QMouseEvent* anEvent, Feature* Snap, CommandList* L) { Node* Pt = dynamic_cast<Node*>(Snap); Node* To = 0; if (Pt) To = Pt; else if (Way* aRoad = dynamic_cast<Way*>(Snap)) { Coord P(XY_TO_COORD(anEvent->pos())); int SnapIdx = findSnapPointIndex(aRoad, P); Node* N = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), P); CommandList* theList = new CommandList(MainWindow::tr("Area: Add node %1 to Road %2").arg(N->description()).arg(theRoad->description()), N); theList->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(aRoad,N,SnapIdx)); document()->addHistory(theList); view()->invalidate(true, true, false); To = N; } if (!To) { To = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD(anEvent->pos())); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),To,true)); L->setDescription(MainWindow::tr("Area: Add node %1 to Road %2").arg(To->description()).arg(theRoad->description())); L->setFeature(To); } else { if (!To->isDirty() && !To->hasOSMId() && To->isUploadable()) L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),To,true)); } L->add(new WayAddNodeCommand(theRoad,To)); if (To == theRoad->get(0)) finishRoad(L); } void CreateAreaInteraction::snapMouseReleaseEvent(QMouseEvent* anEvent, Feature* aFeature) { if (M_PREFS->getMouseSingleButton() && anEvent->button() == Qt::RightButton) { LastRoad = NULL; theRelation = NULL; HaveFirst = false; EndNow = false; view()->setInteracting(false); } else if ( !panning() ) { if (!HaveFirst) { HaveFirst = true; startNewRoad(anEvent, aFeature); } else { CommandList* L = new CommandList(); if (!theRoad) createNewRoad(L); addToRoad(anEvent, aFeature, L); document()->addHistory(L); view()->invalidate(true, true, false); if (theRelation) theMain->properties()->setSelection(theRelation); else theMain->properties()->setSelection(theRoad); } FirstPoint = XY_TO_COORD(anEvent->pos()); if (EndNow) { if (theRelation) theMain->properties()->setSelection(theRelation); else theMain->properties()->setSelection(LastRoad); LastRoad = NULL; theRelation = NULL; HaveFirst = false; EndNow = false; view()->setInteracting(false); } } } #ifndef _MOBILE QCursor CreateAreaInteraction::cursor() const { return QCursor(Qt::CrossCursor); } #endif void CreateAreaInteraction::closeAndFinish() { view()->setInteracting(false); if (!theRoad || theRoad->size() < 3) return; Node* N = theRoad->getNode(0); CommandList* theList = new CommandList(MainWindow::tr("Close Area %1").arg(theRoad->description()), theRoad); addToRoad(NULL, N, theList); document()->addHistory(theList); view()->invalidate(true, true, false); if (theRelation) theMain->properties()->setSelection(theRelation); else theMain->properties()->setSelection(theRoad); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateAreaInteraction.h������������������������������������������0000664�0000000�0000000�00000002304�11770671653�0023562�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_INTERACTION_CREATEAREAINTERACTION_H #define MERKATOR_INTERACTION_CREATEAREAINTERACTION_H #include "Interaction.h" class MainWindow; class Way; class Way; class QDockWidget; class CreateAreaInteraction : public FeatureSnapInteraction { Q_OBJECT public: CreateAreaInteraction(MainWindow* Main); ~CreateAreaInteraction(); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif virtual void closeAndFinish(); private: void startNewRoad(QMouseEvent* anEvent, Feature* Snap); void createNewRoad(CommandList* L); void addToRoad(QMouseEvent* anEvent, Feature* Snap, CommandList* L); void finishRoad(CommandList* L); QPoint LastCursor; Relation* theRelation; Way* theRoad; Way* LastRoad; Coord FirstPoint; Node* FirstNode; bool HaveFirst, EndNow; }; #endif // INTERACTION\CREATEDOUBLEWAYINTERACTION_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateDoubleWayDock.ui�������������������������������������������0000664�0000000�0000000�00000002714�11770671653�0023401�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>CreateDoubleWayDock</class> <widget class="QWidget" name="CreateDoubleWayDock" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>400</width> <height>300</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> <layout class="QVBoxLayout" > <property name="margin" > <number>9</number> </property> <property name="spacing" > <number>6</number> </property> <item> <widget class="QCheckBox" name="DriveRight" > <property name="text" > <string>Driving at the right side of the road</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" > <property name="margin" > <number>0</number> </property> <property name="spacing" > <number>6</number> </property> <item> <widget class="QLabel" name="label" > <property name="text" > <string>Distance between two roads</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="RoadDistance" /> </item> </layout> </item> <item> <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> </property> <property name="sizeHint" > <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <resources/> <connections/> </ui> ����������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateDoubleWayInteraction.cpp�����������������������������������0000664�0000000�0000000�00000024724�11770671653�0025152�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "CreateDoubleWayInteraction.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Painting.h" #include "Way.h" #include "Node.h" #include "LineF.h" #include "MainWindow.h" #include "MerkaartorPreferences.h" #include "Global.h" #include <QtGui/QDockWidget> #include <QtGui/QPainter> CreateDoubleWayInteraction::CreateDoubleWayInteraction(MainWindow* aMain) : Interaction(aMain), R1(0), R2(0), FirstPoint(0,0), HaveFirst(false), theDock(0) { #ifndef _MOBILE theDock = new QDockWidget(theMain); QWidget* DockContent = new QWidget(theDock); DockData.setupUi(DockContent); theDock->setWidget(DockContent); theDock->setAllowedAreas(Qt::LeftDockWidgetArea); theMain->addDockWidget(Qt::LeftDockWidgetArea, theDock); theDock->show(); DockData.DriveRight->setChecked(M_PREFS->getrightsidedriving()); DockData.RoadDistance->setText(QString().setNum(M_PREFS->getdoubleroaddistance())); theMain->view()->setCursor(cursor()); #endif } CreateDoubleWayInteraction::~CreateDoubleWayInteraction() { M_PREFS->setrightsidedriving(DockData.DriveRight->isChecked()); M_PREFS->setdoubleroaddistance(DockData.RoadDistance->text().toDouble()); delete theDock; view()->update(); } QString CreateDoubleWayInteraction::toHtml() { QString help; //help = (MainWindow::tr("LEFT-CLICK to select; LEFT-DRAG to move")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Create double way Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void CreateDoubleWayInteraction::paintEvent(QPaintEvent* /* anEvent */, QPainter& thePainter) { if (R1 && (!R1->layer() || R1->isDeleted())) { // The roads were begon and then undoed. Restarting.... HaveFirst = false; view()->setInteracting(false); R1 = R2 = NULL; } qreal rB = view()->pixelPerM()*DockData.RoadDistance->text().toDouble()/2; if (!HaveFirst) { thePainter.setPen(QColor(0,0,0)); thePainter.drawEllipse(int(LastCursor.x()-rB),int(LastCursor.y()-rB),int(rB*2),int(rB*2)); } else { Coord PreviousPoint; if (R1 && R1->size()) PreviousPoint = PreviousPoints[R1->size()-1]; else PreviousPoint = FirstPoint; if (distance(COORD_TO_XY(PreviousPoint), LastCursor) > 1) { qreal rA = FirstDistance * view()->pixelPerM()/2; LineF FA1(COORD_TO_XY(PreviousPoint),LastCursor); LineF FA2(FA1); LineF FB1(FA1); LineF FB2(FA1); FA1.slide(-rA); FA2.slide(rA); FB1.slide(-rB); FB2.slide(rB); QPointF A1(FA1.project(COORD_TO_XY(PreviousPoint))); QPointF A2(FA2.project(COORD_TO_XY(PreviousPoint))); QPointF B1(FB1.project(LastCursor)); QPointF B2(FB2.project(LastCursor)); QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,view()->pixelPerM()*4); if (DockData.DriveRight->isChecked()) { ::draw(thePainter,TP,Feature::OneWay, B1,A1,rB/4,view()->projection()); ::draw(thePainter,TP,Feature::OneWay, A2,B2,rB/4,view()->projection()); } else { ::draw(thePainter,TP,Feature::OneWay, A1,B1,rB/4,view()->projection()); ::draw(thePainter,TP,Feature::OneWay, B2,A2,rB/4,view()->projection()); } } } } void CreateDoubleWayInteraction::mouseMoveEvent(QMouseEvent* event) { LastCursor = event->pos(); Interaction::mouseMoveEvent(event); view()->update(); Interaction::mouseMoveEvent(event); } void CreateDoubleWayInteraction::mouseReleaseEvent(QMouseEvent* anEvent) { if (M_PREFS->getMouseSingleButton() && anEvent->button() == Qt::RightButton) { HaveFirst = false; view()->update(); } Interaction::mouseReleaseEvent(anEvent); } void CreateDoubleWayInteraction::mousePressEvent(QMouseEvent* anEvent) { if (anEvent->buttons() & Qt::LeftButton) { if (!HaveFirst) { HaveFirst = true; view()->setInteracting(true); FirstPoint = XY_TO_COORD(anEvent->pos()); FirstDistance = DockData.RoadDistance->text().toDouble(); } else if (R1) { int i1 = R1->size()-1; int i2 = 1; LineF P1( COORD_TO_XY(R1->getNode(i1-1)), COORD_TO_XY(R1->getNode(i1))); LineF P2( COORD_TO_XY(R2->getNode(i2-1)), COORD_TO_XY(R2->getNode(i2))); Coord PreviousPoint = PreviousPoints[R1->size()-1]; if (distance(COORD_TO_XY(PreviousPoint), LastCursor) > 1) { qreal rB = view()->pixelPerM()*DockData.RoadDistance->text().toDouble()/2; qreal rA = FirstDistance * view()->pixelPerM()/2; LineF FA1(COORD_TO_XY(PreviousPoint),LastCursor); LineF FA2(FA1); LineF FB1(FA1); LineF FB2(FA1); qreal Modifier = DockData.DriveRight->isChecked()?1:-1; FA1.slide(rA*Modifier); FA2.slide(-rA*Modifier); FB1.slide(rB*Modifier); FB2.slide(-rB*Modifier); LineF N1(FA1.project(COORD_TO_XY(PreviousPoint)), FB1.project(LastCursor)); LineF N2(FA2.project(COORD_TO_XY(PreviousPoint)), FB2.project(LastCursor)); Node* A1; Node* A2; CommandList* L = new CommandList(MainWindow::tr("Add nodes to double-way Road %1").arg(R1->id().numId), R1); A1 = R1->getNode(i1); A2 = R2->getNode(i2-1); L->add(new MoveNodeCommand(A1,XY_TO_COORD( P1.intersectionWith(N1).toPoint()))); L->add(new MoveNodeCommand(A2,XY_TO_COORD( P2.intersectionWith(N2).toPoint()))); Node* B1 = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD( FB1.project(LastCursor).toPoint())); Node* B2 = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD( FB2.project(LastCursor).toPoint())); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),B1,true)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),B2,true)); L->add(new WayAddNodeCommand(R1,B1)); L->add(new WayAddNodeCommand(R2,B2,(int)0)); document()->addHistory(L); view()->invalidate(true, true, false); //FirstPoint = view()->projection().inverse(anEvent->pos()); PreviousPoints[R1->size()-1] = XY_TO_COORD(anEvent->pos()); FirstDistance = DockData.RoadDistance->text().toDouble(); } } else { Coord PreviousPoint = FirstPoint; if (distance(COORD_TO_XY(PreviousPoint), LastCursor) > 1) { qreal rB = view()->pixelPerM()*DockData.RoadDistance->text().toDouble()/2; qreal rA = FirstDistance * view()->pixelPerM()/2; LineF FA1(COORD_TO_XY(PreviousPoint),LastCursor); LineF FA2(FA1); LineF FB1(FA1); LineF FB2(FA1); qreal Modifier = DockData.DriveRight->isChecked()?1:-1; FA1.slide(rA*Modifier); FA2.slide(-rA*Modifier); FB1.slide(rB*Modifier); FB2.slide(-rB*Modifier); Node* A1 = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD( FA1.project(COORD_TO_XY(PreviousPoint)).toPoint())); Node* A2 = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD( FA2.project(COORD_TO_XY(PreviousPoint)).toPoint())); Node* B1 = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD( FB1.project(LastCursor).toPoint())); Node* B2 = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD( FB2.project(LastCursor).toPoint())); R1 = g_backend.allocWay(theMain->document()->getDirtyOrOriginLayer()); R2 = g_backend.allocWay(theMain->document()->getDirtyOrOriginLayer()); CommandList* L = new CommandList(MainWindow::tr("Create double-way Road %1").arg(R1->id().numId), R1); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),A1,true)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),A2,true)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),B1,true)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),B2,true)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),R1,true)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),R2,true)); if (M_PREFS->getAutoSourceTag()) { QStringList sl = theMain->document()->getCurrentSourceTags(); if (sl.size()) { R1->setTag("source", sl.join(";")); R2->setTag("source", sl.join(";")); } } R1->setTag("oneway","yes"); R2->setTag("oneway","yes"); L->add(new WayAddNodeCommand(R1,A1)); L->add(new WayAddNodeCommand(R1,B1)); L->add(new WayAddNodeCommand(R2,B2)); L->add(new WayAddNodeCommand(R2,A2)); document()->addHistory(L); view()->invalidate(true, true, false); //FirstPoint = view()->projection().inverse(anEvent->pos()); PreviousPoints[R1->size()-1] = XY_TO_COORD(anEvent->pos()); FirstDistance = DockData.RoadDistance->text().toDouble(); } } } else Interaction::mousePressEvent(anEvent); } #ifndef _MOBILE QCursor CreateDoubleWayInteraction::cursor() const { return QCursor(Qt::CrossCursor); } #endif ��������������������������������������������merkaartor-0.18.1/src/Interactions/CreateDoubleWayInteraction.h�������������������������������������0000664�0000000�0000000�00000002066�11770671653�0024612�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_INTERACTION_CREATEDOUBLEWAYINTERACTION_H #define MERKATOR_INTERACTION_CREATEDOUBLEWAYINTERACTION_H #include <ui_CreateDoubleWayDock.h> #include "Interaction.h" class MainWindow; class Way; class QDockWidget; class CreateDoubleWayInteraction : public Interaction { Q_OBJECT public: CreateDoubleWayInteraction(MainWindow* Main); ~CreateDoubleWayInteraction(); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseReleaseEvent(QMouseEvent* event); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: QDockWidget* theDock; Ui::CreateDoubleWayDock DockData; QPoint LastCursor; Way* R1; Way* R2; Coord FirstPoint; qreal FirstDistance; bool HaveFirst; QHash<int, Coord> PreviousPoints; }; #endif // INTERACTION\CREATEDOUBLEWAYINTERACTION_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateNodeInteraction.cpp����������������������������������������0000664�0000000�0000000�00000007525�11770671653�0024144�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "CreateNodeInteraction.h" #include "MainWindow.h" #include "PropertiesDock.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "Projection.h" #include "Node.h" #include "LineF.h" #include "MoveNodeInteraction.h" #include "Global.h" #include <QList> CreateNodeInteraction::CreateNodeInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain) , theMoveInteraction(0) { } CreateNodeInteraction::~CreateNodeInteraction(void) { SAFE_DELETE(theMoveInteraction); } QString CreateNodeInteraction::toHtml() { QString help; //help = (MainWindow::tr("LEFT-CLICK to select; LEFT-DRAG to move")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Create node Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void CreateNodeInteraction::snapMousePressEvent(QMouseEvent * ev, Feature* aFeat) { if (CAST_NODE(aFeat)) { return theMoveInteraction->snapMousePressEvent(ev, aFeat); } else { SAFE_DELETE(theMoveInteraction); #ifndef _MOBILE theMain->view()->setCursor(cursor()); #endif } } void CreateNodeInteraction::snapMouseMoveEvent(QMouseEvent* ev, Feature* aFeat) { if (CAST_NODE(aFeat)) { if (!theMoveInteraction) { theMoveInteraction = new MoveNodeInteraction(theMain); } #ifndef _MOBILE theMain->view()->setCursor(theMoveInteraction->cursor()); } else theMain->view()->setCursor(cursor()); #else } #endif if (theMoveInteraction) return theMoveInteraction->snapMouseMoveEvent(ev, aFeat); } void CreateNodeInteraction::snapMouseReleaseEvent(QMouseEvent * ev, Feature* aFeat) { if (theMoveInteraction) { theMoveInteraction->snapMouseReleaseEvent(ev, aFeat); return; } Way* aRoad = dynamic_cast<Way*>(aFeat); if (!aFeat || aRoad) { SAFE_DELETE(theMoveInteraction); Coord P(XY_TO_COORD(ev->pos())); createNode(P, aFeat); theMoveInteraction = new MoveNodeInteraction(theMain); #ifndef _MOBILE theMain->view()->setCursor(theMoveInteraction->cursor()); #endif } } #ifndef _MOBILE QCursor CreateNodeInteraction::cursor() const { return QCursor(Qt::CrossCursor); } #endif void CreateNodeInteraction::createNode(Coord P, Feature* aFeat) { Node* N; CommandList* theList; Way* aRoad = dynamic_cast<Way*>(aFeat); if (aRoad) { g_Merk_MainWindow->properties()->setSelection(0); theList = new CommandList(MainWindow::tr("Create node in Road: %1").arg(aRoad->id().numId), aRoad); int SnapIdx = findSnapPointIndex(aRoad, P); N = g_backend.allocNode(g_Merk_MainWindow->document()->getDirtyOrOriginLayer(aRoad->layer()), P); theList->add(new AddFeatureCommand(g_Merk_MainWindow->document()->getDirtyOrOriginLayer(aRoad->layer()),N,true)); theList->add(new WayAddNodeCommand(aRoad,N,SnapIdx,g_Merk_MainWindow->document()->getDirtyOrOriginLayer(aRoad->layer()))); } else { N = g_backend.allocNode(g_Merk_MainWindow->document()->getDirtyOrOriginLayer(), P); theList = new CommandList(MainWindow::tr("Create POI %1").arg(N->id().numId), N); theList->add(new AddFeatureCommand(g_Merk_MainWindow->document()->getDirtyOrOriginLayer(),N,true)); if (M_PREFS->getAutoSourceTag()) { QStringList sl = g_Merk_MainWindow->document()->getCurrentSourceTags(); if (sl.size()) N->setTag("source", sl.join(";")); } N->updateMeta(); } g_Merk_MainWindow->document()->addHistory(theList); g_Merk_MainWindow->properties()->setSelection(N); g_Merk_MainWindow->view()->invalidate(true, true, false); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateNodeInteraction.h������������������������������������������0000664�0000000�0000000�00000001402�11770671653�0023575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_CREATENODEINTERATION_H_ #define MERKAARTOR_CREATENODEINTERATION_H_ #include "Interaction.h" class MoveNodeInteraction; class CreateNodeInteraction : public FeatureSnapInteraction { public: CreateNodeInteraction(MainWindow* aMain); ~CreateNodeInteraction(void); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif static void createNode(Coord P, Feature* aFeat); private: MoveNodeInteraction* theMoveInteraction; }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreatePolygonInteraction.cpp�������������������������������������0000664�0000000�0000000�00000015123�11770671653�0024677�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "CreatePolygonInteraction.h" #include "MainWindow.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Painting.h" #include "Way.h" #include "Node.h" #include "LineF.h" #include "PropertiesDock.h" #include "MerkaartorPreferences.h" #include "Global.h" #include <QtGui/QPainter> #include <QInputDialog> #include <math.h> CreatePolygonInteraction::CreatePolygonInteraction(MainWindow* aMain, int sides, const QList< QPair <QString, QString> >& tags) : Interaction(aMain), Origin(0,0), Sides(sides), HaveOrigin(false), bAngle(0.0), bScale(QPointF(1., 1.)), theTags(tags) { #ifndef _MOBILE theMain->view()->setCursor(cursor()); #endif } CreatePolygonInteraction::~CreatePolygonInteraction() { view()->update(); } QString CreatePolygonInteraction::toHtml() { QString help; help = (MainWindow::tr("LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end")); QStringList helpList = help.split(";"); QString desc; desc = QString("<big><b>%1</b></big>").arg(MainWindow::tr("Create Polygon Interaction")); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "<hr/>"; S += "<ul style=\"margin-left: 0px; padding-left: 0px;\">"; for (int i=0; i<helpList.size(); ++i) { S+= "<li>" + helpList[i] + "</li>"; } S += "</ul>"; S += "</body></html>"; return S; } void CreatePolygonInteraction::mousePressEvent(QMouseEvent * event) { if (event->buttons() & Qt::LeftButton) { if (!HaveOrigin) { HaveOrigin = true; view()->setInteracting(true); Origin = XY_TO_COORD(event->pos()); OriginF = QPointF(event->pos()); bAngle = 0.; bScale = QPointF(1., 1.); } else { QPointF CenterF(0.5, 0.5); qreal Radius = 0.5; if (Sides == 4) Radius = sqrt(2.)/2.; qreal Angle = 2*M_PI/Sides; QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,view()->pixelPerM()*4); QMatrix m; m.translate(OriginF.x(), OriginF.y()); m.rotate(bAngle); m.scale(bScale.x(), bScale.y()); QPointF Prev(CenterF.x()+cos(-Angle/2)*Radius,CenterF.y()+sin(-Angle/2)*Radius); Node* First = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD(m.map(Prev).toPoint())); Way* R = g_backend.allocWay(theMain->document()->getDirtyOrOriginLayer()); CommandList* L = new CommandList(MainWindow::tr("Create Polygon %1").arg(R->id().numId), R); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),R,true)); R->add(First); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),First,true)); for (qreal a = 2*M_PI - Angle*3/2; a>0; a-=Angle) { QPointF Next(CenterF.x()+cos(a)*Radius,CenterF.y()+sin(a)*Radius); Node* New = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD(m.map(Next).toPoint())); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),New,true)); R->add(New); } R->add(First); if (M_PREFS->getAutoSourceTag()) { QStringList sl = theMain->document()->getCurrentSourceTags(); if (sl.size()) R->setTag("source", sl.join(";")); } QPair <QString, QString> tag; foreach (tag, theTags) { R->setTag(tag.first, tag.second); } for (FeatureIterator it(document()); !it.isEnd(); ++it) { Way* W1 = dynamic_cast<Way*>(it.get()); if (W1 && (W1 != R)) Way::createJunction(theMain->document(), L, R, W1, true); } theMain->properties()->setSelection(R); document()->addHistory(L); view()->setInteracting(false); view()->invalidate(true, true, false); theMain->launchInteraction(0); } } else Interaction::mousePressEvent(event); } void CreatePolygonInteraction::paintEvent(QPaintEvent* , QPainter& thePainter) { if (HaveOrigin) { QPointF CenterF(0.5, 0.5); qreal Radius = 0.5; if (Sides == 4) Radius = sqrt(2.)/2.; QMatrix m; m.translate(OriginF.x(), OriginF.y()); m.rotate(bAngle); m.scale(bScale.x(), bScale.y()); QPolygonF thePoly = m.map(QRectF(QPointF(0.0, 0.0), QPointF(1.0, 1.0))); thePainter.setPen(QPen(QColor(0,0,255),1,Qt::DotLine)); thePainter.drawPolygon(thePoly); qreal Angle = 2*M_PI/Sides; QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,view()->pixelPerM()*4+1); QPointF Prev(CenterF.x()+cos(-Angle/2)*Radius,CenterF.y()+sin(-Angle/2)*Radius); for (qreal a = 2*M_PI - Angle*3/2; a>0; a-=Angle) { QPointF Next(CenterF.x()+cos(a)*Radius,CenterF.y()+sin(a)*Radius); ::draw(thePainter,TP,Feature::UnknownDirection, m.map(Prev),m.map(Next),4,view()->projection()); Prev = Next; } QPointF Next(CenterF.x()+cos(-Angle/2)*Radius,CenterF.y()+sin(-Angle/2)*Radius); ::draw(thePainter,TP,Feature::UnknownDirection, m.map(Prev),m.map(Next),4,view()->projection()); } } void CreatePolygonInteraction::mouseMoveEvent(QMouseEvent* event) { if (HaveOrigin) { QMatrix m; m.translate(OriginF.x(), OriginF.y()); m.rotate(bAngle); if (event->modifiers() & Qt::ShiftModifier) { bAngle += radToAng(angle(m.inverted().map(LastCursor), m.inverted().map(event->pos()))); QMatrix m2; m2.translate(OriginF.x(), OriginF.y()); m2.rotate(bAngle); bScale = m2.inverted().map(event->pos()); } else { bScale = m.inverted().map(event->pos()); } view()->update(); } LastCursor = event->pos(); Interaction::mouseMoveEvent(event); } void CreatePolygonInteraction::mouseReleaseEvent(QMouseEvent* event) { if (M_PREFS->getMouseSingleButton() && event->button() == Qt::RightButton) { HaveOrigin = false; view()->setInteracting(false); view()->update(); } Interaction::mouseReleaseEvent(event); } #ifndef _MOBILE QCursor CreatePolygonInteraction::cursor() const { return QCursor(Qt::CrossCursor); } #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreatePolygonInteraction.h���������������������������������������0000664�0000000�0000000�00000001752�11770671653�0024347�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef INTERACTION_CREATEPOLYGONINTERACTION_H #define INTERACTION_CREATEPOLYGONINTERACTION_H #include "Interaction.h" #include "Coord.h" class CreatePolygonInteraction : public Interaction { Q_OBJECT public: CreatePolygonInteraction(MainWindow* Main, int sides, const QList< QPair <QString, QString> >& tags); ~CreatePolygonInteraction(); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseReleaseEvent(QMouseEvent* event); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: Coord Origin; QPointF OriginF; int Sides; QPointF LastCursor; bool HaveOrigin; qreal bAngle; QPointF bScale; QList< QPair <QString, QString> > theTags; }; #endif // INTERACTION\CreatePolygonInteraction_H ����������������������merkaartor-0.18.1/src/Interactions/CreateRoundaboutDock.ui������������������������������������������0000664�0000000�0000000�00000001752�11770671653�0023631�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>CreateRoundaboutDock</class> <widget class="QWidget" name="CreateRoundaboutDock" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>364</width> <height>39</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> <layout class="QVBoxLayout" > <property name="margin" > <number>9</number> </property> <property name="spacing" > <number>6</number> </property> <item> <widget class="QCheckBox" name="DriveRight" > <property name="text" > <string>Driving at the right side of the road</string> </property> </widget> </item> <item> <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> </property> <property name="sizeHint" > <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <resources/> <connections/> </ui> ����������������������merkaartor-0.18.1/src/Interactions/CreateRoundaboutInteraction.cpp����������������������������������0000664�0000000�0000000�00000014363�11770671653�0025377�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "CreateRoundaboutInteraction.h" #include "MainWindow.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Painting.h" #include "Way.h" #include "Node.h" #include "LineF.h" #include "PropertiesDock.h" #include "MerkaartorPreferences.h" #include "Global.h" #include <QtGui/QDockWidget> #include <QtGui/QPainter> #include <math.h> CreateRoundaboutInteraction::CreateRoundaboutInteraction(MainWindow* aMain) : Interaction(aMain), Center(0,0), HaveCenter(false), theDock(0) { #ifndef _MOBILE theDock = new QDockWidget(theMain); QWidget* DockContent = new QWidget(theDock); DockData.setupUi(DockContent); theDock->setWidget(DockContent); theDock->setAllowedAreas(Qt::LeftDockWidgetArea); theMain->addDockWidget(Qt::LeftDockWidgetArea, theDock); theDock->show(); DockData.DriveRight->setChecked(M_PREFS->getrightsidedriving()); theMain->view()->setCursor(cursor()); #endif } CreateRoundaboutInteraction::~CreateRoundaboutInteraction() { M_PREFS->setrightsidedriving(DockData.DriveRight->isChecked()); delete theDock; view()->update(); } QString CreateRoundaboutInteraction::toHtml() { QString help; //help = (MainWindow::tr("LEFT-CLICK to select; LEFT-DRAG to move")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Create roundabout Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void CreateRoundaboutInteraction::mousePressEvent(QMouseEvent * event) { if (event->buttons() & Qt::LeftButton) { if (!HaveCenter) { HaveCenter = true; view()->setInteracting(true); Center = XY_TO_COORD(event->pos()); } else { QPointF CenterF(COORD_TO_XY(Center)); qreal Radius = distance(CenterF,LastCursor)/view()->pixelPerM(); qreal Precision = 2.49; if (Radius<2.5) Radius = 2.5; qreal Angle = 2*acos(1-Precision/Radius); qreal Steps = ceil(2*M_PI/Angle); Angle = 2*M_PI/Steps; Radius *= view()->pixelPerM(); qreal Modifier = DockData.DriveRight->isChecked()?-1:1; QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,view()->pixelPerM()*4+1); QPointF Prev(CenterF.x()+cos(Modifier*Angle/2)*Radius,CenterF.y()+sin(Modifier*Angle/2)*Radius); Node* First = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD(Prev.toPoint())); Way* R = g_backend.allocWay(theMain->document()->getDirtyOrOriginLayer()); CommandList* L = new CommandList(MainWindow::tr("Create Roundabout %1").arg(R->id().numId), R); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),R,true)); R->add(First); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),First,true)); if (M_PREFS->getAutoSourceTag()) { QStringList sl = theMain->document()->getCurrentSourceTags(); if (sl.size()) R->setTag("source", sl.join(";")); } // "oneway" is implied on roundabouts //R->setTag("oneway","yes"); R->setTag("junction","roundabout"); for (qreal a = Angle*3/2; a<2*M_PI; a+=Angle) { QPointF Next(CenterF.x()+cos(Modifier*a)*Radius,CenterF.y()+sin(Modifier*a)*Radius); Node* New = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD(Next.toPoint())); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),New,true)); R->add(New); } R->add(First); for (FeatureIterator it(document()); !it.isEnd(); ++it) { Way* W1 = CAST_WAY(it.get()); if (W1 && (W1 != R)) Way::createJunction(theMain->document(), L, R, W1, true); } theMain->properties()->setSelection(R); document()->addHistory(L); view()->setInteracting(false); view()->invalidate(true, true, false); theMain->launchInteraction(0); } } else Interaction::mousePressEvent(event); } void CreateRoundaboutInteraction::mouseMoveEvent(QMouseEvent* event) { LastCursor = event->pos(); if (HaveCenter) view()->update(); Interaction::mouseMoveEvent(event); } void CreateRoundaboutInteraction::mouseReleaseEvent(QMouseEvent* anEvent) { if (M_PREFS->getMouseSingleButton() && anEvent->button() == Qt::RightButton) { HaveCenter = false; view()->setInteracting(false); view()->update(); } Interaction::mouseReleaseEvent(anEvent); } void CreateRoundaboutInteraction::paintEvent(QPaintEvent* , QPainter& thePainter) { if (HaveCenter) { QPointF CenterF(COORD_TO_XY(Center)); qreal Radius = distance(CenterF,LastCursor)/view()->pixelPerM(); qreal Precision = 1.99; if (Radius<2) Radius = 2; qreal Angle = 2*acos(1-Precision/Radius); qreal Steps = ceil(2*M_PI/Angle); Angle = 2*M_PI/Steps; Radius *= view()->pixelPerM(); qreal Modifier = DockData.DriveRight->isChecked()?-1:1; QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,view()->pixelPerM()*4); QPointF Prev(CenterF.x()+cos(Modifier*Angle/2)*Radius,CenterF.y()+sin(Modifier*Angle/2)*Radius); for (qreal a = Angle*3/2; a<2*M_PI; a+=Angle) { QPointF Next(CenterF.x()+cos(Modifier*a)*Radius,CenterF.y()+sin(Modifier*a)*Radius); ::draw(thePainter,TP,Feature::OneWay, Prev,Next,4,view()->projection()); Prev = Next; } QPointF Next(CenterF.x()+cos(Modifier*Angle/2)*Radius,CenterF.y()+sin(Modifier*Angle/2)*Radius); ::draw(thePainter,TP,Feature::OneWay, Prev,Next,4,view()->projection()); } } #ifndef _MOBILE QCursor CreateRoundaboutInteraction::cursor() const { return QCursor(Qt::CrossCursor); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateRoundaboutInteraction.h������������������������������������0000664�0000000�0000000�00000001667�11770671653�0025047�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef INTERACTION_CREATEROUNDABOUTINTERACTION_H #define INTERACTION_CREATEROUNDABOUTINTERACTION_H #include <ui_CreateRoundaboutDock.h> #include "Interaction.h" #include "Coord.h" class QDockWidget; class CreateRoundaboutInteraction : public Interaction { Q_OBJECT public: CreateRoundaboutInteraction(MainWindow* aMain); ~CreateRoundaboutInteraction(); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseReleaseEvent(QMouseEvent* event); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: QDockWidget* theDock; Ui::CreateRoundaboutDock DockData; Coord Center; QPointF LastCursor; bool HaveCenter; }; #endif // INTERACTION\CREATEROUNDABOUTINTERACTION_H �������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateSingleWayInteraction.cpp�����������������������������������0000664�0000000�0000000�00000034310�11770671653�0025151�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "CreateSingleWayInteraction.h" #include "CreateNodeInteraction.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Painting.h" #include "Way.h" #include "Node.h" #include "LineF.h" #include "MainWindow.h" #include "PropertiesDock.h" #include "Global.h" #include <QtGui/QDockWidget> #include <QtGui/QPainter> CreateSingleWayInteraction::CreateSingleWayInteraction(MainWindow* aMain, Node *firstNode, bool aCurved) : FeatureSnapInteraction(aMain), theRoad(0), FirstPoint(0,0), FirstNode(firstNode), HaveFirst(false), Prepend(false), IsCurved(aCurved), Creating(false) , SnapAngle(0) , ParallelMode(false) { if (firstNode) { FirstPoint = firstNode->position(); LastCursor = COORD_TO_XY(FirstPoint); HaveFirst = true; view()->setInteracting(true); if ((theRoad = Way::GetSingleParentRoad(firstNode))) { if (theRoad->isExtrimity(firstNode)) { Prepend = (theRoad->get(0) == firstNode) ? true : false; } else theRoad = NULL; } } } CreateSingleWayInteraction::~CreateSingleWayInteraction() { } void CreateSingleWayInteraction::setSnapAngle(qreal angle) { SnapAngle = angle; } void CreateSingleWayInteraction::setParallelMode(bool val) { ParallelMode = val; } QString CreateSingleWayInteraction::toHtml() { QString help; //help = (MainWindow::tr("LEFT-CLICK to select; LEFT-DRAG to move")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Create way Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void CreateSingleWayInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { if (theRoad && (!theRoad->layer() || theRoad->isDeleted())) { // The road was begon and then undoed. Restarting.... HaveFirst = false; theRoad = NULL; Creating = false; view()->setInteracting(false); } if (HaveFirst) { QPointF PreviousPoint; if (theRoad && theRoad->size() && !Prepend) PreviousPoint = COORD_TO_XY(CAST_NODE(theRoad->get(theRoad->size()-1))->position()); else PreviousPoint = COORD_TO_XY(FirstPoint); QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,qBound(3, int(view()->pixelPerM()*4+2), 10)); ::draw(thePainter,TP,Feature::UnknownDirection, PreviousPoint,LastCursor ,4 ,view()->projection()); Coord NewPoint = XY_TO_COORD(LastCursor); const qreal distance = FirstPoint.distanceFrom(NewPoint); QString distanceTag; if (distance < 1.0) distanceTag = QString("%1 m").arg(int(distance * 1000)); else distanceTag = QString("%1 km").arg(distance, 0, 'f', 3); thePainter.drawText(LastCursor + QPointF(10,-10), distanceTag); } FeatureSnapInteraction::paintEvent(anEvent,thePainter); } void CreateSingleWayInteraction::snapMouseMoveEvent(QMouseEvent* ev, Feature* lastSnap) { if (Node* Pt = dynamic_cast<Node*>(lastSnap)) LastCursor = COORD_TO_XY(Pt); else if (Way* R = dynamic_cast<Way*>(lastSnap)) { Coord P(XY_TO_COORD(ev->pos())); findSnapPointIndex(R, P); LastCursor = COORD_TO_XY(P); } else if (theRoad && theRoad->size() > 1 && SnapAngle) { QLineF l1(COORD_TO_XY(theRoad->getNode(theRoad->size()-1)), COORD_TO_XY(theRoad->getNode(theRoad->size()-2))); QLineF l2(COORD_TO_XY(theRoad->getNode(theRoad->size()-1)), ev->pos()); qreal a = l1.angleTo(l2); a = qRound(a/SnapAngle) * SnapAngle; l2.setAngle(l1.angle() + a); LastCursor = l2.p2().toPoint(); } else if (HaveFirst && ParallelMode) { #define CLEAR_DISTANCE 200 QPointF PreviousPoint; if (theRoad && theRoad->size() && !Prepend) PreviousPoint = COORD_TO_XY(CAST_NODE(theRoad->get(theRoad->size()-1))->position()); else PreviousPoint = COORD_TO_XY(FirstPoint); CoordBox HotZone(XY_TO_COORD(ev->pos()-QPoint(CLEAR_DISTANCE, CLEAR_DISTANCE)),XY_TO_COORD(ev->pos()+QPoint(CLEAR_DISTANCE, CLEAR_DISTANCE))); qreal BestDistanceNW = 9999, AngleNW = 0; qreal BestDistanceNE = 9999, AngleNE = 0; qreal* BestDistance; qreal* BestAngle; qreal curAngle; Way* R; for (int j=0; j<document()->layerSize(); ++j) { QList < Feature* > ret = g_backend.indexFind(document()->getLayer(j), HotZone); foreach(Feature* F, ret) { if (!(R = CAST_WAY(F))) continue; if (R->isHidden()) continue; if (R->notEverythingDownloaded()) continue; for (int i=0; i<R->size()-1; ++i) { LineF F(COORD_TO_XY(R->getNode(i)),COORD_TO_XY(R->getNode(i+1))); qreal D = F.capDistance(ev->pos()); if (D < CLEAR_DISTANCE) { QLineF l(COORD_TO_XY(R->getNode(i)), COORD_TO_XY(R->getNode(i+1))); qreal a = l.angle(); if ((a >= 0 && a < 90) || (a < -270 && a >= -360)) { BestDistance = &BestDistanceNE; BestAngle = &AngleNE; curAngle = a; } else if ((a >= 90 && a < 180) || (a < -180 && a >= -270)) { BestDistance = &BestDistanceNW; BestAngle = &AngleNW; curAngle = a; } else if ((a >= 180 && a < 270) || (a < -90 && a >= -180)) { BestDistance = &BestDistanceNE; BestAngle = &AngleNE; curAngle = a - 180; } else if ((a >= 270 && a < 360) || (a < 0 && a >= -90)) { BestDistance = &BestDistanceNW; BestAngle = &AngleNW; curAngle = a - 180; } if (D < *BestDistance) { *BestDistance = D; *BestAngle = curAngle; } } } qDebug() << BestDistanceNE << BestDistanceNW << AngleNE << AngleNW; } } QLineF l(PreviousPoint, ev->pos()); qreal a = l.angle(); if ((a >= 0 && a < 90) || (a < -270 && a >= -360)) { if (BestDistanceNE < 9999) a = AngleNE; } else if ((a >= 90 && a < 180) || (a < -180 && a >= -270)) { if (BestDistanceNW < 9999) a = AngleNW; } else if ((a >= 180 && a < 270) || (a < -90 && a >= -180)) { if (BestDistanceNE < 9999) a = AngleNE - 180; } else if ((a >= 270 && a < 360) || (a < 0 && a >= -90)) { if (BestDistanceNW < 9999) a = AngleNW - 180; } l.setAngle(a); LastCursor = l.p2().toPoint(); } else LastCursor = ev->pos(); view()->update(); } void CreateSingleWayInteraction::snapMousePressEvent(QMouseEvent* /* anEvent */, Feature* lastSnap) { Q_UNUSED(lastSnap) Creating = true; view()->setInteracting(true); } void CreateSingleWayInteraction::snapMouseReleaseEvent(QMouseEvent* anEvent, Feature* lastSnap) { if (M_PREFS->getMouseSingleButton() && anEvent->button() == Qt::RightButton) { // Abort HaveFirst = false; theRoad = NULL; Creating = false; view()->setInteracting(false); } else if ( Creating && !panning() ) { Node* Pt = dynamic_cast<Node*>(lastSnap); if (!HaveFirst) { HaveFirst = true; if (Pt) FirstNode = Pt; else if (Way* aRoad = dynamic_cast<Way*>(lastSnap)) { Coord P(XY_TO_COORD(LastCursor)); int SnapIdx = findSnapPointIndex(aRoad, P); Node* N = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), P); CommandList* theList = new CommandList(MainWindow::tr("Create Node %1 in Road %2").arg(N->description()).arg(aRoad->description()), N); theList->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(aRoad,N,SnapIdx,theMain->document()->getDirtyOrOriginLayer(aRoad))); document()->addHistory(theList); view()->invalidate(true, true, false); FirstNode = N; } } else { CommandList* L = new CommandList(); if (!theRoad) { Node* From = 0; theRoad = g_backend.allocWay(theMain->document()->getDirtyOrOriginLayer()); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),theRoad,true)); if (FirstNode) { if (FirstNode->isVirtual()) { Way* aRoad = CAST_WAY(FirstNode->getParent(0)); int SnapIdx = aRoad->findVirtual(FirstNode)+1; From = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(aRoad->layer()), *FirstNode); From->setVirtual(false); From->setPosition(FirstNode->position()); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(aRoad->layer()),From,true)); L->add(new WayAddNodeCommand(aRoad,From,SnapIdx,main()->document()->getDirtyOrOriginLayer(aRoad->layer()))); } else { From = FirstNode; if (!From->isDirty() && !From->hasOSMId() && From->isUploadable()) L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),From,true)); } } else { From = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), FirstPoint); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),From,true)); } if (M_PREFS->getAutoSourceTag()) { QStringList sl = theMain->document()->getCurrentSourceTags(); if (sl.size()) theRoad->setTag("source", sl.join(";")); } if (IsCurved) theRoad->setTag("smooth","yes"); L->add(new WayAddNodeCommand(theRoad,From)); L->setDescription(MainWindow::tr("Create Road: %1").arg(theRoad->description())); L->setFeature(theRoad); } Node* To = 0; if (Pt) { To = Pt; if (!To->isDirty() && !To->hasOSMId() && To->isUploadable()) { L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),To,true)); L->setDescription(MainWindow::tr("Create Node: %1").arg(To->description())); } } else if (Way* aRoad = dynamic_cast<Way*>(lastSnap)) { Coord P(XY_TO_COORD(LastCursor)); int SnapIdx = findSnapPointIndex(aRoad, P); Node* N = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), P); CommandList* theList = new CommandList(MainWindow::tr("Create Node %1 in Road %2").arg(N->description()).arg(aRoad->description()), N); theList->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(aRoad,N,SnapIdx,theMain->document()->getDirtyOrOriginLayer(aRoad))); document()->addHistory(theList); view()->invalidate(true, true, false); To = N; } if (!To) { To = g_backend.allocNode(theMain->document()->getDirtyOrOriginLayer(), XY_TO_COORD(LastCursor)); L->add(new AddFeatureCommand(theMain->document()->getDirtyOrOriginLayer(),To,true)); L->setDescription(MainWindow::tr("Create Node %1 in Road %2").arg(To->description()).arg(theRoad->description())); L->setFeature(To); } L->setDescription(MainWindow::tr("Add Node %1 to Road %2").arg(To->description()).arg(theRoad->description())); if (Prepend) L->add(new WayAddNodeCommand(theRoad,To,(int)0,theMain->document()->getDirtyOrOriginLayer(theRoad))); else L->add(new WayAddNodeCommand(theRoad,To,theMain->document()->getDirtyOrOriginLayer(theRoad))); document()->addHistory(L); view()->invalidate(true, true, false); theMain->properties()->setSelection(theRoad); } FirstPoint = XY_TO_COORD(LastCursor); } Creating = false; LastCursor = anEvent->pos(); } void CreateSingleWayInteraction::snapMouseDoubleClickEvent(QMouseEvent* anEvent, Feature*) { HaveFirst = false; theRoad = NULL; Creating = false; view()->setInteracting(false); if ((lastSnap() && lastSnap()->getType() & IFeature::LineString) || !lastSnap()) CreateNodeInteraction::createNode(XY_TO_COORD(anEvent->pos()), lastSnap()); } #ifndef _MOBILE QCursor CreateSingleWayInteraction::cursor() const { return QCursor(Qt::CrossCursor); } #endif void CreateSingleWayInteraction::closeAndFinish() { if (!theRoad || theRoad->size() < 3) return; Node* N = theRoad->getNode(0); CommandList* theList = new CommandList(MainWindow::tr("Close Road %1").arg(theRoad->description()), theRoad); theList->add(new WayAddNodeCommand(theRoad,N,theMain->document()->getDirtyOrOriginLayer(theRoad))); document()->addHistory(theList); view()->invalidate(true, true, false); theMain->properties()->setSelection(theRoad); HaveFirst = false; theRoad = NULL; Creating = false; view()->setInteracting(false); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/CreateSingleWayInteraction.h�������������������������������������0000664�0000000�0000000�00000002473�11770671653�0024623�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_INTERACTION_CREATESINGLEWAYINTERACTION_H #define MERKATOR_INTERACTION_CREATESINGLEWAYINTERACTION_H #include "Interaction.h" class MainWindow; class Way; class QDockWidget; class CreateSingleWayInteraction : public FeatureSnapInteraction { Q_OBJECT public: CreateSingleWayInteraction(MainWindow* aMain, Node * firstNode, bool aCurved); ~CreateSingleWayInteraction(); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual void snapMouseDoubleClickEvent(QMouseEvent* , Feature*); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif public: void setSnapAngle(qreal angle); void setParallelMode(bool val); virtual void closeAndFinish(); private: QPoint LastCursor; Way* theRoad; Coord FirstPoint; Node* FirstNode; bool HaveFirst; bool Prepend; bool IsCurved; bool Creating; qreal SnapAngle; bool ParallelMode; }; #endif // INTERACTION\CREATEDOUBLEWAYINTERACTION_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/EditInteraction.cpp����������������������������������������������0000664�0000000�0000000�00000026662�11770671653�0023023�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "EditInteraction.h" #include "MainWindow.h" #ifndef _MOBILE #include "ui_MainWindow.h" #endif #include "MapView.h" #include "PropertiesDock.h" #include "InfoDock.h" #include "Command.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "MoveNodeInteraction.h" #include "Document.h" #include "Features.h" #include "FeatureManipulations.h" #include "Projection.h" #include "LineF.h" #include "MDiscardableDialog.h" #include <QtGui/QMouseEvent> #include <QtGui/QPainter> #include <QMessageBox> #include <QList> #define PROPERTIES(x) {if (theMain->properties()) theMain->properties()->x;} EditInteraction::EditInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain), Dragging(false), StartDrag(0,0), EndDrag(0,0) { defaultCursor = QCursor(Qt::ArrowCursor); connect(main(),SIGNAL(remove_triggered()),this,SLOT(on_remove_triggered())); connect(main(),SIGNAL(reverse_triggered()), this,SLOT(on_reverse_triggered())); PROPERTIES(checkMenuStatus()); if (!M_PREFS->getSeparateMoveMode()) { setDontSelectVirtual(false); } } EditInteraction::~EditInteraction(void) { } QString EditInteraction::toHtml() { QString help; if (!M_PREFS->getMouseSingleButton()) help = (MainWindow::tr("LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;")); else help = (MainWindow::tr("CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;")); QStringList helpList = help.split(";"); QString desc; desc = QString("<big><b>%1</b></big>").arg(MainWindow::tr("Edit Interaction")); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "<hr/>"; S += "<ul style=\"margin-left: 0px; padding-left: 0px;\">"; for (int i=0; i<helpList.size(); ++i) { S+= "<li>" + helpList[i] + "</li>"; } S += "</ul>"; S += "</body></html>"; return S; } void EditInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { if (Dragging) { thePainter.setPen(QPen(QColor(255,0,0),1,Qt::DotLine)); thePainter.drawRect(QRectF(COORD_TO_XY(StartDrag),COORD_TO_XY(EndDrag))); } FeatureSnapInteraction::paintEvent(anEvent, thePainter); } static bool modifiersForAdd(Qt::KeyboardModifiers modifiers) { return modifiers.testFlag(Qt::ShiftModifier); } static bool modifiersForToggle(Qt::KeyboardModifiers modifiers) { return modifiers.testFlag(Qt::ControlModifier); } static bool modifiersForDrag(Qt::KeyboardModifiers modifiers) { if (M_PREFS->getMouseSingleButton()) return modifiers.testFlag(Qt::ShiftModifier); else return true; } #if 0 static bool modifiersForSegmentSelect(Qt::KeyboardModifiers modifiers) { return modifiers.testFlag(Qt::AltModifier); } #endif static bool modifiersForGreedyAdd(Qt::KeyboardModifiers modifiers) { // whether drag select should include intersected as well as contained features if (M_PREFS->getMouseSingleButton()) return modifiers.testFlag(Qt::ShiftModifier) && modifiers.testFlag(Qt::AltModifier); else return modifiers.testFlag(Qt::ShiftModifier); } void EditInteraction::snapMousePressEvent(QMouseEvent * ev, Feature* aLast) { Qt::KeyboardModifiers modifiers = ev->modifiers(); if (!view()->isSelectionLocked()) { if (modifiers) { if (modifiersForToggle(modifiers) && aLast) PROPERTIES(toggleSelection(aLast)); if (modifiersForAdd(modifiers) && aLast) PROPERTIES(addSelection(aLast)); if (g_Merk_Segment_Mode && aLast) { PROPERTIES(setSelection(aLast)); } } else { StackSnap = SnapList; // if (aLast) // PROPERTIES(setSelection(aLast)); } if (!aLast && modifiersForDrag(modifiers)) { EndDrag = StartDrag = XY_TO_COORD(ev->pos()); Dragging = true; } PROPERTIES(checkMenuStatus()); view()->update(); } } bool EditInteraction::isIdle() const { if (Dragging && !(StartDrag == EndDrag)) return false; if (panning()) return false; return true; } void EditInteraction::snapMouseReleaseEvent(QMouseEvent * ev , Feature* aLast) { Qt::KeyboardModifiers modifiers = ev->modifiers(); if (ev->button() != Qt::LeftButton) return; if (Dragging) { QList<Feature*> List; EndDrag = XY_TO_COORD(ev->pos()); CoordBox DragBox(StartDrag, EndDrag); for (VisibleFeatureIterator it(document()); !it.isEnd(); ++it) { if (it.get()->isReadonly()) continue; if (modifiersForGreedyAdd(modifiers)) { if (!DragBox.intersects(it.get()->boundingBox())) continue; if (DragBox.contains(it.get()->boundingBox())) List.push_back(it.get()); else { Coord A, B; if (Way* R = dynamic_cast<Way*>(it.get())) { for (int j=1; j<R->size(); ++j) { A = R->getNode(j-1)->position(); B = R->getNode(j)->position(); if (CoordBox::visibleLine(DragBox, A, B)) { List.push_back(R); break; } } } else if (Relation* r = dynamic_cast<Relation*>(it.get())) { for (int k=0; k<r->size(); ++k) { if (Way* R = dynamic_cast<Way*>(r->get(k))) { for (int j=1; j<R->size(); ++j) { A = R->getNode(j-1)->position(); B = R->getNode(j)->position(); if (CoordBox::visibleLine(DragBox, A, B)) { List.push_back(r); break; } } } } } } } else { if (DragBox.contains(it.get()->boundingBox())) List.push_back(it.get()); } } if (!List.isEmpty() || (!modifiersForAdd(modifiers) && !modifiersForToggle(modifiers))) PROPERTIES(setSelection(List)); PROPERTIES(checkMenuStatus()); Dragging = false; view()->update(); } else { if (!panning() && !modifiers) { PROPERTIES(setSelection(aLast)); PROPERTIES(checkMenuStatus()); view()->update(); } } } void EditInteraction::snapMouseMoveEvent(QMouseEvent* anEvent, Feature* aLast) { Q_UNUSED(anEvent) Q_UNUSED(aLast) if (Dragging) { EndDrag = XY_TO_COORD(anEvent->pos()); view()->update(); } } void EditInteraction::snapMouseDoubleClickEvent(QMouseEvent* anEvent, Feature* aLast) { Q_UNUSED(anEvent) Q_UNUSED(aLast) // Qt::KeyboardModifiers modifiers = anEvent->modifiers(); // if (!panning() && !modifiers) { // if (aLast) { // QList<Feature*> theFeatures; // theFeatures << aLast; // for (int i=0; i<aLast->size(); ++i) // theFeatures << aLast->get(i); // PROPERTIES(setSelection(theFeatures)); // PROPERTIES(checkMenuStatus()); // view()->update(); // } else { // Node* N = g_backend.allocNode(XY_TO_COORD(anEvent->pos())); // CommandList* theList = new CommandList(MainWindow::tr("Create point %1").arg(N->id()), N); // theList->add(new AddFeatureCommand(main()->document()->getDirtyOrOriginLayer(),N,true)); // document()->addHistory(theList); // main()->properties()->setSelection(N); // view()->invalidate(true, true, false); // } // } } void EditInteraction::on_remove_triggered() { if (theMain->properties()->selectionSize() == 0) return; QList<Feature*> Sel; for (int i=0; i<theMain->properties()->selectionSize(); ++i) { if (!document()->isDownloadedSafe(theMain->properties()->selection(i)->boundingBox()) && theMain->properties()->selection(i)->hasOSMId()) continue; else Sel.push_back(theMain->properties()->selection(i)); } if (Sel.size() == 0) { QMessageBox::critical(NULL, tr("Cannot delete"), tr("Cannot delete the selection because it is outside the downloaded area.")); return; } else if (Sel.size() != theMain->properties()->selectionSize()) { if (!QMessageBox::warning(NULL, tr("Cannot delete everything"), tr("The complete selection cannot be deleted because part of it is outside the downloaded area.\n" "Delete what can be?"), QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes)) return; } CommandList* theList; if (Sel.size() == 1) theList = new CommandList(MainWindow::tr("Remove feature %1").arg(Sel[0]->id().numId), Sel[0]); else theList = new CommandList(MainWindow::tr("Remove features"), NULL); bool deleteChildrenOKDefined = false; bool deleteChildrenOK = false; for (int i=0; i<Sel.size(); ++i) { if (document()->exists(Sel[i])) { QList<Feature*> Alternatives; if (Sel[i]->size() && !deleteChildrenOKDefined) { MDiscardableMessage dlg(NULL, MainWindow::tr("Delete Children."), MainWindow::tr("Do you want to delete the children nodes also?\n" "Note that OSM nodes outside the downloaded area will be kept.")); deleteChildrenOKDefined = true; deleteChildrenOK = (dlg.check() == QDialog::Accepted); } if (deleteChildrenOK) Sel[i]->deleteChildren(document(), theList); theList->add(new RemoveFeatureCommand(document(), Sel[i], Alternatives)); } } if (theList->size()) { document()->addHistory(theList); theMain->properties()->setSelection(0); theMain->properties()->checkMenuStatus(); } else delete theList; view()->invalidate(true, true, false); } void EditInteraction::on_reverse_triggered() { QList<Feature*> selection = theMain->properties()->selection(); QString desc = selection.size() == 1 ? tr("Reverse way %1").arg(selection[0]->id().numId) : tr("Reverse %1 ways"); CommandList* theList = new CommandList(MainWindow::tr("Reverse %1 ways").arg(selection.size()), NULL); foreach (Feature* f, selection) if (Way* R = dynamic_cast<Way*>(f)) reversePoints(document(), theList, R); if (theList->empty()) { delete theList; } else { document()->addHistory(theList); view()->invalidate(true, true, false); } } #ifndef _MOBILE QCursor EditInteraction::cursor() const { if (LastSnap) return defaultCursor; return FeatureSnapInteraction::cursor(); } #endif ������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/EditInteraction.h������������������������������������������������0000664�0000000�0000000�00000002137�11770671653�0022457�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_INTERACTION_H_ #define MERKAARTOR_INTERACTION_H_ #include "Interaction.h" class MoveNodeInteraction; class EditInteraction : public FeatureSnapInteraction { Q_OBJECT public: typedef enum { EditMode, MoveMode, RotateMode, ScaleMode } EditModeEnum; EditInteraction(MainWindow* aMain); ~EditInteraction(void); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual void snapMouseDoubleClickEvent(QMouseEvent* event, Feature* aLast); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif virtual bool isIdle() const; public slots: void on_remove_triggered(); void on_reverse_triggered(); private: bool Dragging; Coord StartDrag; Coord EndDrag; QCursor defaultCursor; }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/ExtrudeInteraction.cpp�������������������������������������������0000664�0000000�0000000�00000011371�11770671653�0023545�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ExtrudeInteraction.h" #include "CreateNodeInteraction.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Painting.h" #include "Way.h" #include "Node.h" #include "LineF.h" #include "MainWindow.h" #include "PropertiesDock.h" #include "Global.h" #include <QtGui/QPainter> ExtrudeInteraction::ExtrudeInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain) , Creating(false) , BestSegment(-1) { } ExtrudeInteraction::~ExtrudeInteraction() { } void ExtrudeInteraction::setSnapAngle(qreal angle) { SnapAngle = angle; } qreal ExtrudeInteraction::snapAngle() { return SnapAngle; } QString ExtrudeInteraction::toHtml() { QString help; //help = (MainWindow::tr("LEFT-CLICK to select; LEFT-DRAG to move")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Create way Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void ExtrudeInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { if (Creating) { QBrush SomeBrush(QColor(0xff,0x77,0x11,128)); QPen TP(SomeBrush,qBound(3, int(view()->pixelPerM()*4+2), 10)); thePainter.setRenderHint(QPainter::Antialiasing); thePainter.setPen(TP); QLineF l(OrigSegment.p1(), LastCursor); qreal a = OrigSegment.angleTo(l); qreal largeur = sin(angToRad(a))*l.length(); QLineF n = OrigSegment.normalVector(); n.setLength(largeur); QPointF pb = n.p2(); QLineF s2 = QLineF::fromPolar(OrigSegment.length(), OrigSegment.angle()); s2.translate(pb); thePainter.drawLine(s2.p1(), s2.p2()); thePainter.drawLine(OrigSegment.p1(), s2.p1()); thePainter.drawLine(OrigSegment.p2(), s2.p2()); } FeatureSnapInteraction::paintEvent(anEvent,thePainter); } void ExtrudeInteraction::snapMouseMoveEvent(QMouseEvent* ev, Feature* lastSnap) { Q_UNUSED(lastSnap) LastCursor = ev->posF(); view()->update(); } void ExtrudeInteraction::snapMousePressEvent(QMouseEvent* anEvent, Feature* lastSnap) { Q_UNUSED(lastSnap) theRoad = CAST_WAY(lastSnap); if (!theRoad) return; if (theRoad->bestSegment() != -1) { Creating = true; QLineF l = theRoad->getSegment(theRoad->bestSegment()); BestSegment = theRoad->bestSegment(); OrigSegment = QLineF(COORD_TO_XY(Coord(l.p1())), COORD_TO_XY(Coord(l.p2()))); LastCursor = anEvent->pos(); } } void ExtrudeInteraction::snapMouseReleaseEvent(QMouseEvent* anEvent, Feature* lastSnap) { Q_UNUSED(anEvent) Q_UNUSED(lastSnap) if (Creating) { QLineF l(OrigSegment.p1(), anEvent->posF()); qreal a = OrigSegment.angleTo(l); qreal largeur = sin(angToRad(a))*l.length(); QLineF n = OrigSegment.normalVector(); n.setLength(largeur); QPointF pb = n.p2(); QLineF s2 = QLineF::fromPolar(OrigSegment.length(), OrigSegment.angle()); s2.translate(pb); CommandList* theList = new CommandList(MainWindow::tr("Extrude Road %1").arg(theRoad->description()), theRoad); if (theRoad->segmentCount() == 1) { int pos = 0; Node* N = g_backend.allocNode(theRoad->layer(), XY_TO_COORD(s2.p1().toPoint())); theList->add(new AddFeatureCommand(theRoad->layer(), N, true)); theList->add(new WayAddNodeCommand(theRoad, N, ++pos)); N = g_backend.allocNode(theRoad->layer(), XY_TO_COORD(s2.p2().toPoint())); theList->add(new AddFeatureCommand(theRoad->layer(), N, true)); theList->add(new WayAddNodeCommand(theRoad, N, ++pos)); theList->add(new WayAddNodeCommand(theRoad, theRoad->getNode(0))); } else { int pos = BestSegment; Node* N = g_backend.allocNode(theRoad->layer(), XY_TO_COORD(s2.p1().toPoint())); theList->add(new AddFeatureCommand(theRoad->layer(), N, true)); theList->add(new WayAddNodeCommand(theRoad, N, ++pos)); N = g_backend.allocNode(theRoad->layer(), XY_TO_COORD(s2.p2().toPoint())); theList->add(new AddFeatureCommand(theRoad->layer(), N, true)); theList->add(new WayAddNodeCommand(theRoad, N, ++pos)); } document()->addHistory(theList); view()->invalidate(true, true, false); } Creating = false; } void ExtrudeInteraction::snapMouseDoubleClickEvent(QMouseEvent* anEvent, Feature*) { Q_UNUSED(anEvent) } #ifndef _MOBILE QCursor ExtrudeInteraction::cursor() const { return QCursor(Qt::SplitHCursor); } #endif void ExtrudeInteraction::closeAndFinish() { } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/ExtrudeInteraction.h���������������������������������������������0000664�0000000�0000000�00000002151�11770671653�0023206�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_INTERACTION_EXTRUDE_H #define MERKATOR_INTERACTION_EXTRUDE_H #include "Interaction.h" class MainWindow; class Way; class QDockWidget; class ExtrudeInteraction : public FeatureSnapInteraction { Q_OBJECT public: ExtrudeInteraction(MainWindow* aMain); ~ExtrudeInteraction(); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual void snapMouseDoubleClickEvent(QMouseEvent* , Feature*); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif public: void setSnapAngle(qreal angle); qreal snapAngle(); virtual void closeAndFinish(); private: Way* theRoad; QPointF LastCursor; bool Creating; qreal SnapAngle; int BestSegment; QLineF OrigSegment; }; #endif // MERKATOR_INTERACTION_EXTRUDE_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/Interaction.cpp��������������������������������������������������0000664�0000000�0000000�00000035063�11770671653�0022210�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Interaction.h" #include "MainWindow.h" #include "MapView.h" #include "Document.h" #include "Projection.h" #include "Node.h" #include "PropertiesDock.h" #include "Utils.h" #include "Global.h" #include "EditInteraction.h" #include "CreateSingleWayInteraction.h" #include "CreateNodeInteraction.h" #include "CreateAreaInteraction.h" #include "MoveNodeInteraction.h" #include "ExtrudeInteraction.h" #include <QtGui/QMouseEvent> #include <QtGui/QPainter> #include <math.h> #define CLEAR_DISTANCE 7.01 Interaction::Interaction(MainWindow* aMain) : QObject(aMain), theMain(aMain), Panning(false) , LastSnap(0), SnapActive(true) , NoSelectPoints(false), NoSelectRoads(false), NoSelectVirtuals(true) , Dragging(false) , StartDrag(0,0), EndDrag(0,0) { connect(this, SIGNAL(requestCustomContextMenu(const QPoint &)), theMain, SLOT(onCustomcontextmenurequested(const QPoint &))); } Interaction::~Interaction() { } bool Interaction::panning() const { return (Panning && (LastPan != FirstPan)); } MainWindow* Interaction::main() { return theMain; } MapView* Interaction::view() { return theMain->view(); } Document* Interaction::document() { return theMain->document(); } void Interaction::mousePressEvent(QMouseEvent * anEvent) { if (anEvent->buttons() & Qt::MidButton) { Panning = true; FirstPan = LastPan = anEvent->pos(); } else #if defined(Q_OS_MAC) // In the name of beautifull code, Steve, add a right mouse button if ( (anEvent->modifiers() & Qt::MetaModifier) || (M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::LeftButton)) || (!M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::RightButton)) ) #else if ( (M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::LeftButton)) || (!M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::RightButton)) ) #endif // Q_OS_MAC { if (anEvent->modifiers() & Qt::ControlModifier) { EndDrag = StartDrag = XY_TO_COORD(anEvent->pos()); Dragging = true; } else if (anEvent->modifiers() & Qt::ShiftModifier) { } else { Panning = true; FirstPan = LastPan = anEvent->pos(); } } } void Interaction::mouseReleaseEvent(QMouseEvent * anEvent) { if (Panning) { if (FirstPan != LastPan) view()->invalidate(false, false, true); #ifndef _MOBILE else if (anEvent->button() == Qt::RightButton) emit(requestCustomContextMenu(anEvent->pos())); #endif Panning = false; } else if (Dragging) { CoordBox DragBox(StartDrag,XY_TO_COORD(anEvent->pos())); if (!DragBox.isEmpty()) { view()->setViewport(DragBox,view()->rect()); view()->invalidate(true, true, true); theMain->launchInteraction(0); } Dragging = false; } } void Interaction::mouseMoveEvent(QMouseEvent* anEvent) { if (anEvent->buttons() & Qt::MidButton) { if (Panning) { QPoint Delta = LastPan; Delta -= anEvent->pos(); view()->panScreen(-Delta); LastPan = anEvent->pos(); #if defined(ENABLE_NVIDIA_HACK) view()->invalidate(true, true, false); #endif // ENABLE_NVIDIA_HACK } } else #if defined(Q_OS_MAC) // In the name of beautifull code, Steve, add a right mouse button if ( (anEvent->modifiers() & Qt::MetaModifier) || (M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::LeftButton)) || (!M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::RightButton)) ) #else if ( (M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::LeftButton)) || (!M_PREFS->getMouseSingleButton() && (anEvent->buttons() & Qt::RightButton)) ) #endif // Q_OS_MAC { if (Panning) { QPoint Delta = LastPan; Delta -= anEvent->pos(); view()->panScreen(-Delta); LastPan = anEvent->pos(); #if defined(ENABLE_NVIDIA_HACK) view()->invalidate(true, true, false); #endif // ENABLE_NVIDIA_HACK } else if (Dragging) { EndDrag = XY_TO_COORD(anEvent->pos()); view()->update(); } } } void Interaction::mouseDoubleClickEvent(QMouseEvent* /*anEvent*/) { } void Interaction::wheelEvent(QWheelEvent* ev) { qreal finalZoom = 1.; int Steps = ev->delta() / 120; if (Steps > 0) { for (int i = 0; i < Steps; ++i) { finalZoom *= M_PREFS->getZoomIn()/100.0; } } else if (Steps < 0) { for (int i = 0; i < -Steps; ++i) { finalZoom *= M_PREFS->getZoomOut()/100.0; } } // Do not overzoom in one go (circular scroll on touchpads can scroll very // fast). Without this check we can end up scaling the background by e.g. // 40 times in each direction and running out of memory. if (finalZoom > 2.0) finalZoom = 2.0; else if (finalZoom < 0.5) finalZoom = 0.5; view()->zoom(finalZoom, ev->pos()); } void Interaction::paintEvent(QPaintEvent*, QPainter& thePainter) { if (Dragging) { thePainter.setPen(QPen(QColor(0,0,255),1,Qt::DotLine)); thePainter.drawRect(QRectF(COORD_TO_XY(StartDrag),COORD_TO_XY(EndDrag))); } } void Interaction::updateSnap(QMouseEvent* event) { if (panning()) { LastSnap = 0; return; } bool NoRoads = ( (QApplication::keyboardModifiers() & Qt::AltModifier) && (QApplication::keyboardModifiers() &Qt::ControlModifier) ); Feature* Prev = LastSnap; LastSnap = 0; Feature* ReadOnlySnap = 0; if (!SnapActive) return; //QTime Start(QTime::currentTime()); CoordBox HotZone(XY_TO_COORD(event->pos()-QPoint(M_PREFS->getMaxGeoPicWidth()+5,M_PREFS->getMaxGeoPicWidth()+5)),XY_TO_COORD(event->pos()+QPoint(M_PREFS->getMaxGeoPicWidth()+5,M_PREFS->getMaxGeoPicWidth()+5))); CoordBox HotZoneSnap(XY_TO_COORD(event->pos()-QPoint(15,15)),XY_TO_COORD(event->pos()+QPoint(15,15))); SnapList.clear(); qreal BestDistance = 5; qreal BestReadonlyDistance = 5; bool areNodesSelectable = (/*theMain->view()->nodeWidth() >= 1 && */M_PREFS->getTrackPointsVisible()); Way* R; Node* N; for (int j=0; j<document()->layerSize(); ++j) { QList < Feature* > ret = g_backend.indexFind(document()->getLayer(j), HotZone); foreach(Feature* F, ret) { if (F) { if (F->isHidden()) continue; if (NoSnap.contains(F)) continue; if (F->notEverythingDownloaded()) continue; if ((R = CAST_WAY(F))) { if ( NoRoads || NoSelectRoads) continue; if (HotZoneSnap.contains(R->boundingBox())) SnapList.push_back(F); else { QPointF lastPoint = R->getNode(0)->position(); QPointF aP; for (int j=1; j<R->size(); ++j) { aP = R->getNode(j)->position(); QLineF l(lastPoint, aP); QPointF a, b; if (Utils::QRectInterstects(HotZoneSnap, l, a, b)) { SnapList.push_back(F); break; } lastPoint = aP; } } } if ((N = CAST_NODE(F))) { if (NoSelectPoints) continue; if (!N->isSelectable(theMain->view()->pixelPerM(), theMain->view()->renderOptions())) continue; if (HotZoneSnap.contains(N->boundingBox())) SnapList.push_back(F); } qreal Distance = F->pixelDistance(event->pos(), CLEAR_DISTANCE, NoSnap, view()); if (Distance < BestDistance && !F->isReadonly()) { BestDistance = Distance; LastSnap = F; } else if (Distance < BestReadonlyDistance && F->isReadonly()) { BestReadonlyDistance = Distance; ReadOnlySnap = F; } } } } if (areNodesSelectable) { R = CAST_WAY(LastSnap); if (R) { Node* N = R->pixelDistanceNode(event->pos(), CLEAR_DISTANCE, view(), NoSnap, NoSelectVirtuals); if (N) LastSnap = N; } } if (Prev != LastSnap) { curStackSnap = SnapList.indexOf(LastSnap); view()->update(); } if (M_PREFS->getMapTooltip()) { if (LastSnap) view()->setToolTip(LastSnap->toHtml()); else view()->setToolTip(""); } if (M_PREFS->getInfoOnHover() && main() && theMain->info() && theMain->info()->isVisible()) { if (LastSnap) { theMain->info()->setHoverHtml(LastSnap->toHtml()); } else if (ReadOnlySnap) theMain->info()->setHoverHtml(ReadOnlySnap->toHtml()); else theMain->info()->unsetHoverHtml(); } emit featureSnap(LastSnap); } Feature* Interaction::lastSnap() { return LastSnap; } /***************/ FeatureSnapInteraction::FeatureSnapInteraction(MainWindow* aMain) : Interaction(aMain) { // handCursor = QCursor(QPixmap(":/Icons/grab.png")); // grabCursor = QCursor(QPixmap(":/Icons/grabbing.png")); handCursor = QCursor(Qt::OpenHandCursor); grabCursor = QCursor(Qt::ClosedHandCursor); defaultCursor = QCursor(Qt::ArrowCursor); // warningCursor = QCursor(Qt::ForbiddenCursor); warningCursor = QCursor(QPixmap(":/Icons/cursor-warning"), 16, 5); #ifndef _MOBILE theMain->view()->setCursor(cursor()); #endif } void FeatureSnapInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { Interaction::paintEvent(anEvent, thePainter); #ifndef _MOBILE for (int i=0; i<theMain->features()->highlightedSize(); ++i) { theMain->features()->highlighted(i)->buildPath(view()->projection()); theMain->features()->highlighted(i)->drawHighlight(thePainter, view()); } for (int i=0; i<theMain->properties()->selectionSize(); ++i) { theMain->properties()->selection(i)->buildPath(view()->projection()); theMain->properties()->selection(i)->drawFocus(thePainter, view()); } for (int i=0; i<theMain->properties()->highlightedSize(); ++i) { theMain->properties()->highlighted(i)->buildPath(view()->projection()); theMain->properties()->highlighted(i)->drawHighlight(thePainter, view()); } //FIXME document()->exists necessary? if (LastSnap && document()->exists(LastSnap)) { LastSnap->drawHover(thePainter, view()); view()->setToolTip(LastSnap->toHtml()); } else { view()->setToolTip(""); } #endif } void FeatureSnapInteraction::mousePressEvent(QMouseEvent * event) { if (event->button() == Qt::LeftButton) snapMousePressEvent(event,LastSnap); if (!(M_PREFS->getMouseSingleButton() && LastSnap)) Interaction::mousePressEvent(event); } void FeatureSnapInteraction::mouseReleaseEvent(QMouseEvent * event) { if (event->button() == Qt::RightButton && !Panning && !Dragging) emit(requestCustomContextMenu(event->pos())); snapMouseReleaseEvent(event,LastSnap); if (!(M_PREFS->getMouseSingleButton() && LastSnap)) Interaction::mouseReleaseEvent(event); } void FeatureSnapInteraction::mouseMoveEvent(QMouseEvent* event) { #ifndef _MOBILE // if (!document()->isDownloadedSafe(theMain->view()->fromView(event->pos()))) // view()->setCursor(warningCursor); // else view()->setCursor(cursor()); #endif snapMouseMoveEvent(event, LastSnap); if (!(M_PREFS->getMouseSingleButton() && LastSnap)) Interaction::mouseMoveEvent(event); } void FeatureSnapInteraction::mouseDoubleClickEvent(QMouseEvent* event) { // if (!document()->isDownloadedSafe(theMain->view()->fromView(event->pos()))) // view()->setCursor(warningCursor); // else #ifndef _MOBILE view()->setCursor(cursor()); #endif snapMouseDoubleClickEvent(event, LastSnap); if (!(M_PREFS->getMouseSingleButton() && LastSnap)) Interaction::mouseDoubleClickEvent(event); } void FeatureSnapInteraction::snapMousePressEvent(QMouseEvent * , Feature*) { } void FeatureSnapInteraction::snapMouseReleaseEvent(QMouseEvent * , Feature*) { } void FeatureSnapInteraction::snapMouseMoveEvent(QMouseEvent* , Feature*) { } void FeatureSnapInteraction::snapMouseDoubleClickEvent(QMouseEvent* , Feature*) { } void FeatureSnapInteraction::activateSnap(bool b) { SnapActive = b; } void FeatureSnapInteraction::addToNoSnap(Feature* F) { NoSnap.append(F); } void FeatureSnapInteraction::addToNoSnap(QList<Feature*> Fl) { NoSnap.append(Fl); } void FeatureSnapInteraction::clearNoSnap() { NoSnap.clear(); } void FeatureSnapInteraction::clearSnap() { StackSnap.clear(); } void FeatureSnapInteraction::clearLastSnap() { LastSnap = 0; } QList<Feature*> FeatureSnapInteraction::snapList() { return StackSnap; } void FeatureSnapInteraction::addSnap(Feature* aSnap) { StackSnap.append(aSnap); } void FeatureSnapInteraction::setSnap(QList<Feature*> aSnapList) { StackSnap = aSnapList; curStackSnap = 0; } void FeatureSnapInteraction::nextSnap() { if (!StackSnap.size()) return; curStackSnap++; if (curStackSnap > StackSnap.size() -1) curStackSnap = 0; if (theMain->properties()) theMain->properties()->setSelection(StackSnap[curStackSnap]); view()->update(); } void FeatureSnapInteraction::previousSnap() { if (!StackSnap.size()) return; curStackSnap--; if (curStackSnap < 0) curStackSnap = StackSnap.size() -1; if (theMain->properties()) theMain->properties()->setSelection(StackSnap[curStackSnap]); view()->update(); } void FeatureSnapInteraction::setDontSelectPoints(bool b) { NoSelectPoints = b; } void FeatureSnapInteraction::setDontSelectRoads(bool b) { NoSelectRoads = b; } void FeatureSnapInteraction::setDontSelectVirtual(bool b) { NoSelectVirtuals = b; } #ifndef _MOBILE QCursor FeatureSnapInteraction::cursor() const { if (M_PREFS->getMouseSingleButton()) { if (!Panning) { return handCursor; } else { return grabCursor; } } else return defaultCursor; } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/Interaction.h����������������������������������������������������0000664�0000000�0000000�00000006036�11770671653�0021653�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_INTERACTION_H_ #define MERKATOR_INTERACTION_H_ class Node; class MainWindow; class Projection; class Node; class Way; class QMouseEvent; class QPaintEvent; class QPainter; #include "MapView.h" #include "InfoDock.h" #include "FeaturesDock.h" #include "Document.h" #include "Features.h" #include <QtCore/QObject> #include <QtCore/QTime> #include <QtGui/QApplication> #include <QtGui/QCursor> #include <QtGui/QMouseEvent> #include <QList> #include <algorithm> #define XY_TO_COORD(x) theMain->view()->fromView(x) #define COORD_TO_XY(x) theMain->view()->toView(x) class Interaction : public QObject { Q_OBJECT public: Interaction(MainWindow* aMain); virtual ~Interaction(); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseReleaseEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseDoubleClickEvent(QMouseEvent* event); virtual void wheelEvent(QWheelEvent* ev); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml() = 0; MapView* view(); Document* document(); MainWindow* main(); bool panning() const; virtual void updateSnap(QMouseEvent* event); Feature* lastSnap(); protected: MainWindow* theMain; bool Panning; QPoint FirstPan; QPoint LastPan; Feature* LastSnap; QList<Feature*> NoSnap; bool SnapActive; bool NoSelectPoints; bool NoSelectWays; bool NoSelectRoads; bool NoSelectVirtuals; QList<Feature*> StackSnap; QList<Feature*> SnapList; int curStackSnap; signals: void requestCustomContextMenu(const QPoint & pos); void featureSnap(Feature*); protected: bool Dragging; Coord StartDrag; Coord EndDrag; }; class FeatureSnapInteraction : public Interaction { public: FeatureSnapInteraction(MainWindow* aMain); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseReleaseEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseDoubleClickEvent(QMouseEvent* event); virtual void snapMousePressEvent(QMouseEvent * , Feature*); virtual void snapMouseReleaseEvent(QMouseEvent * , Feature*); virtual void snapMouseMoveEvent(QMouseEvent* , Feature*); virtual void snapMouseDoubleClickEvent(QMouseEvent* , Feature*); void activateSnap(bool b); void addToNoSnap(Feature* F); void addToNoSnap(QList<Feature *> Fl); void clearNoSnap(); void clearSnap(); void clearLastSnap(); QList<Feature*> snapList(); void addSnap(Feature* aSnap); void setSnap(QList<Feature*> aSnapList); void nextSnap(); void previousSnap(); void setDontSelectPoints(bool b); void setDontSelectRoads(bool b); void setDontSelectVirtual(bool b); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: QCursor handCursor; QCursor grabCursor; QCursor defaultCursor; QCursor warningCursor; protected: }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/Interactions.pri�������������������������������������������������0000664�0000000�0000000�00000001705�11770671653�0022377�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Interactions DEPENDPATH += $$MERKAARTOR_SRC_DIR/Interactions HEADERS += \ CreateAreaInteraction.h \ CreateDoubleWayInteraction.h \ CreateNodeInteraction.h \ CreateRoundaboutInteraction.h \ CreatePolygonInteraction.h \ CreateSingleWayInteraction.h \ EditInteraction.h \ Interaction.h \ MoveNodeInteraction.h \ RotateInteraction.h \ ScaleInteraction.h \ ZoomInteraction.h \ ExtrudeInteraction.h SOURCES += \ CreateAreaInteraction.cpp \ CreateDoubleWayInteraction.cpp \ CreateNodeInteraction.cpp \ CreateSingleWayInteraction.cpp \ CreateRoundaboutInteraction.cpp \ CreatePolygonInteraction.cpp \ EditInteraction.cpp \ Interaction.cpp \ MoveNodeInteraction.cpp \ RotateInteraction.cpp \ ScaleInteraction.cpp \ ZoomInteraction.cpp \ ExtrudeInteraction.cpp FORMS += \ CreateDoubleWayDock.ui \ CreateRoundaboutDock.ui \ �����������������������������������������������������������merkaartor-0.18.1/src/Interactions/MoveNodeInteraction.cpp������������������������������������������0000664�0000000�0000000�00000025064�11770671653�0023645�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "MoveNodeInteraction.h" #include "MainWindow.h" #include "MapView.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Coord.h" #include "Document.h" #include "Projection.h" #include "Node.h" #include "LineF.h" #include "MDiscardableDialog.h" #include "PropertiesDock.h" #include <QtGui/QCursor> #include <QtGui/QMouseEvent> #include <QtGui/QPixmap> #include <QMessageBox> #include <QList> MoveNodeInteraction::MoveNodeInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain) , StartDragPosition(0,0) , theList(0) { if (M_PREFS->getSeparateMoveMode()) { setDontSelectVirtual(false); } } MoveNodeInteraction::~MoveNodeInteraction(void) { } QString MoveNodeInteraction::toHtml() { QString help; help = (MainWindow::tr("LEFT-CLICK to select;LEFT-DRAG to move")); QStringList helpList = help.split(";"); QString desc; desc = QString("<big><b>%1</b></big>").arg(MainWindow::tr("Move node Interaction")); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "<hr/>"; S += "<ul style=\"margin-left: 0px; padding-left: 0px;\">"; for (int i=0; i<helpList.size(); ++i) { S+= "<li>" + helpList[i] + "</li>"; } S += "</ul>"; S += "</body></html>"; return S; } #ifndef _MOBILE QCursor MoveNodeInteraction::cursor() const { #ifdef Q_OS_MAC QPixmap pm(":/Icons/move.xpm"); return QCursor(pm); #else return QCursor(Qt::SizeAllCursor); #endif } #endif void MoveNodeInteraction::recurseAddNodes(Feature* F) { if (Node* Pt = CAST_NODE(F)) { Moving.push_back(Pt); } else if (Way* R = CAST_WAY(F)) { if (!g_Merk_Segment_Mode) { for (int j=0; j<R->size(); ++j) if (std::find(Moving.begin(),Moving.end(),R->get(j)) == Moving.end()) { Moving.push_back(R->getNode(j)); } } else { for (int j=R->bestSegment(); j<=R->bestSegment()+1; ++j) if (std::find(Moving.begin(),Moving.end(),R->get(j)) == Moving.end()) { Moving.push_back(R->getNode(j)); } } addToNoSnap(R); } else if (Relation* L = CAST_RELATION(F)) { for (int j=0; j<L->size(); ++j) recurseAddNodes(L->get(j)); addToNoSnap(L); } } void MoveNodeInteraction::snapMousePressEvent(QMouseEvent * event, Feature* aLast) { QList<Feature*> sel; if (view()->isSelectionLocked()) { if (theMain->properties()->selection(0)) sel.append(theMain->properties()->selection(0)); else sel.append(aLast); } else { if (aLast) { if (theMain->properties()->selection().size() && !M_PREFS->getSeparateMoveMode()) sel = theMain->properties()->selection(); else sel.append(aLast); } } HasMoved = false; clearNoSnap(); Moving.clear(); OriginalPosition.clear(); StartDragPosition = XY_TO_COORD(event->pos()); if (sel.size() == 1) { if (Node* Pt = CAST_NODE(sel[0])) { StartDragPosition = Pt->position(); Moving.push_back(Pt); } else recurseAddNodes(sel[0]); } else { for (int i=0; i<sel.size(); i++) { recurseAddNodes(sel[i]); } } for (int i=0; i<Moving.size(); ++i) { OriginalPosition.push_back(Moving[i]->position()); addToNoSnap(Moving[i]); } Virtual = false; theList = new CommandList; } void MoveNodeInteraction::snapMouseReleaseEvent(QMouseEvent * event, Feature* Closer) { if (event->button() != Qt::LeftButton) return; if (Moving.size() && !panning() && HasMoved) { Coord Diff(calculateNewPosition(event,Closer, theList)-StartDragPosition); if (Moving.size() > 1) { theList->setDescription(MainWindow::tr("Move Nodes")); theList->setFeature(Moving[0]); } else { if (!Virtual) { theList->setDescription(MainWindow::tr("Move Node %1").arg(Moving[0]->id().numId)); theList->setFeature(Moving[0]); } } QSet<Way*> WaysToUpdate; for (int i=0; i<Moving.size(); ++i) { Moving[i]->setPosition(OriginalPosition[i]); if (Moving[i]->layer()->isTrack()) theList->add(new MoveNodeCommand(Moving[i],OriginalPosition[i]+Diff, Moving[i]->layer())); else theList->add(new MoveNodeCommand(Moving[i],OriginalPosition[i]+Diff, document()->getDirtyOrOriginLayer(Moving[i]->layer()))); for (int j=0; j<Moving[i]->sizeParents(); ++j) { if (Way* aRoad = CAST_WAY(Moving[i]->getParent(j))) WaysToUpdate << aRoad; else { Feature* f = CAST_FEATURE(Moving[i]->getParent(j)); if (f) g_backend.sync(f); } } } foreach (Way* w, WaysToUpdate) { g_backend.sync(w); } // If moving a single node (not a track node), see if it got dropped onto another node if (Moving.size() == 1 && !Moving[0]->layer()->isTrack()) { Coord newPos = OriginalPosition[0] + Diff; QList<Node*> samePosPts; for (VisibleFeatureIterator it(document()); !it.isEnd(); ++it) { Node* visPt = CAST_NODE(it.get()); if (visPt && visPt->layer()->classType() != Layer::TrackLayerType) { if (visPt == Moving[0]) continue; if (visPt->position() == newPos) { samePosPts.push_back(visPt); } } } // Ensure the node being moved is at the end of the list. // (This is not the node that all nodes will be merged into, // they are always merged into a node that already was at that position.) samePosPts.push_back(Moving[0]); if (samePosPts.size() > 1) // Ignore the node we're moving, see if there are more { MDiscardableMessage dlg(view(), MainWindow::tr("Nodes at the same position found."), MainWindow::tr("Do you want to merge all nodes at the drop position?")); if (dlg.check() == QDialog::Accepted) { // Merge all nodes from the same position // from MainWindow::on_nodeMergeAction_triggered() // Merge all nodes into the first node that has been found (not the node being moved) Node* merged = samePosPts[0]; // Change the command description to reflect the merge theList->setDescription(MainWindow::tr("Merge Nodes into %1").arg(merged->id().numId)); theList->setFeature(merged); // from mergeNodes(theDocument, theList, theProperties); QList<Feature*> alt; alt.push_back(merged); for (int i = 1; i < samePosPts.size(); ++i) { Feature::mergeTags(document(), theList, merged, samePosPts[i]); theList->add(new RemoveFeatureCommand(document(), samePosPts[i], alt)); } theMain->properties()->setSelection(merged); } } } if (theList) document()->addHistory(theList); view()->setInteracting(false); view()->invalidate(true, true, false); } else SAFE_DELETE(theList); Moving.clear(); OriginalPosition.clear(); clearNoSnap(); } void MoveNodeInteraction::snapMouseMoveEvent(QMouseEvent* event, Feature* Closer) { if (Moving.size() && !panning()) { HasMoved = true; view()->setInteracting(true); Coord Diff = calculateNewPosition(event,Closer,NULL)-StartDragPosition; for (int i=0; i<Moving.size(); ++i) { if (Moving[i]->isVirtual()) { Virtual = true; Node* v = Moving[i]; Way* aRoad = CAST_WAY(v->getParent(0)); theList->setDescription(MainWindow::tr("Create node in Road: %1").arg(aRoad->id().numId)); theList->setFeature(aRoad); int SnapIdx = aRoad->findVirtual(v)+1; Node* N = g_backend.allocNode(main()->document()->getDirtyOrOriginLayer(aRoad->layer()), *v); N->setVirtual(false); N->setPosition(OriginalPosition[i]+Diff); if (theMain->properties()->isSelected(v)) { theMain->properties()->toggleSelection(v); theMain->properties()->toggleSelection(N); } theList->add(new AddFeatureCommand(main()->document()->getDirtyOrOriginLayer(aRoad->layer()),N,true)); theList->add(new WayAddNodeCommand(aRoad,N,SnapIdx,main()->document()->getDirtyOrOriginLayer(aRoad->layer()))); Moving[i] = N; } else { Moving[i]->setPosition(OriginalPosition[i]+Diff); } } view()->invalidate(true, true, false); } } Coord MoveNodeInteraction::calculateNewPosition(QMouseEvent *event, Feature *aLast, CommandList* theList) { if (aLast && CHECK_NODE(aLast)) return STATIC_CAST_NODE(aLast)->position(); Coord TargetC = XY_TO_COORD(event->pos()); if (aLast && CHECK_WAY(aLast)) { Way* R = STATIC_CAST_WAY(aLast); QPointF Target = TargetC; LineF L1(R->getNode(0)->position(),R->getNode(1)->position()); qreal Dist = L1.capDistance(TargetC); QPointF BestTarget = L1.project(Target); int BestIdx = 1; for (int i=2; i<R->size(); ++i) { LineF L2(R->getNode(i-1)->position(),R->getNode(i)->position()); qreal Dist2 = L2.capDistance(TargetC); if (Dist2 < Dist) { Dist = Dist2; BestTarget = L2.project(Target); BestIdx = i; } } if (theList && (Moving.size() == 1)) theList->add(new WayAddNodeCommand(R,Moving[0],BestIdx,document()->getDirtyOrOriginLayer(R->layer()))); return Coord(BestTarget); } return TargetC; } bool MoveNodeInteraction::isIdle() { if (Moving.size() && !panning()) return false; return true; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/MoveNodeInteraction.h��������������������������������������������0000664�0000000�0000000�00000001776�11770671653�0023316�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_MOVENODEINTERACTION_H_ #define MERKATOR_MOVENODEINTERACTION_H_ #include "Interaction.h" #include "Coord.h" #include <QList> class CommandList; class MoveNodeInteraction : public FeatureSnapInteraction { public: MoveNodeInteraction(MainWindow* aMain); ~MoveNodeInteraction(void); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif virtual bool isIdle(); private: void recurseAddNodes(Feature* F); Coord calculateNewPosition(QMouseEvent* event, Feature* aLast, CommandList* theList); QList<Node*> Moving; QList<Coord> OriginalPosition; Coord StartDragPosition; CommandList* theList; bool Virtual; bool HasMoved; }; #endif ��merkaartor-0.18.1/src/Interactions/RotateInteraction.cpp��������������������������������������������0000664�0000000�0000000�00000013065�11770671653�0023365�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "RotateInteraction.h" #include "MainWindow.h" #include "MapView.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Coord.h" #include "Document.h" #include "Projection.h" #include "Node.h" #include "LineF.h" #include "MDiscardableDialog.h" #include "PropertiesDock.h" #include <QtGui/QCursor> #include <QtGui/QMouseEvent> #include <QtGui/QPixmap> #include <QMessageBox> #include <QList> #include <QPainter> RotateInteraction::RotateInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain), StartDragPosition(0,0) { QPixmap pm(":/Icons/rotate.png"); rotateCursor = QCursor(pm.scaledToWidth(22)); } RotateInteraction::~RotateInteraction(void) { } QString RotateInteraction::toHtml() { QString help; help = (MainWindow::tr("HOVER to select;LEFT-DRAG to rotate")); QStringList helpList = help.split(";"); QString desc; desc = QString("<big><b>%1</b></big>").arg(MainWindow::tr("Rotate Interaction")); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "<hr/>"; S += "<ul style=\"margin-left: 0px; padding-left: 0px;\">"; for (int i=0; i<helpList.size(); ++i) { S+= "<li>" + helpList[i] + "</li>"; } S += "</ul>"; S += "</body></html>"; return S; } #ifndef _MOBILE QCursor RotateInteraction::cursor() const { if (LastSnap || Rotating.size()) { return rotateCursor; } return FeatureSnapInteraction::cursor(); } #endif void RotateInteraction::snapMousePressEvent(QMouseEvent * anEvent, Feature* aLast) { QList<Feature*> sel; if (view()->isSelectionLocked()) { if (theMain->properties()->selection(0)) sel.append(theMain->properties()->selection(0)); else sel.append(aLast); } else { sel = theMain->properties()->selection(); if (!sel.size() && aLast) sel.append(aLast); } Angle = 0.0; clearNoSnap(); Rotating.clear(); OriginalPosition.clear(); if (!sel.size()) return; view()->setInteracting(true); StartDragPosition = XY_TO_COORD(anEvent->pos()); OriginNode = NULL; NodeOrigin = false; CoordBox selBB = sel[0]->boundingBox(); for (int j=0; j<sel.size(); j++) { selBB.merge(sel[j]->boundingBox()); if (CHECK_WAY(sel[j])) { Way* R = STATIC_CAST_WAY(sel[j]); for (int i=0; i<R->size(); ++i) if (std::find(Rotating.begin(),Rotating.end(),R->get(i)) == Rotating.end()) Rotating.push_back(R->getNode(i)); addToNoSnap(R); } else if (CHECK_NODE(sel[j])) { if (!OriginNode && !NodeOrigin) { OriginNode = STATIC_CAST_NODE(sel[j]); NodeOrigin = true; } else { NodeOrigin = false; } } } if (Rotating.size() > 1) { if (NodeOrigin) { RotationCenter = COORD_TO_XY(OriginNode->position()); } else { RotationCenter = COORD_TO_XY(selBB.center()); } for (int i=0; i<Rotating.size(); ++i) { OriginalPosition.push_back(Rotating[i]->position()); addToNoSnap(Rotating[i]); } } else Rotating.clear(); } void RotateInteraction::snapMouseReleaseEvent(QMouseEvent * anEvent, Feature* /*Closer*/) { Q_UNUSED(anEvent); if (Angle != 0.0 && Rotating.size() && !panning()) { CommandList* theList; theList = new CommandList(MainWindow::tr("Rotate Feature").arg(Rotating[0]->id().numId), Rotating[0]); for (int i=0; i<Rotating.size(); ++i) { if (NodeOrigin && Rotating[i] == OriginNode) continue; Rotating[i]->setPosition(OriginalPosition[i]); if (Rotating[i]->layer()->isTrack()) theList->add(new MoveNodeCommand(Rotating[i],rotatePosition(OriginalPosition[i], Angle), Rotating[i]->layer())); else theList->add(new MoveNodeCommand(Rotating[i],rotatePosition(OriginalPosition[i], Angle), document()->getDirtyOrOriginLayer(Rotating[i]->layer()))); } document()->addHistory(theList); view()->invalidate(true, true, false); } Angle = 0.0; Rotating.clear(); OriginalPosition.clear(); view()->setInteracting(false); clearNoSnap(); } void RotateInteraction::snapMouseMoveEvent(QMouseEvent* anEvent, Feature* /*Closer*/) { if (Rotating.size() && !panning()) { Angle = calculateNewAngle(anEvent); for (int i=0; i<Rotating.size(); ++i) { if (NodeOrigin && Rotating[i] == OriginNode) continue; Rotating[i]->setPosition(rotatePosition(OriginalPosition[i], Angle)); } view()->invalidate(true, true, false); } } Coord RotateInteraction::rotatePosition(Coord position, qreal angle) { QPointF p = COORD_TO_XY(position); QLineF v(RotationCenter, p); v.setAngle(v.angle() + angle); return XY_TO_COORD(v.p2().toPoint()); } qreal RotateInteraction::calculateNewAngle(QMouseEvent *event) { QPointF p1 = COORD_TO_XY(StartDragPosition); QLineF v1(RotationCenter, p1); QLineF v2(RotationCenter, event->pos()); return v1.angleTo(v2); } void RotateInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { if (!RotationCenter.isNull()) { thePainter.setPen(QPen(QColor(255,0,0),1)); thePainter.drawEllipse(COORD_TO_XY(RotationCenter), 5, 5); } FeatureSnapInteraction::paintEvent(anEvent, thePainter); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/RotateInteraction.h����������������������������������������������0000664�0000000�0000000�00000002116�11770671653�0023025�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_ROTATEINTERACTION_H_ #define MERKATOR_ROTATEINTINTERACTION_H_ #include "Interaction.h" #include "Coord.h" #include <QList> class CommandList; class RotateInteraction : public FeatureSnapInteraction { public: RotateInteraction(MainWindow* aMain); ~RotateInteraction(void); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: Coord rotatePosition(Coord position, qreal angle); qreal calculateNewAngle(QMouseEvent* event); QList<Node*> Rotating; QList<Coord> OriginalPosition; Coord StartDragPosition; bool NodeOrigin; Node* OriginNode; QPointF RotationCenter; qreal Angle; QCursor rotateCursor; }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/ScaleInteraction.cpp���������������������������������������������0000664�0000000�0000000�00000012566�11770671653�0023163�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ScaleInteraction.h" #include "MainWindow.h" #include "MapView.h" #include "DocumentCommands.h" #include "WayCommands.h" #include "NodeCommands.h" #include "Coord.h" #include "Document.h" #include "Projection.h" #include "Node.h" #include "LineF.h" #include "MDiscardableDialog.h" #include "PropertiesDock.h" #include <QtGui/QCursor> #include <QtGui/QMouseEvent> #include <QtGui/QPixmap> #include <QMessageBox> #include <QList> #include <QPainter> ScaleInteraction::ScaleInteraction(MainWindow* aMain) : FeatureSnapInteraction(aMain), StartDragPosition(0,0) { QPixmap pm(":/Icons/rotate.png"); rotateCursor = QCursor(pm.scaledToWidth(22)); } ScaleInteraction::~ScaleInteraction(void) { } QString ScaleInteraction::toHtml() { QString help; help = (MainWindow::tr("HOVER to select;LEFT-DRAG to scale")); QStringList helpList = help.split(";"); QString desc; desc = QString("<big><b>%1</b></big>").arg(MainWindow::tr("Scale Interaction")); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "<hr/>"; S += "<ul style=\"margin-left: 0px; padding-left: 0px;\">"; for (int i=0; i<helpList.size(); ++i) { S+= "<li>" + helpList[i] + "</li>"; } S += "</ul>"; S += "</body></html>"; return S; } #ifndef _MOBILE QCursor ScaleInteraction::cursor() const { if (LastSnap || Scaling.size()) { return QCursor(Qt::SizeBDiagCursor); } return FeatureSnapInteraction::cursor(); } #endif void ScaleInteraction::snapMousePressEvent(QMouseEvent * anEvent, Feature* aLast) { QList<Feature*> sel; if (view()->isSelectionLocked()) { if (theMain->properties()->selection(0)) sel.append(theMain->properties()->selection(0)); else sel.append(aLast); } else { sel = theMain->properties()->selection(); if (!sel.size() && aLast) sel.append(aLast); } Radius = 1.0; clearNoSnap(); Scaling.clear(); OriginalPosition.clear(); if (!sel.size()) return; view()->setInteracting(true); StartDragPosition = XY_TO_COORD(anEvent->pos()); OriginNode = NULL; NodeOrigin = false; CoordBox selBB = sel[0]->boundingBox(); for (int j=0; j<sel.size(); j++) { selBB.merge(sel[j]->boundingBox()); if (CHECK_WAY(sel[j])) { Way* R = STATIC_CAST_WAY(sel[j]); for (int i=0; i<R->size(); ++i) if (std::find(Scaling.begin(),Scaling.end(),R->get(i)) == Scaling.end()) Scaling.push_back(R->getNode(i)); addToNoSnap(R); } else if (CHECK_NODE(sel[j])) { if (!OriginNode && !NodeOrigin) { OriginNode = STATIC_CAST_NODE(sel[j]); NodeOrigin = true; } else { NodeOrigin = false; } } } if (Scaling.size() > 1) { if (NodeOrigin) { ScaleCenter = COORD_TO_XY(OriginNode->position()); } else { ScaleCenter = COORD_TO_XY(selBB.center()); } for (int i=0; i<Scaling.size(); ++i) { OriginalPosition.push_back(Scaling[i]->position()); addToNoSnap(Scaling[i]); } } else Scaling.clear(); } void ScaleInteraction::snapMouseReleaseEvent(QMouseEvent * anEvent, Feature* /*Closer*/) { Q_UNUSED(anEvent); if (Radius != 1.0 && Scaling.size() && !panning()) { CommandList* theList; theList = new CommandList(MainWindow::tr("Scale Feature").arg(Scaling[0]->id().numId), Scaling[0]); for (int i=0; i<Scaling.size(); ++i) { if (NodeOrigin && Scaling[i] == OriginNode) continue; Scaling[i]->setPosition(OriginalPosition[i]); if (Scaling[i]->layer()->isTrack()) theList->add(new MoveNodeCommand(Scaling[i],scalePosition(OriginalPosition[i], Radius), Scaling[i]->layer())); else theList->add(new MoveNodeCommand(Scaling[i],scalePosition(OriginalPosition[i], Radius), document()->getDirtyOrOriginLayer(Scaling[i]->layer()))); } document()->addHistory(theList); view()->invalidate(true, true, false); } view()->setInteracting(false); Radius = 1.0; Scaling.clear(); OriginalPosition.clear(); clearNoSnap(); } void ScaleInteraction::snapMouseMoveEvent(QMouseEvent* anEvent, Feature* /*Closer*/) { if (Scaling.size() && !panning()) { Radius = distance(ScaleCenter,anEvent->pos()) / distance(ScaleCenter, COORD_TO_XY(StartDragPosition)); for (int i=0; i<Scaling.size(); ++i) { if (NodeOrigin && Scaling[i] == OriginNode) continue; Scaling[i]->setPosition(scalePosition(OriginalPosition[i], Radius)); } view()->invalidate(true, true, false); } } Coord ScaleInteraction::scalePosition(Coord position, qreal radius) { QPointF p = COORD_TO_XY(position); QLineF v(ScaleCenter, p); v.setLength(v.length() * radius); return XY_TO_COORD(v.p2().toPoint()); } void ScaleInteraction::paintEvent(QPaintEvent* anEvent, QPainter& thePainter) { if (!ScaleCenter.isNull()) { thePainter.setPen(QPen(QColor(255,0,0),1)); thePainter.drawEllipse(COORD_TO_XY(ScaleCenter), 5, 5); } FeatureSnapInteraction::paintEvent(anEvent, thePainter); } ������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/ScaleInteraction.h�����������������������������������������������0000664�0000000�0000000�00000002056�11770671653�0022621�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_SCALEINTERACTION_H_ #define MERKATOR_SCALEINTERACTION_H_ #include "Interaction.h" #include "Coord.h" #include <QList> class CommandList; class ScaleInteraction : public FeatureSnapInteraction { public: ScaleInteraction(MainWindow* aMain); ~ScaleInteraction(void); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual void snapMousePressEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseReleaseEvent(QMouseEvent * event, Feature* aLast); virtual void snapMouseMoveEvent(QMouseEvent* event, Feature* aLast); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: Coord scalePosition(Coord position, qreal radius); QList<Node*> Scaling; QList<Coord> OriginalPosition; Coord StartDragPosition; bool NodeOrigin; Node* OriginNode; QPointF ScaleCenter; qreal Radius; QCursor rotateCursor; }; #endif // MERKATOR_SCALEINTERACTION_H_ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/ZoomInteraction.cpp����������������������������������������������0000664�0000000�0000000�00000003600�11770671653�0023045�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ZoomInteraction.h" #include "MainWindow.h" #include "MapView.h" #include "Document.h" #include "Projection.h" #include "Node.h" #include <QtGui/QMouseEvent> #include <QtGui/QPainter> ZoomInteraction::ZoomInteraction(MainWindow* aMain) : Interaction(aMain), HaveFirstPoint(false) { #ifndef _MOBILE theMain->view()->setCursor(cursor()); #endif } ZoomInteraction::~ZoomInteraction(void) { } QString ZoomInteraction::toHtml() { QString help; help = (MainWindow::tr("LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom")); QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(MainWindow::tr("Zoom Interaction")); desc += QString("<b>%1</b><br/>").arg(help); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "</body></html>"; return S; } void ZoomInteraction::paintEvent(QPaintEvent*, QPainter& thePainter) { if (HaveFirstPoint) { QPen TP(Qt::DashDotLine); thePainter.setBrush(Qt::NoBrush); TP.setColor(QColor(255,0,0)); thePainter.setPen(TP); thePainter.drawRect(QRectF(P1,QSize(int(P2.x()-P1.x()),int(P2.y()-P1.y())))); } } void ZoomInteraction::mouseReleaseEvent(QMouseEvent * event) { if (!HaveFirstPoint) { P1 = P2 = event->pos(); HaveFirstPoint = true; } else { P2 = event->pos(); view()->setViewport(CoordBox(XY_TO_COORD(P1),XY_TO_COORD(P2)),view()->rect()); view()->invalidate(true, true, true); theMain->launchInteraction(0); } } void ZoomInteraction::mouseMoveEvent(QMouseEvent* event) { if (HaveFirstPoint) { P2 = event->pos(); view()->update(); } } #ifndef _MOBILE QCursor ZoomInteraction::cursor() const { QPixmap pm(":/Icons/zoomico.xpm"); return QCursor(pm,11,12); } #endif ��������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Interactions/ZoomInteraction.h������������������������������������������������0000664�0000000�0000000�00000001203�11770671653�0022507�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_ZOOMINTERACTION_H_ #define MERKATOR_ZOOMINTERACTION_H_ #include "Interaction.h" #include <QtCore/QPointF> class MapView; class ZoomInteraction : public Interaction { public: ZoomInteraction(MainWindow* aMain); ~ZoomInteraction(); virtual void mouseReleaseEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void paintEvent(QPaintEvent* anEvent, QPainter& thePainter); virtual QString toHtml(); #ifndef _MOBILE virtual QCursor cursor() const; #endif private: bool HaveFirstPoint; QPoint P1, P2; }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/�����������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016013�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/FilterEditDialog.ui����������������������������������������������������0000664�0000000�0000000�00000004613�11770671653�0021531�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>FilterEditDialog</class> <widget class="QDialog" name="FilterEditDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>165</height> </rect> </property> <property name="windowTitle"> <string>Dialog</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Name</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edName"/> </item> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>Filter</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="FilterLayout"> <item> <widget class="QLineEdit" name="edFilter"/> </item> <item> <widget class="QToolButton" name="btFilterHelper"> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>FilterEditDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>FilterEditDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> ���������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/ImageMapLayer.cpp������������������������������������������������������0000664�0000000�0000000�00000121307�11770671653�0021200�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "MainWindow.h" #include "MapView.h" #include "ImageMapLayer.h" #include "Document.h" #include "MerkaartorPreferences.h" #include "Projection.h" #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include "imagemanager.h" #ifdef USE_WEBKIT #include "browserimagemanager.h" #endif #include "tilemapadapter.h" #include "wmsmapadapter.h" #include "WmscMapAdapter.h" #include <QLocale> #include <QPainter> #include <QMessageBox> #include "LayerWidget.h" #include "Features.h" #include "ui_LicenseDisplayDialog.h" // ImageMapLayerPrivate class ImageMapLayerPrivate { public: QUuid bgType; IMapAdapter* theMapAdapter; QPixmap curPix; QPixmap newPix; Projection theProjection; QString selServer; IImageManager* theImageManager; #ifdef USE_WEBKIT BrowserImageManager* theBrowserImageManager; #endif ImageManager* theNetworkImageManager; TileMapAdapter* tmsa; WMSMapAdapter* wmsa; WmscMapAdapter* wmsca; QRect pr; QTransform theTransform; QRectF Viewport; QTransform AlignementTransform; QVector<QTransform> AlignementTransformList; QPointF cumulatedDelta; public: ImageMapLayerPrivate() { theMapAdapter = NULL; theImageManager = NULL; #ifdef USE_WEBKIT theBrowserImageManager = NULL; #endif theNetworkImageManager = NULL; tmsa = NULL; wmsa = NULL; wmsca = NULL; } ~ImageMapLayerPrivate() { SAFE_DELETE(theMapAdapter) SAFE_DELETE(theImageManager) } }; // ImageMapLayer ImageMapLayer::ImageMapLayer(const QString & aName) : Layer(aName), p(new ImageMapLayerPrivate) { p->bgType = NONE_ADAPTER_UUID; setName(tr("Map - None")); Layer::setVisible(false); setReadonly(true); } ImageMapLayer::~ ImageMapLayer() { SAFE_DELETE(p) } CoordBox ImageMapLayer::boundingBox() { if (p->bgType == SHAPE_ADAPTER_UUID && isVisible()) return Layer::boundingBox(); else if (!p->theMapAdapter || p->theMapAdapter->getBoundingbox().isNull()) return CoordBox(); p->theProjection.setProjectionType(p->theMapAdapter->projection()); QRectF r = p->theMapAdapter->getBoundingbox(); Coord tl = p->theProjection.inverse2Coord(r.topLeft()); Coord br = p->theProjection.inverse2Coord(r.bottomRight()); return CoordBox(tl, br); } int ImageMapLayer::size() const { return Layer::size(); } LayerWidget* ImageMapLayer::newWidget(void) { // delete theWidget; theWidget = new ImageLayerWidget(this); return theWidget; } void ImageMapLayer::setEnabled(bool b) { if (!b) setMapAdapter(NONE_ADAPTER_UUID); Layer::setEnabled(b); } void ImageMapLayer::updateWidget() { theWidget->initActions(); setMapAdapter(M_PREFS->getBackgroundPlugin(), M_PREFS->getSelectedServer()); theWidget->update(); } void ImageMapLayer::setVisible(bool b) { Layer::setVisible(b); if (p->bgType == NONE_ADAPTER_UUID) Layer::setVisible(false); M_PREFS->setBgVisible(isVisible()); } void ImageMapLayer::resetAlign() { p->AlignementTransform = QTransform(); if (p->theMapAdapter) { if (p->theMapAdapter->isTiled()) p->AlignementTransformList[p->theMapAdapter->getAdaptedZoom()] = QTransform(); else p->AlignementTransformList[0] = QTransform(); } else p->AlignementTransformList.resize(0); } QString ImageMapLayer::projection() const { if (p->theMapAdapter) return p->theMapAdapter->projection(); return ""; } IImageManager* ImageMapLayer::getImageManger() { return p->theImageManager; } IMapAdapter* ImageMapLayer::getMapAdapter() { return p->theMapAdapter; } void ImageMapLayer::setNoneAdapter() { p->bgType = NONE_ADAPTER_UUID; setName(tr("Map - None")); setVisible(false); } void ImageMapLayer::setMapAdapter(const QUuid& theAdapterUid, const QString& server) { WmsServerList* wsl; TmsServerList* tsl; if (p->theImageManager) p->theImageManager->abortLoading(); p->theImageManager = NULL; on_loadingFinished(); if (p->theMapAdapter) SAFE_DELETE(p->theMapAdapter); p->curPix = QPixmap(); resetAlign(); QString id = theAdapterUid.toString(); p->bgType = theAdapterUid; M_PREFS->setBackgroundPlugin(theAdapterUid); if (p->bgType == NONE_ADAPTER_UUID) { setNoneAdapter(); } else if (p->bgType == WMS_ADAPTER_UUID) { wsl = M_PREFS->getWmsServers(); if (!wsl->contains(server)) { // WMS not locally found setNoneAdapter(); } else { p->selServer = server; WmsServer theWmsServer(wsl->value(p->selServer)); switch (theWmsServer.WmsIsTiled) { case 0: p->wmsa = new WMSMapAdapter(theWmsServer); p->theMapAdapter = p->wmsa; setName(tr("Map - WMS - %1").arg(p->theMapAdapter->getName())); break; case 1: p->wmsca = new WmscMapAdapter(theWmsServer); p->theMapAdapter = p->wmsca; setName(tr("Map - WMS-C - %1").arg(p->theMapAdapter->getName())); break; case 2: p->wmsca = new WmscMapAdapter(theWmsServer); p->theMapAdapter = p->wmsca; setName(tr("Map - WMS-Tiled - %1").arg(p->theMapAdapter->getName())); break; } id += p->theMapAdapter->getName(); } } else if (p->bgType == TMS_ADAPTER_UUID) { tsl = M_PREFS->getTmsServers(); if (!tsl->contains(server)) { // TMS not locally found setNoneAdapter(); } else { p->selServer = server; TmsServer ts = tsl->value(p->selServer); p->tmsa = new TileMapAdapter(ts); p->theMapAdapter = p->tmsa; setName(tr("Map - TMS - %1").arg(p->theMapAdapter->getName())); id += p->theMapAdapter->getName(); } } else if (p->bgType == SHAPE_ADAPTER_UUID) { setNoneAdapter(); } else { IMapAdapterFactory* fac = M_PREFS->getBackgroundPlugin(p->bgType); if (fac) p->theMapAdapter = fac->CreateInstance(); if (p->theMapAdapter) { setName(tr("Map - %1").arg(p->theMapAdapter->getName())); p->theMapAdapter->setSettings(M_PREFS->getQSettings()); ImageLayerWidget* theImageWidget = qobject_cast<ImageLayerWidget*>(theWidget); Q_ASSERT(theImageWidget); connect(p->theMapAdapter, SIGNAL(forceZoom()), theImageWidget, SLOT(zoomLayer())); connect(p->theMapAdapter, SIGNAL(forceProjection()), theImageWidget, SLOT(setProjection())); #ifndef _MOBILE if (g_Merk_MainWindow) connect(p->theMapAdapter, SIGNAL(forceRefresh()), g_Merk_MainWindow, SLOT(invalidateView())); #endif } else setNoneAdapter(); } // Display License if (p->theMapAdapter) { QString s = p->theMapAdapter->getLicenseUrl(); if (!s.isEmpty()) { QSettings* set = M_PREFS->getQSettings(); QStringList AcceptedLicenses = set->value("backgroundImage/AcceptedLicenses").toStringList(); if (!AcceptedLicenses.contains(id)) { QUrl u(s); if (u.isValid()) { Ui::LicenseDisplayDialog ui; QDialog dlg; ui.setupUi(&dlg); dlg.setWindowTitle(tr("Licensing Terms: %1").arg(name())); ui.webView->load(u); bool OK = false; while (!OK) { if (dlg.exec()) { if (!ui.cbAgree->isChecked()) { QMessageBox::StandardButton ret = QMessageBox::warning(&dlg, tr("License Terms not accepted"), tr("You have not ticked the checkbox expressing your agreement with the licensing terms.\nAs such, you won't be able to use this source as a map layer.\nIs it really what you meant?"), QMessageBox::Yes|QMessageBox::No, QMessageBox::No); if (ret == QMessageBox::Yes) OK = true; } else OK = true; } } if (!ui.cbAgree->isChecked()) { SAFE_DELETE(p->wmsa) SAFE_DELETE(p->wmsca) SAFE_DELETE(p->tmsa) if (p->theImageManager) p->theImageManager->abortLoading(); SAFE_DELETE(p->theImageManager) on_loadingFinished(); p->theMapAdapter = NULL; p->curPix = QPixmap(); p->bgType = NONE_ADAPTER_UUID; setName(tr("Map - None")); setVisible(false); } else { AcceptedLicenses << id; set->setValue("backgroundImage/AcceptedLicenses", AcceptedLicenses); } } } } } if (p->theMapAdapter) { switch (p->theMapAdapter->getType()) { case IMapAdapter::DirectBackground: case IMapAdapter::VectorBackground: if (!p->theNetworkImageManager) { p->theNetworkImageManager = new ImageManager(); connect(p->theNetworkImageManager, SIGNAL(dataRequested()), this, SLOT(on_imageRequested()), Qt::QueuedConnection); connect(p->theNetworkImageManager, SIGNAL(dataReceived()), this, SLOT(on_imageReceived()), Qt::QueuedConnection); connect(p->theNetworkImageManager, SIGNAL(loadingFinished()), this, SLOT(on_loadingFinished()), Qt::QueuedConnection); } p->theImageManager = p->theNetworkImageManager; p->theMapAdapter->setImageManager(p->theImageManager); break; case IMapAdapter::BrowserBackground : #ifdef USE_WEBKIT if (!p->theBrowserImageManager) { p->theBrowserImageManager = new BrowserImageManager(); connect(p->theBrowserImageManager, SIGNAL(dataRequested()), this, SLOT(on_imageRequested()), Qt::QueuedConnection); connect(p->theBrowserImageManager, SIGNAL(dataReceived()), this, SLOT(on_imageReceived()), Qt::QueuedConnection); connect(p->theBrowserImageManager, SIGNAL(loadingFinished()), this, SLOT(on_loadingFinished()), Qt::QueuedConnection); } p->theBrowserImageManager->setCacheDir(M_PREFS->getCacheDir()); p->theBrowserImageManager->setCacheMaxSize(M_PREFS->getCacheSize()); #ifdef BROWSERIMAGEMANAGER_IS_THREADED m->start(); #endif // BROWSERIMAGEMANAGER_IS_THREADED p->theImageManager = p->theBrowserImageManager; p->theMapAdapter->setImageManager(p->theImageManager); #endif break; case IMapAdapter::NetworkBackground : case IMapAdapter::NetworkDataBackground : if (!p->theNetworkImageManager) { p->theNetworkImageManager = new ImageManager(); connect(p->theNetworkImageManager, SIGNAL(dataRequested()), this, SLOT(on_imageRequested()), Qt::QueuedConnection); connect(p->theNetworkImageManager, SIGNAL(dataReceived()), this, SLOT(on_imageReceived()), Qt::QueuedConnection); connect(p->theNetworkImageManager, SIGNAL(loadingFinished()), this, SLOT(on_loadingFinished()), Qt::QueuedConnection); } p->theNetworkImageManager->setCacheDir(M_PREFS->getCacheDir()); p->theNetworkImageManager->setCacheMaxSize(M_PREFS->getCacheSize()); p->theImageManager = p->theNetworkImageManager; p->theMapAdapter->setImageManager(p->theImageManager); break; } } } bool ImageMapLayer::isTiled() { if (!p->theMapAdapter) return false; return (p->theMapAdapter->isTiled()); } void QTransformToXml(QXmlStreamWriter& stream, const QTransform& theTransform) { stream.writeAttribute("m11", QString::number(theTransform.m11())); stream.writeAttribute("m12", QString::number(theTransform.m12())); stream.writeAttribute("m13", QString::number(theTransform.m13())); stream.writeAttribute("m21", QString::number(theTransform.m21())); stream.writeAttribute("m22", QString::number(theTransform.m22())); stream.writeAttribute("m23", QString::number(theTransform.m23())); stream.writeAttribute("m31", QString::number(theTransform.m31())); stream.writeAttribute("m32", QString::number(theTransform.m32())); stream.writeAttribute("m33", QString::number(theTransform.m33())); } QTransform QTransformFomXml(QXmlStreamReader& stream) { qreal m11 = stream.attributes().value("m11").toString().toDouble(); qreal m12 = stream.attributes().value("m12").toString().toDouble(); qreal m13 = stream.attributes().value("m13").toString().toDouble(); qreal m21 = stream.attributes().value("m21").toString().toDouble(); qreal m22 = stream.attributes().value("m11").toString().toDouble(); qreal m23 = stream.attributes().value("m23").toString().toDouble(); qreal m31 = stream.attributes().value("m31").toString().toDouble(); qreal m32 = stream.attributes().value("m32").toString().toDouble(); qreal m33 = stream.attributes().value("m33").toString().toDouble(); return QTransform(m11, m12, m13, m21, m22, m23, m31, m32, m33); } bool ImageMapLayer::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * /* progress */) { bool OK = true; stream.writeStartElement(metaObject()->className()); stream.writeAttribute("xml:id", id()); stream.writeAttribute("name", name()); stream.writeAttribute("alpha", QString::number(getAlpha(),'f',2)); stream.writeAttribute("visible", QString((isVisible() ? "true" : "false"))); stream.writeAttribute("selected", QString((isSelected() ? "true" : "false"))); stream.writeAttribute("enabled", QString((isEnabled() ? "true" : "false"))); stream.writeAttribute("bgtype", p->bgType.toString()); WmsServer ws; TmsServer ts; if (p->bgType == WMS_ADAPTER_UUID) { stream.writeStartElement("WmsServer"); stream.writeAttribute("name", p->selServer); stream.writeEndElement(); } else if (p->bgType == TMS_ADAPTER_UUID) { stream.writeStartElement("TmsServer"); stream.writeAttribute("name", p->selServer); stream.writeEndElement(); } else if (p->bgType != NONE_ADAPTER_UUID) { stream.writeStartElement("Data"); if (!asTemplate) p->theMapAdapter->toXML(stream); stream.writeEndElement(); } if (!asTemplate) { stream.writeStartElement("AdjustmentList"); for (int i=0; i<p->AlignementTransformList.size(); ++i) { if (!p->AlignementTransformList.at(i).isIdentity()) { stream.writeStartElement("Adjustment"); stream.writeAttribute("zoom", QString::number(i)); QTransformToXml(stream, p->AlignementTransformList.at(i)); stream.writeEndElement(); } } stream.writeEndElement(); } stream.writeEndElement(); return OK; } ImageMapLayer * ImageMapLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * /*progress*/) { ImageMapLayer* l = new ImageMapLayer(stream.attributes().value("name").toString()); l->setId(stream.attributes().value("xml:id").toString()); d->addImageLayer(l); QString server; QUuid bgtype = QUuid(stream.attributes().value("bgtype").toString()); qreal alpha = stream.attributes().value("alpha").toString().toDouble(); bool visible = (stream.attributes().value("visible") == "true" ? true : false); bool selected = (stream.attributes().value("selected") == "true" ? true : false); bool enabled = (stream.attributes().value("enabled") == "false" ? false : true); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "AdjustmentList") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Adjustment") { int z = stream.attributes().value("zoom").toString().toInt(); if (l->p->AlignementTransformList.size() < z+1) l->p->AlignementTransformList.resize(z+1); l->p->AlignementTransformList[z] = QTransformFomXml(stream); stream.readNext(); } else if (!stream.isWhitespace()) { qDebug() << "ImgLay: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } else if (stream.name() == "WmsServer") { server = stream.attributes().value("name").toString(); l->setMapAdapter(bgtype, server); stream.readNext(); } else if (stream.name() == "TmsServer") { server = stream.attributes().value("name").toString(); l->setMapAdapter(bgtype, server); stream.readNext(); } else if (stream.name() == "Data") { l->setMapAdapter(bgtype, server); stream.readNext(); if (l->getMapAdapter()) l->getMapAdapter()->fromXML(stream); } else if (!stream.isWhitespace()) { qDebug() << "ImgLay: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } l->setAlpha(alpha); l->setVisible(visible); l->setSelected(selected); l->setEnabled(enabled); return l; } void ImageMapLayer::drawImage(QPainter* P) { if (!p->theMapAdapter) return; P->setOpacity(getAlpha()); P->drawPixmap(0, 0, p->curPix); } void ImageMapLayer::zoom(qreal zoom, const QPoint& pos, const QRect& rect) { if (!p->theMapAdapter) return; if (p->theMapAdapter->getImageManager()) p->theMapAdapter->getImageManager()->abortLoading(); if (p->curPix.isNull()) return; QPixmap tpm = p->curPix.scaled(rect.size() * zoom, Qt::KeepAspectRatio); p->curPix.fill(Qt::transparent); QPainter P(&p->curPix); QPointF fPos(pos); fPos -= fPos * zoom; P.drawPixmap(fPos, tpm); } void ImageMapLayer::pan(QPoint delta) { if (!p->theMapAdapter) return; if (p->theMapAdapter->getImageManager()) p->theMapAdapter->getImageManager()->abortLoading(); if (p->curPix.isNull()) return; QRegion exposed; p->curPix.scroll(delta.x(), delta.y(), p->curPix.rect(), &exposed); QPainter P(&p->curPix); P.setClipping(true); P.setClipRegion(exposed); P.eraseRect(p->curPix.rect()); // on_imageReceived(); } void ImageMapLayer::zoom_in() { if (!isTiled()) return; p->theMapAdapter->zoom_in(); } void ImageMapLayer::zoom_out() { if (!isTiled()) return; p->theMapAdapter->zoom_out(); } int ImageMapLayer::getCurrentZoom() { if (!isTiled()) return -1; return p->theMapAdapter->getAdaptedZoom(); } void ImageMapLayer::setCurrentZoom(MapView& theView, const CoordBox& viewport, const QRect& rect) { QRectF projVp; QRectF fRect(rect); if (p->theProjection.getProjectionProj4() == theView.projection().getProjectionProj4()) { projVp.setTopLeft(theView.invertedTransform().map(fRect.topLeft())); projVp.setBottomRight(theView.invertedTransform().map(fRect.bottomRight())); } else projVp = p->theProjection.toProjectedRectF(viewport, rect); qreal tileWidth, tileHeight; int maxZoom = p->theMapAdapter->getAdaptedMaxZoom(viewport); int tilesizeW = p->theMapAdapter->getTileSizeW(); int tilesizeH = p->theMapAdapter->getTileSizeH(); // Set zoom level to 0. while (p->theMapAdapter->getAdaptedZoom()) { p->theMapAdapter->zoom_out(); } tileWidth = p->theMapAdapter->getBoundingbox().width() / p->theMapAdapter->getTilesWE(p->theMapAdapter->getZoom()); tileHeight = p->theMapAdapter->getBoundingbox().height() / p->theMapAdapter->getTilesNS(p->theMapAdapter->getZoom()); qreal w = (fRect.width() / tilesizeW) * tileWidth; qreal h = (fRect.height() / tilesizeH) * tileHeight; while (!(projVp.width() > w && -projVp.height() > h) && (p->theMapAdapter->getAdaptedZoom() < maxZoom)) { p->theMapAdapter->zoom_in(); tileWidth = p->theMapAdapter->getBoundingbox().width() / p->theMapAdapter->getTilesWE(p->theMapAdapter->getZoom()); tileHeight = p->theMapAdapter->getBoundingbox().height() / p->theMapAdapter->getTilesNS(p->theMapAdapter->getZoom()); w = (fRect.width() / tilesizeW) * tileWidth; h = (fRect.height() / tilesizeH) * tileHeight; } QPointF vpCenter = projVp.center(); QPointF upperLeft = QPointF(vpCenter.x() - w/2, vpCenter.y() + h/2); QPointF lowerRight = QPointF(vpCenter.x() + w/2, vpCenter.y() - h/2); QRectF vlm = QRectF(upperLeft, lowerRight); if (p->theMapAdapter->getAdaptedZoom() && projVp != vlm) p->theMapAdapter->zoom_out(); } qreal ImageMapLayer::pixelPerCoord() { if (!isTiled()) return -1.; return (p->theMapAdapter->getTileSizeW() * p->theMapAdapter->getTilesWE(p->theMapAdapter->getZoom())) / 360.; } void ImageMapLayer::forceRedraw(MapView& theView, QTransform& aTransform, QRect Screen) { if (!p->theMapAdapter) return; if (!p->Viewport.intersects(theView.viewport())) { p->curPix = QPixmap(Screen.size()); p->curPix.fill(Qt::transparent); } p->AlignementTransform = aTransform; p->Viewport = theView.viewport(); draw(theView, Screen); } void ImageMapLayer::draw(MapView& theView, QRect& rect) { if (!p->theMapAdapter) return; p->theProjection.setProjectionType(p->theMapAdapter->projection()); p->cumulatedDelta = QPointF(); if (p->theMapAdapter->isTiled()) p->pr = drawTiled(theView, rect); else p->pr = drawFull(theView, rect); if (p->curPix.size() != rect.size()) { p->curPix = QPixmap(rect.size()); p->curPix.fill(Qt::transparent); } if (p->newPix.isNull()) return; const QSize ps = p->pr.size(); const QSize pmSize = p->newPix.size(); const qreal ratio = qMax<const qreal>((qreal)pmSize.width()/ps.width()*1.0, (qreal)pmSize.height()/ps.height()*1.0); // qDebug() << "Bg image ratio " << ratio; QPixmap pms; if (ratio >= 1.0) { // qDebug() << "Bg image scale 1 " << ps << " : " << p->newPix.size(); pms = p->newPix.scaled(ps); } else { const QSizeF drawingSize = pmSize * ratio; const QSizeF originSize = pmSize/2 - drawingSize/2; const QPointF drawingOrigin = QPointF(originSize.width(), originSize.height()); const QRect drawingRect = QRect(drawingOrigin.toPoint(), drawingSize.toSize()); // qDebug() << "Bg image scale 2 " << ps << " : " << p->newPix.size(); if (ps*ratio != drawingRect.size()) pms = p->newPix.copy(drawingRect).scaled(ps*ratio); else pms = p->newPix.copy(drawingRect); } QPainter P(&p->curPix); P.drawPixmap((pmSize.width()-pms.width())/2, (pmSize.height()-pms.height())/2, pms); // if (p->theMapAdapter->isTiled()) // P.drawPixmap((pmSize.width()-pms.width())/2, (pmSize.height()-pms.height())/2, pms); // else // P.drawPixmap(QPoint((pmSize.width()-pms.width())/2, (pmSize.height()-pms.height())/2) + p->theDelta, pms); } QRect ImageMapLayer::drawFull(MapView& theView, QRect& rect) { QRectF fRect(rect); p->AlignementTransformList.resize(1); p->AlignementTransformList[0] *= p->AlignementTransform; p->AlignementTransform = QTransform(); QRectF alignedViewport = p->AlignementTransformList.at(0).mapRect(p->Viewport); MapView::transformCalc(p->theTransform, p->theProjection, 0.0, CoordBox(alignedViewport), rect); CoordBox cViewport(p->theProjection.inverse2Coord(p->theTransform.inverted().map(fRect.bottomLeft())), p->theProjection.inverse2Coord(p->theTransform.inverted().map(fRect.topRight()))); CoordBox Viewport = CoordBox(p->AlignementTransformList.at(0).mapRect(cViewport)); QPointF bl = theView.toView(Viewport.bottomLeft()); QPointF tr = theView.toView(Viewport.topRight()); if ( Viewport.bottomLeft().y() >= -90. && Viewport.bottomLeft().y() <= 90. && Viewport.bottomLeft().x() >= -180. && Viewport.bottomLeft().x() <= 180. && Viewport.topRight().y() >= -90. && Viewport.topRight().y() <= 90. && Viewport.topRight().x() >= -180. && Viewport.topRight().x() <= 180. ) { QRectF vp; if (p->theProjection.getProjectionProj4() == theView.projection().getProjectionProj4() && alignedViewport == theView.viewport()) { bl = QPointF(rect.bottomLeft()); tr = QPointF(rect.topRight()); vp.setTopLeft(theView.invertedTransform().map(fRect.topLeft())); vp.setBottomRight(theView.invertedTransform().map(fRect.bottomRight())); } else vp = p->theProjection.toProjectedRectF(CoordBox(alignedViewport), rect); QRectF wgs84vp = QRectF(QPointF(Viewport.bottomLeft().x(), Viewport.bottomLeft().y()) , QPointF(Viewport.topRight().x(), Viewport.topRight().y())); // Act depending on adapter type if (p->theMapAdapter->getType() == IMapAdapter::DirectBackground) { QPixmap pm = p->theMapAdapter->getPixmap(wgs84vp, vp, rect); if (!pm.isNull()) { p->curPix = QPixmap(); if (pm.rect() != rect) p->newPix = pm.scaled(rect.size(), Qt::IgnoreAspectRatio); else p->newPix = pm; } else return rect; } else if (p->theMapAdapter->getType() == IMapAdapter::VectorBackground) { const QList<IFeature*>* theFeatures = p->theMapAdapter->getPaths(wgs84vp, NULL); if (theFeatures) { foreach(IFeature* f, *theFeatures) { const QPainterPath& thePath = f->getPath(); if (thePath.elementCount() == 1) { IFeature::FId id(IFeature::Point, -(f->id().numId)); if (get(id)) continue; Node* N = g_backend.allocNode(this, Coord((QPointF)thePath.elementAt(0))); N->setId(id); add(N); for (int i=0; i<f->tagSize(); ++i) N->setTag(f->tagKey(i),f->tagValue(i)); } else { IFeature::FId id(IFeature::LineString, -(f->id().numId)); if (get(id)) continue; Way* W = g_backend.allocWay(this); W->setId(id); for (int i=0; i<thePath.elementCount(); ++i) { Node* N = g_backend.allocNode(this, Coord((QPointF)thePath.elementAt(i))); add(N); W->add(N); } add(W); for (int i=0; i<f->tagSize(); ++i) W->setTag(f->tagKey(i),f->tagValue(i)); } } } p->newPix = QPixmap(rect.size()); p->newPix.fill(Qt::transparent); } else if (p->theMapAdapter->getType() == IMapAdapter::NetworkDataBackground) { // QString url (p->theMapAdapter->getQuery(wgs84vp, vp, rect)); // if (!url.isEmpty()) { // qDebug() << "ImageMapLayer::drawFull: getting: " << url; // QByteArray ba = p->theMapAdapter->getImageManager()->getData(p->theMapAdapter,url); // QDomDocument* theXmlDoc = new QDomDocument(); // theXmlDoc->setContent(ba); // Document* doc = Document::getDocumentFromXml(theXmlDoc); // if (doc) { // QList<Feature*> theFeats; // for (int i=0; i<doc->layerSize(); ++i) // for (int j=0; j<doc->getLayer(i)->size(); ++j) // if (!doc->getLayer(i)->get(j)->isNull()) // theFeats.push_back(doc->getLayer(i)->get(j)); // for (int i=0; i<theFeats.size(); ++i) { // Feature*F = theFeats.at(i); // // TODO Make reproducable id's or delete everything or ... // if (get(F->id())) // continue; // // get tags // QList<QPair<QString, QString> > Tags; // for (int j=0; j<F->tagSize(); ++j) { // Tags << qMakePair(F->tagKey(j), F->tagValue(j)); // } // F->clearTags(); // // Re-link null features to the ones in the current document // for (int j=0; j<F->size(); ++j) { // Feature* C = F->get(j); // if (C->isNull()) { // if (Feature* CC = get(C->id())) { // if (Relation* R = CAST_RELATION(F)) { // QString role = R->getRole(j); // R->remove(j); // R->add(role, CC, j); // } else if (Way* W = CAST_WAY(F)) { // Node* N = CAST_NODE(CC); // W->remove(j); // W->add(N, j); // } // } else // theFeats.push_back(C); // } // } // F->layer()->remove(F); // add(F); // //Put tags // for (int j=0; j<Tags.size(); ++j) { // F->setTag(Tags[j].first, Tags[j].second); // } // } // } // delete doc; // delete theXmlDoc; // } p->newPix = QPixmap(); return rect; } else if (p->theMapAdapter->getType() == IMapAdapter::NetworkBackground || p->theMapAdapter->getType() == IMapAdapter::BrowserBackground) { QString url (p->theMapAdapter->getQuery(wgs84vp, vp, rect)); if (!url.isEmpty()) { qDebug() << "ImageMapLayer::drawFull: getting: " << url; QPixmap pm = QPixmap::fromImage(p->theMapAdapter->getImageManager()->getImage(p->theMapAdapter,url)); if (!pm.isNull()) { p->curPix = QPixmap(); p->newPix = pm.scaled(rect.size(), Qt::IgnoreAspectRatio); } else { p->newPix = QPixmap(); return rect; } } } } return QRectF(bl.x(), tr.y(), tr.x() - bl.x() +1, bl.y() - tr.y() + 1).toRect(); } QRect ImageMapLayer::drawTiled(MapView& theView, QRect& rect) { QRectF projVp; // QRectF fRect(-rect.width(), -rect.height(), rect.width()*3.0, rect.height()*3.0); QRectF fRect(rect); if (p->theProjection.getProjectionProj4() == theView.projection().getProjectionProj4()) { projVp.setTopLeft(theView.invertedTransform().map(fRect.topLeft())); projVp.setBottomRight(theView.invertedTransform().map(fRect.bottomRight())); } else projVp = p->theProjection.toProjectedRectF(CoordBox(p->Viewport), fRect.toRect()); qreal tileWidth, tileHeight; int maxZoom = p->theMapAdapter->getAdaptedMaxZoom(p->Viewport); int tilesizeW = p->theMapAdapter->getTileSizeW(); int tilesizeH = p->theMapAdapter->getTileSizeH(); if (!M_PREFS->getZoomBoris()) { // Set zoom level to 0. while (p->theMapAdapter->getAdaptedZoom()) { p->theMapAdapter->zoom_out(); } } tileWidth = p->theMapAdapter->getBoundingbox().width() / p->theMapAdapter->getTilesWE(p->theMapAdapter->getZoom()); tileHeight = p->theMapAdapter->getBoundingbox().height() / p->theMapAdapter->getTilesNS(p->theMapAdapter->getZoom()); qreal w = (fRect.width() / tilesizeW) * tileWidth; qreal h = (fRect.height() / tilesizeH) * tileHeight; if (!M_PREFS->getZoomBoris()) { while (!(projVp.width() > w && -projVp.height() > h) && (p->theMapAdapter->getAdaptedZoom() < maxZoom)) { p->theMapAdapter->zoom_in(); tileWidth = p->theMapAdapter->getBoundingbox().width() / p->theMapAdapter->getTilesWE(p->theMapAdapter->getZoom()); tileHeight = p->theMapAdapter->getBoundingbox().height() / p->theMapAdapter->getTilesNS(p->theMapAdapter->getZoom()); w = (fRect.width() / tilesizeW) * tileWidth; h = (fRect.height() / tilesizeH) * tileHeight; } if (p->theMapAdapter->getAdaptedZoom() && projVp.width() > w && -projVp.height() > h) { p->theMapAdapter->zoom_out(); tileWidth = p->theMapAdapter->getBoundingbox().width() / p->theMapAdapter->getTilesWE(p->theMapAdapter->getZoom()); tileHeight = p->theMapAdapter->getBoundingbox().height() / p->theMapAdapter->getTilesNS(p->theMapAdapter->getZoom()); w = (fRect.width() / tilesizeW) * tileWidth; h = (fRect.height() / tilesizeH) * tileHeight; } } p->AlignementTransformList.resize(maxZoom+1); p->AlignementTransformList[p->theMapAdapter->getAdaptedZoom()] *= p->AlignementTransform; p->AlignementTransform = QTransform(); QRectF alignedViewport = p->AlignementTransformList.at(p->theMapAdapter->getAdaptedZoom()).mapRect(p->Viewport); if (alignedViewport != p->Viewport) { if (p->theProjection.getProjectionProj4() == theView.projection().getProjectionProj4() && alignedViewport == theView.viewport()) { projVp.setTopLeft(theView.invertedTransform().map(fRect.topLeft())); projVp.setBottomRight(theView.invertedTransform().map(fRect.bottomRight())); } else projVp = p->theProjection.toProjectedRectF(CoordBox(alignedViewport), rect); } QPointF vpCenter = projVp.center(); QPointF upperLeft = QPointF(vpCenter.x() - w/2, vpCenter.y() + h/2); QPointF lowerRight = QPointF(vpCenter.x() + w/2, vpCenter.y() - h/2); QRectF vlm = QRectF(upperLeft, lowerRight); QPointF vp0Center = QPointF(projVp.width()/2, -projVp.height()/2); Coord ulCoord, lrCoord; ulCoord = p->theProjection.inverse2Coord(vlm.topLeft()); lrCoord = p->theProjection.inverse2Coord(vlm.bottomRight()); const QPointF tl = theView.transform().map(theView.projection().project(ulCoord)); const QPointF br = theView.transform().map(theView.projection().project(lrCoord)); QRect retRect = QRectF(tl, br).toRect(); // Actual drawing int i, j; QPointF vpCenter0 = QPointF(vpCenter.x()-p->theMapAdapter->getBoundingbox().left(), p->theMapAdapter->getBoundingbox().bottom()-vpCenter.y()); qreal mapmiddle_tile_x = qRound(vpCenter0.x()/tileWidth); qreal mapmiddle_tile_y = qRound(vpCenter0.y()/tileHeight); qDebug() << "z: " << p->theMapAdapter->getAdaptedZoom() << "; t_x: " << mapmiddle_tile_x << "; t_y: " << mapmiddle_tile_y ; qreal cross_x = vpCenter0.x() - mapmiddle_tile_x*tileWidth; // position on middle tile qreal cross_y = vpCenter0.y() - mapmiddle_tile_y*tileHeight; qDebug() << "cross_x: " << cross_x << "; cross_y: " << cross_y; // calculate how many surrounding tiles have to be drawn to fill the display qreal space_left = vp0Center.x() - cross_x; int tiles_left = space_left/tileWidth; if (space_left>0) tiles_left+=1; qreal space_above = vp0Center.y() - cross_y; int tiles_above = space_above/tileHeight; if (space_above>0) tiles_above+=1; qreal space_right = vp0Center.x() - (tileWidth-cross_x); int tiles_right = space_right/tileWidth; if (space_right>0) tiles_right+=1; qreal space_bottom = vp0Center.y() - (tileHeight-cross_y); int tiles_bottom = space_bottom/tileHeight; if (space_bottom>0) tiles_bottom+=1; QList<Tile> tiles; int cross_scr_x = cross_x * tilesizeW / tileWidth; int cross_scr_y = cross_y * tilesizeH / tileHeight; QSize pmSize = fRect.size().toSize(); // QSize pmSize((tiles_right+tiles_left+1)*tilesizeW, (tiles_bottom+tiles_above+1)*tilesizeH); // QPixmap tmpPm = p->pm.scaled(retRect.size(), Qt::IgnoreAspectRatio); p->newPix = QPixmap(pmSize); p->newPix.fill(Qt::transparent); QPainter painter(&p->newPix); // painter.drawPixmap(0, 0, tmpPm); // qDebug() << "Tiles: " << tiles_right+tiles_left+1 << "x" << tiles_bottom+tiles_above+1; for (i=-tiles_left; i<=tiles_right; i++) { for (j=-tiles_above; j<=tiles_bottom; j++) { if (p->theMapAdapter->isValid(mapmiddle_tile_x+i, mapmiddle_tile_y+j, p->theMapAdapter->getZoom())) { #ifdef Q_CC_MSVC qreal priority = _hypot(i, j); #else qreal priority = hypot(i, j); #endif tiles.append(Tile(i, j, priority)); } } } qSort(tiles); int n=0; // Arbitrarily limit the number of tiles to 100 for (QList<Tile>::const_iterator tile = tiles.begin(); tile != tiles.end() && n<100; ++tile) { QImage pm = p->theMapAdapter->getImageManager()->getImage(p->theMapAdapter, p->theMapAdapter->getQuery(mapmiddle_tile_x+tile->i, mapmiddle_tile_y+tile->j, p->theMapAdapter->getZoom())); if (!pm.isNull()) painter.drawImage((tile->i*tilesizeW)+pmSize.width()/2 -cross_scr_x, (tile->j*tilesizeH)+pmSize.height()/2-cross_scr_y, pm); if (M_PREFS->getDrawTileBoundary()) { painter.drawRect((tile->i*tilesizeW)+pmSize.width()/2 -cross_scr_x, (tile->j*tilesizeH)+pmSize.height()/2-cross_scr_y, tilesizeW, tilesizeH); } ++n; } painter.end(); // qDebug() << "tl: " << tl << "; br: " << br; // qDebug() << "vp: " << projVp; // qDebug() << "vlm: " << vlm; qDebug() << "retRect: " << retRect; // QRect expR = QRect(-retRect.left(), -retRect.top(), retRect.width()+retRect.left(), retRect.height()+retRect.top()); // p->newPix.save("c:/tmp.png"); // p->newPix.copy(expR).save("c:/tmp2.png"); return retRect; } void ImageMapLayer::on_imageRequested() { emit imageRequested(this); } void ImageMapLayer::on_imageReceived() { emit imageReceived(this); } void ImageMapLayer::on_loadingFinished() { emit loadingFinished(this); } QString ImageMapLayer::toPropertiesHtml() { QString h; QRectF alignedViewport = p->AlignementTransform.mapRect(p->Viewport); h += "<u>" + name() + "</u><br/>"; if (p->theMapAdapter) { if (p->theMapAdapter->getType() != IMapAdapter::DirectBackground) { h += "<i>" + tr("Server") + ": </i>" + p->theMapAdapter->getHost(); h += "<br/>"; if (p->theMapAdapter->isTiled()) { h += "<i>" + tr("Tile size") + ": </i>" + QString("%1x%2").arg(p->theMapAdapter->getTileSizeW()).arg(p->theMapAdapter->getTileSizeH()); h += "<br/>"; h += "<i>" + tr("Min/Max zoom") + ": </i>" + QString("%1/%2").arg(p->theMapAdapter->getMinZoom(alignedViewport)).arg(p->theMapAdapter->getMaxZoom(alignedViewport)); h += "<br/>"; } } h += "<i>" + tr("Projection") + ": </i>" + p->theMapAdapter->projection(); h += "<br/>"; h += p->theMapAdapter->toPropertiesHtml(); } h += ""; return h; } QTransform ImageMapLayer::getCurrentAlignmentTransform() { if (p->theMapAdapter && p->AlignementTransformList.size()) { if (p->theMapAdapter->isTiled()) { return p->AlignementTransformList.at(p->theMapAdapter->getAdaptedZoom()); } else { return p->AlignementTransformList.at(0); } } else return QTransform(); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/ImageMapLayer.h��������������������������������������������������������0000664�0000000�0000000�00000005301�11770671653�0020640�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef IMAGEMAPLAYER_H_ #define IMAGEMAPLAYER_H_ #include "Layer.h" #define NONE_ADAPTER_UUID QUuid("{8F5D3625-F987-45c5-A50B-17D88384F97D}") #define SHAPE_ADAPTER_UUID QUuid("{AFB0324E-34D0-4267-BB8A-CF56CD2D7012}") #define WMS_ADAPTER_UUID QUuid("{E238750A-AC27-429e-995C-A60C17B9A1E0}") #define TMS_ADAPTER_UUID QUuid("{CA8A07EC-A466-462b-929F-3805BC9DEC95}") #define BING_ADAPTER_UUID QUuid("2a888701-1a93-4040-9b34-1e5339f67f43}") class MapView; class ImageMapLayerPrivate; class Projection; class IImageManager; struct Tile { Tile(int i, int j, qreal priority) : i(i), j(j), priority(priority) {} int i, j; qreal priority; bool operator<(const Tile& rhs) const { return priority < rhs.priority; } }; class ImageMapLayer : public Layer { Q_OBJECT public: //ImageMapLayer() : layermanager(0) {} ImageMapLayer(const QString& aName); virtual ~ImageMapLayer(); IMapAdapter* getMapAdapter(); void setMapAdapter(const QUuid& theAdapterUid, const QString& server = QString()); QString projection() const; virtual void setVisible(bool b); virtual LayerWidget* newWidget(void); virtual void updateWidget(); CoordBox boundingBox(); virtual int size() const; virtual bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); virtual QString toPropertiesHtml(); static ImageMapLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::ImageLayerType;} virtual const LayerGroups classGroups() const {return(Layer::Map);} virtual void drawImage(QPainter* P); virtual void forceRedraw(MapView& theView, QTransform& aTransform, QRect rect); virtual void draw(MapView& theView, QRect& rect); virtual void pan(QPoint delta); virtual void zoom(qreal zoom, const QPoint& pos, const QRect& rect); virtual void zoom_in(); virtual void zoom_out(); virtual int getCurrentZoom(); virtual void setCurrentZoom(MapView& theView, const CoordBox& viewport, const QRect& rect); virtual qreal pixelPerCoord(); virtual QTransform getCurrentAlignmentTransform(); bool isTiled(); IImageManager* getImageManger(); virtual void setEnabled(bool b); void resetAlign(); private: void setNoneAdapter(); QRect drawTiled(MapView& theView, QRect& rect); QRect drawFull(MapView& theView, QRect& rect); signals: void imageRequested(ImageMapLayer*); void imageReceived(ImageMapLayer*); void loadingFinished(ImageMapLayer*); private slots: void on_imageRequested(); void on_imageReceived(); void on_loadingFinished(); protected: ImageMapLayerPrivate* p; }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/Layer.cpp��������������������������������������������������������������0000664�0000000�0000000�00000062371�11770671653�0017604�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Layer.h" #include "Features.h" #include "Document.h" #include "LayerWidget.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "WayCommands.h" #include "LineF.h" #include "Global.h" #include "MainWindow.h" #include <QApplication> #include <QMultiMap> #include <QProgressDialog> #include <QUuid> #include <QMap> #include <QList> #include <QMenu> #include <algorithm> #include "LayerPrivate.h" /* Layer */ Layer::Layer() : p(new LayerPrivate), theWidget(0) { p->alpha = 1.0; p->dirtyLevel = 0; } Layer::Layer(const QString& aName) : p(new LayerPrivate), theWidget(0) { p->Name = aName; p->alpha = 1.0; p->dirtyLevel = 0; } Layer::Layer(const Layer&) : QObject(), p(0), theWidget(0) { } Layer::~Layer() { clear(); SAFE_DELETE(p); } void Layer::setName(const QString& s) { p->Name = s; if (theWidget) { theWidget->setName(s); theWidget->getAssociatedMenu()->setTitle(s); } } const QString& Layer::name() const { return p->Name; } void Layer::setDescription(const QString& s) { p->Description = s; } const QString& Layer::description() const { return p->Description; } void Layer::setVisible(bool b) { p->Visible = b; if (theWidget) { theWidget->setLayerVisible(p->Visible, false); } if (p->theDocument) { FeatureIterator it(p->theDocument); for(;!it.isEnd(); ++it) { it.get()->invalidateMeta(); } } } bool Layer::isVisible() const { return p->Visible; } void Layer::setSelected(bool b) { p->selected = b; } bool Layer::isSelected() const { return p->selected; } void Layer::setEnabled(bool b) { p->Enabled = b; if (theWidget) { theWidget->setVisible(b); theWidget->getAssociatedMenu()->menuAction()->setVisible(b); } if (p->theDocument) { FeatureIterator it(p->theDocument); for(;!it.isEnd(); ++it) { it.get()->invalidateMeta(); } } } bool Layer::isEnabled() const { return p->Enabled; } void Layer::setReadonly(bool b) { p->Readonly = b; if (p->theDocument) { FeatureIterator it(p->theDocument); for(;!it.isEnd(); ++it) { it.get()->invalidateMeta(); } } } bool Layer::isReadonly() const { return p->Readonly; } void Layer::setUploadable(bool b) { p->Uploadable = b; } bool Layer::isUploadable() const { return p->Uploadable; } void Layer::add(Feature* aFeature) { if (aFeature) { aFeature->setLayer(this); p->Features.push_back(aFeature); g_backend.sync(aFeature); aFeature->invalidateMeta(); notifyIdUpdate(aFeature->id(),aFeature); } else { qDebug() << "Layer::add: logic error, no featured passed"; } } void Layer::remove(Feature* aFeature) { if (p->Features.removeOne(aFeature)) { g_backend.sync(aFeature); aFeature->setLayer(0); notifyIdUpdate(aFeature->id(),0); } } void Layer::deleteFeature(Feature* aFeature) { if (p->Features.removeOne(aFeature)) { g_backend.deallocFeature(this, aFeature); aFeature->setLayer(0); notifyIdUpdate(aFeature->id(),0); } } void Layer::clear() { while (p->Features.count()) { remove(p->Features[0]); } } void Layer::notifyIdUpdate(const IFeature::FId& id, Feature* aFeature) { QHash<qint64, MapFeaturePtr>::iterator i; if (!aFeature) { i = p->IdMap.find(id.numId); while (i != p->IdMap.end() && i.key() == id.numId) { if (i.value()->id().type & id.type) i = p->IdMap.erase(i); else ++i; } } else { if (!aFeature->isVirtual()) p->IdMap.insertMulti(id.numId, aFeature); } } bool Layer::exists(Feature* F) const { int i = p->Features.indexOf(F); return (i != -1); } int Layer::size() const { return p->Features.size(); } void Layer::setDocument(Document* aDocument) { p->theDocument = aDocument; } Document* Layer::getDocument() { return p->theDocument; } int Layer::get(Feature* aFeature) { for (int i=0; i<p->Features.size(); ++i) if (p->Features[i] == aFeature) return i; return -1; } QList<Feature *> Layer::get() { QList<Feature *> theList; for (int i=0; i<p->Features.size(); ++i) if (p->Features[i]) theList.append(p->Features[i]); return theList; } Feature* Layer::get(int i) { return p->Features.at(i); } Feature* Layer::get(const IFeature::FId& id) { QHash<qint64, MapFeaturePtr>::const_iterator i; i = p->IdMap.find(id.numId); while (i != p->IdMap.end() && i.key() == id.numId) { if ((i.value()->id().type & id.type) != 0) return i.value(); ++i; } return NULL; } const Feature* Layer::get(int i) const { if((int)i>=p->Features.size()) return 0; return p->Features[i]; } LayerWidget* Layer::getWidget(void) { return theWidget; } void Layer::deleteWidget(void) { // theWidget->deleteLater(); delete theWidget; theWidget = NULL; } void Layer::setAlpha(const qreal a) { p->alpha = a; if (p->theDocument) { FeatureIterator it(p->theDocument); for(;!it.isEnd(); ++it) { it.get()->invalidateMeta(); } } } qreal Layer::getAlpha() const { return p->alpha; } void Layer::setId(const QString& id) { Id = id; } const QString& Layer::id() const { if (Id.isEmpty()) Id = QUuid::createUuid().toString(); return Id; } CoordBox Layer::boundingBox() { if(p->Features.size()==0) return CoordBox(Coord(0,0),Coord(0,0)); CoordBox Box; bool haveFirst = false; for (int i=0; i<p->Features.size(); ++i) { if (p->Features.at(i)->isDeleted()) continue; if (p->Features.at(i)->notEverythingDownloaded()) continue; if (p->Features.at(i)->boundingBox().isNull()) continue; if (haveFirst) Box.merge(p->Features.at(i)->boundingBox()); else { Box = p->Features.at(i)->boundingBox(); haveFirst = true; } } return Box; } int Layer::incDirtyLevel(int inc) { return p->dirtyLevel += inc; } int Layer::decDirtyLevel(int inc) { return p->dirtyLevel -= inc; } int Layer::setDirtyLevel(int newLevel) { return (p->dirtyLevel = newLevel); } int Layer::getDirtyLevel() const { return p->dirtyLevel; } int Layer::getDisplaySize() const { int objects = 0; QList<MapFeaturePtr>::const_iterator i; for (i = p->Features.constBegin(); i != p->Features.constEnd(); i++) { if ((*i)->isVirtual()) continue; ++objects; } return objects; } int Layer::getDirtySize() const { int dirtyObjects = 0; QList<MapFeaturePtr>::const_iterator i; for (i = p->Features.constBegin(); i != p->Features.constEnd(); i++) { Feature* F = (*i); if (F->isVirtual()) continue; else if (F->isDirty() && (!(F->isDeleted()) || (F->isDeleted() && F->hasOSMId()))) ++dirtyObjects; } return dirtyObjects; } bool Layer::canDelete() const { return (p->dirtyLevel == 0); } QString Layer::toMainHtml() { QString desc; desc = QString("<big><b>%1</b></big><br/>").arg(p->Name); if (!p->Description.isEmpty()) desc += QString("<b>%1</b><br/>").arg(p->Description); desc += QString("<small>(%1)</small>").arg(id()); QString S = "<html><head/><body>" "<small><i>" + QString(metaObject()->className()) + "</i></small><br/>" + desc; S += "<hr/>"; S += "<i>"+QApplication::translate("Layer", "Size")+": </i>" + QApplication::translate("Layer", "%n features", "", QCoreApplication::CodecForTr, getDisplaySize())+"<br/>"; S += "%1"; S += "</body></html>"; return S; } QString Layer::toHtml() { return toMainHtml().arg(""); } QString Layer::toPropertiesHtml() { QString h; h += "<u>" + p->Name + "</u><br/>"; h += "<i>" + tr("Features") + ": </i>" + QString::number(getDirtySize()); return h; } bool Layer::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress) { Q_UNUSED(asTemplate); Q_UNUSED(progress); stream.writeAttribute("xml:id", id()); stream.writeAttribute("name", p->Name); stream.writeAttribute("alpha", QString::number(p->alpha,'f',2)); stream.writeAttribute("visible", QString((p->Visible ? "true" : "false"))); stream.writeAttribute("selected", QString((p->selected ? "true" : "false"))); stream.writeAttribute("enabled", QString((p->Enabled ? "true" : "false"))); stream.writeAttribute("readonly", QString((p->Readonly ? "true" : "false"))); stream.writeAttribute("uploadable", QString((p->Uploadable ? "true" : "false"))); if (getDirtyLevel()) stream.writeAttribute("dirtylevel", QString::number(getDirtyLevel())); return true; } Layer * Layer::fromXML(Layer* l, Document* /*d*/, QXmlStreamReader& stream, QProgressDialog * /*progress*/) { l->setId(stream.attributes().value("xml:id").toString()); l->setAlpha(stream.attributes().value("alpha").toString().toDouble()); l->setVisible((stream.attributes().value("visible") == "true" ? true : false)); l->setSelected((stream.attributes().value("selected") == "true" ? true : false)); l->setEnabled((stream.attributes().value("enabled") == "false" ? false : true)); l->setReadonly((stream.attributes().value("readonly") == "true" ? true : false)); l->setUploadable((stream.attributes().value("uploadable") == "false" ? false : true)); l->setDirtyLevel((stream.attributes().hasAttribute("dirtylevel") ? stream.attributes().value("dirtylevel").toString().toInt() : 0)); return l; } // DrawingLayer DrawingLayer::DrawingLayer() : Layer() { p->Visible = true; } DrawingLayer::DrawingLayer(const QString & aName) : Layer(aName) { p->Visible = true; } DrawingLayer::~ DrawingLayer() { } LayerWidget* DrawingLayer::newWidget(void) { // delete theWidget; theWidget = new DrawingLayerWidget(this); return theWidget; } bool DrawingLayer::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress) { bool OK = true; stream.writeStartElement(metaObject()->className()); Layer::toXML(stream, asTemplate, progress); if (!asTemplate) { stream.writeStartElement("osm"); stream.writeAttribute("version", "0.6"); stream.writeAttribute("generator", QString("%1 %2").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION))); if (p->Features.size()) { stream.writeStartElement("bound"); CoordBox layBB = boundingBox(); QString S = QString().number(layBB.bottomLeft().y(),'f',6) + ","; S += QString().number(layBB.bottomLeft().x(),'f',6) + ","; S += QString().number(layBB.topRight().y(),'f',6) + ","; S += QString().number(layBB.topRight().x(),'f',6); stream.writeAttribute("box", S); stream.writeAttribute("origin", QString("http://www.openstreetmap.org/api/%1").arg(M_PREFS->apiVersion())); stream.writeEndElement(); } QList<MapFeaturePtr>::iterator it; for(it = p->Features.begin(); it != p->Features.end(); it++) (*it)->toXML(stream, progress); stream.writeEndElement(); QList<CoordBox> downloadBoxes = p->theDocument->getDownloadBoxes(this); if (downloadBoxes.size() && p->theDocument->getLastDownloadLayerTime().secsTo(QDateTime::currentDateTime()) < 12*3600) { // Do not export downloaded areas if older than 12h stream.writeStartElement("DownloadedAreas"); QListIterator<CoordBox>it(downloadBoxes); while(it.hasNext()) { it.next().toXML("DownloadedBoundingBox", stream); } stream.writeEndElement(); } } stream.writeEndElement(); return OK; } DrawingLayer * DrawingLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { DrawingLayer* l = new DrawingLayer(stream.attributes().value("name").toString()); Layer::fromXML(l, d, stream, progress); d->add(l); if (!DrawingLayer::doFromXML(l, d, stream, progress)) { d->remove(l); delete l; return NULL; } return l; } DrawingLayer * DrawingLayer::doFromXML(DrawingLayer* l, Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "osm") { QSet<Way*> addedWays; stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "way") { Way* R = Way::fromXML(d, l, stream); if (R) addedWays << R; } else if (stream.name() == "relation") { /* Relation* r = */ Relation::fromXML(d, l, stream); } else if (stream.name() == "node") { /* Node* N = */ Node::fromXML(d, l, stream); } else if (stream.name() == "trkseg") { /*TrackSegment* T = */ TrackSegment::fromXML(d, l, stream, progress); } else if (stream.name() == "bound") { stream.skipCurrentElement(); } else if (!stream.isWhitespace()) { qDebug() << "osm: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; QString el = stream.readElementText(QXmlStreamReader::IncludeChildElements); } progress->setValue(stream.characterOffset()); if (progress->wasCanceled()) break; stream.readNext(); qApp->processEvents(); } } else if (stream.name() == "DownloadedAreas") { if (d->getLastDownloadLayerTime().secsTo(QDateTime::currentDateTime()) < 12*3600) { // Do not import downloaded areas if older than 12h stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "DownloadedBoundingBox") { d->addDownloadBox(l, CoordBox::fromXML(stream)); stream.readNext(); } stream.readNext(); } } else stream.skipCurrentElement(); } else if (!stream.isWhitespace()) { qDebug() << "DrLayer: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } if (progress->wasCanceled()) break; stream.readNext(); } return l; } // TrackLayer TrackLayer::TrackLayer(const QString & aName, const QString& filename) : Layer(aName), Filename(filename) { p->Visible = true; p->Readonly = M_PREFS->getReadonlyTracksDefault(); } TrackLayer::~ TrackLayer() { } LayerWidget* TrackLayer::newWidget(void) { theWidget = new TrackLayerWidget(this); return theWidget; } void TrackLayer::extractLayer() { DrawingLayer* extL = new DrawingLayer(tr("Extract - %1").arg(name())); extL->setUploadable(false); TrackNode* P; QList<TrackNode*> PL; const qreal coordPer10M = (double(COORD_MAX) * 2 / 40080000) * 2; for (int i=0; i < size(); i++) { if (TrackSegment* S = dynamic_cast<TrackSegment*>(get(i))) { if (S->size() < 2) continue; // Cope with walking tracks qreal konstant = coordPer10M; qreal meanSpeed = S->distance() / S->duration() * 3600; if (meanSpeed < 10.) konstant /= 3.; PL.clear(); P = g_backend.allocTrackNode(extL, S->getNode(0)->position() ); P->setTime(S->getNode(0)->time()); P->setElevation(S->getNode(0)->elevation()); P->setSpeed(S->getNode(0)->speed()); PL.append(P); int startP = 0; P = g_backend.allocTrackNode(extL, S->getNode(1)->position() ); P->setTime(S->getNode(1)->time()); P->setElevation(S->getNode(1)->elevation()); P->setSpeed(S->getNode(1)->speed()); PL.append(P); int endP = 1; for (int j=2; j < S->size(); j++) { P = g_backend.allocTrackNode(extL, S->getNode(j)->position() ); P->setTime(S->getNode(j)->time()); P->setElevation(S->getNode(j)->elevation()); P->setSpeed(S->getNode(j)->speed()); PL.append(P); endP = PL.size()-1; LineF l(PL[startP]->position(), PL[endP]->position()); for (int k=startP+1; k < endP; k++) { qreal d = l.distance(PL[k]->position()); if (d < konstant) { Node* P = PL[k]; PL.removeAt(k); g_backend.deallocFeature(extL, P); endP--; } else startP = k; } } Way* R = g_backend.allocWay(extL); R->setLastUpdated(Feature::OSMServer); extL->add(R); for (int i=0; i < PL.size(); i++) { extL->add(PL[i]); R->add(PL[i]); } } } p->theDocument->add(extL); } const QString TrackLayer::getFilename() { return Filename; } QString TrackLayer::toHtml() { QString S; int totSegment = 0; int totSec = 0; qreal totDistance = 0; for (int i=0; i < size(); ++i) { if (TrackSegment* S = CAST_SEGMENT(get(i))) { totSegment++; totSec += S->duration(); totDistance += S->distance(); } } S += "<i>"+QApplication::translate("TrackLayer", "# of track segments")+": </i>" + QApplication::translate("TrackLayer", "%1").arg(QLocale().toString(totSegment))+"<br/>"; S += "<i>"+QApplication::translate("TrackLayer", "Total distance")+": </i>" + QApplication::translate("TrackLayer", "%1 km").arg(QLocale().toString(totDistance, 'g', 3))+"<br/>"; S += "<i>"+QApplication::translate("TrackLayer", "Total duration")+": </i>" + QApplication::translate("TrackLayer", "%1h %2m").arg(QLocale().toString(totSec/3600)).arg(QLocale().toString((totSec%3600)/60))+"<br/>"; return toMainHtml().arg(S); } bool TrackLayer::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress) { bool OK = true; if (asTemplate) return OK; stream.writeStartElement(metaObject()->className()); Layer::toXML(stream, asTemplate, progress); stream.writeStartElement("gpx"); stream.writeAttribute("version", "1.1"); stream.writeAttribute("creator", "Merkaartor"); stream.writeAttribute("xmlns", "http://www.topografix.com/GPX/1/1"); QList<Node*> waypoints; QList<TrackSegment*> segments; QList<MapFeaturePtr>::iterator it; for(it = p->Features.begin(); it != p->Features.end(); it++) { if (TrackSegment* S = CAST_SEGMENT(*it)) segments.push_back(S); if (Node* P = CAST_NODE(*it)) if (!P->tagValue("_waypoint_","").isEmpty()) waypoints.push_back(P); } for (int i=0; i < waypoints.size(); ++i) { waypoints[i]->toGPX(stream, progress, "wpt"); } stream.writeStartElement("trk"); for (int i=0; i < segments.size(); ++i) segments[i]->toXML(stream, progress); stream.writeEndElement(); stream.writeEndElement(); //gpx stream.writeEndElement(); return OK; } TrackLayer * TrackLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { TrackLayer* l = new TrackLayer(stream.attributes().value("name").toString()); Layer::fromXML(l, d, stream, progress); d->add(l); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "gpx") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "trk") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "trkseg") { TrackSegment::fromXML(d, l, stream, progress); } stream.readNext(); } } else if (stream.name() == "wpt") { /* Node* N = */ TrackNode::fromGPX(d, l, stream); //l->add(N); progress->setValue(progress->value()+1); } else if (!stream.isWhitespace()) { qDebug() << "gpx: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } progress->setValue(stream.characterOffset()); if (progress->wasCanceled()) break; stream.readNext(); qApp->processEvents(); } } else if (!stream.isWhitespace()) { qDebug() << "TrLayer: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } return l; } // SpecialLayer SpecialLayer::SpecialLayer(const QString &aName, Layer::LayerType type, const QString &filename) : TrackLayer(aName, filename), m_type(type) { setReadonly(true); } LayerWidget* SpecialLayer::newWidget(void) { theWidget = new SpecialLayerWidget(this); return theWidget; } void SpecialLayer::refreshLayer() { if (m_type == Layer::OsmBugsLayer) { g_Merk_MainWindow->on_layersOpenstreetbugsAction_triggered(); } else if (m_type == Layer::MapDustLayer) { g_Merk_MainWindow->on_layersMapdustAction_triggered(); } } // DirtyLayer DirtyLayer::DirtyLayer(const QString & aName) : DrawingLayer(aName) { p->Visible = true; } DirtyLayer::~ DirtyLayer() { } DirtyLayer* DirtyLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { DirtyLayer* l = new DirtyLayer(stream.attributes().value("name").toString()); Layer::fromXML(l, d, stream, progress); d->add(l); d->setDirtyLayer(l); DrawingLayer::doFromXML(l, d, stream, progress); return l; } LayerWidget* DirtyLayer::newWidget(void) { theWidget = new DirtyLayerWidget(this); return theWidget; } // UploadedLayer UploadedLayer::UploadedLayer(const QString & aName) : DrawingLayer(aName) { p->Visible = true; } UploadedLayer::~ UploadedLayer() { } UploadedLayer* UploadedLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { UploadedLayer* l = new UploadedLayer(stream.attributes().value("name").toString()); Layer::fromXML(l, d, stream, progress); d->add(l); d->setUploadedLayer(l); DrawingLayer::doFromXML(l, d, stream, progress); return l; } LayerWidget* UploadedLayer::newWidget(void) { theWidget = new UploadedLayerWidget(this); return theWidget; } // DeletedLayer DeletedLayer::DeletedLayer(const QString & aName) : DrawingLayer(aName) { p->Visible = false; p->Enabled = false; } DeletedLayer::~ DeletedLayer() { } bool DeletedLayer::toXML(QXmlStreamWriter& , bool, QProgressDialog * ) { return true; } DeletedLayer* DeletedLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { /* Only keep DeletedLayer for backward compatibility with MDC */ Layer::fromXML(dynamic_cast<DrawingLayer*>(d->getDirtyOrOriginLayer()), d, stream, progress); DrawingLayer::doFromXML(dynamic_cast<DrawingLayer*>(d->getDirtyOrOriginLayer()), d, stream, progress); return NULL; } LayerWidget* DeletedLayer::newWidget(void) { return NULL; } // FilterLayer FilterLayer::FilterLayer(const QString& aId, const QString & aName, const QString& aFilter) : Layer(aName) , theSelectorString(aFilter) { setId(aId); p->Visible = true; theSelector = TagSelector::parse(theSelectorString); } FilterLayer::~ FilterLayer() { } void FilterLayer::setFilter(const QString& aFilter) { theSelectorString = aFilter; delete theSelector; theSelector = TagSelector::parse(theSelectorString); FeatureIterator it(p->theDocument); for(;!it.isEnd(); ++it) { it.get()->updateFilters(); } } bool FilterLayer::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress) { stream.writeStartElement(metaObject()->className()); Layer::toXML(stream, asTemplate, progress); stream.writeAttribute("filter", theSelectorString); stream.writeEndElement(); return true; } FilterLayer* FilterLayer::fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress) { QString id; if (stream.attributes().hasAttribute("xml:id")) id = stream.attributes().value("xml:id").toString(); else id = QUuid::createUuid().toString(); FilterLayer* l = new FilterLayer(id, stream.attributes().value("name").toString(), stream.attributes().value("filter").toString()); Layer::fromXML(l, d, stream, progress); stream.readNext(); d->add(l); return l; } LayerWidget* FilterLayer::newWidget(void) { theWidget = new FilterLayerWidget(this); return theWidget; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/Layer.h����������������������������������������������������������������0000664�0000000�0000000�00000017533�11770671653�0017251�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef LAYER_H_ #define LAYER_H_ #include "MapTypedef.h" #include "Coord.h" #include "Feature.h" #include <QProgressDialog> #include "ILayer.h" class QString; class QprogressDialog; class Feature; class LayerPrivate; class MapAdapter; class Layer; class LayerManager; class LayerWidget; class WMSMapAdapter; class TileMapAdapter; class TrackSegment; class IMapAdapter; class Document; struct IndexFindContext; class Layer : public QObject, public ILayer { Q_OBJECT public: Layer(); Layer(const QString& aName); private: Layer(const Layer& aLayer); public: typedef enum { UndefinedType, DeletedLayerType, DirtyLayerType, DrawingLayerType, ExtractedLayerType, ImageLayerType, TrackLayerType, UploadedLayerType, FilterLayerType, OsmBugsLayer, MapDustLayer } LayerType; enum LayerGroup { None = 0x00000000, Map = 0x00000001, Draw = 0x00000002, Tracks = 0x00000004, Filters = 0x00000008, Special = 0x00000010, All = 0x0000ffff }; Q_DECLARE_FLAGS(LayerGroups, LayerGroup) public: virtual ~Layer(); void setName(const QString& aName); const QString& name() const; void setDescription(const QString& aDesc); const QString& description() const; bool isVisible() const; bool isSelected() const; bool isEnabled() const; virtual void add(Feature* aFeature); virtual void remove(Feature* aFeature); virtual void deleteFeature(Feature* aFeature); virtual void clear(); bool exists(Feature* aFeature) const; int getDisplaySize() const; virtual int size() const; int get(Feature* aFeature); QList<Feature *> get(); Feature* get(int i); const Feature* get(int i) const; virtual Feature* get(const IFeature::FId& id); void notifyIdUpdate(const IFeature::FId& id, Feature* aFeature); virtual void setDocument(Document* aDocument); Document* getDocument(); LayerWidget* getWidget(void); void deleteWidget(void); virtual void updateWidget() {} virtual void setVisible(bool b); virtual void setSelected(bool b); virtual void setEnabled(bool b); virtual void setReadonly(bool b); virtual void setUploadable(bool b); virtual LayerWidget* newWidget(void) = 0; virtual void setAlpha(const qreal alpha); virtual qreal getAlpha() const; void setId(const QString& id); const QString& id() const; virtual QString toMainHtml(); virtual QString toHtml(); virtual QString toPropertiesHtml(); virtual bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); static Layer* fromXML(Layer* l, Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual CoordBox boundingBox(); virtual /* const */ LayerType classType() const = 0; virtual const LayerGroups classGroups() const = 0; int incDirtyLevel(int inc=1); int decDirtyLevel(int inc=1); int getDirtyLevel() const; int setDirtyLevel(int newLevel); int getDirtySize() const; virtual bool canDelete() const; virtual bool isUploadable() const; virtual bool isReadonly() const; virtual bool isTrack() const {return false;} protected: LayerPrivate* p; LayerWidget* theWidget; mutable QString Id; }; Q_DECLARE_OPERATORS_FOR_FLAGS(Layer::LayerGroups) class DrawingLayer : public Layer { Q_OBJECT public: DrawingLayer(); DrawingLayer(const QString& aName); virtual ~DrawingLayer(); virtual LayerWidget* newWidget(void); virtual bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); static DrawingLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); static DrawingLayer* doFromXML(DrawingLayer* l, Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::DrawingLayerType;} virtual const LayerGroups classGroups() const {return (Layer::Draw);} }; class TrackLayer : public Layer { Q_OBJECT public: TrackLayer(const QString& aName="", const QString& filaname=""); virtual ~TrackLayer(); virtual LayerWidget* newWidget(void); virtual void extractLayer(); virtual const QString getFilename(); virtual QString toHtml(); virtual bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); static TrackLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::TrackLayerType;} virtual const LayerGroups classGroups() const {return(Layer::Tracks);} virtual bool isUploadable() const {return true;} virtual bool isTrack() const {return true;} protected: QString Filename; }; class SpecialLayer : public TrackLayer { Q_OBJECT public: SpecialLayer(const QString& aName="", LayerType type=Layer::UndefinedType, const QString& filename=""); virtual LayerWidget* newWidget(void); virtual void refreshLayer(); virtual /* const */ LayerType classType() const {return m_type;} virtual const LayerGroups classGroups() const {return(Layer::Special);} virtual bool isUploadable() const {return false;} virtual bool isTrack() const {return true;} protected: LayerType m_type; }; class DirtyLayer : public DrawingLayer { Q_OBJECT public: DirtyLayer(const QString& aName); virtual ~DirtyLayer(); static DirtyLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::DirtyLayerType;} virtual const LayerGroups classGroups() const {return(Layer::Map|Layer::Draw);} virtual LayerWidget* newWidget(void); virtual bool canDelete() const { return false; } }; class UploadedLayer : public DrawingLayer { Q_OBJECT public: UploadedLayer(const QString& aName); virtual ~UploadedLayer(); static UploadedLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::UploadedLayerType;} virtual const LayerGroups classGroups() const {return(Layer::Map|Layer::Draw);} virtual LayerWidget* newWidget(void); virtual bool canDelete() const { return false; } }; class DeletedLayer : public DrawingLayer { Q_OBJECT public: DeletedLayer(const QString& aName); virtual ~DeletedLayer(); virtual bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); static DeletedLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::DeletedLayerType;} virtual const LayerGroups classGroups() const {return(Layer::None);} virtual LayerWidget* newWidget(void); virtual bool isUploadable() const {return false;} virtual bool canDelete() const { return false; } }; class FilterLayer : public Layer { Q_OBJECT public: FilterLayer(const QString& aId, const QString& aName, const QString& aFilter); virtual ~FilterLayer(); bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); static FilterLayer* fromXML(Document* d, QXmlStreamReader& stream, QProgressDialog * progress); virtual /* const */ LayerType classType() const {return Layer::FilterLayerType;} virtual const LayerGroups classGroups() const {return(Layer::Filters);} virtual LayerWidget* newWidget(void); virtual bool canDelete() const { return true; } public: virtual void setFilter(const QString& aFilter); virtual QString filter() { return theSelectorString; } virtual TagSelector* selector() { return theSelector; } protected: QString theSelectorString; TagSelector* theSelector; }; Q_DECLARE_METATYPE ( QUuid ) #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/LayerIterator.h��������������������������������������������������������0000664�0000000�0000000�00000002376�11770671653�0020762�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������class IDocument; template <class L> class LayerIterator { public: LayerIterator(IDocument* aDoc) : theDocument(aDoc), curLayerIdx(0), isAtEnd(false) { docSize = theDocument->layerSize(); if(!check() && !isAtEnd) ++(*this); } virtual ~LayerIterator() {} bool isEnd() const { return isAtEnd; } LayerIterator& operator ++() { docSize = theDocument->layerSize(); if (curLayerIdx < docSize-1) { curLayerIdx++; } else isAtEnd = true; while(!isAtEnd && !check()) { if (curLayerIdx < docSize-1) { curLayerIdx++; } else isAtEnd = true; } return *this; } L get() { return qobject_cast<L>(theDocument->getLayer(curLayerIdx)); } int index() { return curLayerIdx; } protected: virtual bool check() { if (curLayerIdx >= docSize) { isAtEnd = true; return false; } if (qobject_cast<L>(theDocument->getLayer((curLayerIdx))) == NULL) return false; return true; } IDocument* theDocument; int curLayerIdx; bool isAtEnd; int docSize; }; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/LayerPrivate.h���������������������������������������������������������0000664�0000000�0000000�00000001303�11770671653�0020570�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef LAYERPRIVATE_H #define LAYERPRIVATE_H class LayerPrivate { public: LayerPrivate() { theDocument = NULL; selected = false; Enabled = true; Readonly = false; Uploadable = true; IndexingBlocked = false; VirtualsUpdatesBlocked = false; } ~LayerPrivate() { } QList<Feature*> Features; QHash<qint64, MapFeaturePtr> IdMap; QString Name; QString Description; bool Visible; bool selected; bool Enabled; bool Readonly; bool Uploadable; bool IndexingBlocked; bool VirtualsUpdatesBlocked; qreal alpha; int dirtyLevel; Document* theDocument; }; #endif // LAYERPRIVATE_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/LayerWidget.cpp��������������������������������������������������������0000664�0000000�0000000�00000050030�11770671653�0020735�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "LayerWidget.h" #include "LayerDock.h" #include "MainWindow.h" #include "Document.h" #include "Layer.h" #include "MerkaartorPreferences.h" #include "IMapAdapterFactory.h" #include "IMapAdapter.h" #include <QApplication> #include <QMouseEvent> #include <QStylePainter> #include <QInputDialog> #include <QMessageBox> #include "SelectionDialog.h" #define LINEHEIGHT 25 LayerWidget::LayerWidget(Layer* aLayer, QWidget* aParent) : QPushButton(aParent), theLayer(aLayer), ctxMenu(0), closeAction(0), actZoom(0), associatedMenu(0) { ui.setupUi(this); setCheckable(true); #ifdef Q_OS_MAC setFlat(true); #endif setFocusPolicy(Qt::NoFocus); setContextMenuPolicy(Qt::NoContextMenu); ui.cbVisible->blockSignals(true); ui.cbVisible->setChecked(theLayer->isVisible()); ui.cbVisible->blockSignals(false); #ifdef Q_OS_MAC ui.cbVisible->setMinimumWidth(30); #endif ui.edName->setText(theLayer->name()); ui.edName->setReadOnly(true); ui.edName->setAttribute(Qt::WA_TransparentForMouseEvents); ui.edName->setFrame(false); ui.edName->setCursorPosition(0); ui.edName->setStyleSheet(" background: transparent; "); connect(this, SIGNAL(toggled(bool)), SLOT(checkedStatusToggled(bool))); } LayerWidget::~LayerWidget() { delete associatedMenu; } void LayerWidget::paintEvent(QPaintEvent *) { QStylePainter p(this); QStyleOptionButton option; initStyleOption(&option); p.drawControl(QStyle::CE_PushButton, option); if (theLayer && !theLayer->isUploadable()) { p.fillRect(rect().adjusted(20,0,0,-1),QBrush(Qt::red, Qt::BDiagPattern)); } } void LayerWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) dragStartPosition = event->pos(); event->ignore(); } void LayerWidget::mouseMoveEvent(QMouseEvent *event) { if (!(event->buttons() & Qt::LeftButton)) return; if ((event->pos() - dragStartPosition).manhattanLength() < QApplication::startDragDistance()) return; QDrag *drag = new QDrag(this); QMimeData *mimeData = new QMimeData; mimeData->setData("application/x-layer", theLayer->id().toLatin1()); drag->setMimeData(mimeData); QPixmap px(size()); render(&px); drag->setPixmap(px); /*Qt::DropAction dropAction =*/ drag->exec(Qt::MoveAction); } void LayerWidget::mouseReleaseEvent(QMouseEvent* anEvent) { anEvent->ignore(); } void LayerWidget::on_cbVisible_stateChanged ( int state ) { setLayerVisible((state > Qt::Unchecked)); } void LayerWidget::mouseDoubleClickEvent(QMouseEvent */*event*/) { ui.edName->setReadOnly(false); ui.edName->setAttribute(Qt::WA_TransparentForMouseEvents, false); ui.edName->setFrame(true); ui.edName->setStyleSheet(""); ui.edName->setFocus(); } void LayerWidget::on_edName_editingFinished() { ui.edName->setReadOnly(true); ui.edName->setAttribute(Qt::WA_TransparentForMouseEvents, true); ui.edName->setFrame(false); ui.edName->setStyleSheet(" background: transparent; "); if (!ui.edName->text().isEmpty()) theLayer->setName(ui.edName->text()); else ui.edName->setText(theLayer->name()); } void LayerWidget::checkedStatusToggled(bool newVal) { theLayer->setSelected(newVal); } void LayerWidget::setName(const QString& s) { ui.edName->setText(s); } Layer* LayerWidget::getLayer() { return theLayer; } void LayerWidget::showContextMenu(QContextMenuEvent* anEvent) { //initActions(); if (!ctxMenu) return; if (actZoom) { actZoom->setEnabled(theLayer->size()); } if (closeAction) closeAction->setEnabled(theLayer->canDelete()); ctxMenu->exec(anEvent->globalPos()); } #define NUMOP 3 void LayerWidget::initActions() { SAFE_DELETE(ctxMenu); SAFE_DELETE(associatedMenu); ctxMenu = new QMenu(this); associatedMenu = new QMenu(theLayer->name()); //connect(associatedMenu, SIGNAL(aboutToShow()), this, SLOT(associatedAboutToShow())); actVisible = new QAction(tr("Visible"), ctxMenu); actVisible->setCheckable(true); actVisible->setChecked(theLayer->isVisible()); associatedMenu->addAction(actVisible); connect(actVisible, SIGNAL(triggered(bool)), this, SLOT(visibleLayer(bool))); actReadonly = new QAction(tr("Readonly"), ctxMenu); actReadonly->setCheckable(true); actReadonly->setChecked(theLayer->isReadonly()); associatedMenu->addAction(actReadonly); ctxMenu->addAction(actReadonly); connect(actReadonly, SIGNAL(triggered(bool)), this, SLOT(readonlyLayer(bool))); static const char *opStr[NUMOP] = { QT_TR_NOOP("Low"), QT_TR_NOOP("High"), QT_TR_NOOP("Opaque")}; QActionGroup* actgrp = new QActionGroup(this); QMenu* alphaMenu = new QMenu(tr("Opacity"), this); for (int i=0; i<NUMOP; i++) { QAction* act = new QAction(tr(opStr[i]), alphaMenu); actgrp->addAction(act); qreal a = M_PREFS->getAlpha(opStr[i]); act->setData(a); act->setCheckable(true); if (int(theLayer->getAlpha()*100) == int(a*100)) act->setChecked(true); alphaMenu->addAction(act); } ctxMenu->addMenu(alphaMenu); connect(alphaMenu, SIGNAL(triggered(QAction*)), this, SLOT(setOpacity(QAction*))); associatedMenu->addMenu(alphaMenu); } void LayerWidget::setOpacity(QAction *act) { theLayer->setAlpha(act->data().toDouble()); emit (layerChanged(this, false)); } void LayerWidget::close() { if (theLayer.data()->getDirtyLevel()) { if (QMessageBox::question(this, tr("Layer CLose: Dirty objects present"), tr("There are dirty features on this layer.\n" "Are you sure you want to close it? (no Undo possible)"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) return; } else if (theLayer.data()->size()) if (QMessageBox::question(this, tr("Layer CLose: Not empty"), tr("Are you sure you want to close this layer? (no Undo possible)"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) return; emit(layerClosed(theLayer)); } void LayerWidget::clear() { emit(layerCleared(theLayer)); } void LayerWidget::zoomLayer() { emit (layerZoom(theLayer)); } void LayerWidget::visibleLayer(bool) { setLayerVisible(actVisible->isChecked()); } void LayerWidget::readonlyLayer(bool) { setLayerReadonly(actReadonly->isChecked()); } QMenu* LayerWidget::getAssociatedMenu() { return associatedMenu; } void LayerWidget::setLayerVisible(bool b, bool updateLayer) { actVisible->blockSignals(true); actVisible->setChecked(b); actVisible->blockSignals(false); ui.cbVisible->blockSignals(true); ui.cbVisible->setChecked(b); ui.cbVisible->blockSignals(false); update(); if (updateLayer) { theLayer->setVisible(b); emit(layerChanged(this, false)); } } void LayerWidget::setLayerReadonly(bool b) { theLayer->setReadonly(b); actReadonly->setChecked(b); update(); emit(layerChanged(this, false)); } void LayerWidget::associatedAboutToShow() { initActions(); } // DrawingLayerWidget DrawingLayerWidget::DrawingLayerWidget(DrawingLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent) { initActions(); } void DrawingLayerWidget::initActions() { LayerWidget::initActions(); ctxMenu->addSeparator(); associatedMenu->addSeparator(); actZoom = new QAction(tr("Zoom"), ctxMenu); ctxMenu->addAction(actZoom); associatedMenu->addAction(actZoom); connect(actZoom, SIGNAL(triggered(bool)), this, SLOT(zoomLayer())); closeAction = new QAction(tr("Close"), this); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); ctxMenu->addAction(closeAction); associatedMenu->addAction(closeAction); closeAction->setEnabled(theLayer->canDelete()); } // ImageLayerWidget ImageLayerWidget::ImageLayerWidget(ImageMapLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent), wmsMenu(0) //, actgrWms(0) { actNone = new QAction(tr("None"), this); //actNone->setCheckable(true); actNone->setChecked((M_PREFS->getBackgroundPlugin() == NONE_ADAPTER_UUID)); actNone->setData(QVariant::fromValue(NONE_ADAPTER_UUID)); connect(actNone, SIGNAL(triggered()), this, SLOT(setNone())); if (M_PREFS->getUseShapefileForBackground()) { actShape = new QAction(tr("Shape adapter"), this); //actShape->setCheckable(true); actShape->setChecked((M_PREFS->getBackgroundPlugin() == SHAPE_ADAPTER_UUID)); actShape->setData(QVariant::fromValue(SHAPE_ADAPTER_UUID)); } initActions(); } ImageLayerWidget::~ImageLayerWidget() { } void ImageLayerWidget::setNone() { ((ImageMapLayer *)theLayer.data())->setMapAdapter(NONE_ADAPTER_UUID); this->update(rect()); emit (layerChanged(this, true)); } void ImageLayerWidget::setWms(QAction* act) { WmsServerList* L = M_PREFS->getWmsServers(); WmsServer S = L->value(act->data().toString()); M_PREFS->setSelectedServer(S.WmsName); ((ImageMapLayer *)theLayer.data())->setMapAdapter(WMS_ADAPTER_UUID, S.WmsName); theLayer->setVisible(true); this->update(rect()); emit (layerChanged(this, true)); } void ImageLayerWidget::setTms(QAction* act) { TmsServerList* L = M_PREFS->getTmsServers(); TmsServer S = L->value(act->data().toString()); M_PREFS->setSelectedServer(S.TmsName); ((ImageMapLayer *)theLayer.data())->setMapAdapter(TMS_ADAPTER_UUID, S.TmsName); theLayer->setVisible(true); this->update(rect()); emit (layerChanged(this, true)); } void ImageLayerWidget::setPlugin(QAction* act) { QUuid aUuid = act->data().value<QUuid>(); if (aUuid.isNull()) return; ((ImageMapLayer *)theLayer.data())->setMapAdapter(aUuid); theLayer->setVisible(true); this->update(rect()); emit (layerChanged(this, true)); } void ImageLayerWidget::setProjection() { IMapAdapter* ma = ((ImageMapLayer*)theLayer.data())->getMapAdapter(); if (ma) { emit (layerProjection(ma->projection())); } } void ImageLayerWidget::resetAlign() { ((ImageMapLayer *)theLayer.data())->resetAlign(); emit (layerChanged(this, true)); } void ImageLayerWidget::initActions() { //if (actgrWms) // delete actgrWms; //actgrWms = new QActionGroup(this); LayerWidget::initActions(); // ImageMapLayer* il = ((ImageMapLayer *)theLayer.data()); actZoom = new QAction(tr("Zoom"), ctxMenu); ctxMenu->addAction(actZoom); associatedMenu->addAction(actZoom); connect(actZoom, SIGNAL(triggered(bool)), this, SLOT(zoomLayer())); actReadonly->setVisible(false); actProjection = new QAction(tr("Set view projection to layer's"), this); connect(actProjection, SIGNAL(triggered()), this, SLOT(setProjection())); ctxMenu->addAction(actProjection); associatedMenu->addAction(actProjection); actResetAlign = new QAction(tr("Reset alignment adjustment"), this); connect(actResetAlign, SIGNAL(triggered()), this, SLOT(resetAlign())); ctxMenu->addAction(actResetAlign); associatedMenu->addAction(actResetAlign); closeAction = new QAction(tr("Close"), this); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); ctxMenu->addAction(closeAction); associatedMenu->addAction(closeAction); ctxMenu->addSeparator(); associatedMenu->addSeparator(); wmsMenu = new QMenu(tr("WMS adapter"), this); WmsServerList* WmsServers = M_PREFS->getWmsServers(); WmsServerListIterator wi(*WmsServers); while (wi.hasNext()) { wi.next(); WmsServer S = wi.value(); if (!S.deleted) { QAction* act = new QAction(S.WmsName, wmsMenu); act->setData(S.WmsName); wmsMenu->addAction(act); if (M_PREFS->getBackgroundPlugin() == WMS_ADAPTER_UUID) if (S.WmsName == M_PREFS->getSelectedServer()) act->setChecked(true); } } tmsMenu = new QMenu(tr("TMS adapter"), this); TmsServerList* TmsServers = M_PREFS->getTmsServers(); TmsServerListIterator ti(*TmsServers); while (ti.hasNext()) { ti.next(); TmsServer S = ti.value(); if (!S.deleted) { QAction* act = new QAction(S.TmsName, tmsMenu); act->setData(S.TmsName); tmsMenu->addAction(act); if (M_PREFS->getBackgroundPlugin() == TMS_ADAPTER_UUID) if (S.TmsName == M_PREFS->getSelectedServer()) act->setChecked(true); } } pluginsMenu = new QMenu(tr("Plugins"), this); QMapIterator <QUuid, IMapAdapterFactory *> it(M_PREFS->getBackgroundPlugins()); QMap<QString, QUuid> plugins; while (it.hasNext()) { it.next(); plugins[it.value()->getName()] = it.key(); } QMapIterator <QString, QUuid> pluginsIt(plugins); while (pluginsIt.hasNext()) { pluginsIt.next(); QAction* actBackPlug = new QAction(pluginsIt.key(), this); actBackPlug->setChecked((M_PREFS->getBackgroundPlugin() == pluginsIt.value())); actBackPlug->setData(QVariant::fromValue(pluginsIt.value())); pluginsMenu->addAction(actBackPlug); } actNone->setChecked((M_PREFS->getBackgroundPlugin() == NONE_ADAPTER_UUID)); if (M_PREFS->getUseShapefileForBackground()) actShape->setChecked((M_PREFS->getBackgroundPlugin() == SHAPE_ADAPTER_UUID)); ctxMenu->addAction(actNone); associatedMenu->addAction(actNone); ctxMenu->addMenu(wmsMenu); associatedMenu->addMenu(wmsMenu); connect(wmsMenu, SIGNAL(triggered(QAction*)), this, SLOT(setWms(QAction*))); ctxMenu->addMenu(tmsMenu); associatedMenu->addMenu(tmsMenu); connect(tmsMenu, SIGNAL(triggered(QAction*)), this, SLOT(setTms(QAction*))); ctxMenu->addMenu(pluginsMenu); associatedMenu->addMenu(pluginsMenu); connect(pluginsMenu, SIGNAL(triggered(QAction*)), this, SLOT(setPlugin(QAction*))); if (M_PREFS->getUseShapefileForBackground()) { ctxMenu->addAction(actShape); associatedMenu->addAction(actShape); } } void ImageLayerWidget::showContextMenu(QContextMenuEvent* anEvent) { if (!ctxMenu) return; ImageMapLayer* theMapLayer = qobject_cast<ImageMapLayer*>(theLayer); QList<QAction*> plugActions; QAction* sep = new QAction(this); sep->setSeparator(true); actZoom->setEnabled(false); if (theMapLayer && theMapLayer->getMapAdapter()) { if (!theMapLayer->getMapAdapter()->getBoundingbox().isNull()) actZoom->setEnabled(true); if (theMapLayer->getMapAdapter()->getMenu()) { ctxMenu->addAction(sep); associatedMenu->addAction(sep); plugActions << sep; foreach (QAction* a, theMapLayer->getMapAdapter()->getMenu()->actions()) { ctxMenu->addAction(a); associatedMenu->addAction(a); plugActions << a; } } } closeAction->setEnabled(theLayer->canDelete()); ctxMenu->exec(anEvent->globalPos()); foreach (QAction* a, plugActions) { if (ctxMenu->actions().contains(a)) ctxMenu->removeAction(a); if (associatedMenu->actions().contains(a)) associatedMenu->removeAction(a); } delete sep; } // TrackLayerWidget TrackLayerWidget::TrackLayerWidget(TrackLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent) { initActions(); } void TrackLayerWidget::initActions() { LayerWidget::initActions(); ctxMenu->addSeparator(); associatedMenu->addSeparator(); QAction* actExtract = new QAction(tr("Extract Drawing layer"), ctxMenu); ctxMenu->addAction(actExtract); associatedMenu->addAction(actExtract); connect(actExtract, SIGNAL(triggered(bool)), this, SLOT(extractLayer(bool))); actZoom = new QAction(tr("Zoom"), ctxMenu); ctxMenu->addAction(actZoom); associatedMenu->addAction(actZoom); connect(actZoom, SIGNAL(triggered(bool)), this, SLOT(zoomLayer())); ctxMenu->addSeparator(); associatedMenu->addSeparator(); closeAction = new QAction(tr("Close"), this); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); ctxMenu->addAction(closeAction); associatedMenu->addAction(closeAction); closeAction->setEnabled(theLayer->canDelete()); } TrackLayerWidget::~TrackLayerWidget() { } void TrackLayerWidget::extractLayer(bool) { ((TrackLayer*)theLayer.data())->extractLayer(); emit (layerChanged(this, false)); } // SpecialLayerWidget SpecialLayerWidget::SpecialLayerWidget(SpecialLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent) { initActions(); } void SpecialLayerWidget::initActions() { LayerWidget::initActions(); ctxMenu->addSeparator(); associatedMenu->addSeparator(); QAction* actExtract = new QAction(tr("Refresh layer"), ctxMenu); ctxMenu->addAction(actExtract); associatedMenu->addAction(actExtract); connect(actExtract, SIGNAL(triggered(bool)), this, SLOT(refreshLayer(bool))); closeAction = new QAction(tr("Close"), this); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); ctxMenu->addAction(closeAction); associatedMenu->addAction(closeAction); closeAction->setEnabled(theLayer->canDelete()); } SpecialLayerWidget::~SpecialLayerWidget() { } void SpecialLayerWidget::refreshLayer(bool) { dynamic_cast<SpecialLayer*>(theLayer.data())->refreshLayer(); } // DirtyLayerWidget DirtyLayerWidget::DirtyLayerWidget(DirtyLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent) { initActions(); } void DirtyLayerWidget::initActions() { LayerWidget::initActions(); ctxMenu->addSeparator(); associatedMenu->addSeparator(); actZoom = new QAction(tr("Zoom"), ctxMenu); ctxMenu->addAction(actZoom); associatedMenu->addAction(actZoom); connect(actZoom, SIGNAL(triggered(bool)), this, SLOT(zoomLayer())); } // UploadLayerWidget UploadedLayerWidget::UploadedLayerWidget(UploadedLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent) { initActions(); } void UploadedLayerWidget::initActions() { LayerWidget::initActions(); ctxMenu->addSeparator(); associatedMenu->addSeparator(); actZoom = new QAction(tr("Zoom"), ctxMenu); ctxMenu->addAction(actZoom); associatedMenu->addAction(actZoom); connect(actZoom, SIGNAL(triggered(bool)), this, SLOT(zoomLayer())); closeAction = new QAction(tr("Clear"), this); connect(closeAction, SIGNAL(triggered()), this, SLOT(clear())); ctxMenu->addAction(closeAction); associatedMenu->addAction(closeAction); closeAction->setEnabled(theLayer->canDelete()); } // FilterLayerWidget FilterLayerWidget::FilterLayerWidget(FilterLayer* aLayer, QWidget* aParent) : LayerWidget(aLayer, aParent) { initActions(); } void FilterLayerWidget::initActions() { LayerWidget::initActions(); ctxMenu->addSeparator(); associatedMenu->addSeparator(); closeAction = new QAction(tr("Close"), this); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); ctxMenu->addAction(closeAction); associatedMenu->addAction(closeAction); closeAction->setEnabled(theLayer->canDelete()); } void FilterLayerWidget::mouseDoubleClickEvent(QMouseEvent */*event*/) { FilterLayer* Fl = dynamic_cast<FilterLayer*>(theLayer.data()); QDialog* dlg = new QDialog(this); ui = new Ui::FilterEditDialog; ui->setupUi(dlg); ui->edName->setText(Fl->name()); ui->edFilter->setText(Fl->filter()); connect(ui->btFilterHelper, SIGNAL(clicked()), SLOT(on_filterHelperClicked())); if (dlg->exec() == QDialog::Accepted) { setName(ui->edName->text()); Fl->setName(ui->edName->text()); Fl->setFilter(ui->edFilter->text()); } delete ui; } void FilterLayerWidget::on_filterHelperClicked() { SelectionDialog* Sel = new SelectionDialog(g_Merk_MainWindow, false); if (!Sel) return; Sel->edTagQuery->setText(ui->edFilter->text()); if (Sel->exec() == QDialog::Accepted) { ui->edFilter->setText(Sel->edTagQuery->text()); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/LayerWidget.h����������������������������������������������������������0000664�0000000�0000000�00000010407�11770671653�0020406�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_LAYERWIDGET_H_ #define MERKATOR_LAYERWIDGET_H_ #include "Layer.h" #include "ImageMapLayer.h" #include <QActionGroup> #include <QPushButton> #include "ui_LayerWidget.h" #include "ui_FilterEditDialog.h" class MainWindow; class Layer; class LayerWidget : public QPushButton { Q_OBJECT friend class LayerDock; public: LayerWidget(Layer* aLayer, QWidget* aParent = 0); virtual ~LayerWidget(); void paintEvent(QPaintEvent *); virtual void setName(const QString& s); virtual Layer* getLayer(); virtual void setLayerVisible(bool b, bool updateLayer=true); virtual void setLayerReadonly(bool b); virtual void initActions(); QMenu* getAssociatedMenu(); protected: virtual void showContextMenu(QContextMenuEvent* anEvent); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent* anEvent); virtual void mouseDoubleClickEvent(QMouseEvent *event); QPointer<Layer> theLayer; QMenu* ctxMenu; QAction* closeAction; QAction* actZoom; QAction* actVisible; QAction* actReadonly; QAction* actSupMenu; QMenu* associatedMenu; QPoint dragStartPosition; signals: void layerSelected(LayerWidget *); void layerChanged(LayerWidget *, bool adjustViewport); void layerClosed(Layer *); void layerCleared(Layer *); void layerZoom(Layer *); void layerProjection(const QString&); protected slots: void setOpacity(QAction*); void zoomLayer(); void visibleLayer(bool); void readonlyLayer(bool); void close(); void clear(); void associatedAboutToShow(); void on_cbVisible_stateChanged ( int state ); void on_edName_editingFinished(); void checkedStatusToggled(bool newStatus); private: Ui::LayerWidget ui; }; class DrawingLayerWidget : public LayerWidget { Q_OBJECT public: DrawingLayerWidget(DrawingLayer* aLayer, QWidget* aParent = 0); virtual ~DrawingLayerWidget() {}; public: virtual void initActions(); private: //DrawingMapLayer* theLayer; }; class TrackLayerWidget : public LayerWidget { Q_OBJECT public: TrackLayerWidget(TrackLayer* aLayer, QWidget* aParent = 0); virtual ~TrackLayerWidget(); public: virtual void initActions(); private slots: void extractLayer(bool); }; class SpecialLayerWidget : public LayerWidget { Q_OBJECT public: SpecialLayerWidget(SpecialLayer* aLayer, QWidget* aParent = 0); virtual ~SpecialLayerWidget(); public: virtual void initActions(); private slots: void refreshLayer(bool); }; class ImageLayerWidget : public LayerWidget { Q_OBJECT public: ImageLayerWidget(ImageMapLayer* aLayer, QWidget* aParent = 0); virtual ~ImageLayerWidget(); public: virtual void initActions(); private: QAction* actShape; QAction* actNone; QAction* actProjection; QAction* actResetAlign; QMenu* wmsMenu; QMenu* tmsMenu; QMenu* pluginsMenu; private slots: void setNone(); void setWms(QAction*); void setTms(QAction*); void setPlugin(QAction*); void setProjection(); void resetAlign(); protected: virtual void showContextMenu(QContextMenuEvent* anEvent); }; class DirtyLayerWidget : public LayerWidget { Q_OBJECT public: DirtyLayerWidget(DirtyLayer* aLayer, QWidget* aParent = 0); virtual ~DirtyLayerWidget() {}; public: virtual void initActions(); }; class UploadedLayerWidget : public LayerWidget { Q_OBJECT public: UploadedLayerWidget(UploadedLayer* aLayer, QWidget* aParent = 0); virtual ~UploadedLayerWidget() {}; public: virtual void initActions(); }; class FilterLayerWidget : public LayerWidget { Q_OBJECT public: FilterLayerWidget(FilterLayer* aLayer, QWidget* aParent = 0); virtual ~FilterLayerWidget() {}; protected: void mouseDoubleClickEvent(QMouseEvent */*event*/); public: virtual void initActions(); private: Ui::FilterEditDialog* ui; protected slots: void on_filterHelperClicked(); }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/LayerWidget.ui���������������������������������������������������������0000664�0000000�0000000�00000001563�11770671653�0020577�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>LayerWidget</class> <widget class="QWidget" name="LayerWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>207</width> <height>31</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QHBoxLayout" name="horizontalLayout"> <property name="spacing"> <number>0</number> </property> <property name="margin"> <number>2</number> </property> <item> <widget class="QCheckBox" name="cbVisible"> <property name="text"> <string/> </property> </widget> </item> <item> <widget class="QLineEdit" name="edName"> <property name="readOnly"> <bool>true</bool> </property> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> ���������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/Layers.pri�������������������������������������������������������������0000664�0000000�0000000�00000000637�11770671653�0017774�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Layers DEPENDPATH += $$MERKAARTOR_SRC_DIR/Layers HEADERS += Layer.h \ ImageMapLayer.h \ LayerIterator.h \ LayerWidget.h \ LayerPrivate.h \ Layers/OsmRenderLayer.h SOURCES += Layer.cpp \ ImageMapLayer.cpp \ LayerWidget.cpp \ Layers/OsmRenderLayer.cpp FORMS += LayerWidget.ui \ FilterEditDialog.ui \ LicenseDisplayDialog.ui �������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/LicenseDisplayDialog.ui������������������������������������������������0000775�0000000�0000000�00000003032�11770671653�0022403�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>LicenseDisplayDialog</class> <widget class="QDialog" name="LicenseDisplayDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>650</width> <height>400</height> </rect> </property> <property name="windowTitle"> <string>Licensing Terms</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QWebView" name="webView"> <property name="url"> <url> <string>about:blank</string> </url> </property> </widget> </item> <item> <widget class="QCheckBox" name="cbAgree"> <property name="text"> <string>I have read and agree to the licensing terms</string> </property> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="standardButtons"> <set>QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <customwidgets> <customwidget> <class>QWebView</class> <extends>QWidget</extends> <header>QtWebKit/QWebView</header> </customwidget> </customwidgets> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>LicenseDisplayDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>274</x> <y>280</y> </hint> <hint type="destinationlabel"> <x>396</x> <y>247</y> </hint> </hints> </connection> </connections> </ui> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/OsmRenderLayer.cpp�����������������������������������������������������0000664�0000000�0000000�00000017517�11770671653�0021425�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "OsmRenderLayer.h" #include "Document.h" #include "MapRenderer.h" #include "MerkaartorPreferences.h" inline uint qHash(const QPoint& p) { return (uint)(p.y() + (p.x() << 16)); } #define TILE_SIZE 256 QList<TILE_TYPE> tiles; QReadWriteLock tileLock; #define TILE_CONSTRUCTOR(x, y) QPoint(x, y) #define TILE_X(t) t.x() #define TILE_Y(t) t.y() class TileCache : public QObject { public: TileCache(QObject* parent) : QObject(parent) {} void insert(const TILE_TYPE& k, QImage* v) { m_tileCache.insert(k, v); } bool contains(const TILE_TYPE& k) { return m_tileCache.contains(k); } QImage* get(const TILE_TYPE& k) { return m_tileCache[k]; } private: QCache<const TILE_TYPE, QImage> m_tileCache; }; TileCache* tileCache; class RenderTile { public: RenderTile(OsmRenderLayer* orl) : p(orl) { } typedef void result_type; void operator()(const TILE_TYPE& theTile) { #if defined(__MINGW32__) // Workaround for QTBUG-19886 asm volatile ("mov %esp, %eax"); asm volatile ("and $0xf, %eax"); asm volatile ("je alignmentok"); asm volatile ("push %eax"); asm volatile ("push %eax"); asm volatile ("alignmentok:"); #endif if (!p->theDocument) return; TILE_TYPE tile = theTile; QPointF projTL((TILE_X(tile)*p->tileSizeCoordW)+p->tileOriginCoord.x(), (TILE_Y(tile)*p->tileSizeCoordH)+p->tileOriginCoord.y()); QPointF projBR(((TILE_X(tile)+1)*p->tileSizeCoordW)+p->tileOriginCoord.x(), ((TILE_Y(tile)+1)*p->tileSizeCoordH)+p->tileOriginCoord.y()); QRectF projR(projTL, projBR); #define TILE_SURROUND 2.0 qreal z = TILE_SURROUND * ((TILE_SIZE*TILE_SURROUND) / (p->theTransform.m11()*projR.width()*TILE_SURROUND)); // Adjust to main transform qreal dlat = (projR.top()-projR.bottom())*(z-1)/2; qreal dlon = (projR.right()-projR.left())*(z-1)/2; projR.setBottom(projR.bottom()-dlat); projR.setLeft(projR.left()-dlon); projR.setTop(projR.top()+dlat); projR.setRight(projR.right()+dlon); Coord tl = p->theProjection.inverse2Coord(projR.topLeft()); Coord br = p->theProjection.inverse2Coord(projR.bottomRight()); CoordBox invalidRect(tl, br); QMap<RenderPriority, QSet <Feature*> > theFeatures; for (int i=0; i<p->theDocument->layerSize(); ++i) g_backend.getFeatureSet(p->theDocument->getLayer(i), theFeatures, invalidRect, p->theProjection); QImage* img = new QImage(TILE_SIZE, TILE_SIZE, QImage::Format_ARGB32); img->fill(Qt::transparent); QPainter P(img); if (M_PREFS->getUseAntiAlias()) P.setRenderHint(QPainter::Antialiasing); MapRenderer r; r.render(&P, theFeatures, projR, /*QRect(0, 0, TILE_SIZE, TILE_SIZE)*/QRect(-((TILE_SIZE*TILE_SURROUND)-TILE_SIZE)/2, -((TILE_SIZE*TILE_SURROUND)-TILE_SIZE)/2, TILE_SIZE*TILE_SURROUND, TILE_SIZE*TILE_SURROUND), p->PixelPerM, p->ROptions); P.end(); tileLock.lockForWrite(); tileCache->insert(tile, img); // if (theFeatures.size()) // img->save(QString("c:/temp/%1-%2.png").arg(tile.x()).arg(tile.y())); tileLock.unlock(); } OsmRenderLayer* p; }; /**************************/ OsmRenderLayer::OsmRenderLayer(QObject *parent) : QObject(parent) , theDocument(0) { tileCache = new TileCache(this); connect(&(renderGatheringWatcher), SIGNAL(finished()), SIGNAL(renderingDone())); } void OsmRenderLayer::setDocument(IDocument *aDocument) { theDocument = aDocument; } void OsmRenderLayer::setTransform(const QTransform &aTransform) { theTransform = aTransform; theInvertedTransform = theTransform.inverted(); } void OsmRenderLayer::setProjection(const Projection& aProjection) { theProjection = aProjection; } void OsmRenderLayer::forceRedraw(const Projection& aProjection, const QTransform &aTransform, const QRect& rect, qreal ppm, const RendererOptions& roptions) { if (renderGathering.isRunning()) { renderGathering.cancel(); renderGathering.waitForFinished(); } if (!theDocument) return; setProjection(aProjection); setTransform(aTransform); PixelPerM = ppm; ROptions = roptions; tileLock.lockForWrite(); tileCache->deleteLater(); tileCache = new TileCache(this); tileOriginCoord = theInvertedTransform.map(QPointF(rect.topLeft())); QPointF tl = theInvertedTransform.map(QPointF(rect.topLeft())); QPointF br = theInvertedTransform.map(QPointF(rect.bottomRight())+QPointF(1,1)); projRect = QRectF(tl, br); tileSizeCoordW = (projRect.width()) / rect.width() * TILE_SIZE; // tileSizeCoordH = (projRect.height()) / rect.height() * TILE_SIZE; tileSizeCoordH = tileSizeCoordW * projRect.height() / fabs(projRect.height()); tileViewport.setLeft(((projRect.left()-tileOriginCoord.x()) / tileSizeCoordW) - 1); tileViewport.setTop(((projRect.top()-tileOriginCoord.y()) / tileSizeCoordH) - 1); tileViewport.setRight(((projRect.right()-tileOriginCoord.x()) / tileSizeCoordW) + 1); tileViewport.setBottom(((projRect.bottom()-tileOriginCoord.y()) / tileSizeCoordH) + 1); tiles.clear(); for (int i=tileViewport.top(); i<=tileViewport.bottom(); ++i) for (int j=tileViewport.left(); j<=tileViewport.right(); ++j) { TILE_TYPE tile = TILE_CONSTRUCTOR(j, i); tiles << tile; } tileLock.unlock(); if (tiles.size()) { renderGathering = QtConcurrent::map(tiles, RenderTile(this)); renderGatheringWatcher.setFuture(renderGathering); } } void OsmRenderLayer::pan(QPoint delta) { if (renderGathering.isRunning()) { renderGathering.cancel(); renderGathering.waitForFinished(); } theTransform.translate((qreal)(delta.x())/theTransform.m11(), (qreal)(delta.y())/theTransform.m22()); theInvertedTransform = theTransform.inverted(); projRect.translate(-(qreal)(delta.x())/theTransform.m11(), -(qreal)(delta.y())/theTransform.m22()); tileViewport.setLeft(((projRect.left()-tileOriginCoord.x()) / tileSizeCoordW) - 1); tileViewport.setTop(((projRect.top()-tileOriginCoord.y()) / tileSizeCoordH) - 1); tileViewport.setRight(((projRect.right()-tileOriginCoord.x()) / tileSizeCoordW) + 1); tileViewport.setBottom(((projRect.bottom()-tileOriginCoord.y()) / tileSizeCoordH) + 1); tileLock.lockForRead(); tiles.clear(); for (int i=tileViewport.top(); i<=tileViewport.bottom(); ++i) for (int j=tileViewport.left(); j<=tileViewport.right(); ++j) { TILE_TYPE tile = TILE_CONSTRUCTOR(j, i); if (!tileCache->contains(tile)) tiles << tile; } tileLock.unlock(); if (tiles.size()) { renderGathering = QtConcurrent::map(tiles, RenderTile(this)); renderGatheringWatcher.setFuture(renderGathering); } } void OsmRenderLayer::drawImage(QPainter *P) { QPointF origin = theTransform.map(tileOriginCoord); for (int i=tileViewport.top(); i<=tileViewport.bottom(); ++i) for (int j=tileViewport.left(); j<=tileViewport.right(); ++j) { tileLock.lockForRead(); if (tileCache->contains(TILE_CONSTRUCTOR(j, i))) { QPointF tl = QPointF((j*TILE_SIZE)+origin.x(), (i*TILE_SIZE)+origin.y()); P->drawImage(tl, *(tileCache->get(TILE_CONSTRUCTOR(j, i)))); } tileLock.unlock(); // qDebug() << QPoint(j, i) << tl; } } bool OsmRenderLayer::isRenderingDone() { return renderGathering.isFinished(); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Layers/OsmRenderLayer.h�������������������������������������������������������0000664�0000000�0000000�00000002427�11770671653�0021064�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef OSMRENDERLAYER_H #define OSMRENDERLAYER_H #include <QObject> #include <QRect> #include <QPointF> #include <QFuture> #include <QFutureWatcher> #include <QTransform> #include "IRenderer.h" #include "Projection.h" class IDocument; class Projection; class OsmRenderLayer : public QObject { Q_OBJECT friend class RenderTile; public: OsmRenderLayer(QObject*parent=0); void setDocument(IDocument *aDocument); void setTransform(const QTransform& aTransform); void setProjection(const Projection& aProjection); void forceRedraw(const Projection& aProjection, const QTransform &aTransform, const QRect& rect, qreal ppm, const RendererOptions& roptions); void pan(QPoint delta); void drawImage(QPainter* P); bool isRenderingDone(); signals: void renderingDone(); protected: IDocument* theDocument; QRectF projRect; qreal tileSizeCoordW; qreal tileSizeCoordH; QPointF tileOriginCoord; QRect tileViewport; QFuture<void> renderGathering; QFutureWatcher<void> renderGatheringWatcher; QTransform theTransform; QTransform theInvertedTransform; Projection theProjection; qreal PixelPerM; RendererOptions ROptions; }; #endif // OSMRENDERLAYER_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Main.cpp����������������������������������������������������������������������0000664�0000000�0000000�00000025550�11770671653�0016153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include <QtGui/QApplication> #include <QtGui/QMessageBox> #include <QLibraryInfo> #include <QSplashScreen> #include <qtsingleapplication.h> #include "MainWindow.h" #include "Preferences/MerkaartorPreferences.h" #include "revision.h" #include "proj_api.h" #include "gdal_version.h" #include "IMapAdapterFactory.h" #if defined(Q_OS_WIN) extern Q_CORE_EXPORT void qWinMsgHandler(QtMsgType t, const char* str); #endif FILE* pLogFile = NULL; void myMessageOutput(QtMsgType msgType, const char *buf) { // From corelib/global/qglobal.cpp : qt_message_output #if defined(Q_OS_WIN) && !defined(NDEBUG) qWinMsgHandler(msgType, buf); #endif #if defined(Q_CC_MWERKS) && !defined(Q_OS_SYMBIAN) mac_default_handler(buf); #elif defined(Q_OS_WINCE) QString fstr = QString::fromLatin1(buf); fstr += QLatin1String("\n"); OutputDebugString(reinterpret_cast<const wchar_t *> (fstr.utf16())); #else #ifndef NDEBUG fprintf(stderr, "%s\n", buf); fflush(stderr); #endif if (pLogFile && msgType == QtDebugMsg) { fprintf(pLogFile, "%s\n", buf); fflush(pLogFile); } #endif if (msgType == QtFatalMsg || (msgType == QtWarningMsg && (!qgetenv("QT_FATAL_WARNINGS").isNull())) ) { #if defined(Q_CC_MSVC) && defined(QT_DEBUG) && defined(_DEBUG) && defined(_CRT_ERROR) // get the current report mode int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); _CrtSetReportMode(_CRT_ERROR, reportMode); #if !defined(Q_OS_WINCE) int ret = _CrtDbgReport(_CRT_ERROR, __FILE__, __LINE__, QT_VERSION_STR, buf); #else int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(QT_VERSION_STR), reinterpret_cast<const wchar_t *> (QString::fromLatin1(buf).utf16())); #endif if (ret == 0 && reportMode & _CRTDBG_MODE_WNDW) return; // ignore else if (ret == 1) _CrtDbgBreak(); #endif #if (defined(Q_OS_UNIX) || defined(Q_CC_MINGW)) abort(); // trap; generates core dump #else exit(1); // goodbye cruel world #endif } } void showVersion() { QString o; o = QString("%1 %2%3(%4)\n").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(STRINGIFY(SVNREV)); fprintf(stdout, "%s", o.toLatin1().data()); o = QString("using QT version %1 (built with %2)\n").arg(qVersion()).arg(QT_VERSION_STR); fprintf(stdout, "%s", o.toLatin1().data()); fprintf(stdout, "Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2010\n"); fprintf(stdout, "This program is licensed under the Version 2 of the GNU Public License or any later version\n"); } void showHelp() { showVersion(); fprintf(stdout, "\n"); fprintf(stdout, "Usage: merkaartor [-h|--help] [-v|--version] [-l|--log logfilename] [filenames...]\n"); fprintf(stdout, "\n"); fprintf(stdout, " -h, --help\t\tShow help information\n"); fprintf(stdout, " -l, --log logfilename\t\tSave debugging information to file \"logfilename\"\n"); fprintf(stdout, " -v, --version\t\tShow version information\n"); fprintf(stdout, " -n, --noreuse\t\tDo not reuse an existing instance\n"); fprintf(stdout, " -p, --portable\t\tExecute as a portable application (all files saved in the application directory)\n"); fprintf(stdout, " --enable_special_layers\t\tEnable old style \"Dirty\" and \"Uploaded\" layers\n"); fprintf(stdout, " --importag-tags-as-is\t\tDo not add underscores to imported tags (allow for immediate upload)\n"); fprintf(stdout, " --ignore-preferences\t\tIgnore saved preferences\n"); fprintf(stdout, " --reset-preferences\t\tReset saved preferences to default\n"); fprintf(stdout, " --ignore-startup-template\t\tIgnore the saved startup template document and start with a new document\n"); fprintf(stdout, " [filenames]\t\tOpen designated files \n"); } int main(int argc, char** argv) { QtSingleApplication instance(argc,argv); bool reuse = true; QStringList argsIn = QCoreApplication::arguments(); QStringList argsOut; argsIn.removeFirst(); for (int i=0; i < argsIn.size(); ++i) { if (argsIn[i] == "-v" || argsIn[i] == "--version") { showVersion(); exit(0); } else if (argsIn[i] == "-h" || argsIn[i] == "--help") { showHelp(); exit(0); } else if (argsIn[i] == "-n" || argsIn[i] == "--noreuse") { reuse = false; } else if (argsIn[i] == "-p" || argsIn[i] == "--portable") { g_Merk_Portable = true; } else if (argsIn[i] == "--enable_special_layers") { g_Merk_Frisius = false; } else if (argsIn[i] == "--importag-tags-as-is") { g_Merk_NoGuardedTagsImport = true; } else if (argsIn[i] == "--ignore-preferences") { g_Merk_Ignore_Preferences = true; } else if (argsIn[i] == "--reset-preferences") { g_Merk_Reset_Preferences = true; } else if (argsIn[i] == "--ignore-startup-template") { g_Merk_IgnoreStartupTemplate = true; } else if (argsIn[i] == "--selfclip") { g_Merk_SelfClip = true; } else argsOut << argsIn[i]; } QCoreApplication::setOrganizationName("Merkaartor"); QCoreApplication::setOrganizationDomain("merkaartor.org"); #ifdef FRISIUS_BUILD QCoreApplication::setApplicationName("Frisius"); #else QCoreApplication::setApplicationName("Merkaartor"); #endif QString message = argsOut.join("$"); if (reuse) if (instance.sendMessage(message)) return 0; QString logFilename; #ifndef NDEBUG #if defined(Q_OS_UNIX) logFilename = QString(QDir::homePath() + "/" + qApp->applicationName().toLower() + ".log"); #else logFilename = QString(qApp->applicationDirPath() + "/" + qApp->applicationName().toLower() + ".log"); #endif #endif QStringList fileNames; for (int i=0; i < argsOut.size(); ++i) { if (argsOut[i] == "-l" || argsOut[i] == "--log") { ++i; logFilename = argsOut[i]; } else fileNames.append(argsOut[i]); } if (!logFilename.isNull()) pLogFile = fopen(logFilename.toLatin1(), "a"); qInstallMsgHandler(myMessageOutput); qDebug() << "**** " << QDateTime::currentDateTime().toString(Qt::ISODate) << " -- Starting " << USER_AGENT; qDebug() << "-------" << QString("using QT version %1 (built with %2)").arg(qVersion()).arg(QT_VERSION_STR); QString projVer = QString(STRINGIFY(PJ_VERSION)); qDebug() << "-------" << QString("using PROJ4 version %1.%2.%3").arg(projVer.left(1)).arg(projVer.mid(1, 1)).arg(projVer.right(1)); qDebug() << "-------" << QString("using GDAL version %1").arg(GDAL_RELEASE_NAME); qDebug() << "-------" << "with arguments: " << QCoreApplication::arguments(); #ifdef _MOBILE QFont appFont = QApplication::font(); appFont.setPointSize(6); QApplication::setFont(appFont); #endif qApp->setStyleSheet( " LayerWidget { border: 1px solid black; min-height: 20px}" " LayerWidget QLineEdit { color: black; }" " LayerWidget QCheckBox::indicator:checked { image: url(:Icons/eye.xpm); }" " LayerWidget QCheckBox::indicator:unchecked { image: url(:Icons/empty.xpm); }" " DrawingLayerWidget { background-color: #a5d1ff; }" " ImageLayerWidget { background-color: #ffffcc; }" " TrackLayerWidget { background-color: #7acca6; }" " DirtyLayerWidget { background-color: #c8c8c8; }" " UploadedLayerWidget { background-color: #c8c8c8; }" " OsbLayerWidget { background-color: #a2d1c0; }" " FilterLayerWidget { background-color: #c8c8c8; }" " LayerWidget:checked { background-color: lightsteelblue; }" ); QPixmap pixmap(QString(":/Splash/%1_splash.png").arg(qApp->applicationName())); QSplashScreen splash(pixmap); splash.show(); instance.processEvents(); splash.showMessage(QString(instance.translate("Main", "%1 v%2%3(%4)\nLoading plugins...")).arg(qApp->applicationName()).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(STRINGIFY(SVNREV)), Qt::AlignBottom | Qt::AlignHCenter, Qt::black); instance.processEvents(); if (!g_Merk_Portable) { #ifdef Q_OS_MAC if (!QDir::home().exists(HOMEDIR)) QDir::home().mkpath(HOMEDIR); #else if (!QDir::home().exists("." + qApp->applicationName().toLower())) QDir::home().mkdir("." + qApp->applicationName().toLower()); #endif } #if defined(Q_OS_WIN32) QDir pluginsDir = QDir(qApp->applicationDirPath() + "/" + STRINGIFY(PLUGINS_DIR)); // Fixes MacOSX plugin dir (fixes #2253) #elif defined(Q_OS_MAC) QDir pluginsDir = QDir(qApp->applicationDirPath()); pluginsDir.cdUp(); pluginsDir.cd("plugins"); #elif defined(Q_OS_SYMBIAN) QDir pluginsDir(QLibraryInfo::location(QLibraryInfo::PluginsPath)); #else QDir pluginsDir = (g_Merk_Portable ? QDir(qApp->applicationDirPath() + "/plugins") : QDir(STRINGIFY(PLUGINS_DIR))); #endif QCoreApplication::addLibraryPath(pluginsDir.path()); pluginsDir.cd("background"); foreach (QString fileName, pluginsDir.entryList(QDir::Files)) { QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); QObject *plugin = loader.instance(); if (plugin) { IMapAdapterFactory *fac = qobject_cast<IMapAdapterFactory *>(plugin); if (fac) M_PREFS->addBackgroundPlugin(fac); } } splash.showMessage(QString(instance.translate("Main", "%1 v%2%3(%4)\nInitializing...")).arg(qApp->applicationName()).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(STRINGIFY(SVNREV)), Qt::AlignBottom | Qt::AlignHCenter, Qt::black); instance.processEvents(); MainWindow Main; g_Merk_MainWindow = &Main; instance.setActivationWindow(&Main, false); QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), &instance, SLOT(activateWindow())); QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), &Main, SLOT(handleMessage(const QString&))); // QObject::connect(&Main, SIGNAL(needToShow()), &instance, SLOT(activateWindow())); #ifdef _MOBILE instance.setActiveWindow(&Main); Main.showMaximized(); #else Main.show(); #endif instance.processEvents(); Main.handleMessage(message); splash.finish(&Main); int x; try { x = instance.exec(); } catch (const std::bad_alloc &) { qDebug() << "Out of memory"; x = 254; } catch (...) { qDebug() << "Exception"; x = 255; } qDebug() << "**** " << QDateTime::currentDateTime().toString(Qt::ISODate) << " -- Ending " << QString("%1 %2%3(%4)").arg(qApp->applicationName()).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(STRINGIFY(SVNREV)); if(pLogFile) { fclose(pLogFile); pLogFile = NULL; } return x; } ��������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/MainWindow.cpp����������������������������������������������������������������0000775�0000000�0000000�00000450654�11770671653�0017355�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "MainWindow.h" #include "LayerDock.h" #include "MapView.h" #include "PropertiesDock.h" #include "InfoDock.h" #include "DirtyDock.h" #include "StyleDock.h" #include "FeaturesDock.h" #include "Command.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "RelationCommands.h" #include "ImportExportOSC.h" #include "ExportGPX.h" #include "ImportExportKML.h" #ifdef USE_PROTOBUF #include "ImportExportPBF.h" #endif #include "ImportExportGdal.h" #include "CreateAreaInteraction.h" #include "CreateDoubleWayInteraction.h" #include "CreateNodeInteraction.h" #include "CreateRoundaboutInteraction.h" #include "CreatePolygonInteraction.h" #include "CreateSingleWayInteraction.h" #include "EditInteraction.h" #include "MoveNodeInteraction.h" #include "RotateInteraction.h" #include "ScaleInteraction.h" #include "ZoomInteraction.h" #include "ExtrudeInteraction.h" #include "Coord.h" #include "DownloadOSM.h" #include "ImportGPX.h" #include "ImportNGT.h" #include "ImportOSM.h" #include "Document.h" #include "Layer.h" #include "ImageMapLayer.h" #include "Features.h" #include "FeatureManipulations.h" #include "LayerIterator.h" #include "MasPaintStyle.h" #include "MapCSSPaintstyle.h" #include "PaintStyleEditor.h" #include "Utils/Utils.h" #include "DirtyList.h" #include "DirtyListExecutorOSC.h" #include <ui_MainWindow.h> #include <ui_AboutDialog.h> #include <ui_UploadMapDialog.h> #include <ui_SelectionDialog.h> #include <ui_ExportDialog.h> #include <ui_PropertiesDialog.h> #include "Preferences/PreferencesDialog.h" #include "Preferences/MerkaartorPreferences.h" #include "Preferences/ProjectionsList.h" #include "Preferences/WMSPreferencesDialog.h" #include "Preferences/TMSPreferencesDialog.h" #include "Preferences/ProjPreferencesDialog.h" #include "Preferences/FilterPreferencesDialog.h" #include "Utils/SelectionDialog.h" #include "Utils/MDiscardableDialog.h" #include "QMapControl/imagemanager.h" #ifdef USE_WEBKIT #include "QMapControl/browserimagemanager.h" #endif #include "QMapControl/mapadapter.h" #include "QMapControl/wmsmapadapter.h" #include "Tools/ActionsDialog.h" #include "GotoDialog.h" #include "TerraceDialog.h" #include "revision.h" #if QT_VERSION < 0x040700 || defined(FORCE_46) #include <boost/version.hpp> #endif #ifdef GEOIMAGE #include "GeoImageDock.h" #endif #include "Render/NativeRenderDialog.h" #include "qgps.h" #include "qgpsdevice.h" #include <QtCore> #include <QtGui> #include <QTcpServer> #include <QTcpSocket> #include <QXmlStreamReader> #include "qttoolbardialog.h" #include <locale.h> //For About #include "proj_api.h" #include "gdal_version.h" #include "Utils/SlippyMapWidget.h" class MainWindowPrivate { public: MainWindowPrivate() : lastPrefTabIndex(0) , projActgrp(0) , theListeningServer(0) , latSaveDirtyLevel(0) #ifdef GEOIMAGE , dropTarget(0) #endif , numImages(0) { title = QString("%1 v%2%3(%4)").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(STRINGIFY(SVNREV)); } QString FILTER_OPEN_SUPPORTED; QString FILTER_IMPORT_SUPPORTED; int lastPrefTabIndex; QString defStyle; StyleDock* theStyle; FeaturesDock* theFeats; QString title; QActionGroup* projActgrp; QTcpServer* theListeningServer; PropertiesDock* theProperties; RendererOptions renderOptions; int latSaveDirtyLevel; #ifdef GEOIMAGE Node *dropTarget; #endif int numImages; }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) , fileName("") , theDocument(0) , gpsRecLayer(0) , curGpsTrackSegment(0) , qtTranslator(0) , merkaartorTranslator(0) , toolBarManager(0) { setlocale(LC_NUMERIC, "C"); // impose decimal point separator qsrand(QDateTime::currentDateTime().toTime_t()); //initialize random generator p = new MainWindowPrivate; QString supported_import_formats("*.gpx *.osm *.osc *.ngt *.nmea *.nma *.kml *.csv"); #ifdef GEOIMAGE supported_import_formats += " *.jpg"; #endif supported_import_formats += " *.shp *.gml"; #ifdef USE_PROTOBUF supported_import_formats += " *.pbf"; #endif QString supported_import_formats_desc = tr("GPS Exchange format (*.gpx)\n") \ +tr("OpenStreetMap format (*.osm)\n") \ +tr("OpenStreetMap change format (*.osc)\n") \ +tr("Noni GPSPlot format (*.ngt)\n") \ +tr("NMEA GPS log format (*.nmea *.nma)\n") \ +tr("KML file (*.kml)\n") \ +tr("Comma delimited format (*.csv)\n"); #ifdef GEOIMAGE supported_import_formats_desc += tr("Geotagged images (*.jpg)\n"); #endif supported_import_formats_desc += tr("ESRI Shapefile (*.shp)\n") + tr("Geography Markup Language (*.gml)\n"); #ifdef USE_PROTOBUF supported_import_formats_desc += tr("Protobuf Binary Format (*.pbf)\n"); #endif p->FILTER_OPEN_SUPPORTED = QString(tr("Supported formats") + " (*.mdc %1)\n").arg(supported_import_formats); p->FILTER_OPEN_SUPPORTED += tr("Merkaartor document (*.mdc)\n") + supported_import_formats_desc; p->FILTER_OPEN_SUPPORTED += tr("All Files (*)"); p->FILTER_IMPORT_SUPPORTED = QString(tr("Supported formats") + " (%1)\n").arg(supported_import_formats); p->FILTER_IMPORT_SUPPORTED += supported_import_formats_desc; p->FILTER_IMPORT_SUPPORTED += tr("All Files (*)"); theProgressDialog = NULL; theProgressBar = NULL; theProgressLabel = NULL; if (M_PREFS->getMerkaartorStyle()) QApplication::setStyle(QStyleFactory::create(M_PREFS->getMerkaartorStyleString())); ui->setupUi(this); M_STYLE->loadPainters(M_PREFS->getDefaultStyle()); blockSignals(true); ViewportStatusLabel = new QLabel(this); MeterPerPixelLabel = new QLabel(this); AdjusmentMeterLabel = new QLabel(this); pbImages = new QProgressBar(this); statusBar()->addPermanentWidget(ViewportStatusLabel); statusBar()->addPermanentWidget(pbImages); statusBar()->addPermanentWidget(MeterPerPixelLabel); statusBar()->addPermanentWidget(AdjusmentMeterLabel); #ifndef NDEBUG PaintTimeLabel = new QLabel(this); PaintTimeLabel->setMinimumWidth(23); statusBar()->addPermanentWidget(PaintTimeLabel); #endif updateLanguage(); ViewportStatusLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); pbImages->setMaximumWidth(200); pbImages->setFormat(tr("tile %v / %m")); #ifdef _MOBILE pbImages->setVisible(false); #endif SlippyMapWidget::theSlippyCache = new SlippyMapCache; theView = new MapView(this); setCentralWidget(theView); theInfo = new InfoDock(this); connect(theInfo, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); theLayers = new LayerDock(this); connect(theLayers, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); p->theProperties = new PropertiesDock(this); connect(p->theProperties, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); on_editPropertiesAction_triggered(); theDirty = new DirtyDock(this); connect(theDirty, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); p->theStyle = new StyleDock(this); connect(p->theStyle, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); p->theFeats = new FeaturesDock(this); connect(p->theFeats, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); connect(theView, SIGNAL(viewportChanged()), p->theFeats, SLOT(on_Viewport_changed()), Qt::QueuedConnection); connect(this, SIGNAL(content_changed()), p->theFeats, SLOT(on_Viewport_changed()), Qt::QueuedConnection); connect(this, SIGNAL(content_changed()), p->theProperties, SLOT(adjustSelection()), Qt::QueuedConnection); theGPS = new QGPS(this); connect(theGPS, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); #ifdef GEOIMAGE theGeoImage = new GeoImageDock(this); theGeoImage->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, theGeoImage); connect(theGeoImage, SIGNAL(visibilityChanged(bool)), this, SLOT(updateWindowMenu(bool))); #endif connect(theLayers, SIGNAL(layersChanged(bool)), this, SLOT(adjustLayers(bool))); connect(theLayers, SIGNAL(layersCleared()), this, SIGNAL(content_changed())); connect(theLayers, SIGNAL(layersClosed()), this, SIGNAL(content_changed())); connect(theLayers, SIGNAL(layersProjection(const QString&)), this, SLOT(projectionSet(const QString&))); connect (M_PREFS, SIGNAL(bookmarkChanged()), this, SLOT(updateBookmarksMenu())); updateBookmarksMenu(); connect (ui->menuBookmarks, SIGNAL(triggered(QAction *)), this, SLOT(bookmarkTriggered(QAction *))); updateRecentOpenMenu(); connect (ui->menuRecentOpen, SIGNAL(triggered(QAction *)), this, SLOT(recentOpenTriggered(QAction *))); updateRecentImportMenu(); connect (ui->menuRecentImport, SIGNAL(triggered(QAction *)), this, SLOT(recentImportTriggered(QAction *))); updateStyleMenu(); connect (ui->menuStyles, SIGNAL(triggered(QAction *)), this, SLOT(styleTriggered(QAction *))); ui->viewDownloadedAction->setChecked(M_PREFS->getDownloadedVisible()); ui->viewDirtyAction->setChecked(M_PREFS->getDirtyVisible()); ui->viewScaleAction->setChecked(M_PREFS->getScaleVisible()); ui->viewPhotosAction->setChecked(M_PREFS->getPhotosVisible()); ui->viewShowLatLonGridAction->setChecked(M_PREFS->getLatLonGridVisible()); ui->viewStyleBackgroundAction->setChecked(M_PREFS->getBackgroundVisible()); ui->viewStyleForegroundAction->setChecked(M_PREFS->getForegroundVisible()); ui->viewStyleTouchupAction->setChecked(M_PREFS->getTouchupVisible()); ui->viewNamesAction->setChecked(M_PREFS->getNamesVisible()); ui->viewTrackPointsAction->setChecked(M_PREFS->getTrackPointsVisible()); ui->viewTrackSegmentsAction->setChecked(M_PREFS->getTrackSegmentsVisible()); ui->viewRelationsAction->setChecked(M_PREFS->getRelationsVisible()); ui->viewVirtualNodesAction->setChecked(M_PREFS->getVirtualNodesVisible()); ui->viewLockZoomAction->setChecked(M_PREFS->getZoomBoris()); ui->viewWireframeAction->setChecked(M_PREFS->getWireframeView()); if (M_PREFS->getBackgroundVisible()) p->renderOptions.options |= RendererOptions::BackgroundVisible; else p->renderOptions.options &= ~RendererOptions::BackgroundVisible; if (M_PREFS->getForegroundVisible()) p->renderOptions.options |= RendererOptions::ForegroundVisible; else p->renderOptions.options &= ~RendererOptions::ForegroundVisible; if (M_PREFS->getTouchupVisible()) p->renderOptions.options |= RendererOptions::TouchupVisible; else p->renderOptions.options &= ~RendererOptions::TouchupVisible; if (M_PREFS->getNamesVisible()) p->renderOptions.options |= RendererOptions::NamesVisible; else p->renderOptions.options &= ~RendererOptions::NamesVisible; if (M_PREFS->getPhotosVisible()) p->renderOptions.options |= RendererOptions::PhotosVisible; else p->renderOptions.options &= ~RendererOptions::PhotosVisible; if (M_PREFS->getVirtualNodesVisible()) p->renderOptions.options |= RendererOptions::VirtualNodesVisible; else p->renderOptions.options &= ~RendererOptions::VirtualNodesVisible; if (M_PREFS->getTrackPointsVisible()) p->renderOptions.options |= RendererOptions::NodesVisible; else p->renderOptions.options &= ~RendererOptions::NodesVisible; if (M_PREFS->getTrackSegmentsVisible()) p->renderOptions.options |= RendererOptions::TrackSegmentVisible; else p->renderOptions.options &= ~RendererOptions::TrackSegmentVisible; if (M_PREFS->getRelationsVisible()) p->renderOptions.options |= RendererOptions::RelationsVisible; else p->renderOptions.options &= ~RendererOptions::RelationsVisible; if (M_PREFS->getDownloadedVisible()) p->renderOptions.options |= RendererOptions::DownloadedVisible; else p->renderOptions.options &= ~RendererOptions::DownloadedVisible; if (M_PREFS->getScaleVisible()) p->renderOptions.options |= RendererOptions::ScaleVisible; else p->renderOptions.options &= ~RendererOptions::ScaleVisible; if (M_PREFS->getLatLonGridVisible()) p->renderOptions.options |= RendererOptions::LatLonGridVisible; else p->renderOptions.options &= ~RendererOptions::LatLonGridVisible; if (M_PREFS->getZoomBoris()) p->renderOptions.options |= RendererOptions::LockZoom; else p->renderOptions.options &= ~RendererOptions::LockZoom; updateMenu(); QActionGroup* actgrpArrows = new QActionGroup(this); actgrpArrows->addAction(ui->viewArrowsNeverAction); actgrpArrows->addAction(ui->viewArrowsOnewayAction); actgrpArrows->addAction(ui->viewArrowsAlwaysAction); switch (M_PREFS->getDirectionalArrowsVisible()) { case RendererOptions::ArrowsNever: ui->viewArrowsNeverAction->setChecked(true); p->renderOptions.arrowOptions = RendererOptions::ArrowsNever; break; case RendererOptions::ArrowsOneway: ui->viewArrowsOnewayAction->setChecked(true); p->renderOptions.arrowOptions = RendererOptions::ArrowsOneway; break; case RendererOptions::ArrowsAlways: ui->viewArrowsAlwaysAction->setChecked(true); p->renderOptions.arrowOptions = RendererOptions::ArrowsAlways; break; } theView->setRenderOptions(p->renderOptions); ui->gpsCenterAction->setChecked(M_PREFS->getGpsMapCenter()); connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardChanged())); #ifndef _MOBILE theLayers->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::LeftDockWidgetArea, theLayers); p->theProperties->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::LeftDockWidgetArea, p->theProperties); theInfo->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, theInfo); theDirty->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, theDirty); p->theStyle->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, p->theStyle); p->theFeats->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, p->theFeats); theGPS->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); addDockWidget(Qt::RightDockWidgetArea, theGPS); #else p->theProperties->setVisible(false); theInfo->setVisible(false); theLayers->setVisible(false); theDirty->setVisible(false); theFeats->setVisible(false); theGPS->setVisible(false); toolBar->setVisible(false); mobileToolBar->setVisible(true); gpsPopupAction->setMenu(menuGps); dynamic_cast<QToolButton*>(mobileToolBar->widgetForAction(gpsPopupAction))->setPopupMode(QToolButton::InstantPopup); #ifdef _WINCE windowPropertiesAction->setText(tr("Properties...")); menuBar()->setDefaultAction(windowPropertiesAction); #endif // _WINCE #endif // _MOBILE #ifndef OSMARENDER ui->renderSVGAction->setVisible(false); #endif #ifndef GEOIMAGE ui->windowGeoimageAction->setVisible(false); ui->viewPhotosAction->setVisible(false); #endif ui->viewStyleBackgroundAction->setVisible(false); ui->viewStyleForegroundAction->setVisible(false); ui->viewStyleTouchupAction->setVisible(false); createToolBarManager(); // has to be before restorestate M_PREFS->restoreMainWindowState( this ); #ifndef _MOBILE if (!M_PREFS->getProjectionsList()->getProjections()->size()) { QMessageBox::critical(this, tr("Cannot load Projections file"), tr("\"Projections.xml\" could not be opened anywhere. Aborting.")); exit(1); } #endif #define NUMOP 3 static const char *opStr[NUMOP] = { QT_TR_NOOP("Low"), QT_TR_NOOP("High"), QT_TR_NOOP("Opaque")}; int o = M_PREFS->getAreaOpacity(); QActionGroup* actgrp = new QActionGroup(this); for (int i=0; i<NUMOP; i++) { QAction* act = new QAction(tr(opStr[i]), ui->mnuAreaOpacity); actgrp->addAction(act); qreal a = M_PREFS->getAlpha(opStr[i]); act->setData(a); act->setCheckable(true); ui->mnuAreaOpacity->addAction(act); if (o == int(a*100)) act->setChecked(true); } connect(ui->mnuAreaOpacity, SIGNAL(triggered(QAction*)), this, SLOT(setAreaOpacity(QAction*))); if (!g_Merk_Frisius) { ui->layersNewDrawingAction->setVisible(false); } blockSignals(false); QTimer::singleShot( 0, this, SLOT(delayedInit()) ); } void MainWindow::delayedInit() { QList<QAction*> actions = findChildren<QAction*>(); for (int i=0; i<actions.size(); i++) { shortcutsDefault[actions[i]->objectName()] = actions[i]->shortcut().toString(); } QStringList shortcuts = M_PREFS->getShortcuts(); for (int i=0; i<shortcuts.size(); i+=2) { QAction* act = findChild<QAction*>(shortcuts[i]); if (act) act->setShortcut(QKeySequence(shortcuts[i+1])); } updateWindowMenu(); if (M_PREFS->getLocalServer()) { p->theListeningServer = new QTcpServer(this); connect(p->theListeningServer, SIGNAL(newConnection()), this, SLOT(incomingLocalConnection())); if (!p->theListeningServer->listen(QHostAddress::LocalHost, 8111)) qDebug() << "Remote control: Unable to listen on 8111"; } if (M_PREFS->getHideToolbarLabels()) { setToolButtonStyle(Qt::ToolButtonIconOnly); } else { setToolButtonStyle(Qt::ToolButtonTextUnderIcon); } // M_PREFS->initialPosition(theView); on_fileNewAction_triggered(); invalidateView(); } void MainWindow::handleMessage(const QString &msg) { QStringList args = msg.split("$", QString::SkipEmptyParts); QStringList fileNames; for (int i=0; i < args.size(); ++i) { if (args[i] == "-l" || args[i] == "--log") { ++i; } else { QUrl u(args[i]); if (u.scheme() == "osm") { loadUrl(u); continue; } fileNames.append(args[i]); } } if (fileNames.isEmpty()) QDir::setCurrent(M_PREFS->getworkingdir()); else loadFiles(fileNames); } MainWindow::~MainWindow(void) { p->theProperties->setSelection(NULL); delete M_STYLE; delete theDocument; delete theView; delete p->theProperties; delete qtTranslator; delete merkaartorTranslator; delete SlippyMapWidget::theSlippyCache; delete p; delete M_PREFS; delete ui; } void MainWindow::launchInteraction(Interaction* anInteraction) { QList<Feature*> theSnapList; EditInteraction* EI = dynamic_cast<EditInteraction*>(theView->interaction()); if (EI) { theSnapList = EI->snapList(); ui->editRemoveAction->setEnabled(false); ui->editReverseAction->setEnabled(false); } if (!theSnapList.size()) if (p->theProperties) theSnapList = p->theProperties->selection(); if (theView->interaction()) delete theView->interaction(); theView->setInteraction(anInteraction); if (anInteraction) { ui->editPropertiesAction->setChecked(dynamic_cast<EditInteraction*>(anInteraction) != NULL); ui->editMoveAction->setChecked(dynamic_cast<MoveNodeInteraction*>(anInteraction) != NULL); ui->editRotateAction->setChecked(dynamic_cast<RotateInteraction*>(anInteraction) != NULL); ui->editScaleAction->setChecked(dynamic_cast<ScaleInteraction*>(anInteraction) != NULL); ui->createNodeAction->setChecked(dynamic_cast<CreateNodeInteraction*>(anInteraction) != NULL); ui->createRoadAction->setChecked(dynamic_cast<CreateSingleWayInteraction*>(anInteraction) != NULL); ui->createAreaAction->setChecked(dynamic_cast<CreateAreaInteraction*>(anInteraction) != NULL); ui->roadExtrudeAction->setChecked(dynamic_cast<ExtrudeInteraction*>(anInteraction) != NULL); EditInteraction* EI = dynamic_cast<EditInteraction*>(anInteraction); if (EI) EI->setSnap(theSnapList); } else { #ifndef _MOBILE theView->setCursor(QCursor(Qt::ArrowCursor)); #endif launchInteraction(new EditInteraction(this)); //Q_ASSERT(theView->interaction()); } } void MainWindow::onCustomcontextmenurequested(const QPoint & pos) { #ifndef _MOBILE if (/*EditInteraction* ei = */dynamic_cast<EditInteraction*>(theView->interaction()) || dynamic_cast<MoveNodeInteraction*>(theView->interaction())) { QMenu menu; //FIXME Some of these actions on WIN32-MSVC corrupts the heap. //QMenu editMenu(tr("Edit")); //for(int i=0; i<Main->menuEdit->actions().size(); ++i) { // if (Main->menuEdit->actions()[i]->isEnabled()) // editMenu.addAction(Main->menuEdit->actions()[i]); //} //if (editMenu.actions().size()) // menu.addMenu(&editMenu); //QMenu createMenu(tr("Create")); //for(int i=0; i<Main->menuCreate->actions().size(); ++i) { // if (Main->menuCreate->actions()[i]->isEnabled()) // createMenu.addAction(Main->menuCreate->actions()[i]); //} //if (createMenu.actions().size()) // menu.addMenu(&createMenu); menu.addAction(ui->viewZoomOutAction); menu.addAction(ui->viewZoomWindowAction); menu.addAction(ui->viewZoomInAction); QMenu featureMenu(tr("Feature")); for(int i=0; i<ui->menu_Feature->actions().size(); ++i) { if (ui->menu_Feature->actions()[i]->isEnabled()) featureMenu.addAction(ui->menu_Feature->actions()[i]); } if (featureMenu.actions().size()) menu.addMenu(&featureMenu); QMenu nodeMenu(tr("Node")); for(int i=0; i<ui->menu_Node->actions().size(); ++i) { if (ui->menu_Node->actions()[i]->isEnabled()) nodeMenu.addAction(ui->menu_Node->actions()[i]); } if (nodeMenu.actions().size()) menu.addMenu(&nodeMenu); QMenu roadMenu(tr("Road")); for(int i=0; i<ui->menuRoad->actions().size(); ++i) { if (ui->menuRoad->actions()[i]->isEnabled()) roadMenu.addAction(ui->menuRoad->actions()[i]); } if (roadMenu.actions().size()) menu.addMenu(&roadMenu); QMenu relationMenu(tr("Relation")); for(int i=0; i<ui->menuRelation->actions().size(); ++i) { if (ui->menuRelation->actions()[i]->isEnabled()) relationMenu.addAction(ui->menuRelation->actions()[i]); } if (relationMenu.actions().size()) menu.addMenu(&relationMenu); if (menu.actions().size()) { if (menu.actions().size() == 1) { for (int i=0; i < menu.actions()[0]->menu()->actions().size(); ++i) { menu.addAction(menu.actions()[0]->menu()->actions()[i]); } menu.removeAction(menu.actions()[0]); } menu.exec(theView->mapToGlobal(pos)); } } #endif } void MainWindow::onImagerequested(ImageMapLayer *) { #ifndef _MOBILE ++p->numImages; pbImages->setRange(0, p->numImages); //pbImages->setValue(0); pbImages->update(); if (pbImages->value() < 0) pbImages->setValue(0); #endif } void MainWindow::onImagereceived(ImageMapLayer *aLayer) { #ifndef _MOBILE if (pbImages->value() < pbImages->maximum()) pbImages->setValue(pbImages->value()+1); #endif theView->on_imageReceived(aLayer); } void MainWindow::onLoadingfinished(ImageMapLayer *) { p->numImages = 0; #ifndef _MOBILE pbImages->reset(); #endif } bool MainWindow::eventFilter(QObject */* watched */, QEvent *event) { switch (event->type()) { #ifdef GEOIMAGE case QEvent::DragEnter: { QDragEnterEvent* devent = static_cast<QDragEnterEvent*>(event); if (devent->mimeData()->hasUrls() && devent->mimeData()->urls().first().toLocalFile().endsWith(".jpg", Qt::CaseInsensitive)) { p->dropTarget = NULL; event->accept(); return true; } else event->ignore(); return false; } case QEvent::DragMove: { QDragMoveEvent* devent = static_cast<QDragMoveEvent*>(event); QMouseEvent mE(QEvent::MouseMove, devent->pos(), Qt::LeftButton, Qt::LeftButton, qApp->keyboardModifiers()); theView->mouseMoveEvent(&mE); Node *tP; for (VisibleFeatureIterator it(document()); !it.isEnd(); ++it) { QList<Feature*> NoSnap; if ((tP = CAST_NODE(it.get())) && tP->pixelDistance(devent->pos(), 5.01, NoSnap, theView) < 5.01) { p->dropTarget = tP; QRect acceptedRect(tP->projected().toPoint() - QPoint(3, 3), tP->projected().toPoint() + QPoint(3, 3)); devent->acceptProposedAction(); devent->accept(acceptedRect); return true; } } devent->acceptProposedAction(); devent->accept(); return true; } case QEvent::Drop: { QDropEvent* devent = static_cast<QDropEvent*>(event); // first save the image url because the even->mimeData() releases its data very soon // this is probably because the drop action ends with calling of this event // so the program that started the drag-action thinks the data isn't needed anymore QList<QUrl> imageUrls = devent->mimeData()->urls(); QStringList locFiles; foreach(QUrl url, imageUrls) locFiles << url.toLocalFile(); if (locFiles.size() > 1) geoImage()->loadImages(locFiles); else { QMenu menu(this); QString imageFn = locFiles[0]; Coord mapC = theView->fromView(devent->pos()); Coord pos = GeoImageDock::getGeoDataFromImage(imageFn); if (pos.isNull()) { QAction *add, *load; load = menu.addAction(tr("Load image")); if (p->dropTarget) add = menu.addAction(tr("Add node position to image")); else add = menu.addAction(tr("Geotag image with this position")); menu.addSeparator(); menu.addAction(tr("Cancel")); QAction* res = menu.exec(QCursor::pos()); if (res == add) { if (p->dropTarget) geoImage()->addGeoDataToImage(p->dropTarget->position(), imageFn); else geoImage()->addGeoDataToImage(mapC,imageFn); geoImage()->loadImages(locFiles); } else if (res == load) geoImage()->loadImage(imageFn, mapC); } else geoImage()->loadImages(locFiles); } return false; } #endif // GEOIMAGE case QEvent::MouseButtonDblClick: { if (!theDocument) return true; if (!theView->updatesEnabled()) return true; if (!theView->interaction()) return true; QMouseEvent* mevent = static_cast<QMouseEvent*>(event); if ((mevent->modifiers() & Qt::AltModifier) || dynamic_cast<ExtrudeInteraction*>(theView->interaction())) g_Merk_Segment_Mode = true; else g_Merk_Segment_Mode = false; theView->interaction()->updateSnap(mevent); if (M_PREFS->getSelectModeCreation()) { MoveNodeInteraction* MI = NULL; if (!M_PREFS->getSeparateMoveMode()) { MI = dynamic_cast<MoveNodeInteraction*>(theView->interaction()); } EditInteraction* EI = dynamic_cast<EditInteraction*>(theView->interaction()); if ((EI && EI->isIdle()) || (MI && MI->isIdle())) { if ((theView->interaction()->lastSnap() && theView->interaction()->lastSnap()->getType() & IFeature::LineString) || !theView->interaction()->lastSnap()) CreateNodeInteraction::createNode(theView->fromView(mevent->pos()), theView->interaction()->lastSnap()); else if (theView->interaction()->lastSnap() && theView->interaction()->lastSnap()->getType() == IFeature::Point) { Node* N = CAST_NODE(theView->interaction()->lastSnap()); CreateSingleWayInteraction* CI = new CreateSingleWayInteraction(this, N, false); N->invalidatePainter(); launchInteraction(CI); theInfo->setHtml(theView->interaction()->toHtml()); #ifndef _MOBILE theView->setCursor(CI->cursor()); #endif theView->update(); return true; } } } return false; } case QEvent::MouseButtonPress: { if (!theDocument) return true; if (!theView->interaction()) return true; QMouseEvent* mevent = static_cast<QMouseEvent*>(event); if ((mevent->modifiers() & Qt::AltModifier) || dynamic_cast<ExtrudeInteraction*>(theView->interaction())) g_Merk_Segment_Mode = true; else g_Merk_Segment_Mode = false; theView->interaction()->updateSnap(mevent); if (theInfo) theInfo->setHtml(theView->interaction()->toHtml()); return false; } case QEvent::MouseButtonRelease: { if (!document()) return true; if (!theView->interaction()) return true; QMouseEvent* mevent = static_cast<QMouseEvent*>(event); if ((mevent->modifiers() & Qt::AltModifier) || dynamic_cast<ExtrudeInteraction*>(theView->interaction())) g_Merk_Segment_Mode = true; else g_Merk_Segment_Mode = false; theView->interaction()->updateSnap(mevent); return false; } case QEvent::MouseMove: { if (!theDocument) return true; if (!theView->updatesEnabled()) return true; if (!theView->interaction()) return false; QMouseEvent* mevent = static_cast<QMouseEvent*>(event); if ((mevent->modifiers() & Qt::AltModifier) || dynamic_cast<ExtrudeInteraction*>(theView->interaction())) g_Merk_Segment_Mode = true; else g_Merk_Segment_Mode = false; theView->interaction()->updateSnap(mevent); if (!M_PREFS->getSeparateMoveMode()) { EditInteraction* EI = dynamic_cast<EditInteraction*>(theView->interaction()); if (EI && EI->isIdle()) { if (EI->lastSnap() && p->theProperties->isSelected(EI->lastSnap())) { MoveNodeInteraction* MI = new MoveNodeInteraction(this); launchInteraction(MI); // main()->info()->setHtml(interaction()->toHtml()); #ifndef _MOBILE theView->setCursor(MI->cursor()); #endif theView->update(); return false; } } MoveNodeInteraction* MI = dynamic_cast<MoveNodeInteraction*>(theView->interaction()); if (MI && !MI->lastSnap() && MI->isIdle()) { EditInteraction* EI = new EditInteraction(this); launchInteraction(EI); #ifndef _MOBILE theView->setCursor(EI->cursor()); #endif theView->update(); return false; } } return false; } case QEvent::Wheel: { if (!theDocument) return true; return false; } case QEvent::ToolTip: { QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event); //Coord p = p->theProjection.inverse(helpEvent->pos()); if (M_PREFS->getMapTooltip()) { if (!toolTip().isEmpty()) QToolTip::showText(helpEvent->globalPos(), toolTip()); else QToolTip::hideText(); } return true; } case QEvent::KeyPress: { QKeyEvent *ke = static_cast< QKeyEvent* >( event ); switch ( ke->key() ) { case Qt::Key_Space: ke->accept(); theView->setBackgroundOnlyPanZoom(true); return true; case Qt::Key_Tab: theView->setFocus(); ke->accept(); // if (!isSelectionLocked()) // lockSelection(); // else { FeatureSnapInteraction* intr = dynamic_cast<FeatureSnapInteraction*>(theView->interaction()); if (intr) intr->nextSnap(); } return true; case Qt::Key_Backtab: theView->setFocus(); ke->accept(); // if (!isSelectionLocked()) // lockSelection(); // else { FeatureSnapInteraction* intr = dynamic_cast<FeatureSnapInteraction*>(theView->interaction()); if (intr) intr->nextSnap(); } return true; case Qt::Key_T: { theView->rotateScreen(theView->rect().center(), 15.); return true; } case Qt::Key_O: { CreateSingleWayInteraction* intr = dynamic_cast<CreateSingleWayInteraction*>(theView->interaction()); if (!intr) return false; theView->setFocus(); ke->accept(); intr->setSnapAngle(45.); return true; } case Qt::Key_H: { CreateSingleWayInteraction* intr = dynamic_cast<CreateSingleWayInteraction*>(theView->interaction()); if (!intr) return false; theView->setFocus(); ke->accept(); intr->setSnapAngle(30.); return true; } case Qt::Key_P: { CreateSingleWayInteraction* intr = dynamic_cast<CreateSingleWayInteraction*>(theView->interaction()); if (!intr) return false; theView->setFocus(); ke->accept(); intr->setParallelMode(true); return true; } case Qt::Key_C: { CreateSingleWayInteraction* CI = dynamic_cast<CreateSingleWayInteraction*>(theView->interaction()); if (CI) { theView->setFocus(); ke->accept(); CI->closeAndFinish(); } else { CreateAreaInteraction* AI = dynamic_cast<CreateAreaInteraction*>(theView->interaction()); if (AI) { theView->setFocus(); ke->accept(); AI->closeAndFinish(); } else return false; } return true; } default: break; } } case QEvent::KeyRelease: { QKeyEvent *ke = static_cast< QKeyEvent* >( event ); switch ( ke->key() ) { case Qt::Key_Space: ke->accept(); theView->setBackgroundOnlyPanZoom(false); return true; case Qt::Key_O: case Qt::Key_H: { CreateSingleWayInteraction* intr = dynamic_cast<CreateSingleWayInteraction*>(theView->interaction()); if (!intr) return false; ke->accept(); intr->setSnapAngle(0); return true; } case Qt::Key_P: { CreateSingleWayInteraction* intr = dynamic_cast<CreateSingleWayInteraction*>(theView->interaction()); if (!intr) return false; ke->accept(); intr->setParallelMode(false); return true; } default: break; } } case QEvent::Leave: { if (theInfo) theInfo->unsetHoverHtml(); FeatureSnapInteraction* intr = dynamic_cast<FeatureSnapInteraction*>(theView->interaction()); if (intr) intr->clearLastSnap(); theView->update(); } default: break; } return false; } void MainWindow::incomingLocalConnection() { QTcpSocket *clientConnection = p->theListeningServer->nextPendingConnection(); connect(clientConnection, SIGNAL(disconnected()), clientConnection, SLOT(deleteLater())); connect(clientConnection, SIGNAL(readyRead()), this, SLOT(readLocalConnection()) ); } void MainWindow::readLocalConnection() { QTcpSocket* socket = (QTcpSocket*)sender(); if ( socket->canReadLine() ) { QString ln = socket->readLine(); QStringList tokens = ln.split( QRegExp("[ \r\n][ \r\n]*"), QString::SkipEmptyParts ); if ( tokens[0] == "GET" ) { QTextStream resultStream(socket); resultStream << "HTTP/1.1 200 OK\r\n"; resultStream << "Date: " << QDateTime::currentDateTime().toString(Qt::TextDate); resultStream << "Server: Merkaartor RemoteControl\r\n"; resultStream << "Content-type: text/plain\r\n"; resultStream << "Access-Control-Allow-Origin: *\r\n"; resultStream << "Content-length: 4\r\n\r\n"; resultStream << "OK\r\n"; socket->disconnectFromHost(); QUrl u = QUrl(tokens[1]); loadUrl(u); } } } void MainWindow::createToolBarManager() { toolBarManager = new QtToolBarManager(this); toolBarManager->setMainWindow(this); foreach(QAction* a, ui->menuFile->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("File"));; } foreach(QAction* a, ui->menuEdit->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Edit"));; } foreach(QAction* a, ui->menuView->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("View"));; } foreach(QAction* a, ui->menu_Show->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Show"));; } foreach(QAction* a, ui->menuShow_directional_Arrows->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Directional Arrows"));; } foreach(QAction* a, ui->menuGps->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("GPS"));; } foreach(QAction* a, ui->menuLayers->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Layers"));; } foreach(QAction* a, ui->menuCreate->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Create"));; } foreach(QAction* a, ui->menu_Feature->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Feature"));; } foreach(QAction* a, ui->menuOpenStreetBugs->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("OpenStreetBugs"));; } foreach(QAction* a, ui->menu_Node->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Node"));; } foreach(QAction* a, ui->menuRoad->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Way"));; } foreach(QAction* a, ui->menuRelation->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Relation"));; } foreach(QAction* a, ui->menuTools->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Tools"));; } foreach(QAction* a, ui->menuWindow->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Windows"));; } foreach(QAction* a, ui->menuHelp->actions()) { if (!a->isSeparator() && !a->menu()) toolBarManager->addAction(a, tr("Help"));; } toolBarManager->addToolBar(ui->toolBar, ""); QSettings* Sets = M_PREFS->getQSettings(); if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) if (Sets->contains("MainWindow/Toolbars")) toolBarManager->restoreState(Sets->value("MainWindow/Toolbars").toByteArray()); } void MainWindow::on_toolsToolbarsAction_triggered() { QtToolBarDialog dlg(this); dlg.setToolBarManager(toolBarManager); dlg.exec(); QSettings* Sets = M_PREFS->getQSettings(); Sets->setValue("MainWindow/Toolbars", toolBarManager->saveState()); } void MainWindow::createProgressDialog() { theProgressDialog = new QProgressDialog(this); theProgressDialog->setWindowModality(Qt::ApplicationModal); theProgressDialog->setMinimumDuration(0); theProgressBar = new QProgressBar(theProgressDialog); theProgressBar->setTextVisible(false); theProgressDialog->setBar(theProgressBar); theProgressLabel = new QLabel(); theProgressLabel->setAlignment(Qt::AlignCenter); theProgressDialog->setLabel(theProgressLabel); theProgressDialog->setMaximum(11); } void MainWindow::deleteProgressDialog() { SAFE_DELETE(theProgressDialog) theProgressBar = NULL; theProgressLabel = NULL; } void MainWindow::setAreaOpacity(QAction *act) { qreal a = act->data().toDouble(); M_PREFS->setAreaOpacity(int(a*100)); theView->invalidate(true, true, false); } void MainWindow::adjustLayers(bool adjustViewport) { if (M_PREFS->getZoomBoris()) { ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) { theView->projection().setProjectionType(l->projection()); updateProjectionMenu(); } } if (adjustViewport) { CoordBox theVp; theVp = theView->viewport(); theView->setViewport(theVp, theView->rect()); } invalidateView(true); } void MainWindow::invalidateView(bool UpdateDock) { theView->setRenderOptions(p->renderOptions); theView->invalidate(true, true, true); //theLayers->updateContent(); if (UpdateDock) p->theProperties->resetValues(); } void MainWindow::toggleButtonStyle() { if (M_PREFS->getHideToolbarLabels()) { M_PREFS->setHideToolbarLabels(false); setToolButtonStyle(Qt::ToolButtonTextUnderIcon); } else { M_PREFS->setHideToolbarLabels(true); setToolButtonStyle(Qt::ToolButtonIconOnly); } } PropertiesDock* MainWindow::properties() { return p->theProperties; } InfoDock* MainWindow::info() { return theInfo; } #ifdef GEOIMAGE GeoImageDock* MainWindow::geoImage() { return theGeoImage; } #endif FeaturesDock* MainWindow::features() { return p->theFeats; } Document* MainWindow::document() { return theDocument; } void MainWindow::on_editCutAction_triggered() { // Export QClipboard *clipboard = QApplication::clipboard(); QMimeData* md = new QMimeData(); QBuffer osmBuf; osmBuf.open(QIODevice::WriteOnly); QList<Feature*> exportedFeatures = document()->exportCoreOSM(p->theProperties->selection()); theDocument->exportOSM(this, &osmBuf, exportedFeatures); md->setText(QString(osmBuf.data())); md->setData("application/x-openstreetmap+xml", osmBuf.data()); ImportExportKML kmlexp(theDocument); QBuffer kmlBuf; kmlBuf.open(QIODevice::WriteOnly); if (kmlexp.setDevice(&kmlBuf)) { kmlexp.export_(p->theProperties->selection()); md->setData("application/vnd.google-earth.kml+xml", kmlBuf.data()); } ExportGPX gpxexp(theDocument); QBuffer gpxBuf; gpxBuf.open(QIODevice::WriteOnly); if (gpxexp.setDevice(&gpxBuf)) { gpxexp.export_(p->theProperties->selection()); md->setData("application/gpx+xml", gpxBuf.data()); } //Deletion QList<Feature*> Sel; for (int i=0; i<p->theProperties->selectionSize(); ++i) Sel.push_back(p->theProperties->selection(i)); if (Sel.size() == 0) return; CommandList* theList = new CommandList(MainWindow::tr("Cut Features"), Sel[0]); for (int i=0; i<Sel.size(); ++i) { QList<Feature*> Alternatives; theList->add(new RemoveFeatureCommand(document(), Sel[i], Alternatives)); } if (theList->size()) { document()->addHistory(theList); } else { delete theList; return; } QString xml; QXmlStreamWriter stream(&xml); stream.setAutoFormatting(true); stream.setAutoFormattingIndent(2); stream.writeStartDocument(); stream.writeStartElement("MerkaartorUndo"); stream.writeAttribute("documentid", theDocument->id()); theList->toXML(stream); stream.writeEndElement(); stream.writeEndDocument(); md->setData("application/x-merkaartor-undo+xml", xml.toUtf8()); // qDebug() << doc.toString(2); clipboard->setMimeData(md); properties()->setSelection(0); properties()->checkMenuStatus(); view()->invalidate(true, true, false); } void MainWindow::on_editCopyAction_triggered() { QClipboard *clipboard = QApplication::clipboard(); QMimeData* md = new QMimeData(); QBuffer osmBuf; osmBuf.open(QIODevice::WriteOnly); QList<Feature*> exportedFeatures = document()->exportCoreOSM(p->theProperties->selection(), true); theDocument->exportOSM(this, &osmBuf, exportedFeatures); md->setText(QString(osmBuf.data())); md->setData("application/x-openstreetmap+xml", osmBuf.data()); ImportExportKML kmlexp(theDocument); QBuffer kmlBuf; kmlBuf.open(QIODevice::WriteOnly); if (kmlexp.setDevice(&kmlBuf)) { kmlexp.export_(p->theProperties->selection()); md->setData("application/vnd.google-earth.kml+xml", kmlBuf.data()); } ExportGPX gpxexp(theDocument); QBuffer gpxBuf; gpxBuf.open(QIODevice::WriteOnly); if (gpxexp.setDevice(&gpxBuf)) { gpxexp.export_(p->theProperties->selection()); md->setData("application/gpx+xml", gpxBuf.data()); } clipboard->setMimeData(md); invalidateView(); } void MainWindow::on_editPasteFeatureAction_triggered() { DrawingLayer* l = dynamic_cast<DrawingLayer*>(theDocument->getDirtyOrOriginLayer()); if (!l) return; Document* doc; QClipboard *clipboard = QApplication::clipboard(); if (clipboard->mimeData()->hasFormat("application/x-merkaartor-undo+xml")) { QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(clipboard->mimeData()->data("application/x-merkaartor-undo+xml"))) { delete theXmlDoc; } else { QDomElement root = theXmlDoc->firstChildElement("MerkaartorUndo"); if (!root.isNull()) { QString docId = root.attribute("documentid"); if (theDocument->id() == docId) { QDomNodeList nl = theXmlDoc->elementsByTagName("RemoveFeatureCommand"); for (int i=0; i<nl.size(); ++i) { nl.at(i).toElement().setAttribute("layer", l->id()); } QString xml; QTextStream tstr(&xml, QIODevice::ReadOnly); root.firstChildElement("CommandList").save(tstr, 2); QXmlStreamReader stream(xml); CommandList* theList = CommandList::fromXML(theDocument, stream); theList->setReversed(true); theList->redo(); theList->setDescription("Paste Features"); theDocument->addHistory(theList); view()->invalidate(true, true, false); return; } } } } if (!(doc = Document::getDocumentFromClipboard())) { QMessageBox::critical(this, tr("Clipboard invalid"), tr("Clipboard do not contain valid data.")); return; } CommandList* theList = new CommandList(); theList->setDescription("Paste Features"); QList<Feature*> theFeats = theDocument->mergeDocument(doc, theDocument->getDirtyOrOriginLayer(), theList); if (theList->size()) document()->addHistory(theList); else delete theList; delete doc; p->theProperties->setSelection(theFeats); view()->invalidate(true, true, false); } void MainWindow::on_editPasteOverwriteAction_triggered() { QList<Feature*> sel = properties()->selection(); if (!sel.size()) return; Document* doc; if (!(doc = Document::getDocumentFromClipboard())) { QMessageBox::critical(this, tr("Clipboard invalid"), tr("Clipboard do not contain valid data.")); return; } CommandList* theList = new CommandList(); theList->setDescription("Paste tags (overwrite)"); for(int i=0; i < sel.size(); ++i) { theList->add(new ClearTagsCommand(sel[i], theDocument->getDirtyOrOriginLayer(sel[i]->layer()))); for (FeatureIterator k(doc); !k.isEnd(); ++k) { // Allow any<->any pasting but only takes top level feature into account if (k.get()->sizeParents()) continue; Feature::mergeTags(theDocument, theList, sel[i], k.get()); } } if (theList->size()) document()->addHistory(theList); else delete theList; delete doc; invalidateView(); } void MainWindow::on_editPasteMergeAction_triggered() { QList<Feature*> sel = properties()->selection(); if (!sel.size()) return; Document* doc; if (!(doc = Document::getDocumentFromClipboard())) { QMessageBox::critical(this, tr("Clipboard invalid"), tr("Clipboard do not contain valid data.")); return; } CommandList* theList = new CommandList(); theList->setDescription("Paste tags (merge)"); for(int i=0; i < sel.size(); ++i) { for (FeatureIterator k(doc); !k.isEnd(); ++k) { // Allow any<->any pasting but only takes top level feature into account if (k.get()->sizeParents()) continue; Feature::mergeTags(theDocument, theList, sel[i], k.get()); } } if (theList->size()) document()->addHistory(theList); else delete theList; delete doc; invalidateView(); } void MainWindow::clipboardChanged() { ui->editPasteFeatureAction->setEnabled(false); ui->editPasteMergeAction->setEnabled(false); ui->editPasteOverwriteAction->setEnabled(false); QClipboard *clipboard = QApplication::clipboard(); //qDebug() << "Clipboard mime: " << clipboard->mimeData()->formats(); QDomDocument* theXmlDoc = new QDomDocument(); bool ok = false; if (clipboard->mimeData()->hasFormat("application/x-openstreetmap+xml")) ok = theXmlDoc->setContent(clipboard->mimeData()->data("application/x-openstreetmap+xml")); else if (clipboard->mimeData()->hasText()) ok = theXmlDoc->setContent(clipboard->text()); if (!ok) { delete theXmlDoc; return; } QDomElement c = theXmlDoc->documentElement(); if (c.tagName() != "osm" && c.tagName() != "kml") { delete theXmlDoc; return; } ui->editPasteFeatureAction->setEnabled(true); ui->editPasteMergeAction->setEnabled(true); ui->editPasteOverwriteAction->setEnabled(true); delete theXmlDoc; } void MainWindow::on_editRedoAction_triggered() { theDocument->redoHistory(); p->theProperties->adjustSelection(); invalidateView(); } void MainWindow::on_editUndoAction_triggered() { theDocument->undoHistory(); p->theProperties->adjustSelection(); invalidateView(); } void MainWindow::on_editPropertiesAction_triggered() { if (theView->interaction() && dynamic_cast<EditInteraction*>(theView->interaction())) p->theProperties->setSelection(0); theView->unlockSelection(); // theView->invalidate(true, true, false); launchInteraction(new EditInteraction(this)); view()->setInteracting(false); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_editRemoveAction_triggered() { emit remove_triggered(); emit content_changed(); } void MainWindow::on_editMoveAction_triggered() { if (M_PREFS->getSeparateMoveMode()) { launchInteraction(new MoveNodeInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } } void MainWindow::on_editRotateAction_triggered() { launchInteraction(new RotateInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_editScaleAction_triggered() { launchInteraction(new ScaleInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_editReverseAction_triggered() { emit reverse_triggered(); } static void changeCurrentDirToFile(const QString& s) { QFileInfo info(s); QDir::setCurrent(info.absolutePath()); M_PREFS->setworkingdir(QDir::currentPath()); } void MainWindow::on_fileImportAction_triggered() { QStringList fileNames = QFileDialog::getOpenFileNames( this, tr("Import file"), "", p->FILTER_IMPORT_SUPPORTED); if (fileNames.isEmpty()) return; view()->setUpdatesEnabled(false); theLayers->setUpdatesEnabled(false); QStringList importedFiles; importFiles(theDocument, fileNames, &importedFiles); foreach (QString currentFileName, importedFiles) M_PREFS->addRecentImport(currentFileName); updateRecentImportMenu(); view()->setUpdatesEnabled(true); theLayers->setUpdatesEnabled(true); on_editPropertiesAction_triggered(); theDocument->history().setActions(ui->editUndoAction, ui->editRedoAction, ui->fileUploadAction); } static bool mayDiscardUnsavedChanges(QWidget* aWidget) { return QMessageBox::question(aWidget, MainWindow::tr("Unsaved changes"), MainWindow::tr("The current map contains unsaved changes that will be lost when starting a new one.\n" "Do you want to cancel starting a new map or continue and discard the old changes?"), QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Discard; } static bool mayDiscardStyleChanges(QWidget* aWidget) { return QMessageBox::question(aWidget, MainWindow::tr("Unsaved Style changes"), MainWindow::tr("You have modified the current style.\n" "Do you want to save your changes?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::No; } bool MainWindow::importFiles(Document * mapDocument, const QStringList & fileNames, QStringList * importedFileNames ) { createProgressDialog(); #ifndef Q_OS_SYMBIAN QApplication::setOverrideCursor(Qt::BusyCursor); #endif bool foundImport = false; QStringListIterator it(fileNames); while (it.hasNext()) { const QString & fn = it.next(); changeCurrentDirToFile(fn); QString baseFileName = fn.section('/', - 1); Layer* newLayer = NULL; bool importOK = false; bool importAborted = false; if (fn.toLower().endsWith(".gpx")) { QList<TrackLayer*> theTracklayers; TrackLayer* newLayer = new TrackLayer( baseFileName + " - " + tr("Waypoints"), baseFileName); mapDocument->add(newLayer); theTracklayers.append(newLayer); importOK = importGPX(this, baseFileName, mapDocument, theTracklayers); if (!importOK) { for (int i=0; i<theTracklayers.size(); i++) { mapDocument->remove(theTracklayers[i]); delete theTracklayers[i]; } } else { if (!newLayer->size()) { mapDocument->remove(newLayer); delete newLayer; } for (int i=1; i<theTracklayers.size(); i++) { if (theTracklayers[i]->name().isEmpty()) theTracklayers[i]->setName(QString(baseFileName + " - " + tr("Track %1").arg(i))); if (importOK && M_PREFS->getAutoExtractTracks()) { theTracklayers[i]->extractLayer(); } } } } else if (fn.toLower().endsWith(".osm")) { newLayer = new DrawingLayer( baseFileName ); mapDocument->add(newLayer); importOK = importOSM(this, baseFileName, mapDocument, newLayer); } #ifndef FRISIUS_BUILD else if (fn.toLower().endsWith(".osc")) { if (g_Merk_Frisius) { newLayer = new DrawingLayer( baseFileName ); mapDocument->add(newLayer); } else { newLayer = mapDocument->getDirtyOrOriginLayer(); } importOK = mapDocument->importOSC(fn, (DrawingLayer*)newLayer); } #endif else if (fn.toLower().endsWith(".ngt")) { newLayer = new TrackLayer( baseFileName ); newLayer->setUploadable(false); mapDocument->add(newLayer); importOK = importNGT(this, baseFileName, mapDocument, newLayer); if (importOK && M_PREFS->getAutoExtractTracks()) { ((TrackLayer *)newLayer)->extractLayer(); } } else if (fn.toLower().endsWith(".nmea") || (fn.toLower().endsWith(".nma"))) { newLayer = new TrackLayer( baseFileName ); newLayer->setUploadable(false); mapDocument->add(newLayer); importOK = mapDocument->importNMEA(baseFileName, (TrackLayer *)newLayer); if (importOK && M_PREFS->getAutoExtractTracks()) { ((TrackLayer *)newLayer)->extractLayer(); } } else if (fn.toLower().endsWith(".kml")) { if (QMessageBox::warning(this, MainWindow::tr("Big Fat Copyright Warning"), MainWindow::tr( "You are trying to import a KML file. Please be aware that:\n" "\n" " - You cannot import to OSM a KML file created from Google Earth. While you might\n" " think that nodes you created from GE are yours, they are not!\n" " They are still a derivative work from GE, and, as such, cannot be used in OSM.\n" "\n" " - If you downloaded it from the Internet, chances are that there is a copyright on it.\n" " Please be absolutely sure that using those data in OSM is permitted by the author, or\n" " that the data is public domain.\n" "\n" "If unsure, please seek advice on the \"legal\" or \"talk\" openstreetmap mailing lists.\n" "\n" "Are you absolutely sure this KML can legally be imported in OSM?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes) { newLayer = new DrawingLayer( baseFileName ); newLayer->setUploadable(false); mapDocument->add(newLayer); importOK = mapDocument->importKML(baseFileName, (TrackLayer *)newLayer); } else importAborted = true; } else if (fn.toLower().endsWith(".csv")) { #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif newLayer = new DrawingLayer( baseFileName ); newLayer->setUploadable(false); mapDocument->add(newLayer); importOK = mapDocument->importCSV(baseFileName, (DrawingLayer*)newLayer); } #ifdef USE_PROTOBUF else if (fn.toLower().endsWith(".pbf")) { newLayer = new DrawingLayer( baseFileName ); mapDocument->add(newLayer); importOK = mapDocument->importPBF(baseFileName, (DrawingLayer*)newLayer); } #endif else { // Fallback to GDAL qDebug() << "Trying GDAL"; newLayer = new DrawingLayer( baseFileName ); newLayer->setUploadable(false); mapDocument->add(newLayer); importOK = mapDocument->importGDAL(baseFileName, (DrawingLayer*)newLayer); } if (!importOK && newLayer) mapDocument->remove(newLayer); if (importOK) { foundImport = true; if (importedFileNames) importedFileNames->append(fn); emit content_changed(); } else if (!importAborted) { delete newLayer; QMessageBox::warning(this, tr("No valid file"), tr("%1 could not be opened.").arg(fn)); } } #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif deleteProgressDialog(); return foundImport; } void MainWindow::loadFiles(const QStringList & fileList) { QStringList fileNames(fileList); #ifdef GEOIMAGE QStringList images = fileList.filter(".jpg", Qt::CaseInsensitive); if (!images.isEmpty()) { theGeoImage->loadImages(images); QString cur; foreach (cur, images) fileNames.removeAll(cur); } #endif if (fileNames.isEmpty()) return; theLayers->setUpdatesEnabled(false); view()->setUpdatesEnabled(false); // Load only the first merkaartor document bool skipImport = false; QMutableStringListIterator it(fileNames); while (it.hasNext()) { const QString & fn = it.next(); if (fn.toLower().endsWith(".mdc") == false) continue; if (skipImport == false) { changeCurrentDirToFile(fn); loadDocument(fn); skipImport = true; } it.remove(); } Document* newDoc = theDocument; if (skipImport == false) { newDoc = new Document(theLayers); newDoc->addDefaultLayers(); } QStringList openedFiles; bool foundImport = importFiles(newDoc, fileNames, &openedFiles); foreach (QString currentFileName, openedFiles) M_PREFS->addRecentOpen(currentFileName); updateRecentOpenMenu(); p->theProperties->setSelection(0); if (skipImport == false) { if (foundImport) { // only imported some tracks p->theFeats->invalidate(); delete theDocument; theDocument = newDoc; connect (theDocument, SIGNAL(historyChanged()), theDirty, SLOT(updateList())); connect (theDocument, SIGNAL(historyChanged()), this, SIGNAL(content_changed())); connect(theDocument, SIGNAL(imageRequested(ImageMapLayer*)), this, SLOT(onImagerequested(ImageMapLayer*)), Qt::QueuedConnection); connect(theDocument, SIGNAL(imageReceived(ImageMapLayer*)), this, SLOT(onImagereceived(ImageMapLayer*)), Qt::QueuedConnection); connect(theDocument, SIGNAL(loadingFinished(ImageMapLayer*)), this, SLOT(onLoadingfinished(ImageMapLayer*)), Qt::QueuedConnection); theDirty->updateList(); theView->setDocument(theDocument); on_viewZoomAllAction_triggered(); } else { // we didn't really open anything successfully delete newDoc; } } else { if (foundImport) { on_viewZoomAllAction_triggered(); } } on_editPropertiesAction_triggered(); theDocument->history().setActions(ui->editUndoAction, ui->editRedoAction, ui->fileUploadAction); theLayers->setUpdatesEnabled(true); view()->setUpdatesEnabled(true); invalidateView(false); } void MainWindow::loadUrl(const QUrl& u) { activateWindow(); if (u.path() == "/load_and_zoom") { qreal t = u.queryItemValue("top").toDouble(); qreal b = u.queryItemValue("bottom").toDouble(); qreal r = u.queryItemValue("right").toDouble(); qreal l = u.queryItemValue("left").toDouble(); if (theView) { CoordBox vp(Coord(l,b), Coord(r,t)); theView->setViewport(vp, theView->rect()); on_fileDownloadMoreAction_triggered(); } properties()->setSelection(0); Feature* F; IFeature::FId mId; QString sel = u.queryItemValue("select"); if (!sel.isNull()) { QStringList sl = sel.split(","); foreach (QString f, sl) { if (f.startsWith("node")) { f.remove("node"); mId.type = IFeature::Point; mId.numId = f.toLongLong(); } else if (f.startsWith("way")) { f.remove("way"); mId.type = IFeature::LineString; mId.numId = f.toLongLong(); } else if (f.startsWith("relation")) { f.remove("relation"); mId.type = IFeature::OsmRelation; mId.numId = f.toLongLong(); } F = theDocument->getFeature(mId); if (F) properties()->addSelection(F); } } } else { QMessageBox::critical(this, tr("Incoming Remote control request"), tr("Unknow action url: %1").arg(u.toString())); } } void MainWindow::on_fileOpenAction_triggered() { if (hasUnsavedChanges() && !mayDiscardUnsavedChanges(this)) return; QStringList fileNames = QFileDialog::getOpenFileNames( this, tr("Open files"), "", p->FILTER_OPEN_SUPPORTED); loadFiles(fileNames); } void MainWindow::on_fileUploadAction_triggered() { if (QString(qVersion()) < "4.3.3") { if (QMessageBox::question(this, tr("Old Qt version detected"), tr("Your setup uses Qt %1, which contains various known errors in uploading " "data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not " "recommended).\n" "For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor").arg(qVersion()),QMessageBox::Yes|QMessageBox::No) != QMessageBox::Yes) return; } while (M_PREFS->getOsmUser().isEmpty()) { int ret = QMessageBox::warning(this, tr("Upload OSM"), tr("You don't seem to have specified your\n" "OpenStreetMap username and password.\nDo you want to do this now?"), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { toolsPreferencesAction_triggered(true); } else return; } on_editPropertiesAction_triggered(); syncOSM(M_PREFS->getOsmApiUrl(), M_PREFS->getOsmUser(), M_PREFS->getOsmPassword()); theDocument->history().updateActions(); theDirty->updateList(); invalidateView(); } void MainWindow::on_fileDownloadAction_triggered() { createProgressDialog(); if (downloadOSM(this, theView->viewport(), theDocument)) { on_editPropertiesAction_triggered(); } else QMessageBox::warning(this, tr("Error downloading"), tr("The map could not be downloaded")); deleteProgressDialog(); updateBookmarksMenu(); emit content_changed(); } void MainWindow::on_fileDownloadMoreAction_triggered() { createProgressDialog(); if (!downloadMoreOSM(this, theView->viewport(), theDocument)) { QMessageBox::warning(this, tr("Error downloading"), tr("The map could not be downloaded")); } deleteProgressDialog(); emit content_changed(); } void MainWindow::on_layersOpenstreetbugsAction_triggered() { SpecialLayer* sl = NULL; for (int i=0; i<theDocument->layerSize(); ++i) { if (theDocument->getLayer(i)->classType() == Layer::OsmBugsLayer) { sl = dynamic_cast<SpecialLayer*>(theDocument->getLayer(i)); while (sl->size()) { sl->deleteFeature(sl->get(0)); } } } createProgressDialog(); if (!::downloadOpenstreetbugs(this, theView->viewport(), theDocument, sl)) { QMessageBox::warning(this, tr("Error downloading OpenStreetBugs"), tr("The OpenStreetBugs could not be downloaded")); } deleteProgressDialog(); } void MainWindow::on_layersMapdustAction_triggered() { SpecialLayer* sl = NULL; for (int i=0; i<theDocument->layerSize(); ++i) { if (theDocument->getLayer(i)->classType() == Layer::MapDustLayer) { sl = dynamic_cast<SpecialLayer*>(theDocument->getLayer(i)); while (sl->size()) { sl->deleteFeature(sl->get(0)); } } } createProgressDialog(); if (!::downloadMapdust(this, theView->viewport(), theDocument, sl)) { QMessageBox::warning(this, tr("Error downloading MapDust"), tr("The MapDust bugs could not be downloaded")); } deleteProgressDialog(); } void MainWindow::downloadFeatures(const QList<Feature*>& aDownloadList) { createProgressDialog(); if (!::downloadFeatures(this, aDownloadList, theDocument)) { QMessageBox::warning(this, tr("Error downloading"), tr("The map could not be downloaded")); } deleteProgressDialog(); emit content_changed(); } void MainWindow::on_fileWorkOfflineAction_triggered() { M_PREFS->setOfflineMode(!M_PREFS->getOfflineMode()); updateMenu(); } void MainWindow::on_filePrintAction_triggered() { NativeRenderDialog osmR(theDocument, theView->viewport(), this); osmR.exec(); } void MainWindow::on_filePropertiesAction_triggered() { QDialog dlg(this); Ui::PropertiesDialog Prop; Prop.setupUi(&dlg); QString h; h += theView->toPropertiesHtml(); h += "<br/>"; h += theDocument->toPropertiesHtml(); Prop.textBrowser->setHtml(h); dlg.exec(); } void MainWindow::on_helpAboutAction_triggered() { QDialog dlg(this); Ui::AboutDialog About; About.setupUi(&dlg); dlg.setWindowFlags(dlg.windowFlags() & ~Qt::WindowContextHelpButtonHint); dlg.setWindowFlags(dlg.windowFlags() | Qt::MSWindowsFixedSizeDialogHint); About.Version->setText(About.Version->text().arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(STRINGIFY(SVNREV))); About.QTVersion->setText(About.QTVersion->text().arg(qVersion()).arg(QT_VERSION_STR)); #if QT_VERSION < 0x040700 || defined(FORCE_46) int boostMajVer = BOOST_VERSION / 100000; int boostMinVer = BOOST_VERSION / 100 % 1000; About.BoostVersion->setText(About.BoostVersion->text().arg(QString::number(boostMajVer)+"."+QString::number(boostMinVer))); #else About.BoostVersion->setVisible(false); #endif QString projVer = QString(STRINGIFY(PJ_VERSION)); About.Proj4Version->setText(About.Proj4Version->text().arg(QString("%1.%2.%3").arg(projVer.left(1)).arg(projVer.mid(1, 1)).arg(projVer.right(1)))); About.GdalVersion->setText(About.GdalVersion->text().arg(GDAL_RELEASE_NAME)); QFile ct(":/Utils/CHANGELOG"); ct.open(QIODevice::ReadOnly); QTextStream cl(&ct); About.txtChangelog->setPlainText(cl.readAll()); QPixmap px(":/Utils/Merkaartor_About.png"); About.pxIcon->setPixmap(px); About.lblUrl->setOpenExternalLinks(true); dlg.exec(); } void MainWindow::on_viewZoomAllAction_triggered() { QPair<bool, CoordBox> BBox(theDocument->boundingBox()); if (BBox.first) { BBox.second.resize(1.01); theView->setViewport(BBox.second, theView->rect()); invalidateView(); } } void MainWindow::on_viewZoomInAction_triggered() { theView->zoomIn(); } void MainWindow::on_viewZoomOutAction_triggered() { theView->zoomOut(); } void MainWindow::on_viewZoomWindowAction_triggered() { launchInteraction(new ZoomInteraction(this)); } void MainWindow::on_viewLockZoomAction_triggered() { M_PREFS->setZoomBoris(!M_PREFS->getZoomBoris()); if (M_PREFS->getZoomBoris()) p->renderOptions.options |= RendererOptions::LockZoom; else p->renderOptions.options &= ~RendererOptions::LockZoom; ui->viewLockZoomAction->setChecked(M_PREFS->getZoomBoris()); ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) { theView->projection().setProjectionType(l->projection()); theView->setViewport(theView->viewport(), theView->rect()); } theView->adjustZoomToBoris(); updateProjectionMenu(); invalidateView(); } void MainWindow::on_viewDownloadedAction_triggered() { M_PREFS->setDownloadedVisible(!M_PREFS->getDownloadedVisible()); if (M_PREFS->getDownloadedVisible()) p->renderOptions.options |= RendererOptions::DownloadedVisible; else p->renderOptions.options &= ~RendererOptions::DownloadedVisible; ui->viewDownloadedAction->setChecked(M_PREFS->getDownloadedVisible()); invalidateView(); } void MainWindow::on_viewDirtyAction_triggered() { M_PREFS->setDirtyVisible(!M_PREFS->getDirtyVisible()); if (M_PREFS->getDirtyVisible()) p->renderOptions.options |= RendererOptions::DirtyVisible; else p->renderOptions.options &= ~RendererOptions::DirtyVisible; ui->viewDirtyAction->setChecked(M_PREFS->getDirtyVisible()); invalidateView(); } void MainWindow::on_viewScaleAction_triggered() { M_PREFS->setScaleVisible(!M_PREFS->getScaleVisible()); if (M_PREFS->getScaleVisible()) p->renderOptions.options |= RendererOptions::ScaleVisible; else p->renderOptions.options &= ~RendererOptions::ScaleVisible; ui->viewScaleAction->setChecked(M_PREFS->getScaleVisible()); invalidateView(); } void MainWindow::on_viewPhotosAction_triggered() { M_PREFS->setPhotosVisible(!M_PREFS->getPhotosVisible()); if (M_PREFS->getPhotosVisible()) p->renderOptions.options |= RendererOptions::PhotosVisible; else p->renderOptions.options &= ~RendererOptions::PhotosVisible; ui->viewPhotosAction->setChecked(M_PREFS->getPhotosVisible()); invalidateView(); } void MainWindow::on_viewShowLatLonGridAction_triggered() { M_PREFS->setLatLonGridVisible(!M_PREFS->getLatLonGridVisible()); if (M_PREFS->getLatLonGridVisible()) p->renderOptions.options |= RendererOptions::LatLonGridVisible; else p->renderOptions.options &= ~RendererOptions::LatLonGridVisible; ui->viewShowLatLonGridAction->setChecked(M_PREFS->getLatLonGridVisible()); invalidateView(); } void MainWindow::on_viewStyleBackgroundAction_triggered() { M_PREFS->setBackgroundVisible(!M_PREFS->getBackgroundVisible()); if (M_PREFS->getBackgroundVisible()) p->renderOptions.options |= RendererOptions::BackgroundVisible; else p->renderOptions.options &= ~RendererOptions::BackgroundVisible; ui->viewStyleBackgroundAction->setChecked(M_PREFS->getBackgroundVisible()); invalidateView(); } void MainWindow::on_viewStyleForegroundAction_triggered() { M_PREFS->setForegroundVisible(!M_PREFS->getForegroundVisible()); if (M_PREFS->getForegroundVisible()) p->renderOptions.options |= RendererOptions::ForegroundVisible; else p->renderOptions.options &= ~RendererOptions::ForegroundVisible; ui->viewStyleForegroundAction->setChecked(M_PREFS->getForegroundVisible()); invalidateView(); } void MainWindow::on_viewStyleTouchupAction_triggered() { M_PREFS->setTouchupVisible(!M_PREFS->getTouchupVisible()); if (M_PREFS->getTouchupVisible()) p->renderOptions.options |= RendererOptions::TouchupVisible; else p->renderOptions.options &= ~RendererOptions::TouchupVisible; ui->viewStyleTouchupAction->setChecked(M_PREFS->getTouchupVisible()); invalidateView(); } void MainWindow::on_viewNamesAction_triggered() { M_PREFS->setNamesVisible(!M_PREFS->getNamesVisible()); if (M_PREFS->getNamesVisible()) p->renderOptions.options |= RendererOptions::NamesVisible; else p->renderOptions.options &= ~RendererOptions::NamesVisible; ui->viewNamesAction->setChecked(M_PREFS->getNamesVisible()); invalidateView(); } void MainWindow::on_viewVirtualNodesAction_triggered() { M_PREFS->setVirtualNodesVisible(!M_PREFS->getVirtualNodesVisible()); if (M_PREFS->getVirtualNodesVisible()) p->renderOptions.options |= RendererOptions::VirtualNodesVisible; else p->renderOptions.options &= ~RendererOptions::VirtualNodesVisible; ui->viewVirtualNodesAction->setChecked(M_PREFS->getVirtualNodesVisible()); invalidateView(); } void MainWindow::on_viewTrackPointsAction_triggered() { M_PREFS->setTrackPointsVisible(!M_PREFS->getTrackPointsVisible()); if (M_PREFS->getTrackPointsVisible()) p->renderOptions.options |= RendererOptions::NodesVisible; else p->renderOptions.options &= ~RendererOptions::NodesVisible; ui->viewTrackPointsAction->setChecked(M_PREFS->getTrackPointsVisible()); invalidateView(); } void MainWindow::on_viewTrackSegmentsAction_triggered() { M_PREFS->setTrackSegmentsVisible(!M_PREFS->getTrackSegmentsVisible()); if (M_PREFS->getTrackSegmentsVisible()) p->renderOptions.options |= RendererOptions::TrackSegmentVisible; else p->renderOptions.options &= ~RendererOptions::TrackSegmentVisible; ui->viewTrackSegmentsAction->setChecked(M_PREFS->getTrackSegmentsVisible()); invalidateView(); } void MainWindow::on_viewRelationsAction_triggered() { M_PREFS->setRelationsVisible(!M_PREFS->getRelationsVisible()); if (M_PREFS->getRelationsVisible()) p->renderOptions.options |= RendererOptions::RelationsVisible; else p->renderOptions.options &= ~RendererOptions::RelationsVisible; ui->viewRelationsAction->setChecked(M_PREFS->getRelationsVisible()); invalidateView(); } void MainWindow::on_viewGotoAction_triggered() { GotoDialog* Dlg = new GotoDialog(theView, this); if (Dlg->exec() == QDialog::Accepted) { if (!Dlg->newViewport().isNull() && !Dlg->newViewport().isEmpty()) { theView->setViewport(Dlg->newViewport(), theView->rect()); invalidateView(); } } delete Dlg; } void MainWindow::on_viewArrowsNeverAction_triggered(bool checked) { if (checked) { M_PREFS->setDirectionalArrowsVisible(RendererOptions::ArrowsNever); p->renderOptions.arrowOptions = RendererOptions::ArrowsNever; invalidateView(); } } void MainWindow::on_viewArrowsOnewayAction_triggered(bool checked) { if (checked) { M_PREFS->setDirectionalArrowsVisible(RendererOptions::ArrowsOneway); p->renderOptions.arrowOptions = RendererOptions::ArrowsOneway; invalidateView(); } } void MainWindow::on_viewArrowsAlwaysAction_triggered(bool checked) { if (checked) { M_PREFS->setDirectionalArrowsVisible(RendererOptions::ArrowsAlways); p->renderOptions.arrowOptions = RendererOptions::ArrowsAlways; invalidateView(); } } void MainWindow::on_fileNewAction_triggered() { launchInteraction(0); p->theProperties->setSelection(0); if (theDocument) saveTemplateDocument(TEMPLATE_DOCUMENT); if (!theDocument || !hasUnsavedChanges() || mayDiscardUnsavedChanges(this)) { p->theFeats->invalidate(); SAFE_DELETE(theDocument); theView->setDocument(NULL); p->latSaveDirtyLevel = 0; g_feat_rndId = 0; if (M_PREFS->getHasAutoLoadDocument()) loadTemplateDocument(M_PREFS->getAutoLoadDocumentFilename()); else if (!g_Merk_IgnoreStartupTemplate) loadTemplateDocument(TEMPLATE_DOCUMENT); if (!theDocument) { theDocument = new Document(theLayers); theDocument->addDefaultLayers(); theView->projection().setProjectionType(M_PREFS->getProjectionType()); theView->setViewport(WORLD_COORDBOX, theView->rect()); } theView->setDocument(theDocument); theDocument->history().setActions(ui->editUndoAction, ui->editRedoAction, ui->fileUploadAction); connect (theDocument, SIGNAL(historyChanged()), theDirty, SLOT(updateList())); connect (theDocument, SIGNAL(historyChanged()), this, SIGNAL(content_changed())); connect(theDocument, SIGNAL(imageRequested(ImageMapLayer*)), this, SLOT(onImagerequested(ImageMapLayer*)), Qt::QueuedConnection); connect(theDocument, SIGNAL(imageReceived(ImageMapLayer*)), this, SLOT(onImagereceived(ImageMapLayer*)), Qt::QueuedConnection); connect(theDocument, SIGNAL(loadingFinished(ImageMapLayer*)), this, SLOT(onLoadingfinished(ImageMapLayer*)), Qt::QueuedConnection); theDirty->updateList(); fileName = ""; setWindowTitle(QString("%1 - %2").arg(theDocument->title()).arg(p->title)); updateProjectionMenu(); emit content_changed(); on_editPropertiesAction_triggered(); adjustLayers(true); } #ifdef GEOIMAGE if (theGeoImage) theGeoImage->clear(); #endif } void MainWindow::on_createDoubleWayAction_triggered() { launchInteraction(new CreateDoubleWayInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createRoundaboutAction_triggered() { launchInteraction(new CreateRoundaboutInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createPolygonAction_triggered() { QList< QPair <QString, QString> > tags; int Sides = QInputDialog::getInteger(this, MainWindow::tr("Create Polygon"), MainWindow::tr("Specify the number of sides"), M_PREFS->getPolygonSides(), 3); M_PREFS->setPolygonSides(Sides); launchInteraction(new CreatePolygonInteraction(this, Sides, tags)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createRectangleAction_triggered() { QList< QPair <QString, QString> > tags; tags << qMakePair(QString("building"), QString("yes")); launchInteraction(new CreatePolygonInteraction(this, 4, tags)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createRoadAction_triggered() { Node * firstPoint = NULL; if (p->theProperties->selectionSize() == 1) { Feature * feature = p->theProperties->selection(0); firstPoint = dynamic_cast<Node*>(feature); } launchInteraction(new CreateSingleWayInteraction(this, firstPoint, false)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createCurvedRoadAction_triggered() { launchInteraction(new CreateSingleWayInteraction(this, NULL, true)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createAreaAction_triggered() { launchInteraction(new CreateAreaInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_createNodeAction_triggered() { launchInteraction(new CreateNodeInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_roadJoinAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Join Roads"), NULL); joinRoads(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); emit content_changed(); invalidateView(); } } void MainWindow::on_roadSplitAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Split Roads"), NULL); splitRoads(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); emit content_changed(); invalidateView(); } } void MainWindow::on_roadBreakAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Break Roads"), NULL); breakRoads(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); emit content_changed(); invalidateView(); } } void MainWindow::on_roadSimplifyAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Simplify Roads"), NULL); qreal threshold = 3.0; // in metres; TODO: allow user-specified threshold simplifyRoads(theDocument, theList, p->theProperties, threshold); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); emit content_changed(); invalidateView(); } } void MainWindow::on_featureSelectChildrenAction_triggered() { QList<Feature*> theFeatures; foreach (Feature* F, p->theProperties->selection()) { theFeatures << F; for (int i=0; i<F->size(); ++i) theFeatures << F->get(i); } p->theProperties->setSelection(theFeatures); p->theProperties->checkMenuStatus(); invalidateView(); } void MainWindow::on_featureSelectParentsAction_triggered() { QList<Feature*> theFeatures; foreach (Feature* F, p->theProperties->selection()) { for (int i=0; i<F->sizeParents(); ++i) { Feature* Feat = STATIC_CAST_FEATURE(F->getParent(i)); theFeatures << Feat; } } p->theProperties->setSelection(theFeatures); p->theProperties->checkMenuStatus(); invalidateView(); } void MainWindow::on_featureDownloadMissingChildrenAction_triggered() { #ifndef _MOBILE QList<Feature*> toResolve; foreach (Feature* F, p->theProperties->selection()) { if (F->notEverythingDownloaded()) { toResolve.push_back(F); } } downloadFeatures(toResolve); #endif } void MainWindow::on_featureDeleteAction_triggered() { Feature* F = p->theProperties->selection(0); if (!F) return; while (F->sizeParents()) { Feature* p = (Feature*)(F->getParent(0)); if (p) p->remove(F); } F->layer()->deleteFeature(F); p->theProperties->setSelection(0); emit content_changed(); invalidateView(); } void MainWindow::on_featureCommitAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Force Feature upload"), NULL); commitFeatures(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_featureOsbClose_triggered() { Feature* bugNd = p->theProperties->selection(0); QUrl osbUrl; osbUrl.setUrl(M_PREFS->getOpenStreetBugsUrl()); osbUrl.setPath(osbUrl.path() + "closePOIexec"); osbUrl.addQueryItem("id", Feature::stripToOSMId(bugNd->id())); qDebug() << osbUrl.toString(); QString rply; bool ret = Utils::sendBlockingNetRequest(osbUrl, rply); if (!ret) { QMessageBox::warning(0, tr("Network timeout"), tr("Cannot contact OpenStreetBugs."), QMessageBox::Ok); return; } qDebug() << "openStreetBugs reply: " << rply; if (rply.contains("ok")) { bugNd->layer()->deleteFeature(bugNd); p->theProperties->setSelection(0); invalidateView(); } else QMessageBox::warning(this, tr("Error closing bug"), tr("Cannot delete bug. Server message is:\n%1").arg(rply), QMessageBox::Ok); return; } void MainWindow::on_roadCreateJunctionAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Create Junction"), NULL); int n = createJunction(theDocument, theList, p->theProperties, false); if (n > 1) { MDiscardableMessage dlg(view(), MainWindow::tr("Multiple intersection."), MainWindow::tr("Those roads have multiple intersections.\nDo you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?")); if (dlg.check() != QDialog::Accepted) return; } createJunction(theDocument, theList, p->theProperties, true); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_roadAddStreetNumbersAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Add Street Numbers"), NULL); addStreetNumbers(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_roadSubdivideAction_triggered() { #if QT_VERSION < 0x040500 { int divisions = QInputDialog::getInteger(this, MainWindow::tr("Number of segments to divide into"), MainWindow::tr("Specify the number of segments"), 2, 99); #else QInputDialog *Dlg = new QInputDialog(this); Dlg->setInputMode(QInputDialog::IntInput); Dlg->setIntRange(2, 99); Dlg->setLabelText(tr("Number of segments to divide into")); if (Dlg->exec() == QDialog::Accepted) { int divisions = Dlg->intValue(); #endif CommandList* theList = new CommandList(MainWindow::tr("Subdivide road into %1").arg(divisions), NULL); subdivideRoad(theDocument, theList, p->theProperties, divisions); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } #if QT_VERSION > 0x040499 delete Dlg; #endif } void MainWindow::on_roadAxisAlignAction_triggered() { const unsigned int max_axes = 16; bool ok; unsigned int axes; axes = axisAlignGuessAxes(p->theProperties, view()->projection(), max_axes); if (!axes) axes = 4; axes = QInputDialog::getInteger(this, tr("Axis Align"), tr("Specify the number of regular axes to align edges on (e.g. 4 for rectangular)"), axes, 3, max_axes, 1, &ok); if (!ok) return; // Create a command description const QString special_names[] = { tr("triangular"), tr("rectangular"), tr("pentagonal"), tr("hexagonal"), tr("heptagonal"), tr("octagonal"), }; QString command_name; if (axes < 3 + (sizeof(special_names)/sizeof(special_names[0]))) command_name = tr("Align onto %1 axes").arg(special_names[axes-3]); else command_name = tr("Align onto %1 regular axes").arg(axes); // Do the manipulation CommandList* theList = new CommandList(command_name, NULL); AxisAlignResult result = axisAlignRoads(theDocument, theList, p->theProperties, view()->projection(), axes); if (result != AxisAlignSuccess || theList->empty()) { if (result == AxisAlignSharpAngles) QMessageBox::critical(this, tr("Unable to align to axes"), tr("Align to axes operation failed. Please adjust any sharp corners and try again.")); else if (result == AxisAlignFail) QMessageBox::critical(this, tr("Unable to align to axes"), tr("Align to axes operation failed and did not converge on a solution.")); delete theList; } else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_roadExtrudeAction_triggered() { launchInteraction(new ExtrudeInteraction(this)); theInfo->setHtml(theView->interaction()->toHtml()); } void MainWindow::on_roadBingExtractAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Bing Extract"), NULL); bingExtract(theDocument, theList, p->theProperties, theView->viewport()); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); // theView->properties()->setSelection(F); invalidateView(); } } void MainWindow::on_nodeAlignAction_triggered() { //MapFeature* F = theView->properties()->selection(0); CommandList* theList = new CommandList(MainWindow::tr("Align Nodes"), NULL); alignNodes(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); // theView->properties()->setSelection(F); invalidateView(); } } void MainWindow::on_nodeSpreadAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Spread Nodes"), NULL); spreadNodes(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_nodeMergeAction_triggered() { Feature* F = p->theProperties->selection(0); CommandList* theList = new CommandList(MainWindow::tr("Merge Nodes into %1").arg(F->id().numId), F); mergeNodes(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); p->theProperties->setSelection(F); invalidateView(); } } void MainWindow::on_nodeDetachAction_triggered() { Feature* F = p->theProperties->selection(0); CommandList* theList = new CommandList(MainWindow::tr("Detach Node %1").arg(F->id().numId), F); detachNode(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); p->theProperties->setSelection(F); invalidateView(); } } void MainWindow::on_relationAddMemberAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Add member to relation"), NULL); addRelationMember(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_relationRemoveMemberAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Remove member from relation"), NULL); removeRelationMember(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_relationAddToMultipolygonAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Add to Multipolygon"), NULL); addToMultipolygon(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_areaJoinAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Join areas"), NULL); joinAreas(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_areaSplitAction_triggered() { CommandList* theList = new CommandList(MainWindow::tr("Split area"), NULL); splitArea(theDocument, theList, p->theProperties); if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } void MainWindow::on_areaTerraceAction_triggered() { TerraceDialog* Dlg = new TerraceDialog(this); if (Dlg->exec() == QDialog::Accepted) { int divisions = Dlg->numHouses(); CommandList* theList = new CommandList(MainWindow::tr("Terrace area into %1").arg(divisions), NULL); terraceArea(theDocument, theList, p->theProperties, divisions); // Add the house numbers to the houses in the selection if (Dlg->hasHouseNumbers()) { QStringList numbers = Dlg->houseNumbers(); QList<Feature*> areas = p->theProperties->selection(); int i = 0; foreach (Feature* area, areas) { if (i >= numbers.size()) break; if (!numbers[i].isEmpty()) theList->add(new SetTagCommand(area, "addr:housenumber", numbers[i])); ++i; } } if (theList->empty()) delete theList; else { theDocument->addHistory(theList); invalidateView(); } } delete Dlg; } void MainWindow::on_createRelationAction_triggered() { Relation* R = g_backend.allocRelation(document()->getDirtyOrOriginLayer()); CommandList* theList = new CommandList(MainWindow::tr("Create Relation %1").arg(R->description()), R); theList->add( new AddFeatureCommand(document()->getDirtyOrOriginLayer(), R, true)); for (int i = 0; i < p->theProperties->selectionSize(); ++i) theList->add(new RelationAddFeatureCommand(R, "", p->theProperties->selection(i))); theDocument->addHistory(theList); p->theProperties->setSelection(R); invalidateView(); } void MainWindow::on_editMapStyleAction_triggered() { PaintStyleEditor* dlg = new PaintStyleEditor(this, M_STYLE->getGlobalPainter(), M_STYLE->getPainters()); connect(dlg, SIGNAL(stylesApplied(GlobalPainter*, QList<Painter>* )), this, SLOT(applyPainters(GlobalPainter*, QList<Painter>* ))); GlobalPainter saveGlobalPainter = M_STYLE->getGlobalPainter(); QList<Painter> savePainters = M_STYLE->getPainters(); if (dlg->exec() == QDialog::Accepted) { M_STYLE->setGlobalPainter(dlg->theGlobalPainter); M_STYLE->setPainters(dlg->thePainters); } else { M_STYLE->setGlobalPainter(saveGlobalPainter); M_STYLE->setPainters(savePainters); } theDocument->setPainters(dlg->thePainters); for (VisibleFeatureIterator i(theDocument); !i.isEnd(); ++i) i.get()->invalidatePainter(); invalidateView(); delete dlg; } void MainWindow::applyStyles(QString NewStyle) { if (NewStyle != M_PREFS->getDefaultStyle()) { if (M_STYLE->isDirty() && !mayDiscardStyleChanges(this)) { on_mapStyleSaveAction_triggered(); } M_PREFS->setDefaultStyle(NewStyle); M_STYLE->loadPainters(M_PREFS->getDefaultStyle()); document()->setPainters(M_STYLE->getPainters()); for (FeatureIterator it(document()); !it.isEnd(); ++it) { it.get()->invalidatePainter(); } invalidateView(false); } } void MainWindow::applyPainters(GlobalPainter* theGlobalPainter, QList<Painter>* thePainters) { M_STYLE->setGlobalPainter(*theGlobalPainter); M_STYLE->setPainters(*thePainters); theDocument->setPainters(*thePainters); for (VisibleFeatureIterator i(theDocument); !i.isEnd(); ++i) i.get()->invalidatePainter(); invalidateView(false); } //MapLayer* MainWindow::activeLayer() //{ //// return theLayers->activeLayer(); // //The "active" layer is always the dirty layer // return theDocument->getDirtyLayer(); //} MapView* MainWindow::view() { return theView; } void MainWindow::on_mapStyleSaveAction_triggered() { QString f = M_STYLE->getFilename(); if (f.isEmpty() || f.startsWith(":") || f.startsWith("qrc:")) { on_mapStyleSaveAsAction_triggered(); return; } M_STYLE->savePainters(f); } void MainWindow::on_mapStyleSaveAsAction_triggered() { QString f; QFileDialog dlg(this, tr("Save map style"), M_PREFS->getCustomStyle(), tr("Merkaartor map style (*.mas)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("mas"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) f = dlg.selectedFiles()[0]; } // f = QFileDialog::getSaveFileName(this, tr("Save map style"), M_PREFS->getCustomStyle(), tr("Merkaartor map style (*.mas)")); if (!f.isNull()) { M_STYLE->savePainters(f); } updateStyleMenu(); } void MainWindow::on_mapStyleLoadAction_triggered() { if (M_STYLE->isDirty() && !mayDiscardStyleChanges(this)) { on_mapStyleSaveAction_triggered(); } QString f = QFileDialog::getOpenFileName(this, tr("Load map style"), QString(), tr("Supported formats")+" (*.mas *.css)\n" \ + tr("Merkaartor map style (*.mas)\n") + tr("MapCSS stylesheet (*.css)")); if (!f.isNull()) { if (f.endsWith("css")) MapCSSPaintstyle::instance()->loadPainters(f); else { M_STYLE->loadPainters(f); document()->setPainters(M_STYLE->getPainters()); for (VisibleFeatureIterator i(theDocument); !i.isEnd(); ++i) i.get()->invalidatePainter(); invalidateView(); } } } void MainWindow::on_toolsWMSServersAction_triggered() { WMSPreferencesDialog* WMSPref; WMSPref = new WMSPreferencesDialog(); if (WMSPref->exec() == QDialog::Accepted) { for (LayerIterator<ImageMapLayer*> ImgIt(theDocument); !ImgIt.isEnd(); ++ImgIt) ImgIt.get()->updateWidget(); adjustLayers(true); } } void MainWindow::on_toolsTMSServersAction_triggered() { TMSPreferencesDialog* TMSPref; TMSPref = new TMSPreferencesDialog(); if (TMSPref->exec() == QDialog::Accepted) { for (LayerIterator<ImageMapLayer*> ImgIt(theDocument); !ImgIt.isEnd(); ++ImgIt) ImgIt.get()->updateWidget(); adjustLayers(true); } } void MainWindow::on_toolsProjectionsAction_triggered() { ProjPreferencesDialog* prefDlg = new ProjPreferencesDialog(); if (prefDlg->exec() == QDialog::Accepted) { updateProjectionMenu(); } } void MainWindow::on_toolsFiltersAction_triggered() { FilterPreferencesDialog* prefDlg = new FilterPreferencesDialog(); prefDlg->exec(); // if (prefDlg->exec() == QDialog::Accepted) { // updateFilterMenu(); // } } void MainWindow::on_toolsResetDiscardableAction_triggered() { QSettings* Sets = M_PREFS->getQSettings(); Sets->remove("DiscardableDialogs"); } void MainWindow::on_toolsRebuildHistoryAction_triggered() { QMessageBox::StandardButton ret = QMessageBox::warning(this, tr("Rebuild History"), tr("An attempt will be made to rebuild the history.\nNo guarantee, though, and no Undo.\nAre you sure you want to try this? ") , QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); if (ret == QMessageBox::Yes) { theDocument->rebuildHistory(); theDirty->updateList(); } } void MainWindow::on_toolsShortcutsAction_triggered() { QList<QAction*> theActions; foreach(QAction* a, ui->menuFile->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuEdit->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuView->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menu_Show->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuShow_directional_Arrows->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuGps->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuLayers->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuCreate->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menu_Feature->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuOpenStreetBugs->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menu_Node->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuRoad->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuRelation->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuTools->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuWindow->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } foreach(QAction* a, ui->menuHelp->actions()) { if (!a->isSeparator() && !a->menu()) theActions << a; } ActionsDialog dlg(theActions, this); dlg.exec(); } void MainWindow::toolsPreferencesAction_triggered(bool focusData) { PreferencesDialog* Pref = new PreferencesDialog(this); if (focusData) Pref->tabPref->setCurrentWidget(Pref->tabData); else Pref->tabPref->setCurrentIndex(p->lastPrefTabIndex); connect (Pref, SIGNAL(preferencesChanged(PreferencesDialog*)), this, SLOT(preferencesChanged(PreferencesDialog*))); Pref->exec(); p->lastPrefTabIndex = Pref->tabPref->currentIndex(); } void MainWindow::preferencesChanged(PreferencesDialog* prefs) { QString qVer = QString(qVersion()).replace(".", ""); int iQVer = qVer.toInt(); if (iQVer < 451) { QApplication::setStyle(QStyleFactory::create("skulpture")); } else { if (!M_PREFS->getMerkaartorStyle()) { if (QApplication::style()->objectName() != p->defStyle) QApplication::setStyle(p->defStyle); } else { QApplication::setStyle(QStyleFactory::create(M_PREFS->getMerkaartorStyleString())); } } ui->mnuProjections->menuAction()->setEnabled(true); if (M_PREFS->getZoomBoris()) { ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) { ui->mnuProjections->menuAction()->setEnabled(false); view()->projection().setProjectionType(l->projection()); view()->zoom(0.99, view()->rect().center()); } } if (M_PREFS->getLocalServer()) { if (!p->theListeningServer) { p->theListeningServer = new QTcpServer(this); connect(p->theListeningServer, SIGNAL(newConnection()), this, SLOT(incomingLocalConnection())); if (!p->theListeningServer->listen(QHostAddress::LocalHost, 8111)) qDebug() << "Remote control: Unable to listen on 8111"; } } else { if (p->theListeningServer) { delete p->theListeningServer; p->theListeningServer = NULL; } } applyStyles(prefs->cbStyles->itemData(prefs->cbStyles->currentIndex()).toString()); updateStyleMenu(); updateMenu(); launchInteraction(new EditInteraction(this)); invalidateView(false); } void MainWindow::on_fileSaveAsAction_triggered() { QFileDialog dlg(this, tr("Save Merkaartor document"), QString("%1/%2.mdc").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor documents Files (*.mdc)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("mdc"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fileName = dlg.selectedFiles()[0]; } // fileName = QFileDialog::getSaveFileName(this, // tr("Save Merkaartor document"), QString("%1/%2.mdc").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor documents Files (*.mdc)")); if (!fileName.isEmpty()) { saveDocument(fileName); M_PREFS->addRecentOpen(fileName); updateRecentOpenMenu(); } } void MainWindow::on_fileSaveAsTemplateAction_triggered() { QString tfileName; QFileDialog dlg(this, tr("Save Merkaartor template document"), QString("%1/%2.mdc").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor documents Files (*.mdc)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("mdc"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) tfileName = dlg.selectedFiles()[0]; } // QString tfileName = QFileDialog::getSaveFileName(this, // tr("Save Merkaartor template document"), QString("%1/%2.mdc").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor documents Files (*.mdc)")); if (!tfileName.isEmpty()) { saveTemplateDocument(tfileName); } } void MainWindow::on_fileSaveAction_triggered() { if (fileName != "") { saveDocument(fileName); } else { on_fileSaveAsAction_triggered(); } } void MainWindow::doSaveDocument(QFile* file, bool asTemplate) { #ifndef Q_OS_SYMBIAN QApplication::setOverrideCursor(Qt::BusyCursor); #endif QXmlStreamWriter stream(file); stream.setAutoFormatting(true); stream.setAutoFormattingIndent(2); stream.writeStartDocument(); stream.writeStartElement("MerkaartorDocument"); stream.writeAttribute("version", "1.2"); stream.writeAttribute("creator", QString("%1").arg(p->title)); QProgressDialog progress("Saving document...", "Cancel", 0, 0); progress.setWindowModality(Qt::WindowModal); theDocument->toXML(stream, asTemplate, &progress); theView->toXML(stream); stream.writeEndDocument(); progress.setValue(progress.maximum()); theDocument->setTitle(QFileInfo(fileName).fileName()); setWindowTitle(QString("%1 - %2").arg(theDocument->title()).arg(p->title)); #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif } void MainWindow::saveDocument(const QString& fn) { QFile file(fn); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Unable to open save file"), tr("%1 could not be opened for writing.").arg(fn)); on_fileSaveAsAction_triggered(); return; } doSaveDocument(&file); file.close(); p->latSaveDirtyLevel = theDocument->getDirtySize(); } void MainWindow::saveTemplateDocument(const QString& fn) { QFile file(fn); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Unable to open save template document"), tr("%1 could not be opened for writing.").arg(fn)); return; } doSaveDocument(&file, true); file.close(); } Document* MainWindow::doLoadDocument(QFile* file) { QProgressDialog progress("Loading document...", "Cancel", 0, 0, this); progress.setWindowModality(Qt::WindowModal); QXmlStreamReader stream(file); while (stream.readNext() && stream.tokenType() != QXmlStreamReader::Invalid && stream.tokenType() != QXmlStreamReader::StartElement) ; if (stream.tokenType() != QXmlStreamReader::StartElement || stream.name() != "MerkaartorDocument") { QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid Merkaartor document.").arg(file->fileName())); return NULL; } double version = stream.attributes().value("version").toString().toDouble(); progress.setMaximum(file->size()); Document* newDoc = NULL; if (version < 2.) { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "MapDocument") { newDoc = Document::fromXML(QFileInfo(*file).fileName(), stream, version, theLayers, &progress); if (progress.wasCanceled()) break; } else if (stream.name() == "MapView") { view()->fromXML(stream); } else if (!stream.isWhitespace()) { qDebug() << "Main: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } if (progress.wasCanceled()) break; stream.readNext(); } } progress.reset(); updateProjectionMenu(); #ifdef GEOIMAGE if (theGeoImage) theGeoImage->clear(); #endif return newDoc; } void MainWindow::loadDocument(QString fn) { QFile file(fn); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::critical(this, tr("Invalid file"), tr("%1 could not be opened.").arg(fn)); return; } Document* newDoc = doLoadDocument(&file); file.close(); if (newDoc) { p->theProperties->setSelection(0); p->theFeats->invalidate(); delete theDocument; theDocument = newDoc; theView->setDocument(theDocument); on_editPropertiesAction_triggered(); theDocument->history().setActions(ui->editUndoAction, ui->editRedoAction, ui->fileUploadAction); connect (theDocument, SIGNAL(historyChanged()), theDirty, SLOT(updateList())); connect (theDocument, SIGNAL(historyChanged()), this, SIGNAL(content_changed())); connect(theDocument, SIGNAL(imageRequested(ImageMapLayer*)), this, SLOT(onImagerequested(ImageMapLayer*)), Qt::QueuedConnection); connect(theDocument, SIGNAL(imageReceived(ImageMapLayer*)), this, SLOT(onImagereceived(ImageMapLayer*)), Qt::QueuedConnection); connect(theDocument, SIGNAL(loadingFinished(ImageMapLayer*)), this, SLOT(onLoadingfinished(ImageMapLayer*)), Qt::QueuedConnection); theDirty->updateList(); fileName = fn; setWindowTitle(QString("%1 - %2").arg(theDocument->title()).arg(p->title)); p->latSaveDirtyLevel = theDocument->getDirtySize(); } M_PREFS->addRecentOpen(fn); updateRecentOpenMenu(); emit content_changed(); } void MainWindow::loadTemplateDocument(QString fn) { Document* newDoc = NULL; QFile file(fn); if (file.open(QIODevice::ReadOnly)) { newDoc = doLoadDocument(&file); file.close(); } if (newDoc) { theDocument = newDoc; theDocument->setTitle(tr("untitled")); } } void MainWindow::on_exportOSMAction_triggered() { QList<Feature*> theFeatures; createProgressDialog(); if (!selectExportedFeatures(theFeatures)) return; QString fileName; QFileDialog dlg(this, tr("Export OSM"), QString("%1/%2.osm").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("OSM Files (*.osm)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("osm"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fileName = dlg.selectedFiles()[0]; } // QString fileName = QFileDialog::getSaveFileName(this, // tr("Export OSM"), M_PREFS->getworkingdir() + "/untitled.osm", tr("OSM Files (*.osm)")); if (fileName != "") { QFile file(fileName); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return; theDocument->exportOSM(this, &file, theFeatures); file.close(); } deleteProgressDialog(); } void MainWindow::on_exportOSCAction_triggered() { #ifndef FRISIUS_BUILD QString fileName; QFileDialog dlg(this, tr("Export osmChange"), QString("%1/%2.osc").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("osmChange Files (*.osc)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("osc"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fileName = dlg.selectedFiles()[0]; } // QString fileName = QFileDialog::getSaveFileName(this, // tr("Export osmChange"), M_PREFS->getworkingdir() + "/untitled.osc", tr("osmChange Files (*.osc)")); if (fileName != "") { #ifndef Q_OS_SYMBIAN QApplication::setOverrideCursor(Qt::BusyCursor); #endif ImportExportOSC osc(document()); if (osc.saveFile(fileName)) { osc.export_(); } #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif } #endif } void MainWindow::on_exportGPXAction_triggered() { QList<Feature*> theFeatures; createProgressDialog(); if (!selectExportedFeatures(theFeatures)) return; QString fileName; QFileDialog dlg(this, tr("Export GPX"), QString("%1/%2.gpx").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("GPX Files (*.gpx)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("gpx"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fileName = dlg.selectedFiles()[0]; } // QString fileName = QFileDialog::getSaveFileName(this, // tr("Export GPX"), M_PREFS->getworkingdir() + "/untitled.gpx", tr("GPX Files (*.gpx)")); if (fileName != "") { #ifndef Q_OS_SYMBIAN QApplication::setOverrideCursor(Qt::BusyCursor); #endif ExportGPX gpx(document()); if (gpx.saveFile(fileName)) { gpx.export_(theFeatures); } #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif } deleteProgressDialog(); } void MainWindow::on_exportGDALAction_triggered() { QList<Feature*> theFeatures; createProgressDialog(); if (!selectExportedFeatures(theFeatures)) return; #ifndef Q_OS_SYMBIAN QApplication::setOverrideCursor(Qt::BusyCursor); #endif ImportExportGdal gdal(document()); gdal.export_(theFeatures); #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif deleteProgressDialog(); } void MainWindow::on_exportKMLAction_triggered() { QList<Feature*> theFeatures; createProgressDialog(); if (!selectExportedFeatures(theFeatures)) return; QString fileName; QFileDialog dlg(this, tr("Export KML"), QString("%1/%2.kml").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("KML Files (*.kml)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("kml"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fileName = dlg.selectedFiles()[0]; } // QString fileName = QFileDialog::getSaveFileName(this, // tr("Export KML"), M_PREFS->getworkingdir() + "/untitled.kml", tr("KML Files (*.kml)")); if (fileName != "") { #ifndef Q_OS_SYMBIAN QApplication::setOverrideCursor(Qt::BusyCursor); #endif ImportExportKML kml(document()); if (kml.saveFile(fileName)) { kml.export_(theFeatures); } #ifndef Q_OS_SYMBIAN QApplication::restoreOverrideCursor(); #endif } deleteProgressDialog(); } bool MainWindow::selectExportedFeatures(QList<Feature*>& theFeatures) { QDialog dlg(this); Ui::ExportDialog dlgExport; dlgExport.setupUi(&dlg); switch(M_PREFS->getExportType()) { case Export_All: dlgExport.rbAll->setChecked(true); break; case Export_Viewport: dlgExport.rbViewport->setChecked(true); break; case Export_Selected: dlgExport.rbSelected->setChecked(true); break; default: return false; } if (dlg.exec()) { if (dlgExport.rbAll->isChecked()) { for (VisibleFeatureIterator i(document()); !i.isEnd(); ++i) { if (i.get()->notEverythingDownloaded()) continue; theFeatures.append(i.get()); } M_PREFS->setExportType(Export_All); return true; } else if (dlgExport.rbViewport->isChecked()) { CoordBox aCoordBox = view()->viewport(); theFeatures.clear(); for (VisibleFeatureIterator i(document()); !i.isEnd(); ++i) { if (i.get()->notEverythingDownloaded()) continue; if (Node* P = dynamic_cast<Node*>(i.get())) { if (aCoordBox.contains(P->position())) { theFeatures.append(P); } } else if (Way* G = dynamic_cast<Way*>(i.get())) { if (aCoordBox.intersects(G->boundingBox())) { for (int j=0; j < G->size(); j++) { if (Node* P = dynamic_cast<Node*>(G->get(j))) if (!aCoordBox.contains(P->position())) theFeatures.append(P); } theFeatures.append(G); } } else //FIXME Not working for relation (not made of point?) if (Relation* G = dynamic_cast<Relation*>(i.get())) { if (aCoordBox.intersects(G->boundingBox())) { for (int j=0; j < G->size(); j++) { if (Way* R = dynamic_cast<Way*>(G->get(j))) { if (!aCoordBox.contains(R->boundingBox())) { for (int k=0; k < R->size(); k++) { if (Node* P = dynamic_cast<Node*>(R->get(k))) if (!aCoordBox.contains(P->position())) theFeatures.append(P); } theFeatures.append(R); } } } theFeatures.append(G); } } } M_PREFS->setExportType(Export_Viewport); } else if (dlgExport.rbSelected->isChecked()) { theFeatures = p->theProperties->selection(); M_PREFS->setExportType(Export_Selected); } QProgressDialog* dlg = getProgressDialog(); if (dlg) dlg->setWindowTitle(tr("Feature extraction")); QProgressBar* Bar = getProgressBar(); if (Bar) { Bar->setTextVisible(false); Bar->setMaximum(theFeatures.size()); } QLabel* Lbl = getProgressLabel(); if (Lbl) Lbl->setText(tr("Extracting features...")); if (dlg) dlg->show(); theFeatures = document()->exportCoreOSM(theFeatures, false, dlg); return true; } return false; } void MainWindow::on_editSelectAction_triggered() { SelectionDialog* Sel = new SelectionDialog(this); if (Sel->exec() == QDialog::Accepted) { QString out; int idx = 0; QString in = Sel->edTagQuery->text(); QList<TagSelector*> terms; while (idx < in.length()) { TagSelector* t = TagSelector::parse(in, idx); if (!t) break; terms.append(t); } if (terms.count()) { out += terms[terms.count()-1]->asExpression(true); for (int i=terms.count()-2; i>=0; --i) { out += " and parent("; out += terms[i]->asExpression(true); out += ") "; } } else return; qDebug() << out; TagSelector* tsel = TagSelector::parse(out); if (!tsel) return; qDebug() << tsel->asExpression(false); int selMaxResult = Sel->sbMaxResult->value(); QList <Feature *> selection; int added = 0; for (VisibleFeatureIterator i(theDocument); !i.isEnd() && (!selMaxResult || added < selMaxResult); ++i) { Feature* F = i.get(); if (tsel->matches(F, theView->pixelPerM())) { selection.push_back(F); ++added; } } p->theProperties->setMultiSelection(selection); p->theProperties->checkMenuStatus(); } } void MainWindow::closeEvent(QCloseEvent * event) { if (hasUnsavedChanges() && !mayDiscardUnsavedChanges(this)) { event->ignore(); return; } if (M_STYLE->isDirty() && !mayDiscardStyleChanges(this)) { on_mapStyleSaveAction_triggered(); } M_PREFS->saveMainWindowState( this ); // M_PREFS->setInitialPosition(theView); M_PREFS->setworkingdir(QDir::currentPath()); saveTemplateDocument(TEMPLATE_DOCUMENT); M_PREFS->save(); QMainWindow::closeEvent(event); } QMenu *MainWindow::createPopupMenu() { QMenu* mnu = QMainWindow::createPopupMenu(); mnu->addSeparator(); QAction* toolbarstyle = new QAction(tr("Hide tool buttons labels"), mnu); toolbarstyle->setCheckable(true); toolbarstyle->setChecked(M_PREFS->getHideToolbarLabels()); connect(toolbarstyle, SIGNAL(triggered()), SLOT(toggleButtonStyle())); mnu->addAction(toolbarstyle); return mnu; } void MainWindow::updateBookmarksMenu() { for(int i=ui->menuBookmarks->actions().count()-1; i > 2 ; i--) { ui->menuBookmarks->removeAction(ui->menuBookmarks->actions()[3]); } BookmarkListIterator it(*(M_PREFS->getBookmarks())); while (it.hasNext()) { it.next(); if (it.value().deleted == false) { QAction* a = new QAction(it.key(), ui->menuBookmarks); ui->menuBookmarks->addAction(a); } } } void MainWindow::updateRecentOpenMenu() { for(int i=ui->menuRecentOpen->actions().count()-1; i >= 0; i--) { ui->menuRecentOpen->removeAction(ui->menuRecentOpen->actions()[0]); } if (!M_PREFS->getRecentOpen().size()) { ui->menuRecentOpen->setEnabled(false); return; } ui->menuRecentOpen->setEnabled(true); QStringList RecentOpen = M_PREFS->getRecentOpen(); for (int i=0; i<RecentOpen.size(); i++) { QAction* a = new QAction(RecentOpen[i], ui->menuRecentOpen); ui->menuRecentOpen->addAction(a); } } void MainWindow::updateRecentImportMenu() { for(int i=ui->menuRecentImport->actions().count()-1; i >= 0; i--) { ui->menuRecentImport->removeAction(ui->menuRecentImport->actions()[0]); } if (!M_PREFS->getRecentImport().size()) { ui->menuRecentImport->setEnabled(false); return; } ui->menuRecentImport->setEnabled(true); QStringList RecentImport = M_PREFS->getRecentImport(); for (int i=0; i<RecentImport.size(); i++) { QAction* a = new QAction(RecentImport[i], ui->menuRecentImport); ui->menuRecentImport->addAction(a); } } void MainWindow::updateProjectionMenu() { #ifndef _MOBILE SAFE_DELETE(p->projActgrp) p->projActgrp = new QActionGroup(this); bool projFound = false; foreach (ProjectionItem it, *M_PREFS->getProjectionsList()->getProjections()) { if (it.deleted) continue; QAction* a = new QAction(it.name, p->projActgrp); a->setCheckable (true); if (it.name.contains(theView->projection().getProjectionType(), Qt::CaseInsensitive)) { a->setChecked(true); projFound = true; } ui->mnuProjections->addAction(a); } if (!projFound) { QAction* a = new QAction(theView->projection().getProjectionType(), p->projActgrp); a->setCheckable (true); a->setChecked(true); ui->mnuProjections->addAction(a); M_PREFS->getProjectionsList()->addProjection(ProjectionItem(theView->projection().getProjectionType(), theView->projection().getProjectionProj4())); } connect (ui->mnuProjections, SIGNAL(triggered(QAction *)), this, SLOT(projectionTriggered(QAction *))); #endif ui->mnuProjections->menuAction()->setEnabled(true); if (M_PREFS->getZoomBoris() && theDocument) { ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) ui->mnuProjections->menuAction()->setEnabled(false); } } void MainWindow::updateStyleMenu() { for(int i=ui->menuStyles->actions().count()-1; i > 4 ; i--) { ui->menuStyles->removeAction(ui->menuStyles->actions()[5]); } p->theStyle->clearItems(); QActionGroup* actgrp = new QActionGroup(this); QDir intStyles(BUILTIN_STYLES_DIR); for (int i=0; i < intStyles.entryList().size(); ++i) { QAction* a = new QAction(QString(tr("%1 (int)")).arg(intStyles.entryList().at(i)), ui->menuStyles); actgrp->addAction(a); a->setCheckable(true); a->setData(QVariant(intStyles.entryInfoList().at(i).absoluteFilePath())); ui->menuStyles->addAction(a); if (intStyles.entryInfoList().at(i).absoluteFilePath() == M_PREFS->getDefaultStyle()) a->setChecked(true); p->theStyle->addItem(a); } if (!M_PREFS->getCustomStyle().isEmpty()) { QDir customStyles(M_PREFS->getCustomStyle(), "*.mas"); for (int i=0; i < customStyles.entryList().size(); ++i) { QAction* a = new QAction(customStyles.entryList().at(i), ui->menuStyles); actgrp->addAction(a); a->setCheckable(true); a->setData(QVariant(customStyles.entryInfoList().at(i).absoluteFilePath())); ui->menuStyles->addAction(a); if (customStyles.entryInfoList().at(i).absoluteFilePath() == M_PREFS->getDefaultStyle()) a->setChecked(true); p->theStyle->addItem(a); } } } void MainWindow::updateWindowMenu(bool) { ui->windowPropertiesAction->setChecked(p->theProperties->isVisible()); ui->windowLayersAction->setChecked(theLayers->isVisible()); ui->windowInfoAction->setChecked(theInfo->isVisible()); ui->windowDirtyAction->setChecked(theDirty->isVisible()); ui->windowFeatsAction->setChecked(p->theFeats->isVisible()); ui->windowGPSAction->setChecked(theGPS->isVisible()); #ifdef GEOIMAGE ui->windowGeoimageAction->setChecked(theGeoImage->isVisible()); #endif ui->windowStylesAction->setChecked(p->theStyle->isVisible()); } void MainWindow::on_bookmarkAddAction_triggered() { bool ok = true; QString text; BookmarkList* Bookmarks = M_PREFS->getBookmarks(); QStringList bkName; BookmarkListIterator i(*Bookmarks); while (i.hasNext()) { i.next(); if (i.value().deleted == false) bkName.append(i.key()); } while (ok) { text = QInputDialog::getItem(this, MainWindow::tr("Add Bookmark"), MainWindow::tr("Specify the name of the bookmark."), bkName, 0, true, &ok); if (ok) { if (text.isEmpty()) { QMessageBox::critical(this, tr("Invalid bookmark name"), tr("Bookmark cannot be blank."), QMessageBox::Ok); continue; } if (Bookmarks->contains(text)) { QString newBk = QInputDialog::getText(this, MainWindow::tr("Warning: Bookmark name already exists"), MainWindow::tr("Enter a new one, keep the same to overwrite or cancel."), QLineEdit::Normal, text, &ok); if (ok && Bookmarks->contains(newBk)) { for(int i=2; i < ui->menuBookmarks->actions().count(); i++) { if (ui->menuBookmarks->actions()[i]->text() == newBk) { ui->menuBookmarks->removeAction(ui->menuBookmarks->actions()[i]); break; } } } text = newBk; } break; } } if (ok) { CoordBox Clip = view()->viewport(); Bookmark B(text, Clip); Bookmarks->insert(text, B); M_PREFS->save(); QAction* a = new QAction(text,ui-> menuBookmarks); ui->menuBookmarks->addAction(a); } } void MainWindow::on_bookmarkRemoveAction_triggered() { bool ok; BookmarkList* Bookmarks = M_PREFS->getBookmarks(); QStringList bkName; BookmarkListIterator i(*Bookmarks); while (i.hasNext()) { i.next(); if (i.value().deleted == false) bkName.append(i.key()); } QString item = QInputDialog::getItem(this, MainWindow::tr("Remove Bookmark"), MainWindow::tr("Select the bookmark to remove."), bkName, 0, false, &ok); if (ok) { Bookmark B = Bookmarks->value(item); B.deleted = true; Bookmarks->insert(item, B); M_PREFS->save(); for(int i=2; i < ui->menuBookmarks->actions().count(); i++) { if (ui->menuBookmarks->actions()[i]->text() == item) { ui->menuBookmarks->removeAction(ui->menuBookmarks->actions()[i]); break; } } } } void MainWindow::bookmarkTriggered(QAction* anAction) { if (anAction == ui->bookmarkAddAction || anAction == ui->bookmarkRemoveAction) return; BookmarkList* Bookmarks = M_PREFS->getBookmarks(); theView->setViewport(Bookmarks->value(anAction->text()).Coordinates, theView->rect()); invalidateView(); } void MainWindow::recentOpenTriggered(QAction* anAction) { if (hasUnsavedChanges() && !mayDiscardUnsavedChanges(this)) return; QStringList fileNames(anAction->text()); loadFiles(fileNames); } void MainWindow::recentImportTriggered(QAction* anAction) { view()->setUpdatesEnabled(false); theLayers->setUpdatesEnabled(false); QStringList fileNames(anAction->text()); QStringList importedFiles; importFiles(theDocument, fileNames, &importedFiles); foreach (QString currentFileName, importedFiles) M_PREFS->addRecentImport(currentFileName); updateRecentImportMenu(); view()->setUpdatesEnabled(true); theLayers->setUpdatesEnabled(true); on_editPropertiesAction_triggered(); theDocument->history().setActions(ui->editUndoAction, ui->editRedoAction, ui->fileUploadAction); } #ifndef _MOBILE void MainWindow::projectionSet(const QString& prj) { if(false == theView->projection().setProjectionType(prj)) QMessageBox::critical(this, tr("Invalid projection"), tr("Unable to set projection \"%1\".").arg(prj)); updateProjectionMenu(); theView->setViewport(theView->viewport(), theView->rect()); invalidateView(); } void MainWindow::projectionTriggered(QAction* anAction) { if(false == theView->projection().setProjectionType(anAction->text())) QMessageBox::critical(this, tr("Invalid projection"), tr("Unable to set projection \"%1\".").arg(anAction->text())); else M_PREFS->setProjectionType(anAction->text()); theView->setViewport(theView->viewport(), theView->rect()); invalidateView(); } #endif void MainWindow::styleTriggered(QAction* anAction) { if (!anAction->isCheckable()) return; QString NewStyle = anAction->data().toString(); p->theStyle->setCurrent(anAction); applyStyles(NewStyle); } void MainWindow::on_windowPropertiesAction_triggered() { p->theProperties->setVisible(!p->theProperties->isVisible()); ui->windowPropertiesAction->setChecked(p->theProperties->isVisible()); } void MainWindow::on_windowLayersAction_triggered() { theLayers->setVisible(!theLayers->isVisible()); ui->windowLayersAction->setChecked(theLayers->isVisible()); } void MainWindow::on_windowInfoAction_triggered() { theInfo->setVisible(!theInfo->isVisible()); ui->windowInfoAction->setChecked(theInfo->isVisible()); } void MainWindow::on_windowDirtyAction_triggered() { theDirty->setVisible(!theDirty->isVisible()); ui->windowDirtyAction->setChecked(theDirty->isVisible()); } void MainWindow::on_windowFeatsAction_triggered() { p->theFeats->setVisible(!p->theFeats->isVisible()); ui->windowFeatsAction->setChecked(p->theFeats->isVisible()); } void MainWindow::on_windowToolbarAction_triggered() { foreach (QObject* child, children()) { if (QToolBar* tb = qobject_cast<QToolBar*>(child)) tb->setVisible(!tb->isVisible()); } } void MainWindow::on_windowGPSAction_triggered() { theGPS->setVisible(!theGPS->isVisible()); ui->windowGPSAction->setChecked(theGPS->isVisible()); } #ifdef GEOIMAGE void MainWindow::on_windowGeoimageAction_triggered() { theGeoImage->setVisible(!theGeoImage->isVisible()); ui->windowGeoimageAction->setChecked(theGeoImage->isVisible()); } #endif void MainWindow::on_windowStylesAction_triggered() { p->theStyle->setVisible(!p->theStyle->isVisible()); ui->windowStylesAction->setChecked(p->theStyle->isVisible()); } void MainWindow::on_windowHideAllAction_triggered() { fullscreenState = saveState(1); ui->windowHideAllAction->setEnabled(false); ui->windowHideAllAction->setVisible(false); ui->windowShowAllAction->setEnabled(true); ui->windowShowAllAction->setVisible(true); // ui->toolBar->setVisible(false); theInfo->setVisible(false); theDirty->setVisible(false); p->theFeats->setVisible(false); theLayers->setVisible(false); p->theProperties->setVisible(false); theGPS->setVisible(false); p->theStyle->setVisible(false); #ifdef GEOIMAGE theGeoImage->setVisible(false); #endif } void MainWindow::on_windowShowAllAction_triggered() { restoreState(fullscreenState, 1); ui->windowHideAllAction->setEnabled(true); ui->windowHideAllAction->setVisible(true); ui->windowShowAllAction->setEnabled(false); ui->windowShowAllAction->setVisible(false); } void MainWindow::on_gpsConnectAction_triggered() { #ifndef Q_OS_SYMBIAN QGPSDevice* aGps; if (M_PREFS->getGpsUseGpsd()) aGps = new QGPSDDevice("gpsd"); else aGps = new QGPSComDevice(M_PREFS->getGpsPort()); #else QGPSS60Device* aGps = new QGPSS60Device(); #endif if (aGps->openDevice()) { connect(aGps, SIGNAL(updatePosition(float, float, QDateTime, float, float, float)), this, SLOT(updateGpsPosition(float, float, QDateTime, float, float, float))); ui->gpsConnectAction->setEnabled(false); ui->gpsReplayAction->setEnabled(false); ui->gpsDisconnectAction->setEnabled(true); ui->gpsRecordAction->setEnabled(true); ui->gpsPauseAction->setEnabled(true); theGPS->setGpsDevice(aGps); theGPS->resetGpsStatus(); theGPS->startGps(); } else { QMessageBox::critical(this, tr("GPS error"), tr("Unable to open GPS port."), QMessageBox::Ok); delete aGps; } } void MainWindow::on_gpsReplayAction_triggered() { QString fileName = QFileDialog::getOpenFileName( this, tr("Open NMEA log file"), "", "NMEA GPS log format (*.nmea *.nma)" ); if (fileName.isEmpty()) return; QGPSFileDevice* aGps = new QGPSFileDevice(fileName); if (aGps->openDevice()) { connect(aGps, SIGNAL(updatePosition(qreal, qreal, QDateTime, qreal, qreal, qreal)), this, SLOT(updateGpsPosition(qreal, qreal, QDateTime, qreal, qreal, qreal))); ui->gpsConnectAction->setEnabled(false); ui->gpsReplayAction->setEnabled(false); ui->gpsDisconnectAction->setEnabled(true); ui->gpsRecordAction->setEnabled(true); ui->gpsPauseAction->setEnabled(true); theGPS->setGpsDevice(aGps); theGPS->resetGpsStatus(); theGPS->startGps(); } } void MainWindow::on_gpsDisconnectAction_triggered() { ui->gpsConnectAction->setEnabled(true); ui->gpsReplayAction->setEnabled(true); ui->gpsDisconnectAction->setEnabled(false); ui->gpsRecordAction->setEnabled(false); ui->gpsPauseAction->setEnabled(false); ui->gpsRecordAction->setChecked(false); ui->gpsPauseAction->setChecked(false); disconnect(theGPS->getGpsDevice(), SIGNAL(updatePosition(float, float, QDateTime, float, float, float)), this, SLOT(updateGpsPosition(float, float, QDateTime, float, float, float))); theGPS->stopGps(); theGPS->resetGpsStatus(); } void MainWindow::updateGpsPosition(qreal latitude, qreal longitude, QDateTime time, qreal altitude, qreal speed, qreal heading) { Q_UNUSED(heading) if (theGPS->getGpsDevice()) { Coord gpsCoord(longitude,latitude); if (M_PREFS->getGpsMapCenter()) { CoordBox vp = theView->viewport(); qreal lonDiff = vp.lonDiff(); qreal latDiff = vp.latDiff(); QRectF vpr = vp.adjusted(lonDiff / 4, -latDiff / 4, -lonDiff / 4, latDiff / 4); if (!vpr.contains(gpsCoord)) { theView->setCenter(gpsCoord, theView->rect()); theView->invalidate(false, false, true); } } if (ui->gpsRecordAction->isChecked() && !ui->gpsPauseAction->isChecked()) { TrackNode* pt = g_backend.allocTrackNode(gpsRecLayer, gpsCoord); pt->setTime(time); pt->setElevation(altitude); pt->setSpeed(speed); gpsRecLayer->add(pt); curGpsTrackSegment->add(pt); } } theView->update(); } QGPS* MainWindow::gps() { return theGPS; } void MainWindow::on_gpsCenterAction_triggered() { M_PREFS->setGpsMapCenter(!M_PREFS->getGpsMapCenter()); ui->gpsCenterAction->setChecked(M_PREFS->getGpsMapCenter()); invalidateView(); } void MainWindow::on_gpsRecordAction_triggered() { if (ui->gpsRecordAction->isChecked()) { if (theDocument) { QString fn = "log-" + QDateTime::currentDateTime().toString(Qt::ISODate); fn.replace(':', '-'); gpsRecLayer = new TrackLayer(); gpsRecLayer->setName(fn); theDocument->add(gpsRecLayer); curGpsTrackSegment = g_backend.allocSegment(gpsRecLayer); gpsRecLayer->add(curGpsTrackSegment); } else { ui->gpsRecordAction->setChecked(false); } } else { ui->gpsPauseAction->setChecked(false); } } void MainWindow::on_gpsPauseAction_triggered() { if (ui->gpsPauseAction->isChecked()) { if (!ui->gpsRecordAction->isChecked()) { ui->gpsPauseAction->setChecked(false); } } else { if (theDocument && ui->gpsRecordAction->isChecked()) { curGpsTrackSegment = g_backend.allocSegment(gpsRecLayer); gpsRecLayer->add(curGpsTrackSegment); } } } void MainWindow::on_toolTemplatesSaveAction_triggered() { QString f; QFileDialog dlg(this, tr("Save Tag Templates"), QString("%1/%2.mat").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor tag templates (*.mat)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("mat"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) f = dlg.selectedFiles()[0]; } // QString f = QFileDialog::getSaveFileName(this, tr("Save Tag Templates"), "", tr("Merkaartor tag templates (*.mat)")); if (!f.isNull()) { p->theProperties->saveTemplates(f); } } void MainWindow::on_toolTemplatesMergeAction_triggered() { QString fileName = QFileDialog::getOpenFileName( this, tr("Open Tag Templates"), "", "Merkaartor tag templates (*.mat)" ); if (fileName.isEmpty()) return; p->theProperties->mergeTemplates(fileName); p->theProperties->resetValues(); } void MainWindow::on_toolTemplatesLoadAction_triggered() { QString fileName = QFileDialog::getOpenFileName( this, tr("Open Tag Templates"), "", "Merkaartor tag templates (*.mat)" ); if (fileName.isEmpty()) return; p->theProperties->loadTemplates(fileName); p->theProperties->resetValues(); } void MainWindow::updateLanguage() { if (qtTranslator) { QCoreApplication::removeTranslator(qtTranslator); } if (merkaartorTranslator) { QCoreApplication::removeTranslator(merkaartorTranslator); } QString DefaultLanguage = getDefaultLanguage(); if (DefaultLanguage != "-" && DefaultLanguage != "en") { #if defined(Q_OS_MAC) QDir resources = QDir(QCoreApplication::applicationDirPath()); resources.cdUp(); resources.cd("Resources"); #endif qtTranslator = new QTranslator; bool retQt; if (g_Merk_Portable) { retQt = qtTranslator->load("qt_" + DefaultLanguage.left(2), QCoreApplication::applicationDirPath() + "/translations"); } else { #ifdef TRANSDIR_SYSTEM if (!QDir::isAbsolutePath(STRINGIFY(TRANSDIR_SYSTEM))) retQt = qtTranslator->load("qt_" + DefaultLanguage.left(2), QCoreApplication::applicationDirPath() + "/" + STRINGIFY(TRANSDIR_SYSTEM)); else retQt = qtTranslator->load("qt_" + DefaultLanguage.left(2), STRINGIFY(TRANSDIR_SYSTEM)); #else #if defined(Q_OS_MAC) retQt = qtTranslator->load("qt_" + DefaultLanguage.left(2), resources.absolutePath()); #else retQt = qtTranslator->load("qt_" + DefaultLanguage.left(2), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); #endif // Q_OS_MAC #endif // TRANSDIR_SYSTEM } if (retQt) QCoreApplication::installTranslator(qtTranslator); merkaartorTranslator = new QTranslator; // Do not prevent Merkaartor translations to be loaded, even if there is no Qt translation for the language. bool retM; if (g_Merk_Portable) { retM = merkaartorTranslator->load("merkaartor_" + DefaultLanguage, QCoreApplication::applicationDirPath() + "/translations"); } else { #if defined(Q_OS_MAC) retM = merkaartorTranslator->load("merkaartor_" + DefaultLanguage, resources.absolutePath()); #else retM = merkaartorTranslator->load("merkaartor_" + DefaultLanguage, QCoreApplication::applicationDirPath()); #endif #ifdef TRANSDIR_MERKAARTOR if (!retM) { // Next, try the TRANSDIR_MERKAARTOR, if defined if (!QDir::isAbsolutePath(STRINGIFY(TRANSDIR_MERKAARTOR))) retM = merkaartorTranslator->load("merkaartor_" + DefaultLanguage, QCoreApplication::applicationDirPath() + "/" + STRINGIFY(TRANSDIR_MERKAARTOR)); else retM = merkaartorTranslator->load("merkaartor_" + DefaultLanguage, STRINGIFY(TRANSDIR_MERKAARTOR)); } #endif } if (retM) QCoreApplication::installTranslator(merkaartorTranslator); else statusBar()->showMessage(tr("Warning! Could not load the Merkaartor translations for the \"%1\" language. Switching to default English.").arg(DefaultLanguage), 15000); } ui->retranslateUi(this); } void MainWindow::updateMenu() { if (M_PREFS->getOfflineMode()) { ui->fileWorkOfflineAction->setChecked(true); ui->fileDownloadAction->setEnabled(false); ui->fileDownloadMoreAction->setEnabled(false); ui->fileUploadAction->setEnabled(false); } else { ui->fileWorkOfflineAction->setChecked(false); ui->fileDownloadAction->setEnabled(true); ui->fileDownloadMoreAction->setEnabled(true); ui->fileUploadAction->setEnabled(true); } if (M_PREFS->getSeparateMoveMode()) ui->editMoveAction->setVisible(true); else ui->editMoveAction->setVisible(false); } void MainWindow::on_layersNewImageAction_triggered() { if (theDocument) theDocument->addImageLayer(); } void MainWindow::on_layersNewDrawingAction_triggered() { if (theDocument) theDocument->addDrawingLayer(); } void MainWindow::on_layersNewFilterAction_triggered() { if (theDocument) theDocument->addFilterLayer(); } bool MainWindow::hasUnsavedChanges() { if (!theDocument) return false; if (theDocument->getDirtySize() == p->latSaveDirtyLevel) return false; return true; } void MainWindow::syncOSM(const QString& aWeb, const QString& aUser, const QString& aPwd) { #ifndef FRISIUS_BUILD if (checkForConflicts(theDocument)) { QMessageBox::warning(this,tr("Unresolved conflicts"), tr("Please resolve existing conflicts first")); return; } bool ok; DirtyListBuild Future; theDocument->history().buildDirtyList(Future); DirtyListDescriber Describer(theDocument,Future); if (Describer.showChanges(this) && Describer.tasks()) { Future.resetUpdates(); DirtyListExecutorOSC Exec(theDocument,Future,aWeb,aUser,aPwd,Describer.tasks()); ok = Exec.executeChanges(this); if (ok) { if (M_PREFS->getAutoHistoryCleanup() && !theDocument->getDirtyOrOriginLayer()->getDirtySize()) theDocument->history().cleanup(); p->latSaveDirtyLevel = theDocument->getDirtySize(); if (!fileName.isEmpty()) { if (M_PREFS->getAutoSaveDoc()) { saveDocument(fileName); } else { if (QMessageBox::warning(this,tr("Unsaved changes"), tr("It is strongly recommended to save the changes to your document after an upload.\nDo you want to do this now?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) { saveDocument(fileName); } } } } } #endif } void MainWindow::on_viewWireframeAction_toggled(bool val) { M_PREFS->setWireframeView(val); invalidateView(); } ������������������������������������������������������������������������������������merkaartor-0.18.1/src/MainWindow.h������������������������������������������������������������������0000664�0000000�0000000�00000026476�11770671653�0017020�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_MAINWINDOW_H_ #define MERKATOR_MAINWINDOW_H_ #include "IMerkMainWindow.h" #include "IProgressWindow.h" #include <QtGui/QMainWindow> #include <QtXml> #include <QProgressBar> #include <QLabel> namespace Ui { class MainWindow; } class MainWindowPrivate; class LayerDock; class Document; class Layer; class ImageMapLayer; class MapView; class Feature; class PropertiesDock; class InfoDock; class DirtyDock; class FeaturesDock; class QGPS; class GlobalPainter; class Painter; class TrackLayer; class TrackSegment; class Interaction; class QtToolBarManager; class PreferencesDialog; #ifdef GEOIMAGE class GeoImageDock; #endif class MainWindow : public QMainWindow, public IMerkMainWindow, public IProgressWindow { Q_OBJECT friend class ActionsDialog; friend class MerkaartorPreferences; public: MainWindow(QWidget *parent = 0); virtual ~MainWindow(); bool eventFilter ( QObject * watched, QEvent * event ); public slots: void invalidateView(bool UpdateDock = true); void toggleButtonStyle(); virtual void on_createRoundaboutAction_triggered(); virtual void on_createPolygonAction_triggered(); virtual void on_createRectangleAction_triggered(); virtual void on_createDoubleWayAction_triggered(); virtual void on_createNodeAction_triggered(); virtual void on_createRoadAction_triggered(); virtual void on_createCurvedRoadAction_triggered(); virtual void on_createRelationAction_triggered(); virtual void on_createAreaAction_triggered(); virtual void on_editPropertiesAction_triggered(); virtual void on_editUndoAction_triggered(); virtual void on_editRedoAction_triggered(); virtual void on_editMapStyleAction_triggered(); virtual void on_editCutAction_triggered(); virtual void on_editCopyAction_triggered(); virtual void on_editPasteFeatureAction_triggered(); virtual void on_editPasteOverwriteAction_triggered(); virtual void on_editPasteMergeAction_triggered(); virtual void on_layersNewImageAction_triggered(); virtual void on_layersNewDrawingAction_triggered(); virtual void on_layersNewFilterAction_triggered(); virtual void on_layersOpenstreetbugsAction_triggered(); virtual void on_layersMapdustAction_triggered(); virtual void on_fileNewAction_triggered(); virtual void on_fileDownloadAction_triggered(); virtual void on_fileDownloadMoreAction_triggered(); virtual void on_fileUploadAction_triggered(); virtual void on_fileImportAction_triggered(); virtual void on_fileOpenAction_triggered(); virtual void on_fileSaveAsAction_triggered(); virtual void on_fileSaveAsTemplateAction_triggered(); virtual void on_fileSaveAction_triggered(); virtual void on_fileWorkOfflineAction_triggered(); virtual void on_filePrintAction_triggered(); virtual void on_filePropertiesAction_triggered(); virtual void on_helpAboutAction_triggered(); virtual void on_viewZoomAllAction_triggered(); virtual void on_viewZoomInAction_triggered(); virtual void on_viewZoomOutAction_triggered(); virtual void on_viewZoomWindowAction_triggered(); virtual void on_viewLockZoomAction_triggered(); virtual void on_viewDownloadedAction_triggered(); virtual void on_viewDirtyAction_triggered(); virtual void on_viewScaleAction_triggered(); virtual void on_viewPhotosAction_triggered(); virtual void on_viewShowLatLonGridAction_triggered(); virtual void on_viewStyleBackgroundAction_triggered(); virtual void on_viewStyleForegroundAction_triggered(); virtual void on_viewStyleTouchupAction_triggered(); virtual void on_viewNamesAction_triggered(); virtual void on_viewVirtualNodesAction_triggered(); virtual void on_viewTrackPointsAction_triggered(); virtual void on_viewTrackSegmentsAction_triggered(); virtual void on_viewRelationsAction_triggered(); virtual void on_viewGotoAction_triggered(); virtual void on_viewArrowsNeverAction_triggered(bool checked); virtual void on_viewArrowsOnewayAction_triggered(bool checked); virtual void on_viewArrowsAlwaysAction_triggered(bool checked); virtual void on_editRemoveAction_triggered(); virtual void on_editMoveAction_triggered(); virtual void on_editRotateAction_triggered(); virtual void on_editScaleAction_triggered(); virtual void on_editReverseAction_triggered(); virtual void on_roadSplitAction_triggered(); virtual void on_roadBreakAction_triggered(); virtual void on_roadJoinAction_triggered(); virtual void on_roadSimplifyAction_triggered(); virtual void on_roadCreateJunctionAction_triggered(); virtual void on_roadAddStreetNumbersAction_triggered(); virtual void on_roadSubdivideAction_triggered(); virtual void on_roadAxisAlignAction_triggered(); virtual void on_roadExtrudeAction_triggered(); virtual void on_roadBingExtractAction_triggered(); virtual void on_featureSelectChildrenAction_triggered(); virtual void on_featureSelectParentsAction_triggered(); virtual void on_featureDownloadMissingChildrenAction_triggered(); virtual void on_featureDeleteAction_triggered(); virtual void on_featureCommitAction_triggered(); virtual void on_featureOsbClose_triggered(); virtual void on_nodeAlignAction_triggered(); virtual void on_nodeSpreadAction_triggered(); virtual void on_nodeMergeAction_triggered(); virtual void on_nodeDetachAction_triggered(); virtual void on_relationAddMemberAction_triggered(); virtual void on_relationRemoveMemberAction_triggered(); virtual void on_relationAddToMultipolygonAction_triggered(); virtual void on_areaJoinAction_triggered(); virtual void on_areaSplitAction_triggered(); virtual void on_areaTerraceAction_triggered(); virtual void on_mapStyleSaveAction_triggered(); virtual void on_mapStyleSaveAsAction_triggered(); virtual void on_mapStyleLoadAction_triggered(); virtual void on_exportOSMAction_triggered(); virtual void on_exportOSCAction_triggered(); virtual void on_exportGPXAction_triggered(); virtual void on_exportKMLAction_triggered(); virtual void on_exportGDALAction_triggered(); virtual void on_editSelectAction_triggered(); virtual void on_bookmarkAddAction_triggered(); virtual void on_bookmarkRemoveAction_triggered(); virtual void on_toolsPreferencesAction_triggered() {toolsPreferencesAction_triggered();} virtual void on_toolsShortcutsAction_triggered(); virtual void on_toolsToolbarsAction_triggered(); virtual void on_toolsWMSServersAction_triggered(); virtual void on_toolsTMSServersAction_triggered(); virtual void on_toolsProjectionsAction_triggered(); virtual void on_toolsFiltersAction_triggered(); virtual void toolsPreferencesAction_triggered(bool focusData=false); virtual void on_toolsResetDiscardableAction_triggered(); virtual void on_toolsRebuildHistoryAction_triggered(); virtual void on_windowPropertiesAction_triggered(); virtual void on_windowLayersAction_triggered(); virtual void on_windowInfoAction_triggered(); virtual void on_windowDirtyAction_triggered(); virtual void on_windowFeatsAction_triggered(); virtual void on_windowToolbarAction_triggered(); virtual void on_windowGPSAction_triggered(); #ifdef GEOIMAGE virtual void on_windowGeoimageAction_triggered(); #endif virtual void on_windowStylesAction_triggered(); virtual void on_windowHideAllAction_triggered(); virtual void on_windowShowAllAction_triggered(); virtual void on_gpsConnectAction_triggered(); virtual void on_gpsReplayAction_triggered(); virtual void on_gpsRecordAction_triggered(); virtual void on_gpsPauseAction_triggered(); virtual void on_gpsDisconnectAction_triggered(); virtual void on_gpsCenterAction_triggered(); virtual void preferencesChanged(PreferencesDialog* prefs); virtual void clipboardChanged(); virtual void on_toolTemplatesSaveAction_triggered(); virtual void on_toolTemplatesMergeAction_triggered(); virtual void on_toolTemplatesLoadAction_triggered(); protected slots: void onCustomcontextmenurequested(const QPoint &pos); void onImagerequested(ImageMapLayer*); void onImagereceived(ImageMapLayer* aLayer); void onLoadingfinished(ImageMapLayer*); signals: void remove_triggered(); void move_triggered(); void add_triggered(); void reverse_triggered(); void content_changed(); public: MainWindowPrivate* p; Ui::MainWindow *ui; QString fileName; PropertiesDock* properties(); FeaturesDock* features(); InfoDock* info(); QGPS* gps(); #ifdef GEOIMAGE GeoImageDock* geoImage(); #endif Document* document(); //MapLayer* activeLayer(); MapView* view(); QByteArray fullscreenState; QProgressBar* pbImages; QString StatusMessage; QLabel* ViewportStatusLabel; QLabel* PaintTimeLabel; QLabel* MeterPerPixelLabel; QLabel* AdjusmentMeterLabel; public slots: void handleMessage(const QString& msg); void adjustLayers(bool adjustViewport); void bookmarkTriggered(QAction* anAction); void recentOpenTriggered(QAction* anAction); void recentImportTriggered(QAction* anAction); #ifndef _MOBILE void projectionSet(const QString& prj); void projectionTriggered(QAction* anAction); #endif void styleTriggered(QAction* anAction); void updateGpsPosition(qreal latitude, qreal longitude, QDateTime time, qreal altitude, qreal speed, qreal heading); void applyStyles(QString NewStyle); void applyPainters(GlobalPainter* theGlobalPainter, QList<Painter>* thePainters); public: bool importFiles(Document * mapDocument, const QStringList & filesNames, QStringList * importedFileNames = NULL); void loadFiles(const QStringList & fileNames); void loadUrl(const QUrl& u); void loadDocument(QString fn); void loadTemplateDocument(QString fn); void saveDocument(const QString& fn); void saveTemplateDocument(const QString& fn); void downloadFeatures(const QList<Feature*>& aDownloadList); void createProgressDialog(); void deleteProgressDialog(); void createToolBarManager(); void updateLanguage(); bool hasUnsavedChanges(); void syncOSM(const QString &aWeb, const QString &aUser, const QString &aPwd); void launchInteraction(Interaction *anInteraction); protected: MapView* theView; Document* theDocument; InfoDock* theInfo; DirtyDock* theDirty; LayerDock* theLayers; #ifdef GEOIMAGE GeoImageDock* theGeoImage; #endif QGPS* theGPS; TrackLayer* gpsRecLayer; TrackSegment* curGpsTrackSegment; QHash<QString, QString> shortcutsDefault; QTranslator* qtTranslator; QTranslator* merkaartorTranslator; QtToolBarManager *toolBarManager; private slots: void delayedInit(); void setAreaOpacity(QAction*); void updateBookmarksMenu(); void updateWindowMenu(bool b=false); void incomingLocalConnection(); void readLocalConnection(); void on_viewWireframeAction_toggled(bool arg1); private: void updateMenu(); void updateRecentOpenMenu(); void updateRecentImportMenu(); void updateProjectionMenu(); void updateStyleMenu(); bool selectExportedFeatures(QList<Feature*>& theFeatures); Document* doLoadDocument(QFile* file); void doSaveDocument(QFile* fn, bool asTemplate=false); protected: void closeEvent(QCloseEvent * event); virtual QMenu * createPopupMenu (); }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/MainWindow.ui�����������������������������������������������������������������0000664�0000000�0000000�00000163013�11770671653�0017173�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1100</width> <height>549</height> </rect> </property> <property name="windowTitle"> <string>Merkaartor</string> </property> <property name="windowIcon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/Merkaartor.xpm</normaloff>:/Icons/Merkaartor.xpm</iconset> </property> <widget class="QWidget" name="centralWidget"/> <widget class="QMenuBar" name="theMenuBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1100</width> <height>20</height> </rect> </property> <widget class="QMenu" name="menuHelp"> <property name="title"> <string>&Help</string> </property> <addaction name="helpAboutAction"/> </widget> <widget class="QMenu" name="menuCreate"> <property name="title"> <string>&Create</string> </property> <addaction name="createNodeAction"/> <addaction name="createRoadAction"/> <addaction name="createDoubleWayAction"/> <addaction name="createRoundaboutAction"/> <addaction name="createRectangleAction"/> <addaction name="createPolygonAction"/> <addaction name="createAreaAction"/> <addaction name="createRelationAction"/> </widget> <widget class="QMenu" name="menuRoad"> <property name="title"> <string>&Road</string> </property> <addaction name="roadSplitAction"/> <addaction name="roadBreakAction"/> <addaction name="roadJoinAction"/> <addaction name="editReverseAction"/> <addaction name="roadSimplifyAction"/> <addaction name="roadCreateJunctionAction"/> <addaction name="roadAddStreetNumbersAction"/> <addaction name="roadSubdivideAction"/> <addaction name="areaJoinAction"/> <addaction name="areaSplitAction"/> <addaction name="areaTerraceAction"/> <addaction name="roadAxisAlignAction"/> <addaction name="separator"/> <addaction name="roadBingExtractAction"/> </widget> <widget class="QMenu" name="menuEdit"> <property name="title"> <string>&Edit</string> </property> <addaction name="editUndoAction"/> <addaction name="editRedoAction"/> <addaction name="separator"/> <addaction name="editCutAction"/> <addaction name="editCopyAction"/> <addaction name="editPasteFeatureAction"/> <addaction name="editPasteMergeAction"/> <addaction name="editPasteOverwriteAction"/> <addaction name="separator"/> <addaction name="editRemoveAction"/> <addaction name="editMoveAction"/> <addaction name="editRotateAction"/> <addaction name="editScaleAction"/> <addaction name="roadExtrudeAction"/> <addaction name="editPropertiesAction"/> <addaction name="separator"/> <addaction name="editSelectAction"/> </widget> <widget class="QMenu" name="menuView"> <property name="title"> <string>&View</string> </property> <widget class="QMenu" name="menuBookmarks"> <property name="title"> <string>&Bookmarks</string> </property> <addaction name="bookmarkAddAction"/> <addaction name="bookmarkRemoveAction"/> <addaction name="separator"/> </widget> <widget class="QMenu" name="mnuProjections"> <property name="title"> <string>Set &projection</string> </property> </widget> <widget class="QMenu" name="mnuAreaOpacity"> <property name="title"> <string>Set Areas &opacity</string> </property> </widget> <addaction name="viewZoomAllAction"/> <addaction name="viewZoomWindowAction"/> <addaction name="viewZoomOutAction"/> <addaction name="viewZoomInAction"/> <addaction name="viewLockZoomAction"/> <addaction name="separator"/> <addaction name="viewWireframeAction"/> <addaction name="mnuAreaOpacity"/> <addaction name="mnuProjections"/> <addaction name="separator"/> <addaction name="viewGotoAction"/> <addaction name="menuBookmarks"/> </widget> <widget class="QMenu" name="menuFile"> <property name="title"> <string>&File</string> </property> <widget class="QMenu" name="menuExport"> <property name="title"> <string>&Export</string> </property> <addaction name="exportOSMAction"/> <addaction name="exportOSCAction"/> <addaction name="exportGPXAction"/> <addaction name="exportKMLAction"/> <addaction name="exportGDALAction"/> </widget> <widget class="QMenu" name="menuRecentOpen"> <property name="title"> <string>Re&cent open</string> </property> </widget> <widget class="QMenu" name="menuRecentImport"> <property name="title"> <string>Recen&t import</string> </property> </widget> <addaction name="fileNewAction"/> <addaction name="fileOpenAction"/> <addaction name="fileImportAction"/> <addaction name="menuRecentOpen"/> <addaction name="menuRecentImport"/> <addaction name="separator"/> <addaction name="menuExport"/> <addaction name="separator"/> <addaction name="fileSaveAction"/> <addaction name="fileSaveAsAction"/> <addaction name="fileSaveAsTemplateAction"/> <addaction name="separator"/> <addaction name="fileDownloadAction"/> <addaction name="fileDownloadMoreAction"/> <addaction name="fileUploadAction"/> <addaction name="separator"/> <addaction name="filePrintAction"/> <addaction name="separator"/> <addaction name="filePropertiesAction"/> <addaction name="separator"/> <addaction name="fileWorkOfflineAction"/> <addaction name="fileQuitAction"/> </widget> <widget class="QMenu" name="menuTools"> <property name="title"> <string>T&ools</string> </property> <widget class="QMenu" name="menuStyles"> <property name="title"> <string>&Style</string> </property> <addaction name="editMapStyleAction"/> <addaction name="separator"/> <addaction name="mapStyleSaveAction"/> <addaction name="mapStyleSaveAsAction"/> <addaction name="mapStyleLoadAction"/> <addaction name="separator"/> </widget> <widget class="QMenu" name="designerMenu"> <property name="title"> <string>Ta&g templates</string> </property> <addaction name="toolTemplatesSaveAction"/> <addaction name="toolTemplatesMergeAction"/> <addaction name="toolTemplatesLoadAction"/> </widget> <addaction name="menuStyles"/> <addaction name="designerMenu"/> <addaction name="separator"/> <addaction name="toolsToolbarsAction"/> <addaction name="toolsShortcutsAction"/> <addaction name="separator"/> <addaction name="toolsWorldOsbAction"/> <addaction name="toolsTMSServersAction"/> <addaction name="toolsWMSServersAction"/> <addaction name="toolsProjectionsAction"/> <addaction name="toolsFiltersAction"/> <addaction name="separator"/> <addaction name="toolsResetDiscardableAction"/> <addaction name="toolsRebuildHistoryAction"/> <addaction name="separator"/> <addaction name="toolsPreferencesAction"/> </widget> <widget class="QMenu" name="menu_Node"> <property name="title"> <string>&Node</string> </property> <addaction name="nodeMergeAction"/> <addaction name="nodeAlignAction"/> <addaction name="nodeSpreadAction"/> <addaction name="nodeDetachAction"/> </widget> <widget class="QMenu" name="menuWindow"> <property name="title"> <string>&Window</string> </property> <widget class="QMenu" name="menu_Docks"> <property name="title"> <string>&Docks</string> </property> <addaction name="windowPropertiesAction"/> <addaction name="windowLayersAction"/> <addaction name="windowInfoAction"/> <addaction name="windowDirtyAction"/> <addaction name="windowGPSAction"/> <addaction name="windowGeoimageAction"/> <addaction name="windowStylesAction"/> <addaction name="windowFeatsAction"/> </widget> <addaction name="menu_Docks"/> <addaction name="windowToolbarAction"/> <addaction name="separator"/> <addaction name="windowHideAllAction"/> <addaction name="windowShowAllAction"/> </widget> <widget class="QMenu" name="menu_Feature"> <property name="title"> <string>Fea&ture</string> </property> <widget class="QMenu" name="menuOpenStreetBugs"> <property name="title"> <string>OpenStreetBugs</string> </property> <addaction name="featureOsbClose"/> </widget> <addaction name="featureSelectChildrenAction"/> <addaction name="featureSelectParentsAction"/> <addaction name="separator"/> <addaction name="featureDeleteAction"/> <addaction name="featureCommitAction"/> <addaction name="separator"/> <addaction name="featureDownloadMissingChildrenAction"/> <addaction name="separator"/> <addaction name="menuOpenStreetBugs"/> </widget> <widget class="QMenu" name="menuLayers"> <property name="title"> <string>&Layers</string> </property> <addaction name="layersNewImageAction"/> <addaction name="layersNewDrawingAction"/> <addaction name="layersNewFilterAction"/> <addaction name="layersOpenstreetbugsAction"/> <addaction name="layersMapdustAction"/> <addaction name="separator"/> </widget> <widget class="QMenu" name="menuGps"> <property name="title"> <string>&Gps</string> </property> <addaction name="gpsConnectAction"/> <addaction name="gpsReplayAction"/> <addaction name="separator"/> <addaction name="gpsRecordAction"/> <addaction name="gpsPauseAction"/> <addaction name="gpsDisconnectAction"/> <addaction name="separator"/> <addaction name="gpsCenterAction"/> </widget> <widget class="QMenu" name="menuRelation"> <property name="title"> <string>Rel&ation</string> </property> <addaction name="relationAddMemberAction"/> <addaction name="relationRemoveMemberAction"/> <addaction name="relationAddToMultipolygonAction"/> </widget> <widget class="QMenu" name="menu_Show"> <property name="title"> <string>S&how</string> </property> <widget class="QMenu" name="menuShow_directional_Arrows"> <property name="title"> <string>Show directional &Arrows</string> </property> <addaction name="viewArrowsNeverAction"/> <addaction name="viewArrowsOnewayAction"/> <addaction name="viewArrowsAlwaysAction"/> </widget> <addaction name="viewDownloadedAction"/> <addaction name="viewDirtyAction"/> <addaction name="menuShow_directional_Arrows"/> <addaction name="separator"/> <addaction name="viewStyleForegroundAction"/> <addaction name="viewStyleBackgroundAction"/> <addaction name="viewStyleTouchupAction"/> <addaction name="viewNamesAction"/> <addaction name="separator"/> <addaction name="viewTrackPointsAction"/> <addaction name="viewVirtualNodesAction"/> <addaction name="viewTrackSegmentsAction"/> <addaction name="viewRelationsAction"/> <addaction name="separator"/> <addaction name="viewPhotosAction"/> <addaction name="viewScaleAction"/> <addaction name="viewShowLatLonGridAction"/> </widget> <addaction name="menuFile"/> <addaction name="menuEdit"/> <addaction name="menuView"/> <addaction name="menu_Show"/> <addaction name="menuGps"/> <addaction name="menuLayers"/> <addaction name="menuCreate"/> <addaction name="menu_Feature"/> <addaction name="menu_Node"/> <addaction name="menuRoad"/> <addaction name="menuRelation"/> <addaction name="menuTools"/> <addaction name="menuWindow"/> <addaction name="menuHelp"/> </widget> <widget class="QStatusBar" name="StatusBar"/> <widget class="QToolBar" name="toolBar"> <property name="enabled"> <bool>true</bool> </property> <property name="windowTitle"> <string>Main toolbar</string> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <attribute name="toolBarArea"> <enum>TopToolBarArea</enum> </attribute> <attribute name="toolBarBreak"> <bool>false</bool> </attribute> <addaction name="fileDownloadAction"/> <addaction name="fileDownloadMoreAction"/> <addaction name="fileUploadAction"/> <addaction name="fileSaveAction"/> <addaction name="separator"/> <addaction name="editCopyAction"/> <addaction name="editPasteFeatureAction"/> <addaction name="editPasteMergeAction"/> <addaction name="editRemoveAction"/> <addaction name="separator"/> <addaction name="editUndoAction"/> <addaction name="editRedoAction"/> <addaction name="separator"/> <addaction name="editPropertiesAction"/> <addaction name="editMoveAction"/> <addaction name="editRotateAction"/> <addaction name="editScaleAction"/> <addaction name="createNodeAction"/> <addaction name="createRoadAction"/> <addaction name="createAreaAction"/> <addaction name="separator"/> <addaction name="nodeAlignAction"/> <addaction name="nodeSpreadAction"/> <addaction name="nodeDetachAction"/> <addaction name="roadSplitAction"/> <addaction name="roadBreakAction"/> <addaction name="roadJoinAction"/> <addaction name="editReverseAction"/> <addaction name="roadSubdivideAction"/> <addaction name="areaJoinAction"/> <addaction name="areaSplitAction"/> <addaction name="areaTerraceAction"/> <addaction name="roadAxisAlignAction"/> </widget> <action name="fileQuitAction"> <property name="text"> <string>&Quit</string> </property> <property name="menuRole"> <enum>QAction::QuitRole</enum> </property> </action> <action name="helpAboutAction"> <property name="text"> <string>&About</string> </property> <property name="menuRole"> <enum>QAction::AboutRole</enum> </property> </action> <action name="fileOpenAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/document_open.png</normaloff>:/Icons/actions/document_open.png</iconset> </property> <property name="text"> <string>&Open</string> </property> <property name="statusTip"> <string>Create a new document and import a file</string> </property> <property name="shortcut"> <string>Ctrl+O</string> </property> </action> <action name="viewZoomAllAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/zoom_fit_best.png</normaloff>:/Icons/actions/zoom_fit_best.png</iconset> </property> <property name="text"> <string>Zoom &all</string> </property> <property name="shortcut"> <string>F2</string> </property> </action> <action name="viewZoomWindowAction"> <property name="text"> <string>Zoom &window</string> </property> <property name="iconText"> <string>Zoom window</string> </property> <property name="toolTip"> <string>Zoom window</string> </property> <property name="shortcut"> <string>F3</string> </property> </action> <action name="viewZoomOutAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/zoom_out.png</normaloff>:/Icons/actions/zoom_out.png</iconset> </property> <property name="text"> <string>Zoom &out</string> </property> <property name="shortcut"> <string>-</string> </property> </action> <action name="viewZoomInAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/zoom_in.png</normaloff>:/Icons/actions/zoom_in.png</iconset> </property> <property name="text"> <string>Zoom &in</string> </property> <property name="iconText"> <string>Zoom in</string> </property> <property name="toolTip"> <string>Zoom in</string> </property> <property name="shortcut"> <string>+</string> </property> </action> <action name="createWayAction"> <property name="text"> <string>Curved link</string> </property> <property name="iconText"> <string>Curved link</string> </property> <property name="toolTip"> <string>Curved link</string> </property> <property name="shortcut"> <string/> </property> </action> <action name="editUndoAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/undo.png</normaloff>:/Icons/actions/undo.png</iconset> </property> <property name="text"> <string>&Undo</string> </property> <property name="shortcut"> <string>Ctrl+Z</string> </property> </action> <action name="editRedoAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/redo.png</normaloff>:/Icons/actions/redo.png</iconset> </property> <property name="text"> <string>&Redo</string> </property> <property name="shortcut"> <string>Ctrl+Y</string> </property> </action> <action name="editMoveAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/transform-move.png</normaloff>:/Icons/actions/transform-move.png</iconset> </property> <property name="text"> <string>&Move</string> </property> <property name="shortcut"> <string>Ctrl+M</string> </property> </action> <action name="fileImportAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/document_import.png</normaloff>:/Icons/actions/document_import.png</iconset> </property> <property name="text"> <string>&Import</string> </property> <property name="statusTip"> <string>Import a file into the current document</string> </property> </action> <action name="fileDownloadAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/download.png</normaloff>:/Icons/actions/download.png</iconset> </property> <property name="text"> <string>&Download</string> </property> <property name="toolTip"> <string>Download map data for a new area</string> </property> <property name="shortcut"> <string>Ctrl+D</string> </property> </action> <action name="createLinearWayAction"> <property name="text"> <string>Link</string> </property> <property name="iconText"> <string>Create link</string> </property> <property name="toolTip"> <string>Create link</string> </property> <property name="shortcut"> <string>L</string> </property> </action> <action name="editPropertiesAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/select.png</normaloff>:/Icons/actions/select.png</iconset> </property> <property name="text"> <string>&Select</string> </property> <property name="shortcut"> <string>Esc</string> </property> </action> <action name="fileUploadAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/upload.png</normaloff>:/Icons/actions/upload.png</iconset> </property> <property name="text"> <string>&Upload</string> </property> <property name="toolTip"> <string>Upload changes to the server</string> </property> <property name="shortcut"> <string>Ctrl+U</string> </property> </action> <action name="editRemoveAction"> <property name="enabled"> <bool>false</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/edit_delete.png</normaloff>:/Icons/actions/edit_delete.png</iconset> </property> <property name="text"> <string>R&emove</string> </property> <property name="toolTip"> <string>Remove selected features</string> </property> <property name="shortcut"> <string>Del</string> </property> </action> <action name="createRoadAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/create_road.png</normaloff>:/Icons/actions/create_road.png</iconset> </property> <property name="text"> <string>&Road</string> </property> <property name="toolTip"> <string>Create new road</string> </property> <property name="shortcut"> <string>Ctrl+R</string> </property> </action> <action name="createNodeAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/create_node.png</normaloff>:/Icons/actions/create_node.png</iconset> </property> <property name="text"> <string>&Node</string> </property> <property name="toolTip"> <string>Create new node</string> </property> <property name="shortcut"> <string>Ctrl+N</string> </property> </action> <action name="editReverseAction"> <property name="enabled"> <bool>false</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/reverse_road.png</normaloff>:/Icons/actions/reverse_road.png</iconset> </property> <property name="text"> <string>&Reverse</string> </property> <property name="toolTip"> <string>Reverse road direction</string> </property> </action> <action name="viewGotoAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/goto.png</normaloff>:/Icons/actions/goto.png</iconset> </property> <property name="text"> <string>&Go To...</string> </property> <property name="shortcut"> <string>Ctrl+G</string> </property> </action> <action name="createDoubleWayAction"> <property name="text"> <string>&Double carriage way</string> </property> <property name="toolTip"> <string>Create Double carriage way</string> </property> </action> <action name="createRoundaboutAction"> <property name="text"> <string>R&oundabout</string> </property> <property name="toolTip"> <string>Create Roundabout</string> </property> <property name="menuRole"> <enum>QAction::NoRole</enum> </property> </action> <action name="fileNewAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/document_new.png</normaloff>:/Icons/actions/document_new.png</iconset> </property> <property name="text"> <string>&New</string> </property> <property name="statusTip"> <string>Create a new document</string> </property> </action> <action name="roadSplitAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/split_road.png</normaloff>:/Icons/actions/split_road.png</iconset> </property> <property name="text"> <string>&Split</string> </property> <property name="toolTip"> <string>Split road into separate (connected) roads</string> </property> <property name="shortcut"> <string>Alt+S</string> </property> </action> <action name="roadJoinAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/join_roads.png</normaloff>:/Icons/actions/join_roads.png</iconset> </property> <property name="text"> <string>&Join</string> </property> <property name="toolTip"> <string>Join connected roads to a single road</string> </property> <property name="shortcut"> <string>Alt+J</string> </property> </action> <action name="roadBreakAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/break_apart_roads.png</normaloff>:/Icons/actions/break_apart_roads.png</iconset> </property> <property name="text"> <string>&Break apart</string> </property> <property name="iconText"> <string>Break</string> </property> <property name="toolTip"> <string>Break apart connected roads</string> </property> <property name="shortcut"> <string>Alt+B</string> </property> </action> <action name="createRelationAction"> <property name="text"> <string>Re&lation</string> </property> <property name="toolTip"> <string>Create Relation</string> </property> </action> <action name="createAreaAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/create_area.png</normaloff>:/Icons/actions/create_area.png</iconset> </property> <property name="text"> <string>&Area</string> </property> <property name="toolTip"> <string>Create new area</string> </property> </action> <action name="editMapStyleAction"> <property name="text"> <string>&Edit...</string> </property> </action> <action name="mapStyleSaveAsAction"> <property name="text"> <string>Save &As...</string> </property> </action> <action name="mapStyleLoadAction"> <property name="text"> <string>&Load...</string> </property> </action> <action name="createCurvedRoadAction"> <property name="text"> <string>&Curved road</string> </property> </action> <action name="toolsPreferencesAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/preferences.png</normaloff>:/Icons/actions/preferences.png</iconset> </property> <property name="text"> <string>&Preferences...</string> </property> <property name="menuRole"> <enum>QAction::PreferencesRole</enum> </property> </action> <action name="exportOSMAllAction"> <property name="text"> <string>&All...</string> </property> <property name="statusTip"> <string>Export all visible layers to a file</string> </property> </action> <action name="exportOSMBinAllAction"> <property name="text"> <string>&All...</string> </property> <property name="statusTip"> <string>Export all visible layers to a file</string> </property> </action> <action name="editSelectAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/find.png</normaloff>:/Icons/actions/find.png</iconset> </property> <property name="text"> <string>&Find...</string> </property> <property name="toolTip"> <string>Find</string> </property> <property name="statusTip"> <string>Find and select items</string> </property> </action> <action name="exportOSMViewportAction"> <property name="text"> <string>&Viewport...</string> </property> <property name="statusTip"> <string>Export the features in the viewport to a file</string> </property> </action> <action name="exportOSMBinViewportAction"> <property name="text"> <string>&Viewport...</string> </property> <property name="statusTip"> <string>Export the features in the viewport to a file</string> </property> </action> <action name="bookmarkAddAction"> <property name="text"> <string>&Add...</string> </property> </action> <action name="bookmarkRemoveAction"> <property name="text"> <string>&Remove...</string> </property> </action> <action name="nodeMergeAction"> <property name="text"> <string>&Merge</string> </property> <property name="toolTip"> <string>Node Merge</string> </property> <property name="statusTip"> <string>Merge the selected nodes (first selected will remain)</string> </property> <property name="shortcut"> <string>Alt+M</string> </property> </action> <action name="fileSaveAsAction"> <property name="text"> <string>Save &As...</string> </property> </action> <action name="fileSaveAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/save.png</normaloff>:/Icons/actions/save.png</iconset> </property> <property name="text"> <string>&Save</string> </property> <property name="toolTip"> <string>Save to file</string> </property> <property name="shortcut"> <string>Ctrl+S</string> </property> </action> <action name="fileDownloadMoreAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/download_more.png</normaloff>:/Icons/actions/download_more.png</iconset> </property> <property name="text"> <string>Download more</string> </property> <property name="toolTip"> <string>Download more map data for the current area</string> </property> <property name="statusTip"> <string>Download the current view to the previous download layer</string> </property> <property name="whatsThis"> <string>Download the current view to the previous download layer</string> </property> <property name="shortcut"> <string>Ctrl+Shift+D</string> </property> </action> <action name="action_Docks"> <property name="text"> <string>&Docks</string> </property> </action> <action name="windowPropertiesAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Properties</string> </property> <property name="toolTip"> <string>Hide/Show the Properties dock</string> </property> <property name="statusTip"> <string>Hide/Show the Properties dock</string> </property> <property name="shortcut"> <string>Ctrl+P</string> </property> </action> <action name="windowLayersAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Layers</string> </property> <property name="toolTip"> <string>Hide/Show the Layers dock</string> </property> <property name="statusTip"> <string>Hide/Show the Layers dock</string> </property> <property name="shortcut"> <string>Ctrl+L</string> </property> </action> <action name="windowInfoAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Info</string> </property> <property name="toolTip"> <string>Hide/Show the Info dock</string> </property> <property name="statusTip"> <string>Hide/Show the Info dock</string> </property> <property name="shortcut"> <string>Ctrl+I</string> </property> </action> <action name="nodeAlignAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/align_nodes.png</normaloff>:/Icons/actions/align_nodes.png</iconset> </property> <property name="text"> <string>&Align</string> </property> <property name="toolTip"> <string>Align nodes</string> </property> <property name="statusTip"> <string>Align selected nodes. First two selected give the line.</string> </property> <property name="shortcut"> <string>Alt+A</string> </property> </action> <action name="nodeSpreadAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/spread_nodes.png</normaloff>:/Icons/actions/spread_nodes.png</iconset> </property> <property name="text"> <string>&Spread</string> </property> <property name="toolTip"> <string>Spread nodes</string> </property> <property name="statusTip"> <string>Align and spread selected nodes equally.</string> </property> </action> <action name="windowDirtyAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Undo</string> </property> <property name="toolTip"> <string>Hide/Show the Undo dock</string> </property> <property name="statusTip"> <string>Hide/Show the Undo dock</string> </property> <property name="shortcut"> <string>Ctrl+T</string> </property> </action> <action name="viewDownloadedAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show &downloaded areas</string> </property> <property name="shortcut"> <string>Ctrl+Alt+A</string> </property> </action> <action name="editCopyAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/edit_copy.png</normaloff>:/Icons/actions/edit_copy.png</iconset> </property> <property name="text"> <string>&Copy</string> </property> <property name="toolTip"> <string>Copy selected features and tags to the clipboard</string> </property> <property name="statusTip"> <string>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</string> </property> <property name="shortcut"> <string>Ctrl+C</string> </property> </action> <action name="editPasteOverwriteAction"> <property name="text"> <string>Paste Tags (&Overwrite)</string> </property> <property name="statusTip"> <string>Paste (and overwrite) the tags in the clipboard to the selected feature.</string> </property> <property name="shortcut"> <string>Ctrl+V, O</string> </property> </action> <action name="editPasteMergeAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/edit_paste_tags.png</normaloff>:/Icons/actions/edit_paste_tags.png</iconset> </property> <property name="text"> <string>Paste Tags (&Merge)</string> </property> <property name="iconText"> <string>Paste tags</string> </property> <property name="toolTip"> <string>Paste tags from the clipboard (Merge with existing tags)</string> </property> <property name="statusTip"> <string>Merge the tags in the clipboard with the ones of the selected feature.</string> </property> <property name="shortcut"> <string>Ctrl+V, M</string> </property> </action> <action name="exportOSMSelectedAction"> <property name="text"> <string>Selected...</string> </property> </action> <action name="exportOSMBinSelectedAction"> <property name="text"> <string>Selected...</string> </property> </action> <action name="editPasteFeatureAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/edit_paste.png</normaloff>:/Icons/actions/edit_paste.png</iconset> </property> <property name="text"> <string>Paste Feature(s)</string> </property> <property name="iconText"> <string>Paste</string> </property> <property name="toolTip"> <string>Paste features from the clipboard</string> </property> <property name="statusTip"> <string>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</string> </property> <property name="shortcut"> <string>Ctrl+V, F</string> </property> </action> <action name="exportOSMAction"> <property name="text"> <string>OSM (XML)</string> </property> </action> <action name="exportOSMBinAction"> <property name="text"> <string>OSM (Binary)</string> </property> </action> <action name="featureCommitAction"> <property name="text"> <string>&Force Upload</string> </property> <property name="toolTip"> <string>Commit feature to the dirty layer</string> </property> <property name="statusTip"> <string>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</string> </property> <property name="whatsThis"> <string>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</string> </property> </action> <action name="exportGPXAction"> <property name="text"> <string>GPX</string> </property> </action> <action name="exportKMLAction"> <property name="text"> <string>KML</string> </property> </action> <action name="windowToolbarAction"> <property name="text"> <string>Toggle Toolbar</string> </property> <property name="toolTip"> <string>Hide/Show the Toolbar</string> </property> <property name="statusTip"> <string>Hide/Show the Toolbar</string> </property> </action> <action name="windowHideAllAction"> <property name="text"> <string>Hide All</string> </property> <property name="shortcut"> <string>Ctrl+F</string> </property> </action> <action name="windowShowAllAction"> <property name="text"> <string>Show All</string> </property> <property name="shortcut"> <string>Ctrl+F</string> </property> <property name="visible"> <bool>false</bool> </property> </action> <action name="layersAddImageAction"> <property name="text"> <string>&Image layer</string> </property> </action> <action name="renderNativeAction"> <property name="text"> <string>&Raster/SVG</string> </property> </action> <action name="viewTrackPointsAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show &nodes</string> </property> <property name="shortcut"> <string>Ctrl+Alt+P</string> </property> </action> <action name="viewNamesAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show na&mes</string> </property> <property name="shortcut"> <string>Ctrl+Alt+N</string> </property> </action> <action name="gpsConnectAction"> <property name="text"> <string>&Start</string> </property> <property name="toolTip"> <string>Start GPS</string> </property> </action> <action name="gpsReplayAction"> <property name="text"> <string>&Replay...</string> </property> <property name="toolTip"> <string>Replay GPS</string> </property> </action> <action name="windowGPSAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&GPS</string> </property> <property name="toolTip"> <string>Hide/Show the GPS dock</string> </property> <property name="statusTip"> <string>Hide/Show the GPS dock</string> </property> <property name="shortcut"> <string>Ctrl+W</string> </property> </action> <action name="gpsDisconnectAction"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>S&top</string> </property> <property name="toolTip"> <string>Stop GPS</string> </property> </action> <action name="gpsCenterAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Center on GPS</string> </property> </action> <action name="viewTrackSegmentsAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show track &segments</string> </property> <property name="shortcut"> <string>Ctrl+Alt+T</string> </property> </action> <action name="viewScaleAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show &scale</string> </property> <property name="shortcut"> <string>Ctrl+Alt+S</string> </property> </action> <action name="viewRelationsAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show &relations</string> </property> <property name="shortcut"> <string>Ctrl+Alt+R</string> </property> </action> <action name="viewStyleForegroundAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show roads background</string> </property> </action> <action name="viewStyleBackgroundAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show roads boundary</string> </property> </action> <action name="viewStyleTouchupAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show touchup</string> </property> </action> <action name="gpsRecordAction"> <property name="checkable"> <bool>true</bool> </property> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Record</string> </property> <property name="iconText"> <string>Record</string> </property> <property name="toolTip"> <string>Record GPS</string> </property> </action> <action name="gpsPauseAction"> <property name="checkable"> <bool>true</bool> </property> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Pause</string> </property> <property name="toolTip"> <string>Pause GPS</string> </property> </action> <action name="windowGeoimageAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>G&eoImage</string> </property> <property name="toolTip"> <string>Hide/Show the GeoImage dock</string> </property> <property name="statusTip"> <string>Hide/Show the GeoImage dock</string> </property> <property name="shortcut"> <string>Ctrl+E</string> </property> </action> <action name="toolsWorldOsbAction"> <property name="text"> <string>World OSB manager...</string> </property> <property name="visible"> <bool>false</bool> </property> </action> <action name="toolsShortcutsAction"> <property name="text"> <string>&Shortcut Editor...</string> </property> </action> <action name="toolTemplatesLoadAction"> <property name="text"> <string>&Load...</string> </property> </action> <action name="toolTemplatesMergeAction"> <property name="text"> <string>&Merge...</string> </property> </action> <action name="toolTemplatesSaveAction"> <property name="text"> <string>&Save...</string> </property> </action> <action name="relationAddMemberAction"> <property name="text"> <string>&Add member</string> </property> </action> <action name="relationRemoveMemberAction"> <property name="text"> <string>&Remove member</string> </property> </action> <action name="viewArrowsNeverAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Never</string> </property> </action> <action name="viewArrowsOnewayAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>for &Oneway roads</string> </property> </action> <action name="viewArrowsAlwaysAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Always</string> </property> </action> <action name="nodeDetachAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/detach_node.png</normaloff>:/Icons/actions/detach_node.png</iconset> </property> <property name="text"> <string>&Detach</string> </property> <property name="toolTip"> <string>Detach node from a road</string> </property> <property name="statusTip"> <string>Detach a node from a Road</string> </property> </action> <action name="fileWorkOfflineAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/offline.png</normaloff>:/Icons/actions/offline.png</iconset> </property> <property name="text"> <string>&Work Offline</string> </property> </action> <action name="renderSVGAction"> <property name="text"> <string>SVG</string> </property> </action> <action name="windowStylesAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Styles</string> </property> <property name="iconText"> <string>Hide/Show the Styles dock</string> </property> <property name="toolTip"> <string>Hide/Show the Styles dock</string> </property> <property name="shortcut"> <string>Ctrl+B</string> </property> </action> <action name="toolsWMSServersAction"> <property name="text"> <string>&WMS Servers Editor...</string> </property> </action> <action name="toolsTMSServersAction"> <property name="text"> <string>&TMS Servers Editor...</string> </property> </action> <action name="toolsResetDiscardableAction"> <property name="text"> <string>&Reset Discardable dialogs status</string> </property> </action> <action name="gpsPopupAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/GPS.png</normaloff>:/Icons/actions/GPS.png</iconset> </property> <property name="text"> <string>GPS Menu</string> </property> </action> <action name="cameraAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/camera.png</normaloff>:/Icons/actions/camera.png</iconset> </property> <property name="text"> <string>Camera</string> </property> </action> <action name="roadCreateJunctionAction"> <property name="text"> <string>Create &Junction</string> </property> </action> <action name="editRotateAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/transform-rotate.png</normaloff>:/Icons/actions/transform-rotate.png</iconset> </property> <property name="text"> <string>Rotate</string> </property> <property name="shortcut"> <string>Ctrl+A</string> </property> </action> <action name="createPolygonAction"> <property name="text"> <string>&Polygon</string> </property> </action> <action name="createRectangleAction"> <property name="text"> <string>Rectangular &building</string> </property> </action> <action name="layersNewImageAction"> <property name="text"> <string>Add new &Image layer</string> </property> </action> <action name="windowFeatsAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Features</string> </property> </action> <action name="roadAddStreetNumbersAction"> <property name="text"> <string>Add street &numbers (Karlsruhe scheme)</string> </property> </action> <action name="roadSubdivideAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/subdivide_road.png</normaloff>:/Icons/actions/subdivide_road.png</iconset> </property> <property name="text"> <string>&Subdivide</string> </property> <property name="toolTip"> <string>Subdivide segment equally</string> </property> <property name="statusTip"> <string>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</string> </property> </action> <action name="viewVirtualNodesAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show &virtual nodes</string> </property> </action> <action name="viewShowLatLonGridAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show lat/lon &grid</string> </property> </action> <action name="viewLockZoomAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&Lock zoom to tiled background</string> </property> </action> <action name="toolsProjectionsAction"> <property name="text"> <string>&Projections Editor...</string> </property> </action> <action name="viewPhotosAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Show &Photos on map</string> </property> </action> <action name="exportOSCAction"> <property name="text"> <string>OsmChange (OSC)</string> </property> </action> <action name="featureDeleteAction"> <property name="text"> <string>Force Delete</string> </property> </action> <action name="layersOpenstreetbugsAction"> <property name="text"> <string>Add OpenStreet&Bugs layer</string> </property> </action> <action name="featureOsbClose"> <property name="text"> <string>Close</string> </property> </action> <action name="roadSimplifyAction"> <property name="text"> <string>S&implify</string> </property> <property name="toolTip"> <string>Simplify road(s)</string> </property> <property name="statusTip"> <string>Simplify way by removing unnecessary child nodes</string> </property> </action> <action name="toolsFiltersAction"> <property name="text"> <string>&Filters Editor...</string> </property> </action> <action name="filterNoneAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>&None</string> </property> </action> <action name="areaJoinAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/join_areas.png</normaloff>:/Icons/actions/join_areas.png</iconset> </property> <property name="text"> <string>&Join Areas</string> </property> <property name="toolTip"> <string>Join touching areas</string> </property> <property name="statusTip"> <string>Join areas which are touching.</string> </property> </action> <action name="areaSplitAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/split_area.png</normaloff>:/Icons/actions/split_area.png</iconset> </property> <property name="text"> <string>&Split Area</string> </property> <property name="toolTip"> <string>Split area between two nodes</string> </property> <property name="statusTip"> <string>Split a selected area between two selected nodes into two separate areas.</string> </property> </action> <action name="areaTerraceAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/terrace_building.png</normaloff>:/Icons/actions/terrace_building.png</iconset> </property> <property name="text"> <string>&Terrace</string> </property> <property name="toolTip"> <string>Terrace area into residences</string> </property> <property name="statusTip"> <string>Split a selected area into terraced residences.</string> </property> </action> <action name="toolsToolbarsAction"> <property name="text"> <string>Toolbar Editor...</string> </property> </action> <action name="roadAxisAlignAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/axisalign.png</normaloff>:/Icons/actions/axisalign.png</iconset> </property> <property name="text"> <string>A&xis Align</string> </property> <property name="toolTip"> <string>Align edges to regular axes</string> </property> <property name="statusTip"> <string>Align edges to a certain number of regularly spaced axes.</string> </property> </action> <action name="filePrintAction"> <property name="text"> <string>&Print...</string> </property> </action> <action name="filePrintPreviewAction"> <property name="text"> <string>Print preview...</string> </property> </action> <action name="filePropertiesAction"> <property name="text"> <string>Properties...</string> </property> </action> <action name="viewDirtyAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Highlight dirt&y features</string> </property> </action> <action name="layersNewDrawingAction"> <property name="text"> <string>Add new &Drawing layer</string> </property> </action> <action name="editCutAction"> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/edit-cut.png</normaloff>:/Icons/actions/edit-cut.png</iconset> </property> <property name="text"> <string>Cu&t</string> </property> <property name="shortcut"> <string>Ctrl+X</string> </property> </action> <action name="layersNewFilterAction"> <property name="text"> <string>Add new &Filter layer</string> </property> </action> <action name="roadExtrudeAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>E&xtrude</string> </property> <property name="toolTip"> <string>Extrude interaction for ways (JOSM style)</string> </property> <property name="shortcut"> <string>Alt+X</string> </property> </action> <action name="featureSelectAction"> <property name="text"> <string>Select toggle</string> </property> </action> <action name="featureSelectChildrenAction"> <property name="text"> <string>Include children in selection</string> </property> </action> <action name="editScaleAction"> <property name="checkable"> <bool>true</bool> </property> <property name="icon"> <iconset resource="../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/transform-scale.png</normaloff>:/Icons/actions/transform-scale.png</iconset> </property> <property name="text"> <string>Scale</string> </property> </action> <action name="fileSaveAsTemplateAction"> <property name="text"> <string>Save as Template Document...</string> </property> </action> <action name="actionCreate_Multipolygon"> <property name="text"> <string>Create Multipolygon</string> </property> </action> <action name="relationAddToMultipolygonAction"> <property name="text"> <string>Add to Multi&polygon</string> </property> </action> <action name="mapStyleSaveAction"> <property name="text"> <string>&Save</string> </property> </action> <action name="exportGDALAction"> <property name="text"> <string>GDAL</string> </property> </action> <action name="roadBingExtractAction"> <property name="text"> <string>Bing Road Detector</string> </property> </action> <action name="toolsRebuildHistoryAction"> <property name="text"> <string>Rebuild &History</string> </property> </action> <action name="layersMapdustAction"> <property name="text"> <string>Add Map&Dust layer</string> </property> </action> <action name="viewWireframeAction"> <property name="checkable"> <bool>true</bool> </property> <property name="text"> <string>Wireframe</string> </property> <property name="shortcut"> <string>Ctrl+Alt+W</string> </property> </action> <action name="featureSelectParentsAction"> <property name="text"> <string>Select parent(s)</string> </property> </action> <action name="featureDownloadMissingChildrenAction"> <property name="text"> <string>Download missing children</string> </property> </action> </widget> <resources> <include location="../Icons/AllIcons.qrc"/> </resources> <connections> <connection> <sender>fileQuitAction</sender> <signal>triggered()</signal> <receiver>MainWindow</receiver> <slot>close()</slot> <hints> <hint type="sourcelabel"> <x>-1</x> <y>-1</y> </hint> <hint type="destinationlabel"> <x>403</x> <y>322</y> </hint> </hints> </connection> </connections> </ui> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/�������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016564�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/NameFinder.pri�����������������������������������������������������0000664�0000000�0000000�00000000547�11770671653�0021316�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/NameFinder DEPENDPATH += $$MERKAARTOR_SRC_DIR/NameFinder SOURCES += xmlstreamreader.cpp \ httpquery.cpp \ namefindertablemodel.cpp \ namefinderwidget.cpp HEADERS += NameFinderResult.h \ xmlstreamreader.h \ httpquery.h \ namefindertablemodel.h \ namefinderwidget.h FORMS += namefinderwidget.ui ���������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/NameFinderResult.h�������������������������������������������������0000664�0000000�0000000�00000004612�11770671653�0022147�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef NAMEFINDERWIDGET_RESULT_H_ #define NAMEFINDERWIDGET_RESULT_H_ #include <QList> #include <QRectF> namespace NameFinder { //! Structure holding a single result of a query to the NameFinder service. /** * @author Łukasz Jernaś <deejay1@srem.org> */ class NameFinderResult { public: //! Name of the place found QString name; //! Type of the place found QString type; //! Category of the place (maps to key concept) QString category; //! Value of the category QString info; //! Coord of the POI QPointF coord; //! BBox of the feature QRectF bbox; //! Distance from coord to viewport center qreal distance; // //! The description as returned by the service. // QString description; // //! QList holding places which are near the result. // QList<NameFinderResult> near; bool operator<(const NameFinderResult &other) const { return distance < other.distance; } }; } #endif ����������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/httpquery.cpp������������������������������������������������������0000664�0000000�0000000�00000007076�11770671653�0021347�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "httpquery.h" #include <QtDebug> #include "MerkaartorPreferences.h" namespace NameFinder { HttpQuery::HttpQuery ( QObject *parent, QIODevice *device ) : QObject ( parent ) { myService = M_PREFS->getNominatimUrl(); myDevice = device; } HttpQuery::HttpQuery ( QObject *parent, QUrl service, QIODevice *device ) : QObject ( parent ) { myService = service; myDevice = device; } HttpQuery::~HttpQuery() { } bool HttpQuery::startSearch ( QString question ) { connect(&connection, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(on_responseHeaderReceived(const QHttpResponseHeader &))); connect(&connection,SIGNAL(requestFinished(int, bool)),this,SLOT(on_requestFinished(int, bool))); //if (!myService.isValid() || myService.scheme() != "http" || myService.path().isEmpty()) // return false; myService.addQueryItem ( "q",question ); myService.addQueryItem ( "format","xml" ); connection.setHost ( myService.host(), myService.port ( 80 ) ); QHttpRequestHeader request( "GET", myService.path() + "?" + myService.encodedQuery() ); if (myService.port(80) != 80) request.setValue( "Host", myService.host() + ":" + myService.port ( 80 ) ); else request.setValue( "Host", myService.host() ); request.setValue( "Connection", "Keep-Alive" ); request.setValue("User-Agent", USER_AGENT); connection.setProxy(M_PREFS->getProxy(myService)); reqId = connection.request( request, NULL, myDevice ); connection.close(); return true; } void HttpQuery::on_responseHeaderReceived(const QHttpResponseHeader & hdr) { switch (hdr.statusCode()) { case 200: break; default: qDebug() << hdr.statusCode(); qDebug() << hdr.reasonPhrase(); break; } } void HttpQuery::on_requestFinished ( int id, bool error ) { if ((id == reqId) && !error) { emit done(); } else if ((id == reqId) && error) { emit doneWithError(connection.error()); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/httpquery.h��������������������������������������������������������0000664�0000000�0000000�00000004417�11770671653�0021010�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef NAMEFINDERHTTPQUERY_H #define NAMEFINDERHTTPQUERY_H #include <QObject> #include <QIODevice> #include <QtNetwork/QHttp> #include <QUrl> namespace NameFinder { /** @author Łukasz Jernaś <deejay1@srem.org> */ class HttpQuery : public QObject { Q_OBJECT public: HttpQuery(QObject *parent, QIODevice *device); HttpQuery(QObject *parent, QUrl service, QIODevice *device); ~HttpQuery(); bool startSearch(QString question); signals: void done(); void doneWithError(QHttp::Error error); private: QHttp connection; QUrl url; //! What we are looking for... QString myQuestion; QUrl myService; //! Our input device - so we can use QFile, QBuffer, etc... QIODevice *myDevice; int reqId; private slots: void on_requestFinished ( int id, bool error ); void on_responseHeaderReceived(const QHttpResponseHeader & hdr); }; } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/namefindertablemodel.cpp�������������������������������������������0000664�0000000�0000000�00000007650�11770671653�0023441�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "namefindertablemodel.h" namespace NameFinder { NameFinderTableModel::NameFinderTableModel ( QObject *parent ) : QAbstractTableModel ( parent ) { showColumns = 2; myResults = NULL; } NameFinderTableModel::~NameFinderTableModel() { } int NameFinderTableModel::rowCount ( const QModelIndex &parent ) const { Q_UNUSED(parent) if ( myResults == NULL ) return 0; if ( !myResults->isEmpty() ) return myResults->count(); return 0; } int NameFinderTableModel::columnCount ( const QModelIndex &parent ) const { Q_UNUSED(parent) return showColumns; } void NameFinderTableModel::setResults ( QList<NameFinderResult> *results ) { myResults = results; reset(); } QVariant NameFinderTableModel::headerData ( int section, Qt::Orientation orientation, int role ) const { if ( role != Qt::DisplayRole ) return QVariant(); if ( orientation == Qt::Horizontal ) { switch ( section ) { case 0: return QString ( tr ( "Class" ) ); //break; case 1: return QString ( tr ( "Name" ) ); //break; default: return QString ( tr ( "Unknown field" ) ); } } else { return section; } return QVariant(); } QVariant NameFinderTableModel::data ( const QModelIndex &index, int role ) const { if ( !index.isValid() ) return QVariant(); if ( role == Qt::TextAlignmentRole ) { return int ( Qt::AlignCenter | Qt::AlignVCenter ); } else if ( role == Qt::DisplayRole ) { if ( myResults == NULL ) return QVariant(); if ( !myResults->isEmpty() ) { switch ( index.column() ) { case 0: return myResults->at ( index.row() ).category; break; case 1: return myResults->at ( index.row() ).name; break; default: return QVariant(); } } return QVariant(); } return QVariant(); } NameFinderResult NameFinderTableModel::resultAt ( int index ) { return myResults->at ( index ); } } ����������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/namefindertablemodel.h���������������������������������������������0000664�0000000�0000000�00000004676�11770671653�0023113�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef NAMEFINDERNAMEFINDERTABLEMODEL_H #define NAMEFINDERNAMEFINDERTABLEMODEL_H #include <QAbstractTableModel> #include <NameFinderResult.h> #include <QList> namespace NameFinder { /** This class implements a model for QTableView to filter out the unrelevant data as easy as possible @author Łukasz Jernaś <deejay1@srem.org> */ class NameFinderTableModel : public QAbstractTableModel { Q_OBJECT public: NameFinderTableModel(QObject *parent = 0); ~NameFinderTableModel(); int rowCount(const QModelIndex &parent) const; //! Returns the number of columns to display - currently capped at 3 int columnCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; //! void setResults(QList<NameFinderResult> *results); NameFinderResult resultAt(int index); QList<NameFinderResult> *myResults; private: //! How many columns to show int showColumns; }; } #endif ������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/namefinderwidget.cpp�����������������������������������������������0000664�0000000�0000000�00000012346�11770671653�0022612�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "namefinderwidget.h" #include "ui_namefinderwidget.h" #include "xmlstreamreader.h" #include "NameFinderResult.h" #include <QList> #include <QHeaderView> #include <QMessageBox> #include "MerkaartorPreferences.h" namespace NameFinder { NameFinderWidget::NameFinderWidget ( QWidget *parent ) : QWidget ( parent ), m_ui ( new Ui::NameFinderWidgetUi ) { m_ui->setupUi ( this ); model = new NameFinderTableModel(); m_ui->tableView->setModel ( model ); m_ui->tableView->horizontalHeader()->setStretchLastSection(true); // m_ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); m_ui->tableView->verticalHeader()->setVisible(false); selection = m_ui->tableView->selectionModel(); connect(selection, SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)), this,SLOT(selection_selectionChanged(const QItemSelection&,const QItemSelection&))); connect(m_ui->tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT (doubleClick())); } NameFinderWidget::~NameFinderWidget() { delete m_ui; delete model; delete selection; } void NameFinderWidget::changeEvent ( QEvent *e ) { switch ( e->type() ) { case QEvent::LanguageChange: m_ui->retranslateUi ( this ); break; default: break; } } void NameFinderWidget::search ( QString object, QPointF coord ) { theCenter = coord; query = new HttpQuery ( this, &buffer ); connect ( query, SIGNAL ( done() ), this, SLOT ( display() ) ); connect ( query, SIGNAL ( doneWithError(QHttp::Error) ), this, SLOT ( displayError(QHttp::Error) )); query->startSearch ( object ); } void NameFinderWidget::display() { XmlStreamReader reader ( &buffer, theCenter ); reader.read(); model->setResults ( new QList<NameFinderResult> ( reader.getResults() ) ); emit done(); } //! Displays a QMessageBox with the connection error void NameFinderWidget::displayError(QHttp::Error error) { QMessageBox errorBox; errorBox.setIcon(QMessageBox::Critical); errorBox.setWindowTitle(tr("Error!")); switch (error) { case QHttp::HostNotFound: errorBox.setText(tr("Name finder service host not found.")); break; case QHttp::ConnectionRefused: errorBox.setText(tr("Name finder service host refused connection.")); break; case QHttp::AuthenticationRequiredError: errorBox.setText(tr("Name finder service requires authentication.")); default: errorBox.setText(tr("Unknown error.")); } errorBox.exec(); emit done(); } QPointF NameFinderWidget::selectedCoords() { QModelIndexList selectedIndexes = selection->selectedIndexes(); QModelIndex selectedIndex; NameFinderResult result; foreach (selectedIndex, selectedIndexes) { result = model->resultAt ( selectedIndex.row() ); return result.coord; } return QPointF (); } QRectF NameFinderWidget::selectedBbox() { QModelIndexList selectedIndexes = selection->selectedIndexes(); QModelIndex selectedIndex; NameFinderResult result; foreach (selectedIndex, selectedIndexes) { result = model->resultAt ( selectedIndex.row() ); return result.bbox; } return QRectF(); } void NameFinderWidget::selection_selectionChanged(const QItemSelection & selected, const QItemSelection & deselected) { Q_UNUSED(selected) Q_UNUSED(deselected) emit selectionChanged(); } void NameFinderWidget::doubleClick() { emit doubleClicked(); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/namefinderwidget.h�������������������������������������������������0000664�0000000�0000000�00000005751�11770671653�0022261�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef NAMEFINDERWIDGET_H #define NAMEFINDERWIDGET_H #include <QtGui/QWidget> #include "httpquery.h" #include <QBuffer> #include "namefindertablemodel.h" namespace Ui { class NameFinderWidgetUi; } class QItemSelectionModel; class QItemSelection; namespace NameFinder { class NameFinderWidget : public QWidget { Q_OBJECT Q_DISABLE_COPY(NameFinderWidget) public: explicit NameFinderWidget(QWidget *parent = 0); virtual ~NameFinderWidget(); /** * Executes the search * @param object Specifies a feature to search for, can be * any string which the service recognizes. * WARNING: this widget currently * doesn't do any data validation on it! */ void search(QString object, QPointF coord); //! Returns the coordinates of selected map feature QPointF selectedCoords(); //! Returns the bbox of the selected map feature QRectF selectedBbox(); signals: void selectionChanged(); void doubleClicked(); void done(); protected: virtual void changeEvent(QEvent *e); private: Ui::NameFinderWidgetUi *m_ui; QBuffer buffer; HttpQuery *query; NameFinderTableModel *model; QList<NameFinderResult> *results; QItemSelectionModel *selection; QPointF theCenter; private slots: void display(); void displayError(QHttp::Error); void selection_selectionChanged(const QItemSelection & selected, const QItemSelection & deselected); void doubleClick(); }; } #endif // NAMEFINDERWIDGET_H �����������������������merkaartor-0.18.1/src/NameFinder/namefinderwidget.ui������������������������������������������������0000664�0000000�0000000�00000002031�11770671653�0022433�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>NameFinderWidgetUi</class> <widget class="QWidget" name="NameFinderWidgetUi"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>300</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QTableView" name="tableView"> <property name="contextMenuPolicy"> <enum>Qt::NoContextMenu</enum> </property> <property name="editTriggers"> <set>QAbstractItemView::NoEditTriggers</set> </property> <property name="alternatingRowColors"> <bool>true</bool> </property> <property name="selectionMode"> <enum>QAbstractItemView::SingleSelection</enum> </property> <property name="selectionBehavior"> <enum>QAbstractItemView::SelectRows</enum> </property> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/xmlstreamreader.cpp������������������������������������������������0000664�0000000�0000000�00000013641�11770671653�0022474�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "xmlstreamreader.h" #include <QStringList> #include <QLineF> namespace NameFinder { XmlStreamReader::XmlStreamReader(QIODevice *device, QPointF coord) { myDevice = device; theCenter = coord; } XmlStreamReader::~XmlStreamReader() { } bool XmlStreamReader::read() { myDevice->open(QIODevice::ReadOnly | QIODevice::Text); reader.setDevice(myDevice); reader.readNext(); while (!reader.atEnd()) { if (reader.isStartElement()) { if (reader.name() == "searchresults") { readSearchResultsElement(); } else { reader.raiseError(QObject::tr("Not a proper results stream!")); } } else { reader.readNext(); } } myDevice->close(); qSort(myResults.begin(), myResults.end()); // Implement error handling return true; } void XmlStreamReader::readSearchResultsElement() { reader.readNext(); while (!reader.atEnd()) { if (reader.isEndElement()) { reader.readNext(); break; } if (reader.isStartElement()) { if (reader.name() == "place") { readNamedElement(&myResults); } else { skipElement(); } } else { reader.readNext(); } } } void XmlStreamReader::readNamedElement(QList<NameFinderResult> *results) { NameFinderResult myResult; myResult.name = reader.attributes().value("display_name").toString(); myResult.type = reader.attributes().value("osm_type").toString(); QStringList sBbox = reader.attributes().value("boundingbox").toString().split(","); myResult.bbox = QRectF(QPointF(sBbox[2].toDouble(), sBbox[0].toDouble()), QPointF(sBbox[3].toDouble(), sBbox[1].toDouble())); myResult.coord = QPointF(reader.attributes().value("lon").toString().toDouble(), reader.attributes().value("lat").toString().toDouble()); myResult.category = reader.attributes().value("class").toString(); myResult.info = reader.attributes().value("type").toString(); myResult.distance = QLineF(theCenter, myResult.coord).length(); reader.readNext(); while (!reader.atEnd()) { if (reader.isEndElement()) { reader.readNext(); break; } if (reader.isStartElement()) { if (reader.name() == "place") { readNamedElement(results); // } else if (reader.name() == "description") { // readDescriptionElement(&myResult); // } else if (reader.name() == "nearestplaces") { // readNearestPlacesElement(&myResult); } else { skipElement(); } } else { reader.readNext(); } } results->append(myResult); } void XmlStreamReader::skipElement() { reader.readNext(); while (!reader.atEnd()) { if (reader.isEndElement()) { reader.readNext(); break; } if (reader.isStartElement()) { skipElement(); } else { reader.readNext(); } } } // void XmlStreamReader::readDescriptionElement(NameFinderResult *result) { // result->description = reader.readElementText(); // while (!reader.atEnd()) { // if (reader.isEndElement()) { // reader.readNext(); // break; // } else { // skipElement(); // } // } // } // // void XmlStreamReader::readNearestPlacesElement(NameFinderResult *result) { // reader.readNext(); // while (!reader.atEnd()) { // if (reader.isEndElement()) { // reader.readNext(); // break; // } // if (reader.isStartElement()) { // if (reader.name() == "named") { // QList<NameFinderResult> nearResults; // readNamedElement(&nearResults); // result->near = nearResults; // } else { // skipElement(); // } // } else { // reader.readNext(); // } // } // } QList<NameFinderResult> XmlStreamReader::getResults() { return myResults; } } �����������������������������������������������������������������������������������������������merkaartor-0.18.1/src/NameFinder/xmlstreamreader.h��������������������������������������������������0000664�0000000�0000000�00000004630�11770671653�0022137�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Łukasz Jernaś * * deejay1@srem.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef NAMEFINDERXMLSTREAMREADER_H #define NAMEFINDERXMLSTREAMREADER_H #include <QXmlStreamReader> #include <QIODevice> #include <NameFinderResult.h> namespace NameFinder { /** \brief Reads the XML file and places results in a QList of NameFinderResult @author Łukasz Jernaś <deejay1@srem.org> */ class XmlStreamReader { public: XmlStreamReader(QIODevice *buffer, QPointF coord); ~XmlStreamReader(); //! Reads the XML result. bool read(); QList<NameFinderResult> getResults(); private: NameFinderResult tmpResult; QList<NameFinderResult> myResults; QXmlStreamReader reader; QIODevice *myDevice; QPointF theCenter; void readSearchResultsElement(); void readNamedElement(QList<NameFinderResult> *results); // void readDescriptionElement(NameFinderResult *result); // //! Reads nearby places from the query // void readNearestPlacesElement(NameFinderResult *result); void skipElement(); int i; }; } #endif ��������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/�������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016650�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/FeaturePainter.cpp�������������������������������������������������0000664�0000000�0000000�00000071214�11770671653�0022277�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MapRenderer.h" #include "FeaturePainter.h" #include "Painting.h" #include "Projection.h" #include "Features.h" #include "LineF.h" #include "SvgCache.h" #include <QtCore/QString> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QMatrix> #include <QDomElement> #include <math.h> #define TEST_RFLAGS(x) theRenderer->theOptions.options.testFlag(x) #define CAPSTYLE Qt::RoundCap #define JOINSTYLE Qt::RoundJoin FeaturePainter::FeaturePainter() : Painter(), theTagSelector(0){ } FeaturePainter::FeaturePainter(const FeaturePainter& f) : Painter(f), theTagSelector(0) { if (f.theTagSelector) theTagSelector = f.theTagSelector->copy(); } FeaturePainter& FeaturePainter::operator=(const FeaturePainter& f) { if (&f == this) return *this; delete theTagSelector; if (f.theTagSelector) theTagSelector = f.theTagSelector->copy(); else theTagSelector = 0; ZoomLimitSet = f.ZoomLimitSet; ZoomUnder = f.ZoomUnder; ZoomUpper = f.ZoomUpper; DrawBackground = f.DrawBackground; BackgroundColor = f.BackgroundColor; BackgroundScale = f.BackgroundScale; BackgroundOffset = f.BackgroundOffset; DrawForeground = f.DrawForeground; ForegroundColor = f.ForegroundColor; ForegroundScale = f.ForegroundScale; ForegroundOffset = f.ForegroundOffset; ForegroundDashSet = f.ForegroundDashSet ; ForegroundDash = f.ForegroundDash; ForegroundWhite = f.ForegroundWhite; DrawTouchup = f.DrawTouchup; TouchupColor = f.TouchupColor; TouchupScale = f.TouchupScale; TouchupOffset = f.TouchupOffset; TouchupDashSet = f.TouchupDashSet; TouchupDash = f.TouchupDash; TouchupWhite = f.TouchupWhite; ForegroundFill = f.ForegroundFill; ForegroundFillFillColor = f.ForegroundFillFillColor; DrawTrafficDirectionMarks = f.DrawTrafficDirectionMarks; DrawIcon = f.DrawIcon; IconName = f.IconName; IconScale = f.IconScale; IconOffset = f.IconOffset; DrawLabel = f.DrawLabel; LabelColor = f.LabelColor; LabelScale = f.LabelScale; LabelOffset = f.LabelOffset; DrawLabelBackground = f.DrawLabelBackground; LabelBackgroundColor = f.LabelBackgroundColor; LabelFont = f.LabelFont; LabelTag = f.LabelTag; LabelBackgroundTag = f.LabelBackgroundTag; LabelHalo = f.LabelHalo; LabelArea = f.LabelArea; return *this; } FeaturePainter::FeaturePainter(const Painter& f) : Painter(f), theTagSelector(0) { if (!f.theSelector.isEmpty()) theTagSelector = TagSelector::parse(f.theSelector); } FeaturePainter& FeaturePainter::operator=(const Painter& f) { if (&f == this) return *this; delete theTagSelector; if (!f.theSelector.isEmpty()) theTagSelector = TagSelector::parse(f.theSelector); else theTagSelector = 0; ZoomLimitSet = f.ZoomLimitSet; ZoomUnder = f.ZoomUnder; ZoomUpper = f.ZoomUpper; DrawBackground = f.DrawBackground; BackgroundColor = f.BackgroundColor; BackgroundScale = f.BackgroundScale; BackgroundOffset = f.BackgroundOffset; DrawForeground = f.DrawForeground; ForegroundColor = f.ForegroundColor; ForegroundScale = f.ForegroundScale; ForegroundOffset = f.ForegroundOffset; ForegroundDashSet = f.ForegroundDashSet ; ForegroundDash = f.ForegroundDash; ForegroundWhite = f.ForegroundWhite; DrawTouchup = f.DrawTouchup; TouchupColor = f.TouchupColor; TouchupScale = f.TouchupScale; TouchupOffset = f.TouchupOffset; TouchupDashSet = f.TouchupDashSet; TouchupDash = f.TouchupDash; TouchupWhite = f.TouchupWhite; ForegroundFill = f.ForegroundFill; ForegroundFillFillColor = f.ForegroundFillFillColor; DrawTrafficDirectionMarks = f.DrawTrafficDirectionMarks; DrawIcon = f.DrawIcon; IconName = f.IconName; IconScale = f.IconScale; IconOffset = f.IconOffset; DrawLabel = f.DrawLabel; LabelColor = f.LabelColor; LabelScale = f.LabelScale; LabelOffset = f.LabelOffset; DrawLabelBackground = f.DrawLabelBackground; LabelBackgroundColor = f.LabelBackgroundColor; LabelFont = f.LabelFont; LabelTag = f.LabelTag; LabelBackgroundTag = f.LabelBackgroundTag; LabelHalo = f.LabelHalo; LabelArea = f.LabelArea; return *this; } FeaturePainter::~FeaturePainter() { delete theTagSelector; } void FeaturePainter::setSelector(const QString& anExpression) { delete theTagSelector; theTagSelector = TagSelector::parse(anExpression); theSelector = anExpression; } void FeaturePainter::setSelector(TagSelector* aSel) { delete theTagSelector; theTagSelector = aSel; theSelector = aSel->asExpression(false); } TagSelectorMatchResult FeaturePainter::matchesTag(const Feature* F, MapRenderer* theRender) const { TagSelectorMatchResult res; if (!theTagSelector) return TagSelect_NoMatch; // Special casing for multipolygon roads //if (const Road* R = dynamic_cast<const Road*>(F)) //{ // // TODO create a isPartOfMultiPolygon(R) function for this // for (int i=0; i<R->sizeParents(); ++i) // { // if (const Relation* Parent = dynamic_cast<const Relation*>(R->getParent(i))) // if (Parent->tagValue("type","") == "multipolygon") // return TagSelect_NoMatch; // } //} if (theRender) res = theTagSelector->matches(F,theRender->thePixelPerM); else res = theTagSelector->matches(F,0); if (res) return res; // Special casing for multipolygon relations //if (const Relation* R = dynamic_cast<const Relation*>(F)) //{ // for (int i=0; i<R->size(); ++i) // if ((res = theSelector->matches(R->get(i)))) // return res; //} return TagSelect_NoMatch; } /* void buildPathFromRoad(Road *R, const Projection &theProjection, QPainterPath &Path) { Path.moveTo(theProjection.project(R->get(0))); for (int i=1; i<R->size(); ++i) Path.lineTo(theProjection.project(R->get(i))); } void buildPathFromRelation(Relation *R, const Projection &theProjection, QPainterPath &Path) { for (int i=0; i<R->size(); ++i) if (Road* M = dynamic_cast<Road*>(R->get(i))) buildPathFromRoad(M, theProjection, Path); } */ void FeaturePainter::drawBackground(Node* N, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawBackground) return; qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*BackgroundScale+BackgroundOffset; if (WW >= 0) { QPointF P(theRenderer->toView(N)); QRect R(P.x()-WW/2, P.y()-WW/2, WW, WW); thePainter->fillRect(R,BackgroundColor); } } void FeaturePainter::drawBackground(Way* R, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawBackground && !ForegroundFill && !ForegroundFillUseIcon) return; thePainter->setPen(Qt::NoPen); if (M_PREFS->getAreaOpacity() != 100 && ForegroundFill) { thePainter->setOpacity(qreal(M_PREFS->getAreaOpacity()) / 100); } if (DrawBackground) { qreal WW = theRenderer->thePixelPerM*R->widthOf()*BackgroundScale+BackgroundOffset; if (WW >= 0) { if (BackgroundExterior || BackgroundInterior) { QPen thePen(BackgroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(Qt::BevelJoin); thePainter->setPen(thePen); QPainterPath thePath = theRenderer->theTransform.map(R->getPath()); QPainterPath aPath; for (int j=1; j < thePath.elementCount(); j++) { QLineF l(QPointF(thePath.elementAt(j)), QPointF(thePath.elementAt(j-1))); QLineF l1 = l.normalVector(); if (BackgroundInterior) l1.setAngle(l1.angle() + 180.); l1.setLength(WW / 2.0); if (j == 1) { QLineF l3(l1); l3.translate(l.p2() - l.p1()); aPath.moveTo(l3.p2()); } if (j < thePath.elementCount() - 1) { QLineF l4(QPointF(thePath.elementAt(j)), QPointF(thePath.elementAt(j+1))); qreal theAngle = (l4.angle() - l.angle()) / 2.0; if (BackgroundInterior) { if (theAngle > 0.0) theAngle -= 180.0; l1.setLength(-1/sin(angToRad(theAngle))*l1.length()); } else { if (theAngle < 0.0) theAngle += 180.0; l1.setLength(1/sin(angToRad(theAngle))*l1.length()); } l1.setAngle(l.angle() + theAngle); } aPath.lineTo(l1.p2()); } thePainter->drawPath(aPath); thePainter->setPen(Qt::NoPen); } else { QPen thePen(BackgroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); ////thePainter->strokePath(R->getPath(),thePen); thePainter->setPen(thePen); } } } thePainter->setBrush(Qt::NoBrush); if (R->size() > 2) { if (ForegroundFillUseIcon) { if (!IconName.isEmpty()) { qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*IconScale+IconOffset; QImage* pm = getSVGImageFromFile(IconName,int(WW)); if (pm && !pm->isNull()) { thePainter->setBrush(*pm); } } } else if (ForegroundFill) { thePainter->setBrush(ForegroundFillFillColor); } } thePainter->drawPath(theRenderer->theTransform.map(R->getPath())); } void FeaturePainter::drawBackground(Relation* R, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawBackground && !ForegroundFill && !ForegroundFillUseIcon) return; thePainter->setPen(Qt::NoPen); if (M_PREFS->getAreaOpacity() != 100 && ForegroundFill) { thePainter->setOpacity(qreal(M_PREFS->getAreaOpacity()) / 100); } if (DrawBackground) { qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*R->widthOf()*BackgroundScale+BackgroundOffset; if (WW >= 0) { if (BackgroundExterior || BackgroundInterior) { QPen thePen(BackgroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(Qt::BevelJoin); thePainter->setPen(thePen); QPainterPath thePath = theRenderer->theTransform.map(R->getPath()); QPainterPath aPath; for (int j=1; j < thePath.elementCount(); j++) { QLineF l(QPointF(thePath.elementAt(j)), QPointF(thePath.elementAt(j-1))); QLineF l1 = l.normalVector(); if (BackgroundInterior) l1.setAngle(l1.angle() + 180.); l1.setLength(WW / 2.0); if (j == 1) { QLineF l3(l1); l3.translate(l.p2() - l.p1()); aPath.moveTo(l3.p2()); } if (j < thePath.elementCount() - 1) { QLineF l4(QPointF(thePath.elementAt(j)), QPointF(thePath.elementAt(j+1))); qreal theAngle = (l4.angle() - l.angle()) / 2.0; if (BackgroundInterior) { if (theAngle > 0.0) theAngle -= 180.0; l1.setLength(-1/sin(angToRad(theAngle))*l1.length()); } else { if (theAngle < 0.0) theAngle += 180.0; l1.setLength(1/sin(angToRad(theAngle))*l1.length()); } l1.setAngle(l.angle() + theAngle); } aPath.lineTo(l1.p2()); } thePainter->drawPath(aPath); thePainter->setPen(Qt::NoPen); } else { QPen thePen(BackgroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); ////thePainter->strokePath(R->getPath(),thePen); thePainter->setPen(thePen); } } } thePainter->setBrush(Qt::NoBrush); if (ForegroundFillUseIcon) { if (!IconName.isEmpty()) { qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*IconScale+IconOffset; QImage* pm = getSVGImageFromFile(IconName,int(WW)); if (pm && !pm->isNull()) { thePainter->setBrush(*pm); } } } else if (ForegroundFill) { thePainter->setBrush(ForegroundFillFillColor); } thePainter->drawPath(theRenderer->theTransform.map(R->getPath())); } void FeaturePainter::drawForeground(Node* N, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawForeground) return; qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*ForegroundScale+ForegroundOffset; if (WW >= 0) { QPointF P(theRenderer->toView(N)); QRect R(P.x()-WW/2, P.y()-WW/2, WW, WW); thePainter->fillRect(R,ForegroundColor); } } void FeaturePainter::drawForeground(Way* R, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawForeground) return; qreal WW = 0.0; if (DrawForeground) { qreal PixelPerM = theRenderer->thePixelPerM; WW = PixelPerM*R->widthOf()*ForegroundScale+ForegroundOffset; if (WW < 0) return; QPen thePen(ForegroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); if (ForegroundDashSet) { QVector<qreal> Pattern; Pattern << ForegroundDash << ForegroundWhite; thePen.setDashPattern(Pattern); } thePainter->setPen(thePen); } else thePainter->setPen(Qt::NoPen); thePainter->setBrush(Qt::NoBrush); thePainter->drawPath(theRenderer->theTransform.map(R->getPath())); } void FeaturePainter::drawForeground(Relation* R, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawForeground) return; qreal WW = 0.0; if (DrawForeground) { qreal PixelPerM = theRenderer->thePixelPerM; WW = PixelPerM*R->widthOf()*ForegroundScale+ForegroundOffset; if (WW < 0) return; QPen thePen(ForegroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); if (ForegroundDashSet) { QVector<qreal> Pattern; Pattern << ForegroundDash << ForegroundWhite; thePen.setDashPattern(Pattern); } thePainter->setPen(thePen); } else thePainter->setPen(Qt::NoPen); thePainter->setBrush(Qt::NoBrush); thePainter->drawPath(theRenderer->theTransform.map(R->getPath())); } void FeaturePainter::drawTouchup(Node* Pt, QPainter* thePainter, MapRenderer* theRenderer) const { bool IconOK = false; if (DrawIcon) { if (!IconName.isEmpty()) { qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*IconScale+IconOffset; QImage* pm = getSVGImageFromFile(IconName,int(WW)); if (pm && !pm->isNull()) { IconOK = true; QPointF C(theRenderer->theTransform.map(Pt->projected())); // cbro-20090109: Don't draw the dot if there is an icon // thePainter->fillRect(QRect(C-QPoint(2,2),QSize(4,4)),QColor(0,0,0,128)); thePainter->drawImage( int(C.x()-pm->width()/2), int(C.y()-pm->height()/2) , *pm); } } if (!IconOK) { QColor theColor = QColor(0,0,0,128); if (DrawForeground) theColor = ForegroundColor; else if (DrawBackground) theColor = BackgroundColor; QPointF P(theRenderer->toView(Pt)); qreal WW = theRenderer->NodeWidth; if (WW >= 1) { if (Pt->layer()->classGroups() & Layer::Special) { QRect R2(P.x()-WW*4/3/2, P.y()-WW*4/3/2, WW*4/3, WW*4/3); thePainter->fillRect(R2,QColor(255,0,255,192)); } else if (Pt->isWaypoint()) { QRect R2(P.x()-WW*4/3/2, P.y()-WW*4/3/2, WW*4/3, WW*4/3); thePainter->fillRect(R2,QColor(255,0,0,192)); } QRect R(P.x()-WW/2, P.y()-WW/2, WW, WW); thePainter->fillRect(R,theColor); } } } } void FeaturePainter::drawTouchup(Way* R, QPainter* thePainter, MapRenderer* theRenderer) const { if (DrawTouchup) { qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*R->widthOf()*TouchupScale+TouchupOffset; if (WW > 0) { QPen thePen(TouchupColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); if (TouchupDashSet) { QVector<qreal> Pattern; Pattern << TouchupDash << TouchupWhite; thePen.setDashPattern(Pattern); } thePainter->strokePath(theRenderer->theTransform.map(R->getPath()),thePen); } } if (DrawIcon && !ForegroundFillUseIcon) { if (!IconName.isEmpty()) { qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*IconScale+IconOffset; QImage* pm = getSVGImageFromFile(IconName,int(WW)); if (pm && !pm->isNull()) { QPointF C(theRenderer->theTransform.map(R->getPath().boundingRect().center())); thePainter->drawImage( int(C.x()-pm->width()/2), int(C.y()-pm->height()/2) , *pm); } } } if ( ((DrawTrafficDirectionMarks) && (theRenderer->theOptions.arrowOptions == RendererOptions::ArrowsOneway)) || theRenderer->theOptions.arrowOptions == RendererOptions::ArrowsAlways) { Feature::TrafficDirectionType TT = trafficDirection(R); if ( (TT != Feature::UnknownDirection) || (theRenderer->theOptions.arrowOptions == RendererOptions::ArrowsAlways) ) { qreal theWidth = theRenderer->thePixelPerM*R->widthOf()-4; if (theWidth > 8) theWidth = 8; qreal DistFromCenter = 2*(theWidth+4); if (theWidth > 0) { if ( theRenderer->theOptions.arrowOptions == RendererOptions::ArrowsAlways ) thePainter->setPen(QPen(QColor(255,0,0), 2)); else thePainter->setPen(QPen(TrafficDirectionMarksColor, 2)); for (int i=1; i<R->size(); ++i) { QPointF FromF(theRenderer->theTransform.map(R->getNode(i-1)->projected())); QPointF ToF(theRenderer->theTransform.map(R->getNode(i)->projected())); if (distance(FromF,ToF) > (DistFromCenter*2+4)) { QPoint H(FromF.toPoint()+ToF.toPoint()); H *= 0.5; if (!theRenderer->theScreen.contains(H)) continue; qreal A = angle(FromF-ToF); QPoint T(qRound(DistFromCenter*cos(A)),qRound(DistFromCenter*sin(A))); QPoint V1(qRound(theWidth*cos(A+M_PI/6)),qRound(theWidth*sin(A+M_PI/6))); QPoint V2(qRound(theWidth*cos(A-M_PI/6)),qRound(theWidth*sin(A-M_PI/6))); if ( (TT == Feature::OtherWay) || (TT == Feature::BothWays) ) { thePainter->drawLine(H+T,H+T-V1); thePainter->drawLine(H+T,H+T-V2); } if ( (TT == Feature::OneWay) || (TT == Feature::BothWays) ) { thePainter->drawLine(H-T,H-T+V1); thePainter->drawLine(H-T,H-T+V2); } else { if ( theRenderer->theOptions.arrowOptions == RendererOptions::ArrowsAlways ) { thePainter->drawLine(H-T,H-T+V1); thePainter->drawLine(H-T,H-T+V2); } } } } } } } } #define LABEL_PATH_DISTANCE 3 #define LABEL_STRAIGHT_DISTANCE 50 #define BG_SPACING 6 #define BG_PEN_SZ 2 void FeaturePainter::drawPointLabel(QPointF C, QString str, QString strBg, QPainter* thePainter, MapRenderer* theRenderer) const { LineParameters lp = labelBoundary(); qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*lp.Proportional+lp.Fixed; if (WW < 10) return; QFont font = getLabelFont(); font.setPixelSize(int(WW)); QFontMetrics metrics(font); int modX = 0; int modY = 0; QPainterPath textPath; QPainterPath bgPath; if (!str.isEmpty()) { modX = - (metrics.width(str)/2); if (DrawIcon && (IconName != "") ) { QImage pm(IconName); modY = - pm.height(); if (DrawLabelBackground) modY -= BG_SPACING; } textPath.addText(modX, modY, font, str); thePainter->translate(C); } if (DrawLabelBackground && !strBg.isEmpty()) { modX = - (metrics.width(strBg)/2); if (DrawIcon && (IconName != "") ) { QImage pm(IconName); modY = - pm.height(); if (DrawLabelBackground) modY -= BG_SPACING; } textPath.addText(modX, modY, font, strBg); thePainter->translate(C); bgPath.addRect(textPath.boundingRect().adjusted(-BG_SPACING, -BG_SPACING, BG_SPACING, BG_SPACING)); thePainter->setPen(QPen(LabelColor, BG_PEN_SZ)); thePainter->setBrush(LabelBackgroundColor); thePainter->drawPath(bgPath); } if (getLabelHalo()) { thePainter->setPen(QPen(Qt::white, font.pixelSize()/5)); thePainter->drawPath(textPath); } thePainter->setPen(Qt::NoPen); thePainter->setBrush(LabelColor); thePainter->drawPath(textPath); if (DrawLabelBackground && !strBg.isEmpty()) { QRegion rg = thePainter->clipRegion(); rg -= textPath.boundingRect().toRect().translated(C.toPoint()); thePainter->setClipRegion(theRenderer->theTransform.map(rg)); } } void FeaturePainter::drawLabel(Node* Pt, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawLabel) return; QString str = Pt->tagValue(getLabelTag(), ""); QString strBg = Pt->tagValue(getLabelBackgroundTag(), ""); if (str.isEmpty() && strBg.isEmpty()) return; QPointF C(theRenderer->theTransform.map(Pt->projected())); drawPointLabel(C, str, strBg, thePainter, theRenderer); } void FeaturePainter::drawLabel(Way* R, QPainter* thePainter, MapRenderer* theRenderer) const { if (!DrawLabel) return; QString str = R->tagValue(getLabelTag(), ""); QString strBg = R->tagValue(getLabelBackgroundTag(), ""); if (str.isEmpty() && strBg.isEmpty()) return; if (getLabelArea()) { QPointF C(theRenderer->theTransform.map(R->getPath().boundingRect().center())); // if (rg.contains(C.toPoint())) { drawPointLabel(C, str, strBg, thePainter, theRenderer); // } return; } LineParameters lp = labelBoundary(); qreal PixelPerM = theRenderer->thePixelPerM; qreal WW = PixelPerM*R->widthOf()*lp.Proportional+lp.Fixed; if (WW < 10 && !TEST_RFLAGS(RendererOptions::PrintAllLabels)) return; //qreal WWR = qMax(PixelPerM*R->widthOf()*BackgroundScale+BackgroundOffset, PixelPerM*R->widthOf()*ForegroundScale+ForegroundOffset); QPainterPath tranformedRoadPath = theRenderer->theTransform.map(R->getPath()); QFont font = getLabelFont(); //#if QT_VERSION >= 0x040700 || defined(FORCE_46) // qreal pathSurface = tranformedRoadPath.controlPointRect().width() * tranformedRoadPath.controlPointRect().height(); // if (pathSurface > theRenderer->theScreen.width() * theRenderer->theScreen.height() * 3) { // QPainterPath clipPath; // clipPath.addRect(theRenderer->theScreen.adjusted(-500, -500, 500, 500)); // tranformedRoadPath = clipPath.intersected(tranformedRoadPath); // } //#endif if (!str.isEmpty()) { font.setPixelSize(int(WW)); QFontMetricsF metrics(font); qreal strWidth = metrics.width(str); if ((font.pixelSize() >= 5 || TEST_RFLAGS(RendererOptions::PrintAllLabels)) && tranformedRoadPath.length() > strWidth) { thePainter->setFont(font); int repeat = int((tranformedRoadPath.length() / ((strWidth * LABEL_PATH_DISTANCE))) - 0.5); int numSegment = repeat+1; qreal lenSegment = tranformedRoadPath.length() / numSegment; qreal startSegment = 0; QPainterPath textPath; do { qreal curLen = startSegment + ((lenSegment - strWidth) / 2); int modIncrement = 1; qreal modAngle = 0; qreal modY = 0; if (cos(angToRad(tranformedRoadPath.angleAtPercent((startSegment+(lenSegment/2))/tranformedRoadPath.length()))) < 0) { modIncrement = -1; modAngle = 180.0; curLen += strWidth; } for (int i = 0; i < str.length(); ++i) { qreal t = tranformedRoadPath.percentAtLength(curLen); QPointF pt = tranformedRoadPath.pointAtPercent(t); // if (!theRenderer->theScreen.contains(pt.toPoint())) // continue; qreal angle = tranformedRoadPath.angleAtPercent(t); // modY = (metrics.ascent()/2)-3; modY = (metrics.height()/2)-metrics.descent(); QMatrix m; m.translate(pt.x(), pt.y()); m.rotate(-angle+modAngle); QPainterPath charPath; charPath.addText(0, modY, font, str.mid(i, 1)); charPath = charPath * m; textPath.addPath(charPath); qreal incremenet = metrics.width(str[i]); curLen += (incremenet * modIncrement); } startSegment += lenSegment; } while (--repeat >= 0); if (getLabelHalo()) { thePainter->setPen(QPen(Qt::white, font.pixelSize()/6)); thePainter->drawPath(textPath); } thePainter->setPen(Qt::NoPen); thePainter->setBrush(LabelColor); thePainter->drawPath(textPath); } } if (DrawLabelBackground && !strBg.isEmpty()) { QRegion rg = thePainter->clipRegion(); font.setPixelSize(int(WW)); QFontMetrics metrics(font); qreal strWidth = metrics.width(strBg); int repeat = int((tranformedRoadPath.length() / (strWidth * LABEL_STRAIGHT_DISTANCE)) - 0.5); int numSegment = repeat+1; qreal lenSegment = tranformedRoadPath.length() / numSegment; qreal startSegment = 0; do { int modX = 0; int modY = 0; qreal curLen = startSegment + (lenSegment / 2); qreal t = tranformedRoadPath.percentAtLength(curLen); QPointF pt = tranformedRoadPath.pointAtPercent(t); modX = - (strWidth/2); //modX = WW; modY = (metrics.ascent()/2); QPainterPath textPath, bgPath; textPath.addText(modX, modY, font, strBg); bgPath.addRect(textPath.boundingRect().adjusted(-BG_SPACING, -BG_SPACING, BG_SPACING, BG_SPACING)); if (rg.contains(bgPath.boundingRect().toRect().translated(pt.toPoint()))) { thePainter->translate(pt); thePainter->setPen(QPen(LabelColor, BG_PEN_SZ)); thePainter->setBrush(LabelBackgroundColor); thePainter->drawPath(bgPath); if (getLabelHalo()) { thePainter->setPen(QPen(Qt::white, font.pixelSize()/5)); thePainter->drawPath(textPath); } thePainter->setPen(Qt::NoPen); thePainter->setBrush(LabelColor); thePainter->drawPath(textPath); rg -= bgPath.boundingRect().toRect().translated(pt.toPoint()); } startSegment += lenSegment; } while (--repeat >= 0); thePainter->setClipRegion(rg); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/FeaturePainter.h���������������������������������������������������0000664�0000000�0000000�00000004075�11770671653�0021745�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_FEATUREPAINTER_H_ #define MERKAARTOR_FEATUREPAINTER_H_ #include <QtCore/QString> #include <QtGui/QColor> #include <QFont> #include <QList> #include <QPair> #include <QPointF> #include <Painter.h> #include "TagSelector.h" class MapRenderer; class Feature; class Projection; class Relation; class Way; class TagSelector; class Node; class QPainter; class QPainterPath; class QFont; class QDomElement; class FeaturePainter : public Painter { public: FeaturePainter(); FeaturePainter(const FeaturePainter& f); FeaturePainter& operator=(const FeaturePainter& F); FeaturePainter(const Painter& f); FeaturePainter& operator=(const Painter& F); ~FeaturePainter(); void setSelector(const QString& aName); void setSelector(TagSelector* aSelector); TagSelectorMatchResult matchesTag(const Feature* F, MapRenderer* theRender) const; QString toXML(QString filename) const; static FeaturePainter fromXML(const QDomElement& e, QString filename); virtual void drawBackground(Node *N, QPainter *thePainter, MapRenderer *theRender) const; virtual void drawBackground(Way* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawBackground(Relation* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawForeground(Node *N, QPainter *thePainter, MapRenderer* theRender) const; virtual void drawForeground(Way* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawForeground(Relation* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawTouchup(Way* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawTouchup(Node* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawLabel(Way* R, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawPointLabel(QPointF C, QString str, QString strBG, QPainter* thePainter, MapRenderer* theRender) const; virtual void drawLabel(Node* Pt, QPainter* thePainter, MapRenderer* theRender) const; public: TagSelector* theTagSelector; }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/IPaintStyle.h������������������������������������������������������0000664�0000000�0000000�00000001320�11770671653�0021222�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef IPAINTSTYLE_H #define IPAINTSTYLE_H #include "Painter.h" class MapView; #include <QList> class IPaintStyle { public: virtual int painterSize() = 0; virtual const GlobalPainter& getGlobalPainter() const = 0; virtual void setGlobalPainter(GlobalPainter aGlobalPainter) = 0; virtual const Painter* getPainter(int i) const = 0; virtual QList<Painter> getPainters() const = 0; virtual void setPainters(QList<Painter> aPainters) = 0; virtual bool isDirty() = 0; virtual QString getFilename() = 0; virtual void savePainters(const QString& filename) = 0; virtual void loadPainters(const QString& filename) = 0; virtual ~IPaintStyle() {}; }; #endif // IPAINTSTYLE_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/MapCSSPaintstyle.cpp�����������������������������������������������0000664�0000000�0000000�00000005617�11770671653�0022530�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MapCSSPaintstyle.h" #include "TagSelector.h" #include <QtCore/QFile> #include <QtCore/QTextStream> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QtXml/QDomDocument> #include <QtXml/QDomNode> #include <QHash> #include <QDebug> #include <math.h> #include <utility> //#define GLOBALZOOM 0.002 MapCSSPaintstyle* MapCSSPaintstyle::m_MapCSSInstance = 0; #define ALWAYS 10e6 /* Zoom boundaries : expressed in Pixel per Meter eg 0.01->ALWAYS means show a feature from a zoom level of 0.01 Pixel Per M, or 100 Meter per Pixel. For a screen of 1000px wide this is when viewing 100km or less across. eg 0.2->ALWAYS means show a feature from a zoom level 0.2 Px/M or 5M/Px which is viewing 5km or less across a screen of 1000Px. */ /* EDITPAINTSTYLE */ MapCSSPaintstyle::MapCSSPaintstyle() { } MapCSSPaintstyle::~MapCSSPaintstyle(void) { } void MapCSSPaintstyle::savePainters(const QString& /*filename*/) { } QString parseSelector(QString in) { QString out = in; // int idx = 0; // QList<TagSelector*> terms; // while (idx < in.length()) { // TagSelector* t = TagSelector::parse(in, idx); // if (!t) break; // terms.append(t); // } // if (terms.length()) { // out += terms[terms.length()-1]->asExpression(true); // for (int i=terms.length()-2; i>=0; --i) { // out += " and parent("; // out += terms[i]->asExpression(true); // out += ") "; // } // } return out; } void MapCSSPaintstyle::loadPainters(const QString& filename) { QFile file(filename); if (!file.open(QIODevice::ReadOnly)) return; QByteArray css = file.readAll(); QString cssS(css); file.close(); /* Remove comments */ QRegExp cssComments("/\\*.*\\*/"); cssComments.setMinimal(true); cssS.replace(cssComments, ""); /* Styles */ QRegExp cssStyle("\\s*(.*)\\s*\\{(.*)\\}"); cssStyle.setMinimal(true); QRegExp blanks("\\s*"); QRegExp attSep("\\s*;\\s*"); QHash <QString, QStringList> styles; int pos=0; while (cssStyle.indexIn(cssS, pos) != -1) { QString selector = parseSelector(cssStyle.capturedTexts().at(1).trimmed()); QString attributes = cssStyle.capturedTexts().at(2).trimmed(); styles[selector] = attributes.split(attSep); pos += cssStyle.matchedLength(); } qDebug() << styles; } int MapCSSPaintstyle::painterSize() { return Painters.size(); } const GlobalPainter& MapCSSPaintstyle::getGlobalPainter() const { return globalPainter; } void MapCSSPaintstyle::setGlobalPainter(GlobalPainter aGlobalPainter) { globalPainter = aGlobalPainter; } const Painter* MapCSSPaintstyle::getPainter(int i) const { return &(Painters[i]); } QList<Painter> MapCSSPaintstyle::getPainters() const { return Painters; } void MapCSSPaintstyle::setPainters(QList<Painter> aPainters) { Painters = aPainters; } �����������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/MapCSSPaintstyle.h�������������������������������������������������0000664�0000000�0000000�00000002045�11770671653�0022165�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_MAPCSSPAINTSTYLE_H_ #define MERKAARTOR_MAPCSSPAINTSTYLE_H_ #include "Painter.h" class MapView; class PaintStylePrivate; #include <QList> class MapCSSPaintstyle { public: static MapCSSPaintstyle* instance() { if (!m_MapCSSInstance) { m_MapCSSInstance = new MapCSSPaintstyle; } return m_MapCSSInstance; } MapCSSPaintstyle(); virtual ~MapCSSPaintstyle(); void initialize(QPainter& P, MapView& theView); int painterSize(); const GlobalPainter& getGlobalPainter() const; void setGlobalPainter(GlobalPainter aGlobalPainter); const Painter* getPainter(int i) const; QList<Painter> getPainters() const; void setPainters(QList<Painter> aPainters); void savePainters(const QString& filename); void loadPainters(const QString& filename); private: QList<Painter> Painters; GlobalPainter globalPainter; static MapCSSPaintstyle* m_MapCSSInstance; }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/MasPaintStyle.cpp��������������������������������������������������0000664�0000000�0000000�00000005365�11770671653�0022122�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MasPaintStyle.h" #include <QtCore/QFile> #include <QtCore/QTextStream> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QtXml/QDomDocument> #include <QtXml/QDomNode> #include <math.h> #include <utility> //#define GLOBALZOOM 0.002 #define ALWAYS 10e6 /* Zoom boundaries : expressed in Pixel per Meter eg 0.01->ALWAYS means show a feature from a zoom level of 0.01 Pixel Per M, or 100 Meter per Pixel. For a screen of 1000px wide this is when viewing 100km or less across. eg 0.2->ALWAYS means show a feature from a zoom level 0.2 Px/M or 5M/Px which is viewing 5km or less across a screen of 1000Px. */ /* EDITPAINTSTYLE */ MasPaintStyle::MasPaintStyle() : m_isDirty(false) { } MasPaintStyle::~MasPaintStyle(void) { } void MasPaintStyle::savePainters(const QString& filename) { QFile data(filename); if (data.open(QFile::WriteOnly | QFile::Truncate)) { QTextStream out(&data); out << "<mapStyle>\n"; out << globalPainter.toXML(); for (int i=0; i<Painters.size(); ++i) { QString s = Painters[i].toXML(filename); out << s; } out << "</mapStyle>\n"; } m_isDirty = false; } void MasPaintStyle::loadPainters(const QString& filename) { QDomDocument doc; QFile file(filename); if (!file.open(QIODevice::ReadOnly)) return; if (!doc.setContent(&file)) { file.close(); return; } file.close(); GlobalPainter gp; globalPainter = gp; Painters.clear(); QDomElement docElem = doc.documentElement(); QDomNode n = docElem.firstChild(); while(!n.isNull()) { QDomElement e = n.toElement(); // try to convert the node to an element. if(!e.isNull() && e.tagName() == "global") { globalPainter = GlobalPainter::fromXML(e); } else if(!e.isNull() && e.tagName() == "painter") { Painter FP = Painter::fromXML(e, filename); Painters.push_back(FP); } n = n.nextSibling(); } m_isDirty = false; m_filename = filename; } int MasPaintStyle::painterSize() { return Painters.size(); } const GlobalPainter& MasPaintStyle::getGlobalPainter() const { return globalPainter; } void MasPaintStyle::setGlobalPainter(GlobalPainter aGlobalPainter) { globalPainter = aGlobalPainter; } const Painter* MasPaintStyle::getPainter(int i) const { return &(Painters[i]); } QList<Painter> MasPaintStyle::getPainters() const { return Painters; } void MasPaintStyle::setPainters(QList<Painter> aPainters) { Painters = aPainters; m_isDirty = true; } bool MasPaintStyle::isDirty() { return m_isDirty; } QString MasPaintStyle::getFilename() { return m_filename; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/MasPaintStyle.h����������������������������������������������������0000664�0000000�0000000�00000001431�11770671653�0021555�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_EDITPAINTSTYLE_H_ #define MERKAARTOR_EDITPAINTSTYLE_H_ #include "IPaintStyle.h" #include "Painter.h" class MapView; #include <QList> class MasPaintStyle : public IPaintStyle { public: MasPaintStyle(); virtual ~MasPaintStyle(); int painterSize(); const GlobalPainter& getGlobalPainter() const; void setGlobalPainter(GlobalPainter aGlobalPainter); const Painter* getPainter(int i) const; QList<Painter> getPainters() const; void setPainters(QList<Painter> aPainters); bool isDirty(); QString getFilename(); void savePainters(const QString& filename); void loadPainters(const QString& filename); private: bool m_isDirty; QString m_filename; QList<Painter> Painters; GlobalPainter globalPainter; }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PaintStyle.pri�����������������������������������������������������0000664�0000000�0000000�00000000541�11770671653�0021460�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/PaintStyle DEPENDPATH += $$MERKAARTOR_SRC_DIR/PaintStyle # Header files HEADERS += \ MasPaintStyle.h \ MapCSSPaintstyle.h \ PrimitivePainter.h \ Painter.h \ IPaintStyle.h # Source files SOURCES += \ MasPaintStyle.cpp \ MapCSSPaintstyle.cpp \ PrimitivePainter.cpp \ Painter.cpp ���������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PaintStyleEditor.cpp�����������������������������������������������0000664�0000000�0000000�00000063253�11770671653�0022630�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "PaintStyleEditor.h" #include "Painter.h" #include "MainWindow.h" #include "Document.h" #include "SelectionDialog.h" #include <QtGui/QCheckBox> #include <QtGui/QColorDialog> #include <QtGui/QDoubleSpinBox> #include <QtGui/QIcon> #include <QtGui/QListWidget> #include <QtGui/QPainter> #include <QtGui/QPixmap> #include <QtGui/QToolButton> static void makeBoundaryIcon(QToolButton* bt, QColor C) { QPixmap pm(36, 18); pm.fill(QColor(255, 255, 255)); QPainter p(&pm); p.setPen(C); p.setBrush(C); p.drawRect(0, 6, 36, 6); bt->setIcon(pm); } PaintStyleEditor::PaintStyleEditor(QWidget *aParent, const GlobalPainter& aGlobalPainter, const QList<Painter>& aPainters) : QDialog(aParent), theGlobalPainter(aGlobalPainter), thePainters(aPainters), FreezeUpdate(true) { setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); BackgroundColor->setIconSize(QSize(36, 18)); ForegroundColor->setIconSize(QSize(36, 18)); TouchupColor->setIconSize(QSize(36, 18)); TrafficDirectionMarksColor->setIconSize(QSize(36, 18));; FillColor->setIconSize(QSize(36, 18)); LabelColor->setIconSize(QSize(36, 18)); LabelBackgroundlColor->setIconSize(QSize(36, 18)); GlobalBackgroundColor->setIconSize(QSize(36, 18)); GlobalNodesColor->setIconSize(QSize(36, 18)); updatePaintList(); LowerZoomBoundary->setSpecialValueText(tr("Always")); UpperZoomBoundary->setSpecialValueText(tr("Always")); DrawGlobalBackground->setChecked(theGlobalPainter.getDrawBackground()); makeBoundaryIcon(GlobalBackgroundColor, theGlobalPainter.getBackgroundColor()); on_PaintList_itemSelectionChanged(); DrawGlobalNodes->setChecked(theGlobalPainter.getDrawNodes()); makeBoundaryIcon(GlobalNodesColor, theGlobalPainter.getNodesColor()); GlobalNodesProportional->setEnabled(theGlobalPainter.getDrawNodes()); GlobalNodesFixed->setEnabled(theGlobalPainter.getDrawNodes()); GlobalNodesProportional->setValue(theGlobalPainter.NodesProportional); GlobalNodesFixed->setValue(theGlobalPainter.NodesFixed); FreezeUpdate = false; resize(1, 1); } void PaintStyleEditor::updatePaintList() { QListWidgetItem* it; QString curName; if (PaintList->currentItem()) curName = PaintList->currentItem()->text(); PaintList->clear(); for (int i = 0; i < thePainters.size(); ++i) { it = new QListWidgetItem(thePainters[i].userName()); it->setData(Qt::UserRole, i); if (edFilter->text().isEmpty()) { PaintList->addItem(it); } else if (thePainters[i].userName().contains(edFilter->text(), Qt::CaseInsensitive)) { it = new QListWidgetItem(thePainters[i].userName()); it->setData(Qt::UserRole, i); PaintList->addItem(it); } if (!curName.isEmpty() && thePainters[i].userName().contains(curName, Qt::CaseInsensitive)) PaintList->setCurrentItem(it); } if (curName.isEmpty()) PaintList->setCurrentRow(0); } void PaintStyleEditor::on_AddButton_clicked() { thePainters.push_back(FeaturePainter()); QListWidgetItem* it = new QListWidgetItem(thePainters[thePainters.size()-1].userName()); it->setData(Qt::UserRole, thePainters.size()-1); PaintList->addItem(it); PaintList->setCurrentItem(it); on_PaintList_itemSelectionChanged(); } void PaintStyleEditor::on_DuplicateButton_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx < 0 || idx >= thePainters.size()) return; //QList<FeaturePainter>::iterator theIterator = thePainters.begin(); thePainters.insert(thePainters.begin() + idx, Painter(thePainters[idx])); idx++; it = new QListWidgetItem(thePainters[idx].userName()); it->setData(Qt::UserRole, idx); PaintList->insertItem(PaintList->currentRow()+1, it); PaintList->setCurrentItem(it); on_PaintList_itemSelectionChanged(); } void PaintStyleEditor::on_RemoveButton_clicked() { FreezeUpdate = true; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx < 0 || idx >= thePainters.size()) return; thePainters.erase(thePainters.begin() + idx); delete PaintList->takeItem(idx); if (idx && (idx >= thePainters.size())) --idx; PaintList->setCurrentRow(idx); updatePaintList(); on_PaintList_itemSelectionChanged(); } void PaintStyleEditor::on_btUp_clicked() { if (PaintList->currentRow() <= 0) return; int idx = PaintList->item(PaintList->currentRow())->data(Qt::UserRole).toInt(); int idxup = PaintList->item(PaintList->currentRow()-1)->data(Qt::UserRole).toInt(); Painter fp = thePainters[idxup]; thePainters[idxup] = thePainters[idx]; thePainters[idx] = fp; PaintList->item(PaintList->currentRow()-1)->setText(thePainters[idxup].userName()); PaintList->item(PaintList->currentRow())->setText(thePainters[idx].userName()); PaintList->setCurrentRow(PaintList->currentRow()-1); } void PaintStyleEditor::on_btDown_clicked() { if (PaintList->currentRow() >= PaintList->count()-1) return; int idx = PaintList->item(PaintList->currentRow())->data(Qt::UserRole).toInt(); int idxdn = PaintList->item(PaintList->currentRow()+1)->data(Qt::UserRole).toInt(); Painter fp = thePainters[idxdn]; thePainters[idxdn] = thePainters[idx]; thePainters[idx] = fp; PaintList->item(PaintList->currentRow()+1)->setText(thePainters[idxdn].userName()); PaintList->item(PaintList->currentRow())->setText(thePainters[idx].userName()); PaintList->setCurrentRow(PaintList->currentRow()+1); } void PaintStyleEditor::on_PaintList_itemSelectionChanged() { QListWidgetItem* it = PaintList->currentItem(); int idx = -1; if (it) idx = it->data(Qt::UserRole).toInt(); if (idx < 0) { FreezeUpdate = false; editArea->setEnabled(false); DuplicateButton->setEnabled(false); RemoveButton->setEnabled(false); return; } else { editArea->setEnabled(true); DuplicateButton->setEnabled(true); RemoveButton->setEnabled(true); } if (idx >= thePainters.size()) return; FreezeUpdate = true; Painter& FP(thePainters[idx]); TagSelection->setText(FP.userName()); if (FP.zoomBoundaries().first == 0) LowerZoomBoundary->setValue(0); else LowerZoomBoundary->setValue(1 / FP.zoomBoundaries().first); if ((FP.zoomBoundaries().second == 0) || (FP.zoomBoundaries().second > 10e5)) UpperZoomBoundary->setValue(0); else UpperZoomBoundary->setValue(1 / FP.zoomBoundaries().second); DrawBackground->setChecked(FP.backgroundBoundary().Draw); ProportionalBackground->setValue(FP.backgroundBoundary().Proportional); FixedBackground->setValue(FP.backgroundBoundary().Fixed); makeBoundaryIcon(BackgroundColor, FP.backgroundBoundary().Color); BackgroundInterior->setChecked(FP.getBackgroundInterior()); BackgroundExterior->setChecked(FP.getBackgroundExterior()); DrawForeground->setChecked(FP.foregroundBoundary().Draw); ProportionalForeground->setValue(FP.foregroundBoundary().Proportional); FixedForeground->setValue(FP.foregroundBoundary().Fixed); makeBoundaryIcon(ForegroundColor, FP.foregroundBoundary().Color); ForegroundDashed->setChecked(FP.foregroundBoundary().Dashed); ForegroundDashOn->setValue(FP.foregroundBoundary().DashOn); ForegroundDashOff->setValue(FP.foregroundBoundary().DashOff); DrawTouchup->setChecked(FP.touchupBoundary().Draw); ProportionalTouchup->setValue(FP.touchupBoundary().Proportional); FixedTouchup->setValue(FP.touchupBoundary().Fixed); makeBoundaryIcon(TouchupColor, FP.touchupBoundary().Color); TouchupDashed->setChecked(FP.touchupBoundary().Dashed); TouchupDashOn->setValue(FP.touchupBoundary().DashOn); TouchupDashOff->setValue(FP.touchupBoundary().DashOff); DrawTrafficDirectionMarks->setChecked(FP.DrawTrafficDirectionMarks); makeBoundaryIcon(TrafficDirectionMarksColor, FP.TrafficDirectionMarksColor); DrawFill->setChecked(FP.fillColor().isValid()); makeBoundaryIcon(FillColor, FP.fillColor()); DrawFillIcon->setChecked(FP.ForegroundFillUseIcon);; DrawIcon->setChecked(FP.icon().Draw); IconName->setText(FP.icon().Name); ProportionalIcon->setValue(FP.icon().Proportional); FixedIcon->setValue(FP.icon().Fixed); DrawLabel->setChecked(FP.labelBoundary().Draw); makeBoundaryIcon(LabelColor, FP.labelBoundary().Color); ProportionalLabel->setValue(FP.labelBoundary().Proportional); FixedLabel->setValue(FP.labelBoundary().Fixed); DrawLabelBackground->setChecked(FP.labelBackgroundColor().isValid()); makeBoundaryIcon(LabelBackgroundlColor, FP.labelBackgroundColor()); LabelFont->setCurrentFont(FP.getLabelFont()); LabelTag->setText(FP.getLabelTag()); LabelBackgroundTag->setText(FP.getLabelBackgroundTag()); LabelHalo->setChecked(FP.getLabelHalo()); LabelArea->setChecked(FP.getLabelArea()); updatePagesIcons(); FreezeUpdate = false; } void PaintStyleEditor::updatePagesIcons() { if (DrawForeground->isChecked() || DrawFill->isChecked()) tbStyle->setItemIcon(0, QIcon(":/Icons/actions/software-update-available.png")); else tbStyle->setItemIcon(0, QIcon()); if (DrawBackground->isChecked()) tbStyle->setItemIcon(1, QIcon(":/Icons/actions/software-update-available.png")); else tbStyle->setItemIcon(1, QIcon()); if (DrawTouchup->isChecked() || DrawIcon->isChecked()) tbStyle->setItemIcon(2, QIcon(":/Icons/actions/software-update-available.png")); else tbStyle->setItemIcon(2, QIcon()); if (DrawLabel->isChecked()) tbStyle->setItemIcon(3, QIcon(":/Icons/actions/software-update-available.png")); else tbStyle->setItemIcon(3, QIcon()); } void PaintStyleEditor::on_TagSelection_editingFinished() { refreshPainter(); } void PaintStyleEditor::on_LowerZoomBoundary_valueChanged() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QPair<qreal, qreal> Result(0, 0); if (LowerZoomBoundary->value() > 10e-6) Result.first = 1 / LowerZoomBoundary->value(); if (UpperZoomBoundary->value() > 10e-6) Result.second = 1 / UpperZoomBoundary->value(); else Result.second = 10e6; FP.zoomBoundary(Result.first, Result.second); } void PaintStyleEditor::on_UpperZoomBoundary_valueChanged() { on_LowerZoomBoundary_valueChanged(); } void PaintStyleEditor::on_DrawGlobalBackground_clicked(bool b) { theGlobalPainter.backgroundActive(b); } void PaintStyleEditor::on_GlobalBackgroundColor_clicked() { QColor rgb = QColorDialog::getColor(theGlobalPainter.getBackgroundColor(), this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(GlobalBackgroundColor, rgb); theGlobalPainter.background(rgb); } } void PaintStyleEditor::on_DrawGlobalNodes_clicked(bool b) { theGlobalPainter.nodesActive(b); } void PaintStyleEditor::on_GlobalNodesColor_clicked() { QColor rgb = QColorDialog::getColor(theGlobalPainter.getNodesColor(), this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(GlobalNodesColor, rgb); theGlobalPainter.nodes(rgb); } } void PaintStyleEditor::on_GlobalNodesProportional_valueChanged() { theGlobalPainter.NodesProportional = GlobalNodesProportional->value(); } void PaintStyleEditor::on_GlobalNodesFixed_valueChanged() { theGlobalPainter.NodesFixed = GlobalNodesFixed->value(); } void PaintStyleEditor::on_DrawBackground_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].backgroundActive(b); updatePagesIcons(); } void PaintStyleEditor::on_BackgroundColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.backgroundBoundary().Color, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(BackgroundColor, rgb); FP.background(rgb, ProportionalBackground->value(), FixedBackground->value()); } } void PaintStyleEditor::on_ProportionalBackground_valueChanged() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.background(FP.backgroundBoundary().Color, ProportionalBackground->value(), FixedBackground->value()); } void PaintStyleEditor::on_FixedBackground_valueChanged() { on_ProportionalBackground_valueChanged(); } void PaintStyleEditor::on_DrawForeground_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].foregroundActive(b); updatePagesIcons(); } void PaintStyleEditor::on_BackgroundInterior_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].BackgroundInterior = b; if (b) { BackgroundExterior->blockSignals(true); BackgroundExterior->setChecked(false); thePainters[idx].BackgroundExterior = false; BackgroundExterior->blockSignals(false); } } void PaintStyleEditor::on_BackgroundExterior_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].BackgroundExterior = b; if (b) { BackgroundInterior->blockSignals(true); BackgroundInterior->setChecked(false); thePainters[idx].BackgroundInterior = false; BackgroundInterior->blockSignals(false); } } void PaintStyleEditor::on_ForegroundColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.foregroundBoundary().Color, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(ForegroundColor, rgb); FP.foreground(rgb, ProportionalForeground->value(), FixedForeground->value()); } } void PaintStyleEditor::on_DrawFillIcon_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.ForegroundFillUseIcon = b; } void PaintStyleEditor::on_ProportionalForeground_valueChanged() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.foreground(FP.foregroundBoundary().Color, ProportionalForeground->value(), FixedForeground->value()); } void PaintStyleEditor::on_FixedForeground_valueChanged() { on_ProportionalForeground_valueChanged(); } void PaintStyleEditor::on_ForegroundDashed_clicked() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); if (ForegroundDashed->isChecked()) FP.foregroundDash(ForegroundDashOn->value(), ForegroundDashOff->value()); else FP.clearForegroundDash(); } void PaintStyleEditor::on_ForegroundDashOff_valueChanged() { on_ForegroundDashed_clicked(); } void PaintStyleEditor::on_ForegroundDashOn_valueChanged() { on_ForegroundDashed_clicked(); } void PaintStyleEditor::on_DrawTouchup_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].touchupActive(b); updatePagesIcons(); } void PaintStyleEditor::on_TouchupColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.touchupBoundary().Color, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(TouchupColor, rgb); FP.touchup(rgb, ProportionalTouchup->value(), FixedTouchup->value()); } } void PaintStyleEditor::on_DrawTrafficDirectionMarks_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].drawTrafficDirectionMarks(b); updatePagesIcons(); } void PaintStyleEditor::on_TrafficDirectionMarksColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.TrafficDirectionMarksColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(TrafficDirectionMarksColor, rgb); FP.TrafficDirectionMarksColor = rgb; } } void PaintStyleEditor::on_ProportionalTouchup_valueChanged() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.touchup(FP.touchupBoundary().Color, ProportionalTouchup->value(), FixedTouchup->value()); } void PaintStyleEditor::on_FixedTouchup_valueChanged() { on_ProportionalTouchup_valueChanged(); } void PaintStyleEditor::on_TouchupDashed_clicked() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); if (TouchupDashed->isChecked()) FP.touchupDash(TouchupDashOn->value(), TouchupDashOff->value()); else FP.clearTouchupDash(); } void PaintStyleEditor::on_TouchupDashOff_valueChanged() { on_TouchupDashed_clicked(); } void PaintStyleEditor::on_TouchupDashOn_valueChanged() { on_TouchupDashed_clicked(); } void PaintStyleEditor::on_DrawFill_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].fillActive(b); updatePagesIcons(); } void PaintStyleEditor::on_FillColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.fillColor(), this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(FillColor, rgb); FP.foregroundFill(rgb); } } void PaintStyleEditor::on_DrawIcon_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].iconActive(b); updatePagesIcons(); } void PaintStyleEditor::on_IconName_textEdited() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.setIcon(IconName->text(), ProportionalIcon->value(), FixedIcon->value()); } void PaintStyleEditor::on_ProportionalIcon_valueChanged() { on_IconName_textEdited(); } void PaintStyleEditor::on_FixedIcon_valueChanged() { on_IconName_textEdited(); } void PaintStyleEditor::on_DrawLabel_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].labelActive(b); updatePagesIcons(); } void PaintStyleEditor::on_LabelHalo_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].labelHalo(b); } void PaintStyleEditor::on_LabelArea_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].labelArea(b); } void PaintStyleEditor::on_LabelTag_textEdited() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].labelTag(LabelTag->text()); } void PaintStyleEditor::on_LabelBackgroundTag_textEdited() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].labelBackgroundTag(LabelBackgroundTag->text()); } void PaintStyleEditor::on_LabelColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.labelBoundary().Color, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(LabelColor, rgb); FP.label(rgb, ProportionalLabel->value(), FixedLabel->value()); } } void PaintStyleEditor::on_ProportionalLabel_valueChanged() { if (FreezeUpdate) return; QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.label(FP.labelBoundary().Color, ProportionalLabel->value(), FixedLabel->value()); } void PaintStyleEditor::on_FixedLabel_valueChanged() { on_ProportionalLabel_valueChanged(); } void PaintStyleEditor::on_DrawLabelBackground_clicked(bool b) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].labelBackgroundActive(b); } void PaintStyleEditor::on_LabelBackgroundlColor_clicked() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); QColor rgb = QColorDialog::getColor(FP.labelBackgroundColor(), this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { makeBoundaryIcon(LabelBackgroundlColor, rgb); FP.labelBackground(rgb); } } void PaintStyleEditor::on_LabelFont_currentFontChanged(const QFont & font) { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; thePainters[idx].setLabelFont(font.toString()); } void PaintStyleEditor::refreshPainter() { QListWidgetItem* it = PaintList->currentItem(); int idx = it->data(Qt::UserRole).toInt(); if (idx >= thePainters.size()) return; Painter& FP(thePainters[idx]); FP.setSelector(TagSelection->text()); PaintList->currentItem()->setText(FP.userName()); } void PaintStyleEditor::on_buttonBox_clicked(QAbstractButton * button) { if (buttonBox->buttonRole(button) == QDialogButtonBox::ApplyRole) { emit(stylesApplied(&theGlobalPainter, &thePainters)); } } void PaintStyleEditor::on_edFilter_textChanged(const QString &/*text*/) { updatePaintList(); } void PaintStyleEditor::on_btSelectorHelper_clicked() { SelectionDialog* Sel = new SelectionDialog(g_Merk_MainWindow, false); if (!Sel) return; Sel->edTagQuery->setText(TagSelection->text()); if (Sel->exec() == QDialog::Accepted) { TagSelection->setText(Sel->edTagQuery->text()); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PaintStyleEditor.h�������������������������������������������������0000664�0000000�0000000�00000006643�11770671653�0022275�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_PAINTSTYLE_EDITOR_H_ #define MERKAARTOR_PAINTSTYLE_EDITOR_H_ #include <ui_PaintStyleEditor.h> #include "Painter.h" #include <QtGui/QDialog> #include <QList> class PaintStyleEditor : public QDialog, public Ui::PaintStyleEditor { Q_OBJECT public: PaintStyleEditor(QWidget* aParent, const GlobalPainter& aGlobalPainter, const QList<Painter>& aPainters); public slots: void on_DrawGlobalBackground_clicked(bool b); void on_GlobalBackgroundColor_clicked(); void on_DrawGlobalNodes_clicked(bool b); void on_GlobalNodesColor_clicked(); void on_GlobalNodesProportional_valueChanged(); void on_GlobalNodesFixed_valueChanged(); void on_PaintList_itemSelectionChanged(); void on_TagSelection_editingFinished(); void on_LowerZoomBoundary_valueChanged(); void on_UpperZoomBoundary_valueChanged(); void on_DrawBackground_clicked(bool b); void on_BackgroundColor_clicked(); void on_ProportionalBackground_valueChanged(); void on_FixedBackground_valueChanged(); void on_BackgroundInterior_clicked(bool b); void on_BackgroundExterior_clicked(bool b); void on_DrawForeground_clicked(bool b); void on_DrawFillIcon_clicked(bool b); void on_ForegroundColor_clicked(); void on_ProportionalForeground_valueChanged(); void on_FixedForeground_valueChanged(); void on_ForegroundDashed_clicked(); void on_ForegroundDashOn_valueChanged(); void on_ForegroundDashOff_valueChanged(); void on_DrawTrafficDirectionMarks_clicked(bool b); void on_TrafficDirectionMarksColor_clicked(); void on_DrawTouchup_clicked(bool b); void on_TouchupColor_clicked(); void on_ProportionalTouchup_valueChanged(); void on_FixedTouchup_valueChanged(); void on_TouchupDashed_clicked(); void on_TouchupDashOn_valueChanged(); void on_TouchupDashOff_valueChanged(); void on_DrawFill_clicked(bool b); void on_FillColor_clicked(); void on_DrawIcon_clicked(bool b); void on_IconName_textEdited(); void on_ProportionalIcon_valueChanged(); void on_FixedIcon_valueChanged(); void on_DrawLabel_clicked(bool b); void on_LabelColor_clicked(); void on_LabelTag_textEdited(); void on_ProportionalLabel_valueChanged(); void on_FixedLabel_valueChanged(); void on_DrawLabelBackground_clicked(bool b); void on_LabelBackgroundlColor_clicked(); void on_LabelFont_currentFontChanged(const QFont & font); void on_LabelBackgroundTag_textEdited(); void on_AddButton_clicked(); void on_RemoveButton_clicked(); void on_DuplicateButton_clicked(); void on_btUp_clicked(); void on_btDown_clicked(); void on_buttonBox_clicked(QAbstractButton * button); void on_LabelHalo_clicked(bool b); void on_LabelArea_clicked(bool b); void on_edFilter_textChanged(const QString& text); void on_btSelectorHelper_clicked(); public: GlobalPainter theGlobalPainter; QList<Painter> thePainters; private: void refreshPainter(); void updatePaintList(); void updatePagesIcons(); signals: void stylesApplied(GlobalPainter* theGlobalPainter, QList<Painter>* thePainters); private: bool FreezeUpdate; }; #endif ���������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PaintStyleEditor.pri�����������������������������������������������0000664�0000000�0000000�00000000343�11770671653�0022627�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/PaintStyle DEPENDPATH += $$MERKAARTOR_SRC_DIR/PaintStyle # Header files HEADERS += PaintStyleEditor.h # Source files SOURCES += PaintStyleEditor.cpp # Forms FORMS += PaintStyleEditor.ui ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PaintStyleEditor.ui������������������������������������������������0000664�0000000�0000000�00000215577�11770671653�0022473�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>PaintStyleEditor</class> <widget class="QDialog" name="PaintStyleEditor"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>786</width> <height>625</height> </rect> </property> <property name="windowTitle"> <string>Map style editor</string> </property> <layout class="QVBoxLayout" name="verticalLayout_6"> <item> <widget class="QGroupBox" name="groupBox_5"> <property name="title"> <string>Global</string> </property> <layout class="QVBoxLayout" name="verticalLayout_5"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <layout class="QHBoxLayout" name="horizontalLayout_6"> <property name="spacing"> <number>4</number> </property> <item> <widget class="QCheckBox" name="DrawGlobalBackground"> <property name="text"> <string>Background</string> </property> </widget> </item> <item> <widget class="QToolButton" name="GlobalBackgroundColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_6"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_9"> <property name="spacing"> <number>4</number> </property> <item> <widget class="QCheckBox" name="DrawGlobalNodes"> <property name="text"> <string>Nodes</string> </property> </widget> </item> <item> <widget class="QToolButton" name="GlobalNodesColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_10"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="_6"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_22"> <property name="text"> <string>Proportional thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="GlobalNodesProportional"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <widget class="QLabel" name="label_23"> <property name="text"> <string>Fixed thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="GlobalNodesFixed"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <layout class="QVBoxLayout" name="verticalLayout_8"> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> <widget class="QLabel" name="label_21"> <property name="text"> <string>Filter</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edFilter"> <property name="text"> <string/> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QPushButton" name="AddButton"> <property name="text"> <string>Add</string> </property> </widget> </item> <item> <widget class="QPushButton" name="RemoveButton"> <property name="text"> <string>Remove</string> </property> </widget> </item> <item> <widget class="QPushButton" name="DuplicateButton"> <property name="text"> <string>Duplicate</string> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QListWidget" name="PaintList"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> <item> <layout class="QVBoxLayout" name="verticalLayout_7"> <item> <widget class="QToolButton" name="btUp"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>...</string> </property> <property name="arrowType"> <enum>Qt::UpArrow</enum> </property> </widget> </item> <item> <widget class="QToolButton" name="btDown"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>...</string> </property> <property name="arrowType"> <enum>Qt::DownArrow</enum> </property> </widget> </item> </layout> </item> </layout> </item> </layout> </item> <item> <widget class="QWidget" name="editArea" native="true"> <layout class="QVBoxLayout" name="verticalLayout_4"> <property name="spacing"> <number>0</number> </property> <property name="margin"> <number>0</number> </property> <item> <layout class="QVBoxLayout"> <property name="spacing"> <number>0</number> </property> <property name="margin"> <number>0</number> </property> <item> <layout class="QGridLayout" name="TagSelectionLayout"> <property name="margin"> <number>0</number> </property> <property name="spacing"> <number>6</number> </property> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Tag selection</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QLineEdit" name="TagSelection"/> </item> <item row="0" column="2"> <widget class="QToolButton" name="btSelectorHelper"> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <layout class="QGridLayout"> <property name="margin"> <number>0</number> </property> <property name="spacing"> <number>6</number> </property> <item row="0" column="2"> <widget class="QLabel" name="label_6"> <property name="text"> <string>meter/pixel</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QDoubleSpinBox" name="LowerZoomBoundary"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="decimals"> <number>0</number> </property> <property name="minimum"> <double>0.000000000000000</double> </property> <property name="maximum"> <double>99999.000000000000000</double> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Visible up to</string> </property> </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="label_4"> <property name="text"> <string>Visible from scale</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QDoubleSpinBox" name="UpperZoomBoundary"> <property name="decimals"> <number>0</number> </property> <property name="minimum"> <double>0.000000000000000</double> </property> <property name="maximum"> <double>99999.000000000000000</double> </property> <property name="singleStep"> <double>100.000000000000000</double> </property> </widget> </item> <item row="1" column="2"> <widget class="QLabel" name="label_7"> <property name="text"> <string>meter/pixel</string> </property> </widget> </item> <item row="0" column="3"> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <widget class="QToolBox" name="tbStyle"> <property name="minimumSize"> <size> <width>400</width> <height>350</height> </size> </property> <property name="currentIndex"> <number>2</number> </property> <property name="tabSpacing"> <number>6</number> </property> <widget class="QWidget" name="pgBackground"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>455</width> <height>184</height> </rect> </property> <attribute name="label"> <string>Background</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_9"> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QCheckBox" name="DrawForeground"> <property name="text"> <string>Draw with color</string> </property> </widget> </item> <item> <widget class="QToolButton" name="ForegroundColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Proportional thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ProportionalForeground"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <widget class="QLabel" name="label_11"> <property name="text"> <string>Fixed thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="FixedForeground"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QCheckBox" name="ForegroundDashed"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Dashed</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ForegroundDashOn"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <widget class="QLabel" name="label_12"> <property name="text"> <string>off</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ForegroundDashOff"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QCheckBox" name="DrawFill"> <property name="text"> <string>Fill area</string> </property> </widget> </item> <item> <widget class="QToolButton" name="FillColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="_3"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer name="horizontalSpacer_7"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Maximum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QCheckBox" name="DrawFillIcon"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Fill with Touchup icon</string> </property> </widget> </item> </layout> </item> <item> <spacer name="verticalSpacer_2"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="pgBoundary"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>455</width> <height>116</height> </rect> </property> <attribute name="label"> <string>Boundary</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QCheckBox" name="DrawBackground"> <property name="text"> <string>Draw with color</string> </property> </widget> </item> <item> <widget class="QToolButton" name="BackgroundColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_8"> <property name="text"> <string>Proportional thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ProportionalBackground"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <widget class="QLabel" name="label_9"> <property name="text"> <string>Fixed thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="FixedBackground"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_8"> <item> <spacer name="horizontalSpacer_8"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Fixed</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QCheckBox" name="BackgroundInterior"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Interior</string> </property> </widget> </item> <item> <widget class="QCheckBox" name="BackgroundExterior"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Exteriror</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_9"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <spacer name="verticalSpacer_3"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="pgTouchup"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>460</width> <height>226</height> </rect> </property> <attribute name="label"> <string>Touchup</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QCheckBox" name="DrawTouchup"> <property name="text"> <string>Draw steps</string> </property> </widget> </item> <item> <widget class="QToolButton" name="TouchupColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_14"> <property name="text"> <string>Proportional thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ProportionalTouchup"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <widget class="QLabel" name="label_15"> <property name="text"> <string>Fixed thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="FixedTouchup"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QCheckBox" name="TouchupDashed"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Dashed</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="TouchupDashOn"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <widget class="QLabel" name="label_13"> <property name="text"> <string>off</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="TouchupDashOff"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QCheckBox" name="DrawIcon"> <property name="text"> <string>Draw icon</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="IconName"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="_2"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_19"> <property name="text"> <string>Proportional thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ProportionalIcon"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <widget class="QLabel" name="label_20"> <property name="text"> <string>Fixed thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="FixedIcon"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_10"> <item> <widget class="QCheckBox" name="DrawTrafficDirectionMarks"> <property name="text"> <string>Draw Traffic Direction Marks</string> </property> </widget> </item> <item> <widget class="QToolButton" name="TrafficDirectionMarksColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_11"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <spacer name="verticalSpacer_4"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="pgLabel"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>458</width> <height>221</height> </rect> </property> <attribute name="label"> <string>Label</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <layout class="QHBoxLayout" name="_5"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QCheckBox" name="DrawLabel"> <property name="text"> <string>Draw with color</string> </property> </widget> </item> <item> <widget class="QToolButton" name="LabelColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>Font</string> </property> </widget> </item> <item> <widget class="QFontComboBox" name="LabelFont"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_3"> <property name="text"> <string>Label tag</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="LabelTag"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontallayout_3"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_16"> <property name="text"> <string>Proportional thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="ProportionalLabel"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <widget class="QLabel" name="label_17"> <property name="text"> <string>Fixed thickness</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="FixedLabel"> <property name="enabled"> <bool>false</bool> </property> <property name="decimals"> <number>1</number> </property> <property name="singleStep"> <double>0.500000000000000</double> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> <spacer name="horizontalSpacer_4"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QCheckBox" name="LabelHalo"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Halo</string> </property> </widget> </item> <item> <widget class="QCheckBox" name="LabelArea"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Area</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_5"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="_4"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QCheckBox" name="DrawLabelBackground"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Draw with background color</string> </property> </widget> </item> <item> <widget class="QToolButton" name="LabelBackgroundlColor"> <property name="enabled"> <bool>false</bool> </property> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <spacer name="horizontalSpacer_3"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Minimum</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>60</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_18"> <property name="text"> <string>Label with background tag</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="LabelBackgroundTag"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> </layout> </item> <item> <spacer name="verticalSpacer_5"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> </widget> </item> </layout> </item> </layout> </widget> </item> </layout> </item> <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <tabstops> <tabstop>AddButton</tabstop> <tabstop>RemoveButton</tabstop> <tabstop>PaintList</tabstop> <tabstop>TagSelection</tabstop> <tabstop>UpperZoomBoundary</tabstop> <tabstop>LowerZoomBoundary</tabstop> <tabstop>DrawForeground</tabstop> <tabstop>ForegroundColor</tabstop> <tabstop>ProportionalForeground</tabstop> <tabstop>FixedForeground</tabstop> <tabstop>ForegroundDashed</tabstop> <tabstop>ForegroundDashOn</tabstop> <tabstop>ForegroundDashOff</tabstop> <tabstop>DrawFill</tabstop> <tabstop>FillColor</tabstop> <tabstop>DrawBackground</tabstop> <tabstop>BackgroundColor</tabstop> <tabstop>ProportionalBackground</tabstop> <tabstop>FixedBackground</tabstop> <tabstop>DrawTouchup</tabstop> <tabstop>TouchupColor</tabstop> <tabstop>ProportionalTouchup</tabstop> <tabstop>FixedTouchup</tabstop> <tabstop>TouchupDashed</tabstop> <tabstop>TouchupDashOn</tabstop> <tabstop>TouchupDashOff</tabstop> <tabstop>DrawIcon</tabstop> <tabstop>IconName</tabstop> <tabstop>DrawLabel</tabstop> <tabstop>LabelColor</tabstop> <tabstop>DrawLabelBackground</tabstop> <tabstop>LabelBackgroundlColor</tabstop> <tabstop>ProportionalLabel</tabstop> <tabstop>FixedLabel</tabstop> <tabstop>buttonBox</tabstop> </tabstops> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>PaintStyleEditor</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>335</x> <y>615</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>PaintStyleEditor</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>403</x> <y>615</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>DrawBackground</sender> <signal>toggled(bool)</signal> <receiver>BackgroundColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>263</y> </hint> </hints> </connection> <connection> <sender>DrawBackground</sender> <signal>toggled(bool)</signal> <receiver>ProportionalBackground</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>296</y> </hint> </hints> </connection> <connection> <sender>DrawBackground</sender> <signal>toggled(bool)</signal> <receiver>FixedBackground</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>296</y> </hint> </hints> </connection> <connection> <sender>DrawTouchup</sender> <signal>toggled(bool)</signal> <receiver>ProportionalTouchup</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>424</x> <y>350</y> </hint> <hint type="destinationlabel"> <x>581</x> <y>387</y> </hint> </hints> </connection> <connection> <sender>DrawTouchup</sender> <signal>toggled(bool)</signal> <receiver>FixedTouchup</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>424</x> <y>350</y> </hint> <hint type="destinationlabel"> <x>753</x> <y>387</y> </hint> </hints> </connection> <connection> <sender>DrawTouchup</sender> <signal>toggled(bool)</signal> <receiver>TouchupDashed</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>424</x> <y>350</y> </hint> <hint type="destinationlabel"> <x>447</x> <y>419</y> </hint> </hints> </connection> <connection> <sender>DrawTouchup</sender> <signal>toggled(bool)</signal> <receiver>TouchupDashOff</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>424</x> <y>350</y> </hint> <hint type="destinationlabel"> <x>608</x> <y>422</y> </hint> </hints> </connection> <connection> <sender>DrawIcon</sender> <signal>toggled(bool)</signal> <receiver>IconName</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>414</x> <y>454</y> </hint> <hint type="destinationlabel"> <x>764</x> <y>457</y> </hint> </hints> </connection> <connection> <sender>DrawTouchup</sender> <signal>toggled(bool)</signal> <receiver>TouchupDashOn</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>424</x> <y>350</y> </hint> <hint type="destinationlabel"> <x>516</x> <y>422</y> </hint> </hints> </connection> <connection> <sender>DrawLabelBackground</sender> <signal>toggled(bool)</signal> <receiver>LabelBackgroundlColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>398</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>398</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>LabelColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>263</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>DrawLabelBackground</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>398</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>ProportionalLabel</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>333</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>FixedLabel</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>333</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>LabelFont</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>505</x> <y>260</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>LabelTag</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>298</y> </hint> </hints> </connection> <connection> <sender>DrawLabelBackground</sender> <signal>toggled(bool)</signal> <receiver>LabelBackgroundTag</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>398</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>431</y> </hint> </hints> </connection> <connection> <sender>DrawIcon</sender> <signal>toggled(bool)</signal> <receiver>ProportionalIcon</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>414</x> <y>454</y> </hint> <hint type="destinationlabel"> <x>581</x> <y>492</y> </hint> </hints> </connection> <connection> <sender>DrawIcon</sender> <signal>toggled(bool)</signal> <receiver>FixedIcon</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>414</x> <y>454</y> </hint> <hint type="destinationlabel"> <x>753</x> <y>492</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>LabelHalo</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>368</y> </hint> </hints> </connection> <connection> <sender>DrawLabel</sender> <signal>toggled(bool)</signal> <receiver>LabelArea</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>368</y> </hint> </hints> </connection> <connection> <sender>DrawGlobalBackground</sender> <signal>toggled(bool)</signal> <receiver>GlobalBackgroundColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>42</x> <y>43</y> </hint> <hint type="destinationlabel"> <x>142</x> <y>50</y> </hint> </hints> </connection> <connection> <sender>DrawFill</sender> <signal>toggled(bool)</signal> <receiver>FillColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>366</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>366</y> </hint> </hints> </connection> <connection> <sender>DrawForeground</sender> <signal>toggled(bool)</signal> <receiver>ForegroundColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>263</y> </hint> </hints> </connection> <connection> <sender>DrawForeground</sender> <signal>toggled(bool)</signal> <receiver>ProportionalForeground</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>296</y> </hint> </hints> </connection> <connection> <sender>DrawForeground</sender> <signal>toggled(bool)</signal> <receiver>FixedForeground</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>296</y> </hint> </hints> </connection> <connection> <sender>DrawForeground</sender> <signal>toggled(bool)</signal> <receiver>ForegroundDashed</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>331</y> </hint> </hints> </connection> <connection> <sender>DrawForeground</sender> <signal>toggled(bool)</signal> <receiver>ForegroundDashOn</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>331</y> </hint> </hints> </connection> <connection> <sender>DrawForeground</sender> <signal>toggled(bool)</signal> <receiver>ForegroundDashOff</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>331</y> </hint> </hints> </connection> <connection> <sender>DrawFill</sender> <signal>toggled(bool)</signal> <receiver>DrawFillIcon</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>366</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>399</y> </hint> </hints> </connection> <connection> <sender>DrawBackground</sender> <signal>toggled(bool)</signal> <receiver>BackgroundInterior</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>331</y> </hint> </hints> </connection> <connection> <sender>DrawBackground</sender> <signal>toggled(bool)</signal> <receiver>BackgroundExterior</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>423</x> <y>263</y> </hint> <hint type="destinationlabel"> <x>423</x> <y>331</y> </hint> </hints> </connection> <connection> <sender>DrawGlobalNodes</sender> <signal>toggled(bool)</signal> <receiver>GlobalNodesColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>32</x> <y>70</y> </hint> <hint type="destinationlabel"> <x>140</x> <y>85</y> </hint> </hints> </connection> <connection> <sender>DrawGlobalNodes</sender> <signal>toggled(bool)</signal> <receiver>GlobalNodesProportional</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>43</x> <y>71</y> </hint> <hint type="destinationlabel"> <x>278</x> <y>118</y> </hint> </hints> </connection> <connection> <sender>DrawGlobalNodes</sender> <signal>toggled(bool)</signal> <receiver>GlobalNodesFixed</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>24</x> <y>66</y> </hint> <hint type="destinationlabel"> <x>450</x> <y>118</y> </hint> </hints> </connection> <connection> <sender>DrawTrafficDirectionMarks</sender> <signal>toggled(bool)</signal> <receiver>TrafficDirectionMarksColor</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>442</x> <y>518</y> </hint> <hint type="destinationlabel"> <x>564</x> <y>519</y> </hint> </hints> </connection> </connections> </ui> ���������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/Painter.cpp��������������������������������������������������������0000664�0000000�0000000�00000050075�11770671653�0020765�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Painter.h" #include "SvgCache.h" #include <QtCore/QString> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QMatrix> #include <QDomElement> #include <QFileInfo> #include <QDir> Painter::Painter() : ZoomLimitSet(false), ZoomUnder(0), ZoomUpper(10e6), DrawBackground(false), BackgroundScale(0), BackgroundOffset(3), DrawForeground(false), ForegroundScale(0), ForegroundOffset(2), ForegroundDashSet(false), DrawTouchup(false), TouchupScale(0), TouchupOffset(1), TouchupDashSet(false), ForegroundFill(false), ForegroundFillUseIcon(false), DrawTrafficDirectionMarks(false), DrawIcon(false), IconScale(0), IconOffset(0), DrawLabel(false), LabelScale(0), LabelOffset(0), DrawLabelBackground(false), LabelHalo(false), LabelArea(false), BackgroundInterior(false), BackgroundExterior(false) { } Painter::Painter(const Painter& f) : ZoomLimitSet(f.ZoomLimitSet), ZoomUnder(f.ZoomUnder), ZoomUpper(f.ZoomUpper), DrawBackground(f.DrawBackground), BackgroundColor(f.BackgroundColor), BackgroundScale(f.BackgroundScale), BackgroundOffset(f.BackgroundOffset), DrawForeground(f.DrawForeground), ForegroundColor(f.ForegroundColor), ForegroundScale(f.ForegroundScale), ForegroundOffset(f.ForegroundOffset), ForegroundDashSet(f.ForegroundDashSet), ForegroundDash(f.ForegroundDash), ForegroundWhite(f.ForegroundWhite), DrawTouchup(f.DrawTouchup), TouchupColor(f.TouchupColor), TouchupScale(f.TouchupScale), TouchupOffset(f.TouchupOffset), TouchupDashSet(f.TouchupDashSet), TouchupDash(f.TouchupDash), TouchupWhite(f.TouchupWhite), ForegroundFill(f.ForegroundFill), ForegroundFillFillColor(f.ForegroundFillFillColor), ForegroundFillUseIcon(f.ForegroundFillUseIcon), DrawTrafficDirectionMarks(f.DrawTrafficDirectionMarks), TrafficDirectionMarksColor(f.TrafficDirectionMarksColor), DrawIcon(f.DrawIcon), IconName(f.IconName), IconScale(f.IconScale), IconOffset(f.IconOffset), DrawLabel(f.DrawLabel), LabelTag(f.LabelTag), LabelColor(f.LabelColor), LabelScale(f.LabelScale), LabelOffset(f.LabelOffset), DrawLabelBackground(f.DrawLabelBackground), LabelBackgroundColor(f.LabelBackgroundColor), LabelBackgroundTag(f.LabelBackgroundTag), LabelFont(f.LabelFont), LabelHalo(f.LabelHalo), LabelArea(f.LabelArea), BackgroundInterior(f.BackgroundInterior), BackgroundExterior(f.BackgroundExterior), theSelector(f.theSelector) { } Painter& Painter::operator=(const Painter& f) { if (&f == this) return *this; ZoomLimitSet = f.ZoomLimitSet; ZoomUnder = f.ZoomUnder; ZoomUpper = f.ZoomUpper; DrawBackground = f.DrawBackground; BackgroundColor = f.BackgroundColor; BackgroundScale = f.BackgroundScale; BackgroundOffset = f.BackgroundOffset; DrawForeground = f.DrawForeground; ForegroundColor = f.ForegroundColor; ForegroundScale = f.ForegroundScale; ForegroundOffset = f.ForegroundOffset; ForegroundDashSet = f.ForegroundDashSet ; ForegroundDash = f.ForegroundDash; ForegroundWhite = f.ForegroundWhite; DrawTouchup = f.DrawTouchup; TouchupColor = f.TouchupColor; TouchupScale = f.TouchupScale; TouchupOffset = f.TouchupOffset; TouchupDashSet = f.TouchupDashSet; TouchupDash = f.TouchupDash; TouchupWhite = f.TouchupWhite; ForegroundFill = f.ForegroundFill; ForegroundFillFillColor = f.ForegroundFillFillColor; ForegroundFillUseIcon = f.ForegroundFillUseIcon; DrawTrafficDirectionMarks = f.DrawTrafficDirectionMarks; TrafficDirectionMarksColor = f.TrafficDirectionMarksColor; DrawIcon = f.DrawIcon; IconName = f.IconName; IconScale = f.IconScale; IconOffset = f.IconOffset; DrawLabel = f.DrawLabel; LabelColor = f.LabelColor; LabelScale = f.LabelScale; LabelOffset = f.LabelOffset; DrawLabelBackground = f.DrawLabelBackground; LabelBackgroundColor = f.LabelBackgroundColor; LabelFont = f.LabelFont; LabelTag = f.LabelTag; LabelBackgroundTag = f.LabelBackgroundTag; LabelHalo = f.LabelHalo; LabelArea = f.LabelArea; theSelector = f.theSelector; BackgroundInterior = f.BackgroundInterior; BackgroundExterior = f.BackgroundExterior; return *this; } Painter::~Painter() { } QString paddedHexa(int i) { QString r=QString::number(i,16); if (r.length() < 2) r = "0"+r; return r; } QString asXML(const QColor& c) { return "#"+paddedHexa(c.red())+paddedHexa(c.green())+paddedHexa(c.blue())+paddedHexa(c.alpha()); } QString colorAsXML(const QString& name, const QColor& c) { return name+"Color=\""+asXML(c)+"\"\n"; } QString boundaryAsXML(const QString& name, const QColor& c, qreal Scale, qreal Offset) { return name+"Color=\""+asXML(c)+"\" "+name+"Scale=\""+QString::number(Scale)+"\" "+name+"Offset=\""+QString::number(Offset)+"\"\n"; } QString iconAsXML(const QString& name, const QString& fn, qreal Scale, qreal Offset) { return name+"=\""+fn+"\" "+name+"Scale=\""+QString::number(Scale)+"\" "+name+"Offset=\""+QString::number(Offset)+"\"\n"; } QColor toColor(const QString& s) { return QColor( s.mid(1,2).toInt(0,16), s.mid(3,2).toInt(0,16), s.mid(5,2).toInt(0,16), s.mid(7,2).toInt(0,16)); } QString Painter::toXML(QString filename) const { QString r; r += "<painter\n"; if (ZoomLimitSet) r += " zoomUnder=\""+QString::number(ZoomUnder)+"\" zoomUpper=\""+QString::number(ZoomUpper)+"\"\n"; if (DrawBackground) r += " " + boundaryAsXML("background",BackgroundColor, BackgroundScale, BackgroundOffset); if (BackgroundInterior) r += " interior=\"yes\""; if (BackgroundExterior) r += " exterior=\"yes\""; if (DrawForeground) r += " " + boundaryAsXML("foreground",ForegroundColor, ForegroundScale, ForegroundOffset); if (ForegroundDashSet && DrawForeground) r += " foregroundDashDown=\""+QString::number(ForegroundDash)+"\" foregroundDashUp=\""+QString::number(ForegroundWhite)+"\"\n"; if (DrawTouchup) r += " " + boundaryAsXML("touchup",TouchupColor, TouchupScale, TouchupOffset); if (TouchupDashSet && DrawTouchup) r += " touchupDashDown=\""+QString::number(TouchupDash)+"\" touchupDashUp=\""+QString::number(TouchupWhite)+"\"\n"; if (ForegroundFill) r += " fillColor=\""+::asXML(ForegroundFillFillColor)+"\"\n"; if (ForegroundFillUseIcon) r += " fillWithIcon=\"yes\""; if (!IconName.isEmpty() && DrawIcon) { QString iconFilename; if (!IconName.startsWith(':')) { iconFilename = QFileInfo(filename).absoluteDir().relativeFilePath(QFileInfo(IconName).absoluteFilePath()); } else { iconFilename = IconName; } r += " " + iconAsXML("icon",iconFilename, IconScale, IconOffset); } if (DrawTrafficDirectionMarks) r += " drawTrafficDirectionMarks=\"yes\" trafficDirectionMarksColor=\"" + ::asXML(TrafficDirectionMarksColor) +"\"\n"; if (DrawLabel) { r += " " + boundaryAsXML("label",LabelColor, LabelScale, LabelOffset); r += " labelFont=\"" + LabelFont.toString() + "\""; r += " labelTag=\"" + LabelTag + "\""; if (LabelHalo) r += " labelHalo=\"yes\""; if (LabelArea) r += " labelArea=\"yes\""; } if (DrawLabelBackground) { r += " labelBackgroundColor=\""+::asXML(LabelBackgroundColor)+"\""; r += " labelBackgroundTag=\""+ LabelBackgroundTag +"\"\n"; } r += ">\n"; if (!theSelector.isEmpty()) r += " <selector expr=\""+theSelector+"\"/>\n"; r += "</painter>\n"; return r; } Painter Painter::fromXML(const QDomElement& e, QString filename) { Painter FP; if (e.hasAttribute("zoomUnder") || e.hasAttribute("zoomUpper")) FP.zoomBoundary(e.attribute("zoomUnder","0").toDouble(),e.attribute("zoomUpper","10e6").toDouble()); if (e.hasAttribute("foregroundColor")) { FP.foreground( toColor(e.attribute("foregroundColor")),e.attribute("foregroundScale").toDouble(),e.attribute("foregroundOffset").toDouble()); if (e.hasAttribute("foregroundDashDown")) FP.foregroundDash(e.attribute("foregroundDashDown").toDouble(),e.attribute("foregroundDashUp").toDouble()); } if (e.hasAttribute("fillWithIcon")) FP.foregroundUseIcon(e.attribute("fillWithIcon") == "yes"); if (e.hasAttribute("backgroundColor")) FP.background( toColor(e.attribute("backgroundColor")),e.attribute("backgroundScale").toDouble(),e.attribute("backgroundOffset").toDouble()); if (e.attribute("interior") == "yes") FP.BackgroundInterior = true; if (e.attribute("exterior") == "yes") FP.BackgroundExterior = true; if (e.hasAttribute("touchupColor")) { FP.touchup( toColor(e.attribute("touchupColor")),e.attribute("touchupScale").toDouble(),e.attribute("touchupOffset").toDouble()); if (e.hasAttribute("touchupDashDown")) FP.touchupDash(e.attribute("touchupDashDown").toDouble(),e.attribute("touchupDashUp").toDouble()); } if (e.hasAttribute("fillColor")) FP.foregroundFill(toColor(e.attribute("fillColor"))); if (e.hasAttribute("icon")) { QString iconFilename = e.attribute("icon"); if (!QFileInfo(iconFilename).isAbsolute()) iconFilename = QFileInfo(filename).absolutePath().append("/").append(iconFilename); FP.setIcon(iconFilename,e.attribute("iconScale", "0.0").toDouble(),e.attribute("iconOffset", "0.0").toDouble()); } if (e.attribute("drawTrafficDirectionMarks") == "yes") FP.drawTrafficDirectionMarks(true); if (e.hasAttribute("trafficDirectionMarksColor")) FP.TrafficDirectionMarksColor = toColor((e.attribute("trafficDirectionMarksColor"))); if (e.hasAttribute("labelColor")) { FP.label( toColor(e.attribute("labelColor")),e.attribute("labelScale").toDouble(),e.attribute("labelOffset").toDouble()); FP.setLabelFont(e.attribute("labelFont")); FP.labelTag(e.attribute("labelTag")); if (e.hasAttribute("labelHalo")) FP.labelHalo((e.attribute("labelHalo") == "yes")); if (e.hasAttribute("labelArea")) FP.labelArea((e.attribute("labelArea") == "yes")); if (e.hasAttribute("labelBackgroundColor")) FP.labelBackground(toColor(e.attribute("labelBackgroundColor"))); if (e.hasAttribute("labelBackgroundTag")) FP.labelBackgroundTag(e.attribute("labelBackgroundTag")); } QDomNode n = e.firstChild(); QList<QPair<QString,QString> > Pairs; while (!n.isNull()) { if (n.isElement()) { QDomElement t = n.toElement(); if (t.tagName() == "selector") { if (t.attribute("key") != "") Pairs.push_back(qMakePair(t.attribute("key"),t.attribute("value"))); else { FP.setSelector(t.attribute("expr")); return FP; } } } n = n.nextSibling(); } if (Pairs.size() == 1) FP.setSelector(Pairs[0].first+"="+Pairs[0].second); else if (Pairs.size()) { bool Same = true; for (int i=1; i<Pairs.size(); ++i) if (Pairs[0].first != Pairs[i].first) Same = false; if (Same) { QStringList Options; for (int i=0; i<Pairs.size(); ++i) Options.push_back(Pairs[i].second); FP.setSelector("["+ Pairs[0].first +"] isoneof ("+ Options.join(",") + ")"); } else { QStringList Options; for (int i=0; i<Pairs.size(); ++i) Options.push_back(Pairs[i].first+"="+Pairs[i].second); FP.setSelector(Options.join(" or ")); } } return FP; } QString Painter::userName() const { if (!theSelector.isEmpty()) return theSelector; return "Unnamed"; } QPair<qreal, qreal> Painter::zoomBoundaries() const { if (ZoomLimitSet) return qMakePair(ZoomUnder,ZoomUpper); return qMakePair((qreal)0.0,(qreal)0.0); } QColor Painter::fillColor() const { if (!ForegroundFill) return QColor(); return ForegroundFillFillColor; } bool Painter::isFilled() const { return ForegroundFill; } Painter& Painter::drawTrafficDirectionMarks(bool b) { DrawTrafficDirectionMarks = b; return *this; } Painter& Painter::zoomBoundary(qreal anUnder, qreal anUpper) { ZoomLimitSet = true; ZoomUnder = anUnder; ZoomUpper = anUpper; return *this; } Painter& Painter::fillActive(bool b) { ForegroundFill = b; if (ForegroundFill && !ForegroundFillFillColor.isValid()) ForegroundFillFillColor.setRgb(0,0,0); return *this; } Painter& Painter::foregroundFill(QColor FillColor) { ForegroundFill = true; ForegroundFillFillColor = FillColor; return *this; } Painter& Painter::backgroundActive(bool b) { DrawBackground = b; return *this; } Painter& Painter::background(QColor Color, qreal Scale, qreal Offset) { DrawBackground = true; BackgroundColor = Color; BackgroundScale = Scale; BackgroundOffset = Offset; return *this; } LineParameters Painter::backgroundBoundary() const { LineParameters P; P.Draw = DrawBackground; P.Color = BackgroundColor; P.Proportional = BackgroundScale; P.Fixed = BackgroundOffset; P.Dashed = false; P.DashOn = P.DashOff = 0; return P; } Painter& Painter::touchupActive(bool b) { DrawTouchup = b; return *this; } Painter& Painter::touchupDash(qreal Dash, qreal White) { TouchupDashSet = true; TouchupDash = Dash; TouchupWhite = White; return *this; } Painter& Painter::touchup(QColor Color, qreal Scale, qreal Offset) { DrawTouchup = true; TouchupColor = Color; TouchupScale = Scale; TouchupOffset = Offset; TouchupDashSet = false; return *this; } Painter& Painter::foregroundActive(bool b) { DrawForeground = b; return *this; } Painter& Painter::foregroundDash(qreal Dash, qreal White) { ForegroundDashSet = true; ForegroundDash = Dash; ForegroundWhite = White; return *this; } Painter& Painter::foreground(QColor Color, qreal Scale, qreal Offset) { DrawForeground = true; ForegroundColor = Color; ForegroundScale = Scale; ForegroundOffset = Offset; ForegroundDashSet = false; return *this; } Painter& Painter::foregroundUseIcon(bool b) { ForegroundFillUseIcon = b; return *this; } void Painter::clearForegroundDash() { ForegroundDashSet = false; } Painter& Painter::labelActive(bool b) { DrawLabel = b; return *this; } Painter& Painter::labelHalo(bool b) { LabelHalo = b; return *this; } Painter& Painter::labelArea(bool b) { LabelArea = b; return *this; } Painter& Painter::labelTag(const QString& val) { LabelTag = val; return *this; } Painter& Painter::labelBackgroundTag(const QString& val) { LabelBackgroundTag = val; return *this; } Painter& Painter::label(QColor Color, qreal Scale, qreal Offset) { DrawLabel = true; LabelColor = Color; LabelScale = Scale; LabelOffset = Offset; return *this; } Painter& Painter::labelBackgroundActive(bool b) { DrawLabelBackground = b; if (DrawLabelBackground && !LabelBackgroundColor.isValid()) LabelBackgroundColor.setRgb(0,0,0); return *this; } Painter& Painter::labelBackground(QColor bgColor) { DrawLabelBackground = true; LabelBackgroundColor = bgColor; return *this; } Painter& Painter::setLabelFont(const QString& descFont) { LabelFont.fromString(descFont); return *this; } QColor Painter::labelBackgroundColor() const { if (!DrawLabelBackground) return QColor(); return LabelBackgroundColor; } QFont Painter::getLabelFont() const { return LabelFont; } QString Painter::getLabelTag() const { return LabelTag; } bool Painter::getLabelHalo() const { return LabelHalo; } bool Painter::getLabelArea() const { return LabelArea; } QString Painter::getLabelBackgroundTag() const { return LabelBackgroundTag; } bool Painter::getBackgroundInterior() const { return BackgroundInterior; } bool Painter::getBackgroundExterior() const { return BackgroundExterior; } LineParameters Painter::foregroundBoundary() const { LineParameters P; P.Draw = DrawForeground; P.Color = ForegroundColor; P.Proportional = ForegroundScale; P.Fixed = ForegroundOffset; P.Dashed = ForegroundDashSet; P.DashOn = ForegroundDash; P.DashOff = ForegroundWhite; if (!P.Dashed) P.DashOff = P.DashOn = 0; return P; } void Painter::clearTouchupDash() { TouchupDashSet = false; } LineParameters Painter::touchupBoundary() const { LineParameters P; P.Draw = DrawTouchup; P.Color = TouchupColor; P.Proportional = TouchupScale; P.Fixed = TouchupOffset; P.Dashed = TouchupDashSet; P.DashOn = TouchupDash; P.DashOff = TouchupWhite; if (!P.Dashed) P.DashOff = P.DashOn = 0; return P; } LineParameters Painter::labelBoundary() const { LineParameters P; P.Draw = DrawLabel; P.Color = LabelColor; P.Proportional = LabelScale; P.Fixed = LabelOffset; P.Dashed = false; if (!P.Dashed) P.DashOff = P.DashOn = 0.0; return P; } Painter& Painter::setIcon(const QString& Name, qreal Scale, qreal Offset) { DrawIcon = true; IconName = Name; IconScale = Scale; IconOffset = Offset; return *this; } IconParameters Painter::icon() const { IconParameters P; P.Draw = DrawIcon; P.Name = IconName; P.Proportional = IconScale; P.Fixed = IconOffset; return P; } Painter& Painter::iconActive(bool b) { DrawIcon = b; return *this; } void Painter::setSelector(const QString& anExpression) { theSelector = anExpression; } bool Painter::matchesZoom(qreal PixelPerM) const { if (ZoomLimitSet) return (ZoomUnder <= PixelPerM) && (PixelPerM <= ZoomUpper); return true; } /* GlobalPainter */ GlobalPainter::GlobalPainter() : DrawBackground(false), DrawNodes(false) { } GlobalPainter::GlobalPainter(const GlobalPainter& f) : DrawBackground(f.DrawBackground), BackgroundColor(f.BackgroundColor) , DrawNodes(f.DrawNodes), NodesColor(f.NodesColor), NodesProportional(f.NodesProportional), NodesFixed(f.NodesFixed) { } GlobalPainter& GlobalPainter::operator=(const GlobalPainter& f) { if (&f == this) return *this; DrawBackground = f.DrawBackground; BackgroundColor = f.BackgroundColor; DrawNodes = f.DrawNodes; NodesColor = f.NodesColor; NodesProportional = f.NodesProportional; NodesFixed = f.NodesFixed; return *this; } GlobalPainter::~GlobalPainter() { } QString GlobalPainter::toXML() const { QString r; r += "<global\n"; if (DrawBackground) r += " " + colorAsXML("background",BackgroundColor); if (DrawNodes) r += " " + boundaryAsXML("nodes",NodesColor, NodesProportional, NodesFixed); r += "/>\n"; return r; } GlobalPainter GlobalPainter::fromXML(const QDomElement& e) { GlobalPainter FP; if (e.hasAttribute("backgroundColor")) { FP.backgroundActive(true); FP.background(toColor(e.attribute("backgroundColor"))); } if (e.hasAttribute("nodesColor")) { FP.nodesActive(true); FP.NodesColor = toColor(e.attribute("nodesColor")); FP.NodesProportional = e.attribute("nodesScale").toDouble(); FP.NodesFixed = e.attribute("nodesOffset").toDouble(); } return FP; } GlobalPainter& GlobalPainter::backgroundActive(bool b) { DrawBackground = b; return *this; } bool GlobalPainter::getDrawBackground() const { return DrawBackground; } GlobalPainter& GlobalPainter::background(QColor Color) { DrawBackground = true; BackgroundColor = Color; return *this; } QColor GlobalPainter::getBackgroundColor() const { return BackgroundColor; } GlobalPainter & GlobalPainter::nodesActive(bool b) { DrawNodes = b; return *this; } GlobalPainter & GlobalPainter::nodes(QColor Color) { DrawNodes = true; NodesColor = Color; return *this; } bool GlobalPainter::getDrawNodes() const { return DrawNodes; } QColor GlobalPainter::getNodesColor() const { return NodesColor; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/Painter.h����������������������������������������������������������0000664�0000000�0000000�00000011052�11770671653�0020422�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_PAINTER_H_ #define MERKAARTOR_PAINTER_H_ #include <QtCore/QString> #include <QtGui/QColor> #include <QFont> #include <QList> #include <QPair> #include <QPointF> class QFont; class QDomElement; class LineParameters { public: bool Draw; bool Dashed; QColor Color; qreal Proportional; qreal Fixed; qreal DashOn; qreal DashOff; }; class IconParameters { public: bool Draw; QString Name; qreal Proportional; qreal Fixed; }; class Painter { public: typedef enum {NoZoomLimit, GlobalZoom, RegionalZoom, LocalZoom } ZoomType; Painter(); Painter(const Painter& f); Painter& operator=(const Painter& F); virtual ~Painter(); virtual void setSelector(const QString& aName); bool isFilled() const; bool matchesZoom(qreal PixelPerM) const; Painter& backgroundActive(bool b); Painter& background(QColor Color, qreal Scale, qreal Offset); Painter& foregroundActive(bool b); Painter& foregroundUseIcon(bool b); Painter& foreground(QColor Color, qreal Scale, qreal Offset); Painter& foregroundDash(qreal Dash, qreal White); Painter& touchupActive(bool b); Painter& touchup(QColor Color, qreal Scale, qreal Offset); Painter& touchupDash(qreal Dash, qreal White); Painter& foregroundFill(QColor FillColor); Painter& zoomBoundary(qreal anUnder, qreal anUpper); Painter& drawTrafficDirectionMarks(bool b); Painter& trackPointIcon(const QString& Filename); Painter& fillActive(bool b); Painter& iconActive(bool b); Painter& setIcon(const QString& Name, qreal Scale, qreal Offset); Painter& labelActive(bool b); Painter& labelTag(const QString& val); Painter& label(QColor Color, qreal Scale, qreal Offset); Painter& setLabelFont(const QString& descFont); Painter& labelBackgroundActive(bool b); Painter& labelBackground(QColor bgColor); Painter& labelBackgroundTag(const QString& val); Painter& labelHalo(bool b); Painter& labelArea(bool b); QString userName() const; QPair<qreal, qreal> zoomBoundaries() const; LineParameters backgroundBoundary() const; LineParameters foregroundBoundary() const; LineParameters labelBoundary() const; IconParameters icon() const; void clearForegroundDash(); LineParameters touchupBoundary() const; void clearTouchupDash(); QColor fillColor() const; QColor labelBackgroundColor() const; QFont getLabelFont() const; QString getLabelTag() const; QString getLabelBackgroundTag() const; bool getLabelHalo() const; bool getLabelArea() const; bool getBackgroundInterior() const; bool getBackgroundExterior() const; QString toXML(QString filename) const; static Painter fromXML(const QDomElement& e, QString filename); public: bool ZoomLimitSet; qreal ZoomUnder, ZoomUpper; bool DrawBackground; QColor BackgroundColor; qreal BackgroundScale; qreal BackgroundOffset; bool BackgroundInterior, BackgroundExterior; bool DrawForeground; QColor ForegroundColor; qreal ForegroundScale; qreal ForegroundOffset; bool ForegroundDashSet; qreal ForegroundDash, ForegroundWhite; bool DrawTouchup; QColor TouchupColor; qreal TouchupScale; qreal TouchupOffset; bool TouchupDashSet; qreal TouchupDash, TouchupWhite; bool ForegroundFill; QColor ForegroundFillFillColor; bool ForegroundFillUseIcon; bool DrawTrafficDirectionMarks; QColor TrafficDirectionMarksColor; bool DrawIcon; QString IconName; qreal IconScale; qreal IconOffset; bool DrawLabel; QString LabelTag; QColor LabelColor; qreal LabelScale; qreal LabelOffset; bool DrawLabelBackground; QColor LabelBackgroundColor; QString LabelBackgroundTag; QFont LabelFont; bool LabelHalo; bool LabelArea; QString theSelector; }; class GlobalPainter { public: GlobalPainter(); GlobalPainter(const GlobalPainter& f); GlobalPainter& operator=(const GlobalPainter& F); ~GlobalPainter(); GlobalPainter& backgroundActive(bool b); GlobalPainter& background(QColor Color); bool getDrawBackground() const; QColor getBackgroundColor() const; GlobalPainter& nodesActive(bool b); GlobalPainter& nodes(QColor Color); bool getDrawNodes() const; QColor getNodesColor() const; QString toXML() const; static GlobalPainter fromXML(const QDomElement& e); public: bool DrawBackground; QColor BackgroundColor; bool DrawNodes; QColor NodesColor; qreal NodesProportional; qreal NodesFixed; }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PrimitivePainter.cpp�����������������������������������������������0000664�0000000�0000000�00000043040�11770671653�0022650�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "PrimitivePainter.h" #include "IFeature.h" #include "SvgCache.h" #include <QtCore/QString> #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QMatrix> #include <math.h> #define CAPSTYLE Qt::RoundCap #define JOINSTYLE Qt::RoundJoin PrimitivePainter::PrimitivePainter() : Painter(), theTagSelector(0){ } PrimitivePainter::PrimitivePainter(const PrimitivePainter& f) : Painter(f), theTagSelector(0) { if (f.theTagSelector) theTagSelector = f.theTagSelector->copy(); } PrimitivePainter& PrimitivePainter::operator=(const PrimitivePainter& f) { if (&f == this) return *this; delete theTagSelector; if (f.theTagSelector) theTagSelector = f.theTagSelector->copy(); else theTagSelector = 0; ZoomLimitSet = f.ZoomLimitSet; ZoomUnder = f.ZoomUnder; ZoomUpper = f.ZoomUpper; DrawBackground = f.DrawBackground; BackgroundColor = f.BackgroundColor; BackgroundScale = f.BackgroundScale; BackgroundOffset = f.BackgroundOffset; DrawForeground = f.DrawForeground; ForegroundColor = f.ForegroundColor; ForegroundScale = f.ForegroundScale; ForegroundOffset = f.ForegroundOffset; ForegroundDashSet = f.ForegroundDashSet ; ForegroundDash = f.ForegroundDash; ForegroundWhite = f.ForegroundWhite; DrawTouchup = f.DrawTouchup; TouchupColor = f.TouchupColor; TouchupScale = f.TouchupScale; TouchupOffset = f.TouchupOffset; TouchupDashSet = f.TouchupDashSet; TouchupDash = f.TouchupDash; TouchupWhite = f.TouchupWhite; ForegroundFill = f.ForegroundFill; ForegroundFillFillColor = f.ForegroundFillFillColor; DrawTrafficDirectionMarks = f.DrawTrafficDirectionMarks; DrawIcon = f.DrawIcon; IconName = f.IconName; IconScale = f.IconScale; IconOffset = f.IconOffset; DrawLabel = f.DrawLabel; LabelColor = f.LabelColor; LabelScale = f.LabelScale; LabelOffset = f.LabelOffset; DrawLabelBackground = f.DrawLabelBackground; LabelBackgroundColor = f.LabelBackgroundColor; LabelFont = f.LabelFont; LabelTag = f.LabelTag; LabelBackgroundTag = f.LabelBackgroundTag; LabelHalo = f.LabelHalo; LabelArea = f.LabelArea; return *this; } PrimitivePainter::PrimitivePainter(const Painter& f) : Painter(f), theTagSelector(0) { if (!f.theSelector.isEmpty()) theTagSelector = TagSelector::parse(f.theSelector); } PrimitivePainter& PrimitivePainter::operator=(const Painter& f) { if (&f == this) return *this; delete theTagSelector; if (!f.theSelector.isEmpty()) theTagSelector = TagSelector::parse(f.theSelector); else theTagSelector = 0; ZoomLimitSet = f.ZoomLimitSet; ZoomUnder = f.ZoomUnder; ZoomUpper = f.ZoomUpper; DrawBackground = f.DrawBackground; BackgroundColor = f.BackgroundColor; BackgroundScale = f.BackgroundScale; BackgroundOffset = f.BackgroundOffset; DrawForeground = f.DrawForeground; ForegroundColor = f.ForegroundColor; ForegroundScale = f.ForegroundScale; ForegroundOffset = f.ForegroundOffset; ForegroundDashSet = f.ForegroundDashSet ; ForegroundDash = f.ForegroundDash; ForegroundWhite = f.ForegroundWhite; DrawTouchup = f.DrawTouchup; TouchupColor = f.TouchupColor; TouchupScale = f.TouchupScale; TouchupOffset = f.TouchupOffset; TouchupDashSet = f.TouchupDashSet; TouchupDash = f.TouchupDash; TouchupWhite = f.TouchupWhite; ForegroundFill = f.ForegroundFill; ForegroundFillFillColor = f.ForegroundFillFillColor; DrawTrafficDirectionMarks = f.DrawTrafficDirectionMarks; DrawIcon = f.DrawIcon; IconName = f.IconName; IconScale = f.IconScale; IconOffset = f.IconOffset; DrawLabel = f.DrawLabel; LabelColor = f.LabelColor; LabelScale = f.LabelScale; LabelOffset = f.LabelOffset; DrawLabelBackground = f.DrawLabelBackground; LabelBackgroundColor = f.LabelBackgroundColor; LabelFont = f.LabelFont; LabelTag = f.LabelTag; LabelBackgroundTag = f.LabelBackgroundTag; LabelHalo = f.LabelHalo; LabelArea = f.LabelArea; return *this; } PrimitivePainter::~PrimitivePainter() { delete theTagSelector; } void PrimitivePainter::setSelector(const QString& anExpression) { delete theTagSelector; theTagSelector = TagSelector::parse(anExpression); theSelector = anExpression; } void PrimitivePainter::setSelector(TagSelector* aSel) { delete theTagSelector; theTagSelector = aSel; theSelector = aSel->asExpression(false); } TagSelectorMatchResult PrimitivePainter::matchesTag(const IFeature* F, qreal PixelPerM) const { TagSelectorMatchResult res; if (!theTagSelector) return TagSelect_NoMatch; if ((res = theTagSelector->matches(F,PixelPerM))) return res; return TagSelect_NoMatch; } void PrimitivePainter::drawBackground(QPainterPath* R, QPainter* thePainter, qreal PixelPerM) const { if (!DrawBackground && !ForegroundFill) return; thePainter->setPen(Qt::NoPen); if (DrawBackground) { qreal WW = PixelPerM*BackgroundScale+BackgroundOffset; if (WW >= 0) { QPen thePen(BackgroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); ////thePainter->strokePath(R->getPath(),thePen); thePainter->setPen(thePen); } } if (ForegroundFill && (R->elementCount() > 2)) { thePainter->setBrush(ForegroundFillFillColor); } else thePainter->setBrush(Qt::NoBrush); thePainter->drawPath(*R); } void PrimitivePainter::drawForeground(QPainterPath* R, QPainter* thePainter, qreal PixelPerM) const { if (!DrawForeground) return; qreal WW = 0.0; WW = PixelPerM*ForegroundScale+ForegroundOffset; if (WW < 0) return; QPen thePen(ForegroundColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); if (ForegroundDashSet) { QVector<qreal> Pattern; Pattern << ForegroundDash << ForegroundWhite; thePen.setDashPattern(Pattern); } thePainter->setPen(thePen); thePainter->setBrush(Qt::NoBrush); thePainter->drawPath(*R); } void PrimitivePainter::drawTouchup(QPointF* Pt, QPainter* thePainter, qreal PixelPerM) const { bool IconOK = false; if (DrawIcon) { if (!IconName.isEmpty()) { qreal WW = PixelPerM*IconScale+IconOffset; QImage* pm = getSVGImageFromFile(IconName,int(WW)); if (pm && !pm->isNull()) { IconOK = true; thePainter->drawImage( int(Pt->x()-pm->width()/2), int(Pt->y()-pm->height()/2) , *pm); } } } if (!IconOK) { QColor theColor = QColor(0,0,0,128); if (DrawForeground) theColor = ForegroundColor; else if (DrawBackground) theColor = BackgroundColor; QRectF R(*Pt-QPointF(2,2),QSize(4,4)); thePainter->fillRect(R,theColor); } } void PrimitivePainter::drawTouchup(QPainterPath* R, QPainter* thePainter, qreal PixelPerM) const { if (DrawTouchup) { qreal WW = PixelPerM*TouchupScale+TouchupOffset; if (WW > 0) { QPen thePen(TouchupColor,WW); thePen.setCapStyle(CAPSTYLE); thePen.setJoinStyle(JOINSTYLE); if (TouchupDashSet) { QVector<qreal> Pattern; Pattern << TouchupDash << TouchupWhite; thePen.setDashPattern(Pattern); } thePainter->strokePath(*R, thePen); } } // if (DrawTrafficDirectionMarks) // { // Feature::TrafficDirectionType TT = trafficDirection(R); // if ( (TT != Feature::UnknownDirection) || (theView->renderOptions().arrowOptions == RendererOptions::ArrowsAlways) ) // { // qreal theWidth = theView->pixelPerM()*R->widthOf()-4; // if (theWidth > 8) // theWidth = 8; // qreal DistFromCenter = 2*(theWidth+4); // if (theWidth > 0) // { // if ( theView->renderOptions().arrowOptions == RendererOptions::ArrowsAlways ) // thePainter->setPen(QPen(QColor(255,0,0), 2)); // else // thePainter->setPen(QPen(QColor(0,0,255), 2)); // for (int i=1; i<R->size(); ++i) // { // QPointF FromF(theView->transform().map(theView->projection().project(R->getNode(i-1)))); // QPointF ToF(theView->transform().map(theView->projection().project(R->getNode(i)))); // if (distance(FromF,ToF) > (DistFromCenter*2+4)) // { // QPoint H(FromF.toPoint()+ToF.toPoint()); // H *= 0.5; // if (!theView->rect().contains(H)) // continue; // qreal A = angle(FromF-ToF); // QPoint T(qRound(DistFromCenter*cos(A)),qRound(DistFromCenter*sin(A))); // QPoint V1(qRound(theWidth*cos(A+M_PI/6)),qRound(theWidth*sin(A+M_PI/6))); // QPoint V2(qRound(theWidth*cos(A-M_PI/6)),qRound(theWidth*sin(A-M_PI/6))); // if ( (TT == Feature::OtherWay) || (TT == Feature::BothWays) ) // { // thePainter->drawLine(H+T,H+T-V1); // thePainter->drawLine(H+T,H+T-V2); // } // if ( (TT == Feature::OneWay) || (TT == Feature::BothWays) ) // { // thePainter->drawLine(H-T,H-T+V1); // thePainter->drawLine(H-T,H-T+V2); // } // else // { // if ( theView->renderOptions().arrowOptions == RendererOptions::ArrowsAlways ) // { // thePainter->drawLine(H-T,H-T+V1); // thePainter->drawLine(H-T,H-T+V2); // } // } // } // } // } // } // } } #define LABEL_PATH_DISTANCE 3 #define LABEL_STRAIGHT_DISTANCE 50 #define BG_SPACING 6 #define BG_PEN_SZ 2 void PrimitivePainter::drawPointLabel(QPointF C, QString str, QString strBg, QPainter* thePainter, qreal PixelPerM) const { LineParameters lp = labelBoundary(); qreal WW = PixelPerM*lp.Proportional+lp.Fixed; if (WW < 10) return; QFont font = getLabelFont(); font.setPixelSize(int(WW)); QFontMetrics metrics(font); int modX = 0; int modY = 0; QPainterPath textPath; QPainterPath bgPath; if (!str.isEmpty()) { modX = - (metrics.width(str)/2); if (DrawIcon && (IconName != "") ) { QImage pm(IconName); modY = - pm.height(); if (DrawLabelBackground) modY -= BG_SPACING; } textPath.addText(modX, modY, font, str); thePainter->translate(C); } if (DrawLabelBackground && !strBg.isEmpty()) { modX = - (metrics.width(strBg)/2); if (DrawIcon && (IconName != "") ) { QImage pm(IconName); modY = - pm.height(); if (DrawLabelBackground) modY -= BG_SPACING; } textPath.addText(modX, modY, font, strBg); thePainter->translate(C); bgPath.addRect(textPath.boundingRect().adjusted(-BG_SPACING, -BG_SPACING, BG_SPACING, BG_SPACING)); thePainter->setPen(QPen(LabelColor, BG_PEN_SZ)); thePainter->setBrush(LabelBackgroundColor); thePainter->drawPath(bgPath); } if (getLabelHalo()) { thePainter->setPen(QPen(Qt::white, font.pixelSize()/5)); thePainter->drawPath(textPath); } thePainter->setPen(Qt::NoPen); thePainter->setBrush(LabelColor); thePainter->drawPath(textPath); if (DrawLabelBackground && !strBg.isEmpty()) { QRegion rg = thePainter->clipRegion(); rg -= textPath.boundingRect().toRect().translated(C.toPoint()); thePainter->setClipRegion(rg); } } void PrimitivePainter::drawLabel(QPointF* Pt, QPainter* thePainter, qreal PixelPerM, QString str, QString strBg) const { if (!DrawLabel) return; if (str.isEmpty() && strBg.isEmpty()) return; thePainter->save(); drawPointLabel(*Pt, str, strBg, thePainter, PixelPerM); thePainter->restore(); } void PrimitivePainter::drawLabel(QPainterPath* R, QPainter* thePainter, qreal PixelPerM, QString str, QString strBg) const { if (!DrawLabel) return; if (str.isEmpty() && strBg.isEmpty()) return; thePainter->save(); if (getLabelArea()) { QPointF C(R->boundingRect().center()); drawPointLabel(C, str, strBg, thePainter, PixelPerM); thePainter->restore(); return; } LineParameters lp = labelBoundary(); qreal WW = PixelPerM*lp.Proportional+lp.Fixed; if (WW < 10) return; //qreal WWR = qMax(PixelPerM*R->widthOf()*BackgroundScale+BackgroundOffset, PixelPerM*R->widthOf()*ForegroundScale+ForegroundOffset); QPainterPath textPath; QPainterPath tranformedRoadPath = *R; QFont font = getLabelFont(); if (!str.isEmpty()) { QRegion rg = thePainter->clipRegion(); font.setPixelSize(int(WW)); QFontMetrics metrics(font); if (font.pixelSize() >= 5 && tranformedRoadPath.length() > metrics.width(str)) { thePainter->setFont(font); int repeat = int((tranformedRoadPath.length() / ((metrics.width(str) * LABEL_PATH_DISTANCE))) - 0.5); int numSegment = repeat+1; qreal lenSegment = tranformedRoadPath.length() / numSegment; qreal startSegment = 0; QPainterPath textPath; do { QRegion rg = thePainter->clipRegion(); qreal curLen = startSegment + ((lenSegment - metrics.width(str)) / 2); int modIncrement = 1; qreal modAngle = 0; int modY = 0; if (cos(angToRad(tranformedRoadPath.angleAtPercent((startSegment+(lenSegment/2))/tranformedRoadPath.length()))) < 0) { modIncrement = -1; modAngle = 180.0; curLen += metrics.width(str); } for (int i = 0; i < str.length(); ++i) { qreal t = tranformedRoadPath.percentAtLength(curLen); QPointF pt = tranformedRoadPath.pointAtPercent(t); qreal angle = tranformedRoadPath.angleAtPercent(t); modY = (metrics.ascent()/2)-3; QMatrix m; m.translate(pt.x(), pt.y()); m.rotate(-angle+modAngle); QPainterPath charPath; charPath.addText(0, modY, font, str.mid(i, 1)); charPath = charPath * m; textPath.addPath(charPath); qreal incremenet = metrics.width(str[i]); curLen += (incremenet * modIncrement); } startSegment += lenSegment; } while (--repeat >= 0); if (getLabelHalo()) { thePainter->setPen(QPen(Qt::white, font.pixelSize()/6)); thePainter->drawPath(textPath); } thePainter->setPen(Qt::NoPen); thePainter->setBrush(LabelColor); thePainter->drawPath(textPath); thePainter->setClipRegion(rg); } } if (DrawLabelBackground && !strBg.isEmpty()) { QRegion rg = thePainter->clipRegion(); font.setPixelSize(int(WW)); QFontMetrics metrics(font); int repeat = int((tranformedRoadPath.length() / (metrics.width(strBg) * LABEL_STRAIGHT_DISTANCE)) - 0.5); int numSegment = repeat+1; qreal lenSegment = tranformedRoadPath.length() / numSegment; qreal startSegment = 0; do { int modX = 0; int modY = 0; qreal curLen = startSegment + (lenSegment / 2); qreal t = tranformedRoadPath.percentAtLength(curLen); QPointF pt = tranformedRoadPath.pointAtPercent(t); modX = - (metrics.width(strBg)/2); //modX = WW; modY = (metrics.ascent()/2); QPainterPath textPath, bgPath; textPath.addText(modX, modY, font, strBg); bgPath.addRect(textPath.boundingRect().adjusted(-BG_SPACING, -BG_SPACING, BG_SPACING, BG_SPACING)); bool rgContains = false; for (int i=0; i<rg.rects().size(); i++) { if (rg.rects()[i].contains(bgPath.boundingRect().toRect().translated(pt.toPoint()))) { rgContains = true; break; } } if (rgContains) { thePainter->translate(pt); thePainter->setPen(QPen(LabelColor, BG_PEN_SZ)); thePainter->setBrush(LabelBackgroundColor); thePainter->drawPath(bgPath); if (getLabelHalo()) { thePainter->setPen(QPen(Qt::white, font.pixelSize()/5)); thePainter->drawPath(textPath); } thePainter->setPen(Qt::NoPen); thePainter->setBrush(LabelColor); thePainter->drawPath(textPath); rg -= bgPath.boundingRect().toRect().translated(pt.toPoint()); } startSegment += lenSegment; } while (--repeat >= 0); thePainter->setClipRegion(rg); } thePainter->restore(); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/PaintStyle/PrimitivePainter.h�������������������������������������������������0000664�0000000�0000000�00000003232�11770671653�0022314�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_PRIMITIVEPAINTER_H_ #define MERKAARTOR_PRIMITIVEPAINTER_H_ #include <QtCore/QString> #include <QtGui/QColor> #include <QFont> #include <QList> #include <QPair> #include <QPointF> #include <Painter.h> #include "TagSelector.h" #include "math.h" class MapView; class IFeature; class TagSelector; class QPainter; class QPainterPath; class QFont; class QDomElement; class PrimitivePainter : public Painter { public: PrimitivePainter(); PrimitivePainter(const PrimitivePainter& f); PrimitivePainter& operator=(const PrimitivePainter& F); PrimitivePainter(const Painter& f); PrimitivePainter& operator=(const Painter& F); ~PrimitivePainter(); void setSelector(const QString& aName); void setSelector(TagSelector* aSelector); TagSelectorMatchResult matchesTag(const IFeature* F, qreal PixelPerM) const; void drawBackground(QPainterPath* R, QPainter* thePainter, qreal PixelPerM) const; void drawForeground(QPainterPath* R, QPainter* thePainter, qreal PixelPerM) const; void drawTouchup(QPainterPath* R, QPainter* thePainter, qreal PixelPerM) const; void drawTouchup(QPointF* R, QPainter* thePainter, qreal PixelPerM) const; void drawLabel(QPainterPath* R, QPainter* thePainter, qreal PixelPerM, QString str, QString strBg = QString()) const; void drawPointLabel(QPointF C, QString str, QString strBG, QPainter* thePainter, qreal PixelPerM) const; void drawLabel(QPointF* Pt, QPainter* thePainter, qreal PixelPerM, QString str, QString strBg = QString()) const; public: TagSelector* theTagSelector; private: static inline qreal angToRad(qreal a) { return a*M_PI/180.; } }; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0017015�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/BookmarksList.cpp�������������������������������������������������0000664�0000000�0000000�00000006530�11770671653�0022311�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: BookmarksList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include <QApplication> #include "BookmarksList.h" #include "MerkaartorPreferences.h" Bookmark::Bookmark() { Bookmark(QApplication::translate("MerkaartorPreferences","New Bookmark"), CoordBox()); } Bookmark::Bookmark(QString aName, CoordBox aCoord, bool Deleted) : Name(aName), Coordinates(aCoord), deleted(Deleted) { if (Name == "") { Name = QApplication::translate("MerkaartorPreferences","New Bookmark"); } } void Bookmark::toXml(QDomElement parent) { QDomElement p = parent.ownerDocument().createElement("Bookmark"); parent.appendChild(p); p.setAttribute("name", Name); if (deleted) p.setAttribute("deleted", "true"); Coordinates.toXML("Coordinates", p); } Bookmark Bookmark::fromXml(QDomElement parent) { Bookmark theBookmark; if (parent.tagName() == "Bookmark") { theBookmark.Name = parent.attribute("name"); theBookmark.deleted = (parent.attribute("deleted") == "true" ? true : false); theBookmark.Coordinates = CoordBox::fromXML(parent.firstChildElement("Coordinates")); } return theBookmark; } /** **/ void BookmarksList::add(BookmarksList aBookmarksList) { QMapIterator <QString, Bookmark> it(*(aBookmarksList.getBookmarks())); while (it.hasNext()) { it.next(); Bookmark anItem = it.value(); if (!theBookmarks.contains(anItem.Name)) theBookmarks.insert(anItem.Name, anItem); } } BookmarkList* BookmarksList::getBookmarks() { return &theBookmarks; } void BookmarksList::addBookmark(Bookmark aBookmark) { theBookmarks.insert(aBookmark.Name, aBookmark); } bool BookmarksList::contains(QString name) const { if (theBookmarks.contains(name)) return true; else { BookmarkListIterator it(theBookmarks); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return true; } } return false; } Bookmark BookmarksList::getBookmark(QString name) const { if (theBookmarks.contains(name)) return theBookmarks.value(name); else { BookmarkListIterator it(theBookmarks); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return it.value(); } } return Bookmark(); } void BookmarksList::toXml(QDomElement parent) { QDomElement rt = parent.ownerDocument().createElement("Bookmarks"); parent.appendChild(rt); rt.setAttribute("creator", QString("%1 v%2%3").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); BookmarkListIterator it(theBookmarks); while (it.hasNext()) { it.next(); Bookmark i = it.value(); i.toXml(rt); } } BookmarksList BookmarksList::fromXml(QDomElement parent) { BookmarksList theBookmarksList; if (parent.nodeName() == "Bookmarks") { QDomElement c = parent.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Bookmark") { theBookmarksList.addBookmark(Bookmark::fromXml(c)); } c = c.nextSiblingElement(); } } return theBookmarksList; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/BookmarksList.h���������������������������������������������������0000664�0000000�0000000�00000002035�11770671653�0021752�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: BookmarksList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef BOOKMARKS_LIST_H #define BOOKMARKS_LIST_H #include <QString> #include <QMap> #include <QtXml> #include "Coord.h" class Bookmark { public: Bookmark(); Bookmark(QString aName, CoordBox aCoord, bool Deleted=false); void toXml(QDomElement parent); static Bookmark fromXml(QDomElement parent); public: QString Name; CoordBox Coordinates; bool deleted; }; typedef QMap<QString, Bookmark> BookmarkList; typedef QMapIterator<QString, Bookmark> BookmarkListIterator; class BookmarksList { public: void add(BookmarksList aBookmarksList); void addBookmark(Bookmark aBookmark); bool contains(QString name) const; BookmarkList* getBookmarks(); Bookmark getBookmark(QString name) const; void toXml(QDomElement parent); static BookmarksList fromXml(QDomElement parent); private: BookmarkList theBookmarks; }; #endif // BOOKMARKS_LIST_H ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/FilterList.cpp����������������������������������������������������0000664�0000000�0000000�00000006063�11770671653�0021607�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: FilterList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "FilterList.h" #define STRINGIFY(x) XSTRINGIFY(x) #define XSTRINGIFY(x) #x FilterItem::FilterItem () : name(""), filter(""), deleted(false) { id = QUuid::createUuid(); } FilterItem::FilterItem (QUuid aId, QString aName, QString aFilter, bool aDeleted) : id(aId), name(aName), filter(aFilter), deleted(aDeleted) { } void FilterItem::toXml(QDomElement parent) { QDomElement p = parent.ownerDocument().createElement("Filter"); parent.appendChild(p); p.setAttribute("xml:id", id.toString()); p.setAttribute("name", name); if (deleted) p.setAttribute("deleted", "true"); QDomText t = parent.ownerDocument().createTextNode(filter); p.appendChild(t); } FilterItem FilterItem::fromXml(QDomElement parent) { FilterItem theFilter; if (parent.tagName() == "Filter") { theFilter.filter = parent.text().trimmed(); if (parent.hasAttribute("xml:id")) theFilter.id = QUuid(parent.attribute("xml:id")); else theFilter.id = QUuid::createUuid(); theFilter.name = parent.attribute("name"); theFilter.deleted = (parent.attribute("deleted") == "true" ? true : false); } return theFilter; } void FiltersList::add(FiltersList aFilterList) { FilterListIterator it(*(aFilterList.getFilters())); while (it.hasNext()) { it.next(); FilterItem anItem = it.value(); if (!theFilters.contains(anItem.name)) theFilters.insert(anItem.name, anItem); } } void FiltersList::addFilter(FilterItem aFilter) { theFilters.insert(aFilter.name, aFilter); } FilterItem FiltersList::getFilter(QString name) const { if (theFilters.contains(name)) return theFilters.value(name); else { QMapIterator <QString, FilterItem> it(theFilters); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return it.value(); } } return FilterItem(); } QMap <QString, FilterItem>* FiltersList::getFilters() { return &theFilters; } void FiltersList::toXml(QDomElement parent) { QDomElement rt = parent.ownerDocument().createElement("Filters"); parent.appendChild(rt); rt.setAttribute("creator", QString("%1 v%2%3").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); QMapIterator <QString, FilterItem> it(theFilters); while (it.hasNext()) { it.next(); FilterItem i = it.value(); i.toXml(rt); } } FiltersList FiltersList::fromXml(QDomElement parent) { FiltersList theFilters; if (parent.nodeName() == "Filters") { QDomElement c = parent.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Filter") { theFilters.addFilter(FilterItem::fromXml(c)); } c = c.nextSiblingElement(); } } return theFilters; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/FilterList.h������������������������������������������������������0000664�0000000�0000000�00000002120�11770671653�0021242�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: FilterList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef FILTER_LIST_H #define FILTER_LIST_H #include <QString> #include <QMap> #include <QtXml> class FilterItem { public: FilterItem (); FilterItem (QUuid aId, QString aName, QString aProjection, bool aDeleted = false); QUuid id; QString name; QString filter; bool deleted; public: void toXml(QDomElement parent); static FilterItem fromXml(QDomElement parent); }; typedef QMap <QString, FilterItem> FilterList; typedef QMapIterator<QString, FilterItem> FilterListIterator; class FiltersList { public: void add(FiltersList aFilterList); void addFilter(FilterItem aProjItem); FilterItem getFilter(QString name) const; FilterList* getFilters(); void toXml(QDomElement parent); static FiltersList fromXml(QDomElement parent); private: FilterList theFilters; }; #endif // FILTER_LIST_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/FilterPreferencesDialog.cpp���������������������������������������0000664�0000000�0000000�00000011630�11770671653�0024251�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: FilterPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, Bart Vanhauwaert (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include "FilterPreferencesDialog.h" #include "TagSelector.h" #include "MainWindow.h" #include "SelectionDialog.h" #include <QMessageBox> #include <QDir> #include <QUrl> #include <QTextEdit> #include <QComboBox> FilterPreferencesDialog::FilterPreferencesDialog(QWidget* parent) : QDialog(parent) { setupUi(this); btAdd->setEnabled(false); btApply->setEnabled(false); btDel->setEnabled(false); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); loadPrefs(); } FilterPreferencesDialog::~FilterPreferencesDialog() { } void FilterPreferencesDialog::addFilter(const FilterItem & srv) { theItems.push_back(srv); if (!srv.deleted) { QListWidgetItem* item = new QListWidgetItem(srv.name); item->setData(Qt::UserRole, (int) theItems.size()-1); lvFilters->addItem(item); } TagSelector* t = TagSelector::parse(srv.filter); qDebug() << t->asExpression(false); } void FilterPreferencesDialog::on_btApply_clicked(void) { int idx = static_cast<int>(lvFilters->currentItem()->data(Qt::UserRole).toInt()); if (idx >= theItems.size()) return; TagSelector* t = TagSelector::parse(edFilterString->text()); if (!t) return; FilterItem& item(theItems[idx]); item.name = edFilterName->text(); item.filter = t->asExpression(false); lvFilters->currentItem()->setText(item.name); selectedItem = item.name; } void FilterPreferencesDialog::on_btAdd_clicked(void) { TagSelector* t = TagSelector::parse(edFilterString->text()); if (!t) return; addFilter(FilterItem(QUuid::createUuid(), edFilterName->text(), t->asExpression(false))); lvFilters->setCurrentRow(lvFilters->count() - 1); on_lvFilters_itemSelectionChanged(); } void FilterPreferencesDialog::on_btDel_clicked(void) { int idx = static_cast<int>(lvFilters->currentItem()->data(Qt::UserRole).toInt()); if (idx >= theItems.size()) return; theItems[idx].deleted = true; delete lvFilters->takeItem(lvFilters->currentRow()); on_lvFilters_itemSelectionChanged(); } void FilterPreferencesDialog::on_btFilterHelper_clicked() { SelectionDialog* Sel = new SelectionDialog(g_Merk_MainWindow, false); if (!Sel) return; Sel->edTagQuery->setText(edFilterString->text()); if (Sel->exec() == QDialog::Accepted) { edFilterString->setText(Sel->edTagQuery->text()); } } void FilterPreferencesDialog::on_lvFilters_itemSelectionChanged() { if (lvFilters->currentRow() < 0) { selectedItem.clear(); edFilterName->setText(selectedItem); edFilterString->setText(selectedItem); btDel->setEnabled(false); btApply->setEnabled(false); return; } QListWidgetItem* it = lvFilters->item(lvFilters->currentRow()); on_lvFilters_itemClicked(it); } void FilterPreferencesDialog::on_lvFilters_itemClicked(QListWidgetItem * it) { int idx = it->data(Qt::UserRole).toInt(); if (idx >= theItems.size()) { btDel->setEnabled(false); btApply->setEnabled(false); return; } FilterItem& item(theItems[idx]); edFilterName->setText(item.name); edFilterString->setText(item.filter); selectedItem = item.name; btDel->setEnabled(true); btApply->setEnabled(true); } void FilterPreferencesDialog::on_edFilterName_textChanged(const QString & text) { btApply->setEnabled(false); btDel->setEnabled(false); if (text.isEmpty()) { btAdd->setEnabled(false); } else { btAdd->setEnabled(true); } } void FilterPreferencesDialog::on_edFilterString_textChanged(const QString & /*text*/) { } QString FilterPreferencesDialog::getSelectedItem() { return selectedItem; } void FilterPreferencesDialog::setSelectedItem(QString theValue) { QList<QListWidgetItem *> L = lvFilters->findItems(theValue, Qt::MatchExactly); lvFilters->setCurrentItem(L[0]); on_lvFilters_itemSelectionChanged(); } void FilterPreferencesDialog::on_buttonBox_clicked(QAbstractButton * button) { if (button == buttonBox->button(QDialogButtonBox::Apply)) { savePrefs(); } else if (button == buttonBox->button(QDialogButtonBox::Ok)) { savePrefs(); this->accept(); } } void FilterPreferencesDialog::loadPrefs() { FilterList* L = M_PREFS->getFiltersList()->getFilters(); FilterListIterator i(*L); while (i.hasNext()) { i.next(); addFilter(i.value()); } } void FilterPreferencesDialog::savePrefs() { FilterList* L = M_PREFS->getFiltersList()->getFilters(); L->clear(); for (int i = 0; i < theItems.size(); ++i) { FilterItem S(theItems[i]); L->insert(theItems[i].name, S); } M_PREFS->save(); } ��������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/FilterPreferencesDialog.h�����������������������������������������0000664�0000000�0000000�00000002545�11770671653�0023723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: FilterPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef FilterPreferencesDialog_H #define FilterPreferencesDialog_H #include <QWidget> #include <QBuffer> #include <ui_FilterPreferencesDialog.h> #include "MerkaartorPreferences.h" #include "FilterList.h" #include <QList> /** @author cbro <cbro@semperpax.com> */ class FilterPreferencesDialog : public QDialog, public Ui::FilterPreferencesDialog { Q_OBJECT public: FilterPreferencesDialog(QWidget* parent = 0); ~FilterPreferencesDialog(); void addFilter(const FilterItem & item); public slots: void on_btApply_clicked(); void on_btAdd_clicked(); void on_btDel_clicked(); void on_btFilterHelper_clicked(); void on_lvFilters_itemSelectionChanged(); void on_lvFilters_itemClicked(QListWidgetItem * item); void on_buttonBox_clicked(QAbstractButton * button); void on_edFilterName_textChanged(const QString & text); void on_edFilterString_textChanged(const QString & text); private: void loadPrefs(); void savePrefs(); public: QList<FilterItem> theItems; QString getSelectedItem(); void setSelectedItem(QString theValue); private: QString selectedItem; int httpGetId; QBuffer* buf; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/FilterPreferencesDialog.ui����������������������������������������0000664�0000000�0000000�00000012256�11770671653�0024111�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>FilterPreferencesDialog</class> <widget class="QDialog" name="FilterPreferencesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>640</width> <height>360</height> </rect> </property> <property name="windowTitle"> <string>Filters setup</string> </property> <layout class="QVBoxLayout"> <item> <widget class="QGroupBox" name="grpFilters"> <property name="title"> <string>Filters</string> </property> <layout class="QHBoxLayout"> <property name="spacing"> <number>1</number> </property> <property name="margin"> <number>1</number> </property> <item> <widget class="QFrame" name="frame_2"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>5</number> </property> <property name="margin"> <number>5</number> </property> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Filter list:</string> </property> </widget> </item> <item> <widget class="QListWidget" name="lvFilters"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label_11"> <property name="text"> <string>Name:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edFilterName"> <property name="minimumSize"> <size> <width>100</width> <height>0</height> </size> </property> </widget> </item> <item> <widget class="QLabel" name="label_5"> <property name="text"> <string>Filter</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLineEdit" name="edFilterString"/> </item> <item> <widget class="QToolButton" name="btFilterHelper"> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>1</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="btApply"> <property name="text"> <string>Apply</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btAdd"> <property name="text"> <string>Add</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btDel"> <property name="text"> <string>Remove</string> </property> </widget> </item> </layout> </widget> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>FilterPreferencesDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>FilterPreferencesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/MerkaartorPreferences.cpp�����������������������������������������0000664�0000000�0000000�00000153301�11770671653�0024015�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: MerkaartorPreferences // // Description: // // // Author: cbro <cbro@semperpax.com>, bvh, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include "IFeature.h" #include "MerkaartorPreferences.h" #include <QApplication> #include <QByteArray> #include <QMessageBox> #include "MainWindow.h" #ifndef _MOBILE #include <ui_MainWindow.h> #endif #include "MapView.h" #include "IMapAdapterFactory.h" #include "IPaintStyle.h" #include "MasPaintStyle.h" #define M_PARAM_IMPLEMENT_BOOL(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(bool theValue) \ { \ m_##Param = theValue; \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, theValue); \ } \ } \ bool MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = Default; \ else \ m_##Param = Sets->value(#Category"/"#Param, Default).toBool(); \ } \ return m_##Param; \ } #define M_PARAM_IMPLEMENT_STRING(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(const QString& theValue) \ { \ m_##Param = theValue; \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, theValue); \ } \ } \ QString MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = Default; \ else \ m_##Param = Sets->value(#Category"/"#Param, Default).toString(); \ } \ return m_##Param; \ } #define M_PARAM_IMPLEMENT_STRINGLIST(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(const QStringList& theValue) \ { \ m_##Param = theValue; \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, theValue); \ } \ } \ QStringList& MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = QString(Default).split("#"); \ else \ m_##Param = Sets->value(#Category"/"#Param, QVariant(QString(Default).split("#"))).toStringList(); \ } \ return m_##Param; \ } #define M_PARAM_IMPLEMENT_INT(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(int theValue) \ { \ m_##Param = theValue; \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, theValue); \ } \ } \ int MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = Default; \ else \ m_##Param = Sets->value(#Category"/"#Param, Default).toInt(); \ } \ return m_##Param; \ } #define M_PARAM_IMPLEMENT_INT_DELAYED(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(int theValue) \ { \ m_##Param = theValue; \ } \ void MerkaartorPreferences::save##Param() \ { \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, m_##Param); \ } \ } \ int MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = Default; \ else \ m_##Param = Sets->value(#Category"/"#Param, Default).toInt(); \ } \ return m_##Param; \ } #define M_PARAM_IMPLEMENT_DOUBLE(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(qreal theValue) \ { \ m_##Param = theValue; \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, theValue); \ } \ } \ qreal MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = Default; \ else \ m_##Param = Sets->value(#Category"/"#Param, Default).toDouble(); \ } \ return m_##Param; \ } #define M_PARAM_IMPLEMENT_COLOR(Param, Category, Default) \ bool mb_##Param = false; \ void MerkaartorPreferences::set##Param(const QColor& theValue) \ { \ m_##Param = theValue; \ if (!g_Merk_Ignore_Preferences) { \ Sets->setValue(#Category"/"#Param, QVariant(theValue)); \ } \ } \ QColor MerkaartorPreferences::get##Param() \ { \ if (!::mb_##Param) { \ ::mb_##Param = true; \ if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) \ m_##Param = Default; \ else { \ QString sColor = Sets->value(#Category"/"#Param, "").toString(); \ if (sColor.isEmpty() || !QColor(sColor).isValid()) \ m_##Param = Default; \ else \ m_##Param = Sets->value(#Category"/"#Param).value<QColor>(); \ } \ } \ return m_##Param; \ } /***************************/ MerkaartorPreferences* MerkaartorPreferences::m_prefInstance = 0; MerkaartorPreferences* MerkaartorPreferences::instance() { if (!m_prefInstance) { m_prefInstance = new MerkaartorPreferences; } return m_prefInstance; } IPaintStyle* MerkaartorPreferences::m_EPSInstance = 0; IPaintStyle* MerkaartorPreferences::styleinstance() { if (!m_EPSInstance) { m_EPSInstance = new MasPaintStyle; } return m_EPSInstance; } Tool::Tool(QString Name, QString Path) : ToolName(Name), ToolPath(Path) { } Tool::Tool() : ToolName(""), ToolPath("") { } /* MekaartorPreferences */ MerkaartorPreferences::MerkaartorPreferences() : Sets(0) { if (!g_Merk_Ignore_Preferences) { if (!g_Merk_Portable) { Sets = new QSettings(); QSettings oldSettings("BartVanhauwaert", "Merkaartor"); QStringList oldKeys = oldSettings.allKeys(); foreach(QString k, oldKeys) { Sets->setValue(k, oldSettings.value(k)); Sets->sync(); oldSettings.remove(k); } oldSettings.clear(); } else { Sets = new QSettings(qApp->applicationDirPath() + "/merkaartor.ini", QSettings::IniFormat); } version = Sets->value("version/version", "0").toString(); } theToolList = new ToolList(); connect(&httpRequest, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(on_responseHeaderReceived(const QHttpResponseHeader &))); connect(&httpRequest,SIGNAL(requestFinished(int, bool)),this,SLOT(on_requestFinished(int, bool))); #ifdef USE_LIBPROXY // Initialise libproxy proxyFactory = px_proxy_factory_new(); // Map libproxy URL schemes to QNetworkProxy types proxyTypeMap["direct"] = QNetworkProxy::NoProxy; proxyTypeMap["socks" ] = QNetworkProxy::Socks5Proxy; proxyTypeMap["socks5"] = QNetworkProxy::Socks5Proxy; proxyTypeMap["http" ] = QNetworkProxy::HttpCachingProxy; #endif initialize(); } MerkaartorPreferences::~MerkaartorPreferences() { delete theToolList; delete Sets; #ifdef USE_LIBPROXY px_proxy_factory_free(proxyFactory); #endif } void MerkaartorPreferences::save(bool UserPwdChanged) { if (g_Merk_Ignore_Preferences) return; Sets->setValue("version/version", QString("%1").arg(STRINGIFY(VERSION))); setWmsServers(); setTmsServers(); setTools(); setAlphaList(); saveProjections(); saveFilters(); saveWMSes(); saveTMSes(); saveBookmarks(); saveOsmServers(); saveTagListFirstColumnWidth(); Sets->sync(); if (UserPwdChanged) fromOsmPref(); else toOsmPref(); } void MerkaartorPreferences::toOsmPref() { qDebug() << "MerkaartorPreferences::toOsmPref"; if (getOfflineMode()) return; if (getOsmUser().isEmpty() || getOsmPassword().isEmpty()) return; QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("MerkaartorLists"); theXmlDoc.appendChild(root); theProjectionsList.toXml(root); theBookmarkList.toXml(root); theTmsServerList.toXml(root); theWmsServerList.toXml(root); theFiltersList.toXml(root); QByteArray ba = qCompress(theXmlDoc.toString().toUtf8()); QByteArray PrefsXML = ba.toBase64(); QStringList slicedPrefs; for (int i=0; i<PrefsXML.size(); i+=254) { QString s = PrefsXML.mid(i, 254); slicedPrefs.append(s); if (s.size() < 254) break; } QMap<QString, QString> OsmPref; QString k = QString("MerkaartorSizePrefsXML"); QString v = QString::number(slicedPrefs.size()); OsmPref.insert(k, v); for (int i=0; i<slicedPrefs.size(); i++) { k = QString("MerkaartorPrefsXML%1").arg(i, 3, 10, QLatin1Char('0')); v = slicedPrefs[i]; OsmPref.insert(k, v); } QMapIterator<QString, QString> it(OsmPref); while(it.hasNext()) { it.next(); putOsmPref(it.key(), it.value()); } } void MerkaartorPreferences::fromOsmPref() { if (getOfflineMode()) return; if (getOsmUser().isEmpty() || getOsmPassword().isEmpty()) return; QUrl osmWeb(getOsmApiUrl()); if (osmWeb.port() == -1) osmWeb.setPort(80); httpRequest.setHost(osmWeb.host(), osmWeb.port()); QHttpRequestHeader Header("GET", osmWeb.path() + "/user/preferences/"); if (osmWeb.port() == 80) Header.setValue("Host",osmWeb.host()); else Header.setValue("Host",osmWeb.host() + ':' + QString::number(osmWeb.port())); Header.setValue("User-Agent", USER_AGENT); QString auth = QString("%1:%2").arg(getOsmUser()).arg(getOsmPassword()); QByteArray ba_auth = auth.toUtf8().toBase64(); Header.setValue("Authorization", QString("Basic %1").arg(QString(ba_auth))); httpRequest.setProxy(getProxy(osmWeb)); OsmPrefLoadId = httpRequest.request(Header, NULL, &OsmPrefContent); } void MerkaartorPreferences::on_requestFinished ( int id, bool error ) { if (id != OsmPrefLoadId || error) return; QMap<QString, QString> OsmPref; QDomDocument aOsmPrefDoc; aOsmPrefDoc.setContent(OsmPrefContent.buffer(), false); QDomNodeList prefList = aOsmPrefDoc.elementsByTagName("preference"); int sz = 0; for (int i=0; i < prefList.size(); ++i) { QDomElement e = prefList.at(i).toElement(); if (e.attribute("k").startsWith("MerkaartorSizePrefsXML")) { sz = e.attribute("v").toInt(); break; } } if (!sz) return; QVector<QString> slicedPrefs(sz); QString k, v; for (int i=0; i < prefList.size(); ++i) { QDomElement e = prefList.at(i).toElement(); k = e.attribute("k"); v = e.attribute("v"); if (k.startsWith("MerkaartorPrefsXML")) { int idx = k.right(3).toInt(); if (idx < sz) slicedPrefs[idx] = v; } } QByteArray PrefsXML; for (int i=0; i<sz; i++) PrefsXML.append(slicedPrefs[i].toAscii()); //qDebug() << "Size: " << PrefsXML.size(); QDomDocument theXmlDoc; QByteArray ba = QByteArray::fromBase64(PrefsXML); if (!theXmlDoc.setContent(qUncompress(ba))) { qDebug() << "Invalid OSM Prefs XML"; return; } QDomElement docElem = theXmlDoc.documentElement(); if (docElem.tagName() != "MerkaartorLists") { qDebug() << "Invalid OSM Prefs XML root element: " << docElem.tagName(); return; } //qDebug() << theXmlDoc.toString(); QDomElement c = docElem.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Projections") { ProjectionsList aProjList = ProjectionsList::fromXml(c); theProjectionsList.add(aProjList); } else if (c.tagName() == "Bookmarks") { BookmarksList aBkList = BookmarksList::fromXml(c); theBookmarkList.add(aBkList); } else if (c.tagName() == "TmsServers") { TmsServersList aTmsList = TmsServersList::fromXml(c); theTmsServerList.add(aTmsList); } else if (c.tagName() == "WmsServers") { WmsServersList aWmsList = WmsServersList::fromXml(c); theWmsServerList.add(aWmsList); } else if (c.tagName() == "Filters") { FiltersList aFiltList = FiltersList::fromXml(c); theFiltersList.add(aFiltList); } c = c.nextSiblingElement(); } } void MerkaartorPreferences::putOsmPref(const QString& k, const QString& v) { QUrl osmWeb(getOsmApiUrl()); if (osmWeb.port() == -1) osmWeb.setPort(80); QByteArray ba(v.toUtf8()); QBuffer Buf(&ba); httpRequest.setHost(osmWeb.host(), osmWeb.port()); QHttpRequestHeader Header("PUT", osmWeb.path() + QString("/user/preferences/%1").arg(k)); if (osmWeb.port() == 80) Header.setValue("Host",osmWeb.host()); else Header.setValue("Host",osmWeb.host() + ':' + QString::number(osmWeb.port())); Header.setValue("User-Agent", USER_AGENT); QString auth = QString("%1:%2").arg(getOsmUser()).arg(getOsmPassword()); QByteArray ba_auth = auth.toUtf8().toBase64(); Header.setValue("Authorization", QString("Basic %1").arg(QString(ba_auth))); httpRequest.setProxy(getProxy(osmWeb)); OsmPrefSaveId = httpRequest.request(Header,ba); } void MerkaartorPreferences::deleteOsmPref(const QString& k) { QUrl osmWeb(getOsmApiUrl()); if (osmWeb.port() == -1) osmWeb.setPort(80); httpRequest.setHost(osmWeb.host(), osmWeb.port()); QHttpRequestHeader Header("DELETE", osmWeb.path() + QString("/user/preferences/%1").arg(k)); if (osmWeb.port() == 80) Header.setValue("Host",osmWeb.host()); else Header.setValue("Host",osmWeb.host() + ':' + QString::number(osmWeb.port())); Header.setValue("User-Agent", USER_AGENT); QString auth = QString("%1:%2").arg(getOsmUser()).arg(getOsmPassword()); QByteArray ba_auth = auth.toUtf8().toBase64(); Header.setValue("Authorization", QString("Basic %1").arg(QString(ba_auth))); httpRequest.setProxy(getProxy(osmWeb)); httpRequest.request(Header); } void MerkaartorPreferences::on_responseHeaderReceived(const QHttpResponseHeader & hdr) { switch (hdr.statusCode()) { case 200: break; case 406: QMessageBox::critical(NULL,QApplication::translate("MerkaartorPreferences","Preferences upload failed"), QApplication::translate("MerkaartorPreferences","Duplicate key")); break; case 413: QMessageBox::critical(NULL,QApplication::translate("MerkaartorPreferences","Preferences upload failed"), QApplication::translate("MerkaartorPreferences","More than 150 preferences")); break; default: qDebug() << "MerkaartorPreferences::on_responseHeaderReceived :" << hdr.statusCode() << hdr.reasonPhrase(); break; } } void MerkaartorPreferences::initialize() { // Use06Api = Sets->value("osm/use06api", "true").toBool(); Use06Api = true; // PRoxy upgrade if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { if (Sets->contains("proxy/Use")) { bool b = Sets->value("proxy/Use").toBool(); QString h = Sets->value("proxy/Host").toString(); int p = Sets->value("proxy/Port").toInt(); Sets->remove("proxy"); setProxyUse(b); setProxyHost(h); setProxyPort(p); } } loadProjections(); loadFilters(); loadWMSes(); loadTMSes(); loadBookmarks(); loadOsmServers(); fromOsmPref(); QStringList sl; if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { sl = Sets->value("downloadosm/bookmarks").toStringList(); if (sl.size()) { for (int i=0; i<sl.size(); i+=5) { Bookmark B(sl[i], CoordBox(Coord(sl[i+2].toDouble(),sl[i+1].toDouble()), Coord(sl[i+4].toDouble(),sl[i+3].toDouble()))); theBookmarkList.addBookmark(B); } save(); Sets->remove("downloadosm/bookmarks"); } } QStringList alphaList = getAlphaList(); if (alphaList.size() == 0) { alpha["Low"] = 0.33; alpha["High"] = 0.66; alpha["Opaque"] = 1.0; } else { for (int i=0; i<alphaList.size(); i+=2) { alpha[alphaList[i]] = alphaList[i+1].toDouble(); } } QStringList tl; if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { tl = Sets->value("Tools/list").toStringList(); for (int i=0; i<tl.size(); i+=TOOL_FIELD_SIZE) { Tool t(tl[i], tl[i+1]); theToolList->insert(tl[i], t); } } if (!theToolList->contains("Inkscape")) { Tool t("Inkscape", ""); theToolList->insert("Inkscape", t); } QStringList Servers; if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { Servers = Sets->value("WSM/servers").toStringList(); if (Servers.size()) { for (int i=0; i<Servers.size(); i+=7) { WmsServer S(Servers[i], Servers[i+1], Servers[i+2], Servers[i+3], Servers[i+4], Servers[i+5], Servers[i+6], "", ""); theWmsServerList.addServer(S); } save(); Sets->remove("WSM/servers"); } Servers = Sets->value("TMS/servers").toStringList(); if (Servers.size()) { for (int i=0; i<Servers.size(); i+=6) { TmsServer S(Servers[i], Servers[i+1], Servers[i+2], "EPSG:900913", Servers[i+3].toInt(), Servers[i+4].toInt(), Servers[i+5].toInt(), "", ""); theTmsServerList.addServer(S); } save(); Sets->remove("TMS/servers"); } } parentDashes << 1 << 5; //Ensure we have a CacheDir value in QSettings if (!g_Merk_Ignore_Preferences) Sets->setValue("backgroundImage/CacheDir", Sets->value("backgroundImage/CacheDir", HOMEDIR + "/BackgroundCache")); } const QVector<qreal> MerkaartorPreferences::getParentDashes() const { return parentDashes; } qreal MerkaartorPreferences::apiVersionNum() const { if (Use06Api) return 0.6; else return 0.5; } const QString MerkaartorPreferences::apiVersion() const { if (Use06Api) return "0.6"; else return "0.5"; } void MerkaartorPreferences::setUse06Api(bool b) { // ATTENTION this does not update Use06API member on purpose to force a // restart before it takes effect. Mixing 0.5 api and 0.6 api in one session // is dangerous!!! Sets->setValue("osm/use06api", b); } M_PARAM_IMPLEMENT_BOOL(rightsidedriving, roadstructure, true); M_PARAM_IMPLEMENT_DOUBLE(doubleroaddistance, roadstructure, 20.); M_PARAM_IMPLEMENT_STRING(workingdir, general, ""); BookmarkList* MerkaartorPreferences::getBookmarks() { //return Sets->value("downloadosm/bookmarks").toStringList(); return theBookmarkList.getBookmarks(); } /* WMS */ WmsServerList* MerkaartorPreferences::getWmsServers() { // return Sets->value("WSM/servers").toStringList(); return theWmsServerList.getServers(); } void MerkaartorPreferences::setWmsServers() { //QStringList Servers; //WmsServerListIterator i(theWmsServerList); //while (i.hasNext()) { // i.next(); // WmsServer S = i.value(); // Servers.append(S.WmsName); // Servers.append(S.WmsAdress); // Servers.append(S.WmsPath); // Servers.append(S.WmsLayers); // Servers.append(S.WmsProjections); // Servers.append(S.WmsStyles); // Servers.append(S.WmsImgFormat); //} //Sets->setValue("WSM/servers", Servers); } OsmServerList* MerkaartorPreferences::getOsmServers() { return &theOsmServers; } /* TMS */ TmsServerList* MerkaartorPreferences::getTmsServers() { // return Sets->value("WSM/servers").toStringList(); return theTmsServerList.getServers(); } void MerkaartorPreferences::setTmsServers() { //QStringList Servers; //TmsServerListIterator i(theTmsServerList); //while (i.hasNext()) { // i.next(); // TmsServer S = i.value(); // Servers.append(S.TmsName); // Servers.append(S.TmsAdress); // Servers.append(S.TmsPath); // Servers.append(QString::number(S.TmsTileSize)); // Servers.append(QString::number(S.TmsMinZoom)); // Servers.append(QString::number(S.TmsMaxZoom)); //} //Sets->setValue("TMS/servers", Servers); } /* */ M_PARAM_IMPLEMENT_STRING(SelectedServer, backgroundImage, ""); bool MerkaartorPreferences::getBgVisible() const { if (g_Merk_Ignore_Preferences || g_Merk_Reset_Preferences) return false; else return Sets->value("backgroundImage/Visible", false).toBool(); } void MerkaartorPreferences::setBgVisible(bool theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("backgroundImage/Visible", theValue); } /* Plugins */ void MerkaartorPreferences::addBackgroundPlugin(IMapAdapterFactory* aPlugin) { mBackgroundPlugins.insert(aPlugin->getId(), aPlugin); } IMapAdapterFactory* MerkaartorPreferences::getBackgroundPlugin(const QUuid& anAdapterUid) { if (mBackgroundPlugins.contains(anAdapterUid)) return mBackgroundPlugins[anAdapterUid]; else return NULL; } void MerkaartorPreferences::setBackgroundPlugin(const QUuid & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("backgroundImage/BackgroundPlugin", theValue.toString()); } QUuid MerkaartorPreferences::getBackgroundPlugin() const { QString s; if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { s = Sets->value("backgroundImage/BackgroundPlugin", "").toString(); } return QUuid(s); } QMap<QUuid, IMapAdapterFactory *> MerkaartorPreferences::getBackgroundPlugins() { return mBackgroundPlugins; } M_PARAM_IMPLEMENT_STRING(CacheDir, backgroundImage, HOMEDIR + "/BackgroundCache"); M_PARAM_IMPLEMENT_INT(CacheSize, backgroundImage, 0); /* Search */ M_PARAM_IMPLEMENT_INT(LastMaxSearchResults, search, 999); M_PARAM_IMPLEMENT_STRING(LastSearchName, search, ""); M_PARAM_IMPLEMENT_STRING(LastSearchKey, search, ""); M_PARAM_IMPLEMENT_STRING(LastSearchValue, search, ""); M_PARAM_IMPLEMENT_STRING(LastSearchTagSelector, search, ""); /* Visuals */ void MerkaartorPreferences::saveMainWindowState(const MainWindow * mainWindow) { #ifndef _MOBILE if (!g_Merk_Ignore_Preferences) { // Sets->setValue("MainWindow/Position", mainWindow->pos()); // Sets->setValue("MainWindow/Size", mainWindow->size()); Sets->setValue("MainWindow/Geometry", mainWindow->saveGeometry()); Sets->setValue("MainWindow/State", mainWindow->saveState()); Sets->setValue("MainWindow/Fullscreen", mainWindow->ui->windowShowAllAction->isEnabled()); Sets->setValue("MainWindow/FullscreenState", mainWindow->fullscreenState); } #endif } void MerkaartorPreferences::restoreMainWindowState(MainWindow * mainWindow) const { #ifndef _MOBILE if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { // if (Sets->contains("MainWindow/Position")) // mainWindow->move( Sets->value("MainWindow/Position").toPoint()); // // if (Sets->contains("MainWindow/Size")) // mainWindow->resize( Sets->value("MainWindow/Size").toSize()); if (Sets->contains("MainWindow/Geometry")) mainWindow->restoreGeometry(Sets->value("MainWindow/Geometry").toByteArray() ); if (Sets->contains("MainWindow/State")) mainWindow->restoreState( Sets->value("MainWindow/State").toByteArray() ); if (Sets->contains("MainWindow/FullscreenState")) mainWindow->fullscreenState = Sets->value("MainWindow/FullscreenState").toByteArray(); if (Sets->value("MainWindow/Fullscreen", false).toBool()) { mainWindow->ui->windowHideAllAction->setEnabled(false); mainWindow->ui->windowHideAllAction->setVisible(false); mainWindow->ui->windowShowAllAction->setEnabled(true); mainWindow->ui->windowShowAllAction->setVisible(true); } else { mainWindow->ui->windowHideAllAction->setEnabled(true); mainWindow->ui->windowHideAllAction->setVisible(true); mainWindow->ui->windowShowAllAction->setEnabled(false); mainWindow->ui->windowShowAllAction->setVisible(false); } } #endif } void MerkaartorPreferences::setInitialPosition(MapView* vw) { if (!g_Merk_Ignore_Preferences) { QStringList ip; CoordBox cb = vw->viewport(); ip.append(QString::number(cb.bottomLeft().y(), 'f', 8)); ip.append(QString::number(cb.bottomLeft().x(), 'f', 8)); ip.append(QString::number(cb.topRight().y(), 'f', 8)); ip.append(QString::number(cb.topRight().x(), 'f', 8)); Sets->setValue("MainWindow/InitialPosition", ip); // Sets->setValue("MainWindow/ViewRect", vw->rect()); } } void MerkaartorPreferences::initialPosition(MapView* vw) { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { if (!Sets->contains("MainWindow/InitialPosition")) { vw->setViewport(WORLD_COORDBOX, vw->rect()); return; } const QStringList & ip = Sets->value("MainWindow/InitialPosition").toStringList(); const Coord bottomLeft(ip[0].toDouble(), ip[1].toDouble()); const Coord topRight(ip[2].toDouble(),ip[3].toDouble()); vw->setViewport(CoordBox(bottomLeft, topRight), vw->rect()); // if (!Sets->contains("MainWindow/ViewRect")) // vw->setViewport(CoordBox(bottomLeft, topRight), vw->rect()); // else { // QRect rt = Sets->value("MainWindow/ViewRect").toRect(); // vw->setViewport(CoordBox(bottomLeft, topRight), rt); // } } } #ifndef _MOBILE void MerkaartorPreferences::setProjectionType(QString theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("projection/Type", theValue); } QString MerkaartorPreferences::getProjectionType() { // if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) // return Sets->value("projection/Type", "Mercator").toString(); // else return "EPSG:3857"; } ProjectionsList* MerkaartorPreferences::getProjectionsList() { return &theProjectionsList; } ProjectionItem MerkaartorPreferences::getProjection(QString aProj) { return theProjectionsList.getProjection(aProj); } #endif void MerkaartorPreferences::setCurrentFilter(FilterType theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("filter/Type", theValue); } QString MerkaartorPreferences::getCurrentFilter() { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("filter/Type", "").toString(); else return ""; } FiltersList* MerkaartorPreferences::getFiltersList() { return &theFiltersList; } FilterItem MerkaartorPreferences::getFilter(QString aFilter) { if (aFilter.isEmpty()) return FilterItem(); return theFiltersList.getFilter(aFilter); } qreal MerkaartorPreferences::getAlpha(QString lvl) { return alpha[lvl]; } QStringList MerkaartorPreferences::getAlphaList() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("visual/alpha").toStringList(); else return QStringList(); } void MerkaartorPreferences::setAlphaList() { if (!g_Merk_Ignore_Preferences) { QStringList alphaList; QHashIterator<QString, qreal> i(alpha); while (i.hasNext()) { i.next(); alphaList << i.key() << QString().setNum(i.value()); } Sets->setValue("visual/alpha", alphaList); } } M_PARAM_IMPLEMENT_INT(HoverWidth, visual, 1); M_PARAM_IMPLEMENT_INT(HighlightWidth, visual, 1); M_PARAM_IMPLEMENT_INT(DirtyWidth, visual, 2); M_PARAM_IMPLEMENT_INT(FocusWidth, visual, 3); M_PARAM_IMPLEMENT_INT(RelationsWidth, visual, 3); M_PARAM_IMPLEMENT_INT(GpxTrackWidth, visual, 3); M_PARAM_IMPLEMENT_COLOR(BgColor, visual, Qt::white) M_PARAM_IMPLEMENT_COLOR(WaterColor, visual, QColor(181, 208, 208)) M_PARAM_IMPLEMENT_COLOR(FocusColor, visual, Qt::blue); M_PARAM_IMPLEMENT_COLOR(HoverColor, visual, Qt::magenta); M_PARAM_IMPLEMENT_COLOR(HighlightColor, visual, Qt::darkCyan); M_PARAM_IMPLEMENT_COLOR(DirtyColor, visual, QColor(255, 85, 0)); M_PARAM_IMPLEMENT_COLOR(RelationsColor, visual, QColor(0, 170, 0)); M_PARAM_IMPLEMENT_COLOR(GpxTrackColor, visual, QColor(50, 220, 220)); QHash< QString, qreal > * MerkaartorPreferences::getAlphaPtr() { return α } bool MerkaartorPreferences::getDrawTileBoundary() { return false; } M_PARAM_IMPLEMENT_BOOL(HideToolbarLabels, interface, false) /* DATA */ QString MerkaartorPreferences::getOsmWebsite() const { QString s; if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) s = Sets->value("osm/Website", "www.openstreetmap.org").toString(); else s = "www.openstreetmap.org"; #if QT_VERSION >= 0x040600 && !defined(FORCE_46) QUrl u = QUrl::fromUserInput(s); #else // convenience for creating a valid URL // fails miserably if QString s already contains a schema QString h = s; // intermediate host QString p; // intermediate path int slashpos = s.indexOf('/'); if (slashpos >= 1) // there's a path element in s { h = s.left(slashpos); p = s.right(s.size() - 1 - slashpos); } QUrl u; u.setHost(h); u.setScheme("http"); u.setPath(p); #endif if (!u.path().isEmpty()) u.setPath(""); return u.toString(); } QString MerkaartorPreferences::getOsmApiUrl() const { QUrl u(getOsmWebsite()); if (u.path().isEmpty()) u.setPath("/api/" + apiVersion()); return u.toString(); } void MerkaartorPreferences::setOsmWebsite(const QString & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("osm/Website", theValue); } M_PARAM_IMPLEMENT_STRING(XapiUrl, osm, "http://www.informationfreeway.org/api/0.6") M_PARAM_IMPLEMENT_STRING(NominatimUrl, osm, "http://nominatim.openstreetmap.org/search") M_PARAM_IMPLEMENT_BOOL(AutoHistoryCleanup, data, true); QString MerkaartorPreferences::getOsmUser() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("osm/User").toString(); else return ""; } void MerkaartorPreferences::setOsmUser(const QString & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("osm/User", theValue); } QString MerkaartorPreferences::getOsmPassword() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("osm/Password").toString(); else return ""; } void MerkaartorPreferences::setOsmPassword(const QString & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("osm/Password", theValue); } M_PARAM_IMPLEMENT_DOUBLE(MaxDistNodes, data, 0.0); M_PARAM_IMPLEMENT_BOOL(AutoSaveDoc, data, false); M_PARAM_IMPLEMENT_BOOL(AutoExtractTracks, data, false); M_PARAM_IMPLEMENT_INT(DirectionalArrowsVisible, visual, 1); RendererOptions MerkaartorPreferences::getRenderOptions() { RendererOptions opt; if (getBackgroundVisible()) opt.options |= RendererOptions::BackgroundVisible; else opt.options &= ~RendererOptions::BackgroundVisible; if (getForegroundVisible()) opt.options |= RendererOptions::ForegroundVisible; else opt.options &= ~RendererOptions::ForegroundVisible; if (getTouchupVisible()) opt.options |= RendererOptions::TouchupVisible; else opt.options &= ~RendererOptions::TouchupVisible; if (getNamesVisible()) opt.options |= RendererOptions::NamesVisible; else opt.options &= ~RendererOptions::NamesVisible; if (getPhotosVisible()) opt.options |= RendererOptions::PhotosVisible; else opt.options &= ~RendererOptions::PhotosVisible; if (getVirtualNodesVisible()) opt.options |= RendererOptions::VirtualNodesVisible; else opt.options &= ~RendererOptions::VirtualNodesVisible; if (getTrackPointsVisible()) opt.options |= RendererOptions::NodesVisible; else opt.options &= ~RendererOptions::NodesVisible; if (getTrackSegmentsVisible()) opt.options |= RendererOptions::TrackSegmentVisible; else opt.options &= ~RendererOptions::TrackSegmentVisible; if (getRelationsVisible()) opt.options |= RendererOptions::RelationsVisible; else opt.options &= ~RendererOptions::RelationsVisible; if (getDownloadedVisible()) opt.options |= RendererOptions::DownloadedVisible; else opt.options &= ~RendererOptions::DownloadedVisible; if (getScaleVisible()) opt.options |= RendererOptions::ScaleVisible; else opt.options &= ~RendererOptions::ScaleVisible; if (getLatLonGridVisible()) opt.options |= RendererOptions::LatLonGridVisible; else opt.options &= ~RendererOptions::LatLonGridVisible; if (getZoomBoris()) opt.options |= RendererOptions::LockZoom; else opt.options &= ~RendererOptions::LockZoom; opt.arrowOptions &= getDirectionalArrowsVisible(); return opt; } /* Export Type */ void MerkaartorPreferences::setExportType(ExportType theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("export/Type", theValue); } ExportType MerkaartorPreferences::getExportType() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return (ExportType)Sets->value("export/Type", 0).toInt(); else return (ExportType)0; } /* Tools */ ToolList* MerkaartorPreferences::getTools() const { return theToolList; } void MerkaartorPreferences::setTools() { if (!g_Merk_Ignore_Preferences) { QStringList tl; ToolListIterator i(*theToolList); while (i.hasNext()) { i.next(); Tool t = i.value(); tl.append(t.ToolName); tl.append(t.ToolPath); } Sets->setValue("Tools/list", tl); } } Tool MerkaartorPreferences::getTool(QString toolName) const { Tool ret; ToolListIterator i(*theToolList); while (i.hasNext()) { i.next(); if (i.key() == toolName) { ret = i.value(); } } return ret; } /* Recent */ QStringList MerkaartorPreferences::getRecentOpen() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("recent/open").toStringList(); else return QStringList(); } void MerkaartorPreferences::setRecentOpen(const QStringList & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("recent/open", theValue); } void MerkaartorPreferences::addRecentOpen(const QString & theValue) { QStringList RecentOpen = getRecentOpen(); int idx = RecentOpen.indexOf(theValue); if (idx >= 0) { RecentOpen.move(idx, 0); } else { if (RecentOpen.size() == 4) RecentOpen.removeLast(); RecentOpen.insert(0, theValue); } setRecentOpen(RecentOpen); } QStringList MerkaartorPreferences::getRecentImport() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("recent/import").toStringList(); else return QStringList(); } void MerkaartorPreferences::setRecentImport(const QStringList & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("recent/import", theValue); } void MerkaartorPreferences::addRecentImport(const QString & theValue) { QStringList RecentImport = getRecentImport(); int idx = RecentImport.indexOf(theValue); if (idx >= 0) { RecentImport.move(idx, 0); } else { if (RecentImport.size() == 4) RecentImport.removeLast(); RecentImport.insert(0, theValue); } setRecentImport(RecentImport); } QStringList MerkaartorPreferences::getShortcuts() const { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) return Sets->value("Tools/shortcuts").toStringList(); else return QStringList(); } void MerkaartorPreferences::setShortcuts(const QStringList & theValue) { if (!g_Merk_Ignore_Preferences) Sets->setValue("Tools/shortcuts", theValue); } M_PARAM_IMPLEMENT_INT(PolygonSides, Tools, 3) /* Rendering */ M_PARAM_IMPLEMENT_BOOL(UseAntiAlias, style, true) M_PARAM_IMPLEMENT_BOOL(AntiAliasWhilePanning, style, false) M_PARAM_IMPLEMENT_BOOL(UseStyledWireframe, style, false) M_PARAM_IMPLEMENT_STRING(DefaultStyle, style, ":/Styles/Mapnik.mas") M_PARAM_IMPLEMENT_STRING(CustomStyle, style, "") M_PARAM_IMPLEMENT_BOOL(DisableStyleForTracks, style, true) M_PARAM_IMPLEMENT_STRINGLIST(TechnicalTags, style, TECHNICAL_TAGS) M_PARAM_IMPLEMENT_INT(EditRendering, style, 0) /* Zoom */ M_PARAM_IMPLEMENT_INT(ZoomIn, zoom, 133) M_PARAM_IMPLEMENT_INT(ZoomOut, zoom, 75) M_PARAM_IMPLEMENT_BOOL(ZoomBoris, zoom, false) /* Visual */ M_PARAM_IMPLEMENT_BOOL(BackgroundOverwriteStyle, visual, false) M_PARAM_IMPLEMENT_INT(AreaOpacity, visual, 100) M_PARAM_IMPLEMENT_BOOL(UseShapefileForBackground, visual, false) M_PARAM_IMPLEMENT_BOOL(DrawingHack, visual, true) M_PARAM_IMPLEMENT_BOOL(SimpleGpxTrack, visual, false) M_PARAM_IMPLEMENT_BOOL(UseVirtualNodes, visual, true) M_PARAM_IMPLEMENT_BOOL(RelationsSelectableWhenHidden, visual, true) M_PARAM_IMPLEMENT_DOUBLE(LocalZoom, visual, 0.5) M_PARAM_IMPLEMENT_DOUBLE(RegionalZoom, visual, 0.01) M_PARAM_IMPLEMENT_INT(NodeSize, visual, 8) M_PARAM_IMPLEMENT_BOOL(DownloadedVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(ScaleVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(LatLonGridVisible, visual, false) M_PARAM_IMPLEMENT_BOOL(BackgroundVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(ForegroundVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(TouchupVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(NamesVisible, visual, false) M_PARAM_IMPLEMENT_BOOL(TrackPointsVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(TrackSegmentsVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(RelationsVisible, visual, false) M_PARAM_IMPLEMENT_BOOL(PhotosVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(VirtualNodesVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(DirtyVisible, visual, true) M_PARAM_IMPLEMENT_BOOL(WireframeView, visual, false) /* Templates */ M_PARAM_IMPLEMENT_STRING(DefaultTemplate, templates, ":/Templates/default.mat") M_PARAM_IMPLEMENT_STRING(CustomTemplate, templates, "") /* GPS */ #ifdef Q_OS_WIN M_PARAM_IMPLEMENT_BOOL(GpsUseGpsd, gps, false) M_PARAM_IMPLEMENT_STRING(GpsPort, gps, "COM1") #else M_PARAM_IMPLEMENT_BOOL(GpsUseGpsd, gps, true) M_PARAM_IMPLEMENT_STRING(GpsPort, gps, "/dev/rfcomm0") #endif M_PARAM_IMPLEMENT_STRING(GpsdHost, gps, "localhost") M_PARAM_IMPLEMENT_INT(GpsdPort, gps, 2947) M_PARAM_IMPLEMENT_BOOL(GpsSaveLog, gps, false) M_PARAM_IMPLEMENT_BOOL(GpsMapCenter, gps, false) M_PARAM_IMPLEMENT_STRING(GpsLogDir, gps, "") M_PARAM_IMPLEMENT_BOOL(GpsSyncTime, gps, false) M_PARAM_IMPLEMENT_BOOL(ResolveRelations, downloadosm, false) M_PARAM_IMPLEMENT_BOOL(DeleteIncompleteRelations, downloadosm, false) M_PARAM_IMPLEMENT_BOOL(MapTooltip, visual, false) M_PARAM_IMPLEMENT_BOOL(InfoOnHover, visual, true) M_PARAM_IMPLEMENT_BOOL(ShowParents, visual, true) M_PARAM_IMPLEMENT_INT_DELAYED(TagListFirstColumnWidth, visual, 20) M_PARAM_IMPLEMENT_BOOL(TranslateTags, locale, true) /* Background */ M_PARAM_IMPLEMENT_BOOL(AutoSourceTag, backgroundImage, true) /* Data */ M_PARAM_IMPLEMENT_STRING(OpenStreetBugsUrl, data, "http://openstreetbugs.schokokeks.org/api/0.1/") M_PARAM_IMPLEMENT_STRING(MapdustUrl, data, "http://www.mapdust.com/feed?lang=en&ft=wrong_turn,bad_routing,oneway_road,blocked_street,missing_street,wrong_roundabout,missing_speedlimit,other&fd=1&minR=&maxR=") M_PARAM_IMPLEMENT_BOOL(GdalConfirmProjection, data, false) M_PARAM_IMPLEMENT_BOOL(HasAutoLoadDocument, data, false) M_PARAM_IMPLEMENT_STRING(AutoLoadDocumentFilename, data, "") /* Mouse bevaviour */ #ifdef _MOBILE M_PARAM_IMPLEMENT_BOOL(MouseSingleButton, Mouse, true) #else M_PARAM_IMPLEMENT_BOOL(MouseSingleButton, Mouse, false) #endif M_PARAM_IMPLEMENT_BOOL(SeparateMoveMode, Mouse, true) M_PARAM_IMPLEMENT_BOOL(SelectModeCreation, Mouse, false) // Geotag M_PARAM_IMPLEMENT_INT(MaxGeoPicWidth, geotag, 160) /* Custom Style */ M_PARAM_IMPLEMENT_BOOL(MerkaartorStyle, visual, false) M_PARAM_IMPLEMENT_STRING(MerkaartorStyleString, visual, "skulpture") /* Network */ M_PARAM_IMPLEMENT_BOOL(OfflineMode, Network, false) M_PARAM_IMPLEMENT_BOOL(LocalServer, Network, false) M_PARAM_IMPLEMENT_INT(NetworkTimeout, Network, 10000) /* Proxy */ QNetworkProxy MerkaartorPreferences::getProxy(const QUrl & requestUrl) { QNetworkProxy theProxy; if ( getProxyUse() ) { return QNetworkProxy(QNetworkProxy::HttpProxy, getProxyHost(), getProxyPort(), getProxyUser(), getProxyPassword()); } else { #ifdef USE_LIBPROXY // Ask libproxy for the system proxy if (proxyFactory) { // get proxy URL(s) from libproxy, see http://code.google.com/p/libproxy/wiki/HowTo char **proxies = px_proxy_factory_get_proxies(proxyFactory, requestUrl.toString().toUtf8().data()); // Iterate through the list until we find a proxy scheme QNetworkProxy supports for (int i=0 ; proxies[i] ; i++) { QUrl proxyUrl(proxies[i]); if (proxyTypeMap.contains(proxyUrl.scheme())) { theProxy.setType(proxyTypeMap.value(proxyUrl.scheme())); theProxy.setHostName(proxyUrl.host()); theProxy.setPort(proxyUrl.port()); theProxy.setUser(proxyUrl.userName()); theProxy.setPassword(proxyUrl.password()); //qDebug() << "Using proxy " << proxyUrl << " from libproxy for " << requestUrl; } } for (int i=0 ; proxies[i] ; i++) { free(proxies[i]); } return theProxy; } #endif #if QT_VERSION >= 0x040500 // Ask Qt for the system proxy (Qt >= 4.5.0), libproxy is preferred if available since QNetworkProxyFactory // doesn't yet support auto-config (PAC) on MacOS or system settings on linux while libproxy does QList<QNetworkProxy> systemProxies = QNetworkProxyFactory::systemProxyForQuery( QNetworkProxyQuery(requestUrl, QNetworkProxyQuery::UrlRequest) ); return systemProxies[0]; #else // Otherwise no proxy theProxy.setType(QNetworkProxy::NoProxy); #endif } return theProxy; } M_PARAM_IMPLEMENT_BOOL(ProxyUse, proxy, false) M_PARAM_IMPLEMENT_STRING(ProxyHost, proxy, "") M_PARAM_IMPLEMENT_INT(ProxyPort, proxy, 8080) M_PARAM_IMPLEMENT_STRING(ProxyUser, proxy, "") M_PARAM_IMPLEMENT_STRING(ProxyPassword, proxy, "") /* Track */ M_PARAM_IMPLEMENT_BOOL(ReadonlyTracksDefault, data, false) /* FeaturesDock */ M_PARAM_IMPLEMENT_BOOL(FeaturesWithin, FeaturesDock, true) /* Projections */ void MerkaartorPreferences::loadProjection(QString fn) { if (QDir::isRelativePath(fn)) fn = QCoreApplication::applicationDirPath() + "/" + fn; qDebug() << "loadProjection " << fn; QFile file(fn); if (!file.open(QIODevice::ReadOnly)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 could not be opened.").arg(fn)); return; } QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(&file)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid XML file.").arg(fn)); file.close(); return; } file.close(); QDomElement docElem = theXmlDoc->documentElement(); ProjectionsList aProjList = ProjectionsList::fromXml(docElem.firstChildElement()); theProjectionsList.add(aProjList); delete theXmlDoc; } void MerkaartorPreferences::loadProjections() { QString fn; fn = HOMEDIR + "/Projections.xml"; loadProjection(fn); #if defined(Q_OS_MAC) { QDir resources = QDir(QCoreApplication::applicationDirPath()); resources.cdUp(); resources.cd("Resources"); fn = resources.absolutePath() + "/Projections.xml"; } #else fn = QString(SHAREDIR) + "/Projections.xml"; #endif loadProjection(fn); fn = ":/Projections.xml"; loadProjection(fn); } void MerkaartorPreferences::saveProjections() { QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("MerkaartorList"); theXmlDoc.appendChild(root); theProjectionsList.toXml(root); QFile file(HOMEDIR + "/Projections.xml"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { //QMessageBox::critical(this, tr("Unable to open save projections file"), tr("%1 could not be opened for writing.").arg(HOMEDIR + "/Projections.xml")); return; } file.write(theXmlDoc.toString().toUtf8()); file.close(); } /* Filters */ void MerkaartorPreferences::loadFilter(QString fn) { if (QDir::isRelativePath(fn)) fn = QCoreApplication::applicationDirPath() + "/" + fn; qDebug() << "loadFilter " << fn; QFile file(fn); if (!file.open(QIODevice::ReadOnly)) { return; } QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(&file)) { file.close(); return; } file.close(); QDomElement docElem = theXmlDoc->documentElement(); FiltersList aFilterList = FiltersList::fromXml(docElem.firstChildElement()); theFiltersList.add(aFilterList); delete theXmlDoc; } void MerkaartorPreferences::loadFilters() { QString fn; fn = HOMEDIR + "/Filters.xml"; loadFilter(fn); #if defined(Q_OS_MAC) { QDir resources = QDir(QCoreApplication::applicationDirPath()); resources.cdUp(); resources.cd("Resources"); fn = resources.absolutePath() + "/Filters.xml"; } #else fn = QString(SHAREDIR) + "/Filters.xml"; #endif loadFilter(fn); fn = ":/Filters.xml"; loadFilter(fn); } void MerkaartorPreferences::saveFilters() { QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("MerkaartorList"); theXmlDoc.appendChild(root); theFiltersList.toXml(root); QFile file(HOMEDIR + "/Filters.xml"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { return; } file.write(theXmlDoc.toString().toUtf8()); file.close(); } /* WMS Servers */ void MerkaartorPreferences::loadWMS(QString fn) { if (QDir::isRelativePath(fn)) fn = QCoreApplication::applicationDirPath() + "/" + fn; QFile file(fn); if (!file.open(QIODevice::ReadOnly)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 could not be opened.").arg(fn)); return; } QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(&file)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid XML file.").arg(fn)); file.close(); return; } file.close(); QDomElement docElem = theXmlDoc->documentElement(); WmsServersList aWmsList = WmsServersList::fromXml(docElem.firstChildElement()); theWmsServerList.add(aWmsList); delete theXmlDoc; } void MerkaartorPreferences::loadWMSes() { QString fn; fn = HOMEDIR + "/WmsServersList.xml"; loadWMS(fn); fn = QString(SHAREDIR) + "/WmsServersList.xml"; loadWMS(fn); fn = ":/WmsServersList.xml"; loadWMS(fn); } void MerkaartorPreferences::saveWMSes() { QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("MerkaartorList"); theXmlDoc.appendChild(root); theWmsServerList.toXml(root); QFile file(HOMEDIR + "/WmsServersList.xml"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { //QMessageBox::critical(this, tr("Unable to open save projections file"), tr("%1 could not be opened for writing.").arg(HOMEDIR + "/Projections.xml")); return; } file.write(theXmlDoc.toString().toUtf8()); file.close(); } /* TMS Servers */ void MerkaartorPreferences::loadTMS(QString fn) { if (QDir::isRelativePath(fn)) fn = QCoreApplication::applicationDirPath() + "/" + fn; QFile file(fn); if (!file.open(QIODevice::ReadOnly)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 could not be opened.").arg(fn)); return; } QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(&file)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid XML file.").arg(fn)); file.close(); return; } file.close(); QDomElement docElem = theXmlDoc->documentElement(); TmsServersList aTmsList = TmsServersList::fromXml(docElem.firstChildElement()); theTmsServerList.add(aTmsList); delete theXmlDoc; } void MerkaartorPreferences::loadTMSes() { QString fn; fn = HOMEDIR + "/TmsServersList.xml"; loadTMS(fn); fn = QString(SHAREDIR) + "/TmsServersList.xml"; loadTMS(fn); fn = ":/TmsServersList.xml"; loadTMS(fn); } void MerkaartorPreferences::saveTMSes() { QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("MerkaartorList"); theXmlDoc.appendChild(root); theTmsServerList.toXml(root); QFile file(HOMEDIR + "/TmsServersList.xml"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { //QMessageBox::critical(this, tr("Unable to open save projections file"), tr("%1 could not be opened for writing.").arg(HOMEDIR + "/Projections.xml")); return; } file.write(theXmlDoc.toString().toUtf8()); file.close(); } /* Bookmarks */ void MerkaartorPreferences::loadBookmark(QString fn) { if (QDir::isRelativePath(fn)) fn = QCoreApplication::applicationDirPath() + "/" + fn; QFile file(fn); if (!file.open(QIODevice::ReadOnly)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 could not be opened.").arg(fn)); return; } QDomDocument* theXmlDoc = new QDomDocument(); if (!theXmlDoc->setContent(&file)) { // QMessageBox::critical(this, tr("Invalid file"), tr("%1 is not a valid XML file.").arg(fn)); file.close(); return; } file.close(); QDomElement docElem = theXmlDoc->documentElement(); BookmarksList aBkList = BookmarksList::fromXml(docElem.firstChildElement()); theBookmarkList.add(aBkList); delete theXmlDoc; } void MerkaartorPreferences::loadBookmarks() { QString fn; fn = HOMEDIR + "/BookmarksList.xml"; loadBookmark(fn); fn = QString(SHAREDIR) + "/BookmarksList.xml"; loadBookmark(fn); fn = ":/BookmarksList.xml"; loadBookmark(fn); } void MerkaartorPreferences::saveBookmarks() { QDomDocument theXmlDoc; theXmlDoc.appendChild(theXmlDoc.createProcessingInstruction("xml", "version=\"1.0\"")); QDomElement root = theXmlDoc.createElement("MerkaartorList"); theXmlDoc.appendChild(root); theBookmarkList.toXml(root); QFile file(HOMEDIR + "/BookmarksList.xml"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { //QMessageBox::critical(this, tr("Unable to open save bookmarks file"), tr("%1 could not be opened for writing.").arg(HOMEDIR + "/BookmarksList.xml")); return; } file.write(theXmlDoc.toString().toUtf8()); file.close(); } /* OSM Servers */ void MerkaartorPreferences::loadOsmServers() { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { int size = Sets->beginReadArray("OsmServers"); for (int i = 0; i < size; ++i) { Sets->setArrayIndex(i); OsmServer server; server.Selected = Sets->value("selected").toBool(); server.Url = Sets->value("url").toString(); server.User = Sets->value("user").toString(); server.Password = Sets->value("password").toString(); theOsmServers.append(server); } Sets->endArray(); } } void MerkaartorPreferences::saveOsmServers() { if (!g_Merk_Ignore_Preferences) { Sets->beginWriteArray("OsmServers"); for (int i = 0; i < theOsmServers.size(); ++i) { Sets->setArrayIndex(i); Sets->setValue("selected", theOsmServers.at(i).Selected); Sets->setValue("url", theOsmServers.at(i).Url); Sets->setValue("user", theOsmServers.at(i).User); Sets->setValue("password", theOsmServers.at(i).Password); } Sets->endArray(); } } /* */ QString getDefaultLanguage(bool returnDefault) { if (!g_Merk_Ignore_Preferences && !g_Merk_Reset_Preferences) { QSettings* Sets; if (!g_Merk_Portable) { Sets = new QSettings(); } else { Sets = new QSettings(qApp->applicationDirPath() + "/merkaartor.ini", QSettings::IniFormat); } QString lang = Sets->value("locale/language").toString(); delete Sets; if (lang == "") if (returnDefault) lang = QLocale::system().name().split("_")[0]; return lang; } else { if (returnDefault) return QLocale::system().name().split("_")[0]; else return ""; } } void setDefaultLanguage(const QString& theValue) { if (!g_Merk_Ignore_Preferences) { QSettings* Sets; if (!g_Merk_Portable) { Sets = new QSettings(); } else { Sets = new QSettings(qApp->applicationDirPath() + "/merkaartor.ini", QSettings::IniFormat); } Sets->setValue("locale/language", theValue); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/MerkaartorPreferences.h�������������������������������������������0000664�0000000�0000000�00000032432�11770671653�0023463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: MerkaartorPreferences // // Description: // // // Author: cbro <cbro@semperpax.com>, bvh, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef MERKAARTORPREFERENCES_H #define MERKAARTORPREFERENCES_H #include <QtCore> #include <QtCore/QSettings> #include <QColor> #include <QHttp> #include <QBuffer> #include <QUuid> #include <QNetworkProxy> #ifdef USE_LIBPROXY #include <proxy.h> #endif #include "Coord.h" #include "WmsServersList.h" #include "TmsServersList.h" #include "ProjectionsList.h" #include "BookmarksList.h" #include "FilterList.h" #include "IRenderer.h" class MainWindow; class MapView; class IMapAdapterFactory; class IPaintStyle; #ifdef Q_WS_X11 #define PLATFORM "X11" #else #ifdef Q_WS_WIN #define PLATFORM "Windows" #else #ifdef Q_WS_MACX #define PLATFORM "Macintosh" #else #define PLATFORM "Other" #endif #endif #endif #define USER_AGENT (QString("%1/%2%3 (%4;%5)").arg(qApp->applicationName()).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION)).arg(PLATFORM).arg(STRINGIFY(SVNREV))) #define WORLD_COORDBOX CoordBox(Coord(-COORD_MAX*.80, COORD_MAX*.80/2), Coord(COORD_MAX*.80, -COORD_MAX*.80/2)) #define BUILTIN_STYLES_DIR ":/Styles" #define BUILTIN_TEMPLATES_DIR ":/Templates" #define M_PREFS MerkaartorPreferences::instance() #define M_STYLE MerkaartorPreferences::styleinstance() #ifdef Q_WS_MACX // Follow conventions on Mac OS X #define HOMEDIR (g_Merk_Portable ? qApp->applicationDirPath() : QDir::homePath() + "/Library/Merkaartor") #else #define HOMEDIR (g_Merk_Portable ? qApp->applicationDirPath() : QDir::homePath() + "/.merkaartor") #endif #define SHAREDIR (g_Merk_Portable ? qApp->applicationDirPath() : STRINGIFY(SHARE_DIR)) #define TEMPLATE_DOCUMENT (HOMEDIR + "/Startup.mdc") #define M_PARAM_DECLARE_BOOL(Param) \ private: \ bool m_##Param; \ public: \ void set##Param(bool theValue); \ bool get##Param(); #define M_PARAM_DECLARE_STRING(Param) \ private: \ QString m_##Param; \ public: \ void set##Param(const QString& theValue); \ QString get##Param(); #define M_PARAM_DECLARE_STRINGList(Param) \ private: \ QStringList m_##Param; \ public: \ void set##Param(const QStringList& theValue); \ QStringList& get##Param(); #define M_PARAM_DECLARE_INT(Param) \ private: \ int m_##Param; \ public: \ void set##Param(int theValue); \ int get##Param(); #define M_PARAM_DECLARE_INT_DELAYED(Param) \ private: \ int m_##Param; \ public: \ void set##Param(int theValue); \ void save##Param(); \ int get##Param(); #define M_PARAM_DECLARE_DOUBLE(Param) \ private: \ qreal m_##Param; \ public: \ void set##Param(qreal theValue); \ qreal get##Param(); #define M_PARAM_DECLARE_COLOR(Param) \ private: \ QColor m_##Param; \ public: \ void set##Param(const QColor& theValue); \ QColor get##Param(); #define SAFE_DELETE(x) {delete (x); x = NULL;} #define STRINGIFY(x) XSTRINGIFY(x) #define XSTRINGIFY(x) #x /** @author cbro <cbro@semperpax.com> */ typedef QString FilterType; enum ExportType { Export_All, Export_Viewport, Export_Selected }; #define TOOL_FIELD_SIZE 2 class Tool { public: Tool(); Tool(QString Name, QString Path); public: QString ToolName; QString ToolPath; }; typedef QMap<QString, Tool> ToolList; typedef QMapIterator<QString, Tool> ToolListIterator; struct OsmServer { bool Selected; QString Url; QString User; QString Password; }; typedef QList<OsmServer> OsmServerList; typedef QListIterator<OsmServer> OsmServerIterator; // Outside of merkaartorpreferences, because initializing it will need translations // Classic chicken & egg problem. QString getDefaultLanguage(bool returnDefault=true); void setDefaultLanguage(const QString& L); class MerkaartorPreferences : public QObject { Q_OBJECT public: static MerkaartorPreferences* instance(); static IPaintStyle* styleinstance(); MerkaartorPreferences(); ~MerkaartorPreferences(); QSettings* getQSettings() const { return Sets; } void save(bool UserPwdChanged = false); void toOsmPref(); void fromOsmPref(); void putOsmPref(const QString& k, const QString& v); void deleteOsmPref(const QString& k); const QVector<qreal> getParentDashes() const; //bool use06Api() const; void setUse06Api(bool b); const QString apiVersion() const; qreal apiVersionNum() const; M_PARAM_DECLARE_BOOL(rightsidedriving); M_PARAM_DECLARE_DOUBLE(doubleroaddistance); M_PARAM_DECLARE_STRING(workingdir); void setBgVisible(bool theValue); bool getBgVisible() const; /* Tile Cache */ M_PARAM_DECLARE_STRING(CacheDir); M_PARAM_DECLARE_INT(CacheSize); /* Search */ M_PARAM_DECLARE_INT(LastMaxSearchResults); M_PARAM_DECLARE_STRING(LastSearchName); M_PARAM_DECLARE_STRING(LastSearchKey); M_PARAM_DECLARE_STRING(LastSearchValue); M_PARAM_DECLARE_STRING(LastSearchTagSelector); /* Visual */ QStringList getAlphaList() const; void setAlphaList(); qreal getAlpha(QString lvl); QHash<QString, qreal>* getAlphaPtr(); M_PARAM_DECLARE_INT(HoverWidth); M_PARAM_DECLARE_INT(HighlightWidth); M_PARAM_DECLARE_INT(DirtyWidth); M_PARAM_DECLARE_INT(FocusWidth); M_PARAM_DECLARE_INT(RelationsWidth); M_PARAM_DECLARE_INT(GpxTrackWidth); M_PARAM_DECLARE_COLOR(BgColor) M_PARAM_DECLARE_COLOR(WaterColor) M_PARAM_DECLARE_COLOR(FocusColor); M_PARAM_DECLARE_COLOR(HoverColor); M_PARAM_DECLARE_COLOR(HighlightColor); M_PARAM_DECLARE_COLOR(DirtyColor); M_PARAM_DECLARE_COLOR(RelationsColor); M_PARAM_DECLARE_COLOR(GpxTrackColor); M_PARAM_DECLARE_INT(DirectionalArrowsVisible); RendererOptions getRenderOptions(); M_PARAM_DECLARE_INT_DELAYED(TagListFirstColumnWidth) /* MainWindow state */ void saveMainWindowState(const class MainWindow * mainWindow); void restoreMainWindowState(class MainWindow * mainWindow) const; void setInitialPosition(MapView* vw); void initialPosition(MapView* vw); bool getDrawTileBoundary(); M_PARAM_DECLARE_BOOL(HideToolbarLabels) /* Data */ void setOsmWebsite(const QString & theValue); QString getOsmWebsite() const; QString getOsmApiUrl() const; M_PARAM_DECLARE_STRING(XapiUrl) M_PARAM_DECLARE_STRING(NominatimUrl) M_PARAM_DECLARE_BOOL(AutoHistoryCleanup) void setOsmUser(const QString & theValue); QString getOsmUser() const; void setOsmPassword(const QString & theValue); QString getOsmPassword() const; M_PARAM_DECLARE_DOUBLE(MaxDistNodes) M_PARAM_DECLARE_BOOL(AutoSaveDoc) M_PARAM_DECLARE_BOOL(AutoExtractTracks) /* Export Type */ void setExportType(ExportType theValue); ExportType getExportType() const; /* Tools */ ToolList* getTools() const; Tool getTool(QString toolName) const; QStringList getShortcuts() const; void setShortcuts(const QStringList & theValue); M_PARAM_DECLARE_INT(PolygonSides) /* Recent */ void setRecentOpen(const QStringList & theValue); QStringList getRecentOpen() const; void addRecentOpen(const QString & theValue); void setRecentImport(const QStringList & theValue); QStringList getRecentImport() const; void addRecentImport(const QString & theValue); /* Rendering */ M_PARAM_DECLARE_BOOL(UseAntiAlias) M_PARAM_DECLARE_BOOL(AntiAliasWhilePanning) M_PARAM_DECLARE_BOOL(UseStyledWireframe) M_PARAM_DECLARE_STRING(DefaultStyle) M_PARAM_DECLARE_STRING(CustomStyle) M_PARAM_DECLARE_BOOL(DisableStyleForTracks) M_PARAM_DECLARE_STRINGList(TechnicalTags) M_PARAM_DECLARE_INT(EditRendering) /* Visual */ M_PARAM_DECLARE_INT(ZoomIn) M_PARAM_DECLARE_INT(ZoomOut) M_PARAM_DECLARE_BOOL(ZoomBoris) M_PARAM_DECLARE_BOOL(BackgroundOverwriteStyle) M_PARAM_DECLARE_INT(AreaOpacity) M_PARAM_DECLARE_BOOL(UseShapefileForBackground) M_PARAM_DECLARE_BOOL(DrawingHack) M_PARAM_DECLARE_BOOL(SimpleGpxTrack) M_PARAM_DECLARE_BOOL(VirtualNodesVisible) M_PARAM_DECLARE_BOOL(UseVirtualNodes) M_PARAM_DECLARE_BOOL(RelationsSelectableWhenHidden) M_PARAM_DECLARE_DOUBLE(LocalZoom) M_PARAM_DECLARE_DOUBLE(RegionalZoom) M_PARAM_DECLARE_INT(NodeSize) M_PARAM_DECLARE_BOOL(DownloadedVisible) M_PARAM_DECLARE_BOOL(ScaleVisible) M_PARAM_DECLARE_BOOL(LatLonGridVisible) M_PARAM_DECLARE_BOOL(BackgroundVisible) M_PARAM_DECLARE_BOOL(ForegroundVisible) M_PARAM_DECLARE_BOOL(TouchupVisible) M_PARAM_DECLARE_BOOL(NamesVisible) M_PARAM_DECLARE_BOOL(TrackPointsVisible) M_PARAM_DECLARE_BOOL(TrackSegmentsVisible) M_PARAM_DECLARE_BOOL(RelationsVisible) M_PARAM_DECLARE_BOOL(PhotosVisible) M_PARAM_DECLARE_BOOL(DirtyVisible) M_PARAM_DECLARE_BOOL(WireframeView) /* Templates */ M_PARAM_DECLARE_STRING(DefaultTemplate) M_PARAM_DECLARE_STRING(CustomTemplate) /* GPS */ M_PARAM_DECLARE_BOOL(GpsUseGpsd) M_PARAM_DECLARE_STRING(GpsPort) M_PARAM_DECLARE_STRING(GpsdHost) M_PARAM_DECLARE_INT(GpsdPort) M_PARAM_DECLARE_BOOL(GpsSaveLog) M_PARAM_DECLARE_BOOL(GpsMapCenter) M_PARAM_DECLARE_STRING(GpsLogDir) M_PARAM_DECLARE_BOOL(GpsSyncTime) M_PARAM_DECLARE_BOOL(ResolveRelations) M_PARAM_DECLARE_BOOL(DeleteIncompleteRelations) M_PARAM_DECLARE_BOOL(TranslateTags) M_PARAM_DECLARE_BOOL(MapTooltip) M_PARAM_DECLARE_BOOL(InfoOnHover) M_PARAM_DECLARE_BOOL(ShowParents) /* Background */ M_PARAM_DECLARE_BOOL(AutoSourceTag) /* Mouse bevaviour */ M_PARAM_DECLARE_BOOL(MouseSingleButton) M_PARAM_DECLARE_BOOL(SeparateMoveMode) M_PARAM_DECLARE_BOOL(SelectModeCreation) // Geotag M_PARAM_DECLARE_INT(MaxGeoPicWidth) /* Custom Style */ M_PARAM_DECLARE_BOOL(MerkaartorStyle) M_PARAM_DECLARE_STRING(MerkaartorStyleString) /* Network */ M_PARAM_DECLARE_BOOL(OfflineMode) M_PARAM_DECLARE_BOOL(LocalServer) M_PARAM_DECLARE_INT(NetworkTimeout) /* Proxy */ QNetworkProxy getProxy(const QUrl & requestUrl); M_PARAM_DECLARE_BOOL(ProxyUse) M_PARAM_DECLARE_STRING(ProxyHost) M_PARAM_DECLARE_INT(ProxyPort) M_PARAM_DECLARE_STRING(ProxyUser) M_PARAM_DECLARE_STRING(ProxyPassword) /* Track */ M_PARAM_DECLARE_BOOL(ReadonlyTracksDefault) /* Data */ M_PARAM_DECLARE_STRING(OpenStreetBugsUrl) M_PARAM_DECLARE_STRING(MapdustUrl) M_PARAM_DECLARE_BOOL(GdalConfirmProjection) M_PARAM_DECLARE_BOOL(HasAutoLoadDocument) M_PARAM_DECLARE_STRING(AutoLoadDocumentFilename) /* FeaturesDock */ M_PARAM_DECLARE_BOOL(FeaturesWithin) /* Plugins */ void addBackgroundPlugin(IMapAdapterFactory* aPlugin); void setBackgroundPlugin(const QUuid& theValue); QUuid getBackgroundPlugin() const; IMapAdapterFactory* getBackgroundPlugin(const QUuid& anAdapterUid); QMap<QUuid, IMapAdapterFactory *> getBackgroundPlugins(); /* Projections */ void loadProjection(QString fn); void loadProjections(); void saveProjections(); #ifndef _MOBILE void setProjectionType(QString theValue); QString getProjectionType(); ProjectionsList* getProjectionsList(); ProjectionItem getProjection(QString aProj); #endif /* Filters */ void loadFilter(QString fn); void loadFilters(); void saveFilters(); void setCurrentFilter(FilterType theValue); FilterType getCurrentFilter(); FiltersList* getFiltersList(); FilterItem getFilter(QString aFilter); /* WMSes */ void loadWMS(QString fn); void loadWMSes(); void saveWMSes(); /* TMSes */ void loadTMS(QString fn); void loadTMSes(); void saveTMSes(); /* Bookmarks */ void loadBookmark(QString fn); void loadBookmarks(); void saveBookmarks(); /* Servers */ void loadOsmServers(); void saveOsmServers(); BookmarkList* getBookmarks(); WmsServerList* getWmsServers(); TmsServerList* getTmsServers(); OsmServerList* getOsmServers(); M_PARAM_DECLARE_STRING(SelectedServer); protected: QVector<qreal> parentDashes; bool Use06Api; QString version; bool RightSideDriving; qreal DoubleRoadDistance; QString WorkingDir; QString OsmWebsite; QString OsmUser; QString OsmPassword; QHttp httpRequest; int OsmPrefLoadId; int OsmPrefSaveId; int OsmPrefDeleteId; QBuffer OsmPrefContent; QMap<QString, int> OsmPrefListsCount; void setWmsServers(); void setTmsServers(); void setTools(); void initialize(); private: QHash<QString, qreal> alpha; ToolList* theToolList; QSettings * Sets; QStringList projTypes; QMap<QUuid, IMapAdapterFactory *> mBackgroundPlugins; ProjectionsList theProjectionsList; FiltersList theFiltersList; WmsServersList theWmsServerList; TmsServersList theTmsServerList; BookmarksList theBookmarkList; OsmServerList theOsmServers; #ifdef USE_LIBPROXY pxProxyFactory *proxyFactory; QHash<QString,QNetworkProxy::ProxyType> proxyTypeMap; #endif static MerkaartorPreferences* m_prefInstance; static IPaintStyle* m_EPSInstance; private slots: void on_responseHeaderReceived(const QHttpResponseHeader & hdr); void on_requestFinished ( int id, bool error ); signals: void bookmarkChanged(); }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/OsmServerWidget.ui������������������������������������������������0000664�0000000�0000000�00000005741�11770671653�0022454�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>OsmServerWidget</class> <widget class="QWidget" name="OsmServerWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>552</width> <height>69</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="margin"> <number>0</number> </property> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QRadioButton" name="rbOsmServerSelected"> <property name="text"> <string>URL:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edOsmServerUrl"/> </item> <item> <widget class="QToolButton" name="tbOsmServerAdd"> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/list-add.png</normaloff>:/Icons/actions/list-add.png</iconset> </property> </widget> </item> <item> <widget class="QToolButton" name="tbOsmServerDel"> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/list-remove.png</normaloff>:/Icons/actions/list-remove.png</iconset> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,5,1,3"> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>57</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_14"> <property name="text"> <string>User:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edOsmServerUser"/> </item> <item> <widget class="QLabel" name="label_13"> <property name="text"> <string>Pwd:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edOsmServerPwd"> <property name="echoMode"> <enum>QLineEdit::Password</enum> </property> </widget> </item> </layout> </item> </layout> <zorder>rbOsmServerSelected</zorder> <zorder>edOsmServerUrl</zorder> <zorder>label_14</zorder> <zorder>edOsmServerUser</zorder> <zorder>label_13</zorder> <zorder>edOsmServerPwd</zorder> <zorder>tbOsmServerAdd</zorder> <zorder>tbOsmServerDel</zorder> <zorder>label_14</zorder> </widget> <resources> <include location="../../Icons/AllIcons.qrc"/> </resources> <connections/> </ui> �������������������������������merkaartor-0.18.1/src/Preferences/Preferences.pri���������������������������������������������������0000664�0000000�0000000�00000001772�11770671653�0022001�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Preferences DEPENDPATH += $$MERKAARTOR_SRC_DIR/Preferences contains(LIBPROXY, 1) { DEFINES += USE_LIBPROXY LIBS += -lproxy } HEADERS += MerkaartorPreferences.h \ PreferencesDialog.h \ WMSPreferencesDialog.h \ TMSPreferencesDialog.h \ ProjectionsList.h \ FilterList.h \ WmsServersList.h \ TmsServersList.h \ BookmarksList.h \ FilterPreferencesDialog.h SOURCES += MerkaartorPreferences.cpp \ PreferencesDialog.cpp \ WMSPreferencesDialog.cpp \ TMSPreferencesDialog.cpp \ ProjectionsList.cpp \ FilterList.cpp \ WmsServersList.cpp \ TmsServersList.cpp \ BookmarksList.cpp \ FilterPreferencesDialog.cpp FORMS += PreferencesDialog.ui \ WMSPreferencesDialog.ui \ TMSPreferencesDialog.ui \ FilterPreferencesDialog.ui \ OsmServerWidget.ui isEmpty(MOBILE) { HEADERS += \ ProjPreferencesDialog.h SOURCES += \ ProjPreferencesDialog.cpp FORMS += \ ProjPreferencesDialog.ui } ������merkaartor-0.18.1/src/Preferences/PreferencesDialog.cpp���������������������������������������������0000664�0000000�0000000�00000057734�11770671653�0023122�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: PreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, Bart Vanhauwaert (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "PreferencesDialog.h" #include "MasPaintStyle.h" #include "MainWindow.h" #include "Document.h" #include "Feature.h" #include "PropertiesDock.h" #include <QFileDialog> #include <QColorDialog> #include <QMessageBox> #include <QPainter> #include <QStyleFactory> #include <QNetworkProxy> static void makeBoundaryIcon(QToolButton* bt, QColor C) { QPixmap pm(36, 18); pm.fill(QColor(255, 255, 255)); QPainter p(&pm); p.setPen(C); p.setBrush(C); p.drawRect(0, 6, 36, 6); bt->setIcon(pm); } OsmServerWidget::OsmServerWidget(QWidget * parent, Qt::WindowFlags f) : QWidget(parent, f) { setupUi(this); setAttribute(Qt::WA_DeleteOnClose); } void OsmServerWidget::on_tbOsmServerAdd_clicked() { QLayout* lay = parentWidget()->layout(); if (!lay) return; OsmServerWidget* w = new OsmServerWidget(parentWidget()); lay->addWidget(w); for (int i=0; i<lay->count(); ++i) { OsmServerWidget* w = dynamic_cast<OsmServerWidget*>(lay->itemAt(i)->widget()); if (w) w->tbOsmServerDel->setEnabled(true); } } void OsmServerWidget::on_tbOsmServerDel_clicked() { QLayout* lay = parentWidget()->layout(); if (!lay) return; if (rbOsmServerSelected->isChecked()) { OsmServerWidget* w = dynamic_cast<OsmServerWidget*>(lay->itemAt(0)->widget()); if (w) w->rbOsmServerSelected->setChecked(true); } if (lay->count() > 2) close(); else if (lay->count() == 2 ) { for (int i=0; i<lay->count(); ++i) { OsmServerWidget* w = dynamic_cast<OsmServerWidget*>(lay->itemAt(i)->widget()); if (w) w->tbOsmServerDel->setEnabled(false); close(); } } } void OsmServerWidget::on_rbOsmServerSelected_clicked() { QLayout* lay = parentWidget()->layout(); if (!lay) return; for (int i=0; i<lay->count(); ++i) { OsmServerWidget* w = dynamic_cast<OsmServerWidget*>(lay->itemAt(i)->widget()); if (w) w->rbOsmServerSelected->setChecked(false); } rbOsmServerSelected->setChecked(true); } PreferencesDialog::PreferencesDialog(QWidget* parent) : QDialog(parent) { #ifdef _MOBILE setWindowState(Qt::WindowFullScreen); #endif setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); QDir intTemplates(BUILTIN_TEMPLATES_DIR); for (int i=0; i < intTemplates.entryList().size(); ++i) { cbTemplates->addItem(intTemplates.entryList().at(i)); } resize(1,1); QApplication::processEvents(); loadPrefs(); } void PreferencesDialog::updateStyles() { cbStyles->clear(); QDir intStyles(BUILTIN_STYLES_DIR); for (int i=0; i < intStyles.entryList().size(); ++i) { cbStyles->addItem(intStyles.entryList().at(i) + " (int)", QVariant(intStyles.entryInfoList().at(i).absoluteFilePath())); } if (!CustomStylesDir->text().isEmpty()) { QDir customStyles(CustomStylesDir->text(), "*.mas"); for (int i=0; i < customStyles.entryList().size(); ++i) { cbStyles->addItem(customStyles.entryList().at(i), QVariant(customStyles.entryInfoList().at(i).absoluteFilePath())); } } int idx = cbStyles->findData(M_PREFS->getDefaultStyle()); if (idx == -1) idx = 0; cbStyles->setCurrentIndex(idx); } PreferencesDialog::~PreferencesDialog() { } void PreferencesDialog::on_buttonBox_clicked(QAbstractButton * button) { if (button == buttonBox->button(QDialogButtonBox::Apply)) { savePrefs(); emit(preferencesChanged(this)); } else if (button == buttonBox->button(QDialogButtonBox::Ok)) { savePrefs(); emit(preferencesChanged(this)); this->accept(); } } void PreferencesDialog::initLanguages(QComboBox* aBox) { aBox->addItem(tr("English"),"-"); aBox->addItem(tr("Arabic"),"ar"); aBox->addItem(tr("Croatian"),"hr"); aBox->addItem(tr("Czech"),"cs"); aBox->addItem(tr("Dutch"),"nl"); aBox->addItem(tr("German"),"de"); aBox->addItem(tr("French"),"fr"); aBox->addItem(tr("Hungarian"),"hu"); aBox->addItem(tr("Italian"),"it"); aBox->addItem(tr("Japanese"),"ja"); aBox->addItem(tr("Polish"),"pl"); aBox->addItem(tr("Portuguese"),"pt"); aBox->addItem(tr("Brazilian Portuguese"),"pt_BR"); aBox->addItem(tr("Russian"),"ru"); aBox->addItem(tr("Slovak"),"sk"); aBox->addItem(tr("Spanish"),"es"); aBox->addItem(tr("Swedish"),"sv"); aBox->addItem(tr("Ukrainian"),"uk"); } void PreferencesDialog::loadPrefs() { initLanguages(Language); QString CurrentLanguage(getDefaultLanguage(false)); int l; for (l = 0; l < Language->count(); ++l) if (CurrentLanguage == Language->itemData(l)) break; SelectLanguage->setChecked(l < Language->count()); Language->setEnabled(l < Language->count()); if (l < Language->count()) Language->setCurrentIndex(l); TranslateTags->setChecked(M_PREFS->getTranslateTags()); OsmServerList* theOsmServers = M_PREFS->getOsmServers(); if (!theOsmServers->size()) { OsmServerWidget* wOSmServer = new OsmServerWidget(grpOSM); wOSmServer->edOsmServerUrl->setText(M_PREFS->getOsmApiUrl()); wOSmServer->edOsmServerUser->setText(M_PREFS->getOsmUser()); wOSmServer->edOsmServerPwd->setText(M_PREFS->getOsmPassword()); wOSmServer->rbOsmServerSelected->setChecked(true); wOSmServer->tbOsmServerDel->setEnabled(false); OsmServersLayout->addWidget(wOSmServer); } else { foreach(OsmServer srv, *theOsmServers) { OsmServerWidget* wOSmServer = new OsmServerWidget(grpOSM); wOSmServer->edOsmServerUrl->setText(srv.Url); wOSmServer->edOsmServerUser->setText(srv.User); wOSmServer->edOsmServerPwd->setText(srv.Password); wOSmServer->rbOsmServerSelected->setChecked(srv.Selected); OsmServersLayout->addWidget(wOSmServer); } } edXapiUrl->setText(M_PREFS->getXapiUrl()); edNominatimUrl->setText(M_PREFS->getNominatimUrl()); edGpsPort->setText(M_PREFS->getGpsPort()); edGpsdHost->setText(M_PREFS->getGpsdHost()); sbGpsdPort->setValue(M_PREFS->getGpsdPort()); if (M_PREFS->getGpsUseGpsd()) { rbGpsGpsd->setChecked(true); frGpsSerial->setEnabled(false); } else { rbGpsSerial->setChecked(true); frGpsGpsd->setEnabled(false); } cbGgpsSaveLog->setChecked(M_PREFS->getGpsSaveLog()); edGpsLogDir->setText(M_PREFS->getGpsLogDir()); cbGpsSyncTime->setChecked(M_PREFS->getGpsSyncTime()); sbMaxDistNodes->setValue(M_PREFS->getMaxDistNodes()); bbUseProxy->setChecked(M_PREFS->getProxyUse()); edProxyHost->setText(M_PREFS->getProxyHost()); edProxyPort->setText(QString().setNum(M_PREFS->getProxyPort())); edProxyUser->setText(M_PREFS->getProxyUser()); edProxyPassword->setText(M_PREFS->getProxyPassword()); cbLocalServer->setChecked(M_PREFS->getLocalServer()); sbNetworkTimeout->setValue(int(M_PREFS->getNetworkTimeout()/1000)); edCacheDir->setText(M_PREFS->getCacheDir()); sbCacheSize->setValue(M_PREFS->getCacheSize()); cbAntiAlias->setChecked(M_PREFS->getUseAntiAlias()); cbDisableAntialiasInPanning->setChecked(!M_PREFS->getAntiAliasWhilePanning()); cbDisableAntialiasInPanning->setEnabled(M_PREFS->getUseAntiAlias()); cbStyledWireframe->setChecked(M_PREFS->getUseStyledWireframe()); QString s = M_PREFS->getDefaultStyle(); QString cs = M_PREFS->getCustomStyle(); if (QFileInfo(cs).isFile()) cs = QFileInfo(cs).absolutePath(); CustomStylesDir->setText(cs); updateStyles(); rbQuickEdit->setChecked(M_PREFS->getEditRendering() == 0); rbWireframeEdit->setChecked(M_PREFS->getEditRendering() == 1); rbFullEdit->setChecked(M_PREFS->getEditRendering() == 2); cbDisableStyleForTracks->setChecked(M_PREFS->getDisableStyleForTracks()); QString t = M_PREFS->getDefaultTemplate(); QString ct = M_PREFS->getCustomTemplate(); CustomTemplateName->setText(ct); if (t.startsWith(BUILTIN_TEMPLATES_DIR)) { TemplateBuiltin->setChecked(true); cbTemplates->setEnabled(true); cbTemplates->setCurrentIndex(cbTemplates->findText(t.remove(QString(BUILTIN_TEMPLATES_DIR) + "/"))); } else { TemplateCustom->setChecked(true); CustomTemplateName->setEnabled(true); BrowseTemplate->setEnabled(true); } sbZoomInPerc->setValue(M_PREFS->getZoomIn()); sbZoomOutPerc->setValue(M_PREFS->getZoomOut()); sbAlphaLow->setValue(M_PREFS->getAlpha("Low")); sbAlphaHigh->setValue(M_PREFS->getAlpha("High")); BgColor = M_PREFS->getBgColor(); cbBackgroundOverwriteStyle->setChecked(M_PREFS->getBackgroundOverwriteStyle()); FocusColor = M_PREFS->getFocusColor(); HoverColor = M_PREFS->getHoverColor(); HighlightColor = M_PREFS->getHighlightColor(); DirtyColor = M_PREFS->getDirtyColor(); RelationsColor = M_PREFS->getRelationsColor(); GpxTrackColor = M_PREFS->getGpxTrackColor(); makeBoundaryIcon(btBgColor, BgColor); makeBoundaryIcon(btHoverColor, HoverColor); makeBoundaryIcon(btHighlightColor, HighlightColor); makeBoundaryIcon(btDirtyColor, DirtyColor); makeBoundaryIcon(btFocusColor, FocusColor); makeBoundaryIcon(btRelationsColor, RelationsColor); makeBoundaryIcon(btGpxTrackColor, GpxTrackColor); HoverWidth->setValue(M_PREFS->getHoverWidth()); HighlightWidth->setValue(M_PREFS->getHighlightWidth()); DirtyWidth->setValue(M_PREFS->getDirtyWidth()); FocusWidth->setValue(M_PREFS->getFocusWidth()); RelationsWidth->setValue(M_PREFS->getRelationsWidth()); GpxTrackWidth->setValue(M_PREFS->getGpxTrackWidth()); cbSimpleGpxTrack->setChecked(M_PREFS->getSimpleGpxTrack()); cbAutoLoadDoc->setChecked(M_PREFS->getHasAutoLoadDocument()); edAutoLoadDoc->setText(M_PREFS->getAutoLoadDocumentFilename()); edAutoLoadDoc->setEnabled(cbAutoLoadDoc->isChecked()); cbAutoSaveDoc->setChecked(M_PREFS->getAutoSaveDoc()); cbAutoExtractTracks->setChecked(M_PREFS->getAutoExtractTracks()); cbReadonlyTracksDefault->setChecked(M_PREFS->getReadonlyTracksDefault()); cbGdalConfirmProjection->setChecked(M_PREFS->getGdalConfirmProjection()); ToolList* tl = M_PREFS->getTools(); ToolListIterator i(*tl); while (i.hasNext()) { i.next(); Tool t(i.value().ToolName, i.value().ToolPath); theTools.push_back(t); lvTools->addItem(t.ToolName); } cbMouseSingleButton->setChecked(M_PREFS->getMouseSingleButton()); cbSeparateMoveMode->setChecked(M_PREFS->getSeparateMoveMode()); cbSelectModeCreation->setChecked(M_PREFS->getSelectModeCreation()); cbVirtualNodes->setChecked(M_PREFS->getUseVirtualNodes()); cbRelationsHiddenSelectable->setChecked(M_PREFS->getRelationsSelectableWhenHidden()); cbCustomStyle->setChecked(M_PREFS->getMerkaartorStyle()); comboCustomStyle->addItems(QStyleFactory::keys()); comboCustomStyle->setCurrentIndex(comboCustomStyle->findText(M_PREFS->getMerkaartorStyleString())); cbAutoSourceTag->setChecked(M_PREFS->getAutoSourceTag()); } void PreferencesDialog::savePrefs() { if (SelectLanguage->isChecked()) setDefaultLanguage(Language->itemData(Language->currentIndex()).toString()); else setDefaultLanguage(""); ((MainWindow*)parent())->updateLanguage(); retranslateUi(this); M_PREFS->setTranslateTags(TranslateTags->isChecked()); //M_PREFS->setUse06Api(bbUse06Api->isChecked()); bool OsmDataChanged = false; OsmServerList* theServerList = M_PREFS->getOsmServers(); theServerList->clear(); for (int i=0; i< OsmServersLayout->count(); ++i) { OsmServerWidget* wOsmServer = dynamic_cast<OsmServerWidget*>(OsmServersLayout->itemAt(i)->widget()); if (!wOsmServer) continue; OsmServer srv; srv.Url = wOsmServer->edOsmServerUrl->text(); srv.User = wOsmServer->edOsmServerUser->text(); srv.Password = wOsmServer->edOsmServerPwd->text(); srv.Selected = wOsmServer->rbOsmServerSelected->isChecked(); if (srv.Selected && (srv.Url != M_PREFS->getOsmApiUrl() || srv.User != M_PREFS->getOsmUser() || srv.Password != M_PREFS->getOsmPassword())) { M_PREFS->setOsmWebsite(srv.Url); M_PREFS->setOsmUser(srv.User); M_PREFS->setOsmPassword(srv.Password); OsmDataChanged = true; } theServerList->append(srv); } M_PREFS->setXapiUrl(edXapiUrl->text()); M_PREFS->setNominatimUrl(edNominatimUrl->text()); M_PREFS->setGpsPort(edGpsPort->text()); M_PREFS->setGpsdHost(edGpsdHost->text()); M_PREFS->setGpsdPort(sbGpsdPort->value()); if (rbGpsGpsd->isChecked()) M_PREFS->setGpsUseGpsd(true); else M_PREFS->setGpsUseGpsd(false); M_PREFS->setGpsSaveLog(cbGgpsSaveLog->isChecked()); M_PREFS->setGpsLogDir(edGpsLogDir->text()); M_PREFS->setGpsSyncTime(cbGpsSyncTime->isChecked()); M_PREFS->setMaxDistNodes(sbMaxDistNodes->value()); M_PREFS->setProxyUse(bbUseProxy->isChecked()); M_PREFS->setProxyHost(edProxyHost->text()); M_PREFS->setProxyPort(edProxyPort->text().toInt()); M_PREFS->setProxyUser(edProxyUser->text()); M_PREFS->setProxyPassword(edProxyPassword->text()); M_PREFS->setLocalServer(cbLocalServer->isChecked()); M_PREFS->setNetworkTimeout(sbNetworkTimeout->value()*1000); M_PREFS->setCacheDir(edCacheDir->text()); M_PREFS->setCacheSize(sbCacheSize->value()); M_PREFS->setUseAntiAlias(cbAntiAlias->isChecked()); M_PREFS->setAntiAliasWhilePanning(!cbDisableAntialiasInPanning->isChecked()); M_PREFS->setUseStyledWireframe(cbStyledWireframe->isChecked()); M_PREFS->setCustomStyle(CustomStylesDir->text()); if (rbQuickEdit->isChecked()) M_PREFS->setEditRendering(0); else if (rbWireframeEdit->isChecked()) M_PREFS->setEditRendering(1); else M_PREFS->setEditRendering(2); bool PainterToInvalidate = false; if (cbDisableStyleForTracks->isChecked() != M_PREFS->getDisableStyleForTracks()) { M_PREFS->setDisableStyleForTracks(cbDisableStyleForTracks->isChecked()); PainterToInvalidate = true; } if (cbSimpleGpxTrack->isChecked() != M_PREFS->getSimpleGpxTrack()) { M_PREFS->setSimpleGpxTrack(cbSimpleGpxTrack->isChecked()); PainterToInvalidate = true; } if (PainterToInvalidate) { for (FeatureIterator it(((MainWindow*)parent())->document()); !it.isEnd(); ++it) { it.get()->invalidatePainter(); } } QString NewTemplate; if (TemplateBuiltin->isChecked()) NewTemplate = QString(BUILTIN_TEMPLATES_DIR) + "/" + cbTemplates->currentText(); else NewTemplate = CustomTemplateName->text(); if (NewTemplate != M_PREFS->getDefaultTemplate()) { M_PREFS->setDefaultTemplate(NewTemplate); ((MainWindow*)parent())->properties()->loadTemplates(NewTemplate); } M_PREFS->setCustomStyle(CustomStylesDir->text()); M_PREFS->setCustomTemplate(CustomTemplateName->text()); M_PREFS->setZoomIn(sbZoomInPerc->text().toInt()); M_PREFS->setZoomOut(sbZoomOutPerc->text().toInt()); M_PREFS->getAlphaPtr()->insert("Low", sbAlphaLow->value()); M_PREFS->getAlphaPtr()->insert("High", sbAlphaHigh->value()); M_PREFS->setBgColor(BgColor); M_PREFS->setBackgroundOverwriteStyle(cbBackgroundOverwriteStyle->isChecked()); M_PREFS->setFocusColor(FocusColor); M_PREFS->setFocusWidth(FocusWidth->value()); M_PREFS->setHoverColor(HoverColor); M_PREFS->setHoverWidth(HoverWidth->value()); M_PREFS->setHighlightColor(HighlightColor); M_PREFS->setHighlightWidth(HighlightWidth->value()); M_PREFS->setDirtyColor(DirtyColor); M_PREFS->setDirtyWidth(DirtyWidth->value()); M_PREFS->setRelationsColor(RelationsColor); M_PREFS->setRelationsWidth(RelationsWidth->value()); M_PREFS->setGpxTrackColor(GpxTrackColor); M_PREFS->setGpxTrackWidth(GpxTrackWidth->value()); M_PREFS->setHasAutoLoadDocument(cbAutoLoadDoc->isChecked()); M_PREFS->setAutoLoadDocumentFilename((edAutoLoadDoc->text())); M_PREFS->setAutoSaveDoc(cbAutoSaveDoc->isChecked()); M_PREFS->setAutoExtractTracks(cbAutoExtractTracks->isChecked()); M_PREFS->setReadonlyTracksDefault(cbReadonlyTracksDefault->isChecked()); M_PREFS->setGdalConfirmProjection(cbGdalConfirmProjection->isChecked()); ToolList* tl = M_PREFS->getTools(); tl->clear(); for (int i = 0; i < theTools.size(); ++i) { Tool t(theTools[i]); tl->insert(theTools[i].ToolName, t); } M_PREFS->setMouseSingleButton(cbMouseSingleButton->isChecked()); M_PREFS->setSeparateMoveMode(cbSeparateMoveMode->isChecked()); M_PREFS->setSelectModeCreation(cbSelectModeCreation->isChecked()); M_PREFS->setUseVirtualNodes(cbVirtualNodes->isChecked()); M_PREFS->setRelationsSelectableWhenHidden(cbRelationsHiddenSelectable->isChecked()); M_PREFS->setMerkaartorStyle(cbCustomStyle->isChecked()); M_PREFS->setMerkaartorStyleString(comboCustomStyle->currentText()); M_PREFS->setAutoSourceTag(cbAutoSourceTag->isChecked()); M_PREFS->save(OsmDataChanged); } void PreferencesDialog::on_BrowseStyle_clicked() { QString s = QFileDialog::getExistingDirectory(this,tr("Custom styles directory"),""); if (!s.isNull()) CustomStylesDir->setText(QDir::toNativeSeparators(s)); updateStyles(); } void PreferencesDialog::on_BrowseTemplate_clicked() { QString s = QFileDialog::getOpenFileName(this,tr("Tag Template"),"",tr("Merkaartor tag template (*.mat)")); if (!s.isNull()) CustomTemplateName->setText(QDir::toNativeSeparators(s)); } void PreferencesDialog::on_btBgColor_clicked() { QColor rgb = QColorDialog::getColor(BgColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { BgColor = rgb; makeBoundaryIcon(btBgColor, BgColor); } } void PreferencesDialog::on_btFocusColor_clicked() { QColor rgb = QColorDialog::getColor(FocusColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { FocusColor = rgb; makeBoundaryIcon(btFocusColor, FocusColor); } } void PreferencesDialog::on_btHoverColor_clicked() { QColor rgb = QColorDialog::getColor(HoverColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { HoverColor = rgb; makeBoundaryIcon(btHoverColor, HoverColor); } } void PreferencesDialog::on_btHighlightColor_clicked() { QColor rgb = QColorDialog::getColor(HighlightColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { HighlightColor = rgb; makeBoundaryIcon(btHighlightColor, HighlightColor); } } void PreferencesDialog::on_btDirtyColor_clicked() { QColor rgb = QColorDialog::getColor(DirtyColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { DirtyColor = rgb; makeBoundaryIcon(btDirtyColor, DirtyColor); } } void PreferencesDialog::on_btRelationsColor_clicked() { QColor rgb = QColorDialog::getColor(RelationsColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { RelationsColor = rgb; makeBoundaryIcon(btRelationsColor, RelationsColor); } } void PreferencesDialog::on_btGpxTrackColor_clicked() { QColor rgb = QColorDialog::getColor(GpxTrackColor, this #if (QT_VERSION >= QT_VERSION_CHECK(4, 5, 0)) , tr("Select Color"), QColorDialog::ShowAlphaChannel #endif ); if (rgb.isValid()) { GpxTrackColor = rgb; makeBoundaryIcon(btGpxTrackColor, GpxTrackColor); } } /* Tools */ void PreferencesDialog::on_btAddTool_clicked(void) { for (int i=0; i<theTools.size(); ++i) { if (theTools[i].ToolName == edToolName->text()) { QMessageBox::critical(this, tr("Tool already exists"), tr("A tool of this name already exists.\nPlease select another name or click the <Apply> button if you want to modify the existing one"), QMessageBox::Ok); return; } } Tool t(edToolName->text(), edToolPath->text()); theTools.push_back(t); lvTools->addItem(t.ToolName); lvTools->setCurrentRow(theTools.size() - 1); on_lvTools_itemSelectionChanged(); } void PreferencesDialog::on_btDelTool_clicked(void) { int idx = static_cast<int>(lvTools->currentRow()); if (idx >= theTools.size()) return; if (theTools[idx].ToolName == "Inkscape") { QMessageBox::critical(this, tr("Cannot delete preset tool"), tr("Cannot delete preset tool \"%1\"").arg(theTools[idx].ToolName), QMessageBox::Ok); return; } theTools.erase(theTools.begin() + idx); delete lvTools->takeItem(idx); if (idx && (idx >= theTools.size())) --idx; lvTools->setCurrentRow(idx); on_lvTools_itemSelectionChanged(); } void PreferencesDialog::on_btApplyTool_clicked(void) { int idx = static_cast<int>(lvTools->currentRow()); if (idx >= theTools.size()) return; if ((theTools[idx].ToolName == "Inkscape") && edToolName->text() != theTools[idx].ToolName) { QMessageBox::critical(this, tr("Cannot modify preset tool name"), tr("Cannot modify preset tool \"%1\"'s name").arg(theTools[idx].ToolName), QMessageBox::Ok); return; } Tool& t(theTools[idx]); t.ToolName = edToolName->text(); t.ToolPath = edToolPath->text(); lvTools->item(lvTools->currentRow())->setText(edToolName->text()); } void PreferencesDialog::on_lvTools_itemSelectionChanged() { QListWidgetItem* it = lvTools->item(lvTools->currentRow()); int idx = static_cast<int>(lvTools->row(it)); if (idx >= theTools.size()) return; Tool& t(theTools[idx]); edToolName->setText(t.ToolName); edToolPath->setText(t.ToolPath); } void PreferencesDialog::on_btBrowse_clicked() { QString s = QFileDialog::getOpenFileName(this,tr("Select tool executable")); if (!s.isNull()) { edToolPath->setText(s); } } void PreferencesDialog::on_btAutoloadBrowse_clicked() { QString s = QFileDialog::getOpenFileName(this,tr("Select template document"), "", tr("Merkaartor document (*.mdc)")); if (!s.isNull()) { edAutoLoadDoc->setText(s); } } void PreferencesDialog::on_btGpsLogDirBrowse_clicked() { QString s = QFileDialog::getExistingDirectory(this,tr("Select Log directory")); if (!s.isNull()) { edGpsLogDir->setText(s); } } void PreferencesDialog::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) { retranslateUi(this); Language->clear(); initLanguages(Language); QString CurrentLanguage(getDefaultLanguage(false)); int l; for (l = 0; l < Language->count(); ++l) if (CurrentLanguage == Language->itemData(l)) break; SelectLanguage->setChecked(l < Language->count()); Language->setEnabled(l < Language->count()); if (l < Language->count()) Language->setCurrentIndex(l); } QDialog::changeEvent(event); } ������������������������������������merkaartor-0.18.1/src/Preferences/PreferencesDialog.h�����������������������������������������������0000664�0000000�0000000�00000004045�11770671653�0022552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: PreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef PREFERENCESDIALOG_H #define PREFERENCESDIALOG_H #include <QWidget> #include <QHttp> #include <QBuffer> #include <QListWidgetItem> #include "ui_PreferencesDialog.h" #include "ui_OsmServerWidget.h" #include "MerkaartorPreferences.h" /** @author cbro <cbro@semperpax.com> */ class OsmServerWidget : public QWidget, public Ui::OsmServerWidget { Q_OBJECT public: OsmServerWidget(QWidget * parent = 0, Qt::WindowFlags f = 0); public slots: void on_tbOsmServerAdd_clicked(); void on_tbOsmServerDel_clicked(); void on_rbOsmServerSelected_clicked(); }; class PreferencesDialog : public QDialog, public Ui::PreferencesDialog { Q_OBJECT public: PreferencesDialog(QWidget* parent = 0); ~PreferencesDialog(); public slots: void on_buttonBox_clicked(QAbstractButton * button); void on_BrowseStyle_clicked(); void on_BrowseTemplate_clicked(); void on_btBgColor_clicked(); void on_btFocusColor_clicked(); void on_btHoverColor_clicked(); void on_btHighlightColor_clicked(); void on_btDirtyColor_clicked(); void on_btRelationsColor_clicked(); void on_btGpxTrackColor_clicked(); /* GPS */ void on_btGpsLogDirBrowse_clicked(); /* Tools */ void on_btAddTool_clicked(void); void on_btDelTool_clicked(void); void on_btApplyTool_clicked(void); void on_lvTools_itemSelectionChanged(); void on_btBrowse_clicked(); /* Data */ void on_btAutoloadBrowse_clicked(); private: void updateStyles(); void loadPrefs(); void initLanguages(QComboBox*); void savePrefs(); void changeEvent(QEvent *); private: QList<Tool> theTools; QColor BgColor; QColor FocusColor; QColor HoverColor; QColor HighlightColor; QColor DirtyColor; QColor RelationsColor; QColor GpxTrackColor; signals: void preferencesChanged(PreferencesDialog* prefs); }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/PreferencesDialog.ui����������������������������������������������0000664�0000000�0000000�00000160777�11770671653�0022757�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <author>Chris Browet</author> <class>PreferencesDialog</class> <widget class="QDialog" name="PreferencesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>689</width> <height>487</height> </rect> </property> <property name="windowTitle"> <string>Preferences</string> </property> <layout class="QVBoxLayout" name="verticalLayout_6"> <item> <widget class="QTabWidget" name="tabPref"> <property name="tabPosition"> <enum>QTabWidget::North</enum> </property> <property name="currentIndex"> <number>3</number> </property> <widget class="QWidget" name="tab_4"> <attribute name="title"> <string>Visual</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <widget class="QGroupBox" name="grpGeneral"> <property name="title"> <string>General</string> </property> <layout class="QVBoxLayout"> <item> <layout class="QHBoxLayout"> <item> <widget class="QLabel" name="label_5"> <property name="text"> <string>Zoom Out/in (%)</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbZoomOutPerc"/> </item> <item> <widget class="QSpinBox" name="sbZoomInPerc"> <property name="minimum"> <number>100</number> </property> <property name="maximum"> <number>1000</number> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout"> <item> <widget class="QLabel" name="label_9"> <property name="text"> <string>Opacity low/high</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="sbAlphaLow"> <property name="maximum"> <double>1.000000000000000</double> </property> <property name="singleStep"> <double>0.100000000000000</double> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="sbAlphaHigh"> <property name="maximum"> <double>1.000000000000000</double> </property> <property name="singleStep"> <double>0.100000000000000</double> </property> </widget> </item> </layout> </item> <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <widget class="QCheckBox" name="cbMouseSingleButton"> <property name="text"> <string>Single mouse button interaction</string> </property> </widget> </item> <item row="3" column="0"> <widget class="QCheckBox" name="cbCustomStyle"> <property name="text"> <string>Use custom Qt style</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QCheckBox" name="cbSelectModeCreation"> <property name="text"> <string>Allow node/way creation in select mode</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QCheckBox" name="cbSeparateMoveMode"> <property name="text"> <string>Separate Move mode</string> </property> </widget> </item> <item row="2" column="0"> <widget class="QCheckBox" name="cbVirtualNodes"> <property name="text"> <string>Use Virtual nodes (new session required)</string> </property> </widget> </item> <item row="2" column="1"> <widget class="QCheckBox" name="cbRelationsHiddenSelectable"> <property name="text"> <string>Relations selectable while hidden</string> </property> </widget> </item> <item row="3" column="1"> <widget class="QComboBox" name="comboCustomStyle"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tab_3"> <attribute name="title"> <string>Colors</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_9"> <item> <widget class="QLabel" name="label_8"> <property name="text"> <string>Background</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QToolButton" name="btBgColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QCheckBox" name="cbBackgroundOverwriteStyle"> <property name="text"> <string>Overwrite style</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <widget class="QLabel" name="label_26"> <property name="text"> <string>GPX track</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_11"> <item> <widget class="QToolButton" name="btGpxTrackColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QSpinBox" name="GpxTrackWidth"/> </item> <item> <widget class="QLabel" name="label_27"> <property name="text"> <string>Pixels</string> </property> </widget> </item> <item> <widget class="QCheckBox" name="cbSimpleGpxTrack"> <property name="text"> <string>Use simple GPX track appearance</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_6"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <widget class="QGroupBox" name="groupBox_2"> <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="title"> <string>Interface</string> </property> <layout class="QGridLayout" name="formLayout"> <item row="3" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> <widget class="QToolButton" name="btFocusColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QSpinBox" name="FocusWidth"/> </item> <item> <widget class="QLabel" name="label_22"> <property name="text"> <string>Pixels</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_4"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item row="4" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_6"> <item> <widget class="QToolButton" name="btRelationsColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QSpinBox" name="RelationsWidth"/> </item> <item> <widget class="QLabel" name="label_23"> <property name="text"> <string>Pixels</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_5"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item row="0" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QToolButton" name="btHoverColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QSpinBox" name="HoverWidth"/> </item> <item> <widget class="QLabel" name="label_18"> <property name="text"> <string>Pixels</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_3"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item row="0" column="0"> <widget class="QLabel" name="label_19"> <property name="text"> <string>Hover</string> </property> </widget> </item> <item row="1" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_14"> <item> <widget class="QToolButton" name="btHighlightColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QSpinBox" name="HighlightWidth"/> </item> <item> <widget class="QLabel" name="label_118"> <property name="text"> <string>Pixels</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_113"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item row="4" column="0"> <widget class="QLabel" name="label_21"> <property name="text"> <string>Relations</string> </property> </widget> </item> <item row="3" column="0"> <widget class="QLabel" name="label_20"> <property name="text"> <string>Focus</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="label_119"> <property name="text"> <string>Highlight</string> </property> </widget> </item> <item row="2" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_13"> <item> <widget class="QToolButton" name="btDirtyColor"> <property name="minimumSize"> <size> <width>45</width> <height>25</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>40</width> <height>20</height> </size> </property> </widget> </item> <item> <widget class="QSpinBox" name="DirtyWidth"/> </item> <item> <widget class="QLabel" name="label_28"> <property name="text"> <string>Pixels</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_8"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item row="2" column="0"> <widget class="QLabel" name="label_11"> <property name="text"> <string>Dirty</string> </property> </widget> </item> </layout> </widget> </item> <item> <spacer name="verticalSpacer_5"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tab_7"> <attribute name="title"> <string>Locale</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label_16"> <property name="text"> <string>You may need to restart the program for these changes to take effect</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QCheckBox" name="SelectLanguage"> <property name="text"> <string>Use language</string> </property> </widget> </item> <item> <widget class="QComboBox" name="Language"> <property name="enabled"> <bool>false</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <widget class="QCheckBox" name="TranslateTags"> <property name="text"> <string>Translate standard tags</string> </property> </widget> </item> <item> <spacer name="verticalSpacer_3"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>174</width> <height>189</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tab_5"> <attribute name="title"> <string>Rendering</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> <widget class="QGroupBox" name="groupBox_5"> <property name="title"> <string>Options</string> </property> <layout class="QGridLayout" name="gridLayout_3"> <item row="0" column="0"> <widget class="QCheckBox" name="cbAntiAlias"> <property name="text"> <string>Use Anti-aliasing</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QCheckBox" name="cbDisableAntialiasInPanning"> <property name="text"> <string>Disable Anti-alisaing while panning</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QCheckBox" name="cbStyledWireframe"> <property name="toolTip"> <string><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></string> </property> <property name="text"> <string>Use current style for wireframe rendering</string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_7"> <property name="title"> <string>Editing</string> </property> <layout class="QHBoxLayout" name="horizontalLayout_15"> <item> <widget class="QRadioButton" name="rbQuickEdit"> <property name="text"> <string>Quick editing</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbWireframeEdit"> <property name="text"> <string>Wireframe editing</string> </property> </widget> </item> <item> <widget class="QRadioButton" name="rbFullEdit"> <property name="text"> <string>Full render editing</string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="MapStyle"> <property name="title"> <string>Map style</string> </property> <layout class="QVBoxLayout" name="_2"> <item> <layout class="QHBoxLayout" name="_4"> <item> <widget class="QLabel" name="label_17"> <property name="text"> <string>Custom styles directory</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="CustomStylesDir"> <property name="enabled"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="BrowseStyle"> <property name="enabled"> <bool>true</bool> </property> <property name="maximumSize"> <size> <width>30</width> <height>16777215</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="_3"> <item> <widget class="QLabel" name="label_24"> <property name="text"> <string>Current style</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbStyles"> <property name="enabled"> <bool>true</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> <item> <widget class="QCheckBox" name="cbDisableStyleForTracks"> <property name="text"> <string>Disable styles for track layers</string> </property> </widget> </item> </layout> </widget> </item> <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tabTemplate"> <attribute name="title"> <string>Template</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_7"> <item> <widget class="QGroupBox" name="MapStyle_2"> <property name="title"> <string>Tag Template</string> </property> <layout class="QVBoxLayout" name="_9"> <item> <layout class="QHBoxLayout" name="_10"> <item> <widget class="QRadioButton" name="TemplateBuiltin"> <property name="text"> <string>Built-in</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbTemplates"> <property name="enabled"> <bool>false</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="_11"> <item> <widget class="QRadioButton" name="TemplateCustom"> <property name="text"> <string>Custom</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="CustomTemplateName"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="BrowseTemplate"> <property name="enabled"> <bool>false</bool> </property> <property name="maximumSize"> <size> <width>30</width> <height>16777215</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <spacer name="verticalSpacer_4"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>302</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tabData"> <attribute name="title"> <string>Data</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QGroupBox" name="grpOSM"> <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="title"> <string>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</string> </property> <layout class="QVBoxLayout" name="OsmServersLayout"/> </widget> </item> <item> <widget class="QGroupBox" name="grpXAPI_2"> <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="title"> <string>XAPI</string> </property> <layout class="QVBoxLayout" name="_8"> <item> <layout class="QGridLayout" name="_12"> <item row="0" column="1"> <widget class="QLabel" name="label_30"> <property name="text"> <string>URL:</string> </property> </widget> </item> <item row="0" column="2"> <widget class="QLineEdit" name="edXapiUrl"/> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="grpNomination"> <property name="minimumSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="title"> <string>Nominatim (Geo Search)</string> </property> <layout class="QVBoxLayout" name="_6"> <item> <layout class="QGridLayout" name="_7"> <item row="0" column="2"> <widget class="QLineEdit" name="edNominatimUrl"/> </item> <item row="0" column="1"> <widget class="QLabel" name="label_29"> <property name="text"> <string>URL:</string> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="gb_Documents"> <property name="title"> <string>Documents</string> </property> <layout class="QVBoxLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <property name="spacing"> <number>0</number> </property> <item> <widget class="QCheckBox" name="cbAutoLoadDoc"> <property name="text"> <string>Autoload template document</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edAutoLoadDoc"/> </item> <item> <widget class="QPushButton" name="btAutoloadBrowse"> <property name="maximumSize"> <size> <width>30</width> <height>16777215</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <widget class="QCheckBox" name="cbAutoSaveDoc"> <property name="text"> <string>Autosave documents after upload</string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="gb_Tracks"> <property name="title"> <string>Tracks</string> </property> <layout class="QVBoxLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> <widget class="QCheckBox" name="cbAutoExtractTracks"> <property name="text"> <string>Automatically extract tracks on open</string> </property> </widget> </item> <item> <widget class="QCheckBox" name="cbReadonlyTracksDefault"> <property name="text"> <string>Track layers readonly by default</string> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_9"> <item> <widget class="QLabel" name="label_25"> <property name="text"> <string>Don't connect GPX nodes separated by more than (in km; 0 to disable)</string> </property> </widget> </item> <item> <widget class="QDoubleSpinBox" name="sbMaxDistNodes"> <property name="singleStep"> <double>0.100000000000000</double> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_6"> <property name="title"> <string>GDAL</string> </property> <layout class="QVBoxLayout" name="verticalLayout_10"> <item> <widget class="QCheckBox" name="cbGdalConfirmProjection"> <property name="text"> <string>Confirm projection</string> </property> </widget> </item> </layout> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>0</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tab_6"> <attribute name="title"> <string>GPS</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_5"> <item> <widget class="QGroupBox" name="groupBox_4"> <property name="title"> <string>GPS input</string> </property> <layout class="QGridLayout" name="gridLayout_2"> <item row="1" column="0"> <widget class="QRadioButton" name="rbGpsGpsd"> <property name="text"> <string>gpsd</string> </property> </widget> </item> <item row="0" column="0"> <widget class="QRadioButton" name="rbGpsSerial"> <property name="text"> <string>Serial</string> </property> </widget> </item> <item row="0" column="1" colspan="2"> <widget class="QFrame" name="frGpsSerial"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QHBoxLayout" name="horizontalLayout_8"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QLabel" name="lblGpsPort"> <property name="text"> <string>Port</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edGpsPort"/> </item> </layout> </widget> </item> <item row="1" column="1"> <widget class="QFrame" name="frGpsGpsd"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QHBoxLayout" name="horizontalLayout_10"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QLabel" name="lblGpsdHost"> <property name="text"> <string>Host</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edGpsdHost"/> </item> <item> <widget class="QLabel" name="lblGpsdPort"> <property name="text"> <string>Port</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbGpsdPort"> <property name="minimum"> <number>1</number> </property> <property name="maximum"> <number>65535</number> </property> <property name="value"> <number>2741</number> </property> </widget> </item> </layout> </widget> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="_5"> <item> <widget class="QCheckBox" name="cbGgpsSaveLog"> <property name="text"> <string>Save NMEA log</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edGpsLogDir"> <property name="enabled"> <bool>false</bool> </property> </widget> </item> <item> <widget class="QPushButton" name="btGpsLogDirBrowse"> <property name="enabled"> <bool>false</bool> </property> <property name="maximumSize"> <size> <width>30</width> <height>16777215</height> </size> </property> <property name="text"> <string>...</string> </property> <property name="iconSize"> <size> <width>8</width> <height>8</height> </size> </property> </widget> </item> </layout> </item> <item> <widget class="QCheckBox" name="cbGpsSyncTime"> <property name="enabled"> <bool>false</bool> </property> <property name="text"> <string>Set system time to GPS</string> </property> </widget> </item> <item> <spacer name="verticalSpacer_2"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>40</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tab"> <attribute name="title"> <string>Network</string> </attribute> <layout class="QVBoxLayout"> <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>Proxy settings</string> </property> <layout class="QGridLayout"> <item row="0" column="0" colspan="3"> <widget class="QCheckBox" name="bbUseProxy"> <property name="text"> <string>Use Proxy</string> </property> </widget> </item> <item row="4" column="0"> <widget class="QLabel" name="label_7"> <property name="text"> <string>Password:</string> </property> </widget> </item> <item row="4" column="1"> <widget class="QLineEdit" name="edProxyPassword"> <property name="enabled"> <bool>false</bool> </property> <property name="maximumSize"> <size> <width>250</width> <height>16777215</height> </size> </property> <property name="echoMode"> <enum>QLineEdit::Password</enum> </property> </widget> </item> <item row="3" column="0"> <widget class="QLabel" name="label_4"> <property name="text"> <string>User:</string> </property> </widget> </item> <item row="2" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> <string>Port:</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Host:</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QLineEdit" name="edProxyHost"> <property name="enabled"> <bool>false</bool> </property> <property name="maximumSize"> <size> <width>16777215</width> <height>16777215</height> </size> </property> </widget> </item> <item row="2" column="1"> <widget class="QLineEdit" name="edProxyPort"> <property name="enabled"> <bool>false</bool> </property> <property name="maximumSize"> <size> <width>50</width> <height>16777215</height> </size> </property> </widget> </item> <item row="3" column="1"> <widget class="QLineEdit" name="edProxyUser"> <property name="enabled"> <bool>false</bool> </property> <property name="maximumSize"> <size> <width>250</width> <height>16777215</height> </size> </property> </widget> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_12"> <item> <widget class="QLabel" name="label_12"> <property name="text"> <string>Network Timeout (sec)</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbNetworkTimeout"> <property name="minimum"> <number>3</number> </property> <property name="maximum"> <number>999</number> </property> <property name="singleStep"> <number>1</number> </property> <property name="value"> <number>10</number> </property> </widget> </item> <item> <spacer name="horizontalSpacer_7"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item> <widget class="QCheckBox" name="cbLocalServer"> <property name="text"> <string>Enable JOSM-compatible local server on port 8111</string> </property> </widget> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>0</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tab_2"> <attribute name="title"> <string>Background Image</string> </attribute> <layout class="QVBoxLayout"> <item> <widget class="QGroupBox" name="grpCaching"> <property name="title"> <string>Tiles Caching (not active for Yahoo! due to legal restrictions)</string> </property> <layout class="QGridLayout"> <item row="0" column="0"> <widget class="QLabel" name="label_3"> <property name="text"> <string>Cache directory</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QLineEdit" name="edCacheDir"/> </item> <item row="1" column="0"> <widget class="QLabel" name="label_15"> <property name="text"> <string>Cache size (in Mb; 0 to disable)</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QSpinBox" name="sbCacheSize"> <property name="maximum"> <number>999</number> </property> </widget> </item> </layout> </widget> </item> <item> <layout class="QGridLayout"> <item row="0" column="0"> <widget class="QGroupBox" name="groupBox_3"> <property name="title"> <string>Map Adapter</string> </property> <layout class="QVBoxLayout" name="verticalLayout_8"> <item> <widget class="QCheckBox" name="cbAutoSourceTag"> <property name="text"> <string>Automatically add "source" tag when creating features over a background map</string> </property> </widget> </item> </layout> </widget> </item> </layout> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeType"> <enum>QSizePolicy::Expanding</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>0</width> <height>0</height> </size> </property> </spacer> </item> </layout> </widget> <widget class="QWidget" name="tabTools"> <attribute name="title"> <string>Tools</string> </attribute> <layout class="QHBoxLayout"> <item> <widget class="QListWidget" name="lvTools"/> </item> <item> <widget class="Line" name="line"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> </item> <item> <layout class="QVBoxLayout"> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Name:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edToolName"/> </item> <item> <widget class="QLabel" name="label_6"> <property name="text"> <string>Path:</string> </property> <property name="buddy"> <cstring>edToolPath</cstring> </property> </widget> </item> <item> <layout class="QHBoxLayout"> <item> <widget class="QLineEdit" name="edToolPath"/> </item> <item> <widget class="QPushButton" name="btBrowse"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="maximumSize"> <size> <width>30</width> <height>16777215</height> </size> </property> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>201</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="btApplyTool"> <property name="text"> <string>Apply</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btAddTool"> <property name="text"> <string>Add</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btDelTool"> <property name="text"> <string>Remove</string> </property> </widget> </item> </layout> </item> </layout> </widget> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="maximumSize"> <size> <width>900</width> <height>700</height> </size> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <tabstops> <tabstop>bbUseProxy</tabstop> </tabstops> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>PreferencesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>340</x> <y>466</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>bbUseProxy</sender> <signal>toggled(bool)</signal> <receiver>edProxyHost</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>72</x> <y>79</y> </hint> <hint type="destinationlabel"> <x>162</x> <y>105</y> </hint> </hints> </connection> <connection> <sender>bbUseProxy</sender> <signal>toggled(bool)</signal> <receiver>edProxyPort</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>72</x> <y>79</y> </hint> <hint type="destinationlabel"> <x>135</x> <y>131</y> </hint> </hints> </connection> <connection> <sender>cbGgpsSaveLog</sender> <signal>toggled(bool)</signal> <receiver>edGpsLogDir</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>55</x> <y>149</y> </hint> <hint type="destinationlabel"> <x>185</x> <y>150</y> </hint> </hints> </connection> <connection> <sender>cbGgpsSaveLog</sender> <signal>toggled(bool)</signal> <receiver>btGpsLogDirBrowse</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>55</x> <y>149</y> </hint> <hint type="destinationlabel"> <x>665</x> <y>152</y> </hint> </hints> </connection> <connection> <sender>SelectLanguage</sender> <signal>toggled(bool)</signal> <receiver>Language</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>45</x> <y>77</y> </hint> <hint type="destinationlabel"> <x>200</x> <y>79</y> </hint> </hints> </connection> <connection> <sender>TemplateBuiltin</sender> <signal>toggled(bool)</signal> <receiver>cbTemplates</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>79</x> <y>81</y> </hint> <hint type="destinationlabel"> <x>173</x> <y>83</y> </hint> </hints> </connection> <connection> <sender>TemplateCustom</sender> <signal>toggled(bool)</signal> <receiver>CustomTemplateName</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>68</x> <y>111</y> </hint> <hint type="destinationlabel"> <x>155</x> <y>112</y> </hint> </hints> </connection> <connection> <sender>TemplateCustom</sender> <signal>toggled(bool)</signal> <receiver>BrowseTemplate</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>68</x> <y>111</y> </hint> <hint type="destinationlabel"> <x>655</x> <y>114</y> </hint> </hints> </connection> <connection> <sender>cbCustomStyle</sender> <signal>toggled(bool)</signal> <receiver>comboCustomStyle</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>148</x> <y>206</y> </hint> <hint type="destinationlabel"> <x>614</x> <y>208</y> </hint> </hints> </connection> <connection> <sender>bbUseProxy</sender> <signal>toggled(bool)</signal> <receiver>edProxyUser</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>72</x> <y>79</y> </hint> <hint type="destinationlabel"> <x>162</x> <y>157</y> </hint> </hints> </connection> <connection> <sender>bbUseProxy</sender> <signal>toggled(bool)</signal> <receiver>edProxyPassword</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>72</x> <y>79</y> </hint> <hint type="destinationlabel"> <x>162</x> <y>183</y> </hint> </hints> </connection> <connection> <sender>rbGpsSerial</sender> <signal>toggled(bool)</signal> <receiver>frGpsSerial</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>75</x> <y>81</y> </hint> <hint type="destinationlabel"> <x>167</x> <y>84</y> </hint> </hints> </connection> <connection> <sender>rbGpsGpsd</sender> <signal>toggled(bool)</signal> <receiver>frGpsGpsd</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>75</x> <y>109</y> </hint> <hint type="destinationlabel"> <x>161</x> <y>112</y> </hint> </hints> </connection> <connection> <sender>cbAutoLoadDoc</sender> <signal>toggled(bool)</signal> <receiver>edAutoLoadDoc</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>137</x> <y>244</y> </hint> <hint type="destinationlabel"> <x>388</x> <y>245</y> </hint> </hints> </connection> <connection> <sender>cbAntiAlias</sender> <signal>toggled(bool)</signal> <receiver>cbDisableAntialiasInPanning</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>75</x> <y>71</y> </hint> <hint type="destinationlabel"> <x>402</x> <y>73</y> </hint> </hints> </connection> </connections> </ui> �merkaartor-0.18.1/src/Preferences/ProjPreferencesDialog.cpp�����������������������������������������0000664�0000000�0000000�00000007223�11770671653�0023741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ProjPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, Bart Vanhauwaert (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "ProjPreferencesDialog.h" #include <QMessageBox> #include <QDir> #include <QUrl> #include <QTextEdit> #include <QComboBox> #include "ProjectionChooser.h" ProjPreferencesDialog::ProjPreferencesDialog(QWidget* parent) : QDialog(parent) { setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); loadPrefs(); } ProjPreferencesDialog::~ProjPreferencesDialog() { } void ProjPreferencesDialog::addProjection(const ProjectionItem & srv) { theItems.push_back(srv); if (!srv.deleted) { QListWidgetItem* item = new QListWidgetItem(srv.name); item->setData(Qt::UserRole, (int) theItems.size()-1); lvProjections->addItem(item); } } void ProjPreferencesDialog::on_btSelectProj4_clicked() { QString sPrj = ProjectionChooser::getProjection(tr("Please specify projection"), false, edProj4String->text(), this); if (!sPrj.isEmpty()) edProj4String->setText(sPrj); } void ProjPreferencesDialog::on_btApply_clicked(void) { int idx = static_cast<int>(lvProjections->currentItem()->data(Qt::UserRole).toInt()); if (idx >= theItems.size()) return; ProjectionItem& item(theItems[idx]); item.name = edProjName->text(); item.projection = edProj4String->text(); lvProjections->currentItem()->setText(item.name); selectedItem = item.name; } void ProjPreferencesDialog::on_btAdd_clicked(void) { addProjection(ProjectionItem(edProjName->text(), edProj4String->text())); lvProjections->setCurrentRow(lvProjections->count() - 1); on_lvProjections_itemSelectionChanged(); } void ProjPreferencesDialog::on_btDel_clicked(void) { QListWidgetItem* it = lvProjections->item(lvProjections->currentRow()); int idx = it->data(Qt::UserRole).toInt(); if (idx >= theItems.size()) return; theItems[idx].deleted = true; delete lvProjections->takeItem(lvProjections->currentRow()); on_lvProjections_itemSelectionChanged(); } void ProjPreferencesDialog::on_lvProjections_itemSelectionChanged() { QListWidgetItem* it = lvProjections->item(lvProjections->currentRow()); int idx = it->data(Qt::UserRole).toInt(); if (idx >= theItems.size()) return; ProjectionItem& item(theItems[idx]); edProjName->setText(item.name); edProj4String->setText(item.projection); selectedItem = item.name; } QString ProjPreferencesDialog::getSelectedItem() { return selectedItem; } void ProjPreferencesDialog::setSelectedItem(QString theValue) { QList<QListWidgetItem *> L = lvProjections->findItems(theValue, Qt::MatchExactly); lvProjections->setCurrentItem(L[0]); on_lvProjections_itemSelectionChanged(); } void ProjPreferencesDialog::on_buttonBox_clicked(QAbstractButton * button) { if (button == buttonBox->button(QDialogButtonBox::Apply)) { savePrefs(); } else if (button == buttonBox->button(QDialogButtonBox::Ok)) { savePrefs(); this->accept(); } } void ProjPreferencesDialog::loadPrefs() { ProjectionList* L = M_PREFS->getProjectionsList()->getProjections(); ProjectionListIterator i(*L); while (i.hasNext()) { i.next(); addProjection(i.value()); } } void ProjPreferencesDialog::savePrefs() { ProjectionList* L = M_PREFS->getProjectionsList()->getProjections(); L->clear(); for (int i = 0; i < theItems.size(); ++i) { ProjectionItem S(theItems[i]); L->insert(theItems[i].name, S); } M_PREFS->save(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/ProjPreferencesDialog.h�������������������������������������������0000664�0000000�0000000�00000002262�11770671653�0023404�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ProjPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ProjPreferencesDialog_H #define ProjPreferencesDialog_H #include <QWidget> #include <QBuffer> #include <ui_ProjPreferencesDialog.h> #include "MerkaartorPreferences.h" #include "ProjectionsList.h" #include <QList> /** @author cbro <cbro@semperpax.com> */ class ProjPreferencesDialog : public QDialog, public Ui::ProjPreferencesDialog { Q_OBJECT public: ProjPreferencesDialog(QWidget* parent = 0); ~ProjPreferencesDialog(); void addProjection(const ProjectionItem & item); public slots: void on_btSelectProj4_clicked(); void on_btApply_clicked(); void on_btAdd_clicked(); void on_btDel_clicked(); void on_lvProjections_itemSelectionChanged(); void on_buttonBox_clicked(QAbstractButton * button); private: void loadPrefs(); void savePrefs(); public: QList<ProjectionItem> theItems; QString getSelectedItem(); void setSelectedItem(QString theValue); private: QString selectedItem; int httpGetId; QBuffer* buf; }; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/ProjPreferencesDialog.ui������������������������������������������0000664�0000000�0000000�00000012273�11770671653�0023575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>ProjPreferencesDialog</class> <widget class="QDialog" name="ProjPreferencesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>640</width> <height>285</height> </rect> </property> <property name="windowTitle"> <string>Projections setup</string> </property> <layout class="QVBoxLayout"> <item> <widget class="QGroupBox" name="grpWmsServers"> <property name="title"> <string>Projections</string> </property> <layout class="QHBoxLayout"> <property name="spacing"> <number>1</number> </property> <property name="margin"> <number>1</number> </property> <item> <widget class="QFrame" name="frame_2"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>5</number> </property> <property name="margin"> <number>5</number> </property> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Projection list:</string> </property> </widget> </item> <item> <widget class="QListWidget" name="lvProjections"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label_11"> <property name="text"> <string>Name:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edProjName"> <property name="minimumSize"> <size> <width>100</width> <height>0</height> </size> </property> </widget> </item> <item> <widget class="QLabel" name="label_5"> <property name="text"> <string>PROJ4 string</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLineEdit" name="edProj4String"/> </item> <item> <widget class="QToolButton" name="btSelectProj4"> <property name="text"> <string>...</string> </property> </widget> </item> </layout> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>1</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="btApply"> <property name="text"> <string>Apply</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btAdd"> <property name="text"> <string>Add</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btDel"> <property name="text"> <string>Remove</string> </property> </widget> </item> </layout> </widget> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>ProjPreferencesDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>ProjPreferencesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/ProjectionsList.cpp�����������������������������������������������0000664�0000000�0000000�00000007616�11770671653�0022666�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ProjectionsList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include "ProjectionsList.h" #include "MerkaartorPreferences.h" #define STRINGIFY(x) XSTRINGIFY(x) #define XSTRINGIFY(x) #x ProjectionItem::ProjectionItem () : name(""), projection(""), deleted(false) { } ProjectionItem::ProjectionItem (QString aName, QString aProjection, bool aDeleted) : name(aName), projection(aProjection), deleted(aDeleted) { } void ProjectionItem::toXml(QDomElement parent) { QDomElement p = parent.ownerDocument().createElement("Projection"); parent.appendChild(p); p.setAttribute("name", name); if (deleted) p.setAttribute("deleted", "true"); QDomText t = parent.ownerDocument().createTextNode(projection); p.appendChild(t); } ProjectionItem ProjectionItem::fromXml(QDomElement parent) { ProjectionItem theProjection; if (parent.tagName() == "Projection") { theProjection.projection = parent.text().trimmed(); theProjection.name = parent.attribute("name"); theProjection.deleted = (parent.attribute("deleted") == "true" ? true : false); } return theProjection; } void ProjectionsList::add(ProjectionsList aProjectionsList) { ProjectionListIterator it(*(aProjectionsList.getProjections())); while (it.hasNext()) { it.next(); ProjectionItem anItem = it.value(); if (!theProjections.contains(anItem.name)) theProjections.insert(anItem.name, anItem); } } void ProjectionsList::addProjection(ProjectionItem aProjection) { theProjections.insert(aProjection.name, aProjection); } QString searchEPSG(QString name, QString filename) { QString ret; QString espgNum = name.remove("epsg:", Qt::CaseInsensitive); QFile f(filename); f.open(QIODevice::ReadOnly); if (!f.isOpen()) return ret; QString theEpsgNum("<" + espgNum + ">"); while (!f.atEnd()) { QByteArray epsg = f.readLine(); int idx = epsg.indexOf(theEpsgNum); if (idx != -1) { idx += theEpsgNum.length(); int idx2 = epsg.indexOf("<>", idx); ret = epsg.mid(idx, idx2 - idx); break; } } f.close(); return ret; } ProjectionItem ProjectionsList::getProjection(QString name) const { if (name.contains("+proj")) { return ProjectionItem(name, name); } if (theProjections.contains(name)) return theProjections.value(name); else { QMapIterator <QString, ProjectionItem> it(theProjections); while (it.hasNext()) { it.next(); if (it.value().deleted) continue; if (it.key().contains(name, Qt::CaseInsensitive)) return it.value(); } } return ProjectionItem(name, QString("+init=%1").arg(name)); } QMap <QString, ProjectionItem>* ProjectionsList::getProjections() { return &theProjections; } void ProjectionsList::toXml(QDomElement parent) { QDomElement rt = parent.ownerDocument().createElement("Projections"); parent.appendChild(rt); rt.setAttribute("creator", QString("%1 v%2%3").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); QMapIterator <QString, ProjectionItem> it(theProjections); while (it.hasNext()) { it.next(); ProjectionItem i = it.value(); i.toXml(rt); } } ProjectionsList ProjectionsList::fromXml(QDomElement parent) { ProjectionsList theProjections; if (parent.nodeName() == "Projections") { QDomElement c = parent.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "Projection") { theProjections.addProjection(ProjectionItem::fromXml(c)); } c = c.nextSiblingElement(); } } return theProjections; } ������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/ProjectionsList.h�������������������������������������������������0000664�0000000�0000000�00000002234�11770671653�0022322�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: ProjectionsList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef PROJECTIONS_LIST_H #define PROJECTIONS_LIST_H #include <QString> #include <QMap> #include <QtXml> class ProjectionItem { public: ProjectionItem (); ProjectionItem (QString aName, QString aProjection, bool aDeleted = false); QString name; QString projection; bool deleted; public: void toXml(QDomElement parent); static ProjectionItem fromXml(QDomElement parent); }; typedef QMap <QString, ProjectionItem> ProjectionList; typedef QMapIterator<QString, ProjectionItem> ProjectionListIterator; class ProjectionsList { public: void add(ProjectionsList aProjectionsList); void addProjection(ProjectionItem aProjItem); ProjectionItem getProjection(QString name) const; ProjectionList* getProjections(); void toXml(QDomElement parent); static ProjectionsList fromXml(QDomElement parent); private: ProjectionList theProjections; }; #endif // PROJECTIONS_LIST_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/TMSPreferencesDialog.cpp������������������������������������������0000664�0000000�0000000�00000027635�11770671653�0023503�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: TMSPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, Bart Vanhauwaert (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "TMSPreferencesDialog.h" #include <QMessageBox> #include <QDir> #include <QUrl> #include <QTextEdit> #include <QComboBox> TMSPreferencesDialog::TMSPreferencesDialog(QWidget* parent) : QDialog(parent) { setupUi(this); frOSGeo->setVisible(false); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); loadPrefs(); } TMSPreferencesDialog::~TMSPreferencesDialog() { } void TMSPreferencesDialog::addServer(const TmsServer & srv) { theTmsServers.push_back(srv); if (!srv.deleted) { QListWidgetItem* item = new QListWidgetItem(srv.TmsName); item->setData(Qt::UserRole, (int) theTmsServers.size()-1); lvTmsServers->addItem(item); } } void TMSPreferencesDialog::on_btApplyTmsServer_clicked(void) { int idx = static_cast<int>(lvTmsServers->currentItem()->data(Qt::UserRole).toInt()); if (idx >= theTmsServers.size()) return; QUrl theUrl(edTmsUrl->text()); QString theAdress = theUrl.toString(QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment); TmsServer& WS(theTmsServers[idx]); if (frOSGeo->isVisible()) { if (!lvTmsServices->currentItem()) return; TileService ts = services[lvTmsServices->currentItem()->text()]; theUrl = ts.Url; theUrl.setPath(theUrl.path() + "/%1/%2/%3." + ts.Format); WS.TmsBaseUrl = edTmsUrl->text(); } WS.TmsName = edTmsName->text(); WS.TmsAdress = theAdress; WS.TmsPath = theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); WS.TmsTileSize = sbTileSize->value(); WS.TmsMinZoom = sbMinZoom->value(); WS.TmsMaxZoom = sbMaxZoom->value(); WS.TmsBlOrigin = cbBotLeftOrigin->isChecked(); WS.TmsSourceTag = edSourceTag->text(); WS.TmsLicenseUrl = edLicenseUrl->text(); if (cbSRS->currentIndex() == 1) WS.TmsProjection = "EPSG:4326"; else WS.TmsProjection = "EPSG:900913"; lvTmsServers->currentItem()->setText(WS.TmsName); selectedServer = WS.TmsName; } void TMSPreferencesDialog::on_btAddTmsServer_clicked(void) { QUrl theUrl(edTmsUrl->text()); QString theAdress = theUrl.toString(QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment); QString theBaseUrl; if (frOSGeo->isVisible()) { if (!lvTmsServices->currentItem()) return; TileService ts = services[lvTmsServices->currentItem()->text()]; theUrl = ts.Url; theUrl.setPath(theUrl.path() + "/%1/%2/%3." + ts.Format); theBaseUrl = edTmsUrl->text(); } QString proj; if (cbSRS->currentIndex() == 1) proj = "EPSG:4326"; else proj = "EPSG:900913"; addServer(TmsServer(edTmsName->text(), theAdress, theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority), proj, sbTileSize->value(), sbMinZoom->value(), sbMaxZoom->value(), edSourceTag->text(), edLicenseUrl->text(), theBaseUrl, cbBotLeftOrigin->isChecked())); lvTmsServers->setCurrentRow(lvTmsServers->count() - 1); on_lvTmsServers_itemSelectionChanged(); } void TMSPreferencesDialog::on_btDelTmsServer_clicked(void) { int idx = static_cast<int>(lvTmsServers->currentItem()->data(Qt::UserRole).toInt()); if (idx >= theTmsServers.size()) return; theTmsServers[idx].deleted = true; delete lvTmsServers->takeItem(idx); on_lvTmsServers_itemSelectionChanged(); } void TMSPreferencesDialog::on_lvTmsServers_itemSelectionChanged() { QListWidgetItem* it = lvTmsServers->item(lvTmsServers->currentRow()); int idx = it->data(Qt::UserRole).toInt(); if (idx >= theTmsServers.size()) return; TmsServer& WS(theTmsServers[idx]); edTmsName->setText(WS.TmsName); if (WS.TmsAdress.contains("://")) { edTmsUrl->setText(WS.TmsAdress + WS.TmsPath); } else { edTmsUrl->setText("http://" + WS.TmsAdress + WS.TmsPath); } sbTileSize->setValue(WS.TmsTileSize); sbMinZoom->setValue(WS.TmsMinZoom); sbMaxZoom->setValue(WS.TmsMaxZoom); edSourceTag->setText(WS.TmsSourceTag); edLicenseUrl->setText(WS.TmsLicenseUrl); cbBotLeftOrigin->setChecked(WS.TmsBlOrigin); int ix = cbSRS->findText(WS.TmsProjection, Qt::MatchContains | Qt::MatchCaseSensitive); cbSRS->setCurrentIndex(ix); if (WS.TmsBaseUrl.isEmpty()) { frOSGeo->setVisible(false); cbSRS->setEnabled(true); cbBotLeftOrigin->setEnabled(true); sbTileSize->setEnabled(true); sbMaxZoom->setEnabled(true); sbMinZoom->setEnabled(true); } else { edTmsUrl->setText(WS.TmsBaseUrl); frOSGeo->setVisible(true); cbSRS->setEnabled(false); cbBotLeftOrigin->setEnabled(false); sbTileSize->setEnabled(false); sbMaxZoom->setEnabled(false); sbMinZoom->setEnabled(false); on_btGetServices_clicked(); } selectedServer = WS.TmsName; } QString TMSPreferencesDialog::getSelectedServer() { return selectedServer; } void TMSPreferencesDialog::setSelectedServer(QString theValue) { QList<QListWidgetItem *> L = lvTmsServers->findItems(theValue, Qt::MatchExactly); lvTmsServers->setCurrentItem(L[0]); on_lvTmsServers_itemSelectionChanged(); } void TMSPreferencesDialog::on_buttonBox_clicked(QAbstractButton * button) { if (button == buttonBox->button(QDialogButtonBox::Apply)) { savePrefs(); } else if (button == buttonBox->button(QDialogButtonBox::Ok)) { savePrefs(); this->accept(); } } void TMSPreferencesDialog::loadPrefs() { TmsServerList* L = M_PREFS->getTmsServers(); TmsServerListIterator i(*L); while (i.hasNext()) { i.next(); addServer(i.value()); } } void TMSPreferencesDialog::savePrefs() { TmsServerList* L = M_PREFS->getTmsServers(); L->clear(); for (int i = 0; i < theTmsServers.size(); ++i) { TmsServer S(theTmsServers[i]); L->insert(theTmsServers[i].TmsName, S); } //M_PREFS->setSelectedTmsServer(getSelectedServer()); M_PREFS->save(); } void TMSPreferencesDialog::on_btGetServices_clicked() { QUrl theUrl(edTmsUrl->text()); if ((theUrl.host() == "") || (theUrl.path() == "")) { QMessageBox::critical(this, tr("Merkaartor: GetServices"), tr("Address and Path cannot be blank."), QMessageBox::Ok); } lvTmsServices->clear(); services.clear(); http = new QHttp(this); http->setProxy(M_PREFS->getProxy(theUrl)); connect (http, SIGNAL(requestFinished(int, bool)), this, SLOT(httpRequestFinished(int, bool))); connect(http, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(readResponseHeader(const QHttpResponseHeader &))); httpGetId = sendRequest(theUrl); } int TMSPreferencesDialog::sendRequest(QUrl url) { QString requestUrl = url.encodedPath(); if (!url.encodedQuery().isNull()) requestUrl += "?" + url.encodedQuery(); QHttpRequestHeader header("GET", requestUrl); qDebug() << header.toString(); QString host = url.host(); if (url.port() != -1) host += ":" + QString::number(url.port()); header.setValue("Host", host); header.setValue("User-Agent", USER_AGENT); http->setHost(url.host(), url.port() == -1 ? 80 : url.port()); http->setProxy(M_PREFS->getProxy(url)); return http->request(header); } void TMSPreferencesDialog::readResponseHeader(const QHttpResponseHeader &responseHeader) { qDebug() << responseHeader.toString(); switch (responseHeader.statusCode()) { case 200: break; case 301: case 302: case 307: http->abort(); sendRequest(QUrl(responseHeader.value("Location"))); break; default: http->abort(); QMessageBox::information(this, tr("Merkaartor: GetServices"), tr("Download failed: %1.") .arg(responseHeader.reasonPhrase())); } } void TMSPreferencesDialog::httpRequestFinished(int /*id*/, bool error) { if (error) { if (http->error() != QHttp::Aborted) QMessageBox::critical(this, tr("Merkaartor: GetServices"), tr("Error reading services.\n") + http->errorString(), QMessageBox::Ok); return; } QDomDocument doc; QString content = http->readAll(); qDebug() << content; doc.setContent(content); if (doc.isNull()) return; QDomElement e = doc.firstChildElement(); if (e.nodeName() == "Services") { QDomNodeList l = e.elementsByTagName("TileMapService"); for (int i=0; i<l.size(); ++i) { QString href = l.at(i).toElement().attribute("href"); if (!href.isNull()) { sendRequest(QUrl(href)); } } } else if (e.nodeName() == "TileMapService") { QDomNodeList l = e.elementsByTagName("TileMap"); for (int i=0; i<l.size(); ++i) { QString href = l.at(i).toElement().attribute("href"); if (!href.isNull()) { sendRequest(QUrl(href)); } } } else if (e.nodeName() == "TileMap") { QString url; QString title; QString srs; CoordBox bbox; Coord origin; QSize tilesize; QString tileformat; int minzoom = 9999, maxzoom = 0; url = e.attribute("tilemapservice"); QDomElement c = e.firstChildElement(); while (!c.isNull()) { if (c.nodeName() == "Title") { title = c.firstChild().toText().nodeValue(); url = url + title + "/"; } else if (c.nodeName() == "SRS") { srs = c.firstChild().toText().nodeValue(); } else if (c.nodeName() == "BoundingBox") { Coord bl(c.attribute("minx").toDouble(), c.attribute("miny").toDouble()); Coord tr(c.attribute("maxx").toDouble(), c.attribute("maxy").toDouble()); bbox = CoordBox(bl, tr); } else if (c.nodeName() == "Origin") { Coord pt(c.attribute("x").toDouble(), c.attribute("y").toDouble()); origin = pt; } else if (c.nodeName() == "TileFormat") { tilesize.setWidth(c.attribute("width").toInt()); tilesize.setHeight(c.attribute("height").toInt()); tileformat = c.attribute("extension"); } else if (c.nodeName() == "TileSets") { QDomElement t = c.firstChildElement(); while (!t.isNull()) { int o = t.attribute("order").toInt(); minzoom = o < minzoom ? o : minzoom; maxzoom = o > maxzoom ? o : maxzoom; t = t.nextSiblingElement(); } } c = c.nextSiblingElement(); } TileService ts; ts.Title = title; ts.Url = url; ts.SRS = srs; ts.TileSize = tilesize.width(); ts.MinZoom = minzoom; ts.MaxZoom = maxzoom; ts.BBox = bbox; ts.Format = tileformat; Coord center = bbox.center(); if (origin.y() < center.y()) ts.Origin = true; else ts.Origin = false; services.insert(title, ts); lvTmsServices->addItem(title); frOSGeo->setVisible(true); cbSRS->setEnabled(false); cbBotLeftOrigin->setEnabled(false); sbTileSize->setEnabled(false); sbMaxZoom->setEnabled(false); sbMinZoom->setEnabled(false); } } void TMSPreferencesDialog::on_lvTmsServices_itemSelectionChanged() { TileService ts = services[lvTmsServices->currentItem()->text()]; int ix = cbSRS->findText(ts.SRS, Qt::MatchContains); cbSRS->setCurrentIndex(ix); cbBotLeftOrigin->setChecked(ts.Origin); sbTileSize->setValue(ts.TileSize); sbMinZoom->setValue(ts.MinZoom); sbMaxZoom->setValue(ts.MaxZoom); } ���������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/TMSPreferencesDialog.h��������������������������������������������0000664�0000000�0000000�00000003264�11770671653�0023140�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: TMSPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef TMSPREFERENCESDIALOG_H #define TMSPREFERENCESDIALOG_H #include <QWidget> #include <QHttp> #include <QBuffer> #include <ui_TMSPreferencesDialog.h> #include "MerkaartorPreferences.h" #include <QList> class TileService { public: QString Title; QUrl Url; QString SRS; QString Format; bool Origin; CoordBox BBox; int TileSize; int MinZoom; int MaxZoom; }; typedef QHash<QString, TileService> TileServiceList; /** @author cbro <cbro@semperpax.com> */ class TMSPreferencesDialog : public QDialog, public Ui::TMSPreferencesDialog { Q_OBJECT public: TMSPreferencesDialog(QWidget* parent = 0); ~TMSPreferencesDialog(); void addServer(const TmsServer & srv); public slots: void on_btApplyTmsServer_clicked(); void on_btAddTmsServer_clicked(); void on_btDelTmsServer_clicked(); void on_lvTmsServers_itemSelectionChanged(); void on_lvTmsServices_itemSelectionChanged(); void on_buttonBox_clicked(QAbstractButton * button); void on_btGetServices_clicked(); private: void loadPrefs(); void savePrefs(); int sendRequest(QUrl url); private slots: void readResponseHeader(const QHttpResponseHeader &responseHeader); void httpRequestFinished(int id, bool error); public: QList<TmsServer> theTmsServers; QString getSelectedServer(); void setSelectedServer(QString theValue); private: QString selectedServer; QHttp *http; int httpGetId; QBuffer* buf; TileServiceList services; }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/TMSPreferencesDialog.ui�������������������������������������������0000664�0000000�0000000�00000026234�11770671653�0023330�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>TMSPreferencesDialog</class> <widget class="QDialog" name="TMSPreferencesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>550</width> <height>489</height> </rect> </property> <property name="windowTitle"> <string>TMS servers setup</string> </property> <layout class="QVBoxLayout"> <item> <widget class="QGroupBox" name="grpWmsServers"> <property name="title"> <string>TMS Servers</string> </property> <layout class="QHBoxLayout"> <property name="spacing"> <number>1</number> </property> <property name="margin"> <number>1</number> </property> <item> <widget class="QFrame" name="frame_2"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>5</number> </property> <property name="margin"> <number>5</number> </property> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Server list:</string> </property> </widget> </item> <item> <widget class="QListWidget" name="lvTmsServers"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLabel" name="label_11"> <property name="text"> <string>Name:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edTmsName"> <property name="minimumSize"> <size> <width>100</width> <height>0</height> </size> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QLabel" name="label_5"> <property name="text"> <string>Server Url:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edTmsUrl"/> </item> </layout> </item> <item> <widget class="QPushButton" name="btGetServices"> <property name="text"> <string>Get Services</string> </property> </widget> </item> <item> <widget class="QFrame" name="frOSGeo"> <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <widget class="QLabel" name="label_4"> <property name="text"> <string>Services :</string> </property> </widget> </item> <item> <widget class="QListWidget" name="lvTmsServices"/> </item> <item> <widget class="QLabel" name="label_6"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QFrame" name="frOSM"> <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <layout class="QHBoxLayout" name="horizontalLayout_6"> <item> <widget class="QLabel" name="label_7"> <property name="text"> <string>Projection:</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbSRS"> <item> <property name="text"> <string>Mercator (EPSG:900913)</string> </property> </item> <item> <property name="text"> <string>Lat/Lon (EPSG:4326)</string> </property> </item> </widget> </item> </layout> </item> <item> <widget class="QCheckBox" name="cbBotLeftOrigin"> <property name="text"> <string>Origin is bottom-left</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> <widget class="QLabel" name="label_3"> <property name="text"> <string>Tile size:</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbTileSize"> <property name="maximum"> <number>9999</number> </property> <property name="singleStep"> <number>64</number> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_8"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Min zoom:</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbMinZoom"/> </item> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>Max zoom:</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbMaxZoom"/> </item> </layout> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QLabel" name="label_8"> <property name="text"> <string>"source" tag value:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edSourceTag"/> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QLabel" name="label_9"> <property name="text"> <string>License URL:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edLicenseUrl"/> </item> </layout> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>1</height> </size> </property> </spacer> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> <widget class="QPushButton" name="btApplyTmsServer"> <property name="text"> <string>Apply</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btAddTmsServer"> <property name="text"> <string>Add</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btDelTmsServer"> <property name="text"> <string>Remove</string> </property> </widget> </item> </layout> </item> </layout> </widget> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>TMSPreferencesDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>TMSPreferencesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/TmsServersList.cpp������������������������������������������������0000664�0000000�0000000�00000012047�11770671653�0022476�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: TmsServersList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include <QApplication> #include "TmsServersList.h" #include "MerkaartorPreferences.h" TmsServer::TmsServer() { TmsServer(QApplication::translate("MerkaartorPreferences","New Server"), "", "", "EPSG:3857", 256, 0, 17, "", ""); } TmsServer::TmsServer(QString Name, QString Adress, QString Path, QString Projection, int tileSize, int minZoom, int maxZoom, QString SourceTag, QString LicenseUrl, QString baseUrl, bool Origin, bool Deleted) : TmsName(Name) , TmsAdress(Adress) , TmsPath(Path) , TmsProjection(Projection) , TmsTileSize(tileSize) , TmsMinZoom(minZoom) , TmsMaxZoom(maxZoom) , TmsSourceTag(SourceTag) , TmsLicenseUrl(LicenseUrl) , TmsBaseUrl(baseUrl) , TmsBlOrigin(Origin) , deleted(Deleted) { if (Name == "") { TmsName = QApplication::translate("MerkaartorPreferences","New Server"); } } void TmsServer::toXml(QDomElement parent) { QDomElement p = parent.ownerDocument().createElement("TmsServer"); parent.appendChild(p); p.setAttribute("name", TmsName); p.setAttribute("address", TmsAdress); p.setAttribute("path", TmsPath); p.setAttribute("tilesize", QString::number(TmsTileSize)); p.setAttribute("minzoom", QString::number(TmsMinZoom)); p.setAttribute("maxzoom", QString::number(TmsMaxZoom)); if (!TmsSourceTag.isEmpty()) p.setAttribute("sourcetag", TmsSourceTag); if (!TmsLicenseUrl.isEmpty()) p.setAttribute("licenseurl", TmsLicenseUrl); if (!TmsProjection.isEmpty()) p.setAttribute("projection", TmsProjection); if (!TmsBaseUrl.isEmpty()) p.setAttribute("tmsBaseUrl", TmsBaseUrl); if (TmsBlOrigin) p.setAttribute("tmsorigin", "true"); if (deleted) p.setAttribute("deleted", "true"); } TmsServer TmsServer::fromXml(QDomElement parent) { TmsServer theServer; if (parent.tagName() == "TmsServer") { theServer.TmsName = parent.attribute("name"); theServer.TmsAdress = parent.attribute("address"); theServer.TmsPath = parent.attribute("path"); if (parent.hasAttribute("projection")) theServer.TmsProjection = parent.attribute("projection"); else theServer.TmsProjection = "EPSG:900913"; theServer.TmsTileSize = parent.attribute("tilesize").toInt(); theServer.TmsMinZoom = parent.attribute("minzoom").toInt(); theServer.TmsMaxZoom = parent.attribute("maxzoom").toInt(); theServer.TmsSourceTag = parent.attribute("sourcetag"); theServer.TmsLicenseUrl = parent.attribute("licenseurl"); theServer.TmsBaseUrl = parent.attribute("tmsBaseUrl"); theServer.TmsBlOrigin = (parent.attribute("tmsorigin") == "true" ? true : false); theServer.deleted = (parent.attribute("deleted") == "true" ? true : false); } return theServer; } /** **/ void TmsServersList::add(TmsServersList aTmsServersList) { QMapIterator <QString, TmsServer> it(*(aTmsServersList.getServers())); while (it.hasNext()) { it.next(); TmsServer anItem = it.value(); if (!theServers.contains(anItem.TmsName)) theServers.insert(anItem.TmsName, anItem); } } TmsServerList* TmsServersList::getServers() { return &theServers; } void TmsServersList::addServer(TmsServer aServer) { theServers.insert(aServer.TmsName, aServer); } bool TmsServersList::contains(QString name) const { if (theServers.contains(name)) return true; else { TmsServerListIterator it(theServers); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return true; } } return false; } TmsServer TmsServersList::getServer(QString name) const { if (theServers.contains(name)) return theServers.value(name); else { TmsServerListIterator it(theServers); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return it.value(); } } return TmsServer(); } void TmsServersList::toXml(QDomElement parent) { QDomElement rt = parent.ownerDocument().createElement("TmsServers"); parent.appendChild(rt); rt.setAttribute("creator", QString("%1 v%2%3").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); TmsServerListIterator it(theServers); while (it.hasNext()) { it.next(); TmsServer i = it.value(); i.toXml(rt); } } TmsServersList TmsServersList::fromXml(QDomElement parent) { TmsServersList theServersList; if (parent.nodeName() == "TmsServers") { QDomElement c = parent.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "TmsServer") { theServersList.addServer(TmsServer::fromXml(c)); } c = c.nextSiblingElement(); } } return theServersList; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/TmsServersList.h��������������������������������������������������0000664�0000000�0000000�00000003010�11770671653�0022131�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: TMSServersList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef TMSSERVERS_LIST_H #define TMSSERVERS_LIST_H #include <QString> #include <QMap> #include <QtXml> class TmsServer { public: TmsServer(); TmsServer(QString Name, QString Adress, QString Path, QString Projection, int tileSize, int minZoom, int maxZoom, QString SourceTag, QString LicenseUrl, QString TmsBaseUrl = "", bool Origin=false, bool Deleted=false); void toXml(QDomElement parent); static TmsServer fromXml(QDomElement parent); public: QString TmsName; QString TmsAdress; QString TmsPath; QString TmsProjection; int TmsTileSize; int TmsMinZoom; int TmsMaxZoom; QString TmsSourceTag; QString TmsLicenseUrl; QString TmsBaseUrl; bool TmsBlOrigin; bool deleted; }; typedef QMap<QString, TmsServer> TmsServerList; typedef QMapIterator<QString, TmsServer> TmsServerListIterator; class TmsServersList { public: void add(TmsServersList aTmsServersList); void addServer(TmsServer aServer); bool contains(QString name) const; TmsServerList* getServers(); TmsServer getServer(QString name) const; void toXml(QDomElement parent); static TmsServersList fromXml(QDomElement parent); private: TmsServerList theServers; }; #endif // TMSSERVERS_LIST_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/WMSPreferencesDialog.cpp������������������������������������������0000664�0000000�0000000�00000053037�11770671653�0023501�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: WMSPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, Bart Vanhauwaert (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "WMSPreferencesDialog.h" #include <QMessageBox> #include <QDir> #include <QUrl> #include <QTextEdit> #include <QComboBox> #include <QNetworkReply> // from wikipedia #define EQUATORIALRADIUS 6378137.0 #define POLARRADIUS 6356752.0 #define EQUATORIALMETERCIRCUMFERENCE 40075016.68 #define EQUATORIALMETERHALFCIRCUMFERENCE 20037508.34 #define EQUATORIALMETERPERDEGREE 222638.981555556 WMSPreferencesDialog::WMSPreferencesDialog(QWidget* parent) : QDialog(parent), curReply(0) { setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); loadPrefs(); edWmsLayers->setVisible(false); lblWMSC->setVisible(false); frWmsSettings->setVisible(true); isTiled = 0; frTileIt->setEnabled(false); edWmsUrl->setValidator(&wmsValid); connect(tvWmsLayers, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(on_tvWmsLayers_itemChanged(QTreeWidgetItem *, int))); connect (&m_networkManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(httpRequestFinished(QNetworkReply *))); } WMSPreferencesDialog::~WMSPreferencesDialog() { } void WMSPreferencesDialog::updateUrl() { QUrl theUrl(edWmsUrl->text()); if (!theUrl.hasQueryItem("VERSION")) theUrl.addQueryItem("VERSION", "1.1.1"); if (!theUrl.hasQueryItem("SERVICE")) theUrl.addQueryItem("SERVICE", "WMS"); theUrl.removeQueryItem("TRANSPARENT"); theUrl.addQueryItem("TRANSPARENT", "TRUE"); theUrl.removeQueryItem("LAYERS"); theUrl.addQueryItem("LAYERS", edWmsLayers->text()); theUrl.removeQueryItem("SRS"); theUrl.addQueryItem("SRS", cbWmsProj->currentText()); theUrl.removeQueryItem("STYLES"); theUrl.addQueryItem("STYLES", cbWmsStyle->currentText()); theUrl.removeQueryItem("FORMAT"); theUrl.addQueryItem("FORMAT", cbWmsImgFormat->currentText()); edWmsUrl->setText(theUrl.toString()); } void WMSPreferencesDialog::addServer(const WmsServer & srv) { theWmsServers.push_back(srv); if (!srv.deleted) { QListWidgetItem* item = new QListWidgetItem(srv.WmsName); item->setData(Qt::UserRole, (int)(theWmsServers.size()-1)); lvWmsServers->addItem(item); } } void WMSPreferencesDialog::generateWmscLayer() { selWmscLayer.LayerName = edWmsLayers->text(); selWmscLayer.Projection = cbWmsProj->currentText(); selWmscLayer.Styles = cbWmsStyle->currentText(); selWmscLayer.ImgFormat = cbWmsImgFormat->currentText(); selWmscLayer.TileHeight = 256; selWmscLayer.TileWidth = 256; qreal startRes; if (selWmscLayer.Projection.contains("4326")) { selWmscLayer.BoundingBox = QRectF(QPointF(-180, -90.), QPointF(180., 90.)); startRes = 0.703125; } else { selWmscLayer.BoundingBox = QRectF(QPointF(-EQUATORIALMETERHALFCIRCUMFERENCE, -EQUATORIALMETERHALFCIRCUMFERENCE), QPointF(EQUATORIALMETERHALFCIRCUMFERENCE, EQUATORIALMETERHALFCIRCUMFERENCE)); startRes = 156543.03; } selWmscLayer.Resolutions.clear(); selWmscLayer.Resolutions << startRes; for (int i=1; i<sbZoomLevels->value(); ++i) { startRes /= 2.; selWmscLayer.Resolutions << startRes; } } void WMSPreferencesDialog::on_edWmsUrl_textEdited(const QString &newText) { QUrl u(newText); if (u.hasEncodedQueryItem("LAYERS")) edWmsLayers->setText(QUrl::fromPercentEncoding(u.queryItemValue("LAYERS").toLatin1())); if (u.hasEncodedQueryItem("SRS")) cbWmsProj->setEditText(QUrl::fromPercentEncoding(u.queryItemValue("SRS").toLatin1())); if (u.hasEncodedQueryItem("STYLES")) cbWmsStyle->setEditText(QUrl::fromPercentEncoding(u.queryItemValue("STYLES").toLatin1())); if (u.hasEncodedQueryItem("FORMAT")) cbWmsImgFormat->setEditText(QUrl::fromPercentEncoding(u.queryItemValue("FORMAT").toLatin1())); } void WMSPreferencesDialog::on_edWmsUrl_editingFinished() { QUrl u(edWmsUrl->text()); if (u.isValid() && !u.host().isEmpty() && !u.path().isEmpty()) { showCapabilities(); } } void WMSPreferencesDialog::on_btApplyWmsServer_clicked(void) { int idx = lvWmsServers->currentItem()->data(Qt::UserRole).toInt(); if (idx >= theWmsServers.size()) return; QUrl theUrl(edWmsUrl->text()); WmsServer& WS(theWmsServers[idx]); WS.WmsName = edWmsName->text(); WS.WmsAdress = theUrl.host(); if (theUrl.port() != -1) WS.WmsAdress += ":" + QString::number(theUrl.port()); WS.WmsPath = theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); WS.WmsLayers = edWmsLayers->text(); WS.WmsProjections = cbWmsProj->currentText(); WS.WmsStyles = cbWmsStyle->currentText(); WS.WmsImgFormat = cbWmsImgFormat->currentText(); if (cbTileIt->isChecked()) { isTiled = 2; generateWmscLayer(); } if (isTiled) { WS.WmsCLayer = selWmscLayer; WS.WmsProjections = selWmscLayer.Projection; WS.WmsImgFormat = selWmscLayer.ImgFormat; WS.WmsStyles = selWmscLayer.Styles; } WS.WmsIsTiled = isTiled; WS.WmsSourceTag = edSourceTag->text(); WS.WmsLicenseUrl = edLicenseUrl->text(); lvWmsServers->currentItem()->setText(WS.WmsName); selectedServer = WS.WmsName; } void WMSPreferencesDialog::on_btAddWmsServer_clicked(void) { QUrl theUrl(edWmsUrl->text()); QString theAdress = theUrl.host(); if (theUrl.port() != -1) theAdress += ":" + QString::number(theUrl.port()); if (cbTileIt->isChecked()) { isTiled = 2; generateWmscLayer(); } if (isTiled) addServer(WmsServer(edWmsName->text(), theAdress, theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority), edWmsLayers->text() , edSourceTag->text() , edLicenseUrl->text() , selWmscLayer.Projection, selWmscLayer.Styles, selWmscLayer.ImgFormat , isTiled, selWmscLayer)); else addServer(WmsServer(edWmsName->text(), theAdress, theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority), edWmsLayers->text() , edSourceTag->text() , edLicenseUrl->text() , cbWmsProj->currentText(), cbWmsStyle->currentText(), cbWmsImgFormat->currentText())); lvWmsServers->setCurrentRow(lvWmsServers->count() - 1); // on_lvWmsServers_itemSelectionChanged(); } void WMSPreferencesDialog::on_btDelWmsServer_clicked(void) { int idx = lvWmsServers->currentItem()->data(Qt::UserRole).toInt(); if (idx >= theWmsServers.size()) return; theWmsServers[idx].deleted = true; delete lvWmsServers->currentItem(); on_lvWmsServers_itemSelectionChanged(); } void WMSPreferencesDialog::on_lvWmsServers_itemSelectionChanged() { frTileIt->setEnabled(false); cbTileIt->setChecked(false); sbZoomLevels->setValue(0); lblWMSC->setVisible(false); frWmsSettings->setVisible(true); isTiled = 0; selWmscLayer = WmscLayer(); QListWidgetItem* it = lvWmsServers->item(lvWmsServers->currentRow()); int idx = it->data(Qt::UserRole).toInt(); if (idx >= theWmsServers.size()) return; WmsServer& WS(theWmsServers[idx]); edWmsName->setText(WS.WmsName); edWmsUrl->setText("http://" + WS.WmsAdress + WS.WmsPath); edWmsLayers->setText(WS.WmsLayers); cbWmsProj->setEditText(WS.WmsProjections); cbWmsStyle->setEditText(WS.WmsStyles); cbWmsImgFormat->setEditText(WS.WmsImgFormat); edSourceTag->setText(WS.WmsSourceTag); edLicenseUrl->setText(WS.WmsLicenseUrl); isTiled = WS.WmsIsTiled; if (isTiled > 0) selWmscLayer = WS.WmsCLayer; if (isTiled == 2) { frTileIt->setEnabled(true); cbTileIt->setChecked(true); sbZoomLevels->setValue(selWmscLayer.Resolutions.size()); } on_cbWmsProj_activated(WS.WmsProjections); selectedServer = WS.WmsName; if (curReply) { curReply->abort(); } QUrl u(edWmsUrl->text()); if (u.isValid() && !u.host().isEmpty() && !u.path().isEmpty()) { showCapabilities(); } } void WMSPreferencesDialog::on_cbWmsProj_activated(const QString &text) { frTileIt->setEnabled(false); if ( text.toUpper().contains("OSGEO:41001") || text.toUpper().contains("EPSG:3785") || text.toUpper().contains("EPSG:900913") || text.toUpper().contains("EPSG:3857") || text.toUpper().contains("EPSG:4326") ) { frTileIt->setEnabled(true); } updateUrl(); } void WMSPreferencesDialog::refreshStyles() { QStringList layers = edWmsLayers->text().split(','); QStringList theStyles; foreach(QString l, layers) { theStyles << styles[l]; } cbWmsStyle->setEditText(theStyles.join(",")); updateUrl(); } void WMSPreferencesDialog::on_cbWmsStyle_activated(int index) { QString style = cbWmsStyle->itemData(index).toString(); styles[curLayer] = style; refreshStyles(); } void WMSPreferencesDialog::on_cbWmsStyle_editTextChanged(const QString &/*newText*/) { updateUrl(); } void WMSPreferencesDialog::on_cbWmsImgFormat_activated(const QString &/*text*/) { updateUrl(); } QString WMSPreferencesDialog::getSelectedServer() { return selectedServer; } void WMSPreferencesDialog::setSelectedServer(QString theValue) { QList<QListWidgetItem *> L = lvWmsServers->findItems(theValue, Qt::MatchExactly); if (L.size()) { lvWmsServers->setCurrentItem(L[0]); on_lvWmsServers_itemSelectionChanged(); } } void WMSPreferencesDialog::on_buttonBox_clicked(QAbstractButton * button) { if (button == buttonBox->button(QDialogButtonBox::Apply)) { savePrefs(); } else if (button == buttonBox->button(QDialogButtonBox::Ok)) { savePrefs(); this->accept(); } } void WMSPreferencesDialog::loadPrefs() { WmsServerList* L = M_PREFS->getWmsServers(); WmsServerListIterator i(*L); while (i.hasNext()) { i.next(); addServer(i.value()); } } void WMSPreferencesDialog::savePrefs() { WmsServerList* L = M_PREFS->getWmsServers(); L->clear(); for (int i = 0; i < theWmsServers.size(); ++i) { WmsServer S(theWmsServers[i]); L->insert(theWmsServers[i].WmsName, S); } //M_PREFS->setSelectedWmsServer(getSelectedServer()); M_PREFS->save(); } void WMSPreferencesDialog::showCapabilities(void) { if (curReply) return; QUrl theUrl(edWmsUrl->text()); if ((theUrl.host() == "") || (theUrl.path() == "")) { QMessageBox::critical(this, tr("Merkaartor: GetCapabilities"), tr("Address and Path cannot be blank."), QMessageBox::Ok); } if (!theUrl.hasQueryItem("VERSION")) theUrl.addQueryItem("VERSION", "1.1.1"); if (!theUrl.hasQueryItem("SERVICE")) theUrl.addQueryItem("SERVICE", "WMS"); theUrl.removeAllQueryItems("LAYERS"); theUrl.removeAllQueryItems("SRS"); theUrl.removeAllQueryItems("FORMAT"); theUrl.removeAllQueryItems("STYLES"); theUrl.addQueryItem("REQUEST", "GetCapabilities"); // QUrl url(edWmsUrl->text() + "VERSION=1.1.1&SERVICE=WMS&request=GetCapabilities"); requestCapabilities(theUrl); } void WMSPreferencesDialog::requestCapabilities(QUrl url) { if (curReply) return; tvWmsLayers->clear(); QString oldSrs = cbWmsProj->currentText(); cbWmsProj->clear(); cbWmsProj->setEditText(oldSrs); QString oldFormat = cbWmsImgFormat->currentText(); cbWmsImgFormat->clear(); cbWmsImgFormat->setEditText(oldFormat); m_networkManager.setProxy(M_PREFS->getProxy(url)); QNetworkRequest req(url); req.setRawHeader("Host", url.host().toLatin1()); req.setRawHeader("User-Agent", USER_AGENT.toLatin1()); curReply = m_networkManager.get(req); } void WMSPreferencesDialog::httpRequestFinished(QNetworkReply * reply) { if (reply != curReply) return; int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (reply->error() != QNetworkReply::NoError) { if (reply->error() != QNetworkReply::OperationCanceledError) QMessageBox::critical(this, tr("Merkaartor: GetCapabilities"), tr("Error reading capabilities.\n") + reply->errorString(), QMessageBox::Ok); } else { switch (statusCode) { case 200: break; case 301: case 302: case 307: // Redirected requestCapabilities(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); curReply->deleteLater(); curReply = NULL; return; default: QMessageBox::information(this, tr("Merkaartor: GetCapabilities"), tr("Download failed: %1.") .arg(statusCode)); curReply->deleteLater(); curReply = NULL; return; } } lblWMSC->setVisible(false); frWmsSettings->setVisible(true); isTiled = 0; QDomDocument theXmlDoc; QByteArray buf; buf = reply->readAll(); // QString src(buf); // qDebug() << src; theXmlDoc.setContent(buf); curReply->deleteLater(); curReply = NULL; QDomElement docElem = theXmlDoc.documentElement(); if (edWmsName->text().isEmpty()) { QDomElement svcElem = docElem.firstChildElement("Service"); if (!svcElem.isNull()) { QDomNodeList aNodeList = svcElem.elementsByTagName("Title"); if (aNodeList.size()) edWmsName->setText(aNodeList.item(0).firstChild().nodeValue()); } } QDomElement capElem = docElem.firstChildElement("Capability"); if (capElem.isNull()) { // No "Capability" return; } srsList.clear(); styleList.clear(); QDomElement layElem = capElem.firstChildElement("Layer"); while(!layElem.isNull()) { QTreeWidgetItem* it = parseLayer(layElem, NULL); tvWmsLayers->addTopLevelItem(it); tvWmsLayers->expandItem(it); layElem = layElem.nextSiblingElement("Layer"); } QString oldStyle = cbWmsStyle->currentText(); // cbWmsProj->clear(); // srsList.sort(); // cbWmsProj->addItems(srsList); cbWmsStyle->setEditText(oldStyle); // on_cbWmsProj_currentIndexChanged(oldSrs); QDomElement reqElem = capElem.firstChildElement("Request"); QDomElement GetMapElem = reqElem.firstChildElement("GetMap"); QDomNodeList formatNodeList = GetMapElem.elementsByTagName("Format"); QStringList formatList; QString oldFormat = cbWmsImgFormat->currentText(); cbWmsImgFormat->clear(); for (int i=0; i<formatNodeList.size(); ++i) { if (!formatList.contains(formatNodeList.item(i).firstChild().nodeValue())) formatList.append(formatNodeList.item(i).firstChild().nodeValue()); } formatList.sort(); cbWmsImgFormat->addItems(formatList); cbWmsImgFormat->setEditText(oldFormat); on_cbWmsImgFormat_activated(oldFormat); QDomElement vendorElem = capElem.firstChildElement("VendorSpecificCapabilities"); if (!vendorElem.isNull()) { parseVendorSpecific(vendorElem); } } void WMSPreferencesDialog::parseVendorSpecific(QDomElement &vendorElem) { QDomElement elem = vendorElem.firstChildElement(); while(!elem.isNull()) { if (elem.tagName() == "TileSet") { WmscLayer aLayer; parseTileSet(elem, aLayer); if (!aLayer.LayerName.isNull()) wmscLayers << aLayer; } elem = elem.nextSiblingElement(); } } void WMSPreferencesDialog::parseTileSet(QDomElement &tilesetElem, WmscLayer &aLayer) { lblWMSC->setVisible(true); frWmsSettings->setVisible(false); isTiled = 1; QDomElement elem = tilesetElem.firstChildElement(); while(!elem.isNull()) { if (elem.tagName() == "Layers") { aLayer.LayerName = elem.firstChild().nodeValue(); } else if (elem.tagName() == "SRS") { aLayer.Projection = elem.firstChild().nodeValue(); } else if (elem.tagName() == "Format") { aLayer.ImgFormat = elem.firstChild().nodeValue(); } else if (elem.tagName() == "Styles") { aLayer.Styles = elem.firstChild().nodeValue(); } else if (elem.tagName() == "BoundingBox") { QPointF tl, br; tl.setX(elem.attribute("minx").toDouble()); tl.setY(elem.attribute("miny").toDouble()); br.setX(elem.attribute("maxx").toDouble()); br.setY(elem.attribute("maxy").toDouble()); aLayer.BoundingBox = QRectF(tl, br); } else if (elem.tagName() == "Resolutions") { QStringList resL; resL = elem.firstChild().nodeValue().split(" ", QString::SkipEmptyParts); foreach(QString res, resL) aLayer.Resolutions << res.toDouble(); } else if (elem.tagName() == "Width") { aLayer.TileWidth = elem.firstChild().nodeValue().toInt(); } else if (elem.tagName() == "Height") { aLayer.TileHeight = elem.firstChild().nodeValue().toInt(); } elem = elem.nextSiblingElement(); } } QTreeWidgetItem * WMSPreferencesDialog::parseLayer(const QDomElement& aLayerElem, QTreeWidgetItem* aLayerItem) { if (aLayerElem.tagName() != "Layer") return NULL; QDomElement title = aLayerElem.firstChildElement("Title"); QDomElement name = aLayerElem.firstChildElement("Name"); QTreeWidgetItem *newItem = new QTreeWidgetItem; newItem->setFlags(Qt::NoItemFlags |Qt::ItemIsEnabled); if (!name.isNull()) newItem->setText(0,name.firstChild().nodeValue()); else { if (!title.isNull()) newItem->setText(0,title.firstChild().nodeValue()); else newItem->setText(0,tr("Unnamed")); } if (!title.isNull()) newItem->setToolTip(0, title.firstChild().nodeValue()); QString theName; if (!name.isNull()) { theName = name.firstChild().nodeValue(); newItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); newItem->setData(0, Qt::UserRole, theName); newItem->setCheckState(0, Qt::Unchecked); foreach (QString s, edWmsLayers->text().split(',')) { if (theName == s) { newItem->setCheckState(0, Qt::Checked); break; } } } else { // newItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); } if (aLayerItem) aLayerItem->addChild(newItem); QStringList upSrsList; if (aLayerItem) upSrsList = srsList.value(aLayerItem->text(0)); QDomElement srsNode = aLayerElem.firstChildElement("SRS"); while (!srsNode.isNull()) { if (!upSrsList.contains(srsNode.firstChild().nodeValue())) upSrsList.append(srsNode.firstChild().nodeValue()); srsNode = srsNode.nextSiblingElement("SRS"); } srsList[newItem->text(0)] = upSrsList; QList <QPair<QString, QString> > upStyleList; if (aLayerItem) upStyleList = styleList.value(aLayerItem->text(0)); QDomElement styleNode = aLayerElem.firstChildElement("Style"); while (!styleNode.isNull()) { QDomElement title = styleNode.firstChildElement("Title"); QDomElement name = styleNode.firstChildElement("Name"); if (!name.isNull() && !upStyleList.contains(qMakePair(name.firstChild().nodeValue(), title.firstChild().nodeValue()))) upStyleList.append(qMakePair(name.firstChild().nodeValue(), title.firstChild().nodeValue())); styleNode = styleNode.nextSiblingElement("Style"); } styleList[newItem->text(0)] = upStyleList; QDomElement layElem = aLayerElem.firstChildElement("Layer"); while(!layElem.isNull()) { parseLayer(layElem, newItem); layElem = layElem.nextSiblingElement("Layer"); } tvWmsLayers->expandItem(newItem); return newItem; } void WMSPreferencesDialog::on_tvWmsLayers_itemChanged(QTreeWidgetItem *twi, int) { QStringList theLayers; bool hasSelection = false; if (isTiled == 1 && twi->checkState(0) == Qt::Checked) { theLayers.append(twi->data(0, Qt::UserRole).toString()); hasSelection = true; foreach(WmscLayer layer, wmscLayers) if (layer.LayerName == twi->data(0, Qt::UserRole).toString()) { selWmscLayer = layer; } } QTreeWidgetItemIterator it(tvWmsLayers); while (*it) { if ((*it)->checkState(0) == Qt::Checked) { if (isTiled == 1) { if (hasSelection && *it != twi) (*it)->setCheckState(0, Qt::Unchecked); } else { theLayers.append((*it)->data(0, Qt::UserRole).toString()); } } ++it; } edWmsLayers->setText(theLayers.join(",")); refreshStyles(); } void WMSPreferencesDialog::on_tvWmsLayers_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem */*previous*/) { if (current) curLayer = current->text(0); else return; QStringList theSRS = srsList[curLayer]; QString oldSrs = cbWmsProj->currentText(); cbWmsProj->clear(); theSRS.sort(); cbWmsProj->addItems(theSRS); cbWmsProj->setEditText(oldSrs); on_cbWmsProj_activated(oldSrs); QList <QPair<QString, QString> > theStyles = styleList[curLayer]; QString oldStyle = cbWmsStyle->currentText(); cbWmsStyle->clear(); QPair<QString, QString> aStyle; foreach(aStyle, theStyles) { cbWmsStyle->addItem(aStyle.second, QVariant(aStyle.first)); } cbWmsStyle->setEditText(oldStyle); on_cbWmsProj_activated(oldSrs); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/WMSPreferencesDialog.h��������������������������������������������0000664�0000000�0000000�00000007134�11770671653�0023143�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: WMSPreferencesDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef WMSPREFERENCESDIALOG_H #define WMSPREFERENCESDIALOG_H #include <QWidget> #include <QNetworkAccessManager> #include <QBuffer> #include <ui_WMSPreferencesDialog.h> #include "MerkaartorPreferences.h" #include <QList> #include <QtXml> /** @author cbro <cbro@semperpax.com> */ class WmsUrlValidator: public QValidator { public: explicit WmsUrlValidator(QObject * parent=0) : QValidator(parent) {} State validate ( QString & input, int & /*pos*/ ) const { QUrl u(input); if (!u.isValid()) return QValidator::Intermediate; if (u.hasEncodedQueryItem("BBOX")) u.removeEncodedQueryItem("BBOX"); if (u.hasEncodedQueryItem("REQUEST")) u.removeEncodedQueryItem("REQUEST"); if (u.hasEncodedQueryItem("WIDTH")) u.removeEncodedQueryItem("WIDTH"); if (u.hasEncodedQueryItem("HEIGHT")) u.removeEncodedQueryItem("HEIGHT"); if (u.hasEncodedQueryItem("TRANSPARENT")) u.removeEncodedQueryItem("TRANSPARENT"); if (u.hasEncodedQueryItem("tiled")) u.removeEncodedQueryItem("tiled"); input = u.toString(); return QValidator::Acceptable; } // virtual void fixup ( QString & input ) const // { // QUrl u(input); // if (!u.isValid()) // return; // if (u.hasEncodedQueryItem("BBOX")) { // u.removeEncodedQueryItem("BBOX"); // } // input = u.toString(); // } }; class WMSPreferencesDialog : public QDialog, public Ui::WMSPreferencesDialog { Q_OBJECT public: WMSPreferencesDialog(QWidget* parent = 0); ~WMSPreferencesDialog(); void addServer(const WmsServer & srv); public slots: void on_edWmsUrl_textEdited(const QString & newText); void on_edWmsUrl_editingFinished(); void on_btApplyWmsServer_clicked(); void on_btAddWmsServer_clicked(); void on_btDelWmsServer_clicked(); void showCapabilities(); void on_lvWmsServers_itemSelectionChanged(); void on_cbWmsProj_activated(const QString & text); void on_cbWmsStyle_activated ( int index ); void on_cbWmsStyle_editTextChanged(const QString & newText); void on_cbWmsImgFormat_activated(const QString &/*text*/); void httpRequestFinished(QNetworkReply * reply); void on_buttonBox_clicked(QAbstractButton * button); void on_tvWmsLayers_itemChanged(QTreeWidgetItem *, int); void on_tvWmsLayers_currentItemChanged ( QTreeWidgetItem * current, QTreeWidgetItem * previous ); private: void updateUrl(); void loadPrefs(); void savePrefs(); void requestCapabilities(QUrl url); QTreeWidgetItem * parseLayer(const QDomElement& aLayerElem, QTreeWidgetItem* aLayerItem); void parseVendorSpecific(QDomElement& vendorElem); void parseTileSet(QDomElement& tilesetElem, WmscLayer& aLayer); void refreshStyles(); public: QList<WmsServer> theWmsServers; QString getSelectedServer(); void setSelectedServer(QString theValue); private: void generateWmscLayer(); QString selectedServer; QNetworkAccessManager m_networkManager; QNetworkReply* curReply; int isTiled; QList<WmscLayer> wmscLayers; WmscLayer selWmscLayer; WmsUrlValidator wmsValid; QMap <QString, QStringList> srsList; QMap <QString, QList <QPair<QString, QString> > > styleList; QMap <QString, QString> styles; QString curLayer; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/WMSPreferencesDialog.ui�������������������������������������������0000664�0000000�0000000�00000031751�11770671653�0023333�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>WMSPreferencesDialog</class> <widget class="QDialog" name="WMSPreferencesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>586</width> <height>583</height> </rect> </property> <property name="windowTitle"> <string>WMS servers setup</string> </property> <layout class="QVBoxLayout"> <item> <widget class="QGroupBox" name="grpWmsServers"> <property name="title"> <string>WMS Servers</string> </property> <layout class="QHBoxLayout"> <property name="spacing"> <number>1</number> </property> <property name="margin"> <number>1</number> </property> <item> <widget class="QFrame" name="frame_2"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>5</number> </property> <property name="margin"> <number>5</number> </property> <item> <widget class="QLabel" name="label_10"> <property name="text"> <string>Server list:</string> </property> </widget> </item> <item> <widget class="QListWidget" name="lvWmsServers"> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QFrame" name="frame"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QLabel" name="label_11"> <property name="text"> <string>Name:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edWmsName"> <property name="minimumSize"> <size> <width>100</width> <height>0</height> </size> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QLabel" name="label_5"> <property name="text"> <string>Server Url:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edWmsUrl"/> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> <widget class="QLabel" name="label_7"> <property name="text"> <string>Layers:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edWmsLayers"/> </item> </layout> </item> <item> <widget class="Line" name="line"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> <widget class="QTreeWidget" name="tvWmsLayers"> <property name="headerHidden"> <bool>true</bool> </property> <column> <property name="text"> <string>1</string> </property> </column> </widget> </item> <item> <widget class="QLabel" name="lblWMSC"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></string> </property> <property name="openExternalLinks"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QFrame" name="frWmsSettings"> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout_6"> <item> <widget class="QLabel" name="label_8"> <property name="text"> <string>Projection:</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbWmsProj"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="editable"> <bool>true</bool> </property> </widget> </item> </layout> </item> <item> <widget class="QWidget" name="frTileIt" native="true"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QCheckBox" name="cbTileIt"> <property name="text"> <string>Tile it</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>Zoom levels</string> </property> </widget> </item> <item> <widget class="QSpinBox" name="sbZoomLevels"> <property name="maximum"> <number>99</number> </property> <property name="value"> <number>17</number> </property> </widget> </item> </layout> <zorder>cbTileIt</zorder> <zorder>label_2</zorder> <zorder>sbZoomLevels</zorder> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Image format:</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbWmsImgFormat"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="editable"> <bool>true</bool> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_8"> <item> <widget class="QLabel" name="label_9"> <property name="text"> <string>Styles:</string> </property> </widget> </item> <item> <widget class="QComboBox" name="cbWmsStyle"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="editable"> <bool>true</bool> </property> <property name="insertPolicy"> <enum>QComboBox::NoInsert</enum> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_9"> <item> <widget class="QLabel" name="label_3"> <property name="text"> <string>"source" tag value:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edSourceTag"/> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_10"> <item> <widget class="QLabel" name="label_4"> <property name="text"> <string>License URL:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edLicenseUrl"/> </item> </layout> </item> <item> <spacer> <property name="orientation"> <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>20</width> <height>1</height> </size> </property> </spacer> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QPushButton" name="btApplyWmsServer"> <property name="text"> <string>Apply</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btAddWmsServer"> <property name="text"> <string>Add</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btDelWmsServer"> <property name="text"> <string>Remove</string> </property> </widget> </item> </layout> </item> </layout> </widget> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>WMSPreferencesDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>WMSPreferencesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> �����������������������merkaartor-0.18.1/src/Preferences/WmsServersList.cpp������������������������������������������������0000664�0000000�0000000�00000016570�11770671653�0022506�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: WMSServersList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #include <QApplication> #include "WmsServersList.h" #include "MerkaartorPreferences.h" WmsServer::WmsServer() { WmsServer(QApplication::translate("MerkaartorPreferences","New Server"), "", "", "", "", "", "", "", ""); } WmsServer::WmsServer(QString Name, QString Adress, QString Path, QString Layers , QString SourceTag , QString LicenseUrl , QString Projections, QString Styles, QString ImgFormat , int IsTiled , WmscLayer CLayer , bool Deleted ) : WmsName(Name), WmsAdress(Adress), WmsPath(Path), WmsLayers(Layers) , WmsLicenseUrl(LicenseUrl) , WmsSourceTag(SourceTag) , WmsProjections(Projections), WmsStyles(Styles), WmsImgFormat(ImgFormat) , WmsIsTiled(IsTiled) , WmsCLayer(CLayer) , deleted(Deleted) { if (Name == "") { WmsName = QApplication::translate("MerkaartorPreferences","New Server"); } } void WmsServer::toXml(QDomElement parent) { QDomElement p = parent.ownerDocument().createElement("WmsServer"); parent.appendChild(p); p.setAttribute("name", WmsName); p.setAttribute("address", WmsAdress); p.setAttribute("path", WmsPath); p.setAttribute("projections", WmsProjections); if (!WmsLayers.isEmpty()) p.setAttribute("layers", WmsLayers); if (!WmsStyles.isEmpty()) p.setAttribute("styles", WmsStyles); if (!WmsImgFormat.isEmpty()) p.setAttribute("format", WmsImgFormat); if (!WmsSourceTag.isEmpty()) p.setAttribute("sourcetag", WmsSourceTag); if (!WmsLicenseUrl.isEmpty()) p.setAttribute("licenseurl", WmsLicenseUrl); if (deleted) p.setAttribute("deleted", "true"); if (WmsIsTiled > 0) { QDomElement c; switch (WmsIsTiled) { case 1: c = parent.ownerDocument().createElement("WMS-C"); break; case 2: c = parent.ownerDocument().createElement("Tiling"); break; } p.appendChild(c); c.setAttribute("TileWidth", WmsCLayer.TileWidth); c.setAttribute("TileHeight", WmsCLayer.TileHeight); QDomElement bb = parent.ownerDocument().createElement("BoundingBox"); c.appendChild(bb); bb.setAttribute("minx", WmsCLayer.BoundingBox.left()); bb.setAttribute("miny", WmsCLayer.BoundingBox.top()); bb.setAttribute("maxx", WmsCLayer.BoundingBox.right()); bb.setAttribute("maxy", WmsCLayer.BoundingBox.bottom()); QDomElement r = parent.ownerDocument().createElement("Resolutions"); c.appendChild(r); QStringList slr; foreach(qreal z, WmsCLayer.Resolutions) { slr << QString::number(z); } r.appendChild(parent.ownerDocument().createTextNode(slr.join(" "))); } } WmsServer WmsServer::fromXml(QDomElement parent) { WmsServer theServer; if (parent.tagName() == "WmsServer") { theServer.WmsName = parent.attribute("name"); theServer.WmsAdress = parent.attribute("address"); theServer.WmsPath = parent.attribute("path"); theServer.WmsLayers = parent.attribute("layers"); theServer.WmsProjections = parent.attribute("projections"); theServer.WmsStyles = parent.attribute("styles"); theServer.WmsImgFormat = parent.attribute("format"); theServer.WmsSourceTag = parent.attribute("sourcetag"); theServer.WmsLicenseUrl = parent.attribute("licenseurl"); theServer.deleted = (parent.attribute("deleted") == "true" ? true : false); theServer.WmsIsTiled = 0; QDomElement wmscElem = parent.firstChildElement("WMS-C"); if (wmscElem.isNull()) { wmscElem = parent.firstChildElement("Tiling"); if (!wmscElem.isNull()) theServer.WmsIsTiled = 2; } else theServer.WmsIsTiled = 1; if (!wmscElem.isNull()) { theServer.WmsCLayer.LayerName = theServer.WmsLayers; theServer.WmsCLayer.Projection = theServer.WmsProjections; theServer.WmsCLayer.Styles = theServer.WmsStyles; theServer.WmsCLayer.TileHeight = wmscElem.attribute("TileHeight").toInt(); theServer.WmsCLayer.TileWidth = wmscElem.attribute("TileWidth").toInt(); QDomElement bb = wmscElem.firstChildElement("BoundingBox"); if (!bb.isNull()) { qreal minx = bb.attribute("minx").toDouble(); qreal miny = bb.attribute("miny").toDouble(); qreal maxx = bb.attribute("maxx").toDouble(); qreal maxy = bb.attribute("maxy").toDouble(); theServer.WmsCLayer.BoundingBox = QRectF(QPointF(minx, miny), QPointF(maxx, maxy)); } QDomElement r = wmscElem.firstChildElement("Resolutions"); if (!r.isNull()) { QStringList resL; resL = r.firstChild().toText().nodeValue().split(" ", QString::SkipEmptyParts); foreach(QString res, resL) theServer.WmsCLayer.Resolutions << res.toDouble(); } } } return theServer; } /** **/ void WmsServersList::add(WmsServersList aWmsServersList) { QMapIterator <QString, WmsServer> it(*(aWmsServersList.getServers())); while (it.hasNext()) { it.next(); WmsServer anItem = it.value(); if (!theServers.contains(anItem.WmsName)) theServers.insert(anItem.WmsName, anItem); } } WmsServerList* WmsServersList::getServers() { return &theServers; } void WmsServersList::addServer(WmsServer aServer) { theServers.insert(aServer.WmsName, aServer); } bool WmsServersList::contains(QString name) const { if (theServers.contains(name)) return true; else { WmsServerListIterator it(theServers); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return true; } } return false; } WmsServer WmsServersList::getServer(QString name) const { if (theServers.contains(name)) return theServers.value(name); else { WmsServerListIterator it(theServers); while (it.hasNext()) { it.next(); if (it.key().contains(name, Qt::CaseInsensitive)) return it.value(); } } return WmsServer(); } void WmsServersList::toXml(QDomElement parent) { QDomElement rt = parent.ownerDocument().createElement("WmsServers"); parent.appendChild(rt); rt.setAttribute("creator", QString("%1 v%2%3").arg(STRINGIFY(PRODUCT)).arg(STRINGIFY(VERSION)).arg(STRINGIFY(REVISION))); WmsServerListIterator it(theServers); while (it.hasNext()) { it.next(); WmsServer i = it.value(); i.toXml(rt); } } WmsServersList WmsServersList::fromXml(QDomElement parent) { WmsServersList theServersList; if (parent.nodeName() == "WmsServers") { QDomElement c = parent.firstChildElement(); while(!c.isNull()) { if (c.tagName() == "WmsServer") { theServersList.addServer(WmsServer::fromXml(c)); } c = c.nextSiblingElement(); } } return theServersList; } ����������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Preferences/WmsServersList.h��������������������������������������������������0000664�0000000�0000000�00000003642�11770671653�0022147�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: WMSServersList // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2009 // // Copyright: See COPYING file that comes with this distribution // // #ifndef WMSSERVERS_LIST_H #define WMSSERVERS_LIST_H #include <QString> #include <QMap> #include <QtXml> #include "Coord.h" class WmscLayer { public: QString LayerName; QString Projection; QString Styles; QString ImgFormat; QRectF BoundingBox; QList<qreal> Resolutions; int TileWidth; int TileHeight; }; class WmsServer { public: WmsServer(); WmsServer(QString Name, QString Adress, QString Path, QString Layers , QString SourceTag , QString LicenseUrl , QString Projections, QString Styles, QString ImgFormat , int IsTiled = 0 , WmscLayer CLayer = WmscLayer() , bool Deleted=false ); void toXml(QDomElement parent); static WmsServer fromXml(QDomElement parent); public: QString WmsName; QString WmsAdress; QString WmsPath; QString WmsLayers; QString WmsSourceTag; QString WmsLicenseUrl; QString WmsProjections; QString WmsStyles; QString WmsImgFormat; int WmsIsTiled; WmscLayer WmsCLayer; bool deleted; }; typedef QMap<QString, WmsServer> WmsServerList; typedef QMapIterator<QString, WmsServer> WmsServerListIterator; class WmsServersList { public: void add(WmsServersList aWmsServersList); void addServer(WmsServer aServer); bool contains(QString name) const; WmsServerList* getServers(); WmsServer getServer(QString name) const; void toXml(QDomElement parent); static WmsServersList fromXml(QDomElement parent); private: WmsServerList theServers; }; #endif // WMSSERVERS_LIST_H ����������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl.pri���������������������������������������������������������������0000664�0000000�0000000�00000001522�11770671653�0017467�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/QMapControl DEPENDPATH += $$MERKAARTOR_SRC_DIR/QMapControl # Input HEADERS += \ imagemanager.h \ mapadapter.h \ mapnetwork.h \ wmsmapadapter.h \ WmscMapAdapter.h \ tilemapadapter.h SOURCES += \ IImageManager.cpp \ imagemanager.cpp \ mapadapter.cpp \ mapnetwork.cpp \ wmsmapadapter.cpp \ WmscMapAdapter.cpp \ tilemapadapter.cpp QT += network !contains(NOUSEWEBKIT,1) { greaterThan(QT_VER_MAJ, 3) : greaterThan(QT_VER_MIN, 3) { DEFINES += USE_WEBKIT SOURCES += browserimagemanager.cpp HEADERS += browserimagemanager.h QT += webkit contains(THREADED_BROWSERIMAGEMANAGER,1): DEFINES += BROWSERIMAGEMANAGER_IS_THREADED } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016753�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/WmscMapAdapter.cpp������������������������������������������������0000664�0000000�0000000�00000012510�11770671653�0022326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "WmscMapAdapter.h" WmscMapAdapter::WmscMapAdapter(WmsServer aServer) : MapAdapter("", "", 0, 0), theServer(aServer) { // :MapAdapter(host, serverPath, tilesize, minZoom, maxZoom) name = theServer.WmsName; host = theServer.WmsAdress; serverPath = theServer.WmsPath; tilesize = theServer.WmsCLayer.TileWidth; max_zoom = theServer.WmsCLayer.Resolutions.size() - 1; loc.setNumberOptions(QLocale::OmitGroupSeparator); } WmscMapAdapter::~WmscMapAdapter() { } QUuid WmscMapAdapter::getId() const { return QUuid("{E238750A-AC27-429e-995C-A60C17B9A1E0}"); } IMapAdapter::Type WmscMapAdapter::getType() const { return IMapAdapter::NetworkBackground; } QString WmscMapAdapter::projection() const { return theServer.WmsProjections; } QRectF WmscMapAdapter::getBoundingbox() const { return theServer.WmsCLayer.BoundingBox; } int WmscMapAdapter::getTileSizeW() const { return tilesize; } int WmscMapAdapter::getTileSizeH() const { return tilesize; } void WmscMapAdapter::zoom_in() { current_zoom = current_zoom < max_zoom ? current_zoom+1 : max_zoom; } void WmscMapAdapter::zoom_out() { current_zoom = current_zoom > min_zoom ? current_zoom-1 : min_zoom; } QString WmscMapAdapter::getQuery(int i, int j, int /* z */) const { // WMS-C Y origin is lower left // j = getTilesNS(current_zoom)-1 - j; qreal tileWidth = getBoundingbox().width() / getTilesWE(current_zoom); qreal tileHeight = getBoundingbox().height() / getTilesNS(current_zoom); QPointF ul = QPointF(i*tileWidth+getBoundingbox().topLeft().x(), getBoundingbox().bottomLeft().y()-j*tileHeight); QPointF br = QPointF((i+1)*tileWidth+getBoundingbox().topLeft().x(), getBoundingbox().bottomLeft().y()- (j+1)*tileHeight); QUrl theUrl(theServer.WmsPath); if (!theUrl.hasQueryItem("VERSION")) theUrl.addQueryItem("VERSION", "1.1.1"); if (!theUrl.hasQueryItem("SERVICE")) theUrl.addQueryItem("SERVICE", "WMS"); theUrl.addQueryItem("REQUEST", "GetMap"); if (!theUrl.hasQueryItem("TRANSPARENT")) theUrl.addQueryItem("TRANSPARENT", "TRUE"); if (!theUrl.hasQueryItem("LAYERS")) theUrl.addQueryItem("LAYERS", theServer.WmsLayers); if (!theUrl.hasQueryItem("SRS")) theUrl.addQueryItem("SRS", theServer.WmsProjections); if (!theUrl.hasQueryItem("STYLES")) theUrl.addQueryItem("STYLES", theServer.WmsStyles); if (!theUrl.hasQueryItem("FORMAT")) theUrl.addQueryItem("FORMAT", theServer.WmsImgFormat); theUrl.addQueryItem("WIDTH", QString::number(getTileSizeW())); theUrl.addQueryItem("HEIGHT", QString::number(getTileSizeH())); theUrl.addQueryItem("BBOX", QString() .append(loc.toString(ul.x(),'f',6)).append(",") .append(loc.toString(br.y(),'f',6)).append(",") .append(loc.toString(br.x(),'f',6)).append(",") .append(loc.toString(ul.y(),'f',6)) ); if (theServer.WmsIsTiled == 1) theUrl.addQueryItem("tiled", "true"); return theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); } bool WmscMapAdapter::isValid(int x, int y, int z) const { // Origin is bottom-left y = getTilesNS(current_zoom)-1 - y; if ((x<0) || (x>=getTilesWE(z)) || (y<0) || (y>=getTilesNS(z))) { return false; } return true; } int WmscMapAdapter::getTilesWE(int zoomlevel) const { qreal unitPerTile = theServer.WmsCLayer.Resolutions[zoomlevel] * getTileSizeW(); // Size of 1 tile in projected units return qRound(getBoundingbox().width() / unitPerTile); } int WmscMapAdapter::getTilesNS(int zoomlevel) const { qreal unitPerTile = theServer.WmsCLayer.Resolutions[zoomlevel] * getTileSizeH(); // Size of 1 tile in projected units return qRound(getBoundingbox().height() / unitPerTile); } QString WmscMapAdapter::getSourceTag() const { return theServer.WmsSourceTag; } QString WmscMapAdapter::getLicenseUrl() const { return theServer.WmsLicenseUrl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/WmscMapAdapter.h��������������������������������������������������0000664�0000000�0000000�00000010245�11770671653�0021776�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef WMSCMAPADAPTER_H #define WMSCMAPADAPTER_H #include "mapadapter.h" #include "WmsServersList.h" //! MapAdapter for servers with image tiles /*! * Use this derived MapAdapter to display maps from OpenStreetMap * @author Kai Winter <kaiwinter@gmx.de> */ class WmscMapAdapter : public MapAdapter { public: //! constructor /*! * Sample of a correct initialization of a MapAdapter:<br/> * TileMapAdapter* ta = new TileMapAdapter("192.168.8.1", "/img/img_cache.php/%1/%2/%3.png", 256, 0,17);<br/> * The placeholders %1, %2, %3 stands for x, y, z<br/> * The minZoom is 0 (means the whole world is visible). The maxZoom is 17 (means it is zoomed in to the max) * @param host The servers URL * @param serverPath The path to the tiles with placeholders * @param tilesize the size of the tiles * @param minZoom the minimum zoom level * @param maxZoom the maximum zoom level */ WmscMapAdapter(WmsServer aServer); virtual ~WmscMapAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const; virtual int getTileSizeH () const; //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag() const; virtual void setSourceTag (const QString& ) {} //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const; qreal PI; virtual void zoom_in(); virtual void zoom_out(); virtual bool isValid(int x, int y, int z) const; virtual QString getQuery(int x, int y, int z) const; virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& /* wgs84Bbox */, const QRectF& /* projBbox */, const QRect& /* size */) const { return QPixmap(); } virtual QString projection() const; virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return true; } virtual int getTilesWE(int zoomlevel) const; virtual int getTilesNS(int zoomlevel) const; virtual void cleanup() {} virtual bool toXML(QXmlStreamWriter& /*stream*/) { return true; } virtual void fromXML(QXmlStreamReader& /*xParent*/) {} virtual QString toPropertiesHtml() {return "";} virtual void setSettings(QSettings* /*aSet*/) {} protected: WmsServer theServer; int tilesize; }; #endif //WMSCMAPADAPTER_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/browserimagemanager.cpp�������������������������������������������0000664�0000000�0000000�00000027124�11770671653�0023506�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "browserimagemanager.h" #include "MerkaartorPreferences.h" #include <QApplication> #include <QDateTime> #include <QPixmapCache> #include <QPainter> #include <QMessageBox> #include <QCryptographicHash> #include <QTimer> #include <QMutex> #include <QNetworkProxy> #include <QNetworkAccessManager> #include "IMapAdapter.h" #define MAX_REQ 1 #define BROWSER_TILE_SIZE 512 #define str(x) # x void BrowserWebPage::javaScriptConsoleMessage ( const QString & message, int lineNumber, const QString & sourceID ) { Q_UNUSED(message) Q_UNUSED(lineNumber) Q_UNUSED(sourceID) // FIXME Seems to crash at times (see http://trac.openstreetmap.org/ticket/1194) //QString s = QString("%1 at %2, %3").arg(message).arg(QString::number(lineNumber)).arg(sourceID); //printf("%s\n", s); } void BrowserWebPage::javaScriptAlert ( QWebFrame * frame, const QString & msg ) { Q_UNUSED(frame) //QMessageBox::information(NULL, tr("Javascript alert"), msg); if (msg.startsWith("Coord")) { tllat = 90.0; tllon = -180.0; brlat = -90.0; brlon = 180.0; QStringList tokens = msg.split(" "); Q_ASSERT(tokens.size() == 5); tllat = tokens[1].toDouble(); tllon = tokens[2].toDouble(); brlat = tokens[3].toDouble(); brlon = tokens[4].toDouble(); qDebug() << "Coord: " << tllat << ", " << tllon << ", " << brlat << "," << brlon; } else if (msg.startsWith("Size")) { sw = BROWSER_TILE_SIZE; sh = BROWSER_TILE_SIZE; QStringList tokens = msg.split(" "); Q_ASSERT(tokens.size() == 5); int ox, oy, x1, y1; ox = int(tokens[1].toDouble()); oy = int(tokens[2].toDouble()); x1 = int(tokens[3].toDouble()); y1 = int(tokens[4].toDouble()); qDebug() << "Size: " << ox << ", " << oy << ", " << x1 << "," << y1; sw = x1 - ox; sh = y1 - oy; qDebug() << "---- " << sw << ", " << sh; } if (msg.startsWith("ReqSize")) { QStringList tokens = msg.split(" "); Q_ASSERT(tokens.size() == 3); int w, h; w = int(tokens[1].toDouble()); h = int(tokens[2].toDouble()); qDebug() << "ReqSize: " << w << ", " << h ; } } void BrowserWebPage::launchRequest ( const QUrl & url ) { sw = sh = 0; mainFrame()->load(url); } BrowserImageManager* BrowserImageManager::m_BrowserImageManagerInstance = 0; QMutex mutex; #ifdef BROWSERIMAGEMANAGER_IS_THREADED BrowserImageManager::BrowserImageManager(QObject* parent) :QThread(parent), emptyPixmap(QPixmap(1,1)), requestActive(false), page(0) { emptyPixmap.fill(Qt::transparent); if (QPixmapCache::cacheLimit() <= 20000) { QPixmapCache::setCacheLimit(20000); // in kb } } #else BrowserImageManager::BrowserImageManager(QObject* parent) :QObject(parent), emptyPixmap(QPixmap(1,1)), errorPixmap(QPixmap(512,512)), page(0) { errorPixmap.fill(Qt::gray); QPainter P(&errorPixmap); P.fillRect(0, 0, 511, 511, QBrush(Qt::red, Qt::DiagCrossPattern)); emptyPixmap.fill(Qt::transparent); if (QPixmapCache::cacheLimit() <= 20000) { QPixmapCache::setCacheLimit(20000); // in kb } page = new BrowserWebPage(); page->setNetworkAccessManager(m_networkManager); page->setViewportSize(QSize(1024, 1024)); connect(page, SIGNAL(loadFinished(bool)), this, SLOT(pageLoadFinished(bool))); timeoutTimer = new QTimer(); connect(timeoutTimer, SIGNAL(timeout()), this, SLOT(timeout())); timeoutTimer->setInterval(M_PREFS->getNetworkTimeout()); // QWebView* theVw = new QWebView((QWidget*)parent); // theVw->setPage(page); // theVw->show(); } #endif // BROWSERIMAGEMANAGER_IS_THREADED BrowserImageManager::~BrowserImageManager() { delete timeoutTimer; } QByteArray BrowserImageManager::getData(IMapAdapter* anAdapter, QString url) { QImage pm = getImage(anAdapter, url); QBuffer buf; pm.save(&buf); return buf.buffer(); } QImage BrowserImageManager::getImage(IMapAdapter* anAdapter, QString url) { // QPixmap pm(emptyPixmap); QPixmap pm; QString host = anAdapter->getHost(); QString strHash = QString("%1%2").arg(anAdapter->getName()).arg(url); QString hash = QString(strHash.toAscii().toBase64()); if (hash.size() > 255) { QCryptographicHash crypt(QCryptographicHash::Md5); crypt.addData(hash.toLatin1()); hash = QString(crypt.result().toHex()); } // is image in picture cache if (QPixmapCache::find(hash, pm)) { qDebug() << "BrowserImageManager::QPixmapCache hit!"; return pm.toImage(); } // disk cache? if (anAdapter->isTiled() && useDiskCache(hash + ".png")) { if (pm.load(cacheDir.absolutePath() + "/" + hash + ".png")) { QPixmapCache::insert(hash, pm); return pm.toImage(); } } if (M_PREFS->getOfflineMode()) return pm.toImage(); LoadingRequest LR(hash, host, url); if (loadingRequests.contains(LR)) return pm.toImage(); loadingRequests.enqueue(LR); emit(dataRequested()); #ifndef BROWSERIMAGEMANAGER_IS_THREADED if (loadingRequests.size() <= MAX_REQ) launchRequest(); #endif return pm.toImage(); } void BrowserImageManager::launchRequest() { if (loadingRequests.isEmpty()) return; // LoadingRequest* R = loadingRequests.dequeue(); LoadingRequest R = loadingRequests.head(); qDebug() << "BrowserImageManager::launchRequest: " << QString(R.host).append(R.url) << " Hash: " << R.hash; QUrl u = QUrl( R.url); page->networkAccessManager()->setProxy(M_PREFS->getProxy(u)); page->launchRequest(u); requestActive = true; #ifndef BROWSERIMAGEMANAGER_IS_THREADED timeoutTimer->start(); #endif } void BrowserImageManager::pageLoadFinished(bool ok) { mutex.lock(); timeoutTimer->stop(); if (loadingRequests.isEmpty()) { mutex.unlock(); return; } LoadingRequest R = loadingRequests.dequeue(); requestActive = false; if (ok && page->sw && page->sh) { qDebug() << "BrowserImageManager::pageLoadFinished: " << " Hash: " << R.hash; QPixmap pt(page->sw, page->sh); QPainter P(&pt); page->mainFrame()->render(&P, QRegion(0,0,page->sw,page->sh)); P.end(); // if (page->sw != BROWSER_TILE_SIZE || page->sh != BROWSER_TILE_SIZE) { // QPixmap tmpPx = pt.scaled(QSize(BROWSER_TILE_SIZE, BROWSER_TILE_SIZE)); // pt = tmpPx; // } if (!(pt.isNull())) { QPixmapCache::insert(R.hash, pt); QString strHash = QByteArray::fromBase64(R.hash.toAscii()); if (cacheMaxSize && !strHash.startsWith("Yahoo")) { pt.save(cacheDir.absolutePath() + "/" + R.hash + ".png"); QFileInfo info(cacheDir.absolutePath() + "/" + R.hash + ".png"); cacheInfo.append(info); cacheSize += info.size(); adaptCache(); } } QByteArray ba; QHash<QString, QString> headers; receivedData(ba, headers, R.hash); } else { loadingRequests.enqueue(R); qDebug() << "BrowserImageManager::pageLoadFinished - Error: " << " Hash: " << R.hash; } mutex.unlock(); if (loadingRequests.isEmpty()) loadingQueueEmpty(); #ifndef BROWSERIMAGEMANAGER_IS_THREADED else launchRequest(); #endif } void BrowserImageManager::slotLoadProgress(int p) { if (!(p < 100)) { } } //QPixmap BrowserImageManager::prefetchImage(const QString& host, const QString& url) QImage BrowserImageManager::prefetchImage(IMapAdapter* anAdapter, int x, int y, int z) { QString host = anAdapter->getHost(); QString url = anAdapter->getQuery(x, y, z); QString strHash = QString("%1;%2;%3;%4;%5").arg(anAdapter->getName()).arg(QString::number(x)).arg(QString::number(y)).arg(QString::number(z)).arg(anAdapter->getTileSizeW()); QString hash = QString(strHash.toAscii().toBase64()); prefetch.append(hash); return getImage(anAdapter, anAdapter->getQuery(x, y, z)); } void BrowserImageManager::receivedData(const QByteArray& /* ba */, const QHash<QString, QString>& /* headers */, const QString& hash) { if (prefetch.contains(hash)) { prefetch.removeAt(prefetch.indexOf(hash)); } emit(dataReceived()); } void BrowserImageManager::loadingQueueEmpty() { emit(loadingFinished()); } void BrowserImageManager::abortLoading() { //qDebug() << "BrowserImageManager::abortLoading"; page->triggerAction(QWebPage::Stop); if (!loadingRequests.isEmpty()) { LoadingRequest R = loadingRequests.dequeue(); loadingRequests.clear(); loadingRequests.enqueue(R); } loadingQueueEmpty(); } #ifdef BROWSERIMAGEMANAGER_IS_THREADED void BrowserImageManager::run() { page = new BrowserWebPage(); page->setViewportSize(QSize(1024, 1024)); QTimer theTimer; theTimer.start(100); connect(page, SIGNAL(loadFinished(bool)), this, SLOT(pageLoadFinished(bool))); connect (&theTimer, SIGNAL(timeout()), this, SLOT(checkRequests()), Qt::DirectConnection); exec(); delete page; } void BrowserImageManager::checkRequests() { mutex.lock(); if (!requestActive) { requestDuration = 0; launchRequest(); } else { if ((requestDuration++) > 100) { requestDuration = 0; page->triggerAction(QWebPage::Stop); qDebug() << "BrowserImageManager Timeout"; } } mutex.unlock(); } #else void BrowserImageManager::timeout() { qDebug() << "BrowserImageManager::timeout"; page->triggerAction(QWebPage::Stop); pageLoadFinished(false); } #endif // BROWSERIMAGEMANAGER_IS_THREADED void BrowserImageManager::setCacheDir(const QDir& path) { cacheDir = path; cacheSize = 0; if (!cacheDir.exists()) { cacheDir.mkpath(cacheDir.absolutePath()); } else { cacheInfo = cacheDir.entryInfoList(QDir::Files, QDir::Time | QDir::Reversed); for (int i=0; i<cacheInfo.size(); i++) { cacheSize += cacheInfo[i].size(); } } } QDir BrowserImageManager::getCacheDir() { return cacheDir; } void BrowserImageManager::setCacheMaxSize(int max) { cacheMaxSize = max*1024*1024; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/browserimagemanager.h���������������������������������������������0000664�0000000�0000000�00000011713�11770671653�0023150�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2008 by Chris Browet * * cbro@semperpax.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef BROWSERIMAGEMANAGER_H #define BROWSERIMAGEMANAGER_H #include <QObject> #include <QPixmap> #include <QtNetwork/QtNetwork> #include "qwebframe.h" #include "qwebhistory.h" #include "qwebhistoryinterface.h" #include "qwebkitglobal.h" #include "qwebpage.h" #include "qwebpluginfactory.h" #include "qwebsettings.h" #include "qwebview.h" #include <QThread> #include "IImageManager.h" /** @author Chris Browet <cbro@semperpax.com> */ class BrowserWebPage : public QWebPage { friend class BrowserImageManager; protected: virtual void javaScriptConsoleMessage ( const QString & message, int lineNumber, const QString & sourceID ); virtual void javaScriptAlert ( QWebFrame * frame, const QString & msg ) ; void launchRequest ( const QUrl & url ); private: qreal tllat, tllon; qreal brlat, brlon; int ox, oy, sw, sh; }; #ifdef BROWSERIMAGEMANAGER_IS_THREADED class BrowserImageManager : public QThread, public IImageManager #else class BrowserImageManager : public QObject, public IImageManager #endif { Q_OBJECT; public: BrowserImageManager(QObject* parent = 0); BrowserImageManager(const BrowserImageManager&); BrowserImageManager& operator=(const BrowserImageManager&); ~BrowserImageManager(); //! returns a QPixmap of the asked image /*! * If this component doesn´t have the image a network query gets started to load it. * @param host the host of the image * @param path the path to the image * @return the pixmap of the asked image */ QImage getImage(IMapAdapter* anAdapter, QString url); QByteArray getData(IMapAdapter* anAdapter, QString url); //QPixmap prefetchImage(const QString& host, const QString& path); QImage prefetchImage(IMapAdapter* anAdapter, int x, int y, int z); void receivedData(const QByteArray& ba, const QHash<QString, QString>& headers, const QString& url); /*! * This method is called by MapNetwork, after all images in its queue were loaded. * The BrowserImageManager emits a signal, which is used in MapControl to remove the zoom image. * The zoom image should be removed on Tile Images with transparency. * Else the zoom image stay visible behind the newly loaded tiles. */ void loadingQueueEmpty(); /*! * Aborts all current loading threads. * This is useful when changing the zoom-factor, though newly needed images loads faster */ void abortLoading(); void setCacheDir(const QDir& path); QDir getCacheDir(); void setCacheMaxSize(int max); private: QPixmap emptyPixmap; QPixmap errorPixmap; QList<QString> prefetch; QQueue<LoadingRequest> loadingRequests; bool requestActive; int requestDuration; void launchRequest(); static BrowserImageManager* m_BrowserImageManagerInstance; BrowserWebPage* page; QWebFrame *frame; QNetworkAccessManager* qnam; signals: void dataRequested(); void dataReceived(); void loadingFinished(); private slots: void pageLoadFinished(bool); void slotLoadProgress(int p); #ifdef BROWSERIMAGEMANAGER_IS_THREADED private slots: void checkRequests(); protected: virtual void run(); #else private: QTimer* timeoutTimer; private slots: void timeout(); #endif // BROWSERIMAGEMANAGER_IS_THREADED }; #endif �����������������������������������������������������merkaartor-0.18.1/src/QMapControl/imagemanager.cpp��������������������������������������������������0000664�0000000�0000000�00000014060�11770671653�0022075�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "imagemanager.h" #include "MerkaartorPreferences.h" #include "IMapAdapter.h" #include <QDateTime> #include <QCryptographicHash> ImageManager* ImageManager::m_ImageManagerInstance = 0; ImageManager::ImageManager(QObject* parent) :QObject(parent), emptyPixmap(QPixmap(1,1)), net(new MapNetwork(this)) { emptyPixmap.fill(Qt::transparent); #ifndef _MOBILE m_dataCache.setMaxCost(20000000); // 20mb #else m_dataCache.setMaxCost(5000000); // 5mb #endif } ImageManager::~ImageManager() { net->abortLoading(); delete net; } QByteArray ImageManager::getData(IMapAdapter* anAdapter, QString url) { QString host = anAdapter->getHost(); QString strHash = QString("%1%2").arg(anAdapter->getName()).arg(url); QString hash = QString(strHash.toAscii().toBase64()); if (hash.size() > 255) { QCryptographicHash crypt(QCryptographicHash::Md5); crypt.addData(hash.toLatin1()); hash = QString(crypt.result().toHex()); } QByteArray ba; if (m_dataCache.contains(hash)) { QBuffer* buf = m_dataCache.object(hash); return buf->data(); } // currently loading? if (!net->isLoading(hash)) { // load from net, add empty image net->load(hash, host, url); emit(dataRequested()); return ba; } return ba; } QImage ImageManager::getImage(IMapAdapter* anAdapter, QString url) { // qDebug() << "ImageManager::getImage"; QString host = anAdapter->getHost(); QString strHash = QString("%1%2").arg(anAdapter->getName()).arg(url); QString hash = QString(strHash.toAscii().toBase64()); if (hash.size() > 255) { QCryptographicHash crypt(QCryptographicHash::Md5); crypt.addData(hash.toLatin1()); hash = QString(crypt.result().toHex()); } /* QPixmap pm(anAdapter->getTileSize(), anAdapter->getTileSize()); pm.fill(Qt::black);*/ // QPixmap pm(emptyPixmap); QImage pm; // is image in picture cache if (m_dataCache.contains(hash)) { pm.loadFromData(m_dataCache.object(hash)->data()); return pm; } // disk cache? if (anAdapter->isTiled() && useDiskCache(hash + ".png")) { if (pm.load(cacheDir.absolutePath() + "/" + hash + ".png")) { return pm; } } if (M_PREFS->getOfflineMode()) return pm; // currently loading? if (!net->isLoading(hash)) { // load from net, add empty image net->load(hash, host, url); emit(dataRequested()); return pm; } return pm; } //QPixmap ImageManager::prefetchImage(const QString& host, const QString& url) QImage ImageManager::prefetchImage(IMapAdapter* anAdapter, int x, int y, int z) { QString host = anAdapter->getHost(); QString url = anAdapter->getQuery(x, y, z); QString strHash = QString("%1%2").arg(anAdapter->getName()).arg(url); QString hash = QString(strHash.toAscii().toBase64()); prefetch.append(hash); return getImage(anAdapter, anAdapter->getQuery(x, y, z)); } void ImageManager::receivedData(const QByteArray& ba, const QHash<QString, QString>& headers, const QString& hash) { // qDebug() << "ImageManager::receivedImage"; QImage img = QImage::fromData(ba); foreach (QString k, headers.keys()) { img.setText(k, headers[k]); } QBuffer* buf = new QBuffer(); buf->open(QIODevice::WriteOnly); img.save(buf, "PNG"); buf->close(); m_dataCache.insert(hash, buf, buf->data().size()); if (cacheMaxSize || cachePermanent) { if (!img.isNull()) { img.save(cacheDir.absolutePath() + "/" + hash + ".png"); QFileInfo info(cacheDir.absolutePath() + "/" + hash + ".png"); cacheInfo.append(info); cacheSize += info.size(); adaptCache(); } } if (prefetch.contains(hash)) { prefetch.removeAt(prefetch.indexOf(hash)); } emit(dataReceived()); } void ImageManager::loadingQueueEmpty() { emit(loadingFinished()); // ((Layer*)this->parent())->removeZoomImage(); // qDebug() << "size of image-map: " << images.size(); // qDebug() << "size: " << QPixmapCache::cacheLimit(); } void ImageManager::abortLoading() { net->abortLoading(); loadingQueueEmpty(); } void ImageManager::setCacheDir(const QDir& path) { cacheDir = path; cacheSize = 0; if (!cacheDir.exists()) { cacheDir.mkpath(cacheDir.absolutePath()); } else { cacheInfo = cacheDir.entryInfoList(QDir::Files, QDir::Time | QDir::Reversed); for (int i=0; i<cacheInfo.size(); i++) { cacheSize += cacheInfo[i].size(); } } } QDir ImageManager::getCacheDir() { return cacheDir; } void ImageManager::setCacheMaxSize(int max) { cacheMaxSize = max*1024*1024; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/imagemanager.h����������������������������������������������������0000664�0000000�0000000�00000007105�11770671653�0021544�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef IMAGEMANAGER_H #define IMAGEMANAGER_H #include <QObject> #include <QBuffer> #include <QDebug> #include <QMutex> #include <QFileInfo> #include <QCache> #include "mapnetwork.h" #include "IImageManager.h" class MapNetwork; class IMapAdapter; /** @author Kai Winter <kaiwinter@gmx.de> */ class ImageManager : public QObject, public IImageManager { Q_OBJECT; public: ImageManager(QObject* parent = 0); ImageManager(const ImageManager&); ImageManager& operator=(const ImageManager&); ~ImageManager(); //! returns a QPixmap of the asked image /*! * If this component doesn´t have the image a network query gets started to load it. * @param host the host of the image * @param path the path to the image * @return the pixmap of the asked image */ QImage getImage(IMapAdapter* anAdapter, QString url); QByteArray getData(IMapAdapter* anAdapter, QString url); //QPixmap prefetchImage(const QString& host, const QString& path); QImage prefetchImage(IMapAdapter* anAdapter, int x, int y, int z); void receivedData(const QByteArray& ba, const QHash<QString, QString>& headers, const QString& url); /*! * This method is called by MapNetwork, after all images in its queue were loaded. * The ImageManager emits a signal, which is used in MapControl to remove the zoom image. * The zoom image should be removed on Tile Images with transparency. * Else the zoom image stay visible behind the newly loaded tiles. */ void loadingQueueEmpty(); /*! * Aborts all current loading threads. * This is useful when changing the zoom-factor, though newly needed images loads faster */ void abortLoading(); void setCacheDir(const QDir& path); QDir getCacheDir(); void setCacheMaxSize(int max); private: QPixmap emptyPixmap; MapNetwork* net; QList<QString> prefetch; static ImageManager* m_ImageManagerInstance; QCache<QString, QBuffer> m_dataCache; signals: void dataRequested(); void dataReceived(); void loadingFinished(); }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/imagepoint.cpp����������������������������������������������������0000664�0000000�0000000�00000003547�11770671653�0021624�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "imagepoint.h" ImagePoint::ImagePoint(double x, double y, QString filename, QString name, Alignment alignment) : Point(x, y, name, alignment) { // qDebug() << "loading image: " << filename; mypixmap = new QPixmap(filename); size = mypixmap->size(); // qDebug() << "image size: " << size; } ImagePoint::ImagePoint(double x, double y, QPixmap* pixmap, QString name, Alignment alignment) : Point(x, y, name, alignment) { mypixmap = pixmap; size = mypixmap->size(); } ImagePoint::~ImagePoint() { } ���������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/imagepoint.h������������������������������������������������������0000664�0000000�0000000�00000005514�11770671653�0021265�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef IMAGEPOINT_H #define IMAGEPOINT_H #include "point.h" //! Draws an image into the map /*! This is a convenience class for Point. * It configures the pixmap of a Point to draw the given image. * The image will be loaded from the given path and written in the points pixmap. * * @author Kai Winter <kaiwinter@gmx.de> */ class ImagePoint : public Point { public: //! Creates a point which loads and displays the given image file /*! * Use this contructor to load the given image file and let the point display it. * When you want multiple points to display the same image, use the other contructor and pass a pointer to that image. * @param x longitude * @param y latitude * @param filename the file which should be loaded and displayed * @param name the name of the image point * @param alignment alignment (Middle or TopLeft) */ ImagePoint(double x, double y, QString filename, QString name = QString(), Alignment alignment = Middle); //! Creates a point which displays the given image /*! * Use this contructor to display the given image. * You have to load that image yourself, but can use it for multiple points. * @param x longitude * @param y latitude * @param pixmap pointer to the image pixmap * @param name the name of the image point * @param alignment alignment (Middle or TopLeft) */ ImagePoint(double x, double y, QPixmap* pixmap, QString name = QString(), Alignment alignment = Middle); virtual ~ImagePoint(); }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/mapadapter.cpp����������������������������������������������������0000664�0000000�0000000�00000005165�11770671653�0021604�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "mapadapter.h" MapAdapter::MapAdapter(const QString& host, const QString& serverPath, const QString& theProjection, int minZoom, int maxZoom) :host(host), serverPath(serverPath), Projection(theProjection), min_zoom(minZoom), max_zoom(maxZoom), theImageManager(0) { current_zoom = min_zoom; loc = QLocale(QLocale::English); } MapAdapter::~MapAdapter() { } QString MapAdapter::getName() const { return name; } QString MapAdapter::getHost() const { return host; } QString MapAdapter::projection() const { return Projection; } int MapAdapter::getMinZoom(const QRectF &) const { return min_zoom; } int MapAdapter::getMaxZoom(const QRectF &) const { return max_zoom; } int MapAdapter::getAdaptedMinZoom(const QRectF &) const { return 0; } int MapAdapter::getAdaptedMaxZoom(const QRectF &) const { return max_zoom > min_zoom ? max_zoom - min_zoom : min_zoom - max_zoom; } int MapAdapter::getZoom() const { return current_zoom; } int MapAdapter::getAdaptedZoom() const { return max_zoom < min_zoom ? min_zoom - current_zoom : current_zoom - min_zoom; } IImageManager* MapAdapter::getImageManager() { return theImageManager; } void MapAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/mapadapter.h������������������������������������������������������0000664�0000000�0000000�00000010245�11770671653�0021244�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef MAPADAPTER_H #define MAPADAPTER_H #include <QObject> #include <QSize> #include <QPoint> #include <QPointF> #include <QLocale> #include <QDebug> #include <cmath> #include "IImageManager.h" #include "imagemanager.h" #include "IMapAdapter.h" //! Used to fit map servers into QMapControl /*! * MapAdapters are needed to convert between world- and display coordinates. * This calculations depend on the used map projection. * There are two ready-made MapAdapters: * - TileMapAdapter, which is ready to use for OpenStreetMap or Google (Mercator projection) * - WMSMapAdapter, which could be used for the most WMS-Server (some servers show errors, because of image ratio) * * MapAdapters are also needed to form the HTTP-Queries to load the map tiles. * The maps from WMS Servers are also divided into tiles, because those can be better cached. * * @see TileMapAdapter, @see WMSMapAdapter * * @author Kai Winter <kaiwinter@gmx.de> */ class MapAdapter : public IMapAdapter { //friend class ImageManager; //friend class BrowserImageManager; //friend class Layer; Q_OBJECT Q_INTERFACES(IMapAdapter) public: virtual ~MapAdapter(); //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the projection of this MapAdapter /*! * @return the projection of this MapAdapter */ virtual QString projection() const; //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const; //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const; //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const; virtual int getAdaptedZoom()const; virtual int getAdaptedMinZoom (const QRectF &) const; virtual int getAdaptedMaxZoom (const QRectF &) const; virtual QMenu* getMenu() const { return NULL; } virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); protected: QString name; MapAdapter(const QString& host, const QString& serverPath, const QString& projection, int minZoom = 0, int maxZoom = 0); virtual void zoom_in() = 0; virtual void zoom_out() = 0; virtual bool isValid(int x, int y, int z) const = 0; virtual QString getQuery(int x, int y, int z) const = 0; QSize size; QString host; QString serverPath; QString Projection; int min_zoom; int max_zoom; int current_zoom; QLocale loc; IImageManager* theImageManager; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/mapcontrol.cpp����������������������������������������������������0000664�0000000�0000000�00000021764�11770671653�0021647�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "mapcontrol.h" MapControl::MapControl(QSize size, MouseMode mousemode) : size(size), mousemode(mousemode) { layermanager = new LayerManager(this, size); screen_middle = QPoint(size.width()/2, size.height()/2); mousepressed = false; connect(ImageManager::instance(), SIGNAL(imageReceived()), this, SLOT(updateRequestNew())); connect(ImageManager::instance(), SIGNAL(loadingFinished()), this, SLOT(loadingFinished())); this->setMaximumSize(size.width()+1, size.height()+1); } MapControl::~MapControl() { delete layermanager; } QPointF MapControl::getCurrentCoordinate() const { return layermanager->getCurrentCoordinate(); } Layer* MapControl::getLayer(const QString& layername) const { return layermanager->getLayer(layername); } QList<QString> MapControl::getLayers() const { return layermanager->getLayers(); } int MapControl::getNumberOfLayers() const { return layermanager->getLayers().size(); } void MapControl::followGeometry(const Geometry* geom) const { connect(geom, SIGNAL(positionChanged(Geometry*)), this, SLOT(positionChanged(Geometry*))); } void MapControl::positionChanged(Geometry* geom) { QPoint start = layermanager->getLayer()->getMapAdapter()->coordinateToDisplay(getCurrentCoordinate()); QPoint dest = layermanager->getLayer()->getMapAdapter()->coordinateToDisplay(((Point*)geom)->getCoordinate()); QPoint step = (dest-start); layermanager->scrollView(step); // setView(geom); update(); } void MapControl::moveTo(QPointF coordinate) { target = coordinate; steps = 25; if (moveMutex.tryLock()) { QTimer::singleShot(40, this, SLOT(tick())); } else { // stopMove(coordinate); } } void MapControl::tick() { QPoint start = layermanager->getLayer()->getMapAdapter()->coordinateToDisplay(getCurrentCoordinate()); QPoint dest = layermanager->getLayer()->getMapAdapter()->coordinateToDisplay(target); QPoint step = (dest-start)/steps; QPointF next = getCurrentCoordinate()- step; // setView(Coordinate(next.x(), next.y())); layermanager->scrollView(step); update(); steps--; if (steps>0) { QTimer::singleShot(40, this, SLOT(tick())); } else { moveMutex.unlock(); } } void MapControl::paintEvent(QPaintEvent* evnt) { QWidget::paintEvent(evnt); QPainter painter(this); // painter.translate(150,190); // painter.scale(0.5,0.5); // painter.setClipRect(0,0, size.width(), size.height()); // painter.setViewport(10000000000,0,size.width(),size.height()); /* // rotating rotation = 45; painter.translate(256,256); painter.rotate(rotation); painter.translate(-256,-256); */ layermanager->drawImage(&painter); layermanager->drawGeoms(&painter); painter.drawLine(screen_middle.x(), screen_middle.y()-10, screen_middle.x(), screen_middle.y()+10); // | painter.drawLine(screen_middle.x()-10, screen_middle.y(), screen_middle.x()+10, screen_middle.y()); // - // int cross_x = int(layermanager->getMapmiddle_px().x())%256; // int cross_y = int(layermanager->getMapmiddle_px().y())%256; // painter.drawLine(screen_middle.x()-cross_x+cross_x, screen_middle.y()-cross_y+0, // screen_middle.x()-cross_x+cross_x, screen_middle.y()-cross_y+256); // | // painter.drawLine(screen_middle.x()-cross_x+0, screen_middle.y()-cross_y+cross_y, // screen_middle.x()-cross_x+256, screen_middle.y()-cross_y+cross_y); // - painter.drawRect(0,0, size.width(), size.height()); /* // rotating painter.setMatrix(painter.matrix().inverted()); //qt = painter.transform(); qm = painter.combinedMatrix(); */ if (mousepressed && mousemode == Dragging) { QRect rect = QRect(pre_click_px, current_mouse_pos); painter.drawRect(rect); } } // mouse events void MapControl::mousePressEvent(QMouseEvent* evnt) { //rotating // QMouseEvent* me = new QMouseEvent(evnt->type(), qm.map(QPoint(evnt->x(),evnt->y())), evnt->button(), evnt->buttons(), evnt->modifiers()); // evnt = me; // qDebug() << "evnt: " << evnt->x() << ", " << evnt->y() << ", " << evnt->pos(); layermanager->mouseEvent(evnt); if (layermanager->getLayers().size()>0) { if (evnt->button() == 1) { mousepressed = true; pre_click_px = QPoint(evnt->x(), evnt->y()); } else if (evnt->button() == 2 && mousemode != None) // zoom in { zoomIn(); } else if (evnt->button() == 4 && mousemode != None) // zoom out { zoomOut(); } } // emit(mouseEvent(evnt)); emit(mouseEventCoordinate(evnt, clickToWorldCoordinate(evnt->pos()))); } void MapControl::mouseReleaseEvent(QMouseEvent* evnt) { mousepressed = false; if (mousemode == Dragging) { QPointF ulCoord = clickToWorldCoordinate(pre_click_px); QPointF lrCoord = clickToWorldCoordinate(current_mouse_pos); QRectF coordinateBB = QRectF(ulCoord, QSizeF( (lrCoord-ulCoord).x(), (lrCoord-ulCoord).y())); emit(draggedRect(coordinateBB)); } emit(mouseEventCoordinate(evnt, clickToWorldCoordinate(evnt->pos()))); } void MapControl::mouseMoveEvent(QMouseEvent* evnt) { // emit(mouseEvent(evnt)); /* // rotating QMouseEvent* me = new QMouseEvent(evnt->type(), qm.map(QPoint(evnt->x(),evnt->y())), evnt->button(), evnt->buttons(), evnt->modifiers()); evnt = me; */ if (mousepressed && mousemode == Panning) { QPoint offset = pre_click_px - QPoint(evnt->x(), evnt->y()); layermanager->scrollView(offset); pre_click_px = QPoint(evnt->x(), evnt->y()); } else if (mousepressed && mousemode == Dragging) { current_mouse_pos = QPoint(evnt->x(), evnt->y()); } // emit(mouseEventCoordinate(evnt, clickToWorldCoordinate(evnt->pos()))); update(); // emit(mouseEventCoordinate(evnt, clickToWorldCoordinate(evnt->pos()))); } QPointF MapControl::clickToWorldCoordinate(QPoint click) { // click coordinate to image coordinate QPoint displayToImage= QPoint(click.x()-screen_middle.x()+layermanager->getMapmiddle_px().x(), click.y()-screen_middle.y()+layermanager->getMapmiddle_px().y()); // image coordinate to world coordinate return layermanager->getLayer()->getMapAdapter()->displayToCoordinate(displayToImage); } void MapControl::updateRequest(QRect rect) { update(rect); } void MapControl::updateRequestNew() { // qDebug() << "MapControl::updateRequestNew()"; layermanager->forceRedraw(); update(); } // slots void MapControl::zoomIn() { layermanager->zoomIn(); update(); } void MapControl::zoomOut() { layermanager->zoomOut(); update(); } void MapControl::setZoom(int zoomlevel) { layermanager->setZoom(zoomlevel); update(); } int MapControl::getCurrentZoom() const { return layermanager->getCurrentZoom(); } void MapControl::scrollLeft(int pixel) { layermanager->scrollView(QPoint(-pixel,0)); update(); } void MapControl::scrollRight(int pixel) { layermanager->scrollView(QPoint(pixel,0)); update(); } void MapControl::scrollUp(int pixel) { layermanager->scrollView(QPoint(0,-pixel)); update(); } void MapControl::scrollDown(int pixel) { layermanager->scrollView(QPoint(0,pixel)); update(); } void MapControl::scroll(const QPoint scroll) { layermanager->scrollView(scroll); update(); } void MapControl::setView(const QPointF& coordinate) const { layermanager->setView(coordinate); } void MapControl::setView(const QList<QPointF> coordinates) const { layermanager->setView(coordinates); } void MapControl::setView(const Point* point) const { layermanager->setView(point->getCoordinate()); } void MapControl::loadingFinished() { // qDebug() << "MapControl::loadingFinished()"; layermanager->removeZoomImage(); } void MapControl::addLayer(Layer* layer) { layermanager->addLayer(layer); } void MapControl::setMouseMode(MouseMode mousemode) { this->mousemode = mousemode; } MapControl::MouseMode MapControl::getMouseMode() { return mousemode; } void MapControl::stopFollowing(Geometry* geom) { geom->disconnect(SIGNAL(positionChanged(Geometry*))); } ������������merkaartor-0.18.1/src/QMapControl/mapcontrol.h������������������������������������������������������0000664�0000000�0000000�00000021205�11770671653�0021302�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef MAPCONTROL_H #define MAPCONTROL_H #include <QtGui> #include "layermanager.h" #include "layer.h" #include "mapadapter.h" #include "geometry.h" #include "imagemanager.h" class LayerManager; class MapAdapter; class Layer; //! The control element of the widget and also the widget itself /*! * This is the main widget. * To this control layers can be added. * A MapControl have to be instantiated with a QSize which sets the size the widget takes in a layout. * The given size is also the size, which is asured to be filled with map images. * * @author Kai Winter <kaiwinter@gmx.de> */ class MapControl : public QWidget { Q_OBJECT public: //! Declares what actions the mouse move has on the map enum MouseMode { Panning, /*!< The map is moved */ Dragging, /*!< A rectangular can be drawn */ None, /*!< Mouse move events have no efect to the map */ }; //! The constructor of MapControl /*! * The MapControl is the widget which displays the maps. * The size describes the area, which gets filled with map data * When you give no MouseMode, the mouse is moving the map. * You can change the MouseMode on runtime, to e.g. Dragging, which lets the user drag a rectangular box. * After the dragging a signal with the size of the box is emitted. * The mousemode ´None´ can be used, to completely define the control of the map yourself. * @param size the size which the widget should fill with map data * @param mousemode the way mouseevents are handled */ MapControl(QSize size, MouseMode mousemode = Panning); ~MapControl(); //! adds a layer /*! * If multiple layers are added, they are painted in the added order. * @param layer the layer which should be added */ void addLayer(Layer* layer); //! returns the layer with the given name /*! * @param layername name of the wanted layer * @return the layer with the given name */ Layer* getLayer(const QString& layername) const; //! returns the names of all layers /*! * @return returns a QList with the names of all layers */ QList<QString> getLayers() const; //! returns the number of existing layers /*! * @return returns the number of existing layers */ int getNumberOfLayers() const; //! returns the coordinate of the center of the map /*! * @return returns the coordinate of the middle of the screen */ QPointF getCurrentCoordinate() const; //! returns the current zoom level /*! * @return returns the current zoom level */ int getCurrentZoom() const; //! sets the middle of the map to the given coordinate /*! * @param coordinate the coordinate which the view´s middle should be set to */ void setView(const QPointF& coordinate) const; //! sets the view, so all coordinates are visible /*! * The code of setting the view to multiple coordinates is "brute force" and pretty slow. * Have to be reworked. * @param coordinates the Coorinates which should be visible */ void setView(const QList<QPointF> coordinates) const; //! sets the view to the given Point /*! * * @param point the geometric point the view should be set to */ void setView(const Point* point) const; //! Keeps the center of the map on the Geometry, even when it moves /*! * To stop the following the method stopFollowing() have to be called * @param geometry the Geometry which should stay centered. */ void followGeometry(const Geometry* geometry) const; //TODO: // void followGeometry(const QList<Geometry*>) const; //! Stops the following of a Geometry /*! * if the view is set to follow a Geometry this method stops the trace. * See followGeometry(). * @param geometry the Geometry which should not followed anymore */ void stopFollowing(Geometry* geometry); //! Smoothly moves the center of the view to the given Coordinate /*! * @param coordinate the Coordinate which the center of the view should moved to */ void moveTo (QPointF coordinate); //! sets the Mouse Mode of the MapControl /*! * There are three MouseModes declard by an enum. * The MouesMode Dragging draws an rectangular in the map while the MouseButton is pressed. * When the Button is released a draggedRect() signal is emitted. * * The second MouseMode (the default) is Panning, which allows to drag the map around. * @param mousemode the MouseMode */ void setMouseMode(MouseMode mousemode); //! returns the current MouseMode /*! * For a explanation for the MouseModes see setMouseMode() * @return the current MouseMode */ MapControl::MouseMode getMouseMode(); int rotation; private: LayerManager* layermanager; QPoint screen_middle; // middle of the widget (half size) QPoint pre_click_px; // used for scrolling (MouseMode Panning) QPoint current_mouse_pos; // used for scrolling and dragging (MouseMode Panning/Dragging) QSize size; // size of the widget bool mousepressed; MouseMode mousemode; QMutex moveMutex; // used for method moveTo() QPointF target; // used for method moveTo() int steps; // used for method moveTo() QPointF clickToWorldCoordinate(QPoint click); MapControl& operator=(const MapControl& rhs); MapControl(const MapControl& old); protected: void paintEvent(QPaintEvent* evnt); void mousePressEvent(QMouseEvent* evnt); void mouseReleaseEvent(QMouseEvent* evnt); void mouseMoveEvent(QMouseEvent* evnt); signals: // void mouseEvent(const QMouseEvent* evnt); //! Emitted AFTER a MouseEvent occured /*! * This signals allows to receive click events within the MapWidget together with the world coordinate. * It is emitted on MousePressEvents and MouseReleaseEvents. * The kind of the event can be obtained by checking the events type. * @param evnt the QMouseEvent that occured * @param coordinate the corresponding world coordinate */ void mouseEventCoordinate(const QMouseEvent* evnt, const QPointF coordinate); //! Emitted, after a Rectangular is dragged. /*! * It is possible to select a rectangular area in the map, if the MouseMode is set to Dragging. * The coordinates are in world coordinates * @param QRectF the dragged Rect */ void draggedRect(const QRectF); //! This signal is emmited, when a Geometry is clicked /*! * @param geometry * @param coord_px asd */ void geometryClickEvent(Geometry* geometry, QPoint coord_px); public slots: //! zooms in one step void zoomIn(); //! zooms out one step void zoomOut(); //! sets the given zoomlevel /*! * @param zoomlevel the zoomlevel */ void setZoom(int zoomlevel); //! scrolls the view to the left void scrollLeft(int pixel=10); //! scrolls the view to the right void scrollRight(int pixel=10); //! scrolls the view up void scrollUp(int pixel=10); //! scrolls the view down void scrollDown(int pixel=10); //! scrolls the view by the given point void scroll(const QPoint scroll); //! updates the map for the given rect /*! * @param rect the area which should be repainted */ void updateRequest(QRect rect); //! updates the hole map by creating a new offscreen image /*! * */ void updateRequestNew(); private slots: void tick(); void loadingFinished(); void positionChanged(Geometry* geom); }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/mapnetwork.cpp����������������������������������������������������0000664�0000000�0000000�00000014551�11770671653�0021654�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "mapnetwork.h" #include "MerkaartorPreferences.h" #include <QNetworkRequest> #include <QNetworkReply> #define MAX_REQ 8 MapNetwork::MapNetwork(IImageManager* parent) : parent(parent) { m_networkManager = parent->getNetworkManager(); m_networkManager->setProxy(M_PREFS->getProxy(QUrl("http://merkaartor.be"))); connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*))); } MapNetwork::~MapNetwork() { } void MapNetwork::load(const QString& hash, const QString& host, const QString& url) { qDebug() << "requesting: " << QString(host).append(url); // http->setHost(host); // int getId = http->get(url); loadingRequests.enqueue(new LoadingRequest(hash, host, url)); if (loadingMap.size() < MAX_REQ) launchRequest(); else qDebug() << "queue full"; } void MapNetwork::launchRequest() { if (loadingRequests.isEmpty()) return; LoadingRequest* R = loadingRequests.dequeue(); QUrl U; if (!R->host.contains("://")) { U.setUrl("http://" + QString(R->host).append(R->url)); } else { U.setUrl(QString(R->host).append(R->url)); } qDebug() << "getting: " << U.toString(); launchRequest(U, R); } void MapNetwork::launchRequest(QUrl url, LoadingRequest* R) { QNetworkRequest req(url); req.setRawHeader("Host", url.host().toLatin1()); req.setRawHeader("Accept", "image/*"); req.setRawHeader("User-Agent", USER_AGENT.toLatin1()); QNetworkReply* rply = m_networkManager->get(req); loadingMap[rply] = R; QTimer* timeoutTimer = new QTimer(); connect(timeoutTimer, SIGNAL(timeout()), this, SLOT(timeout())); timeoutTimer->setInterval(M_PREFS->getNetworkTimeout()); timeoutTimer->setSingleShot(true); timeoutMap[timeoutTimer] = rply; timeoutTimer->start(); } void MapNetwork::requestFinished(QNetworkReply* reply) { if (!loadingMap.contains(reply)){ // Don't react on setProxy and setHost requestFinished... return; } QTimer* t = timeoutMap.key(reply); Q_ASSERT(t); t->stop(); timeoutMap.remove(t); delete t; LoadingRequest* R = loadingMap[reply]; loadingMap.remove(reply); int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (reply->error() != QNetworkReply::NoError) { if (reply->error() != QNetworkReply::OperationCanceledError) qDebug() << "network error: " << statusCode << " " << reply->errorString(); } else switch (statusCode) { case 301: case 302: case 307: qDebug() << "redirected: " << R->host << R->url; launchRequest(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(), new LoadingRequest(R->hash, R->host, R->url)); return; case 404: qDebug() << "404 error: " << R->host << R->url; break; case 500: qDebug() << "500 error: " << R->host << R->url; break; // Redirected default: if (statusCode != 200) qDebug() << "Other http code (" << statusCode << "): " << R->host << R->url; QString hash = R->hash; // qDebug() << "request finished for id: " << id; QByteArray ax; QHash<QString, QString> headers; if (reply->bytesAvailable() > 0) { ax = reply->readAll(); foreach (QByteArray k, reply->rawHeaderList()) { headers[QString(k)] = QString(reply->rawHeader(k)); } parent->receivedData(ax, headers, hash); } break; } delete R; launchRequest(); if (loadingMap.isEmpty() && loadingRequests.isEmpty()) { // qDebug () << "all loaded"; parent->loadingQueueEmpty(); } } void MapNetwork::abortLoading() { foreach (QNetworkReply* rply, loadingMap.keys()) rply->abort(); loadingMap.clear(); while (!loadingRequests.isEmpty()) delete loadingRequests.dequeue(); //loadingRequests.clear(); } bool MapNetwork::isLoading(QString hash) { QListIterator<LoadingRequest*> i(loadingRequests); while (i.hasNext()) if (i.next()->hash == hash) return true; QMapIterator<QNetworkReply*, LoadingRequest*> j(loadingMap); while (j.hasNext()) if (j.next().value()->hash == hash) return true; return false; } void MapNetwork::timeout() { QTimer* t = qobject_cast<QTimer*>(sender()); Q_ASSERT(t); QNetworkReply* rply = timeoutMap[t]; if (!loadingMap.contains(rply)) return; LoadingRequest* R = loadingMap[rply]; qDebug() << "MapNetwork::timeout: " << R->host << R->url; loadingMap.remove(rply); loadingRequests.enqueue(R); rply->abort(); timeoutMap.remove(t); delete t; if (loadingMap.size() < MAX_REQ) launchRequest(); } �������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/mapnetwork.h������������������������������������������������������0000664�0000000�0000000�00000005366�11770671653�0021325�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef MAPNETWORK_H #define MAPNETWORK_H #include <QObject> #include <QDebug> #include <QList> #include <QQueue> #include <QPixmap> #include <QMutex> #include <QUrl> #include "IImageManager.h" /** @author Kai Winter <kaiwinter@gmx.de> */ class ImageManager; class MapNetwork : QObject { Q_OBJECT public: MapNetwork(IImageManager* parent); ~MapNetwork(); void load(const QString& hash, const QString& host, const QString& url); /*! * checks if the given url is already loading * @param url the url of the image * @return boolean, if the image is already loading */ bool isLoading(QString hash); /*! * Aborts all current loading threads. * This is useful when changing the zoom-factor, though newly needed images loads faster */ void abortLoading(); private: IImageManager* parent; QNetworkAccessManager* m_networkManager; QMap<QNetworkReply*, LoadingRequest*> loadingMap; QMap<QTimer*, QNetworkReply*> timeoutMap; QQueue<LoadingRequest*> loadingRequests; MapNetwork& operator=(const MapNetwork& rhs); MapNetwork(const MapNetwork& old); void launchRequest(); void launchRequest(QUrl url, LoadingRequest* R); private slots: void requestFinished(QNetworkReply* reply); void timeout(); }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/tilemapadapter.cpp������������������������������������������������0000664�0000000�0000000�00000011342�11770671653�0022454�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "tilemapadapter.h" // from wikipedia #define EQUATORIALRADIUS 6378137.0 #define POLARRADIUS 6356752.0 #define EQUATORIALMETERCIRCUMFERENCE 40075016.68 #define EQUATORIALMETERHALFCIRCUMFERENCE 20037508.34 #define EQUATORIALMETERPERDEGREE 222638.981555556 TileMapAdapter::TileMapAdapter(const TmsServer& ts) :MapAdapter(ts.TmsAdress, ts.TmsPath, ts.TmsProjection, ts.TmsMinZoom, ts.TmsMaxZoom) , theServer(ts) , tilesize(ts.TmsTileSize) , BlOrigin(ts.TmsBlOrigin) { name = ts.TmsName; serverPath.replace("%1", "%z"); serverPath.replace("%2", "%x"); serverPath.replace("%3", "%y"); int paramz = serverPath.indexOf("%z"); int paramx = serverPath.indexOf("%x"); int paramy = serverPath.indexOf("%y"); if (paramx == -1 && paramy == -1 && paramz == -1) { // Check for potlach-style url paramz = serverPath.indexOf('!'); if (paramz) serverPath.replace(paramz, 1, "%z"); paramx = serverPath.indexOf('!'); if (paramx) serverPath.replace(paramx, 1, "%x"); paramy = serverPath.indexOf('!'); if (paramy) serverPath.replace(paramy, 1, "%y"); } isProj4326 = (Projection.contains(":4326")); loc.setNumberOptions(QLocale::OmitGroupSeparator); } TileMapAdapter::~TileMapAdapter() { } QUuid TileMapAdapter::getId() const { return QUuid("{CA8A07EC-A466-462b-929F-3805BC9DEC95}"); } IMapAdapter::Type TileMapAdapter::getType() const { return IMapAdapter::NetworkBackground; } QRectF TileMapAdapter::getBoundingbox() const { if (isProj4326) return QRectF(QPointF(-180.00, -90.00), QPointF(180.00, 90.00)); else return QRectF(QPointF(-EQUATORIALMETERHALFCIRCUMFERENCE, -EQUATORIALMETERHALFCIRCUMFERENCE), QPointF(EQUATORIALMETERHALFCIRCUMFERENCE, EQUATORIALMETERHALFCIRCUMFERENCE)); } int TileMapAdapter::getTileSizeW() const { return tilesize; } int TileMapAdapter::getTileSizeH() const { return tilesize; } //TODO: rausziehen? ->MapAdapter? void TileMapAdapter::zoom_in() { if (min_zoom > max_zoom) current_zoom = current_zoom > max_zoom ? current_zoom-1 : max_zoom; else if (min_zoom < max_zoom) current_zoom = current_zoom < max_zoom ? current_zoom+1 : max_zoom; } void TileMapAdapter::zoom_out() { if (min_zoom > max_zoom) current_zoom = current_zoom < min_zoom ? current_zoom+1 : min_zoom; else if (min_zoom < max_zoom) current_zoom = current_zoom > min_zoom ? current_zoom-1 : min_zoom; } QString TileMapAdapter::getQuery (int x, int y, int z) const { if (BlOrigin) y = getTilesNS(current_zoom)-1 - y; QString str = serverPath; str.replace("%z", QString::number(z)); str.replace("%y", QString::number(y)); str.replace("%x", QString::number(x)); return str; } bool TileMapAdapter::isValid(int x, int y, int z) const { if ((x<0) || (x>getTilesWE(z)) || (y<0) || (y>getTilesNS(z))) { return false; } return true; } int TileMapAdapter::getTilesWE(int zoomlevel) const { int t = int(pow(2, zoomlevel+0.0)); if (isProj4326) t *= 2; return t; } int TileMapAdapter::getTilesNS(int zoomlevel) const { return int(pow(2, zoomlevel+0.0)); } QString TileMapAdapter::getSourceTag() const { return theServer.TmsSourceTag; } QString TileMapAdapter::getLicenseUrl() const { return theServer.TmsLicenseUrl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/tilemapadapter.h��������������������������������������������������0000664�0000000�0000000�00000010206�11770671653�0022117�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef TILEMAPADAPTER_H #define TILEMAPADAPTER_H #include "mapadapter.h" #include "TmsServersList.h" //! MapAdapter for servers with image tiles /*! * Use this derived MapAdapter to display maps from OpenStreetMap * @author Kai Winter <kaiwinter@gmx.de> */ class TileMapAdapter : public MapAdapter { public: //! constructor /*! * Sample of a correct initialization of a MapAdapter:<br/> * TileMapAdapter* ta = new TileMapAdapter("192.168.8.1", "/img/img_cache.php/%1/%2/%3.png", 256, 0,17);<br/> * The placeholders %1, %2, %3 stands for x, y, z<br/> * The minZoom is 0 (means the whole world is visible). The maxZoom is 17 (means it is zoomed in to the max) * @param host The servers URL * @param serverPath The path to the tiles with placeholders * @param tilesize the size of the tiles * @param minZoom the minimum zoom level * @param maxZoom the maximum zoom level */ TileMapAdapter(const TmsServer& ts); virtual ~TileMapAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const; virtual int getTileSizeH () const; //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag() const; virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const; virtual void zoom_in(); virtual void zoom_out(); virtual bool isValid(int x, int y, int z) const; virtual QString getQuery(int x, int y, int z) const; virtual QString getQuery(const QRectF& , const QRectF& , const QRect& ) const { return ""; } virtual QPixmap getPixmap(const QRectF& /* wgs84Bbox */, const QRectF& /* projBbox */, const QRect& /* size */) const { return QPixmap(); } virtual QRectF getBoundingbox() const; virtual bool isTiled() const { return true; } virtual int getTilesWE(int zoomlevel) const; virtual int getTilesNS(int zoomlevel) const; virtual void cleanup() {} virtual bool toXML(QXmlStreamWriter& /*stream*/) { return true; } virtual void fromXML(QXmlStreamReader& /*xParent*/) {} virtual QString toPropertiesHtml() {return "";} virtual void setSettings(QSettings* /*aSet*/) {} protected: TmsServer theServer; int tilesize; bool BlOrigin; bool isProj4326; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/wmsmapadapter.cpp�������������������������������������������������0000664�0000000�0000000�00000007642�11770671653�0022335�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "wmsmapadapter.h" WMSMapAdapter::WMSMapAdapter(WmsServer aServer) : theServer(aServer) { loc = QLocale(QLocale::English); loc.setNumberOptions(QLocale::OmitGroupSeparator); } QString WMSMapAdapter::getName() const { return theServer.WmsName; } QString WMSMapAdapter::getHost() const { return theServer.WmsAdress; } IImageManager* WMSMapAdapter::getImageManager() { return theImageManager; } void WMSMapAdapter::setImageManager(IImageManager* anImageManager) { theImageManager = anImageManager; } QString WMSMapAdapter::projection() const { if (theServer.WmsProjections == "OSGEO:41001") return "EPSG:3857"; return theServer.WmsProjections; } WMSMapAdapter::~WMSMapAdapter() { } QUuid WMSMapAdapter::getId() const { return QUuid("{E238750A-AC27-429e-995C-A60C17B9A1E0}"); } IMapAdapter::Type WMSMapAdapter::getType() const { if (theServer.WmsImgFormat.startsWith("image")) return IMapAdapter::NetworkBackground; else return IMapAdapter::NetworkDataBackground; } QString WMSMapAdapter::getQuery(const QRectF& /*wgs84Bbox*/, const QRectF& projBbox, const QRect& size) const { QUrl theUrl(theServer.WmsPath); if (!theUrl.hasQueryItem("VERSION")) theUrl.addQueryItem("VERSION", "1.1.1"); if (!theUrl.hasQueryItem("SERVICE")) theUrl.addQueryItem("SERVICE", "WMS"); theUrl.addQueryItem("REQUEST", "GetMap"); if (!theUrl.hasQueryItem("TRANSPARENT")) theUrl.addQueryItem("TRANSPARENT", "TRUE"); if (!theUrl.hasQueryItem("LAYERS")) theUrl.addQueryItem("LAYERS", theServer.WmsLayers); if (!theUrl.hasQueryItem("SRS")) theUrl.addQueryItem("SRS", theServer.WmsProjections); if (!theUrl.hasQueryItem("STYLES")) theUrl.addQueryItem("STYLES", theServer.WmsStyles); if (!theUrl.hasQueryItem("FORMAT")) theUrl.addQueryItem("FORMAT", theServer.WmsImgFormat); theUrl.addQueryItem("WIDTH", QString::number(size.width())); theUrl.addQueryItem("HEIGHT", QString::number(size.height())); theUrl.addQueryItem("BBOX", loc.toString(projBbox.bottomLeft().x(),'f',6).append(",") .append(loc.toString(projBbox.bottomLeft().y(),'f',6)).append(",") .append(loc.toString(projBbox.topRight().x(),'f',6)).append(",") .append(loc.toString(projBbox.topRight().y(),'f',6)) ); return theUrl.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); } QString WMSMapAdapter::getSourceTag() const { return theServer.WmsSourceTag; } QString WMSMapAdapter::getLicenseUrl() const { return theServer.WmsLicenseUrl; } ����������������������������������������������������������������������������������������������merkaartor-0.18.1/src/QMapControl/wmsmapadapter.h���������������������������������������������������0000664�0000000�0000000�00000011325�11770671653�0021773�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*************************************************************************** * Copyright (C) 2007 by Kai Winter * * kaiwinter@gmx.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef WMSMAPADAPTER_H #define WMSMAPADAPTER_H #include "IMapAdapter.h" #include "WmsServersList.h" #include <QLocale> //! MapAdapter for WMS servers /*! * Use this derived MapAdapter to display maps from WMS servers * @author Kai Winter <kaiwinter@gmx.de> */ class WMSMapAdapter : public IMapAdapter { public: WMSMapAdapter(WmsServer aServer); virtual ~WMSMapAdapter(); //! returns the unique identifier (Uuid) of this MapAdapter /*! * @return the unique identifier (Uuid) of this MapAdapter */ virtual QUuid getId () const; //! returns the type of this MapAdapter /*! * @return the type of this MapAdapter */ virtual IMapAdapter::Type getType () const; //! returns the name of this MapAdapter /*! * @return the name of this MapAdapter */ virtual QString getName () const; //! returns the host of this MapAdapter /*! * @return the host of this MapAdapter */ virtual QString getHost () const; //! returns the size of the tiles /*! * @return the size of the tiles */ virtual int getTileSizeW () const { return -1; } virtual int getTileSizeH () const { return -1; } //! returns the min zoom value /*! * @return the min zoom value */ virtual int getMinZoom (const QRectF &) const { return -1; } //! returns the max zoom value /*! * @return the max zoom value */ virtual int getMaxZoom (const QRectF &) const { return -1; } //! returns the current zoom /*! * @return the current zoom */ virtual int getZoom () const { return -1; } //! returns the source tag to be applied when drawing over this map /*! * @return the source tag */ virtual QString getSourceTag() const; virtual void setSourceTag (const QString& ) {}; //! returns the Url of the usage license /*! * @return the Url of the usage license */ virtual QString getLicenseUrl() const; virtual int getAdaptedZoom() const { return -1; } virtual int getAdaptedMinZoom(const QRectF &) const { return -1; } virtual int getAdaptedMaxZoom(const QRectF &) const { return -1; } virtual void zoom_in() {} virtual void zoom_out() {} virtual bool isValid(int, int, int) const { return true; } virtual QString getQuery(int, int, int) const { return ""; } virtual QString getQuery(const QRectF& wgs84Bbox, const QRectF& projBbox, const QRect& size) const ; virtual QPixmap getPixmap(const QRectF& /* wgs84Bbox */, const QRectF& /* projBbox */, const QRect& /* size */) const { return QPixmap(); } virtual QString projection() const; virtual QRectF getBoundingbox() const { return QRectF(); } virtual bool isTiled() const { return false; } virtual int getTilesWE(int) const { return -1; } virtual int getTilesNS(int) const { return -1; } virtual QMenu* getMenu() const { return NULL; } virtual IImageManager* getImageManager(); virtual void setImageManager(IImageManager* anImageManager); virtual void cleanup() {} virtual bool toXML(QXmlStreamWriter& /*stream*/) { return true; } virtual void fromXML(QXmlStreamReader& /*xParent*/) {} virtual QString toPropertiesHtml() {return "";} virtual void setSettings(QSettings* /*aSet*/) {} private: QLocale loc; WmsServer theServer; IImageManager* theImageManager; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Render/�����������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015773�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Render/MapRenderer.cpp��������������������������������������������������������0000664�0000000�0000000�00000045221�11770671653�0020707�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: MapRenderer // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #include "MapRenderer.h" #include "Document.h" #include "Features.h" #include "MapView.h" #include "MasPaintStyle.h" #include "ImageMapLayer.h" #include "LineF.h" #define TEST_RFLAGS(x) theOptions.options.testFlag(x) #define TEST_RENDERER_RFLAGS(x) r->theOptions.options.testFlag(x) void BackgroundStyleLayer::draw(Way* R) { const FeaturePainter* paintsel = R->getPainter(r->thePixelPerM); if (paintsel) { paintsel->drawBackground(R, r->thePainter, r); } else if (!TEST_RENDERER_RFLAGS(RendererOptions::UnstyledHidden)) // if (/*!globalZoom(r->theProjection) && */!R->hasPainter()) //FIXME Untagged roads level of zoom? { QPen thePen(QColor(0,0,0),1); r->thePainter->setBrush(Qt::NoBrush); if (R->layer()->classType() == Layer::ImageLayerType && M_PREFS->getUseShapefileForBackground()) { thePen = QPen(QColor(0xc0,0xc0,0xc0),1); if (M_PREFS->getBackgroundOverwriteStyle() || !M_STYLE->getGlobalPainter().getDrawBackground()) r->thePainter->setBrush(M_PREFS->getBgColor()); else r->thePainter->setBrush(QBrush(M_STYLE->getGlobalPainter().getBackgroundColor())); } else { if (r->thePixelPerM < M_PREFS->getRegionalZoom()) thePen = QPen(QColor(0x77,0x77,0x77),1); } r->thePainter->setPen(thePen); r->thePainter->drawPath(r->theTransform.map(R->getPath())); } } void BackgroundStyleLayer::draw(Relation* R) { const FeaturePainter* paintsel = R->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawBackground(R,r->thePainter,r); } void BackgroundStyleLayer::draw(Node* N) { if ((N->isReadonly() || !N->isSelectable(r->thePixelPerM, r->theOptions)) && (!N->isPOI() && !N->isWaypoint())) return; const FeaturePainter* paintsel = N->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawBackground(N,r->thePainter,r); } void ForegroundStyleLayer::draw(Way* R) { const FeaturePainter* paintsel = R->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawForeground(R,r->thePainter,r); } void ForegroundStyleLayer::draw(Relation* R) { const FeaturePainter* paintsel = R->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawForeground(R,r->thePainter,r); } void ForegroundStyleLayer::draw(Node* N) { if ((N->isReadonly() || !N->isSelectable(r->thePixelPerM, r->theOptions)) && (!N->isPOI() && !N->isWaypoint())) return; const FeaturePainter* paintsel = N->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawForeground(N,r->thePainter,r); } void TouchupStyleLayer::draw(Way* R) { const FeaturePainter* paintsel = R->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawTouchup(R,r->thePainter,r); else if (!R->hasPainter() && !TEST_RENDERER_RFLAGS(RendererOptions::UnstyledHidden)) { if ( r->theOptions.arrowOptions != RendererOptions::ArrowsNever ) { Feature::TrafficDirectionType TT = trafficDirection(R); if ( (TT != Feature::UnknownDirection) || (r->theOptions.arrowOptions == RendererOptions::ArrowsAlways) ) { qreal theWidth = r->thePixelPerM*R->widthOf()-4; if (theWidth > 8) theWidth = 8; qreal DistFromCenter = 2*(theWidth+4); if (theWidth > 0) { for (int i=1; i<R->size(); ++i) { QPointF FromF(r->toView(R->getNode(i-1))); QPointF ToF(r->toView(R->getNode(i))); if (distance(FromF,ToF) > (DistFromCenter*2+4)) { QPointF H(FromF+ToF); H *= 0.5; qreal A = angle(FromF-ToF); QPointF T(DistFromCenter*cos(A),DistFromCenter*sin(A)); QPointF V1(theWidth*cos(A+M_PI/6),theWidth*sin(A+M_PI/6)); QPointF V2(theWidth*cos(A-M_PI/6),theWidth*sin(A-M_PI/6)); if ( (TT == Feature::OtherWay) || (TT == Feature::BothWays) ) { r->thePainter->setPen(QPen(QColor(0,0,255), 2)); r->thePainter->drawLine(H+T,H+T-V1); r->thePainter->drawLine(H+T,H+T-V2); } if ( (TT == Feature::OneWay) || (TT == Feature::BothWays) ) { r->thePainter->setPen(QPen(QColor(0,0,255), 2)); r->thePainter->drawLine(H-T,H-T+V1); r->thePainter->drawLine(H-T,H-T+V2); } else { if ( r->theOptions.arrowOptions == RendererOptions::ArrowsAlways ) { r->thePainter->setPen(QPen(QColor(255,0,0), 2)); r->thePainter->drawLine(H-T,H-T+V1); r->thePainter->drawLine(H-T,H-T+V2); } } } } } } } } } void TouchupStyleLayer::draw(Relation* /* R */) { } void TouchupStyleLayer::draw(Node* Pt) { const FeaturePainter* paintsel = Pt->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawTouchup(Pt,r->thePainter,r); else if (!TEST_RENDERER_RFLAGS(RendererOptions::UnstyledHidden)) { if (! ((Pt->isReadonly() || !Pt->isSelectable(r->thePixelPerM, r->theOptions)) && (!Pt->isPOI() && !Pt->isWaypoint()))) // if (!Pt->isReadonly() && Pt->isSelectable(r)) { qreal WW = r->NodeWidth; if (WW >= 1) { QColor theColor = QColor(0,0,0,128); if (r->theGlobalPainter.DrawNodes) { theColor = r->theGlobalPainter.NodesColor; } QPointF P(r->toView(Pt)); if (Pt->layer()->classGroups() & Layer::Special) { QRect R2(P.x()-(WW+4)/2, P.y()-(WW+4)/2, WW+4, WW+4); r->thePainter->fillRect(R2,QColor(255,0,255,192)); } else if (Pt->isWaypoint()) { QRect R2(P.x()-(WW+4)/2, P.y()-(WW+4)/2, WW+4, WW+4); r->thePainter->fillRect(R2,QColor(255,0,0,192)); } QRect R(P.x()-WW/2, P.y()-WW/2, WW, WW); r->thePainter->fillRect(R,theColor); } } } } void LabelStyleLayer::draw(Way* R) { const FeaturePainter* paintsel = R->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawLabel(R,r->thePainter,r); } void LabelStyleLayer::draw(Relation* /* R */) { } void LabelStyleLayer::draw(Node* Pt) { const FeaturePainter* paintsel = Pt->getPainter(r->thePixelPerM); if (paintsel) paintsel->drawLabel(Pt,r->thePainter,r); } /*** MapRenderer ***/ MapRenderer::MapRenderer() { bglayer = BackgroundStyleLayer(this); fglayer = ForegroundStyleLayer(this); tchuplayer = TouchupStyleLayer(this); lbllayer = LabelStyleLayer(this); } #if 0 void MapRenderer::render( QPainter* P, QMap<RenderPriority, QSet <Feature*> > theFeatures, const RendererOptions& options, MapView* aView ) { #ifndef NDEBUG QTime Start(QTime::currentTime()); #endif theView = aView; theOptions = options; QMap<RenderPriority, QSet<Feature*> >::const_iterator itm; QSet<Feature*>::const_iterator it; bool bgLayerVisible = TEST_RFLAGS(RendererOptions::BackgroundVisible); bool fgLayerVisible = TEST_RFLAGS(RendererOptions::ForegroundVisible); bool tchpLayerVisible = TEST_RFLAGS(RendererOptions::TouchupVisible); bool lblLayerVisible = TEST_RFLAGS(RendererOptions::NamesVisible); Way * R = NULL; Node * Pt = NULL; Relation * RR = NULL; QPixmap pix(theView->size()); thePainter = new QPainter(); itm = theFeatures.constBegin(); while (itm != theFeatures.constEnd()) { pix.fill(Qt::transparent); thePainter->begin(&pix); if (M_PREFS->getUseAntiAlias()) thePainter->setRenderHint(QPainter::Antialiasing); int curLayer = (itm.key()).layer(); while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer) { for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) { qreal alpha = (*it)->getAlpha(); thePainter->setOpacity(alpha); R = NULL; Pt = NULL; RR = NULL; if (!(R = CAST_WAY(*it))) if (!(Pt = CAST_NODE(*it))) RR = CAST_RELATION(*it); if (R) { // If there is painter at the relation level, don't paint at the way level bool draw = true; for (int i=0; i<R->sizeParents(); ++i) { if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(PixelPerM)) draw = false; } if (!draw) continue; } if (!Pt) { if (bgLayerVisible) { thePainter->save(); if (R && R->area() == 0) thePainter->setCompositionMode(QPainter::CompositionMode_DestinationOver); if (R) bglayer.draw(R); else if (Pt) bglayer.draw(Pt); else if (RR) bglayer.draw(RR); thePainter->restore(); } if (fgLayerVisible) { thePainter->save(); if (R) fglayer.draw(R); else if (Pt) fglayer.draw(Pt); else if (RR) fglayer.draw(RR); thePainter->restore(); } } if (tchpLayerVisible) { thePainter->save(); if (R) tchuplayer.draw(R); else if (Pt) tchuplayer.draw(Pt); else if (RR) tchuplayer.draw(RR); thePainter->restore(); } if (lblLayerVisible) { thePainter->save(); if (R) lbllayer.draw(R); else if (Pt) lbllayer.draw(Pt); else if (RR) lbllayer.draw(RR); thePainter->restore(); } (*it)->draw(*thePainter, aView); } ++itm; } thePainter->end(); P->drawPixmap(0, 0, pix); #ifndef NDEBUG QTime Stop(QTime::currentTime()); qDebug() << Start.msecsTo(Stop) << "ms"; #endif } } #else QPoint MapRenderer::toView(Node* aPt) const { return theTransform.map(aPt->projected()).toPoint(); } void MapRenderer::render( QPainter* P, const QMap<RenderPriority, QSet <Feature*> >& theFeatures, const QRectF& pViewport, const QRect& screen, const qreal pixelPerM, const RendererOptions& options ) { // #ifndef NDEBUG // QTime Start(QTime::currentTime()); // #endif theViewport = pViewport; theScreen = screen; thePixelPerM = pixelPerM; qreal Aspect = (double)screen.width() / screen.height(); qreal pAspect = fabs(pViewport.width() / pViewport.height()); qreal wv, hv; if (pAspect > Aspect) { wv = fabs(pViewport.width()); hv = fabs(pViewport.height() * pAspect / Aspect); } else { wv = fabs(pViewport.width() * Aspect / pAspect); hv = fabs(pViewport.height()); } qreal ScaleLon = screen.width() / wv; qreal ScaleLat = screen.height() / hv; theTransform.reset(); theTransform.scale(ScaleLon, -ScaleLat); theTransform.translate(-pViewport.topLeft().x(), -pViewport.topLeft().y()); // qDebug() << "render transform: " << theTransform; theOptions = options; theGlobalPainter = M_STYLE->getGlobalPainter(); if (theGlobalPainter.DrawNodes) { NodeWidth = thePixelPerM*theGlobalPainter.NodesProportional+theGlobalPainter.NodesFixed; } else { NodeWidth = thePixelPerM * M_PREFS->getNodeSize(); if (NodeWidth > M_PREFS->getNodeSize()) NodeWidth = M_PREFS->getNodeSize(); } bool bgLayerVisible = TEST_RFLAGS(RendererOptions::BackgroundVisible); bool fgLayerVisible = TEST_RFLAGS(RendererOptions::ForegroundVisible); bool tchpLayerVisible = TEST_RFLAGS(RendererOptions::TouchupVisible); bool lblLayerVisible = TEST_RFLAGS(RendererOptions::NamesVisible); QMap<RenderPriority, QSet<Feature*> >::const_iterator itm; QMap<RenderPriority, QSet<Feature*> >::const_iterator itmCur; QSet<Feature*>::const_iterator it; thePainter = P; thePainter->save(); thePainter->translate(screen.left(), screen.top()); itm = theFeatures.constBegin(); while (itm != theFeatures.constEnd()) { int curLayer = (itm.key()).layer(); itmCur = itm; while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer) { if (bgLayerVisible) { for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) { qreal alpha = (*it)->getAlpha(); if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting)) alpha /= 2.0; if (alpha != 1.) { P->save(); P->setOpacity(alpha); } if (CHECK_WAY(*it)) { Way * R = STATIC_CAST_WAY(*it); for (int i=0; i<R->sizeParents(); ++i) if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(thePixelPerM)) continue; bglayer.draw(R); } else if (CHECK_NODE(*it)) bglayer.draw(STATIC_CAST_NODE(*it)); else if (CHECK_RELATION(*it)) bglayer.draw(STATIC_CAST_RELATION(*it)); if (alpha != 1.) { P->restore(); } } } ++itm; } itm = itmCur; while (itm != theFeatures.constEnd() && (itm.key()).layer() == curLayer) { if (fgLayerVisible) { for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) { qreal alpha = (*it)->getAlpha(); if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting)) alpha /= 2.0; if (alpha != 1.) { P->save(); P->setOpacity(alpha); } if (CHECK_WAY(*it)) { Way * R = STATIC_CAST_WAY(*it); for (int i=0; i<R->sizeParents(); ++i) if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(thePixelPerM)) continue; fglayer.draw(R); } else if (CHECK_NODE(*it)) fglayer.draw(STATIC_CAST_NODE(*it)); else if (CHECK_RELATION(*it)) fglayer.draw(STATIC_CAST_RELATION(*it)); if (alpha != 1.) { P->restore(); } } } ++itm; } } if (tchpLayerVisible) { for (itm = theFeatures.constBegin() ;itm != theFeatures.constEnd(); ++itm) { for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) { qreal alpha = (*it)->getAlpha(); if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting)) alpha /= 2.0; if (alpha != 1.) { P->save(); P->setOpacity(alpha); } if (CHECK_WAY(*it)) { Way * R = STATIC_CAST_WAY(*it); for (int i=0; i<R->sizeParents(); ++i) if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(thePixelPerM)) continue; tchuplayer.draw(R); } else if (CHECK_NODE(*it)) tchuplayer.draw(STATIC_CAST_NODE(*it)); else if (CHECK_RELATION(*it)) tchuplayer.draw(STATIC_CAST_RELATION(*it)); if (alpha != 1.) { P->restore(); } } } } if (lblLayerVisible) { for (itm = theFeatures.constBegin() ;itm != theFeatures.constEnd(); ++itm) { for (it = itm.value().constBegin(); it != itm.value().constEnd(); ++it) { P->save(); qreal alpha = (*it)->getAlpha(); if ((*it)->isReadonly() && !TEST_RFLAGS(RendererOptions::ForPrinting)) alpha /= 2.0; P->setOpacity(alpha); if (CHECK_WAY(*it)) { Way * R = STATIC_CAST_WAY(*it); for (int i=0; i<R->sizeParents(); ++i) if (!R->getParent(i)->isDeleted() && R->getParent(i)->hasPainter(thePixelPerM)) continue; lbllayer.draw(R); } else if (CHECK_NODE(*it)) lbllayer.draw(STATIC_CAST_NODE(*it)); else if (CHECK_RELATION(*it)) lbllayer.draw(STATIC_CAST_RELATION(*it)); P->restore(); } } } thePainter->restore(); // #ifndef NDEBUG // QTime Stop(QTime::currentTime()); // qDebug() << Start.msecsTo(Stop) << "ms"; // #endif } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Render/MapRenderer.h����������������������������������������������������������0000664�0000000�0000000�00000005167�11770671653�0020361�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: MapRenderer // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef MAPRENDERER_H #define MAPRENDERER_H #include "FeaturePainter.h" #include <QPainter> #include <QTransform> #include <QList> #include "Feature.h" #include "IRenderer.h" class Document; class PaintStylePrivate; class MapRenderer; class PaintStyleLayer { public: PaintStyleLayer() {} PaintStyleLayer(MapRenderer* ar) { r = ar; } virtual void draw(Way* R) = 0; virtual void draw(Node* Pt) = 0; virtual void draw(Relation* R) = 0; protected: MapRenderer* r; }; class BackgroundStyleLayer : public PaintStyleLayer { public: BackgroundStyleLayer() {} BackgroundStyleLayer(MapRenderer* ar) : PaintStyleLayer(ar) {} virtual void draw(Way* R); virtual void draw(Node* Pt); virtual void draw(Relation* R); }; class ForegroundStyleLayer : public PaintStyleLayer { public: ForegroundStyleLayer() {} ForegroundStyleLayer(MapRenderer* ar) : PaintStyleLayer(ar) {} virtual void draw(Way* R); virtual void draw(Node* Pt); virtual void draw(Relation* R); }; class TouchupStyleLayer : public PaintStyleLayer { public: TouchupStyleLayer() {} TouchupStyleLayer(MapRenderer* ar) : PaintStyleLayer(ar) {} virtual void draw(Way* R); virtual void draw(Node* Pt); virtual void draw(Relation* R); }; class LabelStyleLayer : public PaintStyleLayer { public: LabelStyleLayer() {} LabelStyleLayer(MapRenderer* ar) : PaintStyleLayer(ar) {} virtual void draw(Way* R); virtual void draw(Node* Pt); virtual void draw(Relation* R); }; class MapRenderer { public: MapRenderer(); void render( QPainter* P, const QMap<RenderPriority, QSet <Feature*> >& theFeatures, const QRectF& pViewport, const QRect& screen, const qreal pixelPerM, const RendererOptions& options ); // void print( // QPainter* P, // QMap<RenderPriority, QSet <Feature*> > theFeatures, // const RendererOptions& options, // MapView* aView // ); CoordBox theViewport; QRect theScreen; QTransform theTransform; qreal thePixelPerM; qreal NodeWidth; QPainter* thePainter; RendererOptions theOptions; GlobalPainter theGlobalPainter; QPoint toView(Node *aPt) const; protected: BackgroundStyleLayer bglayer; ForegroundStyleLayer fglayer; TouchupStyleLayer tchuplayer; LabelStyleLayer lbllayer; }; #endif // MAPRENDERER_H ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Render/NativeRenderDialog.cpp�������������������������������������������������0000664�0000000�0000000�00000020507�11770671653�0022211�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: NativeRenderDialog // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "NativeRenderDialog.h" #include "MainWindow.h" #include "Document.h" #include "MapView.h" #include "Projection.h" #include "Layer.h" #include "Features.h" #include "MerkaartorPreferences.h" #include "MasPaintStyle.h" #include "PictureViewerDialog.h" #include <QPrinter> #include <QPrintPreviewDialog> #include <QPrintPreviewWidget> #include <QMainWindow> #include <QProgressDialog> #include <QPainter> #include <QSvgGenerator> #include <QFileDialog> NativeRenderDialog::NativeRenderDialog(Document *aDoc, const CoordBox& aCoordBox, QWidget *parent) :QObject(parent), theDoc(aDoc), theOrigBox(aCoordBox) { thePrinter = new QPrinter(); thePrinter->setDocName(aDoc->title()); mapview = new MapView(NULL); mapview->setDocument(theDoc); preview = new QPrintPreviewDialog( thePrinter, parent ); QMainWindow* mw = preview->findChild<QMainWindow*>(); prtW = dynamic_cast<QPrintPreviewWidget*>(mw->centralWidget()); QWidget* myWidget = new QWidget(preview); ui.setupUi(myWidget); ui.verticalLayout->addWidget(prtW); mw->setCentralWidget(myWidget); connect(ui.cbShowNodes, SIGNAL(toggled(bool)), prtW, SLOT(updatePreview())); connect(ui.cbShowRelations, SIGNAL(toggled(bool)), prtW, SLOT(updatePreview())); connect(ui.cbShowGrid, SIGNAL(toggled(bool)), prtW, SLOT(updatePreview())); connect(ui.cbShowScale, SIGNAL(toggled(bool)), prtW, SLOT(updatePreview())); connect(ui.cbShowUnstyled, SIGNAL(toggled(bool)), prtW, SLOT(updatePreview())); connect(ui.sbMinLat, SIGNAL(valueChanged(double)), prtW, SLOT(updatePreview())); connect(ui.sbMaxLat, SIGNAL(valueChanged(double)), prtW, SLOT(updatePreview())); connect(ui.sbMinLon, SIGNAL(valueChanged(double)), prtW, SLOT(updatePreview())); connect(ui.sbMaxLon, SIGNAL(valueChanged(double)), prtW, SLOT(updatePreview())); connect(ui.btExportPDF, SIGNAL(clicked()), SLOT(exportPDF())); connect(ui.btExportSVG, SIGNAL(clicked()), SLOT(exportSVG())); connect(ui.btExportRaster, SIGNAL(clicked()), SLOT(exportRaster())); connect( preview, SIGNAL(paintRequested(QPrinter*)), SLOT(print(QPrinter*)) ); setBoundingBox(aCoordBox); setOptions(M_PREFS->getRenderOptions()); } RendererOptions NativeRenderDialog::options() { RendererOptions opt; opt.options |= RendererOptions::ForPrinting; opt.options |= RendererOptions::BackgroundVisible; opt.options |= RendererOptions::ForegroundVisible; opt.options |= RendererOptions::TouchupVisible; opt.options |= RendererOptions::NamesVisible; if (ui.cbShowNodes->isChecked()) opt.options |= RendererOptions::NodesVisible; if (ui.cbShowRelations->isChecked()) opt.options |= RendererOptions::RelationsVisible; if (ui.cbShowScale->isChecked()) opt.options |= RendererOptions::ScaleVisible; if (ui.cbShowGrid->isChecked()) opt.options |= RendererOptions::LatLonGridVisible; if (!ui.cbShowUnstyled->isChecked()) opt.options |= RendererOptions::UnstyledHidden; return opt; } void NativeRenderDialog::setOptions(RendererOptions aOpt) { ui.cbShowNodes->setChecked(aOpt.options & RendererOptions::NodesVisible); ui.cbShowRelations->setChecked(aOpt.options & RendererOptions::RelationsVisible); ui.cbShowScale->setChecked(aOpt.options & RendererOptions::ScaleVisible); ui.cbShowGrid->setChecked(aOpt.options & RendererOptions::LatLonGridVisible); ui.cbShowUnstyled->setChecked(!(aOpt.options & RendererOptions::UnstyledHidden)); prtW->updatePreview(); } CoordBox NativeRenderDialog::boundingBox() { CoordBox VP(Coord( ui.sbMinLon->value(), ui.sbMinLat->value() ), Coord( ui.sbMaxLon->value(), ui.sbMaxLat->value() )); return VP; } void NativeRenderDialog::setBoundingBox(CoordBox aBBox) { ui.sbMinLat->setValue(aBBox.bottomLeft().y()); ui.sbMaxLat->setValue(aBBox.topLeft().y()); ui.sbMinLon->setValue(aBBox.topLeft().x()); ui.sbMaxLon->setValue(aBBox.topRight().x()); prtW->updatePreview(); } int NativeRenderDialog::exec() { return preview->exec(); } void NativeRenderDialog::print(QPrinter* prt) { QPainter P(prt); P.setRenderHint(QPainter::Antialiasing); QRect theR = prt->pageRect(); theR.moveTo(0, 0); render(P, theR, options()); } void NativeRenderDialog::render(QPainter& P, QRect theR, RendererOptions opt) { P.setClipRect(theR); P.setClipping(true); P.setRenderHint(QPainter::Antialiasing); mapview->setGeometry(theR); mapview->setViewport(boundingBox(), theR); mapview->setRenderOptions(opt); mapview->invalidate(true, true, false); mapview->drawFeatures(P); if (opt.options & RendererOptions::ScaleVisible) mapview->drawScale(P); if (opt.options & RendererOptions::LatLonGridVisible) mapview->drawLatLonGrid(P); } void NativeRenderDialog::exportPDF() { QString s; QFileDialog dlg(NULL, tr("Output filename"), QString("%1/%2.pdf").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("PDF files (*.pdf)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("pdf"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) s = dlg.selectedFiles()[0]; } // QString s = QFileDialog::getSaveFileName(NULL,tr("Output filename"),"",tr("PDF files (*.pdf)")); if (s.isNull()) return; #if QT_VERSION >= 0x040500 QPrinter* prt = preview->printer(); #else QPrinter* prt = thePrinter; #endif prt->setOutputFormat(QPrinter::PdfFormat); prt->setOutputFileName(s); QPainter P(prt); P.setRenderHint(QPainter::Antialiasing); QRect theR = prt->pageRect(); theR.moveTo(0, 0); RendererOptions opt = options(); opt.options |= RendererOptions::PrintAllLabels; render(P, theR, opt); } void NativeRenderDialog::exportRaster() { QString s; QFileDialog dlg(NULL, tr("Output filename"), QString("%1/%2.png").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Image files (*.png *.jpg)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("png"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) s = dlg.selectedFiles()[0]; } // QString s = QFileDialog::getSaveFileName(NULL,tr("Output filename"),"",tr("Image files (*.png *.jpg)")); if (s.isNull()) return; #if QT_VERSION >= 0x040500 QRect theR = preview->printer()->pageRect(); #else QRect theR = thePrinter->pageRect(); #endif theR.moveTo(0, 0); QPixmap pix(theR.size()); if (M_PREFS->getUseShapefileForBackground()) pix.fill(M_PREFS->getWaterColor()); else if (M_PREFS->getBackgroundOverwriteStyle() || !M_STYLE->getGlobalPainter().getDrawBackground()) pix.fill(M_PREFS->getBgColor()); else pix.fill(M_STYLE->getGlobalPainter().getBackgroundColor()); QPainter P(&pix); P.setRenderHint(QPainter::Antialiasing); render(P, theR, options()); pix.save(s); } void NativeRenderDialog::exportSVG() { QString s; QFileDialog dlg(NULL, tr("Output filename"), QString("%1/%2.svg").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("SVG files (*.svg)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("svg"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) s = dlg.selectedFiles()[0]; } // QString s = QFileDialog::getSaveFileName(NULL,tr("Output filename"),"",tr("SVG files (*.svg)")); if (s.isNull()) return; QSvgGenerator svgg; #if QT_VERSION >= 0x040500 QRect theR = preview->printer()->pageRect(); #else QRect theR = thePrinter->pageRect(); #endif theR.moveTo(0, 0); svgg.setSize(theR.size()); svgg.setFileName(s); #if QT_VERSION >= 0x040500 svgg.setViewBox(theR); #endif QPainter P(&svgg); P.setRenderHint(QPainter::Antialiasing); RendererOptions opt = options(); opt.options |= RendererOptions::PrintAllLabels; render(P, theR, opt); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Render/NativeRenderDialog.h���������������������������������������������������0000664�0000000�0000000�00000002363�11770671653�0021656�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: NativeRenderDialog // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef NATIVERENDERDIALOG_H #define NATIVERENDERDIALOG_H #include <QWidget> #include <QSettings> #include "Coord.h" #include "IRenderer.h" #include <ui_NativeRenderDialog.h> class Document; class MapView; class CoordBox; class QPrinter; class QPrintPreviewDialog; class QPrintPreviewWidget; class NativeRenderDialog: public QObject { Q_OBJECT public: NativeRenderDialog(Document *aDoc, const CoordBox& aCoordBox, QWidget *parent = 0); void render(QPainter& P, QRect theR, RendererOptions opt); RendererOptions options(); void setOptions(RendererOptions aOpt); CoordBox boundingBox(); void setBoundingBox(CoordBox aBBox); public slots: void exportPDF(); void exportSVG(); void exportRaster(); public slots: int exec(); private slots: void print(QPrinter* prt); private: Ui::NativeRenderWidget ui; Document* theDoc; MapView* mapview; CoordBox theOrigBox; QSettings* Sets; double ratio; QPrinter* thePrinter; QPrintPreviewDialog* preview; QPrintPreviewWidget* prtW; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Render/NativeRenderDialog.ui��������������������������������������������������0000664�0000000�0000000�00000016762�11770671653�0022054�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>NativeRenderWidget</class> <widget class="QWidget" name="NativeRenderWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>714</width> <height>629</height> </rect> </property> <property name="windowTitle"> <string>Raster/SVG export</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QGroupBox" name="grpOptions"> <property name="title"> <string>Options</string> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <layout class="QGridLayout" name="gridLayout"> <property name="spacing"> <number>4</number> </property> <item row="0" column="0"> <widget class="QLabel" name="label_3"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>60</width> <height>0</height> </size> </property> <property name="text"> <string>min lat/Lon</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QDoubleSpinBox" name="sbMinLat"> <property name="minimumSize"> <size> <width>60</width> <height>0</height> </size> </property> <property name="decimals"> <number>6</number> </property> <property name="minimum"> <double>-90.000000000000000</double> </property> <property name="maximum"> <double>90.000000000000000</double> </property> <property name="singleStep"> <double>0.010000000000000</double> </property> </widget> </item> <item row="2" column="0"> <widget class="QLabel" name="label_4"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>60</width> <height>0</height> </size> </property> <property name="text"> <string>max lat/Lon</string> </property> </widget> </item> <item row="2" column="1"> <widget class="QDoubleSpinBox" name="sbMaxLat"> <property name="minimumSize"> <size> <width>60</width> <height>0</height> </size> </property> <property name="decimals"> <number>6</number> </property> <property name="minimum"> <double>-90.000000000000000</double> </property> <property name="maximum"> <double>90.000000000000000</double> </property> <property name="singleStep"> <double>0.010000000000000</double> </property> </widget> </item> <item row="0" column="2"> <widget class="QDoubleSpinBox" name="sbMinLon"> <property name="minimumSize"> <size> <width>60</width> <height>0</height> </size> </property> <property name="decimals"> <number>6</number> </property> <property name="minimum"> <double>-180.000000000000000</double> </property> <property name="maximum"> <double>180.000000000000000</double> </property> <property name="singleStep"> <double>0.010000000000000</double> </property> </widget> </item> <item row="2" column="2"> <widget class="QDoubleSpinBox" name="sbMaxLon"> <property name="minimumSize"> <size> <width>60</width> <height>0</height> </size> </property> <property name="decimals"> <number>6</number> </property> <property name="minimum"> <double>-180.000000000000000</double> </property> <property name="maximum"> <double>180.000000000000000</double> </property> <property name="singleStep"> <double>0.010000000000000</double> </property> </widget> </item> </layout> </item> <item> <widget class="Line" name="line"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> <widget class="QCheckBox" name="cbShowNodes"> <property name="text"> <string>Show Nodes</string> </property> </widget> </item> <item row="0" column="1"> <widget class="QCheckBox" name="cbShowRelations"> <property name="text"> <string>Show Relations</string> </property> </widget> </item> <item row="0" column="2"> <widget class="QCheckBox" name="cbShowScale"> <property name="enabled"> <bool>true</bool> </property> <property name="text"> <string>Show Scale</string> </property> <property name="tristate"> <bool>false</bool> </property> </widget> </item> <item row="0" column="3"> <widget class="QCheckBox" name="cbShowGrid"> <property name="enabled"> <bool>true</bool> </property> <property name="text"> <string>Show Lat/Lon Grid</string> </property> <property name="tristate"> <bool>false</bool> </property> </widget> </item> <item row="1" column="0"> <widget class="QCheckBox" name="cbShowUnstyled"> <property name="text"> <string>Show unstyled features</string> </property> </widget> </item> </layout> </item> <item> <widget class="Line" name="line_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QPushButton" name="btExportPDF"> <property name="text"> <string>Export to PDF...</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btExportSVG"> <property name="text"> <string>Export to SVG...</string> </property> </widget> </item> <item> <widget class="QPushButton" name="btExportRaster"> <property name="text"> <string>Export to Raster...</string> </property> </widget> </item> </layout> </item> </layout> </widget> </item> </layout> </widget> <resources/> <connections/> </ui> ��������������merkaartor-0.18.1/src/Render/Render.pri�������������������������������������������������������������0000664�0000000�0000000�00000000606�11770671653�0017730�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Render DEPENDPATH += $$MERKAARTOR_SRC_DIR/Render # Header files HEADERS += \ FeaturePainter.h \ MapRenderer.h # Source files SOURCES += \ FeaturePainter.cpp \ MapRenderer.cpp isEmpty(MOBILE) { QT += svg HEADERS += \ NativeRenderDialog.h SOURCES += \ NativeRenderDialog.cpp # Forms FORMS += NativeRenderDialog.ui } ��������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/�������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015470�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/DirtyList.cpp������������������������������������������������������������0000664�0000000�0000000�00000060560�11770671653�0020132�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "DirtyList.h" #include "Command.h" #include "Coord.h" #include "DownloadOSM.h" #include "ExportOSM.h" #include "Document.h" #include "Layer.h" #include "Features.h" #include "Utils.h" #include <QtCore/QEventLoop> #include <QtGui/QDialog> #include <QtGui/QListWidget> #include <QtGui/QMessageBox> #include <QtGui/QProgressDialog> #include <QtNetwork/QTcpSocket> #include <QInputDialog> #include <algorithm> int glbAdded, glbUpdated, glbDeleted; QString glbChangeSetComment; QString stripToOSMId(const IFeature::FId& id) { return QString::number(id.numId); } QString userName(const Feature* F) { QString s(F->tagValue("name","")); if (!s.isEmpty()) return " ("+s+")"; return ""; } DirtyList::~DirtyList() { } bool DirtyListBuild::add(Feature* F) { if (!F->isDirty()) return false; //if (F->hasOSMId()) return false; Added.push_back(F); return false; } bool DirtyListBuild::update(Feature* F) { if (!F->isDirty()) return false; for (int i=0; i<Updated.size(); ++i) if (Updated[i] == F) { UpdateCounter[i].first++; return false; } Updated.push_back(F); UpdateCounter.push_back(qMakePair((int) 1, (int)0)); return false; } bool DirtyListBuild::erase(Feature* F) { if (!F->isDirty()) return false; Deleted.push_back(F); return false; } bool DirtyListBuild::willBeAdded(Feature* F) const { return std::find(Added.begin(),Added.end(),F) != Added.end(); } bool DirtyListBuild::willBeErased(Feature* F) const { return std::find(Deleted.begin(),Deleted.end(),F) != Deleted.end(); } bool DirtyListBuild::updateNow(Feature* F) const { for (int i=0; i<Updated.size(); ++i) if (Updated[i] == F) { UpdateCounter[i].second++; return UpdateCounter[i].first == UpdateCounter[i].second; } return false; } void DirtyListBuild::resetUpdates() { for (int i=0; i<UpdateCounter.size(); ++i) UpdateCounter[i].second = 0; } /* DIRTYLISTVISIT */ DirtyListVisit::DirtyListVisit(Document* aDoc, const DirtyListBuild &aBuilder, bool b) : theDocument(aDoc), Future(aBuilder), EraseFromHistory(b) { } bool DirtyListVisit::runVisit() { DeletePass = false; document()->history().buildDirtyList(*this); DeletePass = true; for (int i=0; i<RelationsToDelete.uniqueKeys().size(); i++) { if (!RelationsToDelete.uniqueKeys()[i]->hasOSMId()) continue; RelationsToDelete[RelationsToDelete.uniqueKeys()[i]] = eraseRelation(RelationsToDelete.uniqueKeys()[i]); } for (int i=0; i<RoadsToDelete.uniqueKeys().size(); i++) { if (!RoadsToDelete.uniqueKeys()[i]->hasOSMId()) continue; RoadsToDelete[RoadsToDelete.uniqueKeys()[i]] = eraseRoad(RoadsToDelete.uniqueKeys()[i]); } for (int i=0; i<TrackPointsToDelete.uniqueKeys().size(); i++) { if (!TrackPointsToDelete.uniqueKeys()[i]->hasOSMId()) continue; TrackPointsToDelete[TrackPointsToDelete.uniqueKeys()[i]] = erasePoint(TrackPointsToDelete.uniqueKeys()[i]); } return document()->history().buildDirtyList(*this); } Document* DirtyListVisit::document() { return theDocument; } bool DirtyListVisit::notYetAdded(Feature* F) { return std::find(AlreadyAdded.begin(),AlreadyAdded.end(),F) == AlreadyAdded.end(); } bool DirtyListVisit::add(Feature* F) { if (DeletePass) return false; if (F->isDeleted()) return false; // TODO Needed to add children of updated imported features. Sure there is no advert cases? //if (!F->isDirty()) return false; // Allow "Force Upload" of OSM objects //if (F->hasOSMId()) return false; if (Future.willBeErased(F)) return EraseFromHistory; for (int i=0; i<AlreadyAdded.size(); ++i) if (AlreadyAdded[i] == F) return EraseResponse[i]; bool x; if (Node* Pt = CAST_NODE(F)) { if (Pt->isInteresting()) { if (F->hasOSMId()) x = updatePoint(Pt); else x = addPoint(Pt); AlreadyAdded.push_back(F); EraseResponse.push_back(x); return x; } else return EraseFromHistory; } else if (Way* R = dynamic_cast<Way*>(F)) { for (int i=0; i<R->size(); ++i) if (!R->getNode(i)->isVirtual()) if (!(R->get(i)->hasOSMId()) && notYetAdded(R->get(i))) add(R->get(i)); if (F->hasOSMId()) x = updateRoad(R); else x = addRoad(R); AlreadyAdded.push_back(F); EraseResponse.push_back(x); return x; } else if (Relation* Rel = dynamic_cast<Relation*>(F)) { for (int i=0; i<Rel->size(); ++i) if (!(Rel->get(i)->hasOSMId()) && notYetAdded(Rel->get(i))) add(Rel->get(i)); if (F->hasOSMId()) x = updateRelation(Rel); else x = addRelation(Rel); AlreadyAdded.push_back(F); EraseResponse.push_back(x); return x; } return EraseFromHistory; } bool DirtyListVisit::update(Feature* F) { if (DeletePass) return false; if (!F->isDirty()) return false; if (F->isDeleted()) return false; if (Future.willBeErased(F) || Future.willBeAdded(F)) return EraseFromHistory; if (!Future.updateNow(F)) return EraseFromHistory; if (Node* Pt = dynamic_cast<Node*>(F)) { if (Pt->isInteresting()) { if (!(Pt->hasOSMId()) && notYetAdded(Pt)) return addPoint(Pt); else return updatePoint(Pt); } else return EraseFromHistory; } else if (Way* R = dynamic_cast<Way*>(F)) { for (int i=0; i<R->size(); ++i) if (!(R->get(i)->hasOSMId()) && notYetAdded(R->get(i))) add(R->get(i)); return updateRoad(R); } else if (Relation* Rel = dynamic_cast<Relation*>(F)) { for (int i=0; i<Rel->size(); ++i) if (!(Rel->get(i)->hasOSMId()) && notYetAdded(Rel->get(i))) add(Rel->get(i)); return updateRelation(Rel); } return EraseFromHistory; } bool DirtyListVisit::erase(Feature* F) { if (!F->isDirty()) return false; if (DeletePass) { if (Node* Pt = dynamic_cast<Node*>(F)) return TrackPointsToDelete[Pt]; else if (Way* R = dynamic_cast<Way*>(F)) return RoadsToDelete[R]; else if (Relation* S = dynamic_cast<Relation*>(F)) return RelationsToDelete[S]; } if (Future.willBeAdded(F)) return EraseFromHistory; if (Node* Pt = dynamic_cast<Node*>(F)) { if (Pt->isInteresting()) TrackPointsToDelete[Pt] = false; } else if (Way* R = dynamic_cast<Way*>(F)) RoadsToDelete[R] = false; else if (Relation* S = dynamic_cast<Relation*>(F)) RelationsToDelete[S] = false; return false; } bool DirtyListVisit::noop(Feature* F) { if (!F->isDirty()) return false; if (!F->isDeleted() && !F->isUploadable()) return false; return EraseFromHistory; } /* DIRTYLISTDESCRIBER */ DirtyListDescriber::DirtyListDescriber(Document* aDoc, const DirtyListBuild& aFuture) : DirtyListVisit(aDoc, aFuture, false), Task(0) { glbAdded = glbUpdated = glbDeleted = 0; } int DirtyListDescriber::tasks() const { return Task; } bool DirtyListDescriber::showChanges(QWidget* aParent) { QDialog* dlg = new QDialog(aParent); Ui.setupUi(dlg); dlg->setWindowFlags(dlg->windowFlags() & ~Qt::WindowContextHelpButtonHint); theListWidget = Ui.ChangesList; runVisit(); CoordBox bbox = theDocument->getDirtyOrOriginLayer()->boundingBox(); QString bboxComment = QString("BBOX:%1,%2,%3,%4") .arg(QString::number(bbox.bottomLeft().x(), 'f', 2)) .arg(QString::number(bbox.bottomLeft().y(), 'f', 2)) .arg(QString::number(bbox.topRight().x(), 'f', 2)) .arg(QString::number(bbox.topRight().y(), 'f', 2)); QString statComment = QString("ADD:%1 UPD:%2 DEL:%3").arg(glbAdded).arg(glbUpdated).arg(glbDeleted); glbChangeSetComment = bboxComment + " " + statComment; Ui.edChangesetComment->setText(glbChangeSetComment); Ui.edChangesetComment->selectAll(); bool ok = (dlg->exec() == QDialog::Accepted); if (!Ui.edChangesetComment->text().isEmpty()) glbChangeSetComment = Ui.edChangesetComment->text(); else glbChangeSetComment = "-"; Task = Ui.ChangesList->count(); SAFE_DELETE(dlg) return ok; } bool DirtyListDescriber::addRoad(Way* R) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","ADD road %1").arg(R->id().numId) + userName(R), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(R->id())); ++glbAdded; return false; } bool DirtyListDescriber::addPoint(Node* Pt) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","ADD trackpoint %1").arg(Pt->id().numId) + userName(Pt), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(Pt->id())); ++glbAdded; return false; } bool DirtyListDescriber::addRelation(Relation* R) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","ADD relation %1").arg(R->id().numId) + userName(R), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(R->id())); ++glbAdded; return false; } bool DirtyListDescriber::updatePoint(Node* Pt) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","UPDATE trackpoint %1").arg(Pt->id().numId) + userName(Pt), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(Pt->id())); ++glbUpdated; return false; } bool DirtyListDescriber::updateRelation(Relation* R) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","UPDATE relation %1").arg(R->id().numId) + userName(R), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(R->id())); ++glbUpdated; return false; } bool DirtyListDescriber::updateRoad(Way* R) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","UPDATE road %1").arg(R->id().numId) + userName(R), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(R->id())); ++glbUpdated; return false; } bool DirtyListDescriber::erasePoint(Node* Pt) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","REMOVE trackpoint %1").arg(Pt->id().numId) + userName(Pt), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(Pt->id())); ++glbDeleted; return false; } bool DirtyListDescriber::eraseRoad(Way* R) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","REMOVE road %1").arg(R->id().numId) + userName(R), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(R->id())); ++glbDeleted; return false; } bool DirtyListDescriber::eraseRelation(Relation* R) { QListWidgetItem* it = new QListWidgetItem(QApplication::translate("DirtyListExecutor","REMOVE relation %1").arg(R->id().numId) + userName(R), theListWidget); it->setData(Qt::UserRole, QVariant::fromValue(R->id())); ++glbDeleted; return false; } /* DIRTYLIST */ DirtyListExecutor::DirtyListExecutor(Document* aDoc, const DirtyListBuild& aFuture, const QString& aWeb, const QString& aUser, const QString& aPwd, int aTasks) : DirtyListVisit(aDoc, aFuture, false), Tasks(aTasks), Done(0), Web(aWeb), User(aUser), Pwd(aPwd), theDownloader(0) { theDownloader = new Downloader(User, Pwd); } DirtyListExecutor::~DirtyListExecutor() { delete theDownloader; } bool DirtyListExecutor::sendRequest(const QString& Method, const QString& URL, const QString& Data, QString& Rcv) { if (inError()) return false; QMessageBox::StandardButton theChoice = QMessageBox::Retry; while (theChoice == QMessageBox::Retry) { QUrl theUrl(Web+URL); if (!theDownloader->request(Method,theUrl,Data)) { qDebug() << QString("Upload error: request (%1); Server message is '%2'").arg(theDownloader->resultCode()).arg(theDownloader->resultText()); if (theDownloader->resultCode() == 401) { QMessageBox::warning(Progress,tr("Error uploading request"), tr("Please check your username and password in the Preferences menu")); theChoice = QMessageBox::Abort; } else { QString msg = tr("There was an error uploading this request (%1)\nServer message is '%2'").arg(theDownloader->resultCode()).arg(theDownloader->resultText()); if (!theDownloader->errorText().isEmpty()) msg += tr("\nAPI message is '%1'").arg(theDownloader->errorText()); theChoice = QMessageBox::warning(Progress,tr("Error uploading request"), msg, QMessageBox::Abort | QMessageBox::Retry | QMessageBox::Ignore); continue; } } QByteArray Content = theDownloader->content(); int x = theDownloader->resultCode(); if (x==200) { Rcv = QString::fromUtf8(Content.data()); break; } else { qDebug() << QString("Upload error: request (%1); Server message is '%2'").arg(theDownloader->resultCode()).arg(theDownloader->resultText()); theChoice = QMessageBox::warning(Progress,tr("Error uploading request"), tr("There was an error uploading this request (%1)\nServer message is '%2'").arg(x).arg(theDownloader->resultText()), QMessageBox::Abort | QMessageBox::Retry | QMessageBox::Ignore); continue; } } if (theChoice == QMessageBox::Abort) { errorAbort = true; return false; } return true; } bool DirtyListExecutor::executeChanges(QWidget* aParent) { bool ok; Progress = new QProgressDialog(aParent); Progress->setWindowTitle(tr("Uploading changes...")); Progress->setWindowFlags(Progress->windowFlags() & ~Qt::WindowContextHelpButtonHint); Progress->setWindowFlags(Progress->windowFlags() | Qt::MSWindowsFixedSizeDialogHint); Progress->setWindowModality(Qt::WindowModal); Progress->setMinimumDuration(0); Progress->setMaximum(Tasks+2); Progress->show(); if ((ok = start())) { if ((ok = runVisit())) { ok = stop(); } } SAFE_DELETE(Progress) return ok; } bool DirtyListExecutor::start() { ChangeSetId = ""; Progress->setValue(++Done); qDebug() << QString("OPEN changeset"); Progress->setLabelText(tr("OPEN changeset")); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString DataIn( "<osm>" "<changeset>" "<tag k=\"created_by\" v=\"Merkaartor %1 (%2)\"/>" "<tag k=\"comment\" v=\"%3\"/>" "</changeset>" "</osm>"); DataIn = DataIn.arg(STRINGIFY(VERSION)).arg(QLocale::system().name().split("_")[0]).arg(Utils::encodeAttributes(glbChangeSetComment)); QString DataOut; QString URL = theDownloader->getURLToOpenChangeSet(); if (sendRequest("PUT",URL,DataIn, DataOut)) { ChangeSetId = DataOut; return true; } return false; } bool DirtyListExecutor::stop() { Progress->setValue(++Done); qDebug() << QString("CLOSE changeset"); Progress->setLabelText(tr("CLOSE changeset")); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString URL = theDownloader->getURLToCloseChangeSet(ChangeSetId); QString DataIn, DataOut; if (sendRequest("PUT",URL,DataIn,DataOut)) { ChangeSetId = ""; return true; } return true; } bool DirtyListExecutor::addRelation(Relation *R) { Progress->setValue(++Done); qDebug() << QString("ADD relation %1").arg(R->id().numId); Progress->setLabelText(tr("ADD relation %1").arg(R->id().numId) + userName(R)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString DataIn, DataOut; IFeature::FId OldId; OldId = R->id(); R->setId(IFeature::FId(IFeature::OsmRelation, 0)); DataIn = wrapOSM(exportOSM(*R, ChangeSetId), ChangeSetId); R->setId(OldId); QString URL=theDownloader->getURLToCreate("relation"); if (sendRequest("PUT",URL,DataIn,DataOut)) { // chop off extra spaces, newlines etc R->setId(IFeature::FId(IFeature::OsmRelation, DataOut.toInt())); R->setLastUpdated(Feature::OSMServer); R->setVersionNumber(1); if (!g_Merk_Frisius) { R->layer()->remove(R); document()->getUploadedLayer()->add(R); } R->setUploaded(true); R->setDirtyLevel(0); return EraseFromHistory; } return false; } bool DirtyListExecutor::addRoad(Way *R) { Progress->setValue(++Done); qDebug() << QString("ADD road %1").arg(R->id().numId); Progress->setLabelText(tr("ADD road %1").arg(R->id().numId) + userName(R)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString DataIn, DataOut; IFeature::FId OldId; OldId = R->id(); R->setId(IFeature::FId(IFeature::LineString, 0)); DataIn = wrapOSM(exportOSM(*R, ChangeSetId), ChangeSetId); R->setId(OldId); QString URL=theDownloader->getURLToCreate("way"); if (sendRequest("PUT",URL,DataIn,DataOut)) { // chop off extra spaces, newlines etc R->setId(IFeature::FId(IFeature::LineString, DataOut.toInt())); R->setLastUpdated(Feature::OSMServer); R->setVersionNumber(1); if (!g_Merk_Frisius) { R->layer()->remove(R); document()->getUploadedLayer()->add(R); } R->setUploaded(true); R->setDirtyLevel(0); return EraseFromHistory; } return false; } bool DirtyListExecutor::addPoint(Node* Pt) { Progress->setValue(++Done); qDebug() << QString("ADD trackpoint %1").arg(Pt->id().numId); Progress->setLabelText(tr("ADD trackpoint %1").arg(Pt->id().numId) + userName(Pt)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString DataIn, DataOut; IFeature::FId OldId; OldId = Pt->id(); Pt->setId(IFeature::FId(IFeature::Point, 0)); DataIn = wrapOSM(exportOSM(*Pt, ChangeSetId), ChangeSetId); Pt->setId(OldId); QString URL=theDownloader->getURLToCreate("node"); if (sendRequest("PUT",URL,DataIn,DataOut)) { // chop off extra spaces, newlines etc Pt->setId(IFeature::FId(IFeature::Point, DataOut.toInt())); Pt->setLastUpdated(Feature::OSMServer); Pt->setVersionNumber(1); if (!g_Merk_Frisius) { Pt->layer()->remove(Pt); document()->getUploadedLayer()->add(Pt); } Pt->setUploaded(true); Pt->setDirtyLevel(0); return EraseFromHistory; } return false; } bool DirtyListExecutor::updateRelation(Relation* R) { Progress->setValue(++Done); qDebug() << QString("UPDATE relation %1").arg(R->id().numId); Progress->setLabelText(tr("UPDATE relation %1").arg(R->id().numId) + userName(R)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString URL = theDownloader->getURLToUpdate("relation",stripToOSMId(R->id())); QString DataIn, DataOut; DataIn = wrapOSM(exportOSM(*R, ChangeSetId), ChangeSetId); if (sendRequest("PUT",URL,DataIn,DataOut)) { R->setLastUpdated(Feature::OSMServer); int NewVersion = DataOut.toInt(); if (NewVersion <= R->versionNumber()) NewVersion = R->versionNumber()+1; R->setVersionNumber(NewVersion); if (!g_Merk_Frisius) { R->layer()->remove(R); document()->getUploadedLayer()->add(R); } R->setUploaded(true); R->setDirtyLevel(0); return EraseFromHistory; } return true; } bool DirtyListExecutor::updateRoad(Way* R) { Progress->setValue(++Done); qDebug() << QString("UPDATE road %1").arg(R->id().numId); Progress->setLabelText(tr("UPDATE road %1").arg(R->id().numId) + userName(R)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString URL = theDownloader->getURLToUpdate("way",stripToOSMId(R->id())); QString DataIn, DataOut; DataIn = wrapOSM(exportOSM(*R, ChangeSetId), ChangeSetId); if (sendRequest("PUT",URL,DataIn,DataOut)) { R->setLastUpdated(Feature::OSMServer); int NewVersion = DataOut.toInt(); if (NewVersion <= R->versionNumber()) NewVersion = R->versionNumber()+1; R->setVersionNumber(NewVersion); if (!g_Merk_Frisius) { R->layer()->remove(R); document()->getUploadedLayer()->add(R); } R->setUploaded(true); R->setDirtyLevel(0); return EraseFromHistory; } return true; } bool DirtyListExecutor::updatePoint(Node* Pt) { Progress->setValue(++Done); qDebug() << QString("UPDATE trackpoint %1").arg(Pt->id().numId); Progress->setLabelText(tr("UPDATE trackpoint %1").arg(Pt->id().numId) + userName(Pt)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); // QString URL("/api/0.3/node/%1"); // URL = URL.arg(stripToOSMId(Pt->id())); QString URL = theDownloader->getURLToUpdate("node",stripToOSMId(Pt->id())); QString DataIn, DataOut; DataIn = wrapOSM(exportOSM(*Pt, ChangeSetId), ChangeSetId); if (sendRequest("PUT",URL,DataIn,DataOut)) { Pt->setLastUpdated(Feature::OSMServer); int NewVersion = DataOut.toInt(); if (NewVersion <= Pt->versionNumber()) NewVersion = Pt->versionNumber()+1; Pt->setVersionNumber(NewVersion); if (!g_Merk_Frisius) { Pt->layer()->remove(Pt); document()->getUploadedLayer()->add(Pt); } Pt->setUploaded(true); Pt->setDirtyLevel(0); return EraseFromHistory; } return false; } bool DirtyListExecutor::erasePoint(Node *Pt) { Progress->setValue(++Done); qDebug() << QString("REMOVE trackpoint %1").arg(Pt->id().numId); Progress->setLabelText(tr("REMOVE trackpoint %1").arg(Pt->id().numId) + userName(Pt)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); // QString URL("/api/0.3/node/%1"); // URL = URL.arg(stripToOSMId(Pt->id())); QString URL = theDownloader->getURLToDelete("node",stripToOSMId(Pt->id())); QString DataIn, DataOut; DataIn = wrapOSM(exportOSM(*Pt, ChangeSetId), ChangeSetId); if (sendRequest("DELETE",URL,DataIn,DataOut)) { Pt->setLastUpdated(Feature::OSMServer); if (!g_Merk_Frisius) { Pt->layer()->remove(Pt); document()->getUploadedLayer()->add(Pt); } Pt->setUploaded(true); Pt->setDirtyLevel(0); return EraseFromHistory; } return false; } bool DirtyListExecutor::eraseRoad(Way *R) { Progress->setValue(++Done); qDebug() << QString("REMOVE road %1").arg(R->id().numId); Progress->setLabelText(tr("REMOVE road %1").arg(R->id().numId) + userName(R)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); // QString URL("/api/0.3/way/%1"); // URL = URL.arg(stripToOSMId(R->id())); QString URL = theDownloader->getURLToDelete("way",stripToOSMId(R->id())); QString DataIn, DataOut; DataIn = wrapOSM(exportOSM(*R, ChangeSetId), ChangeSetId); if (sendRequest("DELETE",URL,DataIn,DataOut)) { R->setLastUpdated(Feature::OSMServer); if (!g_Merk_Frisius) { R->layer()->remove(R); document()->getUploadedLayer()->add(R); } R->setUploaded(true); R->setDirtyLevel(0); return EraseFromHistory; } return false; } bool DirtyListExecutor::eraseRelation(Relation *R) { Progress->setValue(++Done); qDebug() << QString("REMOVE relation %1").arg(R->id().numId); Progress->setLabelText(tr("REMOVE relation %1").arg(R->id().numId) + userName(R)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString URL = theDownloader->getURLToDelete("relation",stripToOSMId(R->id())); QString DataIn, DataOut; DataIn = wrapOSM(exportOSM(*R, ChangeSetId), ChangeSetId); if (sendRequest("DELETE",URL,DataIn,DataOut)) { R->setLastUpdated(Feature::OSMServer); if (!g_Merk_Frisius) { R->layer()->remove(R); document()->getUploadedLayer()->add(R); } R->setUploaded(true); R->setDirtyLevel(0); return EraseFromHistory; } return false; } ������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/DirtyList.h��������������������������������������������������������������0000664�0000000�0000000�00000010437�11770671653�0017575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_DIRTYLIST_H_ #define MERKATOR_DIRTYLIST_H_ class Downloader; class Document; class Feature; class Relation; class Way; class Node; class Way; class QProgressDialog; class QWidget; #include <ui_SyncListDialog.h> #include <QtCore/QObject> #include <QtCore/QString> #include <utility> #include <QList> class DirtyList { public: DirtyList() : errorAbort(false) {} virtual ~DirtyList() = 0; virtual bool add(Feature* F) = 0; virtual bool update(Feature* F) = 0; virtual bool erase(Feature* F) = 0; virtual bool noop(Feature* F) = 0; virtual bool inError() {return errorAbort; } protected: bool errorAbort; }; class DirtyListBuild : public DirtyList { public: virtual bool add(Feature* F); virtual bool update(Feature* F); virtual bool erase(Feature* F); virtual bool noop(Feature*) {return false;} virtual bool willBeAdded(Feature* F) const; virtual bool willBeErased(Feature* F) const; virtual bool updateNow(Feature* F) const; virtual void resetUpdates(); protected: QList<Feature*> Added, Deleted; QList<Feature*> Updated; mutable QList<QPair<int, int> > UpdateCounter; }; class DirtyListVisit : public DirtyList { public: DirtyListVisit(Document* aDoc, const DirtyListBuild& aFuture, bool aEraseFromHistory); Document* document(); bool runVisit(); virtual bool add(Feature* F); virtual bool update(Feature* F); virtual bool erase(Feature* F); virtual bool noop(Feature* F); virtual bool addPoint(Node* Pt) = 0; virtual bool addRoad(Way* R) = 0; virtual bool addRelation(Relation* R) = 0; virtual bool updatePoint(Node* Pt) = 0; virtual bool updateRoad(Way* R) = 0; virtual bool updateRelation(Relation* R) = 0; virtual bool erasePoint(Node* Pt) = 0; virtual bool eraseRoad(Way* R) = 0; virtual bool eraseRelation(Relation* R) = 0; protected: bool notYetAdded(Feature* F); Document* theDocument; const DirtyListBuild& Future; bool EraseFromHistory; QList<Feature*> Updated; QList<Feature*> AlreadyAdded; QList<bool> EraseResponse; bool DeletePass; QMap<Node*, bool> TrackPointsToDelete; QMap<Way*, bool> RoadsToDelete; QMap<Relation*, bool> RelationsToDelete; }; class DirtyListDescriber : public DirtyListVisit { public: DirtyListDescriber(Document* aDoc, const DirtyListBuild& aFuture); virtual bool addPoint(Node* Pt); virtual bool addRoad(Way* R); virtual bool addRelation(Relation* R); virtual bool updatePoint(Node* Pt); virtual bool updateRoad(Way* R); virtual bool updateRelation(Relation *R); virtual bool erasePoint(Node* Pt); virtual bool eraseRoad(Way* R); virtual bool eraseRelation(Relation* R); bool showChanges(QWidget* Parent); int tasks() const; private: Ui::SyncListDialog Ui; protected: QListWidget* theListWidget; int Task; }; class DirtyListExecutor : public QObject, public DirtyListVisit { Q_OBJECT public: DirtyListExecutor(Document* aDoc, const DirtyListBuild& aFuture, const QString& aWeb, const QString& aUser, const QString& aPwd, int aTasks); virtual ~DirtyListExecutor(); virtual bool start(); virtual bool stop(); virtual bool addPoint(Node* Pt); virtual bool addRoad(Way* R); virtual bool addRelation(Relation* R); virtual bool updatePoint(Node* Pt); virtual bool updateRoad(Way* R); virtual bool updateRelation(Relation* R); virtual bool erasePoint(Node* Pt); virtual bool eraseRoad(Way* R); virtual bool eraseRelation(Relation* R); bool executeChanges(QWidget* Parent); private: bool sendRequest(const QString& Method, const QString& URL, const QString& Out, QString& Rcv); Ui::SyncListDialog Ui; int Tasks, Done; QProgressDialog* Progress; QString Web,User,Pwd; Downloader* theDownloader; QString ChangeSetId; }; QString stripToOSMId(const QString& id); QString userName(const Feature* F); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/DirtyListExecutorOSC.cpp�������������������������������������������������0000664�0000000�0000000�00000034402�11770671653�0022212�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: DirtyListExecutorOSCOSC // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "Global.h" #include "DirtyListExecutorOSC.h" #include "MainWindow.h" #include "Features.h" #include "DownloadOSM.h" #include "MerkaartorPreferences.h" #include "Command.h" #include "Utils.h" #include <QMessageBox> #include <QDebug> #include <QProgressDialog> #include <QRegExp> extern int glbAdded, glbUpdated, glbDeleted; extern QString glbChangeSetComment; DirtyListExecutorOSC::DirtyListExecutorOSC(Document* aDoc, const DirtyListBuild& aFuture) : DirtyListVisit(aDoc, aFuture, false) , Done(0) , theDownloader(0) { } DirtyListExecutorOSC::DirtyListExecutorOSC(Document* aDoc, const DirtyListBuild& aFuture, const QString& aWeb, const QString& aUser, const QString& aPwd, int aTasks) : DirtyListVisit(aDoc, aFuture, false), Tasks(aTasks), Done(0), Web(aWeb), User(aUser), Pwd(aPwd), theDownloader(0) { theDownloader = new Downloader(User, Pwd); } DirtyListExecutorOSC::~DirtyListExecutorOSC() { delete theDownloader; } int DirtyListExecutorOSC::sendRequest(const QString& Method, const QString& URL, const QString& Data, QString& Rcv) { if (inError()) return false; int rCode; QMessageBox::StandardButton theChoice = QMessageBox::Retry; while (theChoice == QMessageBox::Retry) { QUrl theUrl(Web+URL); if (!theDownloader->request(Method,theUrl,Data)) { qDebug() << QString("Upload error: request (%1); Server message is '%2'").arg(theDownloader->resultCode()).arg(theDownloader->resultText()); if (theDownloader->resultCode() == 401) { QMessageBox::warning(Progress,tr("Error uploading request"), tr("Please check your username and password in the Preferences menu")); theChoice = QMessageBox::Abort; } else { QString msg = tr("There was an error uploading this request (%1)\nServer message is '%2'").arg(theDownloader->resultCode()).arg(theDownloader->resultText()); if (!theDownloader->errorText().isEmpty()) msg += tr("\nAPI message is '%1'").arg(theDownloader->errorText()); theChoice = QMessageBox::warning(Progress,tr("Error uploading request"), msg, QMessageBox::Abort | QMessageBox::Retry); continue; } } QByteArray Content = theDownloader->content(); Rcv = QString::fromUtf8(Content.data()); rCode = theDownloader->resultCode(); qDebug() << QString("Upload: rCode (%1); Msg (%2)").arg(rCode).arg(Rcv); if (rCode == 200) break; theChoice = QMessageBox::warning(Progress,tr("Error uploading request"), tr( "There was an error uploading this request (%1)\n\"%2\"\n" "Please redownload the problematic feature to handle the conflict." ).arg(rCode).arg(Rcv), QMessageBox::Abort | QMessageBox::Retry); } if (theChoice == QMessageBox::Abort) { errorAbort = true; return rCode; } return rCode; } QByteArray DirtyListExecutorOSC::getChanges() { Progress = new QProgressDialog(0); Progress->setWindowTitle(tr("Checking changes...")); Progress->setWindowFlags(Progress->windowFlags() & ~Qt::WindowContextHelpButtonHint); Progress->setWindowFlags(Progress->windowFlags() | Qt::MSWindowsFixedSizeDialogHint); Progress->setWindowModality(Qt::WindowModal); Progress->setMinimumDuration(0); Progress->setMaximum(Tasks+2); Progress->show(); OscBuffer.buffer().clear(); OscBuffer.open(QIODevice::WriteOnly); OscStream.setDevice(&OscBuffer); OscStream.writeStartDocument(); OscStream.writeStartElement("osmChange "); OscStream.writeAttribute("version", "0.3"); OscStream.writeAttribute("generator", QString("Merkaartor %1").arg(STRINGIFY(VERSION))); runVisit(); SAFE_DELETE(Progress) OscStream.writeEndDocument(); OscBuffer.close(); return OscBuffer.buffer(); } bool DirtyListExecutorOSC::executeChanges(QWidget* aParent) { bool ok = true; #ifndef _MOBILE MainWindow* main = dynamic_cast<MainWindow*>(aParent); main->createProgressDialog(); Progress = main->getProgressDialog(); if (Progress) { Progress->setMaximum(Tasks); Progress->setWindowTitle(QApplication::translate("Downloader", "Uploading...")); } QProgressBar* Bar = main->getProgressBar(); Bar->setTextVisible(false); QLabel* Lbl = main->getProgressLabel(); if (Progress) Progress->show(); if (theDownloader) theDownloader->setAnimator(Progress,Lbl,Bar,false); if ((ok = start())) { OscBuffer.buffer().clear(); OscBuffer.open(QIODevice::WriteOnly); OscStream.setDevice(&OscBuffer); OscStream.writeStartDocument(); OscStream.writeStartElement("osmChange "); OscStream.writeAttribute("version", "0.3"); OscStream.writeAttribute("generator", QString("Merkaartor %1").arg(STRINGIFY(VERSION))); Lbl->setText(QApplication::translate("Downloader","Preparing changes")); if ((ok = runVisit())) { Lbl->setText(QApplication::translate("Downloader","Waiting for server response")); ok = stop(); } } main->deleteProgressDialog(); #endif return ok; } bool DirtyListExecutorOSC::start() { ChangeSetId = ""; Progress->setValue(++Done); qDebug() << QString("OPEN changeset"); Progress->setLabelText(tr("OPEN changeset")); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); QString DataIn( "<osm>" "<changeset>" "<tag k=\"created_by\" v=\"Merkaartor %1 (%2)\"/>" "<tag k=\"comment\" v=\"%3\"/>" "</changeset>" "</osm>"); DataIn = DataIn.arg(STRINGIFY(VERSION)).arg(QLocale::system().name().split("_")[0]).arg(Utils::encodeAttributes(glbChangeSetComment)); QString DataOut; QString URL = theDownloader->getURLToOpenChangeSet(); if (sendRequest("PUT",URL,DataIn, DataOut) != 200) return false; ChangeSetId = DataOut; return true; } bool DirtyListExecutorOSC::stop() { QString DataIn, DataOut; QString errFeat; OscStream.writeEndDocument(); OscBuffer.close(); qDebug() << OscBuffer.buffer(); QString URL = theDownloader->getURLToUploadDiff(ChangeSetId); switch (sendRequest("POST", URL, QString::fromUtf8(OscBuffer.buffer().data()), DataOut)) { case 200: { QDomDocument resDoc; if (resDoc.setContent(DataOut)) { QDomNodeList nl = resDoc.elementsByTagName("diffResult"); if (nl.size()) { QDomElement resRoot = nl.at(0).toElement(); QDomElement c = resRoot.firstChildElement(); while (!c.isNull()) { IFeature::FeatureType aType; if (c.tagName() == "node") aType = IFeature::Point; else if (c.tagName() == "way") aType = IFeature::LineString; else if (c.tagName() == "relation") aType = IFeature::OsmRelation; Feature* F = theDocument->getFeature(IFeature::FId(aType, c.attribute("old_id").toLongLong())); if (F) { F->setId(IFeature::FId(aType, c.attribute("new_id").toLongLong())); F->setVersionNumber(c.attribute("new_version").toInt()); F->setLastUpdated(Feature::OSMServer); F->setUser("me"); F->setTime(QDateTime::currentDateTime()); if (!g_Merk_Frisius) { F->layer()->remove(F); document()->getUploadedLayer()->add(F); } F->setUploaded(true); F->setDirtyLevel(0); } else qDebug() << "Feature not found in diff upload result: " << c.attribute("old_id"); c = c.nextSiblingElement(); } theDocument->history().cleanup(); } } break; } case 409: { // Confilct // QRegExp rx(".*node.*(\\d+)", Qt::CaseInsensitive); // if (rx.indexIn(DataOut) > -1) { // errFeat = "node_" + rx.cap(1); // } else { // QRegExp rx(".*way.*(\\d+)", Qt::CaseInsensitive); // if (rx.indexIn(DataOut) > -1) { // errFeat = "way_" + rx.cap(1); // } else { // QRegExp rx(".*relation.*(\\d+)", Qt::CaseInsensitive); // if (rx.indexIn(DataOut) > -1) { // errFeat = "rel_" + rx.cap(1); // } // } // } // qDebug() << errFeat; break; } case 410: { // Gone // QRegExp rx(".*node.*(\\d+)", Qt::CaseInsensitive); // if (rx.indexIn(DataOut) > -1) { // errFeat = "node_" + rx.cap(1); // } else { // QRegExp rx(".*way.*(\\d+)", Qt::CaseInsensitive); // if (rx.indexIn(DataOut) > -1) { // errFeat = "way_" + rx.cap(1); // } else { // QRegExp rx(".*relation.*(\\d+)", Qt::CaseInsensitive); // if (rx.indexIn(DataOut) > -1) { // errFeat = "rel_" + rx.cap(1); // } // } // } // qDebug() << errFeat; break; } default: break; } qDebug() << QString("CLOSE changeset"); Progress->setLabelText(tr("CLOSE changeset")); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); URL = theDownloader->getURLToCloseChangeSet(ChangeSetId); QUrl theUrl(Web+URL); theDownloader->setAnimator(NULL, NULL, NULL, false); theDownloader->request("PUT",theUrl,DataIn, true); return true; } void DirtyListExecutorOSC::OscCreate(Feature* F) { if (LastAction != "create") { if (!LastAction.isEmpty()) OscStream.writeEndElement(); OscStream.writeStartElement("create"); LastAction = "create"; } F->toXML(OscStream, Progress, true, ChangeSetId); } void DirtyListExecutorOSC::OscModify(Feature* F) { if (LastAction != "modify") { if (!LastAction.isEmpty()) OscStream.writeEndElement(); OscStream.writeStartElement("modify"); LastAction = "modify"; } F->toXML(OscStream, Progress, true, ChangeSetId); } void DirtyListExecutorOSC::OscDelete(Feature* F) { if (LastAction != "delete") { if (!LastAction.isEmpty()) OscStream.writeEndElement(); OscStream.writeStartElement("delete"); LastAction = "modify"; } F->toXML(OscStream, Progress, true, ChangeSetId); } bool DirtyListExecutorOSC::addRelation(Relation *F) { qDebug() << QString("ADD relation %1").arg(F->id().numId); Progress->setLabelText(tr("ADD relation %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscCreate(F); return false; } bool DirtyListExecutorOSC::addRoad(Way *F) { Progress->setValue(++Done); qDebug() << QString("ADD road %1").arg(F->id().numId); Progress->setLabelText(tr("ADD road %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscCreate(F); return false; } bool DirtyListExecutorOSC::addPoint(Node* F) { Progress->setValue(++Done); qDebug() << QString("ADD trackpoint %1").arg(F->id().numId); Progress->setLabelText(tr("ADD trackpoint %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscCreate(F); return false; } bool DirtyListExecutorOSC::updateRelation(Relation* F) { Progress->setValue(++Done); qDebug() << QString("UPDATE relation %1").arg(F->id().numId); Progress->setLabelText(tr("UPDATE relation %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscModify(F); return false; } bool DirtyListExecutorOSC::updateRoad(Way* F) { Progress->setValue(++Done); qDebug() << QString("UPDATE road %1").arg(F->id().numId); Progress->setLabelText(tr("UPDATE road %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscModify(F); return false; } bool DirtyListExecutorOSC::updatePoint(Node* F) { Progress->setValue(++Done); qDebug() << QString("UPDATE trackpoint %1").arg(F->id().numId); Progress->setLabelText(tr("UPDATE trackpoint %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscModify(F); return false; } bool DirtyListExecutorOSC::erasePoint(Node *F) { Progress->setValue(++Done); qDebug() << QString("REMOVE trackpoint %1").arg(F->id().numId); Progress->setLabelText(tr("REMOVE trackpoint %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscDelete(F); return false; } bool DirtyListExecutorOSC::eraseRoad(Way *F) { Progress->setValue(++Done); qDebug() << QString("REMOVE road %1").arg(F->id().numId); Progress->setLabelText(tr("REMOVE road %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscDelete(F); return false; } bool DirtyListExecutorOSC::eraseRelation(Relation *F) { Progress->setValue(++Done); qDebug() << QString("REMOVE relation %1").arg(F->id().numId); Progress->setLabelText(tr("REMOVE relation %1").arg(F->id().numId) + userName(F)); QEventLoop L; L.processEvents(QEventLoop::ExcludeUserInputEvents); OscDelete(F); return false; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/DirtyListExecutorOSC.h���������������������������������������������������0000664�0000000�0000000�00000003376�11770671653�0021665�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: DirtyListExecutorOSCOSC // // Description: // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef DirtyListExecutorOSC_H #define DirtyListExecutorOSC_H #include "DirtyList.h" #include <QXmlStreamWriter> #include <QBuffer> class Downloader; class DirtyListExecutorOSC : public QObject, public DirtyListVisit { Q_OBJECT public: DirtyListExecutorOSC(Document* aDoc, const DirtyListBuild& aFuture); DirtyListExecutorOSC(Document* aDoc, const DirtyListBuild& aFuture, const QString& aWeb, const QString& aUser, const QString& aPwd, int aTasks); virtual ~DirtyListExecutorOSC(); void OscCreate(Feature* F); void OscModify(Feature* F); void OscDelete(Feature* F); virtual bool start(); virtual bool stop(); virtual bool addPoint(Node* Pt); virtual bool addRoad(Way* R); virtual bool addRelation(Relation* R); virtual bool updatePoint(Node* Pt); virtual bool updateRoad(Way* R); virtual bool updateRelation(Relation* R); virtual bool erasePoint(Node* Pt); virtual bool eraseRoad(Way* R); virtual bool eraseRelation(Relation* R); bool executeChanges(QWidget* Parent); QByteArray getChanges(); private: int sendRequest(const QString& Method, const QString& URL, const QString& Out, QString& Rcv); QXmlStreamWriter OscStream; QBuffer OscBuffer; Ui::SyncListDialog Ui; int Tasks, Done; QProgressDialog* Progress; QString Web,User,Pwd; Downloader* theDownloader; QString ChangeSetId; QString LastAction; }; #endif // DirtyListExecutorOSC_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/DownloadOSM.cpp����������������������������������������������������������0000664�0000000�0000000�00000072301�11770671653�0020325�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "DownloadOSM.h" #include "MainWindow.h" #include "MapView.h" #include "Coord.h" #include "ImportGPX.h" #include "ImportExportGdal.h" #include "ImportOSM.h" #include "Document.h" #include "Layer.h" #include "Feature.h" #include "TrackSegment.h" #include "SlippyMapWidget.h" #include "MerkaartorPreferences.h" #include "OsmLink.h" #include "IProgressWindow.h" #include <ui_DownloadMapDialog.h> #include <QBuffer> #include <QTimer> #include <QComboBox> #include <QMessageBox> #include <QProgressBar> #include <QLabel> #include <QProgressDialog> #include <QStatusBar> #include <QInputDialog> #include <zlib.h> // #define DEBUG_EVERY_CALL // #define DEBUG_MAPCALL_ONLY // #define DEBUG_NONGET_CALL /* DOWNLOADER */ Downloader::Downloader(const QString& aUser, const QString& aPwd) : User(aUser), Password(aPwd), Id(0),Error(false), AnimatorLabel(0), AnimatorBar(0), AnimationTimer(0) { //IdAuth = Request.setUser(User.toUtf8(), Password.toUtf8()); // connect(&Request,SIGNAL(done(bool)), this,SLOT(allDone(bool))); connect(&Request,SIGNAL(requestFinished(int, bool)),this,SLOT(on_requestFinished(int, bool))); connect(&Request,SIGNAL(dataReadProgress(int, int)), this,SLOT(progress(int, int))); connect(&Request, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), this, SLOT(on_responseHeaderReceived(const QHttpResponseHeader &))); } void Downloader::animate() { if (AnimatorBar && AnimationTimer) AnimatorBar->setValue((AnimatorBar->value()+1) % AnimatorBar->maximum()); } void Downloader::setAnimator(QProgressDialog *anAnimator, QLabel* anAnimatorLabel, QProgressBar* anAnimatorBar, bool anAnimate) { if (AnimationTimer) delete AnimationTimer; AnimatorLabel = anAnimatorLabel; AnimatorBar = anAnimatorBar; if (AnimatorBar && anAnimate) { AnimationTimer = new QTimer(this); connect(AnimationTimer,SIGNAL(timeout()),this,SLOT(animate())); } if (AnimatorBar) { AnimatorBar->setValue(0); if (anAnimator) connect(anAnimator,SIGNAL(canceled()),this,SLOT(on_Cancel_clicked())); qApp->processEvents(); } } void Downloader::on_Cancel_clicked() { Error = true; if (Loop.isRunning()) Loop.exit(QDialog::Rejected); } #include "QtGui/QTextBrowser" void showDebug(const QString& Method, const QString& URL, const QString& Sent, const QByteArray& arr) { static int Download = 0; ++Download; QTextBrowser* b = new QTextBrowser; b->setWindowTitle(Method + " " + URL+" -- "+QString::number(Download)); if (Sent.length()) { b->append(Sent+QString("\n")); b->append(" <======================== "+QString("\n")); b->append(" ========================> "+QString("\n")); } b->append(QString::fromUtf8(arr)); b->setAttribute(Qt::WA_DeleteOnClose,true); b->show(); b->raise(); } #define CHUNK 4096 QByteArray gzipDecode(const QByteArray& In) { QByteArray Total; int ret; unsigned have; z_stream strm; char in[CHUNK+2]; char out[CHUNK+2]; /* allocate inflate state */ strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; strm.avail_in = 0; strm.next_in = Z_NULL; ret = inflateInit2(&strm,15+32); if (ret != Z_OK) { (void)inflateEnd(&strm); return Total; } int RealSize = In.size(); for (int i=0; i<RealSize/CHUNK+1; ++i) { int Left = RealSize-(i*CHUNK); if (Left > CHUNK) Left = CHUNK; memcpy(in,In.constData()+(i*CHUNK),Left); strm.avail_in = Left; strm.next_in = reinterpret_cast<unsigned char*>(in); /* run inflate() on input until output buffer not full */ do { strm.avail_out = CHUNK; strm.next_out = reinterpret_cast<unsigned char*>(out); ret = inflate(&strm, Z_NO_FLUSH); if (ret == Z_STREAM_ERROR) { (void)inflateEnd(&strm); return Total; } switch (ret) { case Z_NEED_DICT: ret = Z_DATA_ERROR; /* and fall through */ case Z_DATA_ERROR: case Z_MEM_ERROR: (void)inflateEnd(&strm); return Total; } have = CHUNK - strm.avail_out; out[have] = 0; Total.append(QByteArray(out,have)); } while (strm.avail_out == 0); } (void)inflateEnd(&strm); return Total; } bool Downloader::go(const QUrl& url) { if (Error) return false; Request.setProxy(M_PREFS->getProxy(url)); Request.setHost(url.host(),url.port(80)); if (AnimationTimer) AnimationTimer->start(200); Content.clear(); QBuffer ResponseBuffer(&Content); ResponseBuffer.open(QIODevice::WriteOnly); QString sReq = url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); qDebug() << "Downloader::go: " << url << sReq; QHttpRequestHeader Header("GET",sReq); Header.setValue("Accept-Encoding", "gzip,deflate"); Header.setValue("Host",url.host()+':'+QString::number(url.port(80))); Header.setValue("User-Agent", USER_AGENT); Content.clear(); Id = Request.request(Header,QByteArray(), &ResponseBuffer); if (Loop.exec() == QDialog::Rejected) { Request.abort(); return false; } if (Error) { QMessageBox::information(0,tr("error"),Request.errorString()); } if (Request.lastResponse().hasContentLength() && Content.size() != (int)Request.lastResponse().contentLength()) { QMessageBox::information(0,tr("didn't download enough"),QString("%1 %2").arg(Content.size()).arg(Request.lastResponse().contentLength())); } if (Request.lastResponse().hasKey("Content-encoding")) { QString t(Request.lastResponse().value("Content-encoding")); if (t == "gzip") { QByteArray Uncompressed(gzipDecode(Content)); Content = Uncompressed; } } #ifdef DEBUG_EVERY_CALL showDebug("GET", Web.path() + url, QByteArray() ,Content); #endif SAFE_DELETE(AnimationTimer); LocationText = Request.lastResponse().value("Location"); Result = Request.lastResponse().statusCode(); switch (Result) { case 301: case 302: case 307: { qDebug() << "New location: " << LocationText; if (!LocationText.isEmpty()) { QUrl aURL(LocationText); return go(aURL); } break; } } ResultText = Request.lastResponse().reasonPhrase(); ErrorText = Request.lastResponse().value("Error"); return !Error; } bool Downloader::request(const QString& Method, const QUrl& url, const QString& Data, bool FireForget) { if (Error) return false; Request.setProxy(M_PREFS->getProxy(url)); Request.setHost(url.host(),url.port(80)); qDebug() << "Downloader::request: " << url; QByteArray ba(Data.toUtf8()); QBuffer Buf(&ba); QString sReq = url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority); QHttpRequestHeader Header(Method,sReq); Header.setValue("Host",url.host()+':'+QString::number(url.port(80))); Header.setValue("User-Agent", USER_AGENT); Header.setValue("Content-Type", "text/xml"); QString auth = QString("%1:%2").arg(User).arg(Password); QByteArray ba_auth = auth.toUtf8().toBase64(); Header.setValue("Authorization", QString("Basic %1").arg(QString(ba_auth))); Content.clear(); Id = Request.request(Header,ba); if (FireForget) return true; if (Loop.exec() == QDialog::Rejected) { Request.abort(); return false; } Content = Request.readAll(); if (Request.lastResponse().hasKey("Content-encoding")) { QString t(Request.lastResponse().value("Content-encoding")); if (t == "gzip") { QByteArray Uncompressed(gzipDecode(Content)); Content = Uncompressed; } } #ifdef DEBUG_NONGET_CALL showDebug(Method,URL,Data,Content); #endif Result = Request.lastResponse().statusCode(); ResultText = Request.lastResponse().reasonPhrase(); ErrorText = Request.lastResponse().value("Error"); return !Error; } QByteArray& Downloader::content() { return Content; } void Downloader::on_responseHeaderReceived(const QHttpResponseHeader & hdr) { //switch (hdr.statusCode()) { // case 200: // break; // case 406: // QMessageBox::critical(NULL,QApplication::translate("MerkaartorPreferences","Preferences upload failed"), QApplication::translate("MerkaartorPreferences","Duplicate key")); // break; // case 413: // QMessageBox::critical(NULL,QApplication::translate("MerkaartorPreferences","Preferences upload failed"), QApplication::translate("MerkaartorPreferences","More than 150 preferences")); // break; // default: // qDebug() << hdr.statusCode(); // qDebug() << hdr.reasonPhrase(); // break; //} qDebug() << "Downloader::on_responseHeaderReceived: " << hdr.statusCode() << hdr.reasonPhrase(); } void Downloader::on_requestFinished(int anId, bool anError) { if (anError) Error = true; if ( (anId == Id) && Loop.isRunning() ) Loop.exit(QDialog::Accepted); } void Downloader::progress(int done, int total) { if (AnimatorLabel && AnimatorBar) { if (done < 10240) AnimatorLabel->setText(tr("Downloading from OSM (%n bytes)", "", done)); else AnimatorLabel->setText(tr("Downloading from OSM (%n kBytes)", "", (done/1024))); if (AnimationTimer && total != 0) { SAFE_DELETE(AnimationTimer); AnimatorBar->setMaximum(total); } if (!AnimationTimer && AnimatorBar) AnimatorBar->setValue(done); } } int Downloader::resultCode() { return Result; } const QString &Downloader::resultText() { return ResultText; } const QString &Downloader::errorText() { return ErrorText; } const QString &Downloader::locationText() { return LocationText; } QString Downloader::getURLToOpenChangeSet() { return QString("/changeset/create"); } QString Downloader::getURLToCloseChangeSet(const QString& Id) { return QString("/changeset/%1/close").arg(Id); } QString Downloader::getURLToUploadDiff(QString changesetId) { return QString("/changeset/%1/upload").arg(changesetId); } QString Downloader::getURLToFetch(const QString &What) { QString URL = QString("/%1?%2="); return URL.arg(What).arg(What); } QString Downloader::getURLToFetchFull(IFeature::FId id) { QString type; if (id.type & IFeature::Point) type = "node"; else if (id.type & IFeature::LineString) type = "way"; else if (id.type & IFeature::OsmRelation) type = "relation"; QString URL = QString("/%1/%2/full"); return URL.arg(type).arg(id.numId); } QString Downloader::getURLToFetchFull(Feature* aFeature) { return getURLToFetchFull(aFeature->id()); } QString Downloader::getURLToFetch(const QString &What, const QString& Id) { QString URL = QString("/%1/%2"); return URL.arg(What).arg(Id); } QString Downloader::getURLToCreate(const QString &What) { QString URL = QString("/%1/create"); return URL.arg(What); } QString Downloader::getURLToUpdate(const QString &What, const QString& Id) { QString URL = QString("/%1/%2"); return URL.arg(What).arg(Id); } QString Downloader::getURLToDelete(const QString &What, const QString& Id) { QString URL = QString("/%1/%2"); return URL.arg(What).arg(Id); } QString Downloader::getURLToMap() { QString URL("/map?bbox=%1,%2,%3,%4"); return URL; } QString Downloader::getURLToTrackPoints() { QString URL = QString("/trackpoints?bbox=%1,%2,%3,%4&page=%5"); return URL; } bool downloadOSM(QWidget* aParent, const QUrl& theUrl, const QString& aUser, const QString& aPassword, Document* theDocument, Layer* theLayer) { Downloader Rcv(aUser, aPassword); IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(aParent); if (aProgressWindow) { QProgressDialog* dlg = aProgressWindow->getProgressDialog(); if (dlg) { dlg->setWindowTitle(QApplication::translate("Downloader","Downloading...")); dlg->setWindowFlags(dlg->windowFlags() & ~Qt::WindowContextHelpButtonHint); dlg->setWindowFlags(dlg->windowFlags() | Qt::MSWindowsFixedSizeDialogHint); } QProgressBar* Bar = aProgressWindow->getProgressBar(); Bar->setTextVisible(false); Bar->setMaximum(11); QLabel* Lbl = aProgressWindow->getProgressLabel(); Lbl->setText(QApplication::translate("Downloader","Downloading from OSM (connecting)")); if (dlg) dlg->show(); Rcv.setAnimator(dlg, Lbl, Bar, true); } if (!Rcv.go(theUrl)) { #ifndef _MOBILE aParent->setCursor(QCursor(Qt::ArrowCursor)); #endif return false; } #ifdef DEBUG_MAPCALL_ONLY showDebug("GET", URL,QByteArray(), Rcv.content()); #endif int x = Rcv.resultCode(); switch (x) { case 200: break; case 301: case 302: case 307: { QString aWeb = Rcv.locationText(); if (!aWeb.isEmpty()) { QUrl aURL(aWeb); return downloadOSM(aParent, aURL, aUser, aPassword, theDocument, theLayer); } else { QString msg = QApplication::translate("Downloader","Unexpected http status code (%1)\nServer message is '%2'").arg(x).arg(Rcv.resultText()); if (!Rcv.errorText().isEmpty()) msg += QApplication::translate("Downloader", "\nAPI message is '%1'").arg(Rcv.errorText()); QMessageBox::warning(aParent,QApplication::translate("Downloader","Download failed"), msg); return false; } break; } case 401: QMessageBox::warning(aParent,QApplication::translate("Downloader","Download failed"),QApplication::translate("Downloader","Username/password invalid")); return false; default: QString msg = QApplication::translate("Downloader","Unexpected http status code (%1)\nServer message is '%2'").arg(x).arg(Rcv.resultText()); if (!Rcv.errorText().isEmpty()) msg += QApplication::translate("Downloader", "\nAPI message is '%1'").arg(Rcv.errorText()); QMessageBox::warning(aParent,QApplication::translate("Downloader","Download failed"), msg); return false; } Downloader Down(aUser, aPassword); bool OK = importOSM(aParent, Rcv.content(), theDocument, theLayer, &Down); return OK; } bool downloadOSM(QWidget* aParent, const QString& aWeb, const QString& aUser, const QString& aPassword, const CoordBox& aBox , Document* theDocument, Layer* theLayer) { if (checkForConflicts(theDocument)) { QMessageBox::warning(aParent,QApplication::translate("Downloader","Unresolved conflicts"), QApplication::translate("Downloader","Please resolve existing conflicts first")); return false; } Downloader Rcv(aUser, aPassword); QString URL = Rcv.getURLToMap(); URL = URL.arg(aBox.bottomLeft().x(), 0, 'f').arg(aBox.bottomLeft().y(), 0, 'f').arg(aBox.topRight().x(), 0, 'f').arg(aBox.topRight().y(), 0, 'f'); QUrl theUrl(aWeb+URL); return downloadOSM(aParent, theUrl, aUser, aPassword, theDocument, theLayer); } bool downloadTracksFromOSM(QWidget* Main, const QString& aWeb, const QString& aUser, const QString& aPassword, const CoordBox& aBox , Document* theDocument) { Downloader theDownloader(aUser, aPassword); QList<TrackLayer*> theTracklayers; //TrackMapLayer* trackLayer = new TrackMapLayer(QApplication::translate("Downloader","Downloaded tracks")); //theDocument->add(trackLayer); IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(Main); if (!aProgressWindow) return false; QProgressDialog* dlg = aProgressWindow->getProgressDialog(); dlg->setWindowTitle(QApplication::translate("Downloader","Parsing...")); QProgressBar* Bar = aProgressWindow->getProgressBar(); Bar->setTextVisible(false); Bar->setMaximum(11); QLabel* Lbl = aProgressWindow->getProgressLabel(); Lbl->setText(QApplication::translate("Downloader","Parsing XML")); if (dlg) dlg->show(); theDownloader.setAnimator(dlg,Lbl,Bar,true); for (int Page=0; ;++Page) { Lbl->setText(QApplication::translate("Downloader","Downloading trackpoints %1-%2").arg(Page*5000+1).arg(Page*5000+5000)); QString URL = theDownloader.getURLToTrackPoints(); URL = URL.arg(aBox.bottomLeft().x()). arg(aBox.bottomLeft().y()). arg(aBox.topRight().x()). arg(aBox.topRight().y()). arg(Page); QUrl theUrl(aWeb+URL); if (!theDownloader.go(theUrl)) return false; if (theDownloader.resultCode() != 200) return false; int Before = theTracklayers.size(); QByteArray Ar(theDownloader.content()); bool OK = importGPX(Main, Ar, theDocument, theTracklayers, true); if (!OK) return false; if (Before == theTracklayers.size()) break; theTracklayers[theTracklayers.size()-1]->setName(QApplication::translate("Downloader", "Downloaded track - nodes %1-%2").arg(Page*5000+1).arg(Page*5000+5000)); } return true; } bool checkForConflicts(Document* theDocument) { for (FeatureIterator it(theDocument); !it.isEnd(); ++it) { if (it.get()->lastUpdated() == Feature::OSMServerConflict) return true; } return false; } bool downloadFeatures(MainWindow* Main, const QList<Feature*>& aDownloadList , Document* theDocument) { QList<IFeature::FId> list; foreach (Feature* F, aDownloadList) { list << F->id(); } bool ok = downloadFeatures(Main, list, theDocument, NULL); return ok; } bool downloadFeature(MainWindow* Main, const IFeature::FId& id, Document* theDocument, Layer* theLayer) { QList<IFeature::FId> list; list << id; bool ok = downloadFeatures(Main, list, theDocument, theLayer); return ok; } bool downloadFeatures(MainWindow* Main, const QList<IFeature::FId>& idList , Document* theDocument, Layer* theLayer) { if (!theLayer) { if (!theDocument->getLastDownloadLayer()) { theLayer = new DrawingLayer(QApplication::translate("Downloader","%1 download").arg(QDateTime::currentDateTime().toString(Qt::ISODate))); theDocument->add(theLayer); } else theLayer = (Layer*)theDocument->getLastDownloadLayer(); } QString osmWebsite, osmUser, osmPwd; osmWebsite = M_PREFS->getOsmApiUrl(); osmUser = M_PREFS->getOsmUser(); osmPwd = M_PREFS->getOsmPassword(); if (Main) Main->view()->setUpdatesEnabled(false); bool OK = true; Downloader Rcv(osmUser, osmPwd); for (int i=0; i<idList.size(); ++i) { QString URL = Rcv.getURLToFetchFull(idList[i]); QUrl theUrl(osmWebsite+URL); downloadOSM(Main, theUrl, osmUser, osmPwd, theDocument, theLayer); } if (Main) Main->view()->setUpdatesEnabled(true); if (OK) { if (Main) Main->invalidateView(); } else { if (theLayer != theDocument->getLastDownloadLayer()) { theDocument->remove(theLayer); delete theLayer; } } return OK; } bool downloadMapdust(MainWindow* Main, const CoordBox& aBox, Document* theDocument, SpecialLayer* theLayer) { QUrl url; url.setUrl(M_PREFS->getMapdustUrl()); if (Main) Main->view()->setUpdatesEnabled(false); Downloader theDownloader("", ""); SpecialLayer* trackLayer = theLayer; if (!trackLayer) { trackLayer = new SpecialLayer(QApplication::translate("Downloader","MapDust"), Layer::MapDustLayer); trackLayer->setUploadable(false); theDocument->add(trackLayer); } IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(Main); if (!aProgressWindow) return false; QProgressDialog* dlg = aProgressWindow->getProgressDialog(); dlg->setWindowTitle(QApplication::translate("Downloader","Parsing...")); QProgressBar* Bar = aProgressWindow->getProgressBar(); Bar->setTextVisible(false); Bar->setMaximum(11); QLabel* Lbl = aProgressWindow->getProgressLabel(); Lbl->setText(QApplication::translate("Downloader","Parsing XML")); if (dlg) dlg->show(); theDownloader.setAnimator(dlg,Lbl,Bar,true); Lbl->setText(QApplication::translate("Downloader","Downloading points")); url.addQueryItem("t", COORD2STRING(aBox.topRight().y())); url.addQueryItem("l", COORD2STRING(aBox.bottomLeft().x())); url.addQueryItem("b", COORD2STRING(aBox.bottomLeft().y())); url.addQueryItem("r", COORD2STRING(aBox.topRight().x())); if (!theDownloader.go(url)) return false; if (theDownloader.resultCode() != 200) return false; QByteArray Ar(theDownloader.content()); ImportExportGdal gdal(theDocument); bool OK = gdal.import(trackLayer, Ar, false); if (Main) Main->view()->setUpdatesEnabled(true); if (OK) { if (Main) Main->invalidateView(); } return OK; } bool downloadOpenstreetbugs(MainWindow* Main, const CoordBox& aBox, Document* theDocument, SpecialLayer* theLayer) { QUrl osbUrl; osbUrl.setUrl(M_PREFS->getOpenStreetBugsUrl()); osbUrl.setPath(osbUrl.path() + "getGPX"); if (Main) Main->view()->setUpdatesEnabled(false); Downloader theDownloader("", ""); QList<TrackLayer*> theTracklayers; SpecialLayer* trackLayer = theLayer; if (!trackLayer) { SpecialLayer* trackLayer = new SpecialLayer(QApplication::translate("Downloader","OpenStreetBugs"),Layer::OsmBugsLayer); trackLayer->setUploadable(false); theDocument->add(trackLayer); } theTracklayers << trackLayer; IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(Main); if (!aProgressWindow) return false; QProgressDialog* dlg = aProgressWindow->getProgressDialog(); dlg->setWindowTitle(QApplication::translate("Downloader","Parsing...")); QProgressBar* Bar = aProgressWindow->getProgressBar(); Bar->setTextVisible(false); Bar->setMaximum(11); QLabel* Lbl = aProgressWindow->getProgressLabel(); Lbl->setText(QApplication::translate("Downloader","Parsing XML")); if (dlg) dlg->show(); theDownloader.setAnimator(dlg,Lbl,Bar,true); Lbl->setText(QApplication::translate("Downloader","Downloading points")); osbUrl.addQueryItem("t", COORD2STRING(aBox.topRight().y())); osbUrl.addQueryItem("l", COORD2STRING(aBox.bottomLeft().x())); osbUrl.addQueryItem("b", COORD2STRING(aBox.bottomLeft().y())); osbUrl.addQueryItem("r", COORD2STRING(aBox.topRight().x())); osbUrl.addQueryItem("open", "yes"); if (!theDownloader.go(osbUrl)) return false; if (theDownloader.resultCode() != 200) return false; QByteArray Ar(theDownloader.content()); bool OK = importGPX(Main, Ar, theDocument, theTracklayers, true); if (Main) Main->view()->setUpdatesEnabled(true); if (OK) { if (Main) Main->invalidateView(); } return OK; } bool downloadMoreOSM(MainWindow* Main, const CoordBox& aBox , Document* theDocument) { Layer* theLayer; if (!theDocument->getLastDownloadLayer()) { theLayer = new DrawingLayer(QApplication::translate("Downloader","%1 download").arg(QDateTime::currentDateTime().toString(Qt::ISODate))); theDocument->add(theLayer); } else theLayer = (Layer*)theDocument->getLastDownloadLayer(); QString osmWebsite, osmUser, osmPwd; osmWebsite = M_PREFS->getOsmApiUrl(); osmUser = M_PREFS->getOsmUser(); osmPwd = M_PREFS->getOsmPassword(); Main->view()->setUpdatesEnabled(false); bool OK = true; OK = downloadOSM(Main,osmWebsite,osmUser,osmPwd,aBox,theDocument,theLayer); Main->view()->setUpdatesEnabled(true); if (OK) { theDocument->setLastDownloadLayer(theLayer); theDocument->addDownloadBox(theLayer, aBox); // Don't jump around on Download More // aParent->view()->projection().setViewport(aBox,aParent->view()->rect()); Main->invalidateView(); } else { if (theLayer != theDocument->getLastDownloadLayer()) { theDocument->remove(theLayer); delete theLayer; } } return OK; } bool downloadOSM(MainWindow* Main, const CoordBox& aBox , Document* theDocument) { QString osmWebsite, osmUser, osmPwd; static bool DownloadRaw = false; QDialog * dlg = new QDialog(Main); osmWebsite = M_PREFS->getOsmApiUrl(); osmUser = M_PREFS->getOsmUser(); osmPwd = M_PREFS->getOsmPassword(); Ui::DownloadMapDialog ui; ui.setupUi(dlg); SlippyMapWidget* SlippyMap = new SlippyMapWidget(ui.groupBox); #ifndef _MOBILE SlippyMap->setMinimumHeight(256); #endif CoordBox Clip(aBox); SlippyMap->setViewportArea(Clip); ui.verticalLayout->addWidget(SlippyMap); QObject::connect(SlippyMap, SIGNAL(redraw()), ui.FromMap, SLOT(toggle())); BookmarkListIterator i(*(M_PREFS->getBookmarks())); while (i.hasNext()) { i.next(); if (i.value().deleted == false) ui.Bookmarks->addItem(i.key()); } ui.edXapiUrl->setText(QString("*[bbox=%1,%2,%3,%4]").arg(aBox.bottomLeft().x(), 0, 'f').arg(aBox.bottomLeft().y(), 0, 'f').arg(aBox.topRight().x(), 0, 'f').arg(aBox.topRight().y(), 0, 'f')); ui.IncludeTracks->setChecked(DownloadRaw); ui.ResolveRelations->setChecked(M_PREFS->getResolveRelations()); bool OK = true, retry = true, directAPI = false; QString directUrl; while (retry) { retry = false; #ifdef _MOBILE dlg->setWindowState(Qt::WindowMaximized); #endif if (dlg->exec() == QDialog::Accepted) { DownloadRaw = false; if (ui.FromBookmark->isChecked()) { Clip = M_PREFS->getBookmarks()->value(ui.Bookmarks->currentText()).Coordinates; } else if (ui.FromView->isChecked()) { Clip = aBox; } else if (ui.FromLink->isChecked()) { QString link = ui.Link->text(); if (link.contains("/api/")) { directAPI=true; directUrl = link; } else if (link.contains("/browse/")) { QString tag("/browse/"); int ix = link.lastIndexOf(tag) + tag.length(); directUrl = M_PREFS->getOsmApiUrl(); if (!directUrl.endsWith("/")) directUrl += "/"; directUrl += link.right(link.length() - ix); if (!directUrl.endsWith("/")) directUrl += "/"; directUrl += "full"; directAPI=true; } else if (link.startsWith("way") || link.startsWith("node") || link.startsWith("relation")) { directUrl = M_PREFS->getOsmApiUrl(); if (!directUrl.endsWith("/")) directUrl += "/"; directUrl += link; directAPI=true; } else { OsmLink ol(link); Clip = ol.getCoordBox(); if (Clip.isNull() || Clip.isEmpty()) retry = true; } } else if (ui.FromXapi->isChecked()) { directAPI = true; directUrl = M_PREFS->getXapiUrl(); if (!directUrl.endsWith("/")) directUrl += "/"; directUrl += ui.edXapiUrl->text(); } else if (ui.FromMap->isChecked()) { QRectF R(SlippyMap->viewArea()); Clip = CoordBox(Coord(R.x(), R.y()), Coord(R.x()+R.width(), R.y()+R.height())); } if (retry) continue; Main->view()->setUpdatesEnabled(false); Layer* theLayer = new DrawingLayer(QApplication::translate("Downloader","%1 download").arg(QDateTime::currentDateTime().toString(Qt::ISODate))); theDocument->add(theLayer); M_PREFS->setResolveRelations(ui.ResolveRelations->isChecked()); if (directAPI) { if (ui.FromXapi->isChecked()) theLayer->setUploadable(false); OK = downloadOSM(Main,QUrl(QUrl::fromEncoded(directUrl.toAscii())),osmUser,osmPwd,theDocument,theLayer); } else OK = downloadOSM(Main,osmWebsite,osmUser,osmPwd,Clip,theDocument,theLayer); if (OK && ui.IncludeTracks->isChecked()) OK = downloadTracksFromOSM(Main,osmWebsite,osmUser,osmPwd, Clip,theDocument); Main->view()->setUpdatesEnabled(true); if (OK) { theDocument->setLastDownloadLayer(theLayer); theDocument->addDownloadBox(theLayer, Clip); #ifndef _MOBILE if (directAPI) Main->on_viewZoomAllAction_triggered(); else #endif Main->view()->setViewport(Clip,Main->view()->rect()); Main->invalidateView(); } else { retry = true; theDocument->remove(theLayer); SAFE_DELETE(theLayer); } } } delete dlg; return OK; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/DownloadOSM.h������������������������������������������������������������0000664�0000000�0000000�00000006013�11770671653�0017767�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_DOWNLOADOSM_H_ #define MERKATOR_DOWNLOADOSM_H_ class Document; class QHttp; class QString; class QMainWindow; class QProgressBar; class QLabel; class QProgressDialog; class QTimer; class MainWindow; class CoordBox; class Feature; class Layer; class SpecialLayer; #include <QtCore/QByteArray> #include <QtCore/QEventLoop> #include <QtCore/QObject> #include <QtNetwork/QHttp> #include <QUrl> #include "IFeature.h" class Downloader : public QObject { Q_OBJECT public: Downloader(const QString& aUser, const QString& aPwd); bool request(const QString& Method, const QUrl& URL, const QString& Out, bool FireForget=false); bool go(const QUrl& url); QByteArray& content(); int resultCode(); const QString & resultText(); const QString & errorText(); const QString & locationText(); QString getURLToMap(); QString getURLToTrackPoints(); QString getURLToFetchFull(IFeature::FId id); QString getURLToFetchFull(Feature* aFeature); QString getURLToFetch(const QString& What); QString getURLToFetch(const QString& What, const QString& Id); QString getURLToCreate(const QString& What); QString getURLToUpdate(const QString& What, const QString& Id); QString getURLToDelete(const QString& What, const QString& Id); QString getURLToOpenChangeSet(); QString getURLToCloseChangeSet(const QString& Id); QString getURLToUploadDiff(QString changesetId); void setAnimator(QProgressDialog *anAnimator, QLabel* AnimatorLabel, QProgressBar* AnimatorBar, bool anAnimate); public slots: void progress( int done, int total ); void on_requestFinished(int Id, bool Error); void on_responseHeaderReceived(const QHttpResponseHeader & hdr); void animate(); void on_Cancel_clicked(); private: QHttp Request; QString User, Password; QByteArray Content; int Result; QString LocationText; QString ResultText; QString ErrorText; int Id; int IdAuth; bool Error; QEventLoop Loop; QLabel* AnimatorLabel; QProgressBar* AnimatorBar; QTimer *AnimationTimer; }; bool downloadOSM(MainWindow* Main, const CoordBox& aBox , Document* theDocument); bool downloadMoreOSM(MainWindow* Main, const CoordBox& aBox , Document* theDocument); bool downloadFeatures(MainWindow* Main, const QList<Feature*>& aDownloadList , Document* theDocument); bool downloadFeature(MainWindow* Main, const IFeature::FId& id, Document* theDocument, Layer* theLayer=NULL); bool downloadFeatures(MainWindow* Main, const QList<IFeature::FId>& aDownloadList, Document* theDocument, Layer* theLayer=NULL); bool downloadOpenstreetbugs(MainWindow* Main, const CoordBox& aBox, Document* theDocument, SpecialLayer* theLayer=NULL); bool downloadMapdust(MainWindow* Main, const CoordBox& aBox, Document* theDocument, SpecialLayer* theLayer=NULL); bool checkForConflicts(Document* theDocument); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/Sync.pri�����������������������������������������������������������������0000664�0000000�0000000�00000000516�11770671653�0017122�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Sync DEPENDPATH += $$MERKAARTOR_SRC_DIR/Sync HEADERS += \ DownloadOSM.h SOURCES += \ DownloadOSM.cpp !contains(FRISIUS,1) { HEADERS += \ DirtyListExecutorOSC.h \ DirtyList.h SOURCES += \ DirtyListExecutorOSC.cpp \ DirtyList.cpp FORMS += \ SyncListDialog.ui } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Sync/SyncListDialog.ui��������������������������������������������������������0000664�0000000�0000000�00000005144�11770671653�0020723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>SyncListDialog</class> <widget class="QDialog" name="SyncListDialog" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>400</width> <height>300</height> </rect> </property> <property name="windowTitle" > <string>Upload to Openstreetmap</string> </property> <layout class="QVBoxLayout" > <property name="spacing" > <number>4</number> </property> <property name="margin" > <number>4</number> </property> <item> <widget class="QLabel" name="lblChangesetComment" > <property name="text" > <string>Please specify a comment for this changeset.</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edChangesetComment" /> </item> <item> <widget class="QLabel" name="label" > <property name="text" > <string>Please review carefully the changes sent to OSM</string> </property> </widget> </item> <item> <widget class="QListWidget" name="ChangesList" /> </item> <item> <layout class="QHBoxLayout" > <property name="spacing" > <number>6</number> </property> <property name="margin" > <number>0</number> </property> <item> <spacer> <property name="orientation" > <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0" > <size> <width>131</width> <height>31</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="okButton" > <property name="text" > <string>OK</string> </property> </widget> </item> <item> <widget class="QPushButton" name="cancelButton" > <property name="text" > <string>Cancel</string> </property> </widget> </item> </layout> </item> </layout> </widget> <resources/> <connections> <connection> <sender>okButton</sender> <signal>clicked()</signal> <receiver>SyncListDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel" > <x>278</x> <y>253</y> </hint> <hint type="destinationlabel" > <x>96</x> <y>254</y> </hint> </hints> </connection> <connection> <sender>cancelButton</sender> <signal>clicked()</signal> <receiver>SyncListDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel" > <x>369</x> <y>253</y> </hint> <hint type="destinationlabel" > <x>179</x> <y>282</y> </hint> </hints> </connection> </connections> </ui> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/TagTemplate/������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016763�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/TagTemplate/TagTemplate.cpp���������������������������������������������������0000664�0000000�0000000�00000075522�11770671653�0021711�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: TagTemplate // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "TagTemplate.h" #include "Features.h" #include "FeatureCommands.h" #include "MapView.h" #include <QComboBox> #include <QLabel> #include <QCheckBox> #include <QGroupBox> #include <QLineEdit> #include <QRegExp> /** TagTemplateWidget **/ TagTemplateWidget::TagTemplateWidget() : theMainWidget(0), theWidget(0), theLabelWidget(0), theSelector(0) { } TagTemplateWidget::~TagTemplateWidget() { // No need to delete; will be destroyed automatically by parent + crash if no active widget. // delete theMainWidget; for (int i=0; i<theValues.size(); ++i) delete theValues[i]; delete theSelector; } TagTemplateWidget* TagTemplateWidget::fromXml(const QDomElement& e) { if (e.tagName() != "widget") { return NULL; } TagTemplateWidget* aTW = NULL; if (e.attribute("type") == "combo") { aTW = TagTemplateWidgetCombo::fromXml(e); } else if (e.attribute("type") == "yesno") { aTW = TagTemplateWidgetYesno::fromXml(e); } else if (e.attribute("type") == "constant") { aTW = TagTemplateWidgetConstant::fromXml(e); } else if (e.attribute("type") == "edit") { aTW = TagTemplateWidgetEdit::fromXml(e); } else Q_ASSERT(false); if (aTW) { aTW->theId = e.attribute("id"); aTW->theType = e.attribute("type"); aTW->theTag = e.attribute("tag"); } return aTW; } void TagTemplateWidget::parseCommonElements(const QDomElement& e) { if (e.tagName() == "description") { theDescriptions.insert(e.attribute("locale"), e.firstChild().toText().nodeValue()); } else if (e.tagName() == "link") { theUrl = QUrl(e.attribute("src")); } else if (e.tagName() == "selector") { theSelector = TagSelector::parse(e.attribute("expr")); } if (e.tagName() == "value") { TagTemplateWidgetValue* aTCV = TagTemplateWidgetValue::fromXml(e); if (aTCV) theValues.append(aTCV); } } void TagTemplateWidget::generateCommonElements(QDomElement& e) { if (!theUrl.isEmpty()) { QDomElement c = e.ownerDocument().createElement("link"); e.appendChild(c); c.setAttribute("src", theUrl.toString()); } QHashIterator<QString, QString > itD(theDescriptions); while(itD.hasNext()) { itD.next(); QDomElement d = e.ownerDocument().createElement("description"); e.appendChild(d); d.setAttribute("locale", itD.key()); QDomText v = e.ownerDocument().createTextNode(itD.value()); d.appendChild(v); } if (theSelector) { QDomElement s = e.ownerDocument().createElement("selector"); e.appendChild(s); s.setAttribute("expr", theSelector->asExpression(false)); } for (int i=0; i<theValues.size(); ++i) { theValues[i]->toXML(e, false); } } /** TagTemplateWidgetValue **/ TagTemplateWidgetValue* TagTemplateWidgetValue::fromXml(const QDomElement& e) { TagTemplateWidgetValue* aTCV = new TagTemplateWidgetValue(e.attribute("tag")); for(QDomNode d = e.firstChild(); !d.isNull(); d = d.nextSibling()) { QDomElement c = d.toElement(); if (c.isNull()) continue; aTCV->parseCommonElements(c); } return aTCV; } bool TagTemplateWidgetValue::toXML(QDomElement& xParent, bool /* header */) { QDomElement v = xParent.ownerDocument().createElement("value"); xParent.appendChild(v); v.setAttribute("tag", theTagValue); generateCommonElements(v); return true; } /** TagTemplateWidgetCombo **/ TagTemplateWidgetCombo::~TagTemplateWidgetCombo() { } QWidget* TagTemplateWidgetCombo::getWidget(const Feature* F, const MapView* V) { if (theSelector && (theSelector->matches(F,V->pixelPerM()) != TagSelect_Match && theSelector->matches(F,V->pixelPerM()) != TagSelect_DefaultMatch)) return NULL; QString lang = getDefaultLanguage(); QString defLang = "en"; if (lang == "-" || !M_PREFS->getTranslateTags()) lang = "en"; theWidget = new QWidget(); QHBoxLayout* aLayout = new QHBoxLayout(theWidget); aLayout->setContentsMargins(0, 0, 0, 0); QLabel* aLabel = new QLabel(); aLabel->setOpenExternalLinks(true); aLabel->setWordWrap(true); aLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); aLabel->setMaximumWidth(55); aLayout->addWidget(aLabel); QString url; if (theDescriptions.count(lang)) theDescription = theDescriptions[lang]; else if (theDescriptions.count(defLang)) theDescription = theDescriptions[defLang]; else theDescription = theTag; if (!theUrl.isEmpty()) url = theUrl.toString(); QComboBox* aCombo = new QComboBox(); aCombo->setEditable(true); // aCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon); aCombo->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); aCombo->setMinimumWidth(100); aLayout->addWidget(aCombo); aCombo->addItem(tr("Undefined"), qVariantFromValue(new TagTemplateWidgetValue("__NULL__"))); QString val = F->tagValue(theTag, "__NULL__"); int idx = -1; for (int i=0; i<theValues.size(); ++i) { if (theValues[i]->theDescriptions.count(lang)) aCombo->addItem(theValues[i]->theDescriptions[lang], qVariantFromValue(theValues[i])); else if (theValues[i]->theDescriptions.count(defLang)) aCombo->addItem(theValues[i]->theDescriptions[defLang], qVariantFromValue(theValues[i])); else aCombo->addItem(theValues[i]->theTagValue, qVariantFromValue(theValues[i])); if (theValues[i]->theTagValue == val) idx = aCombo->count() - 1; } if (val != "__NULL__") { if (idx == -1) { aCombo->insertItem(1, val); aCombo->setCurrentIndex(1); } else { aCombo->setCurrentIndex(idx); if (!theValues[idx-1]->theUrl.isEmpty()) url = theValues[idx-1]->theUrl.toString(); } } else aCombo->setCurrentIndex(0); if (!url.isEmpty()) aLabel->setText(QString("<a href=\"%1\">%2</a>").arg(url).arg(theDescription)); else aLabel->setText(theDescription); connect(aCombo,SIGNAL(activated(int)), this, SLOT(on_combo_activated(int))); theMainWidget = aCombo; theLabelWidget = aLabel; return theWidget; } TagTemplateWidgetCombo* TagTemplateWidgetCombo::fromXml(const QDomElement& e) { TagTemplateWidgetCombo* aCW = new TagTemplateWidgetCombo(); for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; aCW->parseCommonElements(t); } return aCW; } bool TagTemplateWidgetCombo::toXML(QDomElement& xParent, bool header) { bool OK = true; if (!header) { QDomElement e = xParent.ownerDocument().createElement("widgetref"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); else e.setAttribute("id", theTag); } else { QDomElement e = xParent.ownerDocument().createElement("widget"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); e.setAttribute("type", theType); e.setAttribute("tag", theTag); generateCommonElements(e); } return OK; } void TagTemplateWidgetCombo::on_combo_activated(int idx) { QComboBox* W = dynamic_cast<QComboBox*>(theMainWidget); TagTemplateWidgetValue* aTCV = W->itemData(idx).value<TagTemplateWidgetValue*>(); QString val; if (aTCV) { if (!aTCV->theUrl.isEmpty()) { ((QLabel *)theLabelWidget)->setText(QString("<a href=\"%1\">%2</a>").arg(aTCV->theUrl.toString()).arg(theDescription)); } else { if (!theUrl.isEmpty()) { ((QLabel *)theLabelWidget)->setText(QString("<a href=\"%1\">%2</a>").arg(theUrl.toString()).arg(theDescription)); } else { ((QLabel *)theLabelWidget)->setText(theDescription); } } val = aTCV->theTagValue; } else val = W->currentText(); if (val == "__NULL__") emit tagCleared(theTag); else emit tagChanged(theTag, val); } void TagTemplateWidgetCombo::apply(const Feature*) { } /** TagTemplateWidgetYesno **/ QWidget* TagTemplateWidgetYesno::getWidget(const Feature* F, const MapView* V) { if (theSelector && (theSelector->matches(F,V->pixelPerM()) != TagSelect_Match && theSelector->matches(F,V->pixelPerM()) != TagSelect_DefaultMatch)) return NULL; QString lang = getDefaultLanguage(); QString defLang = "en"; if (lang == "-" || !M_PREFS->getTranslateTags()) lang = "en"; theWidget = new QWidget(); QHBoxLayout* aLayout = new QHBoxLayout(theWidget); aLayout->setContentsMargins(0, 0, 0, 0); QLabel* aLabel = new QLabel(); aLabel->setOpenExternalLinks(true); aLayout->addWidget(aLabel); QCheckBox* aCB = new QCheckBox(); aCB->setTristate(); aLayout->addWidget(aCB); if (theDescriptions.count(lang)) theDescription = theDescriptions[lang]; else if (theDescriptions.count(defLang)) theDescription = theDescriptions[defLang]; else theDescription = theTag; QString val = F->tagValue(theTag, "__NULL__"); if (val == "yes" || val == "1" || val == "true") aCB->setCheckState(Qt::Checked); else if (val == "no" || val == "0" || val == "false") aCB->setCheckState(Qt::Unchecked); else aCB->setCheckState(Qt::PartiallyChecked); if (!theUrl.isEmpty()) aLabel->setText(QString("<a href=\"%1\">%2</a>").arg(theUrl.toString()).arg(theDescription)); else aLabel->setText(theDescription); connect(aCB,SIGNAL(stateChanged(int)), this, SLOT(on_checkbox_stateChanged (int))); theMainWidget = aCB; theLabelWidget = aLabel; return theWidget; } void TagTemplateWidgetYesno::on_checkbox_stateChanged(int state) { //QCheckBox* W = dynamic_cast<QCheckBox*>(theMainWidget); if (state == Qt::PartiallyChecked) { emit tagCleared(theTag); } else { QString value = (state == Qt::Checked) ? "yes" : "no"; emit tagChanged(theTag, value); } } void TagTemplateWidgetYesno::apply(const Feature*) { } TagTemplateWidgetYesno* TagTemplateWidgetYesno::fromXml(const QDomElement& e) { TagTemplateWidgetYesno* aCB = new TagTemplateWidgetYesno(); for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; aCB->parseCommonElements(t); } return aCB; } bool TagTemplateWidgetYesno::toXML(QDomElement& xParent, bool header) { bool OK = true; if (!header) { QDomElement e = xParent.ownerDocument().createElement("widgetref"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); else e.setAttribute("id", theTag); } else { QDomElement e = xParent.ownerDocument().createElement("widget"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); e.setAttribute("type", theType); e.setAttribute("tag", theTag); generateCommonElements(e); } return OK; } /** TagTemplateWidgetConstant **/ TagTemplateWidgetConstant::~TagTemplateWidgetConstant() { } QWidget* TagTemplateWidgetConstant::getWidget(const Feature* F, const MapView* V) { if (theSelector && (theSelector->matches(F,V->pixelPerM()) != TagSelect_Match && theSelector->matches(F,V->pixelPerM()) != TagSelect_DefaultMatch)) return NULL; QString lang = getDefaultLanguage(); QString defLang = "en"; if (lang == "-" || !M_PREFS->getTranslateTags()) lang = "en"; theWidget = new QWidget(); QHBoxLayout* aLayout = new QHBoxLayout(theWidget); aLayout->setContentsMargins(0, 0, 0, 0); QLabel* aLabel = new QLabel(); aLabel->setOpenExternalLinks(true); aLabel->setWordWrap(true); aLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); aLabel->setMaximumWidth(55); aLayout->addWidget(aLabel); QString url; if (theDescriptions.count(lang)) theDescription = theDescriptions[lang]; else if (theDescriptions.count(defLang)) theDescription = theDescriptions[defLang]; else theDescription = theTag; if (!theUrl.isEmpty()) url = theUrl.toString(); QLabel* aValue = new QLabel(); aValue->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); aValue->setWordWrap(true); aLayout->addWidget(aValue); if (theValues.count()) { QString aValueStr; if (theValues[0]->theDescriptions.count(lang)) aValueStr = theValues[0]->theDescriptions[lang]; else if (theValues[0]->theDescriptions.count(defLang)) aValueStr = theValues[0]->theDescriptions[defLang]; else aValueStr = theValues[0]->theTagValue; aValue->setText(QString("<b>%1</b>").arg(aValueStr)); if (!theValues[0]->theUrl.isEmpty()) url = theValues[0]->theUrl.toString(); if (!url.isEmpty()) aLabel->setText(QString("<a href=\"%1\">%2</a>").arg(url).arg(theDescription)); else aLabel->setText(theDescription); } else aValue->setText(QString("<b>%1</b>").arg(F->tagValue(theTag, ""))); theMainWidget = aValue; theLabelWidget = aLabel; return theWidget; } void TagTemplateWidgetConstant::apply(const Feature* F) { if (!theValues.count()) { ((QLabel*)theMainWidget)->setText(QString("<b>%1</b>").arg(F->tagValue(theTag, ""))); return; } bool Regexp = false; bool OK = true; QString oldVal = F->tagValue(theTag, "__NULL__"); QString newVal = theValues[0]->theTagValue; QRegExp subst("\\$\\[(.+)\\]"); subst.setMinimal(true); int pos = 0; while ((pos = subst.indexIn(newVal, pos)) != -1) { Regexp = true; QString rep = F->tagValue(subst.cap(1), "__NULL__"); if (rep == "__NULL__") { OK = false; break; } newVal.replace(subst.cap(0), rep); pos += rep.length(); } if (!Regexp || (Regexp && OK)) { ((QLabel*)theMainWidget)->setText(QString("<b>%1</b>").arg(newVal)); if (newVal != oldVal) { emit tagChanged(theTag, newVal); } } else ((QLabel*)theMainWidget)->setText(QString("<b>%1</b>").arg(F->tagValue(theTag, ""))); } TagTemplateWidgetConstant* TagTemplateWidgetConstant::fromXml(const QDomElement& e) { TagTemplateWidgetConstant* aCW = new TagTemplateWidgetConstant(); for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; aCW->parseCommonElements(t); } return aCW; } bool TagTemplateWidgetConstant::toXML(QDomElement& xParent, bool header) { bool OK = true; if (header) return OK; QDomElement e = xParent.ownerDocument().createElement("widget"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); e.setAttribute("type", theType); e.setAttribute("tag", theTag); generateCommonElements(e); return OK; } /** TagTemplateWidgetEdit **/ QWidget* TagTemplateWidgetEdit::getWidget(const Feature* F, const MapView* V) { if (theSelector && (theSelector->matches(F,V->pixelPerM()) != TagSelect_Match && theSelector->matches(F,V->pixelPerM()) != TagSelect_DefaultMatch)) return NULL; QString lang = getDefaultLanguage(); QString defLang = "en"; if (lang == "-" || !M_PREFS->getTranslateTags()) lang = "en"; theWidget = new QWidget(); QHBoxLayout* aLayout = new QHBoxLayout(theWidget); aLayout->setContentsMargins(0, 0, 0, 0); QLabel* aLabel = new QLabel(); aLabel->setOpenExternalLinks(true); aLabel->setWordWrap(true); aLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); aLabel->setMaximumWidth(55); aLayout->addWidget(aLabel); QString url; if (theDescriptions.count(lang)) theDescription = theDescriptions[lang]; else if (theDescriptions.count(defLang)) theDescription = theDescriptions[defLang]; else theDescription = theTag; if (!theUrl.isEmpty()) url = theUrl.toString(); if (!url.isEmpty()) aLabel->setText(QString("<a href=\"%1\">%2</a>").arg(url).arg(theDescription)); else aLabel->setText(theDescription); QLineEdit* aValue = new QLineEdit(); aLayout->addWidget(aValue); QString val = F->tagValue(theTag, "__NULL__"); if (val != "__NULL__") aValue->setText(val); connect(aValue,SIGNAL(editingFinished()),this, SLOT(on_editingFinished())); theMainWidget = aValue; theLabelWidget = aLabel; return theWidget; } void TagTemplateWidgetEdit::apply(const Feature*) { } TagTemplateWidgetEdit* TagTemplateWidgetEdit::fromXml(const QDomElement& e) { TagTemplateWidgetEdit* aCW = new TagTemplateWidgetEdit(); for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; aCW->parseCommonElements(t); } return aCW; } bool TagTemplateWidgetEdit::toXML(QDomElement& xParent, bool header) { bool OK = true; if (!header) { QDomElement e = xParent.ownerDocument().createElement("widgetref"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); else e.setAttribute("id", theTag); } else { QDomElement e = xParent.ownerDocument().createElement("widget"); xParent.appendChild(e); if (!theId.isEmpty()) e.setAttribute("id", theId); e.setAttribute("type", theType); e.setAttribute("tag", theTag); generateCommonElements(e); } return OK; } void TagTemplateWidgetEdit::on_editingFinished() { QLineEdit* W = dynamic_cast<QLineEdit*>(theMainWidget); if (W->text().isEmpty()) { emit tagCleared(theTag); } else { emit tagChanged(theTag, W->text()); } } /** TagTemplate **/ TagTemplate::TagTemplate() : theWidget(0), theSelector(0) { } TagTemplate::TagTemplate(QString aName) : theWidget(0), theSelector(0) { theDescriptions[getDefaultLanguage()] = aName; } TagTemplate::TagTemplate(QString aName, QString aSelector) : theWidget(0) { theDescriptions[getDefaultLanguage()] = aName; theSelector = TagSelector::parse(aSelector); } TagTemplate::TagTemplate(const TagTemplate& aTemplate) : QObject(), theSelector(aTemplate.theSelector) { } TagTemplate::~TagTemplate() { delete theSelector; } TagSelectorMatchResult TagTemplate::matchesTag(const Feature* F, const MapView* V) { TagSelectorMatchResult res; if (!theSelector) return TagSelect_NoMatch; // Special casing for multipolygon roads if (const Way* R = dynamic_cast<const Way*>(F)) { // TODO create a isPartOfMultiPolygon(R) function for this for (int i=0; i<R->sizeParents(); ++i) { if (const Relation* Parent = dynamic_cast<const Relation*>(R->getParent(i))) if (!Parent->isDeleted()) if (Parent->tagValue("type","") == "multipolygon") return TagSelect_NoMatch; } } if ((res = theSelector->matches(F,V->pixelPerM()))) return res; // Special casing for multipolygon relations if (const Relation* R = dynamic_cast<const Relation*>(F)) { if (R->tagValue("type","") == "multipolygon") { for (int i=0; i<R->size(); ++i) if (!R->get(i)->isDeleted()) if ((res = theSelector->matches(R->get(i),V->pixelPerM()))) return res; } } return TagSelect_NoMatch; } QWidget* TagTemplate::getWidget(const Feature* F, const MapView* V) { QString lang = getDefaultLanguage(); QString defLang = "en"; if (lang == "-" || !M_PREFS->getTranslateTags()) lang = "en"; theWidget = new QWidget(); //if (theDescriptions.count(lang)) // theWidget->setTitle(theDescriptions[lang]); //else // theWidget->setTitle(theDescriptions[defLang]); QVBoxLayout* aLayout = new QVBoxLayout(theWidget); aLayout->setContentsMargins(2, 2, 2, 2); for (int i=0; i<theFields.size(); ++i) { QWidget* W = theFields[i]->getWidget(F,V); if (W) aLayout->addWidget(W); } return theWidget; } void TagTemplate::setSelector(const QString& anExpression) { delete theSelector; theSelector = TagSelector::parse(anExpression); } void TagTemplate::setSelector(TagSelector* aSel) { delete theSelector; theSelector = aSel; } void TagTemplate::apply(const Feature* F) { for (int i=0; i<theFields.size(); ++i) { theFields[i]->apply(F); } } TagTemplate* TagTemplate::fromXml(const QDomElement& e, TagTemplates* templates) { TagTemplate* aTemplate = new TagTemplate(); if (e.tagName() != "template") { return NULL; } for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; if (t.tagName() == "description") { aTemplate->theDescriptions.insert(t.attribute("locale"), t.firstChild().toText().nodeValue()); } else if (t.tagName() == "selector") { TagSelector* aSel = TagSelector::parse(t.attribute("expr")); if (!aSel) return NULL; aTemplate->setSelector(aSel); } else if (t.tagName() == "widget") { TagTemplateWidget* aTW = TagTemplateWidget::fromXml(t); if (aTW) { templates->addWidget(aTW); aTemplate->theFields.append(aTW); connect(aTW, SIGNAL(tagChanged(QString, QString)), aTemplate, SLOT(on_tag_changed(QString, QString))); connect(aTW, SIGNAL(tagCleared(QString)), aTemplate, SLOT(on_tag_cleared(QString))); } } else if (t.tagName() == "widgetref") { TagTemplateWidget* aTW = templates->findWidget(t.attribute("id")); if (aTW) { aTemplate->theFields.append(aTW); connect(aTW, SIGNAL(tagChanged(QString, QString)), aTemplate, SLOT(on_tag_changed(QString, QString))); connect(aTW, SIGNAL(tagCleared(QString)), aTemplate, SLOT(on_tag_cleared(QString))); } } } return aTemplate; } bool TagTemplate::toXML(QDomElement& xParent) { bool OK = true; QDomElement e = xParent.ownerDocument().createElement("template"); xParent.appendChild(e); if (theSelector) { QDomElement s = xParent.ownerDocument().createElement("selector"); e.appendChild(s); s.setAttribute("expr", theSelector->asExpression(false)); } QHashIterator<QString, QString > itD(theDescriptions); while(itD.hasNext()) { itD.next(); QDomElement d = xParent.ownerDocument().createElement("description"); e.appendChild(d); d.setAttribute("locale", itD.key()); QDomText v = xParent.ownerDocument().createTextNode(itD.value()); d.appendChild(v); } for (int i=0; i<theFields.size(); ++i) { theFields[i]->toXML(e, false); } return OK; } void TagTemplate::on_tag_changed(QString k, QString v) { emit tagChanged(k, v); } void TagTemplate::on_tag_cleared(QString k) { emit tagCleared(k); } /** TagTemplates **/ TagTemplates::TagTemplates() : theWidget(0), theFeature(0), curTemplate(0) { } TagTemplates::~TagTemplates() { for (int i=0; i< widgets.size(); ++i) delete widgets[i]; for (int i=0; i< items.size(); ++i) delete items[i]; } QWidget* TagTemplates::getWidget(const Feature* F, const MapView* V) { QString lang = getDefaultLanguage(); QString defLang = "en"; if (lang == "-" || !M_PREFS->getTranslateTags()) lang = "en"; if (curTemplate) { disconnect(curTemplate, 0, this, 0); curTemplate = NULL; } if (F != theFeature) forcedTemplate = NULL; else curTemplate = forcedTemplate; theFeature = F; theWidget = new QWidget(); //if (theDescriptions.count(lang)) // theWidget->setTitle(theDescriptions[lang]); //else // theWidget->setTitle(theDescriptions[defLang]); QVBoxLayout* aLayout = new QVBoxLayout(theWidget); aLayout->setContentsMargins(2, 2, 2, 2); QHBoxLayout* headLayout = new QHBoxLayout(); headLayout->setContentsMargins(0, 0, 0, 0); aLayout->addLayout(headLayout); theCombo = new QComboBox(); theCombo->setEditable(true); theCombo->setInsertPolicy(QComboBox::InsertAtBottom); // QFont f = theCombo->font(); // f.setPointSize(6); // theCombo->setFont(f); // theCombo->setMaximumHeight(16); theCombo->setMinimumWidth(100); theCombo->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); headLayout->addWidget(theCombo); QFrame* line = new QFrame(); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); headLayout->addWidget(line); int idx = -1; theCombo->addItem(tr("Undefined"), "__NULL__"); for (int i=0; i<items.size(); ++i) { if (items[i]->theDescriptions.count(lang)) theCombo->addItem(items[i]->theDescriptions[lang], qVariantFromValue(items[i])); else theCombo->addItem(items[i]->theDescriptions[defLang], qVariantFromValue(items[i])); if (forcedTemplate) { if (items[i] == forcedTemplate) { idx = i+1; } } } if (!forcedTemplate) { for (int i=0; i<items.size(); ++i) { if (idx == -1 && items[i]->matchesTag(F,V) == TagSelect_Match) { curTemplate = items[i]; idx = i+1; } } } if (!forcedTemplate && idx == -1) { for (int i=0; i<items.size(); ++i) { if (idx == -1 && items[i]->matchesTag(F,V) == TagSelect_DefaultMatch) { curTemplate = items[i]; idx = i+1; } } } if (idx == -1) theCombo->setCurrentIndex(0); else theCombo->setCurrentIndex(idx); if (curTemplate) { aLayout->addWidget(curTemplate->getWidget(F,V)); connect(curTemplate, SIGNAL(tagChanged(QString, QString)), this, SLOT(on_tag_changed(QString, QString))); connect(curTemplate, SIGNAL(tagCleared(QString)), this, SLOT(on_tag_cleared(QString))); } connect(theCombo,SIGNAL(activated(int)), this, SLOT(on_combo_activated(int))); line = new QFrame(); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); aLayout->addWidget(line); return theWidget; } void TagTemplates::on_combo_activated(int idx) { if (idx > items.count() -1) { TagTemplate* newTmpl = new TagTemplate(theCombo->currentText()); items.append(newTmpl); if (curTemplate) { for (int i=0; i<curTemplate->theFields.count(); ++i) { curTemplate->theFields[i]->getCurrentValue(); } } } else { forcedTemplate = theCombo->itemData(idx).value<TagTemplate*>(); emit templateChanged(forcedTemplate); } } TagTemplates* TagTemplates::fromXml(const QDomElement& e) { TagTemplates* aTemplates = new TagTemplates(); if (e.tagName() != "templates") { return NULL; } for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; if (t.tagName() == "template") { TagTemplate* tmpl = TagTemplate::fromXml(t, aTemplates); if (tmpl) aTemplates->items.append(tmpl); else return NULL; } else if (t.tagName() == "widgets") { for(QDomNode n = t.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement w = n.toElement(); if (w.tagName() == "widget") { TagTemplateWidget* aTW = TagTemplateWidget::fromXml(w); if (aTW) aTemplates->addWidget(aTW); else return NULL; } } } } return aTemplates; } bool TagTemplates::mergeXml(const QDomElement& e) { if (e.tagName() != "templates") { return false; } for(QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement t = n.toElement(); if (t.isNull()) continue; if (t.tagName() == "template") { TagTemplate* tmpl = TagTemplate::fromXml(t, this); if (tmpl) items.append(tmpl); else return false; } else if (t.tagName() == "widgets") { for(QDomNode n = t.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement w = n.toElement(); if (w.tagName() == "widget") { TagTemplateWidget* aTW = TagTemplateWidget::fromXml(w); if (aTW) addWidget(aTW); else return false; } } } } return true; } TagTemplate* TagTemplates::match(const Feature* F, const MapView* V) { for (int i=0; i<items.size(); ++i) { if (items[i]->matchesTag(F,V) == TagSelect_Match) return items[i]; } for (int i=0; i<items.size(); ++i) { if (items[i]->matchesTag(F,V) == TagSelect_DefaultMatch) return items[i]; } return NULL; } bool TagTemplates::toXML(QDomDocument& doc) { bool OK = true; QDomElement e = doc.createElement("templates"); doc.appendChild(e); QDomElement w = doc.createElement("widgets"); e.appendChild(w); for (int i=0; i<widgets.size(); ++i) OK = widgets[i]->toXML(w, true); for (int i=0; i<items.size(); ++i) OK = items[i]->toXML(e); return OK; } TagTemplateWidget* TagTemplates::findWidget(const QString& id) { for (int i=0; i<widgets.size(); ++i) { if (widgets[i]->id() == id) return widgets[i]; } return NULL; } void TagTemplates::on_tag_changed(QString k, QString v) { emit tagChanged(k, v); } void TagTemplates::on_tag_cleared(QString k) { emit tagCleared(k); } void TagTemplates::addWidget(TagTemplateWidget* aWidget) { widgets.append(aWidget); } void TagTemplates::apply(const Feature* F) { if (curTemplate) curTemplate->apply(F); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/TagTemplate/TagTemplate.h�����������������������������������������������������0000664�0000000�0000000�00000013674�11770671653�0021356�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: TagTemplate // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef TAGTEMPLATE_H #define TAGTEMPLATE_H #include <QWidget> #include <QList> #include <QHash> #include <QDomElement> #include <QUrl> #include <QVariant> #include "TagSelector.h" class MapView; class Feature; class QGroupBox; class QDomElement; class QComboBox; class TagTemplates; class CommandList; class SetTagCommand; class TagTemplateWidgetValue; class TagTemplateWidget: public QObject { Q_OBJECT public: TagTemplateWidget(); virtual ~TagTemplateWidget(); public: QString id() {return (!theId.isEmpty() ? theId : theTag);} QString tag() {return theTag;} virtual QWidget* getWidget(const Feature* /* F */, const MapView* /*V*/) {return NULL;} virtual TagTemplateWidgetValue* getCurrentValue() {return NULL;} virtual void apply(const Feature*) {} virtual bool toXML(QDomElement& /* xParent */, bool /* header */) {return false;} static TagTemplateWidget* fromXml(const QDomElement& e); void parseCommonElements(const QDomElement& e); void generateCommonElements(QDomElement& e); protected: QString theId; QString theTag; QString theType; QWidget* theMainWidget; QWidget* theWidget; QWidget* theLabelWidget; QString theDescription; TagSelector* theSelector; QList<TagTemplateWidgetValue*> theValues; public: QHash<QString, QString> theDescriptions; QUrl theUrl; signals: void tagCleared(QString k); void tagChanged(QString k, QString v); }; class TagTemplateWidgetValue: public TagTemplateWidget { Q_OBJECT public: TagTemplateWidgetValue(const QString& aTagValue) : theTagValue(aTagValue) {} public: QString theTagValue; public: virtual bool toXML(QDomElement& xParent, bool /* header */); static TagTemplateWidgetValue* fromXml(const QDomElement& e); }; Q_DECLARE_METATYPE( TagTemplateWidgetValue * ); class TagTemplateWidgetCombo: public TagTemplateWidget { Q_OBJECT public: virtual ~TagTemplateWidgetCombo(); public: QWidget* getWidget(const Feature* F, const MapView* V); virtual void apply(const Feature* F); static TagTemplateWidgetCombo* fromXml(const QDomElement& e); bool toXML(QDomElement& xParent, bool header); public slots: void on_combo_activated(int idx); }; class TagTemplateWidgetYesno: public TagTemplateWidget { Q_OBJECT public: QWidget* getWidget(const Feature* F, const MapView* V); virtual void apply(const Feature* F); static TagTemplateWidgetYesno* fromXml(const QDomElement& e); bool toXML(QDomElement& xParent, bool header); public slots: void on_checkbox_stateChanged(int state); }; class TagTemplateWidgetConstant: public TagTemplateWidget { Q_OBJECT public: ~TagTemplateWidgetConstant(); public: QWidget* getWidget(const Feature* F, const MapView* V); virtual void apply(const Feature* F); static TagTemplateWidgetConstant* fromXml(const QDomElement& e); bool toXML(QDomElement& xParent, bool header); }; class TagTemplateWidgetEdit: public TagTemplateWidget { Q_OBJECT public: QWidget* getWidget(const Feature* F, const MapView* V); virtual void apply(const Feature* F); static TagTemplateWidgetEdit* fromXml(const QDomElement& e); bool toXML(QDomElement& xParent, bool header); public slots: void on_editingFinished(); }; class TagTemplate: public QObject { Q_OBJECT friend class TagTemplates; public: TagTemplate(); TagTemplate(QString aName); TagTemplate(QString aName, QString aSelector); TagTemplate(const TagTemplate& aTemplate); ~TagTemplate(); public: TagSelectorMatchResult matchesTag(const Feature* F, const MapView* V); QWidget* getWidget(const Feature* F, const MapView* V); void setSelector(const QString& aName); void setSelector(TagSelector* aSelector); virtual void apply(const Feature* F); bool toXML(QDomElement& xParent); static TagTemplate* fromXml(const QDomElement& e, TagTemplates* templates); protected: QWidget* theWidget; TagSelector* theSelector; QList < TagTemplateWidget* > theFields; QHash<QString, QString> theDescriptions; public slots: void on_tag_cleared(QString k); void on_tag_changed(QString k, QString vaL); signals: void tagCleared(QString k); void tagChanged(QString k, QString v); }; Q_DECLARE_METATYPE( TagTemplate * ); class TagTemplates : public QObject { Q_OBJECT public: TagTemplates(); ~TagTemplates(); public: QWidget* getWidget(const Feature* F, const MapView* V); QList<TagTemplate*> items; TagTemplate* match(const Feature* F, const MapView* V); void addWidget(TagTemplateWidget* aWidget); TagTemplateWidget* findWidget(const QString& tag); virtual void apply(const Feature* F); static TagTemplates* fromXml(const QDomElement& e); bool mergeXml(const QDomElement& e); bool toXML(QDomDocument& doc); protected: QList<TagTemplateWidget*> widgets; QWidget* theWidget; QComboBox* theCombo; const Feature* theFeature; TagTemplate* curTemplate; TagTemplate* forcedTemplate; public slots: void on_combo_activated(int idx); void on_tag_cleared(QString k); void on_tag_changed(QString k, QString v); signals: void tagCleared(QString k); void tagChanged(QString k, QString v); void templateChanged(TagTemplate* aNewTemplate); }; #endif // TAGTEMPLATE_H ��������������������������������������������������������������������merkaartor-0.18.1/src/TagTemplate/TagTemplate.pri���������������������������������������������������0000664�0000000�0000000�00000000410�11770671653�0021701�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/TagTemplate DEPENDPATH += $$MERKAARTOR_SRC_DIR/TagTemplate #Header files HEADERS += \ TagTemplate.h #Source files SOURCES += \ TagTemplate.cpp #Forms FORMS += #Resource file(s) RESOURCES +=../Templates/Templates.qrc ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Tools/������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015654�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Tools/ActionsDialog.cpp�������������������������������������������������������0000664�0000000�0000000�00000014106�11770671653�0021102�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <QTableWidget> #include <QHeaderView> #include <QAction> #include <QLayout> #include <QPushButton> #include <QFileDialog> #include <QMessageBox> #include "MainWindow.h" #include "MerkaartorPreferences.h" #include "ActionsDialog.h" ActionsDialog::ActionsDialog(QList<QAction *>& actions, MainWindow *parent) : QDialog(parent), Main(parent) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); actionsTable = new QTableWidget(actions.count(), 2, this); QStringList hdr; hdr << tr("Description") << tr("Shortcut"); actionsTable->setHorizontalHeaderLabels(hdr); actionsTable->verticalHeader()->hide(); actionsTable->horizontalHeader()->setMinimumSectionSize(100); actionsTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); actionsTable->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents); //actionsTable->setColumnReadOnly(0, true); int row = 0; for (int i=0; i<actions.size(); ++i) { QAction *action = static_cast<QAction*>(actions.at(i)); QTableWidgetItem* it = new QTableWidgetItem(action->toolTip()); it->setFlags(0); actionsTable->setItem(row, 0, it); actionsTable->setItem(row, 1, new QTableWidgetItem(action->shortcut().toString())); actionsList.append(action); ++row; } QPushButton *importButton = new QPushButton(tr("&Import"), this); QPushButton *exportButton = new QPushButton(tr("&Export"), this); QPushButton *defaultButton = new QPushButton(tr("&Default"), this); QPushButton *okButton = new QPushButton(tr("&OK"), this); QPushButton *cancelButton = new QPushButton(tr("&Cancel"), this); connect(actionsTable, SIGNAL(currentCellChanged(int, int, int, int)), this, SLOT(recordAction(int, int))); connect(actionsTable, SIGNAL(cellChanged(int, int)), this, SLOT(validateAction(int, int))); connect(importButton, SIGNAL(clicked()), this, SLOT(importShortcuts())); connect(exportButton, SIGNAL(clicked()), this, SLOT(exportShortcuts())); connect(defaultButton, SIGNAL(clicked()), this, SLOT(resetToDefault())); connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->setSpacing(8); buttonLayout->addStretch(1); buttonLayout->addWidget(importButton); buttonLayout->addWidget(exportButton); buttonLayout->addWidget(defaultButton); buttonLayout->addWidget(okButton); buttonLayout->addWidget(cancelButton); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(8); mainLayout->setSpacing(8); mainLayout->addWidget(actionsTable); mainLayout->addLayout(buttonLayout); setWindowTitle(tr("Shortcut Editor")); cancelButton->setFocus(); } void ActionsDialog::resetToDefault() { for (int row = 0; row < (int)actionsList.size(); ++row) { QAction *action = actionsList[row]; actionsTable->item(row, 1)->setText(Main->shortcutsDefault[action->objectName()]); } } void ActionsDialog::accept() { QStringList shortcuts; for (int row = 0; row < (int)actionsList.size(); ++row) { QAction *action = actionsList[row]; action->setShortcut(QKeySequence(actionsTable->item(row, 1)->text())); shortcuts.append(action->objectName()); shortcuts.append(action->shortcut().toString()); } M_PREFS->setShortcuts(shortcuts); QDialog::accept(); } void ActionsDialog::recordAction(int row, int column) { oldAccelText = actionsTable->item(row, column)->text(); } void ActionsDialog::validateAction(int row, int column) { QTableWidgetItem *item = actionsTable->item(row, column); QString accelText = QString(QKeySequence(item->text())); if (accelText.isEmpty() && !item->text().isEmpty()) item->setText(oldAccelText); else item->setText(accelText); } void ActionsDialog::importShortcuts() { QString fileName = QFileDialog::getOpenFileName(this, tr("Load Shortcut scheme"), QString(), tr("Merkaartor shortcut scheme (*.mss)")); if (!fileName.isNull()) { QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Unable to open file"), tr("%1 could not be opened.").arg(fileName)); return; } QTextStream ts(&file); while (!ts.atEnd()) { QString s = ts.readLine(); if (!s.isNull()) { QStringList t = s.split(":"); for (int row = 0; row < (int)actionsList.size(); ++row) { if (actionsTable->item(row, 0)->text() == t[0]) { actionsTable->item(row, 1)->setText(t[1]); break; } } } } } } void ActionsDialog::exportShortcuts() { QString fileName; QFileDialog dlg(this, tr("Save Shortcut scheme"), QString("%1/%2.mss").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor shortcut scheme (*.mss)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("mss"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) fileName = dlg.selectedFiles()[0]; } // QString fileName = QFileDialog::getSaveFileName(this, // tr("Save Shortcut scheme"), QString("%1/%2.mss").arg(M_PREFS->getworkingdir()).arg(tr("untitled")), tr("Merkaartor shortcut scheme (*.mss)")); if (!fileName.isNull()) { QFile file(fileName); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Unable to open save file"), tr("%1 could not be opened for writing.").arg(fileName)); return; } QTextStream ts(&file); QStringList shortcuts; for (int row = 0; row < (int)actionsList.size(); ++row) { ts << actionsTable->item(row, 0)->text() << ":" << actionsTable->item(row, 1)->text() << endl; } file.close(); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Tools/ActionsDialog.h���������������������������������������������������������0000664�0000000�0000000�00000001223�11770671653�0020543�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef ACTIONSDIALOG_H #define ACTIONSDIALOG_H #include <qdialog.h> #include <qlist.h> class QAction; class QTableWidget; class QTableItem; class QWidget; class MainWindow; class ActionsDialog : public QDialog { Q_OBJECT public: ActionsDialog(QList<QAction *>& actions, MainWindow *parent = 0); protected slots: void accept(); void resetToDefault(); private slots: void recordAction(int row, int column); void validateAction(int row, int column); void importShortcuts(); void exportShortcuts(); private: MainWindow* Main; QString oldAccelText; QTableWidget *actionsTable; QList<QAction*> actionsList; }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Tools/RegionMapWidget.cpp�����������������������������������������������������0000664�0000000�0000000�00000011250�11770671653�0021404�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: RegionMapWidget // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "RegionMapWidget.h" #include "Utils/SlippyMapWidget.h" #include "ImportExport/ImportExportOsmBin.h" #include <QPainter> #include <QMouseEvent> RegionMapWidget::RegionMapWidget(QWidget* aParent) : SlippyMapWidget(aParent), showGrid(false) { } RegionMapWidget::~RegionMapWidget(void) { } void RegionMapWidget::setShowGrid(bool val) { showGrid = val; } bool RegionMapWidget::getShowGrid() { return showGrid; } void RegionMapWidget::paintEvent(QPaintEvent* anEvent) { SlippyMapWidget::paintEvent(anEvent); if (!showGrid) return; QPainter P(this); QRectF R(viewArea()); CoordBox v = CoordBox(Coord(R.x(), R.y()), Coord( R.x()+R.width(), R.y()+R.height()); P.setPen(QPen(Qt::blue,2)); P.setBrush(Qt::NoBrush); double sx = (double)width() / v.lonDiff(); if (REGION_WIDTH * sx < 6) return; double sy = (double)height() / v.latDiff(); qint32 l = v.bottomLeft().lon() / REGION_WIDTH; qint32 t = v.bottomLeft().lat() / REGION_WIDTH; //for (int x = l*REGION_WIDTH; x<v.width(); x+=REGION_WIDTH) { // for (int y = t*REGION_WIDTH; y<v.height(); y+=REGION_WIDTH) { // P.drawRect(x * sx, y * sy, REGION_WIDTH * sx, REGION_WIDTH * sy); // } //} for (qint64 x = l; x<= v.topRight().lon() / REGION_WIDTH; ++x) { P.drawLine(int((x * REGION_WIDTH - v.bottomLeft().lon()) * sx), 0, int((x * REGION_WIDTH - v.bottomLeft().lon()) * sx), height()); } for (qint64 y = t; y<= v.topRight().lat() / REGION_WIDTH; ++y) { P.drawLine(0, int(height() - ((y * REGION_WIDTH - v.bottomLeft().lat()) * sy)), width(), int(height() - ((y * REGION_WIDTH - v.bottomLeft().lat()) * sy))); } for (qint64 x = l; x<= v.topRight().lon() / REGION_WIDTH; ++x) for (qint64 y = t; y<= v.topRight().lat() / REGION_WIDTH; ++y) { quint32 rg = (y + NUM_REGIONS/2)*NUM_REGIONS + (x + NUM_REGIONS/2); QRect rgRect = QRect(int((x * REGION_WIDTH - v.bottomLeft().lon()) * sx), int(height() - ((y * REGION_WIDTH - v.bottomLeft().lat()) * sy)), int(REGION_WIDTH * sx), int(-REGION_WIDTH * sy)); //P.setClipRect(rgRect.adjusted(-1, -1, 1, 1)); if (ExistingRegions[rg]) P.drawText(int((x * REGION_WIDTH - v.bottomLeft().lon()) * sx), int(height() - ((y * REGION_WIDTH - v.bottomLeft().lat()) * sy)), QString("%1 - %2").arg(QString::number(rg)).arg(DateRegions[rg].toString("yyyy-MM-dd"))); else P.drawText(int((x * REGION_WIDTH - v.bottomLeft().lon()) * sx), int(height() - ((y * REGION_WIDTH - v.bottomLeft().lat()) * sy)), QString("%1").arg(QString::number(rg))); if (ExistingRegions[rg] && !DeleteRegions[rg]) { //qDebug() << (y + NUM_REGIONS/2)*NUM_REGIONS + (x + NUM_REGIONS/2); P.save(); P.setPen(Qt::NoPen); P.setBrush(QBrush(Qt::green, Qt::FDiagPattern)); P.drawRect(rgRect); P.restore(); } if (SelectedRegions[rg] && !DeleteRegions[rg]) { //qDebug() << (y + NUM_REGIONS/2)*NUM_REGIONS + (x + NUM_REGIONS/2); P.save(); P.setPen(Qt::NoPen); P.setBrush(QBrush(Qt::blue, Qt::BDiagPattern)); P.drawRect(rgRect); P.restore(); } } } void RegionMapWidget::mouseReleaseEvent(QMouseEvent* ev) { if (!isDragging()) { QRectF R(viewArea()); CoordBox v = CoordBox(Coord(R.x(), R.y()), Coord(R.x()+R.width(), R.y()+R.height())); QPointF P = ev->pos(); Coord Pt(int(((height()-P.y()) / height() * v.latDiff()) + v.bottomLeft().lat()), int((P.x() / width() * v.lonDiff()) + v.bottomLeft().lon())); int x = int(((qint64)Pt.lon()) / REGION_WIDTH); x = (x < 0) ? x-1 :x; int y = int(((qint64)Pt.lat()) / REGION_WIDTH); y = (y < 0) ? y-1 :y; int rg = (y + NUM_REGIONS/2)*NUM_REGIONS + (x + NUM_REGIONS/2); if (SelectedRegions[rg] && ExistingRegions[rg]) { SelectedRegions[rg] = false; DeleteRegions[rg] = true; } else if (!SelectedRegions[rg] && DeleteRegions[rg]) DeleteRegions[rg] = false; else SelectedRegions[rg] = !SelectedRegions[rg]; update(); } SlippyMapWidget::mouseReleaseEvent(ev); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Tools/RegionMapWidget.h�������������������������������������������������������0000664�0000000�0000000�00000001450�11770671653�0021052�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: RegionMapWidget // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef REGIONMAPWIDGET_H #define REGIONMAPWIDGET_H #include "Utils/SlippyMapWidget.h" #include <QHash> #include <QDateTime> class RegionMapWidget : public SlippyMapWidget { Q_OBJECT public: RegionMapWidget(QWidget* aParent); virtual ~RegionMapWidget(); void setShowGrid(bool val); bool getShowGrid(); virtual void paintEvent(QPaintEvent* ev); virtual void mouseReleaseEvent(QMouseEvent* ev); QHash <quint32, bool> SelectedRegions; QHash <quint32, bool> ExistingRegions; QHash <quint32, bool> DeleteRegions; QHash <quint32, QDateTime> DateRegions; private: bool showGrid; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Tools/Tools.pri���������������������������������������������������������������0000664�0000000�0000000�00000000327�11770671653�0017472�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Tools DEPENDPATH += $$MERKAARTOR_SRC_DIR/Tools isEmpty(MOBILE) { #Header files HEADERS += \ ActionsDialog.h #Source files SOURCES += \ ActionsDialog.cpp } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015654�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/CheckBoxList.cpp��������������������������������������������������������0000664�0000000�0000000�00000010503�11770671653�0020701�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/////////////////////////////////////////////////////////// // CheckBoxList.cpp // Implementation of the Class CheckBoxList // Created on: 02-Jun-2008 6:53:56 PM // Original author: Nasser M. Al-Ansari (Da-Crystal) /////////////////////////////////////////////////////////// // Modification History: // // Who(SNo) Date Description // /////////////////////////////////////////////////////////// #include "CheckBoxList.h" #include <QtGui> // internal private delegate class CheckBoxListDelegate : public QItemDelegate { public: CheckBoxListDelegate(QObject *parent) : QItemDelegate(parent) { ; } void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { //Get item data bool value = index.data(Qt::UserRole).toBool(); QString text = index.data(Qt::DisplayRole).toString(); // fill style options with item data const QStyle *style = QApplication::style(); QStyleOptionButton opt; opt.state |= value ? QStyle::State_On : QStyle::State_Off; opt.state |= QStyle::State_Enabled; opt.text = text; opt.rect = option.rect; // draw item data as CheckBox style->drawControl(QStyle::CE_CheckBox,&opt,painter); } QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem & /*option*/, const QModelIndex & /*index*/ ) const { // create check box as our editor QCheckBox *editor = new QCheckBox(parent); return editor; } void setEditorData(QWidget *editor, const QModelIndex &index) const { //set editor data QCheckBox *myEditor = static_cast<QCheckBox*>(editor); myEditor->setText(index.data(Qt::DisplayRole).toString()); myEditor->setChecked(index.data(Qt::UserRole).toBool()); } void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { //get the value from the editor (CheckBox) QCheckBox *myEditor = static_cast<QCheckBox*>(editor); bool value = myEditor->isChecked(); //set model data QMap<int,QVariant> data; data.insert(Qt::DisplayRole,myEditor->text()); data.insert(Qt::UserRole,value); model->setItemData(index,data); } void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex & /*index*/ ) const { editor->setGeometry(option.rect); } }; CheckBoxList::CheckBoxList(QWidget *widget ) :QComboBox(widget) { // set delegate items view view()->setItemDelegate(new CheckBoxListDelegate(this)); // Enable editing on items view view()->setEditTriggers(QAbstractItemView::CurrentChanged); // set "CheckBoxList::eventFilter" as event filter for items view view()->viewport()->installEventFilter(this); // it just cool to have it as defualt ;) view()->setAlternatingRowColors(true); } CheckBoxList::~CheckBoxList() { ; } bool CheckBoxList::eventFilter(QObject *object, QEvent *event) { // don't close items view after we release the mouse button // by simple eating MouseButtonRelease in viewport of items view if(event->type() == QEvent::MouseButtonRelease && object==view()->viewport()) { return true; } return QComboBox::eventFilter(object,event); } void CheckBoxList::paintEvent(QPaintEvent *) { QStylePainter painter(this); painter.setPen(palette().color(QPalette::Text)); // draw the combobox frame, focusrect and selected etc. QStyleOptionComboBox opt; initStyleOption(&opt); // if no display text been set , use "..." as default if(m_DisplayText.isNull()) opt.currentText = "..."; else opt.currentText = m_DisplayText; painter.drawComplexControl(QStyle::CC_ComboBox, opt); // draw the icon and text painter.drawControl(QStyle::CE_ComboBoxLabel, opt); } void CheckBoxList::SetDisplayText(QString text) { m_DisplayText = text; } QString CheckBoxList::GetDisplayText() const { return m_DisplayText; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/CheckBoxList.h����������������������������������������������������������0000664�0000000�0000000�00000001514�11770671653�0020350�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/////////////////////////////////////////////////////////// // CheckBoxList.h // Header of the Class CheckBoxList // Created on: 02-Jun-2008 6:53:56 PM // Original author: Nasser M. Al-Ansari (Da-Crystal) /////////////////////////////////////////////////////////// // Modification History: // // Who(SNo) Date Description // /////////////////////////////////////////////////////////// #ifndef CHECKBOXLIST_H #define CHECKBOXLIST_H #include <QtGui> class CheckBoxList: public QComboBox { Q_OBJECT; public: CheckBoxList(QWidget *widget = 0); virtual ~CheckBoxList(); bool eventFilter(QObject *object, QEvent *event); virtual void paintEvent(QPaintEvent *); void SetDisplayText(QString text); QString GetDisplayText() const; private: QString m_DisplayText; }; #endif // CHECKBOXLIST_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/EditCompleterDelegate.cpp�����������������������������������������������0000664�0000000�0000000�00000010525�11770671653�0022556�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: editcompleterdelegate // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include "EditCompleterDelegate.h" #include "MainWindow.h" #include "Document.h" #include "TagModel.h" #include <QLineEdit> #include <QKeyEvent> EditCompleterDelegate::EditCompleterDelegate(QObject* parent): QItemDelegate(parent) { } EditCompleterDelegate::~EditCompleterDelegate() { } QWidget* EditCompleterDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& /* option */, const QModelIndex& index) const { QCompleter* completer = NULL; QWidget* edit; if (index.column() == 0) { QStringList tagKeys = g_getTagKeyList(); // Exclude any tags already defined in the current model for (int i=0; i<index.model()->rowCount(); i++) { if (i != index.row()) { QModelIndex r = index.model()->index(0, 0); tagKeys.removeAll(index.model()->data(r).toString()); } } // QCompleter relies on the list order, so sort it for // consistent completion behaviour tagKeys.sort(); completer = new QCompleter(tagKeys, (QObject *)this); QComboBox *cb = new QComboBox(parent); cb->setInsertPolicy(QComboBox::InsertAlphabetically); cb->insertItems(-1, tagKeys); cb->setEditable(true); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); cb->setCompleter(completer); edit = cb; } else { QModelIndex i = index.model()->index(index.row(), 0); QString k = index.model()->data(i).toString(); if (k != "name") { QStringList sl = g_getTagValueList(k); sl.sort(); completer = new QCompleter(sl, (QObject *)this); QComboBox *cb = new QComboBox(parent); cb->setInsertPolicy(QComboBox::InsertAlphabetically); cb->insertItems(-1, sl); cb->setEditable(true); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); cb->setCompleter(completer); edit = cb; } else { QLineEdit* le = new QLineEdit(parent); edit = le; } } return edit; } void EditCompleterDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const { if (QComboBox *edit = dynamic_cast<QComboBox*>(editor)) { if (index.model()->data(index).toString() != TagModel::newKeyText()) edit->setEditText(index.model()->data(index).toString()); else edit->clearEditText(); edit->lineEdit()->selectAll(); } else if (QLineEdit *edit = dynamic_cast<QLineEdit*>(editor)) { edit->setText(index.model()->data(index).toString()); } } void EditCompleterDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const { QString newVal; if (QComboBox *edit = dynamic_cast<QComboBox*>(editor)) newVal = edit->currentText(); else if (QLineEdit *edit = dynamic_cast<QLineEdit*>(editor)) newVal = edit->text(); if (newVal == index.model()->data(index).toString()) return; if (!newVal.isEmpty()) model->setData(index, newVal); } void EditCompleterDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& /* index */) const { editor->setGeometry(option.rect); } /* On enter commit the current text and move to the next field */ bool EditCompleterDelegate::eventFilter(QObject* object, QEvent* event) { QWidget* editor = qobject_cast<QWidget*>(object); if (!editor) return false; // Note that keys already bound to shortcuts will be QEvent::ShortcutOverride not QEvent::KeyPress if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = (QKeyEvent*)event; switch (keyEvent->key()) { case Qt::Key_Enter: case Qt::Key_Return: emit commitData(editor); emit closeEditor(editor, QAbstractItemDelegate::EditNextItem); return true; } } return QItemDelegate::eventFilter(object, event); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/EditCompleterDelegate.h�������������������������������������������������0000664�0000000�0000000�00000001776�11770671653�0022233�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: editcompleterdelegate // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef EDITCOMPLETERDELEGATE_H #define EDITCOMPLETERDELEGATE_H #include <QItemDelegate> #include <QComboBox> #include <QModelIndex> #include <QObject> #include <QCompleter> /** @author cbro <cbro@semperpax.com> */ class EditCompleterDelegate : public QItemDelegate { Q_OBJECT public: EditCompleterDelegate(QObject* parent = 0); ~EditCompleterDelegate(); QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const; void setEditorData(QWidget* editor, const QModelIndex& index) const; void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const; void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const; bool eventFilter(QObject* object, QEvent* event); }; #endif ��merkaartor-0.18.1/src/Utils/LineF.h�����������������������������������������������������������������0000664�0000000�0000000�00000017140�11770671653�0017025�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_LINEF_ #define MERKAARTOR_LINEF_ #include "Coord.h" #include <QtCore/QPointF> #include <math.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #ifndef M_PI_2 #define M_PI_2 1.57079632679489661923 #endif inline qreal distance(const QPointF& A, const QPointF& B) { qreal dx = A.x()-B.x(); qreal dy = A.y()-B.y(); return sqrt( dx*dx+dy*dy ); } inline qreal length(const QPointF& A) { return sqrt(A.x()*A.x()+A.y()*A.y()); } inline qreal angle(const QPointF& A, const QPointF& B) { qreal d = A.x()*B.x()+A.y()*B.y(); qreal x = A.x()*B.y()-A.y()*B.x(); // numerical stability : in extreme cases the argument of asin gets slightly larger than 1 if (fabs(d) < 0.00001) return (x>0)?M_PI_2:-M_PI; x = asin(x/(length(A)*length(B))); if (d<0) { if (x > 0) x = M_PI - x; else x = -M_PI - x; } return x; } inline qreal angle(const QPointF& A) { return atan2(A.y(),A.x()); } class LineF { public: LineF(const QLineF& l) : P1(l.p1()), P2(l.p2()) { init(); } LineF(const QPointF& aP1, const QPointF& aP2) : P1(aP1), P2(aP2), Valid(true) { init(); } LineF(const QPoint& aP1, const QPoint& aP2) : P1(aP1), P2(aP2), Valid(true) { init(); } LineF(const Coord& aP1, const Coord& aP2) : P1(aP1.x(),aP1.y()), P2(aP2.x(),aP2.y()), Valid(true) { init(); } void init() { A = P2.y()-P1.y(); B = -P2.x()+P1.x(); C = -P1.y()*B-P1.x()*A; qreal F = sqrt(A*A+B*B); if (F<0.00000001) Valid=false; else { A/=F; B/=F; C/=F; } } void slide(qreal d) { C += d*sqrt(A*A+B*B); } qreal distance(const QPointF& P) const { if (Valid) return fabs(A*P.x()+B*P.y()+C); else return sqrt( (P.x()-P1.x())*(P.x()-P1.x()) + (P.y()-P1.y())*(P.y()-P1.y()) ); } //qreal capDistance(const QPointF& P) const //{ // if (Valid) // { // qreal dx = P2.x()-P1.x(); // qreal dy = P2.y()-P1.y(); // qreal px = P.x()-P1.x(); // qreal py = P.y()-P1.y(); // if ( (dx*px+dy*py) < 0) // return ::distance(P,P1); // px = P.x()-P2.x(); // py = P.y()-P2.y(); // if ( (dx*px+dy*py) > 0) // return ::distance(P,P2); // return fabs(A*P.x()+B*P.y()+C); // } // else // return sqrt( (P.x()-A)*(P.x()-A) + (P.y()-B)*(P.y()-B) ); //} qreal capDistance(const Coord& P) { if (Valid) { qreal dx = P2.x()-P1.x(); qreal dy = P2.y()-P1.y(); qreal px = P.x()-P1.x(); qreal py = P.y()-P1.y(); if ( (dx*px+dy*py) < 0) return ::distance(P,P1); px = P.x()-P2.x(); py = P.y()-P2.y(); if ( (dx*px+dy*py) > 0) return ::distance(P,P2); return fabs(A*P.x()+B*P.y()+C); } else return sqrt( (P.x()-A)*(P.x()-A) + (P.y()-B)*(P.y()-B) ); } Coord project(const Coord& P) { if (Valid) { qreal SD = A*P.x()+B*P.y()+C; return Coord(P.x()-A*SD,P.y()-B*SD); } return Coord(P1.x(),P1.y()); } QPointF project(const QPointF& P) { if (Valid) { qreal SD = A*P.x()+B*P.y()+C; return QPointF(P.x()-A*SD,P.y()-B*SD); } return P1; } QPointF project(const QPoint& P) { return project(QPointF(P)); } bool intersectsWith(const CoordBox& C) const { QPointF intersection; if ( QLineF(P1, P2).intersect( QLineF( C.topLeft(), C.topRight() ), &intersection) == QLineF::BoundedIntersection ) return true; if ( QLineF(P1, P2).intersect( QLineF( C.topRight(), C.bottomRight() ), &intersection) == QLineF::BoundedIntersection ) return true; if ( QLineF(P1, P2).intersect( QLineF( C.bottomRight(), C.bottomLeft() ), &intersection) == QLineF::BoundedIntersection ) return true; if ( QLineF(P1, P2).intersect( QLineF( C.bottomLeft(), C.topLeft() ), &intersection) == QLineF::BoundedIntersection ) return true; return false; } void intersectionWith(const CoordBox& C, Coord* C1, Coord* C2) const { QPointF intersection; bool hasC1 = false; if ( QLineF(P1, P2).intersect( QLineF( C.topLeft(), C.topRight() ), &intersection) == QLineF::BoundedIntersection ) { *C1 = intersection; hasC1 = true; } if ( QLineF(P1, P2).intersect( QLineF( C.topRight(), C.bottomRight() ), &intersection) == QLineF::BoundedIntersection ) { if (hasC1) { *C2 = intersection; return; } else { *C1 = intersection; hasC1 = true; } } if ( QLineF(P1, P2).intersect( QLineF( C.bottomRight(), C.bottomLeft() ), &intersection) == QLineF::BoundedIntersection ) { if (hasC1) { *C2 = intersection; return; } else { *C1 = intersection; hasC1 = true; } } if ( QLineF(P1, P2).intersect( QLineF( C.bottomLeft(), C.topLeft() ), &intersection) == QLineF::BoundedIntersection ) { if (hasC1) { *C2 = intersection; return; } else { *C1 = intersection; hasC1 = true; } } } QPointF intersectionWith(const LineF& L) { qreal D = A*L.B - L.A*B; if (fabs(D) < 0.00001) return P2; qreal x = B*L.C - L.B*C; qreal y = L.A*C - A*L.C; return QPointF(x/D,y/D); } bool segmentContains(const QPointF& X) { return ( ((P1.x() <= X.x()) && (X.x() <= P2.x())) || ((P1.x() >= X.x()) && (X.x() >= P2.x())) ) && ( ((P1.y() <= X.y()) && (X.y() <= P2.y())) || ((P1.y() >= X.y()) && (X.y() >= P2.y())) ); } private: QPointF P1, P2; bool Valid; qreal A,B,C; }; class BezierF { public: BezierF(const QPointF& aA, const QPointF& aB, const QPointF& aC, const QPointF& aD) : A(aA), B(aB), C(aC), D(aD) { } BezierF(const QPoint& aA, const QPoint& aB, const QPoint& aC, const QPoint& aD) : A(aA), B(aB), C(aC), D(aD) { } BezierF(const Coord& aA, const Coord& aB, const Coord& aC, const Coord& aD) : A(aA), B(aB), C(aC), D(aD) { } qreal distance(const QPointF& T) const { qreal LowestZ = ::distance(A,T); for (qreal t=0;t<1.0125; t+=0.025) { QPointF P = A*(1-t)*(1-t)*(1-t) + 3*B*(1-t)*(1-t)*t + 3*C*(1-t)*t*t + D*t*t*t; qreal z = ::distance(P,T); if (z < LowestZ) LowestZ = z; } return LowestZ; } QPointF project(const QPointF& T) const { qreal LowestZ = ::distance(A,T); QPointF ClosestP(A); for (qreal t=0;t<1.0125; t+=0.025) { QPointF P = A*(1-t)*(1-t)*(1-t) + 3*B*(1-t)*(1-t)*t + 3*C*(1-t)*t*t + D*t*t*t; qreal z = ::distance(P,T); if (z < LowestZ) { LowestZ = z; ClosestP = P; } } return ClosestP; } private: QPointF A,B,C,D; }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/MDiscardableDialog.cpp��������������������������������������������������0000664�0000000�0000000�00000003646�11770671653�0022023�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "MDiscardableDialog.h" #include "MerkaartorPreferences.h" #include <QVBoxLayout> #include <QApplication> #include <QLabel> #include <QSettings> MDiscardableDialog::MDiscardableDialog(QWidget *parent, QString title) : QDialog(parent), mainWidget(0), Title(title) { QSettings* Sets = M_PREFS->getQSettings(); Sets->beginGroup("DiscardableDialogs"); DiscardableRole = Sets->value(title, -1).toInt(); Sets->endGroup(); setWindowTitle(title); setMinimumSize(300, 100); theLayout = new QVBoxLayout(this); theLayout->setSpacing(4); theLayout->setMargin(4); theDSA.setText(tr("Don't ask me this again")); theLayout->addWidget(&theDSA); } void MDiscardableDialog::setWidget ( QWidget * widget ) { if (mainWidget) theLayout->removeWidget(mainWidget); mainWidget = widget; mainWidget->setParent(this); theLayout->insertWidget(0, mainWidget); } QWidget* MDiscardableDialog::getWidget() { mainWidget = new QWidget(); mainWidget->setParent(this); theLayout->addWidget(mainWidget); return mainWidget; } int MDiscardableDialog::check() { if (DiscardableRole != -1) return DiscardableRole; int tmpRet = exec(); if (theDSA.isChecked()) { DiscardableRole = tmpRet; QSettings* Sets = M_PREFS->getQSettings(); Sets->beginGroup("DiscardableDialogs"); Sets->setValue(Title, DiscardableRole); Sets->endGroup(); } return tmpRet; } /* MDiscardableMessage */ MDiscardableMessage::MDiscardableMessage(QWidget *parent, QString title, QString msg) : MDiscardableDialog(parent, title) { theBB.setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No); theLayout->addWidget(&theBB); connect(&theBB, SIGNAL(accepted()), this, SLOT(accept())); connect(&theBB, SIGNAL(rejected()), this, SLOT(reject())); QLabel * txt = new QLabel(); txt->setText(msg); setWidget(txt); } ������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/MDiscardableDialog.h����������������������������������������������������0000664�0000000�0000000�00000001351�11770671653�0021457�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MDISCARDABLEDIALOG_H #define MDISCARDABLEDIALOG_H #include <QDialog> #include <QDialogButtonBox> #include <QCheckBox> class QVBoxLayout; class MDiscardableDialog : public QDialog { Q_OBJECT public: MDiscardableDialog(QWidget *parent = 0, QString title = QString()); void setWidget ( QWidget * widget ); QWidget* getWidget(); virtual int check(); protected: QVBoxLayout* theLayout; QWidget* mainWidget; QCheckBox theDSA; QString Title; int DiscardableRole; }; class MDiscardableMessage : public MDiscardableDialog { public: MDiscardableMessage(QWidget *parent = 0, QString title = QString(), QString msg = QString()); protected: QDialogButtonBox theBB; }; #endif //MDISCARDABLEDIALOG_H ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/OsmLink.cpp�������������������������������������������������������������0000664�0000000�0000000�00000015774�11770671653�0017752�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "OsmLink.h" #include <QApplication> #include <QMessageBox> #include <QStringList> OsmLink::OsmLink(QString url) : m_IsValid(false) { QString s = parseUrl(QUrl(url, QUrl::TolerantMode)); if (!m_IsValid) qDebug() << "OsmLink:" << s; } OsmLink::OsmLink(QUrl url) : m_IsValid(false) { QString s = parseUrl(url); if (!m_IsValid) qDebug() << "OsmLink:" << s; } #define ARG_VALID(param) if (!parseOk) return QString("Unparsed " #param "=\"%1\"").arg(theUrl.queryItemValue(#param)) #define PARSE_ERROR(val) if (!parseOk) return QString("Unparsed " #val "=\"%1\"").arg(val) QString OsmLink::parseUrl(QUrl theUrl) { // On parse failure, we bail early, leaving m_isValid unset bool parseOk; if (!theUrl.isValid()) return QString("Invalid URL: %1").arg(theUrl.toString());; if (theUrl.toString().contains("osm.org/go")) { parseShortUrl(theUrl.path().section('/', -1)); } else if (theUrl.hasQueryItem("lat") && theUrl.hasQueryItem("lon") && theUrl.hasQueryItem("zoom")) { qreal lat = theUrl.queryItemValue("lat").toDouble(&parseOk); ARG_VALID(lat); qreal lon = theUrl.queryItemValue("lon").toDouble(&parseOk); ARG_VALID(lon); qreal zoom = theUrl.queryItemValue("zoom").toInt(&parseOk); ARG_VALID(zoom); setLatLonZoom(lat, lon, zoom); } else if (theUrl.hasQueryItem("mlat") && theUrl.hasQueryItem("mlon") && theUrl.hasQueryItem("zoom")) { qreal lat = theUrl.queryItemValue("mlat").toDouble(&parseOk); ARG_VALID(lat); qreal lon = theUrl.queryItemValue("mlon").toDouble(&parseOk); ARG_VALID(lon); qreal zoom = theUrl.queryItemValue("zoom").toInt(&parseOk); ARG_VALID(zoom); setLatLonZoom(lat, lon, zoom); } else if (theUrl.hasQueryItem("minlon") && theUrl.hasQueryItem("maxlon") && theUrl.hasQueryItem("minlat") && theUrl.hasQueryItem("maxlat")) { qreal bottom = theUrl.queryItemValue("minlat").toDouble(&parseOk); ARG_VALID(minlat); qreal left = theUrl.queryItemValue("minlon").toDouble(&parseOk); ARG_VALID(minlon); qreal top = theUrl.queryItemValue("maxlat").toDouble(&parseOk); ARG_VALID(maxlat); qreal right = theUrl.queryItemValue("maxlon").toDouble(&parseOk); ARG_VALID(maxlon); setMinMax(bottom, left, top, right); } else if (theUrl.hasQueryItem("left") && theUrl.hasQueryItem("right") && theUrl.hasQueryItem("bottom") && theUrl.hasQueryItem("top")) { qreal bottom = theUrl.queryItemValue("bottom").toDouble(&parseOk); ARG_VALID(minlat); qreal left = theUrl.queryItemValue("left").toDouble(&parseOk); ARG_VALID(minlon); qreal top = theUrl.queryItemValue("top").toDouble(&parseOk); ARG_VALID(maxlat); qreal right = theUrl.queryItemValue("right").toDouble(&parseOk); ARG_VALID(maxlon); setMinMax(bottom, left, top, right); } else if (theUrl.hasQueryItem("left") && theUrl.hasQueryItem("right") && theUrl.hasQueryItem("bottom") && theUrl.hasQueryItem("top")) { qreal bottom = theUrl.queryItemValue("bottom").toDouble(&parseOk); ARG_VALID(minlat); qreal left = theUrl.queryItemValue("left").toDouble(&parseOk); ARG_VALID(minlon); qreal top = theUrl.queryItemValue("top").toDouble(&parseOk); ARG_VALID(maxlat); qreal right = theUrl.queryItemValue("right").toDouble(&parseOk); ARG_VALID(maxlon); setMinMax(bottom, left, top, right); } else if ((theUrl.host().contains("maps.google.com") || theUrl.host().contains("maps.google.co.uk")) && theUrl.hasQueryItem("ll") && theUrl.hasQueryItem("spn")) { QStringList ll = theUrl.queryItemValue("ll").split(","); if (ll.count() != 2) return QString("Unsplit=\"%2\" (%1 elements)").arg(ll.count()).arg(theUrl.queryItemValue("ll")); qreal lat = ll[0].toDouble(&parseOk); PARSE_ERROR(ll[0]); qreal lon = ll[1].toDouble(&parseOk); PARSE_ERROR(ll[1]); QStringList spn = theUrl.queryItemValue("spn").split(","); if (spn.count() != 2) return QString("Unsplit=\"%2\" (%1 elements)").arg(spn.count()).arg(theUrl.queryItemValue("spn")); qreal spanLat = spn[0].toDouble(&parseOk); PARSE_ERROR(spn[0]); qreal spanLon = spn[1].toDouble(&parseOk); PARSE_ERROR(spn[1]); setMinMax(lat-spanLat, lon-spanLon/2, lat+spanLat, lon+spanLon/2); } return QString("Unrecognised URL: %1").arg(theUrl.toString()); } void OsmLink::parseShortUrl(QString code) { // TWO_32 defined in terms of 1<<16 because 1L<<32 may overflow if long is only 32 bits static const qreal TWO_32 = (double)(1<<16) * (double)(1<<16); static const QByteArray possibleChar("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_@"); int x = 0; int y = 0; int z = 0; int z_offset = 0; QByteArray ar = code.toAscii(); for (int i=0; i<ar.size(); ++i) { qint8 t = possibleChar.indexOf(ar.at(i)); if (t == -1) z_offset += 1; else { for (int j=0; j<3; ++j) { x <<= 1; if ((t & 32) != 0) x |= 1; t <<= 1; y <<= 1; if ((t & 32) != 0) y |= 1; t <<= 1; } z += 3; } } x <<= (32 - z); y <<= (32 - z); qreal lon = (x * 360. / TWO_32) - 180.; qreal lat = (y * 180. / TWO_32) - 90.; if (z_offset) z_offset = (3 - (z_offset % 3)); int zoom = z - 8 - z_offset; if (lon < -180.) lon += 360.; if (lon > 180.) lon -= 360; if (lat < -90.) lat += 180; if (lat > 90.) lat -= 180; setLatLonZoom(lat, lon, zoom); } void OsmLink::setLatLonZoom(qreal lat, qreal lon, int zoom) { // Constrain zoom if (zoom > 20) zoom = 20; if (zoom < 1) // probably a parse error; at least try zoom = 15; /* term to calculate the angle from the zoom-value */ qreal zoomLat = 360.0 / (double)(1 << zoom); qreal zoomLon = zoomLat / fabs(cos(angToRad(lat))); /* the following line is equal to the line above. (just for explanation) */ //qreal zoomLon = zoomLat / aParent->view()->projection().latAnglePerM() * aParent->view()->projection().lonAnglePerM(angToRad(lat)); /* the OSM link contains the coordinates from the middle of the visible map so we have to add and sub zoomLon/zoomLat */ setMinMax(lat-zoomLat, lon-zoomLon, lat+zoomLat, lon+zoomLon); } void OsmLink::setMinMax(qreal bottom, qreal left, qreal top, qreal right) { const qreal minwidth = 0.0001; if (right-left < minwidth) { left = (left + right - minwidth) / 2.0; right = left + minwidth; } if (top-bottom < minwidth) { top = (top + bottom + minwidth) / 2.0; bottom = top - minwidth; } m_Box = CoordBox(Coord(left, bottom), Coord(right, top)); m_IsValid = true; } ����merkaartor-0.18.1/src/Utils/OsmLink.h���������������������������������������������������������������0000664�0000000�0000000�00000001005�11770671653�0017375�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef OSMLINK_H #define OSMLINK_H #include <QUrl> #include "Coord.h" class OsmLink { public: OsmLink(QUrl url); OsmLink(QString url); bool isValid() const { return m_IsValid; } CoordBox getCoordBox() const { return m_Box; } private: bool m_IsValid; CoordBox m_Box; QString parseUrl(QUrl url); void parseShortUrl(QString code); void setLatLonZoom(qreal lat, qreal lon, int zoom); void setMinMax(qreal bottom, qreal left, qreal top, qreal right); }; #endif // OSMLINK_H ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/PictureViewerDialog.cpp�������������������������������������������������0000664�0000000�0000000�00000004434�11770671653�0022302�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: PictureViewerDialog // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "PictureViewerDialog.h" #include <QFileDialog> #include <QFile> PictureViewerDialog::PictureViewerDialog(const QString& title, const QString &filename, QWidget *parent) :QDialog(parent), m_filename(filename) { setupUi(this); pixWidget->loadFile(filename); setWindowTitle(title); } PictureViewerDialog::PictureViewerDialog(const QString& title, const QPixmap& thePixmap, QWidget *parent) :QDialog(parent) { setupUi(this); pixWidget->setPixmap(thePixmap); setWindowTitle(title); } void PictureViewerDialog::on_buttonBox_clicked(QAbstractButton * button) { if (buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) { if (m_filename.endsWith("svg", Qt::CaseInsensitive)) { QString s; QFileDialog dlg(this, tr("Output filename"), QString("%1.svg").arg(tr("untitled")), tr("SVG files (*.svg)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("svg"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) s = dlg.selectedFiles()[0]; } // QString s = QFileDialog::getSaveFileName(this,tr("Output filename"),"",tr("SVG files (*.svg)")); if (!s.isNull()) { QFile(s).remove(); QFile(m_filename).copy(s); } } else { QString s; QFileDialog dlg(this, tr("Output filename"), QString("%1.png").arg(tr("untitled")), tr("Image files (*.png *.jpg)") + "\n" + tr("All Files (*)")); dlg.setFileMode(QFileDialog::AnyFile); dlg.setDefaultSuffix("png"); dlg.setAcceptMode(QFileDialog::AcceptSave); if (dlg.exec()) { if (dlg.selectedFiles().size()) s = dlg.selectedFiles()[0]; } // QString s = QFileDialog::getSaveFileName(this,tr("Output filename"),"",tr("Image files (*.png *.jpg)")); if (!s.isNull()) { pixWidget->pixmap()->save(s); } } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/PictureViewerDialog.h���������������������������������������������������0000664�0000000�0000000�00000001332�11770671653�0021741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: PictureViewerDialog // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef PICTUREVIEWERDIALOG_H #define PICTUREVIEWERDIALOG_H #include <QWidget> #include <ui_PictureViewerDialog.h> class PictureViewerDialog: public QDialog , public Ui::PictureViewerDialog { Q_OBJECT public: PictureViewerDialog(const QString& title, const QString &filename, QWidget *parent=NULL); PictureViewerDialog(const QString& title, const QPixmap& thePixmap, QWidget *parent=NULL); private: QString m_filename; public slots: void on_buttonBox_clicked(QAbstractButton * button); protected: private: }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/PictureViewerDialog.ui��������������������������������������������������0000664�0000000�0000000�00000002376�11770671653�0022140�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>PictureViewerDialog</class> <widget class="QDialog" name="PictureViewerDialog" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>557</width> <height>475</height> </rect> </property> <property name="windowTitle" > <string>Dialog</string> </property> <layout class="QVBoxLayout" > <item> <widget class="PixmapWidget" native="1" name="pixWidget" /> </item> <item> <widget class="QDialogButtonBox" name="buttonBox" > <property name="standardButtons" > <set>QDialogButtonBox::Close|QDialogButtonBox::Save</set> </property> </widget> </item> </layout> </widget> <customwidgets> <customwidget> <class>PixmapWidget</class> <extends>QWidget</extends> <header location="global" >PixmapWidget.h</header> <container>1</container> </customwidget> </customwidgets> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>PictureViewerDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel" > <x>501</x> <y>456</y> </hint> <hint type="destinationlabel" > <x>453</x> <y>476</y> </hint> </hints> </connection> </connections> </ui> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/PixmapWidget.cpp��������������������������������������������������������0000664�0000000�0000000�00000007274�11770671653�0020774�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <QPixmap> #include <QPainter> #include <QWheelEvent> #include <QSvgRenderer> #include "PixmapWidget.h" #include "MerkaartorPreferences.h" PixmapWidget::PixmapWidget( QWidget *parent ) : QWidget( parent ), m_pm(0), m_svgr(0), zoomFactor(1.0), done(false) { } void PixmapWidget::loadFile( const QString &filename ) { m_pm = new QPixmap( filename ); // All that follows in not used, as QPixmap loads SVG // but could be useful if we want to do a real SVG preview if (m_pm->isNull()) { SAFE_DELETE(m_pm); m_svgr = new QSvgRenderer(filename, this); if (m_svgr->isValid()) SAFE_DELETE(m_svgr); } if (!m_pm && m_svgr) { m_pm = new QPixmap(width(), height()); QPainter p(m_pm); m_svgr->render(&p); } } void PixmapWidget::setPixmap( const QPixmap &aPix ) { m_pm = new QPixmap( aPix ); } QPixmap* PixmapWidget::pixmap() { return m_pm; } bool PixmapWidget::isPixmap() { return (m_pm != NULL && m_svgr == NULL); } bool PixmapWidget::isSvg() { return (m_svgr != NULL); } PixmapWidget::~PixmapWidget() { delete m_pm; } void PixmapWidget::setZoomFactor( qreal f ) { if( f == zoomFactor ) return; zoomFactor = f; emit( zoomFactorChanged( zoomFactor ) ); update(); } void PixmapWidget::paintEvent( QPaintEvent * /*anEvent*/ ) { int xoffset, yoffset; bool drawBorder = true; xoffset = Delta.x(); yoffset = Delta.y(); QPainter p( this ); p.setRenderHint(QPainter::Antialiasing); p.save(); p.translate( xoffset, yoffset ); p.scale( zoomFactor, zoomFactor ); p.drawPixmap( 0, 0, *m_pm ); p.restore(); if( drawBorder ) { p.setPen( Qt::black ); p.drawRect( xoffset-1, yoffset-1, int(m_pm->width()*zoomFactor+1), int(m_pm->height()*zoomFactor+1) ); } } void PixmapWidget::wheelEvent( QWheelEvent *anEvent ) { qreal f; f = zoomFactor + 0.001*anEvent->delta(); if( f < 32.0/m_pm->width() ) f = 32.0/m_pm->width(); QPoint p = anEvent->pos() - Delta; Delta -= (QPointF(p) / zoomFactor * f).toPoint() - p; setZoomFactor( f ); } void PixmapWidget::mousePressEvent ( QMouseEvent * anEvent ) { if ( ((anEvent->buttons() & Qt::RightButton) && !M_PREFS->getMouseSingleButton()) || ((anEvent->buttons() & Qt::LeftButton) && M_PREFS->getMouseSingleButton()) ) { Panning = true; LastPan = anEvent->pos(); } } void PixmapWidget::mouseReleaseEvent ( QMouseEvent * anEvent ) { if ( ((anEvent->buttons() & Qt::RightButton) && !M_PREFS->getMouseSingleButton()) || ((anEvent->buttons() & Qt::LeftButton) && M_PREFS->getMouseSingleButton()) ) { if (Panning) { Panning = false; } } } void PixmapWidget::mouseMoveEvent ( QMouseEvent * anEvent ) { if ( ((anEvent->buttons() & Qt::RightButton) && !M_PREFS->getMouseSingleButton()) || ((anEvent->buttons() & Qt::LeftButton) && M_PREFS->getMouseSingleButton()) ) { if (Panning) { Delta += anEvent->pos() - LastPan; LastPan = anEvent->pos(); update(); } } } void PixmapWidget::resizeEvent ( QResizeEvent * anEvent ) { if (!done) { qreal rd = (double)m_pm->width() / (double)m_pm->height(); qreal rw = (double)width() / (double)height(); zoomFactor = rd < rw ? (double)height() / (double)m_pm->height() : (double)width() / (double)m_pm->width(); done = true; Delta = QPointF(((double)width() - (double)m_pm->width() * zoomFactor) /2, ((double)height() - (double)m_pm->height()* zoomFactor) / 2).toPoint(); } QWidget::resizeEvent(anEvent); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/PixmapWidget.h����������������������������������������������������������0000664�0000000�0000000�00000002011�11770671653�0020421�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef PIXMAPWIDGET_H #define PIXMAPWIDGET_H #include <QWidget> #include <QString> class QPixmap; class QSvgRenderer; class PixmapWidget : public QWidget { Q_OBJECT public: PixmapWidget( QWidget *parent=0 ); ~PixmapWidget(); void loadFile( const QString &filename ); void setPixmap( const QPixmap &aPix ); QPixmap* pixmap(); bool isPixmap(); bool isSvg(); public slots: void setZoomFactor( qreal ); signals: void zoomFactorChanged( qreal ); protected: virtual void paintEvent( QPaintEvent* anEvent); virtual void wheelEvent( QWheelEvent* anEvent); virtual void resizeEvent ( QResizeEvent * anEvent ); virtual void mousePressEvent ( QMouseEvent * anEvent ) ; virtual void mouseReleaseEvent ( QMouseEvent * anEvent ); virtual void mouseMoveEvent ( QMouseEvent * anEvent ); private: QPixmap *m_pm; QSvgRenderer *m_svgr; qreal zoomFactor; bool Panning; QPoint Delta; QPoint FirstPan, LastPan; bool done; }; #endif // PIXMAPWIDGET_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/ProjectionChooser.cpp���������������������������������������������������0000664�0000000�0000000�00000007707�11770671653�0022032�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "ProjectionChooser.h" #include "ui_ProjectionChooser.h" #ifndef NO_PREFS #include "MerkaartorPreferences.h" #endif #include "ogrsf_frmts.h" #include <QMessageBox> ProjectionChooser::ProjectionChooser(QWidget *parent) : QDialog(parent), ui(new Ui::ProjectionChooser) { ui->setupUi(this); } ProjectionChooser::~ProjectionChooser() { delete ui; } QString ProjectionChooser::getProjection(QString title, bool bShowPredefined, QString initialProj, QWidget* parent) { QString sPrj; ProjectionChooser* dlg = new ProjectionChooser(parent); dlg->setWindowTitle(title); #ifndef NO_PREFS if (bShowPredefined) { int idx = 0, curIdx = 0; foreach (ProjectionItem it, *M_PREFS->getProjectionsList()->getProjections()) { if (it.deleted) continue; dlg->ui->cbPredefined->addItem(it.name, it.projection); if (it.name.contains(":4326")) curIdx = idx; ++idx; } dlg->ui->cbPredefined->setCurrentIndex(curIdx); dlg->ui->chkPredefined->setChecked(true); } else { dlg->ui->chkPredefined->setVisible(false); dlg->ui->cbPredefined->setVisible(false); } #else dlg->ui->chkPredefined->setVisible(false); dlg->ui->cbPredefined->setVisible(false); #endif if (!initialProj.isEmpty()) { if (initialProj.startsWith("+proj")) { dlg->ui->txtCustom->setText(initialProj); dlg->ui->chkCustom->setChecked(true); } else if (initialProj.startsWith("PROJCS")) { dlg->ui->txWkt->setPlainText(initialProj); dlg->ui->chkWkt->setChecked(true); } } dlg->adjustSize(); if (dlg->exec() == QDialog::Accepted) { if (dlg->ui->chkPredefined->isChecked()) sPrj = dlg->ui->cbPredefined->itemData(dlg->ui->cbPredefined->currentIndex()).toString(); else if (dlg->ui->chkStandard->isChecked()) { sPrj = dlg-> ui->txtStandard->text().trimmed(); bool ok; int iEpsg = sPrj.toInt(&ok); if (ok) { sPrj = "EPSG:" + sPrj; OGRSpatialReference *poSRS; poSRS = new OGRSpatialReference(); poSRS->importFromEPSG(iEpsg); char* cTheProj4; if (poSRS->exportToProj4(&cTheProj4) != OGRERR_NONE) { QMessageBox::critical(parent, tr("Error in WKT string"), tr("Cannot export to PROJ4 format")); sPrj = QString(); } else { sPrj = QString(cTheProj4); } poSRS->Release(); } } else if (dlg->ui->chkWkt->isChecked()) { OGRSpatialReference *poSRS; poSRS = new OGRSpatialReference(); QByteArray ba = dlg->ui->txWkt->toPlainText().toLatin1(); char* pszInput = ba.data(); char** ppszInput = &pszInput; if (poSRS->importFromWkt(ppszInput) != OGRERR_NONE) { if (poSRS->importFromESRI(ppszInput) != OGRERR_NONE) { QMessageBox::critical(parent, tr("Error in WKT string"), tr("Invalid WKT string")); poSRS->Release(); sPrj = QString(); } } poSRS->morphFromESRI(); char* cTheProj4; if (poSRS->exportToProj4(&cTheProj4) != OGRERR_NONE) { QMessageBox::critical(parent, tr("Error in WKT string"), tr("Cannot export to PROJ4 format")); sPrj = QString(); } else { sPrj = QString(cTheProj4); } poSRS->Release(); } else sPrj = dlg->ui->txtCustom->text().trimmed(); } delete dlg; return sPrj; } void ProjectionChooser::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } ���������������������������������������������������������merkaartor-0.18.1/src/Utils/ProjectionChooser.h�����������������������������������������������������0000664�0000000�0000000�00000001005�11770671653�0021460�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef PROJECTIONCHOOSER_H #define PROJECTIONCHOOSER_H #include <QDialog> namespace Ui { class ProjectionChooser; } class ProjectionChooser : public QDialog { Q_OBJECT public: ProjectionChooser(QWidget *parent = 0); ~ProjectionChooser(); static QString getProjection(QString title=QString(), bool bShowPredefined=true, QString initialProj = QString(), QWidget* parent=0); protected: void changeEvent(QEvent *e); private: Ui::ProjectionChooser *ui; }; #endif // PROJECTIONCHOOSER_H ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/ProjectionChooser.ui����������������������������������������������������0000664�0000000�0000000�00000011402�11770671653�0021650�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>ProjectionChooser</class> <widget class="QDialog" name="ProjectionChooser"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>500</width> <height>227</height> </rect> </property> <property name="minimumSize"> <size> <width>500</width> <height>0</height> </size> </property> <property name="windowTitle"> <string>Dialog</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <widget class="QRadioButton" name="chkPredefined"> <property name="text"> <string>Predefined</string> </property> </widget> </item> <item row="2" column="0"> <widget class="QRadioButton" name="chkStandard"> <property name="text"> <string>Standard (EPSG:...)</string> </property> </widget> </item> <item row="2" column="1"> <widget class="QLineEdit" name="txtStandard"/> </item> <item row="0" column="1"> <widget class="QComboBox" name="cbPredefined"> <property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="maximumSize"> <size> <width>500</width> <height>16777215</height> </size> </property> </widget> </item> <item row="1" column="0"> <widget class="QRadioButton" name="chkCustom"> <property name="text"> <string>Custom PROJ4(+proj=...)</string> </property> </widget> </item> <item row="1" column="1"> <widget class="QLineEdit" name="txtCustom"/> </item> <item row="3" column="0"> <widget class="QRadioButton" name="chkWkt"> <property name="text"> <string>WKT</string> </property> </widget> </item> <item row="3" column="1"> <widget class="QTextEdit" name="txWkt"> <property name="minimumSize"> <size> <width>0</width> <height>100</height> </size> </property> <property name="maximumSize"> <size> <width>16777215</width> <height>100</height> </size> </property> </widget> </item> </layout> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>ProjectionChooser</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>266</x> <y>217</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>ProjectionChooser</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>334</x> <y>217</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>cbPredefined</sender> <signal>currentIndexChanged(int)</signal> <receiver>chkPredefined</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>239</x> <y>29</y> </hint> <hint type="destinationlabel"> <x>107</x> <y>23</y> </hint> </hints> </connection> <connection> <sender>txtStandard</sender> <signal>textEdited(QString)</signal> <receiver>chkStandard</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>395</x> <y>81</y> </hint> <hint type="destinationlabel"> <x>139</x> <y>79</y> </hint> </hints> </connection> <connection> <sender>txtCustom</sender> <signal>textEdited(QString)</signal> <receiver>chkCustom</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>384</x> <y>55</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>53</y> </hint> </hints> </connection> <connection> <sender>txWkt</sender> <signal>textChanged()</signal> <receiver>chkWkt</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>259</x> <y>129</y> </hint> <hint type="destinationlabel"> <x>60</x> <y>135</y> </hint> </hints> </connection> </connections> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/SelectionDialog.cpp�����������������������������������������������������0000664�0000000�0000000�00000006422�11770671653�0021431�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: SelectionDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include "SelectionDialog.h" #include "MainWindow.h" #include "Document.h" #include <QCompleter> SelectionDialog::SelectionDialog(QWidget *parent, bool showMaxResult) : QDialog(parent) { setupUi(this); if (!showMaxResult) widgetMaxResult->setVisible(false); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); cbKey->setInsertPolicy(QComboBox::InsertAlphabetically); cbValue->setInsertPolicy(QComboBox::InsertAlphabetically); QStringList ksl = g_getTagKeyList(); QCompleter* completer = new QCompleter(ksl, (QObject *)this); cbKey->insertItems(-1, ksl); //special keys cbKey->insertItem(-1, ":zoomlevel"); cbKey->insertItem(-1, ":version"); cbKey->insertItem(-1, ":user"); cbKey->insertItem(-1, ":uploaded"); cbKey->insertItem(-1, ":time"); cbKey->insertItem(-1, ":pixelperm"); cbKey->insertItem(-1, ":dirty"); cbKey->insertItem(-1, ":id"); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); cbKey->setCompleter(completer); cbKey->setEditable(true); cbValue->insertItems(-1, g_getTagValueList("*")); //special values cbValue->insertItem(-1, "_NULL_"); cbValue->setEditable(true); edName->setText(M_PREFS->getLastSearchName()); cbKey->setEditText(M_PREFS->getLastSearchKey()); cbValue->setEditText(M_PREFS->getLastSearchValue()); sbMaxResult->setValue(M_PREFS->getLastMaxSearchResults()); edTagQuery->setText(M_PREFS->getLastSearchTagSelector()); } SelectionDialog::~SelectionDialog() { } void SelectionDialog::on_cbKey_editTextChanged(const QString & text) { cbValue->clear(); QStringList sl = g_getTagValueList(text); QCompleter* completer = new QCompleter(sl, (QObject *)this); cbValue->insertItems(-1, g_getTagValueList(text)); cbValue->insertItem(-1, "_NULL_"); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); if (cbValue->completer()) delete cbValue->completer(); cbValue->setCompleter(completer); edTagQuery->setText("[" + text + "] = " + cbValue->currentText()); } void SelectionDialog::on_cbValue_editTextChanged(const QString & text) { if (!cbKey->currentText().isEmpty()) edTagQuery->setText("[" + cbKey->currentText() + "] = " + text); else edTagQuery->setText("[*] = " + text); } void SelectionDialog::on_edName_textChanged(const QString &text) { edTagQuery->setText("[name] = *" + text + "*"); } void SelectionDialog::on_edID_textChanged(const QString &text) { edTagQuery->setText("[:id] = " + text); } void SelectionDialog::on_buttonBox_accepted() { M_PREFS->setLastSearchName(edName->text()); M_PREFS->setLastSearchKey(cbKey->currentText()); M_PREFS->setLastSearchValue(cbValue->currentText()); M_PREFS->setLastMaxSearchResults(sbMaxResult->value()); M_PREFS->setLastSearchTagSelector(edTagQuery->text()); emit accept(); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/SelectionDialog.h�������������������������������������������������������0000664�0000000�0000000�00000001475�11770671653�0021101�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: SelectionDialog // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef SELECTIONDIALOG_H #define SELECTIONDIALOG_H #include <QDialog> #include <ui_SelectionDialog.h> /** @author cbro <cbro@semperpax.com> */ class SelectionDialog : public QDialog, public Ui::SelectionDialog { Q_OBJECT public: SelectionDialog(QWidget *parent = 0, bool showMaxResult=true); ~SelectionDialog(); private slots: void on_cbKey_editTextChanged(const QString & text); void on_cbValue_editTextChanged(const QString & text); void on_edName_textChanged(const QString& text); void on_edID_textChanged(const QString& text); void on_buttonBox_accepted(); private: QString getOp(); }; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/SelectionDialog.ui������������������������������������������������������0000664�0000000�0000000�00000010663�11770671653�0021266�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>SelectionDialog</class> <widget class="QDialog" name="SelectionDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>511</width> <height>246</height> </rect> </property> <property name="windowTitle"> <string>Selection</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <layout class="QGridLayout"> <property name="spacing"> <number>0</number> </property> <item row="2" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> <string>Key</string> </property> </widget> </item> <item row="2" column="2"> <widget class="QLabel" name="label_4"> <property name="text"> <string>Value</string> </property> </widget> </item> <item row="3" column="1"> <widget class="QLabel" name="label_3"> <property name="maximumSize"> <size> <width>50</width> <height>16777215</height> </size> </property> <property name="text"> <string>=</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Name</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QLineEdit" name="edName"/> </item> <item row="3" column="0"> <widget class="QComboBox" name="cbKey"/> </item> <item row="3" column="2"> <widget class="QComboBox" name="cbValue"/> </item> <item row="4" column="0" colspan="3"> <widget class="Line" name="line"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> </item> <item row="1" column="2"> <widget class="QLineEdit" name="edID"/> </item> <item row="0" column="2"> <widget class="QLabel" name="label_6"> <property name="text"> <string>Id</string> </property> </widget> </item> <item row="5" column="0"> <widget class="QLabel" name="label_7"> <property name="text"> <string>Query</string> </property> </widget> </item> <item row="6" column="0" colspan="3"> <widget class="QLineEdit" name="edTagQuery"/> </item> </layout> </item> <item> <widget class="QWidget" name="widgetMaxResult" native="true"> <layout class="QFormLayout" name="formLayout"> <property name="margin"> <number>0</number> </property> <item row="0" column="0"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Maximum returned results (0 for all)</string> </property> </widget> </item> <item row="1" column="0"> <layout class="QFormLayout" name="layoutMaxResult"> <property name="fieldGrowthPolicy"> <enum>QFormLayout::AllNonFixedFieldsGrow</enum> </property> <item row="0" column="0"> <widget class="QSpinBox" name="sbMaxResult"> <property name="minimum"> <number>0</number> </property> <property name="maximum"> <number>99999</number> </property> <property name="value"> <number>999</number> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <tabstops> <tabstop>buttonBox</tabstop> <tabstop>edName</tabstop> <tabstop>edID</tabstop> <tabstop>cbKey</tabstop> <tabstop>cbValue</tabstop> </tabstops> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>SelectionDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>325</x> <y>188</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> �����������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/ShortcutOverrideFilter.cpp����������������������������������������������0000664�0000000�0000000�00000004025�11770671653�0023042�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: ShortcutOverrideFilter // // Description: Provide an event filter usable via installEventFilter // that will veto specified application shortcut sequences // for the target allowing it to handle them as it normally // would if they weren't bound to a shortcut. // // Author: Travers Carter <tcarter@noggin.com.au>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // #include "ShortcutOverrideFilter.h" #include <QWidget> #include <QLineEdit> #include <QComboBox> #include <QEvent> #include <QKeyEvent> #include "TagTemplate.h" ShortcutOverrideFilter::ShortcutOverrideFilter() { } ShortcutOverrideFilter::~ShortcutOverrideFilter() {} void ShortcutOverrideFilter::addOverride(const QString &key) { overrides.append(QKeySequence(key)); } void ShortcutOverrideFilter::addOverride(int key) { overrides.append(QKeySequence(key)); } bool ShortcutOverrideFilter::eventFilter(QObject* object, QEvent* event) { QWidget* widget = qobject_cast<QWidget*>(object); int i; if (!widget) return false; // If a key sequence is bound to a shortcut, Qt dispatches a ShortcutOverride // event event instead of a KeyPress, if it is handled, then the normal keypress // event will follow, otherwise the shortcut is activated if (event->type() == QEvent::ShortcutOverride) { QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); QKeySequence pressed(keyEvent->key() + keyEvent->modifiers()); if (keyEvent->key() == Qt::Key_Escape) { if (widget->hasFocus()) { if (qobject_cast<QLineEdit*>(object) || qobject_cast<QComboBox*>(object)) { event->accept(); return true; } } } else { for (i=0; i<overrides.size(); i++) { if (pressed == overrides.at(i)) { event->accept(); return true; } } } } return false; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/ShortcutOverrideFilter.h������������������������������������������������0000664�0000000�0000000�00000000765�11770671653�0022516�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef SHORTCUTOVERRIDEFILTER_H #define SHORTCUTOVERRIDEFILTER_H #include <QObject> #include <QEvent> #include <QList> #include <QKeySequence> /** @author Travers Carter <tcarter@noggin.com.au> */ class ShortcutOverrideFilter : public QObject { Q_OBJECT public: ShortcutOverrideFilter(); ~ShortcutOverrideFilter(); void addOverride(const QString &key); void addOverride(int key); bool eventFilter(QObject* object, QEvent* event); private: QList<QKeySequence> overrides; }; #endif �����������merkaartor-0.18.1/src/Utils/SlippyMapWidget.cpp�����������������������������������������������������0000664�0000000�0000000�00000027014�11770671653�0021446�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "SlippyMapWidget.h" #include <QFile> #include <QApplication> #include <QPainter> #include <QPixmap> #include <QWheelEvent> #include <QMenu> #include <math.h> #include "MerkaartorPreferences.h" #define TILESIZE 256 #define MINZOOMLEVEL 0 #define MAXZOOMLEVEL 17 /* SLIPPYMAPWIDGET */ class SlippyMapWidgetPrivate { public: SlippyMapWidgetPrivate(SlippyMapWidget* w) : theWidget(w), InDrag(false) { Sets = M_PREFS->getQSettings(); Sets->beginGroup("SlippyMapWidget"); Lat = Sets->value("Lat", 1).toDouble(); Lon = Sets->value("Lon", 1).toDouble(); Zoom = Sets->value("Zoom", 1).toInt(); Sets->endGroup(); VpLat = Lat; VpLon = Lon; VpZoom = Zoom; } ~SlippyMapWidgetPrivate() { Sets->beginGroup("SlippyMapWidget"); Sets->setValue("Lat", Lat); Sets->setValue("Lon", Lon); Sets->setValue("Zoom", Zoom); Sets->endGroup(); } QPixmap* getImage(int x, int y); void newData(int x, int y, int zoom); SlippyMapWidget* theWidget; int Zoom, VpZoom; qreal Lat,Lon, VpLat, VpLon; QPoint PreviousDrag; bool InDrag; QSettings* Sets; }; QPixmap* SlippyMapWidgetPrivate::getImage(int x, int y) { int Max = 1 << Zoom; if (x<0 || x>=Max) return 0; if (y<0 || y>=Max) return 0; QPixmap* img = theWidget->theSlippyCache->getImage(x,y,Zoom); if (img) return img; img = new QPixmap(TILESIZE,TILESIZE); QPainter Painter(img); Painter.setPen(QColor(0,0,0)); Painter.fillRect(0,0,TILESIZE-1,TILESIZE-1,QColor(255,255,255)); Painter.drawRect(0,0,TILESIZE-1,TILESIZE-1); Painter.drawText(10,TILESIZE/2,(QApplication::translate("Downloader","Downloading %1,%2 (zoom %3)...")).arg(x).arg(y).arg(Zoom)); return img; } void SlippyMapWidgetPrivate::newData(int, int, int) { theWidget->update(); } SlippyMapWidget::SlippyMapWidget(QWidget* aParent) : QWidget(aParent) { p = new SlippyMapWidgetPrivate(this); theSlippyCache->setMap(p); setContextMenuPolicy (Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_customContextMenuRequested(const QPoint &))); resize(500,400); } SlippyMapWidget::~SlippyMapWidget(void) { theSlippyCache->setMap(0); delete p; } /* http://wiki.openstreetmap.org/index.php/Slippy_map_tilenames#C.2FC.2B.2B */ static qreal tile2lon(qreal x, int z) { return x / pow(2.0, z) * 360.0 - 180; } /* http://wiki.openstreetmap.org/index.php/Slippy_map_tilenames#C.2FC.2B.2B */ static qreal tile2lat(qreal y, int z) { qreal n = M_PI - 2.0 * M_PI * y / pow(2.0, z); return 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n))); } static int long2tile(qreal lon, int z) { return (int)(floor((lon + 180.0) / 360.0 * pow(2.0, z))); } static int lat2tile(qreal lat, int z) { return (int)(floor((1.0 - log( tan(lat * M_PI/180.0) + 1.0 / cos(lat * M_PI/180.0)) / M_PI) / 2.0 * pow(2.0, z))); } QRectF SlippyMapWidget::viewArea() const { qreal X1 = p->Lat - (width()/2.0)/TILESIZE; qreal Y1 = p->Lon - (height()/2.0)/TILESIZE; qreal X2 = p->Lat + (width()/2.0)/TILESIZE; qreal Y2 = p->Lon + (height()/2.0)/TILESIZE; qreal Lon1 = tile2lon(X1, p->Zoom); qreal Lat1 = tile2lat(Y1, p->Zoom); qreal Lon2 = tile2lon(X2, p->Zoom); qreal Lat2 = tile2lat(Y2, p->Zoom); return QRectF(Lon1, Lat2, Lon2-Lon1, Lat1-Lat2); } void SlippyMapWidget::setViewportArea(QRectF theRect) { qreal zoom = 360.0 / theRect.width(); zoom = log10(zoom)/log10(2.0); if (zoom < MINZOOMLEVEL) zoom = MINZOOMLEVEL; if (zoom > MAXZOOMLEVEL) zoom = MAXZOOMLEVEL; p->VpZoom = int(zoom); p->VpLon = long2tile(theRect.topRight().x(), p->VpZoom); p->VpLat = lat2tile(theRect.topRight().y(), p->VpZoom); } void SlippyMapWidget::paintEvent(QPaintEvent*) { QPainter Painter(this); Painter.fillRect(QRect(0,0,width(),height()),QColor(255,255,255)); int LatRect = int(floor(p->Lat)); int LatPixel = int(-(p->Lat - LatRect ) * TILESIZE + width()/2); int LonRect = int(floor(p->Lon)); int LonPixel = int(-(p->Lon - LonRect ) * TILESIZE + height()/2); while (LatPixel > 0) LatPixel -=TILESIZE, --LatRect; while (LonPixel > 0) LonPixel -= TILESIZE, --LonRect; for (int x=LatPixel; x<width(); x += TILESIZE) for (int y=LonPixel; y<height(); y+= TILESIZE) { int ThisLatRect = LatRect + (x-LatPixel)/TILESIZE; int ThisLonRect = LonRect + (y-LonPixel)/TILESIZE; QPixmap* img = p->getImage(ThisLatRect,ThisLonRect); if (img) Painter.drawPixmap(x,y,*img); delete img; } Painter.setPen(QPen(Qt::NoPen)); Painter.setBrush(QBrush(QColor(255,255,255,128))); Painter.drawRect(width()-21,0,20,20); Painter.drawRect(width()-21,height()-21,20,20); Painter.drawRect(width()-21,(height()/2)-10,20,20); Painter.setBrush(QBrush(QColor(0,0,0))); Painter.drawRect(width()-19,8,16,4); Painter.drawRect(width()-19,height()-13,16,4); Painter.drawRect(width()-13,height()-19,4,16); Painter.setFont(QFont("Times", 19, QFont::Bold)); Painter.setPen(QPen(Qt::black, 3)); Painter.setBrush(Qt::NoBrush); Painter.drawText(QPoint(width()-21,(height()/2)+10), "V"); } void SlippyMapWidget::ZoomTo(const QPoint & NewCenter, int NewZoom) { if (NewZoom < MINZOOMLEVEL) NewZoom = MINZOOMLEVEL; if (NewZoom > MAXZOOMLEVEL) NewZoom = MAXZOOMLEVEL; if ((int)p->Zoom == NewZoom) return; qreal dx = (NewCenter.x()-width()/2)/(TILESIZE*1.0); qreal dy = (NewCenter.y()-height()/2)/(TILESIZE*1.0); p->Lat = (p->Lat + dx) * (1 << NewZoom) / (1 << p->Zoom) - dx; p->Lon = (p->Lon + dy) * (1 << NewZoom) / (1 << p->Zoom) - dy; p->Zoom = NewZoom; update(); } void SlippyMapWidget::wheelEvent(QWheelEvent* ev) { int NewZoom = ev->delta()/120 + p->Zoom; ZoomTo(ev->pos(), NewZoom); emit redraw(); } void SlippyMapWidget::mousePressEvent(QMouseEvent* ev) { if (ev->button() == Qt::MidButton) { ZoomTo(ev->pos(), p->Zoom + 1); } // else if (ev->button() == Qt::RightButton) // { // ZoomTo(ev->pos(), p->Zoom - 1); // } else { if (ev->pos().x() > width()-20) { if (ev->pos().y() < 20) { ZoomTo(QPoint(width()/2,height()/2),p->Zoom-1); emit redraw(); return; } else if (ev->pos().y() > height()-20) { ZoomTo(QPoint(width()/2,height()/2),p->Zoom+1); emit redraw(); return; } else if ((ev->pos().y() > (height()/2)-20) && (ev->pos().y() < (height()/2))) { p->Lat = p->VpLon; p->Lon = p->VpLat; p->Zoom = p->VpZoom; update(); emit redraw(); return; } } p->PreviousDrag = ev->pos(); } emit redraw(); } void SlippyMapWidget::mouseReleaseEvent(QMouseEvent*) { p->InDrag = false; } void SlippyMapWidget::mouseMoveEvent(QMouseEvent* ev) { QPoint Delta = ev->pos()-p->PreviousDrag; if (!Delta.isNull()) { p->InDrag = true; p->Lat -= Delta.x()/(TILESIZE*1.); p->Lon -= Delta.y()/(TILESIZE*1.); p->PreviousDrag = ev->pos(); update(); emit redraw(); } } void SlippyMapWidget::on_customContextMenuRequested(const QPoint & pos) { QMenu menu; QAction* resetViewAction = new QAction(tr("Reset view"), this); connect(resetViewAction, SIGNAL(triggered(bool)), this, SLOT(on_resetViewAction_triggered(bool))); menu.addAction(resetViewAction); menu.exec(mapToGlobal(pos)); } void SlippyMapWidget::on_resetViewAction_triggered(bool) { p->Lat = 1.0; p->Lon = 1.0; p->Zoom = 1; update(); } bool SlippyMapWidget::isDragging() { return p->InDrag; } /* SLIPPYMAPCACHE */ SlippyMapCache::SlippyMapCache() : QObject(0), DownloadId(0), DownloadBusy(false), theMap(0) { Download.setProxy(M_PREFS->getProxy(QUrl(QString("http://tile.openstreetmap.org")))); Download.setHost("tile.openstreetmap.org"); DownloadBuffer.setBuffer(&DownloadData); DownloadBuffer.open(QIODevice::WriteOnly); connect(&Download,SIGNAL(requestFinished(int,bool)),this,SLOT(on_requestFinished(int, bool))); preload(Coord(0,0,0),":/Tiles/000.png"); preload(Coord(0,0,1),":/Tiles/100.png"); preload(Coord(0,1,1),":/Tiles/101.png"); preload(Coord(1,0,1),":/Tiles/110.png"); preload(Coord(1,1,1),":/Tiles/111.png"); } void SlippyMapCache::setMap(SlippyMapWidgetPrivate* aMap) { theMap = aMap; int Use = 0; for (QMap<Coord, QByteArray>::iterator i = Memory.begin(); i != Memory.end(); ++i) Use += i.value().length(); Dirties.clear(); } void SlippyMapCache::preload(const Coord& C, const QString& Filename) { QFile f(Filename); f.open(QIODevice::ReadOnly); QByteArray ba(f.readAll()); if (ba.length()) Memory[C] = ba; } void SlippyMapCache::on_requestFinished(int Id, bool Error) { if (Id == DownloadId) { DownloadBusy = false; if (!Error) { Memory[DownloadCoord] = DownloadData; if (theMap) theMap->newData(DownloadCoord.X,DownloadCoord.Y,DownloadCoord.Zoom); QMap<Coord,QByteArray>::iterator i = Dirties.find(DownloadCoord); if (i != Dirties.end()) Dirties.erase(i); } } } QPixmap* SlippyMapCache::getImage(int x, int y, int Zoom) { Coord C; C.X = x; C.Y = y; C.Zoom = Zoom; QMap<Coord,QByteArray>::iterator i = Memory.find(C); if (i == Memory.end()) { addToQueue(C); return getDirty(x,y,Zoom); } QPixmap* img = new QPixmap; img->loadFromData(i.value()); return img; } QPixmap* SlippyMapCache::getDirty(int x, int y, int Zoom) { if (Zoom == MINZOOMLEVEL) return 0; QMap<Coord,QByteArray>::iterator i = Dirties.find(Coord(x,y,Zoom)); if (i != Dirties.end()) { QPixmap* img = new QPixmap; img->loadFromData(i.value()); return img; } QPixmap* img = getImage(x/2,y/2,Zoom-1); if (!img) return 0; QPixmap* pm = new QPixmap(img->copy((x%2)*TILESIZE/2,(y%2)*TILESIZE/2,TILESIZE/2,TILESIZE/2).scaled(TILESIZE,TILESIZE)); delete img; QByteArray Data; QBuffer Buffer(&Data); Buffer.open(QIODevice::WriteOnly); pm->save(&Buffer,"PNG"); Coord C(x,y,Zoom); Dirties[C] = Data; return pm; } void SlippyMapCache::addToQueue(const Coord& C) { for (int i=Queue.size(); i; --i) if (Queue[i-1].Zoom != C.Zoom) Queue.erase(Queue.begin()+(i-1)); Queue.push_back(C); startDownload(); } void SlippyMapCache::startDownload() { if (Queue.empty()) return; if (DownloadBusy) return; while (Queue.size()) { QMap<Coord,QByteArray>::iterator i = Memory.find(Queue[0]); if (i == Memory.end()) { DownloadBusy = true; DownloadCoord = Queue[0]; Queue.erase(Queue.begin()); QString Path("/%1/%2/%3.png"); Path = Path.arg(DownloadCoord.Zoom).arg(DownloadCoord.X).arg(DownloadCoord.Y); DownloadData.clear(); DownloadBuffer.reset(); DownloadId = Download.get(Path, &DownloadBuffer); return; } Queue.erase(Queue.begin()); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/SlippyMapWidget.h�������������������������������������������������������0000664�0000000�0000000�00000004345�11770671653�0021115�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_SLIPPYMAPWIDGET_H_ #define MERKAARTOR_SLIPPYMAPWIDGET_H_ #include <QtCore/QBuffer> #include <QtCore/QByteArray> #include <QtGui/QWidget> #include <QtNetwork/QHttp> #include <QMap> #include <QList> class SlippyMapWidgetPrivate; class SlippyMapCache : public QObject { Q_OBJECT struct Coord { Coord() : X(0), Y(0), Zoom(0) {} Coord(int x, int y, int z) : X(x), Y(y), Zoom(z) {} int X,Y,Zoom; bool operator<(const Coord C) const { return (X<C.X) || ( (X==C.X) && (Y<C.Y) ) || ( (X==C.X) && (Y==C.Y) && (Zoom < C.Zoom) ); } }; public: SlippyMapCache(); void setMap(SlippyMapWidgetPrivate* aMap); QPixmap* getImage(int x, int y, int Zoom); QPixmap* getDirty(int x, int y, int Zoom); private slots: void on_requestFinished(int id, bool Error); private: void addToQueue(const Coord& C); void startDownload(); void preload(const Coord& C, const QString& filename); QMap<Coord, QByteArray> Memory, Dirties; QList<Coord> Queue; QHttp Download; QByteArray DownloadData; QBuffer DownloadBuffer; int DownloadId; Coord DownloadCoord; bool DownloadBusy; SlippyMapWidgetPrivate* theMap; }; class SlippyMapWidget : public QWidget { Q_OBJECT public: SlippyMapWidget(QWidget* aParent); ~SlippyMapWidget(); virtual void paintEvent(QPaintEvent* ev); virtual void wheelEvent (QWheelEvent* ev ); virtual void mousePressEvent(QMouseEvent* ev); virtual void mouseMoveEvent(QMouseEvent* ev); virtual void mouseReleaseEvent(QMouseEvent* ev); bool isDragging(); void setViewportArea(QRectF theRect); QRectF viewArea() const; static SlippyMapCache* theSlippyCache; signals: void redraw(); private: SlippyMapWidgetPrivate* p; void ZoomTo(const QPoint & NewCenter, int NewZoom); private slots: virtual void on_customContextMenuRequested(const QPoint & pos); virtual void on_resetViewAction_triggered(bool); }; #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/SvgCache.cpp������������������������������������������������������������0000664�0000000�0000000�00000001701�11770671653�0020042�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "SvgCache.h" #include <QtCore/QMap> #include <QtCore/QPair> #include <QtGui/QPainter> #include <QtSvg/QSvgRenderer> #include <QFileInfo> #include <QDebug> QImage* getSVGImageFromFile(const QString& aName, int Size) { static QMap<QPair<QString, int>, QImage> Cache; QPair<QString, int> Key(aName,Size); if (!Cache.contains(Key)) { QFileInfo fi(aName); if (fi.suffix().toUpper() == "SVG") { if (!Size) Size = 16; QImage result(Size, Size, QImage::Format_ARGB32_Premultiplied); result.fill(Qt::transparent); QPainter p(&result); QSvgRenderer Monet(aName); Monet.render(&p,QRectF(0,0,Size,Size)); Cache[Key] = result; } else { QImage result(aName); if (Size) result = result.scaledToWidth(Size); Cache[Key] = result; } } return &(Cache[Key]); } ���������������������������������������������������������������merkaartor-0.18.1/src/Utils/SvgCache.h��������������������������������������������������������������0000664�0000000�0000000�00000000227�11770671653�0017511�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_SVGCACHE_H_ #define MERKAARTOR_SVGCACHE_H_ #include <QImage> QImage* getSVGImageFromFile(const QString& aName, int Size); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/TagSelector.cpp���������������������������������������������������������0000664�0000000�0000000�00000103122�11770671653�0020573�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "TagSelector.h" #include "IFeature.h" void skipWhite(const QString& Expression, int& idx) { while (idx < Expression.length()) if (Expression[idx] == ' ') ++idx; else return; } bool canParseSymbol(const QString& Expression, int& idx, char Symbol) { skipWhite(Expression, idx); if ((idx < Expression.length()) && (Expression[idx] == Symbol)) { ++idx; return true; } return false; } bool canParseString(const QString& Expression, int& idx, QString& Key) { Key = ""; skipWhite(Expression,idx); if (idx >= Expression.length()) return false; if (Expression[idx] != '/' && Expression[idx] != '"') return false; Key += Expression[idx++]; while (idx < Expression.length()) { if (Expression[idx] != '/' && Expression[idx] != '"') Key += Expression[idx++]; else break; } if (Expression[idx] == '/' || Expression[idx] == '"') { Key += Expression[idx++]; return Key.length() > 0; } return false; } bool canParseValue(const QString& Expression, int& idx, QString& Key) { Key = ""; skipWhite(Expression,idx); if (idx >= Expression.length()) return false; unsigned short opened =0; if (Expression[idx] == '/' || Expression[idx] == '"') //Constants return false; while (idx < Expression.length()) { if ( ((Expression[idx] == '_') || (Expression[idx].isLetterOrNumber()) || (Expression[idx] == '-') /*|| (Expression[idx].isPunct())*/ || (Expression[idx] == '*') || (Expression[idx] == ':') || (Expression[idx] == '?')) && ( (Expression[idx] != '[') && (Expression[idx] != ']') && (Expression[idx] != ',') && (Expression[idx] != '(')&& (Expression[idx] != ')')) ) Key += Expression[idx++]; else if ( Expression[idx] == '[' ) { opened++; Key += Expression[idx++]; } else if ( Expression[idx] == ']' ) { if( opened == 0) break; opened--; Key += Expression[idx++]; } else break; } return Key.length() > 0; } bool canParseKey(const QString& Expression, int& idx, QString& Key) { if (idx >= Expression.length()) return false; if (!canParseSymbol(Expression,idx,'[')) return false; if (!canParseValue(Expression,idx,Key)) return false; canParseSymbol(Expression,idx,']'); return true; } bool canParseLiteral(const QString& Expression, int& idx, const QString& Literal) { skipWhite(Expression,idx); if (idx >= Expression.length()) return false; if (Expression.indexOf(Literal, idx, Qt::CaseInsensitive) == idx) { idx += Literal.length(); return true; } return false; } TagSelectorOperator* parseTagSelectorOperator(const QString& Expression, int& idx) { QString Key, Oper, Value; if ((!canParseKey(Expression, idx, Key)) && (!canParseValue(Expression, idx, Key))) return 0; if (canParseLiteral(Expression, idx, "is")) Oper = "="; if (canParseLiteral(Expression, idx, "!=")) Oper = "!="; if (canParseSymbol(Expression, idx, '<')) Oper = "<"; if (canParseSymbol(Expression, idx, '>')) Oper = ">"; if (canParseLiteral(Expression, idx, "<=")) Oper = "<="; if (canParseLiteral(Expression, idx, ">=")) Oper = ">="; if (canParseSymbol(Expression, idx, '=')) Oper = "="; if (Oper.isNull()) return 0; if (!canParseString(Expression, idx, Value) && !canParseValue(Expression, idx, Value)) return 0; return new TagSelectorOperator(Key, Oper, Value); } TagSelectorTypeIs* parseTagSelectorTypeIs(const QString& Expression, int& idx) { if (canParseLiteral(Expression, idx, "node")) return new TagSelectorTypeIs("node"); if (canParseLiteral(Expression, idx, "way")) return new TagSelectorTypeIs("way"); if (canParseLiteral(Expression, idx, "relation")) return new TagSelectorTypeIs("relation"); QString Type; if (!canParseLiteral(Expression, idx, "Type")) return 0; if (!canParseLiteral(Expression, idx, "is")) return 0; if (!canParseValue(Expression, idx, Type)) return 0; return new TagSelectorTypeIs(Type); } TagSelectorHasTags* parseTagSelectorHasTags(const QString& Expression, int& idx) { if (!canParseLiteral(Expression, idx, "HasTags")) return 0; return new TagSelectorHasTags(); } TagSelectorIsOneOf* parseTagSelectorIsOneOf(const QString& Expression, int& idx) { QString Key; if (!canParseKey(Expression, idx, Key)) return 0; if (!canParseLiteral(Expression, idx, "isoneof")) return 0; if (!canParseSymbol(Expression, idx, '(')) return 0; QList<QString> Values; while (true) { QString Value; if (!canParseValue(Expression, idx, Value)) break; Values.push_back(Value); if (!canParseSymbol(Expression, idx, ',')) break; } canParseSymbol(Expression, idx, ')'); if (Values.size()) return new TagSelectorIsOneOf(Key,Values); return 0; } TagSelectorFalse* parseTagSelectorFalse(const QString& Expression, int& idx) { if (!canParseLiteral(Expression, idx, "false")) return 0; return new TagSelectorFalse(); } TagSelectorTrue* parseTagSelectorTrue(const QString& Expression, int& idx) { if (!canParseLiteral(Expression, idx, "true")) return 0; return new TagSelectorTrue(); } TagSelector* parseTagSelector(const QString& Expression, int& idx); TagSelector* parseFactor(const QString& Expression, int& idx) { TagSelector* Current = 0; if (canParseLiteral(Expression,idx,"[Default]")) { TagSelector* defFactor = parseTagSelector(Expression, idx); Current = new TagSelectorDefault(defFactor); } int Saved = idx; if (!Current) { if (canParseSymbol(Expression, idx, '(')) { Current = parseTagSelector(Expression, idx); canParseSymbol(Expression, idx, ')'); } } if (!Current) { idx = Saved; Current = parseTagSelectorTypeIs(Expression, idx); } if (!Current) { idx = Saved; Current = parseTagSelectorIsOneOf(Expression, idx); } if (!Current) { idx = Saved; Current = parseTagSelectorOperator(Expression, idx); } if (!Current) { idx = Saved; Current = parseTagSelectorFalse(Expression, idx); } if (!Current) { idx = Saved; Current = parseTagSelectorTrue(Expression, idx); } if (!Current) { Current = parseTagSelectorHasTags(Expression, idx); } if (!Current) { idx = Saved; if ((canParseLiteral(Expression,idx,"not")) || canParseSymbol(Expression,idx,'!')) { TagSelector* notFactor = parseFactor(Expression, idx); Current = new TagSelectorNot(notFactor); } } if (!Current) { idx = Saved; if (canParseLiteral(Expression,idx,"parent")) { TagSelector* parentFactor = parseFactor(Expression, idx); Current = new TagSelectorParent(parentFactor); } } if (!Current) { idx = Saved; if (canParseSymbol(Expression, idx, '[')) { Current = parseFactor(Expression, idx); canParseSymbol(Expression, idx, ']'); } } if (!Current) { idx = Saved; QString Key; if (canParseValue(Expression,idx,Key)) { int TmpIdx = 0; Current = parseFactor("not(" + Key + " is _NULL_)", TmpIdx); } } if (!Current) { ++idx; return NULL; } return Current; } TagSelector* parseTerm(const QString& Expression, int& idx) { QList<TagSelector*> Factors; while (idx < Expression.length()) { TagSelector* Current = parseFactor(Expression, idx); if (!Current) break; Factors.push_back(Current); if (canParseLiteral(Expression,idx,"and")) continue; int TempIdx = idx; if (canParseSymbol(Expression, TempIdx, '[')) continue; break; } if (Factors.size() == 1) return Factors[0]; else if (Factors.size() > 1) return new TagSelectorAnd(Factors); return 0; } TagSelector* parseTagSelector(const QString& Expression, int& idx) { QList<TagSelector*> Terms; while (idx < Expression.length()) { TagSelector* Current = parseTerm(Expression, idx); if (!Current) break; Terms.push_back(Current); if ((!canParseLiteral(Expression,idx,"or")) && (!canParseLiteral(Expression,idx,","))) break; } if (Terms.size() == 1) return Terms[0]; else if (Terms.size() > 1) return new TagSelectorOr(Terms); return new TagSelectorFalse(); } TagSelector* TagSelector::parse(const QString& Expression) { int idx = 0; return parseTagSelector(Expression,idx); } TagSelector* TagSelector::parse(const QString& Expression, int& idx) { return parseTagSelector(Expression,idx); } TagSelector::~TagSelector() { } /* TAGSELECTOROPERATOR */ TagSelectorOperator::TagSelectorOperator(const QString& key, const QString& oper, const QString& value) : Key(key), Oper(oper), Value(value), UseSimpleRegExp(false), UseFullRegExp(false) , specialKey(TagSelectKey_None) , specialValue(TagSelectValue_None) { if (key.toLower() == ":id") specialKey = TagSelectKey_Id; else if (key.toLower() == ":user") specialKey = TagSelectKey_User; else if (key.toLower() == ":time") { specialKey = TagSelectKey_Time; dtValue = QDateTime::fromString(value, Qt::ISODate); } else if (key.toLower() == ":version") { specialKey = TagSelectKey_Version; bool ok; numValue = value.toDouble(&ok); if (!ok) numValue = -1; } else if (key.toLower() == ":zoomlevel") specialKey = TagSelectKey_ZoomLevel; else if (key.toLower() == ":pixelperm") specialKey = TagSelectKey_PixelPerM; else if (key.toLower() == ":dirty") specialKey = TagSelectKey_Dirty; else if (key.toLower() == ":uploaded") specialKey = TagSelectKey_Uploaded; boolVal = false; if (value.toUpper() == "_NULL_") { specialValue = TagSelectValue_Empty; } else if (value.toUpper() == "TRUE") { boolVal = true; valB = true; } else if (Value.toUpper() == "FALSE") { boolVal = true; valB = false; } else if (value.startsWith("/") && value.endsWith("/")) { UseFullRegExp = true; QString r = value.mid(1); r.chop(1); rx = QRegExp(r, Qt::CaseInsensitive); rx.setPatternSyntax(QRegExp::RegExp2); } else if (value.contains(QRegExp("[][*?]"))) { UseSimpleRegExp = true; rx = QRegExp(value, Qt::CaseInsensitive); rx.setPatternSyntax(QRegExp::Wildcard); } valN = Value.toDouble(&okval); // Else exact match against ->Value only if (Oper == ">") theOp = GT; else if (Oper == "<") theOp = LT; else if (Oper == ">=") theOp = GE; else if (Oper == "<=") theOp = LE; else if (Oper == "!=") theOp = NE; else theOp = EQ; } TagSelector* TagSelectorOperator::copy() const { return new TagSelectorOperator(Key,Oper,Value); } static const QString emptyString("__EMPTY__"); TagSelectorMatchResult TagSelectorOperator::evaluateVal(const QString& val) const { if (val == emptyString && specialValue != TagSelectValue_Empty) return TagSelect_NoMatch; if (specialValue == TagSelectValue_Empty) { if (theOp == EQ) { if (val.toUpper() == emptyString) return TagSelect_Match; } else { if (val.toUpper() != emptyString) return TagSelect_Match; } } else if (UseSimpleRegExp) { if (rx.exactMatch(val)) { if (theOp == EQ) return TagSelect_Match; } else { if (theOp != EQ) return TagSelect_Match; } } else if (UseFullRegExp) { if (rx.indexIn(val) != -1) { if (theOp == EQ) return TagSelect_Match; } else { if (theOp != EQ) return TagSelect_Match; } } else { bool okkey; qreal keyN = val.toDouble(&okkey); if (boolVal) switch (theOp) { case EQ: if (valB) { if (val.toLower() == "true" || val.toLower() == "yes" || val == "1") return TagSelect_Match; } else { if (val.toLower() == "false" || val.toLower() == "no" || val == "0") return TagSelect_Match; } break; case NE: if (valB) { if (val.toLower() == "false" || val.toLower() == "no" || val == "0") return TagSelect_Match; } else { if (val.toLower() == "true" || val.toLower() == "yes" || val == "1") return TagSelect_Match; } break; default: break; } else if (okkey && okval) switch (theOp) { case EQ: if (keyN == valN) return TagSelect_Match; break; case NE: if (keyN != valN) return TagSelect_Match; break; case GT: if (keyN > valN) return TagSelect_Match; break; case LT: if (keyN < valN) return TagSelect_Match; break; case GE: if (keyN >= valN) return TagSelect_Match; break; case LE: if (keyN <= valN) return TagSelect_Match; break; } else switch (theOp) { case EQ: if ((QString::compare(val, Value, Qt::CaseInsensitive)) == 0) return TagSelect_Match; break; case NE: if ((QString::compare(val, Value, Qt::CaseInsensitive)) != 0 ) return TagSelect_Match; break; case GT: if ((QString::compare(val, Value, Qt::CaseInsensitive)) > 0) return TagSelect_Match; break; case LT: if ((QString::compare(val, Value, Qt::CaseInsensitive)) < 0) return TagSelect_Match; break; case GE: if ((QString::compare(val, Value, Qt::CaseInsensitive)) >= 0) return TagSelect_Match; break; case LE: if ((QString::compare(val, Value, Qt::CaseInsensitive)) <= 0) return TagSelect_Match; break; } } return TagSelect_NoMatch; } TagSelectorMatchResult TagSelectorOperator::matches(const IFeature* F, qreal PixelPerM) const { if (specialKey != TagSelectKey_None) { switch (specialKey) { case TagSelectKey_Id: switch (theOp) { case EQ: return (F->xmlId() == Value ? TagSelect_Match : TagSelect_NoMatch); break; case NE: return (F->xmlId() != Value ? TagSelect_Match : TagSelect_NoMatch); break; case GT: return (F->xmlId() > Value ? TagSelect_Match : TagSelect_NoMatch); break; case LT: return (F->xmlId() < Value ? TagSelect_Match : TagSelect_NoMatch); break; case GE: return (F->xmlId() >= Value ? TagSelect_Match : TagSelect_NoMatch); break; case LE: return (F->xmlId() <= Value ? TagSelect_Match : TagSelect_NoMatch); break; } break; #ifndef FRISIUS_BUILD case TagSelectKey_User: switch (theOp) { case EQ: return (QString::compare(F->user(), Value, Qt::CaseInsensitive) == 0 ? TagSelect_Match : TagSelect_NoMatch); break; case NE: return (QString::compare(F->user(), Value, Qt::CaseInsensitive) != 0 ? TagSelect_Match : TagSelect_NoMatch); break; case GT: return (QString::compare(F->user(), Value, Qt::CaseInsensitive) > 0 ? TagSelect_Match : TagSelect_NoMatch); break; case LT: return (QString::compare(F->user(), Value, Qt::CaseInsensitive) < 0 ? TagSelect_Match : TagSelect_NoMatch); break; case GE: return (QString::compare(F->user(), Value, Qt::CaseInsensitive) >= 0 ? TagSelect_Match : TagSelect_NoMatch); break; case LE: return (QString::compare(F->user(), Value, Qt::CaseInsensitive) <= 0 ? TagSelect_Match : TagSelect_NoMatch); break; } break; case TagSelectKey_Time: { if (!dtValue.isValid()) return TagSelect_NoMatch; if (dtValue.time() == QTime(0, 0, 0)) switch (theOp) { case EQ: return (F->time().date() == dtValue.date() ? TagSelect_Match : TagSelect_NoMatch); break; case NE: return (F->time().date() != dtValue.date() ? TagSelect_Match : TagSelect_NoMatch); break; case GT: return (F->time().date() > dtValue.date() ? TagSelect_Match : TagSelect_NoMatch); break; case LT: return (F->time().date() < dtValue.date() ? TagSelect_Match : TagSelect_NoMatch); break; case GE: return (F->time().date() >= dtValue.date() ? TagSelect_Match : TagSelect_NoMatch); break; case LE: return (F->time().date() <= dtValue.date() ? TagSelect_Match : TagSelect_NoMatch); break; } else switch (theOp) { case EQ: return (F->time() == dtValue ? TagSelect_Match : TagSelect_NoMatch); break; case NE: return (F->time() != dtValue ? TagSelect_Match : TagSelect_NoMatch); break; case GT: return (F->time() > dtValue ? TagSelect_Match : TagSelect_NoMatch); break; case LT: return (F->time() < dtValue ? TagSelect_Match : TagSelect_NoMatch); break; case GE: return (F->time() >= dtValue ? TagSelect_Match : TagSelect_NoMatch); break; case LE: return (F->time() <= dtValue ? TagSelect_Match : TagSelect_NoMatch); break; } break; } case TagSelectKey_Version: switch (theOp) { case EQ: return (F->versionNumber() == numValue ? TagSelect_Match : TagSelect_NoMatch); break; case NE: return (F->versionNumber() != numValue ? TagSelect_Match : TagSelect_NoMatch); break; case GT: return (F->versionNumber() > numValue ? TagSelect_Match : TagSelect_NoMatch); break; case LT: return (F->versionNumber() < numValue ? TagSelect_Match : TagSelect_NoMatch); break; case GE: return (F->versionNumber() >= numValue ? TagSelect_Match : TagSelect_NoMatch); break; case LE: return (F->versionNumber() <= numValue ? TagSelect_Match : TagSelect_NoMatch); break; } break; #endif case TagSelectKey_PixelPerM: { if (!PixelPerM) return TagSelect_Match; bool okval; qreal valN = Value.toDouble(&okval); if (!okval) return TagSelect_NoMatch; switch (theOp) { case EQ: return (PixelPerM == valN ? TagSelect_Match : TagSelect_NoMatch); break; case NE: return (PixelPerM != valN ? TagSelect_Match : TagSelect_NoMatch); break; case GT: return (PixelPerM > valN ? TagSelect_Match : TagSelect_NoMatch); break; case LT: return (PixelPerM < valN ? TagSelect_Match : TagSelect_NoMatch); break; case GE: return (PixelPerM >= valN ? TagSelect_Match : TagSelect_NoMatch); break; case LE: return (PixelPerM <= valN ? TagSelect_Match : TagSelect_NoMatch); break; } break; } case TagSelectKey_Dirty: { if (!boolVal) return TagSelect_NoMatch; switch (theOp) { case EQ: if (valB) { if (F->isDirty()) return TagSelect_Match; else return TagSelect_NoMatch; } else { if (!F->isDirty()) return TagSelect_Match; else return TagSelect_NoMatch; } break; case NE: if (valB) { if (F->isDirty()) return TagSelect_NoMatch; else return TagSelect_Match; } else { if (!F->isDirty()) return TagSelect_NoMatch; else return TagSelect_Match; } break; default: return TagSelect_NoMatch; } break; } case TagSelectKey_Uploaded: { if (!boolVal) return TagSelect_NoMatch; switch (theOp) { case EQ: if (valB) { if (F->isUploaded()) return TagSelect_Match; else return TagSelect_NoMatch; } else { if (!F->isUploaded()) return TagSelect_Match; else return TagSelect_NoMatch; } break; case NE: if (valB) { if (F->isUploaded()) return TagSelect_NoMatch; else return TagSelect_Match; } else { if (!F->isUploaded()) return TagSelect_NoMatch; else return TagSelect_Match; } break; default: return TagSelect_NoMatch; } break; } default: return TagSelect_NoMatch; break; } } else { if (Key != "*") return evaluateVal(F->tagValue(Key, emptyString)); else { for (int i=0; i<F->tagSize(); ++i) if (evaluateVal(F->tagValue(i)) == TagSelect_Match) return TagSelect_Match; } } return TagSelect_NoMatch; } QString TagSelectorOperator::asExpression(bool) const { QString R; R += "["; R += Key; R += "]"; R += Oper; R += Value; return R; } /* TAGSELECTORISONEOF */ TagSelectorIsOneOf::TagSelectorIsOneOf(const QString& key, const QList<QString>& values) : Key(key), Values(values) , specialKey(TagSelectKey_None) , specialValue(TagSelectValue_None) { if (key.toUpper() == ":ID") specialKey = TagSelectKey_Id; else if (key.toUpper() == ":USER") specialKey = TagSelectKey_User; else if (key.toUpper() == ":TIME") specialKey = TagSelectKey_Time; else if (key.toUpper() == ":VERSION") specialKey = TagSelectKey_Version; for (int i=0; i<values.size(); ++i) { if (values[i].toUpper() == "_NULL_") { specialValue = TagSelectValue_Empty; } else if (values[i].contains(QRegExp("[][*?]"))) { QRegExp rx(values[i], Qt::CaseInsensitive); rx.setPatternSyntax(QRegExp::Wildcard); rxv.append(rx); } else { exactMatchv.append(values[i]); } } } TagSelector* TagSelectorIsOneOf::copy() const { return new TagSelectorIsOneOf(Key,Values); } TagSelectorMatchResult TagSelectorIsOneOf::matches(const IFeature* F, qreal /*PixelPerM*/) const { if (specialKey != TagSelectKey_None) { foreach (QString Value, exactMatchv) { switch (specialKey) { case TagSelectKey_Id: if (F->xmlId() == Value) return TagSelect_Match; break; #ifndef FRISIUS_BUILD case TagSelectKey_User: if (QString::compare(F->user(), Value, Qt::CaseInsensitive) == 0) return TagSelect_Match; break; case TagSelectKey_Time: { QDateTime dtValue = QDateTime::fromString(Value, Qt::ISODate); if (!dtValue.isValid()) break; if (dtValue.time() == QTime(0, 0, 0)) { if (F->time().date() == dtValue.date()) return TagSelect_Match; } else { if (F->time() == dtValue) return TagSelect_Match; } break; } case TagSelectKey_Version: if (F->versionNumber() == Value.toInt()) return TagSelect_Match; break; #endif default: break; } } } else { QString V = F->tagValue(Key, emptyString); if (specialValue == TagSelectValue_Empty && V.isEmpty()) { return TagSelect_Match; } foreach (QString pattern, exactMatchv) { if (QString::compare(V, pattern) == 0) return TagSelect_Match; } foreach (QRegExp pattern, rxv) { if (pattern.exactMatch(V)) return TagSelect_Match; } } return TagSelect_NoMatch; } QString TagSelectorIsOneOf::asExpression(bool) const { QString R; R += "["; R += Key; R += "] isoneof ("; for (int i=0; i<Values.size(); ++i) { if (i) R += " , "; R += Values[i]; } R += ")"; return R; } /* TAGSELECTORTYPEIS */ TagSelectorTypeIs::TagSelectorTypeIs(const QString& type) : Type(type) { } TagSelector* TagSelectorTypeIs::copy() const { return new TagSelectorTypeIs(Type); } TagSelectorMatchResult TagSelectorTypeIs::matches(const IFeature* F, qreal /*PixelPerM*/) const { QString t = Type.toLower(); if (t == "node") return (F->getType() & IFeature::Point) ? TagSelect_Match : TagSelect_NoMatch; else if (t == "way") return (F->getType() & IFeature::LineString && !(F->getType() & IFeature::Polygon)) ? TagSelect_Match : TagSelect_NoMatch; else if (t == "area") return (F->getType() & IFeature::Polygon) ? TagSelect_Match : TagSelect_NoMatch; else if (t == "relation") return (F->getType() & IFeature::OsmRelation) ? TagSelect_Match : TagSelect_NoMatch; else if (t == "tracksegment") return (F->getType() & IFeature::GpxSegment) ? TagSelect_Match : TagSelect_NoMatch; return TagSelect_NoMatch; } QString TagSelectorTypeIs::asExpression(bool) const { QString R; R += "Type is "; R += Type; return R; } /* TAGSELECTORHASTAGS */ TagSelectorHasTags::TagSelectorHasTags() { TechnicalTags = QString(TECHNICAL_TAGS).split("#"); } TagSelector* TagSelectorHasTags::copy() const { return new TagSelectorHasTags(); } TagSelectorMatchResult TagSelectorHasTags::matches(const IFeature* F, qreal /*PixelPerM*/) const { for (int i=0; i<F->tagSize(); ++i) { if (!TechnicalTags.contains(F->tagKey(i))) { return TagSelect_Match; } } return TagSelect_NoMatch; } QString TagSelectorHasTags::asExpression(bool) const { QString R; R += "HasTags"; return R; } /* TAGSELECTOROR */ TagSelectorOr::TagSelectorOr(const QList<TagSelector*> terms) : Terms(terms) { } TagSelectorOr::~TagSelectorOr() { for (int i=0; i<Terms.size(); ++i) delete Terms[i]; } TagSelector* TagSelectorOr::copy() const { QList<TagSelector*> Copied; for (int i=0; i<Terms.size(); ++i) Copied.push_back(Terms[i]->copy()); return new TagSelectorOr(Copied); } TagSelectorMatchResult TagSelectorOr::matches(const IFeature* F, qreal PixelPerM) const { for (int i=0; i<Terms.size(); ++i) if (Terms[i]->matches(F,PixelPerM) == TagSelect_Match) return TagSelect_Match; return TagSelect_NoMatch; } QString TagSelectorOr::asExpression(bool Precedence) const { QString R; if (Precedence) R += "("; for (int i=0; i<Terms.size(); ++i) { if (i) R += " or "; R += Terms[i]->asExpression(false); } if (Precedence) R += ")"; return R; } /* TAGSELECTORAND */ TagSelectorAnd::TagSelectorAnd(const QList<TagSelector*> terms) : Terms(terms) { } TagSelectorAnd::~TagSelectorAnd() { for (int i=0; i<Terms.size(); ++i) delete Terms[i]; } TagSelector* TagSelectorAnd::copy() const { QList<TagSelector*> Copied; for (int i=0; i<Terms.size(); ++i) Copied.push_back(Terms[i]->copy()); return new TagSelectorAnd(Copied); } TagSelectorMatchResult TagSelectorAnd::matches(const IFeature* F, qreal PixelPerM) const { for (int i=0; i<Terms.size(); ++i) if (Terms[i]->matches(F,PixelPerM) == TagSelect_NoMatch) return TagSelect_NoMatch; return TagSelect_Match; } QString TagSelectorAnd::asExpression(bool /* Precedence */) const { QString R; for (int i=0; i<Terms.size(); ++i) { if (i) R += " and "; R += Terms[i]->asExpression(true); } return R; } /* TAGSELECTORNOT */ TagSelectorNot::TagSelectorNot(TagSelector* term) : Term(term) { } TagSelectorNot::~TagSelectorNot() { delete Term; } TagSelector* TagSelectorNot::copy() const { if (!Term) return NULL; return new TagSelectorNot(Term->copy()); } TagSelectorMatchResult TagSelectorNot::matches(const IFeature* F, qreal PixelPerM) const { if (!Term) return TagSelect_NoMatch; return (Term->matches(F,PixelPerM) == TagSelect_Match) ? TagSelect_NoMatch : TagSelect_Match; } QString TagSelectorNot::asExpression(bool /* Precedence */) const { if (!Term) return ""; QString R; R += "not("; R += Term->asExpression(true); R += ")"; return R; } /* TAGSELECTORPARENT */ TagSelectorParent::TagSelectorParent(TagSelector* term) : Term(term) { } TagSelectorParent::~TagSelectorParent() { delete Term; } TagSelector* TagSelectorParent::copy() const { if (!Term) return NULL; return new TagSelectorParent(Term->copy()); } TagSelectorMatchResult TagSelectorParent::matches(const IFeature* F, qreal PixelPerM) const { if (!Term) return TagSelect_NoMatch; TagSelectorMatchResult ret = TagSelect_NoMatch; for (int i=0; i<F->sizeParents(); ++i) { if (Term->matches(F->getParent(i),PixelPerM) == TagSelect_Match) { ret = TagSelect_Match; break; } } return ret; } QString TagSelectorParent::asExpression(bool /* Precedence */) const { if (!Term) return ""; QString R; R += " parent("; R += Term->asExpression(true); R += ")"; return R; } /* TAGSELECTORFALSE */ TagSelectorFalse::TagSelectorFalse() { } TagSelector* TagSelectorFalse::copy() const { return new TagSelectorFalse(); } TagSelectorMatchResult TagSelectorFalse::matches(const IFeature* /* F */, qreal /*PixelPerM*/) const { return TagSelect_NoMatch; } QString TagSelectorFalse::asExpression(bool /* Precedence */) const { QString R; R += " false "; return R; } /* TAGSELECTORTRUE */ TagSelectorTrue::TagSelectorTrue() { } TagSelector* TagSelectorTrue::copy() const { return new TagSelectorFalse(); } TagSelectorMatchResult TagSelectorTrue::matches(const IFeature* /* F */, qreal /*PixelPerM*/) const { return TagSelect_Match; } QString TagSelectorTrue::asExpression(bool /* Precedence */) const { QString R; R += " true "; return R; } /* TAGSELECTORDEFAULT */ TagSelectorDefault::TagSelectorDefault(TagSelector* term) : Term(term) { } TagSelectorDefault::~TagSelectorDefault() { delete Term; } TagSelector* TagSelectorDefault::copy() const { return new TagSelectorDefault(Term->copy()); } TagSelectorMatchResult TagSelectorDefault::matches(const IFeature* F, qreal PixelPerM) const { //return (Term->matches(F) == TagSelect_Match) ? TagSelect_DefaultMatch : TagSelect_NoMatch; if (Term->matches(F,PixelPerM) == TagSelect_Match) return TagSelect_DefaultMatch; else return TagSelect_NoMatch; } QString TagSelectorDefault::asExpression(bool /* Precedence */) const { QString R; R += " [Default] "; R += Term->asExpression(true); return R; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/TagSelector.h�����������������������������������������������������������0000664�0000000�0000000�00000013054�11770671653�0020244�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_STYLE_TAGSELECTOR_H_ #define MERKAARTOR_STYLE_TAGSELECTOR_H_ class IFeature; #include <QtCore/QString> #include <QRegExp> #include <QList> #include <QStringList> #include <QDateTime> enum TagSelectorMatchResult { TagSelect_NoMatch, TagSelect_Match, TagSelect_DefaultMatch }; enum TagSelectorSpecialKey { TagSelectKey_None, TagSelectKey_Id, TagSelectKey_User, TagSelectKey_Time, TagSelectKey_Version, TagSelectKey_ZoomLevel, TagSelectKey_PixelPerM, TagSelectKey_Dirty, TagSelectKey_Uploaded }; enum TagSelectorSpecialValue { TagSelectValue_None, TagSelectValue_Empty }; class TagSelector { public: virtual ~TagSelector() = 0; virtual TagSelector* copy() const = 0; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const = 0; virtual QString asExpression(bool Precedence) const = 0; static TagSelector* parse(const QString& Expression); static TagSelector* parse(const QString& Expression, int& idx); }; class TagSelectorOperator : public TagSelector { enum Ops { EQ, NE, GT, LT, LE, GE }; public: TagSelectorOperator(const QString& key, const QString& oper, const QString& value); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: TagSelectorMatchResult evaluateVal(const QString& val) const; QRegExp rx; QString Key, Oper, Value; Ops theOp; qreal numValue; QDateTime dtValue; bool UseSimpleRegExp; bool UseFullRegExp; TagSelectorSpecialKey specialKey; TagSelectorSpecialValue specialValue; bool boolVal, valB; bool okval; qreal valN; }; class TagSelectorIsOneOf : public TagSelector { public: TagSelectorIsOneOf(const QString& key, const QList<QString>& values); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: QList<QRegExp> rxv; QList<QString> exactMatchv; QString Key; QList<QString> Values; TagSelectorSpecialKey specialKey; TagSelectorSpecialValue specialValue; }; class TagSelectorTypeIs : public TagSelector { public: TagSelectorTypeIs(const QString& type); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: QString Type; }; class TagSelectorHasTags : public TagSelector { public: TagSelectorHasTags(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: QStringList TechnicalTags; }; class TagSelectorOr : public TagSelector { public: TagSelectorOr(const QList<TagSelector*> Terms); virtual ~TagSelectorOr(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: QList<TagSelector*> Terms; }; class TagSelectorAnd : public TagSelector { public: TagSelectorAnd(const QList<TagSelector*> Terms); virtual ~TagSelectorAnd(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: QList<TagSelector*> Terms; }; class TagSelectorNot : public TagSelector { public: TagSelectorNot(TagSelector* Term); virtual ~TagSelectorNot(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: TagSelector* Term; }; class TagSelectorParent : public TagSelector { public: TagSelectorParent(TagSelector* Term); virtual ~TagSelectorParent(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: TagSelector* Term; }; class TagSelectorFalse : public TagSelector { public: TagSelectorFalse(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; }; class TagSelectorTrue : public TagSelector { public: TagSelectorTrue(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; }; class TagSelectorDefault : public TagSelector { public: TagSelectorDefault(TagSelector* Term); virtual ~TagSelectorDefault(); virtual TagSelector* copy() const; virtual TagSelectorMatchResult matches(const IFeature* F, qreal PixelPerM) const; virtual QString asExpression(bool Precedence) const; private: TagSelector* Term; }; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/TagSelectorWidget.cpp���������������������������������������������������0000664�0000000�0000000�00000003374�11770671653�0021747�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "TagSelectorWidget.h" #include "ui_TagSelectorWidget.h" #include <QCompleter> #include "MainWindow.h" #include "Document.h" TagSelectorWidget::TagSelectorWidget(MainWindow* mw, QWidget *parent) : QWidget(parent), ui(new Ui::TagSelectorWidget), main(mw) { ui->setupUi(this); ui->cbKey->setInsertPolicy(QComboBox::InsertAlphabetically); ui->cbValue->setInsertPolicy(QComboBox::InsertAlphabetically); QStringList ksl = g_getTagKeyList(); QCompleter* completer = new QCompleter(ksl, (QObject *)this); ui->cbKey->insertItems(-1, ksl); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); ui->cbKey->setCompleter(completer); ui->cbKey->setEditable(true); ui->cbValue->insertItems(-1, g_getTagValueList("*")); ui->cbValue->setEditable(true); connect(ui->btAnd, SIGNAL(clicked()), this, SIGNAL(sigAnd())); } TagSelectorWidget::~TagSelectorWidget() { delete ui; } void TagSelectorWidget::changeEvent(QEvent *e) { QWidget::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void TagSelectorWidget::on_cbKey_editTextChanged(const QString & text) { ui->cbValue->clear(); QStringList sl = g_getTagValueList(text); QCompleter* completer = new QCompleter(sl, (QObject *)this); ui->cbValue->insertItems(-1, g_getTagValueList(text)); completer->setCompletionMode(QCompleter::InlineCompletion); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); if (ui->cbValue->completer()) delete ui->cbValue->completer(); ui->cbValue->setCompleter(completer); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/TagSelectorWidget.h�����������������������������������������������������0000664�0000000�0000000�00000001077�11770671653�0021412�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef TAGSELECTORWIDGET_H #define TAGSELECTORWIDGET_H #include <QWidget> class MainWindow; namespace Ui { class TagSelectorWidget; } class TagSelectorWidget : public QWidget { Q_OBJECT public: TagSelectorWidget(MainWindow* mw, QWidget *parent = 0); ~TagSelectorWidget(); protected: void changeEvent(QEvent *e); signals: void sigOr(); void sigAnd(); void sigNot(); private slots: void on_cbKey_editTextChanged(const QString & text); private: Ui::TagSelectorWidget *ui; MainWindow* main; }; #endif // TAGSELECTORWIDGET_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/TagSelectorWidget.ui����������������������������������������������������0000664�0000000�0000000�00000005526�11770671653�0021603�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>TagSelectorWidget</class> <widget class="QWidget" name="TagSelectorWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>379</width> <height>30</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="margin"> <number>0</number> </property> <item> <layout class="QGridLayout"> <property name="spacing"> <number>0</number> </property> <item row="0" column="1"> <widget class="QComboBox" name="cbKey"/> </item> <item row="0" column="3"> <widget class="QComboBox" name="cbValue"/> </item> <item row="0" column="4"> <widget class="QToolButton" name="btOr"> <property name="text"> <string>OR</string> </property> <property name="checkable"> <bool>true</bool> </property> </widget> </item> <item row="0" column="5"> <widget class="QToolButton" name="btAnd"> <property name="text"> <string>AND</string> </property> <property name="checkable"> <bool>true</bool> </property> </widget> </item> <item row="0" column="0"> <widget class="QToolButton" name="btNot"> <property name="text"> <string>NOT</string> </property> <property name="checkable"> <bool>true</bool> </property> </widget> </item> <item row="0" column="6"> <widget class="QToolButton" name="btDel"> <property name="text"> <string>...</string> </property> <property name="icon"> <iconset resource="../../Icons/AllIcons.qrc"> <normaloff>:/Icons/actions/edit_delete.png</normaloff>:/Icons/actions/edit_delete.png</iconset> </property> </widget> </item> <item row="0" column="2"> <widget class="QComboBox" name="comboBox"> <item> <property name="text"> <string>is</string> </property> </item> <item> <property name="text"> <string>isoneof</string> </property> </item> </widget> </item> </layout> </item> </layout> </widget> <resources> <include location="../../Icons/AllIcons.qrc"/> </resources> <connections> <connection> <sender>btDel</sender> <signal>clicked()</signal> <receiver>TagSelectorWidget</receiver> <slot>close()</slot> <hints> <hint type="sourcelabel"> <x>366</x> <y>14</y> </hint> <hint type="destinationlabel"> <x>189</x> <y>14</y> </hint> </hints> </connection> </connections> <slots> <signal>removed()</signal> <signal>and()</signal> <signal>or()</signal> <signal>not()</signal> </slots> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/Utils.cpp���������������������������������������������������������������0000664�0000000�0000000�00000005375�11770671653�0017472�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: Utils // // Description: Various static functions // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #include "Utils.h" #include "MerkaartorPreferences.h" #include <QNetworkAccessManager> #include <QNetworkReply> #include <QEventLoop> #include <QTimer> const QString Utils::encodeAttributes(const QString & text) { QString s = text; s.replace( "&", "&" ); s.replace( ">", ">" ); s.replace( "<", "<" ); s.replace( "\"", """ ); s.replace( "\'", "'" ); return s; } bool Utils::QRectInterstects(const QRectF& r, const QLineF& lF, QPointF& a, QPointF& b) { QPointF pF; bool hasP1 = false; bool hasP2 = false; if (QLineF(r.topLeft(), r.bottomLeft()).intersect(lF, &pF) == QLineF::BoundedIntersection) { a = pF; hasP1 = true; } if (QLineF(r.bottomLeft(), r.bottomRight()).intersect(lF, &pF) == QLineF::BoundedIntersection) { if (hasP1) { b = pF; hasP2 = true; } else { a = pF; hasP1 = true; } } if (QLineF(r.bottomRight(), r.topRight()).intersect(lF, &pF) == QLineF::BoundedIntersection) { if (hasP1) { b = pF; hasP2 = true; } else { a = pF; hasP1 = true; } } if (QLineF(r.topRight(), r.topLeft()).intersect(lF, &pF) == QLineF::BoundedIntersection) { if (hasP1) { b = pF; hasP2 = true; } else { a = pF; hasP1 = true; } } if (hasP1 && hasP2) { #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) qreal la1 = QLineF(a,b).angleTo(lF); #else qreal la1 = QLineF(a,b).angle(lF); #endif if (la1 > 15.0 && la1 < 345.0) { QPointF t = b; b = a; a = t; } } if (hasP1) return true; else return false; } bool Utils::sendBlockingNetRequest(const QUrl& theUrl, QString& reply) { QNetworkAccessManager manager; QEventLoop q; QTimer tT; manager.setProxy(M_PREFS->getProxy(QUrl("http://merkaartor.be"))); tT.setSingleShot(true); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); connect(&manager, SIGNAL(finished(QNetworkReply*)), &q, SLOT(quit())); QNetworkReply *netReply = manager.get(QNetworkRequest(theUrl)); tT.start(M_PREFS->getNetworkTimeout()); q.exec(); if(tT.isActive()) { // download complete tT.stop(); } else { return false; } reply = netReply->readAll(); return true; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/Utils.h�����������������������������������������������������������������0000664�0000000�0000000�00000001367�11770671653�0017134�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������//*************************************************************** // CLass: Utils // // Description: Various static functions // // // Author: Chris Browet <cbro@semperpax.com> (C) 2010 // // Copyright: See COPYING file that comes with this distribution // //****************************************************************** #ifndef UTILS_H #define UTILS_H #include <QObject> #include <QUrl> #include <QRectF> #include <QLineF> #include <QPointF> class Utils: public QObject { Q_OBJECT public: static const QString encodeAttributes(const QString & text); static bool QRectInterstects(const QRectF& r, const QLineF& l, QPointF& a, QPointF& b); static bool sendBlockingNetRequest(const QUrl& theUrl, QString& reply); }; #endif // UTILS_H �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/Utils.pri���������������������������������������������������������������0000664�0000000�0000000�00000001761�11770671653�0017475�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/Utils DEPENDPATH += $$MERKAARTOR_SRC_DIR/Utils HEADERS += \ LineF.h \ ShortcutOverrideFilter.h \ SlippyMapWidget.h \ EditCompleterDelegate.h \ PictureViewerDialog.h \ PixmapWidget.h \ SelectionDialog.h \ SvgCache.h \ MDiscardableDialog.h \ OsmLink.h \ Utils.h \ TagSelector.h \ TagSelectorWidget.h \ CheckBoxList.h SOURCES += \ ShortcutOverrideFilter.cpp \ SlippyMapWidget.cpp \ EditCompleterDelegate.cpp \ PictureViewerDialog.cpp \ PixmapWidget.cpp \ SelectionDialog.cpp \ SvgCache.cpp \ MDiscardableDialog.cpp \ OsmLink.cpp \ Utils.cpp \ TagSelector.cpp \ TagSelectorWidget.cpp \ CheckBoxList.cpp FORMS += \ PictureViewerDialog.ui \ SelectionDialog.ui \ TagSelectorWidget.ui \ RESOURCES += \ Utils.qrc isEmpty(MOBILE) { HEADERS += \ ProjectionChooser.h SOURCES += \ ProjectionChooser.cpp FORMS += \ ProjectionChooser.ui } ���������������merkaartor-0.18.1/src/Utils/Utils.qrc���������������������������������������������������������������0000664�0000000�0000000�00000000336�11770671653�0017465�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<RCC> <qresource prefix="/Utils"> <file alias="CHANGELOG">../../CHANGELOG</file> </qresource> <qresource prefix="/Utils/Spatialite"> <file>init_spatialite-2.3.sql</file> </qresource> </RCC> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/Utils/init_spatialite-2.3.sql�������������������������������������������������0000664�0000000�0000000�00003266021�11770671653�0022071�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- -- the EPSG params for PROJ4 -- target dbms: SQLite -- -- -- setting up a transaction -- BEGIN; -- -- creating the SPATIAL METADATA tables -- SELECT InitSpatialMetaData(); -- -- populating the "spatial_ref_sys" table -- INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4001, 'epsg', 4001, 'Unknown datum based upon the Airy 1830 ellipsoid', '+proj=longlat +ellps=airy +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4002, 'epsg', 4002, 'Unknown datum based upon the Airy Modified 1849 ellipsoid', '+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4003, 'epsg', 4003, 'Unknown datum based upon the Australian National Spheroid', '+proj=longlat +ellps=aust_SA +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4004, 'epsg', 4004, 'Unknown datum based upon the Bessel 1841 ellipsoid', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4005, 'epsg', 4005, 'Unknown datum based upon the Bessel Modified ellipsoid', '+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4006, 'epsg', 4006, 'Unknown datum based upon the Bessel Namibia ellipsoid', '+proj=longlat +ellps=bess_nam +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4007, 'epsg', 4007, 'Unknown datum based upon the Clarke 1858 ellipsoid', '+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4008, 'epsg', 4008, 'Unknown datum based upon the Clarke 1866 ellipsoid', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4009, 'epsg', 4009, 'Unknown datum based upon the Clarke 1866 Michigan ellipsoid', '+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4010, 'epsg', 4010, 'Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid', '+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4011, 'epsg', 4011, 'Unknown datum based upon the Clarke 1880 (IGN) ellipsoid', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4012, 'epsg', 4012, 'Unknown datum based upon the Clarke 1880 (RGS) ellipsoid', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4013, 'epsg', 4013, 'Unknown datum based upon the Clarke 1880 (Arc) ellipsoid', '+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4014, 'epsg', 4014, 'Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid', '+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4015, 'epsg', 4015, 'Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4016, 'epsg', 4016, 'Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid', '+proj=longlat +ellps=evrstSS +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4018, 'epsg', 4018, 'Unknown datum based upon the Everest 1830 Modified ellipsoid', '+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4019, 'epsg', 4019, 'Unknown datum based upon the GRS 1980 ellipsoid', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4020, 'epsg', 4020, 'Unknown datum based upon the Helmert 1906 ellipsoid', '+proj=longlat +ellps=helmert +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4021, 'epsg', 4021, 'Unknown datum based upon the Indonesian National Spheroid', '+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4022, 'epsg', 4022, 'Unknown datum based upon the International 1924 ellipsoid', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4024, 'epsg', 4024, 'Unknown datum based upon the Krassowsky 1940 ellipsoid', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4025, 'epsg', 4025, 'Unknown datum based upon the NWL 9D ellipsoid', '+proj=longlat +ellps=WGS66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4027, 'epsg', 4027, 'Unknown datum based upon the Plessis 1817 ellipsoid', '+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4028, 'epsg', 4028, 'Unknown datum based upon the Struve 1860 ellipsoid', '+proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4029, 'epsg', 4029, 'Unknown datum based upon the War Office ellipsoid', '+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4030, 'epsg', 4030, 'Unknown datum based upon the WGS 84 ellipsoid', '+proj=longlat +ellps=WGS84 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4031, 'epsg', 4031, 'Unknown datum based upon the GEM 10C ellipsoid', '+proj=longlat +ellps=WGS84 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4032, 'epsg', 4032, 'Unknown datum based upon the OSU86F ellipsoid', '+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4033, 'epsg', 4033, 'Unknown datum based upon the OSU91A ellipsoid', '+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4034, 'epsg', 4034, 'Unknown datum based upon the Clarke 1880 ellipsoid', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4035, 'epsg', 4035, 'Unknown datum based upon the Authalic Sphere', '+proj=longlat +a=6371000 +b=6371000 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4036, 'epsg', 4036, 'Unknown datum based upon the GRS 1967 ellipsoid', '+proj=longlat +ellps=GRS67 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4041, 'epsg', 4041, 'Unknown datum based upon the Average Terrestrial System 1977 ellipsoid', '+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4042, 'epsg', 4042, 'Unknown datum based upon the Everest (1830 Definition) ellipsoid', '+proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4043, 'epsg', 4043, 'Unknown datum based upon the WGS 72 ellipsoid', '+proj=longlat +ellps=WGS72 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4044, 'epsg', 4044, 'Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid', '+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4045, 'epsg', 4045, 'Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid', '+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4047, 'epsg', 4047, 'Unspecified datum based upon the GRS 1980 Authalic Sphere', '+proj=longlat +a=6371007 +b=6371007 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4052, 'epsg', 4052, 'Unspecified datum based upon the Clarke 1866 Authalic Sphere', '+proj=longlat +a=6370997 +b=6370997 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4053, 'epsg', 4053, 'Unspecified datum based upon the International 1924 Authalic Sphere', '+proj=longlat +a=6371228 +b=6371228 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4054, 'epsg', 4054, 'Unspecified datum based upon the Hughes 1980 ellipsoid', '+proj=longlat +a=6378273 +b=6356889.449 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4120, 'epsg', 4120, 'Greek', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4121, 'epsg', 4121, 'GGRS87', '+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4122, 'epsg', 4122, 'ATS77', '+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4123, 'epsg', 4123, 'KKJ', '+proj=longlat +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4124, 'epsg', 4124, 'RT90', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4125, 'epsg', 4125, 'Samboja', '+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4126, 'epsg', 4126, 'LKS94 (ETRS89)', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4127, 'epsg', 4127, 'Tete', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4128, 'epsg', 4128, 'Madzansua', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4129, 'epsg', 4129, 'Observatario', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4130, 'epsg', 4130, 'Moznet', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4131, 'epsg', 4131, 'Indian 1960', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4132, 'epsg', 4132, 'FD58', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4133, 'epsg', 4133, 'EST92', '+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4134, 'epsg', 4134, 'PDO Survey Datum 1993', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4135, 'epsg', 4135, 'Old Hawaiian', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4136, 'epsg', 4136, 'St. Lawrence Island', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4137, 'epsg', 4137, 'St. Paul Island', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4138, 'epsg', 4138, 'St. George Island', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4139, 'epsg', 4139, 'Puerto Rico', '+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4140, 'epsg', 4140, 'NAD83(CSRS98)', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4141, 'epsg', 4141, 'Israel', '+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4142, 'epsg', 4142, 'Locodjo 1965', '+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4143, 'epsg', 4143, 'Abidjan 1987', '+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4144, 'epsg', 4144, 'Kalianpur 1937', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4145, 'epsg', 4145, 'Kalianpur 1962', '+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4146, 'epsg', 4146, 'Kalianpur 1975', '+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4147, 'epsg', 4147, 'Hanoi 1972', '+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4148, 'epsg', 4148, 'Hartebeesthoek94', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4149, 'epsg', 4149, 'CH1903', '+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4150, 'epsg', 4150, 'CH1903+', '+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4151, 'epsg', 4151, 'CHTRF95', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4152, 'epsg', 4152, 'NAD83(HARN)', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4153, 'epsg', 4153, 'Rassadiran', '+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4154, 'epsg', 4154, 'ED50(ED77)', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4155, 'epsg', 4155, 'Dabola 1981', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4156, 'epsg', 4156, 'S-JTSK', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4157, 'epsg', 4157, 'Mount Dillon', '+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4158, 'epsg', 4158, 'Naparima 1955', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4159, 'epsg', 4159, 'ELD79', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4160, 'epsg', 4160, 'Chos Malal 1914', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4161, 'epsg', 4161, 'Pampa del Castillo', '+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4162, 'epsg', 4162, 'Korean 1985', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4163, 'epsg', 4163, 'Yemen NGN96', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4164, 'epsg', 4164, 'South Yemen', '+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4165, 'epsg', 4165, 'Bissau', '+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4166, 'epsg', 4166, 'Korean 1995', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4167, 'epsg', 4167, 'NZGD2000', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4168, 'epsg', 4168, 'Accra', '+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4169, 'epsg', 4169, 'American Samoa 1962', '+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4170, 'epsg', 4170, 'SIRGAS', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4171, 'epsg', 4171, 'RGF93', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4172, 'epsg', 4172, 'POSGAR', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4173, 'epsg', 4173, 'IRENET95', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4174, 'epsg', 4174, 'Sierra Leone 1924', '+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4175, 'epsg', 4175, 'Sierra Leone 1968', '+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4176, 'epsg', 4176, 'Australian Antarctic', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4178, 'epsg', 4178, 'Pulkovo 1942(83)', '+proj=longlat +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4179, 'epsg', 4179, 'Pulkovo 1942(58)', '+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4180, 'epsg', 4180, 'EST97', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4181, 'epsg', 4181, 'Luxembourg 1930', '+proj=longlat +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4182, 'epsg', 4182, 'Azores Occidental 1939', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4183, 'epsg', 4183, 'Azores Central 1948', '+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4184, 'epsg', 4184, 'Azores Oriental 1940', '+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4185, 'epsg', 4185, 'Madeira 1936', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4188, 'epsg', 4188, 'OSNI 1952', '+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4189, 'epsg', 4189, 'REGVEN', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4190, 'epsg', 4190, 'POSGAR 98', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4191, 'epsg', 4191, 'Albanian 1987', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4192, 'epsg', 4192, 'Douala 1948', '+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4193, 'epsg', 4193, 'Manoca 1962', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4194, 'epsg', 4194, 'Qornoq 1927', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4195, 'epsg', 4195, 'Scoresbysund 1952', '+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4196, 'epsg', 4196, 'Ammassalik 1958', '+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4197, 'epsg', 4197, 'Garoua', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4198, 'epsg', 4198, 'Kousseri', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4199, 'epsg', 4199, 'Egypt 1930', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4200, 'epsg', 4200, 'Pulkovo 1995', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4201, 'epsg', 4201, 'Adindan', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4202, 'epsg', 4202, 'AGD66', '+proj=longlat +ellps=aust_SA +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4203, 'epsg', 4203, 'AGD84', '+proj=longlat +ellps=aust_SA +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4204, 'epsg', 4204, 'Ain el Abd', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4205, 'epsg', 4205, 'Afgooye', '+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4206, 'epsg', 4206, 'Agadez', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4207, 'epsg', 4207, 'Lisbon', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4208, 'epsg', 4208, 'Aratu', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4209, 'epsg', 4209, 'Arc 1950', '+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4210, 'epsg', 4210, 'Arc 1960', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4211, 'epsg', 4211, 'Batavia', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4212, 'epsg', 4212, 'Barbados 1938', '+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4213, 'epsg', 4213, 'Beduaram', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4214, 'epsg', 4214, 'Beijing 1954', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4215, 'epsg', 4215, 'Belge 1950', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4216, 'epsg', 4216, 'Bermuda 1957', '+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4218, 'epsg', 4218, 'Bogota 1975', '+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4219, 'epsg', 4219, 'Bukit Rimpah', '+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4220, 'epsg', 4220, 'Camacupa', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4221, 'epsg', 4221, 'Campo Inchauspe', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4222, 'epsg', 4222, 'Cape', '+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4223, 'epsg', 4223, 'Carthage', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4224, 'epsg', 4224, 'Chua', '+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4225, 'epsg', 4225, 'Corrego Alegre', '+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4226, 'epsg', 4226, 'Cote d''Ivoire', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4227, 'epsg', 4227, 'Deir ez Zor', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4228, 'epsg', 4228, 'Douala', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4229, 'epsg', 4229, 'Egypt 1907', '+proj=longlat +ellps=helmert +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4230, 'epsg', 4230, 'ED50', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4231, 'epsg', 4231, 'ED87', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4232, 'epsg', 4232, 'Fahud', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4233, 'epsg', 4233, 'Gandajika 1970', '+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4234, 'epsg', 4234, 'Garoua', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4235, 'epsg', 4235, 'Guyane Francaise', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4236, 'epsg', 4236, 'Hu Tzu Shan', '+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4237, 'epsg', 4237, 'HD72', '+proj=longlat +ellps=GRS67 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4238, 'epsg', 4238, 'ID74', '+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4239, 'epsg', 4239, 'Indian 1954', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4240, 'epsg', 4240, 'Indian 1975', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4241, 'epsg', 4241, 'Jamaica 1875', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4242, 'epsg', 4242, 'JAD69', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4243, 'epsg', 4243, 'Kalianpur 1880', '+proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4244, 'epsg', 4244, 'Kandawala', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4245, 'epsg', 4245, 'Kertau 1968', '+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4246, 'epsg', 4246, 'KOC', '+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4247, 'epsg', 4247, 'La Canoa', '+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4248, 'epsg', 4248, 'PSAD56', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4249, 'epsg', 4249, 'Lake', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4250, 'epsg', 4250, 'Leigon', '+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4251, 'epsg', 4251, 'Liberia 1964', '+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4252, 'epsg', 4252, 'Lome', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4253, 'epsg', 4253, 'Luzon 1911', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4254, 'epsg', 4254, 'Hito XVIII 1963', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4255, 'epsg', 4255, 'Herat North', '+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4256, 'epsg', 4256, 'Mahe 1971', '+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4257, 'epsg', 4257, 'Makassar', '+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4258, 'epsg', 4258, 'ETRS89', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4259, 'epsg', 4259, 'Malongo 1987', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4260, 'epsg', 4260, 'Manoca', '+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4261, 'epsg', 4261, 'Merchich', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4262, 'epsg', 4262, 'Massawa', '+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4263, 'epsg', 4263, 'Minna', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4264, 'epsg', 4264, 'Mhast', '+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4265, 'epsg', 4265, 'Monte Mario', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4266, 'epsg', 4266, 'M''poraloko', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4267, 'epsg', 4267, 'NAD27', '+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4268, 'epsg', 4268, 'NAD27 Michigan', '+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4269, 'epsg', 4269, 'NAD83', '+proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4270, 'epsg', 4270, 'Nahrwan 1967', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4271, 'epsg', 4271, 'Naparima 1972', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4272, 'epsg', 4272, 'NZGD49', '+proj=longlat +ellps=intl +datum=nzgd49 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4273, 'epsg', 4273, 'NGO 1948', '+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4274, 'epsg', 4274, 'Datum 73', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4275, 'epsg', 4275, 'NTF', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4276, 'epsg', 4276, 'NSWC 9Z-2', '+proj=longlat +ellps=WGS66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4277, 'epsg', 4277, 'OSGB 1936', '+proj=longlat +ellps=airy +datum=OSGB36 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4278, 'epsg', 4278, 'OSGB70', '+proj=longlat +ellps=airy +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4279, 'epsg', 4279, 'OS(SN)80', '+proj=longlat +ellps=airy +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4280, 'epsg', 4280, 'Padang', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4281, 'epsg', 4281, 'Palestine 1923', '+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4282, 'epsg', 4282, 'Pointe Noire', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4283, 'epsg', 4283, 'GDA94', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4284, 'epsg', 4284, 'Pulkovo 1942', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4285, 'epsg', 4285, 'Qatar 1974', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4286, 'epsg', 4286, 'Qatar 1948', '+proj=longlat +ellps=helmert +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4287, 'epsg', 4287, 'Qornoq', '+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4288, 'epsg', 4288, 'Loma Quintana', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4289, 'epsg', 4289, 'Amersfoort', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4291, 'epsg', 4291, 'SAD69', '+proj=longlat +ellps=GRS67 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4292, 'epsg', 4292, 'Sapper Hill 1943', '+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4293, 'epsg', 4293, 'Schwarzeck', '+proj=longlat +ellps=bess_nam +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4294, 'epsg', 4294, 'Segora', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4295, 'epsg', 4295, 'Serindung', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4296, 'epsg', 4296, 'Sudan', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4297, 'epsg', 4297, 'Tananarive', '+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4298, 'epsg', 4298, 'Timbalai 1948', '+proj=longlat +ellps=evrstSS +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4299, 'epsg', 4299, 'TM65', '+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4300, 'epsg', 4300, 'TM75', '+proj=longlat +a=6377340.189 +b=6356034.447938534 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4301, 'epsg', 4301, 'Tokyo', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4302, 'epsg', 4302, 'Trinidad 1903', '+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4303, 'epsg', 4303, 'TC(1948)', '+proj=longlat +ellps=helmert +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4304, 'epsg', 4304, 'Voirol 1875', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4306, 'epsg', 4306, 'Bern 1938', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4307, 'epsg', 4307, 'Nord Sahara 1959', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4308, 'epsg', 4308, 'RT38', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4309, 'epsg', 4309, 'Yacare', '+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4310, 'epsg', 4310, 'Yoff', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4311, 'epsg', 4311, 'Zanderij', '+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4312, 'epsg', 4312, 'MGI', '+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4313, 'epsg', 4313, 'Belge 1972', '+proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4314, 'epsg', 4314, 'DHDN', '+proj=longlat +ellps=bessel +datum=potsdam +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4315, 'epsg', 4315, 'Conakry 1905', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4316, 'epsg', 4316, 'Dealul Piscului 1933', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4317, 'epsg', 4317, 'Dealul Piscului 1970', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4318, 'epsg', 4318, 'NGN', '+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4319, 'epsg', 4319, 'KUDAMS', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4322, 'epsg', 4322, 'WGS 72', '+proj=longlat +ellps=WGS72 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4324, 'epsg', 4324, 'WGS 72BE', '+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4326, 'epsg', 4326, 'WGS 84', '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4600, 'epsg', 4600, 'Anguilla 1957', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4601, 'epsg', 4601, 'Antigua 1943', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4602, 'epsg', 4602, 'Dominica 1945', '+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4603, 'epsg', 4603, 'Grenada 1953', '+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4604, 'epsg', 4604, 'Montserrat 1958', '+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4605, 'epsg', 4605, 'St. Kitts 1955', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4606, 'epsg', 4606, 'St. Lucia 1955', '+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4607, 'epsg', 4607, 'St. Vincent 1945', '+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4608, 'epsg', 4608, 'NAD27(76)', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4609, 'epsg', 4609, 'NAD27(CGQ77)', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4610, 'epsg', 4610, 'Xian 1980', '+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4611, 'epsg', 4611, 'Hong Kong 1980', '+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4612, 'epsg', 4612, 'JGD2000', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4613, 'epsg', 4613, 'Segara', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4614, 'epsg', 4614, 'QND95', '+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4615, 'epsg', 4615, 'Porto Santo', '+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4616, 'epsg', 4616, 'Selvagem Grande', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4617, 'epsg', 4617, 'NAD83(CSRS)', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4618, 'epsg', 4618, 'SAD69', '+proj=longlat +ellps=aust_SA +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4619, 'epsg', 4619, 'SWEREF99', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4620, 'epsg', 4620, 'Point 58', '+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4621, 'epsg', 4621, 'Fort Marigot', '+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4622, 'epsg', 4622, 'Guadeloupe 1948', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4623, 'epsg', 4623, 'CSG67', '+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4624, 'epsg', 4624, 'RGFG95', '+proj=longlat +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4625, 'epsg', 4625, 'Martinique 1938', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4626, 'epsg', 4626, 'Reunion 1947', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4627, 'epsg', 4627, 'RGR92', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4628, 'epsg', 4628, 'Tahiti 52', '+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4629, 'epsg', 4629, 'Tahaa 54', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4630, 'epsg', 4630, 'IGN72 Nuku Hiva', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4631, 'epsg', 4631, 'K0 1949', '+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4632, 'epsg', 4632, 'Combani 1950', '+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4633, 'epsg', 4633, 'IGN56 Lifou', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4634, 'epsg', 4634, 'IGN72 Grand Terre', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4635, 'epsg', 4635, 'ST87 Ouvea', '+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4636, 'epsg', 4636, 'Petrels 1972', '+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4637, 'epsg', 4637, 'Perroud 1950', '+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4638, 'epsg', 4638, 'Saint Pierre et Miquelon 1950', '+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4639, 'epsg', 4639, 'MOP78', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4640, 'epsg', 4640, 'RRAF 1991', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4641, 'epsg', 4641, 'IGN53 Mare', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4642, 'epsg', 4642, 'ST84 Ile des Pins', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4643, 'epsg', 4643, 'ST71 Belep', '+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4644, 'epsg', 4644, 'NEA74 Noumea', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4645, 'epsg', 4645, 'RGNC 1991', '+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4646, 'epsg', 4646, 'Grand Comoros', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4657, 'epsg', 4657, 'Reykjavik 1900', '+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4658, 'epsg', 4658, 'Hjorsey 1955', '+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4659, 'epsg', 4659, 'ISN93', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4660, 'epsg', 4660, 'Helle 1954', '+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4661, 'epsg', 4661, 'LKS92', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4662, 'epsg', 4662, 'IGN72 Grande Terre', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4663, 'epsg', 4663, 'Porto Santo 1995', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4664, 'epsg', 4664, 'Azores Oriental 1995', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4665, 'epsg', 4665, 'Azores Central 1995', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4666, 'epsg', 4666, 'Lisbon 1890', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4667, 'epsg', 4667, 'IKBD-92', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4668, 'epsg', 4668, 'ED79', '+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4669, 'epsg', 4669, 'LKS94', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4670, 'epsg', 4670, 'IGM95', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4671, 'epsg', 4671, 'Voirol 1879', '+proj=longlat +a=6378249.2 +b=6356515 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4672, 'epsg', 4672, 'CI1971', '+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4673, 'epsg', 4673, 'CI1979', '+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4674, 'epsg', 4674, 'SIRGAS 2000', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4675, 'epsg', 4675, 'Guam 1963', '+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4676, 'epsg', 4676, 'Vientiane 1982', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4677, 'epsg', 4677, 'Lao 1993', '+proj=longlat +ellps=krass +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4678, 'epsg', 4678, 'Lao 1997', '+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4679, 'epsg', 4679, 'Jouik 1961', '+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4680, 'epsg', 4680, 'Nouakchott 1965', '+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4681, 'epsg', 4681, 'Mauritania 1999', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4682, 'epsg', 4682, 'Gulshan 303', '+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4683, 'epsg', 4683, 'PRS92', '+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4684, 'epsg', 4684, 'Gan 1970', '+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4685, 'epsg', 4685, 'Gandajika', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4686, 'epsg', 4686, 'MAGNA-SIRGAS', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4687, 'epsg', 4687, 'RGPF', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4688, 'epsg', 4688, 'Fatu Iva 72', '+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4689, 'epsg', 4689, 'IGN63 Hiva Oa', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4690, 'epsg', 4690, 'Tahiti 79', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4691, 'epsg', 4691, 'Moorea 87', '+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4692, 'epsg', 4692, 'Maupiti 83', '+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4693, 'epsg', 4693, 'Nakhl-e Ghanem', '+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4694, 'epsg', 4694, 'POSGAR 94', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4695, 'epsg', 4695, 'Katanga 1955', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4696, 'epsg', 4696, 'Kasai 1953', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4697, 'epsg', 4697, 'IGC 1962 6th Parallel South', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4698, 'epsg', 4698, 'IGN 1962 Kerguelen', '+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4699, 'epsg', 4699, 'Le Pouce 1934', '+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4700, 'epsg', 4700, 'IGN Astro 1960', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4701, 'epsg', 4701, 'IGCB 1955', '+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4702, 'epsg', 4702, 'Mauritania 1999', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4703, 'epsg', 4703, 'Mhast 1951', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4704, 'epsg', 4704, 'Mhast (onshore)', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4705, 'epsg', 4705, 'Mhast (offshore)', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4706, 'epsg', 4706, 'Egypt Gulf of Suez S-650 TL', '+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4707, 'epsg', 4707, 'Tern Island 1961', '+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4708, 'epsg', 4708, 'Cocos Islands 1965', '+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4709, 'epsg', 4709, 'Iwo Jima 1945', '+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4710, 'epsg', 4710, 'St. Helena 1971', '+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4711, 'epsg', 4711, 'Marcus Island 1952', '+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4712, 'epsg', 4712, 'Ascension Island 1958', '+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4713, 'epsg', 4713, 'Ayabelle Lighthouse', '+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4714, 'epsg', 4714, 'Bellevue', '+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4715, 'epsg', 4715, 'Camp Area Astro', '+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4716, 'epsg', 4716, 'Phoenix Islands 1966', '+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4717, 'epsg', 4717, 'Cape Canaveral', '+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4718, 'epsg', 4718, 'Solomon 1968', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4719, 'epsg', 4719, 'Easter Island 1967', '+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4720, 'epsg', 4720, 'Fiji 1986', '+proj=longlat +ellps=WGS72 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4721, 'epsg', 4721, 'Fiji 1956', '+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4722, 'epsg', 4722, 'South Georgia 1968', '+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4723, 'epsg', 4723, 'Grand Cayman 1959', '+proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4724, 'epsg', 4724, 'Diego Garcia 1969', '+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4725, 'epsg', 4725, 'Johnston Island 1961', '+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4726, 'epsg', 4726, 'Little Cayman 1961', '+proj=longlat +ellps=clrk66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4727, 'epsg', 4727, 'Midway 1961', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4728, 'epsg', 4728, 'Pico de la Nieves', '+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4729, 'epsg', 4729, 'Pitcairn 1967', '+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4730, 'epsg', 4730, 'Santo 1965', '+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4731, 'epsg', 4731, 'Viti Levu 1916', '+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4732, 'epsg', 4732, 'Marshall Islands 1960', '+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4733, 'epsg', 4733, 'Wake Island 1952', '+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4734, 'epsg', 4734, 'Tristan 1968', '+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4735, 'epsg', 4735, 'Kusaie 1951', '+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4736, 'epsg', 4736, 'Deception Island', '+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4737, 'epsg', 4737, 'Korea 2000', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4738, 'epsg', 4738, 'Hong Kong 1963', '+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4739, 'epsg', 4739, 'Hong Kong 1963(67)', '+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4740, 'epsg', 4740, 'PZ-90', '+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4741, 'epsg', 4741, 'FD54', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4742, 'epsg', 4742, 'GDM2000', '+proj=longlat +ellps=GRS80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4743, 'epsg', 4743, 'Karbala 1979 (Polservice)', '+proj=longlat +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4744, 'epsg', 4744, 'Nahrwan 1934', '+proj=longlat +ellps=clrk80 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4745, 'epsg', 4745, 'RD/83', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4746, 'epsg', 4746, 'PD/83', '+proj=longlat +ellps=bessel +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4747, 'epsg', 4747, 'GR96', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4748, 'epsg', 4748, 'Vanua Levu 1915', '+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4749, 'epsg', 4749, 'RGNC91-93', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4750, 'epsg', 4750, 'ST87 Ouvea', '+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4751, 'epsg', 4751, 'Kertau (RSO)', '+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4752, 'epsg', 4752, 'Viti Levu 1912', '+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4753, 'epsg', 4753, 'fk89', '+proj=longlat +ellps=intl +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4754, 'epsg', 4754, 'LGD2006', '+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4755, 'epsg', 4755, 'DGN95', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4756, 'epsg', 4756, 'VN-2000', '+proj=longlat +ellps=WGS84 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4757, 'epsg', 4757, 'SVY21', '+proj=longlat +ellps=WGS84 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4758, 'epsg', 4758, 'JAD2001', '+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4759, 'epsg', 4759, 'NAD83(NSRS2007)', '+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4760, 'epsg', 4760, 'WGS 66', '+proj=longlat +ellps=WGS66 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4801, 'epsg', 4801, 'Bern 1898 (Bern)', '+proj=longlat +ellps=bessel +pm=bern +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4802, 'epsg', 4802, 'Bogota 1975 (Bogota)', '+proj=longlat +ellps=intl +pm=bogota +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4803, 'epsg', 4803, 'Lisbon (Lisbon)', '+proj=longlat +ellps=intl +pm=lisbon +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4804, 'epsg', 4804, 'Makassar (Jakarta)', '+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4805, 'epsg', 4805, 'MGI (Ferro)', '+proj=longlat +ellps=bessel +pm=ferro +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4806, 'epsg', 4806, 'Monte Mario (Rome)', '+proj=longlat +ellps=intl +pm=rome +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4807, 'epsg', 4807, 'NTF (Paris)', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4808, 'epsg', 4808, 'Padang (Jakarta)', '+proj=longlat +ellps=bessel +pm=jakarta +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4809, 'epsg', 4809, 'Belge 1950 (Brussels)', '+proj=longlat +ellps=intl +pm=brussels +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4810, 'epsg', 4810, 'Tananarive (Paris)', '+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4811, 'epsg', 4811, 'Voirol 1875 (Paris)', '+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4813, 'epsg', 4813, 'Batavia (Jakarta)', '+proj=longlat +ellps=bessel +pm=jakarta +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4814, 'epsg', 4814, 'RT38 (Stockholm)', '+proj=longlat +ellps=bessel +pm=stockholm +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4815, 'epsg', 4815, 'Greek (Athens)', '+proj=longlat +ellps=bessel +pm=athens +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4816, 'epsg', 4816, 'Carthage (Paris)', '+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4817, 'epsg', 4817, 'NGO 1948 (Oslo)', '+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4818, 'epsg', 4818, 'S-JTSK (Ferro)', '+proj=longlat +ellps=bessel +pm=ferro +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4819, 'epsg', 4819, 'Nord Sahara 1959 (Paris)', '+proj=longlat +ellps=clrk80 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4820, 'epsg', 4820, 'Segara (Jakarta)', '+proj=longlat +ellps=bessel +pm=jakarta +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4821, 'epsg', 4821, 'Voirol 1879 (Paris)', '+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4901, 'epsg', 4901, 'ATF (Paris)', '+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4902, 'epsg', 4902, 'NDG (Paris)', '+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4903, 'epsg', 4903, 'Madrid 1870 (Madrid)', '+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4904, 'epsg', 4904, 'Lisbon 1890 (Lisbon)', '+proj=longlat +ellps=bessel +pm=lisbon +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2000, 'epsg', 2000, 'Anguilla 1957 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2001, 'epsg', 2001, 'Antigua 1943 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2002, 'epsg', 2002, 'Dominica 1945 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2003, 'epsg', 2003, 'Grenada 1953 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2004, 'epsg', 2004, 'Montserrat 1958 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2005, 'epsg', 2005, 'St. Kitts 1955 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2006, 'epsg', 2006, 'St. Lucia 1955 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2007, 'epsg', 2007, 'St. Vincent 45 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2008, 'epsg', 2008, 'NAD27(CGQ77) / SCoPQ zone 2', '+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2009, 'epsg', 2009, 'NAD27(CGQ77) / SCoPQ zone 3', '+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2010, 'epsg', 2010, 'NAD27(CGQ77) / SCoPQ zone 4', '+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2011, 'epsg', 2011, 'NAD27(CGQ77) / SCoPQ zone 5', '+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2012, 'epsg', 2012, 'NAD27(CGQ77) / SCoPQ zone 6', '+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2013, 'epsg', 2013, 'NAD27(CGQ77) / SCoPQ zone 7', '+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2014, 'epsg', 2014, 'NAD27(CGQ77) / SCoPQ zone 8', '+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2015, 'epsg', 2015, 'NAD27(CGQ77) / SCoPQ zone 9', '+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2016, 'epsg', 2016, 'NAD27(CGQ77) / SCoPQ zone 10', '+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2017, 'epsg', 2017, 'NAD27(76) / MTM zone 8', '+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2018, 'epsg', 2018, 'NAD27(76) / MTM zone 9', '+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2019, 'epsg', 2019, 'NAD27(76) / MTM zone 10', '+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2020, 'epsg', 2020, 'NAD27(76) / MTM zone 11', '+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2021, 'epsg', 2021, 'NAD27(76) / MTM zone 12', '+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2022, 'epsg', 2022, 'NAD27(76) / MTM zone 13', '+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2023, 'epsg', 2023, 'NAD27(76) / MTM zone 14', '+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2024, 'epsg', 2024, 'NAD27(76) / MTM zone 15', '+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2025, 'epsg', 2025, 'NAD27(76) / MTM zone 16', '+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2026, 'epsg', 2026, 'NAD27(76) / MTM zone 17', '+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2027, 'epsg', 2027, 'NAD27(76) / UTM zone 15N', '+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2028, 'epsg', 2028, 'NAD27(76) / UTM zone 16N', '+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2029, 'epsg', 2029, 'NAD27(76) / UTM zone 17N', '+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2030, 'epsg', 2030, 'NAD27(76) / UTM zone 18N', '+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2031, 'epsg', 2031, 'NAD27(CGQ77) / UTM zone 17N', '+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2032, 'epsg', 2032, 'NAD27(CGQ77) / UTM zone 18N', '+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2033, 'epsg', 2033, 'NAD27(CGQ77) / UTM zone 19N', '+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2034, 'epsg', 2034, 'NAD27(CGQ77) / UTM zone 20N', '+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2035, 'epsg', 2035, 'NAD27(CGQ77) / UTM zone 21N', '+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2036, 'epsg', 2036, 'NAD83(CSRS98) / New Brunswick Stereo (deprecated)', '+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2037, 'epsg', 2037, 'NAD83(CSRS98) / UTM zone 19N (deprecated)', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2038, 'epsg', 2038, 'NAD83(CSRS98) / UTM zone 20N (deprecated)', '+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2039, 'epsg', 2039, 'Israel / Israeli TM Grid', '+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2040, 'epsg', 2040, 'Locodjo 1965 / UTM zone 30N', '+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2041, 'epsg', 2041, 'Abidjan 1987 / UTM zone 30N', '+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2042, 'epsg', 2042, 'Locodjo 1965 / UTM zone 29N', '+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2043, 'epsg', 2043, 'Abidjan 1987 / UTM zone 29N', '+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2044, 'epsg', 2044, 'Hanoi 1972 / Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2045, 'epsg', 2045, 'Hanoi 1972 / Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2056, 'epsg', 2056, 'CH1903+ / LV95', '+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2057, 'epsg', 2057, 'Rassadiran / Nakhl e Taqi', '+proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2058, 'epsg', 2058, 'ED50(ED77) / UTM zone 38N', '+proj=utm +zone=38 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2059, 'epsg', 2059, 'ED50(ED77) / UTM zone 39N', '+proj=utm +zone=39 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2060, 'epsg', 2060, 'ED50(ED77) / UTM zone 40N', '+proj=utm +zone=40 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2061, 'epsg', 2061, 'ED50(ED77) / UTM zone 41N', '+proj=utm +zone=41 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2062, 'epsg', 2062, 'Madrid 1870 (Madrid) / Spain', '+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2063, 'epsg', 2063, 'Dabola 1981 / UTM zone 28N (deprecated)', '+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2064, 'epsg', 2064, 'Dabola 1981 / UTM zone 29N (deprecated)', '+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2065, 'epsg', 2065, 'S-JTSK (Ferro) / Krovak', '+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2066, 'epsg', 2066, 'Mount Dillon / Tobago Grid', '+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2067, 'epsg', 2067, 'Naparima 1955 / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2068, 'epsg', 2068, 'ELD79 / Libya zone 5', '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2069, 'epsg', 2069, 'ELD79 / Libya zone 6', '+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2070, 'epsg', 2070, 'ELD79 / Libya zone 7', '+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2071, 'epsg', 2071, 'ELD79 / Libya zone 8', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2072, 'epsg', 2072, 'ELD79 / Libya zone 9', '+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2073, 'epsg', 2073, 'ELD79 / Libya zone 10', '+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2074, 'epsg', 2074, 'ELD79 / Libya zone 11', '+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2075, 'epsg', 2075, 'ELD79 / Libya zone 12', '+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2076, 'epsg', 2076, 'ELD79 / Libya zone 13', '+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2077, 'epsg', 2077, 'ELD79 / UTM zone 32N', '+proj=utm +zone=32 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2078, 'epsg', 2078, 'ELD79 / UTM zone 33N', '+proj=utm +zone=33 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2079, 'epsg', 2079, 'ELD79 / UTM zone 34N', '+proj=utm +zone=34 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2080, 'epsg', 2080, 'ELD79 / UTM zone 35N', '+proj=utm +zone=35 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2081, 'epsg', 2081, 'Chos Malal 1914 / Argentina zone 2', '+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2082, 'epsg', 2082, 'Pampa del Castillo / Argentina zone 2', '+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2083, 'epsg', 2083, 'Hito XVIII 1963 / Argentina zone 2', '+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2084, 'epsg', 2084, 'Hito XVIII 1963 / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2085, 'epsg', 2085, 'NAD27 / Cuba Norte', '+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2086, 'epsg', 2086, 'NAD27 / Cuba Sur', '+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2087, 'epsg', 2087, 'ELD79 / TM 12 NE', '+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2088, 'epsg', 2088, 'Carthage / TM 11 NE', '+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2089, 'epsg', 2089, 'Yemen NGN96 / UTM zone 38N', '+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2090, 'epsg', 2090, 'Yemen NGN96 / UTM zone 39N', '+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2091, 'epsg', 2091, 'South Yemen / Gauss Kruger zone 8 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2092, 'epsg', 2092, 'South Yemen / Gauss Kruger zone 9 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2093, 'epsg', 2093, 'Hanoi 1972 / GK 106 NE', '+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2094, 'epsg', 2094, 'WGS 72BE / TM 106 NE', '+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2095, 'epsg', 2095, 'Bissau / UTM zone 28N', '+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2096, 'epsg', 2096, 'Korean 1985 / Korea East Belt', '+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2097, 'epsg', 2097, 'Korean 1985 / Korea Central Belt', '+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2098, 'epsg', 2098, 'Korean 1985 / Korea West Belt', '+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2099, 'epsg', 2099, 'Qatar 1948 / Qatar Grid', '+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2100, 'epsg', 2100, 'GGRS87 / Greek Grid', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2101, 'epsg', 2101, 'Lake / Maracaibo Grid M1', '+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2102, 'epsg', 2102, 'Lake / Maracaibo Grid', '+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2103, 'epsg', 2103, 'Lake / Maracaibo Grid M3', '+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2104, 'epsg', 2104, 'Lake / Maracaibo La Rosa Grid', '+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2105, 'epsg', 2105, 'NZGD2000 / Mount Eden Circuit 2000', '+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2106, 'epsg', 2106, 'NZGD2000 / Bay of Plenty Circuit 2000', '+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2107, 'epsg', 2107, 'NZGD2000 / Poverty Bay Circuit 2000', '+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2108, 'epsg', 2108, 'NZGD2000 / Hawkes Bay Circuit 2000', '+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2109, 'epsg', 2109, 'NZGD2000 / Taranaki Circuit 2000', '+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2110, 'epsg', 2110, 'NZGD2000 / Tuhirangi Circuit 2000', '+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2111, 'epsg', 2111, 'NZGD2000 / Wanganui Circuit 2000', '+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2112, 'epsg', 2112, 'NZGD2000 / Wairarapa Circuit 2000', '+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2113, 'epsg', 2113, 'NZGD2000 / Wellington Circuit 2000', '+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2114, 'epsg', 2114, 'NZGD2000 / Collingwood Circuit 2000', '+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2115, 'epsg', 2115, 'NZGD2000 / Nelson Circuit 2000', '+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2116, 'epsg', 2116, 'NZGD2000 / Karamea Circuit 2000', '+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2117, 'epsg', 2117, 'NZGD2000 / Buller Circuit 2000', '+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2118, 'epsg', 2118, 'NZGD2000 / Grey Circuit 2000', '+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2119, 'epsg', 2119, 'NZGD2000 / Amuri Circuit 2000', '+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2120, 'epsg', 2120, 'NZGD2000 / Marlborough Circuit 2000', '+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2121, 'epsg', 2121, 'NZGD2000 / Hokitika Circuit 2000', '+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2122, 'epsg', 2122, 'NZGD2000 / Okarito Circuit 2000', '+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2123, 'epsg', 2123, 'NZGD2000 / Jacksons Bay Circuit 2000', '+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2124, 'epsg', 2124, 'NZGD2000 / Mount Pleasant Circuit 2000', '+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2125, 'epsg', 2125, 'NZGD2000 / Gawler Circuit 2000', '+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2126, 'epsg', 2126, 'NZGD2000 / Timaru Circuit 2000', '+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2127, 'epsg', 2127, 'NZGD2000 / Lindis Peak Circuit 2000', '+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2128, 'epsg', 2128, 'NZGD2000 / Mount Nicholas Circuit 2000', '+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2129, 'epsg', 2129, 'NZGD2000 / Mount York Circuit 2000', '+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2130, 'epsg', 2130, 'NZGD2000 / Observation Point Circuit 2000', '+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2131, 'epsg', 2131, 'NZGD2000 / North Taieri Circuit 2000', '+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2132, 'epsg', 2132, 'NZGD2000 / Bluff Circuit 2000', '+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2133, 'epsg', 2133, 'NZGD2000 / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2134, 'epsg', 2134, 'NZGD2000 / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2135, 'epsg', 2135, 'NZGD2000 / UTM zone 60S', '+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2136, 'epsg', 2136, 'Accra / Ghana National Grid', '+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2137, 'epsg', 2137, 'Accra / TM 1 NW', '+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2138, 'epsg', 2138, 'NAD27(CGQ77) / Quebec Lambert', '+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2139, 'epsg', 2139, 'NAD83(CSRS98) / SCoPQ zone 2 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2140, 'epsg', 2140, 'NAD83(CSRS98) / MTM zone 3 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2141, 'epsg', 2141, 'NAD83(CSRS98) / MTM zone 4 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2142, 'epsg', 2142, 'NAD83(CSRS98) / MTM zone 5 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2143, 'epsg', 2143, 'NAD83(CSRS98) / MTM zone 6 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2144, 'epsg', 2144, 'NAD83(CSRS98) / MTM zone 7 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2145, 'epsg', 2145, 'NAD83(CSRS98) / MTM zone 8 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2146, 'epsg', 2146, 'NAD83(CSRS98) / MTM zone 9 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2147, 'epsg', 2147, 'NAD83(CSRS98) / MTM zone 10 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2148, 'epsg', 2148, 'NAD83(CSRS98) / UTM zone 21N (deprecated)', '+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2149, 'epsg', 2149, 'NAD83(CSRS98) / UTM zone 18N (deprecated)', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2150, 'epsg', 2150, 'NAD83(CSRS98) / UTM zone 17N (deprecated)', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2151, 'epsg', 2151, 'NAD83(CSRS98) / UTM zone 13N (deprecated)', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2152, 'epsg', 2152, 'NAD83(CSRS98) / UTM zone 12N (deprecated)', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2153, 'epsg', 2153, 'NAD83(CSRS98) / UTM zone 11N (deprecated)', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2154, 'epsg', 2154, 'RGF93 / Lambert-93', '+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2155, 'epsg', 2155, 'American Samoa 1962 / American Samoa Lambert (deprecated)', '+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2156, 'epsg', 2156, 'NAD83(HARN) / UTM zone 59S (deprecated)', '+proj=utm +zone=59 +south +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2157, 'epsg', 2157, 'IRENET95 / Irish Transverse Mercator', '+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2158, 'epsg', 2158, 'IRENET95 / UTM zone 29N', '+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2159, 'epsg', 2159, 'Sierra Leone 1924 / New Colony Grid', '+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2160, 'epsg', 2160, 'Sierra Leone 1924 / New War Office Grid', '+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2161, 'epsg', 2161, 'Sierra Leone 1968 / UTM zone 28N', '+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2162, 'epsg', 2162, 'Sierra Leone 1968 / UTM zone 29N', '+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2163, 'epsg', 2163, 'US National Atlas Equal Area', '+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2164, 'epsg', 2164, 'Locodjo 1965 / TM 5 NW', '+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2165, 'epsg', 2165, 'Abidjan 1987 / TM 5 NW', '+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2166, 'epsg', 2166, 'Pulkovo 1942(83) / Gauss Kruger zone 3 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2167, 'epsg', 2167, 'Pulkovo 1942(83) / Gauss Kruger zone 4 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2168, 'epsg', 2168, 'Pulkovo 1942(83) / Gauss Kruger zone 5 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2169, 'epsg', 2169, 'Luxembourg 1930 / Gauss', '+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2170, 'epsg', 2170, 'MGI / Slovenia Grid', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2171, 'epsg', 2171, 'Pulkovo 1942(58) / Poland zone I (deprecated)', '+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2172, 'epsg', 2172, 'Pulkovo 1942(58) / Poland zone II', '+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2173, 'epsg', 2173, 'Pulkovo 1942(58) / Poland zone III', '+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2174, 'epsg', 2174, 'Pulkovo 1942(58) / Poland zone IV', '+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2175, 'epsg', 2175, 'Pulkovo 1942(58) / Poland zone V', '+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2176, 'epsg', 2176, 'ETRS89 / Poland CS2000 zone 5', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2177, 'epsg', 2177, 'ETRS89 / Poland CS2000 zone 6', '+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2178, 'epsg', 2178, 'ETRS89 / Poland CS2000 zone 7', '+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2179, 'epsg', 2179, 'ETRS89 / Poland CS2000 zone 8', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2180, 'epsg', 2180, 'ETRS89 / Poland CS92', '+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2188, 'epsg', 2188, 'Azores Occidental 1939 / UTM zone 25N', '+proj=utm +zone=25 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2189, 'epsg', 2189, 'Azores Central 1948 / UTM zone 26N', '+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2190, 'epsg', 2190, 'Azores Oriental 1940 / UTM zone 26N', '+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2191, 'epsg', 2191, 'Madeira 1936 / UTM zone 28N (deprecated)', '+proj=utm +zone=28 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2192, 'epsg', 2192, 'ED50 / France EuroLambert', '+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2193, 'epsg', 2193, 'NZGD2000 / New Zealand Transverse Mercator', '+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2194, 'epsg', 2194, 'American Samoa 1962 / American Samoa Lambert (deprecated)', '+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2195, 'epsg', 2195, 'NAD83(HARN) / UTM zone 2S', '+proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2196, 'epsg', 2196, 'ETRS89 / Kp2000 Jutland', '+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2197, 'epsg', 2197, 'ETRS89 / Kp2000 Zealand', '+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2198, 'epsg', 2198, 'ETRS89 / Kp2000 Bornholm', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2199, 'epsg', 2199, 'Albanian 1987 / Gauss Kruger zone 4 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2200, 'epsg', 2200, 'ATS77 / New Brunswick Stereographic (ATS77)', '+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2201, 'epsg', 2201, 'REGVEN / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2202, 'epsg', 2202, 'REGVEN / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2203, 'epsg', 2203, 'REGVEN / UTM zone 20N', '+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2204, 'epsg', 2204, 'NAD27 / Tennessee', '+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2205, 'epsg', 2205, 'NAD83 / Kentucky North', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2206, 'epsg', 2206, 'ED50 / 3-degree Gauss-Kruger zone 9', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2207, 'epsg', 2207, 'ED50 / 3-degree Gauss-Kruger zone 10', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2208, 'epsg', 2208, 'ED50 / 3-degree Gauss-Kruger zone 11', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2209, 'epsg', 2209, 'ED50 / 3-degree Gauss-Kruger zone 12', '+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2210, 'epsg', 2210, 'ED50 / 3-degree Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2211, 'epsg', 2211, 'ED50 / 3-degree Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2212, 'epsg', 2212, 'ED50 / 3-degree Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2213, 'epsg', 2213, 'ETRS89 / TM 30 NE', '+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2214, 'epsg', 2214, 'Douala 1948 / AOF west (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2215, 'epsg', 2215, 'Manoca 1962 / UTM zone 32N', '+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2216, 'epsg', 2216, 'Qornoq 1927 / UTM zone 22N', '+proj=utm +zone=22 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2217, 'epsg', 2217, 'Qornoq 1927 / UTM zone 23N', '+proj=utm +zone=23 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2219, 'epsg', 2219, 'ATS77 / UTM zone 19N', '+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2220, 'epsg', 2220, 'ATS77 / UTM zone 20N', '+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2222, 'epsg', 2222, 'NAD83 / Arizona East (ft)', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2223, 'epsg', 2223, 'NAD83 / Arizona Central (ft)', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2224, 'epsg', 2224, 'NAD83 / Arizona West (ft)', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2225, 'epsg', 2225, 'NAD83 / California zone 1 (ftUS)', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2226, 'epsg', 2226, 'NAD83 / California zone 2 (ftUS)', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2227, 'epsg', 2227, 'NAD83 / California zone 3 (ftUS)', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2228, 'epsg', 2228, 'NAD83 / California zone 4 (ftUS)', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2229, 'epsg', 2229, 'NAD83 / California zone 5 (ftUS)', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2230, 'epsg', 2230, 'NAD83 / California zone 6 (ftUS)', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2231, 'epsg', 2231, 'NAD83 / Colorado North (ftUS)', '+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2232, 'epsg', 2232, 'NAD83 / Colorado Central (ftUS)', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2233, 'epsg', 2233, 'NAD83 / Colorado South (ftUS)', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2234, 'epsg', 2234, 'NAD83 / Connecticut (ftUS)', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2235, 'epsg', 2235, 'NAD83 / Delaware (ftUS)', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2236, 'epsg', 2236, 'NAD83 / Florida East (ftUS)', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2237, 'epsg', 2237, 'NAD83 / Florida West (ftUS)', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2238, 'epsg', 2238, 'NAD83 / Florida North (ftUS)', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2239, 'epsg', 2239, 'NAD83 / Georgia East (ftUS)', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2240, 'epsg', 2240, 'NAD83 / Georgia West (ftUS)', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2241, 'epsg', 2241, 'NAD83 / Idaho East (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2242, 'epsg', 2242, 'NAD83 / Idaho Central (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2243, 'epsg', 2243, 'NAD83 / Idaho West (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2244, 'epsg', 2244, 'NAD83 / Indiana East (ftUS) (deprecated)', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2245, 'epsg', 2245, 'NAD83 / Indiana West (ftUS) (deprecated)', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2246, 'epsg', 2246, 'NAD83 / Kentucky North (ftUS)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2247, 'epsg', 2247, 'NAD83 / Kentucky South (ftUS)', '+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2248, 'epsg', 2248, 'NAD83 / Maryland (ftUS)', '+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2249, 'epsg', 2249, 'NAD83 / Massachusetts Mainland (ftUS)', '+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2250, 'epsg', 2250, 'NAD83 / Massachusetts Island (ftUS)', '+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2251, 'epsg', 2251, 'NAD83 / Michigan North (ft)', '+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2252, 'epsg', 2252, 'NAD83 / Michigan Central (ft)', '+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2253, 'epsg', 2253, 'NAD83 / Michigan South (ft)', '+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2254, 'epsg', 2254, 'NAD83 / Mississippi East (ftUS)', '+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2255, 'epsg', 2255, 'NAD83 / Mississippi West (ftUS)', '+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2256, 'epsg', 2256, 'NAD83 / Montana (ft)', '+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2257, 'epsg', 2257, 'NAD83 / New Mexico East (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2258, 'epsg', 2258, 'NAD83 / New Mexico Central (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2259, 'epsg', 2259, 'NAD83 / New Mexico West (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2260, 'epsg', 2260, 'NAD83 / New York East (ftUS)', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2261, 'epsg', 2261, 'NAD83 / New York Central (ftUS)', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2262, 'epsg', 2262, 'NAD83 / New York West (ftUS)', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2263, 'epsg', 2263, 'NAD83 / New York Long Island (ftUS)', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2264, 'epsg', 2264, 'NAD83 / North Carolina (ftUS)', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2265, 'epsg', 2265, 'NAD83 / North Dakota North (ft)', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2266, 'epsg', 2266, 'NAD83 / North Dakota South (ft)', '+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2267, 'epsg', 2267, 'NAD83 / Oklahoma North (ftUS)', '+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2268, 'epsg', 2268, 'NAD83 / Oklahoma South (ftUS)', '+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2269, 'epsg', 2269, 'NAD83 / Oregon North (ft)', '+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2270, 'epsg', 2270, 'NAD83 / Oregon South (ft)', '+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2271, 'epsg', 2271, 'NAD83 / Pennsylvania North (ftUS)', '+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2272, 'epsg', 2272, 'NAD83 / Pennsylvania South (ftUS)', '+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2273, 'epsg', 2273, 'NAD83 / South Carolina (ft)', '+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2274, 'epsg', 2274, 'NAD83 / Tennessee (ftUS)', '+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2275, 'epsg', 2275, 'NAD83 / Texas North (ftUS)', '+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2276, 'epsg', 2276, 'NAD83 / Texas North Central (ftUS)', '+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2277, 'epsg', 2277, 'NAD83 / Texas Central (ftUS)', '+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2278, 'epsg', 2278, 'NAD83 / Texas South Central (ftUS)', '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2279, 'epsg', 2279, 'NAD83 / Texas South (ftUS)', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2280, 'epsg', 2280, 'NAD83 / Utah North (ft)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2281, 'epsg', 2281, 'NAD83 / Utah Central (ft)', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2282, 'epsg', 2282, 'NAD83 / Utah South (ft)', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2283, 'epsg', 2283, 'NAD83 / Virginia North (ftUS)', '+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2284, 'epsg', 2284, 'NAD83 / Virginia South (ftUS)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2285, 'epsg', 2285, 'NAD83 / Washington North (ftUS)', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2286, 'epsg', 2286, 'NAD83 / Washington South (ftUS)', '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2287, 'epsg', 2287, 'NAD83 / Wisconsin North (ftUS)', '+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2288, 'epsg', 2288, 'NAD83 / Wisconsin Central (ftUS)', '+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2289, 'epsg', 2289, 'NAD83 / Wisconsin South (ftUS)', '+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2290, 'epsg', 2290, 'ATS77 / Prince Edward Isl. Stereographic (ATS77)', '+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2291, 'epsg', 2291, 'NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated)', '+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2292, 'epsg', 2292, 'NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated)', '+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2294, 'epsg', 2294, 'ATS77 / MTM Nova Scotia zone 4', '+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2295, 'epsg', 2295, 'ATS77 / MTM Nova Scotia zone 5', '+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2308, 'epsg', 2308, 'Batavia / TM 109 SE', '+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2309, 'epsg', 2309, 'WGS 84 / TM 116 SE', '+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2310, 'epsg', 2310, 'WGS 84 / TM 132 SE', '+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2311, 'epsg', 2311, 'WGS 84 / TM 6 NE', '+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2312, 'epsg', 2312, 'Garoua / UTM zone 33N', '+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2313, 'epsg', 2313, 'Kousseri / UTM zone 33N', '+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2314, 'epsg', 2314, 'Trinidad 1903 / Trinidad Grid (ftCla)', '+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2315, 'epsg', 2315, 'Campo Inchauspe / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2316, 'epsg', 2316, 'Campo Inchauspe / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2317, 'epsg', 2317, 'PSAD56 / ICN Regional', '+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2318, 'epsg', 2318, 'Ain el Abd / Aramco Lambert', '+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2319, 'epsg', 2319, 'ED50 / TM27', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2320, 'epsg', 2320, 'ED50 / TM30', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2321, 'epsg', 2321, 'ED50 / TM33', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2322, 'epsg', 2322, 'ED50 / TM36', '+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2323, 'epsg', 2323, 'ED50 / TM39', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2324, 'epsg', 2324, 'ED50 / TM42', '+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2325, 'epsg', 2325, 'ED50 / TM45', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2326, 'epsg', 2326, 'Hong Kong 1980 Grid System', '+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2327, 'epsg', 2327, 'Xian 1980 / Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2328, 'epsg', 2328, 'Xian 1980 / Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2329, 'epsg', 2329, 'Xian 1980 / Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2330, 'epsg', 2330, 'Xian 1980 / Gauss-Kruger zone 16', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2331, 'epsg', 2331, 'Xian 1980 / Gauss-Kruger zone 17', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2332, 'epsg', 2332, 'Xian 1980 / Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2333, 'epsg', 2333, 'Xian 1980 / Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2334, 'epsg', 2334, 'Xian 1980 / Gauss-Kruger zone 20', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2335, 'epsg', 2335, 'Xian 1980 / Gauss-Kruger zone 21', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2336, 'epsg', 2336, 'Xian 1980 / Gauss-Kruger zone 22', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2337, 'epsg', 2337, 'Xian 1980 / Gauss-Kruger zone 23', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2338, 'epsg', 2338, 'Xian 1980 / Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2339, 'epsg', 2339, 'Xian 1980 / Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2340, 'epsg', 2340, 'Xian 1980 / Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2341, 'epsg', 2341, 'Xian 1980 / Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2342, 'epsg', 2342, 'Xian 1980 / Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2343, 'epsg', 2343, 'Xian 1980 / Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2344, 'epsg', 2344, 'Xian 1980 / Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2345, 'epsg', 2345, 'Xian 1980 / Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2346, 'epsg', 2346, 'Xian 1980 / Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2347, 'epsg', 2347, 'Xian 1980 / Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2348, 'epsg', 2348, 'Xian 1980 / Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2349, 'epsg', 2349, 'Xian 1980 / 3-degree Gauss-Kruger zone 25', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2350, 'epsg', 2350, 'Xian 1980 / 3-degree Gauss-Kruger zone 26', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2351, 'epsg', 2351, 'Xian 1980 / 3-degree Gauss-Kruger zone 27', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2352, 'epsg', 2352, 'Xian 1980 / 3-degree Gauss-Kruger zone 28', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2353, 'epsg', 2353, 'Xian 1980 / 3-degree Gauss-Kruger zone 29', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2354, 'epsg', 2354, 'Xian 1980 / 3-degree Gauss-Kruger zone 30', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2355, 'epsg', 2355, 'Xian 1980 / 3-degree Gauss-Kruger zone 31', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2356, 'epsg', 2356, 'Xian 1980 / 3-degree Gauss-Kruger zone 32', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2357, 'epsg', 2357, 'Xian 1980 / 3-degree Gauss-Kruger zone 33', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2358, 'epsg', 2358, 'Xian 1980 / 3-degree Gauss-Kruger zone 34', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2359, 'epsg', 2359, 'Xian 1980 / 3-degree Gauss-Kruger zone 35', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2360, 'epsg', 2360, 'Xian 1980 / 3-degree Gauss-Kruger zone 36', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2361, 'epsg', 2361, 'Xian 1980 / 3-degree Gauss-Kruger zone 37', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2362, 'epsg', 2362, 'Xian 1980 / 3-degree Gauss-Kruger zone 38', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2363, 'epsg', 2363, 'Xian 1980 / 3-degree Gauss-Kruger zone 39', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2364, 'epsg', 2364, 'Xian 1980 / 3-degree Gauss-Kruger zone 40', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2365, 'epsg', 2365, 'Xian 1980 / 3-degree Gauss-Kruger zone 41', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2366, 'epsg', 2366, 'Xian 1980 / 3-degree Gauss-Kruger zone 42', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2367, 'epsg', 2367, 'Xian 1980 / 3-degree Gauss-Kruger zone 43', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2368, 'epsg', 2368, 'Xian 1980 / 3-degree Gauss-Kruger zone 44', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2369, 'epsg', 2369, 'Xian 1980 / 3-degree Gauss-Kruger zone 45', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2370, 'epsg', 2370, 'Xian 1980 / 3-degree Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2371, 'epsg', 2371, 'Xian 1980 / 3-degree Gauss-Kruger CM 78E', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2372, 'epsg', 2372, 'Xian 1980 / 3-degree Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2373, 'epsg', 2373, 'Xian 1980 / 3-degree Gauss-Kruger CM 84E', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2374, 'epsg', 2374, 'Xian 1980 / 3-degree Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2375, 'epsg', 2375, 'Xian 1980 / 3-degree Gauss-Kruger CM 90E', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2376, 'epsg', 2376, 'Xian 1980 / 3-degree Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2377, 'epsg', 2377, 'Xian 1980 / 3-degree Gauss-Kruger CM 96E', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2378, 'epsg', 2378, 'Xian 1980 / 3-degree Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2379, 'epsg', 2379, 'Xian 1980 / 3-degree Gauss-Kruger CM 102E', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2380, 'epsg', 2380, 'Xian 1980 / 3-degree Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2381, 'epsg', 2381, 'Xian 1980 / 3-degree Gauss-Kruger CM 108E', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2382, 'epsg', 2382, 'Xian 1980 / 3-degree Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2383, 'epsg', 2383, 'Xian 1980 / 3-degree Gauss-Kruger CM 114E', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2384, 'epsg', 2384, 'Xian 1980 / 3-degree Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2385, 'epsg', 2385, 'Xian 1980 / 3-degree Gauss-Kruger CM 120E', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2386, 'epsg', 2386, 'Xian 1980 / 3-degree Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2387, 'epsg', 2387, 'Xian 1980 / 3-degree Gauss-Kruger CM 126E', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2388, 'epsg', 2388, 'Xian 1980 / 3-degree Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2389, 'epsg', 2389, 'Xian 1980 / 3-degree Gauss-Kruger CM 132E', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2390, 'epsg', 2390, 'Xian 1980 / 3-degree Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2391, 'epsg', 2391, 'KKJ / Finland zone 1', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2392, 'epsg', 2392, 'KKJ / Finland zone 2', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2393, 'epsg', 2393, 'KKJ / Finland Uniform Coordinate System', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2394, 'epsg', 2394, 'KKJ / Finland zone 4', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2395, 'epsg', 2395, 'South Yemen / Gauss-Kruger zone 8', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2396, 'epsg', 2396, 'South Yemen / Gauss-Kruger zone 9', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2397, 'epsg', 2397, 'Pulkovo 1942(83) / Gauss-Kruger zone 3', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2398, 'epsg', 2398, 'Pulkovo 1942(83) / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2399, 'epsg', 2399, 'Pulkovo 1942(83) / Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2400, 'epsg', 2400, 'RT90 2.5 gon W (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2401, 'epsg', 2401, 'Beijing 1954 / 3-degree Gauss-Kruger zone 25', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2402, 'epsg', 2402, 'Beijing 1954 / 3-degree Gauss-Kruger zone 26', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2403, 'epsg', 2403, 'Beijing 1954 / 3-degree Gauss-Kruger zone 27', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2404, 'epsg', 2404, 'Beijing 1954 / 3-degree Gauss-Kruger zone 28', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2405, 'epsg', 2405, 'Beijing 1954 / 3-degree Gauss-Kruger zone 29', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2406, 'epsg', 2406, 'Beijing 1954 / 3-degree Gauss-Kruger zone 30', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2407, 'epsg', 2407, 'Beijing 1954 / 3-degree Gauss-Kruger zone 31', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2408, 'epsg', 2408, 'Beijing 1954 / 3-degree Gauss-Kruger zone 32', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2409, 'epsg', 2409, 'Beijing 1954 / 3-degree Gauss-Kruger zone 33', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2410, 'epsg', 2410, 'Beijing 1954 / 3-degree Gauss-Kruger zone 34', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2411, 'epsg', 2411, 'Beijing 1954 / 3-degree Gauss-Kruger zone 35', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2412, 'epsg', 2412, 'Beijing 1954 / 3-degree Gauss-Kruger zone 36', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2413, 'epsg', 2413, 'Beijing 1954 / 3-degree Gauss-Kruger zone 37', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2414, 'epsg', 2414, 'Beijing 1954 / 3-degree Gauss-Kruger zone 38', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2415, 'epsg', 2415, 'Beijing 1954 / 3-degree Gauss-Kruger zone 39', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2416, 'epsg', 2416, 'Beijing 1954 / 3-degree Gauss-Kruger zone 40', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2417, 'epsg', 2417, 'Beijing 1954 / 3-degree Gauss-Kruger zone 41', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2418, 'epsg', 2418, 'Beijing 1954 / 3-degree Gauss-Kruger zone 42', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2419, 'epsg', 2419, 'Beijing 1954 / 3-degree Gauss-Kruger zone 43', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2420, 'epsg', 2420, 'Beijing 1954 / 3-degree Gauss-Kruger zone 44', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2421, 'epsg', 2421, 'Beijing 1954 / 3-degree Gauss-Kruger zone 45', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2422, 'epsg', 2422, 'Beijing 1954 / 3-degree Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2423, 'epsg', 2423, 'Beijing 1954 / 3-degree Gauss-Kruger CM 78E', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2424, 'epsg', 2424, 'Beijing 1954 / 3-degree Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2425, 'epsg', 2425, 'Beijing 1954 / 3-degree Gauss-Kruger CM 84E', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2426, 'epsg', 2426, 'Beijing 1954 / 3-degree Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2427, 'epsg', 2427, 'Beijing 1954 / 3-degree Gauss-Kruger CM 90E', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2428, 'epsg', 2428, 'Beijing 1954 / 3-degree Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2429, 'epsg', 2429, 'Beijing 1954 / 3-degree Gauss-Kruger CM 96E', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2430, 'epsg', 2430, 'Beijing 1954 / 3-degree Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2431, 'epsg', 2431, 'Beijing 1954 / 3-degree Gauss-Kruger CM 102E', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2432, 'epsg', 2432, 'Beijing 1954 / 3-degree Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2433, 'epsg', 2433, 'Beijing 1954 / 3-degree Gauss-Kruger CM 108E', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2434, 'epsg', 2434, 'Beijing 1954 / 3-degree Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2435, 'epsg', 2435, 'Beijing 1954 / 3-degree Gauss-Kruger CM 114E', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2436, 'epsg', 2436, 'Beijing 1954 / 3-degree Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2437, 'epsg', 2437, 'Beijing 1954 / 3-degree Gauss-Kruger CM 120E', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2438, 'epsg', 2438, 'Beijing 1954 / 3-degree Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2439, 'epsg', 2439, 'Beijing 1954 / 3-degree Gauss-Kruger CM 126E', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2440, 'epsg', 2440, 'Beijing 1954 / 3-degree Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2441, 'epsg', 2441, 'Beijing 1954 / 3-degree Gauss-Kruger CM 132E', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2442, 'epsg', 2442, 'Beijing 1954 / 3-degree Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2443, 'epsg', 2443, 'JGD2000 / Japan Plane Rectangular CS I', '+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2444, 'epsg', 2444, 'JGD2000 / Japan Plane Rectangular CS II', '+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2445, 'epsg', 2445, 'JGD2000 / Japan Plane Rectangular CS III', '+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2446, 'epsg', 2446, 'JGD2000 / Japan Plane Rectangular CS IV', '+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2447, 'epsg', 2447, 'JGD2000 / Japan Plane Rectangular CS V', '+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2448, 'epsg', 2448, 'JGD2000 / Japan Plane Rectangular CS VI', '+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2449, 'epsg', 2449, 'JGD2000 / Japan Plane Rectangular CS VII', '+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2450, 'epsg', 2450, 'JGD2000 / Japan Plane Rectangular CS VIII', '+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2451, 'epsg', 2451, 'JGD2000 / Japan Plane Rectangular CS IX', '+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2452, 'epsg', 2452, 'JGD2000 / Japan Plane Rectangular CS X', '+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2453, 'epsg', 2453, 'JGD2000 / Japan Plane Rectangular CS XI', '+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2454, 'epsg', 2454, 'JGD2000 / Japan Plane Rectangular CS XII', '+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2455, 'epsg', 2455, 'JGD2000 / Japan Plane Rectangular CS XIII', '+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2456, 'epsg', 2456, 'JGD2000 / Japan Plane Rectangular CS XIV', '+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2457, 'epsg', 2457, 'JGD2000 / Japan Plane Rectangular CS XV', '+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2458, 'epsg', 2458, 'JGD2000 / Japan Plane Rectangular CS XVI', '+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2459, 'epsg', 2459, 'JGD2000 / Japan Plane Rectangular CS XVII', '+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2460, 'epsg', 2460, 'JGD2000 / Japan Plane Rectangular CS XVIII', '+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2461, 'epsg', 2461, 'JGD2000 / Japan Plane Rectangular CS XIX', '+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2462, 'epsg', 2462, 'Albanian 1987 / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2463, 'epsg', 2463, 'Pulkovo 1995 / Gauss-Kruger CM 21E', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2464, 'epsg', 2464, 'Pulkovo 1995 / Gauss-Kruger CM 27E', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2465, 'epsg', 2465, 'Pulkovo 1995 / Gauss-Kruger CM 33E', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2466, 'epsg', 2466, 'Pulkovo 1995 / Gauss-Kruger CM 39E', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2467, 'epsg', 2467, 'Pulkovo 1995 / Gauss-Kruger CM 45E', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2468, 'epsg', 2468, 'Pulkovo 1995 / Gauss-Kruger CM 51E', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2469, 'epsg', 2469, 'Pulkovo 1995 / Gauss-Kruger CM 57E', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2470, 'epsg', 2470, 'Pulkovo 1995 / Gauss-Kruger CM 63E', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2471, 'epsg', 2471, 'Pulkovo 1995 / Gauss-Kruger CM 69E', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2472, 'epsg', 2472, 'Pulkovo 1995 / Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2473, 'epsg', 2473, 'Pulkovo 1995 / Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2474, 'epsg', 2474, 'Pulkovo 1995 / Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2475, 'epsg', 2475, 'Pulkovo 1995 / Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2476, 'epsg', 2476, 'Pulkovo 1995 / Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2477, 'epsg', 2477, 'Pulkovo 1995 / Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2478, 'epsg', 2478, 'Pulkovo 1995 / Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2479, 'epsg', 2479, 'Pulkovo 1995 / Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2480, 'epsg', 2480, 'Pulkovo 1995 / Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2481, 'epsg', 2481, 'Pulkovo 1995 / Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2482, 'epsg', 2482, 'Pulkovo 1995 / Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2483, 'epsg', 2483, 'Pulkovo 1995 / Gauss-Kruger CM 141E', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2484, 'epsg', 2484, 'Pulkovo 1995 / Gauss-Kruger CM 147E', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2485, 'epsg', 2485, 'Pulkovo 1995 / Gauss-Kruger CM 153E', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2486, 'epsg', 2486, 'Pulkovo 1995 / Gauss-Kruger CM 159E', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2487, 'epsg', 2487, 'Pulkovo 1995 / Gauss-Kruger CM 165E', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2488, 'epsg', 2488, 'Pulkovo 1995 / Gauss-Kruger CM 171E', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2489, 'epsg', 2489, 'Pulkovo 1995 / Gauss-Kruger CM 177E', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2490, 'epsg', 2490, 'Pulkovo 1995 / Gauss-Kruger CM 177W', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2491, 'epsg', 2491, 'Pulkovo 1995 / Gauss-Kruger CM 171W', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2492, 'epsg', 2492, 'Pulkovo 1942 / Gauss-Kruger CM 9E', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2493, 'epsg', 2493, 'Pulkovo 1942 / Gauss-Kruger CM 15E', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2494, 'epsg', 2494, 'Pulkovo 1942 / Gauss-Kruger CM 21E', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2495, 'epsg', 2495, 'Pulkovo 1942 / Gauss-Kruger CM 27E', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2496, 'epsg', 2496, 'Pulkovo 1942 / Gauss-Kruger CM 33E', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2497, 'epsg', 2497, 'Pulkovo 1942 / Gauss-Kruger CM 39E', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2498, 'epsg', 2498, 'Pulkovo 1942 / Gauss-Kruger CM 45E', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2499, 'epsg', 2499, 'Pulkovo 1942 / Gauss-Kruger CM 51E', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2500, 'epsg', 2500, 'Pulkovo 1942 / Gauss-Kruger CM 57E', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2501, 'epsg', 2501, 'Pulkovo 1942 / Gauss-Kruger CM 63E', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2502, 'epsg', 2502, 'Pulkovo 1942 / Gauss-Kruger CM 69E', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2503, 'epsg', 2503, 'Pulkovo 1942 / Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2504, 'epsg', 2504, 'Pulkovo 1942 / Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2505, 'epsg', 2505, 'Pulkovo 1942 / Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2506, 'epsg', 2506, 'Pulkovo 1942 / Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2507, 'epsg', 2507, 'Pulkovo 1942 / Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2508, 'epsg', 2508, 'Pulkovo 1942 / Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2509, 'epsg', 2509, 'Pulkovo 1942 / Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2510, 'epsg', 2510, 'Pulkovo 1942 / Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2511, 'epsg', 2511, 'Pulkovo 1942 / Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2512, 'epsg', 2512, 'Pulkovo 1942 / Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2513, 'epsg', 2513, 'Pulkovo 1942 / Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2514, 'epsg', 2514, 'Pulkovo 1942 / Gauss-Kruger CM 141E', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2515, 'epsg', 2515, 'Pulkovo 1942 / Gauss-Kruger CM 147E', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2516, 'epsg', 2516, 'Pulkovo 1942 / Gauss-Kruger CM 153E', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2517, 'epsg', 2517, 'Pulkovo 1942 / Gauss-Kruger CM 159E', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2518, 'epsg', 2518, 'Pulkovo 1942 / Gauss-Kruger CM 165E', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2519, 'epsg', 2519, 'Pulkovo 1942 / Gauss-Kruger CM 171E', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2520, 'epsg', 2520, 'Pulkovo 1942 / Gauss-Kruger CM 177E', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2521, 'epsg', 2521, 'Pulkovo 1942 / Gauss-Kruger CM 177W', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2522, 'epsg', 2522, 'Pulkovo 1942 / Gauss-Kruger CM 171W', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2523, 'epsg', 2523, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 7', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2524, 'epsg', 2524, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 8', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2525, 'epsg', 2525, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 9', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2526, 'epsg', 2526, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 10', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2527, 'epsg', 2527, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 11', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2528, 'epsg', 2528, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 12', '+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2529, 'epsg', 2529, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2530, 'epsg', 2530, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2531, 'epsg', 2531, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2532, 'epsg', 2532, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 16', '+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2533, 'epsg', 2533, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 17', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2534, 'epsg', 2534, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2535, 'epsg', 2535, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2536, 'epsg', 2536, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 20', '+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2537, 'epsg', 2537, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 21', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2538, 'epsg', 2538, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 22', '+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2539, 'epsg', 2539, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 23', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2540, 'epsg', 2540, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 24', '+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2541, 'epsg', 2541, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 25', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2542, 'epsg', 2542, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 26', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2543, 'epsg', 2543, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 27', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2544, 'epsg', 2544, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 28', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2545, 'epsg', 2545, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 29', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2546, 'epsg', 2546, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 30', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2547, 'epsg', 2547, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 31', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2548, 'epsg', 2548, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 32', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2549, 'epsg', 2549, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 33', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2550, 'epsg', 2550, 'Samboja / UTM zone 50S (deprecated)', '+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2551, 'epsg', 2551, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 34', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2552, 'epsg', 2552, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 35', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2553, 'epsg', 2553, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 36', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2554, 'epsg', 2554, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 37', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2555, 'epsg', 2555, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 38', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2556, 'epsg', 2556, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 39', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2557, 'epsg', 2557, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 40', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2558, 'epsg', 2558, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 41', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2559, 'epsg', 2559, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 42', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2560, 'epsg', 2560, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 43', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2561, 'epsg', 2561, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 44', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2562, 'epsg', 2562, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 45', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2563, 'epsg', 2563, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 46', '+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2564, 'epsg', 2564, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 47', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2565, 'epsg', 2565, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 48', '+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2566, 'epsg', 2566, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 49', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2567, 'epsg', 2567, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 50', '+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2568, 'epsg', 2568, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 51', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2569, 'epsg', 2569, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 52', '+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2570, 'epsg', 2570, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 53', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2571, 'epsg', 2571, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 54', '+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2572, 'epsg', 2572, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 55', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2573, 'epsg', 2573, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 56', '+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2574, 'epsg', 2574, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 57', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2575, 'epsg', 2575, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 58', '+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2576, 'epsg', 2576, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 59', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2577, 'epsg', 2577, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2578, 'epsg', 2578, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 61', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2579, 'epsg', 2579, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 62', '+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2580, 'epsg', 2580, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 63', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2581, 'epsg', 2581, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 64', '+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2582, 'epsg', 2582, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2583, 'epsg', 2583, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2584, 'epsg', 2584, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2585, 'epsg', 2585, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2586, 'epsg', 2586, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2587, 'epsg', 2587, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E', '+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2588, 'epsg', 2588, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2589, 'epsg', 2589, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E', '+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2590, 'epsg', 2590, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2591, 'epsg', 2591, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E', '+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2592, 'epsg', 2592, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2593, 'epsg', 2593, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E', '+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2594, 'epsg', 2594, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2595, 'epsg', 2595, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E', '+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2596, 'epsg', 2596, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2597, 'epsg', 2597, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E', '+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2598, 'epsg', 2598, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2599, 'epsg', 2599, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E', '+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2600, 'epsg', 2600, 'Lietuvos Koordinoei Sistema 1994 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2601, 'epsg', 2601, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2602, 'epsg', 2602, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2603, 'epsg', 2603, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2604, 'epsg', 2604, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2605, 'epsg', 2605, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2606, 'epsg', 2606, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2607, 'epsg', 2607, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2608, 'epsg', 2608, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2609, 'epsg', 2609, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2610, 'epsg', 2610, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2611, 'epsg', 2611, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2612, 'epsg', 2612, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2613, 'epsg', 2613, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2614, 'epsg', 2614, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2615, 'epsg', 2615, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2616, 'epsg', 2616, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2617, 'epsg', 2617, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2618, 'epsg', 2618, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2619, 'epsg', 2619, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2620, 'epsg', 2620, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2621, 'epsg', 2621, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2622, 'epsg', 2622, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E', '+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2623, 'epsg', 2623, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2624, 'epsg', 2624, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E', '+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2625, 'epsg', 2625, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2626, 'epsg', 2626, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E', '+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2627, 'epsg', 2627, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2628, 'epsg', 2628, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E', '+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2629, 'epsg', 2629, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2630, 'epsg', 2630, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E', '+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2631, 'epsg', 2631, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2632, 'epsg', 2632, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E', '+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2633, 'epsg', 2633, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2634, 'epsg', 2634, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E', '+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2635, 'epsg', 2635, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2636, 'epsg', 2636, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E', '+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2637, 'epsg', 2637, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2638, 'epsg', 2638, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W', '+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2639, 'epsg', 2639, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2640, 'epsg', 2640, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W', '+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2641, 'epsg', 2641, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 7', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2642, 'epsg', 2642, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 8', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2643, 'epsg', 2643, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 9', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2644, 'epsg', 2644, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 10', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2645, 'epsg', 2645, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 11', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2646, 'epsg', 2646, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 12', '+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2647, 'epsg', 2647, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2648, 'epsg', 2648, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2649, 'epsg', 2649, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2650, 'epsg', 2650, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 16', '+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2651, 'epsg', 2651, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 17', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2652, 'epsg', 2652, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2653, 'epsg', 2653, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2654, 'epsg', 2654, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 20', '+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2655, 'epsg', 2655, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 21', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2656, 'epsg', 2656, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 22', '+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2657, 'epsg', 2657, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 23', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2658, 'epsg', 2658, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 24', '+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2659, 'epsg', 2659, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 25', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2660, 'epsg', 2660, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 26', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2661, 'epsg', 2661, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 27', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2662, 'epsg', 2662, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 28', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2663, 'epsg', 2663, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 29', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2664, 'epsg', 2664, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 30', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2665, 'epsg', 2665, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 31', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2666, 'epsg', 2666, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 32', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2667, 'epsg', 2667, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 33', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2668, 'epsg', 2668, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 34', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2669, 'epsg', 2669, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 35', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2670, 'epsg', 2670, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 36', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2671, 'epsg', 2671, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 37', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2672, 'epsg', 2672, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 38', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2673, 'epsg', 2673, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 39', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2674, 'epsg', 2674, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 40', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2675, 'epsg', 2675, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 41', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2676, 'epsg', 2676, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 42', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2677, 'epsg', 2677, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 43', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2678, 'epsg', 2678, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 44', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2679, 'epsg', 2679, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 45', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2680, 'epsg', 2680, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 46', '+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2681, 'epsg', 2681, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 47', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2682, 'epsg', 2682, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 48', '+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2683, 'epsg', 2683, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 49', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2684, 'epsg', 2684, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 50', '+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2685, 'epsg', 2685, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 51', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2686, 'epsg', 2686, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 52', '+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2687, 'epsg', 2687, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 53', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2688, 'epsg', 2688, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 54', '+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2689, 'epsg', 2689, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 55', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2690, 'epsg', 2690, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 56', '+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2691, 'epsg', 2691, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 57', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2692, 'epsg', 2692, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 58', '+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2693, 'epsg', 2693, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 59', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2694, 'epsg', 2694, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2695, 'epsg', 2695, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 61', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2696, 'epsg', 2696, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 62', '+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2697, 'epsg', 2697, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 63', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2698, 'epsg', 2698, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 64', '+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2699, 'epsg', 2699, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2700, 'epsg', 2700, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2701, 'epsg', 2701, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2702, 'epsg', 2702, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2703, 'epsg', 2703, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2704, 'epsg', 2704, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E', '+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2705, 'epsg', 2705, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2706, 'epsg', 2706, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E', '+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2707, 'epsg', 2707, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2708, 'epsg', 2708, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E', '+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2709, 'epsg', 2709, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2710, 'epsg', 2710, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E', '+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2711, 'epsg', 2711, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2712, 'epsg', 2712, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E', '+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2713, 'epsg', 2713, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2714, 'epsg', 2714, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E', '+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2715, 'epsg', 2715, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2716, 'epsg', 2716, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E', '+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2717, 'epsg', 2717, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2718, 'epsg', 2718, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E', '+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2719, 'epsg', 2719, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2720, 'epsg', 2720, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E', '+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2721, 'epsg', 2721, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2722, 'epsg', 2722, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E', '+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2723, 'epsg', 2723, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2724, 'epsg', 2724, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E', '+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2725, 'epsg', 2725, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2726, 'epsg', 2726, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E', '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2727, 'epsg', 2727, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2728, 'epsg', 2728, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E', '+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2729, 'epsg', 2729, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2730, 'epsg', 2730, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E', '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2731, 'epsg', 2731, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2732, 'epsg', 2732, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E', '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2733, 'epsg', 2733, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2734, 'epsg', 2734, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E', '+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2735, 'epsg', 2735, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2736, 'epsg', 2736, 'Tete / UTM zone 36S', '+proj=utm +zone=36 +south +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2737, 'epsg', 2737, 'Tete / UTM zone 37S', '+proj=utm +zone=37 +south +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2738, 'epsg', 2738, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E', '+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2739, 'epsg', 2739, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2740, 'epsg', 2740, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E', '+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2741, 'epsg', 2741, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2742, 'epsg', 2742, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E', '+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2743, 'epsg', 2743, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2744, 'epsg', 2744, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E', '+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2745, 'epsg', 2745, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2746, 'epsg', 2746, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E', '+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2747, 'epsg', 2747, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2748, 'epsg', 2748, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E', '+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2749, 'epsg', 2749, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2750, 'epsg', 2750, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E', '+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2751, 'epsg', 2751, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2752, 'epsg', 2752, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E', '+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2753, 'epsg', 2753, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2754, 'epsg', 2754, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E', '+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2755, 'epsg', 2755, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2756, 'epsg', 2756, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W', '+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2757, 'epsg', 2757, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2758, 'epsg', 2758, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W', '+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2759, 'epsg', 2759, 'NAD83(HARN) / Alabama East', '+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2760, 'epsg', 2760, 'NAD83(HARN) / Alabama West', '+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2761, 'epsg', 2761, 'NAD83(HARN) / Arizona East', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2762, 'epsg', 2762, 'NAD83(HARN) / Arizona Central', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2763, 'epsg', 2763, 'NAD83(HARN) / Arizona West', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2764, 'epsg', 2764, 'NAD83(HARN) / Arkansas North', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2765, 'epsg', 2765, 'NAD83(HARN) / Arkansas South', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2766, 'epsg', 2766, 'NAD83(HARN) / California zone 1', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2767, 'epsg', 2767, 'NAD83(HARN) / California zone 2', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2768, 'epsg', 2768, 'NAD83(HARN) / California zone 3', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2769, 'epsg', 2769, 'NAD83(HARN) / California zone 4', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2770, 'epsg', 2770, 'NAD83(HARN) / California zone 5', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2771, 'epsg', 2771, 'NAD83(HARN) / California zone 6', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2772, 'epsg', 2772, 'NAD83(HARN) / Colorado North', '+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2773, 'epsg', 2773, 'NAD83(HARN) / Colorado Central', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2774, 'epsg', 2774, 'NAD83(HARN) / Colorado South', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2775, 'epsg', 2775, 'NAD83(HARN) / Connecticut', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2776, 'epsg', 2776, 'NAD83(HARN) / Delaware', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2777, 'epsg', 2777, 'NAD83(HARN) / Florida East', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2778, 'epsg', 2778, 'NAD83(HARN) / Florida West', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2779, 'epsg', 2779, 'NAD83(HARN) / Florida North', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2780, 'epsg', 2780, 'NAD83(HARN) / Georgia East', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2781, 'epsg', 2781, 'NAD83(HARN) / Georgia West', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2782, 'epsg', 2782, 'NAD83(HARN) / Hawaii zone 1', '+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2783, 'epsg', 2783, 'NAD83(HARN) / Hawaii zone 2', '+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2784, 'epsg', 2784, 'NAD83(HARN) / Hawaii zone 3', '+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2785, 'epsg', 2785, 'NAD83(HARN) / Hawaii zone 4', '+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2786, 'epsg', 2786, 'NAD83(HARN) / Hawaii zone 5', '+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2787, 'epsg', 2787, 'NAD83(HARN) / Idaho East', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2788, 'epsg', 2788, 'NAD83(HARN) / Idaho Central', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2789, 'epsg', 2789, 'NAD83(HARN) / Idaho West', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2790, 'epsg', 2790, 'NAD83(HARN) / Illinois East', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2791, 'epsg', 2791, 'NAD83(HARN) / Illinois West', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2792, 'epsg', 2792, 'NAD83(HARN) / Indiana East', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2793, 'epsg', 2793, 'NAD83(HARN) / Indiana West', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2794, 'epsg', 2794, 'NAD83(HARN) / Iowa North', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2795, 'epsg', 2795, 'NAD83(HARN) / Iowa South', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2796, 'epsg', 2796, 'NAD83(HARN) / Kansas North', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2797, 'epsg', 2797, 'NAD83(HARN) / Kansas South', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2798, 'epsg', 2798, 'NAD83(HARN) / Kentucky North', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2799, 'epsg', 2799, 'NAD83(HARN) / Kentucky South', '+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2800, 'epsg', 2800, 'NAD83(HARN) / Louisiana North', '+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2801, 'epsg', 2801, 'NAD83(HARN) / Louisiana South', '+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2802, 'epsg', 2802, 'NAD83(HARN) / Maine East', '+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2803, 'epsg', 2803, 'NAD83(HARN) / Maine West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2804, 'epsg', 2804, 'NAD83(HARN) / Maryland', '+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2805, 'epsg', 2805, 'NAD83(HARN) / Massachusetts Mainland', '+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2806, 'epsg', 2806, 'NAD83(HARN) / Massachusetts Island', '+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2807, 'epsg', 2807, 'NAD83(HARN) / Michigan North', '+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2808, 'epsg', 2808, 'NAD83(HARN) / Michigan Central', '+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2809, 'epsg', 2809, 'NAD83(HARN) / Michigan South', '+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2810, 'epsg', 2810, 'NAD83(HARN) / Minnesota North', '+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2811, 'epsg', 2811, 'NAD83(HARN) / Minnesota Central', '+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2812, 'epsg', 2812, 'NAD83(HARN) / Minnesota South', '+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2813, 'epsg', 2813, 'NAD83(HARN) / Mississippi East', '+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2814, 'epsg', 2814, 'NAD83(HARN) / Mississippi West', '+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2815, 'epsg', 2815, 'NAD83(HARN) / Missouri East', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2816, 'epsg', 2816, 'NAD83(HARN) / Missouri Central', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2817, 'epsg', 2817, 'NAD83(HARN) / Missouri West', '+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2818, 'epsg', 2818, 'NAD83(HARN) / Montana', '+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2819, 'epsg', 2819, 'NAD83(HARN) / Nebraska', '+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2820, 'epsg', 2820, 'NAD83(HARN) / Nevada East', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2821, 'epsg', 2821, 'NAD83(HARN) / Nevada Central', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2822, 'epsg', 2822, 'NAD83(HARN) / Nevada West', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2823, 'epsg', 2823, 'NAD83(HARN) / New Hampshire', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2824, 'epsg', 2824, 'NAD83(HARN) / New Jersey', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2825, 'epsg', 2825, 'NAD83(HARN) / New Mexico East', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2826, 'epsg', 2826, 'NAD83(HARN) / New Mexico Central', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2827, 'epsg', 2827, 'NAD83(HARN) / New Mexico West', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2828, 'epsg', 2828, 'NAD83(HARN) / New York East', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2829, 'epsg', 2829, 'NAD83(HARN) / New York Central', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2830, 'epsg', 2830, 'NAD83(HARN) / New York West', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2831, 'epsg', 2831, 'NAD83(HARN) / New York Long Island', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2832, 'epsg', 2832, 'NAD83(HARN) / North Dakota North', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2833, 'epsg', 2833, 'NAD83(HARN) / North Dakota South', '+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2834, 'epsg', 2834, 'NAD83(HARN) / Ohio North', '+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2835, 'epsg', 2835, 'NAD83(HARN) / Ohio South', '+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2836, 'epsg', 2836, 'NAD83(HARN) / Oklahoma North', '+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2837, 'epsg', 2837, 'NAD83(HARN) / Oklahoma South', '+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2838, 'epsg', 2838, 'NAD83(HARN) / Oregon North', '+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2839, 'epsg', 2839, 'NAD83(HARN) / Oregon South', '+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2840, 'epsg', 2840, 'NAD83(HARN) / Rhode Island', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2841, 'epsg', 2841, 'NAD83(HARN) / South Dakota North', '+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2842, 'epsg', 2842, 'NAD83(HARN) / South Dakota South', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2843, 'epsg', 2843, 'NAD83(HARN) / Tennessee', '+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2844, 'epsg', 2844, 'NAD83(HARN) / Texas North', '+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2845, 'epsg', 2845, 'NAD83(HARN) / Texas North Central', '+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2846, 'epsg', 2846, 'NAD83(HARN) / Texas Central', '+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2847, 'epsg', 2847, 'NAD83(HARN) / Texas South Central', '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2848, 'epsg', 2848, 'NAD83(HARN) / Texas South', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2849, 'epsg', 2849, 'NAD83(HARN) / Utah North', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2850, 'epsg', 2850, 'NAD83(HARN) / Utah Central', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2851, 'epsg', 2851, 'NAD83(HARN) / Utah South', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2852, 'epsg', 2852, 'NAD83(HARN) / Vermont', '+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2853, 'epsg', 2853, 'NAD83(HARN) / Virginia North', '+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2854, 'epsg', 2854, 'NAD83(HARN) / Virginia South', '+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2855, 'epsg', 2855, 'NAD83(HARN) / Washington North', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2856, 'epsg', 2856, 'NAD83(HARN) / Washington South', '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2857, 'epsg', 2857, 'NAD83(HARN) / West Virginia North', '+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2858, 'epsg', 2858, 'NAD83(HARN) / West Virginia South', '+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2859, 'epsg', 2859, 'NAD83(HARN) / Wisconsin North', '+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2860, 'epsg', 2860, 'NAD83(HARN) / Wisconsin Central', '+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2861, 'epsg', 2861, 'NAD83(HARN) / Wisconsin South', '+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2862, 'epsg', 2862, 'NAD83(HARN) / Wyoming East', '+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2863, 'epsg', 2863, 'NAD83(HARN) / Wyoming East Central', '+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2864, 'epsg', 2864, 'NAD83(HARN) / Wyoming West Central', '+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2865, 'epsg', 2865, 'NAD83(HARN) / Wyoming West', '+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2866, 'epsg', 2866, 'NAD83(HARN) / Puerto Rico & Virgin Is.', '+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2867, 'epsg', 2867, 'NAD83(HARN) / Arizona East (ft)', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2868, 'epsg', 2868, 'NAD83(HARN) / Arizona Central (ft)', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2869, 'epsg', 2869, 'NAD83(HARN) / Arizona West (ft)', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2870, 'epsg', 2870, 'NAD83(HARN) / California zone 1 (ftUS)', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2871, 'epsg', 2871, 'NAD83(HARN) / California zone 2 (ftUS)', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2872, 'epsg', 2872, 'NAD83(HARN) / California zone 3 (ftUS)', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2873, 'epsg', 2873, 'NAD83(HARN) / California zone 4 (ftUS)', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2874, 'epsg', 2874, 'NAD83(HARN) / California zone 5 (ftUS)', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2875, 'epsg', 2875, 'NAD83(HARN) / California zone 6 (ftUS)', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2876, 'epsg', 2876, 'NAD83(HARN) / Colorado North (ftUS)', '+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2877, 'epsg', 2877, 'NAD83(HARN) / Colorado Central (ftUS)', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2878, 'epsg', 2878, 'NAD83(HARN) / Colorado South (ftUS)', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2879, 'epsg', 2879, 'NAD83(HARN) / Connecticut (ftUS)', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2880, 'epsg', 2880, 'NAD83(HARN) / Delaware (ftUS)', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2881, 'epsg', 2881, 'NAD83(HARN) / Florida East (ftUS)', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2882, 'epsg', 2882, 'NAD83(HARN) / Florida West (ftUS)', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2883, 'epsg', 2883, 'NAD83(HARN) / Florida North (ftUS)', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2884, 'epsg', 2884, 'NAD83(HARN) / Georgia East (ftUS)', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2885, 'epsg', 2885, 'NAD83(HARN) / Georgia West (ftUS)', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2886, 'epsg', 2886, 'NAD83(HARN) / Idaho East (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2887, 'epsg', 2887, 'NAD83(HARN) / Idaho Central (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2888, 'epsg', 2888, 'NAD83(HARN) / Idaho West (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2889, 'epsg', 2889, 'NAD83(HARN) / Indiana East (ftUS) (deprecated)', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2890, 'epsg', 2890, 'NAD83(HARN) / Indiana West (ftUS) (deprecated)', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2891, 'epsg', 2891, 'NAD83(HARN) / Kentucky North (ftUS)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2892, 'epsg', 2892, 'NAD83(HARN) / Kentucky South (ftUS)', '+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2893, 'epsg', 2893, 'NAD83(HARN) / Maryland (ftUS)', '+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2894, 'epsg', 2894, 'NAD83(HARN) / Massachusetts Mainland (ftUS)', '+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2895, 'epsg', 2895, 'NAD83(HARN) / Massachusetts Island (ftUS)', '+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2896, 'epsg', 2896, 'NAD83(HARN) / Michigan North (ft)', '+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2897, 'epsg', 2897, 'NAD83(HARN) / Michigan Central (ft)', '+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2898, 'epsg', 2898, 'NAD83(HARN) / Michigan South (ft)', '+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2899, 'epsg', 2899, 'NAD83(HARN) / Mississippi East (ftUS)', '+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2900, 'epsg', 2900, 'NAD83(HARN) / Mississippi West (ftUS)', '+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2901, 'epsg', 2901, 'NAD83(HARN) / Montana (ft)', '+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2902, 'epsg', 2902, 'NAD83(HARN) / New Mexico East (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2903, 'epsg', 2903, 'NAD83(HARN) / New Mexico Central (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2904, 'epsg', 2904, 'NAD83(HARN) / New Mexico West (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2905, 'epsg', 2905, 'NAD83(HARN) / New York East (ftUS)', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2906, 'epsg', 2906, 'NAD83(HARN) / New York Central (ftUS)', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2907, 'epsg', 2907, 'NAD83(HARN) / New York West (ftUS)', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2908, 'epsg', 2908, 'NAD83(HARN) / New York Long Island (ftUS)', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2909, 'epsg', 2909, 'NAD83(HARN) / North Dakota North (ft)', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2910, 'epsg', 2910, 'NAD83(HARN) / North Dakota South (ft)', '+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2911, 'epsg', 2911, 'NAD83(HARN) / Oklahoma North (ftUS)', '+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2912, 'epsg', 2912, 'NAD83(HARN) / Oklahoma South (ftUS)', '+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2913, 'epsg', 2913, 'NAD83(HARN) / Oregon North (ft)', '+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2914, 'epsg', 2914, 'NAD83(HARN) / Oregon South (ft)', '+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2915, 'epsg', 2915, 'NAD83(HARN) / Tennessee (ftUS)', '+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2916, 'epsg', 2916, 'NAD83(HARN) / Texas North (ftUS)', '+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2917, 'epsg', 2917, 'NAD83(HARN) / Texas North Central (ftUS)', '+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2918, 'epsg', 2918, 'NAD83(HARN) / Texas Central (ftUS)', '+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2919, 'epsg', 2919, 'NAD83(HARN) / Texas South Central (ftUS)', '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2920, 'epsg', 2920, 'NAD83(HARN) / Texas South (ftUS)', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2921, 'epsg', 2921, 'NAD83(HARN) / Utah North (ft)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2922, 'epsg', 2922, 'NAD83(HARN) / Utah Central (ft)', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2923, 'epsg', 2923, 'NAD83(HARN) / Utah South (ft)', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2924, 'epsg', 2924, 'NAD83(HARN) / Virginia North (ftUS)', '+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2925, 'epsg', 2925, 'NAD83(HARN) / Virginia South (ftUS)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2926, 'epsg', 2926, 'NAD83(HARN) / Washington North (ftUS)', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2927, 'epsg', 2927, 'NAD83(HARN) / Washington South (ftUS)', '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2928, 'epsg', 2928, 'NAD83(HARN) / Wisconsin North (ftUS)', '+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2929, 'epsg', 2929, 'NAD83(HARN) / Wisconsin Central (ftUS)', '+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2930, 'epsg', 2930, 'NAD83(HARN) / Wisconsin South (ftUS)', '+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2931, 'epsg', 2931, 'Beduaram / TM 13 NE', '+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2932, 'epsg', 2932, 'QND95 / Qatar National Grid', '+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2933, 'epsg', 2933, 'Segara / UTM zone 50S', '+proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2934, 'epsg', 2934, 'Segara (Jakarta) / NEIEZ (deprecated)', '+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2935, 'epsg', 2935, 'Pulkovo 1942 / CS63 zone A1', '+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2936, 'epsg', 2936, 'Pulkovo 1942 / CS63 zone A2', '+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2937, 'epsg', 2937, 'Pulkovo 1942 / CS63 zone A3', '+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2938, 'epsg', 2938, 'Pulkovo 1942 / CS63 zone A4', '+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2939, 'epsg', 2939, 'Pulkovo 1942 / CS63 zone K2', '+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2940, 'epsg', 2940, 'Pulkovo 1942 / CS63 zone K3', '+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2941, 'epsg', 2941, 'Pulkovo 1942 / CS63 zone K4', '+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2942, 'epsg', 2942, 'Porto Santo / UTM zone 28N', '+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2943, 'epsg', 2943, 'Selvagem Grande / UTM zone 28N', '+proj=utm +zone=28 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2944, 'epsg', 2944, 'NAD83(CSRS) / SCoPQ zone 2', '+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2945, 'epsg', 2945, 'NAD83(CSRS) / MTM zone 3', '+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2946, 'epsg', 2946, 'NAD83(CSRS) / MTM zone 4', '+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2947, 'epsg', 2947, 'NAD83(CSRS) / MTM zone 5', '+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2948, 'epsg', 2948, 'NAD83(CSRS) / MTM zone 6', '+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2949, 'epsg', 2949, 'NAD83(CSRS) / MTM zone 7', '+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2950, 'epsg', 2950, 'NAD83(CSRS) / MTM zone 8', '+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2951, 'epsg', 2951, 'NAD83(CSRS) / MTM zone 9', '+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2952, 'epsg', 2952, 'NAD83(CSRS) / MTM zone 10', '+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2953, 'epsg', 2953, 'NAD83(CSRS) / New Brunswick Stereo', '+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2954, 'epsg', 2954, 'NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)', '+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2955, 'epsg', 2955, 'NAD83(CSRS) / UTM zone 11N', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2956, 'epsg', 2956, 'NAD83(CSRS) / UTM zone 12N', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2957, 'epsg', 2957, 'NAD83(CSRS) / UTM zone 13N', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2958, 'epsg', 2958, 'NAD83(CSRS) / UTM zone 17N', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2959, 'epsg', 2959, 'NAD83(CSRS) / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2960, 'epsg', 2960, 'NAD83(CSRS) / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2961, 'epsg', 2961, 'NAD83(CSRS) / UTM zone 20N', '+proj=utm +zone=20 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2962, 'epsg', 2962, 'NAD83(CSRS) / UTM zone 21N', '+proj=utm +zone=21 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2964, 'epsg', 2964, 'NAD27 / Alaska Albers', '+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2965, 'epsg', 2965, 'NAD83 / Indiana East (ftUS)', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2966, 'epsg', 2966, 'NAD83 / Indiana West (ftUS)', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2967, 'epsg', 2967, 'NAD83(HARN) / Indiana East (ftUS)', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2968, 'epsg', 2968, 'NAD83(HARN) / Indiana West (ftUS)', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2969, 'epsg', 2969, 'Fort Marigot / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2970, 'epsg', 2970, 'Guadeloupe 1948 / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2971, 'epsg', 2971, 'CSG67 / UTM zone 22N', '+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2972, 'epsg', 2972, 'RGFG95 / UTM zone 22N', '+proj=utm +zone=22 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2973, 'epsg', 2973, 'Martinique 1938 / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2975, 'epsg', 2975, 'RGR92 / UTM zone 40S', '+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2976, 'epsg', 2976, 'Tahiti 52 / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2977, 'epsg', 2977, 'Tahaa 54 / UTM zone 5S', '+proj=utm +zone=5 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2978, 'epsg', 2978, 'IGN72 Nuku Hiva / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2979, 'epsg', 2979, 'K0 1949 / UTM zone 42S (deprecated)', '+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2980, 'epsg', 2980, 'Combani 1950 / UTM zone 38S', '+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2981, 'epsg', 2981, 'IGN56 Lifou / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2982, 'epsg', 2982, 'IGN72 Grand Terre / UTM zone 58S (deprecated)', '+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2983, 'epsg', 2983, 'ST87 Ouvea / UTM zone 58S (deprecated)', '+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2984, 'epsg', 2984, 'RGNC 1991 / Lambert New Caledonia (deprecated)', '+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2987, 'epsg', 2987, 'Saint Pierre et Miquelon 1950 / UTM zone 21N', '+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2988, 'epsg', 2988, 'MOP78 / UTM zone 1S', '+proj=utm +zone=1 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2989, 'epsg', 2989, 'RRAF 1991 / UTM zone 20N', '+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2990, 'epsg', 2990, 'Reunion 1947 / TM Reunion (deprecated)', '+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2991, 'epsg', 2991, 'NAD83 / Oregon Lambert', '+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2992, 'epsg', 2992, 'NAD83 / Oregon Lambert (ft)', '+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2993, 'epsg', 2993, 'NAD83(HARN) / Oregon Lambert', '+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2994, 'epsg', 2994, 'NAD83(HARN) / Oregon Lambert (ft)', '+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2995, 'epsg', 2995, 'IGN53 Mare / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2996, 'epsg', 2996, 'ST84 Ile des Pins / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2997, 'epsg', 2997, 'ST71 Belep / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2998, 'epsg', 2998, 'NEA74 Noumea / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (2999, 'epsg', 2999, 'Grand Comoros / UTM zone 38S', '+proj=utm +zone=38 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3000, 'epsg', 3000, 'Segara / NEIEZ', '+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3001, 'epsg', 3001, 'Batavia / NEIEZ', '+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3002, 'epsg', 3002, 'Makassar / NEIEZ', '+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3003, 'epsg', 3003, 'Monte Mario / Italy zone 1', '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3004, 'epsg', 3004, 'Monte Mario / Italy zone 2', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3005, 'epsg', 3005, 'NAD83 / BC Albers', '+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3006, 'epsg', 3006, 'SWEREF99 TM', '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3007, 'epsg', 3007, 'SWEREF99 12 00', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3008, 'epsg', 3008, 'SWEREF99 13 30', '+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3009, 'epsg', 3009, 'SWEREF99 15 00', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3010, 'epsg', 3010, 'SWEREF99 16 30', '+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3011, 'epsg', 3011, 'SWEREF99 18 00', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3012, 'epsg', 3012, 'SWEREF99 14 15', '+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3013, 'epsg', 3013, 'SWEREF99 15 45', '+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3014, 'epsg', 3014, 'SWEREF99 17 15', '+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3015, 'epsg', 3015, 'SWEREF99 18 45', '+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3016, 'epsg', 3016, 'SWEREF99 20 15', '+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3017, 'epsg', 3017, 'SWEREF99 21 45', '+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3018, 'epsg', 3018, 'SWEREF99 23 15', '+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3019, 'epsg', 3019, 'RT90 7.5 gon V', '+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3020, 'epsg', 3020, 'RT90 5 gon V', '+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3021, 'epsg', 3021, 'RT90 2.5 gon V', '+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3022, 'epsg', 3022, 'RT90 0 gon', '+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3023, 'epsg', 3023, 'RT90 2.5 gon O', '+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3024, 'epsg', 3024, 'RT90 5 gon O', '+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3025, 'epsg', 3025, 'RT38 7.5 gon V', '+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3026, 'epsg', 3026, 'RT38 5 gon V', '+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3027, 'epsg', 3027, 'RT38 2.5 gon V', '+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3028, 'epsg', 3028, 'RT38 0 gon', '+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3029, 'epsg', 3029, 'RT38 2.5 gon O', '+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3030, 'epsg', 3030, 'RT38 5 gon O', '+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3031, 'epsg', 3031, 'WGS 84 / Antarctic Polar Stereographic', '+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3032, 'epsg', 3032, 'WGS 84 / Australian Antarctic Polar Stereographic', '+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3033, 'epsg', 3033, 'WGS 84 / Australian Antarctic Lambert', '+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3034, 'epsg', 3034, 'ETRS89 / ETRS-LCC', '+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3035, 'epsg', 3035, 'ETRS89 / ETRS-LAEA', '+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3036, 'epsg', 3036, 'Moznet / UTM zone 36S', '+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3037, 'epsg', 3037, 'Moznet / UTM zone 37S', '+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3038, 'epsg', 3038, 'ETRS89 / ETRS-TM26', '+proj=utm +zone=26 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3039, 'epsg', 3039, 'ETRS89 / ETRS-TM27', '+proj=utm +zone=27 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3040, 'epsg', 3040, 'ETRS89 / ETRS-TM28', '+proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3041, 'epsg', 3041, 'ETRS89 / ETRS-TM29', '+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3042, 'epsg', 3042, 'ETRS89 / ETRS-TM30', '+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3043, 'epsg', 3043, 'ETRS89 / ETRS-TM31', '+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3044, 'epsg', 3044, 'ETRS89 / ETRS-TM32', '+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3045, 'epsg', 3045, 'ETRS89 / ETRS-TM33', '+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3046, 'epsg', 3046, 'ETRS89 / ETRS-TM34', '+proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3047, 'epsg', 3047, 'ETRS89 / ETRS-TM35', '+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3048, 'epsg', 3048, 'ETRS89 / ETRS-TM36', '+proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3049, 'epsg', 3049, 'ETRS89 / ETRS-TM37', '+proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3050, 'epsg', 3050, 'ETRS89 / ETRS-TM38', '+proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3051, 'epsg', 3051, 'ETRS89 / ETRS-TM39', '+proj=utm +zone=39 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3054, 'epsg', 3054, 'Hjorsey 1955 / UTM zone 26N', '+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3055, 'epsg', 3055, 'Hjorsey 1955 / UTM zone 27N', '+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3056, 'epsg', 3056, 'Hjorsey 1955 / UTM zone 28N', '+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3057, 'epsg', 3057, 'ISN93 / Lambert 1993', '+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3058, 'epsg', 3058, 'Helle 1954 / Jan Mayen Grid', '+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,32.3934,-153.257,-96.2266,16.805 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3059, 'epsg', 3059, 'LKS92 / Latvia TM', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3060, 'epsg', 3060, 'IGN72 Grande Terre / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3061, 'epsg', 3061, 'Porto Santo 1995 / UTM zone 28N', '+proj=utm +zone=28 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3062, 'epsg', 3062, 'Azores Oriental 1995 / UTM zone 26N', '+proj=utm +zone=26 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3063, 'epsg', 3063, 'Azores Central 1995 / UTM zone 26N', '+proj=utm +zone=26 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3064, 'epsg', 3064, 'IGM95 / UTM zone 32N', '+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3065, 'epsg', 3065, 'IGM95 / UTM zone 33N', '+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3066, 'epsg', 3066, 'ED50 / Jordan TM', '+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3067, 'epsg', 3067, 'ETRS89 / ETRS-TM35FIN', '+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3068, 'epsg', 3068, 'DHDN / Soldner Berlin', '+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3069, 'epsg', 3069, 'NAD27 / Wisconsin Transverse Mercator', '+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3070, 'epsg', 3070, 'NAD83 / Wisconsin Transverse Mercator', '+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3071, 'epsg', 3071, 'NAD83(HARN) / Wisconsin Transverse Mercator', '+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3072, 'epsg', 3072, 'NAD83 / Maine CS2000 East', '+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3073, 'epsg', 3073, 'NAD83 / Maine CS2000 Central (deprecated)', '+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3074, 'epsg', 3074, 'NAD83 / Maine CS2000 West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3075, 'epsg', 3075, 'NAD83(HARN) / Maine CS2000 East', '+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3076, 'epsg', 3076, 'NAD83(HARN) / Maine CS2000 Central (deprecated)', '+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3077, 'epsg', 3077, 'NAD83(HARN) / Maine CS2000 West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3078, 'epsg', 3078, 'NAD83 / Michigan Oblique Mercator', '+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3079, 'epsg', 3079, 'NAD83(HARN) / Michigan Oblique Mercator', '+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3080, 'epsg', 3080, 'NAD27 / Shackleford', '+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3081, 'epsg', 3081, 'NAD83 / Texas State Mapping System', '+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3082, 'epsg', 3082, 'NAD83 / Texas Centric Lambert Conformal', '+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3083, 'epsg', 3083, 'NAD83 / Texas Centric Albers Equal Area', '+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3084, 'epsg', 3084, 'NAD83(HARN) / Texas Centric Lambert Conformal', '+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3085, 'epsg', 3085, 'NAD83(HARN) / Texas Centric Albers Equal Area', '+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3086, 'epsg', 3086, 'NAD83 / Florida GDL Albers', '+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3087, 'epsg', 3087, 'NAD83(HARN) / Florida GDL Albers', '+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3088, 'epsg', 3088, 'NAD83 / Kentucky Single Zone', '+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3089, 'epsg', 3089, 'NAD83 / Kentucky Single Zone (ftUS)', '+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3090, 'epsg', 3090, 'NAD83(HARN) / Kentucky Single Zone', '+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3091, 'epsg', 3091, 'NAD83(HARN) / Kentucky Single Zone (ftUS)', '+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3092, 'epsg', 3092, 'Tokyo / UTM zone 51N', '+proj=utm +zone=51 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3093, 'epsg', 3093, 'Tokyo / UTM zone 52N', '+proj=utm +zone=52 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3094, 'epsg', 3094, 'Tokyo / UTM zone 53N', '+proj=utm +zone=53 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3095, 'epsg', 3095, 'Tokyo / UTM zone 54N', '+proj=utm +zone=54 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3096, 'epsg', 3096, 'Tokyo / UTM zone 55N', '+proj=utm +zone=55 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3097, 'epsg', 3097, 'JGD2000 / UTM zone 51N', '+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3098, 'epsg', 3098, 'JGD2000 / UTM zone 52N', '+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3099, 'epsg', 3099, 'JGD2000 / UTM zone 53N', '+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3100, 'epsg', 3100, 'JGD2000 / UTM zone 54N', '+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3101, 'epsg', 3101, 'JGD2000 / UTM zone 55N', '+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3102, 'epsg', 3102, 'American Samoa 1962 / American Samoa Lambert', '+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3103, 'epsg', 3103, 'Mauritania 1999 / UTM zone 28N (deprecated)', '+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3104, 'epsg', 3104, 'Mauritania 1999 / UTM zone 29N (deprecated)', '+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3105, 'epsg', 3105, 'Mauritania 1999 / UTM zone 30N (deprecated)', '+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3106, 'epsg', 3106, 'Gulshan 303 / Bangladesh Transverse Mercator', '+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3107, 'epsg', 3107, 'GDA94 / SA Lambert', '+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3108, 'epsg', 3108, 'ETRS89 / Guernsey Grid', '+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3109, 'epsg', 3109, 'ETRS89 / Jersey Transverse Mercator', '+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3110, 'epsg', 3110, 'AGD66 / Vicgrid66', '+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3111, 'epsg', 3111, 'GDA94 / Vicgrid94', '+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3112, 'epsg', 3112, 'GDA94 / Geoscience Australia Lambert', '+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3113, 'epsg', 3113, 'GDA94 / BCSG02', '+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3114, 'epsg', 3114, 'MAGNA-SIRGAS / Colombia Far West zone', '+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3115, 'epsg', 3115, 'MAGNA-SIRGAS / Colombia West zone', '+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3116, 'epsg', 3116, 'MAGNA-SIRGAS / Colombia Bogota zone', '+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3117, 'epsg', 3117, 'MAGNA-SIRGAS / Colombia East Central zone', '+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3118, 'epsg', 3118, 'MAGNA-SIRGAS / Colombia East zone', '+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3119, 'epsg', 3119, 'Douala 1948 / AEF west', '+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3120, 'epsg', 3120, 'Pulkovo 1942(58) / Poland zone I', '+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3121, 'epsg', 3121, 'PRS92 / Philippines zone 1', '+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3122, 'epsg', 3122, 'PRS92 / Philippines zone 2', '+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3123, 'epsg', 3123, 'PRS92 / Philippines zone 3', '+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3124, 'epsg', 3124, 'PRS92 / Philippines zone 4', '+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3125, 'epsg', 3125, 'PRS92 / Philippines zone 5', '+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3126, 'epsg', 3126, 'ETRS89 / ETRS-GK19FIN', '+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3127, 'epsg', 3127, 'ETRS89 / ETRS-GK20FIN', '+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3128, 'epsg', 3128, 'ETRS89 / ETRS-GK21FIN', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3129, 'epsg', 3129, 'ETRS89 / ETRS-GK22FIN', '+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3130, 'epsg', 3130, 'ETRS89 / ETRS-GK23FIN', '+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3131, 'epsg', 3131, 'ETRS89 / ETRS-GK24FIN', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3132, 'epsg', 3132, 'ETRS89 / ETRS-GK25FIN', '+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3133, 'epsg', 3133, 'ETRS89 / ETRS-GK26FIN', '+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3134, 'epsg', 3134, 'ETRS89 / ETRS-GK27FIN', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3135, 'epsg', 3135, 'ETRS89 / ETRS-GK28FIN', '+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3136, 'epsg', 3136, 'ETRS89 / ETRS-GK29FIN', '+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3137, 'epsg', 3137, 'ETRS89 / ETRS-GK30FIN', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3138, 'epsg', 3138, 'ETRS89 / ETRS-GK31FIN', '+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3140, 'epsg', 3140, 'Viti Levu 1912 / Viti Levu Grid', '+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3141, 'epsg', 3141, 'Fiji 1956 / UTM zone 60S', '+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3142, 'epsg', 3142, 'Fiji 1956 / UTM zone 1S', '+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3143, 'epsg', 3143, 'Fiji 1986 / Fiji Map Grid (deprecated)', '+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3146, 'epsg', 3146, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 6', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3147, 'epsg', 3147, 'Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3148, 'epsg', 3148, 'Indian 1960 / UTM zone 48N', '+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3149, 'epsg', 3149, 'Indian 1960 / UTM zone 49N', '+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3150, 'epsg', 3150, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 6', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3151, 'epsg', 3151, 'Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3152, 'epsg', 3152, 'ST74', '+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3153, 'epsg', 3153, 'NAD83(CSRS) / BC Albers', '+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3154, 'epsg', 3154, 'NAD83(CSRS) / UTM zone 7N', '+proj=utm +zone=7 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3155, 'epsg', 3155, 'NAD83(CSRS) / UTM zone 8N', '+proj=utm +zone=8 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3156, 'epsg', 3156, 'NAD83(CSRS) / UTM zone 9N', '+proj=utm +zone=9 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3157, 'epsg', 3157, 'NAD83(CSRS) / UTM zone 10N', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3158, 'epsg', 3158, 'NAD83(CSRS) / UTM zone 14N', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3159, 'epsg', 3159, 'NAD83(CSRS) / UTM zone 15N', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3160, 'epsg', 3160, 'NAD83(CSRS) / UTM zone 16N', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3161, 'epsg', 3161, 'NAD83 / Ontario MNR Lambert', '+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3162, 'epsg', 3162, 'NAD83(CSRS) / Ontario MNR Lambert', '+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3163, 'epsg', 3163, 'RGNC91-93 / Lambert New Caledonia', '+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3164, 'epsg', 3164, 'ST87 Ouvea / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3165, 'epsg', 3165, 'NEA74 Noumea / Noumea Lambert', '+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3166, 'epsg', 3166, 'NEA74 Noumea / Noumea Lambert 2', '+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3167, 'epsg', 3167, 'Kertau (RSO) / RSO Malaya (ch)', '+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3168, 'epsg', 3168, 'Kertau (RSO) / RSO Malaya (m)', '+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3169, 'epsg', 3169, 'RGNC91-93 / UTM zone 57S', '+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3170, 'epsg', 3170, 'RGNC91-93 / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3171, 'epsg', 3171, 'RGNC91-93 / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3172, 'epsg', 3172, 'IGN53 Mare / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3174, 'epsg', 3174, 'NAD83 / Great Lakes Albers', '+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3175, 'epsg', 3175, 'NAD83 / Great Lakes and St Lawrence Albers', '+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3176, 'epsg', 3176, 'Indian 1960 / TM 106 NE', '+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3177, 'epsg', 3177, 'LGD2006 / Libya TM', '+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3178, 'epsg', 3178, 'GR96 / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3179, 'epsg', 3179, 'GR96 / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3180, 'epsg', 3180, 'GR96 / UTM zone 20N', '+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3181, 'epsg', 3181, 'GR96 / UTM zone 21N', '+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3182, 'epsg', 3182, 'GR96 / UTM zone 22N', '+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3183, 'epsg', 3183, 'GR96 / UTM zone 23N', '+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3184, 'epsg', 3184, 'GR96 / UTM zone 24N', '+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3185, 'epsg', 3185, 'GR96 / UTM zone 25N', '+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3186, 'epsg', 3186, 'GR96 / UTM zone 26N', '+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3187, 'epsg', 3187, 'GR96 / UTM zone 27N', '+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3188, 'epsg', 3188, 'GR96 / UTM zone 28N', '+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3189, 'epsg', 3189, 'GR96 / UTM zone 29N', '+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3190, 'epsg', 3190, 'LGD2006 / Libya TM zone 5', '+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3191, 'epsg', 3191, 'LGD2006 / Libya TM zone 6', '+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3192, 'epsg', 3192, 'LGD2006 / Libya TM zone 7', '+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3193, 'epsg', 3193, 'LGD2006 / Libya TM zone 8', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3194, 'epsg', 3194, 'LGD2006 / Libya TM zone 9', '+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3195, 'epsg', 3195, 'LGD2006 / Libya TM zone 10', '+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3196, 'epsg', 3196, 'LGD2006 / Libya TM zone 11', '+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3197, 'epsg', 3197, 'LGD2006 / Libya TM zone 12', '+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3198, 'epsg', 3198, 'LGD2006 / Libya TM zone 13', '+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3199, 'epsg', 3199, 'LGD2006 / UTM zone 32N', '+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3200, 'epsg', 3200, 'FD58 / Iraq zone', '+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3201, 'epsg', 3201, 'LGD2006 / UTM zone 33N', '+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3202, 'epsg', 3202, 'LGD2006 / UTM zone 34N', '+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3203, 'epsg', 3203, 'LGD2006 / UTM zone 35N', '+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3204, 'epsg', 3204, 'WGS 84 / SCAR IMW SP19-20', '+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3205, 'epsg', 3205, 'WGS 84 / SCAR IMW SP21-22', '+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3206, 'epsg', 3206, 'WGS 84 / SCAR IMW SP23-24', '+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3207, 'epsg', 3207, 'WGS 84 / SCAR IMW SQ01-02', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3208, 'epsg', 3208, 'WGS 84 / SCAR IMW SQ19-20', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3209, 'epsg', 3209, 'WGS 84 / SCAR IMW SQ21-22', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3210, 'epsg', 3210, 'WGS 84 / SCAR IMW SQ37-38', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3211, 'epsg', 3211, 'WGS 84 / SCAR IMW SQ39-40', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3212, 'epsg', 3212, 'WGS 84 / SCAR IMW SQ41-42', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3213, 'epsg', 3213, 'WGS 84 / SCAR IMW SQ43-44', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3214, 'epsg', 3214, 'WGS 84 / SCAR IMW SQ45-46', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3215, 'epsg', 3215, 'WGS 84 / SCAR IMW SQ47-48', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3216, 'epsg', 3216, 'WGS 84 / SCAR IMW SQ49-50', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3217, 'epsg', 3217, 'WGS 84 / SCAR IMW SQ51-52', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3218, 'epsg', 3218, 'WGS 84 / SCAR IMW SQ53-54', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3219, 'epsg', 3219, 'WGS 84 / SCAR IMW SQ55-56', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3220, 'epsg', 3220, 'WGS 84 / SCAR IMW SQ57-58', '+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3221, 'epsg', 3221, 'WGS 84 / SCAR IMW SR13-14', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3222, 'epsg', 3222, 'WGS 84 / SCAR IMW SR15-16', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3223, 'epsg', 3223, 'WGS 84 / SCAR IMW SR17-18', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3224, 'epsg', 3224, 'WGS 84 / SCAR IMW SR19-20', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3225, 'epsg', 3225, 'WGS 84 / SCAR IMW SR27-28', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3226, 'epsg', 3226, 'WGS 84 / SCAR IMW SR29-30', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3227, 'epsg', 3227, 'WGS 84 / SCAR IMW SR31-32', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3228, 'epsg', 3228, 'WGS 84 / SCAR IMW SR33-34', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3229, 'epsg', 3229, 'WGS 84 / SCAR IMW SR35-36', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3230, 'epsg', 3230, 'WGS 84 / SCAR IMW SR37-38', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3231, 'epsg', 3231, 'WGS 84 / SCAR IMW SR39-40', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3232, 'epsg', 3232, 'WGS 84 / SCAR IMW SR41-42', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3233, 'epsg', 3233, 'WGS 84 / SCAR IMW SR43-44', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3234, 'epsg', 3234, 'WGS 84 / SCAR IMW SR45-46', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3235, 'epsg', 3235, 'WGS 84 / SCAR IMW SR47-48', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3236, 'epsg', 3236, 'WGS 84 / SCAR IMW SR49-50', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3237, 'epsg', 3237, 'WGS 84 / SCAR IMW SR51-52', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3238, 'epsg', 3238, 'WGS 84 / SCAR IMW SR53-54', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3239, 'epsg', 3239, 'WGS 84 / SCAR IMW SR55-56', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3240, 'epsg', 3240, 'WGS 84 / SCAR IMW SR57-58', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3241, 'epsg', 3241, 'WGS 84 / SCAR IMW SR59-60', '+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3242, 'epsg', 3242, 'WGS 84 / SCAR IMW SS04-06', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3243, 'epsg', 3243, 'WGS 84 / SCAR IMW SS07-09', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3244, 'epsg', 3244, 'WGS 84 / SCAR IMW SS10-12', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3245, 'epsg', 3245, 'WGS 84 / SCAR IMW SS13-15', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3246, 'epsg', 3246, 'WGS 84 / SCAR IMW SS16-18', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3247, 'epsg', 3247, 'WGS 84 / SCAR IMW SS19-21', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3248, 'epsg', 3248, 'WGS 84 / SCAR IMW SS25-27', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3249, 'epsg', 3249, 'WGS 84 / SCAR IMW SS28-30', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3250, 'epsg', 3250, 'WGS 84 / SCAR IMW SS31-33', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3251, 'epsg', 3251, 'WGS 84 / SCAR IMW SS34-36', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3252, 'epsg', 3252, 'WGS 84 / SCAR IMW SS37-39', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3253, 'epsg', 3253, 'WGS 84 / SCAR IMW SS40-42', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3254, 'epsg', 3254, 'WGS 84 / SCAR IMW SS43-45', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3255, 'epsg', 3255, 'WGS 84 / SCAR IMW SS46-48', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3256, 'epsg', 3256, 'WGS 84 / SCAR IMW SS49-51', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3257, 'epsg', 3257, 'WGS 84 / SCAR IMW SS52-54', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3258, 'epsg', 3258, 'WGS 84 / SCAR IMW SS55-57', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3259, 'epsg', 3259, 'WGS 84 / SCAR IMW SS58-60', '+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3260, 'epsg', 3260, 'WGS 84 / SCAR IMW ST01-04', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3261, 'epsg', 3261, 'WGS 84 / SCAR IMW ST05-08', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3262, 'epsg', 3262, 'WGS 84 / SCAR IMW ST09-12', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3263, 'epsg', 3263, 'WGS 84 / SCAR IMW ST13-16', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3264, 'epsg', 3264, 'WGS 84 / SCAR IMW ST17-20', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3265, 'epsg', 3265, 'WGS 84 / SCAR IMW ST21-24', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3266, 'epsg', 3266, 'WGS 84 / SCAR IMW ST25-28', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3267, 'epsg', 3267, 'WGS 84 / SCAR IMW ST29-32', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3268, 'epsg', 3268, 'WGS 84 / SCAR IMW ST33-36', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3269, 'epsg', 3269, 'WGS 84 / SCAR IMW ST37-40', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3270, 'epsg', 3270, 'WGS 84 / SCAR IMW ST41-44', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3271, 'epsg', 3271, 'WGS 84 / SCAR IMW ST45-48', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3272, 'epsg', 3272, 'WGS 84 / SCAR IMW ST49-52', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3273, 'epsg', 3273, 'WGS 84 / SCAR IMW ST53-56', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3274, 'epsg', 3274, 'WGS 84 / SCAR IMW ST57-60', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3275, 'epsg', 3275, 'WGS 84 / SCAR IMW SU01-05', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3276, 'epsg', 3276, 'WGS 84 / SCAR IMW SU06-10', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3277, 'epsg', 3277, 'WGS 84 / SCAR IMW SU11-15', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3278, 'epsg', 3278, 'WGS 84 / SCAR IMW SU16-20', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3279, 'epsg', 3279, 'WGS 84 / SCAR IMW SU21-25', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3280, 'epsg', 3280, 'WGS 84 / SCAR IMW SU26-30', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3281, 'epsg', 3281, 'WGS 84 / SCAR IMW SU31-35', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3282, 'epsg', 3282, 'WGS 84 / SCAR IMW SU36-40', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3283, 'epsg', 3283, 'WGS 84 / SCAR IMW SU41-45', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3284, 'epsg', 3284, 'WGS 84 / SCAR IMW SU46-50', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3285, 'epsg', 3285, 'WGS 84 / SCAR IMW SU51-55', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3286, 'epsg', 3286, 'WGS 84 / SCAR IMW SU56-60', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3287, 'epsg', 3287, 'WGS 84 / SCAR IMW SV01-10', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3288, 'epsg', 3288, 'WGS 84 / SCAR IMW SV11-20', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3289, 'epsg', 3289, 'WGS 84 / SCAR IMW SV21-30', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3290, 'epsg', 3290, 'WGS 84 / SCAR IMW SV31-40', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3291, 'epsg', 3291, 'WGS 84 / SCAR IMW SV41-50', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3292, 'epsg', 3292, 'WGS 84 / SCAR IMW SV51-60', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3293, 'epsg', 3293, 'WGS 84 / SCAR IMW SW01-60', '+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3294, 'epsg', 3294, 'WGS 84 / USGS Transantarctic Mountains', '+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3296, 'epsg', 3296, 'RGPF / UTM zone 5S', '+proj=utm +zone=5 +south +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3297, 'epsg', 3297, 'RGPF / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3298, 'epsg', 3298, 'RGPF / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3299, 'epsg', 3299, 'RGPF / UTM zone 8S', '+proj=utm +zone=8 +south +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3300, 'epsg', 3300, 'Estonian Coordinate System of 1992', '+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3301, 'epsg', 3301, 'Estonian Coordinate System of 1997', '+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3302, 'epsg', 3302, 'IGN63 Hiva Oa / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3303, 'epsg', 3303, 'Fatu Iva 72 / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3304, 'epsg', 3304, 'Tahiti 79 / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3305, 'epsg', 3305, 'Moorea 87 / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3306, 'epsg', 3306, 'Maupiti 83 / UTM zone 5S', '+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3307, 'epsg', 3307, 'Nakhl-e Ghanem / UTM zone 39N', '+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3308, 'epsg', 3308, 'GDA94 / NSW Lambert', '+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3309, 'epsg', 3309, 'NAD27 / California Albers', '+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3310, 'epsg', 3310, 'NAD83 / California Albers', '+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3311, 'epsg', 3311, 'NAD83(HARN) / California Albers', '+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3312, 'epsg', 3312, 'CSG67 / UTM zone 21N', '+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3313, 'epsg', 3313, 'RGFG95 / UTM zone 21N', '+proj=utm +zone=21 +ellps=GRS80 +towgs84=2,2,-2,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3314, 'epsg', 3314, 'Katanga 1955 / Katanga Lambert', '+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3315, 'epsg', 3315, 'Katanga 1955 / Katanga TM', '+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3316, 'epsg', 3316, 'Kasai 1953 / Congo TM zone 22', '+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3317, 'epsg', 3317, 'Kasai 1953 / Congo TM zone 24', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3318, 'epsg', 3318, 'IGC 1962 / Congo TM zone 12', '+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3319, 'epsg', 3319, 'IGC 1962 / Congo TM zone 14', '+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3320, 'epsg', 3320, 'IGC 1962 / Congo TM zone 16', '+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3321, 'epsg', 3321, 'IGC 1962 / Congo TM zone 18', '+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3322, 'epsg', 3322, 'IGC 1962 / Congo TM zone 20', '+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3323, 'epsg', 3323, 'IGC 1962 / Congo TM zone 22', '+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3324, 'epsg', 3324, 'IGC 1962 / Congo TM zone 24', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3325, 'epsg', 3325, 'IGC 1962 / Congo TM zone 26', '+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3326, 'epsg', 3326, 'IGC 1962 / Congo TM zone 28', '+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3327, 'epsg', 3327, 'IGC 1962 / Congo TM zone 30', '+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3328, 'epsg', 3328, 'Pulkovo 1942(58) / GUGiK-80', '+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3329, 'epsg', 3329, 'Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3330, 'epsg', 3330, 'Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3331, 'epsg', 3331, 'Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3332, 'epsg', 3332, 'Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3333, 'epsg', 3333, 'Pulkovo 1942(58) / Gauss-Kruger zone 3', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3334, 'epsg', 3334, 'Pulkovo 1942(58) / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3335, 'epsg', 3335, 'Pulkovo 1942(58) / Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3336, 'epsg', 3336, 'IGN 1962 Kerguelen / UTM zone 42S', '+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3337, 'epsg', 3337, 'Le Pouce 1934 / Mauritius Grid', '+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3338, 'epsg', 3338, 'NAD83 / Alaska Albers', '+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3339, 'epsg', 3339, 'IGCB 1955 / Congo TM zone 12', '+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3340, 'epsg', 3340, 'IGCB 1955 / Congo TM zone 14', '+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3341, 'epsg', 3341, 'IGCB 1955 / Congo TM zone 16', '+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3342, 'epsg', 3342, 'IGCB 1955 / UTM zone 33S', '+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3343, 'epsg', 3343, 'Mauritania 1999 / UTM zone 28N', '+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3344, 'epsg', 3344, 'Mauritania 1999 / UTM zone 29N', '+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3345, 'epsg', 3345, 'Mauritania 1999 / UTM zone 30N', '+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3346, 'epsg', 3346, 'LKS94 / Lithuania TM', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3347, 'epsg', 3347, 'NAD83 / Statistics Canada Lambert', '+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3348, 'epsg', 3348, 'NAD83(CSRS) / Statistics Canada Lambert', '+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3349, 'epsg', 3349, 'WGS 84 / PDC Mercator', '+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3350, 'epsg', 3350, 'Pulkovo 1942 / CS63 zone C0', '+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3351, 'epsg', 3351, 'Pulkovo 1942 / CS63 zone C1', '+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3352, 'epsg', 3352, 'Pulkovo 1942 / CS63 zone C2', '+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3353, 'epsg', 3353, 'Mhast (onshore) / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3354, 'epsg', 3354, 'Mhast (offshore) / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3355, 'epsg', 3355, 'Egypt Gulf of Suez S-650 TL / Red Belt', '+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3356, 'epsg', 3356, 'Grand Cayman 1959 / UTM zone 17N', '+proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3357, 'epsg', 3357, 'Little Cayman 1961 / UTM zone 17N', '+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3358, 'epsg', 3358, 'NAD83(HARN) / North Carolina', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3359, 'epsg', 3359, 'NAD83(HARN) / North Carolina (ftUS) (deprecated)', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3360, 'epsg', 3360, 'NAD83(HARN) / South Carolina', '+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3361, 'epsg', 3361, 'NAD83(HARN) / South Carolina (ft)', '+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3362, 'epsg', 3362, 'NAD83(HARN) / Pennsylvania North', '+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3363, 'epsg', 3363, 'NAD83(HARN) / Pennsylvania North (ftUS)', '+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3364, 'epsg', 3364, 'NAD83(HARN) / Pennsylvania South', '+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3365, 'epsg', 3365, 'NAD83(HARN) / Pennsylvania South (ftUS)', '+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3366, 'epsg', 3366, 'Hong Kong 1963 Grid System (deprecated)', '+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3367, 'epsg', 3367, 'IGN Astro 1960 / UTM zone 28N', '+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3368, 'epsg', 3368, 'IGN Astro 1960 / UTM zone 29N', '+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3369, 'epsg', 3369, 'IGN Astro 1960 / UTM zone 30N', '+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3370, 'epsg', 3370, 'NAD27 / UTM zone 59N', '+proj=utm +zone=59 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3371, 'epsg', 3371, 'NAD27 / UTM zone 60N', '+proj=utm +zone=60 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3372, 'epsg', 3372, 'NAD83 / UTM zone 59N', '+proj=utm +zone=59 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3373, 'epsg', 3373, 'NAD83 / UTM zone 60N', '+proj=utm +zone=60 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3374, 'epsg', 3374, 'FD54 / UTM zone 29N', '+proj=utm +zone=29 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3375, 'epsg', 3375, 'GDM2000 / Peninsula RSO', '+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3376, 'epsg', 3376, 'GDM2000 / East Malaysia BRSO', '+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3377, 'epsg', 3377, 'GDM2000 / Johor Grid', '+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3378, 'epsg', 3378, 'GDM2000 / Sembilan and Melaka Grid', '+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3379, 'epsg', 3379, 'GDM2000 / PahangGrid', '+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3380, 'epsg', 3380, 'GDM2000 / Selangor Grid', '+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3381, 'epsg', 3381, 'GDM2000 / Terengganu Grid', '+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3382, 'epsg', 3382, 'GDM2000 / Pinang Grid', '+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3383, 'epsg', 3383, 'GDM2000 / Kedah and Perlis Grid', '+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3384, 'epsg', 3384, 'GDM2000 / Perak Grid', '+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3385, 'epsg', 3385, 'GDM2000 / Kelantan Grid', '+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3386, 'epsg', 3386, 'KKJ / Finland zone 0', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3387, 'epsg', 3387, 'KKJ / Finland zone 5', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3388, 'epsg', 3388, 'Pulkovo 1942 / Caspian Sea Mercator', '+proj=merc +lon_0=51 +k=1 +x_0=0 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3389, 'epsg', 3389, 'Pulkovo 1942 / 3-degree Gauss-Kruger zone 60', '+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3390, 'epsg', 3390, 'Pulkovo 1995 / 3-degree Gauss-Kruger zone 60', '+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3391, 'epsg', 3391, 'Karbala 1979 (Polservice) / UTM zone 37N', '+proj=utm +zone=37 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3392, 'epsg', 3392, 'Karbala 1979 (Polservice) / UTM zone 38N', '+proj=utm +zone=38 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3393, 'epsg', 3393, 'Karbala 1979 (Polservice) / UTM zone 39N', '+proj=utm +zone=39 +ellps=clrk80 +towgs84=84.1,-320.1,218.7,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3394, 'epsg', 3394, 'Nahrwan 1934 / Iraq zone', '+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3395, 'epsg', 3395, 'WGS 84 / World Mercator', '+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3396, 'epsg', 3396, 'PD/83 / Gauss-Kruger zone 3', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3397, 'epsg', 3397, 'PD/83 / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3398, 'epsg', 3398, 'RD/83 / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3399, 'epsg', 3399, 'RD/83 / Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3400, 'epsg', 3400, 'NAD83 / Alberta 10-TM (Forest)', '+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3401, 'epsg', 3401, 'NAD83 / Alberta 10-TM (Resource)', '+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3402, 'epsg', 3402, 'NAD83(CSRS) / Alberta 10-TM (Forest)', '+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3403, 'epsg', 3403, 'NAD83(CSRS) / Alberta 10-TM (Resource)', '+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3404, 'epsg', 3404, 'NAD83(HARN) / North Carolina (ftUS)', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3405, 'epsg', 3405, 'VN-2000 / UTM zone 48N', '+proj=utm +zone=48 +ellps=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3406, 'epsg', 3406, 'VN-2000 / UTM zone 49N', '+proj=utm +zone=49 +ellps=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3407, 'epsg', 3407, 'Hong Kong 1963 Grid System', '+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3408, 'epsg', 3408, 'NSIDC EASE-Grid North', '+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3409, 'epsg', 3409, 'NSIDC EASE-Grid South', '+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3411, 'epsg', 3411, 'NSIDC Sea Ice Polar Stereographic North', '+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3412, 'epsg', 3412, 'NSIDC Sea Ice Polar Stereographic South', '+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3413, 'epsg', 3413, 'WGS 84 / NSIDC Sea Ice Polar Stereographic North', '+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3414, 'epsg', 3414, 'SVY21 / Singapore TM', '+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3415, 'epsg', 3415, 'WGS 72BE / South China Sea Lambert', '+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3416, 'epsg', 3416, 'ETRS89 / Austria Lambert', '+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3417, 'epsg', 3417, 'NAD83 / Iowa North (ft US)', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3418, 'epsg', 3418, 'NAD83 / Iowa South (ft US)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3419, 'epsg', 3419, 'NAD83 / Kansas North (ft US)', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3420, 'epsg', 3420, 'NAD83 / Kansas South (ft US)', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3421, 'epsg', 3421, 'NAD83 / Nevada East (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3422, 'epsg', 3422, 'NAD83 / Nevada Central (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3423, 'epsg', 3423, 'NAD83 / Nevada West (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3424, 'epsg', 3424, 'NAD83 / New Jersey (ft US)', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3425, 'epsg', 3425, 'NAD83(HARN) / Iowa North (ft US)', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3426, 'epsg', 3426, 'NAD83(HARN) / Iowa South (ft US)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3427, 'epsg', 3427, 'NAD83(HARN) / Kansas North (ft US)', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3428, 'epsg', 3428, 'NAD83(HARN) / Kansas South (ft US)', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3429, 'epsg', 3429, 'NAD83(HARN) / Nevada East (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3430, 'epsg', 3430, 'NAD83(HARN) / Nevada Central (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3431, 'epsg', 3431, 'NAD83(HARN) / Nevada West (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3432, 'epsg', 3432, 'NAD83(HARN) / New Jersey (ft US)', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3433, 'epsg', 3433, 'NAD83 / Arkansas North (ftUS)', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3434, 'epsg', 3434, 'NAD83 / Arkansas South (ftUS)', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3435, 'epsg', 3435, 'NAD83 / Illinois East (ftUS)', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3436, 'epsg', 3436, 'NAD83 / Illinois West (ftUS)', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3437, 'epsg', 3437, 'NAD83 / New Hampshire (ftUS)', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3438, 'epsg', 3438, 'NAD83 / Rhode Island (ftUS)', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3439, 'epsg', 3439, 'PSD93 / UTM zone 39N', '+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3440, 'epsg', 3440, 'PSD93 / UTM zone 40N', '+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3441, 'epsg', 3441, 'NAD83(HARN) / Arkansas North (ftUS)', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3442, 'epsg', 3442, 'NAD83(HARN) / Arkansas South (ftUS)', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3443, 'epsg', 3443, 'NAD83(HARN) / Illinois East (ftUS)', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3444, 'epsg', 3444, 'NAD83(HARN) / Illinois West (ftUS)', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3445, 'epsg', 3445, 'NAD83(HARN) / New Hampshire (ftUS)', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3446, 'epsg', 3446, 'NAD83(HARN) / Rhode Island (ftUS)', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3447, 'epsg', 3447, 'ETRS89 / Belgian Lambert 2005', '+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3448, 'epsg', 3448, 'JAD2001 / Jamaica Metric Grid', '+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3449, 'epsg', 3449, 'JAD2001 / UTM zone 17N', '+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3450, 'epsg', 3450, 'JAD2001 / UTM zone 18N', '+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3451, 'epsg', 3451, 'NAD83 / Louisiana North (ftUS)', '+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3452, 'epsg', 3452, 'NAD83 / Louisiana South (ftUS)', '+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3453, 'epsg', 3453, 'NAD83 / Louisiana Offshore (ftUS)', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3454, 'epsg', 3454, 'NAD83 / South Dakota North (ftUS)', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3455, 'epsg', 3455, 'NAD83 / South Dakota South (ftUS)', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3456, 'epsg', 3456, 'NAD83(HARN) / Louisiana North (ftUS)', '+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3457, 'epsg', 3457, 'NAD83(HARN) / Louisiana South (ftUS)', '+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3458, 'epsg', 3458, 'NAD83(HARN) / South Dakota North (ftUS)', '+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3459, 'epsg', 3459, 'NAD83(HARN) / South Dakota South (ftUS)', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3460, 'epsg', 3460, 'Fiji 1986 / Fiji Map Grid', '+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3461, 'epsg', 3461, 'Dabola 1981 / UTM zone 28N', '+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3462, 'epsg', 3462, 'Dabola 1981 / UTM zone 29N', '+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3463, 'epsg', 3463, 'NAD83 / Maine CS2000 Central', '+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3464, 'epsg', 3464, 'NAD83(HARN) / Maine CS2000 Central', '+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3465, 'epsg', 3465, 'NAD83(NSRS2007) / Alabama East', '+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3466, 'epsg', 3466, 'NAD83(NSRS2007) / Alabama West', '+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3467, 'epsg', 3467, 'NAD83(NSRS2007) / Alaska Albers', '+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3468, 'epsg', 3468, 'NAD83(NSRS2007) / Alaska zone 1', '+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3469, 'epsg', 3469, 'NAD83(NSRS2007) / Alaska zone 2', '+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3470, 'epsg', 3470, 'NAD83(NSRS2007) / Alaska zone 3', '+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3471, 'epsg', 3471, 'NAD83(NSRS2007) / Alaska zone 4', '+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3472, 'epsg', 3472, 'NAD83(NSRS2007) / Alaska zone 5', '+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3473, 'epsg', 3473, 'NAD83(NSRS2007) / Alaska zone 6', '+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3474, 'epsg', 3474, 'NAD83(NSRS2007) / Alaska zone 7', '+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3475, 'epsg', 3475, 'NAD83(NSRS2007) / Alaska zone 8', '+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3476, 'epsg', 3476, 'NAD83(NSRS2007) / Alaska zone 9', '+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3477, 'epsg', 3477, 'NAD83(NSRS2007) / Alaska zone 10', '+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3478, 'epsg', 3478, 'NAD83(NSRS2007) / Arizona Central', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3479, 'epsg', 3479, 'NAD83(NSRS2007) / Arizona Central (ft)', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3480, 'epsg', 3480, 'NAD83(NSRS2007) / Arizona East', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3481, 'epsg', 3481, 'NAD83(NSRS2007) / Arizona East (ft)', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3482, 'epsg', 3482, 'NAD83(NSRS2007) / Arizona West', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3483, 'epsg', 3483, 'NAD83(NSRS2007) / Arizona West (ft)', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3484, 'epsg', 3484, 'NAD83(NSRS2007) / Arkansas North', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3485, 'epsg', 3485, 'NAD83(NSRS2007) / Arkansas North (ftUS)', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3486, 'epsg', 3486, 'NAD83(NSRS2007) / Arkansas South', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3487, 'epsg', 3487, 'NAD83(NSRS2007) / Arkansas South (ftUS)', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3488, 'epsg', 3488, 'NAD83(NSRS2007) / California Albers', '+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3489, 'epsg', 3489, 'NAD83(NSRS2007) / California zone 1', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3490, 'epsg', 3490, 'NAD83(NSRS2007) / California zone 1 (ftUS)', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3491, 'epsg', 3491, 'NAD83(NSRS2007) / California zone 2', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3492, 'epsg', 3492, 'NAD83(NSRS2007) / California zone 2 (ftUS)', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3493, 'epsg', 3493, 'NAD83(NSRS2007) / California zone 3', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3494, 'epsg', 3494, 'NAD83(NSRS2007) / California zone 3 (ftUS)', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3495, 'epsg', 3495, 'NAD83(NSRS2007) / California zone 4', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3496, 'epsg', 3496, 'NAD83(NSRS2007) / California zone 4 (ftUS)', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3497, 'epsg', 3497, 'NAD83(NSRS2007) / California zone 5', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3498, 'epsg', 3498, 'NAD83(NSRS2007) / California zone 5 (ftUS)', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3499, 'epsg', 3499, 'NAD83(NSRS2007) / California zone 6', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3500, 'epsg', 3500, 'NAD83(NSRS2007) / California zone 6 (ftUS)', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3501, 'epsg', 3501, 'NAD83(NSRS2007) / Colorado Central', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3502, 'epsg', 3502, 'NAD83(NSRS2007) / Colorado Central (ftUS)', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3503, 'epsg', 3503, 'NAD83(NSRS2007) / Colorado North', '+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3504, 'epsg', 3504, 'NAD83(NSRS2007) / Colorado North (ftUS)', '+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3505, 'epsg', 3505, 'NAD83(NSRS2007) / Colorado South', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3506, 'epsg', 3506, 'NAD83(NSRS2007) / Colorado South (ftUS)', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3507, 'epsg', 3507, 'NAD83(NSRS2007) / Connecticut', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3508, 'epsg', 3508, 'NAD83(NSRS2007) / Connecticut (ftUS)', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3509, 'epsg', 3509, 'NAD83(NSRS2007) / Delaware', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3510, 'epsg', 3510, 'NAD83(NSRS2007) / Delaware (ftUS)', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3511, 'epsg', 3511, 'NAD83(NSRS2007) / Florida East', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3512, 'epsg', 3512, 'NAD83(NSRS2007) / Florida East (ftUS)', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3513, 'epsg', 3513, 'NAD83(NSRS2007) / Florida GDL Albers', '+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3514, 'epsg', 3514, 'NAD83(NSRS2007) / Florida North', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3515, 'epsg', 3515, 'NAD83(NSRS2007) / Florida North (ftUS)', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3516, 'epsg', 3516, 'NAD83(NSRS2007) / Florida West', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3517, 'epsg', 3517, 'NAD83(NSRS2007) / Florida West (ftUS)', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3518, 'epsg', 3518, 'NAD83(NSRS2007) / Georgia East', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3519, 'epsg', 3519, 'NAD83(NSRS2007) / Georgia East (ftUS)', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3520, 'epsg', 3520, 'NAD83(NSRS2007) / Georgia West', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3521, 'epsg', 3521, 'NAD83(NSRS2007) / Georgia West (ftUS)', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3522, 'epsg', 3522, 'NAD83(NSRS2007) / Idaho Central', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3523, 'epsg', 3523, 'NAD83(NSRS2007) / Idaho Central (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3524, 'epsg', 3524, 'NAD83(NSRS2007) / Idaho East', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3525, 'epsg', 3525, 'NAD83(NSRS2007) / Idaho East (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3526, 'epsg', 3526, 'NAD83(NSRS2007) / Idaho West', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3527, 'epsg', 3527, 'NAD83(NSRS2007) / Idaho West (ftUS)', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3528, 'epsg', 3528, 'NAD83(NSRS2007) / Illinois East', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3529, 'epsg', 3529, 'NAD83(NSRS2007) / Illinois East (ftUS)', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3530, 'epsg', 3530, 'NAD83(NSRS2007) / Illinois West', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3531, 'epsg', 3531, 'NAD83(NSRS2007) / Illinois West (ftUS)', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3532, 'epsg', 3532, 'NAD83(NSRS2007) / Indiana East', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3533, 'epsg', 3533, 'NAD83(NSRS2007) / Indiana East (ftUS)', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3534, 'epsg', 3534, 'NAD83(NSRS2007) / Indiana West', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3535, 'epsg', 3535, 'NAD83(NSRS2007) / Indiana West (ftUS)', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3536, 'epsg', 3536, 'NAD83(NSRS2007) / Iowa North', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3537, 'epsg', 3537, 'NAD83(NSRS2007) / Iowa North (ft US)', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3538, 'epsg', 3538, 'NAD83(NSRS2007) / Iowa South', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3539, 'epsg', 3539, 'NAD83(NSRS2007) / Iowa South (ft US)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3540, 'epsg', 3540, 'NAD83(NSRS2007) / Kansas North', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3541, 'epsg', 3541, 'NAD83(NSRS2007) / Kansas North (ft US)', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3542, 'epsg', 3542, 'NAD83(NSRS2007) / Kansas South', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3543, 'epsg', 3543, 'NAD83(NSRS2007) / Kansas South (ft US)', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3544, 'epsg', 3544, 'NAD83(NSRS2007) / Kentucky North', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3545, 'epsg', 3545, 'NAD83(NSRS2007) / Kentucky North (ftUS)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3546, 'epsg', 3546, 'NAD83(NSRS2007) / Kentucky Single Zone', '+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3547, 'epsg', 3547, 'NAD83(NSRS2007) / Kentucky Single Zone (ftUS)', '+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3548, 'epsg', 3548, 'NAD83(NSRS2007) / Kentucky South', '+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3549, 'epsg', 3549, 'NAD83(NSRS2007) / Kentucky South (ftUS)', '+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3550, 'epsg', 3550, 'NAD83(NSRS2007) / Louisiana North', '+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3551, 'epsg', 3551, 'NAD83(NSRS2007) / Louisiana North (ftUS)', '+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3552, 'epsg', 3552, 'NAD83(NSRS2007) / Louisiana South', '+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3553, 'epsg', 3553, 'NAD83(NSRS2007) / Louisiana South (ftUS)', '+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3554, 'epsg', 3554, 'NAD83(NSRS2007) / Maine CS2000 Central', '+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3555, 'epsg', 3555, 'NAD83(NSRS2007) / Maine CS2000 East', '+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3556, 'epsg', 3556, 'NAD83(NSRS2007) / Maine CS2000 West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3557, 'epsg', 3557, 'NAD83(NSRS2007) / Maine East', '+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3558, 'epsg', 3558, 'NAD83(NSRS2007) / Maine West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3559, 'epsg', 3559, 'NAD83(NSRS2007) / Maryland', '+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3560, 'epsg', 3560, 'NAD83 / Utah North (ftUS)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3561, 'epsg', 3561, 'Old Hawaiian / Hawaii zone 1', '+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3562, 'epsg', 3562, 'Old Hawaiian / Hawaii zone 2', '+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3563, 'epsg', 3563, 'Old Hawaiian / Hawaii zone 3', '+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3564, 'epsg', 3564, 'Old Hawaiian / Hawaii zone 4', '+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3565, 'epsg', 3565, 'Old Hawaiian / Hawaii zone 5', '+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3566, 'epsg', 3566, 'NAD83 / Utah Central (ftUS)', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3567, 'epsg', 3567, 'NAD83 / Utah South (ftUS)', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3568, 'epsg', 3568, 'NAD83(HARN) / Utah North (ftUS)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3569, 'epsg', 3569, 'NAD83(HARN) / Utah Central (ftUS)', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3570, 'epsg', 3570, 'NAD83(HARN) / Utah South (ftUS)', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3571, 'epsg', 3571, 'WGS 84 / North Pole LAEA Bering Sea', '+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3572, 'epsg', 3572, 'WGS 84 / North Pole LAEA Alaska', '+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3573, 'epsg', 3573, 'WGS 84 / North Pole LAEA Canada', '+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3574, 'epsg', 3574, 'WGS 84 / North Pole LAEA Atlantic', '+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3575, 'epsg', 3575, 'WGS 84 / North Pole LAEA Europe', '+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3576, 'epsg', 3576, 'WGS 84 / North Pole LAEA Russia', '+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3577, 'epsg', 3577, 'GDA94 / Australian Albers', '+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3578, 'epsg', 3578, 'NAD83 / Yukon Albers', '+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3579, 'epsg', 3579, 'NAD83(CSRS) / Yukon Albers', '+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3580, 'epsg', 3580, 'NAD83 / NWT Lambert', '+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3581, 'epsg', 3581, 'NAD83(CSRS) / NWT Lambert', '+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3582, 'epsg', 3582, 'NAD83(NSRS2007) / Maryland (ftUS)', '+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3583, 'epsg', 3583, 'NAD83(NSRS2007) / Massachusetts Island', '+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3584, 'epsg', 3584, 'NAD83(NSRS2007) / Massachusetts Island (ftUS)', '+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3585, 'epsg', 3585, 'NAD83(NSRS2007) / Massachusetts Mainland', '+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3586, 'epsg', 3586, 'NAD83(NSRS2007) / Massachusetts Mainland (ftUS)', '+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3587, 'epsg', 3587, 'NAD83(NSRS2007) / Michigan Central', '+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3588, 'epsg', 3588, 'NAD83(NSRS2007) / Michigan Central (ft)', '+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3589, 'epsg', 3589, 'NAD83(NSRS2007) / Michigan North', '+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3590, 'epsg', 3590, 'NAD83(NSRS2007) / Michigan North (ft)', '+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3591, 'epsg', 3591, 'NAD83(NSRS2007) / Michigan Oblique Mercator', '+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3592, 'epsg', 3592, 'NAD83(NSRS2007) / Michigan South', '+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3593, 'epsg', 3593, 'NAD83(NSRS2007) / Michigan South (ft)', '+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3594, 'epsg', 3594, 'NAD83(NSRS2007) / Minnesota Central', '+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3595, 'epsg', 3595, 'NAD83(NSRS2007) / Minnesota North', '+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3596, 'epsg', 3596, 'NAD83(NSRS2007) / Minnesota South', '+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3597, 'epsg', 3597, 'NAD83(NSRS2007) / Mississippi East', '+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3598, 'epsg', 3598, 'NAD83(NSRS2007) / Mississippi East (ftUS)', '+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3599, 'epsg', 3599, 'NAD83(NSRS2007) / Mississippi West', '+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3600, 'epsg', 3600, 'NAD83(NSRS2007) / Mississippi West (ftUS)', '+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3601, 'epsg', 3601, 'NAD83(NSRS2007) / Missouri Central', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3602, 'epsg', 3602, 'NAD83(NSRS2007) / Missouri East', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3603, 'epsg', 3603, 'NAD83(NSRS2007) / Missouri West', '+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3604, 'epsg', 3604, 'NAD83(NSRS2007) / Montana', '+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3605, 'epsg', 3605, 'NAD83(NSRS2007) / Montana (ft)', '+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3606, 'epsg', 3606, 'NAD83(NSRS2007) / Nebraska', '+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3607, 'epsg', 3607, 'NAD83(NSRS2007) / Nevada Central', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3608, 'epsg', 3608, 'NAD83(NSRS2007) / Nevada Central (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3609, 'epsg', 3609, 'NAD83(NSRS2007) / Nevada East', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3610, 'epsg', 3610, 'NAD83(NSRS2007) / Nevada East (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3611, 'epsg', 3611, 'NAD83(NSRS2007) / Nevada West', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3612, 'epsg', 3612, 'NAD83(NSRS2007) / Nevada West (ft US)', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3613, 'epsg', 3613, 'NAD83(NSRS2007) / New Hampshire', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3614, 'epsg', 3614, 'NAD83(NSRS2007) / New Hampshire (ftUS)', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3615, 'epsg', 3615, 'NAD83(NSRS2007) / New Jersey', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3616, 'epsg', 3616, 'NAD83(NSRS2007) / New Jersey (ft US)', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3617, 'epsg', 3617, 'NAD83(NSRS2007) / New Mexico Central', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3618, 'epsg', 3618, 'NAD83(NSRS2007) / New Mexico Central (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3619, 'epsg', 3619, 'NAD83(NSRS2007) / New Mexico East', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3620, 'epsg', 3620, 'NAD83(NSRS2007) / New Mexico East (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3621, 'epsg', 3621, 'NAD83(NSRS2007) / New Mexico West', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3622, 'epsg', 3622, 'NAD83(NSRS2007) / New Mexico West (ftUS)', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3623, 'epsg', 3623, 'NAD83(NSRS2007) / New York Central', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3624, 'epsg', 3624, 'NAD83(NSRS2007) / New York Central (ftUS)', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3625, 'epsg', 3625, 'NAD83(NSRS2007) / New York East', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3626, 'epsg', 3626, 'NAD83(NSRS2007) / New York East (ftUS)', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3627, 'epsg', 3627, 'NAD83(NSRS2007) / New York Long Island', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3628, 'epsg', 3628, 'NAD83(NSRS2007) / New York Long Island (ftUS)', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3629, 'epsg', 3629, 'NAD83(NSRS2007) / New York West', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3630, 'epsg', 3630, 'NAD83(NSRS2007) / New York West (ftUS)', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3631, 'epsg', 3631, 'NAD83(NSRS2007) / North Carolina', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3632, 'epsg', 3632, 'NAD83(NSRS2007) / North Carolina (ftUS)', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3633, 'epsg', 3633, 'NAD83(NSRS2007) / North Dakota North', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3634, 'epsg', 3634, 'NAD83(NSRS2007) / North Dakota North (ft)', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3635, 'epsg', 3635, 'NAD83(NSRS2007) / North Dakota South', '+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3636, 'epsg', 3636, 'NAD83(NSRS2007) / North Dakota South (ft)', '+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3637, 'epsg', 3637, 'NAD83(NSRS2007) / Ohio North', '+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3638, 'epsg', 3638, 'NAD83(NSRS2007) / Ohio South', '+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3639, 'epsg', 3639, 'NAD83(NSRS2007) / Oklahoma North', '+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3640, 'epsg', 3640, 'NAD83(NSRS2007) / Oklahoma North (ftUS)', '+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3641, 'epsg', 3641, 'NAD83(NSRS2007) / Oklahoma South', '+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3642, 'epsg', 3642, 'NAD83(NSRS2007) / Oklahoma South (ftUS)', '+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3643, 'epsg', 3643, 'NAD83(NSRS2007) / Oregon Lambert', '+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3644, 'epsg', 3644, 'NAD83(NSRS2007) / Oregon Lambert (ft)', '+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3645, 'epsg', 3645, 'NAD83(NSRS2007) / Oregon North', '+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3646, 'epsg', 3646, 'NAD83(NSRS2007) / Oregon North (ft)', '+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3647, 'epsg', 3647, 'NAD83(NSRS2007) / Oregon South', '+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3648, 'epsg', 3648, 'NAD83(NSRS2007) / Oregon South (ft)', '+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3649, 'epsg', 3649, 'NAD83(NSRS2007) / Pennsylvania North', '+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3650, 'epsg', 3650, 'NAD83(NSRS2007) / Pennsylvania North (ftUS)', '+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3651, 'epsg', 3651, 'NAD83(NSRS2007) / Pennsylvania South', '+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3652, 'epsg', 3652, 'NAD83(NSRS2007) / Pennsylvania South (ftUS)', '+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3653, 'epsg', 3653, 'NAD83(NSRS2007) / Rhode Island', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3654, 'epsg', 3654, 'NAD83(NSRS2007) / Rhode Island (ftUS)', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3655, 'epsg', 3655, 'NAD83(NSRS2007) / South Carolina', '+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3656, 'epsg', 3656, 'NAD83(NSRS2007) / South Carolina (ft)', '+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3657, 'epsg', 3657, 'NAD83(NSRS2007) / South Dakota North', '+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3658, 'epsg', 3658, 'NAD83(NSRS2007) / South Dakota North (ftUS)', '+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3659, 'epsg', 3659, 'NAD83(NSRS2007) / South Dakota South', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3660, 'epsg', 3660, 'NAD83(NSRS2007) / South Dakota South (ftUS)', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3661, 'epsg', 3661, 'NAD83(NSRS2007) / Tennessee', '+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3662, 'epsg', 3662, 'NAD83(NSRS2007) / Tennessee (ftUS)', '+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3663, 'epsg', 3663, 'NAD83(NSRS2007) / Texas Central', '+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3664, 'epsg', 3664, 'NAD83(NSRS2007) / Texas Central (ftUS)', '+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3665, 'epsg', 3665, 'NAD83(NSRS2007) / Texas Centric Albers Equal Area', '+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3666, 'epsg', 3666, 'NAD83(NSRS2007) / Texas Centric Lambert Conformal', '+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3667, 'epsg', 3667, 'NAD83(NSRS2007) / Texas North', '+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3668, 'epsg', 3668, 'NAD83(NSRS2007) / Texas North (ftUS)', '+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3669, 'epsg', 3669, 'NAD83(NSRS2007) / Texas North Central', '+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3670, 'epsg', 3670, 'NAD83(NSRS2007) / Texas North Central (ftUS)', '+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3671, 'epsg', 3671, 'NAD83(NSRS2007) / Texas South', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3672, 'epsg', 3672, 'NAD83(NSRS2007) / Texas South (ftUS)', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3673, 'epsg', 3673, 'NAD83(NSRS2007) / Texas South Central', '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3674, 'epsg', 3674, 'NAD83(NSRS2007) / Texas South Central (ftUS)', '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3675, 'epsg', 3675, 'NAD83(NSRS2007) / Utah Central', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3676, 'epsg', 3676, 'NAD83(NSRS2007) / Utah Central (ft)', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3677, 'epsg', 3677, 'NAD83(NSRS2007) / Utah Central (ftUS)', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3678, 'epsg', 3678, 'NAD83(NSRS2007) / Utah North', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3679, 'epsg', 3679, 'NAD83(NSRS2007) / Utah North (ft)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3680, 'epsg', 3680, 'NAD83(NSRS2007) / Utah North (ftUS)', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3681, 'epsg', 3681, 'NAD83(NSRS2007) / Utah South', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3682, 'epsg', 3682, 'NAD83(NSRS2007) / Utah South (ft)', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3683, 'epsg', 3683, 'NAD83(NSRS2007) / Utah South (ftUS)', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3684, 'epsg', 3684, 'NAD83(NSRS2007) / Vermont', '+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3685, 'epsg', 3685, 'NAD83(NSRS2007) / Virginia North', '+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3686, 'epsg', 3686, 'NAD83(NSRS2007) / Virginia North (ftUS)', '+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3687, 'epsg', 3687, 'NAD83(NSRS2007) / Virginia South', '+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3688, 'epsg', 3688, 'NAD83(NSRS2007) / Virginia South (ftUS)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3689, 'epsg', 3689, 'NAD83(NSRS2007) / Washington North', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3690, 'epsg', 3690, 'NAD83(NSRS2007) / Washington North (ftUS)', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3691, 'epsg', 3691, 'NAD83(NSRS2007) / Washington South', '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3692, 'epsg', 3692, 'NAD83(NSRS2007) / Washington South (ftUS)', '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3693, 'epsg', 3693, 'NAD83(NSRS2007) / West Virginia North', '+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3694, 'epsg', 3694, 'NAD83(NSRS2007) / West Virginia South', '+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3695, 'epsg', 3695, 'NAD83(NSRS2007) / Wisconsin Central', '+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3696, 'epsg', 3696, 'NAD83(NSRS2007) / Wisconsin Central (ftUS)', '+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3697, 'epsg', 3697, 'NAD83(NSRS2007) / Wisconsin North', '+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3698, 'epsg', 3698, 'NAD83(NSRS2007) / Wisconsin North (ftUS)', '+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3699, 'epsg', 3699, 'NAD83(NSRS2007) / Wisconsin South', '+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3700, 'epsg', 3700, 'NAD83(NSRS2007) / Wisconsin South (ftUS)', '+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3701, 'epsg', 3701, 'NAD83(NSRS2007) / Wisconsin Transverse Mercator', '+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3702, 'epsg', 3702, 'NAD83(NSRS2007) / Wyoming East', '+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3703, 'epsg', 3703, 'NAD83(NSRS2007) / Wyoming East Central', '+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3704, 'epsg', 3704, 'NAD83(NSRS2007) / Wyoming West Central', '+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3705, 'epsg', 3705, 'NAD83(NSRS2007) / Wyoming West', '+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3706, 'epsg', 3706, 'NAD83(NSRS2007) / UTM zone 59N', '+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3707, 'epsg', 3707, 'NAD83(NSRS2007) / UTM zone 60N', '+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3708, 'epsg', 3708, 'NAD83(NSRS2007) / UTM zone 1N', '+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3709, 'epsg', 3709, 'NAD83(NSRS2007) / UTM zone 2N', '+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3710, 'epsg', 3710, 'NAD83(NSRS2007) / UTM zone 3N', '+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3711, 'epsg', 3711, 'NAD83(NSRS2007) / UTM zone 4N', '+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3712, 'epsg', 3712, 'NAD83(NSRS2007) / UTM zone 5N', '+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3713, 'epsg', 3713, 'NAD83(NSRS2007) / UTM zone 6N', '+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3714, 'epsg', 3714, 'NAD83(NSRS2007) / UTM zone 7N', '+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3715, 'epsg', 3715, 'NAD83(NSRS2007) / UTM zone 8N', '+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3716, 'epsg', 3716, 'NAD83(NSRS2007) / UTM zone 9N', '+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3717, 'epsg', 3717, 'NAD83(NSRS2007) / UTM zone 10N', '+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3718, 'epsg', 3718, 'NAD83(NSRS2007) / UTM zone 11N', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3719, 'epsg', 3719, 'NAD83(NSRS2007) / UTM zone 12N', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3720, 'epsg', 3720, 'NAD83(NSRS2007) / UTM zone 13N', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3721, 'epsg', 3721, 'NAD83(NSRS2007) / UTM zone 14N', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3722, 'epsg', 3722, 'NAD83(NSRS2007) / UTM zone 15N', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3723, 'epsg', 3723, 'NAD83(NSRS2007) / UTM zone 16N', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3724, 'epsg', 3724, 'NAD83(NSRS2007) / UTM zone 17N', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3725, 'epsg', 3725, 'NAD83(NSRS2007) / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3726, 'epsg', 3726, 'NAD83(NSRS2007) / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3727, 'epsg', 3727, 'Reunion 1947 / TM Reunion', '+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3728, 'epsg', 3728, 'NAD83(NSRS2007) / Ohio North (ftUS)', '+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3729, 'epsg', 3729, 'NAD83(NSRS2007) / Ohio South (ftUS)', '+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3730, 'epsg', 3730, 'NAD83(NSRS2007) / Wyoming East (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3731, 'epsg', 3731, 'NAD83(NSRS2007) / Wyoming East Central (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3732, 'epsg', 3732, 'NAD83(NSRS2007) / Wyoming West Central (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3733, 'epsg', 3733, 'NAD83(NSRS2007) / Wyoming West (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3734, 'epsg', 3734, 'NAD83 / Ohio North (ftUS)', '+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3735, 'epsg', 3735, 'NAD83 / Ohio South (ftUS)', '+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3736, 'epsg', 3736, 'NAD83 / Wyoming East (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3737, 'epsg', 3737, 'NAD83 / Wyoming East Central (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3738, 'epsg', 3738, 'NAD83 / Wyoming West Central (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3739, 'epsg', 3739, 'NAD83 / Wyoming West (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3740, 'epsg', 3740, 'NAD83(HARN) / UTM zone 10N', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3741, 'epsg', 3741, 'NAD83(HARN) / UTM zone 11N', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3742, 'epsg', 3742, 'NAD83(HARN) / UTM zone 12N', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3743, 'epsg', 3743, 'NAD83(HARN) / UTM zone 13N', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3744, 'epsg', 3744, 'NAD83(HARN) / UTM zone 14N', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3745, 'epsg', 3745, 'NAD83(HARN) / UTM zone 15N', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3746, 'epsg', 3746, 'NAD83(HARN) / UTM zone 16N', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3747, 'epsg', 3747, 'NAD83(HARN) / UTM zone 17N', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3748, 'epsg', 3748, 'NAD83(HARN) / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3749, 'epsg', 3749, 'NAD83(HARN) / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3750, 'epsg', 3750, 'NAD83(HARN) / UTM zone 4N', '+proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3751, 'epsg', 3751, 'NAD83(HARN) / UTM zone 5N', '+proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3752, 'epsg', 3752, 'WGS 84 / Mercator 41', '+proj=merc +lon_0=100 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3753, 'epsg', 3753, 'NAD83(HARN) / Ohio North (ftUS)', '+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3754, 'epsg', 3754, 'NAD83(HARN) / Ohio South (ftUS)', '+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3755, 'epsg', 3755, 'NAD83(HARN) / Wyoming East (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3756, 'epsg', 3756, 'NAD83(HARN) / Wyoming East Central (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3757, 'epsg', 3757, 'NAD83(HARN) / Wyoming West Central (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3758, 'epsg', 3758, 'NAD83(HARN) / Wyoming West (ftUS)', '+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3759, 'epsg', 3759, 'NAD83 / Hawaii zone 3 (ftUS)', '+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3760, 'epsg', 3760, 'NAD83(HARN) / Hawaii zone 3 (ftUS)', '+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3761, 'epsg', 3761, 'NAD83(CSRS) / UTM zone 22N', '+proj=utm +zone=22 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3762, 'epsg', 3762, 'WGS 84 / South Georgia Lambert', '+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3920, 'epsg', 3920, 'Puerto Rico / UTM zone 20N', '+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3991, 'epsg', 3991, 'Puerto Rico State Plane CS of 1927', '+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (3992, 'epsg', 3992, 'Puerto Rico / St. Croix', '+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20004, 'epsg', 20004, 'Pulkovo 1995 / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20005, 'epsg', 20005, 'Pulkovo 1995 / Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20006, 'epsg', 20006, 'Pulkovo 1995 / Gauss-Kruger zone 6', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20007, 'epsg', 20007, 'Pulkovo 1995 / Gauss-Kruger zone 7', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20008, 'epsg', 20008, 'Pulkovo 1995 / Gauss-Kruger zone 8', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20009, 'epsg', 20009, 'Pulkovo 1995 / Gauss-Kruger zone 9', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20010, 'epsg', 20010, 'Pulkovo 1995 / Gauss-Kruger zone 10', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20011, 'epsg', 20011, 'Pulkovo 1995 / Gauss-Kruger zone 11', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20012, 'epsg', 20012, 'Pulkovo 1995 / Gauss-Kruger zone 12', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20013, 'epsg', 20013, 'Pulkovo 1995 / Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20014, 'epsg', 20014, 'Pulkovo 1995 / Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20015, 'epsg', 20015, 'Pulkovo 1995 / Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20016, 'epsg', 20016, 'Pulkovo 1995 / Gauss-Kruger zone 16', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20017, 'epsg', 20017, 'Pulkovo 1995 / Gauss-Kruger zone 17', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20018, 'epsg', 20018, 'Pulkovo 1995 / Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20019, 'epsg', 20019, 'Pulkovo 1995 / Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20020, 'epsg', 20020, 'Pulkovo 1995 / Gauss-Kruger zone 20', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20021, 'epsg', 20021, 'Pulkovo 1995 / Gauss-Kruger zone 21', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20022, 'epsg', 20022, 'Pulkovo 1995 / Gauss-Kruger zone 22', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20023, 'epsg', 20023, 'Pulkovo 1995 / Gauss-Kruger zone 23', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20024, 'epsg', 20024, 'Pulkovo 1995 / Gauss-Kruger zone 24', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20025, 'epsg', 20025, 'Pulkovo 1995 / Gauss-Kruger zone 25', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20026, 'epsg', 20026, 'Pulkovo 1995 / Gauss-Kruger zone 26', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20027, 'epsg', 20027, 'Pulkovo 1995 / Gauss-Kruger zone 27', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20028, 'epsg', 20028, 'Pulkovo 1995 / Gauss-Kruger zone 28', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20029, 'epsg', 20029, 'Pulkovo 1995 / Gauss-Kruger zone 29', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20030, 'epsg', 20030, 'Pulkovo 1995 / Gauss-Kruger zone 30', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20031, 'epsg', 20031, 'Pulkovo 1995 / Gauss-Kruger zone 31', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20032, 'epsg', 20032, 'Pulkovo 1995 / Gauss-Kruger zone 32', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20064, 'epsg', 20064, 'Pulkovo 1995 / Gauss-Kruger 4N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20065, 'epsg', 20065, 'Pulkovo 1995 / Gauss-Kruger 5N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20066, 'epsg', 20066, 'Pulkovo 1995 / Gauss-Kruger 6N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20067, 'epsg', 20067, 'Pulkovo 1995 / Gauss-Kruger 7N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20068, 'epsg', 20068, 'Pulkovo 1995 / Gauss-Kruger 8N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20069, 'epsg', 20069, 'Pulkovo 1995 / Gauss-Kruger 9N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20070, 'epsg', 20070, 'Pulkovo 1995 / Gauss-Kruger 10N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20071, 'epsg', 20071, 'Pulkovo 1995 / Gauss-Kruger 11N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20072, 'epsg', 20072, 'Pulkovo 1995 / Gauss-Kruger 12N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20073, 'epsg', 20073, 'Pulkovo 1995 / Gauss-Kruger 13N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20074, 'epsg', 20074, 'Pulkovo 1995 / Gauss-Kruger 14N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20075, 'epsg', 20075, 'Pulkovo 1995 / Gauss-Kruger 15N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20076, 'epsg', 20076, 'Pulkovo 1995 / Gauss-Kruger 16N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20077, 'epsg', 20077, 'Pulkovo 1995 / Gauss-Kruger 17N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20078, 'epsg', 20078, 'Pulkovo 1995 / Gauss-Kruger 18N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20079, 'epsg', 20079, 'Pulkovo 1995 / Gauss-Kruger 19N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20080, 'epsg', 20080, 'Pulkovo 1995 / Gauss-Kruger 20N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20081, 'epsg', 20081, 'Pulkovo 1995 / Gauss-Kruger 21N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20082, 'epsg', 20082, 'Pulkovo 1995 / Gauss-Kruger 22N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20083, 'epsg', 20083, 'Pulkovo 1995 / Gauss-Kruger 23N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20084, 'epsg', 20084, 'Pulkovo 1995 / Gauss-Kruger 24N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20085, 'epsg', 20085, 'Pulkovo 1995 / Gauss-Kruger 25N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20086, 'epsg', 20086, 'Pulkovo 1995 / Gauss-Kruger 26N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20087, 'epsg', 20087, 'Pulkovo 1995 / Gauss-Kruger 27N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20088, 'epsg', 20088, 'Pulkovo 1995 / Gauss-Kruger 28N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20089, 'epsg', 20089, 'Pulkovo 1995 / Gauss-Kruger 29N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20090, 'epsg', 20090, 'Pulkovo 1995 / Gauss-Kruger 30N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20091, 'epsg', 20091, 'Pulkovo 1995 / Gauss-Kruger 31N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20092, 'epsg', 20092, 'Pulkovo 1995 / Gauss-Kruger 32N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20135, 'epsg', 20135, 'Adindan / UTM zone 35N', '+proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20136, 'epsg', 20136, 'Adindan / UTM zone 36N', '+proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20137, 'epsg', 20137, 'Adindan / UTM zone 37N', '+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20138, 'epsg', 20138, 'Adindan / UTM zone 38N', '+proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20248, 'epsg', 20248, 'AGD66 / AMG zone 48', '+proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20249, 'epsg', 20249, 'AGD66 / AMG zone 49', '+proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20250, 'epsg', 20250, 'AGD66 / AMG zone 50', '+proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20251, 'epsg', 20251, 'AGD66 / AMG zone 51', '+proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20252, 'epsg', 20252, 'AGD66 / AMG zone 52', '+proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20253, 'epsg', 20253, 'AGD66 / AMG zone 53', '+proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20254, 'epsg', 20254, 'AGD66 / AMG zone 54', '+proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20255, 'epsg', 20255, 'AGD66 / AMG zone 55', '+proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20256, 'epsg', 20256, 'AGD66 / AMG zone 56', '+proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20257, 'epsg', 20257, 'AGD66 / AMG zone 57', '+proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20258, 'epsg', 20258, 'AGD66 / AMG zone 58', '+proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20348, 'epsg', 20348, 'AGD84 / AMG zone 48', '+proj=utm +zone=48 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20349, 'epsg', 20349, 'AGD84 / AMG zone 49', '+proj=utm +zone=49 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20350, 'epsg', 20350, 'AGD84 / AMG zone 50', '+proj=utm +zone=50 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20351, 'epsg', 20351, 'AGD84 / AMG zone 51', '+proj=utm +zone=51 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20352, 'epsg', 20352, 'AGD84 / AMG zone 52', '+proj=utm +zone=52 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20353, 'epsg', 20353, 'AGD84 / AMG zone 53', '+proj=utm +zone=53 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20354, 'epsg', 20354, 'AGD84 / AMG zone 54', '+proj=utm +zone=54 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20355, 'epsg', 20355, 'AGD84 / AMG zone 55', '+proj=utm +zone=55 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20356, 'epsg', 20356, 'AGD84 / AMG zone 56', '+proj=utm +zone=56 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20357, 'epsg', 20357, 'AGD84 / AMG zone 57', '+proj=utm +zone=57 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20358, 'epsg', 20358, 'AGD84 / AMG zone 58', '+proj=utm +zone=58 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20436, 'epsg', 20436, 'Ain el Abd / UTM zone 36N', '+proj=utm +zone=36 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20437, 'epsg', 20437, 'Ain el Abd / UTM zone 37N', '+proj=utm +zone=37 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20438, 'epsg', 20438, 'Ain el Abd / UTM zone 38N', '+proj=utm +zone=38 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20439, 'epsg', 20439, 'Ain el Abd / UTM zone 39N', '+proj=utm +zone=39 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20440, 'epsg', 20440, 'Ain el Abd / UTM zone 40N', '+proj=utm +zone=40 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20499, 'epsg', 20499, 'Ain el Abd / Bahrain Grid', '+proj=utm +zone=39 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20538, 'epsg', 20538, 'Afgooye / UTM zone 38N', '+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20539, 'epsg', 20539, 'Afgooye / UTM zone 39N', '+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20790, 'epsg', 20790, 'Lisbon (Lisbon)/Portuguese National Grid', '+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +pm=lisbon +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20791, 'epsg', 20791, 'Lisbon (Lisbon)/Portuguese Grid', '+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +pm=lisbon +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20822, 'epsg', 20822, 'Aratu / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20823, 'epsg', 20823, 'Aratu / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20824, 'epsg', 20824, 'Aratu / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20934, 'epsg', 20934, 'Arc 1950 / UTM zone 34S', '+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20935, 'epsg', 20935, 'Arc 1950 / UTM zone 35S', '+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (20936, 'epsg', 20936, 'Arc 1950 / UTM zone 36S', '+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21035, 'epsg', 21035, 'Arc 1960 / UTM zone 35S', '+proj=utm +zone=35 +south +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21036, 'epsg', 21036, 'Arc 1960 / UTM zone 36S', '+proj=utm +zone=36 +south +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21037, 'epsg', 21037, 'Arc 1960 / UTM zone 37S', '+proj=utm +zone=37 +south +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21095, 'epsg', 21095, 'Arc 1960 / UTM zone 35N', '+proj=utm +zone=35 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21096, 'epsg', 21096, 'Arc 1960 / UTM zone 36N', '+proj=utm +zone=36 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21097, 'epsg', 21097, 'Arc 1960 / UTM zone 37N', '+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21100, 'epsg', 21100, 'Batavia (Jakarta) / NEIEZ (deprecated)', '+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +pm=jakarta +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21148, 'epsg', 21148, 'Batavia / UTM zone 48S', '+proj=utm +zone=48 +south +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21149, 'epsg', 21149, 'Batavia / UTM zone 49S', '+proj=utm +zone=49 +south +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21150, 'epsg', 21150, 'Batavia / UTM zone 50S', '+proj=utm +zone=50 +south +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21291, 'epsg', 21291, 'Barbados 1938 / British West Indies Grid', '+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21292, 'epsg', 21292, 'Barbados 1938 / Barbados National Grid', '+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21413, 'epsg', 21413, 'Beijing 1954 / Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21414, 'epsg', 21414, 'Beijing 1954 / Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21415, 'epsg', 21415, 'Beijing 1954 / Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21416, 'epsg', 21416, 'Beijing 1954 / Gauss-Kruger zone 16', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21417, 'epsg', 21417, 'Beijing 1954 / Gauss-Kruger zone 17', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21418, 'epsg', 21418, 'Beijing 1954 / Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21419, 'epsg', 21419, 'Beijing 1954 / Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21420, 'epsg', 21420, 'Beijing 1954 / Gauss-Kruger zone 20', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21421, 'epsg', 21421, 'Beijing 1954 / Gauss-Kruger zone 21', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21422, 'epsg', 21422, 'Beijing 1954 / Gauss-Kruger zone 22', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21423, 'epsg', 21423, 'Beijing 1954 / Gauss-Kruger zone 23', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21453, 'epsg', 21453, 'Beijing 1954 / Gauss-Kruger CM 75E', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21454, 'epsg', 21454, 'Beijing 1954 / Gauss-Kruger CM 81E', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21455, 'epsg', 21455, 'Beijing 1954 / Gauss-Kruger CM 87E', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21456, 'epsg', 21456, 'Beijing 1954 / Gauss-Kruger CM 93E', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21457, 'epsg', 21457, 'Beijing 1954 / Gauss-Kruger CM 99E', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21458, 'epsg', 21458, 'Beijing 1954 / Gauss-Kruger CM 105E', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21459, 'epsg', 21459, 'Beijing 1954 / Gauss-Kruger CM 111E', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21460, 'epsg', 21460, 'Beijing 1954 / Gauss-Kruger CM 117E', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21461, 'epsg', 21461, 'Beijing 1954 / Gauss-Kruger CM 123E', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21462, 'epsg', 21462, 'Beijing 1954 / Gauss-Kruger CM 129E', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21463, 'epsg', 21463, 'Beijing 1954 / Gauss-Kruger CM 135E', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21473, 'epsg', 21473, 'Beijing 1954 / Gauss-Kruger 13N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21474, 'epsg', 21474, 'Beijing 1954 / Gauss-Kruger 14N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21475, 'epsg', 21475, 'Beijing 1954 / Gauss-Kruger 15N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21476, 'epsg', 21476, 'Beijing 1954 / Gauss-Kruger 16N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21477, 'epsg', 21477, 'Beijing 1954 / Gauss-Kruger 17N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21478, 'epsg', 21478, 'Beijing 1954 / Gauss-Kruger 18N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21479, 'epsg', 21479, 'Beijing 1954 / Gauss-Kruger 19N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21480, 'epsg', 21480, 'Beijing 1954 / Gauss-Kruger 20N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21481, 'epsg', 21481, 'Beijing 1954 / Gauss-Kruger 21N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21482, 'epsg', 21482, 'Beijing 1954 / Gauss-Kruger 22N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21483, 'epsg', 21483, 'Beijing 1954 / Gauss-Kruger 23N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21500, 'epsg', 21500, 'Belge 1950 (Brussels) / Belge Lambert 50', '+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21780, 'epsg', 21780, 'Bern 1898 (Bern) / LV03C', '+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +x_0=0 +y_0=0 +ellps=bessel +pm=bern +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21781, 'epsg', 21781, 'CH1903 / LV03', '+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21817, 'epsg', 21817, 'Bogota 1975 / UTM zone 17N (deprecated)', '+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21818, 'epsg', 21818, 'Bogota 1975 / UTM zone 18N', '+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21891, 'epsg', 21891, 'Bogota 1975 / Colombia West zone (deprecated)', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21892, 'epsg', 21892, 'Bogota 1975 / Colombia Bogota zone (deprecated)', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21893, 'epsg', 21893, 'Bogota 1975 / Colombia East Central zone (deprecated)', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21894, 'epsg', 21894, 'Bogota 1975 / Colombia East (deprecated)', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21896, 'epsg', 21896, 'Bogota 1975 / Colombia West zone', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21897, 'epsg', 21897, 'Bogota 1975 / Colombia Bogota zone', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21898, 'epsg', 21898, 'Bogota 1975 / Colombia East Central zone', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (21899, 'epsg', 21899, 'Bogota 1975 / Colombia East', '+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22032, 'epsg', 22032, 'Camacupa / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22033, 'epsg', 22033, 'Camacupa / UTM zone 33S', '+proj=utm +zone=33 +south +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22091, 'epsg', 22091, 'Camacupa / TM 11.30 SE', '+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22092, 'epsg', 22092, 'Camacupa / TM 12 SE', '+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22171, 'epsg', 22171, 'POSGAR 98 / Argentina 1', '+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22172, 'epsg', 22172, 'POSGAR 98 / Argentina 2', '+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22173, 'epsg', 22173, 'POSGAR 98 / Argentina 3', '+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22174, 'epsg', 22174, 'POSGAR 98 / Argentina 4', '+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22175, 'epsg', 22175, 'POSGAR 98 / Argentina 5', '+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22176, 'epsg', 22176, 'POSGAR 98 / Argentina 6', '+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22177, 'epsg', 22177, 'POSGAR 98 / Argentina 7', '+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22181, 'epsg', 22181, 'POSGAR 94 / Argentina 1', '+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22182, 'epsg', 22182, 'POSGAR 94 / Argentina 2', '+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22183, 'epsg', 22183, 'POSGAR 94 / Argentina 3', '+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22184, 'epsg', 22184, 'POSGAR 94 / Argentina 4', '+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22185, 'epsg', 22185, 'POSGAR 94 / Argentina 5', '+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22186, 'epsg', 22186, 'POSGAR 94 / Argentina 6', '+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22187, 'epsg', 22187, 'POSGAR 94 / Argentina 7', '+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22191, 'epsg', 22191, 'Campo Inchauspe / Argentina 1', '+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22192, 'epsg', 22192, 'Campo Inchauspe / Argentina 2', '+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22193, 'epsg', 22193, 'Campo Inchauspe / Argentina 3', '+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22194, 'epsg', 22194, 'Campo Inchauspe / Argentina 4', '+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22195, 'epsg', 22195, 'Campo Inchauspe / Argentina 5', '+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22196, 'epsg', 22196, 'Campo Inchauspe / Argentina 6', '+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22197, 'epsg', 22197, 'Campo Inchauspe / Argentina 7', '+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22234, 'epsg', 22234, 'Cape / UTM zone 34S', '+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22235, 'epsg', 22235, 'Cape / UTM zone 35S', '+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22236, 'epsg', 22236, 'Cape / UTM zone 36S', '+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22332, 'epsg', 22332, 'Carthage / UTM zone 32N', '+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22391, 'epsg', 22391, 'Carthage / Nord Tunisie', '+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22392, 'epsg', 22392, 'Carthage / Sud Tunisie', '+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22521, 'epsg', 22521, 'Corrego Alegre / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22522, 'epsg', 22522, 'Corrego Alegre / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22523, 'epsg', 22523, 'Corrego Alegre / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22524, 'epsg', 22524, 'Corrego Alegre / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22525, 'epsg', 22525, 'Corrego Alegre / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22700, 'epsg', 22700, 'Deir ez Zor / Levant Zone', '+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22770, 'epsg', 22770, 'Deir ez Zor / Syria Lambert', '+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22780, 'epsg', 22780, 'Deir ez Zor / Levant Stereographic', '+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22832, 'epsg', 22832, 'Douala / UTM zone 32N (deprecated)', '+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22991, 'epsg', 22991, 'Egypt 1907 / Blue Belt', '+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22992, 'epsg', 22992, 'Egypt 1907 / Red Belt', '+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22993, 'epsg', 22993, 'Egypt 1907 / Purple Belt', '+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (22994, 'epsg', 22994, 'Egypt 1907 / Extended Purple Belt', '+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23028, 'epsg', 23028, 'ED50 / UTM zone 28N', '+proj=utm +zone=28 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23029, 'epsg', 23029, 'ED50 / UTM zone 29N', '+proj=utm +zone=29 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23030, 'epsg', 23030, 'ED50 / UTM zone 30N', '+proj=utm +zone=30 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23031, 'epsg', 23031, 'ED50 / UTM zone 31N', '+proj=utm +zone=31 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23032, 'epsg', 23032, 'ED50 / UTM zone 32N', '+proj=utm +zone=32 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23033, 'epsg', 23033, 'ED50 / UTM zone 33N', '+proj=utm +zone=33 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23034, 'epsg', 23034, 'ED50 / UTM zone 34N', '+proj=utm +zone=34 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23035, 'epsg', 23035, 'ED50 / UTM zone 35N', '+proj=utm +zone=35 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23036, 'epsg', 23036, 'ED50 / UTM zone 36N', '+proj=utm +zone=36 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23037, 'epsg', 23037, 'ED50 / UTM zone 37N', '+proj=utm +zone=37 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23038, 'epsg', 23038, 'ED50 / UTM zone 38N', '+proj=utm +zone=38 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23090, 'epsg', 23090, 'ED50 / TM 0 N', '+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23095, 'epsg', 23095, 'ED50 / TM 5 NE', '+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23239, 'epsg', 23239, 'Fahud / UTM zone 39N', '+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23240, 'epsg', 23240, 'Fahud / UTM zone 40N', '+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23433, 'epsg', 23433, 'Garoua / UTM zone 33N (deprecated)', '+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23700, 'epsg', 23700, 'HD72 / EOV', '+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +x_0=650000 +y_0=200000 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23830, 'epsg', 23830, 'DGN95 / Indonesia TM-3 zone 46.2', '+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23831, 'epsg', 23831, 'DGN95 / Indonesia TM-3 zone 47.1', '+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23832, 'epsg', 23832, 'DGN95 / Indonesia TM-3 zone 47.2', '+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23833, 'epsg', 23833, 'DGN95 / Indonesia TM-3 zone 48.1', '+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23834, 'epsg', 23834, 'DGN95 / Indonesia TM-3 zone 48.2', '+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23835, 'epsg', 23835, 'DGN95 / Indonesia TM-3 zone 49.1', '+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23836, 'epsg', 23836, 'DGN95 / Indonesia TM-3 zone 49.2', '+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23837, 'epsg', 23837, 'DGN95 / Indonesia TM-3 zone 50.1', '+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23838, 'epsg', 23838, 'DGN95 / Indonesia TM-3 zone 50.2', '+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23839, 'epsg', 23839, 'DGN95 / Indonesia TM-3 zone 51.1', '+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23840, 'epsg', 23840, 'DGN95 / Indonesia TM-3 zone 51.2', '+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23841, 'epsg', 23841, 'DGN95 / Indonesia TM-3 zone 52.1', '+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23842, 'epsg', 23842, 'DGN95 / Indonesia TM-3 zone 52.2', '+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23843, 'epsg', 23843, 'DGN95 / Indonesia TM-3 zone 53.1', '+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23844, 'epsg', 23844, 'DGN95 / Indonesia TM-3 zone 53.2', '+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23845, 'epsg', 23845, 'DGN95 / Indonesia TM-3 zone 54.1', '+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23846, 'epsg', 23846, 'ID74 / UTM zone 46N', '+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23847, 'epsg', 23847, 'ID74 / UTM zone 47N', '+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23848, 'epsg', 23848, 'ID74 / UTM zone 48N', '+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23849, 'epsg', 23849, 'ID74 / UTM zone 49N', '+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23850, 'epsg', 23850, 'ID74 / UTM zone 50N', '+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23851, 'epsg', 23851, 'ID74 / UTM zone 51N', '+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23852, 'epsg', 23852, 'ID74 / UTM zone 52N', '+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23853, 'epsg', 23853, 'ID74 / UTM zone 53N (deprecated)', '+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23866, 'epsg', 23866, 'DGN95 / UTM zone 46N', '+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23867, 'epsg', 23867, 'DGN95 / UTM zone 47N', '+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23868, 'epsg', 23868, 'DGN95 / UTM zone 48N', '+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23869, 'epsg', 23869, 'DGN95 / UTM zone 49N', '+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23870, 'epsg', 23870, 'DGN95 / UTM zone 50N', '+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23871, 'epsg', 23871, 'DGN95 / UTM zone 51N', '+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23872, 'epsg', 23872, 'DGN95 / UTM zone 52N', '+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23877, 'epsg', 23877, 'DGN95 / UTM zone 47S', '+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23878, 'epsg', 23878, 'DGN95 / UTM zone 48S', '+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23879, 'epsg', 23879, 'DGN95 / UTM zone 49S', '+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23880, 'epsg', 23880, 'DGN95 / UTM zone 50S', '+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23881, 'epsg', 23881, 'DGN95 / UTM zone 51S', '+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23882, 'epsg', 23882, 'DGN95 / UTM zone 52S', '+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23883, 'epsg', 23883, 'DGN95 / UTM zone 53S', '+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23884, 'epsg', 23884, 'DGN95 / UTM zone 54S', '+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23886, 'epsg', 23886, 'ID74 / UTM zone 46S (deprecated)', '+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23887, 'epsg', 23887, 'ID74 / UTM zone 47S', '+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23888, 'epsg', 23888, 'ID74 / UTM zone 48S', '+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23889, 'epsg', 23889, 'ID74 / UTM zone 49S', '+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23890, 'epsg', 23890, 'ID74 / UTM zone 50S', '+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23891, 'epsg', 23891, 'ID74 / UTM zone 51S', '+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23892, 'epsg', 23892, 'ID74 / UTM zone 52S', '+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23893, 'epsg', 23893, 'ID74 / UTM zone 53S', '+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23894, 'epsg', 23894, 'ID74 / UTM zone 54S', '+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23946, 'epsg', 23946, 'Indian 1954 / UTM zone 46N', '+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23947, 'epsg', 23947, 'Indian 1954 / UTM zone 47N', '+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (23948, 'epsg', 23948, 'Indian 1954 / UTM zone 48N', '+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24047, 'epsg', 24047, 'Indian 1975 / UTM zone 47N', '+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24048, 'epsg', 24048, 'Indian 1975 / UTM zone 48N', '+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24100, 'epsg', 24100, 'Jamaica 1875 / Jamaica (Old Grid)', '+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +ellps=clrk80 +to_meter=0.3047972654 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24200, 'epsg', 24200, 'JAD69 / Jamaica National Grid', '+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24305, 'epsg', 24305, 'Kalianpur 1937 / UTM zone 45N', '+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24306, 'epsg', 24306, 'Kalianpur 1937 / UTM zone 46N', '+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24311, 'epsg', 24311, 'Kalianpur 1962 / UTM zone 41N', '+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24312, 'epsg', 24312, 'Kalianpur 1962 / UTM zone 42N', '+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24313, 'epsg', 24313, 'Kalianpur 1962 / UTM zone 43N', '+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24342, 'epsg', 24342, 'Kalianpur 1975 / UTM zone 42N', '+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24343, 'epsg', 24343, 'Kalianpur 1975 / UTM zone 43N', '+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24344, 'epsg', 24344, 'Kalianpur 1975 / UTM zone 44N', '+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24345, 'epsg', 24345, 'Kalianpur 1975 / UTM zone 45N', '+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24346, 'epsg', 24346, 'Kalianpur 1975 / UTM zone 46N', '+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24347, 'epsg', 24347, 'Kalianpur 1975 / UTM zone 47N', '+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24370, 'epsg', 24370, 'Kalianpur 1880 / India zone 0', '+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24371, 'epsg', 24371, 'Kalianpur 1880 / India zone I', '+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24372, 'epsg', 24372, 'Kalianpur 1880 / India zone IIa', '+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24373, 'epsg', 24373, 'Kalianpur 1880 / India zone III', '+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24374, 'epsg', 24374, 'Kalianpur 1880 / India zone IV', '+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24375, 'epsg', 24375, 'Kalianpur 1937 / India zone IIb', '+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24376, 'epsg', 24376, 'Kalianpur 1962 / India zone I', '+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24377, 'epsg', 24377, 'Kalianpur 1962 / India zone IIa', '+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24378, 'epsg', 24378, 'Kalianpur 1975 / India zone I', '+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24379, 'epsg', 24379, 'Kalianpur 1975 / India zone IIa', '+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24380, 'epsg', 24380, 'Kalianpur 1975 / India zone IIb', '+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24381, 'epsg', 24381, 'Kalianpur 1975 / India zone III', '+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24382, 'epsg', 24382, 'Kalianpur 1880 / India zone IIb', '+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.357204818 +to_meter=0.9143985307444408 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24383, 'epsg', 24383, 'Kalianpur 1975 / India zone IV', '+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24500, 'epsg', 24500, 'Kertau 1968 / Singapore Grid', '+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24547, 'epsg', 24547, 'Kertau 1968 / UTM zone 47N', '+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24548, 'epsg', 24548, 'Kertau 1968 / UTM zone 48N', '+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24571, 'epsg', 24571, 'Kertau / R.S.O. Malaya (ch) (deprecated)', '+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24600, 'epsg', 24600, 'KOC Lambert', '+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24718, 'epsg', 24718, 'La Canoa / UTM zone 18N', '+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24719, 'epsg', 24719, 'La Canoa / UTM zone 19N', '+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24720, 'epsg', 24720, 'La Canoa / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24817, 'epsg', 24817, 'PSAD56 / UTM zone 17N', '+proj=utm +zone=17 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24818, 'epsg', 24818, 'PSAD56 / UTM zone 18N', '+proj=utm +zone=18 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24819, 'epsg', 24819, 'PSAD56 / UTM zone 19N', '+proj=utm +zone=19 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24820, 'epsg', 24820, 'PSAD56 / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24821, 'epsg', 24821, 'PSAD56 / UTM zone 21N', '+proj=utm +zone=21 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24877, 'epsg', 24877, 'PSAD56 / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24878, 'epsg', 24878, 'PSAD56 / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24879, 'epsg', 24879, 'PSAD56 / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24880, 'epsg', 24880, 'PSAD56 / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24881, 'epsg', 24881, 'PSAD56 / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24882, 'epsg', 24882, 'PSAD56 / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24891, 'epsg', 24891, 'PSAD56 / Peru west zone', '+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24892, 'epsg', 24892, 'PSAD56 / Peru central zone', '+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (24893, 'epsg', 24893, 'PSAD56 / Peru east zone', '+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25000, 'epsg', 25000, 'Leigon / Ghana Metre Grid', '+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25231, 'epsg', 25231, 'Lome / UTM zone 31N', '+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25391, 'epsg', 25391, 'Luzon 1911 / Philippines zone I', '+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25392, 'epsg', 25392, 'Luzon 1911 / Philippines zone II', '+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25393, 'epsg', 25393, 'Luzon 1911 / Philippines zone III', '+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25394, 'epsg', 25394, 'Luzon 1911 / Philippines zone IV', '+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25395, 'epsg', 25395, 'Luzon 1911 / Philippines zone V', '+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25700, 'epsg', 25700, 'Makassar (Jakarta) / NEIEZ (deprecated)', '+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25828, 'epsg', 25828, 'ETRS89 / UTM zone 28N', '+proj=utm +zone=28 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25829, 'epsg', 25829, 'ETRS89 / UTM zone 29N', '+proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25830, 'epsg', 25830, 'ETRS89 / UTM zone 30N', '+proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25831, 'epsg', 25831, 'ETRS89 / UTM zone 31N', '+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25832, 'epsg', 25832, 'ETRS89 / UTM zone 32N', '+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25833, 'epsg', 25833, 'ETRS89 / UTM zone 33N', '+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25834, 'epsg', 25834, 'ETRS89 / UTM zone 34N', '+proj=utm +zone=34 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25835, 'epsg', 25835, 'ETRS89 / UTM zone 35N', '+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25836, 'epsg', 25836, 'ETRS89 / UTM zone 36N', '+proj=utm +zone=36 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25837, 'epsg', 25837, 'ETRS89 / UTM zone 37N', '+proj=utm +zone=37 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25838, 'epsg', 25838, 'ETRS89 / UTM zone 38N', '+proj=utm +zone=38 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25884, 'epsg', 25884, 'ETRS89 / TM Baltic93', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (25932, 'epsg', 25932, 'Malongo 1987 / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26191, 'epsg', 26191, 'Merchich / Nord Maroc', '+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26192, 'epsg', 26192, 'Merchich / Sud Maroc', '+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26193, 'epsg', 26193, 'Merchich / Sahara (deprecated)', '+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26194, 'epsg', 26194, 'Merchich / Sahara Nord', '+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26195, 'epsg', 26195, 'Merchich / Sahara Sud', '+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26237, 'epsg', 26237, 'Massawa / UTM zone 37N', '+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26331, 'epsg', 26331, 'Minna / UTM zone 31N', '+proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26332, 'epsg', 26332, 'Minna / UTM zone 32N', '+proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26391, 'epsg', 26391, 'Minna / Nigeria West Belt', '+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26392, 'epsg', 26392, 'Minna / Nigeria Mid Belt', '+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26393, 'epsg', 26393, 'Minna / Nigeria East Belt', '+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26432, 'epsg', 26432, 'Mhast / UTM zone 32S (deprecated)', '+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26591, 'epsg', 26591, 'Monte Mario (Rome) / Italy zone 1 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26592, 'epsg', 26592, 'Monte Mario (Rome) / Italy zone 2 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26632, 'epsg', 26632, 'M''poraloko / UTM zone 32N', '+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26692, 'epsg', 26692, 'M''poraloko / UTM zone 32S', '+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26701, 'epsg', 26701, 'NAD27 / UTM zone 1N', '+proj=utm +zone=1 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26702, 'epsg', 26702, 'NAD27 / UTM zone 2N', '+proj=utm +zone=2 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26703, 'epsg', 26703, 'NAD27 / UTM zone 3N', '+proj=utm +zone=3 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26704, 'epsg', 26704, 'NAD27 / UTM zone 4N', '+proj=utm +zone=4 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26705, 'epsg', 26705, 'NAD27 / UTM zone 5N', '+proj=utm +zone=5 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26706, 'epsg', 26706, 'NAD27 / UTM zone 6N', '+proj=utm +zone=6 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26707, 'epsg', 26707, 'NAD27 / UTM zone 7N', '+proj=utm +zone=7 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26708, 'epsg', 26708, 'NAD27 / UTM zone 8N', '+proj=utm +zone=8 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26709, 'epsg', 26709, 'NAD27 / UTM zone 9N', '+proj=utm +zone=9 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26710, 'epsg', 26710, 'NAD27 / UTM zone 10N', '+proj=utm +zone=10 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26711, 'epsg', 26711, 'NAD27 / UTM zone 11N', '+proj=utm +zone=11 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26712, 'epsg', 26712, 'NAD27 / UTM zone 12N', '+proj=utm +zone=12 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26713, 'epsg', 26713, 'NAD27 / UTM zone 13N', '+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26714, 'epsg', 26714, 'NAD27 / UTM zone 14N', '+proj=utm +zone=14 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26715, 'epsg', 26715, 'NAD27 / UTM zone 15N', '+proj=utm +zone=15 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26716, 'epsg', 26716, 'NAD27 / UTM zone 16N', '+proj=utm +zone=16 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26717, 'epsg', 26717, 'NAD27 / UTM zone 17N', '+proj=utm +zone=17 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26718, 'epsg', 26718, 'NAD27 / UTM zone 18N', '+proj=utm +zone=18 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26719, 'epsg', 26719, 'NAD27 / UTM zone 19N', '+proj=utm +zone=19 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26720, 'epsg', 26720, 'NAD27 / UTM zone 20N', '+proj=utm +zone=20 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26721, 'epsg', 26721, 'NAD27 / UTM zone 21N', '+proj=utm +zone=21 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26722, 'epsg', 26722, 'NAD27 / UTM zone 22N', '+proj=utm +zone=22 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26729, 'epsg', 26729, 'NAD27 / Alabama East', '+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26730, 'epsg', 26730, 'NAD27 / Alabama West', '+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26731, 'epsg', 26731, 'NAD27 / Alaska zone 1', '+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26732, 'epsg', 26732, 'NAD27 / Alaska zone 2', '+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26733, 'epsg', 26733, 'NAD27 / Alaska zone 3', '+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26734, 'epsg', 26734, 'NAD27 / Alaska zone 4', '+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26735, 'epsg', 26735, 'NAD27 / Alaska zone 5', '+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26736, 'epsg', 26736, 'NAD27 / Alaska zone 6', '+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26737, 'epsg', 26737, 'NAD27 / Alaska zone 7', '+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26738, 'epsg', 26738, 'NAD27 / Alaska zone 8', '+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26739, 'epsg', 26739, 'NAD27 / Alaska zone 9', '+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26740, 'epsg', 26740, 'NAD27 / Alaska zone 10', '+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26741, 'epsg', 26741, 'NAD27 / California zone I', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26742, 'epsg', 26742, 'NAD27 / California zone II', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26743, 'epsg', 26743, 'NAD27 / California zone III', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26744, 'epsg', 26744, 'NAD27 / California zone IV', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26745, 'epsg', 26745, 'NAD27 / California zone V', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26746, 'epsg', 26746, 'NAD27 / California zone VI', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26747, 'epsg', 26747, 'NAD27 / California zone VII (deprecated)', '+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26748, 'epsg', 26748, 'NAD27 / Arizona East', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26749, 'epsg', 26749, 'NAD27 / Arizona Central', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26750, 'epsg', 26750, 'NAD27 / Arizona West', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26751, 'epsg', 26751, 'NAD27 / Arkansas North', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26752, 'epsg', 26752, 'NAD27 / Arkansas South', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26753, 'epsg', 26753, 'NAD27 / Colorado North', '+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26754, 'epsg', 26754, 'NAD27 / Colorado Central', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26755, 'epsg', 26755, 'NAD27 / Colorado South', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26756, 'epsg', 26756, 'NAD27 / Connecticut', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26757, 'epsg', 26757, 'NAD27 / Delaware', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26758, 'epsg', 26758, 'NAD27 / Florida East', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26759, 'epsg', 26759, 'NAD27 / Florida West', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26760, 'epsg', 26760, 'NAD27 / Florida North', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26766, 'epsg', 26766, 'NAD27 / Georgia East', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26767, 'epsg', 26767, 'NAD27 / Georgia West', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26768, 'epsg', 26768, 'NAD27 / Idaho East', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26769, 'epsg', 26769, 'NAD27 / Idaho Central', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26770, 'epsg', 26770, 'NAD27 / Idaho West', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26771, 'epsg', 26771, 'NAD27 / Illinois East', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26772, 'epsg', 26772, 'NAD27 / Illinois West', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26773, 'epsg', 26773, 'NAD27 / Indiana East', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26774, 'epsg', 26774, 'NAD27 / Indiana West', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26775, 'epsg', 26775, 'NAD27 / Iowa North', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26776, 'epsg', 26776, 'NAD27 / Iowa South', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26777, 'epsg', 26777, 'NAD27 / Kansas North', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26778, 'epsg', 26778, 'NAD27 / Kansas South', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26779, 'epsg', 26779, 'NAD27 / Kentucky North', '+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26780, 'epsg', 26780, 'NAD27 / Kentucky South', '+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26781, 'epsg', 26781, 'NAD27 / Louisiana North', '+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26782, 'epsg', 26782, 'NAD27 / Louisiana South', '+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26783, 'epsg', 26783, 'NAD27 / Maine East', '+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26784, 'epsg', 26784, 'NAD27 / Maine West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26785, 'epsg', 26785, 'NAD27 / Maryland', '+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26786, 'epsg', 26786, 'NAD27 / Massachusetts Mainland', '+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26787, 'epsg', 26787, 'NAD27 / Massachusetts Island', '+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26791, 'epsg', 26791, 'NAD27 / Minnesota North', '+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26792, 'epsg', 26792, 'NAD27 / Minnesota Central', '+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26793, 'epsg', 26793, 'NAD27 / Minnesota South', '+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26794, 'epsg', 26794, 'NAD27 / Mississippi East', '+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26795, 'epsg', 26795, 'NAD27 / Mississippi West', '+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26796, 'epsg', 26796, 'NAD27 / Missouri East', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26797, 'epsg', 26797, 'NAD27 / Missouri Central', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26798, 'epsg', 26798, 'NAD27 / Missouri West', '+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26799, 'epsg', 26799, 'NAD27 / California zone VII', '+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26801, 'epsg', 26801, 'NAD Michigan / Michigan East', '+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26802, 'epsg', 26802, 'NAD Michigan / Michigan Old Central', '+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26803, 'epsg', 26803, 'NAD Michigan / Michigan West', '+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26811, 'epsg', 26811, 'NAD Michigan / Michigan North', '+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26812, 'epsg', 26812, 'NAD Michigan / Michigan Central', '+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26813, 'epsg', 26813, 'NAD Michigan / Michigan South', '+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26901, 'epsg', 26901, 'NAD83 / UTM zone 1N', '+proj=utm +zone=1 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26902, 'epsg', 26902, 'NAD83 / UTM zone 2N', '+proj=utm +zone=2 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26903, 'epsg', 26903, 'NAD83 / UTM zone 3N', '+proj=utm +zone=3 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26904, 'epsg', 26904, 'NAD83 / UTM zone 4N', '+proj=utm +zone=4 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26905, 'epsg', 26905, 'NAD83 / UTM zone 5N', '+proj=utm +zone=5 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26906, 'epsg', 26906, 'NAD83 / UTM zone 6N', '+proj=utm +zone=6 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26907, 'epsg', 26907, 'NAD83 / UTM zone 7N', '+proj=utm +zone=7 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26908, 'epsg', 26908, 'NAD83 / UTM zone 8N', '+proj=utm +zone=8 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26909, 'epsg', 26909, 'NAD83 / UTM zone 9N', '+proj=utm +zone=9 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26910, 'epsg', 26910, 'NAD83 / UTM zone 10N', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26911, 'epsg', 26911, 'NAD83 / UTM zone 11N', '+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26912, 'epsg', 26912, 'NAD83 / UTM zone 12N', '+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26913, 'epsg', 26913, 'NAD83 / UTM zone 13N', '+proj=utm +zone=13 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26914, 'epsg', 26914, 'NAD83 / UTM zone 14N', '+proj=utm +zone=14 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26915, 'epsg', 26915, 'NAD83 / UTM zone 15N', '+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26916, 'epsg', 26916, 'NAD83 / UTM zone 16N', '+proj=utm +zone=16 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26917, 'epsg', 26917, 'NAD83 / UTM zone 17N', '+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26918, 'epsg', 26918, 'NAD83 / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26919, 'epsg', 26919, 'NAD83 / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26920, 'epsg', 26920, 'NAD83 / UTM zone 20N', '+proj=utm +zone=20 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26921, 'epsg', 26921, 'NAD83 / UTM zone 21N', '+proj=utm +zone=21 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26922, 'epsg', 26922, 'NAD83 / UTM zone 22N', '+proj=utm +zone=22 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26923, 'epsg', 26923, 'NAD83 / UTM zone 23N', '+proj=utm +zone=23 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26929, 'epsg', 26929, 'NAD83 / Alabama East', '+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26930, 'epsg', 26930, 'NAD83 / Alabama West', '+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26931, 'epsg', 26931, 'NAD83 / Alaska zone 1', '+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26932, 'epsg', 26932, 'NAD83 / Alaska zone 2', '+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26933, 'epsg', 26933, 'NAD83 / Alaska zone 3', '+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26934, 'epsg', 26934, 'NAD83 / Alaska zone 4', '+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26935, 'epsg', 26935, 'NAD83 / Alaska zone 5', '+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26936, 'epsg', 26936, 'NAD83 / Alaska zone 6', '+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26937, 'epsg', 26937, 'NAD83 / Alaska zone 7', '+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26938, 'epsg', 26938, 'NAD83 / Alaska zone 8', '+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26939, 'epsg', 26939, 'NAD83 / Alaska zone 9', '+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26940, 'epsg', 26940, 'NAD83 / Alaska zone 10', '+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26941, 'epsg', 26941, 'NAD83 / California zone 1', '+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26942, 'epsg', 26942, 'NAD83 / California zone 2', '+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26943, 'epsg', 26943, 'NAD83 / California zone 3', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26944, 'epsg', 26944, 'NAD83 / California zone 4', '+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26945, 'epsg', 26945, 'NAD83 / California zone 5', '+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26946, 'epsg', 26946, 'NAD83 / California zone 6', '+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26948, 'epsg', 26948, 'NAD83 / Arizona East', '+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26949, 'epsg', 26949, 'NAD83 / Arizona Central', '+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26950, 'epsg', 26950, 'NAD83 / Arizona West', '+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26951, 'epsg', 26951, 'NAD83 / Arkansas North', '+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26952, 'epsg', 26952, 'NAD83 / Arkansas South', '+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26953, 'epsg', 26953, 'NAD83 / Colorado North', '+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26954, 'epsg', 26954, 'NAD83 / Colorado Central', '+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26955, 'epsg', 26955, 'NAD83 / Colorado South', '+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26956, 'epsg', 26956, 'NAD83 / Connecticut', '+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26957, 'epsg', 26957, 'NAD83 / Delaware', '+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26958, 'epsg', 26958, 'NAD83 / Florida East', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26959, 'epsg', 26959, 'NAD83 / Florida West', '+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26960, 'epsg', 26960, 'NAD83 / Florida North', '+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26961, 'epsg', 26961, 'NAD83 / Hawaii zone 1', '+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26962, 'epsg', 26962, 'NAD83 / Hawaii zone 2', '+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26963, 'epsg', 26963, 'NAD83 / Hawaii zone 3', '+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26964, 'epsg', 26964, 'NAD83 / Hawaii zone 4', '+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26965, 'epsg', 26965, 'NAD83 / Hawaii zone 5', '+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26966, 'epsg', 26966, 'NAD83 / Georgia East', '+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26967, 'epsg', 26967, 'NAD83 / Georgia West', '+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26968, 'epsg', 26968, 'NAD83 / Idaho East', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26969, 'epsg', 26969, 'NAD83 / Idaho Central', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26970, 'epsg', 26970, 'NAD83 / Idaho West', '+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26971, 'epsg', 26971, 'NAD83 / Illinois East', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26972, 'epsg', 26972, 'NAD83 / Illinois West', '+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26973, 'epsg', 26973, 'NAD83 / Indiana East', '+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26974, 'epsg', 26974, 'NAD83 / Indiana West', '+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26975, 'epsg', 26975, 'NAD83 / Iowa North', '+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26976, 'epsg', 26976, 'NAD83 / Iowa South', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26977, 'epsg', 26977, 'NAD83 / Kansas North', '+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26978, 'epsg', 26978, 'NAD83 / Kansas South', '+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26979, 'epsg', 26979, 'NAD83 / Kentucky North (deprecated)', '+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26980, 'epsg', 26980, 'NAD83 / Kentucky South', '+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26981, 'epsg', 26981, 'NAD83 / Louisiana North', '+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26982, 'epsg', 26982, 'NAD83 / Louisiana South', '+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26983, 'epsg', 26983, 'NAD83 / Maine East', '+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26984, 'epsg', 26984, 'NAD83 / Maine West', '+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26985, 'epsg', 26985, 'NAD83 / Maryland', '+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26986, 'epsg', 26986, 'NAD83 / Massachusetts Mainland', '+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26987, 'epsg', 26987, 'NAD83 / Massachusetts Island', '+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26988, 'epsg', 26988, 'NAD83 / Michigan North', '+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26989, 'epsg', 26989, 'NAD83 / Michigan Central', '+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26990, 'epsg', 26990, 'NAD83 / Michigan South', '+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26991, 'epsg', 26991, 'NAD83 / Minnesota North', '+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26992, 'epsg', 26992, 'NAD83 / Minnesota Central', '+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26993, 'epsg', 26993, 'NAD83 / Minnesota South', '+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26994, 'epsg', 26994, 'NAD83 / Mississippi East', '+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26995, 'epsg', 26995, 'NAD83 / Mississippi West', '+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26996, 'epsg', 26996, 'NAD83 / Missouri East', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26997, 'epsg', 26997, 'NAD83 / Missouri Central', '+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (26998, 'epsg', 26998, 'NAD83 / Missouri West', '+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27037, 'epsg', 27037, 'Nahrwan 1967 / UTM zone 37N', '+proj=utm +zone=37 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27038, 'epsg', 27038, 'Nahrwan 1967 / UTM zone 38N', '+proj=utm +zone=38 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27039, 'epsg', 27039, 'Nahrwan 1967 / UTM zone 39N', '+proj=utm +zone=39 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27040, 'epsg', 27040, 'Nahrwan 1967 / UTM zone 40N', '+proj=utm +zone=40 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27120, 'epsg', 27120, 'Naparima 1972 / UTM zone 20N', '+proj=utm +zone=20 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27200, 'epsg', 27200, 'NZGD49 / New Zealand Map Grid', '+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27205, 'epsg', 27205, 'NZGD49 / Mount Eden Circuit', '+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27206, 'epsg', 27206, 'NZGD49 / Bay of Plenty Circuit', '+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27207, 'epsg', 27207, 'NZGD49 / Poverty Bay Circuit', '+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27208, 'epsg', 27208, 'NZGD49 / Hawkes Bay Circuit', '+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27209, 'epsg', 27209, 'NZGD49 / Taranaki Circuit', '+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27210, 'epsg', 27210, 'NZGD49 / Tuhirangi Circuit', '+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27211, 'epsg', 27211, 'NZGD49 / Wanganui Circuit', '+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27212, 'epsg', 27212, 'NZGD49 / Wairarapa Circuit', '+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27213, 'epsg', 27213, 'NZGD49 / Wellington Circuit', '+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27214, 'epsg', 27214, 'NZGD49 / Collingwood Circuit', '+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27215, 'epsg', 27215, 'NZGD49 / Nelson Circuit', '+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27216, 'epsg', 27216, 'NZGD49 / Karamea Circuit', '+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27217, 'epsg', 27217, 'NZGD49 / Buller Circuit', '+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27218, 'epsg', 27218, 'NZGD49 / Grey Circuit', '+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27219, 'epsg', 27219, 'NZGD49 / Amuri Circuit', '+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27220, 'epsg', 27220, 'NZGD49 / Marlborough Circuit', '+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27221, 'epsg', 27221, 'NZGD49 / Hokitika Circuit', '+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27222, 'epsg', 27222, 'NZGD49 / Okarito Circuit', '+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27223, 'epsg', 27223, 'NZGD49 / Jacksons Bay Circuit', '+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27224, 'epsg', 27224, 'NZGD49 / Mount Pleasant Circuit', '+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27225, 'epsg', 27225, 'NZGD49 / Gawler Circuit', '+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27226, 'epsg', 27226, 'NZGD49 / Timaru Circuit', '+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27227, 'epsg', 27227, 'NZGD49 / Lindis Peak Circuit', '+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27228, 'epsg', 27228, 'NZGD49 / Mount Nicholas Circuit', '+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27229, 'epsg', 27229, 'NZGD49 / Mount York Circuit', '+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27230, 'epsg', 27230, 'NZGD49 / Observation Point Circuit', '+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27231, 'epsg', 27231, 'NZGD49 / North Taieri Circuit', '+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27232, 'epsg', 27232, 'NZGD49 / Bluff Circuit', '+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27258, 'epsg', 27258, 'NZGD49 / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27259, 'epsg', 27259, 'NZGD49 / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27260, 'epsg', 27260, 'NZGD49 / UTM zone 60S', '+proj=utm +zone=60 +south +ellps=intl +datum=nzgd49 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27291, 'epsg', 27291, 'NZGD49 / North Island Grid', '+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27292, 'epsg', 27292, 'NZGD49 / South Island Grid', '+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +datum=nzgd49 +to_meter=0.9143984146160287 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27391, 'epsg', 27391, 'NGO 1948 (Oslo) / NGO zone I', '+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27392, 'epsg', 27392, 'NGO 1948 (Oslo) / NGO zone II', '+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27393, 'epsg', 27393, 'NGO 1948 (Oslo) / NGO zone III', '+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27394, 'epsg', 27394, 'NGO 1948 (Oslo) / NGO zone IV', '+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27395, 'epsg', 27395, 'NGO 1948 (Oslo) / NGO zone V', '+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27396, 'epsg', 27396, 'NGO 1948 (Oslo) / NGO zone VI', '+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27397, 'epsg', 27397, 'NGO 1948 (Oslo) / NGO zone VII', '+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27398, 'epsg', 27398, 'NGO 1948 (Oslo) / NGO zone VIII', '+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27429, 'epsg', 27429, 'Datum 73 / UTM zone 29N', '+proj=utm +zone=29 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27492, 'epsg', 27492, 'Datum 73 / Modified Portuguese Grid', '+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27500, 'epsg', 27500, 'ATF (Paris) / Nord de Guerre', '+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27561, 'epsg', 27561, 'NTF (Paris) / Lambert Nord France', '+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27562, 'epsg', 27562, 'NTF (Paris) / Lambert Centre France', '+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27563, 'epsg', 27563, 'NTF (Paris) / Lambert Sud France', '+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27564, 'epsg', 27564, 'NTF (Paris) / Lambert Corse', '+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27571, 'epsg', 27571, 'NTF (Paris) / Lambert zone I', '+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27572, 'epsg', 27572, 'NTF (Paris) / Lambert zone II', '+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27573, 'epsg', 27573, 'NTF (Paris) / Lambert zone III', '+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27574, 'epsg', 27574, 'NTF (Paris) / Lambert zone IV', '+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27581, 'epsg', 27581, 'NTF (Paris) / France I (deprecated)', '+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27582, 'epsg', 27582, 'NTF (Paris) / France II (deprecated)', '+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27583, 'epsg', 27583, 'NTF (Paris) / France III (deprecated)', '+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27584, 'epsg', 27584, 'NTF (Paris) / France IV (deprecated)', '+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27591, 'epsg', 27591, 'NTF (Paris) / Nord France (deprecated)', '+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27592, 'epsg', 27592, 'NTF (Paris) / Centre France (deprecated)', '+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27593, 'epsg', 27593, 'NTF (Paris) / Sud France (deprecated)', '+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27594, 'epsg', 27594, 'NTF (Paris) / Corse (deprecated)', '+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (27700, 'epsg', 27700, 'OSGB 1936 / British National Grid', '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28191, 'epsg', 28191, 'Palestine 1923 / Palestine Grid', '+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28192, 'epsg', 28192, 'Palestine 1923 / Palestine Belt', '+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28193, 'epsg', 28193, 'Palestine 1923 / Israeli CS Grid', '+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28232, 'epsg', 28232, 'Pointe Noire / UTM zone 32S', '+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28348, 'epsg', 28348, 'GDA94 / MGA zone 48', '+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28349, 'epsg', 28349, 'GDA94 / MGA zone 49', '+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28350, 'epsg', 28350, 'GDA94 / MGA zone 50', '+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28351, 'epsg', 28351, 'GDA94 / MGA zone 51', '+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28352, 'epsg', 28352, 'GDA94 / MGA zone 52', '+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28353, 'epsg', 28353, 'GDA94 / MGA zone 53', '+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28354, 'epsg', 28354, 'GDA94 / MGA zone 54', '+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28355, 'epsg', 28355, 'GDA94 / MGA zone 55', '+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28356, 'epsg', 28356, 'GDA94 / MGA zone 56', '+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28357, 'epsg', 28357, 'GDA94 / MGA zone 57', '+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28358, 'epsg', 28358, 'GDA94 / MGA zone 58', '+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28402, 'epsg', 28402, 'Pulkovo 1942 / Gauss-Kruger zone 2', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28403, 'epsg', 28403, 'Pulkovo 1942 / Gauss-Kruger zone 3', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28404, 'epsg', 28404, 'Pulkovo 1942 / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28405, 'epsg', 28405, 'Pulkovo 1942 / Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28406, 'epsg', 28406, 'Pulkovo 1942 / Gauss-Kruger zone 6', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28407, 'epsg', 28407, 'Pulkovo 1942 / Gauss-Kruger zone 7', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28408, 'epsg', 28408, 'Pulkovo 1942 / Gauss-Kruger zone 8', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28409, 'epsg', 28409, 'Pulkovo 1942 / Gauss-Kruger zone 9', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28410, 'epsg', 28410, 'Pulkovo 1942 / Gauss-Kruger zone 10', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28411, 'epsg', 28411, 'Pulkovo 1942 / Gauss-Kruger zone 11', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28412, 'epsg', 28412, 'Pulkovo 1942 / Gauss-Kruger zone 12', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28413, 'epsg', 28413, 'Pulkovo 1942 / Gauss-Kruger zone 13', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28414, 'epsg', 28414, 'Pulkovo 1942 / Gauss-Kruger zone 14', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28415, 'epsg', 28415, 'Pulkovo 1942 / Gauss-Kruger zone 15', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28416, 'epsg', 28416, 'Pulkovo 1942 / Gauss-Kruger zone 16', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28417, 'epsg', 28417, 'Pulkovo 1942 / Gauss-Kruger zone 17', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28418, 'epsg', 28418, 'Pulkovo 1942 / Gauss-Kruger zone 18', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28419, 'epsg', 28419, 'Pulkovo 1942 / Gauss-Kruger zone 19', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28420, 'epsg', 28420, 'Pulkovo 1942 / Gauss-Kruger zone 20', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28421, 'epsg', 28421, 'Pulkovo 1942 / Gauss-Kruger zone 21', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28422, 'epsg', 28422, 'Pulkovo 1942 / Gauss-Kruger zone 22', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28423, 'epsg', 28423, 'Pulkovo 1942 / Gauss-Kruger zone 23', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28424, 'epsg', 28424, 'Pulkovo 1942 / Gauss-Kruger zone 24', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28425, 'epsg', 28425, 'Pulkovo 1942 / Gauss-Kruger zone 25', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28426, 'epsg', 28426, 'Pulkovo 1942 / Gauss-Kruger zone 26', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28427, 'epsg', 28427, 'Pulkovo 1942 / Gauss-Kruger zone 27', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28428, 'epsg', 28428, 'Pulkovo 1942 / Gauss-Kruger zone 28', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28429, 'epsg', 28429, 'Pulkovo 1942 / Gauss-Kruger zone 29', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28430, 'epsg', 28430, 'Pulkovo 1942 / Gauss-Kruger zone 30', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28431, 'epsg', 28431, 'Pulkovo 1942 / Gauss-Kruger zone 31', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28432, 'epsg', 28432, 'Pulkovo 1942 / Gauss-Kruger zone 32', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28462, 'epsg', 28462, 'Pulkovo 1942 / Gauss-Kruger 2N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28463, 'epsg', 28463, 'Pulkovo 1942 / Gauss-Kruger 3N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28464, 'epsg', 28464, 'Pulkovo 1942 / Gauss-Kruger 4N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28465, 'epsg', 28465, 'Pulkovo 1942 / Gauss-Kruger 5N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28466, 'epsg', 28466, 'Pulkovo 1942 / Gauss-Kruger 6N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28467, 'epsg', 28467, 'Pulkovo 1942 / Gauss-Kruger 7N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28468, 'epsg', 28468, 'Pulkovo 1942 / Gauss-Kruger 8N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28469, 'epsg', 28469, 'Pulkovo 1942 / Gauss-Kruger 9N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28470, 'epsg', 28470, 'Pulkovo 1942 / Gauss-Kruger 10N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28471, 'epsg', 28471, 'Pulkovo 1942 / Gauss-Kruger 11N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28472, 'epsg', 28472, 'Pulkovo 1942 / Gauss-Kruger 12N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28473, 'epsg', 28473, 'Pulkovo 1942 / Gauss-Kruger 13N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28474, 'epsg', 28474, 'Pulkovo 1942 / Gauss-Kruger 14N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28475, 'epsg', 28475, 'Pulkovo 1942 / Gauss-Kruger 15N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28476, 'epsg', 28476, 'Pulkovo 1942 / Gauss-Kruger 16N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28477, 'epsg', 28477, 'Pulkovo 1942 / Gauss-Kruger 17N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28478, 'epsg', 28478, 'Pulkovo 1942 / Gauss-Kruger 18N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28479, 'epsg', 28479, 'Pulkovo 1942 / Gauss-Kruger 19N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28480, 'epsg', 28480, 'Pulkovo 1942 / Gauss-Kruger 20N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28481, 'epsg', 28481, 'Pulkovo 1942 / Gauss-Kruger 21N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28482, 'epsg', 28482, 'Pulkovo 1942 / Gauss-Kruger 22N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28483, 'epsg', 28483, 'Pulkovo 1942 / Gauss-Kruger 23N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28484, 'epsg', 28484, 'Pulkovo 1942 / Gauss-Kruger 24N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28485, 'epsg', 28485, 'Pulkovo 1942 / Gauss-Kruger 25N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28486, 'epsg', 28486, 'Pulkovo 1942 / Gauss-Kruger 26N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28487, 'epsg', 28487, 'Pulkovo 1942 / Gauss-Kruger 27N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28488, 'epsg', 28488, 'Pulkovo 1942 / Gauss-Kruger 28N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28489, 'epsg', 28489, 'Pulkovo 1942 / Gauss-Kruger 29N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28490, 'epsg', 28490, 'Pulkovo 1942 / Gauss-Kruger 30N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28491, 'epsg', 28491, 'Pulkovo 1942 / Gauss-Kruger 31N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28492, 'epsg', 28492, 'Pulkovo 1942 / Gauss-Kruger 32N (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28600, 'epsg', 28600, 'Qatar 1974 / Qatar National Grid', '+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28991, 'epsg', 28991, 'Amersfoort / RD Old', '+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (28992, 'epsg', 28992, 'Amersfoort / RD New', '+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29100, 'epsg', 29100, 'SAD69 / Brazil Polyconic (deprecated)', '+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29101, 'epsg', 29101, 'SAD69 / Brazil Polyconic', '+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29118, 'epsg', 29118, 'SAD69 / UTM zone 18N (deprecated)', '+proj=utm +zone=18 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29119, 'epsg', 29119, 'SAD69 / UTM zone 19N (deprecated)', '+proj=utm +zone=19 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29120, 'epsg', 29120, 'SAD69 / UTM zone 20N (deprecated)', '+proj=utm +zone=20 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29121, 'epsg', 29121, 'SAD69 / UTM zone 21N (deprecated)', '+proj=utm +zone=21 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29122, 'epsg', 29122, 'SAD69 / UTM zone 22N (deprecated)', '+proj=utm +zone=22 +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29168, 'epsg', 29168, 'SAD69 / UTM zone 18N', '+proj=utm +zone=18 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29169, 'epsg', 29169, 'SAD69 / UTM zone 19N', '+proj=utm +zone=19 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29170, 'epsg', 29170, 'SAD69 / UTM zone 20N', '+proj=utm +zone=20 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29171, 'epsg', 29171, 'SAD69 / UTM zone 21N', '+proj=utm +zone=21 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29172, 'epsg', 29172, 'SAD69 / UTM zone 22N', '+proj=utm +zone=22 +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29177, 'epsg', 29177, 'SAD69 / UTM zone 17S (deprecated)', '+proj=utm +zone=17 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29178, 'epsg', 29178, 'SAD69 / UTM zone 18S (deprecated)', '+proj=utm +zone=18 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29179, 'epsg', 29179, 'SAD69 / UTM zone 19S (deprecated)', '+proj=utm +zone=19 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29180, 'epsg', 29180, 'SAD69 / UTM zone 20S (deprecated)', '+proj=utm +zone=20 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29181, 'epsg', 29181, 'SAD69 / UTM zone 21S (deprecated)', '+proj=utm +zone=21 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29182, 'epsg', 29182, 'SAD69 / UTM zone 22S (deprecated)', '+proj=utm +zone=22 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29183, 'epsg', 29183, 'SAD69 / UTM zone 23S (deprecated)', '+proj=utm +zone=23 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29184, 'epsg', 29184, 'SAD69 / UTM zone 24S (deprecated)', '+proj=utm +zone=24 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29185, 'epsg', 29185, 'SAD69 / UTM zone 25S (deprecated)', '+proj=utm +zone=25 +south +ellps=GRS67 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29187, 'epsg', 29187, 'SAD69 / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29188, 'epsg', 29188, 'SAD69 / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29189, 'epsg', 29189, 'SAD69 / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29190, 'epsg', 29190, 'SAD69 / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29191, 'epsg', 29191, 'SAD69 / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29192, 'epsg', 29192, 'SAD69 / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29193, 'epsg', 29193, 'SAD69 / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29194, 'epsg', 29194, 'SAD69 / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29195, 'epsg', 29195, 'SAD69 / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29220, 'epsg', 29220, 'Sapper Hill 1943 / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29221, 'epsg', 29221, 'Sapper Hill 1943 / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29333, 'epsg', 29333, 'Schwarzeck / UTM zone 33S', '+proj=utm +zone=33 +south +ellps=bess_nam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29635, 'epsg', 29635, 'Sudan / UTM zone 35N (deprecated)', '+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29636, 'epsg', 29636, 'Sudan / UTM zone 36N (deprecated)', '+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29700, 'epsg', 29700, 'Tananarive (Paris) / Laborde Grid (deprecated)', '+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29702, 'epsg', 29702, 'Tananarive (Paris) / Laborde Grid approximation', '+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29738, 'epsg', 29738, 'Tananarive / UTM zone 38S', '+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29739, 'epsg', 29739, 'Tananarive / UTM zone 39S', '+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29849, 'epsg', 29849, 'Timbalai 1948 / UTM zone 49N', '+proj=utm +zone=49 +ellps=evrstSS +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29850, 'epsg', 29850, 'Timbalai 1948 / UTM zone 50N', '+proj=utm +zone=50 +ellps=evrstSS +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29871, 'epsg', 29871, 'Timbalai 1948 / RSO Borneo (ch)', '+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +ellps=evrstSS +to_meter=20.11676512155263 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29872, 'epsg', 29872, 'Timbalai 1948 / RSO Borneo (ft)', '+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +ellps=evrstSS +to_meter=0.3047994715386762 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29873, 'epsg', 29873, 'Timbalai 1948 / RSO Borneo (m)', '+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +ellps=evrstSS +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29900, 'epsg', 29900, 'TM65 / Irish National Grid (deprecated)', '+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29901, 'epsg', 29901, 'OSNI 1952 / Irish National Grid', '+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29902, 'epsg', 29902, 'TM65 / Irish Grid', '+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (29903, 'epsg', 29903, 'TM75 / Irish Grid', '+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +a=6377340.189 +b=6356034.447938534 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30161, 'epsg', 30161, 'Tokyo / Japan Plane Rectangular CS I', '+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30162, 'epsg', 30162, 'Tokyo / Japan Plane Rectangular CS II', '+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30163, 'epsg', 30163, 'Tokyo / Japan Plane Rectangular CS III', '+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30164, 'epsg', 30164, 'Tokyo / Japan Plane Rectangular CS IV', '+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30165, 'epsg', 30165, 'Tokyo / Japan Plane Rectangular CS V', '+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30166, 'epsg', 30166, 'Tokyo / Japan Plane Rectangular CS VI', '+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30167, 'epsg', 30167, 'Tokyo / Japan Plane Rectangular CS VII', '+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30168, 'epsg', 30168, 'Tokyo / Japan Plane Rectangular CS VIII', '+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30169, 'epsg', 30169, 'Tokyo / Japan Plane Rectangular CS IX', '+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30170, 'epsg', 30170, 'Tokyo / Japan Plane Rectangular CS X', '+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30171, 'epsg', 30171, 'Tokyo / Japan Plane Rectangular CS XI', '+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30172, 'epsg', 30172, 'Tokyo / Japan Plane Rectangular CS XII', '+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30173, 'epsg', 30173, 'Tokyo / Japan Plane Rectangular CS XIII', '+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30174, 'epsg', 30174, 'Tokyo / Japan Plane Rectangular CS XIV', '+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30175, 'epsg', 30175, 'Tokyo / Japan Plane Rectangular CS XV', '+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30176, 'epsg', 30176, 'Tokyo / Japan Plane Rectangular CS XVI', '+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30177, 'epsg', 30177, 'Tokyo / Japan Plane Rectangular CS XVII', '+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30178, 'epsg', 30178, 'Tokyo / Japan Plane Rectangular CS XVIII', '+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30179, 'epsg', 30179, 'Tokyo / Japan Plane Rectangular CS XIX', '+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30200, 'epsg', 30200, 'Trinidad 1903 / Trinidad Grid', '+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30339, 'epsg', 30339, 'TC(1948) / UTM zone 39N', '+proj=utm +zone=39 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30340, 'epsg', 30340, 'TC(1948) / UTM zone 40N', '+proj=utm +zone=40 +ellps=helmert +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30491, 'epsg', 30491, 'Voirol 1875 / Nord Algerie (ancienne)', '+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30492, 'epsg', 30492, 'Voirol 1875 / Sud Algerie (ancienne)', '+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30493, 'epsg', 30493, 'Voirol 1879 / Nord Algerie (ancienne)', '+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30494, 'epsg', 30494, 'Voirol 1879 / Sud Algerie (ancienne)', '+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30729, 'epsg', 30729, 'Nord Sahara 1959 / UTM zone 29N', '+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30730, 'epsg', 30730, 'Nord Sahara 1959 / UTM zone 30N', '+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30731, 'epsg', 30731, 'Nord Sahara 1959 / UTM zone 31N', '+proj=utm +zone=31 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30732, 'epsg', 30732, 'Nord Sahara 1959 / UTM zone 32N', '+proj=utm +zone=32 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30791, 'epsg', 30791, 'Nord Sahara 1959 / Voirol Unifie Nord', '+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30792, 'epsg', 30792, 'Nord Sahara 1959 / Voirol Unifie Sud', '+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (30800, 'epsg', 30800, 'RT38 2.5 gon W (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31028, 'epsg', 31028, 'Yoff / UTM zone 28N', '+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31121, 'epsg', 31121, 'Zanderij / UTM zone 21N', '+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31154, 'epsg', 31154, 'Zanderij / TM 54 NW', '+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31170, 'epsg', 31170, 'Zanderij / Suriname Old TM', '+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31171, 'epsg', 31171, 'Zanderij / Suriname TM', '+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31251, 'epsg', 31251, 'MGI (Ferro) / Austria GK West Zone', '+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31252, 'epsg', 31252, 'MGI (Ferro) / Austria GK Central Zone', '+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31253, 'epsg', 31253, 'MGI (Ferro) / Austria GK East Zone', '+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31254, 'epsg', 31254, 'MGI / Austria GK West', '+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31255, 'epsg', 31255, 'MGI / Austria GK Central', '+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31256, 'epsg', 31256, 'MGI / Austria GK East', '+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31257, 'epsg', 31257, 'MGI / Austria GK M28', '+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31258, 'epsg', 31258, 'MGI / Austria GK M31', '+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31259, 'epsg', 31259, 'MGI / Austria GK M34', '+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31265, 'epsg', 31265, 'MGI / 3-degree Gauss zone 5 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31266, 'epsg', 31266, 'MGI / 3-degree Gauss zone 6 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31267, 'epsg', 31267, 'MGI / 3-degree Gauss zone 7 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31268, 'epsg', 31268, 'MGI / 3-degree Gauss zone 8 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31275, 'epsg', 31275, 'MGI / Balkans zone 5', '+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31276, 'epsg', 31276, 'MGI / Balkans zone 6', '+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31277, 'epsg', 31277, 'MGI / Balkans zone 7', '+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31278, 'epsg', 31278, 'MGI / Balkans zone 8 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31279, 'epsg', 31279, 'MGI / Balkans zone 8', '+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31281, 'epsg', 31281, 'MGI (Ferro) / Austria West Zone', '+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31282, 'epsg', 31282, 'MGI (Ferro) / Austria Central Zone', '+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31283, 'epsg', 31283, 'MGI (Ferro) / Austria East Zone', '+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31284, 'epsg', 31284, 'MGI / Austria M28', '+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31285, 'epsg', 31285, 'MGI / Austria M31', '+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31286, 'epsg', 31286, 'MGI / Austria M34', '+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31287, 'epsg', 31287, 'MGI / Austria Lambert', '+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31288, 'epsg', 31288, 'MGI (Ferro) / M28', '+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31289, 'epsg', 31289, 'MGI (Ferro) / M31', '+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31290, 'epsg', 31290, 'MGI (Ferro) / M34', '+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31291, 'epsg', 31291, 'MGI (Ferro) / Austria West Zone (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31292, 'epsg', 31292, 'MGI (Ferro) / Austria Central Zone (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31293, 'epsg', 31293, 'MGI (Ferro) / Austria East Zone (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31294, 'epsg', 31294, 'MGI / M28 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31295, 'epsg', 31295, 'MGI / M31 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31296, 'epsg', 31296, 'MGI / M34 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31297, 'epsg', 31297, 'MGI / Austria Lambert (deprecated)', '+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31300, 'epsg', 31300, 'Belge 1972 / Belge Lambert 72', '+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31370, 'epsg', 31370, 'Belge 1972 / Belgian Lambert 72', '+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31461, 'epsg', 31461, 'DHDN / 3-degree Gauss zone 1 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31462, 'epsg', 31462, 'DHDN / 3-degree Gauss zone 2 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31463, 'epsg', 31463, 'DHDN / 3-degree Gauss zone 3 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31464, 'epsg', 31464, 'DHDN / 3-degree Gauss zone 4 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31465, 'epsg', 31465, 'DHDN / 3-degree Gauss zone 5 (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31466, 'epsg', 31466, 'DHDN / Gauss-Kruger zone 2', '+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31467, 'epsg', 31467, 'DHDN / Gauss-Kruger zone 3', '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31468, 'epsg', 31468, 'DHDN / Gauss-Kruger zone 4', '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31469, 'epsg', 31469, 'DHDN / Gauss-Kruger zone 5', '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31528, 'epsg', 31528, 'Conakry 1905 / UTM zone 28N', '+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31529, 'epsg', 31529, 'Conakry 1905 / UTM zone 29N', '+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31600, 'epsg', 31600, 'Dealul Piscului 1933/ Stereo 33', '+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31700, 'epsg', 31700, 'Dealul Piscului 1970/ Stereo 70', '+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31838, 'epsg', 31838, 'NGN / UTM zone 38N', '+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31839, 'epsg', 31839, 'NGN / UTM zone 39N', '+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31900, 'epsg', 31900, 'KUDAMS / KTM (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31901, 'epsg', 31901, 'KUDAMS / KTM', '+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31965, 'epsg', 31965, 'SIRGAS 2000 / UTM zone 11N', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31966, 'epsg', 31966, 'SIRGAS 2000 / UTM zone 12N', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31967, 'epsg', 31967, 'SIRGAS 2000 / UTM zone 13N', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31968, 'epsg', 31968, 'SIRGAS 2000 / UTM zone 14N', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31969, 'epsg', 31969, 'SIRGAS 2000 / UTM zone 15N', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31970, 'epsg', 31970, 'SIRGAS 2000 / UTM zone 16N', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31971, 'epsg', 31971, 'SIRGAS 2000 / UTM zone 17N', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31972, 'epsg', 31972, 'SIRGAS 2000 / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31973, 'epsg', 31973, 'SIRGAS 2000 / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31974, 'epsg', 31974, 'SIRGAS 2000 / UTM zone 20N', '+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31975, 'epsg', 31975, 'SIRGAS 2000 / UTM zone 21N', '+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31976, 'epsg', 31976, 'SIRGAS 2000 / UTM zone 22N', '+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31977, 'epsg', 31977, 'SIRGAS 2000 / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31978, 'epsg', 31978, 'SIRGAS 2000 / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31979, 'epsg', 31979, 'SIRGAS 2000 / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31980, 'epsg', 31980, 'SIRGAS 2000 / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31981, 'epsg', 31981, 'SIRGAS 2000 / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31982, 'epsg', 31982, 'SIRGAS 2000 / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31983, 'epsg', 31983, 'SIRGAS 2000 / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31984, 'epsg', 31984, 'SIRGAS 2000 / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31985, 'epsg', 31985, 'SIRGAS 2000 / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31986, 'epsg', 31986, 'SIRGAS / UTM zone 17N', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31987, 'epsg', 31987, 'SIRGAS / UTM zone 18N', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31988, 'epsg', 31988, 'SIRGAS / UTM zone 19N', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31989, 'epsg', 31989, 'SIRGAS / UTM zone 20N', '+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31990, 'epsg', 31990, 'SIRGAS / UTM zone 21N', '+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31991, 'epsg', 31991, 'SIRGAS / UTM zone 22N', '+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31992, 'epsg', 31992, 'SIRGAS / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31993, 'epsg', 31993, 'SIRGAS / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31994, 'epsg', 31994, 'SIRGAS / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31995, 'epsg', 31995, 'SIRGAS / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31996, 'epsg', 31996, 'SIRGAS / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31997, 'epsg', 31997, 'SIRGAS / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31998, 'epsg', 31998, 'SIRGAS / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (31999, 'epsg', 31999, 'SIRGAS / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32000, 'epsg', 32000, 'SIRGAS / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32001, 'epsg', 32001, 'NAD27 / Montana North', '+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32002, 'epsg', 32002, 'NAD27 / Montana Central', '+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32003, 'epsg', 32003, 'NAD27 / Montana South', '+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32005, 'epsg', 32005, 'NAD27 / Nebraska North', '+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32006, 'epsg', 32006, 'NAD27 / Nebraska South', '+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32007, 'epsg', 32007, 'NAD27 / Nevada East', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32008, 'epsg', 32008, 'NAD27 / Nevada Central', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32009, 'epsg', 32009, 'NAD27 / Nevada West', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32010, 'epsg', 32010, 'NAD27 / New Hampshire', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32011, 'epsg', 32011, 'NAD27 / New Jersey', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32012, 'epsg', 32012, 'NAD27 / New Mexico East', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32013, 'epsg', 32013, 'NAD27 / New Mexico Central', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32014, 'epsg', 32014, 'NAD27 / New Mexico West', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32015, 'epsg', 32015, 'NAD27 / New York East', '+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32016, 'epsg', 32016, 'NAD27 / New York Central', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32017, 'epsg', 32017, 'NAD27 / New York West', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32018, 'epsg', 32018, 'NAD27 / New York Long Island', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32019, 'epsg', 32019, 'NAD27 / North Carolina', '+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32020, 'epsg', 32020, 'NAD27 / North Dakota North', '+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32021, 'epsg', 32021, 'NAD27 / North Dakota South', '+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32022, 'epsg', 32022, 'NAD27 / Ohio North', '+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32023, 'epsg', 32023, 'NAD27 / Ohio South', '+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32024, 'epsg', 32024, 'NAD27 / Oklahoma North', '+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32025, 'epsg', 32025, 'NAD27 / Oklahoma South', '+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32026, 'epsg', 32026, 'NAD27 / Oregon North', '+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32027, 'epsg', 32027, 'NAD27 / Oregon South', '+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32028, 'epsg', 32028, 'NAD27 / Pennsylvania North', '+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32029, 'epsg', 32029, 'NAD27 / Pennsylvania South', '+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32030, 'epsg', 32030, 'NAD27 / Rhode Island', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32031, 'epsg', 32031, 'NAD27 / South Carolina North', '+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32033, 'epsg', 32033, 'NAD27 / South Carolina South', '+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32034, 'epsg', 32034, 'NAD27 / South Dakota North', '+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32035, 'epsg', 32035, 'NAD27 / South Dakota South', '+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32036, 'epsg', 32036, 'NAD27 / Tennessee (deprecated)', '+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32037, 'epsg', 32037, 'NAD27 / Texas North', '+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32038, 'epsg', 32038, 'NAD27 / Texas North Central', '+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32039, 'epsg', 32039, 'NAD27 / Texas Central', '+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32040, 'epsg', 32040, 'NAD27 / Texas South Central', '+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32041, 'epsg', 32041, 'NAD27 / Texas South', '+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32042, 'epsg', 32042, 'NAD27 / Utah North', '+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32043, 'epsg', 32043, 'NAD27 / Utah Central', '+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32044, 'epsg', 32044, 'NAD27 / Utah South', '+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32045, 'epsg', 32045, 'NAD27 / Vermont', '+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32046, 'epsg', 32046, 'NAD27 / Virginia North', '+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32047, 'epsg', 32047, 'NAD27 / Virginia South', '+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32048, 'epsg', 32048, 'NAD27 / Washington North', '+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32049, 'epsg', 32049, 'NAD27 / Washington South', '+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32050, 'epsg', 32050, 'NAD27 / West Virginia North', '+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32051, 'epsg', 32051, 'NAD27 / West Virginia South', '+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32052, 'epsg', 32052, 'NAD27 / Wisconsin North', '+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32053, 'epsg', 32053, 'NAD27 / Wisconsin Central', '+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32054, 'epsg', 32054, 'NAD27 / Wisconsin South', '+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32055, 'epsg', 32055, 'NAD27 / Wyoming East', '+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32056, 'epsg', 32056, 'NAD27 / Wyoming East Central', '+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32057, 'epsg', 32057, 'NAD27 / Wyoming West Central', '+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32058, 'epsg', 32058, 'NAD27 / Wyoming West', '+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32061, 'epsg', 32061, 'NAD27 / Guatemala Norte', '+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32062, 'epsg', 32062, 'NAD27 / Guatemala Sur', '+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32064, 'epsg', 32064, 'NAD27 / BLM 14N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32065, 'epsg', 32065, 'NAD27 / BLM 15N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32066, 'epsg', 32066, 'NAD27 / BLM 16N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32067, 'epsg', 32067, 'NAD27 / BLM 17N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32074, 'epsg', 32074, 'NAD27 / BLM 14N (feet) (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32075, 'epsg', 32075, 'NAD27 / BLM 15N (feet) (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32076, 'epsg', 32076, 'NAD27 / BLM 16N (feet) (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32077, 'epsg', 32077, 'NAD27 / BLM 17N (feet) (deprecated)', '+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32081, 'epsg', 32081, 'NAD27 / MTM zone 1', '+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32082, 'epsg', 32082, 'NAD27 / MTM zone 2', '+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32083, 'epsg', 32083, 'NAD27 / MTM zone 3', '+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32084, 'epsg', 32084, 'NAD27 / MTM zone 4', '+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32085, 'epsg', 32085, 'NAD27 / MTM zone 5', '+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32086, 'epsg', 32086, 'NAD27 / MTM zone 6', '+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32098, 'epsg', 32098, 'NAD27 / Quebec Lambert', '+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32099, 'epsg', 32099, 'NAD27 / Louisiana Offshore', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32100, 'epsg', 32100, 'NAD83 / Montana', '+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32104, 'epsg', 32104, 'NAD83 / Nebraska', '+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32107, 'epsg', 32107, 'NAD83 / Nevada East', '+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32108, 'epsg', 32108, 'NAD83 / Nevada Central', '+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32109, 'epsg', 32109, 'NAD83 / Nevada West', '+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32110, 'epsg', 32110, 'NAD83 / New Hampshire', '+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32111, 'epsg', 32111, 'NAD83 / New Jersey', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32112, 'epsg', 32112, 'NAD83 / New Mexico East', '+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32113, 'epsg', 32113, 'NAD83 / New Mexico Central', '+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32114, 'epsg', 32114, 'NAD83 / New Mexico West', '+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32115, 'epsg', 32115, 'NAD83 / New York East', '+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32116, 'epsg', 32116, 'NAD83 / New York Central', '+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32117, 'epsg', 32117, 'NAD83 / New York West', '+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32118, 'epsg', 32118, 'NAD83 / New York Long Island', '+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32119, 'epsg', 32119, 'NAD83 / North Carolina', '+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32120, 'epsg', 32120, 'NAD83 / North Dakota North', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32121, 'epsg', 32121, 'NAD83 / North Dakota South', '+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32122, 'epsg', 32122, 'NAD83 / Ohio North', '+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32123, 'epsg', 32123, 'NAD83 / Ohio South', '+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32124, 'epsg', 32124, 'NAD83 / Oklahoma North', '+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32125, 'epsg', 32125, 'NAD83 / Oklahoma South', '+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32126, 'epsg', 32126, 'NAD83 / Oregon North', '+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32127, 'epsg', 32127, 'NAD83 / Oregon South', '+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32128, 'epsg', 32128, 'NAD83 / Pennsylvania North', '+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32129, 'epsg', 32129, 'NAD83 / Pennsylvania South', '+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32130, 'epsg', 32130, 'NAD83 / Rhode Island', '+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32133, 'epsg', 32133, 'NAD83 / South Carolina', '+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32134, 'epsg', 32134, 'NAD83 / South Dakota North', '+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32135, 'epsg', 32135, 'NAD83 / South Dakota South', '+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32136, 'epsg', 32136, 'NAD83 / Tennessee', '+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32137, 'epsg', 32137, 'NAD83 / Texas North', '+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32138, 'epsg', 32138, 'NAD83 / Texas North Central', '+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32139, 'epsg', 32139, 'NAD83 / Texas Central', '+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32140, 'epsg', 32140, 'NAD83 / Texas South Central', '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32141, 'epsg', 32141, 'NAD83 / Texas South', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32142, 'epsg', 32142, 'NAD83 / Utah North', '+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32143, 'epsg', 32143, 'NAD83 / Utah Central', '+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32144, 'epsg', 32144, 'NAD83 / Utah South', '+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32145, 'epsg', 32145, 'NAD83 / Vermont', '+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32146, 'epsg', 32146, 'NAD83 / Virginia North', '+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32147, 'epsg', 32147, 'NAD83 / Virginia South', '+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32148, 'epsg', 32148, 'NAD83 / Washington North', '+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32149, 'epsg', 32149, 'NAD83 / Washington South', '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32150, 'epsg', 32150, 'NAD83 / West Virginia North', '+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32151, 'epsg', 32151, 'NAD83 / West Virginia South', '+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32152, 'epsg', 32152, 'NAD83 / Wisconsin North', '+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32153, 'epsg', 32153, 'NAD83 / Wisconsin Central', '+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32154, 'epsg', 32154, 'NAD83 / Wisconsin South', '+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32155, 'epsg', 32155, 'NAD83 / Wyoming East', '+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32156, 'epsg', 32156, 'NAD83 / Wyoming East Central', '+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32157, 'epsg', 32157, 'NAD83 / Wyoming West Central', '+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32158, 'epsg', 32158, 'NAD83 / Wyoming West', '+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32161, 'epsg', 32161, 'NAD83 / Puerto Rico & Virgin Is.', '+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32164, 'epsg', 32164, 'NAD83 / BLM 14N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32165, 'epsg', 32165, 'NAD83 / BLM 15N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32166, 'epsg', 32166, 'NAD83 / BLM 16N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32167, 'epsg', 32167, 'NAD83 / BLM 17N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32180, 'epsg', 32180, 'NAD83 / SCoPQ zone 2', '+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32181, 'epsg', 32181, 'NAD83 / MTM zone 1', '+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32182, 'epsg', 32182, 'NAD83 / MTM zone 2', '+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32183, 'epsg', 32183, 'NAD83 / MTM zone 3', '+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32184, 'epsg', 32184, 'NAD83 / MTM zone 4', '+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32185, 'epsg', 32185, 'NAD83 / MTM zone 5', '+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32186, 'epsg', 32186, 'NAD83 / MTM zone 6', '+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32187, 'epsg', 32187, 'NAD83 / MTM zone 7', '+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32188, 'epsg', 32188, 'NAD83 / MTM zone 8', '+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32189, 'epsg', 32189, 'NAD83 / MTM zone 9', '+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32190, 'epsg', 32190, 'NAD83 / MTM zone 10', '+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32191, 'epsg', 32191, 'NAD83 / MTM zone 11', '+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32192, 'epsg', 32192, 'NAD83 / MTM zone 12', '+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32193, 'epsg', 32193, 'NAD83 / MTM zone 13', '+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32194, 'epsg', 32194, 'NAD83 / MTM zone 14', '+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32195, 'epsg', 32195, 'NAD83 / MTM zone 15', '+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32196, 'epsg', 32196, 'NAD83 / MTM zone 16', '+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32197, 'epsg', 32197, 'NAD83 / MTM zone 17', '+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32198, 'epsg', 32198, 'NAD83 / Quebec Lambert', '+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32199, 'epsg', 32199, 'NAD83 / Louisiana Offshore', '+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32201, 'epsg', 32201, 'WGS 72 / UTM zone 1N', '+proj=utm +zone=1 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32202, 'epsg', 32202, 'WGS 72 / UTM zone 2N', '+proj=utm +zone=2 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32203, 'epsg', 32203, 'WGS 72 / UTM zone 3N', '+proj=utm +zone=3 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32204, 'epsg', 32204, 'WGS 72 / UTM zone 4N', '+proj=utm +zone=4 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32205, 'epsg', 32205, 'WGS 72 / UTM zone 5N', '+proj=utm +zone=5 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32206, 'epsg', 32206, 'WGS 72 / UTM zone 6N', '+proj=utm +zone=6 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32207, 'epsg', 32207, 'WGS 72 / UTM zone 7N', '+proj=utm +zone=7 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32208, 'epsg', 32208, 'WGS 72 / UTM zone 8N', '+proj=utm +zone=8 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32209, 'epsg', 32209, 'WGS 72 / UTM zone 9N', '+proj=utm +zone=9 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32210, 'epsg', 32210, 'WGS 72 / UTM zone 10N', '+proj=utm +zone=10 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32211, 'epsg', 32211, 'WGS 72 / UTM zone 11N', '+proj=utm +zone=11 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32212, 'epsg', 32212, 'WGS 72 / UTM zone 12N', '+proj=utm +zone=12 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32213, 'epsg', 32213, 'WGS 72 / UTM zone 13N', '+proj=utm +zone=13 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32214, 'epsg', 32214, 'WGS 72 / UTM zone 14N', '+proj=utm +zone=14 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32215, 'epsg', 32215, 'WGS 72 / UTM zone 15N', '+proj=utm +zone=15 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32216, 'epsg', 32216, 'WGS 72 / UTM zone 16N', '+proj=utm +zone=16 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32217, 'epsg', 32217, 'WGS 72 / UTM zone 17N', '+proj=utm +zone=17 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32218, 'epsg', 32218, 'WGS 72 / UTM zone 18N', '+proj=utm +zone=18 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32219, 'epsg', 32219, 'WGS 72 / UTM zone 19N', '+proj=utm +zone=19 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32220, 'epsg', 32220, 'WGS 72 / UTM zone 20N', '+proj=utm +zone=20 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32221, 'epsg', 32221, 'WGS 72 / UTM zone 21N', '+proj=utm +zone=21 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32222, 'epsg', 32222, 'WGS 72 / UTM zone 22N', '+proj=utm +zone=22 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32223, 'epsg', 32223, 'WGS 72 / UTM zone 23N', '+proj=utm +zone=23 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32224, 'epsg', 32224, 'WGS 72 / UTM zone 24N', '+proj=utm +zone=24 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32225, 'epsg', 32225, 'WGS 72 / UTM zone 25N', '+proj=utm +zone=25 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32226, 'epsg', 32226, 'WGS 72 / UTM zone 26N', '+proj=utm +zone=26 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32227, 'epsg', 32227, 'WGS 72 / UTM zone 27N', '+proj=utm +zone=27 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32228, 'epsg', 32228, 'WGS 72 / UTM zone 28N', '+proj=utm +zone=28 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32229, 'epsg', 32229, 'WGS 72 / UTM zone 29N', '+proj=utm +zone=29 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32230, 'epsg', 32230, 'WGS 72 / UTM zone 30N', '+proj=utm +zone=30 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32231, 'epsg', 32231, 'WGS 72 / UTM zone 31N', '+proj=utm +zone=31 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32232, 'epsg', 32232, 'WGS 72 / UTM zone 32N', '+proj=utm +zone=32 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32233, 'epsg', 32233, 'WGS 72 / UTM zone 33N', '+proj=utm +zone=33 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32234, 'epsg', 32234, 'WGS 72 / UTM zone 34N', '+proj=utm +zone=34 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32235, 'epsg', 32235, 'WGS 72 / UTM zone 35N', '+proj=utm +zone=35 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32236, 'epsg', 32236, 'WGS 72 / UTM zone 36N', '+proj=utm +zone=36 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32237, 'epsg', 32237, 'WGS 72 / UTM zone 37N', '+proj=utm +zone=37 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32238, 'epsg', 32238, 'WGS 72 / UTM zone 38N', '+proj=utm +zone=38 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32239, 'epsg', 32239, 'WGS 72 / UTM zone 39N', '+proj=utm +zone=39 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32240, 'epsg', 32240, 'WGS 72 / UTM zone 40N', '+proj=utm +zone=40 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32241, 'epsg', 32241, 'WGS 72 / UTM zone 41N', '+proj=utm +zone=41 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32242, 'epsg', 32242, 'WGS 72 / UTM zone 42N', '+proj=utm +zone=42 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32243, 'epsg', 32243, 'WGS 72 / UTM zone 43N', '+proj=utm +zone=43 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32244, 'epsg', 32244, 'WGS 72 / UTM zone 44N', '+proj=utm +zone=44 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32245, 'epsg', 32245, 'WGS 72 / UTM zone 45N', '+proj=utm +zone=45 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32246, 'epsg', 32246, 'WGS 72 / UTM zone 46N', '+proj=utm +zone=46 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32247, 'epsg', 32247, 'WGS 72 / UTM zone 47N', '+proj=utm +zone=47 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32248, 'epsg', 32248, 'WGS 72 / UTM zone 48N', '+proj=utm +zone=48 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32249, 'epsg', 32249, 'WGS 72 / UTM zone 49N', '+proj=utm +zone=49 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32250, 'epsg', 32250, 'WGS 72 / UTM zone 50N', '+proj=utm +zone=50 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32251, 'epsg', 32251, 'WGS 72 / UTM zone 51N', '+proj=utm +zone=51 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32252, 'epsg', 32252, 'WGS 72 / UTM zone 52N', '+proj=utm +zone=52 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32253, 'epsg', 32253, 'WGS 72 / UTM zone 53N', '+proj=utm +zone=53 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32254, 'epsg', 32254, 'WGS 72 / UTM zone 54N', '+proj=utm +zone=54 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32255, 'epsg', 32255, 'WGS 72 / UTM zone 55N', '+proj=utm +zone=55 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32256, 'epsg', 32256, 'WGS 72 / UTM zone 56N', '+proj=utm +zone=56 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32257, 'epsg', 32257, 'WGS 72 / UTM zone 57N', '+proj=utm +zone=57 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32258, 'epsg', 32258, 'WGS 72 / UTM zone 58N', '+proj=utm +zone=58 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32259, 'epsg', 32259, 'WGS 72 / UTM zone 59N', '+proj=utm +zone=59 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32260, 'epsg', 32260, 'WGS 72 / UTM zone 60N', '+proj=utm +zone=60 +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32301, 'epsg', 32301, 'WGS 72 / UTM zone 1S', '+proj=utm +zone=1 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32302, 'epsg', 32302, 'WGS 72 / UTM zone 2S', '+proj=utm +zone=2 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32303, 'epsg', 32303, 'WGS 72 / UTM zone 3S', '+proj=utm +zone=3 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32304, 'epsg', 32304, 'WGS 72 / UTM zone 4S', '+proj=utm +zone=4 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32305, 'epsg', 32305, 'WGS 72 / UTM zone 5S', '+proj=utm +zone=5 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32306, 'epsg', 32306, 'WGS 72 / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32307, 'epsg', 32307, 'WGS 72 / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32308, 'epsg', 32308, 'WGS 72 / UTM zone 8S', '+proj=utm +zone=8 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32309, 'epsg', 32309, 'WGS 72 / UTM zone 9S', '+proj=utm +zone=9 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32310, 'epsg', 32310, 'WGS 72 / UTM zone 10S', '+proj=utm +zone=10 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32311, 'epsg', 32311, 'WGS 72 / UTM zone 11S', '+proj=utm +zone=11 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32312, 'epsg', 32312, 'WGS 72 / UTM zone 12S', '+proj=utm +zone=12 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32313, 'epsg', 32313, 'WGS 72 / UTM zone 13S', '+proj=utm +zone=13 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32314, 'epsg', 32314, 'WGS 72 / UTM zone 14S', '+proj=utm +zone=14 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32315, 'epsg', 32315, 'WGS 72 / UTM zone 15S', '+proj=utm +zone=15 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32316, 'epsg', 32316, 'WGS 72 / UTM zone 16S', '+proj=utm +zone=16 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32317, 'epsg', 32317, 'WGS 72 / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32318, 'epsg', 32318, 'WGS 72 / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32319, 'epsg', 32319, 'WGS 72 / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32320, 'epsg', 32320, 'WGS 72 / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32321, 'epsg', 32321, 'WGS 72 / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32322, 'epsg', 32322, 'WGS 72 / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32323, 'epsg', 32323, 'WGS 72 / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32324, 'epsg', 32324, 'WGS 72 / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32325, 'epsg', 32325, 'WGS 72 / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32326, 'epsg', 32326, 'WGS 72 / UTM zone 26S', '+proj=utm +zone=26 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32327, 'epsg', 32327, 'WGS 72 / UTM zone 27S', '+proj=utm +zone=27 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32328, 'epsg', 32328, 'WGS 72 / UTM zone 28S', '+proj=utm +zone=28 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32329, 'epsg', 32329, 'WGS 72 / UTM zone 29S', '+proj=utm +zone=29 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32330, 'epsg', 32330, 'WGS 72 / UTM zone 30S', '+proj=utm +zone=30 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32331, 'epsg', 32331, 'WGS 72 / UTM zone 31S', '+proj=utm +zone=31 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32332, 'epsg', 32332, 'WGS 72 / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32333, 'epsg', 32333, 'WGS 72 / UTM zone 33S', '+proj=utm +zone=33 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32334, 'epsg', 32334, 'WGS 72 / UTM zone 34S', '+proj=utm +zone=34 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32335, 'epsg', 32335, 'WGS 72 / UTM zone 35S', '+proj=utm +zone=35 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32336, 'epsg', 32336, 'WGS 72 / UTM zone 36S', '+proj=utm +zone=36 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32337, 'epsg', 32337, 'WGS 72 / UTM zone 37S', '+proj=utm +zone=37 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32338, 'epsg', 32338, 'WGS 72 / UTM zone 38S', '+proj=utm +zone=38 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32339, 'epsg', 32339, 'WGS 72 / UTM zone 39S', '+proj=utm +zone=39 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32340, 'epsg', 32340, 'WGS 72 / UTM zone 40S', '+proj=utm +zone=40 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32341, 'epsg', 32341, 'WGS 72 / UTM zone 41S', '+proj=utm +zone=41 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32342, 'epsg', 32342, 'WGS 72 / UTM zone 42S', '+proj=utm +zone=42 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32343, 'epsg', 32343, 'WGS 72 / UTM zone 43S', '+proj=utm +zone=43 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32344, 'epsg', 32344, 'WGS 72 / UTM zone 44S', '+proj=utm +zone=44 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32345, 'epsg', 32345, 'WGS 72 / UTM zone 45S', '+proj=utm +zone=45 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32346, 'epsg', 32346, 'WGS 72 / UTM zone 46S', '+proj=utm +zone=46 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32347, 'epsg', 32347, 'WGS 72 / UTM zone 47S', '+proj=utm +zone=47 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32348, 'epsg', 32348, 'WGS 72 / UTM zone 48S', '+proj=utm +zone=48 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32349, 'epsg', 32349, 'WGS 72 / UTM zone 49S', '+proj=utm +zone=49 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32350, 'epsg', 32350, 'WGS 72 / UTM zone 50S', '+proj=utm +zone=50 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32351, 'epsg', 32351, 'WGS 72 / UTM zone 51S', '+proj=utm +zone=51 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32352, 'epsg', 32352, 'WGS 72 / UTM zone 52S', '+proj=utm +zone=52 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32353, 'epsg', 32353, 'WGS 72 / UTM zone 53S', '+proj=utm +zone=53 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32354, 'epsg', 32354, 'WGS 72 / UTM zone 54S', '+proj=utm +zone=54 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32355, 'epsg', 32355, 'WGS 72 / UTM zone 55S', '+proj=utm +zone=55 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32356, 'epsg', 32356, 'WGS 72 / UTM zone 56S', '+proj=utm +zone=56 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32357, 'epsg', 32357, 'WGS 72 / UTM zone 57S', '+proj=utm +zone=57 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32358, 'epsg', 32358, 'WGS 72 / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32359, 'epsg', 32359, 'WGS 72 / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32360, 'epsg', 32360, 'WGS 72 / UTM zone 60S', '+proj=utm +zone=60 +south +ellps=WGS72 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32401, 'epsg', 32401, 'WGS 72BE / UTM zone 1N', '+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32402, 'epsg', 32402, 'WGS 72BE / UTM zone 2N', '+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32403, 'epsg', 32403, 'WGS 72BE / UTM zone 3N', '+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32404, 'epsg', 32404, 'WGS 72BE / UTM zone 4N', '+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32405, 'epsg', 32405, 'WGS 72BE / UTM zone 5N', '+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32406, 'epsg', 32406, 'WGS 72BE / UTM zone 6N', '+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32407, 'epsg', 32407, 'WGS 72BE / UTM zone 7N', '+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32408, 'epsg', 32408, 'WGS 72BE / UTM zone 8N', '+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32409, 'epsg', 32409, 'WGS 72BE / UTM zone 9N', '+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32410, 'epsg', 32410, 'WGS 72BE / UTM zone 10N', '+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32411, 'epsg', 32411, 'WGS 72BE / UTM zone 11N', '+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32412, 'epsg', 32412, 'WGS 72BE / UTM zone 12N', '+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32413, 'epsg', 32413, 'WGS 72BE / UTM zone 13N', '+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32414, 'epsg', 32414, 'WGS 72BE / UTM zone 14N', '+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32415, 'epsg', 32415, 'WGS 72BE / UTM zone 15N', '+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32416, 'epsg', 32416, 'WGS 72BE / UTM zone 16N', '+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32417, 'epsg', 32417, 'WGS 72BE / UTM zone 17N', '+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32418, 'epsg', 32418, 'WGS 72BE / UTM zone 18N', '+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32419, 'epsg', 32419, 'WGS 72BE / UTM zone 19N', '+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32420, 'epsg', 32420, 'WGS 72BE / UTM zone 20N', '+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32421, 'epsg', 32421, 'WGS 72BE / UTM zone 21N', '+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32422, 'epsg', 32422, 'WGS 72BE / UTM zone 22N', '+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32423, 'epsg', 32423, 'WGS 72BE / UTM zone 23N', '+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32424, 'epsg', 32424, 'WGS 72BE / UTM zone 24N', '+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32425, 'epsg', 32425, 'WGS 72BE / UTM zone 25N', '+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32426, 'epsg', 32426, 'WGS 72BE / UTM zone 26N', '+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32427, 'epsg', 32427, 'WGS 72BE / UTM zone 27N', '+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32428, 'epsg', 32428, 'WGS 72BE / UTM zone 28N', '+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32429, 'epsg', 32429, 'WGS 72BE / UTM zone 29N', '+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32430, 'epsg', 32430, 'WGS 72BE / UTM zone 30N', '+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32431, 'epsg', 32431, 'WGS 72BE / UTM zone 31N', '+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32432, 'epsg', 32432, 'WGS 72BE / UTM zone 32N', '+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32433, 'epsg', 32433, 'WGS 72BE / UTM zone 33N', '+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32434, 'epsg', 32434, 'WGS 72BE / UTM zone 34N', '+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32435, 'epsg', 32435, 'WGS 72BE / UTM zone 35N', '+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32436, 'epsg', 32436, 'WGS 72BE / UTM zone 36N', '+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32437, 'epsg', 32437, 'WGS 72BE / UTM zone 37N', '+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32438, 'epsg', 32438, 'WGS 72BE / UTM zone 38N', '+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32439, 'epsg', 32439, 'WGS 72BE / UTM zone 39N', '+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32440, 'epsg', 32440, 'WGS 72BE / UTM zone 40N', '+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32441, 'epsg', 32441, 'WGS 72BE / UTM zone 41N', '+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32442, 'epsg', 32442, 'WGS 72BE / UTM zone 42N', '+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32443, 'epsg', 32443, 'WGS 72BE / UTM zone 43N', '+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32444, 'epsg', 32444, 'WGS 72BE / UTM zone 44N', '+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32445, 'epsg', 32445, 'WGS 72BE / UTM zone 45N', '+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32446, 'epsg', 32446, 'WGS 72BE / UTM zone 46N', '+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32447, 'epsg', 32447, 'WGS 72BE / UTM zone 47N', '+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32448, 'epsg', 32448, 'WGS 72BE / UTM zone 48N', '+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32449, 'epsg', 32449, 'WGS 72BE / UTM zone 49N', '+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32450, 'epsg', 32450, 'WGS 72BE / UTM zone 50N', '+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32451, 'epsg', 32451, 'WGS 72BE / UTM zone 51N', '+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32452, 'epsg', 32452, 'WGS 72BE / UTM zone 52N', '+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32453, 'epsg', 32453, 'WGS 72BE / UTM zone 53N', '+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32454, 'epsg', 32454, 'WGS 72BE / UTM zone 54N', '+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32455, 'epsg', 32455, 'WGS 72BE / UTM zone 55N', '+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32456, 'epsg', 32456, 'WGS 72BE / UTM zone 56N', '+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32457, 'epsg', 32457, 'WGS 72BE / UTM zone 57N', '+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32458, 'epsg', 32458, 'WGS 72BE / UTM zone 58N', '+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32459, 'epsg', 32459, 'WGS 72BE / UTM zone 59N', '+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32460, 'epsg', 32460, 'WGS 72BE / UTM zone 60N', '+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32501, 'epsg', 32501, 'WGS 72BE / UTM zone 1S', '+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32502, 'epsg', 32502, 'WGS 72BE / UTM zone 2S', '+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32503, 'epsg', 32503, 'WGS 72BE / UTM zone 3S', '+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32504, 'epsg', 32504, 'WGS 72BE / UTM zone 4S', '+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32505, 'epsg', 32505, 'WGS 72BE / UTM zone 5S', '+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32506, 'epsg', 32506, 'WGS 72BE / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32507, 'epsg', 32507, 'WGS 72BE / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32508, 'epsg', 32508, 'WGS 72BE / UTM zone 8S', '+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32509, 'epsg', 32509, 'WGS 72BE / UTM zone 9S', '+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32510, 'epsg', 32510, 'WGS 72BE / UTM zone 10S', '+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32511, 'epsg', 32511, 'WGS 72BE / UTM zone 11S', '+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32512, 'epsg', 32512, 'WGS 72BE / UTM zone 12S', '+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32513, 'epsg', 32513, 'WGS 72BE / UTM zone 13S', '+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32514, 'epsg', 32514, 'WGS 72BE / UTM zone 14S', '+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32515, 'epsg', 32515, 'WGS 72BE / UTM zone 15S', '+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32516, 'epsg', 32516, 'WGS 72BE / UTM zone 16S', '+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32517, 'epsg', 32517, 'WGS 72BE / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32518, 'epsg', 32518, 'WGS 72BE / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32519, 'epsg', 32519, 'WGS 72BE / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32520, 'epsg', 32520, 'WGS 72BE / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32521, 'epsg', 32521, 'WGS 72BE / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32522, 'epsg', 32522, 'WGS 72BE / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32523, 'epsg', 32523, 'WGS 72BE / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32524, 'epsg', 32524, 'WGS 72BE / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32525, 'epsg', 32525, 'WGS 72BE / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32526, 'epsg', 32526, 'WGS 72BE / UTM zone 26S', '+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32527, 'epsg', 32527, 'WGS 72BE / UTM zone 27S', '+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32528, 'epsg', 32528, 'WGS 72BE / UTM zone 28S', '+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32529, 'epsg', 32529, 'WGS 72BE / UTM zone 29S', '+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32530, 'epsg', 32530, 'WGS 72BE / UTM zone 30S', '+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32531, 'epsg', 32531, 'WGS 72BE / UTM zone 31S', '+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32532, 'epsg', 32532, 'WGS 72BE / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32533, 'epsg', 32533, 'WGS 72BE / UTM zone 33S', '+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32534, 'epsg', 32534, 'WGS 72BE / UTM zone 34S', '+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32535, 'epsg', 32535, 'WGS 72BE / UTM zone 35S', '+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32536, 'epsg', 32536, 'WGS 72BE / UTM zone 36S', '+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32537, 'epsg', 32537, 'WGS 72BE / UTM zone 37S', '+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32538, 'epsg', 32538, 'WGS 72BE / UTM zone 38S', '+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32539, 'epsg', 32539, 'WGS 72BE / UTM zone 39S', '+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32540, 'epsg', 32540, 'WGS 72BE / UTM zone 40S', '+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32541, 'epsg', 32541, 'WGS 72BE / UTM zone 41S', '+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32542, 'epsg', 32542, 'WGS 72BE / UTM zone 42S', '+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32543, 'epsg', 32543, 'WGS 72BE / UTM zone 43S', '+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32544, 'epsg', 32544, 'WGS 72BE / UTM zone 44S', '+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32545, 'epsg', 32545, 'WGS 72BE / UTM zone 45S', '+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32546, 'epsg', 32546, 'WGS 72BE / UTM zone 46S', '+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32547, 'epsg', 32547, 'WGS 72BE / UTM zone 47S', '+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32548, 'epsg', 32548, 'WGS 72BE / UTM zone 48S', '+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32549, 'epsg', 32549, 'WGS 72BE / UTM zone 49S', '+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32550, 'epsg', 32550, 'WGS 72BE / UTM zone 50S', '+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32551, 'epsg', 32551, 'WGS 72BE / UTM zone 51S', '+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32552, 'epsg', 32552, 'WGS 72BE / UTM zone 52S', '+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32553, 'epsg', 32553, 'WGS 72BE / UTM zone 53S', '+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32554, 'epsg', 32554, 'WGS 72BE / UTM zone 54S', '+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32555, 'epsg', 32555, 'WGS 72BE / UTM zone 55S', '+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32556, 'epsg', 32556, 'WGS 72BE / UTM zone 56S', '+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32557, 'epsg', 32557, 'WGS 72BE / UTM zone 57S', '+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32558, 'epsg', 32558, 'WGS 72BE / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32559, 'epsg', 32559, 'WGS 72BE / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32560, 'epsg', 32560, 'WGS 72BE / UTM zone 60S', '+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32601, 'epsg', 32601, 'WGS 84 / UTM zone 1N', '+proj=utm +zone=1 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32602, 'epsg', 32602, 'WGS 84 / UTM zone 2N', '+proj=utm +zone=2 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32603, 'epsg', 32603, 'WGS 84 / UTM zone 3N', '+proj=utm +zone=3 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32604, 'epsg', 32604, 'WGS 84 / UTM zone 4N', '+proj=utm +zone=4 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32605, 'epsg', 32605, 'WGS 84 / UTM zone 5N', '+proj=utm +zone=5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32606, 'epsg', 32606, 'WGS 84 / UTM zone 6N', '+proj=utm +zone=6 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32607, 'epsg', 32607, 'WGS 84 / UTM zone 7N', '+proj=utm +zone=7 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32608, 'epsg', 32608, 'WGS 84 / UTM zone 8N', '+proj=utm +zone=8 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32609, 'epsg', 32609, 'WGS 84 / UTM zone 9N', '+proj=utm +zone=9 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32610, 'epsg', 32610, 'WGS 84 / UTM zone 10N', '+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32611, 'epsg', 32611, 'WGS 84 / UTM zone 11N', '+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32612, 'epsg', 32612, 'WGS 84 / UTM zone 12N', '+proj=utm +zone=12 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32613, 'epsg', 32613, 'WGS 84 / UTM zone 13N', '+proj=utm +zone=13 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32614, 'epsg', 32614, 'WGS 84 / UTM zone 14N', '+proj=utm +zone=14 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32615, 'epsg', 32615, 'WGS 84 / UTM zone 15N', '+proj=utm +zone=15 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32616, 'epsg', 32616, 'WGS 84 / UTM zone 16N', '+proj=utm +zone=16 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32617, 'epsg', 32617, 'WGS 84 / UTM zone 17N', '+proj=utm +zone=17 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32618, 'epsg', 32618, 'WGS 84 / UTM zone 18N', '+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32619, 'epsg', 32619, 'WGS 84 / UTM zone 19N', '+proj=utm +zone=19 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32620, 'epsg', 32620, 'WGS 84 / UTM zone 20N', '+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32621, 'epsg', 32621, 'WGS 84 / UTM zone 21N', '+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32622, 'epsg', 32622, 'WGS 84 / UTM zone 22N', '+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32623, 'epsg', 32623, 'WGS 84 / UTM zone 23N', '+proj=utm +zone=23 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32624, 'epsg', 32624, 'WGS 84 / UTM zone 24N', '+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32625, 'epsg', 32625, 'WGS 84 / UTM zone 25N', '+proj=utm +zone=25 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32626, 'epsg', 32626, 'WGS 84 / UTM zone 26N', '+proj=utm +zone=26 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32627, 'epsg', 32627, 'WGS 84 / UTM zone 27N', '+proj=utm +zone=27 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32628, 'epsg', 32628, 'WGS 84 / UTM zone 28N', '+proj=utm +zone=28 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32629, 'epsg', 32629, 'WGS 84 / UTM zone 29N', '+proj=utm +zone=29 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32630, 'epsg', 32630, 'WGS 84 / UTM zone 30N', '+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32631, 'epsg', 32631, 'WGS 84 / UTM zone 31N', '+proj=utm +zone=31 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32632, 'epsg', 32632, 'WGS 84 / UTM zone 32N', '+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32633, 'epsg', 32633, 'WGS 84 / UTM zone 33N', '+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32634, 'epsg', 32634, 'WGS 84 / UTM zone 34N', '+proj=utm +zone=34 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32635, 'epsg', 32635, 'WGS 84 / UTM zone 35N', '+proj=utm +zone=35 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32636, 'epsg', 32636, 'WGS 84 / UTM zone 36N', '+proj=utm +zone=36 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32637, 'epsg', 32637, 'WGS 84 / UTM zone 37N', '+proj=utm +zone=37 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32638, 'epsg', 32638, 'WGS 84 / UTM zone 38N', '+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32639, 'epsg', 32639, 'WGS 84 / UTM zone 39N', '+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32640, 'epsg', 32640, 'WGS 84 / UTM zone 40N', '+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32641, 'epsg', 32641, 'WGS 84 / UTM zone 41N', '+proj=utm +zone=41 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32642, 'epsg', 32642, 'WGS 84 / UTM zone 42N', '+proj=utm +zone=42 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32643, 'epsg', 32643, 'WGS 84 / UTM zone 43N', '+proj=utm +zone=43 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32644, 'epsg', 32644, 'WGS 84 / UTM zone 44N', '+proj=utm +zone=44 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32645, 'epsg', 32645, 'WGS 84 / UTM zone 45N', '+proj=utm +zone=45 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32646, 'epsg', 32646, 'WGS 84 / UTM zone 46N', '+proj=utm +zone=46 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32647, 'epsg', 32647, 'WGS 84 / UTM zone 47N', '+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32648, 'epsg', 32648, 'WGS 84 / UTM zone 48N', '+proj=utm +zone=48 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32649, 'epsg', 32649, 'WGS 84 / UTM zone 49N', '+proj=utm +zone=49 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32650, 'epsg', 32650, 'WGS 84 / UTM zone 50N', '+proj=utm +zone=50 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32651, 'epsg', 32651, 'WGS 84 / UTM zone 51N', '+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32652, 'epsg', 32652, 'WGS 84 / UTM zone 52N', '+proj=utm +zone=52 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32653, 'epsg', 32653, 'WGS 84 / UTM zone 53N', '+proj=utm +zone=53 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32654, 'epsg', 32654, 'WGS 84 / UTM zone 54N', '+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32655, 'epsg', 32655, 'WGS 84 / UTM zone 55N', '+proj=utm +zone=55 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32656, 'epsg', 32656, 'WGS 84 / UTM zone 56N', '+proj=utm +zone=56 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32657, 'epsg', 32657, 'WGS 84 / UTM zone 57N', '+proj=utm +zone=57 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32658, 'epsg', 32658, 'WGS 84 / UTM zone 58N', '+proj=utm +zone=58 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32659, 'epsg', 32659, 'WGS 84 / UTM zone 59N', '+proj=utm +zone=59 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32660, 'epsg', 32660, 'WGS 84 / UTM zone 60N', '+proj=utm +zone=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32661, 'epsg', 32661, 'WGS 84 / UPS North', '+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32662, 'epsg', 32662, 'WGS 84 / Plate Carree', '+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32664, 'epsg', 32664, 'WGS 84 / BLM 14N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32665, 'epsg', 32665, 'WGS 84 / BLM 15N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32666, 'epsg', 32666, 'WGS 84 / BLM 16N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32667, 'epsg', 32667, 'WGS 84 / BLM 17N (ftUS)', '+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 +datum=WGS84 +to_meter=0.3048006096012192 +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32701, 'epsg', 32701, 'WGS 84 / UTM zone 1S', '+proj=utm +zone=1 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32702, 'epsg', 32702, 'WGS 84 / UTM zone 2S', '+proj=utm +zone=2 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32703, 'epsg', 32703, 'WGS 84 / UTM zone 3S', '+proj=utm +zone=3 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32704, 'epsg', 32704, 'WGS 84 / UTM zone 4S', '+proj=utm +zone=4 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32705, 'epsg', 32705, 'WGS 84 / UTM zone 5S', '+proj=utm +zone=5 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32706, 'epsg', 32706, 'WGS 84 / UTM zone 6S', '+proj=utm +zone=6 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32707, 'epsg', 32707, 'WGS 84 / UTM zone 7S', '+proj=utm +zone=7 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32708, 'epsg', 32708, 'WGS 84 / UTM zone 8S', '+proj=utm +zone=8 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32709, 'epsg', 32709, 'WGS 84 / UTM zone 9S', '+proj=utm +zone=9 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32710, 'epsg', 32710, 'WGS 84 / UTM zone 10S', '+proj=utm +zone=10 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32711, 'epsg', 32711, 'WGS 84 / UTM zone 11S', '+proj=utm +zone=11 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32712, 'epsg', 32712, 'WGS 84 / UTM zone 12S', '+proj=utm +zone=12 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32713, 'epsg', 32713, 'WGS 84 / UTM zone 13S', '+proj=utm +zone=13 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32714, 'epsg', 32714, 'WGS 84 / UTM zone 14S', '+proj=utm +zone=14 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32715, 'epsg', 32715, 'WGS 84 / UTM zone 15S', '+proj=utm +zone=15 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32716, 'epsg', 32716, 'WGS 84 / UTM zone 16S', '+proj=utm +zone=16 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32717, 'epsg', 32717, 'WGS 84 / UTM zone 17S', '+proj=utm +zone=17 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32718, 'epsg', 32718, 'WGS 84 / UTM zone 18S', '+proj=utm +zone=18 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32719, 'epsg', 32719, 'WGS 84 / UTM zone 19S', '+proj=utm +zone=19 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32720, 'epsg', 32720, 'WGS 84 / UTM zone 20S', '+proj=utm +zone=20 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32721, 'epsg', 32721, 'WGS 84 / UTM zone 21S', '+proj=utm +zone=21 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32722, 'epsg', 32722, 'WGS 84 / UTM zone 22S', '+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32723, 'epsg', 32723, 'WGS 84 / UTM zone 23S', '+proj=utm +zone=23 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32724, 'epsg', 32724, 'WGS 84 / UTM zone 24S', '+proj=utm +zone=24 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32725, 'epsg', 32725, 'WGS 84 / UTM zone 25S', '+proj=utm +zone=25 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32726, 'epsg', 32726, 'WGS 84 / UTM zone 26S', '+proj=utm +zone=26 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32727, 'epsg', 32727, 'WGS 84 / UTM zone 27S', '+proj=utm +zone=27 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32728, 'epsg', 32728, 'WGS 84 / UTM zone 28S', '+proj=utm +zone=28 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32729, 'epsg', 32729, 'WGS 84 / UTM zone 29S', '+proj=utm +zone=29 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32730, 'epsg', 32730, 'WGS 84 / UTM zone 30S', '+proj=utm +zone=30 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32731, 'epsg', 32731, 'WGS 84 / UTM zone 31S', '+proj=utm +zone=31 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32732, 'epsg', 32732, 'WGS 84 / UTM zone 32S', '+proj=utm +zone=32 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32733, 'epsg', 32733, 'WGS 84 / UTM zone 33S', '+proj=utm +zone=33 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32734, 'epsg', 32734, 'WGS 84 / UTM zone 34S', '+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32735, 'epsg', 32735, 'WGS 84 / UTM zone 35S', '+proj=utm +zone=35 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32736, 'epsg', 32736, 'WGS 84 / UTM zone 36S', '+proj=utm +zone=36 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32737, 'epsg', 32737, 'WGS 84 / UTM zone 37S', '+proj=utm +zone=37 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32738, 'epsg', 32738, 'WGS 84 / UTM zone 38S', '+proj=utm +zone=38 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32739, 'epsg', 32739, 'WGS 84 / UTM zone 39S', '+proj=utm +zone=39 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32740, 'epsg', 32740, 'WGS 84 / UTM zone 40S', '+proj=utm +zone=40 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32741, 'epsg', 32741, 'WGS 84 / UTM zone 41S', '+proj=utm +zone=41 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32742, 'epsg', 32742, 'WGS 84 / UTM zone 42S', '+proj=utm +zone=42 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32743, 'epsg', 32743, 'WGS 84 / UTM zone 43S', '+proj=utm +zone=43 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32744, 'epsg', 32744, 'WGS 84 / UTM zone 44S', '+proj=utm +zone=44 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32745, 'epsg', 32745, 'WGS 84 / UTM zone 45S', '+proj=utm +zone=45 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32746, 'epsg', 32746, 'WGS 84 / UTM zone 46S', '+proj=utm +zone=46 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32747, 'epsg', 32747, 'WGS 84 / UTM zone 47S', '+proj=utm +zone=47 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32748, 'epsg', 32748, 'WGS 84 / UTM zone 48S', '+proj=utm +zone=48 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32749, 'epsg', 32749, 'WGS 84 / UTM zone 49S', '+proj=utm +zone=49 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32750, 'epsg', 32750, 'WGS 84 / UTM zone 50S', '+proj=utm +zone=50 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32751, 'epsg', 32751, 'WGS 84 / UTM zone 51S', '+proj=utm +zone=51 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32752, 'epsg', 32752, 'WGS 84 / UTM zone 52S', '+proj=utm +zone=52 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32753, 'epsg', 32753, 'WGS 84 / UTM zone 53S', '+proj=utm +zone=53 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32754, 'epsg', 32754, 'WGS 84 / UTM zone 54S', '+proj=utm +zone=54 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32755, 'epsg', 32755, 'WGS 84 / UTM zone 55S', '+proj=utm +zone=55 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32756, 'epsg', 32756, 'WGS 84 / UTM zone 56S', '+proj=utm +zone=56 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32757, 'epsg', 32757, 'WGS 84 / UTM zone 57S', '+proj=utm +zone=57 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32758, 'epsg', 32758, 'WGS 84 / UTM zone 58S', '+proj=utm +zone=58 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32759, 'epsg', 32759, 'WGS 84 / UTM zone 59S', '+proj=utm +zone=59 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32760, 'epsg', 32760, 'WGS 84 / UTM zone 60S', '+proj=utm +zone=60 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32761, 'epsg', 32761, 'WGS 84 / UPS South', '+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (32766, 'epsg', 32766, 'WGS 84 / TM 36 SE', '+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); -- -- confirming the pending transaction -- COMMIT; -- -- all done * job completed * -- ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/�����������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016044�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/AboutDialog.ui���������������������������������������������������������0000664�0000000�0000000�00000023261�11770671653�0020601�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>AboutDialog</class> <widget class="QDialog" name="AboutDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>435</width> <height>469</height> </rect> </property> <property name="windowTitle"> <string>About Merkaartor</string> </property> <property name="sizeGripEnabled"> <bool>true</bool> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <property name="sizeConstraint"> <enum>QLayout::SetMinimumSize</enum> </property> <item> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QLabel" name="Version"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></string> </property> </widget> </item> <item> <widget class="QLabel" name="QTVersion"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></string> </property> </widget> </item> <item> <widget class="QLabel" name="BoostVersion"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></string> </property> </widget> </item> <item> <widget class="QLabel" name="Proj4Version"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></string> </property> </widget> </item> <item> <widget class="QLabel" name="GdalVersion"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></string> </property> </widget> </item> </layout> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="pxIcon"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>100</horstretch> <verstretch>100</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>100</width> <height>100</height> </size> </property> <property name="text"> <string>TextLabel</string> </property> </widget> </item> </layout> </item> <item> <widget class="QLabel" name="label"> <property name="text"> <string>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</string> </property> </widget> </item> <item> <widget class="QLabel" name="label_3"> <property name="text"> <string>This program is licensed under the GNU Public License v2</string> </property> </widget> </item> <item> <widget class="QLabel" name="lblUrl"> <property name="text"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></string> </property> <property name="textInteractionFlags"> <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set> </property> </widget> </item> <item> <widget class="QGroupBox" name="groupBox"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="title"> <string>Changelog</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QTextEdit" name="txtChangelog"> <property name="lineWrapMode"> <enum>QTextEdit::NoWrap</enum> </property> <property name="readOnly"> <bool>true</bool> </property> <property name="tabStopWidth"> <number>4</number> </property> </widget> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout"> <property name="spacing"> <number>6</number> </property> <property name="margin"> <number>0</number> </property> <item> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>131</width> <height>31</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="okButton"> <property name="text"> <string>OK</string> </property> </widget> </item> </layout> </item> </layout> </widget> <resources/> <connections> <connection> <sender>okButton</sender> <signal>clicked()</signal> <receiver>AboutDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>278</x> <y>253</y> </hint> <hint type="destinationlabel"> <x>96</x> <y>254</y> </hint> </hints> </connection> </connections> </ui> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Coord.cpp��������������������������������������������������������������0000664�0000000�0000000�00000011223�11770671653�0017615�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Coord.h" #include "LineF.h" #include <stdio.h> /* qreal angle(Coord & vertex, Coord p1, Coord p2) { p1=p1-vertex; p2=p2-vertex; return angle(p2)-angle(p1); } */ qreal angle(Coord p1) { if (p1.length() == 0) return 0; qreal adjacent = (double)p1.x() / p1.length(); if (p1.y() > 0) return acos(adjacent); return -acos(adjacent); } void rotate(Coord & p1,qreal angle) { Coord p1p(cos(angle)*p1.x()-sin(angle)*p1.y(), sin(angle)*p1.x()+cos(angle)*p1.y()); p1=p1p; } CoordBox::CoordBox(const Coord &C1, const Coord &C2) { setBottomLeft(QPointF(C1.x()<C2.x()?C1.x():C2.x(), C1.y()<C2.y()?C1.y():C2.y())); setTopRight(QPointF(C1.x()>C2.x()?C1.x():C2.x(), C1.y()>C2.y()?C1.y():C2.y())); } CoordBox CoordBox::zoomed(qreal f) const { Coord C(center()); qreal DLat = latDiff()/2*f; qreal DLon = lonDiff()/2*f; return CoordBox(Coord(C.x()-DLon, C.y()-DLat), Coord(C.x()+DLon, C.y()+DLat) ); } bool CoordBox::toXML(QString elName, QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement(elName); Coord(topRight()).toXML("topright", stream); Coord(bottomLeft()).toXML("bottomleft", stream); stream.writeEndElement(); return OK; } bool CoordBox::toXML(QString elName, QDomElement& xParent) const { bool OK = true; QDomElement e = xParent.ownerDocument().createElement(elName); xParent.appendChild(e); Coord(topRight()).toXML("topright", e); Coord(bottomLeft()).toXML("bottomleft", e); return OK; } CoordBox CoordBox::fromXML(QDomElement e) { Coord tr = Coord::fromXML(e.firstChildElement("topright")); Coord bl = Coord::fromXML(e.firstChildElement("bottomleft")); return CoordBox(Coord(bl.x(), tr.y()), Coord(tr.x(), bl.y())); } CoordBox CoordBox::fromXML(QXmlStreamReader& stream) { Coord tr, bl; stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "topright") tr = Coord::fromXML(stream); else if (stream.name() == "bottomleft") bl = Coord::fromXML(stream); stream.readNext(); } return CoordBox(Coord(bl.x(), tr.y()), Coord(tr.x(), bl.y())); } #define EQUATORIALRADIUSKM 6378.137 qreal Coord::distanceFrom(const Coord& other) const { qreal dlon = other.x() - x(); const qreal slat1 = sin(angToRad(y())); const qreal clat1 = cos(angToRad(y())); const qreal slat2 = sin(angToRad(other.y())); const qreal clat2 = cos(angToRad(other.y())); const qreal sdlon = sin(angToRad(dlon)); const qreal cdlon = cos(angToRad(dlon)); const qreal t1 = clat2 * sdlon; const qreal t2 = clat1 * slat2 - slat1 * clat2 * cdlon; const qreal t3 = slat1 * slat2 + clat1 * clat2 * cdlon; const qreal dist = atan2(sqrt(t1*t1 + t2*t2), t3); return dist * EQUATORIALRADIUSKM; } bool Coord::toXML(QString elName, QXmlStreamWriter& stream) const { bool OK = true; stream.writeStartElement(elName); stream.writeAttribute("lon",COORD2STRING(x())); stream.writeAttribute("lat", COORD2STRING(y())); stream.writeEndElement(); return OK; } bool Coord::toXML(QString elName, QDomElement& xParent) const { bool OK = true; QDomElement e = xParent.ownerDocument().createElement(elName); xParent.appendChild(e); e.setAttribute("lon",COORD2STRING(x())); e.setAttribute("lat", COORD2STRING(y())); return OK; } Coord Coord::fromXML(QDomElement e) { qreal lat = e.attribute("lat").toDouble(); qreal lon = e.attribute("lon").toDouble(); return Coord(lon, lat); } Coord Coord::fromXML(QXmlStreamReader& stream) { qreal lat = stream.attributes().value("lat").toString().toDouble(); qreal lon = stream.attributes().value("lon").toString().toDouble(); stream.readNext(); return Coord(lon, lat); } void CoordBox::resize(qreal d) { qreal dlat = (topRight().y()-bottomLeft().y())*(d-1)/2; qreal dlon = (topRight().x()-bottomLeft().x())*(d-1)/2; setBottom(bottom()-dlat); setLeft(left()-dlon); setTop(top()+dlat); setRight(right()+dlon); } bool CoordBox::visibleLine(const CoordBox & viewport, Coord & last, Coord & here) { if (viewport.contains(last) && viewport.contains(here)) return true; Coord A, B; LineF(last, here).intersectionWith(viewport, &A, &B); if (A.isNull() && B.isNull()) return false; if (!A.isNull() && !B.isNull()) { last = A; here = B; return true; } if (viewport.contains(here)) last = A; else here = A; return true; // return viewport.intersects( CoordBox(last, here) ); } uint qHash(const Coord &c) { return (uint)(c.y() + 65537 * c.x()); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Coord.h����������������������������������������������������������������0000664�0000000�0000000�00000011610�11770671653�0017262�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_COORD_H_ #define MERKATOR_COORD_H_ #include <math.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #include <QRectF> #include <QtDebug> #include <QtXml> #define COORD_MAX (qreal)180.0 #define COORD_ENLARGE (qreal)0.00015 #define COORD2STRING(c) QString::number(c, 'f', 7) inline QString Coord2Sexa(qreal c) { int deg = int(c); qreal min = fabs((c - deg)*60); qreal sec = (min - int(min)) *60; return QString("%1 %2' %3\"").arg(deg).arg(int(min)).arg(sec, 0, 'f', 2); } inline qreal angToRad(qreal a) { return a*M_PI/180.; } inline qreal radToAng(qreal a) { return a*180/M_PI; } class Coord : public QPointF { public: Coord() : QPointF() {} Coord(const Coord& c) : QPointF(c.x(), c.y()) {} Coord(const QPoint& P) : QPointF(P.x(), P.y()) {} Coord(const QPointF& P) : QPointF(P.x(), P.y()) {} Coord(qreal aLon, qreal aLat) : QPointF(aLon, aLat) {} qreal length() const { return sqrt((y()*y()+x()*x())); } qreal distanceFrom(const Coord& other) const; bool toXML(QString elName, QXmlStreamWriter& stream) const; bool toXML(QString elName, QDomElement& xParent) const; static Coord fromXML(QDomElement e); static Coord fromXML(QXmlStreamReader& stream); }; uint qHash(const Coord &c); #ifndef _MOBILE #if QT_VERSION < 0x040700 || defined(FORCE_46) #include <ggl/ggl.hpp> #include <ggl/geometries/register/point.hpp> GEOMETRY_REGISTER_POINT_2D_GET_SET(Coord, qreal, cs::cartesian, x, y, setX, setY) #endif #endif inline Coord operator-(const Coord& A, const Coord& B) { return Coord(A.x()-B.x(), A.y()-B.y()); } inline Coord operator-(const Coord& A, const qreal B) { return Coord(A.x()-B, A.y()-B); } inline Coord operator+(const Coord& A, const Coord& B) { return Coord(A.x()+B.x(), A.y()+B.y()); } inline Coord operator+(const Coord& A, const qreal B) { return Coord(A.x()+B, A.y()+B); } inline Coord operator*(const Coord& A, qreal d) { return Coord(A.x()*d, A.y()*d); } inline Coord operator/(const Coord& A, qreal d) { if(d==0) { qDebug()<<"Error: divide by 0"<<endl; return A; } return Coord(A.x()/d, A.y()/d); } inline bool operator==(const Coord& A,const Coord& B) { return A.y()==B.y() && A.x()==B.x(); } qreal angle(Coord p1); void rotate(Coord & p1,qreal angle); class CoordBox : public QRectF { public: CoordBox() : QRectF() {} CoordBox(const CoordBox& cb) : QRectF(cb) {} CoordBox(const QRectF& r) : QRectF(r) {} CoordBox(const Coord& C1, const Coord& C2); bool isNull() const { return (bottomLeft().isNull() && topRight().isNull()); } bool isEmpty() const { return (lonDiff() == 0 || latDiff() == 0); } void merge(const Coord& C) { if (C.y() < bottom()) setBottom(C.y()); if (C.x() < left()) setLeft(C.x()); if (C.y() > top()) setTop(C.y()); if (C.x() > right()) setRight(C.x()); } void merge(const CoordBox& B) { merge(B.bottomLeft()); merge(B.topRight()); } Coord center() const { return Coord(QRectF::center()); } qreal lonDiff() const { return width(); } qreal latDiff() const { return -height(); } CoordBox zoomed(qreal f) const; bool contains(const Coord& C) const { return (bottomLeft().y() <= C.y()) && (bottomLeft().x() <= C.x()) && (C.y() < topRight().y()) && (C.x() <= topRight().x()); } bool contains(const CoordBox& B) const { return contains(B.bottomLeft()) && contains(B.topRight()); } bool intersects(const CoordBox& B) const { if ((B.latDiff() == 0) && (B.lonDiff() == 0)) { return contains(B.bottomLeft()); } return QRectF::intersects(B); } bool disjunctFrom(const CoordBox& B) const { return !intersects(B); } void resize(qreal f); static bool visibleLine(const CoordBox & viewport, Coord & last, Coord & here); bool toXML(QString elName, QXmlStreamWriter& stream) const; bool toXML(QString elName, QDomElement& xParent) const; static CoordBox fromXML(QDomElement e); static CoordBox fromXML(QXmlStreamReader& stream); }; Q_DECLARE_METATYPE( CoordBox ); #ifndef _MOBILE #if QT_VERSION < 0x040700 || defined(FORCE_46) #include <ggl/geometries/register/box.hpp> GEOMETRY_REGISTER_BOX(CoordBox, Coord, bottomLeft, topRight) #endif #endif #endif ������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Document.cpp�����������������������������������������������������������0000664�0000000�0000000�00000103670�11770671653�0020335�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include "Command.h" #include "Feature.h" #include "Document.h" #include "ImageMapLayer.h" #include "ImportNMEA.h" #include "ImportExportKML.h" #include "ImportExportCSV.h" #include "ImportExportOSC.h" #include "ImportExportGdal.h" #ifdef USE_PROTOBUF #include "ImportExportPBF.h" #endif #include "MainWindow.h" #include "MerkaartorPreferences.h" #include "LayerWidget.h" #include "TagSelector.h" #include "IPaintStyle.h" #include "FeaturePainter.h" #include "LayerIterator.h" #include "IMapAdapter.h" #include <QString> #include <QMultiMap> #include <QProgressDialog> #include <QProgressBar> #include <QClipboard> #include <QMap> #include <QList> #include <QMenu> #include <QSet> /* MAPDOCUMENT */ class MapDocumentPrivate { public: MapDocumentPrivate() : History(new CommandHistory()) , dirtyLayer(0) , uploadedLayer(0) /*, trashLayer(0)*/ , theDock(0) , lastDownloadLayer(0) , tagFilter(0), FilterRevision(0) , layerNum(0) { }; ~MapDocumentPrivate() { History->cleanup(); delete History; for (int i=0; i<Layers.size(); ++i) { if (theDock) theDock->deleteLayer(Layers[i]); delete Layers[i]; } } CommandHistory* History; QList<Layer*> Layers; DirtyLayer* dirtyLayer; UploadedLayer* uploadedLayer; LayerDock* theDock; Layer* lastDownloadLayer; QDateTime lastDownloadTimestamp; QHash<Layer*, CoordBox> downloadBoxes; TagSelector* tagFilter; int FilterRevision; QString title; int layerNum; mutable QString Id; QList<FeaturePainter> theFeaturePainters; }; Document::Document() : p(new MapDocumentPrivate) { setFilterType(M_PREFS->getCurrentFilter()); p->title = tr("untitled"); for (int i=0; i<M_STYLE->painterSize(); ++i) { p->theFeaturePainters.append(FeaturePainter(*M_STYLE->getPainter(i))); } } Document::Document(LayerDock* aDock) : p(new MapDocumentPrivate) { p->theDock = aDock; setFilterType(M_PREFS->getCurrentFilter()); p->title = tr("untitled"); for (int i=0; i<M_STYLE->painterSize(); ++i) { p->theFeaturePainters.append(FeaturePainter(*M_STYLE->getPainter(i))); } } Document::Document(const Document&, LayerDock*) : p(0) { p->title = tr("untitled"); } Document::~Document() { delete p; } const QString& Document::id() const { if (p->Id.isEmpty()) p->Id = QUuid::createUuid().toString(); return p->Id; } void Document::setPainters(QList<Painter> aPainters) { p->theFeaturePainters.clear(); for (int i=0; i<aPainters.size(); ++i) { FeaturePainter fp(aPainters[i]); p->theFeaturePainters.append(fp); } } int Document::getPaintersSize() { return p->theFeaturePainters.size(); } const Painter* Document::getPainter(int i) { return &p->theFeaturePainters[i]; } void Document::addDefaultLayers() { /*ImageMapLayer*l = */addImageLayer(); if (g_Merk_Frisius) { DrawingLayer* aLayer = addDrawingLayer(); setLastDownloadLayer(aLayer); } else { p->dirtyLayer = new DirtyLayer(tr("Dirty layer")); add(p->dirtyLayer); p->uploadedLayer = new UploadedLayer(tr("Uploaded layer")); add(p->uploadedLayer); } addFilterLayers(); } void Document::addFilterLayers() { foreach (FilterItem it, *M_PREFS->getFiltersList()->getFilters()) { if (it.deleted) continue; FilterLayer* f = new FilterLayer(it.id.toString(), it.name, it.filter); addFilterLayer(f); } } bool Document::toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress) { bool OK = true; stream.writeStartElement("MapDocument"); stream.writeAttribute("xml:id", id()); if (!asTemplate) stream.writeAttribute("layernum", QString::number(p->layerNum)); if (p->lastDownloadLayer) { stream.writeAttribute("lastdownloadlayer", p->lastDownloadLayer->id()); stream.writeAttribute("lastdownloadtimestamp", p->lastDownloadTimestamp.toUTC().toString(Qt::ISODate)+"Z"); } for (int i=0; i<p->Layers.size(); ++i) { progress->setMaximum(progress->maximum() + p->Layers[i]->getDisplaySize()); } for (int i=0; i<p->Layers.size(); ++i) { if (p->Layers[i]->isEnabled()) { if (asTemplate && p->Layers[i]->classType() == Layer::DrawingLayerType) continue; p->Layers[i]->toXML(stream, asTemplate, progress); } } if (!asTemplate) { OK = history().toXML(stream, progress); } stream.writeEndElement(); return OK; } Document* Document::fromXML(QString title, QXmlStreamReader& stream, qreal version, LayerDock* aDock, QProgressDialog * progress) { Document* NewDoc = new Document(aDock); NewDoc->p->title = title; CommandHistory* h = 0; if (stream.attributes().hasAttribute("xml:id")) NewDoc->p->Id = stream.attributes().value("xml:id").toString(); if (stream.attributes().hasAttribute("layernum")) NewDoc->p->layerNum = stream.attributes().value("layernum").string()->toInt(); else NewDoc->p->layerNum = 1; QString lastdownloadlayerId; if (stream.attributes().hasAttribute("lastdownloadlayer")) { NewDoc->p->lastDownloadTimestamp = QDateTime::fromString(stream.attributes().value("lastdownloadtimestamp").toString().left(19), Qt::ISODate); NewDoc->p->lastDownloadTimestamp.setTimeSpec(Qt::UTC); lastdownloadlayerId = stream.attributes().value("lastdownloadlayer").toString(); } stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "ImageMapLayer") { /*ImageMapLayer* l =*/ ImageMapLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "DeletedMapLayer") { /*DeletedMapLayer* l =*/ DeletedLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "DirtyLayer" || stream.name() == "DirtyMapLayer") { /*DirtyMapLayer* l =*/ DirtyLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "UploadedLayer" || stream.name() == "UploadedMapLayer") { /*UploadedMapLayer* l =*/ UploadedLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "DrawingLayer" || stream.name() == "DrawingMapLayer") { /*DrawingMapLayer* l =*/ DrawingLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "TrackLayer" || stream.name() == "TrackMapLayer") { /*TrackMapLayer* l =*/ TrackLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "ExtractedLayer") { /*DrawingMapLayer* l =*/ DrawingLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "FilterLayer") { /*FilterLayer* l =*/ FilterLayer::fromXML(NewDoc, stream, progress); } else if (stream.name() == "CommandHistory") { if (version > 1.0) h = CommandHistory::fromXML(NewDoc, stream, progress); } else if (!stream.isWhitespace()) { qDebug() << "Doc: logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } if (progress && progress->wasCanceled()) break; stream.readNext(); } if (progress && progress->wasCanceled()) { delete NewDoc; NewDoc = NULL; } if (NewDoc) { if (!lastdownloadlayerId.isEmpty()) NewDoc->p->lastDownloadLayer = NewDoc->getLayer(lastdownloadlayerId); if (h) NewDoc->setHistory(h); else h = &NewDoc->history(); if (!h->size() && NewDoc->getDirtySize()) { if (progress) progress->setLabelText("History was corrupted. Rebuilding it..."); qDebug() << "History was corrupted. Rebuilding it..."; NewDoc->rebuildHistory(); } } return NewDoc; } void Document::setLayerDock(LayerDock* aDock) { p->theDock = aDock; } LayerDock* Document::getLayerDock(void) { return p->theDock; } void Document::clear() { delete p; p = new MapDocumentPrivate; addDefaultLayers(); } void Document::setHistory(CommandHistory* h) { delete p->History; p->History = h; emit(historyChanged()); } CommandHistory& Document::history() { return *(p->History); } const CommandHistory& Document::history() const { return *(p->History); } void Document::addHistory(Command* aCommand) { p->History->add(aCommand); emit(historyChanged()); } void Document::redoHistory() { p->History->redo(); emit(historyChanged()); } void Document::undoHistory() { p->History->undo(); emit(historyChanged()); } void Document::add(Layer* aLayer) { p->Layers.push_back(aLayer); aLayer->setDocument(this); if (p->theDock) p->theDock->addLayer(aLayer); } void Document::moveLayer(Layer* aLayer, int pos) { p->Layers.move(p->Layers.indexOf(aLayer), pos); } ImageMapLayer* Document::addImageLayer(ImageMapLayer* aLayer) { ImageMapLayer* theLayer = aLayer; if (!theLayer) theLayer = new ImageMapLayer(tr("Background imagery")); add(theLayer); connect(theLayer, SIGNAL(imageRequested(ImageMapLayer*)), this, SLOT(on_imageRequested(ImageMapLayer*)), Qt::QueuedConnection); connect(theLayer, SIGNAL(imageReceived(ImageMapLayer*)), this, SLOT(on_imageReceived(ImageMapLayer*)), Qt::QueuedConnection); connect(theLayer, SIGNAL(loadingFinished(ImageMapLayer*)), this, SLOT(on_loadingFinished(ImageMapLayer*)), Qt::QueuedConnection); return theLayer; } DrawingLayer* Document::addDrawingLayer(DrawingLayer *aLayer) { DrawingLayer* theLayer = aLayer; if (!theLayer) theLayer = new DrawingLayer(tr("Drawing layer #%1").arg(p->layerNum++)); add(theLayer); return theLayer; } FilterLayer* Document::addFilterLayer(FilterLayer *aLayer) { FilterLayer* theLayer = aLayer; if (!theLayer) theLayer = new FilterLayer(QUuid::createUuid(), tr("Filter layer #%1").arg(++p->layerNum), "false"); add(theLayer); FeatureIterator it(this); for(;!it.isEnd(); ++it) { it.get()->updateFilters(); } return theLayer; } void Document::remove(Layer* aLayer) { QList<Layer*>::iterator i = qFind(p->Layers.begin(),p->Layers.end(), aLayer); if (i != p->Layers.end()) { p->Layers.erase(i); } if (aLayer == p->lastDownloadLayer) p->lastDownloadLayer = NULL; if (p->theDock) p->theDock->deleteLayer(aLayer); } bool Document::exists(Layer* L) const { for (int i=0; i<p->Layers.size(); ++i) if (p->Layers[i] == L) return true; return false; } bool Document::exists(Feature* F) const { for (int i=0; i<p->Layers.size(); ++i) if (p->Layers[i]->exists(F)) return true; return false; } void Document::deleteFeature(Feature* aFeature) { for (int i=0; i<p->Layers.size(); ++i) if (p->Layers[i]->exists(aFeature)) { p->Layers[i]->deleteFeature(aFeature); return; } } int Document::layerSize() const { return p->Layers.size(); } Layer* Document::getLayer(const QString& id) { for (int i=0; i<p->Layers.size(); ++i) { if (p->Layers[i]->id() == id) return p->Layers[i]; } return 0; } Layer* Document::getLayer(int i) { return p->Layers.at(i); } const Layer* Document::getLayer(int i) const { return p->Layers[i]; } QList<Feature*> Document::getFeatures(Layer::LayerType layerType) { QList<Feature*> theFeatures; for (VisibleFeatureIterator i(this); !i.isEnd(); ++i) { if (!layerType) theFeatures.append(i.get()); else if (i.get()->layer()->classType() == layerType) theFeatures.append(i.get()); } return theFeatures; } Feature* Document::getFeature(const IFeature::FId& id) { for (int i=0; i<p->Layers.size(); ++i) { Feature* F = p->Layers[i]->get(id); if (F) return F; } return NULL; } void Document::setDirtyLayer(DirtyLayer* aLayer) { p->dirtyLayer = aLayer; } Layer* Document::getDirtyLayer() { if (!p->dirtyLayer) { p->dirtyLayer = new DirtyLayer(tr("Dirty layer")); add(p->dirtyLayer); } return p->dirtyLayer; } Layer* Document::getDirtyOrOriginLayer(Layer* aLayer) { if (g_Merk_Frisius) { if (aLayer) return aLayer; DrawingLayer* firstDrLayer = NULL; for (int i=0; i<layerSize(); ++i) { if (!getLayer(i)->isEnabled()) continue; if (getLayer(i)->classType() == Layer::DrawingLayerType) { if (!firstDrLayer) firstDrLayer = dynamic_cast<DrawingLayer*>(getLayer(i)); if (getLayer(i)->isSelected()) return (Layer*)getLayer(i); } } if (p->lastDownloadLayer) return p->lastDownloadLayer; else { if (firstDrLayer) return firstDrLayer; else return addDrawingLayer(); } } else { if (!aLayer || (aLayer && !aLayer->isUploadable())) return p->dirtyLayer; else return aLayer; } } Layer* Document::getDirtyOrOriginLayer(Feature* F) { if (g_Merk_Frisius) { return getDirtyOrOriginLayer(F->layer()); } if (!F || !F->layer() || F->layer()->isUploadable()) return p->dirtyLayer; else return F->layer(); } int Document::getDirtySize() const { int dirtyObjects = 0; for (int i=0; i<layerSize(); ++i) { dirtyObjects += getLayer(i)->getDirtySize(); } return dirtyObjects; } int Document::size() const { int sz = 0; for (int i=0; i<layerSize(); ++i) { sz += getLayer(i)->size(); } return sz; } void Document::setUploadedLayer(UploadedLayer* aLayer) { p->uploadedLayer = aLayer; } UploadedLayer* Document::getUploadedLayer() const { return p->uploadedLayer; } void Document::exportOSM(QWidget* main, QIODevice* device, QList<Feature*> aFeatures) { if (aFeatures.isEmpty()) return; IProgressWindow* aProgressWindow = dynamic_cast<IProgressWindow*>(main); if (!aProgressWindow) return; QProgressDialog* dlg = aProgressWindow->getProgressDialog(); if (dlg) dlg->setWindowTitle(tr("OSM Export")); QProgressBar* Bar = aProgressWindow->getProgressBar(); if (Bar) { Bar->setTextVisible(false); Bar->setMaximum(aFeatures.size()); } QLabel* Lbl = aProgressWindow->getProgressLabel(); if (Lbl) Lbl->setText(tr("Exporting OSM...")); if (dlg) dlg->show(); QXmlStreamWriter stream(device); stream.setAutoFormatting(true); stream.setAutoFormattingIndent(2); stream.writeStartDocument(); stream.writeStartElement("osm"); stream.writeAttribute("version", "0.6"); stream.writeAttribute("generator", QString("%1 %2").arg(qApp->applicationName()).arg(STRINGIFY(VERSION))); CoordBox aCoordBox = aFeatures[0]->boundingBox(true); aFeatures[0]->toXML(stream, dlg); for (int i=1; i < aFeatures.size(); i++) { aCoordBox.merge(aFeatures[i]->boundingBox(true)); aFeatures[i]->toXML(stream, dlg); } stream.writeStartElement("bound"); QString S = QString().number(aCoordBox.bottom(),'f',6) + ","; S += QString().number(aCoordBox.left(),'f',6) + ","; S += QString().number(aCoordBox.top(),'f',6) + ","; S += QString().number(aCoordBox.right(),'f',6); stream.writeAttribute("box", S); stream.writeAttribute("origin", QString("http://www.openstreetmap.org/api/%1").arg(M_PREFS->apiVersion())); stream.writeEndElement(); stream.writeEndElement(); stream.writeEndDocument(); } QList<Feature*> Document::exportCoreOSM(QList<Feature*> aFeatures, bool forCopyPaste, QProgressDialog * progress) { QList<Feature*> exportedFeatures; QList<Feature*>::Iterator i; for (i = aFeatures.begin(); i != aFeatures.end(); ++i) { if (/*Node* n = */dynamic_cast<Node*>(*i)) { if (!exportedFeatures.contains(*i)) exportedFeatures.append(*i); } else { if (Way* G = dynamic_cast<Way*>(*i)) { for (int j=0; j < G->size(); j++) { if (Node* P = dynamic_cast<Node*>(G->get(j))) { if (!exportedFeatures.contains(P)) exportedFeatures.append(P); } if (!exportedFeatures.contains(G)) exportedFeatures.append(G); } } else { //FIXME Not working for relation (not made of point?) if (Relation* G = dynamic_cast<Relation*>(*i)) { if (!forCopyPaste) { for (int j=0; j < G->size(); j++) { if (Way* R = CAST_WAY(G->get(j))) { for (int k=0; k < R->size(); k++) { if (Node* P = dynamic_cast<Node*>(R->get(k))) { if (!exportedFeatures.contains(P)) exportedFeatures.append(P); } } if (!exportedFeatures.contains(R)) exportedFeatures.append(R); } else if (Node* P = CAST_NODE(G->get(j))) { if (!exportedFeatures.contains(P)) exportedFeatures.append(P); } } } if (!exportedFeatures.contains(G)) exportedFeatures.append(G); } } } if (progress) { if (progress->wasCanceled()) { exportedFeatures.clear(); return exportedFeatures; } progress->setValue(progress->value()+1); } } return exportedFeatures; } bool Document::importNMEA(const QString& filename, TrackLayer* NewLayer) { ImportNMEA imp(this); if (!imp.loadFile(filename)) return false; imp.import(NewLayer); if (NewLayer->size()) return true; else return false; } bool Document::importOSC(const QString& filename, DrawingLayer* NewLayer) { #ifndef FRISIUS_BUILD ImportExportOSC imp(this); if (!imp.loadFile(filename)) return false; imp.import(NewLayer); if (NewLayer->size()) return true; else return false; #endif } bool Document::importKML(const QString& filename, TrackLayer* NewLayer) { ImportExportKML imp(this); if (!imp.loadFile(filename)) return false; imp.import(NewLayer); if (NewLayer->size()) return true; else return false; } #ifndef _MOBILE bool Document::importGDAL(const QString& filename, DrawingLayer* NewLayer) { Q_UNUSED(filename) Q_UNUSED(NewLayer) ImportExportGdal imp(this); if (!imp.loadFile(filename)) return false; bool ret = imp.import(NewLayer); if (ret && NewLayer->size()) return true; else return false; } #endif bool Document::importCSV(const QString& filename, DrawingLayer* NewLayer) { ImportExportCSV imp(this); if (!imp.loadFile(filename)) return false; imp.import(NewLayer); if (NewLayer->size()) return true; else return false; } #ifdef USE_PROTOBUF bool Document::importPBF(const QString& filename, DrawingLayer* NewLayer) { ImportExportPBF imp(this); if (!imp.loadFile(filename)) return false; imp.import(NewLayer); if (NewLayer->size()) return true; else return false; } #endif void Document::addDownloadBox(Layer* l, CoordBox aBox) { p->downloadBoxes.insertMulti(l, aBox); } void Document::removeDownloadBox(Layer* l) { p->downloadBoxes.remove(l); } const QList<CoordBox> Document::getDownloadBoxes() const { return p->downloadBoxes.values(); } const QList<CoordBox> Document::getDownloadBoxes(Layer* l) const { return p->downloadBoxes.values(l); } bool Document::isDownloadedSafe(const CoordBox& bb) const { QHashIterator<Layer*, CoordBox>it(p->downloadBoxes); while(it.hasNext()) { it.next(); if (it.value().intersects(bb)) return true; } return false; } QDateTime Document::getLastDownloadLayerTime() const { return p->lastDownloadTimestamp; } Layer * Document::getLastDownloadLayer() const { return p->lastDownloadLayer; } void Document::setLastDownloadLayer(Layer * aLayer) { p->lastDownloadLayer = aLayer; p->lastDownloadTimestamp = QDateTime::currentDateTime(); } void Document::on_imageRequested(ImageMapLayer* anImageLayer) { emit imageRequested(anImageLayer); } void Document::on_imageReceived(ImageMapLayer* anImageLayer) { emit imageReceived(anImageLayer); } void Document::on_loadingFinished(ImageMapLayer* anImageLayer) { emit loadingFinished(anImageLayer); } QPair<bool,CoordBox> Document::boundingBox() { int First; for (First = 0; First < layerSize(); ++First) if (getLayer(First)->size() && !getLayer(First)->boundingBox().isNull()) break; if (First == layerSize()) return qMakePair(false,CoordBox(Coord(0,0),Coord(0,0))); Layer* aLayer = getLayer(First); CoordBox BBox = aLayer->boundingBox(); for (int i=First+1; i<layerSize(); ++i) aLayer = getLayer(i); if (aLayer->size() && !aLayer->boundingBox().isNull()) BBox.merge(aLayer->boundingBox()); return qMakePair(true,BBox); } bool Document::setFilterType(FilterType aFilter) { p->FilterRevision++; QString theFilter = M_PREFS->getFilter(aFilter).filter; if (theFilter.isEmpty()) { if (p->tagFilter) SAFE_DELETE(p->tagFilter); return true; } p->tagFilter = TagSelector::parse(M_PREFS->getFilter(aFilter).filter); return (p->tagFilter != NULL); } TagSelector* Document::getTagFilter() { return p->tagFilter; } int Document::filterRevision() const { return p->FilterRevision; } QString Document::title() const { return p->title; } void Document::setTitle(const QString aTitle) { p->title = aTitle; } QString Document::toPropertiesHtml() { QString h; h += "<big><strong>" + tr("Document") + "</strong></big><hr/>"; for (int i=0; i<p->Layers.size(); ++i) { h += p->Layers[i]->toPropertiesHtml() + "<br/>"; } h += ""; return h; } QStringList Document::getCurrentSourceTags() { QStringList theSrc; for (LayerIterator<ImageMapLayer*> ImgIt(this); !ImgIt.isEnd(); ++ImgIt) { if (ImgIt.get()->isVisible()) { QString s = ImgIt.get()->getMapAdapter()->getSourceTag(); if (!s.isEmpty()) theSrc << ImgIt.get()->getMapAdapter()->getSourceTag(); } } return theSrc; } Document* Document::getDocumentFromXml(QDomDocument* theXmlDoc) { QDomElement c; c = theXmlDoc->documentElement(); // if (c.tagName().isNull()) // c = c.firstChildElement(); // while (!c.isNull() && c.tagName().isNull()) { // c =c.nextSiblingElement(); // } // if (c.isNull()) // return NULL; if (c.tagName() == "osm") { QString xml; QTextStream tstr(&xml, QIODevice::ReadOnly); c.save(tstr, 2); QXmlStreamReader stream(xml); Document* NewDoc = new Document(NULL); DrawingLayer* l = new DrawingLayer("Dummy"); NewDoc->add(l); stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "osm") { stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "way") { Way::fromXML(NewDoc, l, stream); } else if (stream.name() == "relation") { Relation::fromXML(NewDoc, l, stream); } else if (stream.name() == "node") { Node::fromXML(NewDoc, l, stream); } else if (!stream.isWhitespace()) { qDebug() << "Doc::clipboard logic error: " << stream.name() << " : " << stream.tokenType() << " (" << stream.lineNumber() << ")"; stream.skipCurrentElement(); } stream.readNext(); } } stream.readNext(); } return NewDoc; } else if (c.tagName() == "kml") { Document* NewDoc = new Document(NULL); DrawingLayer* l = new DrawingLayer("Dummy"); NewDoc->add(l); ImportExportKML imp(NewDoc); QByteArray ba = theXmlDoc->toByteArray(); QBuffer kmlBuf(&ba); kmlBuf.open(QIODevice::ReadOnly); if (imp.setDevice(&kmlBuf)) imp.import(l); return NewDoc; #ifndef FRISIUS_BUILD } else if (c.tagName() == "osmChange" || c.tagName() == "osmchange") { Document* NewDoc = new Document(NULL); DrawingLayer* l = new DrawingLayer("Dummy"); NewDoc->add(l); ImportExportOSC imp(NewDoc); QByteArray ba = theXmlDoc->toByteArray(); QBuffer buf(&ba); buf.open(QIODevice::ReadOnly); if (imp.setDevice(&buf)) imp.import(l); return NewDoc; #endif } else if (c.tagName() == "gpx") { } return NULL; } QList<Feature*> Document::mergeDocument(Document* otherDoc, Layer* layer, CommandList* theList) { QList<Feature*> theFeats; for (int i=0; i<otherDoc->layerSize(); ++i) for (int j=0; j<otherDoc->getLayer(i)->size(); ++j) if (!otherDoc->getLayer(i)->get(j)->isNull()) theFeats.push_back(otherDoc->getLayer(i)->get(j)); for (int i=0; i<theFeats.size(); ++i) { Feature*F = theFeats.at(i); if (getFeature(F->id())) F->resetId(); // Re-link null features to the ones in the current document for (int j=0; j<F->size(); ++j) { Feature* C = F->get(j); if (C->isNull()) { if (Feature* CC = getFeature(C->id())) { if (Relation* R = CAST_RELATION(F)) { QString role = R->getRole(j); R->remove(j); R->add(role, CC, j); } else if (Way* W = CAST_WAY(F)) { Node* N = CAST_NODE(CC); W->remove(j); W->add(N, j); } } else theFeats.push_back(C); } } F->layer()->remove(F); if (theList) theList->add(new AddFeatureCommand(layer, F, true)); else { layer->add(F); } } return theFeats; } Document* Document::getDocumentFromClipboard() { QClipboard *clipboard = QApplication::clipboard(); QDomDocument* theXmlDoc = new QDomDocument(); if (clipboard->mimeData()->hasFormat("application/x-openstreetmap+xml")) { if (!theXmlDoc->setContent(clipboard->mimeData()->data("application/x-openstreetmap+xml"))) { delete theXmlDoc; return NULL; } } else if (clipboard->mimeData()->hasFormat("application/vnd.google-earth.kml+xml")) { if (!theXmlDoc->setContent(clipboard->mimeData()->data("application/vnd.google-earth.kml+xml"))) { delete theXmlDoc; return NULL; } } else if (clipboard->mimeData()->hasText()) { if (!theXmlDoc->setContent(clipboard->text())) { delete theXmlDoc; return NULL; } } else { delete theXmlDoc; return NULL; } Document* doc = Document::getDocumentFromXml(theXmlDoc); delete theXmlDoc; return doc; } /* FEATUREITERATOR */ FeatureIterator::FeatureIterator(Document *aDoc) : theDocument(aDoc), curLayerIdx(0), curFeatureIdx(0), isAtEnd(false) { docSize = theDocument->layerSize(); if (!docSize) isAtEnd = true; else { curLayerSize = theDocument->getLayer(curLayerIdx)->size(); if(!check() && !isAtEnd) ++(*this); } } FeatureIterator::~FeatureIterator() { } Feature* FeatureIterator::get() { return theDocument->getLayer(curLayerIdx)->get(curFeatureIdx); } bool FeatureIterator::isEnd() const { return isAtEnd; } FeatureIterator& FeatureIterator::operator++() { docSize = theDocument->layerSize(); curLayerSize = theDocument->getLayer(curLayerIdx)->size(); if (curFeatureIdx < curLayerSize-1) curFeatureIdx++; else if (curLayerIdx < docSize-1) { curLayerIdx++; curLayerSize = theDocument->getLayer(curLayerIdx)->size(); curFeatureIdx = 0; } else isAtEnd = true; while(!isAtEnd && !check()) { if (curFeatureIdx < curLayerSize-1) curFeatureIdx++; else if (curLayerIdx < docSize-1) { curLayerIdx++; curLayerSize = theDocument->getLayer(curLayerIdx)->size(); curFeatureIdx = 0; } else isAtEnd = true; } return *this; } int FeatureIterator::index() { return (curLayerIdx*10000000)+curFeatureIdx; } bool FeatureIterator::check() { if (curLayerIdx >= docSize) { isAtEnd = true; return false; } if (curFeatureIdx >= curLayerSize) return false; Feature* curFeature = theDocument->getLayer(curLayerIdx)->get(curFeatureIdx); if (curFeature->lastUpdated() == Feature::NotYetDownloaded || curFeature->isDeleted() || curFeature->isVirtual()) return false; return true; } /* VISIBLEFEATUREITERATOR */ VisibleFeatureIterator::VisibleFeatureIterator(Document *aDoc) : FeatureIterator(aDoc) { if(!check() && !isAtEnd) ++(*this); } VisibleFeatureIterator::~VisibleFeatureIterator() { } bool VisibleFeatureIterator::check() { if (!FeatureIterator::check()) return false; else if (theDocument->getLayer(curLayerIdx)->get(curFeatureIdx)->isHidden()) return false; return true; } void Document::rebuildHistory() { delete p->History; p->History = new CommandHistory(); CommandHistory* h = p->History; // Identify changes QList<Node*> newNode; QList<Node*> updNode; QList<Node*> delNode; QList<Way*> newWay; QList<Way*> updWay; QList<Way*> delWay; QList<Relation*> newRelation; QList<Relation*> updRelation; QList<Relation*> delRelation; for (FeatureIterator it(this); !it.isEnd(); ++it) { if (!it.get()->isDirty()) continue; if (CHECK_NODE(it.get())) { Node* N = STATIC_CAST_NODE(it.get()); if (N->hasOSMId()) { if (!N->isDeleted()) updNode << N; else delNode << N; } else { if (!N->isDeleted()) newNode << N; } } else if (CHECK_WAY(it.get())) { Way* W = STATIC_CAST_WAY(it.get()); if (W->hasOSMId()) { if (!W->isDeleted()) updWay << W; else delWay << W; } else { if (!W->isDeleted()) newWay << W; } } else if (CHECK_RELATION(it.get())) { Relation* R = STATIC_CAST_RELATION(it.get()); if (R->hasOSMId()) { if (!R->isDeleted()) updRelation << R; else delRelation << R; } else { if (!R->isDeleted()) newRelation << R; } } } // Recreate history foreach (Node* N, newNode) { CommandList* CL = new CommandList(tr("History rebuild: Create node %1").arg(N->description()), N); Command* C = new AddFeatureCommand(N->layer(), N, true); CL->add(C); h->add(CL); } foreach (Node* N, updNode) { CommandList* CL = new CommandList(tr("History rebuild: Update node %1").arg(N->description()), N);; Command* C = new AddFeatureCommand(N->layer(), N, true); CL->add(C); h->add(CL); } foreach (Node* N, delNode) { CommandList* CL = new CommandList(tr("History rebuild: Delete node %1").arg(N->description()), N); Command* C = new RemoveFeatureCommand(this, N); CL->add(C); h->add(CL); } foreach (Way* W, newWay) { CommandList* CL = new CommandList(tr("History rebuild: Create way %1").arg(W->description()), W); Command* C = new AddFeatureCommand(W->layer(), W, true); CL->add(C); h->add(CL); } foreach (Way* W, updWay) { CommandList* CL = new CommandList(tr("History rebuild: Update way %1").arg(W->description()), W); Command* C = new AddFeatureCommand(W->layer(), W, true); CL->add(C); h->add(CL); } foreach (Way* W, delWay) { CommandList* CL = new CommandList(tr("History rebuild: Delete way %1").arg(W->description()), W); Command* C = new RemoveFeatureCommand(this, W); CL->add(C); h->add(CL); } foreach (Relation* R, newRelation) { CommandList* CL = new CommandList(tr("History rebuild: Create relation %1").arg(R->description()), R); Command* C = new AddFeatureCommand(R->layer(), R, true); CL->add(C); h->add(CL); } foreach (Relation* R, updRelation) { CommandList* CL = new CommandList(tr("History rebuild: Update relation %1").arg(R->description()), R); Command* C = new AddFeatureCommand(R->layer(), R, true); CL->add(C); h->add(CL); } foreach (Relation* R, delRelation) { CommandList* CL = new CommandList(tr("History rebuild: Delete relation %1").arg(R->description()), R); Command* C = new RemoveFeatureCommand(this, R); CL->add(C); h->add(CL); } } /* RELATED */ ������������������������������������������������������������������������merkaartor-0.18.1/src/common/Document.h�������������������������������������������������������������0000664�0000000�0000000�00000011617�11770671653�0020001�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef DOCUMENT_H_ #define DOCUMENT_H_ #include <QtXml> #include "IDocument.h" #include "Layer.h" #include "Coord.h" #include "MerkaartorPreferences.h" #include "LayerDock.h" #include <utility> class QString; class QProgressDialog; class QMainWindow; class Command; class CommandHistory; class Document; class MapDocumentPrivate; class ImageMapLayer; class TrackLayer; class DrawingLayer; class DirtyLayer; class UploadedLayer; class DeletedLayer; class FeaturePainter; class SpatialiteBackend; class Document : public QObject, public IDocument { Q_OBJECT public: Document(); Document(LayerDock* aDock); private: Document(const Document&, LayerDock* aDock); public: ~Document(); const QString& id() const; void addDefaultLayers(); void addFilterLayers(); void setLayerDock(LayerDock* aDock); LayerDock* getLayerDock(void); void add(Layer* aLayer); void moveLayer(Layer* aLayer, int pos); ImageMapLayer* addImageLayer(ImageMapLayer* aLayer = NULL); DrawingLayer* addDrawingLayer(DrawingLayer* aLayer = NULL); FilterLayer* addFilterLayer(FilterLayer* aLayer = NULL); void remove(Layer* aLayer); bool exists(Layer* aLayer) const; bool exists(Feature* aFeature) const; void deleteFeature(Feature* aFeature); int layerSize() const; Layer* getLayer(const QString& id); Layer* getLayer(int i); const Layer* getLayer(int i) const; int size() const; Feature* getFeature(const IFeature::FId& id); QList<Feature*> getFeatures(Layer::LayerType layerType = Layer::UndefinedType); void setHistory(CommandHistory* h); CommandHistory& history(); const CommandHistory& history() const; void addHistory(Command* aCommand); void redoHistory(); void undoHistory(); void rebuildHistory(); void clear(); void setDirtyLayer(DirtyLayer* aLayer); Layer* getDirtyLayer(); Layer* getDirtyOrOriginLayer(Layer* aLayer = NULL); Layer* getDirtyOrOriginLayer(Feature* F); int getDirtySize() const; void setUploadedLayer(UploadedLayer* aLayer); UploadedLayer* getUploadedLayer() const; void exportOSM(QWidget* main, QIODevice* device, QList<Feature*> aFeatures); QList<Feature*> exportCoreOSM(QList<Feature*> aFeatures, bool forCopyPaste=false, QProgressDialog * progress=NULL); bool toXML(QXmlStreamWriter& stream, bool asTemplate, QProgressDialog * progress); static Document* fromXML(QString title, QXmlStreamReader& stream, qreal version, LayerDock* aDock, QProgressDialog * progress); bool importNMEA(const QString& filename, TrackLayer* NewLayer); bool importKML(const QString& filename, TrackLayer* NewLayer); bool importCSV(const QString& filename, DrawingLayer* NewLayer); bool importOSC(const QString& filename, DrawingLayer* NewLayer); #ifndef _MOBILE bool importGDAL(const QString& filename, DrawingLayer* NewLayer); #endif #ifdef USE_PROTOBUF bool importPBF(const QString& filename, DrawingLayer* NewLayer); #endif QDateTime getLastDownloadLayerTime() const; Layer* getLastDownloadLayer() const; void setLastDownloadLayer(Layer * aLayer); void addDownloadBox(Layer*l, CoordBox aBox); void removeDownloadBox(Layer*l); const QList<CoordBox> getDownloadBoxes() const; const QList<CoordBox> getDownloadBoxes(Layer* l) const; bool isDownloadedSafe(const CoordBox& bb) const; QPair<bool, CoordBox> boundingBox(); bool setFilterType(FilterType aFilter); TagSelector* getTagFilter(); int filterRevision() const; QString title() const; void setTitle(const QString aTitle); QString toPropertiesHtml(); virtual void setPainters(QList<Painter> aPainters); virtual int getPaintersSize(); virtual const Painter* getPainter(int i); QStringList getCurrentSourceTags(); static Document* getDocumentFromXml(QDomDocument* theXmlDoc); static Document* getDocumentFromClipboard(); QList<Feature*> mergeDocument(Document *otherDoc, Layer* layer, CommandList* theList=NULL); private: MapDocumentPrivate* p; protected slots: void on_imageRequested(ImageMapLayer* anImageLayer); void on_imageReceived(ImageMapLayer* anImageLayer); void on_loadingFinished(ImageMapLayer* anImageLayer); signals: void imageRequested(ImageMapLayer*); void imageReceived(ImageMapLayer*); void loadingFinished(ImageMapLayer*); void historyChanged(); }; class FeatureIterator { public: FeatureIterator(Document* aDoc); virtual ~FeatureIterator(); bool isEnd() const; FeatureIterator& operator ++(); Feature* get(); int index(); protected: virtual bool check(); Document* theDocument; int curLayerIdx; int curFeatureIdx; bool isAtEnd; int docSize; int curLayerSize; }; class VisibleFeatureIterator: public FeatureIterator { public: VisibleFeatureIterator(Document* aDoc); virtual ~VisibleFeatureIterator(); protected: virtual bool check(); }; #endif �����������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/DownloadMapDialog.ui���������������������������������������������������0000664�0000000�0000000�00000012500�11770671653�0021726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>DownloadMapDialog</class> <widget class="QDialog" name="DownloadMapDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>491</width> <height>258</height> </rect> </property> <property name="windowTitle"> <string>Download</string> </property> <layout class="QVBoxLayout"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QGroupBox" name="groupBox"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="title"> <string>Location</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout"> <item> <widget class="QRadioButton" name="FromBookmark"> <property name="text"> <string>Bookmark</string> </property> </widget> </item> <item> <widget class="QComboBox" name="Bookmarks"> <property name="enabled"> <bool>true</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> <item> <widget class="QRadioButton" name="FromView"> <property name="text"> <string>Current view</string> </property> <property name="checked"> <bool>true</bool> </property> </widget> </item> <item> <layout class="QHBoxLayout"> <item> <widget class="QRadioButton" name="FromLink"> <property name="text"> <string>WWW link (OSM/Google maps)</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="Link"/> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QRadioButton" name="FromXapi"> <property name="text"> <string>Xapi selector</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="edXapiUrl"/> </item> </layout> </item> <item> <widget class="QRadioButton" name="FromMap"> <property name="text"> <string>From the map below (map provided by the OpenStreetMap project)</string> </property> </widget> </item> </layout> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QCheckBox" name="IncludeTracks"> <property name="text"> <string>Also download raw GPS tracks</string> </property> </widget> </item> <item> <widget class="QCheckBox" name="ResolveRelations"> <property name="text"> <string>Resolve all relations</string> </property> </widget> </item> </layout> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>DownloadMapDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>228</x> <y>296</y> </hint> <hint type="destinationlabel"> <x>241</x> <y>175</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>DownloadMapDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>284</x> <y>296</y> </hint> <hint type="destinationlabel"> <x>283</x> <y>187</y> </hint> </hints> </connection> <connection> <sender>Bookmarks</sender> <signal>highlighted(int)</signal> <receiver>FromBookmark</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>372</x> <y>56</y> </hint> <hint type="destinationlabel"> <x>75</x> <y>56</y> </hint> </hints> </connection> <connection> <sender>Link</sender> <signal>textEdited(QString)</signal> <receiver>FromLink</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>386</x> <y>125</y> </hint> <hint type="destinationlabel"> <x>89</x> <y>125</y> </hint> </hints> </connection> <connection> <sender>Bookmarks</sender> <signal>activated(int)</signal> <receiver>FromBookmark</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>372</x> <y>56</y> </hint> <hint type="destinationlabel"> <x>75</x> <y>56</y> </hint> </hints> </connection> </connections> </ui> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/FeatureManipulations.cpp�����������������������������������������������0000664�0000000�0000000�00000217527�11770671653�0022725�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "FeatureManipulations.h" #include "Global.h" #include "Coord.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "WayCommands.h" #include "RelationCommands.h" #include "NodeCommands.h" #include "Document.h" #include "Features.h" #include "PropertiesDock.h" #include "Projection.h" #include "ImportExportOSC.h" #include "Utils.h" #include "LineF.h" #include <QtCore/QString> #include <QMessageBox> #include <algorithm> static void mergeNodes(Document* theDocument, CommandList* theList, Node *node1, Node *node2); static bool isNear(Node* a, Node* b) { // For now, only if exactly same position // Future: use distance threshold? return a->position() == b->position(); } bool canJoin(Way* R1, Way* R2) { if ( (R1->size() == 0) || (R2->size() == 0) ) return true; Node* Start1 = R1->getNode(0); Node* End1 = R1->getNode(R1->size()-1); Node* Start2 = R2->getNode(0); Node* End2 = R2->getNode(R2->size()-1); return (Start1 == Start2) || (Start1 == End2) || (End1 == Start2) || (End1 == End2) || isNear(Start1, Start2) || isNear(Start1, End2) || isNear(End1, Start2) || isNear(End1, End2); } bool canBreak(Way* R1, Way* R2) { if ( (R1->size() == 0) || (R2->size() == 0) ) return false; for (int i=0; i<R1->size(); i++) for (int j=0; j<R2->size(); j++) if (R1->get(i) == R2->get(j)) return true; return false; } bool canJoinRoads(PropertiesDock* theDock) { QHash<Coord,int> ends; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) { if (R->isClosed()) continue; if (!R->size()) continue; Coord start = R->getNode(0)->position(); Coord end = R->getNodes().back()->position(); ++ends[start]; ++ends[end]; } return ends.values().contains(2); } bool canBreakRoads(PropertiesDock* theDock) { QList<Way*> Input; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Input.push_back(R); for (int i=0; i<Input.size(); ++i) for (int j=i+1; j<Input.size(); ++j) if (canBreak(Input[i],Input[j])) return true; return false; } bool canDetachNodes(PropertiesDock* theDock) { QList<Way*> Roads, Result; QList<Node*> Points; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Roads.push_back(R); else if (Node* Pt = CAST_NODE(theDock->selection(i))) Points.push_back(Pt); if (Roads.size() > 1 && Points.size() > 1) return false; if (Roads.size() == 0 && Points.size()) { for (int i=0; i<Points.size(); ++i) { Way * R = Way::GetSingleParentRoad(Points[i]); if (R) return true; } return false; } if (Roads.size() && Points.size() == 1) return true; if (Roads.size() == 1 && Points.size()) return true; return false; } void reversePoints(Document* theDocument, CommandList* theList, Way* R) { Layer *layer=theDocument->getDirtyOrOriginLayer(R->layer()); for (int i=R->size()-2; i>=0; --i) { Node* Pt = R->getNode(i); theList->add(new WayRemoveNodeCommand(R,i,layer)); theList->add(new WayAddNodeCommand(R,Pt,layer)); } } static qreal distanceFrom(QLineF ab, const Coord& c) { // distance in metres from c to line segment ab qreal ab_len2 = ab.dx() * ab.dx() + ab.dy() * ab.dy(); QPointF dp; if (ab_len2) { QLineF ac(ab.p1(), c); qreal u = (ac.dx() * ab.dx() + ac.dy() * ab.dy()) / ab_len2; if (u < 0.0) u = 0.0; else if (u > 1.0) u = 1.0; dp = ab.pointAt(u); } else { dp = ab.p1(); } Coord dc(dp); return dc.distanceFrom(c); } void simplifyWay(Document *doc, Layer *layer, CommandList *theList, Way *w, int start, int end, qreal threshold) { // Douglas-Peucker reduction of uninteresting points in way, subject to maximum error in metres // TODO Performance: Use path-hull algorithm described at http://www.cs.ubc.ca/cgi-bin/tr/1992/TR-92-07.ps if (end - start <= 1) // no removable nodes return; QLineF segment(w->getNode(start)->position(), w->getNode(end)->position()); qreal maxdist = -1; int maxpos = 0; for (int i = start+1; i < end; i++) { qreal d = distanceFrom(segment, w->getNode(i)->position()); if (d > maxdist) { maxdist = d; maxpos = i; } } // maxdist is in kilometres if (maxpos && maxdist * 1000 > threshold) { simplifyWay(doc, layer, theList, w, maxpos, end, threshold); simplifyWay(doc, layer, theList, w, start, maxpos, threshold); } else { for (int i = end - 1; i > start; i--) { Feature *n = w->get(i); if (!doc->isDownloadedSafe(n->boundingBox()) && n->hasOSMId()) continue; theList->add(new WayRemoveNodeCommand(w, i, layer)); theList->add(new RemoveFeatureCommand(doc, n)); } } } QSet<QString> uninterestingKeys; bool isNodeInteresting(Node *n) { for (int i = 0; i < n->tagSize(); i++) if (!uninterestingKeys.contains(n->tagKey(i))) return true; return false; } void simplifyRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock, qreal threshold) { if (uninterestingKeys.isEmpty()) uninterestingKeys << "source"; for (int i = 0; i < theDock->selectionSize(); ++i) if (Way* w = CAST_WAY(theDock->selection(i))) { Layer *layer = theDocument->getDirtyOrOriginLayer(w->layer()); int end = w->size() - 1; for (int i = end; i >= 0; i--) { Node *n = w->getNode(i); if (i == 0 || n->sizeParents() > 1 || isNodeInteresting(n)) { simplifyWay(theDocument, layer, theList, w, i, end, threshold); end = i; } } } } static void appendPoints(Document* theDocument, CommandList* L, Way* Dest, Way* Src, bool prepend, bool reverse) { Layer *layer = theDocument->getDirtyOrOriginLayer(Dest->layer()); int srclen = Src->size(); int destpos = prepend ? 0 : Dest->size(); for (int i=1; i<srclen; ++i) { int j = (reverse ? srclen-i : i) - (prepend != reverse ? 1 : 0); Node* Pt = Src->getNode(j); L->add(new AddFeatureCommand(layer, Pt, false)); L->add(new WayAddNodeCommand(Dest, Pt, destpos++, layer)); } } static Way* join(Document* theDocument, CommandList* L, Way* R1, Way* R2) { QList<Feature*> Alternatives; if (R1->size() == 0) { Feature::mergeTags(theDocument,L,R2,R1); L->add(new RemoveFeatureCommand(theDocument,R1,Alternatives)); return R2; } if (R2->size() == 0) { Feature::mergeTags(theDocument,L,R1,R2); L->add(new RemoveFeatureCommand(theDocument,R2,Alternatives)); return R1; } Node* Start1 = R1->getNode(0); Node* End1 = R1->getNode(R1->size()-1); Node* Start2 = R2->getNode(0); Node* End2 = R2->getNode(R2->size()-1); bool prepend = false; // set true if R2 meets beginning of R1 bool reverse = false; // set true if R2 is opposite direction to R1 if (End1 == Start2) { // nothing to do, but skip the other tests } else if (End1 == End2) { reverse = true; } else if (Start1 == Start2) { prepend = true; reverse = true; } else if (Start1 == End2) { prepend = true; } else if (isNear(End1, Start2)) { mergeNodes(theDocument, L, End1, Start2); } else if (isNear(End1, End2)) { mergeNodes(theDocument, L, End1, End2); reverse = true; } else if (isNear(Start1, Start2)) { mergeNodes(theDocument, L, Start1, Start2); prepend = true; reverse = true; } else if (isNear(Start1, End2)) { mergeNodes(theDocument, L, Start1, End2); prepend = true; } appendPoints(theDocument, L, R1, R2, prepend, reverse); Feature::mergeTags(theDocument,L,R1,R2); L->add(new RemoveFeatureCommand(theDocument,R2,Alternatives)); // Auto-merge nearly-closed ways Node *StartResult = R1->getNode(0); Node *EndResult = R1->getNode(R1->size()-1); if (StartResult != EndResult && isNear(StartResult, EndResult)) mergeNodes(theDocument, L, StartResult, EndResult); return R1; } template<typename T> static void replaceItem(QList<T> &list, T oldItem, T newItem) { int i = list.indexOf(oldItem); if (i >= 0) list.replace(i, newItem); } void joinRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { QList<Feature*> selection = theDock->selection(); QHash<Coord,QList<Way*> > ends; foreach (Feature *F, selection) if (Way* R = CAST_WAY(F)) if (!R->isClosed()) { Coord start = R->getNode(0)->position(); ends[start] << R; Coord end = R->getNodes().back()->position(); ends[end] << R; } foreach (Coord c, ends.keys()) { QList<Way*> ways = ends[c]; if (ways.count() != 2) continue; Way *R1 = ways[0]; Way *R2 = ways[1]; if (R1 == R2) { Node *firstNode = R1->getNode(0); Node *lastNode = R1->getNode(R1->size()-1); if (firstNode != lastNode && R1->size() >= 4 && firstNode->position() == lastNode->position()) { // almost-area; close it properly mergeNodes(theDocument, theList, R1->getNode(0), R1->getNode(R1->size()-1)); } } else { R1 = join(theDocument, theList, R1, R2); // replace R2 with R1 for subsequent operations replaceItem(ends[R2->getNode(0)->position()], R2, R1); replaceItem(ends[R2->getNodes().back()->position()], R2, R1); selection.removeOne(R2); } } theDock->setSelection(selection); } static bool handleWaysplitSpecialRestriction(Document* theDocument, CommandList* theList, Way* FirstPart, Way* NextPart, Relation* theRel) { if (theRel->tagValue("type","") != "restriction") return false; for (int k=0; k < theRel->size(); k++) { // check for via if (theRel->getRole(k) == "via") { if (theRel->get(k) == FirstPart) { // whoops, we just split a via way, just add the new way, too theList->add(new RelationAddFeatureCommand(theRel, theRel->getRole(k), NextPart, k+1, theDocument->getDirtyOrOriginLayer(FirstPart->layer()))); // we just added a member, so get over it k++; } else if ((theRel->get(k))->getType() == IFeature::Point) { // this seems to be a via node, check if it is member the nextPart if (NextPart->find(theRel->get(k)) < NextPart->size()) { // yes it is, so remove First Part and add Next Part to it int idx = theRel->find(FirstPart); theList->add(new RelationAddFeatureCommand(theRel, theRel->getRole(idx), NextPart, idx+1, theDocument->getDirtyOrOriginLayer(FirstPart->layer()))); theList->add(new RelationRemoveFeatureCommand(theRel, idx, theDocument->getDirtyOrOriginLayer(FirstPart->layer()))); } } else if ((theRel->get(k))->getType() & IFeature::LineString) { // this is a way, check the nodes Way* W = CAST_WAY(theRel->get(k)); for (int l=0; l<W->size(); l++) { // check if this node is member the nextPart if (NextPart->find(W->get(l)) < NextPart->size()) { // yes it is, so remove First Part and add Next Part to it int idx = theRel->find(FirstPart); theList->add(new RelationAddFeatureCommand(theRel, theRel->getRole(idx), NextPart, idx+1, theDocument->getDirtyOrOriginLayer(FirstPart->layer()))); theList->add(new RelationRemoveFeatureCommand(theRel, idx, theDocument->getDirtyOrOriginLayer(FirstPart->layer()))); break; } } } } } return true; } static void handleWaysplitRelations(Document* theDocument, CommandList* theList, Way* FirstPart, Way* NextPart) { /* since we may delete First Part from some Relations here, we first build a list of the relations to check */ QList<Relation*> checkList; for (int j=0; j < FirstPart->sizeParents(); j++) { checkList.append(CAST_RELATION(FirstPart->getParent(j))); } for (int j=0; j < checkList.count(); j++) { Relation* L = checkList.at(j); if (!handleWaysplitSpecialRestriction(theDocument, theList, FirstPart, NextPart, L)) { int idx = L->find(FirstPart); theList->add(new RelationAddFeatureCommand(L, L->getRole(idx), NextPart, idx+1, theDocument->getDirtyOrOriginLayer(FirstPart->layer()))); } } } static void splitRoad(Document* theDocument, CommandList* theList, Way* In, const QList<Node*>& Points, QList<Way*>& Result) { int pos; if (In->isClosed()) { // Special case: If area, rotate the area so that the start node is the first point of splitting QList<Node*> Target; for (int i=0; i < Points.size(); i++) if ((pos = In->find(Points[i])) != In->size()) { for (int j=pos+1; j<In->size(); ++j) Target.push_back(In->getNode(j)); for (int j=1; j<= pos; ++j) Target.push_back(In->getNode(j)); break; } if (pos == In->size()) return; if (Points.size() == 1) // Special case: For a 1 point area splitting, de-close the road, i.e. duplicate the selected node { Node* N = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(In->layer()), *(In->getNode(pos))); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(In->layer()),N,true)); Target.prepend(N); } else // otherwise, just close the modified area Target.prepend(In->getNode(pos)); // Now, reconstruct the road/area while (In->size()) theList->add(new WayRemoveNodeCommand(In,(int)0,theDocument->getDirtyOrOriginLayer(In->layer()))); for (int i=0; i<Target.size(); ++i) theList->add(new WayAddNodeCommand(In,Target[i],theDocument->getDirtyOrOriginLayer(In->layer()))); if (Points.size() == 1) { // For 1-point, we are done Result.push_back(In); return; } } Way* FirstPart = In; Result.push_back(FirstPart); for (int i=1; (i+1)<FirstPart->size(); ++i) { if (std::find(Points.begin(),Points.end(),FirstPart->get(i)) != Points.end()) { Way* NextPart = g_backend.allocWay(theDocument->getDirtyOrOriginLayer(In->layer())); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(In->layer()),NextPart,true)); copyTags(NextPart,FirstPart); theList->add(new WayAddNodeCommand(NextPart, FirstPart->getNode(i), theDocument->getDirtyOrOriginLayer(In->layer()))); while ( (i+1) < FirstPart->size() ) { theList->add(new WayAddNodeCommand(NextPart, FirstPart->getNode(i+1), theDocument->getDirtyOrOriginLayer(In->layer()))); theList->add(new WayRemoveNodeCommand(FirstPart,i+1,theDocument->getDirtyOrOriginLayer(In->layer()))); } handleWaysplitRelations(theDocument, theList, FirstPart, NextPart); Result.push_back(NextPart); FirstPart = NextPart; i=0; } } } void splitRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { QList<Way*> Roads, Result; QList<Node*> Points; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Roads.push_back(R); else if (Node* Pt = CAST_NODE(theDock->selection(i))) Points.push_back(Pt); if (Roads.size() == 0 && Points.size() == 1) { Way * R = Way::GetSingleParentRoadInner(Points[0]); if (R) Roads.push_back(R); } for (int i=0; i<Roads.size(); ++i) splitRoad(theDocument, theList,Roads[i],Points, Result); theDock->setSelection(Result); } static void breakRoad(Document* theDocument, CommandList* theList, Way* R, Node* Pt) { for (int i=0; i<R->size(); ++i) if (R->get(i) == Pt) { Node* New = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(R->layer()), *Pt); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(R->layer()),New,true)); copyTags(New,Pt); theList->add(new WayRemoveNodeCommand(R,i,theDocument->getDirtyOrOriginLayer(R->layer()))); theList->add(new WayAddNodeCommand(R,New,i,theDocument->getDirtyOrOriginLayer(R->layer()))); } if (!Pt->sizeParents()) theList->add(new RemoveFeatureCommand(theDocument,Pt)); } void breakRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { QList<Way*> Roads, Result; QList<Node*> Points; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Roads.push_back(R); else if (Node* Pt = CAST_NODE(theDock->selection(i))) Points.push_back(Pt); if (Roads.size() == 0 && Points.size() == 1) { for (int i=0; i<Points[0]->sizeParents() ; ++i) { Way * R = CAST_WAY(Points[0]->getParent(i)); if (R && !R->isDeleted()) Roads.push_back(R); } } if (Roads.size() == 1 && Points.size() ) { splitRoad(theDocument, theList,Roads[0],Points, Result); if (Roads[0]->area() > 0.0) { for (int i=0; i<Points.size(); ++i) breakRoad(theDocument, theList, Roads[0],Points[i]); } else { Roads = Result; } } for (int i=0; i<Roads.size(); ++i) for (int j=0; j<Roads[i]->size(); ++j) for (int k=i+1; k<Roads.size(); ++k) breakRoad(theDocument, theList, Roads[k],CAST_NODE(Roads[i]->get(j))); } bool canCreateJunction(PropertiesDock* theDock) { return createJunction(NULL, NULL, theDock, false); } int createJunction(Document* theDocument, CommandList* theList, PropertiesDock* theDock, bool doIt) { //TODO test that the junction do not already exists! QList<Way*> Roads, Result; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Roads.push_back(R); if (Roads.size() < 2) return 0; Way* R1 = Roads[0]; Way* R2 = Roads[1]; return Way::createJunction(theDocument, theList, R1, R2, doIt); } #define STREET_NUMBERS_LENGTH .0000629 #define STREET_NUMBERS_ANGLE 30.0 void createStreetNumbers(Document* theDocument, CommandList* theList, Way* theRoad, bool Left) { QString streetName = theRoad->tagValue("name", ""); QLineF l, l2, nv; Node* N; Way* R = g_backend.allocWay(theDocument->getDirtyOrOriginLayer()); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(),R,true)); theList->add(new SetTagCommand(R, "addr:interpolation", "")); theList->add(new SetTagCommand(R, "addr:street", streetName)); QPointF prevPoint; for (int j=0; j < theRoad->size(); j++) { if (j == 0) { l2 = QLineF(theRoad->getNode(j)->position(), theRoad->getNode(j+1)->position()); l = l2; l.setAngle(l2.angle() + 180.); prevPoint = l.p2(); } else if (j == theRoad->size()-1) { l = QLineF(theRoad->getNode(j)->position(), theRoad->getNode(j-1)->position()); l2 = l; l2.setAngle(l.angle() + 180.); } else { l = QLineF(theRoad->getNode(j)->position(), theRoad->getNode(j-1)->position()); l2 = QLineF(theRoad->getNode(j)->position(), theRoad->getNode(j+1)->position()); } nv = l.normalVector().unitVector(); qreal theAngle = (l.angle() - l2.angle()); if (theAngle < 0.0) theAngle = 360. + theAngle; theAngle /= 2.; nv.setAngle(l2.angle() + theAngle); nv.setLength(STREET_NUMBERS_LENGTH/sin(angToRad(theAngle))); if (Left) nv.setAngle(nv.angle() + 180.0); QLineF lto(prevPoint, nv.p2()); lto.setLength(lto.length()+STREET_NUMBERS_LENGTH); QPointF pto; bool intersectedTo = false; for (int k=0; k < theRoad->getNode(j)->sizeParents(); ++k) { Way* I = CAST_WAY(theRoad->getNode(j)->getParent(k)); if (!I || I == theRoad || I->isDeleted()) continue; for (int m=0; m < I->size()-1; ++m) { QLineF l3 = QLineF(I->getNode(m)->position(), I->getNode(m+1)->position()); QPointF theIntersection; if (lto.intersect(l3, &theIntersection) == QLineF::BoundedIntersection) { intersectedTo = true; QLineF lt = QLineF(prevPoint, theIntersection); if (lt.length() < lto.length()) lto = lt; } } } if (j != 0) { QLineF lfrom = QLineF(nv.p2(), prevPoint); lfrom.setLength(lfrom.length()*2.); QPointF pfrom; bool intersectedFrom = false; for (int k=0; k < theRoad->getNode(j-1)->sizeParents(); ++k) { Way* I = CAST_WAY(theRoad->getNode(j-1)->getParent(k)); if (!I || I == theRoad || I->isDeleted()) continue; for (int m=0; m < I->size()-1; ++m) { QLineF l3 = QLineF(I->getNode(m)->position(), I->getNode(m+1)->position()); QPointF theIntersection; if (lfrom.intersect(l3, &theIntersection) == QLineF::BoundedIntersection) { intersectedFrom = true; QLineF lt = QLineF(nv.p2(), theIntersection); if (lt.length() < lfrom.length()) lfrom = lt; } } } if (intersectedFrom) { lfrom.setLength(lfrom.length() - STREET_NUMBERS_LENGTH); pfrom = lfrom.p2(); R = g_backend.allocWay(theDocument->getDirtyOrOriginLayer()); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(),R,true)); theList->add(new SetTagCommand(R, "addr:interpolation", "")); theList->add(new SetTagCommand(R, "addr:street", streetName)); N = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(), Coord(pfrom)); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(R, N, theDocument->getDirtyOrOriginLayer(R->layer()))); theList->add(new SetTagCommand(N, "addr:housenumber", "")); } else { pfrom = prevPoint; } } if (intersectedTo) { if (j != 0) { lto.setLength(lto.length() - STREET_NUMBERS_LENGTH); pto = lto.p2(); N = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(), Coord(pto)); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(R, N, theDocument->getDirtyOrOriginLayer(R->layer()))); theList->add(new SetTagCommand(N, "addr:housenumber", "")); } } else { if (theAngle < 85. || theAngle > 95. || j== 0 || j == theRoad->size()-1) { N = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(), Coord(nv.p2())); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(),N,true)); theList->add(new WayAddNodeCommand(R, N, theDocument->getDirtyOrOriginLayer(R->layer()))); theList->add(new SetTagCommand(N, "addr:housenumber", "")); } pto = nv.p2(); } prevPoint = nv.p2(); } } void addStreetNumbers(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { QList<Way*> Roads; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Roads.push_back(R); if (Roads.isEmpty()) return; QList<Way*>::const_iterator it = Roads.constBegin(); for (;it != Roads.constEnd(); ++it) { if((*it)->size() < 2) continue; createStreetNumbers(theDocument, theList, (*it), false); createStreetNumbers(theDocument, theList, (*it), true); } if (Roads.size() == 1) theList->setFeature(Roads.at(0)); } void alignNodes(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { if (theDock->selectionSize() < 3) //thre must be at least 3 nodes to align something return; //We build a list of selected nodes QList<Node*> Nodes; for (int i=0; i<theDock->selectionSize(); ++i) if (Node* N = CAST_NODE(theDock->selection(i))) Nodes.push_back(N); //we check that we have at least 3 nodes and the first two can give a line if(Nodes.size() < 3) return; if(Nodes[0]->position() == Nodes[1]->position()) return; //we do the alignement Coord pos(0,0); const Coord p1(Nodes[0]->position()); const Coord p2(Nodes[1]->position()-p1); const qreal slope = angle(p2); for (int i=2; i<Nodes.size(); ++i) { pos=Nodes[i]->position()-p1; rotate(pos,-slope); pos.setY(0); rotate(pos,slope); pos=pos+p1; theList->add(new MoveNodeCommand( Nodes[i], pos, theDocument->getDirtyOrOriginLayer(Nodes[i]->layer()) )); } } void bingExtract(Document* theDocument, CommandList* theList, PropertiesDock* theDock, CoordBox vp) { //We build a list of selected nodes QList<Node*> Nodes; for (int i=0; i<theDock->selectionSize(); ++i) if (Node* N = CAST_NODE(theDock->selection(i))) Nodes.push_back(N); //we check that we have at least 2 nodes if(Nodes.size() < 2) return; if(Nodes[0]->position() == Nodes[1]->position()) return; //http://3667a17de9b94ccf8fd278f9de62dae4.cloudapp.net/ QString u("http://magicshop.cloudapp.net/DetectRoad.svc/detect/?"); u.append(QString("pt1=%1,%2").arg(COORD2STRING(Nodes[0]->position().y())).arg(COORD2STRING(Nodes[0]->position().x()))); u.append(QString("&pt2=%1,%2").arg(COORD2STRING(Nodes[1]->position().y())).arg(COORD2STRING(Nodes[1]->position().x()))); u.append(QString("&bbox=%1,%2,%3,%4") .arg(COORD2STRING(vp.top())) .arg(COORD2STRING(vp.left())) .arg(COORD2STRING(vp.bottom())) .arg(COORD2STRING(vp.right())) ); QString sXml; if (!Utils::sendBlockingNetRequest(QUrl(u), sXml)) { QMessageBox::critical(0, QApplication::tr("Bing Road Detect"), QApplication::tr("Cannot get output.")); return; } qDebug() << sXml; //Import the OSC Document* newDoc; QDomDocument xmlDoc; xmlDoc.setContent(sXml); if (!(newDoc = Document::getDocumentFromXml(&xmlDoc))) { QMessageBox::critical(0, QApplication::tr("Bing Road Detect"), QApplication::tr("No valid data.")); return; } if (!newDoc->size()) { QMessageBox::critical(0, QApplication::tr("Bing Road Detect"), QApplication::tr("Cannot parse output.")); } else { DrawingLayer* newLayer = new DrawingLayer( "Bing Road Extract" ); newLayer->setUploadable(false); theDocument->add(newLayer); QList<Feature*> theFeats = theDocument->mergeDocument(newDoc, newLayer, theList); // Merge in initial nodes Node * N0 = NULL; Node * N1 = NULL; qreal Best0 = 180., Best1 = 180.; foreach (Feature* F, theFeats) { if (CHECK_NODE(F)) { Node* N = STATIC_CAST_NODE(F); qreal B = distance(Nodes[0]->position(), N->position()); if (B < Best0) { N0 = N; Best0 = B; } B = distance(Nodes[1]->position(), N->position()); if (B < Best1) { N1 = N; Best1 = B; } } } if (N0) mergeNodes(theDocument, theList, Nodes[0], N0); if (N1) mergeNodes(theDocument, theList, Nodes[1], N1); } delete newDoc; } void spreadNodes(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { // There must be at least 3 nodes to align something if (theDock->selectionSize() < 3) return; // We build a list of selected nodes // Sort by distance along the line between the first two nodes QList<Node*> Nodes; QList<float> Metrics; Coord p; Coord delta; for (int i=0; i<theDock->selectionSize(); ++i) { if (Node* N = CAST_NODE(theDock->selection(i))) { Coord pos(N->position()); if (Nodes.size() == 0) { p = pos; Nodes.push_back(N); Metrics.push_back(0.0f); } else if (Nodes.size() == 1) { delta = pos - p; // First two nodes must form a line if (delta.isNull()) return; Nodes.push_back(N); Metrics.push_back(delta.x()*delta.x() + delta.y()*delta.y()); } else { pos = pos - p; qreal metric = pos.x()*delta.x() + pos.y()*delta.y(); // This could be done more efficiently with a binary search for (int j = 0; j < Metrics.size(); ++j) { if (metric < Metrics[j]) { Nodes.insert(j, N); Metrics.insert(j, metric); goto inserted; } } Nodes.push_back(N); Metrics.push_back(metric); inserted: ; } } } // We check that we have at least 3 nodes if(Nodes.size() < 3) return; // Do the spreading between the extremes p = Nodes[0]->position(); delta = (Nodes[Nodes.size()-1]->position() - p) / (Nodes.size()-1); for (int i=1; i<Nodes.size()-1; ++i) { p = p + delta; theList->add(new MoveNodeCommand( Nodes[i], p, theDocument->getDirtyOrOriginLayer(Nodes[i]->layer()) )); } } static void mergeNodes(Document* theDocument, CommandList* theList, Node *node1, Node *node2) { QList<Feature*> alt; alt.append(node1); Feature::mergeTags(theDocument, theList, node1, node2); theList->add(new RemoveFeatureCommand(theDocument, node2, alt)); } void mergeNodes(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { if (theDock->selectionSize() <= 1) return; QList<Node*> Nodes; QList<Feature*> alt; for (int i=0; i<theDock->selectionSize(); ++i) if (Node* N = CAST_NODE(theDock->selection(i))) Nodes.push_back(N); Node* merged = Nodes[0]; alt.push_back(merged); for (int i=1; i<Nodes.size(); ++i) { Feature::mergeTags(theDocument, theList, merged, Nodes[i]); theList->add(new RemoveFeatureCommand(theDocument, Nodes[i], alt)); } } void detachNode(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { QList<Way*> Roads, Result; QList<Node*> Points; for (int i=0; i<theDock->selectionSize(); ++i) if (Way* R = CAST_WAY(theDock->selection(i))) Roads.push_back(R); else if (Node* Pt = CAST_NODE(theDock->selection(i))) Points.push_back(Pt); if (Roads.size() > 1 && Points.size() > 1) return; if (Roads.size() == 0 && Points.size()) { for (int i=0; i<Points.size(); ++i) { Way * R = Way::GetSingleParentRoad(Points[i]); if (R) theList->add(new WayRemoveNodeCommand(R, Points[i], theDocument->getDirtyOrOriginLayer(R))); } } if (Roads.size() > 1 && Points.size() == 1) { for (int i=0; i<Roads.size(); ++i) { if (Roads[i]->find(Points[0]) < Roads[i]->size()) theList->add(new WayRemoveNodeCommand(Roads[i], Points[0], theDocument->getDirtyOrOriginLayer(Roads[i]))); } } if (Roads.size() == 1 && Points.size()) { for (int i=0; i<Points.size(); ++i) { if (Roads[0]->find(Points[i]) < Roads[0]->size()) theList->add(new WayRemoveNodeCommand(Roads[0], Points[i], theDocument->getDirtyOrOriginLayer(Roads[0]))); } } } void commitFeatures(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { QSet<Feature*> Features; QQueue<Feature*> ToAdd; for (int i=0; i<theDock->selectionSize(); ++i) if (!theDock->selection(i)->isUploadable() && !theDock->selection(i)->isSpecial()) ToAdd.enqueue(theDock->selection(i)); while (!ToAdd.isEmpty()) { Feature *feature = ToAdd.dequeue(); Features.insert(feature); for (int j=0; j < feature->size(); ++j) { Feature *member = feature->get(j); if (!Features.contains(member)) { ToAdd.enqueue(member); } } } if (Features.size()) { Layer *layer = theDocument->getDirtyLayer(); foreach (Feature *feature, Features) theList->add(new AddFeatureCommand(layer,feature,true)); } } void addRelationMember(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { Relation* theRelation = NULL; QList<Feature*> Features; for (int i=0; i<theDock->selectionSize(); ++i) if ((theDock->selection(i)->getClass() == "Relation") && !theRelation) theRelation = CAST_RELATION(theDock->selection(i)); else Features.push_back(theDock->selection(i)); if (!(theRelation && Features.size())) return; for (int i=0; i<Features.size(); ++i) { theList->add(new RelationAddFeatureCommand(theRelation, "", Features[i], theDocument->getDirtyOrOriginLayer(theRelation->layer()))); } } void removeRelationMember(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { Relation* theRelation = NULL; QList<Feature*> Features; for (int i=0; i<theDock->selectionSize(); ++i) if ((theDock->selection(i)->getClass() == "Relation") && !theRelation) theRelation = CAST_RELATION(theDock->selection(i)); else Features.push_back(theDock->selection(i)); if (!theRelation && Features.size() == 1) theRelation = Feature::GetSingleParentRelation(Features[0]); if (!(theRelation && Features.size())) return; int idx; for (int i=0; i<Features.size(); ++i) { if ((idx = theRelation->find(Features[i])) != theRelation->size()) theList->add(new RelationRemoveFeatureCommand(theRelation, idx, theDocument->getDirtyOrOriginLayer(theRelation->layer()))); } } void addToMultipolygon(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { Relation* theRelation = NULL; QList<Way*> theWays; for (int i=0; i<theDock->selectionSize(); ++i) { if (!theRelation && CHECK_RELATION(theDock->selection(i)) && theDock->selection(i)->tagValue("type", "") == "multipolygon") theRelation = STATIC_CAST_RELATION(theDock->selection(i)); if (CHECK_WAY(theDock->selection(i))) theWays << STATIC_CAST_WAY(theDock->selection(i)); } if (!theWays.size()) return; if (theRelation) { for (int i=0; i<theRelation->size(); ++i) { if (CHECK_WAY(theRelation->get(i)) && !theWays.contains(STATIC_CAST_WAY(theRelation->get(i)))) { theWays << STATIC_CAST_WAY(theRelation->get(i)); } } } Way* outer = theWays[0]; for (int i=1; i<theWays.size(); ++i) { if (outer->boundingBox().contains(theWays[i]->boundingBox())) continue; if (theWays[i]->boundingBox().contains(outer->boundingBox())) outer = theWays[i]; else if (theWays[i]->boundingBox().intersects(outer->boundingBox())) outer = NULL; } if (outer) { if (!theRelation) { theRelation = g_backend.allocRelation(theDocument->getDirtyOrOriginLayer()); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(),theRelation,true)); } else { for (int i=0; i<theRelation->size(); ++i) theList->add(new RelationRemoveFeatureCommand(theRelation, 0)); } theRelation->setTag("type", "multipolygon"); } else return; theList->add(new RelationAddFeatureCommand(theRelation, "outer", outer)); for (int i=0; i<theWays.size(); ++i) { if (theWays[i] != outer) { theList->add(new RelationAddFeatureCommand(theRelation, "inner", theWays[i])); } } } /* Subdivide theRoad between index and index+1 into divisions segments. * divisions-1 new nodes are created starting at index index+1. */ static void subdivideRoad(Document* theDocument, CommandList* theList, Way* theRoad, unsigned int index, unsigned int divisions) { Node* N0 = theRoad->getNode(index); Node* N1 = theRoad->getNode(index+1); Coord nodeBase = N0->position(); Coord nodeDelta = (N1->position() - nodeBase) / divisions; for (unsigned int i = 1; i < divisions; ++i) { nodeBase = nodeBase + nodeDelta; Node* newNode = g_backend.allocNode(theDocument->getDirtyOrOriginLayer(theRoad), nodeBase); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(theRoad), newNode, true)); theList->add(new WayAddNodeCommand(theRoad, newNode, index + i, theDocument->getDirtyOrOriginLayer(theRoad))); } } bool canSubdivideRoad(PropertiesDock* theDock, Way** outTheRoad, unsigned int* outEdge) { // Get the selected way and nodes Way* theRoad = NULL; Node* theNodes[2] = { NULL, NULL }; for (int i = 0; i < theDock->selectionSize(); ++i) { if ((theDock->selection(i)->getClass() == "Way") && !theRoad) theRoad = CAST_WAY(theDock->selection(i)); else if (theDock->selection(i)->getClass() == "Node") { if (!theNodes[0]) theNodes[0] = CAST_NODE(theDock->selection(i)); else if (!theNodes[1]) theNodes[1] = CAST_NODE(theDock->selection(i)); } } // If the way has only two nodes, use them if (theRoad && theRoad->size() == 2) { theNodes[0] = theRoad->getNode(0); theNodes[1] = theRoad->getNode(1); // Now this would just be silly if (theNodes[0] == theNodes[1]) return false; } // A way and 2 nodes if (!theRoad || !theNodes[0] || !theNodes[1]) return false; // Nodes must be adjacent in the way int numNodes = theRoad->size(); int nodeIndex0 = -1; for (int i = 0; i < numNodes-1; ++i) { Node* N0 = theRoad->getNode(i); Node* N1 = theRoad->getNode(i+1); if ((N0 == theNodes[0] && N1 == theNodes[1]) || (N0 == theNodes[1] && N1 == theNodes[0])) { nodeIndex0 = i; break; } } if (nodeIndex0 < 0) return false; if (outTheRoad) *outTheRoad = theRoad; if (outEdge) *outEdge = nodeIndex0; return true; } void subdivideRoad(Document* theDocument, CommandList* theList, PropertiesDock* theDock, unsigned int divisions) { // Subdividing into 1 division is no-op if (divisions < 2) return; // Get the selected way and nodes Way* theRoad; unsigned int edge; if (!canSubdivideRoad(theDock, &theRoad, &edge)) return; subdivideRoad(theDocument, theList, theRoad, edge, divisions); } /* Remove nodes between theNodes in theArea into a separate way newArea. * newArea's first node will be theNodes[0], and it's last nodes will be * theNodes[1] and theNodes[0]. */ static bool splitArea(Document* theDocument, CommandList* theList, Way* theArea, unsigned int nodes[2], Way** outNewArea) { // Make sure nodes are in order if (nodes[0] > nodes[1]) qSwap(nodes[0], nodes[1]); // And not next to one another if (nodes[0] + 1 == nodes[1] || (nodes[0] == 0 && nodes[1] == (unsigned int)theArea->size() - 2)) { qDebug() << "Nodes must not be adjacent"; return false; } Node* theNodes[2]; for (int i = 0; i < 2; ++i) theNodes[i] = theArea->getNode(nodes[i]); // Extract nodes between nodes[0] and nodes[1] into a separate area // and remove the nodes from the original area Way* newArea = g_backend.allocWay(theDocument->getDirtyOrOriginLayer(theArea)); theList->add(new AddFeatureCommand(theDocument->getDirtyOrOriginLayer(theArea), newArea, true)); copyTags(newArea, theArea); theList->add(new WayAddNodeCommand(newArea, theNodes[0], theDocument->getDirtyOrOriginLayer(theArea))); for (unsigned int i = nodes[0]+1; i < nodes[1]; ++i) { theList->add(new WayAddNodeCommand(newArea, theArea->getNode(nodes[0]+1), theDocument->getDirtyOrOriginLayer(theArea))); theList->add(new WayRemoveNodeCommand(theArea, theArea->getNode(nodes[0]+1), theDocument->getDirtyOrOriginLayer(theArea))); } theList->add(new WayAddNodeCommand(newArea, theNodes[1], theDocument->getDirtyOrOriginLayer(theArea))); theList->add(new WayAddNodeCommand(newArea, theNodes[0], theDocument->getDirtyOrOriginLayer(theArea))); handleWaysplitRelations(theDocument, theList, theArea, newArea); if (outNewArea) *outNewArea = newArea; return true; } // Cycle the node index in an area so it's >= 0, < size-1 (never the last node). static int cycleNodeIndex(Way* area, int index) { if (index >= area->size()-1) index -= area->size()-1; else if (index < 0) index += area->size()-1; return index; } // Find the index of a node in an area as close as possible to expected. // Return -1 if node isn't in area. This is useful for tracing around shared // nodes of two areas, where we want the indexes to be continuous so we can // detect where the edges depart from one another. static int nodeIndexInArea(Way* area, Node* node, int expected) { // parent list is gonna be shorter, so check this first for (int i = 0; i < node->sizeParents(); ++i) if (node->getParent(i) == area) { // now we know it's on the list, find the index if (area->getNode(expected) == node) return expected; int forward = expected; int backward = expected; for (int j = 0; j < (area->size()-1)/2; ++j) { forward = cycleNodeIndex(area, forward + 1); if (area->getNode(forward) == node) return forward; backward = cycleNodeIndex(area, backward - 1); if (area->getNode(backward) == node) return backward; } break; } return -1; } // Determine if two area node indexes are adjacent, and in a particular // direction if direction is 1 or -1. If they are adjacent, direction is set to // 1 or -1. This is useful tracing the shared nodes between two areas as the // direction is initialised to 0 and determined on the first check, and then // enforced on later checks. static bool nodeIndexesAdjacent(Way* way, unsigned int n1, unsigned int n2, int* direction) { int dir = n2 - n1; if (abs(dir) > 1) { // wrap? if (!n1) n1 = way->size() - 1; else if (!n2) n2 = way->size() - 1; else return false; dir = n2 - n1; } if (abs(dir) != 1) return false; // in the correct direction? if (!*direction) { *direction = dir; return true; } else return *direction == dir; } // Join selected areas which are sharing edges. Multiple nodes adjacent in both // areas must be shared for them to be joined. // FIXME This does not currently produce multipolygons when the areas form an // enclosed area. Instead the edge will run around the outside, cut into the // middle and run around the inner part, and then cut back out the same way. void joinAreas(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { // Collect the set of selected areas QSet<Way*> areas; for (int i = 0; i < theDock->selectionSize(); ++i) if (theDock->selection(i)->getClass() == "Way") { Way* area = CAST_WAY(theDock->selection(i)); if (area->isClosed()) areas << area; } findNextJoin: // Go through areas in the set while (areas.size() > 1) { Way* area = *areas.begin(); // Go through nodes shared between multiple features for (int i = 0; i < area->size() - 1; ++i) { Node* node = area->getNode(i); if (node->sizeParents() <= 1) continue; // Go through parents of the node that are areas in our set for (int p1 = 0; p1 < node->sizeParents(); ++p1) { if (!(node->getParent(p1)->getType() & IFeature::Polygon)) continue; Way* otherArea = CAST_WAY(node->getParent(p1)); if (otherArea == area || !areas.contains(otherArea)) continue; // Look for the first shared mutually adjacent node. for (int n = 0; n < otherArea->size()-1; ++n) { if (otherArea->getNode(n) != node) continue; int otherFirst = n; int otherLast = otherFirst; int otherDirection = 0; int first = i; int count = 1; // We want node i to be the first shared node, so if the // one before it is also shared and adjacent we can safely // ignore it as we'll hit it again later int lastOtherIndex = nodeIndexInArea(otherArea, area->getNode(cycleNodeIndex(area, i-1)), n); if (lastOtherIndex != -1 && nodeIndexesAdjacent(otherArea, n, lastOtherIndex, &otherDirection)) continue; // Continue forwards to see how many nodes are shared with // the other area and adjacent. The first nodeIndexesAdjacent // will set otherDirection and later nodes have to keep // going in that direction. for (int j = 1; j < area->size(); ++j) { int jIndex = (i + j) % (area->size()-1); int otherIndex = nodeIndexInArea(otherArea, area->getNode(jIndex), cycleNodeIndex(otherArea, otherLast + otherDirection)); // is next node in same area? if (otherIndex == -1) break; // must be adjacent to last node (and in same direction) if (!nodeIndexesAdjacent(otherArea, otherLast, otherIndex, &otherDirection)) break; otherLast = otherIndex; ++count; } if (count < 2) continue; // If all of area's nodes are shared (area is enclosed // inside otherArea), then it is better to swap area and // otherArea so that area is the one that gets removed. if (count == area->size()) { qSwap(area, otherArea); qSwap(first, otherFirst); } // Remove nodes along the shared edge from area. No need to // remove from otherArea, it'll get removed anyway. for (int del = 0; del < count-2; ++del) { int delIndex = cycleNodeIndex(area, first+1); theList->add(new WayRemoveNodeCommand(area, delIndex, theDocument->getDirtyOrOriginLayer(area->layer()))); if (first > delIndex) --first; } // If otherArea is completely enclosed then the end nodes // of the shared edge are the same and are now adjacent, so // remove one of them. if (count == otherArea->size()) theList->add(new WayRemoveNodeCommand(area, first, theDocument->getDirtyOrOriginLayer(area->layer()))); // Seal the crack left over from an enclosed otherArea // until the nodes on either side of 'first' diverge. while (area->size() > 3 && area->getNode(cycleNodeIndex(area, first-1)) == area->getNode(cycleNodeIndex(area, first+1))) { theList->add(new WayRemoveNodeCommand(area, first, theDocument->getDirtyOrOriginLayer(area->layer()))); theList->add(new WayRemoveNodeCommand(area, first, theDocument->getDirtyOrOriginLayer(area->layer()))); first = cycleNodeIndex(area, first-1); } // Add the remaining nodes of otherArea that aren't shared // to area. for (int add = 1; add < otherArea->size()-count; ++add) { int index = cycleNodeIndex(otherArea, otherFirst - otherDirection*add); theList->add(new WayAddNodeCommand(area, otherArea->getNode(index), ++first, theDocument->getDirtyOrOriginLayer(area->layer()))); } // Merge tags and remove otherArea. Feature::mergeTags(theDocument, theList, area, otherArea); otherArea->deleteChildren(theDocument, theList); theList->add(new RemoveFeatureCommand(theDocument, otherArea)); areas.remove(otherArea); // Remove otherArea from selection. QList<Feature*> sel = theDock->selection(); sel.removeOne(otherArea); theDock->setSelection(sel); // Restart the process again. goto findNextJoin; } } } areas.remove(area); } } bool canSplitArea(PropertiesDock* theDock, Way** outTheArea, unsigned int outNodes[2]) { if (theDock->selectionSize() != 3) return false; // Get the selected way and nodes Way* theArea = NULL; Node* theNodes[2] = { NULL, NULL }; for (int i = 0; i < theDock->selectionSize(); ++i) { if ((theDock->selection(i)->getClass() == "Way") && !theArea) theArea = CAST_WAY(theDock->selection(i)); else if (theDock->selection(i)->getClass() == "Node") { if (!theNodes[0]) theNodes[0] = CAST_NODE(theDock->selection(i)); else if (!theNodes[1]) theNodes[1] = CAST_NODE(theDock->selection(i)); } } // A way and 2 nodes if (!theArea || !theNodes[0] || !theNodes[1]) return false; // Way must be closed if (!theArea->isClosed()) return false; // Nodes must belong to way unsigned int numNodes = theArea->size(); unsigned int nodeIndex[2]; for (int i = 0; i < 2; ++i) { nodeIndex[i] = theArea->find(theNodes[i]); if (nodeIndex[i] >= numNodes) return false; } // Make sure nodes are in order if (nodeIndex[0] > nodeIndex[1]) qSwap(nodeIndex[0], nodeIndex[1]); // And not next to one another if (nodeIndex[0] + 1 == nodeIndex[1] || (nodeIndex[0] == 0 && nodeIndex[1] == (unsigned int)theArea->size() - 2)) return false; if (outTheArea) *outTheArea = theArea; if (outNodes) { outNodes[0] = nodeIndex[0]; outNodes[1] = nodeIndex[1]; } return true; } void splitArea(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { Way* theArea; unsigned int nodes[2]; if (!canSplitArea(theDock, &theArea, nodes)) return; Way* newArea; if (!splitArea(theDocument, theList, theArea, nodes, &newArea)) return; theDock->setSelection(QList<Way*>() << theArea << newArea); } static void terraceArea(Document* theDocument, CommandList* theList, Way* theArea, unsigned int sides[2], unsigned int divisions, int startNode, QList<Feature*>* outAreas) { // We're adding nodes so ordering is important if (sides[0] > sides[1]) qSwap(sides[0], sides[1]); bool reverse = (startNode >= 0 && ((5 + startNode - sides[1]) & 2)); // Subdivide both sides subdivideRoad(theDocument, theList, theArea, sides[1], divisions); subdivideRoad(theDocument, theList, theArea, sides[0], divisions); // Split apart for (unsigned int i = sides[0] + divisions - 1; i > sides[0]; --i) { Way* newArea; unsigned int nodes[2] = { i, i + 3 }; splitArea(theDocument, theList, theArea, nodes, &newArea); if (newArea && outAreas) { if (reverse) outAreas->push_front(newArea); else outAreas->push_back(newArea); } } if (outAreas) { if (reverse) outAreas->push_front(theArea); else outAreas->push_back(theArea); } } bool canTerraceArea(PropertiesDock* theDock, Way** outTheArea, int* startNode) { // Get the selected area Way* theArea = NULL; Node* theNode = NULL; for (int i = 0; i < theDock->selectionSize(); ++i) if ((theDock->selection(i)->getClass() == "Way") && !theArea) { theArea = CAST_WAY(theDock->selection(i)); } else if (startNode && theDock->selection(i)->getClass() == "Node") { theNode = CAST_NODE(theDock->selection(i)); } if (!theArea || !theArea->isClosed()) return false; if (startNode) { if (theNode) *startNode = theArea->find(theNode); else *startNode = -1; } // Only work with 4 edges for now if (theArea->size() != 5) return false; if (outTheArea) *outTheArea = theArea; return true; } void terraceArea(Document* theDocument, CommandList* theList, PropertiesDock* theDock, unsigned int divisions) { Way* theArea; int startNode; if (!canTerraceArea(theDock, &theArea, &startNode)) return; qreal longestLen = 0.0f; unsigned int sides[2]; for (int i = 0; i < theArea->size()-1; ++i) { const Coord p1(theArea->getNode(i)->position()); const Coord p2(theArea->getNode(i+1)->position()); const qreal len = p1.distanceFrom(p2); if (len > longestLen) { longestLen = len; sides[0] = i; } } sides[1] = (sides[0] + 2) % (theArea->size() - 1); QList<Feature*> areas; terraceArea(theDocument, theList, theArea, sides, divisions, startNode, &areas); theDock->setSelection(areas); } // Remove repeated (adjacent) nodes in ways. static void removeRepeatsInRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock) { for (int i = 0; i < theDock->selectionSize(); ++i) { if (theDock->selection(i)->getClass() == "Way") { Way *way = CAST_WAY(theDock->selection(i)); Node *last = 0; for (int j = 0; j < way->size();) { Node *node = way->getNode(j); if (node == last) { theList->add(new WayRemoveNodeCommand(way, j, theDocument->getDirtyOrOriginLayer(way->layer()))); continue; } last = node; ++j; } } } } // Align a set of midpoints in a specific direction static void axisAlignAlignMidpoints(QVector<QPointF> &midpoints, const QVector<qreal> weights, const QPointF &dir, int begin, int end) { // get weighted average midpoint const int n = midpoints.size(); QPointF avg(0.0, 0.0); qreal total_weight = 0.0; for (int j = begin; j < end; ++j) { int i = j % n; avg += weights[i]*midpoints[i]; total_weight += weights[i]; } avg /= total_weight; // project midpoints onto dir line through avg for (int j = begin; j < end; ++j) { int i = j % n; QPointF rel_mid = midpoints[i] - avg; qreal dot = dir.x()*rel_mid.x() + dir.y()*rel_mid.y(); // assumes dir is normalised midpoints[i] = avg + dir*dot; } } // Axis align uses binary fixed point for angles static const int angle_shift = 20; // returns true on success static bool axisAlignGetWays(/* in */ PropertiesDock *theDock, /* out */ QList<Way *> &theWays) { QList<Feature *> selection = theDock->selection(); // we can't use foreach since we append to selection inside the loop for (; !selection.empty(); selection.pop_front()) { Feature *F = selection.first(); if (F->getClass() == "Way") theWays << CAST_WAY(F); else if (F->getClass() == "Relation") // expand relation members onto the end of the selection list for (int i = 0; i < F->size(); ++i) selection << F->get(i); } return !theWays.empty(); } // base the decision purely on what types of features are selected bool canAxisAlignRoads(PropertiesDock* theDock) { QList<Way *> theWays; return axisAlignGetWays(theDock, theWays); } // returns true on success static bool axisAlignPreprocess(/* in */ PropertiesDock *theDock, const Projection &proj, int axes, /* out */ QList<Way *> &theWays, QVector<int> &edge_angles, QVector<int> &edge_axis, QVector<qreal> &edge_weight, qreal &total_weight, QVector<QPointF> &midpoints) { if (!axisAlignGetWays(theDock, theWays)) return false; // manipulate angles as fixed point values with a unit of the angle between axes int nedges = 0; foreach (Way *theWay, theWays) nedges += theWay->size()-1; edge_angles.resize(nedges); edge_axis.resize(nedges); edge_weight.resize(nedges); midpoints.resize(nedges); total_weight = 0.0; // Look at nodes and find angles etc int i = 0; foreach (Way *theWay, theWays) { Node *n1; Node *n2 = theWay->getNode(0); QPointF p1; QPointF p2 = proj.project(n2); for (int j = 0; j < theWay->size()-1; ++j, ++i) { n1 = n2; n2 = theWay->getNode(j + 1); p1 = p2; p2 = proj.project(n2); if (n1 == n2 || p1 == p2) { qWarning() << "ERROR: duplicate nodes found during axis align in" << theWay->id().numId; return false; } midpoints[i] = (p1 + p2) * 0.5; // weight towards longer edges rather than lots of smaller edges edge_weight[i] = n1->position().distanceFrom(n2->position()); edge_weight[i] *= edge_weight[i]; total_weight += edge_weight[i]; // calculate angle of edge qreal ang = QLineF(p1, p2).angle(); edge_angles[i] = ang * ((axes << angle_shift) / 360.0); if (edge_angles[i] < 0) { edge_angles[i] += axes<<angle_shift; } edge_axis[i] = -1; } } return true; } // QVectors must be same size // return true on success static bool axisAlignCluster(/* in */ const QVector<int> &edge_angles, const QVector<qreal> &edge_weight, qreal total_weight, unsigned int axes, /* out */ int &theta, QVector<int> &edge_axis) { // Use a variant of K-Means Clustering with regular spaced clusters to find // the best angle for the first axis. const int nedges = edge_angles.size(); bool changed; theta = 0; // This should always terminate pretty quickly, but for robustness it's better to warn than hang. unsigned int safety = 100; while (--safety) { // reassign edges to axes, stopping when nothing changes changed = false; for (int i = 0; i < nedges; ++i) { int angle = edge_angles[i] - theta; int new_axis = ((angle >> (angle_shift - 1)) + 1) >> 1; if (new_axis >= (int)axes) new_axis -= axes; else if (new_axis < 0) new_axis += axes; if (new_axis != edge_axis[i]) { edge_axis[i] = new_axis; changed = true; } } if (!changed) break; // adjust angle of first axis by weighted mean of angles between edges and their assigned axes qreal dtheta = 0; for (int i = 0; i < nedges; ++i) { int diff = (edge_angles[i] - theta - (edge_axis[i] << angle_shift)) % (1 << angle_shift); if (diff > ((1<<angle_shift)>>1)) diff -= (1<<angle_shift); else if (diff < -((1<<angle_shift)>>1)) diff += (1<<angle_shift); dtheta += edge_weight[i]*diff; } dtheta /= total_weight; theta += dtheta; } if (!safety) qWarning() << "WARNING: align axes clustering loop exceeded safety limit"; return safety; } // QVectors must be same size static qreal axisAlignCalcVariance(const QVector<int> &edge_angles, const QVector<int> &edge_axis, int theta) { const int nedges = edge_angles.size(); qreal variance = 0.0; for (int i = 0; i < nedges; ++i) { int diff = (edge_angles[i] - theta - (edge_axis[i] << angle_shift)) % (1 << angle_shift); if (diff > ((1<<angle_shift)>>1)) diff -= (1<<angle_shift); else if (diff < -((1<<angle_shift)>>1)) diff += (1<<angle_shift); qreal diff_f = (double)diff / ((1<<angle_shift)>>1); variance += diff_f*diff_f; } variance /= nedges; return variance; } // Guesses the number of axes in a shape. // returns 0 on failure. unsigned int axisAlignGuessAxes(PropertiesDock* theDock, const Projection &proj, unsigned int max_axes) { QList<Way *> theWays; QVector<int> edge_angles; QVector<int> edge_axis; QVector<qreal> edge_weight; QVector<QPointF> midpoints; qreal total_weight; qreal min_var; int min_var_axes = 0; for (unsigned int axes = 3; axes <= max_axes; ++axes) { if (!axisAlignPreprocess(theDock, proj, axes, theWays, edge_angles, edge_axis, edge_weight, total_weight, midpoints)) return 0; int theta; axisAlignCluster(edge_angles, edge_weight, total_weight, axes, theta, edge_axis); qreal var = axisAlignCalcVariance(edge_angles, edge_axis, theta); // prefer a lower number of axes var *= sqrt((float)axes); // we want the number of axes with the lowest weighted variance if (!min_var_axes || var < min_var) { min_var = var; min_var_axes = axes; } } return min_var_axes; } // maximum number of iterations #define AXIS_ALIGN_MAX_ITS 10000 // threshold of (node movement/distance from midpoint)^2 #define AXIS_ALIGN_FAR_THRESHOLD (1e-6) // 1/1000th ^2 // don't add theList to history if result isn't success AxisAlignResult axisAlignRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock, const Projection &proj, unsigned int axes) { // Make sure nodes aren't pointlessly repeated or angles would be undefined removeRepeatsInRoads(theDocument, theList, theDock); // manipulate angles as fixed point values with a unit of the angle between axes QList<Way *> theWays; QVector<int> edge_angles; QVector<int> edge_axis; QVector<qreal> edge_weight; QVector<QPointF> midpoints; qreal total_weight; if (!axisAlignPreprocess(theDock, proj, axes, theWays, edge_angles, edge_axis, edge_weight, total_weight, midpoints)) { // should never happen, repeated nodes already removed Q_ASSERT(0); theList->undo(); return AxisAlignFail; } int theta; axisAlignCluster(edge_angles, edge_weight, total_weight, axes, theta, edge_axis); // Calculate axis direction vectors QVector<QPointF> axis_vectors(axes); for (unsigned int i = 0; i < axes; ++i) { int angle = theta + (i<<angle_shift); axis_vectors[i].setX(cos(M_PI*2/(axes<<angle_shift)*angle)); axis_vectors[i].setY(-sin(M_PI*2/(axes<<angle_shift)*angle)); } // If adjacent edges are in the same axis we can't intersect them to find // where the node should go. Align midpoints of adjacent edges on the same // axis so that we can just project the nodes onto the axis and make the // result axis aligned. Note that this does not handle adjacent edges which // have opposite axes and are therefore parallel (when axes is even). int i = 0; foreach (Way *theWay, theWays) { int start = i; int n = theWay->size()-1; int last_axis = -1; int first_in_seq = -1; int excess = 0; for (; i < start + n; ++i) { int axis = edge_axis[i]; if (axis != last_axis) { if (first_in_seq == -1) { // If edges sharing axis cross the join between ends, we'll // come back to it anyway. excess = i; if (i != 0 || !theWay->isClosed() || edge_axis[start+n-1] != axis) first_in_seq = i; } else { if (i - first_in_seq > 1) { axisAlignAlignMidpoints(midpoints, edge_weight, axis_vectors[last_axis], first_in_seq, i); } first_in_seq = i; } last_axis = axis; } } if (n + excess - first_in_seq > 1) axisAlignAlignMidpoints(midpoints, edge_weight, axis_vectors[last_axis], first_in_seq, n+excess); } // Get the positions of each unique node QHash<Node *, QPointF> node_pos; bool dups = false; foreach (Way *theWay, theWays) { for (int i = 0; i < theWay->size(); ++i) { Node *N = theWay->getNode(i); if (!dups && node_pos.contains(N) && !(theWay->isClosed() && i == theWay->size()-1)) dups = true; node_pos[N] = proj.project(N); } } // If nodes are repeated then they will be moved more than once, so we // iterate and allow the nodes to converge to a point. qreal last_movement = -1.0; qreal movement = 0.0; for (int it = 0; ; ++it) { i = 0; bool moved_far = false; // Move nodes (only in node_pos) onto the intersection of the neighbouring // edge's axes through their midpoints. Where neighbouring edges are on the // same axis (and so there is no intersection), project directly onto the // axis through the mean midpoint. foreach (Way *theWay, theWays) { int index0, index1, max; int start = i; int n = theWay->size()-1; if (theWay->isClosed()) { index1 = start+n-1; max = n; } else { index1 = -1; max = theWay->size(); } for (int j = 0; j < max; ++j) { index0 = index1; index1 = ((j < n) ? i++ : -1); Node *N = theWay->getNode(j); QPointF old_pos = node_pos[N]; QPointF new_pos; QPointF mid; if (index0 >= 0 && index1 >= 0 && edge_axis[index0] != edge_axis[index1]) { // axes different, so probably safe to intersect QLineF l0(midpoints[index0], midpoints[index0] + axis_vectors[edge_axis[index0]]); QLineF l1(midpoints[index1], midpoints[index1] + axis_vectors[edge_axis[index1]]); if (l0.intersect(l1, &new_pos) == QLineF::NoIntersection) { theList->undo(); return AxisAlignSharpAngles; } if (dups && !moved_far) mid = midpoints[index0]; } else { // Axes are the same so there's no intersection point. Just // project onto axis through average midpoint. int index = ((index0 >= 0) ? index0 : index1); QPointF midpoint = midpoints[index]; if (index != index1 && index1 >= 0) midpoint = (midpoint + midpoints[index1]) / 2; QPointF rel_pos = old_pos - midpoint; QPointF dir = axis_vectors[edge_axis[index]]; qreal dot = dir.x()*rel_pos.x() + dir.y()*rel_pos.y(); new_pos = midpoint + dir*dot; if (dups && !moved_far) mid = midpoints[index]; } if (dups) { // If we're iterating, only move the node half the distance // towards the new position, so that different edges can // compete with one another to move the node. new_pos = (new_pos + old_pos) / 2; // find how far the node has moved (squared to avoid a sqrt) QPointF delta = new_pos - old_pos; qreal moved_sq = delta.x()*delta.x() + delta.y()*delta.y(); movement += moved_sq; // has the node moved "far"? if (!moved_far) { delta = new_pos - mid; qreal size_sq = delta.x()*delta.x() + delta.y()*delta.y(); if (moved_sq > size_sq * AXIS_ALIGN_FAR_THRESHOLD) moved_far = true; } } node_pos[N] = new_pos; } } // We're done when no nodes have moved very far. if (!moved_far) dups = false; if (!dups || it >= AXIS_ALIGN_MAX_ITS) break; // Every so often check that the movement has decreased since last // time. If it hasn't then it's likely that the ways are impossible to // align. if ((it & 0xf) == 0xf) { if (last_movement >= 0.0 && movement >= last_movement) break; last_movement = movement; movement = 0.0; } // tweak midpoints i = 0; foreach (Way *theWay, theWays) { Node *n1; Node *n2 = theWay->getNode(0); QPointF p1; QPointF p2 = node_pos[n2]; for (int j = 0; j < theWay->size()-1; ++j, ++i) { n1 = n2; n2 = theWay->getNode(j + 1); p1 = p2; p2 = node_pos[n2]; midpoints[i] = (p1 + p2) * 0.5; } } } // dups is set to false when converged if (dups) { theList->undo(); return AxisAlignFail; } // Commit the changes foreach (Way *theWay, theWays) { for (int i = 0; i < theWay->size(); ++i) { Node *N = theWay->getNode(i); theList->add(new MoveNodeCommand(N, proj.inverse2Coord(node_pos[N]), theDocument->getDirtyOrOriginLayer(N->layer()))); } } return AxisAlignSuccess; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/FeatureManipulations.h�������������������������������������������������0000664�0000000�0000000�00000005655�11770671653�0022367�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_FEATUREMANIPULATIONS_H_ #define MERKAARTOR_FEATUREMANIPULATIONS_H_ class CommandList; class Document; class Layer; class PropertiesDock; class Way; class Projection; #include <QList> #include "Coord.h" void joinRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void splitRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void breakRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock); bool canCreateJunction(PropertiesDock* theDock); int createJunction(Document* theDocument, CommandList* theList, PropertiesDock* theDock, bool doIt=true); void addStreetNumbers(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void reversePoints(Document* theDocument, CommandList* theList, Way* R); void simplifyRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock, qreal threshold); void alignNodes(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void bingExtract(Document* theDocument, CommandList* theList, PropertiesDock* theDock, CoordBox vp); void spreadNodes(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void mergeNodes(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void detachNode(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void commitFeatures(Document* theDocument, CommandList* theList, PropertiesDock* theDock); bool canJoinRoads(PropertiesDock* theDock); bool canBreakRoads(PropertiesDock* theDock); bool canDetachNodes(PropertiesDock* theDock); void addRelationMember(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void removeRelationMember(Document* theDocument, CommandList* theList, PropertiesDock* theDock); void addToMultipolygon(Document* theDocument, CommandList* theList, PropertiesDock* theDock); bool canSubdivideRoad(PropertiesDock* theDock, Way** theRoad = 0, unsigned int* edge = 0); void subdivideRoad(Document* theDocument, CommandList* theList, PropertiesDock* theDock, unsigned int divisions); void joinAreas(Document* theDocument, CommandList* theList, PropertiesDock* theDock); bool canSplitArea(PropertiesDock* theDock, Way** outTheArea = 0, unsigned int outNodes[2] = 0); void splitArea(Document* theDocument, CommandList* theList, PropertiesDock* theDock); bool canTerraceArea(PropertiesDock* theDock, Way** outTheArea = 0, int* startNode = 0); void terraceArea(Document* theDocument, CommandList* theList, PropertiesDock* theDock, unsigned int divisions); enum AxisAlignResult { AxisAlignSuccess, // failures: AxisAlignSharpAngles, AxisAlignFail // no convergence }; bool canAxisAlignRoads(PropertiesDock* theDock); unsigned int axisAlignGuessAxes(PropertiesDock* theDock, const Projection &proj, unsigned int max_axes); AxisAlignResult axisAlignRoads(Document* theDocument, CommandList* theList, PropertiesDock* theDock, const Projection &proj, unsigned int axes); #endif �����������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Global.cpp�������������������������������������������������������������0000664�0000000�0000000�00000005527�11770671653�0017761�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: Global // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #include "Global.h" #include "MainWindow.h" #include "SlippyMapWidget.h" #ifdef PORTABLE_BUILD bool g_Merk_Portable = true; #else bool g_Merk_Portable = false; #endif bool g_Merk_Frisius = true; bool g_Merk_NoGuardedTagsImport = false; bool g_Merk_Segment_Mode = false; bool g_Merk_Ignore_Preferences = false; bool g_Merk_Reset_Preferences = false; bool g_Merk_IgnoreStartupTemplate = false; #if QT_VERSION < 0x040700 || defined(FORCE_46) bool g_Merk_SelfClip = true; #else bool g_Merk_SelfClip = false; #endif MainWindow* g_Merk_MainWindow = NULL; MemoryBackend g_backend; SlippyMapCache* SlippyMapWidget::theSlippyCache = 0; QStringList tagKeys; QHash<QString, quint32> tagKeysHash; QStringList tagValues; QHash<QString, quint32> tagValuesHash; QHash< quint32, QList<quint32> > tagList; QStringList userList; QString noUser; QPair<quint32, quint32> g_addToTagList(QString k, QString v) { qint32 ik, iv; if (!tagKeysHash.contains(k)) { tagKeys.append(k); ik = tagKeys.size()-1; tagKeysHash[k] = ik; } else ik = tagKeysHash.value(k); if (!tagValuesHash.contains(v)) { tagValues.append(v); iv = tagValues.size()-1; tagValuesHash[v] = iv; } else iv = tagValuesHash.value(v); if (!k.isEmpty() && !v.isEmpty()) tagList[ik].append(iv); return qMakePair((quint32)ik, (quint32)iv); } void g_removeFromTagList(quint32 k, quint32 v) { tagList[k].removeOne(v); if (tagList[k].isEmpty()) tagList.remove(k); } QList<QString> g_getTagKeys() { return tagKeys; } QList<QString> g_getTagValues() { return tagValues; } QStringList g_getTagValueList(QString k) { QSet<quint32> retList; if (k == "*") { foreach (QList<quint32> list, tagList) retList.unite(list.toSet()); } else retList = tagList[tagKeys.indexOf(k)].toSet(); QStringList res; foreach (quint32 i, retList) res << g_getTagValue(i); return res; } const QString& g_getTagKey(int idx) { return tagKeys.at(idx); } quint32 g_getTagKeyIndex(const QString& s) { return tagKeys.indexOf(s); } QStringList g_getTagKeyList() { return tagKeys.toSet().toList(); } QString g_getTagValue(int idx) { return tagValues.at(idx); } quint32 g_getTagValueIndex(const QString& s) { return tagValues.indexOf(s); } quint32 g_setUser(const QString& u) { if (u.isEmpty()) return 0xffffffff; qint32 ret = userList.indexOf(u); if (ret == -1) { userList.append(u); return userList.size()-1; } return ret; } const QString& g_getUser(quint32 idx) { if (idx != 0xffffffff) return userList[idx]; else return noUser; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Global.h���������������������������������������������������������������0000664�0000000�0000000�00000002351�11770671653�0017416�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: Global // // Description: // // // Author: cbro <cbro@semperpax.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef MERKAARTOR_GLOBAL_H #define MERKAARTOR_GLOBAL_H #include <QList> #include <QPair> #include "MemoryBackend.h" class MainWindow; class IBackend; extern bool g_Merk_Portable; extern bool g_Merk_Frisius; extern bool g_Merk_NoGuardedTagsImport; extern bool g_Merk_Segment_Mode; extern bool g_Merk_Ignore_Preferences; extern bool g_Merk_Reset_Preferences; extern bool g_Merk_IgnoreStartupTemplate; extern bool g_Merk_SelfClip; extern MainWindow* g_Merk_MainWindow; extern QPair<quint32, quint32> g_addToTagList(QString k, QString v); extern void g_removeFromTagList(quint32 k, quint32 v); extern QList<QString> g_getTagKeys(); extern QList<QString> g_getTagValues(); extern const QString& g_getTagKey(int idx); extern quint32 g_getTagKeyIndex(const QString& s); extern QStringList g_getTagKeyList(); extern QString g_getTagValue(int idx); extern quint32 g_getTagValueIndex(const QString& s); extern QStringList g_getTagValueList(QString k) ; extern quint32 g_setUser(const QString& u); extern const QString& g_getUser(quint32 idx); extern MemoryBackend g_backend; #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/GotoDialog.cpp���������������������������������������������������������0000664�0000000�0000000�00000017257�11770671653�0020614�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: GotoDialog // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "GotoDialog.h" #include <QMessageBox> #include "MerkaartorPreferences.h" #include "namefinderwidget.h" #include "OsmLink.h" GotoDialog::GotoDialog(MapView* aView, QWidget *parent) :QDialog(parent) { setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); theViewport = aView->viewport(); theProjection = &aView->projection(); theRect = aView->rect(); theCenter = theViewport.center(); int OsmZoom = int((log((360.0 / theViewport.latDiff())) / log(2.0)) + 1); OsmZoom = qMin(OsmZoom, 18); OsmZoom = qMax(OsmZoom, 1); int idx = 0; int selIdx = -1; qreal dist = 6372.795; qreal d; BookmarkList* Bookmarks = M_PREFS->getBookmarks(); BookmarkListIterator i(*Bookmarks); while (i.hasNext()) { i.next(); if (i.value().deleted == false) { coordBookmark->addItem(i.key()); CoordBox C = i.value().Coordinates; if ((d = C.center().distanceFrom(theViewport.center())) < dist) { dist = d; selIdx = idx; } } ++idx; } coordBookmark->setCurrentIndex(selIdx); connect(cbCoordShowProjected, SIGNAL(toggled(bool)), SLOT(fillCoordinates())); searchWidget = new NameFinder::NameFinderWidget(this); connect(searchWidget, SIGNAL(selectionChanged()), this, SLOT(searchWidget_selectionChanged())); connect(searchWidget, SIGNAL(doubleClicked()), this, SLOT(searchWidget_doubleClicked())); connect(searchWidget, SIGNAL(done()), this, SLOT(searchWidget_done())); verticalLayout_4->addWidget(searchWidget); coordLink->setText( QString("http://www.openstreetmap.org/?lat=%1&lon=%2&zoom=%3") .arg(COORD2STRING(theViewport.center().y())) .arg(COORD2STRING(theViewport.center().x())) .arg(QString::number(OsmZoom)) ); coordOsmApi->setText( QString("%1/map?bbox=%2,%3,%4,%5") .arg(M_PREFS->getOsmApiUrl()) .arg(COORD2STRING(theViewport.bottomLeft().x())) .arg(COORD2STRING(theViewport.bottomLeft().y())) .arg(COORD2STRING(theViewport.topRight().x())) .arg(COORD2STRING(theViewport.topRight().y())) ); coordOsmXApi->setText( QString("%1*[bbox=%2,%3,%4,%5]") .arg(M_PREFS->getXapiUrl().endsWith("/") ? M_PREFS->getXapiUrl() : M_PREFS->getXapiUrl() + "/") .arg(COORD2STRING(theViewport.bottomLeft().x())) .arg(COORD2STRING(theViewport.bottomLeft().y())) .arg(COORD2STRING(theViewport.topRight().x())) .arg(COORD2STRING(theViewport.topRight().y())) ); fillCoordinates(); } void GotoDialog::on_buttonBox_clicked(QAbstractButton * button) { if (buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) { if (rbBookmark->isChecked()) { theNewViewport = M_PREFS->getBookmarks()->value(coordBookmark->currentText()).Coordinates; } else if (rbLink->isChecked()) { OsmLink ol(coordLink->text()); if (!ol.isValid()) { QMessageBox::warning(this, QApplication::translate("GotoDialog", "Invalid OSM url"), QApplication::translate("GotoDialog", "The specified url is invalid!")); return; } theNewViewport = ol.getCoordBox(); } else if (rbCoord->isChecked()) { QStringList tokens = coordCoord->text().split(","); if (tokens.size() < 4) { QMessageBox::warning(this, QApplication::translate("GotoDialog", "Invalid Coordinates format"), QApplication::translate("GotoDialog", "Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'")); return; } theNewViewport = CoordBox(Coord(tokens[0].toDouble(), tokens[1].toDouble()), Coord(tokens[2].toDouble(), tokens[3].toDouble())); if (cbCoordShowProjected->isChecked()) theNewViewport = theProjection->fromProjectedRectF(theNewViewport); } else if (rbSpan->isChecked()) { QStringList tokens = coordSpan->text().split(","); if (tokens.size() < 4) { QMessageBox::warning(this, QApplication::translate("GotoDialog", "Invalid Coordinates format"), QApplication::translate("GotoDialog", "Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'")); return; } theNewViewport = CoordBox( Coord( tokens[1].toDouble() - tokens[3].toDouble() / 2, tokens[0].toDouble() - tokens[2].toDouble() / 2), Coord( tokens[1].toDouble() + tokens[3].toDouble() / 2, tokens[0].toDouble() + tokens[2].toDouble() / 2) ); if (cbCoordShowProjected->isChecked()) theNewViewport = theProjection->fromProjectedRectF(theNewViewport); } accept(); } } void GotoDialog::searchWidget_selectionChanged() { // QPointF centerPoint = searchWidget->selectedCoords(); // int zoom = searchWidget->selectedZoom(); // // The API doesn't like request for too large bounding boxes so reset to a default // if (zoom < 15) // zoom = 15; // coordLink->setText( QString("http://www.openstreetmap.org/?lat=%1&lon=%2&zoom=%3") // .arg(QString::number(centerPoint.x(), 'f', 4)) // .arg(QString::number(centerPoint.y(), 'f', 4)) // .arg(QString::number(zoom)) // ); // rbLink->setChecked(true); rbCoord->setChecked(true); coordCoord->setText(QString("%1, %2, %3, %4") .arg(searchWidget->selectedBbox().left()) .arg(searchWidget->selectedBbox().top()) .arg(searchWidget->selectedBbox().right()) .arg(searchWidget->selectedBbox().bottom()) ); } void GotoDialog::on_NameFinderEdit_textChanged(const QString & text) { if (!text.isEmpty()) { searchButton->setDefault(true); } else { searchButton->setDefault(false); buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); } } void GotoDialog::on_searchButton_clicked() { QString searchString = NameFinderEdit->text(); QPointF C = theCenter; searchWidget->search(searchString, C); searchButton->setEnabled(false); } void GotoDialog::searchWidget_doubleClicked() { buttonBox->button(QDialogButtonBox::Ok)->click(); } void GotoDialog::searchWidget_done() { searchButton->setEnabled(true); } void GotoDialog::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(this); } void GotoDialog::fillCoordinates() { CoordBox bbox = theViewport; if (cbCoordShowProjected->isChecked()) bbox = theProjection->toProjectedRectF(theViewport, theRect); coordCoord->setText( QString("%1, %2, %3, %4") .arg(COORD2STRING(bbox.bottomLeft().x())) .arg(COORD2STRING(bbox.bottomLeft().y())) .arg(COORD2STRING(bbox.topRight().x())) .arg(COORD2STRING(bbox.topRight().y())) ); coordSpan->setText( QString("%1, %2, %3, %4") .arg(COORD2STRING(bbox.center().y())) .arg(COORD2STRING(bbox.center().x())) .arg(COORD2STRING(bbox.latDiff())) .arg(COORD2STRING(bbox.lonDiff())) ); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/GotoDialog.h�����������������������������������������������������������0000664�0000000�0000000�00000002253�11770671653�0020247�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: GotoDialog // // Description: // // // Author: Chris Browet <cbro@semperpax.com>, (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef GOTODIALOG_H #define GOTODIALOG_H #include <QWidget> #include "MapView.h" #include "Coord.h" #include "Projection.h" #include <ui_GotoDialog.h> class CoordBox; class QItemSelection; namespace NameFinder { class NameFinderWidget; } class GotoDialog: public QDialog , public Ui::GotoDialog { Q_OBJECT public: GotoDialog(MapView* aView, QWidget *parent = 0); const CoordBox& newViewport() const { return theNewViewport; }; NameFinder::NameFinderWidget *searchWidget; public slots: void on_buttonBox_clicked(QAbstractButton * button); void on_searchButton_clicked(); void searchWidget_selectionChanged(); void on_NameFinderEdit_textChanged(const QString & text); void searchWidget_doubleClicked (); void searchWidget_done (); protected slots: void fillCoordinates(); private: Coord theCenter; CoordBox theViewport; Projection* theProjection; QRect theRect; CoordBox theNewViewport; void changeEvent(QEvent*); }; #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/GotoDialog.ui����������������������������������������������������������0000664�0000000�0000000�00000023056�11770671653�0020441�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>GotoDialog</class> <widget class="QDialog" name="GotoDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>600</width> <height>328</height> </rect> </property> <property name="windowTitle"> <string>Go To</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QRadioButton" name="rbBookmark"> <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> <property name="text"> <string>Bookmark</string> </property> </widget> </item> <item> <widget class="QComboBox" name="coordBookmark"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QRadioButton" name="rbLink"> <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> <property name="text"> <string>WWW link (OSM/Google maps)</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="coordLink"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> <item> <widget class="QGroupBox" name="groupBox_2"> <property name="title"> <string>Coordinates</string> </property> <layout class="QVBoxLayout" name="verticalLayout_5"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <widget class="QCheckBox" name="cbCoordShowProjected"> <property name="text"> <string>Show projected</string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QRadioButton" name="rbCoord"> <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> <property name="text"> <string>lonMin, latMin, lonMax, latMax</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="coordCoord"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QRadioButton" name="rbSpan"> <property name="minimumSize"> <size> <width>200</width> <height>0</height> </size> </property> <property name="text"> <string>latCent, lonCent, latSpan, lonSpan</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="coordSpan"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>Info</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> <widget class="QLabel" name="label"> <property name="minimumSize"> <size> <width>75</width> <height>0</height> </size> </property> <property name="text"> <string>OSM API Url</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="coordOsmApi"> <property name="enabled"> <bool>true</bool> </property> <property name="readOnly"> <bool>true</bool> </property> </widget> </item> </layout> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_6"> <item> <widget class="QLabel" name="label_2"> <property name="minimumSize"> <size> <width>75</width> <height>0</height> </size> </property> <property name="text"> <string>OSM XAPI url</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="coordOsmXApi"> <property name="enabled"> <bool>true</bool> </property> <property name="readOnly"> <bool>true</bool> </property> </widget> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="searchBox"> <property name="title"> <string>Search</string> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <property name="spacing"> <number>4</number> </property> <property name="margin"> <number>4</number> </property> <item> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> <widget class="QLineEdit" name="NameFinderEdit"/> </item> <item> <widget class="QPushButton" name="searchButton"> <property name="text"> <string>Search</string> </property> </widget> </item> </layout> </item> </layout> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <tabstops> <tabstop>coordBookmark</tabstop> <tabstop>coordLink</tabstop> <tabstop>coordCoord</tabstop> <tabstop>coordSpan</tabstop> <tabstop>coordOsmApi</tabstop> <tabstop>coordOsmXApi</tabstop> <tabstop>NameFinderEdit</tabstop> <tabstop>searchButton</tabstop> <tabstop>buttonBox</tabstop> <tabstop>rbBookmark</tabstop> <tabstop>rbLink</tabstop> <tabstop>rbCoord</tabstop> <tabstop>rbSpan</tabstop> </tabstops> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>GotoDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>223</x> <y>151</y> </hint> <hint type="destinationlabel"> <x>266</x> <y>108</y> </hint> </hints> </connection> <connection> <sender>coordSpan</sender> <signal>textEdited(QString)</signal> <receiver>rbSpan</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>240</x> <y>98</y> </hint> <hint type="destinationlabel"> <x>101</x> <y>106</y> </hint> </hints> </connection> <connection> <sender>coordCoord</sender> <signal>textEdited(QString)</signal> <receiver>rbCoord</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>259</x> <y>72</y> </hint> <hint type="destinationlabel"> <x>117</x> <y>79</y> </hint> </hints> </connection> <connection> <sender>coordLink</sender> <signal>textEdited(QString)</signal> <receiver>rbLink</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>238</x> <y>44</y> </hint> <hint type="destinationlabel"> <x>111</x> <y>48</y> </hint> </hints> </connection> <connection> <sender>coordBookmark</sender> <signal>activated(int)</signal> <receiver>rbBookmark</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>263</x> <y>21</y> </hint> <hint type="destinationlabel"> <x>89</x> <y>23</y> </hint> </hints> </connection> <connection> <sender>coordBookmark</sender> <signal>highlighted(int)</signal> <receiver>rbBookmark</receiver> <slot>toggle()</slot> <hints> <hint type="sourcelabel"> <x>290</x> <y>14</y> </hint> <hint type="destinationlabel"> <x>137</x> <y>19</y> </hint> </hints> </connection> </connections> </ui> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/MapTypedef.h�����������������������������������������������������������0000664�0000000�0000000�00000001066�11770671653�0020256�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_MAPTYPEDEF_H #define MERKAARTOR_MAPTYPEDEF_H //#include <QPointer> class Feature; //typedef QPointer<MapFeature> MapFeaturePtr; typedef Feature* MapFeaturePtr; class Node; //typedef QPointer<TrackPoint> TrackPointPtr; typedef Node* NodePtr; class Way; //typedef QPointer<Road> RoadPtr; typedef Way* WayPtr; class Relation; //typedef QPointer<Relation> RelationPtr; typedef Relation* RelationPtr; class TrackSegment; //typedef QPointer<TrackSegment> TrackSegmentPtr; typedef TrackSegment* TrackSegmentPtr; #endif // MERKAARTOR_MAPTYPEDEF_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/MapView.cpp������������������������������������������������������������0000664�0000000�0000000�00000106451�11770671653�0020127�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Global.h" #include <errno.h> #include "MapView.h" #include "MainWindow.h" #include "PropertiesDock.h" #include "IDocument.h" #include "ILayer.h" #include "LayerIterator.h" #include "ImageMapLayer.h" #include "IMapAdapter.h" #include "IMapWatermark.h" #include "Feature.h" #include "Interaction.h" #include "IPaintStyle.h" #include "Projection.h" #include "qgps.h" #include "qgpsdevice.h" #include "OsmRenderLayer.h" #ifdef USE_WEBKIT #include "browserimagemanager.h" #endif #include "MerkaartorPreferences.h" #include "SvgCache.h" #include <QTime> #include <QMainWindow> #include <QMouseEvent> #include <QPainter> #include <QStatusBar> #include <QToolTip> #include <QMap> #include <QSet> #include <QtConcurrentMap> // from wikipedia #define EQUATORIALRADIUS 6378137.0 #define LAT_ANG_PER_M 1.0 / EQUATORIALRADIUS #define TEST_RFLAGS(x) p->ROptions.options.testFlag(x) class MapViewPrivate { public: QTransform theTransform; QTransform theInvertedTransform; qreal PixelPerM; qreal NodeWidth; int ZoomLevel; CoordBox Viewport; QList<CoordBox> invalidRects; QPoint theVectorPanDelta; qreal theVectorRotation; QList<Node*> theVirtualNodes; RendererOptions ROptions; Projection theProjection; IDocument* theDocument; Interaction* theInteraction; bool BackgroundOnlyPanZoom; QTransform BackgroundOnlyVpTransform; QLabel *TL, *TR, *BL, *BR; OsmRenderLayer* osmLayer; MapViewPrivate() : PixelPerM(0.0), Viewport(WORLD_COORDBOX), theVectorRotation(0.0) , BackgroundOnlyPanZoom(false) , theDocument(0) , theInteraction(0) {} }; /*********************/ MapView::MapView(QWidget* parent) : QWidget(parent), Main(dynamic_cast<MainWindow*>(parent)), StaticBackground(0) , StaticWireframe(0), StaticTouchup(0) , SelectionLocked(false),lockIcon(0) , p(new MapViewPrivate) { installEventFilter(Main); setMouseTracking(true); setAttribute(Qt::WA_NoSystemBackground); setContextMenuPolicy(Qt::CustomContextMenu); setFocusPolicy(Qt::ClickFocus); setAcceptDrops(true); MoveRightShortcut = new QShortcut(QKeySequence(Qt::Key_Right), this); connect(MoveRightShortcut, SIGNAL(activated()), this, SLOT(on_MoveRight_activated())); MoveLeftShortcut = new QShortcut(QKeySequence(Qt::Key_Left), this); connect(MoveLeftShortcut, SIGNAL(activated()), this, SLOT(on_MoveLeft_activated())); MoveUpShortcut = new QShortcut(QKeySequence(Qt::Key_Up), this); connect(MoveUpShortcut, SIGNAL(activated()), this, SLOT(on_MoveUp_activated())); MoveDownShortcut = new QShortcut(QKeySequence(Qt::Key_Down), this); connect(MoveDownShortcut, SIGNAL(activated()), this, SLOT(on_MoveDown_activated())); ZoomInShortcut = new QShortcut(QKeySequence(Qt::Key_PageUp), this); ZoomInShortcut->setContext(Qt::WidgetShortcut); connect(ZoomInShortcut, SIGNAL(activated()), this, SLOT(zoomIn())); ZoomOutShortcut = new QShortcut(QKeySequence(Qt::Key_PageDown), this); ZoomOutShortcut->setContext(Qt::WidgetShortcut); connect(ZoomOutShortcut, SIGNAL(activated()), this, SLOT(zoomOut())); QVBoxLayout* vlay = new QVBoxLayout(this); QHBoxLayout* hlay1 = new QHBoxLayout(); p->TL = new QLabel(this); hlay1->addWidget(p->TL); QSpacerItem* horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); hlay1->addItem(horizontalSpacer); p->TR = new QLabel(this); hlay1->addWidget(p->TR); vlay->addLayout(hlay1); QSpacerItem* verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); vlay->addItem(verticalSpacer); QHBoxLayout* hlay2 = new QHBoxLayout(); p->BL = new QLabel(this); hlay2->addWidget(p->BL); QSpacerItem* horizontalSpacer2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); hlay2->addItem(horizontalSpacer2); p->BR = new QLabel(this); hlay2->addWidget(p->BR); vlay->addLayout(hlay2); p->TL->setVisible(false); p->TR->setVisible(false); p->BL->setVisible(false); p->BR->setVisible(false); p->osmLayer = new OsmRenderLayer(this); connect(p->osmLayer, SIGNAL(renderingDone()), SLOT(update())); } MapView::~MapView() { delete StaticBackground; delete StaticWireframe; delete StaticTouchup; delete p; } MainWindow *MapView::main() { return Main; } void MapView::setDocument(IDocument* aDoc) { p->theDocument = aDoc; p->osmLayer->setDocument(aDoc); setViewport(viewport(), rect()); } IDocument *MapView::document() { return p->theDocument; } void MapView::invalidate(bool updateWireframe, bool updateOsmMap, bool updateBgMap) { if (updateOsmMap) { if (!M_PREFS->getWireframeView()) { if (!TEST_RFLAGS(RendererOptions::Interacting)) p->osmLayer->forceRedraw(p->theProjection, p->theTransform, rect(), p->PixelPerM, p->ROptions); else if (M_PREFS->getEditRendering() == 2) p->osmLayer->forceRedraw(p->theProjection, p->theTransform, rect(), p->PixelPerM, p->ROptions); } } if (updateWireframe) { p->invalidRects.clear(); p->invalidRects.push_back(p->Viewport); p->theVectorPanDelta = QPoint(0, 0); SAFE_DELETE(StaticBackground) } if (p->theDocument && updateBgMap) { IMapWatermark* WatermarkAdapter = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) { if (ImgIt.get()->isVisible()) { ImgIt.get()->forceRedraw(*this, p->BackgroundOnlyVpTransform, rect()); WatermarkAdapter = qobject_cast<IMapWatermark*>(ImgIt.get()->getMapAdapter()); } } p->BackgroundOnlyVpTransform = QTransform(); if (WatermarkAdapter) { p->TL->setAttribute(Qt::WA_NoMousePropagation); p->TL->setOpenExternalLinks(true); p->TL->setText(WatermarkAdapter->getLogoHtml()); // p->lblLogo->move(10, 10); p->TL->show(); p->BR->setAttribute(Qt::WA_NoMousePropagation); p->BR->setOpenExternalLinks(true); p->BR->setWordWrap(true); p->BR->setText(WatermarkAdapter->getAttributionsHtml(p->Viewport, rect())); p->BR->setMinimumWidth(150); p->BR->setMaximumWidth(200); p->BR->setMaximumHeight(50); p->BR->show(); } else { p->TL->setVisible(false); p->BR->setVisible(false); } } update(); } void MapView::panScreen(QPoint delta) { Coord cDelta = fromView(delta) - fromView(QPoint(0, 0)); if (p->BackgroundOnlyPanZoom) { p->BackgroundOnlyVpTransform.translate(-cDelta.x(), -cDelta.y()); } else { p->theVectorPanDelta += delta; CoordBox r1, r2; if (delta.x()) { if (delta.x() < 0) r1 = CoordBox(p->Viewport.bottomRight(), Coord(p->Viewport.topRight().x() - cDelta.x(), p->Viewport.topRight().y())); // OK else r1 = CoordBox(Coord(p->Viewport.bottomLeft().x() - cDelta.x(), p->Viewport.bottomLeft().y()), p->Viewport.topLeft()); // OK p->invalidRects.push_back(r1); } if (delta.y()) { if (delta.y() < 0) r2 = CoordBox(Coord(p->Viewport.bottomLeft().x(), p->Viewport.bottomLeft().y() - cDelta.y()), p->Viewport.bottomRight()); // OK else r2 = CoordBox(p->Viewport.topLeft(), Coord( p->Viewport.bottomRight().x(), p->Viewport.topRight().y() - cDelta.y())); //NOK p->invalidRects.push_back(r2); } p->theTransform.translate((qreal)(delta.x())/p->theTransform.m11(), (qreal)(delta.y())/p->theTransform.m22()); p->theInvertedTransform = p->theTransform.inverted(); viewportRecalc(rect()); if (!M_PREFS->getWireframeView() && p->theDocument) { p->osmLayer->pan(delta); } } for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) ImgIt.get()->pan(delta); update(); } void MapView::rotateScreen(QPoint /* center */, qreal angle) { p->theVectorRotation += angle; transformCalc(p->theTransform, p->theProjection, p->theVectorRotation, p->Viewport, rect()); p->theInvertedTransform = p->theTransform.inverted(); viewportRecalc(rect()); // p->invalidRects.clear(); // p->invalidRects.push_back(p->Viewport); // for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) // ImgIt.get()->pan(delta); update(); } void MapView::paintEvent(QPaintEvent * anEvent) { if (!p->theDocument) return; #ifndef NDEBUG QTime Start(QTime::currentTime()); #endif QPainter P; P.begin(this); updateStaticBackground(); P.drawPixmap(p->theVectorPanDelta, *StaticBackground); P.save(); QTransform AlignTransform; for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) { if (ImgIt.get()->isVisible()) { ImgIt.get()->drawImage(&P); AlignTransform = ImgIt.get()->getCurrentAlignmentTransform(); } } P.restore(); if (!p->invalidRects.isEmpty()) { updateWireframe(); } if (M_PREFS->getWireframeView() || !p->osmLayer->isRenderingDone() || M_PREFS->getEditRendering() == 1) P.drawPixmap(p->theVectorPanDelta, *StaticWireframe); if (!M_PREFS->getWireframeView()) if (!(TEST_RFLAGS(RendererOptions::Interacting) && M_PREFS->getEditRendering() == 1)) drawFeatures(P); P.drawPixmap(p->theVectorPanDelta, *StaticTouchup); drawLatLonGrid(P); drawDownloadAreas(P); drawScale(P); if (p->theInteraction) { P.setRenderHint(QPainter::Antialiasing); p->theInteraction->paintEvent(anEvent, P); } if (Main) drawGPS(P); P.end(); #ifndef _MOBILE if (Main) { QString vpLabel = QString("%1,%2,%3,%4") .arg(viewport().bottomLeft().x(),0,'f',4) .arg(viewport().bottomLeft().y(),0, 'f',4) .arg(viewport().topRight().x(),0, 'f',4) .arg(viewport().topRight().y(),0,'f',4) ; if (!p->theProjection.projIsLatLong()) { QRectF pVp = p->theProjection.toProjectedRectF(viewport(), rect()); vpLabel += " / " + QString("%1,%2,%3,%4") .arg(pVp.bottomLeft().x(),0,'f',4) .arg(pVp.bottomLeft().y(),0, 'f',4) .arg(pVp.topRight().x(),0, 'f',4) .arg(pVp.topRight().y(),0,'f',4) ; } Main->ViewportStatusLabel->setText(vpLabel); Main->MeterPerPixelLabel->setText(tr("%1 m/pixel").arg(1/p->PixelPerM, 0, 'f', 2)); if (!AlignTransform.isIdentity()) { QLineF l(0, 0, AlignTransform.dx(), AlignTransform.dy()); l.translate(viewport().center()); Main->AdjusmentMeterLabel->setVisible(true); qreal distance = Coord(l.p2()).distanceFrom(Coord(l.p1()))*1000; Main->AdjusmentMeterLabel->setText(tr("Align: %1m @ %2").arg(distance, 0, 'f', 2).arg(l.angle(), 0, 'f', 2) + QString::fromUtf8("°")); } else { Main->AdjusmentMeterLabel->setVisible(false); } #ifndef NDEBUG QTime Stop(QTime::currentTime()); Main->PaintTimeLabel->setText(tr("%1ms").arg(Start.msecsTo(Stop))); #endif } #endif } void MapView::drawScale(QPainter & P) { if (!TEST_RFLAGS(RendererOptions::ScaleVisible)) return; errno = 0; qreal Log = log10(200./p->PixelPerM); if (errno != 0) return; qreal RestLog = Log-floor(Log); if (RestLog < log10(2.)) Log = floor(Log); else if (RestLog < log10(5.)) Log = floor(Log)+log10(2.); else Log = floor(Log)+log10(5.); qreal Length = pow(10.,Log); QPointF P1(20,height()-20); QPointF P2(20+Length*p->PixelPerM,height()-20); P.fillRect(P1.x()-4, P1.y()-20-4, P2.x() - P1.x() + 4, 33, QColor(255, 255, 255, 128)); P.setPen(QPen(QColor(0,0,0),2)); P.drawLine(P1-QPointF(0,5),P1+QPointF(0,5)); P.drawLine(P1,P2); if (Length < 1000) P.drawText(QRectF(P2-QPoint(200,40),QSize(200,30)),Qt::AlignRight | Qt::AlignBottom, QString(tr("%1 m")).arg(Length, 0, 'f', 0)); else P.drawText(QRectF(P2-QPoint(200,40),QSize(200,30)),Qt::AlignRight | Qt::AlignBottom, QString(tr("%1 km")).arg(Length/1000, 0, 'f', 0)); P.drawLine(P2-QPointF(0,5),P2+QPointF(0,5)); } void MapView::drawGPS(QPainter & P) { if (Main->gps() && Main->gps()->getGpsDevice()) { if (Main->gps()->getGpsDevice()->fixStatus() == QGPSDevice::StatusActive) { Coord vp(Main->gps()->getGpsDevice()->longitude(), Main->gps()->getGpsDevice()->latitude()); QPoint g = toView(vp); QImage* pm = getSVGImageFromFile(":/Gps/Gps_Marker.svg", 32); P.drawImage(g - QPoint(16, 16), *pm); } } } bool testColor(const QImage& theImage, const QPoint& P, const QRgb& targetColor) { if (!theImage.rect().contains(P)) return false; return (theImage.pixel(P) == targetColor); } void floodFill(QImage& theImage, const QPoint& P, const QRgb& targetColor, const QRgb& replaceColor) { if (!testColor(theImage, P, targetColor)) return; QStack<QPoint> theStack; QPoint aP; QPainter theP(&theImage); theP.setPen(QPen(QColor::fromRgb(replaceColor), 1)); theP.setBrush(Qt::NoBrush); theStack.push(P); while (!theStack.isEmpty()) { aP = theStack.pop(); QPoint W = aP; QPoint E = aP; if (testColor(theImage, aP + QPoint(0, 1), targetColor)) theStack.push(aP + QPoint(0, 1)); if (testColor(theImage, aP + QPoint(0, -1), targetColor)) theStack.push(aP + QPoint(0, -1)); while (testColor(theImage, W + QPoint(-1, 0),targetColor) && W.x() > 0) { W += QPoint(-1, 0); if (testColor(theImage, W + QPoint(0, 1), targetColor)) theStack.push(W + QPoint(0, 1)); if (testColor(theImage, W + QPoint(0, -1), targetColor)) theStack.push(W + QPoint(0, -1)); } while (testColor(theImage, E + QPoint(1, 0), targetColor) && E.x() < theImage.width()-1) { E += QPoint(1, 0); if (testColor(theImage, E + QPoint(0, 1), targetColor)) theStack.push(E + QPoint(0, 1)); if (testColor(theImage, E + QPoint(0, -1), targetColor)) theStack.push(E + QPoint(0, -1)); } theP.drawLine(W, E); } } #define PARALLEL_LINES_NUM 5 #define MEDIAN_LINES_NUM 5 void MapView::drawLatLonGrid(QPainter & P) { if (!TEST_RFLAGS(RendererOptions::LatLonGridVisible)) return; QPointF origin(0., 0.); QPoint p1 = toView(origin); QPointF p2 = fromView(QPoint(p1.x()+width(), p1.y()-height())); CoordBox adjViewport(origin, p2); qreal lonInterval = adjViewport.lonDiff() / 4; qreal latInterval = adjViewport.latDiff() / 4; int prec = log10(lonInterval); if (!lonInterval || !latInterval) return; // avoid divide-by-zero qreal lonStart = qMax(int((p->Viewport.bottomLeft().x() - origin.x()) / lonInterval) * lonInterval, -COORD_MAX); if (lonStart != -COORD_MAX) { lonStart -= origin.x(); if (lonStart<1) lonStart -= lonInterval; } qreal latStart = qMax(int(p->Viewport.bottomLeft().y() / latInterval) * latInterval, -COORD_MAX/2); if (latStart != -COORD_MAX/2) { latStart -= origin.y(); if (latStart<1) latStart -= lonInterval; } QList<QPolygonF> medianLines; QList<QPolygonF> parallelLines; for (qreal y=latStart; y<=p->Viewport.topLeft().y()+latInterval; y+=latInterval) { QPolygonF l; for (qreal x=lonStart; x<=p->Viewport.bottomRight().x()+lonInterval; x+=lonInterval) { QPointF pt = p->theProjection.project(Coord(qMin(x, COORD_MAX), qMin(y, COORD_MAX/2))); l << pt; } parallelLines << l; } for (qreal x=lonStart; x<=p->Viewport.bottomRight().x()+lonInterval; x+=lonInterval) { QPolygonF l; for (qreal y=latStart; y<=p->Viewport.topLeft().y()+latInterval; y+=latInterval) { QPointF pt = p->theProjection.project(Coord(qMin(x, COORD_MAX), qMin(y, COORD_MAX/2))); l << pt; } medianLines << l; } P.save(); P.setRenderHint(QPainter::Antialiasing); P.setPen(QColor(180, 217, 255)); QLineF lb = QLineF(rect().topLeft(), rect().bottomLeft()); QLineF lt = QLineF(rect().topLeft(), rect().topRight()); QLineF l; for (int i=0; i<parallelLines.size(); ++i) { if (parallelLines[i].size() == 0) continue; P.drawPolyline(p->theTransform.map(parallelLines[i])); int k=0; QPointF pt; while (k < parallelLines.at(i).size()-2) { l = QLineF(p->theTransform.map(parallelLines.at(i).at(k)), p->theTransform.map(parallelLines.at(i).at(k+1))); if (l.intersect(lb, &pt) == QLineF::BoundedIntersection) break; ++k; } if (pt.isNull()) continue; // QPoint pt = QPoint(0, p->theTransform.map(parallelLines.at(i).at(0)).y()); QPoint ptt = pt.toPoint() + QPoint(5, -5); P.drawText(ptt, QString("%1").arg(p->theProjection.inverse2Coord(parallelLines.at(i).at(0)).y(), 0, 'f', 2-prec)); } for (int i=0; i<medianLines.size(); ++i) { if (medianLines[i].size() == 0) continue; P.drawPolyline(p->theTransform.map(medianLines[i])); int k=0; QPointF pt; while (k < medianLines.at(i).size()-2) { l = QLineF(p->theTransform.map(medianLines.at(i).at(k)), p->theTransform.map(medianLines.at(i).at(k+1))); if (l.intersect(lt, &pt) == QLineF::BoundedIntersection) break; ++k; } if (pt.isNull()) continue; // QPoint pt = QPoint(p->theTransform.map(medianLines.at(i).at(0)).x(), 0); QPoint ptt = pt.toPoint() + QPoint(5, 10); P.drawText(ptt, QString("%1").arg(p->theProjection.inverse2Coord(medianLines.at(i).at(0)).x(), 0, 'f', 2-prec)); } P.restore(); } void MapView::drawFeatures(QPainter & P) { p->osmLayer->drawImage(&P); } void MapView::drawDownloadAreas(QPainter & P) { if (!TEST_RFLAGS(RendererOptions::DownloadedVisible)) return; P.save(); QRegion r(0, 0, width(), height()); //QBrush b(Qt::red, Qt::DiagCrossPattern); QBrush b(Qt::red, Qt::Dense7Pattern); QList<CoordBox> db = p->theDocument->getDownloadBoxes(); QList<CoordBox>::const_iterator bb; for (bb = db.constBegin(); bb != db.constEnd(); ++bb) { if (viewport().disjunctFrom(*bb)) continue; QPolygonF poly; poly << projection().project((*bb).topLeft()); poly << projection().project((*bb).bottomLeft()); poly << projection().project((*bb).bottomRight()); poly << projection().project((*bb).topRight()); poly << projection().project((*bb).topLeft()); r -= QRegion(p->theTransform.map(poly.toPolygon())); } P.setClipRegion(r); P.setClipping(true); P.fillRect(rect(), b); P.restore(); } void MapView::updateStaticBackground() { if (!StaticBackground || (StaticBackground->size() != size())) { delete StaticBackground; StaticBackground = new QPixmap(size()); if (M_PREFS->getUseShapefileForBackground()) StaticBackground->fill(M_PREFS->getWaterColor()); else if (M_PREFS->getBackgroundOverwriteStyle()) StaticBackground->fill(M_PREFS->getBgColor()); else if (M_STYLE->getGlobalPainter().getDrawBackground()) StaticBackground->fill(M_STYLE->getGlobalPainter().getBackgroundColor()); else StaticBackground->fill(M_PREFS->getBgColor()); } } void MapView::updateWireframe() { QMap<RenderPriority, QSet <Feature*> > theFeatures; QMap<RenderPriority, QSet<Feature*> >::const_iterator itm; QSet<Feature*>::const_iterator it; QPainter P; for (int i=0; i<p->theDocument->layerSize(); ++i) g_backend.getFeatureSet(p->theDocument->getLayer(i), theFeatures, p->invalidRects, p->theProjection); if (!p->theVectorPanDelta.isNull()) { QRegion exposed; StaticWireframe->scroll(p->theVectorPanDelta.x(), p->theVectorPanDelta.y(), StaticWireframe->rect(), &exposed); P.begin(StaticWireframe); P.setClipping(true); P.setClipRegion(exposed); P.setCompositionMode(QPainter::CompositionMode_Source); P.fillRect(StaticWireframe->rect(), Qt::transparent); } else { StaticWireframe->fill(Qt::transparent); P.begin(StaticWireframe); P.setClipping(true); P.setClipRegion(rect()); } if (M_PREFS->getWireframeView() || !p->osmLayer->isRenderingDone() || M_PREFS->getEditRendering() == 1) { if (M_PREFS->getWireframeView() && M_PREFS->getUseAntiAlias()) P.setRenderHint(QPainter::Antialiasing); else if (M_PREFS->getEditRendering() == 1) P.setRenderHint(QPainter::Antialiasing); for (itm = theFeatures.constBegin() ;itm != theFeatures.constEnd(); ++itm) { for (it = itm.value().constBegin() ;it != itm.value().constEnd(); ++it) { qreal alpha = (*it)->getAlpha(); P.setOpacity(alpha); (*it)->drawSimple(P, this); } } } P.end(); if (!p->theVectorPanDelta.isNull()) { QRegion exposed; StaticTouchup->scroll(p->theVectorPanDelta.x(), p->theVectorPanDelta.y(), StaticTouchup->rect(), &exposed); P.begin(StaticTouchup); P.setClipping(true); P.setClipRegion(exposed); P.setCompositionMode(QPainter::CompositionMode_Source); P.fillRect(StaticTouchup->rect(), Qt::transparent); } else { StaticTouchup->fill(Qt::transparent); P.begin(StaticTouchup); P.setClipping(true); P.setClipRegion(rect()); } P.setRenderHint(QPainter::Antialiasing); for (itm = theFeatures.constBegin() ;itm != theFeatures.constEnd(); ++itm) { for (it = itm.value().constBegin() ;it != itm.value().constEnd(); ++it) { qreal alpha = (*it)->getAlpha(); P.setOpacity(alpha); (*it)->drawTouchup(P, this); } } P.end(); p->invalidRects.clear(); p->theVectorPanDelta = QPoint(0, 0); // QPainter P; // StaticBuffer->fill(Qt::transparent); // P.begin(StaticBuffer); // P.setCompositionMode(QPainter::CompositionMode_Source); // P.setClipping(true); // P.setClipRegion(rect()); //// if (M_PREFS->getUseAntiAlias()) //// P.setRenderHint(QPainter::Antialiasing); // drawFeatures(P); // P.end(); } void MapView::mousePressEvent(QMouseEvent* anEvent) { if (p->theInteraction) if (anEvent->button()) p->theInteraction->mousePressEvent(anEvent); } void MapView::mouseReleaseEvent(QMouseEvent* anEvent) { if (p->theInteraction) p->theInteraction->mouseReleaseEvent(anEvent); } void MapView::mouseMoveEvent(QMouseEvent* anEvent) { if (p->theInteraction) p->theInteraction->mouseMoveEvent(anEvent); } void MapView::mouseDoubleClickEvent(QMouseEvent* anEvent) { if (p->theInteraction) p->theInteraction->mouseDoubleClickEvent(anEvent); } void MapView::wheelEvent(QWheelEvent* anEvent) { if (p->theInteraction) p->theInteraction->wheelEvent(anEvent); } Interaction *MapView::interaction() { return p->theInteraction; } void MapView::setInteraction(Interaction *anInteraction) { p->theInteraction = anInteraction; } Projection& MapView::projection() { return p->theProjection; } QTransform& MapView::transform() { return p->theTransform; } QTransform& MapView::invertedTransform() { return p->theInvertedTransform; } QPoint MapView::toView(const Coord& aCoord) const { return p->theTransform.map(p->theProjection.project(aCoord)).toPoint(); } QPoint MapView::toView(Node* aPt) const { return p->theTransform.map(aPt->projected()).toPoint(); } Coord MapView::fromView(const QPoint& aPt) const { return p->theProjection.inverse2Coord(p->theInvertedTransform.map(QPointF(aPt))); } void MapView::on_imageReceived(ImageMapLayer* aLayer) { aLayer->forceRedraw(*this, p->BackgroundOnlyVpTransform, rect()); p->BackgroundOnlyVpTransform = QTransform(); update(); } void MapView::resizeEvent(QResizeEvent * ev) { viewportRecalc(QRect(QPoint(0,0), ev->size())); QWidget::resizeEvent(ev); if (!StaticWireframe || (StaticWireframe->size() != size())) { delete StaticWireframe; StaticWireframe = new QPixmap(size()); StaticWireframe->fill(Qt::transparent); } if (!StaticTouchup || (StaticTouchup->size() != size())) { delete StaticTouchup; StaticTouchup = new QPixmap(size()); StaticTouchup = new QPixmap(size()); } invalidate(true, true, true); } void MapView::dragEnterEvent(QDragEnterEvent *event) { if (!Main) { event->ignore(); return; } } void MapView::dragMoveEvent(QDragMoveEvent *event) { if (!Main) { event->ignore(); return; } } void MapView::dropEvent(QDropEvent *event) { if (!Main) { event->ignore(); return; } } bool MapView::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("MapView"); viewport().toXML("Viewport", stream); p->theProjection.toXML(stream); stream.writeEndElement(); return OK; } void MapView::fromXML(QXmlStreamReader& stream) { CoordBox cb; stream.readNext(); while(!stream.atEnd() && !stream.isEndElement()) { if (stream.name() == "Viewport") { cb = CoordBox::fromXML(stream); } else if (stream.name() == "Projection") { p->theProjection.fromXML(stream); } stream.readNext(); } if (!cb.isNull()) setViewport(cb, rect()); } void MapView::on_MoveLeft_activated() { QPoint p(rect().width()/4,0); panScreen(p); // invalidate(true, true, true); } void MapView::on_MoveRight_activated() { QPoint p(-rect().width()/4,0); panScreen(p); // invalidate(true, true, true); } void MapView::on_MoveUp_activated() { QPoint p(0,rect().height()/4); panScreen(p); // invalidate(true, true, true); } void MapView::on_MoveDown_activated() { QPoint p(0,-rect().height()/4); panScreen(p); // invalidate(true, true, true); } void MapView::zoomIn() { zoom(M_PREFS->getZoomIn()/100., rect().center()); } void MapView::zoomOut() { zoom(M_PREFS->getZoomOut()/100., rect().center()); } bool MapView::isSelectionLocked() { return SelectionLocked; } void MapView::lockSelection() { if (!Main) return; if (!SelectionLocked && Main->properties()->selection().size()) { #ifndef _MOBILE lockIcon = new QLabel(this); lockIcon->setPixmap(QPixmap(":/Icons/emblem-readonly.png")); Main->statusBar()->clearMessage(); Main->statusBar()->addWidget(lockIcon); #endif SelectionLocked = true; } } void MapView::unlockSelection() { if (!Main) return; if (SelectionLocked) { #ifndef _MOBILE Main->statusBar()->removeWidget(lockIcon); SAFE_DELETE(lockIcon) #endif SelectionLocked = false; } } const CoordBox& MapView::viewport() const { return p->Viewport; } void MapView::viewportRecalc(const QRect & Screen) { Coord br = fromView(Screen.bottomRight()); Coord tl = fromView(Screen.topLeft()); p->Viewport = CoordBox(tl, br); // measure geographical distance between mid left and mid right of the screen int mid = (Screen.topLeft().y() + Screen.bottomLeft().y()) / 2; Coord left = fromView(QPoint(Screen.left(), mid)); Coord right = fromView(QPoint(Screen.right(), mid)); p->PixelPerM = Screen.width() / (left.distanceFrom(right)*1000); p->NodeWidth = p->PixelPerM * M_PREFS->getNodeSize(); if (p->NodeWidth > M_PREFS->getNodeSize()) p->NodeWidth = M_PREFS->getNodeSize(); emit viewportChanged(); } void MapView::transformCalc(QTransform& theTransform, const Projection& theProjection, const qreal& /* theRotation */, const CoordBox& TargetMap, const QRect& screen) { QRectF pViewport = theProjection.toProjectedRectF(TargetMap, screen); // QPointF pCenter(pViewport.center()); qreal Aspect = (double)screen.width() / screen.height(); qreal pAspect = fabs(pViewport.width() / pViewport.height()); qreal wv, hv; if (pAspect > Aspect) { wv = fabs(pViewport.width()); hv = fabs(pViewport.height() * pAspect / Aspect); } else { wv = fabs(pViewport.width() * Aspect / pAspect); hv = fabs(pViewport.height()); } qreal ScaleLon = screen.width() / wv; qreal ScaleLat = screen.height() / hv; // qreal PLon = pCenter.x() /* * ScaleLon*/; // qreal PLat = pCenter.y() /* * ScaleLat*/; // qreal DeltaLon = Screen.width() / 2 - PLon; // qreal DeltaLat = Screen.height() - (Screen.height() / 2 - PLat); // theTransform.setMatrix(ScaleLon, 0, 0, 0, -ScaleLat, 0, DeltaLon, DeltaLat, 1); theTransform.reset(); theTransform.scale(ScaleLon, -ScaleLat); // theTransform.rotate(theRotation, Qt::ZAxis); theTransform.translate(-pViewport.topLeft().x(), -pViewport.topLeft().y()); // theTransform.translate(-pCenter.x(), -pCenter.y()); // QLineF l(QPointF(0, 0), pCenter); // l.setAngle(l.angle()+theRotation); // qDebug() << "p2:" << l.p2(); // theTransform.translate(l.p2().x(), l.p2().y()); // theTransform.translate(Screen.width()/2, -Screen.height()/2); // theTransform.rotateRadians(theRotation); } void MapView::setViewport(const CoordBox & TargetMap, const QRect & Screen) { CoordBox targetVp; if (TargetMap.latDiff() == 0 || TargetMap.lonDiff() == 0) targetVp = CoordBox (TargetMap.center()-COORD_ENLARGE*10, TargetMap.center()+COORD_ENLARGE*10); else targetVp = TargetMap; transformCalc(p->theTransform, p->theProjection, p->theVectorRotation, targetVp, Screen); p->theInvertedTransform = p->theTransform.inverted(); viewportRecalc(Screen); p->ZoomLevel = p->theTransform.m11(); if (TEST_RFLAGS(RendererOptions::LockZoom) && p->theDocument) { ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) { l->setCurrentZoom(*this, p->Viewport, rect()); qreal pixpercoord = width() / p->Viewport.lonDiff(); qreal z = l->pixelPerCoord() / pixpercoord; zoom(z, Screen.center(), Screen); } } invalidate(true, true, true); } void MapView::zoom(qreal d, const QPoint & Around) { // Sensible limits on zoom range (circular scroll on touchpads can scroll // very fast). if (p->PixelPerM * d > 100 && d > 1.0) return; if (p->PixelPerM * d < 1e-5 && d < 1.0) return; qreal z = d; if (TEST_RFLAGS(RendererOptions::LockZoom)) { ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) { if (d > 1.0) { l->zoom_in(); } else { l->zoom_out(); } qreal pixpercoord = width() / p->Viewport.lonDiff(); z = l->pixelPerCoord() / pixpercoord; } } zoom(z, Around, rect()); if (!M_PREFS->getWireframeView()) p->osmLayer->forceRedraw(p->theProjection, p->theTransform, rect(), p->PixelPerM, p->ROptions); invalidate(true, false, true); } void MapView::zoom(qreal d, const QPoint & Around, const QRect & Screen) { QPointF pBefore = p->theInvertedTransform.map(QPointF(Around)); qreal ScaleLon = p->theTransform.m11() * d; qreal ScaleLat = p->theTransform.m22() * d; qreal DeltaLat = (Around.y() - pBefore.y() * ScaleLat); qreal DeltaLon = (Around.x() - pBefore.x() * ScaleLon); // p->theTransform.setMatrix(ScaleLon*cos(p->theVectorRotation), 0, 0, 0, ScaleLat*cos(p->theVectorRotation), 0, DeltaLon, DeltaLat, 1); p->theTransform.reset(); p->theTransform.scale(ScaleLon, ScaleLat); // p->theTransform.rotate(p->theVectorRotation, Qt::ZAxis); p->theTransform.translate(DeltaLon/ScaleLon, DeltaLat/ScaleLat); p->theInvertedTransform = p->theTransform.inverted(); viewportRecalc(Screen); for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) ImgIt.get()->zoom(d, Around, Screen); p->ZoomLevel = ScaleLon; // QPointF pt = p->theProjection.project(Coord(0, angToInt(180))); // qreal earthWidth = pt.x() * 2; // qreal zoomPixPerMat0 = 512. / earthWidth; // qreal z = 0; // p->AbstractZoomLevel = 0; // for (;z<p->theTransform.m11(); ++p->AbstractZoomLevel) { // qreal zoomPixPerMatCur = zoomPixPerMat0 * pow(2., p->AbstractZoomLevel); // z = zoomPixPerMatCur / p->PixelPerM; // } } void MapView::adjustZoomToBoris() { if (TEST_RFLAGS(RendererOptions::LockZoom)) { ImageMapLayer* l = NULL; for (LayerIterator<ImageMapLayer*> ImgIt(p->theDocument); !ImgIt.isEnd(); ++ImgIt) { l = ImgIt.get(); break; } if (l && l->isTiled()) { qreal pixpercoord = width() / p->Viewport.lonDiff(); qreal z = l->pixelPerCoord() / pixpercoord; zoom(z, rect().center(), rect()); } } } void MapView::setCenter(Coord & Center, const QRect & /*Screen*/) { Coord curCenter(p->Viewport.center()); QPoint curCenterScreen = toView(curCenter); QPoint newCenterScreen = toView(Center); QPoint panDelta = (curCenterScreen - newCenterScreen); panScreen(panDelta); } void MapView::setInteracting(bool val) { if (val) p->ROptions.options |= RendererOptions::Interacting; else p->ROptions.options &= ~RendererOptions::Interacting; // invalidate(true, true, false); } qreal MapView::pixelPerM() const { return p->PixelPerM; } void MapView::setBackgroundOnlyPanZoom(bool val) { p->BackgroundOnlyPanZoom = val; } RendererOptions MapView::renderOptions() { return p->ROptions; } void MapView::setRenderOptions(const RendererOptions &opt) { p->ROptions = opt; } qreal MapView::nodeWidth() { return p->NodeWidth; } QString MapView::toPropertiesHtml() { QString h; h += "<big><strong>" + tr("View") + "</strong></big><hr/>"; h += "<u>" + tr("Bounding Box") + "</u><br/>"; h += QString("%1, %2, %3, %4 (%5, %6, %7, %8)") .arg(QString::number(viewport().bottomLeft().x(),'f',4)) .arg(QString::number(viewport().bottomLeft().y(),'f',4)) .arg(QString::number(viewport().topRight().x(),'f',4)) .arg(QString::number(viewport().topRight().y(),'f',4)) .arg(Coord2Sexa(viewport().bottomLeft().x())) .arg(Coord2Sexa(viewport().bottomLeft().y())) .arg(Coord2Sexa(viewport().topRight().x())) .arg(Coord2Sexa(viewport().topRight().y())) ; h += "<br/>"; h += "<u>" + tr("Projection") + "</u><br/>"; h += p->theProjection.getProjectionType(); h += ""; return h; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/MapView.h��������������������������������������������������������������0000664�0000000�0000000�00000007006�11770671653�0017570�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_MAPVIEW_H_ #define MERKATOR_MAPVIEW_H_ #include "Projection.h" #include "IRenderer.h" #include <QPixmap> #include <QWidget> #include <QShortcut> #include <QLabel> #define TILE_TYPE QPoint class MainWindow; class Feature; class Way; class IDocument; class MapAdapter; class Interaction; class ImageMapLayer; class MapViewPrivate; class MapView : public QWidget { Q_OBJECT friend class RenderTile; public: MapView(QWidget* parent); public: ~MapView(); MainWindow* main(); virtual void setDocument(IDocument* aDoc); IDocument* document(); Interaction* interaction(); void setInteraction(Interaction* anInteraction); void drawFeatures(QPainter & painter); void drawLatLonGrid(QPainter & painter); void drawDownloadAreas(QPainter & painter); void drawScale(QPainter & painter); void panScreen(QPoint delta) ; void rotateScreen(QPoint center, qreal angle); void invalidate(bool updateWireframe, bool updateOsmMap, bool updateBgMap); virtual void paintEvent(QPaintEvent* anEvent); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseReleaseEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseDoubleClickEvent(QMouseEvent* event); virtual void wheelEvent(QWheelEvent* ev); virtual void resizeEvent(QResizeEvent *event); virtual void dragEnterEvent(QDragEnterEvent *event); virtual void dragMoveEvent(QDragMoveEvent *event); virtual void dropEvent(QDropEvent *event); Projection& projection(); QTransform& transform(); QTransform& invertedTransform(); QPoint toView(const Coord& aCoord) const; QPoint toView(Node* aPt) const; Coord fromView(const QPoint& aPt) const; bool isSelectionLocked(); void lockSelection(); void unlockSelection(); void setViewport(const CoordBox& Map, const QRect& Screen); const CoordBox& viewport() const; static void transformCalc(QTransform& theTransform, const Projection& theProjection, const qreal& theRotation, const CoordBox& TargetMap, const QRect& Screen); qreal pixelPerM() const; void setBackgroundOnlyPanZoom(bool val); void zoom(qreal d, const QPoint& Around); void zoom(qreal d, const QPoint& Around, const QRect& Screen); void adjustZoomToBoris(); void setCenter(Coord& Center, const QRect& Screen); void setInteracting(bool val); bool toXML(QXmlStreamWriter& stream); void fromXML(QXmlStreamReader& stream); RendererOptions renderOptions(); void setRenderOptions(const RendererOptions& opt); qreal nodeWidth(); QString toPropertiesHtml(); void on_imageReceived(ImageMapLayer *aLayer); private: void drawGPS(QPainter & painter); void updateStaticBackground(); void updateWireframe(); MainWindow* Main; QPixmap* StaticBackground; QPixmap* StaticWireframe; QPixmap* StaticTouchup; bool StaticMapUpToDate; bool SelectionLocked; QLabel* lockIcon; void viewportRecalc(const QRect& Screen); QShortcut* MoveLeftShortcut; QShortcut* MoveRightShortcut; QShortcut* MoveUpShortcut; QShortcut* MoveDownShortcut; QShortcut* ZoomInShortcut; QShortcut* ZoomOutShortcut; public slots: virtual void on_MoveLeft_activated(); virtual void on_MoveRight_activated(); virtual void on_MoveUp_activated(); virtual void on_MoveDown_activated(); virtual void zoomIn(); virtual void zoomOut(); signals: void viewportChanged(); protected: MapViewPrivate* p; }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/MultiProperties.ui�����������������������������������������������������0000664�0000000�0000000�00000004204�11770671653�0021552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>MultiProperties</class> <widget class="QWidget" name="MultiProperties" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>207</width> <height>349</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> <layout class="QVBoxLayout" > <property name="spacing" > <number>3</number> </property> <property name="margin" > <number>4</number> </property> <item> <layout class="QHBoxLayout" > <property name="spacing" > <number>6</number> </property> <property name="margin" > <number>0</number> </property> <item> <widget class="QLabel" name="label_4" > <property name="text" > <string>Tags</string> </property> </widget> </item> <item> <spacer> <property name="orientation" > <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0" > <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="RemoveTagButton" > <property name="text" > <string>...</string> </property> <property name="icon" > <iconset resource="Icons/AllIcons.qrc" > <normaloff>:/Icons/small-remove.xpm</normaloff>:/Icons/small-remove.xpm</iconset> </property> </widget> </item> </layout> </item> <item> <widget class="QTableView" name="TagView" > <property name="tabKeyNavigation" > <bool>false</bool> </property> </widget> </item> <item> <widget class="QLabel" name="lbStatus" > <property name="text" > <string>Selected items</string> </property> </widget> </item> <item> <widget class="QListWidget" name="SelectionList" > <property name="selectionMode" > <enum>QAbstractItemView::ExtendedSelection</enum> </property> </widget> </item> </layout> </widget> <resources> <include location="Icons/AllIcons.qrc" /> </resources> <connections/> </ui> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Painting.cpp�����������������������������������������������������������0000664�0000000�0000000�00000014574�11770671653�0020334�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Painting.h" #include "Projection.h" #include "Features.h" #include "LineF.h" #include <QtGui/QPainter> #include <QtGui/QPainterPath> #include <QLineF> #include <utility> #if 0 static void buildCubicPath(QPainterPath& Path, const QPointF& P1, const QPointF& P2, const QPointF& P3, const QPointF& P4) { LineF L(P1,P4); qreal D2 = L.distance(P2); qreal D3 = L.distance(P3); if ( (D2 < 0.5) && (D3<0.5) ) Path.lineTo(P4); else { QPointF H = (P2+P3)/(qreal)2.0; QPointF L2 = (P1+P2)/(qreal)2.0; QPointF R3 = (P3+P4)/(qreal)2.0; QPointF L3 = (L2+H)/(qreal)2.0; QPointF R2 = (H+R3)/(qreal)2.0; QPointF L4 = (L3+R2)/(qreal)2.0; buildCubicPath(Path,P1,L2,L3,L4); buildCubicPath(Path,L4,R2,R3,P4); } } #endif //bool QRectInterstects(const QRect& r, const QLine& l, QPoint& a, QPoint& b) //{ // QLineF lF = QLineF(l); // QPointF pF; // bool hasP1 = false; // bool hasP2 = false; // // if (QLineF(r.topLeft(), r.bottomLeft()).intersect(lF, &pF) == QLineF::BoundedIntersection) { // a = pF.toPoint(); // hasP1 = true; // } // if (QLineF(r.bottomLeft(), r.bottomRight()).intersect(lF, &pF) == QLineF::BoundedIntersection) { // if (hasP1) { // b = pF.toPoint(); // hasP2 = true; // } else { // a = pF.toPoint(); // hasP1 = true; // } // } // if (QLineF(r.bottomRight(), r.topRight()).intersect(lF, &pF) == QLineF::BoundedIntersection) { // if (hasP1) { // b = pF.toPoint(); // hasP2 = true; // } else { // a = pF.toPoint(); // hasP1 = true; // } // } // if (QLineF(r.topRight(), r.topLeft()).intersect(lF, &pF) == QLineF::BoundedIntersection) { // if (hasP1) { // b = pF.toPoint(); // hasP2 = true; // } else { // a = pF.toPoint(); // hasP1 = true; // } // } // // if (hasP1 && hasP2) { // if (QLineF(a,b).angleTo(lF) > 15.0) { // QPoint t = b; // b = a; // a = t; // } // } // if (hasP1) // return true; // else // return false; //} // //void buildPathFromRoad(Road *R, Projection const &theProjection, QPainterPath &Path, const QRect& clipRect) //{ // int first=0, last=R->size(); // //if (!theProjection.viewport().contains(R->boundingBox())) { // // for (int i=0; i<R->size(); ++i) { // // if (theProjection.viewport().contains(R->get(i)->boundingBox())) { // // if (!first) // // first=i; // // last=i; // // } // // } // // if (first) first--; // // last=qMin(last+2, R->size()); // //} // // bool lastPointVisible = true; // QPoint lastPoint = theProjection.project(R->get(first)->position()); // QPoint p = lastPoint; // // if (!clipRect.contains(p)) { // p.setX(qMax(clipRect.left(), p.x())); // p.setX(qMin(clipRect.right(), p.x())); // p.setY(qMax(clipRect.top(), p.y())); // p.setY(qMin(clipRect.bottom(), p.y())); // lastPointVisible = false; // } // Path.moveTo(p); // if (R->smoothed().size()) // { // for (int i=3; i<R->smoothed().size(); i+=3) // Path.cubicTo( // theProjection.project(R->smoothed()[i-2]), // theProjection.project(R->smoothed()[i-1]), // theProjection.project(R->smoothed()[i])); // } // else // for (int j=first+1; j<last; ++j) { // p = theProjection.project(R->get(j)->position()); // if (!clipRect.contains(p)) { // if (!lastPointVisible) { // QPoint a, b; // if (QRectInterstects(clipRect, QLine(lastPoint, p), a, b)) { // Path.lineTo(a); // lastPoint = p; // p = b; // } else { // lastPoint = p; // p.setX(qMax(clipRect.left(), p.x())); // p.setX(qMin(clipRect.right(), p.x())); // p.setY(qMax(clipRect.top(), p.y())); // p.setY(qMin(clipRect.bottom(), p.y())); // } // } else { // QPoint a, b; // QRectInterstects(clipRect, QLine(lastPoint, p), a, b); // lastPoint = p; // p = a; // } // lastPointVisible = false; // } else { // if (!lastPointVisible) { // QPoint a, b; // QRectInterstects(clipRect, QLine(lastPoint, p), a, b); // Path.lineTo(a); // } // lastPoint = p; // lastPointVisible = true; // } // Path.lineTo(p); // } //} // void buildPolygonFromRoad(Way *R, Projection const &theProjection, QPolygonF &Polygon) { for (int i=0; i<R->size(); ++i) if (R->getNode(i)->isVisible() && !R->getNode(i)->isVirtual()) Polygon.append(theProjection.project(R->getNode(i))); } /// draws way with oneway markers void draw(QPainter& thePainter, QPen& thePen, Feature::TrafficDirectionType TT, const QPointF& FromF, const QPointF& ToF, qreal theWidth, const Projection&) { QPainterPath Path; Path.moveTo(FromF); Path.lineTo(ToF); qreal DistFromCenter = theWidth*2; if (distance(FromF,ToF) > qMax((qreal)40.0,DistFromCenter*2+4)) { QPointF H(FromF+ToF); H *= 0.5; qreal A = angle(FromF-ToF); QPointF T(DistFromCenter*cos(A),DistFromCenter*sin(A)); QPointF V1(theWidth*cos(A+M_PI/6),theWidth*sin(A+M_PI/6)); QPointF V2(theWidth*cos(A-M_PI/6),theWidth*sin(A-M_PI/6)); // MapFeature::TrafficDirectionType TT = W->trafficDirection(); if ( (TT == Feature::OtherWay) || (TT == Feature::BothWays) ) { thePainter.setPen(QPen(QColor(0,0,255), 2)); thePainter.drawLine(H+T,H+T-V1); thePainter.drawLine(H+T,H+T-V2); } if ( (TT == Feature::OneWay) || (TT == Feature::BothWays) ) { thePainter.setPen(QPen(QColor(0,0,255), 2)); thePainter.drawLine(H-T,H-T+V1); thePainter.drawLine(H-T,H-T+V2); } else { if ( M_PREFS->getDirectionalArrowsVisible() == RendererOptions::ArrowsAlways ) { thePainter.setPen(QPen(QColor(255,0,0), 2)); thePainter.drawLine(H-T,H-T+V1); thePainter.drawLine(H-T,H-T+V2); } } } thePainter.strokePath(Path,thePen); } void draw(QPainter& thePainter, QPen& thePen, Feature::TrafficDirectionType TT, const Coord& From, const Coord& To, qreal theWidth, const Projection& theProjection) { QPointF FromF(theProjection.project(From)); QPointF ToF(theProjection.project(To)); draw(thePainter,thePen,TT,FromF,ToF,theWidth,theProjection); } /* void draw(QPainter& thePainter, QPen& thePen, Way* W, const Projection& theProjection) { QPainterPath Path; QPointF FromF(theProjection.project(W->from())); QPointF ToF(theProjection.project(W->to())); Path.moveTo(FromF); Path.lineTo(ToF); thePainter.strokePath(Path,thePen); } */ ������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Painting.h�������������������������������������������������������������0000664�0000000�0000000�00000002051�11770671653�0017764�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_PAINTING_H_ #define MERKAARTOR_PAINTING_H_ #include "Feature.h" class Coord; class Projection; class Way; class Way; class QPainter; class QPainterPath; class QPolygonF; class QPen; //void buildPathFromRoad(Road *R, Projection const &theProjection, QPainterPath &Path, const QRect& clipRect); void buildPolygonFromRoad(Way *R, Projection const &theProjection, QPolygonF &Polygon); /// draws way with oneway markers void draw(QPainter& thePainter, QPen& thePen, Feature::TrafficDirectionType Dir, const QPointF& FromF, const QPointF& ToF, qreal theWidth, const Projection& theProjection); void draw(QPainter& thePainter, QPen& thePen, Feature::TrafficDirectionType Dir, const Coord& From, const Coord& To, qreal theWidth, const Projection& theProjection); /// draws way with oneway markers void draw(QPainter& thePainter, QPen& thePen, Way* W, qreal theWidth, const Projection& theProjection); /// draw way without oneway markers (as in focus) void draw(QPainter& thePainter, QPen& thePen, Way* W, const Projection& theProjection); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Projection.cpp���������������������������������������������������������0000664�0000000�0000000�00000021467�11770671653�0020676�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "Projection.h" #include <QRect> #include <QRectF> #include <math.h> // from wikipedia #define EQUATORIALRADIUS 6378137.0 #define POLARRADIUS 6356752.0 #define EQUATORIALMETERCIRCUMFERENCE 40075016.68 #define EQUATORIALMETERHALFCIRCUMFERENCE 20037508.34 #define EQUATORIALMETERPERDEGREE 222638.981555556 #include "Node.h" Projection::Projection(void) : ProjectionRevision(0) , IsMercator(false) , IsLatLong(false) { #if defined(Q_OS_WIN) && !defined(_MOBILE) QString pdir(QDir::toNativeSeparators(qApp->applicationDirPath() + "/" STRINGIFY(SHARE_DIR) "/proj")); const char* proj_dir = pdir.toUtf8().constData(); // const char* proj_dir = "E:\\cbro\\src\\merkaartor-devel\\binaries\\bin\\share\\proj"; pj_set_searchpath(1, &proj_dir); #endif // Q_OS_WIN #ifndef _MOBILE theProj = NULL; theWGS84Proj = Projection::getProjection("+proj=longlat +ellps=WGS84 +datum=WGS84"); setProjectionType(M_PREFS->getProjectionType()); #endif } Projection::~Projection(void) { #ifndef _MOBILE pj_free(theProj); #endif // _MOBILE } QPointF Projection::inverse2Point(const QPointF & Map) const { if (IsLatLong) return latlonInverse(Map); else if (IsMercator) return mercatorInverse(Map); #ifndef _MOBILE else return projInverse(Map); #endif return QPointF(); } QPointF Projection::project(const QPointF & Map) const { if (IsMercator) return mercatorProject(Map); else if (IsLatLong) return latlonProject(Map); #ifndef _MOBILE else return projProject(Map); #endif return QPointF(); } QPointF Projection::project(Node* aNode) const { return project(aNode->position()); } QLineF Projection::project(const QLineF & Map) const { if (IsMercator) return QLineF (mercatorProject(Map.p1()), mercatorProject(Map.p2())); else if (IsLatLong) return QLineF (latlonProject(Map.p1()), latlonProject(Map.p2())); #ifndef _MOBILE else return QLineF(projProject(Map.p1()), projProject(Map.p2())); #endif return QLineF(); } Coord Projection::inverse2Coord(const QPointF & projPoint) const { if (IsLatLong) return latlonInverse(projPoint); else if (IsMercator) return mercatorInverse(projPoint); #ifndef _MOBILE else return projInverse(projPoint); #endif return Coord(); } QRectF Projection::toProjectedRectF(const QRectF& Viewport, const QRect& screen) const { QPointF tl, br; QRectF pViewport; tl = project(Viewport.topLeft()); br = project(Viewport.bottomRight()); pViewport = QRectF(tl, br); QPointF pCenter(pViewport.center()); qreal wv, hv; //wv = (pViewport.width() / Viewport.londiff()) * ((double)screen.width() / Viewport.londiff()); //hv = (pViewport.height() / Viewport.latdiff()) * ((double)screen.height() / Viewport.latdiff()); qreal Aspect = (double)screen.width() / screen.height(); qreal pAspect = fabs(pViewport.width() / pViewport.height()); if (pAspect > Aspect) { wv = fabs(pViewport.width()); hv = fabs(pViewport.height() * pAspect / Aspect); } else { wv = fabs(pViewport.width() * Aspect / pAspect); hv = fabs(pViewport.height()); } pViewport = QRectF((pCenter.x() - wv/2), (pCenter.y() + hv/2), wv, -hv); return pViewport; } CoordBox Projection::fromProjectedRectF(const QRectF& Viewport) const { Coord tl, br; CoordBox bbox; tl = inverse2Coord(Viewport.topLeft()); br = inverse2Coord(Viewport.bottomRight()); bbox = CoordBox(tl, br); return bbox; } #ifndef _MOBILE void Projection::projTransform(ProjProjection srcdefn, ProjProjection dstdefn, long point_count, int point_offset, qreal *x, qreal *y, qreal *z ) { pj_transform(srcdefn, dstdefn, point_count, point_offset, x, y, z); } void Projection::projTransformFromWGS84(long point_count, int point_offset, qreal *x, qreal *y, qreal *z ) const { pj_transform (theWGS84Proj, theProj, point_count, point_offset, x, y, z); } void Projection::projTransformToWGS84(long point_count, int point_offset, qreal *x, qreal *y, qreal *z ) const { pj_transform(theProj, theWGS84Proj, point_count, point_offset, x, y, z); } QPointF Projection::projProject(const QPointF & Map) const { qreal x = angToRad(Map.x()); qreal y = angToRad(Map.y()); projTransformFromWGS84(1, 0, &x, &y, NULL); return QPointF(x, y); } Coord Projection::projInverse(const QPointF & pProj) const { qreal x = pProj.x(); qreal y = pProj.y(); projTransformToWGS84(1, 0, &x, &y, NULL); return Coord(radToAng(x), radToAng(y)); } #endif // _MOBILE bool Projection::projIsLatLong() const { return IsLatLong; } //bool Projection::projIsMercator() //{ // return IsMercator; //} #ifndef _MOBILE ProjProjection Projection::getProjection(QString projString) { ProjProjection theProj = pj_init_plus(QString("%1 +over").arg(projString).toLatin1()); return theProj; } #endif // _MOBILE bool Projection::setProjectionType(QString aProjectionType) { if (aProjectionType == projType) return true; #ifndef _MOBILE if (theProj) { pj_free(theProj); theProj = NULL; } #endif // _MOBILE ProjectionRevision++; projType = aProjectionType; projProj4 = QString(); IsLatLong = false; IsMercator = false; // Hardcode "Google " projection if ( projType.isEmpty() || projType.toUpper().contains("OSGEO:41001") || projType.toUpper().contains("EPSG:3785") || projType.toUpper().contains("EPSG:900913") || projType.toUpper().contains("EPSG:3857") ) { IsMercator = true; projType = "EPSG:3857"; return true; } // Hardcode "lat/long " projection if ( projType.toUpper().contains("EPSG:4326") ) { IsLatLong = true; projType = "EPSG:4326"; return true; } #ifndef _MOBILE try { projProj4 = M_PREFS->getProjection(aProjectionType).projection; theProj = getProjection(projProj4); if (!theProj) { projType = "EPSG:3857"; IsMercator = true; return false; } // else { // if (pj_is_latlong(theProj)) // projType = "EPSG:4326"; // IsLatLong = true; // } } catch (...) { return false; } return (theProj != NULL || IsLatLong || IsMercator); #else return false; #endif // _MOBILE } QString Projection::getProjectionType() const { return projType; } QString Projection::getProjectionProj4() const { if (IsLatLong) return "+init=EPSG:4326"; else if (IsMercator) return "+init=EPSG:3857"; #ifndef _MOBILE else return QString(pj_get_def(theProj, 0)); #endif return QString(); } int Projection::projectionRevision() const { return ProjectionRevision; } // Common routines qreal Projection::latAnglePerM() const { qreal LengthOfOneDegreeLat = EQUATORIALRADIUS * M_PI / 180; return 1 / LengthOfOneDegreeLat; } qreal Projection::lonAnglePerM(qreal Lat) const { qreal LengthOfOneDegreeLat = EQUATORIALRADIUS * M_PI / 180; qreal LengthOfOneDegreeLon = LengthOfOneDegreeLat * fabs(cos(Lat)); return 1 / LengthOfOneDegreeLon; } bool Projection::toXML(QXmlStreamWriter& stream) { bool OK = true; stream.writeStartElement("Projection"); stream.writeAttribute("type", projType); if (!IsLatLong && !IsMercator && !projProj4.isEmpty()) { stream.writeCharacters(projProj4); } stream.writeEndElement(); return OK; } void Projection::fromXML(QXmlStreamReader& stream) { if (stream.name() == "Projection") { QString proj; if (stream.attributes().hasAttribute("type")) proj = stream.attributes().value("type").toString(); else proj = QCoreApplication::translate("Projection", "Document"); stream.readNext(); if (stream.tokenType() == QXmlStreamReader::Characters) { setProjectionType(stream.text().toString()); projType = proj; stream.readNext(); } else setProjectionType(proj); } } QPointF Projection::mercatorProject(const QPointF& c) const { qreal x = c.x() / 180. * EQUATORIALMETERHALFCIRCUMFERENCE; qreal y = log(tan(angToRad(c.y())) + 1/cos(angToRad(c.y()))) / M_PI * (EQUATORIALMETERHALFCIRCUMFERENCE); return QPointF(x, y); } Coord Projection::mercatorInverse(const QPointF& point) const { qreal longitude = point.x()*180.0/EQUATORIALMETERHALFCIRCUMFERENCE; qreal latitude = radToAng(atan(sinh(point.y()/EQUATORIALMETERHALFCIRCUMFERENCE*M_PI))); return Coord(longitude, latitude); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/Projection.h�����������������������������������������������������������0000664�0000000�0000000�00000004621�11770671653�0020334�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKATOR_PROJECTION_H_ #define MERKATOR_PROJECTION_H_ #include "IProjection.h" #include "Coord.h" #include <QPointF> #ifndef _MOBILE #include "MerkaartorPreferences.h" #include <proj_api.h> typedef projPJ ProjProjection; #endif // _MOBILE class QRect; class Node; class Projection : public IProjection { public: Projection(void); virtual ~Projection(void); qreal latAnglePerM() const; qreal lonAnglePerM(qreal Lat) const; QLineF project(const QLineF & Map) const; QPointF project(const QPointF& Map) const; Coord inverse2Coord(const QPointF& Screen) const; QPointF inverse2Point(const QPointF& Map) const; bool setProjectionType(QString aProjectionType); QString getProjectionType() const; bool projIsLatLong() const; QPointF project(Node* aNode) const; QRectF toProjectedRectF(const QRectF& Viewport, const QRect& screen) const; CoordBox fromProjectedRectF(const QRectF& Viewport) const; int projectionRevision() const; QString getProjectionProj4() const; #ifndef _MOBILE static ProjProjection getProjection(QString projString); static void projTransform(ProjProjection srcdefn, ProjProjection dstdefn, long point_count, int point_offset, qreal *x, qreal *y, qreal *z ); void projTransformToWGS84(long point_count, int point_offset, qreal *x, qreal *y, qreal *z ) const; void projTransformFromWGS84(long point_count, int point_offset, qreal *x, qreal *y, qreal *z ) const; #endif bool toXML(QXmlStreamWriter& stream); void fromXML(QXmlStreamReader& stream); protected: #ifndef _MOBILE ProjProjection theProj; QPointF projProject(const QPointF& Map) const; Coord projInverse(const QPointF& Screen) const; ProjProjection theWGS84Proj; #endif QString projType; QString projProj4; QRectF ProjectedViewport; int ProjectionRevision; bool IsMercator; bool IsLatLong; protected: QPointF mercatorProject(const QPointF& c) const; Coord mercatorInverse(const QPointF& point) const; inline QPointF latlonProject(const QPointF& c) const { return QPointF(c.x()/**EQUATORIALMETERPERDEGREE*/, c.y()/**EQUATORIALMETERPERDEGREE*/); } inline Coord latlonInverse(const QPointF& point) const { return Coord(point.x()/*/EQUATORIALMETERPERDEGREE*/, point.y()/*/EQUATORIALMETERPERDEGREE*/); } }; #endif ���������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/PropertiesDialog.ui����������������������������������������������������0000664�0000000�0000000�00000002733�11770671653�0021664�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>PropertiesDialog</class> <widget class="QDialog" name="PropertiesDialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>495</width> <height>371</height> </rect> </property> <property name="windowTitle"> <string>Properties</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QTextBrowser" name="textBrowser"/> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Close</set> </property> </widget> </item> </layout> </widget> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>PropertiesDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>PropertiesDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui> �������������������������������������merkaartor-0.18.1/src/common/RelationProperties.ui��������������������������������������������������0000664�0000000�0000000�00000005253�11770671653�0022242�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>RelationProperties</class> <widget class="QWidget" name="RelationProperties" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>222</width> <height>495</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> <layout class="QVBoxLayout" > <property name="spacing" > <number>4</number> </property> <property name="margin" > <number>4</number> </property> <item> <layout class="QGridLayout" > <item row="0" column="0" > <widget class="QLabel" name="label" > <property name="text" > <string>Landuse</string> </property> </widget> </item> <item row="0" column="1" > <widget class="QComboBox" name="LandUse" > <property name="sizePolicy" > <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> </widget> </item> </layout> </item> <item> <widget class="QLabel" name="MembersLabel" > <property name="text" > <string>Members</string> </property> </widget> </item> <item> <widget class="QTableView" name="MembersView" > <property name="tabKeyNavigation" > <bool>false</bool> </property> </widget> </item> <item> <layout class="QHBoxLayout" > <property name="spacing" > <number>6</number> </property> <property name="margin" > <number>0</number> </property> <item> <widget class="QLabel" name="label_4" > <property name="text" > <string>Tags</string> </property> </widget> </item> <item> <spacer> <property name="orientation" > <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0" > <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QToolButton" name="RemoveTagButton" > <property name="text" > <string>...</string> </property> <property name="icon" > <iconset resource="Icons/AllIcons.qrc" > <normaloff>:/Icons/small-remove.xpm</normaloff>:/Icons/small-remove.xpm</iconset> </property> </widget> </item> </layout> </item> <item> <widget class="QTableView" name="TagView" > <property name="tabKeyNavigation" > <bool>false</bool> </property> </widget> </item> </layout> </widget> <resources> <include location="Icons/AllIcons.qrc" /> </resources> <connections/> </ui> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/TagModel.cpp�����������������������������������������������������������0000664�0000000�0000000�00000013763�11770671653�0020256�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <algorithm> #include "TagModel.h" #include "MainWindow.h" #include "DocumentCommands.h" #include "FeatureCommands.h" #include "Document.h" #include "Feature.h" #include "Layer.h" TagModel::TagModel(MainWindow* aMain) : Main(aMain) { } TagModel::~TagModel(void) { } void TagModel::setFeature(const QList<Feature*> Features) { if (theFeatures.size()) { beginRemoveRows(QModelIndex(),0,Tags.size()); Tags.clear(); endRemoveRows(); } theFeatures = Features; if (theFeatures.size()) { Feature* F = theFeatures[0]; for (int i=0; i<F->tagSize(); ++i) { int j=0; for (j=1; j<theFeatures.size(); ++j) if (F->tagValue(i) != theFeatures[j]->tagValue(F->tagKey(i),"")) break; if (j == theFeatures.size()) if (!F->tagKey(i).startsWith("%kml:")) Tags.push_back(qMakePair(F->tagKey(i),F->tagValue(i))); } std::sort(Tags.begin(), Tags.end()); beginInsertRows(QModelIndex(),0,Tags.size()); endInsertRows(); } } int TagModel::rowCount(const QModelIndex &) const { if (!theFeatures.size()) return 0; return Tags.size()+1; } int TagModel::columnCount(const QModelIndex &) const { return 2; } QVariant TagModel::data(const QModelIndex &index, int role) const { if (!theFeatures.size()) return QVariant(); if (!index.isValid()) return QVariant(); if (index.row() > Tags.size()) return QVariant(); if (role == Qt::DisplayRole) { if (index.row() >= Tags.size()) { if (index.column() == 0) return newKeyText(); else return ""; } else { if (index.column() == 0) return Tags[index.row()].first; else return Tags[index.row()].second; } } else if (role == Qt::EditRole) { if (index.row() >= Tags.size()) return ""; else { if (index.column() == 0) return Tags[index.row()].first; else return Tags[index.row()].second; } } return QVariant(); } QVariant TagModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) { if (section == 0) return tr("Key"); else return tr("Value"); } return QVariant(); } Qt::ItemFlags TagModel::flags(const QModelIndex &index) const { if (!index.isValid()) return Qt::ItemIsEnabled; return QAbstractTableModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable; } bool TagModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (!theFeatures.size()) return false; if (index.isValid() && role == Qt::EditRole) { if ((int)index.row() == Tags.size()) { if (index.column() == 0) { beginInsertRows(QModelIndex(), Tags.size()+1, Tags.size()+1); CommandList* L; if (theFeatures.size() > 1) L = new CommandList(MainWindow::tr("Set Tags on multiple features"), NULL); else L = new CommandList(MainWindow::tr("Set Tags on %1").arg(theFeatures[0]->id().numId), theFeatures[0]); for (int i=0; i<theFeatures.size(); ++i) { if (theFeatures[i]->isVirtual()) continue; if (!theFeatures[i]->isDirty() && !theFeatures[i]->hasOSMId() && theFeatures[i]->isUploadable()) { bool userAdded = !(theFeatures[i]->id().type & IFeature::Conflict); L->add(new AddFeatureCommand(Main->document()->getDirtyOrOriginLayer(),theFeatures[i],userAdded)); } L->add(new SetTagCommand(theFeatures[i],value.toString(),"", Main->document()->getDirtyOrOriginLayer(theFeatures[i]->layer()))); theFeatures[i]->setLastUpdated(Feature::User); } Tags.push_back(qMakePair(value.toString(),QString(""))); Main->document()->addHistory(L); endInsertRows(); } else return false; } else { QString Original(Tags[index.row()].first); if (index.column() == 0) Tags[index.row()].first = value.toString(); else Tags[index.row()].second = value.toString(); CommandList* L; if (theFeatures.size() > 1) L = new CommandList(MainWindow::tr("Set Tags on multiple features"), NULL); else L = new CommandList(MainWindow::tr("Set Tags on %1").arg(theFeatures[0]->id().numId), theFeatures[0]); for (int i=0; i<theFeatures.size(); ++i) { if (theFeatures[i]->isVirtual()) continue; int j = theFeatures[i]->findKey(Original); if (j != -1) { if (!theFeatures[i]->isDirty() && !theFeatures[i]->hasOSMId() && theFeatures[i]->isUploadable()) { bool userAdded = !(theFeatures[i]->id().type & IFeature::Conflict); L->add(new AddFeatureCommand(Main->document()->getDirtyOrOriginLayer(),theFeatures[i],userAdded)); } L->add(new SetTagCommand(theFeatures[i],j , Tags[index.row()].first, Tags[index.row()].second, Main->document()->getDirtyOrOriginLayer(theFeatures[i]->layer()))); } theFeatures[i]->setLastUpdated(Feature::User); } Main->document()->addHistory(L); Main->invalidateView(false); } emit dataChanged(index, index); return true; } return false; } �������������merkaartor-0.18.1/src/common/TagModel.h�������������������������������������������������������������0000664�0000000�0000000�00000001770�11770671653�0017716�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef MERKAARTOR_TAGMODEL_H_ #define MERKAARTOR_TAGMODEL_H_ #include <QtCore/QAbstractTableModel> #include <QtCore/QString> #include <utility> #include <QList> #include <QPair> class MainWindow; class Feature; class TagModel : public QAbstractTableModel { Q_OBJECT public: TagModel(MainWindow* aMain); ~TagModel(); inline static const QString newKeyText(void) { return tr("Edit this to add..."); } void setFeature(const QList<Feature*> Features); int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); private: MainWindow* Main; QList<Feature*> theFeatures; QList<QPair<QString, QString> > Tags; }; #endif ��������merkaartor-0.18.1/src/common/TerraceDialog.cpp������������������������������������������������������0000664�0000000�0000000�00000007007�11770671653�0021261�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Implementation: TerraceDialog // // Description: // // // Author: James Hogan <james@albanarts.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #include "TerraceDialog.h" TerraceDialog::TerraceDialog(QWidget *parent) :QDialog(parent) { setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); resize(1,1); } unsigned int TerraceDialog::numHouses() const { return spinHouses->value(); } unsigned int TerraceDialog::maxHouses() const { return spinHouses->maximum(); } bool TerraceDialog::hasHouseNumbers() const { return radioNumbering->isChecked(); } QStringList TerraceDialog::houseNumbers() const { QStringList numbers; calcNumbering(comboNumberingPattern->currentIndex(), lineNumberingRanges->text(), &numbers); return numbers; } unsigned int TerraceDialog::calcNumbering(int type, const QString& ranges, QStringList* outNumbers) const { unsigned int num = 0; unsigned int maxNum = maxHouses(); const QStringList items = ranges.split(";"); foreach (const QString& item, items) { const QStringList endsStr = item.split("-"); if (endsStr.size() == 2) { bool valid[2]; int ends[2] = { endsStr[0].toInt(&valid[0]), endsStr[1].toInt(&valid[1]) }; if (valid[0] && valid[1]) { int step = ((ends[0] <= ends[1]) ? 1 : -1); if (type) { // singular range, skip if not in type if (ends[0] == ends[1] && ((ends[0] ^ type) & 1)) continue; // move ends inwards if ((ends[0] ^ type) & 1) ends[0] += step; if ((ends[1] ^ type) & 1) ends[1] -= step; step *= 2; } int count = abs(ends[0] - ends[1]); if (type) count /= 2; ++count; num += count; if (outNumbers) { if (num > maxNum) count -= maxNum - num; int cur = ends[0]; for (int i = 0; i < count; i++, cur += step) *outNumbers << QString::fromAscii("%1").arg(cur); } if (num >= maxNum) return maxNum; continue; } } else if (type && endsStr.size() == 1) { // single number, skip if not in type bool valid; int num = endsStr[0].toInt(&valid); if (valid && ((num ^ type) & 1)) continue; } ++num; if (outNumbers) *outNumbers << item; if (num >= maxNum) return num; } return num; } void TerraceDialog::updateNumbering(int type, const QString& ranges) { spinHouses->setValue(calcNumbering(type, ranges)); } void TerraceDialog::numberingTypeChanged(int type) { updateNumbering(type, lineNumberingRanges->text()); } void TerraceDialog::numberingRangeChanged(const QString& ranges) { updateNumbering(comboNumberingPattern->currentIndex(), ranges); } void TerraceDialog::updateNumbering() { updateNumbering(comboNumberingPattern->currentIndex(), lineNumberingRanges->text()); } void TerraceDialog::changeEvent(QEvent * event) { if (event->type() == QEvent::LanguageChange) retranslateUi(this); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/TerraceDialog.h��������������������������������������������������������0000664�0000000�0000000�00000001621�11770671653�0020722�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // C++ Interface: TerraceDialog // // Description: // // // Author: James Hogan <james@albanarts.com>, (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef TERRACEDIALOG_H #define TERRACEDIALOG_H #include <QWidget> #include <ui_TerraceDialog.h> class TerraceDialog: public QDialog , public Ui::TerraceDialog { Q_OBJECT public: TerraceDialog(QWidget *parent = 0); unsigned int numHouses() const; unsigned int maxHouses() const; bool hasHouseNumbers() const; QStringList houseNumbers() const; unsigned int calcNumbering(int type, const QString& ranges, QStringList* outNumbers = 0) const; void updateNumbering(int type, const QString& ranges); public slots: void numberingTypeChanged(int type); void numberingRangeChanged(const QString& ranges); void updateNumbering(); private: void changeEvent(QEvent*); }; #endif ���������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/TerraceDialog.ui�������������������������������������������������������0000664�0000000�0000000�00000016331�11770671653�0021114�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>TerraceDialog</class> <widget class="QDialog" name="TerraceDialog"> <property name="windowTitle"> <string>Terrace</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="sizeConstraint"> <enum>QLayout::SetMinimumSize</enum> </property> <item> <widget class="QRadioButton" name="radioNoNumbering"> <property name="text"> <string>No House Numbering</string> </property> <property name="checked"> <bool>true</bool> </property> </widget> </item> <item> <layout class="QFormLayout" name="formLayout"> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> <string>Number of houses</string> </property> <property name="buddy"> <cstring>spinHouses</cstring> </property> </widget> </item> <item row="0" column="1"> <widget class="QSpinBox" name="spinHouses"> <property name="minimum"> <number>2</number> </property> </widget> </item> </layout> </item> <item> <widget class="QRadioButton" name="radioNumbering"> <property name="text"> <string>Add House Numbering (Karlsruhe scheme)</string> </property> </widget> </item> <item> <widget class="QFrame" name="frame"> <property name="enabled"> <bool>false</bool> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <layout class="QFormLayout" name="formLayout_2"> <property name="fieldGrowthPolicy"> <enum>QFormLayout::ExpandingFieldsGrow</enum> </property> <item row="1" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> <string>Ranges</string> </property> <property name="buddy"> <cstring>lineNumberingRanges</cstring> </property> </widget> </item> <item row="1" column="1"> <widget class="QLineEdit" name="lineNumberingRanges"/> </item> <item row="2" column="1"> <widget class="QLabel" name="label_4"> <property name="text"> <string>For example "1-9;15-17;19,19A"</string> </property> </widget> </item> <item row="3" column="0"> <widget class="QLabel" name="label_3"> <property name="text"> <string>Pattern</string> </property> <property name="buddy"> <cstring>comboNumberingPattern</cstring> </property> </widget> </item> <item row="3" column="1"> <widget class="QComboBox" name="comboNumberingPattern"> <item> <property name="text"> <string>All numbers</string> </property> </item> <item> <property name="text"> <string>Odd numbers</string> </property> </item> <item> <property name="text"> <string>Even numbers</string> </property> </item> </widget> </item> <item row="0" column="1"> <widget class="QLabel" name="label_5"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Minimum"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="text"> <string>Optionally you can also select a node in the area and house numbering will start at that end.</string> </property> <property name="wordWrap"> <bool>true</bool> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <tabstops> <tabstop>radioNoNumbering</tabstop> <tabstop>spinHouses</tabstop> <tabstop>radioNumbering</tabstop> <tabstop>lineNumberingRanges</tabstop> <tabstop>comboNumberingPattern</tabstop> <tabstop>buttonBox</tabstop> </tabstops> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>TerraceDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>222</x> <y>204</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>218</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>TerraceDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>290</x> <y>210</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>218</y> </hint> </hints> </connection> <connection> <sender>radioNumbering</sender> <signal>toggled(bool)</signal> <receiver>frame</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>51</x> <y>62</y> </hint> <hint type="destinationlabel"> <x>21</x> <y>91</y> </hint> </hints> </connection> <connection> <sender>radioNoNumbering</sender> <signal>toggled(bool)</signal> <receiver>label</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>78</x> <y>14</y> </hint> <hint type="destinationlabel"> <x>74</x> <y>36</y> </hint> </hints> </connection> <connection> <sender>radioNoNumbering</sender> <signal>toggled(bool)</signal> <receiver>spinHouses</receiver> <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> <x>111</x> <y>11</y> </hint> <hint type="destinationlabel"> <x>109</x> <y>42</y> </hint> </hints> </connection> <connection> <sender>comboNumberingPattern</sender> <signal>currentIndexChanged(int)</signal> <receiver>TerraceDialog</receiver> <slot>numberingTypeChanged(int)</slot> <hints> <hint type="sourcelabel"> <x>75</x> <y>162</y> </hint> <hint type="destinationlabel"> <x>166</x> <y>35</y> </hint> </hints> </connection> <connection> <sender>lineNumberingRanges</sender> <signal>textEdited(QString)</signal> <receiver>TerraceDialog</receiver> <slot>numberingRangeChanged(QString)</slot> <hints> <hint type="sourcelabel"> <x>331</x> <y>118</y> </hint> <hint type="destinationlabel"> <x>364</x> <y>37</y> </hint> </hints> </connection> <connection> <sender>radioNumbering</sender> <signal>clicked()</signal> <receiver>TerraceDialog</receiver> <slot>updateNumbering()</slot> <hints> <hint type="sourcelabel"> <x>206</x> <y>70</y> </hint> <hint type="destinationlabel"> <x>248</x> <y>46</y> </hint> </hints> </connection> </connections> <slots> <slot>numberingTypeChanged(int)</slot> <slot>numberingRangeChanged(QString)</slot> <slot>updateNumbering()</slot> </slots> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/UploadMapDialog.ui�����������������������������������������������������0000664�0000000�0000000�00000010257�11770671653�0021412�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<ui version="4.0" > <class>UploadMapDialog</class> <widget class="QDialog" name="UploadMapDialog" > <property name="geometry" > <rect> <x>0</x> <y>0</y> <width>416</width> <height>162</height> </rect> </property> <property name="windowTitle" > <string>Dialog</string> </property> <layout class="QVBoxLayout" > <property name="spacing" > <number>4</number> </property> <property name="margin" > <number>4</number> </property> <item> <layout class="QGridLayout" > <property name="margin" > <number>0</number> </property> <property name="spacing" > <number>6</number> </property> <item row="0" column="1" > <widget class="QLineEdit" name="Website" /> </item> <item row="0" column="0" > <widget class="QLabel" name="label" > <property name="text" > <string>Website</string> </property> </widget> </item> <item row="1" column="1" > <widget class="QLineEdit" name="Username" /> </item> <item row="2" column="1" > <widget class="QLineEdit" name="Password" /> </item> <item row="2" column="0" > <widget class="QLabel" name="label_3" > <property name="text" > <string>Password</string> </property> </widget> </item> <item row="1" column="0" > <widget class="QLabel" name="label_2" > <property name="text" > <string>Username</string> </property> </widget> </item> <item row="3" column="0" > <widget class="QCheckBox" name="UseProxy" > <property name="text" > <string>Use proxy</string> </property> </widget> </item> <item row="3" column="1" > <layout class="QHBoxLayout" > <property name="spacing" > <number>6</number> </property> <property name="margin" > <number>0</number> </property> <item> <widget class="QLineEdit" name="ProxyHost" > <property name="enabled" > <bool>false</bool> </property> </widget> </item> <item> <widget class="QLabel" name="label_4" > <property name="enabled" > <bool>false</bool> </property> <property name="text" > <string>Port</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="ProxyPort" > <property name="enabled" > <bool>false</bool> </property> <property name="maximumSize" > <size> <width>100</width> <height>16777215</height> </size> </property> <property name="inputMask" > <string>99999; </string> </property> </widget> </item> </layout> </item> </layout> </item> <item> <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0" > <size> <width>382</width> <height>16</height> </size> </property> </spacer> </item> <item> <widget class="QDialogButtonBox" name="buttonBox" > <property name="orientation" > <enum>Qt::Horizontal</enum> </property> <property name="standardButtons" > <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> <layoutdefault spacing="4" margin="4" /> <includes/> <resources/> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>UploadMapDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel" > <x>268</x> <y>109</y> </hint> <hint type="destinationlabel" > <x>-1</x> <y>12</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>UploadMapDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel" > <x>361</x> <y>110</y> </hint> <hint type="destinationlabel" > <x>399</x> <y>93</y> </hint> </hints> </connection> </connections> </ui> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/common/common.pri�������������������������������������������������������������0000664�0000000�0000000�00000001565�11770671653�0020057�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/common DEPENDPATH += $$MERKAARTOR_SRC_DIR/common # Header files HEADERS += Global.h \ Coord.h \ Document.h \ MapTypedef.h \ Painting.h \ Projection.h \ FeatureManipulations.h \ MapView.h \ TagModel.h \ GotoDialog.h \ TerraceDialog.h # Source files SOURCES += Global.cpp \ Coord.cpp \ Document.cpp \ Painting.cpp \ Projection.cpp \ FeatureManipulations.cpp \ MapView.cpp \ TagModel.cpp \ GotoDialog.cpp \ TerraceDialog.cpp # Forms FORMS += AboutDialog.ui \ DownloadMapDialog.ui \ UploadMapDialog.ui \ GotoDialog.ui \ TerraceDialog.ui \ MultiProperties.ui \ PropertiesDialog.ui # Resource file(s) RESOURCES += $$MERKAARTOR_SRC_DIR/../Icons/AllIcons.qrc \ $$MERKAARTOR_SRC_DIR/../share/share.qrc \ $$MERKAARTOR_SRC_DIR/../Styles/Styles.qrc �������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/merkaartor.desktop������������������������������������������������������������0000664�0000000�0000000�00000000462�11770671653�0020320�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Type=Application Version=1.0 Name=Merkaartor GenericName=OpenStreetMap Editor GenericName[fr]=Un éditeur pour OpenStreetMap GenericName[tr]=Açık Sokak Haritası Düzenleyicisi Icon=merkaartor Exec=merkaartor Terminal=false StartupNotify=false Categories=Education;Geography;Network;Qt; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/���������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0017642�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/posix_qextserialport.cpp���������������������������������������0000664�0000000�0000000�00000107727�11770671653�0024674�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /*! \class Posix_QextSerialPort \version 1.0.0 \author Stefan Sander A cross-platform serial port class. This class encapsulates the POSIX portion of QextSerialPort. The user will be notified of errors and possible portability conflicts at run-time by default - this behavior can be turned off by defining _TTY_NOWARN_ (to turn off all warnings) or _TTY_NOWARN_PORT_ (to turn off portability warnings) in the project. Note that _TTY_NOWARN_ will also turn off portability warnings. */ #include <stdio.h> #include "posix_qextserialport.h" /*! \fn Posix_QextSerialPort::Posix_QextSerialPort() Default constructor. Note that the name of the device used by a QextSerialPort constructed with this constructor will be determined by #defined constants, or lack thereof - the default behavior is the same as _TTY_LINUX_. Possible naming conventions and their associated constants are: \verbatim Constant Used By Naming Convention ---------- ------------- ------------------------ _TTY_WIN_ Windows COM1, COM2 _TTY_IRIX_ SGI/IRIX /dev/ttyf1, /dev/ttyf2 _TTY_HPUX_ HP-UX /dev/tty1p0, /dev/tty2p0 _TTY_SUN_ SunOS/Solaris /dev/ttya, /dev/ttyb _TTY_DIGITAL_ Digital UNIX /dev/tty01, /dev/tty02 _TTY_FREEBSD_ FreeBSD /dev/ttyd0, /dev/ttyd1 _TTY_LINUX_ Linux /dev/ttyS0, /dev/ttyS1 <none> Linux /dev/ttyS0, /dev/ttyS1 \endverbatim This constructor assigns the device name to the name of the first port on the specified system. See the other constructors if you need to open a different port. */ Posix_QextSerialPort::Posix_QextSerialPort() : QextSerialBase() { Posix_File=new QFile(); } /*! \fn Posix_QextSerialPort::Posix_QextSerialPort(const Posix_QextSerialPort&) Copy constructor. */ Posix_QextSerialPort::Posix_QextSerialPort(const Posix_QextSerialPort& s) : QextSerialBase(s.port) { setOpenMode(s.openMode()); port = s.port; Settings.BaudRate=s.Settings.BaudRate; Settings.DataBits=s.Settings.DataBits; Settings.Parity=s.Settings.Parity; Settings.StopBits=s.Settings.StopBits; Settings.FlowControl=s.Settings.FlowControl; lastErr=s.lastErr; Posix_File=new QFile(); Posix_File=s.Posix_File; memcpy(&Posix_Timeout, &s.Posix_Timeout, sizeof(struct timeval)); memcpy(&Posix_Copy_Timeout, &s.Posix_Copy_Timeout, sizeof(struct timeval)); memcpy(&Posix_CommConfig, &s.Posix_CommConfig, sizeof(struct termios)); } /*! \fn Posix_QextSerialPort::Posix_QextSerialPort(const QString & name) Constructs a serial port attached to the port specified by name. name is the name of the device, which is windowsystem-specific, e.g."COM1" or "/dev/ttyS0". */ Posix_QextSerialPort::Posix_QextSerialPort(const QString & name) : QextSerialBase(name) { Posix_File=new QFile(); } /*! \fn Posix_QextSerialPort::Posix_QextSerialPort(const PortSettings& settings) Constructs a port with default name and specified settings. */ Posix_QextSerialPort::Posix_QextSerialPort(const PortSettings& settings) : QextSerialBase() { setBaudRate(settings.BaudRate); setDataBits(settings.DataBits); setParity(settings.Parity); setStopBits(settings.StopBits); setFlowControl(settings.FlowControl); Posix_File=new QFile(); setTimeout(settings.Timeout_Sec, settings.Timeout_Millisec); } /*! \fn Posix_QextSerialPort::Posix_QextSerialPort(const QString & name, const PortSettings& settings) Constructs a port with specified name and settings. */ Posix_QextSerialPort::Posix_QextSerialPort(const QString & name, const PortSettings& settings) : QextSerialBase(name) { setBaudRate(settings.BaudRate); setDataBits(settings.DataBits); setParity(settings.Parity); setStopBits(settings.StopBits); setFlowControl(settings.FlowControl); Posix_File=new QFile(); setTimeout(settings.Timeout_Sec, settings.Timeout_Millisec); } /*! \fn Posix_QextSerialPort& Posix_QextSerialPort::operator=(const Posix_QextSerialPort& s) Override the = operator. */ Posix_QextSerialPort& Posix_QextSerialPort::operator=(const Posix_QextSerialPort& s) { setOpenMode(s.openMode()); port = s.port; Settings.BaudRate=s.Settings.BaudRate; Settings.DataBits=s.Settings.DataBits; Settings.Parity=s.Settings.Parity; Settings.StopBits=s.Settings.StopBits; Settings.FlowControl=s.Settings.FlowControl; lastErr=s.lastErr; Posix_File=s.Posix_File; memcpy(&Posix_Timeout, &(s.Posix_Timeout), sizeof(struct timeval)); memcpy(&Posix_Copy_Timeout, &(s.Posix_Copy_Timeout), sizeof(struct timeval)); memcpy(&Posix_CommConfig, &(s.Posix_CommConfig), sizeof(struct termios)); return *this; } /*! \fn Posix_QextSerialPort::~Posix_QextSerialPort() Standard destructor. */ Posix_QextSerialPort::~Posix_QextSerialPort() { if (isOpen()) { close(); } Posix_File->close(); delete Posix_File; } /*! \fn void Posix_QextSerialPort::setBaudRate(BaudRateType baudRate) Sets the baud rate of the serial port. Note that not all rates are applicable on all platforms. The following table shows translations of the various baud rate constants on Windows(including NT/2000) and POSIX platforms. Speeds marked with an * are speeds that are usable on both Windows and POSIX. \note BAUD76800 may not be supported on all POSIX systems. SGI/IRIX systems do not support BAUD1800. \verbatim RATE Windows Speed POSIX Speed ----------- ------------- ----------- BAUD50 110 50 BAUD75 110 75 *BAUD110 110 110 BAUD134 110 134.5 BAUD150 110 150 BAUD200 110 200 *BAUD300 300 300 *BAUD600 600 600 *BAUD1200 1200 1200 BAUD1800 1200 1800 *BAUD2400 2400 2400 *BAUD4800 4800 4800 *BAUD9600 9600 9600 BAUD14400 14400 9600 *BAUD19200 19200 19200 *BAUD38400 38400 38400 BAUD56000 56000 38400 *BAUD57600 57600 57600 BAUD76800 57600 76800 *BAUD115200 115200 115200 BAUD128000 128000 115200 BAUD256000 256000 115200 \endverbatim */ void Posix_QextSerialPort::setBaudRate(BaudRateType baudRate) { LOCK_MUTEX(); if (Settings.BaudRate!=baudRate) { switch (baudRate) { case BAUD14400: Settings.BaudRate=BAUD9600; break; case BAUD56000: Settings.BaudRate=BAUD38400; break; case BAUD76800: #ifndef B76800 Settings.BaudRate=BAUD57600; #else Settings.BaudRate=baudRate; #endif break; case BAUD128000: case BAUD256000: Settings.BaudRate=BAUD115200; break; default: Settings.BaudRate=baudRate; break; } } if (isOpen()) { switch (baudRate) { /*50 baud*/ case BAUD50: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows does not support 50 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B50; #else cfsetispeed(&Posix_CommConfig, B50); cfsetospeed(&Posix_CommConfig, B50); #endif break; /*75 baud*/ case BAUD75: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows does not support 75 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B75; #else cfsetispeed(&Posix_CommConfig, B75); cfsetospeed(&Posix_CommConfig, B75); #endif break; /*110 baud*/ case BAUD110: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B110; #else cfsetispeed(&Posix_CommConfig, B110); cfsetospeed(&Posix_CommConfig, B110); #endif break; /*134.5 baud*/ case BAUD134: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows does not support 134.5 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B134; #else cfsetispeed(&Posix_CommConfig, B134); cfsetospeed(&Posix_CommConfig, B134); #endif break; /*150 baud*/ case BAUD150: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows does not support 150 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B150; #else cfsetispeed(&Posix_CommConfig, B150); cfsetospeed(&Posix_CommConfig, B150); #endif break; /*200 baud*/ case BAUD200: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows does not support 200 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B200; #else cfsetispeed(&Posix_CommConfig, B200); cfsetospeed(&Posix_CommConfig, B200); #endif break; /*300 baud*/ case BAUD300: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B300; #else cfsetispeed(&Posix_CommConfig, B300); cfsetospeed(&Posix_CommConfig, B300); #endif break; /*600 baud*/ case BAUD600: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B600; #else cfsetispeed(&Posix_CommConfig, B600); cfsetospeed(&Posix_CommConfig, B600); #endif break; /*1200 baud*/ case BAUD1200: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B1200; #else cfsetispeed(&Posix_CommConfig, B1200); cfsetospeed(&Posix_CommConfig, B1200); #endif break; /*1800 baud*/ case BAUD1800: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows and IRIX do not support 1800 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B1800; #else cfsetispeed(&Posix_CommConfig, B1800); cfsetospeed(&Posix_CommConfig, B1800); #endif break; /*2400 baud*/ case BAUD2400: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B2400; #else cfsetispeed(&Posix_CommConfig, B2400); cfsetospeed(&Posix_CommConfig, B2400); #endif break; /*4800 baud*/ case BAUD4800: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B4800; #else cfsetispeed(&Posix_CommConfig, B4800); cfsetospeed(&Posix_CommConfig, B4800); #endif break; /*9600 baud*/ case BAUD9600: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B9600; #else cfsetispeed(&Posix_CommConfig, B9600); cfsetospeed(&Posix_CommConfig, B9600); #endif break; /*14400 baud*/ case BAUD14400: TTY_WARNING("Posix_QextSerialPort: POSIX does not support 14400 baud operation. Switching to 9600 baud."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B9600; #else cfsetispeed(&Posix_CommConfig, B9600); cfsetospeed(&Posix_CommConfig, B9600); #endif break; /*19200 baud*/ case BAUD19200: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B19200; #else cfsetispeed(&Posix_CommConfig, B19200); cfsetospeed(&Posix_CommConfig, B19200); #endif break; /*38400 baud*/ case BAUD38400: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B38400; #else cfsetispeed(&Posix_CommConfig, B38400); cfsetospeed(&Posix_CommConfig, B38400); #endif break; /*56000 baud*/ case BAUD56000: TTY_WARNING("Posix_QextSerialPort: POSIX does not support 56000 baud operation. Switching to 38400 baud."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B38400; #else cfsetispeed(&Posix_CommConfig, B38400); cfsetospeed(&Posix_CommConfig, B38400); #endif break; /*57600 baud*/ case BAUD57600: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B57600; #else cfsetispeed(&Posix_CommConfig, B57600); cfsetospeed(&Posix_CommConfig, B57600); #endif break; /*76800 baud*/ case BAUD76800: TTY_PORTABILITY_WARNING("Posix_QextSerialPort Portability Warning: Windows and some POSIX systems do not support 76800 baud operation."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); #ifdef B76800 Posix_CommConfig.c_cflag|=B76800; #else TTY_WARNING("Posix_QextSerialPort: Posix_QextSerialPort was compiled without 76800 baud support. Switching to 57600 baud."); Posix_CommConfig.c_cflag|=B57600; #endif //B76800 #else //CBAUD #ifdef B76800 cfsetispeed(&Posix_CommConfig, B76800); cfsetospeed(&Posix_CommConfig, B76800); #else TTY_WARNING("Posix_QextSerialPort: Posix_QextSerialPort was compiled without 76800 baud support. Switching to 57600 baud."); cfsetispeed(&Posix_CommConfig, B57600); cfsetospeed(&Posix_CommConfig, B57600); #endif //B76800 #endif //CBAUD break; /*115200 baud*/ case BAUD115200: #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B115200; #else cfsetispeed(&Posix_CommConfig, B115200); cfsetospeed(&Posix_CommConfig, B115200); #endif break; /*128000 baud*/ case BAUD128000: TTY_WARNING("Posix_QextSerialPort: POSIX does not support 128000 baud operation. Switching to 115200 baud."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B115200; #else cfsetispeed(&Posix_CommConfig, B115200); cfsetospeed(&Posix_CommConfig, B115200); #endif break; /*256000 baud*/ case BAUD256000: TTY_WARNING("Posix_QextSerialPort: POSIX does not support 256000 baud operation. Switching to 115200 baud."); #ifdef CBAUD Posix_CommConfig.c_cflag&=(~CBAUD); Posix_CommConfig.c_cflag|=B115200; #else cfsetispeed(&Posix_CommConfig, B115200); cfsetospeed(&Posix_CommConfig, B115200); #endif break; } tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::setDataBits(DataBitsType dataBits) Sets the number of data bits used by the serial port. Possible values of dataBits are: \verbatim DATA_5 5 data bits DATA_6 6 data bits DATA_7 7 data bits DATA_8 8 data bits \endverbatim \note This function is subject to the following restrictions: \par 5 data bits cannot be used with 2 stop bits. \par 8 data bits cannot be used with space parity on POSIX systems. */ void Posix_QextSerialPort::setDataBits(DataBitsType dataBits) { LOCK_MUTEX(); if (Settings.DataBits!=dataBits) { if ((Settings.StopBits==STOP_2 && dataBits==DATA_5) || (Settings.StopBits==STOP_1_5 && dataBits!=DATA_5) || (Settings.Parity==PAR_SPACE && dataBits==DATA_8)) { } else { Settings.DataBits=dataBits; } } if (isOpen()) { switch(dataBits) { /*5 data bits*/ case DATA_5: if (Settings.StopBits==STOP_2) { TTY_WARNING("Posix_QextSerialPort: 5 Data bits cannot be used with 2 stop bits."); } else { Settings.DataBits=dataBits; Posix_CommConfig.c_cflag&=(~CSIZE); Posix_CommConfig.c_cflag|=CS5; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } break; /*6 data bits*/ case DATA_6: if (Settings.StopBits==STOP_1_5) { TTY_WARNING("Posix_QextSerialPort: 6 Data bits cannot be used with 1.5 stop bits."); } else { Settings.DataBits=dataBits; Posix_CommConfig.c_cflag&=(~CSIZE); Posix_CommConfig.c_cflag|=CS6; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } break; /*7 data bits*/ case DATA_7: if (Settings.StopBits==STOP_1_5) { TTY_WARNING("Posix_QextSerialPort: 7 Data bits cannot be used with 1.5 stop bits."); } else { Settings.DataBits=dataBits; Posix_CommConfig.c_cflag&=(~CSIZE); Posix_CommConfig.c_cflag|=CS7; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } break; /*8 data bits*/ case DATA_8: if (Settings.StopBits==STOP_1_5) { TTY_WARNING("Posix_QextSerialPort: 8 Data bits cannot be used with 1.5 stop bits."); } else { Settings.DataBits=dataBits; Posix_CommConfig.c_cflag&=(~CSIZE); Posix_CommConfig.c_cflag|=CS8; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } break; } } UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::setParity(ParityType parity) Sets the parity associated with the serial port. The possible values of parity are: \verbatim PAR_SPACE Space Parity PAR_MARK Mark Parity PAR_NONE No Parity PAR_EVEN Even Parity PAR_ODD Odd Parity \endverbatim \note This function is subject to the following limitations: \par POSIX systems do not support mark parity. \par POSIX systems support space parity only if tricked into doing so, and only with fewer than 8 data bits. Use space parity very carefully with POSIX systems. */ void Posix_QextSerialPort::setParity(ParityType parity) { LOCK_MUTEX(); if (Settings.Parity!=parity) { if (parity==PAR_MARK || (parity==PAR_SPACE && Settings.DataBits==DATA_8)) { } else { Settings.Parity=parity; } } if (isOpen()) { switch (parity) { /*space parity*/ case PAR_SPACE: if (Settings.DataBits==DATA_8) { TTY_PORTABILITY_WARNING("Posix_QextSerialPort: Space parity is only supported in POSIX with 7 or fewer data bits"); } else { /*space parity not directly supported - add an extra data bit to simulate it*/ Posix_CommConfig.c_cflag&=~(PARENB|CSIZE); switch(Settings.DataBits) { case DATA_5: Settings.DataBits=DATA_6; Posix_CommConfig.c_cflag|=CS6; break; case DATA_6: Settings.DataBits=DATA_7; Posix_CommConfig.c_cflag|=CS7; break; case DATA_7: Settings.DataBits=DATA_8; Posix_CommConfig.c_cflag|=CS8; break; case DATA_8: break; } tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } break; /*mark parity - WINDOWS ONLY*/ case PAR_MARK: TTY_WARNING("Posix_QextSerialPort: Mark parity is not supported by POSIX."); break; /*no parity*/ case PAR_NONE: Posix_CommConfig.c_cflag&=(~PARENB); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; /*even parity*/ case PAR_EVEN: Posix_CommConfig.c_cflag&=(~PARODD); Posix_CommConfig.c_cflag|=PARENB; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; /*odd parity*/ case PAR_ODD: Posix_CommConfig.c_cflag|=(PARENB|PARODD); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; } } UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::setStopBits(StopBitsType stopBits) Sets the number of stop bits used by the serial port. Possible values of stopBits are: \verbatim STOP_1 1 stop bit STOP_1_5 1.5 stop bits STOP_2 2 stop bits \endverbatim \note This function is subject to the following restrictions: \par 2 stop bits cannot be used with 5 data bits. \par POSIX does not support 1.5 stop bits. */ void Posix_QextSerialPort::setStopBits(StopBitsType stopBits) { LOCK_MUTEX(); if (Settings.StopBits!=stopBits) { if ((Settings.DataBits==DATA_5 && stopBits==STOP_2) || stopBits==STOP_1_5) {} else { Settings.StopBits=stopBits; } } if (isOpen()) { switch (stopBits) { /*one stop bit*/ case STOP_1: Settings.StopBits=stopBits; Posix_CommConfig.c_cflag&=(~CSTOPB); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; /*1.5 stop bits*/ case STOP_1_5: TTY_WARNING("Posix_QextSerialPort: 1.5 stop bit operation is not supported by POSIX."); break; /*two stop bits*/ case STOP_2: if (Settings.DataBits==DATA_5) { TTY_WARNING("Posix_QextSerialPort: 2 stop bits cannot be used with 5 data bits"); } else { Settings.StopBits=stopBits; Posix_CommConfig.c_cflag|=CSTOPB; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } break; } } UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::setFlowControl(FlowType flow) Sets the flow control used by the port. Possible values of flow are: \verbatim FLOW_OFF No flow control FLOW_HARDWARE Hardware (RTS/CTS) flow control FLOW_XONXOFF Software (XON/XOFF) flow control \endverbatim \note FLOW_HARDWARE may not be supported on all versions of UNIX. In cases where it is unsupported, FLOW_HARDWARE is the same as FLOW_OFF. */ void Posix_QextSerialPort::setFlowControl(FlowType flow) { LOCK_MUTEX(); if (Settings.FlowControl!=flow) { Settings.FlowControl=flow; } if (isOpen()) { switch(flow) { /*no flow control*/ case FLOW_OFF: Posix_CommConfig.c_cflag&=(~CRTSCTS); Posix_CommConfig.c_iflag&=(~(IXON|IXOFF|IXANY)); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; /*software (XON/XOFF) flow control*/ case FLOW_XONXOFF: Posix_CommConfig.c_cflag&=(~CRTSCTS); Posix_CommConfig.c_iflag|=(IXON|IXOFF|IXANY); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; case FLOW_HARDWARE: Posix_CommConfig.c_cflag|=CRTSCTS; Posix_CommConfig.c_iflag&=(~(IXON|IXOFF|IXANY)); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); break; } } UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::setTimeout(ulong sec, ulong millisec); Sets the read and write timeouts for the port to sec seconds and millisec milliseconds. Note that this is a per-character timeout, i.e. the port will wait this long for each individual character, not for the whole read operation. This timeout also applies to the bytesWaiting() function. \note POSIX does not support millisecond-level control for I/O timeout values. Any timeout set using this function will be set to the next lowest tenth of a second for the purposes of detecting read or write timeouts. For example a timeout of 550 milliseconds will be seen by the class as a timeout of 500 milliseconds for the purposes of reading and writing the port. However millisecond-level control is allowed by the select() system call, so for example a 550-millisecond timeout will be seen as 550 milliseconds on POSIX systems for the purpose of detecting available bytes in the read buffer. */ void Posix_QextSerialPort::setTimeout(ulong sec, ulong millisec) { LOCK_MUTEX(); Settings.Timeout_Sec=sec; Settings.Timeout_Millisec=millisec; Posix_Copy_Timeout.tv_sec=sec; Posix_Copy_Timeout.tv_usec=millisec; if (isOpen()) { tcgetattr(Posix_File->handle(), &Posix_CommConfig); Posix_CommConfig.c_cc[VTIME]=sec*10+millisec/100; tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } UNLOCK_MUTEX(); } /*! \fn bool Posix_QextSerialPort::open(OpenMode mode) Opens the serial port associated to this class. This function has no effect if the port associated with the class is already open. The port is also configured to the current settings, as stored in the Settings structure. */ bool Posix_QextSerialPort::open(OpenMode mode) { LOCK_MUTEX(); if (mode == QIODevice::NotOpen) return isOpen(); if (!isOpen()) { /*open the port*/ Posix_File->setFileName(port); qDebug("Trying to open File"); if (Posix_File->open(QIODevice::ReadWrite|QIODevice::Unbuffered)) { qDebug("Opened File succesfully"); /*set open mode*/ QIODevice::open(mode); /*configure port settings*/ tcgetattr(Posix_File->handle(), &Posix_CommConfig); /*set up other port settings*/ Posix_CommConfig.c_cflag|=CREAD|CLOCAL; Posix_CommConfig.c_lflag&=(~(ICANON|ECHO|ECHOE|ECHOK|ECHONL|ISIG)); Posix_CommConfig.c_iflag&=(~(INPCK|IGNPAR|PARMRK|ISTRIP|ICRNL|IXANY)); Posix_CommConfig.c_oflag&=(~OPOST); Posix_CommConfig.c_cc[VMIN]=0; Posix_CommConfig.c_cc[VINTR] = _POSIX_VDISABLE; Posix_CommConfig.c_cc[VQUIT] = _POSIX_VDISABLE; Posix_CommConfig.c_cc[VSTART] = _POSIX_VDISABLE; Posix_CommConfig.c_cc[VSTOP] = _POSIX_VDISABLE; Posix_CommConfig.c_cc[VSUSP] = _POSIX_VDISABLE; setBaudRate(Settings.BaudRate); setDataBits(Settings.DataBits); setParity(Settings.Parity); setStopBits(Settings.StopBits); setFlowControl(Settings.FlowControl); setTimeout(Settings.Timeout_Sec, Settings.Timeout_Millisec); tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig); } else { qDebug("Could not open File! Error code : %d", Posix_File->error()); } } UNLOCK_MUTEX(); return isOpen(); } /*! \fn void Posix_QextSerialPort::close() Closes a serial port. This function has no effect if the serial port associated with the class is not currently open. */ void Posix_QextSerialPort::close() { LOCK_MUTEX(); Posix_File->close(); QIODevice::close(); UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::flush() Flushes all pending I/O to the serial port. This function has no effect if the serial port associated with the class is not currently open. */ void Posix_QextSerialPort::flush() { LOCK_MUTEX(); if (isOpen()) { Posix_File->flush(); } UNLOCK_MUTEX(); } /*! \fn qint64 Posix_QextSerialPort::size() const This function will return the number of bytes waiting in the receive queue of the serial port. It is included primarily to provide a complete QIODevice interface, and will not record errors in the lastErr member (because it is const). This function is also not thread-safe - in multithreading situations, use Posix_QextSerialPort::bytesWaiting() instead. */ qint64 Posix_QextSerialPort::size() const { int numBytes; if (ioctl(Posix_File->handle(), FIONREAD, &numBytes)<0) { numBytes=0; } return (qint64)numBytes; } /*! \fn qint64 Posix_QextSerialPort::bytesAvailable() Returns the number of bytes waiting in the port's receive queue. This function will return 0 if the port is not currently open, or -1 on error. Error information can be retrieved by calling Posix_QextSerialPort::getLastError(). */ qint64 Posix_QextSerialPort::bytesAvailable() { LOCK_MUTEX(); if (isOpen()) { int bytesQueued; fd_set fileSet; FD_ZERO(&fileSet); FD_SET(Posix_File->handle(), &fileSet); /*on Linux systems the Posix_Timeout structure will be altered by the select() call. Make sure we use the right timeout values*/ //memcpy(&Posix_Timeout, &Posix_Copy_Timeout, sizeof(struct timeval)); Posix_Timeout = Posix_Copy_Timeout; int n=select(Posix_File->handle()+1, &fileSet, NULL, &fileSet, &Posix_Timeout); if (!n) { lastErr=E_PORT_TIMEOUT; UNLOCK_MUTEX(); return -1; } if (n==-1 || ioctl(Posix_File->handle(), FIONREAD, &bytesQueued)==-1) { translateError(errno); UNLOCK_MUTEX(); return -1; } lastErr=E_NO_ERROR; UNLOCK_MUTEX(); return bytesQueued + QIODevice::bytesAvailable(); } UNLOCK_MUTEX(); return 0; } /*! \fn void Posix_QextSerialPort::ungetChar(char) This function is included to implement the full QIODevice interface, and currently has no purpose within this class. This function is meaningless on an unbuffered device and currently only prints a warning message to that effect. */ void Posix_QextSerialPort::ungetChar(char) { /*meaningless on unbuffered sequential device - return error and print a warning*/ TTY_WARNING("Posix_QextSerialPort: ungetChar() called on an unbuffered sequential device - operation is meaningless"); } /*! \fn void Posix_QextSerialPort::translateError(ulong error) Translates a system-specific error code to a QextSerialPort error code. Used internally. */ void Posix_QextSerialPort::translateError(ulong error) { switch (error) { case EBADF: case ENOTTY: lastErr=E_INVALID_FD; break; case EINTR: lastErr=E_CAUGHT_NON_BLOCKED_SIGNAL; break; case ENOMEM: lastErr=E_NO_MEMORY; break; } } /*! \fn void Posix_QextSerialPort::setDtr(bool set) Sets DTR line to the requested state (high by default). This function will have no effect if the port associated with the class is not currently open. */ void Posix_QextSerialPort::setDtr(bool set) { LOCK_MUTEX(); if (isOpen()) { int status; ioctl(Posix_File->handle(), TIOCMGET, &status); if (set) { status|=TIOCM_DTR; } else { status&=~TIOCM_DTR; } ioctl(Posix_File->handle(), TIOCMSET, &status); } UNLOCK_MUTEX(); } /*! \fn void Posix_QextSerialPort::setRts(bool set) Sets RTS line to the requested state (high by default). This function will have no effect if the port associated with the class is not currently open. */ void Posix_QextSerialPort::setRts(bool set) { LOCK_MUTEX(); if (isOpen()) { int status; ioctl(Posix_File->handle(), TIOCMGET, &status); if (set) { status|=TIOCM_RTS; } else { status&=~TIOCM_RTS; } ioctl(Posix_File->handle(), TIOCMSET, &status); } UNLOCK_MUTEX(); } /*! \fn unsigned long Posix_QextSerialPort::lineStatus() returns the line status as stored by the port function. This function will retrieve the states of the following lines: DCD, CTS, DSR, and RI. On POSIX systems, the following additional lines can be monitored: DTR, RTS, Secondary TXD, and Secondary RXD. The value returned is an unsigned long with specific bits indicating which lines are high. The following constants should be used to examine the states of individual lines: \verbatim Mask Line ------ ---- LS_CTS CTS LS_DSR DSR LS_DCD DCD LS_RI RI LS_RTS RTS (POSIX only) LS_DTR DTR (POSIX only) LS_ST Secondary TXD (POSIX only) LS_SR Secondary RXD (POSIX only) \endverbatim This function will return 0 if the port associated with the class is not currently open. */ unsigned long Posix_QextSerialPort::lineStatus() { unsigned long Status=0, Temp=0; LOCK_MUTEX(); if (isOpen()) { ioctl(Posix_File->handle(), TIOCMGET, &Temp); if (Temp&TIOCM_CTS) { Status|=LS_CTS; } if (Temp&TIOCM_DSR) { Status|=LS_DSR; } if (Temp&TIOCM_RI) { Status|=LS_RI; } if (Temp&TIOCM_CD) { Status|=LS_DCD; } if (Temp&TIOCM_DTR) { Status|=LS_DTR; } if (Temp&TIOCM_RTS) { Status|=LS_RTS; } if (Temp&TIOCM_ST) { Status|=LS_ST; } if (Temp&TIOCM_SR) { Status|=LS_SR; } } UNLOCK_MUTEX(); return Status; } /*! \fn qint64 Posix_QextSerialPort::readData(char * data, qint64 maxSize) Reads a block of data from the serial port. This function will read at most maxSize bytes from the serial port and place them in the buffer pointed to by data. Return value is the number of bytes actually read, or -1 on error. \warning before calling this function ensure that serial port associated with this class is currently open (use isOpen() function to check if port is open). */ qint64 Posix_QextSerialPort::readData(char * data, qint64 maxSize) { LOCK_MUTEX(); int retVal=0; retVal=Posix_File->read(data, maxSize); if (retVal==-1) lastErr=E_READ_FAILED; UNLOCK_MUTEX(); return retVal; } /*! \fn qint64 Posix_QextSerialPort::writeData(const char * data, qint64 maxSize) Writes a block of data to the serial port. This function will write maxSize bytes from the buffer pointed to by data to the serial port. Return value is the number of bytes actually written, or -1 on error. \warning before calling this function ensure that serial port associated with this class is currently open (use isOpen() function to check if port is open). */ qint64 Posix_QextSerialPort::writeData(const char * data, qint64 maxSize) { LOCK_MUTEX(); int retVal=0; retVal=Posix_File->write(data, maxSize); if (retVal==-1) lastErr=E_WRITE_FAILED; UNLOCK_MUTEX(); flush(); return retVal; } �����������������������������������������merkaartor-0.18.1/src/qextserialport/posix_qextserialport.h�����������������������������������������0000664�0000000�0000000�00000003050�11770671653�0024321�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #ifndef _POSIX_QEXTSERIALPORT_H_ #define _POSIX_QEXTSERIALPORT_H_ #include <stdio.h> #include <termios.h> #include <errno.h> #include <unistd.h> #include <sys/time.h> #include <sys/ioctl.h> #include <sys/select.h> #include "qextserialbase.h" class Posix_QextSerialPort:public QextSerialBase { public: Posix_QextSerialPort(); Posix_QextSerialPort(const Posix_QextSerialPort& s); Posix_QextSerialPort(const QString & name); Posix_QextSerialPort(const PortSettings& settings); Posix_QextSerialPort(const QString & name, const PortSettings& settings); Posix_QextSerialPort& operator=(const Posix_QextSerialPort& s); virtual ~Posix_QextSerialPort(); virtual void setBaudRate(BaudRateType); virtual void setDataBits(DataBitsType); virtual void setParity(ParityType); virtual void setStopBits(StopBitsType); virtual void setFlowControl(FlowType); virtual void setTimeout(ulong, ulong); virtual bool open(OpenMode mode=0); virtual void close(); virtual void flush(); virtual qint64 size() const; virtual qint64 bytesAvailable(); virtual void ungetChar(char c); virtual void translateError(ulong error); virtual void setDtr(bool set=true); virtual void setRts(bool set=true); virtual ulong lineStatus(); protected: QFile* Posix_File; struct termios Posix_CommConfig; struct timeval Posix_Timeout; struct timeval Posix_Copy_Timeout; virtual qint64 readData(char * data, qint64 maxSize); virtual qint64 writeData(const char * data, qint64 maxSize); }; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/qextserialbase.cpp���������������������������������������������0000664�0000000�0000000�00000015061�11770671653�0023365�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "qextserialbase.h" /*! \class QextSerialBase \version 1.0.0 \author Stefan Sander A common base class for Win_QextSerialBase, Posix_QextSerialBase and QextSerialPort. */ #ifdef QT_THREAD_SUPPORT QMutex* QextSerialBase::mutex=NULL; unsigned long QextSerialBase::refCount=0; #endif /*! \fn QextSerialBase::QextSerialBase() Default constructor. */ QextSerialBase::QextSerialBase() : QIODevice() { #ifdef _TTY_WIN_ setPortName("COM1"); #elif defined(_TTY_IRIX_) setPortName("/dev/ttyf1"); #elif defined(_TTY_HPUX_) setPortName("/dev/tty1p0"); #elif defined(_TTY_SUN_) setPortName("/dev/ttya"); #elif defined(_TTY_DIGITAL_) setPortName("/dev/tty01"); #elif defined(_TTY_FREEBSD_) setPortName("/dev/ttyd1"); #else setPortName("/dev/ttyS0"); #endif construct(); } /*! \fn QextSerialBase::QextSerialBase(const QString & name) Construct a port and assign it to the device specified by the name parameter. */ QextSerialBase::QextSerialBase(const QString & name) : QIODevice() { setPortName(name); construct(); } /*! \fn QextSerialBase::~QextSerialBase() Standard destructor. */ QextSerialBase::~QextSerialBase() { #ifdef QT_THREAD_SUPPORT refCount--; if (mutex && refCount==0) { delete mutex; mutex=NULL; } #endif } /*! \fn void QextSerialBase::construct() Common constructor function for setting up default port settings. (115200 Baud, 8N1, Hardware flow control where supported, otherwise no flow control, and 500 ms timeout). */ void QextSerialBase::construct() { Settings.BaudRate=BAUD115200; Settings.DataBits=DATA_8; Settings.Parity=PAR_NONE; Settings.StopBits=STOP_1; Settings.FlowControl=FLOW_HARDWARE; Settings.Timeout_Sec=0; Settings.Timeout_Millisec=500; #ifdef QT_THREAD_SUPPORT if (!mutex) { mutex=new QMutex( QMutex::Recursive ); } refCount++; #endif setOpenMode(QIODevice::NotOpen); } /*! \fn void QextSerialBase::setPortName(const QString & name) Sets the name of the device associated with the object, e.g. "COM1", or "/dev/ttyS0". */ void QextSerialBase::setPortName(const QString & name) { port = name; } /*! \fn QString QextSerialBase::portName() const Returns the name set by setPortName(). */ QString QextSerialBase::portName() const { return port; } /*! \fn BaudRateType QextSerialBase::baudRate(void) const Returns the baud rate of the serial port. For a list of possible return values see the definition of the enum BaudRateType. */ BaudRateType QextSerialBase::baudRate(void) const { return Settings.BaudRate; } /*! \fn DataBitsType QextSerialBase::dataBits() const Returns the number of data bits used by the port. For a list of possible values returned by this function, see the definition of the enum DataBitsType. */ DataBitsType QextSerialBase::dataBits() const { return Settings.DataBits; } /*! \fn ParityType QextSerialBase::parity() const Returns the type of parity used by the port. For a list of possible values returned by this function, see the definition of the enum ParityType. */ ParityType QextSerialBase::parity() const { return Settings.Parity; } /*! \fn StopBitsType QextSerialBase::stopBits() const Returns the number of stop bits used by the port. For a list of possible return values, see the definition of the enum StopBitsType. */ StopBitsType QextSerialBase::stopBits() const { return Settings.StopBits; } /*! \fn FlowType QextSerialBase::flowControl() const Returns the type of flow control used by the port. For a list of possible values returned by this function, see the definition of the enum FlowType. */ FlowType QextSerialBase::flowControl() const { return Settings.FlowControl; } /*! \fn bool QextSerialBase::isSequential() const Returns true if device is sequential, otherwise returns false. Serial port is sequential device so this function always returns true. Check QIODevice::isSequential() documentation for more information. */ bool QextSerialBase::isSequential() const { return true; } /*! \fn bool QextSerialBase::atEnd() const This function will return true if the input buffer is empty (or on error), and false otherwise. Call QextSerialBase::lastError() for error information. */ bool QextSerialBase::atEnd() const { if (size()) { return true; } return false; } /*! \fn qint64 QextSerialBase::readLine(char * data, qint64 maxSize) This function will read a line of buffered input from the port, stopping when either maxSize bytes have been read, the port has no more data available, or a newline is encountered. The value returned is the length of the string that was read. */ qint64 QextSerialBase::readLine(char * data, qint64 maxSize) { qint64 numBytes = bytesAvailable(); char* pData = data; if (maxSize < 2) //maxSize must be larger than 1 return -1; /*read a byte at a time for MIN(bytesAvail, maxSize - 1) iterations, or until a newline*/ while (pData<(data+numBytes) && --maxSize) { readData(pData, 1); if (*pData++ == '\n') { break; } } *pData='\0'; /*return size of data read*/ return (pData-data); } /*! \fn ulong QextSerialBase::lastError() const Returns the code for the last error encountered by the port, or E_NO_ERROR if the last port operation was successful. Possible error codes are: \verbatim Error Explanation --------------------------- ------------------------------------------------------------- E_NO_ERROR No Error has occured E_INVALID_FD Invalid file descriptor (port was not opened correctly) E_NO_MEMORY Unable to allocate memory tables (POSIX) E_CAUGHT_NON_BLOCKED_SIGNAL Caught a non-blocked signal (POSIX) E_PORT_TIMEOUT Operation timed out (POSIX) E_INVALID_DEVICE The file opened by the port is not a character device (POSIX) E_BREAK_CONDITION The port detected a break condition E_FRAMING_ERROR The port detected a framing error (usually caused by incorrect baud rate settings) E_IO_ERROR There was an I/O error while communicating with the port E_BUFFER_OVERRUN Character buffer overrun E_RECEIVE_OVERFLOW Receive buffer overflow E_RECEIVE_PARITY_ERROR The port detected a parity error in the received data E_TRANSMIT_OVERFLOW Transmit buffer overflow E_READ_FAILED General read operation failure E_WRITE_FAILED General write operation failure \endverbatim */ ulong QextSerialBase::lastError() const { return lastErr; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/qextserialbase.h�����������������������������������������������0000664�0000000�0000000�00000010674�11770671653�0023037�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #ifndef _QEXTSERIALBASE_H_ #define _QEXTSERIALBASE_H_ #include <QIODevice> #include <QFile> #ifdef QT_THREAD_SUPPORT #include <QThread> #include <QMutex> #endif /*if all warning messages are turned off, flag portability warnings to be turned off as well*/ #ifdef _TTY_NOWARN_ #define _TTY_NOWARN_PORT_ #endif /*macros for thread support*/ #ifdef QT_THREAD_SUPPORT #define LOCK_MUTEX() mutex->lock() #define UNLOCK_MUTEX() mutex->unlock() #else #define LOCK_MUTEX() #define UNLOCK_MUTEX() #endif /*macros for warning messages*/ #ifdef _TTY_NOWARN_PORT_ #define TTY_PORTABILITY_WARNING(s) #else #define TTY_PORTABILITY_WARNING(s) qWarning(s) #endif #ifdef _TTY_NOWARN_ #define TTY_WARNING(s) #else #define TTY_WARNING(s) qWarning(s) #endif /*line status constants*/ #define LS_CTS 0x01 #define LS_DSR 0x02 #define LS_DCD 0x04 #define LS_RI 0x08 #define LS_RTS 0x10 #define LS_DTR 0x20 #define LS_ST 0x40 #define LS_SR 0x80 /*error constants*/ #define E_NO_ERROR 0 #define E_INVALID_FD 1 #define E_NO_MEMORY 2 #define E_CAUGHT_NON_BLOCKED_SIGNAL 3 #define E_PORT_TIMEOUT 4 #define E_INVALID_DEVICE 5 #define E_BREAK_CONDITION 6 #define E_FRAMING_ERROR 7 #define E_IO_ERROR 8 #define E_BUFFER_OVERRUN 9 #define E_RECEIVE_OVERFLOW 10 #define E_RECEIVE_PARITY_ERROR 11 #define E_TRANSMIT_OVERFLOW 12 #define E_READ_FAILED 13 #define E_WRITE_FAILED 14 /*enums for port settings*/ enum NamingConvention { WIN_NAMES, IRIX_NAMES, HPUX_NAMES, SUN_NAMES, DIGITAL_NAMES, FREEBSD_NAMES, LINUX_NAMES }; enum BaudRateType { BAUD50, //POSIX ONLY BAUD75, //POSIX ONLY BAUD110, BAUD134, //POSIX ONLY BAUD150, //POSIX ONLY BAUD200, //POSIX ONLY BAUD300, BAUD600, BAUD1200, BAUD1800, //POSIX ONLY BAUD2400, BAUD4800, BAUD9600, BAUD14400, //WINDOWS ONLY BAUD19200, BAUD38400, BAUD56000, //WINDOWS ONLY BAUD57600, BAUD76800, //POSIX ONLY BAUD115200, BAUD128000, //WINDOWS ONLY BAUD256000 //WINDOWS ONLY }; enum DataBitsType { DATA_5, DATA_6, DATA_7, DATA_8 }; enum ParityType { PAR_NONE, PAR_ODD, PAR_EVEN, PAR_MARK, //WINDOWS ONLY PAR_SPACE }; enum StopBitsType { STOP_1, STOP_1_5, //WINDOWS ONLY STOP_2 }; enum FlowType { FLOW_OFF, FLOW_HARDWARE, FLOW_XONXOFF }; /*structure to contain port settings*/ struct PortSettings { BaudRateType BaudRate; DataBitsType DataBits; ParityType Parity; StopBitsType StopBits; FlowType FlowControl; ulong Timeout_Sec; ulong Timeout_Millisec; }; class QextSerialBase : public QIODevice { public: QextSerialBase(); QextSerialBase(const QString & name); virtual ~QextSerialBase(); virtual void construct(); virtual void setPortName(const QString & name); virtual QString portName() const; virtual void setBaudRate(BaudRateType)=0; virtual BaudRateType baudRate() const; virtual void setDataBits(DataBitsType)=0; virtual DataBitsType dataBits() const; virtual void setParity(ParityType)=0; virtual ParityType parity() const; virtual void setStopBits(StopBitsType)=0; virtual StopBitsType stopBits() const; virtual void setFlowControl(FlowType)=0; virtual FlowType flowControl() const; virtual void setTimeout(ulong, ulong)=0; virtual bool open(OpenMode mode=0)=0; virtual bool isSequential() const; virtual void close()=0; virtual void flush()=0; virtual qint64 size() const=0; virtual qint64 bytesAvailable() =0; virtual bool atEnd() const; virtual void ungetChar(char c)=0; virtual qint64 readLine(char * data, qint64 maxSize); virtual ulong lastError() const; virtual void translateError(ulong error)=0; virtual void setDtr(bool set=true)=0; virtual void setRts(bool set=true)=0; virtual ulong lineStatus()=0; protected: QString port; PortSettings Settings; ulong lastErr; #ifdef QT_THREAD_SUPPORT static QMutex* mutex; static ulong refCount; #endif virtual qint64 readData(char * data, qint64 maxSize)=0; virtual qint64 writeData(const char * data, qint64 maxSize)=0; }; #endif ��������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/qextserialport.cpp���������������������������������������������0000664�0000000�0000000�00000006173�11770671653�0023443�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /*! \class QextSerialPort \version 1.0.0 \author Stefan Sander A cross-platform serial port class. This class encapsulates a serial port on both POSIX and Windows systems. The user will be notified of errors and possible portability conflicts at run-time by default - this behavior can be turned off by defining _TTY_NOWARN_ (to turn off all warnings) or _TTY_NOWARN_PORT_ (to turn off portability warnings) in the project. \note On Windows NT/2000/XP this class uses Win32 serial port functions by default. The user may select POSIX behavior under NT, 2000, or XP ONLY by defining _TTY_POSIX_ in the project. I can make no guarantees as to the quality of POSIX support under NT/2000 however. */ #include <stdio.h> #include "qextserialport.h" /*! \fn QextSerialPort::QextSerialPort() Default constructor. Note that the naming convention used by a QextSerialPort constructed with this constructor will be determined by #defined constants, or lack thereof - the default behavior is the same as _TTY_LINUX_. Possible naming conventions and their associated constants are: \verbatim Constant Used By Naming Convention ---------- ------------- ------------------------ _TTY_WIN_ Windows COM1, COM2 _TTY_IRIX_ SGI/IRIX /dev/ttyf1, /dev/ttyf2 _TTY_HPUX_ HP-UX /dev/tty1p0, /dev/tty2p0 _TTY_SUN_ SunOS/Solaris /dev/ttya, /dev/ttyb _TTY_DIGITAL_ Digital UNIX /dev/tty01, /dev/tty02 _TTY_FREEBSD_ FreeBSD /dev/ttyd0, /dev/ttyd1 _TTY_LINUX_ Linux /dev/ttyS0, /dev/ttyS1 <none> Linux /dev/ttyS0, /dev/ttyS1 \endverbatim The object will be associated with the first port in the system, e.g. COM1 on Windows systems. See the other constructors if you need to use a port other than the first. */ QextSerialPort::QextSerialPort() : QextBaseType() {} /*! \fn QextSerialPort::QextSerialPort(const QString & name) Constructs a serial port attached to the port specified by name. name is the name of the device, which is windowsystem-specific, e.g."COM1" or "/dev/ttyS0". */ QextSerialPort::QextSerialPort(const QString & name) : QextBaseType(name) {} /*! \fn QextSerialPort::QextSerialPort(PortSettings const& settings) Constructs a port with default name and settings specified by the settings parameter. */ QextSerialPort::QextSerialPort(PortSettings const& settings) : QextBaseType(settings) {} /*! \fn QextSerialPort::QextSerialPort(const QString & name, PortSettings const& settings) Constructs a port with the name and settings specified. */ QextSerialPort::QextSerialPort(const QString & name, PortSettings const& settings) : QextBaseType(name, settings) {} /*! \fn QextSerialPort::QextSerialPort(const QextSerialPort& s) Copy constructor. */ QextSerialPort::QextSerialPort(const QextSerialPort& s) : QextBaseType(s) {} /*! \fn QextSerialPort& QextSerialPort::operator=(const QextSerialPort& s) Overrides the = operator. */ QextSerialPort& QextSerialPort::operator=(const QextSerialPort& s) { return (QextSerialPort&)QextBaseType::operator=(s); } /*! \fn QextSerialPort::~QextSerialPort() Standard destructor. */ QextSerialPort::~QextSerialPort() {} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/qextserialport.h�����������������������������������������������0000664�0000000�0000000�00000001176�11770671653�0023106�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #ifndef _QEXTSERIALPORT_H_ #define _QEXTSERIALPORT_H_ /*POSIX CODE*/ #ifdef _TTY_POSIX_ #include "posix_qextserialport.h" #define QextBaseType Posix_QextSerialPort /*MS WINDOWS CODE*/ #else #include "win_qextserialport.h" #define QextBaseType Win_QextSerialPort #endif class QextSerialPort: public QextBaseType { public: QextSerialPort(); QextSerialPort(const QString & name); QextSerialPort(PortSettings const& s); QextSerialPort(const QString & name, PortSettings const& s); QextSerialPort(const QextSerialPort& s); QextSerialPort& operator=(const QextSerialPort&); virtual ~QextSerialPort(); }; #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/qextserialport/qextserialport.pri���������������������������������������������0000664�0000000�0000000�00000000760�11770671653�0023447�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������INCLUDEPATH += $$MERKAARTOR_SRC_DIR/qextserialport DEPENDPATH += $$MERKAARTOR_SRC_DIR/qextserialport HEADERS += qextserialbase.h \ qextserialport.h SOURCES += qextserialbase.cpp \ qextserialport.cpp unix:HEADERS += posix_qextserialport.h unix:SOURCES += posix_qextserialport.cpp unix:DEFINES += _TTY_POSIX_ win32:HEADERS += win_qextserialport.h win32:SOURCES += win_qextserialport.cpp win32:DEFINES += _TTY_WIN_ ����������������merkaartor-0.18.1/src/qextserialport/win_qextserialport.cpp�����������������������������������������0000664�0000000�0000000�00000070727�11770671653�0024326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*! \class Win_QextSerialPort \version 1.0.0 \author Stefan Sander A cross-platform serial port class. This class encapsulates the Windows portion of QextSerialPort. The user will be notified of errors and possible portability conflicts at run-time by default - this behavior can be turned off by defining _TTY_NOWARN_ (to turn off all warnings) or _TTY_NOWARN_PORT_ (to turn off portability warnings) in the project. Note that defining _TTY_NOWARN_ also defines _TTY_NOWARN_PORT_. \note On Windows NT/2000/XP this class uses Win32 serial port functions by default. The user may select POSIX behavior under NT, 2000, or XP ONLY by defining _TTY_POSIX_ in the project. I can make no guarantees as to the quality of POSIX support under NT/2000 however. */ #include <stdio.h> #include "win_qextserialport.h" /*! \fn Win_QextSerialPort::Win_QextSerialPort() Default constructor. Note that the name of the device used by a Win_QextSerialPort constructed with this constructor will be determined by #defined constants, or lack thereof - the default behavior is the same as _TTY_LINUX_. Possible naming conventions and their associated constants are: \verbatim Constant Used By Naming Convention ---------- ------------- ------------------------ _TTY_WIN_ Windows COM1, COM2 _TTY_IRIX_ SGI/IRIX /dev/ttyf1, /dev/ttyf2 _TTY_HPUX_ HP-UX /dev/tty1p0, /dev/tty2p0 _TTY_SUN_ SunOS/Solaris /dev/ttya, /dev/ttyb _TTY_DIGITAL_ Digital UNIX /dev/tty01, /dev/tty02 _TTY_FREEBSD_ FreeBSD /dev/ttyd0, /dev/ttyd1 _TTY_LINUX_ Linux /dev/ttyS0, /dev/ttyS1 <none> Linux /dev/ttyS0, /dev/ttyS1 \endverbatim This constructor associates the object with the first port on the system, e.g. COM1 for Windows platforms. See the other constructor if you need a port other than the first. */ Win_QextSerialPort::Win_QextSerialPort():QextSerialBase() { Win_Handle=INVALID_HANDLE_VALUE; } /*!Win_QextSerialPort::Win_QextSerialPort(const Win_QextSerialPort&) Copy constructor. */ Win_QextSerialPort::Win_QextSerialPort(const Win_QextSerialPort& s):QextSerialBase(s.port) { Win_Handle=INVALID_HANDLE_VALUE; setOpenMode(s.openMode()); lastErr=s.lastErr; port = s.port; Settings.FlowControl=s.Settings.FlowControl; Settings.Parity=s.Settings.Parity; Settings.DataBits=s.Settings.DataBits; Settings.StopBits=s.Settings.StopBits; Settings.BaudRate=s.Settings.BaudRate; Win_Handle=s.Win_Handle; memcpy(&Win_CommConfig, &s.Win_CommConfig, sizeof(COMMCONFIG)); memcpy(&Win_CommTimeouts, &s.Win_CommTimeouts, sizeof(COMMTIMEOUTS)); } /*! \fn Win_QextSerialPort::Win_QextSerialPort(const QString & name) Constructs a serial port attached to the port specified by devName. devName is the name of the device, which is windowsystem-specific, e.g."COM2" or "/dev/ttyS0". */ Win_QextSerialPort::Win_QextSerialPort(const QString & name):QextSerialBase(name) { Win_Handle=INVALID_HANDLE_VALUE; } /*! \fn Win_QextSerialPort::Win_QextSerialPort(const PortSettings& settings) Constructs a port with default name and specified settings. */ Win_QextSerialPort::Win_QextSerialPort(const PortSettings& settings) { Win_Handle=INVALID_HANDLE_VALUE; setBaudRate(settings.BaudRate); setDataBits(settings.DataBits); setStopBits(settings.StopBits); setParity(settings.Parity); setFlowControl(settings.FlowControl); setTimeout(settings.Timeout_Sec, settings.Timeout_Millisec); } /*! \fn Win_QextSerialPort::Win_QextSerialPort(const QString & name, const PortSettings& settings) Constructs a port with specified name and settings. */ Win_QextSerialPort::Win_QextSerialPort(const QString & name, const PortSettings& settings) { Win_Handle=INVALID_HANDLE_VALUE; setPortName(name); setBaudRate(settings.BaudRate); setDataBits(settings.DataBits); setStopBits(settings.StopBits); setParity(settings.Parity); setFlowControl(settings.FlowControl); setTimeout(settings.Timeout_Sec, settings.Timeout_Millisec); } /*! \fn Win_QextSerialPort::~Win_QextSerialPort() Standard destructor. */ Win_QextSerialPort::~Win_QextSerialPort() { if (isOpen()) { close(); } } /*! \fn Win_QextSerialPort& Win_QextSerialPort::operator=(const Win_QextSerialPort& s) overrides the = operator */ Win_QextSerialPort& Win_QextSerialPort::operator=(const Win_QextSerialPort& s) { setOpenMode(s.openMode()); lastErr=s.lastErr; port = s.port; Settings.FlowControl=s.Settings.FlowControl; Settings.Parity=s.Settings.Parity; Settings.DataBits=s.Settings.DataBits; Settings.StopBits=s.Settings.StopBits; Settings.BaudRate=s.Settings.BaudRate; Win_Handle=s.Win_Handle; memcpy(&Win_CommConfig, &s.Win_CommConfig, sizeof(COMMCONFIG)); memcpy(&Win_CommTimeouts, &s.Win_CommTimeouts, sizeof(COMMTIMEOUTS)); return *this; } /*! \fn bool Win_QextSerialPort::open(OpenMode mode) Opens a serial port. Note that this function does not specify which device to open. If you need to open a device by name, see Win_QextSerialPort::open(const char*). This function has no effect if the port associated with the class is already open. The port is also configured to the current settings, as stored in the Settings structure. */ bool Win_QextSerialPort::open(OpenMode mode) { //unsigned long confSize = sizeof(COMMCONFIG); //Win_CommConfig.dwSize = confSize; LOCK_MUTEX(); if (mode == QIODevice::NotOpen) return isOpen(); if (!isOpen()) { /*open the port*/ Win_Handle=CreateFile((LPCWSTR)port.utf16(), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (Win_Handle!=INVALID_HANDLE_VALUE) { /*set open mode*/ QIODevice::open(mode); /*configure port settings*/ //GetCommConfig(Win_Handle, &Win_CommConfig, &confSize); GetCommState(Win_Handle, &(Win_CommConfig)); /*set up parameters*/ Win_CommConfig.fBinary=TRUE; Win_CommConfig.fInX=FALSE; Win_CommConfig.fOutX=FALSE; Win_CommConfig.fAbortOnError=FALSE; Win_CommConfig.fNull=FALSE; setBaudRate(Settings.BaudRate); setDataBits(Settings.DataBits); setStopBits(Settings.StopBits); setParity(Settings.Parity); setFlowControl(Settings.FlowControl); setTimeout(Settings.Timeout_Sec, Settings.Timeout_Millisec); //SetCommConfig(Win_Handle, &Win_CommConfig, sizeof(COMMCONFIG)); SetCommState(Win_Handle, &Win_CommConfig); } else { qDebug("Device handle failed with error : %d\n", (int)GetLastError()); } } UNLOCK_MUTEX(); return isOpen(); } /*! \fn void Win_QextSerialPort::close() Closes a serial port. This function has no effect if the serial port associated with the class is not currently open. */ void Win_QextSerialPort::close() { LOCK_MUTEX(); CloseHandle(Win_Handle); QIODevice::close(); UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::flush() Flushes all pending I/O to the serial port. This function has no effect if the serial port associated with the class is not currently open. */ void Win_QextSerialPort::flush() { LOCK_MUTEX(); if (isOpen()) { FlushFileBuffers(Win_Handle); } UNLOCK_MUTEX(); } /*! \fn qint64 Win_QextSerialPort::size() const This function will return the number of bytes waiting in the receive queue of the serial port. It is included primarily to provide a complete QIODevice interface, and will not record errors in the lastErr member (because it is const). This function is also not thread-safe - in multithreading situations, use Win_QextSerialPort::bytesAvailable() instead. */ qint64 Win_QextSerialPort::size() const { int availBytes; COMSTAT Win_ComStat; DWORD Win_ErrorMask=0; ClearCommError(Win_Handle, &Win_ErrorMask, &Win_ComStat); availBytes = Win_ComStat.cbInQue; return (qint64)availBytes; } /*! \fn qint64 Win_QextSerialPort::bytesAvailable() Returns the number of bytes waiting in the port's receive queue. This function will return 0 if the port is not currently open, or -1 on error. Error information can be retrieved by calling Win_QextSerialPort::getLastError(). */ qint64 Win_QextSerialPort::bytesAvailable() { LOCK_MUTEX(); if (isOpen()) { DWORD Errors; COMSTAT Status; bool success=ClearCommError(Win_Handle, &Errors, &Status); translateError(Errors); if (success) { lastErr=E_NO_ERROR; UNLOCK_MUTEX(); return Status.cbInQue + QIODevice::bytesAvailable(); } UNLOCK_MUTEX(); return (int)-1; } UNLOCK_MUTEX(); return 0; } /*! \fn void Win_QextSerialPort::translateError(ulong error) Translates a system-specific error code to a QextSerialPort error code. Used internally. */ void Win_QextSerialPort::translateError(ulong error) { if (error&CE_BREAK) { lastErr=E_BREAK_CONDITION; } else if (error&CE_FRAME) { lastErr=E_FRAMING_ERROR; } else if (error&CE_IOE) { lastErr=E_IO_ERROR; } else if (error&CE_MODE) { lastErr=E_INVALID_FD; } else if (error&CE_OVERRUN) { lastErr=E_BUFFER_OVERRUN; } else if (error&CE_RXPARITY) { lastErr=E_RECEIVE_PARITY_ERROR; } else if (error&CE_RXOVER) { lastErr=E_RECEIVE_OVERFLOW; } else if (error&CE_TXFULL) { lastErr=E_TRANSMIT_OVERFLOW; } } /*! \fn qint64 Win_QextSerialPort::readData(char *data, qint64 maxSize) Reads a block of data from the serial port. This function will read at most maxlen bytes from the serial port and place them in the buffer pointed to by data. Return value is the number of bytes actually read, or -1 on error. \warning before calling this function ensure that serial port associated with this class is currently open (use isOpen() function to check if port is open). */ qint64 Win_QextSerialPort::readData(char *data, qint64 maxSize) { LOCK_MUTEX(); int retVal=0; COMSTAT Win_ComStat; DWORD Win_BytesRead=0; DWORD Win_ErrorMask=0; ClearCommError(Win_Handle, &Win_ErrorMask, &Win_ComStat); if (Win_ComStat.cbInQue && (!ReadFile(Win_Handle, (void*)data, (DWORD)maxSize, &Win_BytesRead, NULL) || Win_BytesRead==0)) { lastErr=E_READ_FAILED; retVal=-1; } else { retVal=((int)Win_BytesRead); } UNLOCK_MUTEX(); return retVal; } /*! \fn qint64 Win_QextSerialPort::writeData(const char *data, qint64 maxSize) Writes a block of data to the serial port. This function will write len bytes from the buffer pointed to by data to the serial port. Return value is the number of bytes actually written, or -1 on error. \warning before calling this function ensure that serial port associated with this class is currently open (use isOpen() function to check if port is open). */ qint64 Win_QextSerialPort::writeData(const char *data, qint64 maxSize) { LOCK_MUTEX(); int retVal=0; DWORD Win_BytesWritten; if (!WriteFile(Win_Handle, (void*)data, (DWORD)maxSize, &Win_BytesWritten, NULL)) { lastErr=E_WRITE_FAILED; retVal=-1; } else { retVal=((int)Win_BytesWritten); } UNLOCK_MUTEX(); flush(); return retVal; } /*! \fn void Win_QextSerialPort::ungetChar(char c) This function is included to implement the full QIODevice interface, and currently has no purpose within this class. This function is meaningless on an unbuffered device and currently only prints a warning message to that effect. */ void Win_QextSerialPort::ungetChar(char c) { Q_UNUSED(c); /*meaningless on unbuffered sequential device - return error and print a warning*/ TTY_WARNING("Win_QextSerialPort: ungetChar() called on an unbuffered sequential device - operation is meaningless"); } /*! \fn void Win_QextSerialPort::setFlowControl(FlowType flow) Sets the flow control used by the port. Possible values of flow are: \verbatim FLOW_OFF No flow control FLOW_HARDWARE Hardware (RTS/CTS) flow control FLOW_XONXOFF Software (XON/XOFF) flow control \endverbatim */ void Win_QextSerialPort::setFlowControl(FlowType flow) { LOCK_MUTEX(); if (Settings.FlowControl!=flow) { Settings.FlowControl=flow; } if (isOpen()) { switch(flow) { /*no flow control*/ case FLOW_OFF: Win_CommConfig.fOutxCtsFlow=FALSE; Win_CommConfig.fRtsControl=RTS_CONTROL_DISABLE; Win_CommConfig.fInX=FALSE; Win_CommConfig.fOutX=FALSE; SetCommState(Win_Handle, &Win_CommConfig); break; /*software (XON/XOFF) flow control*/ case FLOW_XONXOFF: Win_CommConfig.fOutxCtsFlow=FALSE; Win_CommConfig.fRtsControl=RTS_CONTROL_DISABLE; Win_CommConfig.fInX=TRUE; Win_CommConfig.fOutX=TRUE; SetCommState(Win_Handle, &Win_CommConfig); break; case FLOW_HARDWARE: Win_CommConfig.fOutxCtsFlow=TRUE; Win_CommConfig.fRtsControl=RTS_CONTROL_HANDSHAKE; Win_CommConfig.fInX=FALSE; Win_CommConfig.fOutX=FALSE; SetCommState(Win_Handle, &Win_CommConfig); break; } } UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::setParity(ParityType parity) Sets the parity associated with the serial port. The possible values of parity are: \verbatim PAR_SPACE Space Parity PAR_MARK Mark Parity PAR_NONE No Parity PAR_EVEN Even Parity PAR_ODD Odd Parity \endverbatim */ void Win_QextSerialPort::setParity(ParityType parity) { LOCK_MUTEX(); if (Settings.Parity!=parity) { Settings.Parity=parity; } if (isOpen()) { Win_CommConfig.Parity=(unsigned char)parity; switch (parity) { /*space parity*/ case PAR_SPACE: if (Settings.DataBits==DATA_8) { TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: Space parity with 8 data bits is not supported by POSIX systems."); } Win_CommConfig.fParity=TRUE; break; /*mark parity - WINDOWS ONLY*/ case PAR_MARK: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: Mark parity is not supported by POSIX systems"); Win_CommConfig.fParity=TRUE; break; /*no parity*/ case PAR_NONE: Win_CommConfig.fParity=FALSE; break; /*even parity*/ case PAR_EVEN: Win_CommConfig.fParity=TRUE; break; /*odd parity*/ case PAR_ODD: Win_CommConfig.fParity=TRUE; break; } SetCommState(Win_Handle, &Win_CommConfig); } UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::setDataBits(DataBitsType dataBits) Sets the number of data bits used by the serial port. Possible values of dataBits are: \verbatim DATA_5 5 data bits DATA_6 6 data bits DATA_7 7 data bits DATA_8 8 data bits \endverbatim \note This function is subject to the following restrictions: \par 5 data bits cannot be used with 2 stop bits. \par 1.5 stop bits can only be used with 5 data bits. \par 8 data bits cannot be used with space parity on POSIX systems. */ void Win_QextSerialPort::setDataBits(DataBitsType dataBits) { LOCK_MUTEX(); if (Settings.DataBits!=dataBits) { if ((Settings.StopBits==STOP_2 && dataBits==DATA_5) || (Settings.StopBits==STOP_1_5 && dataBits!=DATA_5)) { } else { Settings.DataBits=dataBits; } } if (isOpen()) { switch(dataBits) { /*5 data bits*/ case DATA_5: if (Settings.StopBits==STOP_2) { TTY_WARNING("Win_QextSerialPort: 5 Data bits cannot be used with 2 stop bits."); } else { Win_CommConfig.ByteSize=5; SetCommState(Win_Handle, &Win_CommConfig); } break; /*6 data bits*/ case DATA_6: if (Settings.StopBits==STOP_1_5) { TTY_WARNING("Win_QextSerialPort: 6 Data bits cannot be used with 1.5 stop bits."); } else { Win_CommConfig.ByteSize=6; SetCommState(Win_Handle, &Win_CommConfig); } break; /*7 data bits*/ case DATA_7: if (Settings.StopBits==STOP_1_5) { TTY_WARNING("Win_QextSerialPort: 7 Data bits cannot be used with 1.5 stop bits."); } else { Win_CommConfig.ByteSize=7; SetCommState(Win_Handle, &Win_CommConfig); } break; /*8 data bits*/ case DATA_8: if (Settings.StopBits==STOP_1_5) { TTY_WARNING("Win_QextSerialPort: 8 Data bits cannot be used with 1.5 stop bits."); } else { Win_CommConfig.ByteSize=8; SetCommState(Win_Handle, &Win_CommConfig); } break; } } UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::setStopBits(StopBitsType stopBits) Sets the number of stop bits used by the serial port. Possible values of stopBits are: \verbatim STOP_1 1 stop bit STOP_1_5 1.5 stop bits STOP_2 2 stop bits \endverbatim \note This function is subject to the following restrictions: \par 2 stop bits cannot be used with 5 data bits. \par 1.5 stop bits cannot be used with 6 or more data bits. \par POSIX does not support 1.5 stop bits. */ void Win_QextSerialPort::setStopBits(StopBitsType stopBits) { LOCK_MUTEX(); if (Settings.StopBits!=stopBits) { if ((Settings.DataBits==DATA_5 && stopBits==STOP_2) || (stopBits==STOP_1_5 && Settings.DataBits!=DATA_5)) { } else { Settings.StopBits=stopBits; } } if (isOpen()) { switch (stopBits) { /*one stop bit*/ case STOP_1: Win_CommConfig.StopBits=ONESTOPBIT; SetCommState(Win_Handle, &Win_CommConfig); break; /*1.5 stop bits*/ case STOP_1_5: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: 1.5 stop bit operation is not supported by POSIX."); if (Settings.DataBits!=DATA_5) { TTY_WARNING("Win_QextSerialPort: 1.5 stop bits can only be used with 5 data bits"); } else { Win_CommConfig.StopBits=ONE5STOPBITS; SetCommState(Win_Handle, &Win_CommConfig); } break; /*two stop bits*/ case STOP_2: if (Settings.DataBits==DATA_5) { TTY_WARNING("Win_QextSerialPort: 2 stop bits cannot be used with 5 data bits"); } else { Win_CommConfig.StopBits=TWOSTOPBITS; SetCommState(Win_Handle, &Win_CommConfig); } break; } } UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::setBaudRate(BaudRateType baudRate) Sets the baud rate of the serial port. Note that not all rates are applicable on all platforms. The following table shows translations of the various baud rate constants on Windows(including NT/2000) and POSIX platforms. Speeds marked with an * are speeds that are usable on both Windows and POSIX. \verbatim RATE Windows Speed POSIX Speed ----------- ------------- ----------- BAUD50 110 50 BAUD75 110 75 *BAUD110 110 110 BAUD134 110 134.5 BAUD150 110 150 BAUD200 110 200 *BAUD300 300 300 *BAUD600 600 600 *BAUD1200 1200 1200 BAUD1800 1200 1800 *BAUD2400 2400 2400 *BAUD4800 4800 4800 *BAUD9600 9600 9600 BAUD14400 14400 9600 *BAUD19200 19200 19200 *BAUD38400 38400 38400 BAUD56000 56000 38400 *BAUD57600 57600 57600 BAUD76800 57600 76800 *BAUD115200 115200 115200 BAUD128000 128000 115200 BAUD256000 256000 115200 \endverbatim */ void Win_QextSerialPort::setBaudRate(BaudRateType baudRate) { LOCK_MUTEX(); if (Settings.BaudRate!=baudRate) { switch (baudRate) { case BAUD50: case BAUD75: case BAUD134: case BAUD150: case BAUD200: Settings.BaudRate=BAUD110; break; case BAUD1800: Settings.BaudRate=BAUD1200; break; case BAUD76800: Settings.BaudRate=BAUD57600; break; default: Settings.BaudRate=baudRate; break; } } if (isOpen()) { switch (baudRate) { /*50 baud*/ case BAUD50: TTY_WARNING("Win_QextSerialPort: Windows does not support 50 baud operation. Switching to 110 baud."); Win_CommConfig.BaudRate=CBR_110; break; /*75 baud*/ case BAUD75: TTY_WARNING("Win_QextSerialPort: Windows does not support 75 baud operation. Switching to 110 baud."); Win_CommConfig.BaudRate=CBR_110; break; /*110 baud*/ case BAUD110: Win_CommConfig.BaudRate=CBR_110; break; /*134.5 baud*/ case BAUD134: TTY_WARNING("Win_QextSerialPort: Windows does not support 134.5 baud operation. Switching to 110 baud."); Win_CommConfig.BaudRate=CBR_110; break; /*150 baud*/ case BAUD150: TTY_WARNING("Win_QextSerialPort: Windows does not support 150 baud operation. Switching to 110 baud."); Win_CommConfig.BaudRate=CBR_110; break; /*200 baud*/ case BAUD200: TTY_WARNING("Win_QextSerialPort: Windows does not support 200 baud operation. Switching to 110 baud."); Win_CommConfig.BaudRate=CBR_110; break; /*300 baud*/ case BAUD300: Win_CommConfig.BaudRate=CBR_300; break; /*600 baud*/ case BAUD600: Win_CommConfig.BaudRate=CBR_600; break; /*1200 baud*/ case BAUD1200: Win_CommConfig.BaudRate=CBR_1200; break; /*1800 baud*/ case BAUD1800: TTY_WARNING("Win_QextSerialPort: Windows does not support 1800 baud operation. Switching to 1200 baud."); Win_CommConfig.BaudRate=CBR_1200; break; /*2400 baud*/ case BAUD2400: Win_CommConfig.BaudRate=CBR_2400; break; /*4800 baud*/ case BAUD4800: Win_CommConfig.BaudRate=CBR_4800; break; /*9600 baud*/ case BAUD9600: Win_CommConfig.BaudRate=CBR_9600; break; /*14400 baud*/ case BAUD14400: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: POSIX does not support 14400 baud operation."); Win_CommConfig.BaudRate=CBR_14400; break; /*19200 baud*/ case BAUD19200: Win_CommConfig.BaudRate=CBR_19200; break; /*38400 baud*/ case BAUD38400: Win_CommConfig.BaudRate=CBR_38400; break; /*56000 baud*/ case BAUD56000: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: POSIX does not support 56000 baud operation."); Win_CommConfig.BaudRate=CBR_56000; break; /*57600 baud*/ case BAUD57600: Win_CommConfig.BaudRate=CBR_57600; break; /*76800 baud*/ case BAUD76800: TTY_WARNING("Win_QextSerialPort: Windows does not support 76800 baud operation. Switching to 57600 baud."); Win_CommConfig.BaudRate=CBR_57600; break; /*115200 baud*/ case BAUD115200: Win_CommConfig.BaudRate=CBR_115200; break; /*128000 baud*/ case BAUD128000: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: POSIX does not support 128000 baud operation."); Win_CommConfig.BaudRate=CBR_128000; break; /*256000 baud*/ case BAUD256000: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: POSIX does not support 256000 baud operation."); Win_CommConfig.BaudRate=CBR_256000; break; } SetCommState(Win_Handle, &Win_CommConfig); } UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::setDtr(bool set) Sets DTR line to the requested state (high by default). This function will have no effect if the port associated with the class is not currently open. */ void Win_QextSerialPort::setDtr(bool set) { LOCK_MUTEX(); if (isOpen()) { if (set) { EscapeCommFunction(Win_Handle, SETDTR); } else { EscapeCommFunction(Win_Handle, CLRDTR); } } UNLOCK_MUTEX(); } /*! \fn void Win_QextSerialPort::setRts(bool set) Sets RTS line to the requested state (high by default). This function will have no effect if the port associated with the class is not currently open. */ void Win_QextSerialPort::setRts(bool set) { LOCK_MUTEX(); if (isOpen()) { if (set) { EscapeCommFunction(Win_Handle, SETRTS); } else { EscapeCommFunction(Win_Handle, CLRRTS); } } UNLOCK_MUTEX(); } /*! \fn ulong Win_QextSerialPort::lineStatus(void) returns the line status as stored by the port function. This function will retrieve the states of the following lines: DCD, CTS, DSR, and RI. On POSIX systems, the following additional lines can be monitored: DTR, RTS, Secondary TXD, and Secondary RXD. The value returned is an unsigned long with specific bits indicating which lines are high. The following constants should be used to examine the states of individual lines: \verbatim Mask Line ------ ---- LS_CTS CTS LS_DSR DSR LS_DCD DCD LS_RI RI \endverbatim This function will return 0 if the port associated with the class is not currently open. */ ulong Win_QextSerialPort::lineStatus(void) { unsigned long Status=0, Temp=0; LOCK_MUTEX(); if (isOpen()) { GetCommModemStatus(Win_Handle, &Temp); if (Temp&MS_CTS_ON) { Status|=LS_CTS; } if (Temp&MS_DSR_ON) { Status|=LS_DSR; } if (Temp&MS_RING_ON) { Status|=LS_RI; } if (Temp&MS_RLSD_ON) { Status|=LS_DCD; } } UNLOCK_MUTEX(); return Status; } /*! \fn void Win_QextSerialPort::setTimeout(ulong sec, ulong millisec); Sets the read and write timeouts for the port to sec seconds and millisec milliseconds. */ void Win_QextSerialPort::setTimeout(ulong sec, ulong millisec) { LOCK_MUTEX(); Settings.Timeout_Sec=sec; Settings.Timeout_Millisec=millisec; if(isOpen()) { Win_CommTimeouts.ReadIntervalTimeout = sec*1000+millisec; Win_CommTimeouts.ReadTotalTimeoutMultiplier = sec*1000+millisec; Win_CommTimeouts.ReadTotalTimeoutConstant = 0; Win_CommTimeouts.WriteTotalTimeoutMultiplier = sec*1000+millisec; Win_CommTimeouts.WriteTotalTimeoutConstant = 0; SetCommTimeouts(Win_Handle, &Win_CommTimeouts); } UNLOCK_MUTEX(); } �����������������������������������������merkaartor-0.18.1/src/qextserialport/win_qextserialport.h�������������������������������������������0000664�0000000�0000000�00000003012�11770671653�0023752�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef _WIN_QEXTSERIALPORT_H_ #define _WIN_QEXTSERIALPORT_H_ #include "qextserialbase.h" /*if all warning messages are turned off, flag portability warnings to be turned off as well*/ #ifdef _TTY_NOWARN_ #define _TTY_NOWARN_PORT_ #endif #include <windows.h> class Win_QextSerialPort:public QextSerialBase { public: Win_QextSerialPort(); Win_QextSerialPort(Win_QextSerialPort const& s); Win_QextSerialPort(const QString & name); Win_QextSerialPort(const PortSettings& settings); Win_QextSerialPort(const QString & name, const PortSettings& settings); Win_QextSerialPort& operator=(const Win_QextSerialPort& s); virtual ~Win_QextSerialPort(); virtual bool open(OpenMode mode=0); virtual void close(); virtual void flush(); virtual qint64 size() const; virtual void ungetChar(char c); virtual void setFlowControl(FlowType); virtual void setParity(ParityType); virtual void setDataBits(DataBitsType); virtual void setStopBits(StopBitsType); virtual void setBaudRate(BaudRateType); virtual void setDtr(bool set=true); virtual void setRts(bool set=true); virtual ulong lineStatus(void); virtual qint64 bytesAvailable(); virtual void translateError(ulong); virtual void setTimeout(ulong, ulong); protected: HANDLE Win_Handle; //COMMCONFIG Win_CommConfig; DCB Win_CommConfig; COMMTIMEOUTS Win_CommTimeouts; virtual qint64 readData(char *data, qint64 maxSize); virtual qint64 writeData(const char *data, qint64 maxSize); }; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/src/src.pro�����������������������������������������������������������������������0000664�0000000�0000000�00000015405�11770671653�0016072�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# see http://merkaartor.be/wiki/merkaartor/Compiling #Static config include (Config.pri) #Custom config include(Custom.pri) include(../3rdparty/qtsingleapplication-2.6_1-opensource/src/qtsingleapplication.pri) include(../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.pri) #Qt Version QT_VERSION = $$[QT_VERSION] QT_VERSION = $$split(QT_VERSION, ".") QT_VER_MAJ = $$member(QT_VERSION, 0) QT_VER_MIN = $$member(QT_VERSION, 1) DEFINES += VERSION=$$VERSION DEFINES += REVISION=$$REVISION contains(PORTABLE,1): DEFINES += PORTABLE_BUILD TEMPLATE = app CONFIG += rtti stl exceptions #CONFIG -= exceptions QT += svg network xml core gui win32-msvc* { LIBS += -lzlib } else { LIBS += -lz } !contains(NODEBUG,1) { CONFIG += debug #OBJECTS_DIR += $$PWD/../tmp/$$(QMAKESPEC)/obj_debug } contains(NODEBUG,1) { CONFIG += release DEFINES += NDEBUG #OBJECTS_DIR += $$PWD/../tmp/$$(QMAKESPEC)/obj_release } contains(FRISIUS,1) { TARGET = frisius DEFINES += FRISIUS_BUILD DEFINES += PRODUCT=Frisius win32 { RC_FILE = $$PWD/../Icons/frisius-win32.rc } } else { TARGET = merkaartor DEFINES += PRODUCT=Merkaartor win32 { RC_FILE = $$PWD/../Icons/merkaartor-win32.rc } } MERKAARTOR_SRC_DIR = $$PWD COMMON_DIR = $$PWD/../binaries OUTPUT_DIR = $$PWD/../binaries/$$(QMAKESPEC) DESTDIR = $$OUTPUT_DIR/bin #UI_DIR += $$PWD/../tmp/$$(QMAKESPEC) #MOC_DIR += $$PWD/../tmp/$$(QMAKESPEC) #RCC_DIR += $$PWD/../tmp/$$(QMAKESPEC) INCLUDEPATH += $$PWD $$PWD/../include $$PWD/../interfaces $$MOC_DIR $$PWD/../include/builtin-ggl DEPENDPATH += $$PWD $$PWD/../interfaces unix { contains(USE_BUILTIN_BOOST,1) { INCLUDEPATH += $$PWD/../include/builtin-boost } } else { INCLUDEPATH += $$PWD/../include/builtin-boost } win32 { INCLUDEPATH += $$COMMON_DIR/include LIBS += -L$$COMMON_DIR/lib } macx { RC_FILE = $$PWD/../Icons/merkaartor.icns QMAKE_INFO_PLIST = $$PWD/../macos/Info.plist # This is where we get the the ports from INCLUDEPATH += /opt/local/include } contains(NVIDIA_HACK,1) { DEFINES += ENABLE_NVIDIA_HACK } #Include file(s) include(common/common.pri) include(Backend/Backend.pri) include(../interfaces/Interfaces.pri) include(PaintStyle/PaintStyle.pri) include(PaintStyle/PaintStyleEditor.pri) include(Features/Features.pri) include(Layers/Layers.pri) include(Preferences/Preferences.pri) include(Sync/Sync.pri) include(Commands/Commands.pri) include(Interactions/Interactions.pri) include (Docks/Docks.pri) include(QMapControl.pri) include(ImportExport/ImportExport.pri) include(Render/Render.pri) !symbian:include(qextserialport/qextserialport.pri) include(GPS/GPS.pri) include(Tools/Tools.pri) include(TagTemplate/TagTemplate.pri) include(NameFinder/NameFinder.pri) include(Utils/Utils.pri) # Header files HEADERS += \ MainWindow.h SOURCES += \ Main.cpp \ MainWindow.cpp # Forms FORMS += \ MainWindow.ui OTHER_FILES += ../CHANGELOG ../LICENSE macx { # Prefix: base instalation directory (fixed for the mac) PREFIX = /Applications LIBDIR = $${PREFIX}/lib${LIB_SUFFIX} DEFINES += PLUGINS_DIR=$${PREFIX}/merkaartor.app/Contents/plugins target.path = $${PREFIX} SHARE_DIR = $${PREFIX}/merkaartor.app/Contents/Resources TRANSDIR_MERKAARTOR = $${SHARE_DIR}/ } unix:!macx { # Prefix: base instalation directory isEmpty( PREFIX ) { PREFIX = /usr/local } isEmpty( LIBDIR ) { LIBDIR = $${PREFIX}/lib${LIB_SUFFIX} } DEFINES += PLUGINS_DIR=$${LIBDIR}/merkaartor/plugins target.path = $${PREFIX}/bin SHARE_DIR = $${PREFIX}/share/merkaartor isEmpty(TRANSDIR_MERKAARTOR) { TRANSDIR_MERKAARTOR = $${SHARE_DIR}/translations } } win32 { DEFINES += PLUGINS_DIR=plugins SHARE_DIR = share isEmpty(TRANSDIR_MERKAARTOR) { TRANSDIR_MERKAARTOR = translations } isEmpty(TRANSDIR_SYSTEM) { TRANSDIR_SYSTEM = translations } } DEFINES += SHARE_DIR=$${SHARE_DIR} INSTALLS += target win32-msvc* { DEFINES += _USE_MATH_DEFINES } TRANSLATIONS += \ ../translations/merkaartor_ar.ts \ ../translations/merkaartor_cs.ts \ ../translations/merkaartor_de.ts \ ../translations/merkaartor_es.ts \ ../translations/merkaartor_et.ts \ ../translations/merkaartor_fr.ts \ ../translations/merkaartor_hr.ts \ ../translations/merkaartor_hu.ts \ ../translations/merkaartor_it.ts \ ../translations/merkaartor_ja.ts \ ../translations/merkaartor_nl.ts \ ../translations/merkaartor_pl.ts \ ../translations/merkaartor_pt.ts \ ../translations/merkaartor_ru.ts \ ../translations/merkaartor_sk.ts \ ../translations/merkaartor_sv.ts \ ../translations/merkaartor_uk.ts \ ../translations/merkaartor_pt_BR.ts \ BINTRANSLATIONS += \ ../translations/merkaartor_ar.qm \ ../translations/merkaartor_cs.qm \ ../translations/merkaartor_de.qm \ ../translations/merkaartor_es.qm \ ../translations/merkaartor_et.qm \ ../translations/merkaartor_fr.qm \ ../translations/merkaartor_hr.qm \ ../translations/merkaartor_hu.qm \ ../translations/merkaartor_it.qm \ ../translations/merkaartor_ja.qm \ ../translations/merkaartor_nl.qm \ ../translations/merkaartor_pl.qm \ ../translations/merkaartor_pt.qm \ ../translations/merkaartor_ru.qm \ ../translations/merkaartor_sk.qm \ ../translations/merkaartor_sv.qm \ ../translations/merkaartor_uk.qm \ ../translations/merkaartor_pt_BR.qm \ translations.path = $${TRANSDIR_MERKAARTOR} translations.files = $${BINTRANSLATIONS} DEFINES += TRANSDIR_MERKAARTOR=$$translations.path INSTALLS += translations count(TRANSDIR_SYSTEM, 1) { DEFINES += TRANSDIR_SYSTEM=$${TRANSDIR_SYSTEM} } contains(MOBILE,1) { DEFINES += _MOBILE win32-wince* { DEFINES += _WINCE } } contains(GEOIMAGE, 1) { include(Docks/GeoImage.pri) } lists.path = $${SHARE_DIR} lists.files = \ $$PWD/../share/BookmarksList.xml \ $$PWD/../share/Projections.xml \ $$PWD/../share/WmsServersList.xml \ $$PWD/../share/TmsServersList.xml INSTALLS += lists win32 { win32-msvc*:LIBS += -lgdal_i win32-g++:LIBS += -lgdal } unix { LIBS += $$system(gdal-config --libs) QMAKE_CXXFLAGS += $$system(gdal-config --cflags) QMAKE_CFLAGS += $$system(gdal-config --cflags) } LIBS += -lproj contains (SPATIALITE, 1) { DEFINES += USE_SPATIALITE unix { CONFIG += link_pkgconfig PKGCONFIG += spatialite } win32 { LIBS += -lspatialite } } contains (PROTOBUF, 1) { DEFINES += USE_PROTOBUF } unix:!macx { desktop.path = $${PREFIX}/share/applications desktop.files = merkaartor.desktop desktopicons.path = $${PREFIX}/share/icons/hicolor/48x48/apps/ desktopicons.files = $$PWD/../Icons/48x48/merkaartor.png INSTALLS += desktop desktopicons } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/���������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0016506�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/README���������������������������������������������������������������0000664�0000000�0000000�00000002230�11770671653�0017363�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Merkaartor stores translations in the .ts files from Qt and the .mat files of templates. Translations can be done using linguist and hand written XML directly in SVN or using Launchpad (preferred way) at https://translations.launchpad.net/merkaartor/trunk The script in this directory allows to convert between the two XML file types and the standard gettext .po files. The templates and the main translations are separated in two different sets (name templates and merkaartor). These two should not be mixed. Synchronisation may be like following: - Update whole merkaartor svn using "svn update" in root directory - Remove old stuff: make clean - Download po-files from Launchpad and store them in this directory - Call conversion: make - Checkin modified templates (in ../Templates) and .ts files - Upload changed .po and .pot files to launchpad Conflict solving: - When no translations have been changed in SVN, then "all p(o)" may be choosen - When local changes have been done, conflicts should be solved one-by-one - "all up(s)tream" should only be choosen when you synchonised data directly before you started to make local translations. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/i18n.pl��������������������������������������������������������������0000664�0000000�0000000�00000036665�11770671653�0017642�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env perl -w use utf8; use encoding "utf8"; use Term::ReadKey; my $nocontext = 1; my $waswarn = 0; my $mail = "Merkaartor <merkaartor\@openstreetmap.org>"; my %pokeys = ( ); # don't copy these from files my %defkeys = ( "X-Generator" => "Merkaartor translation convert", "MIME-Version" => "1.0", "Content-Type" => "text/plain; charset=UTF-8", "Content-Transfer-Encoding" => "8bit", "Project-Id-Version" => "merkaartor_templates 1.0", "Report-Msgid-Bugs-To" => $mail, "POT-Creation-Date" => getdate(), "PO-Revision-Date" => getdate(), # "Last-Translator" => $mail, # "Language-Team" => $mail, # "X-Launchpad-Export-Date" => getdate(), ); main(); sub getdate { my @t=gmtime(); return sprintf("%04d-%02d-%02d %02d:%02d+0000", 1900+$t[5],$t[4]+1,$t[3],$t[2],$t[1]); } sub loadfiles($$@) { my $desc; my $all; my ($lang,$keys,@files) = @_; foreach my $file (@files) { die "Could not open file $file." if(!open FILE,"<:utf8",$file); my $linenum = 0; if($file =~ /\.mat$/) { while(my $line = <FILE>) { ++$linenum; chomp $line; if($line =~ /^ *<description +locale="([A-Za-z_]+)" *>(.*?)<\/description> *$/) { my $val = maketxt($2); my $l = $1; $desc{$l} = $val; $desc{_file} = "$file:$linenum" if($l eq "en"); } elsif($line =~ /description/) { die "Can't handle line $linenum in $file: $line"; } elsif(%desc) { my $en = $desc{"en"}; die "No english string found in previous block line $linenum in $file: $line" if(!$en); delete $desc{"en"}; foreach my $l (reverse sort keys %desc) { copystring(\%all, $en, $l, $desc{$l}, "line $linenum in $file", undef, 0); ++$lang->{$l} if !($l =~ /^_/); } %desc = (); } } } elsif($file =~ /[-_](.._..)\.po$/ || $file =~ /^(?:.*\/)?(.._..)\.po$/ || $file =~ /[-_](...?)\.po$/ || $file =~ /^(?:.*\/)?(..)\.po$/) { my $l = $1; ++$lang->{$l}; my %postate = (last => "", type => ""); my $linenum = 0; while(<FILE>) { ++$linenum; my $fn = "$file:$linenum"; chomp; if($_ =~ /^#/ || !$_) { checkpo(\%postate, \%all, $l, "line $linenum in $file", $keys, 1); $postate{fuzzy} = 1 if ($_ =~ /fuzzy/); } elsif($_ =~ /^"(.*)"$/) {$postate{last} .= $1;} elsif($_ =~ /^(msg.+) "(.*)"$/) { my ($n, $d) = ($1, $2); my $new = !${postate}{fuzzy} && (($n eq "msgid" && $postate{type} ne "msgctxt") || ($n eq "msgctxt")); checkpo(\%postate, \%all, $l, "line $linenum in $file", $keys, $new); $postate{last} = $d; $postate{type} = $n; $postate{src} = $fn if $new; } else { die "Strange line $linenum in $file: $_."; } } checkpo(\%postate, \%all, $l, "line $linenum in $file", $keys, 1); } elsif($file =~ /\.ts$/) { my $linenum = 0; my $l; my $ctx; my $loc; my $issource; my $istrans; my $source; my @trans; my $fuzzy; my $numerus; while(<FILE>) { s/\r//g; ++$linenum; if(/<name>(.*)<\/name>/) { $ctx = $1; } elsif(/<location filename="(.*?)" line="(.*?)"\/>/) { $loc = "$1:$2"; } elsif(/context>/){$ctx = undef;} elsif(/message( numerus="yes")?>/) { my $n = $1; die "No language found in file $file." if !$l; if($source) { $source = maketxt($source); if(!$fuzzy) { my $txt = "line $linenum in $file"; $txt .= ", $loc" if($loc); for($i = 0; $i <= $#trans; ++$i) { copystring(\%all, $source, $i ? "$l.$i" : $l, maketxt($trans[$i]), $txt, $ctx, 0); } if(defined($numerus)) { copystring(\%all, $source, "en.1", $source, $txt, $ctx, 0); } } copystring(\%all, $source, "_file", $loc, $txt, $ctx, 0) if $loc; copystring(\%all, $source, "_src.$l", "$file:$linenum", $txt, $ctx, 0); } @trans = undef; $loc = $issource = $istrans = $source = $numerus = $fuzzy = undef; $numerus = 0 if $n; } elsif(/<TS .* language="(.*)">/) { $l = getlang($1); ++$lang->{$l}; } elsif(/<TS version.*>/) {} elsif(/<\?xml/ || /<!DOCTYPE/ || /<\/TS>/ || /<defaultcodec>/){} # ignore elsif(/comment>(.*)<\/comment>/){} # ignore # source elsif(/<source>(.*)<\/source>/){$source = $1;} elsif(/<source>(.*)/){$source = "$1\n"; $issource = 1;} elsif($issource && /(.*)<\/source>/){$source .= $1; $issource = undef;} elsif($issource){$source .= $_;} # translation elsif(defined($numerus) && /translation(?: type="(unfinished|obsolete)")?>/) {$fuzzy=$1;} elsif(defined($numerus) && /<numerusform>(.*)<\/numerusform>/){$trans[$numerus++] = $1;} elsif(defined($numerus) && /<numerusform>(.*)/){$trans[$numerus] = "$1\n"; $istrans = 1;} elsif(defined($numerus) && $istrans && /(.*)<\/numerusform>/){$trans[$numerus++] .= $1; $istrans = undef;} elsif(/<translation(?: type="(unfinished|obsolete)")?>(.*)<\/translation>/){$trans[0] = $2;$fuzzy=$1;} elsif(/<translation(?: type="(unfinished|obsolete)")?>(.*)/){$trans[0] = "$2\n"; $istrans = 1;$fuzzy=$1;} elsif($istrans && /(.*)<\/translation>/){$trans[0] .= $1; $istrans = undef;} elsif($istrans){$trans[$numerus ? $numerus : 0] .= $_;} else { die "Strange line $linenum in $file: $_."; } } } else { die "File format not supported for file $file."; } close(FILE); } return %all; } my $alwayspo = 0; my $alwaysup = 0; my $noask = 0; my $conflicts; sub copystring($$$$$$$) { my ($data, $en, $l, $str, $txt, $context, $ispo) = @_; $en = "___${context}___$en" if $context && !$nocontext; if(exists($data->{$en}{$l}) && $data->{$en}{$l} ne $str) { return if !$str; if($l =~ /^_/) { $data->{$en}{$l} .= ";$str" if !($data->{$en}{$l} =~ /$str/); } elsif(!$data->{$en}{$l}) { $data->{$en}{$l} = $str; } else { my $f = $data->{$en}{_file} || ""; $f = ($f ? "$f;".$data->{$en}{"_src.$l"} : $data->{$en}{"_src.$l"}) if $data->{$en}{"_src.$l"}; my $isotherpo = ($f =~ /\.po\:/); my $pomode = ($ispo && !$isotherpo) || (!$ispo && $isotherpo); my $mis = "String mismatch for '$en' **$str** ($txt) != **$data->{$en}{$l}** ($f)\n"; my $replace = 0; if(($conflicts{$l}{$str} || "") eq $data->{$en}{$l}) {} elsif($pomode && $alwaysup) { $replace=$isotherpo; } elsif($pomode && $alwayspo) { $replace=$ispo; } elsif($noask) { print $mis; ++$waswarn; } else { ReadMode 4; # Turn off controls keys my $arg = "(l)eft, (r)ight"; $arg .= ", (p)o, (u)pstream[ts/mat], all p(o), all up(s)tream" if $pomode; $arg .= ", e(x)it: "; print "$mis$arg"; while((my $c = getc())) { if($c eq "l") { $replace=1; } elsif($c eq "r") {} elsif($c eq "p" && $pomode) { $replace=$ispo; } elsif($c eq "u" && $pomode) { $replace=$isotherpo; } elsif($c eq "o" && $pomode) { $alwayspo = 1; $replace=$ispo; } elsif($c eq "s" && $pomode) { $alwaysup = 1; $replace=$isotherpo; } elsif($c eq "x") { $noask = 1; ++$waswarn; } else { print "\n$arg"; next; } last; } print("\n"); ReadMode 0; # Turn on controls keys } if(!$noask) { if($replace) { $data->{$en}{$l} = $str; $conflicts{$l}{$data->{$en}{$l}} = $str; } else { $conflicts{$l}{$str} = $data->{$en}{$l}; } } } } else { $data->{$en}{$l} = $str; } } sub checkpo($$$$$$) { my ($postate, $data, $l, $txt, $keys, $new) = @_; if($postate->{type} eq "msgid") {$postate->{msgid} = $postate->{last};} elsif($postate->{type} eq "msgid_plural") {$postate->{msgid_1} = $postate->{last};} elsif($postate->{type} =~ /^msgstr(\[0\])?$/) {$postate->{msgstr} = $postate->{last};} elsif($postate->{type} =~ /^msgstr\[(.+)\]$/) {$postate->{"msgstr_$1"} = $postate->{last};} elsif($postate->{type} eq "msgctxt") {$postate->{context} = $postate->{last};} elsif($postate->{type}) { die "Strange type $postate->{type} found\n" } if($new) { if((!$postate->{fuzzy}) && $postate->{msgstr} && $postate->{msgid}) { copystring($data, $postate->{msgid}, $l, $postate->{msgstr},$txt,$postate->{context}, 1); for($i = 1; exists($postate->{"msgstr_$i"}); ++$i) { copystring($data, $postate->{msgid}, "$l.$i", $postate->{"msgstr_$i"},$txt,$postate->{context}, 1); } if($postate->{msgid_1}) { copystring($data, $postate->{msgid}, "en.1", $postate->{msgid_1},$txt,$postate->{context}, 1); } copystring($data, $postate->{msgid}, "_src.$l", $postate->{src},$txt,$postate->{context}, 1); } elsif($postate->{msgstr} && !$postate->{msgid}) { my %k = ($postate->{msgstr} =~ /(.+?): +(.+?)\\n/g); # take the first one! for $a (sort keys %k) { $keys->{$l}{$a} = $k{$a} if !$keys->{$l}{$a}; } } foreach my $k (keys %{$postate}) { delete $postate->{$k}; } $postate->{type} = $postate->{last} = ""; } } sub createpos($$@) { my ($data, $keys, @files) = @_; foreach my $file (@files) { my $head; my $la; if($file =~ /[-_](.._..)\.po$/ || $file =~ /^(?:.*\/)?(.._..)\.po$/ || $file =~ /[-_](...?)\.po$/ || $file =~ /^(?:.*\/)?(..)\.po$/) { $la = $1; $head = "# translation into language $la file $file\n"; } elsif($file =~ /\.pot$/) { $la = "en"; $head = "# template file $file\n"; } else { die "Language for file $file unknown."; } die "Could not open outfile $file\n" if !open FILE,">:utf8",$file; print FILE "${head}msgid \"\"\nmsgstr \"\"\n"; my %k; foreach my $k (keys %{$keys->{$la}}) { $k{$k} = $keys->{$la}{$k}; } foreach my $k (keys %defkeys) { $k{$k} = $defkeys{$k}; } foreach my $k (sort keys %k) { print FILE "\"$k: $k{$k}\\n\"\n"; } print FILE "\n"; foreach my $en (sort keys %{$data}) { my $ctx; my $ennc = $en; $ctx = $1 if $ennc =~ s/^___(.*)___//; my $str = ($la ne "en" && exists($data->{$en}{$la})) ? $data->{$en}{$la} : ""; if($data->{$en}{_file}) { foreach my $f (split ";",$data->{$en}{_file}) { print FILE "#: $f\n" } } else { next; # print FILE "#: unknown:0\n" } if($ennc =~ /\%[0-9n]/) { print FILE "#, c-format, qt-format\n"; } elsif($ennc =~ /\%[ds]/) { print FILE "#, c-format\n"; } print FILE "msgctxt \"$ctx\"\n" if $ctx; print FILE "msgid \"$ennc\"\n"; print FILE "msgid_plural \"$data->{$en}{\"en.1\"}\"\n" if $data->{$en}{"en.1"}; if($la ne "en" && (exists($data->{$en}{"$la.1"}) || $data->{$en}{"en.1"})) { print FILE "msgstr[0] \"$str\"\n"; for($i = 1; exists($data->{$en}{"$la.$i"}); ++$i) { print FILE "msgstr[$i] \"$data->{$en}{\"$la.$i\"}\"\n"; } } else { print FILE "msgstr \"$str\"\n"; } print FILE "\n"; } close FILE; } } sub maketxt($) { my ($str) = @_; $str =~ s/>/>/g; $str =~ s/</</g; $str =~ s/"/\\"/g; $str =~ s/"/\\"/g; $str =~ s/'/'/g; $str =~ s/&/&/g; $str =~ s/\n/\\n/g; return $str; } sub makexml($) { my ($str) = @_; $str =~ s/&/&/g; $str =~ s/</</g; $str =~ s/>/>/g; $str =~ s/\\"/"/g; $str =~ s/'/'/g; $str =~ s/\\n/\n/g; return $str; } sub getlang($) { my ($l) = @_; if($l eq "ru_RU") {$l = "ru";} elsif($l eq "pl_PL") {$l = "pl";} return $l; } sub replacemat($$$$) { my ($start,$en,$end,$data) = @_; $en = maketxt($en); my $repl = "$start<desCRIPtion locale=\"en\" >".makexml($en)."</desCRIPtion>$end"; foreach my $l (sort keys %{$data->{$en}}) { next if $l =~ /[._]/; $repl .= "$start<desCRIPtion locale=\"$l\" >".makexml($data->{$en}{$l})."</desCRIPtion>$end"; } return $repl; } sub createmat($@) { my ($data, @files) = @_; foreach my $file (@files) { my $x = $/; undef $/; die "Could not open $file\n" if !open FILE,"<:utf8",$file; my $content = <FILE>; close FILE; foreach my $en (keys %{$data}) { my $ostr = qr/( *)<description +locale="en" *>(.*)<\/description>([\r\n]+)(?: *<description .*\/description>[\r\n]+)*/; $content =~ s/$ostr/replacemat($1,$2,$3,$data)/eg; } if($content =~ /(<description .*)/) { die "Could not handle string $1."; } $content =~ s/desCRIPtion/description/g; die "Could not open output $file\n" if !open FILE,">:utf8",$file; print FILE $content; close FILE; } } sub makenumerus($$$$) { my ($data, $first, $last,$l) = @_; my $repl = $first.makexml($data->{$l}).$last; for($i = 1; exists($data->{"$l.$i"}); ++$i) { $repl .= "\n".$first.makexml($data->{"$l.$i"}).$last; } return $repl; } sub convert_ts_message($$$$) { my ($content,$data,$l,$ctx) = @_; $content =~ /<source>(.*)<\/source>/s; my $source = ($ctx ? "___${ctx}___" : "") .maketxt($1); if(exists($data->{$source}{$l})) { if($content =~ /numerus="yes"/) { if(!($content =~ s/( +<numerusform>).*(<\/numerusform>)/makenumerus($data->{$source},$1,$2,$l)/se)) { die sprintf "Could not replace string '%.10s'",$source; } } else { my $repl = makexml($data->{$source}{$l}); if(!($content =~ s/(<translation).*(<\/translation>)/$1>$repl$2/s)) { die sprintf "Could not replace string '%.10s'",$source; } } } return $content; } sub convert_ts_context($$$) { my ($content,$data,$l) = @_; my $ctx; $ctx = $1 if(!$nocontext && $content =~ /<name>(.*)<\/name>/); $content =~ s/(<message.*?>.*?<\/message>)/convert_ts_message($1,$data,$l,$ctx)/seg; return $content; } sub createts($@) { my ($data, @files) = @_; foreach my $file (@files) { my $x = $/; undef $/; die "Could not open $file\n" if !open FILE,"<:utf8",$file; my $content = <FILE>; close FILE; if(!($content =~ /<TS .* language="(.*)">/)) { die "Could not find language for $file."; } my $l = getlang($1); $content =~ s/(<context>.*?<\/context>)/convert_ts_context($1,$data,$l)/seg; die "Could not open output $file\n" if !open FILE,">:utf8",$file; print FILE $content; close FILE; } } sub main { my %lang; my @mat; my @po; my @ts; my $basename = shift @ARGV; foreach my $f (@ARGV) { if($f =~ /\*/) { printf "Skipping $f\n"; } elsif($f =~ /\.mat$/) { push(@mat, $f); } elsif($f =~ /\.po$/) { push(@po, $f); } elsif($f =~ /\.ts$/) { push(@ts, $f); } else { die "unknown file extension."; } } my %data = loadfiles(\%lang,\%pokeys, @mat,@ts,@po); my @cpo; foreach my $la (sort keys %lang) { push(@cpo, "${basename}_$la.po"); } push(@cpo, "$basename.pot"); die "There have been warning. No output.\n" if $waswarn; createpos(\%data, \%pokeys, @cpo); createmat(\%data, @mat) if @mat; createts(\%data, @ts) if @ts; } ���������������������������������������������������������������������������merkaartor-0.18.1/translations/makefile�������������������������������������������������������������0000664�0000000�0000000�00000001241�11770671653�0020204�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������LUPDATE = lupdate LRELEASE = lrelease TEMPLATES = ../Templates/*.mat TEMPLATES_PO = templates_*.po TEMPLATES_LAUNCHPAD_PO = templates-*.po templates/*.po MAIN = *.ts MAIN_PO = merkaartor_*.po MAIN_LAUNCHPAD_PO = merkaartor-*.po merkaartor/*.po CALL = perl i18n.pl TARCALL = perl maketar.pl CD = cd update: updatets template main release tar: ${TARCALL} *_*.po *.pot template: ${CALL} templates ${TEMPLATES} ${TEMPLATES_LAUNCHPAD_PO} ${TEMPLATES_PO} main: ${CALL} merkaartor ${MAIN} ${MAIN_LAUNCHPAD_PO} ${MAIN_PO} updatets: ${CD} .. && ${LUPDATE} -noobsolete Merkaartor.pro release: ${CD} .. && ${LRELEASE} src/src.pro clean: @-${RM} *.po *.pot *.qm *.tar.gz ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/maketar.pl�����������������������������������������������������������0000664�0000000�0000000�00000002355�11770671653�0020474�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env perl -w use utf8; use encoding "utf8"; use File::Copy; my %files = map {$_ => undef} ("merkaartor", "templates"); my $templ = "(".join("|",keys %files).")"; foreach my $f (@ARGV) { if($f =~ /\*/) { printf "Skipping $f\n"; } elsif($f =~ /${templ}_(.*)\.po$/) { $files{$1}{$2} = $f; } elsif($f =~ /${templ}\.pot$/) { $files{$1}{pot} = $f; } elsif($f =~ /^${templ}-/) { warn "Skip $f"; } else { die "unknown file name $f."; } } mkdir "upl"; foreach my $t (keys %files) { mkdir "upl/$t" if $files{$t}; } my $temp = "templates"; if($files{$temp}) { copy($files{$temp}{"pot"}, "upl/$temp/$temp.pot"); foreach my $t (keys %{$files{$temp}}) { next if $t eq "pot"; copy($files{$temp}{$t}, "upl/$temp/$t.po"); } } $temp = "merkaartor"; if($files{$temp}) { copy($files{$temp}{"pot"}, "upl/$temp/$temp.pot"); foreach my $t (keys %{$files{$temp}}) { next if $t eq "pot"; copy($files{$temp}{$t}, "upl/$temp/$t.po") if -f "${temp}_$t.ts"; } } chdir "upl"; my @t=gmtime(); my $date=sprintf("%04d-%02d-%02d_%02d_%02d", 1900+$t[5],$t[4]+1,$t[3],$t[2],$t[1]); system "tar -czf ../${date}_launchpad_upload.tgz *"; chdir ".."; foreach my $t (keys %files) { unlink glob("upl/$t/*"); rmdir "upl/$t"; } rmdir "upl" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_ar.ts�����������������������������������������������������0000664�0000000�0000000�00001115255�11770671653�0021721�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="ar"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>للمزيد عن Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>سجل التغييرات</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>مُوافق</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>الوصف</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>الإختصار</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>إ&ستيراد</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&صدّر</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&غيابي</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&موافق</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>إل&غاء</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>محرّر الإختصار</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>غير قادر على فتح الملف</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>لم أستطع فتح %1</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>غير معنون</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>كلّ الملفات (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>غير قادر على فتح ملف الحفظ</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>إستحالة فتح %1 للكتابة.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>بدون وصف</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>القيادة على الطرف اليمين للطريق</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>المسافة بين طريقين</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>القيادة على الطرف اليمين للطريق</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>تراجع</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>حدّد مركز الخريطة</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>حدّد مركز و كبر/صغر الخريطة</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>تراجع</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>نظِّف</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>التكبير</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>أضف الطريق %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>أضف نقطة ممر %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>أضف العلاقة %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>حدّث نقطة الممر %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>حدّث العلاقة %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>حدّث الطريق %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>أحذف نقطة الممر %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>أحذف الطريق %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>أحذف العلاقة %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>خطأ عندتحميل المطلب</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>الرجاء فحص إسمك و كلمتك للمرور في لائحة التفضيلات</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>لقد حصل خطأ عند تحميل هذا المطلب (%1) تبليغ الخادم هو '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> رسالة الــAPI هي '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>إفتح حزمة تغييرات</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>أغلق حزمة التغييرات</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>خطأ عندتحميل المطلب</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>الرجاء فحص إسمك و كلمتك للمرور في لائحة التفضيلات</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>لقد حصل خطأ عند تحميل هذا المطلب (%1) تبليغ الخادم هو '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> رسالة الــAPI هي '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>إفتح حزمة تغييرات</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>أغلق حزمة التغييرات</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>أضف العلاقة %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>أضف الطريق %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>أضف نقطة ممر %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>حدّث العلاقة %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>حدّث الطريق %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>حدّث نقطة الممر %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>أحذف نقطة الممر %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>أحذف الطريق %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>أحذف العلاقة %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>غير معنون</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>طبقة الخرطوش</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>حمّلت الطبقة</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>الصور الخلفية</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>أنزل</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>الموقع</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>إشارة مرجعية</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>الرؤية الحالية</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>من الخريطة في الأسفل (خريطة مزودة من المشروع OpenStreetMap )</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>نزّل أيضاً ألأثرات الخام لجهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>حلّل كلّ العلاقات</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>فشل عملية التنزيل</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>خطأ</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>لم أنزل الكافي</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>جاري التنزيل من OSM (جاري الإتصال)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> رسالة الــAPI هي '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>فشل إسم المستخدم/كلمة المرور</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>تناقضات غير محلولة</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>الرجاء حلّ التناقضات الموجودة أولاً</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>جاري تنزيل نقاط الأثر %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>تنزيل %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>نزّل الـ %1 غير المحلول من %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>تناقض من %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>تمّ إكتشاف تناقد</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>إكتشاف طرقات/علاقات فارغة</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>إحتمال أن تكون الطرقات/العلاقات خطأ هل تريد وضع علامة عليهم للمحو ؟</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>أمحي الميزة الفارغة %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>جاري تنزيل %1,%2 (نسبة التكبير/التصغير %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>جاري التنزيل...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>أغلِق</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>التكبير</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>صدِّر</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>تريد تصدير ماذا ؟</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>كلّ الظاهر ( أي غير المخبئ)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>منفذ عرض</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>المنتقى</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>الميزات</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>حدّد مركز الخريطة</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>حدّد مركز و كبر/صغر الخريطة</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>العلاقات</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>الطرقات</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>الكلّ</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>إضافة إلى الاختيار</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>الميزات</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>مربع الحوار</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>الإسم</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>أغلِق</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>الإسم :</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>تطبيق</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>أضِف</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>أحذف</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>صور جغرافية</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>أحذف الصور</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>أنسخ إسم الملف إلى الحافظة</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>حمّل صور جغرافية معلّمة</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>إختر الطبقة اللتي تنتمي إليها الصورة:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>جاري تحميل الصور...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>إجهاض عملية التحميل</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>ضع الصور غالباً في:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>آخر الممر</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>بداية الممر</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>س.س.د.د.ث.ث.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ث.ث. 'ثواني'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'دقائق و ' ss 'ثواني'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'ساعات,' mm 'دقائق و ' ss 'ثواني'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>الصورة غير الصحيحة ؟</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>لا ملف كهذا</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>حدّد مركز الخريطة</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>غير قادر للعثور على الصورة "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>خطأ عند محاولة فتح "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>لا نقاط أثرات</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>لم أجد نقاط أثرات للصورة "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>خطء عند تحميل معطيات الــ EXIF من "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>خطء عند محاولة فتح "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>إختر الصورة التالية</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>إختر الصورة السابقة</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation type="unfinished"></translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>بنية الإحداثيات غير صحيحة</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>الإحداثيات يجب أن تكون: خطّ الطول اليسار، خطّ العرض الأسفل، خطّ العرض اليمين، خطّ العرض الأعلى</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>يجب أن تكون الإحداثيات على الشكل التالي: '<مركز خط العرض>, <مركز خط الطول>, <إمتداد خط العرض>, <إمتداد خط الطول>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>إذهب إلى</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>إشارة مرجعية</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>خ. الطول الأدنى، خ. العرض الأدنى، خ. الطول الأقصى، خ. العرض الأقصى</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>خ. العرض الوسط، خ. الطول الوسط، إمتداد خ. العرض، إمتداد خ. الطول</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>المعلومات</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>إبحث</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>لا شيء</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>التكبير</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>أغلِق</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>مكيّف الــ WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>مكيف الــTMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>الخريطة - بدون</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>الخريطة - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>قياس البلاطة</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>خط الطول</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>خط العرض</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>إسقاط غير صالح</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>الملف غير صحيح</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>لم أستطع فتح %1</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>غير معنون</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>كلّ الملفات (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>إستحالة فتح %1 للكتابة.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>مربع الحوار</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>لا شيء</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>المعلومات</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>القياس</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>الميزات</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>أعرض الكلّ</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>إخفاء الكلّ</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>الطبقات</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>الكلّ</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>الأثرات</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>أغلِق</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>ظاهر</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>فقط للقراءة</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>منحفض</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>عالي</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>غير شفاف</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>اللاشفافية</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>الشكل</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>لا تسألني مرة أخرى عن ذلك</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>أنشئ المنطقة %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>المنطقة: أنشئ الطريق %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>المنطقة: أنهي الطريق %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>المنطقة: أضف العقدة %1 إلى الطريق %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>أضف العقدة إلى الطريق %1 المزدوجة الممرات</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>أنشئ عقدة في الطريق: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>إنشاء مستديرة %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>أنشئ العقدة %1 في الطريق %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>%1إنشاء الطريق :</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>أنشئ العقدة : %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>أضف العقدة %1 إلى الطريق %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>وجدتُ عقد على نفس الموقع.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>أدمج العقد إلى %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>أحذف الميزة %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>البلاطة %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>الخصائص...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>منحفض</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>عالي</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>غير شفاف</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPSجهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>الطبقات</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>الخصوصية</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>العقدة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>العلاقة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>الأدوات/العدة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>الحافظة غير صالحة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>تصميم تبادل الملفات (*.gpx) لجهاز تحديد المواقع العالمي </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>تصميم المفات OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>مستند KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ملف شكل ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>مستند Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>الطريق</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>ألغي</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>تغييرات غير محفوطة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>تحذيرمشدد عن حقوق المؤلف</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>ألصق الطرقات</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>إفسخ الطرقات</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>أفصل الطرقات</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>إصطف العقد</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>أفصل العقدة %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>أضف العضو إلى العلاقة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>أحذف العضو من العلاقة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>التنسيقات المتوفّرة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>أضف إشارة مرجعية</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>حدد إسم الإشارة المرجعية</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>تحذير: إسم الإشارة المرجعية موجود مسبقاً</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>أدخل واحداً جديداً، حافظ على الحالي للكتابة عليه أو ألغي.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>إزالة الإشارة المرجعية</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>إختر الإشارة المرجعية لحذفها.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&مساعدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>أن&شئ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&طريق</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&حرر</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>ا&عرض</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>إ&شارات مرجعية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>عيّن الإ&سقاة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>أعرض &أسهم الإتجاه</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>عيّن غموض ال&مساحة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&ملف</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&صدّر</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>الم&فتوحة حديثاً</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>الم&صدّر حديثاً</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>ال&عدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>ال&زيّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&العقدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&النافذة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>ال&خصوصية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>ال&طبقات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&نطام العالمي لتحديد الموقع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>ال&علاقة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>إ&نهاء</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&حول</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>إ&فتح</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>أنشئ مستند جديد و إستورد ملفاً</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>كبّر/صغّر ال&كلّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>كبّر ال&نافذة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>كبّر النافذة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&صغّر الرؤية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>&كبّر الرؤية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>كبّر الرؤية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>صلة منحنية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>ت&راجع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&كرّر</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>ح&رّك</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>إ&ستيراد</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>إستورد ملفاً إلى داخل المستند الحالي</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&نزّل</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>نزّل معطيات الخريطة لمنطقة أخرى</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>وصلة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>أنتج وصلة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>إ&نتقي</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&حمّل</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>حمّل التغييرات إلى المخدم</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>إ&زالة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>أنشئ طريق جديدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>أنشئ عقدة جديدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>أ&عكس</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>أعكس إتجاه الطريق</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&إذهب إلى...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&طريق ذو إتجاهين</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>أنشئ مسديرة سير</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&جديد</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>انشيء مستند جديد</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>إ&قطع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>إ&جمع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>أدمج الطرقات الموصولة في طريق واحدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&أفصلها عن بعض البعض</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>أفصل</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>أفصل الطرقات الموصولة عن بعضها البعض</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>&علاقة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>أنشئ العلاقة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&المساحة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>إنشئ مساحة جديدة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&حرّر...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&إحفظ...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&حمّل...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&طريق منحنية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>الت&فضيلات...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>ال&كلّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>صدّر كلّ الطبقات الظاهرة إلى ملف</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>إ&بحث...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>ابحث</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>إبحث و إختر بنود</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&نافذة الرؤية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>أ&ضف...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>أ&حذف...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>إ&دمج</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>دمج العقد</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>أدمج العقد المختارة (ستبقى العقد المحددة أولاً)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>إحفظ &كــ ...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>إحف&ظ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>إحفظ في ملف</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>نزّل المزيد</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>نزّل المزيد من المعطيات للمنطقة الحالية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&خصائص</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>ال&معلومات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>إ&صطف</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>إصطف العقد</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>صفّ العقد المحددة في خط جالس. الأثنتين المختارة أولاً تعطيك الخط.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>أعرض المساحات ال&منزلة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>إ&نسخ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>أنسخ الخصائص و الأوسمة المختارة إلى الحافظة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>المختارة...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>المقياس</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>ألصق</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (ثناءي)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>أودع الخاصية في طبقة العمل</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>أقلب شريط الأدوات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>إطهار/إخفاء شريط الأدوات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>إخفاء الكلّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>أعرض الكلّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&طبقة الصورة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&إبدأ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>إبدء تشغيل جهاز الــGPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&كرّر التشغيل</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&نطام العالمي لتحديد الموقع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>إخفاء/عرض حاضن جهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>&قفّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>قِفّ تشغيل جهاز الــGPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&حدّد المركز على جهاز النظام العالمي لتحديد الموقع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>أعرض &قطع الأثر</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>أعرض ال&مقياس</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>أعر&ض العلاقات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>أعرض خلفية الطرقات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>أعرض حدود الطرقات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>سجِّل</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>توقف</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>أوقف جهاز تحديد المواقع</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>صورة &جغرافية</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&محرر مختصر المفاتيح...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>إ&دمج...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&أضف عضواً</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&أحذف العضو</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>قطّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&دائماً</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&فكّ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>أفصل العقدة من الطريق</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>أفصل عقدة من الطريق</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&عمل بدون إتصال</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>رسم</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>أ&زياء</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>أغلِق</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>العلاقة المغييرة %1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>أحذف العضو '%1' على %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>تناقضات غير محلولة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>الرجاء حلّ التناقضات الموجودة أولاً</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>الأثر %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>ملف غير صالح</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>لم أستطع فتح %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>حمّل OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>خطأ عند التنزيل</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>لم أتمكن من تنزيل الخريطة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>أضف أرقام شارع</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>إحفظ زيّ الخريطة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>حمّل زيّ الخريطة</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>إحفظ المستند Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>غير معنون</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>ملفات مستند (*.mdc) Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>كلّ الملفات (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>غير قادر على فتح ملف الحفظ</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>إستحالة فتح %1 للكتابة.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>الملف غير صحيح</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>ليس %1 مستند صالح من النوع Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>صدّر OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>ملفات (*.osm)OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>صدّر GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX ملفات الــ (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>صدّر KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML الملفات (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>إسم الإشارة المرجعية غير صالح</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>لا تستطيع الإشارة المرجعية أن تكون خالية من التعبير.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>خطء جهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>غير قادر على فتح منفذ جهاز تحديد المواقع العالمي.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>أضف ثغرة.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>هل تريد إضافة فجوة (جديدة) إلى هذه المساحة ؟</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>إسقاط غير صالح</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>آلة التصوير</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>أنشء متعدد الأضلاع %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>أنقل العقد</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>أقل اعقدة %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>أنشء متعدد الأضلاع</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>حدد عدد الجوانب</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>إستدارة</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>الميزات</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>الأخيرt: </i><b>%1</b> by <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>الأخير: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>القياس</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>أعلى اليسار</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>أسفل اليمين</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>العلاقة</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>الدور</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>العضو</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>الطول</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>القياس</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 عقد</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>المساحة</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>الإحداثيات</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>الإرتفاع</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>السرعة</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>الوصف</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>التعليق</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>العقدة</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 م.</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 كلم</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>الخادم الجديد</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>أنسخ مفتاح مقابل</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>أكثر من 150 تفضيلات</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>مرجعية جديدة</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>التسميات</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>البنود المختارة</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>الإسم</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>حقل غير معروف</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>خطأ!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>خطأ غير معروف.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>الشكل</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>إسم ملف المخرج</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>غير معنون</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>كلّ الملفات (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>ملفات الصور (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG ملفات (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>خطّ العرض/الطول الأدنى</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>خطّ العرض/الطول الأقصى</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>أعرض المياس</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>المستخدم:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>دائماً</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>محرّر أزياء الخريطة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>عالمي</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>الخلفيّة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>أضِف</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>أحذف</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>أنسخ نسخة مطابقة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>إختيار التسمية</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>متر/بكسل</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>لوّن بللون</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>ثخانة نسبية</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>سماكة مثبتة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>منقط</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>غير شغال</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>إملئ المساحة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>الحد</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>أرسم الدرجات</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>أرسم الأيقونة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>الطابع</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>سبيكة الحروف</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>تسمية الطابع</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>هالة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>المساحة</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>لوّن بلألوان الخلفية</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>إسم ملف المخرج</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG ملفات (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>غير معنون</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>كلّ الملفات (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>ملفات الصور (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>مربع الحوار</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>دليل الأزياء المعتادة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>قالب تسمية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>الأدات موجودة مسبقاً</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>يوجد أداة بهذا الإسم مسبقاً. الرجاء إختيار إسم آخر أو الضغط على الزرّ <طبّق> إذا كنت تريد تغيير الموجود حالياً</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>إختر مجلد السجلّ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>التفضيلات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>الإعداد المحلي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>قد تكون بحاجة إلى إعادة تشغيل البرنامج كي تحصل على التغييرات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>إستعمل اللغة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>مرئي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>عامّ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>كبّر/صغّر (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>غير شفافية منخفضة/عالية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>تفاعل فردي زرّ الفأرة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>الألوان</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>الخلفيّة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>حوم</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>بكسلات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>تبئير/تركيز</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>العلاقات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>زيّ الخريطة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>الزيّ الحالي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>القالب</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>المدمج</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>المعتاد</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>المعطيات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>كلمة المرور:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>المستندات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>إحفظ تلقائياً المستندات بعد التحميل</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>الأثرات</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPSجهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>أضبط توقيت النظام على نظام تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>الشّبكة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>إعدادات الوكيل</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>إستعمل الوكيل</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>المضيف:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>المنفذ:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>صورة الخلفية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>الدليل المخبأ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>حجم المخبأ ( م.بايت ، 0 للتعطيل)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>مكيف الخريطة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>الأدوات/العدة</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>الإسم :</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>المسار:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>تطبيق</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>أضِف</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>أحذف</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>الإنجليزية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>العربية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>التشيكية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>الألمانية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>الفرنسية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>الإيطالية</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>روسي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>المستخدم:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>تسليط الضوء</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>تسلسلي</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>المنفذ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>المضيف</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>الإسم :</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>تطبيق</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>أضِف</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>أحذف</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>مربع الحوار</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>الخصائص</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 بنود منتقات</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 بنود منتقات</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>البنود المختارة</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>الخصائص - عناصر متعددة</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>الخصائص - طريق</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>الخصائص - العلاقة</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>الخصائص</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>حدّد مركز الخريطة</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>حدّد مركز و كبر/صغر الخريطة</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>إختر العضو</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>ألغي</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>تنظيف شلالي</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>حرّك العقدة %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>إسيراد NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>إستورد NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>غير صالح</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>أمتار</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>كلم/س</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>غير متوفر</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>ثنائي الأبعاد</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>ثلاثي الأبعاد</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPSجهاز تحديد المواقع العالمي</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>خطء في سجل جهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>خطء في سجل جهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPSجهاز تحديد المواقع العالمي</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>خط الطول</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>الإرتفاع</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 متر</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation>عدد الأقمار الإصطناعية</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>ثبّت النوع</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>غير صالح</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>السرعة</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 كم/س</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>خط العرض</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>أحذف</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>مُوافق</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>تطبيق</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>ألغي</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>الأعضاء</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>التسميات</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>المعرف</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>التسميات</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>لا يوجد أقمار إصطناعية</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>الخيار</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>المفتاح</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>القيمة</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>الإسم</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>المعرف</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>إستعادة الرؤية</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>أغلِق</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>الأزياء</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>الأزياء</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>الرجاء إعادة النظر في التغييرات المرسلة إلى أو.أس.أم</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>مُوافق</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>ألغي</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>إرفع إلى Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>خوادم الــTMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>لائحة المخدمين:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>الإسم :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Url الخادم :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>الإسقاط:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>تطبيق</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>أضِف</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>أحذف</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>لا يمكن ترك العنوان و الدرب فارغاً.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>فشل التنزيل: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>المفتاح</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>القيمة</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>حرّر هذا للإضافة...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>الشكل</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>غير معرف</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>غير معرف</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 كلم</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>إستخرج - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>إستخرج طبقة الرسم</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>التكبير</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>أغلِق</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>نقطة الأثر</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>خط العرض</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>خط الطول</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>المعرف</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>التسميات</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>مربع الحوار</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>الموقع على الإنترنت</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>كلمة المرور</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>إسم المستخدم</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>إستعمل الوكيل</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>المنفذ</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>التكبير</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>محو</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>لا يمكن ترك العنوان و الدرب فارغاً.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>فشل التنزيل: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>خطأ عند قرائة القدرات. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>خادم الــWMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>لائحة المخدمين:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>الإسم :</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>الطبقات:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>الإسقاط:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>الأزياء:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>تطبيق</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>أضِف</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>أحذف</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Url الخادم :</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_cs.ts�����������������������������������������������������0000664�0000000�0000000�00001110113�11770671653�0021710�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="cs"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>O aplikaci Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet a ostatní, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Tento program je šířen pod licencí GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Seznam změn</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Popis</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Zkratky</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Import</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Export</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Výchozí</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Zrušit</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Editor zkratek</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Nahrát schéma zkratek</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartor soubor zkratek (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Nemohu otevřít soubor</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 nemohl být otevřen.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Uložit soubor Zkratek</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>nepojmenovaný</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Všechny soubory (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Nemohu otevřít uložený soubor</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 nemůže být otevřen pro zápis.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Bez popisu</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Vzdálenost mezi cestami</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Jízda v pravo</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Form</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Jízda v pravo</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Form</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Vystředit mapu</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Vystředit && přiblížit mapu</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Historie změn</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Historie změn</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Úklid</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Přiblížení</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>Přidat vazbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>Přidat cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>Přidat traťový bod %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>Zavřít soubor změn</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Chyba při nahrávání</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>Otevřít soubor změn</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Prosím zkontrolujte svoje uživatelské jméno a heslo v menu Předvolby</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>Odebrat vazbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>Odebrat cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>Odebrat traťový bod %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Chyba při nahrávání požadavku (%1) Hlášení serveru je '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>Upravit vazbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>Aktualizovat cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>Aktualizovat traťový bod %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> Hlášení API je '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Zasílám změny...</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Chyba při nahrávání</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Prosím zkontrolujte svoje uživatelské jméno a heslo v menu Předvolby</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Chyba při nahrávání požadavku (%1) Hlášení serveru je '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> Hlášení API je '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Kontroluji změny...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>Otevřít soubor změn</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>Zavřít soubor změn</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>Přidat vazbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>Přidat cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>Přidat traťový bod %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>Upravit vazbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>Aktualizovat cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>Aktualizovat traťový bod %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>Odebrat traťový bod %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>Odebrat cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>Odebrat vazbu %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>nepojmenovaný</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Pracovní</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Data odeslané na server</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Zobrazování pozadí</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Stáhnout také GPS tratě</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Záložka</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Aktuální pohled</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Stáhnout</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Z mapy (mapu poskytuje projekt OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Umístění</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Vyřešit všechny vazby</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Konflikty s %1</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>nemohu stáhnout více</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Stahování selhalo</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Stahování z OSM (připojování)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Stahuji traťové body %1-%2</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Stahuji %1,%2 (přiblížení %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>chyba</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Analyzuji XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Vyřešte prosím nejprve existující konflikty</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Nevyřešené konflikty</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Neplatné uživatelské jméno/heslo</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Stažené tratě - uzly %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 staženo</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Stáhnout nevyřešené %1 z %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Analyzuji nevyřešené %1 z %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Detekován konflikt</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Tím je míněno, že nějaká vámi modifikovaná vlastnost byla od posledního stažení změněna jiným uživatelem na serveru. Vlastnost byla duplikovaná jako "conflict_..." ve vrstvě "Konflikty...". Dříve než budete moci odeslat vaše změny, musíte ručně sloučit dvě verze a odebrat jednu z vrstvy "Konflikty...".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Detekovány prázdné cesty/vazby</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Prázné cesty/vazby jsou pravděpodobně chyba. Chcete je označit pro smazání?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Odebrat prázné vlastnosti %1</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Stahování z OSM (%n B)</numerusform> <numerusform>Stahování z OSM (%n B)</numerusform> <numerusform>Stahování z OSM (%n B)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Stahování z OSM (%n kB)</numerusform> <numerusform>Stahování z OSM (%n kB)</numerusform> <numerusform>Stahování z OSM (%n kB)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Neočekávaný http stavový kód (%1) Hlášení serveru je '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> Hlášení API je '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Stáhni body</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Stahuji...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Zpracovávám...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Stahování nevyřešených...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Přiblížení</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Vše viditelné (t.j. né skryté)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Export</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Vybrané</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Zobrazení</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Co chcete exportovat?</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Objekty</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Vystředit mapu</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Vystředit && přiblížit mapu</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Stáhnout chybějící objekty</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Odstranit</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Vazby</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Cesty</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Vše</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Přidat k výběru</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Objekty</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Pouze plně viditelné objekty</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Jméno</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Zavřít</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Jméno:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Použít</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Přidat</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Odstranit</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geo obrázky</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Nahrát geotagovaný obrázek</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Vyberte vrstvu ke které náleží obrázek:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Nahrávám obrázek...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Zrušit nahrávání</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Zadejte offset</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Pozice obrázku více k:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>konec tratě</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>začátek tratě</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'sekund'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minut a' ss 'sekund'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'hodin,' mm 'minut a' ss 'sekund'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Špatný obrázek?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Obrázek "%1" byl pořízen %2 dříve než byl zaznamenán další traťový bod. Chcete ho ještě používat?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Obrázek "%1" byl pořízen %2 až po zaznamenáni posledního traťového bodu. Chcete ho ještě používat?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Odebrat obrázky</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Nemohu načíst informace o fotografii ze serveru Walking Papers.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Vystředit mapu</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Kopírovat název souboru do schránky</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Žádný takový soubor</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Nemohu najít obrázek "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Chyba při otevírání "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Žádné body cesty</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Žádné body cesty pro obrázek "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG Obrázky (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Chyba při nahrávání EXIF-dat z "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Chyba při otvírání "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Vyber další obrázek</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Vyber předchozí obrázek</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Neplatné OSM url</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Zadané url je neplatné!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Nesprávný formát souřadnic</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Souřadnice musí být: '<levá délka>, <dolní šířka>, <pravá délka>, <horní šířka>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Souřadnice musí být: '<střední šířka>, <střední délka>, <rozsah šířky>, <rozsah délky>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Jít na</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Záložka</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>délkaMin, šířkaMin, délkaMax, šířkaMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>šířkaCent, délkaCent, šířkaSpan, délkaSpan</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informace</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Hledat</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Žádný</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>[ Shape] adaptér</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMS adaptér</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMS adaptér</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Přiblížení</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Mapa - prázdná</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mapa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mapa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Mapa - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Mapa - WMS-Dlaždice - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mapa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Velikost dlaždice</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Celé číslo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Zeměpisná délka</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Zeměpisná šířka</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Neplatná projekce</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Neplatný soubor</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 nemohl být otevřen.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 není CSV soubor s nastavením</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>nepojmenovaný</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Všechny soubory (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 nemůže být otevřen pro zápis.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Oddělovač</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Žádný</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Import</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importovat rozsah</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informace</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n objekt</numerusform> <numerusform>%n objekty</numerusform> <numerusform>%n objektů</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Rozměr</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Objekty</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Vrstvy</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Vše</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Tratě</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Ukázat vše</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Skrýt vše</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Vše pouze pro čtení</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Vysoké</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Nízké</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Krytí</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Neprůhledné</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Viditelná</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Pouze pro čtení</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Neptej se mne znovu</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Nahrávám pluginy...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Inicializace...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&O aplikaci</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Přidat...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Přidat záložku</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Přidány uzly do dvojité cesty %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Zarovnat</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Zarovnat Uzly</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Zarovnat vybrané uzly. První dva vybrané definují dráhu.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Vše...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Oblast</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Oblast: Přidán uzel %1 do cesty %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Oblast: Vytvořena cesta %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Oblast: Ukončena cesta %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Záložka nemůže být prázdná.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Záložky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>R&ozpojit</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Cesty přerušeny</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Zrušen klíč '%1' on %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Špatný obsah schránky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Převést vybrané vlastnosti z pomocných vrstev (např. Traťě nebo Extrakt) do pracovní vrstvy, připravit pro zaslání</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Kopírovat vybrané značky vlastností do schránky; jestliže je vlastností traťový bod, zkopírovat taky jeho souřadnice.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Vytvořit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Vytvořit nový dokument</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Vytvořit nový dokument a importovat soubor</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Vytvořena oblast %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Vytvořena dvojitá cesta %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Vytvořit odkaz</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Vytvořen uzel v cestě: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Vytvořen uzel %1 v cestě %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Vytvořena vazba %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Vytvořena cesta: %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Vytvořen kruhový objezd %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Křivky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Curved road</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Doky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Silnice se středním pásem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Stáhnout více</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Stáhnout aktuální pohled do předchozí stažené vrstvy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Upravit</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Vložte nové, ponechte stávající pro přepsání nebo zrušte akci.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Chyba stahování</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exportovat všechny viditelné vrstvy do souboru</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exportovat GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exportovat KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exportovat OSM</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exportovat prvky ze zobrazení do souboru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Soubor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Najít...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Najít a označit položky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX Soubory (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Nápověda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Skrýt/zobrazit dialog Informace</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Skrýt/zobrazit dialog Vrstev</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Skrýt/Zobrazit dialog Vlastnosti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Skrýt/Zobrazit dialog Historie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Import</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importovat soubor do aktuálního dokumentu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Neplatné jméno záložky</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Neplatný soubor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Je vřele doporučeno uložit změny do vašeho dokumentu po uploadu. Chcete to udělat hned?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Spojit</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Cesty spojeny</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML Soubory (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Odkaz</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Nahrát mapový styl</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Spojit</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Sloučit Uzly do %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Spojit vybrané uzly (první vybraný zůstane zachován)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Sloučit značky ve schránce s jednou vybranou vlastností.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Soubory Merkaartor documents (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartor mapový styl (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nový</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Uzel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Neplatný soubor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Detekována stará verze Qt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Otevřít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binární)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM Soubory (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Vložit (a přepsat) značky ve schránce na vybranou vlastnost.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Vložit vlastnosti do schránky; pokud je id vlastnosti již v dokumentu, přepsat jej.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Vyřešte prosím nejprve existující konflikty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Předvolby...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Ukončit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Vpřed</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>&Vazba</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Změněna vazba %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Odebrat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Odebrat...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Odebrat záložku</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Vyjmuta značka %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Změnit směr</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Cesta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Uložit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Uložit &jako...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Uložit mapový styl</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Uložit dokument Merkaartoru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Vybrané...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Vyberte záložku k odebrání.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Nastavit &projekci</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Nastaveny klíče na %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Zadejte jméno záložky.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Rozdělit</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Cesty rozděleny</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Styl</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Aktuální mapa obsahuje neuložené změny, které budou ztraceny, pokud se otevře nová. Chcete zrušit vytváření nové mapy nebo pokračovat a zahodit staré změny?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Mapa nemohla být stáhnuta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Zpět</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Nevyřešené konflikty</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Neuložené změny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>nepojmenovaný</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Odeslat OSM</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Zobrazení</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Zobrazení...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Varování: Jméno záložky už existuje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Okno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Vypadá to, že jste ještě nezadali vaše OpenStreetMap uživatelské jméno a heslo. Chcete to udělat nyní?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Vaše nastavení používá Qt %1, které obsahuje různé známe chyby v odesílání dat do OpenStreetMap, vedoucích k chybovému hlášení serveru 401. Jste si jisti, že chcete pokračovat (což není doporučené). Pro více informací navštivte http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zobrazit &vše</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Přiblížit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>&Přiblížit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Oddálit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zobrazit &výběr</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zobrazit výběr</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 nemohl být otevřen.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 není platný dokument Merkaartoru.</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Vytvořit uzel: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Přidán uzel %1 do cesty %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>dlaždice %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Vlastnosti...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Waypoint</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Trať %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>chyba GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Nemohu otevřít GPS port.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Otevřít NMEA log soubor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Vrstvy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Ukaž &staženou oblast</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Panel nástrojů</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Skrýt/zobrazit dialog Panel nástrojů</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Skrýt vše</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Ukázat vše</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Obrázky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Start</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Přehrát...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Skrýt/Zobrazit dialog GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>S&top</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Vystředit podle GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Zobrazit traťové &segmenty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Zobraz &měřítko</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Zobraz &vazby</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Zobraz pozadí cest</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Zobraz okraje cest</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Zobraz dotyk</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Záznam</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pauza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Skrýt/zobrazit dialog GeoObrázky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Nemohu otevřít uložený soubor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 nemůže být otevřen pro zápis.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Nalezeny uzly na stejné pozici.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Chcete sloučit všechny uzly na [drop] pozici?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Nízké</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Vysoké</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Neprůhledné</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Vrstvy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Značky</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Uzel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Cesta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Vazba</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>GPS Exchange formát (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMap formát (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Noni GPSPlot formát (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>NMEA GPS log formát (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KML soubor (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Oddělený čárkou (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Geotaggované obrázky (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESRI Shapefile (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartor dokument (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Cesta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Načíst obrázek</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Přidat pozici uzlu do obrázku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Zrušit</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Nástroje</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Schránka neobsahuje platná data</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Big Fat Copyright Warning</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Pokoušíte se importovat KML soubor. Prosím uvědomte si že: - Nemůžete importovat do OSM soubor KML vytvořený v Google Earth. I když si myslíte, že uzly které jste vytvořili v GE jsou vaše, nejsou! Je to pouze odvozené dílo z GE a jako takové nemůže být použité v OSM.  - Pokud jste ho stáhli z internetu, je velká pravděpodobnost, že je zatížen copyrightem. Prosím buďte si absolutně jisti, že použití těchto dat v OSM je povoleno autorem, nebo že tyto data jsou public domain. Pokud si nejste jisti , prosím požádejte o radu v "legal" nebo "talk" openstreetmap mailing listu. Jste si opravdu absolutně jisti, že tento KLM může být legálně importován do OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Chyba při zavírání chyby</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Nemohu smazat chybu. Zpráva serveru je: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Přidat číslování ulic</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Odpojit uzel %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Přidat prvek do vazby</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Odebrat prvek z vazby</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Podporované formáty</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Všechny soubory (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Uložit šablonu značek</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartor šablona značek (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Otevřít šablonu značek</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Zobrazit &směrové šipky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Nastavit prů&hlednost oblasti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Export</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Naposledy &otevřené</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Naposledy &importované</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>&Nástroje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>&Vlastnosti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>&Vazba</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Přesunout</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Stáhnout</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Stáhnout mapové data pro novou oblast</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Vybrat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Odeslat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Zaslat změny na server</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Vyjmout vybrané vlastnosti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Vytvoit novou cestu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Vytvořit nový uzel</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Obrátit směr cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Jít na...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Vytvořit silnici se středním pásem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Vytvořit kruhový objezd</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Rozdelit cestu na oddělené (připojené) cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Sloučit připojené cesty na jednu cestu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Přerušit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Oddělit připojené cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Vytvořit vazbu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Vytvořit novou oblast</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Upravit...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Uložit...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Nahrát...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Najít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Sloučení uzlů</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Uložit do souboru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Stáhnout více mapových dat pro stávající oblast</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Vlastnosti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informace</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Zarovnat uzly</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopírovat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Kopírovat vybrané vlastnosti a klíče do schránky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Vložit klíč (&přepsat)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Vložit klíč (&sloučit)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Vložit klíče</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Vložit klíče ze schránky (Sloučit s existujícími klíči)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Vložit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Vložit vlastnosti ze schránky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Převést vlastnosti do pracovní vrstvy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Spustit GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Přehrát GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Zastavit GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Nahrávat GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pozastavit GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoObrázky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Světový OSB manažer...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>Editor &zkratek...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Spojit...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Přidat prvek</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Odebrat prvek</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nikdy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>pro &jednosměrné cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Vždy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>O&dpojit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Odpojit uzel od cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Odpojit uzel od cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>Pracovat O&ffline</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Styly</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Skrýt/zobrazit dialog Stylů</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Editor &WMS Serverů...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Editor &TMS Serverů..</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Přidat číslování &ulice (Karlsruhe schéma)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Podrozdělit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>&Zamknout zvětšení k dlaždicím pozadí</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Editor &projekcí</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Stáhnout chybějící objekty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>Editor &filtrů...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>Žád&ný</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>Rozdělit obla&st</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Terasa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Tisk...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Měřítko</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Odebrat prvek '%1' z %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Přidat otvor</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Přidat (další) otvor do této oblasti?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Nemohu nahrát soubory projekce</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projections.xml" nemůže být otevřen kdekoliv. Ruším .</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Vytvořit křižovatku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Neplatná projekce</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Nemohu nastavit projekci "%1".</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS Menu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Fotoaparát</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Vytvořit &křižovatku</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Smazat potomky</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Nastavit vlastnosti na</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Vytvořit polygon %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Edituj vazby</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Přesunout uzly</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Posunout nod %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>Levý-clik pro výběr; Levý-drag pro posunutí</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>Levý-click na první roh -> Levý-drag pro výběr oblasti -> Levý-clik pro zvětšení</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Vytvořit polygon</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Uveďte počet stran</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Vynutit odeslání objektu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Vynuceně odeslat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Otočit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Vícenásobné křížení</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Tyto cesty mají vícenásobné křížení. Chcete pro každou vytvořit křižovatku (Nežádoucí křižovatky pak mohou být smazány ručně)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Vložit objekt(y)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Objekty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Zobrazit &virtuální uzly</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Smaž %1 tagů na %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Oblast</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Pravý dolní</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>komentář</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>Souřadnice</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>popis</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>elevace</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>poslední: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>poslední: </i><b>%1</b> by <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Délka</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Člen</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Uzel</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Vazba</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Úloha</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>rozměr</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Rozměr</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>rychlost</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Levý horní</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Cesta</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Waypoint</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 uzlů</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nový server</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Upload předvoleb selhal</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Duplicitní klíč</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Více jak 150 předvoleb</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nová záložka</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Vybrané položky</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Značky</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Jméno</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Neznámé pole</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Chyba!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Hostitel jmenné vyhledávací služby nebyl nalezen.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Hostitel jmenné vyhledávací služby odmítl spojení.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Jmenná vyhledávací služba vyžaduje ověření.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Neznámá chyba.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Název výstupního souboru</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>nepojmenovaný</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Všechny soubory (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Obrazkové soubory (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG souboru (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>min šířka/délka</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>max šířka/délka</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Zobraz měřítko</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Uživatel:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Přidat</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Vždy</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Čárkovaná</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Vykreslovat ikonu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Vyplnit oblast</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Pevná tloušťka</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Editor mapového stylu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>metr/pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>vypnuto</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Proporcionální tloušťka</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Odstranit</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Výběr značky</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Viditelný od zvětšení</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Viditelný do</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplikát</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Pozadí</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Kreslit s barvou</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Okraje</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Zachytávání</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Kreslící krok</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Label</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Font</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Label tag</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Kreslit s barvou pozadí</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Označit se značkou pozadí</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Globální</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Text nad</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Oblast</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Neplatný geotag</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Nahrát bez přiřazených uzlů</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Extrahovat informace z čárového kodu (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignorovat</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Proveď to pro všechny fotografie</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Název výstupního souboru</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>nepojmenovaný</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Všechny soubory (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Obrazkové soubory (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG souboru (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Automaticky extrahovat tratě při otevření</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Automatické uložení dokumentu po odeslání</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Obraz pozadí</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Vestavěný</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Adresář pro cache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Velikost cache (v Mb; 0 pro vypnutí)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Uživatelský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Data</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Vypnout styly pro traťovou dráhu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokumenty</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Obecné</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Hostitel:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Mapový adaptér</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Mapový styl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Síť</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Průhlednost nízká/vysoká</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Heslo:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Port:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Předvolby</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Nastavení Proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Tratě</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Použít Proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Zobrazení</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Přiblížit/oddálit (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Nástroj již existuje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Nástroj s tímto jménem již existuje. Prosím vyberte jiné jméno nebo použíjte <Apply> tlačítko, jetliže ho chcete změnit</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Nemohu smazat nastavený nástroj</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Nemohu smazat nastavený nástroj "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Nemohu změnit nastavené jméno nástroje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Nemohu změnit nastavené jméno nástroje "%1"'</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Vyberte spustitelný nástroj</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Vyberte adresář pro Logy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Poloha</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Pro projevení změn musíte restartovat program</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Použít jazyk</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Překládat standardní značky</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Barvy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Pozadí</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Výběr</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Zaměření</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Vazby</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Uložit NMEA log</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Nastavit systémový čas podle GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Zapni JOSM-kompatibilní lokální server na portu 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Nástroje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Jméno:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Cesta:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Použít</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Přidat</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Odstranit</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Adresář uživatelských stylů</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Šablona značek</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor šablona značek (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Mód odděleného posunu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Odezva jednotlačítkové myši</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Použít uživatelský QT styl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Přepsat styl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixelů</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Součastný styl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Šablona</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Vrstva [track ] je defaultně pouze pro čtení</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Nespojujte GPX uzly oddělené více jak (km; 0 pro vypnutí)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Caching dlaždic (není aktivní pro Yahoo! - omezené použití)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Angličtina</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Čeština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Němčina</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francouzština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Brazilská portugalština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Ruština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Uživatel:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Zvýraznění</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPX trať</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Použít jednoduchý vzhled GPX tratě</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>GPS vstup</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Seriový port</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Počítač</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Použít virtuální uzly (je vyžadováná nová session)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Holandština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugalština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovenština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Španělština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Švédština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrajinština</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Rozhraní</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Jméno:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Použít</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Přidat</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Odstranit</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Vlastnosti</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Vystředit mapu</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Vystředit && přiblížit mapu</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Vlastnosti</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Vlastnosti - Vícenásobné prvky</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Vlastnosti - Vztahy</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Vlastnosti - Cesta</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Vybrané položky</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 vybraných položek</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 vybraných položek</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Vybrat prvek</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Vlastnosti - Uzel</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Zrušit</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Postupný úklid</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Nastaven klíč '%1=%2' na %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Zrušen klíč '%1' on %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Přesunut uzel %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importovat NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importovat NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Neplatný</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metrů</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Nedostupný</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>GPS chyba logování</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Nemohu vytvořit GPS log soubor: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>GPS chyba logování</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Nemohu vytvořit GPS log soubor: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Zeměpisná délka</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Nadm. výška</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metrů</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation>Satelity</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Typ fixu</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Neplatný</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Rychlost</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Zeměpisná šířka</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Není vyhovující výsledný tok!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< O D D Ě L O V A Č ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Odstranit</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Použít</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Zrušit</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Členové</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Žádné satelity</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Klíč</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Jméno</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Výběr</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Hodnota</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Obnovit pohled</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Zavřít</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Styly</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Styly</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Zrušit</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Prosím důkladně zkontrolujte změny zasílané do OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Zaslat do Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Prosím specifikujte komentář pro tyto změny</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Přidat</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Použít</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Server URL:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Merkator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Šířka/Délka (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Jméno:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projekce:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Odstranit</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Seznam serverů:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMS Servery</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Nastavení TMS serverů</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adresa a cesta nemůže být prázdná.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Stahování selhalo: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Chyba při načítání služeb </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Editovat pro přidání...</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Klíč</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Hodnota</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>A</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Nedefinováno</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Nedefinováno</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># traťových segmentů</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Celková vzdálenost</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Celkové trvání</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extrahovat - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Extrahovat kreslící vrstvu</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Přiblížení</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Zeměpisná šířka</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Zeměpisná délka</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Traťový bod</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Heslo</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Použít Proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Uživatelské jméno</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Webová stránka</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Smazat</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Přiblížení</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Přidat</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adresa a cesta nemůže být prázdná.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Použít</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Stahování selhalo: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Chyba při dotazu na schopnosti. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Vrstvy:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: GetCapabilities</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Jméno:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projekce:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Odstranit</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Seznam serverů:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Styly:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMS Servery</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Nastavení WMS serverů</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Server URL:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_de.ts�����������������������������������������������������0000664�0000000�0000000�00001141547�11770671653�0021712�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="de"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Über Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Dieses Programm ist unter der GNU Public License v2 lizenziert</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>Beschriftung</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor-Version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT-Version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (erstellt mit <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost-Version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4-Version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL-Version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet und andere, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Änderungsprotokoll</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Beschreibung</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Tastenkürzel</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importieren</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exportieren</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Standard</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Abbrechen</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Tastenkürzeleditor</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Tastenkürzelschema laden</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartor-Tastenkürzelschema (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Datei kann nicht geöffnet werden</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 konnte nicht geöffnet werden.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Tastenkürzelschema speichern</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>unbenannt</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Datei kann nicht gespeichert werden.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 konnte nicht geschrieben werden.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Keine Beschreibung</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Rechtsverkehr</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Abstand zwischen zwei Fahrbahnen</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Rechtsverkehr</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation>Es gibt <b>kein</b> ungespeichtertes Objekt</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation>Es gibt <b>ein</b> ungespeichtertes Objekt</translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform>Es gibt <b>%n</b> ungespeichertes Objekt</numerusform> <numerusform>Es gibt <b>%n</b> ungespeicherte Objekte</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Rückgängig</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Zentriere Karte</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Zentriere && zoome Karte</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Rückgängig</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Es gibt <span style=" font-weight:600;">kein</span> ungespeichertes Objekt</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Aufräumen</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Fehler beim Hochladen der Anforderung</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Fehler beim Hochladen der Anfrage (%1)! Die Servernachricht ist '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>HINZUFÜGEN Linie %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>HINZUFÜGEN Punkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>HINZUFÜGEN Relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>AKTUALISIEREN Punkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>AKTUALISIEREN Relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>AKTUALISIEREN Linie %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>ENTFERNEN Punkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>ENTFERNEN Linie %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>ENTFERNEN Relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Bitte Benutzername und Kennwort in den Einstellungen überprüfen</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>ÖFFNE Änderungssitzung</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>SCHLIESSE Änderungssitzung</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> API-Meldung ist '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Änderungen hochladen...</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Fehler beim Hochladen der Anforderung</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Bitte Benutzername und Kennwort in den Einstellungen überprüfen</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Fehler beim Hochladen der Anfrage (%1)! Die Servernachricht ist '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> API-Meldung ist '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Fehler beim Hochladen der Anfrage (%1)! %2 Bitte laden Sie die problematischen Daten nocheinmal, um den Konflikt zu lösen.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Überprüfe Änderungen ...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>ÖFFNE Änderungssitzung</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>SCHLIESSE Änderungssitzung</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>HINZUFÜGEN Relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>HINZUFÜGEN Linie %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>HINZUFÜGEN Punkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>AKTUALISIEREN Relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>AKTUALISIEREN Linie %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>AKTUALISIEREN Punkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>ENTFERNEN Punkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>ENTFERNEN Linie %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>ENTFERNEN Relation %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>unbenannt</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Arbeitsebene</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Hochgeladene Ebene</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Hintergrundbilder</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Zeichnungsebene #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Filterebene #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>OSM Export</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Exportiere OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Dokument</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation>Historie-Neu: Punkt %1 erstellen</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation>Historie-Neu: Punkt %1 ändern</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation>Historie-Neu: Punkt %1 löschen</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation>Historie-Neu: Linie %1 erstellen</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation>Historie-Neu: Linie %1 ändern</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation>Historie-Neu: Linie %1 löschen</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation>Historie-Neu: Relation %1 erstellen</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation>Historie-Neu: Relation %1 ändern</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation>Historie-Neu: Relation %1 löschen</translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Herunterladen</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Ort</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Lesezeichen</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Aktuelle Ansicht</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation>WWW Link (OSM/Google maps)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation>Xapi Auswahl</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Von der Karte unten (Karte vom OpenStreetMap-Projekt bereitgestellt)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Auch GPS-Rohdaten herunterladen</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Alle Relationen auflösen</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>Fehler</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>Nicht genügend Daten heruntergeladen</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Unaufgelöste Konflikte</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Bitte lösen Sie zuerst die vorhandenen Konflikte auf</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation>MapDust</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Lade Punkte herunter</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Herunterladen von OSM (verbinden)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Herunterladen fehlgeschlagen</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Benutzername/Passwort ungültig</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Lade Punkt %1 von %2 herunter</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Werte XML aus</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Konflikte von %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Herunterladen von %1,%2 (Zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Spur herunterladen - Punkte %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 heruntergeladen</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Lade fehlende Elemente %1 von %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Überprüfe nicht aufgelöste Elemente %1 von %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Es wurden Konflikte erkannt</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Einige der geänderten Objekte wurden seit dem letzten Herunterladen von einer anderen Person bearbeitet. Diese Objekte wurden als "conflict_..." in der "Konflikte ..." Ebene dupliziert. Um diese hochladen zu können, müssen Sie ihre Änderungen mit denen der anderen Person vereinen und dann die Objekte aus der "Konflikte ..." Ebene entfernen.</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Leere Linien/Relationen erkannt</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Leere Linien/Relationen ergeben keinen Sinn. Möchten Sie diese zur Löschung markieren?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Leeres Objekt %1 entfernen</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Unerwarteter HTTP-Status (%1) Servernachricht ist '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> API-Meldung ist '%1'</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation> <numerusform>Von OSM herunterladen (%n Byte)</numerusform> <numerusform>Von OSM herunterladen (%n Byte)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation> <numerusform>Von OSM herunterladen (%n kByte)</numerusform> <numerusform>Von OSM herunterladen (%n kByte)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Herunterladen...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Analysieren...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Nicht aufgelöste herunterladen...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Daten werden hochgeladen …</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Bereite Änderungen vor</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Warte auf Antwort des Servers</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Schließen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Löschen nicht möglich</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>Kann die Auswahl nicht löschen, da sie sich außerhalb des heruntergeladenen Bereiches befindet.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Kann nicht alles löschen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation>Die Auswahl kann nicht vollständig gelöscht werden, da sie teilweise außerhalb des heruntergeladenen Bereichs liegt. Soviel löschen wie möglich?</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>Linie %1 umkehren</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>%1 Linien umkehren</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exportieren</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Was soll exportiert werden?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Alles Sichtbare (d.h. nicht ausgeblendet)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Aktuelle Ansicht</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Ausgewählte</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Objekte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Zentriere Karte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Zentriere && zoome Karte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Herunterladen fehlender Abhängigkeiten</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Entfernen</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relationen</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Linien</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI's</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Alle</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Zur Auswahl hinzufügen</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Objekte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Nur vollständig anzeigbare Objekte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Suchen...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Zurücksetzen</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Name</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Schließen</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Filtereinstellungen</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Filter Liste:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Name:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Anwenden</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Hinzufügen</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Entfernen</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Bilder</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Lade georeferenzierte Bilder</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Wählen Sie die Ebene aus, zu der die Bilder gehören:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Falsches Bild?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Lade Bilder ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Laden abbrechen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Geben Sie den Versatz an</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Wohin sollen die Bilder versetzt werden?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>mehr zum Ende der Spur</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>mehr zum Anfang der Spur</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'Sekunden'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'Minuten und' ss 'Sekunden'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'Stunden,' mm 'Minuten und' ss 'Sekunden'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Das Bild "%1" wurde %2 vor dem nächsten Wegpunkt aufgenommen. Soll es trotzdem verwendet werden?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Das Bild "%1" wurde %2 nach dem letzten aufgezeichneten Wegpunkt aufgenommen. Soll es trotzdem verwendet werden?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Bilder entfernen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Zeitüberschreitung im Netzwerk</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Kann die Details zum Foto nicht vom Walking Papers Server lesen.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Bitte die Walking Papers URL angeben</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Zentriere Karte</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation>c</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Dateinamen in Zwischenablage kopieren</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Georeferenziertes Bild speichern...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Foto-Ebene</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>Ebene ist schreibgeschützt</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation>Die verwendete Ebene ist schreibgeschützt. Soll der Schutz entfernt werden? Anderenfalls können sie die dazugehörigen Bilder nicht laden.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Datei nicht gefunden</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Bild "%1" wurde nicht gefunden.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Fehler beim öffnen von "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Keine Wegpunkte</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Keine Wegpunkte für das Bild "%1" gefunden.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG Bilder (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Fehler beim Laden der EXIF-Daten aus "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation>Geben sie den Ausgabe-Dateinamen an</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Fehler beim Öffnen von "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Nächstes Bild wählen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>BildRunter</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Vorheriges Bild wählen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>BildHoch</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Ungültige OSM-URL</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>The angegebene URL ist ungültig!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Ungültiges Koordinatenformat</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Koordinatenformat: '<linke Länge>, <untere Breite>, <rechte Länge>, <obere Breite>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Koordinatenformat: '<Zentrumsbreite>, <Zentrumslänge>,<Breitenbereich>,<Längenbereich>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Gehe zu</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Lesezeichen</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation>WWW Link (OSM/Google maps)</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation>Koordinaten</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation>Projiziert anzeigen</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>minLän, minBr, maxLän, maxBr</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>zentr. Breite, Länge, Weite Br., Län.</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Info</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API-URL</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI-URL</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Suchen</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Keine</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Shape-Adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation>Projektion auf die der Ebene umstellen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation>Ausrichtungsanpassung zurücksetzen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Schließen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMS-Adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMS-Adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Plugins</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Karte - Keine</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Karte - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Karte - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Karte - WMS-Kacheln - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Karte - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Karte – %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Lizenzbestimmungen: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>Lizenzbedingungen nicht akzeptiert</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation>Sie haben das Kästchen, mit dem Sie die Lizenzbedingungen anerkennen, nicht angekreuzt. Daher können sie diese Quelle nicht als Kartenebene verwenden. Wollten sie das wirklich?</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Server</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Kachelgröße</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Min/Max Zoom</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Projektion</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Zeichenkette</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Ganzzahl</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Fließkommazahl</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Längengrad</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Breitengrad</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Ungültige Projektion</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Projektion kann nicht eingestellt werden.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Keine Koordinaten</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Breiten- oder Längenfeld fehlt. Diese Datei kann nicht importiert werden. Wollen sie wirklich beenden?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Lade CSV Importeinstellungen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Merkaartor Importeinstellungen (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Ungültige Datei</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 konnte nicht geöffnet werden.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 ist keine Datei für CSV-Importeinstellungen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>CSV Importeinstellungen speichern</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>unbenannt</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Importeinstellungen könnten nicht gepeichert werden</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 konnte nicht geschrieben werden.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Rohdaten</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>OSM Vorschau</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Spezifikationen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Erste Zeile enthält Überschriften</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Trennzeichen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Komma (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Semikolon (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tab</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Andere:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation>Anführungszeichen bei Zeichenketten</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Keine</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation>einzelne (')</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>doppelte (")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Projektion (im PROJ4 Format; freilassen für Breite/Länge)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Felder</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Feldliste:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Feldname (= Merkmalsname):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Feldtyp:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importieren</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Bereich importieren</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Von (0 = Anfang)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Bis (0 = Ende)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Lade Einstellungen...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Einstellungen speichern...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation>Projektion bestätigen</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>Projektion kann nicht eingestellt werden, bitte geben Sie eine an</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Info</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n Objekt</numerusform> <numerusform>%n Objekte</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Größe</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Objekte</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Ebenen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Alle</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>GPS-Spuren</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Alle anzeigen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Alle verstecken</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Alle schreibgeschützt</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Keine schreibgeschützt</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Schließen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Karte</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Zeichnen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation>Ebenen auf Standard zurücksetzen</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>Layer schließen: Es sind ungespeicherte Objekte vorhanden</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation>Diese Ebene enthält ungespeicherte Objekte. Wollen Sie sie wirklich schließen? (Kann nicht rückgängig gemacht werden!)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>Ebene schließen: Nicht leer</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Sind sie sicher, daß sie diese Ebene schließen möchten? (Wiederherstellen nicht möglich)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Hoch</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Niedrig</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Undurchsichtig</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Durchsichtigkeit</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Sichtbar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Schreibgeschützt</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Formular</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Lizenzbestimmungen</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Ich habe die Lizenz gelesen und stimme den Bestimmungen zu</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Nicht erneut nachfragen</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Lade Plugins...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Initialisiere...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Ungespeicherte Änderungen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Die aktuelle Karte enthält ungespeicherte Änderungen, die verlorengehen, wenn Sie eine neue beginnen. Möchten Sie das Beginnen einer neuen Karte abbrechen, oder fortfahren und die alten Änderungen verwerfen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation>Ungespeicherte Stil-Änderungen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation>Sie haben den aktiven Stil geändert. Wollen Sie Ihre Änderungen speichern?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Keine gültige Datei</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 konnte nicht geöffnet werden.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation>Eingehender Fernsteuerungsbefehl</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation>Unbekannte Aktions-URL: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Datei öffnen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>OSM hochladen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Sie haben Ihren Benutzernamen und Kennwort für OpenStreetMap noch nicht angegeben. Möchten Sie dies nun tun?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Herunterladen fehlgeschlagen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Die Karte konnte nicht heruntergeladen werden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Fehler beim Herunterladen von OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>OpenStreetBugs konnten nicht heruntergeladen werden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation>Fehler beim Herunterladen von MapDust</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation>Die MapDust bugs konnten nicht heruntergeladen werden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Linien vereinfachen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Zeitüberschreitung im Netzwerk</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Kann OpenStreetBugs nicht erreichen.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Kann Fehler nicht schließen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Kann den Fehler nicht löschen. Servernachricht ist: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Hausnummern hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>in ... Segmente teilen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation>Geben sie die Zahl der Segmente an</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>Linie in %1 Segmente unterteilen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>An Achse ausrichten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation>Geben Sie die Zahl der regelmäßigen Achsen an (z.B. 4 für rechteckig)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>dreieckig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>rechteckig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>fünfeckig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>sechseckig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>siebeneckig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>achteckig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>An %1 Achsen ausrichten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>An %1 regelmäßigen Achsen ausrichten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation>Kann nicht an Achsen ausrichten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>An Achsen ausrichten scheiterte. Bitte passen sie scharfe Ecken an und versuchen sie es noch ein Mal.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>An Achsen ausrichten scheiterte oder konnte keine Näherungslösung finden.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation>Bing Auszug</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>Punkte verteilen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation>Zu Multi&polygon hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Flächen vereinen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Fläche aufteilen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>Fläche in %1 Reihenhäuser unterteilen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Karten-Stil speichern</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartor-Kartenstile (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Karten-Stil laden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Unterstützte Formate</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Merkaartor Karten-Stile (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>MapCSS stylesheet (*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Vorlage speichern</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation>Vorlage kann nicht gespeichert werden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>OSM exportieren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM-Dateien (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>osmChange exportieren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>osmChange Dateien (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Lesezeichen hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Geben Sie den Namen des Lesezeichens an.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Ungültiger Name für ein Lesezeichen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Lesezeichenname darf nicht leer sein.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Achtung: Lesezeichen mit diesem Namen existiert bereits</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Geben Sie einen neuen Namen an, oder brechen Sie ab. Ansonsten wird das Lesezeichen überschrieben.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Lesezeichen entfernen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Wählen Sie das Lesezeichen, das Sie entfernen möchten.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation>Achtung! Die Merkaartor-Übersetzung für "%1" konnte nicht geladen werden. Es wird Englisch verwendet.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Hilfe</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Linie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Bearbeiten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Ansicht</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Lesezeichen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>&Projektion setzen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Datei</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>De&tails</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Beenden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Über</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Öffnen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Ein neues Dokument erstellen und eine Datei importieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>&Alles anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zoom auf &Rechteck</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Auf Auswahlrechteck zoomen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Herauszoomen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Hin&einzoomen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Hineinzoomen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Gekrümmte Verbindung</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Rückgängig</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Strg+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Wiederherstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Strg+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Eine Datei in das aktuelle Dokument importieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Strg+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Verbindung</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Verbindung erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Strg+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Entfernen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation>Kreis&verkehr</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Verteilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Punkte verteilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Ausgewählte Punkte ausrichten und gleichmäßig verteilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>K&noten anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>&Namen anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>WMS Server bearbeiten...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>&TMS Server bearbeiten...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation>&Polygon</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation>Rechteckiges &Gebäude</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation>Neue &Bilderebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Hausnummern hinzufügen (Karlsruhe Schema)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Unterteilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Segment gleichmäßig unterteilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>Unterteilt ein gewähltes Liniensegment (Linie und 2 benachbarte Punkte) in gleich lange Segmente.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Koordinatennet&z zeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>Zoomstufen an &Kacheln anpassen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>&Projektionseditor...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>&Fotos in der Karte zeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Löschung erzwingen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation>Neue &OpenStreetBugs Ebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation>Neue &Zeichnungsebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation>Neue &Filterebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation>Multipolygon erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation>Zu Multipolygon hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation>GDAL</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation>Bing Straßen-Erkennung</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation>&Historie neu erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation>Neue &MapDust Ebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation>Drahtgitter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation>Strg+Alt+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation>Elternelement(e) selektieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Herunterladen fehlender Abhängigkeiten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Schließen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>Vere&infachen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Linie(e) vereinfachen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Linie vereinfachen, indem unnötige Kind-Punkte entfernt werden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>&Filter Editor...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>&Keiner</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>&Flächen verbinden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Sich berührende Flächen vereinen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Sich berührende Flächen vereinen.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>Fläche &teilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Fläche entlang zweier Punkte teilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation>Die gewählte Fläche an zwei gewählten Punkte in einzelne Flächen teilen.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Gebäudeteilung</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation>Fläche in Reihenhäuser unterteilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>Fläche in Reihenhäuser unterteilen.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Symbolleisten-Editor ...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation>A&chsenausrichtung</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>Kanten an regelmäßigen Achsen ausrichten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>Kanten an einer bestimmten Anzahl von regelmäßigen Achsen ausrichten.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Drucken ...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>Druckvorschau...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>Ungespeicherte Objekte hervorheben</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>A&usschneiden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Strg+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>E&xtrudieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation>Extrudier-Aktionen (wie bei JOSM)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>Auswahl umkehren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Kind-Elemente in Auswahl aufnehmen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>&Skalieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>Als Vorlage speichern ...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Punkt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>Umkeh&ren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Getrennte Richtungsfahrbahnen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Neu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Ein neues Dokument erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Auftrennen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Verbinden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>Auf&teilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>&Relation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Fläche</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Speichern</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Kurvige Straße</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Einstellungen…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Alles…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Alle sichtbaren Ebenen in eine Datei exportieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Bildausschnitt…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Die Objekte im Bildausschnitt in eine Datei speichern</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Hinzufügen…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Entfernen…</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Unaufgelöste Konflikte</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Bitte lösen Sie zuerst die vorhandenen Konflikte auf</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Vereinigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Die gewählten Punkte vereinigen (der zuerst gewählte bleibt erhalten)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Merkaartor-Dokument speichern</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Merkaartor-Dokumente (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Strg+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Strg+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Speichern &unter...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Strg+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Mehr herunterladen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Herunterladen der aktuellen Ansicht in die vorige Downloadebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Strg+Umschalt+D</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Alte Qt-Version entdeckt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Ihr System nutzt Qt %1, welches verschiedene Fehler beim Hochladen von Daten zu OpenStreetMap verursacht. Diese können zu "401"-Fehlermeldungen führen. Möchten Sie fortfahren (nicht empfohlen)? Für weitere Informationen lesen Sie http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor (englisch)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>unbenannt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Fenster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Unterfenster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Eigenschafts-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Strg+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Ebenen-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Strg+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Info-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Strg+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Strg+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Strg+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Suchen...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Suchen und Auswählen von Elementen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Ausrichten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Ausgewählte Punkte ausrichten. Die ersten zwei legen die Linie fest.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>%1 Merkmal von %2 löschen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Fläche %1 erzeugen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Fläche: Linie %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Fläche: Linie %1 abschließen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Fläche: Punkt %1 zu Linie %2 hinzufügen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Fläche schließen %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Punkt zu richtungsgetrennter Straße %1 hinzufügen</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Richtungsgetrennte Straße %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Punkt auf Linie %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Punkt (POI) %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Kreisverkehr %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Punkt %1 auf Linie %2 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Linie %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Linie %1 schließen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>LINKSKLICK: Auswählen;STRG+LINKSKLICK: Zur Auswahl hinzufügen;LINKS ZIEHEN: Auswahlrechteck;RECHTS ZIEHEN: Ebene verschieben;STRG+RECHTS ZIEHEN: Zoom;DOPPELKLICK: Neuer Punkt;DOPPELKLICK auf Punkt: Neue Linie</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>KLICK: auswählen/verschieben; \r STRG+KLICK: Auswahl umkehren; \r SHIFT+KLICK: zur Auswahl hinzufügen; \r SHIFT+ZIEHEN: Flächenauswahl; \r STRG+ZIEHEN: Zoom; \r DOPPELKLICK: Neuer Punkt; \r DOPPELKLICK auf Punkt: neue Linie</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Objekt %1 entfernen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>Objekte entfernen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Wollen sie die enthaltenen Punkte auch löschen? OSM-Punkte außerhalb des heruntergeladenen Bereiches bleiben erhalten.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>%1 Linien umkehren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Linien vereinen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Linien teilen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Linien auftrennen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Ungültige Datei</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Punkte ausrichten</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Punkte vereinigen in %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Rückgängig-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relation %1 geändert</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Ist es sehr empfehlenswert nach dem Hochladen die Änderungen in Ihrem Dokument zu speichern. Wollen Sie dies jetzt erledigen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Zwischenablage ungültig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Relation %1 erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Strg+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Die Merkmale der aktuellen Auswahl in die Zwischenablage kopieren. Zusätzliches Kopieren der Koordinaten, wenn die Auswahl ein Punkt ist.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Strg+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Merkmale aus der Zwischenablage in aktuelle Auswahl einfügen (und überschreiben).</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Strg+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Merkmale aus der Zwischenablage mit denen der aktuellen Auswahl vereinigen.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Strg+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Gewählt...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Objekte aus der Zwischenablage einfügen. Wenn diese schon vorhanden sind, werden sie überschrieben.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Strg+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binär)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 ist kein gültiges Merkaartor-Dokument.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Die Auswahl aus einer nicht-hochladbaren Ebene (z.B. GPS-Spur oder Extrakt) in die Arbeitsebene kopieren, bereit zum Hochladen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>GPX exportieren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX-Dateien (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>KML exportieren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML-Dateien (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Strg+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Setze Merkmale für %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Punkt %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Punkt %1 zu Linie %2 hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>Kachel %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Eigenschaften...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Die Zwischenablage enthält keine gültigen Daten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Punkte</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>GPS-Spur %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPS-Fehler</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Der GPS-Port kann nicht geöffnet werden.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Öffne NMEA-Logdatei</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>Ebe&nen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>&Heruntergeladene Gebiete anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Symbolleiste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Symbolleiste zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Alle verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Strg+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Alle anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Bilderebene</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Strg+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Strg+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Start</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Erneut abspielen...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>GPS-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Strg+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation>Ta&gging Vorlagen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>S&top</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>Auf GPS-Position &zentrieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>GPS-Spur-Segmente anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Strg+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>&Maßstab anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Strg+Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>&Relationen anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Strg+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Linienhintergrund anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Linienrand anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Details (Hervorhebungen) anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Aufzeichnen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pause</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Bilder-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Strg+E</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Urheberrechtswarnung</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Datei kann nicht gespeichert werden.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 konnte nicht geschrieben werden.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Herunterladen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>Hoch&laden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Gehe zu...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Getrennte Richtungsfahrbahnen erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Kreisverkehr erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Relation erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Suchen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Punkte vereinigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Objekt in die Arbeitsebene übertragen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>GPS starten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>GPS erneut abspielen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Strg+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>GPS beenden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>GPS aufzeichnen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>GPS anhalten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Welt-OSB-Manager...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>Ta&stenkürzeleditor...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Richtungspfeile &anzeigen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Flächen&deckung</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exportieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Zulet&zt geöffnet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Zuletz&t importiert</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>Werk&zeuge</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>&Objekt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>&Relation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Haupt-Symbolleiste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Verschieben</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Auswählen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Bearbeiten...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Speichern...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Laden...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Merkmale einfügen (Ü&berschreiben)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>&Merkmale einfügen (Vereinen)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Vereinigen...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>Mitglied &hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>Mitglied &entfernen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Niemals</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>Für &Einbahnstraßen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Immer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Loslösen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Einen Punkt von einer Linie lösen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Offline arbeiten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Punkt an derselben Position gefunden.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Möchten Sie alle Punkte an der Zielstelle vereinigen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Hoch</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Niedrig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Undurchsichtig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Datei</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Bearbeiten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Ansicht</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Details</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Richtungspfeile</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Ebenen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Erstellen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Objekt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Punkt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Linie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relation</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>GPS Exchange-Format (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMap-Format (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>OSM Änderungsformat (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Noni GPSPlot-Format (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>NMEA GPS-Logformat (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KML-Datei (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Kommagetrenntes Format (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Georeferenzierte Bilder (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESRI Shapedatei (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Geography Markup Language (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation>Protobuf Binärformat </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartor-Dokument (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Linie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Lade Bild</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Position des Punkts zu Bild hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Bild mit dieser Position georeferenzieren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Werkzeuge</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Fenster</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Hilfe</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>Objekte ausschneiden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation>Datei importieren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Punkt %1 lösen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Mitglied zu einer Relation hinzufügen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Ein Mitglied aus einer Relation entfernen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation>Historie neu erstellen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation>Objektextrahierung</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation>Extrahiere Objekte....</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation>Werkzeugbeschriftung verbergen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Tagging-Vorlagen speichern</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartor-Taggingvorlagen (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Tagging-Vorlagen öffnen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Entferne Mitglied '%1' aus %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Sie wollen eine KML-Datei importieren. Bitte beachten Sie: - Sie können keine mit Google Earth erstellten KML-Dateien in OSM importieren. Auch wenn Sie denken die erzeugten Daten gehören nur Ihnen, stimmt das nicht! Die Daten sind ein abgeleitetes Werk von GE und können deshalb in OSM nicht verwendet werden. - Falls Sie die Daten aus dem Internet heruntergeladen haben liegt höchstwahrscheinlich ein Copyright darauf. Stellen Sie sicher, dass die Nutzung in OSM vom Autor genehmigt ist, oder die Daten gemeinfrei sind. Falls Sie unsicher sind suchen Sie Hilfe auf den "legal", "talk" oder "talk-de" OpenstreetMap-Mailinglisten Sind Sie sicher, dass diese KML-Daten legal in OSM importiert werden dürfen?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Lädt Kartendaten für ein neues Gebiet herunter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Änderungen zum Server hochladen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Ausgewählte Objekte entfernen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Neue Linie erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Neuen Punkt erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Linienrichtung umkehren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Linie in einzelne (verbundene) Linien teilen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Verbundene Linien zu einer vereinen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Trennen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Verbundene Linien auftrennen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Neue Fläche erstellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>In einer Datei speichern</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Lädt mehr Kartendaten für das aktuell sichtbare Gebiet herunter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Punkte ausrichten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Ausgewählte Objekte und Merkmale in die Zwischenablage kopieren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Merkmale einfügen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Merkmale aus der Zwischenablage einfügen (mit existierenden Merkmalen vereinen)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Einfügen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Objekte aus der Zwischenablage einfügen.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Punkt von einer Linie lösen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Eigenschaften</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Info</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoreferenziertes Bild</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stile</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Stile-Fenster zeigen/verstecken</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (intern)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Loch hinzufügen.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Möchten Sie ein (weiteres) Loch in die äußere Fläche einfügen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Kann Projektionsdatei nicht laden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projections.xml" konnte nirgendwo geöffnet werden. Abbruch.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Kreuzung erstellen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Ungültige Projektion</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Projektion "%1" kann nicht eingestellt werden.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Strg+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>Abschaltbare &Dialoge zurücksetzen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS-Menu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Kamera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>&Kreuzung erstellen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Kind-Elemente löschen.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Merkmale für mehrere Objekte setzen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Flächen-Aktionen</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Punkt-Aktionen</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>LINKSKLICK: Starten;ZIEHEN: Skalieren;SHIFT+ZIEHEN: Drehen;LINKSKLICK: Beenden</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Polygon-Aktionen</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Polygon %1 erstellen</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Kreisverkehrs-Aktionen</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Linien-Aktionen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Editier-Aktionen</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Punkt verschieben</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Punkt %1 verschieben</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>LINKSKLICK: auswählen;LINKS ZIEHEN: verschieben</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Punkt-Verscheibe-Aktionen</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>DARÜBERHALTEN: Auswählen;ZIEHEN: Drehen</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Drehungs-Aktionen</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>Objekt drehen</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>LINKSKLICK in erste Ecke -> LINKS ZIEHEN um Gebiet zu wählen -> LINKSKLICK zum zoomen</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Zoom-Aktionen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Polygon erstellen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Anzahl der Seiten angeben</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Hochladen des Objekts erzwingen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>Hochladen erz&wingen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>&Drehen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Strg+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Mehrfachkreuzung</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Diese Linien schneiden sich mehrfach. Möchten Sie trotzdem für jeden Schnittpunkt eine Kreuzung erstellen (ungewollte Kreuzungen können danach noch gelöscht werden)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>&Objekt(e) einfügen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Objekte</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>&Virtuelle Punkte anzeigen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>%1 Merkmale von %2 löschen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Mitglieder in Relation %1 ordnen</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation>Linie %1 extrudieren</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation>DARÜBERHALTEN: Auswählen;ZIEHEN: Skalieren</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation>Skalieren-Aktionen</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation>Objekt skalieren</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation>"source" Merkmal für %1 setzen</translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b> </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>Stand: </i><b>%1</b&gt; von <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>Stand: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>Ebene: </i><b>%1</b> </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation>Im Browser anzegen</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>Größe</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>Mitglieder</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Oben Links</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Unten rechts</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relation</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Rolle</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Mitglied</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Linie</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>Koordinate</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Punkt</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 Punkte</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Länge</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>Geschlossene Linie</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Größe</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Fläche</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>Höhe</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>Geschwindigkeit</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Punkt</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>Beschreibung</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>Kommentar</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation>%1 m/Pixel</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation>Ausrichten: %1m @ %2</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation>%1ms</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Ansicht</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Koordinatenbereich</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Projektion</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Neuer Server</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Hochladen der Einstellungen fehlgeschlagen</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Schlüssel duplizieren</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Mehr als 150 Einstellungen</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Neues Lesezeichen</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Merkmale</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Ausgewählte Elemente</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Klasse</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Name</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Unbekanntes Feld</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Fehler!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Server für Namenssuche nicht gefunden.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Server für Namenssuche hat Verbindung abgelehnt.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Server für Namenssuche benötigt Beglaubigung.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Unbekannter Fehler.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Formular</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Ausgabedateiname</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>PDF Dateien (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>unbenannt</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Bilddateien (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG-Dateien (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Raster/SVG Export</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Optionen</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>min. Breite/Länge</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>max. Breite/Länge</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Punkte anzeigen</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Relationen anzeigen</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Maßstab anzeigen</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>Koordinatengitter anzeigen</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation>Elemente ohne Stil anzeigen</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Als PDF exportieren...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Als SVG exportieren...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>Als Rasterbild exportieren...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Benutzer:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation>Passwort</translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Immer</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Farbe auswählen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Kartenstil-Editor</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Hinzufügen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Entfernen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Auswahlausdruck</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>Meter/Pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Sichtbar bis zu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Sichtbar ab Massstab</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Proportionale Breite</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Feste Breite</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Strichliert</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>von</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Fläche füllen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Symbol zeichnen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplizieren</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Hintergrund</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation>Punkte</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Farbe</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation>Mit Symbolen füllen (definiert bei Details)</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Rand</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation>Innen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation>Außen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Details</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Stufen zeichnen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation>Zeichne Fahrtrichtungsmarkierungen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Beschriftung</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Schriftart</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Beschriftungsmerkmal</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Hintergrundfarbe</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Beschriftung mit Hintergrund-Merkmal</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Fläche</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Global</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Keine gültige Georefernzierung</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>Beschriftung</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation>Dieses Foto enthält keine geokodierten EXIF Daten. Was wollen sie als nächstes tun?</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>Übereinstimmung mit GPS-Punkten versuchen</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Ohne dazugehörigem Punkt laden</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Extrahiere Infos aus dem Barcode (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignorieren</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Auf alle aktuellen Fotos anwenden.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Ausgabedateiname</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>unbenannt</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Alle Dateien (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Bilddateien (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG-Dateien (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Einstellungen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visuell</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Allgemein</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Herein-/Hinauszoomen (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Durchsichtigkeit niedrig/hoch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation>Darstellung</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Optionen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation>Anti-aliasing verwenden</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation>Anti-alisaing beim Verscheiben ausschalten</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation>Bearbeitungmodus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation>Schnell</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation>Drahtgitter</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation>Immer rendern</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Kartenstil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Benutzerdefiniert</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>Vorlage automatisch laden</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation>GDAL</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation>Projektion bestätigen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Kennwort:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Netzwerk</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Proxy-Einstellungen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Proxy verwenden</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Host:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Port:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Hintergrundbild</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Cache-Verzeichnis</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Cache-Größe (in MB; 0 um keinen Cache zu verwenden)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Kartenadapter</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Daten</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokumente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Dokumente nach dem Hochladen automatisch speichern</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Eingebaut</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>GPS-Spuren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Spuren beim Öffnen automatisch extrahieren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Stile für GPS-Ebenen deaktivieren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Farbe auswählen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Werkzeug existiert bereits</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Ein Werkzeug dieses Namens existiert bereits. Wählen Sie einen anderen Namen oder klicken Sie auf <Übernehmen>, um das bestehende zu modifizieren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Kann Werkzeug nicht löschen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Kann Werkzeug "%1" nicht löschen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Kann den Namen des Werkzeugs nicht ändern</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Kann den Namen von Werkzeug "%1" nicht ändern</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Werkzeugprogramm wählen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>Vorlage auswählen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Merkaartor Dokument (*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Log-Verzeichnis wählen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Farben</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Hintergrund</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Darüberhalten</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Fokus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relationen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>Erstellen neuer Punkte/Linien im Auswahlmodus zulassen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>Ungespeichert</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation>OSM API (URL ist z.B. "http://www.openstreetmap.org/api/0.6")</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation>Nominatim (Geo-Suche)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>NMEA-Log speichern</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Computer-Uhr mit GPS sychronisieren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation>Netzwerk Timeout (Sek.)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>JOSM-kompatiblen lokalen Server auf Port 8111 aktivieren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>Beim Erstellen von Objekten vor einer Hintergrundkarte automatisch "source" Merkmal anfügen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Werkzeuge</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Name:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Pfad:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Anwenden</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Hinzufügen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Entfernen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Sprache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Sie müssen das Programm möglicherweise neustarten, damit die Änderungen wirksam werden.</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Sprache:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Tagging-Vorlagen übersetzen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixel</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Separater Verschieben-Modus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Bedienung mit einer Maustaste</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Eigener Qt-Stil:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Stil ersetzen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Vorlage</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Tagging-Vorlage</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Keine GPX-Punkte verbinden, die weiter auseinander liegen als (in km; 0 zum Deaktivieren)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Kachelpuffer (aus rechtlichen Gründen für Yahoo deaktiviert)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor-Taggingvorlage (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>GPS-Spur-Ebenen per Vorgabe schreibgeschützt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Eigenes Verzeichnis für Stile</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Aktueller Stil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Englisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation>Kroatisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Tschechisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Deutsch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Französisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Ungarisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italienisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Japanisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polnisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Brasilianisches Portugiesisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Benutzer:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Hervorheben</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPS-Spur</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Einfache Darstellung der GPS-Spur</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>GPS-Input</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>GPSD</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Seriell</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Server</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Virtuelle Punkte (neue Sitzung erforderlich)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Niederländisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugiesisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slowakisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Spanisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Schwedisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrainisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Versteckte Relationen auswählbar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Schnittstelle</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Projektionen einrichten</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Projektionen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Liste der Projektionen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Name:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>PROJ4-Optionen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Anwenden</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Hinzufügen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Entfernen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation>Bitte geben Sie die Projektion an</translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Dokument</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Vordefiniert</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>Standard (EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>Eigene PROJ4 Def. (+proj=...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation>WKT</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation>Fehler in der WKT Zeichenkette</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation>Kann nicht im PROJ4 format exportieren</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation>Ungültige WKT Zeichenkette</translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Eigenschaften</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Eigenschaften</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Eigenschaften - Mehrere Elemente</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Eigenschaften - Relation</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Eigenschaften - Linie</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Zentriere Karte</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Zentriere && zoome Karte</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 gewählte(n) Elemente(n)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 gewählte(n) Elemente(n)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Ausgewählte Elemente</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Fehler beim Laden der Vorlage</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Mitglied auswählen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Eigenschaften - Punkte</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>Exportiere GPX...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation>Importieren…</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation>Importiert: %1</translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Kaskadiertes Aufräumen</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Setze Merkmal '%1=%2' für %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>%1 Merkmal von %2 löschen</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Punkt %1 verschieben</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>osmChange importieren</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>NGT importieren</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>NMEA importieren</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation>Bing Straßen-Erkennung</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation>Bekomme keine Ausgabe.</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation>keine gültigen Daten.</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation>Kann die Ausgabe nicht interpretieren.</translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Ungültig</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation>Kein Fix</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation>Keine Zeitangabe</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Meter</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Nicht verfügbar</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation>Fix OK</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Fehler in GPS-Aufzeichnung</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>GPS-Logdatei %1 kann nicht erstellt werden.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Verbindung zu %1:%2 nicht möglich</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Fehler in GPS-Aufzeichnung</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>GPS-Logdatei %1 kann nicht erstellt werden.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>Beschriftung</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99° 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Längengrad</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Höhe</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 Meter</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation>Satellitenzahl</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Fix-Typ</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Ungültig</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Geschwindigkeit</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Breitengrad</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Ungültiger Ergebnisdatenstrom!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< T R E N N E R ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Symbolleisten anpassen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Aktionen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Symbolleisten</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Neu</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Entfernen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Umbenennen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Alles wiederherstellen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Anwenden</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Hoch</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>Herunter</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation>Aktuelle Aktionen</translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Eigene Symbolleiste</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Mitglieder</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Ausgewählte Mitglieder entfernen</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Merkmale</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>"source" Merkmal hinzufügen</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation>Ausgewählte(s) Merkmal(e) löschen</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>ID</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Merkmale</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>"source" Merkmal hinzufügen</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation>Ausgewählte(s) Merkmal(e) löschen</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Keine Satelliten</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Auswahl</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Schlüssel</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Wert</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Name</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Abfrage</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation>Max. Resultate (0=Alle)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>ID</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Ansicht zurücksetzen</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation>Ebene aktualisieren</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Schließen</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Stile</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Stile</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Bitte überprüfen Sie sorgfältig die Änderungen, die an OSM gesendet werden.</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Zu Openstreetmap hochladen</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Bitte geben Sie einen Kommentar für die Änderungen ein.</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>TMS-Server einrichten</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMS-Server</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serverliste:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Name:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Server-URL:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Services abrufen</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Services :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a>-Server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projektion:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Kachelgröße:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Min. Zoom:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>Max. Zoom:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>Wert für "source" Merkmal:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>URL der Lizenz:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Breite/Länge (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Ursprung ist unten links</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Anwenden</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Hinzufügen</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Entfernen</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: GetServices</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adresse und Pfad dürfen nicht leer sein.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Herunterladen fehlgeschlagen: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Fehler beim Lesen der Services. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Schlüssel</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Wert</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Hinzufügen...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Formular</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>OR</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>AND</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>NOT</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>is</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>isoneof</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Undefiniert</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Undefiniert</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Gebäudeunterteilung</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Keine Hausnummern</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Anzahl der Häuser</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Hausnummern hinzufügen (Karlsruher Schema)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Bereiche</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Zum Beispiel "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Muster</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Alle Nummern</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>ungerade Nummern</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>gerade Nummern</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation>Zusätzlich können sie einen Punkt der Fläche auswählen. Die Haus-Nummerierung wird dort beginnen.</translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>Anzahl GPS-Spur-Segmente</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Gesamtdistanz</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Gesamtdauer</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Auszug - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Zeichnungsebene extrahieren</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Schließen</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Punkt</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Breitengrad</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Längengrad</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>ID</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Merkmale</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>"source" Merkmal hinzufügen</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation>Ausgewählte(s) Merkmal(e) löschen</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Website</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Kennwort</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Benutzername</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Proxy verwenden</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Löschen</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: GetCapabilities</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adresse und Pfad dürfen nicht leer sein.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Herunterladen fehlgeschlagen: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation>Unbenannt</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Fehler beim Abrufen der Fähigkeiten. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>WMS-Server einrichten</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMS-Server</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serverliste:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Name:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Ebenen:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projektion:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Bildformat:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Stile:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dies ist ein zwischenspeichernder WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> Server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>Kacheln</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Zoomstufen</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>Wert für "source" Merkmal:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>URL der Lizenz:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Anwenden</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Hinzufügen</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Entfernen</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Server-URL:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_es.ts�����������������������������������������������������0000664�0000000�0000000�00001114703�11770671653�0021723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="es"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Acerca de Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>Etiqueta de texto</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Este programa esta licenciado bajo la Licencia Publica GNU v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Registro de cambios</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>Aceptar</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Descripción</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Atajo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exportar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>Pre&determinado</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&Aceptar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Cancelar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Editor de Atajos</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Cargar esquema de Atajo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Esquema de atajos Merkaator (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Incapaz de abrir archivo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 no pudo ser abierto</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Guardar esquema de Atajos</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>sin nombre</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Todos los archivos (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>No se puede abrir el archivo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 no pudo ser abierto para su escritura.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Sin descripción</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Conducir por el lado derecho de la carretera</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Distancia entre dos carreteras</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Conducir por el lado derecho de la carretera</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Deshacer</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centrar mapa y hacer zoom</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Deshacer</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Limpieza</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>AÑADIR carretera %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>Añadir Puntodepista %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>AÑADIR relación %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>ACTUALIZAR punto de ruta %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>ACTUALIZAR relación %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>ACTUALIZAR ruta %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>REMOVER punto de vista %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>REMOVER ruta %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>ELIMINAR relación %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Error cargando la petición de subida</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Compruebe su nombre de usuario y contraseña en el menú Preferencias</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Hubo un error al subir ésta petición (%1) El mensaje del servidor es '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> El mensaje de la API es '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>ABRIR cambios</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>CERRAR cambios</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Subiendo cambios...</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Error cargando la petición de subida</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Compruebe su nombre de usuario y contraseña en el menú Preferencias</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Hubo un error al subir ésta petición (%1) El mensaje del servidor es '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> El mensaje de la API es '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Comprobando cambios...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>ABRIR cambios</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>CERRAR cambios</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>AÑADIR relación %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>AÑADIR carretera %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>Añadir Puntodepista %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>ACTUALIZAR relación %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>ACTUALIZAR ruta %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>ACTUALIZAR punto de ruta %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>REMOVER punto de vista %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>REMOVER ruta %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>ELIMINAR relación %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>sin nombre</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Capa sucia</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Capa actualizada</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Imágenes de Fondo</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>Exportar OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Exportando OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Documento</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Descargar</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Ubicación</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Marcador</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Vista actual</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Del mapa abajo mostrado (mapa proporcionado por el proyecto OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Tambien descargar Pistas GPS</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Resolver todas las relaciones</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Descarga fallida</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>error</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>No descargó suficiente</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Descargando desde OSM (%n bytes)</numerusform> <numerusform>Descargando desde OSM (%n bytes)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Descargando desde OSM (%n kBytes)</numerusform> <numerusform>Descargando desde OSM (%n kBytes)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Descargando desde OSM (conectando)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Código de estado de http inesperado (%1) El mensaje del servidor es '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> El mensaje de la API es '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Nombre de usuario/contraseña inválido</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Conflictos no resueltos</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Resuelva primero los conflictos existentes</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Descargando puntos</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Analizar XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Descargando puntos de ruta %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Ruta descargada - nodos %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 descarga</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Descargando 'no resueltos' %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Analisis no resuelto %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Conflictos desde %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Se han detectado conflictos</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Esto significa que algunos de los atributos que ha modificado desde su ultima descarga han sido modificadas por alguien mas en el servidor.Los atributos han sido duplicados como "conflicto..." en las capas "conflictos. Antes de que sea capaz de cargar sus cambios,tendra que combinar manualmente las dos versiones y quitar el primero de la capa "conflictos..."</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>caminos/relaciones vacios detectados</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Carreteras o relaciones vacías podrían significar errores. ¿Desea marcarlos para su borrado?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Remover caracteristica vacia %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Descargando %1,%2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Descargando...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Analizando...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Descargando no resueltos...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Subiendo...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Preparando cambios</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Esperando respuesta del servidor</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Cerrar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>No se puede borrar</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exportar</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>¿Qué quieres exportar?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Todos los visibles (i.e. no ocultos)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Visor</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Seleccionado</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Atributos</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centrar mapa y hacer zoom</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Descargar hijos perdidos</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Eliminar</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relaciones</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Carreteras</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>Puntos de Interés</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Todo</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Agregar a seleccion</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Atributos</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Solo caracteristicas compatibles con el puerto de vista</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Buscar...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Restablecer</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Nombre</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Cerrar</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filtros</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Lista de filtros</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nombre:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Añadir</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Eliminar</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geo Imágenes</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Eliminar Imágenes</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Copiar nombre de archivo al portapapeles</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Cargar imágenes geoetiquetadas</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Elige la capa a la que corresponden las siguientes imágenes:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Cargando imágenes ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Abortar carga</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Especificar desplazamiento</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Imágenes en posición más a la:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>fin de la pista</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>Comienzo de la pista</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'segundos'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minutos y' ss 'segundos'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'horas,' mm 'minutos y' ss 'segundos'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>¿Imagen incorrecta?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>La imagen "%1" fue tomada %2 antes de que el siguiente punto de ruta fuera grabado. ¿Deseas seguir usándola?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>La imagen "%1" fué tomada %2 después de que el último punto de ruta fuera grabado. ¿Deseas seguir usándolo?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>No existe el fichero</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Tiempo de espera de red</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>No se puede leer los detalles de la foto desde el servidor Walking Papers.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Capa de Fotos</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>No se puede encontrar la imagen «%1».</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Error al abrir "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Sin puntos de ruta</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Puntos de ruta no encontrados para la imagen "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>Imágenes JPEG (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Error en la carga de datos EXIF desde "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Error al abrir "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Seleccionar siguiente imagen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>AvPág</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Seleccionar imagen previa</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>RePág</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Dirección</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>¡La dirección especificada no es válida!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Formato de Coordenadas inválido</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Formato de las coordenadas: '<left lon>, <botton lat>, <right lon>, <top lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Formato de las coordenadas: '<center lat>, <center lon>, <span lat>, <span lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Ir A</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Marcador</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>lonMin, latMin, lonMax, latMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>latCent, lonCent, latSpan, lonSpan</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Información</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>Dirección de API OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>Dirección de XAPI OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Buscar</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Ninguno</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Adaptar forma</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Cerrar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>Adaptador WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>Adaptador TMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Complementos</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Mapa - Ninguno</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mapa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Mapa - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Mapa - WMS-Tiled - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mapa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mapa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Tamaño de la tesela</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Proyección</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Cadena</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Entero</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Número Flotante</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Longitud</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Latitud</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Poyeccion invalida</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Archivo inválido</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 no pudo ser abierto</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 no es un archivo de configuración de importación CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>sin nombre</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Todos los archivos (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 no pudo ser abierto para su escritura.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Entrada</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>Vista previa OSM</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Especificaciones</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>La primera linea contiene encabezado</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Delimitador</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Coma (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Punto y coma (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tab</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Otro:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Ninguno</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>Comillas dobles (")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Campos</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Lista de Campos:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Tipo de campo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importar</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importar rango</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Cargando opciones...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Guardando configuraciones...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Información</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n caracteristica</numerusform> <numerusform>%n caracteristicas</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Tamaño</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Atributos</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Mostrar Todos</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Ocultar Todo</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Capas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Todo</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Mapa</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Trazas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Todos Solo lectura</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Ninguno Solo lectura</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Cerrar</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Visible</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Sólo Lectura</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Bajo</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Opacidad</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Formulario</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>No me pregunte esto de nuevo</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Cargando complementos...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Iniciando...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Borrar etiqueta «%1» en %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Crear área %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Area: Crear camino %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Area: Terminar Camino %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Area: Añadir nodo %1 a camino %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Cerrar Área %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Añadir nodos a camino de doble via %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Crear carretera de doble vía %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Crear nodo en carretera: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Crear rotonda %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Crear nodo %1 en carretera %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Crear carretera: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Crear nodo: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Añadir nodo %1 to camino %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Encontrados varios nodos en la misma posición.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>¿Desea combinar todos los nodos en el punto de reunión?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Combinar nodos en %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Eliminar característica %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>mosaico %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Propiedades...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Bajo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Archivo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Editar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Capas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Crear</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Característica</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Nodo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Dirección</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relación</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Herramientas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Ayuda</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Contenido inválido en el portapapeles</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Portapapeles no contiene datos validos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Cambios no guardados</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>El mapa actual contiene cambios no guardados que serán perdidos al empezar uno nuevo. ¿Deseas cancelar o quieres continuar y descartar los cambios?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Puntos de referencia</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Traza %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Enorme advertencia de copyright</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Estás intentando importar un archivo KML. Ten en cuenta que: - No puedes importar a OSM un archivo KML creado por Google Earth. Aunque creas que los nodos que has creado desde GE son tuyos, ¡no lo son! Todavía hay trabajo derivado por parte de GE, y por lo tanto, no puede ser usado en OSM. - Si lo has descargado desde internet, hay posibilidades de que tenga copyright. Tienes que estar absolutamente seguro de que usar esos datos en OSM está permitido por el autor, o que los datos son de dominio público Si no estás seguro, deberías preguntar en las listas "legal" o "talk" de correo de openstreetmap. ¿Estás absolutamente seguro de que este KML puede ser importado legalmente en OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Archivo no válido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 no pudo ser abierto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Detectada versión antigua de Qt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Tu configuración usa Qt %1, el que contiene varios errores conocidos en subidas de datos a OpenStreetMap que conducen a códigos 401 en las respuestas de los servidores.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Subir OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Parece que no has especificado todavía tu nombre de usuario y contraseña OpenStreetMap ¿Deseas hacerlo ahora?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Error descargando</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>El mapa no pudo ser descargado</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Error descargando OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Unir carreteras</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Dividir carreteras</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Romper Carreteras</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Tiempo de espera de red</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>No se puede contactar con OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Error al cerrar el bug</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>No se puede eliminar el bug. El mensaje del servidor es: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Añadir números de calles</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Alinear nodos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Separar nodo %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Añadir miembro a la relación</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Eliminar miembro de la relación</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Crear relación %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Guardar estilo de mapa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Estilo de mapa Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Cargar estilo de mapa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Formatos soportados</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Guardar documento Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>sin nombre</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Archivos de documentos Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Todos los archivos (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Formato GPS Exchange (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Formato OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Formato Noni GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>formato de registro NMEA GPS (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>Archivo KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Formato separado por comas (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Imágenes geoetiquetadas (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>Archivo de forma ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Documento Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Ruta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Cargar imagen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Agregar posicion del nodo a la imágen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>No se puede abrir el archivo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 no pudo ser abierto para su escritura.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Archivo inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 no es un documento de Merkaartor válido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Export arOSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Archivos OSM (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Exportar osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>Archivos osmChange (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exportar GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Archivos GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exportar KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Archivos KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (entero)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Añadir marcador</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Especificar el nombre del marcador</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Nombre de marcador inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>El marcador no puede estar en blanco.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Aviso: El nombre del Marcador ya existe</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Introducir uno nuevo, mantener el mismo para sobreescribir o cancelar.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Eliminar Marcador</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Seleccionar el marcador a eliminar.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>Error del GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Incapaz de abrir el puerto GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Abrir archivo de registro NMEA</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Guardar plantillas de etiquetado</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Plantillas de etiquetas Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Plantillas de Etiqueta Abierta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>Ay&uda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Crear</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Carretera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Editar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Ver</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Marcadores</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Establecer &proyección</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Mostrar flech&as de dirección</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Establecer &opacidad de Áreas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Archivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exportar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Abrir re&ciente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Importado recien&te</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>H&erramientas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>E&stilo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Nodo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Ventana</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Puertos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Carac&terística</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Capas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&ación</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Salir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Acerca de</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Abrir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Crear un documento nuevo e importar un archivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zoom &todo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zoom &ventana</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Hacer zoom a la ventana</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>A&lejar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>A&cercar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Acercar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Enlace curvo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Deshacer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Rehacer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Mover</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importar un fichero en el documento actual</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Descargar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Descargar datos de mapa para un área nueva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Enlace</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Crear enlace</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Seleccionar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Cargar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Subir cambios al servidor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Eliminar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Eliminar características seleccionadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Borrar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Crear carretera nueva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Crear nuevo nodo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Revertir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Revertir direccion de ruta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Ir a...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Doble via de transporte</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Crear vía de doble sentido</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Crear rotonda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nuevo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Crear un documento nuevo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Partir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Camino dividido en caminos separados (conectados)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Unir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Unir carreteras conectadas en una única carretera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Separar en dos partes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Romper</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Separar carreteras conectadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lación</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Crear relación</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>Áre&a</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Crear área nueva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Editar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Guardar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Cargar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>Ruta &curvada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Preferencias...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Todo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exportar todas las capas visibles a un archivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Encontar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Encontrar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Encontrar y seleccionar elementos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Verpuerto...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exportar las características en pantalla a un fichero</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Añadir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>Elimina&r...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>Co&mbinar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Combinacion de Nodo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Combinar los nodos seleccionados (el primero permanecerá seleccionado)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Guardar &Como...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Guardar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Guardar a archivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Descargar más</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Descargar más datos de mapa para el área catual</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Descargar la vista actual a la capa de descarga anterior</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Propiedades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Ocultar/Mostrar la barra de Propiedades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Ocultar/Mostrar la barra de Capas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Información</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Ocultar/Mostrar la barra de Información</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Alinear</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Alinear nodos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Alinear nodos seleccionados.Los dos primeros seleccionados dan la linea</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Propagación</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Ocultar/Mostrar la barra de Acciones</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Mostrar áreas &descargadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Copiar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Copiar las características seleccionadas y las etiquetas al portapapeles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Copiar las etiquetas de las características seleccionadas al portapapeles; si la característica es un señalizador, copiar también las coordenadas.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Pegar Etiquetas (&Reescribir)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Pegar (y sobreescribir) las etiquetas en el portapapeles a la funcion seleccionada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Pegar Etiquetas (&Combinar)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Pegar Etiquetas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Pegar etiquetas desde el portapapeles (Combinar con etiquetas existentes)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Combinar las marcas en el portapapeles con las de la característica seleccionada.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Seleccionado...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>Im&primir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Descargar hijos perdidos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>Cor&tar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Escalar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Pegar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Pegar caracteristicas desde el portapapeles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Pegar las caracteristicas en el portapapeles; si las caracteristicas ya estan en el documento, reescribalas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binario)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Confirmar característica en la capa temporal</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Confirmar la característica seleccionada desde una capa no-cargable (p. ej. Pista o Extracto) a la capa temporal, lista para cargar.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Activar/desactivar barra de herramientas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Ocultar/Mostrar la Barra de Herramientas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Ocultar Todo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Mostrar Todos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Capa de &imagen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Editor de servidores WMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>&Editor de servidores TMS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Subdividir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Subdividir segmento de forma equitativa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>S&implificar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>&Editor de Filtros...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>&Ninguno</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Dividir área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Terraza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Editor de barra de herramientas...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Barra de herramientas principal</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Iniciar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Iniciar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Reproducir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Reproducir GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Ocultar/Mostrar la barra GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>D&etener</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Detener GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centrar en GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Mostrar pistas &segmentos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Mostrar e&scala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Mostrar &relaciones</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Mostrar las carreteras de fondo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Mostrar el límite de las carreteras</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Mostrar retoque</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Grabar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Grabar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pausar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pausar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoImagen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Ocultar/Mostrar la barra de GeoImágenes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Gestor de World OSB...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Editor de Atajos...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>Co&mbinar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Añadir miembro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>Elimina&r miembro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nunca</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>para &Pistas de un camino</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Siempre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Detalle</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Separar nodo de una carretera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Separar nodo de una carretera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Trabajar desconectado</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>E&stilos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Ocultar/Mostrar la barra de Estilos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Agregar &números de calle (Karlsruhe scheme)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>&Fijar zoom al mosaico del fondo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Editor de &Proyecciones...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Mostrar Fotos en el ma&pa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Forzar Eliminación</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Cerrar</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relacion Modificada %1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Eliminar miembro '%1' en %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Conflictos no resueltos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Resuelva primero los conflictos existentes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Se recomienda encarecidamente guardar los cambios en el documento tras una carga. ¿Desea hacerlo ahora?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Establecer etiquetas en %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Añadir un agujero.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>¿Desea añadir un agujero (u otro) a este área?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>No se puede cargar archivo proyecciones</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projections.xml" no se puede abrir en cualquier lugar. Abortando.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Archivos abiertos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Crear Salida</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Poyeccion invalida</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>No se puede estabecler proyección "%1"</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Reiniciar estado de dialogos descartables</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Menu GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Cámara</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Crear &Salida</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Eliminar Infantes.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Establecer etiquetas en multiples funciones</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Crear Area de Interaccion</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Crear nodo de interaccion</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>CLICK IZQUIERDO para inciar;ARRASTRAR para escalar;SHIFT+ARRASTRE para rotar;CLICK IZQUIERDO para terminar</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Crear Poligono de Interaccion</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Crear polígono %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Crear interaccion en rotonda</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Crear via de interaccion</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Editar Interaccion</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Mover nodos</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Mover nodo %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>CLICK IZQUIERDO para seleccionar;ARRASTRE IZQUIERDO para mover</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Mover nodo de interaccion</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Rotar interaccion</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>Click-izquierdo a la primera esquina -> Arrastre-izquierdo al area especifica ->Click izquierdo para ampliar</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Zoom interactivo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Crear polígono</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Especificar el numero de lados</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Forzar descarga de características</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>Carga &forzada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Mostrar no&mbres</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Rotar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Intersección múltiple</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Las vías tienen múltiples intersecciones. ¿Todavía desea crear una unión para cada uno (los cruces no deseados puede ser suprimidos después)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Pegar caracteristica o caracteristicas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Atributos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Mostrar nodos &virtuales</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>Ultimo: </i><b>%1</b&gt; by <b>%2</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>Ultimo: </i><b>%1</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>layer: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>tamaño</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>miembros</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Arriba a la izquierda</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Botright</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relación</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Rol</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Miembro</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Longitud</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Tamaño</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>nodos %1</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Dirección</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Área</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>coordenada</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>elevación</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>velocidad</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Punta de referencia</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>descripción</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>comentario</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Nodo</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Recuadro delimitador</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Proyección</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nuevo Servidor</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Preferencias de carga</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Duplicar clave</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Más de 150 preferencias</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nuevo marcador</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Elementos seleccionados</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Clase</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Nombre</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Campo desconocido.</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>¡Error!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Nombre del servicio del buscador no encontrado</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Nombre del servicio de busqueda administrador niega conexion</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Nombre del servicio de busqueda necesita autentifcacion</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Error desconocido.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Formulario</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Nombre de archivo de salida</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>sin nombre</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Todos los archivos (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Archivos de imagen (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>Archivos SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Opciones</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>min lat/Lon</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>máx lat/Lon</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Mostrar Escala</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Exportar a PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Usuario:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Siempre</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Seleccionar color</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Editor de estilo de mapa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Global</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Fondo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Añadir</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Eliminar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplicar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Selección de etiqueta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>metro/píxel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Visible desde arriba</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Visible desde escala</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Dibujar con color</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Espesor proporcional</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Grosor fijo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Línea discontinua</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>off</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Rellenar área</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Borde</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Retocar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Dibujar pasos</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Dibujar icono</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Etiqueta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Tipografía</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Marcar etiqueta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Área</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Dibujar con color de fondo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Etiqueta con marca de fondo</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>Etiqueta de texto</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Obtener información desde código de barras (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignorar</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Hacerlo para todas las fotos actuales</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Nombre de archivo de salida</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>Archivos SVG (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>sin nombre</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Todos los archivos (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Archivos de imagen (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Diálogo</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Inglés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Árabe</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Checo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Alemán</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Húngaro</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italiano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Japonés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polaco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Portugués (Brasil)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Ruso</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Directorio de estilos personalizados</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Plantilla de etiqueta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor plantilla de etiqueta (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Seleccionar color</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>La herramienta ya existe</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Ya existe una herramienta con este nombre. Por favor elija otro nombre o haga clic en el boton <Aplicar> si quiere modificar el existente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>No se puede eliminar una herramienta preconfigurada</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>No se puede eliminar la herramienta preestablecida «%1»</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>No se puede modificar el nombre de una herramienta preconfigurada</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>No se puede modificar el nombre de la herramienta preconfigurada «%1»</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Seleccionar herramienta ejecutable</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Seleccionar el directorio de registros</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Preferencias</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Sitio</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Puede que necesite reiniciar el programa para que estos cambios tengan efecto</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Utilizar idioma</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Traducir las etiquetas estándar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visual</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>General</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Zoom alejar/acercar (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Opacidad baja/alta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Modo separar mover</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Interacción con un solo botón del ratón</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Utilizar estylo Qt personalizado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Colores</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Fondo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Sobreescribir stilo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Resaltado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Píxeles</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Enfocar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relaciones</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Estilo de mapa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Estilo Actual</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Desactivar estilos para las capas de rutas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Plantilla</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Predefinidos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Personalizado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Datos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Contraseña:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Documentos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>Sucio</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Opciones</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Guardar documentos automáticamente después de cargarlos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Trazas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Extraiga automaticamente todas las pistas abiertas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Pistas de capas sólo lecturas por defecto</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>No conectar los nodos GPX separados por más de (en km; 0 para deshabilitar)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Guardar registro NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Establecer el tiempo del sistema en el GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Red</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Ajustes de proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Utilizar Proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Host:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Puerto:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>Documento de plantilla cargado automáticamente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Habilitar servidor local JOSM-compatible en el puerto 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Imagen de fondo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Almacenar caché (no disponible para Yahoo! debido a restricciones legales)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Directorio de la caché</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Tamaño de la caché (en Mb; 0 para deshabilitar)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adaptador de Mapa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Herramientas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Nombre:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Ruta:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Añadir</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Eliminar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Usuario:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Resaltar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>pista GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Usar apariencia simple de pista GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Entrada GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Serie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Puerto</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Alojamiento (servidor)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Usar nodos Virtuales (requiere reiniciar)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Holandés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugues</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Esloveno</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Español</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Sueco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ucraniano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>relaciones seleccionables mientras esta oculto</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Interface</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Proyecciones</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nombre:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Añadir</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Eliminar</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Documento</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Predefinido</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Propiedades</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 elemento(s) seleccionado(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 elemento(s) seleccionado(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Elementos seleccionados</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Propiedades - elementos multiples</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Propiedades - Camino</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Propiedades - Relacion</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Propiedades</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centrar mapa y hacer zoom</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Seleccionar miembro</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Propiedades - Nodo</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Limpieza en cascada</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Establecer etiqueta '%1=%2' en %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Borrar etiqueta «%1» en %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Mover nodo %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Import osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importar NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importar NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Inválido</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metros</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>No disponible</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Error de registro GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Incapaz de crear archivo de registro GPS: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Error de registro GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Incapaz de crear archivo de registro GPS: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>Etiqueta de texto</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Longitud</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Altitud</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metros</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satélites</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Fijar tipo</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Inválido</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Velocidad</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Latitud</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>¡Flujo de resultados incorrecto!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< S E P A R A D O R ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Acciones</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Nuevo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Eliminar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Renombrar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Restaurar todo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>Aceptar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>Abajo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Miembros</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Identificador</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Sin satélites</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Selección</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Clave</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Valor</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Nombre</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Consulta</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Identificador</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Reiniciar vista</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Cerrar</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Estilos</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Estilos</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Revise minuciosamente los cambios enviados a OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>Aceptar</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Subir a Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Por favor,especifique un comentario para cambio de opciones</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Configuración de los servidores TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Servidores TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Lista de servidor:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nombre:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL del servidor:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Obtener Servicios</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Servicios :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Este es el &quot;standard&quot; de un servidor <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a></span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Proyección:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Lat/Lon (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Añadir</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Eliminar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: Obtener Servicios</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Dirección y ruta no pueden estar vacíos.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Descarga fallida: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Error al leer servicios. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Clave</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Valor</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Editar esto para añadir...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Formulario</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>AND</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Indefinido</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Indefinido</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Número de casas</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Añadir Casa de Numeración (régimen de Karlsruhe, Alemania)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Rangos</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Por ejemplo "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Patrón</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Todos los números</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Números impares</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Números pares</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># de los segmentos de la pista</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Distancia total</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Duración total</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extraer - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Extraer capa de dibujo</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Cerrar</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Punto de ruta</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Latitud</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Longitud</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Identificador</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Sitio Web</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Contraseña</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Nombre de usuario</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Utilizar proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Puerto</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Limpiar</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: Tener Capacidades</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Dirección y ruta no pueden estar vacíos.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Descarga fallida: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Error al leer las capacidades </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Configurar servidores WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Servidores WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Lista de servidor:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nombre:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Capas:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Proyección:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Formato de imagen:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Estilos:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation>Copy text \t <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Niveles de Zoom</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Añadir</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Eliminar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL del servidor:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> �������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_et.ts�����������������������������������������������������0000664�0000000�0000000�00001077423�11770671653�0021733�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="et"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Teave Merkaartor'ist</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Muudatuste logi</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Import</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Eksport</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Vaikimisi</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Katkesta</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 ei saa avada.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Kõik failid (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 ei saa kirjutamiseks avada.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Nullimine</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Järjehoidja</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 allalaadimine</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation type="unfinished"></translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Kõik</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Rakenda</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Lisa</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation type="unfinished"></translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation type="unfinished"></translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Järjehoidja</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 ei saa avada.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 ei ole CSV impordi sätete fail</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Kõik failid (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 ei saa kirjutamiseks avada.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Layer</name> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n tunnus</numerusform> <numerusform>%n tunnust</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Kõik</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 ei saa avada.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Lisa tänava number</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Katkesta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Kõik failid (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 ei saa kirjutamiseks avada.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 pole õige Merkaartori dokument.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Lisa järjehoidja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Abi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Loo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Redigeerimine</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Vaade</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Järjehoidjad</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Fail</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Eksport</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stiil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Aken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Välju</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Info</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Ava</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Võta tagasi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Tee uuesti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Liiguta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Import</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>Allalaa&dimine</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Vali</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Lae üles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Mine...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Uus</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Liitu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Jaga kaheks</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Ala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Redigeeri...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Salvesta...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Lae...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Eelistused...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Kõik...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Otsi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>Lis&a...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Eemalda...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Liida</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Salvesta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Omadused</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Info</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Joonda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Sõlmede joondamine</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopeeri</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Käivita</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Ühenda...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Lisa liige</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Eemalda liige</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Mitte kunagi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Alati</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Haagi lahti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Töötamine võrguta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stiilid</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Kaamera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>&Puudub</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 punkti</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Ala</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Kõik failid (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Alati</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Tagapõhi</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Lisa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Ala</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Kõik failid (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Araabia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Portugali (Brasiilia)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Tagapõhi</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Sisseehitatud</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Taustapilt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Rakenda</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Lisa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Rakenda</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Lisa</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 valitut</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 valitut</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Katkesta</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Kõrgus</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 meetrit</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satelliti</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation type="unfinished">00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< E R A L D A J A ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Tegevused</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Rakenda</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Katkesta</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation type="unfinished"></translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation type="unfinished"></translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Katkesta</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Rakenda</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Lisa</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>JA</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># rajaosa</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1t %2m</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Tühi</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Rakenda</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Lisa</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation type="unfinished"></translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_fr.ts�����������������������������������������������������0000664�0000000�0000000�00001137453�11770671653�0021732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="fr"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>A propos de Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Ce programme est publié sous Licence Publique GNU v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Version de Merkaartor</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">Versio de QT</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Version de PROJ4</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Version de GDAL</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet et autres, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Historique des changements</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Description</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Raccourci clavier</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importer</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exporter</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>Par d&éfaut</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Annuler</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Editeur de raccourci</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Charger schéma de raccourcis</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Schéma de raccourci Merkaartor (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Impossible d'ouvrir le fichier</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 n'a pas pu être ouvert.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Sauvegarder schéma de raccourci</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>sans titre</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Tous les fichiers (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Impossible d'ouvrir le fichier de sauvegarde</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 n'a pas pu être ouvert en écriture.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Pas de description</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Conduite à droite</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Distance entre deux routes</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Conduite à droite</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centrer la carte</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centrer && Zoomer la carte</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Annuler</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Annuler</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Nettoyer</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Faire un zoom</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Erreur durant le téléversage de la requête</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Une erreur s'est produite durant le téléversage de cette requete (%1) Le message du serveur est '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>AJOUTER route %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>AJOUTER point %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>AJOUTER relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>MODIFIER point %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>RAFRAICHIR la relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>RAFRAICHIR la route %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>SUPPRIMER point %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>SUPPRIMER route %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>SUPPRIMER relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Veuillez vérifier l'exactitude de vos Identifiant et mot-de-passe dans le menu Préférences</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>OUVRIR changeset</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>FERMER changeset</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> Le message de l'API est le suivant '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Envoi des changements...</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Erreur durant le téléversage de la requête</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Veuillez vérifier l'exactitude de vos Identifiant et mot-de-passe dans le menu Préférences</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Une erreur s'est produite durant le téléversage de cette requete (%1) Le message du serveur est '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> Le message de l'API est le suivant '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Une erreur s'est produite lors du téléversement de cette requête (%1) "%2" Veuillez re-télécharger l'objet problématique pour gérer le conflit.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Analyse des changements...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>OUVRIR changeset</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>FERMER changeset</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>AJOUTER relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>AJOUTER route %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>AJOUTER point %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>RAFRAICHIR la relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>RAFRAICHIR la route %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>MODIFIER point %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>SUPPRIMER point %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>SUPPRIMER route %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>SUPPRIMER relation %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>sans titre</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Calque des brouillons</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Couche Téléversé</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Imagerie d'arrière-plan</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>Export OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Exportation OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Document</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Télécharger</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Place</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Marque-page</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Vue actuelle</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>D'après la carte ci-dessous (carte fournie par le projet OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Télécharger aussi les traces GPS brutes</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Résoudre toutes les relations</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>erreur</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>n'a pas téléchargé suffisamment</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Conflits non-résolus</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Veuillez d'abord résoudre les conflits existants</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Téléchargement des points</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Échec du téléchargement</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Nom d'utilisateur/mot de passe non valable</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Téléchargement depuis OSM (connection)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Téléchargement des noeuds %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Analyse XML</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Conflits de %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Téléchargement de %1,%2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Trace - Nœud téléchargés %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 téléchargement</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Téléchargement de la non résolution %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Analyse syntaxique de la non résolution %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Des conflits ont été détéctés</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Ceci signifie que certains des objets que vous avez modifié depuis votre dernier téléchargement on été modifiés par quelqu'un d'autre sur le serveur. Les objets ont été duplicié avec un identifiant "conflict_..." sur la couche "Conflits". Avant de pouvoir téléverser vos changements, vous devrez manuellement fusionner les deux versions et supprimer celle de la couche "Conflits".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Routes/Relations vides détéctées</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Des routes/relations vides sont probablement des erreurs. Voulez-vous les marquer pour suppression ?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Supprimer l'objet vide %1</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Téléchargement en provenance d'OSM (%n octets)</numerusform> <numerusform>Téléchargement en provenance d'OSM (%n octets)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Téléchargement en provenance d'OSM (%n kOctets)</numerusform> <numerusform>Téléchargement en provenance d'OSM (%n kOctets)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Code état inattendu du protocole http (%1) Le serveur a répondu '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> Le message de l'API est le suivant '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Téléchargement...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Analyse...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Chargement des non-résolus</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Envoi en cours...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Préparation des changements</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>En attente de la réponse du serveur</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Fermer</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Faire un zoom</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Suppression impossible</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Suppression totale impossible</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exporter</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Que voulez-vous exporter ?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Tous les éléments visibles (c.à.d. non-cachés)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Vue</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Sélectionné</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Objets</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centrer la carte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centrer && Zoomer la carte</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Charger les sous-éléments manquants</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Supprimer</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relations</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Routes</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>Points d'intérêt</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Tous</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Ajouter à la sélection</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Objets</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Uniquement les objets pleinement dans la vue</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Recherche...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Boîte de dialogue</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Nom</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filtre</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Fermer</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filtres</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Liste des filtres</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nom:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filtre</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Appliquer</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Ajouter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Supprimer</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Images Géo.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Enlever les images</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Copie du nom de fichier dans le presse-papier</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Charger les images georeférencées</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Séléctionnez le calque auquel l'image appartient:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Chargement des images...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Interrompre le chargement</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Spécifiez le décallage</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Positionner les images plus vers:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>la fin de la trace</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>début de la trace</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'secondes'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minutes et' ss 'secondes'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'heures,' mm 'minutes et' ss 'secondes'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Pas la bonne image ?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>L'image "%1" a été prise %2 avant que le point de traçe suivant ne soit enregistré. Voulez vous quand même l'utiliser ?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>L'image "%1" a été prise %2 après que le point de traçe suivant ne soit enregistré. Voulez vous quand même l'utiliser ?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Fichier inconnu</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Dépassement de temps réseau</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Impossible d'obtenir les détails de la photo depuis le serveur "Walking Papers".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Veuillez spécifier l'URL Walking Papers</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL :</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centrer la carte</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Sauvergarder l'image géomarquée</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Couche Photo</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Impossible de trouver l'image "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Erreur lors du chargement de "%2". %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Pas de points de trace</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Pas de points de trace trouvé pour l'image "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>Images JPEG (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Erreur lors du chargement des données EXIF de "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Erreur à l'ouverture de "%1". %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Sélectionner l'image suivante</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Sélectionner l'image précédente</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>url OSM invalide</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>L'url spécifiée est invalide!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Format de coordonnées non valable</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Les coordonnées doivent être: '<lon gauche>, <lat bas>, <lon droite>, <lat haut>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Les coordonnées doivent être: '<lat centre>, <lon centre>, <lat intervalle>, <lon intervalle>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Aller à</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Marque-page</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>lonMin, latMin, lonMax, latMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>lat-Centre, lon-Centre, Intervalle-lat, Intervalle-lon</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Information</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Rechercher</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Aucun</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Adaptateur d'enveloppe</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Faire un zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Fermer</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>Adapteur WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>Adapteur TMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Carte - Aucune</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Carte - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Carte - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Carte - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Carte - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Taille de la tuile</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Projection</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Chaîne de caractères</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Entier</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Flottant</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Latitude</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Projection invalide</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Impossible de spécifier la projection.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Pas de coordonnées</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Le champ Latitude ou Longitude est manquant. Il sera impossible d'importer le fichier. Désirez-vous réellement quitter?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Charger une configuration d'import CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Configuration d'import Merkaartor (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Fichier invalide</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 n'a pas pu être ouvert.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 n'est pas un fichier de configuration d'import CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>Sauvegarder la configuration d'import CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>sans titre</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Tous les fichiers (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Impossible d'ouvrir la configuration d'import</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 n'a pas pu être ouvert en écriture.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Boîte de dialogue</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Entrée</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>Prévisualisation OSM</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Spécifications</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>La première ligne contient les entêtes</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Séparateur</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Virgule (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Point-virgule (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tabulation</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Autre :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Aucun</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Projection (en format PROJ4; laisser à blanc pour latitude/longitude)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Champs</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Liste des champs :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Nom du champ (= clé d'étiquette) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Type de champ :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importer</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importer une plage</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>A partir de (0 pour le départ) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>À (0 pour la fin) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Charger une configuration...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Sauvergarder la configuration...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Information</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n objets</numerusform> <numerusform>%n fonctionnalités</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Taille</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Objets</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Couches</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Tous</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Pistes</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Afficher tout</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Cacher tout</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Tout en lecture seule</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Aucun en lecture seule</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Fermer</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Dessiner</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Bas</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Haut</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Opaque</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Opacité</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Visible</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Lecture seule</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Formulaire</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>J'ai lu et approuvé les termes de la licence</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Ne plus me demander ceci</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Initialisation...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Changements non sauvegardés</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Le document contient des changements non-sauvegardés qui seront perdus. Voulez-vous annuler le chargement d'un nouveau document ou continuer et perdre les changements ?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Fichier invalide</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 n'a pas pu être ouvert.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Téléverser OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Erreur de téléchargement</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>La carte n'a pas pu être téléchargée</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Erreur lors du téléchargement deuis OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>Le téléchargement OpenStreetBugs a échoué</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Simplifier les Routes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Dépassement de temps réseau</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Impossible de contacter OpenStreetBugs.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Erreur lors de la cloture du bogue</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Impossible de supprimer le bug. Le message du serveur est: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Ajout de Numéros de rue</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>triangulaire</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>rectangulaire</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>pentagonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>hexagonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>heptagonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>octogonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Aligne sur les %1 axes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>Aligne sur les %1 axes réguliers</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Sauvergarder le style de carte</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Style de carte Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Charger un Style de carte</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Formats pris en charge</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Tous les fichiers (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exporter OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Fichiers OSM (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Exporter osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>Fichiers osmChange (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Ajouter un marque-page</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Spécifiez le nom du signet.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Nom de signet invalide</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Un marque-page ne peut être vide.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Attention: le nom du marque-page existe déjà</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Entrez un nouveau nom, gardez le même pour remplacer ou annulez.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Supprimer le signet</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Sélectionnez le signet à supprimer.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Aide</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Créer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Route</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Editer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Vue</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Signets</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Spécifier la &projection</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Fichier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Style</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Nœud</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Quitter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&A propos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Ouvrir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Crée un nouveau document et importe un fichier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Faire un zoom sur &tout</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Faire un zoom sur la &fenêtre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zoomer la fenêtre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>Zoom a&rrière</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Zoom &avant</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Zoom avant</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Liaison courbe</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Défaire</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Refaire</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importe un fichier dans le document courant</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Lien</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Créer une liaison</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Supprimer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Inverser le sens</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>Route à &double sens</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nouveau</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Crée un nouveau document</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Séparer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Joindre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Séparer à part</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Surface</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Sauvegarder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>Route &sinueuse</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Préférences...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Tous...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exporte toutes les couches visibles vers un fichier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>Fenêtre de &Vue...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exporte les objets de la vue vers un fichier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Ajouter...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Supprimer...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Fusionner</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Fusionne les nœuds sélectionnés (le premier sélectionné restera)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Conflits non-résolus</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Veuillez d'abord résoudre les conflits existants</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Il semble que vous n'avez pas spécifié vos identifiant et mot-de-passe OpenStreetMap. Voulez-vous le faire maintenant ?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Enregistrer un document Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Fichiers document Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Sauvegarder &sous...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Télécharger plus</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Télécharge la vue courante dans la derniére couche de téléchargement</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Version ancienne de Qt détectée</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Votre configuration utilise Qt %1, qui contient un certain nombre d'erreurs connues lors du chargement vers OpenStreetMap, menant à des codes de réponse 401 du serveur. Etes-vous certain de vouloir continuer (ce qui n'est pas recommandé) ? Pour plus d'information, voir http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor (en anglais)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>sans titre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Fenêtre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Encarts</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Cacher/afficher l'encart Propriétés</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Cacher/afficher l'encart Couches</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Cacher/afficher l'encart Informations</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Rechercher...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Recherche et sélectionne des éléments</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Aligner</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Aligne les nœuds sélectionnés. Les deux premiers sélectionnés indiquent la ligne.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Fichier invalide</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Il est fortement recommandé de sauvegarder les changements de votre document après un télévesage. Voulez-vous le faire maintenant ?</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Supprimer l'étiquette '%1' sur %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Créer Surface %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Surface: Créer Route %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Surface: Terminer Route %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Zone: Ajouter le nœud %1 à la route %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Fermeture de l'aire %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Ajouter des nœuds à la route à double-sens %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Créer la Route à double-sens %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Créer un nœud sur la route: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Création POI %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Créer le Rond-point %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Créer le Nœud %1 sur la route %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Créer la Route: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Fermeture de la route %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Supprimer l'objet %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Presse-papiers non valable</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Joindre des Routes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Séparer des Routes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Casser des Routes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Créer la Relation %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Aligner les nœuds</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Fusionner des Nœuds dans %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Cacher/afficher l'encart Défaire</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Copie les étiquettes de l'objet sélectionné vers le clipboard; Si l'objet est un noeud, copie également les coordonnées.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Colle (et écrase) les étiquettes de l'objet sélectionné à partir du clipboard.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Fusionne les étiquettes du clipboard avec celles de l'objet sélectionné.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Sélectionné...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Colle les objets du clipboard; Si les identificateurs des objets sont déjà dans le document, ces derniers seront écrasés.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relation Modifiée %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 n'est pas un document Merkaartor valide.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exporter GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Fichiers GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exporter KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Fichiers KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binaire)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Déplace les objets sélectionné d'une couche non-téléversable vers la couche modification, prêts pour téléversage</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Mettre Étiquettes sur %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Créer le nœud: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Ajouter le nœud %1 à la route %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>tuile %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Propriétés...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Noeud intermédiaire</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Trace %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>Erreur du GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Impossible d'ouvrir le port de l'instrument GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Ouvrir un fichier de journalisation NMEA</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Calques</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Afficher les aires &téléchargées</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Basculer la barre d'outils</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Cacher/afficher la barre d'outils</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Cacher tout</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Afficher tout</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Calque &image</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>Démarrer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Rejouer...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Cacher/afficher l'encart GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>&Arrêter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centrer sur le point GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Afficher les &segments de trace</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Afficher l'&échelle</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Afficher les &relations</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Afficher l'arrière-plan des routes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Afficher les bordures des routes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Afficher le touchup</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Enregistrer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pause</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Cacher/afficher l'encart GeoImage</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Nœuds trouvés avec la même position</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Voulez-vous fusionner tous les nœuds à la destination ?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Bas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Haut</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Opaque</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Fichier</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Edition</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Flèches directionnelles</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Couches</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Création</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Objet</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Noeud</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Route</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relation</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Fichier GPS Exchange (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Fichier OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>Format de changement OpenStreetMap (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Fichier Noni GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Fichier journal NMEA GPS (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>Fichier KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Format CSV (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Images géolocalisées (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>fichier d'enveloppe ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Fichier Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Route</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Charger une image</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Ajouter la postion du noeud à l'image</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Géo-éttiquette l'image avec cette position</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Outils</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Aide</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Le presse-papier ne contient pas de données valide.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Gros lourd avertissement de droits d'auteur</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Vous tentez d'importer un fichier KML. Veuillez noter que: - Vous ne pouvez pas importer dans OSM un fichier KML créé par vous dans Google Earth. Vous pourriez penser que les nœuds que vous avez créés sont votre propriété, il n'en est rien! Ils sont un travail dérivé de GE et ne peuvent pour cela pas être importés dans OSM. - Si vous l'avez téléchargé de l'internet, il est probable qu'il soit sous copyright. Veuillez vous assurer que l'utilisation de ces données dans OSM est permise par l'auteur ou que ces données soient dans le domaine public. En cas de doute, demandez un avis sur les listes de diffusion OSM "legal" et/ou "talk". Êtes-vous absolument certain que ce fichier KML peut être importé légalement dans OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Détacher le nœud %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Ajouter le membre à la relation</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Enlever le membre de la relation</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Impossible d'ouvrir le fichier de sauvegarde</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 n'a pas pu être ouvert en écriture.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Sauvergarder Template d'étiquette</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Template d'étiquette Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Ouvrir Template d'étiquette</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Afficher les flêches directionelles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Définir l'&opacité des aires</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exporter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Ouvert ré&cemment</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Impor&ter récemment</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>&Outils</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Obje&t</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&ation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Déplacer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Télécharger</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Télécharger des données cartographique pour une nouvelle aire</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Sélectionner</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Envoyer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Téléverser les changements sur le serveur</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Enlever les objets sélectionnés</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Créer une nouvelle route</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Créer un nouveau nœud</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Inverser la direction de la route</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Aller à...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Crée une voie à deux bandes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Créer un rond-point</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Séparer la route en deux portions (collées)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Joindre les routes connectées en une seule</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Séparer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Séparer des routes connectées</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Crée une relation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Créer une nouvelle zone</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Modifier...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Sauvegarder...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Charger...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Rechercher</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Fusionner des Nœuds</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Enregistrer dans un fichier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Télécharger des données cartographiques supplémentaires pour la zone actuelle</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Propriétés</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Info</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Aligner les nœuds</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Etendre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Copier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Copie les objets sélectionnés vers le presse-papier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Coller Étiquettes (&Écraser)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Coller Étiquettes (&Fusionner)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Coller Étiquettes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Coller les tags du presse-papiers (Fusion avec les tags existants)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Coller</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Coller les objets depuis le presse-papiers</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Appliquer l'objet à la couche "Modifications"</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>Images mat&ricielles/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Afficher les &noeuds</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Afficher les no&ms</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Démarrer le GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Rejouer GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Arreter le GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Enregistrer le GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Mettre le GPS en pause</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>Image géoréférencée</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Gestionnaire "World OSB"...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>Editeur de &raccourci</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Fusionner...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Ajouter un membre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Retirer le membre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Jamais</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>pour &Routes à sens unique</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Toujours</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Détacher</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Détacher un nœud d'une route</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Détacher un nœud d'une route</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Travailler déconnecté</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Styles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Cacher/Afficher l'encart Styles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Editeur des Serveurs &WMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Editeur des Serveurs &TMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Ajouter des Numéro de Rue (Système "Karlsruhe")</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Subdiviser</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Afficher la &grille lat/lon</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>B&loquer le zoom en fonction de l'arrière-plan</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>&Editeur de &projection...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Afficher les &Photos sur la carte</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Suppression forcée</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Charger les sous-éléments manquants</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Fermer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>S&implifier</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Simplifier la(les) route(s)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Simplifier la route en retirant les noeuds fils superflus</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>Editeur de &Filtres...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>Aucu&n</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Séparer la Surface</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>Im&pression</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Mise à l'échelle</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Retire le membre '%1' de %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Ajouter un trou.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Voulez-vous ajouter un (nouveau) trou à cette surface ?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Impossible de charger le fichier de projections</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projection.xml" ne peut être ouvert nulle part. Abandon.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Créer Carrefour</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Projection invalide</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Impossible d'appliquer la projection "%1".</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Réinitialiser le status des boîtes de dialogue cachées</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Menu GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Appareil photo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Créer &Carrefour</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Supprimer l'enfant.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Appliquer étiquettes sur objets multiples</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Création d'une Surface</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Création d'un Noeud</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>CLIC-GAUCHE pour démarrer; GLISSER pour échelonner; SHIFT-GLISSER pour pivoter; CLIC-GAUCHE pour terminer</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Création d'un Polygone</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Créer polygone %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Création d'un Rond-Point</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Création d'une Voie</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Édition</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Déplacer les nœuds</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Déplacer nœud %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>CLIC-GAUCHE pour sélectionner; GLISSER-GAUCHE pour déplacer</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Déplacement de Noeud</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Rotation</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>CLIC-GAUCHE pour le premier coin -> GLISSER-GAUCHE pour spécifier la surface -> CLIC-GAUCHE pour zoomer</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Zoom</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Créer polygone</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Précisez le nombre de côtés</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Forcer l'envoi de l'objet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Forcer l'envoi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Pivoter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Intersections Multiples</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Ces routes ont de multiples intersections. Voulez-vous créer un carrefour pour chacune d'elles? (Les carrefours non désirées peuvent toujours être supprimées par après)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Coller l(es) objet(s)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Objets</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Afficher les nœuds &virtuels</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Supprimer les étiquettes %1 de %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Réordonner les membres dans la relation %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b> </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>dernier: </i><b>%1</b> par <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>dernier: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>Calque: </i><b>%1</b> </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>taille</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>membres</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>En haut à gauche</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>BasDroit</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relation</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Role</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Membre</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Route</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>coordonnées</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Noeud</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 nœuds</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Longueur</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Taille</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Aire</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>élévation</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>vitesse</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Noeud intermédiaire</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>description</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>commentaire</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Projection</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nouveau serveur</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Echec du chargement des préférences</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Dupliquer la clé</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Plus de 150 préférences</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nouveau signet</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Etiquettes</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Eléments sélectionnés</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Classe</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Nom</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Champ inconnu</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Erreur!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Le service de recherche de nom est injoignable.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Le service de recherche de nom à refusé la connexion.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Le service de recherche de nom demande une authentification</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Erreur inconnue.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Formulaire</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Nom du fichier de sortie</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>sans titre</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Tous les fichiers (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Fichiers images (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>Fichiers SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Export Images matricielles/SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>Lat/Lon min.</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>Lat/Lon max.</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Afficher l'échelle</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Exporter en PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Exporter en SVG...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL :</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Utilisateur:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Toujours</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Choisir une couleur</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Editeur de Style de carte</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Ajouter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Sélection d'étiquette</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>mètre/pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Visible jusqu'à</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Visible à partie de l'échelle</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Epaisseur proportionnelle</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Epaisseur fixe</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Pointillé</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>désactivé</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Remplir la surface</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Dessiner l'icône</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Dupliquer</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Arrière-plan</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filtre</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Dessiner avec la couleur</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Bordure</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Retoucher</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Dessiner les marches</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Étiquette</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Police de caractère</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Marquage de l'étiquette</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Dessiner avec la couleur d'arrière-plan</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Label avec l'étiquette de fond</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Global</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Auréole</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Aire</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Pas de géomarque valide</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>Essayer de rapprocher d'un point de trace</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Charger sans noeud associé</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Extraction des infos depuis le code barre (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>L'ignorer</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Effectuer cela pour toutes les photos courantes</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Nom du fichier de sortie</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>sans titre</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Tous les fichiers (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Fichiers images (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Boîte de dialogue</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>Fichiers SVG (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Préférences</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visuel</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Général</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Zoom arrière/avant (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Opacité bas/haut</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Style de carte</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Personnalisé</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Mot-de-passe:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Réseau</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Configuration du Proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Utiliser un serveur mandataire</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Nom d'hôte:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Port:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Image d'arrière-plan</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Répertoire du cache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Taille du cache (en Mb; 0 pour désactiver)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adapteur de carte</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Données</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Documents</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Sauvegarder automatiquement les documents après téléversage</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Inclus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Désactiver les styles pour les couches de piste</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Pistes</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Extraire automatiquement les pistes à l'ouverture</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Choisir une couleur</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>L'outil existe déjà</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Un outil portant ce nom existe déjà. Veuillez choisir un autre nom ou cliquer sur le boutton <Appliquer> si vous désirer modifier celui existant</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Impossible de supprimer l'outil prédéfini</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Impossible de supprimer l'outil prédéfini "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Impossible de modifier le nom d'un outil prédéfini</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Impossible de modifier le nom de l'outil prédéfini "%1"'</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Séléctionnez l'exécutable de l'outil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Séléctionnez le dossier des fichiers de journalisation</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Locale</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Il sera peut être nécéssaire de redémarrer le programme pour que ces changements prennent effet</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Utiliser la langue</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Traduire les marquages standards</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Couleurs</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Arrière-plan</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Survoler</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Focalisation</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relations</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL :</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Sauver les fichiers de journalisation NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Mettre l'horloge système à celle du GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Activer le serveur local compatible JOSM sur le port 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Outils</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Nom:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Chemin:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Appliquer</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Ajouter</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Répertoire des styles personnalisés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Modèkle de tag</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Modèle de tag Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Mode de déplacement séparé</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Interaction avec un seul bouton de souris</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Utiliser un style Qt personnalisé</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Ecraser le style</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixels</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Style actuel</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Modèle</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Couches de traces en lecture seule par défaut</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Ne pas connecter les nœuds du GPX séparés par plus de (en km; 0 pour désactiver)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Mise en cache des tuiles (Inactif pour Yahoo! pour des raisons légales)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Anglais</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabe</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Tchèque</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Allemand</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Français</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Hongrois</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italien</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Japonais</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polonais</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Portugais Brésilien</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russe</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Utilisateur:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Surligner</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Trace GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Utiliser l'apparence simplifiée pour les traces GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Entrée GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Série</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Hôte</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Utiliser les nœuds virtuels (nouvelle session nécessaire)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Néérlandais</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portuguais</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovaque</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Espagnol</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Suédois</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrainien</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Relations sélectionnables quand cachées</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Interface</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Configuration des projections</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Projections</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Liste des projections :</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nom:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>Chaîne PROJ4</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Appliquer</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Ajouter</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Document</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Boîte de dialogue</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Propriétés</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Propriétés</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Propriétés - Eléments multiples</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Propriétés - Relation</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Propriétés - Route</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centrer la carte</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centrer && Zoomer la carte</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 élément(s) sélectionné(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 élément(s) sélectionné(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Eléments sélectionnés</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Selectionner le membre</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Propriétés - Nœuds</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Nettoyage en cascade</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Mettre l'étiquette '%1' à '%2' sur %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Supprimer l'étiquette '%1' sur %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Déplacer le nœud %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Importer osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importer NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importer NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Non valide</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Mètres</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Non disponible</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Erreur de journalisation GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Impossible de créer le fichier de journalisation GPS: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Impossible de se connecter à %1:%2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Erreur de journalisation GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Impossible de créer le fichier de journalisation GPS: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Altitude</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 mètres</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation>Nombre de satellites</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Type d'acquisition</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Non valide</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Vitesse</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Latitude</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Flux de résultats impropre !</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Personalisation des barre d'outils</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Actions</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Appliquer</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Barre d'outils personnalisée</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Membres</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Etiquettes</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Etiquettes</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Pas de satelittes</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Sélection</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Clef</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Valeur</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Nom</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Réinitialiser la vue</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Fermer</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Styles</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Styles</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Veuillez réviser avec précaution les changements envoyés vers OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Envoi à Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Veuillez spécifier un commentaire pour ce changeset</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Configuration des serveurs TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Serveurs TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Liste des serveurs:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nom:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Url du serveur:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Obtenir les Services</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Services :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ceci est un TMS &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification"></a> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projection:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Lat/Lon (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>L'Origine est en bas à gauche</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Appliquer</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Ajouter</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>L'adresse et le chemin ne peuvent pas être vides.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Le téléchargement a échoué: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Erreur lors de la lecture des services. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Clef</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Valeur</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Editer ceci pour ajouter...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Formulaire</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>ET</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Non défini</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Non défini</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Par exemple "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Tous les nombres</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>Nombre de Segments de trace</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Distance totale</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Durée totale</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extraction - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Extraire une couche de dessin</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Faire un zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Fermer</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Point</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Latitude</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Etiquettes</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Boîte de dialogue</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Site Internet</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Mot-de-passe</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Nom d’utilisateur</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Utiliser un serveur mandataire</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Faire un zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Effacer</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: Obtenir les capacités</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>L'adresse et le chemin ne peuvent pas être vides.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Le téléchargement a échoué: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Erreur durant la lecture des capacités. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Configuration des serveurs WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Serveurs WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Liste des serveurs:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nom:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Couches:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projection:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Format de l'image :</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Styles:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Ceci est un serveur WMS-C (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Niveaux de zoom</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Appliquer</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Ajouter</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Supprimer</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Url du serveur:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_hr.ts�����������������������������������������������������0000664�0000000�0000000�00001101626�11770671653�0021725�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="hr"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>O Merkaartoru</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet i drugi, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Ovaj pogram licenciran je pod GNU javnom licencom v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Promjene</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>U redu</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Opis</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Prečac</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Uvoz</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Izvoz</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>Za&dana</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&U redu</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Odustani</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Urednik prečaca</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Učitaj sheme prečaca</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartor shema prečaca (*. MSS)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Ne mogu otvoriti datoteku</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 ne može biti otvoren</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Snimi shemu prečaca</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>bez naslova</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Sve datoteke (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Ne mogu snimiti datoteku</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 ne može biti otvoren za zapisivanje.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Bez opisa</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Vozi s desne strane ceste</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Udaljenost između cesti</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Vozi s desne strane ceste</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform>Postoji <b>%n</b> prljavih objekata</numerusform> <numerusform>Postoji <b>%n</b> prljavih objekata</numerusform> <numerusform>Postoji <b>%n</b> prljavih objekata</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centriraj kartu</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Očisti</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>DODAJ cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>DODAJ točku %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>DODAJ relaciju %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>UKLONI točku %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>UKLONI cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>UKLONI relaciju %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Pogreška učitavanja zahtjeva</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> API poruka je '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>OTVORI skup promjena</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>ZATVORI skup promjena</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Pogreška učitavanja zahtjeva</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> API poruka je '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Provjeravam promjene...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>OTVORI skup promjena</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>ZATVORI skup promjena</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>DODAJ relaciju %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>DODAJ cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>DODAJ točku %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>UKLONI točku %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>UKLONI cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>UKLONI relaciju %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>bez naslova</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Prljavi sloj</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Pozadinske slike</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Crtaj sloj #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Filtriraj sloj #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>OSM izvoz</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Izvoz OSM ...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Dokument</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Preuzimanje</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Lokacija</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Oznaka</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Trenutni pogled</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Iz karte ispod (karte pružena od OpenStreetMap projekta)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Dopusti preuzimanje sirovih GPS tragova</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Preuzimanje neuspješno</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 preuzimanje</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Preuzimanje neriješenih ...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Preuzimanje neriješeni %1 od %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Parsiranje...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Parsiram XML</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Sukobi iz %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Prazna cesta(e)/odnos(i) otkriven</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Prazna cesta / odnosi vjerojatno su pogreške. Želite li ih označiti za brisanje?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Ukloni prazne značajke %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Primječeni su sukobi</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Pripremam promjene</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>greška</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>nije preuzeto dovoljno</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Preuzimam sa OSM-a (%n bajta)</numerusform> <numerusform>Preuzimam sa OSM-a (%n bajta)</numerusform> <numerusform>Preuzimam sa OSM-a (%n bajta)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Preuzimam sa OSM-a (%n kilobajta)</numerusform> <numerusform>Preuzimam sa OSM-a (%n kilobajta)</numerusform> <numerusform>Preuzimam sa OSM-a (%n kilobajta)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Preuzimam...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Preuzimam sa OSM-a (spajam se)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> API poruka je '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Korisničko ime/zaporka nevažeće</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Preuzmite trag - čvorovi %1 - %2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Preuzimam točke</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Zatvori</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Ne mogu obrisati</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>Ne mogu obrisati odabir jer je izvan preuzetog područja</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Ne mogu sve obrisati</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>Preokreni put %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>Preokreni %1 put</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Izvoz</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Sve vidljivo (ne skriveno)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Pogled</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Odabrano</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Značajke</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centriraj kartu</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Preuzmi djecu koja nedostaju</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Dodaj u odabir</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Obriši</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relacije</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Ceste</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI's</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Sve</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Značajke</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Traži...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Resetiraj</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dijalog</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Naziv</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Zatvori</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Postava filtera</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filteri:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Lista filtera:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Naziv:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Primjeni</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Ukloni</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geo slike</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centriraj kartu</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Ukloni slike</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Kopiraj datoteke u međuspremnik</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Odaberi slijedeću sliku</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Odaberi prethodnu sliku</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Sloj fotografija</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Učitaj geo označene slike</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>Sloj je samo čitljiv</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Učitaj slike...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Prekini učitavanje</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Ne postoji datoteka</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Ne mogu pronaći sliku "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Greška prilikom otvaranja "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Greška prilikom učitavanja EXIF podataka iz datoteke "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>kraj traga</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>početak traga</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'sekundi'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minuta i' ss 'sekundi'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'sati,' mm 'minuta and' ss 'sekundi'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Slika "%1" je snimljena %2 prije što sljedeći TrackPoint zabilježen. Da li je i dalje želite koristiti?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Slika "%1" je snimljena %2 poslje što je zadnji TrackPoint zabilježen. Da li je i dalje želite koristiti?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG slike (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Greška prilikom otvaranja "%1": %2</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Nevažeći OSM url</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Nevažeći format koordinata</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>idi na</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Oznaka</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>lonMin, latMin, lonMax, latMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>latCent, lonCent, latSpan, lonSpan</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informacije</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Traži</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Nitijedan</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Zatvori</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Dodatci</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Karta - nitijedna</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Karta - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Karta - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Karta - WMS-Tiled - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Karta - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Karta - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Uvjeti licenciranja: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>Uvijeti licence nisu prihvačeni</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Poslužitelj</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Veličina pločice</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Minmalno/maksimalno povećanje</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Projekcija</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Niz</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Cijeli broj</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Plutajuće</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Dužina</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Širina</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Nevažeća projekcija</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Ne mogu postaviti projekciju</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Bez koordinata</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Polje dužina ili širine nedostaje. Biti će nemoguće uvesti datoteku. Želite li zaista izaći?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Učitaj CSV postavke uvoza</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Merkaartor postavke uvoza (*. MIS)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Nevažeća datoteka</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 ne može biti otvoren</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 nije datoteka sa postavkama za uvoz CSV datoteke</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>bez naslova</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Sve datoteke (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 ne može biti otvoren za zapisivanje.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dijalog</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Ulaz</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Značajke</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Prvi redak sadrži zaglavlje</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Razdjelnik</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Zarez (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Točka-zarez (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Drugi;</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Nitijedan</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>Dupli navodnik (")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Projekcija (u PROJ4 formatu; ostavite prazno za širina/dužina)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Polja</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Lista polja:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Ime polja (= ključ oznake)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Tipo polja:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Uvoz</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Uvezi raspon</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Od (0 od početka):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Do (0 do kraja):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Učitaj postavke</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Snimi postavke</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>Ne mogu postaviti projekciju; molim specificirajte</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informacije</translation> </message> </context> <context> <name>Layer</name> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Veličina</translation> </message> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n značajke</numerusform> <numerusform>%n značajke</numerusform> <numerusform>%n značajke</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Značajke</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Sakrij sve</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Sve samo za čitanje</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Nijedan samo za čitanje</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Zatvori</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Slojevi</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Sve</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Karta</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Crtaj</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Vidljiv</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Samo za čitanje</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Nisko</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Visoko</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Ne prozirno</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Prozirnost</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>Zatvori sloj: Prčjavi objekti prisutni</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>Zatvori sloj: nije prazan</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Da li ste sigurni da želite zatvoriti ovaj sloj? (nije moguće poništiti)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Oblik</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Uvjeti licenciranja</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Pročitao sam i slažem se s uvjetima licenciranja</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Nemoj me ponovo ovo pitati</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Učitavanje dodataka...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Inicijalizacija...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Obriši %1 oznaku na %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Obriši %1 oznake na %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Ukloni člana '%1' na %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Stvori područje %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Područje: Napravi cestu %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Dodaj rupu.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Želite li dodati (još jednu) rupu na ovom području?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Područje: Završi cestu %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Područje: Dodaj čvor %1 cesti %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Zatvori područje %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Dodaj čvorove u cestu %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Stvori čvor na cesti: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Napravite POI %1</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Stvori poligon %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Stvori kružni tok %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Stvori čvor %1 na cesti %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Stvori cestu: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Stvori čvor: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Dodaj čvor %1 cesti %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Zatvori cestu %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Uredi interakciju</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Ukloni značajke %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>Ukloni značajke</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Obriši djecu</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Želite li izbrisati čvorove djecu također? Imajte na umu da će OSM čvorovi izvan preuzetog područja biti zadržani.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>Preokreni %1 put</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation>Istisni cestu %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>Lijevom tipkom miša za odabir; Povucite lijevo za pomicanje</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Interakcija pomakni čvor</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Pomakni čvor</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Pomakni čvor %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Spajanje Čvorovi u %1</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>Zadržite pokazivač za odabir; Povucite lijevo za rotiranje</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation>Zadržite pokazivač za odabir; Povucite ljevo za promjenu veličine</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>Lijevom tipkom miša do prvog ugla -> povucite lijevo da bi odredili područje -> lijevom tipkom miša za uvećanje</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>pločica %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Svojstva...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Ne mogu učitati datoteku sa projekcijama</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>Nemoguće je otvoriti "Projections.xml". Prekidam.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Nisko</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Visoko</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Ne prozirno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Datoteka</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Uredi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Pogled</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Prikaži</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Usmjerene strelice</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Slojevi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Stvori</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Značajka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Čvor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Put</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relacija</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>GPS Exchange format (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMap format (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>NMEA GPS log format (*. NMEA *. NMA) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KML datoteke (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Odvojeno zarezom (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Geooznačene slike (*. jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESRI Shapefile (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Geography Markup Language (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartorov dokument (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Cesta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Učitaj sliku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Dodaj pozicijski čvor slici</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Geooznači sliku sa ovom pozicijom</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Odustani</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Alati</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Prozori</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Pomoć</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>Izreži značajke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Međuspremnik nevažeći</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Međuspremnik ne sadrži ispravne podatke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Upozorenje o autorskom pravu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Nije valjana datoteka</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 ne može biti otvoren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Otvori datoteke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Greška prilikom preuzimanja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Greška prilikom preuzimanja OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Stvori poligon</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Spoji ceste</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Razdvoji ceste</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Prelomi cestu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Pojednostavi ceste</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Prisilno učitavanje značajke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Ne mogu kontaktirati OpenStreetBugs.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Greška prilikom zatvaranja greške</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Ne mogu obrisati bug. Poslužiteljska poruka je: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Stvori spoj</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Višestruko raskrižje.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Dodaj kućne brojeve</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>Poravnaj s osima</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>trokutno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>okomito</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>peterokutno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>šesterokutno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>sedmerokutno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>osmerokutni</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Poravnaj na %1 os(i)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>Poravnajte na %1 redovitih osi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>Poravnjavanje na osi nije uspjelo. Molimo vas da podesite oštre kutove i pokušate ponovno.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>Poravnjavanje na osi nije uspjelo i nije pronašlo rješenje.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Poravnaj čvorove</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Odvoji čvor %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Dodaj član relaciji</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Spoji područja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Razdvoji područje</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Stvori relaciju %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Snimi stil karte</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartor stil karte (*. mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Učitaj stil karte</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Podržani formati</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Merkaartor stil karte (*. mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Snimi Merkaartorov dokument</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>bez naslova</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Merkaartor dokumenti datoteke (*. MDC)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Sve datoteke (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Snimi Merkaartorov predložak</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Ne mogu snimiti datoteku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 ne može biti otvoren za zapisivanje.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Nevažeća datoteka</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 nije valjan Merkaator dokument.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>izvoz OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM datoteke (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Izvoz osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>osmChange datoteke (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Izvoz GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX datoteke (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Izvoz KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML datoteke (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Dodaj oznaku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Nevažeća oznaka</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Oznaka ne može biti prazna</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Unesite novi, zadrži isti za prepisati ili otkazati.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>kloni oznaku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Odaberi oznaku za uklanjanje</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Nevažeća projekcija</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Ne mogu postaviti projekciju "%1".</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPS greška</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartor predložšci oznaka (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Pomoć</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Stvori</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Cesta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Uredi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Pogled</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Oznake</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Postavi &projekciju</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Datoteka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Izvoz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Ne&davno otvoreni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Nedavni &uvoz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>Ala&ti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Čvor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Prozor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Dok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Značajke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Slojevi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&acija</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>P&okaži</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Glavna alatna traka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Izlaz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&O programu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Otvori</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Napravite novi dokument i uvezite datoteku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Povečaj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Zakrivljeni link</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Poništi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Ponovo uradi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Pomakni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Uvoz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Uvezi datoteku u trenutni dokument</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Preuzmi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Preuzimanje podataka karte za novo područje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Poveznica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Stvori vezu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Odaberi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Učitaj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Ukloni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Ukloni odabrane značajke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Izbriši</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Stvori novu cestu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Stvori novi čvor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Preokreni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Prekreni smjer ceste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Idi na...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Cesta sa odvojenim trakama</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Stvori kružni tok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Novi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Stvori novi dokument</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Razdvoji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Spoji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Spoji spojene ceste u jednu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Prelomiti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Prelomi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Razdvoji povezane ceste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lacija</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Stvori relaciju</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Područje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Stvori novo područje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Uredi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Snimi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Učitaj...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Zakrivljena cesta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Postavke...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Svi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Izvoz svih vidljivih slojeva u datoteku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Nađi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Traži</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Pronađite i odaberite stavke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Pogled...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Izvoz značajki unutar pogleda u datoteku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Dodaj...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Ukloni...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Spoji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Spoji čvor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Spoji odabrane čvorove (prvi odabrani će ostati)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Snimi k&ao</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Snimi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Snimi u datoteku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Preuzmi više</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Preuzimanje više podataka karte za tekuće područje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Preuzmite trenutni prikaz na prethodni sloj preuzimanja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Značajke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Sakrij/prikaži dok značajki</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Sakrij/prikaži dok slojeva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informacije</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Sakrij/prikaži Info dok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Poravnaj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Poravnaj čvorove</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Poravnaj odabrane čvorove. Prva dva odabrana određuju liniju.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Raširi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Poravnaj i rasporedi odabrane čvorove jednoliko.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Sakrij/prikaži dok poništavanja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopiraj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Kopiraj odabrane značajke i oznake u međuspremnik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Zaljepi oznake</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Spoji oznake u međuspremniku s onima odabranih značajki.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Odabrani...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Zalijepi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (binarni)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Prisilno učitavanje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Pošalji značajku u prljavi sloj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Sakrij/prikaži alatnu traku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Sakrij sve</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Slikovni sloj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Prikaži i&mena</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Početak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Pokreni GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Ponovi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Sakrij/prikaži GPS, dok,</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>S&tani</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Zaustavi GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centrirati na GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Snimaj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Snimaj GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pauza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pauziraj GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoSlika</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Sakrij/prikaži GeoImage dok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Urednik prečaca...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Spoji...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Dodaj člana</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Ukloni člana</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nikada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>za &jednosmjerne ceste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Uvijek</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>O&dvoji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Odvoji čvor iz ceste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Odvoji čvor iz ceste</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Izvanmrežni rad</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stilovi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Sakrij/prikaži dok stilova</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>&Urednik WMS poslužitelja...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>&Urednik TMS poslužitelja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Poništi stanja odbacivih dijaloga</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS Izbornik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Kamera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Stvori &spoj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Rotiraj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Preuzmi djecu koja nedostaju</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Značajke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Dodaj kućne brojeve (Karlsruhe shema)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Podjeli dalje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>&Zaključaj povečanje prema pozadini</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>&Urednik projekcija...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Prisilno obriši</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Zatvori</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>Pojednostav&i</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Pojednostavi cestu(e)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>&Urednik filtara</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>&Nijedan</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>&Spoji područja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Spoji područja koja se dodiruju</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Spoji područja koja se dodiruju</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Razdvoji područje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Terasa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation>&Poravnaj s osima</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>Poravnaj rubuve na regularne osi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>Poravnaj rubove na određen broj ravnomjerno razmaknutih osi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Ispiši...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>Označi prljave značajke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>&Izreži</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>Izvuci</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation>Interakcija istiskivanja za puteve (JOSM stil)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Uključi djecu u odabir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Preporučeno ja da snimite promjene nakon učitavanja. Želite li to sada napraviti?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>posljednji: </i><b>%1</b&gt; by <b>%2</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>posljednji: </i><b>%1</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>sloj: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>koordinata</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>nadmorska visina</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>brzina</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>opis</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>komentar</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Čvor</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>veličina</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>članovi</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Gornji lijevi</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Donje desno</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relacija</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Uloga</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Član</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>Zatvorena cesta</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Dužina</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Veličina</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 čvorova</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Područje</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Put</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Pogled</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Granično područje</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Projekcija</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nova oznaka</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Dvostruki ključ</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Više od 150 postavke</translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Novi poslužitelj</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Odabrane stavke</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Klasa</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Naziv</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Greška!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Domaćin usluge tražila imena nije pronađen.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Domaćin usluge tražila imena odbio vezu.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Usluga tražila imena zahtijeva provjeru autentičnosti.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Nepoznata greška</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Oblik</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>bez naslova</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>PDF datoteka (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Sve datoteke (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Slikovne datoteke (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG datoteke (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Izvoz raster/SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Opcije</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>minimalna Šir/Duž</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>maksimalna Šir/Duž</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Prikaži točke</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Prikaži relacije</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Izvoz u PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Izvoz u SVG...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>izvoz u raster...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Korisnik:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Uvijek</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Odaberi boju</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Urednik stila karte</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Globalno</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Pozadina</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Ukloni</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Kopija</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>metar/piksel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Vidljiv do</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Crtaj obojano</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Proporcionalna debljina</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Nepromjenljive debljine</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Crtkano</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>isključeno</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Popuni područje</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation>Ispuni s ikonom za dotjeravanje</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Granica</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Nacrtaj stepenice</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Nacrtaj ikonu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Oznaka</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Font</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Naljepnica oznake</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Područje</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Crtaj obojano pozadinskom bojom</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Naljepnica s oznakom pozadine</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Nema važeču geooznaku</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Učitaj bez pridruženog čvora</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Ekstrakt infoa iz barkoda (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignoriraj</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Učinite to za sve trenutne slike.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>bez naslova</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG datoteke (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Sve datoteke (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Slikovne datoteke (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dijalog</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Engleski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arapski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Češki</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Nizozemski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Njemači</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francuski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Mađarski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Talijanski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Japanski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Poljski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugalski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Brazilski portugalski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Ruski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovački</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Španjolski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Švedski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrajinski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Direktorij prilagođenih stilova</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor predložak oznaka (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Odaberi boju</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Alat već postoji</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Alat ovakvog naziva već postoji. Molim odaberite drugi naziv te odaberite <Primjeni> dugme ukoliko želite izmjeniti postojeći.</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Ne mogu obrisati unaprijed definiran alat</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Ne mogu obrisati unaprijed definiran alat "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Ne mogu promjeniti ime unaprijed definiranog alata</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Ne mogu promjeniti ime unaprijed definiranog alata "%1"'</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>Odaberi predložak</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Merkaartorov dokument (*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Postavke</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Općenito</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Prozirnost niska/visoka</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>Dopusti kreiranje čvora/puta i odabranom načinu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Boje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Pozadina</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPX trag</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pikseli</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Sučelje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Lebdjeti</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relacije</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Fokus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Istakni</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>Prljavo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Lokalno</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Koristi jezik</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Opcije</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Stil karte</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Trenutni stil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Onemogući stilova za slojeve s tragovima</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Predložak</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Ugrađen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Korisnički definirano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Podatci</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokumenti</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>Automatski učitaj predložak</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Automatski snimi dokumente nakon učitavanja</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Ne spajaj GPX čvorove udaljene više od (u km; 0 za onemogućiti)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>GPS ulaz</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Serijski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Host</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Snimi NMEA log</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Mreža:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Postavke proxyija</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Koristi proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Zaporka:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Korisnik:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Host:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Omogući JOSM kompatibilni lokalni web poslužitelja na portu 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Pozadinska slika</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Direktorij međuspremnika</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Veličina međuspremnika (u Mb; 0 za onemogućiti)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adapter karte</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>Automatski dodaj "source" oznaku prilikom kreiranja značajki preko pozadinske karte</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Alati</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Naziv:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Putanja;</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Primjeni</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Ukloni</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Postava projekcija</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Projekcije</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Lista projekcija:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Naziv:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>PROJ4 niz</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Primjeni</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Ukloni</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Dokument</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dijalog</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>Korisnički definirano PROJ4(+proj=...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Svojstva</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 odabran(ih) predmet(a)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 odabran(ih) predmet(a)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Odabrane stavke</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Svojstva - vše elemenata</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Svojstva - točka</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Svojstva - cesta</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Svojstva - relacija</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Svojstva</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Pogreška pri čitanju datoteke predloška</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centriraj kartu</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Odaberi člana</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>Izvoz GPX ...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Odustani</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation>Uvoz ...</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Kaskadno čišćenje</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Obriši %1 oznaku na %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Pomakni čvor %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Uvezi osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Uvoz NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Uvoz NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Nevažeći</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metara</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Nedostupan</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>GPS log pogreški</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>GPS log pogreški</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Dužina</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Visina</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metara</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># sateliti</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Popravi tip</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Nevažeći</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Brzina</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Širina</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< R A S T A V LJ A Č ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Prilagođavanje alatne trake</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Akcije</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Novi</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Ukloni</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Preimenuj</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>U redu</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Primjeni</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Odustani</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Gore</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>Dolje</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Korisnička alatna traka</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Članovi</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Ukloni označene član(ove)</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>Dodaj oznaku "izvor"</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Identifikator</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>Dodaj oznaku "izvor"</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Bez satelita</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Odabir</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Ključ</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Vrijednost</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Naziv</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Identifikator</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Upit</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Zatvori</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Stilovi</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Stilovi</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Molim da postavite opis za ovaj skup promjena</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>U redu</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Odustani</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adresa i staze ne mogu biti prazni</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Preuzimanje neuspješno: %1</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Pogreška pri čitanju usluge. </translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMS poslužitelji</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Lista servera:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Naziv:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Nabavite usluge</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Usluge:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projekcija:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Merkator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Širina/Dužina (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Veličina pločice:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Minimalno povećanje</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>Vrjednost "source" oznake:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>URL licence:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Primjeni</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Ukloni</translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Ključ</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Vrijednost</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Oblik</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>ILI</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>I</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>NE</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>je</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>je jedan od</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Nedefiniran</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Nedefiniran</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Terasa</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Nema numeriranja kuća</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Broj kuća</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Dodaj kućne brojeve (Karlsruhe shema)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Rasponi</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Na primjer "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Uzorak</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Svi brojevi</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Neparni brojevi</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Parni brojevi</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Ekstrakt - %1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># od djelova traga</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Ukupna udaljenost</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Ukupno trajanje</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Ekstrakt crtanog sloja</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Zatvori</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Širina</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Dužina</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Identifikator</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>Dodaj oznaku "izvor"</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dijalog</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Zaporka</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Korisničko ime</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Koristi proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Očisti</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adresa i staze ne mogu biti prazni</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Pogreška pri čitanju sposobnosti. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Preuzimanje neuspješno: %1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMS posslužitelj</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Lista servera:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Naziv:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Slojevi;</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projekcija:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Nivoi povećanja</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Format slike:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Stilovi:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>Vrjednost "source" oznake:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>URL licence:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Primjeni</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Ukloni</translation> </message> </context> </TS> ����������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_hu.ts�����������������������������������������������������0000664�0000000�0000000�00001114404�11770671653�0021726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="hu_HU"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Merkaartor névjegye</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>E program a GNU GPLv2 engedéllyel jár</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Szerzői jog: Bart Vanhauwaert, Chris Browet és mások, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Változások</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Jellemzés</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Gyorsgomb</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Behoz</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Kivisz</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Alap</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Mégsem</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Gyorsgombszerkesztő</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Gyorsgombbeállítások behozatala</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartor-gyorsgombbeállítás (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Nem tudom a fájlt megnyitni</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 fájlt nem tudtam megnyitni.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Gyorsgombbeállítások kivitele</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>nevenincs</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Nem tudom megnyitni a mentésfájlt</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>Nem tudtam %1 fájlt írásra megnyitni.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Nincs jellemzés</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Jobboldali közlekedés</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Távolság két út között</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Jobboldali közlekedés</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Vissza</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Térképet középre</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Térképet középre nagyítva</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Kitakarít</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Vissza</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Nagyít</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Hiba a kérést feltöltvén</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>E kérést feltöltvén hiba (%1) történt A szolgáló üzenete: „%2”</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>HOZZÁADja %1 utat</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>HOZZÁADja %1 nyompontot</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>HOZZÁADja %1 kapcsolatot</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>MEGVÁLTOZTATja %1 nyompontot</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>MEGVÁLTOZTATja %1 kapcsolatot</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>MEGVÁLTOZTATja %1 utat</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>ELTÁVOLÍTja %1 nyompontot</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>ELTÁVOLÍTja %1 utat</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>ELTÁVOLÍTja %1 kapcsolatot</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Kérem ellenőrizze nevét és jelszavát a Beállításokban</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>MEGNYITja a változásokat</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>LEZÁRja a változásokat</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> Az API-üzenete: „%1”</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Feltöltöm a változásokat…</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Hiba a kérést feltöltvén</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Kérem ellenőrizze nevét és jelszavát a Beállításokban</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>E kérést feltöltvén hiba (%1) történt A szolgáló üzenete: „%2”</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> Az API-üzenete: „%1”</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>E kérést feltöltvén hiba (%1) történt „%2” Kérem töltse le újra a bajos dolgokat, hogy megoldja az ütközést.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Változásokat ellenőrzök…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>MEGNYITja a változásokat</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>LEZÁRja a változásokat</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>HOZZÁADja %1 kapcsolatot</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>HOZZÁADja %1 utat</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>HOZZÁADja %1 nyompontot</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>MEGVÁLTOZTATja %1 kapcsolatot</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>MEGVÁLTOZTATja %1 utat</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>MEGVÁLTOZTATja %1 nyompontot</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>ELTÁVOLÍTja %1 nyompontot</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>ELTÁVOLÍTja %1 utat</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>ELTÁVOLÍTja %1 kapcsolatot</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>nevenincs</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Piszkos réteg</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Feltöltött réteg</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Háttérkép</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>OSM-kivitel</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Kiviszem OSM-be…</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Letöltés</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Hely</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Könyvjelző</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Mostani látómező</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Az alábbi térképből (OpenStreetMap-térkép)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Nyers GPS-nyomokat is letölt</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Minden kapcsolatot megold</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>hiba</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>nem töltött le eleget</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Megoldatlan ütközések</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Kérem előbb a meglévő ütközéseket oldja meg</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Letöltök OSM-ről (csatlakozok)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Nem sikerült letölteni</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Érvénytelen név/jelszó</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Letöltök %1 / %2 nyompontot</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>XML-t dologozok fel</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Ütközések %1 adataiban</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Letöltök: %1,%2 (nagyít %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Letöltött nyom – pontok %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 letöltés</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Letöltök %1 / %2 megoldatlan</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Feldolgozok %1 / %2 megoldatlan</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Ütközéseket találtam</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Ez azt jelent, hogy valamit, amit ön megváltoztatott, a legutóbbi letöltés óta valaki más megváltoztatta a szolgálón. A dolgokat átmásoltam mint „conflict_…” a „Conflicts…” rétegbe. Mielőtt feltölthetné a változtatásait, saját kezűleg kell összevonnia a két változatot, illetve el kell távolítania egyiket a „Conflicts…” rétegből.</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Üres utat/kapcsolatot találtam</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Az üres utak/kapcsolatok valószínűleg hibák. Meg akarja jelölni őket törlésre?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>%1 üres dolgot eltávolít</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Váratlan HTTP állapotkód (%1) A szolgáló üzenete: „%2”</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> Az API-üzenete: „%1”</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation> <numerusform>Letöltök OSM-ről (%n B)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation> <numerusform>Letöltök OSM-ről (%n kB)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Letöltök…</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Feldolgozok...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Letöltöm a megoldatlan…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Feltöltök…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Elkészítem a változásokat</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>A szolgáló válaszára várok</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Letöltök pontokat</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Bezár</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Nagyít</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Kivitel</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Mit akar kivinni?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Minden láthatót (azaz nem rejtett)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Látómező</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Kiválasztott</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Dolgok</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Térképet középre</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Térképet középre nagyítva</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Hiányzó gyereket letölt</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Kapcsolatok</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Utak</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI-k</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Mind</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Kijelöléshez ad</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Töröl</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Csak teljesen a látómezőben levők</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Dolgok</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Név</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Bezár</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Név:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Alkalmaz</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Hozzáad</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Eltávolít</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Földképek</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Földcímkés képek betöltése</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Válassza ki, melyik réteghez tartoznak a képek:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Rossz kép?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Képeket töltök be …</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Betöltést megszakít</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Adjon meg eltolást</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Helyezze a képeket inkább:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>a nyom végére</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>a nyom elejére</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>óó:pp:mp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>mp „másodperc”</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>pp „perc és' mp 'másodperc'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>óó „óra” pp „perc' mp „másodperc”</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>„%1” képet %2 idővel a következő nyompont rögzítése előtt készítették. Még mindig akarja használni?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>„%1” képet %2 idővel a következő nyompont rögzítése után készítették. Még mindig akarja használni?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Képekeket távolít el</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Fájlnevet vágólapra másol</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Nincs ilyen fájl</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Nem találom „%1” képet.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Hiba „%2” fájlt megnyitván: %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Nincs nyompont</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Nincs nyompont „%1” képhez</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Hiba az EXIF-adatokat betöltvén „%1” fájlból.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Hiba „%1” megnyitásakor: %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Következő kép</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Előző kép</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Hálózati időzés</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Nem tudom olvasni a fénykép részleteit a Walking Papers-szolgálóról.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Kérem adjon meg Walking Papers URL-t</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Térképet középre</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Földcímkés képet met…</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Fénykép réteg</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG-képek (*.jpg)</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Érvénytelen OSM URL</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Érvénytelen a megadott URL!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Érvénytelen koordináta-típus</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Kordináta '<bal hossz>, <alsó szél>, <jobb hossz>, <felső szél>' kell legyen</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Kordináta '<közép hossz>, <közép szél>, <kit szél>, <kit hossz>' kell legyen</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Menj</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Könyvjelző</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>hosszMin, szélMin, hosszMax, szélMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>szélKöz, hosszKöz, hosszKit, szélKit</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Infó</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API URL</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI URL</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Keres</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Nincs</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Shape-átalakító</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Nagyít</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Bezár</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMS-átalakító</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMS-átalakító</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Térkép – nincs</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Térkép – WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Térkép – TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Térkép – %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation type="unfinished">Csempeméret</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation type="unfinished">Leképezés</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation></translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Bemenet</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>OSM előnézet</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Jellemzői</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Fejléc az első sor</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Elválasztó</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Vessző (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Pontosvessző (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tab</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Más:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Nincs</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Leképezés (PROJ4-nak megadva; hagyjon közöket a szélességnek/hosszúságnak)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Mezők</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Mező lista:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Mező neve (= címkekulcs) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Címketípus:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Behoz</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Behozatal tartománya</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Innen (0 kezdettől):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Idáig (0 végig):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Beállítások betöltése…</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Beállítások mentése…</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Szöveg</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Egész</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Tört</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Hosszúság</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Szélesség</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Érvénytelen leképezés</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Nem tudok leképezést beállítani.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Nincs koordináta</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Szélesség vagy hosszúság mező hiányzik. Így képtelenség behozni a fájlt. Biztosan ki akar lépni?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>CVS-behozatal beállítás betöltése</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Merkaartor behozatal beállítás (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Érvénytelen fájl</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 fájlt nem tudtam megnyitni.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 men CSV-behozatal beállítás fájl</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>CSV-hehozatal beállítás mentése</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>nevenincs</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Képtelen vagyok megnyitni a mentés behozatal-beállítások fájlját</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>Nem tudtam %1 fájlt írásra megnyitni.</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Infó</translation> </message> </context> <context> <name>Layer</name> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Méret</translation> </message> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation> <numerusform>%n dolog</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Dolgok</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Rétegek</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Mind</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Nyomok</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Mindent mutat</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Mindent rejt</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Minden csak olvasható</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Semmi sem csak olvasható</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Bezár</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Kis</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Nagy</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Teljes</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Takarás</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Látható</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Csak olvasható</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Űrlap</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Ne kérdezzen meg ismét</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Mentetlen változások</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>A térképen elmentetlen változások vannak, amiket el fog veszíteni, amikor újat kezd. Mégsem akar új térképet, vagy folytatja eldobva a régi változásokat?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Nincs érvényes fájl</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 fájlt nem tudtam megnyitni.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Feltöltés OSM-be</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Úgy tűnik nem adta meg OpenStreetMap azonosítóját és jelszavát. Meg akarja tenni ezt most?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Hiba letöltéskor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Nem tudtam letölteni a térképet</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Utcaszámokat ad hozzá</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Térképstílus mentése</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartor-térképstílus (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Térképstílus betöltése</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Kivitel OSM-be</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM-adatok (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Könyvjelző hozzáadása</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Kérem adjon nevet a könyvjelzőnek.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Érvénytelen könyvjelzőnév</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>A könyvjelző nem lehet üres.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Figyelem: már van ilyen könyvjelzőnév</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Adjon meg újat, vagy tartsa meg ugyanazt, hogy felülírjam, vagy töröljem.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Könyvjelző eltávolítása</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Válassza ki az eltávolítandó könyvjelzőt.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>Se&gítő</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Út</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Szerkeszt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Nézet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>Kö&nyvjelzők</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>&Leképezés</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Adatok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stílus</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Kilép</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Névjegy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Megnyit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Új dokumentumot készít, és behoz egy fájlt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>&Mindent kinagyít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>&Ablakot nagyít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Ablakot nagyít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Kicsinyít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>&Nagyít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Nagyít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Görbe bekötő</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Vissza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Újra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Behoz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Fájlt hoz be a mostani dokumentumba</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Bekötő</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Bekötőt készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Töröl</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Utca&számokat ad hozzá (Karlsruhe-minta)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Hiányzó gyereket letölt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Pont</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>Meg&fordít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Dupla út</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Új</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Új dokumentumot készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Feloszt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Egyesít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>Szét&vág</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Kap&csolat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Terület</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Ment</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Görbe út</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Beállítások…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Mind…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Minden látható réteget kivisz egy fájlba</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Látómező…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>A látómezőbeli dolgokat kiviszi egy fájlba</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Hozzáad…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Töröl…</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Megoldatlan ütközések</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Kérem előbb a meglévő ütközéseket oldja meg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Összerak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Összerakja a kiválasztott pontokat (az első kiválasztott fog megmaradni)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Mentés Merkaartor-dokumentumba</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Merkaartor-dokumentum (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Ment mi&nt…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Letölt még</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Letölti a mostani nézetet az előző letöltött rétegbe</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Régi Qt-változatot érzékelve</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>E telepítés Qt %1 válozatot használ. Ez különféle ismert hibákat tartalmaz, amik az adatokat OpenStreetMapra feltöltvén 401-es szolgáló válasz kódokat eredményeznek. Biztosan folytatni akarja? (Ezt nem ajánljuk.) További tudnivalók: http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>nevenincs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>A&blak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Dokkok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Tulajdonságok dokkot rejt/mutat </translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Rétegek dokkot rejt/mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Infó dokkot rejt/mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Keres…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Keres és kiválaszt elemeket</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Igazít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>A kiválasztott pontokat igazítja. Az első kettő kiválasztott határozza meg a vonalat.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>%2 „%1” címkéjét törli</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>%1 területet készít</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Terület: %1 utat készít</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Terület: %1 utat befejez</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Terület: %1 pontot %2 úthoz adja</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Pontokat ad %1 dupla úthoz</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Készíti %1 dupla utat</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Pontot készít %1 útra</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Körforgalmat készít %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>%1 pontot készíti %2 úton</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Utat készít: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>%1 dolgot törli</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Utakat egyesít</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Utat oszt fel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Utat szakít ketté</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Érvénytelen fájl</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Pontokat igazít</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Pontokat %1 dologba rak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Vissza dokkot rejt/mutat</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>%1 kapcsolat változott</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Ajánlatos a változásokat elmenteni egy dokumentumba feltöltés után. Meg akarja ezt tenni most?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Érvénytelen vágólap</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>%1 kapcsolatot készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>A kiválasztott dolog címkéit másolja a vágólapra. Ha a dolog nyompont, akkor a helyzetét is másolja.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>A vágólapi címkéket beilleszti (illetve felülírja) a kiválasztott dologba.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>A vágólapi címkéket összefésüli a kiválasztott dolog címkéivel.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Kiválasztott…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Beilleszti a vágólapi dolgokat. Ha e dolgok már a dokumentumban vannak, akkor felülírja azokat.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (gépi kód)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 érvénytelen Merkaartor dokumentum.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Átteszi a kiválasztott dolgot egy nem feltölthető rétegből (pl. nyom vagy kivonat) a piszkos rétegbe előkészítve azt a feltöltésre</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Kivitel GPX-be</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX adatok (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Kivitel KML-be</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML-adatok (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Címkézi: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Pontot készít: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>%1 pontot adja %2 úthoz</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>csempe %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Tulajdonságok…</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Útpontok</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Nyom %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPS-hiba</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Nem tudok GPS-kaput nyitni.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>NMEA-naplófájl megnyitása</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Réteg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Mutatja a le&töltött területeket</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Eszköztár be/ki</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Rejti/mutatja az eszköztárt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Mindent rejt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Mindent mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Kép réteg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Indít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>I&smét…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Rejti/mutatja a GPS dokkot</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>Meg&állít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>GPS &középre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Mutatja a nyom&szakaszokat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Mutatja a &méretarányt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Mutatja a &kapcsolatokat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Mutatja az utak hátterét</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Mutatja az utak kereteit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Mutatja a javításokat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Rögzít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Szünet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Rejti/mutatja a GeoImage dokkot</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Nagy kövér figyelmeztetés szerzői jogra</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Nem tudom megnyitni a mentésfájlt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>Nem tudtam %1 fájlt írásra megnyitni.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Letölt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Feltölt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Menj…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Dupla utat készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Körforgalmat készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Kapcsolatot teremt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Keres</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Pontokat egyesít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Átteszi a dolgot a piszkos rétegbe</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>GPS-t indít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>GPS-t ismétel</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>GPS-t megállít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>GPS-szel rögzít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>GPS szünet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Világ OSB-igazgató…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Gyorsgomb szerkesztő…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Mutatja az irányjelző &nyilakat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Beállítja a területek &takarását</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Kivisz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Legutóbb &nyitott</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Legutóbb be&hozott</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>&Eszköz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>&Dolog</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Kap&csolat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Mozgat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>Ki&választ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Szerkeszt…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Ment…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Betölt…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Másol</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Címkéket szúr be (&átír)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Címkéket szúr be (&összerak)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Összerak…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>Tagot ad &hozzá</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>Tagot &kivesz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Soha</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>&Egyirányú utakhoz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Mindig</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Kicsatol</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Kicsatol egy pontot egy útból</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Kapcsolat nélküli munka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Pontokat találtam ugyanitt.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Össze akar rakni minden pontot egyetlen egybe a beejtés helyén?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Kis</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Nagy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Teljes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Rétegek</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Dolog</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Pont</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Út</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Kapcsolat</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation type="unfinished">Út</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation type="unfinished">Képet betölt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished">Pont helyzetét képhez adja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished">Képet földcímkéz e helyzettel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Mégsem</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Eszközök</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>%1 pontot kicsatolja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Tagot ad a kapcsolathoz</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Tagot kivesz a kapcsolatból</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Címkesablonok mentése</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartor-címkesablonok (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Címkesablon megnyitása</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>„%1” tagot kiveszi %2 dologból</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Ön KML-adatot próbál betölteni. Kérem legyen tekintettel arra, hogy: – Nem hozhat be OSM-be Google Earth-ből készített KML-adatokat. Talán azt gondolja, hogy GE-ből készített adatok az önéi. Nem azok! A GE-ből származó adatokat nem használhatja fel OSM-ben. – Ha Internetről töltötte le, jó eséllyel szerzői jog védi. Kérem teljesen győződjön meg arról, hogy a szerző megengedi az adatai OSM-beli felhasználását, vagy hogy az adatokat szabadon használhatja. Ha bizonytalan, kérem kérjen tanácsot a „legal” vagy a „talk” Openstreetmap-levlistákon. Teljesen biztos ön abban, hogy e KML-t van joga bevinni OSM-be?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Térképadatokat tölt le egy új területhez</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Feltölti a változásokat a szolgálóra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Törli a kiválasztott dolgokat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Új utat készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Új pontot készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Megfordítja az út irányát</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Felosztja az utat külön (összekapcsolt) utakra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Összekapcsolt utakat egyesít egyetlen úttá</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Szakít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Szétszakít összekapcsolt utakat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Új területet készít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Fájlba ment</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>További térképadatokat tölt le a mostani területhez</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Pontokat illeszt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>A kiválasztott dolgokat és címkéket a vágólapra másolja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Címkebeillesztő</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Címkéket illeszt be a vágólapról (összefélsülve azokat a meglévő címkékkel)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Beilleszt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Dolgokat illeszt be a vágólapról</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Pontot csatol ki egy útból</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Tulajdonságok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Infó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>&Földkép</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stílus</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Stílus dokkot rejt/mutat</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Lyukat ad hozzá.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Akar (még) egy lyukat adni e területhez?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Nem tudom Projections fájlt betölteni</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>„Projections.xml”-t sehol sem tudom megnyitni. Leállok.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Összekötőt készít</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Érvénytelen leképezés</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Nem tudom beállítani „%1” leképezést.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Strg+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>Törli az eldobható &párbeszéd állapotot</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS-menü</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Nézőke</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>&Összekötőt készít</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Gyerekeket töröl.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Címkéket tesz több dologba</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Terület készítése</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Pont készítése</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>BAL-KATT kezd;HÚZÁS méretez;SHIFT-HÚZÁS forgat;BAL-KATT befejez</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Sokszög készítése</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>%1 sokszöget készíti</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Körforgalom készítése</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Út készítése</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Szerkesztés</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Pontokat mozgat</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>%1 pontot mozgatja</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>BAL-KATT kiválaszt;BAL-HÚZÁS mozgat</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Pontok mozgatása</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Forgatás</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>BAL-KATT az első sarok -> BAL-HÚZÁS területet ad meg -> BAL-KATT nagyít</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Nagyítás</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Sokszög készítése</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Adja meg az oldalak számát</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Dolgok feltöltését erőlteti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Feltöltést erőltet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Forgat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Többszöri metszés.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Az utak többször metszik egymást. (Később törölheti azt, ami nem kell.) Még mindig akar összekötőt készíteni mindegyikhez?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Dolgo(ka)t illeszt be</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Dolgok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>&Látszó pontokat mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>&Mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Kép/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>&Pontokat mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>&Neveket mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Szél/hossz &hálót mutat</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>Nagyítást &csempés háttérhez rögzít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>&Leképezés-szerkesztő…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>&Fényképeket mutat a térképen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Törlést erőltet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Bezár</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>&Egyszerűsít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Ut(ak)at egyszerűsít</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Utakat egyszerűsít a szükségtelen gyerekpontok eltávolításával</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>%1 címkéket törli %2 dolgon</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>%1 kapcsolat tagjait rendezi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Hiba OpenStreetBugs letöltésekor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>OpenStreetBugs-ot nem tudtam letölteni</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Utakat egyszerűsít</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Hálózati időzés</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Nem tudok csatlakozni OpenStreetBugs-hoz.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Hiba lezáráskor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Nem tudok hibát törölni. A szolgáló üzenete: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>OSMChange-kivitel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>OSMChange adat (*.osc)</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>utoljára: </i><b>%1</b> <b>%2</b> által</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>utoljára: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>méret</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Bal felső</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Jobb alsó</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Kapcsolat</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Szerep</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Tag</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Út</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>helyzet</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Pont</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 pont</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Hossz</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Méret</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Terület</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>magasság</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>sebesség</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Útpont</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>jellemzés</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>megjegyzés</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b> </translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation type="unfinished">Leképezés</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Új szolgáló</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Beállítás feltöltése nem sikerült</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Dupla kulcs</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Több mint 150 beállítás</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Új könyvjelző</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Címkék</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Kiválasztott elemek</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Név</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Ismeretlen mező</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Hiba!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Nincs meg a névkereső-szolgálat gazda.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>A névkereső-szolgálat gazda elutasította a kapcsolatot.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>A névkereső-szolgálat gazda hitelesítést igényel.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Ismeretlen hiba.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Űrlap</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Kimenő fájlnév</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>nevenincs</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Képfájlok (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG-fájlok (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished">Kép/SVG-kivitel</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation type="unfinished">min szél/hossz</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation type="unfinished">max szél/hossz</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation type="unfinished">Arányt mutat</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Használó:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Mindig</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Színt választ</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Térképstílus-szerkesztő</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Hozzáad</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Eltávolít</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Címkeválasztás</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>méter/képpont</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Látható max</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Látható min</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Arányos vastagság</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Rögzített vastagság</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Szaggatott</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>ki</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Kitöltés</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Ikont rajzol</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Másol</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Háttér</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Rajzoló szín</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Körvonal</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Belső</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Vonalat rajzol</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Címke</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Betű</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Felirat</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Háttérszínnel rajzol</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Háttércímkével jelöl</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Körül</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Terület</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Mindenre</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Nincs érvényes földcímke</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>Megpróbálja nyomponttal egyeztetni</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Betölti társított pont nélkül</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Vonalkódból vesz ki infót (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Figyelmen kívül hagyja</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Most minden fényképpel ezt teszi.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Kimenő fájlnév</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>nevenincs</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Képfájlok (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG-fájlok (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Beállítások</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Látható</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Általános</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Kicsinyítés/nagyítás (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Kis/nagy takarás</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Térképstílus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Egyedi</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Jelszó:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Hálózat</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Átjátszó-beállítás</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Átjátszót használ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Gazda:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Kapu:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Háttérkép</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Gyorstár mappa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Gyorstár méret (MB-ban; 0 letilt)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Térkép-átalakító</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Adatok</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokumentumok</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Magától ment dokumentumokat feltöltés után</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Beépített</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Nyomok</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Magától von ki nyomokat megnyitáskor</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Tiltja a stílusokat nyom rétegekben</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Színt választ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Meglévő eszköz</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Ilyen nevű eszköz már van. Kérem válasszon más nevet, vagy kattintson az <Alkalmaz> gombra, ha a meglévőt akarja megváltoztatni</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Nem törölhet előre beállított eszközt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Nem törölheti „%1” előre beállított eszközt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Nem változtathat előre beállított eszköz nevén</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Nem változtathatja meg „%1” előre beállított eszköz nevét</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Eszközprogramot választ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Naplómappát választ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Színek</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Háttér</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Fedés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Fókusz</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Kapcsolatok</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>NMEA-naplót vezet</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Rendszeridőt GPS-hez igazít</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Eszközök</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Név:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Ösvény:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Alkalmaz</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Hozzáad</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Eltávolít</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Nyelv</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Talán újra kell indítania a programot, hogy érvényesüljenek e változások</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>E nyelvet használja</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Lefordítja a szabványos címkéket</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Képpontok</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Külön mozgató mód</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Egyszeri egérgomb kölcsönhatás</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Egyedi QT-stílust használ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Stílust felülír</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Sablon</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Címkesablon</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Ne kössön össze ennél távolabbi GPX-pontokat (km-ben; a 0 mellőzés)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Csempe gyorstárazás (nem működik Yahoo! esetében jogi korlátozások miatt)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor címkesablon (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Nyomrétegek alapesetben csak olvashatók</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Egyedi stílus mappa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Mostani stílus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Angol</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arab</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Cseh</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Német</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Olasz</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Lengyel</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Orosz</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Használó:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Kiemelés</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPS-nyom</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Egyszerű GPX-nyom megjelenést használ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>GPS bemenet</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Soros</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Kapu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Gazda</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Látszó pontokat használ (új munkamenet kell)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Holland</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugál</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Szlovák</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Spanyol</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Svéd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrán</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Lehet rejtett kapcsolatokat választani</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Felület</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Megengedi a JOSM-kompatíbilis helyi szolgálót a 8111 kapun</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Brazíliai portugál</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Leképezés beállítása</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Leképezések</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Leképezés lista:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Név:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>PROJ4.szöveg</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Alkalmaz</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Hozzáad</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Eltávolít</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Tulajdonságok</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Tulajdonságok</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Tulajdonságok – Több elem</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Tulajdonságok – Kapcsolat</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Tulajdonságok – Út</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Térképet középre</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Térképet középre nagyítva</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 kiválasztott elem</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 kiválasztott elem</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Kiválasztott elemek</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Tagot választ</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Tulajdonságok – Pont</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Mégsem</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation type="unfinished">Zuhatagosan takarít</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation type="unfinished">„%1=%2” címkét tesz %3 dolgra</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>%2 „%1” címkéjét törli</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation type="unfinished">Mozgatja %1 pontot</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished">OSMChange-behozatal</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation type="unfinished">NGT-behozatal</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation type="unfinished">NMEA-behozatal</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Érvénytelen</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>méter</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Elérhetetlen</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>GPS-naplóhiba</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Nem tudok GPS naplófáljt készíteni: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>GPS-naplóhiba</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Nem tudok GPS naplófáljt készíteni: %1.</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Nem tudok csatlakozni ide: %1:%2</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99° 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Hosszúság</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Magasság</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 meter</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation>Műholdszám</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Műholdvétel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Érvénytelen</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Sebesség</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Szélesség</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Nem jó az eredmény-adatfolyam!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Eltávolít</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Alkalmaz</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Mégsem</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished">Fent</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished">Lent</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Tagok</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Címkék</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Az</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Címkék</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Nincs műhold</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Kiválasztás</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Kulcs</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Érték</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Név</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Az</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Alaphelyzet</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Bezár</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Stílusok</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Stílusok</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Kérem figyelmesen tekintse át az OSM-nek küldött változásokat</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Mégsem</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Feltöltés Openstreetmapra</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Kérem fűzzön megjegyzést e változásokhoz.</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>TMS-szolgáló beállítás</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMS-szolgálók</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Szolgálólista:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Név:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Leképezés:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Alkalmaz</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Hozzáad</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Eltávolít</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Szolgáló-URL:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Szolgáltatásokat tudakol</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Szolgáltatások:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ez &#8222;szabványos&#8221; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a>-szolgáló</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Szél/hossz (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Bal alsó középpont</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: tájékozódás szolgáltatásokról</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Cím és ösvény nem lehet üres.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Sikertelen letöltés: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Hiba szolgáltatásokat olvasván. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Kulcs</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Érték</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Űrlap</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>…</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Határozatlan</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Határozatlan</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Kivonat – %1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>nyomvonal szakaszok száma</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Teljes távolság</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Teljes időtartam</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Rajzoló réteg kivonata</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Nagyít</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Bezár</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Nyompont</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Szélesség</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Hosszúság</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Az</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Címkék</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>…</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Webhely</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Jelszó</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Név</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Átjátszó</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Kapu</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Nagyít</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Töröl</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: képességek tudakolása</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Cím és ösvény nem lehet üres.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Sikertelen letöltés: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Hiba képességeket olvasván. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>WMS-szolgálók beállítása</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMS-szolgálók</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Szolgálólista:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Név:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Rétegek:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Leképezés:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Stílusok:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Alkalmaz</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Hozzáad</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Eltávolít</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Szolgáló-URL:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Ez gyorstárazós WMS-szolgáló (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"></span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>Kicsempézi</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Nagyítószintek</translation> </message> </context> </TS> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_it.ts�����������������������������������������������������0000664�0000000�0000000�00001140204�11770671653�0021723�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="it"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Informazioni su Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Questo programma è rilasciato sotto licenza GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>Etichetta di testo</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Versione di Merkaartor</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">Versione QT</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (creato con <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Versione Rapida</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Versione PROJ4</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Versione GDAL</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet e altri, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Log delle modifiche</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Descrizione</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Tasto rapido</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importa</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Esporta</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>Pre&definito</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Annulla</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Editor dei tasti rapidi</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Carica schema tasti rapisi</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Schema Tasti rapidi di Merkaartor (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Impossibile aprire il file</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>Impossibile aprire %1.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Salva schema Tasti rapidi</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>senza titolo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Tutti i file (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Impossibile aprire il file</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 non può essere aperto in modifica.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Senza descrizione</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Guida sul lato destro della strada</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Distanza tra due strade</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Guida sul lato destro della strada</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation><b>Non</b> ci sono oggetti scorretti</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation>C'è <b>un</b> oggetto scorretto</translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform>Ci sono <b>%n</b> oggetti scorretti</numerusform> <numerusform>Ci sono <b>%n</b> oggetti scorretti</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Annulla</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centra mappa</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centra && zoom della mappa</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Annulla</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Qui <span style=" font-weight:600;">non</span> ci sono oggetti scorretti</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Pulisci</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>AGGIUNGI strada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>AGGIUNGI trackpoint %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>AGGIUNGI relazione %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>AGGIORNA trackpoint %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>AGGIORNA relazione %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>AGGIORNA strada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>RIMUOVI trackpoint %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>RIMUOVI strada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>RIMUOVI relazione %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Errore nella richiesta di upload</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Controllare nome utente e password nel menù Preferenze</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Si è verificato un errore durante l'upload (%1) Il server ha risposto con "%2"</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>APRI elenco cambimenti</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>CHIUDI elenco cambiamenti</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> Messaggio delle API '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Caricamento modifiche</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Errore nella richiesta di upload</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Controllare nome utente e password nel menù Preferenze</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Si è verificato un errore durante l'upload (%1) Il server ha risposto con "%2"</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> Messaggio delle API '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Si è verificato un errore durante il caricamento di questa richiesta (%1) "%2" Si prega di scaricare nuovamente la caratteristica con problemi per gestire il conflitto.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Controllo modifiche in corso...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>APRI elenco cambimenti</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>CHIUDI elenco cambiamenti</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>AGGIUNGI relazione %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>AGGIUNGI strada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>AGGIUNGI trackpoint %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>AGGIORNA relazione %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>AGGIORNA strada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>AGGIORNA trackpoint %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>RIMUOVI trackpoint %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>RIMUOVI strada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>RIMUOVI relazione %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>senza titolo</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Livello di lavoro</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Livello caricato (confermato)</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Immagine di sfondo</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Disegna livello #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Filtro strato #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>Esporta OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Esportazione OSM in corso...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Documento</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Scarica</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Località</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Segnalibro</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Vista corrente</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation>Link WWW (OSM/Google Map)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation>Selettore Xapi</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Dalla mappa sottostante (mappa fornita dal progetto OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Scarica anche tracce GPS</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Risolvi tutte le relazioni</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>errore</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>non ho scaricato a sufficienza</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Conflitti non risolti</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Prego correggere i conflitti esistenti prima di procedere</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Scaricamento punti</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>download da OSM (connessione)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Download fallito</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Utente/password non validi</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Download dei trackpoint %1 %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Analisi XML</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Conflitti da %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Download %1,%2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Download traccia - nodi %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 download</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Download non risolti %1 di %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Analisi non risolti %1 di %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Sono stati rilevati dei conflitti</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Ciò significa che alcune delle modifiche fatte dall'ultimo download sono state modificate da qualcun'altro sul server. Le modifiche sono state duplicate come "conflict_..." nel Livello "Conflitti...". Prima di poter fare l'upload delle modifiche, devi unire manualmente le due versioni e rimuovere quelle dal livello "Conflitti...".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Rilevate strade/relazioni vuote</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Le strade/relazioni vuote sono probabilmente errori. Vuoi segnarle per la rimozione?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Rimuovi caratteristica vuota %1</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Scaricamento da OSM in corso (%n bytes)</numerusform> <numerusform>Scaricamento da OSM in corso (%n bytes)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Scaricamento da OSM in corso (%n kBytes)</numerusform> <numerusform>Scaricamento da OSM in corso (%n kBytes)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Codice http inaspettato (%1) Messaggio del Server: '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> Messaggio delle API '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Scaricamento</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Analisi in corso...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Scaricomento non risolti...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Caricamento...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Prepara le modifiche</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Attendendo una risposta dal server</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Chiudi</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Impossibile cancellare</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>Impossibile cancellare la sezione perché è al di fuori dell'area scaricata.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Impossibile cancellare tutto</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation>La selezione completa non può essere cancellata perché parte di essa è al di fuori dell'area scaricata. Cancellare il possibile?</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>Inverti strada %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>Inverti %1 strada</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Esporta</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Cosa vuoi esportare?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Tutto quello visibile (es. non nascosti)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Viewport</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Selezione</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Caratteristiche</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centra mappa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centra && zoom della mappa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Scarica figli mancanti</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Elimina</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relazioni</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Strade</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>Punti di Interesse</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Tutti</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Aggiungi alla selezione</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Caratteristiche</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Solo le caratteristiche complete all'interno della vista</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Trova...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Ripristina</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Finestra di dialogo</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Chiudi</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Impostazione filtri</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filtri</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Lista filtri:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Applica</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Aggiungi</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Elimina</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Immagini GEO</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Carica immagini GEO</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Seleziona il Livello al quale appartengono le immagini:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Caricamento immagini ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Annulla caricamento</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Immagine errata?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Specifica offset</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Posiziona l'immagini più a:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>fine della traccia</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>inizio della traccia</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'secondi'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minuti e' ss 'secondi'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'ore,' mm 'minuti e' ss 'secondi'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Immagine "%1" è stata presa %2 prima della registrazione prossimo punto. Vuoi continuare ad utilizzarla?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Immagine "%1" è stata presa %2 dopo la registrazione dell'ultimo punto. Vuoi continuare ad usarla?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Rimuovi Immagini</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Timeout di rete</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Impossibile leggere i dettagli della foto dal server di Walking Papers.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Si prega di specificare un Walking Papers URL</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>Indirizzo URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centra mappa</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Copia il nome del file negli Appunti</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Salva immagine geottagata...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Livello foto</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>Il livello è in sola lettura</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation>Il livello utilizzato non può essere scritto. Dovrebbe? Se no, non è possibile caricare le immagini che contiene.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Il file non esiste</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Impossibile trovare l'immagine "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Errore nell'aprire "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>No TrackPoint</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Nessun TrackPoint trovato per l'immagine "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>Immagini JPEG (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Errore nel caricamento dati EXIF da "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation>Specifica il nome del file in uscita</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Errore durante l'apertura di "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Seleziona immagine successiva</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>Pag. Giù</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Seleziona immagine precedente</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>Pag Su</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Indirizzo OSM non valido</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>L'indirizzo specificato non è valido!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Formato Coordinate non valido!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Le coordinate devono essere: '<lon sinistra>, <lat inferiore>, <lon destra>, <lat superiore>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Le coordinate devono essere: '<lat centrale>, <lon centrale>, <aumento lat>, <aumento lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Vai a</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Segnalibro</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation>Link WWW (OSM/Google Map)</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>lonMin, latMin, lonMax, latMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>latCent, lonCent, latDimen, lonDimen</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informazioni</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>Url API OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>Url XAPI OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Cerca</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Nessuno</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Adattatore Forma</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation>Imposta la proiezioni come livello</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Chiudi</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>Adattatore WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>Adattatore TMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Plugins</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Mappa - nessuna</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mappa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Map - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Map - WMS-Tiled - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mappa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mappa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Termini di Licenza: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>I termini di licenza non sono stati accettati</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation>Non hai spuntato la casella di controllo per esprire il tuo accordo con i termini di licenza. In questo modo, non potrai utilizzare le mappe come livelli. È davvero quello che vuoi?</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Server</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Dimensione Tile</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Zoom Min/Max</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Proiezione</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Stringa</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Intero</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Float</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Longitudine</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Latitudine</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Proiezione non valida</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Impossibile impostare la proiezione.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Nessuna coordinata</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Latitudine o Longitudine mancanti. Sarà impossibile importare il file Vuoi veramente uscire?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Carica CSV impostazioni di imporazione</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Impostazioni importazione Merkaartor (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>File non valido</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>Impossibile aprire %1.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 non è un file CSV di impostazione</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>Salva i parametri importati (CSV)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>senza titolo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Tutti i file (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Impossibile aprire le impostazioni importate salvate</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 non può essere aperto in modifica.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Finestra di dialogo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Input</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>Anteprima OSM</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Specifiche</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>La prima riga contiene le intestazioni</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Separatore</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Virgola (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Punto e Virgola (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Scheda</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Altro:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation>Lista di Citazioni</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Nessuno</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation>Singola citazione (')</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>Doppia Citazione (")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Proiezione (in formato PROJ4; lasciare bianco per latitudine/longitudine)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Campi</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Lista campi:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Nome Campo (= chiave tag) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Tipo Campo:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importa</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Intervallo di importazione</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Da (0 per inizio):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Per (0 per terminare)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Carica impostazioni...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Salva parametri...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>Impossibile impostare la proieazione; per piacere specificane una</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informazioni</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n caratteristica</numerusform> <numerusform>%n caratteristiche</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Dimensione</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Caratteristiche</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Livelli</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Tutti</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Tracce</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Mostra tutti</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Nascondi tutti</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Tutto in sola lettura</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Niente in sola lettura</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Chiudi</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Mappa</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Disegna</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation>Resetta i Livelli ai valori predefiniti</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>Livello CHiuso: Presenti oggetti scorretti</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation>Ci sono caratteristiche scorrette in questo livello. Sei sicuro di volerlo chiudere? (niente Undo)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>Livello CHiuso: Non vuoto</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Sei sicuro di voler chiudere questo livello? (niente Undo)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Basso</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Opacità</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Visibile</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Sola lettura</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Forma</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Termini della Licenza</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Ho letto e accetto i termini di licenza.</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Non chiedermelo più</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Caricamento dei Plugin...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Avvio...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Aiuto</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Crea</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>St&rada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Modifica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Visualizza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Segnalibri</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Imposta &proiezione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&File</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stile</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Nodo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>Fi&nestra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Elementi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Esci</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Informazioni su</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Apri</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Crea un nuovo documento e importa un file</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zoom &tutti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zoom &finestra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zoom finestra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>Zoom indietr&o</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Zoom avant&i</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Zoom avanti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Link curvo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Annulla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Ripeti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importa un file nel documento corrente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Link</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Crea link</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Elimina</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Canc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>Inve&rti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Doppia carreggiata</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nuovo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Crea un nuovo documento</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Suddividi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alr+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Unisci</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>Rom&pi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lazione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Area</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Salva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>Strada cur&va</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation>Ta&gga templates</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Preferenze...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Tutti...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Esporta tutti i livelli visibili in un file</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Trova...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Trova e seleziona elementi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Visualizzati...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Esporta le caratteristiche visualizzate in un file</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Aggiungi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Rimuovi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Unisci</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Unisce i nodi selezionati (il primo selezionato rimane)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>S&alva come...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Scarica di più</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Scarica la vista corrente nel livello scaricato in precedenza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Mostra/Nasconde l'elemento delle Proprietà</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Mostra/Nasconde elemento dei Livelli</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Mostra/Nasconde l'elemento Informazioni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Allinea</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Allinea i nodi selezionati. I primi due selezionati sono il riferimento per la linea.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Conflitti non risolti</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Prego correggere i conflitti esistenti prima di procedere</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Cambiamenti non salvati</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>La mappa corrente contiene modifiche non salvate che saranno perse nella creazione di un nuovo documento. Vuoi annullare la creazione di un nuovo documento o continuare e scartare le modifiche di quella vecchia?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>File non valido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>Impossibile aprire %1.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Rilevata una vecchia versione delle QT</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Il tuo setup utilizza QT %1, il quale contiene vari errori conosciuti nell'upload dei dati su OpenStreetMap che portano a risposte 401 da parte del server. Sei sicuro che vuoi continuare (sconsigliato). Per maggiori informazioni vedi http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Upload su OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>A quanto pare non hai specificato il tuo utente e password OpenStreetMap. Vuoi farlo adesso?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Errore nel download</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Impossibile scaricare la mappa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Errore nello scaricamento da OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>OpenStreetBugs non può essere scaricato</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Semplifica Strade</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Timeout di rete</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Impossibile contattare OpenStreetBugs.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Errore nella chiusura del bug</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Impossibile eliminare il bug. Messaggio dal server: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Aggiungi Numeri alle Strade</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>Numero di segmenti in cui suddividere</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation>Specifica il numero di segmenti</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>Dividi strada in %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>Allinea assi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation>Specifica il numero di assi regolari da allineare ai bordi (ad es. 4 per un rettangolo)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>triangolare</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>rettangolare</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>pentagonale</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>Esagonale</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>eptagonale</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>ottagonale</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Allinea su %1 assi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>Allinea %1 su assi regolari</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation>Impossibile allineare gli assi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>Operazione di allineamento assi fallita. Si prega di regolare eventuali spigoli e riprovare.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>L'operazione di allineamento degli assi è fallita e non converge su una soluzione</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>Diffondi Nodi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Accedi alle aree</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Dividi area</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>Abitazioni a Schiera in %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Salva lo stile della mappa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Stile mappa Merkaator (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Carica stile mappa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Formati supportati</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Stile mappa Merkaartor (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>Foglio di stile MapCSS (*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Salva documento</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>senza titolo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Documento di Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Tutti i file (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Salva documento di template Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation>Impossibile aprire il documento di template salvato</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Esporta OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>File OSM (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Esporta osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>File osmChange (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Aggiungi Segnalibro</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Specifica il nome del segnalibro.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Nome segnalibro non valido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Il segnalibro non può essere vuoto.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Attenzione: Il segnalibro esiste già</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Inseriscine uno nuovo, mantieni lo stesso nome per sovrascriverlo o annulla l'operazione.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Rimuovi Segnalibro</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Seleziona il segnalibro da rimuovere.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation>Attenzione! Impossibile caricare la traduzione di Merkaartor per la lingua %1. Impostato come default in Inglese.</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Rimuovi Tag '%1' su %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Crea Area %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Area: Crea Strada %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Area: Completa Strada %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Area: Aggiungi nodo %1 a Strada %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Chiudi Area %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Aggiungi nodi a stada doppia carreggiata %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Crea strada a doppia carreggiata %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Crea nodo sulla strada: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Crea POI %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Crea rotonda %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Crea Nodo %1 nella Strada %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Crea Strada: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Chiudi Strada %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>CLICK con il tasto SINISTRO per selezionare;CLICK con il tasto DESTRO per la panoramica;CTRL+CLICK con il tasto SINISTRO per alternare le selezioni;SHIFT+CLICK con il tasto SINISTRO per aggiungere una selezione;TRASCINA con il tasto SINISTRO per selezionare un'area;CTRL+TRASCINA con il tasto DESTRO per effettuare lo zoom;DOPPIO CLICK per creare un nodo; DOPPIO CLICK su un nodo per iniziare una strada;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>CLICCA per selezionare/muovere;CTRL+CLICK per cambiare selezione;SHIFT+CLICK per aggiungere alla selezione; SHIFT+TRASCINA per selezionare un'area;CTRL+TRASCINA per zoommare;DOPPIO CLICK per crere un nodo;DOPPIO CLICK su un nodo per iniziare una strada;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Rimuovi caratteristica %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>Rimuovi caratteristiche</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Vuoi anche eliminare i nodi figli? Ricorda che i nodi OSM al di fuori dell'area scaricata saranno mantenuti.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>Inverti %1 strada</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Appuntti non validi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Unisci Strade</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Dividi Strade</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Rompi Strade</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Crea relazione %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>File non valido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Allinea Nodi</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Fondi Nodi in %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Mostra/Nascondi finestra Annulla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Copia i tag delle caratteristiche selezionati negli appunti; se la caratteristica è un trackpoint, copia anche le coordinate.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Incolla (e sovrascrivi) i tag negli appunti sulla caratteristica selezionata.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Unisce i tags dagli appunti con quelli della caratteristica selezionata.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Selezionati...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Incolla le caratteristiche dagli appuntiò Se la caratteristiche sono già nel documento, svrascrivile.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relazione Modificate %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Consigliamo caldamente di salvare i cambiamenti al documento dopo un upload. Vuoi farlo ora?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binario)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 non è un documento di Merkaartor valido.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Esporta GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Files GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Esporta KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Files KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl-T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Deposita le caratteristiche selezionate da un livello non uploadabile (i.e. Tracce o Estrazione) al livello di lavoro, pronto per l'upload</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Imposta Tags su %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Crea Nodo: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Aggiungi Nodo %1 alla Strada %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>tile %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Proprietà...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Waypoints</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Traccia %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>Errore GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Impossibile aprire la porta di comunicazione con il GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Apri file di log NMEA</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Livelli</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Mostra aree sc&aricate</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Alterna visibilità Barra degli strumenti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Mostra/Nascondi la Barra degli strumenti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Nascondi tutti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Mostra tutti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Livello &Immagine</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Avvia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Ripeti...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Mostra/Nascondi finestra GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>Fe&rma</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centra sul GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Mostra &segmenti traccia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Mostra &scala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Mostra &relazioni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Mostra sfondo delle strade</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Mostra confine strade</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Mostra ritocchi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Registra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pausa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Mostra/Nascondi finestra GeoImmagine</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Impossibile aprire il file</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 non può essere aperto in modifica.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Trovati nodi nella stessa posizione.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Vuoi unire tutti i nodi nella posizione selezionata?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Basso</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>File</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Modifica</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Vedi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Mostra</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Freccie direzionali</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Livelli</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Crea</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Caratteristica</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Nodo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Via</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relazione</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Formato Interscambio GPS (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Formato OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>Cambia formato OpenStreetMap (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Formato Noni GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Formato log GPS NMEA (*.nmea, *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>File KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Formato delimitato da virgole (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Immagine Georeferenziata (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>Shapefile ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Geography Markup Language (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Documento Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Strada</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Carica immagine</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Aggiungi posizione nodo all'immagine</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Geo tagga l'immagine con questa posizione</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Annulla</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Strumenti</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Finestre</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Aiuto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>Tagliare Funzioni</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Gli appunti non contengono dati validi.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Avviso Importante sul Copyright</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Stai provando ad importare un file KML. Prego sii al corrente di: - Non puoi importare in OSM un file KML creato da Google Earth. Mentre puoi pensare che i nodi creati con GE siano di tua proprietà, non lo sono! Essi sono un lavoro derivato da GE, e, di conseguenza, non possono essere usati in OSM. - Se hai scaricato il file da Internet, ci sono buone probabilità che esso sia coperto da copyright. Sii assolutamente sicuro che l'utilizzo di questi dati in OSM sia concesso dall'autore, o che i dati siano di pubblico dominio. Se non ne sei sicuro, discutine sulle mailing list "leagal" o "talk-it" di openstreetmap. Sei assolutamente sicuro che questo file KML può essere importato legalmente in OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Apri file</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Stacca Nodo %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Aggiungi elemento alla relazione</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Rimuovi membro dalla relazione</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Salva Template dei Tag</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Template dei Tag di Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Apri Template dei Tag</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Mostra Freccie direzion&ali</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Imposta &opacità Aree</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Esporta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Aperti di Re&cente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Impor&tati di Recente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>&Strumenti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Cara&tteristica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&azione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>M&ostra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Barra degli strumenti principale</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>Sp&osta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Scarica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Scarica dati mappa per una nuova area</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Seleziona</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Carica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Carica le modifiche sul server</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Rimuovi caratteristica selezionata</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Crea nuova strada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Crea nuovo nodo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Inverti direzione strada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Vai a...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Crea Strada a doppia carreggiata</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Crea Rotonda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Suddividi strada in strade (connesse) diverse</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Unisci le strade connesse in una solo strada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Suddividi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Suddividi le strade connesse</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Crea Relazione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Crea nuova area</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Modifica...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Salva...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Carica...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Trova</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Fondi i Nodi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Salva su file</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Scarica dati aggiuntivi mappa per l'area corrente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Proprietà</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informazioni</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Allinea i nodi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Diffondi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Diffondi nodi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Allinea e distribuisci i nodi selezionati in modo uniforme.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Copia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Copia le caratteristiche selezionate e tag negli appunti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Incolla Tags (S&ovrascrivi)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Incolla Tags (&Unisci)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Incolla i tag</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Incolla i tag dagli appunti (uniscili a quelli esistenti)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Incolla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Incolla caratteristiche dagli appunti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Aggiungi caratteristica nel livello di modifica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Mostra &nodi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Mostra no&mi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Avvia GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Ripeti GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Ferma GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Registra GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pausa GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>Immagine G&eoreferenziata</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Gestione Mondo OSB...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>Editor dei Ta&sti rapidi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Unisci...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Aggiungi membro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Rimuovi membro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Mai</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>per strade a Senso Unic&o</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Sempre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>S&epara</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Stacca il nodo da una strada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Separa un nodo dalla Strada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>Lavora Fuori &Linea</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stili</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Nascondi/Mostra strumento per lo Stile</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>&WMS Servers Editor...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>&TMS Servers Editor...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Aggiungi &numeri alle strade (schema Karlsruhe)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Suddividi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Suddividi i segmenti egualmente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>Suddividi il segmento di strada selezionato (la strada e i due nodi adiacenti) in segmenti di uguale lunghezza.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Mostra &griglia lat/lon</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>B&locca lo zoom in base allo sfondo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Editor &Proiezione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Mostra &Foto sulla mappa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Forza l'eliminazione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Scarica figli mancanti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Chiudi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>S&emplifica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Semplifica strada/e</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Semplifica la stada rimuovendo nodi bambini non necessari</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>&Editor filtri...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>&Nulla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>&Unisci Aree</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Unisci aree in contatto.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Unisci settori che sono in contatto.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Dividi Aree</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Dividi area compresa tra due nodi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation>Dividi l'area selezionata compresa tra due nodi in due aree separate.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>Abitazioni a Schiera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>Dividi l'area selezionata in residenze a schiera.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Modifica Barra degli Strumenti...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation>Allinea A&ssi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>Allinea i bordi agli assi regolari</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>Allinea i bordi di un certo numero di assi regolarmente spaziati</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Stampa...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>Stampa l'anteprima...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>Evidenzia le caratteristiche scorrett&e</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>Tag&lia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>E&strudere</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation>Estrudi interazione strade (stile JOSM)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>Selezione cambiamento</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Includere i bambini nella selezione</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Scala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>Salva come Documento di Template...</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Rimuovi membro '%1' da %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Aggiungi un buco.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Vuoi aggiungere un (nuovo) buco a questa area?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Impossibile careicale il file delle Proiezioni</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>Impossibile aprire il file "Projections.xml". Annullo l'operazione.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Crea congiunzione</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Proiezione non valida</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Impossibile impostare la proiezione '%1'</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Remposta valori possibili di stato della finestra di dialogo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Menù GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Videocamera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Crea co&ngiunzione</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Elimina figli</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Imposta Tag su più caratteristiche</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Interazione Crea Area</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Interazione Crea nodo</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>CLICK-SINISTRO per iniziare; DRAG per scalare; SHIFT-DRAG per ruotare; CLICK-SINISTRO per finire</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Interazione creazione Poligono</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Crea Poligono %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Interazione crea rotonda</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Interazione crea strada</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Modifica interazione</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Sposta Nodi</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Sposta Nodo %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>CLICK-SINISTRO per selezionare; TRASCINA-SINISTRO per spostare</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Iterazione sposta nodo</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>CLICCA per selezionare;TRASCINA con il tasto SINISTRO per ruotare</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Iterazione ruotazione</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>Ruota Caratteristica</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>CLICK-SINISTRO sul primo angolo -> TRASCINA-SINISTRO per specificare l'area -> CLICK-SINISTRO per zoomare</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Iterazione Zoom</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Crea Poligono</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Specifica il numero di lati</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Forza l'upload della caratteristica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Forza l'upload</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Ruota</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Inserimento multiplo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Queste strade hanno intersezioni multiple Vuoi creare una giunzione per ognuna di esse (quelle non volute possono essere eliminate successivamente)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Incolla caratteristica</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Caratteristiche</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Mostra nodi &virtuali</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Cancella %1 tag su %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Riordina i membri in relazione a %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation>Estrudi Strada %1</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation>CLICCA per selezionare;TRASCINA con il tasto SINISTRO per scalare</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation>Scala Interazione</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation>Scala Caratteristica</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation>Imposta "sorgente" dei tag su %1</translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b> </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>ultimo: </i><b>%1</b> di <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>ultimo: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>livello: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>dimensione</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>membri</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Alto sinistra</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Basso destra</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relazione</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Ruolo</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Membro</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>Strada chiusa</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 nodi</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Via</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Area</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>coordinate</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Nodo</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Lunghezza</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Dimensione</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>altezza sul liv. del mare</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>velocità</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Waypoint</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>descrizione</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>commento</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Vedi</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Riquadro di selezione</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Proiezione</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nuovo server</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Caricamento Preferenze fallito</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Chiave duplicata</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Più di 150 preferenze</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nuovo Segnalibro</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Tag</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Elementi selezionati</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Classe</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Campo sconosciuto</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Errore!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Servizio ricerca nome server non trovato.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Servizio ricerca nome il server ha rifiutato la connessione.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Servizio ricerca nome richiede l'autenticazione.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Errore sconosciuto.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Forma</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Nome file di output</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>File PDF (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>senza titolo</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Tutti i file (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>File Immagini (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>File SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Esporta Raster/SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Opzioni</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>lat/lon min</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>lat/lon max</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Mostra Nodi</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Mostra Relazioni</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Mostra Scala</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>Mostra griglia Lat/Lon</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation>Mostra caratteristiche senza stile</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Esporta in PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Esporta in SVG...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>Esporta in Raster...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>Indirizzo URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Utente:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation>Pwd:</translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Editor stile mappa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Aggiungi</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Elimina</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Seleziona Tag</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>metri/pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Visibile fino a</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Visibile dalla scala</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Spessore proporzionale</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Spessore fisso</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Tratteggiata</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>disabilitato</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Riempi area</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Disegna icona</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Sempre</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Selezione Colore</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplica</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Sfondo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Disegna con il colore</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation>Riempi con l'icona di Ritocco</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Confini</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Rifiniture</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Disegna passi</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Etichette</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Carattere</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Etichetta Tag</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Disegna con colore di sfondo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Etichetta con tag di sfondo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Globale</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Alone</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Area</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Nessun geotag valido</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>Etichetta di testo</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation>Questa foto non contiene geo-tagging dei dati EXIF. Cosa vuoi fare dopo?</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Carica senza nodo associato</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Estra informazioni dal barcode (Walking Papaers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignoralo</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Applica a tutte le foto.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Nome file di output</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>senza titolo</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Tutti i file (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>File Immagini (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Finestra di dialogo</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>File SVG (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Preferenze</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visualizza</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Generale</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Zoom avanti/indietro (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Opacità bassa/alta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Stile mappa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Personalizzato</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Password:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Rete</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Impostazioni proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Utilizza Proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Host:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Porta:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Immagine di sfondo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Cartella cache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Dimensione chache (in MB: 0 per disabilitare)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adattatore Mappa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Dati</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Documenti</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Auto salva documenti dopo l'upload</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Interno</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Disabilita stili per livello Tracce</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Tracce</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Estrai automaticamente tracce su apertura</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Selezione Colore</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Lo strumento esiste già</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Uno strumento con questo nome esiste già. Prego inserire un altro nome o clicca su pulsanre <Applica> se vuoi modificare quello esistente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Non posso eliminare uno strumento preimpostato</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Non posso eliminare lo strumento preimpostato "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Non posso modificare il nome di uno strumento preimpostato</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Non posso modificare il nome dello strumento preimpostato "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Seleziona eseguibile dello strumento</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>Seleziona un documento di template</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Documento Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Seleziona la cartella per i Log</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Colori</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Sfondo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Passaggio mouse</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Selezionato</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relazioni</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>Consenti la creazione di nodi/strade in modalità Selezione</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>Scorretto</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation>OSM API (l'URL è, ad es., "http://www.openstreetmap.org/api/0.6"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>Indirizzo URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation>Nominatim (Ricerca Geografica)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Salva log NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Imposta l'ora di sistema sul GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Abilita server compatibile JOSM sulla porta 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>Aggiungi automaticamente dei tag "sorgenti" quando crei delle caratteristiche su una mappa di sfondo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Strumenti</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Percorso:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Applica</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Aggiungi</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Elimina</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Lingua</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Potrebbe essere necessario il riavvio del programma per rendere effettive queste modifiche</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Utilizza lingua</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Traduci i tag standard</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Cartella stili personalizzati</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Template dei Tag</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Template dei Tag di Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Modalità Spostamento separato</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Iterazione singolo pulsante del mouse</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Utilizza stile Qt personalizzato</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Sovrascrivi stile</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixels</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Opzioni</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Stile corrente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Template</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>Carica automaticamente il documento di template</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Livelli Tracce in sola lettura per default</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Non connettere i nodi GPX separati da più di (in km: 0 per disabilitare)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Cache delle Tile (non attiva per Yahoo! a causa di restrizioni legali)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Inglese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Ceco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Tedesco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Ungherese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italiano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Giapponese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polacco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Portoghese Brasiliano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Utente:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Evidenzia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Traccia GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Usa l'aspetto GPX semplice</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Input GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Seriale</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Porta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Host</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Usa nodi Virtuali (richiesta una nuova sessione)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Olandese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portoghese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovacco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Spagnolo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Svedese</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ucraino</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Relazioni selezionabili mentre sono nascoste</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>interfaccia</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Installazione delle proiezioni</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Proiezioni</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Lista di proiezione:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>Stringa PROJ4</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Applica</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Aggiungi</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Elimina</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Documento</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Finestra di dialogo</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Predefinito</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>Standard (EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>PROJ4(+proj=...) Personalizzato</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Proprietà</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Proprietà</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Errore nella lettura del template file</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centra mappa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centra && zoom della mappa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 elementi selezionati</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 elementi selezionati</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Elementi selezionati</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Proprietà - Elementi multipli</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Proprietà - Relazione</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Proprietà - Strada</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Seleziona membro</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Proprietà - Nodi</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>Esportazione GPX...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Annulla</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation>Importando...</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Cascaded cleanup</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Imposta Tag '%1=%2' su %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Rimuovi Tag '%1' su %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Sposta nodo %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Importa da osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importa NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importa NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Non valido</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metri</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Non disponibile</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Errore registrazione GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Impossibile create un file di log GPS: %1</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Impossibile connettersi a %1:%2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Errore registrazione GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Impossibile create un file di log GPS: %1</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>Etichetta di testo</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Longitudine</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Altitudine</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metri</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satelliti</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Tipo di Fix</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Non valido</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Velocità</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Latitudine</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Flusso dati di risposta non corretto!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< S E P A R A T O R E ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Personalizza toolbar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Azioni</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Barre degli strumenti</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Nuovo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Elimina</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Rinonima</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Ripristina Tutto</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Applica</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Annulla</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Sopra</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>Giu</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation>Azioni correnti toolbar</translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Toolbar personalizzata</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Mebmri</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Rimuovi membro/i selezionato/i</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Tag</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>Aggiungi etichette iniziali</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation>Rimuovi tag selezionato/i</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Tag</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>Aggiungi etichette iniziali</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation>Rimuovi tag selezionato/i</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Nessun satellite</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Selezione</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Chiave</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Valore</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Ricerca</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation>Massimi risultati restituiti (0 per tutti)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Reimposta vista</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Chiudi</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Stili</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Stili</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Controlla attentamente le modifiche inviate ad OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Annulla</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Carica su Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Prego specificare un commento per queste modifiche</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Impostazioni server TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Server TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Elenco server:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL del Server</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Recupera Servizi</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Servizi:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Proiezione:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Dimensione dei riquadri:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Zoom minimo</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>Zoom massimo</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>valutazione "fonte" del tag:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>URL della licenza:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Lat/Lon (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Origin è in basso a destra</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Applica</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Aggiungi</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Elimina</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: GetServices</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Indirizzo e path non possono essere vuoti.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Download fallito: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Errore nella lettura dei servizi. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Modifica questo per aggiungere...</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Chiave</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Valore</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Forma</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>O</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>E</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>NO</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>è</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Non definito</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Non definito</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Fila di case a schiera</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Nessun numero civico</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Numero delle case</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Aggiungi numeri civici (schema Karlsruhe)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Intervalli</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Ad esempio "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Motivo</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Tutti i numeri</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Numeri dispari</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Numeri pari</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation>Opzionalmente puoi anche selezionare un nodo nell'area e il conteggio dei numeri civici partirà da li.</translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>n. di segementi traccia</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Distanza totale</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Durata totale</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Estrai - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Estrai il livello di disegno</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Chiudi</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Trackpoint</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Latitudine</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Longitudine</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Tag</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>Aggiungi etichette iniziali</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation>Rimuovi tag selezionato/i</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Finestra di dialogo</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Sito web</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Password</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Utente</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Utilizza Proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Porta</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Pulisci</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Imposta server WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Server WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Elenco server:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Livelli:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Proiezione:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Formato dell'immagine:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Stili:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>Ridimensionalo</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Livelli di zoom</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>valutazione "fonte" del tag:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>URL della licenza:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Applica</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Aggiungi</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Elimina</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: GetCapabilities</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Indirizzo e path non possono essere vuoti.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Download fallito: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation>Senza nome</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Errore durante la lettura delle capacità. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL del Server</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_ja.ts�����������������������������������������������������0000664�0000000�0000000�00001153744�11770671653�0021716�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="ja"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Merkaartorについて</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>テキストラベル</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>このプログラムは、GNU一般公衆使用許諾バージョン2のもとでライセンスされています。</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>変更ログ</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>記述</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>ショートカット</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>インポート(&I)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>エクスポート(&E)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>デフォルト(&D)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>キャンセル(&C)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>ショートカットの編集</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>ショートカット設定をロード</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartorショートカット設定 (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>ファイルを開けません。</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 を開けません。</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>ショートカット設定の保存</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>タイトルなし</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>全てのファイル(*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>保存ファイルを開くことができません。</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 を書き込み用に開けません。</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>記述がありません。</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>車は右側通行</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>二つの道路間の距離</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>車は右側通行</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation>変更されたオブジェクトは<b>ありません</b></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation><b>一つ</b>の変更されたオブジェクトがあります</translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform><b>%n</b>個の変更されたオブジェクトがあります</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>取り消し</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>中央に表示</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>中央に表示してズーム</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>取り消し</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>クリーンアップ</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>ズーム</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>道路 %1 を追加</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>トラックポイント %1 の追加</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>関連 %1 を追加</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>トラックポイント %1 のアップデート</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>関連 %1 のアップデート</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>道路 %1 のアップデート</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>トラックポイント%1の削除</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>道路%1の削除</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>関連%1の削除</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>アップロード要求のエラー</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>設定メニューでユーザ名、パスワードをチェックしてください。</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>この要求(%1)のアップロードでエラーが発生しました。 サーバからのメッセージは'%2'です。</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> APIメッセージは'%1'です</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>変更セットのオープン</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>チェンジセットを閉じる</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>変更点をアップロード中...</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>アップロード要求のエラー</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>設定メニューでユーザ名、パスワードをチェックしてください。</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>この要求(%1)のアップロードでエラーが発生しました。 サーバからのメッセージは'%2'です。</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> APIメッセージは'%1'です</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>要求 (%1) をアップロード中にエラーが発生しました。 "%2" 衝突を処理するために、問題のある地物を再ダウンロードしてください。</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>変更をチェック中...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>変更セットのオープン</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>チェンジセットを閉じる</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>関連 %1 を追加</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>道路 %1 を追加</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>トラックポイント %1 の追加</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>関連 %1 のアップデート</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>道路 %1 のアップデート</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>トラックポイント %1 のアップデート</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>トラックポイント%1の削除</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>道路%1の削除</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>関連%1の削除</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>タイトルなし</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>変更された</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>アップロードされたレイヤー</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>背景画像</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>描画レイヤー#%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>フィルタレイヤー#%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>OSMエクスポート</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>OSMをエクスポート中...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>文書</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>ダウンロード</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>位置</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>ブックマーク</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>現在のビュー</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation>WWWリンク(OSM/Googleマップ)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation>Xapiセレクタ</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>下の地図から(地図はOpenStreetMapプロジェクトから提供されています)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>生GPSトラックデータもダウンロード</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>全てのリレーションを解決</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>ダウンロード失敗</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>エラー</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>十分にダウンロードできません</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>OSM (%n バイト)のダウンロード</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>OSMデータ (%n キロバイト)のダウンロード</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>OSMデータのダウンロード(接続中)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>予期していないhttp状態コード(%1) サーバメッセージは'%2'です。</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> APIメッセージは'%1'です</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>ユーザ名/パスワードが不正です。</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>解決できない矛盾</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>既存の矛盾を先に解決してください。</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>ダウンロードするポイント</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>XMLのパース</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>トラックポイント %1-%2のダウンロード</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>トラック-ノードのダウンロード %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 ダウンロード</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>未解決の %2分の%1 をダウンロード</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>%2中%1の未解決をパース中</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>%1からの矛盾</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>矛盾を検出しました。</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>これは、あなたが最後にダウンロードした以降に変更した地物がサーバー上の誰かによって変更されたことを意味します。 これらの地物は「競合...」レイヤーの"conflict_..."として複製されています。 変更をアップロードする前に、手動で二つのバージョンをマージして、「競合...」レイヤーから取り除く必要があります。</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>空の道路や関連を見つけました。</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>空の道路や関連はおそらく誤りです。 これらに削除マークをつけますか?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>空のフィーチャを削除します。 %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>%1,%2 (ズーム %3)のダウンロード...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>ダウンロード中...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>パース中...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>未解決部をダウンロード中...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>アップロード中...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>変更の準備中</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>サーバの応答待ち</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>閉じる</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>ズーム</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>削除できません</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>ダウンロード領域外なので選択されたものを削除できません。</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>全てを削除できません</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation>選択されたものの一部がダウンロード領域の外側なので、完全に削除することはできません。 削除できるものだけを削除しますか?</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>ウェイ%1を反転</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>%1ウェイを反転</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>エキスポート</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>何をエキスポートしますか?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>表示されているもの全て(何も隠さない)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>ビューポート</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>選択</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>地物</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>中央に表示</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>中央に表示してズーム</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>不足している子要素をダウンロードする</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>削除</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>関連</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>道路</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>全て</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>選択に追加</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>地物</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>ビューポートに完全に含まれている地物のみ</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>検索...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>リセット</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>ダイアログ</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>名前</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>フィルタ</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>閉じる</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>フィルタ設定</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>フィルタ</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>フィルタリスト:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>名前:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>フィルタ</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>適用</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>追加</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>削除</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>ジオイメージ</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>画像の削除</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>ファイル名をクリップボードにコピーする</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>次のイメージを選択</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>前のイメージを選択</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>ジオタグされた画像のロード</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>イメージが関連づくレイヤーの選択</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>画像のロード...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>読み込みの停止</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>そのようなファイルはありません</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>画像"%1"が見つかりません。</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>"%2"読み込み時エラー: %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>"%1"からのEXIFデータ読み込み時エラー</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>ネットワークタイムアウト</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Walking Papersサーバから写真の詳細を読み込めません。</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Walking PapersのURLを指定してください</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>中央に表示</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>ジオタグ付き画像を保存...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>写真レイヤー</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>レイヤーは読み込み専用</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation>使っているレイヤーは書き込みできません。書き込み可能にしますか? そうでなければ、これに画像を読み込むことはできません。</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>オフセットの指定</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>トラックの終了点</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>トラックの開始点</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>トラックポイントがない</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>画像"%1"にあうトラックポイントがありません。</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss '秒'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm '分' ss '秒'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh '時' mm '分' ss '秒'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>画像間違えた?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>イメージ "%1"は最初のトラックポイントが記録される前%2に取られました。 それでもこれを使いますか?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>イメージ "%1"は最後のトラックポイントが記録された後%2に取られました。 それでもこれを使いますか?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG画像(*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation>出力ファイル名を指定</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>"%1"読み込み時エラー: %2</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>不正なOSMのURL</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>指定されたURLは不正です。</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>不正なCoordinatesフォーマット</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>座標は次のものでなければなりません: '<左経度>, <下緯度>, <右経度>, <上緯度>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>座標は次のものでなければなりません: '<中心緯度>, <中心経度>, <緯度幅>, <経度幅>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>移動</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>ブックマーク</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation>WWWリンク(OSM/Googleマップ)</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>最小経度、最小緯度、最大経度、最大緯度</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>緯度(1/100単位), 経度(1/100単位), 緯度(巾), 経度(巾)</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>情報</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>検索</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>なし</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>形状アダプタ</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>ズーム</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation>ビューの投影法をレイヤーに設定</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>閉じる</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMSアダプター</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMSアダプター</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>プラグイン</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>マップ - なし</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>マップ - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>地図 - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>地図 - WMS-Tiled - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>マップ - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>マップ - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>ライセンス条項: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>ライセンス条項を承諾していない</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation>あなたは、ライセンス規約に了承の意思表示のチェックボックスに入力をしていません。 そのため、このソースをまっプレイヤーとして利用できません。 本当にやりたいことですか?</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>サーバ</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>タイルのサイズ</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>最小/最大ズーム</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>投影法</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>文字列</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>整数</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>実数</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>経度</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>緯度</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>不正な投影法</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>投影法を設定できません。</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>座標なし</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>緯度又は経度のフィールドがありません。このファイルをインポートすることはできません。 本当に終了しますか?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>CSV インポート設定を読み込む</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Merkaartorインポート設定 (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>不正なファイル</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 を開けません。</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1はCSVインポート設定ファイルではありません</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>CSVインポート設定を保存</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>タイトルなし</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>全てのファイル(*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>インポートする設定を保存するためにオープンできません</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 を書き込み用に開けません。</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>ダイアログ</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>入力</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>OSMプレビュー</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>仕様</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>先頭行にヘッダを含む</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>区切り文字</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>カンマ(,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>セミコロン(;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>タブ</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>その他:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>なし</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation>シングルクオート(')</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>ダブルクオート(")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>投影法 (PROJ4 形式; 緯度/経度形式の場合は空白にする)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>フィールド</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>フィールドリスト:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>フィールド名(=タグキー) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>フィールド型:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>インポート</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>インポート範囲</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>開始位置(0が先頭):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>末尾(0は最後):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>設定を読み込む...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>設定を保存...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>投影法を設定できません; 一つ選択してください</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>情報</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n要素</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>サイズ</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>地物</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>全て表示</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>全て隠す</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>レイヤー</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>全て</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>地図</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>描画</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation>レイヤーをデフォルトにリセットする</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>トラック</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>全て読み込み専用</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>全て読み込み専用解除</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>閉じる</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>可視</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>読み込み専用</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>薄い</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>濃い</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>不透明</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>表示濃度</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>レイヤークローズ: 変更オブジェクトが存在</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation>このレイヤーには変更された地物があります。 本当に閉じますか?(元には戻せません)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>レイヤークローズ: 空でない</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>本当にこのレイヤーを閉じてもいいですか?(元には戻せません)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>フォーム</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>ライセンス条項</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>ライセンス条項を読み、承諾しました</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>今後確認しない。</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) プラグイン読み込み中...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) 初期化中...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>%2のタグ'%1'をクリアー</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>エリア %1 を作成する</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>領域: 道路作成 %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>穴の追加</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>この領域に穴を追加しますか?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>領域: 道路終了 %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>エリア: ノード %1 を道路 %2 に追加</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>領域%1を閉じる</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>2車線道路%1にノードを追加</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>2車線道路%1を作成する</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>道路にノードを作成する: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>POI %1 を作成</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>ロータリー%1の作成</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>道路 %2 にノード %1 を作成</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>道路%1の作成</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>ノード作成:%1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>ノード %1 を 道路 %2 に追加</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>道路%1を閉じる</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>同じ位置のノードが見つかりました。</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>ドロップした位置の全てのノードをマージしますか?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>ノードを%1にマージします</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>左クリックで選択; 右クリックでスクロール; CTRL-左クリックで選択のオン/オフ; SHIFT-左クリックで選択へ追加; 左ドラッグで領域選択; CTRL-右ドラッグでズーム; ダブルクリックでノード作成; ノード上でのダブルクリックでウェイの開始;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>クリックで選択; CTRL-クリックで選択のオン/オフ; SHIFT-クリックで選択へ追加; SHIFT-ドラッグで領域選択; CTRL-ドラッグでズーム; ダブルクリックでノード作成; ノード上でのダブルクリックでウェイの開始;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>フィーチャ%1の削除</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>地物の削除</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>子ノードも削除しますか? ダウンロード領域外のOSMノードは保持されることに注意してください。</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>%1ウェイを反転</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>タイル %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>プロパティ...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>投影法ファイルをロードできません</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projections.xml" はどこからも開けませんでした。中断します。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>薄い</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>濃い</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>不透明</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>ファイル</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>編集</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>ビュー</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>表示</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>方向付き矢印</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>レイヤー</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>作成</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>フィーチャ</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>ノード</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>ウエイ</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>関連</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>ツール</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>ウィンドウ</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>ヘルプ</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>クリップボードが不正です</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>地物の切り取り</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>クリップボードには有効なデータがありません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>保存されていない変更</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>現在の地図には保存されていない変更があり、新しい地図を開いたときに失われます。 新しい地図の開始をキャンセルしますか?それとも、継続して古い変更を破棄しますか?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>ウエイポイント</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>トラック %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>重大な著作権の警告</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>あなたはKMLファイルをインポートしようとしています。次のことを確認してください: - OSMにGoogleアースから作成したKMLファイルをインポートすることはできません。GEから作られた ノードがあなたのものだと思っているかもしれませんが、そうではないのです! それでも、GEからの派生物になります。だから、OSMで使えないのです。 - インターネットからそれをダウンロードしたならば、変更も著作者に帰属します。 それらのデータがOSMで使うことを、著者によって完全に許諾されていますでしょうか。あるいは データがパブリックドメインにありますか。(日本では、法的にパブリックドメインは存在しません。) もし、わからないならば、"legal"や"talk"といったopenstreetmap メーリングリストでアドバイスを求めてみてください。 このKMLをOSMにインポートすることが、法的に完全に確認できていますか?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>不正なファイルです</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 を開けません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>古い Qt のバージョンが見つかりました</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>あなたの設定は、Qt %1を使用しています。これには、OpenStreetMapにデータをアップロードをするときに知られているいろんなエラーがあり、401サーバ応答コードになってしまうことがあります。(推奨されていませんが、)続けますか? さらなる情報は、http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor で知ることができます。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>OSMのアップロード</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>OpenStreetMapユーザ名とパスワード を指定していないようです。 いま指定しますか?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>ダウンロードエラー</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>地図をダウンロードできません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>OpenStreetBugsダウンロードエラー</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>OpenStreetBugsからダウンロードできません</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>道路の結合</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>道路の分割</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>道路分割</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>道路を単純化する</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>ネットワークタイムアウト</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>OpenStreetBugsに接続できません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>バグクローズエラー</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>バグを削除できません。サーバーメッセージは: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>交差点を作成する</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>街路番号を追加する</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>分割する数</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation>セグメントの数を指定してください</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>ウェイを%1個に分割</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>軸合わせ</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation>辺を合わせるための軸の数を指定してください(例えば直交なら4)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>3角形</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>4角形</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>5角形</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>6角形</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>7角形</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>8角形</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>%1軸に合わせる</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>%1等間隔軸に合わせる</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation>軸に合わせられません</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>軸合わせ操作に失敗しました。鋭角の角を調整してもう一度試してください。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>軸合わせ操作に失敗し、解決法が収束しませんでした。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>ノードの整列</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>ノード %1 の切り離し</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>関連にメンバーを追加</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>関連からメンバーの削除</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>領域を結合</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>領域の分割</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>領域をテラスハウス化する %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>関連%1の作成</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>マップスタイルの保存</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartorマップスタイル(*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>マップスタイルのロード</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>サポートされたフォーマット</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>GPS 交換フォーマット (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMapフォーマット(*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>OpenStreetMap change format (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Noni GPSPlotフォーマット(*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>NMEA GPSログフォーマット(*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KMLファイル (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>カンマ区切り形式(*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>ジオタグされた画像(*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESRIシェイプファイル (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Geography Markup Language (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartor文書(*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>道路</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>画像を読み込む</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>ノードの位置をイメージに追加</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>この位置にイメージをジオタグする</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>キャンセル</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Merkaartor地図スタイル (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>MapCSSスタイルシート(*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Merkaartor文書を保存</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>タイトルなし</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Merkaartor文書ファイル (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>全てのファイル(*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Merkaartorテンプレート文書を保存</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>保存ファイルを開くことができません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 を書き込み用に開けません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation>テンプレート情報を保存するためにオープンできません</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>不正なファイル</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 は、ただしい Merkaartor データファイルではありません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>OSMのエキスポート</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM ファイル (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>osmChangeをエクスポート</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>osmChangeファイル(*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>GPXのエキスポート</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPXファイル (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>KMLのエキスポート</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KMLファイル(*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>ブックマークに追加</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>ブックマークの名前を指定</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>不正なブックマーク名</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>ブックマークは空白にできません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>警告!ブックマークの名前がすでに存在しています。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>上書きするならこのまま、さもなければ新しい名前を入力するか、キャンセルしてください。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>ブックマークの削除</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>削除するブックマークを選択</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>不正な投影法</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>投影法を"%1"に設定できませんでした。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPSエラー</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>GPSポートを開けません。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>NMEAログファイルを開く</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>タグテンプレートの保存</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartorタグテンプレート(*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>タグテンプレートを開く</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation>警告! "%1"言語用のMerkaartor翻訳ファイルを読み込めません。デフォルトの英語に切り替えます。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>ヘルプ(&H)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>作成(&C)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>道路(&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>編集(&E)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>ビュー(&V)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>ブックマーク(&B)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>投影法の設定(&p)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>方向矢印の表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>領域の表示濃度設定(&o)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>ファイル(&F)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>エクスポート(&E)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>最近開いたファイル(&c)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>最近のインポート(&t)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>ツール(&T)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>スタイル(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>ノード(&N)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>ウィンドウ(&W)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>ドック (&D)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>フィーチャ(&t)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>レイヤー(&L)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>関連(&a)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>表示(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>終了(&Q)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>情報(&A)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>開く(&O)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>新規文書を作成して、ファイルをインポート</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>全てズーム(&a)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>ウィンドウズーム(&w)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>ズームウィンドウ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>ズームアウト(&o)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>ズームイン(&i)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>ズームイン</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>曲がったリンク</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>元に戻す(&U)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>やり直す(&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>移動(&M)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>インポート(&I)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>現在の文書にファイルをインポート</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>ダウンロード(&D)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>新規エリアの地図データをダウンロード</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>リンク</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>リンクの作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>選択(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>アップロード(&U)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>変更をサーバにアップロード</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>削除(&e)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>選択したフィーチャを削除</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>削除</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>新規道路の作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>新規ノードの作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>逆転(&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>道路の進行方向を反転</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>移動(&G)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>2車線にする</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>2車線道の作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>ロータリーの作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>新規(&N)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>新規文書の作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>分割(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>道路を分割して、複数のつながった道路とします。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>接合(&J)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>接続された道路を一つの道路として結合</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>切り離す(&B)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>分割</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>接続された道路を切り離す</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>関連(&l)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>関連の作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>領域(&A)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>新規エリアの作成</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>編集(&E)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>保存(&S)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>読み込み(&L)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>カーブ (&C)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>設定(&P)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>全て(&A)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>全ての表示中レイヤーをファイルに書き出す</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>検索(&F)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>検索</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>検索とアイテムの選択</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>ビューポート...(&V)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>ビューポートの地物をファイルにエクスポートする</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>追加(&A)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>削除(&R)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>マージ(&M)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>ノードの結合</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>選択されたノードをマージする(最初に選択されたものが残る)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>名前をつけて保存(&A)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>保存(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>ファイルに保存</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>更新ダウンロード</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>現在のエリアの地図データをダウンロード</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>現在の表示範囲を、前回ダウンロードしたレイヤーにダウンロード</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>プロパティ(&P)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>プロパティ枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>レイヤー枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>情報(&I)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>情報枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>整列(&A)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>ノードの整列</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>選択したノードを整列させます。最初に選択した2つの線上にならべます。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>選択されたノードを均等割り付け</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>やり直し枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>ダウンロードした領域の表示(&d)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>コピー(&C)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>選択したフィーチャーとタグをクリップボードにコピー</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>選択した地物のタグをクリップボードにコピーします;地物がトラックポイントなら、緯度経度もコピーします。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>タグを上書き貼り付け(&O)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>クリップボードのタグを選択したーフィーチャーに貼り付け(し上書き)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>タグを追加貼り付け(&M)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>タグを貼り付け</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>クリップボードからタグを貼り付け(既存のタグに追加)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>選択したフィーチャーのタグと、クリップボードのタグを混ぜる</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>選択...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation>選択された領域を、選択された二つのノードの間で、二つの領域に分割します。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation>軸を合わせる(&A)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>等間隔の軸に端を合わせる</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>等間隔に空いた軸に端を合わせる</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>印刷(&P)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>印刷プレビュー...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>変更した地物をハイライトする(&y)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>不足している子要素をダウンロードする</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>切り取り(&t)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>押し出し(&E)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation>ウェイ押し出し(JOSM形式)の説明</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>トグルを選択</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>選択に子ノードも含む</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>拡大縮小</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>テンプレート文書として保存...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>貼り付け</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>クリップボードからタグを貼り付け</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>クリップボードのフィーチャーを貼り付けます;もしフィーチャーIDがすでに文書にある場合は上書きされます。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (バイナリー形式)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>地物を変更レイヤーにコミットする</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>選択した地物をアップロードできないレイヤー(トラックや展開)から「変更されたレイヤー」に移して、アップロードできるようにする</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>ツールバーのトグル</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>ツールバー枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>全て隠す</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>全て表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>画像レイヤー(&I)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>WMSサーバの編集(&W)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>TMSサーバの編集(&T)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>セグメントを等間隔に分割する</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>選択されたウェイのセグメント(ウェイと隣接した二つのノード)を等間隔のセグメントに分割します。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>単純化(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>道路を単純化する</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>不要な子ノードを削除することで道路を単純化します</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>フィルタエディタ(&F)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>なし(&N)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>領域を結合(&J)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>接している領域を結合</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>接している領域を結合する。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>領域を分割する(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>領域を二つのノードで分割する</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>テラスハウス(&T)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation>領域をテラスハウス化する</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>選択された領域をテラスハウスに分割します。</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>ツールバーの編集...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>ラスタ/SVG(&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation>タグテンプレート(&g)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>メインツールバー</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>開始(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>GPSの開始</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>再生(&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>GPSの再生</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>GPS枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>ストップ(&t)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>GPSの停止</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>GPS位置を中心にする(&C)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>トラックの要素を表示(&s)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>スケールを表示(&s)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>関連を表示(&r)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>道路の背景を表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>道路境界を標示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>パターンを表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>記録</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>GPS記録</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>一時停止</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>GPSを一時停止</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>ジオイメージ(&e)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>ジオイメージ枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>World OSB 管理...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>ショートカット編集(&S)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>結合(&M)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>メンバー追加(&A)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>メンバー削除(&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>表示しない(&N)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>一方通行道路のみ(&O)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>常に(&A)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>分離(&D)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>道路からノードを切り離す</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>道路からノードを切り離す</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>オフライン作業(&W)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>スタイル(&S)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>スタイル枠の表示/非表示</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>捨てられるダイアログ状態を初期化する (&R)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPSメニュー</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>カメラ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>交差点を作成する (&J)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>街路番号(Karlsruhe scheme)を追加 (&n)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>緯度/経度グリッドを表示(&g)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>背景タイルのズームを固定(&L)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>投影法エディタ(&P)...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>写真を地図に表示(&P)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>強制的に削除する</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>閉じる</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>リレーションが修正されました。 %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>子の削除</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>%2のメンバー'%1'の削除</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>解決できない矛盾</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>既存の矛盾を先に解決してください。</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>アップロード後に、これら変更をあなたの文書として保存することを強く推奨します。 そうしますか?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>複数のフィーチャーのタグを設定</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>%1にタグを設定</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>領域作成の説明</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>ノード作成の説明</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>左クリックで開始; ドラッグで拡大縮小; SHIFT-ドラッグで回転; 左クリックで終了</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>多角形作成の説明</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>多角形 %1 を作成する</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>ラウンドアバウト作成の説明</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>ウェイ作成の説明</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>編集の説明</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>ノードの移動</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>ノード%1の移動</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>左クリックで選択; 左ドラッグで移動</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>ノード移動の説明</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>マウスカーソルを置くと選択; 左ドラッグで回転</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>回転の説明</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>地物を回転</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>左クリックで最初の角->左ドラッグで領域指定->左クリックでズーム</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>ズームの説明</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>多角形を作成する</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>辺の数を指定してください</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>地物を強制的にアップロードする</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>強制的にアップロードする(&F)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>ノードを表示(&n)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>名前を表示(&m)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>回転</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>複数のファイルを開く</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>複数交差</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>これらの道路には複数の交差があります。 それでもそれぞれに交差点を造りますか?(不要な交差点は後で削除できます)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>地物を貼り付け</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>地物</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>仮想ノードを表示(&v)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>%2の%1タグをクリア</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>関連%1のメンバーを再整列する</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation>ウェイ%1の押し出し</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation>マウスカーソルを置くと選択; 左ドラッグで拡大縮小</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation>拡大縮小の説明</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation>地物を拡大縮小</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation>%1に"source"タグを設定</translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>last: </i><b>%1</b> by <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>last: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>レイヤー: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>サイズ</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>メンバー</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>左上</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>右下</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>関連</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>役割</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>メンバー</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>閉じたウェイ</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>距離</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>サイズ</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 ノード</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>ウエイ</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>エリア</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>coord</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>高度</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>速度</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>記述</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>コメント</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>ウエイポイント</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>ノード</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>ビュー</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>境界</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>投影法</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>新規ブックマーク</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>設定のアップロード失敗</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>重複したキー</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>150以上の設定項目</translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>新規サーバ</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>タグ</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>選択したアイテム</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>クラス</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>名前</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>不明なフィールド</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>エラー!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>地名検索サービスのサーバが見つかりません。</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>地名検索サービスのサーバが接続を拒否しました。</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>地名検索サービスは、認証が必要です。</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>不明なエラー。</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>フォーム</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>出力ファイル名</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>PDFファイル(*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>タイトルなし</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>全てのファイル(*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>画像ファイル (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVGファイル (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>ラスタ/SVGのエクスポート</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>オプション</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>最小 緯度/経度</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>最大緯度/経度</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>ノードを表示</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>関連を表示</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>スケールを表示</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>緯度/経度グリッドを表示</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation>スタイル指定されていない地物を表示</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>PDFとしてエクスポート...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>SVGとしてエクスポート...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>ラスタデータとしてエクスポート...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>ユーザ:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation>パスワード:</translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>常に</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>色の選択</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>マップスタイル編集</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>グローバル</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>背景</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>フィルタ</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>追加</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>削除</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>重複</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>タグの選択</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>メートル/ピクセル</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>スケールから見える</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>カラーで表示</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>比例幅</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>固定幅</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>点線</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>オフ</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>領域を埋める</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation>アイコンパターンで塗りつぶす</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>境界</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>パターン</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>階段を表示</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>アイコンを表示</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>ラベル</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>フォント</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>ラベルタグ</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>ハロ</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>エリア</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>背景色を表示</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>背景タグのラベル</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>有効なジオタグなし</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>テキストラベル</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation>この写真にはジオタグEXIFデータがありません。 次にどうしますか?</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>トラックノードとマッチングしようとする</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>関連するノードなしで読み込む</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>情報をバーコードから抽出 (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>無視</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>これを現在の写真全てに対して行う。</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>出力ファイル名</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVGファイル (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>タイトルなし</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>全てのファイル(*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>画像ファイル (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>ダイアログ</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>英語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>アラビア数字</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Czech</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>German</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>フランス語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>ハンガリー語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italian</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>日本語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polish</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>ポルトガル語(ブラジル)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russian</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>カスタムスタイルディレクトリ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>タグのテンプレート</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartorタグテンプレート(*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>色の選択</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>ツールがすでに存在します</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>この名前のツールはすでに存在しています。 他の名前を選択するか、既存の名前を変更して<適用>ボタンをおしてください。</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>プリセットツールを削除できません</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>プリセットツール"%1"を削除できません</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>プリセットツールの名前を変更できません</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>プリセットツールの"%1"の名前を変更できません。</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>ツールの実行ファイルを選択</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>テンプレート文書を選択</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Merkaartor文書(*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>ログディレクトリを選択</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>設定</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>地域</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>これらの変更が有効になるには、プログラムを再起動する必要があるかもしれません。</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>多国語を使う</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>標準タグを翻訳</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>外観</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>一般</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>ズーム アウト/イン(%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>表示濃度の濃淡</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>分離移動モード</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>シングルクリックでマウス操作</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>カスタムQtスタイルを使う</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>配色</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>背景</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>スタイルの上書き</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>上にある時</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>ピクセル</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>フォーカス</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>関連</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>マップスタイル</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>現在のスタイル</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>トラックレイヤーのスタイルを無効にする</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>テンプレート</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>内蔵</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>カスタム</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>データ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>テンプレート文書を自動的に読み込む</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>パスワード:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>文書</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>選択モードでノード/ウェイ作成を可能にする</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>変更</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>オプション</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation>OSM API (URL の例: "http://www.openstreetmap.org/api/0.6"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>アップロード後文書を自動保存</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>トラック</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>オープン時に自動的にトラックを展開する</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>トラックレイヤーは既定で読み込み専用</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>次以上離れたGPXノードは接続しない(単位km; 0で無効)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>NMEAログを保存</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>システム時間をGPSで合わせる</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>ネットワーク</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>プロキシー設定</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>プロキシーを使う</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>ユーザ:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>ポート:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>ホスト:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>JOSM互換のローカルサーバーをポート8111で有効にする</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>背景画像</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>タイルキャッシング(法的な制限のためにYahoo!では無効です)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>キャッシュディレクトリ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>キャッシュサイズ(Mb;0で無効)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>マップアダプタ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>背景地図の上に地物を作成するときに自動的に"source"タグを追加する</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>ツール</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>名前:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>パス:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>適用</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>追加</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>削除</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>ハイライト</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPXトラック</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>シンプルなGPXトラック表現を使う</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>GPS入力</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>シリアル</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>ポート</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>ホスト</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>仮想ノードを使用する(新しいセッションが必要)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>オランダ語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>ポルトガル語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>スロバキア語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>スペイン語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>スウェーデン語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>ウクライナ語</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>隠れている関連を選択可能にする</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>インターフェース</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>投影法設定</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>投影法</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>投影法リスト</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>名前:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>PROJ4文字列</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>適用</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>追加</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>削除</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>文書</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>ダイアログ</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>事前定義</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>標準(EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>カスタムPROJ4(+proj=...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>プロパティ</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 の選択したアイテム</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 の選択したアイテム</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>選択したアイテム</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>プロパティ - 複数要素</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>プロパティ - 道路</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>プロパティ - 関連</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>プロパティ</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>テンプレートファイル読み込みエラー</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>中央に表示</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>中央に表示してズーム</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>メンバーを選択</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>プロパティ - ノード</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>GPXをエクスポート中...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>キャンセル</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation>インポート中...</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>%3に'%1=%2'のタグを設定</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>%2のタグ'%1'をクリアー</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>ノード %1 の移動</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>osmChangeをインポート</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>NGTのインポート</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>NMEAのインポート</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>不正</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>メートル</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>無効</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2次元</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3次元</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>GPSログエラー</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>GPSログファイル %1を作成できません。</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>%1に接続できない:%2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>GPSログエラー</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>GPSログファイル %1を作成できません。</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>テキストラベル</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>経度</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>高度</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 メーター</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># 衛星</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>位置補正タイプ</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>不正</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>速度</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>緯度</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>適切な結果ストリームではありません!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation><区切り></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>ツールバーをカスタマイズ</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>アクション</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>ツールバー</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>新規</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>削除</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>名前の変更</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>全てを元に戻す</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>適用</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>キャンセル</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>上</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation>現在のツールバーアクション</translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>カスタムツールバー</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>メンバー</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>選択したメンバーを削除</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>タグ</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>"source"タグを追加</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation>選択したタグを削除</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>タグ</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>"source"タグを追加</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation>選択したタグを削除</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>衛星が見つかりません</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>選択</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>キー</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>値</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>名前</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>クエリ</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation>返される結果の最大値(0は全て)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>ビューのリセット</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>閉じる</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>スタイル</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>スタイル</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Openstreetmapにアップロードする</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>このチェンジセットへのコメントを指定してください</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>OSMに送られる変更を注意深くレビューしてください。</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>キャンセル</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>TMSサーバ設定</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMSサーバ</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>サーバリスト:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>名前:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>サーバURL:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Servicesを取得</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>サービス:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>投影法:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>タイルサイズ</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>最小ズーム:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>最大ズーム:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>"source"タグの値:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>ライセンス URL:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>緯度/経度(EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>原点は左下</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>適用</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>追加</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>削除</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: GetServices</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>アドレスやパスは空白にできません</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>ダウンロード失敗: %1</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>サービス読み込み時のエラー。 </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>キー</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>値</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>これを追加用に編集...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>フォーム</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>OR</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>かつ</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>未定義</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>未定義</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>テラスハウス</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>住居番号なし</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>住居の数</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>住居番号を追加(Karlsruhe scheme)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>範囲</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>例: "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>パターン</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>全ての番号</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>奇数</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>偶数</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation>オプションとして、領域の中のノードを選択して、住居番号をそちら側から開始させることもできます。</translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>トラックセグメント数</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>合計距離</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>合計時間</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1時間 %2分</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>展開中 - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>描画レイヤーに展開する</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>ズーム</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>閉じる</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>トラックポイント</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>緯度</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>経度</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>タグ</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>"source"タグを追加</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation>選択したタグを削除</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>ダイアログ</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Webサイト</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>パスワード</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>ユーザ名</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>プロキシーを使う</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>ポート</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>ズーム</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>クリア</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: GetCapabilities</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>アドレスやパスは空白にできません</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>ダウンロード失敗: %1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation>名称未設定</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>capabilitiesの読み込みでエラーが発生しました。 </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>WMSサーバ設定</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMSサーバ群</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>サーバリスト:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>名前:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>レイヤー:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>投影法:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>画像形式:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>スタイル:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>タイル表示</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>ズームレベル</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>"source"タグの値:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>ライセンス URL:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>適用</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>追加</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>削除</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>サーバURL:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ����������������������������merkaartor-0.18.1/translations/merkaartor_nl.ts�����������������������������������������������������0000664�0000000�0000000�00001122571�11770671653�0021727�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="nl"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Over Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Dit programma valt onder de GNU Public Licentie v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//NL" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Overzicht van wijzigingen</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Beschrijving</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importeer</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exporteren</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Standaard</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Annuleren</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Laad Snelkoppeling thema</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartor snelkoppeling schema (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Het is niet mogelijk om het bestand te openen</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 kon niet worden geopend</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>zonder titel</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Alle bestanden (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 kon niet worden geopend om te schrijven.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Geen omschrijving</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Rijden aan de rechterkant van de weg</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Afstand tussen twee wegen</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Rijden aan de rechterkant van de weg</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation>Er is <b>geen</b> gewijzigd object</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation>Er is <b>één</b> gewijzigd object</translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform>Er is <b>%n</b> gewijzigd object</numerusform> <numerusform>Er zijn <b>%n</b> gewijzigde objecten</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Ongedaan maken</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centreer de kaart</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centreer && zoom de kaart</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Ongedaan maken</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//NL" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Opschonen</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zoomen</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>Weg %1 toevoegen</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>trackpunt %1 toevoegen</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>Relatie %1 toevoegen</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>Relatie %1 bijwerken</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>Weg %1 BIJWERKEN</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>VERWIJDER trackpunt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>VERWIJDER weg %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>VERWIJDER relatie %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Fout bij het uploaden</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Controleer uw gebruikersnaam en wachtwoord in het Eigenschappen menu</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Er was een fout bij het doorsturen van dit verzoek naar de server (%1) Server boodschap is '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> API-boodschap is '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Wijzigingen doorsturen naar server...</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>OPEN wijzigingsset</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>SLUIT wijzigingsset</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Fout bij het uploaden</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Controleer uw gebruikersnaam en wachtwoord in het Eigenschappen menu</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Er was een fout bij het doorsturen van dit verzoek naar de server (%1) Server boodschap is '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> API-boodschap is '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Nakijken van de wijzigingen...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>OPEN wijzigingsset</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>SLUIT wijzigingsset</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>Relatie %1 toevoegen</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>Weg %1 toevoegen</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>trackpunt %1 toevoegen</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>Relatie %1 bijwerken</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>Weg %1 BIJWERKEN</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>VERWIJDER trackpunt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>VERWIJDER weg %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>VERWIJDER relatie %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>zonder titel</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Wijzigingen laag</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Doorgestuurde laag</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Achtergrondafbeeldingen</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Tekenlaag #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Filterlaag #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>OSM Export</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Exporteren naar OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Document</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Download</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Plaats</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Bladwijzer</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Huidig beeld</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Van de map beneden (map beschikbaar gesteld door het OpenStreetMap project)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Haal ook de GPS-sporen van anderen op</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Download mislukt</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>fout</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>er werd niet voldoende afgehaald van de server</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Downloaden van OSM (%n byte)</numerusform> <numerusform>Downloaden van OSM (%n bytes)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Downloaden van OSM (%n kByte)</numerusform> <numerusform>Downloaden van OSM (%n kBytes)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Bezig met downloaden...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Downloaden van OSM (verbinden)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Onverwachte HTTP-status code (%1) De boodschap van de server is '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> API-boodschap is '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Gebruikersnaam/wachtwoord fout</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Onopgeloste conflicten</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Los eerst bestaande conflicten op</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Punten aan het downloaden</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Verwerken...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Inlezen XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Downloaden trackpunten %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Gedownloade track - nodes %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 download</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Downloaden ongebonden...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Downloaden ongebonden %1 van %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Verwerken ongebonden %1 van %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Conflicten van %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Er zijn conflicten gevonden</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Dit betekent dat een aantal van de elementen die u heeft gewijzigd sinds uw laatste download, ondertussen werden gewijzigd op de server door iemand anders. De elementen werden gedupliceerd op de conflictenlaag. Voordat u uw wijzigingen zal kunnen doorsturen naar de server, moet u eerst manueel de twee versies samenvoegen en verwijderen van de conflictenlaag.</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Lege wegen/relaties gevonden</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Lege wegen/relaties zijn mogelijke fouten. Wil je deze markeren om te verwijderen?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Verwijder lege kenmerk %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Downloaden van %1,%2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Aan het doorsturen...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Voorbereiding van wijzigingen</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Wachten op antwoord van de server</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Sluiten</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zoomen</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Verwijderen niet mogelijk</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Kan niet alles verwijderen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>Weg %1 omkeren</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>%1 wegen omkeren</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exporteren</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Wat wenst u te exporteren?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Alle zichtbare (niet verborgen)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Geselecteerd</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Features</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centreer de kaart</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centreer && zoom de kaart</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Download ontbrekende relaties</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Verwijderen</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relaties</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Wegen</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI's (interssante referentiepunten)</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Alles</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Aan selectie toevoegen</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Features</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Enkel kenmerken volledig in het zichtbare scherm</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Zoek...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialoog</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Naam</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Sluiten</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Instellingen voor filters</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filters</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Filterlijst:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Naam:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Toepassen</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Toevoegen</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Verwijderen</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geo afbeeldingen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Verwijder afbeeldingen</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Kopieer bestandsnaam naar klembord</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Selecteer volgende afbeelding</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Selecteer vorige afbeelding</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Laad afbeeldingen die geografische referenties (geotags) bevatten</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Selecteer tot welke laag de afbeeldingen behoren:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Afbeeldingen laden....</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Laden afbreken</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Bestand bestaat niet</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Kan afbeelding "%1" niet vinden</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Fout bij het openen van "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Fout bij het lezen van EXIF-data van "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Kan de foto details van de Walking Paper server niet lezen.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Gelieve the URL op te geven waar de Walking Papers zich bevinden</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centreer de kaart</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Geogerefeerde afbeelding opslaan...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Fotolaag</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Plaats afbeeldingen meer naar:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>einde van het spoor</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>Begin van het spoor</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Geen TrackPunten</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Geen TrackPunten gevonden voor afbeelding "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'seconden'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minuten en' ss 'seconden'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'uren,' mm 'minuten en' ss 'seconden'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Verkeerde afbeelding?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Afbeelding "%1" is %2 gemaakt voordat het eerste routepunt was opgeslagen. Wenst u er nog steeds gebruik van te maken?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Afbeelding "%1" is %2 gemaakt nadat het laatste routepunt was opgeslagen. Wenst u deze nog steeds te gebruiken?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG afbeeldingen (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Fout bij het openen van "%1": %2</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Onjuiste OSM url</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Het opgegeven adres is niet geldig!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Onjuist Coördinatenformaat</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Coördinaten als: '<links lon>, <onder lat>, <rechts lon>, <boven lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Coördinaten als: '<midden lat>, <midden lon>, <breedte lat>, <bleedte lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Ga Naar</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Bladwijzer</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informatie</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Opzoeken</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Geen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zoomen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Sluiten</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMS adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMS adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Invoegtoepassingen</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Kaart - Geen</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Kaart - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Kaart - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Kaart - WMS-Tegels - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Kaart - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Kaart - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Licentievoorwaarden: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>De licentievoorwaarden werden niet aanvaard</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Server</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Tegelgrootte</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Min/Max zoomniveau</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Projectie</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Geheel getal</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Lengtegraad</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Breedtegraad</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Onjuiste projectie</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Het is niet mogelijk om de projectie in te stellen.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Geen coördinaten</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Veld voor breedte- of lengtegraad ontbreekt. Het is onmogelijk om dit bestand te importeren. Wenst u echt te stoppen?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Laad CSV importeerinstellingen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Merkaartor instellingen voor importeren (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Onjuist bestand</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 kon niet worden geopend</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>CSV-importeerinstellingen opslaan</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>zonder titel</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Alle bestanden (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 kon niet worden geopend om te schrijven.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialoog</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Invoer</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Specificaties</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>De eerste lijn bevat de veldnamen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Scheidingsteken</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Komma (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Puntkomma (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tab</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Ander:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Geen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Projectie (in PROJ4-formaat; leeg laten voor breedte-/lengtegraad)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Velden</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Veldenlijst:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Veldnaam (= tagsleutel):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Veldtype</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importeer</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importeer bereik</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Vanaf (0 vanaf start):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Tot (0 tot einde):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Laad instellingen...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Instellingen opslaan</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>Het is niet mogelijk om de projectie in te stellen: gelieve er één te specifiëren</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informatie</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n kenmerk</numerusform> <numerusform>%n kenmerken</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Maat</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Features</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Toon alles</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Verberg Alle</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Lagen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Alles</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Kaart</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Teken</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Sporen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Alles Alleen-lezen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Niets Alleen-lezen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Sluiten</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Zichtbaar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Alleen-lezen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Laag</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Hoog</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Ondoorzichtig</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Ondoorzichtigheid</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>Sluiten laag: er zijn nog gewijzigde objecten aanwezig</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation>Er zijn gewijzigde kenmerken op deze laag. Bent u zeker dat u deze wenst af te sluiten? (Dit kan niet meer ongedaan worden gemaakt)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>Sluiten laag: niet leeg</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Weet u zeker dat u deze laag wenst af te sluiten? (kan niet worden ongedaan gemaakt)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Formulier</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Licentievoorwaarden</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Ik heb de licentievoorwaarden gelezen en verklaar me er akkoord mee</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Vraag me dit niet nog een keer</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Plugins aan het laden...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Initialisatie wordt uitgevoerd...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Maak Tag '%1' voor %2 leeg</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Maak Gebied Interactie</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Maak Gebied %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Gebied: maak weg %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Gat toevoegen</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Wil je een (ander) gat in dit gebied maken?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Gebied: beëindig weg %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Gebied: Voeg punt %1 toe aan weg %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Gebied %1 sluiten</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Knopen toevoegen aan weg %1 met dubbele rijbanen</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Maak een dubbele-rijbaan Weg %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Maak node interactie</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Maak node in Weg: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Maak POI (referentiepunt) %1 aan</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>LINKS-KLIKKEN om te starten; SLEPEN om te schalen; SHIFT-SLEPEN om te draaien; LINKS-KLIKKEN om te beëindigen</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Maak Polygoon interactie</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Creëer polygoon %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Maak rotonde interactie</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Maak Rotonde %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Maak weg interactie</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Maak Node %1 in Weg %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Maak Weg: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Maak Node: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Voeg knoop %1 toe aan weg %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Weg %1 sluiten</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>LINKS-KLIK om te selecteren;RECHTS-KLIK om het hele scherm te verplaatsen;CTRL-LINKS-KLIK om de selectie te wisselen;SHIFT-LINKS-KLIK om elementen toe te voegen aan de selectie;LINKS-SLEPEN om een gebied te selecteren;CTRL-RECHTS-SLEPEN om te zoomen;DUBBELKLIK om een knooppunt aan te maken;DUBBELKLIK op een knooppunt om te starten met het aanmaken van een weg;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>KLIK om te selecteren/verplaatsen;CTRL-KLIK om selectie te wisselen;SHIFT-KLIK om aan selectie toe te voegen;SHIFT-SLEEP om een gebied te selecteren;CTRL-SLEEP om in en uit te zoomen;DUBBELKLIK om een knooppunt aan te maken;DUBBELKLIK op een knooppunt om te beginnen met het aanmaken van een weg;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Interactie wijzigen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>Kenmerken verwijderen</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Wenst u de de onderliggende knooppunten ook te verwijderen? Houd er rekening mee dat knooppunten buiten het afgehaalde gebied behouden zullen blijven.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>%1 wegen omkeren</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Knooppunten verplaatsen</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Verplaats knooppunt %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Knooppunten gevonden op dezelfde positie</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Wil je alle nodes op de doelpositie samenvoegen?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Nodes samengevoegd in %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Verwijder kenmerk %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>LINKS-KLIKKEN om te selecteren; LINKS-SLEPEN om te verplaatsen</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Verplaats node interactie</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>Muisaanwijzer eroverheen bewegen om te selecteren; LINKS-SLEPEN om te roteren</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>Kenmerk roteren</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>LINKS-KLIK in de eerste hoek -> LINKS-SLEEP om gebied aan te geven -> LINKS-KLIK om te zoomen</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>tegel %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Eigenschappen ...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Projectiebestand kan niet worden geladen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Laag</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Hoog</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Ondoorzichtig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Bestand</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Wijzigen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Zicht</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Toon</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Richtingpijlen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Lagen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Creëer</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Onderdeel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Knooppunt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Weg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relatie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Gereedschappen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Help</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Klembord niet geldig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Klembord bevat geen geldige data.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Niet-opgeslagen wijzigingen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>De huidige kaart bevat niet-opgeslagen wijzigingen die verloren zullen gaan als u aan een nieuwe begint. Wenst u het aanmaken van een nieuwe kaart te annuleren of wenst u verder te gaan en de gemaakte wijzigingen te verliezen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Punten op een weg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Spoor %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Copyright waarschuwing</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Je probeert een KML bestand te importeren. Let op dat: - Je geen KML bestand in OSM kan importeren indien gemaakt met Google Earth. Hoewel het voor de hand ligt om te denken dat de nodes die je met GE maakte van jou zijn, zijn ze dat niet! Ze zijn een afgeleid werk van GE en kunnen daarom, als zodanig, niet worden gebruikt in OSM. - Indien je het bestand downloadde van het internet, bestaat eveneens de kans dat er een copyright op zit. Je moet er absoluut zeker van zijn, dat het gebruik van dit bestand toegestaan is door de maker, of dat de data publiek domein is. Bij twijfel, raadpleeg de "legal", "talk" (beiden Engels) of "talk-nl" (Nederlands) Openstreetmap mailing lists. Weet je absoluut zeker dat deze KML legaal geïmporteerd kan worden in OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Geen geldig bestand</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 kon niet worden geopend</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Oude versie van Qt gedetecteerd</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Het lijkt erop dat u uw OpenStreetMapgebruikersnaam en -wachtwoord nog niet heeft opgegeven. Wenst u dit nu te doen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Fout tijdens downloaden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>De kaart kon niet worden afgehaald</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Fout bij het downloaden van OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>De OpenStreetBugs konden niet worden afgehaald</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Polygoon creëren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Specifieer het aantal kanten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Combineer Wegen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Splits wegen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Wegen splitsen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Vereenvoudig wegen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Forceer Feature Uploaden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Kan OpenStreetBugs niet bereiken.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Kan fout niet verwijderen. Bericht van de server: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Maak Kruising</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Voeg huisnummers toe</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>In hoeveel segmenten wenst u dit op te delen?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>Verdeel weg onder in %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>driehoekig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>rechthoekig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>vijfhoekig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>zeshoekig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>zevenhoekig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>achthoekig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Uitlijnen op %1 assen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>Het uitlijnen op de assen is mislukt. Gelieve scherpe hoeken te corrigeren en het opnieuw te proberen.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>Het uitlijnen op de assen is mislukt. Geen oplossing gevonden.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Knopen uitlijnen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>Verspreid knooppunten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Maak Node %1 los</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Lid toevoegen aan de relatie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Verwijder onderdeel uit relatie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Gebieden verbinden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Splits gebied</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Maak Relatie %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Kaartstijl opslaan</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartor kaartstijl (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Laad kaartstijl</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Ondersteunde formaten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>GPS uitwissel formaat (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMap formaat (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>OpenStreetMap wijzigingenformaat (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Noni GPSPlot formaat (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>NMEA GPS log formaat (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KML bestand (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>bestandsformaat met door komma's gescheiden waardes (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Afbeeldingen met positieinformatie (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESPRI Shapebestand (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartordocument (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Weg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Laad afbeelding</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Sla geografische coördinaten op in foto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Annuleren</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Merkaartor kaartstijl (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>MapCSS stylesheet (*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Merkaartordocument opslaan</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>zonder titel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Merkaartor documentbestanden (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Alle bestanden (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Merkaartor sjabloondocument opslaan</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 kon niet worden geopend om te schrijven.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Onjuist bestand</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 is geen geldig Merkaartordocument.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exporteer OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM Bestanden (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Exporteer osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>osmChange Files (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exporteer GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX Bestanden (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exporteer KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML Bestanden (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Bladwijzer toevoegen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Specifieer de naam van de bladwijzer</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Onjuiste bladwijzer naam</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Bladwijzer mag niet blanco zijn</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Waarschuwing: bladwijzernaam bestaat reeds</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Voeg een nieuwe toe, houd de huidige om te overschrijven of annuleer.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Bladwijzer verwijderen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Selecteer de te verwijderen bladwijzer</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Onjuiste projectie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Het is niet mogelijk om de projectie "%1" in te stellen.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPS fout</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Het is niet mogelijk om de GPS-poort te openen.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Open NMEA log bestand</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Tagsjablonen opslaan</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartor tag sjablonen (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Open Tag Sjablonen</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Help</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Maak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Weg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Bewerk</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Scherm</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Bladwijzers</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>&Projectie instellen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Toon &richtingspijlen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Bestand</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exporteren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Open re&cent</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Importeer recen&t</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>&Gereedschappen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stijl</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>K&nooppunt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Venster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Vastmaken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Fea&ture</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Lagen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&atie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>&Toon</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Afsluiten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Over</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Openen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Maak een nieuw document en importeer een bestand</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zoom &volledig uit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zoom &venster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zoomvenster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Uitzoomen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>&Inzoomen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Zoom in</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Gebogen lijn</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Ongedaan maken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Opnieuw</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Verplaats</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importeer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importeer een bestand in het huidige document</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Download</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Download kaartgegevens voor een nieuw gebied</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Link</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Koppeling maken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Selecteer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Op de server opslaan</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Wijzigingen doorsturen naar de server</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>V&erwijderen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Verwijder geselecteerde kenmerken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Wis</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Maak nieuwe weg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Maak nieuwe node</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Omdraaien</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Weg richting omkeren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Ga naar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Weg met dubbele rijbanen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Maak dubbele weg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Maak Rotonde</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nieuw</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Maak een nieuw document</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Opsplitsen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Splits weg in aparte (verbonden) wegen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Koppelen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Combineer verbonden wegen tot één enkele weg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Losmaken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Breken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Breek de verbonden wegen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&latie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Maak Relatie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Gebied</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Maak nieuw gebied</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Bewerk...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Opslaan...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Laden...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Bocht</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Instellingen...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Alle...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exporteer alle zichtbare lagen naar een bestand</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Vind...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Zoek</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Zoek en selecteer items</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Venster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exporteer de zichtbare onderdelen in het scherm naar een bestand</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Voeg toe...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Verwijder...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>Sa&menvoegen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Knooppunten samenvoegen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Voeg de geselecteerde nodes samen (eerst geselecteerde blijft bestaan)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Opslaan &als...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Opslaan</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Opslaan naar bestand</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Download meer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Download meer kaartgegevens voor het huidige gebied</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Download het huidige beeld naar de vorige download laag</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Eigenschappen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Verberg/Toon het Eigenschappen vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Verberg/Toon het Lagen vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informatie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Verberg/Toon het Informatie vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Uitlijnen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Knopen uitlijnen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Knopen uitlijnen. De eerste twee geselecteerde knopen bepalen op welke lijn.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>Uit&spreiden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Verspreid knooppunten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Knopen uitlijnen en evenredig verdelen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Verberg/Toon het Ongedaan maken vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Toon afgehaal&de gebieden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>Kopieer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Kopieer geselecteerde onderdelen en tags naar het klembord</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Kopieer de geselecteerde onderdelen tags naar het klembord; als het onderdeel een routepunt is, kopieer het coördinaat ook.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Plak Tags (&Overschrijf)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Plak (en overschrijf) de tags op het klembord op het geselecteerde onderdeel.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Plak Tags (&Samenvoegen)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Plak onderdelen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Plak onderdelen van het klembord (Voeg samen met bestaande tags)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Voeg de tags op het klembord samen met die van het geselecteerde onderdeel.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Geselecteerd...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Afdrukken...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>Afdrukvoorbeeld...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>Accentueer gewij&zigde eigenschappen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Download ontbrekende relaties</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>Selecteer omschakelaar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Selecteer eveneens de kinderobjecten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Schalen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>Opslaan als Sjabloondocument...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Plakken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Plak onderdelen van het klembord)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Bewaar de kenmerken in het klembord; Indien de kenmerk ID's al bestaan, overschrijf ze.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binair)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Forceer Uploaden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Stuur onderdeel naar de wijzigingen laag</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Stuur het geselecteerde onderdeel van een niet-uploaden laag (bijv. Route of Uittreksel) naar de wijzigingen laag, klaar om te uploaden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Toon/Verberg de knoppenbalk</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Verberg Alle</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Toon alles</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Afbeeldingslaag</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Toon k&nooppunten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Toon na&men</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Bewerken van &WMS servers</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Bewerken van &TMS Servers...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Maak onderverdeling</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>&Vereenvoudig</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Vereenvoudig weg(en)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Vereenvoudig weg door overbodige kinderknooppunten te verwijderen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>Gee&n</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>Gebieden verbinden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Verbind gebieden met raakvlakken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Verbind gebieden met raakvlakken.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>Gebied op&splitsen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Splits gebied tussen twee knooppunten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Terras</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation>Verdeel gebied in woongebiedterrassen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Werkbalkbewerker...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation>Ta&gsjablonen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Hoofdgereedschappenbalk</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Start</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Start GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>He&rhalen...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>GPS afspelen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Verberg/Toon het GPS-vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>S&top</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Stop GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centreer op GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Toon spoor&segmenten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Toon &schaal</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Toon &relaties</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Toon wegenachtergrond</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Opnemen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>GPS opnemen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pauzeer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pauzeer GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoafbeelding</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Verberg/Toon het GeoImage vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Snelkoppelingen beheren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>Sa&menvoegen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Lid toevoegen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Lid verwijderen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nooit</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>Vo&or eenrichtingsstraten</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Altijd</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Losmaken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Knoop van een weg ontkoppelen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Knoop van weg ontkoppelen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>Offline &werken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stijlen</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Verberg/Toon het Stijlen vak</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Herstel de te negeren dialogenstatus</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS Menu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Camera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Maak &Kruising</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Roteren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Voeg huis&nummers toe (Karlsruhe scheme)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Toon breedte-/lengtegraadrooster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Bewerken van &Projecties...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Toon foto's o&p de kaart</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Verwijderen forceren</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Sluiten</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relatie Gewijzigd %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Wis Kinderen.</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Verwijder onderdeel '%1' uit %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Onopgeloste conflicten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Los eerst bestaande conflicten op</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Het wordt sterk aangeraden om de wijzigingen van je document op te slaan na het uploaden. Wil je het nu opslaan?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Stel Tags op %1 in</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Open bestanden</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Meerdere snijpunten</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Die wegen hebben meerdere intersecties. Wenst u nog steeds een kruispunt voor elk ervan aan te maken (ongewenste kruispunten kunnen achteraf nog steeds worden verwijderd)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Plak Kenmerk(en)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Features</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Toon &virtuele nodes</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Maak %1 tags leeg op %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Sorteer de leden van relatie %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation>Muisaanwijzer eroverheen bewegen om te selecteren; LINKS-SLEPEN om te herschalen</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation>Interactie schalen</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation>Kenmerk schalen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>laatste: </i><b>%1</b&gt; door <b>%2</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>laatste: </i><b>%1</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>laag: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>grootte</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>leden</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Rechtsonder</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relatie</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Rol</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Lid</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>Gesloten weg</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Lengte</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Maat</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 knooppunten</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Weg</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Gebied</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>hoogte</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>snelheid</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>beschrijving</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>commentaar</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Knooppunt</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Zicht</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Projectie</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nieuwe Bladwijzer</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Voorkeuren uploaden mislukt</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Dubbele sleutel</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Meer dan 150 voorkeuren</translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nieuwe Server</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Klasse</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Naam</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Fout!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Naam zoek service computer niet gevonden.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Naam zoek service computer weigert verbinding.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Name finder service vereist authenticatie</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Onbekende fout.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Formulier</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Uitvoer bestandsnaam</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>PDF-bestanden (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>zonder titel</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Alle bestanden (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Afbeeldingen (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG-bestanden (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Export van raster/SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Opties</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Toon knooppunten</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Toon relaties</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Toon schaal</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>Toon breedte-/lengtegraad op het raster</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Exporteren naar PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Exporteren naar SVG...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>Exporteren naar raster...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Gebruiker:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation>Wachtwoord:</translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Altijd</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Kleur selecteren</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Kaartstijl bewerker</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Globaal</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Achtergrond</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Toevoegen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Verwijderen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Dupliceer</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Tagselectie</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>meter/pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Teken met kleur</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Proportionele dikte</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Vaste lijnbreedte</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Gestreept</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>uit</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Vul gebied</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Grens</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Teken stappen</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Teken icoon</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Label</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Lettertype</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Label tag</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Gebied</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Teken met achtergrondkleuren</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Label met achtergrond tag</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Deze geotag is niet correct</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Laad met geassocieerd knooppunt</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Negeer het</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Doe dit voor alle huidige foto's.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Uitvoer bestandsnaam</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG-bestanden (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>zonder titel</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Alle bestanden (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Afbeeldingen (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialoog</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Engels</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Tsjechisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Duits</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Frans</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Hongaars</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italiaans</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Pools</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Braziliaans-Portugees</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russisch</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Eigen stijlen map</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Tagsjabloon</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor tag sjabloon (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Kleur selecteren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Gereedschap bestaat reeds</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Een gereedschap met deze naam bestaat al. Selecteer een andere naam of druk op de <Uitvoeren> knop wanneer de bestaande dient te worden gewijzigd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Kan huidige gereedschap niet verwijderen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Kan huidige gereedschap "%1" niet verwijderen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Kan de naam van het huidige gereedschap niet wijzigen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Kan huidige gereedschap "%1"'s naam niet wijzigen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Selecteer uitvoerbaar gereedschap</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>Selecteer sjabloondocument</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Merkaartordocument (*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Folder voor logbestanden selecteren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Voorkeuren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Lokalisatie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>U moet het programma herstarten om deze wijzigingen van kracht te laten worden</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Gebruik taal</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Vertaal standaardtags</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visueel</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Algemeen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Zoom uit/in (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Ondoorzichtigheid laag/hoog</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Interactie met 1 muisknop</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Maak gebruik van uw eigen Qt-stijl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Kleuren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Achtergrond</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Stijl overschrijven</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Muisover</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixels</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Focus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relaties</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Kaartstijl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Huidige stijl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Stijlen uitschakelen voor GPX lagen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Sjabloon</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Ingebouwd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Eigen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Gegevens</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Wachtwoord:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Documenten</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>Laat het aanmaken van knopen/wegen toe in selectiemodus</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Opties</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation>OSM API (URL is, bijv. "http://www.openstreetmap.org/api/0.6"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation>Nominatim (Geo Search)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Document automatisch opslaan na het bewaren op de server</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Sporen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Sporen automatisch extraheren bij openen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Spoorlagen standaard alleen-lezen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Verbind geen GPX nodes die verder uit elkaar liggen dan (in km; 0 om uit te zetten)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>NMEA-log opslaan</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Stel systeemtijd in op GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Netwerk</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Proxy instellingen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Maak gebruik van een Proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Gebruiker:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Poort:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Computer:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Activeer JOSM-compatibele lokale server op port 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Achtergrondafbeelding</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Bewaren van tegels in tijdelijk geheugen (niet mogelijk voor Yahoo! omwille van van legale beperkingen)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Map voor tijdelijke opslag</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Opslagruimte voor tijdelijke bestanden (in Mb; 0 om uit te schakelen)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Kaart Adapter</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>Automatisch "source" tag toevoegen wanneer kenmerken worden aangemaakt met een kaart op de achtergrond</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Gereedschappen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Naam:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Pad:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Toepassen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Toevoegen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Verwijderen</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Accentueren</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPX pad</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Gebruik een eenvoudige GPX-spoorweergave</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>GPS-invoer</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Serieel</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Poort</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Gastheer</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Maak gebruik van virtuele knooppunten (hiervoor moet een nieuwe sessie worden gestart)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Nederlands</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugees</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovaaks</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Spaans</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Zweeds</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Oekraïens</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Relaties selecteerbaar als ze verborgen zijn</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Interface</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Instellingen projecties</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Projecties</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Projectielijst:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Naam:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>PROJ4 string</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Toepassen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Toevoegen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Verwijderen</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Document</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dialoog</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Voorgedefinieerd</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>Standaard (EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Eigenschappen</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 object(en) geselecteerd</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 object(en) geselecteerd</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Eigenschappen - Meerdere elementen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Eigenschappen - Weg</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Eigenschappen - Relatie</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Eigenschappen</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Fout bij het inlezen van sjabloonbestand</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centreer de kaart</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centreer && zoom de kaart</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Selecteer lid</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Eigenschappen - Knooppunt</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Annuleren</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Cascade opschonen</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Tag instellen '%1=%2' op %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Maak Tag '%1' voor %2 leeg</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Verplaats knooppunt %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Importeer osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importeer NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importeer NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Onjuist</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Meter</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/u</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Niet beschikbaar</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>GPS log fout</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Het is niet mogelijk om het volgende GPS-logbestand aan te maken: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Niet mogelijk om met %1 te verbinden: %2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>GPS log fout</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Het is niet mogelijk om het volgende GPS-logbestand aan te maken: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Lengtegraad</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Hoogte</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 meter</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satellieten</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Repareer Type</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Onjuist</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Snelheid</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/u</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Breedtegraad</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Geen geldig resultaten stream!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Gereedschapsbalken aanpassen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Acties</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Werkbalken</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Nieuw</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Verwijderen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Wijzig naam</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Toepassen</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Annuleren</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Naar boven</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Leden</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Verwijder geselecteerde leden</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>Voeg "source" tag toe</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Sleutel</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>Voeg "source" tag toe</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Geen satellieten</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Selectie</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Sleutel</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Waarde</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Naam</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Bevraging</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Sleutel</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Venster opnieuw instellen</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Sluiten</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Stijlen</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Stijlen</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Doorsturen naar Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Geef een omschrijving voor deze wijzigingsset</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Controleer zorgvuldig de veranderingen te verzenden naar OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Annuleren</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>TMS servers instelling</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMS Servers</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serverlijst:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Naam:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Server Url (adres):</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Verkrijg diensten</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Diensten :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//NL" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projectie</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Tegelgrootte:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Minimum zoomniveau:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>Max zoomniveau:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>"source" tag waarde:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>URL-adres van de licentievoorwaarden:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Lat/Lon (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Nulpunt is linksonderaan</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Toepassen</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Toevoegen</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Verwijderen</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: GetServices</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adres en pad mogen niet blanco zijn.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Download mislukt: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Sleutel</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Waarde</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Wijzig dit om toe te voegen...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Formulier</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>OF</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>EN</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>NIET</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>is</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>isoneof</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Niet gedefinieerd</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Niet gedefinieerd</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Terras</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Geen huisnummering</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Aantal huizen</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Huisnummers toevoegen (Karlsruhe schema)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Bereiken</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Bijvoorbeeld "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Patroon</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Alle nummers</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Oneven nummers</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Even getallen</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># weggedeeltes</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Totale afstand</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Totale duur</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extraheer - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Tekenlaag extraheren</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zoomen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Sluiten</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Breedtegraad</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Lengtegraad</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Sleutel</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>Voeg "source" tag toe</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialoog</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Wachtwoord</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Naam gebruiker</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Maak gebruik van proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Poort</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zoomen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Leegmaken</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: GetCapabilities</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adres en pad mogen niet blanco zijn.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Download mislukt: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Fout bij het lezen van eigenschappen. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>WMS-serversinstellingen</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMS Servers</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serverlijst:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Naam:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Server Url (adres):</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Lagen:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//NL" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projectie</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Zoomniveaus</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Afbeeldingsformaat:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Stijlen:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>"source" tag waarde:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>URL-adres van de licentievoorwaarden:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Toepassen</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Toevoegen</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Verwijderen</translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_pl.ts�����������������������������������������������������0000664�0000000�0000000�00001137422�11770671653�0021732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="pl_PL"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Informacje o Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Wersja Merkaartora</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">Wersja QT</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (zbudowane przez <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Wersja Boost</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Wersja PROJ4</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Wersja GDAL</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>Etykieta tekstowa</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Prawa autorskie Bart Vanhauwaert, Chris Browet i inni, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Ten program jest objęty licencją GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Lista zmian</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Opis</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Skrót klawiszowy</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importuj</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Eksportuj</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Domyślne</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Anuluj</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Edytor skrótów klawiszowych</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Otwórz schemat skrótów klawiszowych</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Schemat skrótów klawiszowych Merkaartora (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Nie można otworzyć pliku</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 nie mógł zostać otwarty.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Zapisz schemat skrótów klawiszowych</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>bez nazwy</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Wszystkie Pliki (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Nie można otworzyć pliku do zapisu</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 nie mógł zostać otwarty do zapisu.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Brak opisu</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Ruch prawostronny</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Odstęp między dwiema drogami</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Ruch prawostronny</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation><b>Brak</b> zmian</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation><b>Jeden</b> obiekt zmieniono</translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform>Ruszano <b>%n</b> element</numerusform> <numerusform>Ruszano <b>%n</b> elementy</numerusform> <numerusform>Ruszano <b>%n</b> elementów</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Cofnij</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Wyśrodkuj mapę</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Wyśrodkuj i powiększ mapę</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Cofnij</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Brak</span> zmiam</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Czyszczenie</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Powiększ</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>DODAJ drogę %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>DODAJ punkt trasy %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>DODAJ relację %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>AKTUALIZUJ punkt trasy %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>AKTUALIZUJ relację %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>AKTUALIZUJ drogę %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>USUŃ punkt trasy %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>USUŃ drogę %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>USUŃ relację %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Błąd podczas wysyłania</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Proszę sprawdzić nazwę użytkownika oraz hasło w ustawieniach</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Wystąpił błąd podczas wysyłania zapytania (%1). Serwer odpowiedział: %2</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>OTWÓRZ zestaw zmian</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>ZAMKNIJ zestaw zmian</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> Komunikat API "%1"</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Wysyłanie zmian...</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Błąd podczas wysyłania</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Proszę sprawdzić nazwę użytkownika oraz hasło w ustawieniach</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Wystąpił błąd podczas wysyłania zapytania (%1). Serwer odpowiedział: %2</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> Komunikat API "%1"</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Wystąpił błąd podczas wysyłania żądania (%1) „%2” Proszę ponownie pobrać żeby rozwiązać kolizję.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Sprawdzanie zmian…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>OTWÓRZ zestaw zmian</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>ZAMKNIJ zestaw zmian</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>DODAJ relację %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>DODAJ drogę %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>DODAJ punkt trasy %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>AKTUALIZUJ relację %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>AKTUALIZUJ drogę %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>AKTUALIZUJ punkt trasy %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>USUŃ punkt trasy %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>USUŃ drogę %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>USUŃ relację %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>bez nazwy</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Warstwa robocza</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Wysłana warstwa</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Obrazy tła</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Warstwa rysunku #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Warstwa filtrująca #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>Eksport OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Eksportowanie w formacie OSM…</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Dokument</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation>Odtwarzanie historii: utwórz węzeł %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation>Odtwarzanie historii: usuń węzeł %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation>Odtwarzanie historii: usuń węzeł %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation>Odtwarzanie historii: utwórz drogę %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation>Odtwarzanie historii: aktualizuj drogę %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation>Odtwarzanie historii: usuń drogę %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation>Odtwarzanie historii: utwórz powiązanie %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation>Odtwarzanie historii: aktualizuj powiązanie %1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation>Odtwarzanie historii: usuń powiązanie %1</translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Pobierz</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Położenie</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Zakładka</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Aktualny widok</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation>Łącze WWW (mapy OSM/Google)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation>Wybieranie Xapi</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Użyj poniższej mapy (zapewnianej przez projekt OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Pobieranie ścieżek GPS</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Rozwiązywanie wszystkich relacji</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Błąd podczas pobierania</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>błąd</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>Nie pobrano wystarczającej ilości danych</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation> <numerusform>Pobieranie z OSM (%n bajt)</numerusform> <numerusform>Pobieranie z OSM (%n bajty)</numerusform> <numerusform>Pobieranie z OSM (%n bajtów)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation> <numerusform>Pobieranie z OSM (%n kilobajt)</numerusform> <numerusform>Pobieranie z OSM (%n kilobajty)</numerusform> <numerusform>Pobieranie z OSM (%n kilobajtów)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Pobieranie z OSM (łączenie)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Nazwa użytkownika lub hasło niepoprawne.</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Nierozwiązane konflikty</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Proszę najpierw rozwiązać wszystkie istniejące kolizje</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Pobieranie punktów trasy %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Pobranu trasę - węzły %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation>MapDust</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Pobieranie punktów</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="64"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>Pobranie %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Pobieranie zależności %1 z %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Przetwarzanie zależności %1 z %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Przetwarzanie XML</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Kolizje w %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Znaleziono kolizje</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Oznacza to, że niektóre z cech, które zostały edytowane od ostatniego pobrania danych zostały zmodyfikowane na serwerze przez kogoś innego. Cechy te zostały zduplikowane jako "conflict_..." na warstwie "Konflikty...". Zanim będzie można wysłać zmiany na serwer, należy ręcznie scalić obie wersje i usunąć je z warstwy "Konflikty...".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Wykrytu puste drogi lub relacje</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Puste drogi lub relacje są prawdopodobnie błędami. Czy zaznaczyć je do usunięcia?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Usuwa pustą cechę %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Pobieranie %1,%2 (powiększenie %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Niespodziewany kod zwrotny http (%1) Komunikat serwera brzmi: %2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> Komunikat API "%1"</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Pobieranie...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Parsowanie...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Pobieranie brakujących członków...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Wysyłanie…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Przygotowywanie zmian</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Oczekiwanie na odpowiedź serwera</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Zamknij</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Powiększ</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="279"/> <source>Cannot delete</source> <translation>Nie można usunąć</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="279"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>Nie można wusunąć zaznaczenia, gdyż mieści się ono poza pobranym obszarem.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="282"/> <source>Cannot delete everything</source> <translation>Nie możn usunąć wszystkiego</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="283"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation>Nie można usunąć całego zaznaczenia, gdyż część mieści się poza pobranym obszarem. Czy usunąć co się da?</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="328"/> <source>Reverse way %1</source> <translation>Odwróć drogę %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="328"/> <source>Reverse %1 ways</source> <translation>Odwróć %1 dróg</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Eksportowanie</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Co wyeksportować?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Wszystkie widoczne warstwy</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Aktualny widok</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Zaznaczone</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Cechy</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Wyśrodkuj mapę</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Wyśrodkuj i powiększ mapę</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Pobierz brakujących członków</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Usuń</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relacje</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Drogi</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>Miejsca</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Wszystkie</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Dodaj do zaznaczenia</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Cechy</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Tylko cechy znajdujące się w widoku</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Szukaj...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Przeładować</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Okno dialogowe</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Nazwa</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filtr</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Zamknij</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Ustawienia filtrów</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filtry</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Spis filtrów:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nazwa:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filtr</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Zastosuj</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Usuń</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geolokalizowane obrazy</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation>c</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Usuń obrazy</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Skopiuj nazwę pliku do schowka</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Wczytaj geolokalizowane obrazy</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Warstwa, na której powinny się znajdować obrazy:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>Warstwa tylko do odczytu</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation>Używana warstwa nie może być zapisana. Czy zmienić ją na zapisywalną? Jeśli nie, to nie można załadować należących do niej obrazów.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Wczytywanie obrazów...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Przerwij wczytywanie</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Podaj przesunięcie</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Ustaw obrazy bliżej:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>końca ścieżki</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>początku ścieżki</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'sekund'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minut' i ss 'sekund'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh godzin, mm minut i ss sekund</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Błędny obraz?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Obraz %1 został wykonany %2 zanim następny punkt trasy został zapisany. Czy na pewno go wykorzystać?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Obraz %1 został wykonany %2 po zapisaniu ostatniego punktu trasy. Czy na pewno go wykorzystać?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Nie ma takiego pliku</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Przekroczono limit czasu połączenia</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Nie można wczytać informacji o obrazie z serwera Walking Papers.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Proszę podać adres URL z serwisu Walking Papers</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>Adres URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Wyśrodkuj mapę</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Zapisz geotagowany obraz…</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Warstwa obrazów:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Nie można znaleźć obrazu %1.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Błąd podczas otwierania %2: %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Brak punktów trasy</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Nie znaleziono żadnego punktu trasy dla obrazu %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>Obrazy JPEG (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Błąd podczas wczytywanie danych EXIF z %1.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation>Podaj nazwę pliku wyjściowego</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Błąd podczas otwierania "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Wybierz następny obraz</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PageDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Wybierz poprzedni obraz</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PageUp</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Błędny adres OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Podany adres jest nieprawidłowy!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Błędny format współrzędnych</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Współrzędne muszą być w formacie: <lewa wys.>, <dolna szer.>, <prawa wys.>, <górna szer.></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Współrzędne muszą być w formacie: <środkowa szerokość>, <środkowa wysokość>, <zasięg szerokości>, <zasięg wysokości></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Idź do</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Zakładka</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation>Łącze WWW (mapy OSM/Google)</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation>Współrzędne</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation>Pokazuj projekcje</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>min wys., min szer., max wys., max szer.</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>latCent, lonCent, latZas, lonZas</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informacje</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>URL OSM XAPI</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Wyszukaj</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Brak</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Adapter kształtu</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Powiększ</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation>Ustaw rzut widoku dla warstwy</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation>Przywróć dopasowanie ułożenia</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Zamknij</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>Adapter WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>Adapter TMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Wtyki</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Brak mapy</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mapa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Mapa - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Mapa - WMS-Kafelki - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mapa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mapa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Warunki licencji</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>Nie zaakceptowano warunków licencyjnych</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation>Nie potwierdziłeś przyjęcia warunków licencji. Nie będziesz więc mógł używać tego źródła jako warstwy mapy. Czy jesteś pewny że tego chcesz?</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Serwer</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Rozmiar kafla</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Min/Maks powiększenia</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Rzut</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Ciąg znaków</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Liczba całkowita</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Liczba zmiennoprzecinkowa</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Wysokość geograficzna</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Szerokość geograficzna</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Nieprawidłowe odwzorowanie</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Nie można ustawić odwzorowania</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Brak współrzędnych</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Brakuje pól szerokość lub długość geograficzna. Importowanie nie będzie możliwe. Zakończyć?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Wczytaj ustawienia importu plików CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Ustawienia importu programu Merkaartor (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Niepoprawny plik</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 nie mógł zostać otwarty.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 nie jest plikiem ustawień importu CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>Zapisz ustawienia importu plików CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>bez nazwy</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Wszystkie Pliki (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Nie można otworzyć ustawień zapisu importowania</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 nie mógł zostać otwarty do zapisu.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Okno dialogowe</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Wejście</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>Podgląd OSM</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Specyfikacja</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Pierwszy wiersz zawiera nagłówek</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Separator</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Przecinek (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Średnik (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tabulator</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Inne:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation>Cudzysłów ciągu</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Brak</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation>Prosty cytat (')</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>Cudzysłów (")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Odwzorowanie (w formacie PROJ4; pozostawić puste dla szerokości/wysokości)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Pola</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Spis pól:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Nazwa pola (= nazwa etykiety):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Rodzaj pola:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importuj</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importuj zakres</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Od (0 od początku):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Do (0 = koniec)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Wczytaj ustawienia…</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Zapisz ustawienia…</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation>Potwierdzić rzut</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>Nie można ustawić rzutu; proszę podać jakiś</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informacje</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n cech</numerusform> <numerusform>%n cechy</numerusform> <numerusform>%n cech</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Rozmiar</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Cechy</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Warstwy</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Wszystkie</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Ścieżki</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Pokaż wszystkie</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Ukryj wszystkie</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Tylko do odczytu - wszystko</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Tylko do odczytu - nic</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Zamknij</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Mapa</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Rysuj</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation>Przywróć domyślne warstwy</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Widoczna</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Niska</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Wysoka</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Nieprzeźroczysta</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Nieprzeźroczystość</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>Zamykanie warsty: zmienione objekt są w niej</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation>Ruszano cechy na tej wraste. Czy napewno ją zamknąć? (Nie ma możliwości cofnięcia)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>Zamykanie warsty: nie jest pusta</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Czy jesteś pewsien że chcesz zamknąć tą warstwę? (Tej operacji nie można cofnąć)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Tylko do odczytu</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Okno formy</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Warunki dostępności</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Przeczytałem, i zgadzam się z warunkami licencji</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Nie pytaj o to więcej</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Ładowanie wtyczek...</translation> </message> <message> <location filename="../src/Main.cpp" line="248"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Zaczynanie...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Wyczyść znacznik %1 na %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Utwórz obszar %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Obszar: Stwórz drogę %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Obszar: Zakończ drogę %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Obszar: Dodaj węzeł %1 do drogi %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Dodaj węzły do dwujezdniowej drogi %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Utwórz dwujezdiową drogę %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Utwórz węzeł na drodze %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Utwórz miejsce %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Utwórz rondo %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Utwórz węzeł %1 na drodze %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Utwórz drogę: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Utwórz węzeł: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Dodaj węzeł %1 do drogi %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Zamknąć drogę %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove feature %1</source> <translation>Usuń cechę %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="293"/> <source>Remove features</source> <translation>Usuń cechy</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="304"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Czy usunąć również pochodne węzły? Węzły OSM poza pobranym obszarem zostaną zachowane.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="329"/> <source>Reverse %1 ways</source> <translation>Odwróć %1 dróg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>kafel %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Właściwości...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Plik</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Edycja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Widok</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Pokaż</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Strzałki kierunkowe</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Warstwy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Utwórz</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Cecha</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Węzeł</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Droga</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relacja</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Narzędzia</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Okna</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Pomoc</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Zawartośc schowka jest niepoprawna</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>Ustawienie Wycinania</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Schowek nie zawiera poprawnych danych</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4467"/> <source>Unsaved changes</source> <translation>Niezapisane zmiany</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Aktualna mapa zawiera niezapisane zmiany, które zostaną utracone podczas tworzenia nowej. Anulować tworzenie nowej mapy czy porzucić poprzednie zmiany?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation>Niezapisany zmiany w stylu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation>Dokonano zmian w bierzącym stylu. Czy zachować zmiany?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Punkty pośrednie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Ścieżka %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Brak poprawnego pliku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3350"/> <source>%1 could not be opened.</source> <translation>%1 nie mógł zostać otwarty.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation>Przychodzące zapytanie zdalnego sterowania</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation>Nieznany url działania: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Wykryto nieaktualną wersję Qt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Używasz Qt w wersji %1, która zawiera różne znane błędy powodujące zwrot kodów 401 podczas wysyłania danych na serwery OpenStreetMap. Czy chcesz kontynować (nie zalecane)? Więcej informacji znajdziesz na stronie http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Wysyłanie do OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Nie podano nazwy użytkownika i hasła do OpenStreetMap. Czy chcesz to zrobić teraz?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Błąd podczas pobierania</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Nie można pobrać mapy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Błąd w trakcie pobieranie z serwera OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>Nie można pobrać danych zserwisu OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation>Błąd pobierania MapDust</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation>Nie można borać błędów z MapDust</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Połącz drogi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Podziel drogi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Rozdziel drogi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Upraszcza drogę</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Przekroczono limit czasu połączenia</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Nie można połączyć się z serwerem OpenStreetBugs.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Błąd w czasie zamykania błędu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Nie można usunąć błędu. Komunikat serwera: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Dodaje adresy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>Ilość segmentów na które podzielić</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation>Podaj islość odcinków</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>Podziel drogę na %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>Wyrównywanie osi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation>Podaj liczbę osi do których mają zostać wyrównane kąty (wsz. 4 dla prostokątu)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>trójkątny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>prostokątny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>pentagonalny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>heksagonalny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>heptagonalny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>oktagonalny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Wyrównać do %1 osi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>Wyrównaj do %1 regularnych osi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation>Niemożna wyrównać osi</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>Wyrównywanie do osi nie powiodło się. Proszę usunąć ostre kąty i spróbować ponownie.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>Wyrównywanie do osi nie powiodło się i nie znalazło rozwiązania.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation>Zacznij wyciągać</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>Rozstaw węzły</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation>Dodaj do wieloboku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Połącz obszary</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Podziel obszar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>Podziel zakrez na %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Utwórz relację %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Zapisz styl mapy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Styl map Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Otwórz styl mapy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Obsługiwane formaty</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Styl mapty Merkaartoa (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>Arkusz stylu MapCSS (*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation>Zostanie podjęta próba odtworzenia historii. Nie ma gwarancji, i nie da się tego cofnąć. Czy jesteś pewny że tego chcesz? </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Zapisz dokument Merkaartora</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3396"/> <location filename="../src/MainWindow.cpp" line="3409"/> <location filename="../src/MainWindow.cpp" line="3438"/> <location filename="../src/MainWindow.cpp" line="3477"/> <location filename="../src/MainWindow.cpp" line="3536"/> <location filename="../src/MainWindow.cpp" line="4278"/> <source>untitled</source> <translation>bez nazwy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Pliki dokumenty Merkaartora (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3409"/> <location filename="../src/MainWindow.cpp" line="3438"/> <location filename="../src/MainWindow.cpp" line="3477"/> <location filename="../src/MainWindow.cpp" line="3536"/> <location filename="../src/MainWindow.cpp" line="4278"/> <source>All Files (*)</source> <translation>Wszystkie Pliki (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Format GPX (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Format OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>Plik zmian OpenStreetMap (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Format Noni GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Log NMEA (*nmea *nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>Plik KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Wartości oddzielone przecinkami (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Geolokalizowane obrazy (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>Plik kszałtów ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Język zaznaczania geograficznego (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation>Postać zero-jedynkowa Protobuf (*.pbf) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Dokument Merkaartora (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Droga</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Wczytaj obraz</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Dodaj pozycję węzła do obrazu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Oznacz obraz bieżącą pozycją</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Anuluj</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Niepoprawny plik</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 nie jest poprawnym dokumentem Merkaartora.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Eksportuj w formacie OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Pliki OpenStreetMap (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Eksportuj w formacie osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>pliki zmian (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Eksportuj GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Pliki GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exportuj KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Plik KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Dodaj zakładkę</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Podaj nazwę zakładki.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Niepoprawna nazwa zakładki</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Nazwa zakładki nie może być pusta.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Uwaga! Zakładka o tej samej nazwie już istnieje.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Wprowadź nową nazwę, zostaw obecną by nadpisać zakładkę lub anuluj.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Usuń zakładkę</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Wybierz zakładkę do usunięcia.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Wyrównaj węzły</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Scal węzły w %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>GPS error</source> <translation>Błąd GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4153"/> <source>Unable to open GPS port.</source> <translation>Nie można otworzyć portu GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4162"/> <source>Open NMEA log file</source> <translation>Otwórz log NMEA</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>P&omoc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Utwórz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Ulice</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Edycja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Widok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Zakładki</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Ustaw &odwzorowanie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Plik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>&Narzędzia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Styl</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Węzły</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Okna</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Panele</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>&Cecha</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Warstwy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>&Pokaż</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Zamknij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>Informacje &o</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Otwórz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Utwórz nowy dokument i zaczerpnij plik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Pokaż &wszystko</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Powiększ &okno</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Powiększa okno</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Zmniejsz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>&Powiększ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Powiększ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Zakrzywiony łącznik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Cofnij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Przywróć</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importuj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importuje plik do obecnego dokumentu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Łącznik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Utwórz łącznik</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Usuń</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>Odw&róć</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Dwujezdniową drogę</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nowy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Tworzenie nowego dokumentu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Podziel</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>P&ołącz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>Ro&zdziel</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lacja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Obszar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Zapisz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Rozciągnij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Rozstaw węzły</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Wyrówać i rozstawić wybrane węzły równomiernie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Wyświetlanie wę&złów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Wyświetlanie &nazw</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Edytor serwerów &WMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Edytor serwerów &TMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation>&Wielobok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation>Prostokątny &budynek</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation>Dodać nową warstwę &obrazu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Dodaj &adres (schemat Karlsruhe)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Rozdzielić</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Podziel segment równomiernie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>Podziel na kawałki wybrany odcinek drogi (drogę i dwa pobliskie węzły) na odcinki równej długości.)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Wyświ&etlanie siatki współrzędnych</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>&Zablokuj powiększenie do wielkości kafelków</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Edytor &odzworowań…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Wyświetlanie &zdjęć na mapie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>ZmianaOSM (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Wymuś usunięcie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Zamknij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>Up&rość</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Upraszcza drogę</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Upraszcze drogi poprzez usunięcie zbędnych węzłów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>Edytor &filtrów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>Ż&aden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>&Połącz obszary</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Połącz stykające się obszary</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Połącz stykające się obszary.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Podziel obszar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Podziel obszar międzt dwoma węzłami</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation>Podziel wybrany obszar między dwoma wybranymi węzłami na dwa oddzielne obszary.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Drabina</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation>Podziel zakres na mieszkania</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>Podziel wybrany obszar na drabinkę mieszkań.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Edytor paska narzędzi...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation>Wyrówanie &osi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>Wyrównaj kąty do regularnych osi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>Wyrównaj kąty do pewne ilości równomiernie rozstawionych osi.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Drukuj...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>Podgląd druku...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>Podświetlaj rzecz&y ruszane</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>&Wytnij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>Wyczerpnij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>Przełącz wybranie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Włącz pochodne do wyboru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Skala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>Zachowaj jako Szablon Dokumentu...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Zakrzywiona droga</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Konfiguracja...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Wszystko...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Eksportuje wszystkie widoczne warstwy do pliku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Wyszukaj...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Wyszukaj i zaznacz elementy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Widok...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Eksportuje aktualny widok do pliku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>Dod&aj...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Usuń...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Scal</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Scala zaznaczone węzły (pozostanie ten zaznaczony jako pierwszy)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Zapisz j&ako...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Pobierz więcej</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Pobiera zawartość aktualnego widoku do poprzednio pobranej warstwy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Wyświetla/ukrywa panel właściwości</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Wyświetla/ukrywa panel warstw</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Wyświetla/ukrywa panel informacji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>Wyrówn&aj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Wyrównuje zaznaczone węzły. Pierwsze dwa wskazują linię wyrównania.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Wyświetla/ukrywa panel operacji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Wyświetlanie &pobranych obszarów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Kopiuje tagi wybranej cechy do schowka; jeśli cecha jest punktem trasy kopiuje również jej współrzędne.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Wkleja (nadpisując) etykiety w schowku do wybranego elementu.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Scal etykiety w schowku z etykietami aktualnie wybranej cechy.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Zaznaczone...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>wkleje cechy ze schowka. Jeśli cechy o takich samych identyfikatorach znajdują się już w dokumencie zostaną nadpisane.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binarny)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Przesyła wybraną cechę z warstwy, która nie może zostać wysłana do OSM do warstwy roboczej</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Przełącz pasek zadań</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Wyświetla/ukrywa pasek zadań</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Ukryj wszystkie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Pokaż wszystkie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Warstwa z &obrazami</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Uruchom</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Odtwórz...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Wyświetla/ukrywa panel GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation>Dodać warstwę OpenStreet&Bugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation>Dodać nową warstwę &rysunku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation>Dodać nową warstwę &filtrów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation>Utwórz wielobok</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation>Dodaj do w&ieloboku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation>GDAL</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation>Wykrywać dróg Bing</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation>Odtwó&rz historię</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation>Dodać warstwę Map&Dust</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation>Siatka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation>Ctrl+Alt+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation>Wybierz nadrzędne</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Pobierz brakujących członków</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>Za&trzymaj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Wyśrodkuj na GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Wyświetlanie &segmentów tras</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Wyświetlanie &skali</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Wyświetlanie &relacji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Wyświetlanie tła dróg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Wyświetlanie granic dróg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Pokazuj detale</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Nagraj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Wstrzymaj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Wyświetla/ukrywa panel obrazów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Zmodyfikuj relację %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4444"/> <source>Unresolved conflicts</source> <translation>Nierozwiązane konflikty</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4444"/> <source>Please resolve existing conflicts first</source> <translation>Proszę najpierw rozwiązać wszystkie istniejące kolizje</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4468"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Zaleca się zapisanie zmian w dokumencie po ich wysłaniu. Czy zrobić to teraz?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Ustaw znaczniki na %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Ważne ostrzeżenie o prawach autorskich</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Podjęto próbę importu pliku KML. Należy być świadomym tego, że: - nie wolno importować do OpenStreetMap plików KML utworzonych w Google Earth. Mogłoby się wydawać, iż węzły utworzone w Google Earth są wyłącznym tworem użytkownika, jednakże w rzeczywistością stanowią tzw. utwór zależny od Google Earth i jako taki nie można ich wykorzystać w OSM. - jeśli pobrano plik z Internetu, istnieje możliwość, że są objęte prawem autorskim. Proszę się w pełni upewnić, że użycie tych danych w projekcie OpenStreetMap jest dozwolone przez autora albo dane te w domenie publicznej. W razie wszelkich wątpliwości, proszę skontaktować się z listą dyskusyjną "legal" lub "talk". Na pewno można legalnie zaimportować ten plik do OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Nie można otworzyć pliku do zapisu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 nie mógł zostać otwarty do zapisu.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Pobierz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Wyślij</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Przejdź do...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Tworzy drogę z dwiema jezdniami</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Tworzenie ronda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Tworzenie relacji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Znajdź</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Scala węzły</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Wyślij cechę na warstwę roboczą</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Uruchom GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Powtórz GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Zatrzymaj GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Nagrywanie sygnału z GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Wstrzymaj GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Menedżer World OSB...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>Edytor &skrótów klawiszowych...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4278"/> <source>Save Tag Templates</source> <translation>Zapisz szablon etykiet</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4278"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Szablony etykiet Merkaartora (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4297"/> <location filename="../src/MainWindow.cpp" line="4311"/> <source>Open Tag Templates</source> <translation>Otwórz szablon etykiet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Edycja...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Zapisz...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Otwórz...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Scal...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Dodaj członka do relacji</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Usuń członka z relacji</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Wyświetlanie strz&ałek kierunkowych</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&acje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>Dod&aj członka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Usuń członka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nigdy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>dla &jednokierunkowych dróg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>Z&awsze</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Niska</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Wysoka</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Nieprzeźroczysta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Nieprzeźroczystośc obszarów</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Eksportuj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Os&tatnio otwierane</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Ostatnio i&mportowane</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Przesuń</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Zaznacz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopiuj</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Wklej etykiety (&nadpisanie)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Wklej etykiety (&scal)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Odłącz węzeł %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>O&dłącz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Odłącz węzeł od drogi</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Znaleziono węzły o tych samych współrzędnych.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Czy na pewno scalić wszystkie węzły w miejscu docelowym?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>Pra&cuj w trybie offline</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Pobierz dane dla nowego obszary</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Wyślij zmiany na serwer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Usuń wybrane cechy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Utwórz nową drogę</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Utwórz nowy węzeł</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Odwróć kierunek drogi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Podziel drogę w osobne, połączone ze sobą drogi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Złącz połączone drogi w jedną</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Rozłącz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Rozłęcza połączone ze sobą drogi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Utwórz nowy obszar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Zapisz do pliku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Pobierz więcej danych dla obecnego obszaru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Wyrównaj węzły</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Skopiuje zaznaczoną cechę i znaczniki do schowka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Wkelj etykiety</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Wkleja etykiety ze schowka (scala z obecnymi etykietami)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Wklej</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Wkleja cechy ze schowka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Oddziel węzeł od drogi</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Usuń członka %1 z %2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Właściwości</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informacje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eobraz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Style</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Wyświetla/ukrywa panel styli</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3850"/> <source>%1 (int)</source> <translation>%1 (wb.)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Dodaj dziurę.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Utworzyć nową dziurę w tym obszarze?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Nie można wczytać pliku z odzworowaniem</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>Plik "Projections.xml" nie mógł zostać otwarty. Przerywanie...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Otwórz pliki</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Tworzy skrzyżowanie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4011"/> <location filename="../src/MainWindow.cpp" line="4020"/> <source>Invalid projection</source> <translation>Nieprawidłowe odwzorowanie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4011"/> <location filename="../src/MainWindow.cpp" line="4020"/> <source>Unable to set projection "%1".</source> <translation>Nie można ustawić odzworowania "%1".</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Zresetuj stan przełączalnych okien dialogowych</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Menu GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Aparat cyfrowy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Utwórz &skrzyżowanie</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="303"/> <source>Delete Children.</source> <translation>Usuń potomków.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Ustaw etykiety na wielu cechach</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Utwórz interakcję powierzchni</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Tworzenie węzła</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>Kliknij, aby rozpocząć; przeciągnij, aby przeskalować; przeciągnij z wciśniętym klawiszem SHIFT, aby obrócić; kliknij, aby zakończyć</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Tworzenie wielokątu</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Utwórz wielokąt %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Tworzenie ronda</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Tworzenie drogi</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Działania</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Przesuń węzły</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Przesuń węzeł %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>Kliknij aby zaznaczyć; przeciągnij, aby przesunąć</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Interakcja przesuwania węzła</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>ZAWIS zaznacza;LEWY-CIĄGNIE obraca</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Interakcja obrotu</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>Obróć cechę</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>Kliknij, aby wyznaczyć pierwszy róg -> Przeciągnij, aby zaznaczyć obszar -> Kliknij, aby powiększyć</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Interakcja powiększenia</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Utwórz wielokąt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Podaj ilość boków</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Wymusza wysłanie cechy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Wymyś wysłanie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Obróć</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Rozbudowane skrzyżowanie.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Te drogi mają wiele przecięć. Utworzyć skrzyżowanie dla każdego przecięcia? (Niechciane skrzyżowania można zawsze później usunąć ręcznie).</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Wklej cechę/cechy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Cechy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Wyświetlaj &wirtualne węzły</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Wyczyść %1 etykiet na %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Zmień kolejność członków relacji %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>edytowane: </i><b>%1</b> przez <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>edytowane: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>warstwa: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>rozmiar</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>członkowie</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Górny lewy róg</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Dolny prawy róg</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relacja</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Funckja</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Członek</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Długość</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Rozmiar</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 wezłów</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Droga</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Obszar</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>współrzędne</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>wzniesienie</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>prędkość</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Punkt trasy</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>opis</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>komentarz</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Węzeł</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation>%1 m/plamkę</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation>Wyrównaj: %1m @ %2</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation>%1ms</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Widok</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Ramka</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Rzut</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nowy serwer</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Wysyłanie ustawień zakończone niepowodzeniem</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Duplikat klucza</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Więcej niż 150 ustawień</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nowa zakładka</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Etykiety</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Zaznaczone elementy</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Rodzaj</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Nazwa</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Nieznane pole</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Błąd!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Nie znaleziono serwera serwisu wyszukiwania nazw.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Serwis wyszukiwania nazw odmówił połączenia.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Serwis wyszukiwania nazw wymaga logowania.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Nieznany błąd.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Okno formy</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Plik wynikowy</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>Pliki PDF (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>bez nazwy</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Wszystkie Pliki (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Pliki graficzne (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>Pliki SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Eskport w formacie SVG/rastrowym</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Ustawienia</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>min szer./wys.</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>max szer./wys.</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Pokazuj węzły</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Pokazuj relacje</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Wyświetlanie skali</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>Pokazuj siatkę pozycyjną</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation>Pokazuj niestylizowane cechy</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Eksportuj do PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Eksportuj do SVG...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>Eksportuj do Raster...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>Adres URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Użytkownik:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation>Pwd</translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Zawsze</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Wybór koloru</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Edytor stylu mapy</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Usuń</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Powiel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Wybrana etykieta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>metrów/piksel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Widoczne do</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Widoczne od skali</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Tło</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filtr</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Rysuj na kolorowo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Proporcjonalna grubość</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation>Węzły</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Stała grubość</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Kreskowanie</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>wyłączone</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Wypełnienie</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation>Wypełnij ikonką Touchup</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Granica</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation>Wnętrze</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation>Zewnętrzne</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Szczegóły</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Rysuj schodki</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Rysowanie ikony</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation>Rysuj oznaczenia kierunku ruchu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Etykieta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Czcionka</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Treść etykiety</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Rysowanie z tłem</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Etykieta z tłem</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Obszar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Główne</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Brak poprawnego geotagu</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>Etykieta tekstowa</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation>Ta fotografia nie zawiera danych kartograficznych EXIF. Co robić?</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>Spróbuj dopasować do węzła trasy</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Wczytaj bez przypisanego węzła</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Pobierz informacje z kodu kreskowego (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignoruj</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Wykonaj dla wszystkich bierzących zdjęć.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Plik wynikowy</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>bez nazwy</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Wszystkie Pliki (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Pliki graficzne (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Okno dialogowe</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>Pliki SVG (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Wybór koloru</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Narzędzie już istnieje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Narzędzie o tej nazwie już istnieje. Proszę wybrać inną nazwę lub kliknąć przycisk <Zastosuj> aby zmodyfikować już istniejące.</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Nie można usunąć tego narzędzia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Nie można usunąc narzędzia "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Nie można zmodyfikować nazwy narzędzia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Nie można zmodyfikować nazwy narzędzia "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Wybór pliku wykonywalnego</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Wybór katalogu logów</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Konfiguracja</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Język</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Konieczne jest ponowne uruchomienie programu aby zastosować zmiany</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Język</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Tłumaczenie standardowych etykiet</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Wygląd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Ogólne</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Powiększenie (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Nieprzeźroczystość (niska/wysoka)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Kolory</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Tło</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Podświetlenie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Zaznaczenie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relacje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Styl mapy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Wbudowany</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Użytkownika</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Wyłączenie styli dla warstw ze ścieżkami</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Dane</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Hasło:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokumenty</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Automatyczne zapisywanie dokumentów po wysłaniu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Ścieżki</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Automatycznie pobieranie ścieżek przy otwarciu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Zapisywanie logu NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Ustawianie czasu systemowego według GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Sieć</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Ustawienia serwera proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Używanie serwera proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Adres:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Port:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>Adres URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Uruchom lokalny serwer zgodny z JOSM na porcie 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Obraz tła</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Katalog pamięci podręcznej</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Rozmiar pamięci podręcznej (w Mb; 0 by wyłączyć)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adapter map</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Narzędzia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Nazwa:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Ścieżka:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Zastosuj</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Usuń</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>pikseli</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Szablon etykiet</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Szablon etykiet Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Szablon</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Obsługa pojedynczym klawiszem myszy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Buforowanie kafli (nieaktywne dla Yahoo! z powodów prawnych)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Nadpisanie stylu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Tryb oddzielnego przesuwania</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Użyj wbudowanego stylu Qt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Warstwy ścieżek domyślnie są tylko do odczytu</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Nie łącz ze sobą wezłów GPX oddalonych o więcej niż... (w km; 0 aby wyłączyć)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Katalog z własnymi stylami</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Aktualny styl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Angielski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation>Horwacki</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Czeski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Niemiecki</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francuski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Węgierski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Włoski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Japoński</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Portugalski (brazylijski)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Rosyjski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Nazwa użytkownika:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Podświetlenie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Ścieżka GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Proste wyświetlanie ścieżek GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Wejście GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Port szeregowy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Komputer</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Korzystanie z wirtualnych węzłów (wymagane ponowne uruchomienie)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Holenderski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>portugalski</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Słowacki</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Hiszpański</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Szwedzki</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>ukraiński</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Zaznaczanie ukrytych relacji</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Interfejs</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Ustawienia rzutów</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Rzuty</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Lista rzutów:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nazwa:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>Parametry PROJ4</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Zastosuj</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Usuń</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation>Proszę podać rzut</translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Dokument</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Okno dialogowe</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Zadane</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>Standard (EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>Dopasowane PROJ4(+proj=...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation>WKT</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation>Błąd w ciągu WKT</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation>Nie można wyeksportować w postaci PROJ4</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation>Blędny ciąg WKT</translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Właściwości</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Właściwości</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Błąd w trakcie wczytywania szablonu</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Wyśrodkuj mapę</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Wyśrodkuj i powiększ mapę</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 zaznaczonych element/ów</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 zaznaczonych element/ów</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Zaznaczone elementy</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Właściwości - wiele elementów</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Właściwości - Relacja</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Właściwości - Droga</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Wybierz członka</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Właściwości - węzeł</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>Eksportuj GPX...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Anuluj</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation>Czerpanie...</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation>Zaczerpnięto: %1</translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Kaskodawe wyczyszczenie</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Ustaw znacznik %1=%2 na %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Wyczyść znacznik %1 na %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Przesuń węzeł %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="60"/> <source>Import osmChange</source> <translation>Importuj plik osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importuj NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importuj NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation>Wykrywanie dróg Bing</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation>Nie ma dostępu do wyjścia.</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation>Brak poprawnych danych.</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation>Nie można rozpoznać wyników.</translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Niepoprawny</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation>Nieulstalony</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation>Brak czasu</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>metrów</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation>Ustalony</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Niedostępne</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Błąd logowania GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Nie można utworzyć logu GPS: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Nie można połączyć z %1:%2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Błąd logowania GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Nie można utworzyć logu GPS: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>Etykieta tekstowa</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99° 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Wysokość geograficzna</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Wysokość n.p.m.</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metrów</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># satelit</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Rodzaj ustalenia</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Niepoprawny</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Prędkość</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Szerokość geograficzna</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Niepoprawny strumień!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< S E P A R A T O R ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Dostosowanie paska narzędzi</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Operacje</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Paski narzędzi</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Nowy</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Usuń</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Zmień nazwę</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Przywróć wszystko</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Zastosuj</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Anuluj</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Góra</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>W dół</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation>Bierzące działania paska narzędzi</translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Dostosowany pasek narzędzi</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Członkowie</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Usuń wybranych członków/a</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Etykiety</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>Dodać etykiety "source"</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation>Usuń wybrane etykiety/a</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Etykiety</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>Dodać etykiety "source"</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation>Usuń wybrane etykiety/a</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Brak satelit</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Zaznaczenie</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Klucz</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Wartość</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Nazwa</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Zapytanie</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation>Maksymalna ilość wyników (0 - nieograniczona)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Zresetuj widok</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation>Odświerz warstwę</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Zamknij</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Style</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Style</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Proszę dokładnie przejrzeć zmiany wysyłane do OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Anuluj</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Wyślij do Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Proszę podać komentarz do tego zestawu zmian</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Ustawienia serwerów TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Serwery TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serwery:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nazwa:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Adres serwera:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Pobierz usługi</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Usługi :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">To jest serwer &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a></span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Rzut:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Rozmiar kafla:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Minimalne powiększenie:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>Maksymalne powiększenie:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>zawartość etykiety "source":</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>URL licencji:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Merkator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Szerokość/Wysokość (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Początek w lewym dolnym rogu</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Zastosuj</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Usuń</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: PobierzUsługi</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adres i ścieżka nie mogą być puste.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Nie można pobrać: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Błąd podczas wczytywania usług. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Klucz</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Wartość</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Kliknij aby dodać...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Okno formy</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>OR</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>DODAJ</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>NOT</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>jest</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>isoneof</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Niezdefiniowany</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Niezdefiniowany</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Drabinka</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Brak numeracji domów</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Liczba domów</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Dodać numerację domów (schemat Karlsruhe)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Zakresy</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Przykładowo "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Wzorek</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Wszystkich członków</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Liczby nieprarzyste</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Liczby parzyste</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation>Dodatkowo możesz zaznaczyć węzeł w obszarze, jako początek dla numeracji domów.</translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>Ilość segmentów trasy</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Całkowita odległość</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Całkowity czas trwania</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Wyodrębnij - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Wyodrębnij rysowaną warstwę</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Powiększ</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Zamknij</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Punkt trasy</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Szerokość geograficzna</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Wysokość geograficzna</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Etykiety</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>Dodać etykiety "source"</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation>Usuń wybrane etykiety/a</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Okno dialogowe</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Adres</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Hasło</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Nazwa użytkownika</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Użyj proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Powiększ</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Wyczyść</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: Pobierz właściwości</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adres i ścieżka nie mogą być puste.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Nie można pobrać: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation>Brak nazwy</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Błąd podczas wczytywania właściwości. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Ustawienia serwerów WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Serwery WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serwery:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nazwa:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Warstwy:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Rzut:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Format obrazka:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Style:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">To jest serwer pośredniczący WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"></span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>Kafelkuj</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Stopnie powiększenia</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>zawartość etykiety "source":</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>URL licencji:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Zastosuj</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Dodaj</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Usuń</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Adres serwera:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_pt.ts�����������������������������������������������������0000664�0000000�0000000�00001104705�11770671653�0021740�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="pt"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Acerca do Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Registo de alterações</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Descrição</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exportar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Predefinição</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Cancelar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Carregar tema do atalho</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Tema do atalho Merkaartor (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 não pode ser aberto.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Todos os Ficheiros (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 não pode ser aberto para escrita.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Sem descrição</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Conduz-se pelo lado direito da estrada</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Distancia entre duas estradas</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Conduz-se pelo lado direito da estrada</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centrar && Ampliar mapa</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Limpeza</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>ADICIONAR estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>ADD ponto-de-rota %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>ADICIONAR relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>Actualizar Ponto-de-rota %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>REMOVER Ponto-de-rota %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Erro a enviar pedido</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Por favor verifique o seu nome de utilizador e a sua palavra-chave no Menu das Preferências</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Erro a enviar pedido</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Por favor verifique o seu nome de utilizador e a sua palavra-chave no Menu das Preferências</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>ADICIONAR relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>ADICIONAR estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>ADD ponto-de-rota %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>Actualizar Ponto-de-rota %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>REMOVER Ponto-de-rota %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Camada suja</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Imagens de fundo</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Transferir</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Localização</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Marcador</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Vista actual</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Do mapa em baixo (mapa fornecido pelo OpenStreetMap project)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Descarregar também rotas GPS em bruto</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Transferência falhada</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>A transferir da OSM (%n bytes)</numerusform> <numerusform>A transferir da OSM (%n bytes)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>A transferir da OSM (%n kBytes)</numerusform> <numerusform>A transferir da OSM (%n kBytes)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>A Transferir...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>A transferir da OSM (a conectar)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Por favor resolva primeiro o conflito existente</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>A parsear...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>A Parsear XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>A descarregar Pontos-de-rota %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Rota descarregada - nós %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 transferido</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>A descarregar não-resolvido...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>A descarregar não-resolvido %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Pareamento não resolvido %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Conflitos com origem em %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Os conflitos forma removidos</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Estradas/relações apagadas</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Estradas/relações vazias são provavelmente erros. Deseja marcar-las para apagar?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>A transferir %1,%2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exportar</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Todos visiveis (i.e. não escondidos)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Funcionalidades</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centrar && Ampliar mapa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Transferir as dependências em falta</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Adicionar à selecção</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Excluir</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI's</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Tudo</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Funcionalidades</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Apenas tem funcionalidade completa no quadro de visualização</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Caixa de diálogo</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation type="unfinished"></translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Imagens Geo</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Copiar o nome do ficheiro para o quadro</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>Pág abaixo</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>Pág. acima</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Carregar imagens Geo-etiquetadas</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>A carregar imagens ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Abortar carregamento</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Ficheiro inexistente</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Não é possivel encontrar a imagem "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Erro ao abrir "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Erro ao carregar informação-EXIF de "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>fim da Rota.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>começo da Rota</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Nenhum Ponto-de-rota</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Nenhum Ponto-de-rota foi encontrado na imagem "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>A imagem "%1" foi tirada %2 antes do último ponto-de-rota ter sido gravado. Ainda quer usá-la ?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>A imagem "%1" foi tirada %2 depois do último ponto-de-rota ter sido gravado. Ainda quer usá-la ?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Erro ao abrir "%1": %2</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Url do OSM inválida</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Formato das coordenadas inválida</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>As coordenadas tem de ser: '<left lon>, <bottom lat>, <right lon>, <top lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>As coordenadas tem de ser: '<center lat>, <center lon>, <span lat>, <span lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Ir Para</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Marcador</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informação</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>Url OSM API</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>URL OSM XAPI</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Nenhum</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Mapa - nenhum</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mapa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mapa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mapa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Latitude</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Projecção inválida</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Ficheiro inválido</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 não pode ser aberto.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Todos os Ficheiros (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 não pode ser aberto para escrita.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Caixa de diálogo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Separador</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Nenhum</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informação</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n funções</numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Funcionalidades</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Ocultar tudo</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Camadas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Tudo</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Rota</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Baixo</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Opacidade</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Formulário</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Não me perguntar isto outravez</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Limpar rótulo '%1' no %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Criar interacção na área</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Criar Área %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Área: Criar Estrada %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Adicionar buraco</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Deseja adicionar um/outro buraco nesta área?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Área: Terminar Estrada %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Área: Adicionar nó %1 à estrada %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Adicionar nós à estrada de dois sentidos %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Crear estrada de dois sentidos %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Criar novo nó de interacção</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Criar nó na estrada: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>LEFT-CLICK para começar;DRAG para escala;SHIFT-DRAG para rodar;LEFT-CLICK para concluir</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Criar um poligno de interacção</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Criar poligno %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Criar rotunda de interacção</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Criar rotunda %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Criar caminho de interacção</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Criar Nó %1 na Estrada %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Criar estrada: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Criar nó: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Adicionar nó %1 à estrada %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Editar interacção</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Mover Nós</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Mover nó %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Encontrados nós na mesma posição.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Deseja fundir todos os nós na posição de descarga?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Fundir nós no %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>LEFT-CLICK para seleccionar;LEFT-DRAG para mover</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Mover interecção do nó</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>LEFT-CLICK para a primeira esquina -> LEFT-DRAG numa área especifica -> LEFT-CLICK para ampliar</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Não pode carregar os ficheiros de projeccção</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Baixo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Camadas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Funcionalidade</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Nó</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Quadro inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>O quadro não contem informação válida.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Rota %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Grande Aviso de Direitos de Autor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Sem ficheiro válido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 não pode ser aberto.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Versão Qt antiga foi detectada</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Erro a transferir</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Criar Poligno</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Juntar estradas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Interromper Estradas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Forçar o carregamento de funções</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Criar junção</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Intersecções multiplas.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Adicionar numeros às Ruas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Alinhar Nós</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Separar nó %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Adicionar membro à relação</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Criar relação %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Estilo de mapa Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Carregar o estilo do mapa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Formato de troca GPS (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Formato OpenStreetMap (*.osb) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Formato GPSPlot Noni (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Formato de registo GPS NMEA (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>Ficheiro KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Imagens Geo-etiquetadas (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESRI Shapefile (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Documento Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Ficheiros de documentos Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Todos os Ficheiros (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 não pode ser aberto para escrita.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Ficheiro inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 não é um documento válido do Merkaartor.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exportar OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Ficheiros OSM (*.osb)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exportar GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Ficheiros GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Esportar KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Ficheiro KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Adicionar Marcador</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Nome de Favorito inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>O marcador não pode estar em branco</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Introduzir um novo, manter o mesmo para substituir ou cancelar.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Projecção inválida</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>Erro GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Abrir ficheiro de log NMEA</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Modelos de etiqueta Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Abrir Modelos de etiqueta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Ajuda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Criar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Estrada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Editar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Ver</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Marcadores</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Ficheiro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exportar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Estilo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Nó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Janela</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Docas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Fu&nção</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Camadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Sair</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Sobre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Abrir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Criar novo documento e importar um ficheiro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Ligação curvada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Anular</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Refazer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Mover</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importar um ficheiro para o documento actual</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Tranferir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Transferir dados do mapa para uma nova área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Ligação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Criar ligação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Seleccionar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Enviar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Apagar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Criar nova estrada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Criar novo nó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Voltar atrás</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Ir Para...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Traçado de duas vias</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Criar um Traçado de duas vias</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Criar rotunda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Novo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Criar novo documento</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Dividir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Unir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>juntar estradas ligadas a uma unica estrada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Separar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Interromper</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Separar as estradas ligadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Criar relação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Criar nova área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Editar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Gravar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Carregar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Rua curvada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Preferências...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Todos...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Esportar todas as camadas visiveis para um ficheiro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Procurar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Localizar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Procurar e seleccionar items</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exportar as funções no quadro de vista para um ficheiro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Adicionar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Remover...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Fundir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Fundir nó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Fundir os nós seleccionados (os seleccionados primeiro vão permanecer)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Guardar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Transferir mais</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Transferir mais dados do mapa para a área actual</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Tranferência da vista actual para a camada anteriormente transferida.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Propriedades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Esconder/Mostar o acoplador Propriedades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Esconder/Mostar o acoplador Camadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Esconder/Mostar o acoplador Informação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Alinhar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Alinhar nós</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Alinhar os nós seleccionados. Os primeiros dois seleccionados a dar uma linha.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Esconder/Mostar o acoplador Desfazer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Copiar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Copiar as aplicações e rótulos para o quadro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Copiar as etiquetas das funções seleccionadas para a Área de transferência; se a função for um ponto-de-rota, copiar também as coordenadas.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Colar Etiquetas (&Substituir)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Colar (e sobrepor) as etiquetas na Área de transferência para a função seleccionada.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Colar Etiquetas (&Unir)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Colar Etiquetas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Colar Etiquetas a partir da Área de Transferência (unir com as existentes)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Unir as etiquetas da Área de transferência com as da função seleccionada.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Transferir as dependências em falta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Colar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Colar Funções a partir da Área de Transferência</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Colar as Funções a partir da Área de Transferência: Se a ID da função já existir no documento, substitui-la.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binário)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Forçar envio</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Consignar aplicação à camada suja</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Aplicar a função seleccionada de uma camada não-transferível (e.g.Traçar ou extrair) sobre a camada suja, pronta a ser enviada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Esconder/Mostrar a barra de ferramentas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Ocultar tudo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Imagem da camada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Iniciar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Voltar a realizar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Esconder/Mostar o acoplador GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centro no GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Mostrar &segmentos de rota</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pausar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pausar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoImagem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Esconder/Mostar o acoplador Imagem GEO</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Editor de Atalhos...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Fundir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Adicionar membro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Remover membro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nunca</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Sempre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Destacar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Separar nó da estrada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Separar o nó da estrada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Trabalhar Offline</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Estilos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Esconder/Mostar o acoplador Estilos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Reinicar estado de Diálogos descartáveis</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Menu GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Câmara</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Criar &junção</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Colar Função</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Funcionalidades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Adicionar ruas &numeros (Esquema Karlsruhe)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Apagar dependência.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Por favor resolva primeiro o conflito existente</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>É fortemente recomendado salvar as alterações ao seu documento depois de um envio. Deseja fazer isto agora?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>ultimo: </i><b>%1</b&gt; by <b>%2</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>ultimo: </i><b>%1</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>tamanho</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Membro</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Comprimento</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 nós</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Área</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>velocidade</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Nó</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Novo Marcador</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Duplicar chave</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Mais de 150 preferências</translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Novo Servidor</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Erro!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>A Máquina do Serviço de procura de nomes não foi encontrada.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>A Máquina do Serviço de procura de nomes recusou a ligação.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>O Serviço de procura de nomes requer autenticação.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Formulário</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Ficheiro de resultado</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Todos os Ficheiros (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Ficheiros de imagem (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Sempre</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Editor do estilo do mapa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Global</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Fundo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplicar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Desenhar com cor</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Espessura fixa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Tracejado</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Preencher área</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Limite</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Desenhar passos</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Desenhar icone</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Rótulo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Tipo de Letra</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Etiqueta de rótulo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Auréola</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Área</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>desenhar com a cor do fundo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Rótulo com Etiqueta de fundo</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Ficheiro de resultado</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Todos os Ficheiros (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Ficheiros de imagem (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Caixa de diálogo</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Inglês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Árabico</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Checo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Alemão</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italiano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Português do Brasil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Directória dos estilos personalizados</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Modelo de etiqueta Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Uma ferramenta com este nome já existe. Por favor seleccione outro nome ou clique no <Apply> botão se pretende modificar o já existente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Não pode apagar a ferramenta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Não pode apagar a ferramenta "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Não pode modificar o nome da ferramenta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Não pode modificar o nome da ferramenta "%1"'</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Localizar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Geral</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Opacity baixa/alta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Cores</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Fundo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Sobrepôr estilo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Pairar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixeis</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Destaque</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Foco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Rota GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Use aparência simples na Rota GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Estilo do mapa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Estilo actual</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Desactivar estilos para as camadas de rota</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Embutido</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Personalizado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Dados</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Senha:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Documentos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Guardar os ficheiros automáticamente após o envio</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Rota</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Extrair automáticamente as rotas ao abrir</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Camadas de Rota são apenas de leitura, por predefinição</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Não ligar os nós do GPX separados por mais de (in km; 0 to disable)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Entrada GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Anfitrião (host)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Rede</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Servidor:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Imagem de fundo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Directório de cache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Tamanho da Cache (em Mb; 0 para desativar)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adaptador do mapa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Caminho:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Neerlandês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Caixa de diálogo</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 item(s) seleccionado(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 item(s) seleccionado(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centrar mapa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centrar && Ampliar mapa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Limpeza em cascada</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Limpar rótulo '%1' no %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Mover nó %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importar NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importar NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Inválido</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metros</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Registo de erros GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Registo de erros GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Altitude</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metros</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satélites</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Corrigir tipo</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Inválido</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Latitude</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Não é um fluxo de resultados adequado!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Membros</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Sem satélites</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Chave</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation type="unfinished"></translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Por favor especifique um comentário para esta alteração de definição.</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Por favor verifique cuidadosamente as alterações enviadas para o OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Cancelar</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Endereço e Caminho não podem estar em branco.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>A transferência foi mal-sucedida: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Chave</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Editar isto para adicionar...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Formulário</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extrair - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Extrair a camada a desenhar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Ponto-de-rota</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Latitude</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Caixa de diálogo</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Senha</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Limpar</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Endereço e Caminho não podem estar em branco.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>A transferência foi mal-sucedida: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Erro a ler capaciadades. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Camadas:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation type="unfinished"></translation> </message> </context> </TS> �����������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_pt_BR.ts��������������������������������������������������0000664�0000000�0000000�00001140504�11770671653�0022320�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="pt_BR"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Sobre o Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor versão</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT versão</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (compilado com <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost versão</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 versão</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL versão</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Copyright Bart Vanhauwaert, Chris Browet e outros, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Este programa está licenciado sob os termos da Licença Pública Geral GNU v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Registro de mudanças</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Descrição</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Atalho</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exportar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>Pa&drão</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Cancelar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Editor de Atalhos</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Carregar esquema de atalho</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Esquema de atalhos Merkaator (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Não foi possível abrir arquivo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 não pode ser aberto.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Salvar esquema de atalhos</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>Sem título</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Todos os arquivos (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Não foi possível abrir arquivo salvo</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 não pode ser aberto para escrita.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Sem descrição</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Condução de veículos no lado direito da estrada</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Distancias entre duas vias</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Condução de veículos no lado direito da estrada</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation>Não há <b>nenhum</b> objeto alterado</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation>Há <b>um</b> objeto alterado</translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform>Há <b>%n</b> objetos alterados</numerusform> <numerusform>Há <b>%n</b> objetos alterados</numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Desfazer</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centro do mapa</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centro && Zoom do mapa</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Desfazer</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Não há <span style=" font-weight:600;">nenhum</span> objeto "dirty"</p></body></html></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Limpar</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>Adicionar estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>Adicionar ponto de pista %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>Adicionar relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>Atualizar ponto de pista %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>Atualizar relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>Atualizar estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>Romover ponto de pista %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>Remover estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>Remover relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Erro ao carregar solicitação</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Por favor, verifique seu nome de usuário e senha no menu Preferências</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Houve um erro ao carregar esta solicitação (%1) A mensagem do servidor foi '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> A mensagem da API foi '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>Abrir mudança definida</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>Fechar mudança definida</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Carregando mudanças....</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Erro ao carregar solicitação</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Por favor, verifique seu nome de usuário e senha no menu Preferências</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Houve um erro ao carregar esta solicitação (%1) A mensagem do servidor foi '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> A mensagem da API foi '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Houve um erro ao enviar esta requisição (%1) "%2" Baixe novamente o atributo problemático para resolver o conflito.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Verificando mudanças...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>Abrir mudança definida</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>Fechar mudança definida</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>Adicionar relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>Adicionar estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>Adicionar ponto de pista %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>Atualizar relação %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>Atualizar estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>Atualizar ponto de pista %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>Romover ponto de pista %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>Remover estrada %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>Remover relação %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>Sem título</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Camada Suja</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Camada enviada</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Imagens de fundo</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Camada de desenho #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Filtrar camada #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>Exportação OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Exportando OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Documento</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Download</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Local</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Marcador</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Visão atual</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation>Vínculo WWW (OSM/Google maps)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation>Seletor da Xapi</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>A partir do mapa abaixo (mapas fornecidos pelo projeto OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Também baixar pistas GPS</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Resolver todas as relações</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Falha ao baixar</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>erro</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>Não baixado suficiente</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation> <numerusform>Baixando de OSM (%n bytes)</numerusform> <numerusform>Baixando de OSM (%n bytes)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation> <numerusform>Baixando de OSM (%n kBytes)</numerusform> <numerusform>Baixando de OSM (%n kBytes)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Baixando de OSM (conectando)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Código de status de http inesperado (%1) A mensagem do servidor foi '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> A mensagem da API foi '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Usuário/senha inválidos</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Conflitos não resolvidos</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Por favor, resolva primeiro os conflitos existentes</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Baixando pontos</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Analizando XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Baixando pontos de pista %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Estrada baixada - nós %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 baixados</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Baixando não resolvido %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Analisando não resolvido %1 de %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Conflitos de %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Os conflitos têm sido detectados</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Isso significa que alguns dos recursos que você modificou desde o seu último download já foram modificado por alguém no servidor. Os recursos têm sido duplicados como "conflito..." sobre a camada "Conflitos..". Antes de carregar as alterações, você terá que manualmente mesclar as duas versões e remover uma da camada "Conflitos...".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Estradas/relações vazias detectadas</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Estradas/relações vazias são provavelmente erros. Você deseja marcá-las para exclusão?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Remover característica vazia %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Baixando %1,%2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Baixando...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Analizando...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Baixando não resolvido...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Enviando...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Preparando mudanças</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Esperando resposta do servidor</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zoom</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Impossível excluir</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>Impossível excluir seleção porque está fora da área carregada.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Impossível excluir tudo</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation>Nem toda a seleção pode ser excluída porque parte dela está fora da área carregada. Excluir apenas o possível?</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>Reverter caminho %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>Reverter %1 caminhos</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exportar</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>O que você deseja exportar?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Todos visíveis (não ocultos)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Janela de exibição</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Selecionado</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Recursos</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centro do mapa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centro && Zoom do mapa</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Download de crianças desaparecidas</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Excluir</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relações</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Estradas</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI's</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Todos</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Adicionar para seleção</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Recursos</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Apenas características totalmente dentro da janela de exibição</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Procurar...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Restaurar</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Configuração de Filtros</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filtros</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Lista de Filtros</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Remover</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geo imagens</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Remover imagens</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Copiar nome de arquivo para área de transferência</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Carregar imagens georeferenciadas</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Selecionar a camada a que pertencem as imagens seguintes:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>Camada é somente-leitura</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation>A camada utilizada não é gravável. Deseja torná-la gravável? Caso contrário, você não poderá carregar imagens pertencentes a ela.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Carregando imagens ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Cancelar carregamento</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Especificar distância</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Posição das imagnes mais para o:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>final da pista</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>início da pista</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'segundos'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minutos e' ss 'segundos'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'horas,' mm 'minutos e' ss 'segundos'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Imagen incorreta?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>A imagem "%1" foi obtida %2 antes do próximo ponto de pista que foi gravado. Desejas continuar a usá-lo?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>A imagem "%1" foi obtida %2 depois do último ponto de pista que foi gravado. Desejas continuar a usá-lo?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Arquivo não existe</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Tempo limite de rede esgotado</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Não foi possível ler os detalhes da foto no servidor do Walking Papers.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Por favor, especifique uma URL do Walking Papers válida</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>Endereço:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centro do mapa</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Salvar imagem com geotags...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Camada de fotos</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Não foi possível localizar imagem "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Erro ao abrir "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Sem pontos de pista</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Pontos de pista não encontrados para a imagem "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>Imagens JPEG (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Erro ao carregar dados EXIF a partir de "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation>Especifique o nome do arquivo de saída</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Erro ao abrir "%1": %2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Selecionar próxima imagem</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PageDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Selecionar imagem anterior</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PageUp</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>URL OSM inválida</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>A URL especificada não é válida!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Formato das coordenadas inválido</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Formato das coordenadas: '<left lon>, <botton lat>, <right lon>, <top lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Formato das coordenadas: '<center lat>, <center lon>, <span lat>, <span lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Ir para</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Marcador</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation>Vínculo WWW (OSM/Google maps)</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>lonMin, latMin, lonMax, latMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>latCent, lonCent, latSpan, lonSpan</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Informações</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>URL da API OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>URL da XAPI OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Pesquisar</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Nenhum</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Adaptador de forma</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation>Definir projeção atual à da camada</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>Adaptador WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>Adaptador TMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Complementos</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Mapa - Nenhum</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mapa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Mapa - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Mapa - WMS-Tiled - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mapa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mapa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Termos da Licença: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>Termos da Licença não aceitos</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation>Você ainda não marcou a caixa de verificação expressando sua concordância com os termos de licenciamento. Como tal, você não será capaz de utilizar esta fonte como uma camada do mapa. É realmente o que você queria?</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Servidor</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Tamanho da imagem</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Ampliação mínima/máxima</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Projeção</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Texto</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Inteiro</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Float</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Latitude</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Projeção inválida</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Não foi possível definir projeção.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Sem coordenadas</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Faltando campo de Latitude ou Longitude. Será impossível importar o arquivo. Tem certeza de que deseja sair?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Carregar configurações de importação CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Configurações de importação do Merkaator (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Arquivo inválido</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 não pode ser aberto.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 não é um arquivo CSV de configuração de importação</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>Salvar opções de importação de CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>Sem título</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Todos os arquivos (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Não foi possível salvar as opções de importação</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 não pode ser aberto para escrita.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Entrada</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>Pré-visualização OSM</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Especificações</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Primeira linha contem cabeçalhos</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Delimitador</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Vírgula (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Ponto-e-vírgula (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Aba</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Outro:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Nenhum</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation>Aspas simples (')</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation>Aspas duplas (")</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Projection (em formato PROJ4; deixe latitude/longitude em branco)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Campos</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Lista de campos:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Nome do Campo (= chave etiqueta) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Tipo de campo:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importar</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importar faixa</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Desde (0 para o início):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Para (0 para final)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Carregando configurações...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Salvar configurações...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation>Incapaz de definir projeção; por favor especifique uma</translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Informações</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n característica</numerusform> <numerusform>%n características</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Tamanho</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Recursos</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Mostrar todas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Ocultar todas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Camadas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Todos</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Mapa</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Desenhar</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation>Redefinir Camadas para o padrão</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Estradas</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Todas apenas leitura</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Nenhuma apenas leitura</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Visível</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Apenas leitura</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Baixo</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Opacidade</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation>Fechar Camada: Objetos alterados presentes.</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation>Há objetos alterados nesta camada. Tem certeza que deseja fechá-la? (impossível Desfazer)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation>Fechar Camada: Não vazia</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Tem certeza que deseja fechar esta camada? (impossível Desfazer)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Termos da Licença</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Eu li e aceito os termos da licença</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Não me pregunte isto novamente</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Carregando plugins...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Inicializando...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Apagar rótulo '%1' em %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Criar área %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Área: Criar via %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Área: Concluir via %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Área: Adicionar nó %1 a via %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Fechar Área %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Adicionar nós a via de duplo sentido %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Criar via de duplo sentido %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Criar nó na via: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Criar POI %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Criar desvio %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Criar nó %1 na via %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Criar via: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Criar nó: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Adicionar nó %1 a via %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Encerrar Estrada %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Encontrados vários nós na mesma posição.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Deseja unir todos os nós em um ponto de reunião?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Uni nós em %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>CLIQUE para selecionar/mover;CTRL-CLIQUE para alternar seleção;SHIFT-CLICK para adicionar à seleção;SHIFT-ARRASTO para seleção de área;CTRL-ARRASTO para ampliação;DUPLO-CLIQUE para criar um nodo;DUPLO-CLIQUE em um nodo para iniciar um caminho;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Remover característica %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>Remover objetos</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Também deseja excluir os nodos filhos? Note que nodos do OSM fora da área carregada serão mantidos.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>Reverter %1 caminhos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>imagem %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Propriedades...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Baixo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Alto</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Opaco</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Arquivo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Editar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Ver</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Mostrar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Setas de Direção</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Camadas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Criar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Característica</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Nó</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Direção</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relação</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Ferramentas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Janelas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Ajuda</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Conteúdo inválido para a área de transferência</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>Recortar Objetos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>A área de transferência não contem dados válidos.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Alterações não salvas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>O mapa atual contem alterações não salvas que serão perdidas quando se iniciar um novo. Deseja cancelar o início de um novo mapa ou continuar e descartar as alterações?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Pontos da via</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Via %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Aviso de advertência de copyright</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Estás intentando importar un archivo KML. Ten en cuenta que: - No puedes importar a OSM un archivo KML creado por Google Earth. Aunque creas que los nodos que has creado desde GE son tuyos, ¡no lo son! Todavía hay trabajo derivado por parte de GE, y por lo tanto, no puede ser usado en OSM. - Si lo has descargado desde internet, hay posibilidades de que tenga copyright. Tienes que estar absolutamente seguro de que usar esos datos en OSM está permitido por el autor, o que los datos son de dominio público Si no estás seguro, deberías preguntar en las listas "legal" o "talk" de correo de openstreetmap. ¿Estás absolutamente seguro de que este KML puede ser importado legalmente en OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Arquivo não é válido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 não pode ser aberto.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Versão antiga de Qt detectada</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Sua configuração utiliza Qt %1, que contém vários erros conhecidos em transferir dados para o OpenStreetMap levando ao código 401 como resposta do servidor. Tem certeza que deseja continuar (o que não é recomendado)? Para mais informações consulte http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Enviar OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Parece que você não especificou o seu nome de usuário e senha do OpenStreetMap. Você deseja fazer isso agora?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Erro ao baixar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>O mapa não pode ser baixado</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Erro baixando OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>Não foi possível baixar os OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Unir vias</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Dividir vias</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Interromper vias</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Simplifique Ruas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Tempo limite de rede esgotado</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Não foi possível contactar com OpenStreetBugs.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Erro ao fechar o bug</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Não foi possível eliminar o bug. A mensagem do servidor é: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Adicionar números de rua</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>Número de segmentos a dividir</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation>Especifique o número de segmentos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>Subdividir estrada em %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>Alinhar Eixo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation>Especifique o número de eixos regulares aos quais alinhar (ex.: 4 para retangular)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>tringular</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>retangular</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>pentagonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>hexagonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>heptagonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>octogonal</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Alinhar a %1 eixos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>Alinhar a %1 eixos regulares</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation>Incapaz de alinhar a eixos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>Operação de alinhar a eixos falhou. Por favor ajuste alguma aresta e tente novamente.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>Operação de alinhar a eixos falhou e não convergiu em uma solução.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Alinhar nós</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>Espalhar nós</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Separar nó %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Adicionar membro à relação</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Remover membro da relação</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Unir áreas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Dividir área</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>Área de Terraço em %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Criar relação %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Salvar estilo de mapa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Estilo de mapa Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Carregar estilo de mapa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Formatos suportados</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Estilo de mapa do Merkaartor (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>MapCSS stylesheet (*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Salvar documento Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>Sem título</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Arquivos de documentos Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Todos os arquivos (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Formato GPS Exchange (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Formato OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>Formato de Mudanças do OpenStreetMap (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Formato Noni GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Formato de registro NMEA GPS (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>Arquivo KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Formato separado por vírgulas (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Imagens georeferenciadas (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>Arquivo de forma ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Linguagem de Marcação de Geografia (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Documento Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Rota</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Carregar imagem</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Adicionar um nó de posição a imagem</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Geoetiquetar imagem com esta posição</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Salvar modelo de documento do Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Não foi possível abrir arquivo salvo</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 não pode ser aberto para escrita.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation>Incapaz de abrir salvar modelo de documento</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Arquivo inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 não é um documento de Merkaartor válido.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exportar OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Arquivos OSM (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Exportar osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>Arquivos de mudanças OSM (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exportar GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Arquivos GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exportar KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Arquivos KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (inteiro)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Adicionar marcador</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Especificar o nome do marcador.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Nome de marcador inválido</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>O marcador não pode estar em branco.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Aviso: O nome do marcador já existe</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Digite um novo, mantenha o mesmo para substituir ou cancelar.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Remover marcador</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Selecionar o marcador para remover.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>Erro de GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Não foi possível abrir a porta GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Abrir arquivo de registro NMEA</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Salvar modelos rotulados</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Modelos de rótulos Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Abrir modelos de rótulos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation>Alerta! Não foi possível carregar as traduções do Merkaartor para a linguagem "%1". Alternando para o padrão Inglês.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>A&juda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Criar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>V&ia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Editar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>E&xibir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Marcadores</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Definir &projeção</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Mostrar set&as direcionais</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Definirr &opacidade de áreas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Arquivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exportar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Abrir re&cente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Importar recen&te</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>F&erramentas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>E&stilo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Nó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Janela</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Barras</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Carac&terística</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Camadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&ação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>M&ostrar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Sair</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>So&bre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Abrir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Criar um novo documento e importar um arquivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zoom em &tudo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zoom na &janela</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zoom na janela</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Diminuir zoom</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>&Aumentar zoom</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Aumentar zoom</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Link curvo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Desfazer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Refazer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Mover</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importar um arquivo no documento atual</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Download</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Baixar dados de mapa para uma nova área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Link</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Criar link</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Selecionar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Enviar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Enviar alterações ao servidor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>R&emover</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Remover características selecionadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Delete</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Criar uma nova via</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Criar um novo nó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>Inve&rter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Inverter direção da via</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Ir para...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>Via de &duplo sentido</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Criar via de duplo sentido</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Criar desvio</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Novo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Criar um novo documento</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Dividir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Dividir via em estradas separadas (conectadas)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Unir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Unir vias conectadas em uma única estrada</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Separar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Separar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Separar vias conectadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Criar relação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Áreas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Criar uma nova área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Editar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Salvar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Carregar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>Via &curva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Preferências...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Todas...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exportar todas as camadas visíveis para um arquivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Localizar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Localizar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Localizar e selecionar itens</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Janela de exibição...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exportar as características da janela de exibição para um arquivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Adicionar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Remover...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Unir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Unir nó</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Unir os nós selecionados (o primeiro permanecerá selecionado)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Salvar &como...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Salvar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Salvar para arquivo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Baixar mais</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Baixar mais dados de mapa para a área atual</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Baixar a visualização atual para a camada baixada anterior</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Propriedades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Ocultar/Mostrar a barra de propriedades</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Ocultar/Mostrar a barra de camadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informações</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Ocultar/Mostrar a barra de informação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Alinhar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Alinhar nós</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Alinhar os nós selecionados. Os dois primeiros selecionados dão o alinhamento.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>E&spalhar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Espalhar nós</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Alinhar e espalhar igualmente os nós selecionados</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Ocultar/Mostrar a barra de ações</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Mostrar áreas baixa&das</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Copiar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Copiar as características selecionadas e os rótulos para a área de transferência</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Copiar os rótulos das características selecionadas para a área de transferência; se a característica é um ponto de via, copiar as coordenadas também.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Colar rótulos (&Substituir)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Colar (e substituir) os rótulos na área de transferência para o recurso selecionado.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Colar rótulos (&Unir)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Colar rótulos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Colar rótulos da área de transferência (Unir com os rótulos existentes)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Unir os rótulos na área de transferência com os do recurso selecionado.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Selecionado...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation>Dividir uma área selecionada entre dois nodos selecionados em duas áreas separadas.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>Alinhar bordas a eixos regulares</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>Alinhar bordas a um certo número de eixos regularmente espaçados.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Imprimir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>Prévia de impressão...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Download de crianças desaparecidas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>E&xtrudir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation>Extrudir interação para caminhos (estilo JOSM)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>Selecionar alternação</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Incluir filhos na seleção</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Redimensionar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>Salvar como Modelo de Documento...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Colar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Colar características da área de transferência</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Colar as caracteristicas na área de transferência; se as caracteríssticas já estão no documento, substitua-as.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binário)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Confirmar característica para a camanda temporária</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Confirmar a característica selecionada de uma camada não carregável (ex.: Pista ou Extracto) para a camada temporária, pronta para o envio</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Ativar/desativar barra de ferramentas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Ocultar/Mostrar a barra de ferramentas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Ocultar todas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Mostrar todas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Camada de &imagem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Editor de Servidores &WMS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Editor de Servidores &TMS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Subdividir</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Subdiidir segmento igualmente</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>Subdividir um segmento de caminho selecionado (um caminho e dois nós adjacentes) em segmentos de igual tamanho.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>Simplifique</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Simplifique rua(s)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Simplifique a trilha através da remoção desnecessária nós filho</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>Editor de &Filtros</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>&Nenhum</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>&Unir Áreas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Unir áreas em contato</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Unir áreas em contato.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Dividir Área</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Dividir área entre dois nós</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Terraço</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation>Área de Terraço em Residências</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>Dividir uma área selecionada em residências geminadas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Editor de Barra de Ferramentas...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Raster/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation>Modelos de Eti&quetas</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Barra de ferramentas principal</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Iniciar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Iniciar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Reproduzir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Reproduzir GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Ocultar/Mostrar a barra GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>P&arar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Parar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centrar no GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Mostrar &segmentos da via</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Mostrar e&scala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Mostrar &relações</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Mostrar vias do fundo</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Mostrar vias de fronteira</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Mostrar retoque</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Gravar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Gravar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pausar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pausar GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoImagem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Ocultar/Mostrar a barra de geoimagens</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Gerenciador OSB Wolrd...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Editor de atalhos...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Unir...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Adicionar membro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Remover membro</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nunca</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>para vias de mã&o única</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Sempre</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Separar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Separar nó de uma via</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Separar um nó de uma via</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Trabalhar desconectado</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>E&stilos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Ocultar/Mostrar a barra de estilos</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Adicionar &número de rua (esquema Karlsruhe)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Exibir nós &virtuais</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Exibir &grade de lat/lon</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>&Travar zoom para o fundo de quadros</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Editor de &Projeções</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Exibir &Fotos no mapa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Forçar apagar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Fechar</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relação modificada %1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Remover membro '%1' em %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Conflitos não resolvidos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Por favor, resolva primeiro os conflitos existentes</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Se recomienda encarecidamente guardar los cambios en el documento tras una carga. ¿Desea hacerlo ahora?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Definir rótulos em %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Adicionar um buraco.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Você deseja adicionar um (outro) buraco a esta área?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Não foi possível carregar arquivo de projeções</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projections.xml" não pode ser aberto em qualquer lugar. Cancelando.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Abrir arquivos</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Criar junção</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Projeção inválida</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Não foi possível definir projeção "%1".</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Reiniciar estado de dialogos descartables</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Menu GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Casa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Criar &junção</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Excluir filhos.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Definir rótulos em múltiplas funções</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Criar área de interação</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Criar interação em nó</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>CLICK IZQUIERDO para inciar;ARRASTRAR para escalar;SHIFT+ARRASTRE para rotar;CLICK IZQUIERDO para terminar</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Criar interação em polígono</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Criar polígono %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Criar interação em desvio</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Criar interação em via</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Editar interação</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Mover nós</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Mover nó %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>CLIQUE para selecionar;CLIQUE+ARRASTE para mover</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Mover nó de interação</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation>APONTE para selecionar;ARRASTO-ESQUERDO para rotacionar</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Girar interação</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>Rotacionar Objeto</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>Click-izquierdo a la primera esquina -> Arrastre-izquierdo al area especifica ->Click izquierdo para ampliar</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Interação do zoom</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Criar polígono</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Especificar o número de lados</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Forçar envio do recurso</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Forçar envio</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Mostrar &nós</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>&Mostrar nomes</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Girar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Cruzamentos múltiplos.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Essas vias têm cruzamentos múltiplos. Você ainda deseja criar uma junção para cada uma (cruzamentos indesejados podem ainda serem excluídos depois da mão)?</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Colar recurso(s)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Recursos</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Limpar %1 etiquetas em %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Reordenar membros na relação %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation>Aplicar Extrusão na Estrada %1</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation>APONTE para selecionar;ARRASTO-ESQUERDO para redimensionar</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation>Redimensionar Interação</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation>Redimensionar Objeto</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation>Definir rótulo "source" em %1</translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>Último: </i><b>%1</b> by <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>Último: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>Camada: </i><b>%1</b> </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>tamanho</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>membros</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>No topo à esquerda</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Abaixo à direita</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relação</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Função</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Membro</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>Caminho fechado</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Comprimento</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Tamanho</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>nós %1</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Direção</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Área</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>coordenada</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>elevação</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>velocidade</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Ponto da tota</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>descrição</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>comentérios</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Nó</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Ver</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Caixa Delimitadora</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Projeção</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Novo servidor</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Falha ao carregar preferências</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Chave duplicada</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Mais de 150 preferências</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Novo marcador</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Itens selecionados</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Classe</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Campo desconhecido</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Erro!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Servidor não encontrado pelo serviço de busca.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Conexão recusada pelo servidor de serviço de busca.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>O servidor do serviço de busca requer autenticação.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Erro desconhecido.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Nome do arquivo de saída</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>Arquivos PDF (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>Sem título</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Todos os arquivos (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Arquivos de imagens (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>Arquivos SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Exportação Raster/SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Opções</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>min lat/Lon</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>máx lat/Lon</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Mostrar Nodos</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Mostrar Relações</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Mostrar escala</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>Mostrar Latitude/Longitude na Grade</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation>Mostrar objetos sem estilo</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Exportar para PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Exportar para SVG...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>Exportar para Raster...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>Endereço:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Usuário:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation>Senha:</translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Sempre</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Selecionar cor</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Editor de estilo de mapa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Global</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Fundo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filtro</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Remover</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplicar</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Marcar seleção</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>metros/pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Visível até</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Visível a partir da escala</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Desenhar com cores</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Espessura proporcional</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Espessura fixa</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Tracejada</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>off</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Área de preenchimento</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Borda</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Retoque</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Desenhar etapas</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Desenhar ícone</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Etiqueta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Fonte</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Marcar etiqueta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Área</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Desenhar com a cor de fundo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Etiquetar com a marca de fundo</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Sem Geoetiqueta Válida</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation>Esta foto não possui dados EXIF de geo-tagging. O que você deseja fazer agora?</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>Tentar alinhar com nó de trilha</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Carregar sem nós associado</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Extrair informações do barcode (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignorar</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Aplicar em todas as fotos atuais.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Nome do arquivo de saída</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>Arquivos SVG (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>Sem título</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Todos os arquivos (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Arquivos de imagens (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Diálogo</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Inglês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Árabe</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Tcheco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Holandês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Alemão</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Húngaro</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italiano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Japonês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polonês</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Português</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Português brasileiro</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Eslovaco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Espanhol</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Sueco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ucraniano</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Diretório de estilos personalizados</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Marcar modelo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor tag template (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Selecionar cor</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>A ferramenta já existe</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Ya existe una herramienta con este nombre. Por favor elija otro nombre o haga clic <Aplicar> buton si quiere modificar el existente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Não foi possível excluir ferramenta predefinida</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Não foi possível excluir ferramenta predefinida "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Não foi possível modificar o nome da ferramenta predefinida</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Não foi possível modificar o nome da ferramenta predefinida "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Selecionar o executável da ferramenta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>Selecionar modelo de documento</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Documento do Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Selecionar o diretório de registros (log)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Preferências</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Local</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Você pode precisar reiniciar o programa para que essas alterações entrem em vigor</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Utilizar idioma</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Traduzir as etiquetas padrão</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visual</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Geral</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Aumentar/diminuir zoom (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Opacidade baixa/alta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Modo mover separadamente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Única interação do botão do mouse</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Utilizar estilo Qt personalizado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Cores</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Fundo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Sobrescrever estilo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Pairar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Pixels</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Foco</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relações</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Usar nós virtuais (requer nova sessão)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Relações selecionáveis quando ocultas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Interface</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Estilo de mapa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Estilo atual</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Desabilitar estilos para as camadas de rotas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Modelo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Predefinidos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Personalizado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Dados</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>Carregar modelo de documento automaticamente</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Senha:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Documentos</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Salvar documentos automaticamente depois de carregá-los</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Estradas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Extrair automaticamente todas as pistas abertas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Camadas das pistas apenas leitura por padrão</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Não conectar os nós GPX separados por mais de (em km; 0 para desabilitar)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Salvar registro NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Definir a hora do sistema GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Rede</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Configurações de proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Utilizar proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Servidor:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Porta:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>Permitir criação de nodo/caminho em modo de seleção</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>Alterado</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Opções</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation>API do OSM (URL, ex.: "http://www.openstreetmap.org/api/0.6"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>Endereço:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation>Nominatim (geobusca)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Entrada de GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Serial</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Porta</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Host</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Habilitar servidor local compatível com o JOSM na porta 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Imagem de fundo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Cache das imagens (não ative para o Yahoo! devido a restrições legais)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Diretório de cache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Tamanho do cache (em Mb; 0 para desabilitar)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Adaptador de mapa</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>Adicionar automaticamente o rótulo "source" ao criar objetos sobre um mapa de fundo</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Ferramentas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Caminho:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Remover</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Usuário:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Destacar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Pista GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Utilizar aparência simples de pista GPX</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Configuração de Projeções</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Projeções</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Lista de Projeções:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>String PROJ4</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Remover</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Documento</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Predefinido</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>Padrão (EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>PROJ4 personalizado (+proj=...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Propriedades</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 iten(s) selecionado(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 iten(s) selecionado(s)</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Itens selecionados</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Propriedades - Vários itens</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Propriedades - Nó</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Propriedades - Rota</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Propriedades - Relação</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Propriedades</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Erro lendo arquivo de modelo</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centro do mapa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centro && Zoom do mapa</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Selecionar membro</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>Exportanto GPX...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation>Importando...</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Limpeza em cascata</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Definir rótulo '%1=%2' em %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Apagar rótulo '%1' em %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Mover nó %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Importar osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importar NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importar NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Inválido</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metros</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Indisponível</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Erro de registro GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Não é possível criar arquivo de registro do GPS: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Não é possível conectar-se a %1:%2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Erro de registro GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Não é possível criar arquivo de registro do GPS: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Altitude</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metros</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satélites</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Fixar tipo</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Inválido</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Velocidade</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Latitude</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Fluxo de resultados incorreto!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< S E P A R A D O R ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Personalizar Barras de Ferramentas</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Ações</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Barras de ferramentas</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Novo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Remover</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Renomear</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Restaurar Tudo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Acima</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>Abaixo</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation>Ações Atuais da Barra de Ferramentas</translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Barra de Ferramentas Personalizada</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Membros</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Remover membro(s) selecionado(s)</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>Adicionar rótulo "source"</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation>Remover rótulo(s) selecionado(s)</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Identificador</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>Adicionar rótulo "source"</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation>Remover rótulo(s) selecionado(s)</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Sem satélites</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Seleção</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Chave</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Valor</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Nome</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Consulta</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation>Máximo de resultados a obter (0 para todos)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Identificador</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Atualizar visualização</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Estilos</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Estilos</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Por favor, reveja cuidadosamente as alterações enviadas para OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Enviar para Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Por favor, especifique um comentário para estas alterações definidas.</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Configuração dos servidores TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Servidores TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Lista de servidores:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL do servidor:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Obter Serviços</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Serviços :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Isto é um servidor <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> &quot;padrão&quot; </span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projeção:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Tamanho do ladrilho:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Ampliação mínima:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>Ampliação máxima:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>Valor do rótulo "source":</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>URL da Licença:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Lat/Lon (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Origem está abaixo-esquerda</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Remover</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: GetServices</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Endereço e Rota não podem estra em branco.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Falha ao baixar: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Erro lendo serviços. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Chave</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Valor</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Editar isso para adicionar...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Form</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>OU</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>E</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>NÃO</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>é</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>é um de</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Indefinido</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Indefinido</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Terraço</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Sem Numeração</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Numeração de Edifícios</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Adicionar Numeração (método de Karlsruhe)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Intervalos</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Por exemplo "1-9;15-17;19,19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Modelo</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Todos os números</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Números ímpares</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Números Pares</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation>Opcionalmente você também pode selecionar um nodo na área e a numeração das casas começará por esta extremidade.</translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># de segmentos do traçado</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Distância total</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Duração total</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1h %2m</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extrair - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Extrair camada de desenho</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Fechar</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Ponto de pista</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Latitude</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Longitude</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Identificador</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Etiquetas</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>Adicionar rótulo "source"</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation>Remover rótulo(s) selecionado(s)</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Diálogo</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Site</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Senha</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Nome de usuário</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Utilizar proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Porta</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zoom</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Limpar</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: Tenha capacidades</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Endereço e Rota não podem estra em branco.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Falha ao baixar: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation>Sem Nome</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Erro ao ler capacidades. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Configurar servidores WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Servidores WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Lista de servidores:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Nome:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Camadas:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projeção:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Formato da imagem:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Estilos:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Este é um servidor de cache WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> </span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>Azulejar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Níveis de Zoom</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>Valor do rótulo "source":</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>URL da Licença:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Aplicar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Adicionar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Remover</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL do servidor:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_ru.ts�����������������������������������������������������0000664�0000000�0000000�00001202175�11770671653�0021743�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="ru_RU"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>О программе Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Эта программа распространяется под лицензией GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>ОК</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Версия Merkaartor</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">Версия Qt</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Версия Boost</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Версия PROJ4</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Версия GDAL</span><br /><span style=" font-weight:600;">%1</span></p></body></html></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Авторское право Bart Vanhauwaert, Chris Browet и другие, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Журнал изменений</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Описание</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Комбинации клавиш</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>Импорт</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>Экспорт</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>По умолчанию</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&ОК</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>Отмена</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Редактор комбинаций клавиш</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Скачать схему клавиатурных сокращений</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Схема клавиатурных сокращений Merkaartor (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Невозможно открыть файл</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 не может быть открыт.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Сохранить схему клавиатурных сокращений</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>документ Merkaartor</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Все файлы (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Невозможно открыть сохранённый файл</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 не может быть открыт для записи.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Нет описания</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Дорога с правосторонним движением</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Расстояние между двумя линиями</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Дорога с правосторонним движением</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Отмена</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Центр карты</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Центрировать и масштабировать карту</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Отмена</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation>Note that OSM nodes outside the downloaded area will be kept.</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Очистка</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Масштаб</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>ДОБАВЛЕНА линия%1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>ДОБАВЛЕНА точка трека %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>ДОБАВЛЕНО отношение %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>ОБНОВИТЬ точку трека %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>ОБНОВЛЕНО отношение %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>ОБНОВЛЕНА линия %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>УДАЛИТЬ точку трека %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>УДАЛЕНА линия %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>УДАЛЕНО отношение %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Ошибка запроса на передачу данных на сервер</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Пожалуйста, проверте ваш логин и пароль в меню настройка -> Параметры</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Произошла ошибка передачи на сервер этого запроса: (%1) Сообщение сервера: '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>ОТКРЫТЬ пакет правок</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>ЗАКРЫТЬ пакет правок</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> сообщение API: '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Передача изменений на сервер</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Ошибка запроса на передачу данных на сервер</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Пожалуйста, проверте ваш логин и пароль в меню настройка -> Параметры</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Произошла ошибка передачи на сервер этого запроса: (%1) Сообщение сервера: '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> сообщение API: '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Произошла ошибка передачи этого запроса на сервер (%1) "%2" Пожалуйста, cкачайте заново проблемную область, чтобы уладить конфликт.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Проверка изменений...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>ОТКРЫТЬ пакет правок</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>ЗАКРЫТЬ пакет правок</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>ДОБАВЛЕНО отношение %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>ДОБАВЛЕНА линия%1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>ДОБАВЛЕНА точка трека %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>ОБНОВЛЕНО отношение %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>ОБНОВЛЕНА линия %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>ОБНОВИТЬ точку трека %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>УДАЛИТЬ точку трека %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>УДАЛЕНА линия %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>УДАЛЕНО отношение %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>документ Merkaartor</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Слой черновика</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Слой, переданный на сервер OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Фоновая картинка</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation>Слой для рисования #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation>Слой с фильтром #%1</translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>Экспорт OSM</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Экспорт OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation>Документ</translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Скачать</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Местоположение</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Закладка</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Текущий вид</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>С карты ниже (карта представлена проектом OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Также скачать необработанные треки GPS</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Уладить все отношения</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Ошибка скачивания</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>ошибка</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>не скачивается достаточно</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Неразрешаемые конфликты</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Пожалуйста, разрешите вначале имеющиеся конфликты</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Скачивание точек</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Скачивание с OSM (соединение с сервером)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Неверный логин и пароль</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Скачиваются точки трека %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Обработка XML</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Конфликт из %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Скачивается %1,%2 (масштаб %3)...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Непредвиденный код статуса http (%1) Сервер ответил '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> сообщение API: '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Скачанный трек - точки %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 скачано</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Скачивается неразрешаемый объект %1 из %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Обрабатывается неразрешаемый объект %1 из %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Конфликты были устранены</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Это означает, что некоторые особые объекты из вашего последнего скачивания, которые вы правили, были изменены кем-то ещё на сервере. Эти особые объекты продублированы и помечены как "конфликт_..." в слое "Конфликты...". Прежде чем передать изменения на сервер, вы должны вручную объединить эти две версии и удалить их из слоя "Конфликты...".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Обнаружена пустая линия или отношение</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Пустые линии или отношения возможно созданы по ошибке. Желаете пометить их для удаления?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Удаление пустого объекта %1</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Скачивание с OSM (%n байт)</numerusform> <numerusform>Скачивание с OSM (%n байта)</numerusform> <numerusform>Скачивание с OSM (%n байт)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Скачивание с OSM (%n Кбайт)</numerusform> <numerusform>Скачивание с OSM (%n Кбайта)</numerusform> <numerusform>Скачивание с OSM (%n Кбайт)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Скачивание...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Обработка...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Скачивание не удалось...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Передача на сервер...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Подготовка изменений</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Ожидание ответа сервера</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Закрыть</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Масштаб</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation>Невозможно удалить</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation>Невозможно удалить выбранное, так как оно находиться вне скаченной области.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation>Невозможно удалить все</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation>Перевернуть линию %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation>Перевернуть %1 линии</translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Экспорт</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Что экспортировать?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Всё видимое (не скрытое)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Содержимое экрана</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Выбранное</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Особые объекты</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Центр карты</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Центрировать и масштабировать карту</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Скачать отсутствующих наследников</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Удалить</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Отношения</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Линии</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>POI</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Всё</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Добавить к выделенному</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Особые объекты</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Только те особые объекты, которые видны на экране</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Поиск...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Сбросить</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Публикация изменений</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Имя</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Фильтр</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Закрыть</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Настройка фильтров</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Фильтры</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Список фильтра:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Имя:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Фильтр</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Применить</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Добавить</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Удалить</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Геоизображения</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Удалить изображения</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Копировать имя файла в буфер</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Скачать изображения с геотегами</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Выделить слой, к которому принадлежат изображения:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation>Слой только для чтения</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Скачивание изображений...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Отмена загрузки</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Задать смещение</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Ещё изображения позиции:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>конец трека</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>начало трека</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>чч:мм:сс</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'секунд'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'минут и' ss 'секунд'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'часов,' mm 'минут и' ss 'секунд'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Ошибочное изображение?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Изображение "%1" было принято %2 до того, как следующая точка трека была записана. Вы всё равно хотите использовать его?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Изображение "%1" было принято %2 после того, как была записана последняя точка трека. Вы всё равно хотите использовать его?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Нет такого файла</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Ожидание сети</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Невозможно считать данные фотографии с сервера Walking Papers.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Пожалуйста, укажите URL Walking Papers</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Центр карты</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Сохранить геотегированное изображение...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Фотографический слой</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Не могу найти картинку "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Ошибка в момент открытия "%2":%1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Точки трека отсутствуют</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Для изображения "%1" нет точек трека</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>Изображения JPEG (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Ошибка во время загрузки EXIF-данных из "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Ошибка в момент открытия "%1":%2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Выбрать следующее изображение</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Выбрать предыдущее изображение</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Неправильная ссылка OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Указанная ссылка неверна!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Неправильный формат координат</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Координаты задаются строкой вида: '<left lon>, <bottom lat>, <right lon>, <top lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Координаты задаются строкой вида: '<center lat>, <center lon>, <span lat>, <span lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Перейти к</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Закладка</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation>Координаты</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>долМин, ширМин, долМакс, ширМакс</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>ширЦентр, долЦентр, ширРазм, долРазм</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Информация</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>Ссылка на OSM API</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>Ссылка на OSM XAPI</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Поиск</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Нет</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Адаптер форм</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Закрыть</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>адаптер WMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>адаптер TMS</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation>Плагины</translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Карта - <отсутствует></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Карта - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Карта - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Карта - квадраты WMS- %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Карта - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Map - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation>Условия лицензии: %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation>Условия лицензии не приняты</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation>Сервер</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Размер квадрата</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation>Мин/Макс масштаб</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Проекция</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Строка</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Целое</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Число с плавающей точкой</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Долгота</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Широта</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Неправильная проекция</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Невозможно задать проекцию.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Нет координат</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Отсутствует поле широты или долготы. Невозможно импортировать файл. Вы действительно хотите выйти?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Загрузить настройки импорта CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Настройки импорта Merkaartor (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Неверный файл</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 не может быть открыт.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 не является файлом настроек импорта CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>Сохранить настройки импорта CSV</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>документ Merkaartor</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Все файлы (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Невозможно открыть сохранённые настройки импорта</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 не может быть открыт для записи.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Публикация изменений</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Ввод</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>Предварительный просмотр OSM</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Условные обозначения</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Первая строка содержит заголовки</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Разделитель</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Запятая (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Точка с запятой (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Табуляция</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Другой:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Нет</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Проекция (в формате PROJ4; оставьте пустой широту/долготу)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Поля</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation>Список полей:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation>Название поля (= tag key) :</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation>Тип поля:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Импорт</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Диапазон импорта</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>От (0 от начала):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>До (0 до конца):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Загрузить настройки...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Сохранить настройки...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Информация</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n особый объект</numerusform> <numerusform>%n особых объекта</numerusform> <numerusform>%n особых объектов</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Размер</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Особые объекты</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Слои</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Всё</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Треки</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Показать всё</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Скрыть всё</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Всё только для чтения</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Нет объектов "только для чтения"</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Закрыть</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation>Карта</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation>Рисовать</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation>Сброс слоев по умолчанию</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation>Вы уверенны, что хотите закрыть этот слой? (Невозможно отменить)</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>слабо</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>сильно</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>непрозрачный</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Прозрачность</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Видимый</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Только для чтения</translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Двойная дорога</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation>Условия лицензии</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation>about:blank</translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation>Я прочитал и согласился с условиями лицензии</translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Не спрашивать в будущем</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation>%1 v%2%3(%4) Загрузка плагинов...</translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation>%1 v%2%3(%4) Инициализация...</translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Несохранённые изменения</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Текущая карта содержит несохранённые ихменения, которые будут потеряны, если начать редактирование новой карты. Хотите отменить начало создания новой карты или продолжить и потерять все изменения?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Неверный файл</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 не может быть открыт.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Обнаружена старая версия Qt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>У вас установлена Qt версии %1, в которой проявляются различные известные ошибки при передаче данных на сервер OpenStreetMap, начинающиеся с кода ответа сервера 401. Вы уверены, что хотите продолжить работу? (Правда это не рекомендуется). Для получения дополнительной информации, смотрите http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Передача данных на сервер OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Вы не указали в настройках ваш логин и пароль для сервиса OpenStreetMap. Желаете это сделать сейчас?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Ошибка скачивания</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Карта не может быть скачана</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Ошибка скачивания OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>Невозможно скачать OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Упростить дороги</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Ожидание сети</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Невозможно связаться с OpenStreetBugs.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Ошибка закрытия дефекта</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Невозможно удалить дефект. Сообщение сервера:%1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Добавить номер улицы</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>Количество сегментов, на которое разделить</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation>Укажите количество сегментов</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>Разделить дорогу на %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation>Осевое Выравнивание</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation>треугольный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation>прямоугольный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation>пятиугольный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation>шестиугольный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation>семиугольный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation>восьмиугольный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation>Выравнять по %1 осям</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation>Выравнять по %1 регулярным осям</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation>Невозможно выравнять по осям</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation>Операция выравнивание по осям не выполнена. Пожалуйста, исправьте все острые углы и попробуйте еще раз.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation>Операция выравнивание по осям не выполнена и не возможно найти решение.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>,Распределить точки</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation>Объединить области</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Разделить полигон</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>Пронумеровать %1 внутри полигона</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Сохранить стиль карты</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Стиль карты Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Открыть стиль карты</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Поддерживаемые форматы</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation>Merkaartor стиль карты (*.mas) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation>MapCSS таблица стилей (*.css)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Сохранить документ Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>документ Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Документы Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Все файлы (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation>Сохранить шаблон документа Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation>Невозможно открыть сохранение шаблона документа</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Экспорт OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Файлы OSM (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Экспорт osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>Файлы osmChange (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Добавить закладку</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Укажите имя закладки.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Неверное имя закладки</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Закладка не может быть пустой.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Внимание: такое имя закладки уже существует</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Введите новое значение, оставте тоже самое, что бы перезаписать или нажмите отмена, что бы не добавлять.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Удалить закладку</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Выберите закладку для удалени.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation>Внимание! Не возможно загрузить перевод Merkaartor для "%1" языка. Переключение на Английский.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>Справка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>Создать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>Линия</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>Правка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>Вид</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>Закладки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Установить проекцию</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>Файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>Стиль</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>Точка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>Окно</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>Панели</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>Показать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>Выход</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>О программе &Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>Открыть</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Создать новый документ и импортировать файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Показать всё</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Произвольный масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Произвольный масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>Отдалить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Приблизить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Приблизить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Плавное соединение</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>Отменить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>Вернуть</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>Импорт</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Импортировать файл в существующий документ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Связь</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Создать связь</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>Удалить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>Поменять направление</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Скачать отсутствующих наследников</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>Новый</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Создать новый документ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>Разделить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>Объединить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>Разбить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Отношение</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>Мультиполигон</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>Сохранить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>Распределить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Распределить точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Выровнять и распределить выделенные точки одинаково.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>Растр/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Показать точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Показать названия</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>Редактор серверов WMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Редактор серверов TMS...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation>&Многоугольник</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Добавить номера улицы (Схема Karlsruhe)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>Подраздел</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Разделить сегмент на равные части</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>Разделить выделенный сегмент линии (линию и две смежных точки) на сегменты одинаковой длины</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Показать сетку шир/дол</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>Зафиксировать масштаб на уровне фона разбитого на квадраты</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Редактор проекций...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Показать фортографии на карте</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Принудительно удалить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Закрыть</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>Упростить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Упростить дороги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Упростить линию, удалив ненужные дочерние точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>&Редактор фильтров</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>Отсутствует</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation>&Объединить Области</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation>Объединить соприкасающиеся области</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation>Объединить соприкасающиеся области</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>Область разделения</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Разделить полигон между двумя точками</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation>Разбить выбранную область между двумя выбранными точками на две части.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>Нумеровать дома вдоль улицы</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation>Пронумеровать дома внутри полигона</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>Разделить выбранный полигон на зоны с нумерованными рядами домов.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Редактор панели инструментов...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation>О&севое Выравнивание</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation>Выравнять края по регулярным осям.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation>Выровнять края на определенную величину равных расстояний осей.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation>&Печать...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation>Предварительный просмотр...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation>Выделить неверны&е свойства</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation>Вы&резать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation>Ctrl+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation>В&ыдавить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation>Alt+X</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation>Выбрать переключатель</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation>Добавить к выбранному дочерние элементы</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation>Сохранить как шаблон документа...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>Изогнутая линия</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>Параметры...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>Все...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Экспортировать все видимые слои в файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>Найти...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Найти и выбрать объекты</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>Содержимое экрана...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Экспортировать особые объекты из окна просмотра в файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>Добавить...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>Удалить...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>Объединить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Объединить выбранные точки (сохраняется первая выбранная)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Сохранить как...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Скачать ещё</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Скачать область текущего просмотра в ранее загруженный слой</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Скрыть/Показать панель свойств</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Скрыть/Показать панель слоёв</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Скрыть/Показать панель информации</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>Выровнять</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Выровнять выбранные точки. Первые две выбранных точки образуют линию.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Неразрешаемые конфликты</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Пожалуйста, разрешите вначале имеющиеся конфликты</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Очищен тег '%1' для %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Создан полигон %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Полигон: Создана линия %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Полигон: Закончена линия %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Полигон: Добавлена точка %1 на линию %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation>Закрыть Область %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Добавлены точки к двойной дороге %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Создана Двойная линия %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Создана точка на линии %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation>Создать POI %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Создать кольцевую развязку %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Создана точку %1 на линии %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Создана линия: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation>Закрыть Дорогу %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation>КЛИК для выбора/перемещения;CTRL-КЛИК для переключения выбора;SHIFT-КЛИК добавить к выбранному;SHIFT-ПЕРЕМЕЩЕНИЕ для выбора места;CTRL-ПЕРЕМЕЩЕНИЕ для изменения масштаба;ДВОЙНОЙ-КЛИК создание точки;ДВОЙНОЙ-КЛИК по точке для создания линии;</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Удалить особый объект %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation>Удалить свойства</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation>Вы также хотите удалить дочерние точки? Точки OSM вне загруженной области будут сохранены.</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation>Перевернуть %1 линии</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Конверт неисправен</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>В конверте нет правильных данных.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Объединить линии</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Разделить линии</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Разрезать линии</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Создано отношение %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Неверный файл</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 - не документ Merkaartor.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Экспорт GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Файлы GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Экспорт KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Файлы KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Выровнять точки</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Объеденить точки в %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Скрыть/Показать панель отмены изменений</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Скопировать выделенные теги особых объектов в буфер обмена; если свойство это точка трека, то скопируйте и координаты.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Вставить (и заменить) теги из буфера обмена в выбранный особый объект.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Объединить теги из буфера обмена с тегами выделенного особого объекта.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Выбранное...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Вставить особые объекты в буфер обмена; если id особых объектов уже в документе, переписать их.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (бинарный)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Занести выбранные особые объекты из непередаваемого слоя (например трек или Extract) в слой черновика, подготовив для передачи на сервер</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Изменено отношение %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Мы рекомендуем сохранить изменения в документе после передачи их на сервер. Хотите сделать это сейчас?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Назначить тег для %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Создать точку: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Добавлена точка %1 к дороге %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>квадрат карты %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Свойства...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation>Файл</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Правка</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Вид</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Показать</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Стрелки-указатели</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Слои</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Создать</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Особый объект</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Точка</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Линия</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Отношение</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Формат обмена GPS (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Формат OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>Формат обмена OpenStreetMap (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Не формат GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Формат журнала NMEA GPS (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>файл KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Формат с разделением запятаей (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Изображения с геотегами (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>Шейпфайл ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation>Язык Географической Разметки (*.gml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Документ Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Линия</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Загрузить изображение</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Добавить точку положения на изображение</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Геотегированное изображение этого положения</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Инструменты</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Окна</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Справка</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation>Вырезать Свойства</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Путевые точки</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Трек %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Big Fat Copyright Warning</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Вы пытаетесь импортировать файл KML. Пожалуйста, имейте в виду, что: - Вы не можете импортировать файл KML в OSM, если он создан в Google Earth. Несмотря на то, что вы и можете думать, что точки, которые вы создали в GE - ваши, однако, это не так! Они являются производной работы GE, потому не могут использоваться в OSM. - Если вы скачали их из интернета, велик шанс, что они имеют копирайт. Пожалуйста, убедитесь в том, что их использование в OSM разрешено автором, или что данные публичны. Если вы не уверены, обращайтесь за справкой к спискам рассылки openstreetmap "legal" или "talk". Итак, вы абсолютно уверены, что этот KML может быть легально импортирован в OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation>Открыть файлы</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Невозможно открыть сохранённый файл</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 не может быть открыт для записи.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>ошибка GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Невозможно открыть порт GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Открыть файл журнала NMEA</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>Слои</translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Главная панель инструментов</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>Передать на сервер</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>Перейти к...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Создать Двойную дорогу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Создать кольцевую развязку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Создано отношение</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Поиск</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Объединить точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Показать скачанные области</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Занести особые объекты в слой черновика</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Панель инструментов</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Скрыть/Показать панель инструментов</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Скрыть всё</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Показать всё</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Слой изображения</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>Начать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Старт GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>Повтор...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Воспроизвести заново GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Скрыть/Показать панель GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>Стоп</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Выключить GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>Центрировать по GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Показать отрезки трека</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Показать масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Показать отношения</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Показать фон линий</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Показать границы линий</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Показать последние правки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Запись</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Записать GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Пауза</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Пауза в работе GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Скрыть/Показать панель GeoImage</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Менеджер World OSB...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>Комбинации клавиш...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>Скачать</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Сохранить шаблоны тегов</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Шаблоны тегов Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Открыть шаблоны тегов</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>Правка...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>Сохранить...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>Загрузить...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>Объединить...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Добавлен элемент в отношение</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Удалить элемент из отношения</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Показать указатели направления</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Связь</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>Добавить участника</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>Удалить участника</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>Никогда</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>для дорог с односторонним движением</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>Всегда</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Найдены совпадающие точки.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Вы хотите слить все близко расположенные точки</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>слабо</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>сильно</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>непрозрачный</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Отделить точку %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Задать уровень прозрачности полигонов</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>Экспорт</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Открыть текущее</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Импортировать текущее</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>Инструменты</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation>Тегировать темплет</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Особенность</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>Переместить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Скачать данные карты для новой области</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>Выбрать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Передать изменения на сервер</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Удалить выделенные особые объекты</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Создана новая линия</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Создать новую точку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Сменить направление линии</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Разделить линию на отдельные (но соединённые друг сдругом) линии</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Объединить соединённые линии в одну</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Разрыв</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Разорвать соединённые линии</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Создать полигон или мультиполигон</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Сохранить в файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Скачать больше данных карты для данной области</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>Свойства</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>Информация</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Выровнять точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>Копировать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Скопировать выделенные оcобые объекты и теги в конверт</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Вставить теги (Перезаписать)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Вставить теги (Объединить)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Вставить теги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Вставить теги из буфера обмена (Объединить с существующими тегами)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Вставить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Вставить особые объекты из буфера обмена</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>Геоизображение</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>Отделить</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Отделить точку от линии</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Отделить точку от линии</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>Работать автономно</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>Стили</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Спрятать/Показать окно выбора стилей</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Удалить участника '%1' в %2</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Добавить дыру.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Желаете вложить полигон в этот полигон?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Не могу загрузить файл проэкций</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projections.xml" не может быть нигде открыт. Отказ.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Создать соединение</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Неправильная проекция</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Невозможно задать проекцию "%1".</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>Сбросить отменяемый статус диалогов</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Меню GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Камера</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Создать соединение</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Удалить наследника.</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Назначить теги на несколько особых объектов</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Создание мультиполигона</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Создание точки</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>LEFT-CLICK - начать;DRAG - масштабировать;SHIFT-DRAG - повернуть;LEFT-CLICK - закончить</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Создание многоугольника</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Создать многоугольник %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Создание круговой развязки</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Создание линии</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Отслеживание курсора</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Переместить точки</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Передвинуть точку %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>LEFT-CLICK - выделить;LEFT-DRAG - передвинуть</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Перетаскивание точки</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Вращение</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation>Свойства поворота</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>LEFT-CLICK - первый угол-> LEFT-DRAG охватить область-> LEFT-CLICK - приблизить</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Приближение</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Создать многоугольник</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Задать количество сторон</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Принудительно передать особый объект на сервер</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>Форсировать передачу данных на сервер</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Вращать</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Многократное пересечение.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Эти линии имеют несколько пересечений. Вы всё ещё хотите создать соединения для каждой из них? (Нежелательные пересечения можно позже удалить вручную)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Вставить особый объект(ы)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Особые объекты</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Показать виртуальные точки</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Стереть %1 тегов на %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Упорядочить участников отношения %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation>Выдавить Дорогу %1</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation>Взаимодействие Масштаба</translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation>Свойства Масштаба</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>посл.: </i><b>%1</b> от <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>посл.: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>слой: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation>Обзор</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>размер</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>участники</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Верхний левый угол</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Правый нижний угол</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Отношение</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Роль</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Член</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation>Закрытая линия</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>точек: %1</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Линия</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Мультиполигон</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>коорд</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Точка</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Длина</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Размер</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>высота</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>скорость</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Путевая точка</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>описание</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>комментарий</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 м</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 км</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Вид</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation>Ограничивающий Прямоугольник</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Проекция</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Новый сервер</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Передача параметров на сервер не удалась</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Дублировать ключ</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Более чем 150 параметров</translation> </message> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Новая закладка</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Теги</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Выбранные объекты</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation>Класс</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Имя</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Неизвестное поле</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Ошибка!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Сервер поиска названий не найден.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Сервер поиска названий сбросил соединение.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Сервис поиска названий требует проверку подлинности.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Неизвестная ошибка.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Двойная дорога</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Имя выходного файла</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation>PDF файлы (*.pdf)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>документ Merkaartor</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Все файлы (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Файлы изображений (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>Файлы SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Экспортировать Растр/SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation>Опции</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>мин Шир/Дол</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>макс Шир/Дол</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation>Показать точки</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation>Показать отношения</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Показать Масштаб</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation>Показывать Координатную Сетку</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation>Экспорт в PDF...</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation>Экспорт в SVG</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation>Экспорт в Растр...</translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Пользователь:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Всегда</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Выбрать цвет</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Редактор стиля карты</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Добавить</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Удалить</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Выбор тега</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>метров на пиксель</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Видимый от</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Видимый при масштабе</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Пропорциональная толщина</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Фиксированная тощина</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Пунктир</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>через</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Закрасить полигон</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Рисовать значёк</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Сделать копию</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Фон</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Фильтр</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Рисовать цветом</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Границы</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Правки</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Нарисовать след</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Ярлык</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Шрифт</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Тег надписи</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Ореол</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Мультиполигон</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Рисовать на цветном фоне</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Ярлык с тегом фона</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Общий</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Нет верного геотега</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation>Данная фотография не содержит гео-тег данные EXIF. Что вы намерены делать дальше?</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation>Попытаться сопоставить с точкой трека</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Загрузить без связанной точки</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Извлечь информацию из штрих-кода (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Игнорировать это</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Сделать это для всех текущих фотографий.</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Имя выходного файла</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>документ Merkaartor</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Все файлы (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Файлы изображений (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Публикация изменений</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>Файлы SVG (*.svg)</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Параметры</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Отображение</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Основное</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Масштаб -/+ (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Прозрачность мин/макс</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation>Опции</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation>Редактирование</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Стиль карты</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Собственный</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation>Автоматически загружать документ шаблона</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Пароль:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Сеть</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Настройки прокси сервера</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Использовать прокси</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Адрес:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Порт:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Фоновое изображение</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Директория кеша</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Размер кеша (в МБ; 0 для отключения)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Адаптер карты</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Встроенный</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Не использовать стили для слоёв с треками</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Данные</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Документы</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Автоматически сохранить документ после передачи его на сервер</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Треки</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Автоматически извлекать треки при открытии</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Выбрать цвет</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Инструмент уже присутствует</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Инструмент с таким именем уже существует. Выберите другое имя, либо нажмите <Apply>, если хотите изменить существующее</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Невозможно удалить инструмент заготовки</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Невозможно удалить инструмент заготовки "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Невозможно изменить имя инструмента заготовки</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Невозможно изменить имя инструмента заготовки "%1"'</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Выберите исполняемый файл инструмента</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation>Выбрать шаблон документа</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation>Merkaartor документ (*.mdc)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Выберите директорию для журналов</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Язык</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Необходимо перезапустить программу, что бы изменения вступили в силу</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Использовать язык</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Переводить стандартные теги</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Цвета</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Фон</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Подсветка</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Пикселей</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Фокус</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Отношения</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation>Разрешить создание точек/линий в режиме выбора</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation>Нечистый</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation>OSM API (ссылка, например, "http://www.openstreetmap.org/api/0.6"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation>XAPI</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation>Nominatim (Geo Поиск)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Сохранить журнал NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Установить системное время по GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Разрешить локальный JOSM-совместимый сервер на порт 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation>Автоматически добавлять "исходный" тег, когда создается фоновая карта</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Инструменты</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Имя:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Путь:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Применить</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Добавить</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Удалить</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Шаблон тега</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Шаблон тега Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Работа однокнопочной мышью</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Шаблон</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Кеширование квадратов (не активно для Yahoo! из-за правовых ограничений)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Перезаписать стиль</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Каталог назначения стилей</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Режим разделения движения</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Использовать пользовательский стиль Qt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Текущий стиль</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>По умолчанию слои треков - только для чтения</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Не соединять путевые точки GPX, удаленные друг от друга более, чем (в км; 0 - чтобы отменить)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Английский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Арабские цифры</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Чешский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Немецкий</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Французский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Венгерский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Итальянский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation>Японский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Польский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Бразильский португальский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Русский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Пользователь:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Подсветить</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Трек GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Использовать простой вид треков GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation>Ввод GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Serial</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Порт</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Сервер</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Использовать Виртуальные точки (требуется новая сессия)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Голландский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Португальский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Словацкий</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Испанский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Шведский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Украинский</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Отношения можно выбирать, даже если они скрыты</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Интерфейс</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Параметры проекций</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Проекции</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Список проекций:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Имя:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>Строка PROJ4</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Применить</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Добавить</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Удалить</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation>Документ</translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Публикация изменений</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation>Предопределенный</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation>Стандарт (EPSG:...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation>Пользовательский PROJ4(+proj=...)</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation>Невозможно экспортировать в формат PROJ4</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Свойства</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Свойства</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation>Ошибка при чтении файла шаблона</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Центр карты</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Центрировать и масштабировать карту</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>выбрано элементов %1/%1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>выбрано элементов %1/%2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Выбранные объекты</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Свойства - Разные элементы</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Свойства - Отношение</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Свойства - Линия</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Выделить участника</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Свойства - Точка</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation>Экспорт GPX...</translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Каскадная очистка</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Назначить тег '%1=%2' для %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Очищен тег '%1' для %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Переместить точку %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Импорт osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Импорт NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Импорт NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Неверный</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Метры</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>км/час</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Недоступно</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Журнал ошибок GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Невозможнол создать файл журнала GPS: %1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Невозможно присоединить к %1:%2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Журнал ошибок GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Невозможнол создать файл журнала GPS: %1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Долгота</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Высота</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 метров</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Спутников</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Исправить опечатки</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Неверный</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Скорость</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 км/ч</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Широта</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Нет потока с подходящими результатами!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation>< Р А З Д Е Л И Т Е Л Ь ></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation>Настроить панели</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation>Действия</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Панели инструментов</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Новый</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Удалить</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Переименовать</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Восстановить всё</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>ОК</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Применить</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>по возрастанию</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>по убыванию</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation>Текущая панель действий</translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation>Настроить панель</translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Члены</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation>Удалить выбранные элемент(ы):</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Теги</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation>Добавить "исходный" тег</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation>Удалить выбранные тег(и)</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Теги</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation>Добавить "исходный" тег</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation>Удалить выбранные тег(и)</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Нет спутников</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Поиск объектов</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Ключ</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Значение</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Имя</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Запрос</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation>Максимальные возвращенные результаты (0 для всех)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Сбросить вид</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Закрыть</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Стили</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Стили</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Пожалуйста внимательно ознакомтесь с изменениями, посылаемыми в OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>ОК</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Передать на сервер Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Пожалуйста, напишите комментарий для этого пакета правок.</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Настройки сервера TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Сервера TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Список серверов:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Имя:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Ссылка на сервер:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Получить сервисы</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Сервисы :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Это &quot;стандартный&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> сервер</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Проекция:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation>Размер мозаики:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation>Мин масштаб:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation>Максимальный масштаб:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation>значение "исходного" тега:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation>Ссылка на лицензию:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Шир/Дол (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Начало координат в левом нижнем углу</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Применить</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Добавить</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Удалить</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation>Merkaartor: GetServices</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Адрес и путь не могуть быть пустыми.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Ошибка скачивания: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Ошибка сервисов чтения. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Ключ</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Значение</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Добавить...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Двойная дорога</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>ИЛИ</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>И</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>НЕ</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>является</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>один_из</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Неопределено</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Неопределено</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Нумеровать дома вдоль улицы</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Отсутствует нумерация домов</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Количество зданий</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Добавить нумерацию домов (схема Karlsruhe)</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Диапазоны</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Например "1-9;15-17;19,19А"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Шаблон</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Все номера</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Нечётные номера</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Чётные номера</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># сегментов трека</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Общее расстояние</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 км</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Общая продолжительность</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1ч %2м</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Извлечение - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Извлечь редактируемый слой</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Закрыть</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Точка трека</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Широта</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Долгота</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Теги</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation>Добавить "исходный" тег</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation>S</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation>Удалить выбранные тег(и)</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Публикация изменений</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Сайт</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Пароль</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Логин</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Использовать прокси</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Порт</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Очистить</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: ПолучитьВозможности</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Адрес и путь не могуть быть пустыми.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Ошибка скачивания: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Ошибка чтения возможностей. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Настройки серверов WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Сервера WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Список серверов:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Имя:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Слои:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Проекция:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation>Формат изображения:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Стили:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Это кеширующий WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> сервер</span></p></body></html></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation>Разбить на квадраты</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Уровни масштаба</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation>значение "исходного" тега:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation>Ссылка на лицензию:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Применить</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Добавить</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Удалить</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Ссылка на сервер:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_sk.ts�����������������������������������������������������0000664�0000000�0000000�00001100541�11770671653�0021724�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="sk"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>O programe Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Tento program je šírený pod licenciou GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Zoznam zmien</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Popis</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Skratka</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importovať</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exportovať</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Predvolené</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Zrušiť</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Nemožno otvoriť súbor</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 sa nepodarilo otvoriť.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>bez názvu</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Všetky súbory (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 sa nepodarilo otvoriť na zápis.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation type="unfinished"></translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Jazda v pravo</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Vzdialenosť medzi dvoma cestami</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Jazda v pravo</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>História zmien</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centrovať mapu</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centrovať && priblížiť mapu</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>História zmien</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Vyčistenie</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zväčšenie</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>Pridať cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>Prifať väzbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>ODSTRÁNIŤ cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>ODSTRÁNIŤ reláciu %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Prosím skontrolujte svoje prihlasovacie meno a heslo v menu Nastavení</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Nahrávanie zmien...</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>OTVORIŤ súbor zmien</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>Zavřít súbor zmien</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Prosím skontrolujte svoje prihlasovacie meno a heslo v menu Nastavení</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>OTVORIŤ súbor zmien</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>Zavřít súbor zmien</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>Prifať väzbu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>Pridať cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>ODSTRÁNIŤ cestu %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>ODSTRÁNIŤ reláciu %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>bez názvu</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Pracovná vrstva</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Nahratá vrstva</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Zobrazovánie pozadia</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Stiahnuť</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Poloha</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Záložka</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Aktuálny pohľad</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Z mapy dole (mapa poskytnutá projektom OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Stiahnuť ťiež GPS trasy</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Sťahovanie zlyhalo</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>chyba</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Sťahovanie z OSM (%n bytov)</numerusform> <numerusform>Sťahovanie z OSM (%n bytov)</numerusform> <numerusform>Sťahovanie z OSM (%n bytov)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Sťahovanie z OSM (%n kBytov)</numerusform> <numerusform>Sťahovanie z OSM (%n kBytov)</numerusform> <numerusform>Sťahovanie z OSM (%n kBytov)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Sťahuje sa...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Sťahovanie z OSM (pripájanie)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 stiahnuté</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Konflikty z %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Detekovaný konflikt</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Sťahovanie %1,%2 (priblíženie %3)...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Zavrieť</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zväčšenie</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exportovať</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Všetko viditelné (t.j. nie skryté)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Zobrazenie</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Označené</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centrovať mapu</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centrovať && priblížiť mapu</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Stiahnuť chýbajúce deti</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Pridať k výberu</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Väzby</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Cesty</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Všetky</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Meno</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Zavrieť</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Meno</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Použiť</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Pridať</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Odstrániť</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Kopírovať názov súboru do schránky</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Načítavanie obrázkov ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Zrušiť nahrávanie</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Nemožno nájsť obrázok "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centrovať mapu</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'hodiny,' mm 'minúty a' ss 'sekundy'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation type="unfinished"></translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>neplatná OSM url</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Zadaná url je neplatná!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>ňneplatný formát súradníc</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Súradnice musia byť: '<ľavá dĺžka>, <dolná šírka>, <pravá dĺžka>, <vrchná šírka>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Súradnice musia byť: '<stredná šírka>, <stredná dĺžka>, <rozpetie šírky>, <rozpetie dĺžky>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Prejsť na</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Záložka</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Info</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Hľadať</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zväčšenie</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Zavrieť</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Map - Prázdna</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Mapa - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Mapa - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Mapa - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Veľkosť dlaždice</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Zemepisná dĺžka</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Zemepisná šírka</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Chybná projekcia</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Chybný súbor</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 sa nepodarilo otvoriť.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>bez názvu</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Všetky súbory (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 sa nepodarilo otvoriť na zápis.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Info</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n vlastnosť</numerusform> <numerusform>%n vlastností</numerusform> <numerusform>%n vlastností</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Veľkosť</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Zobraziť všetko</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Schovať všetko</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Zavrieť</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Vrstvy</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Všetky</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Skladby</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Nepriehladnosť</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Viac sa ma to nepýtaj</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Zmazať Značku '%1' na %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Odstrániť člena '%1' na %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Vytvoriť plochu %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Plocha: Vytvor cestu %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Pridať otvor.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Chcete pridať (ďalšiu) dieru do tejto plochy?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Area: Ukonči cestu %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Plocha: Pridaj bod %1 k ceste %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Vytvoriť dvojitú cestu %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Vytvoriť bod v ceste: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Vytvoriť polygon %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Vytvoriť kruhový objazd %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Vytvoriť bod %1 v ceste %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Vytvoriť cestu: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Vytvoriť bod: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Pridať bod %1 do cesty %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Posunúť body</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Posunúť bod %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Zlúčiť body do %1</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Vlastnosti...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Nemožno načítať súbor projekcií</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Vrstvy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Bod</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Väzba</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Nástroje</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Neplatná schránka</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Schránka neobsahuje platné dáta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Neuložené zmeny</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Cestné body</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 sa nepodarilo otvoriť.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Vytvoriť polygon</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Spoj cesty</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Vytvotiť križovatku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Pridať čísla domov</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Zarovnať Body</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Odpojiť bod: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Pridať člena do väzby</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Odstrániť člena z väzby</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Vytvoriť Väzbu %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Podporované formáty</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMap format (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KML súbor (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartor dokument (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Cesta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Uložiť Merkaartor dokument</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>bez názvu</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Všetky súbory (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 sa nepodarilo otvoriť na zápis.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Chybný súbor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 nie je platný dokument Merkaatora.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exportovať OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM Súbory (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exportovať GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX Súbory (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exportovať KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML Súbory (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (celočís.)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Pridať záložku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Neplatné meno záložky</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Záložka nemôže byť prázdna.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Odstrániť záložku</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Označiť záložku na odstránenie</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Chybná projekcia</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Nemožno nastaviť projekciu "%1".</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPS chyba</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Uložiť šablóny značiek</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Otvoriť šablóny značiek</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Nápoveda</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Vytvoriť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Cesta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Upraviť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Zobraziť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Záložky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Nastaviť &projekciu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Zobraziť smerové &Šípky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Súbor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exportovať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Pos&ledne otvprené</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Posle&dne importované</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>Nástr&oje</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Štýl</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Bod</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Okno</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Panely</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Vrstvy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&Gps</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Ukončiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&O programe</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Otvoriť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Vytvoriť nový dokument a importovať súbor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zobraziť &všetko</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zobraziť &výber</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zobraziť výber</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>&Odialiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Priblíž&iť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Priblížiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Späť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Opakovať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Presunúť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importovať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importovať súbor do aktuálneho dokumentu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Stiahnuť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Stiahnuť mapové údaje pre novú oblasť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Vytvoriť odkaz</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Vybrať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Nahrať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Nahrať zmeny na server</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>O&dstrániť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Vytvoriť novú cestu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Vytvoriť nový bod</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Otočiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Prejsť na...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Vytvoriť kruhový objazd</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Nový</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Vytvoriť nový dokument</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Rozdeliť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Spojiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Spojiť pripojené cesty do jednej cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>&Rozdeliť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Prerušiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Oddeliť pripojené cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lácia</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Vytvoriť Väzbu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Plocha</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Vytvoriť novú plochu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Upraviť...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Uložiť...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Načítať...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Zakrivená cesta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Nastavenia...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Všetko...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exportovať všteky viditelné vrstvy do súboru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Nájsť...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Hľadať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Zobrazenie...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Pridať...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Odstránit...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Zlúčiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Uložiť &ako...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Uložiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Uložiť do súboru</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Stiahnuť viac</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Stiahnuť viac mapových dát pre aktuálnu oblasť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Stiahnuť aktuálny pohlad do predchádzajúcej stiahnutej vrstvy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Vlastnosti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Skryť/Zobraziť panel Vlastností</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Skryť/Zobraziť panel Vrstiev</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Informácie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Skryť/Zobraziť Info panel</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Zarovnať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Zarovnať Body</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Zarovnať vybrané body. Prvé dva vybrabé definujú priamku.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Skryť/Zobraziť panel Histórie zmien</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Zobraziť &stiahnutú oblasť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopírovať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Kopírovať vybrané vlastnosti a značky do schránky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Vložiť značky (P&repísať)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Vložiť značky (Zlúč&iť)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Vložiť značky</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Vložiť značky zo schránky (Zlúčiť s existujúcimi značkami)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Označené...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Stiahnuť chýbajúce deti</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Vložiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (Binárne)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Vnútiť Nahratie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Previesť vlastnosti do pracovnej vrstvy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Previesť vybranú vlastnosť z pomocných vrstiev (napr. Trate alebo Extrakt) do pracovnej vrstvy, pripraviť pre nahratie</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Panel nástrojov</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Skryť/Zobraziť nástrojovú lištu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Schovať všetko</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Zobraziť všetko</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Obrázková vrstva</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Štart</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Prehrať...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Skryť/Zobraziť GPS panel</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centrovať na GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Zobraziť mierku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Zobraziť &väzby</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pauza</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Editor skratiek...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Zlúčiť...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Pridat člena</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Odstrániť člena</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&Nikdy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>pre &Jednosmerné cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Vždy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>O&dpojiť</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Odpojiť bod z cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Odpojiť bod z cesty</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Pracovať offline</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Štýly</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Skryť/Zobraziť panel Štýlov</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS Menu</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Kamera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Vytvotiť &križovatku</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Otáčať</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Pridať &čísla domov (Karlsruhe scheme)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Zavrieť</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Zmazať deti.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Nastaviť značku na %1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>posledný: </i><b>%1</b&gt; od <b>%2</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>posledné: </i><b>%1</b&gt;</translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>veľkosť</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Lavý horný</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Väzba</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Úloha</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Člen</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Dľžka</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Veľkosť</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 bodov</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Plocha</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>výška</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>rýchlosť</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>popis</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>komentár</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Cestný bod</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Bod</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nová záložka</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Duplikovať klúč</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Nový server</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Meno</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Neznáme pole</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Chyba!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Neznáma chyba.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>bez názvu</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Všetky súbory (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>obrázkové súbory (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG súbory (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Zobraziť mierku</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Užívateľ:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Vždy</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Globálne</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Pozadie</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Pridať</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Odstrániť</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplikát</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Výber značiek</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>meter/pixel</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Viditelné v mierke</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Kresliť s farbou</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Čiarkovaná</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Vyplniť plochu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Okraje</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Vykreslovať ikonu</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Plocha</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Kresliť s podkladovou farbou</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG súbory (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>bez názvu</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Všetky súbory (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>obrázkové súbory (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Anglický</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Český</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Nemecký</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Francúzsky</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Talianský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Poľský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Ruský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Adresár uživateľských štýlov</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Šablóna značky</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Nástroj už existuje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Nástroj s týmto menom už existuje. Prosím vyberte iné meno alebo použite <Apply> tlačítko, pokial ho chcete zmeniť</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Nemožno vymazať predvolený nástroj</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Nemožno vymazať predvolený nástroj "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Nemožno pozmeniť meno predvoleného nástroja</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Nemožno pozmeniť meno predvoleného nástroja "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Nastavenia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Lokalizácia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Používať jazyk</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Vzhľad</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Použiť vlastný Qt štýl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Farby</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Pozadie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Prepísať štýl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Zvýraznenie</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Výber</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Väzby</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Aktuálny štýl</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Šablóna</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Zabudovaný</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Uživateľský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Údaje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Heslo:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokumenty</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Automaticky ulož dokumenty po nahratí na server</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Skladby</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Sieť</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Proxy nastavenia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Použiť proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Užívateľ:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Obrázok pozadia</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Adresár pre cache</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Velikosť cache (v Mb; 0 pre vypnutie)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Nástroje</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Meno</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Umiestnenie:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Použiť</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Pridať</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Odstrániť</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Holandský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugalský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovenský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Španielský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Švédsky</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrajinský</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Meno</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Použiť</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Pridať</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Odstrániť</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Vlastnosti</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 vybraných položiek</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 vybraných položiek</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Vlastnosti - Cesta</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Vlastnosti - Väzba</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Vlastnosti</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centrovať mapu</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centrovať && priblížiť mapu</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Nastaviť značku '%1=%2' na %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Zmazať Značku '%1' na %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Posunúť bod %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importovať NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importovať NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Neplatné</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Metre</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Nedostupné</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Zemepisná dĺžka</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Nadmorská výška</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 metrov</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># Satelity</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Neplatné</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Zemepisná šírka</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Odstrániť</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Použiť</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Členovia</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Výber</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Klúč (Key)</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Hodnota</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Meno</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Zavrieť</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Štýly</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Štýly</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Nahrať do Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Meno</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Url servra:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projekcia:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Použiť</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Pridať</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Odstrániť</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adresa a cesta nemôžu byť prázdne.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Sťahovanie zlyhalo: %1</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Klúč (Key)</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Hodnota</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Pre pridanie upraviť toto...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Nedefinované</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Nedefinované</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zväčšenie</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Zavrieť</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Zemepisná šírka</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Zemepisná dĺžka</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Značky</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialog</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Web stránka</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Heslo</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Užívateľské meno</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Používať proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zväčšenie</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Zmazať</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adresa a cesta nemôžu byť prázdne.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Sťahovanie zlyhalo: %1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>WMS Servre</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Meno</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Url servra:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Vrstvy:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projekcia:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Štýly:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Použiť</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Pridať</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Odstrániť</translation> </message> </context> </TS> ���������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_sv.ts�����������������������������������������������������0000664�0000000�0000000�00001106222�11770671653�0021741�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="sv"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Om Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>Textetikett</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished">Upphovsrätt Bart Vanhauwaert, Chris Browet med flera, 2006-2012</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Detta program är licenserat med GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Ändringslogg</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>OK</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Beskrivning</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Kortkommando</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Importera</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Exportera</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>&Förvald</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&OK</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Avbryt</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Redigerare för kortkommandon</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Ladda shema för genvägar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Merkaartor shema för genvägar (*mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Kan inte öppna filen</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 kunde inte öppnas</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Spara shema för genvägar</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>namnlös</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Alla filer (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Kan inte öppna sparad fil</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 kunde inte öppnas för skrivning</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Ingen beskrivning</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Kör på rätt sida av vägen</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Avstånd mellan två vägar</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Kör på rätt sida av vägen</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Ångra</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Centrera karta</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Centrera && Zooma karta</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Ångra</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Rensa</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Zooma</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>LÄGG TILL väg %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>LÄGG TILL spårpunkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>LÄGG TILL relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>UPDATERA spårpunkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>UPDATERA relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>UPDATERA väg %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>TA BORT spårpunkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>TA BORT väg %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>TA BORT relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Fel vid uppladdningsbegäran</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Kontrollera ditt användarnamn och lösenord i menyn för inställningar</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Ett fel inträffade när den här förfrågan laddades upp (%1) Meddelande från servern: %2</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> API-meddelande är '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Laddar upp ändringar...</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>ÖPPNA ändringsset</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>STÄNG ändringsset</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Fel vid uppladdningsbegäran</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Kontrollera ditt användarnamn och lösenord i menyn för inställningar</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Ett fel inträffade när den här förfrågan laddades upp (%1) Meddelande från servern: %2</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> API-meddelande är '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation>Det var ett problem med att ladda upp den här förfrågan (%1) "%2" Vänligen ladda ner de objekt som har problem igen för att lösa konfilkten.</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation>Kontrollerar ändringar...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>ÖPPNA ändringsset</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>STÄNG ändringsset</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>LÄGG TILL relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>LÄGG TILL väg %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>LÄGG TILL spårpunkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>UPDATERA relation %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>UPDATERA väg %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>UPDATERA spårpunkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>TA BORT spårpunkt %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>TA BORT väg %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>TA BORT relation %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>namnlös</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Skräplager</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Ladda upp lager</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Bakgrundsbilder</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation>OSM export</translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation>Exportera OSM...</translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Ladda ned</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Position</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Lägg till bokmärke</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Aktuell vy</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>Från kartan nedan (tillhandahållet av OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Ladda också ner GPS-spår</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Lös alla relationer</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Nerladdning misslyckades</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>fel</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>laddade inte ner tillräckligt</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Laddar ner från OSM (%n byte)</numerusform> <numerusform>Laddar ner från OSM (%n byte)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Laddar ner från OSM (%n kilobyte)</numerusform> <numerusform>Laddar ner från OSM (%n kilobytes)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Laddar ner...</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Laddar ner från OSM (ansluter)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Oväntad http statuskod (%1) Meddelande från server: '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> API-meddelande är '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Användarnamn/lösenord ogiltigt</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Olösta konflikter</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Lös först alla konflikter</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation>Laddar ner punkter</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Tolkar...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Tolkar XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Ladda ner spårpunkter %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Ladda ner spår - noder %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 nedladdat</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Nedladdning olöst...</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Nedladdning olöst %1 av %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Analys olöst %1 av %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Konflikter från %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Konflikter har upptäckts</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Detta innebär att några av tecknen du ändrade sedan senaste nedladdningen har modifierats av någon annan på servern. Tecknen har duplicerats som "coflict_..." på "Conflicts..." lagret. Före du kan ladda upp dina ändrngar måste du manuellt sammanfoga de två versionerna och ta bort den från "Conflicts..." lagret.</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Tomma vägar/relationer upptäckta</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Tomma vägar/relationer är troligen felaktiga. Vill du markera de för borttagning?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Ta bort tomma tecken %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Laddar ner %1, %2 (zoom %3)...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Laddar upp...</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation>Förbereder ändringar</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation>Väntar på kontakt från servern</translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Stäng</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Zooma</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Exportera</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Vad vill du exportera?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Alla synliga (dvs. inte dolda)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Visningsområde</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Valda</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Tecken</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Centrera karta</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Centrera && Zooma karta</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Ladda ner saknade barn</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Lägg till i markering</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Ta bort</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Relationer</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Vägar</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>Intressepunkter</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Alla</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Tecken</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Endast tecken helt inom vyn</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation>Sök...</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation>Återställ</translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialogruta</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Namn</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Stäng</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation>Filterinställning</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation>Filter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation>Filterlista:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Namn:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Verkställ</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Lägg till</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Ta bort</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Geobilder</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Ta bort bilder</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Kopiera filnamn från urklipp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Välj nästa bild</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>Sida ner</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Välj föregående bild</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>Sida upp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Ladda geotaggade bilder</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Välj vilket lager som bilderna tillhör:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Laddade bilder ...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Avbryt laddning</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Ingen sådan fil</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Kan inte hitta bild "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Fel vid öppnande av "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Fel vid laddande av EXIF-data från "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation>Tidsgräns för nätverk</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation>Kan inte hämta fotots detaljer från Walking Papers server</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation>Ange URL för Walking Papers</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Centrera karta</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation>Spara geotaggade bilder...</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation>Fotolager</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Ange offset</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Placera bilderna mera till:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>slut på spåret</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>början på spåret</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>hh:mm:ss</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Inga spårpunkter</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Inga spårpunkter funna för bilden "%1"</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>ss 'sekunder'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>mm 'minuter och' ss 'sekunder'</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>hh 'timmar,' mm 'minuter och' ss 'sekunder</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Fel bild?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Bild "%1" togs %2 innan nästa spårpunkt registrerades.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Bild "%1" togs %2 efter den sista spårpunkten registrerades.</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation>JPEG bilder (*.jpg)</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Fel vid öppnade av "%1": %2</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Ogiltig URL för OSM</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Den angivna URLen är ogiltig</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Ogiltigt format på koordinater</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Koordinater måste vara på formatet: '<vänster lon>, <nedre lat>, <höger lon>, <övre lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Koordinater måste vara på formatet: '<center lat>, <center lon>, <omf lat>, <omf lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Gå till</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Lägg till bokmärke</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>lonMin, latMin, lonMax, latMax</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>latCen, lonCen, latOmf, lonOmf</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Info</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Sök</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Ingen</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Formadapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Zooma</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Stäng</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMS-adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMS adapter</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Karta - Ingen</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Karta - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation>Karta - WMS-C - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation>Karta - WMS-Tiled - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Karta - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Karta - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Rutstorlek</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Projektion</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Textsträng</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Heltal</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation>Flyttal</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Longitud</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Latitud</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Ogiltig kartprojektion</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation>Kan inte ställa in projektion</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation>Inga koordinater</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation>Fält för latitud eller longitud saknas. Det kommer inte vara möjligt att läsa in filen. Vill du verkligen avsluta?</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation>Ladda CSV importinställningar</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation>Merkaartor importinställningar (*.mis)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Ogiltig fil</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 kunde inte öppnas</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation>%1 är inte en giltig fil för CSV import</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation>Spara CSV importinställningar</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>namnlös</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Alla filer (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation>Kan inte öppna spara importinställning</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 kunde inte öppnas för skrivning</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Dialogruta</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation>Indata</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation>OSM förhandsgranska</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Specifikationer</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation>Första raden innehåller rubriker</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Avgränsare</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation>Kolon (,)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Semikolon (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Tabb</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Annat:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Ingen</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation>Projektion (i PROJ4 format; lämna tomt för latitud/longitud)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Fält</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Importera</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation>Importera omfång</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation>Från (0 från start):</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation>Till (0 till slutet)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation>Ladda inställningar...</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation>Spara inställningar...</translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Info</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n egenskap</numerusform> <numerusform>%n egenskaper</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Storlek</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Tecken</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Visa alla</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Dölj alla</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Skrivskydda alla</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Skrivskydda ingen</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Stäng</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Lager</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Alla</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Spår</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Synligt</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Skrivskyddad</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>Låg</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>Hög</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>Ogenomskinlig</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Ogenomskinlighet</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Formulär</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Fråga mig inte detta igen</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Rensa tagg '%1' från %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Ta bort medlem '%1' från %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Skapa ytinteration</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Skapa yta %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Yta: Skapa väg %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Lägg till ett hål</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Vill du lägga till (ytterligare) ett hål i den här ytan?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Yta: Slutför väg %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Yta: Lägg till nod %1 till väg %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Lägg till noder till dubbelriktad väg %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Skapa dubbelväg Väg %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Skapa nod-interaktion</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Skapa nod för väg: %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>VÄNSTERKLICKA för att starta;DRAG till skala;SHIFT-DRAG för att rotera;VÄNSTER-KLICKA för att avsluta</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Skapa polygoninteraktion</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Skapa polygon %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Skapa rondell-interaktion</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Skapa rondell %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Skapa väg-interaktion</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Skapa nod %1 för väg %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Skapa väg: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Skapa nod: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Lägg till Nod %1 till Väg %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Redigera-interaktion</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Flytta noder</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Flytta nod %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Noder vid samma position funna</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Vill du slå ihop alla noder vid punkten där du släppte?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Slå ihop noder till %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Ta bort tecken %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>VÄNSTERKLICKA för att välja; VÄNSTERDRAG för att flytta</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Flytta nodinteraktion</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Rotera interaktion</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>VÄNSTERKLICKA till första hörnet -> VÄNSTER-DRAG till en yta -> VÄNSTERKLICKA för att zooma</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Zoominteraktion</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>ruta %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Egenskaper...</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Kan inte ladda projektionsfil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>"Projectons.xml" kunde inte öppnas någonstans. Avbryter.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>Låg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>Hög</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>Ogenomskinlig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation>Redigera</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation>Vy</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation>Visa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation>Riktningspilar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Lager</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation>Skapa</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Tecken</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Nod</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Väg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Relation</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Verktyg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation>Fönster</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation>Hjälp</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Urklipp ogiltig</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Urklipp innehåller inte giltiga data</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Osparade ändringar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Den aktuella kartan innehåller osparade ändringar som kommer förloras när en ny skapas. Vill du avbryta skapandet av en ny karta eller fortsätta och förkasta ändringarna?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Vägpunkter</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Spår %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Stor Fet Varning Angående Upphovsrätt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Du försöker importera en KML-fil. Observera att: - Du kan inte importera en KML-fil skapad från Google Earth till OSM. Även om du kanske tror att noder skapade från GE är dina så är de inte det! De är fortfarande ett härlett arbete från GE och kan därför inte användas i OSM. - Om du laddade ner det från internet, kan det vara upphovsrättskyddat. Var absolut säker på att skaparen av datan tillåter att de används i OSM eller att de är i Public Domain (det finns ingen upphovsrätt på de) Om du är osäker, vänligen fråga på OpenStreetMaps mailinglistor "legal" eller "talk". Är du helt säker på att upphovsrätten för denna KML-fil tillåter att den importeras till OSM?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Ingen giltig fil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 kunde inte öppnas</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Gammal version av Qt upptäckt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Din installation använder Qt %1, vilket innehåller en del kända fel med uppladdning till OpenStreetMap,vilket leder till 401-felmeddelanden från servern. Är du säker på att du vill fortsätta (ej rekommenderat). För mer information se http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor (på engelska)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Ladda upp OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Det verkar som att du inte har angett ditt användarnamn och lösenord för OSM. Vill du göra detta nu?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Fel vid nedladdning</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Kartan kunde inte laddas ner</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation>Problem med att ladda ner OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation>OpenStreetBugs kunde inte laddas ner</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Skapa polygon</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Ange antal sidor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Förena vägar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>splittra vägar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Slå isär vägar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation>Förenkla vägar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Tvinga uppladdning av tecken</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation>Tidsgräns för nätverk</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation>Kan inte nå OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation>Problem med att slutföra bugg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation>Kan inte ta bort bugg. Meddelande från servern: %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Skapa knutpunkt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Flera skärningspunkter</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Dessa vägar har flera skärningar. Vill du fortfarande skapa en korsning för varje (Oönskade skärningar kan fortfarande tas bort efteråt)?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Lägg till gatnummer</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation>Antal segment att dela upp i</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation>dela upp väg i %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Rikta in noder</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation>Sprid noder</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Lösgör nod %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Lägg till medlem till relation</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Ta bort medlemmar från relationer</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation>Dela yta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation>Gör yta till husrad med %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Skapa relation %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Spara stil för karta</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Merkaartor kartstil (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Ladda kartstil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Format som stödjs</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>GPS utbytesformat (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>OpenStreetMap filformat (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation>OpenStreetMap ändringsformat (*.osc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Noni GPSPlot-format (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>NMEA GPS logg-format (*.nmea, *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>KML-fil (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation>Kommaseparerat format (*.csv) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Geotaggad bild (*jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>ESRI Shapefil (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Merkaartor-dokument (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Väg</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Ladda bild</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation>Lägg till nodposition till bild</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation>Geotagga bild från denna position</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Avbryt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Spara Merkaartor-dokument</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>namnlös</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Merkaartor dokumentfiler (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Alla filer (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Kan inte öppna sparad fil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 kunde inte öppnas för skrivning</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Ogiltig fil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 är inte en giltig Merkaartor-fil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Exportera OSM-format</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>OSM filer (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation>Exportera osmChange</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation>osmChange filer (*.osc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Exportera GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>GPX-filer (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Exportera KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>KML-filer (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Lägg till bokmärke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Ange ett namn för bokmärket</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Ogiltigt namn på bokmärke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Bokmärke kan inte vara tom</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Varning: Bokmärkesnamn finns redan</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Skriv in en ny; behåll samma för att skriva över eller avbryta.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Ta bort bokmärke</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Välj bokmärke att ta bort</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Ogiltig kartprojektion</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Kan inte sätta projektion "%1".</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>GPS-fel</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Kan inte öppna port för GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Öppna NMEA loggfil</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Spara mall för taggar</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Merkaartor taggmallar (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Öppna taggmall</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Hjälp</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Skapa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Väg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>&Redigera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Visa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Bokmärken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Sätt &projektion</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Visa riktnings&pilar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Sätt &ogenomskinlighet för ytor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Fil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Exportera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Öppna &nyligen använd</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Importera nyligen använd</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>Ver&ktyg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Stil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Nod</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>&Fönster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Paneler</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>Tecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation>OpenStreetBugs</translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Lager</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Rel&ation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation>&Visa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>&Avsluta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>&Om</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Öppna</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Skapa ett nytt dokument och importera en fil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Zooma &alla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Zooma &fönster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Zoomfönster</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>Zooma &ut</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Zooma &in</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Zooma in</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Böjd länk</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Ångra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Gör om</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Flytta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Importera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Importera en fil till aktuellt dokument</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Ladda ner</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Ladda ner kartdata för ett nytt område</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Länka</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Skapa länk</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Markera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>Ladda &upp</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Ladda upp ändringar till servern</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>&Ta bort</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Ta bort valda tecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Skapa ny väg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Skapa ny nod</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Ändra riktning</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Vänd riktning på väg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Gå till...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>&Dubbla körbanor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Skapa dubbla körbanor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Skapa rondell</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Ny</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Skapar ett nytt tomt dokument</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Dela</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>splittra väg till separata (förbundna) vägar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Sammanfoga</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Förena sammanhängande vägar till en väg.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>%Slå isär</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Slå isär</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Slå isär sammanhängande vägar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>Re&lation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Skapa relation</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>&Yta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Skapa ny yta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>&Redigera...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Spara...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Ladda...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Böjd väg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Inställningar...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Alla...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Exportera alla synliga lager till en fil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>&Sök...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Sök</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Sök och välj föremål</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Vy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Exportera tecknes i vyn till en fil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Lägg till...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Ta bort...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>&Slå ihop</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Slå ihop noder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>Slå ihop valda noder (första valda blir kvar)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Spara s&om...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Spara</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Spara till fil</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Ladda ner mer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Ladda ner mer kartdata för nuvarande vy</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Ladda ner nuvarande vyn till tidigare nedladdat lager</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Egenskaper</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Dölj/Visa ruta för Egenskaper</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Dölj/Visa ruta för lager</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Information</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Visa/Dölj Inforuta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>&Justera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Rikta in noder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Rikta in valda noder. Första två valda ger linjen.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation>&Sprid</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation>Sprid noder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation>Räta och sprid valda noder lika</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Dölj/Visa ruta för ångra</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Visa &nerladdade ytor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Kopiera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Kopiera valt tecken och taggar till urklipp</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Kopiera valda teckens taggar till urklipp; om tecknet är en spårpunkt, kopiera också koordinaterna.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Klistra in taggar (&Skriv över)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Klistra in (och skriv över) taggar från utklipp till det valda tecknet</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Klistra in taggar (&Slå ihop)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Klistra in taggar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Klistra in taggar från urklipp (Lägg till existerande taggar)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Slå ihop taggar i urklipp med de för den valda tecknet.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Valda...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Ladda ner saknade barn</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Klistra in</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Klistra in tecken från urklipp</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Klistra in tecken till urklipp; Om tecknens id redan finns i dokumentet, skriv över dem.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (binärt)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>Tvinga uppladdning</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Överlämna tecken till skräplagret</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Överlämna det valda tecknet från ett icke-uppladdningsbart lager (t.ex. Spår eller Extract) till skräplagret, redo för uppladdning</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Visa eller dölj verktygsraden</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Dölj/Visa verktygsrad</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Dölj alla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Visa alla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>&Bildlager</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation>Visa &noder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation>Visa na&mn</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation>&Redigera WMS servrar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation>Redigera &TMS servrar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation>&Dela upp</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation>Dela upp segment lika</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation>Dela upp vald vägavsnitt (vägen och två närliggande noder) i segment med lika längd</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation>För&enkla</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation>Förenkla väg(ar)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation>Förenkla väg genom att ta bort onödiga delnoder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation>&Filter-redigerare</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation>I&nga</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation>&Dela yta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation>Dela yta mellan två noder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation>&Terrass</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation>Dela vald yta i "terrasserade" tomter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation>Redigera verktygsfält...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation>&Rasterbild/SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation>Huvudverktygsrad</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Starta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Starta GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>&Spela om</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Återspela GPS-spår</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Dölj/Visa GPS-ruta</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>S&toppa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Stoppa GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Centrera på GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Visa spår&segment</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Visa &skala</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Visa &relationer</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Visa vägbakgrunder</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Visa vägkanter</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Visa försköning</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Spela in</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Spela in GPS-spår</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Pausa</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Pausa GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eorefererad bild</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Dölj/Visa ruta för geotaggning</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>World OSB hanterare</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Genvägsredigerare...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>&Slå ihop...</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Lägg till medlem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Ta bort medlem</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>A&ldrig</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>för &enkelriktade vägar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&Alltid</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Koppla loss</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Lösgör nod från en väg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Lösgör en nod från en väg</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Arbeta nedkopplad</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>SVG</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Stilar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Dölj/Visa ruta för stilar</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>GPS-meny</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Kamera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Skapa &knutpunkt</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Rotera</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Klistra in tecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Tecken</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>Lägg till &gatunummer (Karlsruheschema)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation>Visa lat/lon &grid</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation>&Lås zoomning till rutad bakgrund</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation>Redigering av &Projektioner</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation>Visa &foton på kartan</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation>OsmChange (OSC)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation>Tvinga radering</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Stäng</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Relation modifierad %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Ta bart barn</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Olösta konflikter</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Lös först alla konflikter</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Det är starkt rekommenderat att spara dina ändringar i dokumentet efter en uppladdning. Vill du göra detta nu?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Sätt taggar på flera tecken</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Sätt taggar för %1</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Visa &virtuella noder</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation>Rensa %1 taggar på %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation>Ändra ordning på medlemmar till relation %1</translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation><i>V: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>sista: </i><b>%1</b> av <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>sista: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation><br/><i>lager: </i><b>%1</b&gt; </translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>storlek</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation>medlemmar</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Övre vänster</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Nedhöger</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Relation</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Roll</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Medlem</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Längd</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Storlek</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>%1 noder</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Väg</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Yta</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>koord</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>höjd</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>hastighet</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>beskrivning</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>kommentar</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Vägpunkt</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Nod</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 m</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation>Vy</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Projektion</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Nytt bokmärke</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Uppladdning av inställningar misslyckades</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Duplicera nyckel</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Mer än 150 preferenser</translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Ny server</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Taggar</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Valda objekt</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Namn</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Okänt fält</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Fel!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Värd för namnsöksservice hittades inte</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Värd för namnsöksservice nekar anslutning</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Namnsöksservice kräver autentisering</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Okänt fel.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Formulär</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Utdatafilnamn</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>namnlös</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Alla filer (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Bildfil (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>SVG-filer (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation>Raster/SVG export</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>min lat/long</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>max. lat/long</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Visa skala</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Användare:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Alltid</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Välj färg</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Redigerare för kartstil</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Global</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Bakgrund</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation>Filter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Lägg till</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Ta bort</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Duplicera</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Taggurval</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>meter/bildpunkter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Synligt upp till</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Synligt från skala</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Rita med färg</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Propertionell tjocklek</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>fast tjocklek</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Streckad</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>av</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Fyll yta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Kanter</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Försköning</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Rita trappsteg</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Rita ikon</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Etikett</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Teckensnitt</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Etikett tagg</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Halo</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Yta</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Rita med bakgrundsfärg</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Etikett med bakgrundstagg</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation>Ingen giltig geotagg</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>Textetikett</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation>Ladda utan associerad nod</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation>Hämta info från streckkod (Walking Papers)</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation>Ignorera</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation>Utför för alla nuvarande foton</translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Utdatafilnamn</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>SVG-filer (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>namnlös</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Alla filer (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Bildfil (*.png, *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialogruta</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>Engelska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabiska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Tjeckiska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>Tyska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>Franska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation>Ungerska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italienska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation>Brasiliansk portugisiska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Ryska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Mapp för anpassade stilar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Taggmall</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Merkaartor taggmall (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Välj färg</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Verktyg finns redan</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Ett verktyg med det här namnet finns redan. Välj ett annat namn eller klicka på <Apply> knappen om du vill ändra den nuvarande.</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Kan inte ta bort snabbväljare</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Kan inte ta bort snabbväljare "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Kan inte modifiera snabbväljares namn</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Kan inte modifiera snabbväljare "%1"s namn</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Välj verktyg körbar fil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Välj mapp för logg</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Inställningar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Språkanpassning</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Du kanske måste starta om programmet för att ändringarna ska träda i kraft</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Använd språk</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Översätt standardtaggar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Visuell</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Allmänt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Zooma ut/in (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Ogenomskinlighet låg/hög</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Enkel musknapp interakton</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Använd skräddarsydd Qt-stil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Färger</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Bakgrund</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Skriv över stil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Sväva</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Bildpunkter</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Framhäva</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Fokusera</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Relationer</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>GPX-spår</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Använd förenklad GPX-spår visning</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Kartstil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Aktuell stil</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Avaktivera stilar för spårlager</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Mall</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Inbyggd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Anpassad</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Data</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Lösenord:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Dokument</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation>URL:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Autospara dokument efter uppladdning</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Spår</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Ta automatiskt fram spår när öppnas</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Lager för spår skrivskyddad som förvalt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Förbind inte GPX-noder separerade mer än så här (i km; 0 för att avaktivera)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Spara NMEA-logg</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Sätt systemtid till GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Nätverk</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Proxyinställningar</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Använd proxy</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Användare:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Port:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Värd:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation>Aktivera JOSM-kompatibel lokal server på port 8111</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Bakgrundsbild</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Cachning av rutor (inte aktivt för Yahoo! pga legala hinder)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Cache-mapp</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Storlek på cache (i Mb; 0 för att avaktivera)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Kartanpassning</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Verktyg</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Namn:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Sökväg:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Verkställ</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Lägg till</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Ta bort</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation>gpsd</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Värdnamn:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Använd virtuella noder (ny session krävs)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Nederländska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Portugisiska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Slovakiska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Spanska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Svenska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Ukrainska</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Relationer valbara när de är gömda</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Gränssnitt</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation>Inställning av projektioner</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation>Projektioner</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation>Projektionslista:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Namn:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation>PROJ4 textsträng</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Verkställ</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Lägg till</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Ta bort</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Dialogruta</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Egenskaper</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>%1/%1 valda objekt</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>%1/%2 valda objekt</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Valda objekt</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Egenskaper - Flera element</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Egenskaper - Väg</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Egenskaper - Relation</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Egenskaper</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Centrera karta</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Centrera && Zooma karta</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Välj medlem</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Egenskaper - Nod</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Avbryt</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Kaskadrensning</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Sätt Tagg '%1=%2' för %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Rensa tagg '%1' från %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Flytta nod %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation>Importera osmChange</translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Importera NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Importera NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Ogiltig</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>meter</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>km/h</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Otillgänglig</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Fel på GPS-logg</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Kan inte skapa GPS-loggfil: %1</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation>Kan inte koppla upp till %1: %2</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Fel på GPS-logg</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Kan inte skapa GPS-loggfil: %1</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>Textetikett</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99''</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Longitud</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Altitud</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 meter</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation># satelliter</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Fixa typ</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Ogiltig</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Hastighet</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 km/h</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Latitud</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Inte en riktig resultatström</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation>Verktygsfält</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation>Ny</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Ta bort</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation>Byt namn</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation>Återställ alla</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Verkställ</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Avbryt</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation>Upp</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation><-</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation>-></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation>Ner</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Medlemmar</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Taggar</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Taggar</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Inga satelliter</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Urval</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Tangent</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Värde</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Namn</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation>Fråga</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Återställ vy</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Stäng</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Stilar</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Stilar</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Ladda upp till OpenStreetMap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Skriv in en kommentar för detta ändringsset</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Granska nogrannt alla ändringar du skickar till OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>OK</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Avbryt</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>TMS-servrar inställningar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>TMS-servrar</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serverlista:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Namn:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL till server:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation>Hämta tjänster</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation>Tjänster :</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Projektion:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation>Mercator (EPSG:900913)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation>Lat/Lon (EPSG:4326)</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation>Referenspunkt är nedre vänster</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Verkställ</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Lägg till</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Ta bort</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Adress och sökväg kan inte lämnas tomma</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Nerladdning misslyckades: %1</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation>Problem med att läsa tjänster. </translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Tangent</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Värde</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Ändra detta för att lägga till...</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Formulär</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation>ELLER</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation>OCH</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation>INTE</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation>är</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation>ärenav</translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Odefinierat</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Odefinierat</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation>Husrad</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation>Ingen husnumrering</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation>Antal hus</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation>Lägg till husnumrering</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation>Intervall</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation>Till exempel "1-9;15-17;19;19A"</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation>Mönster</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation>Alla nummer</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation>Udda nummer</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation>Jämna nummer</translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation># av spårsegment</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Totalt avstånd:</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 km</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Total varaktighet</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1:%2</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Extrahera - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Extrahera ritlager</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Zooma</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Stäng</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Spårpunkt</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Latitud</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Longitud</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Id</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Taggar</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Dialogruta</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Webbsida</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Lösenord</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Användarnamn</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Använd proxy</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Port</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Zooma</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Töm</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: GetCapabilites</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Adress och sökväg kan inte lämnas tomma</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Nerladdning misslyckades: %1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Fel vid läsning av möjligheter. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Ställ in WMS-servrar</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Server för WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Serverlista:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Namn:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>URL till server:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Lager:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Projektion:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation>Zoom-nivåer</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Stilar:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Verkställ</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Lägg till</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Ta bort</translation> </message> </context> </TS> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/translations/merkaartor_uk.ts�����������������������������������������������������0000664�0000000�0000000�00001143304�11770671653�0021732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0" language="uk"> <context> <name>AboutDialog</name> <message> <location filename="../src/common/AboutDialog.ui" line="14"/> <source>About Merkaartor</source> <translation>Про програму Merkaartor</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="30"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-style:italic;">Merkaartor version</span><span style=" font-size:8pt;"> </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:small; font-weight:600;">%1%2(%3)</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="42"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-style:italic;">QT version</span> </p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:small;"><span style=" font-weight:600;">%1</span> (built with <span style=" font-weight:600;">%2</span>)</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="54"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Boost version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="65"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">PROJ4 version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="76"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-size:small; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">GDAL version</span><br /><span style=" font-weight:600;">%1</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="114"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="123"/> <source>Copyright Bart Vanhauwaert, Chris Browet and others, 2006-2012</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="130"/> <source>This program is licensed under the GNU Public License v2</source> <translation>Ця програма ліцензована на умовах GNU Public License v2</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="137"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://merkaartor.be"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://merkaartor.be</span></a></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="157"/> <source>Changelog</source> <translation>Перелік змін</translation> </message> <message> <location filename="../src/common/AboutDialog.ui" line="200"/> <source>OK</source> <translation>Так</translation> </message> </context> <context> <name>ActionsDialog</name> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Description</source> <translation>Опис</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="20"/> <source>Shortcut</source> <translation>Комбінації клавіш</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="41"/> <source>&Import</source> <translation>&Імпортувати</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="42"/> <source>&Export</source> <translation>&Експорт</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="43"/> <source>&Default</source> <translation>За&звичай</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="44"/> <source>&OK</source> <translation>&Так</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="45"/> <source>&Cancel</source> <translation>&Відміна</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="72"/> <source>Shortcut Editor</source> <translation>Редактор комбінацій клавіш</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <source>Load Shortcut scheme</source> <translation>Завантажити схеми комбінацій клавіш</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="116"/> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Merkaartor shortcut scheme (*.mss)</source> <translation>Схеми комбінацій клавіш Merkaartor (*.mss)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>Unable to open file</source> <translation>Неможливо відкрити файл</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="120"/> <source>%1 could not be opened.</source> <translation>%1 неможливо відкрити.</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>Save Shortcut scheme</source> <translation>Зберегти схему комбінації клавіш</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>untitled</source> <translation>без назви</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="143"/> <source>All Files (*)</source> <translation>Всі файли (*)</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>Unable to open save file</source> <translation>Неможливо відкрити збережений файл</translation> </message> <message> <location filename="../src/Tools/ActionsDialog.cpp" line="159"/> <source>%1 could not be opened for writing.</source> <translation>%1 неможливо відкрити для запису.</translation> </message> </context> <context> <name>Command</name> <message> <location filename="../src/Commands/Command.cpp" line="25"/> <source>No description</source> <translation>Немає опису</translation> </message> </context> <context> <name>CreateDoubleWayDock</name> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="13"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Правосторонній рух</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayDock.ui" line="40"/> <source>Distance between two roads</source> <translation>Відстань між двома дорогами</translation> </message> </context> <context> <name>CreateRoundaboutDock</name> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="13"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutDock.ui" line="25"/> <source>Driving at the right side of the road</source> <translation>Правосторонній рух</translation> </message> </context> <context> <name>DirtyDock</name> <message> <location filename="../src/Docks/DirtyDock.cpp" line="67"/> <source>There is <b>no</b> dirty object</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="70"/> <source>There is <b>one</b> dirty object</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> <location filename="../src/Docks/DirtyDock.cpp" line="74"/> <source>There are <b>%n</b> dirty objects</source> <translation type="unfinished"> <numerusform></numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="194"/> <source>Undo</source> <translation>Відмінити</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="195"/> <source>Center map</source> <translation>Центрувати мапу</translation> </message> <message> <location filename="../src/Docks/DirtyDock.cpp" line="196"/> <source>Center && Zoom map</source> <translation>Центрувати та масштабувати мапу</translation> </message> </context> <context> <name>DirtyDockWidget</name> <message> <location filename="../src/Docks/DirtyDock.ui" line="14"/> <source>Undo</source> <translation>Відмінити</translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="37"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">There is <span style=" font-weight:600;">no</span> dirty object</p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/DirtyDock.ui" line="60"/> <source>Cleanup</source> <translation>Очистити</translation> </message> </context> <context> <name>DirtyLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="641"/> <source>Zoom</source> <translation>Масштаб</translation> </message> </context> <context> <name>DirtyListExecutor</name> <message> <location filename="../src/Sync/DirtyList.cpp" line="326"/> <location filename="../src/Sync/DirtyList.cpp" line="570"/> <source>ADD road %1</source> <translation>ДОДАНО дорогу %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="334"/> <location filename="../src/Sync/DirtyList.cpp" line="604"/> <source>ADD trackpoint %1</source> <translation>ДОДАНО точку шляху %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="342"/> <location filename="../src/Sync/DirtyList.cpp" line="537"/> <source>ADD relation %1</source> <translation>ДОДАНО відношення %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="350"/> <location filename="../src/Sync/DirtyList.cpp" line="701"/> <source>UPDATE trackpoint %1</source> <translation>ОНОВЛЕНО точку шляху %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="358"/> <location filename="../src/Sync/DirtyList.cpp" line="639"/> <source>UPDATE relation %1</source> <translation>ОНОВЛЕНО відношення %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="366"/> <location filename="../src/Sync/DirtyList.cpp" line="670"/> <source>UPDATE road %1</source> <translation>ОНОВЛЕНО дорогу %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="374"/> <location filename="../src/Sync/DirtyList.cpp" line="734"/> <source>REMOVE trackpoint %1</source> <translation>ВИЛУЧЕНО точку шляху %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="382"/> <location filename="../src/Sync/DirtyList.cpp" line="761"/> <source>REMOVE road %1</source> <translation>ВИЛУЧЕНО дорогу %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="390"/> <location filename="../src/Sync/DirtyList.cpp" line="788"/> <source>REMOVE relation %1</source> <translation>ВИЛУЧЕНО відношення %1</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="423"/> <location filename="../src/Sync/DirtyList.cpp" line="430"/> <location filename="../src/Sync/DirtyList.cpp" line="446"/> <source>Error uploading request</source> <translation>Помилка запиту надсилання даних</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="424"/> <source>Please check your username and password in the Preferences menu</source> <translation>Будь ласка, перевірте ваш логін та пароль в меню Параметри</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="427"/> <location filename="../src/Sync/DirtyList.cpp" line="447"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Помилка запиту на надсилання даних: (%1) Повідомлення сервера: '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="429"/> <source> API message is '%1'</source> <translation> повідомлення API: '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="464"/> <source>Uploading changes...</source> <translation>Надсилання змін…</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="490"/> <source>OPEN changeset</source> <translation>ВІДКРИВАЮ набір змін</translation> </message> <message> <location filename="../src/Sync/DirtyList.cpp" line="517"/> <source>CLOSE changeset</source> <translation>ЗАКРИВАЮ набір змін</translation> </message> </context> <context> <name>DirtyListExecutorOSC</name> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="64"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="71"/> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="85"/> <source>Error uploading request</source> <translation>Помилка запиту надсилання даних</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="65"/> <source>Please check your username and password in the Preferences menu</source> <translation>Будь ласка, перевірте ваш логін та пароль в меню Параметри</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="68"/> <source>There was an error uploading this request (%1) Server message is '%2'</source> <translation>Помилка запиту на надсилання даних: (%1) Повідомлення сервера: '%2'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="70"/> <source> API message is '%1'</source> <translation> повідомлення API: '%1'</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="86"/> <source>There was an error uploading this request (%1) "%2" Please redownload the problematic feature to handle the conflict.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="102"/> <source>Checking changes...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="184"/> <source>OPEN changeset</source> <translation>ВІДКРИВАЮ набір змін</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="301"/> <source>CLOSE changeset</source> <translation>ЗАКРИВАЮ набір змін</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="354"/> <source>ADD relation %1</source> <translation>ДОДАНО відношення %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="368"/> <source>ADD road %1</source> <translation>ДОДАНО дорогу %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="383"/> <source>ADD trackpoint %1</source> <translation>ДОДАНО точку шляху %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="399"/> <source>UPDATE relation %1</source> <translation>ОНОВЛЕНО відношення %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="414"/> <source>UPDATE road %1</source> <translation>ОНОВЛЕНО дорогу %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="428"/> <source>UPDATE trackpoint %1</source> <translation>ОНОВЛЕНО точку шляху %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="442"/> <source>REMOVE trackpoint %1</source> <translation>ВИЛУЧЕНО точку шляху %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="456"/> <source>REMOVE road %1</source> <translation>ВИЛУЧЕНО дорогу %1</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="470"/> <source>REMOVE relation %1</source> <translation>ВИЛУЧЕНО відношення %1</translation> </message> </context> <context> <name>Document</name> <message> <location filename="../src/common/Document.cpp" line="88"/> <location filename="../src/common/Document.cpp" line="100"/> <location filename="../src/common/Document.cpp" line="110"/> <source>untitled</source> <translation>без назви</translation> </message> <message> <location filename="../src/common/Document.cpp" line="152"/> <location filename="../src/common/Document.cpp" line="480"/> <source>Dirty layer</source> <translation>Шар чернетки</translation> </message> <message> <location filename="../src/common/Document.cpp" line="155"/> <source>Uploaded layer</source> <translation>Надісланий шар</translation> </message> <message> <location filename="../src/common/Document.cpp" line="352"/> <source>Background imagery</source> <translation>Фонове зображення</translation> </message> <message> <location filename="../src/common/Document.cpp" line="369"/> <source>Drawing layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="378"/> <source>Filter layer #%1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="572"/> <source>OSM Export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="582"/> <source>Exporting OSM...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="878"/> <source>Document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1215"/> <source>History rebuild: Create node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1221"/> <source>History rebuild: Update node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1227"/> <source>History rebuild: Delete node %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1233"/> <source>History rebuild: Create way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1239"/> <source>History rebuild: Update way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1245"/> <source>History rebuild: Delete way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1251"/> <source>History rebuild: Create relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1257"/> <source>History rebuild: Update relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/Document.cpp" line="1263"/> <source>History rebuild: Delete relation %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DownloadMapDialog</name> <message> <location filename="../src/common/DownloadMapDialog.ui" line="14"/> <source>Download</source> <translation>Завантажити</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="32"/> <source>Location</source> <translation>Місце знаходження</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="40"/> <source>Bookmark</source> <translation>Закладка</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="62"/> <source>Current view</source> <translation>Поточний вид</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="74"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="88"/> <source>Xapi selector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="100"/> <source>From the map below (map provided by the OpenStreetMap project)</source> <translation>З мапи нижче (мапу надано проектом OpenStreetMap)</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="112"/> <source>Also download raw GPS tracks</source> <translation>Завантажити необроблені треки GPS</translation> </message> <message> <location filename="../src/common/DownloadMapDialog.ui" line="119"/> <source>Resolve all relations</source> <translation>Розв’язати усі відношення</translation> </message> </context> <context> <name>Downloader</name> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="492"/> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <location filename="../src/Sync/DownloadOSM.cpp" line="504"/> <source>Download failed</source> <translation>Невдача завантаження</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="200"/> <source>error</source> <translation>помилка</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="204"/> <source>didn't download enough</source> <translation>недостатньо завантажено</translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="331"/> <source>Downloading from OSM (%n bytes)</source> <translation type="unfinished"> <numerusform>Завантаження з OSM (%n байт)</numerusform> <numerusform>Завантаження з OSM (%n байти)</numerusform> <numerusform>Завантаження з OSM (%n байтів)</numerusform> </translation> </message> <message numerus="yes"> <location filename="../src/Sync/DownloadOSM.cpp" line="333"/> <source>Downloading from OSM (%n kBytes)</source> <translation type="unfinished"> <numerusform>Завантаження з OSM (%n Кбайт)</numerusform> <numerusform>Завантаження з OSM (%n Кбайти)</numerusform> <numerusform>Завантаження з OSM (%n Кбайтів)</numerusform> </translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="449"/> <source>Downloading...</source> <translation>Завантаження…</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="459"/> <source>Downloading from OSM (connecting)</source> <translation>Завантаження з OSM (з’єднуємось з сервером)</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="489"/> <location filename="../src/Sync/DownloadOSM.cpp" line="501"/> <source>Unexpected http status code (%1) Server message is '%2'</source> <translation>Неочікуваний код статусу http (%1) Відповідь сервера '%2'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="491"/> <location filename="../src/Sync/DownloadOSM.cpp" line="503"/> <source> API message is '%1'</source> <translation> повідомлення API: '%1'</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="498"/> <source>Username/password invalid</source> <translation>Хибні логін/пароль</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Unresolved conflicts</source> <translation>Нерозв’язувані конфлікти</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="516"/> <source>Please resolve existing conflicts first</source> <translation>Будь ласка, розв’яжіть поточні конфлікти</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="667"/> <source>MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="728"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="690"/> <location filename="../src/Sync/DownloadOSM.cpp" line="752"/> <source>Downloading points</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="454"/> <location filename="../src/Sync/DownloadOSM.cpp" line="539"/> <location filename="../src/Sync/DownloadOSM.cpp" line="677"/> <location filename="../src/Sync/DownloadOSM.cpp" line="739"/> <source>Parsing...</source> <translation>Обробка…</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="460"/> <location filename="../src/Sync/DownloadOSM.cpp" line="546"/> <location filename="../src/Sync/DownloadOSM.cpp" line="684"/> <location filename="../src/Sync/DownloadOSM.cpp" line="746"/> <source>Parsing XML</source> <translation>Обробка XML</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="554"/> <source>Downloading trackpoints %1-%2</source> <translation>Завантажуються точки треку %1-%2</translation> </message> <message> <location filename="../src/Sync/DownloadOSM.cpp" line="573"/> <source>Downloaded track - nodes %1-%2</source> <translation>Завантажений трек - точки %1-%2</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="63"/> <location filename="../src/Sync/DownloadOSM.cpp" line="613"/> <location filename="../src/Sync/DownloadOSM.cpp" line="779"/> <location filename="../src/Sync/DownloadOSM.cpp" line="901"/> <source>%1 download</source> <translation>%1 завантажено</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="334"/> <source>Downloading unresolved...</source> <translation>Завантаження нерозв’язуваних елементів…</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="341"/> <source>Downloading unresolved %1 of %2</source> <translation>Завантажується нерозв’язуваний елемент %1 з %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="350"/> <source>Parsing unresolved %1 of %2</source> <translation>Обробка: нерозв’язуваний елемент %1 з %2</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="468"/> <source>Conflicts from %1</source> <translation>Конфлікт з %1</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="559"/> <source>Conflicts have been detected</source> <translation>Виявлено конфлікти</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="560"/> <source>This means that some of the feature you modified since your last download have since been modified by someone else on the server. The features have been duplicated as "conflict_..." on the "Conflicts..." layer. Before being able to upload your changes, you will have to manually merge the two versions and remove the one from the "Conflicts..." layer.</source> <translation>Це значить , що для частини елементів, які ви змінили з моменту останнього завантаження хтось запровадив зміни на сервері. Елементи продубльовані у шарі "Конфлікти" як "conflict_…". Для того, щоб отримати можливість надіслати ваші зміни до сервера, вам потрібно власноруч об’єднати обидві версії та вилучити одну з них з шару "Конфлікти".</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="538"/> <source>Empty roads/relations detected</source> <translation>Знайдено порожні дороги/відношення</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="539"/> <source>Empty roads/relations are probably errors. Do you want to mark them for deletion?</source> <translation>Порожні дороги/відношення, можливо помилка. Бажаєте позначити їх для вилучення?</translation> </message> <message> <location filename="../src/ImportExport/ImportOSM.cpp" line="547"/> <source>Remove empty feature %1</source> <translation>Вилучення порожнього елементу %1</translation> </message> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="69"/> <source>Downloading %1,%2 (zoom %3)...</source> <translation>Завантажується %1,%2 (масштаб %3)…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="141"/> <source>Uploading...</source> <translation>Відправка…</translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="166"/> <source>Preparing changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Sync/DirtyListExecutorOSC.cpp" line="168"/> <source>Waiting for server response</source> <translation type="unfinished"></translation> </message> </context> <context> <name>DrawingLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="305"/> <source>Close</source> <translation>Закрити</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="300"/> <source>Zoom</source> <translation>Масштаб</translation> </message> </context> <context> <name>EditInteraction</name> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="277"/> <source>Cannot delete the selection because it is outside the downloaded area.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="280"/> <source>Cannot delete everything</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="281"/> <source>The complete selection cannot be deleted because part of it is outside the downloaded area. Delete what can be?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse way %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="326"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ExportDialog</name> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="13"/> <source>Export</source> <translation>Експорт</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="25"/> <source>What do you want to export?</source> <translation>Що експортувати?</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="38"/> <source>All visible (i.e. not hidden)</source> <translation>Все що видно (тобто не сховане)</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="45"/> <source>Viewport</source> <translation>Вміст екрану</translation> </message> <message> <location filename="../src/ImportExport/ExportDialog.ui" line="52"/> <source>Selected</source> <translation>Виділене</translation> </message> </context> <context> <name>FeaturesDock</name> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="430"/> <source>Features</source> <translation>Елементи</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="431"/> <source>Center map</source> <translation>Центрувати мапу</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="432"/> <source>Center && Zoom map</source> <translation>Центрувати та масштабувати мапу</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="433"/> <source>Download missing children</source> <translation>Завантажити відсутніх нащадків</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="434"/> <source>Add to selection</source> <translation>Додати до виділення</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="435"/> <source>Delete</source> <translation>Вилучити</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="442"/> <source>Relations</source> <translation>Відношення</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="443"/> <source>Roads</source> <translation>Дороги</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="444"/> <source>POI's</source> <translation>Об’єкти</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.cpp" line="445"/> <source>All</source> <translation>Всі</translation> </message> </context> <context> <name>FeaturesDockWidget</name> <message> <location filename="../src/Docks/FeaturesDock.ui" line="14"/> <source>Features</source> <translation>Елементи</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="72"/> <source>Only features fully within the viewport</source> <translation>Тільки елементи з екрану</translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="101"/> <source>Find...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/FeaturesDock.ui" line="108"/> <source>Reset</source> <translation type="unfinished"></translation> </message> </context> <context> <name>FilterEditDialog</name> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="14"/> <source>Dialog</source> <translation>Надсилання змін</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="20"/> <source>Name</source> <translation>Назва</translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="30"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/FilterEditDialog.ui" line="42"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>FilterLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="688"/> <source>Close</source> <translation>Закрити</translation> </message> </context> <context> <name>FilterPreferencesDialog</name> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="14"/> <source>Filters setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="20"/> <source>Filters</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="47"/> <source>Filter list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Назва:</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="93"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Застосувати</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Додати</translation> </message> <message> <location filename="../src/Preferences/FilterPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Вилучити</translation> </message> </context> <context> <name>GeoImageDock</name> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="86"/> <location filename="../src/Docks/GeoImageDock.cpp" line="970"/> <source>Geo Images</source> <translation>Гео-зображення</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="96"/> <location filename="../src/Docks/GeoImageDock.cpp" line="972"/> <source>Remove Images</source> <translation>Вилучити зображення</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="97"/> <location filename="../src/Docks/GeoImageDock.cpp" line="973"/> <source>Copy filename to clipboard</source> <translation>Копіювати ім’я файлу до буферу обміну</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="98"/> <location filename="../src/Docks/GeoImageDock.cpp" line="974"/> <source>Select next image</source> <translation>Вибрати наступне зображення</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="99"/> <source>PgDown</source> <translation>PgDown</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="101"/> <location filename="../src/Docks/GeoImageDock.cpp" line="975"/> <source>Select previous image</source> <translation>Вибрати попереднє зображення</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="102"/> <source>PgUp</source> <translation>PgUp</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="356"/> <location filename="../src/Docks/GeoImageDock.cpp" line="482"/> <source>Load geotagged Images</source> <translation>Завантажити зображення з гео-позначками</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="357"/> <location filename="../src/Docks/GeoImageDock.cpp" line="483"/> <source>Select the layer to which the images belong:</source> <translation>Оберіть шар до якого належать зображення:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Loading Images ...</source> <translation>Завантаження зображень:…</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="504"/> <source>Abort loading</source> <translation>Скасування завантаження</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>No such file</source> <translation>Немає такого файлу</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="516"/> <source>Can't find image "%1".</source> <translation>Неможливо знайти зображення "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Exiv2</source> <translation>Exiv2</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="524"/> <source>Error while opening "%2": %1</source> <translation>Помилка відкриття "%2": %1</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="526"/> <location filename="../src/Docks/GeoImageDock.cpp" line="918"/> <source>Error while loading EXIF-data from "%1".</source> <translation>Помилка завантаження EXIF-даних з "%1".</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="51"/> <source>Cannot read the photo's details from the Walking Papers server.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="71"/> <source>Please specify Walking Papers URL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="72"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="94"/> <location filename="../src/Docks/GeoImageDock.cpp" line="971"/> <source>Center map</source> <translation>Центрувати мапу</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="95"/> <source>c</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="104"/> <location filename="../src/Docks/GeoImageDock.cpp" line="976"/> <source>Save geotagged image...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="312"/> <location filename="../src/Docks/GeoImageDock.cpp" line="438"/> <source>Photo layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="370"/> <location filename="../src/Docks/GeoImageDock.cpp" line="496"/> <source>Layer is read-only</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="371"/> <location filename="../src/Docks/GeoImageDock.cpp" line="497"/> <source>The used layer is not writeable. Should it be made writeable? If not, you can't load images that belong to it.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="699"/> <source>Specify offset</source> <translation>Вкажіть координати</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="701"/> <source>Position images more to the:</source> <translation>Координати зображення більші за:</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="702"/> <source>end of the track</source> <translation>кінець треку</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="703"/> <source>beginning of the track</source> <translation>початок треку</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="707"/> <source>hh:mm:ss</source> <translation>гг:хх:сс</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints</source> <translation>Точки треку відсутні</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="765"/> <source>No TrackPoints found for image "%1"</source> <translation>Точки треку для зображення "%1" відсутні</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="772"/> <source>ss 'seconds'</source> <translation>сс 'секунд’</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="774"/> <source>mm 'minutes and' ss 'seconds'</source> <translation>хх 'хвилин’ та сс 'секунд’</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="776"/> <source>hh 'hours,' mm 'minutes and' ss 'seconds'</source> <translation>гг 'годин’, хх 'хвилин’ та сс 'секунд’</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="777"/> <source>Wrong image?</source> <translation>Помилкове зображення?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="778"/> <source>Image "%1" was taken %2 before the next trackpoint was recorded. Do you still want to use it?</source> <translation>Зображення "%1" отримане %2 до того як була записана подальша точка шляху. Ви бажаєте застосувати його?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="779"/> <source>Image "%1" was taken %2 after the last trackpoint was recorded. Do you still want to use it?</source> <translation>Зображення "%1" отримане %2 після того як була записана остання точка шляху. Ви бажаєте застосувати його?</translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>JPEG Images (*.jpg)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="832"/> <source>Specify output filename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/GeoImageDock.cpp" line="914"/> <source>Error while opening "%1": %2</source> <translation>Помилка відкриття "%1": %2</translation> </message> </context> <context> <name>GotoDialog</name> <message> <location filename="../src/common/GotoDialog.cpp" line="97"/> <source>Invalid OSM url</source> <translation>Хибний OSM url</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="98"/> <source>The specified url is invalid!</source> <translation>Вказаний url — хибний!</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="106"/> <location filename="../src/common/GotoDialog.cpp" line="117"/> <source>Invalid Coordinates format</source> <translation>Хибний формат координат</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="107"/> <source>Coordinates must be: '<left lon>, <bottom lat>, <right lon>, <top lat>'</source> <translation>Координати задаються рядком: '<left lon>, <bottom lat>, <right lon>, <top lat>'</translation> </message> <message> <location filename="../src/common/GotoDialog.cpp" line="118"/> <source>Coordinates must be: '<center lat>, <center lon>, <span lat>, <span lon>'</source> <translation>Координати задаються рядком: '<center lat>, <center lon>, <span lat>, <span lon>'</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="14"/> <source>Go To</source> <translation>Перейти до</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="28"/> <source>Bookmark</source> <translation>Закладка</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="61"/> <source>WWW link (OSM/Google maps)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="80"/> <source>Coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="92"/> <source>Show projected</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="107"/> <source>lonMin, latMin, lonMax, latMax</source> <translation>довМін, ширМін, довМакс, ширМакс</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="134"/> <source>latCent, lonCent, latSpan, lonSpan</source> <translation>ширЦ-р, довЦ-р, ширВідст, довВідст</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="156"/> <source>Info</source> <translation>Інформація</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="176"/> <source>OSM API Url</source> <translation>OSM API Url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="203"/> <source>OSM XAPI url</source> <translation>OSM XAPI url</translation> </message> <message> <location filename="../src/common/GotoDialog.ui" line="225"/> <location filename="../src/common/GotoDialog.ui" line="244"/> <source>Search</source> <translation>Пошук</translation> </message> </context> <context> <name>ImageLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="317"/> <source>None</source> <translation>Немає</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="324"/> <source>Shape adapter</source> <translation>Адаптер форм</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="407"/> <source>Zoom</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="414"/> <source>Set view projection to layer's</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="419"/> <source>Reset alignment adjustment</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="424"/> <source>Close</source> <translation>Закрити</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="432"/> <source>WMS adapter</source> <translation>WMS адаптер</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="448"/> <source>TMS adapter</source> <translation>TMS адаптер</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="464"/> <source>Plugins</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImageMapLayer</name> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="86"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="179"/> <location filename="../src/Layers/ImageMapLayer.cpp" line="303"/> <source>Map - None</source> <translation>Мапа - Немає</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="214"/> <source>Map - WMS - %1</source> <translation>Мапа - WMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="219"/> <source>Map - WMS-C - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="224"/> <source>Map - WMS-Tiled - %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="240"/> <source>Map - TMS - %1</source> <translation>Мапа - TMS - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="252"/> <source>Map - %1</source> <translation>Мапа - %1</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="277"/> <source>Licensing Terms: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>License Terms not accepted</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="284"/> <source>You have not ticked the checkbox expressing your agreement with the licensing terms. As such, you won't be able to use this source as a map layer. Is it really what you meant?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1043"/> <source>Server</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1046"/> <source>Tile size</source> <translation>Розмір частин</translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1048"/> <source>Min/Max zoom</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/ImageMapLayer.cpp" line="1052"/> <source>Projection</source> <translation>Проекція</translation> </message> </context> <context> <name>ImportCSVDialog</name> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="32"/> <source>String</source> <translation>Рядок</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="33"/> <source>Integer</source> <translation>Ціле число</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="34"/> <source>Float</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="35"/> <source>Longitude</source> <translation>Довгота</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="36"/> <source>Latitude</source> <translation>Широта</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Invalid projection</source> <translation>Помилкова проекція</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="376"/> <source>Unable to set projection.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="395"/> <source>No coordinates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="396"/> <source>Latitude or Longitude field missing. It will be impossible to import the file. Do you really want to exit?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <source>Load CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="433"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Merkaartor import settings (*.mis)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>Invalid file</source> <translation>Хибний файл</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="439"/> <source>%1 could not be opened.</source> <translation>%1 неможливо відкрити.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="452"/> <source>%1 is not a CSV import settings file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>Save CSV import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>untitled</source> <translation>без назви</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="544"/> <source>All Files (*)</source> <translation>Всі файли (*)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>Unable to open save import settings</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.cpp" line="560"/> <source>%1 could not be opened for writing.</source> <translation>%1 неможливо відкрити для запису.</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="14"/> <source>Dialog</source> <translation>Надсилання змін</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="26"/> <source>Input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="55"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Courier New'; font-size:9pt; font-weight:400; font-style:normal;"> <table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4</span></p></td></tr></table></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="75"/> <source>OSM Preview</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="93"/> <source>Specifications</source> <translation>Специфікації</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="105"/> <source>First line contains headers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="112"/> <source>Delimiter</source> <translation>Розділювач</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="124"/> <source>Colon (,)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="131"/> <source>Semicolon (;)</source> <translation>Крапка з комою (;)</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="138"/> <source>Tab</source> <translation>Табуляція</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="145"/> <source>Other:</source> <translation>Інше:</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="171"/> <source>String Quote</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="177"/> <source>None</source> <translation>Немає</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="184"/> <source>Single quote (')</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="191"/> <source>Double quote (")</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="214"/> <source>Projection (in PROJ4 format; leave blank for latitude/longitude)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="227"/> <source>Fields</source> <translation>Поля</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="254"/> <source>Field list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="283"/> <source>Field Name (= tag key) :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="300"/> <source>Field Type:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="310"/> <source>Import</source> <translation>Імпортувати</translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="336"/> <source>Import range</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="342"/> <source>From (0 from start):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="352"/> <source>To (0 to End):</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="367"/> <source>Load settings...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportCSVDialog.ui" line="374"/> <source>Save settings...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ImportExportGdal</name> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="314"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="316"/> <source>Unable to set projection; please specify one</source> <translation type="unfinished"></translation> </message> </context> <context> <name>InfoDock</name> <message> <location filename="../src/Docks/InfoDock.cpp" line="24"/> <location filename="../src/Docks/InfoDock.cpp" line="96"/> <source>Info</source> <translation>Інформація</translation> </message> </context> <context> <name>Layer</name> <message numerus="yes"> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>%n features</source> <translation type="unfinished"> <numerusform>%n елемент</numerusform> <numerusform>%n елементи</numerusform> <numerusform>%n елементів</numerusform> </translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="408"/> <source>Size</source> <translation>Розмір</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="425"/> <source>Features</source> <translation>Елементи</translation> </message> </context> <context> <name>LayerDock</name> <message> <location filename="../src/Docks/LayerDock.cpp" line="243"/> <location filename="../src/Docks/LayerDock.cpp" line="352"/> <source>Show All</source> <translation>Показати все</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="248"/> <location filename="../src/Docks/LayerDock.cpp" line="356"/> <source>Hide All</source> <translation>Сховати все</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="255"/> <source>Readonly All</source> <translation>Все тільки для читання</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="260"/> <source>Readonly None</source> <translation>Редагований</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="267"/> <source>Close</source> <translation>Закрити</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="395"/> <source>Layers</source> <translation>Шари</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="401"/> <source>All</source> <translation>Всі</translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="402"/> <source>Map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="403"/> <source>Draw</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="491"/> <source>Reset Layers to default</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/LayerDock.cpp" line="404"/> <source>Tracks</source> <translation>Треки</translation> </message> </context> <context> <name>LayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="172"/> <source>Visible</source> <translation>Видимий</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="178"/> <source>Readonly</source> <translation>Тільки для читання</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Low</source> <translation>прозорий</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>High</source> <translation>напівпрозорий</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="186"/> <source>Opaque</source> <translation>непрозорий</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="189"/> <source>Opacity</source> <translation>Непрозорість</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="214"/> <source>Layer CLose: Dirty objects present</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="215"/> <source>There are dirty features on this layer. Are you sure you want to close it? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="220"/> <source>Layer CLose: Not empty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="221"/> <source>Are you sure you want to close this layer? (no Undo possible)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.ui" line="14"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> </context> <context> <name>LicenseDisplayDialog</name> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="14"/> <source>Licensing Terms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="21"/> <source>about:blank</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LicenseDisplayDialog.ui" line="29"/> <source>I have read and agree to the licensing terms</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MDiscardableDialog</name> <message> <location filename="../src/Utils/MDiscardableDialog.cpp" line="24"/> <source>Don't ask me this again</source> <translation>Не питати в майбутньому</translation> </message> </context> <context> <name>Main</name> <message> <location filename="../src/Main.cpp" line="210"/> <source>%1 v%2%3(%4) Loading plugins...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Main.cpp" line="242"/> <source>%1 v%2%3(%4) Initializing...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MainWindow</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="712"/> <source>Clear Tag '%1' on %2</source> <translation>Стерто теґ '%1' для %2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="776"/> <source>Remove member '%1' on %2</source> <translation>Вилучити елемент%1 з відношення %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="37"/> <source>Create Area Interaction</source> <translation>Створити взаємозв’язки ділянки</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="105"/> <source>Create Area %1</source> <translation>Створити Ділянку %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="140"/> <source>Area: Create Road %1</source> <translation>Ділянка: Створити дорогу %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="168"/> <source>Add a hole.</source> <translation>Додати отвір.</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="169"/> <source>Do you want to add a(nother) hole to this area?</source> <translation>Бажаєте додати ще один отвір до цієї ділянки?</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="173"/> <source>Area: Finish Road %1</source> <translation>Ділянка: Закінчити дорогу %1</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="188"/> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="199"/> <source>Area: Add node %1 to Road %2</source> <translation>Ділянка: Додати точку %1 до дороги %2</translation> </message> <message> <location filename="../src/Interactions/CreateAreaInteraction.cpp" line="269"/> <source>Close Area %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="49"/> <source>Create double way Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="173"/> <source>Add nodes to double-way Road %1</source> <translation>Додати точки до подвійної дороги %1</translation> </message> <message> <location filename="../src/Interactions/CreateDoubleWayInteraction.cpp" line="224"/> <source>Create double-way Road %1</source> <translation>Створити Подвійну дорогу %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="33"/> <source>Create node Interaction</source> <translation>Створити взаємозв’язки точки</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="112"/> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="259"/> <source>Create node in Road: %1</source> <translation>Створити точку на Дорозі %1</translation> </message> <message> <location filename="../src/Interactions/CreateNodeInteraction.cpp" line="121"/> <source>Create POI %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="36"/> <source>LEFT-CLICK to start;DRAG to scale;SHIFT-DRAG to rotate;LEFT-CLICK to end</source> <translation>ЛІВИЙ-КЛАЦ — розпочати; ТЯГТИ — зміна масштабу; SHIFT-ТЯГТИ — обертання; ЛІВИЙ-КЛАЦ — закінчити</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="41"/> <source>Create Polygon Interaction</source> <translation>Створити взаємозв’язки багатокутника</translation> </message> <message> <location filename="../src/Interactions/CreatePolygonInteraction.cpp" line="90"/> <source>Create Polygon %1</source> <translation>Створити Багатокутник %1</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="50"/> <source>Create roundabout Interaction</source> <translation>Створити взаємозв’язки кільця</translation> </message> <message> <location filename="../src/Interactions/CreateRoundaboutInteraction.cpp" line="89"/> <source>Create Roundabout %1</source> <translation>Створити кільце %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="59"/> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="43"/> <source>Create way Interaction</source> <translation>Створити взаємозв’язки шляху</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="238"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="298"/> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="309"/> <source>Create Node %1 in Road %2</source> <translation>Створити точку %1 на Дорозі %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="282"/> <source>Create Road: %1</source> <translation>Створити Дорогу: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="290"/> <source>Create Node: %1</source> <translation>Створити Точку: %1</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="312"/> <source>Add Node %1 to Road %2</source> <translation>Додати Точку %1 до Дороги %2</translation> </message> <message> <location filename="../src/Interactions/CreateSingleWayInteraction.cpp" line="351"/> <source>Close Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="52"/> <source>LEFT-CLICK to select;RIGHT-CLICK to pan;CTRL-LEFT-CLICK to toggle selection;SHIFT-LEFT-CLICK to add to selection;LEFT-DRAG for area selection;CTRL-RIGHT-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="54"/> <source>CLICK to select/move;CTRL-CLICK to toggle selection;SHIFT-CLICK to add to selection;SHIFT-DRAG for area selection;CTRL-DRAG for zoom;DOUBLE-CLICK to create a node;DOUBLE-CLICK on a node to start a way;</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="59"/> <source>Edit Interaction</source> <translation>Редагування взаємозв’язків</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="289"/> <source>Remove feature %1</source> <translation>Вилучення елементу %1</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="291"/> <source>Remove features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="302"/> <source>Do you want to delete the children nodes also? Note that OSM nodes outside the downloaded area will be kept.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="327"/> <source>Reverse %1 ways</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="41"/> <source>LEFT-CLICK to select;LEFT-DRAG to move</source> <translation>ЛІВИЙ-КЛАЦ — виділити; ЛІВИЙ-ТЯГНИ — пересування</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="46"/> <source>Move node Interaction</source> <translation>Пересування точки взаємозв’язку</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="153"/> <source>Move Nodes</source> <translation>Пересунути точки</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="157"/> <source>Move Node %1</source> <translation>Пересунути точку %1</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="210"/> <source>Nodes at the same position found.</source> <translation>Знайдено точку у тому ж місці.</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="211"/> <source>Do you want to merge all nodes at the drop position?</source> <translation>Чи бажаєте з’єднати точки у цьому місці?</translation> </message> <message> <location filename="../src/Interactions/MoveNodeInteraction.cpp" line="220"/> <location filename="../src/MainWindow.cpp" line="2747"/> <source>Merge Nodes into %1</source> <translation>Об’єднати точки в %1</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to rotate</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="44"/> <source>Rotate Interaction</source> <translation>Обертання взаємозв’язків</translation> </message> <message> <location filename="../src/Interactions/RotateInteraction.cpp" line="139"/> <source>Rotate Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="27"/> <source>LEFT-CLICK to first corner -> LEFT-DRAG to specify area -> LEFT-CLICK to zoom</source> <translation>ЛІВИЙ-КЛАЦ — перший кут; ЛІВИЙ-ТЯГТИ — позначення ділянки; ЛІВИЙ-КЛАЦ — масштабувати</translation> </message> <message> <location filename="../src/Interactions/ZoomInteraction.cpp" line="30"/> <source>Zoom Interaction</source> <translation>Масштабування взаємозв'язків</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="222"/> <source>tile %v / %m</source> <translation>плитка %v / %m</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1746"/> <location filename="../src/MainWindow.cpp" line="376"/> <source>Properties...</source> <translation>Властивості…</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>Cannot load Projections file</source> <translation>Не можу завантажити файл Проекцій</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="399"/> <source>"Projections.xml" could not be opened anywhere. Aborting.</source> <translation>Неможливо відкрити "Projections.xml". Припинення обробки.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Low</source> <translation>прозорий</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>High</source> <translation>напівпрозорий</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="406"/> <source>Opaque</source> <translation>непрозорий</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1084"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1088"/> <source>Edit</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1092"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1096"/> <source>Show</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1100"/> <source>Directional Arrows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1104"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1108"/> <source>Layers</source> <translation>Шари</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1112"/> <source>Create</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="572"/> <location filename="../src/MainWindow.cpp" line="1116"/> <source>Feature</source> <translation>Елемент</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="581"/> <location filename="../src/MainWindow.cpp" line="1124"/> <source>Node</source> <translation>Точка</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1128"/> <source>Way</source> <translation>Шлях</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="597"/> <location filename="../src/MainWindow.cpp" line="1132"/> <source>Relation</source> <translation>Відношення</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1136"/> <source>Tools</source> <translation>Інструменти</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1140"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1144"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard invalid</source> <translation>Хибні дані буферу обміну</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1301"/> <source>Cut Features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1412"/> <location filename="../src/MainWindow.cpp" line="1439"/> <location filename="../src/MainWindow.cpp" line="1473"/> <source>Clipboard do not contain valid data.</source> <translation>Буфер обміну не містить відповідних даних.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1626"/> <location filename="../src/MainWindow.cpp" line="4466"/> <source>Unsaved changes</source> <translation>Не збережені зміни</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1627"/> <source>The current map contains unsaved changes that will be lost when starting a new one. Do you want to cancel starting a new map or continue and discard the old changes?</source> <translation>Поточна мапа містить не збережені зміни, що будуть втрачені, якщо почати редагування нової мапи. Чи бажаєте скасувати створення нової мапи або продовжити та втратити усі зміни?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1634"/> <source>Unsaved Style changes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1635"/> <source>You have modified the current style. Do you want to save your changes?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1663"/> <source>Waypoints</source> <translation>Точки дороги</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1679"/> <source>Track %1</source> <translation>Трек %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1721"/> <source>Big Fat Copyright Warning</source> <translation>Велике жирне попередження про Авторські права</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1722"/> <source>You are trying to import a KML file. Please be aware that: - You cannot import to OSM a KML file created from Google Earth. While you might think that nodes you created from GE are yours, they are not! They are still a derivative work from GE, and, as such, cannot be used in OSM. - If you downloaded it from the Internet, chances are that there is a copyright on it. Please be absolutely sure that using those data in OSM is permitted by the author, or that the data is public domain. If unsure, please seek advice on the "legal" or "talk" openstreetmap mailing lists. Are you absolutely sure this KML can legally be imported in OSM?</source> <translation>Ви намагаєтесь імпортувати KLM-файл. Зважте наступне: - Ви не можете імпортувати KLM-файли створені у Google Earth. Ви вважаєте, що точки створені з GE ваші, насправді це на так! Вони все одно лишаються похідними від GE і тому, чорт забирай, не можуть бути використані в OSM. - Якщо ви завантажили їх з Інтернет, є шанс, що вони захищені авторським правом. Будь ласка, переконайтесь, що у вас є дозвіл від автора на їх використання в OSM або, що вони є суспільним надбанням. У разі невпевненості звертайтесь до оголошень у списках розсилки "legal" чи "talk" від openstreetmap. Ви впевнені, що цей KLM-файл може буде імпортований до OSM на законних підставах?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <source>No valid file</source> <translation>Відповідні файли відсутні</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1785"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>%1 could not be opened.</source> <translation>%1 неможливо відкрити.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Incoming Remote control request</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1935"/> <source>Unknow action url: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1946"/> <source>Open files</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1958"/> <source>Old Qt version detected</source> <translation>Виявлено стару версію Qt</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1959"/> <source>Your setup uses Qt %1, which contains various known errors in uploading data to OpenStreetMap leading to 401 server response codes. Are you sure you want to continue (which is not recommended). For more information see http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</source> <translation>Ви використовуєте Qt версії %1, яка містить деякі відомі помилки надсилання даних до OpenStreetMap, починаючи з коду 401. Ви впевнені, що бажаєте продовжити (але ми не радимо вам це робити)? За докладною інформацією звертайтесь до http://wiki.openstreetmap.org/index.php/Problem_uploading_with_Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>Upload OSM</source> <translation>Надсилання даних OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1967"/> <source>You don't seem to have specified your OpenStreetMap username and password. Do you want to do this now?</source> <translation>Ви не зазначили в налаштуваннях ваш логін та пароль до OpenStreetMap. Бажаєте зробити це зараз?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>Error downloading</source> <translation>Помилка завантаження</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1989"/> <location filename="../src/MainWindow.cpp" line="2003"/> <location filename="../src/MainWindow.cpp" line="2060"/> <source>The map could not be downloaded</source> <translation>Неможливо завантажити мапу</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>Error downloading OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2027"/> <source>The OpenStreetBugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>Error downloading MapDust</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2049"/> <source>The MapDust bugs could not be downloaded</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Create Polygon</source> <translation>Створити багатокутник</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2382"/> <source>Specify the number of sides</source> <translation>Вкажіть кількість кутів</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2430"/> <source>Join Roads</source> <translation>Об’єднати дороги</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2444"/> <source>Split Roads</source> <translation>Розділити дороги</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2458"/> <source>Break Roads</source> <translation>Відокремити дороги</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2472"/> <source>Simplify Roads</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2545"/> <source>Force Feature upload</source> <translation>Швидке надсилання елементів</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Network timeout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2570"/> <source>Cannot contact OpenStreetBugs.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Error closing bug</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2580"/> <source>Cannot delete bug. Server message is: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2587"/> <source>Create Junction</source> <translation>Створити перехрестя</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2591"/> <source>Multiple intersection.</source> <translation>Багатократне перетинання.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2592"/> <source>Those roads have multiple intersections. Do you still want to create a junction for each one (Unwanted junctions can still be deleted afterhand)?</source> <translation>Ці дороги мають багатократне перетинання. Ви все ще бажаєте створити перехрестя для кожного перетинання (небажані перехрестя після цього можна вилучити)?</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2609"/> <source>Add Street Numbers</source> <translation>Додати номер вулиці</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <location filename="../src/MainWindow.cpp" line="2631"/> <source>Number of segments to divide into</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2626"/> <source>Specify the number of segments</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2635"/> <source>Subdivide road into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2658"/> <source>Axis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2659"/> <source>Specify the number of regular axes to align edges on (e.g. 4 for rectangular)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2666"/> <source>triangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2667"/> <source>rectangular</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2668"/> <source>pentagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2669"/> <source>hexagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2670"/> <source>heptagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2671"/> <source>octagonal</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2675"/> <source>Align onto %1 axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2677"/> <source>Align onto %1 regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2684"/> <location filename="../src/MainWindow.cpp" line="2687"/> <source>Unable to align to axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2685"/> <source>Align to axes operation failed. Please adjust any sharp corners and try again.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2688"/> <source>Align to axes operation failed and did not converge on a solution.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2704"/> <source>Bing Extract</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2719"/> <source>Align Nodes</source> <translation>Вирівняти точки</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2733"/> <source>Spread Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2762"/> <source>Detach Node %1</source> <translation>Від’єднати точку %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2776"/> <source>Add member to relation</source> <translation>Додати елемент до відношення</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2788"/> <source>Remove member from relation</source> <translation>Вилучити елемент з відношення</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2800"/> <source>Add to Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2812"/> <source>Join areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2824"/> <source>Split area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2839"/> <source>Terrace area into %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2867"/> <source>Create Relation %1</source> <translation>Створити Відношення %1</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Save map style</source> <translation>Зберегти стиль мапи</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2952"/> <source>Merkaartor map style (*.mas)</source> <translation>Стиль мапи Merkaartor (*.mas)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2974"/> <source>Load map style</source> <translation>Завантажити стиль мапи</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="183"/> <location filename="../src/MainWindow.cpp" line="187"/> <location filename="../src/MainWindow.cpp" line="2975"/> <source>Supported formats</source> <translation>Підтримувані формати</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="167"/> <source>GPS Exchange format (*.gpx) </source> <translation>Формат обміну GPS даними (*.gpx) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="168"/> <source>OpenStreetMap format (*.osm) </source> <translation>Формат OpenStreetMap (*.osm) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="169"/> <source>OpenStreetMap change format (*.osc) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="170"/> <source>Noni GPSPlot format (*.ngt) </source> <translation>Формат Noni GPSPlot (*.ngt) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="171"/> <source>NMEA GPS log format (*.nmea *.nma) </source> <translation>Формат GPS даних NMEA (*.nmea *.nma) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="172"/> <source>KML file (*.kml) </source> <translation>Файли KML (*.kml) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="173"/> <source>Comma delimited format (*.csv) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="176"/> <source>Geotagged images (*.jpg) </source> <translation>Малюнки позначені геотеґами (*.jpg) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>ESRI Shapefile (*.shp) </source> <translation>Шейпфайли ESRI (*.shp) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="178"/> <source>Geography Markup Language (*.gml) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="180"/> <source>Protobuf Binary Format (*.pbf) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="184"/> <source>Merkaartor document (*.mdc) </source> <translation>Документи Merkaartor (*.mdc) </translation> </message> <message> <location filename="../src/MainWindow.cpp" line="589"/> <source>Road</source> <translation>Дорога</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="709"/> <source>Load image</source> <translation>Завантажити зображення</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="711"/> <source>Add node position to image</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="713"/> <source>Geotag image with this position</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="715"/> <source>Cancel</source> <translation>Відміна</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="1600"/> <source>Import file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2976"/> <source>Merkaartor map style (*.mas) </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="2977"/> <source>MapCSS stylesheet (*.css)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>Rebuild History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <source>Save Merkaartor document</source> <translation>Зберегти документ Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3395"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>untitled</source> <translation>без назви</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Merkaartor documents Files (*.mdc)</source> <translation>Файли документів Merkaartor (*.mdc)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="185"/> <location filename="../src/MainWindow.cpp" line="189"/> <location filename="../src/MainWindow.cpp" line="3185"/> <location filename="../src/MainWindow.cpp" line="3209"/> <location filename="../src/MainWindow.cpp" line="3408"/> <location filename="../src/MainWindow.cpp" line="3437"/> <location filename="../src/MainWindow.cpp" line="3476"/> <location filename="../src/MainWindow.cpp" line="3535"/> <location filename="../src/MainWindow.cpp" line="4277"/> <source>All Files (*)</source> <translation>Всі файли (*)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3038"/> <source>An attempt will be made to rebuild the history. No guarantee, though, and no Undo. Are you sure you want to try this? </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3209"/> <source>Save Merkaartor template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <source>Unable to open save file</source> <translation>Неможливо відкрити збережений файл</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3273"/> <location filename="../src/MainWindow.cpp" line="3288"/> <source>%1 could not be opened for writing.</source> <translation>%1 неможливо відкрити для запису.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3288"/> <source>Unable to open save template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <location filename="../src/MainWindow.cpp" line="3349"/> <source>Invalid file</source> <translation>Хибний файл</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3304"/> <source>%1 is not a valid Merkaartor document.</source> <translation>%1 — не є вірним документом Merkaartor’а.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>Export OSM</source> <translation>Експорт даних OSM</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3408"/> <source>OSM Files (*.osm)</source> <translation>Файли OSM (*.osm)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>Export osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3437"/> <source>osmChange Files (*.osc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>Export GPX</source> <translation>Експорт GPX</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3476"/> <source>GPX Files (*.gpx)</source> <translation>Файли GPX (*.gpx)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>Export KML</source> <translation>Експорт KML</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3535"/> <source>KML Files (*.kml)</source> <translation>Файли KML (*.kml)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3645"/> <source>Feature extraction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3655"/> <source>Extracting features...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3738"/> <source>Hide tool buttons labels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3849"/> <source>%1 (int)</source> <translation>%1 (int)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3901"/> <source>Add Bookmark</source> <translation>Додати закладку</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3902"/> <source>Specify the name of the bookmark.</source> <translation>Вкажіть ім’я закладки.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3905"/> <source>Invalid bookmark name</source> <translation>Помилкове ім’я закладки</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3906"/> <source>Bookmark cannot be blank.</source> <translation>Закладка не може бути порожньою.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3910"/> <source>Warning: Bookmark name already exists</source> <translation>Попередження: закладка з таким ім’ям вже існує</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3911"/> <source>Enter a new one, keep the same to overwrite or cancel.</source> <translation>Введіть нове значення, лишить теж саме, щоб перезаписати або натисніть скасувати.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3949"/> <source>Remove Bookmark</source> <translation>Вилучити закладку</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="3950"/> <source>Select the bookmark to remove.</source> <translation>Оберіть закладку для вилучення.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Invalid projection</source> <translation>Помилкова проекція</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4010"/> <location filename="../src/MainWindow.cpp" line="4019"/> <source>Unable to set projection "%1".</source> <translation>Неможливо встановити проекцію. "%1".</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4151"/> <source>GPS error</source> <translation>помилка GPS</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4152"/> <source>Unable to open GPS port.</source> <translation>Неможливо відкрити порт GPS.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4161"/> <source>Open NMEA log file</source> <translation>Відкрити файл журналу NMEA</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Save Tag Templates</source> <translation>Зберегти шаблони теґів</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4277"/> <source>Merkaartor tag templates (*.mat)</source> <translation>Шаблони теґів Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4296"/> <location filename="../src/MainWindow.cpp" line="4310"/> <source>Open Tag Templates</source> <translation>Відкрити шаблони теґів</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4384"/> <source>Warning! Could not load the Merkaartor translations for the "%1" language. Switching to default English.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="14"/> <source>Merkaartor</source> <translation>Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="32"/> <source>&Help</source> <translation>&Довідка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="38"/> <source>&Create</source> <translation>&Створити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="51"/> <location filename="../src/MainWindow.ui" line="630"/> <source>&Road</source> <translation>&Дорога</translation> </message> <message> <location filename="../src/MainWindow.ui" line="70"/> <source>&Edit</source> <translation>П&равка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="92"/> <source>&View</source> <translation>&Вид</translation> </message> <message> <location filename="../src/MainWindow.ui" line="96"/> <source>&Bookmarks</source> <translation>&Закладки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="104"/> <source>Set &projection</source> <translation>Встановити &проекцію</translation> </message> <message> <location filename="../src/MainWindow.ui" line="302"/> <source>Show directional &Arrows</source> <translation>Показувати &вказівники напрямку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="109"/> <source>Set Areas &opacity</source> <translation>Встановити &прозорість ділянок</translation> </message> <message> <location filename="../src/MainWindow.ui" line="127"/> <source>&File</source> <translation>&Файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="131"/> <source>&Export</source> <translation>&Експорт</translation> </message> <message> <location filename="../src/MainWindow.ui" line="141"/> <source>Re&cent open</source> <translation>Не&щодавно відкриті</translation> </message> <message> <location filename="../src/MainWindow.ui" line="146"/> <source>Recen&t import</source> <translation>Не&щодавно імпортовані</translation> </message> <message> <location filename="../src/MainWindow.ui" line="174"/> <source>T&ools</source> <translation>Інстру&менти</translation> </message> <message> <location filename="../src/MainWindow.ui" line="178"/> <source>&Style</source> <translation>&Стиль</translation> </message> <message> <location filename="../src/MainWindow.ui" line="214"/> <location filename="../src/MainWindow.ui" line="648"/> <source>&Node</source> <translation>&Точка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="223"/> <source>&Window</source> <translation>В&ікно</translation> </message> <message> <location filename="../src/MainWindow.ui" line="227"/> <location filename="../src/MainWindow.ui" line="932"/> <source>&Docks</source> <translation>&Панелі</translation> </message> <message> <location filename="../src/MainWindow.ui" line="246"/> <source>Fea&ture</source> <translation>&Елементи</translation> </message> <message> <location filename="../src/MainWindow.ui" line="250"/> <location filename="../src/MainWindow.cpp" line="1120"/> <source>OpenStreetBugs</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="266"/> <location filename="../src/MainWindow.ui" line="957"/> <source>&Layers</source> <translation>&Шари</translation> </message> <message> <location filename="../src/MainWindow.ui" line="277"/> <source>&Gps</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="290"/> <source>Rel&ation</source> <translation>Від&ношення</translation> </message> <message> <location filename="../src/MainWindow.ui" line="298"/> <source>S&how</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="394"/> <source>&Quit</source> <translation>Ви&хід</translation> </message> <message> <location filename="../src/MainWindow.ui" line="402"/> <source>&About</source> <translation>Про &Merkaartor</translation> </message> <message> <location filename="../src/MainWindow.ui" line="414"/> <source>&Open</source> <translation>&Відкрити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="417"/> <source>Create a new document and import a file</source> <translation>Створити новий документ та імпортувати файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="420"/> <source>Ctrl+O</source> <translation>Ctrl+O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="429"/> <source>Zoom &all</source> <translation>Показати &все</translation> </message> <message> <location filename="../src/MainWindow.ui" line="432"/> <source>F2</source> <translation>F2</translation> </message> <message> <location filename="../src/MainWindow.ui" line="437"/> <source>Zoom &window</source> <translation>Змінити &масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="440"/> <location filename="../src/MainWindow.ui" line="443"/> <source>Zoom window</source> <translation>Змінити масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="446"/> <source>F3</source> <translation>F3</translation> </message> <message> <location filename="../src/MainWindow.ui" line="455"/> <source>Zoom &out</source> <translation>Від&далити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="458"/> <source>-</source> <translation>-</translation> </message> <message> <location filename="../src/MainWindow.ui" line="467"/> <source>Zoom &in</source> <translation>Набл&изити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="470"/> <location filename="../src/MainWindow.ui" line="473"/> <source>Zoom in</source> <translation>Наблизити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="476"/> <source>+</source> <translation>+</translation> </message> <message> <location filename="../src/MainWindow.ui" line="481"/> <location filename="../src/MainWindow.ui" line="484"/> <location filename="../src/MainWindow.ui" line="487"/> <source>Curved link</source> <translation>Звивисте з’єднання</translation> </message> <message> <location filename="../src/MainWindow.ui" line="499"/> <location filename="../src/MainWindow.ui" line="1024"/> <source>&Undo</source> <translation>&Відміна</translation> </message> <message> <location filename="../src/MainWindow.ui" line="502"/> <source>Ctrl+Z</source> <translation>Ctrl+Z</translation> </message> <message> <location filename="../src/MainWindow.ui" line="511"/> <source>&Redo</source> <translation>&Повернути</translation> </message> <message> <location filename="../src/MainWindow.ui" line="514"/> <source>Ctrl+Y</source> <translation>Ctrl+Y</translation> </message> <message> <location filename="../src/MainWindow.ui" line="526"/> <source>&Move</source> <translation>&Пересунути</translation> </message> <message> <location filename="../src/MainWindow.ui" line="529"/> <source>Ctrl+M</source> <translation>Ctrl+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="538"/> <source>&Import</source> <translation>&Імпортувати</translation> </message> <message> <location filename="../src/MainWindow.ui" line="541"/> <source>Import a file into the current document</source> <translation>Імпортувати файл до поточного документу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="550"/> <source>&Download</source> <translation>&Завантажити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="553"/> <source>Download map data for a new area</source> <translation>Завантажити дані мапи для нової ділянки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="556"/> <source>Ctrl+D</source> <translation>Ctrl+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="561"/> <source>Link</source> <translation>Зв’язки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="564"/> <location filename="../src/MainWindow.ui" line="567"/> <source>Create link</source> <translation>Створити зв’язок</translation> </message> <message> <location filename="../src/MainWindow.ui" line="570"/> <source>L</source> <translation>L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="582"/> <source>&Select</source> <translation>&Виділити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="585"/> <source>Esc</source> <translation>Esc</translation> </message> <message> <location filename="../src/MainWindow.ui" line="594"/> <source>&Upload</source> <translation>&Відправити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="597"/> <source>Upload changes to the server</source> <translation>Відправити зміни до сервера</translation> </message> <message> <location filename="../src/MainWindow.ui" line="600"/> <source>Ctrl+U</source> <translation>Ctrl+U</translation> </message> <message> <location filename="../src/MainWindow.ui" line="612"/> <source>R&emove</source> <translation>Ви&лучити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="615"/> <source>Remove selected features</source> <translation>Вилучити виділені елементи</translation> </message> <message> <location filename="../src/MainWindow.ui" line="618"/> <source>Del</source> <translation>Del</translation> </message> <message> <location filename="../src/MainWindow.ui" line="633"/> <source>Create new road</source> <translation>Створити нову дорогу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="636"/> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="651"/> <source>Create new node</source> <translation>Створити нову точку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="654"/> <source>Ctrl+N</source> <translation>Ctrl+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="666"/> <source>&Reverse</source> <translation>&Змінити напрямок</translation> </message> <message> <location filename="../src/MainWindow.ui" line="669"/> <source>Reverse road direction</source> <translation>Змінити напрямок дороги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="678"/> <source>&Go To...</source> <translation>&Перейти до…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="681"/> <source>Ctrl+G</source> <translation>Ctrl+G</translation> </message> <message> <location filename="../src/MainWindow.ui" line="686"/> <source>&Double carriage way</source> <translation>П&одвійна дорога</translation> </message> <message> <location filename="../src/MainWindow.ui" line="689"/> <source>Create Double carriage way</source> <translation>Створити Подвійну дорогу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="697"/> <source>Create Roundabout</source> <translation>Створити кільце</translation> </message> <message> <location filename="../src/MainWindow.ui" line="709"/> <source>&New</source> <translation>&Новий</translation> </message> <message> <location filename="../src/MainWindow.ui" line="712"/> <source>Create a new document</source> <translation>Створити новий документ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="721"/> <source>&Split</source> <translation>&Розділити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="724"/> <source>Split road into separate (connected) roads</source> <translation>Розділити дорогу на окремі (з’єднані) дороги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="727"/> <source>Alt+S</source> <translation>Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="736"/> <source>&Join</source> <translation>&Приєднати</translation> </message> <message> <location filename="../src/MainWindow.ui" line="739"/> <source>Join connected roads to a single road</source> <translation>Об’єднати з’єднанні дороги у одну дорогу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="742"/> <source>Alt+J</source> <translation>Alt+J</translation> </message> <message> <location filename="../src/MainWindow.ui" line="751"/> <source>&Break apart</source> <translation>Від&окремити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="754"/> <source>Break</source> <translation>Відокремити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="757"/> <source>Break apart connected roads</source> <translation>Відокремити з’єднанні дороги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="760"/> <source>Alt+B</source> <translation>Alt+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="765"/> <source>Re&lation</source> <translation>&Відношення</translation> </message> <message> <location filename="../src/MainWindow.ui" line="768"/> <source>Create Relation</source> <translation>Створити Відношення</translation> </message> <message> <location filename="../src/MainWindow.ui" line="780"/> <source>&Area</source> <translation>Ді&лянка</translation> </message> <message> <location filename="../src/MainWindow.ui" line="783"/> <source>Create new area</source> <translation>Створити нову ділянку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="788"/> <source>&Edit...</source> <translation>П&равка…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1406"/> <source>&Save...</source> <translation>&Зберегти…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="798"/> <location filename="../src/MainWindow.ui" line="1396"/> <source>&Load...</source> <translation>&Завантажити…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="694"/> <source>R&oundabout</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="803"/> <source>&Curved road</source> <translation>&Звивиста дорога</translation> </message> <message> <location filename="../src/MainWindow.ui" line="812"/> <source>&Preferences...</source> <translation>&Параметри…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="820"/> <location filename="../src/MainWindow.ui" line="828"/> <source>&All...</source> <translation>&Все…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="823"/> <location filename="../src/MainWindow.ui" line="831"/> <source>Export all visible layers to a file</source> <translation>Експортувати усі видимі шари до файлу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="840"/> <source>&Find...</source> <translation>З&найти…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="843"/> <source>Find</source> <translation>Пошук</translation> </message> <message> <location filename="../src/MainWindow.ui" line="846"/> <source>Find and select items</source> <translation>Знайти та вибрати об’єкти</translation> </message> <message> <location filename="../src/MainWindow.ui" line="851"/> <location filename="../src/MainWindow.ui" line="859"/> <source>&Viewport...</source> <translation>&Область перегляду…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="854"/> <location filename="../src/MainWindow.ui" line="862"/> <source>Export the features in the viewport to a file</source> <translation>Експортувати вміст області перегляду до файлу</translation> </message> <message> <location filename="../src/MainWindow.ui" line="867"/> <source>&Add...</source> <translation>&Додати…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="872"/> <source>&Remove...</source> <translation>&Вилучити…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="877"/> <source>&Merge</source> <translation>З’&єднати</translation> </message> <message> <location filename="../src/MainWindow.ui" line="880"/> <source>Node Merge</source> <translation>Об’єднання точок</translation> </message> <message> <location filename="../src/MainWindow.ui" line="883"/> <source>Merge the selected nodes (first selected will remain)</source> <translation>З’єднати вибрані точки (залишається перша вибрана точка)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="886"/> <source>Alt+M</source> <translation>Alt+M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="793"/> <location filename="../src/MainWindow.ui" line="891"/> <source>Save &As...</source> <translation>Зберегти &як…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="900"/> <location filename="../src/MainWindow.ui" line="1832"/> <source>&Save</source> <translation>&Зберегти</translation> </message> <message> <location filename="../src/MainWindow.ui" line="903"/> <source>Save to file</source> <translation>Зберегти у файл</translation> </message> <message> <location filename="../src/MainWindow.ui" line="906"/> <source>Ctrl+S</source> <translation>Ctrl+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="915"/> <source>Download more</source> <translation>Завантажити ще</translation> </message> <message> <location filename="../src/MainWindow.ui" line="918"/> <source>Download more map data for the current area</source> <translation>Завантажити більше даних мапи для поточної ділянки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="921"/> <location filename="../src/MainWindow.ui" line="924"/> <source>Download the current view to the previous download layer</source> <translation>Завантажити поточний вигляд до попередньо завантаженого шару</translation> </message> <message> <location filename="../src/MainWindow.ui" line="927"/> <source>Ctrl+Shift+D</source> <translation>Ctrl+Shift+D</translation> </message> <message> <location filename="../src/MainWindow.ui" line="940"/> <source>&Properties</source> <translation>&Властивості</translation> </message> <message> <location filename="../src/MainWindow.ui" line="943"/> <location filename="../src/MainWindow.ui" line="946"/> <source>Hide/Show the Properties dock</source> <translation>Сховати/Показати панель Властивостей</translation> </message> <message> <location filename="../src/MainWindow.ui" line="949"/> <source>Ctrl+P</source> <translation>Ctrl+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="960"/> <location filename="../src/MainWindow.ui" line="963"/> <source>Hide/Show the Layers dock</source> <translation>Сховати/Показати панель Шарів</translation> </message> <message> <location filename="../src/MainWindow.ui" line="966"/> <source>Ctrl+L</source> <translation>Ctrl+L</translation> </message> <message> <location filename="../src/MainWindow.ui" line="974"/> <source>&Info</source> <translation>&Інформація</translation> </message> <message> <location filename="../src/MainWindow.ui" line="977"/> <location filename="../src/MainWindow.ui" line="980"/> <source>Hide/Show the Info dock</source> <translation>Сховати/Показати панель Інформації</translation> </message> <message> <location filename="../src/MainWindow.ui" line="983"/> <source>Ctrl+I</source> <translation>Ctrl+I</translation> </message> <message> <location filename="../src/MainWindow.ui" line="992"/> <source>&Align</source> <translation>Ви&рівняти</translation> </message> <message> <location filename="../src/MainWindow.ui" line="995"/> <source>Align nodes</source> <translation>Вирівняти точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="998"/> <source>Align selected nodes. First two selected give the line.</source> <translation>Вирівняти обрані точки. Перші дві обрані точки створюють лінію.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1001"/> <source>Alt+A</source> <translation>Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1010"/> <source>&Spread</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1013"/> <source>Spread nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1016"/> <source>Align and spread selected nodes equally.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1027"/> <location filename="../src/MainWindow.ui" line="1030"/> <source>Hide/Show the Undo dock</source> <translation>Совати/Показати панель скасування змін</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1033"/> <source>Ctrl+T</source> <translation>Ctrl+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1041"/> <source>Show &downloaded areas</source> <translation>Показати &завантажені ділянки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1044"/> <source>Ctrl+Alt+A</source> <translation>Ctrl+Alt+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1053"/> <source>&Copy</source> <translation>&Копіювати</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1056"/> <source>Copy selected features and tags to the clipboard</source> <translation>Копіювати виділені елементи та теґи до буферу обміну</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1059"/> <source>Copy the selected feature's tags to the clipboard; if the feature is a trackpoint, copy the coordinates, too.</source> <translation>Копіювати теґи обраних елементів до буферу обміну, якщо елементом є точка треку — скопіювати також координати.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1062"/> <source>Ctrl+C</source> <translation>Ctrl+C</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1067"/> <source>Paste Tags (&Overwrite)</source> <translation>Вставити теґи (&перезаписати)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1070"/> <source>Paste (and overwrite) the tags in the clipboard to the selected feature.</source> <translation>Вставити (та замінити) теґи з буферу обміну у виділені елементи..</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1073"/> <source>Ctrl+V, O</source> <translation>Ctrl+V, O</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1082"/> <source>Paste Tags (&Merge)</source> <translation>Вставити теґи (&об’єднати)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1085"/> <source>Paste tags</source> <translation>Вставити теґи</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1088"/> <source>Paste tags from the clipboard (Merge with existing tags)</source> <translation>Вставити теґи з буферу обміну (Об’єднати з існуючими теґами)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1091"/> <source>Merge the tags in the clipboard with the ones of the selected feature.</source> <translation>Об’єднати теґи з буферу обміну з теґами виділених елементів..</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1094"/> <source>Ctrl+V, M</source> <translation>Ctrl+V, M</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1099"/> <location filename="../src/MainWindow.ui" line="1104"/> <source>Selected...</source> <translation>Виділені…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1547"/> <source>&Polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1552"/> <source>Rectangular &building</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1557"/> <source>Add new &Image layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1637"/> <source>Add OpenStreet&Bugs layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1696"/> <source>Split a selected area between two selected nodes into two separate areas.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1725"/> <source>A&xis Align</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1728"/> <source>Align edges to regular axes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1731"/> <source>Align edges to a certain number of regularly spaced axes.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1736"/> <source>&Print...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1741"/> <source>Print preview...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1754"/> <source>Highlight dirt&y features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1759"/> <source>Add new &Drawing layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1776"/> <source>Add new &Filter layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1822"/> <source>Create Multipolygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1827"/> <source>Add to Multi&polygon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1837"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1842"/> <source>Bing Road Detector</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1847"/> <source>Rebuild &History</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1852"/> <source>Add Map&Dust layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1860"/> <source>Wireframe</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1863"/> <source>Ctrl+Alt+W</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1868"/> <source>Select parent(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1873"/> <source>Download missing children</source> <translation>Завантажити відсутніх нащадків</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1768"/> <source>Cu&t</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1771"/> <source>Ctrl+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1784"/> <source>E&xtrude</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1787"/> <source>Extrude interaction for ways (JOSM style)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1790"/> <source>Alt+X</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1795"/> <source>Select toggle</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1800"/> <source>Include children in selection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1812"/> <source>Scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1817"/> <source>Save as Template Document...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1116"/> <source>Paste</source> <translation>Вставити</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1119"/> <source>Paste features from the clipboard</source> <translation>Вставити елементи з буферу обміну</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1122"/> <source>Paste the features in the clipboard; If the features'id are already in the document, overwrite them.</source> <translation>Вставити елемент з буферу обміну; якщо ідентифікатор елементу вже присутній у документі — переписати його.</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1125"/> <source>Ctrl+V, F</source> <translation>Ctrl+V, F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1130"/> <source>OSM (XML)</source> <translation>OSM (XML)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1135"/> <source>OSM (Binary)</source> <translation>OSM (двійковий)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1140"/> <source>&Force Upload</source> <translation>&Швидке надсилання</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1143"/> <source>Commit feature to the dirty layer</source> <translation>Перенести елементи на шар-чернетку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1146"/> <location filename="../src/MainWindow.ui" line="1149"/> <source>Commit the selected feature from a non-uploadable layer (e.g.Track or Extract) to the dirty layer, ready for upload</source> <translation>Перенести виділені елементи з шару, що не надсилається (наприклад, Треки) до шару-чернетки, готового до надсилання</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1154"/> <source>GPX</source> <translation>GPX</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1159"/> <source>KML</source> <translation>KML</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1164"/> <source>Toggle Toolbar</source> <translation>Панель інструментів</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1167"/> <location filename="../src/MainWindow.ui" line="1170"/> <source>Hide/Show the Toolbar</source> <translation>Сховати/Показати панель Інструментів</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1175"/> <source>Hide All</source> <translation>Сховати все</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1178"/> <location filename="../src/MainWindow.ui" line="1186"/> <source>Ctrl+F</source> <translation>Ctrl+F</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1183"/> <source>Show All</source> <translation>Показати все</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1194"/> <source>&Image layer</source> <translation>Шар &зображень</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1207"/> <source>Show &nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1218"/> <source>Show na&mes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1494"/> <source>&WMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1499"/> <source>&TMS Servers Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1579"/> <source>&Subdivide</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1582"/> <source>Subdivide segment equally</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1585"/> <source>Subdivide a selected way segment (the way and two adjacent nodes) into segments of equal length.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1647"/> <source>S&implify</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1650"/> <source>Simplify road(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1653"/> <source>Simplify way by removing unnecessary child nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1658"/> <source>&Filters Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1666"/> <source>&None</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1675"/> <source>&Join Areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1678"/> <source>Join touching areas</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1681"/> <source>Join areas which are touching.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1690"/> <source>&Split Area</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1693"/> <source>Split area between two nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1705"/> <source>&Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1708"/> <source>Terrace area into residences</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1711"/> <source>Split a selected area into terraced residences.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1716"/> <source>Toolbar Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1199"/> <source>&Raster/SVG</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="189"/> <source>Ta&g templates</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="347"/> <source>Main toolbar</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1210"/> <source>Ctrl+Alt+P</source> <translation>Ctrl+Alt+P</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1221"/> <source>Ctrl+Alt+N</source> <translation>Ctrl+Alt+N</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1226"/> <source>&Start</source> <translation>&Старт</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1229"/> <source>Start GPS</source> <translation>Розпочати роботу з GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1234"/> <source>&Replay...</source> <translation>По&втор…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1237"/> <source>Replay GPS</source> <translation>Відтворити інформацію GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1245"/> <source>&GPS</source> <translation>&GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1248"/> <location filename="../src/MainWindow.ui" line="1251"/> <source>Hide/Show the GPS dock</source> <translation>Сховати/Показати панель GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1254"/> <source>Ctrl+W</source> <translation>Ctrl+W</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1262"/> <source>S&top</source> <translation>С&топ</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1265"/> <source>Stop GPS</source> <translation>Зупинити роботу із GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1273"/> <source>&Center on GPS</source> <translation>&Центрувати за GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1281"/> <source>Show track &segments</source> <translation>Показати &сегменти треку</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1284"/> <source>Ctrl+Alt+T</source> <translation>Ctrl+Alt+T</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1292"/> <source>Show &scale</source> <translation>Показати &масштаб</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1295"/> <source>Ctrl+Alt+S</source> <translation>Ctrl+Alt+S</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1303"/> <source>Show &relations</source> <translation>Показати &відношення</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1306"/> <source>Ctrl+Alt+R</source> <translation>Ctrl+Alt+R</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1314"/> <source>Show roads background</source> <translation>Показати фон доріг</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1322"/> <source>Show roads boundary</source> <translation>Показати межі доріг</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1330"/> <source>Show touchup</source> <translation>Показати підказки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1341"/> <location filename="../src/MainWindow.ui" line="1344"/> <source>Record</source> <translation>Запис</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1347"/> <source>Record GPS</source> <translation>Записати інформацію з GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1358"/> <source>Pause</source> <translation>Пауза</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1361"/> <source>Pause GPS</source> <translation>Призупинити запис інформації з GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1369"/> <source>G&eoImage</source> <translation>G&eoImage</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1372"/> <location filename="../src/MainWindow.ui" line="1375"/> <source>Hide/Show the GeoImage dock</source> <translation>Сховати/Показати панель GeoImage</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1378"/> <source>Ctrl+E</source> <translation>Ctrl+E</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1383"/> <source>World OSB manager...</source> <translation>Менеджер OSB World…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1391"/> <source>&Shortcut Editor...</source> <translation>&Комбінації клавіш…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1401"/> <source>&Merge...</source> <translation>З’&єднати…</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1411"/> <source>&Add member</source> <translation>&Додати елемент</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1416"/> <source>&Remove member</source> <translation>&Вилучити елемент</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1424"/> <source>&Never</source> <translation>&ніколи</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1432"/> <source>for &Oneway roads</source> <translation>для &односторонніх доріг</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1440"/> <source>&Always</source> <translation>&завжди</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1449"/> <source>&Detach</source> <translation>&Від’єднати</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1452"/> <source>Detach node from a road</source> <translation>Від’єднати точку від дороги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1455"/> <source>Detach a node from a Road</source> <translation>Від’єднати точку від дороги</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1467"/> <source>&Work Offline</source> <translation>&Працювати оффлайн</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1472"/> <source>SVG</source> <translation>Векторний малюнок (SVG)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1480"/> <source>&Styles</source> <translation>&Стилі</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1483"/> <location filename="../src/MainWindow.ui" line="1486"/> <source>Hide/Show the Styles dock</source> <translation>Сховати/Показати панель Стилів</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1489"/> <source>Ctrl+B</source> <translation>Ctrl+B</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1504"/> <source>&Reset Discardable dialogs status</source> <translation>&Перевстановити стан діалогу Discardable</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1513"/> <source>GPS Menu</source> <translation>Меню GPS</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1522"/> <source>Camera</source> <translation>Камера</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1527"/> <source>Create &Junction</source> <translation>Створити &перехрестя</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1539"/> <source>Rotate</source> <translation>Обертання</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1542"/> <source>Ctrl+A</source> <translation>Ctrl+A</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1113"/> <source>Paste Feature(s)</source> <translation>Вставити елемент(и)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1565"/> <source>Features</source> <translation>Елементи</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1570"/> <source>Add street &numbers (Karlsruhe scheme)</source> <translation>&Додати номер вулиці (схема Карлсрує)</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1593"/> <source>Show &virtual nodes</source> <translation>Показувати в&ірутальні точки</translation> </message> <message> <location filename="../src/MainWindow.ui" line="1601"/> <source>Show lat/lon &grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1609"/> <source>&Lock zoom to tiled background</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1614"/> <source>&Projections Editor...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1622"/> <source>Show &Photos on map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1627"/> <source>OsmChange (OSC)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1632"/> <source>Force Delete</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/MainWindow.ui" line="1642"/> <source>Close</source> <translation>Закрити</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="794"/> <source>Relation Modified %1</source> <translation>Відношення %1 змінено</translation> </message> <message> <location filename="../src/Interactions/EditInteraction.cpp" line="301"/> <source>Delete Children.</source> <translation>Вилучити нащадків.</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Unresolved conflicts</source> <translation>Нерозв’язувані конфлікти</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4443"/> <source>Please resolve existing conflicts first</source> <translation>Будь ласка, розв’яжіть поточні конфлікти</translation> </message> <message> <location filename="../src/MainWindow.cpp" line="4467"/> <source>It is strongly recommended to save the changes to your document after an upload. Do you want to do this now?</source> <translation>Ми радимо зберегти зміни у вашому документі після його відправи. Бажаєте зробити це зараз?</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="131"/> <location filename="../src/common/TagModel.cpp" line="162"/> <source>Set Tags on multiple features</source> <translation>Встановити теґи для кількох елементів</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="133"/> <location filename="../src/common/TagModel.cpp" line="164"/> <source>Set Tags on %1</source> <translation>Встановити теґ для %1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="720"/> <source>Clear %1 tags on %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="853"/> <location filename="../src/Docks/PropertiesDock.cpp" line="898"/> <source>Reorder members in relation %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ExtrudeInteraction.cpp" line="124"/> <source>Extrude Road %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="39"/> <source>HOVER to select;LEFT-DRAG to scale</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="44"/> <source>Scale Interaction</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Interactions/ScaleInteraction.cpp" line="139"/> <source>Scale Feature</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="753"/> <source>Set "source" tag on %1</source> <translation type="unfinished"></translation> </message> </context> <context> <name>MapFeature</name> <message> <location filename="../src/Features/Feature.cpp" line="1072"/> <source><i>V: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1074"/> <source><i>last: </i><b>%1</b> by <b>%2</b></source> <translation><i>ост.: </i><b>%1</b> от <b>%2</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1076"/> <source><i>last: </i><b>%1</b></source> <translation><i>ост.: </i><b>%1</b></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1079"/> <source><br/><i>layer: </i><b>%1</b> </source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Feature.cpp" line="1103"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>size</source> <translation>розмір</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="704"/> <source>members</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="707"/> <location filename="../src/Features/Way.cpp" line="916"/> <source>Topleft</source> <translation>Верхній лівий кут</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="709"/> <location filename="../src/Features/Way.cpp" line="918"/> <source>Botright</source> <translation>Правий нижній кут</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="711"/> <source>Relation</source> <translation>Відношення</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="773"/> <source>Role</source> <translation>Роль</translation> </message> <message> <location filename="../src/Features/Relation.cpp" line="775"/> <source>Member</source> <translation>Член</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="908"/> <source>Closed way</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Features/Way.cpp" line="911"/> <source>Length</source> <translation>Довжина</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>Size</source> <translation>Розмір</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="913"/> <source>%1 nodes</source> <translation>точок - %1</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Area</source> <translation>Ділянка</translation> </message> <message> <location filename="../src/Features/Way.cpp" line="920"/> <source>Way</source> <translation>Шлях</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="372"/> <location filename="../src/Features/Node.cpp" line="635"/> <source>coord</source> <translation>коорд</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="638"/> <source>elevation</source> <translation>висота</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="640"/> <source>speed</source> <translation>швидкість</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="375"/> <location filename="../src/Features/Node.cpp" line="642"/> <source>description</source> <translation>опис</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="377"/> <location filename="../src/Features/Node.cpp" line="644"/> <source>comment</source> <translation>коментар</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="371"/> <location filename="../src/Features/Node.cpp" line="634"/> <source>Waypoint</source> <translation>Точки дороги</translation> </message> <message> <location filename="../src/Features/Node.cpp" line="379"/> <location filename="../src/Features/Node.cpp" line="646"/> <source>Node</source> <translation>Точка</translation> </message> </context> <context> <name>MapView</name> <message> <location filename="../src/common/MapView.cpp" line="384"/> <source>%1 m</source> <translation>%1 м</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="386"/> <source>%1 km</source> <translation>%1 км</translation> </message> <message> <location filename="../src/common/MapView.cpp" line="339"/> <source>%1 m/pixel</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="345"/> <source>Align: %1m @ %2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="351"/> <source>%1ms</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1147"/> <source>View</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1148"/> <source>Bounding Box</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/MapView.cpp" line="1160"/> <source>Projection</source> <translation>Проекція</translation> </message> </context> <context> <name>MerkaartorPreferences</name> <message> <location filename="../src/Preferences/BookmarksList.cpp" line="20"/> <location filename="../src/Preferences/BookmarksList.cpp" line="27"/> <source>New Bookmark</source> <translation>Нова Закладка</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>Preferences upload failed</source> <translation>Невдача завантаження параметрів</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="515"/> <source>Duplicate key</source> <translation>Дублювати ключ</translation> </message> <message> <location filename="../src/Preferences/MerkaartorPreferences.cpp" line="518"/> <source>More than 150 preferences</source> <translation>Більше ніж 150 параметрів</translation> </message> <message> <location filename="../src/Preferences/TmsServersList.cpp" line="20"/> <location filename="../src/Preferences/TmsServersList.cpp" line="38"/> <location filename="../src/Preferences/WmsServersList.cpp" line="20"/> <location filename="../src/Preferences/WmsServersList.cpp" line="40"/> <source>New Server</source> <translation>Новий сервер</translation> </message> </context> <context> <name>MultiProperties</name> <message> <location filename="../src/common/MultiProperties.ui" line="13"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="33"/> <source>Tags</source> <translation>Теґи</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="53"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/common/MultiProperties.ui" line="73"/> <source>Selected items</source> <translation>Обрані елементи</translation> </message> </context> <context> <name>NameFinder::NameFinderTableModel</name> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="68"/> <source>Class</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="71"/> <source>Name</source> <translation>Назва</translation> </message> <message> <location filename="../src/NameFinder/namefindertablemodel.cpp" line="74"/> <source>Unknown field</source> <translation>Невідоме поле</translation> </message> </context> <context> <name>NameFinder::NameFinderWidget</name> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="91"/> <source>Error!</source> <translation>Помилка!</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="95"/> <source>Name finder service host not found.</source> <translation>Сервер сервісу пошуку назв не знайдено.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="98"/> <source>Name finder service host refused connection.</source> <translation>Сервер сервісу пошуку назв відмовив у з’єднанні.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="101"/> <source>Name finder service requires authentication.</source> <translation>Сервер сервісу пошуку назв потребує автентифікації.</translation> </message> <message> <location filename="../src/NameFinder/namefinderwidget.cpp" line="103"/> <source>Unknown error.</source> <translation>Невідома помилка.</translation> </message> </context> <context> <name>NameFinderWidgetUi</name> <message> <location filename="../src/NameFinder/namefinderwidget.ui" line="14"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> </context> <context> <name>NativeRenderDialog</name> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>Output filename</source> <translation>Ім’я вихідного файлу</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <source>PDF files (*.pdf)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>untitled</source> <translation>без назви</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="161"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>All Files (*)</source> <translation>Всі файли (*)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="194"/> <source>Image files (*.png *.jpg)</source> <translation>Файли зображень (*.png *.jpg)</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.cpp" line="231"/> <source>SVG files (*.svg)</source> <translation>Файли SVG (*.svg)</translation> </message> </context> <context> <name>NativeRenderWidget</name> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="14"/> <source>Raster/SVG export</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="26"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="49"/> <source>min lat/Lon</source> <translation>мін дов/шир</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="90"/> <source>max lat/Lon</source> <translation>макс дов/шир</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="174"/> <source>Show Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="181"/> <source>Show Relations</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="191"/> <source>Show Scale</source> <translation>Показати Масштаб</translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="204"/> <source>Show Lat/Lon Grid</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="214"/> <source>Show unstyled features</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="232"/> <source>Export to PDF...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="239"/> <source>Export to SVG...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Render/NativeRenderDialog.ui" line="246"/> <source>Export to Raster...</source> <translation type="unfinished"></translation> </message> </context> <context> <name>OsmServerWidget</name> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="14"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="25"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="35"/> <location filename="../src/Preferences/OsmServerWidget.ui" line="46"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="74"/> <source>User:</source> <translation>Логін:</translation> </message> <message> <location filename="../src/Preferences/OsmServerWidget.ui" line="84"/> <source>Pwd:</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PaintStyleEditor</name> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="50"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="51"/> <source>Always</source> <translation>Завжди</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="313"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="331"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="372"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="455"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="543"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="574"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="650"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="756"/> <location filename="../src/PaintStyle/PaintStyleEditor.cpp" line="803"/> <source>Select Color</source> <translation>Виберіть колір</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="14"/> <source>Map style editor</source> <translation>Редактор стилів мапи</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="20"/> <source>Global</source> <translation>Загальні параметри</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="37"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="456"/> <source>Background</source> <translation>Фон</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="53"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="96"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="273"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="340"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="486"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="681"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="791"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="997"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1289"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1363"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1608"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="206"/> <source>Filter</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="230"/> <source>Add</source> <translation>Додати</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="237"/> <source>Remove</source> <translation>Вилучити</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="244"/> <source>Duplicate</source> <translation>Дублювати</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="330"/> <source>Tag selection</source> <translation>Вибір теґу</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="357"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="413"/> <source>meter/pixel</source> <translation>метрів на піксель</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="383"/> <source>Visible up to</source> <translation>Показувати при</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="390"/> <source>Visible from scale</source> <translation>Показувати при масштабі</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="470"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="775"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1347"/> <source>Draw with color</source> <translation>Креслити кольором</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="142"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="532"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="837"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1043"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1216"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1457"/> <source>Proportional thickness</source> <translation>Пропорційна товщина</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="80"/> <source>Nodes</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="162"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="552"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="857"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1063"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1236"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1477"/> <source>Fixed thickness</source> <translation>Фіксована товщина</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="614"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1125"/> <source>Dashed</source> <translation>Пунктир</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="628"/> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1139"/> <source>off</source> <translation>проміжок</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="665"/> <source>Fill area</source> <translation>Залити ділянку кольором</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="730"/> <source>Fill with Touchup icon</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="761"/> <source>Boundary</source> <translation>Межі</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="913"/> <source>Interior</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="923"/> <source>Exteriror</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="967"/> <source>Touchup</source> <translation>Підказки</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="981"/> <source>Draw steps</source> <translation>Креслити кроки</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1176"/> <source>Draw icon</source> <translation>Показати піктограму</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1273"/> <source>Draw Traffic Direction Marks</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1333"/> <source>Label</source> <translation>Мітки</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1370"/> <source>Font</source> <translation>Шрифт</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1417"/> <source>Label tag</source> <translation>Теґ мітки</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1533"/> <source>Halo</source> <translation>Ореол</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1543"/> <source>Area</source> <translation>Ділянка</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1592"/> <source>Draw with background color</source> <translation>Залити фон кольором</translation> </message> <message> <location filename="../src/PaintStyle/PaintStyleEditor.ui" line="1648"/> <source>Label with background tag</source> <translation>Мітка з позначкою фону</translation> </message> </context> <context> <name>PhotoLoadErrorDialog</name> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="14"/> <source>No Valid geotag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="20"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="27"/> <source>This photo does not contain geo-tagging EXIF data. What do you want to do next?</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="44"/> <source>Try to match with a track node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="63"/> <source>Load without associated node</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="73"/> <source>Extract info from barcode (Walking Papers)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="89"/> <source>Ignore it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PhotoLoadErrorDialog.ui" line="99"/> <source>Do this for all current photos.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PictureViewerDialog</name> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Output filename</source> <translation>Ім’я вихідного файлу</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <source>SVG files (*.svg)</source> <translation>Файли SVG (*.svg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>untitled</source> <translation>без назви</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="40"/> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>All Files (*)</source> <translation>Всі файли (*)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.cpp" line="56"/> <source>Image files (*.png *.jpg)</source> <translation>Файли зображень (*.png *.jpg)</translation> </message> <message> <location filename="../src/Utils/PictureViewerDialog.ui" line="13"/> <source>Dialog</source> <translation>Надсилання змін</translation> </message> </context> <context> <name>PreferencesDialog</name> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="162"/> <source>English</source> <translation>English — Англійська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="163"/> <source>Arabic</source> <translation>Arabic — Арабська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="164"/> <source>Croatian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="165"/> <source>Czech</source> <translation>Czech — Чеська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="167"/> <source>German</source> <translation>German — Німецька</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="168"/> <source>French</source> <translation>French — Французька</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="169"/> <source>Hungarian</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="170"/> <source>Italian</source> <translation>Italian — Італійська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="171"/> <source>Japanese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="172"/> <source>Polish</source> <translation>Polish — Польська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="174"/> <source>Brazilian Portuguese</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="175"/> <source>Russian</source> <translation>Russian — Російська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="723"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="503"/> <source>Custom styles directory</source> <translation>Тека власних стилів</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="809"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Tag Template</source> <translation>Шаблон теґів</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="512"/> <source>Merkaartor tag template (*.mat)</source> <translation>Шаблон теґів Merkaartor (*.mat)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="521"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="534"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="547"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="560"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="573"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="586"/> <location filename="../src/Preferences/PreferencesDialog.cpp" line="598"/> <source>Select Color</source> <translation>Виберіть колір</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="613"/> <source>Tool already exists</source> <translation>Інструмент вже існує</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="614"/> <source>A tool of this name already exists. Please select another name or click the <Apply> button if you want to modify the existing one</source> <translation>Інструмент з таким іменем вже Існує. Оберіть інше ім’я, або натисніть <Apply>, якщо бажаєте змінити існуючий</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="633"/> <source>Cannot delete preset tool</source> <translation>Неможливо вилучити предналаштований інструмент</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="634"/> <source>Cannot delete preset tool "%1"</source> <translation>Неможливо вилучити предналаштований інструмент "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="652"/> <source>Cannot modify preset tool name</source> <translation>Неможливо змінити предналаштований інструмент</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="653"/> <source>Cannot modify preset tool "%1"'s name</source> <translation>Неможливо змінити предналаштований інструмент "%1"</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="678"/> <source>Select tool executable</source> <translation>Вкажіть виконавчий файл інструмента</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Select template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="686"/> <source>Merkaartor document (*.mdc)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="694"/> <source>Select Log directory</source> <translation>Вкажіть теку для журналів</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="15"/> <source>Preferences</source> <translation>Параметри</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="575"/> <source>Locale</source> <translation>Мова</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="581"/> <source>You may need to restart the program for these changes to take effect</source> <translation>Потрібно перезапустити програму, щоб зміни набули сили</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="590"/> <source>Use language</source> <translation>Використовувати мову</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="625"/> <source>Translate standard tags</source> <translation>Перекладати стандартні теґи</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="28"/> <source>Visual</source> <translation>Вигляд</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="34"/> <source>General</source> <translation>Загальний</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="42"/> <source>Zoom Out/in (%)</source> <translation>Масштаб -/+ (%)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="66"/> <source>Opacity low/high</source> <translation>Непрозорість мін/макс</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="118"/> <source>Separate Move mode</source> <translation>Окремий режим для переміщення</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="97"/> <source>Single mouse button interaction</source> <translation>Миша з однією кнопкою</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="104"/> <source>Use custom Qt style</source> <translation>Власний стиль Qt</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="125"/> <source>Use Virtual nodes (new session required)</source> <translation>Використовувати віртуальні точки (потрібно створити новий сеанс)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="165"/> <source>Colors</source> <translation>Кольори</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="171"/> <source>Background</source> <translation>Фон</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="186"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="236"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="301"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="347"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="393"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="446"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="513"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="746"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="864"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="995"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1219"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1555"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="199"/> <source>Overwrite style</source> <translation>Замінити стиль</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="431"/> <source>Hover</source> <translation>Під вказівником</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="252"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="317"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="363"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="409"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="462"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="529"/> <source>Pixels</source> <translation>Пікселів</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="498"/> <source>Highlight</source> <translation>Підсвічування</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="491"/> <source>Focus</source> <translation>Обране</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="484"/> <source>Relations</source> <translation>Відношення</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="221"/> <source>GPX track</source> <translation>Треки GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="259"/> <source>Use simple GPX track appearance</source> <translation>Простий вигляд треків GPX</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="715"/> <source>Map style</source> <translation>Стиль мапи</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="757"/> <source>Current style</source> <translation>Поточний стиль</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="779"/> <source>Disable styles for track layers</source> <translation>Не використовувати стилі для шарів з треками</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="803"/> <source>Template</source> <translation>Шаблони</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="817"/> <source>Built-in</source> <translation>Вбудований</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="841"/> <source>Custom</source> <translation>Власний</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="890"/> <source>Data</source> <translation>Дані</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="979"/> <source>Autoload template document</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1277"/> <source>Password:</source> <translation>Пароль:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="968"/> <source>Documents</source> <translation>Документи</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="111"/> <source>Allow node/way creation in select mode</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="551"/> <source>Dirty</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="646"/> <source>Rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="652"/> <source>Options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="658"/> <source>Use Anti-aliasing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="665"/> <source>Disable Anti-alisaing while panning</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="672"/> <source><html><head/><body><p>If enabled, wireframe rendering (View-Wireframe) will use the current style for colors and fill. Only the fixed thickness will be used for width. </p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="675"/> <source>Use current style for wireframe rendering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="685"/> <source>Editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="691"/> <source>Quick editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="698"/> <source>Wireframe editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="705"/> <source>Full render editing</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="902"/> <source>OSM API (URL is, e.g., "http://www.openstreetmap.org/api/0.6"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="916"/> <source>XAPI</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="924"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="956"/> <source>URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="945"/> <source>Nominatim (Geo Search)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1004"/> <source>Autosave documents after upload</source> <translation>Автоматично зберігати документ після надсилання</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1014"/> <source>Tracks</source> <translation>Треки</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1022"/> <source>Automatically extract tracks on open</source> <translation>Видобувати треки під час відкриття</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1029"/> <source>Track layers readonly by default</source> <translation>Шар треків тільки для читання</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1040"/> <source>Don't connect GPX nodes separated by more than (in km; 0 to disable)</source> <translation>Не з’єднувати точки GPX на відстані більше (в км, 0 - з’єднувати)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1059"/> <source>GDAL</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1065"/> <source>Confirm projection</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1089"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1095"/> <source>GPS input</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1101"/> <source>gpsd</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1108"/> <source>Serial</source> <translation>Послідовний</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1130"/> <location filename="../src/Preferences/PreferencesDialog.ui" line="1168"/> <source>Port</source> <translation>Порт</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1158"/> <source>Host</source> <translation>Хост</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1196"/> <source>Save NMEA log</source> <translation>Зберегти журнал NMEA</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1237"/> <source>Set system time to GPS</source> <translation>Встановити системний час по GPS</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1258"/> <source>Network</source> <translation>Мережа</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1264"/> <source>Proxy settings</source> <translation>Параметри проксі сервера</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1270"/> <source>Use Proxy</source> <translation>Використовувати проксі</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1300"/> <source>User:</source> <translation>Логін:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1307"/> <source>Port:</source> <translation>Порт:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1314"/> <source>Host:</source> <translation>Адреса:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1365"/> <source>Network Timeout (sec)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1403"/> <source>Enable JOSM-compatible local server on port 8111</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1424"/> <source>Background Image</source> <translation>Фонове зображення</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1430"/> <source>Tiles Caching (not active for Yahoo! due to legal restrictions)</source> <translation>Кеш плиток (не застосовується для !Yahoo)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1436"/> <source>Cache directory</source> <translation>Тека кешу</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1446"/> <source>Cache size (in Mb; 0 to disable)</source> <translation>Розмір кешу (в МБ; 0 не використовувати)</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1465"/> <source>Map Adapter</source> <translation>Адаптер мапи</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1471"/> <source>Automatically add "source" tag when creating features over a background map</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1500"/> <source>Tools</source> <translation>Інструменти</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1518"/> <source>Name:</source> <translation>Назва:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1528"/> <source>Path:</source> <translation>Путь:</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1577"/> <source>Apply</source> <translation>Застосувати</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1584"/> <source>Add</source> <translation>Додати</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="1591"/> <source>Remove</source> <translation>Вилучити</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="166"/> <source>Dutch</source> <translation>Голландська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="173"/> <source>Portuguese</source> <translation>Португальська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="176"/> <source>Slovak</source> <translation>Словацька</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="177"/> <source>Spanish</source> <translation>Іспанська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="178"/> <source>Swedish</source> <translation>Шведська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.cpp" line="179"/> <source>Ukrainian</source> <translation>Українська</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="132"/> <source>Relations selectable while hidden</source> <translation>Зв’язки можна виділяти, коли вони приховані</translation> </message> <message> <location filename="../src/Preferences/PreferencesDialog.ui" line="287"/> <source>Interface</source> <translation>Інтерфейс</translation> </message> </context> <context> <name>ProjPreferencesDialog</name> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="14"/> <source>Projections setup</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="20"/> <source>Projections</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="47"/> <source>Projection list:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="76"/> <source>Name:</source> <translation>Назва:</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="93"/> <source>PROJ4 string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="105"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="127"/> <source>Apply</source> <translation>Застосувати</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="134"/> <source>Add</source> <translation>Додати</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.ui" line="141"/> <source>Remove</source> <translation>Вилучити</translation> </message> <message> <location filename="../src/Preferences/ProjPreferencesDialog.cpp" line="48"/> <source>Please specify projection</source> <translation type="unfinished"></translation> </message> </context> <context> <name>Projection</name> <message> <location filename="../src/common/Projection.cpp" line="331"/> <source>Document</source> <translation type="unfinished"></translation> </message> </context> <context> <name>ProjectionChooser</name> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="20"/> <source>Dialog</source> <translation>Надсилання змін</translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="28"/> <source>Predefined</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="35"/> <source>Standard (EPSG:...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="61"/> <source>Custom PROJ4(+proj=...)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.ui" line="71"/> <source>WKT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Error in WKT string</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="81"/> <location filename="../src/Utils/ProjectionChooser.cpp" line="104"/> <source>Cannot export to PROJ4 format</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/ProjectionChooser.cpp" line="96"/> <source>Invalid WKT string</source> <translation type="unfinished"></translation> </message> </context> <context> <name>PropertiesDialog</name> <message> <location filename="../src/common/PropertiesDialog.ui" line="14"/> <source>Properties</source> <translation>Властивості</translation> </message> </context> <context> <name>PropertiesDock</name> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="339"/> <source>%1/%1 selected item(s)</source> <translation>обрано елементів %1/%1</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="362"/> <source>%1/%2 selected item(s)</source> <translation>обрано елементів %1/%2</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="425"/> <source>Selected items</source> <translation>Обрані елементи</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="434"/> <source>Properties - Multiple elements</source> <translation>Властивості - Кілка елементів</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="466"/> <source>Properties - Road</source> <translation>Властивості — Дорога</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="487"/> <source>Properties - Relation</source> <translation>Властивості - Відношення</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="499"/> <location filename="../src/Docks/PropertiesDock.cpp" line="1157"/> <source>Properties</source> <translation>Властивості</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1048"/> <source>Error reading template file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1158"/> <source>Center map</source> <translation>Центрувати мапу</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1159"/> <source>Center && Zoom map</source> <translation>Центрувати та масштабувати мапу</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="1160"/> <source>Select member</source> <translation>Вкажіть членів</translation> </message> <message> <location filename="../src/Docks/PropertiesDock.cpp" line="451"/> <source>Properties - Node</source> <translation>Властивості — Точка</translation> </message> </context> <context> <name>QApplication</name> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <source>Exporting GPX...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ExportGPX.cpp" line="45"/> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Cancel</source> <translation>Відміна</translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="341"/> <location filename="../src/ImportExport/ImportExportPBF.cpp" line="565"/> <source>Importing...</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportExportGdal.cpp" line="391"/> <source>Imported: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Commands/DocumentCommands.cpp" line="132"/> <source>Cascaded cleanup</source> <translation>Каскадне очищення</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="66"/> <location filename="../src/Commands/FeatureCommands.cpp" line="74"/> <location filename="../src/Commands/FeatureCommands.cpp" line="188"/> <source>Set Tag '%1=%2' on %3</source> <translation>Встановлено теґ '%1=%2' для %3</translation> </message> <message> <location filename="../src/Commands/FeatureCommands.cpp" line="314"/> <location filename="../src/Commands/FeatureCommands.cpp" line="400"/> <source>Clear Tag '%1' on %2</source> <translation>Стерто теґ '%1' для %2</translation> </message> <message> <location filename="../src/Commands/NodeCommands.cpp" line="17"/> <location filename="../src/Commands/NodeCommands.cpp" line="25"/> <location filename="../src/Commands/NodeCommands.cpp" line="111"/> <source>Move node %1</source> <translation>Пересунути точку %1</translation> </message> <message> <location filename="../src/ImportExport/ImportExportOSC.cpp" line="59"/> <source>Import osmChange</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/ImportExport/ImportNGT.cpp" line="21"/> <source>Import NGT</source> <translation>Імпорт NGT</translation> </message> <message> <location filename="../src/ImportExport/ImportNMEA.cpp" line="45"/> <source>Import NMEA</source> <translation>Імпорт NMEA</translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Bing Road Detect</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="767"/> <source>Cannot get output.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="777"/> <source>No valid data.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/FeatureManipulations.cpp" line="782"/> <source>Cannot parse output.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QGPS</name> <message> <location filename="../src/GPS/qgps.cpp" line="91"/> <location filename="../src/GPS/qgps.cpp" line="150"/> <source>Invalid</source> <translation>Хибне</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="93"/> <location filename="../src/GPS/qgps.cpp" line="165"/> <location filename="../src/GPS/qgps.cpp" line="222"/> <source>No Fix</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="94"/> <location filename="../src/GPS/qgps.cpp" line="170"/> <location filename="../src/GPS/qgps.cpp" line="223"/> <source>No Time</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="135"/> <source>Meters</source> <translation>Метри</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="140"/> <source>km/h</source> <translation>км/г</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="147"/> <source>Unavailable</source> <translation>Недоступно</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="153"/> <source>2D</source> <translation>2D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="156"/> <source>3D</source> <translation>3D</translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="162"/> <source>Fix OK</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgps.cpp" line="221"/> <source>GPS</source> <translation>GPS</translation> </message> </context> <context> <name>QGPSComDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="689"/> <source>GPS log error</source> <translation>Помилка запису GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="690"/> <source>Unable to create GPS log file: %1.</source> <translation>Неможливо створити файл журналу GPS:%1.</translation> </message> </context> <context> <name>QGPSDDevice</name> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="971"/> <source>Unable to connect to %1:%2</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1090"/> <source>GPS log error</source> <translation>Помилка запису GPS</translation> </message> <message> <location filename="../src/GPS/qgpsdevice.cpp" line="1091"/> <source>Unable to create GPS log file: %1.</source> <translation>Неможливо створити файл журналу GPS:%1.</translation> </message> </context> <context> <name>QGPSMainWindowUI</name> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="14"/> <source>GPS</source> <translation>GPS</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="22"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="29"/> <source>TextLabel</source> <translation>TextLabel</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="63"/> <location filename="../src/GPS/qgpsmainwindowui.ui" line="80"/> <source>99 99' 99"</source> <translation>99 99' 99"</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="70"/> <source>Longitude</source> <translation>Довгота</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="87"/> <source>Altitude</source> <translation>Висота</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="97"/> <source>1000 meter</source> <translation>1000 метрів</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="104"/> <source># Satellites</source> <translation>Супутники — #</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="114"/> <source>00</source> <translation>00</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="121"/> <source>Fix Type</source> <translation>Позиціювання</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="131"/> <source>Invalid</source> <translation>Хибне</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="138"/> <source>Speed</source> <translation>Швидкість</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="148"/> <source>000 km/h</source> <translation>000 км/г</translation> </message> <message> <location filename="../src/GPS/qgpsmainwindowui.ui" line="155"/> <source>Latitude</source> <translation>Широта</translation> </message> </context> <context> <name>QObject</name> <message> <location filename="../src/NameFinder/xmlstreamreader.cpp" line="45"/> <source>Not a proper results stream!</source> <translation>Не відповідний потік результатів!</translation> </message> </context> <context> <name>QtToolBarDialog</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1798"/> <source>< S E P A R A T O R ></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="16"/> <source>Customize Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="31"/> <source>Actions</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="46"/> <source>Toolbars</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="53"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="60"/> <source>Remove</source> <translation>Вилучити</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="67"/> <source>Rename</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="84"/> <source>Restore All</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="104"/> <source>OK</source> <translation>Так</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="111"/> <source>Apply</source> <translation>Застосувати</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="118"/> <source>Cancel</source> <translation>Відміна</translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="143"/> <source>Up</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="158"/> <source><-</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="173"/> <source>-></source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="188"/> <source>Down</source> <translation type="unfinished"></translation> </message> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.ui" line="213"/> <source>Current Toolbar Actions</source> <translation type="unfinished"></translation> </message> </context> <context> <name>QtToolBarDialogPrivate</name> <message> <location filename="../3rdparty/qttoolbardialog-2.2_1-opensource/src/qttoolbardialog.cpp" line="1247"/> <source>Custom Toolbar</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RelationProperties</name> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="14"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="31"/> <source>Members</source> <translation>Члени</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="51"/> <source>Remove selected member(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="54"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="84"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="100"/> <location filename="../src/Docks/MinimumRelationProperties.ui" line="167"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="122"/> <source>Tags</source> <translation>Теґи</translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="148"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="151"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRelationProperties.ui" line="164"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>RoadProperties</name> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="14"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="34"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="41"/> <source>Id</source> <translation>Ідентифікатор</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="61"/> <source>Tags</source> <translation>Теґи</translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="87"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="90"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="103"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumRoadProperties.ui" line="106"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>SatelliteStrengthView</name> <message> <location filename="../src/GPS/SatelliteStrengthView.cpp" line="50"/> <source>No satellites</source> <translation>Супутники відсутні</translation> </message> </context> <context> <name>SelectionDialog</name> <message> <location filename="../src/Utils/SelectionDialog.ui" line="14"/> <source>Selection</source> <translation>Пошук елементів</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="25"/> <source>Key</source> <translation>Ключ</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="32"/> <source>Value</source> <translation>Значення</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="45"/> <source>=</source> <translation>=</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="55"/> <source>Name</source> <translation>Назва</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="81"/> <source>Id</source> <translation>Ідентифікатор</translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="88"/> <source>Query</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/SelectionDialog.ui" line="106"/> <source>Maximum returned results (0 for all)</source> <translation type="unfinished"></translation> </message> </context> <context> <name>SlippyMapWidget</name> <message> <location filename="../src/Utils/SlippyMapWidget.cpp" line="277"/> <source>Reset view</source> <translation>Оновити вид</translation> </message> </context> <context> <name>SpecialLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="606"/> <source>Refresh layer</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="611"/> <source>Close</source> <translation>Закрити</translation> </message> </context> <context> <name>StyleDock</name> <message> <location filename="../src/Docks/StyleDock.cpp" line="102"/> <source>Styles</source> <translation>Стилі</translation> </message> </context> <context> <name>StyleDockWidget</name> <message> <location filename="../src/Docks/StyleDock.ui" line="14"/> <source>Styles</source> <translation>Стилі</translation> </message> </context> <context> <name>SyncListDialog</name> <message> <location filename="../src/Sync/SyncListDialog.ui" line="13"/> <source>Upload to Openstreetmap</source> <translation>Надіслати до Openstreetmap</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="25"/> <source>Please specify a comment for this changeset.</source> <translation>Надайте коментарі до цих змін.</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="35"/> <source>Please review carefully the changes sent to OSM</source> <translation>Будь ласка, уважно перегляньте зміни, що надсилаються до OSM</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="66"/> <source>OK</source> <translation>Так</translation> </message> <message> <location filename="../src/Sync/SyncListDialog.ui" line="73"/> <source>Cancel</source> <translation>Відміна</translation> </message> </context> <context> <name>TMSPreferencesDialog</name> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="14"/> <source>TMS servers setup</source> <translation>Налаштування серверів TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="20"/> <source>TMS Servers</source> <translation>Сервери TMS</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Перелік серверів:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Назва:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Адреса сервера (URL):</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="111"/> <source>Get Services</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="133"/> <source>Services :</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="143"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">This is a &quot;standard&quot; <a href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification">TMS</a> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="168"/> <source>Projection:</source> <translation>Проекція:</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="200"/> <source>Tile size:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="221"/> <source>Min zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="231"/> <source>Max zoom:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="248"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="262"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="176"/> <source>Mercator (EPSG:900913)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="181"/> <source>Lat/Lon (EPSG:4326)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="191"/> <source>Origin is bottom-left</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="289"/> <source>Apply</source> <translation>Застосувати</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="296"/> <source>Add</source> <translation>Додати</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.ui" line="303"/> <source>Remove</source> <translation>Вилучити</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="270"/> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Merkaartor: GetServices</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="217"/> <source>Address and Path cannot be blank.</source> <translation>Адреса та путь не можуть бути порожніми.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="271"/> <source>Download failed: %1.</source> <translation>Збій під час завантаження: %1.</translation> </message> <message> <location filename="../src/Preferences/TMSPreferencesDialog.cpp" line="280"/> <source>Error reading services. </source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagModel</name> <message> <location filename="../src/common/TagModel.cpp" line="105"/> <source>Key</source> <translation>Ключ</translation> </message> <message> <location filename="../src/common/TagModel.cpp" line="107"/> <source>Value</source> <translation>Значення</translation> </message> <message> <location filename="../src/common/TagModel.h" line="22"/> <source>Edit this to add...</source> <translation>Змініть, щоб додати…</translation> </message> </context> <context> <name>TagSelectorWidget</name> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="14"/> <source>Form</source> <translation>Подвійна дорога</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="34"/> <source>OR</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="44"/> <source>AND</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="54"/> <source>NOT</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="64"/> <source>...</source> <translation>...</translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="76"/> <source>is</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Utils/TagSelectorWidget.ui" line="81"/> <source>isoneof</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TagTemplateWidgetCombo</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="196"/> <source>Undefined</source> <translation>Невизначений</translation> </message> </context> <context> <name>TagTemplates</name> <message> <location filename="../src/TagTemplate/TagTemplate.cpp" line="913"/> <source>Undefined</source> <translation>Невизначений</translation> </message> </context> <context> <name>TerraceDialog</name> <message> <location filename="../src/common/TerraceDialog.ui" line="6"/> <source>Terrace</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="15"/> <source>No House Numbering</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="27"/> <source>Number of houses</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="46"/> <source>Add House Numbering (Karlsruhe scheme)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="68"/> <source>Ranges</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="81"/> <source>For example "1-9;15-17;19,19A"</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="88"/> <source>Pattern</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="99"/> <source>All numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="104"/> <source>Odd numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="109"/> <source>Even numbers</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/common/TerraceDialog.ui" line="123"/> <source>Optionally you can also select a node in the area and house numbering will start at that end.</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TrackLayer</name> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source># of track segments</source> <translation>сегментів треку — #</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="716"/> <source>%1</source> <translation>%1</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>Total distance</source> <translation>Загальна відстань</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="717"/> <source>%1 km</source> <translation>%1 км</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>Total duration</source> <translation>Загальна тривалість</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="718"/> <source>%1h %2m</source> <translation>%1г %2хв</translation> </message> <message> <location filename="../src/Layers/Layer.cpp" line="625"/> <source>Extract - %1</source> <translation>Видобування - %1</translation> </message> </context> <context> <name>TrackLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="562"/> <source>Extract Drawing layer</source> <translation>Видобути шар,що редагується</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="567"/> <source>Zoom</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="575"/> <source>Close</source> <translation>Закрити</translation> </message> </context> <context> <name>TrackPointProperties</name> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="14"/> <source>Trackpoint</source> <translation>Точка треку</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="34"/> <source>Latitude</source> <translation>Широта</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="44"/> <source>Longitude</source> <translation>Довгота</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="51"/> <source>Id</source> <translation>Ідентифікатор</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="58"/> <source>xxx</source> <translation>xxx</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="81"/> <source>Tags</source> <translation>Теґи</translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="107"/> <source>Add "source" tag</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="110"/> <source>S</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="123"/> <source>Remove selected tag(s)</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Docks/MinimumTrackPointProperties.ui" line="126"/> <source>...</source> <translation>...</translation> </message> </context> <context> <name>UploadMapDialog</name> <message> <location filename="../src/common/UploadMapDialog.ui" line="13"/> <source>Dialog</source> <translation>Надсилання змін</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="36"/> <source>Website</source> <translation>Сайт</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="49"/> <source>Password</source> <translation>Пароль</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="56"/> <source>Username</source> <translation>Логін</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="63"/> <source>Use proxy</source> <translation>Використовувати проксі</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="88"/> <source>Port</source> <translation>Порт</translation> </message> <message> <location filename="../src/common/UploadMapDialog.ui" line="104"/> <source>99999; </source> <translation>99999; </translation> </message> </context> <context> <name>UploadedLayerWidget</name> <message> <location filename="../src/Layers/LayerWidget.cpp" line="661"/> <source>Zoom</source> <translation>Масштаб</translation> </message> <message> <location filename="../src/Layers/LayerWidget.cpp" line="666"/> <source>Clear</source> <translation>Очистити</translation> </message> </context> <context> <name>WMSPreferencesDialog</name> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="408"/> <source>Merkaartor: GetCapabilities</source> <translation>Merkaartor: Отримання властивостей</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="346"/> <source>Address and Path cannot be blank.</source> <translation>Адреса та путь не можуть бути порожніми.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="409"/> <source>Download failed: %1.</source> <translation>Збій під час завантаження: %1.</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="557"/> <source>Unnamed</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.cpp" line="394"/> <source>Error reading capabilities. </source> <translation>Помилка читання властивостей. </translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="14"/> <source>WMS servers setup</source> <translation>Налаштування серверів WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="20"/> <source>WMS Servers</source> <translation>Сервери WMS</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="47"/> <source>Server list:</source> <translation>Перелік серверів:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="78"/> <source>Name:</source> <translation>Назва:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="99"/> <source>Server Url:</source> <translation>Адреса сервера (URL):</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="113"/> <source>Layers:</source> <translation>Шари:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="136"/> <source>1</source> <translation>1</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="144"/> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">This is a caching WMS (</span><a href="http://wiki.openstreetmap.org/wiki/Merkaartor/Documentation#WMS-C_Servers"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">WMS-C)</span></a><span style=" font-weight:600;"> server</span></p></body></html></source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="163"/> <source>Projection:</source> <translation>Проекція:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="194"/> <source>Tile it</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="214"/> <source>Zoom levels</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="239"/> <source>Image format:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="263"/> <source>Styles:</source> <translation>Стилі:</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="293"/> <source>"source" tag value:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="307"/> <source>License URL:</source> <translation type="unfinished"></translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="334"/> <source>Apply</source> <translation>Застосувати</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="341"/> <source>Add</source> <translation>Додати</translation> </message> <message> <location filename="../src/Preferences/WMSPreferencesDialog.ui" line="348"/> <source>Remove</source> <translation>Вилучити</translation> </message> </context> </TS> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/��������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11770671653�0015457�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/Makefile������������������������������������������������������������������0000664�0000000�0000000�00000005227�11770671653�0017125�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ToWin = `cygpath --windows $1` ToWin = $1 DOSWIXDIR := c:\\Program Files\\Windows Installer XML v3.6\\ LIGHT := "c:/Program Files/Windows Installer XML v3.6/bin/light.exe" CANDLE := "c:/Program Files/Windows Installer XML v3.6/bin/candle.exe" LRELEASE := "/cygdrive/c/QtSDK/Desktop/Qt/4.7.4/mingw/bin/lrelease.exe" VERSION=0.18 REVISION=.0 all: release debug svn release: merkaartor-$(VERSION)$(REVISION).msi svn: merkaartor-$(VERSION)-svn$(SVNREV).msi debug: merkaartor-$(VERSION)-svn$(SVNREV)-debug.msi qt-debug: merkaartor-qt-debug-$(VERSION).msi merkaartor-$(VERSION)-svn$(SVNREV).msi: merkaartor_svn.wixobj Makefile banner.bmp dialog.bmp merkaartor.qm $(LIGHT) $(call ToWin,$<) \ -dWixUILicenseRtf=..\\License.rtf \ -dWixUIBannerBmp=banner.bmp \ -dWixUIDialogBmp=dialog.bmp \ -ext "$(DOSWIXDIR)\\bin\\WixUiExtension.dll" \ -cultures:en-us \ -out "$(call ToWin,$@)" merkaartor-$(VERSION)$(REVISION).msi: merkaartor.wixobj Makefile banner.bmp dialog.bmp merkaartor.qm $(LIGHT) $(call ToWin,$<) \ -dWixUILicenseRtf=..\\License.rtf \ -dWixUIBannerBmp=banner.bmp \ -dWixUIDialogBmp=dialog.bmp \ -ext "$(DOSWIXDIR)\\bin\\WixUiExtension.dll" \ -cultures:en-us \ -out "$(call ToWin,$@)" merkaartor-$(VERSION)-svn$(SVNREV)-debug.msi: merkaartor_dbg.wixobj Makefile banner.bmp dialog.bmp merkaartor.qm $(LIGHT) $(call ToWin,$<) \ -dWixUILicenseRtf=..\\License.rtf \ -dWixUIBannerBmp=banner.bmp \ -dWixUIDialogBmp=dialog.bmp \ -ext "$(DOSWIXDIR)\\bin\\WixUiExtension.dll" \ -cultures:en-us \ -out "$(call ToWin,$@)" merkaartor-qt-debug-$(VERSION).msi: qt_dbg.wixobj Makefile banner.bmp dialog.bmp $(LIGHT) $(call ToWin,$<) \ -dWixUILicenseRtf=..\\License.rtf \ -dWixUIBannerBmp=banner.bmp \ -dWixUIDialogBmp=dialog.bmp \ -ext "$(DOSWIXDIR)\\bin\\WixUiExtension.dll" \ -cultures:en-us \ -out "$(call ToWin,$@)" merkaartor.wixobj: merkaartor.wxs defines.wxi qt.wxi qttrans.wxi Makefile $(CANDLE) $(call ToWin,$<) \ -dVERSION=$(VERSION) \ -dREVISION=$(REVISION) \ -out $(call ToWin,$@) merkaartor_svn.wixobj: merkaartor_svn.wxs defines_svn.wxi qt.wxi qttrans.wxi Makefile $(CANDLE) $(call ToWin,$<) \ -dVERSION=$(VERSION) \ -dREVISION=$(REVISION) \ -out $(call ToWin,$@) merkaartor_dbg.wixobj: merkaartor_dbg.wxs defines_dbg.wxi qt_dbg.wxi qttrans.wxi Makefile $(CANDLE) $(call ToWin,$<) \ -dVERSION=$(VERSION) \ -dREVISION=$(REVISION) \ -out $(call ToWin,$@) qt_dbg.wixobj: qt_dbg.wxs defines-qt_dbg.wxi qt_dbg.wxi qttrans.wxi Makefile $(CANDLE) $(call ToWin,$<) \ -dVERSION=$(VERSION) \ -dREVISION=$(REVISION) \ -out $(call ToWin,$@) merkaartor.qm: $(LRELEASE) ../src/src.pro clean: rm -rf *.msi *.wixobj *.wixpdb �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/banner.bmp����������������������������������������������������������������0000664�0000000�0000000�00000004374�11770671653�0017434�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������BM������6��(�����:�������������������������������������������ʦ�� @�� `�� �� �� �� ��@���@ ��@@��@`��@��@��@��@��`���` ��`@��``��`��`��`��`����� ��@��`������������� ��@��`������������� ��@��`������������� ��@��`���������@���@� �@�@�@�`�@��@��@��@��@ ��@ �@ @�@ `�@ �@ �@ �@ �@@��@@ �@@@�@@`�@@�@@�@@�@@�@`��@` �@`@�@``�@`�@`�@`�@`�@��@ �@@�@`�@�@�@�@�@��@ �@@�@`�@�@�@�@�@��@ �@@�@`�@�@�@�@�@��@ �@@�@`�@�@�@�@����� ��@��`��������� �� � @� `� � � � �@��@ �@@�@`�@�@�@�@�`��` �`@�``�`�`�`�`��� �@�`������� �@�`������� �@�`������� �@�`��������� ��@��`��������� �� � @� `� � � � �@��@ �@@�@`�@�@�@�@�`��` �`@�``�`�`�`�`��� �@�`������� �@�`������� �@�`������������������������������������������������������������PFkcQb��O bccbc�cbcbccc[[[[[c[[��O�b���II��R��[�[��R��I��O�b���II��R��[�[��R��I��O bccbkcbcbcbb��P kIG��������������z�����������������z������� � �������z�������������������z������������������z��� ������������z��� ������������z�������������������z��������������z����������������z���%�(��z���%�(��z���'�(�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/defines-qt_dbg.wxi��������������������������������������������������������0000664�0000000�0000000�00000001217�11770671653�0021064�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <?define PackageName = "Merkaartor for Windows: Qt debug libraries $(var.VERSION)" ?> <?define ProductVersion = "$(var.VERSION).1" ?> <?define SourcePath = ".."?> <!-- Specify here the paths to the elements of the package --> <?define QtPath = "d:\Qt\4.7.1" ?> <?define MingwPath = "c:\mingw" ?> <?define TranslationsPath = "$(var.SourcePath)" ?> <?define BinPath = "$(var.SourcePath)\binaries\bin" ?> <?define DllPath = "$(var.SourcePath)\binaries\bin" ?> <?define ShareBinPath = "$(var.SourcePath)\binaries\share" ?> <?define SharePath = "$(var.SourcePath)\share" ?> </Include> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/defines.wxi���������������������������������������������������������������0000664�0000000�0000000�00000001267�11770671653�0017633�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <?define PackageName = "Merkaartor for Windows $(var.VERSION)$(var.REVISION)" ?> <?define ProductVersion = "$(var.VERSION).0.1" ?> <?define SourcePath = ".."?> <!-- Specify here the paths to the elements of the package --> <?define QtPath = "c:\QtSDK\Desktop\Qt\4.7.4\mingw" ?> <?define MingwPath = "c:\QtSDK\Desktop\Qt\4.7.4\mingw" ?> <?define TranslationsPath = "$(var.SourcePath)" ?> <?define BinPath = "$(var.SourcePath)\binaries\bin" ?> <?define DllPath = "$(var.SourcePath)\binaries\bin" ?> <?define ShareBinPath = "$(var.SourcePath)\binaries\share" ?> <?define SharePath = "$(var.SourcePath)\share" ?> </Include> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/defines_dbg.wxi�����������������������������������������������������������0000664�0000000�0000000�00000001234�11770671653�0020441�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <?define PackageName = "Merkaartor for Windows $(var.VERSION)$(var.REVISION) (Debug version)" ?> <?define ProductVersion = "$(var.VERSION).0.1" ?> <?define SourcePath = ".."?> <!-- Specify here the paths to the elements of the package --> <?define QtPath = "d:\Qt\4.6.3" ?> <?define MingwPath = "c:\mingw" ?> <?define TranslationsPath = "$(var.SourcePath)" ?> <?define BinPath = "$(var.SourcePath)\binaries\bin" ?> <?define DllPath = "$(var.SourcePath)\binaries\bin" ?> <?define ShareBinPath = "$(var.SourcePath)\binaries\share" ?> <?define SharePath = "$(var.SourcePath)\share" ?> </Include> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/defines_svn.wxi�����������������������������������������������������������0000664�0000000�0000000�00000001150�11770671653�0020510�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <?define PackageName = "Merkaartor for Windows $(var.VERSION) (SVN revision $(var.REVISION))" ?> <?define SourcePath = ".."?> <!-- Specify here the paths to the elements of the package --> <?define QtPath = "d:\Qt\4.7.1" ?> <?define MingwPath = "C:\mingw" ?> <?define TranslationsPath = "$(var.SourcePath)" ?> <?define BinPath = "$(var.SourcePath)\binaries\bin" ?> <?define DllPath = "$(var.SourcePath)\binaries\bin" ?> <?define ShareBinPath = "$(var.SourcePath)\binaries\share" ?> <?define SharePath = "$(var.SourcePath)\share" ?> </Include> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/dialog.bmp����������������������������������������������������������������0000664�0000000�0000000�00000027016�11770671653�0017424�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������BM.������6��(�����8�������)�����������������������������������ʦ�� @�� `�� �� �� �� ��@���@ ��@@��@`��@��@��@��@��`���` ��`@��``��`��`��`��`����� ��@��`������������� ��@��`������������� ��@��`������������� ��@��`���������@���@� �@�@�@�`�@��@��@��@��@ ��@ �@ @�@ `�@ �@ �@ �@ �@@��@@ �@@@�@@`�@@�@@�@@�@@�@`��@` �@`@�@``�@`�@`�@`�@`�@��@ �@@�@`�@�@�@�@�@��@ �@@�@`�@�@�@�@�@��@ �@@�@`�@�@�@�@�@��@ �@@�@`�@�@�@�@����� ��@��`��������� �� � @� `� � � � �@��@ �@@�@`�@�@�@�@�`��` �`@�``�`�`�`�`��� �@�`������� �@�`������� �@�`������� �@�`��������� ��@��`��������� �� � @� `� � � � �@��@ �@@�@`�@�@�@�@�`��` �`@�``�`�`�`�`��� �@�`������� �@�`������� �@�`���������������������� �!j�bbJ�� ��J�� jbbJ�� ��J��rbbJ��s�k�J��s�kb�J��j�bk�J���k��J���j!�bb{��bJ����x bJ���j!�bbx bJ����wb�k�J���ii�bbwbJ���k�xJ���!i��kb�pb ��J���bk�nb����J���!j��k�lb� J��bbkb� J��j��ib�� J��bbgb�� J��r��ebk�� J��sbbdb� J��s�k�cb�� J��jkbcb�� J��bbc�k��� J��bb^ �� J���kb]b�� J���!��kb[b�� J���ar��bZb� J���jj��k�Xkb�� J���ji���Vb�� J���!���U�Zb��� J����S������ J���k�Q���� J���bQ ��  J���bP�� J���bkO�� J���!s�bbM�b� J���ij�bbLb���� J���ji��kbKkb�o�� J���s)��bJb�@� J���!��bJb�c�� J���k�Ibk� � J����J�� � � J����Cb� ���! J����Ab�� ���" J���!��k�@b�� % J���ar��b?kb��1 J���jj��bk=b��2 J���ji��bk<b�4 J���!�bb<b��5 J��bb=�kbk���6 J���kb7��8 J���b6b��9 J���k�4kb��; J���k�2b��< J���!s���1kb�> J���ij���/b��? J���jj��k�/bk��@ J���si��k�+b��B J���!��b*bk��C J���bk(b�E J���bc&b�kG J��bb$b��I J��kb$b�J J���!��kb#b�kL J���!s��b$� bkN J���jj��k�b�P J���ji��k�bc�R J���!���b�kT J����kb�YV J���b�bX J��bbbZ J���!j��k�bbZ J��bb kb� �[ J��j�k�b�k` J��bbb�kb J��j�k�b� �c J��bb�kb�e J�� rb�g J�� sb�i J��!s b�k J��!sb�b�m J��jb� k�o J��kbjb�Z�q J��b��r J�� b�j!��s J��b�s J��b�j!ۣ r J����b � � �r J�� kb�a� � �q J�� bk�� � �q J�� b�� � �p J��b� � �p J��b��  � �o J��bk��  � �o J��b��  � �n J��b��  � �n J��b�  � �m J��b  � �m J��k  � �l J��  � �l J���  � �k J����  � �k J����  � �j J����  � �j J����  � �i J�� ��  � �i J�� ��  � �h J�� ��  � �h J����"  � �g J����$  � �g J����&  � �f J����(  � �f J����)  � �e J���+  � �e J���-  � �d J����/  � �d J��1  � �c J��2  � �c J��3  � �b J��4  � �b J��4  � �a J��5  � �a J��5  � �` J��6  � �` J��6  � �] J��7  � �Z J��7  � �V ��J��8  � �S ��bJ��8  � �O ���bJ��9  � �L ��Yb�kbJ��9  � �I ����bJ��:  � �G ��bJ��:  � �C �� bkJ��;  � �A �b J��;  � �> ��b J��<  � �; ���kbJ��<  � �(  �ɢ�bJ��<  � �% �� �bJ��=  � �# ���� ��bkJ��=  � �" �@��� KbkJ��>  � �! �����bJ��>  � �! ���ȢkbJ��?  � � �o����b#J��?  � � �� ��ёb#J��@  � � � �@ o��ёb$J��@  � � � �@�ɑk%J��A  � � � � �'J��A  � � ��@ � (J��B  � � �  )J��B  � � ����b� ���)J��C  � � �b���+J��C  � � � �b-J��D  � � ��bk5J��D  � � ��b7J��E  � � ��kb:J��E  � � ���kbAJ��F  � bAJ��F  � kbAJ��G  � �bCJ��G  ��bEJ��H  �Y�bkGJ��H  �BbJ��I  ��bB�bkJ��I  �k�>bbJ��I  b�b�:�bk�b�J��J � b6b�kb�bJ��J ��b�b2�bk�bkJ��K �b�.�kb�kb �b�J��K bbb*�bkb �b�J��K Yb��&�kb�kbkJ��I �Ha�bbb"bbkJ��H �a!bk���kb�kbk��sjJ��H bbbbbiJ��H �!i����kb��kbk��j!�!sJ��G ��bbbb�si�jjJ��G ��!j����kbk��kbk�iassJ��F �b��bb bb�j!��!j� jJ��E kb�!j����kbk��bk�si�jsJ��D bbbbbiasjJ��C ��bj�kbk��bk�j!��!j�sJ��C �bb�kb�si�jjJ��B �bj�bkias sJ��A b�bkb��j!��!j�#sJ��@ �kb r�bk �si�j(sJ��@ ��b sias,sJ��? ��s�j!��!j�0J��> �bkj �si�j4sJ��> ��bias9J��= ��bj�j!��!j�<sJ��= ��b�rsi�jAJ��< ��bkjasEJ��< ��b�!j�HJ��; ��bc_J��: b_J��: ��b`J��9 b`J��9 ����aJ��8 hJ��8 ��iJ��7 eJ��7 ��bdJ��6 bcJ��6 ��bdJ��5 bdJ��5 ��beJ��4 beJ��4 ��bfJ��3 ��bfJ��3 ��bfJ��2 ��bgJ��2 bgJ��1 ��bhJ��0 bkhJ��0 ��bhJ��+ biJ��( �biJ��' ����biJ��& �@�����@bjJ��& �����kJ��& ��pJ��% �o�o�oJ��% �� ���mJ��% ��@ ��bklJ��% � �� ښblJ��& �� �Z�blJ��& �@ o�blJ��'  � �blJ��( ��bmJ��( ��bmJ��' kbmJ��' ��bnJ��& bnJ��& �� oJ��% {J��% ��|J��$ }J��$ �� �b�qJ��#  bpJ��# �� bpJ��"  bqJ��" �� bqJ��!  bqJ��! �� brJ�� �� brJ�� �� brJ�� �� bsJ��  �kb�sJ�� ��J�� J�� ��J��  uJ�� �� btJ��  btJ�� �� btJ�� btJ�� ��buJ�� ��buJ�� bkuJ�� ��buJ�� ��buJ�� bvJ�� ���vJ�� ��J�� ��J�� J�� �xJ�� ��kbkwJ�� ��bwJ�� bwJ�� �bwJ�� ��bwJ�� ��kbxJ�� bxJ�� �bkxJ�� ��bxJ�� ��bxJ�� byJ�� �bxJ�� ��kbyJ�� byJ�� byJ�� bkyJ�� �byJ�� byJ�� �byJ�� ��bzJ�� ��!��zJ�� J��� �J��� J����#��{J��#bzJ��#bzJ��$bzJ��%bzJ��%bzJ��%kb{J��%b{J��%b{J��%bk{J��%b{J��%��|J��$b}J��#b|J��#b|J��#b}J��"b}J��"b}J��"b~J���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/external.wxi��������������������������������������������������������������0000664�0000000�0000000�00000003717�11770671653�0020042�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <Fragment> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="DllCt" Guid="79C79986-ECB5-4835-9E98-4370C0F8B654"> <File Id="mingwm10.dll" Name="mingwm10.dll" Source="$(var.MingwPath)\bin\mingwm10.dll" DiskId="1"> </File> <File Id="libgcc_s_dw2" Name="libgcc_s_dw2-1.dll" Source="$(var.MingwPath)\bin\libgcc_s_dw2-1.dll" DiskId="1"> </File> <File Id="libgdal" Name="libgdal.dll" Source="$(var.DllPath)\libgdal.dll" DiskId="1"> </File> <File Id="libexpat1.dll" Name="libexpat-1.dll" Source="$(var.DllPath)\libexpat-1.dll" DiskId="1"> </File> <File Id="libxerces" Name="libxerces-c2_8_0.dll" Source="$(var.DllPath)\libxerces-c2_8_0.dll" DiskId="1"> </File> <File Id="libexiv2" Name="libexiv2-5.dll" Source="$(var.DllPath)\libexiv2-5.dll" DiskId="1"> </File> <File Id="libzbar0" Name="libzbar-0.dll" Source="$(var.DllPath)\libzbar-0.dll" DiskId="1"> </File> <File Id="zlib1.dll2" Name="zlib1.dll" Source="$(var.DllPath)\zlib1.dll" DiskId="1"> </File> <File Id="libspatialite.dll" Name="libspatialite-2.dll" Source="$(var.DllPath)\libspatialite-2.dll" DiskId="1"> </File> <File Id="libgeos_c.dll" Name="libgeos_c-1.dll" Source="$(var.DllPath)\libgeos_c-1.dll" DiskId="1"> </File> <File Id="libgeos.dll" Name="libgeos-3-2-2.dll" Source="$(var.DllPath)\libgeos-3-2-2.dll" DiskId="1"> </File> <File Id="libiconv2.dll" Name="libiconv2.dll" Source="$(var.DllPath)\libiconv2.dll" DiskId="1"> </File> </Component> </DirectoryRef> </Fragment> </Include> �������������������������������������������������merkaartor-0.18.1/windows/merkaartor.cmd������������������������������������������������������������0000664�0000000�0000000�00000003226�11770671653�0020316�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@Echo off :: :: Script to run merkaartor through gdb (easily?) :: (Original from the MythTV project) :: Echo COMMENTS: -------------------------------------- Echo COMMENTS: This script is used for gathering backtraces using gdb Echo COMMENTS: -------------------------------------- Echo. :: :gdbcommands :: :: Check for and Create if needed the .\gdbcommands.txt :: if not exist ./gdbcommands.txt ( echo handle SIGPIPE nostop noprint > .\gdbcommands.txt echo handle SIG33 nostop noprint >> .\gdbcommands.txt echo set logging on >> .\gdbcommands.txt echo set pagination off >> .\gdbcommands.txt :: echo set args -l myth.log --noupnp --nosched --nojobqueue --nohousekeeper --noautoexpire -v all >> .\gdbcommands.txt echo run >> .\gdbcommands.txt echo thread apply all bt full >> .\gdbcommands.txt echo set logging off >> .\gdbcommands.txt ) @Echo off Echo COMMENTS: -------------------------------------- Echo COMMENTS: Clearing old gdb.txt before running gdb again. Echo COMMENTS: -------------------------------------- Echo. :: :: add current data/time to gdb.txt :: will this be a bad idea? who knows? =) :: date /t > .\gdb.txt time /t >> .\gdb.txt :gdb :: :: gdb should be in the path. :: Echo COMMENTS: -------------------------------------- Echo COMMENTS: If you need to add any switches to merkaartor edit gdbcommands.txt Echo COMMENTS: -------------------------------------- Echo. Echo COMMENTS: -------------------------------------- Echo COMMENTS: Starting: gdb Echo COMMENTS: -------------------------------------- gdb .\merkaartor.exe -batch -q -x .\gdbcommands.txt Echo. Echo The backtrace can be found in .\gdb.txt Echo. pause ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/merkaartor.wxs������������������������������������������������������������0000664�0000000�0000000�00000013741�11770671653�0020377�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <?include defines.wxi?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" Name="$(var.PackageName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Merkaartor" UpgradeCode="4892C085-55A9-413b-9C7B-42E33ED7D7D2"> <Package Description="A map editor for OpenStreetMap.org" InstallerVersion="100" Compressed="yes" /> <Upgrade Id="4892C085-55A9-413b-9C7B-42E33ED7D7D2"> <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" /> <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="yes" /> </Upgrade> <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize" /> </InstallExecuteSequence> <!--Set the icon for the msi and Add/Remove programs--> <Icon Id='Merkaartor.exe' SourceFile='..\Icons\Merkaartor_16x16.ico'/> <Icon Id='MainIcon.exe' SourceFile='..\Icons\Merkaartor_48x48.ico'/> <Property Id="ARPPRODUCTICON" Value="Merkaartor.exe" /> <Property Id="ALLUSERS" Value="1"/> <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramMenuFolder"> </Directory> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="Merkaartor $(var.VERSION)$(var.REVISION)"> <Directory Id="MERKAARTORSHARE" Name="share"> </Directory> <Directory Id="MERKAARTORPLUGINS" Name="plugins"> <Directory Id="MPBACKGROUND" Name="background" /> <Directory Id="MPSTYLES" Name="styles" /> </Directory> <Directory Id="QTIMAGEPLUGINDIR" Name="imageformats" /> <Directory Id="QTTRANSLATIONS" Name="translations" /> </Directory> </Directory> </Directory> <DirectoryRef Id="MPBACKGROUND"> <Component Id="background_plug" Guid="A37E552D-FF55-4507-8C8D-3201993F7C48"> <!-- <File Id="MYahooBackgroundPlugin0.dll" Name="MYahooBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MYahooBackgroundPlugin0.dll" DiskId="1" /> <File Id="MYahooTiledBackgroundPlugin0.dll" Name="MYahooTiledBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MYahooTiledBackgroundPlugin0.dll" DiskId="1" /> --> <File Id="MGeoTiffBackgroundPlugin0.dll" Name="MGeoTiffBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MGeoTiffBackgroundPlugin0.dll" DiskId="1" /> <File Id="MWalkingPapersBackgroundPlugin0.dll" Name="MWalkingPapersBackgroundPlugid0.dll" Source="$(var.BinPath)\plugins\background\MWalkingPapersBackgroundPlugin0.dll" DiskId="1" /> <File Id="MCadastreFranceBackgroundPlugin0.dll" Name="MCadastreFranceBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MCadastreFranceBackgroundPlugin0.dll" DiskId="1" /> <File Id="MSpatialiteBackgroundPlugin0.dll" Name="MSpatialiteBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MSpatialiteBackgroundPlugin0.dll" DiskId="1" /> <File Id="MGdalBackgroundPlugin0.dll" Name="MGdalBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MGdalBackgroundPlugin0.dll" DiskId="1" /> <File Id="MMsBingMapBackgroundPlugin0.dll" Name="MMsBingMapBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MMsBingMapBackgroundPlugin0.dll" DiskId="1" /> </Component> </DirectoryRef> <DirectoryRef Id="MPSTYLES"> <Component Id="skulpture" Guid="47E06B1A-DBF5-452d-A68A-5F45CE411353"> <File Id="skulpture0.dll" Name="skulpture0.dll" Source="$(var.BinPath)\plugins\styles\skulpture0.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="Merkaartor" Guid="5FDB24DB-CE92-433c-8AC4-288551C6AF7B"> <RegistryValue Root="HKCU" Key="Software\Merkaartor $(var.VERSION)$(var.REVISION)" Name="Installed" Type="integer" Value="1"/> <File Id="MerkaartorExe" Name="Merkaartor.exe" Source="$(var.BinPath)\Merkaartor.exe" DiskId="1"> <Shortcut Id="myshort" Directory="ProgramMenuFolder" Name="Merkaartor $(var.VERSION)$(var.REVISION)" WorkingDirectory="INSTALLLOCATION" Icon="MainIcon.exe" /> </File> <File Id="Qgpsmm" Name="Qgpsmm.dll" Source="$(var.DllPath)\Qgpsmm19.dll" DiskId="1"> </File> </Component> </DirectoryRef> <Feature Id="MerkaartorFeature" Title="Merkaartor editor" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="DllCt" /> <ComponentRef Id="Merkaartor" /> <ComponentRef Id="background_plug" /> <ComponentRef Id="skulpture" /> <ComponentRef Id="proj4_bin" /> <ComponentRef Id="proj4_shr" /> </Feature> <Feature Id="QtMainFeature" Title="Main Qt DLLs" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="QtMain" /> </Feature> <Feature Id="QtImagePluginsFeature" Title="Qt Image Plugins DLLs" Level="1" Display="expand" ConfigurableDirectory="QTIMAGEPLUGINDIR"> <ComponentRef Id="QtImagePlugins" /> </Feature> <Feature Id="TranslationsFeature" Title="Translation files" Level="1" Display="expand" ConfigurableDirectory="QTTRANSLATIONS"> <ComponentRef Id="QtTranslations" /> <ComponentRef Id="MerkaartorTranslationsCt" /> </Feature> <UIRef Id="WixUI_Mondo"/> </Product> <?include qt.wxi?> <?include qttrans.wxi?> <?include external.wxi?> <?include proj4.wxi?> <?include merkaartor_trans.wxi?> </Wix> �������������������������������merkaartor-0.18.1/windows/merkaartor_dbg.wxs��������������������������������������������������������0000664�0000000�0000000�00000014427�11770671653�0021215�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <?include defines_dbg.wxi?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" Name="$(var.PackageName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Merkaartor" UpgradeCode="4892C085-55A9-413b-9C7B-42E33ED7D7D2"> <Package Description="A map editor for OpenStreetMap.org (Debug version)" InstallerVersion="100" Compressed="yes" /> <Upgrade Id="4892C085-55A9-413b-9C7B-42E33ED7D7D2"> <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" /> <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="yes" /> </Upgrade> <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize" /> </InstallExecuteSequence> <!--Set the icon for the msi and Add/Remove programs--> <Icon Id='Merkaartor.exe' SourceFile='..\Icons\Merkaartor_16x16.ico'/> <Icon Id='MainIcon' SourceFile='..\Icons\Merkaartor_48x48.ico'/> <Property Id="ARPPRODUCTICON" Value="Merkaartor.exe" /> <Property Id="ALLUSERS" Value="1"/> <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramMenuFolder"> </Directory> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="Merkaartor svn-debug"> <Directory Id="MERKAARTORSHARE" Name="share"> </Directory> <Directory Id="MERKAARTORPLUGINS" Name="plugins"> <Directory Id="MPBACKGROUND" Name="background" /> <Directory Id="MPSTYLES" Name="styles" /> </Directory> <!-- <Directory Id="QTIMAGEPLUGINDIR" Name="imageformats" /> --> <Directory Id="QTTRANSLATIONS" Name="translations" /> </Directory> </Directory> </Directory> <DirectoryRef Id="MPBACKGROUND"> <Component Id="background_plug" Guid="A37E552D-FF55-4507-8C8D-3201993F7C48"> <File Id="MYahooBackgroundPlugind0.dll" Name="MYahooBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MYahooBackgroundPlugind0.dll" DiskId="1"> </File> <File Id="MYahooTiledBackgroundPlugind0.dll" Name="MYahooTiledBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MYahooTiledBackgroundPlugind0.dll" DiskId="1" /> <File Id="MGeoTiffBackgroundPlugind0.dll" Name="MGeoTiffBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MGeoTiffBackgroundPlugind0.dll" DiskId="1" /> <File Id="MWalkingPapersBackgroundPlugind0.dll" Name="MWalkingPapersBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MWalkingPapersBackgroundPlugind0.dll" DiskId="1" /> <File Id="MCadastreFranceBackgroundPlugind0.dll" Name="MCadastreFranceBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MCadastreFranceBackgroundPlugind0.dll" DiskId="1" /> <File Id="MSpatialiteBackgroundPlugind0.dll" Name="MSpatialiteBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MSpatialiteBackgroundPlugind0.dll" DiskId="1" /> <File Id="MGdalBackgroundPlugind0.dll" Name="MGdalBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MGdalBackgroundPlugind0.dll" DiskId="1" /> <File Id="MMsBingMapBackgroundPlugin0.dll" Name="MMsBingMapBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MMsBingMapBackgroundPlugin0.dll" DiskId="1" /> </Component> </DirectoryRef> <DirectoryRef Id="MPSTYLES"> <Component Id="skulpture" Guid="47E06B1A-DBF5-452d-A68A-5F45CE411353"> <File Id="skulptured0.dll" Name="skulptured0.dll" Source="$(var.BinPath)\plugins\styles\skulptured0.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="Merkaartor" Guid="23E47A10-B9C8-406f-AC6B-3BF68B288470"> <RegistryValue Root="HKCU" Key="Software\Merkaartor" Name="Installed" Type="integer" Value="1"/> <File Id="MerkaartorExe" Name="Merkaartor.exe" Source="$(var.BinPath)\Merkaartor.exe" DiskId="1"> </File> <File Id="Qgpsmm" Name="Qgpsmm.dll" Source="$(var.DllPath)\Qgpsmm.dll" DiskId="1"> </File> <File Id="merkaartor.cmd" Name="merkaartor.cmd" Source="merkaartor.cmd" DiskId="1"> <Shortcut Id="myshort" Directory="ProgramMenuFolder" Name="Merkaartor $(var.VERSION)$(var.REVISION) (Debug)" WorkingDirectory="INSTALLLOCATION" Icon="MainIcon" /> </File> <File Id="gdb.exe" Name="gdb.exe" Source="$(var.MingwPath)\bin\gdb.exe" DiskId="1"> </File> </Component> </DirectoryRef> <Feature Id="MerkaartorFeature" Title="Merkaartor editor" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="DllCt" /> <ComponentRef Id="Merkaartor" /> <ComponentRef Id="background_plug" /> <ComponentRef Id="skulpture" /> <ComponentRef Id="proj4_bin" /> <ComponentRef Id="proj4_shr" /> </Feature> <!-- <Feature Id="QtMainFeature" Title="Main Qt DLLs" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="QtMainD" /> </Feature> <Feature Id="QtImagePluginsFeature" Title="Qt Image Plugins DLLs" Level="1" Display="expand" ConfigurableDirectory="QTIMAGEPLUGINDIR"> <ComponentRef Id="QtImagePluginsD" /> </Feature> --> <Feature Id="TranslationsFeature" Title="Translation files" Level="1" Display="expand" ConfigurableDirectory="QTTRANSLATIONS"> <!-- <ComponentRef Id="QtTranslations" /> --> <ComponentRef Id="MerkaartorTranslationsCt" /> </Feature> <UIRef Id="WixUI_Mondo"/> </Product> <!-- <?include qt_dbg.wxi?> <?include qttrans.wxi?> --> <?include external.wxi?> <?include proj4.wxi?> <?include merkaartor_trans.wxi?> </Wix> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/merkaartor_svn.wxs��������������������������������������������������������0000664�0000000�0000000�00000011220�11770671653�0021253�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <?include defines_svn.wxi?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="c1612e6b-7e8d-4f87-b34c-0b164245e3c0" Name="$(var.PackageName)" Language="1033" Version="0.15.0.3" Manufacturer="Merkaartor" UpgradeCode="CBE31473-E824-4065-BC54-A90AA2BE143A"> <Package Description="A map editor for OpenStreetMap.org" InstallerVersion="100" Compressed="yes" /> <!--Set the icon for the msi and Add/Remove programs--> <Icon Id='Merkaartor.exe' SourceFile='..\Icons\Merkaartor_16x16.ico'/> <Icon Id='MainIcon.exe' SourceFile='..\Icons\Merkaartor_48x48.ico'/> <Property Id="ARPPRODUCTICON" Value="Merkaartor.exe" /> <Property Id="ALLUSERS" Value="1"/> <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramMenuFolder"> </Directory> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="Merkaartor $(var.VERSION)-svn($(var.REVISION))"> <Directory Id="MERKAARTORSHARE" Name="share"> </Directory> <Directory Id="MERKAARTORPLUGINS" Name="plugins"> <Directory Id="MPBACKGROUND" Name="background" /> <Directory Id="MPSTYLES" Name="styles" /> </Directory> <Directory Id="QTIMAGEPLUGINDIR" Name="imageformats" /> <Directory Id="QTTRANSLATIONS" Name="translations" /> </Directory> </Directory> </Directory> <DirectoryRef Id="MPBACKGROUND"> <Component Id="background_plug" Guid="A37E552D-FF55-4507-8C8D-3201993F7C48"> <File Id="MYahooBackgroundPlugin.dll" Name="MYahooBackgroundPlugin.dll" Source="$(var.BinPath)\plugins\background\MYahooBackgroundPlugin.dll" DiskId="1" /> <File Id="MYahooTiledBackgroundPlugin.dll" Name="MYahooTiledBackgroundPlugin.dll" Source="$(var.BinPath)\plugins\background\MYahooTiledBackgroundPlugin.dll" DiskId="1" /> <File Id="MGdalBackgroundPlugin.dll" Name="MGdalBackgroundPlugin.dll" Source="$(var.BinPath)\plugins\background\MGdalBackgroundPlugin.dll" DiskId="1" /> <File Id="MMsBingMapBackgroundPlugin0.dll" Name="MMsBingMapBackgroundPlugin0.dll" Source="$(var.BinPath)\plugins\background\MMsBingMapBackgroundPlugin0.dll" DiskId="1" /> </Component> </DirectoryRef> <DirectoryRef Id="MPSTYLES"> <Component Id="skulpture" Guid="47E06B1A-DBF5-452d-A68A-5F45CE411353"> <File Id="skulpture.dll" Name="skulpture.dll" Source="$(var.BinPath)\plugins\styles\skulpture.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="Merkaartor" Guid="5FDB24DB-CE92-433c-8AC4-288551C6AF7B"> <RegistryValue Root="HKCU" Key="Software\Merkaartor $(var.VERSION)-svn($(var.REVISION))" Name="Installed" Type="integer" Value="1"/> <File Id="MerkaartorExe" Name="Merkaartor.exe" Source="$(var.BinPath)\Merkaartor.exe" DiskId="1"> <Shortcut Id="myshort" Directory="ProgramMenuFolder" Name="Merkaartor $(var.VERSION)-svn($(var.REVISION))" WorkingDirectory="INSTALLLOCATION" Icon="MainIcon.exe" /> </File> </Component> </DirectoryRef> <Feature Id="MerkaartorFeature" Title="Merkaartor editor" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="DllCt" /> <ComponentRef Id="Merkaartor" /> <ComponentRef Id="background_plug" /> <ComponentRef Id="skulpture" /> <ComponentRef Id="proj4_bin" /> <ComponentRef Id="proj4_shr" /> </Feature> <Feature Id="QtMainFeature" Title="Main Qt DLLs" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="QtMain" /> </Feature> <Feature Id="QtImagePluginsFeature" Title="Qt Image Plugins DLLs" Level="1" Display="expand" ConfigurableDirectory="QTIMAGEPLUGINDIR"> <ComponentRef Id="QtImagePlugins" /> </Feature> <Feature Id="TranslationsFeature" Title="Translation files" Level="1" Display="expand" ConfigurableDirectory="QTTRANSLATIONS"> <ComponentRef Id="QtTranslations" /> <ComponentRef Id="MerkaartorTranslationsCt" /> </Feature> <UIRef Id="WixUI_Mondo"/> </Product> <?include qt.wxi?> <?include qttrans.wxi?> <?include external.wxi?> <?include proj4.wxi?> <?include merkaartor_trans.wxi?> </Wix> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/merkaartor_trans.wxi������������������������������������������������������0000664�0000000�0000000�00000004563�11770671653�0021576�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <Fragment> <DirectoryRef Id="QTTRANSLATIONS"> <Component Id="MerkaartorTranslationsCt" Guid="8BA3BDF5-D15B-46e0-8581-2BF72A4B6940"> <File Id="merkaartor_ar.qm" Name="merkaartor_ar.qm" Source="..\translations\merkaartor_ar.qm" DiskId="1"> </File> <File Id="merkaartor_cs.qm" Name="merkaartor_cs.qm" Source="..\translations\merkaartor_cs.qm" DiskId="1"> </File> <File Id="merkaartor_de.qm" Name="merkaartor_de.qm" Source="..\translations\merkaartor_de.qm" DiskId="1"> </File> <File Id="merkaartor_es.qm" Name="merkaartor_es.qm" Source="..\translations\merkaartor_es.qm" DiskId="1"> </File> <File Id="merkaartor_fr.qm" Name="merkaartor_fr.qm" Source="..\translations\merkaartor_fr.qm" DiskId="1"> </File> <File Id="merkaartor_it.qm" Name="merkaartor_it.qm" Source="..\translations\merkaartor_it.qm" DiskId="1"> </File> <File Id="merkaartor_ru.qm" Name="merkaartor_ru.qm" Source="..\translations\merkaartor_ru.qm" DiskId="1"> </File> <File Id="merkaartor_pl.qm" Name="merkaartor_pl.qm" Source="..\translations\merkaartor_pl.qm" DiskId="1"> </File> <File Id="merkaartor_ja.qm" Name="merkaartor_ja.qm" Source="..\translations\merkaartor_ja.qm" DiskId="1"> </File> <File Id="merkaartor_nl.qm" Name="merkaartor_nl.qm" Source="..\translations\merkaartor_nl.qm" DiskId="1"> </File> <File Id="merkaartor_pt.qm" Name="merkaartor_pt.qm" Source="..\translations\merkaartor_pt.qm" DiskId="1"> </File> <File Id="merkaartor_sk.qm" Name="merkaartor_sk.qm" Source="..\translations\merkaartor_sk.qm" DiskId="1"> </File> <File Id="merkaartor_sv.qm" Name="merkaartor_sv.qm" Source="..\translations\merkaartor_sv.qm" DiskId="1"> </File> <File Id="merkaartor_uk.qm" Name="merkaartor_uk.qm" Source="..\translations\merkaartor_uk.qm" DiskId="1"> </File> </Component> </DirectoryRef> </Fragment> </Include> ���������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/proj4.wxi�����������������������������������������������������������������0000664�0000000�0000000�00000010015�11770671653�0017243�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <Fragment> <DirectoryRef Id="MERKAARTORSHARE"> <Directory Id="SHR_PROJ4" Name="proj"> </Directory> </DirectoryRef> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="proj4_bin" Guid="3f2ad7b7-7a56-41e7-9360-79e96503c0ae"> <File Id="libproj0.dll" Name="libproj-0.dll" Source="$(var.DllPath)\libproj-0.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="SHR_PROJ4"> <Component Id="proj4_shr" Guid="c2f8d7b7-4ae1-413f-9069-886f465ef21e"> <File Id="alaska" Name="alaska" Source="$(var.ShareBinPath)\proj\alaska" DiskId="1"> </File> <File Id="conus" Name="conus" Source="$(var.ShareBinPath)\proj\conus" DiskId="1"> </File> <File Id="epsg" Name="epsg" Source="$(var.ShareBinPath)\proj\epsg" DiskId="1"> </File> <File Id="esri" Name="esri" Source="$(var.ShareBinPath)\proj\esri" DiskId="1"> </File> <File Id="esri.extra" Name="esri.extra" Source="$(var.ShareBinPath)\proj\esri.extra" DiskId="1"> </File> <File Id="FL" Name="FL" Source="$(var.ShareBinPath)\proj\FL" DiskId="1"> </File> <File Id="GL27" Name="GL27" Source="$(var.ShareBinPath)\proj\GL27" DiskId="1"> </File> <File Id="hawaii" Name="hawaii" Source="$(var.ShareBinPath)\proj\hawaii" DiskId="1"> </File> <File Id="IGNF" Name="IGNF" Source="$(var.ShareBinPath)\proj\IGNF" DiskId="1"> </File> <File Id="MD" Name="MD" Source="$(var.ShareBinPath)\proj\MD" DiskId="1"> </File> <File Id="nad.lst" Name="nad.lst" Source="$(var.ShareBinPath)\proj\nad.lst" DiskId="1"> </File> <File Id="nad27" Name="nad27" Source="$(var.ShareBinPath)\proj\nad27" DiskId="1"> </File> <File Id="nad83" Name="nad83" Source="$(var.ShareBinPath)\proj\nad83" DiskId="1"> </File> <File Id="ntf_r93.gsb" Name="ntf_r93.gsb" Source="$(var.ShareBinPath)\proj\ntf_r93.gsb" DiskId="1"> </File> <File Id="ntv1_can.dat" Name="ntv1_can.dat" Source="$(var.ShareBinPath)\proj\ntv1_can.dat" DiskId="1"> </File> <File Id="null" Name="null" Source="$(var.ShareBinPath)\proj\null" DiskId="1"> </File> <File Id="nzgd2kgrid0005.gsb" Name="nzgd2kgrid0005.gsb" Source="$(var.ShareBinPath)\proj\nzgd2kgrid0005.gsb" DiskId="1"> </File> <File Id="other.extra" Name="other.extra" Source="$(var.ShareBinPath)\proj\other.extra" DiskId="1"> </File> <File Id="prvi" Name="prvi" Source="$(var.ShareBinPath)\proj\prvi" DiskId="1"> </File> <File Id="stgeorge" Name="stgeorge" Source="$(var.ShareBinPath)\proj\stgeorge" DiskId="1"> </File> <File Id="stlrnc" Name="stlrnc" Source="$(var.ShareBinPath)\proj\stlrnc" DiskId="1"> </File> <File Id="stpaul" Name="stpaul" Source="$(var.ShareBinPath)\proj\stpaul" DiskId="1"> </File> <File Id="TN" Name="TN" Source="$(var.ShareBinPath)\proj\TN" DiskId="1"> </File> <File Id="WI" Name="WI" Source="$(var.ShareBinPath)\proj\nad27" DiskId="1"> </File> <File Id="WO" Name="WO" Source="$(var.ShareBinPath)\proj\WO" DiskId="1"> </File> <File Id="world" Name="world" Source="$(var.ShareBinPath)\proj\world" DiskId="1"> </File> </Component> </DirectoryRef> </Fragment> </Include> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/qt.wxi��������������������������������������������������������������������0000664�0000000�0000000�00000004336�11770671653�0016642�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <Fragment> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="QtMain" Guid="52e87a67-6e25-44fa-be0c-e373f859a9db"> <File Id="QtCore" Name="QtCore4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtCore4.dll" DiskId="1"> </File> <File Id="QtGui" Name="QtGui4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtGui4.dll" DiskId="1"> </File> <File Id="QtXml" Name="QtXml4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtXml4.dll" DiskId="1"> </File> <File Id="QtXmlPatterns4.dll" Name="QtXmlPatterns4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtXmlPatterns4.dll" DiskId="1"> </File> <File Id="QtNetwork" Name="QtNetwork4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtNetwork4.dll" DiskId="1"> </File> <File Id="QtSvg" Name="QtSvg4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtSvg4.dll" DiskId="1"> </File> <File Id="QtWebKit" Name="QtWebKit4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtWebKit4.dll" DiskId="1"> </File> <File Id="phonon" Name="phonon4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\phonon4.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="QTIMAGEPLUGINDIR"> <Component Id="QtImagePlugins" Guid="a5b10390-c06f-4f0e-a745-e143260cc1fe"> <File Id="qgif4" Name="qgif4.dll" Source="$(var.QtPath)\plugins\imageformats\qgif4.dll" DiskId="1"> </File> <File Id="qico4" Name="qico4.dll" Source="$(var.QtPath)\plugins\imageformats\qico4.dll" DiskId="1"> </File> <File Id="qjpeg4" Name="qjpeg4.dll" Source="$(var.QtPath)\plugins\imageformats\qjpeg4.dll" DiskId="1"> </File> <File Id="qsvg4" Name="qsvg4.dll" Source="$(var.QtPath)\plugins\imageformats\qsvg4.dll" DiskId="1"> </File> <File Id="qtiff4" Name="qtif4.dll" Source="$(var.QtPath)\plugins\imageformats\qtiff4.dll" DiskId="1"> </File> </Component> </DirectoryRef> </Fragment> </Include> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/qt_dbg.wxi����������������������������������������������������������������0000664�0000000�0000000�00000004375�11770671653�0017461�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <Fragment> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="QtMainD" Guid="E3F4CAB2-4BF4-4762-BBAD-9BBE79297C0B" > <File Id="QtCore" Name="QtCored4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtCored4.dll" DiskId="1"> </File> <File Id="QtGui" Name="QtGuid4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtGuid4.dll" DiskId="1"> </File> <File Id="QtXml" Name="QtXmld4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtXmld4.dll" DiskId="1"> </File> <File Id="QtXmlPatternsd4.dll" Name="QtXmlPatternsd4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtXmlPatternsd4.dll" DiskId="1"> </File> <File Id="QtNetwork" Name="QtNetworkd4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtNetworkd4.dll" DiskId="1"> </File> <File Id="QtSvg" Name="QtSvgd4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtSvgd4.dll" DiskId="1"> </File> <File Id="QtWebKit" Name="QtWebKitd4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\QtWebKitd4.dll" DiskId="1"> </File> <File Id="phonon" Name="phonond4.dll" DefaultLanguage="0" Source="$(var.QtPath)\bin\phonond4.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="QTIMAGEPLUGINDIR"> <Component Id="QtImagePluginsD" Guid="F4605BFD-99B0-4339-88BC-54E8670DAA30" > <File Id="qgif4" Name="qgifd4.dll" Source="$(var.QtPath)\plugins\imageformats\qgifd4.dll" DiskId="1"> </File> <File Id="qico4" Name="qicod4.dll" Source="$(var.QtPath)\plugins\imageformats\qicod4.dll" DiskId="1"> </File> <File Id="qjpeg4" Name="qjpegd4.dll" Source="$(var.QtPath)\plugins\imageformats\qjpegd4.dll" DiskId="1"> </File> <File Id="qsvg4" Name="qsvgd4.dll" Source="$(var.QtPath)\plugins\imageformats\qsvgd4.dll" DiskId="1"> </File> <File Id="qtiff4" Name="qtifd4.dll" Source="$(var.QtPath)\plugins\imageformats\qtiffd4.dll" DiskId="1"> </File> </Component> </DirectoryRef> </Fragment> </Include> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/qt_dbg.wxs����������������������������������������������������������������0000664�0000000�0000000�00000013341�11770671653�0017464�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <?include defines-qt_dbg.wxi?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" Name="$(var.PackageName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Merkaartor" UpgradeCode="956156B2-4304-11DF-A7D3-81E355D89593"> <Package Description="Qt debug libraries for Merkaartor" InstallerVersion="100" Compressed="yes" /> <Upgrade Id="956156B2-4304-11DF-A7D3-81E355D89593"> <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" /> <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" /> </Upgrade> <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize" /> </InstallExecuteSequence> <!--Set the icon for the msi and Add/Remove programs--> <Icon Id='Merkaartor.exe' SourceFile='..\Icons\Merkaartor_16x16.ico'/> <Icon Id='MainIcon' SourceFile='..\Icons\Merkaartor_48x48.ico'/> <Property Id="ARPPRODUCTICON" Value="Merkaartor.exe" /> <Property Id="ALLUSERS" Value="1"/> <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramMenuFolder"> </Directory> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="Merkaartor svn-debug"> <Directory Id="MERKAARTORSHARE" Name="share"> </Directory> <Directory Id="MERKAARTORPLUGINS" Name="plugins"> <Directory Id="MPBACKGROUND" Name="background" /> <Directory Id="MPSTYLES" Name="styles" /> </Directory> <Directory Id="QTIMAGEPLUGINDIR" Name="imageformats" /> <Directory Id="QTTRANSLATIONS" Name="translations" /> </Directory> </Directory> </Directory> <!-- <DirectoryRef Id="MERKAARTORSHARE"> <Component Id="worldbackgroundosb" Guid="12ACB195-D065-49bb-A7A9-CACE30DD8F1B"> <File Id="world_background.osb" Name="world_background.osb" Source="$(var.SharePath)\world_background.osb" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="MPBACKGROUND"> <Component Id="background_plug" Guid="A37E552D-FF55-4507-8C8D-3201993F7C48"> <File Id="MYahooBackgroundPlugind0.dll" Name="MYahooBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MYahooBackgroundPlugind0.dll" DiskId="1"> </File> <File Id="MYahooTiledBackgroundPlugind0.dll" Name="MYahooTiledBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MYahooTiledBackgroundPlugind0.dll" DiskId="1" /> <File Id="MGdalBackgroundPlugind0.dll" Name="MGdalBackgroundPlugind0.dll" Source="$(var.BinPath)\plugins\background\MGdalBackgroundPlugind0.dll" DiskId="1" /> </Component> </DirectoryRef> <DirectoryRef Id="MPSTYLES"> <Component Id="skulpture" Guid="47E06B1A-DBF5-452d-A68A-5F45CE411353"> <File Id="skulptured0.dll" Name="skulptured0.dll" Source="$(var.BinPath)\plugins\styles\skulptured0.dll" DiskId="1"> </File> </Component> </DirectoryRef> <DirectoryRef Id="INSTALLLOCATION"> <Component Id="Merkaartor" Guid="23E47A10-B9C8-406f-AC6B-3BF68B288470"> <RegistryValue Root="HKCU" Key="Software\Merkaartor" Name="Installed" Type="integer" Value="1"/> <File Id="MerkaartorExe" Name="Merkaartor.exe" Source="$(var.BinPath)\Merkaartor.exe" DiskId="1"> </File> <File Id="merkaartor.cmd" Name="merkaartor.cmd" Source="merkaartor.cmd" DiskId="1"> <Shortcut Id="myshort" Directory="ProgramMenuFolder" Name="Merkaartor $(var.VERSION)$(var.REVISION) (Debug)" WorkingDirectory="INSTALLLOCATION" Icon="MainIcon" /> </File> <File Id="gdb.exe" Name="gdb.exe" Source="$(var.MingwPath)\bin\gdb.exe" DiskId="1"> </File> <File Id="libexpat1.dll" Name="libexpat-1.dll" Source="$(var.MingwPath)\bin\libexpat-1.dll" DiskId="1"> </File> </Component> </DirectoryRef> <Feature Id="MerkaartorFeature" Title="Merkaartor editor" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="DllCt" /> <ComponentRef Id="Merkaartor" /> <ComponentRef Id="background_plug" /> <ComponentRef Id="skulpture" /> </Feature> <Feature Id="ftWorld_Shp" Title="World Shape file" Level="1" Display="expand" ConfigurableDirectory="MERKAARTORSHARE"> <ComponentRef Id="worldbackgroundosb" /> </Feature> --> <Feature Id="QtMainFeature" Title="Main Qt DLLs" Level="1" Display="expand" ConfigurableDirectory="INSTALLLOCATION"> <ComponentRef Id="QtMainD" /> </Feature> <Feature Id="QtImagePluginsFeature" Title="Qt Image Plugins DLLs" Level="1" Display="expand" ConfigurableDirectory="QTIMAGEPLUGINDIR"> <ComponentRef Id="QtImagePluginsD" /> </Feature> <Feature Id="TranslationsFeature" Title="Translation files" Level="1" Display="expand" ConfigurableDirectory="QTTRANSLATIONS"> <ComponentRef Id="QtTranslations" /> <!-- <ComponentRef Id="MerkaartorTranslationsCt" /> --> </Feature> <UIRef Id="WixUI_Mondo"/> </Product> <?include qt_dbg.wxi?> <?include qttrans.wxi?> <?include external.wxi?> <?include merkaartor_trans.wxi?> </Wix> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������merkaartor-0.18.1/windows/qttrans.wxi���������������������������������������������������������������0000664�0000000�0000000�00000004632�11770671653�0017711�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="utf-8"?> <Include> <Fragment> <DirectoryRef Id="QTTRANSLATIONS"> <Component Id="QtTranslations" Guid="242D55F8-C191-497c-9B30-FC7A04642404"> <File Id="qt_ar.qm" Name="qt_ar.qm" Source="$(var.QtPath)\translations\qt_ar.qm" DiskId="1"> </File> <File Id="qt_cs.qm" Name="qt_cs.qm" Source="$(var.QtPath)\translations\qt_cs.qm" DiskId="1"> </File> <File Id="qt_da.qm" Name="qt_da.qm" Source="$(var.QtPath)\translations\qt_da.qm" DiskId="1"> </File> <File Id="qt_de.qm" Name="qt_de.qm" Source="$(var.QtPath)\translations\qt_de.qm" DiskId="1"> </File> <File Id="qt_es.qm" Name="qt_es.qm" Source="$(var.QtPath)\translations\qt_es.qm" DiskId="1"> </File> <File Id="qt_fr.qm" Name="qt_fr.qm" Source="$(var.QtPath)\translations\qt_fr.qm" DiskId="1"> </File> <File Id="qt_he.qm" Name="qt_he.qm" Source="$(var.QtPath)\translations\qt_he.qm" DiskId="1"> </File> <File Id="qt_ja.qm" Name="qt_ja.qm" Source="$(var.QtPath)\translations\qt_ja.qm" DiskId="1"> </File> <File Id="qt_pl.qm" Name="qt_pl.qm" Source="$(var.QtPath)\translations\qt_pl.qm" DiskId="1"> </File> <File Id="qt_pt.qm" Name="qt_pt.qm" Source="$(var.QtPath)\translations\qt_pt.qm" DiskId="1"> </File> <File Id="qt_ru.qm" Name="qt_ru.qm" Source="$(var.QtPath)\translations\qt_ru.qm" DiskId="1"> </File> <File Id="qt_sk.qm" Name="qt_sk.qm" Source="$(var.QtPath)\translations\qt_sk.qm" DiskId="1"> </File> <File Id="qt_sl.qm" Name="qt_sl.qm" Source="$(var.QtPath)\translations\qt_sl.qm" DiskId="1"> </File> <File Id="qt_sv.qm" Name="qt_sv.qm" Source="$(var.QtPath)\translations\qt_sv.qm" DiskId="1"> </File> <File Id="qt_uk.qm" Name="qt_uk.qm" Source="$(var.QtPath)\translations\qt_uk.qm" DiskId="1"> </File> <File Id="qt_zh_CN.qm" Name="qt_zh_CN.qm" Source="$(var.QtPath)\translations\qt_zh_CN.qm" DiskId="1"> </File> <File Id="qt_zh_TW.qm" Name="qt_zh_TW.qm" Source="$(var.QtPath)\translations\qt_zh_TW.qm" DiskId="1"> </File> </Component> </DirectoryRef> </Fragment> </Include> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

aeruP՜㝯֘񋇪{&6|7LgL4aPƈq)<(2a&;#e:p;#Kb=CX$~+>Xb T/9Ao(Kps͓1yGPE٠6 $ G.K SDpw\/~xtmhg9ᷜE^]CvL%')H<Ҥ_=u ,5NAu74 :dxt7MrOWK)cGx Q6 a9j%$Ԉ;auNs*50^xI˜dA'\)GY_O{ABh>@Ef=3CëT- mN;dd-qZ- RB tIgR(6o&;DԵ*v%$F &^K} 0JG,iJ7BMi ]7($_!Yols3|Şv9nU9?bS]cdhXLmІƚBݏ=,oSl=G$,^gHi٢ ^A/v9$0a7âwAxOL 2;}( Qt7sjiLp=r;!x)?튞uȸWCWM_o(*I,id*2J7a,f2QҹNX8f7equE'eMf;x j|b!k]ղ=+\rQ>3Ҷ v$y9/z P02,[GL+A2wX76cF>8ׄÉfY&Do1B+K}{4\ J a1T6~մJn6vC*7QBJrKB#uڊrȮc6hB] + <k!sd}65ٕc{ ,51vdUIƭ WC/&|QvC*: 2JHN&df#-BB؆h0_v z}@ͪ˧F> w7"zu^9nY&gx7=i8s/ÑN 3SeuT²5AaE܋@&tk޾.?^U%}1x%CI^ JV4Nx O͎H5;j x4rԸ< 5quPtnn<"ۛ[c>6KkG8|f|dJ2i%gU .uI/NIduQLe@ͽ /r:qQyUcߪ|@:?t꯿*?Fz;7)`9YSqՋ9 mi:|.3Â\Zn~J_Rv"LR_-lFa7:BydEυA-GeOpKuamU#LiO򎰬ApS!VM=Us)5b qy} ܭRv}uY?3}6<^&YԐ?KdVhg^_8t@ZL‰Ru2ݙh]>jOF|mORr (v:jKZ[z 48NMW gAR0Xn_۵>etp/ĈD&)]-l]_u:o# \zndįa'R{jͫ%e^}qO2ɺzj奣䎿?#]&7;T$`(CX$hU: RiXb;<;Jhtf_S]< bï7=Q=Ԉs(g&o5afn_ֱb8ɀ[0' nmHZyhnp:L~ \^1 h9Р#tʗSc!Rԅ5G˅0to]t YT x|~<?ɹ7 =>ǸÎ71 SKG J~C+>–I4@&v}?ϰ?a5ELv_v<YUǪUYO~@>e'EJGEaN =\)c #Q`|_WL E@%E$[Î$9wV\6zLύT&swn @EO9ۜvx:T*_01.ioBL&{ĭ:UX)ݗ8w ,uXF_i(P1_9u6Ko;d"أDLbOUHAacGU0bءtk̞Y,: F0"*% 4aaTZ U}G7NvW:jx0IzTvgA[ߑm_ .ܤvhw/nb5Q; ?3sHl_aYؑquX ZG@*4$=J@(`o9DĢؿ:1f(0:f>xǻ4g4 PP -"\SIoYL*8oLle?ȲPAic098 jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 7B";$%jLOg<_(&33VM,X%#I1X!¹mT@4lh9n03>ί%`R)? kw"Ğ]+&? p#~LJ~B%=5t)zU|#g<I;/(j]#ddP*gBԶ܌ 4On]ߟ5TWp ̉Tr BP 1u|T?(~zV[r?Bo(1Xjdž!>hc$,?9XHˀd"W5^V3Nj!f ]Mf~[]g`;5mAƵNOƧ/(>9HqzԈ6r,ª]-\٥'j}_]:P'-ږx PߣAG߹^<#yG@OA9(qF4(P;2N |̲-r5+wz2,>aR,KVln d+%rא(˂A4?;~$*8KMp&*OA,F4z`C\IR{l'\k|w ,uA] F7vlӋxGnqWNc'nѐokwLEvϤ m HzB';CY6aơ@t߫2^aY=ӝrw]1ZW@r>lڋ>>nOyƙK潟j En%4&FOuƷM)#|uuԈjlB7 ԷEv1s}-i <0IL8b|Sjl lj{*sgp AhRuHQf܅wW3㌧iFTbrEY>CJF g>*!j(e j R7aP?.;*ÁekH#fh F[a'G{Ypl~ym }myN]r>AѭE85y oL8?I\ۏYM1J vhCLQF2Q=M[v2ʦ5]i %;DE7Y`FK@Ћm1-0)StQLͣ==ok]D*>SJէX{KwVU!M&V湍9ԳҐ?:$Q-+~4`fs]:˩L2^AeZm qo0z(Dl# y,pJD1C ?~%xXS5ͣ3 %>g-2dT"c` ngtӷ!쌯ns3~xޤC܄~ǽ.1-{}X$<"l/Ɏ5M-_Q_oEL9  BGCG$XfLzk.QgZu(*zIi!PǟTػs<ϕ >n=O\ܟ!d{N[eTU+eg;sV+_lrغ3]3SHIdKL1yF"=BlGP;[9ܬ {@(߆tP[3,\hdjߠ2mOn+!'0o+6u'n,*;wqv6Hֵ_4~c+<(ӕU`2߭4QC> hm;۔֝fS *>YydrE/[阈X/M30$&"T{W$!$ޓb&FGz( y 4;K3GpBi*`bjϰ؟#~>%f[X7?mV<`p1 I;}2S l5/v(i(#TM۹1eK aK@%@g0C[s!_<'2c uO0`;D*Ә3FM ukswNհXms,7qă9;Zh儚,%D P'oI=9} 47E=*}^rm# ói,ldʜB[o5(j3.&T+|o]?" O.`wH+y{_,C26vmTصkus~KF(ܲTw|f$z^Cک$C2sppy)luMAzMu?I(XJː$ M{K_lˇl"ȚR!GPvK"ǣ]kO@PaТ05W5i&sW)ج@$޵@6'}:4zOiO4H_ ,la)N[@x$IBn߈3yj MIrne!mdd`@irC&F|lpslBCYq @K1Z>Dzrs(b?ŚlY*"yOf"qo}C.F>HgIu;5JD `hp;ev x9{dKX{<.^Rvp$3vYCٯ\QWcuqqyI;78.]_nS55 -Rߓ'ΞV1Fhyf tWʙ:z4y!R6BӵYVf{0鼞Fވ*9cW(hѬ{8bM;8ܣ6~ BbX<+dw ?F\(Fbeq|,]`zZ-1-S-+8QWY-Bc_od=haO΁>^6sb6 ՑǕ{P @k,Oݦ: i#3?)|&gU&)U@kOB"NcþAMeV-9@-%kNt)]Fbo%?aJ $j'&pyN*yW7UFb#qEE9n| xR3X>1E zexNZ t%p@Z |sOr OId6Nihn(lәAWD붍l>a={з(8- T9g6&_0:h;wz먙$%7졺C F8Mք\ǿ/ *u)ݙ{Tb_[ ksͤX@Lc,%Lְ##7؋fe"dh)/YFf-)}Wh}? oe}Dѐt]gpX\JSSlORÑ" @S y?d QCW zfv!S/JHy]])yV@qw<CܧukEi\ oJlݹl`"řmi7@~'/كL^=FWjԃ蛷Fr ˭k^MH.E%@*7ՂrüO%6*~g&'4}GWģp3awHNlagV T8<ԻSTCBwjkuYhD/#4D-4. LoBȦL"{1TןXS.Gح{sS]>}(Tk)}*2Butc3^!-;­ՁVyZ;qR9)ZixX*-ȸ-ϫX̙訩4~c%UN_MySg`u 1p",2t&F(ofl=׃1Sݚ<^D1;Yk`i.}+Cog]a͏vf]*g9tF=,BjQm.[F/K3,Ja KgQ,̵tg oIr@<20Ha^H:U^|.;*hiSi85Y+#`_@r]#xA%"#$MNy>x3!?Q2to%(wm^ewjwXF+EFV-35Pr`k~M_(霭p L, ,ŘO2~|3  "2ujWPgK V-<.EomDOtNsto5a$i`X>hK%:9A%3bb3bK#oru)Z~҄RU5~ɘʪ۔^8YB1l);SW_S:+ƍzBKyȢ],j;>I2eQ,悺ʘJՕ.g@nٺ"# z\4d|_;J+>AΠ 룬Rq '(A5 k+rd9@8p,}x}FNC̱HdM-0po+cãbCoeZLTq၌fLY=*yƅ1`Juu*sQ.Fkz.%_2LoE %ote8RMRDgUai֥C)#iOzeIΞ{.s55AxZ:gagP6D=Ȓ>AOh\FE}ՉIUZ&϶?uq)T*杻}cm|)jCdC/b#*'zHҎIJ|pO![kkܮ_bna7N Uܟ@dz~+N&btUO_FμŸЍqwXvR&4"ӕHBx ,턠O⒧AYĝ׾ʬXZai" /DcJAk8eƗL|CKߤr1a[++QഛWD7>͇f#AdWQ"ʁUy ~]=VzETV?Yb/"wtME#;SCK \,ƴFQWHwkRNjX/[Wd.5l9ih2hdAӸ:0؉?ѣ͹9;dDc8"A՜l]lK/qiTG{"1QjaFB^^~hDz()"~ Qv6͆iu19i9`oi@:Rir nuW l컒 "1ή.,ל Аp*6Hm9'Rd$R(KjtB/&3p]fNcڑbÔ \vxjaj6 DrmO$KUFײԥq2OYg$?`·I _IeOi8;XOhO~)/G3Sqx<~ezr|e1DnJhHc>`CC9Q9{iatՀC%Y1lDtg >@)X[Uda5k/Ccs|O:p\^ݍ@|ҋ0Lʋ00~YRP[I($TJ*y+zݛMiftRî*{X@:V_{/x.Lc%jtAoZ ˬs)#eZ_w'oWHJ) ++@-zJRzf>_4 ]FHk Q鑷r 20w"s;|{#] TQ<k{<0@ Mvλ[5F=c5򍁱aP/#A_}pfeVHVsZa_.z'v*v4xVaNSW]5ETOP}6dz8z ndJkIs+A3Y~iPT־Ų`Jq. :u2Dk9揨39ިsh¢,k@o{qUd(XXVִ$WfdgVH~Z&vc=[m!EhUP`lٙ91mfEdC\eh?DaE#e> I)hc+HFdҌ E!_AB:cO-b.,;4K1}rb>xqp$ `Er{TG4 o[;C믉[L~Kz33 e{wq1*FK):&_gGe0/{=c:Wi$R)w4: 3&WCduC*?y[7g!Y5q`$<Ħ-V06pkm}Z4ԃU03=ҼTP]\eUTsݙ痛Lm>6(َ=P]=KOr%IQqR$>K ]c%& V2+57x/[L) sƧZ;/ᢰY-!B1sv˟6ڨfrps[wDr^M}BQgnc}EN|V6f:? eRLՒtv>ч@O:\ț!>i̤QC$i"M &t#h.`C@Tg]P3Gòs0W9GJ[5qOwI'@&[ .:&:2֩|5_1D?V}aȮ;~=KMy2ٳFgf+^LćW'dgG,StgC(1 aߗTg;ƒp菜jLɌ!EQ%ty_uuF&[T{ AqA=od20_z@$ۄx8`~ 1oGTK*El.LÓ" ۈ, 3s{UReR+3aFV_|\}iM''2F+Rw̚= BZ0]/F' Ǣ^pa@Gלvj2 ihW}KZFtZ噱 RNI;[B4b;yڋ5s|$=ih>2&L>Vtb%,vm!+mNl3*=pmNǰ"17r@|s.6WM܂æV|K}i TV\f4AoAw:0'VĸQK0[^ S$xro.(V8^E_aB{b% Z͏ 1.,U<}Pp+[;~ fEPQE$`D%)iuJ$J.4vJPMAb>gl4X>lȽ%?qtHş#V8{$n}KOܶ%.LW}梑ִܱ: =ܿ-Q#oLϥc($ )'kԀ2fhMmꜻ6oDkH  J;ϔU#d_>z5Y=| Jb6/%{*XUq#7:Wr*YRiD&͸ nTU!3g@Y_hnz' x'V3RΰqDk)'z݉:y'C G},qLCRݝ[,D=V=LNw&awOʄ;[(`9 a| Y0b ec(P~Ƥ1{H&c+8ARWU:9!&Tؚj@O|S+(i`<tkE ֓~ K 2Ya ĸq[^*sjEƨ.=5]^G6ǂfm:Hjh'@#]G *+GݥXK/ <ٮ6)ei=KV:E}hWr|&j LpfH?Y $Uƫ91 6XZ\3սE9(8%`$ro]trϵ肮m?# InͰMҲ)N>'ph|嫱1!!wIVr%𱪘 >Ȕk)Eg8.OZ_~;C df#X[ʍPt[;G8$dgu=bya '?@CCz_C玤ŐVLƈ,|K|UT2H7OBuafW/fEbl@GEֆWS4]v}ol :6y}~oi]Uw?X17&q񒢈 9..{(hئjL87fm4Xfz,Lq gE̎NLr:o3 M zk,(NuPy.ѭvHMp@t!jLTZ0{IGBwAx:@kw.lb}OcI$xLMY`Sܬ]6ܵ"u*  :q!/ "QAwzEi!ɞhcl6EQzmPULs!09u6kc=K6 -Z8PFm,wW?>lR'pz Zb7qA`j<7oF4WV$YG9g\lJ^rQ@s+D`>O'yC'oƱc# Gdi? I >Xx>s2踬Uw;|N)ʨÄ2\9*(T|4dD@̠]+Xv9AAu_8.ET1&Pfz#l@kj؜2goo?-6rǘL|KS o@ "*CW t6.xa%`<*X,0b(0W[)}[u;dŘgRי fTnj'{DG$%P<ڟDTI-< D5gޜFjϼriB>e~+5L|arLSݏd I=/5B)*f¦~?MxccūWd2sYx>ܛaWJ7ީaHުlp[>5)Mtz~DuPx ~plANB jZC`|"vAR(zxh?iGw͙NwI%٫gh;eɂ L_qh.ϕiN(%.j*?kT`ڗeu!{q3<,M)= Yi(t$tnE%EvK PWg1Rt/[4"6k)ɯ ׷b=2ĝ݁uYdC% 2mv*݃L Lc~NXQ_5ҵ͠@ 92gc$ʮ|;5RhVnWK~y2si%jHT7G03'4X]~G BJ 2@o#%o vugS,H,;f'Oa;~# @1 5$}Cc~UQ@6o/Fo$vhQڳ &|hgPcn&=c= #"2@dM2COo-r BuAv4sk-Egwwh5&0h+(xlXbN(V D't'$>o UfB{SÊW2$c;rZ~f%0u4SrH!~_<5?f @5](盀H))Ba8uÑr/n N]#7(ʗf6溾Yk7 >MQ2%og?C/.$4zWU|  aLgmȝƸ^e_ #i fg݄}nwUܿ@pᡀB]U irY?( KQ>)P4Aqcbmf#po}m\cp^4M}* TZҘ:KЩBPic wbߍn^hr4[ [thm +7sH&,qd`VC3@7DbrZBIVp:KR[ٻj=)B&KB%XTX Q]IaD){]va<`Bt&bKW52t6!iΩ\l*qm3[֊'KA㧒:S[zukO z2V(ijy. Q{P-f+m&z=aAZ8-Ztywf)ZL2藃kW~Ө[rs|*I9e(u8E`-)2j A&vGoT7p_JkO_ $zU{xXJ9#޿BOa Gz| y&UPxj:AhszG;Ouy gzf>BL9;E  MY 1vCg-!lx4FzdL^*9rs'&(6AlZw~`")&bw {r-Hn3p fB aQ V*(,id=-/"*Eא$͡ghM2e3=ۗ}}ʖJ[H(-1ύ`^z&5Fw5n4{Qv2Ru,ۄl%1 < >B`Q) w5HxH۞@8ObuЦ(wTʈX[;0{sť;k)yÚc3O݁])\)9Uc u uņ-]'F:PvR9I\}"2É7z*~1Co@Pi l3/HEB O -H,iTָ+.lTEV" ϖHy9;s-eGEڢfIllh0(Ɔ;/ *^}a_O?XVZ(-ⶶi„KEM B;yu^E.s~j㯙W4D5"eri_>I~0Q.V6!)w81y5ӈطTHǵD#QGbnN!TA$Q H,W3o4VzZ4T߹%$zW˴c#v ʋL'T36j#g߻wź6`LY3ys~v)xxg׭Ƭ<źȌv_Aj.1g>87H }=F?s(uTXUoA_ 4R.tdg5Ӗf?"O{KPfyp\ 6"s;"&lhXO)@eiPÎZǞAZu.yg6+3ĬCzZv`x,|?HZ۱ ,Tڢ'F\DU4qz*!,;wz[KU҃ǮR=ȅ:RQ.s I(ZDcR⡺Uy|E -.SEr Y#d Z;5;*p.k- ٝ?c97)Qdœ[ґ|, %XZVo"iJv:vP.NIа}H(8D e} G~&tG2| MNnB-lug?:7T =8OEc NpHpN\ߘ:tT݋.9 aM""g8%W8]Rb"NWs׽R,USA!tDPiԈ߫Ƨ{ ^`oFU3YaFFtU#ܿܶ1 &KyU=D?R~5#$.2R;!"H(eYhrFŽ`2k'Q ѵjR e]bZb^~C\S:IN d9:r=_ǵKTcԂk`$9ŖWOjϠ{ӗ9 yi( Ou;l.|fW'i2X5cX/0|8a#onF u=)hUNx2h]b 8uDlբFA PCMTg`6bo S(A J܎6^VNB7ep -k{do~Ur{?AY %HUn\-00y 5 ܟ.Vi܏6gt s7|?e" NNݵsHl91"̌a' :t I}nßJ]P4|Z$SΉؼmӛUѸE?5Z.} EsQ˔5Y_9-*kyC<ӁWh= bހuA-F ;NjTC`ܤɆC/kHߺJi?s8\j`GI ZSM)c=Zq4"ZcүK:WJgf{RxZWJ_!6C*5"Cpѩt߫SYmid5sN_"7@KvNE2W;gԱ[]<'wO[[-Qv69`ػ|\9WK7ܘD_I+YaCF!iU/Ci(_}TWC򏣾EI.PROsLHzdƢ2wpY%<ؠ0l|j4.SZԛQݯsK& u[.|Lۆ-zep.8v&f]sOoDjϴʱr^,n*ˡSר+!$D0,"G{b_'zݥ 4 Ҝg~@nWYng5PPUyc!@ hASP Y{>/HA55N\,hfv2u?e2¾[=a͐s>7B>4mΓY*L=p\IV]㸷ɿMV\ zs$0=%N ]ᥑeo$7I]4Sui},]Ql}`"RIhU֧3ٖ Dc|*Pk`0N %[}Fgθeǜw yR8,ZpI*%pӒ&($xơ̄\&ؠ⯷Q$Z>.sr 0R޼?4 XSuĻS,WL7/s=x; !"+2A]$+[{ 0nf.V @_H#3MumA3,}0-yC7ʒM>Ř@u&z5Jbq^!դYV.%FkdI@`|ì881!Sȍ%wu(ߐ^HPfe**Z4s)? 3R/*}(>*D/-7Oy ce4.x,r@FܮY?3 !9kY Bαavia(-[e59g?N$hݙb^^2.kX)ցLcuwF@>o:oYͯFOrJyP+e8BzM%ђ {%2E]aHuF7IyaNRezu[dY{Gk0y)Y rZacCYIS5 C3#],-Ns+ :]wy1.2F&XE!j/v pgwX=ne+VShB*JByA=_X&k+l 5y y|b1IcQP ḿ0-ĎELs0?H?*1zXŠp@v /;27ISiTo>],G M)hHM|9^|6QuV ju|!0J6AΨ"^o^'rp# 2k L?tεVH,f)opQ+g-<ۚL.FR_[[-F|ji?6FV]P13Zv:knjCNgl;O}xM5>hUf uH7WTN_p'ۉVk?p4 cp%y,ɲ1ipz@TtYJQ}Y-[Q{rېY|-,BC1Zb?PfN |-GLzzlBZͫ{m@'oSpLbs!f+>O~Dmî (٤mE^j뮑5tgGLHW 뺥t >۸sEa "{يIZP;/`9!Bk]6)X}E"g g+j)?KC>hTJZXh{ҰVlx!rIvBk v$܎(p P&2khtY׿bӒ مg{B_8RHF1 c HRiӵMJ57~fyQhųY-9I8}DZZqn@>K_*~ɍ+ Y2ro(e{c.R5zQ(kmuuMi0.Pt _{=#+7Zd>BX y묏Uc`,p*D;eer=ua˿m _}RZ,$8RUwc>|`L<=mJ=:& :;1 SQE=a#4_pC kkGKe'ygU>(^/HZ͙vuұ^[(T (*I:ڌ j'o^4Jk$@q5aY"gie"X )\#ZބaMyHOڰ]{Ƃ_vާӔٱ)aԏXz>nY (lCeg(D -d3 g-ap`((nUr>-{ l۸( ϓLjRwGrմ#8 X#.RنvĨcih!l-h9+ 7~6Fi]܅:c;2զd؍ܨ?2+&K<(1Z ȁJ繏\<? ] DNI =)fW0&α/tS69聵(qFHzEjLV1;PۥsY;Ky5쑒$UmL-2nЋn^Fr>"\/,F$򮨰O9b$'icF6V{/ٵ5+=P sRn^ZoxD83Ma@wr@j8* k!ѥ[D %0q+܆v,Nqk S!8NMHyGJG@7Cįَ@G{v+bٸMF 2Kki5-v|o=(W|Rs?m ~WY&a'iк*7xRmg);5/,ycbLE0"OP?(Zh_z6]yܔ1CTn#Ap-SS~|Z)x5}\6f]b'`ɀҷK,Mwb'4eq֭HϨl`xr&3t0v;YHbs{Ս?VU.1ztz@ZC9SAGP|gkrFp/iur΢,ltOk'[01)V(~ RץD2_3=]j$5uȣAUsQr,;H 9d6 N(/0[/̎2]Bͷ<'C! 6LVdWOŻڎπoܱC;B=giÏ$,G"q1^+vM#EL_3ذw,$ft#u JEBc k6f9cbO){}ΣU=N둹?4TZ(fpf }AWYZ )>.(18h !]*؎g?Sw=+(%w(0B$Л,&%:M{v74\tT,F *KvhD.RB?K-}F '('U芉pmMJز;:Wڇ޴3/5| _A8P LtVZsǧ'z9V$7X%_lRFr ǒ/op&_48W-`Dʺ dFE͉4pr=K(  㖔q#O$oIi]`}vg25AەQج yfP- ΋N92\xnWtuGCf܌,#i"l\)Aoƥ4 z=;Rdyc_l t]'Nֆ8\7|&Et8ѨW $Å$Aٝ = Uv'mpp'w`@%x7 [ԭ 7z4p8wh?8FSAP! RC &%tLzX;26JbG+/DTݳ_V: @x3fG*xhʛq1Oqo!LWq펄bczI6`HssaAQ /,{Gӷ-m JMF^/ )z8m#>=2 t \!b_Э! Xs'k//0S["H c"&P賾DR%g+ps =t KəXj^fvV.dqȉ7 M zTiNXpǟ'I7e=fO0 CuuWTӽD郋imPZ4KB R-5n"@Xu3Gpp[8IJH%{jȊ4KT8 3 G|ragX*AEHZ4Si^:J0HH"?UWvtk[ɂϤ>m\(id6c+BtY2o1JSOc{b8Ey,,%>RTFlYE-^6gV$>`.3Cg[ؔZSK_U }XrcT⸂6/4eCFKOO)4K},*cs=|Y4FePr2IQQi;+^`uk=j{ds ?ɀGә+ulHL*$_pb%-r %,W"hSxX5NGkqK,} I6lԄȜg ~Guɵ3tR}&3D@{3nErIL^CL [P;H(x ~ſݪ],C8hY+z tHUqzWy QiA}y3h=#eB.5aQ?gs"2KWf0]f}RG0&%,@Jj52b*m^feIdS{l a֛qP:nMjEER&|F Yt[C3oVj0kj#[0_jX3]?u S<vM,m@T"ܕlŽweL@?n Mk7:\^Gas*"1m5dz3Ob XiT5~ m8@r<p5*Z"{Z,P#fc %D_e @\>(H[ҵK zN4=e'x/! xS &Z,Jnasi`2u9N-Ln=quV:$NL~5^#NdӷJ~᢫UjG+[ Bw '+Z霑Y}IK,h,?׻T ӍB]]&=!B+"b  (@--˒MVFߗ9C]a {.$λ ~RvIZ0CjLۜ$qqGNi)^%qnBj?E6oIďˋf5lX8.mp-6`+>@ yV>nrق,fӤpߍiT3?jC|@t渞"ĂtZS|u9y@}>uPُpEbֿop$ O||޸ GCXrh1%d "Ke6*-B3&za3XPaeEFDc [tq!]/!39:7l זK(%BDAL@<,97?{/JM Wߡn}*78uLwPP(<Q=Kz\Fl9@Z1Q<4y9//Hy20ܻɦ43_G w/m08 ݇dRˆ9p4u6uO$!es,R#]Q%IE|`UcئH՜Z>5aJ`ifաf3s|qS]U WUH 2xF!5snN?{qщ^6o#5,"tLqEdF(9F`0t+ }oz2y% 8eL#0|S^W&)o6&ɕī6&|y¿PH~R8Oa!dokxȨZ-0Z -)f-\c| u`{!|v:(>QɤF2::cmس}fg6T,mVK4r>;> bۻo'kjC+_r+^F<6%# W"C_qDP ;/WZH'J[LM} zanX7RH "RwsYԆnr$?h8MOq/)!<M(ߑ(X 77Q!|ZftU&rĻ_[ZU`Om^;,_7MT΍:tvL# Go#AMh$u1,0 +t~L.Ebmd4/,>lfnr\z7KX RF=zQ<&#N(X/(ޣ7@[s$l=UE]&4OUt 'sxC~Z 06L̎VQW5Z rV8N{TATݝu|h ~$%H1 K;\p\8kz?VjNL)KN?`hw^%dcA}қ7f9nԫꮪu~)D,*dTiFD#-AGQ ɐu94t [z}=՟a-ڝ!RLۋ_!B;fU “^ [}E4p/oˀFC ib#;\93Ԧ'9dN~Ǽvi`?G tw^Tqۇ ,%=̧/Q,$!byf?n948tP[鱄,JN b&U&pGNPK6Z"wv5V\^1t1ͽpP>Kk/e 8޼5[Ak%]8hX4{|٪ү}GGV+k9̿q4% ̜HO*[ jQ;Y׉*n@Oɕ=%R1˜qe]N&4067V"k2羧mEz<Hhd$rM> )/,tJ=%b3k ^"]C )}T!E$ر":CTTGtE(B09B THU-Gy.VhIso4n Z&9/R;)&iA4ﮫ(}4BDaEtAk^xYUf(o…,TRp嘭?2vnN!5h#DO J삋܃v\}%--nB)MBvMx|`1sO Ն}Wأ{[ 9D6r>$3c}1GK]aXޥlMr7M$Bh*cO *e3XelMY%2sR]^Ϟ3Pq>/ 5uлEއFO ).dwCkFӬw^| %"8&IT$G `Gb/fXW+6ζpd${_һ섡vmstNDq*z1̸ծVߔA NL=Y_}՛Bש' q-w9:.b'3MfCyL;l`^+PCjIsÜX>\-(6lG:ftοSG.q#-!sbF~qG%,)@Rg(aH^[r@Tu|&sjW^=V䨊d\5"n'uTQUJ(AlB:tjNGgµ.s RN ܶrުЄaa`5̭5Ubre("dU1 җ{6STi;Y; I ټzX5\g.9U̽]Dd2OGmMʘra=ɶ$}?++[*{oK>.A]:tvD:#ZloG!|E76KMr@K 1jWO' \8XgU|bj,Q;KlY, 31ͧ&RVnT׺#_s2[+5)\UF㡁f[#xueM i]ឪeFBA~!3)!t~w/TK#BSLf LٯF w6 N n㒰ĖDe9NgP;19B8/0yyR2C5T<o+[)d $,=. upYrǞ'v'V( Sf+*U80w3 ϗ 8؏Um~Wh;ݾz H:FZ'eX1"O-|>c%/)A&+>Շuk|ȳ JfY 31y|t>̿;kA e'KCg˙ƧgUdY眷kgpj9Q'Q]AËv"!4gD}R7m$B˜|ݞ@4T+o atJ@^Lj>)ݨL j7Ex/Ju}FYjU1 y4?_8B4`1MK#icӸ6 u챰^5 ՒCQ^Ed+#툏KXG-@1YvfUЖ<oPbokT+HKEnT -e֦/U~9l$7 4& Kw#Yqfh>CΑR~wn@I h':𓎘xrg^L0=4?(&0(Hs#%82PRwqGAQ%m:,'uж#0ikcl aQ(KcyHZäU?$N[{[c +B"9^_(6ȹw.(LO+9F#_R][vku/8SZI]ԑ .ׄrFF~[ZR;:|wj,D55xA6,w$}Xv[F^,yO "{HgfhGa;QQ͋c@y|%3lyGÿ՘0*O<zVDG?dyN<$0EIt<=[vق_Ҷ qT~WL#VhG+ގ@+wh蓪 aE2Tt6m[%}j -*QC`19I]׮߱{4V%s&Kѥme7Ɂ扷 @%Nؘzmc)$\!gA`݃P%}I[G0x{C:GIBЖ6Ru(5>sAve*UzǓ ΗЈMTD@ץ1qҥY?tQ{BJ@Zil29*yd,/G!^TSNUu]j4BmΌr3Dٱpf D\Br$Q&fZDZ;jKS!"Q JKur$!+2GE9Av'ӘD6 '%HO2Diud1PkTĞ)R{2Wq5;6H__*Ωٜip#fqVryy„OJC 侵n aQ\>` ߲ԛO_5<lGW0Q)Lb8ц !x& }1쒪u vȑ-zP i鰍Gy]E9&ujJɜ#qgi4H%V0{^Ik94'3IeBh&b֍pօs *M'- ENL`*Aaj׊OfIͼ.Ʀ|X{R`A,XEF̪IaCwXHy$VۄE~J~ߩDXߪN~kӓo ~7m:RȐȣfS)a !ZۡULl_.w6'/XaC(7I H'CF˯M"kRU:긁J-!nO;DNM%RrV}!ڛo)a1)¹vd;D<(>[ϓ:N5a/Rre'hQ[NJy9 'Rؾ_ gwq [y!t)#-R}saV E[:F9ninUߖ꿖v̍1F.oN쿵Z~6hf/gкNt*CgO`d'oS۵fkAZz&h:/ Ekn8QΦ6YY?qځPcc'`w ۹I 抃kg.Ε4_K~ ыR֐f]0JC/NDRi\ukfDi1V/-Z[둀a], Riqrn5"Y}DsSO *0IRi)彩r6@uBEtַBis,tAXЈ~,/;D{atቆ$cMn Pl)\ M,Q,18z &*(l6^'er4`l@i_UpQ g&'>Xa?k,zi1t6C -Hqs(!iƙF.lxj8'4]ҭ2 9Q&{ZXK-LV6 9XDhT<T:|x?qmW8[i$7qT֫Փ4ZYr*@~D^_?.w%-3=+y-!=egCraYyDPJ`7YRoo)ylIARQDNSmE#l{גOƿKab5^Cu_{o,r/H_G ͝V |;{u"9l`1+nl hQVo R6, L"7Y,5e j)SOW(V"ŪEů,A,pBuktTn Z[":i-;y4m}6mWDF@W*L+S^iz@ݤRWb3Mx\}5BDH+-'͏kլiHґ^N=Iv(q6ŸlkT#dhY6lnLGi g@Q!. ]\6!c`(GSJ}i1;* "$2WFM9p*$8'4ulxh.>GK=5B>Hqg'I홳/M) z+ yGN? u#K 1ӗLG!ӿ)TutXK" r1Zi EU&zPXEu(鼄`f s9fmi\_ֳ TjL1x (WCtj Ky%F(ԷE@U vR93͐щ?|S;"WnCO~usnVwά$h ~А_'M<.1fƷ ڬKa *@^]l)d@Z" sO5-a1daH%hC`fIc#I#AڹLK N4 +tu"˖|w54o C&so~y;,ic橨ăZcs(AG 3SH5;KbPUpyՑ_M><ǿO,E'\-&B{KeCVgcy$qDӈؐvL"W;/P}ty7]^mbStlc?Rjhl횳M)piQ O-Uw厬_?>f3G!$uzs\̦ɼ(CpYη@*'"bT)pHoX|,\Ә(ZbP[rhܵ6eps[2=XwЖOVmAe߇Fv&+_hڻc(.>$ ?TgP?TwZw/ݙ+Yu cT~$ʇ+uIwom;9NApO:g;"=!?K( :^qPj SH#Xw[iYOLikPUCw6IhҨK9RS9&af( gz2 Ӆ]"ˆ>;vfR=r^F`PD?ְLRtH޻S}*PyK'&~㓝ӷrqW.ek|WifgEF\Z97|)' ~2-\}%HL `A+tF5!*Qыd^?אN|S3)YB#D^$VDմsE&~ȶ&aXS4jA()+gԬlMg l9IԸu"K@0>i3ct9Sלӡ2 jvٳRnF&GLF)YjR|/M1hCz&X<2 Ki*O˟)<;,n+o1~/+@`fʌsF>h.jY)&h OG5Lj$Q~2dI9\Y?uW< 4g8/5k@{ J"ΣsdW(7k;MY2l  ;NCTчOgqE LfD5EwgBCՄf?VHL pvs,өkG= 5aŧAZKTP5JS3 2;ŴQ4-A)D=ʭyIq(^RߴqJUb$0=_c=yI]\5{nP!Y!1R(:0LZjM|JH^`d;]i$_"N#\CDsWXo`'oO#@ ի|4P88m{ˏjH~7R4<4i*|(; TYQZ y53wԄD7ďsEK4n ;lG~q:9S{04]n2X:պ<8Uecycv9h,$IDE7~l@Jd?C&C9T ǀ]$,.8x.TAed m5~RWpˑ UfWSklVY&`NX9yӷ*Yl&u}^R"kxm4hԠu!_Vi<^QD%^~ANj|=וD_\xT<M`k(.fVmPshcеy(5e*]7cAVqahbhg z3 & ċ}K#nkw[[ yCkSJiR8(Xb'20zr}u k1父JAUp}5XfcZ 4A'*[:E!<+kĥ!?N}/a{Q @!aL`Uȵ_!Ʉf,0"/Qz0uj6rc)ba{&jWpI,TF|7/rߔIZVbG8D~[9#(a ApnntGoC2M!.By%Ma(a-SIL O[Ix[1b$㝂ϯQn7@_%Ϛ5=MwpBQ?9vM.uoN6 0Pܛfugj&Ίj+ұ@W&<= [ZȘD2^qqE;Nf(-YmYo}Vxx;~{ǃ7n<@B ;-ϝiɍn )ޔ$K&;[NBm07ms(K-``w@ôN@qI֨pG4>/i4No&ʸ+_ /gS<>}ov[jEkzI {D4QMD=4^EV(DЬaS+"n7q!&a4[\ zd9册`Bl!9NCP_йCz Qz B?ld:?D< \ب|}ĭe^I?|+ŀG %+6u1~!] SuZ-oǁA5)-!`'*6zÑǩ='XIH@G6ج|b nӒVj  d3j{}xl6`NnMOP?^\jwCBotq^Cd??gL8M>തx3]&1 *59ց^amP3uKICMd=0\5-7#Om-YQa)GHw&ێPJ(@r]h) pl߲eA!Jwɞl孏_pNrz0ͫ_UUiKfV  >‡,I ~gG6ڍg@5\Mvvrt1mXĻ4G& #w P 8ҿ훫#K''.sC° ;aQg4ko7niXȈxzx/J2X(7pf]YW&9M$fi.yկkbH(ISBǪI RzNJ ]Af=7ɕ7,df iM,'A]2p2PSy 1FK>yD^u5U_H{W!1RJ5}+`9,/0,FngWzs˧WJ2dV{׀hF~tmdTYfl3iv5!T氙]yNj@_^@a콢o/uf39k**y~Z3嬄/p I$zGt+rׅڌLwW/[.R0% 54oUIo} S~2ݗgGZը \w*4}/J:-(?ug%/MD@b(~ۃڗͤO("kP8bb1=[4xjj0F~)z-"p4cJ,3nb"m M+~{X緱ЃLzmoL$Lh 90 Iz\OKjK0=xv}yaTFj3*hO6A@s#y> ĹaϿ@\~lgЅr ;E'-4^`^%FO&'7o5HYE9wopƄ3~7ߺjpAhCG90ZwT5;oSsJj}q_3(81!Aof'z8ٖ'WddyEF\I&4o~gzNXiQmE$A=OB^Am}&8 :T7_ܙM>O1ILRuN RՌ/_.7*X БyN#MS6Y"CJfg 2oG.5Ĺ X,z2@[_Ra'Dɠ!j+v?>J%|['E[M[k4_K즾NKk%NU".T-ځM.|WȮ(e/ yبmH鋼6Po8; 4 ],}^8;9r $MEnxQZe9~gf:0`-Ыϼ#ŅӖId4Lb߰]E9Ih]ZQ'ZsB<t:H d>g2; YSv9P78>^벗+X>c۸n&m:Ի6f+JV᜙_x_ W֗roRxw'Y{ 9yyH Cd}Ǡ htm" 3WE-ᶿ8‰t5Fo救j䎱  />hk#;DWIN{s/_>7*UG@{KN ؒVIqL[Ky8&jm$21TpWGe@[ܔ?pnH't G,,)[U; uzEe a/]t3vUTzD΂a֫H@9Q=FQX;͋Ip_W0f@fGJ`y^— H#eEaHg ?8G(6q9OnRɿ^;: -Su*҅&p 6,.]"^a^gʊ}蝭K}TCYh YڗH#9aZB4?1r[\a+ȥCr*-9$5ف)_|Ո%AE9qq:PvhO`pC՜D;*>cAA%x˷BdY1";J댗{)!nҏEםf$h*fT*bAe\x?<55TۤYj>̤ UhRJf* q_S 5~jK>3#[  V>iZ^i*"SGxS\.9(.رqTD/0우 uP۝Y[_!:1`"ojFh8&[^T1 zcg-^"z7kM(c.+s9L2̶fv9) Fӵ?ClvT$yS_2)#΢-YcϒZ hnD&QD!?WFuԋQYuYs -X}:,-w)e?EnC͆)%<(.Q$L> ⽴׮ _lgO>+C% Қokv:Vi\A6VhWD$X0z|L9^9#lGK'B.Ϻ2[+wM^oi5𬢔gq ݇V"W3ﳯ.+qR~9,:ONPLaTp~RCVN1IMok&QJ)EL^tyo8д]Ӽ56(G^x\pTR;n*pa @-gT3/X1p`q@dٔl?xYYH:1r)N/JzȔy]LDK\.ޢ$R5%yfFF.1X'S@dej0WB{Py-, ]D$+=3t쥘^#[%Å^tXFG۶C-$R_8 28ټ6Ą@كkJ u#Lf;_:^9)WmԜcW5pENfy(ш0rS i-%\1A~^rD dk~ndQhE5#RdgW5?KZMldbIΥ3C힥МG,AAURA"|JCtY<]+;~ !?;tPJ6{@E*쨝y2[02'eQh/D{g4&//1:;؄^8BC;ߢV^9Gy(Zf@藡#Oiq_"":خH-:!O"YԎ7**P9<-{pYyb6ȃhLWm `씛(x> #n]Hf0%IU1^o 7ħp  H#*ؤ0:%QttA;gP/asf4ԏ)˳{Ŕ86V SU1TבoDC6mfѾ\c`/g@.OUNtV?tN`LcP"dmtH/?1ad,>&b k3X w O|(.Zd:grZ5)AcB|ӧSKsfGrZNn˫@UC SHFXYlAlNd'DhX)bLLl C5&sWgzAloʜ`'+Sdr0+DsۈU$&"p\Ρ0XL2rmZC'~hHP}t%9s0c2RI1Ɲ")F |#Ŀ}D$ܳ2_{-#(S'4xkn:Qd KTd?`B<5A'9YT02utQWzUA5.Qf[>?dLV5졇왦,G֍IIb:=MUx[kOŮ0& ^cCŘY=0cya@roaW 6Yִ_*/Uܳ ^Zpkf1/}*Xo{tՌâz &jۚ6lӢ*0 tmR+Y"LWVJϟғ%nVG("lT\QTW7bL7˕Ia52'*+GXa(qy zTS5AԧI}2*?<1>ƜhRGR@8Qys8.yu)\*2|,.TG"xY1.6yB/bZ/ ASp;jM˨.X lIćGK#l*9$& 6 M@qH!"B|U5u+'GOz2_+4Ի7bҭ q"dMTyLmm`ƿk.[,5o @ @wci[t_zSe> ]|܌[ʷ%~@_Tx5p~3Y6fuZʡ? >u*E)$^2͕sZ/*lX l! mPymEd ɡ.?n cO^VccĦq([Hk3 9G_SUV NQh^*xc,v׸Se m' O3v <y~~eIe\i]?|9)Nb R,U[r_vY iWhwR(d6lx6laD rWQq&c*xv tsF~)qz<7EK]ʀ+"[~B92X!d&./btq quk?~DzT'ڎTЀŐ &8Ν5☛񁩱-~^lȌ{GNw[۽f;*,q28)@se7?Q=X0&Ƅ᷷SJF)f*% _(_+|ڟS.p3Gr2@xϑeӠÓ80؍vZUв廐X<0>b'ۏG⃎j0+$bE aV]`/RzUFܽXTm[+rU&iUm Uy 7LHYy <p us~ 3n-mn %2?ET*"rψ!"usuQftqw(:؇CW$R<(ʅ>=vg6N``}= Keh\id@cP[Y).!H,< Jg̘"<#kdJRoks4Ýcm0X 'PU["YH|1Ш=}Re2I6ri;]*:qOjޠu}y3 Y&Y #ۭސWa|߿/>mAt, rT&HD^b7y (=x4z  ud/YpT'\%;t!q7Cy`{6pᗫff,:źo*/9VTSκtP7-nKߺè}0~ڔ|d*J'B|_4frɗMWiUYB tOs& )/8(VubuG=TU#^IǹFa6&2)zpuj ME)KgByBN˵\$|-@ZtAoaK0]؇zfX+D]s5$e}t>0̑(Z=?AU59C\)85y3Bz%CA)f9d`s+`-Wפ7Vkmf"tkd[ 6]_.A'0T9)ă#ЉV+Yy8Z+pMoZ9 Qa$UV[S3ˊU%} 'K 5dJ[#4"6xͬί)~r5P27Q7IU';mTL.x^:\O^dۊң@=2xfyqՓBAĘH|h[hЊSۋOX{91LxDcI5hK6{] #ȓųJH}ZG''S{yQWwHuU'SÚspA|";eN0 4 B9NΓ- 9G׌tx3ڞn+X,Ficm'C8c+cKZ](9cnk[?탅дMG,jǭ 1TZօj8"}\}ObFGS+Š,ax-ԲQNΟ,ks_.3T. |pYKNjei?PIjJjfAƕep ¸q TY}H\pvcѳ/%bmQeL;Dh:uCSmV@۹awռ:޹g0% ^;؈NuAp&~n?,bNySH Na?4 M|GWgJ#`]]W > CNWGLfOe.g)@!9$mGƽN'PJh3 R,$lp&p BTiJM'LqO(˦,!cWS0M"Bx T{ DѸk')t{B7'I:9g #Jy4;݃?݋G֕m!Sݫ!z%q+TV~FaoXV &Y8FC8tbEfTgOq"JƒrUBR GJөȶI(ܫVϑz)/k]9,w u;GrFJo}hRB).߳ 0KR*š1}K&^nmN.E冾py=K ¯2i{Ýgfn-t%$]?Poϻg5p"વz,㕶f*XKP_9}w2 LCU1; CX_†q^ 2U:/@ɥ-~vd C0X PAls6@hrq3vaJHAO{k? T֎OVp#g!Fic%sAKn8F-eLpbB/ݡ\ʄ5,UʦX}q¨ږ_ l 9iŦH ENP!͠{6Eշ?b kqdJ{ЅVX>_3pHy䘊1l:OTrTCӠgqҽ:,H&'&t/^rrnO)}#&].GvG1VaDά/dߖQ"pN",s~gn5~3#T6gW'(`W->̻ϲr0TMǥzc_qe*7_Z_^:?v I(xL=+4WŖǓ 6/ovMWl{>v8bpy̒,bAx+M"ZS>~t\q0{Z]1Ͱ^ .Mc;0:vnb0VJ7TUn YCϓAjJ݅MReWs_x MB i Dn+xaWW!]zrF|$b'P)9*o'g}.<pj2L)$˚+ -.[k#Kx8nTf}.^k]o؛Xz$Y&0Δ ď`2:}N~ub7ܫl—Z,{("'ש;+d.$APi 6p9ZJXRPul\˩5l] ]{TkHϼN7[<=~ikjB6`TsrK1D4v4m_6SЯQG:\`@~B7⌥(Bgm{6E 3fwb!xZ m'ZFPJ.. }jДQ]HscvG!g ٙv5F xD+qwݐ,*hm\W\)v8̇/ 뜃bA}"ud?@h6^Wv :iTbi*s@q<% 8w2 fj1cIl%Ax] -m5Nf>+ٹf}>l{VL+B[]}9D. }W0dF4]'˼9uCqS3K'N0+/e4A *c̲2|{]#AGssB;B1h=:M ҐyJiq,$'K/ ih k0JD!2g˺E?бϴXd7%g$7u"}iD>zi/ȓ.eJ~l`eLq.8#YTg5DkC;=JJWLMWA|6D殢p0C9L.<YU o4d_!V^"!gho΂s"d =ksGEМ>:9vKB8\ޗPB$sv@haU9fPˑ{ VT?uKϞX2?畋} } $ \p̱][)۩~fˏგSFI9Y{7؆ڎ,"R;Tx $C/ڇIa`8W'fL?ly_URjPwa=2dJs 1YoE=>10Z9)`uXFفNvQֿ~ M'`H8%T(V7EDKWhb1o|;kGjI7 qٟ ,q} ĀHԌA`.*/VkRb~oI[1O4]J%ؑS #z* )+5*FymoރΪDZʧdZ2KlȱAb^ 7!&%e褺 '$%Hܥg9[pq)"]e_* wUhfwd :csT)LjЕ~Kž{r KWZn*Ý}(bF SuĤDz3<"3ApdtC< A]>1O]ᅸ\`?N l3L̞p+ Vi 0`B{e4<e&d~O>WMl@B]pid"zƻ,ۍ/|-ڜCz:-y[h\<8>ZewTBjmpߠRj;1#7Hp5־)kds;KQo4X,Z]M7&pgpt1\7VDgS"9b.d?Ke)3ZGLJhrM%[',SxnFۙb $ĝHx~$pt)'ڪa2Hܡl^X%![ͥ<]n{KW P|f"5^Н <5/0$<5qaB`C}&]J0[ǖ|o?Jq#2Yϛ)`uS\`z=ᅏ.\2F!)}Pc;]Rs3J*z\NG~$<(B/H68f ?lRmB8g \ET.?R׉׫9LU:SA-5K8$8d9>fRsr{?_Q 6}{cdyCӃㄧC+x=ǢEX)Ɣ,l@3DI&3!& +[a/ʡ[x$P1n~@c~SjoaLȇ8=I Ԩ$UAS:lV߶N_:R,?o ~x 5R SU< fbLႋNW]ԩ&؋xs_ܟ:ԁp 1nsj5˜RFU 0*d4V/=J-bAz HEjxZ+yVlj Ñ:`{?/0=Ah&%#BU#`M.,gKL3 >^U`Ҧ8J^N뿁ӴZN| _'a Χ/g&)X3=Z]*8&B7J+%-^tCDˊyg%TTQ<$(9( |2e'9F`a\/޾↥ڏؓBb m;Ma X}0DŽER ].ƹ=v >,s pǐe3Jj*Y˱b4pFǾH$H*bυ.zԼi/ÀgNEFQ5WTUDaƾR^"ZzXI>{I>}G&_G}=pT>qNU\{{c {嵐pBDJ1䴪xգ .H5/8Oġ3ϊh 'Fxg;&=Ig{_J8֧F9FχDm3ś=_ڄ@>Po//c2JD$`,jŹQL4EA(lwa7Jhk8"5} TŦEO :ӯB;:?Oj-2g/vB<34>&SE Q>PJRFT Hw:H# C}?TY:W<wn9Ra@=~BGϤBwusɹ g֗-Ye@u b3ALc' L/d8;a+Pے]Gr; d/9Ή7Y lOwoU+ok;TPMXj­h!ie|X3}* 7̡=Il(Wy'j&BR$V7^}in2seՐp4'F߾W&L,W9 0̢\"W{USem<0^4>qլg %Wԏ\pݪ} )>ý ѧ% ;Uһ, {2mbI<XZ VO&Y$o3z')'zu% E:xGQ~q |G{E0l)pgt4*,vf8PkS,`[!^&@*dWӽS5O&7,/8F4մ2}s'fX4Eq&ne }ᙲ)ߑXЧF7KW qlVUxOe7f]sϤLܮ#hYN3dxib{vD$I)eE֚ + w5];VIǣden>m8t e{3PvG7z9&7"+H}A[xҕl{PtXDH&%GwFMM?0] ++Ӈ/HEӨsOEHw음0-W/ -sUu24ID66:32f& `$ּ]IbI8d ?sm$-0,(^Gi޻{E[aH~svo[8PlYb⾃y23=9 qlVC(JbL]fn =qJa _C9PhJtjIhQcܷ=iYРqhy\1/לr4-/ƹo'MW3BڑMdH6M*95)PWм`IҬj^0}pMB s|Q76af E=B*)_JҀ3aCwbK4FO$٦7=~iTD[p.=T{g|1e0#LDaoqk(h>Kؖ|d_0c+q;C6/|uAk1}wgn ?y S|{>.펿Ct'~hzja]᳼^/Ɏ*/oY_O{fu ,H㭘 QRDzkȸN]8121c7 FokϓW52?rI f;'\ϻ]54s*Sl|xS^?Ę;\G,Ao1V-*l;&Dz קx.ʁKgvԁF~f&)%fuŗk3AOp|I'cy3Nx!)aMt y`xv# %V45*ÒDo(fx9%+cϫnH],)Z\\8ᲿH+ϪK,SX rB>UW~BՀN&zZ t`}xSx_o XsdM,c=A+uCW{T팈H,–pў eh\>d~`#}Shqe$dFJ:| g+֥4~{-[&Z90zcu< '<3\)&3@}Jȁxx_Dđ,ܓfmGB.MmL.y,݋CyyޢJs?taJ!CRk0:Vd:אIvZשRtw k܁<x$!wġqo$ m)~{\lYj(0_'kuU>D edD#PAy T5LwV1~CN0* &yJEN g]^HL4}8CQ劫Fs7Q6:$ch벌rGdqg]2D |Σd\~T?D/{I9i07I WLPeDٺ0ćlpbyXt1vhEtRaq&:Az't2'8|>daʌ\+@tSMxT0-iYܮ%E·p_>X֊H;`GqݘrNjY6 v$S%!F`Tqx  Ϊ>Gp )3.S' j#)oKy888.tZvB? V|_̖7sYZy}cXSljU 3b*d\jn4"u/ pHxf<hR)ESS ƝjNL2Ȇ1MaVRd9'α$hNZZ[|wk"le])drVӱ>fs9kAIWg:.(}VL ZOh6tMd*y)&PS SӰmrN6 ځTk TX8fs-8A}z^/#btYp?Uˑp^ #tn&4V~J?DB~SGWN L9JKqei)Z缧v0#dqkQcu>Pk!8yRko>*LBwFFgפpn-)9zQ(p*(`cvO$Ra,waD49u*@Eǫ@\YX-%Xo4-Քy^ Ra\ݲ -.plF̱yyKĘ"|Ԅ53WVwGm"}d&zЉgxF9:2, MVϜ=^>"6?#^yxي_b;P9 @ޱ|&ȑ Eٮ62YL 'YЦS5<ӄV#H",j(2{mƀ&m.dqD [+SVjINKZ.R!)BM|ivWYN:5>U$+YsHC+O~1~53!;h6 A8-kUhClSz"5b"fadkzJKMa[ۊ )d̠T#Ufď؆I8*Z!4mh8ǿ 'AU?!ƚ=G%{ٞ)NOh_Jn;W--H2)H0az=m"hOFEb#BuQɛ3#`7'hԒ܇U./KOY;. P5 ҳi)pهW&*ǩmRv: S`[ ԯ rvI Dm>~(neWY@K~+ ̘vɉi~/Cź2w쵟`IsU6[@#Xl1yg>[tp{+סi#P$C$a$VY$ͬ Ngq9,KAdne-#u hv|*h[|y+@\JUZEHc3bqϕfEE"!}V|OmǪ?"ٽ --ɳBZ5$O4kгå>V%zч(0<Fᡤ:{m<8/chSldg J+*T 0KV 㪛#&ADy+X\.uq7V R ֱ#H-^xI< &M   ^g =2 3%s>Hl,{s;tzYSc'W:d /OMOk̊1_+8U%G=(Jx~t#A,?*: ѨMټeTXJ}@֘`DO bz TL:h܈.|MJp} zSSõ>%GoB %,{\|ڹ :BCkO5~Q冤$WW x}o܉v\8^f/`\%OVlxy(3/܀zk|Ml'qcK ":ru /ЈN rn׮#k֦~D^4h0DB/9!I*dn<"*u1,SWk@X4J/ri'W]npM ۩=8U oZ JJ |/?xM\5+*C~<{}K+eqT f}G)[6%YMR BPeD+5ONq[Б+pbCp.'G5Du-.LN!0C!qMqw?*",[X?9]y;$$Xhlg5 -bMDρ[@4%wf&X! m` EnwDePUEwƆaz|aHj>˲XV̋T,998{2\tfX!Ep ')\`uuYLt8M?j X*f>n;k(4ju,wj3ڔWQZ :-w4{fp39}BkzVgӹj/dwjES; ʇ[([ =Pe"z8M/3vK;z*-T>ͺ,Icbj xo9-cpqqA~@рT,rbK#{Fz"٪t%A=?ܩW[ kT e`!ǓGj)h-Tl%B0PN: d޿Bw#)"\Iv!LNYsQ $:vĕ y`τ16VLבp}Nf܄4aM&K %Lڊee|ui{4,<'6np_5~ @ NVȽZ cA}y#zȼ(t..|j.st+T7{X'dSua yV*]OHSkm^ (/.hX3ty0m5`g?WRLXMWGD6^"eLW x ½c5'v!֠%fր3~s,3 9f"Z֛g2`rOJ2ej("XhBj@0wn AT,0)MJH$IxTz dMc>;n*R6z*NCN-S.gybMlpMY}t}::J,oWm[hϢ4j+.cWsȪъJF.h 9cE)Zy e3 VjR&16j5jɒZy"P򚢢Cru==Xp<%'%} v泪v|anɎ rh<5AbP3xenctQ6 !FC[}D+mwƄ  +=a0TP47T?3ZhBx$BRo,v3 S|9Y(m) BZ9&/Q%K->G((?䥢 7Q'"hlwj  .鐼جhcgu-YbceQMb&?BD &&5)L'Kpٴh녊>h9)/M8Yۘ(#]]UOK0jFz'ȧŒeŅƸJ0ֳs{5%*~ X2m9eDhrݍ T tchKjtdz'[Vs I^& 6jzV5 PBQI67#7RumNZ􊡹ڲ$94_GW2he|? Ygl 0؇U(x4'_+vxeqa|WI?kƆREt'we1N+ޗ:@cXP@ (Yg6Ӯ5Xd˄(j&+'+E 'ɣݔ;yL5m1^j'Ac}ڦo|.t()xNCV">4:>5ǯ/, 9}ycNJ!uKaMGO =Єl2_:y &+r=ylP,~:/`(+qw\^n3 -y Dr*9 Tͩ,΢Gj`I^+v%t_:Z-YX-΃Bͬ~(@ d=;-oLwo}Ҡ[X)X"Ho^;vͿw{eBJ]uS &a돗ԏ~r]c5jTVMcw* S/l*0w#ߌTԃ.@$ seT{.0t#J#zHZ,4e棡s$Delϱ9F^J59ÄwLArUCܒChyEȜluxjwU$6x)0ID\p@n_Ew qGӿWHI15Ve]GܻBӋWSUZy0[9fD/Рd(XI"N6g,GGtb=F-b:g^t MJ&:PhC-+S>G²PY{7:7kCI+rapO)EuEN^FY\Xb5d)hxzQ].:[|AkdC-Y(?Z `:+_0VsY;l y\WN* 2^S9<$Cpv͛bb-vJ{%oMP<$Z[t`ReKE}8D߅n9S>ӫl cn œ? . I+ ?I^ˆγL-vt͍enh?\q?c»ߘ !տSbîj7}|BY}oO*V/?|{ ϐXx(E1{9-V>Mro){C ^SqpRk9ŝ4!μٓXsNu|Z{UoQͰ"7+7 /(>3Y#k)G*ؚ=ܥZ4Tm!iu"ҹ:bս2khG ubb@fPVi=Q0bEv1i_qyq Tl?tݹl+J\yNo1?ԌR~f4qLsCS3m|LydVpݻ@z7 m<J+\fcqkfv i>Ln\5Na0lB;%m=ti%oL^wNOs,_yTy+*F ޖh6P2E~#)<{msʎ+(1,;oh2E)d"E\R w*֬R9ۿ9 @ So_o|QA8 8 mvzdץh9~w{p⭋ӒT(;LHO9hRqT"Xq6Z狯l>ſ^lT [+Bmk%B zrx?(mpH>3e{ߡ.S-sH_G;)VL]"~m4c܆ɸ]8{&,~T ce],Třm[))of{Eq#+ )杤 U`{e ge-?.gzך!-t-EX&JGݘw$gq֕?ʎBHuf@ZKZTHP0ufl?C4ND$);c@%0ő%D˥Sr ^R萾Ƅsi"o$VFWn*:wjQCDL79AM[Rȸ bݏƿwhʂL$!f5$ ).݂vN3oK9q}wvB¥ M'3gGZ>c XǼ&@vNN赖#$XG9m2 YB|ɤ#?ŭ~/UqIƗ<ф>rOP &w&7t>F Z)S.p˝/F%@UМ)^o*eLEζ`2dZ4ꚠڻ w~^f#7'MȉDlZ7hmW_ AƤ<$&eVu D=ZO 0,?-iUMk d$-y!Prdu{}h$1nX#<"\t,׆~<(nQTULQzɺ#"Ec#M#mVA~Cm*,t͍ݸ9+qS|)a"RΨ1(mQ:*; "?[R\(6nxqE I `\X864Fk>+rʫ=g)+ktnO>kI@6eۙOX6lE5,'JU*O>Ј*vXrƟwK,"EV?ExyTbʢ$?zcO> l`J/GrO P2gLl Ui vպao[H2?YPFwa)V WF< "1gxDDž%-sb7@eXF:Yac9qQF-M4lr3{ ;hهԷ6Z0]C)Xݐ5] ~ D[/D˚BoNjZ܌k Ezb4p"«LKߚVv#'(ZXPax9"au(~_#'@2G3| j?xF8f&v1 (j?@t~͔!u*|Ljm/[{phָ=M j_By3ݷ3O&z.K|_W;I`׀E B7&7]۫{#rPMs~s&!=8- ofv mf=5lߐ[j^m/Wf4:s׌mFs8ՄJCAJlnFcjUh]ono{MQ[Un,[84_YO Z2{=S[Hoq/eP1:}-+κT4b9YרЅ[֚C[>ǧ(.+m3TF3J8_tEݬ8gvDžy}1& iX,$niJf5G9B&!0|FWƙ._W!y ;Fo((kOr_(A|76 ٠ r2Jo[mI#f?Oc %\߭Zm* GN`P,哷T_lEՀ . X*yk,#icjwwC9%0O5jsQ3J2!pPbX/ZK`@*W@0k:EX *T,@cAJ*zuM]LٚQlZ?Yi}EP(jʹ9b 7 RkY@Ѥ"MOÞ6[تG%}k4d+riRwE172:چE6[[2".8A$oj[KXT[;1[.@;a0>dk-XئK$SJ7봻Jw9oh뛻9CvUs^I;S"Oν.H˖ׅE)yK *8a\}@x^y& Mt#-^{H0@&RRl# A6˂=m|Hg"9S7~5(QywW'8ؓNKe&>MBdhSܨ-rȋeDɇ ep >|$Yo(2)ѫ9~iX '$uRl@ײ"@SVAOJ/ԏiXmnBTO }&\GTQ#Bm-_t4Z*3Cm*@ռDuG#g Z\ZVD19]{s!C&Nyh 0<#ab:2Rԏb  -.4#н`_-b3~a`DWkub D~g cWly]|cZ> D7J#!4xJԿ!'>'\%xF(W~\+6C 4ѫu bӼ9|K7zw ) 3IsgUdj0z%17`x iWvU !4Lg)jq8$Vje5):pO7BAhs5KE;ɥk.FDBsXNk @V9f|Z8Q3s ^;p˾]j_2K(sCM;xKBf JW?mS|"tT0GorrkZw Ͼ l[,V3۸zzjTtSNe$)jɎt0C˿b#g}t o&Kr^sIfEzMDiFWB 6|P/WԱ^j #~;,{Uzt+70K (EDŽ%NE?00Z?Zz*FwaAe}[O+pivo0G=`!Rհ9u v%URAA6P*,æEQt, 'ȣoɀ]x "k@D?/{ Ţ5\ˡl1`iW>#X7X)`ezYdPO kiDN?]NNB=CD?AAUq J_!.2mٙ\fmجRpZ9ޣps6]6|}F3%TЙvsH6vxsԟ/=HLɒFoq>X%L|>鮓vS0"  3~doJDnhi_$eJiP Ѳ=Ц ~c*HqKP!fMS%~4%b($,@ AGrfn iix&kC _nle@%›I`HE@z_]㚨GJ!X^VM& a`Cg|K >>̂|Ekx*ޱ> ! Lkq2*oa5~$9뻂T⯌w?o: O'̛9^>eFLsk ٪mbM e' R22KZlg9fy"uX Ĕ*WMN7#zT\k9@:Rz8\'fQ&.YR,W qw+7I,|w[{fBrBiX+9L$w@F*ag=EJܞFHS{4$-6?!8zߊ1,*@ZGUA+zb/cd"+錭Я5!>o_nuƚE-M{lKRVX\*5\ej130!9o L3TLt!E-twOMgF@ӢD ;Pڣ|^0A50W ? 3J"pRv1Bd}o`حJҗ5H]4赃<Nں 5lR էY5C'N.Ql iاQ#YqZªZn뻈ݢ2Rm) 'jNdE]T^{9M`^v󼔍,f/eϒ.2,k 1~ y*3Ҭ0Uѷ62NzsSS*3WUDf{ Vf*φY7c_ҥ'ҍxUE4D-Awh8aSyfQk2&Vܡ07Z#5sZ;2U<4C]VkLD`{ݡvM䤡 sr:Mrzz[軅inPX$=^g+J9< ["[O%pC@oYHk/Dnfl-D gaS8QRArӁ;Jr_a3 AϷ bVVndiF֩򕘸e$B|Џ/~.;dA9L>YA?k&o[1&D:KGr /Nӫ -?"2sI< ;rLb<ѷd 7Ɠ٦`Hst\G ~OAc[|A&2\SEq֗5<2(qBF߉(6+韭KZ0v3IvBw3Maow aw&[2_gTťBXF X j[쪠jX gG2^Ģ̌$uYcpiʻ]Bk  nQ)s7D6:ĸֆ9FFF'~qVh-N+?W?&)>.r[KָU(U(seBQ"J5Qc82xr95ŶdJ,#_'=eVѴb:>_}5ܪJu Mۯ6gc,'`Y3}QpxWۼx)".).uVmw0ߘ:,qPrV6(@~Tu;iD% Qrpz8"RHtd !b$%3y>8'ҡ{;z֮:!i)ÄS n (x6C0\zX *\[,%Y"/T /U7i+J঱x="Ynxx*Mِ8F+Ѕyt_:uV /tƻx qk-y=uQ٨7[…"< JrT-?QKeL돰DZ,g}T˄@Ѵ/ۣ?'F0sф/Z(h(4ΓXH,Ţfc]UFX4{ 4 QvY:U]5CWM^fƞz34`?S4}ؙB}EObo^@TUY`t Kk"55^ЩE,ah}߹?E``XƻJr"q2Դ ~R^Xr|c݀EaS/ 5-햄4)ݫ~ŐNV<Yyxa q4LJv1Gv|x_2?gqKF z. <{|(V@:ۇJZ*irhǢ""K\%ز7a+S 0J WC^wUzj//XC5 M3FIMuA(޼ا^)JiЎ\S}!3l\Y-jm6{ì_yQ>JBَQdQ_Kd )#>#CvV`UM9f8DT3r&^ gR] "HVz˗b;T >~]19K'|@WR:R U`vgL(XQB @ϭ63V%t*c.k/oy~|̐rذU9UZaܢ%TSeWjY1NJ GU4|( u "ۘcp{ l zzф􏳧jr>{1_ٵ;XK2*?D\ (dWjAй4VP/mGSY fVKƛT>aݫIzJm]”mLe?Q nSۗGhn @rqөWn+YrfKzݜY`UK;*o"Pg#r81HG*ܡ<ԕvfCswD s=IS/E6i^,e"\ &۱"=Ph {jDcKU@N`Q']#JМz EN#o = Ns8%䓫7 _MT/Q",4 Oj- VT_nZsp6sHn%OݥIKyMf>M1qwdP{Q`\xRHn¥8pқ`)> ҂-Abԇ8n휖`(VfݠbI1LK Nj3}a _?L Aȥ.L)/>'2p\!|T rA ɥnQY-%xju#[ݹODV$P@K~d9i %]Hv&m^T3 dek1ȻH E(qbM֞{Z~MGn `WyDVF(vpQ9WׄYMښD%rX%Sl>|Bx7;,-^&s7=Ƴ.kmNS\s;2ٕQyb&B.vHxw-aWΣ)8Gr*O1<|C ̿ M64){_ mIG>>wz`=Q{1xb;%vE h9RT5tPҨ +1WeU7˸EH?3hp#_.d[9ka#^+/B56gNOFs@H:$֬V7,;%dXnS@@$lFSH39B))7"͙1m"IOL|$l@`}psk>n A#Ɲ2?$כ(A8>o=%w=oq36r-JyFdAiȻbJyX ԣ 1IutlZԧyL0Cl+4M8sv1'}VO.RK$FOZTAG}YmYIRt΋۫wܵIP-2`b-E.#&*na\lyi6ejJݮH8)`mK3i oD ax-rgRsڤ V0RxJ;dKK+\rZѱbUWbԏ.[>5EɜQO:$ze618jt[or~5m-) \p2طŞSp[*sƐ٨_ e΄(Dc&aQO/UuS~Y~74%˝l.I!_J4EƢD>:\<|n,5h4QahBW.<ɟ0hwgŨĚl!- RQ[-\T3rݽc_6`.>JY`9Z^ҷLeRMXZ\pk^I5rPWpپӀϘà"BoR㹚JNQRdb!c~"(/WX&v&Qyq>%28ï5d}c}hTf#+~~Fq"YJamEfّ|297~!bӵ3,ZEXl`x§d@wy8eι`jVTPjJ3Vh 4&ꠑ.SIԣY֘nc-F$EA;<^/G?.J\F{qĻdh޹I(i5YP7چ>v@FT*TA& dWF@ԸltXˠ~Ԑ霘>-(^RE]ba05݋Sl=4D1ؼ{>PN"Eyk Nx$q;_x-ةh+T\!V1z/tvB)@Ԟ\'-ͼ}Gr,2 ~m~qԒyIl G O'|c#s]Q. f.3IN(7r8BVj7y/ϝˆPm9Kq0O=08QV"B_Ys'LP=JC'Q xQNdI0 sl1/>={lt\/8I.j#د=݆Wa OQtNn9Q_\Q-N~w[4IYFe9=ttoO2;O](:;f-y;;L^W|MnNh}rcWSP-SiJ6%n,)*۝_.XVݱNhKm&,NY3qZjeG/П]\wfkL#||Y5xIxpޑ~zO w>"8&{ƞ"P%JEo| ˠ0zʥ~YJ0-L"L#m-B ` }w,HV$[kV{>~-\qa ?P[ =TIR }pN#dte befZl R<re2sL"ݚ60g#H@{ᔚ`Pw%yYV'-fY}s}=4=JCK{)ޥX})A"X<*ī fn| fUHH[54A./.P Ώ #6.Wކ&6;8Tt I0YC yG Ȭ5;Hc<7\i`*LJNy߬1^כώv"]Ȇ+gm(Vyaq!V/C }pAI~GoΦ\ЪKy=%‚UTiL(+ˉ:1|YSPi&K xi(JK5]mLa#PALrb )#l8cka,Ƚa-wQW6[jSiVEBS8ՈJj/#i5,7m`V e틇##vUNXXB>ĶEg$"S^sD]XwZ/fiь:%,ġ"^'.Jpg#a:k4V7s.RS2ҤФ;a+lVٲX9]R:jnVnQLv!_],8IX fhy^K@tBdl2@)hʖTQO2b+' cq)%+rɅ'J33!Wښ%ur+S3V!&*h$2=ՑeٱșXM?t bp)˴9!̝*&iQ7C^ lvIoeF.AYB4}cfXN#;v]nI ~~TzywA[4ce`x.\?u]&sfD5`ڍ nkX8NҎΣ=3_i)(,NUQȤrϬ5ww^2~>/^-?Hs81')A?&9nYe/$]GC,z5rK[Ϫ[DLڨ\y4d6rQ.~  Q]I+ƫ% =tL*M_s ;#H d^GӒm.79Ey`Ԝmqx9wcVˀѳ$$J:B|֜M63" LFȍ4ۢmH"vo9%i?fC y`{](dV߭&/79-"'ybU6hDJ>L 5(<նmt ]ƅ b׹a?VU!@aE|nu] !|}Kxzs`[v&춀.~Z'(:dX}_nzE2m&.udHZ @I&pS_ &ʡ1ϩ8] &#[ןu9<247dw.-Ft-sEVETWi>Uag[DZ>fx !!h=P3 -k)ʿR!p RUGc +"$Ew~վg(FP'6W#}0Gl@Bw'8 Gn/ΕQ0A&*p51P[|+yuZӠUWCV?:oJk94P㝏9oaCeMjnx*ZH* ѽ;QKӚÈ߿BIo։>f^5Ls~uP59\ St0/BlEaUj ׎O4O@6.FWo4c(듈R IOݜ. | IFWbyʖ-] B3x*8U W+|bT%*s}Fj"|H!|Rcc:'M(~rlLLkx6u¡ÜH+B\Mi2^G FChɲ-Et׍e`"Gjc sjo pv2|YK|Ң NyI2e@c ,m4dRTz'Z'=r&vETk` ~2}+j)a_(!­UVʧ(:E]c'ФJY6`I2޷2)uɐ:+*/W[1זKWQ? 9:E+ȊK Txp^sU=K~"H!B'6;uXOG{ܬZZ[`QbG|7O=xy#x+iɡZSMH7ӒZz!{),߳%-Y>N cpQ^QATt#*nUL ڑ" S%:)h+~b{}6'kfy $a%,uaPYMo+zq!J lH@MJs!O$m XJz~#LIgߣ J.)x) HjMr0mqLKc]A^xmxSAE jJ-v]cY!$v&)R2N\L– vQ'g SZ%JΧ>4xNϕzݼ+->yORP)gw^]a_"Bڝ5wR_Igz]&,؄^NpGF&|Hy'B <'+%WM +Ԕbs/뵮p-u|*i !z=4"=&X 5Y@@?Skq ,T0u'gI.C)xT j \[s]BOsO"jGmUMa9QJ%/D1⺭ЄAO%/kIiwֳuCu#S9hUۿ)(m-BV xBo4.=?Ia7Iv+}<?IնX,˟ݒ"˞Pb>˃a)`G5g$=ȱ%36cĻ@y o8SbE \o}5,]M˸n) ❯f OcR>:FGeX{&шDX%NՊP9dڪ}1 b8g.+fBWOVgEЊ-€-<TH=?}~hm? 枔׃ 5Y*2Ҕ׿ ꒿ yf|!/<ь@B!aidmȆ>jAC]6ϼdF@|ChѪn{ I&?aJf>7Yj?ˢ!8觥bt}wsauPJmFXdfzw`'GSO̪j TGdg ~C#1GƬ؎ _NBt78C##1GxqOu4WgU܍/rPWpyGi4 ݫ;@U.|GSDM VU1uMkTS,3c'2t+c Rw<(e)%1> e[EBNTTcs{;Ӥl\A_¿4@_M #<(7A<+\p*PU;8/b ?BE6L̈́~\JǷ.+ }4s"bBn ZhF6@]i=24G7Psi,hBFu!c(.usi)Dϡ$A/޻߷3FVUj6e|pyF(+9@ZFբ"!IՋ/ŵސF.oNɭ]H]xXպ4 `{{1Iw=~fƟ[d|%Qǃ E=ҤA7gS]YFNL_L;?l`*pw8sNut:Sj$0ىBJ [%I3I Vq8C|q)Elh-13]tNNwuԸo{o*ȭ'2bѩ97v=@G5 $NEZ%$cJbo;*?X _D|72?̫_Hª@І 5vHى#( s ,V-9E-dmvg?&Ǥc!<-YH$U!GUK..3PӰ+Ct-c Ndv^a}ފO$n&W` 2+NKڊc[M܉A }MG5 EU-An%۵RIs]v\lhW8`U_g),wg ][I<5{Ur_8ulHi)XØLq`Eň^7gDy&paidMf~bZI҈ςL d4XR-4B$5M"Hu,؊N U5MVhwj?(˴5B!˽ݺ=?M,WDiFg{$.ۇo%lpV1>WL>`GLȱhNeDw8`O(*%cjvg)u)jǜI\Xr7&F{5*6o˩ E h5ěHqf*}0/+b,8fNdZ&E`ލ=q7}Syrn [q{r9a[/})mbh?l*Cy'gG ޻~^(6uKgyҶrHT傍`6 0eNjO!71;4ËSl^B}`br iuͪxXdZFBT IP&,d<2G.ZN,nѾH. }mjbEv;lF׶&ۓpS|Ֆ@ m;BMȨ)]”OV[ S',"ֶB&}nu- kH{A(͇&Ni@|~͂L"ҥj _ʾFNa<qz,s^͙wLSr(# s UN9}kеTސNl =z@QeN9/(ߪi+>~&|(c(:HCZRs !Yz9&*4M߹QBYЫ$;4^&donHrő]3UQtxHh4yQ&eRQd$ h})n狗Tr]sWv+G]G^g qu&qK6s^a`|&mW+L C'n B!!hɭ<%̦w3ٚMm^Uaw%*J4 0=Ϙ3V^Wu.bsX"zU.X; ͩaBKC:T%c2!535ΖQ "a7#{xU"S"P}Ѓ 5OgK Efɨ3m~+8nXjfIi.nI92 +$,ҁ흖`$`[(}܊px )v [WsIe#CSՌGg8쳄Ŵ.1:^ 5n)BmFTuB 3Z5c6,b2(%%Ht7KtZmk %Q .1+݀ E|)X 7Ncu=LUhWQ!;4$ @@?7LX$oz s[[搭](70;Slhؘ `vTL;zI#7 ւ`\'.0_@" C(f k_KR!}q{KTr̎N;>'&V̨&c-^3tF|$~{թ"C:d8iuM68Z=1HƾO!\7Ѻ#[F uF)?ִ_c*~ `;ײv&9Gnr) BGBa/7ʈ3[(}Jr#YRFqruoҭ9GOQ$h``9}W"cuk+#oq7[k7Ns33[y<7O:Q3ωo}]!ü]yA)b%ޯra)'nyj䭼`MJ_EnE ҡy:yu GhEP/y< lಠ?>&%Wgyͫ,;qfT7+=IRkJ8*H奃F-f&8Tϥ;'Bd`0啚1%pE13p5Y,QuѾښUR3q`3]& w2#]$+ퟺc|)aW~3A%,=E7<$(m%>Q_k@qޭl8_Hk į.oޚ08!'|QfPhԶIQRjx,M,ܑPa{ܚj!pY"aT^|e46ȇ}{Б4,坤 H #֌os]JSo~#|{,Po]_fLϰP>ru1 #tI#B$7_AiijZI$ .Q?Ӥ8X d6~8j}YkӀQX0GD%%KK= 1үml6(;୫1kh*g!\>;/}ξi'V{03GnG ӝ(=-i ۡGz/XSV] ט]65 ,T:mFFYtz:$=U5b?-l`ްmr,)T @7eÂiwC_Ýj:uKq?%M:]EQ◥+ uIe k7H?NfmB*: XiY%$@6=J?/|ݐ"YDG}gc&:ES$$6Ɨgƙѭ/*uPF!=q6bU+G0k}/QyKa-uK(v&Lsz;soW#۞5CǃwpTq3CNc<gan'2N1?%kN&q{'a8ij#:.y+#*-qnuE:H[c HBFg%4!63$H5}gf\v/ðiRMv7N$kER*Hb|vbU1{X|ʲT2CsJ\"qө0jԕjK GBoFY͒j\YZcܙ%vPq{Tvf䈩t Za9 UQP>5Mw (]xU.y$'htmĨr\Z |1nV^Q%i8'_:,ӑ.Zǹ ?$q?مdΛ`ްlbΨ7ڙ[ḾhWg0sH$-2Xk8"~S9hC>tG j-@fRC+G@|ڬgp‚@f X0/q̛ںbΤ =4S"-E08@Im5Ī_H-ްG%|1VV) q<Qen9Z <3fuݗlM4;2>^$uFyڙYźM 5Eq0}Ȓ}&HvlS pX egkBc- mn'oNTV_DJ32 C8 b.cpM4\S2,-̃(.b俘R-hW.`HqM9*$ Dz>aU2&gT^2VH1r~KOxM9~A׸VDn-]T~.б4dz 4?Q.OTZ)RMY~~Ĕ+! 3Q+ ni d OG=֚p.d uWin-)y&"szJz*$Cr"| [WSl#@5[:c>7HEVFHcE٣=䆈j* .YhJk8U bZωB_nr$L셃cja Q#g$u[x&A12u'e",}_.٧ˈkBER6 J£N:C;k+d+`H,,ACaRf$_$nEqyzbƼQ&`G?ȺpOx[,1~?v1+̅aIj>FQbj{J l_%t$BC`Cƣ*6u'G7Ƥ0K.mNK\_a)\m!^جy\S+xM)o)M$QԦ8ɗM&8Mo/ dSҏS\ c ezS<1h%,`zgf WwH+Gx\BSv ;EKƷRm{)An?n[MEѴ{T$wnޥ2ڕ:9ጿќp81 s5̻?̓ȕLIdMP6/8B87{*iKjD b+.ت+!"́N"tܓq yn;  )xJ1Zҷ9maS% =.]Cy.˙i)ђ0%ufH#4k^a{C"нw?޽x-[Mf15. %uȫw_3 gY%:-2@n%w>,)F`=!0J.3F8tK4ә_j7 e%|w}?Q(4`Ȓ:Ya".ܲc=*l:KPzsf{^|DXUFhF*>=$:÷#AMuI5E}^w jԬG(J39E3RȎ$Ѕ['S1"- Hr?mh*ΖhWpU)0 eq5mA$7bqraW;~ Au$W8Ҏ@zy.EDm+GGS‰;cBb}V%$&y,.⨚%uAFBȴ ]f7!l_On5Lϫڪ@PԘQڻ&@zy:4/$pN=yp KŽDR Yv]T.uKk ɜU$VtҤ# +,\~yu =ғ3 FtCS$猠'9l,$%d= m}/Sf|׏[ظ..)ׯ$"JQsw)6ySzpbl-nw\pԕNilqUIXUXjϰQEB;?'CXx'7yx>xI2Nx!i2vxitм]v7Q>l,x*ƵL>5{5Mzr<i΢1O9D~w mOf1OTt}VA0į(2ZZ`L}wȤ/Gv&>rzrz *v 7.(Қ#T R,~ Dbᾋ<+J$!lǑ.!  M0n3-9ƶ'69@mވ6  V-['l,Y-0pkPWIo{L *2-p*3szbtr#0XŲ&:.!CUJm7#?ɿim4#=ŮѧLf0F k3$HNh%mrW|ֻ\nw>c1;8`kS2EўZP !dfb߭ (CII8 %7Vn;nrW`2CʀwK!d7=@-2z [n7R@Z*ب:qMMJL-G•vXzex\QgGyZwU/QI 4DAr>@jLq=YM,/g /ɳ?jO-fH6LSp7> u5r YHua;LLD8;@-i#ԐLv7fżxRG{TQǔh<,)%`-l0o^>HnW&bc'\ݸ(T w=_/J2ԒD”}]V뭦Mog|?t>x_.|xޒ˷ 8"re]s ZŚ=u Nd$}hma;$?Z=xi8GkQ¸$.tbONO>Y8]Ljϧky!n)(Rn=-1q֟uqxWL$I@I&}}, dol a4_,7\YT[}?٘7*Ҝ;&)6 ۺٙeqK$#9 .~DɺM/ג vs Z{jGr9>Ww _yA5͵կ`~>_'׮>ӿM៟o`o7B VȩiG3#Ƙ}IT E-u89w7ZYߌꎑj u;t+0̺j_t:G yPnf[a{5qq?i$ͤ IXmI+}ur.f>^Pu٫~D4 NYDމ'1OE$6Е`qN$-; sC|ϫ 6^#]'=08ۤk5֧e\dr |Yl c+Q9J>.E$u| %;fhg yy b|Nndz5e"eJup$heo tV ŲH!J=BmMW:o0!_Tw*o.+EmޫpLv"wV-~5qFyTpkrĶ.XktZ{+y㖦Vj@bpжJ[ 7k+y&ȹxYP|d\`y^)eDYI)txkn<ɑ#5e2]qPOB8n[a=$B?i{# VMK:vRKؙoZxR,@&*%s~= ,iJ!l" #}o}{-tY:WVc]4_={kO gܕvB ]`A |"v:ƽRk2Ϣ~JrY'Vox 8:4diGgkV1g7UFX?iZý,.4o9C$m!Hg.Zᴙ^ݲpPP._pc$&.G#c|90l,z87X{Bsr Y?W.fH4M~)EΦRscuVYj|W N&="u\ Ɠ|ᆬ$AKbgÓv03+S|[~Y2|x9koj"C󈽻~q`#drp9S\n-- 'AH"wDɾfrL*s nH}~͖gg W= #Hp O~0Q?gJCv)m~#I,@j,Gb`͵jlFXSR͈a* ] #˒HPwt}"IDIZ@L4f禮/*llHg-+&Z I S(Yz+S|#ű̓՗2w>ajLWi^fƵSƚui02Tv< mzF|jKa}M_D'=,cnOD>͍xOH&?TryyЇj949nrxF6P7S,?l+ U36M[w*Jޡ&iB_ =9DZ"3Y3*HZ;繯M/)+5_jP}QCY,w-< WzbüK&*CIF)2mA#[F^WN@޶7:Zԅ@ ҿ&v҇Y ωv!:Jv&-=be?hLO(#׾(&Zs-&^nLxLy}I/4A/> %FjJube̼[mB$xsB_L{PeơwX_+g)VfKҿ? ag߮5zLCc!HsXHzXMuoӋ)8k .ޒ HgD4' wAm9:wE{&$d)C`Tͅg.Ї"!̙<.D Z}E@^B﹵ϏTbql )J`2y11+s9\0dU$'|];ew+RMFJm50 oh_s__zL b cXY<+P_D#+`pxcfe;-<4ZQwROjm5ۃ>ykSr"%蚱aPggr q]Cу|ᜄ j ĖCS 0ˡЉutEjVJ},n) Ǜƭ6Es,;/ p4WQ|(VNX/#(4?tPI< C{洦Ӝ*p^!zqLD>tGq D%##uֻ`)6Μ.+SVFMQhdWF?+.7N[QWPDn?v-0^_0x]x'O #;I'r|T &2F %[0N5͠)X?IxHHwlj[H9ӈ Gh)JHKNv*BX7s)34dNhO#JzF Lv7\]AB!@Kz؋*vXg "/1 ލ245i*sb(k$ϧbM%z*ҁ"{NkSJ٭kP?C`҆! qU]# { wF^6UA6pN OG:D/\AIja5+a\ }|B NT< x#K0b6pYM56߃X3c4\]!|9诊U0Yԛ`.{j>Ҹ%m=ERfu@ݵ}vte1Kqvs1)lyY5(},Zw1N )Gǝ7Mdg :Ǒ1mcICsU2H'9 /x?veͪ%"Sy`X;XO=NLH.*$ǝd @]6tC>O%0+9-t!SK嵏IlA[Yܬ4jPx.yYKYT*{al}vr $ T}oGty{J~ u2@|т-Qќ2]~Qaʥͺro[|B>Ik [)/^9q"i]%ʎqO+w'|.5puNJj׀A$7!уEҿG&<3E z-x{B\hn"W6 E2}˜ 0ѰC'c\b 3\QPz*]9J{an]GEǧGTBTBeud. wau&Ъ(qh!SP! i|ӥg&P/Vuy9)\wYUa-z7tyT:ċW.[5a%:@?^V%S.0ˀOAJW$BSrw|'1"` 4ƻM8e%G6"Cf'Ĝλm*SXz~RWs()>NQ+R Ŏ)=OCcefjzdkR7:m[mP<ݞW3eN~z7{ZbuzW. MtG$p'E( }ՙi.֥as?tQ^XNd;j\2.ƏD:(Gs/i&`w`Mڬ_8P[w-cqANi|mLX2[Aw̫c54)0u> C#vQ2}&ն߻~*4Q~[G ]B $@.zHسqz3T?>:aNHAs[m[j[gN_M~7 g@xJG*zX3O\l~'x꽤p;w}B=:Ei):ߩ]XzLGwSo1t)ݳX8k R?e7Z>>s=EW{2jLr?nZʕLlbl&}!<뿎M|NP$Y/Q9鯜o*Ez$,QPXWM\>dQ_fw%|6le(5ֈ㦳+wW D1a\a n 0Wו2\j2 NH%'MCSef8XDATyedʈeu6hv l"p)%VdVip,U0w.:Z{TUyH2! rң+IsJl_s BHtJY,g^'Xջg|L̡-6X߭\GzlZͧSܭST29~zNR40^<]n=E䴈{  ӞAaSHA7f ).q5EXSB}$t=ͭiKFTuBrbg 6Wr=2ߤpv Dg?-GAuUuU eIgS9VTOq} vT>?zN :2aЁwgHWbFXI}4sEASZ^ ^` S8T^^DGR|vˇg/4/gʈΫR I9 I9Yz~~k;jM1.#[0-IQlwwJkh`dO# Y߶JN !,.f5)=k2dzJ=RLzJaֽP1%3 -K.[n|]N٦I3 JEx_ߚMn0ݴ!Wi=|:&({#XBV=,P47B /u7ĥ7jbuQ"zfNĔ 2~Um ҲR X>1hѷ4-SK=)(s".;؝]KB)d2s%'}J 86wA%⮷ 0H}:fZ5pƥk:xEb75>*7HXO*)uASӈ:nL0gtbhZYqhq 0o>~ejBJ n }_D'"_&rjESC5?iȣ'W]뾸EfHwu +,܋t  |Ǹ2%6awC>]t^uA>~k' F=ē=k'6|f¤% )X=KCfGlעŢm| zpTD?M}=i{lD"lLoï#“'Z?E;R+՗If6ad.T";Opfl?*jڼS%gcb`2.LRhMzc. MN Οz$71ѹ8bE' lx{FhoPOǹlqm2\i(i*nǺbVrRL9dCE3 ap:d0<=i)a5dbkgd9!=A9 e%68su @WME޼ #CeZB.XZ x_!Y[\3ZhδпT^Ųq7Xr+1Zٯ p LOt͆Ԣemim!Yi:!:[/8Bȕ[_?\!)MD; (;v=VE[Uu5Kӵf'F*xnmx:bm(═K: :nxHƊ~U^_ pOEl*Sfx9xGcB)]_cdVi"qhd}{' u\>#XV'P[&l ")z.,(ƒQJdF^ie }y cQh/P4fĮ2>4/z Jm#ٓ*ekeQL N^ΔЪDռюrm~܅ !ZH3EJ~,噑40dքVt"gbC $ 'mhHtk'Ŭ9E6Q> ޚR 񩵻h h &CV6pw$m*>)il~ %F:?:6msWUW9A">wųs{8yM|!ga"OZIzMbxXܼ( &tl`$]ˋBTX8 i &4|q hщvB-󿾇sz'[ta4CW;D(ia30(rZ?Р>ۯ&FgYj;{29Rr??*QLh>>t:JZwW+2~QY)q2gĊ>sǠjix!1Q3ZǛ qij~ezo{/>+mdekQ=twn-v})M0(`]ЫdeuV4?+wuf j8CtOSh^7Flg[CpJ5>h~'E`3:;N:{4xD:+a7S<5mF%lT}-n?RRg$0yD \4zښfLJ9}gE{7kzI/Ap];g >9RZ a^8#Hw] u\}!!`-mM-V?]STʤ|WCQ.Z $[D)OkcRs9n2_H }][I"_z5#N+4֊D> r; +@NUxSa5_3+HkK/$b<8%gI:1K lB&_i^I/P-rXG] batBIyc#%ڰk1m(UoǺQraP M2mM'Ue0U*B#M9R6@zn6>mb!|"Ȇ8l~oĎ:=cpg2>kzU.{A< 1}Yohiaa7>9)* Z >^cs<> ^n$95*qrsT\Pߑj7g JB"n@){aTh~߻o"<%no= iq`7@T*?Z8:uVoE 7u[WDZk9lJԆo ې65m/$l0WbmzKs >&fa- }ۛD,nqɚ!s`Nxamd&u.v:1{"CSĆn'4%_ބ?]f(\ ΗQӹ_XO rCK^HA퇯-̛=o[S7dY\N\z@,/8Mm듍L읻8o^Ftbe>;̴K UHL1(X,#'X/H@Q0vD6x"2Xu<,;@L/Am Ias3rc%yGVE>^>9ǝ(/I =aBUP +|m >J Wz^lNS9!|̐Ң Ee(1{O.`ڛS߈y \AԲkR!2nG|TV]VLnZ1򠪸U4o/AKx9Uq:P-iv7u ^h6y6Ad[a,5=rJ}ur5g6}EƛW#e0 6,/T B-iݨ5F 1ob`cCQ%aдwv?)H-a4ʑ@;*:9abM3{`kVB#EA+_Z6-6N9MS(;m4^,E=6T]ʇ ~I f%w`cP%K_̫#Ajbѱ`7E)SgdEZKu'u 9LJlPwL[ $Sb0+ן'үʚ!E.vk-'vW5_Pf9,6*q: }2b$anYLaޢ'IvaZwR"*bEPӠl&Լ. A4KnHqòMa \WH 4>aq~~~hi\&rv}qN(Z%O8 xf[Ra7Zpϼc ?`Abqx؀☵Mofg8%mfyaJ@䶣]/J;Z#HNA'؆fORSzst(_E~o"fNu"4~|Rox(fU4@^:R`iH6N3];T]r^ǃ[QH# gC1mE`SC/)`=9rm .c r˹)|]N7s+ԀN!og\󁥉}w) )y9R)Z^v-o =<N_6*@T#>`+k+BxqÍXf9Z 6l.!^P?BU$z{(\1o'#5D5.y g4A9Aw ? @.LBށԝ"_葕+²4~9QzEɀ6,'MшXnT2 M",}Fz}*,: tM9Mrwus!'(4>⺺-*^U+@TzG$O3ٍ˴AiƑ}Y˯/IѺ#W~!uyٺQQ.o$*v]FA>7ᾷ) 7H- _Ƈ]2 o&=^2K銫QvF;=*<ҥY7#8x+[f;K3x͍Ʉ/$ҥ=cfaF>VGQ{uvj/@dĴo/H6+hE@h P=)Va;[ q;}d&zsMyWK +Clƹ#f%]i&`OT[ƗzҲQ5H)$_A1]uKt ۾9w/ܗm@8a|bG `#l uApn!j6-{եЍ/yd/mA^ZE|( F 4e?Z]ό0~J}"&c%ae"#e 5UJ6lOټIiѡ{"+5[u=U:Gkr00Rb,%prp! We>уۢؼK!qmPW'Bq[SeUiDM_37GbNtő +a \ll]Gz6W|+c6_+LV:Қ*sUYQV96 U pX<ɠ׽۰2[6P .;VsqM[7bxX0lϭ ኸ$J3*eÚ{.vf\U7f;lAYm|ב1pٞ|V2&0.o(G:aYq&{΁gGvlRK+$Eѩ3[Ki[TԞ3+"_xG lenO(fzRj2R["YF씮ᕲzdW0Ye@cWw|@NTbgQY |٤aT|s5Iտ`2eu1P3o@ a(EFa{$H˥zׁzΏ  sWOJ]2T&F)hBE۠{[qY@O)d0vt)B!;Y6LGEfn#-ɔ%g%~PG 8NiU~؞Lj#k @ Q&3!3Q}Х/pW첑IͼHE:!dh4[AB<:K=Twꄲ+Dq$Ү-b5)F}G^-OS{ dѿX!5h?F88I\U ZoGK)9$o (@EZQ:CfN!gS9&i B aJv󻸨 cպ3F7v;CZ?|Oň>5N.@(#&ulRBcV; nwk2"`7βI45JhBw-\ps[❔8&v1 5'; ]jz4Q5V~M 2;WFBEU=pdތFDf9۶_L /Jt_˰'RKc z-܄qf櫮\Fnu+:,Lܿ iy:v^_^ZasuG~+NĽo0,it(H}=58[|RV|=G.mn?:%[3vuEQN"a$kwZ_^^ugǒS߳K^P<5wm7(WRR Uip2:X!#GBF6x*G~Zci*ӽ` ~My$ޅۛӸY@B`"r@c1`w LWK_ vFYF,e9 Liϑ5],e~p} Ѩ6tXƻ9{Ô: $nK9,6C.uHm[16Czvnt= av$>Z2^YZZr,sF@p Q OR*!v3DP&`lYY6fY->>|/'m% " ˘q~уwB3 _*숏cyN )`s(_go(X̃ Izq tˆ!O}Ee AS8;|ͳG8%^o UCzǙ)z,1F4p0Kz4^9u$HV^xI1K\H +YYD^rU}j.jDyԓT)<\.iDt+s샞6[sp;ۘi @u˧Ǎ+ʾ ,y:m!W3d*Nszg_l6d]eEc.Mqnڱsm ޮx]ea5411P*6{JM2iu*%T`؝ˉa 䑡ꍺS^@-sI3Y kigz3DhZzRZ:gyagШc¯ d5W9ʞM8E9''IsL s/^C?d~7 Ah-쫘VCHnk1^|߀!RU~9 C%HY,F4)_5/#z ux# >C/a ˚ِ"Q+P.i]#b#E W Allrɤ*!J|\4 TPUg}`mLPؤE?3Ha\3\ZָŪ~h"bî9lĠ3c$$>FjwX$[B$Mcz쉷e6Qx;X~I2nːa"6JⲫOPT&@ZÄݷaj9n%>ܿ1 Y待8r+qR4-]הpnʸ{_[5XePKn7J|G*79GX{:jH ,VL@zj;fn>vM44yW\C.H1vY GhD=5)rl]l^wI@gU}kjNa{j]aDeUN;s>$U YIV)^y\c~ kp> 5H Z$4!z4>V a=-U(PswA? ݙ .3*,C$wꒅ 1k;2`oÄ5X/dXCGiN1$ñI6u0a`2hTqxF82~eքeщ$#u6i\*nuhkӪ #>OkvEuZ.Χ'T,922$.D)4PUiUy|HY,?=ޮ1$)L44,Vvf" sV4ȣ0dqZ-,3Qdp,hBg:Ł+O ]d醵k;rs?XR49Up,zrጝG*0bMT}"ѯ@؈Zl;yf)c"D]f}=,ߞfrqqEXC[oc~sL:Ztff aK - B=O P0@wUmY1*g} Y9 ^72ǫg[#:p?C=[YjY~e(jYLYoe䫡^ߌ8EXw*=*1B.8fDWdD9H.{J-9Tez.tjDzIμ{Zȡ/}D`yST''@zK]׼l,1jRSeVaZkp)g$ Z?4:Q-NGG̴T^NɅK&9AdnO+6:rV3Ve!Tz=*ݪʤ.F> ^dtӬ/V+K1l&|?G*Ye7*;HZu)/=#qtY՞6@@adI.϶[؃NvFkv^ Cq.eRJ`wZdeHDh6#fŷ/*pAQ^O`%adSяcs&`؂Fؗ/xQxyhR+K3V7_!K4緄S⾆ؽ|-,cS~+{B}_z?o%9_C>y]?W4o} ߫~y@#{~w/&ow/#{\_?۟tW{~c{3_?:eߟ?7M}y[0p5׶P5ǢcO,&'Yz{U{pi롧[֪& 2aPVT;O3$jz :ə oQ}x*R&Vh5F-(ۮ8Q|Dtz3`/m/~Gmk;tʠwtGgnt؏ȡDMbRإ=?&R:nrztW8-G v/51v=L 3l! &{)dn,Z>z…y$!Q,vO:n7}@6d )ƿMV=9϶ Q#ۅc5֑GhIw&{²8; %u' xq^nD8o-E8z=))-U< QEz4Z o-D`?]D_тdKqΊn+.'uc-C(KP@ kÆ|C:JNF_QdF1!E\w/WZ84)bn-O(XwehQe0OWkPs3z IeHKO#9ȬE$T=)'6*bQ(\k+rD0+0 Ndؖ6KH!Žw aWv*ws?6[9Ì'9KC$~ l=}Wi}p^>hmdSj18 \5@#&WCadFZl,A-hL/N)w=dǽqfH"e@I"&Th!J ''pC2da3Ӆ BO@gy Y^W~u|>ϟ(5=&#qv>(:s<.ΏA N&d=$'GfJ7nx%a <Ќ?frN|ABY2(2vLD~+.oޠj"^t@C Ӄ#%[ß1 K\.x gȦKyؿj*F|z7-yuJq7b,vxj+(%FƱG"(F+mqEv]B%@)~#Sɾ[뫯[! ՁU)60Z}'HgƞŏPo쬞;iUD\3^2̛sYS!ix:a@Eg+}tx*Hzn ^?++Rd>V]aS8"?wP "mg)@?딞5#Jh " eew#]M }ݓZ-O- ^Pnq&yIhjI+ǣlUpB[ʞSнT%9[#?~n8ߠϒ5jANHRƨ~dWsGZ+#"ݕ2̋3Eχl˩#0o5@iu,e/AFaKX_=s݁-ڇzTӇPxVJzPci .+=S>C:[xe'l"ӟ!w+.py$U; &/&75m0hHZˌB;n5yH'DĢFŞAҙp>zxw?ZkFw.)?Khᒋ)H!O Luֈ,bRށC!%DLӤȯIjP…;yr ?PL\xX˙8Ba--q O#pk(1<`[4iph.8s2 H!BZ/X=c>*֎p̎5Rcºj.tɏenۜ(Tb>z<^|60j 5:5èaYEluS'*?6_XJ8G:MUbX},# -$# 1.aq}{ Z sam;G}|v3%ӗ!裣<[MpۺG߉+ĉ UEGKhYHVs>BQ#9Zubn(}FTbW148FΎaqGEL4@[|dq$֞~ pڑF :0oT>O 7U bXRy%$Nv¥MA,S{Dw Bv-d#C)$͸.B-m#G)@uO] y01N_tBa*cg5vuxY m,ܿP4"Ltuвd ͸i>],,S؄rd?ܵ6&̏&bDZ_ <"{LlyA|_;Q4i+d#fŴl8 $QJZmdعgЂ9 u~V2xM4~ G+]UgP 0oӴB_j<|b" eF\>^q-^bo&((/>ŜL{ghlG.}~0}gY'MC``G5 KD` S|yb:aDAxy՛`s$]e 涬^%D>uI-<7A!л_ч 0̀>]u˒8⌐T\B$Z !G3S@ u-<Q4E N+أq6~#`TJ LչB}R] J-.٤ӰNj=)O+s?ΎycVn 4CDxH)D1[ymqo+W@LdJOibPCN9(4a0 Ƅ}AbʴIV4X |x!x!k Q&:.y d2c?p~/Z %Bߥs%m,-/q @6yX1mQ[NM"2y1ZXǯcb(DƜ6 @@jŷ6;$oyNpMqvҼ@k9/𤝡Ӽ~;> ]gKu P" 8hbg!c,"5|G=$"Ct~Em-c $[q_&n177k=41:w&E/wȊO"UHkVM kqW.hf ȒгnMh]!k4=\4a+jiߨ{vMm*ӫƢVs-NN3‰syr } mQPO yr-(fG7L~"Į.H[Ykޚ=а4O:EjD_72>>=ce9'Gn2'RkV{eOhDQo+l8[+߆n]y#97 |w>M:ajmj屗٠`>qDMʃ1fߐ,Uw:^[٧'D]{EZhݾf-D7H|!qǀVł#L+ǹ5 S H`;%mI~=f{f"\H w'Fo(܁ԸҠa^ kȊ`1͊W4V݈\LrE, :S/1dޜr2>q+;@6)X]2g+"(M@dbMqIXB2UHh!6zhtM=]BFӘ?.WZcttI5a^ K~aӌ%x8)DU53zZ̶w&Mz$"/Oj|o,\}ve$P K\[\`Fl aP=^xp#R7M :d/+ ~)dj 2=17emprFXz8m ~IM+@ H祐N>WfL $!!C5%iF5('s,aUz6^:7m/ ~\- { 1vSf9=Z4׺_{Eh ~6g\{ F3oG 39iTN?pVf ǂh7sё޴f +ja_%ɪ8:r%wrRp -܄eAdxAQZ|v1WB!GʻDNx^EB=y/ r&;X@" Kx.!7Y=Tƀ$$87߭zcm.T_y~4p=pX?7'+`stBT)͔%UQ:*YF|@[{nȬnF( Gk`V)t#˜`]d,Pэ-E)2M))>57e@@[ 7Amީ; ]tWf![11pp2L^[`xa,mbs0=AISB^JH93blۗv>߆#hMs$)W;kBb0R-f *@ W= 3liL.L^wsַgg 7V%8 (/kewxpV{#ΪNT ,ܘ[s|(P2t}=4~ڏ>{{GN5U+P EWaΤv5 t(X ^*[e:hkzYຑ/J X^RQ֑wwaՍ)yg0BӉV(fڰ3R^}G!YSB@!X S[pmݜ n3RS*U*)xAA$1:(VZXOZ鵩{{lOtNAmٻ; u֫ Ջrx/5E U Ejj)'Ht/店5 E땎+w֓?˖)SU\pɒR}, .r$ѺP\nRF@hנGv zi.&}[eEPx1́hM۝lLeKB;R<,r &3LscfȐ_/NuU4*m;-넱VI: >טDCd?,1GbCڧELNrhg_rx4J\Y^=Ky36pg-~,т{LR3 \ȊFRtG(Hӫ |Ӻ|D@~v):>M[ jQtҐ<&wyɸΧ>ꙹqb=QBbKZj۝$Cm_,Amw#qښjuOV`<{7 7= t)b@Af 3ub;1tǍ1&-8T0Z l1'YM$ܳ#1\6f#}6D?RMXv= -@ķapC=mN Ǵ;ɀ%q"(]x2 S.͙ oh}uswH)a7)Lj,DҖfչqOaNDta ۧLb $7\攏/9}]1-4n:ꗘ\|,b󛶒 _1;t_Ƚ b,[̛6Yx?A^`afroX>ߓ;ma iէAC̺ Q_]b.rRA{nc7l(#k;$5iqs ؿ^LKD ѭ^M\cx  {)? '֑ɔƒD:89.Pi s-C݉UdV<ɤ}ɣ''?Q1vރn,R$Y>A L%Obln}L)~.ɾ乏fe<qym҆LXTW4*_"AZ aتFt$_ǫ͐勽 c8B˟*472fxV Y;qs-=WCz8 |oUӤj :tS"U\k3]op 첅`"ZZmk%X{|5=UhΪؘ(]Xs;#׉/tn`@>PxP"qnDs|_O/E~eĉÌA=7D3 ݞ[HK74NVF}z%%QIRj-?m&kA CznjFvH&b戳k|؍4?L_ JpӑX8/ ˯/%V@je",ԧ1}J;N 2-}S¦ ]wj! $Iμ^yxa33C,eFZEiLopC|*{= aj 'cu.OJ']8 cy໤^L5{/;l+܃ ~F^IWE' Bݼ=H{k¦9"Һ)U`G1 y-Wn`%$ScsEQ\D)0؇Wm&~- !0Y~X3&.mtw.ČqRL5F^k@b2 u}4!.С?[7ݣm֒I#n¬7q ӸebmLR%þ, fWT43 F5NG$@5HXM/Iẁ%?46 53ASP@)rm5@ٶ72ANf %~-(9q4}ߎJÖ=wH3o3q54|:Ϲ+.?(>p{#q)"څ/H_x 0/2fP1&pOi52⑘J췀(`] Bғ?]^+R@ V,Z&xԬ2Ǩճ[s򚐛 MT)@_ejUvѣꪪ^WSKO9q />XG W$c"HcY12qx__ ]܁S8O-oȏG#FH )FGkApwqGL;c|6Cc~[7C [ >(]H܌9pnIѨ$=6+:Hchpo) U,vXC1J1B*@%β}Uo5"aq"Cia\e:+)T~,rna6`ã%^xϳ`>Yr(vfuvE4[ ]or\D8|g51խ6WjhrQr hdDL*N[u*v%?;4>ĊVG Fv/ECH<%f~ 3|@j|%['Q0gE22/Qk~u&J7_'']1{OjT ÕXq3ڔp@95lA~ &ZQyg&T #n? "XPXQrGuG^ T$,1sxe]I_AKJ螔e |kJNV.)]uP9r"SSڧ9dTCZ<}.o޶asv͑VȜٶ|cn C+)z`P74fI#>&27cŭ#ǫC s~kGyW]YgoU7cMX/0A]uJRqX<,vxte1[pnl5H,L,rAVчrLE^R^R1:TԒ(<ثD >M9yD. J}eۨ ma!X:h㫿z@ fSXuV AGW--HkOb}J#cB܊OPsƻL늃=~eV&no/ VqnD‰ Gc{&gY6۷ GH/&^:ޗQHؕL |&^/,F0sʬ?jiV}? 3#k4-`ڧ4.i8>6CXchָ }=wU,TIɠVO䯊>%dvHĈh2E)!sUp}eކ+/rx)slvmRMJuf`QB-W(0dNiբ-`2/" VZB9_!L]pih-dT nrހY D#qP}/Q3_X}=P \,ykF}rΰ_+"as UFEH 1H =@B& K8ܦ^2!˖*?~2>,r{P\+9 =K5슾@>{ڷ11 m )S|Ð$Y 0bQJA%={̥ XV]c԰Z,͞82sW_Bb|~VO7)4H-g:J/H 7m~!,7T MH=l BhPc ""DPI.ѽļ ϥe碊h8ZIjm&;c&Vme>-'QQ1l=M cs=RJ:;<'j =p B-LtMg-F7DҔo"ho}EgؚG-2 >21?Sj[c tC̆`(|pg^~*]Mi\l 9,ӉKW\ =MwceB8ihYAdy=C,1!@LɷG.MjPlwDŽQbJݛz;bJ1l{@cK_%HTncM_v}r::~`rAF"p^Ɨ'ÜiFW%.d+6抰ݕ"m8^@ef$SmEZ ^*!ʴa26<s9ICn,˙KGqip;"u`K#= qBa\i'F{}~+2zX0ChythC'bw`7H^a P=Ƃd:?8+r1+;7N 1TQ QWQ6[PpndQ9F@2@9)^5LiHpr׶BcY1Oݰ6QzwV-#TOޏ@K_%d+#9G*QF5_ݬ#dҊlagXnjoPZYJ{(cwۉ4,^CQlg&'|; 0`Vlp:%r'7h 1YTŀA"CeQב ͏fWդ}3BHdyM}t;r}({D)sw6F.i~)jXx[M@ViO-#l<^gE-AJF ȣƶؔϜFrͯ FR3BN<>1M,=}Տ83ZBJ3&MX,|BJ4٩m ? @"F؏vϒh>m <9JO,8mh,DSE\ID4ҌJTT.̤ˣNZyV41HO5HrpYhѲyFxPO=H5@-M-9Yr u͉vE6rzػFP@ϯH ~ۜ1ШJnrOTGh`,6ccT2Y+wa5hUh-awX DEp.;_{MGY;5eڙ ?)T3E ~F8PfaqH/wFUOCI~:SU29S2OL=ҭ[ѰJo]óy}q>RbTL>2XL[)b 8r"n<Whi(0bl业YDĢ)/yZt%lHQN[,4 uG@W$M5?>A3:|8enF:2#DjK2M/ޥX sCEj?hgؼXŒ\cr?ېl&r/SݪmKWABNΣZcWɿw+ۄPf_ Rh^͎ilPtFԊb$ܫHh8ǩCRgKwO]3ubɅ=Č?)m4ץQ$w@x=DޒɳK!߿/GPT]gh&Gʝ\e1 Ufz4v**2 _#S\ *gޒiʜoqbn}jl3Y)OB%jAR^._s8AoLMjzruSAm*F$M1 ålESL5!׮l|%e묈{1'@>qtYO׻W4Х*{|C%̚w;s#^H%Y&FouLT4ڬG)QL:!7Q)/cX uhkiv|pZ%oO0+bs5xTFJhSh%s_B_5P@<@ϒQh2z&^=4)E{;Js7Eôfp/ e$Fn6IأjWN‡~M8~v~'چp+w9.θ! B8ag)vwɗ'2=܃ob_,?mY>\e,/Q ;j%J{aT-SR7ĚbXZ<6hu~f")V0 ]\l_e.S>iᔷ5%6A:Qi0T/D`w"k%O1IlQT& \߸S `RfX.xk׌Fj:pg%'řJ*PfֺjM!;fPm10aJ0ݸ9zc *ab;cKcB3$Ya]ge1Ëu0nbGW4ʰs1D??t;Kwt@3W b^O,ˋG@+D(Wly.FG3o*>~FۍDEۨ41EJrjZAi&#?e)|:/Y+"颂WNzazYX>I]0RIoƣѥ$E1޼ӗ>зv 1oqeua0 xcq@{^5Y{&w}Ν֭:ƨgpӓ5.By+8U#dqZ.0@;6P{O`IR,|0ޯ.*x7x!Ц-(*wGVsrBjBV\8ƍf*%jh#cTeﱱ%u *T)ސ}H iH-*9NMKCj'?5A|8ݛ!UXF ;2 0}RM(sm+8,({\N 2ޛzc*2_۸ٿ84Y79~#U_t,j/1uK`x#1> c`:#ԽoQ Z cYAˆW*H[޷)lnpdl d 7_VKGTdLPu[fX8[aO>wŰ2aDEi*`x5Td|UUӎnec|F|l:s4K(GSl`k^zՔiz1ҧn tQ`bN}7]ԌUc2Q # Cʟ*s^op2Ƀu 5jDFHأȋ6DC?P f\.#PԟiXv0VkvFʫsJ09˺%$=GAOb#jaA!ʯ dR9^cEAuN7*R0!2l¯C~*v *޾xTeP%>zp|k7]6zax5sУΈ&#[5xJθc!2#YRgoCHÊϟ E;Q컵[n.9'^>n4D lAuބu&D|Z2] 4&iW5 qʖ*VLR3ˬٖ=.!4ͳZuytRݿ'~q,:!-VLm6PAԩGΥr:&7B2:auRIkK*Bq.Rv2ض|@h ;awrF?n%=͋g vw!pX`OO_ Sny_wio JTؑğq.ٓF2׬5mD8r+tu_-!KlBg)o>2:[[@K'r'2{֕Kvd.owq u?̏2UGLU~K)Ժ1bdS!K M4ga_W z.Jz㍽XY\07l.|4u%hZs^PYA3 8hCp]~a2+N.=<?\j@6/Iۈ2W[)\orfgaa"D *d)}'}/S׷m$yXBSX@2H2OF /Ů9M}˯n61OW2 |=t5y9PN =uҘ}4AF=>sbG =ӲK7j;_MyWRz4!AW?) $Jycԩ$LDT hpH"aRu;چ)`a*DbS ۲_&J{vg7qgou3s,}mRǢWQŐP!M܄/00 u~3y|vR\x˂Ux&L%gY5 g2yΎm]{28;IZ8a5)|'kU+`jjmq#YZwԃO1$w Μ17+_>z)L /w;랚q_@B}r;jb OQẇq*=Sz~ooƻg+@b!d/GPW r!6݁dhl@7JmK3y㳭;O^zllG${h~#vf-xp`ۉ))Sj4vT\`vFU7i30 fڛF'OA?>2[[ 4LsLޘD*9mh\H=FaO<0*jTro`ѻfB>*8PNs =uxBy/ibgw& Q2+•mP$Ag,ds":m}W0HA5Fqi洵oNƻqjԿ__od%}4z%7O_r$ww4bf/esuA*XW6h.z7m?A2t2&Ѯm͗\חN"vkꗪQKW>:Լn+7}AұA*vx.m ]PwkǗ;;{@p5ľ"K4. -ؖӅ}jGge0tp#c 63/NX(5!5hMj4Hs :zm?10m+)/y_e`AH,L֤Lk i-WvxZ!T`MIO@LPnkͲX"GAQS4u9 y_9>u9U6vg5ӁLe zIv"4}ӕGc|K>w/k8ꨉXpC͟6n$}T\z~ٽ$;.bbՠQdm rYl+6&Ab Z19JGt TW\ΑW8Cv[ `+ I/*7(9 ,r݃Tߏ$FְWd(RT}G}fQp!*)I_ftZtn9l* @%$K]YD4)~iɁQl!wt$͏W#9ʥMai<tL2U>LbCQi8%8xIj(ށ۳먲EաAo`,1г0+42ꯝ@_NV<>7=[!bjr+g l!/?OaqsAqG&LڲW4(>s(cn|k<i" t$|eG{ <XReCG9jX>T )(nymd鑞uԧP [p:y굶!z?FFI>YTO,] ^д6,h!ņܑK: dWK4QҚ}"]<2M7{`d~84lU3nhXc|F_(WE-Р2,xcBE݃#R/79,˘ʉiU[#ŧTI~?{P5U▨D+~z<p? yţ[~ivC MR<*2VNRs_%O,ZE›!Ho2OY {hû%z%Qu :K(^p{O/|݌SA4t1(r^|gK1sWWGr"Ce\i鼧n)wY玑fQ0&.S QGf #U6'q4 @ lW=I"]2k.ߨѢĘ8XUBC'Bχ̰\>)%%/DB"<4 A>[Cz~,OQ/OSL @,Ͻn:ÞCCL<`'“HMŚm @t;9lưN({;Ůe=+x XE} >.hTI62ݿ6]*L O\@A2[y9%VKq|/K\|r -9Ky˿gΔѡ3P%cksCR:~"4jv6W)}InO$- xc5cl> b絃;OX,ӆ&KDH;,w6z'wj@WGfG\\{Nz}?*oP0zk~Hj._N* ZI@gXT&jꅸ\[]ꊻiaVGջ/}]Xϧ%`j(P 64T4 *4}Cpd=#ɿ<;kSf~bwro士?A~ P))ͨNS»u9VH R):.-TE"t1+dAD9Mѷ=8d;$4-'D%UhVe]R}3uOI3'-g(mխMxv~GӔQ\uWL꭬Ms'Sw 9Uk􆷫j-ɬnU'`l"# 6%kZᚩ0BgZm9wnJȕ/,<nj][F;D4~~J3OI]n(ĨiQy8L Eӄ =2Ǣ^L$4GKM˰Im=oA~,';L+fPZ 1G%ջm>۫GtE$!`s!ghdīZJҷayh_oyY%`Pڤ"tj(i-amɆiȻ RG= |zOxy*P$GWyl); w X9> FS b9!Д&eAʁ!y2YB Ql@RSn¡kk(z{]'z!(JᇦeL0h_3̠ÎQ?7 PB"LZՁK|s/ǥxrܙ omŭ񫦛Z%h8ktpV X܁CǾKRIwݽL^#LE;N/us>y؛m֬|z5 fFnL^)/kz1VO.:_d s'?OShR'W ~pac#}4u7dt'sLl%P疿F=ɬǯ92 T ji1kܭ裻gbݼL`C^'\3(`5O`Aj2a<:5L̔|?y;@˼pLԚOh$`;C6S!=@K@J,i~@i;0D.j}#!\a?(eG@SvZɅLxq4j}5|6v[G>ril7ϟ^)^9Z-]$FBdxoDQIE{f]'ok$ /2b㙂C 8jl=?H v*p`e;t*1 |CuR|.34pXwOR 8~W??%vGZqSqd yǞ<${#R|P1xI>|J y8C:GpYf _G:UtrAs-?a/ gUȪD* 0Jof({tEiԜ~F2`0(qlνFGk/bo k{M{YأO!ApHQD-&_m;9c(iTG}7KE!!EĐ ^ >ZhjFYHan=:cSWϾ&nn3^f r ӳ)8, =V@'E.Mu_jfBby-IY<-NXMҹ!oN)A!Ղ\j0ll aCOڎ_ 3oNu=iIR^ʒ&:dɧ~]8kow5O hccBMǚ*[قPKgu2/z-_e c# ė+M,)#y#QmCDqoPCǪ!{<:"?L̩}Xd*1A@sCU>%#)p%g8Ie$ S[%bI^`ŁT/ؠ_Ae]ȶ΍S{5$ÇyDM% 6LѠ {;PxNEC)%Mw hJϡڪ/2l%$O=@3FUbxSbpᐦ0n pqy{Ė;z^ PWڎs^Y&T\t;x~mVqtpzX w'#=d9pϕxAd_V}P 'Xe74Uն+bm \"ne."+s\v%\z3Y!*t= :OTlix^`D6QH"UdUҊYDjC8kVZ0}qM[Ѻ.U;A6/c>Ǵ0Xˇfwj 'B&C`.Pj.O@VG|]@]A/*Z:a&7O|ʡv> 'Ѣ|Qa`zgnNHӜxkfqE3#U4; Kss1Sx4NDž!inI~~iac\MRPWu-;PxksMl5bx9H`rYo7?sīBHN OcP75VP 3rK%q,C.k7b&YqL9;!d jh};T)`&BuaXaKs" YF⫦%{iEB6˴zK\9{2ϑR<x ,q }z3= 5M I@G0R7 Ú4j_)B`RQ?&uA<J2]{Ftӥ\ ĊSD]$ؓ ."#~:cTM[?E059yᵛ^HMw3p*?K|K 7@Jl]Gԝ[Z'BB|B+mP@XIV JvpEǰRAeF1JCK1ڛ8Cͣg5i tTaRb!kZ 7K(ho9մfb*I*02%l>?G_")g!L~[yjz)oIVz7]WqA266<ŗf *o%-\ C!~à)_5μHһLp!u%c*r콄ФC^{U}%,PyB ךЅmH'v\ѹQO`/KzKc%_Hwf7СнF6.w'8G'ֱ2"O`+xǽ\ڶLk)0xվX"AMZ5TRL_mWlxrHQќ|ެ8RW'\TCA4k W>/oka*N%Z]f ǍhJFH~eF7r~@?W T*^7 Ӡb-mUasqD?L50C y_%uRT@▮I }^;muˉ=Ο˲b:muI6N'tVoתǑ؄D+Zs /TTCJ.(>5ՄS+U'%T)1ANAܕNWpKҖ}p:Q5|w|Pn:Z5;GGǵ\ba(FD7uouӚ4RBT536)C.&^sƵ? ؐ EH.xe i\uO3CC 9vJ%3'(Tny#;eV.Z]5Fvo"xǻBlkTQ>.=a%Ҫb`ƍ2NAr7ΜfI0#*5\*R>LteP P·hHDߓ&n\hbnygGtejD-3:2!z[g•-@MgOvмz͗D;J:dRE PnVލOe_\Q?=:-*֘pF:Hǣp2:Ф0ɶAT j]TOlO)8l5ݳRJR/[skpwHH2[>}ؤҘ0}=z+&X*@pA6l^-q6D(>5 . j\o8\]JU؏{%K寶`UuFfDUx4 r]1FYp]3+Ǿ2W債 Z{O˄+#Y }:)\SЊֻQ3takZ-8沏~,:|BD@Z)^ ~#6F3kAn;35OcN >*W٘OBwT5`Ms\$45e5* Wڟ{EL"Н'@kL 2&͘[Ҥ>tk|ˣ cw}?G7vw[kl |B"YwBCҵme>c..՘,+NԽ{hev C&+/ڂq,Ԫ<I .2TZݸ%b3G!\9:1T/.6 efO1~tCےEq#spF9`'aTGVs>uyOZ`ԷNC۟+GFv+8nЄo.2wj8{xfeX}zWAs2W8l?*RNJl|8{+ewW`ْG?a.Lj ^M’2n|i0Il7~+"0cF_!v/(;f3#<&reBgdC{L"uG9vU)kJ=Y]twt.Nyk{,OZ >' '\ϑDE˜3e*hcu#ս"$QCR=3-FoK2c)"rtZ%$ |Qg~)3Ȼ. EsԅH~ /ȴB_yE~QI anNgm*>`1/=BKc7t8 wP1gO+qOfDm܌:F#(;#KǺcIZfk|aw`f_ұnK{&vCGR>ILL%_XZ @-jޏBM`ƻ&;5Z pDឣ &G+32qwDm/[)xPPfB,Bd 9gQG ;-Q۠SyHFK K}PY^K =M?| -ժ_U$|JM^ >TG/ei>phNkĜ2/]r5e$016H r0s;?,\Z%؞zLG" ,3Aɚd8ދMty>˿m3F5tКܤvf/a>Tp}InwN.@ao4$P3M< bcGڧwr_ b_n(c%y,H/te_:K<$U}?(18ֿ%؆jacnn YADg^_!!)h1j>YcJ;C@fg-4 wS3h9"cOXPc(pBP-'e F˸*ӏ2# uYN*uvOo!AXvyC]S+]ɫcx+(%N/X꘭~y" FG:a-pogHawvCrDQ]kV@#|8X'V)4j'wL 7䐓!Bx<2gp:sLw93^ m\6h8!./kdegPF#pqa,hNinC4YHigP/ȿ`4H6-h+/r|揔<=4yg讎XӸf|Drӣϴ4t"SNP{Iвp[6A q>ć6cRU5UfEbP>{{K%X8R)Ye&nƑuD?RV&s(q[d`hK)y7 YcB={T{(j$Pab(׽IWX\v%*#f> 09A`y sɥb'c7^XK2)GÍ@#QR-6hcDjM'^c==r}&ԓ}ǎ!ÙY `TG̹'iR“T_)UӫZ%yCL<]FWU (:z  \q %c^A5їޏf<{۹kT[ !} OB$+;r_z4&RIuC|&rP%ҥ lW3[ E9[AW2 ]'=T`cM+#z FBPCXL"DC@ zQH`$U?~f*3qRx4vjmp{c5Mip2# P%Ol wmDDg]X.MgMN(]}y'~cS۪WZ}@4b- \1f13+R![.1GQ#V 2%7[Wt1\|˙\p⪺pm9˟]"f=e)[\111'30R FYE! 8\px]&pR}|?N@۠@1H\A"_i~XshÃf8_aw#yXED+ ODyjOn,нu}`P-BZk}ýR6kI2s.7( @C$(c `%ж Ӂ6-FJ_&+q/F真7O;*9;x=ePm/Յ">-UZT '{tL&u=iW6DjQ&87V8T9s UQ0Q,,gM#[:U޴D8% 6ݭl{i$f=Yf[F7@_U#ZJýuGs41he'pfFxvMM%;[}cI )nWCS-z뭲H ~ !l#r 6cz7diZHgz]8i ܁o1-OMsѐZc '!1BDrj,nji:j= L,H }=2>ZWgeO3"XQ(F :ɻڽp.i5 %aB<~UmY]Ʉ|;qjswj%q_[O $' qDq<Vmm ݹGUfh}YLfneI9%Za`ziuu-!)˔2n_pNskj0NqagNu_¶SXtt|FiݰX?Bc5RVJD:VY4ttO*Ht'2" :A5_8PnjvaA^Z/8?YmrHY=C PucWLO:bJߒ}$kK];v BLgmGכЦ |_=K"N bw.: p}t.lPkhnwQlxm`y/]a>f-t1|/W y 5o<=&T)΍rLrM9xy.yrk76km7fe iC=Bs xZUmٻr3fe>_ -7k͋x3GI>(35bs4v>(-jż2BAxYmҁpќ2}`~il;6<_x1CeX~Ŭ4B`ePIů \Mjx.xit}C]+|c]nZH4<~qm*A 4hѨcCIiL5jj^_eaBlRņ)5@ut?'1ي[DY':z)$fjv0|H%4,㶲(*5d,#3t+EfÚ"5Nīwŏ~%sb-0[En]0XV2>۫|$bf+t#jΨ+p'V[c6y?I5et^Rrv0s{l]cЌ8h zdzy5T}W2N-[!m+I$j1dtb޲zF7`}mm_9?zzhs*V8V$gѮ^#cw#(}!m?WU3|]$kKZ=ieW8&Z=0X~sE&5ǿ-J0&uC6Nb,kd%xQ9UOEAL]wc [wxӋq,UN&>b$u6(A54ĠqlҙRwDWsT5 RPwT@˫VlRƤ~PFcb㹽udNӒĒu2o)KOaq7L.mR lI"PW:XSz`{BtX/6tF*Z nkBkID~64U؜*!T9IHtsޫXqe*ʖz9b.&q5J-$h) yy֪{Y]#k Q-*'^j2û[4ϣ\vLo %R-;O;b hNI^^d Rh @3Ҡ; N4],[8̌LˣM1NjT~1׭sc-e0RrPwd.V 9kkpΊbUuLewtUэh?;{S9C`}a\ !i/z9eVbP<`:c~%`%wPV]gW]^kvH Ouj 0G}Q%ظk8v V.qWѥ e{4*߭+xt8O^͂N3N5AO]'#C^@xmSzCMn__K}2N:rO|;,xqlekǪ!hU hGvl*9TM ݤ!'-:fL†6x# 'qIJ<=}ǂUI^) 93o`]@Lxs5T!4gUWL>fK6i . ƋE\{KEs`DxDpN$s=\r;,"O IAMtʹP n{C1FGQBv#BA<1# 9%Xdsdgث+ؾ~g ^*_;ggOV,Ic@^acVΎ-.A\X"0g3֌S.9\"if&A#x'"sOD*8چ~ɷy~M#)ivdd$UP3'2Tv5_ƠIw_l1:REwq?J| 9uZ ]$h+F֙/,Gp@1O2Cv҈CsG^mfYXiq3[r[}KאlmLuqDpeԠR1y$d Ǎ86l=N\8ؔKo3IbM;Cΰ7 : _k_;[iWH8C'\qe9 OjY6)<Ռ`Z(؊ XXWvȸe]YbKγd؊8A?_E*ð cR\*:暪=IjtW_|i )'"l״UwPund@`k mC" gO7ǑMrr8s3/;O~_3(Y[KΤ\de5ŏvDJ4AߨWSIMJgw^N#KZ$,@W;Mqy/Fpricq[K:/ gEΧ]q](ѽW^=̜IFW'2"~I-A]Fe:6U$"ȧ[DnA$Huri i/^T4&Vpkncy~Y0|6N}xzf73,&i:-[P>H-pB #+pn.2KdOXpCeeV|\Ww5ƃM+HǮK68x˭]7=&\{:84%}qđaS˽D4 gB,Hȓߡu>{p,W }P-+_Zé`L!uPJ!ߓ>;={L=@}qUd׶S"g`.TĥjYEH&ٻ[AX|tk}7_ESZK @ ֆ4,dFAd>a|M",5DcVIJiLP gL?ÉPɣ|_u"Su8q] 4< v5Fex>nWTغR |.Pޯ]EΎӓyG1ќ&*4 xMPm{L>1H`!RdTTbu|R b&A|!|>O8CnVS%2_8ߗnfx*!}#1=hҁhR2 PXӵ3ċn5W{Ȗ:Wc֓gIPi|zy"59̽XehIN+ 6\ƎyԽr[i](ᩢǹNN-oiYT R鼅6z˺1s&w`Tŏw0ܜE1-H0w;6VT8YfWpg[0_둻t|G S$qCA$4ǚ1=Z.Cn4H[f8XQ߆യV7S;"-@K%(*?.DԂy3$hO/Zo,*G5f ?!X$My<0ws3^+5t#w"A tފ6m_L^dg-Vz@]7VgaUsj9 )p֏W%I*Lzi V{0D_ vA^QW`$x5\OUHӀPmB?WE<#=P>o0o* 7e:0^_e' =YvzKɉ ۣʣTQ˴Տ mtGZYK.WߠzLLjdD[.fc$/r>yDio# M8>E m#ΘyÆ;dݛ"7k\fٙ9a%g /庲Z86 jGbR)i(aI>`~`DNi!WDm# >*H_nPȥx{@%l~k$/B^ԉ)l(J"|d;e(\^+],5a* `{=wu+O=l )1yWE h#B~<ذo1GqȪ1Zy͙?ISd/`ʁ$2/QEG{VkJpQZXod:`i vs2=KˏO\jB"Blkl=+G,<)IC}LK u|6a!6)|[Eugʗs84c0PXr!wYPq@g]T$_ Q85;FFe6Cq^06jW8lq%r>l"^xH 3"QP\ن6uxex6sm o.Rҡ2#C>[A(B螏],5Akf!a"Q% ΰQ1I/M_?u7tRՐ͕pI>0f-TcZIeMF+yXs Y_ŏ":u៯ai$gswUh a{f|$f!vcèQK剷0t*F`Fy=VŻ+9Dti,bŅcu5DqCpN(g^/(Qtn+{zPhl2Z3| @T']֚곣?;J%zĠS C4Zav ׀Ӻ􁺠!+[+2* !Z;"o#aϭ!j+oϹRHJ~tьTJ!`Tcw9ޢ7)c^[7q h.P-c=rSqr Hg$h9*<29I7Rr(/zXCx┙ClN_yo pv:$4.[3 ;gNA&쇷ӣ`*7({F:2FSd9†" M9݇vXJ|E~,+(D=H K; ,c`/4K<\|JͲ[K'AU/W>NNB^#>ӝA͘轘0H,&B)|cQqÊL}3]2odEkKv6Ts'teeB\@nEH#ҡ&9!j؝闵nG:gi#`^ ݳ@Mع*PٞM?3U9Ht 1f5 'ͳW:5dq>![c,N= TQ^>iĦ!A[[841UeC7qȘ~"DPm瑱M{1I=(`>g *o2Hj[[ fƧd L:~{,L`N>$V(0nnvl>qBk[TmٍҩP_ e5ݱc#ث4 ->l&Ƹ1w'eĚn #y vOa8jgStƒ_%$/ɠ,0.̤?kL4omP{b{q=!PYkp)8\h0 ^Ƈ[]Niv2Fr-8Y߲f!9ʟS7FkW"*,grJ-5,"T~T\Zd5i~(URFE:+ G&!LJ-j d`=vO1d_P(pXkݹIѷ}Ƞcmi-X!W+)GNIËx?LRtYsų[|W8^`Y ;@켍( v!Zer/׎RȴrD\p!Mt ӫ~X;z4C;[]HGW˃'̵8II -FqrTx}a§mFsrʏpWUW7`fl z~BeTg5FK!V%y\q"ɓ9͵ᄉCiĖ$v QgдBۇRyL7ăpέm[D_Ƽp⸳1cVj(q{(|6;_}3O)ncVCIlhEEgOi\[W)ѶҊ$^]& u|d\BS—vS?gJHKB T;d S"\EC@PNy5.k-Q֪ ާT^ӽN%]+q)í 2|FĚ)1 yX{1@JFF*eԭLgg/U{xQZpIHtJ)!#Wݯ&~05?vXgh: Sr15jU>j/W?c) 8ٛ Hlfb5_&.TRsGD{=S7Ld:^+*ϕlC(uQjCARiJ}o(`ePüVħ&͛BoW20L./ K=O5ٯfvfCb@U^YB@rG`2yR"ki茼(LEDZg?5SiQ իWoئg |) $N0=VyUB5u7χ-U( VhUIǦߥֳs"`PSh ]RTtOd-d! fA5n+2'2T:G }W!< ;",8q:LgV\8Rv.K A5UU '- =:e wvsCȚb? ֏K2HȔД|mdv!t9 5Qk޿<3I.|I T'wHс\QǮ։`)86 uy;^x:Sz׊6uSEK8niBv[бDF{O_ƚLB}\Lfq%MA8&,yzKP{a"vf|t%[r1,cK֥Q C=|j6/ At<)C4^)i:xz`;lYgH䡘\)'wHŘz,J2Xm6Hzܘ}!79[xWTI/E^@ߵlV7Ŀ+Ira c#(5}|'ixZmB|ْ1E2e|~$ɂ<F DCBP'8]R,f- :AiW]F&`JQ/=>z.KW/6tkCAGODzu^d,!W~ hBVU"%jL%zTydvct=s]ȡtb V%+=3D}t w;dg|<]֢|fNX"h ^6v L@-a $"=0ua܁+#-Ɖ5> FvF wJh~Ӳ0|Mݖ$ͽ?v{WIXM5ɑ5 @Tٟ= +-121܉,7~{Bw{'U_EXne;ڿ4pc첋a.Ҧ=.э~ygOWG@;@`9f$>KxW68TE\KhhrSJ<km:agfC9a{*'%F50XÎ7ҽ¥}UN=<]7cJP~>xOVrt+xG慛tZ&+_q^ g Q^*zrFy G_9a8>ĚԫM*{cMuݰm UeוbE)tZ .4c5gF*)|M6$FHH:4ȚYbe@ e:uYz\I9!EˀL 4hP-%10AvxX^j_1g_־;M&g1Ǔiln mjCwge5)xO7D5G@T&W N^ןCw{4q$UntV^B*o\Q>p7H jʶ1ʏ Cr>OP*$fKi};nrȏ-4}%.)}H)@ǫ"zB4[29D@5 (Bw}X% 1y7Ւ>|1"yQ]! s ϰQ@־fq&z/ey9$XBMȋʟ91#$  i.skj&uH;ȴtk\ߙ]Qη.6 ^OfLv!J528mIf[xҸ&)žyZ/֨jJ]K}"K\*""нPƛUZnsa7@8@HE2x6+5xyۨFsK)`7zX>qJ඗N :#x1ёq٤2egb#9LSƮ[pkUtVANd +55qI,UD8D1~ \>8,%b?Y(GTFl1*ɢJdˬ9]6\NLsު}!Ljeʫ'kdvrxQzq!{N@n`d#9Sr<7>u=XEm?!o K]ؑ 2jZ ̓oԦ'Y.^Ia:Kgi |Sϧ[E2_x *{(mH(d)تs0?!>,ݚh wLd) f̈$ghUk \ KE-< es47 ܞ2h:8xi$*fXJ<2)U]pfqNv,(N=G5.GRR9Sv#0AE#&TN#$ѫXϰϵ lm`V^ݏ (4\S^s/ /Ik\ՉQjG dG'F3Ym9Gk6=BN(1x,P'VR@*z'ja1m1͗o[[B"?pS\IBf+lTJWn 0ƴWzr0ߋ;=h!#E/<ȏ#INL0hH*uv%;,v&奉^pFFrQըh a48|8l; A٪Q+8Ϙf1=?ܜAh)nwnƅ "u~Ŀ4>͞=9W&+\C0T+--@+Lyɑ3|DJp j*-LS/LZ_$IiY.n]jxVp(;GBBEl$HEO?Z0j sENSVLh}ޙ,|m.%/@B;k)o Jh'BІ@a$( ؇b@I[L+IGwt,Һ7GΩKíh@]bMm*"sG/S`ꤍ0ab̰jI\iM ."R񰝇Mt- crWpln)*1.\ǞJw%!dv!`7MV| E+E+$@;3=L+9:[®_ƶ[}Ga9T))hU, 8N/VUOίVƽ+_U<󑳍[z ǞNSRvQݞ }9T'@tSO}exU)nd.|%?-} } P$=^5GZ0gp)8 )`q@g0@\Zb^L_ߕ t.nb꧃( dǔr#= !JˎN)R$â,j5~s!: _b? _]D'neY N6OJ.{o8ص"]ќZ8} ѝrڒt=R!.^-4Y[]^nm]Ћ@6TEh=96_5ouS. @ z:Q=Y߬&I_k*=9ʆ{; &˒YQL(> B{xnr*#ܾG1aa!Ra䞞W~a& q/imr:RT 6љL_CfnfWRۓ8 k0rz̏]/R=:,BUo\O"@Sf2$~<(+ǠpCKDRRkC9˵ıdx՛\H f7Uz8\w[ >\~9%oua5t"HA0t +(c!To}š3߿N|0X,R 6ۓGܘ 1Q[T{fUZımS MF;KPGΈ4vUpхS3k*tĨ Huqlz]UPn,g⟜;4 #ˢ3-bPmB.JFGPbq 4 s9Ua` Bߌ!s* F&sj =V16I§F?񫺨ՙ&4]HJ îW@Ѝ-m +)Z3>۝#m¾}LH[Jr/ a<)Ż=] B˔y d*4I= +12مɣnņMW\k0G, 1B5|i*[hj10}p#NnFE>͐Sm)&P"(a1Kʰ@U xD]dѧl?_ p '/Y^7IX+7$n8m@N&ԯP3n r9VVV٤.Uی7}7UmB:w>cDO*NMkD*Π,^,AZW (R()'_m150BWք5vZpT7{.uC\B@ cၵ%t}M"VB-5=9C GaUpwUB;]m0L~Ӎ畿a&Ub`cqMnE.ep!'_1UX3 N]38Ps>qjxf鎇$ H@盦tl5 q#+9C+916m[LO؊`n?71z[XQgI EKgnaʂWb lI$2F‘U"֧R5J9z?de|J,]5Fb2k+ߗx7z$Df2o}zFnG%mkCN)\p0܁՟LCzirf6G9"D{dO9)yGǟoSMd~/ JEb<8& +ྠ﮼wKK'M;%)%E,`MI%1#:ϠùyL{arS[þ 9d=Ğ)i$2DTSQ8lпrI)l5G~bƻ;`N~'ZقԿ6ܠ @Pe}mP,2)X^}d ,X+WLӒȓyrOW >TqĕnkSnJNKdk]pro}@?{ 0Mn>+.ΘpLpG.bmt2+20c[ZG$4+UM,wګ>gNjd'NMMXO( Yjd(FڻS Fa\`@(8:|c<Sb`vUTςU&T"2,x%h%V \֓&Д;Kw5&+LS<*>gԂOLtL!V=fzz;Esj(Ϻ ucxEL󗻧3Ty c^[ fϳd@zR` P7 `%\bޥҥ~Rkk!\V$h)i)`Ojyvtc11g2Y0<$ _Ou>̅ʼu \'b邆F'-pw&%&+_ÔWW+~wvi|~10Ndܣsiϝ98d00= NFXwmyZW-z 7lol>fZŒ~R/-q8a}}(zˣ%L(Eu֋\ X #o۪ ұѬnf1STB oEv>)G KovLBxzJAF"3 C *E`tև7lֱEKmyڸ9o!0]q_1O^8ɲVtb2g54cW✟9Յ>X8IUOLlτvtMJZT_[77[TioMCꓺ3ÈBh$&V`H t>9'21K3RG} /\fW@7[g/F KQМ}Uw?]]d=>aQԉI5Xp+^ 0p%zJS4ONz  K JR#5J -Mhf`#[ps }L)/*ԂXuQ+ĹКօ?3I3.|a43ʱ+Qus*=#g ,)*'.K)yϢ}gPvfX"L6d_+䟯RaHN3[e\~F,C\*I(>E#DUsjfN"іF-Dxr|u9ȝ!5J\P:V.j]k_}1a̟'@_ 9ì8,͠ƺ-?9K|=R{ښyNؗ1OX)"*ͥū%F6~-Hg6+ 캌?*cI)HfdX6PS j^=pcE )ti)YBP  52< C H? V|ύ2;t^5曙!qߡK\qRE4~sH 倔bQ#Hֿ@p܍oYy=P5$# qVO6< !I_Rh,:V-$#ފU4Y+RC!FPoycq+PUؐM7if,իٹ|ՊLJ%>32P/G}w6^i~w}u/t(;>u74k":2 (=>Q#a/%]wSgW>TaV*oنb܊xa헵wEۘqYHc`fOL29L.*L ?i,NI:7S~iɾH%"Xu`y}$-7$qoPw"OLL 2;ӦSgw')ΆU>}GELXW;AVDw)"__2!?pҭgf,aR& .֫t`$r L]9ގ@ Fh{9$`8ϝKT=~<fY맃 7Eqm0Q)*f˳ l?@ڌ^a`VDvyKo~g@b (M{wAlv 13ʕ孝 =SI]:3MV :"knݞfH3CZv : fA(}>چzX_sn>>l+Av&>u*ʚ+=uwh?>Mi&-3ķEe"{rLC ݞ=9#69?.)u^=*caoy3- J,k윦rA*@EKְ>|ʃRKͦcf8$:ry"d@ W}lZ:6js&EǢSE{e56pU&>u9? `8Z3@yI_,@5lhM55`zЛ$J6HVpScȐP$\r"I3 ԁ\tQ Bw˚eϪ DJ4讧_^rG. &utDz4|25 EV>dy^|(c**/?E,=2{dԑwD`M@XP׫Qb[S8iC>uц+ఒJoS˻?˗¬A}d>kíԐѠir$,۠y%F 1l|Qw6R)j_M: ͪ+/( $ӛ%C85_;<6 b*fP*ڞgՋ{.{'&f?jqILoͿMJ lͶ累rVG0'sF|0eU*?1_u(0:Bq=dͻ-TNb("WgiS? 'b(B'fljPTYBnЖ13F`^!j X}'M5ш@Qz*9>v4F67HdDBDQ*\{O72O L.x÷~ yb$f5țdG FHQ:J5[V!>1KD*?eA0ƌ R o:=D317ѭmOf`\e[2NkU[%ϙ6X/KkYɋ/~xGCCSE(JlVԌE5\rpOfqCO~F։:Zjs^ްP\ZR (;_P2δ\1TX(vRÔz!:DN>EbQvs}IwKnqfŬqO$*̳!LOh$>qhK'gy6kA%)xLG DLy SE ,nc_vi3yOn|i ʹw JڮcEgxr/#ԡ{60<$X>yy]2'mƹkw@PFYqdwmE%b5EC}wAF4mF1#$:ܷz409j 4蕅3`ǹcpz365GT|WD?5$rNBic2o5Rуq:5<>&U wJjߨur(O y'[N6ztR Bh?blIK-f= HT :Bj_3Y&ČǓ6r`to#y])8WDҋ"eh'ǖªt͵Me1S`<zzw~t ?"tՑklM纭3kJ >x w`q$uSUV;-HK8Bbe5M3o7p;0*МbkhIk>_iWh>7!rUfuXn|R m5ؕ44Tϫ fX䴝">M8 K1x+e0Ң|1XwJUt<@vey6‘ٳ}=jL!*2lUf MϞ¦%[yU ~c-.Tt b|rEAN~а* 䯅Ѧ$*0C@@[ߑA^g;zOrC -Bص!0HJNx^ťQ |r;5cǛI>:-M4ÅOɓΑ y3*3.İj"^@Q3Fb># Z9EQ:֗t\/:g"jN篾K?ˀ" RRߧyvFӡ޿Vuſa%Vf4dcIj6 k˅S~|Ah k#weQ/o[2h;s$2#jKZfttaD?NbăS)8{qurݐ,SZ*( \8Sٖd;J߈; ~䅜dDJ Ε#o[}#@}'Frw"'_2m<%: NxY(ŝi0]ۓ9M/OY 19{3fH$7L\1h+*.nluB |=VF: Cí̶m+tf4։BH4 GBeJ p Q*'N&K٭ek$0[UrzkKk^ љ7/2/N20Z+ZW!CUz!t \wgQDWJ'{u9RP^#$`wG\Ɏ0^$H>ir 1rr}dc] Ix~iu> w2ǹ ߏArj²ã_O䔩7lpiU(YmjQiXؗw&_` No*m\9/ŤF*Re`g5nÂrga />QGy5☷k)*󓳾L)`>Ce˺}chYG;1J^]{ԧ%bM]|3 ?o}0U~nЎ8f7"L/x}ؔPqeQF!40v7ﱊy3M::׼bN}-Yfh[ Fc""[q9=+~ب1UV-&z ݧYRNҳ4`6_qArRs0kɋd=xD0SnLIGwW=J328R>X݆E~Qm p^zoV`\ @u&-MmbN0NcBװ!DW߈\xijBpiҵ^2esr_}YdBA BASi%d@$͎װ^X+p'I FE-(PO#),](jzT(кy ޖ˚ ~Z7jT F<|!V+u ;KW'AQv6"Knl ʍ|mKɽ J|6ϛt,9%W)=?>.!+fg@r!cKR-Z$XܷjUAR{>zkD(G148E%wb?)]]D{h@X,z{}W Y/KD@B2k!ɬ5;桌(B}%}۰3 z}iZZuH I A r*%=/n0&XM[gUuҙd$4yMQ帯|tH^f(!mf`p}GSjxC'0KfP j8G.qւ%3Ip4t&eqo{cOz*^w*h&q{2u1Yt ;z~m2&nR{\ɛ)ZZsaL}ېy*'/7cp= ^uU>~F|"OtRB՝4U?T}X=aϸAu+%425yzО\۩%j/p-5B= uZ\ tee!QR |0iM/N}Ǟ&ٽ"Aė:pkTx%./țC=Xgc'֍^7,wA/)&Ik $Trq1s]kK8= .)Jm#UsDAJf^-;$|j fj;rs398`rJ|lBX.ϕ kތ>v ]p"ϗvuݐkĿrfcH1 1 =b/GNg*soMw:R㌝ftoĒu΍"l۰5:$ϕ+.Dؙ V SV߱ߵvQ >ێ]dXō2/hޭ&F+&P_ > j 7m^S#׳a43'Q!s4(^tKSTquEV*ypZ(Y@y~jy!FT*avC#7}sжwfyZ}2ǒ|.!遲wŎ&Ϯ8-%p \TR^!3+~.v5YEOT%DX\b8+kl*ɰ>մe#*A7?zk,s)—h"K|A "sɐ9;o&TAF /Ǵ^dZKNz ԋxɢV TZ ^Lc:,~Fw'!&{ݭew/0ۯÁk)Ytl8AO[|w8eUy{N h&q߲J+ Yb.-hr; ɷgOCKfvӻVk}$YfDy7/ͺi:l4ن|[0m#W9rb6A4Q_Y{31oB}舶,*1 (a n>jJEB!Ъ3Vα;md7f7yXRS^rߨ;Q:*d5l!8~G)y"VC=”P_5vq}9N~yʎץPWQ"^eޢ$ZSbԜEyY&̤4x|ʎqۺo4]+ ]oq1"U3o!( xr8ל-{bP[zts )4e?LWu ~-"lY5|A zО[ XoQB$?Go.M]9>3zrv |h^Ly/"p 9_^ 56RWGjnN%80q6-@ -'~y",\N2;VxiCD؏H$Ԑɒ=3FB缹ըyI u%U fY:;yF>wwaAer %) <[R8H=\|N7%yAe1wNٯ`>G]h5&5">g&],࿐VO6e<$J5ىqJn'^s ^E 7Oy8g+hYA8f2{sm`޵ >6Y942ͮ~T"TTn ܨ*bvj8[r{z~M^x~|-H]jҰ?V۸fˑMd22mGR$g9^ S )&av<]S?iA8>]~Ɵ࠻tFg;Mijy5/VjM?GyǁzW8mɘ؉'fg 1 fwG_:]Qai%dT&pʋ*1?X)6YݸMG~&K<9sq*dp hPz +Dݥr.alY"SBfx'ݱA h~+#/|/L׶G;JJlC$P1\nB|>k2=s@G9Ɓ 8դ.V} R&e?RMW0ǜ_Ӻ=O_ˋ-lGKl\i{O=Pp)[ א8%@-S*67RKCF}:UյݫBcHFUu|Y nkS'Mu88QOV ]'Uep{?S!YQ_ .R JuVZ>.7ٺ|7MXZ^`[yCn0HIQ sUּI{ho8 ~Kyf!++^]CIYoK`cŃM$ 'z>ҡ&|{ߦ9t6M ou L9АE"wùya=)R,{D̞Ӏq~~\dBf+iW`|3h;vQ{E ;zm4nYOFS||R^qoc2I$$l ڴ}9b'G˅BON~ҕŦXI.PtF>FNid;-ZڨIGTNR:*L!oM+kC Ol_^?EX̥*L^KN6x{s,!j<47β,Ea[)uu4i_yZ޼F5X<jDC_]h{{AIQ[(Pǝhِ3$۸_X 1M>,3\tqD?ɚ: Ii=Pc8|萆έ,iǬ8] w k70{?g /L1 W,9KƂ!n861<@|.xX mH/+k}eܶO4y'~ Q)fFK!&5z9JEX.k\HSBuH~M g ܕP9 ;K+NM;;9wt|壟A D52pV̡% X+F-oqzI _2ca B">T{JnZ[X}3-sir_ErUe9|lL(*r5̯:43egC$R#[/o`-؈LZa6ڔm#`ԥu`)$ь[-p4-te@F#a\Y-psK$.lV2qbjWjt7~_Px[hy]c)ZVa*~%ۡjU;k.-XV[I/%iqfuz8@]&2.,jfry͊~gO mwFzsq:ڪS}F+SkɠYA_ReU.$Jgf~ reΏ@'pڷԪ;Ʒi|NUeQCR"90hDHGP89E_Z#kXч IF {CcZ(mU#7MazY&ŨJۘ5ꡎB/1kxe+sӗmh0;'qe1$2ieE`j;ZM|AgbxSvVKښeL9lҪԯ0%̯bqZ_sptirURWӧhEmQ}e\( n$v݋ؑ|VF/,dYIcni#@YФP 1*KGGÖP@bKM쩺3_r3[Tz)5ZBX C u#Ipꆘ}iX|wkLXMbۇX* %Phfv?X҄[fKJ"bfdP;iءn1VdxɮЈۚ!StRsΫDUJ: 0GG Q@VvI a)kYG_6(#R&b%SA4y[p3D8c&◓֘"((dK u=TMwA^~`Iu;U:<HG|b-6H+z9Ϳܭ5n#WJiC4oud5MokD!KN{/=BݞjHcR8B}h>H2G =@?hr\cXF0}yj4\d5A6aQ;XPV.rBmxPN3]͠PoS҂ gҷ~;F xQ~|BF튃yMܭ퇸7_BQH:G$h>v} V5ڊ1A"u|%cTL9 l&Уc`siyC ,ߴs&MR:Ͽ0(9j{! @IތgXOl_5b`ωPCN˖LrHTam1Iqiwq*_ΚZ:O,c?a\7ͮ"YڒkS)MVEA-ls(EepQ㱙0\(9e,XT_4\z k+)s= ;.ߧ`y.>^{z&@E`f]|cv* 1v+Qk@vm9z qlbZ1#Wr |btDT"QpRr: eAYg-c:cMwƋ\ jQI̲@Ćn7* $dEvYh>ȳE,l:=RVjhVMH?y g"}ք?(a~DĜCtVb1!^*ul[ܕ'G}"32֫cHgBւkқwCJfrL H P5(":9t!h#j&r vŸ@otd-s&,rQG6Fy+`YWϚڂSQͣbo6Nhs=6.db_,1SڿrPs\m]O`e/##ui:3dfMʪg}6!3״O уZAxj (ő`zth|My^Jxm>tv%A' I@<I׶K=hZ5T .HOfc-d1#Jܿ<͓×KInvCs0_D%t` CD?QV@ď>H#(J9u@#!GZ/TB4QotZ $r P^_E6L((_5`q? u#35SVE24IiJJXxq.* w MjU$kEfko4IDX 8"{#)x-36C !Gh'D_qpPvpspjt/4JYhF~xQ+vnϳ)>e*Fef<*ԙ}%;-'4 l$9 B5!_:J:4vjo>ҋ?BۤiUA)˞{<^$|4 @9g"A0BwQrw[eÖINtr.sċ L$Kƒm:hfxtj/[J/ b>9||L-*: KSEN: ֺBV9|9̞cr-,QE<{J& "wB!*t|آmbA^djGJk_Lkj)g6$`":@ ?R֣CDAu,;BCj] ?Hsx*HoV K'z[Q:/l')bEl:Sk~_|~`ĖAȻrλq;">!}_PV#q<`zj38?U#WoI8zqNccY@.%c;g)qd_~s]wbD$M"҈9֑YCķQ\7'z9J#8E ze6 OCiz9K46OF-4w-^w, fTM;v6${ϳ.'gso:=8eB1=Py:m`QIDA^5hO Jc6911V'OBo}|: 4QdDb1b2 )MEhkŵą}[&w;|a}_lwc.$v! b/L$5eNE+ .6H*39A+- FNdN'9S0?>w f ihiGGd nYɵbWÎA_ 6wI:Xv=)qV18N|a%&͔8ŧZ+%o@?Q[VS0X{QQr6%˩XSv# $ .Z}w4}0[6: ~ik!an&|{~ExiEc=}ku&a-k z4pN+b0L&XJ kbES/ 6xFTTyi;*ɿƘpBHրz$}?&< K^=  QWb-x'9#qOkBԳG͉ SOw={J ~15^4%ԭqon(u ;S؃njI?-P ^ɚ{l#B)&pwNM^ ,nkϵ79ͮnV˽w]`= Ym~i-2A hg5P)M ~xkDBp^7D6R{E~EսKhOc͵ -(!ډ۪ ^x&[9(d:V!ыRq(`vbpŒ63>w!J'Mm ɍ2cp ':n_+"b[/ ;rr ܾp vXzGs ~z ׯ% X61w]Z? _V&I=yތp\A ~^:-䓬^`,s7k!: CF6LK:2rzQ\tޓ&= (]D"`am:=t0g.1kV_8ȉnc^ái\\GqWֿ(޵wYD"\: t 3姎C灱(402w,=_7q/duPLCSǤSqcuDh}2EQn.nc/N+8/pW}|`jv^ =32d5Y5n0m ۆ>G&,HlY\LE0pZ 4Ͼ&KX P if -?/|2)-*uMD@-o/@S'(xl^! e 2 G!RD* JמrX/`7MWtEsz,nK8'J80=3*ўO~Sc Ipelcк$Jkuwfh`wn1uVync [8ULS]tjm[bi2;$\K;wk`dp.kݲk7{:x$>P2oֆz{衖nBY nL8}uFl銽~PC$K`SkQ" |75P]>i̔H;qЙрXi(wC~^wTD#3r`ܦP[NBM0e, \H``}| .O"GZ8Lb C,=!;j(nQȭԔ a&5-aidnW/X{V59ȴv//1 nNDO 3ndTޅecb+ ~dlTJBcz7(8F", /IΓ\U5RT",jP ^yLDERDFɷEC$;WS?\v:3 B MMM'6Qv H$-|)@)8!_?P3Fz;m@L!6R ϴ|-+e#ĥW<^ ~kFnznj!qT(>n%5 %Fؕ<}CFe[>$Όx.Xr'znl瞪 K#&J!;OrS(~Mu)L8[8X-D#9Em9R TpCjhBFnk&JBS͊FO8UK5œ&)!/7*()=2ޠl@.Mpƙ\VrS"4&[;y$FzҦ&y.-ب0G\aւ3o׿g9FY#ɺ@9GAs8;=@qssUkxUӶݔP"=6o\^0e$)V ZLQHĒ(!0B9;F{lkޑKsLBkۘIbTE^ tKt񲒛쳥sűϷaE9Fg㾒a,}0] 2Z%vj\TkRʇI®._aҽռQ"A12*W'0"gYǤ vd"l\HVuFF~Q+cYS ='lZ" b9BpU5-\HqxV}B=uOPF}F_O`LfwJvv.e ĉQJ%(:P8(s]dkgIxnx1XRTb;`dD|qkt*&Pdrt3Y1@+Wv{:\Z; 6y ^SNK4$&{bu9S+ P>R]< XC3b1jk%^Rzٚ7s=UJީEAyv&#)`a1 PG03 .vGXG#te+4 s{tj{v'Z`NJgP] 4rz68\`F)n xr LDمUܵMY:^nGn)D$Ut-UMBkċr=$u蛯L4]Hкq΋}Q%$EĬ0z i!c[|uwqIPn9J X)ԺFq7יbE`>I@ Qeϊ^4l9P,ʁ#-gf^O"O~zԀ>b譃uoRIJŇB^fWsZBbF|+ZD1:3 t6289N鵺)@މj%H NܝQ0rnEO=w^J7`G!eZ.͈:l;]EF-!GwQ#ƊL&VZCY8#ry]nr0j;Y~k9)1OF\N^"u n.ʮ6.lP*&%MT30'#Ӌ(Ju}vŷ)'%d{|S%[/rt吉"oxW(9I!BM _ڌi{TN~Y}6Y8S(s"fk ߬AX [\Qx 8}! 9y/)\.co=ʖ`TW!+Ee]qog143c-4.ɬĥn[C ׿pRV.̞zc!bCdQ:$apea k !2f_mN+y< qi%k2t*ߖZB%Gid1$>+ dkk8][F '8("WIzۘӟNϮ&EB "C ^9ғۘ/|ރao8>E "Ñ |ߩ.(Z1QuB3OB 53g9EFCOyџv;Z76Ƿ/h0UT-~3" ;2wo&dI>Gϼ!}5T:& #F"6. ]I4(;NnZHׅ;KK֕Ծwnʔ":/1.p;$.c=tO&3MX [&=yP! |;Mh9N{z&t@a oP4wP}!ӧPаB>( N`)rgBҎSv*[ɾGഡ\ji쑜+3Zp"ְ"{+ {a n2!k`1Ǎ: jqS7nTLʕ?k/ 0g*6DcD8Ҵ(SWO,μWA{R8:)I']|3Fȩv+w>ss ·* 3]6nA*ױDR U \sZ JQ1M %i):< a}Gr|*sw,Ӎ#{< l W!  Bզ`i8Or'#o78Ѥ`)vc ,A=%@+]}o,MXIos" HSһy\EӐX7`E~O%X'B@8jkx!5#_4TԸOJB-J)IIu)+<\Szu}KkeW vWѷ"6iu[اQH')UNy.u [y L>8lkb+2l+($i>A`[}J$s!Uk.bCcA̕ה }xoX3:za^t(X}nHjЯ1Е^Uo:R7E]UBvuB;;ӓq;PR”ܶ ޒeaNqDu2 CdQz,CUBLJlJݹz0~}^8=.q۷L%`c #fO'` H@c(E ,iNB傏tni8NNcx?E\LwA-Hd ա_RPڪǻj#&c8Eܐ%WiOa --.I;H2k;NG~\4eIc#ntuC}E,!FAZfڣ߰*K..Qq$:i1zCdӔZ-D }i3ߝ/Cמ] 7곳$qxU8@VHgjwΎAO^1V5$ >2^^9jSZV!?/v_- *eHvH=shd*.g\kHHY}HJ;lcChأaO#^ԥ&8T`&=&89[M_fsatK-$f }R4e&}o#,ңXP},pSnU&RtG"'uMG#u5D-FA` f}21]Pܰl[%kNHFw,Y1m?"nަ IV,ݬQ|<; XM-XV4=֍s%# LL H(â~X Qpk)S[R$fΈ/8ުRKLk_܏ :'i[O?}~1쓷I>OHc8%`%Eddײ`3VmGykvQIt3Q2)l!e/XƚOTYVDϽ]7|_6(jd%YdpLVJ??rX/IZBe{(Wh.aI2Ž|g\: څY-^-Xn1!{8g)c[j$UūOxB,5Ls(@a,2zSiOAaˣnjքĭ+`9/jxMSaMN s :zum-3yl٫sPPJ44 ,tgruM¹Vwd,8Ďr ?r[|$R6>'} 1> V [/Ve4K1Sb%b?5/?{bNV[7Ox*)+qݎrۀi釮{CĄV 5f>FizA~K| {09p{QV}7@@b-qרG?ga)(Z"9S`&Er72U"VM "`?N;2<:iޖAjBa,ogԢJk_R-ˆZh|_<#]qᢊT3.^v୶mIGf;2D#GhR#ӗ0oB`c=0w&cFM<7nW_T y=[[ <l*BP}Ϣ\qB@@rA3^i+Q,p''%4!/O sF"nPI7b0 ͙2YnwOƪX+_3-xϬsAy@_$ArDQO{5ω^OhV| Ξm )HqF_o9Q@t9= -Q9gPܶPM4ȑlV&wTkijuzջJXO{fF?ܓVՊ,a_ $F}K,9L љ+@+bC ,(I-w.W&?]L]- $hww*ZP©48u}䮣X1 &'y-[Ү&޻3ywRueL쐭#^#qCuTm0F&jkEmJ6UOg)+&:™V_C1,xu䩭U"RYU&V,>l(X6 .4ˎ,AqKXa~EZ0 5lT.,vQ5KntVW )ƟH8-ȯI fa0+1&':{ļ`N7:auA&dB`tx S cLtAO&E/ "}!fp6 X~V <6yNm Gd3/{5k VDW#[0,Vi;C9? 94`[7ncB KTYu? U[mK:$zbt ah,T=&q?ULNLd=@"F1p&+w<3!{Nq1M|-E"jH,HNy~j{i=2(! yj$_Ԉ"Of`_`Yg&sIȂS腳wJo's5]0F-BNCi8F]rnvJl{,Sҧp)JCW7 i`gxɮ*; _Yynt?/2x@C`.ؼdLj?c q h"@ OlP;y:AX: M߅tP$6gW~7j%>>Р05{"Ȃ5@Q0x._H"E.[vSW  dLXvglU[;yp_O UZ 5ߖQiap;a卒7V@iJS r鉑6>1جN+d Q]U;u 3Q0AnެaB(\ LӃoکL#i.=Ѳ/n@$(mE6Q]._|t[AE|-9$-jSC$>ۼ~p}dJ_jws,4G7Z6 δUm fDALadLF21kzV&S_XD;@0RL,U*."EWyaW\; 56N|X֠3y\*'Q'V]=V(dE 5 gPO,Y  B캭6J-W&Mfk{O]>,FJoXT*r%_,ž Vc|qa6@2U![zbRHȮKt>@Aj+qzTE tRXӢKtx!BqmT_)2"Udƶ;Фli*γiWj$Xat ʪyz }Q8dnhیRa/@$s1W.穿B2hg@W̲=>nPQz\tRHrSK㮌XNLB㩡vx <:7vyv$ SVPKo~~h5>hU{6, VX NmT˙CXTuڰf#F/a<'##}TG.{O~[ Sۦz;%g`jF pcHj߼q!ַM9ux$ܪYx\W5*WWrs8Cu/y;˗>Ӆ$h,B ˿W9\O.\*4;%ؤ~Hrh[G''=.:|#RGjdL(tXrom~>L4:S,¤|<"ZT(b;jLy"(qMű[ ],A|m;v]Ẁ(<H;-_l/g3O9׋$U(uB>p?6' kX)uOի 1yG! } 0 T,<+p#z i=Dl&4SwL?)皾W ;!\WR ] 4*'AxM ۗsل\L3ٙK%MrT Iʶk# =ټԋ$K4 co孇zCp&-/AJ (JHue>@6[^s[^r*iP| }JLjӘΣ =T7 | ?𘗽j #JkFp771kF'I8%Oy"YߚaY#:Ms9t)pjSo UrbwŋЎb Ov5廹.PҌ+g!SӾFl,vw$w{ (H*:kls,^9}ߙHoI$-"(_JEÂt֚jt(m˹b9 u[pcZgbgN6ZKНF3Ob^[>)Q$+X8eulԦhqpL|s. 0{&OKB-/'lMưR&c^ >bҫ'9Qk/#J6ְݽQͮ_dkKb(l%('y$\h;,`j깠LSB3Ԩ9 Of95$B2"CnݮNTb:)0BjR*>[t[ rFU(5% j31ǫ]+bM,%rG a`o]1%׫I y3Y:6Be'961_eU s'u1}ZCWu#&|N:f&/3YKRjҥ~rN%QG (ٮ i6z%:R BKh4ccjϼR'k@DЪO"ևr~,ݷtur @h@OZ%[{=WWxcwkD-yeaJH$C{b>}E6gH`iB~uaxm-(Jnk[5W߫sMJ$Dݚܸn谶 X+*|4ϗY|,UWsɮ]?gx `ľ/>Hmg ބnٝN?,E^/H7`ܬӼTm.; zfB)\t"%$@3 k&iSoKCtJɺ }/Busc*'v4Mòal$Ѧw°ږ2/ߢq7'ÄϺej6 IuZa W{h%^$ӣو?w9z>sJ9|mHQbzyըRy0qj;olWql3RQ}ܜ5**K@絒I.@jpOᕣnV$pD߹^F##%U.TШD,,抯tx/OʻZG,Gx-v#3WK#ts/͏6a5OJ׈8F(E~6\e\hבB+*4ݳ A.Ex7' 08zD=qc\G,٠4HhrzCRŇpL -ngpY6לZ-?S*6> @| ac1(64Av> "Xxn ^]v/VPKMڑmF}X L ALBVבB[s#_tlH{?>\E;޳82(S )mc֞n=/Th˭{)jf^>E_l)ѽ[ "i/VP£Dy("Ti-fĺ*kyd$Du8 G>*JuwjPj^")7"^ ܂æ~]šF;֚'$Z¾ratQm<4n/ԛ&SH5޸p|l KAAH13DPJh' t2l;]}Ur6~J&~pN@i2cI4 +'}4&xInR4 3 I4z[(5^/J?X WD(dJERb(N; _uKQd€N"߃cQ;ԝ#~ ꁂc%*8_&^ XLr%#^踠: %Fx~{ЋZn} b zlŦ2WgcĔL9";n8։]Qt&?: `6U5K ȉ.Wi]i4v̙- k#{Mn;DŽ<)N+ZccKo;JBURⰦH3-4*Z–t_6QyR}Ok>^ge '_E S%z9m#qK;/|&2¤( G]O"u7dY4ƶa~7Hн(b 㓅I?QQ *KvEy?Q!H l|P9FK);ZX?c;>SPHp(\;_$Y<1Ҙ|ggaQwDf\`TZzD8`NSwTeQ-ղcZz+.'C-nv=BÚS% [)L1-,ZR)a˃1I,/f+$@JlO $6ܨغ-0e7!Mvl%R(I!Qިz Pv^Rb6cJ 7H/WA>CwyۤeO_k̨.o<\Om"v̿uj?Y_#p܈n4 [\$'b [b߼0a`Q¸|'l\'hT -!W|>X?!ec"<5VhM:#NafZya0:jf ҅L˒dyJ]\d}x2x:GԩHFhY}{X %N>(B:+h'ß0&;b ٟo~˕@>ٲS4یS>bIq:':5ysJf1#N'aQN N+@;*h97{vJ)Ļ6Dnɡs40z?E0#q%;N8snn>-jwwL7Î2kF˸KఛS8_ B^58yͧ܆XiWm(L{Д[=VkaZW÷}I&.:π!J!o-Mhb+3J\TgZ,hx|%\y\VSRtQ[H+dFk^{Xڌvk2y?bAFcx|.4 UE|.:K?h^=P3VuAE,뜖i`Do[Aᯜ,uV#KuyRF4I~/F.EkS]%z "\'b@nIͦ*lF/3d7Оjw.,Ped1(&6ΟlI(TJ%6xS㝱WyÒTH쑇z{ ORG87.[a(!mrVf~X6,0q!?SӒ'0PlSxOh~ȳwl/rK*HtEJܧěU}<6b=1: B0z/c!ղAݜ;.pg3{1`K[Qk{t)oCӤb)Ax*:60 8\vwE\о =wIG;J(sD Oǧ7TVJI:bGfij?/폿m5H h]$ER8ŲʄBgz@OqeGB7PNIa{Ux&!Fع!3&Gf*lPE.1_9|b?񑓡UP89?& 6^ܒExJDBD8aaŠE؈?0CV+ .h4߫}FWPN|xWKVf݀G}6>Y&elpVUþyVB̓Ħ7{ mJhl_`0Q}¯{Ԙ57B(;o]Mexo8Պ&Ld-b|N)ë/za[?bo,T8Wb- ^V)cUrwwY2jx9ń$F R#@I-R |#s\[) .M8;UYf.&pOY&YŗBgFJ} m2}{ E ',S/Y,WA+f\NpDv(%!qC9q0W>D;Bw If TǨ01խP?sc2OC%XJ>銍ǐLӸM^']O|1eуMSI4ʩ2xؓd;,v 䏵luI]&~նL/M?J#J&%:*w=[xXYG I42?,6nx*9|(9Zם +=h]']58bIPaqp3Bzݹ7Od75qM%a,1pJ󞌎ʗ_+8 J1 u#eB@7& 5ԏѩ?hF745S0@}6׍QF I6O(7yly2m2ktKq_` z0H1B=)]R+? мRx9/- /{J;g"m|axj6A.\ZFNA2yMu'J~k(sjЫf^6u 2ӷAis4+TqpTa38 :l>X?e:7 s,_V)d6ef0bRrC8$c T4_?%Ӂ_J~ 4`&RȈzZ&69 Dp;+5N0/VfezEGe4tgMJP \79 Ԫ_oagFS5'C{+*_c/ 0ޟ L- Bn/ʚ9 /7 XOF۬B.qgH<Nc47,a)NX.4~˷"q;7ۉCrMl]7+ ΄ 6qFo~V|Jq$ /~PgiUUDHQi}:]nJv!KNeR (Ej^+94H:)D3TU_f ss43!;\h-ź.,"!d>ifFh!+nG>7|F`Pd8\[8w;>7mHP>m!,!atyWSjQ Ƕ?)kLw7ߌ%:ܘ Jn AtgWquK_-ʊU'߶;KգM_jł RK[:ovin*v5(օ$g=GVM` 2H4QP*Ft أa-> 'Kc?^/ښtX[f݂ќ&'AU%e>mdJ4\RH4,v7jLr%t  ٿ=͇*Iض䕢5Ņ_{nѺϫ  Xm\KgMEZAVFWn®G180 R a%ЪN?LuL6c8e1I:I"`Ώup#4޵ϢB[)H7Wg<Q6qFqΪ1.Q`.ylkLIyї`asPϜG*X#fG'NC¾ҙuuRKx SQ)?#@:B3_nSgס/{R730D+yRj{_5@]/_\V46}v/NWٷ㴃g+i=8MN`TZBޯ0Z#xk*725Ӹh~DC/5st(bklqπY77-jEA] nfkV0W/\M-N{]!k!飁Q tQN&W6G,]Ω! &WXO-jUuO ltxٓqg}`~nh4w]vS pg ǏlhD*>%{0p4h m#IiorrբBu⌞kL5BiR+ vm9ytyg{x`@W5OXeSʃR㏲9T3LM,i˹.ݞu~$Se:A|x-C owqCl5J:woAu>4 W+#:꾢 JZ8WU%}b_X΢vr{I) X`eB"Igv3b*TSgR zN{<`vNb ǩF,hCS1] oJCQT=춹=H\34 _!8h9m3Zlog>oԹ; j#> P_yc`6mg:X SJe'{.okĦ/c30}N%sy@$O+ޅ'4`_|(LJ [:xUb~Ba VDhL+6n3Hs-M#ډ0'᳡{WOn QMt5v"#túc{p1Ě2큚|aq.}ƍ FǤRFVFſ?Y κMؾd^5NN~?auHXܓf䆿B<$X;(Ŷ}a3D %NLZ8pہ 0L6M7֠z&$W+.-|bÄipP]Uy$@aB7 /6-z3g9 ͡];U ;q tJ+CJ`型ᜊء#É2k3 Rl=|^bCҡ}Ͳƚ?/XAj59cU,Ĕǔw|<8/Q S3]]i~3@%$KZ"1i(\;@K1?`ht޴4{)؀R8rva11tq"OxՅT6)=Nf~`Z!>I~D7{N^9*]e&ԉ]$U( ."Z֦ǫ{p~';,F;j/u|#mb)!FaR\0'$-jVHzM"+Zm"J? Xc׮Z0,϶wJeH mql)76]P T6x.SW;08ι /i=:~TC஁xa)g{r".<+\I~f4ىI<ױ=+}_ ]aWZ8U|"-Ut迸&2dŢ}\,+X'$𖩺+?<#ep֐Wq$+39AyK}v3 WtXVYRw^ ղ;o2}ꑗ~@Cai<~[,+pkBy"4Moed ςq9?ʡR*KkRR  sּ`Ps+ܦ97wτGaew g"uI1)F]H;rPs9q/@9\@4M*G6->6+ԄR1u1]gK9w,Ԁt}ptzfT諟 *'dMu_hKb)5SA3!To\iD_q$-I@_ EbՃ) YMĘh$&d7VX-9CRt3ʒOw `| >g-0PN~jRia9? gI'韄R:4ٹjh"}, OB-\~wI7{tѽ [{deW;[e!nrL.zsFioJ`Y,Z?s; ؖ/0(1=^E{Dɾz @n*'b}E&(]d7j{["yv]p$x4 SIV1G1=mPU a}>O%ө[lpE<#e"Ih .VVJKH2Gv>Hűj\YCF`,/ʔ]I .v#.#b~2HPUA-w/R#VƤ opzӏj5eLj{QNq8wQy2%3Z"]uy\bqMJ/-m"'F7ye3i?ֵMI)>cKhY~`=Z4 edP *0Zb)Y9#vOs`\1j:FOwhYHZ%%p9.J*)7xf "`ۤ05a(f%EO0;Q( bM0L h d-sG ޓNLR Dl%F{<C_ɬT? f| #"A*o@0UyY|Yaww، ~X؃tc9U1|Jߞ9(\"WgCAZQq "G;#+3_O٦KA,)60q=_>vDb#sZDq}mPǶ.e=WkC0I 6;,o:>͆[׾^#ozy~bZ{~=B>Q32yխ6W\:CiyK!VR1Se&hkծl23 }Fut_i|.4)wxďB%A@{k*=rV!f2ݡY{|wei-V7}vN߳p =]i2AT[gEY8tp?O<.6,%gHwe=3W{cZ\n!@o.7aiO4,1järVevD1Tϡ ;<0t@_սxT@`W!I}i 1Ǩb<?ь xv%Dpa!>d+-f/sk\1 Xηgyj)9C(7SHzТj6TCf*͹*ZwQ>/PʅW]4Q0)ڵt =c{%\uI%Eq3u,yǶ~DhQ6J[K"Sd A *,Ux}YݥĈ d9P>4-XD7$WIK6d9-J4Xf m8p#HKT$a¤ؽ|$%WK-)p2Na6w1 .m]ġDJuog#.G C5'A'o6v~'(EImole&b/Oٔ>:p5:Fe.c$a.f1[ga\(@=V;+Xp"jvI-3haP!T4Y6uv;^9&,l;vֳO+ʯ(" MF>\y' eF( nD@Ϧ4lTqk)L i4G*JHG2ѯh8Up1O118\2kKGC#D/G1#)Uӡq 04"m<"{VS(YeJ0sEF][]V^FFu  u^Q؀ʷig?D@qxnw2hٞzgTwX"N P}R* q?q /zkhF F.2HrG824\G-&ܞ3ut^|Lp'HKR } bQtђ坋II % i\Yr Ŀz)cۃ߉-A 6x-4p mM^[F^ޞ J{l5ɖҍlRdn1+@nPXLoQ$$=@ZW|vDF_'9 @s::oBgUOoH\=/:fFUB vUB~)dm/ޒIgDOKz7ܹ )WD^K5EJϛICc,cBMQYrv9?NWť $[utMx!m yg(Lw{=׷܎WEP9hp׭xPjWJ~= re|b0vQZ0rN&i]JJ'wvirتy0FA{ud}Svtqqi <3Kteqc <4w3w[`$ V/9xǬɢ"PcMGdbjWyKxbdB2+F/BU4qfnzTשJ4RB`oAEuJ,UKSI"p3u[6u6ˋww|GJHқ;?Ji覟#0焭DwVXՑ/"a`:#C}cyz \ 9?SWX<~~{vCuע*F&[0v=t^7GQfaZ JSXo&DsӼ`%|<ḕE 3_Uk @Kn>tuHpZX* 1b$Ƥb-(nGxy`Jq&ـ|._HIP#^{t]lض()|ˊ0I${H@Dsgai"t,g!Rru֌PB'a}240O:I9:\j@P E z o :DptcU/d_rOCU-ݝ Kl6L􀐪m8l~MԀ6 K#N[k;ʬg}MiPrxԡ|sk?%1;bL\-MtG jy'u㹥ҷ:賤A^eCyv}M0&N}5\AV|݌djV}+8; '/ܠ<IyU { y01+XB֞c;b~2 #qN㘭~|aJyn͹Sҟ+IP"_eĸ[xV8|S30j;9&.U0*&11 G"A1oH :J){Pc$wQ71aэsհ{ TB;+ݯiĨ8}yM -madb{6?xmfZc.ɕTcLn4lLل\I }E1^ډhL3%CV1rO) -LF;Y8(k3yp,OPgh,$G9]fÔ`e!ξ QVjc*BːxF_V;pBār:ʅ~Kp}o@3NjKmg9^G'b&? Bx >E;XDQA'}C R]tKoujBwPb ۲?CL]{B-oqRL]ǺE}gsb}PRgS1a$䭋7F[[";Kb!fb :1ގwyOVipn +SIV(A kDe:Pc^[BE{Qk88 Ri< a6J aQ2FXƚe{Y #dUHD?/VLn:zxP_RJ=mU_Z41|c,To#kqۀ|KZTnW^E ;o?g`c/ Ǘ9/12$|m&:t|րO.8^x! c6k5uyp}j*m}VcD{4<KxZ4vmSbOLՆHaơ,q {UbXɍoH2 Q˞[0j{KQQ5_8!ZҰa@9'̑+*.TT3ai˴[)uKkiڶPAzXMfDF@EO? eDJIO0⁗^EJ`=_1Pm5u 8Q~Ü0-S\:Cby}qP~=Rd>.}q [\dgd;lPbӸ^[ѵlE~mTaQ& 1KN(pl9nsz_zXm pՐ߽6,o ^<:Uu yb4&wQSy{6"ABifil`Z%/ κ=~<>A` L9ޭyB=iMKGcl3An뀐[g]J D`bepГۧO{TWxrnw -+"Sd¥o$PF3>.rCZncť(L*qGvwǔ7t#G=$`Dyz,2-bn䢖Oئ쓙Q,P!i`HH'E!Ś$̝F6N3D|7nC LX*۞ LsB kcpzM?^KE'@};CZǾ,pcI:'Ή)A0&(X6{#3>]g|af`dA1 _,^k97(^0NEh VP:tŒӐK'7r~')|M9'NM,MNPLs|;.LqGKT1$b7y†>E7Mʣ0D+!EM?OySD=&2ɎPuuۃөʩçKRWvh#_[f?)XYWU EoLze53A3Cg83Xz l_OqW"CU~Zحp,z)`<s^|)ޖy_e0{Fքȶr";G`Bƍ$"ƞg.Yg-LҢá)|!E Srӷ'Q~l.xz/+fif$VqW RcfhȬn /eZ,G$H$Q`PrvٞEE !Ga-\x?=LɛE-\cT*?#G5dEQ6G*)\>䳃H1+&˷/Ado\RsQnly8jR,AH]?ܐUqE$m(i\kuK+q>y#ƍ@*J ǁD-&<8:aDHvODFBDGan?*x#@q 8WAS_"3B(#ɂ*3c(j" ~"heDZp|Y E&.1|0l2mEq-.6j=z-4* 8 XQm`\_Usf;S,u) H"Ɂܴmgq5' azzKhȚ<(el#|Ę6rmP_07ܣy(}6)8Y;d,>@A-6{/?m(Aϥ=|2t?种HXۻv%A]n-#!A*?a#hJBw:kgO@GO4Gz&`j1x?.hhƙ{J3x1,ϡn*ùš0՛O[y,]:toWbmfŖ92n>A93iݯOd|W/-(IG{Z|o]2x :UEvE#b]uЖ_4vXWs[i8߮嬧(lYzC_U[Xw*+0>0N2c/oM>H3G3'-m8=6*n+AdAZuFmPȋm|SuhbR0ߐYrMnp 4hJF"QGY-PX>3[\&*GYwRO6Jo` _oӸ/2ɫ _H$y%B%|Ƌ=+>`i S{imRF#zd0J눠Ҷ=SF$x jiECo%!ilj~be#d dQ#<0'臻U֖O5l C mpwȿaNz(^Gꉘ^VLӝ`xԠ &4z , E {S%zm'tjP~{MO>BP%|[c Bh x\>,r}DZ-3/0r@5QO1Qt~re%Eҽyp#Eu}Ν[eMtVk ^eC<ɕZנ+;n۪+lcX9;㊷kNbx%L% l<1Ncs¨`y 3'MM^P3'q nOܡr2jO+qE+R[3]3{klGSf|ӲɆ>Y KaSzjDz/UbͶ({0!))*2i]xGLSٻp abCx+~oh |p.>_[L<[`5eۇ֮˂ɷ<wnTT^ͱ%1׋NgiFPuQ=Tz?K8)snXMuьmnٔ7octK=ԐQ18W}>K-(W&,*s6M!+XR1 r= 2;x/h2GPO3x aر}ֻ=nVܭ^ٴ$3lNQDq[%m[x]flŀo <ާ۵v≮1=y3 c'#ROeUKt|6{K/2eΗ:y^ZѐQ>/mƆ]s̡vYAAGQUɭNCoDZPSfv@cK+GU Ҽ/$9Gte* K(Փ18Jii4 B~S4MqݻtS2\Fe,tlg1$)<>A3)CG;cA-v{&$XF`Qݧ 7޺Y-( K;shk89KCԕT~a9 w"8u\o=jxLb ($<0?8'MP[eyp?Y%p:N׉}5FE\[^Dw2(hevN}X 8cԯE&+OO6Y^;Ă:<: { 7i󧷟a^+ /w'0DpX|JbbA 4Xn,B~ڙ}Cw MCIߨM(7;I8 gu=z`8 ı,Pzv46p7@f+]uyL1a^?. #.Ze&Ywh=[Ϧ#/ޮ4!10-ɾy¨1ZZ)Uj5j!Y04c[yOB^8ᲭSBȡuZ?@B7Hla2Stk qԚH+?h/k9rLRg .e%ŭ-wQw@mX+DBoIv&.^ԊQsӪyaHIDh7CU?ıFML#Q53CgX'_N6 ^;C{q`гOFrn$Hyǽ \eGVF*^2C~B\fNQ$E/F  -#v$' so\`޽f/u|9LwhYMل_MTh1srYG5S[.<6;] >UO$֧)ȴdGɣby+!I T{?2[GhЏiwd@|TAqF$&͇0jK>rQv,h]]cXj=mDֽk A7}eae^quLwq@Q}:q[> xJ\O;Hhj{v @H*?g0&]҅ Z' 5.s=PfLYHɃ*`_}iaOS@,x=; *Ǽ̓W2qfu '7rGUVfrk 7>\^nH\&ݯ0"@ QWsMDv%*W?+k9A.r3-v~hE3 Goz5pwn`>%bb3Jʃڈ7i:{_R1*X[z?DYz/sӫ8 sb ]nbb6y1A&V-=FV$҄iVctD> TYl Uj./]Ip+T]rS++(wV|"A i"MFRf8"89zsW$F[gC!UhI*A)?5o=/@N@cLŕsr3@ܣB6SwHnG9d&ǻ|]%"4@hčXn*Q7:)tx 󲌳i TZkRx£ fkۡʨzQ77EX[Ü& v>,gAa:v>>jgVy|+fA}%m n/a5y^AKx+Yt^>Wx6\RaEzpxY:dR͉γD^(FPyX9 6 FNS+i.4&ǬP2;xm<'dvM`?Nf-!Jg-5p," ]}QEjr5~r|~E2(!L#ea#|3(˸u2qĜ h˝7`)YR:MuyÕ#zZ0P可Gڽ:`C$ؕYvA q5'p}ܛÒe+d1D#{ÅfFrFi/a9 ~0tq|$AXd4Mjfd7H`೽0Æv|)C-1*M/D3`pn&OjtYQŏ7F:b.!3kt. JX3~3㊳$NƉV6'yx>?.Ayfj T\O7['E*_5?<,O6ܱYSl`* {h֕8v==ÀdjrڹgUS=~߈{eEYc~gĄ~Rz liAtubĞ 2~0xt*G鮙['f$FTJ+cqTQ]ѣe1zϔT8:;YѶDAR!CIj䌛\ӵxe,5>6gZ YEɛ pB\ŒO㒾 (`Ck@A/}jM.X:ίiJaGw^3 kK-*&pszܫqx}[[_drE$^e>U %J\5sB1Ic @۫P6)#p n3†q.{Rrtr>zUQ; 6_%&LƗg\S\/ y搓ė6g+-^ [4R㓽7:(/CZ&5֔u/b`5luŠӀPr;>Z5N:3+vyKY-MPX;ljI/o)08݌W_eB>ͼfc-ojc5l d'МϮP17m'@"CAe-Fm0tNt]eMݹ+;c▐$ʱÃwUG@w2Nl6$,OU;|3p\bwKv<A]>|ѮbmcB717kiaYRJҁK$|" EFl컧`^\tPkc :9̕+{5c2" 0<œRTL| oISշUz"FS{oO)7"Ͼ*Z XVԢoIdzרmߐ)ԥQ@ME};ůU&S[!oEI2iƺ[2Gٺ0n.?*⡶\Xĝ 0g^3x[AyDU!_w-M1YA{ɣ!N ϥk(HV[0;m2yX6#Η.^-N+Y[)JRY(vNgX45x 7gLT+Z\+.4è"FK ڣLߪrav3dFȔ)ヒPOO2O\s9]Q4+J agI0HCѿyj,zN]D9UbA&$@K7L"PǡB)@USf*H ''1@k(4o;T&xU+WJF+ļctvY5DB1 Py -QO; b4?NnYu 6Ғh崑pfxx C. Q'GH .p=h@GiN׎1 iK_ؗɄL7C" ")TtǼw{صppګ.u&a}ef,+쑅Duy&02{%V{gʝC-^f`C}\C,M kLi "Oe: LUj8cݛKRjU.(Cd]Luر3Xx_V0\+)HEd: uR\SY畓w=+ONMf<{,# Y$sch #q%$!5isJCȃZ&#]Zɴ0Yv|E!?#FsBMRw@9_Ѐ";T7X_fm8T)׻1iψ? j ,nbI&W'Ң rF2?ɳy+B}D]ƲfMA9h~(-c-]X[XDZN {Z gm k`sj "ue`g$z,n(J?j7S/}X/5^m5?傿G-ހd};uo0,a4QuoI b??՞Vm292o .)yB+V3l~\4i>:B ֡%'Yum6RJ'؋1j^RtfX^KMnD$jX6Wtql(Eڔ@bx^QkQlW;fs@Gk3D4fӎ+qDlgGalo_n#a1`!\&w a}#HWZׂqj=Z:4djE x/ԭ0tMTܑ'fB,= @aMBdz@#׷fAw3n ~b9] ?>3~$qv醳P翇EWVK/%ceЪ>+bIvi;0h^HmlB0sJ(d>ҳ_wirCܪқaQI՘>ҷ1tDb,H~OJ0II}+e.U@@g%,Spi& r\"5Z S;r<&(gspp>z20Z%82[\ISU*Bk(2H h%D}i|шd>$Y:_E,Om TZH E;OUt=Y/6$T%]sD2A^sӍ$ ʂ%\Yo)o"p\M!Bq0 'j )NrJ=~%,$~E&}:2)ij5xbm0+%SC@ #4y~xÙ4@ ʌ_%ÖU)Hi*sDY K? 6nv6D"B3||^鵎_s/w@Ñ"ݏ?ν#a@ E~F˾a;{\A-SxArg|$<@Kp _fNN[fg2kd4؏wO`^WO$xձC{ ] +FBV'tҘ/P5@Fń!!}ÄS`jS_Rޙ(ޱS׉2hObPx{: USJBZ 3KQ%;ݽnqɅk qB5ɮ(UqcqE2h1L#6~NcR~WW`Q@ݥ ~ntT2Uo{EamEЬQ0b Z˒xR.<6.[_}*(էD^% Hs{f8QClop ދϱƬ2;;Gg͏|yC}LCL2-LE V2k_mfo5WJ *18N?|b"bgqs|pIV@DDyT13 J( a#!Vmw`}7>jC:{`[]tW{f&cm-95 1@XRj2&u뾭e7(=[+/!%P+WQ?xɒ1 b*z}S &NCq_kunW6#TWA[T¢7T?';*+<tvh690`p_v6oJ>S'Y\ &Sj|jwƭOzNnotLa,Sv_z5 cK!.^4\S;Y0xƅBvHTOF&Y$qa周;, zIaD<[vPk"H|#D {1rn4}ލ1yR5I?1MQۄIg=1C^ʞ%ۥI2hKkxeKHquX=%BAdOE!<Gѱ6yQ4,6OYgXGPn٤xI7 t>^#WM\n{[0E`dnO@x.ΩΧ~9%P(@=ډ N5+ (|U܍G U{)sޱ"?ܢSVzydG!'7er(q8OV !0X#GX؆T7[~5?ya3-(%R`G_nɆYXx q!˺fsϨ0 .N1>6E/$k*](K2Wg6؜ R]AA,XCX (LguݥϽA/#'E~,2}]*M΀v#%#Ub?EԧNOMb !v}}EWD͑eVLj;07D 7|.CXNcI /=#.}̞/"/4€WeUGJ8gn):M@DP2~ªNE@Q̜zTN?L9?{G`RTЪ@x ![ m(YŒ=Wԇ~DcVa;ZGǝ]_0I˖4SCECƾOHxq: iqcvMW|U'r.IoDE x*ewV ee7&"t  !TS'G:go?hoFwOْ{p-ٟ4љ6ve=d#5,. H.d![Tu[t_^F1QRrj_C 8Tl @{XpB["Ͻ :cԸ|xB}(UsY ww./xUM.^TLȵ`g_ ̛k^n$:76)OtPˊϑ i wUG]*yFnlghE e Zg&Ll %uiAnZ (_Aoy$jsLIGp'a_TL Y5)0\p:`0U[B#Z8חGͲ7sc}!v]8|I7>򟛉+žQNkc:pRxhO l[6^E~K(4<ޫ87V]G]bHjM/qAv)n #52צTiʂdId9:W/]ʪͦ\)T)Ų yc a0!h++ t;f9MN;;sT QJ_lc8KD>5SIĠ::TU+"vhXw{V 1%Ww=v]_ݣknm j"GZėu>A CD XFuYM~9'рM}rсD*Jbc d v?*hHn\ܴ2gS paqK(HT:Y|ٲj4^">5Ht}doG$]y-*kDz/#k q ;r8iEХ~;g]>E|sR-(Hiɸ$:-⣣nk)䀰h[Wj ·̘irF0 b[xe߫==)?AяP>szy6NZ&!U*E+޸2g=0V5p$f摥ɒq-čfEKo']\j_ ws;qdt/7 V]~98D`xiCs_L,j@QCiKpy'Yυc$)2B2\GtF)hĎ2}^@R){Ϛq Qӄ.eB]0u~mЉ8 e1ݥN!x peRE UIE 2;qwHhW㇩G7]D,XӜB=_ܮTMr%L_ӿo/-?[ƻ19$LWNF%lKcws aU:2K{UBd cZ y,n2@$%b' 1 @XV UedQ)uDoWEE\Q)cj`r$&]LzJ{-I"ʴ#a2Yf`ZOWɘqf^a!헃| omkw'ҫ̝J[dSϺ#nm'%Q]Lic<\M/ :ʥNs%F+:h"*oح6ڎ#0!!n7E*mGTkK*$խHfl?[l.e7̎3WcV%YI_vГ@azx}j:bKykg-c?~Tz?)y4ͻYǩOͯQ^,y9j?1ag;o^~}=zYL~(.-Gݶ썤8j4ajRxdRoՈθU𯶼a'eqh_v.K!e`qp. PNmpHcFd&+S07xNj Ss8sBޮӗHTR|r/_)Jt>1HXkP}AEkW+d_U2%qf>PM\|y&JWMtkAnߐRams5I.ipCcF@?]b7܇ @/[>2L0lѲd.~0J>@HsIi}R: ;D2zi~`>*Xz񎕠Gy)mD-:pmv>?7y\:4Z7RH:oMii c[÷?R/ur#߹a;e/_pfX3ixG@I *H[&wfaԌyXG@G,FļesC4d/Ȟ׊R@2!m= YBNfμE]\Kpe{HFIw8DXujLvj+m ;N, 2] DG:@M\R4k8O乷ÞO \sYcVedE!58Ijݣtrr9gE çKϘNiV]tqt7sGT{:)itf*&㖮VW;jbҷb~B4[% igIEOߨy=#1ПqJXzQ + xcsD0Pc1x ZoFu;;qP'dݼ__Wu Λ%R[sMyYz%wj|dMvRQz\į ܟ`f$Ԋm6:GFydDi}F)b5; [@ocP TRrt Pg甊54 y7m!_qdM5enhĩ qH$hW#;T\M`6y¨i` Ro*HGj̅.pmOƁp'xB]Iu+îGwgM珛 Xb6[`:"WH |{ B{vinynF?3gD lNIXFƎM[\#KΎWMSXC @dBrKu~<%E8u[+oAz5QY!6XBl"$y0s'!?C% R$Lj|֚2(p7Bl_rlic({ u1)u=$4|i/-')H {O[dJxEsxF9鉅zx#nI|CNjdM~4g'L Uh^Wѡ|I.3}iھ L6=$7g2{:@?иúşFdkĹtyu~cbFH t2 !ahaL"H iq[NˤnT @"}ks̾T~iMŪ$LŒ,ΙiO"DP.팏AFJs8tAmçR߆v1.` @1I_֘ ט)L' td3gh-.]Aw>Lx`)oLda莱x 3WZݰWI?̚N^M@2MTT?UpQIB}p&NSWzvլ=N:֚vӾtcX>ZUʴcp=Y# Szn&.2T f.%'BkXeKdJ/L{Ou+X"}73CV }*r) <K!& a#H[}{ԬaXT@tV½i?AQzu@U\UJ{ p# MŦqq,m0?gpt؜LgܙB^6t2:=4픤25´9?>ɰ6%H^+EÌ4>,Va#19-g1Hj+ g ɄY0 "Q Lmlj9I.Kru?tQKڄF~JI6LZz(b7Xq2ZXrN)K*x΋ZaF~ |"^];˄jj4hZ̬D3mIй!jfTL;%Q7\QY|E+âp*7U}|kή>!% ھƾsW/8$ ({S?_++N0N20FK.j/F~3M-PiQ6!\{QjR'm6^JNk?7d9O\Vh4?z7})9K[4sPm=&eZOi_O#8"Y$QJot8*$&;Xw.8夁=K֤&j`pp]7. ˤH%x'58N x](,#y` ʀʏG8 Jr\H ZjT7[*9 }#MM*c?̻,'_}J|/! sCcF{l0y5,iQgS!*-f0 [lZ U34eJ<\q+$g }]i6f0ۨC%u/3j`ڞ)%c;Bb)}XWb4 *d+4HeGHwr܊ s03Nۺ?>1]pGnQ9 ,yuhϭ׽#Ҫa:4#Tb}a,4 ށZ, zD%pfqODEn*;7EvP 0~fDf'xC;S̋y7PP8vX(=Z\ߜ%#&JBQ :/VzuKnbh V+:s4D00(O_;ĝ ~wgݐ1_G:05(\l:* Ydڝ>9BPv^sT{\T~OCa6XxV5dȿL>|q9ܟӂ>Ac$Uӻ[XnV|Ш\AM_rN%M =]X=Ez_Da nXgcvk5h9 B9 .ʨOk :D]M杚6Jq1^Icg g|񆮰D0)ƭG$XDZ_5ڈ pv.=PTy6ʉ9wV΁˜1ݴ}4Njf󎁵W_ j~ /7;wdL^kN5?D'wJ&X˪ٳ@_H/)%ABa@()Ng9SP1O{2afR/7ج%u@4w4źS)qY/ yC\!w\ #='Te8U%gjJ0Ҷ$b(ukCˈ2 !K5} 'wjLa>-A_C1Np;ƍ2oj5VڵX>M-]4r"j]zE:Ի@@Rrvh(4U6h >7qǐwsQ{p(YPbt"Vi$ /yϦ* =ju WG5X>.nCl_|4؆HLJf|PezUt({kޕB֑TtXj80pQ䯣X+4Ե=!-Y[8{z)`QsD̜ƽG^_l1`UU`@$4fusוGM!8@: ;j]h0H CcDb?U\wPX,=}=YuWֶQ Bd֓$!ԋn%i^SO}FlS3b ;ULYK,n0PF1_CH[ x}gah>O@5?j g7?A)B~@bg^ɴ(6R<eit-1>@$s:M ܸ=(QWrrig`+.Z 9.J_|`iȇhſGÿJͳj@(w "]g&=]ii`}­@) !FNM"v@NܒJ'̎1|.Vƾ~ :|OD@"7ɱ7(~WG<ޟsuEs?XHr2PCs{17dF1l_,I0} %#d*t4* 7';:Bza/r2aXeCJ)`05썗tݑ|BQub+4`+l.թ1K>_,*mxsP~k֗˧byix'4;YD1wƣx3֌ܱpVBp!YA\mW")`D||So8Y@ t|W C;}ʰ>ʚ)KU/ǐ>q˰ Pn NJ\m|fdr>cxC!ڀQ'ÚtMh23f64"{[!wqZ5n4.,_"Os) VvkU XO'3Y^p5+FrZ |̐BóUB=sȏ׎tY̒n(dž\4[debH_6jr߸3C}Lf BX#ĚiUrgbS:9rti4D~ZAQɹ$n?԰iZ{9APmd MG"/dh3'0[m- !tk]71Fè:H4*0y4k,&E2FѫV~U1 9 EHv¬C J=AŪI l'Tvb'Dž_ tYvI̵ d{u7@qt[e"㭻=nrJ P'5$GlCP\܂f,o.#SܤSQ֞sA 0 h}ܽPT̤Q8/@C!47d>1 \B]=B_I4םA*Cd?*m179Lnj^ƒ[ -ɤ IKG/ 'oHF]bU.b2o2gNwq/ikmVT6&y :b^h \{!SA៭v+55&jP/!TJ.gbb4xXMv׉cM\ߎNO FQhvBw]*"y WCp$8QKmA@d`ٷb2pFJD_[Y'Mof TΪ4;2fgVLaTB;U A}}ޠb)5,-d+pMVlKLB4n zb9&_M'nk*EF>u.E?N]} =fcy-r+KgxPAtͰBLVVɏUF:ЬbȎw_aV[8|^q}I79e MzJC/9Y@96Hwlkmc#ψe|<فo+1b,"PęJŔEQpOyJCɗoQBۀ~;c$סj2>и_M9SFtFamz!hSB?L SyyxK!⥠|DF˦r);}\7RNb"_;XN".ÔF^QH1lk}/i??1[y]W-]оJc@R"mI9h[Tb: ؕbF.i0Gwk3?%P+OaHj͐%&Q5Pɾ|ʋ3E O})({y0Ϳ,b@TՐ|)aoBFAr=Fu'o6qC(MS?|֣%g´BC#:[sOyA E|H !rh__=nn֒ vG'k | ';L[OlPch/:5W> FF&(6r QrZ_uށ]/}7NmX<]ϖ FN֮Ug5wM1L$+y?+w\-DH$' -=cN 3rlI: a:JE5|Qdk&d0+FϝQE} =BV$!G6Вb P% Gˤ Ȯ1N]v-ޙݤ_C2o'ER(DD1SUCQ:><D;ΙZxwi-NLa.+KRҍ ~ɀoj4lcv+b45`sn Wlo;bJe2D0|RJr_xnsҀ[J- 6slRYQp8מr>g̰ܕLjF$?mjrd֮\:kz򳎄=J@R룬 ]=D`݌y}6ڲX[l'MO]3_Af)β҂̈́=$;}n-(ElKҌvvgvah%7_osl@ \*ifIv 5 G^"G]s* h`hxc@%>OJ]D3ڸ;A)'+Q{&Pm?B&>OYoDSm<-d3hʌKhܟ94|.q6h^Y DWA5*od.~N`~-W<_74E #f_(#4 w,ѳl R]kN3:sۂN{f0էxޠ+u |>ԪDdF< zF$2,*hD"ݲQz900/> 8u[녤phPNty*}M[y'ĮnoKb{%1$;1Z=K_];='{'{<9bfL A pa!A0ykčgfI;bEq\ e9|m,θEIIK\%3LwzrzMsd0QGT?,7헉L-5L87˸2#KAJɕwB fy~JnRM(Psu:F'O:u9˔P{!-paSͱ;~YT+k$ai6oKȇzWɠ ~̎AxH7Ӣd:x3>zj[:!{:vb hUCم󯱝yuz2,)d!%b?[[骽z.b#!llr&PAYp9QF5D:iUFUBSICԈWG_&׻x7(>f5 9 Jg!d(\8iwAC~,0Yic~I*ۑqe7/?ƭ9o% 757Y *E2P-GQ=U~Mvtg@U0a@zGPovGgo^J?x`H'yxP7*f%`:=^Gaaab~E֭_ 9F+ 6d/@ķ0\iX`lz hk׉ jQJCy&V0]`cC +#X/v2_~Q^\.ş6 Җ M>+2T.ݜZF P_Q)"]Z-< H+fa܈{~ٗN sl1E$.Uu'~pyϩTnQqBZH~L^;hQ*. Z~.(3-M.9gњfWC5c>沊'VT*jOӃ.63:753{| U;Ѐ軓H̸# * zqOWeIIHLDboZ+",S9{40clKA;S1eQO3a[>nZϳQ$xpsf[BSF4UzuENYt iEvgN!0|9x; "qrntm oXK\NQ/=Vx M cj/9̚d!DyT~KO=Q]K8H0Y_(1-}' p~O1|3s`٣Oǎ1"iB3iFR\~ 75r 9O6L¦ TT7;ri&`䶏*Hxet̫Wj*6Q:[Pj-\8~T:o#1ģ6Aɤۢ9h]X8 cP* &~~Y1Eaz&?Bit1Ȧ: ʶ?!׀H5b_;5@Jat $2*d =,qf/cFGa>{ʪځ?xb׽2/Z8/`rD:1QjҎFK!%VQju^uwGf8}v?U҃bJ<'i ;}z Χ,K<4C(٨dLoQd>x%=u:a HQq!c`=3Ms4($ zId.nG NGk $w+*(0dԹc)u9D4ĸo$vb*]aAۚ5kQ2[~Zh+aMIqtto~"R҆o"VCc,(cN%"!6zZv?+}ΥJGk-Y1J< I& gX0F@WS \"@pj)[z .oFyL75Z.c5zDめ^ 6 "2dp ^~ N<<>Z.bwf@4.ňFYK >5oO&hkQwp (xgkpC]H=ڭ#B$ʻօ$ mosŲT䔦=0ѫq'ÎUJ۝Elxx\Ʀ|ZACt[dT^u6Rlժ+![8nq g^'.HT)!U~t^BQy5\#vUoE"T%Y"Jnܛ<9!v/;=1GK#]ŒLӳe79Hq!6f-39pNX$%~P$|IA:,O j} ~괶nE\#A@I EzV9`K:ͥ?i#1j KN4]Y’ P~0fiYlZ9ٍ7&;[7էю+5c[]WB(U7[8FgWw.EJ%D~%:Ϻ3 dЪ;SlMJAwj 9e{E6&kh>Xp]tZbUoگlH;]YPKI5Σ9X 8RBguvSg$҅Or7EB3@kG4ԭCm h# {t,˛\ㄱNiL6UsMJ$6)FDiI{?_ӊz"7ׅ[bySX4ʜL)6b#FxU%L-UVR)Ϡ#5"dsb\i;_M$f1{(3t6dmKc3f? ݄ߞYJ^Wcѕ_X^V"a6RkQFXfH; EA%8l'_*nz_A[W%sw-=^eI%jۇ7yGt*'%J -(YO V_ EշVh]K]N^ybMy n5?9*&ƌlWS3el(4Zləb q;5ED9ƍڄﱭ,JJjqx̠=Sz3*3|y3ND<$ϐf%}a3էc4; {B"хiKV)8FS[QƖIt\o;<٩BEԆBM8B:*~';ğKRil.0gC̜j\! ͕sI!Ru)ȯP\B*{8%ijPcV^\ 2edƉ` Uk].eSNep? TLf4sެ@ih^%uV-E?]wm1D.PZVQ"OƟjhS?+lH]pQ'cFz`Ԇkn6j$cՇZ2+AKPMqn0 d |=tcul100lÛNvbl~@qڠM"Xq,Ď JjSi (m>vaIYCEgYQBIs#< ?b-*PG`p `U L)m1dqRg)1@rvm`zk]q])2~\c0g}1^nIzk,9ԝ&*0tYN ETN&J2vL*Q Q S ͤЮ##Ac%v 2dɴb%.Yz|niR.ʣcc&e{ъGƦP_Own0,?Z%^h9}D;|zjFgd mܜmF}.ǑM@0;%`4e΢SWt\;tBi\nΥf*ĂɚHadzX'QagqEk%= 7N\ŌSB +8Gp~ZtQbi HK#H0 qr]?;3(CJIxz^1mWϬö^Q?L[F%RiD0pt}ά/XXCZqձ U9ݱ`fQ"X2^mE'{#Y37Q^SG(8뚪 0R[J|L8'wg Ū׶{Xܔ&Gh$#P׼y9aWkd1~'G_` Gd5%sY=a]1e|DM@*vj 2dG K79e.Òx p0;}95@v;NM8kأP0v '2DԨ {Є7]LIbلatkY#ak6&y/jDZzPo}u N|2 t:N 8gQ=&UIôp ;d)ZG+.ehr[>0}m1Ujϋ,`1W;9jtxFmhΰpDWfw. gb+R?$EGځo#QM8'siVű*GHuL43f:/Qp_cOֱuKHt ~pUPa9p~KHd#`&&r3dplyZ) _]ʧx?׌6f; k%fsc8zĞ>ctzc*.0;jsyESN(Jqʃ²%HTWZ_G M2]⁐m;% >62YI YAыڏ7_+b#~zÈϼ/@ >)PG#ȍѬY.[l}[Mp*nQT+h+yNH^h/\;Hmǒ,:1J@gcZ¿l|Sq0Qra((m&mg}=$'Vɀ,;Y}^Х(h)IiE= {\wyC\Ixr8^Vp!ۜV[jNuR6lǑ3WL.q!fva--C"b`yjʞG|FjFĴ)jh+:OvşTFLq*/*tc}U+- :Ṕigw ŸD1 pw&3(9Fl;k%eIaEQ0RF.U^  Q}.ʮl0#e] >~׃'+aD*"R "t,ե{{Ԝ/ǠN\5*l,z9HU2_(Dɛ:)Gaz!(B ȐȆW k6'nÕ*,PƟeĐS޶}D26- 7i,2ab۸B鞞E)?붠4ԤqB%uWU1>}%(-6G.<_"ǚn9/' ]` / p&`"ƣAлk'mk9\ 0FolD*ٮwn*wMfdXW(0D%3Sk^} s|ыNN6$&j_oVH؄iOpNG>:C*w)Lϟee~X&̷kd7r ;Vˀێf.:B1RY9ʺ߬N:3Ds?O 2cBs^ΟK\mSzW j'%;*(Pcyut&$aq[ŐNPp]}cY(j,0n}o)Q]0pn"F݁D C Jsn4D eL&I̔~OK+9tgF[%ŸM4;*BT ;J0=n w"ɎLZ%Eͺ׻$_WR~Yv'R$XtN|[jl 'Էb KXEĉ $"][ [hvRmUpf;mizNr)Fkы@@oJ^P|͡Umcbܥ4wWþHds7lܒQZ(S8DIϋOݣw:s'<dRv's6ߌlnbG A?ƶyQ7`+|,UWy/U߳Mp)#^_RPdO%d{ůJ-ɮA)KsX=_x}b[oNki$== HdR`(V 5 x!Jѝt?9qH" xjfגѣC;7_l=&?+p'}W Nktכƭ^(w" zq$|OZl/Te Ih=kl6ڹO9;p?)`Y4ŸF?lxТ@_) wwXwZKe4BKm#ED룪Z?|3SF&) Ƭt k,yh]b_9Rw?lEY/` 3њY`hd ƟdfML_`tH2 Ni $f(YOFZXǙ6HXElYaO"B fW v QƝۿ uSI?B͜B(̙ti+mB{ e`Qzʦ8cd>=tYנ.hx `xWbݯC|}[[£ߞY_m`ߵfaP4BV,՗|>%"&0mǷ|O FU<.a5>l"Zzs7ѝ徟҄c#?,mSB}^_/\ᔠ,e󐾿GX<'uc$`(ܘ;TKw,^|bHƑ'X%GQc)Uo,w:33ռ[K݀lL *f/_,CXHP2+}j[ag0o.0t=2 |nَlk> եDhc"E4\:n1:rWUVt< O,jAӓ>4Ky2`]t̝lʸ)o9!vFL,.jb7A I$U!3–NQ,ʶ[rMX;Tޖ ЙQk^E71FܛJB)98RP81$GYa;ԢVa˒kq7:vʁ̓­CQY[ h2o~^F$j͛'^xޘجwa5-C7)[}[!QBO'M( wу_gAC;&NX,;ͨӋL@4Spyl^p2,jㄧ㷼)oܰiCnv=M͵ě0ԝMwE!jpPVaCS7oG_ܺRھO +cth;몠]-l+Q"O&=)M, .<ǟvUxB+y7Kw$bp#h`drk cEQv柏Bv6y&w]vS 34^MBdϖ3z{u9Az`Qt"j8"/1Nk Mx˜)@olm}q'&?.F|13&XͱhîtN;y Y] pוޕAd0z \}RTlBBY_g/~36Cx# ϝQ0]!p邮.* sF{.A`&&FT2' IUнrzBIÿv>ե&[A:>:ǤmfamHYDxTe@Mleqkp"BW4dsV1VC"IĿ}00VzQ\ "薪ȕN0VZ y%-k3GOb K"*4%T ƪYNba)PG%TT {NwgJ9` !K)UZڔ=H?i* &i S`{i.ЧfN‚*鎟U Ke7-ۙ:'hւk}\t4XWW 98J}qm V zs ]DJs!~@pVtpa_J:youXnV:,޵r8,QAE^S75nu!t_'뻝p_=%>ї 7WT!6 % H460#=Waz(E->\sۙApݦ\6fdkOh@FtOlCZ,:7K(9`LS 5 q;)MQGTme<˨Ŕp"&gE'(q}!:|lEzd) S醿{>@! aWqMk<6iZOSc,m9ñ< ;&i{:^#oJ4!U@g6 .).É4h"^`^ MM5~b>Q ɱ0Z&m>?Ixl{{ ՛vMƊ7 $18u'9u?QQ`>ӫrN4-X@+xshC-%ҹ?Z1{ۮqeoaʦb?2((^y"VdR8-Up:+hVcrBظHLsD!_J5(Q!񟊑JƸ%1{⵴AaE"PZ/#ds(cc 6DZk{(9*0+NeO~3+^+ۃ`~N LE% H3`厂 wC-]-t)~d4BRYsb]#ahF,:O|TU$~\wfbdA{#+\Ձ2^)d A' Hh(Y4s ncyW/͓*ǹ`ȅUrpo")( 5re71L_T`}DBZ"X!1wiblrܖM\$R-4 p0dkUɰ"Jz7ghca/8~1̕2y.‚K;$Շ+gǥ֖)L1R)3"~T7𤍀=j3Zd z#.0rnE5ʊQA-D[5 Mt$H+* tU4p )==N|Vx -pok*%۟w6I8wFJ;eI93jiF(Ϳ#h ^ ,Df`# 1Dڂ^]ԌH_48\Qml]$c.!7p9ohwC"a߫41ݪ/y+^AƤk& 1lPoV.SgWuB^NEZ t~EN0sM;ōpZ.d9xu/>/@Vex ÖL%A(:%Xx57USQ-x[/c l8P5Wz:[%9,;82(<6R]M6ORj=e{f>wcy{J qRv*ssWUaх1aO21ڐp*x@Iz]ȱ#6͸䨡 go3OG~b%U<Z9.eԮ!qtl]o&^l{L;OV-,r?>#עO xl2Nj1G$NWs6x(t;{:dɬd>Vғ(`Od𛞈{oDW__8Њ?\5 M6ذȗ_,Sl C " )4M1 "g K :IZRG3TȬxQ= Yco"MtDIG]E57yzEʠe Bqj Td}yw) 0r S H2O/$aHcCմ?F=CQJo@^Pvл)6w tI xtu$ A'hIumv VWZm "$k$bsχ#߬!&<%-ϐũNa;1$D8/d?]\\^ M*?\=Q_( ظ7dҨ^le ^6uAATqy6l+gi*t CJ@(땊k}nL.h 1ZPTod$YKsə܄/ϻyo^XA!,d}@~ 6ϓ&u_lK"qpco 2,S3Zme$l^j]ՈLh4籚"~S G ~,52Y卿HQ:mYK0 'և2{2˫s%U61. ULUeKI 4W-_,\ f0xkp72@V Fl%( LH)nR%mЈTn9_;auz`S 0fͿh,[R 5рsۉ =\9|3JEҎ 6'a:> gK21lf=g-z90O`a6"USSY>3{U*оX-F_ ,cj5jg@Mj"Utب6jPKruodΙ)X[顏H  d=T],mƏ"Ny 4-ꋭ&2dl?FaO[e` ^634`'l_al_U>_] J)t&֠tF_m9 ,K9M'14*y k}=iiؘx/1ʾ,1#0Z:^|uk!*f<=s.Zv(m\@t+s3,j_Qն/$lGD'cMdLB 51&(sAQa<k]@' ߟAV`CەRQdFt# ͭ[pdb\<="!Zl,<>k0xsɐ+|Z.q;bt#}i,`ar[IoNLbfVu`s+ E2uZ;dAJjt%zV02w!Pt-,IՐAEJ j#G r˰TX&e9]a@FZzN%R\ͣYW1,s`1ʈ~UHc5SJj[d9g$F)5o9} hrWjTax'?tˮX5 9{uC6_ \О?>)i PSzV,GZ6#qȯAQp>ż Mokb.} ;'%q}}Q]SEhSk+'$Ŀy9~3YjP~ X=qR8eᖩZByc -߹wN #ZXXd($\PQYeX7TBϼx$ ߒy~Ҍ툥6}E5 G, CO>Z g2Ӂ r|(.1EKvD#?8@*@k3&XD{߅Y֡'xcrB7y r4l)4J3wj ~StH1ȗ5#"!DwEA#Ιb6˿oNJQv3lIW8`p:bNQ_P!};rB_PX0HH!o{hI>Kvgv! +D} 2h.}_#rH:PZFAH *jwLu* VVx=!+{C DdZ/)I$`r`M}[2-Yѭ#5ckc{ E*7FW~a6.!*s&so܇~|d0ըI6j-Cy ,Zt|˹BmD~2ĉOz])cC@)Lraeh>D4Sch Ĭ!h]Wo14Hߗz9h AW\<+zԜ]ՅgՍvYy웈ҮxkTRҩjQc]H x2\>KU2x!$#Jl! u샚 4Y:vewL-V|{kq 3^tAnױǧoY7`v!A!A[`LMxR@*h!)JR}*glSӂ5l Bgx~.D><Xr) E뾯SbģSzKQQ qf50jE6ftS. r&%yC7R4T_癪bF‹޲J9O B`Y>^h4ߐl O |MpgHA f9 Q"m/QlLs߂~!6(^({()dTtSJPUhE9R+ixnO|_[ ,R4(THꀙ2N;cb*tvi7!M` W S_ҹm!` `PP=VEIPQ55LEdw@g_xkg/QAFYU,Ȁo){Q|̅t6kLƳ(&;#F7?Dr\)F1LnyşܿsͶF_8;37q:/XOn! k}dFx>{FpAro[Gioe҅Ni'vUU@xvq{HNyt A(!ٝz IÓ$i39/Q"ϡC4^'1$_c/' I9x႖_Y9$w ? ҾϠ'v?3 vl$͘JUo\iE&UsXt EȳgyꑰiÚݯ:F#%ACm^ .vi ŁD@JH4QJ1gUb]#`7OoH .h3#v)yZ~p7?ZXOՍ~>ڤ'<e!wZ=l"2Q dKܞ<9@JEd04W=#!1"CՌ;dI9:* Dвs˛2Ë5~Y!]R3) @fX,XkiݛlnY߃[DD#*2]G3&e򅙸m?JTS 㸇5@E)I22H G5R<{SGJ< &8+HaK9zj9Go/VGm5&w#F9 ra ^+j89Sv>}IW_ݷ#ОJ$%+8R%t^OGUdo; Enl"ۨ:ٿD RDSHeNovIlkGOi 3D:9}1Z5[VH >>#lQ!gTJ*jS{Ѧ SA^λ ESPh< RD9Jؤ!c/n|`l- 1ꠉjƝ$OiFp/RVxWFS@H;l8&N-&E#EԢQD 缫feDh-lEBjw=m[s{!Yㆤ5/u$f-h%a1⭤QMU"*uS'k j@ܫySʌW(.*UIs x1 cLSx(7HI,.8ٝ ?c  wx"'J~Z!,uAvNm0{M677yЁ3޽+9aWōY"4Wx@G+)gn2?3BT >]UĕUHnL}Nxuʑ6Y'2^ @_}<u#I:%MtF .&T׌sVX8 kħ\‘9WC:@/_fuا2jTz-142dں^z i3kie@Sk K V3ʚ- j;&dN]DuwϾ d !VVD/pa% ~Ymx3'\hG7q +#X c"YlX@(2#ɴy?HU8&1ů=r{p;1K]~%Co%Q5-a}6ޤey=l мÚ!_:~3P#o$Vs ڙj(w0-EM@Il5׊yLq`r|.ZJۥw urkMGbX%}wW~F$ˮuVmqbAu.JDY2ɕY3N6ݛLoQ$̆T_gKê#"f㔻3u}r-G!?$ /ߢF6CZ" mQ$^<sHw$S.3<.ݳĴ3xޖ!,%l VɾoŪR:1 erlh~Z_O9-#-TrPg<7!oۋgkYKhz31ydeJ5[ڶ"fuqCլJOһdbݥV& HR$Gy$@PB'dxo_e:[be[Tyg'.ٱIn6?V\l(з*1#G ~49G Zdg*FIZ,2*iTPV'ʠ nZ%܃'eHdtK'Y 4mf?+ t^Vi^NJg4167Ƀ#޾. 8FȽ=߮BDŵO)Wכuld?b%@q"Z d1Rz֭!>F!=E]&y܆ iHL'7 [BO~nFs'hKU9 ~_0T t!NS5tWxQyS̅i=dIfWh8uyu$xmH)j;q` > !{c0DֿwLPZf'X :+rLίcTo )nޘ-T.luϛmh^$$ G޻8T*}#.9lLm3 {$13wS jh( hTrHt^"*<[w ?rA.1F;[J]-ރq]ӿ_bWsݞi ^( ̀rɟvs#H [s 2'亼hNAk0לH.e{16?A*2+Z(Rm#EPC4wd9tKʼCg_+Z3/u(ҤoHi*@N5}CP 3,wsûe(J ' a.;_ EqCD5LoN5u4ʉ#2-n.$IЋ4ZYȒ260>K\8H@0Rk 90(~?+@_rNy?6+<,ݟAY$Xag- '0ZTUڽnʾ"]ANzN[8#"`j"ɞם&:Y=56O3sCBs5t*nrxc( a8;ϟGzId4hS%&K ' /$|&T2^ MDY:Ҩm sIeΖaP&5Q~#בƫf6oU'7Q* "Ǒx'vROͬ$՜v"\9_h>WHb]Kݗj!df4BӠ(?$͈ eJh %'pδ%x,gˁ=g =l:ZT0%dIZ,u3*Kջy9QU)f~U S+HF捲Ny?ePq-BJF+K=dGE YJ<-XGYI:<,¹E=E/}y4:dumXJ̌k\MYr] ɴV78ȑ B!67a_˞`Q|y.5=uiZ-ǯ:msЮVv,"}"%Bj`aQ%l^wr^8I5EyR7}}qpOϑO-ڧ2?[ $eK']]O`7:QIR(8:q𔧿(GTֿL-ZoD:jHgɩʾ<-;3oEHȦ9~DlFMxI NapOFw+W9,"& Í|n M붺&$߷|a+?1AtbBlauς.>4W ޝ'hPj7&XMaPҁX3/qI@+EH)?[#Pi{$yp-ڸ7q1ψ^5E,^ I?P;{IծĦ@&W8A-{YpByDB?߹5b~T:$}}_kU𲎄p:Ӑ@𪘪o`M%L(̣۫gS2%Hg1n֙ip:Y1j2}\.H`Ow@(q?Б%lY"1/٬?h1 C%mK>'Hлla-R5\t;*<>#"Ň`O蛜Y0ӶZo!ɼyذ>v5jD|O]˗O̟P',fH @cd-䕕5R]ƨɧs׉|gxIr}X)  ;fI3BKz:¬GS=A=ZDk6UkD2V'H 1[o :/CXƇ1kx࿚> KA#C9F,c8$bOc|EǦߓ ycנ_saַWeΔ8K rə]̷ԾPmMx |d gʅj,wp6j)UI#<-ٶ8#Ote$QY8+3"ЃZ~)i/ih-yCkN&Gq\~ /]'V|1y<1%;nvYC_kdaPARAڵX\jrePTW|ɚ P| Pf4_8h&IȟfR2&x9gɵ̧ےF_1Zo 5g9uAK83hPmڜu m]$VX7_M.I!{~4#pw<OV󿤻dZ2?t_˃vcJiX?8y>@}LAY&9r1fj+07HQ̧"M,߱{tzmx_]lws#Ќy*=W&)@ ;s&Y0R$uS_9-wX`T)X;$_B9Վ[K!V {:[O2`*Ynh˕lG`xQH$2\{8wZʐjaLV@ ~{wlMm9TYϊ4 U^ F~J~^ e($΁c-:N 6o2 =\~tSCtqȖ8M%yBkƎVZDd&3#9-f˔ر73*e0_q<Iױ7ng»w3*aF&.]zI=]3pgpT0'oM`t1d!FԝF`ӈ쫏$ J]|x5kͻH3m+skN:v_a%B 2p'!3[6(QXYk GкsD|!3s?dCa<+ Tϛ1a:hY I"}) OA80ȭ+A`_g!AlB0jL-hMˍl?%3 U GQ}(zJM!XPOe& c:_v NYH)A)uT(]!JӆGkQxu1m:b1 x9 bT *oe@itcZa(^ y-QSJbIE6۴6(p3͸BFP 8v*GL(o ^/4%FQg}qm&1 &*1?O,&3RoZ๲ J6X0IRR# e`O.%yl;("2?Ffج7PG5͕WfZk)$Hd []ce88`"=ENTܮkhu 6yE;'aS 2SMV (U% -F3E1cP#}Flxs\O "t5T/ \/! @ń'oy5['nߖ̈́pN%EpKlB,gf: /̪bt X5급a*6:†r^rlQ9a‚lZ4PQPL^5i8C- ]#\ J]eV-B*f9s>8`Hm @8s Hp7wdO^л7B;0 T ̚P Nb:4m@R)=asJoimbU61k9'mxmpOkl`#5 > {T8UFze8!T%qKGdcV)'*:G+D@V'{Eꏑe)Wz!}Q"eHWJv ڊ,gb xFO) v?k|sDwN0ܙ1SaҮ.G?}n#BeCa(Ud=u-|gX xeۓҘ&hܱcG՟xdRjYP-|4ğmI5EY ӱq&V_2M}:XvxvIH0ܑRAgӬL5 ~DU͛ hUcǦ};]+X>g$BByZE٪5[M4!@/&(=,y*gG!'=,@ iqݢP@!0yJ 5Z ~ocly(/ά|޾}Z~B0`LvZߵM2Ϫ(~_>+_t ]-E*QW-=!#8dlz-$Z\걻2?<CD'@ yx58_@*UAiG(fh<]P{ת="SQ3""^m]n+ ]gxO"4{>35BMguy3Ewը'чg[JHCrzUۿB;4Γ/+ O8`Zy^db'9ԭ3m8mqC/MIGsM#p ##Cw5&Y AO m$-\]H~W;] ;jW&Dm">:@[^Q)r ߭eZ1k"P.S e|h,` 9LIԲ+}L$bLMC}߱Jwv&Q2n X5>.7@L|3K PCnn)OuˠLuƊ=GGk¨2'2=(m]R6)ֱ9a۱[RN~ 75҇Xa^]jnm ~[q^VW_eI\a;gW'Enu:fhGfcc:9({Uhhe5.0hFͰĜF6;o? Ԑ6d7$֔w`c,]y^+0!o6 ¹V*{W& 6yeY-_+yM i>*82G9 JaS:-%}ĵfmՉ[*w2{_#5 > V֞Xb{MD_r?R44oy1`M4fa_JۻnnymcvHa- oNx$g/TvOa-r@W8O!m~4",";v6d<)3;Ih+CKye 'Mg-ĎٮSFt/>mcVs8UW .3N H'+㼕%ڨo+6O_=ylGh;Phmvw\hfVIIOF[{1u}Z46MAu^qa鬲6>e²*}!`ϑt VYX!@qAX&0#X#Gv1 A4\y7 \Ii0Fcc.1!C\n? $ &7d ,ƾIy畳M )A^vb/P=GB &z"T#<HArANkb/X|>7\v4$B\>MxKGk4o6 M/Zw )'VwVš"s)¸I3x**1pjpϒWgNݐ@=cgzk;jV[ϽDrlAQQT?+RҊ+ yPL"~BӤ/ݒF^J~ӝvxIAVR߂h >;py?dHrYxZ~?JT? Z7ZBjb'[8a'3t3_R$R6*?צXTCİ9n T`.bDjxwX@b'KAj=knj,;WE`td(K~܊[Z9 q0MEU 籦+ÌЁ.XԏY۩Ì+!dzHow7KUIr<Bo96l:v+(&geٗU4.!Cmq 8bx;68sgX&B;@6j1-f)gI;)nτu}Av3tOȶMWc'vx)R{aiuV{)W&J@_8{㶂r&4/@ֈg ٍ@Ybao2(^ vD4^j`Ǎxa*7.fx$.i"H Bˑ694(jNRY1f G]8VYDЧo(_QإG4-"y%kmrhCV @$y@sm$>32?&63Q錄zomT׹L7AN/oF>ZKfYܙwLIqjZ N% &LqoIc?B2I ]F#@f[*N@q&vp+~xiQwX><0kVzwyJ!U8zHSspb: 4KH&BڸtT G(AoeFf:KIjꖒ U r`M4#TYl)g)`,p퓱wt?S>\b}dͬ,doL4S$1X1u'Zhbyy7,, vgbٸ0>< fKlgGa3$^;uy% Xoˏ5'$?11zXg5!lR^>%FdCZz@~;? >/D5<5hgyqk8WZT7Z\hKu{ KxؕY!MB8Cc ]WKb cZRazo!~kP 0BA~$@G2F*2N ])\}Г# T r'DjRxXh ׫sh Ҝf|~])mYDb#Y0Cu*Wu[tPx8IN&܁[x@r)IxVkzDF`u~dE![DbiS.? 2 60[} "eOIǔdw {f#XMMlz/XÄ I[Q:y6%v59H=Bw3őU,G,јk_¨yƻQ+eůMpt$B} "rF_&Ξ6 Q?.lNXu,i zm 綰k PxsB}%&M01zJ2)co':NzQWu)ضH-$>S`˺7Ki!oҵ:#A9b0g ꇞ2:8m{AEarD@)Fj0a%KDp24`ڟY:QcP?6I "^8NGEרlY?>\{9'Nqdm*a>ܰ̃t6zF[B. J:S43anH}\m"oTI/k[cv)Isιz7Y[ ~,>eM\b6cn7AHR57aPoȍjdVoy~dag@.v@aq3nP YE7L3Վ55<]ov$h$v#zgՙ[3p?.;M=hQK!I'i ɃagݲY.d g_1^d;/(b,?D4u6ڍ1Nk;~wgX/d`ϻ<#ڢYfyaWU t095_g9unL$_s&f))<׊mi듗$;N9EC $ ZCՐ%G~6`o֣XZ ,m4lpV|"dooY\pr=:DY^cfhJdZ&ys;BsXd192U03;LN L+)FɦP3Ψ3fzd9(0IB1@ Yڢ~"qڦ1(`]aNzIp+MTWATR9I~]XyʩQ~gT~632ӛu;?ߌGH9"r~<,@fI'Ƥr /IRU=oŔsq^Li)4u-tU0ZN.M>.A36EL`/tX57+"+_fto}uMfQ=[Uj! 3K8P>']_5J[@BrrwcՔ#> ;=C+rV.0*pbb#v cOmEVV$oovEFxiدR͠v{j CGPeǟdP]:tqJ-EyBR]mDڊ\Hc_)X1njq,i|"lDH<';-4]vAh.,a77SHPYn9]юԀщH=(;ȔPr 2^+S@BS qۅP:fz^#Cʉy\,m#RҠ5#WđkƨPωze;qTFlj#״wW[pmn'}6`?dN9+Q#k:*&@Oӟ44%]QaFyPGqg E@)I)l/ Ȩ<~XSGUu1qg|~kzDcÜXeM^QˊS 1J17#$ @-V04~7Ekj;06@%%m繏Mol;_%M ny ?(_6Ŭyl͍vkB2Ľ/: d gPIlub [<%>c[:HI4%W\FO#~At3{M9-h:lKLy&10eE ~6|zS›]4yO-JA^):ϱ!2j[!+!5`iBv"Ohq@5dבYfqa^t 8)hIc'{ѵ( a2MbZ5<\',{'ry[njgD-EAji)->PpC537RDXi'?k6hy]Q~E~4m/)Z =@miжNgAK*6mF/rE  C={M@xO]ľl;qiCHu8.TĿ30c!WEL #A%@3i&}%.ru kyQ|d'~ F{:cvpR=`TѲr޿dܩ(w));0Xw!w;`m54W XY@(5hjxo͛Q7([Jq ܎f7_M%ӂ Agry-]`-C跁/qմKUfnBeO~FB׵d9v$u30OfL \iVh_7Yl%3& Kx]a3Lm"$;Du[:]S!d,b-b>8DAj A]L w0>DU%ȿh(k/Β ׎S2FWaPѬJ hUtZh`=n?` Q̂>pg#QtIb`6!:NxB&h+ڐKEcq`2.:1;J37=JQ{;gL1'iXXXN }ew+ff: ! 7AN/W6.4%,#}l.p$V.YkkīTPJ]ȔϋՓA^[6At y\qUnuD4r *'+n%I |cOq`7գ(g@fP!v KS#li!Dgv4֘iDbl0!A$sbzmFW69p2S{-҃7^rʛ#G+T4WoƗo qatnGj}WfaRR'nOx>JRKFxT̨L*$!u7Zxʔ+^5Ϗ0miJ>T.k mWYtfDBMd#!j'ߗ (UdP`qyۃ&3>dM-.\ B}O-a0m5MSmm.ؘ!3 h;\3ӘYIVtn–͆1bJ.Hbpga VJlcsfKJ=YsHchܨ@_=Sm7,'SMjL]uZp&3*<}T*vxpүrAN& ctuIøT'c)e2}M;1%cQօ/?KJF7@􊵓 lyh2T~T{>nj0,^3֍>s~?}Fݧ#Q/`o2Z3^ 9ONNf^}^ ō露KˀWto, bq_u$bR7愀y8*6pjF%#?]J*r"8UW5^1}jūR$%e)"V]TWoxykYDn1|uB+z,ssoHj5L=GAyW:>o2z :4_zKGT[]|dBE1.A &Vpp"GpQfQk>:eD0:HV Uq{H)[51Ә{j)Kߌ92h0e`R(׬y^huƃ $ (fF0|[t1g!`"Dān}|1E]XBWVc?>'OpOqߓ>-O>I{{''W}E~OfOv>;}'O{'~>\}&/g|?wA|?%]o~ZMaf7Ӂrp? CÚ̶H3ˑ}xloq ' hˬ֤uJشӱ^Ͼ2`ol 1C7a|1 =)75x8SGK$nP4eNYRB#2-W?!zK=ChތC/46T/ֈ?5Ղ aXiHmCjĹ#/qf%QPwħqBtg--ɓx!w!#5_!SRv n'V|rޱa︯CqGk!#_jq/۽+oe3h/FVGt nzjk|֘r L L@>~t`opM%wP g&H1qGEq2K(5wG/fZ#Ox`k^}FhYр`xOjuu(f,`g47+"Ԡn\A >p4N/{9zRKXǑ(qOZ9ob`<\Y*2tz:r"ԆLs}EC3./;'`Rfb ƀ-QJ&9nK)ʫ r&_ȋ`(7p2b Ǐi62(AR(5Kl0,0HN``=0|eݐy\,?UW&P v"4>lfbDTM< y4F \Ls:NrWD-!>%}\Lqi~rฒї+'k_m 9;} fiS ׶echɋ&@Ydzk]OXr&nx !̍;Oj'0{m5M}̦\'F, :,1xBlDo wP|4k.< eZlֹ H+m6I%ԕ9h>gcx]\?GAd *=X>g38a{\+1}.vszfb$a= !zΖ/j$jr>CRPm() l/!!ڝѠ(LsWLpGrL@gNdySWsWy,-}+)~&of|EZPF߸쯬?#8x[?d^o1?kvȁjڍg-ξ"4l #. &ߞ >W4aO>7^[": | eo?QK4< j#mv`v%kZuR=g&&CsRuN[yeʒaҩuьeq=RFb0%]6RDdkIA]z˥)_a%Bp vkYe]CWNN:WMsz[N@Sb={2lJ",8skB/sx9I*ac)U5fƨuW3+IrBȟ ;Saq2o.VP˪:ť~~m֮1}J~(*[:3"jH?BmEU㞠󴭃rh<՗=h7m'ɟvccK+{GBNFiDe5z$~pn*n}Ϗd2?^_M;7kyf[2׹PN9pYoTg'"[C|5"aZcmyl[U4tkcF=2UuSbs2tY"}ϢO"/ ,[!dz"ᤓ]u=:('ybfZAh78^Ҏ֮z|b!QgD\Suw40*MqGv"%{_ƣ~іZC 9y\LW `0'7=^,-u ٓ|LDTP%ȊHWVb26e}:#)1]⯳d6##ܰTpt'g٤z(}i14 BN^ܽ8k+uG{BðGa|GDijK1B/'-xQsOD 3 }3|,~}5WMVum& d៚Bj/L,2[wIE'x\GLu[]`Aɷ4|3E0@k ^uUeq}6ixM>芋˶8;<]]t8F#}_Y@ IJc"36s6>J @SMQcPcQrV^sʤYWA8fr3jb~QLkvEc {j ͚C“mHZ%YAְ!VV-!m/K(uOH*'])l^{_iWq9i3nzR,Gs|[b&Mқr}(lIT$VfI8nR32~J{isRH[ 5$"91V"q#Td8O5w(Be](ӁF?O& s9=[OTef3ڏs/9Voyh܈*!LJOQQb.o@_*ޖzbQIJMM޶)_=@tog-)H=0U% /[ш-xUwlG*KNk^.Q;*I5t~Jt);]?fq,X}< — )xt֠8x?9"cC/xh@ىJtu af[ƫqa DE9#jF"oF]e0Kez1C.$ک}爳 9QZͯy9 ׼l}\ N7/&dmp|Nc?dcaENIT%^H7НjG'Rn|aQfzh1ƛDk3zK+YFLl/':@ݡͅYHk^t$17"BPm`Ǹ󰬖SMz{;[Ua #dj}80υͻ :Z,L&pM4SK896U%kv<#+q;*ڊ >c~AW,25Ujza,SM[ %9Ӭ (ƒ 5Ȥ l5"R@joNuHœL6xI0%j]qbsBn\ZF':< 0_P8^Pexsf~/fԔEs^g(#a&>€/X@,/pK޾RK8K%IrLj N8V$tBb}NwYQa8r=$л>mJH$ucCm8!o ]02R7sZٸGW1";N~΀"e_hߌ}eVІ Q|W?WjOQ%r|̡ ˆEe:^-DT}}߬i˽ͥt=cGmD!xOQ¿Yp طMk|÷r_^d1386!:yk9>[yH)J4-1ՊK:@،r4ܿJ..I݅8B{(x33K$v̛+H **7!o.%TZ,F0r1_U I\qCF=j8 YG%`q󝋴\_P;n2LLP;AHQEBN&2&n{w鉗7(P_)Jt5sNK=N9ϟ]!SY&σqjV]އ1AŚ^WQ7fM+Z[b1WIYr۟L&O{c/Jm7[벲t]ȄOjQ8Ǹ!!&׹2tp, "?@[()0@'Jo5IzԵjr[Z.w'؞#i $"2\xyĂr+Z=xlk IUcN}Ka+Z.qպ ^4\@bficAaVJBg/4|4f8!( Ȋ=pfmSsHj(qq=v5 ʕ&p9pZJʿ֌GpݸHGо 1|'7pu~\R1;leSvo+YB*d tp1y>Q2*EK՜tC $ŬlI24I2>qgTIo $>f3+:li+鸅$蹁유@}vwA)dV>iɪ ^H`>tlfUFt߼.r:yiZmy`aN]њM=S) NÙo]x8R}%'{ M!1 L3g~2^NUW˜؞*hAdEkp{YktQ:$[CmW媇[~AZ0X4BݾX_`bhzcp߳@!4YP1y?KX4|l\*>XjqC\+^sR|a|/i+@ح=X@ċTǒTkAkf;*< ggbz2*5HnVP'*!gy d9nB@ ?ŽKVS8]@.д{OGdž)%ʚZ2d+|\קYIZ 5k6 >xVn=ԛra\F-K-HUu32J TZ`^N>)o荫49຅LGl -< /ˈPs+=w+4fm3Ò@ڳZt+T?7?I _߂[,oGW)yyZN%TEaC1EN`bfrZc'ɵ.lкgbERw7fd|OU MwocK6ttlIXkW 7;4jު"˲UWŖ-^Dz8+QQAF%Y%($u IGIF#tlQPЋC*,[GOWCws.PTIxqZS#6b=٨[3e6 _6uɦH/ŸP)gvtR&y!T~`U1:E J˕Y Ϯ u&X2 oHCx*dkMs 6@\Sa%5o)}yS"3,z?Q>VOg(Ae'  iB~Ҡ10xؔybinen!ΞXgsJ"n,݄`AͥT 1X]4#=N! *}IpwTAd_@h:`w7+CƸZ:I3[lsg>Fa;;-vW`刺.ltuP@BY.2+5`4c#8ǹ.o#YS`'Ve.g=17":<;j 2xBBu?/xڧ.|0-T^v}R h ASeeqSY>D t7dXK)U-lzR38zٲ@$Ͱ v*%XIS|dl8? Nc _j5,}zeU/~y#<z<ܑE?J?Yu̷(SʧC(ڰ͑20 aKiJ_*Ė bt )LE R +c( ;46_C5BӰ㋝2lIan66m];)&sEb$:mFa]\6-3!(MߠkB-ONjG7b1m@u;R)QM7 {fC؅+&[Xx /x_΍fΆy~|Q3g8lO-H~LN"Rõ?`ی<2sC\͇/X0f;F9M m-d5wc-י_PulAz{nNLVKd햃RAz 24-$(g]$ҘxKٻ *sFJPf7` է0 ~ 52,8v\&ƟpHm Țh"z h[V)x‹xnİz@zLl !A3KhXI%Tu_6qB#Rv0'W; js'_c`t[7Oq9nSβ`Sjs4q[r~ ~a IjLӛ_H@ƫ 5]󼱎LE|"3FUS=!PבM.t9ztPpQu~VUPO1m?N4=!Ӊs^#sܹn6Upd)W79TS+;ԈG7Pp(Ow6.[5Sqà./r}90SrswAe-#W|xD3B+*KDsn?6Nc#nG] (ذ2Fdf2L`rH"&.^ݒAQ1K/>?0q$g6!57` >]dzfVPrqc oHRX  K}I9iLMa[i?h. 4"&m9݆t_[:SkA*k?-K?AV/ČiM{&䶾n3+u[H~m`h6R}ۜ:A#\1hukWT@ :\;flgMGW;cH70oeXx旍{,􊤙K ŏx9*[dSCZ~K[ڐ$ mC#]qQbO0:P ůKTʚ"pQe &hqd"mzNtwY(ۼpX#V v| \A$N<ϕ Jl}9Sm2^ f_4aD$kD Ⱦv.nX~#5a]BJiW3`DWN%~`xafsl PJYgg8(l,L0狃2 &9փd,tG""2ވb 9+NbVrr@e飫*~u[,NXnY`b/L).YEQreUz9mʸKf1\|io]{MqT{[Ky4f1DI1#ÚL/h$<]'nˆ>RAg3rU'yg.%q4垣P!k;J-n>@t?^GQde/"\D7B`YR.i!y#G,!?MݘXL*9 8A{kizR#|d8/n_%k!= :7e8 XIDI[il  E3=2To4c! &Lv #;)P%/DK|bo=}f B۽(d~-S}6-D\b x*8۞u-ǥ쎺x;Uإ2W\1h& Ï˻]'aVQNc\T H8$ݏ63 leڇ+&OSx=,y&GJl#<~AÒ.RҀ-dm̃+&†BSsb@Gjg`I 3lY#k{qv]P&\Qefs)NfG& H9f`Ѓ_Yawt"dVw 4 JJP(2Hu+X-~;PB>-M?Ǭ =*l9Yy7zeZG:L\R)@,Ǣh2ߩG3*U Io1?>u<m}"saXaS2u2,Z^+\VWde/~ͯ!?pENJ6a{Ow> Le` y Qt>pT#A ˵^{—w'ԭc4U}dO<'IQmpOh4oy7ޗT=3+-tAEI>;=KXJ.̅  u$`<2RSƢhTKo}`J@]zs-~]1KWH5ڑJDmP" id8vg4G-0Kocl%NL'lBma!Xa'U˵]iVŶ#Ga:\q/0%\FAr%d[t4ٮ2d864 L9. 1RvJDRp ){aܺ\/`{7@D,[ O_  O=釉X\tM]}' ۵`cZ~P]w(y +#x7,n>L E eHDq'=_wTd5Vu39SJ PmZ^9RX)=4J߂gU802)⇍}ѬDvfj.OqԢ,[./Br?'"Fd\ +$x^/F`7n7/J>? EK`&s Ccp;d/-2%c-G\ (09jHR%zmTj9Nܳ/!nW,^(JM /j,\͡{l(R8{-7A_8`I9P,vZG=mnMva:dv9}+#xVddX!f,}|o<5ps,7/"yf+%\O}-J9L{q͑Gm=a#Cg('|FmhHz}(3h6-u lL7~iijH=62%=T/)Fz/vm`<¿wHEIXRPv@pnZ#'c"$Upfє[ '2 y[}D %e}w?3+.g2{f$OF3ʿ"]Ro*O)Ӿ p22?]3OHfy%tB%iSbAF. rUDc`Y&1Eǁng4]$@b쟵8Ȩ>u~p娅J~ ʇUseMVxr\ B` V[^k(zFV*KZz| ɪl6IcAсkgPK2 R4cz[bکzln u> g#qF|.䰒i큗mvT3Z *Qsz=\9pxlA:-^Y;KY+bu I"H}{m@A9.Por`fFyl @4=ql{xHQΧTVlNo7!Z-ae2"./ul@#X&L dKiKfV s9E-$3L.e˯cu9E]S2Rqjq,%r7h,waC*u=PyWm$YZmNsoAZh}O: d$k~WE<}; a+W(ïE|mc0ځ ӟxv_" VE9;v5aSVY`"!qwIM$Gr{#b3#?ԩ;rCw QMZۂ;]o/j̽?>Ųb$Ͷ{,;o'df`K{A"Y.)9 sU(Uv.yټ%wR9k3ܻHaޚx-]=k׾aq& -Ӗ?6 G8sgXҠv:q>U\Zomhf4^6=9]ʊx1bE )0|Я1)\~ӓ0=-^co}|&>j֟#z UEJ~2w( AOG3$F7?%vge ٴEm#&OLk3V~3{F,HwI.v~` c!Pz w,9VhtMP7UQXcC3 P){dZyH\$!>IU,S J/it-o%̈?~FBurk-L#5ð|4OIL> dwu+c!c % n#: jE%D-ѼdK靡gid2"fډw8ImaM׍c uE]BRNXb5Km0~jE-C'`yKhOZUWM& ƺ1=-/#(A[$Uuɏ3*8W{K~ׄ}&/2RaUU5fFI1PX6Tk`MnPJ>j%#CΙKy׃ [W,ZX̅@bz?/r=fh2ѭ_TozԚiCx}!ߤ(E]_.UذYs$=-s\kaPlSuZyN-%[RT"7.U^aB\6uu &5Rԝ$KnU]K=T"[@9+|oky#sj4؈Sqαx IӔ՚.F'Hzd9_謽'FØ.cqS0p˨F;i+riPM43M\n-t_ n G}'1{r]o'q4aw*-|zw@.\NcڒSS)oxbXP1oʹ>?=N<)2|ky7@ƴO틘5TK[ΐW˺θ{48}]EIFlB߿mraG5 UŦ~RY.AȽySȼ;M7cQfo3 490> X 07bYq/b IR]}"}޳^  3+87g͓'W j1(NSpj\Ϝ9{[59u .FnƊ~}ڽ4 HΛct"8% h,.q|?0&n)Dn]'Y ۾Lb9=#+,R}'__<rƱa8M/>eO a2BKI?{!:zh2lzH`*dydS[TZC#& 9ج&SmޢEїѳ߸Vz5f*z]2.Ձ}jT81xm߽}c2%Uʖ޼/v4G26[,$Ϯf Bq48@j@})卆iG L\ L`5s5U'4;xI8qTOGb_W"ɶDdF=e[-g m^xqNX0aw.X-KxyBjx1Ɵ:hcz7.1j]WNּ ۷0H{7l:[/ T},lz.(H[^WLL\?T9 'ۚRObbgHԜk"mv2UJ_!4~x\M;?j҃EkYoe=ENpBi*{7͋1:6uBiUTkTu /#8400CcT.<Ќ^w:gVa)U i<+Rn QG ]%xZC. ʺGUe5Ahmߍ=GE=cY%#1O58׫ Z>'\;Kah+gfRܽ)-.'6bgZ#_] &7X..K#MQp@v1j6Ngir6a><10c+e]Hr.IJW(Ͽo675;Ǯ:AN1&%NJ[1]a vPFx N2땂} >8{KJ07dTae~r2QeZ۝놘G BK_cR;xŷK  !\_uoTvq eBbG@/Hjuv@Xa:te [y*Rز e<&z=,CyU濱I޸+JƩ,HHE%'E.ϣk68'P݆y(s(^fWՙ:~ *ͤ3vT:0j:[o6P(M\sm|t=%*iT1lEHFBJuf;ؖSCOI{a:G1E>rcF GE,qAWqui:TVEuEOϼFVEuܑ$Gѥ2[/At\i[qy]?t 9|s.3n4^R#yN͌΃ _LDYL9mL,=ҥ뜛gHwoU0\h8ߍG-np%C5oE~= ]eN抵am@*FMp,W>8EaNjU}>.tCsՂn˺+v)VQ+4w5/!)4f]L^:?ZuKb7&PJND_aljTTYUr^q0 ~dӒGzt9y"&&\S1&\Ϩw4'ap3`zW3; %m 2Jl*D^QMr):xP^&rP`щz.dJ hDՖEYFItG0MuPZg:{օ.vŘyԫF;{WHTNV \\ $!\uo[yY "ЫݷN+ysI?Dii@75Ͱ3jU3+ѵJ}p .Pg8G_6;J^fmP;{5ljͧɁj{ ,j$4KzqOtZ6|<4A MUg2+`R6ZxrovưqD"Y$sQl/aO[)9Fk~~>,5iůaQ3ظa4b1+G<*`##lkE&~]avr/3C4*E?IT|r[^G>]0|G*@Ez&!#m}/W\nȅ'>FĬ%_cz=z4)m:^ <9JFaK%[D>;W@/]x?IR*~|7 )ޗ3 [aeЙiYkHbK(֢֟\Kz͐'kZuiʻ/B1 e .0DCv kSZ/c6hWƷ+GS746DDT2U %0x <5̡'|=Ҁ {wX'>S?7q9BX~P&,~5UK58e-W@ZM8Wno )&A %h.@9T;y/]ItIs'Whr9E#6/2YX~m)Bq6/LHdD nyLVP t &NjT*>R!L#r]A]Q"yn p;? i@l'-{AOB.$ȗQh[,29򵃳og0ě.t6o_&4MLD ;wy?~ 3]p7p'YIX@`6gOY3 ѠwZdZvڂa;rZ-jq\ Aj.iL s4$TB(*A~SF A+zZ wla2} OCIB-Z NnBDqo|`3 zto6 z,(K ~ 6m5pPO=(\UUJ"ZPEqǣ3T/7<@o iZH(4]MG45Z}J>v^%pN>c[]뢼 gIU `tfGVfa|r×UKZH]v]vM^[lipq%y‚ =Dʷͳ>\㙇m:U"{p`Y +}R2(\ R' ӎ&] HtwwQ2uSxq)8:̉7Z=[$NȎ$K{`ծxM.f*?lZ0 ]Bx +ݕpЉL[w6'4GdGPo{VcS~Z/R5D9?`B9*d)`hʬõA1UЊ1S*)W0H ˨s~!Q2~T3Eh!kO@|sCNDҚK_~H,M'o^}Dw +_e8H7%' R7˛(ڀ_&A)8-ъKq-g;;a892,S:3C`6n^!ggA10D/3t~, |~5u*=r1zcD&$U.r*8[I/}vAҨL7q:ݾdzP` 2n~nO!/)iae0I 5ͣ VɜNߨ&LqsTxuwKwl,9s'}^#J^< C :W`dTXWllk#7Cͽ7m?]԰iH+Ց}%[o"Uxmt' {?ܑa\rw%j0 ݧNO"+3ˋ`?L$%9av~(mi/(svB 7*e&sᆬUMXrpKoӼU(!SIpxW@{GHDBss>' *.OV}m/cmrCmœ[&.!_Pp9Wi. z*Qp&LzY ;o&8ex =Pb5 $ *xSPN٭<8DEl=!!n xNHs_ "?0#o\#T)|&PY9{y!UtCZ.: +˻Մ*i;}w@++7_| {iΡEk`5U 4t](KxH3=q5P<@}*·5#ѢCW94,٧Ъa,% UDVk 'yʂϤ@nܹ$F2]Q8=ZҼ1Wh&Kru )YBdQ#?WGirpI0c.Bq̢A<ں ڟKpjj;"!O F9kF0ΚuKe4XIZ&O^o~qSH9?QhmHfk tNuwᰄF03_[zHMF %w &Ǥ (EY(K*-KZg+axJ=νb&!s2_!p% |1"dIMaN9ϖE : Bkơ88zB,e,vFpeϟZ'X'7Pi"D;Qb|Iy/ݯe ^rwz)(%7:7w1q1y X5_\N |bThܼ\{jҪ@(j-ʍY4o iss" KeO>lTä/o2rx IO? 2zQagP&ۚ$JyksE& ѝIj,'  @}\ߴB6.7y/8,/_MRҶ0Ϣ"Vѻ}8 UBN%KJe?kv=;_YrE t?oEp`_Zwۖۊ>w/"@օOW{ ~+lN!l\y_'NPөn;=*}3,td OKY HARAQk!sgڟI/QPO0$7OR.%K>A_}e:ͱd; 1|*q9ge,|38"DVMta*4䌗.P@ ; x Qぶi;4'ލѹ [L~W3 ^_U,)&<ߗ 36Ǐd5OO3y&jbmqc٦Y 6q4[4I(^zt7l[TK$)ȘF/ɵ CpvePH+{npݠ[;mkӺsǵB0Lq^n8UoOMBk"t+/.xQکdoTªBB]KGtm.z\ a,xKz0%{sj z7?~FNznbMԝX`E8B?] aD 0- oG/*U}pp;`:z2bD rB{9jJŢ,^3ȭoq{74Y _^L?&@U7uD\Y|arC$CAC},XUlgϟ)$>QwW e=h VG/c}z hnPY#J/4f|Y htSdD?&M`(:l3%%m3LyA!F׽6=۟ڶ13Cu[YtX>Ph<8fɘKU/"=2J9.M_t97OBe"ۦ>r{ײ&>)*=wb*s~I*`H*K@W%4$%Mn;޿ k  Ĉ_|mf;Gkӯ3 uO3&6 vk;&yCꃞUlޕ XiPhm~ o2-#dZ8 ʲw`X}u5>WSq"t;Sf/UkѠY:z˚嗠} F=@(h(ˉMٲ2$,.5?1gh)kYꩳ~HБj k<ڒ]3]]7ɿ>O"~R:m\j {Gu\%PWEuqdRo~78kMìՁrd& HMdXQ!ITL\OӨ( us-޳oŽz3 u{ l[;-r/2EMlh>L /a#UL>VUU 1$քcA eMձ&œom 5q 34NrҸORUTʬ3[v J%~v4w{ӌ ^YY(6_9R _YV$d$Tk&eAɲD uCZ]V9;⿩;e,(jtpo2 *5z0_ŀC]7bB.'̙#( pk Օ1otGW4ЍBݹj=='/JSj9fa/~EJK*8ٜq\#PreY, @t`w%6(bi8FͳО|D| 9Jm{L/EcY$IV?L( W~DɍYs!(*@i[tjP3vl)ɪ*XJV`%U7}ŔTv~ &Y 6|AZkm.Ψ w~Uk@m $g=iL#Ƶ 3R^b-nNk^<#gs? +EZ߸jÅi]:MoNvji#|Cr{Ƴ MN 8->#Km޷WLg$  IپT+,A\-(KX0{\! j<7RK4ǐ톫¡=D|zx {RdbhTT-va ^VUWy[mZc{{4Qb6n - 8k]7ֻr,\*)m`BOтPCT*h]mtϞ ֍i:e2VfBwCmc뿼!3TsCΉ텊ӱ!]b"Sř/1e_:3{4#dhY#W&yMa9=(CPRжWp H3LL#{l2!n!X&|z$ v#kANU];7V;BNʝzќt- [9tDEqh m V[/Lr͚ggGRsBL$o Ptw&gﯕ `uXH rĀv-yN&\KWq#bf#We{QX#>iN軠0~K L'wdopKƺKd*Xz\p?h"B2sEyTHİc= E/H a'f7᝭s~@]Y̱^*0^FNjé̚)r A3>sOp7MQ<$c3>C?u#܏!7&t5:eP2 D`|~?}NUt顲8EϔnzCy4H@[ʯd˪[![N0ƭm1_aE"R D7W(fIIPΩ$aȧVh(#(($ &78˽\NQ5N|anƃcZp'#Bd$WJyϞa} M܍|S%ޥb>]e|S+nIm ;bp``Atаn zV[%IϒC,@Yѽ v)4Z/ d|?kZ6dgI`LCesx T+t̐5Y^ =iv2{!pBM*z' n" O99,QF鏊MHk$~T&:11jKˁGߖfTK, I;<8] L֧8&Q³p-5Ԝh^[j6=b59qCgIZ-[WZ\ue'\C,5t`yՏNZfymܣ'(zv z(dn\耟NL7"D\4RuO-XQ~=~+~Ua!/M-ҿ܉/Ƕ|1ka.D#4pϤό'}X8.VX(8uZȦ@&sir,myVo* Y:~& ~t)ezyjVźIܖCAy.\BA*,#bC =Н'.&țf' DcJԳN0_&NbaY6Zçշqwf-^&$*]PtL*M H{.b=3?7_">$ uՙ.~^b NDwx( 7W ,\زX 3/XAҗ|RWdYKߗ-JȺ'lW"pNK/Y) 9ʟ}F3in@2ҡH䎦cHM#IdM=& ݸi,,OD5Κw:}SWKRCLS2"?;'pL6E7 /nNoZ$lBƑ;.8zJ|" N#`/T%z؉CVPԁ{cEu$?7ɿd~VD`~w,ŇF,zǫ oq78(6af:?z EnjÚx {fy{E:֥gy~$-x{$g8".YtbܔB*#G}ɊH=lF"99cݽ&Wq?25sJ$WD|DyN=+ەrVz݊ R3K-3-7*޹޲C/"}hQ MsXg|S#6AC _`ʽz:_Gw5C]E9| KE|l ?S(T,;d)>[52O$pkVH!pP?(J.|Vؾv}uGHhAYN3)y}j\̤O,&Eky-G71Itm=/fO_PS-L[U7KV̠WV:J"Z9gʫFb B>1*}U`lƕҢ7*)26^ )<,UCE@8Bo<8^#M 6} WrCY% ȦnAq"&6j2 diAT_›RQV*hx"VfYFZTM {_*ݑm݀}͛ﺼ-hb:mIg/֐dYo5C LDx. AyZ9Z1D8(EJl(OC9wC1+$(qYV7*~jS60Š!脇k=Eˢw[#P>fnWGZD[qج/V 29N5[ӛʗK)s%i-5뗩X)WdH[\F:wjfQpkVYP^W=Ot]S%&Ѓ/0ARޑ"}E{k vtm8 ~c_U 10cNVv O   Go ;% dGL/CYѴWae?g|OTYj;l-|{< E-b>?SOZܓmGyie3- /eLf  WYăqi*wX/=/+ ~?ңxSH)-R^@{֬]׀zHRV^YcA}~Rd8T ~U'}j7@SFIYn/B~k`"9۟7-۳.'+$ע2 ,^i…xQZ;`V79h$%t:ltK>􋅯^An4KR)Z{a:VrC {]㉙40,Q&Z? <΍wvT 08~kFC _( `MoYĀR)/ k@Y{hއ-ZƁ$FjuO2ѣGmf'Q~O52Yzc`!?74 @Q5@.aΒs*(f UGZ/D_wm.+kc?~n]y )BުRC $_v$שQ9|*ՋV-h$϶rƠ)y]%!U%v =)GM2g!Sd1[{:xݧWW? (7!ng&>r1qYyJ-ٛ9ߙ5 ~|ԕGOh2`L)_`u`kNHrތ#Sd N,~- ]"NI)s".4)'u Nĭ^@hjQCɷgCtxMigc7|;`?b8ڏ{gWtY q϶dGTHƙf'T7:d(A .̀8JR %U$Ng 5@񷴌hSD>=FMabX\C*e6׏/ LkV)(P-?)bc$ߜSLyDLvNmbC\ QarQE,A~DUVuT"۳ (ʃbP-xˤ?ä =I-FǓSJ뫌Y5Ùe7@We,;A>׼ ɴJ;`($5bF jVI0]XRi)iLvnq2<_pX{uTcp?Ui̪ BqBaW\-MpYJVV7[š_rWd @6a!)'IDL-ObjԹ< SRʸ*bHwqӓ83MKQw~A:l*yo`qӧ_i})mSK{]1{/04OuPPtJKjf3LvRy[&qy>H7۠&738⛹x7Hfp8*5s=%J"vbƽe͓Y\#E! N%!Hp% qDrCO+oڞ0 tѬ]-9 r\޾$Mta3$faeP$[I1,.@ft-~7(<]=`샿t NF4 U /AS5i_QkG~bRLIdde|P"E=0 bWI#%O<NZ[7N6tKZ.jT{yބ%˦K:ܺ kT߱*W膞!Geu +ᭈ)8(Εᛏe黥YQ3@fBpMըcKE̥XvZgo0zlRax_ BE&1$|$%=yC9p~Q%8 + UF'%{<[4a? xl%HTj4d *㌍x7<'B<}rn_zmMlBiP"H#)ۅ80roWZ$L>+kyB4q@zzERaMh ^70w*: wAxVj`b"Zs5'nɣU7ZCN: V&*fwu-G`%f"LHר\jńb:1ȹ713{2*A5D `A?PXu +زo}g&Z ҳ>hwZv(@HV,k#Z{er_3m1AqYKAW :hRKI$t,9wwIVN"fCjmu@AĮ_1{8#/4\ ^i" DΌF `7_{U;Ę+qr}yؐ_x2mz5n5xh戊|L_{ &M =e3Zt$KtUqHR .>;F#}f>(Lyn\Ҧl,*V5'[pm+mIV[n}wJwsџe5ܮNJ=iȨ\_y"ѱl w!VMe 8G yqRL^i*V̮n?hx($Am,8aӥldJF>ݢ}ӉY+'Sp&]ja|>-Kes!̹*kkNl(M *~hH ݁G|dD\Ol>&N.b ޟًp6':ct+D ޏ9u @:h|f4 WEZ3e\ U#OD!dF1=eLD}[1ړGn6Sb,s>@!_=@d͛:{W}J=nU}_Yp1{x*s i"'h򱝵\'](Ma|2݇XxLHAE F[TҬn@Ib1A&"b Zu-Jr45_]v$E9Jpi0J`ڌ'OV39^"QFč8 ϋ:QZBάkWv?8U'N*y|G%7}q*tA{HZs51TkW}kq05\SdH\ֿ f+;bc i&ClbBv YvHz\EDJ`[){)P:?R2D$ CIcYһ (aӸ*u_ l5/e ?uuN阹0I=9iTT#!.`"e#fLyuC㞘RC\u`̼++2޼DCHvyp2GjCe C6/67A]鈙}1OXD?Gꚼ)=I'QQQW^\-@f+l$Nh SO0b@ '?RխXs-n2\Fy#3r^ph h$w^Z 9 .^ (4d(c Zk-kg%) ψt¦K eMC2+vˆϨf2zp"{W`i:d w2;[-B/Ma" s&tz_"3]D'v`HK9J107.F7\z`!ӌ?Kl(Vn 0z&9>'-+~Cb avQtC]?ȽUzо׼D~bbhm&V#R|}!,ll+>lNQhp&tFkS@EB0g5N psޕi-_eY:kb| :Ҵ9FXk6N5QJB#RxR "u᝛ 9ttɱ0soG!<TgÜjgF6c|гPgYIzCʿ9I-0޵!OʊMk-H7!*»jf}= T6X-ϊG{*nh4zT c%yb jg3Df}R;8n C_NaM?QH0'擆$jgl y^ 0UFMEUuo& ~G sm:<^e: R@jS‡ȩiT:Dv:uymEv zۙ&2JZ(-P09zAuեv*;ixJ(YR{#ʅ 4='Ok9REQ1k4 /i%O+L[Q[V/4(g#u? gu);!o.v[P͸߼RN}\Q9ىlA@e4inr \k xH 0cAǽT(ןvo0AC@ /tf!&tVEឿ{cH-C)@ǡO29:T][vh .r.Oeiܽ3RiPWfAcZЕ\WOSW _`)a5BJ- M{IO5$^w圅 $I4{]I:RWA]IPV=狅$,f?4wT- a%sO5M4ku\ l⁧+2 M\>Q*OZ"љ["2zl݁]Ar׹>^)^S,؃uk+-F{l6׿o$hsUh &Nw,Z3fȥ'9t,2AUU\גK%`T^znb 2RP0Xm]&!@Z{uU{Fvшzv?/_Kw7n:>O|Q Tz!̮+#^ΚrUwA}v:aC7H|8q. =. \,M;P~1ד22V8].wc[i<z~N*$㱷4j՟IdS bKh! .|A,-v}U)V/cͅT^c_%g+bkez-yy._wǘ1 e΋+ހ`b?'sJt_'6d\bhO֮w|s4D!%Ƌr!ް+"/&)=xtxfua^ ZɃ#_vs$oZˍO :8,'1oUKY lɂ{?>(}yYCڑ]G38űjOnX(:m+BՍ<== N/@ClٱТC.t5~;욏6wd1BHh< 3o$)xQxter|)WAw8…yKhj sBHFbHM֍xHt.:jy4e&_ÔKc^}:ݶF΄Z7T?v8#P?FMEUi4{tN "x[5UyM oOj'Aʽ ͞4)ɰuM*h] .yed !&$ O.PgvMfQ7=. IsfOy>do-|YjS鞦GUc6زKY!Mt:(}nJǮGzK7x.5!֨ FDԞqbH{Il =]BʄE5xSlYfXM7hz6b͞.\aQD'ضTSmCΝ=H5ńvFG~pI_d7v(ٞmyHƶ<317E^8Á>O-Y((,Wp\aq%ʳb|OKHFg_;H|{mFj1 O冥f<;h,s \=z+;fX9hPސ9hk^ :=H&jot.7ȫ ѐظ@|aY@7.履cT4>}!\;! &z J߲ӤMK>t:3jgMh? b=Hf7[ ik]a5Nc}WNe|/UZ<ܐ|'KHDWJo6GeJ򻹭:S/VGM2 aM#_3G Ez+ͼcmsvصLD{4X`; t@e.ruec`duA H\i}Ze \7#Y)=[Ge/ykǻ-D"l()?VN\a2הX-SX%+Ve cY1 KcQ (J<:}3@omg?xmu}ʮ4-X1ߔ(P/aFV$0SjM,\'LUp vv:f>KpqtJN3~]DW8'i¿hN'GQ'gQ@4 OS9,!F=kLiԓq"=CQ6e*/!mCX"?Kqc>d |>#&L.#Ҿu$X=WۢSM(aV~uB!}ۺP_;(N imIj0'ѝj YBDNtPO?AWiMbc3@~XVag;1Q[.(&_+,ٞK-V` 20Zx1΅NyU,hT6/Ҷpn_ODzB~DѶhI G/A3whD1 anOBsc?{۫3d&9|bL&v֘1dn8#vRɶEER% 7t*ӖP]F{l/)i "|LU6Yo.E.7%JfNL8#4qtQ5>oG[ЛfxTw{EYdݯSTҎ33*Xroך8h^>"Lx#za̼O^!':4 iv -=9{Pһ *јazr)L#h('M* s1Z53ʔ=Sd:>2}, hהHʧ#Ɲ $=_q$r-:;ƄfG?]㡚`M5aLvt*l &:9I5ѱñqiWBycVʜhfx3dԉɷ.O¡-z[ Sҗ'')[X])AD]5N|W*J[+E99bRp &l6ρ-."|؂܀"\\z_,D H‘IX8C*~l6o\7"AyF'2]"K]U=qW񯷤jc(T*帔]xj?3Zx'CfX- F.gq3)C5{Ӳm.0iQp],{'fYƂbvc bSR5 @eGlaWכܱwQ=t;gIOOOSzRPQ#e^&s&YtgT&Gݚ01>ci|Y$$t!k3CO~Z?/Pb2AR'Uh#Ja3nLҩ6.üG}fs^v=y[ՀI5=k{WmLSi?BZ گe8en0/5E5&;pm}7QaO3:b-Mz)E_ R8xC(Q`OH?Ͳ[Du&t=-yWR0f0w! ۖXMOɉ&~o*0$/eZ =udݩ›fU)? q"sZ<&g)0s^6 VȐÁ vXk2uiFhM5|hVSKw )+?jh8WVc8"T}RXYACgfyfwb?nщfe&@rVYgeu# 9RޗXW(\ds̲cug4 zSVAeU\=&t_:?Kĭe|QL_O_i&?yRӝ`0Wlii#\&-;ͳUy5[śrJM^"xG<Ln<;!T~[S_6~Nf)?d47⒈-P5nD~22ǘB)2JmrfSk'fiJ}2S@FҪ{UW;s'%@pp_ W"d6()XmSj/iU欄G9~5uk10)I:rL?'Z "c$%*fFxF= e.6,U%;-O'W'$7Ukfz1YqJ_[,xLE:nS-7`yEtjNcg8W|eny>}7%'w7f@kKJO]j'6N~cQ?{oL 5<(M̮ܵ6r^6B"9`gd%t;Z9 y֖qU">;_2i;6{߶s~.jh8=MLuχ.:Ah a5 6qH?eصn1V+za!4#4 ”z?g܅-F^)+f \ZmM;N&#JR#NH6ch Aܶ%TZKaWވV}2op /nnUr]640qC98 JVɹ*}F/S)Jp)j9XR]tfMl~(c4_NE7y!+t[(OuvH)ы$̴߭NJL7Si5WAcSȐVvA#F1z&.062ڬښZTdf!/s4h8U sև$gsI}M?]M`@S}%4ApF:;Y1с \)z#Hwdkŗs.< !n S(Cʄ{K^<7.`8;:$!.")?a88R=U󀨰D{ 5W$A##v.LMo:̻`@-O#Ԝzf52oilͽclR&G@A]r`|OT|L>leNojNܮyWV|czҎ3 lv:Dhx'UaCKE"eY 6WmgmlM$ tf3f30TIbHmFvwH4g4X TiaQR{t$Hu2Å)'KۅM1S6+okٻFmm:nT(= isF#s$WIe_xӶ "Aƨ|q ,& Tw.Bقɟ 1E1"@Gו\y-)v#HW!E,s(yl Rf0wx7V+9be!GE(:|gG ݚ7CJ z %C#M*٘ؾDqbj=1盧ŀ4/N?/_!S"'7^jgVuO}S&Q]]0@ËH̤_Ja )GwFhve!(/Z_zbqv-!˾|B@Ncj3?Xb;tJ'"B|N&]{ƶQ_gڃS=3e.&FmCƃj%!HI"&gzSt2[B w} b{X7I˼>A#pഘ%Բ9NnE 1"jOM4ma z/f!Л!bc`ɸh\09&t((CH7E*Ġ\ˬJ|(HN|QIvsA턻 gBUF;XcJd y3<|=[nwPll1𳌨HRAa$8'\!TP0xa {˘:׈C:-yz~&3<}>ɓܲOgdfil65-*%_ έ~Oy9THdZ- fW!q &WI쾴Rnz`; 1>>ŠktnZi")"{)~ 1)3V* lPG}LM=yeP\c飃T+3F|V3o4C\`׈[튟0nJd֋R/c-K^He {7+p @Kj9h8JyČˈ*VQU ^,+\;Ԏ(1~N vKCcm}wVtrcJTླྀZT9ة|FBWa ?}mzW>mJb`W2&sw0ji==kmEBVxTe-y\?X L"KG$x>hvpvR~CЍ)1YF3[#=b^tE0-zđZ_}HgDZatW_VJ]R*"tm<;ު%͛1(fI;y6@m*=@Y<7RD>[r F“ez-h\r"ݲ᧫/L MQ@Ta \?~U[·N*}qt?YYY%Bt'}xD Mv9,aN˛Q9NlNTI8يdg# R`gBhp* :~zbcŞ̔'W[`Y1~V\DPIȰXT[$D|Kh[% \$Qgׯmt{ Gܱ |⨞`rXhBۑ.)x:nоhCxgyMOdӎ,#5ȪZt; Pi5!(ڿh#CŌH`,W߭خjAX:c]SB9"4;.(l(\Us$I\qr ~[k%!h )#p:j5fUyJg;"Y.I9=]p/3 'r=xI(QM;Œn _ 31Y'RVd:pwv־Z!ܷc5*k~Fc+Lr$vlO->Oϓmj-}s":9uS'˾&}8VsT)/u&g~[dP2Vi>bQc+I)jX6ND*[A\eg4i@Սױ*G1G߯3} Հ1'Vb,CXo5y0K).+(՝cYd^'P8iZE Jxf@km f[S#@i@4GOHGd7R\ea+K~W{ sJF 'd (.!GGB-)tKc ^4dʵ>= >^zq9m_Tb߈EUIDG5~]idX;sa#80(=#nR]2O M q;L"I) y_ۦ v%-Q=ˆvJ =yLC}]Y~ hb<d%&Nݰ@7g#xゲ#adibDX]Y~TY׳}}5;.4+X9A:GOl&D6ۗv42%>2qŰoƌ$y@T(V5y;/rE+PZh-"}y1 H$û1C[ΰw*mI5VW- _v-_6+j-rln'?Qo p["ԼnECƊtv6{4?Kߘ/0H.eѐ#L`! WF؟T;{lUlu3It"KKE@lwGvKHݩwQ^܇EcE FfTxU})߸Sچ[prB0fƵ[OY71޶Or3u k9^^Mw:=ꦢֲRWPx8п~H\D `K{*2)>UꃿuǷ@@a :V5 .(TP~O2觽Ũz 3ce /Y* mD}1dTDkǔ y|IXOHc")뇑4LcHQ#~,3MpUAj]0{t0q4R-P&Mdu%{㞥Ī\u $)oLڑmov'N#o icnV Bmerkaartor-0.18.1/Icons/move.xpm000066400000000000000000000012271177067165300165360ustar00rootroot00000000000000/* XPM */ static char *move[]={ "22 22 3 1", ". c None", "X c #777777", "# c #0000ff", "......................", "..........##..........", ".........####.........", "........######........", "..........##..........", "..........##..........", "..........##..........", "..........##..........", "...#..............#...", "..##.....XXXX.....##..", ".#######.XXXX.#######.", ".#######.XXXX.#######.", "..##.....XXXX.....##..", "...#,.............#...", "..........##..........", "..........##..........", "..........##..........", "..........##..........", "........######........", ".........####.........", "..........##..........", "......................"}; merkaartor-0.18.1/Icons/remove.xpm000066400000000000000000000012121177067165300170570ustar00rootroot00000000000000/* XPM */ static char *remove[]={ "22 22 2 1", ". c None", "# c #ff0000", "......................", "......................", "..###............###..", "..####..........####..", "..#####........#####..", "...#####......#####...", "....#####....#####....", ".....#####..#####.....", "......##########......", ".......########.......", "........######........", "........######........", ".......########.......", "......##########......", ".....#####..#####.....", "....#####....#####....", "...#####......#####...", "..#####........#####..", "..####..........####..", "..###............###..", "......................", "......................"}; merkaartor-0.18.1/Icons/reverse.xpm000066400000000000000000000013031177067165300172360ustar00rootroot00000000000000/* XPM */ static char *reverse[]={ "22 22 4 1", ". c None", "X c #777777", "# c #000000", "| c #777777", "......................", "......................", "......................", "................#.....", "................##....", "..........#########...", "........############..", ".......############...", "......###|......##....", ".....###|.......#.....", ".....###..............", "....###...............", "....###...............", "....###...............", "....###...............", "....###...............", "....###...............", "..#######.............", "...#####..............", "....###...............", ".....#................", "......................", "......................"}; merkaartor-0.18.1/Icons/rotate.png000066400000000000000000000014631177067165300170500ustar00rootroot00000000000000PNG  IHDRĴl;tIME$o pHYsuulgAMA aIDATxڭT]HTA>ݽIH%ciK`OAFZbBR EZC "B&FP>c{f:WwuU339swp״d11ܾՈ5LqhW#FыԹ9_.ua)bbߺ5hQUȔ("nh!erE|y%LU@JFjXJ^&Jf.8Bjti7 +2u5Qs .{ccugqP%PlB)D _ȆbHt#!&s`gyr8Si X&=<NPxΫ3qϹ$CG$ j/VqDX]Dj%)vSv6 c8RG7݅ begin='' id='W5M0MpCehiHzreSzNTczkc9d' 2004-02-03T21:29:12Z 2004-04-17T21:28:35Z Adobe Illustrator 10.0 2004-02-04T00:12:54+01:00 JPEG 256 256 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXzN59/Pfz7pH5iaja6fcRR6Zply9smntFGySLGeLGRyPUqxFfh YU7ZrMuqmJmuQdHn12SOQgcg9c/Lj84/LHnWFLdGFhrYH73TJmFWoKloX2Ei/wDDDuMzMOojP3ux 0+sjl8pdzPcvct2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KviH80//Jj+ZP8Ato3H/Jw5pc31n3vL6r+9l72MQzzQTJNBI0U0TB45UJVlZTUMrDcE HIBpBp7z+V//ADkhLB6OkedWMsOyQ60oq6jt9YVftD/LUV8QeuZ2HVdJO203aFbT+b6HtLy0vbWK 7tJkuLWdQ8M8TB0dT0KsKgjM4G3bggiwq4UuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV8Qfmn/wCTH8y/9tG4/wCThzTZvrPveY1X95L3vSPyu/KDy955 /LGWeYmy1qK9nS21GPfYJGQkqdHSp9iOxzJw4BOHm5um0kcuLulfN5d518heZfJ2pGy1q2MauT9W u0q0Eyj9qN/1g7juMx54jE0XCzYJYzUk1/Lj82/Mvke6CWz/AFzR3atxpcrHga9WjO/pv7jY9wcs xZTD3Nmn1UsZ25dz6w8j+f8Ay35z0wX2jXHJ0A+s2clFnhY9pEqfoYbHsc2MMgkNne4c8cgsMjyb c7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+H/wA1P/Jk eZf+2jcf8nDmnzfWfe8xqf7yXvfQv/OMX/kt5f8Atoz/APJuLM/SfR8Xb9m/3fxema7oGj69pkum avaJeWM4o8Mg79mUihVh2ZTUZkSiCKLmzgJCiLD5b/Nb8hdW8qCXVtEMmpeXxVpNq3FsP+LQo+JB /OBt3A6nAy6cx3HJ0up0RhvHeLzfy/5j1ry9qkWqaNdvZ3sJ+GRDsR3V1Pwsp7qRTKoyINhxMeQw Njm+rvyn/O7RvOkSadf8NP8AMir8VrWkU9Bu1uW+8oTUe4BOZ+LMJe93mm1gybHaT03LnMdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirH9Y/MHyRoxZdS1yzt5U+1D6yvKP+eaFn/DKpZoR 5kNM9RjjzkGK3n/ORH5XW5Ijv5rqn++baUV/5GLHlR1uPvcc9o4R1v4ID/oZr8uf99ah/wAiI/8A qrkfz0PNh/KeLza/6Gb/AC4/31qH/IiP/qrj+dh5p/lPF5u/6Gb/AC4/31qH/IiP/qrh/Ow81/lP F5u/6Gc/Lj/fWo/8iI/+quP5yHmv8pYvNr/oZz8t/wDfWo/8iI/+quH85DzX+Usfm7/oZ38t/wDf Wo/8iI/+quP5uHmv8pY/N81+d9ZtNa836xq9mHFrfXcs8AkAV+DsSOQBND9OYMzciXT5piUyR1L6 U/5xh/8AJby/9tGf/k3Fmfpfodz2b/d/F6JqurTWN9EAOcLJV079TuDmv1/aEsGUdYkbj4o1WqOL IO6kxtbu3u4fUhYMp2I7g+BGbLBqIZY8UTbmYsscguLw383f+ceLe+E2ueTYVgvt3udHWiRS+LQd FRv8j7J7UPWGXBe4cDVaG/VDn3Pm9he2F4VYSWl7ayUIPKOWKRD9DKykfMZjcnU7gvpT8mPz+j1d oPLvm2VYtUNEstUaix3B7JN0Cy+B6N7N9rLxZr2Lt9LreL0y5973TMh2TsVdirsVdirsVdirsVdi rsVdirsVdirsVQeraxpWj2T32qXcVlZx/anmYItewFepPYDfIymIiyxnMRFk0HifnH/nJ6yhL23l Ox+suKgahegpF80hBDt/sivyzX5e0ByiHVZu1QNoD4l435k/Mrzx5jZxqurzyQPWtrG3owUPb0o+ Kn6QcwJ55z5l1eXU5J/UWMZW0ptZeT/Nt+vKx0S/ul/mhtZpB96qfHLY4pHkC2xwzPIH5Jj/AMqt /Mb/AKlvUP8ApHf+mT8CfcWf5XL/ADS1/wAqt/Mf/qW9Q/6R3/ph8CfcU/lcv80tf8qt/Mf/AKlv UP8ApHf+mS8CfcV/K5f5pa/5VZ+Y/wD1Leof9I8n9MPgT7in8rk/mlr/AJVZ+ZH/AFLWof8ASO/9 MPgz7iv5XJ/NLv8AlVn5kf8AUtaj/wBI8n9MPgz7k/lcn80tf8qr/Mj/AKlrUf8ApHk/ph8GXcv5 bJ/NL6U/5x50LWdE8hSWer2U1hdG+mkEE6FH4MkYDUPY0OZ+niRHd3OggY46IrdknmyQLewj/iv/ AI2Oc927/eR/q/pcHtP6x7kptNSntZRLC3Fh1HYjwIzVYNRPFLiiXBxZpQNxZfpWtW2oJRfgnUfH Ef1jxGddotfDOO6Xc7/TaqOUd0u55/8Am9+Selec7aTUtOCWXmWNfgn6R3AUbRzgd+wfqO9RmVkx CXvY6nSDJuPqfJWsaRqej6ncaZqdu9rfWrmOeBxQqR+BBG4I2I3GYhFOklAxNHm+gPyK/PX1fq/l TzXcfvdotL1SU/a7LBOx/a7I569Dv1yMWToXaaPV/wAMvgX0LmQ7N2KuxV2KuxV2KuxV2KuxV2Ku xV2KvOPzP/OnQ/JqPYWoXUfMBX4bNW/dw1HwtOw6ePAfEfYGuYmo1ccew3k4Oq10cWw3l+Ob5g81 +c/Mnmq/N7rd49y4J9KL7MUQP7McY+Ff1nvmmyZZTNyLoMueeQ3Iozyd+Wvm/wA3Sf7iLI/VQaSX 059O3U/65B5H2QE5Zi0858gzwaWeT6Rs9u8rf84y+WbMJN5ivJdVn6tbQk29v8iVPqt8wy/LNjj0 ER9Rt22LsuA+o29P0Tyd5T0NVGk6Ra2bL0ljiUSGnjIQXP0nMuGKMeQc+GGEPpACbyXEUYrI6oP8 ogfryUpiPM0zMgOZUG1bTV+1dwivjIg/jlR1WIc5R+YYHUYx/EPmGv0zpX/LbB/yNT+uD83h/nx+ YR+Zx/zo/MO/TOlf8tsH/I1P64/m8P8APj8wv5nH/Oj8w79M6V/y2wf8jU/rj+bw/wA+PzC/mcf8 6PzDv0zpX/LbB/yNT+uP5vD/AD4/ML+Zx/zo/MO/TOlf8tsH/I1P64/m8P8APj8wv5nH/Oj8w79M 6V/y2wf8jU/rj+bw/wA+PzC/mcf86PzDv0zpX/LbB/yNT+uP5vD/AD4/ML+Zx/zo/MMU83X1tNew tBMkqiOhZGDAHkdtq5znbOSM8gMSDt097pu0skZTHCb2SL181DrrXxXkkUiyROUkQ1VhsQclCZib BohMZmJsc2a6B5li1BRBOQl2o6dA48V9/bOr7P7SGYcMtp/e9Bo9aMmx+r72Lfm7+Umm+etN9aHh a+YbVCLK9IoHA39Gam5Qnoeqncdwdjkx8TbqdMMg/pPj7V9K1HSNSudM1KBra+tHMdxC/VWHy2IP UEbEZi1To5RMTR5vpz/nHv8AN+TzDajytrs3PW7RK2Ny5q1zAg3VieskY6n9pd+oJzJxzvYu30ep 4hwy5vbMtc92KuxV2KuxV2KuxV2KuxV2KvGvzp/OxdAEvl7y5Mr62fhvLxaMtqD+wvUGX/iPz6a/ V6vh9Mebq9druD0w+r7nzSq3l9eBVElzeXMlABWSSSSQ/SzMzHNQASXRbk+b338tP+cereFItV85 KJZzR4tHU/Anh67L9o/5ANPGvTNrp9DW8/k7nS9mgerJ8v1vbudjp9oqj07W0gUKigBI1UdFUCgH sBmfOcYRsmgHaylGAs7Bjeo+frdCUsIvVP8Av2Sqr9C9T+GaXUdtxG2MX5n8fqdXm7ViNoC/ex67 80axdE+pcsin9iP4B/wtK/Tmny9oZsnOR+GzrMmtyz5n5Jc1yzElmJJ6k7nMMm3GMra9f3xW3ev7 4rbvX98Vt3r++K271/fFbd6/vitu9f3xW3ev74rbvX98Vt3r++K271/fFbXJdMjB0YqymqsNiCO4 wgkGwolW4Z/5Z8ypqcXoTELexjcfzqP2h7+OdZ2dr/GHDL6x9r0eh1gyij9Q+1gX5+/lbH5n0Vte 0uH/AHP6ZGSyoN7m3XdoyB1dPtJ9K9xTYZIXuz1mn4xxD6g+WNJ1W+0nU7XU7CUw3lnKs0Eo7Ohq PmPEd8oDp4yINh93+SfM9v5p8qaZr0ACrfQh5IwahJVJSVK/5MisuZQNh6HFk44iSd4Wx2KuxV2K uxV2KuxV2KvMvzu/NIeUNHGnaa4/xDqKH0D1+rwmqmcj+auye+/ahw9XqfDFD6i4Gu1fhRofUXyl HHeX96scayXV7dSBVUVeSSWRqDxLMzHNIASXnQDI+ZfUP5SflHY+U7SLVNSRZ/McyfG5oy2yuN44 6VHLsz/QNuu70ulEBZ+p6LRaIYxZ+r7maeYPM9lo8VH/AHt04rHbg7/6zeAyOs10MA75dzPV6yOE d8u55zqevX+pT+rdScqfYjGyKP8AJGcrqNTPMbkXm8+pnlNyKC9fMdot3r4rbvXxW3evitu9fFbd 6+K2718Vt3r4rbvXxW3evitu9fFbd6+K2718Vt3r4rbvXxW2VeSdGuLm7TUpC0dtAaxkbGR+lB/k jv8Ad45ueydHKUxkO0R9rtuzNKZS4ztEfayTzr5v07yn5bvNbv2HC3WkENaNNM393Evux+4VPbOm JoO9y5BCNl8MXdy9zdTXDqqvM7SMqDioLkkhR2G+YzzxNvtb8j9Bu9D/ACw0S0vAVuZY3unjIoVF zI0qKQe4RhX3zIiNne6WBjjALO8k5DsVdirsVdirsVdiqW+ZNf0/y9oV7rOoNxtbKIyOB1Y9FRa/ tOxCj3OQyTEYkno15cghEyPIPiXzT5l1LzLr15rWovyubt+XEfZRBskaf5KLQDOeyTM5GReVy5Tk kZHq9x/IP8tUsbSPzbqsVb26X/cXEw/uoWFPWIP7Ug+z/k/PbZ6LT0OM8+juOztJQ45czyem+afM 8GiWdRR7yWot4j+LN/kj8cnrtaMEf6R5OTrdYMMf6R5PKbrUbi6uHuLiQyTSGruepOcjknKcjKRs l5WeQyNk2SpevkGFu9fFbV7SC9vJfStIXnk/ljUtT3NOmTx4pTNRFlsx45TNRFsis/IHmCYBpjFb A9VduTfcgYfjmyx9j5pc6i7DH2TllzoI8flrdUFdQQHuBGT/AMbZkfyHL+d9jf8AyNL+d9jf/Ktb n/q4J/yLP/NWP8hn+d9n7U/yMf532O/5Vrc/9XBP+RZ/5qx/kM/zvs/av8jH+d9jv+Va3P8A1cE/ 5Fn/AJqx/kM/zvs/av8AIx/nfY7/AJVrc/8AVwT/AJFn/mrH+Qz/ADvs/av8jH+d9jv+Va3P/VwT /kWf+asf5DP877P2r/Ix/nfY7/lWtz/1cE/5Fn/mrH+Qz/O+z9q/yMf532O/5Vrc/wDVwT/kWf8A mrH+Qz/O+z9q/wAjH+d9jHfMmiyaHdRW7zicyx+pyC8abkU6nwzXa3RnBIRu7DrtZpTgkBd2Eo9f MNxLd6+K2yXyn5XuNXkW5uAY9OU7t0MhH7K+3ic2eg7OOY8Utofe7LQ6E5TxHaH3vRL2/wBL0TSZ bu6kSz06xjLyOdlRFH+dB1JzqoxERQ2Ael9MI9wD5D/Nn8z73zzrfNA0GiWZK6daN132MslNub/8 KNvEmmUrdLqNQch8k4/Ib8rJPOPmFdS1CEny7pbh7ksPhnmFGS3HiOhf/J27jJQjbPSYOOVn6Q+x AABQdMud07FXYq7FXYq7FXYq7FXzx/zk750Z7qy8o2r/ALuELeajQ9XaohjP+qtXPzXwzVdoZdxA Ol7Uz7iA95eZ/lZ5NPmvzdbWUqk6fb/6TqDD/fSEfB/s2IX5VPbMXTYeOddHB0eDxMgHTq+sry8t NN0+S4lpFa2yVIUAAKooFUfgBm7yZIwiZHkHpMmSOOJkeQeJ6zrtzquoy3s5+KQ/AlahEH2VHyzj NRnllmZF43Uag5ZmRQX1jKGi3fWMVtmvlTyJPfIl7qnKG0ajRwDaSQeJ/lU/fm50XZRn6sm0e7vd zouyzP1T2j3d70S1trDT7X07eNLa3jFTSigADdmP6yc6HHijAVEUHoMeOMBURQYbr353fl3o7tG2 pfX516xWK+v/AMlBSL/h8hLUQHVoya7FHrfuYy//ADk55RDHjpeoFexIgBp8vUOV/m49xaP5Th3F r/oZ3yn/ANWq/wDuh/6qYfzce5f5Th3Fr/oZ3yn/ANWq/wDuh/6qY/mo9y/ynDuLv+hnvKX/AFar /wC6H/qph/MjuT/KUO4u/wChn/KX/Vqv/uh/6qY/mR3L/KUO4tf9DP8AlL/q1X/3Q/8AVTD+YC/y lDuLv+hoPKX/AFatQ+6H/qph/MBf5Sh3F6D5E886f5y0RtXsYJbeBZngMc/HnyQKSfgLCnxZbCXE LcvBmGSNhiv5py8dYtB/y7/8btnOdt/3kf6v6XQ9tH95H+r+lhX1jNM6a2a+UPJE19wvtUUx2X2o oDUPKOxP8q/rzc6Dswz9U9o93e7nQdmmfqntHu72farrGkaDpMt/qE0dlp1olXkOyqo2CqoFST0C gVPbOjAER5PQkxhHuAfKX5rfm5qnnW9NrBytfL9u5NradGkI2Es1OreC9F/HKpSt02o1JyGv4UB+ WH5Ya1591oWtqDb6ZbkHUdRIqsSn9lf5pG/ZX6TtjGNscGA5D5PtHy55d0ny7o1ro+kwC3sbROEa DqT1Z2P7TMd2PjlwFO8hARFBMsLJ2KuxV2KuxV2KuxVZPPFbwSTzMEhiVnkc9AqipJ+QwE0gmt3w t5s1+fzB5l1LWpq8764eVVP7KE0jT/YIAv0ZzuSfFInveSzZOOZl3voH8gfLS6V5OOpypS71h/WJ PUQR1SIfT8Tf7LNtocfDC+93vZuHhx8XWSv+a/mAqbfRompUevdAd+0an8T92a7tnUcsY95/Q4Hb Wp5Yx7z+h5x6+aB5+3evits9/Lnymt6RrF+nK1RqWsLdJGU7uR/Kp6eJzddl6Hj/AHkuXR3fZWh4 /wB5P6ejNvN/nHRvKujyanqklEHwwQLQyTSU2RAe/wCrvnQZMggLL0GbNHHGy+XvPf5peZvN1w63 MxtdLr+602FiIgK7GTp6je7fQBmsyZpT9zoM+qnkO/LuYzpmkatqtyLXTLKe+uTv6NtG8r08eKAn K4xJ5NEYGRoC2WRfkl+aksayL5enCt0DvCjfSrOCMuGCfc5A0eX+au/5Ub+a3/UvTf8AI2D/AKqY fAn3J/JZf5rX/KjfzX/6l6b/AJGwf9VMPgT7l/J5f5rX/KjPzX/6l6b/AJGwf9VMPgy7k/k8v81r /lRn5r/9S9N/yNg/6qYfBl3L+Ty9zv8AlRf5r/8AUvTf8jYP+qmHwZdyfyeXuYXqem32mahcadfx GC9tJGiuISQSjoaMpKkjY4KpolEg0X0v/wA43n/kHsn/ADHz/wDEI8ysP0u57P8A7v4r/wA01nm8 wWEECNLNJbgJGgLMxMjbADNF2xEyyxA3NfpdT2zEyyxA3NfpTfyh+XsVnwvtYCy3Yo0drs0cZ8W7 M34fPMrQ9liHqyby7u5ytD2UIerJvLu7k984edtA8p6U2o6vOEXcQW60MszgfYjXv8+g75uCadtl yxgLL5S/MT8zNd87aj6t231fTYWP1LTkPwRjpyY/tuR1Y/RQZRKVukz55ZDvyRP5XflPrvn3U+MA Nro0DUvtTZSVXofTj/nkIPTt1OGMbTg05yHyfZPlfyvovljRbfR9Htxb2VuNh1Z2P2pJG/adu5/h lwFO7x4xAUE1ws3Yq7FXYq7FXYq7FXYqwj86dZOk/lnrcytxluIRZx+J+ssImp/sGY5j6qVYy4mt nw4pfJ8c2drLd3kFpCKzXEiRRjxZ2Cj8TmjiLNPNRjZp9pabZwafp1rYW4pBaRJBEP8AJjUKv4DO jjGhT10IiIAHR4D5m1r9Ka9fX3Lkksrekf8AitfhT/hQM4zVZfEySl3l4bV5/Eyyl3n+xLPXzHce 0foNhLq+sWmnRGjXEgVmH7KDd2+hQTl2nwnJMRHVu02I5cggOr6BU2Olab1W3sbKEksdlSKJakn5 Ab52cYiEaHIPdRjGEaG0QHyV+Yvni883+Ypb+QstlETHp9sTtHCDsafzP1b+wZq8uQzlbzmpznLK +nRlP5Ofkvdec5v0rqnO18twsQXX4ZLl1O8cRPRR+0/0DetLMGDi3PJv0mjOTc/S+p9C8u6HoFit ho1lFY2i/wC64VpUjbk7fadvdiTmxjEAUHeQxxgKiKTHJM3Yq7FXYq7FXYq+GPzX/wDJleZv+2jc f8nDmFP6i87qP7yXve5f844tT8vpP+Y+b/iEeZGHk7Ts/wDu/i9MNram7F4YlN0E9ITEVYJUniD2 3OT4I8XFW7l+HHi4q9TBvzJ/OLRPJ8L2kHG/11h+7slPwx1GzTsPsj/J+0fYb4JTpo1Gqjj25yfM HmXzPrfmTVJNT1i5a5uX2WuyInZI1GyqPAfrykm3T5MhmbL0L8ofyI1XzjJFq2sCSw8tA1ElOM11 T9mGvRPF/ur2nGFuTp9IZ7naL6z0fRtL0XTYNM0q2S0sbZQkMEYoAB+JJ7k7nvl1O3jERFBGYsnY q7FXYq7FXYq7FXYq7FXjf/OUV8YvJOnWimhudQVm90ihkJHT+ZlOYOvPoA83WdqS/dgebwn8rbIX n5haFERXhcien/GBTN/xpmBpo3kDqtHG8sfe+qdU+tNpl2toOV00Mgt1J41kKHgKnp8WbrKDwmud PSZgeA8POjTxP/lV3nf/AJZE/wCR0X/NWcx/Jefu+0PI/wAj6ju+0O/5Vd53/wCWRP8AkdF/zVj/ ACXn7vtC/wAj6ju+0Mu/LbyRrOjavPf6tCsdIfTt6Or/ABOw5H4SaUC0+nNh2boZ45mUx02dn2V2 fkxZDKY6bLfz88wyab5INlC3GbVZlt2p19JQZJPv4qp+ebHVSqNd7sO0cnDjrvfPvlLy9ceY/M2m 6HbnjJfzrEz9eCdZHp/kIC30Zr4Q4iA6XFj45CPe+6NJ0qx0nTLXTLCIQ2VnEsMEQ7KgoK+J8T3O bgAAUHp4xERQ5BF4WTsVdirsVdirsVdir4X/ADX/APJleZv+2jcf8nDmHPmXntR/eS972v8A5x8u 7e1/Li4uLmVIbeK9neWWRgqKojjqWY0AGX4uTs9Cax797GvzK/5yAeT1dK8nuUTdJtXIox7EW6np /rnfw8cEsnc06jXdIfN4iqXd7dhEWS5u7l6KoDSSSSOewFWZmJ+nK3Xbkvov8o/+cblhMOued4g8 uz22iVBVe4a5I2Y/8Vjb+buuXRh3uz0+i6z+T6ERERFRFCooAVQKAAbAADLHZN4q7FXYq7FXYq7F XYq7FXYq7FXg/wDzla7DTPLqA/C01yxHuEjA/Wc1/aHIOo7W5R+LyD8qtX0nR/PFjqOqTi3tIFmr MwYhWeFkGygnflTMTTSEZglwNFOMMgMuT3v/AJW9+XX/AFeo/wDkXN/zRm0/M4+93n53F/Od/wAr e/Lr/q9R/wDIub/mjH8zj71/O4v5zv8Alb/5c/8AV6j/AORc3/NGH8xDvX87i/nNf8rf/Ln/AKvc f/Iub/mjH8xDvX87i/nPJ/z0856D5ik0ZNGvVu4bUXDTcFdaNIYwteYWuyGmYupyCVU63tDPGdcJ t3/ONNrFP+Z0crirWtncSxezELF/xGQ5HSj1sezheX4PrXNk752KuxV2KuxV2KuxV2Kvhb81/wDy Zfmb/to3H/Jw5iS5l57Uf3kvekTa9q50ZdF+tOulLK0/1RTRGlag5MB9o/CKV6dsbYcZrh6Jj5L8 h+ZvOWqDT9DtTKVobi5eqwQqf2pZKUHsOp7A5KMbZ4sMpmg+s/yw/Jfy15GhW5AGoa860m1OVQON RusCb+mvv9o9zTbL4xp3GDTRx+ZehZJyXYq7FXYq7FXYq7FXYq7FXYq7FXYq8R/5yj0fVL3Q9FvL S2kuLeznmF08al/T9VU4FgKkAlCK/wBcwddEkAh1fakCYgjo+b/0dqH/ACyy/wDAN/TNbwl0vCe5 r9Hah/yyy/8AAN/TJcJTwlr9Hah/yyy/8i2/ph4SvCWv0dqH/LLL/wAi2/ph4SnhLX6O1D/llm/5 Ft/TJcJXhLX6O1D/AJZZv+Rbf0w0U8Jey/8AOMPl3Wl85Xery2ksWnQ2UkJuZEZUaWSSMhFYihag JPhmXpYnit2PZ2M8ZNbU+nszndOxV2KpNa+c/Kd3rUmiW2rWs2rRVD2SSqZKqKsAAdyvcDcd8gMk SavdrGaBlwgi05ybY7FXYq7FXwt+bSOn5meZg6lSdQnNCKbM5IP0g1zFlzef1H95L3s4/K3/AJx1 1rzF6Oq+ZfU0rRWo8dvTjdzr2orD92h/mYVPYd8nHHbkafRGW8tg+oNA8vaL5f0yLTNGs47KxhFE ijHU92ZjVmY92YknLgKdtCAiKCY4WTsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVS/XfMGjaBpsupaxdx2dlCKvLIep7KqirMx7KoqcjKQiLLCeSMBZNB8z/mf/wA5Caz5g9XS /LnqaXoxqrz143U696sp/dof5VNT3PbNfl1JlsNg6XU6+U9o7RYR+VLuv5k+WirFSdQgFQabFwCP pByrD9YcbS/3kfe+38270zsVdirsVSW78leUbvW49dutItJtXioUvXiUyVUUViSN2X9kncdsFBrO KJN1unWFsdirsVfLP/OUevawvnm00xLyWOwgsYpY7ZHKp6kjyBnIB3YhQK5j5Tu6jXzPHXSnjH6S 1H/lqm/5GN/XIODZaOpaj/y1Tf8AIxv65JNlo6lqP/LVN/yMb+uFbLX6S1H/AJapv+Rjf1ySbLX6 T1H/AJapv+Rjf1wpstfpPUf+Wqb/AJGN/XJLZfTf/OJ+t6tfaDrlleXUlxb2U8BtUlYv6frK/MKT UhSUBp0r88kHaaGRIIL3fC5zsVdirsVdirsVdirsVdirsVdirsVYB+Zf5yeXPJMLWxIv9cZaxabE wBSoqGnbf019vtHsKb5RmziHvcTU6yOLbnLufKvnPz15k836mb/Wroylai3tkqsEKn9mNK0Huep7 k5rZ5DM2XRZs0shuSXjy9rR0J9e+qSLpCTLb/XGHGNpWBIRCftEcTWnTvgEDV9GPhy4eKtk4/Kv/ AMmR5a/7aNv/AMnBlmH6g2ab+8j733Dm2emdirsVdirsVdirsVdir5D/AOcnbuKf80JIkNWtbK3h lHgxDS/8RkGY+Tm6XXG8nwTD/nG3yB5Z81y6/J5g05L+CzW1W35tInF5TKWpwZa7IK5LHG2eiwxn fEHt/wDyoj8pf+pdh/5G3H/VTLOEOf8AlMfc7/lRH5S/9S7D/wAjbj/qpjwhfyuPud/yof8AKX/q XYf+Rtx/1Uw8IX8rj7nf8qH/ACk/6l2H/kbcf9VMaX8rj7ny5+eOhaFoH5k6lpGiWy2ljapb0t1L sFaS3SRt3LHfnXrjTrNTARmQHrn/ADiEjjS/MrkfA09qoPuqSEj/AIYYXL0HIvoTF2DsVdirsVdi rsVdirsVdirsVad0jRndgiICzMxoABuSScVeBfmv/wA5ErCZtF8lyh5d0udaoCq9itsDsT/xYdv5 f5swc+q6R+bqdV2h/DD5/qfPTNeXt2WYyXV5cvUk8pJJJHP0szMTmDzdRuT5vevyt/5xxeX0dY86 oUjNHg0UEhj4G5YfZ/1F38SN1zOw6XrJ22m7P6z+X62Uf85KWttafldbW1rEkFtDf26RQxqERFEc oAVRQAZbqR6G/tAAYqHe+fvyr/8AJk+Wv+2jb/8AJwZiYvqDqtN/eR977izaPSuxV2KuxV2KuxV2 KoTWNW0/R9LutU1CUQWVnE01xK3ZUFTTxJ6AdziSxlIRFl8F+b/MVx5k8z6nrtwCr6hcPMEJrwQm kaV/yEAX6MxjuXn8k+KRPe+pf+cZvLEmkfl2NQnXjPrU7XS16iBQIogfnxZx7Nl0Bs7bQw4YX3sy 80+YrywvY7a0kCkJylqobdjsNx4DNL2p2hPFMRgem7i67WSxzEYnokv+Mdc/38v/AAC/0zWfyvqO /wCwOF/KOXv+x3+Mdc/38v8AwC/0x/lfUd/2Bf5Ry9/2M9tDKbWEzGsxjUyGlPioK7fPOsxE8A4u dC3oMd8IvnT4d/OvUhqH5q+ZbgEkJeNbb+Nqq25/5NZY6fUG8he8f84mWBi8h6nesKG61J1X3SKG MA9f5mYYudoR6SfN7fi5rsVdirsVdirsVdirsVdiqD1fWNM0fTp9S1O5S0sbdS808hoAB+JJ7Abn tglIAWWM5iIs8nyv+bX54ap5ukl0rSS9j5cBoUrxluaftTU6J4J99e2rz6gz2HJ0Oq1pybDaP3sB 8seVdd80atHpWi2rXN1JuxGyRp3eR+iqPE/ryqEDI0HFxYpTNRfVv5X/AJLaB5KhS8nC6h5gZf3l 8y/DFXqsCn7I7cvtH2G2bPDgEPe77TaOOPfnJ6D9ZgNx9WEimcLzMYPxBa0qRlniR4uG93K4xfDe 7yf/AJyf/wDJbRf9tGD/AJNy5VqfpcLtH+7+L54/Kv8A8mT5a/7aNv8A8nBmJi+oOq0395H3vuPN m9I7FXYq7FXYq7FUu17zHoXl+wa/1q+hsLRf92TMByI34ov2nb/JUE4CaYzmIiyafJ/50fnbd+dp zpOlc7XyzAwbg3wyXTqdpJQOij9lPpO9KVSlbp9Tqjk2H0sZ/K38vL/zz5pg02IMmnwlZdUugNoo AdwD/O/2V+/oDgjG2rBhOSVdH29HHY6XpqRxqtvY2UISONdlSKJaKo+SigyycxGJJ5B3kiIRvoHl mpak99fz3b7GViQPBeij6BnD6jMcuQzPV5TNlM5mR6ob1cparRui2xvtVtbYCodxz/1F+Jv+FGZG kw+JljHvLfpsfHkEfN6bq+pW2l6VeandHjbWMElzMfBIkLt+C53L1cjQt+eeoX09/f3N9cHlPdSv PKfF5GLMfvOSdATZt9tfkVoZ0f8AKvQYHXjLcwm9l8SbpzKtf+ebKMBdzpo1AM9wN7sVdirsVdir sVdirsVSvzL5l0by1o0+r6vOILOAbnqzsfsxxr+07dh/DIzmIiy15MkYRs8nyD+Zv5p65551LlOT a6RA1bLTVaqr1HqSfzyEHr26DNTmzGZ8nntTqpZT5dyl+W/5Ya/551P0rNfq+mQsPrupOD6cYO/F R+3IR0UfTQY4cJmfJdPppZTty731x5M8j+XvJ+kJpujW4jXY3Fw1DNM4H25H7+w6Dtm1x4xEUHoM OGOMVFLvM3nuG152mmMJbkbPcdUQ/wCT/M34Zp9d2qIenHvLv7nXaztIR9MNz3pd+XlzLca1eSSu ZJHhLO7GpJ5r1JzF7GkZZZE7mv0uP2VIyySJ50kn/OUH/ktov+2jB/yblze6n6XP7R/u/i+VtN1K +0zULfUbCUwXtpIstvMACUdDVWAYEbZhjZ0sZEGwzH/len5r/wDUwzf8ioP+qeW+LLvcj85l72v+ V6fmv/1MM3/IqD/qnh8WXen83l72v+V6/mx/1MM3/IqD/qnkvEl3p/N5e9r/AJXr+bH/AFMM3/Iq 3/6p4fEl3r+by97X/K9vzZ/6mGb/AJFW/wD1Tw8ck/m8vesm/PH815Y2jbzFcBW2JRIUb6GVAw+g 4eMr+ayd7ENV1nV9WuTdapez39ydvWuZHlenhyck4tMpE8zbLPy7/J/zd53uUe0gNno9f32rTqRE ADuIxsZW9l+kjJRjbfh00p+59feR/I2g+TNCi0jR4uKD4ri4ehlnlpQySMOp8B0A2GXAU7nFiEBQ Y75481JcudMsn5QIf9IlXo7D9kew/XnN9q6/j/dw+nq6TtHW8Xojy6sQ9XNG6m3erits5/LnS2Im 1SRdj+5t69+7sP1ffnQ9i6bnkPuH6Xddk4Ocz7gxf/nJ3zgujeQRo8L8b7XpPQAB3FvFR5m+n4U/ 2WdCHYazJUK73yx5P8u3HmTzTpehQV56hcJCzD9mMmsj/wCwQFvoyTrccOKQD9A7e3htreK3gQRw woscSDoqqKKB8gMg70BUxV2KuxV2KuxV2KuxVLvMPmDSvL+j3Or6rMILK1XlI56k9FVR3ZjsB45G chEWWGTIIRs8nxx+Zn5k6t551v65cgwafb1TT7EGqxITuW/mdqfE38M1GbKZm3nNTqDllZ5dEz/K f8otT873ourjlaeXrdwLq76NIRuYoKihbxbovz2yeDAZ+5s0ukOU3/C+stJ0zR9A0mKw06GOx020 SiRrsqjqWZj1J6lianNn6YDuAd/GMYRobAMF82efZL0vZaYxjs/syT7hpB4D+Vf15zmv7UM/Rj2j 397oNb2kZ+mH09/ew/1c0rqrZj+WMldXuv8AmH/43XN12J/eS/q/pdt2P/eH3Mj/ADB8j6d520Fd G1C4mtoFnS4EkHHnyQMoHxhhT486OcOIU7vPhGSNF5v/ANCq+Tf+rvqP3wf9U8q/LhxP5Nh3l3/Q qnk3/q76j98H/VPD+XC/ybDvLX/Qqfk3/q76j98H/VPHwAn+Tod5d/0Kn5M/6u+o/fB/1Tw+CF/k 6HeWv+hUvJn/AFd9R++D/qnh8EL/ACdDvLv+hUfJn/V31H74P+qePhBf5Ph3ltf+cUfJPIF9W1Ir X4gGgBI9j6R/Vh8MJ/k+HeWV+XfyE/LDQ3WVdL/SNwvSXUG+sf8AJMhYf+EyQgA3Q0mOPS2d3N9Y ada+pPIltbRgKtaKoAGyqB+AGRyZYwFyNBunkjAXI0Hn3mj8wZb1Xs9M5Q2pqsk52dx4D+Vfxznd d2qZ+nHtHv6l0Os7TM/TDaPew/1c0rqbd6uK2jdG0+51XUIrKAfFIfjfsiD7TH5Zfp9PLLMRDbgw nLMRD2S2itNOsEhQiK1tk+0xAAVRUsxP3k52uLGIRERyD1+OAhERHIPiX85vPx86+eLvUIXJ0u1/ 0TTFPT0Yyfjp/wAWOS/yIHbLwHUZ8nHK+j0//nE/yM0l3fec7uP93CGsdMqOsjAGeQf6q0QH3bww ScnRY/4n0vkXYuxV2KuxV2KuxV2KuJAFT0xV8i/nn+Zz+bvMDafYS18v6Y7JbcT8M8o+F5z4jsn+ Tv3OarU5uM0OQee1up8SVD6QlP5U/lneed9a4SFoNFtCG1C7XrvuIo67c2/4Ub+AMcGHjPkw0mmO WX9Ec31zZ22laJpMVrbJHZabYxhY0HwoiKP86nuc2hMYR32Aeh9MI90Q8z83edZ9Xla1tiY9NQ7L 0aQj9pvbwGctr+0DmPDHaH3vNa7XnKeGO0PvYz6uax1tu9XFbTjyz5nfQruW4SATmWP0+JbjTcGv Q+GZmi1ZwSMquw5ek1fgyJq7DI/+VsT/APVuT/kaf+ac2X8uH+b9v7HYfy0f5v2u/wCVsT/9W5P+ Rp/5px/lw/zft/Yv8tH+b9rv+VsT/wDVuT/kaf8AmnH+XD/N+39i/wAtH+b9rv8AlbE//VuT/kaf +acf5cP837f2L/LR/m/a7/lbE/8A1bk/5Gn/AJpx/lw/zft/Yv8ALR/m/a7/AJWxP/1bk/5Gn/mn H+XD/N+39i/y0f5v2u/5WxP/ANW5P+Rp/wCacf5cP837f2L/AC0f5v2tH82Lmh46egPYmQn/AI1G D+XJfzftX+Wj/N+1L7z8zPME4Kw+lajsUXk33uWH4Zj5O2M0uVR/Hm4+TtbLLlQY5eaneXsvq3c7 zyfzSMWp7CvTNbkyymbkbLr8mWUzcjah6uQYW71cVtWtIbi7uY7a2QyzyniiL1JyePHKchGIslnC BmRGO5L1zyp5ch0SyoxEl7MAbiUdPZF/yR+OddodEMEf6R5vVaLRjDH+kebyP/nJH82VsLGTyXo8 3+n3af7mJkP91AwqIKj9qUfa8F/1ttgAjV56HCHz15R8rap5q8xWWhaYnK6vZAvM/ZjQbvI/+Sig sck4EIGRoPvTyt5c03y15esNC01eNpYRCJCftMeryNT9p2JZvc5W7uEBEUE0xZOxV2KuxV2KuxV2 KsH/ADr1270X8tNZu7QlbiWNLVHBoVFw6xOwI7hGNPfKdRKoFxdZMxxEh8Z20DXFzFboyq8zrGrO eKgsaAsew3zUgPOAWafa/kzyvp3lXy7aaLYgcIFrNNSjSzN/eSt7sfuFB2zc44CIoPUYcQxxEQwr 8w/NVzc38mkxcobW2akwNVMj9an/ACR+z49fDOc7V1kpSOMbRH2vP9qayUpHGNoj7WGermndRbvV xW3eritu9XFbd6uK271cVt3q4rbvVxW3eritu9XFbd6uK271cVt3q4rbvVxW3eritpjo2janrFx6 NlEWAP7yU7RoP8pv8zl+n0s8pqIcjT6aeU1EPV/LPlew0OCqfvrxxSW5YUP+qo/ZXOq0ehhgG28u 96fR6KOEd8u9hH5y/nTY+T7OXSdKkWfzPOnwKKMlqrjaSWu3Km6p9J265wDPUagQ2H1Pkqaa+1G/ eWRpLu+vJSzsaySyyyNU+JZmY5Y6vcl9hfkJ+US+SdFOp6pGD5l1NB9YHX6tAaMtuD/NUBpD40H7 NTCRdrpsHALPMvV8i5LsVdirsVdirsVdirsVSXzp5at/M/lbUtCnIVb6EpHIRUJKtGif/YyKpyGS HFEhqzY+OBj3vhrVdMvtK1K602+iMN5ZyNDPGezoaH5jwOagxo0XmZRMTR5vpT8j/wAzk8xaQuia lN/uc05AFZjU3EC0CyVPV16P9/c02Ony8Qo83eaHU8ceE/UGU+dvKa6zb/WrUBdShX4ewlUb8D7+ BzF7R0AzDij9Y+1r7R0PjDij9Y+15FIZIpGjkUpIhKujChBGxBBzlSCDReVIINFb6uBFu9XFbd6u K271cVt3q4rbvVxW3eritu9XFbd6uK271cVt3q4ra5Gd2CoCzHooFScIFpG6c6d5R8y35HpWMkaH /dkw9JaePxUJ+gZl4tBmnyj89nLxaDNPlH57Mx0b8sLaIrLq1wZ2G/1eGqp9Ln4j9FM22n7GiN8h vyDttP2NEb5DfkPx+pma/o/TLI09KzsoFLMTxjjRRuWYmgHuTm6hCMRURQdzGEYCgKDw380P+cj4 IUm0nyW/qzmqTayw+BOx+rqftH/LIp4V65YA4ebV9I/N88u97f3pZjJdXt1JUk8pJZZZG+lmZmP0 5N1+5L6o/In8hU8urD5m80Qq+vMOVjYtRltAejt1BmP/AAvz6QlJ2en03DvLm9yyLmOxV2KuxV2K uxV2KuxV2KuxV4v/AM5AflHJ5gtT5o0OHnrVolL22QVa5gQbMoHWSMdv2l26gDMXUYb3HN12u0vG OKPN8y6Zql/peoQajp8zW95bOJIJk6qw/WOxB65hRJBsOmhIxNjm+qPyv/NPT/OWn+lNxttdtlBu 7QGgcDb1Yq9UPcdVP0E7HFlEh5u/0uqGQf0kd5z8lwazGbuz4w6mg69FlA/Zb/K8G+/2wtf2eMo4 o7T+9xu0OzhmHFHaf3vI7mK4tbiS3uI2iniPGSNhQg5y84GJo7F5WcTE0RRCl6uRY2zL8sLSxvdX u47y3iuUW35KkyLIAeaioDA5tuyMcZ5CJAHbq7fsfHGeQiQB26vSf8PeXf8Aq12f/IiL/mnN/wDl MX8yPyD0P5TD/Mj8g7/D3l3/AKtdn/yIi/5px/KYv5kfkF/KYf5kfkHf4e8u/wDVrs/+REX/ADTj +UxfzI/IL+Uw/wAyPyDv8PeXf+rXZ/8AIiL/AJpx/KYv5kfkF/KYf5kfkHf4e8u/9Wuz/wCREX/N OP5TF/Mj8gv5TD/Mj8g7/D3l3/q12f8AyIi/5px/KYv5kfkF/KYf5kfkHf4e8u/9Wuz/AOREX/NO P5TF/Mj8gv5TD/Mj8gvTRNCQUTTrVR1oIYx/xrkhpsQ/hj8gkabEP4Y/IIuGG3gFIYkiHgihf1ZZ GAHIU2xgByFJVrXnTypoisdW1a1s2XrFJKokNPCMEufoGSRLJGPMvMfNH/OTnluzV4vL1nLqk/Rb iatvbj3of3rfLivzw04s9bEfTu8P85fmZ5w83vTWL0m0B5R2EI9O3U9vgH2iPFyT75IBwcmaU+aE 8oeRvNHm/URYaDYvdSAj1pvswxA/tSyH4VH4ntXCjHjlI0H1n+U35E+X/IyJqN2V1PzIV+K9Zf3c HIfEtup6eHM/EfYEjImTs8OnEN+Zen5FyXYq7FXYq7FXYq7FXYq7FXYq7FXYq+ffzz/Iz1frHmry rb/vd5dU0uIfa7tNAo/a7ug69Rv1xM2DqHVazR/xR+IfPul6rqGlahBqGnztbXlsweGZDQg/xB6E HYjMaJINh1cJGJsc30z+V/5vad5rgSwvytpr8a/FDWiTgDd4q9/FOo7VGZ2PLxe93ul1YybHaTJP NXlHT9fgq37i+QUhulG/+q4/aX9WUazQxzDul3sNboIZx3S73jmsaTqWj3jWl/EY5BujdUdf5kbu M5bPgnilwyDyWfTzxS4ZBlv5RSV1u8/5hv8AmYubLsX+8P8AV/S7TsP+8l/V/SmP57a5q2keSUu9 LvJbK5N5Ehmgco3Eo5K1HbbOgyGg73WzMYWDW758/wCVmfmD/wBTDf8A/I9/65VxF1X5jJ/OLX/K zfzB/wCpiv8A/ke/9cPEV/MZP5xaP5m/mF/1MV//AMj3/rhsp/MZO8tf8rN/ML/qYr//AJHv/XJW U+Pk7y1/ys78wv8AqYr/AP5Hv/XDZXx595a/5Wd+Yf8A1MV//wAj3/rhT48+8tH8z/zD/wCpiv8A /ke/9ckvjz7ylt95u813y8b3Wr66X+Wa5mkH3Mx8cKDkkeZKUZJgynyv+Vvn/wAzun6I0W4kgfpd yr6FvTx9WXgh+QJOFuhhlLkHuHkn/nE2wgZLrzjqJu3FCdOsSyRfJ5mAkYf6oX54OJzMeiH8Re8a Nomj6JYR6fpFnDY2Uf2IIECLXuTTqT3J3ORc6MQBQRuKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q8M/Of8AIGPVzP5i8pxLFqhq97pa0WO4Pd4ugWXxHRvZvtY+XDe4dbqtFxeqPPufM9buyu/92W13 bv8A5UckciH6GVlIzGdTuC94/LL89IbwRaP5qlWG72S31RqLHJ4CboEb/K6HvTvlY8vQu202tv0z 5971bWNI03WLM2t9EJYzujDZkP8AMjdjhz4IZY8Mg5efTwyx4ZC2MeTvJ995e8xXbs4nsJYCsFwN jXmp4uvY0+jNfotDLDlPWJHN1ug7PlgzHrEjY/FJf+ciWr5Aj/5jof8AiEmbLJyczX/3fxeB+RtG s9c846No96XFpf3kNvOYyFfhI4U8SQaH6MqiN3VYoiUgD1fTX/QrX5af791L/kfH/wBUsu4A7X8h j83f9Cs/ln/v3Uv+kiP/AKpYeAL+Rx+bX/QrH5Z/791L/pIj/wCqWPCE/kYebv8AoVj8s/8Afupf 9JEf/VLDS/kYebv+hV/yy/37qX/SRH/1SxpfyMPNr/oVb8sv9+6l/wBJEf8A1Swr+Sh5pjY/841f lLbMDLp094RT+/uZqVHiImjxZjSYx0Zdov5ceQtEZX0vQLG2lT7M4hR5R/z1cM/44tscURyDI8Wx 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvMfzZ/JDRvOsUmo2HDTvMir8N3SkU9Oi3A UE9Ng4+Ie4AGVTxiXvcPU6QZNxtJ8meYvLmt+XdVm0vWbR7O9hPxRuNiOzIw+FlPZlNMxzGnTTxm Jos4/Lf86NT8t+npurc7/RBRU3rNbj/isn7S/wCQT8iO9kMlOXp9YYbHeL6L0bWtK1rT4tQ0u5S6 s5h8EqHv3Vgd1YdwdxmQDbuITEhYee/85Ef8oDH/AMx0P/EJMjk5OJr/AO7+LxP8p/8AyZnlj/tp W/8AycGVx5ut0/8AeD3vuzL3fuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2Ksb88/l95a86aUbDWbfkyVNteR0WeBj+1G9D9KmoPcZGUQWrLhjkFF8kfmX+UPm fyLdF7pPrmjO1LbVIlPpmvRZRv6b+x2PYnKJQIdNn00sZ8kh8pedfMHlXUPrmk3BQMR9Ytn+KGVR 2dP1EbjscMSQwxZpQNh6J+Y35p6F5x/LuOGIG01eK8he4sHNdgkgLxvQB1/EdxlhlYczPqY5Mfnb B/yn/wDJmeWP+2lbf8nBkY83F0/1j3vu3LnfuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxVSu7O0vbWW0vIUuLWdSk0Eqh0dT1VlaoIxQQDsXzj+av/ADjR NB62seR1M0O7zaIzVkUd/qzN9of5DGvgTsMrMO51ufRdYfJ8+zwzQTPBPG0U0TFJYnBVlZTQqync EHI066mT/lP/AOTM8sf9tK2/5ODJBu0/1j3vu7LHfOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV59+Zv5K+VvPML3DoNP10CkWqQqKtQUCzpsJV/4 Ydj2wEOPm00Z+ReN/l7/AM4//mFo/wCZOm3eo20UelaVdJcvqKTRvHKsRLKI0B9WrFafEop39wA4 eLSTExfIPqXJO0dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//Z uuid:67a1db2b-6f0d-4b65-99fa-82dd25da8f67 image/svg+xml end='w' merkaartor-0.18.1/Icons/small-remove.xpm000066400000000000000000000003521177067165300201710ustar00rootroot00000000000000/* XPM */ static char *small_remove[]={ "11 10 2 1", ". c None", "# c #ff0000", "...........", ".##.....##.", "..##...##..", "...##.##...", "....###....", "....###....", "...##.##...", "..##...##..", ".##.....##.", "..........."}; merkaartor-0.18.1/Icons/src/000077500000000000000000000000001177067165300156275ustar00rootroot00000000000000merkaartor-0.18.1/Icons/src/actions/000077500000000000000000000000001177067165300172675ustar00rootroot00000000000000merkaartor-0.18.1/Icons/src/actions/GPS.svg000066400000000000000000000060521177067165300204440ustar00rootroot00000000000000 image/svg+xmlG merkaartor-0.18.1/Icons/src/actions/align_nodes.pspimage000066400000000000000000000077301177067165300233070ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..\(\@  ~BK ~FL ~BK8~FL~FL#;nI~FL~FL~BK ~BK~BK~BKJFIF[[       }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?j,>xb]'zB-bkE^4r2|*fFqYRNvk%ke|+f(A7+J)^ɿvI~\~Z.Yτ3E[ټNFW]Ы SNvV_77 4i{-OZ3h'W2¡)iUҭ9߄99ayfWf\=*2W_mOއgv>o~Ϟ3^߷_7u  4i ;d&{i8\)QfYI%K8=>_<2Ny|g< Ys|mx#o ^<#kruekqI]:* YH3WI߿aY-X*V|Ki7OG;]u`P'P'^2>P']fU≳oyf}k*:g-pf*뚿r"tQ S1DrS%~BKxb`Pb6S*9|(] F$000C(hCϴ}y ENѥ-}+zRl6&vu^I5moS挰ƞ)36.PEȨnn,45/}@P>y͎ =Y5md@[^;kbg4$d5.߷ =3k{E̢J1D`=`~BKxb`b6ڑ @A& nIa, `  C*zفjFHi:D%6lLp ќi7UX;:yZ-b f bM@ɨ߈xyzGdLDsod聥g. m堅! E7,~BK xb``b`a47g.G ? v@(R?ÿ7e;N)w@oڙP>E1O{ V~A란!"3f@F[t=c!Kb NX_DR^EKL_Ă~BK~BKERaster 2@~BKdTxbg(W}ps NPN Ec@W}PD89Dž""TÇ" "TN~BK_Oxb`ac(biɳ)`NH fS dGa`cbG 7c@Zal(" i,("jؘ_~BKbRxb`ac(biG*)`N cS dS`ĎD@nc@ڑ ("əa,("@5l(" lL  ~BKjZxa46 @?)\@@p,vc@3E?Y"}fi^b8D~BKRaster 1~BKxoXSa;+Eݾ24ت79c6xZ[]ۍ&^Է`Ͷ79'y֒u\zٿMwU[N^:i|!XUys'd˶H\YS=gQe،Y?i^3ԜRT%,9Bx~I9tJ r'ds|K#ٴ1GX!ڡ|2waֿl}n1DGkZ/;#0S_{_M 5|&3^D>0{`#$on6UڲvI~(ž7Ҽae2qNM{'~BK @~BKxjPuGߠ]wE| ঋA/nk$V3f!  E?PKTݖ |#r9ʜ*t)`8o\4^MeV[X( RCdcDj9,M/0猡ht3IC#\=i/q][{8h BEhEdDkWn~Cq.~BKL<xAO@oɻ 7/_ӖFP/0Q `QZ Anm'6f}K4"+ .׋EҬd2{|W)rm)GP{2=87KUwXuyZ50ʔH=^5MgEy5DRӢSN-Uz }dhÔ0 nu亝:2rw\YQ{ǟ;`~[ `4K1ʹX~.С=fFdca ~BKiYx]+QgP+\ XVvMBm &EI.ly Kfղl식YFǙٕlnw:=BC~c+Ӭ9N-M]~k"#G-~W h@n@Dc0+Թr1%ʘGQm(P~UcԈ}˶LC*/ GPY;`zRSq֮q:\_B{R!'9c˱% vB+6>m\@+^o\Hke= ˔.f{6(]t)[HSyǀCڞWcmRִCv璨6d@ |_[~BK^N xb`f^^&T"eljj%,!oh g`7O pL2 XlYX_\i߮ɬr˓u>'_?}v5[9B;'9r'ÿ N:^Ԑ?A%htiwƥ0OB9>5s?8wgO]9u@糗>]=y 3X=%^O9XS\ 170h,An؇: /B{!с%03gph?; ~BK~BKRaster 7@~BKUE@xbπ (bhIYL}hNf6QZcc I7B~BKUE@xbπ (bhIYL}hNf6QZcc I7B~BKUE@xbπ (bhIYL}hNf6QZcc I7B~BKxbg/wG ^Pp13AbPg3~7UJ "Cb*w60p4D~ T1ϛ ̯ľ3Cb[:Xvy$Anz<@' 7! Ib~BKbRaster 83@~BKVFxA 0Og`N\!0*$4 M׳ 49nfvlW>0'~BKVFxA 0Og`N\!0*$4 M׳ 49nfvlW>0'~BKVFxA 0Og`N\!0*$4 M׳ 49nfvlW>0'~BKxb`~ggnd < ܎~ CfGU Af  d^gg`'L 30\HAԴ(ӌp38b@7:6 ؎-܌oXkX|;jP;6+~BKRaster 9p@~BKG7hxb`@E2hGSLt.Cv5l%{~BKG7hxb`@E2hGSLt.Cv5l%{~BKG7hxb`@E2hGSLt.Cv5l%{~BK|lxb`~ggn(?˃9{w kqٗr~ } y;e~BKK;txb`E"(@„RpdpatG@b8 C>l@~BKK;txb`FF$h\B ..Pn<66Z a:sh8g~BKwTxb`vv$`>'$wO\ _/ Q?Du/F= Z!^av9ӫ# gQ^3\Fӂi(t:`? >0~BKORaster 6@~BK"@xb`~BK"@xb`~BK"@xb`~BK3#xbV1  p5Vgg&v~BKRaster 4 @~BK=-xb` ? X 6B ɀ„kC2 a[;~BK=-xb`E ` X 6B ɀ„kC2 a|%~BK=-xb`FF` FU1PpmH! =~BKeUxb`vfpfskxa@  !ʲj`G(axq`+[~BKRaster 2 @~BK8(xZ X E1%)A&3/~BK8(xt E1%.)A&9o=~BK8(x{ E1%)A&=@~BKqxRgmh]]rcxn4qf<]py_{{0;8{pt@`-p-~BKRaster 3@~BK;+xb`6GX@Dх@b\{B7~BK;+xb`+6X@Dх@b19~BK:*xb`}XX!b+Qt! \)~BKhxb`ҘB?U{Q͍jO*~s>37ˣ7<U 5ףZhb.XS ,~BKTRaster 1 @~BK"xxb` $~BK"xxb` $~BK"xxb` $~BK8(0xmle`h Llm:IѦFQ)6merkaartor-0.18.1/Icons/src/actions/camera.svg000066400000000000000000000032721177067165300212440ustar00rootroot00000000000000 merkaartor-0.18.1/Icons/src/actions/create_area.pspimage000066400000000000000000000122061177067165300232520ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@8 ~BK ~FL ~BK8~FLoI~FL˘oI~FL~FL ~BK ~BK~BK~BK JFIF[[       }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?^:it:~!4,_EP {םC}O+5Ns3'<[Z0е=ˀn>ɇ(We80˳3֫>X|F|HVkg1A>eΟ,6G,JVӧvk/S?ֹֽO㯋t>Ӯ,5MZ [bX`ii7v|[eIE(i9Y^O T)WdI&b'?|<4߉u pjמIXHby#gVhк>>]Y% ԹNQOnd9C )QM6[i]t>/$~_0~^x[㏎&9ާ受bn ӬsySwgw?g??#RxŞxU Ƒ]@%vF4VѺS8_%ճwutկmsleK]Ud%)FVVim?qx+.QkQ5X"Y"F}2R(y _ ^dS{% "yկǽy[7kY]JI'+7$J?~BK .~BK xb` (^!C8!_ƭ۷타#ۇE#20Eϡ2DGNH ੟&v ՙ.`'@/;x?K0%@;=-7gd`Hy?skZ ]#")Un;?ib1Bx:f$rm^g~BK xb` ((\!PC8翨]~ŗ?=W#z~nVE 20Eߠ2D"nH7뿷>[L>-*z P_f5310|Kn߸swUvk3S/t:Py?FHP3V\H~BK xb` (^!C8!_ƭ۷타#ۇE#20Eϡ2DGNH ੟ 7&v 1nMXy@ л='7΂ )gf`dbfe1ԋC?WX%<(#{`J‘+i~BK xb` HLXΌ!EK(C^}$pX.!O4DdEG( Hi={v 퐆4Tl?~ 9 gM#Hqb:(v>=.aie3{3t~BK ~BKRaster 5@~BKVFxlA0찡"'Ӡ$q.A6)}C^I6}L SIcc (SP M~BKVFxlA0찡"'Ӡ$q.A6)}C^I6}L SIcc (SP M~BKVFxlA0찡"'Ӡ$q.A6)}C^I6}L SIcc (SP M~BKxb````̀ ?;Ul8o$?ևE!b-,_$ 0\ d5 >gg` AưG+ t30W?XD~yKCv>7q0?#<c (@q8t~BK*Raster 2@~BKJ:xб 0(ϖ&i IQ`*TZ2WEv~BKJ:xб 0Pϑ&i IQ`*TZ2WP~BKJ:xб 0(ϖ&i IQ`*TZ2WEv~BK@xb```Vf@OGz~$ :.nD.`H`4Po0a?tH dV!Vs?GQ)5 ~BK\Raster 1@~BK$xb`0~BK$xb`0~BK$xb`0~BK:*@xb``mle@M7mjDH:Դ~BK~Raster 3  @~BKuexb`` `^Su +Lz[xowµW?}Q7P $ĠO 9~BKyixb`` `֧0k@;TKC;kzҥ7̔K5]UwyGBPG^~BKtdxb`` `FS[^6yNn.VE33021+,UT; QjOPN+/~BKfVxb``~A;Hk3#D?6l1 \+iSJ~BKORaster 4@~BK"@xb`~BK"@xb`~BK"@xb`~BK3#xbV1  p5Vgg&vmerkaartor-0.18.1/Icons/src/actions/create_node.pspimage000066400000000000000000000066071177067165300232770ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@ ~BK ~FL ~BK8~FLoI~FLԓoI~FL~FL ~BKT~BK~BK~BKN@JFIF[[       }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( hc3?G~sJ.ڏlt MQ_.z OˉHiAD~'c1rZqʷN1m&C+ɨ8y<<(J&RI+]+Y/ٯI2=súc+Y-u AEssK ̖$UÄf3"VSWœSnKC75.FӔSw|YP̩7Hii][CP[,|/4d7K>Ͽ9Ey'ԟ>|\ˮi1>?zizOnYrǃ^0Ru}_C3:8Gk]_sGş\\״m:%ӴOUm^H i~l$e.o,X־S3htfm+ҽod TiAA-e{Fks?%i ~s'Wm_K}xC7WR){c/nD^ň|$n,qQG:27 ( l ªTSӏ73\6մ;O~_o)?zDŽ5ځ|#q>ɍ\/Ls5~}yw?g??#RxŞxU Ƒ]@%vF4VѺS8_%ճwutկmleK]Ud%)FVVim?qx+.QkQ5X"Y"F}2R(y _ ^dS{% "yկǽy[7kY]JI'+7$J?~BK $~BKxb` za20dG_ ]i;ф?XŨ_W4π&e_pԊ*?{ WC =Pwo@G20CD[O]tƝ;\yQk3S/t: V$b w܅1CyB A#W-|ɝ~BKxb` za20G_P]Oфϣ=o4π&{<|AD߯SginpԊbܚ\?/ ``Zs bh'7#! L̬<@?Ĩ(f^a "KߙFcX C‘+iG@~BK xb` (w=cntA?.La16p1?AUX a䔃`uPW;q&@QCi?o4a`?3Pq{{ia@U{AG, 3y0=0.aie3{3UQ~BK ~BKMRaster 5@~BKWGxA 0 @( dTM蔇0# njyAW_3Zc ]%~~BKWGxA 0 @( dTM蔇0# njyAW_3Zc ]%~~BKWGxA 0 @( dTM蔇0# njyAW_3Zc ]%~~BKxb`~lnT0èbڿG?hb̷~Yș $& bӁr,umvX>PSa؏nQ @Q$c^΀QW"~BK(Raster 2@~BKQAxb` h`hBх/FsP L$! !"I B%C0c6 ~BKQAxb`K hҥKhBЅ.]BsP L$! !"u I B%C09!l^NiK1OS/[KuWc߻)+y?7OWR5R-b"*F%Ha |mGFEZJkMI~S1qggFks7Gv?68'F6FC mb8QdC؃] ӡ>xÞ^3KEѫ}SO_^?jOih>6e|As&Py>W=sl\q%g7^V}N5a,<=Ԕ[^[l2HGDڥ2p=~SU4Y_]웋pV_ס~6x 9%,.Uqѣ6E>I~jOuMV~;cqdr+HqN1z3tTg5v?]zR~5-[]I jE{*5O6Wcܒk3~BK ~BKxb` ]ȵ(C` 00 _.+v$9.MV.> Cr勯m`Dq%og,yo-^C_b2?x r,. iE¿EaB;l~BKxb` ]ȭ*sy? \(!shÅg| i,~\j_\z t;>_? @p[>7K?zpb(__? ]?t 𿇗n"|`vI=tQB 0~i~BKxb` .V_z3pϊϡ]VU3X67@# lL H{w?g(_Dޭxgdw}*AEG7axw`?X.([.Cchb~BK xb` h,GmܢU'FshoR&zGS0Q_@53oXFXrUTap?ߛ j5O=1dwE|vjdw;gl;Yu?PO gZj>Kutan'-ta@ oe\()d7gph?;p~BK ~BKRaster 6@~BK@00xb`"?xtD3Hv(@]~BK@00xb`"?xtD3Hv(@]~BK@00xb`"?xtD3Hv(@]~BK~xb`Hg@s#q0;(!` X7PI $P$G( 8H| }$@nc$_ #)~ @'fCK~BKRaster 7 @~BK:*x?GaDV4c`` )~BK:*x?GaDV4c`` )~BK:*x?GaDV4c`` )~BK]MxfoØC;CTw3`0E\cf20'O6vF~BKRaster 2@~BK9)0xb`X̀/^@0:^o(~BK9)0xb`Ā.]@0:}4~BK9)0xb`ˀ޽@0:7A~BKpxb``g@FP6Q?/Fp?E `QFu(?G`^8ׅ?|#AA$~BKURaster 1@~BK#0xb`~BK#0xb`~BK#0xb`~BK6&xmle@M765@ ~BK}Raster 4 @~BK,@x~~BK,@xZ8$~BK,@xbdFFRY# X~BKC3xxg0lo+2^c3''3g> ~F ~BKRaster 3  @~BK6&PxbgN+9.! AETrp~BK5%Pxb`ac gcNH faؘ"6~BK6&Pxb`acЎT`gN caؘ#=~BK8((xa;ڇo~BKORaster 5@~BK"@xb`~BK"@xb`~BK"@xb`~BK3#xbV1  p5Vgg&vmerkaartor-0.18.1/Icons/src/actions/join_roads.pspimage000066400000000000000000000136511177067165300231530ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@. ~BK ~FL ~BK8~FL.JnI~FLoI~FL~FL ~BK~BK~BK~BKJFIF[[       }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?8Qo?lo~=u_Zn:@qlRG͜m ڭdCZ)jrIy]?S _`d/{¿<7f(!-u K 뗟\MHUXH|뉣?s|5sձC $d#/iW-2mZ.UE XʫgzҳVI6{ri}xWZ5 f fPN=~Ù#7p.J2kͫ^Gᙶ3.hm'ζ~9|' j}++ss\AαW8{s,l3 ӆQMk잇,9v"T6}ڝG/_sj<>]*GCFGaqXxעNE0u8aqu3|S~gM'Pa]|7ҵ\{q-)( ?o(׀q*3a6f0jXneKiI=LV231Q^k~BK ~BKxb`0ȿ 2  ?E/udaK߂s,^hȇmf> sN F /6U(|#1 HW/ڍ&l[,GexgLbGwc*s},ݖz0~}:k0E f;!-gedbT댬og\0Ŷ(cwA._Eѥ _N)ߚXb/L֭Eٷj,7G_T))* $wo~BKxb`0+ 2 o 9?#s}y+uuuaKݽ{D]@L>`ifip E)PޥAE݇ Oo)X??3bQ|o>O껃E ˘0E=0E%XMQf~BK xb]}5k2@A ߬͠\lPL1hJ~BKE5(xb h?`C D%lT>PL1hJ~BKE5(xb h?`C D%lT>PL1hJ~BKxbòYE08_. b/> '#TwCF3P,*ݿWFs]ML(6]?Y]u7Ų ѝ^ιb ]@~BKRaster 8 @~BK;+xb```? F0<(& W~BK;+xb```? F0<(& W~BK;+xb```? F0<(& W~BK`Pxb```Wg?m b@ @r{y  $⁤>H.2HI- HmSQ2B~BKRaster 4 @~BK1!xZ2]+60:y~BK1!xt.2ƽt +60s' ~BK1!x{2ƽ{+603"~BKSCTxR6f׫ߟ 氇o`pilR؋]~BKRaster 3  @~BK1! xZx1,^$ M ̦&5~BK1! xt\$ M }J19~BK1! x{.ܽ$ M Za3~BK{kxog!,CYCχ2?g ?eoe_e) eί $~BKRaster 2  @~BK5% xzd&2 J|1T~BK^Nx cM+AFB$f" eN{Ye}?*<==294~BKRaster 5  @~BK0 xb` O bD~BK0 xb`X ZD b+~BK0 xb`` d1` ^F~BKTDlxb`/gg``0~ !0畁Á1~BK4Raster 6@~BK xc`~BK xc`~BK xc`~BK-xcbRԶtrs6Vgg~BKRaster 1@~BKD4(xb` GN+&9.41!:>t,qpBp~BK?/(xb` `a GdNH fAcǢ:W~BKA1(xb` `aҎT`GcN cAcƄuq~BKZJxmle@M7#&իJi4 &v-@>{3y Rn#~merkaartor-0.18.1/Icons/src/actions/node_4.png000066400000000000000000000002321177067165300211420ustar00rootroot00000000000000PNG  IHDR~tIME)|LR pHYsiTSgAMA a)IDATxcd`` f,@"k TLt1IENDB`merkaartor-0.18.1/Icons/src/actions/node_5.png000066400000000000000000000003401177067165300211430ustar00rootroot00000000000000PNG  IHDRo&tIME2/< pHYsiTSgAMA aoIDATxc```Prm/,6މǏʯ``f46۷ 6}accx ?CdZ&{AfR^IENDB`merkaartor-0.18.1/Icons/src/actions/plus_11_oxygen.png000066400000000000000000000007001177067165300226470ustar00rootroot00000000000000PNG  IHDR w&tIME '5}E pHYsuulgAMA aOIDATx}PKq|.; Z i~AFKHK@cK.sP I4F4P8544GizRz>]z:kzSAk.ZMi~`pg)mG3\DtA@D owQ!T V^G Cэ9;ێMBٲBa5# !kWiV]%]i|&LND>V%]~B{/LWk%FIENDB`merkaartor-0.18.1/Icons/src/actions/reverse_road.pspimage000066400000000000000000000102171177067165300234770ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@8 ~BK ~FL ~BK8~FLHnI~FLoI~FL~FL ~BK}~BK~BK~BKaSJFIF[[       }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?jO(֍-߲7짮6UUwXҴ/^[nsR\Z,<=gdv_ oM{w;g߈W-}_I[in{gV%- AՑJm4Δԕ!=Ӿ/hmźq5&M>$O/}Ѿ%8;3 ֦UWL5O_u;IOٓR2^:1s :#|߼HaWn:7SOQdӴ/: V <)G}'V6 pYWGↁ(XT][FR^q|<Ę~~>a˧xP"MjXI WY$y4Wџb?fYGcWEװhm14IřOtP~BK ~BKxb`` _U?C# I_ύ&ϑŋEq]W?|~fvy«~]_tqO*0V%(| !UZ6~BKxb``ZU?CG I/ύ&KEҥWK7|zvyw«ܿt?tqO/*0m:%(R !UZİ;~BKxb``ZU?/C Iύ&˻w_EgV󽻏~~ovO«>{?tq..0c.%(r !UZ=~BK xb`m:m)O{G Iv_5P;AOoFf 4hkQM߀ӳk?dJ9;OoW<^hS=Hx H!&0q?()J`V1  p5Vgg_~BK>~BKRaster 5@~BKK;xȱ Y) R=f?ڇcP*€*"UT~BKK;xȱ Y) R=f?ڇcP*€*"UT~BKK;xȱ Y) R=f?ڇcP*€*"UT~BKwxb`Vg@#q;  X ` 8/Г(!(!~! ~$0c`0ԃ|y5v<,~BKRaster 2@~BK7'xbX,FX(rf*q֠|'{~BK7'xbt\Bt(rf*q֠R2~BK7'xb{E{(rf*q֠]5~BK|lxb`f@ύG?93## ?Y@oG6y빑^~g`$C~BKRRaster 1@~BK"xb`~BK"xb`~BK"xb`~BK6&xmle@M765'%í[~BKvRaster 3 @~BK"xb`\~BK"xb`\~BK"xb`\~BKZJxb```zp_ڏ39⧷s9/K34C8ύҳ >(~{TU~BKORaster 4@~BK"@xb`~BK"@xb`~BK"@xb`~BK3#xbV1  p5Vgg&vmerkaartor-0.18.1/Icons/src/actions/split_road.pspimage000066400000000000000000000171261177067165300231650ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@p:  ~BK ~FL ~BK8~FLp8X{< 54ݴAϹy8ǖwWMIOQJJ^{-Kp!=6ֿh_u;ox~{,˴r+\L%(vfdNZy`玪M?yi}/'6Iat}U,5a,k U 3M]N/[̿oZ/oo~?><[C#$IR[۫;DӢ0:ndp?A?g$ |/9ۻ㿂iP-߃JEY )w0M$Hd29fo3vRzRSfvaW"i 7xRڏ˿Şm=^%S dM|QVo*otq kyUgo|q="S."r.<}υ>|n߄z'iw (_??ۦ_γ+oeWOMcrw@qƅ(Ux+Ibԡ5Gx]~BK ~BKxb```π=M"=[B;U/68冤Ϗ'030Xsh tO_p5??zō?)̸k,?z SGѓX?h{qo_T\P) )jɆ)Q~BKxb```πX?M"ٗ.][B;k.]:冤T2LIe`@1 '@M?id Lb7[0cCX^#+a(޾ю8!SԓASԒ S NO^~BKxb```πXW>M"9w>|[B;ѫwu冤^1d`@1 W i覟m?k_[ōk'fۀE }o1Eo;ž}S`Qю=ot 8! SԓASԒ S qM~BK xb```fLƐhvIEA{'G Dw<YI"Lb9T$,z"}@u+@ausf 30(E'C^^baye㇘k=:8!;? oZ T aڿ uwA_sCg{40 w2p*exLmOnme`V1  p5Vgg"r~BK~BKMRaster 4@~BKxb`@ id ңl^(wins-O>pOA̵zG~A)!o30H3Mx V'(-,na#1EXAUUPj1 Y.$.# +;2 ,\F&Y>g~BKxb`@ id ңh^(wnnsO9xOA̵zG~iIAåw$ED t&^7TU"(, d4͆rfFd.##  !;~BKxb`@ id ңl^(wnnsM9xOAuzG~iI!a3w $ t&]I7TS"(" qi.$.# ;2,\FF.2'E~BKxb`@xdk92_GUsws[6k?}.g2+RnW}Jv^Ucb`&ːW~Cpun5?C?/~Ed {D$CA~BKRaster 7@~BKxb`'w2 gfޞPw\QG'|>͚py2n ]E}}??4l=}q򎌾S=߇ [?<|◟qjY[`xpus&Wj?r'6ݯxCiœ- b~BKxb`'w2 gfޞPw\QG'|>͚py2Q} ozfR>m7؀4U3]xКEe 1=wyk*ChYXVon Bz[}]sk -T&`ihgF~BKxb`C7N1 6=0#( ]^|(oy/?a=;~BKRaster 6 @~BK2"xZ _E5Qb~BK2"xt. οt E5Q#G~BK2"x{ ο{E5Qj% ~BK>.pxRf@#γ~BKVektor 1@~BK ~~BKlText^t#?@?????$@~BK~BK ~BK--"~BKRaster 3  @~BK0 xzd&} 4 K~BKl\xC2'ee a?b*=?y;8d n~BKRaster 5  @~BK/xz$&l!DK~BKM=xog!!! !! !)4a~=?[n~BK[Raster 1@~BK$xb` ~BK$xb` ~BK$xb` ~BK9)xmle@M7#&+Jc>4 U~BKORaster 9@~BK"@xb`~BK"@xb`~BK"@xb`~BK3#xbV1  p5Vgg&vmerkaartor-0.18.1/Icons/src/actions/split_road_a.pspimage000066400000000000000000000144711177067165300234650ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@( ~BK ~FL ~BK8~FL-~Ϻſw _-ymHdA=HO ~֔gԮت6}Ӻ-_;i7 :Εoql%dʹ;]wax טjF_,? }xS+E((`Gh{P(wGw3wO+o vQJ0s9;m#B*ʼ}BX(G Q1k~BK ~BKxb`尋{/^E4`1 2V.R4 h110p hBl^(#4Ѯ>ф-O>poLTLN~vA#2RB"j.0g`J3Mx Q,(-,na#5,",*(, b\ Q0# +;‰ lQq)0G<`L]bE'~BKxb`$԰'^E4 2͹$ \9 ]XG;8 MУy+D;x7,A:>v8z3$U2+7c`J2L) Q, %$na5,"(, , \ Q0# ;‰] LHd`Xˆ#NbFTAA~BKxb`4ݽE4. 2- $ 9ܽ']XGǫMгy`__hn4acS+JIO.w샘/- )$Y~NDTRAPOgҕtb)!qCNUdQťaFv, LHZf00U0?~BK  xb`D'mc5Q x&!45X» 0fgMh&1;;ֿ_&chWw_fWL}g_<発JnW}Jzf`y˧WAͿ?h] Q_@E Pٿ^ĩoHVs31'ϋ# N ՝ $O65LI4D>΁~BKF~BKMRaster 4@~BKxb`@ id ңl^(wins-O>pOA̵zG~A)!o30H3Mx V'(-,na#1EXAUUPj1 Y.$.# +;2 ,\F&Y>g~BKxb`@ id ңh^(wnnsO9xOA̵zG~iIAåw$ED t&^7TU"(, d4͆rfFd.##  !;~BKxb`@ id ңl^(wnnsM9xOAuzG~iI!a3w $ t&]I7TS"(" qi.$.# ;2,\FF.2'E~BKxb`@xdk92_GUsws[6k?}.g2+RnW}Jv^Ucb`&ːW~Cpun5?C?/~Ed {D$CA~BKRaster 7@~BKxb`'w2 gfޞPw\QG'|>͚py2n ]E}}??4l=}q#ԿsOa;O+<߳wZ֡3\]9܅ɕz*_=a(mxb~BKxb`'w2 gfޞPw\QG'|>͚py2Q} ozfR>m7؀4U3]xКEe ˌ1׼[SB²zsClPfm[khQ.ɩe.P}JF~BKxb`C7N1 6=0#( ]^|(oy/?a=;~BKRaster 3  @~BK0 xzd&} 4 K~BKl\xC2'ee a?b*=?y;8d n~BKRaster 5  @~BK/xz$&l!DK~BKM=xog!!! !! !)4a~=?[n~BKRaster 6 @~BK2"xZ _E5Qb~BK2"xt. οt E5Q#G~BK2"x{ ο{E5Qj% ~BK>.pxRf@#γ~BK[Raster 1@~BK$xb` ~BK$xb` ~BK$xb` ~BK9)xmle@M7#&+Jc>4 Umerkaartor-0.18.1/Icons/src/actions/split_road_b.pspimage000066400000000000000000000152441177067165300234650ustar00rootroot00000000000000Paint Shop Pro Image File ~BK..(\S@( ~BK ~FL ~BK8~FLoJ#X:1rYٮE=(:{vcR-k_;i7 :Εoql%dʹ;]wax גjF_,>yTOS,'8$12 hRnGUğ;֛x I"}YT]4QYy[H` jYq' V ˇqPC^Y&̷MvkG丈b1Tm4ϿfjSx;Q{9w7ĿdI<k|T+SX̽ziA5dGpu\fH> D]~pK(H? x{>B򎌾S=߇p#~Zy/?]2h͟.L30H1$W* b#ݯxсOxm~BKxb`$԰'^E4 2͹$ 膬?ҥd6V30v^=l+PD+ T'|>ӂ&:kN +I% ǚ܁hxe5 ai_<1"WPv͞Ck!D3c =*5/{TeaYW6n Ova`0 `i jl 203hٹN9apLN-sAIKD;3 rpO~BKxb`4ݽE4. 2- $ 9q Vko00D{{a}}(oOr3+ܚ&uӼ{ZpOA̵zG~A)!o30H3Mx V'(-,na#1EXAUUPj1 Y.$.# +;2 ,\F&Y>g~BKxb`@ id ңh^(wnnsO9xOA̵zG~iIAåw$ED t&^7TU"(, d4͆rfFd.##  !;~BKxb`@ id ңl^(wnnsM9xOAuzG~iI!a3w $ t&]I7TS"(" qi.$.# ;2,\FF.2'E~BKxb`@xdk92_GUsws[6k?}.g2+RnW}Jv^Ucb`&ːW~Cpun5?C?/~Ed {D$CA~BKRaster 7@~BKxb`'w2 gfޞPw\QG'|>͚py2n ]E}}??4l=}q#ԿsOa;O+<߳wZ֡3\]9܅ɕz*_=a(mxb~BKxb`'w2 gfޞPw\QG'|>͚py2Q} ozfR>m7؀4U3]xКEe ˌ1׼[SB²zsClPfm[khQ.ɩe.P}JF~BKxb`C7N1 6=0#( ]^|(oy/?a=;~BKRaster 3  @~BK0 xzd&} 4 K~BKl\xC2'ee a?b*=?y;8d n~BKRaster 5  @~BK/xz$&l!DK~BKM=xog!!! !! !)4a~=?[n~BKRaster 6 @~BK2"xZ _E5Qb~BK2"xt. οt E5Q#G~BK2"x{ ο{E5Qj% ~BK>.pxRf@#γ~BK[Raster 1@~BK$xb` ~BK$xb` ~BK$xb` ~BK9)xmle@M7#&+Jc>4 Umerkaartor-0.18.1/Icons/toolselect.xpm000066400000000000000000000012161177067165300177430ustar00rootroot00000000000000/* XPM */ static char *toolselect[]={ "22 22 2 1", ". c None", "# c #000000", "......................", "....#.................", "....##................", "....###...............", "....####..............", "....#####.............", "....######............", "....#######...........", "....########..........", "....#########.........", "....########..........", "....######............", "....######............", "....#######...........", "....##..###...........", "....#...####..........", ".........###..........", ".........####.........", ".........####.........", "..........#...........", "......................", "......................"}; merkaartor-0.18.1/Icons/zoomico.xpm000066400000000000000000000023211177067165300172430ustar00rootroot00000000000000/* XPM */ static char* zoomico[] = { "32 32 2 1", " c #000000", "! c none", "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "!!!!!!! !!!!!!!!!!!!!!!!!!", "!!!!! !!! !!! !!!!!!!!!!!!!!!!", "!!!! !!!!! !!!!! !!!!!!!!!!!!!!!", "!!! !!!!!! !!!!!! !!!!!!!!!!!!!!", "!! !!!!!!! !!!!!!! !!!!!!!!!!!!!", "! !!!!!!!! !!!!!!!! !!!!!!!!!!!!", "! !!!!!!!! !!!!!!!! !!!!!!!!!!!!", " !!!!!!!!! !!!!!!!!! !!!!!!!!!!!", " !!!!!!!!! !!!!!!!!! !!!!!!!!!!!", " !!!!!!!!! !!!!!!!!! !!!!!!!!!!!", " !!!!!!!!!!!", " !!!!!!!!! !!!!!!!!! !!!!!!!!!!!", " !!!!!!!!! !!!!!!!!! !!!!!!!!!!!", " !!!!!!!!! !!!!!!!!! !!!!!!!!!!!", "! !!!!!!!! !!!!!!!! !!!!!!!!!!!!", "! !!!!!!!! !!!!!!!! !!!!!!!!!!!!", "!! !!!!!!! !!!!!!! !!!!!!!!!!!!", "!!! !!!!!! !!!!!! !!!!!!!!!", "!!!! !!!!! !!!!! !! !!!!!!!!", "!!!!! !!! !!! !! !!!!!!!", "!!!!!!! !!! !! !!!!!!", "!!!!!!!!!!!!!!!!!! !! !!!!!", "!!!!!!!!!!!!!!!!!! ! !! !!!!", "!!!!!!!!!!!!!!!!!!! ! !! !!!", "!!!!!!!!!!!!!!!!!!!! ! !! !!", "!!!!!!!!!!!!!!!!!!!!! ! !! !", "!!!!!!!!!!!!!!!!!!!!!! ! !! !", "!!!!!!!!!!!!!!!!!!!!!!! ! !", "!!!!!!!!!!!!!!!!!!!!!!!! ! ! !", "!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!", "!!!!!!!!!!!!!!!!!!!!!!!!!! !!!"}; merkaartor-0.18.1/LICENSE000066400000000000000000000301341177067165300147730ustar00rootroot00000000000000 The precise terms and conditions for copying, distribution and modification of Merkaartor follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS merkaartor-0.18.1/LICENSE.rtf000066400000000000000000000325531177067165300155740ustar00rootroot00000000000000{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}} {\*\generator Msftedit 5.41.21.2506;}\viewkind4\uc1\pard\lang1043\f0\fs20 The precise terms and conditions for copying, distribution and\par modification of Merkaartor follow.\par \par \tab\tab GNU GENERAL PUBLIC LICENSE\par TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par \par 0. This License applies to any program or other work which contains\par a notice placed by the copyright holder saying it may be distributed\par under the terms of this General Public License. The "Program", below,\par refers to any such program or work, and a "work based on the Program"\par means either the Program or any derivative work under copyright law:\par that is to say, a work containing the Program or a portion of it,\par either verbatim or with modifications and/or translated into another\par language. (Hereinafter, translation is included without limitation in\par the term "modification".) Each licensee is addressed as "you".\par \par Activities other than copying, distribution and modification are not\par covered by this License; they are outside its scope. The act of\par running the Program is not restricted, and the output from the Program\par is covered only if its contents constitute a work based on the\par Program (independent of having been made by running the Program).\par Whether that is true depends on what the Program does.\par \par 1. You may copy and distribute verbatim copies of the Program's\par source code as you receive it, in any medium, provided that you\par conspicuously and appropriately publish on each copy an appropriate\par copyright notice and disclaimer of warranty; keep intact all the\par notices that refer to this License and to the absence of any warranty;\par and give any other recipients of the Program a copy of this License\par along with the Program.\par \par You may charge a fee for the physical act of transferring a copy, and\par you may at your option offer warranty protection in exchange for a fee.\par \par 2. You may modify your copy or copies of the Program or any portion\par of it, thus forming a work based on the Program, and copy and\par distribute such modifications or work under the terms of Section 1\par above, provided that you also meet all of these conditions:\par \par a) You must cause the modified files to carry prominent notices\par stating that you changed the files and the date of any change.\par \par b) You must cause any work that you distribute or publish, that in\par whole or in part contains or is derived from the Program or any\par part thereof, to be licensed as a whole at no charge to all third\par parties under the terms of this License.\par \par c) If the modified program normally reads commands interactively\par when run, you must cause it, when started running for such\par interactive use in the most ordinary way, to print or display an\par announcement including an appropriate copyright notice and a\par notice that there is no warranty (or else, saying that you provide\par a warranty) and that users may redistribute the program under\par these conditions, and telling the user how to view a copy of this\par License. (Exception: if the Program itself is interactive but\par does not normally print such an announcement, your work based on\par the Program is not required to print an announcement.)\par \par These requirements apply to the modified work as a whole. If\par identifiable sections of that work are not derived from the Program,\par and can be reasonably considered independent and separate works in\par themselves, then this License, and its terms, do not apply to those\par sections when you distribute them as separate works. But when you\par distribute the same sections as part of a whole which is a work based\par on the Program, the distribution of the whole must be on the terms of\par this License, whose permissions for other licensees extend to the\par entire whole, and thus to each and every part regardless of who wrote it.\par \par Thus, it is not the intent of this section to claim rights or contest\par your rights to work written entirely by you; rather, the intent is to\par exercise the right to control the distribution of derivative or\par collective works based on the Program.\par \par In addition, mere aggregation of another work not based on the Program\par with the Program (or with a work based on the Program) on a volume of\par a storage or distribution medium does not bring the other work under\par the scope of this License.\par \par 3. You may copy and distribute the Program (or a work based on it,\par under Section 2) in object code or executable form under the terms of\par Sections 1 and 2 above provided that you also do one of the following:\par \par a) Accompany it with the complete corresponding machine-readable\par source code, which must be distributed under the terms of Sections\par 1 and 2 above on a medium customarily used for software interchange; or,\par \par b) Accompany it with a written offer, valid for at least three\par years, to give any third party, for a charge no more than your\par cost of physically performing source distribution, a complete\par machine-readable copy of the corresponding source code, to be\par distributed under the terms of Sections 1 and 2 above on a medium\par customarily used for software interchange; or,\par \par c) Accompany it with the information you received as to the offer\par to distribute corresponding source code. (This alternative is\par allowed only for noncommercial distribution and only if you\par received the program in object code or executable form with such\par an offer, in accord with Subsection b above.)\par \par The source code for a work means the preferred form of the work for\par making modifications to it. For an executable work, complete source\par code means all the source code for all modules it contains, plus any\par associated interface definition files, plus the scripts used to\par control compilation and installation of the executable. However, as a\par special exception, the source code distributed need not include\par anything that is normally distributed (in either source or binary\par form) with the major components (compiler, kernel, and so on) of the\par operating system on which the executable runs, unless that component\par itself accompanies the executable.\par \par If distribution of executable or object code is made by offering\par access to copy from a designated place, then offering equivalent\par access to copy the source code from the same place counts as\par distribution of the source code, even though third parties are not\par compelled to copy the source along with the object code.\par \par 4. You may not copy, modify, sublicense, or distribute the Program\par except as expressly provided under this License. Any attempt\par otherwise to copy, modify, sublicense or distribute the Program is\par void, and will automatically terminate your rights under this License.\par However, parties who have received copies, or rights, from you under\par this License will not have their licenses terminated so long as such\par parties remain in full compliance.\par \par 5. You are not required to accept this License, since you have not\par signed it. However, nothing else grants you permission to modify or\par distribute the Program or its derivative works. These actions are\par prohibited by law if you do not accept this License. Therefore, by\par modifying or distributing the Program (or any work based on the\par Program), you indicate your acceptance of this License to do so, and\par all its terms and conditions for copying, distributing or modifying\par the Program or works based on it.\par \par 6. Each time you redistribute the Program (or any work based on the\par Program), the recipient automatically receives a license from the\par original licensor to copy, distribute or modify the Program subject to\par these terms and conditions. You may not impose any further\par restrictions on the recipients' exercise of the rights granted herein.\par You are not responsible for enforcing compliance by third parties to\par this License.\par \par 7. If, as a consequence of a court judgment or allegation of patent\par infringement or for any other reason (not limited to patent issues),\par conditions are imposed on you (whether by court order, agreement or\par otherwise) that contradict the conditions of this License, they do not\par excuse you from the conditions of this License. If you cannot\par distribute so as to satisfy simultaneously your obligations under this\par License and any other pertinent obligations, then as a consequence you\par may not distribute the Program at all. For example, if a patent\par license would not permit royalty-free redistribution of the Program by\par all those who receive copies directly or indirectly through you, then\par the only way you could satisfy both it and this License would be to\par refrain entirely from distribution of the Program.\par \par If any portion of this section is held invalid or unenforceable under\par any particular circumstance, the balance of the section is intended to\par apply and the section as a whole is intended to apply in other\par circumstances.\par \par It is not the purpose of this section to induce you to infringe any\par patents or other property right claims or to contest validity of any\par such claims; this section has the sole purpose of protecting the\par integrity of the free software distribution system, which is\par implemented by public license practices. Many people have made\par generous contributions to the wide range of software distributed\par through that system in reliance on consistent application of that\par system; it is up to the author/donor to decide if he or she is willing\par to distribute software through any other system and a licensee cannot\par impose that choice.\par \par This section is intended to make thoroughly clear what is believed to\par be a consequence of the rest of this License.\par \par 8. If the distribution and/or use of the Program is restricted in\par certain countries either by patents or by copyrighted interfaces, the\par original copyright holder who places the Program under this License\par may add an explicit geographical distribution limitation excluding\par those countries, so that distribution is permitted only in or among\par countries not thus excluded. In such case, this License incorporates\par the limitation as if written in the body of this License.\par \par 9. The Free Software Foundation may publish revised and/or new versions\par of the General Public License from time to time. Such new versions will\par be similar in spirit to the present version, but may differ in detail to\par address new problems or concerns.\par \par Each version is given a distinguishing version number. If the Program\par specifies a version number of this License which applies to it and "any\par later version", you have the option of following the terms and conditions\par either of that version or of any later version published by the Free\par Software Foundation. If the Program does not specify a version number of\par this License, you may choose any version ever published by the Free Software\par Foundation.\par \par 10. If you wish to incorporate parts of the Program into other free\par programs whose distribution conditions are different, write to the author\par to ask for permission. For software which is copyrighted by the Free\par Software Foundation, write to the Free Software Foundation; we sometimes\par make exceptions for this. Our decision will be guided by the two goals\par of preserving the free status of all derivatives of our free software and\par of promoting the sharing and reuse of software generally.\par \par \tab\tab\tab NO WARRANTY\par \par 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\par FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\par OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\par PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\par OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\par MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\par TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\par PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\par REPAIR OR CORRECTION.\par \par 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\par WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\par REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\par INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\par OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\par TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\par YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\par PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\par POSSIBILITY OF SUCH DAMAGES.\par \par \tab\tab END OF TERMS AND CONDITIONS\par \par } merkaartor-0.18.1/Merkaartor.pro000066400000000000000000000000601177067165300166120ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += src \ plugins merkaartor-0.18.1/Styles/000077500000000000000000000000001177067165300152505ustar00rootroot00000000000000merkaartor-0.18.1/Styles/Bicycle.mas000066400000000000000000000355061177067165300173350ustar00rootroot00000000000000 ]> merkaartor-0.18.1/Styles/Classic.mas000066400000000000000000000201151177067165300173320ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/Lighting.mas000066400000000000000000000052231177067165300175210ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/Mapnik.mas000066400000000000000000000642561177067165300172060ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/MapnikPlus.mas000066400000000000000000001233101177067165300200350ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/Maxspeed.mas000066400000000000000000000275611177067165300175330ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/Mobile.mas000066400000000000000000000450471177067165300171730ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/None.mas000066400000000000000000000000271177067165300166500ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/Styles.qrc000066400000000000000000000011331177067165300172400ustar00rootroot00000000000000 None.mas Classic.mas Mobile.mas Mapnik.mas MapnikPlus.mas Maxspeed.mas Lighting.mas Bicycle.mas Validation.mas Wireframe.mas merkaartor-0.18.1/Styles/Validation.mas000066400000000000000000000024471177067165300200530ustar00rootroot00000000000000 merkaartor-0.18.1/Styles/Wireframe.mas000066400000000000000000000603101177067165300176730ustar00rootroot00000000000000 merkaartor-0.18.1/TODO000066400000000000000000000003361177067165300144570ustar00rootroot00000000000000- Implement printing (with barcode reference) - Implement generalization of Walking Paper plugin to own system - Implement GDAL writing - Implement GeoTIFF writing - Implement transaction log to allow replay after a crash merkaartor-0.18.1/Templates/000077500000000000000000000000001177067165300157235ustar00rootroot00000000000000merkaartor-0.18.1/Templates/Brussels.mat000066400000000000000000000117251177067165300202360ustar00rootroot00000000000000 Name الإسم Ime Jméno Name Όνομα Nombre Nimi Nom Naziv Név Nome 名前 Navn Naam Namn Nazwa Nome Название Meno Ime Namn Назва Name (french) الإسم (فرنسي) Jméno (francouzky) Name (franz.) Όνομα (Γαλλικά) Nombre (francés) Nimi (prantsuse) Nom (français) Naziv (francuski) Név (vallon) Nome (francese) 名前(フランス語) Navn (fransk) Naam (Frans) Namn (fransk) Nazwa (francuska) Name (francês) Название (фран.) Meno (francúzske) Namn (franska) Назва (французською) Name (dutch) الإسم (هولّندية) Jméno (nizozemsky) Name (niederl.) Όνομα (Ολλανδικά) Nombre (alemán) Nimi (hollandi) Nom (néérlandais) Naziv (nizozemski) Név (flamand) Nome (olandese) 名前(オランダ語) Navn (nederlansk) Naam (Nederlands) Namn (nederlansk) Nazwa (belgijska) Название (нем.) Meno (holandské) Namn (nederländska) Назва (датською) merkaartor-0.18.1/Templates/TagTemplate.xsd000066400000000000000000000056611177067165300206620ustar00rootroot00000000000000 merkaartor-0.18.1/Templates/Templates.qrc000066400000000000000000000001711177067165300203670ustar00rootroot00000000000000 default.mat merkaartor-0.18.1/Templates/default.mat000066400000000000000000004764301177067165300200700ustar00rootroot00000000000000 Place مكان Mjesto Místo Ort Τόπος Lugar Koht Lieu Kraj Hely Luogo 場所 Sted Plaats Stad Miejsca Local Место Miesto Kraj Plats Місце City (Pop. > 100.000) مدينة (عدد السكان يزيد عن مئة ألف) Město > 100.000 obyvatel Großstadt (Einw. > 100.000) Πόλη (Πλυθ. > 100.000) Ciudad (Pob. > 100.000) Suurlinn (Pop. > 100.000) Ville (Pop. > 100.000) Grada (Pop. > 100.000) Nagyváros > 100.000 lakos Città (Pop. > 100.000) 市(人口 10万人以上) By (Folketall > 100.000) Stad (aantal inwoners> 100.000) By (Folketal > 100.000) Miasto (ludność > 100 000) Cidade (Pop. > 100.000) Город (Нас. > 100.000) Mesto (Obyv. > 100.000) Stad (mer än 100 000 inv.) Місто (насел. > 100 000) Town (10.000 < Pop. < 100.000) بلدة (أكثر من 10000 نسمة و أقل من 100000) Město (10.000 - 100.000 obyvatel) Stadt (10.000 < Einw. < 100.000) Κωμόπολη (10.000 < Πλυθ. < 100.000) Villa (10.000 < Pob. < 100.000) Linn Ville (de 10.000 à 100.000 habitants) Grad (10.000 < Pop. < 100.000) Kisváros (10.000 - 100.000 lakos) Paese (10.000 < Pop. < 100.000) 町(人口1万~10万) By (10.000 < Folketall < 100.000) Stadje (10.000 < aantal inwoners < 100.000) By (10.000 < Folketal < 100.000) Miejscowość (ludność 10 000-100 000) Vila Город (10.000 < Нас. < 100.000) Mesto (10.000 < preb. < 100.000) Samhälle (mellan 10 000 till 100 000 inv.) Містечко (10 000< насел.<100 000) Village (Pop. < 10.000) قرية (أقل من 10000 نسمة) Vesnice (do 10.000 Obyvatel) Dorf (Einw. < 10.000) Χωριό (Πλυθ. < 10.000) Pueblo (Pob. <10.000) Alev (Pop. < 10.000) Village (Pop. < 10.000) Selo (Pop. < 10.000) Falu (10.000 lakosnál kevesebb) Villaggio (Pop. < 10.000) 村(人口1万人以下) Tettsted (Folketall < 10.000) Dorp (Aantal inwoners < 10.000) Tettstad (Folketal < 10.000) Wieś (ludność < 10 000 Aldeia Деревня (Нас. < 10.000) Vas (< 10.000 preb.) By (Mindre än 10 000 inv.) Село (насел. < 10 000) Hamlet (a few houses) مجموعة بيوت Ves (několik domů) Weiler (ein paar Häuser) Οικισμός Aldea (pocas casas) Küla Hameau Zaselak (nekoliko kuća) Apró település (néhány ház) Frazione 集落(数軒の家) Sted (noen få hus) Gehucht Sted (noken få hus) Wólka Aldeia (poucas casas) Посёлок (несколько домов) Kopanica Zaselek (nekaj hiš) Småby (enstaka hus) Хутір (кілька хатин) Suburb ضاحية Predgrađe Předměstí Stadtteil Προάστιο Barrio Linnaosa Banlieue Predgrađe Előváros Sobborgo 近郊住宅地 Forstad/bydel Buitenwijk Poststad Dzielnica Suburbano Пригород Štvrť Mestna četrt Förort Передмістя Locality (named place) المحلة (مكان/محلة ذات إسم) Lokalita (pojmenované místo) Ort (benannter Platz) Τοποθεσία Localidad (lugar) Punkt (nimega koht) Lieu-dit Hely (nevesített hely) Località (nome luogo) 地域 (名前の付いている場所) Sted (navn på sted) Sted (namn på plass) Miejsce (nazwane) Localidade (nome do lugar) Местное название Lokalita (pomenované miesto) Lokalitet (namngedd plats) Місцевість (назва місця) Building مبنى Zgrada Budova Gebäude Κτήριο Edificio Hoone Bâtiment Zgrada Épület Palazzo 建物 Bygning Gebouw Bygning Budynek Edifício Здание Budova Zgradba Byggnad Будинок Area مساحة Područje Oblast Fläche Περιοχή Área Ala Aire Područje Terület Area エリア Område Gebied Område Obszar Área Область Plocha Površina Yta Ділянка Name الإسم Ime Jméno Name Όνομα Nombre Nimi Nom Naziv Név Nome 名前 Navn Naam Namn Nazwa Nome Название Meno Ime Namn Назва Highway type نوع الطريق Typ silnice Straßentyp Τύπος οδικής αρτηρίας Tipo de carretera Tee tüüp Type de route Út típusa Tipo strada ハイウェイ タイプ Riksvei Type Wegtype Type ferdselsveg Typ drogi Tipo auto-estrada Тип автомобильной дороги Typ komunikácie Typ av väg Тип дороги Motorway طريق سريع Dálnice Autobahn Αυτοκινητόδρομος Autopista Maantee Autoroute Autocesta Autópálya Autostrada 高速道路 Motorvei Autoweg Motorveg Autostrada Estrada Автомагистраль Diaľnica Avtocesta Motorväg Автомагістраль Ramp to motorway مدخل طريق سيارات سريع Dálniční nájezd Autobahnanschlussstelle Είσοδος αυτοκινητόδρομου Rampa de autopista Kiirtee pealesõit Bretelle d'accès ou de sortie d'une autoroute Spoj na autocestu Autópálya-bekötőút Svincolo per l'autostrada 高速道路の乗り口 Adkomst til Motorvei Oprit Adkomst til Motorveg Dojazd do autostrady Въезд на шоссе Motorvägspåfart З’єднання з автомагістраллю Trunk road طريق جزعية Víceproudá cesta Schnellstraße Carretera cortada Kiirtee Voie rapide Autóút Strada principale 国道 Stamvei Expressweg Stamveg Droga ekspresowa Автомагистраль Motortrafikled Магістраль Ramp to trunk road Nájezd na víceproudou cestu Schnellstraßenanschlussstelle Rampa de acceso a carretera Kiirtee pealesõit Voie d'accès à une voie rapide Autóútbekötő Svincolo per la strada principale 国道の乗り口 Adkomst til stamvei Oprit naar expressweg Adkomst til stamveg Dojazd do drogi ekspresowej Въезд на автомагистраль Påfart till motortrafikled З’єднання з магістраллю Primary road طريق رئيسية Silnice I. třídy Bundesstraße Κύριος δρόμος Carretera principal Esimese klassi tee Route nationale Državna cesta Elsőrendű főút Strada primaria 主要地方道 Hovedvei Hoofdweg Hovedveg Droga krajowa Estrada principal Главная дорога Huvudväg Головна дорога Ramp to primary road طلعة إلى طريق رئيسية Nájezd na silnici I. třídy Bundesstraßenanschlussstelle Είσοδος πρωτεύοντος δρόμου Rampa al camino primario Maantee pealesõit Voie d'accès à une route nationale Spoj na državnu cestu Elsőrendű bekötőút Svincolo per strada primaria 都道府県道の乗り口 Adkomst til hovedvei Oprit naar hoofdweg Adkomst til hovedveg Dojazd do drogi krajowej Въезд на основную дорогу Påfart till huvudväg З’єднання з головною дорогою Secondary road طريق ثانوية Silnice II. třídy Landesstraße Δευτερεύων δρόμος Camino secundario II klassi maantee Route secondaire Županijska cesta Másodrendű főút Strada secondaria 都道府県道 Fylkesvei Secundaire weg Fylkesveg Droga wojewódzka Estrada secundária Второстепенная дорога Cesta II. triedy Sekundär väg Другорядна дорога Tertiary road طريق ثلاثية Silnice III. třídy Kreisstraße Τριτεύουσα οδός Camino terciario Kohalik tee Petite départementale ou communale Lokalna cesta Egyéb épített út Strada terziaria 重要道路 Småvei Derderangsweg Småveg Droga powiatowa Rua terciária Дорога Tertiär väg Третьорядна дорога Unclassified road طريق غير مصنفة Neoznačená cesta Ortsverbindungsstraße Μη κατηγοριοποιημένος δρόμος Carretera sin clasificar Klassifitseerimata tee Route non-classée Nerazvrstana cesta Kisebb burkolt út Strada non classificata 級外道路 Vei ikke klassifisert Niet-geclassificeerde weg Veg ikkje klassifisert Droga gminna Estrada não classificada Дорога местного значения Enskild väg Дорога без класифікації (місцева) Residential road طريق سكن Obecní komunikace Ortsstraße Αστική οδός Camino residencial Asulatee Rue résidentielle Települési út Strada residenziale 生活道路 Boligvei Weg in de stad Boligveg Droga lokalna Rua residencial Улица жилого района Väg inom bostadsområde Жила вулиця Service road Účelová komunikace Zufahrtstraße Βοηθητική οδός Camino de servicio Teenindustee Route d'accès Servisna cesta Szolgáló/üzemi út Strada di servizio サービス道 Bedieningsweg Droga serwisowa Estrada de serviço Служебный проезд Obslužná cesta Serviceväg (liten gata) Допоміжна дорога Track road طريق مشاة Nezpevněná komunikace Feld- oder Waldweg Χωματόδρομος Camino de tierra Põllutee Chemin Földút Strada forestale 農道や林道 Sti Sti Droga gruntowa Грунтовая дорога skogsväg Грунтові дороги Pedestrian priority road طريق أولوية للمشاة Put sa prioritetom za pješake Obytná zóna Spielstraße Δρόμος με προτεραιότητα πεζών Camino con prioridad para peatones Jalakäija eelistee Rue à majorité piétonne Cesta sa prioritetom za pješake Lakó/pihenő övezet Strada pedonale con traffico limitato 歩行者優先道路 Vei med prioritet for fotgjengere Primaire wandelweg Veg med prioritet for gåande Strefa zamieszkania Via prioritária para pedestres Дорога с приоритетом пешеходов Väg med prioritet för fotgängare Переважно пішохідна зона Pedestrian only road طريق فقط للمشاة Put samo za pješake Komunikace pouze pro chodce Fußgängerzone Δρόμος μόνο για πεζούς Calle Peatonal Ainult jalakäijate tee Rue exclusivement piétonne Cesta samo za pješake Sétálóutca Strada pedonale 歩行者専用道 Gågate Winkelwandelstraat Gågate Ciąg pieszy Via pra pedestres Дорога только для пешеходов Pešia zóna Cesta za pešce Väg endast för fotgängare Пішохідна зона Footway طريق للمشاة Stezka pro chodce Fußweg Πεζόδρομος Vía peatonal Jalgtee Voie piétonne Staza za pješake Gyalogút Sentiero 歩道 Gangvei Voetweg Gangveg Droga dla pieszych Passeio Pedonal Тротуар Chodník Pešpot Gångstig Пішохідна доріжка Cycleway طريق فقط للدراجات Cyklostezka Radweg Ποδηλατόδρομος Ciclovía Jalgrattatee Voie cyclable Biciklistička staza Kerékpárút Ciclabile 自転車道 Sykkelvei Fietspad Sykkelveg Droga rowerowa Ciclovia Велодорожка Cesta pre cyklistov Kolesarska steza Cykelbana Велосипедна доріжка Bridleway طريق الخيل Cesta pro koně Reitweg Camino para caballos Põllutee Chemin équestre Lovasút Strada per cavalli 馬道 Kjerrevei Ruiterpad Kjerreveg Ścieżka do jazdy konnej Дорога для верховой езды Cesta pre kone Gång-/Ridstig Дорога для вершників Steps درجات Stepenice Schodiště Treppe Σκαλοπάτια Escaleras Trepp Escaliers Stepenice Lépcső Passi trappsteg 階段 Trapper Trappen Trappar Schody Passos Лестница Schody Stopnice Trappsteg Сходи Bus guideway (not a bus way) Speciální cesta pro autobus (né vyhrazený pruh) Spurbus-Strecke Recorrido de autobuses (punto de información) Bussi abitee (mitte bussitee) Voie réservée aux bus guidés Buszvezetőút Tramvia (non una strada per autobus) ガイドウェイバス道(バス道ではない) Pas dla autobusów Автобусный рельс Spårbuss (ej bussfil) Рейковий автобус Unsurfaced road (old tag) Unsurfaced road (stará značka) Unbefestigte Straße (veraltet) Οδός χωρίς επίστρωση (παλιά ετικέτα) Camino sin asfaltar (etiqueta antigua) Pindamata tee (vananenud tähis) Route sans revêtement (étiquette dépréciée) Burkolatlan út (elavult címke) Non asfaltata (vecchio tag) 未舗装道路(古いタグ) Udekket vei (gammelt merke) Onverharde weg Udekket veg (gammelt merke) Nieutwardzona droga (przestarzały znacznik) Грунтовка (старый тег) Obelagd väg (gammal tagg) Дорга без покриття (застар) Landuse إستعمال الأرض Využití plochy Landnutzung Χρήση γης Uso de la tierra Maakasutus Utilisation du sol Földhasználat Suolo 土地利用 Landgebruik Zagospodarowanie terenu Землеиспользование Raba tal Markanvändning Використання землі Allotments حصص سكنية Pozemky Schrebergärten Κλήροι Parcelas Aiamaa Lotissements Parcele Bérelt parcellák Concessioni 貸し農園 Tomter Verkavelingen Tomter Ogródki działkowe Loteamentos Сады-огороды Záhradkárska oblasť Kolonilotter горо́д Basin حوض Vodní nádrž Wasserbecken Λεκάνη Lavabo Bassein Bassin Bazen Medence Bacino 水たまり、窪地 Basseng Stroomgebied Basseng Zbiornik wodny Бассейн Vodná nádrž Hamnbassäng Водойма Brownfield Přestavba Baulücke Βιομηχανική Zona industrial abandonada Jäätmaa Terrain en friche Barna telek Campo 更地 Rivningsområde Braakliggende grond Rivningsområde Teren poprzemysłowy Пустырь с развалинами Brownfield (opustený priemyselný objekt) Övergivet industri- eller affärsområde Очищене місце під забудову Cemetery مقبرة Groblje Hřbitov Friedhof Κοιμητήριο Cementerio Kalmistu Cimetière Groblje Temető Cimitero 共同墓地 Kirkegård Begraafplaats Kirkegard Cmentarz Cemitério Кладбище Cintorín Begravningsplats Кладовище Commercial zone منطقة تجارية Komercijalna zona Obchodní zóna Büros Εμπορική ζώνη Zona Comercial Ärimaa Zone tertiaire (bureaux) Trgovačko središte Kereskedelmi övezet Zona commerciale ビジネス街 Komersielt område Commerciële zone Komersielt område Teren handlowy Zona comercial Коммерческая зона Trgovsko središče Affärsområde Діловий квартал Construction zone منطقة تعمير Građevinska zona Staveniště Baustelle Κατασκευαστική ζώνη Zona de Construcción Ehitusplats Site "en construction" Gradilište Építkezés Zona in costruzione 建設中エリア Byggeplass Constructiezone Byggeplass Budowa Zona de construção Стройка Gradbišče Byggarbetsplats Будмайданчик Farm مزرعة Farma Zemědělství Landwirtschaft/Bauernhof Φάρμα Granja Talu Ferme Farma Gazdaság Fattoria 農場 Gård Boerderij Gardsbruk Gospodarstwo rolne Quinta Ферма Farma Kmetija Bondgård Ферма Forest غابة Šuma Les Wald Δάσος Bosque Mets Forêt Šuma Erdő Foresta 森林 Skog Woud Skog Las Floresta Лес Les Gozd Skog Ліс Greenfield حقل أخضر Výstavba na zelené louce Bauland Campo verde Roheala Espace vert Zöld telek Campo verde 建設予定地 Byggeområde Ontwikkelingsgebied Byggeplass Teren pod zabudowę Пустырь Greenfield (Projekt na zelenej lúke) Tidigare outnyttjat område (greenfield) Ділянка під нову забудову Industrial zone منطقة صناعية Industrijska zona Průmyslová zóna Industriegebiet Βιομηχανική ζώνη Zona industrial Tööstusmaa Zone industrielle Industrijska zona Ipari övezet Zona industriale 工業用地 Industriområde Industriële zone Industriområde Teren przemysłowy Zona industrial Промышленная зона Priemyselná zóna Industrijska cona Industriområde Промислова зона Landfill مطمر نفايات Skládka Deponie ΧΥΤΑ Vertedero Prügimägi Décharge Deponija Szemétlerakó Terra 埋め立てゴミ処理地 Avfallsdeponi Vuilnisbelt Avfallsdeponi Wysypisko śmieci Свалка Skládka odpadov Deponija Deponi (soptipp) Звалище Military عسكري Vojska Vojenský prostor Militär Στρατιωτικό Escuela Militar Militaarala Militaire Vojska Katonai terület/gyakorlótér Zona militare Millitært Militair Millitært Teren wojskowy Militar Военное Militärt område Військове Recreation ground ميدان الألعاب Rekreační oblast Erholungsgebiet Χώρος αναψυχής Zona de recreación Puhkeala Aire de jeux Rekreacijska površina Rekreációs terület Zona di svago 遊び場 Rekreasjonsområde Recreatiegebied Rekreasjonsområde Teren rekreacyjny Место отдыха Rekreacijska površina Rekreationsområde Зона відпочинку Reservoir (water) خزان (مياه) Rezervoar Přehrada Speicherbecken Υδατοδεξαμενή Reserva (agua) Vee reservuaar Bassin de retenue Spremnik (voda) Víztározó Riserva (acqua) ため池 Reservoir (vann) Waterreservoir Reservoir (vatn) Zbiornik retencyjny Reservatório (água) Водохранилище Rezervoar (voda) Vattenreservoar Водойма Residential zone منطقة سكنية Stambena zona Obytná zóna Wohngebiet Αστική ζώνη Zona Residencial Asula Zone résidentielle Lakóövezet Zona residenziale 住宅地 Boligområde Residentiële zone Boligområde Zabudowa mieszkaniowa Zona residencial Жилой район Obytná zóna Bostadsområde Жила зона Retail zone بيع بلمفرق Trgovinska zona Nákupní zóna Einzelhandel Ζώνη λιανικού εμπορίου Zona de venta al por menor Kaubandustsoon Vente au détail Kiskereskedelmi övezet Zona particolareggiata 商業地 Handelsområde Handelszone Handelsområde Strefa handlowa Zona de retalho Розничная торговля Detaljhandelsområde Торговий квартал Surface mineral extraction منجم إستخراج معادن Povrchová těžba Steinbruch Επιφανειακή εξαγωγή ορυκτών Explotación minera en la superficie Pealmaa kaevandus Mine à ciel ouvert Külszíni fejtés Superficie di estrazione di minerali 露天掘り鉱山 Overflatebrudd for mineraler Oppervlakkige ontginning van mineralen Overflatebrudd for mineraler Kamieniołom Extracção mineral á superficie Открытый карьер Mineralutvinning (vid jordytan) Видобування корисних копалин (карь’єр) Village green مرج/بستان قرية Městská zeleň Dorfwiese Parque municipal Roheala Espace vert Falupark Villaggio verde 里山 Dorpsgroen Łąka wiejska Зелёная деревня Byallmänning (gräsplätt) Суспільні луги Oneway إتجاه واحد Jednosměrka Einbahnstraße Μονόδρομος Una sola vía Ühesuunaline Sens unique Jednosmjerno Egyirányú Senso unico 一方通行 Enveiskjøring Enkelrichting Einvegskjøyring Jednokierunkowa Sentido único Односторонняя Jednosmerka Enosmerna Enkelriktat Одностронній рух Amenity خدمات Občanská vybavenost Nutzung Ευκολίες Comodidades Hüvis Équipement Szolgáltatás Attrattiva 各種施設 Faciliteit Miejsce Инфраструктура Vybavenosť Facilitet Інфраструктура Arts centre مركز ثقافي Centrum umění Kulturzentrum κέντρο τεχνών Centro de Artes Kunstigalerii Centre culturel Kulturni centar Művészeti központ Centro culturale 美術館 Kunstsenter Cultureel centrum Kunstsenter Centrum kultury/sztuki Centro de artes Центр искусств Centrum umenia Kulturni center Konstcenter Арт-центр ATM or cash point آلة دفع نقود أو نقطة دفع نقدي Bankomat, výběr v hotovosti Geldautomat ATM ή σημείο μετρητών Cajero automático ATM või sularaha DAB ou point de payement Bankomat Pénzkiadó automata Bancomat o ritiro contanti ATMやキャッシュディスペンサー Minibank Geldautomaat Minibank Bankomat Caixa Multibando Банкомат Bankomat Bankomat / uttagsautomat Банкомат (пункт видачі готівки) Bank مصرف Banka Banka Bank Τράπεζα Banco Pank Banque Banka Bank Banca 銀行 Bank Bank Bank Bank Banco Банк Banka Banka Bank Банк Bank with ATM مصرف و آلة نقود Banka s bankomatem Bank mit Geldautomat Τράπεζα με ATM Banco con Cajero Automático Sularahaautomaadiga pank Banque et DAB Banka s bankomatom Bank pénzkiadó automatával Banca con Bancomat ATMのある銀行店舗 Bank med Minibank Bank met geldautomaat Bank med Minibank Bank z bankomatem Banco com caixa multibanco Банк с банкоматом Banka s bankomatom Banka z bankomatom Bank med automatuttag Банк + Банкомат Beer garden جنينة جعة Letní hospoda Biergarten Terraza Õllekas Jardin à bière Sörkert Giardino della birra ビアーガーデン Biertuin Ogródek piwny Пивной сад Biergarten (uteservering för öl) Генделик Parking for bicycles موقف للدراجات Parking za bicikle Parkování pro kola Fahrradstellplatz Στάθμευση ποδηλάτων Aparcamiento de Bicicletas Jalgratta parkla Parking pour vélos Parking za bicikle Kerékpártároló Parcheggio per biciclette 自転車駐輪場 Sykkelparkering Parkeerplaats voor fietsen Sykkelparkering Parking rowerowy Parque de estacionamento para bicicletas Велосипедная стоянка Cykelparkering Стоянка велосипедів Bicycle Rental إستئجار دراجة Rentiranje Bicikla Půjčovna kol Fahrradmietstation Ενοικίαση ποδηλάτων Alquiler de Bicicletas Jalgratta rent Location de vélos Izanajmljivanje bicikala Kerékpárkölcsönző Noleggio biciclette 自転車レンタル Sykkelutleie Fietsverhuur Sykkelutleige Wypożyczalnia rowerów Aluguer de bicicletas Прокат велосипедов Požičovňa bicyklov Najem koles Cykeluthyrning Прокат велосипедів Bureau de change صرّاف Mjenjačnica Směnárna Wechselstube Casa de Cambios Valuutavahetus Bureau de change Mjenjačnica Pénzváltó Cambio valuta 両替所 Vekslingskontor Wisselkantoor Kantor Обмен валюты Zmenáreň Menjalnica Växelbyrå Обмін валют Bus station محطة نقليات عامة Autobuska stanica Autobusové nádraží Bushaltestelle Σταθμός λεωφορείων Estación de autobuses Bussijaam Gare routière Autobusna postaja Autóbuszállomás Stazione autobus バスステーション Bussstasjon Busstation Bussstasjon Dworzec autobusowy Estação de autocarros Автовокзал Autobusová stanica Avtobusna postaja Busstation Автостанція Cafe مقهى إستراحة Cafe Kavárna Cafe Καφέ Cafetería Kohvik Café Kafić Kávézó Cafè カフェ Kafe Café Kafe Kafejka Café Кафе Kaviareň Kafé Кафе Car Rental إستئجار سيارة Rentiranje Auta Půjčovna aut Autovermietung Ενοικίαση Αυτοκινήτων Alquiler de Automóviles Auto rent Location de voiture Iznajmljivanje automobila Autókölcsönző Noleggo auto レンタカー Bilutleie Autoverhuur Bilutleige Wypożyczalnia samochodów Aluguer de automóvel Прокат автомобилей Požičovňa áut Najem avtomobilov Biluthyrning Прокат автівок Car Sharing مشاركة سيارات Sdílení aut Autotausch Κοινή χρήση αυτοκινήτων Compartir auto Autojagamine Co-voiturage Közös autók Car Sharing カーシェアリング Bildeling Autodelen Bildeling Wspóldzielenie samochodów Partilha de carro Совместное использование автомобилей Bilpool Погодинний прокат автівок Cinema سينما Kino Kino Kino Κινηματογράφος Cine Kino Cinéma Kino Mozi Cinema 映画館 Kino Bioscoop Kino Kino Cinema Кинотеатр Kino Kino Biograf Кіно College كلّية Koledž Vysoká škola Gymnasium Κολέγιο Instituto Kolledž Établissement d'enseignement supérieur Fakultet Főiskola College 短大 Høyskole Campus Høgskole Szkoła wyższa Universidade Колледж Högskola Коледж Court house محكمة Sud Soud Gericht Δικαστήριο Juzgados Kohtumaja Palais de justice Sud Bíróság Corte 裁判所 Rettssal Gerechtsgebouw Rettssal Sąd Tribunal Дом правосудия Sodišče Domstolsbyggnad / Tingshus Суд Crematorium محرقة جثث Krematorijum Krematorium Krematorium Κρεματόριο Crematorio Krematoorium Crématorium Krematorij Hamvasztó Crematorio 火葬場 Krematorium Crematorium Krematorium Krematorium Crematório Крематорий Krematórium Krematorij Krematorium Крематорій Source of drinking water نبع ماء صالحة للشرب Izvor pitke vode Zdroj pitné vody Trinkwasser Πηγή πόσιμου νερού Manantial de agua potable Joogivee allikas Source d'eau potable Izvor pitke vode Ivóvíz Fonte di acqua potabile 飲み水の水源 Drikkevannskilde Drinkwaterbron Źródło wody pitnej Fonte com águo potável Питьевая вода Zdroj pitnej vody Vir pitne vode Källa för dricksvatten Питна вода Fast food وجبات سريعة Rychlé občerstvení Schnellimbiss Fast food Comida Rápida Kiirtoit Restauration rapide Brza prehrana Gyorsétterem Fast food ファーストフード Fast food Fast food Fast food Fast food Comida de rápida confecção Кафе Snabbmat Забігайлівка Fire Station فوج إطفاء Požární stanice Feuerwehr Σταθμός Πυροσβεστικής Estación de bomberos Tuletõrjedepoo Caserne de pompiers Vatrogasci Tűzoltóság Pompieri 消防署 Brannstasjon Brandweerkazerne Brannstasjon Straż pożarna Bombeiros Пожарное депо Požiarna stanica Gasilski dom Brandstation Пожежна станція Fountain نافورة Fontana Fontána, kašna Springbrunnen Συντριβάνι Fuente Purskaev Fontaine Fontana Szökőkút Fontana 噴水 Fontene Fontein Fontene Fontanna Fonte Фонтан Fontána Fontän Фонтан Fuel وقود Gorivo Benzinka Tankstelle Καύσιμα Combustible Kütus Station service Gorivo Benzinkút Benzina ガソリンスタンド Bensinstasjon Brandstof Bensinstasjon Stacja benzynowa Combustível Заправочная станция Bränsle Заправка Small place of burial مقبرة صغيرة Malý hřbitov Grabstelle Μικρός τόπος ταφής Pequeño cementerio Väike matmispaik Petit cimetière Malo groblje Sírhely Piccolo luogo di sepoltura 墓地 Gravsted Begraafplaats Cmentarz (mały) Могила Majhno pokopališče Liten begravningsplats Цвинтар (малий) Hospital مستشفى Bolnica Nemocnice Krankenhaus Νοσοκομείο Hospital Haigla Hôpital Bolnica Kórház Ospedale 病院 Sykehus Hospitaal Sjukehus Szpital Hospital Больница Nemocnica Bolnišnica Sjukhus Лікарня Library مكتبة عامة Biblioteka Knihovna Bibliothek Βιβλιοθήκη Biblioteca Raamatukogu Bibliothèque Knjižnica Könyvtár Biblioteca 図書館 Bibliotek Bibliotheek Bibliotek Biblioteka Biblioteca Библиотека Knižnica Knjižnica Bibliotek Бібліотека Nightclub نادي ليلي Noćni klub Noční podnik Nachtclub Νυχτερινό Κέντρο Club nocturno Ööklubi Boîte de nuit Noćni klub Éjszakai szórakozóhely Nightclub ナイトクラブ Nattklubb Nachtclub Nattklubb Klub nocny Discoteca Ночной клуб Nočný klub Nattklubb Нічний клуб Parking موقف سيارات Parking Parkoviště Parkplatz Χώρος στάθμευσης Aparcamiento Parkimine Parking Parking Parkoló Parcheggio 駐車場 Parkering Parkeerplaats Parkering Parking Parque de estacionamento Стоянка Parkovisko Parkirišče Parkeringsplats Стоянка Pharmacy صيدلية Apoteka Lékarna Apotheke Φαρμακείο Farmacia Apteek Pharmacie Ljekarna Gyógyszertár Farmacia 薬局 Apotek Apotheek Apotek Apteka Farmácia Аптека Lekáreň Lekarna Apotek Аптека Place of Worship معبد Bohoslužebné místo Anbetungsort Τόπος Λατρείας Lugar de culto Palvekoht Lieu de culte Mjesto bogoštovlja Vallásgyakorlóhely Luogo di culto 祈りのための場所 Tilbedelsessted Gebedsplaats Tilbedingsted Miejsce kultu Место поклонения Kraj čaščenja Religiös helgedom Культове місце Police Station مركز شرطة Policijska Stanica Policejní stanice Polizeidienststelle Σταθμός Αστυνομίας Estación policial Politsei jaoskond Poste de police Policijska stanica Rendőrség Stazione di polizia 警察署・交番 Politistasjon Politiekazerne Politistasjon Komenda policji Esquadra Милицейский участок Policajná stanica Policijska postaja Polisstation Відділення міліції Post Box صندوق بريد Poštovní schránka Briefkasten Γραμματοκιβώτιο Buzón de correos Postkast Boîte aux lettres Poštanski sandučić Postaláda Cassetta delle lettere ポスト Postkasse Brievenbus Postkasse Skrzynka pocztowa Marco de correio Почтовый ящик Poštová schránka Poštni nabiralnik Brevlåda Поштова скринька Post Office مكتب البريد Pošta Pošta Postamt Ταχυδρομείο Oficina Postal Postkontor Bureau de poste Poštanski ured Posta Ufficio postale 郵便局 Postkontor Postkantoor Postkontor Poczta Correios Почтовое отделение Pošta Poštni urad Postkontor Пошта Prison سجن Zatvor Věznice Gefängnis Φυλακή Prisión Vangla Prison Zatvor Börtön Prigione 刑務所 Fengsel Gevangenis Fengsel Więzienie Prisão Тюрьма Vezenie Zapor Fängelse В’язниця Pub حانة Bar Hospoda Kneipe Pub Bar Pubi Bar Kocsma Bar バー("Pub") Pub Bar Pub Pub Bar Пивной бар Krčma Pub Шинок Public building مبنى عام Javna zgrada Státní úřad Öffentliches Gebäude Δημόσιο κτήριο Edificio Público Avalik ehitis Bâtiment public Javna zgrada Középület Edificio pubblico 公共の建物 Offentlig bygning Publiek gebouw Offentleg bygning Budynek publiczny edificio público Общественное здание Javna zgradba Offentlig byggnad Громадський заклад Public Telephone هاتف عمومي Javni Telefon Veřejný telefon Telefon Τηλέφωνο για το κοινό Teléfono Público Taksofon Téléphone public Javni telefon Nyilvános telefon Telefono pubblico 公衆電話 Telefonboks Publieke telefoon Telefonboks Budka telefoniczna Telefone público Общественный телефон Javna telefonska govorilnica Publik telefon Громадський телефон Recycling Facilities مرافق إعادة التدوير Recyklační místo Recycling-Einrichtung Εγκαταστάσεις Ανακύκλωσης Facilidades de reciclamiento Prügitöötlus jaam Point de collecte pour le recyclage Reciklažno dvorište Újrahasznosítás Impianti di riciclaggio リサイクル施設 Resirkuleringsanlegg Recyclagevoorzieningen Resirkuleringsanlegg Centrum recyklingowe Instalações de reciclagem Переработка отходов Återvinningsstation Контейнери для сміття Restaurant مطعم Restoran Restaurace Restaurant Εστιατόριο Restaurante Restoran Restaurant Restoran Étterem/vendéglő Ristorante レストラン・食堂 Restaurant Restaurant Restaurant Restauracja Restaurante Ресторан Reštaurácia Restavracija Restaurang Ресторан School مدرسة Škola Škola Schule Σχολείο Escuela Kool École Škola Iskola Scuola 学校 Skole School Skule Szkoła Escola Школа Škola Šola Skola Школа Taxi تاكسي Taxi Taxi Taxi Ταξί Taxi Takso Taxi Taxi Taxi Taxi タクシー Taxi Taxi Taxi Postój taksówek Taxi Такси Taxi Taxi Taxi Таксі Theatre or opera house مسرح أو مسرح غنائي Pozorište ili opera Divadlo nebo opera Theater oder Oper Λυρική σκηνή Teatro o casa de la ópera Teater või ooperimaja Théatre ou Opéra Kazalište ili opera Színház vagy operaház Teatro 劇場やオペラハウス Teater eller Operahus Theater of opera Teater eller Operahus Teatr lub opera Teatro ou Casa de opera Театр Divadlo alebo opera Gledališče ali opera Teater eller operahus Опера, театр Toilets مراحيض Veřejné záchody Toiletten Τουαλέτες Baños Tualetid Toilettes Zahodi WC Toilets トイレ Toaletter Toiletten Toalettar Szalet Casas de banho Туалеты Toalety Stranišča Toaletter Туалет Town hall بلدية Gradska skupština Radnice Rathaus Δημαρχείο Ayuntamiento Raekoda Mairie Gradska vječnica Városháza/közösségi épület Municipio 役所 Rådhus Stadhuis Rådhus Ratusz Муниципалитет Radnica (obecný úrad) Mestna hiša Rådhus / Stadshus Міська державна адміністрація. University جامعة Univerzitet Univerzita, vysoká škola Universität Πανεπιστήμιο Universidad Ülikool École supérieure/Université Sveučilište Egyetem Università 大学 Universitet Universiteit Universitet Uniwersytet Universidade Университет Univerzita Univerza Universitet Університет Waste Disposal رمي النفايات Kanál, místo pro odpadky Mülldeponie Απόρριψη αποβλήτων Vertedero Prügila Déchetterie Odlagalište otpada Szemétlerakó/gyűjtő Smaltimento rifiuti ゴミ箱 Avfallshåndtering Afvalverwerking Avfallshandtering Wysypisko śmieci Lixeira Мусорный контейнер Avfallsdeponi Майданчик збору відходів Religion الديانة Religija Náboženství Religion Θρησκεία Religión Usk Religion Religija Vallás Religione 宗教 Religion Godsdienst Religion Religia Religião Религия Náboženstvo Vera Religion Релігія Buddhist بوذي Budist Budhistický Buddistisch Βουδιστής Budista Budistlik Boudhiste Buddhista Buddista 仏教 Buddhist Boeddhistisch Buddhist Buddyzm Budista Буддистский Buddhism Буддизм Christian نصراني Kršćanski Křesťanský Christlich Χριστιανός Cristiano Kristlik Chrétien Kršćanski Keresztény Cristiano キリスト教 Kristen Christelijk Kristen Chrześcijaństwo Cristã Христианский Krščanska Kristet Християнство Jewish يهودي Židov Židovský Jüdisch Ιουδαϊκό Judío Juudi Juif Židovski Zsidó Ebraico ユダヤ教 Jødisk Joods Jødisk Judaizm Judeu Еврейская Židovska Judiskt Іудаїзм Muslim مسلم Musliman Muslimský Muslimisch Musulmán Moslemi Musulman Muslimanski Muzulmán Musulmano イスラム教 Muslim Moslim Muslim Islam Muçulmano Мусульманский Muslimanska Mulimskt Мусульманство Denomination تسمية Denominace Konfession Δόγμα Denominación Usutunnistus Dénomination Vallási felekezet Denominazione 宗派 Trosretning Waarde Trosretning Wyznanie Denominação Конфессия Vyznanie (cirkevné) Samfund Віросповідання House number رقم المنزل Kućni broj Číslo domu Hausnummer Αριθμός σπιτιού Número de casa Maja number Numéro de Maison Kućni broj Házszám Numero civico 住居番号 Husnummer Huisnummer Husnummer Numer domu Número da Casa Номер дома Číslo domu Husnummer Номер будинку House street الشارع حيث المنزل موجود Domácí ulice Straße zum Haus Calle de la casa Majatänav Rue de la Maison Utca/közterület Via 住居街 Gate Huizenstraat Gate Podjazd Улица Husvägen Житлова зона Number interpolation Interpolace číslování Nummerninterpolation Παρεμβολή αριθμών Numero de interpolacion Numbrite polaarsus Interpolation de numéro Számozás Interpolazione numerica 番号展開 Nummerinterpolering Soort huisnummering Nummerinterpolering Interpolacja numerów Interpolação do número Интерполяция номеров Nummerisk interpolering Вставка номерів even مثنى paran sudé gerade Ζυγά pares paaris pair parni páros pari 偶数 partall even partal parzyste mesmo чётные párne jämn парний odd مفرد neparan liché ungerade Μονά Extraño paaritu impair neparni páratlan dispari 奇数 oddetall oneven oddetal nieparzyste нечётные nepárne udda непарний all الكلّ svi vše alle όλα todos kõik tous sve mind tutti 全て alle alle alle wszystkie Tudo все alla всі merkaartor-0.18.1/Templates/mine.mat000066400000000000000000004631341177067165300173710ustar00rootroot00000000000000 Place مكان Mjesto Místo Ort Τόπος Lugar Koht Lieu Kraj Hely Luogo 場所 Sted Plaats Stad Miejsca Local Место Miesto Kraj Plats Місце City (Pop. > 100.000) مدينة (عدد السكان يزيد عن مئة ألف) Město > 100.000 obyvatel Großstadt (Einw. > 100.000) Πόλη (Πλυθ. > 100.000) Ciudad (Pob. > 100.000) Suurlinn (Pop. > 100.000) Ville (Pop. > 100.000) Grada (Pop. > 100.000) Nagyváros > 100.000 lakos Città (Pop. > 100.000) 市(人口 10万人以上) By (Folketall > 100.000) Stad (aantal inwoners> 100.000) By (Folketal > 100.000) Miasto (ludność > 100 000) Cidade (Pop. > 100.000) Город (Нас. > 100.000) Mesto (Obyv. > 100.000) Stad (mer än 100 000 inv.) Місто (насел. > 100 000) Town (10.000 < Pop. < 100.000) بلدة (أكثر من 10000 نسمة و أقل من 100000) Město (10.000 - 100.000 obyvatel) Stadt (10.000 < Einw. < 100.000) Κωμόπολη (10.000 < Πλυθ. < 100.000) Villa (10.000 < Pob. < 100.000) Linn Ville (de 10.000 à 100.000 habitants) Grad (10.000 < Pop. < 100.000) Kisváros (10.000 - 100.000 lakos) Paese (10.000 < Pop. < 100.000) 町(人口1万~10万) By (10.000 < Folketall < 100.000) Stadje (10.000 < aantal inwoners < 100.000) By (10.000 < Folketal < 100.000) Miejscowość (ludność 10 000-100 000) Vila Город (10.000 < Нас. < 100.000) Mesto (10.000 < preb. < 100.000) Samhälle (mellan 10 000 till 100 000 inv.) Містечко (10 000< насел.<100 000) Village (Pop. < 10.000) قرية (أقل من 10000 نسمة) Vesnice (do 10.000 Obyvatel) Dorf (Einw. < 10.000) Χωριό (Πλυθ. < 10.000) Pueblo (Pob. <10.000) Alev (Pop. < 10.000) Village (Pop. < 10.000) Selo (Pop. < 10.000) Falu (10.000 lakosnál kevesebb) Villaggio (Pop. < 10.000) 村(人口1万人以下) Tettsted (Folketall < 10.000) Dorp (Aantal inwoners < 10.000) Tettstad (Folketal < 10.000) Wieś (ludność < 10 000 Aldeia Деревня (Нас. < 10.000) Vas (< 10.000 preb.) By (Mindre än 10 000 inv.) Село (насел. < 10 000) Hamlet (a few houses) مجموعة بيوت Ves (několik domů) Weiler (ein paar Häuser) Οικισμός Aldea (pocas casas) Küla Hameau Zaselak (nekoliko kuća) Apró település (néhány ház) Frazione 集落(数軒の家) Sted (noen få hus) Gehucht Sted (noken få hus) Wólka Aldeia (poucas casas) Посёлок (несколько домов) Kopanica Zaselek (nekaj hiš) Småby (enstaka hus) Хутір (кілька хатин) Suburb ضاحية Predgrađe Předměstí Stadtteil Προάστιο Barrio Linnaosa Banlieue Predgrađe Előváros Sobborgo 近郊住宅地 Forstad/bydel Buitenwijk Poststad Dzielnica Suburbano Пригород Štvrť Mestna četrt Förort Передмістя Locality (named place) المحلة (مكان/محلة ذات إسم) Lokalita (pojmenované místo) Ort (benannter Platz) Τοποθεσία Localidad (lugar) Punkt (nimega koht) Lieu-dit Hely (nevesített hely) Località (nome luogo) 地域 (名前の付いている場所) Sted (navn på sted) Sted (namn på plass) Miejsce (nazwane) Localidade (nome do lugar) Местное название Lokalita (pomenované miesto) Lokalitet (namngedd plats) Місцевість (назва місця) Building مبنى Zgrada Budova Gebäude Κτήριο Edificio Hoone Bâtiment Zgrada Épület Palazzo 建物 Bygning Gebouw Bygning Budynek Edifício Здание Budova Zgradba Byggnad Будинок Area مساحة Područje Oblast Fläche Περιοχή Área Ala Aire Područje Terület Area エリア Område Gebied Område Obszar Área Область Plocha Površina Yta Ділянка Name الإسم Ime Jméno Name Όνομα Nombre Nimi Nom Naziv Név Nome 名前 Navn Naam Namn Nazwa Nome Название Meno Ime Namn Назва Highway type نوع الطريق Typ silnice Straßentyp Τύπος οδικής αρτηρίας Tipo de carretera Tee tüüp Type de route Út típusa Tipo strada ハイウェイ タイプ Riksvei Type Wegtype Type ferdselsveg Typ drogi Tipo auto-estrada Тип автомобильной дороги Typ komunikácie Typ av väg Тип дороги Motorway طريق سريع Dálnice Autobahn Αυτοκινητόδρομος Autopista Maantee Autoroute Autocesta Autópálya Autostrada 高速道路 Motorvei Autoweg Motorveg Autostrada Estrada Автомагистраль Diaľnica Avtocesta Motorväg Автомагістраль Ramp to motorway مدخل طريق سيارات سريع Dálniční nájezd Autobahnanschlussstelle Είσοδος αυτοκινητόδρομου Rampa de autopista Kiirtee pealesõit Bretelle d'accès ou de sortie d'une autoroute Spoj na autocestu Autópálya-bekötőút Svincolo per l'autostrada 高速道路の乗り口 Adkomst til Motorvei Oprit Adkomst til Motorveg Dojazd do autostrady Въезд на шоссе Motorvägspåfart З’єднання з автомагістраллю Trunk road طريق جزعية Víceproudá cesta Schnellstraße Carretera cortada Kiirtee Voie rapide Autóút Strada principale 国道 Stamvei Expressweg Stamveg Droga ekspresowa Автомагистраль Motortrafikled Магістраль Ramp to trunk road Nájezd na víceproudou cestu Schnellstraßenanschlussstelle Rampa de acceso a carretera Kiirtee pealesõit Voie d'accès à une voie rapide Autóútbekötő Svincolo per la strada principale 国道の乗り口 Adkomst til stamvei Oprit naar expressweg Adkomst til stamveg Dojazd do drogi ekspresowej Въезд на автомагистраль Påfart till motortrafikled З’єднання з магістраллю Primary road طريق رئيسية Silnice I. třídy Bundesstraße Κύριος δρόμος Carretera principal Esimese klassi tee Route nationale Državna cesta Elsőrendű főút Strada primaria 主要地方道 Hovedvei Hoofdweg Hovedveg Droga krajowa Estrada principal Главная дорога Huvudväg Головна дорога Ramp to primary road طلعة إلى طريق رئيسية Nájezd na silnici I. třídy Bundesstraßenanschlussstelle Είσοδος πρωτεύοντος δρόμου Rampa al camino primario Maantee pealesõit Voie d'accès à une route nationale Spoj na državnu cestu Elsőrendű bekötőút Svincolo per strada primaria 都道府県道の乗り口 Adkomst til hovedvei Oprit naar hoofdweg Adkomst til hovedveg Dojazd do drogi krajowej Въезд на основную дорогу Påfart till huvudväg З’єднання з головною дорогою Secondary road طريق ثانوية Silnice II. třídy Landesstraße Δευτερεύων δρόμος Camino secundario II klassi maantee Route secondaire Županijska cesta Másodrendű főút Strada secondaria 都道府県道 Fylkesvei Secundaire weg Fylkesveg Droga wojewódzka Estrada secundária Второстепенная дорога Cesta II. triedy Sekundär väg Другорядна дорога Tertiary road طريق ثلاثية Silnice III. třídy Kreisstraße Τριτεύουσα οδός Camino terciario Kohalik tee Petite départementale ou communale Lokalna cesta Egyéb épített út Strada terziaria 重要道路 Småvei Derderangsweg Småveg Droga powiatowa Rua terciária Дорога Tertiär väg Третьорядна дорога Unclassified road طريق غير مصنفة Neoznačená cesta Ortsverbindungsstraße Μη κατηγοριοποιημένος δρόμος Carretera sin clasificar Klassifitseerimata tee Route non-classée Nerazvrstana cesta Kisebb burkolt út Strada non classificata 級外道路 Vei ikke klassifisert Niet-geclassificeerde weg Veg ikkje klassifisert Droga gminna Estrada não classificada Дорога местного значения Enskild väg Дорога без класифікації (місцева) Residential road طريق سكن Obecní komunikace Ortsstraße Αστική οδός Camino residencial Asulatee Rue résidentielle Települési út Strada residenziale 生活道路 Boligvei Weg in de stad Boligveg Droga lokalna Rua residencial Улица жилого района Väg inom bostadsområde Жила вулиця Service road Účelová komunikace Zufahrtstraße Βοηθητική οδός Camino de servicio Teenindustee Route d'accès Servisna cesta Szolgáló/üzemi út Strada di servizio サービス道 Bedieningsweg Droga serwisowa Estrada de serviço Служебный проезд Obslužná cesta Serviceväg (liten gata) Допоміжна дорога Track road طريق مشاة Nezpevněná komunikace Feld- oder Waldweg Χωματόδρομος Camino de tierra Põllutee Chemin Földút Strada forestale 農道や林道 Sti Sti Droga gruntowa Грунтовая дорога skogsväg Грунтові дороги Pedestrian priority road طريق أولوية للمشاة Put sa prioritetom za pješake Obytná zóna Spielstraße Δρόμος με προτεραιότητα πεζών Camino con prioridad para peatones Jalakäija eelistee Rue à majorité piétonne Cesta sa prioritetom za pješake Lakó/pihenő övezet Strada pedonale con traffico limitato 歩行者優先道路 Vei med prioritet for fotgjengere Primaire wandelweg Veg med prioritet for gåande Strefa zamieszkania Via prioritária para pedestres Дорога с приоритетом пешеходов Väg med prioritet för fotgängare Переважно пішохідна зона Pedestrian only road طريق فقط للمشاة Put samo za pješake Komunikace pouze pro chodce Fußgängerzone Δρόμος μόνο για πεζούς Calle Peatonal Ainult jalakäijate tee Rue exclusivement piétonne Cesta samo za pješake Sétálóutca Strada pedonale 歩行者専用道 Gågate Winkelwandelstraat Gågate Ciąg pieszy Via pra pedestres Дорога только для пешеходов Pešia zóna Cesta za pešce Väg endast för fotgängare Пішохідна зона Footway طريق للمشاة Stezka pro chodce Fußweg Πεζόδρομος Vía peatonal Jalgtee Voie piétonne Staza za pješake Gyalogút Sentiero 歩道 Gangvei Voetweg Gangveg Droga dla pieszych Passeio Pedonal Тротуар Chodník Pešpot Gångstig Пішохідна доріжка Cycleway طريق فقط للدراجات Cyklostezka Radweg Ποδηλατόδρομος Ciclovía Jalgrattatee Voie cyclable Biciklistička staza Kerékpárút Ciclabile 自転車道 Sykkelvei Fietspad Sykkelveg Droga rowerowa Ciclovia Велодорожка Cesta pre cyklistov Kolesarska steza Cykelbana Велосипедна доріжка Bridleway طريق الخيل Cesta pro koně Reitweg Camino para caballos Põllutee Chemin équestre Lovasút Strada per cavalli 馬道 Kjerrevei Ruiterpad Kjerreveg Ścieżka do jazdy konnej Дорога для верховой езды Cesta pre kone Gång-/Ridstig Дорога для вершників Steps درجات Stepenice Schodiště Treppe Σκαλοπάτια Escaleras Trepp Escaliers Stepenice Lépcső Passi trappsteg 階段 Trapper Trappen Trappar Schody Passos Лестница Schody Stopnice Trappsteg Сходи Bus guideway (not a bus way) Speciální cesta pro autobus (né vyhrazený pruh) Spurbus-Strecke Recorrido de autobuses (punto de información) Bussi abitee (mitte bussitee) Voie réservée aux bus guidés Buszvezetőút Tramvia (non una strada per autobus) ガイドウェイバス道(バス道ではない) Pas dla autobusów Автобусный рельс Spårbuss (ej bussfil) Рейковий автобус Unsurfaced road (old tag) Unsurfaced road (stará značka) Unbefestigte Straße (veraltet) Οδός χωρίς επίστρωση (παλιά ετικέτα) Camino sin asfaltar (etiqueta antigua) Pindamata tee (vananenud tähis) Route sans revêtement (étiquette dépréciée) Burkolatlan út (elavult címke) Non asfaltata (vecchio tag) 未舗装道路(古いタグ) Udekket vei (gammelt merke) Onverharde weg Udekket veg (gammelt merke) Nieutwardzona droga (przestarzały znacznik) Грунтовка (старый тег) Obelagd väg (gammal tagg) Дорга без покриття (застар) Landuse إستعمال الأرض Využití plochy Landnutzung Χρήση γης Uso de la tierra Maakasutus Utilisation du sol Földhasználat Suolo 土地利用 Landgebruik Zagospodarowanie terenu Землеиспользование Raba tal Markanvändning Використання землі Allotments حصص سكنية Pozemky Schrebergärten Κλήροι Parcelas Aiamaa Lotissements Parcele Bérelt parcellák Concessioni 貸し農園 Tomter Verkavelingen Tomter Ogródki działkowe Loteamentos Сады-огороды Záhradkárska oblasť Kolonilotter горо́д Basin حوض Vodní nádrž Wasserbecken Λεκάνη Lavabo Bassein Bassin Bazen Medence Bacino 水たまり、窪地 Basseng Stroomgebied Basseng Zbiornik wodny Бассейн Vodná nádrž Hamnbassäng Водойма Brownfield Přestavba Baulücke Βιομηχανική Zona industrial abandonada Jäätmaa Terrain en friche Barna telek Campo 更地 Rivningsområde Braakliggende grond Rivningsområde Teren poprzemysłowy Пустырь с развалинами Brownfield (opustený priemyselný objekt) Övergivet industri- eller affärsområde Очищене місце під забудову Cemetery مقبرة Groblje Hřbitov Friedhof Κοιμητήριο Cementerio Kalmistu Cimetière Groblje Temető Cimitero 共同墓地 Kirkegård Begraafplaats Kirkegard Cmentarz Cemitério Кладбище Cintorín Begravningsplats Кладовище Commercial zone منطقة تجارية Komercijalna zona Obchodní zóna Büros Εμπορική ζώνη Zona Comercial Ärimaa Zone tertiaire (bureaux) Trgovačko središte Kereskedelmi övezet Zona commerciale ビジネス街 Komersielt område Commerciële zone Komersielt område Teren handlowy Zona comercial Коммерческая зона Trgovsko središče Affärsområde Діловий квартал Construction zone منطقة تعمير Građevinska zona Staveniště Baustelle Κατασκευαστική ζώνη Zona de Construcción Ehitusplats Site "en construction" Gradilište Építkezés Zona in costruzione 建設中エリア Byggeplass Constructiezone Byggeplass Budowa Zona de construção Стройка Gradbišče Byggarbetsplats Будмайданчик Farm مزرعة Farma Zemědělství Landwirtschaft/Bauernhof Φάρμα Granja Talu Ferme Farma Gazdaság Fattoria 農場 Gård Boerderij Gardsbruk Gospodarstwo rolne Quinta Ферма Farma Kmetija Bondgård Ферма Forest غابة Šuma Les Wald Δάσος Bosque Mets Forêt Šuma Erdő Foresta 森林 Skog Woud Skog Las Floresta Лес Les Gozd Skog Ліс Greenfield حقل أخضر Výstavba na zelené louce Bauland Campo verde Roheala Espace vert Zöld telek Campo verde 建設予定地 Byggeområde Ontwikkelingsgebied Byggeplass Teren pod zabudowę Пустырь Greenfield (Projekt na zelenej lúke) Tidigare outnyttjat område (greenfield) Ділянка під нову забудову Industrial zone منطقة صناعية Industrijska zona Průmyslová zóna Industriegebiet Βιομηχανική ζώνη Zona industrial Tööstusmaa Zone industrielle Industrijska zona Ipari övezet Zona industriale 工業用地 Industriområde Industriële zone Industriområde Teren przemysłowy Zona industrial Промышленная зона Priemyselná zóna Industrijska cona Industriområde Промислова зона Landfill مطمر نفايات Skládka Deponie ΧΥΤΑ Vertedero Prügimägi Décharge Deponija Szemétlerakó Terra 埋め立てゴミ処理地 Avfallsdeponi Vuilnisbelt Avfallsdeponi Wysypisko śmieci Свалка Skládka odpadov Deponija Deponi (soptipp) Звалище Military عسكري Vojska Vojenský prostor Militär Στρατιωτικό Escuela Militar Militaarala Militaire Vojska Katonai terület/gyakorlótér Zona militare Millitært Militair Millitært Teren wojskowy Militar Военное Militärt område Військове Recreation ground ميدان الألعاب Rekreační oblast Erholungsgebiet Χώρος αναψυχής Zona de recreación Puhkeala Aire de jeux Rekreacijska površina Rekreációs terület Zona di svago 遊び場 Rekreasjonsområde Recreatiegebied Rekreasjonsområde Teren rekreacyjny Место отдыха Rekreacijska površina Rekreationsområde Зона відпочинку Reservoir (water) خزان (مياه) Rezervoar Přehrada Speicherbecken Υδατοδεξαμενή Reserva (agua) Vee reservuaar Bassin de retenue Spremnik (voda) Víztározó Riserva (acqua) ため池 Reservoir (vann) Waterreservoir Reservoir (vatn) Zbiornik retencyjny Reservatório (água) Водохранилище Rezervoar (voda) Vattenreservoar Водойма Residential zone منطقة سكنية Stambena zona Obytná zóna Wohngebiet Αστική ζώνη Zona Residencial Asula Zone résidentielle Lakóövezet Zona residenziale 住宅地 Boligområde Residentiële zone Boligområde Zabudowa mieszkaniowa Zona residencial Жилой район Obytná zóna Bostadsområde Жила зона Retail zone بيع بلمفرق Trgovinska zona Nákupní zóna Einzelhandel Ζώνη λιανικού εμπορίου Zona de venta al por menor Kaubandustsoon Vente au détail Kiskereskedelmi övezet Zona particolareggiata 商業地 Handelsområde Handelszone Handelsområde Strefa handlowa Zona de retalho Розничная торговля Detaljhandelsområde Торговий квартал Surface mineral extraction منجم إستخراج معادن Povrchová těžba Steinbruch Επιφανειακή εξαγωγή ορυκτών Explotación minera en la superficie Pealmaa kaevandus Mine à ciel ouvert Külszíni fejtés Superficie di estrazione di minerali 露天掘り鉱山 Overflatebrudd for mineraler Oppervlakkige ontginning van mineralen Overflatebrudd for mineraler Kamieniołom Extracção mineral á superficie Открытый карьер Mineralutvinning (vid jordytan) Видобування корисних копалин (карь’єр) Village green مرج/بستان قرية Městská zeleň Dorfwiese Parque municipal Roheala Espace vert Falupark Villaggio verde 里山 Dorpsgroen Łąka wiejska Зелёная деревня Byallmänning (gräsplätt) Суспільні луги Oneway إتجاه واحد Jednosměrka Einbahnstraße Μονόδρομος Una sola vía Ühesuunaline Sens unique Jednosmjerno Egyirányú Senso unico 一方通行 Enveiskjøring Enkelrichting Einvegskjøyring Jednokierunkowa Sentido único Односторонняя Jednosmerka Enosmerna Enkelriktat Одностронній рух Amenity خدمات Občanská vybavenost Nutzung Ευκολίες Comodidades Hüvis Équipement Szolgáltatás Attrattiva 各種施設 Faciliteit Miejsce Инфраструктура Vybavenosť Facilitet Інфраструктура Arts centre مركز ثقافي Centrum umění Kulturzentrum κέντρο τεχνών Centro de Artes Kunstigalerii Centre culturel Kulturni centar Művészeti központ Centro culturale 美術館 Kunstsenter Cultureel centrum Kunstsenter Centrum kultury/sztuki Centro de artes Центр искусств Centrum umenia Kulturni center Konstcenter Арт-центр ATM or cash point آلة دفع نقود أو نقطة دفع نقدي Bankomat, výběr v hotovosti Geldautomat ATM ή σημείο μετρητών Cajero automático ATM või sularaha DAB ou point de payement Bankomat Pénzkiadó automata Bancomat o ritiro contanti ATMやキャッシュディスペンサー Minibank Geldautomaat Minibank Bankomat Caixa Multibando Банкомат Bankomat Bankomat / uttagsautomat Банкомат (пункт видачі готівки) Bank مصرف Banka Banka Bank Τράπεζα Banco Pank Banque Banka Bank Banca 銀行 Bank Bank Bank Bank Banco Банк Banka Banka Bank Банк Bank with atm مصرف مزود بآلة نقد Banka s bankomatem Bank mit Geldautomat Τράπεζα με ATM Banco con cajero automático Pank ja sularahaautomaat Banque avec DAB Banka s bankomatom Bank pénzkiadó automatával Banca con Bancomat atmのある銀行店舗 Bank med Minibank Bank met geldautomaat Bank med Minibank Bank z bankomatem Banco com caixa multibanco Банк с банкоматом Banka s bankomatom Banka z bankomatom Bank med automatuttag Банк + Банкомат Beer garden جنينة جعة Letní hospoda Biergarten Terraza Õllekas Jardin à bière Sörkert Giardino della birra ビアーガーデン Biertuin Ogródek piwny Пивной сад Biergarten (uteservering för öl) Генделик Parking for bicycles موقف للدراجات Parking za bicikle Parkování pro kola Fahrradstellplatz Στάθμευση ποδηλάτων Aparcamiento de Bicicletas Jalgratta parkla Parking pour vélos Parking za bicikle Kerékpártároló Parcheggio per biciclette 自転車駐輪場 Sykkelparkering Parkeerplaats voor fietsen Sykkelparkering Parking rowerowy Parque de estacionamento para bicicletas Велосипедная стоянка Cykelparkering Стоянка велосипедів Bicycle Rental إستئجار دراجة Rentiranje Bicikla Půjčovna kol Fahrradmietstation Ενοικίαση ποδηλάτων Alquiler de Bicicletas Jalgratta rent Location de vélos Izanajmljivanje bicikala Kerékpárkölcsönző Noleggio biciclette 自転車レンタル Sykkelutleie Fietsverhuur Sykkelutleige Wypożyczalnia rowerów Aluguer de bicicletas Прокат велосипедов Požičovňa bicyklov Najem koles Cykeluthyrning Прокат велосипедів Bureau de change صرّاف Mjenjačnica Směnárna Wechselstube Casa de Cambios Valuutavahetus Bureau de change Mjenjačnica Pénzváltó Cambio valuta 両替所 Vekslingskontor Wisselkantoor Kantor Обмен валюты Zmenáreň Menjalnica Växelbyrå Обмін валют Bus station محطة نقليات عامة Autobuska stanica Autobusové nádraží Bushaltestelle Σταθμός λεωφορείων Estación de autobuses Bussijaam Gare routière Autobusna postaja Autóbuszállomás Stazione autobus バスステーション Bussstasjon Busstation Bussstasjon Dworzec autobusowy Estação de autocarros Автовокзал Autobusová stanica Avtobusna postaja Busstation Автостанція Cafe مقهى إستراحة Cafe Kavárna Cafe Καφέ Cafetería Kohvik Café Kafić Kávézó Cafè カフェ Kafe Café Kafe Kafejka Café Кафе Kaviareň Kafé Кафе Car Rental إستئجار سيارة Rentiranje Auta Půjčovna aut Autovermietung Ενοικίαση Αυτοκινήτων Alquiler de Automóviles Auto rent Location de voiture Iznajmljivanje automobila Autókölcsönző Noleggo auto レンタカー Bilutleie Autoverhuur Bilutleige Wypożyczalnia samochodów Aluguer de automóvel Прокат автомобилей Požičovňa áut Najem avtomobilov Biluthyrning Прокат автівок Car Sharing مشاركة سيارات Sdílení aut Autotausch Κοινή χρήση αυτοκινήτων Compartir auto Autojagamine Co-voiturage Közös autók Car Sharing カーシェアリング Bildeling Autodelen Bildeling Wspóldzielenie samochodów Partilha de carro Совместное использование автомобилей Bilpool Погодинний прокат автівок Cinema سينما Kino Kino Kino Κινηματογράφος Cine Kino Cinéma Kino Mozi Cinema 映画館 Kino Bioscoop Kino Kino Cinema Кинотеатр Kino Kino Biograf Кіно College كلّية Koledž Vysoká škola Gymnasium Κολέγιο Instituto Kolledž Établissement d'enseignement supérieur Fakultet Főiskola College 短大 Høyskole Campus Høgskole Szkoła wyższa Universidade Колледж Högskola Коледж Court house محكمة Sud Soud Gericht Δικαστήριο Juzgados Kohtumaja Palais de justice Sud Bíróság Corte 裁判所 Rettssal Gerechtsgebouw Rettssal Sąd Tribunal Дом правосудия Sodišče Domstolsbyggnad / Tingshus Суд Crematorium محرقة جثث Krematorijum Krematorium Krematorium Κρεματόριο Crematorio Krematoorium Crématorium Krematorij Hamvasztó Crematorio 火葬場 Krematorium Crematorium Krematorium Krematorium Crematório Крематорий Krematórium Krematorij Krematorium Крематорій Source of drinking water نبع ماء صالحة للشرب Izvor pitke vode Zdroj pitné vody Trinkwasser Πηγή πόσιμου νερού Manantial de agua potable Joogivee allikas Source d'eau potable Izvor pitke vode Ivóvíz Fonte di acqua potabile 飲み水の水源 Drikkevannskilde Drinkwaterbron Źródło wody pitnej Fonte com águo potável Питьевая вода Zdroj pitnej vody Vir pitne vode Källa för dricksvatten Питна вода Fast food وجبات سريعة Rychlé občerstvení Schnellimbiss Fast food Comida Rápida Kiirtoit Restauration rapide Brza prehrana Gyorsétterem Fast food ファーストフード Fast food Fast food Fast food Fast food Comida de rápida confecção Кафе Snabbmat Забігайлівка Fire Station فوج إطفاء Požární stanice Feuerwehr Σταθμός Πυροσβεστικής Estación de bomberos Tuletõrjedepoo Caserne de pompiers Vatrogasci Tűzoltóság Pompieri 消防署 Brannstasjon Brandweerkazerne Brannstasjon Straż pożarna Bombeiros Пожарное депо Požiarna stanica Gasilski dom Brandstation Пожежна станція Fountain نافورة Fontana Fontána, kašna Springbrunnen Συντριβάνι Fuente Purskaev Fontaine Fontana Szökőkút Fontana 噴水 Fontene Fontein Fontene Fontanna Fonte Фонтан Fontána Fontän Фонтан Fuel وقود Gorivo Benzinka Tankstelle Καύσιμα Combustible Kütus Station service Gorivo Benzinkút Benzina ガソリンスタンド Bensinstasjon Brandstof Bensinstasjon Stacja benzynowa Combustível Заправочная станция Bränsle Заправка Small place of burial مقبرة صغيرة Malý hřbitov Grabstelle Μικρός τόπος ταφής Pequeño cementerio Väike matmispaik Petit cimetière Malo groblje Sírhely Piccolo luogo di sepoltura 墓地 Gravsted Begraafplaats Cmentarz (mały) Могила Majhno pokopališče Liten begravningsplats Цвинтар (малий) Hospital مستشفى Bolnica Nemocnice Krankenhaus Νοσοκομείο Hospital Haigla Hôpital Bolnica Kórház Ospedale 病院 Sykehus Hospitaal Sjukehus Szpital Hospital Больница Nemocnica Bolnišnica Sjukhus Лікарня Library مكتبة عامة Biblioteka Knihovna Bibliothek Βιβλιοθήκη Biblioteca Raamatukogu Bibliothèque Knjižnica Könyvtár Biblioteca 図書館 Bibliotek Bibliotheek Bibliotek Biblioteka Biblioteca Библиотека Knižnica Knjižnica Bibliotek Бібліотека Nightclub نادي ليلي Noćni klub Noční podnik Nachtclub Νυχτερινό Κέντρο Club nocturno Ööklubi Boîte de nuit Noćni klub Éjszakai szórakozóhely Nightclub ナイトクラブ Nattklubb Nachtclub Nattklubb Klub nocny Discoteca Ночной клуб Nočný klub Nattklubb Нічний клуб Parking موقف سيارات Parking Parkoviště Parkplatz Χώρος στάθμευσης Aparcamiento Parkimine Parking Parking Parkoló Parcheggio 駐車場 Parkering Parkeerplaats Parkering Parking Parque de estacionamento Стоянка Parkovisko Parkirišče Parkeringsplats Стоянка Pharmacy صيدلية Apoteka Lékarna Apotheke Φαρμακείο Farmacia Apteek Pharmacie Ljekarna Gyógyszertár Farmacia 薬局 Apotek Apotheek Apotek Apteka Farmácia Аптека Lekáreň Lekarna Apotek Аптека Place of Worship معبد Bohoslužebné místo Anbetungsort Τόπος Λατρείας Lugar de culto Palvekoht Lieu de culte Mjesto bogoštovlja Vallásgyakorlóhely Luogo di culto 祈りのための場所 Tilbedelsessted Gebedsplaats Tilbedingsted Miejsce kultu Место поклонения Kraj čaščenja Religiös helgedom Культове місце Police Station مركز شرطة Policijska Stanica Policejní stanice Polizeidienststelle Σταθμός Αστυνομίας Estación policial Politsei jaoskond Poste de police Policijska stanica Rendőrség Stazione di polizia 警察署・交番 Politistasjon Politiekazerne Politistasjon Komenda policji Esquadra Милицейский участок Policajná stanica Policijska postaja Polisstation Відділення міліції Post Box صندوق بريد Poštovní schránka Briefkasten Γραμματοκιβώτιο Buzón de correos Postkast Boîte aux lettres Poštanski sandučić Postaláda Cassetta delle lettere ポスト Postkasse Brievenbus Postkasse Skrzynka pocztowa Marco de correio Почтовый ящик Poštová schránka Poštni nabiralnik Brevlåda Поштова скринька Post Office مكتب البريد Pošta Pošta Postamt Ταχυδρομείο Oficina Postal Postkontor Bureau de poste Poštanski ured Posta Ufficio postale 郵便局 Postkontor Postkantoor Postkontor Poczta Correios Почтовое отделение Pošta Poštni urad Postkontor Пошта Prison سجن Zatvor Věznice Gefängnis Φυλακή Prisión Vangla Prison Zatvor Börtön Prigione 刑務所 Fengsel Gevangenis Fengsel Więzienie Prisão Тюрьма Vezenie Zapor Fängelse В’язниця Pub حانة Bar Hospoda Kneipe Pub Bar Pubi Bar Kocsma Bar バー("Pub") Pub Bar Pub Pub Bar Пивной бар Krčma Pub Шинок Public building مبنى عام Javna zgrada Státní úřad Öffentliches Gebäude Δημόσιο κτήριο Edificio Público Avalik ehitis Bâtiment public Javna zgrada Középület Edificio pubblico 公共の建物 Offentlig bygning Publiek gebouw Offentleg bygning Budynek publiczny edificio público Общественное здание Javna zgradba Offentlig byggnad Громадський заклад Public Telephone هاتف عمومي Javni Telefon Veřejný telefon Telefon Τηλέφωνο για το κοινό Teléfono Público Taksofon Téléphone public Javni telefon Nyilvános telefon Telefono pubblico 公衆電話 Telefonboks Publieke telefoon Telefonboks Budka telefoniczna Telefone público Общественный телефон Javna telefonska govorilnica Publik telefon Громадський телефон Recycling Facilities مرافق إعادة التدوير Recyklační místo Recycling-Einrichtung Εγκαταστάσεις Ανακύκλωσης Facilidades de reciclamiento Prügitöötlus jaam Point de collecte pour le recyclage Reciklažno dvorište Újrahasznosítás Impianti di riciclaggio リサイクル施設 Resirkuleringsanlegg Recyclagevoorzieningen Resirkuleringsanlegg Centrum recyklingowe Instalações de reciclagem Переработка отходов Återvinningsstation Контейнери для сміття Restaurant مطعم Restoran Restaurace Restaurant Εστιατόριο Restaurante Restoran Restaurant Restoran Étterem/vendéglő Ristorante レストラン・食堂 Restaurant Restaurant Restaurant Restauracja Restaurante Ресторан Reštaurácia Restavracija Restaurang Ресторан School مدرسة Škola Škola Schule Σχολείο Escuela Kool École Škola Iskola Scuola 学校 Skole School Skule Szkoła Escola Школа Škola Šola Skola Школа Taxi تاكسي Taxi Taxi Taxi Ταξί Taxi Takso Taxi Taxi Taxi Taxi タクシー Taxi Taxi Taxi Postój taksówek Taxi Такси Taxi Taxi Taxi Таксі Theatre or opera house مسرح أو مسرح غنائي Pozorište ili opera Divadlo nebo opera Theater oder Oper Λυρική σκηνή Teatro o casa de la ópera Teater või ooperimaja Théatre ou Opéra Kazalište ili opera Színház vagy operaház Teatro 劇場やオペラハウス Teater eller Operahus Theater of opera Teater eller Operahus Teatr lub opera Teatro ou Casa de opera Театр Divadlo alebo opera Gledališče ali opera Teater eller operahus Опера, театр Toilets مراحيض Veřejné záchody Toiletten Τουαλέτες Baños Tualetid Toilettes Zahodi WC Toilets トイレ Toaletter Toiletten Toalettar Szalet Casas de banho Туалеты Toalety Stranišča Toaletter Туалет Town hall بلدية Gradska skupština Radnice Rathaus Δημαρχείο Ayuntamiento Raekoda Mairie Gradska vječnica Városháza/közösségi épület Municipio 役所 Rådhus Stadhuis Rådhus Ratusz Муниципалитет Radnica (obecný úrad) Mestna hiša Rådhus / Stadshus Міська державна адміністрація. University جامعة Univerzitet Univerzita, vysoká škola Universität Πανεπιστήμιο Universidad Ülikool École supérieure/Université Sveučilište Egyetem Università 大学 Universitet Universiteit Universitet Uniwersytet Universidade Университет Univerzita Univerza Universitet Університет Waste Disposal رمي النفايات Kanál, místo pro odpadky Mülldeponie Απόρριψη αποβλήτων Vertedero Prügila Déchetterie Odlagalište otpada Szemétlerakó/gyűjtő Smaltimento rifiuti ゴミ箱 Avfallshåndtering Afvalverwerking Avfallshandtering Wysypisko śmieci Lixeira Мусорный контейнер Avfallsdeponi Майданчик збору відходів Religion الديانة Religija Náboženství Religion Θρησκεία Religión Usk Religion Religija Vallás Religione 宗教 Religion Godsdienst Religion Religia Religião Религия Náboženstvo Vera Religion Релігія Buddhist بوذي Budist Budhistický Buddistisch Βουδιστής Budista Budistlik Boudhiste Buddhista Buddista 仏教 Buddhist Boeddhistisch Buddhist Buddyzm Budista Буддистский Buddhism Буддизм Christian نصراني Kršćanski Křesťanský Christlich Χριστιανός Cristiano Kristlik Chrétien Kršćanski Keresztény Cristiano キリスト教 Kristen Christelijk Kristen Chrześcijaństwo Cristã Христианский Krščanska Kristet Християнство Jewish يهودي Židov Židovský Jüdisch Ιουδαϊκό Judío Juudi Juif Židovski Zsidó Ebraico ユダヤ教 Jødisk Joods Jødisk Judaizm Judeu Еврейская Židovska Judiskt Іудаїзм Muslim مسلم Musliman Muslimský Muslimisch Musulmán Moslemi Musulman Muslimanski Muzulmán Musulmano イスラム教 Muslim Moslim Muslim Islam Muçulmano Мусульманский Muslimanska Mulimskt Мусульманство Denomination تسمية Denominace Konfession Δόγμα Denominación Usutunnistus Dénomination Vallási felekezet Denominazione 宗派 Trosretning Waarde Trosretning Wyznanie Denominação Конфессия Vyznanie (cirkevné) Samfund Віросповідання Name الإسم Ime Jméno Name Όνομα Nombre Nimi Nom Naziv Név Nome 名前 Navn Naam Namn Nazwa Nome Название Meno Ime Namn Назва Name (french) الإسم (فرنسي) Jméno (francouzky) Name (franz.) Όνομα (Γαλλικά) Nombre (francés) Nimi (prantsuse) Nom (français) Naziv (francuski) Név (vallon) Nome (francese) 名前(フランス語) Navn (fransk) Naam (Frans) Namn (fransk) Nazwa (francuska) Name (francês) Название (фран.) Meno (francúzske) Namn (franska) Назва (французською) Name (dutch) الإسم (هولّندية) Jméno (nizozemsky) Name (niederl.) Όνομα (Ολλανδικά) Nombre (alemán) Nimi (hollandi) Nom (néérlandais) Naziv (nizozemski) Név (flamand) Nome (olandese) 名前(オランダ語) Navn (nederlansk) Naam (Nederlands) Namn (nederlansk) Nazwa (belgijska) Название (нем.) Meno (holandské) Namn (nederländska) Назва (датською) merkaartor-0.18.1/include/000077500000000000000000000000001177067165300154105ustar00rootroot00000000000000merkaartor-0.18.1/include/RTree.h000066400000000000000000001251311177067165300166050ustar00rootroot00000000000000#ifndef RTREE_H #define RTREE_H // NOTE This file compiles under MSVC 6 SP5 and MSVC .Net 2003 it may not work on other compilers without modification. // NOTE These next few lines may be win32 specific, you may need to modify them to compile on other platform #include #include #include #include #define ASSERT assert // RTree uses ASSERT( condition ) #ifndef Min #define Min qMin #endif //Min #ifndef Max #define Max qMax #endif //Max #ifndef __cdecl #if defined(__GNUC__) #define __cdecl __attribute__((cdecl)) #endif #endif // // RTree.h // #define RTREE_TEMPLATE template #define RTREE_QUAL RTree #define RTREE_DONT_USE_MEMPOOLS // This version does not contain a fixed memory allocator, fill in lines with EXAMPLE to implement one. #define RTREE_USE_SPHERICAL_VOLUME // Better split classification, may be slower on some systems // Fwd decl class RTFileStream; // File I/O helper class, look below for implementation and notes. /// \class RTree /// Implementation of RTree, a multidimensional bounding rectangle tree. /// Example usage: For a 3-dimensional tree use RTree myTree; /// /// This modified, templated C++ version by Greg Douglas at Auran (http://www.auran.com) /// /// DATATYPE Referenced data, should be int, void*, obj* etc. no larger than sizeof and simple type /// ELEMTYPE Type of element such as int or float /// NUMDIMS Number of dimensions such as 2 or 3 /// ELEMTYPEREAL Type of element that allows fractional and large values such as float or double, for use in volume calcs /// /// NOTES: Inserting and removing data requires the knowledge of its constant Minimal Bounding Rectangle. /// This version uses new/delete for nodes, I recommend using a fixed size allocator for efficiency. /// Instead of using a callback function for returned results, I recommend and efficient pre-sized, grow-only memory /// array similar to MFC CArray or STL Vector for returning search query result. /// template class RTree { protected: struct Node; // Fwd decl. Used by other internal structs and iterator public: // These constant must be declared after Branch and before Node struct // Stuck up here for MSVC 6 compiler. NSVC .NET 2003 is much happier. enum { MAXNODES = TMAXNODES, ///< Max elements in node MINNODES = TMINNODES, ///< Min elements in node }; public: RTree(); virtual ~RTree(); /// Insert entry /// \param a_min Min of bounding rect /// \param a_max Max of bounding rect /// \param a_dataId Positive Id of data. Maybe zero, but negative numbers not allowed. void Insert(const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], const DATATYPE& a_dataId); /// Remove entry /// \param a_min Min of bounding rect /// \param a_max Max of bounding rect /// \param a_dataId Positive Id of data. Maybe zero, but negative numbers not allowed. void Remove(const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], const DATATYPE& a_dataId); /// Find all within search rectangle /// \param a_min Min of search bounding rect /// \param a_max Max of search bounding rect /// \param a_searchResult Search result array. Caller should set grow size. Function will reset, not append to array. /// \param a_resultCallback Callback function to return result. Callback should return 'true' to continue searching /// \param a_context User context to pass as parameter to a_resultCallback /// \return Returns the number of entries found int Search(const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], bool __cdecl a_resultCallback(DATATYPE a_data, void* a_context), void* a_context); /// Remove all entries from tree void RemoveAll(); /// Count the data elements in this container. This is slow as no internal counter is maintained. int Count(); /// Load tree contents from file bool Load(const char* a_fileName); /// Load tree contents from stream bool Load(RTFileStream& a_stream); /// Save tree contents to file bool Save(const char* a_fileName); /// Save tree contents to stream bool Save(RTFileStream& a_stream); /// Iterator is not remove safe. class Iterator { private: enum { MAX_STACK = 32 }; // Max stack size. Allows almost n^32 where n is number of branches in node struct StackElement { Node* m_node; int m_branchIndex; }; public: Iterator() { Init(); } ~Iterator() { } /// Is iterator invalid bool IsNull() { return (m_tos <= 0); } /// Is iterator pointing to valid data bool IsNotNull() { return (m_tos > 0); } /// Access the current data element. Caller must be sure iterator is not NULL first. DATATYPE& operator*() { ASSERT(IsNotNull()); StackElement& curTos = m_stack[m_tos - 1]; return curTos.m_node->m_branch[curTos.m_branchIndex].m_data; } /// Access the current data element. Caller must be sure iterator is not NULL first. const DATATYPE& operator*() const { ASSERT(IsNotNull()); StackElement& curTos = m_stack[m_tos - 1]; return curTos.m_node->m_branch[curTos.m_branchIndex].m_data; } /// Find the next data element bool operator++() { return FindNextData(); } /// Get the bounds for this node void GetBounds(ELEMTYPE a_min[NUMDIMS], ELEMTYPE a_max[NUMDIMS]) { ASSERT(IsNotNull()); StackElement& curTos = m_stack[m_tos - 1]; Branch& curBranch = curTos.m_node->m_branch[curTos.m_branchIndex]; for(int index = 0; index < NUMDIMS; ++index) { a_min[index] = curBranch.m_rect.m_min[index]; a_max[index] = curBranch.m_rect.m_max[index]; } } private: /// Reset iterator void Init() { m_tos = 0; } /// Find the next data element in the tree (For internal use only) bool FindNextData() { for(;;) { if(m_tos <= 0) { return false; } StackElement curTos = Pop(); // Copy stack top cause it may change as we use it if(curTos.m_node->IsLeaf()) { // Keep walking through data while we can if(curTos.m_branchIndex+1 < curTos.m_node->m_count) { // There is more data, just point to the next one Push(curTos.m_node, curTos.m_branchIndex + 1); return true; } // No more data, so it will fall back to previous level } else { if(curTos.m_branchIndex+1 < curTos.m_node->m_count) { // Push sibling on for future tree walk // This is the 'fall back' node when we finish with the current level Push(curTos.m_node, curTos.m_branchIndex + 1); } // Since cur node is not a leaf, push first of next level to get deeper into the tree Node* nextLevelnode = curTos.m_node->m_branch[curTos.m_branchIndex].m_child; Push(nextLevelnode, 0); // If we pushed on a new leaf, exit as the data is ready at TOS if(nextLevelnode->IsLeaf()) { return true; } } } } /// Push node and branch onto iteration stack (For internal use only) void Push(Node* a_node, int a_branchIndex) { m_stack[m_tos].m_node = a_node; m_stack[m_tos].m_branchIndex = a_branchIndex; ++m_tos; ASSERT(m_tos <= MAX_STACK); } /// Pop element off iteration stack (For internal use only) StackElement& Pop() { ASSERT(m_tos > 0); --m_tos; return m_stack[m_tos]; } StackElement m_stack[MAX_STACK]; ///< Stack as we are doing iteration instead of recursion int m_tos; ///< Top Of Stack index friend class RTree; // Allow hiding of non-public functions while allowing manipulation by logical owner }; /// Get 'first' for iteration void GetFirst(Iterator& a_it) { a_it.Init(); Node* first = m_root; while(first) { if(first->IsInternalNode() && first->m_count > 1) { a_it.Push(first, 1); // Descend sibling branch later } else if(first->IsLeaf()) { if(first->m_count) { a_it.Push(first, 0); } break; } first = first->m_branch[0].m_child; } } /// Get Next for iteration void GetNext(Iterator& a_it) { ++a_it; } /// Is iterator NULL, or at end? bool IsNull(Iterator& a_it) { return a_it.IsNull(); } /// Get object at iterator position DATATYPE& GetAt(Iterator& a_it) { return *a_it; } protected: /// Minimal bounding rectangle (n-dimensional) struct Rect { ELEMTYPE m_min[NUMDIMS]; ///< Min dimensions of bounding box ELEMTYPE m_max[NUMDIMS]; ///< Max dimensions of bounding box }; /// May be data or may be another subtree /// The parents level determines this. /// If the parents level is 0, then this is data struct Branch { Rect m_rect; ///< Bounds union { Node* m_child; ///< Child node DATATYPE m_data; ///< Data Id or Ptr }; }; /// Node for each branch level struct Node { bool IsInternalNode() { return (m_level > 0); } // Not a leaf, but a internal node bool IsLeaf() { return (m_level == 0); } // A leaf, contains data int m_count; ///< Count int m_level; ///< Leaf is zero, others positive Branch m_branch[MAXNODES]; ///< Branch }; /// A link list of nodes for reinsertion after a delete operation struct ListNode { ListNode* m_next; ///< Next in list Node* m_node; ///< Node }; /// Variables for finding a split partition struct PartitionVars { int m_partition[MAXNODES+1]; int m_total; int m_minFill; int m_taken[MAXNODES+1]; int m_count[2]; Rect m_cover[2]; ELEMTYPEREAL m_area[2]; Branch m_branchBuf[MAXNODES+1]; int m_branchCount; Rect m_coverSplit; ELEMTYPEREAL m_coverSplitArea; }; Node* AllocNode(); void FreeNode(Node* a_node); void InitNode(Node* a_node); void InitRect(Rect* a_rect); bool InsertRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node, Node** a_newNode, int a_level); bool InsertRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root, int a_level); Rect NodeCover(Node* a_node); bool AddBranch(Branch* a_branch, Node* a_node, Node** a_newNode); void DisconnectBranch(Node* a_node, int a_index); int PickBranch(Rect* a_rect, Node* a_node); Rect CombineRect(Rect* a_rectA, Rect* a_rectB); void SplitNode(Node* a_node, Branch* a_branch, Node** a_newNode); ELEMTYPEREAL RectSphericalVolume(Rect* a_rect); ELEMTYPEREAL RectVolume(Rect* a_rect); ELEMTYPEREAL CalcRectVolume(Rect* a_rect); void GetBranches(Node* a_node, Branch* a_branch, PartitionVars* a_parVars); void ChoosePartition(PartitionVars* a_parVars, int a_minFill); void LoadNodes(Node* a_nodeA, Node* a_nodeB, PartitionVars* a_parVars); void InitParVars(PartitionVars* a_parVars, int a_maxRects, int a_minFill); void PickSeeds(PartitionVars* a_parVars); void Classify(int a_index, int a_group, PartitionVars* a_parVars); bool RemoveRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root); bool RemoveRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node, ListNode** a_listNode); ListNode* AllocListNode(); void FreeListNode(ListNode* a_listNode); bool Overlap(Rect* a_rectA, Rect* a_rectB); void ReInsert(Node* a_node, ListNode** a_listNode); bool Search(Node* a_node, Rect* a_rect, int& a_foundCount, bool __cdecl a_resultCallback(DATATYPE a_data, void* a_context), void* a_context); void RemoveAllRec(Node* a_node); void Reset(); void CountRec(Node* a_node, int& a_count); bool SaveRec(Node* a_node, RTFileStream& a_stream); bool LoadRec(Node* a_node, RTFileStream& a_stream); Node* m_root; ///< Root of tree ELEMTYPEREAL m_unitSphereVolume; ///< Unit sphere constant for required number of dimensions }; // Because there is not stream support, this is a quick and dirty file I/O helper. // Users will likely replace its usage with a Stream implementation from their favorite API. class RTFileStream { FILE* m_file; public: RTFileStream() { m_file = NULL; } ~RTFileStream() { Close(); } bool OpenRead(const char* a_fileName) { m_file = fopen(a_fileName, "rb"); if(!m_file) { return false; } return true; } bool OpenWrite(const char* a_fileName) { m_file = fopen(a_fileName, "wb"); if(!m_file) { return false; } return true; } void Close() { if(m_file) { fclose(m_file); m_file = NULL; } } template< typename TYPE > size_t Write(const TYPE& a_value) { ASSERT(m_file); return fwrite((void*)&a_value, sizeof(a_value), 1, m_file); } template< typename TYPE > size_t WriteArray(const TYPE* a_array, int a_count) { ASSERT(m_file); return fwrite((void*)a_array, sizeof(TYPE) * a_count, 1, m_file); } template< typename TYPE > size_t Read(TYPE& a_value) { ASSERT(m_file); return fread((void*)&a_value, sizeof(a_value), 1, m_file); } template< typename TYPE > size_t ReadArray(TYPE* a_array, int a_count) { ASSERT(m_file); return fread((void*)a_array, sizeof(TYPE) * a_count, 1, m_file); } }; RTREE_TEMPLATE RTREE_QUAL::RTree() { ASSERT(MAXNODES > MINNODES); ASSERT(MINNODES > 0); // We only support machine word size simple data type eg. integer index or object pointer. // Since we are storing as union with non data branch ASSERT(sizeof(DATATYPE) == sizeof(void*) || sizeof(DATATYPE) == sizeof(int)); // Precomputed volumes of the unit spheres for the first few dimensions const float UNIT_SPHERE_VOLUMES[] = { 0.000000f, 2.000000f, 3.141593f, // Dimension 0,1,2 4.188790f, 4.934802f, 5.263789f, // Dimension 3,4,5 5.167713f, 4.724766f, 4.058712f, // Dimension 6,7,8 3.298509f, 2.550164f, 1.884104f, // Dimension 9,10,11 1.335263f, 0.910629f, 0.599265f, // Dimension 12,13,14 0.381443f, 0.235331f, 0.140981f, // Dimension 15,16,17 0.082146f, 0.046622f, 0.025807f, // Dimension 18,19,20 }; m_root = AllocNode(); m_root->m_level = 0; m_unitSphereVolume = (ELEMTYPEREAL)UNIT_SPHERE_VOLUMES[NUMDIMS]; } RTREE_TEMPLATE RTREE_QUAL::~RTree() { Reset(); // Free, or reset node memory } RTREE_TEMPLATE void RTREE_QUAL::Insert(const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDIMS], const DATATYPE& a_dataId) { #ifdef _DEBUG for(int index=0; indexIsInternalNode()) // not a leaf node { for(int index = 0; index < a_node->m_count; ++index) { CountRec(a_node->m_branch[index].m_child, a_count); } } else // A leaf node { a_count += a_node->m_count; } } RTREE_TEMPLATE bool RTREE_QUAL::Load(const char* a_fileName) { RemoveAll(); // Clear existing tree RTFileStream stream; if(!stream.OpenRead(a_fileName)) { return false; } bool result = Load(stream); stream.Close(); return result; }; RTREE_TEMPLATE bool RTREE_QUAL::Load(RTFileStream& a_stream) { // Write some kind of header int _dataFileId = ('R'<<0)|('T'<<8)|('R'<<16)|('E'<<24); int _dataSize = sizeof(DATATYPE); int _dataNumDims = NUMDIMS; int _dataElemSize = sizeof(ELEMTYPE); int _dataElemRealSize = sizeof(ELEMTYPEREAL); int _dataMaxNodes = TMAXNODES; int _dataMinNodes = TMINNODES; int dataFileId = 0; int dataSize = 0; int dataNumDims = 0; int dataElemSize = 0; int dataElemRealSize = 0; int dataMaxNodes = 0; int dataMinNodes = 0; a_stream.Read(dataFileId); a_stream.Read(dataSize); a_stream.Read(dataNumDims); a_stream.Read(dataElemSize); a_stream.Read(dataElemRealSize); a_stream.Read(dataMaxNodes); a_stream.Read(dataMinNodes); bool result = false; // Test if header was valid and compatible if( (dataFileId == _dataFileId) && (dataSize == _dataSize) && (dataNumDims == _dataNumDims) && (dataElemSize == _dataElemSize) && (dataElemRealSize == _dataElemRealSize) && (dataMaxNodes == _dataMaxNodes) && (dataMinNodes == _dataMinNodes) ) { // Recursively load tree result = LoadRec(m_root, a_stream); } return result; } RTREE_TEMPLATE bool RTREE_QUAL::LoadRec(Node* a_node, RTFileStream& a_stream) { a_stream.Read(a_node->m_level); a_stream.Read(a_node->m_count); if(a_node->IsInternalNode()) // not a leaf node { for(int index = 0; index < a_node->m_count; ++index) { Branch* curBranch = &a_node->m_branch[index]; a_stream.ReadArray(curBranch->m_rect.m_min, NUMDIMS); a_stream.ReadArray(curBranch->m_rect.m_max, NUMDIMS); curBranch->m_child = AllocNode(); LoadRec(curBranch->m_child, a_stream); } } else // A leaf node { for(int index = 0; index < a_node->m_count; ++index) { Branch* curBranch = &a_node->m_branch[index]; a_stream.ReadArray(curBranch->m_rect.m_min, NUMDIMS); a_stream.ReadArray(curBranch->m_rect.m_max, NUMDIMS); a_stream.Read(curBranch->m_data); } } return true; // Should do more error checking on I/O operations } RTREE_TEMPLATE bool RTREE_QUAL::Save(const char* a_fileName) { RTFileStream stream; if(!stream.OpenWrite(a_fileName)) { return false; } bool result = Save(stream); stream.Close(); return result; } RTREE_TEMPLATE bool RTREE_QUAL::Save(RTFileStream& a_stream) { // Write some kind of header int dataFileId = ('R'<<0)|('T'<<8)|('R'<<16)|('E'<<24); int dataSize = sizeof(DATATYPE); int dataNumDims = NUMDIMS; int dataElemSize = sizeof(ELEMTYPE); int dataElemRealSize = sizeof(ELEMTYPEREAL); int dataMaxNodes = TMAXNODES; int dataMinNodes = TMINNODES; a_stream.Write(dataFileId); a_stream.Write(dataSize); a_stream.Write(dataNumDims); a_stream.Write(dataElemSize); a_stream.Write(dataElemRealSize); a_stream.Write(dataMaxNodes); a_stream.Write(dataMinNodes); // Recursively save tree bool result = SaveRec(m_root, a_stream); return result; } RTREE_TEMPLATE bool RTREE_QUAL::SaveRec(Node* a_node, RTFileStream& a_stream) { a_stream.Write(a_node->m_level); a_stream.Write(a_node->m_count); if(a_node->IsInternalNode()) // not a leaf node { for(int index = 0; index < a_node->m_count; ++index) { Branch* curBranch = &a_node->m_branch[index]; a_stream.WriteArray(curBranch->m_rect.m_min, NUMDIMS); a_stream.WriteArray(curBranch->m_rect.m_max, NUMDIMS); SaveRec(curBranch->m_child, a_stream); } } else // A leaf node { for(int index = 0; index < a_node->m_count; ++index) { Branch* curBranch = &a_node->m_branch[index]; a_stream.WriteArray(curBranch->m_rect.m_min, NUMDIMS); a_stream.WriteArray(curBranch->m_rect.m_max, NUMDIMS); a_stream.Write(curBranch->m_data); } } return true; // Should do more error checking on I/O operations } RTREE_TEMPLATE void RTREE_QUAL::RemoveAll() { // Delete all existing nodes Reset(); m_root = AllocNode(); m_root->m_level = 0; } RTREE_TEMPLATE void RTREE_QUAL::Reset() { #ifdef RTREE_DONT_USE_MEMPOOLS // Delete all existing nodes RemoveAllRec(m_root); #else // RTREE_DONT_USE_MEMPOOLS // Just reset memory pools. We are not using complex types // EXAMPLE #endif // RTREE_DONT_USE_MEMPOOLS } RTREE_TEMPLATE void RTREE_QUAL::RemoveAllRec(Node* a_node) { ASSERT(a_node); ASSERT(a_node->m_level >= 0); if(a_node->IsInternalNode()) // This is an internal node in the tree { for(int index=0; index < a_node->m_count; ++index) { RemoveAllRec(a_node->m_branch[index].m_child); } } FreeNode(a_node); } RTREE_TEMPLATE typename RTREE_QUAL::Node* RTREE_QUAL::AllocNode() { Node* newNode; #ifdef RTREE_DONT_USE_MEMPOOLS newNode = new Node; #else // RTREE_DONT_USE_MEMPOOLS // EXAMPLE #endif // RTREE_DONT_USE_MEMPOOLS InitNode(newNode); return newNode; } RTREE_TEMPLATE void RTREE_QUAL::FreeNode(Node* a_node) { ASSERT(a_node); #ifdef RTREE_DONT_USE_MEMPOOLS delete a_node; #else // RTREE_DONT_USE_MEMPOOLS // EXAMPLE #endif // RTREE_DONT_USE_MEMPOOLS } // Allocate space for a node in the list used in DeletRect to // store Nodes that are too empty. RTREE_TEMPLATE typename RTREE_QUAL::ListNode* RTREE_QUAL::AllocListNode() { #ifdef RTREE_DONT_USE_MEMPOOLS return new ListNode; #else // RTREE_DONT_USE_MEMPOOLS // EXAMPLE #endif // RTREE_DONT_USE_MEMPOOLS } RTREE_TEMPLATE void RTREE_QUAL::FreeListNode(ListNode* a_listNode) { #ifdef RTREE_DONT_USE_MEMPOOLS delete a_listNode; #else // RTREE_DONT_USE_MEMPOOLS // EXAMPLE #endif // RTREE_DONT_USE_MEMPOOLS } RTREE_TEMPLATE void RTREE_QUAL::InitNode(Node* a_node) { a_node->m_count = 0; a_node->m_level = -1; } RTREE_TEMPLATE void RTREE_QUAL::InitRect(Rect* a_rect) { for(int index = 0; index < NUMDIMS; ++index) { a_rect->m_min[index] = (ELEMTYPE)0; a_rect->m_max[index] = (ELEMTYPE)0; } } // Inserts a new data rectangle into the index structure. // Recursively descends tree, propagates splits back up. // Returns 0 if node was not split. Old node updated. // If node was split, returns 1 and sets the pointer pointed to by // new_node to point to the new node. Old node updated to become one of two. // The level argument specifies the number of steps up from the leaf // level to insert; e.g. a data rectangle goes in at level = 0. RTREE_TEMPLATE bool RTREE_QUAL::InsertRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node, Node** a_newNode, int a_level) { ASSERT(a_rect && a_node && a_newNode); ASSERT(a_level >= 0 && a_level <= a_node->m_level); int index; Branch branch; Node* otherNode; // Still above level for insertion, go down tree recursively if(a_node->m_level > a_level) { index = PickBranch(a_rect, a_node); if (!InsertRectRec(a_rect, a_id, a_node->m_branch[index].m_child, &otherNode, a_level)) { // Child was not split a_node->m_branch[index].m_rect = CombineRect(a_rect, &(a_node->m_branch[index].m_rect)); return false; } else // Child was split { a_node->m_branch[index].m_rect = NodeCover(a_node->m_branch[index].m_child); branch.m_child = otherNode; branch.m_rect = NodeCover(otherNode); return AddBranch(&branch, a_node, a_newNode); } } else if(a_node->m_level == a_level) // Have reached level for insertion. Add rect, split if necessary { branch.m_rect = *a_rect; branch.m_child = (Node*) a_id; // Child field of leaves contains id of data record return AddBranch(&branch, a_node, a_newNode); } else { // Should never occur ASSERT(0); return false; } } // Insert a data rectangle into an index structure. // InsertRect provides for splitting the root; // returns 1 if root was split, 0 if it was not. // The level argument specifies the number of steps up from the leaf // level to insert; e.g. a data rectangle goes in at level = 0. // InsertRect2 does the recursion. // RTREE_TEMPLATE bool RTREE_QUAL::InsertRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root, int a_level) { ASSERT(a_rect && a_root); ASSERT(a_level >= 0 && a_level <= (*a_root)->m_level); #ifdef _DEBUG for(int index=0; index < NUMDIMS; ++index) { ASSERT(a_rect->m_min[index] <= a_rect->m_max[index]); } #endif //_DEBUG Node* newRoot; Node* newNode; Branch branch; if(InsertRectRec(a_rect, a_id, *a_root, &newNode, a_level)) // Root split { newRoot = AllocNode(); // Grow tree taller and new root newRoot->m_level = (*a_root)->m_level + 1; branch.m_rect = NodeCover(*a_root); branch.m_child = *a_root; AddBranch(&branch, newRoot, NULL); branch.m_rect = NodeCover(newNode); branch.m_child = newNode; AddBranch(&branch, newRoot, NULL); *a_root = newRoot; return true; } return false; } // Find the smallest rectangle that includes all rectangles in branches of a node. RTREE_TEMPLATE typename RTREE_QUAL::Rect RTREE_QUAL::NodeCover(Node* a_node) { ASSERT(a_node); int firstTime = true; Rect rect; InitRect(&rect); for(int index = 0; index < a_node->m_count; ++index) { if(firstTime) { rect = a_node->m_branch[index].m_rect; firstTime = false; } else { rect = CombineRect(&rect, &(a_node->m_branch[index].m_rect)); } } return rect; } // Add a branch to a node. Split the node if necessary. // Returns 0 if node not split. Old node updated. // Returns 1 if node split, sets *new_node to address of new node. // Old node updated, becomes one of two. RTREE_TEMPLATE bool RTREE_QUAL::AddBranch(Branch* a_branch, Node* a_node, Node** a_newNode) { ASSERT(a_branch); ASSERT(a_node); if(a_node->m_count < MAXNODES) // Split won't be necessary { a_node->m_branch[a_node->m_count] = *a_branch; ++a_node->m_count; return false; } else { ASSERT(a_newNode); SplitNode(a_node, a_branch, a_newNode); return true; } } // Disconnect a dependent node. // Caller must return (or stop using iteration index) after this as count has changed RTREE_TEMPLATE void RTREE_QUAL::DisconnectBranch(Node* a_node, int a_index) { ASSERT(a_node && (a_index >= 0) && (a_index < MAXNODES)); ASSERT(a_node->m_count > 0); // Remove element by swapping with the last element to prevent gaps in array a_node->m_branch[a_index] = a_node->m_branch[a_node->m_count - 1]; --a_node->m_count; } // Pick a branch. Pick the one that will need the smallest increase // in area to accomodate the new rectangle. This will result in the // least total area for the covering rectangles in the current node. // In case of a tie, pick the one which was smaller before, to get // the best resolution when searching. RTREE_TEMPLATE int RTREE_QUAL::PickBranch(Rect* a_rect, Node* a_node) { ASSERT(a_rect && a_node); bool firstTime = true; ELEMTYPEREAL increase; ELEMTYPEREAL bestIncr = (ELEMTYPEREAL)-1; ELEMTYPEREAL area; ELEMTYPEREAL bestArea; int best; Rect tempRect; for(int index=0; index < a_node->m_count; ++index) { Rect* curRect = &a_node->m_branch[index].m_rect; area = CalcRectVolume(curRect); tempRect = CombineRect(a_rect, curRect); increase = CalcRectVolume(&tempRect) - area; if((increase < bestIncr) || firstTime) { best = index; bestArea = area; bestIncr = increase; firstTime = false; } else if((increase == bestIncr) && (area < bestArea)) { best = index; bestArea = area; bestIncr = increase; } } return best; } // Combine two rectangles into larger one containing both RTREE_TEMPLATE typename RTREE_QUAL::Rect RTREE_QUAL::CombineRect(Rect* a_rectA, Rect* a_rectB) { ASSERT(a_rectA && a_rectB); Rect newRect; for(int index = 0; index < NUMDIMS; ++index) { newRect.m_min[index] = Min(a_rectA->m_min[index], a_rectB->m_min[index]); newRect.m_max[index] = Max(a_rectA->m_max[index], a_rectB->m_max[index]); } return newRect; } // Split a node. // Divides the nodes branches and the extra one between two nodes. // Old node is one of the new ones, and one really new one is created. // Tries more than one method for choosing a partition, uses best result. RTREE_TEMPLATE void RTREE_QUAL::SplitNode(Node* a_node, Branch* a_branch, Node** a_newNode) { ASSERT(a_node); ASSERT(a_branch); // Could just use local here, but member or external is faster since it is reused PartitionVars localVars; PartitionVars* parVars = &localVars; int level; // Load all the branches into a buffer, initialize old node level = a_node->m_level; GetBranches(a_node, a_branch, parVars); // Find partition ChoosePartition(parVars, MINNODES); // Put branches from buffer into 2 nodes according to chosen partition *a_newNode = AllocNode(); (*a_newNode)->m_level = a_node->m_level = level; LoadNodes(a_node, *a_newNode, parVars); ASSERT((a_node->m_count + (*a_newNode)->m_count) == parVars->m_total); } // Calculate the n-dimensional volume of a rectangle RTREE_TEMPLATE ELEMTYPEREAL RTREE_QUAL::RectVolume(Rect* a_rect) { ASSERT(a_rect); ELEMTYPEREAL volume = (ELEMTYPEREAL)1; for(int index=0; indexm_max[index] - a_rect->m_min[index]; } ASSERT(volume >= (ELEMTYPEREAL)0); return volume; } // The exact volume of the bounding sphere for the given Rect RTREE_TEMPLATE ELEMTYPEREAL RTREE_QUAL::RectSphericalVolume(Rect* a_rect) { ASSERT(a_rect); ELEMTYPEREAL sumOfSquares = (ELEMTYPEREAL)0; ELEMTYPEREAL radius; for(int index=0; index < NUMDIMS; ++index) { ELEMTYPEREAL halfExtent = ((ELEMTYPEREAL)a_rect->m_max[index] - (ELEMTYPEREAL)a_rect->m_min[index]) * 0.5f; sumOfSquares += halfExtent * halfExtent; } radius = (ELEMTYPEREAL)sqrt(sumOfSquares); // Pow maybe slow, so test for common dims like 2,3 and just use x*x, x*x*x. if(NUMDIMS == 3) { return (radius * radius * radius * m_unitSphereVolume); } else if(NUMDIMS == 2) { return (radius * radius * m_unitSphereVolume); } else { return (ELEMTYPEREAL)(pow(radius, NUMDIMS) * m_unitSphereVolume); } } // Use one of the methods to calculate retangle volume RTREE_TEMPLATE ELEMTYPEREAL RTREE_QUAL::CalcRectVolume(Rect* a_rect) { #ifdef RTREE_USE_SPHERICAL_VOLUME return RectSphericalVolume(a_rect); // Slower but helps certain merge cases #else // RTREE_USE_SPHERICAL_VOLUME return RectVolume(a_rect); // Faster but can cause poor merges #endif // RTREE_USE_SPHERICAL_VOLUME } // Load branch buffer with branches from full node plus the extra branch. RTREE_TEMPLATE void RTREE_QUAL::GetBranches(Node* a_node, Branch* a_branch, PartitionVars* a_parVars) { ASSERT(a_node); ASSERT(a_branch); ASSERT(a_node->m_count == MAXNODES); // Load the branch buffer for(int index=0; index < MAXNODES; ++index) { a_parVars->m_branchBuf[index] = a_node->m_branch[index]; } a_parVars->m_branchBuf[MAXNODES] = *a_branch; a_parVars->m_branchCount = MAXNODES + 1; // Calculate rect containing all in the set a_parVars->m_coverSplit = a_parVars->m_branchBuf[0].m_rect; for(int index=1; index < MAXNODES+1; ++index) { a_parVars->m_coverSplit = CombineRect(&a_parVars->m_coverSplit, &a_parVars->m_branchBuf[index].m_rect); } a_parVars->m_coverSplitArea = CalcRectVolume(&a_parVars->m_coverSplit); InitNode(a_node); } // Method #0 for choosing a partition: // As the seeds for the two groups, pick the two rects that would waste the // most area if covered by a single rectangle, i.e. evidently the worst pair // to have in the same group. // Of the remaining, one at a time is chosen to be put in one of the two groups. // The one chosen is the one with the greatest difference in area expansion // depending on which group - the rect most strongly attracted to one group // and repelled from the other. // If one group gets too full (more would force other group to violate min // fill requirement) then other group gets the rest. // These last are the ones that can go in either group most easily. RTREE_TEMPLATE void RTREE_QUAL::ChoosePartition(PartitionVars* a_parVars, int a_minFill) { ASSERT(a_parVars); ELEMTYPEREAL biggestDiff; int group, chosen, betterGroup; InitParVars(a_parVars, a_parVars->m_branchCount, a_minFill); PickSeeds(a_parVars); while (((a_parVars->m_count[0] + a_parVars->m_count[1]) < a_parVars->m_total) && (a_parVars->m_count[0] < (a_parVars->m_total - a_parVars->m_minFill)) && (a_parVars->m_count[1] < (a_parVars->m_total - a_parVars->m_minFill))) { biggestDiff = (ELEMTYPEREAL) -1; for(int index=0; indexm_total; ++index) { if(!a_parVars->m_taken[index]) { Rect* curRect = &a_parVars->m_branchBuf[index].m_rect; Rect rect0 = CombineRect(curRect, &a_parVars->m_cover[0]); Rect rect1 = CombineRect(curRect, &a_parVars->m_cover[1]); ELEMTYPEREAL growth0 = CalcRectVolume(&rect0) - a_parVars->m_area[0]; ELEMTYPEREAL growth1 = CalcRectVolume(&rect1) - a_parVars->m_area[1]; ELEMTYPEREAL diff = growth1 - growth0; if(diff >= 0) { group = 0; } else { group = 1; diff = -diff; } if(diff > biggestDiff) { biggestDiff = diff; chosen = index; betterGroup = group; } else if((diff == biggestDiff) && (a_parVars->m_count[group] < a_parVars->m_count[betterGroup])) { chosen = index; betterGroup = group; } } } Classify(chosen, betterGroup, a_parVars); } // If one group too full, put remaining rects in the other if((a_parVars->m_count[0] + a_parVars->m_count[1]) < a_parVars->m_total) { if(a_parVars->m_count[0] >= a_parVars->m_total - a_parVars->m_minFill) { group = 1; } else { group = 0; } for(int index=0; indexm_total; ++index) { if(!a_parVars->m_taken[index]) { Classify(index, group, a_parVars); } } } ASSERT((a_parVars->m_count[0] + a_parVars->m_count[1]) == a_parVars->m_total); ASSERT((a_parVars->m_count[0] >= a_parVars->m_minFill) && (a_parVars->m_count[1] >= a_parVars->m_minFill)); } // Copy branches from the buffer into two nodes according to the partition. RTREE_TEMPLATE void RTREE_QUAL::LoadNodes(Node* a_nodeA, Node* a_nodeB, PartitionVars* a_parVars) { ASSERT(a_nodeA); ASSERT(a_nodeB); ASSERT(a_parVars); for(int index=0; index < a_parVars->m_total; ++index) { ASSERT(a_parVars->m_partition[index] == 0 || a_parVars->m_partition[index] == 1); if(a_parVars->m_partition[index] == 0) { AddBranch(&a_parVars->m_branchBuf[index], a_nodeA, NULL); } else if(a_parVars->m_partition[index] == 1) { AddBranch(&a_parVars->m_branchBuf[index], a_nodeB, NULL); } } } // Initialize a PartitionVars structure. RTREE_TEMPLATE void RTREE_QUAL::InitParVars(PartitionVars* a_parVars, int a_maxRects, int a_minFill) { ASSERT(a_parVars); a_parVars->m_count[0] = a_parVars->m_count[1] = 0; a_parVars->m_area[0] = a_parVars->m_area[1] = (ELEMTYPEREAL)0; a_parVars->m_total = a_maxRects; a_parVars->m_minFill = a_minFill; for(int index=0; index < a_maxRects; ++index) { a_parVars->m_taken[index] = false; a_parVars->m_partition[index] = -1; } } RTREE_TEMPLATE void RTREE_QUAL::PickSeeds(PartitionVars* a_parVars) { int seed0 = 0, seed1 = 1; ELEMTYPEREAL worst, waste; ELEMTYPEREAL area[MAXNODES+1]; for(int index=0; indexm_total; ++index) { area[index] = CalcRectVolume(&a_parVars->m_branchBuf[index].m_rect); } worst = -a_parVars->m_coverSplitArea - 1; for(int indexA=0; indexA < a_parVars->m_total-1; ++indexA) { for(int indexB = indexA+1; indexB < a_parVars->m_total; ++indexB) { Rect oneRect = CombineRect(&a_parVars->m_branchBuf[indexA].m_rect, &a_parVars->m_branchBuf[indexB].m_rect); waste = CalcRectVolume(&oneRect) - area[indexA] - area[indexB]; if(waste > worst) { worst = waste; seed0 = indexA; seed1 = indexB; } } } Classify(seed0, 0, a_parVars); Classify(seed1, 1, a_parVars); } // Put a branch in one of the groups. RTREE_TEMPLATE void RTREE_QUAL::Classify(int a_index, int a_group, PartitionVars* a_parVars) { ASSERT(a_parVars); ASSERT(!a_parVars->m_taken[a_index]); a_parVars->m_partition[a_index] = a_group; a_parVars->m_taken[a_index] = true; if (a_parVars->m_count[a_group] == 0) { a_parVars->m_cover[a_group] = a_parVars->m_branchBuf[a_index].m_rect; } else { a_parVars->m_cover[a_group] = CombineRect(&a_parVars->m_branchBuf[a_index].m_rect, &a_parVars->m_cover[a_group]); } a_parVars->m_area[a_group] = CalcRectVolume(&a_parVars->m_cover[a_group]); ++a_parVars->m_count[a_group]; } // Delete a data rectangle from an index structure. // Pass in a pointer to a Rect, the tid of the record, ptr to ptr to root node. // Returns 1 if record not found, 0 if success. // RemoveRect provides for eliminating the root. RTREE_TEMPLATE bool RTREE_QUAL::RemoveRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root) { ASSERT(a_rect && a_root); ASSERT(*a_root); Node* tempNode; ListNode* reInsertList = NULL; if(!RemoveRectRec(a_rect, a_id, *a_root, &reInsertList)) { // Found and deleted a data item // Reinsert any branches from eliminated nodes while(reInsertList) { tempNode = reInsertList->m_node; for(int index = 0; index < tempNode->m_count; ++index) { InsertRect(&(tempNode->m_branch[index].m_rect), tempNode->m_branch[index].m_data, a_root, tempNode->m_level); } ListNode* remLNode = reInsertList; reInsertList = reInsertList->m_next; FreeNode(remLNode->m_node); FreeListNode(remLNode); } // Check for redundant root (not leaf, 1 child) and eliminate if((*a_root)->m_count == 1 && (*a_root)->IsInternalNode()) { tempNode = (*a_root)->m_branch[0].m_child; ASSERT(tempNode); FreeNode(*a_root); *a_root = tempNode; } return false; } else { return true; } } // Delete a rectangle from non-root part of an index structure. // Called by RemoveRect. Descends tree recursively, // merges branches on the way back up. // Returns 1 if record not found, 0 if success. RTREE_TEMPLATE bool RTREE_QUAL::RemoveRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node, ListNode** a_listNode) { ASSERT(a_rect && a_node && a_listNode); ASSERT(a_node->m_level >= 0); if(a_node->IsInternalNode()) // not a leaf node { for(int index = 0; index < a_node->m_count; ++index) { if(Overlap(a_rect, &(a_node->m_branch[index].m_rect))) { if(!RemoveRectRec(a_rect, a_id, a_node->m_branch[index].m_child, a_listNode)) { if(a_node->m_branch[index].m_child->m_count >= MINNODES) { // child removed, just resize parent rect a_node->m_branch[index].m_rect = NodeCover(a_node->m_branch[index].m_child); } else { // child removed, not enough entries in node, eliminate node ReInsert(a_node->m_branch[index].m_child, a_listNode); DisconnectBranch(a_node, index); // Must return after this call as count has changed } return false; } } } return true; } else // A leaf node { for(int index = 0; index < a_node->m_count; ++index) { if(a_node->m_branch[index].m_child == (Node*)a_id) { DisconnectBranch(a_node, index); // Must return after this call as count has changed return false; } } return true; } } // Decide whether two rectangles overlap. RTREE_TEMPLATE bool RTREE_QUAL::Overlap(Rect* a_rectA, Rect* a_rectB) { ASSERT(a_rectA && a_rectB); for(int index=0; index < NUMDIMS; ++index) { if (a_rectA->m_min[index] > a_rectB->m_max[index] || a_rectB->m_min[index] > a_rectA->m_max[index]) { return false; } } return true; } // Add a node to the reinsertion list. All its branches will later // be reinserted into the index structure. RTREE_TEMPLATE void RTREE_QUAL::ReInsert(Node* a_node, ListNode** a_listNode) { ListNode* newListNode; newListNode = AllocListNode(); newListNode->m_node = a_node; newListNode->m_next = *a_listNode; *a_listNode = newListNode; } // Search in an index tree or subtree for all data retangles that overlap the argument rectangle. RTREE_TEMPLATE bool RTREE_QUAL::Search(Node* a_node, Rect* a_rect, int& a_foundCount, bool __cdecl a_resultCallback(DATATYPE a_data, void* a_context), void* a_context) { ASSERT(a_node); ASSERT(a_node->m_level >= 0); ASSERT(a_rect); if(a_node->IsInternalNode()) // This is an internal node in the tree { for(int index=0; index < a_node->m_count; ++index) { if(Overlap(a_rect, &a_node->m_branch[index].m_rect)) { if(!Search(a_node->m_branch[index].m_child, a_rect, a_foundCount, a_resultCallback, a_context)) { return false; // Don't continue searching } } } } else // This is a leaf node { for(int index=0; index < a_node->m_count; ++index) { if(Overlap(a_rect, &a_node->m_branch[index].m_rect)) { DATATYPE& id = a_node->m_branch[index].m_data; // NOTE: There are different ways to return results. Here's where to modify if(a_resultCallback) { ++a_foundCount; if(!a_resultCallback(id, a_context)) { return false; // Don't continue searching } } } } } return true; // Continue searching } #undef RTREE_TEMPLATE #undef RTREE_QUAL #endif //RTREE_H merkaartor-0.18.1/include/builtin-ggl/000077500000000000000000000000001177067165300176255ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/000077500000000000000000000000001177067165300203765ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/000077500000000000000000000000001177067165300225475ustar00rootroot00000000000000merkaartor-0.18.1/include/builtin-ggl/ggl/algorithms/append.hpp000066400000000000000000000133341177067165300245330ustar00rootroot00000000000000// Generic Geometry Library // // Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands. // Copyright Bruno Lalande 2008, 2009 // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef GGL_ALGORITHMS_APPEND_HPP #define GGL_ALGORITHMS_APPEND_HPP #include #include #include #include #include #include #include #include namespace ggl { namespace traits { /*! \brief Traits class, optional, might be implemented to append a point \details If a geometry type should not use the std "push_back" then it can specialize the "use_std" traits class to false, it should then implement (a.o.) append_point \ingroup traits \par Geometries: - linestring - linear_ring \par Specializations should provide: - run */ template struct append_point { }; } // namespace traits #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace append { template struct append_point {}; template struct append_point { static inline void apply(G& geometry, P const& point, int , int ) { typename point_type::type point_type; copy_coordinates(point, point_type); geometry.push_back(point_type); } }; template struct append_point { static inline void apply(G& geometry, P const& point, int ring_index, int multi_index) { traits::append_point::apply(geometry, point, ring_index, multi_index); } }; template struct append_range { typedef typename boost::range_value::type point_type; static inline void apply(G& geometry, R const& range, int ring_index, int multi_index) { for (typename boost::range_const_iterator::type it = boost::begin(range); it != boost::end(range); ++it) { append_point::apply(geometry, *it, ring_index, multi_index); } } }; template struct point_to_poly { typedef typename ring_type

}xg/E'>/l:"(*Zi kZר L ELOh}+pq_GOo-^E2nD@8h\Ht"Ag 9(Eaq#<3Ằ˔F IDAT[`8>lj.BL`4MywH b|e]KQliiO g |0UWEZ3%K*o)amf J[aRQEezv>Yrâ+0xbu' 㟌mCWݕ0F dRix"NŃ$Xfx\j U^r^Kڶ >)>y8ޙ?tKxB֝s(?]O`.%ZJ2JuHO_/y[q RǛ-c}‘=;AK5r{5`4qFUHex9>lvA;ߚ?o`/p8D `XۮYZ˘@h6lS]b9~i^>mc 9iB %>/߲!,!qV,@F#JF]~$hro>8Y+n rZ)\:xx;û~oa@1MaBH|r(ՠKEZeUQ]0j+~֓!d:Wֵٖͮ5E㉻v.-DVe;"7tQuÔyB([b Ձ4KD~vy|4 t MX∣HEsn1_6RK|.m(j6:+2"ov^Z.ln(lqR:٫xk =C{v8) (9h#!lO\"[[bR pf믺Dx !Z=We5604 )ԙq,/'6GS (}8+6[F{2\\wLUrMs"Xw%mG @ @n̎N5㽷'2p0Ǝd q2ASmZ`98a8do8u 2L`O_ `+!0SZ?pdQm.c?AB@7GV%XXIM Qj[s=1L .P#ض͆eM"y@o00@2HDo4+n0\!d]UЪ;~k0{яUӁۃ5DkDNZ?훻[7h ui0W\#wqUQHPMS8AځB8x7`8C&(%0vrJ!F]_<:1]]! KD )s{$npvw-]*T Uq>s'Ώsxzx'50b1;Q+(ZK81eK`&`JleJdHqlǽ0tSj\p/n&h@34<(9@B"rlb-`0\Ajv&l?#6գ؛;2.wJw4@[~N0$FzRqrZr?cK/cɰ-q{tᘀЗg9F ,0@+@otѴ|~ޕ4Fk.6:0Ld0 ֪I*Y]c^^/_)Q~B"_@(UM63#zc){vH.qۼ;`{K~=|KJ*Nzvfgxc&:f{0 |Tl%.xR5A |1jw˶D; F0`oKN{cAmgb4uv+_8W/!e(ȅ!ڤ8vD$ri&s|ٚp'a s`44*lrAh9' !}P%X\ݻ\{8{969֫s FǰFe#2䅦 b !j` [ _uxeunWz+uԎԸPDY 3#`2X,VRA&[48{fgPb 8#) ^ȤB*(Cr\h Jܖb XF h8ABE;zცtum[ S<ϩ%m/E!@]n`G.ΞuDU.Fnc9| Έ{sc<w<`:@JONٴЉfcݟ^uH6<ک9UӆŒ (hMj@$Qtq("L<{B"~U 9t.$n{Uj*B28#69z}BD7EYJSZHB!.ZiIr|2T<W}gWA0%KTeElw}.äs2*ݐ伶 ay{"obSru0/!UCQ2Bfk1~~`4wZV\*Q+M"Fj׺NvnHu3<}q,D:B/g(۴w`-d%^P_JChNT(H,}Oc ϺZxuû }](a,`:7*r?=ܿ+&)&79 *"VfSe on[#h䘠 }eJh,7W4@k`/@YV(k >Fo21`B9AjDSmrr`\̑oϮT a HI xߕR NƲ` 캮QVu( #$uzc܋4"" G8= :ۑO4v}I3Mkp7c8r7 pR"epQܩ.VsA,xua-d؋1P )Ps lPJ!dcF:gSě^ڵw+u~ѽ'7;v/E kכ|_Vmآ=м =7d7=O5zCzWo/&I:y U\ٳݠ,Pg]Q nF 4>݈/#`lEtS`'_/%Yqc.3Ȳ!Zk(1N 3':z14J5VS.awUBS$Q|aAk6b'ƸP]po""h`LlqIMm} 'C$xX+ ZhVW-ۛs֮Á[R<D\8Cp7$߻3rAHZ4a UN2A$b)Op{c'?%.иbU,,ϰB5 ʲhio9pvƯ?1сygV.ZBŶh;vgkzjFywj›KyߢDmkY;4z٬e[w/eq˳(&4 ,v1ec8>:5LNlKAԪE]"i#c*V|<t5ʮQF /|_|R3srL!t(pc9?؅Knq]Zsna#yZq)^@:+ZH@%'8K݂G{.ҵ/GSS9AgsWS`j5o_3FNP_c18]2;*1X_{c{$W.;ZMcVPM!Bq/U -$ 1=xB!xppxpŢ40+3u4pyפ u )3Ѷ噧ոi'j0;_8ǴSתVt}I+.Blg5(7_C)Y7y1ԡljb ЪB"m-Ȩo~m׌7ZVd[7nL6iA|zX~mc/gWXm\c)as־?_` 8%R2Ȑj'tLnIRQxy“WOO |q{_1K+q,lQָ5n^&&k; lд:,9ЂCʠJlP$vQ^>z4`8PUE Q{V8,vۛ#LJ0fQIi_nzT6:'R='iL7`\5<*G]hO4gZ{{xNdlk@ϱ^]"__h9}uW \j zA=WOM)i+{Aplʪ:uS>[N#cN|mqk}v}}.S`7Je^73 (*`Zq,%Q2aBY̠)./Z L$e#2zsOz?Ț+tiߺBN%y[֚$uQ5R|_%:[Biw.*y;EQ c, U# mNݦN4W|041_18PҮ/c Qi-6Ra+>_w~sG?A Q-+yOf '}qtf#!Q'\#x)Vzu ֭ƐU`pVAz"Є=Jq޳˖c[F){da*A 2H#RgƄe8; vQU%F#+Y-d VkmNEtΈ "=\K(-/_KeܒAsc'^3YAlw3> VB${o\(huc5v}8JD ړ(.ebSBFi8l,cJ0p j%V|+g!w  ѓp$;Nb<] >V@^R獬6[*b:>Xz|uA t%## c筤9NkGB av QqNx !Eيn\u> 0H!8sm@&_Zʪd޿{rem@gK%m!.8–lhݠgh@ F28@ DqT`MVa5‰a ohPm%W0,~=ppӎގ1xeWϾt}yR:ۜ~ ux.O. b":|Lک?LtFժ$ihϠFUu2rnZk b7DOR NЊ-ZzTôT.Z\>-!p jFu (VK\\UhCY@vPӻ.ݍTtx-˺3 !prV%{!6BP `FP4 NJpT+[nprA2kwAR·oH#-A R4 !ˢ8D2*kjWg+֫gh.pg2"%9 RȀ鞧UZDBFuсḫ@2a;wo!߬?Og(k-wrY6C'V{|-Ś 'T ۹F=_@v!0t˖ḻ(v~7)btgP7̀yw?x={Ia[8dBNm! \+* MkK(*AlCX4uk?l̯WhX,f6xqϺH09!$9JtZGb4>t6l8"IRL!2ƎK9&.'i d1^HUWkTE^ҟ3'Znj:DA'{fc)l$!0FarЦ3[h 0L]BY1ڴpa*\c^:Yۺ@sJ˺9bgl,`]w_o\}S|5Ij]cF\]D\#UՐV!pri ?^۲Awoވa]-DqW :|eՑ/àΗ ;H.i n8+M q#^ |X_]X\?p4& $AKe ah!# RmDw΢VΏ5 \J&[kՒK IDATqy9٬#BJ2۳4L)S )Yk pWƈe)0Vq&Mm4`{lOd5✘یY( %(*yˣ#QЦDҎ16e1Cc?db]i,7hE`)Ac~uW 0$3r4gf ^tǢB{/YL"")qj,/Y]"RGR^9C#GX^=snUՐA9\ڎc !ekpxM g 24߂3Jig>ܭ)wocE-߳ڽY8 ͩcfw 7hy}hE]w(SKW~Gٛؖgb_ĉ39|zFɢD6ED6`ÆmZx2k+ol a0Sj&2)Xzs|UTW/{O p$aXd(3SaJ),f.Bơ' H&Q\/f4-X]XV羚NB8>]R8W A~/ipsS ]6 h!eȏ\ lrL5yeܠI9:`lk$[`$8 }fzviFԉpHߧѮ998;y0Pȧ#9H{rS6U\fVEշF]Sr1E)Du6lQd O愩|fŦYՖql${z6 K^>6/J4$ЪM6?Og3Qj$)w-P9ba͵~4|8 uUsp""F>=4mXdP5VQ9ĴhBVH_VښgFl( VnU`]Ä-$ ~W -6uUa2@e&Eh]o<6/we4Y*wqz,=~ mA2znk2-H"@IsZ9-Pc+I?;/lhL֧'/X_t{XFC&r* De6jY!MWXf31 &2e+UncÓ%NMZ'^@8 mJU7ɦSiWxwB)'X.~8I >d '>k*P( BXx\lF?4lՓΆ,iUK!}2&aHmk.)zZ~l>}nvakȁw?=d3]*C -=Aء3,d3'pl]'chU!QN֊}ύZ W(^D"7@u,h_\9reZW_<1G5nQ%}QGh54If5o#;jEYj&%wyIѨGVv2<>ÃjRs Ʊq20&y玧D wqzP8;To +׭!{錽 { ̰6w"ɯac5$va€Q2@8olK.4":30BVӹviأ[hLV)榳V'aw{HEL<0 N(&OP1fXz NhQ<ź1jZE+UPK`'X Ʉܸ_jPi_U ɶezu~Х^U?g%̺~(=h\è 1]z֒ư步cJSHkQ`5l(Nqz6gT;MIc޷ɢ4D#G/i%9lUdWucgZ܂7?܈έK,j X R79kddaO5JQI$ok NlBrZs6ס ; dJ+8Vj#J BIȺjHC-s,f w\ki<׻yLv-t=s5v)Yސ<#m/il.Gk01[PUMU- k ﯣC ''8٧ v[_4SqއF0C'SMMiTb>GY,!d256 Z[2K'(uR(UC1dRWM,VkDLUv^Rm!zrNoJmY9X+2Uu͔iUM$@xYl$MRzffH`li Kρ/YUN\r1fUe9}y*՗VgtMvSeݔ^Ob*JibRY*2ΊUOD2 +:k&B_)if-a>,ĵo"7vUm&<{ȳ|x 4Ԉ›C*: ^CTq!B̃j\ Ivr,S\k9O5F=`;)8$TlksDnͭxG]{9=n?'jc41-_qp1p~HtQ60/VY*ÇGxcܺ}F;yA*=Ӓ+JcE`gM)dBl- _BOxXⱍo,gm̑}c7[?{#6[ɯ2rdB.Bl&O1>}~/6_bqQѦ-<~r`kH݄?,J E p$OQqDUzj},b=\tɰ.y [N0DI_d-pn^!tjX92UE~I X-)6#loƭq?A]ε!}/~1";֑KȺ kCْH; Jt\wQUxOR z;t҆/1+9̩ uEgM/HT\4_-ul_y))Km^G]Wuc`1g]\x7m-OZ4֨>w 4b/^ze10hUǃp/I(}n\8$05.~ɟ.Z.y\U%V꒤{X\ӨgϧߛEOH"k%D^HƗO |:O)>=EUy B(1Á8|Iق7_]ӟpZXvfA24nKRQԃ!RyȖZ/lь«[XL7tAdv27o\u$HT=Y+ҌӘFp. nmO5jk ڠ6ɆN/4O ppflҟ#pjsXΎGrlDm188^NGOl]`O$N^A]C-LNޓ30liL ˜"VlRR'[qm=$j}~c& vј w3R Z#o=Q`iukjVY-w-°3dضJDQ%Нa9?DO -3\j!~#v#I/K65ll3ퟄKyc(8|  tgE5 }l\v9 ,4:w?&0~).nG{i{[$Du Hlly%Ua܃+$g\}e*jYlIZ=,,Mqe ^ ZO@Y)1΋NL/[gw}ɤ]_PUvtN{p {t0Z\ w´A_£/5:]Ne_0 ?Tpkam1)Q@5.D1>y Jv k~}^)wgtPGԂU;B2o=Lsd\[7 NzGW0c!gv+~qC'X_Bd|b*WU(%!1Wr|TgEq *\ԒpJʖ?2%p*W)%UxpDI ,f'6&phM]j=T!DȳU!QBJ"xZtJڀF|Եt:Ftig`$C/3 )K7B]KDC?n,H,nX OF\1̗ i_Ŕi B2;X>9tiW|< =ܾA6?BYUk3ӴlO?akd p:xyT!5abe>fx?T9 L' U0J{kH} M=xr]O^Wݛ/|" 5Se03&cZZ~ߺm ׮0 ,St w RVh8;;\l9E0y^*QVGgݘAضf*=2-E* VqGg}O UsֲD7T`xI`ƙI4idKj@s>d{ڍG,{Ea,ˑxNUn$_R [snAU(ID 0ZUE-Өo~FYcw.a]5 >9yzEqt02ED]KԊnMץ}~ <'3 0N V0' Z445њhk~:!4s<.lfC84!xI_q0L1\ /ҸvUMa@L]1 9us,SEn*38.su3tf&y0<7|,cf٢>K̀[CbAKYyY#9z)G v2Gtb+qL nM}㚳=wZyV|/eD'sًo_!qb_+l K, kOXf 0㵽!HW!LuD=1mF:>yJn"H A8AΡUI.o=#zhk}r2c8̚aL>RKɯ^ <q# Ⱥ`c~ғӣ4ޞ r҅WOcH@/Z-O?wP0H*xLV >ʢ¨/\@pn8$"$Ά7n^$^jIt+B|9,TXoIA,QX,f&E#R\ɔ4$䚺lݜ"tVf,=r$yOhh(UUv J3Y6Ua/%tҘU&Z.=}<ðk!~+Ltn x%IiME~[?agq IDATy6p{oGx%D7զ'=uuMc-,¹g \ [!Z^7hgdI˜Z٢jT ps/[o)Cֹt8aE.']Ce61j.(JH:ؽ.8pr ZY^`$ {]5`sI(A@&u:j#: vIKqn1;RaO]Dc|vJ oP;͂Lq;Hܘr2{_Wbn_O ,/ȗ/Y C|# L_`ccۻ7\LQU9Ƨ/'R/2T ȺBnC$NOyig1zmTvWa$)Ctp+cˬBCJU%*c% tPڵ}ث+Qf[]t9[K-gԎWƺe8<@>ǨϱEFX/>a66]Dq( }Dɀ{M-*'[ ma8R *ˁɄ&AS=[4K;аӴ\ABXf0jhGt] Q2V82Weh4)sö8c|0sw6k\ˮiBj-fB[ LP̗ RUv+8|_BVƫJ"4M1E{.Io{rGU( yǝO^V/R]9R"\[]|M^cGx &gֈ|)j>⤏n$L& m")|?@ e("[ #Ł "(4TVJz5*l SQQ-C׼6c*[Itsf;]CX\W/*%*"Nb ֮& ƚFYO 磠!*h1Y8>"uBѐ3D7c@/E=GL7\`G QWz]LΞ̗T˃S^I$: v4KֆhkèνkPU hh]{%C3}o2B`h%nׯ0\Vi54UҘv)1)QUJKTi#,3(Ig(b>;dQ2WIr?iHbd:Z)@d =sUîZ~wADURʍ:̦gteU i8W07ԅMyJCxA?wFy+yECӡut+"\kbfʸ\K\&5ΦzD0& ;;BZ-38gdk\ mBaEUM B]HeYK$mӺ6fpU/>9ݷ$:o(Kk<X,(8㞻Y O`o y0Б Dԍd뮭(1Lyc{V#Dtx;9 JCJ.h^,u *~ 柫fPM;Rk~-ik}ZlCG>}Q /coA ׫&爭ߧ $})=olrl9 HEH3o!8=zJ|'(RNxA<A)FŠGi۲g[7qr}0 PRbkM݄zrT;5gpJ:7aJ@]--LnqQM[ 5u)k&)Jq ΄3}5Fۆęj(Ob69@aԕ Pz&`Og_P C[p_;%gކ!4|\3A7qryĠVa5vy ^uϞIN+Ƴ.X3D ?샱yK  g aJ"CS*tVHN}"hJah Oyմ8v귵FN[C:0d>RccƕaEXy^60Gb.96{xV% w;?϶()ٔxfD#M~(aۆ!ocjssn&Fh~aC%շq< 6q0={N3,S|'SO5&ڏvk߾cr4SVJTe"'kh.A˸t/LP2'tM+!ªڅrc-SFdoכp0kQ-aӄ0.j ? ϑ-OWlLm2җ1 IIU, 8y`qB0J0Hx2#g έK T̠] >Ur%!f[an==(&qT%Oue%-&ކS^NgR&Յbt2cl[>sf>Cϰ`g/R_Z5ѧ7~xNo-rb۩?"U-֗t+ueut ?³'_x|񼱳U xy,<<-%!<I"M80DRi}AuUBi iSY03׎"={paBnI8CQ e\ :Jf9N%mZGi`:[,GݠFxr1%*7 `vnf ];de1 ˜0pDQ^c#1_56v$ $k@ T7CØJACrdSpm6=\E[ jrS~?Hp6%NƇ/2fKl~me2 %~ ?2?! UE˾i싗ǘLsǻjGasΪJ)]1dF7!\ʊԍ <rbj(pE1 G^HS,Sx^`¸ga`S(E%/(3D!ZidZK[]TK7 i؅aVi^96[x6o**0io A5k6%ooNrVmoh6C;O)H \x Zsu|j=t{(%)F^ џkLYAJ%#_J*>߼DIa7Uu,>r2QWWЪW%8ł$*Bp {_+ |'pL%xy||Sl7vHvu[ߴ=ZB~ſ->1OXz Sb:ǘ9IQu| ) IPR!ϖF@#Z{H41]<*2v2ڱ97b[GѹU;nZBi4.1Mz il[4b=/a&IpPh؇ZtL|rxF'UʕSTEYʕ+ FdvXfH%] ]|N0qpXΚ*T/(r,se<$n2 pH:= p-PZ) pσQelĠv+)]u t?; kI׊RȒnw&[=X&njMG}>;/>9];6&b3V %їq3ܸwVfQo1m\ûEU}+G `Hb;䁝e"bUD5UtM 711hB4t^c{˘ m9;{gQ\C{]:4icpD7t;p1IyvQj6A!S2jT[*y;6wM uI(瘞DQJ9z`nbۍ;kDq@f+Zg{ R*(I}k~B5\ߣ)?A81;P^Z10p(4h2Cw!"wW.hMi;){vhZ309qXf~G2 ˫Zy7Eٓj:iEؑaLXj2N Y>xn/I[-y}aw3A|x"UQӲ6\C@IMr6֞ţ煋 ݉L^GYXJme3^;wUqAJԤUMKhvd[]c+gqU1 J6B5q*7\Bڜ~le,EI&t )* Δ#BSŪZQ@.6=SMyzv"kpyF85*$2k҃VZ;{wg<sŪb TdqW%dϓ.|Br 1l$uJxw5{(Y. 3=T !|ҳDnqQN>w8g1}jV5lbqsWH#cgf ﯍ tEdᆳw5]71_.L>8D$dz(|~S;GLh$. {ĭоqGW&VI% z6~ߺyO>o~wnk1V(9qnf=(7J6[l j[ݐ7o(T09MKo_+!9(x0q0x!Jl9*/})&Dмl,aTKS+gN܈bӘxJ.Eh {s.Uwoa|\aiܼ"&>ۻ.P ^+U3{kC F N(_AEUf 4  56o:V ws/p: JKWݵ05ȗcLNB[IC]2UjFF_h+,DNj5; ,钘-X#7Aa@$э%=S6՝wn [|}+޸5nuK6Cobk.B~%;lnɍb[ Hf-z*Y@ziwo#~>F;rn0a΅ 'A>̧Gҥg7n^6fu_-Z6C DFɪ! oVW%L!kE!*-3/vQgʋQv<*HYMMi'9prV $Mz} 0! 2Lk)W+rfqsQ5 $#‘lYK"m\lj\tՒ*4i|T2=m{k|=tRqȐ&):lYD):6NqK0amc$Yˆlַ@v[˒H!5f䯍^o(p026D$b(U(E`9RH;C|~2}@wY1[mլc*&5YO50qvm)YA{ Ln UDU,5z]d8|QFZ8ϱ}U |v!B\"Cu|*dӊ,fWwX ~.Btǽ7n uk\XS2 I=BePIuTZQjͲ'Xi5Si :,愁]iikALªz);!z6y>KgC8،I]n%t <[mmWqhC|*5ܒ9W-_P3,fȗST%ڃM;PK"E >vv/\DE&}BZ8 IDATB\} 3e:%¬g\ͶHr4> nrvJBm:qLMPgY, M$iPf& G^̘ƂQG? ^+0w,|r/ϰXdx~P;)C& p~CV&_:YvZ&LY8ei:?`v#\~`b-)46ȜXf >C7(kI>eY{*vU谚Mj|캥׆T6n|9N ެ ~`X 1;o~?jtc`L,^OqEŐ `P28ҬlIISɛ L$0Sp,p hnˊr* hQC1AD]蘃VNlEBi_DlT',74_|r25NDݤ,YgmuzZo'9r#q/h[NFPQ;߅cxd}8 ĸr9CPUK5<3|?ӗ܃.'s@̅ﻱvoՒQs@+ȺsO)*C?xnDQ90k u`zDsΜ_+E37=g3+Q@Ӯe]b k3aFΑ_`^6WߦÊg{"4$AkG_ƒdyK ]V 6|D^#/^ig qTK~C00h.Z=ڃラ`4p;غaZ*3yƇ^Å6gv}m:S+> ?nz)X\.glgiixš#Cx @p$t?8+*)v^㫔i.cmbk6F鵹J3 px^Q ]&D@=-R՘N0_*J6i!0zj x?Ú Iw =ƣکݦz:p]|'E @]CmnN*+H[ǐBYdx3| S,s0M~w.K<MC8qƯ)\ ++"zV钲MN>E7RjÁZpK>C(*RgKa5ĚF~Ӊ\ yr mO90 |ޕ9< c&DkUuRh 2'u=} U"JEWp4=T%2>q(d[2!=CW*WI{h*Yb>95}߀w1 .&Ķ"01zɺZVaLޓGcr8<W[gO{5i<$>W4 e|4y| aqU㨊 s uc|=\3/>wNM;"%'sڸ fV`+-'֝=mh='rrLV&@+n ck۹xUOQ$?NlU5 D092Dx&%3>7E{0<]:}36V)UެjI-%l?'qĎr\rb[ umɒ%Y$KeTN `3?V{2"ެy9{{?axDQ4#VIV8e163,KujBv'Z:Ed؈6'^ +v1C# В_;&8!Caqfpd֦NlBnnwWt7L+mBIxMeݷH&?2d.ة.2|aFV1fLuBZ԰8CaLdܦ4VPn~BL4@Mlۘ`/KBmc:2iƘVa-3~PJqE&j`1_+ dQُTm0OBk8߈G#(/!iQ|Wayz X! !i !~AtҋuixU o3SpB.1+(<0H#m25b%R RXMv;*|"ҩh,-4~V aM|(,#hw24qR2%JV*`DEm_Cӄ0:A\bM7[=~GNU{k#w%RQ*RNNƾt̐޵0l [( Ue=IB䟉oΞxhh̫Ԗ .ϠQiT44"b":J"LWD7ЇS_Dؾ}+~u{fPs(-tX|qdgֱeFZTm1h umBVn3R~y@5CKeӶ FƋtԫE&7j%F!L-=KE l\60TaϩxD+MEv0= :hc1q3;|RJiAzuXvH}^שen;i) P)b3!!%|3ٮ2ԣ*[ͥňZuɉH6&OeI 1HSFbq}fcN5[1?wNLi*Di0XfefC`Mukk1B hnCZ{oSd# vlƭ7mD(2P٨KigM2ٮ]VHjڏbI7̀|cu"T | QH)؟#q+R'^+9,^J5^M aAm90(P\X*n{ijds|pֻn@۞*Z\4ja #}J8{Jp\(ׅOĦ (i5wi&4@nN1m_B]8**>I%T 95kEAԽ%me#R :p+X.&#el\gmy8NY+#]x~l}1cEiEPݺ6]7\qTnTpBl)8. /D1Q4jVΈV䫇Mk Js8hBrpDŻ*-:K1Z$a᳥6ƈ$RM u%'p\0=W *5=mci& +`^i.z P= <eUDZfMοiQnC1Mp~<8QHȤ2hQ ;7Yx"ɲ^13Y&[CY34B-ފL߰' ~5vϹ yڹB\<}ӐZgm:F5\kv˶a, RA@sʼnX- =aachl(otX>"?B$򶣄RN|FBu*(ωR@31>>. 04A#4CpU ٲ!imsXUV\vxNU6 DS6D^uQ8 "PsyDMφW6ldަP?<߀S[`2&'/H%RHg:`" c ;E> \ŹӘczJI9NI4-%*wl@j &x6a$υØm9`^laY֮EqVb:HS\6Xa"/E[l |'ɄFd"L5h4IxJ,<=)KbJЪF[T xq˴*|JՐ]3A&'+k!47D[֤afPܱf xc2Sa߫!UR -WxJy7x8݆jxγPwP)->F9-JYXC&e@tn3/`q$,^+e/y.3Ʋ6n0tWGi);ݖ'N.G1̉ʕ &87^wEOЈqZ=+?&m͏j꡶ þ-C#19UƊrp8,hDqYկ+4¬YE~u08 m񐥀IĥEl$g#?lOmDEH$<0֬)b ga24 }؆>x }f_rU_(Ibᑋ-`l/T8Y|81ewѨP+C {W#P}YMF6!lOm 1&ϣ%+]XGZ}M2 zFt}(j0R—F kFT/?~W`Y a\vee?0B.ul @\6aI$=^ b22MiNNgr|: ,ñ 16ɞx~g1Q)+<ܜL:sDbpyoth}Ym+IFLXF(J F-U (mfRlRvR?^Via `||3/[h(<iFL2DX H[H\q1nqR:IRP8MPµϘo18틨ԢhX,4Fa(?4 K9r^mJʥw|Kb'Ѐ0$F_H Fz#ۑry]}$'e{.#j;&S<>]ѦǖM[yg8捓l(T| j[ENef _B#[Ea4r,*L ,web8gUH{yh)_<^{sfw*9 3.GrՖ}!apuH"(%V |4A*d\ fa>^bH `X;c`ո,}6 kb7)1ri3F 2܋jNJq7 CIj#eaFU&xTv/D.-F:>}0ݣԸ*+_,(ldEFZR9X.lCapd#ѡ ߀-}r*b1-o&߭tzaw5!r|Z%Y]=Ǧ:u0y&m CKH|Sm+zXHnza! LeQIL4!,gX]Hg{MȒC *va-H7>2bh\IԈJՄ Dc(\*'c"0 &'A!2-Wope0j d7KDIq4))D̦h1ѽv-;ʯLc^j,5N 1#u Ĉ*G;;87U|1}v:`aW1Kngr@{FC4TM=榕JXcaزaڰ <)ޘi&"MDXG֐2! 2:,Vyd/06tX( ѳ]԰Cضm'4-#--ԨPȦ),OtQ,0/YmDLBkukX9sgZ)k# =dmBl">{ e e4;IIMb! V8Xtrr3ӟ6L.krB!׋t^];^CD(#iܛg Ѳ.ϵnM?6l@S e8E,oJ)0@r| #TA ŋUAp*kuدh'p%]kaC&ȣOΣ*)R.Qj8IxY Vo$XA0Sdw{uwyT` ށpƺfaV |G44tCLO*ctF @Q˥j+|/F1 Am70hHRG*݇fg&HmN4 WjfҠY,/Y/Q)/Z)u*lJ3 ހeqΑ5?PTbrCx%l6̭  ڄ+3^ͳ 9[&"!ŨY̐EaU*FW!eźӤ $|4x6ect~<&so\Y4KصQiUbm&RCJABܑ֔f@"1/ـ,8OzL s`IfCV)u88$ %qBkʼn4,aTe{@C$i0@*A6m Bmmc2cA 0{F*V #HY;b㦭 2I:vdzی~X9W6j4\@*(!E[ M-h(yLTyqp$wPtsA{ X,!E z[F?DsoyifV3@'Cʔf&#68uVanõp}ּ7 ri.L1L;:!}$&+mXͷBkPR cQD2+B5͂,h s|+9F k0ZD5H K4Z:߇ʠ ;pSvQ3'$evYyo7%#cyA Àiac{dB!9M Fǚ{C '2e$J"  )x2;|3>m%ƈoƎݻ`VR:GӹDLTh1%+F$c >BX?&Nhfgk(9ޚM(᣼8ay9I]0F ZEZ4Μ+XMX4bm~Y F^ZaqBhl9@+h4A;[#f{ѓ}_[#9fRRNEzVS_iZu0VLE5d2J^Lpb!:ce0S-Os=T ~`.VlSE&r'R9+ =tRu$lF !֞"d9gMup]Kur0slb<*%LC0 aUM!(lS^=͓ӝq2̨+/9! Gx.O f6bMDs"*Xұn,lnZ74}qXj%>aXyة,,J05{6ßuY'y=Osm94n䍺6 Ö!psAp{r 6-jN #vi.\' WJCT3L4m0 _F_PX.'*>@(pX`;0z4TnJUz)"BZ*u~(O DSI5W b3:Qr]^KVwnXK Iz 5P vWGV@8 M临e`: <}fR^x^-T<+81"Y"h_+ҸW6S\r OD% L" )Μ9"N"B^d\ 2z|p7FAbz l]O}L߮z5[cb,gz]?eF5!D2+U#kM_aazfؽl3yu\S(靀rtVhHZ0aϞ@__elX= (: 8N>~q?,P-dGJg%OY1Ȇxӻh,;٩.^]JPJ%.ZPB(ϗ;ƁU}l:Aw﨔Ka9 6Q47٣GGu ٠C"?ӹyklt4(ȼ\A1ǦsUXV]oHJk "0)-Ybm>k 5Ȋ\oϐk NcR 4D>g㺝x詂 ϸ(Wة NYIpjrs? ϭ^->YEx;N.NzYeߏ^ Pw6DӀ4\s+\%Ut:(rZiɊK>'XlLyti@`$:xx&"j:~xI"}ut 62OK-XVz M֓^i9C0YKIMڦ̄'4 P\ `6zWcw%.k֗"g&XƓ.;92w`iLiP,Ct\9_V$EO(&#>m[2tfQ/WTd3k/f!qPٞ#dGL]@4#h4)H)MezbZiVN«:U#2$+/q<-4 n0% N+LڔU գ<])! 0XBzZcD4iM}'qI5 0T !°鼊# (t+L~@A<w4sdPkxxI$4?9h:Akq6{" Źv+zT2}lm@>3$^7 @$SDˇ0>$&NxƦΡz'5f76B7T(t30`yXVu]̞@Q,ㅣKx**f7 k]]x*2y>G"һ HttZ0Ge"vP&QbY (/EÈ >Vg{@@z|bN:"9\#n=a0t4YFgA0SԀQ_?4H^̘!<ρaXJ iD^ ϱSǡGP>jZE 4JK33Q3LɢRvDy=R1Et X3T*,Ν0L[6`'bDQ1& C+ľyraj-%@1V (@t]VZ dr0Hgp ʅ X u gS3)MwaϫofXs*繸˲y,;-$1rD̴ Fd+0^;z 1.&m#8aòؼTA205*qZ\.'i<kB8&,'˹0n\™ACzL۟<|oJAAA4 `)(((( 2X `)((( 2X gPKoT. ,XXcr%L/ލ׭V ֕;e'e6hQ8<|m[=\ǟoXףe$ufc(83YWuc| ck/鵞z-cx1ԟE>gR7m^ _}O?Mch W^q9,BrY kF=k!ͱS:௿B۟ d_{i5LѮoW2%/=|Z auF~fѓ xӭ/? _NLV ր?I<N+>jQꌉ {X Ku|cH fkW>yz>/+>|LNiم ˺׾7߱^YB V6cbH^KD_azUPNMckizygcX/o eV tn{Ņ8@u=0tEmTDb}ˆ>laaiw~(֍_3jQ㧗jW:zr%]ޟTo{FƉ3K-e+/sf2 lݤWc 8^IE.kE#9NOz,S赖 |G0ЛH'.z,~9JPo{F5cݹ %|ޣx ^u0ohNO0؟ m<`{GEK M+gNƉKu/ .U>pA߿ Kx|)bE+f8#'.jX-e_[W:?I?4 Wɍ_ٕ0XsM9/}:LUK쯞n;:o%C\߷~pg|]'?＀{~ ox5gcۦ~l?񃟜?[ r]r?'6JC Q{lv?} sUhܰ{$qo{[kv¿̃*KGw2XWÊc'c#}?? %|=;/+!>'QփNv:\L.Kw{vةE|c8{|Je嵇2mWe_pϙM㶛qSGuCǜThM{׾Rk!NO4,>+U6c]wl^ +zo`]>WPlmymO,-3X_5|N.TZN]MWk.qG[~''_6*[9J ֍}o_xy㍛ד j!!+P}O"ƶĹDb ?}C R]{x(cq-лv$h8A=2gy%+H\w9?xW^S?[ɗf=k.GMy'=v^{e4Xȶ6|TR|NGg.$BzV[/ɫ\5Qlޱ}E.)|=] $IDATLuV1=͍׎tgNTn#X^k_5mkVPE-<itظ)r55-]{S U9tR؇Od x6t.!;ysq4~B+N?~O, 2M #.ԅg ^j0_<8[RMՋѧaW wE}{/|J^ri;|% GU RÃ+zo*$̸0]F$'^B] X5EwkGm 3I>KW0-g⼭,<z98>ޝxkVC*f%qg oWŸ|I^=׌$&wno[oț~~ &%}9tfPNHDqx d:yޔup8;6-my0ﯿju݉|<=_&䆼#gy x6XLpY)m߸u=*  W&~}+{_3wlWm 3|Csm\[ЕXv邕V61֬Ld}bǖ+voúx,E?rb''G;2&WLnooȪ˾P%Ý8A,SMrm $xEÇGBֵn8>OWA$ E]k_5#Bi{޼%wHKd3&d< OΏ\0Mz /ǚVnKJC}x ![oxM+0wz s\P;BozeOx?-JNߒCZ?~4?g X>e/Ikuck{˶{h,l=w<5=YgNGf |1ꚑE%Gᮯ=Sk_2/&Z|Pf3=T^~z[uEa]!<{u]ݭ$zz>ͷ|&iwٶť:x㍛:q }m OS ûQS-W^5Ko>5c^F>%l\߃_UVZssS6 w )-bӇNZh,}踌&֭¯eK7e.3%G旺 V4sQfq֒8EWKw? (౧' h Uk.αK;-?45{Dz7 '? %׮-{cdSܣ߫27W &_Cl/ܓ]k_hHp|(q;-\wp`}aH[Q/o:vlsϲqo`]&nsS%҃9pxP]9; tm e%k襁ZVbSe<hΌ m:5#9tZms Z>MM|=:Ҫ_i1=C]{߲%!&mnC603WO?>M#лo|7e.{Qk$Cu?}L~wn{ߺmkz׍:<>{ד˾B ( omoyS-y\޾ omòPl |.-=]{zҸ2&~iKعuV~FޮJX_O صfg@=eΏ^Q"&aYߺę?ޚ[f]X5xqB7e.򹷿ݺ>5ҞkF}Yާe~5pa бa]7^z$X;uikWĤp#CYfWmĚBRCBSUCBTPCBUCBUCBV CBVC BWUC2BWPCJBWC_UBWCzBWCBWCUBXCUBXCBXCBPCB CBCBUCBCBUCB CUBPCB C֫B}CB| CBB| CBB|CBB|CBB|CBB|CB|CB|CB{CB{CB{CBlCBlCBlCBlCBlCBlCBmUCBmpC BmUCUBnEUCBnC"BnC.BoPC>BoCTBoګChBpC~BpCBpCBpC BpC BpC$BoUC:BoCLBozC\BoUChBnCpBn*CtBmUCwUBmPCzBlUC|BluUC~BlCBlCBlCBlCBlCBCBCBCBCBCBUC~B5UC{UB~CvB}ʫCpB}JCjB}CdB|CZB|ZCNB|0C>B|C,B|CUB|CB|CB|CB|CB|UC~B}EUCTB~C4B~ګCBCB@CB0C B CUBC(BUC5UBCHBCbBCBJCUBCBuUCB-UCBCBUCBUCUB0CBCBCxBCHBC UBUCUBCBC}UBUCvBClB8C`BګCIUBC(BCUBCoUBCB5UCīBUUChB`CBګCUBHCBCBCBbCBC|B8C^BCHB C8BC&B0CBCBCBCBCBCBCBCBCBCBCBCBUC UBHCBCBCBC&BC(BC.BC8BUC@BCLB@C^BCUBUCUB@CBjC'UBCZBCBCBCBCBCBCBCBCBCBCBCBCBCB:CUBzCUBCBUCUB:CB`CBUCUBUCUBCBCUBCBC*BC*BCBCBC"BC8BCJBUCZBCfB@CpBUCtBCwUBCzBrC|B:C~BCBCBCBCBCBCBCBCBCBCBUC~BC|BPCxBUCtBCnBChBrCaUBBCVB(CFB UC4BCUBCBCBC BC BC BCBCB:C@BCBCBpC,BBCUB(CB(CBCBCBCBCBCBUCBCUB8C~BC|BCyUBCtBjCjBBC\B(CJB UC6BCUBCBCBCUBCBCUBCDBCBCUBCbBXC2BUCBZCUBCBګCUBUCBCBCB UCBCBCB5UCB@CBJCBpCBCBCҫBMUCUBC BBC'UBCHBCnBCB@CBCB@CBUCBCBCB*CUBCBUCUB CB`CBUCBUCȫBCBCUBCUBCBCBCjBCTBC=UBC,BxC BUCUBCBHC BUCBCBCBCBCBCB:CB}UC-UBC@BUCNBUCbBCzBCBCBCBCBCBCB`CUBbC.BCJBCdBUC~BCBCBCB8CBUCBmUCBCBUCBxC=UBHC`BCBCUBCBC6BpC|BPCB0CB=UCBxCBMUCBCBhCBCB`CUBCB@CBCUBCBJCUBUC{UBCbBCbBCbBCbBRCBCB`CBCBCBHCBCBCBPCBUCBUCBCBCBCBC BC:BbCQUBCdBCvBEUCBCB@CBUCrBCVB*C8BC BCBCBCpBHCNB}UC*BUC B CBuUCޫBCBhCBUCBuUCBCBCBC BCBUCBłCUB8C~BC|BCyUBĠCtBjCjBBC\B(CJB UC6BCUBCBCBCUBCBCUBCDBCBCUBCbBXC2BUCBZCUBCBګCUBUCBCBCB UCBCBCB5UCB@CBJCBpCBCBCҫBMUCUBC BBC'UBCHBCnBCB@CBCB@CBUCBCBCB*CUBCBUCUB CB`CBUCBUCȫBCBCUBCUBCBCBCjBCTBC=UBC,BxC BUCUBCBHC BUCBCBCBCBCBCB:CB}UC-UBC@BUCNBUCbBCzBCBCBCBCBCBCB`CUBbC.BCJBCdBUC~BCBCBCB8CBUCBmUCBCBUCBxC=UBHC`BCBCUBCBC6BpC|BPCB0CB=UCBxCBMUCBCBhCBCB`CUBCB@CBCUBCBJCUBUC{UBCbBCbBCbBCbBRCBCB`CBCBCBHCBCBðCBPCBUCBŅUCBCBCBCBC BC:BbCQUBCdBCvBEUCBCB@CBUCrBCVB*C8BC BCBCBCpBHCNB}UC*BUC B CBuUCޫBCBhCBUCBuUCBCBCBC B CB؊CBUCBCBUCB CUBPCBӅUC֫BUCBCBBCBBCBBCBBCBBCBCBCBCBCBCBCBCBCBCBCBEUCBʂCBʸC BCUB"CBHC"B}UC.B˨C>BCTBUChBC~BCBCBC BC BC$BC:BCLB˽UC\BˊChB@CpBUCtBCwUBʨCzBrC|B:C~BCBCBCBCBCBCBCBCBCBCBګC~BӚC{UB@CvBUCpBҥUCjBҀCdBPCZB-UCNBC>BC,BCUBCBCBCBCBJC~BҢCTBC4BmUCBUCB@CB0C B CUBC(BUC5UBCHBCbBCBJCUBCBuUCB-UCBCBUCBإUCUB0CBٺCBCxBCHBC UBٵUCUBCBUCBUCBCBCBJCBCBJCBClBpCFB%UCUBCޫBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCUBhCpB8CBCUBEUCBCBCBCBCB撫CBPCBCBCBCBCBUCBpCBCBCBXCB8CBCB%UCUB`C BUCUUBUCBCB2CBCiUBCBCUB:CjBCB%UCB«C6BCfB]UCBMUCBXCBhCUBCBCBMUCBCUBCBUCBCBCVBmUC#UBCBhCBUCVBC UBCBCfBʫCUB`CBCUBhCRBC BUCUBCBpC^B CtBCBCBeUCBUCtBC\BCDBʫC#UBCBPCȫB(CBCjBC:BCUBCBC|BCFBCB-UCBRCBCBUCbB CAUBpC(BUC UBZCBCBCBC BC$BUC<B5UC]UBpCBCB«CګBCBCTBCUBCBCBC<BCrB«CUBUCUBhCB-UC&BګCGUCCCEUCCCChCCCCCUC(CC«C֫CbCCCBCCBCCBCCBCCBCCCCCCCCCCCCCCCCCCCCCCC"CCAUCC\C CyUCUCUCCC"CC.CC>CCTCChCC~CCCCCC CC CC$CUC:CCLCޫC\CUChCCpCCtCqUCwUCTCzC9UC|CUC~CCCCCCCCCCCCCCCCCCCCCUC~CUC{UCCvCrCpCRCjC@CdC(CZCCNC C>CC,CCUCCCCCCCCC%UC~CQUCTCC4CCCCC CCC CCUCC(CC5UCCHCCbCCC%UCUCpCCCCCCCCCCRCUCCCUCCCxCCHCC UCګCUHjpeg-settings Pgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 32.000000) (yspacing 32.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) 8IJ+ Merkaartor     (5.gimp-text-layer(text "Merkaartor") (font "Palatino Linotype Bold Italic") (font-size 42.000000) (font-size-unit pixels) (hinting yes) (antialias yes) (language "en") (base-direction ltr) (color (color-rgb 0.098039 0.098039 0.098039)) (justify center) (box-mode dynamic) (box-unit pixels) :.+:JJvJ+:f?~DSH   x}*Y/P4i  {  P  o;R A1 t /d YH re  , Fd =N  3k Wz=9".tVs~ c:ovE' 1j0 }5%bP9l@&hScsc;am U&^"lp$ .u'_ETtetAOzy- (v9Cw% YA@ , s ?i O[~YH^ ?X 4F! ;BV-x${P o n e"ul 5ӈR   O,GdS5b 699f9*88/9`y9>(+F D JĈ4Z c"F&UQ0;_YVPP>4@ O=%u"D; h fhM+qg w_8M# 7sJC72; '  o=Yj%&% E<Ehb ӛqhb qU2@28 TO j`N C^<gB,b<B d]a ;cU;$A G! %وDAJ= J   *69ov8 88!8Q99ZJĈ4Z +F:& ? c ILQ0;.F 0S֑Pc_  #M 1j>G%bPO=%  fc"D7HwMq4sJC]'2 !W o "k &(= ^< ӛqY t @ <!O8  }N  I,b<H v!QS %tGa J'w G; FM7"= 5ӈR! y ʌ/d+F c.Fjc_Y1j>%bPO=%c"DM72bJ(=Y,8  Ha;5ӈR!l6 , Background     K5,KU,KuDMji,mV|&|n;jlv 1Lj:3jvقَٚ٦ٲپ򺹹íDN~o𫧤l;@Y뚉࿾`B>`㓖Ŷq]94?~ztw蚏xOF8:hꍌ}o`~vy{Ļ}v^IB=;/6ejvqsR<>Mh[SV[t_U:@DLjvD@:AH42QzY{xzrsK47CN?CM=FeT\QGSmfaPEMD5KngpbGatj\cgO<63535765;YcI41364;LJGB=@fa`~v{rkkslt}toekd^^ahgedik`R72@80(1icB2*20223==@ǴLC_||oghfoysanYW\fjhfa^_SD0,3N+-VtZE*,*-?A:DCCL@Z8.j}G2-%!454728BöV6htk~{SZSIFPxqhx_L\idfcP;GENmFIAH]nL)s'%:ORTYgV_[|b|}spWGcXayTI7ELlpu}qokmroV$F! )=LSUfgkzy}}d`?,>9LzxadS;1 º* (>IUV\}yqlcxo1&/a}{oTGFCCֽK 3BEyX,8`}mslwymQT>7ºV;/$*592Ciwyw}mZV{yv=Z`5:csxpWZhmh`6w2+%)3 #LusyWjbyhf9El=F^igyWIP8c#(#,;,:Ofjdm|cxSXr|w}[A4 YyQX_arb:S<½X/'!(;JJRVl`dVePPbyVC9.! -kc450@drqsg"0/ɾq?-(,>IFI]gvza}vK:76<5)_j'!3fk<=D_ƽJ:4DNUDVcdvna>7?B`V^yD* #(5FL2$K0)@M6?GJdr{riv}fQ2-1JS{>5//JD=.8*0?F6246ardaq[USUS9FJ'+\[*62-)#&!+%31#+4XaYoeJIJirpc^61>Z1,! Ž^#-, %97voznytJGNGDkTYZ@=-%# лDzs,"2E;@`xuditaLHYWFQ?99>(T0  ʹȱM'=7E).23CSVOYE ɷʃ!&EXSUYjupv<1/45X')AL;Bgm#  ʵ8!#*DSBVesmjg}<%**))ARcha=   ʸӶX#"(-6HDObm{~z`8'!%NUOEG^ii\HB(    θӵz#!(52;EQMVxr|p]@!--2}MB7HONbY[A    Ʒд#$+>AG>>EOv~cuw~{UA(NAjuf2)7-Qde]+    ζ(+1;@NE>J~u~i7*!Z^wU0'\d`:    Խm0D@2FEMypn~~nmGE~|o^^(?K_Y9$   !1=>01,/jjXN125//6!%IvgubE?,EBBL2  Q!(985852|ncN5! "!$DO`<>GAa^:#IoG('*  =!5.2==;TsUcJ0" !!'M\NFALG/!$O^  먥b#/&,8GL_{`JE2%!!+gwtL*9,')  쨦:#'"(+5NMXg~\;+!!(DyC$   %#᪀FI9113D\^OJXG3! ""$'Eh<   %9>ᪧ<>URSMLTYOM>5)&%0.'>k}t-   @Ws϶}V2M{yrR2@OE3*."45/&+DJ<    Ps}±]JAR{}sC3/11(#&-/:>_NFc0F/-!   :SddŭaKXrwr@PR(&$(2D-N`PZ^%'"$  (9?-y_X`}tghZF1#$%(%9E,0D8UJ   ʾH>?\`\I5)%)+*(8235HE<:$)(()+&&%    ⼭q9--.3;J]_)++'&&(#'    μd!,/09IG@0,!$$%-0,   DZ\!(59F=>J;'-#$$*,/F<  +$(ŸA$4-#;@92 %('%%$*6+%6JE/    %4<)&޻e"3("6O6%-)((''%%/I=;4==#   KXT" ۻ9-1AM*EhR=\pF)(('&6ENB.3"   .S[%⼲cVNXU^jpeXbs_-1+0BEGD@-)   " %/YZ  ȹwsvz|[:,03NF;2-+"     &Pc6 ɵbPayrY201OH4%#"   '"+$4)ḰYLirlM024L/("!     ,-V;`TH裡×6>giYhku𕐍Y/3I}|zz~rtxଫM52N{xyyz~kuv{y}zŢuur\K-)2injvxy{skc^ao|}ulwj}vub?8-/Uyujtxy|tsdYMgirq_`dq}Ĩxxf_K:51/&,QzV`tvww}~[]A01=SICEI^LD/37=UƩt|{t_63/4:*(AsdGgdbdn}}xo[]=*,5?36>18RCIA9CXp}wwzqnQNA8>6*"$Em^H7!$"$34/6556=/^mjc_PJYNCSdkvt[RID@FQUURM@AA<923I,%Ugrf9($*+*,(-5áE,S]VecBIC;8@au|t[S`L.9bkSd5'$$$&)''4z3(EZX`J=:9?7>_xsygVjgM7OY>FMA764Pe`UOI@TjH><*%),6-0:R&2CA@:ATRDKrzhXQfhefhWFIHAAG;;t_TnPGQZ79A8;5(1:4:JY= _/?BCGSEMHfmwwjNndhfjdmsyw]q[F9PGOjbC:,7=VZ^f[YUW[ZE9!1=BDRSVccvu~ipkmhkqrnmmeliePMrjzw3#1-=bijmn`NPB/'" 2:DEJiyxgdin~yqa\WjuhOaZ'%NeijlncYC9856ɪ>)40>@Dcxl|~y^dvdkzwjVTmSWz{adD$Zjgjjh\IFPQPĪQ !)6=:^wpZKfkckjliqnyt[Oxh`lt27bG$-MdX\V`bWAC2,¦F/&"*-(6Tqaa_or~gmqqx|XHEdqa_um1IM*/O\`ZEHSXSM+d("!)=klk_\mw{~bptEUOarumnSR.7V08KTRbliqsE:?-T #/#/?QUjPWeqr~PmaBG]md`peI4*HaAGLN[pynQ.B0I% /;;BEVMPiFRxviruh@@NjahE6.%$VO)+&3P\[\zU&&]3$ #2:8:KS`opdNl}eolik_D6EOP_xvYhngy~t~woN1,25MEKb6" *8=(j<'!3>+39;P\yzc[T_v~vfQA($';Bdh1+%&;71% -!'28,(*+Nnxy[PNty]JDCDC.8;"JsI"+($!  z")'#*F~{lNGYi~sR;:;T[[OK+(2I'#  M#$-,`{|YdXaww];9>97VEGH31$  ǝ^#(7/3Mxgj`^PT]oywN<:GF8A2--1 D& Ȝ?1,808Fcqmrrlnp^NN[ZQV6#(AE1E?GV_LJ  cEaym[dkZK3$$(lg>5,9?>NGI4  Ϣr"249217?_eP_g`ecD4 >4W}_R( ,%APQJ#  ͢w "'03>71;g}{ul^hkehU,"HL`{oD' JPM.   ƪ['63(87=c|oYXffoXW97gfZlsLK 2*6@L0284NK/;Z9  "   2+%'11/C]DO;&>qK>74=8%?L   둎P&#-9=LcM<7(#S|a]=".# !   쑏{/  "*?>GReK0" 6vtqhb5  k8:.''(6JK?1*!&$1Wf_#  3F\hF(>chb\B(3?7)!$*+&"6:0 ?\dʯwK<4Bchd\6)%(( $&.1L>9P&8%$ /BPOմkMM@HL    .2#îbLFMd]RSH8' .7#&6-D<   ںk913JLJ;* !#"!-07%$     ෗j1')*970.! !#     ة]-$$%(/"7SA1JZ8! +6>5%*    %CgI ةOD>GDLVZRFO\L$'"'57964$    %GI   ٷa]_cdptssqkiI.#&)>8/($"     AP+ ׸O@Mblztrorrn\G(''?9*    ")!פ|G=Tn}toqri\X=&(*=%    #$E/MC9YZYXVVWTIG@;@JHGCC?@$ -CDINCK"(!,4?13/)/H@ITKDD;  *2>A?\`^]\YY]NF<9A@BD@BBCC<62%*-.40&'((!**9JDCB8!%"#)501^__a_^`R=78?59B,4=>=91%+,,+ %$&&" %" hWWT''*#((*)%  '++9* ]Z[VK )&-+, '$ +.^[ZZT#.*   $1  +/eYYX;  "*4 %"]YWWXV  ! #0O2,1-:1  `[XY\XT,)DOXT 27:2 m]Y[XTA  Z`Y:% 9;) ZTSSI 19A,  yURRH    fSRR    wSQRR)" aRRQN.00!yURRP<;.TRRO"$! rRRQL#! bSRRQPJ(  ]RQPND    dVPMJB$ [KHEDI4 JA;:<=+@9983 F99885'  <99:;  A::9:6 QE=6-/ØgG4 ʫo@6&  eLF/ z_MH77v@=;7̲]?:9 7\I;97tG?97pTC>77[GBA<& ZFBB=" ]ICC- tUFDC.   vNEDC-   *TDCCB $ (lK}31! KXL"*wk>nl0 3B!Fݏm]oi4]RsD  $ ᖗuijz`[USYJ#V]H30  疕]SQUCMPQVA    uP@/0HOI4!    xupvuOCE[^UW^tY(F48J"     ! &9JHBFBGQSSTXv7"1    363KEGC>=DJKPQQP]]6 B.%#!  %),B:3*3F?3:3AHNLCN0D*%8-&!   ',#.435-'$:?&!%)450&'<, $,-.'""   !90&(1 **.!$&(')(!" $%$'   %",2!&0678>",+$!(! #-    !  ,=@4##'(3F<.)-(%,(' $    2;<3* &881+2:1.)/OX4 ""  **:,+ /79+$$*JDOg]Y63"    0E@9$    '798* *Qcfq   (<@C$  ,;<><=Q_ioz   $.FK,1?$ 1BGHDEPewxpq{jhc`oslorQ>,*)*))13(1Va[@UICO1MF?CD`uwwlQMQMUkapqfoXE9Ld_ys[YROOH<5@>=/&&$')')0%,"+$(KZ;29Fgsrim_>6A544?GOTM:.!""'-/LUXSON.032*'++,39 '+ 7GKLXFB97;I46.5;B;(!$3DB=60/40.*75#*4;/))%),5 #6:KFQI:754132.:/=A'&&*/1;LF3-1410++,-2);*,(%%$"!  !&,?;BIJHI_Ά}XD6"      =hfD:-A[V=E1"      ,)Ds{~yv;)'_uP&"    &#.257IKCFK]|~qG 8*-<    .;94759ABCCGa~o,'    )+)<786217;;@@J, 5%      !#5/)!(82).)49><6>'7" -$    #$*)+#.2!**& 0##$%  .' '""%!    #)&+,-2$# $  #13)   )80%"$ #    (/0)"  .-'"(.'%!&@F) "".$#   &-."!;6?SJG+)  &73.  -.-!"AOR[ln{   036  #/0201ALTYbq}    %8<$'2  '5078>;;LU`fs     9D. (,)(-/drtRUKHHEhy$   -. )>UM04@SU\bq}QU[k! '/)&  #.HMWWirswyzfv   *) '5Ldxtt{     2Nbp       *=[gxy      2JSXn   *05FKNSz󶷶   "8BKQURNVoѭzw{ ,=CHKMQg\ox}  +CMNNJTavzvy~ ! 'UZjginxи 3>8G_irmmwɴ"*1?GEUnu{vsԴw2FCL\kmx||{촷?:SZT`pyw{{󱴳?cohikh{~|~}z~ɲ]nstsvtov{z~}wqyѪyvpprzsVV[hspp`NcƠnpoqrujH3(0]T\GACWgnjwkjgmxuxnWbKaj_m6L^otp^C?6-)29978@P_aZZcvmUSOMY_XZ\A2$"!!') 'ENI3D:5?'=9357L^``_VA>A=DXO[[QZG8.>TNhusu]IGA??90+311%!!&## 0440#'**'!% $5,1HOMBE=*%'")C7.8:0((,5QD*5C=% "&/4:5'+))"!%2%&)(!"#$).  "+8<=F85.,/;),%+/4/ )650+&%*&%",*!*/&!!!$+  +.<8A:.,+*'((%.&14"%'/<8($'*''##$%(0:B74'   $/5,&%%)*$!!(())(2A3#"+%$!!##))-9?00.%  " ""%''$% "  &!.%%!#!!"')'*,( !"""!" " $'""! #  "1)!  '9=:%$ /0 $'*7=?*'?EH=03!/!$    #305:;9;Nvuqw(2HEF?NG<5893-.3UWXTTWT=.'/SVWUUOH! 0'0761," !%*$', 50COE@ JTSDB/ 1',.($!   !:5 4F?.,,*&   (,,+' -&*,)  .4379)Dkqstsrkd`[]`\_agdgomhk2EFSlopqstslededdaacbdjnme /8TadkpnlortsneefeddcaabbemiNKjqronlnmnrtrlhhigefedbaacA, 2^nooljknlknsoifhiifeebaaV,5Vglmjklklnnorpjhiifeec`P()R]efehijkmjlnnoqliihgff`O3+ %>beffdjmkkllpqqrrniihee^7 (+MeeghefnqqlnnrstsrpkiifeeXJcgnpqnnopqrrqqrrqsttsronidcaTKCB;/1,4N  %@Rbhlnnmnmlmmlmnmoorrstsmheda`[E)-CGSVV[afee !L_aaiomkkicaachjmnnmhhkkgbYVK;;)EOLTWX_cgee @\cabbikkiidbaaekmmnnlfaac`[]YT;2N;EMRSXZcnmifd  Nddaimkhebbaabegimnkfb`^`^YSSM79D.;MPUZ]gqqog]   7B8;\kifbaabejiieca__^^]N99;8=/.=IHCHPGVieP1   O]^a^_`a`adigb[_`__^]U) !%+"   710CQUNHP]_IQ^^__]UB    #.# 3 +5B>$ҢI?]2,*Vm/8\[98=DTLG^Nhh[=`[8$2JE+*(##A)&++-:ký,3'5!H>xO1)'! "&:o!!<<98")*(#/!! )2LQ)XJbzk|!#"*+9;5kzR%*:JITW;6 !(5~C%#   #(## #=RUX2 &Vᄅ|kKO$??)! "-58;8Vfhqh)'pllQU, 24A@DIIMSajlF;fl%?>DFCC@ETaWWFf¿_2+0:?WHSi9A9BB;6=9@XyǾzY*(+P]kX_pd*B:@C@?97H}ÿ­ͻygc?9Udk^\c]:/4+1'FEABHJG.dɯp{ɹnSUe`>EIZ4KpUXTBHCCGLMor^`ǽeFIP7%#.;/Kbhg_:HIJ9P~ȫsUTƞZMI.%3HMeiP25]myK7]ȺSKK@=2MG(!(C[ŻyPQI51?ſX. 4KbƢjRWP@?r;#9WǨqgL7:ùV,%,CQt{ãJ5Dùýt4/=HWk´GP7r4"IQ^ÿwR5ƾo0 *QTc}z[ǥ@'ANRvzȹʹg-#&3BI=DNZĚ껁B%&:?J7-ASɞx92-47=*"1KɶN3'')"-IYȢȿƳb1"# (HIȡź," %-4E}ȥü>+,/1@in{¼_3%-.1Bl|ȿuO2%&*16QldZbdzvN1*+-BT\S]ci628HclazôüýǾe1%!;IQ52N*Źx]?cgdwp\\lx̴sQ&(@5345tóy|kvnkgeda;(R-((0C6)/KWWfZfggw?#/$$NXK'#7JS`'+%+aqi`XB4+>-+(%&)+3,*4;,'1HQG62-"@R.!#&9Ww~_2#"7WQXB!&%)#4-'$$*55"$$*,*5I7+ !!&!,?$&2@Gp~\ts>:#"HB9()GA9%8-)&$%4'!+)'14&&%'2B528;J9.A" ::# 09=WtII?*::8*#6J24Ca[qkV7.'+,$#!$"*,(-,+(#-EUP>ADM?;:'8B."(,0@XTfP/&':<2& (*)(/]fo:4-&!$).+ !)5-*.+)'!&-LH3**EG2&!D:"/./*0EN3!!(3/,0)!3NOgl<;:0&''"'&"%*(#"/8>C-+-28"$.% '#"##%2=q6+VO5 !%&!  '=:88FIJ@<5530/-*$#   !7F)#",5TU=??EG=ANPJF;>@?KLJTUMQL@41.31,-*&'!$(##/N}z|}kgVURMEJI`bcihdd^QE81653410/0(#!"fh`hc`Ucgijje`WC>B:4699:4*'../"  ҋv}wili;3qnL(#"EX&-rJI-,27C=9K>UίUI1MI-(sC!G=Pvcm}Wiv"#-/*[hB    "/;;DF0+*hz6      0BDF(G䀹sgZ?B54     $*,/,EQS[S `m^ZBૠt|G$     (*437:;>BNUV8/r{WZ  21685537CMFF8TڷN("'/3E9BT-  34.44/,1-3Gf}öfH" "@JVFKZP" 4/3532.,:iıu~bSP2.DPUKJOJ/&*#'8735:;9%RŸzZcrpjYCDQL17:H*[]KM}ַiR8;@,%/%PT@(+08~򻵖6!3zܱW.#$ 1JW`<,07a񶷸z24vڵ="@TQA+9cﶷ7%ܵ0,5819_ﶸ^?;n@# &&(춵M%A_bjo|z꺦S$)4:17>Hp淸i4.3;,$4C~򭫣麹c.($*,1"()!$:Gz򮯵ڸP( 9:~~ٴ{#$*6fswt򯲮ش2##%'3TXdೲL)$%'5Vel󬩨峲_?("(+@WPHOh糲a?("#$5CJBJOoΰY,)-:OWNcw󷴶޴xʵ鵴칳䴱ñuW'/;A*(>v߱rli`J3sRURa\LKXdatB 3*)*,afgX|tp`YVSQPN/ C$ '6,!%G<,;DvuN ##N[TMF5)#1$" !#)#"*/$ ':A9+(%4B%-GbjrvukieM(,FAF5 *$"++"#"*:,#$3(49ZljeJ]\2.:5.  94.-$!*"!(*(4+(-/;-%4//'.1F]::2"..-"+;(*5MI[VE-%#$!# %$" $6D@247>3/.-5% #'3GCQ@&.0( !! &JRYhii/*$!$"!*$"%"!$=:)"!89(7.%$%!'7>) (&#&!)?@SWjl0//'" %,26$"$(-%(1[i+#D@*049#")  9K#1?)$-'16=:61"$ !-  "!"!169:87/$"! %    5879:71)$%#    )," !#/# #$(&"$$378:;:2+(&" $!"&%"0>3,'()7@:$%).1,6:;:8-**%#!   '4#'53/)&!/=@>3%+010/--8:;40+*)&%$"  -8 #*CD1227904>@;7/232<=;DD=A=3)'$('$$!   %?epcftygVREDB>7<:MNPTSPPK@7-(,+(*''%'  xztQTMSOMDORTUUQME615/),-./*"$%%  0'J`dec`VG -GWVXWX[ZUMBI@OZfiif$*+B[i}yxwtuvuuttuttssqpf;  >gwtpmqmjmmjb= . 0OE'7GMTiux{uuvvututtuxzxpa/^pqlprqonokf_K <5(.37?JNQZp{uttvuvuwyzzysA2SgklotrrqqomksX" .CFDKBJAKMPRiuuttvuwvwzzy\*?[gkknrrstuvsvtl"&-68T_WRRMHGGIP^psrssuuvwyzzyzz] #+4CW^jorttuvwwtvu(*6BZaab`RPCACJTlppqtstvwyzyyzywzd%,?OK_tsttuwyvvwv,-FZaabjtcVMDFLMaortuttuwzzyxxyuR*-5:Lmuvvwyyvwvu..Kabbcdfqua^KIMQXjqsttuvwxvwvuxwoL%$E3Qbrvsgfeehomoqpneiuxxvnfegjdi\N9#dea]_i^f`]eedio~r`U GaeeinnprqodiojjwnXH7+I) @WNHLq~\!6L`efklmospiK81   M$ $FPONUZSB-. 79<;<=::"2% 5Za\N<2ÿȽþ¼žÿkǀº˾ƹÿZjlVQRI@EQp÷hJGQ}AOWKVRG>E9/8MQ{yN8Nr}{wvxnF@=>@FEFIT{`1DLFe^DAGC.1BFKX[=-%2:EO`ovy~twmpsqmn\ME>AAJHGIt}xm"@BKjk[CI;8260,) #/18Mcsw}x|s`fRl|ts\SPHKECKPLIajrmid:KGSl[B.@>9,##,AVevuoV[JLRUYXVUXVKHNRQN[befaZ2BFJB!+$ !$)QTZr{vyfa\UELKJRQsjVQNN\ZON[\SM>#$"9(D4DG$_sohvYV^cHOONPNicSRJI?31,KB;91 #,'*$ %M]v]KZLGNNPJGj^KEB4,(')-11,.  "#' 2G;MYJB=?CID@<88AA:1-,*'%)++.1CN93=4  !+ #3*/3JDB@BGF;030*$#(*.9OC1-"&"  ./ +;,&&28B:?DCMQVC;67/*!',Em&! 53$   &85.(/.20;AAUncUW&(//'$=a6&!'$%5-    7#"+ +287=I@Mq{cD1(+,&=A.''!$*! 3,!"#&'""*31>sVC6'%(!545/')'##'   ! !"# !D{`M:&%'"$37@.)()$"     !#(.]}~UG'(1*&5D.$0BD0,)+$  !'*($ %%/lUY814/6PQ41,.H83240&   )).+.-+) !41:_lfC9KH;VpRC5 ;79:AINC-   /1./-,+*)%&/.4ENmgTZ]OQs_L<#3129EttpK2#   "-1+,*++#"#1J\OFANv{dW72603<8QvtkbG5("!%    '*+&+14,*0/35:^oWMMA5>><6JlqgO<8BHG+     ("#&-1(,0&$$!%AUMN22>QJHR[laX;1CMA,     ,345&%#N{dPLQ,2BVSRUOXaUDK`P:-,).    -,&%0SKIOLPW37CIWXWfwm_J\mZU?4692&      '4/#5LFG`aCKNPHH]x|tk\kd^C77=A?3-    @3*,DPt}gPGE=&%&   ʰ\)%&(-37::DO{r]XmL9/%     Ȳh8)$*)+/3D<;Fc~}dK7+   EZûXW91+8433WgbEEÿeL@   313?fagqZ_QVSZVO~x[S9!  '%%85(%+5?DX`R`dZYX]eh÷{fJ8#  !$0$%$%+571'   #' %*8OFDA96(""&8YúUG6,./# J,+, !(+7K95956*"%'*DçqYDGcU%"!!   i4)A-(,(5M<965-&!#$%#$H^SA54?L8'    vE36*"$5?RH>L34/*'!!"%! 776.#"'+   y>.3+/ #?aXBP<0%,%#&!'0,)"    N*$!%"!+QS136*$""! (?D@%"     $%)GJC"    "     "!     # '!      $!&< ,    #',#)K2 !     :Y69%%'aK@23.   (+%Adrf?.>\qkemgrlsvyw{{xxwolc_ui_hcY83123878;Ck{ocL(6=9QK7495%'58O\_daidpyvvwr\MRAWd^]JB@:=76<@=;MU[WTP.<8CVI5%32.$#4EQ^gwoj_ruyvYEI;=BFHFECFE<:>AA>IOQQNH(58;5 " !ACH\e_coqrmRNID7=<;A@]VEA>?JH?>HJC>2 .  7)6: M]YS_GEKO9@?>?>UOCA;;2)(#;5/.'   #" =K_J;I=9>>@;9UL<85*# !$''$%    (9/=G;5136:70=9/('$"!#&&%,.#&     &"):951131,-44.'$$"!##%'6>-(1*    "  )"%)0742<643598/&)'" "%.?6'$   %% "/#(-5.376=@E6/+,&" #8W +)   ,+$ &%)'/44DXODE %&1O,+$  ,""(-,1:3>[fbO6( "$ 04%!   )#!)'2\kfD5+  +**%!    6icM=. ),3%! ! %JefD9 '!*7%&46'$!#  " %VEH-'*&+@A)'$%:,)(*'   !!%"%$#!)'/LWR5.<:/EYA6*/,-.4;>6$    &(%&%$#"!&$)8>XSCHJ?A]L<0)'(.7]]Z<(    $'#$"##';J@84>^dPE,(+&(0-A_]UN9+    "##(*#!&%)*.KppYF==4*22/,;WZR?0-5:9"     $'!#'4oziC=>('1A;:BIWMF/'6>4$       #)*+>okfP@=A#(5EBBD?FND6?::J`c]UIVPK6,,132)$  4(! #075ZJA@=8.#3+HILV^QZQ4;7:97(    &DIB<2 /EORZVRML>;;=5    $%$H3* ,<7BADTQC><:65'!    +/1+  3 *068PUVRJKK>=1(+%    &0--' ߶G !8B>ORVZRQKQUA-,(%     ,*-,) Y,"'17:IOPKNKOUNFH4"  #% ӸS?#"(,+2B>GOR^XQPV?4'!"   ޸>35!$"!"/2F[ai\Y]`[G:/0*   lO*%$.9CVUQOPWED?94,  1##(/<7>6;CRNEC<3.      y,"#*20.,0;S]YM=23(     ۽};$! #)+,,27@]ieS@971    ۼ|J! $),//7?cppg[KFW=-%      }T,!"!"&)7008R|gseQ<,#    8HukFE.'"-*()FVP77챬}Q=4    (')2RNUwt[HL@EBHE@fbIB.   -+!"*26GMALPHHFJQTq繸tcR;-  '"+0:<:5849=KStp\[<,!  +8:960+&$',6TzyV[M2,'    "-?864.,-Gm𺶱xD9+#%& ;#"$ #,<.+.*+"!6pqwaH79QD  T*!4$ # *=0.++$:LC5+*3?-   _7(+"*3B:2=))&!,,%"     b2%(#&3NF6A0'#&$!     ?""AC()+! 263     !9;6                                  / #     # <(      0L+/N=2))$        #/\GD/$""3FCZ;3      @BHINM\p|X7*%IJi|W:     !4BR_]bmjqus`htI*Cbyy])%giebhjbajqomrrttrppvfqpsrourtuus^`nnmnlprrph_\b`_aerwuurpsrleccbf\SW[EDR`]hpsttqorneduhcgm`qtug8Wmkegkmpqja[UVa\\KesprpqrrldccUWL2"# #'1KanqsrqqhY[|`G*USLhpoW+I]SKB,0 9! 935 -q5 /vqC:utuJ9tur *tssw 9tvh4 6tv|pV  tv}|R !tuzwe13ux}zh"2v}~zw4tw}|zxJ& \^w~{ytJ  (63/! &Pqp~xyj[725krppjaG$ +9B))-/OVQgzywwuwseI<0#  F[_bryyxwvxwjS?>%)2EX`ozzxwwyvhUA<" +,SZhyzxwwysiaB:+CHPcnzzxqihW&-.+.*DQjF %#  =2G=I,%2F(" )  D3$󰯰迿𶽵hcg^^Y__WUU[u{|jS[\ZSVULejgf]QPi}{~{c_YgtZ\ZIJgkkid]Xpy~sx~}j{`qrbVTFPafid_eedkpltv|z{z|qoru{{`|FcfaVVRZli]NYbjllhgborledmmgfhot{zpb`3IDDGAEPjjWKV\flljcNOSXBA`]2,0VmnbQ<+B6>?278B7PfXH\WillkhdO35+/6:*(%DfouY0%0T\G:.9J=BAGFVellhjXIA?'#(6%3I\lp\1"-OP:;B<>2*5*4Jglli`ad`S+*9.*3>Ly{ZSYTZ;)1ssgdb^[K(=8''+9#UXVZeceZC.'(YsecXXA5=3-,XkxjAK~$RzLSE9EIYT{vKtww Ls{pWHVMB;@B[jm?Mp{ "6DuOJ?.*())0Tvxpy>&9%'wwsuXWM=;=CZjZDd"#'3pijlYWA;ACM`s $('.^~wYNFYb^xj} ")*"?xb\E\zyvS^gsrmpv  #%# & )GNUVVSRNY[WQPXWRRSY]cbZNMl):67847@TUE?BF44LJ(#&EWXN@0"5+22(,-4-@QF9JFTVVUSP?)*#&+." 6QY]G&&CJ9.%.;15498EPVVSTF;43!+):JWZJ($?@.0501(!*"*;RVVTMNPLB"!.$")2=0#PX]PI]F>9&:F2"  Hkle^eilg\_POeaZSS[dpunb_?++'()s?8' D^\dijkljcXQ\gX\aSbqqh[ZL8+-,.rAHP+. 0EP]klmikeUDHQWgpk]f\XJMYEGH; (BqlQ=6%%" ,5ERdkt|wcSNTT=>MJayR)]5fdTL=C?:5!2Tnysi`VOMLLYH?@xV6$3)ajQD\LI7(/XohbdWQQONL7+0M3$$*z '_ijj^GD;5>]gfaZRQOMC+#.  0a $2bcHBGDH0!']lki\RPOLI<1-".s DFEHPOQH6% Ggmkg\QOGG5+1)$#/8c ,>=RZRQC:, !^mmj[WSFCMH9,$$'4_#0W]WMA5&Bjmli`bPIORD1+('8u(LQURD;%-3&!(]khf[[UQ]O>2,'(6p)DRsa;/4TYM>>4N`edgh`kmD6B43-3c 2PmdSXY_fgU\M>KLH`hXgXOCWY7*+n#0]Sf^fjleaQ>::BWpM61FVaxV45/35IUW2>\xndks}+8_j?<2%" !!&05YmjX7LhM7GV| $?}f:%"  '5OnyufXZaL3:4e#8drj+! !!"4IT]``jtstV98(H *HOM&#&.&psfM]s  %Mtsepptkk`G?8GOK}oaWf  !!3ePL7Jbatvwn_BKT^pp[XZ`    !0BhuwurtXm{rVMq   "%%*>asvz~Ra{HPx   ""%&Ellv}q~VIao   !$&/SC\t|on^?:v    !$%*JPURtZdwkeP@b  #"! "$&.:ILlbY_XMZGW    !!! (4;Qbe_YN?Z`Tcbaa_VWOJIGGFDEILX[Y]_TC:99>Vccrcbaa]SSLFEGGDCDFIW[X[MB<997:F^`bccba`\Y^WND40:ECDFCBABDRXHF=7/466/D>YccaV]P0JK>, $*%9?>=75167-$ (4Q_\   dJ  Dt} -lnJ#"!_qxp +WI:    Lovso   Zvwvp  ")+Zvxvt,/;2pwwur !,=: kvsqp52, *zjgi s~plom sulrssInghii׷sLEHXnxeF<>D+$"   + 7G\drvټkDCDPNG3E3,*69+&"  ' #< !CUɸGDEXzk\@1)()*.+&   2:&  7sxbἴOFISXkx{xd8*'()+*   $1%!  5ttڶ鱣cHKSVamsw|rZ6$"')*)   +51J0-    ic˷{RQ]a`f}}_@.-##&&  P`G?gh2 /J˸TSinjq~tR0))'&"   ?9*4^s:> ɸ[{yW>1*+'    +WIGgl20 ")Ϲ칙dyd;@A:3-   AA>>D.  $%%)!~m5"0@?=4    !""  1$ǻy3(5@=:4        (!ɺrgDB=:96-      2Rf]EG@9641       $!./w@ki;CD:8, #      %65'˷AcdLB8=<5(  & L;-÷봵c\rj\cS02354     5 4<$&ĵh]^OBJ==135(       /0' wbcR?5261/*/       紪ekiT<3431"    µ絴rktn_S8303"      rqqstQ2/2$"#     %!.ɴ浴wkcq^>.%     ,203!"ֺsMORZ~mZQ@t`MDCC?)       7]{~ZCN+UDCC1     !$2fjbd(5!c[ECCB9'    #M8%[[PFCC9)      &/0&Q|)ʿY[UQMF6/       < "E9&Ѿ»_VURQK5#    + Ҿг`TUTSNO=%#' %   -  (&"ݿzZTTRMF%!$+' 7(   $  .=E:ǽWTTRQ?'",-    !B/vizaŽgUTTRNF1$1/)   (YQ. LtwWTTURPE0&&,)'   3at6$YwkIdþpYTTPE+$ ,   ,FJzb*7H$-'Wȿf\USPC20   4LQ_}w2,C'3sd`]Q;1.%(   "_gWsytr%(,Qj2!:iоia\P51/"!"%"%&  (QZE_UWA/Q`),?6%!=>83KOa>$+Q|cXC:610.'%"&-4% 0,  *JD" +J{P&2axƿiWE<7-//,,2AD8<;*'  :C14)$   9ckWVim㱂]OA8.%&'*+9ZX4&363%  #;604 /GMzÿ]K=++&% &%*:F'&0(* -(0%+5PMgw¾]H&  $,3^D*$#)'! "-+,KrPglS<<ʿ8"  !%*/$  -F0",Wya5!/C|N;7ùa)  )(1" $"#",+8YypC)Cg^>»G!"#*2+%# *  %'(')+5B|k㹥D!$1510 !.1  !+,/++07Q/2;I6  .>E7/-3A1;K\\E\QsMMLVthƽ5% 2C(068O@  10*-++7(/Wbnb[zGCSk#%#"680<>)$  .13316E?A 0\V^P`GQ^};)"$54*-  "&IOJNq^3" /VUtp[NNb+  !$# +/'/TeQQql)8931MS4LseO=)")Etyz]UF%!!!#'"=F94fqsr- II@855.!     &'Aemk!oHID@=8+&     0 7.ë§lLEDAA<*    "  ūݞuMCDCB>?1    $   ҬcHCCB=8" ,     %17/ⶩwECCB@3 #$        6&bUcNߴSDCCDA?8''&!   HA% =^zqu~|ïbECCDB@7'#!    )Nik]+  HiaV;Qkұ[GCC@7"$      #8;bjkjN! ,;%FhϷRIDC@6(&     )=AMekjk`(#6)]ĮPMKA/'%        LRE\af][ #AU(/U«TNJ@*'%       AH7LDF4& AM #3+1cԲ`NG9*''" !   A112- )<?M1#AdkOF6/+'&% $* &#  "(;6  #ucݺK<1#""/8 & "  $!'  "*@>SvbȲK:#(0 / %".5Aj?ͶªH4$"$ '#   &Qb?0IRH2ټᩊK6!!    $##<\pxATWB00кj-"%    #8'$FbohO*%6od>/-ʱP   '  ##-GvuvdZ6"6jtoRK2ѱ9"(""   !#*5ly{rufltytmjVͯ楐8'*'&%'    "#%##&,0Oguqetwvmsqؾh '. /*   '0&""$346PBG?bgg]dYMX` "1A%(/;+   %28,%$)4'/==E]Tᵪ* (5 &+-?3   '&"$"#, &FOXOIc96BXluiկ+-&02!  $'))'+823'IEK@M8AKgwuzr *)"%  :?;?[K)&ED^ZI??Ngtx{m"  #% &CQAA[V!-.0j_N=Dnjưk#  38N02)'>B*=\P?2!!7]abJDkwҴ9   18.)199/-%.,&Jd`^HKfr#  "(71,*4;)'QZeUWbu۹X  04  &36!,*&&%')E^EO]feoQECE:+%$[KHD<'-) wSKGF#%+]LKIH +QFEFG3.{RKMJLK {TQQRR3 wSRR  USSUV, dZVUZ`'.sYQORZXJ.wWRPPO# .eVPNPQI.\RNNVU/}RNKLNQ, 0jQJJKO*2lOJJI"6]MJKIGI5eLKJJL=5gMJJKNL.5dMJKLLO65xMMKMME45XMKOPC(4bQPSVT8F&3lVVWYZC+j[`baa6- wceec%. `bcddee-, ^acbade?,mbaad;- d_^^`d>. x`\]_`^0_^``aY6__aaL6aZ^^]D 6r\XX[ 1n\ZZ[5$#f\\XI " j_]YY;" saZVT-#dWVU+$ʈ_WVW'+k^Y[ZA 5cZY\`S. ra^__;/ʝ}cdcH 0#yideeb/1jee_83 qfee],'}kee\0'  ȡybcaWE&  ƖjUUTWM ' hZWUV]H' " fVTSSV: ' *5" cTSSO) , eWSRM/p^XTRP*- gZWSTR.2_\[UWV$ ~c_]YZV$ 39:gaa`ZN %9D=ndb[WC, -JD2s\YR&-4UA?xiYSL , 3>::nO]/'&(!$  $#"/80;mj~quA?<,$!+*++;@R]v}dN;$*%")* /<<-:Up=JavD2!5>7?RM3."GQNN^lx'@3X}kdY=.7-#?OWFOd`7-'!+52>embd&&)$>&2NYCX\CBCCMmnf/'##(FSUboz~ڿ+5OIYZK\`U[muC ##8?XZdzý)HD>8JWbk`Wh_I,"%)5EWk":,2;Ucm`WWY,&$%&1BV| 'R{ysO ,/*8y(apo! #$+:0hwi$ )14>>EGXӾ#);`%  !,HVY`gfvؾ³}  !!%K\gimur!"&;Ueimy~||nz%$)4H`omqkcx "$*6@@\vz_o'"/Iai[cg@My}bqvw{wv)AbvnaC!?hostty7&NoG9.  9qrrs|@\/# Hssrrsy9 3G"   Qsyrrt5        Msytsu      Zvz|z~    =twy    %n|     C|     Fo%CH(    d~".DBd[4  Vyz"|r_T#      Nt{"]nSI%    ]x%xXSF    _@p_TR:  ugpuf_ZW3! t¿riztsoZX7'"%% Bv芎tvb;*))(%   @sǡ쓍xq<')+*    0T|¾ّ{YH2.)  !Uc}ُqwO8#  6Vj}攞yy{wZ2   "Ifyؿ{S'@ %Nw~𾽾׽tb?$.,0 c|~シż}}H(*B" Jx|~sLfoz~a$3 Ap|wN"$ +'GC3"Y`{z$#"! TxrG*( vPX{v`"! !!\{}fKC:AHxvyy~{P3&! !#.NDvaw}lD!0*9COehfZQPB5]Oknt]asdb#'0.:JJXZWC,  Hjy}wsz~Vdx|oG#63%4.<@C;9.   ׂxrw}wyrsWA>:;9     Vimnt}v}NCBB3!'"  \úĭY{mhGFFN0+""   )`A~~heO^A;Q719%  -04DƳA5tj\twvh3 !A6;#"Ķi@3۵ok% :MFV7 Rª?76\T42`ZC2)Þ:7Dt_@&#-ÜSPH~zX/''CƜ^ST{ksfL3)_ƳUZWxmfZJ:S\V[Z@K&  &-&0XUh쩤\ir_420#       #!##/3AmuJ^kyqeO?/!!"    &01$/D]uۯ1;Ngxz_6(+1-3B>($   9A>>LYb}4)GeWQG1%,$3?E8@OM,$ "+(2QXNP窦!1(?G6GJ6466=WXR&  8CDOYbf{خ#*?;GHceO[_h`chg__uz!4N^hXN62SX\\]afpo}->Y9.%  .Z[[\dz} 2J%       :\\[[\az. (9       A\a[[]h|+         >\a]\^k       H^bdbfz    0]`bgr~   Xfclrx{    6dnqmow}첳     7Zlputtw 5: Peikqtvz%75RI*   Dabhps}h~k\jLC   >]cjpw򰵹L|rXB:    J`ilo{cziFB8    Ljknrאַ4tvzZLCB/  ^mmpzT\w^RLHF(  ]hnrx]Ubwvtn]\YHF,   5_rwx٭w|quirn}|og]_O/"!!   3]ry|𮬬zuvrwg`Z0!#"    &CdqzȮxwqvlcH:(%!  DPdkxخvos[myyk`?-  ,DUdiw񮯯{stbabzy`H(  :RbfozƮht}|lcqmB  3  >`eis𫪫lvzqlnj]zQ2%#' Ocefn{s|oinue{h:!"5  ;adfe\>nq}rW]fr꯭pz{lqfwlnN)  4Zcg_>#:8)HOz|{gcszoci C`hg[9"   c@F}qbhlonyk`oN JbhdR<5/ Ӱ4:b_afnqasfn|f@(0WbdZG=>5   h0JX^gnvn]n~vxX5)$NXZOGDA;0!   E1Nekjpu_^cm`C6 !/TZTRMD@91%  @6jnspz_N`d|kW7'".5?QSRHA@5+  Nϴ?qihk~tVXpinq]KM\PN'%/;;GHE6#  =Ube`\bu}oflsx}mEP`pdX9,)*$036/-%    zikf`[_eu{`hhja[]F42//. JUWkjX]vp|sod`jf?654*  PmGdxksWvgnxqS988>'"  !N4r{grs{rozeqSQ?K4/A,'.$&*7ĺi4+ztns~jzs^UI]`_T)  5+/w¾U3)zqmhv||vwxsZV />8E,D3,+ypw~}zjzxwyoz~~||ywrJD*(MlhH5("/,7zt||ysqwvx{~{y|~noo]pvjL3$m¼B?9xwnpuvzrrzz~uomnebF% 6zµKBDuovtzvy|hnq}|pbV\Q=)!NDHFsq}~uoxux}agj}xhWQH;.CJEI .=_`_[TRRA" -PdhggcVQK7&4H\eggheXSOH= $#CLQT`eieefa[UPO #,PDR[ZZ_eeigedccb]V(NWTXZ]ceehihdcab`\+4Ri]XYdjjfgiijfcaa 1>)8Z[^_flmlkiihecabdb 053<<>F[aahmnolikkcaaba3CHBRV\_\VCOb_lpqroloqcaa)&U\]]Y\\aa_SIIPQgnuupmroebaa_ ;X`]^\]`cbYD?'-@O9:T]\\]_G2 3;Le\ba__c`\\mqGV\^_^Z1 ,:`opmlqpihjpqn">@<1%& %BHQoqsrrqpqstqp BYhkippqqsrstt  $*8_ejnlpqqosst*FXaeghihmosqrtt&*<]figiijikjqrttut%8Xeegihiihiiknsuttuuvt# *Vdeeffiijnuutuvvuv *7`eefiioutuutuv"(;ceefiijqtursvt.aeefhiijlnssqpqs  /deefgiijnlnqmmlo  .[deehijjljiikolmpljjl ';Q^ceehiknqpmkjinjkmljij  #0H_`cdegmqrttqnkkjhkkiig   4JX`bcddfqwvtrqqolkggiif =@) )GY]`cedeiuwvssoonlffehmhee=@*+ 'J_`aacbbenuvttqqldbbabgee<2# !1Ubbaabccjottsrmca\S`bee +-/! #5Q`bbaccbachoprmfa]H4Ycdcd !6UccebbecabacgkiebbVYdded    9^efedeedbaceiibcjs/:adee%'>( #Kdfhfeefeedcgehppt|i_ccdee#0=% '  4Veeheehkl|kcdccd)%95,   <`efeffeedfebwyjgdcc)&.%! 3aeecbacb]ky}ngeeda", $53_eed_]`caNMwysogee] ' ",F: ;\dbcdb]Z[__Y0>y}xrjlgeed\$(  0CC7"&,I)@EE8J||unijjhecb! >M= E}wyqqiggee #8G/sxvuwpihgee! )3%  /sttsliif ,<%  lrrqomkhii  C5'% [qqnklkk  PI86I6  Wprronmm  +IX[=(^prrpqomn ) !@N8.[mqrrpqrr0C@A -bmmknrrq763+33A0.7iskeilprqh  >TQIEI<<7;"    iWplI 2NQU^TVNC>:83./8765,!~~ynkplljjif\LLIGGDIB=:;<;:93*$(.  #}}xorwuqmkjhc^SJNIKPOYPE>?<8675--/*&%#$$""¿|z{yrlpz}z|ojgb[QPRQO]\_c\JA=883+(%*-*'$!"))&" Ů{zzwvsuxwkdVSQQSTQVX^[\WE>=;9/)'$*2,(" &*)%!Ŧ{{zywtuxoeYRQOQRQQUXXUYJ@>><5/%$.0+%##'-*&Ħy{{zrollv~umc_VRPONQRTVTVXHB@@BD>1,-+%((**&.& ƽ~vwqlkkp||qkcRLMNJPRRTTWLDDBCA<:0.)#+CH17E* #~yskjjo{yqh]QJFKAHQRSQPKOQMDCA<72+'*''@YOMWC%&yrf_bd``jomZPYLDGCEJGJFB@GHA:A=4.*%%&)*8WW\=*h|||ڋ~wxfJBGIGWGOIUY><:7:<@CB;;=>8:>3)&%$$&,P\TO.!gF`}uv~}s^PID<4+@FC:+,.569CDA6424ALG4& #$#"$0A>1%xxnmyr{S6M[bIA)#5G< %%'-//ӿmi<72.3&4BB4.3/021"#!~r_J82*&-BC@@51.*$% !ǼshWE8% %01)*,31* !&ǿ|ol`SD*""($&&)*% ! ,$,Ų|{ss]A/$$%$$%## %'賞hO6*#)+&$$!" $ Įh7(%!4N@2)$$# (˵l6,'!$N_K=2+%$! m=0%""%#4?^i]<76+#!   æ}g7 !%+1;8VarypcX*"   ջkC#)-042/D9AHGEE)#"")*#0#458B!̾vH53-'%3:7>J@-&$Āĺ}V82'&(18>IZOE6*&*&! ¿`MX;LoK0 $15ETX`bqK. #-;Tj}vjTE?,#"#.j|sxvuZ)% A!)-*1AUeutLD1&2BpxwneVF?&)%''hzd0"K" &)0/6KTYkhWPK>Reuwvm]KE8$.(!&w^(,&|B ')*8=BQ[dlsneNjqvxxtu]>/("! !%=h664)'?!*)-:GRbklpuyvhcrqwvwvA## #$'!Oj744)++#$)-,5GXkllnruwprpxrrv\(%%$##"(7V!$3/)-Ç"*1.9L_lloruxttopjjtW*(('&%#(*<+"%'"_!,48BQbnpqpsyzxiihefhT+**)(()+*1Pvsr$ #$4ż)%7DOWeoxzwv{vlSQldecH.++*))%*+BR0&! ,38Û,%   7KTh{tuvvYD41:]_^W>.--+)().NT;$4?Bv)*!   *Ubmmqty@*($!/=FE4//.-,-4>7,/297P)$     ?Z_bfe_9!&0492//.**)-B0H6+'    7EDQQE.#&/2340//0/+)(1Q462-$   /;:98,#'+/152//0/.))($.D64.-(!#%Rk5   1631-'$#! &+25620/00.,.0*">11.)'$ 5iA  *(('$#$$%)299::/001010/045!%#1/0,(1[ncK ,$!"#!!#$$+12:2534523211365$A<:;3`ĻT&;H0(K2!""!!"%,4C<96=?;>9:864BG7$KOLGEd«{aA]zgmo>-'%"!!'7IHMG@KIDA=<::7ITK+&VVLJOvǶPG?@%$#!&1?HOUSKOOJ?==?AEMX^I(%PWZUVc¿z}l;+,);>EKXXWSTOG??BDPT^eZ2)(&/NmZX^^as˼uP>RnpTP`_[[TWLG@BBK[W_e`K;7.*):yshihhb]WUUVUUTQK<6:8011/-(%&-,+*# ~thegeaXVYVVUUTRJ==:997:51//0//.)" &wkddaX[_^[WUUSOKC;>:;@?G@7220-+-+$$%!qdbca[VZbdbcYURNI@@B@?JJLOI;41--)" "$" !!gcbb`_\^`kkg_UPEB@ABC@EGKHIF7110.&!!($ "!ccba`\^hmkh`YQGB@?AADFFDG;3210*&$&#$"accb[YVV^kie]WOLDA@?>@ACECDF9533462'#$" ""%e__ZWUVUVZdd[UOB==>;?BBCCE=665540/'%!"5:',7!vjfa\VUUYcaZSJA;8<4:@BB@@E5vigigplsiia\RLOPMMUYWH@G=6968;9;7539:4.41*%""!-EEI1"Uflioddffrle``R;59;9F9?;DG21/,.03550012-/1)!#@JC?$xS8Orjnmle^_oqied\K@:60)"385/"#%++.564,*()4<9*'42'tnqwaaXWaljikm\chB+>HN;4!+08::8*#")5;:*""#%vbUklprsna@kgH>'-.#'(%)%$*698.+Ȱ_rnvwvsnXl]KJ%&05+/.   ˲|x~r_`ZL"! (290 $&%  ˴|}}vmWT0,(%) )54*%)&&('  ~zvmke\L;-'" $5533*'%"  µ~yqoji\SF8- '' !$)'" ǵ~xprdYVMC6!  !"  ##̳|wodb\]K3%  螆|olgiS?+!!" 仼wostT, )>3)!  ҼtrqV+#>L<1(" ׮wqmW1'*3KTJ0-+" ۱ywoeR,"'0-EN[aZOF"  ը~wwxwkV6!%'*(&0?b^VQ( ˻tuuvpiO5#!"14@I:%" ʼ{ywvse_YC(! $# ! &%˹zyxtk\_TC73   &$'L_YC˹{xulcXU?;:50+24Qcimp幺psqi^QSC;>=9  ! !$3F]defpṸ{nij[XRM9;FHB"  18Uegect箅yl^\OKD?:;DJH6#7NGXgd__iҬxlOIK54848?@CB?89/,GLESc^][Tp鯝jAG>/.,,4=?AumjiggX=&'+/?UNC70(-!" " 1).JJT8 9m{i`ecfki-$,1P\_H85,," QM>Q3(4 Q   #28CFMNZhf<%$/DUd^UC82#$Ud\`_^G! j4   $"'5DQ^]=6''5Z`_XPE83! TbikllP&{<  !&&+TZ_``]^K2& 0ypT++)!p3 "!%.9BOVVY]a_SO\[_^_^4?{W,*) ##{ !$$*9GUVVW[^`Z[Za\[^J  ,F)&!$u  "'%.=LVVY[^`]]YYUU]F"  "0z#P  #)-5ANWYZY\ab`TTSQRSC""! !#"(A`^_)!   ,6?FPY`b__c_VCAWPQO:%##"!!"#5A'#)-#   , #"().(*))*()('')++ 40/0(ND/:' <(#*60.+02/2./-,*59, 83<:7410//,:C<# EE=;@atxzpA833'3:?DBGK: @EHEDO{ubeV/"#!.17;FGFFBC?93356@CKQH(! &?XHFKKN]˩qmf^@1CYZD@MLIICF=9345 "e_^ehjlmmkqopljiinmkkhh_/ `GGaeglnkjllkkedVGJH[fkX  I35\dgkcVYehba?! *9b>:-(?_], "#! >*',2P'*-bF. , eX/0NH' db.LSM@hd0/;OE.mh,/(8% nh/ m\<j7<h#<< 7BhW?7.iqfE 3 &mvkZ9316+-\rph=30256  )[xxrR6324=4##$%($arvh`F34FUOK8+/)&(&,BZcc\7DXWJIIF:48;/1! &     #Aylluc_k\xMNW~P/+     4N`bRI6@F>Sx}V_V][S.        &2?:EGGPj~brj?Og6G    :CKEE=TgiJ8~:$WC),   /:3.6RRC0+Poj,6EB42 % FB<=>DDh~?4gs-   G06EZB?O~nJ7       &`G/MeHYtw|zU<   ?o\bfZdntf}##$    [}\U[^bw^Yv#  bolZg}ukSiyy  C{|ti^bcaQdlgtNCos  ,|vjZTRRWkaQ@T,$3[  X~qYQTgqkd[H'%1UA   $s~vbQQVP{xhY]Zo\   F{y{{shPPV]~{{h]    "quvf\OXfxY    3W{z|}xwqioq}lH    !&#     &11JVetj|xqzZ|~~xql=5$'!    65,8FQOOwz|k^kgo"!!$  "(,#4LPmuyy_WW{'"" !"!!)COkzmzsGQ`{ " "!   *HSe}l}e]cf !  6LPd}|p[Zaw!     FMywclwpp]jb{~    Hqk=Tzhduw{    5c{xRA9{z|u~{{%"$* 'CfbsrdN`j{ksvPZ?)0'#"#/($6?BHMC( 1&&+& MVWXe}drxx`bjka`v]T87*&'(,3;ARUfnkhLAG'+'& !CPXWX_zhttyvHKX]P@-'((->dYvkfplqSKC$ 1PWWX`vxwqs}qbGQizXS1')4@]jsv\h^J?4 !(U\`_gwr}sj\pq\TTXjaXTSiu>B7EBCRjlyqP.>6% ?bg^kpvrrlhYS_lKKPXJcV^mosU8=CF>;Log,+(!   /iniifp~|l`QNV]CORYNM\dliXOE34ISB8A]dO   ;etxjxznXXnQNSQT[a__\H[}nrUMU:    AIUjknqt{~aoz~|}yqm' !,,A(  &L[ejklrxplzx{gfpuu$ !)-*   !2RZcjlluk_cjh$  %  $7MQQTUWcxx}aYdXRXu,>BRp~_*47:MSUZ]bqzzu`^lX^fphz!4(Wk!+AA`\joetwo{zmemnhvoada(6?gkSK&@`lv{~q{|}~]pcZ[_fmc/ &/:-!1`ek{~tur\RRXV^q}`3JGP[Gnq~~oofV\gWetg~~=+QZGA\p~qif`umlzz        4aVW^OKVIapopjyv{j>?Fhv@&"       )>MNA:,482Baievw~rDMEJIxC%      '2/7898@UflnlzyoO^pU3@S+8         .5<761CST;,o|rrf/E5!#      %.)%+AA6&"@Zy|V#+85*(    7401266Uw|wg3)T_$      9&+8H42?{wggXzu<,     M9%>Q9H^r`ecsjwvlD1     3YfJORHPXvkh]Qf{{}ytr     IkneJDIKNi{`KG_io       OnnmhYVHSe^VCUbv{~czo       6cmmd]TKOONAQWRl]>6\\      $eommlh_UHCAAEVNA4C#)iI     Gpqnlfhe[GACS\kUPI:'D4        ]ppmffg^OA@D@etml`UHKHYK    8clolacc\S@@EJkufddniSK        \lli^_fQJ?GQiykjmralrjhG      )Fcbmdda`[TZ[glqwrmseh{ytX9     0CYY_nj]jle[`ysphmndenhlN1       (';EQ]Tdua[vdHrdmxqdf`[W1*   +* #-8A?@_cwz~lxu~znz~xgcUKVRX     # )=@Wtui^~ybaLEFdw    !6?VdvyuWbw{|r]9AMez  !:BQivueWgrz~~xePJORl     ,=@Pyzrkegkx}{{eZIHM_k     8>cvmaOW`owyqk[YJUNce    :ZtU1CaoonvwuysTP^j`b    *Oc~xvaB4.eibc^pw{tfbjkic"   6RN]nwr{\P?MUbgghpyiWh]hhg_@H2!&% +259=6 '"  =EFGQgx~pgkfP[laaotNNUVNM_Js}D-," #)04BDRXVS=48 #   5@FFGL{rlvbgmqS_po]b_:EK6?AG>=JPVThqs}oH?8():B5-4JP?    /Q]`U`cysjXFGGWA?B@CIMLLJ:IeX]E=D.1C6'&*+.   >Wcieytx[WJKPHCBDFIIHBF%&#*?62/22)**    7ZRlz}xuk`HDFGDEEFHGEDJ 6.09,#44%   /^ivkeruqdpVDCCDEGGHFH 494($3=      >CCJajghg|~utdUPZD@E\xm  *-%   1=AACDFO`ahpu~vxmkjdMGOFAG^nr #25B[gL"  ),.=BDHJOZbbm~vy|tmlf^MKVFKRZSc* Fnqqz}W  #44LJUYQ\_Ycflw|~vnmbWQWXS^YMPN ,3mTVnpk~lC<  3LV_bgljfjeggovytzrghZcdfeJZOHILRWx}nnmksO% &/$(MQUchklnnllkfehikpvtpj]^r\IBAFEK[jlkge|M (;8@H9X\omfeiopmmpomlfehihrxnflZjYQDJSEQ]Skieetsun1 "AH84JZnurmkjlnporsoomgdjmm{zjZipznTQL^WWbc  F&", !)!. &0#&! 7$!) 31 %4"<50+32  )*  ( " . (  % ( '' '  '    &  *+ %   &  ' # 6   ''31 4! ' %3=4' '3BIF-(0"5 ! $(HJP<, #$ $0@NPF7*  $4HOGE>.  $ 4MSK86&   $'DNI9  &1"  &  &     &    ?C. %  9J- /JE!"  ,A/6.$  !/>3 !,3   2   3 3 ) &  '  !(   () (   (&%! ) %$ )  !$  *     +  - -  ,  - '"%  +#14<+ )$!           $ (:#  #20(    (;J()#!**      3VG=%     %   /(''($#*6AXiljilZr|  "$%#!!'6@_hhgsuusw  !#""!#QUZe~||_V_$&  !#!" DSVbnwfwp]!  ""!4RRXhfq~{"+'   !DQ[uuo)(<>/ 2    LkqmE0)BLI=     :atZtx~7*GDAX8   #GypfiwL%\DRI3   +#~xgYl`2JGR;#$  /"7mgwT/1D,& /:     )G::0#$DDH`$   GŤ{+)G3649WoJ%" +wdUMB?<2/4G=('"&" ptvnmd_JB=<:/"#&+(##!*#  ^z_`vvtyo_`N@<:*+&('$ LvespYVSIB<2#!/"#0%   S~vjuylGBTjZG;;/#!"(   Pwz~hgpdgT@EIRqlU@7$#%*!!  xÀpe`bRHBUemUP92"$'#$"#  F}zu_YVNJH\k|l5%"# ! oȄkVNRODFgs>$ !+BhœlYVWXMTlvM+()*!";$@ŗz`\a`Sf}xaF2-*&0?F$0'@ǐv`Yjly~{tf]H3( &-7>)0!( &Ɏl^Zb~qqb\[F/%"'-4@IJ@"$%csqxaXTTZwqeTaaf`,&&+.9YUD%! F][hYVTSYsvjWfogJ<&'.A[c9* Y^c]]h\dey|vdbq~{E3&+3L?I<9xrzvtpgwscsgp~{{jH>(+1CCH=H~txmmqe`nrwHA+3>DAID$#x}ruokieq\VD@QFFS>"!w  %  !+4FTVUTVH[gd   +3LSSR\]m]\a    @CHQedcLEM  6BENX_R`ZK  *AAFSR[nfd"   6AH^]Yysz! 02%(    =VtZWkuj~7&!5=;1   .Ni^H]aep,"874F-    8bZRT`>J6B:)   " i`RGW}M'<9A/  & ,hWR`llC&'7#&.     !lt}xx~9..&67:L    9ormci"!9(07F<   F}sceq++%C1   ,Jb}vpl]{7, + 04jfTP9#!    &@M@v!#(+#6,    FP\$'18"(9.  46\8/9+/4H7?   ((PAD-#,,7OB  (CvvVA 3-RR6*  CówkM?V533I,! /ĻvqbG[NG6B47$&* %E\e]HUcd#     DRedA55-73;+,   3U]bRQ*,65B:C.  >aknpT-5704ERA%%#  #eid`C/:895970'",)  #c^VP@7?A31;:34""&!%   badhNOGB5,/0:55,()()!(  /_stmP6@4+(',+*!45!#  +S^oc4/<@7'+,H6DGL7!!, eL?NE:;878241PXY[^D$  iPLXRC:676<:@ENokU# #  0kakYMC>><:9>=CEmc1 (  !bjdYNTI?A@DF?VlV9   zefnpeTOI@@HG`WdXW"  dlrotvaMIECJQIMF/%  }yu{|oaYXLI>11%%'6>-   b~ysp_\VVRB<2+*.FY;    #}tx~xl`PDj>530(%*91   ~vpZ]j^XWPK;410.%" "  NmbLM^_]aYLM>30.!"   @k_Q]jqot[GEB;40(&&  Ge_U^aigiW94CUH800&  E`bfSSZPRC37;A[WD3,!  cgiifZQMNA:4DQWD@.)  9eoqc^LGE>;:IUdgW+  + \lysgUE?B?78Smjp\1"4 X{wmVGEEF>CWxpm^=" !"0 5{bMJMMCRev`N8($"&29& 4w~^MGUWaeb^QJ9) $,2!&  zu~iVLHNeg[[OII8&$)4:;3 Sǿ\[aNFCCH`ZPCMNRN#"%.GD7:KISGECBG[_UERYhvS;0 %4HO-!HLOKJSIPQac^PN[fsd7(")=2;0.b[b_]hZS`\O[RZfccT:1 #'65:1:lf]`nigjXW[QMX[j`:4")164:6dkf[ktvujf^YVTQhh[IE63A88B1b Dfcce Bbdd;njedd0lnfdc! Aegged0bdee!_ccdd ^dccd$%+bccM \bcdd_M Hdde!b&Aa``_Io1 +\aa`!Tj!#Z`aa "$ Xaa  &_aa&+aa$4aa$XD]cbb#2;Nddc#37bccb wm``_( I{`_^hlicc.gmllSnnomppo pssrs jstt"lstt\ttut  Txwvt!czxwu"+svvt"_llm ![kkj !\giiScii Udgg 2]dee ,bcc ]aba  "1aab2 ^aac(*Sabc/`bc! =[c  Ice [eeS]f :ci! Tlqs evut   jonm'  Suon!--S}{r//&ov i| )N 0tu Uol1W]  U]  Pa˻f$$%&(*& *OH;& ))*8?- .8687/P]iiż1$$&'-0!" )<1&- 25/71/,'(,IP]gvǼDzS%$%&*>>+,%*07J5+!*0.@! --&+" *2'%$?0'*2;EZ{},%&&0ENGF?3*9IA6IQF:7-)#%)+2.0$%(%%$)##,5G96Sd~y|~Ľ/&(9AAB5+215FWF<.) !!)L>57;:! %'(7U71;Z>8G`t~~ż9(.?CIVP>>/EM;AK4-% >:150C;765-#'355TEBVMHHPo{˼Y:;:L[Udpnc|ǺçjWjV]SNNYZPUQHX^^Z< H0 '068*!'8BMBRsekpo޻ymoZi`I_UUNLH-AXRDA1 E"$#.407%(67CC[lsyr\ݾe]QafRRbRKJG:BQNSB. 3, ",*),'"2O]vd|xcڽ~OIHZYUckXOKICLG@T+ 4> #*%$%,Toudzw~uٺIJGDN^XXnvdQJH==9/,7% &*K6.CLyixĶHBM^]swr]LJJ@3+29+""( !!9\H5 "5RipfxrnfuÚI@TW[p{p[MFQ8$-$.-#" .DZ@9#%GIR8Xqyns~tvhnxn{}cWRLLEBWMN  +'4><848YMWRyfcsvygYXNED;;F:3   #.7=CGQ=EKg_hup^dj`UJEC?@92)  !)4<85[]Tu|p{vkljgpw\TMKD@BCD=)  #%0/17Riw{x{updZ^l|鵶\PONFBELI0$  #'#%#?e`n~vsfbhneOIJFKSX;)$     &&! "$[ckudisz{|ŬbL@CAQRty¿c+(0))($!  *$%!(A??Sv~zȿq7392,*$ " *"#1GECUoxx{U:.++,&!!(.0ZJL[>9<)*+%!!5I*aUrqͿ@0,/+(0H&' &)qhȼ@9:<@9 )0K,-"!"%'Ze}ͽRAGHHA*%4?HNO?4$./5Sl|ʾpBGRA@@!$ 0;SOEM<*"*16@H\ѽr6=XG@?((!&/E<%8M9""-:B=5+#0%0CGFG5&='=@B?:5&  )/"+LMP@27=E{f{漨T ""?:/ !!"-3$%-*-,&@KfTTipmn}~ڳ'$&!0'$  (*%,'%# #;02! ?ES^\jmol,#2< $-! %! #*.) !'$#&87% '2@JS_hnfjx{œD"12#$!&,;*"!&%3 $$""(2&"(/7HcgelhhjjkƮu#'7?982)"-:05-&+@( (& $&!%/44HXrmng`\d1 !+/4<)$  1.'*&60,,+$ )++C75E=9:@Xcpkq|}I/0/08ALB6):BA@B:H# (#$&%4*7;;JEHQE?Xzt|zhvŭL8:5879BLB4AIBJJKI/ "($"2=2=IDPZilYPerhڶUEUDJB>>GH@CA9GKKH0:&&,-!,5>5A\PVZrgZӧcWYHTM:LDD?<:$4FB74' 8%*&,+,66IVh\b{{y\IҫlQKANQBBOA<;9.5A?B4%  )##"!#(?J_PeuukqaOͫh@:9HGDPVG?<:6<93C#  )2!#CY^fPdoo~anf^ͧĝo96>LFFX_P@;911.%#, !<+$5KK\_[J=;;3)")."  .J:+*ATZR`[XQ^tnzxR:3CEIZcYI>8@-$ %$%7H3.906VZ\NVWmgs|[WvB?COGOSBA> "*20-*-G>FBajjmqxiQO\_hmuohbkuRGF?76//8/) %,058A17K]d~utuolx0)32.%$* (8>;(%-BB@>APg~wqgmqxrxŦ5&*% $P1-^sskvjR@ONXqv\YYQOk}ݹ6!&"  *3*-IgqkSQPRJYowtqe]`pyĢf    ";cx|ypjeLOUqz~xqų~.    /Mtwfhiikijm~nuivٽ_   %!(5<>?ZsyvopvocirxnuuvxIJ8)$&)769HTnx{wuupfnv|{kenvtòH ($*254AA^x{vrmagpmrr~ghuoƶS" '!! "  423B_yzslfgjionqnbjjٷ^,(.($"! '975DXv|{wmmkmo``b߼uD.$##$ $&H;=Iiw}}xkgk|ukwvյ1-0!"#*;" ND\[u}qjo|i~޽3'#&# ': ![Tjlu|u|ouvظz3..03-!'<#$ HQeonw|킑սB4994!)39>?3)%%+BWehrԺ]58A433&/B?7>0!!'+3:Jrhl{ê_,1F932 %80->-$.4106Agnqy{~||ʫL,,=;1- '0#7A,$%)58/.@3(,17cRibjxs{|ZSRN+ .(nZUT:, $)!%qYWWD/ "q[WWI.  eXWWS+. y`XWWV7/ l]YWWT*+ m[XXWV1/ |[XXYY@/cZUUW< *  &),!rWRQS9'&&$(*2/&YRRE (#*042*_SRRN9 &,(:4*,7^SRRQB$ 2G;/31 YSRRI%  ?74;7gSRRP1%%)!9M_RR3+ %MnRQQRRQ6'  BMKMPPQN/# !FFJMLNI(#    KHHIJI?#   RHGHGG6  % NHGGHIA!!("+MLMNOUQ   &%=RSWWY^T)  ! 5TW[^`aaF $#b`aaO   #$%o`aaY  *2  %$'$}^_aaG#3A $h]]`aa)$-?*#eZ[[_a^ $"0 ++! $bXY\]aG$3?:?3#'9[TUY[[-$68?50gXUTTW/';A/)#0% u[WVV[D&*<+#58 oZVWY^@( $ )3WOOQ[I)  ZRSQP> !   URPLK0  ULKJI> #   $$yKJJH; "&   ()PLKG!) #  =@›[QJ'!"-'&89lQ6"   79&*# cC ""#"!'-.) t^I# #&(!%p_O! &" ȳb\O$  "% ίja`:$   $ ͞ka_P $   Ύrg``]$ ɳtaa`Y$"    ̾}cab^$%)#"  ͬqfaa`? '!++)$  %"ɻb`^a;  A0,,+*)%.// ±u[UVQ"! KC+,**+"7C:?8.)^VTL" 1?98&*,*)+?GEA=?3y_VUQ! ->3! ""$8EFA@C?]SVWT! &&(6ACC??`TTVL!  !'48A<,6'üxOOPE    !'9=B(,įjHHF  ' !#".LFF<,ů|LFFB   $& "##"6FN=-# \HFC"#&#%%$';F=5/2#|reTRbĭUTVy𾿻l_WĽ@JQ|oq|Ŵ[@LPv|uusĐ¹BKR{{l`k~}||~ĺhcgixw|İrqswxԿXejpvĚNSZiuQT^f~ǾeY^o]hj\`zǯ||TT_}agguɷ{ioYW\uqkduzôo[l{t~~uhwxꮪÜnwvvȅª}ȿĦXcwÏĜX~üǽàěË|zrƬÖuzŮáɫnJ4DžĻ@ !QŠ  䰶ó{*  ȻµI8Q¤1  Ⱥ= IJC  鞙*,D  ʠ*(Úxi/+!#+0%:Pjfqmß]dazj68$! %.*1=Wg՟jE7=MW!,159OaukF+*59SyR9402BKy~X1$$1?tod`}t_I/DHNxp}|F+" !'Lisldjcapd]@26BCPCHU>@]*% +Rad`][W?ELGE-$/+"'.+%*O$ '$!.rg[S.((&2 %)$ "c(*]lu~xQ9 %#!$4&)5qhA)7u_7" ##$@K>H=bps://,:whYI;$*FdH!-{q.$--+?x*&'?5+dP,&,,*QddhuxL&knX.*(2J\_`cffG  XiQ~t3'%$5P\YVaXX? 9zw:6;VpTvrvxuE$%;LSQENGA/6DEOUUwtz}ysuB"*EQL@2:8,  u{~v| )"613+%+54 ᆇ-/30*2)!" 1)551*!  g9C??)B9>FB) '+PF;%2杞B6<@5 $/:zW0-7JCGX@. !1J`;GgfP3 *Vq̗v:. !0G½k)%1")+&%#$+8Djí𭷹֙q@5?A<3H+'&3=3/*(.,5RlĽ𲰡}d[\gNvlsxkE#'*.?Np}|w^iq|}qt}|V8#"*-Cux|aA.*&(5aZnw}w|}ynrurvtxqev}yf8# =T]WPUONiwlZPJ3(,45@6:E14nrswgiurrnl{nmslwky~uK!#BsjNPMKIE37<97#%"$"!ts{{korlkluuqqp{~x@%]~}nSIC%! ( {zz{s~ttr{ztO "KW^gx}s`A- ) *}~vwrw]S4!,^onr~xtL,5?4 :1P[r~qors{|^/%%#/buxuwz|UH:/"8Qt:$do{rzyz{{\%$$"3akjm~m"2l~w*"R|w{}~A#$$"APPS]a= WZz|x~ro|{G%" (;ILMORR9 HUAwgprlqifuot~zu{`)*@JGEMGF2 .fc0,/F[Euhh_gf[_a]jm}|vnjs9/95&  ,88CIJug_]bea\^mt|yz{rkku|5!8@<3)/-#    sig]cf^hdjnnpqwtmm~!,')##*)       tmihnoqoknlpllmnrx$&(&"(!    o~}ppjtu}uoimtwi'!+*("      hx}xhw}}ohmz|T.532!       yy~zvxvnrz5.285!   "A7/(}vxz5,04+   &/e~lunG&$,;69sw{zG3%   ';}xxN/9Rpwgmzu}xQ@)   "E\y{폙}}~u_.%   '9k{z~zzyqV!'!""-6U𗣥ց|ux||{{|x\4+24/(9")1)&! %$+AW𝚉vpy}{zztePIJR?0DXLV?71-.+&)'(8T|wx|}{yxyytqfWG8)#%#,BwŮxy~~{{yxxsncO=CEYZgslZPLFEB7)&)3AnƂ{v}~~wvwura>-L^elptri_WNIB?903ARi~Ƃo}|py|~|}}zwv}sQ84A]kj_lonkaYA52;=GQXayvpg}|rxxuurz|wvydL;3FGPSV_edieWD:$:LMQVWq6*1,.HUeSC,=31!  '5C#$"$(+KKH=8. AdehjmkkmkA%"!+A[]R>@:   1;9>CDBBC_aZUPNS^glonnfXciqooljiijkkijophW',%    -#"!8=DL\fmnkjijw~|~ynjilnnknrskW!  )  , .#/JVhliio{|y~{pjjoppopsrkG +( &D@>5*-BRigefehjtxu{zxoikvutqpqpb  .$.&"&$%+A6IID1" 0Hdgeeffhkpsvuupnszvstsol603& $#+')*0&)48;BEA'& <@Xeefkquxxqryyvvutoc    $/9<5+/88=4C% +%!3?=Qeegnrtwuxzxxwtps`!!  1C\deegnptstwzyyxvsrG W'.=?A==6220'17,$1:=NdeefjlkmqsuwxxuwS Lb&'! - "+0-D`deefgljilpqtutrrjM9V^&  +CCA;892/&&9LM<>!"0-;\deedhkknsyuusspqj&#=[d#").  $?DA@;025<+*.@OJK1"*Yceegmpsxwsstusb0Vcg; %5/$%' 6AB<5<87DE737ABIKG, Mcfdeghnmrxqnorsusb 'Ifk5"6/ ";B??506K?=2?LEBF? !D^feehlomlolnnqtti \hk&%)%&7A7))3>;58EI=FD:0 !BVbiijlmlhnnooqqs_Bdhi, <'4)  .1(#%6?3,=AFCDD>>'*=NXbilrstnnmnkkmpl%Kcgh+966+ $(3:2)BFAG>9?A7$8+;INV_otrsnmmjiijnoAF^eh&:7/,(  #+0.7CJE?B>9?23/7,7IEEYlrqnnliijkD Pdh,+B:0.) *3& .5(:AH408::4+*2'.AEJN_ikknnljii@  /]5,*4712162"8A;%/;A7$381*++)4ANTU]n`annmjjii[ BD45+/,'044+&  +:DD7!58<$#20.*,$&ENVadgeC7mnljjiih0EOD:)),-1/2#*("7EED:;372.&,-,/)/' %BZacfhN \ehiihP ZNF>)5*'(%!'&'!663(!  */- &!5] " $65&0--451'  %   14'/22464*     $""46362+0-'$% *4(06'"#.256.*.0.$ !% 3<4/0<<.! %+'&%//0..'  "  2)# &=A58*7Y #EX]`6&%=>+2-/1#+*&('!&.20 ^]) ,7E\^_a8/.#(+!"$ "#'*#$+')05.# -_aN) 3IMNZ_a (+&$%$$#%$$+,+14,!9XH4$$?KS\_a  ! %!%&*+*14) 26MX]   #)-/--)  !)+,)$  !$&!#(%     #'/+)(% 0%,  #*120(%J<)+  )0221+ %H6,!$  !+022$&&LB39**)&'! #-/210,#$$>ID@F<842*! %-/20//!0;?=96#  64EHEG>?52/$#!$*./.+48DGD8()041%+:3224BLF?:;433)(&'"$$#6@[g^J468=;=87;ECK@FK<3312&&$ /Jlnmj@99@RUR?;98EKMKBI>112 $.Tgjk^=;;L_ffcP>1:464;X^^`lz{r_JLBA;B^enX9433699CV}Z^^_fo{|~wdOGKB:Ccnk[;54342.11tkkahpuqXE?F?;DbnkbM55435;/Hr|mvþ|XE<@?BVnqk]G75449EIveJB;9Wwyvj[Q>66;EKSŁźpdNFDCh}uoid`O:889[ntjjhO:5>@;<\ij|J=8?ANime`>64;><8`ɁV4687;X|\H3588:;7_uG669;Hr}]OC77?=7MJ@=?B]ipdQEFGF6eźX@79EQow|p\TKL\YɽZ8>56AexXLI:RPbM+,A48l}M923JN[ƴxgN;..BJZyqyIA=V\TRȴnYVbO@3:?Ol^jKC99kkNgóÿŻe]IQODJNQejujgUB9DfqVR½˿Ƭzmma[GFD>;>do~{wtnbJ8N`kg^y|Ƽ¾çrSFALMQIB;>7:g~~|{ysvadk{lkkaaXRNľwa9*3 ?:793EZ|~~|tgjeexw[[G7RG'\nÀrfE'&.'%.73FNap}yp]agaotIJ3#/&V{þoS3"! !!3MNeot{{vg`dmit{~j>C% Tm>%!!  #9]v}}|rfsqlmpxy?3!d_;)"!!4\l}|sx9/AMKp{?*&k¹~M$!!)?luZ++*24br?.J,1ovºb+*#!"6Z{ltU3-*+;?\|`;/#hezdUIllA6,()?hqo`A-/-,5On}yfQ;%/9ij~õS3-22HhtTGA1..04><,*CUPJ%"*8DB?=;;+OgbWYZfg@&5='HJ>6+0@J^E76,%%`jdU`XbZ[--'*)!R1!,W[cVD9YjdfN821CZR>>90(%3ak_AOT]^:<5,  m5%L]dee]oxkoreeQ40-4QJ:A>;0+@LahIAB@D2140!K#?M[hpzP^f{bcfV33.4B86IS[CER`gfhjlmaTYhrfZ\kZQTG?*"&"$,2++(" V$  5[~]>FR]c\dea[NPWQUCSPYXb`O'! "    !,DUDFJLOQWSO/057[iCufktb`Y(    $DG??BA=D<2)'+6bz}~zwhiG$"*  "4{V=ML1,(&&(3Smmyzzyv=% S(pdHO9,'&#$&-5EQ`uwyysrW1# $" ! >ynAK91&$#!%,2=EKmnslZibI,"H?FP=53'"@zc8DJ5)$" !,8:9-!$1IJJ "06442-+133$"/jU5$')3742.'&&%#~uoYJ-#;2$5?96&,4./593.!"  3qpRYL=)!R\Rq[]RASc^RH1$"! # =}žFHKLKQuuwyq}z_RJCA97348GKINLE:83(*)0zDKKLTf{Нg]IA::521=LRQO@2'/*+)/jGKKMWbsc[L;=5405KQXG.)((+.-5EkHKKLRYcdoŴe`P?9<5/5NXVH/+)()'%''_UUNSZ^gnʵiZF728206NXUO=*+)()/&;[dX^ghq˴sdF70425EX[UJ9,*))-8:t_gonqw˴vhQ;5/.F`a_UIA1,+07865Sd^YTPM?.-.0>Au{ɴ~{nWD:74&F^WVUTK7./0/7=ZҴyw`A642.IX]UUS?/*23/0I|ӵwe;1-23?UggWQM2,*/10-LxE*+--/FpomcI9(*--/0,L_9,+.0:[lmneJ?5,,21,>oɺh;3125JTfklmkZPA7798+SкsF3--7AY_ljllodYIC<=IHܸI-2*+4QagnllkgG=;.B@Nhκh>##4),Vilklmid>.)*<>IȺlaS>/%%5;Iionnlb[a;41EJCBݸoYGEN?3)/2?n~yttjVKU;6..VV>UnQK;A?6;?AQUlxxqkf]URD5-6QZDAoeXWNI9862/1PYejnnhec_]XN;,?MURKadjr[B84=>@:502,/Sjgkkeedca[^MPVeVVMGB>Ĭ{_N.!).2/-.)7Hdkjgddc]RUQQatr`IH8,B9JZs\R7% %,)8?MZhjmmgdaZKNSMYpk]:;)% EezYB)(>>QY]cjjqrkc^SLPWT]cfU16 DyX1.J_ehkdchuq\R\[VWZafmsb2) R򱰭oL/")JVdqqsd[ira.&4=<[cvoorl2"Y~zf>!3Woy}vtn^ihH##"(*Ok\2%;#'Z}_j}uuO#",HjyyxxqcV]D)$"#/3Iv}peL/&oZSerrQD;Y|ytX4+# !2SrvqrliZYM4$&$$+?XenjaRA/q&-UWj~zrC)$((:Silinh]D94'%%&*0O\WgdR?4)yPH~w0J}xsM(%'2I^iqrh`O2)&&%%'&/;Qa\cB%*"s|b/''O}||xrjB*&,Hbnog_J1&"!!%)'535>RPM8P+!MxyywqkM&#&Hbhd`T?'$!!(+..2;/1A4?4%zZ'$S|zyxtX)G`\I>>4&!+4682/("*7/5)#njJ- .q{{zxc!0RO?873+!/?:,'"(/8*';ZgZ]f`I3' $ %Bqx{|}yo0#8=<6210#!6D@;0:*38 9643&."*90*.Gm{yyzgX2"-652100#?ROFHHQR3*19;2+" &4;K708@kwwthTRJ5+%-9GJ41,+#MUPDMGNHI#$" |oB'  #EIOE6.HtwwussjUPQ?,('6HB12.' )NUL4?CJK/0*#Y*  =JPPQJZxraWZgn\QQA*&$)A;/42/'#3=NS:4536('*& }< 3=ISZagqi@LQckNOQE))%)5-+:BI5068?@51(''&(( _! *DQ[ZUf]WDJWedPTVSHF638DTe_bjL727AMSQSTVWNDGT\RHJVHAC93"#(##  J  *IgfypK28AJOJPQMI>AEAC6B@GFNM?   #7E78;=?AFB?&&+-IT6]QV\OMG   7zm92243170(!#+Okbdeb_ST: !  )fqE1>='$ )BWWabba^1Ds  _~P9?.#$*8@M]`aa\\F(2fzY4<-'#(17<>uaUH4   9C\bH. %*0:>??>: &??:-   '  ,iA     !&)--/4=90' <󟞛)    %'-,)')553) RY  &)())'#&02-$'{o;  ',)*($#')) &uUD*!)-)(%    }f^XG;$0()2.+#)%&+.)% )[jYAG=1!BIBZIKA4COKA9(1eQ]Y\\SQPLJHOPCCGJ:3/!*7FBD2!DCK`faSIJJIKLNRPJKTM:@OSdjojcc]8%#PedaXQPRMKNSW^UV\a]aegmorrplfea*# Aaec[USROORZ^^Z\^abfjlnqrrphic<  !Zghjd[UTQRX^`dccflnoqqrrqndaF - Keihihe^Y[V^eeinpttssrpi`K![ %7XijgfegeefjootstuttsrqpeQ( oC;6NR`dhfdeeilmnmrrttuuttrpqnX,  fEikiikiedebcflmlpptvuuvttstsppT  ITgmhijjhfedcdknnpqruuvuuvttsomqY#!ZkqjffkjhfigeenqsttuvuvuutuvvuttvuqmklL' 9alnedemmgjmifelsttuvvtuuvvuwwuuvunhc\B) K^jhccfifeknmjgjqtuwwxz{suwwuwxyzyxvjc[H9+ Vcgjdcffhhjnokilruvy{~~|yxxtuyzzxocH:-  Rehlifcchngkopplosyx{~}~}{zyxxzzymX=0 +gllosldcegiorsttvx}~}zyxv]E9" Uupnllojccfruuvz{z{~~}|{zz{zyxwxwd9+- 3v{vsiiklgdcgtustw}~|~|{zz||zzywoO-   (uwuuiijnrgckrrqqxyusy}}{z{z|}{zzytNYutsiijpjcptpnpotsialpsuu{wxzxwn\2  ;WXijjdhkgrurppsoog]\]bjlqtvupG&   gidMQ_ipprspnjg^YY[^_ahnk;  djklomprgU ^gnstoif`P."  bcW=350_rtrlihO($   dXMI>='&.XrpkijZ4$   c\MPHC;# EojkiW= d`\WKB:4'FhjdQ, edc]E9.  CWSH%"V^_=*)# -2?,"  +  3 5$$ $`U  #a`Q# $aX $a?   [0    %8-1B8#GQR  WVLAJKOF%'^91$%Rt !#oz    #Uxy/110%   #gzx;A@?:5+/6&/ 5ozy9AGPMMDML,*Vx{y9ITTWUN?CJ:,/?dvzzGPVUXSTIA@C +)BVstsyYYWWMKG?=2+ @ETlpnq^^[WVNACA6+HKZkkjndaa[UPB9(+&M]hljkoeec\J2,,(^mjkjkoee[N.+jnmkillebJ# 0.kmpqnlm~ztbqB)#!0ceA:6S~xfTdltuȪ|r~qWN=MJ5*%()7enik~~qgVkopjn̦{p[lfXA4P.(&%'.,%%'-3RǴӊmyr_ortm@++5RX8SR(''%%+P̀Ţotu^xƂ $'!*.''((&+wʷ~sjlwƁ ,+-1*+.5Zʷ{|~kdok~ʾ{ )'010/??EDZ}z|_HHop%--:799JEAb¼su{{}_GEdprWZ+#(.+17DLNWOMmnv|{}qU]ix?vu4'02BSWejgsdbzu|{`XbŎbZW%*5F[clssuinen{{}|wyfdʘpwS$"*0@Cmadn|}+;#2>Glt~aa|z{~Ŕ+2c^[n|zz~•"8)/~pz{uw}$9Zik򌅃|srvv颚'D\tzsvy3r|rq􋈇y.mu'v<ő~ Bupy}~ȓzs %aZ]n| aaVV_CI9BXzkc0?=;L~}|ſsC=BXi~zqpɒǿzfSdx~{dZï~^a}rpz`\~ųnT|}vsntgj{p{run~¾zwsuuv}}˷xvx|vu|ĭ짐~w{ãuv}į{va|u}磡zzİet]z䤡yògv{}úµvyxpruPnҋwsr|j$%*vƽĿyn~€}J 5T|jbz{]/ S~}lfeb]viN[5!&QqR4/+Bwyvqkmrrsstwtomjefjtzshp}}bQCPgW]^yc[eZE>1>;+" ,QwYUWky||xqqttuttsnnieelz}uv}{|[SEUYYUXdYIVRF4*@% %0Czeoy{~vqrttussrrpnjhmrx{}}xyzv\OMJJVUzkRKEGWL44Pd[L1#$)B}rx~}xutussqopoqqw|~xlWaoym\LY\]gZ3#"*BG-CB "Bᴋ|y{xsrtssronnpntyxmY^nyy^Kaplpn  "% "buv{|sstsspljmnmf\fsvzxzzUV_ptro  #"$'"#&*Kqtv}uttsspfcgjmkdfrxz{zzmVP[Vgf !&'&&228tmp~xwusoidbchkopquuxyypL::Yf\ $$.,..<74Q]_zwvutigfbcdimruqrvyvwpL87Pm{\]HI#  $"',6=>E?>X|X_}Áywxwogcbdjjlrwptwvvui[DJT`y3`^) &)5BEQUS\gjPOryzyysnb^gkjlstqsuxxrdbMFNkzPHF"*9IOV\\^UYPXcw|zyyxpibiijknpqstvpec_aQPlZaC"'06?QRVVWMqsEDSZmzzuldfjjlmpqssmlhd_[^toD($/6FNVUQJGCsX5;IZt~|~}zzyqihijklnoossqinfY]am'+;GaX^gmmswvuvwuty}}|wtl}|vqnkfddffqkXKLSnB  6C+1H^`]ZzoUfu{uvusutx{|yxp{xvrkhi^_^_cj_TYi(   )"4DRST`k~ccryutuutrx{|{{tr{zsvqolb\_]ddn`\er   1NXOLevrcivvwxvutz}|}wuxwrnql_[[bklkifeq  6`piTnw^bnyzxxwvuw|y}zxyxpnrjb`aenkkb]`e&Swzzotw_bq}yyxuqrvx|zy}|~nqwykeiokii_XYf"$:TwywxxweRm{{zxqonout{zzvpt|sihmmjfeim"!;T\vwxwt}eCdv}}|{zurmmntv~||yvqwulklmolccmp&&%!%5(cjlvx{}yzL6Kw{||}{vqopqtuz~wwvsuppnmnmokloq&-/.51AWatqpsyzzy~_@Srz~~|xttssvsxz|yxxsroopsnjiikq-3469:QikonnpuzwsuSgem~~|yxxwuwuy|~zzsqtnkqwvnlkmmu/456=GXpylnntyvvw~\wn~~}{yzwwy{|{}xpsvvpttpjoqtsz(465Cktrvjmmsyyvvdvy~~{zzxyyz|~~}|wqpuwqspqjqsrtw'364?]_jkty||vzxyn_moty}|zzy}}~yrqvwuogfjrnikn"/135WiNPXw|{v}zgceegt~{{zzy|zyxwwvqkfnmjgfg"0(29X^hNMh{xrzscbcegt{{z{zz|}yxvwwxytvutljihk"(RrKIrjXl~wwuvndbbeix|{{}~xtstuz}zxvmihjr,!&h{j[}uzywuuwwy}vlbc^_ev~{{yrrzzmjijl.HTjW}|klruwvvslijfd\[^_q鋁{{{wv}{vvojj7I]tmoslpuwuwwrojgib\^aj~|~}{|~ojhjk)[dqw\[zvsruuronmlag~yxwx}}{|migim%Wmy}_t~uspqtmku}yy}xxwxz||xy~|ngiho`h|ymliikr|z|ywvwwvuw{{xxyy~zomkil 0rjffgl{{xwwxyzxxyyz}~ukehk 5_Yadelyr||xwvwwvwxyyxyyz|ub\km |NHJXfuymq{{yywxyxvwwyxwxy|}}vkdmuPNEEMn{uor{yyxxyxxytv|yywxz}ztltu6|<.5Gov||pjr~~yyxxy{yxxyxxwz~wuokbXR'20/=fjnjent}}}yxwxy{yyz}yqst}vssqc\615FTenlb[Zp|{yyxwwzzyumnsxz{vsuvoqbRBPajjfndPHl}zyywx{~}xzyqrromqyxppvwklfKNexpr\ZcMIg~}y~zyz}{z}yz~xyxs}xlloovtsqvmrXCcuxe^\X]RUcs{|x}|y~}{xy|~yrtry~oon{uxpnrjZjyrc[hgf]Xeny|}~|st}x{ihkiyxrqno}ztklu«}xjb_nuni\^s{w|zuvqh^_ddu{xvpq}xqotxzsmlknk`^`|z}xopid_^dgt{z|yyuplluwwqftqfkn_cg|Ìypmolf]_djwzz~~umjhoue^Nqhhod^dwČ{|omoliabhnvx{zspkhij~xR]K~cgoqim䍉vpqnmnpnlu||x|zqrljhaⴱSn~q_cprlq㍋qonmmsrny|~y}w}rkid۳g_fimahxtonmotvtxz{wptttq`Z[ffgjmraB[u{s~{~|soorvxy{yxz}uz_\[dgjghgU !`pltqnnmnpwyy}zw||tobXeghgfd; +Cdjkjfmrx{yx~~VPxubfggbK&   Begedkhx}szZmc:!     Kpu; 0   ! lz}9 $LD   'blP  )Mj\$%!   K~[Ki|sO!&#    Tl}i  c}}n0$&'#%!    tx|p a~}{yT''+#  {~zp) f~{yS "#,1.'  p|y_ C}}{sG %.0/)   dN9(  cqmf\+$'(//-$   `*  Lbde^$3.,,   eaW   @U\Y: ;/,,+*   elvn)  0FAF6'')&&"   hn~x* 9HB> ! "!"  mnsmO 3AI9    nppjH13P,  oqka( $#/!   sqc&+(9  vn50TIT@  "!   ]I "Te__G## EfecT # 8hhd_'  ,Jaf_@    ./N\Y$    2R_S6 #    3_ea9  !    9_bS3       6`bT0     0JTN"   -")*"!23020' %-"*,/02XG&6APX@+!&%/2.--) #4.39412?J<:9PUL$ # ,1.,)'# 8A8>;5-22,3(ADX[3 !! ,,*)'%;DLLH:")7C<77CA  %*(&&" $ !! ZpnbZA0/*)),15A@K7 !$'&%$ !  r{}qa?+&0/),/FDB= " $ !    }{{xjD/*.1-&2ILS<    $   yttunL00/-%*@B5!"  '!!!# wyxx_823032 9VZ(  #221.+(++)   #oomiWH,+/4:DFKRQAEYXgO) ,110-+&#$$)%  !$)- oonme_N7227H^VWCQaggcX !% ,0.1-#qpnieaRIIFKNda@DZaced]  00$-/1'qrup^RMPKMXkbB--Aeec].  +.#!%)0(pstcC2(4B:]_0-AhmibZ# "%+')$'"$ nmo]lnqxk{{^DNZXSXhW0("_lijv{jvymowtVPKTEO\qa $4 #]fkjbh{wba\ck\\LFALPD>8,!1z~myomX]chjNVcYTGJTQVWJ8TB0"(1an~WnwzaV]sUSPMOCTOCH9+BEC"!'AVvtxond]vWNMJ==D>8I=-19)$&,4Uor}ZRU><<=I-@;<0:84) 5yy^PLB574*'20,1<9/% ~|yivuIUIAIO>4$ &"&5vyiqy~wSF>KPHBH0"$9xlzlQNPQQGAGC3 $%/+V{{xnwvhWYUUX`WOSRI6'% 2wwpo{wq]cZWUV]`\SQ`\A#q~}xywwx}rxyj_a\[ZWX`\QKZ?2 ~}yxs~y|f]XZ`\[WYTQ=0/%@{zn`\[\XSJMA)&)+,% F~~xj`NNI@2)"#%))b~}^CAJ8--%&#'3#I}~qKC71-40-")$QzwY87569PM$*'b{niotH3987Dck5"7sXX|~s~tMA>823959B=& /jqlsj}nb]YPA:40-+9:%!  3xtv|~y{f__YIK;*(,4/$% rpptvvyxa^^[QOC(%+-*',  ~珉wvnmoszzy{jd`^`[XV8+*,,(1$ bpwvpspqrttrTUbbab]\@0.-*)'.-+Jō}rolnqrouPHW\daaTD0/.,*$.//6t‘trloqryvZIHR_b^G400/.%#),.1>wpklnxfY__b\P;100/-$$)')1\rkjklv|n`G>9100,*%#%#"0~utjjpy}nUB7@712('$$"#0d|}xnny}tlYGAE=53*%$#! "-~WhrtwutrYJVXZaUcdK6>HFBFSF& NVTU_tsvvtcT^ahWY_]E@EM8 0hhrppvmgasyb[RQ\fhVL2+0;PQM NVKC# >xtyyvxtor~xg]PHU^fTMFAAD>U=+ #BSF.Wzz{zzwmr~we`]MJ?BIGFNVKGN06-)'5-'%Qz{{zojrcXTPYJKKA69>KYJ3<;,$xw{{zwwo[j`XKNLRX\XMU?=K^fg^Ibv{}|qrp^dhfPSMM]dfYK=>Rbff_M(Kt~}sjiiklo]^UGIM[^K@3K[bfcR/9zo{}W^vwlkgXVODBATS>5-6Q`e`;K_y|mwxtge\NQWILDE?599DeaX0zrppoaXQUQHQNG@>AM`kW<!# ZzkhjdRRLOLNULIIQNMO]M;(>' mohiaXVNPUTPQSIV`ZK\KI, @.jxmniexXVTRKQTWaPHEE\K71(+0:992)LwmfpkofRUTNTds_NNJOVJI=94=@72-#'d|sfXbZngXFJOTntU>DOGC8;CAEF;-C5& 'NY}|ufFY`lbNEJ\iqvgDB@>@6C?5:-#585 4Ez^nt|yu^qbYXPJ_hipqjE?=;1072,:1$'-!#*Ekiqmx}{wtoqukY\posreHBE2001:$300'/-)! +ojhows}xwqpxzpabrsvjoK@=5*,*!(&#'0.& ponmv{{qihdttbT`pwyt^;D:405:&(($#%! Jqsqsuth_XZcT[Vawyvh[BFB99<<%$7HC)2(! EotpusqmbUahltV\tymMWSSL@@AA9496)%"Fqvmbc`W_kivvxzvtpnpq_SFGDDFMF@BB;+(vnif`_YYd`ommvzngh[JPHEDEJMIBAMJ4 ^oed`a__`e\`brsszujgULMJHHFGLJ@4!!"$ 8u}{ztmgffjnmvymw~vsaUM?>:3(!!! Ou||{zymegdhkqwnzzsythK55;,$$) ;ulwz|{xgemljloopsw{xrvpfZ<6,'$*&$! Biov{{xlqqmqibjrrwvwzwnm_G-,++.@="QpprrwunpodYTYnqotvrvplr]:).-,7OV*,vsjiqkloi\GGfx}mquutf]f^>4106Weg<NwrkggluqlRLYdz|}|vr[kgN>94MgniS'fighfghfdiWRXOkumlorjC31;Upo_@FacefihkjcSJ]^Pj}|wtqqGep`C! 9flnhkjhlyuboLHSiytsl]62(*29G]^>"&"O~pttrmnwybQHR`zwxtjZ0,&%+27KN+(' 0fpvwxww}oVIV]t~x{wuk]<+%$)04?FA)# ,>twyyxxz}XIMWrz||wp`NB($%*/89E@& $Zxwyxxyyځz|}YOLMh~auk^LF:2,().+.51 %Wxyyxtuum~lZW\jjUjdXNKH@4.)&#".. *suswyywwqqmnwh`]^deagdjRLLG:;0" #)& xrqxyywwvrpfj[ZZ]__agk`NKKIA?6 #$"#  phpxxwwvpj`^XWX\bbacUPMKMIFE-#"$## '  RnzxwvtwtZa_lZ\YZ[]]\CCOONNKI3&%$"!%$#><4&AP`nͫY4963+&&$2-*+$!&,K5Rl߼m*$%$$!#%!=HJJI2$&/;ƽvtɱW2,&&#%%mڵfmָq35-&!.ؿٺ=:8(,÷x[tL0ʸV574#{򽾽^*'=Q3'$嶌N*)'"J鹷O()$%䴜w6%#! U׷#&$&(̴y-%"! Fݿ0!),*ŴX$#!0JӼJ) !023ɺ0 Kݼ>,(,46=Ҷt&!! B㼷j4)#/46R͙:!! ݻ8+)'/19Mܸq%$޹S%.196=ISɴZ9د\"2@D@HPWʹX1mܳ/+=DDNQQÿB2Av򽸹ݾ)%:ARWXaſSG:쾽༷&1EW^fľ¿߾W-Pw½ľ࿼')Wʾ߿P;xûd>=i~¶B &YȾ ⾱q 2nɼ ༞] Yǽ ¼uF Uû|>(-tü¥h7#:ȿȾm8*&4eӽȿk9*$$&.7_Ѻտn?+((-56eùྫྷiC5-&$02ClԿ齰wIA.%&)04Jº RA3*%'&2:[ֿ򾲂V;23(*'#5o÷򺙇x`JR;1*#Iؼ￾mQB1#&_Ժ迾}]I&A񺵹__B:*E⽴߾}O?G+!O·شkT:3 ¶򾽼tnhl]OC.!+LJQ^`eWF3$VŸ4461Rh~a(VԴb830+"-6 *210*5@MpYihovvx}׾lH).,)"($""$<05371% 5?Ypehknywy|{vz}yӪx/ #&"$#5:;:&+ =7<B6QYCBS{|jgim@1 "*"  )4:9;BJ`MGck~}{rupfnyƶ`) #$ !(1.4+9AGPe~zsz}}|p{}ͳ>" "/43+$$%%&,WTQQmzy|}Ҷz6  $,. $%%&'OGFJ`lt~ΰ|6!!!% "$$%'B>" ?̮A !ڟa+Eīo ܽd$9ݬy&!#"ٳI&=ө;!'()и(?Ԧk2# $),1âa7㩣V*!&*,AԽ.rݨ-"!&'.>Х]tޥD%'.+1:BϸhH/ݙL'363:@EѹoF'Zܞ&"176>A@ɱ5(5d𭬪ܫ!.4AEGMϳD9/q쫩ݨi'7EKRffɱޮG#@_jklӷ଩k !Fjiklٳ୥|B0alklm̱ݯQ20Telklnï߰r5Gfiijnxʷ ⬜|\(Xiinji{͹ ܯmJGjlpvrzʶްx_8 Dmw~}~Ůձe1  $^{ʲ}{ŮS,.lӷȫW-")RũȬU-!%,M~æլY3#! $*+Qsӱ૖U6+$&(5Vƭ᪚a;4%!'*<Ȱ ~B4)"(/JɬjE/() !*\ر䦁m`M:B/'!;̩שׂyvppXA5'OƧ媫|wwueJ;6֯񦠥wwoLL5/"8٪߫ptule?38"Bᰢ؟lpohVC.)~İ򫪨`YhTVJ?5%#򮯯ɯt=;AKLQE9)Kƴm)*+'ATfN KùoDD9   ),%#%$$ &9;B7<(¯<0  ,//('"!65*_4  )(/21/-"  08']9!)+0/220,- G@.,C!!+*1223-%(>?:5tA!,,/+.-,1($*=368bF% )./11-'-'+2"  41$(iG' "(00-'&(-0'* &$!tJI #)*"''$$$   rGD?! !''&)$' #nLG/! %!'++#-'"!$*''sMD$#(,,(./+'%)*-/gH@#$" "#'..-/+'++.*.2\;80 $""+..-+)+-+-))0X89-  "/101.-)$&&*+0zK=:8  +1121/%#+**/0ĬgQLFA' (++IG +/11321',/10\RPRK2LVWWYWA #,0421(,20240èdTPPM<>]ZZYS) #24-* 07<9;9'žiRQG*8`][\^^`\E) /('-8A>=>1õTL) %1O_^]]^``aaW; **$  .9A@@?ºD7 IT]^^_aa\B  ! (2?AA>OQKSY[`a``bcba`UO>6@7 /.*  9=4$ÛWRE( BV^_TQTQV_bccddca_UQPPQNIDNZUI(ȶ{T0 -Z`aa`\SRRV^bdcddcaXRRTY^_^TɸQ Vaa`_UST_`bccdcbaVRRQQSV\[[]`V7ƶM& Hacaa`X[UWabccddba_WRQPPRT[[^YZTDɸM7 H^bba^VVbcca`\XSQQTZ[]]`W%IJnL@ E`baccd`URUWaccbbcbbaa\SSWWZ[Y]bZ1vW0MSY\aa5ƹV<*ceecbccd_RI?AHL\`ccbcbaaU<:BOW[^^ ƾvL2KeecbccdcaXH6$*@L`aabaaC>AIPVZ^V ƻyU: _eddbaacdcb\T.*5GW`ba^`abaaJMPSMVTXXjaS*Eceeccbaaba^SVHCIT_cda`_aa^[WYUQPM? ma_61P_bedccbaa_\UGZYV[acdccabcaa`aa`[ROOFƼj__YFMKWhjhaadccbba_ZLEHZedbccddecefdaaceed_TQH4ƨuh]aa\`[\gnk`]`ccba`_YXHZbbccecddehiifQ. t_V=3/6CIR_aaccb_\NNS]abc chiih`H w[VA2"0U\^ba`aa^WWQRRSV[abccfgh[ " !ĸj[YK;,KWY_^Z`a_^XUQQRRSRSTT\abccabccdef9 " #¾uaYTK*#:>NV\_[[]ZUUOGLVUTSSTVSTZaacbaabacc_%# "3Ĺ]TRI86:CPZZ`a_YVRPGEL`^ZZVTVUT[`cbaabaaccba+%")8HżWSPNHF=ENY_aa`\UQM@CUaa`^[Y]YUZacbaabbcbaB+,PaaſjVTQQNLC@I[`a`aaZQA.G^aa`aa]Z]abaabccb`?*MdeeûbSRPRQNPDG[aaba_YMJZacbaa`^\agdcaacba]F6aeef“gVRRQQKRRXaa`acabaKVaaccaa[]dhdbaaS# Weef˾aSRRQNHRRX`^\`cca^V_abccbaa``abccbbaab^K feeʱkQNPPRPLQRS[Z[\`aa^`bcbcaabaa[P_dbbaa`abaX$ 8eedee˛\NJKLPQRRSTTX]\YZbcabaa`__WC_caa_]`__> WeeďYOKLJKNQRRQPLNPWW^`_`_aa_^^_YKY^`]\[\Y[ZYK BaeeeOJJGMPPRRNJJKNQ`aa_Y__]]^WNV]_[[\YWXWT7/ecee_LJJIG?FRRQNJJMYaa\[^^`^ZZV]ceda_^[VUWY7  SccehQKJJF:2GRRQOLJJKYba^_]^^\[XY^gieeb__]YXWZ* 4acceċhOJJD61JQRRQQMJJOZ_^]``_]ZY_giiedcc``__\IUabccdeežfPLA65DRRPLKLX]^__`aa^Yaiigccdaa`]\accdeeƸoTRI:;HRROPRXZ`_^aabdiigeccabc[!\acceeŀz}n]I@CBAVhqrrzqg\\BPUT_WRYwxce]E9C;9cmqeg`a[GYXk0.)(*NYsx{]RBB@79~~``dZWYZY^t14+((87mR#~onoozyqNPHC8NineWTTa,/.+*2/IQ{S'ylklsqsyrWK@Iz]UTTo[-,./22=>=CSJCI8xs{vooye|~n_Ye|I6:619IE;;?<.-7$z|s}}zsx~ekb]dSI=@D;59<4&#!sx}vxiJippyzquleIE:74063&%vrs}|]D66P|nkf[TH.-162!)7vntwwsc6/D{xieaM>1583)BO|zwqruvvu]Tu}ukhiVE=:7/, 1OR±rprpqvuqquss{xsmnscT>=9*&(-HST}srqpouysz}qs}yutw{tgIABB=15AQTTxrrpqrx|wvt{{rrsyyuoOBGRP@=AJSTqvppmowwz~}utynRVcPEBEKSTmUI=]賜vysllnwyz~}zreYLFC[f^{odA("),Gurhsz}w}undROMY{x`=A'78 $`vx~wx}w}~|xsmobHI_~V2#7zzkww}vuzyxxypLA^J)mio~rv||{{kLGr%)gso[pjty~~sq\ITm$  &VbcRWcqevtpcFBIl$%##&&'!!!.fYXX]qoojr}yy{~xQC=@HR&*($%+*+)$(YrgUZrt|wz{z`btzzy{qB>=:@V**)%%,-,+*%#HgYe||wk_X]jpw|_K;5+898.+2.()++.-&5qxyK:DQfq||eO?.6\JQZ]P\fWu{tp_E+''&"$efwh^_bX2--2ByjVmk`z~~s~pdX1'%%"%zwg``ZXP;0-9E\T_^`dp}oh\4'%$")qtmg|bB@DSidc]Y_e|wnje=+&#!-|wpv|XThxPgꝜsc[Z[dvmjfS:#$#.rx|loto01EhbnlUmj^]\iy~ljdTC,-43q^gfB'$,3T'4Jfs:JgedentjdWQJ>=@g[ZZ5*))**,>:.B>O`bfnjxbQGHYM05obRJB:,)++-++)**-9@S^_botqYCtbKBCA0/RfUGC<4.211.,**+7J\`bmsmg\PfܦaKD@9-"`ztPC?<==53.,**h'-?M^dmwQVP_guWDB?=:#9XDB@CB981.*+,%-7:OgnrHIM_xHCB>;:-nIDFKFDFGC3+)',4;>_nPFESh~MHD<0!*MdLLXWe^\W5+*+6>@75705>E:-)06<@@?BTsrP4%~~ugnSOG2>B<4+'.8:=8:KMbJ/ʳ~vb^\YSJ5IGKA1501/669EQ±vT+nYZ]]UG>M@?>C>5-(137>Teh&upmiZUD>FJDFR4,,.5B>AM^g9 켩{xzoKKRPI:*));DACPc}bG$ocR:@\x{viI51.:>J\WTSTF-7>FPML6)'-9K|rq}~qmr{ddNH>7210AG``WVRUA7D>O^^VA&!""Z~ep}zstm_KA7420.PWh[QRMMI9GFputvW'$! ">H_o`gly}wxcJA543,-i}gMMPHEGHGKwz|z_'*# -,YC{}zzteXXYYcas{trtw[>@:5->pSXQECCNkxv#&%""(&:@er~oovDrt{|qaVUW\Z\a|tspwon[F<4:tpaJDCC[xI$$%%((1215B;6;-~z~vp`\c^YYbpopt{pRegit}|qkXLGQf;+/,'.:70020%$+obc\efb\`lmnvymq}wgkvkjfPVyOJPB:137/+.0*}n\`fo~u^`lnrwps}yU;UZYaqxb[^VP:7.,*&+)xng_[\qlcho}tpgdqjJ6++@i{{~odWURIC9%$'+(!,smg_hgqnz|lX]__\O+%6qzv|mcaTPM>1'+.)!5>rdbxyvz`Z[^^_]JC^lirzgd^VSTE81.,&#'?B{qms~~s[Z[ZZ_^Z[^\\i{sc`\WX\OC21." $:BCqsw~uye\[ZZX]a\beZ\eyra^]_c]R:4551(*4ACCxw{~|xta[[YZ[`c_jj^]cr}wc[[\aa^Y?59A?314;BC{y{zym\zh_ZYWX_lmimh_bejwwojc]]aikiXBEO@757Hc`xgM14,-Oqf^haf`g`he`deimrx|jc`\WYO::LenoE(,epiblV_i_d^]bgkkpu|oia``aZ=5Kg{;![{gTYeqtk[_chhkqtqx}xqjgccbV=9\{!Ut\YHZUl]aejmjlsrmszqnu}}w|qige\ZI;CWFzyiNOAEOZQ_joi\lrnpopkjllk{yvxslhfZP85;W$ovqiRGGFJ[YjptjYTkoj\dgaacefz|wwrnf_@513:B" ""#! Iyn[SDH\k]wrd_bbaLN]baabi|{xnso[521.3F""!$$#";qRGQd{}ytpd`VLGJUZ_dfh{twyzgL<0*"---&#'% !##%$+iZfo{q`b<.7ARZccfo{|urhQ?2%+I;AHJ0%"&''%$dlmv>:'!%Pmojoou{ulibSB:.3Ef}ScilC*++&*%$#"$Vqhiw}sO/!=_xzxyux}zvsknfPI/#+FYqqpp`<;1&##&$#$>|OWhwyxmicP/!5S{yyxvwxxwsoqo^N/ #.Dljro`FH5)##&$#'_hHM[aYgmmkhX?XrzyxvwwxxwwspsoX=)!1XlsaRIZG-$%($%@z~MFFHXgmllrxy{{ywvxwvwvtutriN9#  $HelW\S\WS0))*'2ku@JRF^hhcg]nxvxyyxvwvurrqstoZL7"PR`mkSKLNG($$(5cVEXVLbfeeg\foqswyyvttrqoktulYPG'b_SrjMMHF@/&$-7rKDLKMPZgijgklputtvsuspqqtoeYSI*!kvoogZ]WRdN536BoUPOJHLQdkllpqturrsvvrsttyvm_XUP1#$nonkic_Z_rdFCS`p@Sszm]OIHIP^fnruusyuruuvwwyvofWURC/%mppnwt\apsldVY]Y'(8U}QYXr}nFWUKJJTaentuvv|yuwxxzywxzztjVUPC6$#)(qxvzzrtwtm[KRR5#)D);Rl_/;RQPQXinqttsvtz~}zwyyzyyxn]UPEA<213yvwjSIHH*"!!""$1.%42?MNQXjtvsjUam{w~}~|tiNA9:H>'*sxsXNA;5.$!##$##!""$.3CKLOXkps^ZG5]r~lO<554&%B|gRC950*%(''%#""#,;JMOWjoi\WRJ@RmvviN<63.#Nb]@62011+)%#""h$2=KPWmrp_AE@KSv~u]F6521/-wkG64365.-'%"##$+.?SXjqt]::>Lp}}a96410/$zY;68<86896)#!$*/2LXkom@87CSp~f=:70&"=pP==FEPKJF*#"#+23,+0>DD637DPyrK:7'#|rY`\YYX^A1,&*27.$!'+03325C]{i[@*~zehge^RXC?8(250*#%-/1-/<>u{|~wuhN<&ʞ}iie^NKJGB;+:8;4(*''&+,.7Ar}wxvutp_C"ӭtwlXHHJJD92>33252*$!(),2CQvvxspnTůu^YWTHD629;68A*#$%+514=KwyyzrnjS.̨~qmjcacY<JBHV_fw~||pZK/#ѫ{vvssn\Z[T>K[XZ^cbil`R<ѬuphdWQK9:Z]^`ffgyzh^@.̮~zldWW<./F\^ejfgy|uvykY@, ѰrkT3**.C[hwqhhvnhf~xjO<( аurd72/3I`}uuc_gzU;0& ذurhI1-16Wq\]`og5%  ->;82"#&#   =RV^e_bkliihife+39783((+ AJVhflojikiffe-+,362+11)+ "  9Vkqrmghkhf_^1/')/+!%',0*-    BUmngbeedWTL10!*/& ?428" &Mba^_bdebJF.1%'++ =8<=/ ! -X`]_adec3%&#' 007,(0'   4NTX_`\= +.NK(4 0,(" .JR8 6  7(1*% 7PX?:*  .!&*& )*%'  "GZ_XQ2 5'#+0-#/(   #1R]^ZN+ $3870./12   0EQ^`a^O   !1GAA;/ 21*"  'GMQ[bdde\& %>LPR<#32/)!>DKQT\`bdgd> "7KRPG/!2-& ,5DF>GRZ]adgJ"5OPKM/1.-. '.1#"NWZ^]U#'?RPJ: 0*')"!'+%"ITPSVR%=G9 -*!$'%%3OQPZS>  #&0)  ( !S]]^L( !".&  1   +S`a_T" #24'/(*4( +  8[abbX0  &5AAKTD><1  Zaab^>#    144DKS/:9#  Wa__\0,)  ".:932'" ' Z`a]W4%&   %$"@ F[YUG    C YVRF    !;HQSJ# $  +? 1AR\G13 " &( 6> %FKPbebRUG !**!!   96.="?HPlisDV`5+("!"  5+ ;HTgewjQnn"#%&  ;PXWcmjXjp#   %DBJYnmagdN   !=G4-9djigWC!KBB;,    ((*&%"        #    $'%$ &',-  #$$!/- !,*!#)*+(' "%" #/?:  %,:2::94# ()%%,87AD;/  $'4W`^M:3'+3-)4A@DFEC  $',Dce]K7;14;6/:@;DFFG"  !*-,FDPGLJH9BLMKKA4ACD?2-C5.:@;6?JRK> \cd_QL>@AA@A7AQEJ\`H@>CA@5% egihhe\JDGFC4FSV\`pqdF=-eiih\NMNK3#CUX]XcpgG= hiib\[R4+#A[]UWX[E<4$ fhiihfedbb\F,#$/Vac`_X>74 fegghfeec[:)#  D_]aa_V?;7 edeccecZA9'   L]VY`bVD?I> edccdedc\PE%  3XOS\ZTRM_C ecgidc_^@) =7FKHJ\]V5-$ edccdeedccb_F1 #  /27;WcbW56,%" ededccdccbW948,#! ))&;ZXW\C:0($ededccdccdbWGD92.(JB8689+ ygZOCC9+ 4Xf|{tgfjkjcF9!!!! %4]Žt@9BB?;7%(:ZpwxskfllkjgU>"":j|Ŵk4"18;93$!#?dpwpgSMikjieP($ Gq}ɢ1"'+1$#9Wiz}N6S`igibJ "gw~e'".EQagl2,CKMPZH1  y,6MPe[J)!#!"2* gdb`J) D3AMTyX X,IW`qV s# 2Zsf!  !"-#''%$(7Qt<'$   BFH869753).5KB     8QPQIBFGGC78H@##    "gRNGGEDI[/!#!     YSRRLIINzi8 !!   ATTSSQQVVUcyze1 B¿TTU`gf`zt_G! t¾TT_nrcC4$##!'Y[cU>:,%$##$ {no_1.+%#"#$# ½x;!#$$   |¾zQ#$$#  Nÿ~?"$$#     'ý{}ry}r/#$%#-$  Nȃĺ|{wv`.%'().&    T»wtso_J>*+1,+)+  ZwuvusxgWGLJ@:76-*   s|uijnjy~|gRWM@=8+.6" `Ǣ}ywljimop}bUWQ>A=2(* :ÿȓvqt}uejstv}zSMUP.373"  *̓wptlnsq|ypgluy~~vFNSD/$&+( `koljlnifu||h<8:+*"!)*  ɼWnlkmoU[|zeJ1$1A=3#$ "{ǺGkolnjj_bmaN=22HJ81(! /̼f:bkmtpnzj{{wqaTBC]ND:-$gļ_2[amnm`y|~vvqnj[UhRL@) /͵L5L`SopcwusoonkjgiYA(EĭW?L\cpw|{zsqrrsnom_O.a̳Gbsu|}~urpqptymI@6 $ͼúD^urposr=/,)7ɶQ~~vturny}l<*+-"3Ŷn|{zuxqhfg]>-+$%ɼz}g_VU]WL2&*ɇ|lZJEUXM:XȴpmUM?07G<0 EDZ̤ev||upX6>,   Nȹ׾[㈉s`kiZM$$  MʿɼH{q^82[]B#"!"$# 9ξ©:hqro,-Ob>*!## *JT,={Ƽ)EZupl~~x>+7Q;)!!## "  3evÿ%((5>0&(#"$    +5m)@J]~qiv:299;73,"-7*-$  (M&25;E`x{QFECA:>7%NG5*  ,AW}19KLA8+"31+2=?!  '/,7@AT]u%-/Snsm^X\YNWXJDMJHD./A,  '8=EVIBOQV*3446/ #t9=-026Sr~pgkq{|xjXTRE;;40 2ķd3 ?|#56=j}y~{|z}}{fWTK<@4 !kĸz'  0`*>C>l~|}~tbPG;;1 $G‡  /@U !:MQ}ytfO*291 Tżr *E/CTl|yqbVG72(  gb#4ݮbRH?66."*FQdgb]SRUVUO8.  *Kf_3-5420, /HZ_`\VRVVUURD1  .TcmV*',/.)2PZ`ZRB>TUUTQ@  9[dr'"'.FTbd?,CMTRTN;  R_esU &7@NSV(#6<>@H:'   afht$+>@QI;!(!   Rgo0BBJH)   "Lp02PNM;    6l)4=CapgF   H#:FM\tF     `(H\rT     $ ,A]t0     689-+-,+) %+ekT-  5hCCA@EECObpbQ'  5uCCDMSRMbkru]K9  ^yCCLrkX[mq~vsO6*  mxGIPnvkktz|uE2.#   dy㯭XZ}wxsruvM(%"  k~Ⱚz~srsur`/     fxtqjrlb@     ?~umhnlme3    o}ôbd[amd\% $  ?t̶wu|rfidc__M$ !$   Dvssnmlkg_]\YL;2!"'#"!"   Iζsqurmf_^_^\`RF8<;3/,+$"  ^Ʋoprmd]TUXUaecRBF>31-"%,    Nշvebgmnq`VTTWXYdgNDFA231( "    .úzgf_Z]hnpe^QU]]^dbC=D@%),)  "`Z]VX\ZdjbZRV^aee_8>C6&#   PUXVUVXTQinsr^dgfdS0-.""!"  tոFWVVWYEIenjiibQ;((41(   h9UXVXUTLOsylljfWM>1((9;-'   %xqR.NUW]ZXbUd}omlib_[NC56K>6.$     UrL'INWWMadv~{qie__[WUIDSA=4! &l<+=LBYZO_j|qg^\XXVURTG4  7³qF2=IOY_ccf{pib\Z[[XWL?%  Q¼m8N\^cfdegpnoih][ZZY]bW;3+  6Kiunhhnoo~shg^[ZY\fg[1&$" ,Ahuxs~yxee^]^[XaeW0"#$  )̳ǽYwzccb^`[SRRJ2$#  uϹȾdojjeRLEDJF=)  "Ľn~}tmkicWH;7DG=/   Gͼ̹Zqpv}pkiifXD>3&-90'  7rؼνQlmnqtq{g^cd^ZG,1#   >}ɫyIjlmmopw\LVTH=   B˸s:ckklkmnn[K-(IK5  0~sy.Shlkikk[[Y#$@N1!  ">}rE$1dqx 7H^ZWfeeia2#,A0!   )Q` 0?K[kd`_2 +1&    "+Y 3;Kf\T_/(..0-(# $,!$    >(+07MadA8754.2, ?9+"  #4Eh'.1DUZSEFB8.+<=!G;"  -6?I]o%-6`jp]NMFA<1<=4-#)'"(12    &#,34CK_%&BXnvq\WKGJG>FF;6>;96%&4#   -17E:4?@D"(0;gx|t`]MLKZVLNC>>:70/)+    &82)*,&   bupl-1$'(+C\ohkfZSUZcd`UFBB7//)'    *R( 3f *,1TmlebgecdiaddcREC<03*     ^e 'Lj !262Wsoqpsnrqwfdef]O@900'  :үt &3D .=Al}|x|{rv}wpiea]Q?!(.'   F` !7&5CWq{z|{}v{nlcaZNE8,(   UR  *dQ%  @wrurmkm]" iy|tppmP2f|{z~|w:3oyz}~|x1i~}|x1 *qzs3>_vxw|~{|r2 @dimmlvyutr Heijlmllqtrr &%cgimqprpqqrr ">D70giimotortsrr )=COE. Vnkjnoqqrtsrq .EUMXR33dxrqtwsqssrr "30E[]^Y= C`yx{xz|utsrr /EECSZ`QBjyrqvy}|trrn [WPPRZY3  Brsrqotwvpnnc=SDIOYJ35Xiknpkjjlomhb(-&0NB- ;`hoqmiig`[ 7 !4>1 :`kmljiige`PQ&%+1esmjiiecWFT!?9>+&).$Arvsmjjh^MQ['IMTOGD<2**&[vvuqllpokh_IDN&B[NX]OOKE=) /ewvtromoqi`MDAM1IWZ[ZM-?LH/  \suvvsqnkij]L>CGGQRV[XR$(<>$ &bsqtutrmlnlXLFETGSUV\^Q&^qprtusljmfZLAHVHRWZR8  (drtutrunjkfYJAJ_DIRW=  ";>EBLiZ]<   $E0w{xvstz}vQ=;?TVhknmn #."9H?9y{zzymP@>Irxy027:=FB5=JI$y~~}|w\G@AQ} 6==BCJICJJGEW~xio #'$5GI> Y}}|rG?F^~3f  >F'"h|{uW4>?Q|aS 26rw}ya- +@Nj~v\H  >hvb4&#H`hy}xi:G]>- Bcturp\J\e(.cptsribkj) Vltzw~|vo))R\a]wsvr,(S6Iyz/ .`z /7n //}"( \ LikS< e)jnnmU   ]nng'   Hjnnk  "! .9BfhhmnneûgHgtxmP!  !lzxvzzµkF2.PwUD-:cnsxvĭeM22OM #JnɿnYR64r}u{~c HtħrX`RZRviq'   .oǧub\`vyalp/   0WǦʫbiwdU|#  0`˵̾|ºyQSE *Mdźµf[fvb  (oxźðzabgrzo5   =}o[tŵûîxupjnrnq\1  .peUZx}ĴíävuvwwumM,  ,2OZvwĺÜzuuv{zsi1     5DrĽ\G÷vuuv|vgI!      %Y}ZDkƻxvuu{|Z-!      :LyDXǮ{yvsvk      iŲz~vkB     ľm_L        {sV(         µkuĠ_#       ãpXsĝn6     ʽmk|{p0         ȻǺzp&        ľF       E          ٿl:      ¬鿛m9       ǽn￟j(     (   ųe    !   ǻ↑R          ʷM     |o6        įI"        Ůz~L#         ǹrw@     % oȹ~L          C}IJ~L    '$ 3qŻY   " +(  MYƽ}Rc      ªy10 +5      Žg<  /S6        ª}>  GJ6    !  ı{w|LL&  $#  -++      Ĵ{uz   ,XYJ8    žz}b    2SGP9@   % ž|tP   2&   $#+)'   ¨G %"#gc   #   »\)&)"H}]!!("" # !"$  ¿eY5:.*E-0Dbb%   &" ľyxG ,*,.?*75cvI?6"AcvgD>20)2{dV; *'+&!+i}srmǚzmeQ0-Qxi>;TIyð-/J.1-8'oӀ̟ou~s@FRU;&  $-$RwOmRzkIV·aO:&+$)&ZälkUHmȽjM% 7ʽŽpbA]˺|?%"& XŀK_fxh~ƼsU,(B'EOJ_zºx[+##޵zz}T9S_~zyngih`W@   Vb`_bbpztxwpy~wxwV8(%@{zxogl`D6#  .PX\a_lvrwqf}ypx}}rQ=((?|urrspj>   ;Xoixytpsi}ioxYGB+*_f^cfpwtO   :]svvsvmm{uks^GMBHBzr^T[oum    %ZityytuvspvkmbOIMabNVis[&  &Fhx}xmpkmOTa}tPDesum  'Mu~{ovwrjerbABjutg7   !>Rty~}|{swnRIR_msO     Y|{qasfrbNNS[bhY*   1fxsZI^ml`^ZUX[XZJ'     %[QDH`ei^^_g`_]W=#    #(?H__wkb^^bhb\T'     *7[jJ9mu_^^_ci_R:    GehH7Xg`_^^bdH$      .=c7Gzlca_\_U        Tsogbe_V5       mi~qgWL<       fcumg\E       pU^qjhfM     ZG]mhfgX+         XVemkjcZ&        墥tmmkbZ          mkjmi8          nkmmj7     mlmmkW.      ux欃nnpmiW.     Yj﬈nnptV      ḳ|nmr|R     ﬔzqqpyyB        oouuyr>          kdtzuxZ+       ihksx|v}p;       ibes{yxzo>       |ÿ\_lwvwxm3       Zpfuwxyyk=        6gpowyyf=    (]ynsz|zxnG    "! >H~qms}}|gBP       xuommnxtb''  "+      ŹĸvplpljfS0  %B+       빿xxtrkfjd2 8;+        ¾xwqhc`me=>  $#"    yvnc^bsw      $GG;-     }vnkbdtsO   (B9@.3    yspjco`lB   (  "    ɰustpmzzw: UQ     벴rmolJ!!;49+&  >ppY-  F³~yvyqmp[7 &/%B^CF;aCIG""/(  -,$YDE'  v¦|tpqqpf@6*.('A,0ElVL*.=E# %HD/  ^{qgn[-L("$77//.*$p./PD '>1! #%2",*Pŭuf{_:2+5O_R71(&!(gRE/""" W|ne]\XyƷog~|bXQA&$AahkS1/C;dyu$%<%(#-  \tu{ŏƼZ^qxofut\38Bljsw}}sE/$D|òf?XpgBctpV:EvkN?.#! IwWVlD9XqsrrU= -[}hgO4Kt{f2 I  365 'pxk@$ )")]a^=    +9( #-uwb1%)(,-%J__@   &*.t|k6(++)+"AP[[?    (,r|q6--+PdorjF* nO57CcgmjYESYkrsiB %mM@?J`hmkCH[bksrj4%lXMIUZde3Tanrni*$l^[Z^aM(MgnljS#^aa[`]' GhtpZ3,S_b_\\K% /gsqC&NSdaaZ[V"2ammK &HS]e_UW@ :[fol`4 )W`bd\G!'eorr\) *T^`^gPLjrrl/ )Z]^kj4Qjrqrrl+ )UX^y^) Mmrrqre%(QVisZ&((9_dinqrZ)TYUF74KYabccfk`,)V\[TJV`bccba( (dlbJ>Kbcca_")psh?_ccba& )os]4Wdcca+ & )unL7*7TedcdcbU ")w{s["]njhfeea< )v|xU0]rpiheeZ# )zy|pdpzzocaR**~||}xlE *nz|vnD)"ewrV,  *AzsX#  )d}|vkI( + qzm[:.  )C{~wo^E# ),Vs|qpopg>   ,wzvm]J7  -wqi;.|~skH  ,x||rkO +:$*tvvqhm_ =?1*nwxplkm`1  9F6nttpkjjg7 6:%" lptnigf[H ",8  fkphffa-10; -finnll_6&40mllikla21 t|yS=3I") zF%( ''(   n +$  '[    67 VF !# /I(-:`dD(!+-2P?   Hcv" #1(94jF. 7C;0"Md~.  )$!&4J,&@M5 .Fde\E)/HS_l!  9BQsgS9-)@A)F>$  ?mlmnufD/KK:dR~~j4  18L: Unummotvjjq~u '' +ATituuyo[><;;(2#  )fusmlkrvpm} ..$Orvutuy}hX=25--  5iqonpqtunm|}ytz{pm]XWMHB>=/'""! "}|yv}kNQMODABIaA-#""r~vnt}uTPOORQc`aq^5(#$! ?~zoqv|VQTRQRpifI1)&(#!j¤}|zvvyweSUSQRQUmhUQ6-'&&"1Š~zyzz|xsrugldSONK`?DE3-'%" *wÇ~{yxusvst{tvx?365/ Rzxnykf{ZMAETeHEEAA37>9&%*nt{p|wfftۣ\=;==BEBACB967?6/Uxztrqgr{t^<5>A;?=?E7324;9*tsmlmlgo{y~r^Q:NIBA;7:..02=5*]Y`kv}pZiHDIGGF3/,)((+267G8Uj|~wYQFHLWMH.+)'&&)084*k!hzykBA<@W9.'')1:8' I.|VFA@@CQ@/)(/::1%]IvvxwaB<>@AVR/'.15:1+tFz}tmyZF??FX\a5%''-2)0l,t{rowxYJBK^ER<$%(/03* L3jtooxpFFBEEZK1&29;<4 D Xy|{xznKK~V>76&,65>B:,*5  'Bz~swspe8Z|d<&'353CL=6@   "B\bjzstXGsqnWF3/2*(5QMK\   Gi{{dWhC4523,&'+:RZh   >m|L5931015*((.HVd    6yvTD9301107;-(()G::;-!@     +3%&">    ,t    L    W   G   T      W   2a    "/$  ?    !(16>=* 9   $$0B]G.*$ <     !5\WYNH( a     'MS^rx]  7    ")# %/Eli6 P!#%/ (#!)?7&#.-;ccSC, *+#()Žr@!( &).&1&{¤/"'%!-60&##e&!(#*K:$!1[7&! .IG !"!,w¼3%,'$#$ %&!.%##!4¼jOD( #)6-,,6"  pæg[T8J6! *45:-#$%# #]÷ys^C<105/"!")'   @ȧdZbI* ""&+* (qwrsh?$%'+%/ʸ~{{xwmK&(+.*!ȧuvi:'%!'1#%̽sT;0*"*z}u~mmkjggjgea]bcZouiXJFF>:521%lphonigheda^emlwsV>A>?645;N4$arnmqlige^X]dnsr]C@??AAOMN[K+ 3pujiklleaYZ_ludE@CAAZpiTQ:'! X~vgrgdiijhcb^^a`QCDC@BAEWSDA+$(xoleibabbdjifg`\[]SVPC?>47CQ:7844),2."[]cZd`RR]y}SzpfJ1/11575455.,,2+&E`b]\ZS[csxy]K0+2402127-)(*0.!^\WVWVSYdcfi||k\LA.>;540,.%%&(1+!MGLU_dZiorqirm}~vhHU:6:998(&$! #(+,9~-DUdlfqxyu~~}s`GA89:%#!!&-*"X0A`p|}|q}}oWOZJ5k  )Vv{l\YXatplZ89577H<')./0*7w Gpmadc`bvrX<t    =52-23DY]`PDA@8C    *)%)i   *?DF9528..0$3t   "( 2w        $^      ?        G       :       D      G      (N   & 3u    '+21"  .   &4J9%"  0    *JFH?:  P    =BK[aJ ,     2 !&7WT+ D &  !2, %%0QPB5# !#  sv~l\3   !%'gsj& %+&R !¸JAA42:<+!sо縳湍lA>304(7½缷ƧfZ;5)+)&˽󼽹еzYB=%0. コĶe49;0308甆J-0HS* xauJ19F* "<Ƶw912A ėA (m_G/#6E h  ¿~WF=/+ *'Xʐ( 4P@8$+/ %aǹY)}»Q?5& # QȾm>¸eJ#"# Tnp¾p5! 4ȸviķ.!#kζNPǹB! - EǹgNFtŧo* !"KֵZPA`̴j5  "".[BI=;%9ɽi`Z]TM6Qk{t *-2/00-$2̲󤣡߭b "#;VcJ 1ϱᬫn&!%4JgR) gĭ笫h&%9:Ni\( Cں笫l7208A]e6 a߸⥣G0,3;LJ   8ǫР~V/(43<3 %vۻݬxM@48782  8۽ݯN3236885" WtŲꦫᮯB43.357:! 4ĭ¤j;44*)//"  f礝宥vW41)&*  -ǰ穣쮭SH0+!#!  ۻ񮬭¡fG40&%  yĮ逸S*./&)& 0ȭ髬<$':B!   rƮeOoȭb;'.8!    p0t꯮d.'(4     rͲ5 \O9&+7    rӶZ ɰhE81%""  H۹} )ɰl@3-#%  OҶ|I  hʰA3*   BͷvY2mﰥQ;    EͮnXZ~찫[*   +m⸤raTu㲴q%  Y?@jʳo4$9ඥT?8^x񰱳Y! =ɡuH@4MmyɰY+ %اI50=\xɮv4  gɨK106Pnzʱ+   Bѿd422=e{󨧡w'   Hο[=<778m|~ɩk4  MȭT>;;.$Vy{ud;# !nF<83+$Lr~ɬ}qlB"# !eе81.+)%:h񫝒yyT""# ]Ӽ=-+,+(1i謫zprW$(!Yո{1-,,**&[ypxA$0,# rѹ:./-)*,Eϭ|S !'-("fѽe00/**.xƩa0 "+#4)#! =ΰr<41($%;oƫv4 *;6/$" 's׶M?:63$WSūw|vx\ /H=+*"  {ԺZB@<41Ka欦rlvn^ 4<45+,  5ǫP>E75?J[g櫥yonxra ';=:88-   %ɩN8HB278C]n|vqnpyye% /62:1/  /ɹxTMHJC=+@Udq~tpo{yv^ !$(&&$  )lUVVROIRSSTROSVTTV[^]_aababeiifeddba_bd` LabceegiYYXUNKSTTSYXUTTXZ`aa[V_gfeedda`X]e^!^acdeegƶcXWVTNMRSSTXYUTUTUVW]aab^]cbbca`[VYbGWbcdeeƵy\YYXQKPRRWZ\VTTV^a^UTVa\__`_[UY[_M(acee̽vXWYWRMRRXZVTTVSLNRRUWW_]\`]UTU\@  Nceifeʒ_YZZSQRR\XUTTND@CRRT\]_]_a_TSRP> !Ufihf˷{[[]ZRR[_VTTC:5@RSW^aabccaYUVTD ;Wdeg˶~^\_XRRSRR[a]XTTSTR<7/=W[\cce`Z\]C Iegƌk^^_[RRSX_a_^^YSSPF96.Nbabdedccdea_\( Ugƻb]]^SHVVSSY]``^\`WSRNB?DG^hgccddedcefdaG0dƴ_]]TJ^YZV^a`[`]`]SPLBINQ^ifccdedeeVLƑg]][Ra_^Z`a_X[_a\RNKOLKR]edccdceddef{pB5z][\]][V`a``a`TS[\VMNPROX\ZbccbcbccdbbQ-d][\]TMTaa_^]VSSZRPMPPRT[a[acaaba\XV[lZ  YcZZYMBHRYZWSJINKPPQPRP\bbaabb`_aa^XSRQ<3*!kŷdVO" OUVTJ6.DBMSORJQ`deedccb`bb`WQUTJ;MƯbP4&SUN>.'*4>ZYZNM^eededbXT]`oO(zǹl&KUQC0*#*GTTQJF\eegca\T,)gs#@SUM3+./ENPGI9WeefhghhiigbZEŷx0CQ_R0671&3=EOKCM_eegiilptsX LW]rVP!""'27<>??G`eegimtyzn7J[]OZX $18<:AIWeedhnu~|SD[]űZZY3$/48;?JN[eecbdkw~p!Q_•Z__B )18=JQYaeecbbjusO, Jdģa_bP !'/;Y_ceedbaa[XP!ZcgbaB +08Q`ceecbaa]Q7"Qaca_&%66M_cdeecbacH$d^^A%,7V`acceecb__O cpZ]cB !),Nabccaba_K:<%Kd|ZRS\4 !)'/>^ccabccba_X7% 7]hvVQXa*',.4D^ccba^\P) 01@doxkUZ`G'113=Ubcbaab^[ZM"6;E( ?dp\PVXN 0,/9Saa\QSL;2PG98Rcp¼hQZ_W4-4CWaa_E:-,'0,#:OZ^þsWY\^2 //4SSQYiiZ=775Rzlnt5'ºrH:./8y}igzs1!_;-''J|habjzx2 ٿsN4$&0cvifdeoC_>/+.JmzwFŵL261;`z7 ȱs@:46T~p/'& ! ànB9:[r啓_3,($  Ƕ`RLUUw^MUC'$ ]ROQevr`+%"qWSTVb~tmC2*ߜfVTOTs{gE1ÿdPMAAj𓕜}s[3 Ž{PNB89Wjww{~~~xiN#ƚXIFNAASZgiqv}{}ycytaM) SO\a]_aglkjnbU9"}`efbfiklicf{}|f;&!!kb^_hijh^LJevvwi.# ŝmeedhih`N;7:ENP1" şHBA<:DQ^U/ ƯI>@ACEQR-   iAFHGII6  oJIIGH:  # ɆKJHF@!   !2( ˓WOKG3 #0)% ̐h]\H) *'Oxu^TRPQYk{6ޱtL2&#%;Wvxhirib`x|:Ϯk<(,'/Mixzrfbo~~|u, ܱ]4.)+Cel~ysx{uvz\&ﰱX5./I\n~|zsu}M)$  հLB=CD_wzv{|L=C5دuKA?@Qgsx|}p_[L"\FBCENlwy|pe]W5("ݭREC?C\jwx~|{wrkgcR7'ﮯQ@>44Uinrrz|uqjpmmd\I) ௱g@>4-.FU__cpgfheiehme`T?௱F;8?54BHRTZ_iecdaPa]N>"ళB@IMJLNRVUUhiggjXND.ۮgMQQORTUVTOQdghddR/ݰVNKLTTUSK=;P_h__T%ೇWQQPSTTM?0EPWleX;󰱰nTOPGPK<-6FUnsjL-ܰ^RO>@D<20Airo]:zVNC8<<6/6U_M/$ oE:52,011;C("+ 貧Y562/-/7?@' 򲴍9540/6AKD%   񲵛;23457@B$   岵V4899::+  ﲱZ;;:99.  粱q<;983 (  泶~F?;9(   &! 涹yTKJ:   05.  ﰯ뾁_^X:  584+߼heeZ- )30,䱳~lhd`O0"&'$rme^R>) ! 𲴶~zyqa`G)   ⴳ{zwigcM   筒|{ulggaD  󲴴魖|tkigdX  貳㰮zvmhgaW  zvgd_HC   𪱱ܯ}rhVF=)  氦c]L 񳲲뭞j(  ( igiiheedccdedeefhiihfhfd6 %KRSN: &/7206;:hgiigeedccdeefhigeedgY! Ei ")/3.9>CE70.1641,-,*&(  )'2)=BTSP5DK/`fWLm'$"#')17@<3.0<:/#!!!*%2BUWOQdzwxm}|}&" !!&-:B795TQ<$)'&=u  (,BS@23"1H¾'8E]N84& ,G¿+47:A*( dv &59;?>*  %+7>?<1'$R".125+58?2;e !0,*/ !@k.9=<==O-6<==>m 6;;<==E9;;DFU5;=R`0;EZm!3VOK#]n%- 6 R%2?^nqy}~~tyxog]VS==.+   R7#*Blt{{}}zbh`\VVRRA<0.*   x;"/csz}xpj[WWQSXTG<-,.#!@QLIW3E`h]$'-/&& ?gz{|wTGSVUTQKLEG?,(+(!G`^djllp}宲hT5OF>MM6/ :F\vgo[,;RSOJHJ=9/(& #Ra[cemmlryyzbWOBH%656CF?6/DOKCBE:/+( +?UQS`id]ar~gJQ!*,)-/0/17?;6;@0+)$$8AE?FUGPJIKXH>5Rk|"",-+,.01/)+.'54))& )88:.67--:EK,8".6EY"&&.--,36*(*&'(-+''%#)/0#"+(.=*,5*+C]w',+-078&&%''&)''&#  (+; !+127gUy!%)%-257,&%'+*'#$$!   (!15CB@*7<&MRF=Xqj!',40)%&0/&!(4DG?ARc`hyaXefx|leh{$.5,-*CA0!1`kr|xxwy #5C4(0I- -1-* #9m #*,.4"  Qb  +-/21" 𶷶 ",2212 _㼻 **.023 G췻 "(,.20'C岵Լ %'(+"*-3(/T⾿ &#!&0OVl  $!!Ig  % 3uᶵ *$4@\}򶵵¾&0/&9Pk#!"+118j𾿿 -1//123X$.1011?{$,0112[뾿+//0117보.//68Do+/1BMq뼻'/7HW紵湺(Es찱¿A񲳰𼻼<򱲱亸L渶[ᄐ~# + Az¿۱  ;UacfhgglmH  *K`eehkgeef"    ;`deedkmgeZ0  :beedkokfJ*  3ZdeedhnokbE&'! %*?AXfjic\>+052-,#*=9HCPQXVA78?C=+!/ AZaaba_`\_ruvo.S`bchny}~~-^adins) [~z}{{zxvvz||z}|lUlegjq{~}{{xz|rJDe{|~yxy}zzy{j5Ib_dkw}~|~~z\Ag{vvyyxtwL E[\ahsyx ~}thn}y~{tqsvohbc9X[]dgnsw ~xs釁|z|}xsvthRB*N[Z^egikw~~~zx|w|zx|}omwuj_oT C^\`ceeivzvz}|}~~|z{{|}uttxw}h_f}tZBJHoebcdeikrqtwz|}~~zxy}zrqqxt`]YXmtoWAbvpopnnlnnquwy|}{zz~zy~zqsq{Z==XrxinR %fwuvwutsutxvyyzz|~~}ywy}|}|o{jG([[bq[  cwuvvxyzz{zzy{}|zxxxoA9?"0.  Jqsuvwxxz|{yxz|~}~zxx􏫺|J7   Wnprvwwxyzz{|yyz~}|{yx}B ! X!  /dlnsuvxxzz|{{{z|~{zzF 5E^no: '`kmpuuwyzz~|~}}~{y|¸Y1!t{~{o& 0djlpstvxz~}~}|iiɢ`=0, B˶xwI1/&! udA211* * $#(̀ū[FJ6A5+(0,+! 6̻z[PUQA+/310(2@iU{z&  (˻}`8,'-DFbxv2!aʰ|R<3,%$8T/\*&6˼vdF1  «~C- Aƶ^6 sĿZ=  Fͭu^F  PxK ]úsJ {ɼg0  IưyR>  +ͷpYR> ]Ǩr^_Y/ MȩwzjdQ<$ ƥm^TK;5)  рçpcZG560  ŨtsiO3-$ &š}lX"=Ĝx[" 'Ǧe)!!!gžǤA#( ! %ƺɡ*  5ĴĄu}J')\Șew{J$!(w©ʍt{zN1  féΫ|~{52 ;Źǰ~{~o*']żƱ~m90 -.ru||~~}}wr`OKQ[¡zxrx~~|~ @`NOhŰ}gkv{h 5c`EOǻVKQezE  NQWIYɺ²ZMKMUq~t &aQNUNȸĹuSNQTYff` ?TzfTV_bghonmlmhlV  +OL7?ý}hEAF;G}¿湧iH><=CZfsuppqrr^NA?D>}ÿ涤ò_B>@CGQQqsustvvM  0]WOf徴ɵaE?ELFGQnqvutvv06JUmtE?HMCGXlswuu+3J]ǼF>DAHI]piuvuwrA2;Vıoworussuv|x0 5jxz|zwvxzQ[p{z}|zx|~e&h}~|~|x~~{~o> +j|qt{y}~xy}Y0Gwnouvv}~}t~uO  1w}ovy{~~|y|~{xmC Znrxzy~}wyy}{Z&!dlptwx}~~{|xH 3tkmquw~|{{{]+" j}kiqy}~|z|~|g>**# X~y{pkqv~z~~z{}{pQ-*($ U`jrorq|}zywukaP3-+*# 3_qtooly|}}~~{stmfXRB51*+% 9kzwmknrwwx}vtdUUPD>76'"  (n|xxwqvv{~yiWKSRD<7>4 Qtzzuuvv~}v\UJSRJ?7A;&" Hux|vvwz~pFLSVWSEfo}wxzy{r7988>CC0$  Oik|y|t:+11*''!  $bij{}q2&(+ '\ik|k6()% _jnysu|n8,##&=ortzrrv}|wn. &''+  `yzzxsnksi{vvyytm'#-*  Kkw{{vmcZUmwxzts9 $! avyzum`NBFo~}|r4 1xwtoW4'-avz|~w/    3vwslM4.8Yvo    ^wse?0*(Ut"  Ciuyh:+ Oz   Pek~j:#NB  IejkvnV7&A}~qH  SZakuxn\9 &UgmipH  S_diz{tc8$IU]eZ>   =fkp|yh6"HOTVP: Rrx}wmE6CEJJL>    #pqZ^LR=HK    $xwX_gKMJ!  &sT`jV.   .]o_sqU;  :|~vonme $@󃁁}z}{1 3Æioiiiii   iiiiiiKd%2,Selection Mask |,ڜ,48<@DHLPTX\`dhlptx|ۀۄۈیې۔ۘۜ۠ۤۨ۬۰۴۸ۼ      Kd%2merkaartor-0.18.1/Icons/Places/000077500000000000000000000000001177067165300162475ustar00rootroot00000000000000merkaartor-0.18.1/Icons/Places/place_hamlet.png000066400000000000000000000004031177067165300213700ustar00rootroot00000000000000PNG  IHDRHsBIT|d pHYs : :dJtEXtSoftwarewww.inkscape.org<IDATcfUY$#ˇK-(J,}!'Ed0Ȉabd \''/ٶ0+zWq=:|o}+nIENDB`merkaartor-0.18.1/Icons/Places/place_town.png000066400000000000000000000003471177067165300211140ustar00rootroot00000000000000PNG  IHDR sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<dIDAT1 @Ef V.€r*uX$E@x˃v_(B4 f 2|3`?5Q~{J UBfH U%=ypx`IENDB`merkaartor-0.18.1/Icons/Places/place_village.png000066400000000000000000000005111177067165300215410ustar00rootroot00000000000000PNG  IHDR sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATc? 06.xd;ηY?šEL@wZJ=Ο ]|՚Y_[#?Q?,"DE2}fi{?)vL;E?~-"GDT |`f$&K_l~v+IENDB`merkaartor-0.18.1/Icons/Tiles/000077500000000000000000000000001177067165300161205ustar00rootroot00000000000000merkaartor-0.18.1/Icons/Tiles/000.png000066400000000000000000000262051177067165300171320ustar00rootroot00000000000000PNG  IHDRkXTPLTEжжзззѸииѹййѸѹѹҺкѻлѺѻѻѺҺһһҼммѽѼҼҼӽҽҽӾҾӿҼӽҽӾҾӾӿӿӾԾԿԿbKGDz pHYsHHFk>)6IDATx}}`Ǖ. nD+tknԫP>#DVp頶F)[a/DUS5e)mdt 8uc0eѦZN#+$2G$$:I< z_j]\m$/myz& 8D 9t7uDhHQt WvZ)A\ht_kp=F$ceN rXDzի?]3bLsF|I>*(J*g-EjnUncdV/2,0OO⫸hѐBߪJH0[YdZb_{Q$SӂhzR='r (+G2FZ4&Oq M"`'!4O("+BfCo8Jҏ&8yb)"or3K [2۔bnqmfP;'&2_}7& l3AS3t m5@DI[UEP9,mB6Mnb~2t5 ȤpBxNGCne,Xkxz xVQ3]gV@\@,5edy mz#uwC g1 w80J"LEcKXwsݨW?hV`<цDKGWJC`{R~9Ch螩u"_^ g#1&8#`'rڽR~tx *%\f>w%Va<@&ߍ\"h*652#ɌˉCn=LMٸ~d'kĝ R#wGUTXTͭ?1 <-8LQbiJJ {-:N1pB1?WdaMǟ\1Db _58SJPNJP:w*U)]_IZw3 r )π?KQB/'K0 &u^@ =Z7-NF9YcJCId0Q6 vN9 .[|h*C L~5243ʯbp)`n.2E.~b%'"eGѴo>[vﲖ0TQ-0x4X|#0mtN"#+6E׼> PRv_Wj+ 24 )Ia_=3 cfRez΀dyތŔ PgSv/ ;2xUg3iF)H4jvIhgD/TGYYzߤ-=O-lْ~xP.UzOɔ;q ٭O  >=̣XX͂5B1lg+׃M~ W"xY(iI.5fIsM&D0CQvDs+}[lC1y2]Iz̶VKi[0z A?f`{%{y|2qt;Lc ^EϺEЁ6kr%=X U]>x[a Z/0T@@w鏯Х/D.ٱ\:*3wb펈Bm Np-pv @30J Zi4%ẖL֑bPǂb.Ew;U2O}d2lD`ڣi7;e9H*X cYTR@p6Fi'dN%k$r <7v%矕9xqkqvyrrQGqJsԴC`0#JbHe@)|7kQw&P\+] uXj „6@a7PU\wfu}[Q%Rln= +Qʛp ϩkUtDS-`u_SN:IufZD>n=/5lisVIN`Ϋ.kvN׋/1[a9UFԷ`p(t &݂e)` 8-5ipOE')Ł텑Ww,|uϖ/Fq^VBz=[$~i{*x#5/8ҏ VЄFic,e&#cZY^ ~DVzsjTOkeMvYKeNu}ãw@_HGe,"Q ROU|\-'jQ. ]Gy=.nEGpqk6)UعR.ǘf#e [iu>Iw#1l#-ڟ/&n%±xbdsZrt)wl0̸{۝܅ e&kxPDo= sG䳥ђ#<Ʉ@*Kr`gu至eӾ]'[)$+-J{%Na ڟ:)wtɽvMw8 )ZX Jns&`iś"N!Մ R.~y2q-.tͪ4ˏz;DΎ!0`CُJ"nӦ/v)0f}@`{/0Y|KK6gKZe/%~yH- ]L/K oV&v6Q) c,@%grl1R ڙP@.fQH94=lZݚqŠ`DGׯJb7tϻ)Kk"ۖ^j׻m`xXd8匘 ãf7 'HB^7fήΡ8 q,gOr^dIRm+''oYR?,P6u~+\Wn>tyIGK/vy︭_K{kc\jRZ+1ttd>T)9 ??7{*s_?$k0زlR@mx<^-Y-TY%I9i03,3TaS o>{L:ZpH<AׄJxcΒY[r" `ҍ* xOwy!r98o:Ϥa)28;d\a( $ ΤnGTtio*?9^DSOr#p$<:dvxo|밌+r`{VP t{|V/KTeUF1l  ˉV&t3aӢ>-zИdg~ޕul|35c%^LU,羼$\[XX tq%VP*3̲b"* U׹`=p哩e#RvH$qHމKv_/Җ̱ J Üِ:UimБ>p H,u%ox…9xv9P>fK{+R~gYU\JuhlT4PA+ڥfrh=kvd2֢NzQ8S^Q=8|$lJ{tz)b)*Q\jϤeZL3c86-N9E?,ru`A]@ XANG+_] xλ{rC}oa%8UfW bCVt{TἽ9 Jm19m-T%O"̄c__>(![H?2ًٗ!l>j=&?]Ga;EşG/'PX|ex :7kI_h”9ţ6zS-c'OD,`yͳhN~\J*,o*Tx\t?sܺ˅"@YG=a* G]8K!xny᧪ Tk~s@"a3Ք'MPUGH:nbT@7dK^v{8GBlU`糪 $'1{Ydvky_BGC$Ǻ涴+K@h n%"=Z7?Z~f^Ӊ x!8]|\K?fށM;9ɝnI}?HhъaCvNO柅ΰ1#$l$06ҋ$U2[}Y2M%&gIӯ){+f9GF}/BA:\@Oհ@n %#Ę3q%U0 )_%icC/`sކmYٚ#Gǭygdv畭u,Ȯ;sdHLHKj:6K[=znEd`T$sOaw7Bi1|dUǘԷgK/S謀9@R@W=7Q>ީ51f|*3:wr/!G~w0 3de-M9x\"jϷ^A[Qb)"ǥo8bQe-hXHo>Rz 0ԐD~R"a eIaqg1k h]ϑq^g#dWq||e &7h(?JrL-LJ}kC8 sqU/eΜ7*8h{2Yn,5}e {+e5MjM $&mK:J~pM7usRSj{5/bt cojjg\H50_ #nDNh^eTeSƍkEaW'|?^cʃM~g^Tq3}6UNjN=HmZlV>_CE}rt彂5> p~Vhb-%*S'MtxgWcm_8ZG zj!Bdž#iEb' hMkQ|-/`0ݬ"'K?!Pǟ"/]jF_y&8,k@R58P!}︀Q"""PyzAY]A ׹N^FwHRZo-ߕqju <2Xg|rOxXF;~}ԭWL3dIfYvSo̔t*ζnOdY}2 kbXibw,6yUD"&]|!|5ߢ֤% i^_8;==ǮcS["T5n> {6CNo(+@5c!&#)'=`>RV& (2υBRԳ\y/fsw]-sh@DlH廬/i~|}tg{ԠHFevW#u߁9pbmGojS+譝gx/SE\eM` 4֭LW uJ%W⍽@cN&.ЇP,&A<q~hQN-jlMc)wU L҅$O9ɘgS *X F9 hƹf('ǫP-7iH9?5VAaCMlDLL-%LEjȪ6Yvtjq8vk4ܩcVmb&V}Xgr#d9myT:79tЏl{36pe˄}; xG)gMH"y6sX3e?wTg @)\6bԌPa"+uF@McWߪbhj rj,׻Q_VISEv+]YFe(/g81h1Vlvxp JAP*ãs5ĵv 0WI;$'PfG-Abֺ 9Or⵩́;qcȋ)?|ϑb›5> L4z4JBtO.GR׶UPC!aeHMcY=k~赕c'r?r it8S.(>r}$=n}[otD`训N͐DݱuE;ّII&g|<]e5f`JB=n 1'IDATx}{בؼB9+]o!=DrA1Q\l<_ $֥Җ B.˻12ssr"J&)K`#Bi-ӌ2j+}ow,HO}݇7͛730=X,`Ct_0rPiS6OU"X LVwC_wj'kٱ$QcpbJGu Iȏ o1`#m@?")Уf~ WޒS`SnE+hPt0?EQQB!QT2-~uspi{/F4=|2'-xlT*m銫JpRe.+8.8'oxIOVrW&D2c?˲\;@zr?~uķ{6pAy2KYoD%t^?/l~K:&"7. R{#P")3}5mTzݷ1ֵ z"/R/^Dǯ*vCj~drmfL5%mC"4!N:k.']&ǡ}5;j8U)pqy%p㏤ħD|(M̆.g1 {VɢXyۉ1m97ĵ5&Bs}&*Li-L KI5GO:p`$&SqZʾݳ~ϿNz'x؝-&}}g x> _F4Agvzo K=iu &&.J{Xư  *UsT0uHDh125ʥ'y"p~->Fքa ]o{8vq.fZfLCDU3%,d L)WogOSxX76K|Q",s ]r{G6i-y^Jz&z|m =o -*`9"$$E ʶW"Rd4p+\leOρxsO)0| *A{0E3gO<灑 ;'La'ٰ|g+w,5wk3ף-bI<\PoJTTj(jP4/=NL+xg"|w4^6\A{{$9xN} S[ŕ:t7$< 0hl}בaDo}5q|5Bms\nywpLϕ4: }7$oL }V:L ؜`cb%bq,BFzA9ъLjӶP?D> %me_$v!]_[Pܮ<ѵ3U\$_ CE5횂Uܧly$s dox{tHDA#*V݆.tBk{1nOw7+uZB?V'N5?oΤM> 3Uٟ$ ;ه $ Qo$9WPwDlW"1;#ϐIU`19bOAQ2.|wJ> $b2qquZ=+Mv/RTA#MW#)ž_%w;Q+&Qr=A%rLg{:n,^5P p0 C Gѣ$p C<%+M'B؝$1C?qkZ+LvCNlKUGE}~nɝ^&xan/|0pgj#ɟWJAH|7@]asx3~:B'.O+ꜰpw2"6B ;SN7𵎢w }1Ν$XA1ػBp H;-}9YFp0w 3k%<`' d<* p#s6ME@N Ƥw ^ jEMP{3כHS9ylLBD=zwUB i/VeH7ϾUj^t 8H .ĨќSYL$GḂ<w: B۾R.F~׻+@jP Iʧ D;*x;C"/8dSg33{r.c|n#5fA@{a9EYSta6u"\PҰWIX -ͱdO|gs3*u .'z9 "W1誺X x>:gCt˔}k3r20}s^N}1dM4cP5|,k\A H~`@{B4WpBPh"C61#* 9tTvfK! NtMQSNFSNkMM7gndG!)^fEN);/~׈D: VܫE~{aɪ$>$3 |ck.z艌J-_G0@3s&k ?9U~>lBJi{GM!W!Aqܘ_=/$5Շ!ht.9q|Y:m)Y3@ȋ"ƣp x?"Bstdd!]T]HybOogpt.ZI'%Ԡ"'U!4_-1PB'{cZzK07y&k.-]1@ĔlUB"{"`PehPצB@38#֌ d YCW, HԴǷ1eW 6ʀ?z]|M#th.}^HV]$Ԏ3Jqu<_dd)4M1<髝f܌: xauZXyF<goZK7Dȥm &Ec{\^}ܟi+flqr^BpE"V$^ YVk,o~v0$aDoAIn Uzu!leMoI) tt+I -(WwkBUhi$g]#xr߂gyp'zhKBREҕDj䑸 [aicJ O qu&/S1$#mNB`+<#ЩIT%w]r[' I5=P#@=!F˾⭣'7 mK[:GY2%/pG9(ph@MP?9_¸c POM !Tc#6ՓZG 94YQΏ&%Y;n*(!5zP`a/}XQYʰF.?4~.)΂O Cm7Di%ozaE.[2xfi 8$ITT#?XKDrvCx=@!XɥYƿV M-[+|tE2u/A9]c%ycNz~;Y]@!<>>I 9cT5 )Jַ:`󕟦N\g™36e?Q3D8ڠ8ɕ!}UX2{X0Df Sq :,pnեqZ6@j? 9En.x&wE*6_VSY\=i!r0D!?!dDW T{Ԭw@x,TW?h޳iP@TjL\A2kLO/ ge] RcG=|d|?\I.vQ6W%z wڇ>'qH 6oNfv1R*Dѫ7~s;_X( (Sa@ht i5)`.@ʿJmX zFfkOVC \oX d]w-eэJkx'T'@ZUEӋp"Ze1`!\4tA$ñ`g"# e߳(aZo T4TGc VImkasWkyBU̅T={o9ω{)>E?*yJVw6y:4[t~ur. w6ޥgk_t!+W?1jb`Ƴ840rờ #txa25`kϙC _氋[.*CS>QXVO5{oJ.Cwc.XeY*zAp) ֮Y`v7/؝ݍ 9ܪZnE x)Ebwyk5Pv-HB$_ޱud*[Y<؄+ oШKS2 5E¦eJ+)q]eH|cە/i, .}JkxBآ#fXTI&l1U  ~WuIZ/"N_KW<CTCd@nB mNs*?UoUNW=Z7YW#|THD4 )ݍǢ& ]Q=/:CWg`/H+d.1^Bn43O o/5{l"4c_)p1( @QQ[}MZpunű:*f:uAdeCM > <$jnONz8Qut)jT+O_\ !RaE]OhgӞ9 J[-Kt%|w3JfsP,WQ&BMObdF.S>XI}eIZ 6@VqjCUՄdw?hrP>/=I'bU7+­:.mabo/W0܎TzC&? D|)66Z*.*BH:Փ[+ ]/a7, E`;+@ZmLԙ] +W(ݻRAZ @|9$1jsrW*A*^̥~`7r5ykϷJĩ8Rݺ>wdPR?Ѳ][8Q1(!ڶrT>IeM^DYt+A|G#V?'rdrLG&.; 5d~EزƹVlE5o3mb@-hy],Ϩn^nw÷wW3,!@˚S+dG^}Wa]s=>uX^@|eYji<. k9CJ#!`\na 5A刲%1O.Q]8O0| ,E`\q#u}ga-m[M9]8> ahkADC6@j`4P3[Ab O1vW4 ~x~SY =še ;.u޹2d+lak?psCD}L$~<6V?ȩ|!6}#OF+*dnޜT/lu'&{֯`o .kĩ3SW}^~Uhy"2`xqcL^Հ^ZP 3!O`x2s&2%*mOg λZ6 C57(& %~x yWg_i[Mp7VB@gnQ2U|Ya8NV?4c팺iD0c3fn盼I٬b@MCn3ؐm{W.p0_&]LM߿ ʧ E,iIIp;K\s2p7qn{HnyL_wުZ? b 4ǰ;z+5e]J<ڇ;EF1(="2j[ns2 ("Q!elp¶o1|B8ⷕNoIOW0x{m='G"^~fS:GtGuΧʷmܘ;=tV:V;-~J"½n^,Q% 8ؘ'@l ? !CtæMj%T> J0G19z|V}fYSoW'k|KO y'I-ŅPčoSa,G18'E0t;>מ@.6991QشXG:.mzX\ΒDbmG ]֌䛫Y/O!):i{ `ɚLūfO G'_!(nEkEXҧhW@UIn%-h4@3z߇ y-18(PA%d'He\WQTiOkٛLjeBin9ޭU7~9RjHbhEf˹OR Ӌyen£窟rCjN &r{Gրd7=r(†ᯇ_Eq xݭ) hd&RzW5G0[G^[y)Q~N8[R % AG伂|:Gz=*k>p8SW{]e ZTRɿgoy48Vkj,w#Ep 0<: ^={?ƫ'ږXh2Zpane;ʪo=ԴKeDiB<>K&ow p=nB3}Hz͝l:qϯ~Y O0KEbm-}o` M>R$9`%Ld(p,IENDB`merkaartor-0.18.1/Icons/Tiles/101.png000066400000000000000000000124541177067165300171350ustar00rootroot00000000000000PNG  IHDRkXTPLTEжзззѸииѹййѸѹѹҺѺѻѺҺһһҼҼҼӽҽӼӽҽӾҾӾӿӿӾԿԿvlbKGDl1 pHYsHHFk>IDATx]u?LX(X{R,RC6ŬnZdeQkgKU%[ՓIUvI[LqJ_oIH/޽{'Az By7P u :*UUGy':C_#NKo9nz{Q2M~Y@Fc#_vx(Rz]SpQ}@i-ż$!,H1 K u}[R2ȾMBާ)^bļKu*k:;-=[vۉFu #% sPBh,7X(y$8tZR{ЃN@3!9@ RuAg[{b(ܟH,%~QP0[u3Ud(Th wi/1UH9-!W&$!_ Ġ4õ3_NˇU GOr`F+&ؑEB^N h78yjL*qZ>1X;(  ]׌_ӅƄُg0µ3&. lԅ?F1M8 NK$6jKިey> rּo3Z媵Q?YW_~qZ/NO8-Z{WVhz"MOH4,X_}`%8w8X|UA3ǜ] TcDHpQ A}\2|ntU?9-V@ݞ#}U h )x}B|7@5S_v0"`i"ati>/8H8zJEi0W/n_?"@,\4.Óv Fﻒ=8v# ] Pw{J{pyV!`]s OdDpnAqOG98$؝Y.Ć5.``+Q0 'o^K+#iPzȮ_N@8L.j}xxQS}iPj$eӨ*wln/W8䅚">c'!L-SB%p fA ;1!-|/4AW 0H3 `G+oU<~n4697aɵ~n^U oڜ8t 았p!M.*=CV:˶@EB2e$w?OT _ fPFب^ۭ7%&v1X*{㓊o: ' HbJ/Oĥ0!贗gpٕP^햚#id 4k3mna_7 1n:u.F[eI,# پqPi7mfHq4Psta^ԳxqDWX7YqYH=ӫ1֋-6L%%GmRтaW>o<T'N~SFcf) jL`4ůL)lȂIpg)XdeAɏ fi$ f&5M\ެٹVAqX{`g=L0bcp^ $Ħ( /פʌv8``bn>p)xGle_GqȆ)/"jb?F @ܱQ0WН^)2C7B" ˵]ҫ r=!(N[ڥT4` x4yS▇]8HNpϿ{ԁ駃9Ϸ뵏t] ؗQ]f_e+0^Kn# ^OCaKU|HF|$82G~Z6HV &3pY__1/VM~܅ V=_ź'aZ9Ս5D'SϽYl"/!؀ɬUɽ|U_4l6*]Gr!yдZ`K|K}) :@ڀcnMd #b5EUWԱG1!h."Q_6 >?Ǫ nqu,&;\u\¼a8W^V+ppvNc`JՐX|yaGxHS߶#hy+dXI@,hC[&`$@pZN Y' jJ.phXh33M!hܢL9- vtIw%utNm\ĨӒEZyq[xg#fkNjv)г/C@ Ə{]8V& pDx- |Q^ ^;%Qp k_*x5< &.݌ +smIENDB`merkaartor-0.18.1/Icons/Tiles/110.png000066400000000000000000000271611177067165300171360ustar00rootroot00000000000000PNG  IHDRkXTPLTEжжзззѸииѹййѸѹѹҺкѺѻѺҺһһҼмҼҼӽҽӾӼӽӾҾӾӿӿӾԾԿԿKI%bKGDQG pHYsHHFk>+LIDATx}Ǖ xmn$GhU 7*4X##9A4C*lsxT2i'6U [nvJTdQVOc6,mI`X gX,cޛ=o؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆m؆zaMh-X8!1. i {[݄ւݳku#Zjx~1f׾xz̄?]VcI`Hx-8UǍvbO_',`OX1e2PQhl,Y}#{f[`[bG/[FqLj @6yLȖNsa#ē)H槧64ֺZ o z5p)jԱ|Ad8`Y9e6 COh3  K7hjpQv ±V }Ng0  h?,9 偽,C-4A7;]a@L$E69/rg$+DSC}iec00]Q4 scvW>10=<`[RͿbtGދהCZ&t'2jL+]]Ev0XNC0 ڨ&)Z45'хr XX\w37[R  z+ i 2&H#y +)pO̍3QF8B_W0ɳd \'h qtuWi*'F蹉nxg6fv1) S>lQǨEA1VG 9rVd-ba?XjׁeQ0{)d .pN7ʡzy@qSidfzpoqnUqD3m&Lp~J\Ea"(pPXX.?|+~ˎWR`V@i.'+ 2? [?ຖ7cdBř[N,8.#j?">hp&_-56̬^ *ҫ,4'qhas6BGz09E#;-8;j@y7M`ߏ&2:& [@Q'Ȝ]ǁ̅!BMm1v+7EzNYXQ!@K߹,HoÐ ZvPup]MEŀ!eSjG["5 e%}o,5?`iu;A7C1x =Mh9` 3*26{)oTߣ=,L#$ȒVJL u:.o'00-8F&=DD`/< RS:66ϱ~8\vj"z/Y"!ԾqnBIw7L7*O+-tE;C^"?1. rM;{ 6Mar6aOsزS+ߡ4 M:ۍ!l @_M89 [B3iw~E#)bxE􀍁Ue:_vZ(ã{h%/'/fuFUxHmo9㹘VȉwEsyI٬"\tn<0#gcaEkD.2"[-V8iݒEIr<.V(ĂpQy6NE7&AV_/+?f|4 KejG.jLV&ڿѶ7r/k؛(p;;?M-7$q}%2IP!(JdO@3ZY)% ?|Z5| BC1G&74~4 0Nzs8T@1p_z M/O3ša `"eW?BPKU߳=ō؞QcVH5dPS \Y]GM2Tw\M8T?S)2𤘅\0H, PtgTL`7^2 Aj]z_RǏ\bXPco^ETFNNW&6*w]Gv9Nj\'ζGV՗G!^SAXZ6r6 VZ7(κ L+~* 6{Oki'9G]%pO t]w3b2所s򊐯6xu ( y5Iju;- zj9;SȽ&ujxrܣB9[Ȇ:ڦb< 'NO uUmM ЛYV"MQ?C9G2Hy$>e۪E]\  >XX|6S&!ő7D 4{ +sOKܡfj6 Rr7~Wowkg˙𲒗LMty'dTGvt':OZj:LO(ᥜ+zu.͆P)P| jT;{]j@"ILaxH lu7>,=hm%ZPqq1A3*\.TΫPi9et`,s1_iU5:+CsPK< h/@nkO/ׇxyIY _T"Y`ַ+0\{zMQCb)?N*~p%۩ ^Y>E8iݼIWU)p+aZAVAa`ޯniYpt@UyN+NT@eagxhACNYpz1Cy+A9ا,0k(lB;*4 S X/Rpaw3g3F^+j~ľ19Vm=|msy} *x@e\+XYG^M00)!UnVdM kl]g3AdO*.?Υ)*O]h5~ ,-l}[ WڎYemAlS?Q Uqu&]צO &?FƠ%Nq,~R{|YF?H|Y%O "h5!]qP.Yuu-%K\-q)33.,Dγl5qU㹠jUb)HOe٩n036e##XY{Bmfs\b/S7a0I)ɸ7Ҵ^.D,΍ˬ`#n J] c9vJo뮮5)]!Ʀ/L[rogorm_p-ɔ8i-H, ^@A-(,zATB|G3悪қO38 _UX^ӭ*/舘jZԫ_D<4y5?+%Qe!NY,F>c8>=/־WoXq8u=O+r_[ZWG??̝,|VOk23;JK06t$u[6yK3;-hT?U&t~ u*x pś ]kVu]xAd#* 3Edׇ$Akf:܊e3 ֏9b圲[mr kԈohr2<.$_)eI%<VY %2XT捠/Yf sSk~B}5}#)g:(Eqnx}9ɾ>t;޵SYi= 8;^2}VS 0U\g38>)1ĺ[J_-'y(3NGN 8#7Dr.]y.wce;9~d)Co9Nů.JLy31.%}OO(w lӾIxg$o~o.(z]^X ?eɰG9E)kN֦ žձ mð"B>g,ppssT<fyCn?03;8!\EMS[̯"]XNӏe2=>?&BE## x)1q)0C; goKy)n;nC||i Mqƾ8EmCj'7==5ij^>PuiBq i8XquxޛNA។$+8'xl9b%m~b8xM摾Е}kcʰXO  RBf'0Q_P=Li/r'gx_X ')G'} lvK=C7x,:rMx2z22\Yz76ޕo-' :h'/X'd3Q+  NlftQ+N99旄}g+*>` 8ZL$߰c^}e4Ppar*dCHK%Gh IVIjf螛|YG,+ˡ\+ JBv`*k>6.C9VHp/g%4a>f#։"Jti)7B}&eNط@Ѷ w5W>W<(pźφKJa|ρP2!Ŭ;a[#-kR6vrpwZr>Z_\&1IOɏ3o Nڅ⧾U?%ixco) (iQ.uuSm/"KNVB X,6 EF ׼ I#P~9XE/ں51e?xEi.B'l4|vն7vկcHTLRz_XKQ){|P`%xI F@v %@Wugϳ+H ؊Ncd78)4 ' Gg>_oVPCpVoN[ojgz+aN8+~4'6.K.Ī#?硲x#6Yh7&v{Q2ߔ5/X޵`Vիm!h+=OSw۸YVi%; 6ZXWu5Wh@ҋ i C1o\'i_)kZ!fUwU""vj[^מ#ԗ<՞'ˋ].k(]sw> ~1$ώ/AOE2jO^6ڣIO߈&/ëT%4HN  n2dWt5*vQM_BɪZzb;MsNQ<$cyo̕ ĵ}eҥ\0^y0ov۩!<=y0k;x5a+/&{5A^ gɯZ?T)PvfF1{7$e֒=V3P>:Hxg'sz\jxf|#W)L)@f+?F@YM*؇Uf( @XsFreI>bЉg'ƭbLB-ybew_ f f{fl8pd¤%o5D'ͻ}IXW܎C@*U@A:l@׹q`+/='GKK=a Xʫk`ll('Ez gx Äq5ٝb yz X rҪ)˜ӌ?c\M<8A)aSnt|^(d--e!/|OS t1}3kQh@\-1||Z jVo )?^2¨k@F zthy&l?+[J II%_8 &E6ڽz(ϹRPQePB`/(00P2gr t\Jz;x#:/gAn3_xHELtwWȎ2&Xi.e*? ' G8b57/ GŽ;',uO%2%\(s;K} 0^ hQ,}T+77y⣛H,ЍdhwRWiҸ<Ъė;V-BW1"۵2+9qB9MB=My7 kp <ew:r|áNbYW GrcΞlRnNtNh퓲,[1Hɣ0 pڽT^#n-b ҥ>^߿Xsҋ}[shb=q ,s< ,rcիL&x!xD n4 aIDATx]yƇ<, V20nñYѡӐk*Vɋ˲m4++7uermWRѵYRDR">H$qϽ{Aqz fTH [|~e9`ယ8rxz|<.'F2T@!ӎ>x{9b\0-97W?VTx7 I̡45#z!xubp6Cwq 3 (J|[s}^ӹ sxY*%2rgy/dL2ɡ/+ע]Dls}pw}`i"UY#esn>M)~yV2pT}nRCHء?b|[?bH6*U:ZVX$I$r63}v8|@p"n6n:~]"u|q?Iم(.a-ϳ, 'Kb$D9|3 #m#@"A 4]J]=#LK|+6c3 > sA:glj4;!*@o2w&T鎆wP:GĦ!;ic͖F6+r @sDI|yvz͐D~VU &0nK`?Kg`gkh[YbgMW]{dk,\:*V6NPX#XQsJL]4'q4kKѿE]ɌzuqpKm8nėY2ԡ(.(U;cJ( oDZ@ȶ}#gtV=NHps2* tR|4} VY'VA@q‡6<RSs))jma F}w3'j_߿Q#H3׎e_2?7,X9Ԯ}rbҬ.Hq?1T('\ÉW[w9Kjs$'vzPFĥBTedzI@Gļ7qI }iFQ |vtL`;ha=+ђϦ /D绫kJdn o}9/v^+4:0`DT0/\CʣQ(v۩MKJ%6&N_yERyW@!)bRO|&{a@7s"v"xy+O?ϜQP,UG"+rGvmƃ^m 溞r;!)@; Um > IrK ZrY}̌QLѿV8M;& -@%}`H*TL=9]i?/-z@lҟ\Nq Q] Cm&x9sPP6H:Z!S_-i`LA TgcfPœoHVOv s֕WlGՇA:/:,ᇒR.e`MVǯ%T3? l붎N!QKhd\qU1,:1eʜLqnd9.oJ@ A1[J{.8)L^a^!Q_[P GO܈i.|\GPzS3D\I_kcV h슀ކZoy[P%`ߔd)~̙ߌtGLO7͠Y)B{bo)xdviZrץ[hj\FZ;W?RS.<J^cJ-/%$E+nh ѿQUn֔\ENA4԰M/w@WN5rA[gߤc#,J[j@zΕ6CY'$LS/ScZskq7$nIמ]eT%шӁ #[sact%VX.nwP,ǛA n;]`Z C?8rt{:=[ܖL*zOTZ~je*LmB ,Ke[|c-'H8I]\m1e7,w4TBԞsn[fϡmN E0_E3knKkK,"OQXzl#fٹ͎b m'Dr6,  -}ڽeR k@ytm/W!Fݖ=h) , xzA#JIc.6ܭ' ܒCMx:ҰgCS`┩^ٱZ 6 P;՟U'^2@EWo#o;#(k.c nW`#Ki>3 oWOHB2Y]%.$4ȔL$%k6.k?9߬ #LBb? Y# ҕ 7M1{:{G`wyVdsJ85,<_g? 0gnmݺm!v18JvE!›?dG-@>\4묣L;Lqgc#po@BN?LcL@ef}<lܖ9kX aM@})kMS-Sf!TNXPh hۢ90dp'Ǹ[zDaJ@es ) aN<97Ŝ( eil P7 1&`$n=5/J45탑K3 UlRߚq[.pfD\!CsbcD=Ap<Tah> %s;tnvGo͸-Htœ9<L`lx#; X X3z-p[@Q" gXo el A `&1 )KV#"nKTs) X `NmsǸ;'~<!Ix@%98 ! EB$>9s@; ,M!#90&l`81 N}ěps $9Yp&|k 1g n"_&TE ǜpwn{-GGGGGG|CoIENDB`merkaartor-0.18.1/Icons/actions/000077500000000000000000000000001177067165300165005ustar00rootroot00000000000000merkaartor-0.18.1/Icons/actions/GPS.png000066400000000000000000000012671177067165300176450ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYstEXtSoftwarewww.inkscape.org<4IDAT8j*Q92  "F#XiJ0 Z( 63ڨb@P/wGer8g@_mf}h6?Wh:Bb8z=R)n<'v(ˑF!DT(VE>nnnl6S2bHjrjHthW0fl6jGrvǁy\.˭ ]]j}eIENDB`merkaartor-0.18.1/Icons/actions/align_nodes.png000066400000000000000000000016201177067165300214670ustar00rootroot00000000000000PNG  IHDRĴl;tIME  pHYs``wgAMA aIDATxkHQ<g]g}#_*KJQhD 1(C**ЗCQB"** #if[En:;;f[->ùsr矰jq(:kIQu8>i [<>\{|ⱺǭIu9CY¤d) *rzLS]ct%؉;Y*0!z|rNd%S6=n;'t秐aPl:;dEio9}sb` ,+z e*a cNT.1xϗ,r\xG(Җ-PQ˞Iȣi0azЅGs=hU!0ढ़oK #"QnN\9d]q54Ԡƺb5') $ *696ڒ=zio@^N,,aih)a!D . ru:7;6RVTO9nWA0"Jad5BA3:\(nO}vf!p3AeSz3_]9~|Nx.θn%C{0xۼ8ARt$^7O1`7fZ>ǨzWU*_ t t D%cF-H=]A/H(SfХ-wP"(R /pzl%U@5}f,32=, wi67}?ӒIIENDB`merkaartor-0.18.1/Icons/actions/axisalign.png000066400000000000000000000071651177067165300211760ustar00rootroot00000000000000PNG  IHDRĴl;sRGB7MS tiCCPiccxgPi CN% 9' Ef00!+HR\pu (DA,ʺ܌~>ݗStxWN$`C<WfHh` HPdzA_n @=?IrpND.8N2GXrVz; \Cw~ wp98RW&rW2; l_ܯ3F&iviXGe'sG7zcu@͂wzRvn:{עU Sv/[ %\Ѐ(d"PZ@s`3> @2, vPJAP @#hm ep w(x ` X  !$)A.d P(P 톊2_se4 =&9o#$+̂aO8©p6+ _o0~ /"!" DCX#⃄!1َ"H҆ =#P D顬Pn@ڎ*FUN:Q{I G-t,: ]@7;Wѣi; hb1nPL&S9i\ c0X,V`#l"v;}#p8\UZp n/W[}V| ߃/$kB!PIh#\%LDяOI$&^'N?$#)AG:ADzHzC&5v0r:y|^&/.!V#)6"S))ٔ Yʼ8^\CQGKcVSZ]3[UsBeՠu_N>}W1Չөѹ ^^eaոI^/SUoR寧ߥ@ `CS$FFT#<u5WWޱ{k]h#&Liަ{LL?#kYt/um`K3t3YY%ZXͮ\q͔uu5߆iasԆoli`NՎcd7cm`ϡaq%'թiș\E%֥e5m۸;۽}cG'sg3//W7}{bZ.s牯oo~?_Fh6kY.!$qV`F`_%(<9h)),b-Vlh|hw6,()lqM 6hnزFٍI/llt6)'!r1=6j>~ɱs梭ˢgbcbfccU;WǿNpKKXJI<ԞKH>ǥr7oY,/,{p&u2+*ԪJ>UU8Դ]:9 ""V!fBWW ∶D5CʦoǡHlx] XCKݗ Ix thfbM$YDJ˥ ۢlVbN*>v9A<%=ŸɗHFMQb& BhV3煳\gLDw6?;SD)%ߋEqqPD|I H$|D \D|9,Ł?9[}ӂa,S#wO&ma@Xۉ3ؘ4ga>{Y|V {#qր44aLpw0?> b< Wh4-&Y"Wli?Nk3"ΐŤr *xx9 ż}ןx^u |j̖рk)睢R}XjÏ/`/{GzGB,00.6C':H=׳Uc$.6({G!Jww^D+otvPEQ ިHSװhѯA^&\o\GXWv[}A|$Z/q$++~usczR@^$Gr,aM&o>g YklIOG-q~,CQVi?G3 R{QS,%%̥MS:]*U*\ӛq[8NG\wXiV,z:^k9"ܜjn(WX,@_@W,L0 pnK4}:#d]:es;t:ZŲ`GqGW+D?‡b˴pA旦AmNVFL&Ç`wBi@]ť$f󦔔t3-JN=K{p~YOOWYYiw-\kv<+xv3h~)IENDB`merkaartor-0.18.1/Icons/actions/break_apart_roads.png000066400000000000000000000024111177067165300226470ustar00rootroot00000000000000PNG  IHDRĴl;tIMEtʦ pHYsiTSgAMA aIDATxڵUklUff_YllEJV[HV?iP@B Q ?a1%`PѦ FI"JI.}lYv߻ӝvor̹wwsϹg<Đe#ϙ1aaLEIb$1g * "}&@REl=1=0]T0F*L3C,8{_Bov"ԓqHV$J ȫ#V#{CK״5zqrbƲa㘎J`52 D<=;G7intdAe6&mpHZiPj3ڔַymsbb0cVka/Fa_p .\LFL8FF@X`P[s9ޖ*j>Ӂub47V_\Й%iT3@ W>IXU|L0kll2JW j^/%FbCzA9\]Q?L[굞lFpmnRxNXњr &3;et%,[ݵ*Yr4b /66j]v٢܋ omZti6Bp5H'j'#DR- y:=3݌4hڷ4߬ox8yGHU :2\u1'\n5\tپdҩK\Jyφ?7!1Tvl= ՟!mS#$w>\یͦ[\| G?Jc?r?\u9s,g"MsGd]ѱwՌdIENDB`merkaartor-0.18.1/Icons/actions/camera.png000066400000000000000000000011041177067165300204320ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsfKtEXtSoftwarewww.inkscape.org<IDAT8Oia{vp d(C%d&2Uv[ 22R٩;3QD_ZZOVP( &^(M6`0h^ /^6`0X,^OZ x>^lL&%"2 0$v{jSThZy(D"b"I^]ׯV+Pe(-4MYDΊo[GZۊdnl63Nuv)8NF#J%s3 ^p8L(BuR]7 fi6=Nv;TU^r~Ns|wzY| dyp&|> 0͐e(RV'vNp^h4;m4M|#_IENDB`merkaartor-0.18.1/Icons/actions/create_area.png000066400000000000000000000016441177067165300214460ustar00rootroot00000000000000PNG  IHDRĴl;tIME ;ws% pHYsiTSgAMA a3IDATxTmHQ>i"[6!XX}WrQŢ?hQP+" g," T4-0sZ s{ ^3.W{Ng5" dGUP4K[!o|}oFTʼn Jd>8,E }>|}IL_AK"J$ T hVd7F"_/5!̞bv4B*ӹ$!46G=ݞ6?YHp\r@}M=Y&JKZ(LF4~8"D6zG)(J(P@{et:݅_I|-#S ~!ϝO$FBMY)/ [T†p(16~y`iZ3@ĉ@2ɵ^nH* !K %0PePR^--=~c0&cs;fSʖ#Jl` .j7x@'3t۔gf2 ӌtzsIOwAj8*ȁ "N;/º9;'ȝ{rӎ31V1^@nl9E=<Tce-zuU,>ń-A#d:LMp 071w8vc]`m36W&XX!Bb\TT9<Ͽ?*p|ipoIENDB`merkaartor-0.18.1/Icons/actions/create_node.png000066400000000000000000000011521177067165300214550ustar00rootroot00000000000000PNG  IHDRĴl;tIME37P pHYsiTSgAMA aIDATxc``dm,,VT1UcCa}%F#!̟&]p[>}󇟐>&B XXV:p301_{(Ar [}3,\u{>ħJ :[]h NRP~~O~3| @o@|$`z^;nF2ӧ |rn~`@s{6.׿ B@22p22amme'> 100;?C*n>6^vHcGF<9 L%+@qP$b\xH5F@1 F̂O@꼧'CQ@y s131's@1ͅDsA%&&ΩNPbbbp8(\VH;IENDB`merkaartor-0.18.1/Icons/actions/create_road.png000066400000000000000000000016241177067165300214610ustar00rootroot00000000000000PNG  IHDRĴl;tIME+㬦E pHYsiTSgAMA a#IDATxTkHQ~}ˬyK. G 2C, J@L~%՟$lTY K+* MyY-]3|n9{|_FLHp0$Q%z'a t"n@e , OaJIɏ3! ΀<@ Hx=4F;R "%gNĻکYw~ J٣iqQ`f6Ǘ~-$' k0e#伭 VshYÉ][p'!^ޏp7ÓǧdȍMNL477 >ĞYb &¼ d_! J4栤M}t\zR$,VKѠBވjS:0^|;ނz~ֵ~j }RLkMV^Wً:; !~,[趄YHbNw4A}&:{Z]J4<l Np9F3(= Cs%%6z Ĝdږ9[A9cbՑxvVdjA!A`?!g*}[}h\.T*׹[9+|`9SZI7 v 'ܮXw1 m2IdR-kIxc?ru9`YG’|YL&gFVz "IyrIENDB`merkaartor-0.18.1/Icons/actions/detach_node.png000066400000000000000000000014421177067165300214440ustar00rootroot00000000000000PNG  IHDRĴl;tIME   pHYsiTSgAMA aIDATxc`6[-gҢ@涥^ *3ç6 uw~.+ l9|m,,V |bd|9q [J5XILP(T{>AIJel^﬎1 Ңk~pݞ\2Х;&]p[>}󇟘ȲוW_|;wkiW^RR/,1@Pim6,LL7 cl?ϒxdx5TN =X1}:W`?w6S+mԟ0d~ 庚 QC /Sɧo%8t1<k oK2(-e8\BPAQp[`28)HJb) @PR(A J9DAX f'12Ϳ@*TJ(0p . 8rnPVOZ ˢ"ߛ9A\KVPKV&&;qv07`zvv\P 7` Pف9B> ߀;eP7RM(IENDB`merkaartor-0.18.1/Icons/actions/document_import.png000066400000000000000000000015231177067165300224170ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDAT8k[33f4T~Q]vE KwŅnwwUH1+6SݔdȤNۓsg(hJ9g;+R(e1 ˲4z8EV*L`$aksuv:R'6-Z?.\#"XSJ*βJµWT`)5Ra0󬯯1W*s,FNdrԋ-˺iжaEFQw]zV֚nZ8B -y T"BehP Y[$3)Pyme $ qNMpguuXgggRiZ(S1Йp9&v+kkk2%I%IID44M%2㶵tÐFak\*f۶qZkHx/Epn88Ն"Bݹs^/x^(?"` |"\P"R<3 G?G"C.|{ٲQ(N _s8|$/@W]R-'UHa~74Xףk8omoUѽ&r(ʶk{ چ4"Sw5 "Tj+Pmq=yo' Nw"~w>!vI)lvBЀfwV&wSeuiv;,˒."t%#7 #̂n¾I,// aT*NժNԱs}||G}kڧlW(PxzҼvL6MM4KDtr98xB<~"7ZlŋRt|rZ ̻(2TZ~X?TQ| cJs g:-%F)}>:qg2] ߑ}:`[:'Tkl2tC)hXk Pڕ|gr|sY&O Z"P_, uJinsO˩=5<FZ7ȶzcu#FL7 5\lАR4(n 6W560v$t# 0 oŠ^pJ=(dDF`E2g" wWT| 5ï?;S0 V$`!'nMBtf͆QG(\eY^lw1Z ou"fتghꭼ<}D0#WM;JW/pj]{8tg{8xK/qTyIENDB`merkaartor-0.18.1/Icons/actions/download.png000066400000000000000000000021721177067165300210170ustar00rootroot00000000000000PNG  IHDRĴl;tIME'fc pHYs``wgAMA a IDATxڕ[LUǿ33;;˖E*5J\J bj[&ʃ1 FM0%)1&&FF٠@4 ˺M.Pp/3tk 23o m*/aYHfƈ>_zilX9XǗ)^Y$bK>v~``]{zz>}5`K)dςCcS>xo#BF2@71deb 0ky#aƻ". VUh큖xRɟMQt^)F'LC]כ8R<sPiX{+yW`0#juւfI<<6ԆWxl;mW cFo4ָ.fE/{r#u9뼬֍1Ӷ۹+^Q{v']'=[OS+ *쫨U4ߏK,(BB`A2[p2qNjAPVh>t #!:= `s4^Ňf oj56V)aY ЈAr[Hᯙ\ _VdL<7U-v& b( ){-f<l Nd@EQDsE"+Jg@+y`(1EeS%yڄ;###/moo\+=42fH72Hu$dHm6IoE'l(rb844dXHg,ͻVV;!$gF'FCmO1Qf v8F&=E ,[fz(xM"|mH^ Ic!-\+^A+ s'ד@k4 fP1#ZW#ša 4晝ܶMſFC2i tKmşxI|*x)vۣ$≸ՕODίJ~ob~(>)aIENDB`merkaartor-0.18.1/Icons/actions/download_more.png000066400000000000000000000017451177067165300220460ustar00rootroot00000000000000PNG  IHDRĴl;tIME'"0A pHYs``wgAMA atIDATxՔ=lE|>*\\C:R@14 #%ȩ)BDEMeY&IJG(98Ʒ{7xsvw߾ϛ^)?Yβߌ9nv] =VڌB !bQ&6@pɁs D*%VoU6<^uSpŝ؁`bwx`\/ ӇP=Zd"%!GI؎Qftc( Ua.JX^9H&&wa+~i5hcTQ*.J'hZ´p+"CZa\(RLȎlmZI lmCwY|t@bn5㙉G ,d֢=,&pw@Ar@*=oܹm*D!vFVBf]RL &{]ǸvI_6AK@!!!?Si5%&icm4{g!+Ȳ s99 I_,4ͪ;@ϞjЩi?$ir22#4M}kiN7^x ڴo/HǽͲgPa۹/-sqw* iD#ix|j5nCa mW<>'33s`y8Bi-=]"%#YWm.O 7VZڻ҂Z484 N'xyy?=R9c=X,Z+F[K{끇ݗ w_tkꀔwb6'ٲ`y%233?)(,'hSZ{-mfAQ9!iGBtsN>go "!D1=3 f=H`(psx$P]sTeqI)Lӄa?|M;U: &@qq1BXzAc30IqnӴJHmsmޗ㿣5b/UtKQ̤퍊yQVV(P賆gge"W0- iʊcq>wu˕'}4pgX gaQL|+˕/lkR{Wx^$pۡ(Xaw7XPBt/}H^h}ji>1a%!Tv;(!':{JȼnXÒCczk䞠clL,,,r @,^xv-/PA] @`4q 3vy.@0χe)~ىէRPUd( `1@M!]մ*e%%Iyi$bVR]V3BD[9|b4z$;M@\J@ĺ ,՟IENDB`merkaartor-0.18.1/Icons/actions/edit_copy.png000066400000000000000000000012041177067165300211620ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDATxڵJ#Aƫ{1@`٣eaO>O{P|M6E&:3fi0דu5Is1; ߑ1ZXw"r0ր5Z k/? ;c|jA",& bHU%`}C?p%({h߇MDy > p#%Jr* Fj.az< L e8{Zar*TF֎,Cʼn6fAtC0+R9`h#CP;`ݠ4B˲owikkoMr I@0}|[o@4x %/p vX\^л3,ft]uwO(3,qWqX,Λ~; YATb,sy;O|Q>8q߮nWoƃ ?|Q55B1?7 fsۢAI\fMX7E!qOIENDB`merkaartor-0.18.1/Icons/actions/edit_delete.png000066400000000000000000000012361177067165300214570ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDAT8nAc? ΆT AG(T DEX$ JM ^KfYZF(Wh~>=s8 ~(6#)\0Mi-ʤؖZ?AHhԯAl ~_7uh{ԫnI=z؝C!ޑEԭCgx*'X0gvDHݜt*Y~? nJ֢;fy ԭ t-7 ٬6;,2J/ )bl0$Z R:Ii 7U*nqEŸ,*o)j0/RK]E<ޑSpv#g7'xQgK}*>eì[J(P9R$umVXdZ+f>DYmq%a#3_uҀh[>5 q֧lNF!k h @R@kK&tg>q߱'::-RYIENDB`merkaartor-0.18.1/Icons/actions/edit_move.png000066400000000000000000000020041177067165300211550ustar00rootroot00000000000000PNG  IHDRĴl;tIME 6 O" pHYsss,gAMA aIDATxڭUmHQ~͵Mgs͕)ÌʦI)Ԣ QadT`DZPQ? ,ldL.5}s{-09{{y{GQ:CFh|(.lfC;8`-λ0YhZnf:BNUsxRt`;w('7gRD&XSF+8»=ìkx qЉxg9 R\Ո'""mii*(cԷi mXP- I`vK#٢tZzF5o&(U (x \ U,{UFps̤-rŒ؎*T aN'TVtw؟!vA 26tP}=hjf92 t_jC4qZ]ztц#8ek.|a4bg;+++qAfRR<`0Haa<1baBJR!R8DrѰ3Ǿ1a7PKKXHmNIHHnɱ8Ri=mO`?~VoA|]}]gE΋ f>rs`f~g_e2&s<66,//Ȉi rPD,fkYVhN55͍upp\mIw_f}}}Ѽfƻ|^fnn79-(IENDB`merkaartor-0.18.1/Icons/actions/edit_paste_tags.png000066400000000000000000000020111177067165300223370ustar00rootroot00000000000000PNG  IHDRĴl;tIME #!Ol< pHYs``wgAMA aIDATxڍUMHTQ43"ZkHAJrDA%51,IQ-\…\B(i@)998t;=:pww9),--Lngggb% l(Qes|xx8900p翁^7{~~~RC}}}t:pRCllӄFkdddhegn)MHNgff+&`0xmɁIa(x)%4TQRR""K`rWlK8ZZ{].0BNNbbbhȀx#xI5rA5##HII6wOj"UevvT)2](++Chhh9 ^YYAxx8LLLxiY\\zzz+^*dw:Nlnn"""AXXpb\Ij\X ))I8<99梫 yyyhnn555"IUψ,Ghjj*++u)Kae~C9g͆RG-+ >V+й`> -%99 FeU^^L~Pv{h=-b9c[XJUUc(|~ =˔);;c6jf?ܟ^Ӆ*ࠋfŃ*PKCCh[(y!L}c.}0Mh"c `F1 - z{{)3=>,k魭rJ?KR-9,)IS3O,R@ՠ/𒖗mmm#CT1]@<d:ozUlRIENDB`merkaartor-0.18.1/Icons/actions/edit_rotate.png000066400000000000000000000015451177067165300215160ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDAT8_hWgf7(jDėB|*4VR[bM$qM1h !UhcJl@6DUY}`Νwdw{AU)%5]`}_Ex6mT1}Snh6^{xY3>11=ػw+# cϦe1騪;sIƿb!f>5HT6;ALp am`cb x%Ei3Ρg{gkyߊٳ5QBvA+zݽC{3E(شٓƳkf4l=HB>&R/^o+؊8v럷|?\9>sW~ EW_Rаa\ H[{T]Do4aq7u0ū(UiGT8({'$cBy&]q>i begin='' id='W5M0MpCehiHzreSzNTczkc9d' 2004-02-03T21:29:12Z 2004-04-17T21:28:35Z Adobe Illustrator 10.0 2004-02-04T00:12:54+01:00 JPEG 256 256 /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXzN59/Pfz7pH5iaja6fcRR6Zply9smntFGySLGeLGRyPUqxFfh YU7ZrMuqmJmuQdHn12SOQgcg9c/Lj84/LHnWFLdGFhrYH73TJmFWoKloX2Ei/wDDDuMzMOojP3ux 0+sjl8pdzPcvct2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KviH80//Jj+ZP8Ato3H/Jw5pc31n3vL6r+9l72MQzzQTJNBI0U0TB45UJVlZTUMrDcE HIBpBp7z+V//ADkhLB6OkedWMsOyQ60oq6jt9YVftD/LUV8QeuZ2HVdJO203aFbT+b6HtLy0vbWK 7tJkuLWdQ8M8TB0dT0KsKgjM4G3bggiwq4UuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV8Qfmn/wCTH8y/9tG4/wCThzTZvrPveY1X95L3vSPyu/KDy955 /LGWeYmy1qK9nS21GPfYJGQkqdHSp9iOxzJw4BOHm5um0kcuLulfN5d518heZfJ2pGy1q2MauT9W u0q0Eyj9qN/1g7juMx54jE0XCzYJYzUk1/Lj82/Mvke6CWz/AFzR3atxpcrHga9WjO/pv7jY9wcs xZTD3Nmn1UsZ25dz6w8j+f8Ay35z0wX2jXHJ0A+s2clFnhY9pEqfoYbHsc2MMgkNne4c8cgsMjyb c7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+H/wA1P/Jk eZf+2jcf8nDmnzfWfe8xqf7yXvfQv/OMX/kt5f8Atoz/APJuLM/SfR8Xb9m/3fxema7oGj69pkum avaJeWM4o8Mg79mUihVh2ZTUZkSiCKLmzgJCiLD5b/Nb8hdW8qCXVtEMmpeXxVpNq3FsP+LQo+JB /OBt3A6nAy6cx3HJ0up0RhvHeLzfy/5j1ry9qkWqaNdvZ3sJ+GRDsR3V1Pwsp7qRTKoyINhxMeQw Njm+rvyn/O7RvOkSadf8NP8AMir8VrWkU9Bu1uW+8oTUe4BOZ+LMJe93mm1gybHaT03LnMdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirH9Y/MHyRoxZdS1yzt5U+1D6yvKP+eaFn/DKpZoR 5kNM9RjjzkGK3n/ORH5XW5Ijv5rqn++baUV/5GLHlR1uPvcc9o4R1v4ID/oZr8uf99ah/wAiI/8A qrkfz0PNh/KeLza/6Gb/AC4/31qH/IiP/qrj+dh5p/lPF5u/6Gb/AC4/31qH/IiP/qrh/Ow81/lP F5u/6Gc/Lj/fWo/8iI/+quP5yHmv8pYvNr/oZz8t/wDfWo/8iI/+quH85DzX+Usfm7/oZ38t/wDf Wo/8iI/+quP5uHmv8pY/N81+d9ZtNa836xq9mHFrfXcs8AkAV+DsSOQBND9OYMzciXT5piUyR1L6 U/5xh/8AJby/9tGf/k3Fmfpfodz2b/d/F6JqurTWN9EAOcLJV079TuDmv1/aEsGUdYkbj4o1WqOL IO6kxtbu3u4fUhYMp2I7g+BGbLBqIZY8UTbmYsscguLw383f+ceLe+E2ueTYVgvt3udHWiRS+LQd FRv8j7J7UPWGXBe4cDVaG/VDn3Pm9he2F4VYSWl7ayUIPKOWKRD9DKykfMZjcnU7gvpT8mPz+j1d oPLvm2VYtUNEstUaix3B7JN0Cy+B6N7N9rLxZr2Lt9LreL0y5973TMh2TsVdirsVdirsVdirsVdi rsVdirsVdirsVQeraxpWj2T32qXcVlZx/anmYItewFepPYDfIymIiyxnMRFk0HifnH/nJ6yhL23l Ox+suKgahegpF80hBDt/sivyzX5e0ByiHVZu1QNoD4l435k/Mrzx5jZxqurzyQPWtrG3owUPb0o+ Kn6QcwJ55z5l1eXU5J/UWMZW0ptZeT/Nt+vKx0S/ul/mhtZpB96qfHLY4pHkC2xwzPIH5Jj/AMqt /Mb/AKlvUP8ApHf+mT8CfcWf5XL/ADS1/wAqt/Mf/qW9Q/6R3/ph8CfcU/lcv80tf8qt/Mf/AKlv UP8ApHf+mS8CfcV/K5f5pa/5VZ+Y/wD1Leof9I8n9MPgT7in8rk/mlr/AJVZ+ZH/AFLWof8ASO/9 MPgz7iv5XJ/NLv8AlVn5kf8AUtaj/wBI8n9MPgz7k/lcn80tf8qr/Mj/AKlrUf8ApHk/ph8GXcv5 bJ/NL6U/5x50LWdE8hSWer2U1hdG+mkEE6FH4MkYDUPY0OZ+niRHd3OggY46IrdknmyQLewj/iv/ AI2Oc927/eR/q/pcHtP6x7kptNSntZRLC3Fh1HYjwIzVYNRPFLiiXBxZpQNxZfpWtW2oJRfgnUfH Ef1jxGddotfDOO6Xc7/TaqOUd0u55/8Am9+Selec7aTUtOCWXmWNfgn6R3AUbRzgd+wfqO9RmVkx CXvY6nSDJuPqfJWsaRqej6ncaZqdu9rfWrmOeBxQqR+BBG4I2I3GYhFOklAxNHm+gPyK/PX1fq/l TzXcfvdotL1SU/a7LBOx/a7I569Dv1yMWToXaaPV/wAMvgX0LmQ7N2KuxV2KuxV2KuxV2KuxV2Ku xV2KvOPzP/OnQ/JqPYWoXUfMBX4bNW/dw1HwtOw6ePAfEfYGuYmo1ccew3k4Oq10cWw3l+Ob5g81 +c/Mnmq/N7rd49y4J9KL7MUQP7McY+Ff1nvmmyZZTNyLoMueeQ3Iozyd+Wvm/wA3Sf7iLI/VQaSX 059O3U/65B5H2QE5Zi0858gzwaWeT6Rs9u8rf84y+WbMJN5ivJdVn6tbQk29v8iVPqt8wy/LNjj0 ER9Rt22LsuA+o29P0Tyd5T0NVGk6Ra2bL0ljiUSGnjIQXP0nMuGKMeQc+GGEPpACbyXEUYrI6oP8 ogfryUpiPM0zMgOZUG1bTV+1dwivjIg/jlR1WIc5R+YYHUYx/EPmGv0zpX/LbB/yNT+uD83h/nx+ YR+Zx/zo/MO/TOlf8tsH/I1P64/m8P8APj8wv5nH/Oj8w79M6V/y2wf8jU/rj+bw/wA+PzC/mcf8 6PzDv0zpX/LbB/yNT+uP5vD/AD4/ML+Zx/zo/MO/TOlf8tsH/I1P64/m8P8APj8wv5nH/Oj8w79M 6V/y2wf8jU/rj+bw/wA+PzC/mcf86PzDv0zpX/LbB/yNT+uP5vD/AD4/ML+Zx/zo/MMU83X1tNew tBMkqiOhZGDAHkdtq5znbOSM8gMSDt097pu0skZTHCb2SL181DrrXxXkkUiyROUkQ1VhsQclCZib BohMZmJsc2a6B5li1BRBOQl2o6dA48V9/bOr7P7SGYcMtp/e9Bo9aMmx+r72Lfm7+Umm+etN9aHh a+YbVCLK9IoHA39Gam5Qnoeqncdwdjkx8TbqdMMg/pPj7V9K1HSNSudM1KBra+tHMdxC/VWHy2IP UEbEZi1To5RMTR5vpz/nHv8AN+TzDajytrs3PW7RK2Ny5q1zAg3VieskY6n9pd+oJzJxzvYu30ep 4hwy5vbMtc92KuxV2KuxV2KuxV2KuxV2KvGvzp/OxdAEvl7y5Mr62fhvLxaMtqD+wvUGX/iPz6a/ V6vh9Mebq9druD0w+r7nzSq3l9eBVElzeXMlABWSSSSQ/SzMzHNQASXRbk+b338tP+cereFItV85 KJZzR4tHU/Anh67L9o/5ANPGvTNrp9DW8/k7nS9mgerJ8v1vbudjp9oqj07W0gUKigBI1UdFUCgH sBmfOcYRsmgHaylGAs7Bjeo+frdCUsIvVP8Av2Sqr9C9T+GaXUdtxG2MX5n8fqdXm7ViNoC/ex67 80axdE+pcsin9iP4B/wtK/Tmny9oZsnOR+GzrMmtyz5n5Jc1yzElmJJ6k7nMMm3GMra9f3xW3ev7 4rbvX98Vt3r++K271/fFbd6/vitu9f3xW3ev74rbvX98Vt3r++K271/fFbXJdMjB0YqymqsNiCO4 wgkGwolW4Z/5Z8ypqcXoTELexjcfzqP2h7+OdZ2dr/GHDL6x9r0eh1gyij9Q+1gX5+/lbH5n0Vte 0uH/AHP6ZGSyoN7m3XdoyB1dPtJ9K9xTYZIXuz1mn4xxD6g+WNJ1W+0nU7XU7CUw3lnKs0Eo7Ohq PmPEd8oDp4yINh93+SfM9v5p8qaZr0ACrfQh5IwahJVJSVK/5MisuZQNh6HFk44iSd4Wx2KuxV2K uxV2KuxV2KvMvzu/NIeUNHGnaa4/xDqKH0D1+rwmqmcj+auye+/ahw9XqfDFD6i4Gu1fhRofUXyl HHeX96scayXV7dSBVUVeSSWRqDxLMzHNIASXnQDI+ZfUP5SflHY+U7SLVNSRZ/McyfG5oy2yuN44 6VHLsz/QNuu70ulEBZ+p6LRaIYxZ+r7maeYPM9lo8VH/AHt04rHbg7/6zeAyOs10MA75dzPV6yOE d8u55zqevX+pT+rdScqfYjGyKP8AJGcrqNTPMbkXm8+pnlNyKC9fMdot3r4rbvXxW3evitu9fFbd 6+K2718Vt3r4rbvXxW3evitu9fFbd6+K2718Vt3r4rbvXxW2VeSdGuLm7TUpC0dtAaxkbGR+lB/k jv8Ad45ueydHKUxkO0R9rtuzNKZS4ztEfayTzr5v07yn5bvNbv2HC3WkENaNNM393Evux+4VPbOm JoO9y5BCNl8MXdy9zdTXDqqvM7SMqDioLkkhR2G+YzzxNvtb8j9Bu9D/ACw0S0vAVuZY3unjIoVF zI0qKQe4RhX3zIiNne6WBjjALO8k5DsVdirsVdirsVdiqW+ZNf0/y9oV7rOoNxtbKIyOB1Y9FRa/ tOxCj3OQyTEYkno15cghEyPIPiXzT5l1LzLr15rWovyubt+XEfZRBskaf5KLQDOeyTM5GReVy5Tk kZHq9x/IP8tUsbSPzbqsVb26X/cXEw/uoWFPWIP7Ug+z/k/PbZ6LT0OM8+juOztJQ45czyem+afM 8GiWdRR7yWot4j+LN/kj8cnrtaMEf6R5OTrdYMMf6R5PKbrUbi6uHuLiQyTSGruepOcjknKcjKRs l5WeQyNk2SpevkGFu9fFbV7SC9vJfStIXnk/ljUtT3NOmTx4pTNRFlsx45TNRFsis/IHmCYBpjFb A9VduTfcgYfjmyx9j5pc6i7DH2TllzoI8flrdUFdQQHuBGT/AMbZkfyHL+d9jf8AyNL+d9jf/Ktb n/q4J/yLP/NWP8hn+d9n7U/yMf532O/5Vrc/9XBP+RZ/5qx/kM/zvs/av8jH+d9jv+Va3P8A1cE/ 5Fn/AJqx/kM/zvs/av8AIx/nfY7/AJVrc/8AVwT/AJFn/mrH+Qz/ADvs/av8jH+d9jv+Va3P/VwT /kWf+asf5DP877P2r/Ix/nfY7/lWtz/1cE/5Fn/mrH+Qz/O+z9q/yMf532O/5Vrc/wDVwT/kWf8A mrH+Qz/O+z9q/wAjH+d9jHfMmiyaHdRW7zicyx+pyC8abkU6nwzXa3RnBIRu7DrtZpTgkBd2Eo9f MNxLd6+K2yXyn5XuNXkW5uAY9OU7t0MhH7K+3ic2eg7OOY8Utofe7LQ6E5TxHaH3vRL2/wBL0TSZ bu6kSz06xjLyOdlRFH+dB1JzqoxERQ2Ael9MI9wD5D/Nn8z73zzrfNA0GiWZK6daN132MslNub/8 KNvEmmUrdLqNQch8k4/Ib8rJPOPmFdS1CEny7pbh7ksPhnmFGS3HiOhf/J27jJQjbPSYOOVn6Q+x AABQdMud07FXYq7FXYq7FXYq7FXzx/zk750Z7qy8o2r/ALuELeajQ9XaohjP+qtXPzXwzVdoZdxA Ol7Uz7iA95eZ/lZ5NPmvzdbWUqk6fb/6TqDD/fSEfB/s2IX5VPbMXTYeOddHB0eDxMgHTq+sry8t NN0+S4lpFa2yVIUAAKooFUfgBm7yZIwiZHkHpMmSOOJkeQeJ6zrtzquoy3s5+KQ/AlahEH2VHyzj NRnllmZF43Uag5ZmRQX1jKGi3fWMVtmvlTyJPfIl7qnKG0ajRwDaSQeJ/lU/fm50XZRn6sm0e7vd zouyzP1T2j3d70S1trDT7X07eNLa3jFTSigADdmP6yc6HHijAVEUHoMeOMBURQYbr353fl3o7tG2 pfX516xWK+v/AMlBSL/h8hLUQHVoya7FHrfuYy//ADk55RDHjpeoFexIgBp8vUOV/m49xaP5Th3F r/oZ3yn/ANWq/wDuh/6qYfzce5f5Th3Fr/oZ3yn/ANWq/wDuh/6qY/mo9y/ynDuLv+hnvKX/AFar /wC6H/qph/MjuT/KUO4u/wChn/KX/Vqv/uh/6qY/mR3L/KUO4tf9DP8AlL/q1X/3Q/8AVTD+YC/y lDuLv+hoPKX/AFatQ+6H/qph/MBf5Sh3F6D5E886f5y0RtXsYJbeBZngMc/HnyQKSfgLCnxZbCXE LcvBmGSNhiv5py8dYtB/y7/8btnOdt/3kf6v6XQ9tH95H+r+lhX1jNM6a2a+UPJE19wvtUUx2X2o oDUPKOxP8q/rzc6Dswz9U9o93e7nQdmmfqntHu72farrGkaDpMt/qE0dlp1olXkOyqo2CqoFST0C gVPbOjAER5PQkxhHuAfKX5rfm5qnnW9NrBytfL9u5NradGkI2Es1OreC9F/HKpSt02o1JyGv4UB+ WH5Ya1591oWtqDb6ZbkHUdRIqsSn9lf5pG/ZX6TtjGNscGA5D5PtHy55d0ny7o1ro+kwC3sbROEa DqT1Z2P7TMd2PjlwFO8hARFBMsLJ2KuxV2KuxV2KuxVZPPFbwSTzMEhiVnkc9AqipJ+QwE0gmt3w t5s1+fzB5l1LWpq8764eVVP7KE0jT/YIAv0ZzuSfFInveSzZOOZl3voH8gfLS6V5OOpypS71h/WJ PUQR1SIfT8Tf7LNtocfDC+93vZuHhx8XWSv+a/mAqbfRompUevdAd+0an8T92a7tnUcsY95/Q4Hb Wp5Yx7z+h5x6+aB5+3evits9/Lnymt6RrF+nK1RqWsLdJGU7uR/Kp6eJzddl6Hj/AHkuXR3fZWh4 /wB5P6ejNvN/nHRvKujyanqklEHwwQLQyTSU2RAe/wCrvnQZMggLL0GbNHHGy+XvPf5peZvN1w63 MxtdLr+602FiIgK7GTp6je7fQBmsyZpT9zoM+qnkO/LuYzpmkatqtyLXTLKe+uTv6NtG8r08eKAn K4xJ5NEYGRoC2WRfkl+aksayL5enCt0DvCjfSrOCMuGCfc5A0eX+au/5Ub+a3/UvTf8AI2D/AKqY fAn3J/JZf5rX/KjfzX/6l6b/AJGwf9VMPgT7l/J5f5rX/KjPzX/6l6b/AJGwf9VMPgy7k/k8v81r /lRn5r/9S9N/yNg/6qYfBl3L+Ty9zv8AlRf5r/8AUvTf8jYP+qmHwZdyfyeXuYXqem32mahcadfx GC9tJGiuISQSjoaMpKkjY4KpolEg0X0v/wA43n/kHsn/ADHz/wDEI8ysP0u57P8A7v4r/wA01nm8 wWEECNLNJbgJGgLMxMjbADNF2xEyyxA3NfpdT2zEyyxA3NfpTfyh+XsVnwvtYCy3Yo0drs0cZ8W7 M34fPMrQ9liHqyby7u5ytD2UIerJvLu7k984edtA8p6U2o6vOEXcQW60MszgfYjXv8+g75uCadtl yxgLL5S/MT8zNd87aj6t231fTYWP1LTkPwRjpyY/tuR1Y/RQZRKVukz55ZDvyRP5XflPrvn3U+MA Nro0DUvtTZSVXofTj/nkIPTt1OGMbTg05yHyfZPlfyvovljRbfR9Htxb2VuNh1Z2P2pJG/adu5/h lwFO7x4xAUE1ws3Yq7FXYq7FXYq7FXYqwj86dZOk/lnrcytxluIRZx+J+ssImp/sGY5j6qVYy4mt nw4pfJ8c2drLd3kFpCKzXEiRRjxZ2Cj8TmjiLNPNRjZp9pabZwafp1rYW4pBaRJBEP8AJjUKv4DO jjGhT10IiIAHR4D5m1r9Ka9fX3Lkksrekf8AitfhT/hQM4zVZfEySl3l4bV5/Eyyl3n+xLPXzHce 0foNhLq+sWmnRGjXEgVmH7KDd2+hQTl2nwnJMRHVu02I5cggOr6BU2Olab1W3sbKEksdlSKJakn5 Ab52cYiEaHIPdRjGEaG0QHyV+Yvni883+Ypb+QstlETHp9sTtHCDsafzP1b+wZq8uQzlbzmpznLK +nRlP5Ofkvdec5v0rqnO18twsQXX4ZLl1O8cRPRR+0/0DetLMGDi3PJv0mjOTc/S+p9C8u6HoFit ho1lFY2i/wC64VpUjbk7fadvdiTmxjEAUHeQxxgKiKTHJM3Yq7FXYq7FXYq+GPzX/wDJleZv+2jc f8nDmFP6i87qP7yXve5f844tT8vpP+Y+b/iEeZGHk7Ts/wDu/i9MNram7F4YlN0E9ITEVYJUniD2 3OT4I8XFW7l+HHi4q9TBvzJ/OLRPJ8L2kHG/11h+7slPwx1GzTsPsj/J+0fYb4JTpo1Gqjj25yfM HmXzPrfmTVJNT1i5a5uX2WuyInZI1GyqPAfrykm3T5MhmbL0L8ofyI1XzjJFq2sCSw8tA1ElOM11 T9mGvRPF/ur2nGFuTp9IZ7naL6z0fRtL0XTYNM0q2S0sbZQkMEYoAB+JJ7k7nvl1O3jERFBGYsnY q7FXYq7FXYq7FXYq7FXjf/OUV8YvJOnWimhudQVm90ihkJHT+ZlOYOvPoA83WdqS/dgebwn8rbIX n5haFERXhcien/GBTN/xpmBpo3kDqtHG8sfe+qdU+tNpl2toOV00Mgt1J41kKHgKnp8WbrKDwmud PSZgeA8POjTxP/lV3nf/AJZE/wCR0X/NWcx/Jefu+0PI/wAj6ju+0O/5Vd53/wCWRP8AkdF/zVj/ ACXn7vtC/wAj6ju+0Mu/LbyRrOjavPf6tCsdIfTt6Or/ABOw5H4SaUC0+nNh2boZ45mUx02dn2V2 fkxZDKY6bLfz88wyab5INlC3GbVZlt2p19JQZJPv4qp+ebHVSqNd7sO0cnDjrvfPvlLy9ceY/M2m 6HbnjJfzrEz9eCdZHp/kIC30Zr4Q4iA6XFj45CPe+6NJ0qx0nTLXTLCIQ2VnEsMEQ7KgoK+J8T3O bgAAUHp4xERQ5BF4WTsVdirsVdirsVdir4X/ADX/APJleZv+2jcf8nDmHPmXntR/eS972v8A5x8u 7e1/Li4uLmVIbeK9neWWRgqKojjqWY0AGX4uTs9Cax797GvzK/5yAeT1dK8nuUTdJtXIox7EW6np /rnfw8cEsnc06jXdIfN4iqXd7dhEWS5u7l6KoDSSSSOewFWZmJ+nK3Xbkvov8o/+cblhMOued4g8 uz22iVBVe4a5I2Y/8Vjb+buuXRh3uz0+i6z+T6ERERFRFCooAVQKAAbAADLHZN4q7FXYq7FXYq7F XYq7FXYq7FXg/wDzla7DTPLqA/C01yxHuEjA/Wc1/aHIOo7W5R+LyD8qtX0nR/PFjqOqTi3tIFmr MwYhWeFkGygnflTMTTSEZglwNFOMMgMuT3v/AJW9+XX/AFeo/wDkXN/zRm0/M4+93n53F/Od/wAr e/Lr/q9R/wDIub/mjH8zj71/O4v5zv8Alb/5c/8AV6j/AORc3/NGH8xDvX87i/nNf8rf/Ln/AKvc f/Iub/mjH8xDvX87i/nPJ/z0856D5ik0ZNGvVu4bUXDTcFdaNIYwteYWuyGmYupyCVU63tDPGdcJ t3/ONNrFP+Z0crirWtncSxezELF/xGQ5HSj1sezheX4PrXNk752KuxV2KuxV2KuxV2Kvhb81/wDy Zfmb/to3H/Jw5iS5l57Uf3kvekTa9q50ZdF+tOulLK0/1RTRGlag5MB9o/CKV6dsbYcZrh6Jj5L8 h+ZvOWqDT9DtTKVobi5eqwQqf2pZKUHsOp7A5KMbZ4sMpmg+s/yw/Jfy15GhW5AGoa860m1OVQON RusCb+mvv9o9zTbL4xp3GDTRx+ZehZJyXYq7FXYq7FXYq7FXYq7FXYq7FXYq8R/5yj0fVL3Q9FvL S2kuLeznmF08al/T9VU4FgKkAlCK/wBcwddEkAh1fakCYgjo+b/0dqH/ACyy/wDAN/TNbwl0vCe5 r9Hah/yyy/8AAN/TJcJTwlr9Hah/yyy/8i2/ph4SvCWv0dqH/LLL/wAi2/ph4SnhLX6O1D/llm/5 Ft/TJcJXhLX6O1D/AJZZv+Rbf0w0U8Jey/8AOMPl3Wl85Xery2ksWnQ2UkJuZEZUaWSSMhFYihag JPhmXpYnit2PZ2M8ZNbU+nszndOxV2KpNa+c/Kd3rUmiW2rWs2rRVD2SSqZKqKsAAdyvcDcd8gMk SavdrGaBlwgi05ybY7FXYq7FXwt+bSOn5meZg6lSdQnNCKbM5IP0g1zFlzef1H95L3s4/K3/AJx1 1rzF6Oq+ZfU0rRWo8dvTjdzr2orD92h/mYVPYd8nHHbkafRGW8tg+oNA8vaL5f0yLTNGs47KxhFE ijHU92ZjVmY92YknLgKdtCAiKCY4WTsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVS/XfMGjaBpsupaxdx2dlCKvLIep7KqirMx7KoqcjKQiLLCeSMBZNB8z/mf/wA5Caz5g9XS /LnqaXoxqrz143U696sp/dof5VNT3PbNfl1JlsNg6XU6+U9o7RYR+VLuv5k+WirFSdQgFQabFwCP pByrD9YcbS/3kfe+38270zsVdirsVSW78leUbvW49dutItJtXioUvXiUyVUUViSN2X9kncdsFBrO KJN1unWFsdirsVfLP/OUevawvnm00xLyWOwgsYpY7ZHKp6kjyBnIB3YhQK5j5Tu6jXzPHXSnjH6S 1H/lqm/5GN/XIODZaOpaj/y1Tf8AIxv65JNlo6lqP/LVN/yMb+uFbLX6S1H/AJapv+Rjf1ySbLX6 T1H/AJapv+Rjf1wpstfpPUf+Wqb/AJGN/XJLZfTf/OJ+t6tfaDrlleXUlxb2U8BtUlYv6frK/MKT UhSUBp0r88kHaaGRIIL3fC5zsVdirsVdirsVdirsVdirsVdirsVYB+Zf5yeXPJMLWxIv9cZaxabE wBSoqGnbf019vtHsKb5RmziHvcTU6yOLbnLufKvnPz15k836mb/Wroylai3tkqsEKn9mNK0Huep7 k5rZ5DM2XRZs0shuSXjy9rR0J9e+qSLpCTLb/XGHGNpWBIRCftEcTWnTvgEDV9GPhy4eKtk4/Kv/ AMmR5a/7aNv/AMnBlmH6g2ab+8j733Dm2emdirsVdirsVdirsVdir5D/AOcnbuKf80JIkNWtbK3h lHgxDS/8RkGY+Tm6XXG8nwTD/nG3yB5Z81y6/J5g05L+CzW1W35tInF5TKWpwZa7IK5LHG2eiwxn fEHt/wDyoj8pf+pdh/5G3H/VTLOEOf8AlMfc7/lRH5S/9S7D/wAjbj/qpjwhfyuPud/yof8AKX/q XYf+Rtx/1Uw8IX8rj7nf8qH/ACk/6l2H/kbcf9VMaX8rj7ny5+eOhaFoH5k6lpGiWy2ljapb0t1L sFaS3SRt3LHfnXrjTrNTARmQHrn/ADiEjjS/MrkfA09qoPuqSEj/AIYYXL0HIvoTF2DsVdirsVdi rsVdirsVdirsVad0jRndgiICzMxoABuSScVeBfmv/wA5ErCZtF8lyh5d0udaoCq9itsDsT/xYdv5 f5swc+q6R+bqdV2h/DD5/qfPTNeXt2WYyXV5cvUk8pJJJHP0szMTmDzdRuT5vevyt/5xxeX0dY86 oUjNHg0UEhj4G5YfZ/1F38SN1zOw6XrJ22m7P6z+X62Uf85KWttafldbW1rEkFtDf26RQxqERFEc oAVRQAZbqR6G/tAAYqHe+fvyr/8AJk+Wv+2jb/8AJwZiYvqDqtN/eR977izaPSuxV2KuxV2KuxV2 KoTWNW0/R9LutU1CUQWVnE01xK3ZUFTTxJ6AdziSxlIRFl8F+b/MVx5k8z6nrtwCr6hcPMEJrwQm kaV/yEAX6MxjuXn8k+KRPe+pf+cZvLEmkfl2NQnXjPrU7XS16iBQIogfnxZx7Nl0Bs7bQw4YX3sy 80+YrywvY7a0kCkJylqobdjsNx4DNL2p2hPFMRgem7i67WSxzEYnokv+Mdc/38v/AAC/0zWfyvqO /wCwOF/KOXv+x3+Mdc/38v8AwC/0x/lfUd/2Bf5Ry9/2M9tDKbWEzGsxjUyGlPioK7fPOsxE8A4u dC3oMd8IvnT4d/OvUhqH5q+ZbgEkJeNbb+Nqq25/5NZY6fUG8he8f84mWBi8h6nesKG61J1X3SKG MA9f5mYYudoR6SfN7fi5rsVdirsVdirsVdirsVdiqD1fWNM0fTp9S1O5S0sbdS808hoAB+JJ7Abn tglIAWWM5iIs8nyv+bX54ap5ukl0rSS9j5cBoUrxluaftTU6J4J99e2rz6gz2HJ0Oq1pybDaP3sB 8seVdd80atHpWi2rXN1JuxGyRp3eR+iqPE/ryqEDI0HFxYpTNRfVv5X/AJLaB5KhS8nC6h5gZf3l 8y/DFXqsCn7I7cvtH2G2bPDgEPe77TaOOPfnJ6D9ZgNx9WEimcLzMYPxBa0qRlniR4uG93K4xfDe 7yf/AJyf/wDJbRf9tGD/AJNy5VqfpcLtH+7+L54/Kv8A8mT5a/7aNv8A8nBmJi+oOq0395H3vuPN m9I7FXYq7FXYq7FUu17zHoXl+wa/1q+hsLRf92TMByI34ov2nb/JUE4CaYzmIiyafJ/50fnbd+dp zpOlc7XyzAwbg3wyXTqdpJQOij9lPpO9KVSlbp9Tqjk2H0sZ/K38vL/zz5pg02IMmnwlZdUugNoo AdwD/O/2V+/oDgjG2rBhOSVdH29HHY6XpqRxqtvY2UISONdlSKJaKo+SigyycxGJJ5B3kiIRvoHl mpak99fz3b7GViQPBeij6BnD6jMcuQzPV5TNlM5mR6ob1cparRui2xvtVtbYCodxz/1F+Jv+FGZG kw+JljHvLfpsfHkEfN6bq+pW2l6VeandHjbWMElzMfBIkLt+C53L1cjQt+eeoX09/f3N9cHlPdSv PKfF5GLMfvOSdATZt9tfkVoZ0f8AKvQYHXjLcwm9l8SbpzKtf+ebKMBdzpo1AM9wN7sVdirsVdir sVdirsVSvzL5l0by1o0+r6vOILOAbnqzsfsxxr+07dh/DIzmIiy15MkYRs8nyD+Zv5p65551LlOT a6RA1bLTVaqr1HqSfzyEHr26DNTmzGZ8nntTqpZT5dyl+W/5Ya/551P0rNfq+mQsPrupOD6cYO/F R+3IR0UfTQY4cJmfJdPppZTty731x5M8j+XvJ+kJpujW4jXY3Fw1DNM4H25H7+w6Dtm1x4xEUHoM OGOMVFLvM3nuG152mmMJbkbPcdUQ/wCT/M34Zp9d2qIenHvLv7nXaztIR9MNz3pd+XlzLca1eSSu ZJHhLO7GpJ5r1JzF7GkZZZE7mv0uP2VIyySJ50kn/OUH/ktov+2jB/yblze6n6XP7R/u/i+VtN1K +0zULfUbCUwXtpIstvMACUdDVWAYEbZhjZ0sZEGwzH/len5r/wDUwzf8ioP+qeW+LLvcj85l72v+ V6fmv/1MM3/IqD/qnh8WXen83l72v+V6/mx/1MM3/IqD/qnkvEl3p/N5e9r/AJXr+bH/AFMM3/Iq 3/6p4fEl3r+by97X/K9vzZ/6mGb/AJFW/wD1Tw8ck/m8vesm/PH815Y2jbzFcBW2JRIUb6GVAw+g 4eMr+ayd7ENV1nV9WuTdapez39ydvWuZHlenhyck4tMpE8zbLPy7/J/zd53uUe0gNno9f32rTqRE ADuIxsZW9l+kjJRjbfh00p+59feR/I2g+TNCi0jR4uKD4ri4ehlnlpQySMOp8B0A2GXAU7nFiEBQ Y75481JcudMsn5QIf9IlXo7D9kew/XnN9q6/j/dw+nq6TtHW8Xojy6sQ9XNG6m3erits5/LnS2Im 1SRdj+5t69+7sP1ffnQ9i6bnkPuH6Xddk4Ocz7gxf/nJ3zgujeQRo8L8b7XpPQAB3FvFR5m+n4U/ 2WdCHYazJUK73yx5P8u3HmTzTpehQV56hcJCzD9mMmsj/wCwQFvoyTrccOKQD9A7e3htreK3gQRw woscSDoqqKKB8gMg70BUxV2KuxV2KuxV2KuxVLvMPmDSvL+j3Or6rMILK1XlI56k9FVR3ZjsB45G chEWWGTIIRs8nxx+Zn5k6t551v65cgwafb1TT7EGqxITuW/mdqfE38M1GbKZm3nNTqDllZ5dEz/K f8otT873ourjlaeXrdwLq76NIRuYoKihbxbovz2yeDAZ+5s0ukOU3/C+stJ0zR9A0mKw06GOx020 SiRrsqjqWZj1J6lianNn6YDuAd/GMYRobAMF82efZL0vZaYxjs/syT7hpB4D+Vf15zmv7UM/Rj2j 397oNb2kZ+mH09/ew/1c0rqrZj+WMldXuv8AmH/43XN12J/eS/q/pdt2P/eH3Mj/ADB8j6d520Fd G1C4mtoFnS4EkHHnyQMoHxhhT486OcOIU7vPhGSNF5v/ANCq+Tf+rvqP3wf9U8q/LhxP5Nh3l3/Q qnk3/q76j98H/VPD+XC/ybDvLX/Qqfk3/q76j98H/VPHwAn+Tod5d/0Kn5M/6u+o/fB/1Tw+CF/k 6HeWv+hUvJn/AFd9R++D/qnh8EL/ACdDvLv+hUfJn/V31H74P+qePhBf5Ph3ltf+cUfJPIF9W1Ir X4gGgBI9j6R/Vh8MJ/k+HeWV+XfyE/LDQ3WVdL/SNwvSXUG+sf8AJMhYf+EyQgA3Q0mOPS2d3N9Y ada+pPIltbRgKtaKoAGyqB+AGRyZYwFyNBunkjAXI0Hn3mj8wZb1Xs9M5Q2pqsk52dx4D+Vfxznd d2qZ+nHtHv6l0Os7TM/TDaPew/1c0rqbd6uK2jdG0+51XUIrKAfFIfjfsiD7TH5Zfp9PLLMRDbgw nLMRD2S2itNOsEhQiK1tk+0xAAVRUsxP3k52uLGIRERyD1+OAhERHIPiX85vPx86+eLvUIXJ0u1/ 0TTFPT0Yyfjp/wAWOS/yIHbLwHUZ8nHK+j0//nE/yM0l3fec7uP93CGsdMqOsjAGeQf6q0QH3bww ScnRY/4n0vkXYuxV2KuxV2KuxV2KuJAFT0xV8i/nn+Zz+bvMDafYS18v6Y7JbcT8M8o+F5z4jsn+ Tv3OarU5uM0OQee1up8SVD6QlP5U/lneed9a4SFoNFtCG1C7XrvuIo67c2/4Ub+AMcGHjPkw0mmO WX9Ec31zZ22laJpMVrbJHZabYxhY0HwoiKP86nuc2hMYR32Aeh9MI90Q8z83edZ9Xla1tiY9NQ7L 0aQj9pvbwGctr+0DmPDHaH3vNa7XnKeGO0PvYz6uax1tu9XFbTjyz5nfQruW4SATmWP0+JbjTcGv Q+GZmi1ZwSMquw5ek1fgyJq7DI/+VsT/APVuT/kaf+ac2X8uH+b9v7HYfy0f5v2u/wCVsT/9W5P+ Rp/5px/lw/zft/Yv8tH+b9rv+VsT/wDVuT/kaf8AmnH+XD/N+39i/wAtH+b9rv8AlbE//VuT/kaf +acf5cP837f2L/LR/m/a7/lbE/8A1bk/5Gn/AJpx/lw/zft/Yv8ALR/m/a7/AJWxP/1bk/5Gn/mn H+XD/N+39i/y0f5v2u/5WxP/ANW5P+Rp/wCacf5cP837f2L/AC0f5v2tH82Lmh46egPYmQn/AI1G D+XJfzftX+Wj/N+1L7z8zPME4Kw+lajsUXk33uWH4Zj5O2M0uVR/Hm4+TtbLLlQY5eaneXsvq3c7 zyfzSMWp7CvTNbkyymbkbLr8mWUzcjah6uQYW71cVtWtIbi7uY7a2QyzyniiL1JyePHKchGIslnC BmRGO5L1zyp5ch0SyoxEl7MAbiUdPZF/yR+OddodEMEf6R5vVaLRjDH+kebyP/nJH82VsLGTyXo8 3+n3af7mJkP91AwqIKj9qUfa8F/1ttgAjV56HCHz15R8rap5q8xWWhaYnK6vZAvM/ZjQbvI/+Sig sck4EIGRoPvTyt5c03y15esNC01eNpYRCJCftMeryNT9p2JZvc5W7uEBEUE0xZOxV2KuxV2KuxV2 KsH/ADr1270X8tNZu7QlbiWNLVHBoVFw6xOwI7hGNPfKdRKoFxdZMxxEh8Z20DXFzFboyq8zrGrO eKgsaAsew3zUgPOAWafa/kzyvp3lXy7aaLYgcIFrNNSjSzN/eSt7sfuFB2zc44CIoPUYcQxxEQwr 8w/NVzc38mkxcobW2akwNVMj9an/ACR+z49fDOc7V1kpSOMbRH2vP9qayUpHGNoj7WGermndRbvV xW3eritu9XFbd6uK271cVt3q4rbvVxW3eritu9XFbd6uK271cVt3q4rbvVxW3eritpjo2janrFx6 NlEWAP7yU7RoP8pv8zl+n0s8pqIcjT6aeU1EPV/LPlew0OCqfvrxxSW5YUP+qo/ZXOq0ehhgG28u 96fR6KOEd8u9hH5y/nTY+T7OXSdKkWfzPOnwKKMlqrjaSWu3Km6p9J265wDPUagQ2H1Pkqaa+1G/ eWRpLu+vJSzsaySyyyNU+JZmY5Y6vcl9hfkJ+US+SdFOp6pGD5l1NB9YHX6tAaMtuD/NUBpD40H7 NTCRdrpsHALPMvV8i5LsVdirsVdirsVdirsVSXzp5at/M/lbUtCnIVb6EpHIRUJKtGif/YyKpyGS HFEhqzY+OBj3vhrVdMvtK1K602+iMN5ZyNDPGezoaH5jwOagxo0XmZRMTR5vpT8j/wAzk8xaQuia lN/uc05AFZjU3EC0CyVPV16P9/c02Ony8Qo83eaHU8ceE/UGU+dvKa6zb/WrUBdShX4ewlUb8D7+ BzF7R0AzDij9Y+1r7R0PjDij9Y+15FIZIpGjkUpIhKujChBGxBBzlSCDReVIINFb6uBFu9XFbd6u K271cVt3q4rbvVxW3eritu9XFbd6uK271cVt3q4ra5Gd2CoCzHooFScIFpG6c6d5R8y35HpWMkaH /dkw9JaePxUJ+gZl4tBmnyj89nLxaDNPlH57Mx0b8sLaIrLq1wZ2G/1eGqp9Ln4j9FM22n7GiN8h vyDttP2NEb5DfkPx+pma/o/TLI09KzsoFLMTxjjRRuWYmgHuTm6hCMRURQdzGEYCgKDw380P+cj4 IUm0nyW/qzmqTayw+BOx+rqftH/LIp4V65YA4ebV9I/N88u97f3pZjJdXt1JUk8pJZZZG+lmZmP0 5N1+5L6o/In8hU8urD5m80Qq+vMOVjYtRltAejt1BmP/AAvz6QlJ2en03DvLm9yyLmOxV2KuxV2K uxV2KuxV2KuxV4v/AM5AflHJ5gtT5o0OHnrVolL22QVa5gQbMoHWSMdv2l26gDMXUYb3HN12u0vG OKPN8y6Zql/peoQajp8zW95bOJIJk6qw/WOxB65hRJBsOmhIxNjm+qPyv/NPT/OWn+lNxttdtlBu 7QGgcDb1Yq9UPcdVP0E7HFlEh5u/0uqGQf0kd5z8lwazGbuz4w6mg69FlA/Zb/K8G+/2wtf2eMo4 o7T+9xu0OzhmHFHaf3vI7mK4tbiS3uI2iniPGSNhQg5y84GJo7F5WcTE0RRCl6uRY2zL8sLSxvdX u47y3iuUW35KkyLIAeaioDA5tuyMcZ5CJAHbq7fsfHGeQiQB26vSf8PeXf8Aq12f/IiL/mnN/wDl MX8yPyD0P5TD/Mj8g7/D3l3/AKtdn/yIi/5px/KYv5kfkF/KYf5kfkHf4e8u/wDVrs/+REX/ADTj +UxfzI/IL+Uw/wAyPyDv8PeXf+rXZ/8AIiL/AJpx/KYv5kfkF/KYf5kfkHf4e8u/9Wuz/wCREX/N OP5TF/Mj8gv5TD/Mj8g7/D3l3/q12f8AyIi/5px/KYv5kfkF/KYf5kfkHf4e8u/9Wuz/AOREX/NO P5TF/Mj8gv5TD/Mj8gvTRNCQUTTrVR1oIYx/xrkhpsQ/hj8gkabEP4Y/IIuGG3gFIYkiHgihf1ZZ GAHIU2xgByFJVrXnTypoisdW1a1s2XrFJKokNPCMEufoGSRLJGPMvMfNH/OTnluzV4vL1nLqk/Rb iatvbj3of3rfLivzw04s9bEfTu8P85fmZ5w83vTWL0m0B5R2EI9O3U9vgH2iPFyT75IBwcmaU+aE 8oeRvNHm/URYaDYvdSAj1pvswxA/tSyH4VH4ntXCjHjlI0H1n+U35E+X/IyJqN2V1PzIV+K9Zf3c HIfEtup6eHM/EfYEjImTs8OnEN+Zen5FyXYq7FXYq7FXYq7FXYq7FXYq7FXYq+ffzz/Iz1frHmry rb/vd5dU0uIfa7tNAo/a7ug69Rv1xM2DqHVazR/xR+IfPul6rqGlahBqGnztbXlsweGZDQg/xB6E HYjMaJINh1cJGJsc30z+V/5vad5rgSwvytpr8a/FDWiTgDd4q9/FOo7VGZ2PLxe93ul1YybHaTJP NXlHT9fgq37i+QUhulG/+q4/aX9WUazQxzDul3sNboIZx3S73jmsaTqWj3jWl/EY5BujdUdf5kbu M5bPgnilwyDyWfTzxS4ZBlv5RSV1u8/5hv8AmYubLsX+8P8AV/S7TsP+8l/V/SmP57a5q2keSUu9 LvJbK5N5Ehmgco3Eo5K1HbbOgyGg73WzMYWDW758/wCVmfmD/wBTDf8A/I9/65VxF1X5jJ/OLX/K zfzB/wCpiv8A/ke/9cPEV/MZP5xaP5m/mF/1MV//AMj3/rhsp/MZO8tf8rN/ML/qYr//AJHv/XJW U+Pk7y1/ys78wv8AqYr/AP5Hv/XDZXx595a/5Wd+Yf8A1MV//wAj3/rhT48+8tH8z/zD/wCpiv8A /ke/9ckvjz7ylt95u813y8b3Wr66X+Wa5mkH3Mx8cKDkkeZKUZJgynyv+Vvn/wAzun6I0W4kgfpd yr6FvTx9WXgh+QJOFuhhlLkHuHkn/nE2wgZLrzjqJu3FCdOsSyRfJ5mAkYf6oX54OJzMeiH8Re8a Nomj6JYR6fpFnDY2Uf2IIECLXuTTqT3J3ORc6MQBQRuKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q8M/Of8AIGPVzP5i8pxLFqhq97pa0WO4Pd4ugWXxHRvZvtY+XDe4dbqtFxeqPPufM9buyu/92W13 bv8A5UckciH6GVlIzGdTuC94/LL89IbwRaP5qlWG72S31RqLHJ4CboEb/K6HvTvlY8vQu202tv0z 5971bWNI03WLM2t9EJYzujDZkP8AMjdjhz4IZY8Mg5efTwyx4ZC2MeTvJ995e8xXbs4nsJYCsFwN jXmp4uvY0+jNfotDLDlPWJHN1ug7PlgzHrEjY/FJf+ciWr5Aj/5jof8AiEmbLJyczX/3fxeB+RtG s9c846No96XFpf3kNvOYyFfhI4U8SQaH6MqiN3VYoiUgD1fTX/QrX5af791L/kfH/wBUsu4A7X8h j83f9Cs/ln/v3Uv+kiP/AKpYeAL+Rx+bX/QrH5Z/791L/pIj/wCqWPCE/kYebv8AoVj8s/8Afupf 9JEf/VLDS/kYebv+hV/yy/37qX/SRH/1SxpfyMPNr/oVb8sv9+6l/wBJEf8A1Swr+Sh5pjY/841f lLbMDLp094RT+/uZqVHiImjxZjSYx0Zdov5ceQtEZX0vQLG2lT7M4hR5R/z1cM/44tscURyDI8Wx 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvMfzZ/JDRvOsUmo2HDTvMir8N3SkU9Oi3A UE9Ng4+Ie4AGVTxiXvcPU6QZNxtJ8meYvLmt+XdVm0vWbR7O9hPxRuNiOzIw+FlPZlNMxzGnTTxm Jos4/Lf86NT8t+npurc7/RBRU3rNbj/isn7S/wCQT8iO9kMlOXp9YYbHeL6L0bWtK1rT4tQ0u5S6 s5h8EqHv3Vgd1YdwdxmQDbuITEhYee/85Ef8oDH/AMx0P/EJMjk5OJr/AO7+LxP8p/8AyZnlj/tp W/8AycGVx5ut0/8AeD3vuzL3fuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2Ksb88/l95a86aUbDWbfkyVNteR0WeBj+1G9D9KmoPcZGUQWrLhjkFF8kfmX+UPm fyLdF7pPrmjO1LbVIlPpmvRZRv6b+x2PYnKJQIdNn00sZ8kh8pedfMHlXUPrmk3BQMR9Ytn+KGVR 2dP1EbjscMSQwxZpQNh6J+Y35p6F5x/LuOGIG01eK8he4sHNdgkgLxvQB1/EdxlhlYczPqY5Mfnb B/yn/wDJmeWP+2lbf8nBkY83F0/1j3vu3LnfuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxVSu7O0vbWW0vIUuLWdSk0Eqh0dT1VlaoIxQQDsXzj+av/ADjR NB62seR1M0O7zaIzVkUd/qzN9of5DGvgTsMrMO51ufRdYfJ8+zwzQTPBPG0U0TFJYnBVlZTQqync EHI066mT/lP/AOTM8sf9tK2/5ODJBu0/1j3vu7LHfOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV59+Zv5K+VvPML3DoNP10CkWqQqKtQUCzpsJV/4 Ydj2wEOPm00Z+ReN/l7/AM4//mFo/wCZOm3eo20UelaVdJcvqKTRvHKsRLKI0B9WrFafEop39wA4 eLSTExfIPqXJO0dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//Z uuid:67a1db2b-6f0d-4b65-99fa-82dd25da8f67 image/svg+xml end='w' merkaartor-0.18.1/Icons/actions/emblem-important.png000066400000000000000000000013151177067165300224620ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs B(xtIME  /u)ZIDAT8˭oQscM[2\vEPX`!la%! HD%DEӚNLkAH,4e~5F) 1F!鿯;;G; D!pBD5Α)A::oVZ2| T#қtuPato2NYrAG~ݺMf&ssc6c)g 4 R)m F9V$sh4Zs'U{-J e|k-ƘN!9"rPUkVcx+sL5IENDB`merkaartor-0.18.1/Icons/actions/find.png000066400000000000000000000020061177067165300201240ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDAT8KL\e߽w08 LkihҘ* h* D6})1.\5FWmL|$( m4Q( HmA% Da>Zv6ē/99A@=p 8ӳvlin󱁁ɽv볬pG\XxcCA!'nOݝ綋=;3*R˲d{,˹36,;צ:=dI&B.8}+_##XT27o7`^"`8]Td)~W Q[Sr<2Z58Rax{Lh/j5p͠Cm ]V]UzU4cd &5e` X 6Dfy^S ɠVПkhPeFbyhz ϧ Y/\ΏI Cf(a;o?Lqt:Z@э{IN)s{F(E#"^"" f00 6F 5 |ĵwED/`XjW*.VXէZPUw:uǚG#YxiF=T'\3[@.D렞LRT䘾 < V-zn 8;I/.^=WVӹ ӝNV{:ܹ7ҹ\[GOKDL3{$}>E=(%\s7'w8ʲIENDB`merkaartor-0.18.1/Icons/actions/join_areas.png000066400000000000000000000071011177067165300213170ustar00rootroot00000000000000PNG  IHDRĴl;sRGB7MS tiCCPiccxgPi CD HIdQ20$L "AD\]"QP ."**7}y>?UoU x"')6 sg2H:`b'5kK?MqpBFr&Xnw%_̴da; ^W8'p7AeH1_pt#2 sbIv վ5WnK"i/ԕge^s1*g {vn:zg,@)'-C,h@$E 4.0f'?Ă$  ԂZ ΃x ;A"C4HR!bC֐ A!P8t( BPT5A@ hzM@GI0V5`} ?S,8W) ߂G`^@BD2 E>)@ʑzF{C>0(EY\Q(*UBDuPPy4-A[t&:]nDGSw aa0L<&S9i\ a&1 X,Vzc#i|l%"v;}#pF8g\(ŕq=a4n /W[\V|1ߍ/$,OE  oD ќK#$VO'HT6ɁFJ'# ]"=$!d[r(9DB~J~/Fs{ES)v,J9,eN/! !]ZMP["IHY Kՠ:Q<1$ hnZ*mnxz!g }^*i,(EZ򂤀04nDF1 cQJAN*JjT԰ԢtttGL~N'(YmY_L#Werr3raymy?lc . We=J4%k82J/L;f"ǜWWvUNWST^Ra䪴aQ>30--[:u<Qٕ3n[vh{;vLtyraW®۹owSۙ7-b={jD{+~),4(,/T)O?-7XlZ|S+odDiVe̲7Qn\^{p(³RSUlH}u[|ޚGl*~<wAK]GF}1̱c7566~>;!8wɬYnIo=vώ?wֵ1 O_3gg[U^ultt s?mo'+ yГ׳|1¥Ksc.On}|%>߾W_sv߮uoX8w}魎&M;k~{hPϰ{wkdh胱1_?xx8zOM`*081lݳǓɗi*9ytӌYٻ/ֿzri.O?k^i/ۿ^_/]F͉o{|KzX^>N/e~~Ǘe \@"D. r \@"D._ YY m*Ј>^zTXtauthorxJM-VOOnP"TIDAT8˽U]LUfg]`ٖJ" ,T@(5mC*[CJ&>TikD>akB4iV6b" V~nofΒmƾ8ɗss{ΙsG  0~HEΑê!ٹ"qŒPRG?db'Z] gb͎-mT3~Y IV"f)#}3ءf]Ǫ,3k#D]Uj1YMIHv:$6؂I?_kTX30i:=0';L+D9vʒZĝT&+rKP>d:)i5n~9+lhWE1<1Z EEi`bzkmh [n 0 JTL qxp"+Uܺ/8Y46wRX`X  'TZ NI酱C8yʁDYҙk17Y^;Yi:J<-Մ&8s{+B<-j=DC9d-R>ynk;'ح,z*WѡezʺQߠϴ A(!w&觩Ș̭W/Go W0: *ˢkxU{)9֖|Y/ E#ӍנIokrVM5iѢ_6IҫߖGu%7IENDB`merkaartor-0.18.1/Icons/actions/join_roads.png000066400000000000000000000016251177067165300213410ustar00rootroot00000000000000PNG  IHDRĴl;tIMER pHYsiTSgAMA a$IDATxڭHSQmӹN]Mm:ɥQh)BDUO I#3̌0藉! 0Mc&SZ7S2܁۽wEOx^yh4B"` v.DC Z8+T fmmE|^.,;0`0ɣPa,J`[sִBzoPeP䒕%H$OԳeQV:)1;] ԦsZ>s(+7B^lX Kúð)ъF'QO 46̎D瓒SgЉ89* G'1ys|8tR"? {8<|͌LH@tA֡P6pb}s!,jU_`j~?$)|5n 쵁  sg`KKph7 ~~^fFZ jrBvz Xai5@ʷ+8[ -߆ Jyxyv@J́|Q /#_xچP7-2-oA4ĊFo Qmޣ aگ0?W0pAP|Q)Vr8:u؁Se/˱(W>u`P>:M OqAS0{R{3VOhW[o[`b]=?+˶\R+xKK,~ɘF;ַ:~.gN6A{ށ䉱Bf6"T*2L,.},oX^JCSIENDB`merkaartor-0.18.1/Icons/actions/list-add.png000066400000000000000000000006021177067165300207050ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs B(xtIME ,+IDAT81KA;OPl,J4! I [-,lr s!1 Xd`af=vVc>jf;q`iݠn0V?575)w)C*.O2"1o\P@Y&v xz~G3agΉ„l=wzS6_ɽUZ}ET-cG܆f%Tn7W5Gؕ_F/-[->`|^4le'IENDB`merkaartor-0.18.1/Icons/actions/list-remove.png000066400000000000000000000003741177067165300214600ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs B(xtIME ;w({IDAT8풱 a F6n` w#8#aֶ"]Y؈ Gx !$_wnN=Tzn?Y+FMIzWvgHi\o$p.009Ʌ;,pp$ݥUIR Wb1OIENDB`merkaartor-0.18.1/Icons/actions/offline.png000066400000000000000000000014471177067165300206360ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsaa0UtEXtSoftwarewww.inkscape.org<IDAT8OHQ,f4jήl5ٌKE T^Brď΃XLDg[NVV|V=|vy333>ڄ^; \,y355ڶM$w]k:Zw#u]<{&''UM0 mJccc׉7.x?y\=yH$rhbbB4VVV(Q:&˲He^u[}>?mn+ѨD$dhzzt]'4)S*hP"n^oYii)Lӄ(0MA$ic cUU& KQx<XEQ`Y8"TUB2S3×X}rHeibvvv!J(H&|f4 L EST.m(eADmll̋n~?o,˝>QMY1??? Bt1 zP[[~``/鶶煢@)@I.\/`dX\n kO)(IENDB`merkaartor-0.18.1/Icons/actions/preferences.png000066400000000000000000000023471177067165300215150ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsaa0UtEXtSoftwarewww.inkscape.org<dIDAT8TkTW^F%ԐƔv6.,4WBB&Y D2#hWص.L&JM PlF3af<%׽ }(|;;5uݽ{ǏJ!fK.}N'ZX$=]ծUX,w@rJR9e2c tsbΝ;t㐣T*saǏwҶS|uڒZmӧG0_xxffŋr3B[KߕR޽{_]vm&===}J)!8Z;i&QT*}k)n߾|…1}DQ4;zJ)2 R<KKKO9c(80MeuB(˲pxx!D(ZcrrH)GGGpxx4a&j6ud2l6KRyfXV? `{vvVr<B~R RJ0ư>|yTZׯ622dy FCEQ>yd״mFQ)eϞ=ŠP*Vwvvv00 ضMm6]8I鵲RT uu] JA)ehj@dpp7c3lԲp_50 ?8'Ϟ=w.eAJ )%}_=_59qĐeYD)˲@)EQZGQ5;;xP(88v6(R&, !Bn# Co\rc mJi !<σ8t: 4!@:1PJ8N>Ba$a'R y2 v]/__zfiw !*J19( BHba}JJx1  àO>]gz{{jij/^A+Ϗn#L;laa[nMH>VrssSonnꕕ955IU*r|qG IcZ;w `@KktGh)%N%%oJڐt=FUUjMQ7lIZjӻUUuvwB}>D<^t mHzhXGI/˲ܘUemI-aԁ7z(_՚>eLRdz,bd|EGN~} 71vIENDB`merkaartor-0.18.1/Icons/actions/reverse_road.png000066400000000000000000000012141177067165300216640ustar00rootroot00000000000000PNG  IHDRĴl;tIME Ç pHYsiTSgAMA aIDATxc`LLMQQ.\hIM?=T|>L Ąol?} 4<],72e]2XD1|PBh_n*S KRX #^_|.{6*@Mr@ g_j*2K2x3.×ǟf?;+Ɵ?Àjb<$p022(x(I~daf7λD1Z R eN ?)K=`c/8hPTa _{9<= 8!6( >}'1\G}}}Hu9E@.\xn\A ٹ$4<<x9alٲ= 8:@Y\j/KnXgbN b aP ߀;eP7Kġ@IENDB`merkaartor-0.18.1/Icons/actions/save.png000066400000000000000000000014361177067165300201500ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDATxڵ]kAMo&闔ŏkZ?oMAH?@HHJAkۚݝYa Bp朰s}lvyP׮oGQ4>lLZRJ[hig2YJ3NR`st>6>uqݼ09R(DBsA8p<\C097Y+$ƱEKM,qsѕ)d2'qXc:`fI`ݚոڗCqjQ8ma8{ʂ5'wt BPi>9ɍ S;~v\4ĹaV:r#dd̰\fw0:[dp}@VQl4?O!0T8) C<}iZًr^z{{%~!"8ȢvaCpN@XX z S pnh_o4us1c~"IIQQs[,fjoLv}/3 [ kʃHyoRO58@~;Bb4T[woN h(+3}}[L&usLDw_;pU'52zTį^)5FUBuM=B5:,L,Z>fnj!AۈJm78Oڵy3>š 7->?DW{\ʏ}8ζiKuӘVp5泖og&Ȕᐑe_4@@ DIENDB`merkaartor-0.18.1/Icons/actions/software-update-available.png000066400000000000000000000013441177067165300242400ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<aIDAT8MhgUP)X+a^bzR=xQ{X,-x\-".QVVkMYkCs7<1u5lvT4Akw?ͺ|k-DZO&g:YzY Ra!>qQIn|Pg}T^hpͅQ6>}h%(v{Jst^ndv\"=3LQ\](NƒHTEa2A\ʜw?5@n焈ۺ=ܴ͉gH~> ␱mh?fKrS=V0Œ>6wM3s ^lu =a.L%5Y[iݼjڿjǵ>H`r0_WV? M-^YJEМU/D Q)wL5IfycPB'9C'h8pCZ4M>3uŅ,E  !-z, ӨQմ9u9mjwwr&2>= J8{?i9uo9UE:pfir E@Z(&[w%3˹ 4RI2ϗ bhWz}q}˹M|gd!".Zw7qoUˀeh4Çq/m,MO5ҘmJz@P_f]S(Ѻ yQ3h&66xb p%ÖZ}>BݖH76@v%(乯tI=}=(|;^PA :P&mE]&eO0jY .ڮ^TuӓUV軵#pcoJ.gE|X\G ePHyЁɄM{IUdm)l FHTX$ 11^&ROC l σ0V {ѕUSJl pvwQ3ssq<=#[s_Ϥzu8)hin&I6R`,r,̥IB"H"9oU=oTxAɴge$IUT#S Lku===|>~$^¿y9 X^QB!455LrŝYTPu!x/z IkcPT{֝`QTF[aזqO ̇6Ȗ*3^极IX#*ຑ9Qs ׾zd(Xl ]{k&\|W$˃ L,# GxO &&I1OK`$,\ٶ j@Q <ԃ'6 ҲxKixٿ*Pӕ_s:~]Oo6[|c!m ۧIU.5x<m'^G7I^!iW/˲h9M_т,̥IB"H"9oU=oTxAɴge$IUT#S Lku===|>~$^¿y9 X^QB!455LrŝYTPu!x/z IkcPT{֝`QTF[aזqO ̇6Ȗ*3^极IX#*ຑ9Qs ׾zd(Xl ]{k&\|W$˃ L,# GxO &&I1OK`$,\ٶ j@Q <ԃ'6 ҲxKixٿ*Pӕ_s:~]Oo6[|c!m ۧIU.5x<m'^G7I^!iW/˲h9M_тg.͎;K.(p (J6bO\tIo.g;5[+'xottt, 39@߂_96~-c[}Vˡ6>y2 n V `L]yz_csZ_Su$fYD">Kʋ#5ނ\$ټm~{lk0}UN3Hu+|+̈f<3mN)C`,+eVw͛-"b?ZM,6Pn+*JNԪh}~ ;S6+Jmj (oכET'uQ>`ϊr 0Q^,6зϞ{e 8P`q M7wq_x#ǯ@_j E[KzI,Y,XOoJ z<_ Y2 IENDB`merkaartor-0.18.1/Icons/actions/transform-rotate.png000066400000000000000000000015371177067165300225230ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs  tIME2#IDAT8ϋG?;;e6a%dIKF&v/ s6ܼr9 9 s+YD_`!jWuU5{}oƄQn-ɉ}IB7"7he;I"| 4pwzxnljg j ½IDqnD;հvg`4wnǏw2m۝k41}Z)&dɥVWd4CXX*Si`,aw,je z{kf{"|e~oDzCm`'0So55nlO0 Z4(J}Ѭqk-Emb5ԕ^AސcH$ RTHTh4koXPDV;KAlƃ|7䛯?CIT %3*s(cnsƘf+FYh/O$.~n<7W$֣DORt ?_K uOXOA?z[DNǀO2P^\ryT>l$c4NUjHM1h@vaFjO;ޓSu`gNJZFIENDB`merkaartor-0.18.1/Icons/actions/transform-scale.png000066400000000000000000000016061177067165300223110ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs  tIMEIDAT8˵Oh\U߹֢d&1--]\$܄]*T *n 0 (X `( P2XɟNRZ'iw$D{}>.ev ֛07~@W\3a&X_[?æ$ A qd 4Ol/?AqU%4 ~;`3/ 'fN7:/?1Wy~g‰ѽر}CcHJ%~#nlB30?й'0&=uHSr]arqyt:IH!@$d=`!\,W] R]JTrX?0'z$lW 珟t{|Sof~@P86seekqi}˕Lνc|yxyLƁ:0<5Zt3).e&+- Ibu)`gsf.U<|vp^$!/㳟GTl6SSft[[og@x`p.Σ6-,Uyqf!P gKxww$JX}h9i $B~}S`$pa9!92|6­:pMc-gA|/V_ߖiU~k}$}*q> ,]1(_26U(5 EIENDB`merkaartor-0.18.1/Icons/actions/undo.png000066400000000000000000000010001177067165300201420ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<}IDAT8픿K[QM?p.Yb- t-!q)n'&b2$N- BSP ĘSޗ>qC ?u~pv`0\kr׶_JH*i/Q` [;Wm?4gm$mHmZwR)'vwIlO AFڵl5/SQ2pRVc"X^ߡS^/(qW)i~/cRyj{SPgk@nD\w(Z>+SEIv-E"6X͛D x<èVh4˲P*p8`y+w$L&mh{{{& ­ΜN'8NNNv1766\L&eY?( 6}3D",E0 S9( B2 @.CRi |@OUUs~yωC.CTB>?`^/MӶc/..s L&* "jx<-˪bSJ7MSVj8:: H0i7*,7E)ǧ$F$ =pX(p%*L>3[{_B  @@^7T /{+t! ^IENDB`merkaartor-0.18.1/Icons/actions/zoom_fit_best.png000066400000000000000000000022631177067165300220540ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs cytIME (3=K41!|7_Pj :)Div5|+ѨtugxCEl*DkL:yc3xԩrzkzXT4+҂$DQdα d\x" ltus'c 8zȵDf^[eUjXĒZu8ﭨj:5jL{Qr%/vCQ\yD>*nY{ﻘi$gRt>]@1B?wu =[0T:iQ]=8D= %3$ 'q^^_?L"@QDZn/ Lŏá פ T# 6*1"IAQ`p8Ƅxi3  K"|$2SJ\%Oh 0aRIZ€$J( 0a* S )A<ׇqH%E)bkD.̚_+i^|oSHDb%2`(xnîo t+%9TDb2 }\KپX>9ڥ 5^:E8 Q(tG^GcRWXVE1~!TZa%tb s`Z^jWժ9HH1S=TCGxI{Lϋ81;;nk wܾͦp5YY.M%i(=~D,:8 wNw|Fjw 776Ж19TA1P"lk4AXG? ǡX(鯉LxV^Xzmm2nOLLg08nh4zVWeryV[__?;::[|q+f,M&,Swss7;1ITC`+ap0o"<#`]ZZZRYp8~v\^ށh(QIENDB`merkaartor-0.18.1/Icons/actions/zoom_in.png000066400000000000000000000022471177067165300206650ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs cytIME ({O4IDATxڵ_L[U0n-mdtpfMfH&dfK|$A3 &S7l#۔ ʟB<{0!|_N_=s^GFFl-H ALW_0ǒٳSHʂ $:VZp ޜ._&]7yW,[j^R$&wU ⍳ \278 x7gM8Jyzą*"8hN2̪㨡Ϡ}|xÁ8#LrfDI'(T1DZ"$P^5yCYFq.p/ IH̐$"(Oms>fZ.S|';l \KCc=gT#-J91P((հ|AUG H.G\^4 `FX$Z YA}ǧFwV{G￝d^9f @匒*do^YIGi>R e2X1 ~"i{]v2J|AZ ues䉓#eY\XX( Q|>;5R^L5ۖ<]/g~ʧD"W <n::dYYӹ=.]kj(*Bt:---7 Xs@MQzx7㿞*@)1qؼrLpiXm2~r{rrrHD"mAן UN{r->,?h4 ;pjS)3qܦH69@``q0 _D"QBvFնz?%_a2  nIENDB`merkaartor-0.18.1/Icons/actions/zoom_out.png000066400000000000000000000022251177067165300210620ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs cytIME 2:"IDATxڵ_L[UϹz{oKKK٤0 8 523 |%cdMͶɡl&&:`>HT {$>u'|;9tww۽^)e$RUuSt_[{Z̲,zZ? Au M+> P$޺U \ -|}XǬYxC3~]OD _B۷?f*J+ǁAWg1ɗ- V]S@(-L;w8? e6J)oijPܾibSssˍ/Ved:2Hbg4->Zdj<Ѩ$1v»5Fke_ 1 N4>6q":ܾ 9#sv~M{IHqzvT4ѫon @| EM%@tG6Ĺb7EyӉ1 SVƐ2h'4 5r Aɚci'6)%4Ps9̈́h%1لyS27FSNv"B$ĽC-~$(iN@dE bESTq86<22V,ՙٙ&-mM"m8KBPS4eSEoi~oO>1>.Xj!wԒ$4!DIqMyYęlQQ`(ZM  w< H e[ۙLz*k|}ed䅌3eee(ޅ㸭PhWvvLACpd%¿,m6[r$Rr``naaabee< L#FF(yyyxKKKwGGs?f$i3"A{]Áb"jk~=0;;gWnX):U TW+rsllL$ ].)pqq!e=ђQ@ 4M =̆`0xcmmb\ς 0tFFc2IENDB`merkaartor-0.18.1/Icons/add.xpm000066400000000000000000000012071177067165300163160ustar00rootroot00000000000000/* XPM */ static char *add[]={ "22 22 2 1", ". c None", "X c #000000", "......................", "......................", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", "..XXXXXXXXXXXXXXXXXX..", "..XXXXXXXXXXXXXXXXXX..", "..XXXXXXXXXXXXXXXXXX..", "..XXXXXXXXXXXXXXXXXX..", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", ".........XXXX.........", "......................", "......................"}; merkaartor-0.18.1/Icons/dialog-error.png000066400000000000000000000031551177067165300201400ustar00rootroot00000000000000PNG  IHDR szzsBIT|d$IDATXŗ]lW{gnv N@"/*o}HH!ďPQӢ"2xTIDlk{ٝ3];NW:3g󝟹wC³PhSq~)jJ!KJǒrh)uJӰ?8eF7Jz3H sôk87YpQ)-a_2k-Lu׿"J5VWN78e&+K6s;FB8 EM5{}Ǟ勅)֟n 3R.}{90+kl3>?~֓P@Z_84m]F0JdD%}X&QG>{'dRb!',ucq[> KUĽO|V<7х H Sv F1uZ!:=Ċ0P /1X!V u; 5JnJ)|Gk镰!ˠBێo{T7;6ΟǫV;+!656[J%7[G5*=kCGc6N_.]qJ={:46hs<hKG2=MS*Vۯ ɱ61z\ج[O1[-nDd 2$۲!85![}cxu[󅢸o͡^CC_ޘW./&F䳷E>U`\3SZGDF,#kWxx& `oQP'NӝzG*lE'`Yzoյ)}c`k v0_(Gƿv$朿Rm-:<K9gyoZ[nƒ[}ny{M}8e. QNs0k8Mjr_?nzn{ O>խ|m{1xU b~ymѺSV.Ml,[:wůZp$ 42LNÏH2PٱB*YbxNVA{ukMmYpMpNd  G=0$\;b8JeoOI3iaPwBW< AiqnqqJ<-ͺw|s:boG)`[QDXu5d RP4T{C((?OYJmt *+ۤAg/18#Ѐс/'.p*~8|z2ʬYhaԹs]J6ߕBt¡ PԔmm-[~?B\.WbBLIUTD&'K7 B5kx[UpwLyqՑ Nm᫤ٳsܦ)څLJJ8r8((躞ĵw/OR&M]C8 TSav G/,L8IdӉ|o^sSi#+'GSwg [`k)={xb4\$`4nɏw0 M@ k耝}@L i( p M/IENDB`merkaartor-0.18.1/Icons/edit-copy.png000066400000000000000000000013251177067165300174440ustar00rootroot00000000000000PNG  IHDRĴl;bKGD pHYs  tIME 3 EZbIDAT8˕MOQsLt_vc+W&.](Q0&D!qƭ+C $@k]XX"2әNٴ9Tyv1CB4>[q-,O7N\33YQlWdft:r7$I03O n6FGnn "3a}BI_6AK@!!!?Si5%&icm4{g!+Ȳ s99 I_,4ͪ;@ϞjЩi?$ir22#4M}kiN7^x ڴo/HǽͲgPa۹/-sqw* iD#ix|j5nCa mW<>'33s`y8Bi-=]"%#YWm.O 7VZڻ҂Z484 N'xyy?=R9c=X,Z+F[K{끇ݗ w_tkꀔwb6'ٲ`y%233?)(,'hSZ{-mfAQ9!iGBtsN>go "!D1=3 f=H`(psx$P]sTeqI)Lӄa?|M;U: &@qq1BXzAc30IqnӴJHmsmޗ㿣5b/UtKQ̤퍊yQVV(P賆gge"W0- iʊcq>wu˕'}4pgX gaQL|+˕/lkR{Wx^$pۡ(Xaw7XPBt/}H^h}ji>1a%!Tv;(!':{JȼnXÒCczk䞠clL,,,r @,^xv-/PA] @`4q 3vy.@0χe)~ىէRPUd( `1@M!]մ*e%%Iyi$bVR]V3BD[9|b4z$;M@\J@ĺ ,՟IENDB`merkaartor-0.18.1/Icons/edit-paste.png000066400000000000000000000014051177067165300176050ustar00rootroot00000000000000PNG  IHDRĴl; pHYs  tIME 6?IDAT8˥MHTQsΔ48$B ( s&,rDZd&m"j6" ]( ҅BA f̘νsq<댃yr=Tx?g'''/' '~?,d 3THUJMT"68KG(s)[ۣ5ƒVW#S'74vŇzVglR+WsC[[{NCZtzL$`}CTuYE5=sȃgq8ujvN|`D ǟTRYںZgiD=(r/J`%]FR`]BrObJIp!P?T@IW"<XW*@wH))2kv-݊B@kkm8JeFbe7s #zT^4gEFaD1Mˊ|-p8]4 ֙x=lN;$-C- #Zu;++n{#*5n|-Yފ7$Fi<tOvKT@{B^DE@lɪnS`pj@*А@6̌`pJ^a9&PkIENDB`merkaartor-0.18.1/Icons/edit-redo.xpm000066400000000000000000000033011177067165300174370ustar00rootroot00000000000000/* XPM */ static char *edit_redo[] = { /* columns rows colors chars-per-pixel */ "22 22 70 1", " c #788600", ". c #818B02", "X c #808D00", "o c #828804", "O c #879002", "+ c #8A9301", "@ c #8F9803", "# c #8D9B02", "$ c #8C9D02", "% c #8C9904", "& c #8F9F10", "* c #859119", "= c #949F1E", "- c #94A303", "; c #96A405", ": c #A4B407", "> c #A2B708", ", c #A2B709", "< c #A4BA09", "1 c #A8BE08", "2 c #A2B316", "3 c #A6BA1D", "4 c #97A020", "5 c #A7B432", "6 c #A6B437", "7 c #AAC108", "8 c #B4C708", "9 c #B2C910", "0 c #B3C916", "q c #B9D112", "w c #BAD119", "e c #BBD11D", "r c #BACA29", "t c #BCD120", "y c #BCD124", "u c #BED22C", "i c #BFD336", "p c #C0D52F", "a c #AFB952", "s c #BFCD46", "d c #B8C559", "f c #C0CF42", "g c #C1D341", "h c #C0D148", "j c #C7D948", "k c #C7D94A", "l c #C7DA4A", "z c #C1CF52", "x c #C0CE5A", "c c #C8DA50", "v c #C8D65C", "b c #CADA5A", "n c #CCDC59", "m c #CCDC5D", "M c #CADA61", "N c #CEDD66", "B c #C7D36E", "V c #CEDD68", "C c #CEDD6B", "Z c #CCD86C", "A c #D1DF69", "S c #D1DF6C", "D c #C8D371", "F c #CCD971", "G c #D1DD77", "H c #D3E271", "J c #D5E277", "K c #D5E084", "L c #D7E385", "P c None", /* pixels */ "PPPPPPPPPPPP PPPPPPPPP", "PPPPPPPPPPPP* PPPPPPPP", "PPPPPPPPPPPP L PPPPPPP", "PPPPPPPPPPPP Sc PPPPPP", "PPPPPPPPP Atk PPPPP", "PPPPPPP 4aDLJHw7k PPPP", "PPPPPP xM9qwtww>< c #B59F17", ", c #BBA011", "< c #BEA110", "1 c #BAA712", "2 c #B9A214", "3 c #BEA514", "4 c #BFAA1A", "5 c #C4A000", "6 c #C2A20C", "7 c #C1A909", "8 c #CDB80E", "9 c #C2AC18", "0 c #D2BD1D", "q c #CEBC22", "w c #C6B029", "e c #CEB828", "r c #D4BD24", "t c #D6C004", "y c #DAC003", "u c #DFC203", "i c #DAC304", "p c #DAC404", "a c #DFC10A", "s c #DDC80D", "d c #D5C015", "f c #DAC612", "g c #DEC917", "h c #E0C70A", "j c #E1CB0B", "k c #EBD304", "l c #F9DF05", "z c #E1CC14", "x c #E1CD1A", "c c #E1CC1F", "v c #E4CE1F", "b c #E3D010", "n c #E8D31C", "m c #EFD91F", "M c #F0D61D", "N c #FAE006", "B c #FAE216", "V c #FAE31C", "C c #FBE31F", "Z c #E5D226", "A c #EDD92C", "S c #E9D532", "D c #EFDB31", "F c #EEDB3F", "G c #F3DF34", "H c #F0DF3C", "J c #FBE425", "K c #FBE52B", "L c #FBE73D", "P c #EADB41", "I c #F1DF44", "U c #F2DF47", "Y c #F3E044", "T c #F6E344", "R c #FBE846", "E c #FBE847", "W c #F3E049", "Q c #F3E14C", "! c #FBE84E", "~ c #F8E757", "^ c None", /* pixels */ "^^^^^^^^5^^^^^^^^^^^^^", "^^^^^^^55^^^^^^^^^^^^^", "^^^^^^5E5^^^^^^^^^^^^^", "^^^^^5JK5^^^^^^^^^^^^^", "^^^^5JT!55&O^^^^^^^^^^", "^^^5JN~ECCMh#5^^^^^^^^", "^^5JI~~~~~~Nlh5^^^^^^^", "^5JIW~~~~UI8cky#^^^^^^", "^^5JWYQS8u8iiim#@^^^^^", "^^^5JvtJLLKnhjzw*^^^^^", "^^^^6JiJ555:esx0=^^^^^", "^^^^^5JJ5^^^3rgd;^^^^^", "^^^^^^5E5^^^^2Zf-^^^^^", "^^^^^^^55^^^^,Af;^^^^^", "^^^^^^^^5^^^^:Dq+^^^^^", "^^^^^^^^^^^^^>L7o^^^^^", "^^^^^^^^^^^^^9PX^^^^^^", "^^^^^^^^^^^^4b ^^^^^^^", "^^^^^^^^^^^18 ^^^^^^^^", "^^^^^^^^^^^^^^^^^^^^^^", "^^^^^^^^^^^^^^^^^^^^^^", "^^^^^^^^^^^^^^^^^^^^^^" }; merkaartor-0.18.1/Icons/emblem-readonly.png000066400000000000000000000006561177067165300206310ustar00rootroot00000000000000PNG  IHDRabKGD pHYs B(xtIME :9#3;IDAT8˝_NA cwwA;o쨾g@`IENDB`merkaartor-0.18.1/Icons/empty.xpm000066400000000000000000000023631177067165300167300ustar00rootroot00000000000000/* XPM */ static char *empty_xpm[] = { /* empty pixmap * width height ncolors chars_per_pixel */ "16 16 17 1 ", /* colors */ "0 c black m black s s_black ", "r c red4 m black s s_darkred ", "g c green4 m black s s_darkgreen ", "y c yellow4 m black s s_darkyellow ", "b c blue4 m black s s_darkblue ", "m c magenta4 m black s s_darkmagenta ", "c c cyan4 m black s s_darkcyan ", "a c gray50 m black s s_darkgray ", "A c gray75 m white s s_gray ", "R c red m white s s_red ", "G c green m white s s_green ", "Y c yellow m white s s_yellow ", "B c blue m white s s_blue ", "M c magenta m white s s_magenta ", "C c cyan m white s s_cyan ", "W c white m white s s_white ", " c none m white s none ", /* pixels */ "AAAAAAAAAAAAAAA ", "AaaaaaaaaaaaaWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AWWWWWWWWWWWWWA ", "AAAAAAAAAAAAAAA " }; merkaartor-0.18.1/Icons/eye.xpm000066400000000000000000000023601177067165300163510ustar00rootroot00000000000000/* XPM */ static char *eye_xpm[] = { /* eye pixmap * width height ncolors chars_per_pixel */ "16 16 17 1 ", /* colors */ "0 c black m black s s_black ", "r c red4 m black s s_darkred ", "g c green4 m black s s_darkgreen ", "y c yellow4 m black s s_darkyellow ", "b c blue4 m black s s_darkblue ", "m c magenta4 m black s s_darkmagenta ", "c c cyan4 m black s s_darkcyan ", "a c gray50 m black s s_darkgray ", "A c gray75 m white s s_gray ", "R c red m white s s_red ", "G c green m white s s_green ", "Y c yellow m white s s_yellow ", "B c blue m white s s_blue ", "M c magenta m white s s_magenta ", "C c cyan m white s s_cyan ", "W c white m white s s_white ", " c none m white s none ", /* pixels */ "AAAAAAAAAAAAAAA ", "AaaaaaaaaaaaaWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAA0000AAAAWA ", "AaA00000000AAWA ", "Aa0A00W000A0AWA ", "AaAA0WW000AA0WA ", "AaAA000000AA0WA ", "AaAAA0000AA0AWA ", "AaA00AAAA00AAWA ", "AaAAA0000AAAAWA ", "AaAAAAAAAAAAAWA ", "AaAAAAAAAAAAAWA ", "AWWWWWWWWWWWWWA ", "AAAAAAAAAAAAAAA ", }; merkaartor-0.18.1/Icons/frisius-win32.rc000066400000000000000000000001041177067165300200050ustar00rootroot00000000000000IDI_ICON1 ICON DISCARDABLE "Frisius_48x48.ico" merkaartor-0.18.1/Icons/geotagged.png000066400000000000000000000003251177067165300174740ustar00rootroot00000000000000PNG  IHDR PN^sRGBbKGD pHYs  tIME; xM8tEXtCommentCreated with GIMPW0IDAT8cd``@E@e@uY9g$FFCˣRG^Nx~OhIENDB`merkaartor-0.18.1/Icons/grabbing.png000066400000000000000000000065051177067165300173270ustar00rootroot00000000000000PNG  IHDRw=gAMA|Q cHRMR@}y<s== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz pHYs  ~tEXtSoftwarePaint.NET v3.07́pRIDATHKVIAUy0x"<'Qo*"ʨ!!d!^MWS=b}_Ur8ip)g&δ'G}g;q`|ܼ4BP#` b!wߟ2. jm{rnGJ9,;&-9El6\.i:h4~Ov[|o S뵰d2p8nKVj$][@ n%LX՝NUU*̸M a Tz=^SRB@lV $B`04MaIT|>Ot_ D%PJ(xE8dm%\. ՙL$EQ BZ&'H%x"U=xkVKOArH%P󚏌f KHv[G0ûH!9Hd8x^r\p8,՛hDB5,q:dfE.E3([@1^.\m([\PP#` s0k{FIENDB`merkaartor-0.18.1/Icons/map-icons/000077500000000000000000000000001177067165300167265ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/000077500000000000000000000000001177067165300214565ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation.png000066400000000000000000000007321177067165300250030ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME솨s4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8퓱PE{>A Bt6$X A!VVVv B to]p7m 3w|>1Nw82|> ]Vށr\hZt:<'+K0 L&c0eYb!2!xLv_'?qj5=ۍn$IX,0 i6N'f`hQJ~Ϻ( 4}LYV8s/Yf3ch4t(e(h _HOIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/000077500000000000000000000000001177067165300242735ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping.png000066400000000000000000000010051177067165300264130ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME7:54tEXtCommentCreated with The GIMP License: PublicDomain 6WIDAT(υ1k`؆"(1" d\ E:1'7 urts(XIpqssl,AQQ\žt=wX1MSU[eYL0 x3lsg+[*ʕ,.i0D4=FlAu] eB!~2Jj!ߕJ?BV>/~*:%kQ/8m`4 F@ш4ٌzUUe F$A4Bxfs:\nߴs"*v;L>'D0#y%"^d||a*s16IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/000077500000000000000000000000001177067165300257115ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/caravan.png000066400000000000000000000010211177067165300300240ustar00rootroot00000000000000PNG  IHDR ޜsRGBbKGD pHYs B(xtIME2 k4tEXtCommentCreated with The GIMP License: PublicDomain 6QIDAT(ύ;KB{WE  {B  Ơj"4DNAPbVC9IJ3y)Vl_ "d_ե3;ڇB5 G|^h ⓩq0:AT5?pv~`h4H.wO&{gCF#N1nUUMMxxؔ<91.T`RH˙LN03uOZ,TSi6l*R}f_LW>P:Nv)BZ;4~Q~jnTEY0Dd0 BUiZ;sIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/dump-station.png000066400000000000000000000012161177067165300310430ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIMEN4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭kAn'Yl4$(&1D K? x ݃xA$9 ^E/TjEAZM#54!6ٖmJy0^Ҡ3FO~f|M0sŰ77{6cVǚ'VbP1&Y^^`gb"GAeJSxpT0Xd۱=H2_{܏} V*ZO_`,\D:u@RsDҫղՍ9gt-ݸ ll:#jF$;sBC‡,fg uleY]+BRRm)i3`x H_FAe$ 4!ҝc~(fFAyVZv,pP >$>?'BIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/gas-refill.png000066400000000000000000000007141177067165300304460ustar00rootroot00000000000000PNG  IHDR HUCsRGB pHYs B(xtIME67I4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(Ͻ?kPG{/@HPlt)7wCk/oQܺ)=f <5`:,=p+9b<'l;GN?Z^$:%u8TS T7}$ozq|(kX<A8Ljl6|ߟy4DQ}ZP;M;npx:0 ju)^KN 8J))CY',CXk.J)?Rec0ưy,SIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/hookup.png000066400000000000000000000006641177067165300277320ustar00rootroot00000000000000PNG  IHDR HUCsRGBbKGD pHYs B(xtIME' O^4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ՐN`!JLL{Mez^:[W~g,8r{ͫ<N(/ Z0OO> CN^ᰍ"lvhds` ,NKDv#$S PƲ&wL3:^:ha|Q.(% VTi 氂ض]WJD> f|WAP|uQSJM:0eIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/trash.png000066400000000000000000000006671177067165300275510ustar00rootroot00000000000000PNG  IHDRV%sRGBbKGD pHYs B(xtIME!w4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϵӻJAA\a["*F>b &"l&fnxYoI г, UtCU7 b| ^ C5E0 6gԗbmeVQp\nMHp'au~ KscE/q&:Qt>_pV/Se[|Z -(pX4hIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/camping/wastewater.png000066400000000000000000000010441177067165300306040ustar00rootroot00000000000000PNG  IHDR v 9sRGB pHYs B(xtIME,5_4tEXtCommentCreated with The GIMP License: PublicDomain 6vIDAT(mMa~)i2YP4nY( PV YQ`Eab#3 ׌irwiN=yzbkq'?Z`Xؔ@"{. c) :IYt|C2|$ēoӝ>?{#IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/chalet.png000066400000000000000000000011061177067165300262370ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME  4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥qƟsGS2) \&["mS2`# 0b5թ˹;IyS<ϫ#$ތuBe,K, ȲNn|4xhh4rl6ftT*~|>qyz=\.@:FPm8NPUA Bt6$X A!VVVv B to]p7m 3w|>1Nw82|> ]Vށr\hZt:<'+K0 L&c0eYb!2!xLv_'?qj5=ۍn$IX,0 i6N'f`hQJ~Ϻ( 4}LYV8s/Yf3ch4t(e(h _HOIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/hotel/000077500000000000000000000000001177067165300254065ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/hotel/five_star.png000066400000000000000000000007061177067165300301010ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME4^Lk4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ұ+a{eP72f2 /(AF¦dLnH\)|uS=ysf9pVq,8p8*W4ӸX<^9aUdA? R劼/`Ҹh۸^7Pw$J-V' }-1P{i '/X)fpI> =I ٽ/ M0Ñ% 1}idL;.Zx[o7LHxIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/hotel/four_star.png000066400000000000000000000006711177067165300301240ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME'4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT81/agt($U:H$~\!Jr( Fs%4"0\.K\L13; <4,sMl XC=.]2ް%cUdW RtN/y3IF1j?I0 c8 ΢H8P7gpa (ۅ% 0`>.%Q+\1-{}Oɛl1sDIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/hotel/one_star.png000066400000000000000000000006211177067165300277250ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME24tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT81KBq߳7 ؐ859 }86A -or-`r xDJtϽw8{=D+M\ÍC *(ȿ@B:=.~*e x3 'kWCocIP5-ΰ@-BOX" >?U0A;B Vx1i8o36$zIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/hotel/three_star.png000066400000000000000000000006541177067165300302610ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIMEGMO4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8/Ka߭i3*(K6شX@C b4A1 &eہ"Eӳʲ<fyg~tq \-͹Aqkx&V]4gΦm㐍(-hXYYIy5{ЃBY-fY.˲Ÿ7 /G"}!IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/accommodation/shelter.png000066400000000000000000000020101177067165300264400ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME ] Us4tEXtCommentCreated with The GIMP License: PublicDomain 6ZIDAT8UoLu?hp!E!,ǟAn ]GZxGL- 3ub:s٬UFZ C kƮD ,wo/Yϫy*?PqyG^vnmV,g**SKۆ8S)޼߫rz{Y(Pۃk{ohs[OZBu?xmeB^<ɒIj)%BHbPjWPww$n(yNb }w}edy2FQl$Do Of(d@ߨ?Zo L8ݱq.2wBXQY"~0O oJV-}ּqn=#E \LqV[Vk0S w-bSGQ (&g놱KO~z`3 [2_- [PNX#>χ2;V7[[#2=ۻ~9u";)^q{ ӳL0v5؋ѬѦa,2QK6~b'?B{n*dQZ]?h6:ATTwB5Srq{<(I7;qj&جH- :XHV"vuҴ{7G3@jtL̳_UZ`*#Zs P6 DfAX-U/:ν GhM^ t}iafaBHf&?v4Ad6D26Q.Dh']g >v1a1p@J>RC:ϪlfdF3N:VFIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/education.png000066400000000000000000000011261177067165300241370ustar00rootroot00000000000000PNG  IHDRbx pHYs  IDAT(eAK[A̼$l \ ) BbQ\+rN^hw%]vQE(BEW]>PIRhc2o.Xz3sw/sG=@wwQhpzc!d(}ݥ\Fj}./ RPcܤٜayVnAz=9'k^iE zzRt{,S"ssE1knlRsxXGyN\_h0;s8J%ǎ>އZ$-,(˴H77)Iel7Z8z=vvXZ ''ya2w̑iIS߷xp@e{ >{wK~)$c$ 䜼%)M9$M ,IBS䬤z$6 ɤ#bq+ɦof*lZ`O>4l Yz̡SpDzTXtCommentxsM,IMQHTH,QH-MSH/Rp,H,*Q(MLVpM - IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/education/000077500000000000000000000000001177067165300234315ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/education/college.png000066400000000000000000000010451177067165300255510ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME( `BIDATxڥkq?߻rgiLEh.-:ĩ]\qp SV<:vbJ?hkT...u(yG(8 -p؄=Xi 㤻-;k5q귪_"%%iJsѥv:uן ~C5Z]Ƽ6G حJR LyxGm|mc:߃f G#&ؖLM:6-L! axGDvױȲ 9() I3Dwə4r r )XL#~bNQo^G q@i4DOV^KS8!5 ]F_H, OP/l54>؀IIHx7G{ChOF IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/education/kindergarten.png000066400000000000000000000012471177067165300266200ustar00rootroot00000000000000PNG  IHDR&/sRGBbKGDC pHYskhtIME 1:rR4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϝ?Hjƿ Z ND94eM.AK77jp%Hp+'Iͨ=2|6s_(c&K5H&0~L&:pV#pppr~~" "f mt: BHbeezL0 iccCFCPHz}}U*$R\p8ԟ/@"͍vwwe۶ Ð$mmm}+tJHBq...>Z-$rr&^^^ , Ine͛nooIJ,L;Je~E^ؒfߧﳺJ>g:.~4b|>;>>&NP(x<AX4 NOONmmOZ_4)Jbo#'''KAF8zޏ)v+_u]e2'}ՎFwIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/education/school.png000066400000000000000000000007471177067165300254360ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME";RHIDATxڥO(q?O[abAMmʼnvࠤ47͊8ȮfosxQ.D"#9h[ݲ<<> h CpJ# 0gv"y:!fvj ֟Z[+W$˪zc&h[>rZ%koB[@[ӜԶ7֗ڿ)z148]ghpbV9n@84@ T5褢Z0o-x]\ȑ &4BtӦ=J'L ^d/ILJ_8𦷮WyfM6as 2%`ٞeF_oW 3[prE'F wv.IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/education/school/000077500000000000000000000000001177067165300247205ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/education/school/primary.png000066400000000000000000000003771177067165300271200ustar00rootroot00000000000000PNG  IHDRsBIT|d pHYsu85tEXtSoftwarewww.inkscape.org<|IDAT}1oD!4&pJGЩD#=Œ,L2?"n 8a5U_ܒ^eC=!*{1@2!- H<W1C^< 8yIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/education/university.png000066400000000000000000000006601177067165300263620ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME%!^OIDATxڽKq Q :H5dcK\RKCCCmm΁X9'ؐ^pbB}}ߏ@:xPSUt iz\j6PuнMS.YQ+|o_ESu9F B `SU 怭`Nhije@5)Zi2'iL&j.7C$/q[-ΒI  0/%w& U7sbҲ"6TuFx{+G{ө`]Qx(Vf*-V7BbP}IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/empty.png000066400000000000000000000005151177067165300233230ustar00rootroot00000000000000PNG  IHDROc#"bKGD X pHYsHHFk>IDATHc 0 Ճ,$=5}jXKɗ[dhchchsa<^xI <¢ɷ0B))330303`x:`YN*헷7o ~&&&򌣕@;Q0/>zTXtCommentxSp.JM,IMQ(,P.NN,HU())///˄ k*ŽrHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food.png000066400000000000000000000014611177067165300231150ustar00rootroot00000000000000PNG  IHDRsO/bKGDC pHYs  IDAT(ϥOhe|3n6MH<5$X -Rŋ =ZC҃Em-"`Kfvwvg7;3oy>sx'ϔo,?zآ] -3nĽ(={h ZDx7$Ѻ2pJ%^TtGfj3f1=SRIqFTm\pEϛFJ[a{c#` Bqlps]J.nB|2?Bq Kl eI8g RZPR0&肙j%#RgRH0[[(I7ې8x 2)8PWпw{' $r uLy0Α9 1 0R0Ġ;;[A6Wif(.DÌRh4zX‚lۃäT1 6Mgkg4Λ+lAкքv7DɸˁFԸAx,fODwc0LƭBM9hw{í,uVLZn6ї-Շgqۋs6?E6 ;H]vIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/000077500000000000000000000000001177067165300224055ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/food/bacon_and_eggs.png000066400000000000000000000016751177067165300260350ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  ]IDAT8ˍKl?p{Nɶv#DBƁI-ʶCZTNH8rBqǁ(RTFz)Z[i2ymT7I| &s8%Y1 Cu]4ť_0Z,4Mu8p9&VitcAjA{Wd2髚RSSS#>۽n/׮OCc9ml !\ @=jBrA8]*dY jU<ͣ-4iՏW̻& E-u]gI$z [i(n?d-LpNyYUcK?h0MIbRpv(gR?+N-WNs9/2Wb@ ~w Iv4|>oKE@P3ܪ0` 6bT8lZ-PYAWWPH_p@] QMpµuv@y/nFITF9eG;ⶫߞpVuWGR^ aFT*}0?ˠ033s{eeCKO:gJ/tl6ӛDu8Bi.V+Ap9VUY?8aSe{u@oIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/bar.png000066400000000000000000000005751177067165300236660ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8JQsf2ˊìuJD5 Wȧhi6hA m]Pg̡-Be*u…9W1_`. KѦn/`7A!Ts?&p_̂q[hZzHV H< F.󓆞h?wTX5?2%{|G+/bb+v3=u@M^/nǷqJdv^ o3iսCH1j{~LGSu!4M)|'N sm>3oxp kvWa`6纟Qi|ɽR_lV\_<\55C䦫\n?~AK!w&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/cafe.png000066400000000000000000000015331177067165300240130ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8Olumm&FC] -̅Ih7HlƃBLTL; X eg@:9e< >ykhv Hh< wϜy;v:]i\MO OS}?qo0>׊۩auPf! FRUL oNM^zUQ%8P0j:^;ۛ7+ܺS‚k\"s5aJ }{q(B p4q85^>#dDZO;,g?֏rmZ-;o`(r,eYUҢj/p ZwY,Ξ*olJ$]ϸYxIX5~y+JL&ũ5IVM ^7Z񱮽ŭ4=B]ZHUP1jT:&ruC;>%؇c=~K8R](v'OJ:u`9@2::B.4N3r] 0==ۄUzL"p8L2؄;v~Ms-~,iRTijx|Ab===Jj333o;iWFFވ|(4t`Ifit:rUøseBcBh4g'v+(#ٞx+]OBL-@(~IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/drinking_water.png000066400000000000000000000012201177067165300261150ustar00rootroot00000000000000PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<"IDATxڄSMhA}3M76Mi4AcF(E*QA =$^<ŋ'*D$Z15llEe3~y}ؙi~b[>r.D_P3pY6˗ v?llD/}p큑t.Ld.&䇋J:A$!DR8ha܊bB!,z:%\i?h6<\s),zxTUGh4~b~i`(X*bܹd~l۫qb LFK{4 ,cmm `Y֥*lF<4t][䲏I .Ӯ>EAEB!χj 4h4; G?xq2K=99i<ۍc4MPBAN',`tjb V'A!X]]m`YlLMMjA4BL&qt,w.1#7WX}^/jL.0 $,BR0hFeu=1{|5YNFqQ!"bEQm_lT5)ʘ4Gk Y ^ˡ$\.@$N/GmiC;iLmQp˲l6d (/}v%A=?~IfnoWل ۭ?d~M tDIIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/fastfood/000077500000000000000000000000001177067165300242125ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/food/fastfood/burger-king.png000066400000000000000000000017371177067165300271440ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8]S]L[e=-uP K ]Ii%>1ꋋ&d:g1ğP'd0pZ`VK߸~D;I9'rvݒ)7Tn:P vݧ!߿~񉻽^0֭lOrD D.afYdU}w?|UbHi6/J[V^te;/۞[yo[g{] %$uU`,r5w{5sB[c.V_>~{}WHM+0폡Zh˜M30qF8rz/ Xi41r%d|Y/y57ŭ"yTm ԧ9? i_: R 2x;&鯓 뢭;ķFqz0:'RPpVN` 3XIÁw'ߒs? R#u~S[_&@1OZ&WM\Kmo~6Y|Dey nBcVvҫvx绞@S^ب[ަR=Nm"5>lc@dM,IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/fastfood/mc-donalds.png000066400000000000000000000016701177067165300267450ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  XIDAT8UkeHvcnU0IiI*A5"ԂWқ'Ń/BڊJؒ4i&ivݝٝ\~^&9IP9=V۝ i(y~re J\| N #C~D|xɎ2p~۷3zZGBG*d7lqg9pX {ް߫o PCMIf\m刨tҙ]+Mwuh,UxWz;$1"6:n~2zZS+D+du+@QCxdH G$7Qt V9o*NuR&WOA@'DRIy2q(;Qͪ!֣Q9IRѢ]Zΰ6:aUżTZǗY#T,C(-dLrScx[Xv25'9*tMJ/-QPJC3/E)u*a AVAFH(Bl G 5=/8`@TB <_kVUIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/icecream.png000066400000000000000000000015021177067165300246610ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8ˍ[hSw?9ihvik$Z3:twQۃ1@7_=nhcTj'XM1&6Mbz9Á!;Q/Ɂ9j -7Əl iv"+R~ڊ-_P(ĘrgW8%0tӂ K pj#$DgupP^)W\ެwqso]"K 31#It<+fyvLr2Xa${OEwqu v)KoG&AZM-lPpkcmϷuH0J3QEňgOiFdoKˉF7}Sһa5C'/:Rgl-s[ -k:-⨬ZINmaxܸnx'U/9geb|XkH0|͟>vCz^|)ڭDFJLWQN{p!ޘ~) Y&,ي%,{pQԜ;/3X5I"IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/pub.png000066400000000000000000000004631177067165300237040ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs N Nw#tEXtSoftwarewww.inkscape.org<IDAT81 @A'`$H+V>/,mDTgq^AV{03;m\e"GtxYO%0UJEPԁ-P)*8@brE \6P/ a" l3pRmΊHrط Z}7"IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/restaurant.png000066400000000000000000000003111177067165300252760ustar00rootroot00000000000000PNG  IHDRaIDAT 7Tb)B)R,N#LD轀-D#;yKdޒ Xi )7 D᯹,d&k/QWVj۳l^#AnQff"}H\[6}IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/restaurant/000077500000000000000000000000001177067165300245755ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/food/restaurant/japanese.png000066400000000000000000000016451177067165300270770ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8˥AhUƿ73̛dfv&I%*U mA"T[(=Ph@+BOUAWS0J,rpYhImv';HMЛ}|zTr)HGAhRJkMإt:%%ι977y gQc syU.kY+Pr^) H&Ljvv)Y)7:;;iOO& P hiApupl6a8pmFFFp8rѨ;b1hmX]]+JMUUR)d<۶yZ.?V"(Bd=sv~UQGQ:nw~ XzlH\gϽ:wsUj~[jܼ'i|{4~޵!_ ܓb P ܯeD"wGQQt2{] @T%@N F&?pP>cM\un Zձ{|aqO֞~3u3x}kڠp !"-|N6XNǤ;xo(HP/DxH2ҕBsIQ'oD["JHVP8*D;?Q! k,ҋ$K#E -zEFy&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/snacks.png000066400000000000000000000014731177067165300244020ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8˥oSu?s}9#.D^&.%!&MĤ bvaLބ;. A6# ]H趸nlFϋuq|.<ZγZ"eZ{_?GٱW}i̝&2υE si9ԗvzǫG:k/ &Գc7=.[xeC]'wx4 TISVk/"e+<jPJ(ŲBI3nIZ;t!RvRfBPh<} )6fGixS QJi~ͣR\i.sc?1݁P]%PJB ^dr[%&jPiwہ&RONS#dK:E"jM1+)uôOsC pb!r_#?P3{vzà 󞦓`o<HYdQ cyydN5IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/snacks/000077500000000000000000000000001177067165300236675ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/food/snacks/pizza.png000066400000000000000000000016761177067165300255440ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  ^IDAT8e[L[ )m2f Dq/7=0IȒ%-6vlRrS1Vj:Ȉhu/Y0t|rS &' 8Sw)YDY=ty6lqp͓^.FVՑղGFp?g+i~nDA| +#G=;NqHgUlu;흞ZO~.q,[f `jDw*G_ f*In:ق3HXA*W WAO21\u(F+Xڢ1 16ByL-X1|wگZ|R[Gx98ct30LUT1km4o\2| OWL*Lҭ;w 6ޔ&H&C-/kv"]ҳt ) + LL9o vȱIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/food/teashop.png000066400000000000000000000003101177067165300245500ustar00rootroot00000000000000PNG  IHDR $IDATx E 21V›~.&ҥ9>VD >7E/z XNg@t![7a  y'o"aH)I20!7kkki WOggii3 YAY| =òLɏ]d)q:V~ "=7Ц&305\n? km!8?n!ܺ|Y!98H"w(Fw7I,ml㴪TU M( D̼}5\k,||zf:q| G0r":Q>BO75sy3p_uLE5UG.9"vUm"=WsdrILH봅SfTrL>gnn׶f'rWi>UMYH)P{RB^6=)+^U9-5RjHMC 80:Ļ|=ʎ\R~*& ڪTT࡟v7,=fgJ=f]IyT*]BE"a%vPurNg278P<IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/geocache.png000066400000000000000000000011161177067165300237210ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˝A?:\^+ G@"kB8>N[ 0QCTض%-  ˲888`04MlN(N$f(3erGGG~$Ih,LĶmvgXk>>>eV~h4jvUUj5.Jt]g:.|^0'á 3zLӤX,|>gST*dYjDQov٬۵/AU/^/8;C$ "Htހ^IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/doctor.png000066400000000000000000000006671177067165300247340ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME ܜ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ҽJq&J*AP8LP$Wl}-4> VHi H@BTD4Ʃevwfwo +xahR$8 hV&21q.c.hwE^,d/Zm>A>m\ q:Z1L"<c5i4\j`Kav1;w.D-` q/+!;W`IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/emergency.png000066400000000000000000000007731177067165300254160ustar00rootroot00000000000000PNG  IHDRvsRGBbKGD pHYs B(xtIME V6|4tEXtCommentCreated with The GIMP License: PublicDomain 6;IDAT(υ1Ha!1©)iɦrh rӛl wup0Bn1m[jL⧮!]{0{2pS&'y'4F@ ڈfB;UwnOabl8QꇞQjfVRRɣAG׀gP uR~o;ѳJdUe /Zp{% )e @ Fpl]676uISfI۶FC,{t; R>iJ-yjZcﶀW`/2'ߗR/cIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/eye_specialist.png000066400000000000000000000015511177067165300264350ustar00rootroot00000000000000PNG  IHDRh6 pHYsHHFk>IDAT(GGEE!ެKKK++, 郃y AA9TT))4ddd333¸ ѧvvtƪ윜܈\888ccc$$$%%%,,-༼===111ٱuxxMLG%%$32 666D=7 vvv???66,??]પB17S r---441TUE3H1 Z^uueen 7D-ނ$bi!*bNf "IIg/02/. P2;l( ZZU6%K.G+  44466>,,=+)('+&&&@YB))*55/"99. MKL))a GGGG#  *vҍvIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/hospital.png000066400000000000000000000010231177067165300252500ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME; 44tEXtCommentCreated with The GIMP License: PublicDomain 6SIDAT8˕ӱkA"4ibaJ*=16vUA,ilDD 1MMeDA>.1 ;3;;omgd2a9D©" 03a% |9:f饲̈́±6 )ػ`%|Ujب#Jp\_ 븭27%KGy_s?7$ gMiܩ*>4a;…2N7[fZ~ƕ_F_XQvIn_ M< /ͤKŰ[du2imޘ48Qm/QwO|IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/optician.png000066400000000000000000000014771177067165300252500ustar00rootroot00000000000000PNG  IHDRabKGD pHYsHHFk>IDAT8˅Kcw?{5I'͘G$*ʸH2 S(N)l+]B"E6CD;&37f̌0p||eŐRrUUB IJNݲ,# FI&|]t])n7iC*|[[[200zBkye,7&=¥aP*@JI<'q.?_\PxmY޾\7?F*bdc1~yU>:DT2 B!j,..az{{8j|ygPU/9??o(R*aB>!zW/^I$pLV^۶FIrѬt|uo~]VkH)4b~I677͛?xgKvw*   ߧj1==M:F?:¥i?yB E4 ?-5(ˬS,9==ecc " ir|C)f( !cYz"Jռ<߸C @R*B  prrB0pP4?>g^zMLm4 <@EQValFUU,ˢT*@?h _jmdS/VNIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/pharmacy.png000066400000000000000000000006711177067165300252410ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME/ -^4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT81NQ @BR44$+PCeB8@lqAf}rŤFc>hij*++ ,-ml|l osUT f'ݸR2[Z Di=KzIIIE[.,bx Hqnnk ::5Y=`gcGB3L׀{eϞ3{TW Iᥪ+ C_IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/health/veterinary.png000066400000000000000000000017731177067165300256310ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME5:g4tEXtCommentCreated with The GIMP License: PublicDomain 6;IDAT8m]LSwƟKO-BY" 6bvapxaәi4hp1K̢f@(QN\AAJ([ix(RJOO7Ts/yyޑ[k{T~:us< }T?2Z4JukkYBe) EV5׾[v#kU)!k=uK2jfqkҕJ18[ժ@_dY $~=gI2 cE梙UGx(/ 0xNn%_F^RA/&<L2CQ(HF+-E:儋c6FcѪsREc}(L呆s8X\ʕpXz&Lj{sSc`%{6F1F 2(J)S5~3j?x!nTq'qց?LLf}̸GU\F7T2NBv_<%: &R0?ސS9Irb1Bm\Ăz_:I*qx4d|)N1.1ѕҼe9,/ؖe+9bhi`M7/R8`>?dgP7Ԑ{nvS6 @". THzq]E>8 IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/amenity.png000066400000000000000000000001521177067165300256100ustar00rootroot00000000000000PNG  IHDR1IDATcd #@DVĈKIRGaG81 ˬvIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/aroad.png000066400000000000000000000001161177067165300252300ustar00rootroot00000000000000PNG  IHDR~IDATxcd``πaAGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/bridleway.png000066400000000000000000000001151177067165300261230ustar00rootroot00000000000000PNG  IHDRr $IDATxc<🁁 #TIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/byway.png000066400000000000000000000001151177067165300252740ustar00rootroot00000000000000PNG  IHDRr $IDATxc🁁 OξIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/contours.png000066400000000000000000000003011177067165300260120ustar00rootroot00000000000000PNG  IHDRaIDAT8Q 0C`ݛmCp.ڲ~ZyQ07\]&A4OmrdCpqv_i 2isJߌBs3aъv1DÂ&sȎE{YM65tHsȑ+;arv^V IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/footpath.png000066400000000000000000000001151177067165300257650ustar00rootroot00000000000000PNG  IHDRr $IDATxcd🁁 IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/fwpbr.png000066400000000000000000000001161177067165300252620ustar00rootroot00000000000000PNG  IHDRr $IDATxc?)IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/industry.png000066400000000000000000000002421177067165300260230ustar00rootroot00000000000000PNG  IHDRaiIDATc`|3%O{lWP b+Ft7߄~Ft5 h^@ ſjlH!󂁁MĀ7)ZIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/interest.png000066400000000000000000000002151177067165300257770ustar00rootroot00000000000000PNG  IHDRaTIDATxcsùJ d;Bpj]Zƈ&BD@,5 =t7!QH—0)@4;7]$=撚IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/london-tube-24.png000066400000000000000000000011551177067165300266170ustar00rootroot00000000000000PNG  IHDRw=sBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<IDATHՔkaW 7(T .vЊkVTĹP(R[.\JtbmNj=iKz\>.w{;#ԑCm`jfK1 RzIzS4NފO; ` 0>yicCܔ]A*b{,7U*Ҵ"n#fRtvE?RNu3x%NL| oij*<3$\8LJP-wv>Z@р-~6P-dW'Qd?S'e]v9dA-* rn.AroiQ8?5=*Hka(J1xg#ɘ@ 8=ݣT,/:ʏR7HbD𺏝|+J6h~p(x(898N3 q x ϑ^u-io/3e*IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/minorroad.png000066400000000000000000000001151177067165300261330ustar00rootroot00000000000000PNG  IHDRr $IDATxcd``(GpQIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/motorway_shield2.png000066400000000000000000000003731177067165300274420ustar00rootroot00000000000000PNG  IHDR%wIsBIT|d pHYsiZBtEXtSoftwarewww.inkscape.org<xIDATHcl}j6Oǯ? %, ,beyßD/ QG-|QiXҹGzY?^= %?~[=\#IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/motorway_shield3.png000066400000000000000000000003571177067165300274450ustar00rootroot00000000000000PNG  IHDR&B޻bKGD pHYsiZBIDATH Q 6 4"P(, h_h;^TSPf֤/j"x2Ht>#-RlZZaP=۽09asX!i?Yi lv R|E b|E, IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/one.png000066400000000000000000000001521177067165300247230ustar00rootroot00000000000000PNG  IHDR1IDATc```π0)`ħIL$*DŽ.Ȉ\3cssIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/pbridleway.png000066400000000000000000000001061177067165300263030ustar00rootroot00000000000000PNG  IHDRĉ IDATxcX]5GIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/place.png000066400000000000000000000002701177067165300252270ustar00rootroot00000000000000PNG  IHDRaIDATSA d??ҷ kZ0JAsO tZkQȒg'GwƒT0BIwqP$cjR wcIZuhr1%E*g9ϐ{q>O9 ]2 yZ|yIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/railway.png000066400000000000000000000001151177067165300256110ustar00rootroot00000000000000PNG  IHDRr $IDATc IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/road.png000066400000000000000000000001161177067165300250670ustar00rootroot00000000000000PNG  IHDR~IDATxcd``πaAGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/station.png000066400000000000000000000005751177067165300256340ustar00rootroot00000000000000PNG  IHDR bKGD pHYsRR$JtIME) jT IDATmнJP{ޓhSw`@7\N8[jؘ֒'E l*3A/Ko?t~eH6^unk/B\~!EI07ehyKRA -jJu鿤mq$֬zNmO,fqY@ 0fnAVWdFa&Ok2w]+VE1|a9Uo, yhިIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/incomming/stationnew.png000066400000000000000000000002571177067165300263430ustar00rootroot00000000000000PNG  IHDRavIDATxŒ DMnn,0Ѥj. $auhs%L5fղ Tl1"즊GA:#r%tvH9H)Enon]chy_"۶1 ,goaAR:L“l#wb 鳙,,%% hx5p3vD8lJK!ؠeP m;< C%;|DGq PSC.r95YJy+bjZܴqUG=׭vi|QIm-Ǿ++eC2)08`-s~?3ju0|/902,LN% [ ^i4J-H&6w_,I޼ x . ++l.H&C/30:Zxl۩&ӄ>Q͛J*g?DzTXtCommentxsM,IMQHTH,QH-MSH/Rp,H,*Q(MLVpM - IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/000077500000000000000000000000001177067165300224115ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/misc/bunny.png000066400000000000000000000013701177067165300242530ustar00rootroot00000000000000PNG  IHDR&/sRGBbKGD pHYs B(xtIMEHu?4tEXtCommentCreated with The GIMP License: PublicDomain 68IDAT(ύ?hqǿ?K/4Hkh HDBp(8CơtE()EJW8J)G.I(}~gjaaL&p8SSS$r&HL:OcaqnnI x<663Mt \.EA϶m#8 !mG~^Hr{y [%l60 {:4'v6}(Wcqm ztP((ʇF4/N'xf-NLLWWWYenG"~й%˲`ArNV?b{rr!PTP@(3yT|T=0 zH>$V*z( :!`]hms+ w j ]|VhۏVVVOFCPF=<666^bffU*Jn4 k dؘP2IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/butterfly.png000066400000000000000000000014751177067165300251460ustar00rootroot00000000000000PNG  IHDRsO/sRGBbKGD pHYs B(xtIME$#p4tEXtCommentCreated with The GIMP License: PublicDomain 6}IDAT(υRkq}32IwmB,(E#P, Gœ`EE/"Tz,VPR, q ]/T+801_PJ3wyb]V`{PZ%k품1W304sk1f]ŽƘ!c̽\f~ ,sc̊Rj2VJMcny7f|%x7K ](kUBg|+\T34_,˭VkGD:sGEy AfQ<00766:MSCDJgpOaιoi DTIl6'r锚8*{^J@""W677fff "(}<ZlYΖyifȣ?<::j(Z윻nFFF1W $I)3Dvu:$Iv]ш(En[KTi.Dd@*"۾ pjaaZ }}}|߯RjeϟZkw}Xs-Ì17y;yι sf3Ed; CG@k}6O,g\.7>nOLLcAZYO_KIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/construction.png000066400000000000000000000007101177067165300256470ustar00rootroot00000000000000PNG  IHDR BsRGBbKGD pHYs  tIME F4tEXtCommentCreated with The GIMP License: PublicDomain 6IDATӥ=K`EO_(* AM 8)8DԹZEg)P0R7ء0q?&xRν˅;.L@q`<@@`vQ C)T zZHY^@q߱! 3ktB#Q;^\k  E{=ym2 y 0Z,6H[[@*W@\癰7<9{i^$xzM}(E|K2= X͞~+g5;IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/danger.png000066400000000000000000000012041177067165300243540ustar00rootroot00000000000000PNG  IHDRsO/sRGBbKGD pHYs  tIME9EV=4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(c` qqq31/۫Bwܯ_z*6uL---cx)>ϟ[999ى6 ::ڟ) 10U$la7co_] ##^ tAttt quK=!~VeUC"iiix Emc)VV\w檪4 <ՌVnP5jVA6hn{P^C8?m]M4 US~AlZATY6Z+U2߰"FRjBrv~{R.@K T{io!tQ@9lރ^0Am5c^434; ~AfIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/housenumber.png000066400000000000000000000006541177067165300254600ustar00rootroot00000000000000PNG  IHDR 2ϽsRGBbKGDC pHYs  tIME '%8A,IDATӍ?Kq@4<$J2KL A4"Z )栆 CEaEP4rޯ!j:DfpJ@H>9>}nsB2ݦp_0 HK3SVE|"F׺k*K3XM|0h R|(DdʤGWOq}[ GRt]=KR螨OFV=hِ σm;X-4͋H gO~z$=;8Z Uu1? XbF9`IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/information.png000066400000000000000000000007571177067165300254550ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME,u4tEXtCommentCreated with The GIMP License: PublicDomain 6/IDAT8˥JaE* 5j盨,4Bڷj>Z-˴" w=?{!r@u9n5֐R46]8]ד{~\o6jY\vT.NG Z{)70ߞg50n'K%i<޶HsV%[8.0@ S|Aנt@Mh$Z@s%7ZB=*,IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark.png000066400000000000000000000004561177067165300247150ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME14tEXtCommentCreated with The GIMP License: PublicDomain 6nIDAT8c`hc̚5KAH}1000 XgfW7 jq300|C7AF&3o|*g4 F   s[g%_v? wnWxIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/000077500000000000000000000000001177067165300242025ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/barn.png000066400000000000000000000007571177067165300256430ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME8A4tEXtCommentCreated with The GIMP License: PublicDomain 6/IDAT8˵JAՀX"X(> "bJm"` ld$qv`$09pmr.$1Alw  |NOr+8GΥe[dxQ*gfZRljSfsUpzfNoL)+\-g>lN\@LIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/beacon.png000066400000000000000000000005441177067165300261420ustar00rootroot00000000000000PNG  IHDR O) pHYs  tIME[HtEXtCommentCreated with The GIMPd%nIDATx1@ ic%X SQZ< 6J$" *@F,-#MPJ ,;s&\1 CUUEQ)uiq?74U%<-ʲ,Da;!DuB> t."HJ LC-woEg5圑kGTaF bQZfR`oﳢ+һKt4 [{M63ǛdK F a@$t](BD}p]b'h|>3!!t]""n,?mj<afru]:xo>8, & ᵓ7j59N""R.Ljv`\2PJO;CPL۳IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/farm.png000066400000000000000000000012131177067165300256320ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME&ʦ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝MhQ7LҘh6R(ĵ`A];u![qBVPE*Յv&U[-*vL&?\ش0MŻyw.}2a5ER54o S"r@DTH38ҔW:نtgiEݦoy\:жU7}錝|zG P_qt8>5:=}9G#)}krN3 G}ا:t_N}ߗ6ACg2=5Ͳb(ia*!} |cXH󙥬ܚ D"Uz&w= kQas}QGSH̖q>Nn\s(2~&W5@CłCt+:t2q;nd1Y`epc;۞n{>IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/gasometer.png000066400000000000000000000010371177067165300266770ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME nu>v4tEXtCommentCreated with The GIMP License: PublicDomain 6qIDAT8бjP+YiJئ&ꭦ @Y 3}F"^T(X,\%eJSM;k?9jurݪ](<7(! sfDɲxx}b߽kJJ)%  `9R67Q*SXS )qt|tRN3Bָ"iW?1(Z9f ljhZGdٯT*tP*G8~1`'ID֓1q:c;W:^6u,i+pdAny״,Vp׶,X,lW)|><$Z4|=`IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/glacier.png000066400000000000000000000004721177067165300263210ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYstIME 7!$9IDAT8ұJQ ᧢8΅Pp(t]8:JprB N.gBGYr/y QdMMs 80"wN*' ?df \W~(Y!y< 3Gp ]=$ J)9RJJ%OQRle)B^zN\C(܋"*! m.' Ngr>/Y~j+dc9M8:8aIl›8]O[a( ZjPܧ)>˘f8-ӆIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/mine.png000066400000000000000000000012101177067165300256320ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME)B4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥ӽjbQ7XHVcA 7`QR6vX[w|pL4 +??u]ND`0h4@>GDzB!X.ǿth4rDUUJ"Án7l !zq6) <>> YחjERa>#h4l6L&]NX ˅!NiJlt].d2x8r9El^^6P(jڗNl6"+P,onc2.+ݎV|}J ?ο'b IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/mountain_pass.png000066400000000000000000000007731177067165300275770ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME4bI4tEXtCommentCreated with The GIMP License: PublicDomain 6MIDAT8˝PE"? HCb/ 6" bii(  *꺝p9>wʙa1g@1<{1xʀT*%^ q>7 |Zpv= q}2 RTVqc6f(fFgry X,r96n0RfIt:Ld:T\W0,|V'yrRz=Zm+Y~h4pr˲XJ?"91LB 鴒%it: H$X,*~K݅bIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/peak.png000066400000000000000000000005561177067165300256360ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME5$8I4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ݓ= 1Yv= ˞XFXHHV7X3ɼ1$KP (QsAUebȋlwus.t zwԂNuPƃ[}쁾{ F*@8Ö]48zznyT?/`&Jm۸/⺮7NBahYc4MdQUyOqu9q ,cBeKm04MDZn{$Q'뺎s8,eY H9J)1Wݶ}`pf|9y%IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/000077500000000000000000000000001177067165300253365ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/fossil.png000066400000000000000000000010151177067165300273400ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME.ۘ}4tEXtCommentCreated with The GIMP License: PublicDomain 6_IDAT8˥S!= YߒQdN&$ A`tE' E cS's7ߵHW0"M< @uo6V+pzD ض^JB0y% P@x h4|>g^v`YdYL&Hbşij$UUeo&X,HRh>cn& À(X1TUvE.(j,BP`0DʝN|R)2\}kd24Ye`9/LSZ)>+lHLH$!܁mۼ$ E?1}o7IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/hydro.png000066400000000000000000000007161177067165300271750ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME.ϙ24tEXtCommentCreated with The GIMP License: PublicDomain 6 IDAT(ϕ1PEQ[EJM,u؋;pSE/ c2x=}%h\~;m[͛!M ZVQt: h|<1˲BjU.gx<7hievφ/b0l6^l6 (dy JhJQJJI^\HDr>kQ@AFnvZ?0 )*: H$EY땧Ǽ q/uIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/nuclear.png000066400000000000000000000012301177067165300274710ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME/+k 4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥SA=>E!JI6@J ]R% T!6ZZ@,HLH]wםb1ˁiΝ{AX*Lu_0͸lx\(jn g֚Ƙ 5)奂nn0 }f }J)|>d2AV~G3GB<y \ Rl6RT*q^3 ߑIPtݟEEQx:qB|1 H2cxvb83N p$y\.\.p~ k %<zg0fs<4Ƥ)F#Z-1A!"*(R6@)u,˂8P>0,ض+!R|ߧrN«J2IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/tower.png000066400000000000000000000010741177067165300272060ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME/1iRe4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˕@O6J 4B+_C}_Rl, Q"R$Fʸ߷j;wH}{˲WZjpRJA!(xih480dbVHB4@\SL0xc\~LJQ5f3 (Jvo*|GRyy dPil6TJzn)~5h4`0`XfI]|y>c3|ad^z~)%Hu]AxVtϱej&鯉aB!H)n?,l6zr<|vuD,$I~5قdIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/tower_small.png000066400000000000000000000006151177067165300303760ustar00rootroot00000000000000PNG  IHDRځesRGBbKGDC pHYs::tIME  # g!e IDATe=P V)iC)bsUy1>f9sAFZR@]V+u]LUU%R.TK- myQ}F~?8-~uHi1d|>GkmKe4MgfZkp""Q<cq~@(H,@kMCnxA}s^|RUJ),ˢ7,Y,ڲ,)}c ?ˆ*IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/power/wind.png000066400000000000000000000011171177067165300270050ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME/4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝?@ψA@$VVbkD}cDf#IĹlSc{SDB|>bAÁ1KJ)*d5LDVwJ)v;u0>`8y$~OvLJ)[I0 CVUjFuܽ{d=;]d$ɤmHr%^ˇ6 L&!!VJT*fCRu߇3_@&kIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/spring.png000066400000000000000000000004031177067165300262070ustar00rootroot00000000000000PNG  IHDR vWsRGBbKGD pHYs  tIME K 4tEXtCommentCreated with The GIMP License: PublicDomain 6CIDAT(c? ]@wa?tc#qF׈96 4IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/survey_point.png000066400000000000000000000006561177067165300274650ustar00rootroot00000000000000PNG  IHDR K*sRGB pHYs  tIME sh4tEXtCommentCreated with The GIMP License: PublicDomain 6IDATe1O07@&'6 @a8_\NWMO;+&j4 16w:6|O|_9LUD`?Ay)ׇ7YqyG Ƙh4eY~oi8aIL$fuiy$ 0 뺞YQq Y1!gu}iMض_i-PCB&(eAc &ƭ.԰pKc+$FQ!FQUjG\L gus̹3K-zY%뇱8bx >% ڶpYYS h?jIZ=E,_fJw:5dQ bjpbCLO[4᫢RW 1=_}U&NuX+kBr, P.(~Ur!sF)[X~1P6a6B[ !ocWT;*D n@,p5Pqm} :_%7jTj! 41Mk.k x䷙nOWPd yXe ~."$"x.SqMDgn'the+ݦUFD lثߪy,fHHLNXOo1*$qEHSƒV_@0u Htv le . JFr 9^o?BШOř"ꝫ꒙ZU2{RA QV=!|P}IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/volcano.png000066400000000000000000000004441177067165300263530ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsHtIME (fsIDAT8ݓ1 0F[/)<{';^Uժ\,1:xK{{ #S0iX $ش3`44ٱn"g/pdu5{s @MwX Ȏ# 1 vv畽ny%[GGyIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/volcano_small.png000066400000000000000000000003541177067165300275430ustar00rootroot00000000000000PNG  IHDR n]sBIT|d pHYs  Y_tEXtSoftwarewww.inkscape.org<iIDAT}α @ q Hh R- BF2'Yt]Y 106x 9fn YXZ8wi*W (>ʪ¯JIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/wastewater_plant.png000066400000000000000000000012161177067165300302740ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME5u4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝MkQ`lmڪMiDpPQpRp PQܸRWuQR Im$$4͔xs}9-(d`ZEUnd0>hEwC ~Vş%dۗ(OPx4QMMgJ)ANϵ{Nf)^ zQUpIgly$DIc:ѡ'gm̰).<$OLd?Nܬ'@洆{ _ F,+.).X"G.c}H@l߻ؚ[OǴMjv®{B}9cm6$d?mݵ>]Cc57+?NMVxXJ=uK@ej3qRm/IO\~mFE P_k9IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/water_tower.png000066400000000000000000000005321177067165300272520ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIMEŪا4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(c?)Κ>}?31102220ʊ ÀtƧO•1 劷pB8v弼I " +*f000,_Ç vvl(N.. ̕՘L $᠁SHSS۷o 22VaHzIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landmark/windmill.png000066400000000000000000000010521177067165300265250ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME~?14tEXtCommentCreated with The GIMP License: PublicDomain 6|IDAT8˕1OPO 6ЀL0j܅ 2 \cO0 X"))y&ڢONw0 ( YiB,JZE\!d2DT*b8E!VxG"d2A0pv ):p9>pV p{s?AVC4$t:Ij^; l;WE1Ϗwqv͗!1iT:@I4rn 5̎ 8TTH͚%^E3Eap2p" @GN Q97 eg&pSŔmV2@TUdwt.PrѼMbDZ6?nWLhDhF@bHD~.|ΈVK y]S*|.EseHlf9nH)&W<8Ĵy{PV/igzIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landuse/000077500000000000000000000000001177067165300240445ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landuse/commercial.png000066400000000000000000000004611177067165300266660ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIMEtEXtCommentCreated with The GIMPd%nIDAT8c`]`ݺu _~AQQQ{nnAAA D@ ;0gΜ?~`U?&&&F###, 'N`8|0Q.@3Qo Í7|W1:(2t=*)dJGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/landuse/residential.png000066400000000000000000000006301177067165300270540ustar00rootroot00000000000000PNG  IHDR "asBIT|d pHYs"OitEXtSoftwarewww.inkscape.org<IDAT(j0ϲoIFD yt <R4x FK&G=TJɔ8i-ʲ IiM ԚRnR뫀r! 0 RE@dcw0.c,B,O4M=!L#B|5qApuB裪CUUsжyc=69Hd?ʠIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/lock_closed.png000066400000000000000000000011611177067165300253770ustar00rootroot00000000000000PNG  IHDR r|sRGBbKGD pHYs B(xtIME6 P.v4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(mOk@ƟLf[lK# M,H[=IKQ\?!zZa=APT+b $xia?Ϗ%^|i4z~N;롳[K엿ۗ'߆^g\ץ~GǛֻyrqx\h{w8q $PiASj˞]mIZLQB`By+7+Ncj~a<Wfx` ĸDYh$(Ƞu ˲(EQ(Pqx 3TYBtB,.viBU&,@QP!k6Ĝ &Q" V&X !P1*nߣ()~8RYdIfp ;]Ŷ;ukA{j*IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/lock_open.png000066400000000000000000000012151177067165300250670ustar00rootroot00000000000000PNG  IHDR $sRGBbKGD pHYs B(xtIME2;e4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύMkQ3w>_T%4ABEA] Dq \j6g㪻u]CCqUZIܙD;//һ^oeN\u7GJbZF~O30 {^gff)2-J ̿a)"qf.^1<*@-Dz9?9%';~yVK, T,&""  Ib$l X,ZYZYy9iO=w/t߅8===(KIrrrɛ8"]"7(++>,.'zނKVx;c5;eziZkLӤd2Io6 e.54%r |o "B}}=g&Fn.J-,aųuus@ W'( "{5 &ܽi @*b# x0_(ߏ4S2WZJZ@ G?Λ!'MdR*JOIS ބI[hTT<&E+K>hegGdup6 @{=74gGF[l\8_d12IdoQJ;IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/note.png000066400000000000000000000005201177067165300240610ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYs  tIME  +?l;tEXtCommentEdited by Paul Sherman for WPClipart, Public Domainp'zIDAT8˭ !g#  SY:uyG(. !ٻ6gfӐt4DMrkY :t/@ [*HW\nbz!_mp@$woTĪIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/proposed.png000066400000000000000000000011711177067165300247520ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME 24tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥KCQ?9 di[Ad` EТI?`)fvƒ $nb(>`qxbn:FG6zzoF !F)(AH C 0;ksp8 r֌ 6f8͏41*07WWyW~H$:%tsb1T͢Pz?$,qpR)hw pmowx%NǑWLEͅ#AkތB&oV&ZD r]M.*Sv[ys.Ќa_XIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/misc/surveillance.png000066400000000000000000000007421177067165300256160ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 6!nbIDAT8˝?Aa K@FZwD\_@tD Zmfn=ɯ߼3/ e۶ض-{W |> }gt3dÕeYz=Jһz/Rjxd8l}~2Rt:-Iە|>/JfB2JӑB)X,|>+mZGyшzM&!žHv;Rd6r/K2LhD+DDJbbb"{ B20w"}+@νk2.ZSd^c.p"zB26B#{Ie+dyX @jTV=FJ8}x,QxwJ.gtqpVg= ڍ,|`ff7sXMf7% V=\/hG!6b AyLZ eIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/money.png000066400000000000000000000007561177067165300233230ustar00rootroot00000000000000PNG  IHDRH-sRGBbKGD pHYs B(xtIME+p4tEXtCommentCreated with The GIMP License: PublicDomain 6.IDAT(ύұjA/ɊB@@f,6L 2OB4bJ FD!0µ F'/,Wo7ýܡRJ)]rQk}Pk}2k`V1tb2 SJZ{l7*VwsοKO?EׄX÷%c0|ol!>R+ucw'圏['B)墔69:6qRJy1c58c\Ǜ]^RHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/money/000077500000000000000000000000001177067165300226055ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/money/atm.png000066400000000000000000000011361177067165300240750ustar00rootroot00000000000000PNG  IHDR ~sRGBbKGD pHYs B(xtIMEa4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(u=oP;7MeW4JUUHQ" bf@0UtPCA"`n6$Qn`)B>{>KJizZkʶmժnsty֌|*3}W"˜Yf%3$M?ݹ."~c/Xf+8 ԏwt:oG7)Xaq6'XV?zDx.yEiO xwwN{&GOԘ/,)i  !h6x11ZOeÐR8a/jJ%\M 8&cVo1N(PJaޭO<hZF,vh֨T*2j,DZIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/money/bank.png000066400000000000000000000012401177067165300242230ustar00rootroot00000000000000PNG  IHDR&N:sRGBbKGD pHYs  tIME /G4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(υkZ? /TsPx7ԀC@ dpKtAp!2 CElAm-A$S{]L(1>|MDv@fb!"oS1M3F?<tOOOTU2ηRDPncū+&>j|cE] B x ~0 4]nIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/money/bank/000077500000000000000000000000001177067165300235205ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/money/bank/vr-bank.png000066400000000000000000000011011177067165300255570ustar00rootroot00000000000000PNG  IHDR /ys pHYs  IDAT(JQqBf E7ԢvuqۢMQ-J(jFmB'ef|?y~?<ς`¢"/J/ 1x f .y>GU6CXrZpLgӸ~Q"kQ]ܓ.Y5IN*6lr\fNvNԵaݝDD{atV>Qr X̨@}8a9;иNߢ`N 2}Mp _ȵQf ]|S1؈F/2y?Shk*C֠8YӮ7t{޽g; <Ӯ$wrU?w{yms/ -]2?IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/money/exchange.png000066400000000000000000000011651177067165300251000ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME8%v 4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥@O1(NDPBA["UVM,,5oEe93wf|Ò$~h, >h8~\*V+6͐fX|O"  @C5ng-L&X,p8ǟJ^q8d0 n{i`Y4Fx h48@<ah8R$yu!Lb\vA4v4K#DQD,, щr `Z!Z0l6,6<7~`@,$IgNޅic0NBZ D\}?HӉ:ɲL땈-1 CP<JiD^;N˅~|{s*mаJ/nQ*ԆfTUٌZ{X3.~"}ͧl?`\:ZZqC^)ɍh"w ׳AP,IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/nautical/boatyard.png000066400000000000000000000013051177067165300255700ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME 2? ItEXtCommentCreated with The GIMPd%n;IDATxڍ;LQZRbzƟ`jH:R/&.C 88FcPe PIi+EJ&%g8y=wQ2$? (3ɑ)\hm$0%t&b ":gVp&WDDԒgS=j72t|fXK4V$il0p!A8wB,QK.veӤ _i>~n:n_:!B<O)AtORQvzi2"B 6j3&ɯDخ"gɻq*4А 0<<4X,N'. +lHkj&Ƙ a̅^jwv Uӕ򚡇v͠oX֩ThZM69T)Aճ[  nc5DjBIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/nautical/lock_gate.png000066400000000000000000000004641177067165300257200ustar00rootroot00000000000000PNG  IHDR 2IsRGB pHYs  tIMEY6)h4tEXtCommentCreated with The GIMP License: PublicDomain 6IDATӕ 0 CI6)xHqa#zkܒ~W|p!Ęb1tf/⚰s_KIlZ6xE&#=U(qIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/nautical/waterfall.png000066400000000000000000000006121177067165300257440ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYsKK;FtIME  LtEXtCommentLicense: PublicDomainGIDAT8˥= @5EˀJN/`)x ^Al,,4$,QbI 3xk$jPS\ʲC`c0ו{t 83Y)b8!q VENJͦ%l^ ~2q80sU RI`#sٞI$tu'FkN'8D~ X$]+/K u`IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/nautical/weir.png000066400000000000000000000005361177067165300247360ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME5a4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT81 ?%iqlqq,"D kxmˡ 54HICÛHtyza[Hӻ>P y~45IF@m5t4z8;V(,{`Zz_\稉&wIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/people.png000066400000000000000000000004601177067165300234500ustar00rootroot00000000000000PNG  IHDR HUCbKGD pHYs  tIMEuIDAT(ϭ=jBQH6*@ː]d[ Xd!.& B !I3\s0snM<`~-2*;Sz!V@Yϡx7,>KO1F~D7"l zIE*+l0}:G|0e|E6_8^nZ_{\s+0 xI!IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/people/000077500000000000000000000000001177067165300227425ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/people/friends.png000066400000000000000000000010051177067165300250760ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  sIDAT8+qofw݉ ۮ<-J&gΒr7'(rpuu va<.`=~^}_kXiM[Ik `lFqζ9ێ,(~Tob8m0‘u&pL[ΡvKt_'["T͂UAtυ+MΎdeBxЄ"zK#;rc`|\DW%M ͽoDHc3H<!H| D#b;C.\~1ZO]:k L dW:Ei!whT GԀA` 5>,%lF↎p N~]H&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/people/friendsd.png000066400000000000000000000012651177067165300252520ustar00rootroot00000000000000PNG  IHDR ޜbKGDC pHYs  d_UIDAT(M]KSa󜗝s%Ij^Kif!BfAUЍޔe (/H1(Faks͵ys] ?բa*ٹ+[41,{xqBgֳ/Fr{%kvz#ƯijP]t74 UV#~'&b(:ۺ ˽i}&" xQ׳>tuQ#Wj^σ Ht;֡2h^ IBa. qRf0O ~/qy@1dAlFՑ N>qjm=?z""ݭ2zFp.BtLmo'өeQIsy]f4H` 2a&2޻UPN=r>3UZء:4V o:@!Q+Utx 0nĢyS^_vK>0mk jfxb(Ebkunݬ)o2e,r/J՜#X\7 SHF' X_{ gr:IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/people/work.png000066400000000000000000000004611177067165300244330ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIMEtEXtCommentCreated with The GIMPd%nIDAT8c`]`ݺu _~AQQQ{nnAAA D@ ;0gΜ?~`U?&&&F###, 'N`8|0Q.@3Qo Í7|W1:(2t=*)dJGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/places.png000066400000000000000000000010011177067165300234230ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  oIDAT8Ր?OSasZ5l@F1|?~Obb mRVRM}]1j$qyr~qJyPR&-e2] k8кwlڃfZIԯ}yN*bIVq>gNˍssW4~'uu9285γ'o./ 4<nHgGT|Y DI&XpK pc`x!h 'Y&D)TLH֗W2ȝT4@2|sv 8bx<NlBUTQ[ },ndvX >;x &zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/places/000077500000000000000000000000001177067165300227255ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/places/island.png000066400000000000000000000011321177067165300247020ustar00rootroot00000000000000PNG  IHDR&/sRGB pHYs B(xtIME4D4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϥKq?ogfwvkEtJ$dJ\Q(j;-0!$ cOQx!(Y\wWwau_ݕ}Eb'Sr$;,sP[>۵hBV;s1+^SՔ,lr7Exι~O7eFR;rΊ4w+Bɥھ!0c}6+ٮg~8=xi@[\20iTd*rsͭeyJ7m00{@TN<]iU䣸{r`u.g q!{X!7xx], @Ǎq3S&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/places/settlement/000077500000000000000000000000001177067165300251115ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/places/settlement/capital.png000066400000000000000000000004721177067165300272370ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8͒ 0E߹ à,d5@@iIK#*t{wejE=ӯGj,6ez-O yw7n^b`JػIэA/LJ~FǭE%(<pRlZxLHν_rzEܩ "G&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/places/settlement/city.png000066400000000000000000000004261177067165300265710ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8͒ 0CߥflD bzS’g^(%qԣ(߹Vh8҄- fiEQ(GESnOP̦V7.o"3t< w@qsl|szPP)&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/places/settlement/town.png000066400000000000000000000004261177067165300266100ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8͒ 0CߥflD bzS’g^(%qԣ(߹Vh8҄- fiEQ(GESnOP̦V7.o"3t< w@qsl|szPP)&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public.png000066400000000000000000000022161177067165300234430ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIMEDzIDAT80COa 40н   A@ . <8H?m ! 3!%7pR/'' 1// Umߒn C4040C0COał?VIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/000077500000000000000000000000001177067165300227345ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/public/administration/000077500000000000000000000000001177067165300257615ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/public/administration/court_of_law.png000066400000000000000000000010271177067165300311520ustar00rootroot00000000000000PNG  IHDR nsRGBbKGD pHYs  tIME&ktEXtCommentCreated with The GIMP nalIDAT(uaߙ/Vbd2 `rn5-s$ Y`?jVMR&E}(19^m)Ib:d2iZXT%<"ht^[rQU5NBcRTᰮ,PPfAA^nf>#qJ$I$!$ YE)u]Dvr19/|u:uD"F'wrl6hvTn67"dKiʲL)eYu:b+laYQjR)EV}s^VAx<\.ṡhc`P׷-"$!DIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/administration/prison.png000066400000000000000000000003541177067165300300030ustar00rootroot00000000000000PNG  IHDR sRGB pHYs  tIME6,c4tEXtCommentCreated with The GIMP License: PublicDomain 6>IDAT(cE###A660l . 0'rOD 4#< 9PIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/arts_centre.png000066400000000000000000000013151177067165300257530ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIMEk4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˅NQg̴R qetwD&tKCႥi1tfڙ{.j͹'瞫wx\U4OIa帉?v-~@ShOIΊ[ 둛:{y/Zj㞦@])Hs[aI?gz2D ĬTIJr3 7#'!|l'+x R(H< sqgVFh*݇gZfm 9dx20^<։ORNf]Ҫ5('4g`Q:1jdwyih%Xq|0; V\4 ?$ hyNVR 8f<7V,D] H1eAsa[5qH#h˓7,Bc吕OQjC)@*ۼWX!Hz@ Vax] 0'_||Y ,5~QRBzz;z(IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/firebrigade.png000066400000000000000000000010261177067165300257040ustar00rootroot00000000000000PNG  IHDRvsRGBbKGD pHYs  tIME +1|4tEXtCommentCreated with The GIMP License: PublicDomain 6VIDAT(ϕK[QqE#*dQp:HUߔ?BK Pl%GqPfpqB@Ah0yK=)$ckyIɉ?1|1%hIBp1i~rߖf CMwffrv"ٵ5|.W#4$9= onqdx|DDgovB}j5J$css48f=Ý`%` 4K%:Jޓ2W<2X«W4ߏh4G[H2L&"_,qtZa^KR/҇on<IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/police.png000066400000000000000000000013711177067165300247170ustar00rootroot00000000000000PNG  IHDR&N: pHYs  tIME :3&tEXtCommentCreated with The GIMPd%noIDATxuMoaciV'(6$K@R "!MTv~xc$:sr'9UO$tl-i1Ueл\7hU8++O^chBצI&_i }ev(·! auB1YUZ;q"8Qܫ̊bU"j$ň"X<<3~s,ߺ;rr'|Yk6[ݼw"rY{TkFwoV1FUծ\,樈/Pz 8gn{{Ts#OS{3]+D| ȆAȣS(Rŕ % ]^P)1ST\ /qlt`C6aT8 `2{,C#Q}c D0*Xg1T3unIneFU6X\ŰDE45go;I9N71A!" V0ww<`7N!H!Hu-M&H8V[+ I)IU%9'[qUe9 M#Ml4suN\~xQ R2AJ0=ll/ANsC$;VIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/post_office.png000066400000000000000000000010611177067165300257400ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME <AIDATxڕ?K#Qϙ aID"B ҺEA5da .X`eO`PPTb!hdÃ=wyZ_h4ָ/ELB2Y#c[獊@ ԗ##r@cc<7gHTdơ!q*6QȲo~1D`qrr70lfff<< ^_, ؀Yh4%, nouayȲXxykZ#RRϖKժR0|>ץLF#79lmT*|>lnv06_;4˃%Nǧ֌=ZMl|@ @vk4>s&U}p]T*|LmoK|ʩ)(Z.L_g'IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/recycling.png000066400000000000000000000012371177067165300254240ustar00rootroot00000000000000PNG  IHDRsO/sRGBbKGD pHYs B(xtIME#714tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕ]hqαy=YcHRf /mrb\iq-LJQRX\ iIBMme3/F;Kζb9}yd+UXjv*UlnJIjsVt{VFxkW(*bޭq GeؤV(Bq by%WojB NUِ;XE~;ZA ]"DEb &"l&fnxYoI г, UtCU7 b| ^ C5E0 6gԗbmeVQp\nMHp'au~ KscE/q&:Qt>_pV/Se[|Z -(pX4hIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/telephone.png000066400000000000000000000013311177067165300254230ustar00rootroot00000000000000PNG  IHDRbwsRGBbKGDC pHYs  tIME +[Z4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˅kZQǿT0HD,4Pi"B_P5cpz"l ZLUO^w.s$iYCm(kשvz!靤Gt(RS @i4֖8f^x MsOǮ Hn^Yɉd2$F##)$ B2 <|@,x\z]Ba!`ssӕf2W ,-`ccC4Е:& KrkG$eE%<>Z;I$7ze|f^āC)%6[З%9ht:͢i3 zуxdFwwRT@8} `nwJ1nTrj|ooZ6Ҁonn)b3,Iz 除ʔ!#;Kj漸c.8d@6^IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/public/toilets.png000066400000000000000000000012531177067165300251260ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME'KJ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥=k*Q.j hLltRD"U'h?+!)+%E8)D-Tgy3?B2LVZF0d60F4 xa0W >VbxzzB)E"`ggj nYmu׋i躾փc4M#b+#K\նJ)~V|lmmafkmoloo`Y-qBЏA&:f3叺, ǻIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation.png000066400000000000000000000014051177067165300243170ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME6Yu4tEXtCommentCreated with The GIMP License: PublicDomain 6EIDAT8˝KTaw.LeSJD`mYXТeh#.u!Q++r!A(Zئ*frܹ3onP2.y9<<< %W+1V*55M[n~jLD{<;:5o.7~c#yIĈgΟ>ߞiKnXUMI!RbW͡bBt*( e6ϽEJm5'F[ԭcBSqҹZ*a:5"3AP;.JHY)/^88ZB`sW#`[z[dfB#C.|{&IEi)'HyQz1GB}h8y]}s7ί6c hi 6QmzI&-Y_D7ԭ"̆C/B#te7.`,-@i  dk=<^Й<+\ Ǜl')9IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/000077500000000000000000000000001177067165300236115ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/bench.png000066400000000000000000000002451177067165300253770ustar00rootroot00000000000000PNG  IHDRa pHYs WIDAT8A 07%雗MK= jT1J[̶m%(뻸h$ls4^a5LWvVExIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/bicycling.png000066400000000000000000000006671177067165300262730ustar00rootroot00000000000000PNG  IHDR ޜsRGB pHYs B(xtIME% ~4tEXtCommentCreated with The GIMP License: PublicDomain 6 IDAT(}ѿ+q}O@sQehĤ (IE( FBQΏ~}^yS~V jЖPIBX9ˀ6\`o%#&ЌVcY5ш\a2*#EǷ1LNi `<^`gqqw؊.71F^"'! 8~:V>lTl*`.Vu\$^Al5 IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/cinema.png000066400000000000000000000013211177067165300255500ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME$:e3)4tEXtCommentCreated with The GIMP License: PublicDomain 6#IDAT8˕MhAԸ&$M!HMT[ФXAA^Aē͋TDSZƝf7U4Xu$?=*`~bO7|~_)X]o^pḔrJO_5d 7ǘSEfҾ΃O_`4ad(N#){9K9jdszdbO*s4L\Ubs䭄/wOz/͠,eLv4tV,s/~AY˙L82;ջwV`Xu[{64e뽽@U~KωȤS҆#{/-ʇ YCՈ&# f{[U. q Z_vX+IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/common.png000066400000000000000000000005661177067165300256160ustar00rootroot00000000000000PNG  IHDR ͣ9sRGB pHYs  tIME$-/4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕ1jQ>@"]H)ҤJH@,s V)liP!}_73/#sU θTmDcdtΡALzӮЪBŮHss:N; '0#Ko,RLtD\,5$'̢} IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/garden.png000066400000000000000000000004021177067165300255530ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME%N4tEXtCommentCreated with The GIMP License: PublicDomain 6TIDAT(c\3)D05Ğ=KRz*£,?`5%$ :v200(}jDaB K<|?TIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/music.png000066400000000000000000000006731177067165300254450ustar00rootroot00000000000000PNG  IHDR&/sRGB pHYs B(xtIME)(#$,4tEXtCommentCreated with The GIMP License: PublicDomain 6 IDAT(ϝҿ+q^ʯ(b'eSŮt,&dPJYLbDpȊ,G=O}{<;<~k8O c/6p0}m%*㾁q\*Pi`q1C<,1gfr籋ufzZ F hRԼ&S &q1\-M爷prhdVep_ ثS_3L|oxI!, G>}i7=Ud]IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/nature_reserve.png000066400000000000000000000004371177067165300273540ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME&0!4tEXtCommentCreated with The GIMP License: PublicDomain 6qIDAT(c\3)D05Ğ=KRz*£d?2/bwP>4a4u@S.CI,u(N"FxT[gnGI@\d+#4͏eIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/nightclub.png000066400000000000000000000012411177067165300262740ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME a}!IDAT8˕_hRaƟ9p9ubDlE j. `QuEW6]4o *]B(EYQfM2s3lf= R PY!B*#Ÿ8w)~:6 QP 5v=իqCQ XG7P_b?3.Xa.*Z `\"o!LZh9$i󺶶,( vbYYZ؇%H4vA"'z@$q\.j!4zPqgMJ3CyIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/playground.png000066400000000000000000000012101177067165300264750ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME  I9tEXtCommentCreated with The GIMPd%nIDAT8}ZQ{wc+hPCXQ EȮVv&lvB 피@BHR4 X"Jkx",^9o>("rOv5 .y&"oEh4>uy'"DD'*zN'Jzj,"Nj6J%(^5բrjJErZ<f#v{``j5<:wl"^nOB~~x>IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/shelter.png000066400000000000000000000012541177067165300257670ustar00rootroot00000000000000PNG  IHDRasRGB pHYs^tIME' X4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ŒOhA уZ9 B" 9X-ւPTȥ[BUL "j?'Ef}njtn91ꝏ:atNiun\{S*yqLI)ช <5 .hFh.'P$jMN wOO_"o UXfsl4mgb"WV -0B3iL(Bm[a3\4+j{wH~o"D:x66g8yqR"0f5{ȽhIi Bf`p'74ݎܽ\v%ϵ@|hP#z%=1|3'^LIv XwBS#y[w3p/l_Yު;ڙ^KgNQE0|?ӕTݮQ <d1IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/theater.png000066400000000000000000000016321177067165300257550ustar00rootroot00000000000000PNG  IHDRsO/sRGBbKGD pHYs  tIME M @IDAT(ϕOH#gI2cdVkkm:a@DJZĞ ԓKX#("ң DLIL]cٌ31ew~{NӴޯ10 CoDDx?O}l4}~qqa:~J)#```Gg曷Yt:-w }Y}Z(O%q\ ~M øRԗH$:8k:;;pƲeYI>A8d2q\l.cywݫaVNOOeIa |BWWW^?99ZUՆiX,yRUuD,mrܡiZAyޗ&ɦRD~?%w<Ejmm}E @(j=mǽBeىb>0@ T*ZRYXwH$R><<|/٬>22b܋XXXgffrPF?'xoY Mj!XKKKX,e2*K4mQ*477DDpݥrJi]q||prrT*`0Xx@.*,Vv3cpxR$C+gHiHXL%4EF cWSk 5SAeQ$7)N/&xi4hzQDi6"lՉ72Pw`)7Fħ?B'6ߙ 8q$lDD$ CY/--. ./^4v,)lnn@Z<lۦ;8,X, `62::Jƶ 8ZP.Z\4qs( X__G)4e}e:I`FFFp]4e~~Y* lR@IXZ&ے$  F)֚~O>?* ӜeIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/water_park.png000066400000000000000000000005021177067165300264530ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME&"DiP4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8c J;I5Qtm##ٳ ph֬ FJcBrÄP9 `&Ը%g".C12|A,8bS{s,I]3U2޼IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/recreation/zoo.png000066400000000000000000000013231177067165300251250ustar00rootroot00000000000000PNG  IHDR&/sRGBbKGD pHYs  tIME 954tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύ1H$x8sth\MZ$%sN Rp 7J SC:(\ p)dſKl< 1;FRauuH$r<] y |,i.똦hw=@Dv۝j)~#"G" )3uWDb.s4MBED0 n6qV=*@Qz߼-fffTy#p8D  ðɤ Xe 1 Ap8DuNC*Z@4`cc۶/gggQUp8 >NMMxz/' `КR(hZt]KҎmN ϯ4MD"B!T`&QVI&$ iZe$Nde\&x _~:7'eaIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion.png000066400000000000000000000014321177067165300237740ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME !?4tEXtCommentCreated with The GIMP License: PublicDomain 6lIDAT8˅=K+kDFMmB,TBH`b@!Qb&6R4%c).UNn?wkm6!۶fj4M9?}F!u=dRx}nooahttTTVFǥRI@$VP(h}}]$)Ji||c+B2zCA}||4݁jiiccccp]OOOk@WWqrrB4^H W3MOOVe\.kooODBJyA$j-Z[[)h4<O cYޒf"Jqyyi|>'OD"VVV8??'H$!Sy||`0H.u blRD[[t˲(B! ,%&&&ؠx< H۶󘦉iylfdd*I* BrGeYΎ4<btn` R@$fGhfZN$^(bwwr$a0 l6 Պ`+<==ggg( bf ]yzzJ]fW(t:E+>>??1z vc<C$ |>B!咗<::h4y||Rwzy{{qTИ-coooc燇p\5rA$TUnZe(BѠa<gP`0ivl$ɃE&I|>j5tɄpH0H4}[[󸻻fvIHX jd~lGx6SG?>LIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/buddhism.png000066400000000000000000000011451177067165300270500ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 'ޓw4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭p+h!!/`%&i-w0M>l,ZH!-$oU 8XV6\]p83;$7:!ފ/!]ץ,˔e2 WyAEvXVHh6tNrBL&x.X,hZ\.$ p q1Q>E~i@]ש:PUUw*^kKz("xIl6[65 J* Ix~4DJ(@@dp >b@fJ>$BP|EqYߥvv= zgwIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/jainism.png000066400000000000000000000010161177067165300267000ustar00rootroot00000000000000PNG  IHDR O)sRGB pHYs  tIME -3)4tEXtCommentCreated with The GIMP License: PublicDomain 6`IDAT(m1˂PϽ%"ҔfKKc8ɽP[cC`-AW 2(Т: UNgxxsOt:t(e^F . KsB$I`<EQ, Nam4L&Dg !3 f"CRD^v{'D\,˲ATa\β,qZ~8^ub8JR}>_uji Q1v]|s6[.p( 8#IRQT1z<;1Ji jju~\~<~=u 8NZ-96L(6X'6a"IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/mormon.png000066400000000000000000000013451177067165300265620ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 54tEXtCommentCreated with The GIMP License: PublicDomain 67IDAT8˥=HCI#)* ԰Y%Hh !$*Zk*s  !"[ hHDk{"{缼@?(SL& `UU( T,ussIR__ᰆeW@Ѡ\.T BFUooZT(t~~xmsxxeHRtttpuuE*bll ӉvgYVVVFh۶4M%~p0 mnnʶmABsssl'ե IR Ã4;;K1ZFww7QZ"?D`P|^ǚ"Jo]HAnoo@:f}}˲`&wx.c~~]p|>r\{Sm@$ɐH$\.\.,,,dh6J0~xQt^IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/mosque.png000066400000000000000000000007561177067165300265710ustar00rootroot00000000000000PNG  IHDRbxsRGB pHYs  tIME;4tEXtCommentCreated with The GIMP License: PublicDomain 6@IDAT(ϕ!PL`+ō`дY('-Jو&ibR&v9y{v= "7~'KȲl4yq\5`jۭ>vǍFq>@Xa >EQAw׫mv{8痐)4Mt}DLv|<,HIJ,8#ix8<ϣ,a֒!ժ(Ʉ:ǙX,uLvV,ZϝN'2-rY.&V> v[j]MΊIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/orthodox.png000066400000000000000000000007551177067165300271250ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 0D[34tEXtCommentCreated with The GIMP License: PublicDomain 6?IDAT8˕!`o (hYr2b4ݴe0 "(*`QM&t^^yI"vf<\MX|aZ1NY"%8ju9`&ض- Vv;xT4NSLX @RPVm@>|N;׫$2;AnZ,~a4˲(J!bBez>oٔz"F%cp]X.F#{OrYnZ,|5vL&:NuIr}GIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/protestant.png000066400000000000000000000007001177067165300274500ustar00rootroot00000000000000PNG  IHDR HUCsRGB pHYs  tIME){4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύJQ{wI A1ظH bgca 簳HeW7H Rl$ݛcw%jsf'I׹gv dt:eZ)npM$z5$If&@j8ff̠fIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/church/synagogue.png000066400000000000000000000007211177067165300272510ustar00rootroot00000000000000PNG  IHDR7sRGBbKGD#2 pHYs B(xtIME sTv4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(uKCoW FK" XU(6i 3bQ0 G!2di|7Г.ù(1< 'Y"I &Hqp>P,.^GtmZZ2<9x>>zr|i2>M~g^?O$ h4eYTغ'\.31P(PuڶeQsIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/wayside_cross.png000066400000000000000000000003161177067165300266520ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsa(tIME &5߬"NIDAT8cdfΜNOOgĥB@OOzz`Ќa` 2'-- "dYf6 ?{, W| c5IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/religion/wayside_shrine.png000066400000000000000000000007251177067165300270150ustar00rootroot00000000000000PNG  IHDR+>}sRGBbKGDC pHYsqtIME %y~4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύJP4)vwJ{Kϐ[g7 ox(XP thp<ZnId. LZ_d2!2(jmf34Jhc̲Z|ߗf)Zk b( sՊ)FJ) 9p8D);29E`4>6@^ȫE 1Zy~;2춋XumL12IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering.png000066400000000000000000000004001177067165300241330ustar00rootroot00000000000000PNG  IHDRxl0sBIT|d pHYsiZBtEXtSoftwarewww.inkscape.org<}IDAT8cl}`C8mJpVOi_ #?K_,vgi(60jZ@`a```x RJ,XϿgo> P(X r$fCIyIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/000077500000000000000000000000001177067165300234335ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/beach.png000066400000000000000000000002421177067165300252010ustar00rootroot00000000000000PNG  IHDR PXsRGBbKGD pHYs  ~tIME +`;"IDATcqnĀ@g, 2R4E.IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/cliff.png000066400000000000000000000631461177067165300252360ustar00rootroot00000000000000PNG  IHDRQesBIT|d pHYs B4 tEXtSoftwareMacromedia Fireworks MX*$RprVWxα 0 EA'ú:YX E FN\#ZkΙ_G+'_4;KcnL9iPazQŋV1dTGN:bju kX HESC[ķ_ȎT9E+Jsl|H r .q$EE9ݴt89!e!JfJӏ1tM3i>dAb,֪b{X r|IXN0\#r`r^Syb}&Pae4X 1 _ҎRhQfI@َ Tb2tyIBߔO٘R;-v=+c}RX~H)cXj׿YiIoSH3ɯ6K*OZuig@f 8ld㤝sTjM9MY)e0-QޏpEQNY&uiʎp1cQjTNL#c|(eL-LUO$9Gǫ5S[7Sfzʛi,jI;hL#>إ 9+粟G5T7PZ=OH%(,,X3XU,kZ%,Wx(xft3Ua é鲯K/ZvSVXHѣ68) 13(E-?ZR^v&l{f~ϊ걜ˍ{"^e%rh[0f!LԺuj[F(`Sm=dUP@+eAKXIP/W|Z8X2/i r3^6ŨpV;,:Vnzm3VΥZ#龾J!" +ZP tZvT:@]vɬ=m ۲9<*&Y)WSUۚmZDsfV4UUOu*9Iۍ %oiRMF轮b+E PD@fd֮|"l2+Ig!i_AE_"04iS QmkgUu =S^d`”Ճ'I}bff3I ayRA@hDRR >% amQRha [[2EIDd,--7تU1]>7dG0:St}:Myy}qlݫEok${H3# n+(9y}Z;uI1l깼Tbcu _/hdߨ3zbxz\_>As~$wxLw8*Vʕ.2#)Ү\nR:lUv.||!9>Z=^.%-rief/43w"`LKL\Ww].L&l1܃{yoT^O3z6FJ fXϰXp% ق&`.Pd =gGTqkr/V\VjPن>~$81fuzJ=-SB^Q]pta|<_}ButmUxa"@:ҧ둡8?a-tFHñ5݈p.Qt v^;;<})k Z3f[b$CV)5Gk9Zs-qq8BC9YfgΚo9P2 Z3fhз?pv{H|ZBlKslٚ5g߲WR rfhК5Ck.) Wiv|OsjagN3fhК+Cw5Gk}9ZYfzfhК5CW+4gk֜9lN3fhКW=8 y3򻉌?.v\28cfu  ׾>w#U=7Z9<Խ:p7'i#+euÖzM]k&bp.kWmϸE} coul?_P/^OTD| `h0~:Zp 3ӐOY.G?͵\?bԼy+eu_¼\-۬fIfodkfo%b3ۥvyXJy]74aêm+Xo y߾z;LܙoC˞i_nC?mЂT=9@M}٧ATV;кtObwܻ}ad$ίz7+f-q{udۈhӛhgP6}"E疵< >YeZn[fn?ok>2]n\@9y8{cǯ9V1~J'lFuYIO##QoˌI^U\'eIUz/>Cϙ^wi{²'>OEH>G3#21؟NcXui{FӞbI1$gqO`.1?09ЪK1.?Sϥ㟪dwׁ}'dVfjc9bwwh40Lۉpw9$sr;;j5lܽUҕ2QChO3\DtYN6iM^є&c t?|PքywUiͰ'Y~X M8wC̘S߽vptx3?GmhBg{> -c7zU1 cd's0|3>n;m/"\Sy/R&Y)^ޚ>+Nܩ佸GW}EP4.\w~hEf5⸤rOG&,hܻD:*:*wxLh${ < w1 Vѣ;Oak9QvnAaүUIS2*W4^ uWk'% sJ 0_o|![Θ}KB)WT[eѶ1igi^tCf|K^GV:CαԼVgi\?Z~h?p&lVҚVҪCISXj=MXR%C=OiM+ِ2_,Z%r).7yOF0Fr{)y?[m>)\+խpRf\5qs\uM7C6.t1O`2mF_mftnԤMb^cdDk ϗ.G̹]wA9TE [Q8iAiϤMNd}Z.4I0]-[;At@^|{iHm+?; C8'gMeQh1}}[| w8YԂ6|QA7_Aw*8<6ݥMw@/iuoݧ3]q;=egc \C;>Ϥ!ep }V>>ۂUae FoW 0Xe|Ѯ|;r`g?AϦ6jMl^-#ր;@su(!PkI:DΟ`&c9M0\ 1܌M0UM,L"7051ɜIb51ɜI&kb9 uF>  6߂}9L8>e5q 7gh-HڛmK<=߹Z9"./"kیQ6 IT{T=U㍡i3V_3b򇬁o假>=,LAӻZATvƅ\ ۷lVNΝ=l]xN>%}nR?KrB_ mkBSx]N0 pjت MjlmA^fgfg3 fУFN7h>Uia}A۔A|pR/dgo`Oez6ؐH]RNHA*7؞.9nGjFWL&}4xN8F Nb\, *mkBTx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw&mkBTxԱ A;#S!QS+nʣ]ν@;ӏ68qQ mkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$j4 mkBTPx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 fmkBTxڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳmb-B#MPc؄N`;6.dvׄ, q((@=3*vc\nV\1Loz}h6wx3ogb=Vcq e 4if խzdtm \P0|p' #Pzܘrxpxv9JOo R -*"pl. |mƼqEۺ J5}r릪 aR {UE9,.&{ugB',V#"mfRRqvEQh"83K5ɣ~R/!j/3 9DYG?3%Eza4kvyסQcPC`<zbYi$;OkƀhO Z*Dq.1dzb &9Q]5&4O`-owC(55x1w(KT N+檀ٹYY[QDį/Sem)ͯX<_/Ikݰ4, ORcrКc9X'4H|_ ޴+ךon^n /\|55@W 2PA0\a/;bg+u84"E[gPR}2.BI%Kq#4^ρ4-cȨ@?,t( *ְ <*姆 os++6t--y:#ܙJKPG)CiƇ%c6æð!"M `< ѱ#4nʡHv \MeN!)殥k W%BLGD)r-dӧ/G'3U=8/We`3^1q/q.<&~ &%DKupV+:(@ ;M[9nh~+zu "=W129وgPHI^#*QѿLaxhN 3E\&t]/>_Kʖ.&#KMfBP+p&n{ 0]2e i6mF ʜtp8nSK\g_#/yׂ;IΠ8rGyC[)G7aXwc}VG0 ,9\%i]tI/kls]7ͻiCqrBB4c踛g1}ăXU Q7ؓٱ b3a-G$}=刽.'M+.xxtwlhF8"P81A2/dN/}8G]`UY ʁRƇ9Sq )OTE$'*jLCCSsQp1p16CGd\fa3ܼ;ԝ?GV[yQVVΒ@L()EP 'R*zYKgb\!(e|E8HZ'sy)0  c]qA2ȅ~vcr 5Qu3,%oؠ5̒ Hv㝲iy|Ks^(b.8Kqj9B[hyAܣuG)ٰU ǧn*[E \V-WC!SG\ly\Tf641DcĐVoVţ7> M슝WbzYA22 2҈1#Aq J GF2"v[LpDgj*ti:$ӂ[׏L=UA:xOeb-8q3UԠrtF>1 QڼJK4 R;ul#Y1l@2LE04, -(fQ"c/R5ִ2ELsZt@ƃ?C︪cDL#%¸ 8֯(6 ;-*9@Adgcϲ#?F\;C2zW~tO+)?,d}9L6)])hcV}.ђ̒juYP|d2΅)hA15>@G/w^[{3W쥰"S7ư-ծ-DӒ>_0g_m0ThI+`x9q{ٞI;9՚rLS˾aZt/ ኲjMf&+dӋb0՚J3 ɝFPQ?8^Z4SI_(Z=GmpLSbfP(Z~ZLc9;. EjJ}3Ђӷ4a&Cuj+Z/P<٧TqzȪ~V˂5g?8^Q̅*qdB/_ifzmQvXjuƭxK'MfޥKMFj}}_BEWbi즩tY{ڈeisjyf3UϟMdS 5۴ fihQVUrsi,%7=۷J{Ӛj {]U):W(l"f3 v]S,DdNW*xaB=8hpjE`hj'>"׸ϪyF21[SWj9 U .}JqR{p)Of<0.juW|KÂۢ[9~eы2y搗P׺jq-4#S7:Y&6U}VXZ_[nU%Yb}n"ڻ]-J`ڣu8+tc2W6zI%@fFWP<4rșv&b؊sy\V6#_ȾQc)vgM+5IuÏ)}rHRpU,+]zeFR]6*>)u٪]C2s¯}őz]jKZtҊLx!^hgDd]&|M\ǙڷM2cfkc'rCJv-g5m,6 RͰa=<6X J :M(\{~Z Hx?:_ Ԫ\ w}O}I:qb2{/[֧t݅ }yH7j *YuEtO#Cq{!\->rZ茐46ܯ}#}h=&sG~Cd+6%znWrx<{untOFLWꞘL}u]Zא孯X۞qm+7 |QSh]il_T}*> :GOʒ>)^} 3,+,eO|D=|:fLGdb?^;ǰ4=KbcHψ|]8'>b~;`sbuc=/%[Ub ]K9?U_S #N3[̘r#h`rH{$wtwSk&{T{V+(e'2#&ib(ځ%g, Bm3J)M(~(j8?H D۫\+aO@ޱ@qN'ۙ1{ Нjf-1`GqGp|Zcanb.O`3i >Yf}&ݺw^D_ngM޳ȕS콼5}WйS{q=IJZi\l%2LLjqIkyLX22Ѹw4yuTBG%tTBG%>* I>6xu cb~G5&v֦7rܠ9b3˥_M|e Ui6F>7"s75j NK|+a &C1#䗄R5ɷ ʢmc];P4Ӽ膬5]+,>Z-9uc9 /ĵ٩y':SJ1~|KO~fMj5iUYWk:n%zX*^]KFWȡb+[6<5͸k&oml]bweh9\YIy[<'żȈW>8p75'e˭ҐW~w%8AlpOΛ4<"bT6pxtm:SKv_f`OygD'lv{ԥ#v6{"="w}IC'^=,Y}|9f)vqt`:)4˫] vv7T׃\۟MgmԎћ )~3ZGXw8\?P=,LAӻZATvƅ\ ۷lVNΝ=l]xN>%}nR?pTK?lmkBSx]N 0jիM_>*d7Q Ž2-f0PB# Wh CZǺ5 ]Jp-e>:ي؋كY@\H>)J/,J[٧]:חs*2L7Nta2 $;NVl[1*mkBTx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw&mkBT`xӡ 1$Q$F7ݝG+ z7pn~6` W8BkmkBTPx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$j? mkBTx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 /5 fmkBTxڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳrC~l^zLPm[k+3v]B>!0nD=.PP zfTmV{{[#_1ېq~_,k5b7pY÷>̶{'ڮyqHAs4i` U̸yHa2@xi:apV0 ܉&XhS/ȔzvW T=)VG Qmpl.r|cƼu}: FUZR/ QH7Ԯ(Ai-k  =$KXFDښĥ6 #*<+bDpyWpp$>@5|f2SfٸM9ɢ~BcCԞ0SJ g#b2a\;N hVԡ3`7+{a02cVl)a~KOϊfI("o <+&UeA~3Y>*[wC(5)<_:{e] Y ۵ۍy$K(J*k]Pr4&yҰ2vҟP7mF0x`%q s*_->bs*3ku@̿8}eHx| Z9G y9a 8Bas*K$8ĉEN5@P/hp9iPaWfdQ#4^π4!#Rl6e09P#Y,j2 "Y5ӕ voP)s+K62Uw&\ =B%7:;>66M lbc1lHzcC'(@vS 'aj}(:'_& WBLcG)j+ɦK_OhvǮfTy8?a#L''<<~!- 1c1iK*@o\2ܯӍ@LvῙD,&zA5y#ۭx,9H"QP25嶧+"̸lp!dlb0$jlV3!HVM68lJW2foXw`x Wmȍf%frܦ|Y Nrv`pH!c%ͳ8m8]Q+ R$\Cj= dJSaX>n{= K'#I؍))ȶjyl̂d( 'jX$3;Q#3d1j|Kes<^ebqX2$=c^ӷZeD(e]pF13e~rS:%jG-.˜ub۬+^7:`=K1m9Jm)h :2 ^1qCsߔO`ؘjR{v}Kc]ZNH77ư-7Q~F%]aA%$04hK9UŠ(9W LAZgˇTWj*.!2 ?J9^NM "jzմ[DTVϸbdg<JE+M/,L1}f> CK4 ;18M Ʀxe&̷uAC-z N 4™lVNj⵵KbD}}_AlD WbX4V8d֘V㍍65FM*ܝM*Ӆuǚ]ZDsfV4U|+xߢFnLucfrjnyƆأ\>.F h[a rVKC7tB$k5tI n)Fi6&?3}͋4]Ӆ$uv[C֝&8XB f v?i57:\<[/JEŚכr|VȧCb:CjghS1WB>fs4r{@OxYWɿ/[y\V H_-ZlY\p#7o).5Wd1o&y߾f{06sgMti_nA ݢGAl WƒڶuV'2mg\l#[ǂ[Mʬ%n{[I툵zEvm/%6J9 ]iDn[emj>R.s6.lwy$5_s£baNpٌ*瓞E hG#)<%}xU~ӟ&}SD穙)ҿNͺUO|&f?M-5m?pK^˲wk86~^>__lod=σXߓϑk?WfVb[Dkbr}A&,Pyp, 7(!;仗so *;;(r[VnOsw]z$?aUd%d۱Y`想<-~uœ5y7ҞLAe*2yUUBU%TUBU%* a|_6n]1*V7fTcb)l-z#'U#7{7ZIlg|e U.Swi6]'} ܍Nz\@`Na~.m.̘#R 3=>'*(іɻܿ_idygA.^ypZX-}h=ۏar?DצE#< V)ƏWhVk%I}e][7;\OaU^whRU4%ƺOz}x<5ye;XmTzgw?*a(钾64 78ˆ]SWYo<,^Xb¾G9:ect!|nXjNƸ`Mb\1WrS>I1>l1K`": ?`k͌Oakl(>q}ـlCW?RudR.2*J'hS`hϠ5NC?IiL#xz/ۤ^}b0ȋo/ IwЂvܢYe:Lj#ۊdw'Kkqʼ; lk;tӥ6Gv_f`KmMAgX6k^{Ԧ#v2`c!DO(c_ς@&^=JmwY]| ]C6k쉏`ʜ TzfxX6tǷ#w;~>59iut'oxxFÝ>w'!-2;f݆#m lЦ68p9 _-U:! >n~u1lwWMt;n:lwԛYCo4hN^m6w;Lؕ9 %Z,km\1F6`U6`ٽ78Az 8[o_G6/[8n 1``쓬;}]+l@{.-a22bRa҈JŭMzz=z-vlg6XN'ٝ1x-mT-2R4t+::+lu>{C&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw`mkBT)HxM @ P9:gi,T([<!igxn.a pJfٖ{wnan 1ח~]ofA#ՃhmkBTx흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$jo mkBTfx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 ԺyfmkBTWxڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳ P(X r$fCIyIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/motorway_shield1.png000066400000000000000000000002601177067165300307010ustar00rootroot00000000000000PNG  IHDR;mGwIDAT8cl}`%C` C+ Qg~?XdH5dѶ?DFl`ԐQCF!, O^}b5R5U fȪ={YL3#fqzIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/motorway_shield2.png000066400000000000000000000004001177067165300306760ustar00rootroot00000000000000PNG  IHDRxl0sBIT|d pHYsiZBtEXtSoftwarewww.inkscape.org<}IDAT8cl}`C8mJpVOi_ #?K_,vgi(60jZ@`a```x RJ,XϿgo> P(X r$fCIyIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/motorway_shield3.png000066400000000000000000000003731177067165300307100ustar00rootroot00000000000000PNG  IHDR%wIsBIT|d pHYsiZBtEXtSoftwarewww.inkscape.org<xIDATHcl}j6Oǯ? %, ,beyßD/ QG-|QiXҹGzY?^= %?~[=\#IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/motorway_shield4.png000066400000000000000000000003571177067165300307130ustar00rootroot00000000000000PNG  IHDR&B޻bKGD pHYsiZBIDATH Q 6 4"P(, h_h;^TSPf֤/j"x2Ht>#-RlZZaP=۽09asX!i?Yi lv R|E b|E, IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/motorway_shield5.png000066400000000000000000000003151177067165300307060ustar00rootroot00000000000000PNG  IHDR-I%LIDATHcl}`%CXXY> p?h?|_ C@;X>00 Cu4FM/0hz!h'>1p@;xѫ~gv`G#fSIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/motorway_shield6.png000066400000000000000000000003171177067165300307110ustar00rootroot00000000000000PNG  IHDR4nIDATHcl}`%CXXY> p?hP^*Ͽ01>8/}v%`Ѷ?46``CzhQ v0<']hP^*Ъ={Y`D #f㓗}IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield1.png000066400000000000000000000002571177067165300305110ustar00rootroot00000000000000PNG  IHDR;mGvIDAT8c|[!|!73RuSa, B Z"P LjF 5dkj~̐U{Y"!wΨIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield2.png000066400000000000000000000002651177067165300305110ustar00rootroot00000000000000PNG  IHDRxl0|IDAT8c|[!6` C'3!ng4ןRca`````hhբB DMCQ F-`" û?jQw_J,X~P(X/!w]IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield3.png000066400000000000000000000002651177067165300305120ustar00rootroot00000000000000PNG  IHDR%wI|IDATHͱ @DJFp‚V)h & hG˫޷\~Hz{:0LEg9ymI-kψ/4 S}}NjTW!wYIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield4.png000066400000000000000000000003051177067165300305060ustar00rootroot00000000000000PNG  IHDR&B޻IDATH!@@_Hd%G@{ "j8 { N@҄lM5Ĩ'8n@`^EͲh}zjk߮Q&eڐLLLla z|t0btN[!w$NIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield5.png000066400000000000000000000003051177067165300305070ustar00rootroot00000000000000PNG  IHDR-I%LIDATHα 0@2#04 bBiH" Q)xOw1n,]7)8NA;bKSB;򏜖RrZJNKi)LC;oqruO!w@ IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield6.png000066400000000000000000000003071177067165300305120ustar00rootroot00000000000000PNG  IHDR4nIDATHϱ 0 XDr[PE1BIE~ 8EctM e'ga $VtvyH<].i!=~}IǤPqruP!w+(QIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield7.png000066400000000000000000000003071177067165300305130ustar00rootroot00000000000000PNG  IHDR;cIDATHϱ 0 X2#0 i "'E f0_MpW΋k ܔr/!wFb0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/primary_shield8.png000066400000000000000000000003171177067165300305150ustar00rootroot00000000000000PNG  IHDRBiNzIDATXб 0D X2#0 i "'E n&xzton󲮱hnG( tmXY =_u4L󼄶M!wpKIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield1.png000066400000000000000000000002501177067165300310060ustar00rootroot00000000000000PNG  IHDR;mGoIDAT8c?%C` C+g$kSa,  Z$^w&5b2 d?~V\#YR0CV?2 uSjIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield2.png000066400000000000000000000002561177067165300310150ustar00rootroot00000000000000PNG  IHDRxl0uIDAT8c?%Cm*0&V "ϨjR~ca``````Phע|g`XZ0jR=UM~S f1j4f뛟R0W?Yb:IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield4.png000066400000000000000000000002771177067165300310220ustar00rootroot00000000000000PNG  IHDR&B޻IDATH!@@F 6l]-j!`0B[m/;W\~G[@%rkW+Re;ɵ[LLLnai BTPA%tR&[IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield5.png000066400000000000000000000003021177067165300310100ustar00rootroot00000000000000PNG  IHDR-I%LIDATHֱ P@ `iA5luf/6jCA'?`O( ɻ&cs~CQmM60 .U/t~ڎ-Z*CKeh -%zwTkC O'eM;ۏIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield6.png000066400000000000000000000003041177067165300310130ustar00rootroot00000000000000PNG  IHDR4nIDATHֽ@E!&mj6a&jB@; ?%,3 n2'8.=%'&Jy\\'w|zR{ ,H; ΂  lA~('ϩIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield7.png000066400000000000000000000003031177067165300310130ustar00rootroot00000000000000PNG  IHDR;cIDATHױ@E $mj6a&`B@&; 5O/[p e6q5Ɍ NtC.,V+bX,Vݏ@?C<3X“R_Av'IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/secondary_shield8.png000066400000000000000000000003121177067165300310140ustar00rootroot00000000000000PNG  IHDRBiNzIDATXױ ` kװ Ep kB n{&ex.m^iSn !xRG!!!!!!!!!!!zvП[b4}KzĻOTfgIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield1.png000066400000000000000000000002601177067165300306630ustar00rootroot00000000000000PNG  IHDR;mGwIDAT8c9sJ0*06H_0000(q3Djj-?|T!@CXcݒkj~̐U {Ym#-IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield2.png000066400000000000000000000002661177067165300306720ustar00rootroot00000000000000PNG  IHDRxl0}IDAT8c9sJ0ڀU, al,L$8Q~H/AQ'Rܲgi(60jZ@`a```+ÏuKQ~H,XϿo P(X2#iJwIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield3.png000066400000000000000000000002701177067165300306660ustar00rootroot00000000000000PNG  IHDR%wIIDATHc9sJ0U, al,L$8~H/AQ'R^ܲge!60j壖Z>j9M W_~[r^>C f_=|M^C*dA#Z UIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield4.png000066400000000000000000000003141177067165300306660ustar00rootroot00000000000000PNG  IHDR&B޻IDATH1 @@oXDI%Kx x Jl"QB"Tb ^'!?uY*YxfvwŜvFOt^dڐLLLhaVi6ۮ'W6##uIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield5.png000066400000000000000000000003141177067165300306670ustar00rootroot00000000000000PNG  IHDR-I%LIDATH1 0Dp$KxG.ĥqJ) G}'Fι=`o;6EZz҄X]o b6e,S).\'tEӹh:M\6x؞3)M|Ӿz{{Kӯ#\IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield6.png000066400000000000000000000003161177067165300306720ustar00rootroot00000000000000PNG  IHDR4nIDATH1 0@g "t%se N^KN҂8D SཉsXNM嬖IфX]o j1gݭR\·p!CC!vyH< !WM|MC?#FaIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield7.png000066400000000000000000000003161177067165300306730ustar00rootroot00000000000000PNG  IHDR;cIDATH1 0@g "t%se N^KN҂8%Ro;5EX:wM*MU?s6:wT*!7E_YtV*JgYjܟ-I >^])5)#'rIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/tertiary_shield8.png000066400000000000000000000003261177067165300306750ustar00rootroot00000000000000PNG  IHDRBiNzIDATX1 @D1,"ؤLg%G^^BbAs_p<$pߢ৮HrV[XhRaV96:|H:Whiiiiiiiiii9?[jcI#b?J&K[b#p,KIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield1.png000066400000000000000000000002571177067165300301710ustar00rootroot00000000000000PNG  IHDR;mGvIDAT8c?Y!|!(3Ru~Ca, 2\ "Z{_HՈ 2j4o ~t^#U?`سgt*x"iIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield2.png000066400000000000000000000002651177067165300301710ustar00rootroot00000000000000PNG  IHDRxl0|IDAT8c?Y!6` C++QQg4Rca```b)բ 9?ܿbZ0jD'1y~C f߿={]@*=5"i[HDIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield3.png000066400000000000000000000002701177067165300301660ustar00rootroot00000000000000PNG  IHDR%wIIDATHc?Y!` C++QQgRca```b)բ 9?ܿ^bZ>j壖0000ϳ,havZ(sq7 mȿ &` &` &m0z~8 M] )>~l-|"iIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield5.png000066400000000000000000000003121177067165300301650ustar00rootroot00000000000000PNG  IHDR-I%LIDATH!0oK3 \ӄ&\ RS34 gI ^1]48&֛%ݪJb~],#Tr:N%STfV]31i¤}§_C"iy<IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield6.png000066400000000000000000000003151177067165300301710ustar00rootroot00000000000000PNG  IHDR4nIDATH!0@7% j.jwi pHz.T ~'x,Q.blʦoCt~:*ƹ:Uꐹ!tyH<$]nqC p[C&I[7N"iTYIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield7.png000066400000000000000000000003141177067165300301710ustar00rootroot00000000000000PNG  IHDR;cIDATH!0@7% @;zpބ A@jjf&Cp'?N^5`u5mkr !v)Msv#˱ُ듙t/YʬVeV2Uf w\B|g]Jn}"i=IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/shield/trunk_shield8.png000066400000000000000000000003241177067165300301730ustar00rootroot00000000000000PNG  IHDRBiNzIDATXС @WrM`]M6a$ș35%''&Uy8ou]mD )宔;Xۍuco'f!B#H#H#H#H#H#H#H#H#H#H#!.1RJ|qQ"isQIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/station_small.png000066400000000000000000000003471177067165300270160ustar00rootroot00000000000000PNG  IHDRo&bKGD pHYsRR$JtIME &;:tIDATi' 1> :x? j"CD : :"xb02>.:|IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/track/000077500000000000000000000000001177067165300245375ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/track/arrow.png000066400000000000000000000005001177067165300263720ustar00rootroot00000000000000PNG  IHDRJ^@isBIT|d pHYs,K,K=tEXtSoftwarewww.inkscape.org<IDATHc?( iX^54s El\r1220Rdk<(y`5 Z(r ,(fb` K_A!_k+3v|4^ `@R"'s44w0 43[IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/track/arrow_back.png000066400000000000000000000005411177067165300273570ustar00rootroot00000000000000PNG  IHDRJ^@isBIT|d pHYs,K,K=tEXtSoftwarewww.inkscape.org<IDATH픱A ̬ 2[>`ee#>#xX5灝̎ŪpձA $⽧3v;t^bLH+ue 3f[s[Xѐ,g&4F47 ʃ4P7W'w/&F%  @NS]2mԍW[?F~W]5M7/<4(?.G\YY<:IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/track/mini_round.png000066400000000000000000000643441177067165300274230ustar00rootroot00000000000000PNG  IHDR sBIT|d pHYs  ~ tEXtSoftwareMacromedia Fireworks MX*$tEXtCreation Time10/19/07 {goprVWxY 0ߡc2Kԍ`F yc5cJmjZzM&M_0+>x/>L :4HmkBF)3,mkTSx][sƒ$%d+a_TO(bJbJ ײd%^v nUJ 1޴nfws:ә>2&CgԘw7:?am֜qny]p mާ^{3kFj(CeWzD9r6߃Uh9M Z_pm ˍ}yÛΌ3owq=l`$CmmZ]:zC}V>}:ӢO6כΚg}{c7cr^HпU֔ 8z 3+h?$-! BC\% όm ܺ6ܓ܃jrܚ\n:;a@ko{]m!# X )]+L㐂i4* a z<0i <42p+ ƣMzjwL9g_)u*A H=)VTDW A_8. |kƼsz F jYYR/!VJԮ(Aes7@K\\,aq1imK:f1h"8uT 9ge<,ΐ1qi$1f@8#*;QILj!^,J=tB\<Ɗ"%~ x-!_Y^VciiZ@pkҟR7m©J8y`q5}$_ƨM>cpoNq^\|@4h! ,!'pX(l桂`xADR`3AX vv= ߺݒ$67 %,Xaz.O& bI*@^fa΀`dXxt_Z$JqJ~L)8,Z-eyw\ ; 9Jatw|̙: &ÆR6m16 `= ыht )Ёp5R>qBS,][yƫa3qfoEt>cc&"{|o\2i֤ȜX':lFd#C)O)_J DdBj.4XUt7f TF &#_u[!+hq= JI t$n+K!jG$YE~ y4)g9fPЋ '!ė>m!h,7XA'!H-T@.0=24A9Qì2D00tH2qQ,>AqÝ C . p-ʹc1,!b'Ėڈ*M ?y(!w?GI8$!Ṋte9lQ)hHxA\w'R(P衃aMLBɅ2"Z} `g'9 vC(zu+cy`#-([Woo5(8VȓIƤ0qJF,n Stǯ.*>@i*8S`|J >Ri:*/eUymQ]\XxHΙ)H?%-E8{H6ͬH^6H,Fwoq&D{查QE%,ȘSz_5$vZO;.ZQPӐTc}DWH݁3["T 4H!KǢ3 gOY8#Vs8,nf։ _"%%D>O|"S[8&Y9g "m:uYMV/i|_K0Xm;k(|d :UH#H>7Y绰7:0cMZölSoߏV u%}aJ%/$0hU F*j"@Ôj*\M[Deh+FvaՔجXFO[*|* /C?VSШVP=zgZI$¢qTSָVV2M"Wt0x55Mj5UaGaʾ|Ìj*#zD*m)= "W۶'3Ow1ߦRdmvY b}\ZpzB&C:u+0K \n,_ Ǡ A bAcMLF˂%[5-A2ŸpA#jZQ.md\#U Y3^1Ef`Fl&8:p쌬d#}RA&x8/r9CXv٢IllӊF*Gu%7rmlh4#&oZ)Fn&#UK3Ŏ5qD|QYFʍ" Жc miH:|!i,"64$ٍS2Wm,]d~A(j, W hBӅ%u[M&xX7B H`Sǟ4ZCcxm/RC HA@pFG=e >% łcѢ.2ne ы3yꔗP,=ֱ/jq-VTV3-JS[,ZXKk[L_GU,`.[l{X9!vi)cZ:-x5 '(w3kon7o<i|y-McgGkA [z^ WUEjW=Q+*IczJ~Wc?'xA_AsӃ{xF=q?vpG/I ٕ moEE^VxX8řh=9i]yb:2^/43/wE]^uVNSoepfk2R&~}Ȯ2Sj+51}ٿP֠?"{ؙ"[N9ƊP,-){glL9/wYuWF GW;Dߎ$6D7<#HwB{\a_r 4tAH^±5~g1]q.Qt v^dzPkf蚡WZKqYst5G]s=qtPp酆rUs5;\=8\YR횡kf蚡 A!i r\kή9욳9qv)f蚡kfr -az]5;?Rvjv9b۰sf蚡k2t蚣k9rtf皝kv1sf蚡k2t욳kή9z]5C ]3r g!ox Dx8Kdl.`cߧ Ꚋ ?cϹZMț~5~.(*BLU _=dx i-a+em/x"½f/um)mk7lm/1} korQM:}|!h(=kvn&*f#>-څ;LkggZZf*L~9[Pݧ;~ByoŵLljU\3k%;*͋oٶ5򷋚k^*;yX|è2<,^xX,*k$۷qV^M|F&rsqLɐ3u p-z?jx Ae+xPY6vS'z'?[}adp~u먟le֒01_Hzsں^Il.O9}i^ͅ[emy\m\A;e9aj>GU(ecwz;]VqؿVPIj/Kҧ)M컈OR3R?u! ^)K yw|%Eݞ%X8g#2T؟N1a:^HȾK)wZM !#,y.Ep֍ @LKp0y1WRwȾC,V7+-1Fw7i60Lpw9$9\zG+=sE/ jYVbԊl4sXEgT3Uhn2@SCUhMA,Zr:_#ȳ7dwG2yN ۅ2%߽o^fv?G}6nY(Q~qN{]VvH<_J>wcGgEOZ)}~œu"WD9\qFBKډ,1jyNHUFƊ-̋>WʞLaezt uUJU*U;&!5*k1;`k9qvA'/G+$9_Ȟ*W4]%}VٍJr\@>\o |!3|b̼S^I Wpy񭂲hm'efvSz.nrq5ōG|cw񳃨}Iy!{$Z'MDOKZGxRL-aфZ&jZuy?Oz xݡIUƂ+1+9c-kj̗?#?yߓVbBhitEmq\b;a$573e_\|Ua_a\1B[\= ;41n5X742(73n~v(KriӱS}l:yE5@F <ӀlBWPudRN2*Jl`5iO6eEϢ*67fw:y'ܺ1]f/pt{3M]軿ۆOMmasG=ͷ{7^:S]7.|@ώ[? ᔍ^mMotvq `>߽~t{ԝO]7mzmhR~* ʟrC9ޣݽ!7 735sl*l`; ʜ6`*.C~F='`|`s'obAMgj"歽=TUk-oNH-o6-J6}vZېAi[mvɊ4_aL_x0aCAw:|av\벶2GF-Gg?}<˙5Np =gurt9o۵ml>A{; Kݣ)$Z59L,lkHS:n%깞mR5ݚ#S7զfX}N ˰uZoQ+Iv,:F4;h横t?vHv}Wn'NB4㝄8I*A^KLZ7Uea;uKN‘3pVFYXNlG [Dvf:em6ma'ISuSf,A"BK93K%4V7SY+j0rFrVPS,r/T%8z:֋dxބUC ϮCCc0E#сGum?)4=+mkBSx]N0JU BV `o6IfL8VjĈZP9uo8ԢXI*tc1Z b8$)¦s <=ٍٜEdTC* IU!PaNeWS~>sjtą],X!.cw^U[jqN]*mkBTҨx}+$+nʔiSL")HdJ,DbH$T3;;W֊z]@&-Y>\yنytc u/$р_ ݈vvvͅUJ@4ZaE6HxV:F6Q>KSy.&{<}Ad:KN?2 n37,OMEN#HF`?- j!j {r+%Aqh $S@%%|9`ƅ}6.?jU 7KBC_{-׮8`Se[ lhF-*,?nt WTe\ÚMOsf^|ŝ}Em ;GFn^Kb[dAݜҥy_g:=h5=#*|3z¡F#$̣[^Y EO)ـ~Iȑ8  Ľ&C}24 L >bXXFkhFWI. -h-yU`F m<}hRvTf}|dT@OP\I' 0%U-b2֓yxd^ƣcAēwP)Xͣ KZQX!+}~CX@- >9Fwx+$@>,#Xٵ1vQ5%tᑄJ#5̖3S=R e[OjRgfM߉ZpE9%辴tc⏥R1. p8Ywh;w@^tug.XHT^?2!+tU#_:{*!nygn:@ Zgpwp٧P栢=ԇ|Utl7~䙔@0 +h%\'̊!Lu`tp/߹÷0!:lH- gA ^Z1KO_<*•G}|;n'e}*#(4hB9Th玡NŶ@%fĠpo9,vrdԬ,qcD-7= 7V >v`f1B+?`ؕ?ջ+yKV"o6TpŚUk}"bɍ7!H*3(Tu|jGyŪEe18-BYYdf[L>='4"}\x乢2EOcvxV|MڡBs%ȧԜ?U$g{075պ[=h`Iu7ޡ1t(f\%}R@uPA(@0Mz>n /:{7l6u]~m'3u/OOX-?Jk3pMNVnuS>q$t>NSgِ,yfzkf6{4!ڵ Y̳X?%ţG|j}~H)'FCy6)$.[xgߍJ<MC+QgPX 7~PT֜~5=4WaH]0/qJ!Ѧ?q?+kpB7ޠ">G}W=\&fH0e kƲ]N0Gg45*O xFD ~Pv_u9%|?vǾal*.p,S?5jPt~ۢ4$FMm3\9\fVdٿIuKk+s]h?:iĺ-^pYljkeA ֣;$3~:LH Ip#W,%ebbad{O`eE}9!mB ,ƈyAUkb]Nø ˌD_ˁj5j%u^׸ `O g9cE @=BHMlk@$ ءۖ#iBOOA\zXCR%ˆ6 _loNVL?7\iB#~_l5zq#wRf|{jSKlcԁt*=LfLQJ_Ke[LE(EU0"R4hbR |;i@fT,}X?GBP7A#Hk2dwըU¢ {3eKxŨ!tϼѝ;ZهMK+2S:¾m:ʋT,شt|H>(;:HfT+_oG=3fLál,0K@I rHmD-Kɵ""7@8bRz=Dmc CF_ŀT-DM2_=Wl@F䴦"%b||+h Un+z`Dv~_ClO$>Y Bcyg |rp]o:8khۘM埁/W^ֆE^ls wfY~(cUSM6:-=j0y-AgЀNN2g$>+y| GA]cپ6m n5v{y4y:l<5y7/CBqP!L||R۝I׷Iw|X\Zꑽܳuu}1c%(Hh!!&>{Ny! BC~{ Uz-b i>hTN./hY}_sPp͠ '.D1bԿoK'mCn0H]_ _&kdx3{G!~KdlfPej9dm5Zq[nJ;#:u|CC-y Oo!N獼7;tYW[kcd [@P {q7wΎd'>{*QVؿMAN: Zl]ѓ䯹c[}: pz$1 U(rtH):=)_]2{xlu:0'Y0v~p %Nj #o^'X՜T¯-d'dT{voƧ߇&9ގlOz|lxq!leP>ޓ 4lBޞ}yơ$9Eg/>_Y\j*SCş9Pdo/g_J7wG`fע4>*04yWĉ &oD93mϻL}5Čގv$OEA0h61s_ qhL`Iw^%M2g 0=f_v fM7R;IEJQ04Ys N[4HWR99s_;o@O7 @s21FQyhm`:o_ π7:zAE^,έx!{>!7r#{77;"{&/0WßﳠA[yυmk}ݲC,NZ M9@`CtD"<p& ^K_J}GR}/ +-khO.ЙZ"W 83;&_ EKًH|!GCVyhKj-үP~Z̚lpyN7;aACNh }p*}FZM8oMGeh ŕW&;0ܕ +$Dz sD %0x/{gݷB#cpD˵#e"K/) !Y#̓Dlg4b>EM3T (9&p~-'GɑlY[?E.`ހM Evn4s<{nҟ4z3ƿM(p4x։m |&x%Z@({~N1qy8FPjDo6SXyhr :JgǾfN&b7Ԋ{dK<ڜw#sںN}xU~Mf_ 244yYhtvш̪>Qc8{Y oߛ|u߄6W(-ߺȍ# n֚MPj] Mp# y}XK sSU>q݁(yug5s3q !{;ߓ"4dG _4>7IH4(.#B ؜cz (#}%şnMC- }|[ϸ%6Pe>4RQoZ ]r;^@UofJ_nnaL3RlP?yרfchRr$R΄"rKG,-cJ铞\ੂJq{} y+wܥMYaq$xH{h2؂H!XG-Cz+Ng÷M#Y#dnrjE!ٯ.Th";vv ׏I42'ZJFBѳ$.2n;ӹtw=xt劉f>W:m+zl<Q CsBL@G1RB9zBG/u9߱\!p"Mj} ӆr)nST&t`&YfpKOm5oI~6;6h'!aG^drE% v <R1%/LPskK\wIΌ\ӀxI7Jb(i(H<'ߟ-Ԥ)ycNŚ:V J>̛jATg /d^YOCrG:ic;CʀW4' hJ7_sQL3!Mۯ6Ky{⼲q 7x˼`[(sk349bx7|q T zըH?-m䙄3ΐ{K@lg)ݺ@ RtiMd\zK.(\rZȞqp~M`d6 /wOd`.HyEϼ zd&<ʉdd9}hR^օ=W"3D_=,!l,ŏq?E?BІ^^c] J*סIq+\bjō 0}6?t6Gл̂:?s%V/Df= ~4_ M=? uA? L`R.[ B:RZ^A)D(ϼRSJu!lꟆ&/Λ cM}[cXaDe(_Lz"oHqcTxwt]8a S!BɄL}XJ" Y[8—>;r xDv؅7Q/b .=_U$?&Y ]X>e F€"UE,hi#z@7Hzc/x27m0"f\0Ѓ>#au Mb5s$Tvb18#{c4+Ώѭ _'2Eeoߟe-2$i%  MrNMAN.9$Dayj~\l;]?B~^Ng~5/Bmu%hk^BiJʵ+w @F!M*yg_8,|:ֆmWàc 3FGu~2'uF=!"ct8/ZԸruڐGtXCg5ZbKZbb[^V ٤)E=+!KΔ\C50!xV~&,~"1>ύ^/kdCmBb4 rQ"x D!W'ܻ}QΏy"Bx|31H.Ͷ2!qb̬?M!?q9><-lW]M}m5NgO4Z{m݅o #CÇM] 2h2_AG@nn*I J<&ߟ Jk`:1Ϩ#{D+B2y\i1^_E1lAbBAnE FX0>>H1'H$K[~ l5n}*jV9/@>RL.$?m>EN$D'~.%8yFc`}{C;+@03Ft̋g; $O)O:f |"""yAБlDk#/{φ7$Ő; Žz ,^rp"~}5C|pKAyɼ"7zq%{SJ{.̥܅ؔNICC!nVzСÒ+e1f(G -/3h)I=қUbPxF?M;YͶTj^zWyr>&5zRnqO÷ My}vP/vFZ4Z#GqES:/]`<{f#y3lfT9FG Oy6uB%|@uf~3˙@}XSwx$"Q}S!T AHP!.Eev_\κ7+miy4qv0‰jdž?+o^+-Y>VH?uhR?wX[ЦKZ$'͡WF E c[`P[Џ q\_]R +zZQ>3jQÉ(cF̬BYB-yFvrQYc? PCt8|];_ svXV +P٭o)1[H>fo]HL@c9w ttW#0*-ZDx}n;,^y{Rn] *j^D;b0 7 63&7*}QxoɶR^dte3a(ԍʛ?ߚW♰\#zz>% T,ȦRkYp\V$PUઐuAXcg{ .uU69WDԶ,|=?_xb}N@;|P%})A?zR!@@P?t@Jy1P{mS̔eYZ^w^1*| ֊9L'd !P'hKh70b:lf'bYykxDm1mx*|u'8B@(čbJJc~0y7ŏz #9{khA׿Y&Y7NU6S@cFLRz}n@*&d^O?bF4k@~O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?O~'?YMw#lmkBT@x 0 @N2mQRH(%ƭ"1{z[57sk ߛ7u3JmkBT x흍) q ĉ8D^>׻gI@XjjgiЃ`0 `0 ?ϟ|:seQ3|ӧO|:2|.};7eGFO6_Qv]T]^ˮg{>pjzkuo{yye?{-x/ D:3D&򈼹e^Hyi#/OGzϪ߯_~ :sMe#M3Y#=2 QЙ[\s=E8}E>GȩT ڲTg-}VfoSVwzV}./>~!?U1<#}=F[ ~QڋBN..+푹^edLo+[\-k dW(}6q$#?z6Bөi?L7!3O_Q}Пuo[=tkȋM!'}/Ƈdr2_Cﲨ: `0 :8o=+8-4}۞cĥXdq{bUq©ήm!ƶg*ΪU\z[GA=^+ru{LV U?)V>ғ)x|Yҁgi\yi^cUo*= !TY?rfgWsʽVn*VX#=Fϫ+[F~yH\L~[O҇h5ݵTow|Sfӟ+);F;:x )/OS yUo2e)Ve3'wgGg=J^`0  ľu kU,Ksؑ5nY,bXw{ w&3QהNQev ]ƷgcH˞i{A3I8hwduwUIWq8I>+@pQşGcZ\ƪUߝ]/:3d;ɫ:gB9R|GW~w2;fzt|+i5nΟgZY|<1NyŬ|E7k?z/k><=Α}N΅>uWydʬdz `0 *\?W8GY:Dgcg< 2+'W6qn؟{ru"wU쏘~c#T?+y{Q,,^qF/Xv8.֩g3}ȸOP ~n%hUG4(_sn|W}Tg&x^c,Fѭ+ <#+}/Uw8BRh_|33!mr\7U9m({ѝpvew[xG]߱?g;,nҽow8]וb?OV=Z_#ve?vN_WrYLo;1g9pV^G~>[_vNOS3 `0Q[ veO\k^8֔v<Zbz\Opbn$~}oz3ј mK vU]^iNWA#x딫jt q :E= z%օq)CcYEqyRG-+u (K\hP'*^ء^q=m=y|Kvūe\rȊ4={W1;=ݷxp;o@>ȘT\Ԏ+C=*ɫ|GJOCW]x1.ﵠ9_Eб Vq)v(ʑ}[GwǺ{-oSdו_˞׃2;iT&w*w:g׭SOsj%Z[~_˯d֮+w]7 `0]kIu+eL]ւoA^;=GR?v쯱;<y o$N1紈=:ߥPVu< <&3KyC/4r)i=*/|Ύ^]QNН1qGw>ù{ ?Kv:A}E:_n+{u=rq͓̳]>>d}+|L01`0 leg:׺񶊝`W,3O?]\9P~[kOWiGc~)-<w.3q}'vuw$Vnv(r52S;Wk_Kϔ8B/hEՠ'9w?K;x:x<|@cϽVyc@ۖSw8Bq]=2lBe6V}eR( VeZT4ade2ޒ+nYBTqSߔ<[&=f[|szP)G}{Zׅ3n7jpWwftEw[ǽ;`l? `0 `0 `{~i`oLy>uoi\qK|}7Svu9G쯿c¾#>,jow{ՆݲL=mW2u_8دjo?kD߱mw>#}E:OۡO;y`$j- mkBTbpx흍8 FSHI!)$FRHnw HYx3ꇤsaaaaxIǏ'U{o_ھgW9 o'GW {>~Jlo߾)*/N\ϱov[iZ_ձaJΝ/:6O- 92b?Tlk%?_21B sY5>:>c=1Ow y^- ڶ,XzusM#גU]>H_yYv!ۉ_mi Rus]Xm_g)YY)m]y,m z1aaaxEߓGקo/Y\k6xjgH|yu.\aæM&wk#ϐ$?]Mo\Ⱦ,/ڥQ@~6s?)}, l gX #vQg Bٙ^uのuhm?}{].~}v_J;xogJY]޳@.)oqC?}>@Xߘ'-(W? źvƔOʙRv[K?[A}?-wmՑ}g\=c}M ggg DŽ-B^k_g?F? v0||؎=ǧHPgs/hؑI t~{n^}ZyD5XWvO)"c0vY Z|~_%/,p\ɹyΰZ/;/xs_9?Pܯ5ݻ\[y|č8gʱL{? 0 0 _k3>z_\S |<)b|7aaaxn.ta?l^Cvkؽ#~e)3<3^kdlc&jK+o"e<.ʞ`^(3zu l+6v<ï k7]/lc[`On}򚄫 G뎱zt^v2)?;Wmr5ocIz?Ozx{&!ez."ѯ 1Gg{+ҏlw<=}GݽFƨ^)zIpG K֜{{e G12ۭqiumf>.}~a? 0 0 [u+7Svq֭y΅ ?ނ}XwŶv?ߩDZۓ-q/?߳=<~#>Fk"qzrQo 9r,nY[;o:)@-`ק-7({߯S@µK9֠ɸ>:n3 _[_*mtcmC>qSL=<6;ǫsaaa{xˌ\ފpx?0׋#5zяc]x^l򼠕(f:~٣^lin59W~\;?vn6erUbS~v^U O7O(|;+SG4|?f*?rW~2oNٟS9~daևmH6mX[J~s.ym4ٶO|Bd/b5ɿyU? 0 0 0 0 0 0 0.P~*1@G\⟿KrKXs2(ߥ纎J8'>X@▼QQbqwx b)_K|v 1M6kee-2Ǜ59?K^E~9ϱQﱮYF8N?~;:=J<-tĒyNAgC \NXKs)'^Kg\~2}6}Գ)n]Or^j~"{p29w6/.z-v:+M{WJYZ굢`% Ҥl9ힶկ#OUz+U?;sd~vND7*.Y+v:ye;8}~|+ÑޅN9}{Bƞ#txխsXɿkSV/uJ=o G<ջL'L:D]6jfgLz/+ؽ[{rCMYq~[{yy czA;w9zszWHVax3 6fmkBT-xڍm0aaAXAtNuө~"B~v(I$Ic i#Gl6p8޾s[ouv?Ru߯+fԍ^|}m43ϭu!Z9RUY׽B,z"|~>/|RתY̞EGߔ뙷L?:fV\꺯Pv#R>cNb=^Fz=yNI}.3?3̥*Ǫ7٧ڞƵ2~zWİg#g&2yK;wʞ2vm"Ggʼd~g<[şXlk=^k͞Gy\ׇ3M^&}V3=3ڣ<_(녾v9> G@Sǿ99Gy*"QYu*lz;{-/9v=Q_s>c),k:gQ%ԝ,SFwA2vWcWqlׯ[},g7F}.2˘ڳn|>1Ƙ?DQqPJ!" yEQt.6@eLӎ<v;6a)MS1^R uu\U՗wdZ,k$!IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/track/rail.png000066400000000000000000000003311177067165300261710ustar00rootroot00000000000000PNG  IHDRZ/.sBIT|d pHYsetEXtSoftwarewww.inkscape.org<VIDAT "d\Aj01L\&#Pr6prw'N)p031Zyk`J)&"Ŝ ̼(zϪPBh5IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/rendering/track/station_small.png000066400000000000000000000003471177067165300301220ustar00rootroot00000000000000PNG  IHDRo&bKGD pHYsRR$JtIME &;:tIDATi' 1> :x? j"CD : :"xb02>.:|IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping.png000066400000000000000000000016001177067165300240100ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs   IDAT8˥KoU;s3~MLWEEbU / RT]$@"@TFQ5NԦN={Y [lΧF.?O82Q±ax'n_58˹Nft7 4e'&-;{:zc*skg^}{m}̗׺s6@Fvճn|*~OЬUQz '5ͽFoK=7Ni06'ˀ$av&XVO?㿯J6R^+LV:BR 6hdZ}eY?/|6u7;9^}3>ZLNP |:뺮LN}- NlWx^H2R#T RZXV# #fnv&34U砼-Cv KZdF3Hi86XyآkS_9) C 3B0;}7 DڂVv7s&BQBkQƎ(zZUӧ_BJhݞ:yrl65B@a-Qۣ߭FG3sO{xmV}[%ǎ̅JK׮#M/?|@"AfdU4)CeNYީ*l$I8}I%VWs$xԶR=(qz]"bYCBR|!y0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/000077500000000000000000000000001177067165300233055ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/beverages.png000066400000000000000000000017741177067165300257670ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsThtIME  ?3tEXtCommentCreated with The GIMP License: PublicDomaing=IDAT8UIhe?L:4ISjlJk(JV<`KrAKE*"x0 B4EZD+u cCjVC6d,CZsx~<vU~ͭo?i>vEJ)ӎб ;]?/6nL @8Uv DDnn1&t @C,¢WRNFf85WI*fT -5iYeSy="BCΞ\ wDu{ G߿!Z.Zl]}ݙh\-):%{kjEš5f/+35H{I@1>MҌ8ݽ> T\"J&gV׬XሟYVBLQSz<3~*fwoO{o1֢{/8#<;-aCx=ͼ^(Rt MVL!5Tī'Ct'w+R\\4 $4iA!Sc}/9d=K\Z׀XmArz85N[,j7k^PyigLdcclCD$0t9tnPnXPq!S,. y}Ӏr@~AXZ‘/p }abJ"y2)EaI(I*4ft~ZuLLZ}LS])Y\fcG_C_^֒DrCDύM-A(vaߧ@m{IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/chemist.png000066400000000000000000000010531177067165300254460ustar00rootroot00000000000000PNG  IHDRvsRGBbKGD pHYsyy8tIME'CC4tEXtCommentCreated with The GIMP License: PublicDomain 6kIDAT(ύOHq?wY)$I bGDS -Etcxʃtan ^p(el?;XNBs<&hbW,ܥ8yJH]^ߡKR'T2k=g\7fiB-< 0\gVo|<xZ)rklóJ␵ad L tX˫+a^hp8uиRxvU A%<Òt~4M #{j?9x|SHND:ZË5{827GZk"r~փl4w BZDݞ Ux__s?xBIbIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/clothes.png000066400000000000000000000012151177067165300254530ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs++VtIME l3tEXtCommentCreated with The GIMP License: PublicDomaingIDAT8ˍkQƿs8NRcn5:MACjEE A qӿ хqU0>S I;jj"`A ]g)ťcDΕಭP/n"f2wh%y}ysU(m[(]()ݶP ?]) {LJM@V@4;#*J{`xPq8cj7;*.2m$o[ȅBY }>e`blc|{qTNqRDR 29Z=t25a0Vŕ_һiK L\>t=b{Petĭ" 7a"b0C' >6IgYgDDC1/P@LH4-&^p m烇ahvf"$Q@dHdr, b}OͿП&/F$w])"PJ:8p~~^"=`fuTU=R[[[fX.$ڶ}!~"_V4MIq9tugD!@+L4O^st]'mQU? `fD=}9'IDD!8K#cߣmۅ!â(B@498 "/dǸCUUݏygDfk-ڶEiRGed>NNN곺,VEIDDZmjo=MŠS8D{d."4e"91 B^ 2uvvrF2ѢM0gIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/florist.png000066400000000000000000000013411177067165300254740ustar00rootroot00000000000000PNG  IHDR "asRGBbKGD pHYs@@DStIME )9B4tEXtCommentCreated with The GIMP License: PublicDomain 6!IDAT(uOHqƟ{wۜXؚD*+eDSht RAA"[]"إNE")l޽N><<d$C#B+W0z%` =dU-ʃDh e+Mv=C2Q]t-=&!lO&{?6gw$|7Eq$w75m4$AUCz#aUU~#Z93Юov E8a.NZc+ u!yQH(gHY)8f]t`rW}JCd0K0cz3LF5ا|bMu,f3k:(OTS ([-:o̬}{zpiIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/furniture.png000066400000000000000000000015401177067165300260360ustar00rootroot00000000000000PNG  IHDR&N:sRGBbKGD pHYsyy8tIME + |4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(υ[HqƟMMR!0E%!BI*pBXHEAid]bC/ )0 +O1XiL6tnZzy//.+>[\JRE_{6Ka VP}!ѧNV* fER*Ƀ2*Ō֦dX ђ$Yaa E'kB(Tqj{KL+MPD$c_7O漄8_2D1%[P )5hCc* ͍ƨ#F•@((++r.9r{-sݦ.]Ų]'JPG(hzxfK#ged!7>`auP@A%W r.gXNV&1(go?Q; 7!㝒$ eIgCixcaJepQ  nn_Y3Aܨixvh{ZٝtZwxUnG@\2wzeT͗`n Dk}5I!45spUw/wS6g8ȎhE .phc2q-gc#ZHc:@Ϥ[R|} 8P!@XA~]~:;\ik/>TOz(.B5(̾},ۚ %ۏ<؞wIyD1FrwlUƴihB3ӯrh|/Bl5p % ^<*&W+@lp|Q*@'0<"|Zna;IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/groceries/000077500000000000000000000000001177067165300252675ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/groceries/bakery.png000066400000000000000000000007141177067165300272540ustar00rootroot00000000000000PNG  IHDR Ob pHYs  tIME 5tEXtCommentCreated with The GIMPd%nBIDATxڝR=H}q'sKCTK:D "&t ]9-*fv D:kZ|x{҇y73Қv kcD EWip b8 JHf?#h6Hk!!NVɍIRGblqquOQFr@0o i͏zUm&p{AH@%x}SoTd;N 8s䂪7r{VB^ׄsi^5Kp8EXPh6'&v/'ɒey3Sbkj Q#&8oWs^an4O `- Z:8`4l'_i,t"ϐ!{hՑe(̥쁅PYxك5}w7s)PXEG}| cp,fQT NLTfINFHkxIށTBE`DD%1 sj\؆)2i'"bVe{}8'^t{~}ƗE$o_)o9Uħœ U bfF"GdzE2aJKw/To$|+( ґ I/R-Y2y[1 - ]qBjI,"Ƒ9*A(zDZ*r >܃fX l,D2P L1lڎIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/hairdresser.png000066400000000000000000000012131177067165300263230ustar00rootroot00000000000000PNG  IHDR "asRGBbKGDC pHYsaaU+tIME %#3tEXtCommentCreated with The GIMP License: PublicDomaingIDAT(eqq/<dЉ@ Ag4$AFu2XLJa,2H ("~_ l6$hwxLIf"IVUa4M$iXVF~|N[x"IxAedY躎z M 2RNdY~[z^V(JjZ?#.S)1wIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/hifi.png000066400000000000000000000012771177067165300247410ustar00rootroot00000000000000PNG  IHDR&N:sRGBbKGD pHYs&&_(tIME8pP4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϝ=hqƟ˝^/KULc$GH "R] ( '7\ĥ.jhScPCM\/Ig~~:tu.缀b8Asmdx6};b_"3P&SYwC{W g޽"qD;J8x|r'1^/|4LӂmZG.`DQd0h7m6,|+:5=uc'qqLU uju&)Չәv95|)a[-L2-{mh,|X,!~(2;#"lxVp*ZRRL2/yx|˹~Ȳ'=F,cIOّ"p5D.g1\PsA||.@"^AvfL@.zPպ]ڜI-0x 2e[Dp6x܁``xK_Ž 8rܸau{:ADؓ%i,<*/4FDVYjWCC)AŢN`,Z:7 @=FH ".VKK Vs!uͥpFf:Z-CeCMYIVsiX;Nyb#}+#.6(rbA&ss6`R 9gYHIيhh7P(P%`4qh[X$FzXX,/OhrQidblldjisk4&Iٕ&m$&ƪD$T"O2 06YT*2KHǏ\lj"]HqZphKKlZthhnKHU7+NM+F _FuHdW0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/kiosk.png000066400000000000000000000011411177067165300251300ustar00rootroot00000000000000PNG  IHDR ~sRGBbKGD pHYs B(xtIME dg4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕka?۞1W#qJs6$t(n8R5PBPH5`@r`r|<<dxAY I\-g@%? $N MT2z}ԫD+ϭK!1&Ο56m@xk<[`uP(fqRbu^]f ubHZ% C2elM@VTjq_4q"˫L{\WѬr]R*>BI]𳭸9嗯!i}4lrQJ!:vnυ88R8B!fa:Eb~O²G9 C%AFkd2L+ivq\8,$IRl.Z ۶, ۶zA۶t:x~q|ߧR|2RF0L@f_I|;X,>"paFIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/mall.png000066400000000000000000000012471177067165300247440ustar00rootroot00000000000000PNG  IHDR "asRGBbKGD pHYs tIME Q34tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(uKhadդMCGQQVܻō qKEBt!Vp!nDAw-"Ml$fhLf:I ;_:ZI􅼟G{ťK:b%Ǽ4K#~䘕/O-t3|[dbY==#qSZPn^vч|_dڰx6Whc&syR=8v뻳š g܎T!d!IvR&kû*V"lOߦkbZI9~g jy2EzInԣ{1M1epU,IK2u@€Q@0yǸb?9ڀ,'2  ?=@ Xt(HTT BK%( Z:XaA|83E$"ѠyGb " W2>ayxDIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/optician.png000066400000000000000000000007431177067165300256250ustar00rootroot00000000000000PNG  IHDR BsRGBbKGDC pHYs)))52tIME H3tEXtCommentCreated with The GIMP License: PublicDomaing$IDATӅ1Kq ErP^xRw 8J]`CyvT Qa}ƇGSJIӡVB4,0 V. eJBXiz=ͽtʠݾd)moPI&|8LS2 RRolGt&\w "B<ZH$ÐVEt43֨ h,r=r} pHYs  tIME .zIDATxe DU1?l"=I"]? i,80 qY]ץZK~ P odI1mfӯaq`ضy 4kpgC1B+"*ʊq$3^ H,ۢ@n4IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/shoes.png000066400000000000000000000013221177067165300251320ustar00rootroot00000000000000PNG  IHDR ;*2sRGBbKGD pHYsvvN{&tIME 3tEXtCommentCreated with The GIMP License: PublicDomaingIDAT(uOHSqǿmsqSo6XQKG`be%/*ϗ kTYU$TWu~l8pO(J Nیhwޮ^Z!Эq0| Feo3" 1H4Q--%_YAbaO҆A4V/HFIm ]ސe^alsy ">!ptQ z#t@< ]43VJQh4zr'iOs%Zdi0AXEpdG|zJ=5S RQ xfv ChQ(0rxLKxbƬXe6 :(kq3wQ{{|h;JE_Bln~Z-ɿn\&CCS$MJekֆTF>3mIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/sports/000077500000000000000000000000001177067165300246375ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/sports/outdoor.png000066400000000000000000000015441177067165300270440ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME2 uoS4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ukgyϙw>cCӱ&DkK5 SEN n} ڿ. mTmqFČ̼3>O7i<{9^8\ AJC_yb ?lK^TWS}pw^4Ie$=WVNNH!FsKHEu꼥ALc'#&avُ-=?߁𙧌!P:;q.%qeˉ.SF3%zr`xK g>p '|~(5"`qFMBv##c #a贚l ՙĩ,o@ ("l#HYpH,ipgAhP@zD0 Ji#n&N$1v &l4ɃXrfyլ d\=2TxL_{.SUiy2ר>ҭ;핆!:q+9jti3>IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/supermarket.png000066400000000000000000000016001177067165300263520ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs   IDAT8˥KoU;s3~MLWEEbU / RT]$@"@TFQ5NԦN={Y [lΧF.?O82Q±ax'n_58˹Nft7 4e'&-;{:zc*skg^}{m}̗׺s6@Fvճn|*~OЬUQz '5ͽFoK=7Ni06'ˀ$av&XVO?㿯J6R^+LV:BR 6hdZ}eY?/|6u7;9^}3>ZLNP |:뺮LN}- NlWx^H2R#T RZXV# #fnv&34U砼-Cv KZdF3Hi86XyآkS_9) C 3B0;}7 DڂVv7s&BQBkQƎ(zZUӧ_BJhݞ:yrl65B@a-Qۣ߭FG3sO{xmV}[%ǎ̅JK׮#M/?|@"AfdU4)CeNYީ*l$I8}I%VWs$xԶR=(qz]"bYCBR|!y0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/supermarket/000077500000000000000000000000001177067165300256475ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/supermarket/aldi.png000066400000000000000000000012221177067165300272630ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  2IDAT8ˍ;Oa3 E Q# -Ԃhl ZPQXcORA &hHYĘ^XgY,( Ns͛W^XеǏF}=m D8{UNG63>>&3.N~@ `";9NMNWwW/7<,N<ߤj5R!-gDoͦ/B``2~fs2OKPg8~FA!"CPLQEXAhB}8Qm 3R ,s9: 9C&~TJ+`k s9fG U2FFb)g D|Xe MF*eH& JulJ8MBC#Hsw'#8LvL{K7-3K`|^zX@z~gi'x$ŔPR9yVVb>ǽf,h?勛;L }J(h-K_"N?NwhgXvz{4ޱ>Ze$gL "b{2<35/@k #I }]湹 >(30pv6+[anIgo V"JQ=hiq2\$RٯݽzJu$9?8J=ʥᤱoy~ Z$xm.hxxGG}+d!F$J:gfh4(rzpbukqxwuMպK2O顮9 v6m0:R&xh_~*$RDP'J>|P\<;ڟ>ad&EDPZa ZR%tc&R>xIikoBk+)AsZ؞ts#&r}r˫K"QU 쌺F-ƈOMcj!aӴ(hu5ey *MԀ Vfj_.v_"}lK.S˙&?​,YސUښ% #oeb&SK84֒鼟{4*vM(#9sa<[G{`y=s⋮SUM5`4d#'%@l5Olc<B.u\D)-`5n*c@* FBܝ]Qu⇩D*io͹yǖgQQ c`yW黕7bO˓-ꊈJMi?膾?2|8BYf-ЅڏLyIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/tailor.png000066400000000000000000000015451177067165300253120ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs&&_(tEXtSoftwarewww.inkscape.org<IDAT8uMLTW}00o9Qg"-BKhJ `Gc"n4MI7MMqMKc)f Pg1s]!ճ:;{N!"R=}%Zfveq꧙?NHq;H@yX9x>wA)5aWkOw]Dy:>u!<>UJGMS|C0@kTiG4]w59Tih[%7レϾ&"N Cns?޹TnzzeUSKA;78;i8xR M7ke-T] / mv M=,ha 4y|K1M7VP]uV<>/YWM?u&^eS'#Fj> |ns|Vk̮ gJ)UEݗphc}DD{&B| d}xe!~`[Y}/D) 585&evԀobqOi,y%ͻ/6Mp+XIisҩkiX{MF kyD$`;jv`,Mg/Fy:BD!QV<Է~)qRt= U\]Kʸsc/0ܣGmIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/toys.png000066400000000000000000000016411177067165300250130ustar00rootroot00000000000000PNG  IHDRV%sRGBbKGD pHYsww<tIME:E/x4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(υOhu?3;Mqj,Rjҋh"ڴbA%(HыPDRlA`ԊV bv5lu5;fAwyxV0w 48 t[ItJ]E]f~X 88q+~ 9/=1+Ai|Sz4-̯[w΄ fi$}8 sJ kSH ;) g4pNEGT-u;`tQܞOܫ``Ύ#zHuAhlMtRʟ?%#44ȪscHҰSiX@7\fbb ߪ;AڢE+N>{Jef~C3^ދi-錌{/ϛmn7Xo!qC,o NRK^ NhSfƠ讛yEnUQm& 0/?eON]>^*gbh'夭=Z&cNZ)~O!2-'쵠*p6uz-;p{ݮ@S'$eJ_Km047cn 7#ly7G)fĶ'R{ )y:m+uߑVvg7위NȚ5$vK.Rr3>@/<3̈k}G^˚_OG^Ψݎ~0WVB"mIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/shopping/video.png000066400000000000000000000007521177067165300251250ustar00rootroot00000000000000PNG  IHDR|sRGBbKGDC pHYs9YGtIME ,4tEXtCommentCreated with The GIMP License: PublicDomain 6*IDAT=1Pg F, "b/^#lQl+zEh! o0C~ykyJZ.$F8Vǚf:NJDUIvik>xe/`Oz<t:0V!vc `AqST8l6|l[ `X)Z1o( <'"|ߧZb;tIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing.png000066400000000000000000000006221177067165300244750ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME @4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8clcπs20202 &\v y 2.| H!e l l< !#gs n`X??y| ~t,$,b`fag`dbbؿt~FF&>ncB'w:ÎiY:-$Nz _[_1_ӁF|ٙ8 U60EIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/000077500000000000000000000000001177067165300237675ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/archaeological.png000066400000000000000000000004371177067165300274360ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME4xl4tEXtCommentCreated with The GIMP License: PublicDomain 6qIDAT(c>@`b 7<`Dv"4Ä_D1 pNSVC 4`1n6Za1n6%DybY5 hrXEIM)$YIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/battlefield.png000066400000000000000000000013651177067165300267610ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME %14tEXtCommentCreated with The GIMP License: PublicDomain 6GIDAT8˅KQ'V~B)B[ZSҊS:vٵjkkk G۶X^^p8|%$8@T*5rܥzm_R>@)ee2DV&Hw>=`_%OA$,sh4_.MOO1M!ettX,F|ǭlh45?  BGccc]Hcbbb'ͮERT\.D"t8T*#Bn;J8/oΞ?>>Zk-uz>oq4??)P5PH˘,IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/castle.png000066400000000000000000000004161177067165300257510ustar00rootroot00000000000000PNG  IHDR Kpl_ pHYs  tIME ;JtEXtCommentCreated with The GIMPd%nIDATxڕQ0\ttN@i,LB/UU 3af̍bTUED zPt'ZkODF.` 1.pq`D4"*O=&AU7 QG FSIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/memorial.png000066400000000000000000000006511177067165300263040ustar00rootroot00000000000000PNG  IHDRځesRGBbKGD pHYs B(xtIME 0L!4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT}αNP׫B1Yހpv Éμq14qzqN='!MD#}@^""\}@7 I雫jpNm6#0H<`Uu$"2#aZnAd2fFI<BY:Jfp8GQ+;Ur0$jłl|>"Q-Of0@U,#q\I.p<vK`7!'Ky#Wʧe?R]o s"+"rlf@DNp!"_l+I33{.T*}(7Ww~VTuX/cA IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/ruins.png000066400000000000000000000006771177067165300256470ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME #,4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭KauC484(9r8p44nP"w.'`y ?yaK!-hvgR1}ԁ6R\:(-` -SC%z\-⧉M䀊jNsi_>U!|5暟"c9W_(3w'qx'tis@㭎w7 w =4/Ҁ{IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sightseeing/viewpoint.png000066400000000000000000000003061177067165300265200ustar00rootroot00000000000000PNG  IHDRaIDATxSA |E"wt)T5wѧ`>[&!P\8YMdY,*|ۍ +NTbUdL࿄p"'vqSWW&*9쓭P^VVV˲;O$>U4IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports.png000066400000000000000000000014411177067165300235160ustar00rootroot00000000000000PNG  IHDRsO/sRGB pHYs B(xtIMEt4tEXtCommentCreated with The GIMP License: PublicDomain 6sIDAT(}RKa}wQ/\1hqL0H dHBt(:DW  ? `h!S\iI$mNEp0ܐ;ϼ.MH,m-,,,Z\\A0@+++I4Mtryyl)sss4*quu|>?W**G|@b8$HrwwTLp pvvZ$iYWWW/(25M#Iv]~s{{>w y5E }q*§'^\\PElmmM\.Z~$adYFIDQlll@Eb1$I.;˅B$j033[@UUnt]G,tLtϩ)z<JDUU6MZl6K0V$Io=7Jn,&A///EQ|ݳy0qYy||̳3^__.bwrr`e jmzRPhKh<a ei].bXZZJG"yp8𠟜|3MViIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/000077500000000000000000000000001177067165300230105ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/sports/10pin.png000066400000000000000000000013011177067165300244400ustar00rootroot00000000000000PNG  IHDRV%sRGBbKGD pHYs{{GKKtIME  X6D4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϥJ#Q3DL"k 03^ Z([*J,R X ݍ35I)ɘL wIk-gi>R$mZNOOEDD֒hёhE}6a>AiLނ\W].fTT"<~qfIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/archery.png000066400000000000000000000013331177067165300251530ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYs4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝OhqƟUƠhb zQI)IXnE6( )OQm;x | `PaD$z}at{N/_>856 #Fzqt ]Lc'ܧx~ y>9}F,C:+(J{x;g#Nzq1 x,SC ΪT*t K ׏xOAVa4Ma 07IPV-@0Dw'2z3xyϧ=|>N v͕4F8ydR =E)L%P( M$t:rlX9??Oa NylG!WWWHVTafeDFd2ͣiaaNej6D"cPQڜIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/baseball.png000066400000000000000000000016671177067165300252750ustar00rootroot00000000000000PNG  IHDRsO/sRGBbKGD pHYsyy8tIME-\4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(]S_he=>~߷՚Nfct0]|AC$ /"(E!A7)DQhy#BAf"Jk֌:ϟ<﯋]luܝs8瀙}(:h5%q8eRG BDFB~{06'p}jW^KL{̬,!$QvGW֯[oDc)ܻcQSD~ ̨dٝ>?y"Q"  J  3 Ry}cP$U2U4TJ5U ݟ=|2U RpjO7d^ P (݂VmNn{k0VL  {s-K~)xdк«#pE( t(F1He' o.0 crJxXAdA; p@o*a?e7 0wx`oE=4;Ac1/qlN! 7}3̘[b+%7v pN;@es70DeOO\4 |05;0_' ę?kcEfTNn⍃t`fH" ƅ/Uuo(,q ;{Fkn/ߍߴ\qr_X !D]PɅ-&%YfZ/ )IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/basketball.png000066400000000000000000000016461177067165300256310ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME;7P4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8eMlU7f;0kB\[(eMc.|TW Vn8s sC~yh.'`VgX͐5&)3;tw{u#:1|TX h0t$/RьĒ_jc& )Ӧ , %:q:}B;,_mJ_>rd䱃7l٨FD!IPʚH\wXYwx"B&y#vu3৺GV> :ŬDΚǓŧw%BRB;˴Νk6CZLm4"ODQ-KxQ&C6:.Z=`mOz0dLX{~(llOKI,%!E=q=ŏ53l\LFb.8PgjSZ9CH7[3څNa4e쳝8 (mU|qc8&;?|_s_+WE\#…jo.\:sY7`1cI)`)SS'n}ǻIc'URL/3;oUMFE/?h5"IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/bicycle.png000066400000000000000000000010651177067165300251320ustar00rootroot00000000000000PNG  IHDR 2IsRGB pHYs  tIME;:΀4tEXtCommentCreated with The GIMP License: PublicDomain 6IDATu=aǟ{zpd1mQd(E2 n` BBY&E=1g~?}eYh+Id2 BF]Z`vc-p8̲ۈt:ynoz<ۍe\* 2M |$IV!QfV3ͪ^`p:rFFtEgX:I6MQ .^ `0|\&!Hsպp8V*vjdJRP(J>$i{^,EQv|mNw\1z,-KFc2BL&j?ol6v~xN֚8 RWpRlFټ/KUUDZi*nbx,b㌺p<|>?_rE$I8F#,zx$I`[,uv]E,PJaC7לk3IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/centre.png000066400000000000000000000006431177067165300250010ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME #F64tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(c>@`a```αK;ןx~ RL sZls[U.k`ͅTTMN˅eҬ)O `yN^$hȏpz a12ٔ#$/6UXL>8FztZ~HpH+dhLT@۱Q Rұo{%_hVD-޵QevȇjIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/croquet.png000066400000000000000000000010111177067165300251710ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYs  tIME 0 m4tEXtCommentCreated with The GIMP License: PublicDomain 6IIDAT8˥/Q.|Q ?- 4VfѨ"ed* :g۰?ž;{#??}fk}F>'˙aݩrFj6ofZ48#|>T*/j4< C- tUm4T; yj&RVJ(!~wk})˒x 2>{Μ,Y,s"u8=-]Fa,B\r 8px %E*`cB1TE|Pla< Xd2=z(0aIsFUP9IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/cycling.png000066400000000000000000000012741177067165300251520ustar00rootroot00000000000000PNG  IHDR&/sRGBbKGDC pHYs B(xtIME Fލ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϥ_HSags;ef67ވw"۠4bDueDAhRJllb9~]z/^~JBogg?i7$lnnOuM@{;df% "Xi$V.q&ב$A(I:PWTVPhz 2"/q&ŲsՀчqG_$ rk0i_bdYl6;vv !Qe<EQxtT'g2;%dEu{=t"`$[zږsihhnsxsrz|Hv>DZ>TUpۊ'Vʛ*S,j8ub%-]Ε^s!"׎R(|-'@KDc?%?n "蚉l(~TU*R 0PUf4mdY.ʀ!,IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/dart.png000066400000000000000000000015101177067165300244450ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIMEͺ~4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ˍKTQƟss;hA~e&MtaC -t "L##iQDP/heтFlHЊ@0$%EԫhLdѳ9}ޗ+8N) w9beᣔ\\\̱,KGGџc֟$VVV07cǣxӃX__Cc@cR/zLT-L m1i >~c3Ю X^^=Y~Ɂl,|0 9Z!G˭&t'O`j0P(,|{ _?E_o6"RL_.u-Be%ﴞes}K!ݸLya,ir~555b1ƃܻR( ۶RBP*VY*L9CT(. 4RJ:@ ?bo7eK)`,` ASIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/diving.png000066400000000000000000000006251177067165300250010ustar00rootroot00000000000000PNG  IHDRtsRGBbKGD pHYs::͘tIME9S4tEXtCommentCreated with The GIMP License: PublicDomain 6IDATUJaDϝ/Bc )R٤ y.d~)0t.6-q;ֲg ܒ^e^U:XPBHADcA%V8bUcK3,ټdi(H>,eP,AK1 v_0\Ɔ5zd ONF糈` HXQ>G M;B Z$4JPL _F4lFdž2 IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/golf.png000066400000000000000000000011131177067165300244410ustar00rootroot00000000000000PNG  IHDR HUCsRGBbKGD pHYs  tIME MvoItEXtComment derived from http://www.sodipodi.com/index.php3?section=clipart |M,^vIDAT(u?㥷XCZ,>jA2N'ߡ/P (IB5KPpq(!uZ]-9AlI_%\II /7w=`NxL^rρϒ~X, eY}'qAvq,"?^ $X.(hXHf3d2UUV+\H ɛNf$y~j5m[`N&3N]h4j1_1Jn4_q6}\{k%H';\._ L4 h4R)i^9@8ih0DJ%dWWg|ElxdIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/handball.png000066400000000000000000000007731177067165300252720ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYsb3y!tIME 9ć{IDAT8˝?@ NX L0}l?MPO XXM XVi$]:V+/Y_}ssF#!/h. dELx<2((it:Ev;j5\WiB#-rDDX<UJ! !X*8_4J)|Q, h s8s2жmzAj  y(ːRb>uFҰt:f, L^h*0dR+Ae`WfX,ÁBۍH\mg 58~jB.{PW/3SrIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/indoor_pool.png000066400000000000000000000012121177067165300260350ustar00rootroot00000000000000PNG  IHDR $sRGB pHYs B(xtIME*Df4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕMkIv/ITDEу AA&݊xՋm(A!ŃELiYzp e`wg E^9 LkR/AƆS8 ؜f59`5!58U퇻r ֊`9aXPdP{U&UI06Hs>՞d@0ZK>V5rǛK?S@ fq"[.XY>pmm8 pf?N6\\1~:36s߇N,h5YԞ|Iٻۯx[@錺vaFNK7sQ7I8Cڴ6G 7dJw؊ʨRwlD$/ۢ#Pn(C l] K 윺("w< nU*ϯt]w2"oM(;wIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/kiteflying.png000066400000000000000000000010541177067165300256630ustar00rootroot00000000000000PNG  IHDR k=sRGBbKGD pHYs B(xtIME *#(z4tEXtCommentCreated with The GIMP License: PublicDomain 6lIDAT(ϕROKq}k$nb ֹ=Af!A CJ=ԡD[F+^h%"Mqfޛ7Cx6<LXi7kNFƃ)S٬B_Gև?DGD;'+vsW̧Ӌ(׺[N[(Oq! J\E!|Ǝ̥Ut:JǠ*HH`FcDZ6C!"ImZL&g2V(3jQhec+uؾhpVSx`,M#(o(]hb]I @U_ I,P&$i 6 ɮC;!dNOl)i L&+y4+PIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/mountain_bike.png000066400000000000000000000013631177067165300263450ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME3<4tEXtCommentCreated with The GIMP License: PublicDomain 6EIDAT8ˍ]HSaƟ=yfp\ʌt)4 -uusVƘHM ]]$A7}}5%šiHʝt%pk%^,޸fExxm] %L%'zrK+[ tAPAj댢/NW4co*Ld=No !!=ݬHBa_VY0aMƇ+evW{+'ҷOoi[~q͑Sfٹ J$ &Y>F#?ɷl^$G'TIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/multi.png000066400000000000000000000013471177067165300246550ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYsb3y!tIME 81,HgIDAT8}OHq?;bB KBHH )nAނB%^SBFmBP(rn(̥'^}t(KsQE4,CU]T*ir|>_sO>ʂboIJ,1MS4M(F8T*E  +((BQHK. _%?M/RoIΓ,UsjN'tww(J~­Q(NNn`g=irxL~F4N~.\| DfBж""sD*_bb/L{ODDt]Хw0yf(\3zm8ضzn]׏ ˑX\fhhD" ~IqkI[  |lmm,3Oo}񜶶6^oT*F8lc[DQۭdtܸG(vAKK ###Zۅ"lllH1rˉtlrJɯe2 IضaD $:=IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/pitch.png000066400000000000000000000014051177067165300246250ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME c94tEXtCommentCreated with The GIMP License: PublicDomain 6WIDAT8˝K?_os%#Kr6a ʊVŽ((oJ2!E 4܊n~u}><< xÏœ/c>`=`h &gS-y RqS,LƓP6g ![g;ҴLLVWk]5ƨLwۀl!S:}h2ebbLߕ7ZV'jslDDZMoo/#c-Y Ϋ>v ͆ TUUdBRa0p;q Z7F5TJ0ͱRDhdÿC\(4 Q& ĥln;a333399 s 4V.e HvI 1TVTP~EEQ>D?A|:ӗ@jp*(*#8BůaԸ_یCso':}NKb\/fIDqwA` us򘏨bxq{%ɿ)tp`V"[n(xҚO*؎RTP`=^}?*0`/IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/pool.png000066400000000000000000000011421177067165300244650ustar00rootroot00000000000000PNG  IHDR v 9sRGB pHYs B(xtIME4atr4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕkq?߻%ib*!EE9 "BQppBEhI8"KĴEMԤ=/KzsIȳ<* (`x[v@ ` \f"p(ǁz   syQqI5_*!"Eguϗ8`wjuW6}5p H_4 N[C@@fHib~ O}B#٤~ [acm?Z:p3WؘS{^$e%$>Zku;ʆ ̆9nGJ*auī@|ڝHr!5$Z{`h΋^֚`I:px<5meٻX|ЇF tc&w"Z^GvHw)\Gz0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/racquetball.png000066400000000000000000000013721177067165300260200ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME$/4tEXtCommentCreated with The GIMP License: PublicDomain 6LIDAT8˕_HSaƟ|-f#9z\Ӻ ! )F]mdJ$E$hF0AQ`-SBR?;k|/y~Zp(Ea<X頉Tld+qE)pDO8X 8yJ7tp]0Ym9h)'Uri['(~KLrf\*Es./64oMsG_D(VQaةY|n蛟G"u}e^#;Zl65Mp8 *կ $}z\ -F϶+@ feF SRrd4NU}Y1w %Ʀ1tM-U>?p#4id$q B^vz%Ѹuz(dL0xT<>_*UO$zO Bqɕ\fwvNW9p5a쭳QD ^*C5]_gȼ HIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/riding.png000066400000000000000000000010371177067165300247730ustar00rootroot00000000000000PNG  IHDR 䅪sRGB pHYs  tIME /.4tEXtCommentCreated with The GIMP License: PublicDomain 6qIDAT(υQad7X\1X),qb (Ѡ"M-QDde "| rw/͛y~o6p8D""znX,n|>WX,qy24 h4<NSZ { 9.z,_Wji, !#e\.-R)Iw<|^L&~qB:s  1ƞg"|4Nh&hۊ:8ڶ Ûlۖ$)v;ƘDZt1Ms6%ry8BUU%Jbv}M<rfVmҖeJ^>gj,@IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/skiing.png000066400000000000000000000013321177067165300250010ustar00rootroot00000000000000PNG  IHDRV%sRGBbKGDC pHYs B(xtIME4d4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύOHq?\ЙlN(;)XBÓF൛ǼXE $AV-( A*nTtf=LIs}<}MD,lR&c&|4qT@iYViy1 yV|cyp w$0 :}x N6OÈUiE\n>br(ဟvJJTs:8os߆X}RWoRrkl0 ~L:#"Pn(CB)RH@uM9E929ɋ^ Ӥ)pp]Y[ZFw{LVbRp}}B!nn g5iPx8ÉInG^ RJDDVfg'ZN𤫋q.Pvs:t]R 0.MM#b33ALs^/g*+Ht G~~T0@B?IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/soccer.png000066400000000000000000000014411177067165300247740ustar00rootroot00000000000000PNG  IHDRsO/sRGB pHYs B(xtIMEt4tEXtCommentCreated with The GIMP License: PublicDomain 6sIDAT(}RKa}wQ/\1hqL0H dHBt(:DW  ? `h!S\iI$mNEp0ܐ;ϼ.MH,m-,,,Z\\A0@+++I4Mtryyl)sss4*quu|>?W**G|@b8$HrwwTLp pvvZ$iYWWW/(25M#Iv]~s{{>w y5E }q*§'^\\PElmmM\.Z~$adYFIDQlll@Eb1$I.;˅B$j033[@UUnt]G,tLtϩ)z<JDUU6MZl6K0V$Io=7Jn,&A///EQ|ݳy0qYy||̳3^__.bwrr`e jmzRPhKh<a ei].bXZZJG"yp8𠟜|3MViIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/stadium.png000066400000000000000000000012741177067165300251700ustar00rootroot00000000000000PNG  IHDR ޜsRGB pHYs  tIME ;4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(UKOQF̽3@ m`yTbTĕCBiOpޕkXXDRbBBZЖ>3.099iܗҼ!%t]4 ]W\qӔru2[,fJ,i& !4MG4.\\W)Ǯ3$5juu D&BhTcbWˢTȆك>Y.{MUbL._mm43Rp]$@Rejv Nbۊ\ĐQ)BM&BCt>OHn`Y!?y8ɱdKdΟ "/ljtP(z"I1jlT|>|s L޼~NѶ$طٌũ ?ɎML{ K+(061wik9L5zzn@Xˎ'I]ZYh H=xk :OC!ڶ]C/Q}1w2##}.]^Vddc1\mЏOӳH]ý)ܸ`Xd;6?pz"b k wtz"ynl$`6A (=GN`UEƽ87pm$@RA8Hg= T3gN$Y( 2,n<[•M|=vp,L U1}*+UUi&q^䗦T*E]Y*:5z`0aY2 jdY(h*4A4*B0h4HNI IAEx^ǃfeYTm0?/qP\.|>$LOTV"^IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/tennis.png000066400000000000000000000014401177067165300250150ustar00rootroot00000000000000PNG  IHDRsO/sRGBbKGD pHYs B(xtIME F%4tEXtCommentCreated with The GIMP License: PublicDomain 6`IDAT(ύmHSqƟ鰦T %6_}k)XT\_*RsPһ$tf]!&l?9?CDs /y uΙ O~fF" ^T/4(8\e>fjH!vY.m{q$"()DMešewZS.ldժ9Wwŋ0K$!I+t:)8$j3Ǜ,{'q)eE ԨSۍo;Z0.U_ǿiU7|dٍmBJd0;;jMPC)] Ww_ WVq QIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/track.png000066400000000000000000000004631177067165300246250ustar00rootroot00000000000000PNG  IHDR;֕JsRGB pHYs  tIMEuw4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(c>LM LuLLE?vԌn3V Vgm31fblL X5wb@V(|?LTB;i`x<gd1a Eb4La"/S>o~IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/sports/volleyball.png000066400000000000000000000021171177067165300256640ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYstIME .4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8Umh[e=$'Y:ӭ2ڬ@QA7ӡNgQ؆u ?&T6+c2V1Kqv m쇩]ך~ŵirr䜼"~y.D)b^m.qA[ԕ T0ٕB_[;~ss{Xn:M}tpT -3U#h 0 69LwEiBgG? +zX,VJrEDz0agg` 7 @`{x󋯵"f{EQT*RSy׷h2hXM"PѻvQ,۬Va@_iKyޱs&Snk /ϱf666,B(oSy2z,C+s3Y\w,^Oq`0( ]tʲJF WqW9D) Jro= (P CCCg"l-\V\/a1BfQ8Ȳ\mU-tMW@{0---εL tCbeWxQb0)̰#!E,I[b63o9C$I[7oBcm3+ 6t}"Mh~$%r">mVjŢ(ʆaͧyMOg\,M_3}INi7| &TU]y$IrF Ŀ* /( 朻4o}ksuqub54W885X,^J|sox#9<򩥶"v /ȔR>17 9ln/\<F1I㑞.!e }] ԫ >!,jj|/p7{?,bٰqҘNZ]iIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport.png000066400000000000000000000010571177067165300242230ustar00rootroot00000000000000PNG  IHDR k=sRGBbKGD pHYs B(xtIME 4tEXtCommentCreated with The GIMP License: PublicDomain 6oIDAT(}=Sa[" FAWHb FDH&͊&DRXإ4Z DJQA4$\w%qSs̼V#8wA-mOq\ Np3\FjzVtZף%7E<&6[Je`^oQ\S'}9<*f476:!ӘB6}X,\.͠: G,1 VAYDef"d1[=u{79qg&@ض~P(Yը:1vb|>|N!}$/K r9n6%Cv]lrirZ} $z8 Jl6y>%B\'۶ 0`&,˂eYXh4𜂪t:Mn{.JSe~<lZ4MfL$z7d>PU>IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/aerialway/000077500000000000000000000000001177067165300254705ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/transport/aerialway/cable_car.png000066400000000000000000000010511177067165300300660ustar00rootroot00000000000000PNG  IHDRV%sRGBbKGDC pHYs0=tIME *674tEXtCommentCreated with The GIMP License: PublicDomain 6iIDAT(ϕS-Q=>,1 VAYDef"d1[=u{79qg&@ض~P(Yը:1vb|>|N!}$/K r9n6%Cv]lrirZ} $z8 Jl6y>%B\'۶ 0`&,˂eYXh4𜂪t:Mn{.JSe~<lZ4MfL$z7d>PU>IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/aerialway/chair_lift.png000066400000000000000000000011461177067165300303040ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYs$-ptIME *!% }4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˕1Ha_Ġ8ʜDpI[vrhW JEPps!B!)  ކ@Ϭo{? Ih4d`c*0^/<5Mr`@baF t],| BT*ܐ20P_Vd.x$E!Ij5sA^g4f*bE3ۦkTG:f3李kB('w4jN8I$4b Ώx-<$$o0gM0mzN76>~CLR>N//@j< 0@Ŝ9 -Z _Y3w@qOEq5p*9[IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/aerialway/drag_lift.png000066400000000000000000000007731177067165300301400ustar00rootroot00000000000000PNG  IHDR&N:sRGBbKGDC pHYs$tIME );4tEXtCommentCreated with The GIMP License: PublicDomain 6;IDAT(ύ/PƟ66'c)GLDJ06NA6 St熻pӞ9;?$^XאRl!!w7U""ضEQ*\.sC{J)y<+90If3Z *`ǜN4MávOZ!%L&3gY^MӀxgv[zEUVo1FQ镺\$!a`BTbAqJ 㳍R͆I|-z}-yl}ۭ5N~/+zIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/aerialway/station.png000066400000000000000000000006401177067165300276570ustar00rootroot00000000000000PNG  IHDR k=sRGBbKGDC pHYs]~tIME *4jk4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(cr|@QۈCǏ SNecNZgP3_z0a˗/3dgg3xxx00m T300(0s0dIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/airport.png000066400000000000000000000007531177067165300257050ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME,B4tEXtCommentCreated with The GIMP License: PublicDomain 6+IDAT8͓!@^WU`? *D} ͟ABPG@4 BAș{d͛3fE 0d4QjntjC?^x5fCHBv҅d2sOyLSj gfNnK`ZH(}|'FUznZ89GQA@Es8R$dYY;"2$Qד$eyU׵<o=X841FRejp.hDuIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/airport/000077500000000000000000000000001177067165300251725ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/transport/airport/airfield.png000066400000000000000000000006731177067165300274650ustar00rootroot00000000000000PNG  IHDR ~sRGB pHYs  tIME14tEXtCommentCreated with The GIMP License: PublicDomain 6 IDAT(ύ1@?lRZX+a/9eZm-rI`Dtnq4fCg}m55ERc(|>!\ǟBIO" Hu ez<'K)i v;>%βa0c|prc)%=`@XUMduX)Ʋ,g1+b >xLbOI;vʔ}RQ9 IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/bridge/drawbridge.png000066400000000000000000000006741177067165300275750ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME1U+74tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˽ӿ+q3 fHIM&ݠ,Y,l qUYE{Y FgP>sAo*;\c$mt*fF}0 &W  xB$wDp giZ?7U(IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/car.png000066400000000000000000000006661177067165300247750ustar00rootroot00000000000000PNG  IHDR H;esRGB pHYs  tIME ȓh4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT}!@E@1)ф%Ԓ VApe]AeS $I-M&*DGw%۶m۶iRJ)eQ 9o˯ MJ$ɒyO.(HD.riv;Ru]451nc,˲9s]_eY>4 qΣ("0 7MDDZa)>9_ǑN'!Du`Y|s¤IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/ferry.png000066400000000000000000000005621177067165300253520ustar00rootroot00000000000000PNG  IHDR ޜsRGB pHYs B(xtIME5/4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϡNo%+KQh@b1Q hx$e O@P!-R%k;C_XyTUEQ<ä׆4U,~|/qۮa`7lgG׌`["8_Rn7-Vwb:x f*ֵS&ـcvP7W}񨿽RכCU<IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/ferry/000077500000000000000000000000001177067165300246415ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/transport/ferry/ferry-car.png000066400000000000000000000007301177067165300272410ustar00rootroot00000000000000PNG  IHDR ޜsRGB pHYs B(xtIME9 Xl4tEXtCommentCreated with The GIMP License: PublicDomain 6*IDAT(ϕ1K[q_^b)q*T28dd}NB?B! :KtT(C;CIAD4vJ/J/sϹ?ܒɪb.G?h4>zt:#M*~j=T$I4Wxo{w DZv;} ^c3㸞j*MSnp8L`/$_b# ŸL1n}e3> ^AlfޛpQp19>O8YJv8; F&߳#z/IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/ferry/ferry-pedestrian.png000066400000000000000000000007131177067165300306330ustar00rootroot00000000000000PNG  IHDR v 9sRGB pHYs B(xtIME IӖ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕ1KQmAl)AP P~ H "'׎2X\ N)XvJ߼Dsxe^U;*(f$gmާ .22ic_6q )!k tCZT*Xvkb `2p(ESs ?@c oܺ] *s+WoTV,-)Y/` eɤ&Zw+WD,>Y0f)#+˱rNPBGsr\is (z@ $ n} cpg9w)FJ?ò%<cy+/qt:!b7 xvoĝht wGz]NHd!I~?z3,U>Rh& ݶI }^[e v{&Ca$*,9,Sj}N8ؾc65BDsB`:B:/Z(;%N9i'+*( `P8 COaԏi^o׳4B)ץ]TcڲΎ'ڲZ#C/#Juxs |5 x_CFȒi9wtK=.0=/wss8f*N0I iTq6zL/(|=,S,|bo6|e >)J9'')_:gV!tIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/park_ride.png000066400000000000000000000006471177067165300261670ustar00rootroot00000000000000PNG  IHDR k=sRGB pHYs B(xtIME'i>4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϝ?(a20IlJY"dbpd2SVY&6,Ub0`R6z6I'|.<ۓ`[hV^09"R48ry3'p-8AgY􄿃&l5 Q`,yq^1"C/ʀ.LX xJER |e@x.1^CE4+X)*NĿtFDfІGkE #eG or;)#=<IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/pedestrian.png000066400000000000000000000006611177067165300263610ustar00rootroot00000000000000PNG  IHDR "asRGB pHYs B(xtIME0 a'4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύO+QߘIFRS4 %j['^Y({KeZJ?e%Jflpt=>=<džG.HB4a81ޖV2AYk}ILŁ> LMMFe $ ,]]] }Ž=Br$-I2`):hzH`aaކ;;;\]]S_x(uH$p#v MbQkkkdt}}`0jcccZ[[9>>fkk*ߏ뺔J%|8@R驍D"uꕈF}J\7lf|R=e~~\.w麮-DPXb'ɓ\uY⍌x777K4`vv6vrrB2 ?uRx :x? j"CD : :"xb02>.:|IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/rapid_train.png000066400000000000000000000013331177067165300265140ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IIDAT8ˍSkQͦmbK**JET9<{wִx-x=x$M@^6"M[mEUڂi4ݗk|߼f[,D./J8} ! zV[8ۭgb|0֪fvb1ݱI,{zrM.ٴ ]dv-OM Uתd \ڼyOXbi`81n0u:WpGaEz<' E=,q@0`B#d4ϏU.Z#jv ]+~`9Fa7\ &ǐS Ang';GP=Bz2(:ONxfx a@>*0 @.4 +P<Mah6I FEƃm̯)ڢrZPtü M`^F3DuА- UJA@q{D^mΟ z:_[(K*4Ц#Mqn٥'/ >okMp@yaM.f5Hz; ߧbrh7x4|>+ЕI 2  A⣑KM[^7&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/steps.png000066400000000000000000000011701177067165300253550ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsxxjtIMEar4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝=HQ'5**QğYb)$(8.Cb;AS-- "fPF`T0__)%1=={Yrp?xR(MnW%'j'j?:fWJuG93o뢚PB}HVuQD }I 2vlQ]Hqk7))0DqBcMM_?jU =/,8&`_6py~iL:dbaO?}1Εe B^͜Ӳ,/骦؈{ş:('D! 2C<|Qݓ?@ۛ9g=:gx%nDaa-%luvpsP_ïS?^>oEQ斂l$-EFXiT%X N.Ym!W}Ǘw5,فɿH~|a{UIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/taxi.png000066400000000000000000000010501177067165300251610ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME$:2M4tEXtCommentCreated with The GIMP License: PublicDomain 6zIDAT(υ@gbBِ;>@bR)K;; цX[ZH {1_3sfj\.Bz4AsqX4 0e9b;cY0~Y., Xu}Z ʲ N`0z(x<~WUrK04MA)e _Sl<_ @cZhvE}0 tq߿nUqn$l6KWd2qp8v;˲yq !<1i]IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/ticket-machine.png000066400000000000000000000010461177067165300271060ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME -e9.4tEXtCommentCreated with The GIMP License: PublicDomain 6xIDAT8ˍMKQ;su0v-hfB7q-Ͷ؅]*!?A\B('o7n("*%jB -l c.f9>XWM7FҙgphȀ}{/++O">l !JbxyEݵ)j?޵6/:Qi0Q/< pi)uSjfOPh,2Q_=ne2ACE呀\Fb H(UWΥd72`qԿ(dgW9PwV 1t SIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/track.png000066400000000000000000000003311177067165300253210ustar00rootroot00000000000000PNG  IHDRZ/.sBIT|d pHYsetEXtSoftwarewww.inkscape.org<VIDAT "d\Aj01L\&#Pr6prw'N)p031Zyk`J)&"Ŝ ̼(zϪPBh5IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/tram.png000066400000000000000000000005651177067165300251710ustar00rootroot00000000000000PNG  IHDRvsRGB pHYs B(xtIME (4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕѭJ;^?fdMA0 jpEo*x) ZMhV5E!D*¶s8 m+&ShDWxQ[8 5]HΰL ,z-z:4x sy'ߦq&QUuZ11Hjv;NP [2Ms(Tlۦ6MI~^.Jp28B1\%@٬i@l6g(X,ۭ3Ȉ|>k,˱VRsn۶,a\. aT*/]tzh4ߦ??zvr,GZWټVIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/transport/underground.png000066400000000000000000000013221177067165300265520ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 3 ԀtEXtCommentCreated with The GIMPd%n)IDAT8˕KOSAi R@Iؘhąp4?l bE˜֘&jHe:.j FYM&7#8Aaˬwk>H%BW6s 9ڑQ׶fyJUQӠ@J\Mjgm>y˚YG)}2Ji>56lO*4*>oyى5.gnAc/PoU6l, óe(W T\=$jR*/~YZUVsZt7m۩!=U#P4nB D Q7Zt09[j*A؀P,$i1 dlbΝDzbAk 4K1̨qXyIKO|@wΤ }bz`-H)ٗN!k#fS5 jb[8cR3kTpXRvB̈(w5i֨]GuLcab;̞@cHA<"0"˗-1iV{۰1AIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/unknown.png000066400000000000000000000007451177067165300236710ustar00rootroot00000000000000PNG  IHDR /@sRGBbKGD pHYs B(xtIME.M04tEXtCommentCreated with The GIMP License: PublicDomain 6%IDAT(υJA"I%6*6p[ GJllllXk `%D9Ao&ˡof柏af YRU^͇=!L'6Prc<̲U4mce~]QMc٬@9UW[̖snBU瀧欵EQ,oqݎ@?I9VUu 2h=UՃ1/13S1K@3˲?t:zd^@/x8y什?21+""BX LAvL4UiHVUIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle.png000066400000000000000000000007311177067165300236040ustar00rootroot00000000000000PNG  IHDR $sRGBbKGD pHYs B(xtIME,&4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύҿJQ߮f#1 G,>` l%fayXד.;{w|6>azxBcܵ-c7\Vuk~J)߰^2<穬ToױN;yGQeYߕ,ˢ(< ?,;eUUx`04Mg1uu qg^8li1~OQѫ]L۴t ,?GnsRIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/000077500000000000000000000000001177067165300230755ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/bicycle_rental.png000066400000000000000000000014311177067165300265610ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME 0 4tEXtCommentCreated with The GIMP License: PublicDomain 6kIDAT8˥RMH*a=\YBJ DيHҀ B\D6HDZq%JAH hQ&26-ދ~߽|$@OרT*XZZb ?$jt:qZSBoo/bDQ| B@UUyzzJ=]@E\__Kp\#;>+>??'-t:dYh˅h4 x}}E\0&&&߂l FFF:Ga8>>(_Z4y*&''qww q GGGE uP.q~~Mp8 ITUEw>{{{HX__G2a![[[H&x{{-bfggQ(0:: ׋D"NHfj`0T*Mv1^s{{T0 L}}}h4p:(JT*0LPxjPU,$$ yrrBl\]]!766iڇ`...iI2qmm Be<88`bVl6KMYD:0k~#΁IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/car_rental.png000066400000000000000000000011251177067165300257140ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME&4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˕R@=?E tQh%lXAK+K [P (Dfo=pa8̜{ aQT"95 :/0""a8Np]irfHRPxPV#P1<"_2B!QT@D} f<2%I,e~f!N^+j\.9 41Nq; à ެA@bVKqhn ؛U:ȇsmud2|rbd2eYR'۶ ,۶i0(l68Ώvxt,$Iҏ$,˂@pO_84ǪVIQh]בH$>vuBUՈ坘$VEIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/car_rental/000077500000000000000000000000001177067165300252075ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/car_rental/sixt.png000066400000000000000000000014551177067165300267110ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  IDAT8}k\e{|g2 |U&Jk  UF\w%-dWV,u  bb M- JKLCM2d2wfBIp# Y42V9KӇ.)*m剤PrR-噜`v5HV(y0_SN^SfJkMyoBx4-Ly'[@_ U(<@-M=} "e1D. ͗q6>`TuUUt$r'jN#q?1TW@+"Xk_N9FQ=Vc/;{w"rND\UU0 ܽs0S]سoFnnT˫VREkцMЊ7X({i{뱑L=7Wڡn+ǘg/NY}tqC/Po ^PO,e#n4NW|ĩ<ȡB2y]Y;^,Q21=06=6TR.|zRT&g@gq|ϪZk1nt3;8z=^+̽P.w#6T&;4;4X?UB,0Z+&Jl㗺nOWC4 D賓g?EZXD\sd_6fvOO?/;DGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/car_sharing.png000066400000000000000000000011461177067165300260650ustar00rootroot00000000000000PNG  IHDRh6sRGB pHYs  tIME:.#4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ύR@6,ED} XVVb FD?5b:gܹg ""n6QRZ2iZ4=Lrqɤ8ۍ8Lrlv~!ijv\A.k6q4B24bJ sF),4M !QJ_W, ǑOͶmEQdY`r %DlZT*n80?|2>2 뺚yg7^ɤP(Dd2drۭ r",Ku@x< @uJi$,ZX,54 IlR ބtj(*.˰NzM0 RԷX%IjVAxQ}>jbIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/car_wash.png000066400000000000000000000010201177067165300253630ustar00rootroot00000000000000PNG  IHDR k=sRGBbKGDC pHYsyy8tIME 8;DIIDAT(ύ?HrQHItrpF׸FE@qСE AAЦ[r*P`i~={~ρk8:~S78>ct ./a4lS ?<nnvWxz$~c nvzN<g4TAIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/cattle_grid.png000066400000000000000000000006221177067165300260640ustar00rootroot00000000000000PNG  IHDRE pHYs  tIME ! ?v(tEXtCommentCreated with The GIMPd%nIDATxMJPF75 5PEt7|ݜ|GqڭKiQJK 6ѡ(~9svݿxK]Ik{˯,Y(!ED4$(f.8Mt%J Ԍ9Չ]"%$ D؍jj*.G|=y3K v v$9B:B:1z!i>ߞO֤鷻:0泣ea!Kosm[W6l<Ќ:;[OIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/caution.png000066400000000000000000000012411177067165300252430ustar00rootroot00000000000000PNG  IHDR&/sRGB pHYs B(xtIMEm4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϝS?hpK-Hl:t!ҹX3z"X$8-8uΩɤɚTڣ7;՞ X[9+[,iKYf̚x4::; qc$w_j甲B= RvQmⒿ]E'b o4u]~].aO*4%IT!\>z3q"W:Q6}X6ecg7®Tux8WGZɕ 8G($Ixrם ZML0S)q@<1?@&_FV(|r!t]DQ]]S,/nc;5)|8mh0DRJT*M-a(~ow naeŽVX}X7|mk~U;s)OA؄U(ʅm{xjRڄ> 0u8 _atNx ЯԟP/t78rHnIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/crossing_small.png000066400000000000000000000004411177067165300266210ustar00rootroot00000000000000PNG  IHDR 2ϽsRGB pHYs B(xtIME IT4tEXtCommentCreated with The GIMP License: PublicDomain 6sIDATӵͱ Aa'/ l`N ` (la$KIH %_ 01m8`gB;XZxn.]80{A!l*=u/ µlIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/emergency_phone.png000066400000000000000000000010631177067165300267520ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝=KQr!Z( \/ 56k{_(sPBA pis}Eڋ֝.q#v ; ĩ:z<8YCI4H1%YIxq@页JIe!nc6N@ 'րwG ]kM80 RԯH!zl6R ˲_J)g(@n7PxWֺ/aYdoR R*(t[b~8|H$B:`&\FA0Ķm V)Zdh6B!\.|,}1`80^ n?Wq:=/:&!ji<^ }'[ǜ lIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/exit.png000066400000000000000000000007541177067165300245620ustar00rootroot00000000000000PNG  IHDR $sRGB pHYs  tIME  b+4tEXtCommentCreated with The GIMP License: PublicDomain 6>IDAT(ϥ1@͠œ@YrA,mmS',Rj UB,W}U,;H_,K5D䊢y fa-PkͦiL>s:C|N8&e;8RɄtx^baǣ)!.4%Ic&IB/,KpZl6NrX+]׵fdYfFk xʲDUUFPJhv;Kzká)F#Y$E{D_Z$IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/ford.png000066400000000000000000000011401177067165300245310ustar00rootroot00000000000000PNG  IHDR v 9sRGBbKGD pHYs  tIME&P(4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϥ1hq E sWAUi 1 H)c.'-Bd3t :Y XXŸ4M=)q/N5mc6htJx'TJǑ{[4 yc>S.ZS,)J}?;s:~l6E1.vsTU. 5Zky+ێiX+ G"CRbYqQ*.YQ967q~>~Y$4Xcw*K"qG0V3>3H&F` s@ _ #''_?aw\_Ķ5{VW-ANg8=|%Kq|Pxk2,|(8Nσ\n5^c?/>ѡGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station.png000066400000000000000000000010271177067165300262770ustar00rootroot00000000000000PNG  IHDR&N:sRGBbKGD pHYs  tIME  q 4tEXtCommentCreated with The GIMP License: PublicDomain 6WIDAT(ύ-kBa簳3 M2-b@", FM AVb3 5Aརc;z$q' ߼"[I/>~L K^^wl6-Q./j!F$M̔fN#@fY[6 pMp4x<= X,jE*n1SxZfu]$\.#AzF$IW( [|`0 PT(Jnoq<oخk`8~%u~X,vst2I B.bf43I5`?_*ng IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/000077500000000000000000000000001177067165300255715ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/agip.png000066400000000000000000000012751177067165300272240ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  ]IDAT8˕kq?o.ˏK`~5-6E*P[R-89: IAP:PDpN)JRHK MK/$CSV > /|އ}G#:^"O{JPRUg(b 3$ Y11] Cy E[.?~,}ni/1ٳH=J LcF6bljKr!&]@wp(x6Ur )k} wR$߱Z/bpd("n55EZ Jk[ۻ6GVĚ*\EwWB $IF6<;:j)˲,;?sٌUٕJܴH$.E^t⦩ߚ1=]SJ uq4 |`h60 KjӃӿ߁M vS': ڽ` ݳ_9 K7wIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/aral.png000066400000000000000000000014571177067165300272250ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˕]h}ITICۮe?%kct/e.v3pc 2n"^y:@Qήft֦?IڮxvO쩧ybLiy>Μ;F0\\W*Ew:FF7oyˌ`)l |WQ3܍,niyHw?8<.2#> J}+c9K3SmqZ|0K~zR . O;sV{6m,юzyի5;.|xb3C`TMܠV_ZpK~hkSG0;yޚ.e&; sڒ; 1tQfmoo9%ySU˶LC~ryŢj$NDzm'"i vjOދފOvlM8]%A~(vH>N0 BݍQ l٫c7^e-}sDN?tlzf~NWP J͕@ gs۵7CGzh5G@?{ *9}75( &rz _fgTa$@j ;Y/J%!iIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/elf.png000066400000000000000000000011641177067165300270470ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˕KSasܙ踕RJn E&iuD]F7]&R0вδ<ҝj c<;NMRa`pz!LMq5z9O 8]]]n13;Kĉn옍뺬oP03O[7(U0V BJMyiFҗ2o޾bv7Ьblsץ̾n)""* ?( RkVwL1jMpB4MԆaWU8g٬J u HG@;C.#`۶R q \]]5X[[kJ)+@`xG>=& 8+4i ;8( (+@#EBLÒ7e`_ЖtItIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/esso.png000066400000000000000000000013011177067165300272430ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  aIDAT8˕OHqo6gg.t&\i;dXA萇t,dS5ERAF t2Vⶶt]FJ|NBZqOD4ȒLIjlkLKda&'ؿ=IMgm"_pWXzo>r=Ь 245-*l<݁|?b,UR='PQ33P^NM&MG!Fɀd (NC2 2г Z` JJ܏^ ͺ.X^ibއ" ٹ͍'#@k(4psX4e3*ZXNLăqYtD}]$PW$iY1ӣ7.> Y U1 ]6YO{sBt: ^Z,K~).a<:wnƳ$o=tϧ;%5p$ย(H$"AwUUoJ HGh@rU sV5` R͐ՀlnIrnh:Z H1IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/jet.png000066400000000000000000000013101177067165300270540ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  hIDAT8˕OHq66T4eh AD{]C]v!DB@T.LMotyn CegMY-jD^MnTEG7Z^Fg^ؿMy2fI4iT%*Y4xx=Q~|r_9 }g N-Kve3\<`9cJ p( w-ҺDk{xJk /(d P[eS(i}9v3mI,@e.\_W SPD݈BC%Fph9b_1 I:OЙP{<>풽%wBkz>skl~KJ"қSD!"цM\)3B\.TEӴ3`z b$IiZ>-A/lKӎD"A&)ʞ8 癜mlu6 7 -:U+ ,+Fa*v 0?xlbIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/omv.png000066400000000000000000000012241177067165300270770ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  4IDAT8˥KTasgf;6l, " 1WJ/.ZZ'6j]œB|iufEάZknv,ӳ 斩 I\t_T/LTJjdrllHgeE:^  땀h=@CK 6B>v4g]! x`pjj83[\= @$`J4hڙ^[ ##B@p0؉>!q0 Dqs[rc@$ybRdm]+GkkP(`Fޕr]444DP(֖]*Nr𣩣cym驙IgwF7`f{{a&d\. y]@¯+ >l<^@T>Pz໋WjR@[Ts͝S]L ,w <Tq$#IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/fuel_station/total.png000066400000000000000000000014361177067165300274260ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8}KSqǿs^u/ts6g)SL|ttQ ^QAWҕ]tS]]tRۙ^heΗͩK6ۯAl_x>|'J)<PJL?cKGAk_b˿3MC5P YZ-?hbKOb=b4V$ݭr)sFmtrQ*I_*O\yPwv=nEɩ)~pFֈݗ>˞L( `PBHR5̄"Y'扒~EuO>ެxx:'4=vCl-:G*D$ Q!Uv{cL0EfYR*27Q\~m=nTlݥ6ܵIa5TMHEZ,d@2D(@ty`ldJ?FoRa r4e3<Z]RQ1E {E 1- :@( f2!IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/gate.png000066400000000000000000000011301177067165300245160ustar00rootroot00000000000000PNG  IHDR n pHYs  tIME .mp~QEQwvq!d{3})֑mh: a:A"oݾG K+w7 c׋s7oW dz]~b<1A_TDQڶjT^"("˲y@2LPHRdRl6 ieY\.9(J6pNaIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/motorbike.png000066400000000000000000000010511177067165300255730ustar00rootroot00000000000000PNG  IHDR 䅪sRGB pHYs  tIME 4tEXtCommentCreated with The GIMP License: PublicDomain 6{IDAT(υAQ\]LY-{4YIY,ؑ(ƚd1,5HID{yWl9}K\.l..Yy\.nB0L$mk ވ-pZ=Lu0 IO&,wpn0d20=!j1M3U(Jc%IB1 1^.ߓnP(`_4^ |T*5ǩj|'DFq-JӏN'(BHӴJBH$i˲(B+!8wfn=Xl4u:Q' B8@)]VrYQ^u]QJb6]jImIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking.png000066400000000000000000000010201177067165300252270ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME %{0p4tEXtCommentCreated with The GIMP License: PublicDomain 6bIDAT8˥+Dag:3,dpbJ)vehsYHو?#b [QLff40hngl&9tٽ}{>auh"SyLi"?HV~6j,}יuy YmMi(i/ j"I(mffF@uע*I$wVNI<}Zf1Щ&aE>4v(K"X.KxnFe2ޅ:QX\?g4$)xw7^ӆ #97>%j AayX4o hv|Aӏjikѯ:hz{_kcIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/000077500000000000000000000000001177067165300245305ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/bike.png000066400000000000000000000013571177067165300261560ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME -2X?4tEXtCommentCreated with The GIMP License: PublicDomain 6AIDAT8ˍ[Ha>e9]2ZETĊ$ tX;E(2(DHv!Q"-O$j,N?7]}e}K_B _J׽zEi otxd)%J%%+8MqY O^4WCB^ ֢ :TօF g7O{$ѯ'6xf$udq1Kk.ʇ >}P9[[/[;(,i"am7]*A>\͉T>Z&24%٤|RX=y_5ȒhL:EB@>VfN Z"@Ȓr5 ΰ+D9s9wzg;]S8sDiBޝI:~a4,rmLM{ 3ԼdԒk5Sonobn|b2gbYoQ~nA5¸kspyJ>.0,𰡟,\NJBT?n*TsD}w1ʛjIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/car.png000066400000000000000000000013321177067165300260020ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIMEW4tEXtCommentCreated with The GIMP License: PublicDomain 6,IDAT8ˍ]HSaΎ &YMޔ B}0EIH;C2($""ńUWE"siZĝLt{qe߄z/SߖwYie-wzFͫdC2Ha{d0Z Y<梾,>fŸ0]& KtyƧ8[hޗ @-䇲H~NFb'ilM71=I0}߶D$b;s?2gJvEu>Oma$= ud;;i;A.aNh_ꎻi%⹊<9i@0BxA%0=;I<,f9 ηkNwYS ;,,ڟM h̊eh4)E3WT\|yxSX2)~4Mcdܿ) Opo|I3"UyAj zG#&nlNмJӭ4:/S1aUGTh<IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/garage.png000066400000000000000000000011441177067165300264640ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME8\ y4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ˍMHTamRQZBËA͝"!pP"ZNTa *7&!#^m"?DmF"0εg>)`5g]1oգwv-8VusIFEhIA{]6ʴç3l&WRJ8afoQE)l_:jY Z^|q~B"ȋrAQ ,T4'HZ:]nZ1[6uxޗ99B/,K 5<82} ߐo\mfI|<Q, %lV=5f (.ȣHKKnVfP9}I$6ݛJn6vb Q@*x>q D"d'*Vkt$ j=K"[l&rUt16dU#%?gq>k;:Xq ӾߍrJ1mY=kM*ꪲI3RR.󏃈xj'2PVۆRBMCݶi8^'qḙ)rw3kGH~H$h"v]mh r* }dBiQӡL&CDDjbqI׉D~XD f  !2ja:VoX4aoE0 x~LiWIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/restarea-toilets.png000066400000000000000000000013151177067165300305250ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs B(xtIME.+\4tEXtCommentCreated with The GIMP License: PublicDomain 6 IDAT8ˍOHq?w:^٢Bk+=EXDEPY:FtK:x %1uPnb94r7}qmAЉ_~|xj>Z rdxƅϥB·}/%0ˇM2 5, @bŹ!N 2mKr_Jhhver7۹S]@lۘIpwA.v,gWv$~w_GP&ZM$Yw\yt #\}DOWqi%<Ͳ?k3Bm#@*8 ,$v@okg=DVY* &7QY8Ҽq6è/$r@7^ |.z &=f#/BDr- &I~,jy'X]a4^G#\t_<џCb3Ś$&$nd?+1(*bpdoj.S;(تK1B+ 5hǭձwIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/restarea.png000066400000000000000000000007351177067165300270510ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  }IDAT8ՒkSq?M()Ƀy}3Kpw>A$D@bDCu EKw89{XM|c <sϲ 1fh;`%@DފHd4\H,"K[YtKPPz"r H*p =6sq`MU{U obE_Iq8Γ$q 6;/vADDH$N銵'FnEQpxxnzV}vKמ罩V}k `5<#W>ru}?p]w'ĥDxRT,ƃ0Q.?F ?~`IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/parking/underground.png000066400000000000000000000010661177067165300275750ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYsvvN{&tEXtSoftwarewww.inkscape.org<IDAT8MHq?~Dڤ 1i;HR uH]7}sRGB pHYs B(xtIME/vB$4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕ1Qo& )j i,EoVz5H(v0 3-'yɟdJ`lQw} C kx / `[6T(̃P8 DLqg).H ? s|n!IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions.png000066400000000000000000000010561177067165300263350ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME3uY4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭j`O-:_ ⤻P +CKDt$N.Eb#I>'Kc,U w8{sQCωċguѹt{YV}V+?4bLd,hiΰelxmIb LUN&0sxG*?N.eoJ..9ei}D]pbLzfYLct o&1dv[AnTHD"` Ep0ȊZ)Np+G-V;XlfQ+bsK,U~7 H /=s9 @tMessE϶;w1Q~H[xf)IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/000077500000000000000000000000001177067165300256255ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/access.png000066400000000000000000000011221177067165300275700ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME!3j`4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭1O`ώ En.^YS`g+Ȍ: OXS 2DDbB4U")};ݽD||~:ݯ{fW(;-ݶя""f+I7Aō?sR(fzpץ{OZ3HS&YiL8(""B+IW-Z) C)\^R܅hʶ$ |[ CvNNP/QNj 6ׇ8> ׮I]W4e~F2rjP=vy V(jTe[jc8`x M96ږ\behi^12|h[Vse#+L/s8"~IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/bicycle-designated.png000066400000000000000000000016341177067165300320560ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME!4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ˍS[Hq=63YQъflEO]@K] qaYVDdR=HC[eJ 5bd,Kr5t߷TΏ9DE EYY>FOH c^lnO"ZqV|\a1 ,įLڽe1QAB=Z^i?N7SEQ(XKY;U ɨ}(]pڝ"JR_4}f"K'1Q.));Rh zB`ewXFScoC-5L (c$ hu :v`vSCdGapy(}99&kCǘXOY)GX~*e8EBwőu:B0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/bicycle.png000066400000000000000000000013231177067165300277440ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME!))t4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭Kq?wD+Q4x$IWWWhU5+nOÐp|| GGGﳻeY .`MeTe'!LNN2??OE<>><c?Y$I?gk`s& q}4MU1pqv;8f2Z`܁84,g ߁iq< mRQ EmgWAv FӴ>{Ps< 'LIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/bollard.png000066400000000000000000000010051177067165300277460ustar00rootroot00000000000000PNG  IHDRasRGB pHYs^tIMEP4tEXtCommentCreated with The GIMP License: PublicDomain 6WIDAT8˅OKAc+${2KW!ztRy.WAQAnޅeXd鐻o33;V9@w0x{tTUe'.vٺ. VQ՗y@;_.S, J8tl6HJL!O6Fkiti6 DZ@;Rmɗd5`'g:Fk c+t` lAݾ Yc0GHy/h|GnW}^zӁivyAncyo~ǯQJ%8.>}4PI-IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/citylimit.png000066400000000000000000000007701177067165300303460ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8Փjqd&c65hVBPsޅo &+V**. &5m%UjLfh\t#~s.fjj-OE6mTJu+dZ#*%wc(Xv)C6 JϚ_c&*K# D|鍹xdWgp$8QR#`*timƤ)bڥwRmsDʬE :pǏ|:Fb"Ĺ!Q"]©rb9P\:S ;8VIbe,/2XTz{0X )ىa0pXxt%9 w }$& V)x,2 f.+E\\ A2i* V0pL|5Wd׷փӍ\uHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/dead_end.png000066400000000000000000000006501177067165300300570ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME]4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8œ1KBQ@wB6NF%hЭŖڂm4 D*h*Am~>Azw茗{kbB߻K!+0("23 =pY{˝tN 6=B9CA3K\'ggvß[0X2G(gx9~g *jJ`@"Le7'1F#6 :NYIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/foot-designated.png000066400000000000000000000014711177067165300314120ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME! 4tEXtCommentCreated with The GIMP License: PublicDomain 6yIDAT8˭S_HSq=wzBփ:E[,JA X-H/FD)ҋe[Zh#(ɂ&?33˜y]~=mm:o?w8GBNkY(~A^C-'? (r -cE)8GFcVqtmB$(~]!pYD<{@Pe"!aY&;H%y=yΔ[Olx - flW{2*cۭN&QS 0cq%C\S#BR.JDv&F>|Gj&qؔY i;['Tٲ)EB]6 uD1bRfE3] Zɢրkq055 9B.:Zx~k>fIgo 7΂r+K c nn=DIC!tQQYM@k16*xT49c@OG1LhyO(@K=xoZ198NuSIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/foot.png000066400000000000000000000013731177067165300273060ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME!'4tEXtCommentCreated with The GIMP License: PublicDomain 6;IDAT8˭Kq?wl%B:^Mӊpࢣ!" :8K:&A0zQ&A*h@,$9i:D ~{>EDxo5hIj<Bk_?"cͶ̹aHwnmY@k)"(Q:]'T(FvxW.#A?[ lʔQq@\]Z(""rpp ""bQ\]mYA{ k]ehhX,F8i+oFPS?iD  &''@ M絔sp怸ɤtb&Rd2fњrAgED#"|p(%aS p)~AD`X}7cϋ6ik&zi&ﶷ1T*Z-X]m.G\6g,IiV7SSqttDfgg2_6pSF2*sss/k^]MXrqq" &ÄaR ./41L F Z-8xt:MZ%J199IXάn"QCm^ZZu]n ~4tGGCڴ=O֜gou;γYDklӇE?cz9赛(9؄IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/horse-designated.png000066400000000000000000000015301177067165300315570ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME*![4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˭]HQC{ rE1ZCRcDP~\ʋHLM@%oJ dbŢ PM%ґ&5intQNz)B,f*m+B#xRd7:a4h 穰(_p,ps(XGmdl&BH0"(зt;S% E0@n'.+*&iתZ3`XG%i*J0>@KSׯUòlڳiY8oyn.x|%V`|'͖U5|lq<'q;Yl.rQNAVIVr7GQ{urDN O$gFN146#}Tc_KMb&"/5Ѝc޶!P}*Dz#FthYߨXt ԨnC@Z0{+{q|$d7JO º",^vvӴ _ h0:naf Y1':^ <C!N,ĜՃCx{RX[ *Gה7ccgeyb@"IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/horse.png000066400000000000000000000014111177067165300274500ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME 2 k4tEXtCommentCreated with The GIMP License: PublicDomain 6IIDAT8˭K[q`?pXm2xqe$DDpH8 LB&!A0Epy4>p=y&"%S3fj( +@pi_;𳉑uxՕxYMFۧoz06(|V(nYxŏudɲrm(EDI4Em),KMc_۶J^myk+vS)}ZÙ _]xݗp&fr9ctV6cc1??2J}*Bl~Zo;EVVVPJqzzy 2>>NWW;;;5Q_h6G$!iLNNNo`<boo]׉LLLpttD:UZ2R!FFFb\\\,h~i>Q7KK|P(7KKRG]_?D_,)IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/incline.png000066400000000000000000000012601177067165300277530ustar00rootroot00000000000000PNG  IHDR&/sRGB pHYs B(xtIME$I(!4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϝ?hqz)u(B -n]BJ;ťfB*E( BVnp Ĵ(9Y!I_.yP HvmN:֖>b ^k\k133k(RàGD7px!g0z N;C`@1^ ͧ'c`ϓH4// zl&k77Z[r0\SS핕WZ!ׯ&ZDil>ggErwc?Y5XT!gIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/maxheight.png000066400000000000000000000013461177067165300303150ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME '׏\4tEXtCommentCreated with The GIMP License: PublicDomain 6&IDAT8˭K[q?G@$,kfxupq̂K7RP?U؈'QKHL/CN=9W;Ij5a\] xMsC&s`AD-b|;q]UylN\W|&"hfd2_̍7z0><̷hVe!eqߟ!ޑeIԶr||,2;;+ggg9m)Y|XfSۖN%B#rj5uR | KK$S)y Z$-4àItZM6==lnn@R!"}Cm`]_'nT&'cooqawwt{|3+F2nPJ@*B) Bp`c"@T]"+++loo355###266 ]Y*PFiu|޸dtp<|6 ui=HO~O{IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/maxlength.png000066400000000000000000000014051177067165300303220ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME V4tEXtCommentCreated with The GIMP License: PublicDomain 6EIDAT8˭=HK[bN*5D \SgAR$-Pt:GA씱IMNJAˠĐ]l~LKDygBTQ-(̻Db@D1Qs.F7 34ԹD˥$_ϯk5\Gb lvQ4ܜ5͗"EDșfzWӤR,u˒=]ȮI4"<>kVVVmP,p}|<:8 Ljj^|>p`0ayHqF؛{TcϜ ^IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/maxweight.png000066400000000000000000000013701177067165300303310ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME dK4tEXtCommentCreated with The GIMP License: PublicDomain 68IDAT8˭K[q{1zbqs ަںdKA\Dp?!`"Y fqC&E"Ғpӡt/MDOpEW@/uB7gc2 "- :2ȿ w TߧO&AS i249 @T®V^0p*,뽈 3 )t+yn")e=ÐeD|h(&:>ֽcc\]%0QB!^#9=fYpEXTRŇVVV籴^ol)], ]ԍFcgQL$155@"`zzVE6Y,40qvwwF r\^^DݾUgg#ZY$H?Kõ:ܠj3::mx^RtK%zH >*Mvvv899ammL&9D|®VeXCӔ[+x­ܱpt LOyפ\.NRIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/maxwidth.png000066400000000000000000000014041177067165300301570ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME 칯4tEXtCommentCreated with The GIMP License: PublicDomain 6DIDAT8˭K?񎔒!Ejmr dR!I:nvK X`_ QBui/~y*"8}o|Q*k]A<~\m]_xJ4D"Zq{ ={""(mR_׍jEh,mnr[( Ajcc^qފHwa oYR<5ϓ}d0$8YA >~?322B\fhhGdo3 |F&x&5%8bild2KQ*9 g||P(DVk:sQ.:FD4FGGYYY!H$&&&8Fϻh @`jjt:(M---ԃW1Jexxd2r}} AGDZZ\b*"4qyyITUxWߘtë,.ik 87{\.G>zz4S.0DpZ(`ݢVRp8nG 80L(U`6!5n Θa:^Y.4MifHRFX,/x )~ݡ^yl6$IV+,Vldt`@׃mK"yh6m88PxSƏtw_e}vÆzdxIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/motorcar.png000066400000000000000000000013651177067165300301660ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsOOctIME.4tEXtCommentCreated with The GIMP License: PublicDomain 65IDAT8˭MKab71&(D&&?HP!`\ )1dfm6S; &0PIUvg~=UH>FbC-O^oHWUN5ğ!jLFZFSHBQq}Q?=ui41n4@G@ 77 =I$Q5uu>ը^gSi<4V #Oe0x[. : Z:.ŏrkMrρ )ƵP@XDR mu] ۶q||pXEk5!ζ-d$G>NL&ml$L&i<9YL8* bPU333E<GZ8jࡥ~hPO FU?iX&^$VVVJ ]pcyyKKm y`}h`݆iX[[M|ibƸx }M]V/\巫{.2yX($ Aw8ښ&IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/parking.png000066400000000000000000000013571177067165300277740ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIMEga4tEXtCommentCreated with The GIMP License: PublicDomain 6AIDAT8˭=Har9kKB1po=*2IT]$]d)sDA1!-&)L^Ʌ&h?#7b1ǤL^sh;qyy Q29cJyǔ򬮟%35g cV(_KS|Cb0fe rudÿu/ԑUN$h4Dعg c&Z&ޞC_MA*e"/| [di+5 rYDLPD؄fXTW vXoiےj=O?|O^aw ?@3 1u Z<n z<_(#szՋfA%(n.eK\<IL2(D-^B؀fnwfaY9yY@؀Z/aRXMφ{z^sl%%rA%(H桙EVҐinlxC"USCc-;D w Σ}'c"9nIoFWhIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/play_street.png000066400000000000000000000012441177067165300306670ustar00rootroot00000000000000PNG  IHDR v 9sRGB pHYs B(xtIME.k?4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(mOHq?{ uZ^3(WjheA7h6V!eeuf ]&Bm uLsvL*UPЪ-n]ZybTtHqo3 WyabI!Z:^3XXҸ`B*R5꡺$9Z:^;^fB^&5IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/psv.png000066400000000000000000000013471177067165300271500ustar00rootroot00000000000000PNG  IHDRasRGBbKGDC pHYsQQtIME Vx4tEXtCommentCreated with The GIMP License: PublicDomain 6'IDAT8˭Kq?%r.EÍ*17E4-fJvp \$.%u{T4@06-=s҆Vy$O Z=IR{5!5DLp6Po-,>I$Ir)K]Fo&C4msFuU<!B`fa_U-I0Dy.3$}Uiȱg++odžYPHj:͏F;;v}=X,(JZ`('ت?d㪓fs:\U)˲0LD @61"HZ,U S!GN'dYn$I 0( _].U*dBy^,pz="<6666 àQ47#S;DBQ[J.},S}#Ta0@;B=RgxIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/roundabout_left.png000066400000000000000000000015641177067165300315350ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIMEJ(54tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝]H[g;i֮֩Sx2, VcA`̵ZŠ zS `s4f 5vb~Ͷ~dƘw#}t=w/]' YYMqFlszz{b7PDno\!aJTE`/LΙ(?TS!DܾBlDH]F6.T̺R'\h8S_8}܆*jkϬT6ݒd{TW88³-ov0/fZU'L.6؃[녊hU7d|xxJ=zfn)BY; k g*m=\AU5Eյ(~GFOx*:\'LINV&DV>ZTw,?\+ɀ)%; Lx1rA3fdYgTE8Wo\`~99q#:c>{a:)i@F7^;?j,X{a:Oxꜹd{j9VK! 9V;§9sI\CqJ.ߐwWt $}"CL-}!),]CHV?>1ΫoVN4 "X]$U :&KH7C!)JIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/roundabout_right.png000066400000000000000000000015401177067165300317120ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIMEܔ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝]Hq..-i[*Đ>`H`TZFTePAd~QYtEP6$II2yB3klm.Jˆ98H:Ͷc8 LY:\mt:ڪÿK}{Wn9{bq"KXT،<˗awpǭ*- aLR=#vUydtjYڵ{vih ];-6$$tfW jfoF_, >>߀Â$n|x?Ȗ%E MJ}C7wAv-'Kc)7#?%Ix,2!ǐLW(㟢>LCHnʁvB06DGhlɰ*o63* (5`w F> E1' ԷA p~?+scJ|C̤/_cą5&ƭnlE i7 32B%LONF=HN? |W<-eKm-;m6:pajnHvDj/6t1+J~Ь&_OB x10&v7 Wt QVd?=:E+S23vn.?IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/speed.png000066400000000000000000000017451177067165300274420ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYsaaU+tIMEK4tEXtCommentCreated with The GIMP License: PublicDomain 6%IDAT8eOhwƟ_.MBʺƄc9"$K) z桇<%jqvƚ8ED6Yc[l,Z}&FK;xn|Gw1G6, c(WkݸNߌbS; .@uMQ;) ::䭁X69ABKwlN}>X=(R76|ȟ<94ACC? p )厖_`& Au5'HlZNL S)hmŧokfggvxhEUŻtMQ) 7?'dww7H)yj D",--q+}}*L(DJW/_2 )%(v̽~ͅÇ|ۛ6Y?#|w{|m4Kյ!SkJvYYɫC+7˚#i+S-^'7fW;1A- )0M֖&{ Z ܃UtPC:ZCvJ,/.z>R*R Iۚ0-BkB?hG-4rrR {r€tLs#AyJIКZ+55y >63oXO\FM8'rHN-DyCS >245ۃeEH$ir,Aq+c>s#}oM!|n +w\|[ʤ[.^Fwo8}œJX$mE6^uΌtO. ko . \>V9{]::dLڪ[?^SIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/speed_trap.png000066400000000000000000000007101177067165300304570ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME $ڟtEXtCommentCreated with GIMPW#IDAT8˥@ElUkAV"|ASI`~$u 4!_AR,&O}S""7hqfC۶yl6 MӻC(F۶s0,K&`jE " C%UU(?p@Z(˒vp1i-|z*x*W?kLds\G$ p:8,uA`v,~m@Myqo|.ض-Yn$I"Y(˲KᕍęБIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/stop.png000066400000000000000000000012461177067165300273230ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME54tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝K"aƟ1DžЙ\YKunt ]" ၿZ-"}e" 0yxŭɓNv;7 sSOnl7 0f|K;[/{]IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/traffic_jam.png000066400000000000000000000013051177067165300305770ustar00rootroot00000000000000PNG  IHDR&/sRGB pHYs B(xtIME'4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT(ϕ?Hq%4t8IȠhL8IAZ ҮB;;IB!b81KM!Ѐ!D䆃s2mgz<( Hz36/Km+kEB͘GǞ`?ޱ-lƺ>It@lcؠ[k\Qkm*X+ mv`w 196ԫ@y]YT=~jXBkG@Qvwpn|{%' ל6\&o{^`y(&3>C;LTmQ&a`.ߊz$@dɧi$?8 Zw叢'R+wMf{{{ٳ*""/Ўm1kתEDvG$IwTte; O~x+qŴpz} "N,Jm;;6t׃U,V K1,GG1 v~F_}1[͘0cC_n=35n5cK|j Nm).7ov5sgugzmʷtIXr>'ߔ4`5Plϙ-󞚚vGϮzx(d IENDB`no_right_turn.png000066400000000000000000000033021177067165300363510ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictions/irelandPNG  IHDR szzsBIT|d pHYsͺtEXtSoftwarewww.inkscape.org<?IDATX}L?{oxQ).E[&vڮI?s6 :7lVgؽ[6(:P"}w{Qh;99EDE: o񊦊2'GKN8-@- LC@:;ߞ 45Xg0訥.ZReeQ`p p^ڳK ~ 1˲̮~ f" t9y9#f[WN~{QypNGjS>*uk8#ǜZjZ F{gKdp0"=;=sZfc^a2FeLW-W;wG[pXsw>]-wSbZϓWZfK #bs`x' ]eTsxcfǯݹ0Wl, wވz#&h3uNM H`b߸ef'=j 1 ;U,`P|qo7'7=lFڮ􋈦d~2zT!,7}#{aX`""._Uf՛`NIxM:;;GrI}eV9(($#CZVY-xۿ %Ý("R.YW2PSSngci ?kDkthCaw蠭 6I2na,>'O֦i$G"Ix~7n )) e)(!<)twwSUZ&q̐o5:\jʜ 1DكA#$8v5y1SU-9%,_tE8BbkMq]ph C}lh+/!p w2rpY5-ruJKHЦ֒Ax]b\m`wVocL%5 ~SFv>if^¶F.kF֢޶o 8M͍sg^@ba-^mMs?DŽLV,rҭwqU \.B.ZIENDB`no_straight_on.png000066400000000000000000000032411177067165300365070ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictions/irelandPNG  IHDR szzsBIT|d pHYsͺtEXtSoftwarewww.inkscape.org<IDATX{pT?}, CDRp-項$4ejq Q:03#U>oJ@@Z5hci dkd? ~gs~{ι~G2Xsto(*ʴ>vv IP%e$>8&vmkA?P+.Vuђׁ]@nܥ%{u5)޼ ĮEMwpޟ5^OP\_&nItu;)ɳ_~#qXfUzw> LMο"##3|k>XT"IsHýZQ|CDwӿB.x]aDI27oNi[ v}J ֯4:ȑ m&3Ihrz!^p"";EO,؉H)MMM2wLN|ܯM_h$/ʽi~+%cʉ$u?4\U#"򔈠פsrck( Nz,(-HmYuF3T=I7V e \ϾV9^~~ M34~WU4Ր TKo2p"A~ȟ&аQUuUg0' 0PXB]r!#t&Fz|!#x )/zzΜ!K<{r/$]BsVUZqiJgXF"t͂Cؖi ;SFmOeL3 mmmh`xpod͜wHT|h4z%ŦhF)L&#"}}l<---={!CYwӧiuE*/x8җJ6 i4QHJȟeNh4zz{{&q'92 y,+ևDޟ[/^ΣGB29_ܸ >LF^Z$PF`h+ fdqQtzzls3 A-ժ<׭MaUlP(^ۍtC#w|сu9x^Z È7Be$%EEp,/ IJa$׶Ru`engJę T^'SYlDI^҄@P@YPݎ/=1Y$y^,+SZ,OOfn7ϝaʝN(lpi!Uete׋"^9 /) ]|{z:!ƲOjt׮ł̌(2')A@__bb"+].dmBfgTT'Ru~z8uE8|>w,GH.\ɚMMS*'NȮa1%d2[ FcA>f0upIENDB`no_left_turn.png000066400000000000000000000030661177067165300345570ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictionsPNG  IHDR szzsBIT|d pHYs9YGtEXtSoftwarewww.inkscape.org<IDATX͗aLSW-@ -MUf U2&\B]f.X@McuSXV77:,03l1bCA>vBih{w;sXpF-Hp8 rlN0Lj4M2/k.Z-EEm`s=~GBB IR 䨍fd2YPPMW4ڣk}8EZd-Ϳ6: jE xLHڻYƽ9AEQ8ZCL&vN !MTյdlTU8/!q9ڻQU RYg0fj"TzbOcv{·﯄~jj ,\kvۃǮbOT*jE~d2P(Λ ŝtgvnwWw`(ʘN^ ӵ8Bq^&!Ȓ%̰8\ $~',"wx?~5F{\./6EQEm:|:c}wq aîJX@ZAQ& F=pOdzXv6X ~Dh4lB,gY;%ǃGpӯ΀A&_CRP`A;;/e{A;%zZ,A!?*nn7CO&DžN&~&Ar`EXhW;, wAe *~y$N`CUynPl6ywCGq xO~$) tVF((!|ւ$'Q6|Wi>7>egRQoaJ>9jF_`K%Ѩ90mN-J6Mc4M_.M x,. l{˛03(MMӗicl.I9EQ;/{*^aF׿zEQI9fs)0-)X,qFUON0]ʱfC#<000ߟx2LLKɌFPwMPko0)˜Lu;lYܝٲu;M&5U麪yt_9fpt_l660Y'ۃIR?KϊSU_̸o2L~IENDB`no_right_turn.png000066400000000000000000000030631177067165300347370ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictionsPNG  IHDR szzsBIT|d pHYs9YGtEXtSoftwarewww.inkscape.org<IDATXWmLSW~-|HKCKt2q ue"SD'$tĘ:61JLq[62 lBC-Q06nK@壥$Mn=yιyy _@tJJi<o9R%ae;M&SFbfԗs P*"LVHt 4Ƣ6"σ$64 0 CIYYHR^^^^Q$!vB a_&:2YqHhNSFgEEE"\~: 9I,AQ(N^WV{9ݠj E]]'yK~O䧎gQ-%umdBQjvUYew[+? 8SoXH] 1.pZ7X/3>̐2R'/E)osh qX@WVERuާUdѿI ˅nzk?Dc+V\RKrO4霻.lMZ;:L0?| 8+8ӅM$*J[L&+hp|R;#ؠ?Gy0LV$M4Mg$L6UgƆoqB hΤi:RTV6Pk{CH3b،~sclPT!f3=ðBJN4C=39ǜ10 i[=k`%q]Ά~l_r>یe98r+l,\(J8yEms(>ȧr8~`ăS\*v$ @06Q`kϳPvRW"#spdoAO `-$˲pv+r>, 8 ə ˲dm;.8$ma2(Yh鰹$ݛ"/, 796Ҹ^%5M7b#s_F@X?jϦeang5X># X4M0(0 <ΔPY@+tp- + \bfPyvW x;8&O1Pd$ C 0Rj45-5> b~B;$3G=M%RTLt:yBߠnQF{C>d.$X.^wjQAjzϑQ]''>$pp"ꪮ37Xdi"$ Z>Y}iLTgͩ׬/QMl0iIENDB`no_straight_on.png000066400000000000000000000033001177067165300350650ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictionsPNG  IHDR szzsBIT|d pHYs9YGtEXtSoftwarewww.inkscape.org<=IDATXWLSW(Nf8Qe(E`3als":N9͚ [ l R *X []':%C"X}>)nsw{y$vܹJ./H$bq4,zazVk^oi]уh4$I 2ѦVw2wbሑJHBv&HɨT^UUPT 6hS߶;gTԟ}Ȧ@NddeH:OFlfv@jAOb1;d$"P-!mEtq555 JAHB٧'qݑ D,IztbY[TT>CʔJʯ.&xhr8{;PRyPJё}_~hiPGGjJ%=/lևFw(nz$;BTh4Y"pL 'g\r]BD sb1(R 5 v DRv#5;c}\DF@\I~^B"5) (DL E>sčY% Yx|| I2$ɜSM/p\?_+ۏqG`CV!(ym>x'NO$$ C֓O?fV@S|v+65ᦛ 6<^v(3Ԍpd1́a~~33#b\J́as`D&FSJpq,}8tCð"=ʌxEOA@" 2c`j˗fYU/Yq| `}.),ȗ6_ ꭇ"B,눑 .owQM8= |y_)Λݷ~3a(n 1p, ^#F*S:476&D"]/!;.|T/F8G ^!fG?+72v*=1a kH4%b2IQ`GlZ[3|uxuB/uf2ٙ$~jZ^)u6?; Q^o$hv4ݰ _s`{A2hniMd*ʐ%";y,Y!Tܪz:OVoKA9AP-]'koB"2Ȑʒ[xHT!2dh4nf3CQTzt9^4NQT/t^Ų,/8B.@Y^b:.M5W. e]%"\K|muuuK'59kW=VOqGIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictions/no_u_turn.png000066400000000000000000000027401177067165300341460ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs9YGtEXtSoftwarewww.inkscape.org<]IDATXW]Hi=5֭A#+i-5.&>X> ō}HEM/mR\H1DՕb׮YOfSlNn K̽w˝Qvvh<,3$ .eٙirnxU; hmmj/\QϞD^`ƵjV+UU`Y}O]]]o?Ijͻz+ւӻy! y&tuEF{n߾z?Zn.](z蛠 =j;:׹sJKK ' 5)yZSWYY}A Dc##Dpe?%Kׯ Y3gΐ&MNdu&^p@S9*6 :E?^ji}}]VB_x:>]c#9'hJoU|fn݂JaJ,fx0 Tl>ւmh@PrE/hnn~zgb&;^p(H:H RQp ;~gbfspks?* dEpXIENDB`only_left_turn.png000066400000000000000000000025651177067165300351270ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictionsPNG  IHDR szzsBIT|d pHYs9YGtEXtSoftwarewww.inkscape.org<IDATX͗oLwǿ=Zv c`2Ycmv7Ë3蛪,&DlŘh8^burîjv/ A{~U44R[[.??}$s5^V@e1$]x<V !%f0˲54M|GJ;N p_a/a0hI2БAQ6Q}&aJr㊊c=/@IJîeX_ m6[X,CwfW7b;ZBCB}.7%D#`rv|wNBp'Nl:3-blxFξ -Ξ)A;A-ŎX99D0 q!{lJk bG>BN\`Ac9bGtZd׬>ҢEhm\9I#Z:?0;~i^>O=0fjqEEuCouqH Xn\Qa68˲5zg;S`Nr>#h;c= ek@EQTJww+~:= -{W#YCL;pZ:㲠lYip}_,L&Je۹wJ7qPOz3C̤j;7wߐ{mgFa3QeDwCQ yp; d_JhV/ݝ%Q &I2}F_ VV㔍AA*ʿD]= ɪ$*|k.DˋA>l(%4~?6=Q}6D\qk:X y3F`/A ZjSI ҉ki! ğZ@jZ?}OsaoJlNo.LW2,@-˲hЦnh˟=WCȲ,pX4həe$HHt՘y$*x:$l-x:z\GE:+9Ҡ#j=NmW|Ah!D__ ,=wKyX_ 8zqw7,1im ; >g]f%\ @}.V5NfΔ>l39^:$m-[ Δ>5ZK-Lbzd4aVϩ< IENDB`only_right_turn.png000066400000000000000000000025571177067165300353130ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/restrictions/turn_restrictionsPNG  IHDR szzsBIT|d pHYs9YGtEXtSoftwarewww.inkscape.org<IDATXWoLgz3[!w( х2M-Fű Y-6cd i2MۈZ⒅iV UK lLxm3ZAZai鹻}}LNNB XMX,f MEHT@,(/ea9W8f1X]*W'_OCaCqZ!ZAC[ JJz8T ]SSc-֖llx޾_ (9h.ዾas݂hV1LGB٥LuPʂӹfD#ECUTTuzw~zyBKagNu`ÇWM0 m28cOD9|aD x[7?n8c&`糧wdddH[NܙIF,d o`[E녹ĢENS0Ld}*>Fnɤhk|>$?bm6$#@>O/J[}OL&"E92_a0(fH@\RUe H"(`+9=9}%X ـilj)*djTQH$ „slau:B,ass;[GY?-|i*'8²lj]Ez{{+jjj>c/}Gїp9t~<҆ zXw\M}MgggbbX4_]lTmA3גv0t6"?Nڵ+ aspفkܤF)\~7~۷a@Wy=8e5j IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/vehicle/towing.png000066400000000000000000000010621177067165300251110ustar00rootroot00000000000000PNG  IHDR BbKGDC pHYs  IDAT8 慂, Y$!kd`ۋ-##$ iYRpz~ gG/47q(*-(^+$$$ˡѨ%%%zi¾*'&&)ʧDNSiBo= <'  :jo "ILd2T SٴXw8gǧIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/000077500000000000000000000000001177067165300233305ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt1.png000066400000000000000000000007121177067165300247310ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  jIDAT8풱KaƟϫ.ҋ;NPIpm<&!.Zޖ3D~{H\.'0*Ue h?BŊi E]׭j]Yn RTq]7-fl6nk|^]DQE|oZxq44y9v7<(~|b/sV+z[qm<=u0ML 1NTUu\L&p2R]m)`h4Pd8֢($ X,t:zODb:α(e B~oY;hIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt2.png000066400000000000000000000007131177067165300247330ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  kIDAT81kPSG2H R 8dxK \DjDZhҹK;9%:tj[J;i|]"\p$IBTJBT99EQ$vBV;fa$>fAbc!$l>}(tz=X,VRQ"..J)kqm>vgap-˺qA@2 D^4u݃jz V+! 6"t(_˲`}\ʚy(LmXf=]]ؓy_/td2iɲ:1ϕBp585U>`0PJNsE~RfEIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt3.png000066400000000000000000000010121177067165300247250ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8ݒkqǿ󮴧O6JI蠔[Jtso@ 'THK:&K冣HQ%]~{|y|(cu$y`vqcxP*UU->CiYQZn#,\.,KR|L&X,vie^?rʍ'l#Aj2TU}5 CPH_< @g.SIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt4.png000066400000000000000000000006771177067165300247460ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  _IDAT8ՑKBa$whB"R(QEEaSA[-QKԒ:D֔\J$ w[Elg;}8p3 8 >`Eq  X&4M;R.B[jmYzZ4~zRV"ȅn,I)E"8]Vǒd> P?b/b5!^-t]_6\ R*Ţf)fwA8)n0h4d4]d2kJ>MӬfG~Rk : p!6 n`o|M\IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt5.png000066400000000000000000000012271177067165300247370ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  7IDAT8˥S1ha}Dh1D{\JD!K ):88kp A;u {CJ@Am-8Jxw5EKZ:{}ou@ I&v[TU%7Z0(FP\g333X,>tRZ\\|eZ_ollxF< `rvv&---]if$:E)%H  }ٹ-˲_"!SRSvJWn?0} aY#4Nv.ˤX,q8{n/]v?'/|>AӴM0:oo `ժ/yquu`u]7ZQuYᇍFc0IDAT8˕T_LWh~EQl/ 3(Ԅm|pKL3"K𰔀,=N%FC1Ei`EHȈVm2*4VZoOnԝޜss= IHevOOY{)2 ֈ5!3h{C,;:k:_|B\ @`"0AY2E9_c[/A}E^}nn#ʝ;I`kT'U'I !VSE" dկԛP>hMu!u: ۺo+ ]LNF:Q'U-PdGYYt;"e06QꖺI@0 &xV<m6MuB֕mQĊo{W'uu#yL ,5-5s[b}է(J}/P!䂜9zJ{K{I@kI`e&wbċ%͔37w; h0 f,THm/^L׼k~u'H@~\~|-ޖثz}hьww5SaūW+ĕO1ޮ鳔]ěj>}YXT>Q>![goMLVj+-H8k/bBFF鞉:3:3bQ޸fTM~#820S?S_o-x1f]$H a $ $BJR>0 _\ !q}}V'eEI}llmcgW/ ^6S 1 L[UCѽBue>zTXtCommentxSp.JM,IMQ(,P.NN,HU())///˄ k*ŽrHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt7.png000066400000000000000000000017071177067165300247440ustar00rootroot00000000000000PNG  IHDRlbKGD X pHYsHHFk>IDAT8˝T]Ha=rdtEUEJEQALHċ )Ÿ]d)!J3ٷ.qA-m >mz4,ss.<IJssMqݒw ZJ}RC5xu*Zf-#+ff^@bgRpS֐5|u&;utD(?ʫZLjj@K*[k8dgu!UMWC 3{@>zTXtCommentxSp.JM,IMQ(,P.NN,HU())///˄ k*ŽrHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt8.png000066400000000000000000000021561177067165300247440ustar00rootroot00000000000000PNG  IHDRlbKGD X pHYsHHFk>IDAT8ˍT_Lg=u XjPP_f5&n4eh8B.M%Z !gb¿iE j(Jq4PJ.+-Iܗ{ν>$ $qt{Mug̝?7:U1kgϡ_C]gIVO6<6.y bXI ` H`~|~%..Y\CWA_1ؒ AS9ל02$಻$PRSRC}}$$Փ@5!T[zt鸝P~&:RRZcmH@H3!ީ^ؽn:pÖ)CJ󙜙o.V}: ^i47_T& 22'&.~*ʤ2AOXV8& vNƣhkk`O5rrescc+)wwI ͐f IbW߀% %v^ pF{F {*@t4Xǭ'lBE!ﳼ3ޙ8J8Dҋҋ$0ϑ^wY52bUu*:NFj44/^'E;v{{j:_غFAA9ʠ>ĝΎX&h/o/, ?Owu'Ϟ4O;%IՓu^(!K#$V R emƆw޵MV?#J9 >zTXtCommentxSp.JM,IMQ(,P.NN,HU())///˄ k*ŽrHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpt9.png000066400000000000000000000021511177067165300247400ustar00rootroot00000000000000PNG  IHDRlbKGD X pHYsHHFk>IDAT8ˍT]Hg=sImH 2Q)ָaeġC+ Yks12"Z)EJѲ]xQNJIilДJ2ѯhbH]򙘜ݬ[9<$I zitJ·}zd_kגy:k)66Ǧ,[ }~?\1;qtyy5 MA xF=$KnS"ڷLׯ?"}W a]:QG VV@@ TT@UaU! JQ"j˵"/LLM f 4' @H@V ($ 8s$jX5@QeQ% \{ؒCbN|\S7(ucHۓ$ I@HH4)U*Ɍ]owNA!Gֳ<=w.(XHZHF|zƂKpEM'䑼[(v),܈R'Ot7c@M i9ee:Ҏ$_>zW;b{FF%`c)>Aeϱ0ۯٯ飌*4&/w H{y+bF~w׹ާi>t9uyb zH%H09 @mfm& uuPW~4ʄ77".QQ/ h% =}4 dxGkk?z{]rV;W2Woع Ɵg0,+p3p3di}H\[ϋj<12Iu_$}]64]jxQW%a) uA ]$}$2Hih-ޯʬkԚX> kdZi\ilf>> Dh$K&\((U'x};3>zTXtCommentxSp.JM,IMQ(,P.NN,HU())///˄ k*ŽrHIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wptblue.png000066400000000000000000000006221177067165300255200ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  2IDAT8Q1K`}_X)Mu.,?!C.-uֱHB .]GB! >F,5w=$I8 !Lvr\H+_ `MlMUC>Tr0j'Ξ灤⺕S]z)̶^<{)% V}^?Q(Jg$\iQb%ЦSa ~5J\E~7v'rOĢӼ J$l߿v- 4a+`YZVFJYp 8Eg?SjhdIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wptgreen.png000066400000000000000000000006201177067165300256670ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  0IDAT8Q1K`}_)Mt.,?!C. uֱHB ]ک? B= Zbr{4Mm"cL `0 (3/|.Q"DW1ra;;A"s,_x,jV Zs.>i!\/4m%*Ԭ\K3"&㠒L&Ӎ޼}T^/_vKafgU%mm/{Lӄy!m&Lx_jh#\IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wptorange.png000066400000000000000000000006611177067165300260470ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  QIDAT8RMKQ=oi2&H!lX?b hcjQ~A Jڄ6AZD6A!Z-!}t6s.:gzC6#5= D{wLʹtvD$feDy@gYH-s(ӔH"&W@6CJ璵|J8 . "c$MP,u]#o;cr 0IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wptred.png000066400000000000000000000006201177067165300253410ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  0IDAT8QJP=/$Fm$R2dԥ!: d&P?qp,ui8p/s^0 +3L,07,k N2^/듅 "y7XRqf !VpM3}Ey~lIRT9_)i1H2+Td3![*}n ;f.o (\qw%m]_{lF9y)6,ljhFׂIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpttemp.png000066400000000000000000000015221177067165300255360ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs oyIDAT8˅ohw?wK.&MM[jmQi!ʘn6&!ePdF_̲sl{Q2(N,T6%mk7y<xx^u @fV63kLr}/Z jVSVU5m'{jV={0gA< `خZժ]@ DʂH+?}g逆/x{tP&~Nu+Vr$*eTV x0T)r lEΖPG}d['N;bTp5$Y= ?E UOώDE;MhS<])?1kw&u5U҇cƇRW6ݚ XC:/Tu+3-M{p`ʟ^(=ti( tݡOA,Q]c}n^_7m] AgDL6/a o`-Qet@ذ'轪k? Ѭ^q)kG" y#Zn[7c&mzM|۟ 35aۖ Xm.ϣ+=== B;;#] $žı fR|W(݄[gmnnV?( 'ɯ.vvvK7`ΓºX,hf"Lx4lf|`0NOO[y3(?j IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpttemp/000077500000000000000000000000001177067165300250305ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpttemp/wpttemp-green.png000066400000000000000000000015201177067165300303320ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs oyIDAT8˅kh[usrNIҤKOֵ#:{YGw1E+Aq2Yw!x痉Y"H7QA2í\v؆P4&IҜs~(,l{{^GHޢa: I#\߈u^~hoQ;WVZ_wmIpz(vMz@h}9 +xSqc7(>|Չ[U@UTZܗ[Q-^&d(kpw׾cfKwU KW4td\ ӜVں'yw|*~bj}|{Ϝ3oUiw)7q9d׎_aWFűQ k9)B$QJtcG5]V E9]Ib H8 ~_ fR͋[,\j!Z)bSsVwI%"*H&qp_=kr4n'6땨 2s4!d 5? 4#t?ӭ}siE̯WJ꽠/c.݉3nt׾};1<7,KZؤG088H*z2lٱS9".lR|ʉ 7/,N58{sh{{{g PLӌDѣ===4008{3w^w"lz 'hIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wpttemp/wpttemp-red.png000066400000000000000000000015071177067165300300110ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs oyIDAT8˅MheݙOd7-3&7TVV"X"b= -J""\Z*6ЃA-H)- i5iv;Mf73={x^5fL<]"(r{-h_(wσGOJ 'Dd5n#q>ˆr?8p`^znהUIdDC^x'hYyKn|D#'7+KSbI]IjlȠwAIg?V"yT6)3 Jd#=ҹt==dW _U#j.Þ7nm u-ŏaƊZgr1g\P~\BCY7w{A8@"؈K!(nMjs-[es P~"`&+nwB3]/!U|55?&̴4ݸSpK:gG&Mm[MDBcـw`<߲X2IjDq!'Vf;)LTQ@K|TMǻ6zfob6+wGFF7%'g'5IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/waypoint/wptyellow.png000066400000000000000000000006331177067165300261060ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  ;IDAT8Q?K*w6v-r-}8\\쐮?" Kbc`ab.SP8lHi ̼ošyXwF3Jǃ}3 VhfբIsw) Ȳ @=Oz YԂ@)dx (BӴ)1G]: :^]d(@wlv{~h23^\rgzg8<9ׯDz$˲PҲ,pm۶"ݍtCtIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/wlan.png000066400000000000000000000012171177067165300231260ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8Rͫq?S)m(1txRv>\)t٪]m]PQ#80#~ѱa̯M#\{Ͻ I.~28^KV+V$n].W@r0|BpM%0L¥R i(Ͽ(qIjZW,|>p\$IhPz ˲9cH|ʻt:=Ղ1V4&oTG8%WcS<1S*:fIV  n#Bhl!/DG?e8x dYF!ɲ|2Hk-$r?)v/Ap$Q8^ X,tyRyvvvb/×^t:zQ67?=yF{ phygXn+2o4>I·l=yL&EXV~f93 V7B:!D"~`oO&&zTXtCommentxs.JM,IMQ(,PHUp R#epIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/000077500000000000000000000000001177067165300224175ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/closed.png000066400000000000000000000006611177067165300244010ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME 72ܢ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8͓=N@dc’CrH4AJM ?Ǡ)BhhM$q,}..s &%<}z_VLtc(E4 ^*|h҃I bM:d^ԭ٤Ԥs;@yVȼyx]ts8]Ŵ.0kpxLadp /#1ΤΖ^I&ݚ4 ׯ gkx̼W&9{IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/open.png000066400000000000000000000006771177067165300241000ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME 224tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥-Kaw\X4 &Ê,YĤ&e  6ي- +< Wml;n2<gyJ S:C7CR_ = ]i)4+QZ } ]hЋЭS ҕ5򔾀wj*@Q@o0?8:К^`9-t!zZ\BwB_BWaY8Fvp ԁ{1OpP9OgxU`S5u:;)WIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/pay.png000066400000000000000000000010411177067165300237120ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME 2yi4tEXtCommentCreated with The GIMP License: PublicDomain 6sIDAT8˥KQU."*De /PhDP;bm.]Ɛ.APHZ !6r!([e3y:%gRx!ƫlIyb4gґIKALzlI&MZ7+NMN&5gҤIM*&qՒeAM2s7|r @9@ ;`lC^Eo"6 <cK.0&&Ϡ7 K`X{"R9@+Ckqaʉl{~T׾eMIL5-;|[}|Xu!_9 p ըx ܄f,R܇AIENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/pay/000077500000000000000000000000001177067165300232105ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/pay/fon.png000066400000000000000000000017171177067165300245060ustar00rootroot00000000000000PNG  IHDRabKGDC pHYsodoIDAT85k\eΙ˙IfqN4HlXZAEQAvQ+qԅ+A\*ZPHiIm3IL3d2sy70w\Ls=G\hW=A*w= L c~o8Q;|A{Nw1Nþyka|D3OJ"(-x{J&ЉLAf ?F3og|/)dPwP# *Fw +l^ڹ8rhpv=}5BR21HEKx^uw67_S/] bͰ׳毐MC=0(+8ګ;mّ5V-j=ҿNpI_puEw\ZHE+B-f&쭍trðs6+[J:h Ś!j _h/[їmեk{z%؂0&hq@ ̮^)`yKi\tfҹ+,}E܆SS!1U߰dGkXlnVqts=flߩr:$w\C ʂ\Jrł5wcvʶuZd銋(#]Mhќ"8yMu ms/X|T7ɮV]Qn ;Ys*m{g?z>j~RU鳉ery+ؓRE;VkynHhQ[gTQ_yd$HNӴ7 S'5i'V4hF~|(dێE?ʪos̩&3US-Sn&A{IENDB`merkaartor-0.18.1/Icons/map-icons/classic.small/wlan/wep.png000066400000000000000000000007311177067165300237210ustar00rootroot00000000000000PNG  IHDRasRGB pHYs B(xtIME 14tEXtCommentCreated with The GIMP License: PublicDomain 6+IDAT8͓;KA=]T nLj+?)4v6joU%:,Dqaw`L*[ y p\0ͤIG&5(ѣՊL:3) 6ԤApϤ3$Oz}M`3Rz@k>e4U` oKplW*\̅@_g` x€62n'=]vLfL:*&41x{*EI&5gQ le.9?rIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/000077500000000000000000000000001177067165300213355ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/accommodation.png000066400000000000000000000010431177067165300246560ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME C4tEXtCommentCreated with The GIMP License: PublicDomain 6cIDAT8c(ڀ?9xiFjbf.@u4u`````t h@!?>b&މ# MPy!+ַ"ڀs13WSnN~kJsJuW:~YX?;'w7##gN'gN7wD1?_^aOeddbb``d?hH wb O'?|66a<"Q,c(ҨTIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/000077500000000000000000000000001177067165300241525ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/camping.png000066400000000000000000000010501177067165300262720ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/ 64tEXtCommentCreated with The GIMP License: PublicDomain 6hIDAT8c(ڀ?9xiFjbf.@u4u`````b```gl˲ά\"{d 3&j,I5{BN54ymD [Es돸$&O N}z}n9rPdN,#/!UɥI2w,vm6Jxh[N#ڀtx+(#Sʼn%]aX,c"mٵB/%'̓;˞v=:eA2b~RukAgN{wSM!}v+pq6Rtv/Zуch9< *j >>ھ; `ͣ'Y0a>RJlGT޼pk vzs+#.']o=Mɹ nff˔$VR|_7M/_in:a[·TK ]7ڥ&\.ր@}0B{cH)]ܩ 5ô(ޡ$NVgIYD2 .yc31U7T%ESy >{DZʡ%4DR"&:4m|]KJvK/LjۏBCcy;mwix? |zzJ~ ӻkIY1R맳juț|}E3(9/3 οPOFIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/camping/gas-refill.png000066400000000000000000000010051177067165300303170ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME[5c4tEXtCommentCreated with The GIMP License: PublicDomain 6WIDAT8͓JQƿs8m?e]$.jQ[=@ZvF-E(HK˙t m4 զ;8R߼R ]Y_%CJtrz"sw ; h%T$;(][/Uc[R:$ ɷ"yưR{B̥bϏkܺ9mR/@c/Wgq #s94ӓoU(e a]AD "躎bqQ>~O |AQW-0y)8??0\b&>em!`Lӄne„Ma;IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/camping/hookup.png000066400000000000000000000007171177067165300276100ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME*:5صS4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8ݓJP]:RdVq*bSw@t8h :'[D2>AV{"$.a9 /g͵/[.3nEl^J;DBivy+H\ Ak8+/G c"7\(0%ApBqZDrmz|J[#D' ȏS_b_i_p:7dIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/camping/trash.png000066400000000000000000000011421177067165300274150ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIMEy4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8c(ڀ?9xiFjbf.@u4u`````tYe 0 !L&$l}eF#.A_o[oO=,4]ܸVɣB̬~CSJY%=k gyo)yV*}|q/A/Hj|edfw~AQ_ l\\ظŽ&{wH3"Ϯ^~ߟ?L%(pq ÿ}Od>'o߰k]L$~H@7#͛߿N2r0g -,YPF엟_0?t/3+/_!g,BWfb4;%{HIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/camping/wastewater.png000066400000000000000000000011061177067165300304620ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME1*m4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥K(DQpcf"a؈^$A,l,DZM""i6*Dsg.s]{i4,9||?{UثQR]<ni&&Q`A"F}Mfj.u ]A)< x>A gәM #oo)X$h9FpuN DT /`o9XHvsP1MgpzkY37 0`>@>l;x8Jҋukm j낕џ؝jMB8o}: =zcMBvFT ٪Yt{:3)rRcW/5{HVIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/empty.png000066400000000000000000000003711177067165300260170ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME,5@]r:tEXtCommentLicense: PublicDomain zOIDAT8c(ڀ?9xiFjbf.@u4u`````t h@!5`ԀAd,c(&27j%IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/guest_house.png000066400000000000000000000012361177067165300272140ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥MkQL2hc[IGq& ʍOpJppYD! B&.jL#1d&{g\cDž.rx9,b9K+OVƕu LT<ntA DYj=kXMaqJYw2 M9S؇B [{7OĪoϽyp]wLW(ng =W~j;% ?~d~\G.C>|Wvjvc1̝u{eY( B{L_nn1cPHkոi T*P,|z` _4{n;Z ߎp3F\ EDp"B{K76kҹ!T֚Ӽ7$m%'3K}=n ECM̭-lab3ġh%,][PJZ*U1>2 7N]4 pRu_-+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hostel.png000066400000000000000000000006361177067165300261630ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME04tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8c(ڀ?9xiFjbf.@u4u`````t hDo޳::C(00009cD_a܁h5cG1ҎԀD1ߟ?Ll%h-MUj$|n!+pxZA] FF,rAcII,LplSsn2000()C n1#4g1ޤ4;xp 7/IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel.png000066400000000000000000000010431177067165300257710ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME C4tEXtCommentCreated with The GIMP License: PublicDomain 6cIDAT8c(ڀ?9xiFjbf.@u4u`````t h@!?>b&މ# MPy!+ַ"ڀs13WSnN~kJsJuW:~YX?;'w7##gN'gN7wD1?_^aOeddbb``d?hH wb O'?|66a<"Q,c(ҨTIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel/000077500000000000000000000000001177067165300252655ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel/five_star.png000066400000000000000000000012301177067165300277510ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME -#64tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥MHAuSh#ZE ѢM Hr"(=У7ySCEX- z_Z]X7kgX־D]gGv\̴JO ܝ]g<m4AW^IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel/four_star.png000066400000000000000000000011701177067165300277760ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME $ZS4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥9HA캑uYb <  A&X[؊ "  Zxa#Yc,Ԑ*Q>fs!/;<"]/`cuw ,\%$t`eCϳm bOC9?JI%XuM53tFa FLQ -!iȚ7F3<;/,=ʒmsr<Wp B0$`%Lo_O#hqIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel/one_star.png000066400000000000000000000010671177067165300276110ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 54tEXtCommentCreated with The GIMP License: PublicDomain 6wIDAT8c(ڀ?9xiFjbf.@u4u`````t?)08ߘ"X0dws?zvi_߾2c I>FF'*{k\m[7Y99I!·)~@ 쉮 M+72000KBLLh<*ygW. Hhhg```s쐨2"n?.````0 zjiխWwn0@TIo.?MLUK >mB¿ͭ?X '31P}SIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel/three_star.png000066400000000000000000000011451177067165300301340ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME  h4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8c(ڀ?9xiFjbf.@u4u`````t?:&Sp7BM^WMRlO~S??DwWU3000|+PX0 |~ }e&&0.xx$##_߽ƵGU6ܬ ޿GHN??~ \`D a|u&ϕd%!F&&D4x}?Ok켉Ϯ\~p!Q=÷eDV<ƂQHcU;wL; n]羺s8J8~s w1Uo /1 P@Lq V4`@ivL~@IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/hotel/two_star.png000066400000000000000000000011061177067165300276330ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME Y4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8c(ڀ?9xiFjbf.@u4u`````t?&&Sp7BM^Wĸn\~ʿ?׿r+X9/}g```x[;a.KK[7$<&:=o8s9,IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/shelter-bw.png000066400000000000000000000014411177067165300267340ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME $^4tEXtCommentCreated with The GIMP License: PublicDomain 6sIDAT8c(ڀ?9xiFjbf.@u4u`````b```»9w(qw_gO{o=?x160000Le]F×7s?k7r0(O;d>c1lS5E+$$}<*ᙚ.A?O/9`.8p߫_>3F=7yvv(cagb뻷.1 P4pAӈgV. ZDl]te -݈`BܸhEqa)P?P A (65ĤmL23yE s`l6KFԳ42>ҾDR!օy=DeztPfa^ib4"?| $qBpPV'zV5>cC ĥ Cff3$LMU'YwW3f!S &0/_Ӧ I[~.cT ]qd>0=$[u-:9-m-ƣ`9mb]OKb~{;s GEh]xr.5ըx:YCʷr@'犾dpdp_{gc]gOɂ܃Ȳg]tWTll@4a|[ռㅵ- _>vVw}qwtOCN.Cڤg֓mo5L8.%6IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/accommodation/youth-hostel.png000066400000000000000000000012021177067165300273170ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME #IDATxc,у;-@72lmrU),I3```h~)6E^bEB6}{pZ?ùS5Ϙ?#.e8 |ĉ=x/>qI `y߬)eþ9`%ڀ;[ݽvƿ&퍫2쇗/5,bIwx pqt~3YĦabBHiJL 8 ~xHJ~b````007=j߿LfOQ"uuYj?uYSf0ϝdddd20yU\G/_Hk~{e{;ȠǁΙS^ެzxj__>3E{b_?b?ád>f````a```exw85t?:'d$%55ϟ |fe```` h9OnfK~Hiv"2DLIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/education.png000066400000000000000000000012261177067165300240170ustar00rootroot00000000000000PNG  IHDRabKGD%9I2 pHYs  tIME 2#IDAT8˥kQǿomv7٤MҀEq1ZzRAzTěCfA ?cj6" i&d4 h :Ǽf~ ÿ c,01#wo_OlPj#uJ]\MӐ&wv (Xz@nT* Q#ZJ"|(jRu;%W+7,!0 01Q.6P n-:;V)%YXH"ȊJ MMM}<ϮCl3%2 |^8R: ]c;syMٔ7Z2?O+c3_ƦWwlC&fӅglQV*E,2yY+FQڜ| GVY,TP|:cyqAӹxC@;ɋv.MIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/education/university.png000066400000000000000000000006601177067165300262410ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME%!^OIDATxڽKq Q :H5dcK\RKCCCmm΁X9'ؐ^pbB}}ߏ@:xPSUt iz\j6PuнMS.YQ+|o_ESu9F B `SU 怭`Nhije@5)Zi2'iL&j.7C$/q[-ΒI  0/%w& U7sbҲ"6TuFx{+G{ө`]Qx(Vf*-V7BbP}IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food.png000066400000000000000000000004571177067165300230000ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME -7čIDAT8cxܮj]Հ΅4m9rH&` Vv`f*:d> 0 E?7 .?ɃLL J^ ÄTJ^ 7-0Msc%/i| 0MȚݴx>8 ݡ( ]>Fhb 5?5~^bY1.uIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/000077500000000000000000000000001177067165300222645ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/food/bacon_and_eggs.png000066400000000000000000000024231177067165300257040ustar00rootroot00000000000000PNG  IHDROc#"bKGDC pHYs  IDATHUkLSg~{;V]܀q lΡN، jtstc6 @aC61 T[.BBi??4~?}K7)|!#!Hs\z9XEਊvF3RI[+ڞ~xyiӊ(_ټjূȳ_0=V٥r(41)B ֝"3l("h]׿Ww,F[YH0wR q ՠ+Ύxu(J>6;\O1yWZkMUMjltcQh;zwKz4X-Qkvv{{GN#!9ٯ5o"3ڱᦨ瀮>Ksn3ɌCe嶫GS0;oʸ겇MyqׁhǸeL/уgweok`@gK[Ӯ!%~r\ @w \T ?л@\'xR7pbyS"R?$&.hԏWd# ;Ri2R%p W_e+7iYF%NJ"HP( wkueʩ'93з-{:88WƕqeKk+ܵGsuMV(7ʍrzf߷i&1疋ER91=G?Ya7כJ͊x y5SN=Z3]ZK=H$arҬˀ#,!Na3QU}H@济龡Jf/83&쌿|p&LW2X"]aU*b h/m+II*jd)9 c؍:/t0abdWN/ ÇAwhEA v6D+i4,"~8܆j7KSӥc IHl4_`v~w$Ar"%K#ĞNIH4oW`;IT{ЍSr<$xxs}]HA7-EQXR$e,MU C]*?ig| U!jW|3vk$QE"Ne _/' g<[F7] z#OwGIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/bar.png000066400000000000000000000012651177067165300235420ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  UIDAT8˥KOaϙ[E TA*1ذr#?;lMX& bbE@q:\^f7 ^Y:3cNj9Kl_]0{ftl u5@fFʪx6y#SUC:9̌E09K1t╭@0ߢ%H9COǖsl1iAJ*|Th ?qV\2+gWдr{rj f$֏l@ڀbgc mSѫxmP5l=wEjuՖh qT;$^CSآl] EʮSh {zId5EYk!UxZ2wuޑDSƧjM'yEWm\j(_ MG=H Я$8*O%|"6: akFƺsL*B߄FpGTgnSC甃l_gN՞Q'GE7.qnr.ɦEw*}5xIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/biergarten.png000066400000000000000000000014031177067165300251120ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME  PIDATxڥMHq󶹷g{tΙmIACAEtCPG/!tB]l`VTfY`$wS؜coιE:LayGNmtI p঺ڄW95+t-tHdk!f p nɶ&gd2AV#MΚj|h*B rT4(< eo+Ro.\DT3P7il՘z ]-Z/̦n_R2WCj脒KCMm&&u4FY Ɔ_X ks FǟTYR ,șCt@b99 @Ļc):fc{8.ʳktm(dg$R?!V8\piKq^Ijz%H( [%IDD#V{4L&ʂE.HEr ےA랲FQ*F􍳮?S(ĪەX70Z}}#& \t)ka00ɵ/$d| F i;XSaQ:rsm$CuZL,DФ$sV+A rLWO"IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/cafe.png000066400000000000000000000006001177067165300236640ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME zIDATxc|ܮjG~` (s}pNdu *lˑ@^S000gL+ PbXzv 6|| 2ܿ>Ή&+dDq>( }޼^0V_6^N"pz4K8 `dm7c5E󟿾p&gGȚQ |v]l.x7÷|xߡg=7./1 /u:)F4c0l>0Rykȩ,IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/empty.png000066400000000000000000000003711177067165300241310ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-.jtEXtCommentLicense: PublicDomain zOIDAT8cxܮj]Հ΅4m9rH&` Vv`b0j 21L fgЉ1[xBIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/fastfood.png000066400000000000000000000013731177067165300246030ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME 'IDATxڥ?Lƿ]öҊm)c XjJCSA0E4 nlD';Zi ȟ\=8J;ZiM/~yݹ+g%#n\>WwR4q6~]uκY UǺ(#@/n: uic=JF LʹF݁ 0Xcۯ{̧Eyzm鲓P(B#e8`Hҽil⳹Y[PV 4l6)ql(љF#b!pAfc`gE=yW\$!ϣX,Gjj14tYY]2D xjjp81u~$ t:p IC;5֚2(h0(,HonNl$Rj"Nyj (y*2@&8FXDZbA$˲$I( Ҁe|Zxy598vȲ ǃ."zi񄅠S bk؂~Hvz>U?HD\ǥąAWd_lPHAT-i)B>t?R02IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/fastfood/000077500000000000000000000000001177067165300240715ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/food/fastfood/burger-king.png000066400000000000000000000017361177067165300270220ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME+^kIDAT8M]lSek;aY\@Y!A h/ݍ,61xa՘)1DbB \2X aKۀڞB|ޛI޼w^ mK5̑V$C> 7rz0l[2-XtkY!SggOyG~ ;HPt30 ;ş oȀ5P7d3[c-JatX!Rwz fI3 rS T#z2q?B)axܠ*5e%6!5=M!:HbėQ+.@( BQ:1s-Q%;E_`@6 YBQ2/#)ann8'eGhvu"tb<19#U0Ř_ɜ݁D67xdo`.SH}wW{^ŘbP0v %Z#\D槫8O 'lx>@6<֍tkϹ~,LGf[REx5:zUQf8QFh~l_CU%7rkϡC(X 2nȇߍ(ָI勩-s'p\@Y`OQXWXw1xulޠ6~X|Hq{g7n3%~dj QPtH{:̧CL9Qw9\GNrM~T,sk 3v;abO }ԝz*$-9hhBe*_R(mቁޗyHIs(FIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/fastfood/kfc.png000066400000000000000000000015351177067165300253460ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥[LS=BQ@ 4i3=D1}1Q9#bfo[4swM|mE7I Bi9{b}_=78Nx5U.v m.*} ?%~ъuWk _A g?\yopH2{m%#bg`jޒL'rx'BBX^&G߮Owݙ-[jg>(L (Vj PKF2Gg&!ױ10aY)Vc)a6 dpz 0:Y {^ MIwH/LGzPn!h6aCA+rN4ΡЅ6ݖu}"kl8X٦?8rRIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/fastfood/mc-donalds.png000066400000000000000000000016441177067165300266250ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME$ώ1IDAT8}Kh\ew3qL^S21MM;6JӉgUMsgFR麵c8rv"."QçHIzEVkc?Xrd}lϼ u˷j:lPם޳HWX+&xh^GwCȓwa.±M 46VUT z`UJ j;CtB&wKu1v# 4Ȥ^:lu-FemG]CpJD8/؂ eWΌt\.+[l0sU{/)ыoUNxpЄN bZ!IEԥu(ݽ75{ޖ]Դsgϫ_Id^;}/>ΖevY+3 )!1``}ThI[J{Qyu>ĭK¶i#}0n;Io:U2Z*zL~Ƙ= X-M'(z<ז~T Xc4OX"Rb#heT`u+JuUi Аq205N ┎L# P\xV)ɩfCzhU*.e(0u59mJgjIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/fastfood/subway.png000066400000000000000000000013411177067165300261100ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥ӽOQ /@D kmvRg +I0"B+ ww{X" q$K&3#ĘaOVJˇ=?MXybrܯ,4ER>qXj!"$gj2LxyBu9VrN_;9s|3xe!D _aai%XmXu%= lfvm뺛37Yc0GS7\Vv~/#&%9TJabq $A [G_;EP vjGMD81-VeIduᗩa,/tZF^uV;x)K#\7x3ѡ>FhUU;6;TTyͿ`FY׻̬0c<(95E@Pc6 W]/V].; /pר ]jfl8&GK%2bg}$:[QdL&f_‡vrdqA*.%g0AwaDIH&2$ulFRc*!`J-ְ)[#3 u%-TJWlLNγт7Y0X%IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/icecream.png000066400000000000000000000010421177067165300245370ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥K`ǿoҷM6qmlk1 cld^C4ya"8AXKkfMiɻ\{|>syH,,.һN#$LF޿oEjJ:)tNe',Z7y?JF5h[N&; y"kMU}lYY-K~??n'$5529I BpP(wnϟ{ޯESrW.(՗+݁eVRzQa%  uOC'}!gz\ +Ly)e^3Sa]pm >8 s\C*;3;{\?I`rpMwkdAbn ϰgT)oz4@6T#j[9Rǻ[jJ<"}٭kJIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/pizzahut.png000066400000000000000000000014261177067165300246530ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥OqneإPpAHQx6q$$zUJC$(Bk/B@z1q2w2&)rR?D,Bs=apmnYxZoUh bIԚzύN1);;՞[h:$X=mM1 N-{,jb|BU6~VXpP){i Jfh8e᠉;n |b8oL(&1wJЧc횝hT+BMSK>.0+j#Y~tor8*bͪKB <3:>~|0&'^;56qCh(EH~f>7z2qTxC2%ֺOFcGοKVElIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/pub.png000066400000000000000000000012551177067165300235630ustar00rootroot00000000000000PNG  IHDRa pHYs  tIME 59LIDATxڥ?LaƟﻻwזbD%hF$FIʀ&:jb0:j0A$AфD#)) mګ9>|p{lXj؁zە҅.u@5oj J7!2У}w9]|W3㜘/-R'B@jmjt0|]&aplHԑUq.kGnD{cCCGoXJ/|v*jW_j[I-8)`0x|Դ#NE3Ot4'@3Zڜ+\ zv000 kq$]/z>3i7"1?7OxL.u,L}Ѳz$"u_A3l+/Cv CSP@ ~9QڎJ-+HW^WS8U)uuPw+`4D"[K5;v_e^olԏ;\_M.@hUR?O8OWrsV^6\AaI73>^&ο50IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/restaurant.png000066400000000000000000000004571177067165300251700ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME -IDAT8cxܮj]Հ΅4m9rH&` Vv`f*:d> 0 E?7 .?ɃLL J^ ÄTJ^ 7-0Msc%/i| 0MȚݴx>8 ݡ( ]>Fhb 5?5~^bY1.uIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/food/snacks.png000066400000000000000000000013371177067165300242600ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˥;LSQjiKKBZ,ZctqpЁ :(Q:ɠA;hWTZ2&f:|MUd ց^k#8gb'siDPPl u]h GI-0 OR[䍇?d&l`z[ #' `{# oR`q M(/ *ɹ8[Jt;Iߨs96vnrR$C..Y .;S sylXAqlҴ&tp#jPC|UZ>E[yvǯlwzt7'WB@G <@p qsv*a};ʕll ?Rh2k}T 0YIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_earth.png000066400000000000000000000014571177067165300265310ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8m]HSaێYz?fm#cW2?2^e* ˢ/EEER /(9uHIM㴦ΚvS]ö޻yE[.yi(`07hǭJA2lF0(PrCL/h.1 ulk~ 'lg̘N%=5y=*˧[Ҿ$>l;͈g([Ӊ_N6Mma2=OHsp!=kIm+)/* (TN!f_@CoaޕH!no2vg2-48UMPel%utP_{K6#smSc$`u%.b%b05:/0xΎGtGK˜Ú4π9jJs؏y(1dq@M5ID:;^&gEp4NdcU*"EWOfoN.jV&epM_{7/ꆮ!gg£f0WV,Y`F[7(,oiu?k˜O-z8L+Yp&6U&͊$z%] -J1}FpRksOqYQK:z`72`4[vhR6\ҨBZ ԨEzIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_event.png000066400000000000000000000014241177067165300265410ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8uKSqǿ>:ts"w,'Sݜ.{u|RZT?Kyo35DE-Hu^TQd CBظW x.=#w`>[ 9uVȳSvTp nU# =ҰB@IbUREL˘\Sq3>a!҄o;liq9,oE w9Qf]ʬuDE5 mrm]9µvL-DQЊ[R k~ ȹI)ƚJ&V?$M}x=p8L6mÆrf Fkʶ Ōe%,#-vƇIj2f4 AS8`O#k9ֆex>t,&":X bfJ9opPy&8g2CRϓOҨ0= `ݣX,͢/YE,&MiIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_found.png000066400000000000000000000011211177067165300265250ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME&R&TIDAT8cd _FD/cHb````p؞!uk.N8,8_dž(tJv}Ga phf````D߯;#" xݷ0 {>Ђ_Il^fMaߴrb}/I6m71cϩuo[|*<1+ԩS3 Y`<|P> ~7,rW˶ۖ Xne0xp:+cYЗ+*Vu3a?+?f[lYjWH }),~;| 㱔3eV78 ZW-ZbdGM½ч }=vA.Oƿo%e~5E6 ƮIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_math.png000066400000000000000000000013321177067165300263470ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  zIDAT8}_HSaƟMta8i۱.sĢ mdB^4#) f!Cۺ=``^DdA7ȯbBdgS9묋^xbfe^S4%*f n;Ո.=fe>XZSS;^ Ns,8^')D;s h9K*k~:xB@mU]$i TĒ_t'^ɱ^_EiQ3 ':)|?@|\<P(a6`40̶,ZxۗFhFsq2{,K)Ď|ʝL)auvѸػ]Ywu?v? ZH)|!?#*:3 =.n'`uX%AGM\>H/Onopwr!* T-Jwpuokf>*LztC=ȗm|qa)AB,:Rx6_0"o# +msZE-@dc,"etLnBZ}57lH1xԃdG2N8rZ紊mNk3KI8IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi.png000066400000000000000000000014241177067165300265520ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME.%IDAT8˅KHTa}ߝ:JeYb/q-$fEѶh&*qhAASiQS=BJJR(mҮ3̽_ h8?8O ?uۖr,ʝ ;}Dv.g@Jh-$dRH! S[j`pC< =2N2]'/{\΁凄@pAi@B;t{s0Bj5\`zh: ZRcF„lU p3o#VtBo$@|r . /e˦Q.@P @CM-c@ܡʅXadrN{$[ď D8Z-+/7lT& tlų]\n}Emu)FZ٩է_lCsI0 0b%1i^и nukSZ)CZVԇkQuWFbW`[~"DZ޲d݁b:wкo9II0l;10Ƶ>.Db?k'N_^Sm@l``(7^ +)+I`ĮA=wR m}P*ΐIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/000077500000000000000000000000001177067165300260435ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage01.png000066400000000000000000000010521177067165300312250ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME *IDAT8˝S+q~Fcf eVv5UjcnH.ZXqrRhNՖ 8hF8h;<~Ϗz$YKicZF>r Y 4k}w#GRʪl1>ieP: o/ݞL)#co}udoYχ|qC7ўiosLcsE'z-8&[[7 nЍJkL@VUuS087q_~6`Fh4jQME)ٮA $hkUo |&D"y듅L ]b>*pV`f'oX&jmdսٮ* ;uabb`HȰh7C[ #g7כsub```|95mtj`d```k '$F kJD_*DDc.1 `ݩl*Fή^쇘xIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage03.png000066400000000000000000000011331177067165300312270ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME&- IDAT8cd _FD/cHb````p؞!uk.N ,8gD@1`Ö⹥_^'t݆+>,rnwEY+%pUy Äl@j}{6d2esn%t%nܙu NyH1*:Qp%}@|w;1 }v6/?ˇa\)I߿.\$3 ^vW^d```k׮kjj1\t+ÿx0_`X8RYZHF[65I=[_K<0!!k#J mU) 1]vƓC[NA=BmznfX2Z`d```dSPBb$DdMBD0؝Ȧ;={W o%[7[&,m%.\8y&p`nf6,555RofLF`&$F ȚK0a2F;uM%;;u IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage05.png000066400000000000000000000011751177067165300312370ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME'l IDAT8cd _FD/cHb````p؞!uk.N ,8gD@1`Ö⹥_^'t݆+?~yka &?&q |{Rs?<ܳ6''ïDk&L63xtf:B3&bUuΰT}Uh$p2Iן&c,'f(W O2gػ͚-7|gf}lKm>suwH lYWlG{30000lCc````ݩK(!1HXXS"R!"c|tqQ{N]dSQ[3qIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage06.png000066400000000000000000000011411177067165300312310ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME'AÏIDAT8cd _FD/cHb````p؞!uk.N ,8gD@1`Ö⹥_^'t݆+utt<~KK|gze0dVRs?^2sC^D fpW=$b)C&o1爽 W\Qpf|bmG~‰i+ߗ1000ȨALn?~?}TL}kՍ|q P $$􋁁ɓ'222^zϟ?,#""111Dƥ[^7Ȇ'zz~ż|PGͯ%am%.\k޼yXvMb_6`nf6,555.EJ LHV5Ǘ a㣋 dcw"JvvIg|IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage07.png000066400000000000000000000010631177067165300312350ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME'.IDAT8˝S+Ca~prs\Rk3%n) Ņ?k5EnM|.L+.PG09qv(O{z%U"?hJ4zT1#HugᛁwM,tr~EyՒ70+I \mڴg6;4kv:VJR2.5:esӓY  ߿[S|OUŞnsNWD^|$`G1" |$9Hn˅M<A$I v4MGYUu@,*;Znt}\aj4P'dž3N ,R;gc͆> =vxO[0;792%z0 D"#+c_s ;͞vǦR%yqAz=;R;'r.In20 RY8I"akq 2(?%(E$'eYb(i$ o8TebGdORahT`ʇ',^t\|>ZPu݇X-JEW,151,a{2mMZ]y|8[m47ΦϹuxsU%y `Hf O?XID/&<=뀄 9 #,IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage09.png000066400000000000000000000011431177067165300312360ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME( IDAT8cd _FD/cHb````p؞!uk.N ,8gD@1`Ö⹥_^'t݆+gϞzd2mp ـ:,l+((o2Zu|MVz:B3&a{_u x?}|2x_1AFOF1?|Yٱ2񟄄_<@d!BBB~:1\Z>yYlZ_K<CBFE3ڪL$eH35ޡf%[.F H6GN ;u %$F kJD_*D]!cST38xIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_multi/multi_stage10.png000066400000000000000000000010611177067165300312250ustar00rootroot00000000000000PNG  IHDRabKGD3'| pHYs  tIME((ClIDAT8˝SO(Qަ͚vM+ #9Q bpqaq\ppv8MʊڈVNn 'e,6qXC{#HSN0%@8F8,t ^9'4ڳ^Q#Zzsg!c˺-k\7d4M,g߽$+);vrY03bS{Mj rc@p͞{,*;xӯ6 SE \+2߹)nOĭM  @$EQrZ؅%NPiKlum%' gelE,>,n$zw!FH$=dzמ*_iA+][Lr"=myNP"?Z¯rzi`tmjO;n&IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_mystery.png000066400000000000000000000016041177067165300271340ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  $IDAT8e]lSe{uam ULZnBB+v-jݱ4#70aS6Sc~d#ll EcyrAl{y{YҙV2êJg,,g`fL+9zN3W/6q 5pÔT=Gϼs!cngTY-|p"ۧQmXhḾ.ʎgJs 6µ>R Rox;(R9ܲ2DOWLEǰ홿vVzZ@vA͇O_16VYj_}">籭׃Ndx!#ͱ9kb ԍfF=]O!3[E P"8Dn|q~$fk٬9vDTӌIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_night.png000066400000000000000000000017611177067165300265350ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  tIME9o~IDAT8]S_L[u=w-]oh;JЕJd⿘e݌ (σh{0s/.Y⃘ 1&.d.-?պHXQ (noBv^|999Xp?g1%~eV?.oF<\}~렏-%SY\TY[mG`H`{ aWzFK%fpdyUj >S76#1сͬ^ʲn9W4x+?ӬT,q*+\/n\{qWO_:Hu]c L&188h4hx<UU1n04:L !BzeMMM}}},^{!yc' T5i?IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_traditional.png000066400000000000000000000011751177067165300277350ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME15Yj IDAT8͒Mhqf7I[[!6VуxVěT,?*E(詠'`X(iMDҘmnZ7}0 5S@ȕbǑՁA E@ b#e)'H1Erfqlm}nwwG$zZ%DwT}޲M'>p'RֵG;0@j`AQtmԪo9k  M~^?&" $ hN6i@Jfdt"{>,n>XyA\σjM>M-!P=7Ns6[Ou4-*] _'$&]3t<C@,Dh. S9 EkPzԯ6 ݨK@ U]\|=Jr:HHxP*Yq@Q+Л0K1IFƲY !Ws,V[_^fWG5IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/geocache/geocache_virtual.png000066400000000000000000000013661177067165300271130ustar00rootroot00000000000000PNG  IHDRabKGDC pHYs  IDAT8˅]HSqƟsvvvv\ :8Z#)DB!b!AEB2ץB3'Qcȏ"e,:s-9;m+mfC(+uB8Fd#h4i[k 3iZk%3/NxF HgVp|<HaDf7Ϗ\z0C3*qF0jKm$!-%\Z bnbm|O3@n&ZPz=NNơ-K\K9fCҴ* 5]Z Fqz`̦~T$ iNF&9:\ۣ#HJQhh4Y#hƟz8QŝM:a|51Li jhqĪ4tj`rN-lګ(+)<L*mda@FB\Pѕ$˰ 8vZ$`??šZqI忙ɒVQ_UUi9rɆǏvu]LMy.t:+}OĨk[FW=Bh;y/;8}5xswĘ[@^R\Rsg~}o {I xBMM5]}\lnFף}𕲲V_?FPZ|3ȨX*ƣ!W B JWM6~GFogz}N2_EѦ f!@h$K #)9zOܾ8??W-Bngffm?O?s[aO jъZe{qI^|C3cP@ķLpUJ,3ccnPu]CCMuK?1odB d^~yM deId)¡ RVɱ3g.>15M$,;Ne@ KFEsf,yqXg!Cu[S̛+,? p0X,,.dzz2u<׋ߨFtZN'Ayue%CwM~(_RQ+l))*6}0`",uIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/health.png000066400000000000000000000005641177067165300233150ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME2ͮ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8œ1@E)lk6C$bџlf23wGpP>|YBՕ^"Z9 qh{˕@*i n1:p^QRE{UK][RmO++ d˒!p!MGyOG<^&]aIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/health/000077500000000000000000000000001177067165300226025ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/health/doctor.png000066400000000000000000000012001177067165300245730ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME M)g4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥kSQR)W> P OR , P\'drsI!@2t(IJiPu RQ$PJcW6~˅{'7dP]SDR*w}=F+y0 _FGɤڿL/,lal9V"]~wtՕ|t8'fgmN(-i;PD7Ri (UDDPJ!bxw!R6pmycc\JRCj@sA4ِE+;0{Iށ85oIJ[[c8Baq*'fGɹ *?8cf?a)O;/a̲ hxil۾ f0hgVM@ p.g7." \.?1+Gx?|IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/health/emergency.png000066400000000000000000000011451177067165300252670ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-<4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥SKKBQ^Eы!"DȅD WAa]!ժEx-YM]%D(* WBhdPQI'mZ\nρ3}s!h3Y `%"H̊N^iBKΓzo8k!6e$ DO *GPUTtu̍tNXfrWޞ=++h4ƀK|ķ,-$jYr\Q[@=GZ?Pe,k ,p({okz++'xidwz%44|ǝji`iRؓJeqhdn g }v| \hˁ4B%TT$YsXYyx?9@o6juup?q`q;g}Tdo}΍(L(Cě <0>^JXVZHij:*Js# ㅺ8ؑL+)ɍ!xq zA IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/health/pharmacy.png000066400000000000000000000007211177067165300251140ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME24tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˵ӽNBAoz + Eb `CXX" 1B% XZx&Ɵd'g2{WD?Cȉ_ob?|ٱq Zܹmm g*z;/*񸘦_ FjeZIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/health/veterinary.png000066400000000000000000000015271177067165300255050ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIMEܓ4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥_HSqw7wwwuS4\( R^A B$ыA>ie$RoG>I$Anssnmw޻{z+^"ˁ~| l!9N1@ T|Vt;]&>;mq^Q@a5Zr5e#/jm?rwly6.rw>m;/FTXbi0@qRJGc#֓-%PQT\Em!aYuX42"C4ɯ%~ @ud\ًNO'ˆL6HRh֥ |u."7-VJ crf 5~DG h3;`EAՊ={}H<92c- M4 eb@ꚜR\Tj+8Cj#MB_: Ih1Ox e"Nџ`NĪjf3Am#mk$52?0> ,iȶʴjwZ/dh8Jӟ7j4p8|!?}~AhaaveY8;d7L Jyp]f$i+ >,kkE\.7( 5M0̲<8۶P(u |M>%:.X]~?xi"Jq(EQ( ÄF(47MsʲQx~u0^GGw 8j7RW\{Lki{߆(^L_;#50IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/butterfly.png000066400000000000000000000014071177067165300250200ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME%: f%4tEXtCommentCreated with The GIMP License: PublicDomain 6GIDAT8˥Mka Ҧu/b,l,!CB*,g!H]&*E B R 1(ӍP#ʴ5gD:o7bj7I/p_ν\8E.H `QEQ 5I(>^|NNNXK+JxH& BrR-NEQ|{{{ATJlV{v{&ϗ3ar\YӴ^@81H$2 ,4mVZٜ~{<צN`fiӱ<A|h8bhkk˲P(,;XZZ:]gLӤ |u @4v]l6f-|lM皦yB$Bj>2??h47Z<b$˕4Mh$IÇ绺I+/Imnneݝc$bݲ2u,6Vq B!-(IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/construction.png000066400000000000000000000007461177067165300255370ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME$:};4tEXtCommentCreated with The GIMP License: PublicDomain 6&IDAT8/HCa&M+CpѶ"AED{F,3[,`-ce$ ʂ>D0VDPw,{n.r\9vFR8Γ Hz]26hO7bx`$tFUkɈuG{$eO 1ZM@UviFd$ee Jωe`{1.31*"5<+bˉd2m[~|Rcfi }WfIIɟ agKWWMuE?qie>ߨ*Sjڵz$?ƕ+8^ar~ɰsJwޱm t$Y\`$ӦMD;֭9z?f s7A֭[ga$G@BAJB~Ǟ={pMޓV$yd````a``aEg~~3gDpaG71CZ `.X 8~ē ~#A^ݢ~ ֬Yi{ )+mL Z; K\, W^y)n3S 0a#j={{O… |pI>|`%&# c`$33/mIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/deprecated.png000066400000000000000000000010541177067165300250760ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME g4tEXtCommentCreated with The GIMP License: PublicDomain 6lIDAT8˥+Q1^R4MBF( MY)J"YȒhL򙅅icqxԩssz "!@"RD"L*ڢSJ""s"H1~x mr0}\+ &,$]x{6y׋p p v  .4@TF@p6 pzZHlށeHsjAWCvzz<Z>^~y^@,$8{]_IC$_U~9cp2cpV Apmo1 UmAye!"+՗mIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/door.png000066400000000000000000000005361177067165300237450ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-T4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8͓1 @EtZIa::{ {!lzO QB7~y0|$UrFRe>|!3 y2df`wiJos/ZYpa~(?J50,e:'_x#LL Jl|IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/empty.png000066400000000000000000000004101177067165300241270ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME A4tEXtCommentCreated with The GIMP License: PublicDomain 6HIDAT8퓡0 $zeM>$)Dń!T$%V)i )/69Q3;OZ4wcIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/information.png000066400000000000000000000010611177067165300253210ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-#GD4tEXtCommentCreated with The GIMP License: PublicDomain 6qIDAT8˥KBQ?gA*$ҏ@Z]\@QZ?$ז-:DķAՁ9{瞋4f^ 3ƴ̂ 6j4vɍ$cvDO$5%5u@dG] )sdpeI+FR<x5@ (bQ*k U*@OK.\j*8>ˊ׋JR3g˒C9*XL_k7XF&Kmo m^M*v hyr`~pGGdN `v{˵̥ 0onJ.ʾvaGHJs}*265L غukŦ 899?K V={&tE''?Y 'Npy՛7o.PWW?#--}S^^! nѢEl DܹsGÇd@ $2rR' M2q3J`\IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/crane.png000066400000000000000000000010651177067165300256610ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME >s4tEXtCommentCreated with The GIMP License: PublicDomain 6uIDAT8˥S=kP=H~E!KQȦN.fɟ!_DCJ'Ci@ABERibVZ={9B$"AV׻ "hɤ "=#\Md2HHӯPȓeSABj4ob1Zޗ1RؗDY8p nr IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/empty.png000066400000000000000000000003411177067165300257230ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME/,9tEXtCommentLicense: PublicDomain z7IDAT8! ˜,j\gP ITS§s * Ti_}&w$ #w`IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/farm.png000066400000000000000000000012741177067165300255200ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME(" 84tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˝Mhq?_9u[1RCXA+ ƈ#XA]:,ֱ-(-< (k6c̱WugĩOi[:~<}x^"S17==xJ~ `;r$q8yR>xds%'"*DQhayѩɾ)-)0mfVls׻o=Ntޭތ1?5dilWםenӌ%"4HW-jl-ֆi܃ Owt^e}/wx2xaYB-640$|gmחP on׸x 39 n``2~ux"դ| 9Լb;(`))W%v1~'łtp" '8zW#9p+c[HI17"e~ta/P1@XB&nYKN kzRA.\v3{/R%$b(/4G0yIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/gasometer.png000066400000000000000000000010161177067165300265530ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME0?t4tEXtCommentCreated with The GIMP License: PublicDomain 6NIDAT8œJqni !syIz0>`ǎ!Mt1)B*=7R/VUI%V,֔ t{l' 0 j""FDH$2m{a~"xZa&sjdT/..84xL6էY`b1Ny<^@UY>tV,h5^ǹ<cI,zf|qR)F\_]|1RެVn(ljt0Dv DdL&Bu݉߉`&֍;Fv+ykIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/lighthouse.png000066400000000000000000000011151177067165300267400ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME3+K4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥AKAoƭuw#C"e%O~.׎} /*%R@qv<=4Ù>8q: R"(佽=;2Jݚ bpD ?ZyAܭ 'ɾGA/[ aeYan"x=|pw(J0!bjdKQHQN!;Mӧb^ bh4_vp8VP.//WrYApkkVy?1>$<0OtT*U*' " M ~&1k mBr4XV$Ig`pl#HIY)r[(ZVeY<7 X,vVuh46Ϧiz-w5X.{(~?dYrܻNz ì9CsO4(7Yl6^U7_1 v̠^(9JNEQ4]&9 i{t Ѳ,re"x(_h4:PUzݲ"~WIa MӶ !ÀEٻzX$j)9'D"bosa}ҜIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/peak.png000066400000000000000000000006701177067165300255120ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME62b4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥Ja>HY(]  шfU&p~@\L6*Y9/@g>ıusd>sIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/peak_small.png000066400000000000000000000005611177067165300267010ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME:1W}34tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8퓭 QFbOlP>p1 \um,T54Ϩj(cι5 ɒ#"bKpOTib"&h0f2B =4}:8Rv̊un"2φ;'fS&qkLiIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/pier.png000066400000000000000000000010401177067165300255210ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME;4tEXtCommentCreated with The GIMP License: PublicDomain 6`IDAT8˥JAF .F`%D-= FA|B X K[fA -&fCca09w8sfPJR&=/51q}kRKR @H&8JVy]ڀ@w;yl;͝ {%w(5 @s؋({}n =:=GČ=eYط@JH 0"I40U݂#%oY hNqju5ZCiGVxΦ4߀A̠k02X7XN);R{ RVN9wQ[?$ _- X?qT/V !n+IENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/plant.png000066400000000000000000000013311177067165300257030ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 4tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8cr<}##c#Ԥ2##cÀWOvF V߿o_<3zd7vx}V?#é,D'tY,`Wp3gܶa^&$$<5a̙3~7/_9|cy(ӧ/5 >>?Ϲ~~%9Cs7flH^DL fgcоIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/power.png000066400000000000000000000007671177067165300257350ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME{@4tEXtCommentCreated with The GIMP License: PublicDomain 67IDAT8cr<}`iӧE53@G444h%׀{q|[MM.5, (..?O NlذAɓ';&K#4:ǨwVV?wܙC3#cV455i 'kkklA\\===}}}OV:M>}hSN+))B/V?@0۷o&&&xxxc#4g1G%A@ivIkIENDB`merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/power/000077500000000000000000000000001177067165300252155ustar00rootroot00000000000000merkaartor-0.18.1/Icons/map-icons/square.small/misc/landmark/power/fossil.png000066400000000000000000000011521177067165300272210ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-6X14tEXtCommentCreated with The GIMP License: PublicDomain 6IDAT8˥?HQǿw*[ W6H8R.mmnט pܪ ^ h.J%^Cizh}-}_BvB.v*bAшv\oEE] 0r{*GX*3c(NY(TU=aY֜yd25M)7 |>S E7(|,zΰ,ORv4Bh6[p E9u=p8V$P x Bg^ω4eFӴCYO`T*l6{q\O;ED"tb4Mw>~iH$Knx